<?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>157168</bug_id>
          
          <creation_ts>2016-04-29 02:25:59 -0700</creation_ts>
          <short_desc>REGRESSION(r200208): It made 2 JSC stress tests fail on x86</short_desc>
          <delta_ts>2016-05-17 06:42:38 -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>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>157787</dependson>
          <blocked>157121</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Csaba Osztrogonác">ossy</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1188561</commentid>
    <comment_count>0</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-04-29 02:25:59 -0700</bug_when>
    <thetext>ARMv7 Thumb2 (JSCOnly port):
-----------------------------
before: https://build.webkit.org/builders/JSCOnly%20Linux%20ARMv7%20Thumb2%20Release/builds/415
after: https://build.webkit.org/builders/JSCOnly%20Linux%20ARMv7%20Thumb2%20Release/builds/416

GTK x86:
---------
before: https://build.webkit.org/builders/GTK%20Linux%2032-bit%20Release/builds/60939
after: https://build.webkit.org/builders/GTK%20Linux%2032-bit%20Release/builds/60940

new failures:
	stress/math-pow-stable-results.js.always-trigger-copy-phase
	stress/math-pow-stable-results.js.default
	stress/math-pow-stable-results.js.dfg-eager
	stress/math-pow-stable-results.js.dfg-eager-no-cjit-validate
	stress/math-pow-stable-results.js.dfg-maximal-flush-validate-no-cjit
	stress/math-pow-stable-results.js.no-cjit-validate-phases
	stress/math-pow-stable-results.js.no-llint
	stress/math-pow-with-constants.js.always-trigger-copy-phase
	stress/math-pow-with-constants.js.default
	stress/math-pow-with-constants.js.dfg-maximal-flush-validate-no-cjit
	stress/math-pow-with-constants.js.no-cjit-validate-phases
	stress/math-pow-with-constants.js.no-llint

It&apos;s strange that no regression on Apple Mac x86 bots, GTK ARMv7 Thumb2 and JSCOnly ARMv7 with ARM instruction set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188634</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-04-29 09:15:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/26004839&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188786</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-04-29 14:20:04 -0700</bug_when>
    <thetext>Landed http://trac.webkit.org/changeset/200263 to get more information.

Is it possible to get all the compile flags of those Linux build? Something like fast-math could cause something like this.

Ossy, do you have access to the hardware? Getting those binaries would be a start. If you could also disassemble the test that would be even better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188810</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-04-29 15:23:54 -0700</bug_when>
    <thetext>I cannot reproduce on my Mac with a 32bits build.

Yusuke, can you reproduce by any chance? Can you have a quick look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189043</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-30 03:03:33 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I cannot reproduce on my Mac with a 32bits build.
&gt; 
&gt; Yusuke, can you reproduce by any chance? Can you have a quick look?

OK, I&apos;ll check this on Linux x86 hardware in GTK port :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189044</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-30 05:38:16 -0700</bug_when>
    <thetext>Setting up the 32bit LXC container. I&apos;ll build JSC on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189047</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-30 06:40:24 -0700</bug_when>
    <thetext>I&apos;ve just built and tested.
And I cannot reproduce the results.

Currently, I think this regression is due to the processor&apos;s capabilities.
Seeing the original patch, I&apos;ve found that we use sqrtDouble without seeing supportsFloatingPointSqrt(). sqrtDouble is only allowed in SSE2 environment in x86.
I&apos;ll create the &quot;attempt-to-fix&quot; patch. ossy@, could you try it when I submit it here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189048</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-30 06:45:06 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I&apos;ve just built and tested.
&gt; And I cannot reproduce the results.
&gt; 
&gt; Currently, I think this regression is due to the processor&apos;s capabilities.
&gt; Seeing the original patch, I&apos;ve found that we use sqrtDouble without seeing
&gt; supportsFloatingPointSqrt(). sqrtDouble is only allowed in SSE2 environment
&gt; in x86.
&gt; I&apos;ll create the &quot;attempt-to-fix&quot; patch. ossy@, could you try it when I
&gt; submit it here?

Hmm, but, in this case, DFG is not enabled (supportsFloatingPoint() also relies on SSE2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189049</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-30 07:09:25 -0700</bug_when>
    <thetext>ossy@, could you dump the /proc/cpuinfo of this machine?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189354</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-05-02 02:27:54 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; ossy@, could you dump the /proc/cpuinfo of this machine?

It is an Arndale Octa board - 4 x Cortex A7 + 4x Cortex A15
(But only same cores can run at the same time)

http://www.arndaleboard.org/wiki/index.php/Main_Page

$ cat /proc/cpuinfo
processor       : 0
model name      : ARMv7 Processor rev 3 (v7l)
Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0xc0f
CPU revision    : 3

[snip] (same for all processors: 0,1,2,3)

Hardware        : SAMSUNG EXYNOS5 (Flattened Device Tree)
Revision        : 0000
Serial          : 0000000000000000</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189358</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-02 02:42:36 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; ossy@, could you dump the /proc/cpuinfo of this machine?
&gt; 
&gt; It is an Arndale Octa board - 4 x Cortex A7 + 4x Cortex A15
&gt; (But only same cores can run at the same time)
&gt; 
&gt; http://www.arndaleboard.org/wiki/index.php/Main_Page
&gt; 
&gt; $ cat /proc/cpuinfo
&gt; processor       : 0
&gt; model name      : ARMv7 Processor rev 3 (v7l)
&gt; Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4
&gt; idiva idivt vfpd32 lpae
&gt; CPU implementer : 0x41
&gt; CPU architecture: 7
&gt; CPU variant     : 0x2
&gt; CPU part        : 0xc0f
&gt; CPU revision    : 3
&gt; 
&gt; [snip] (same for all processors: 0,1,2,3)
&gt; 
&gt; Hardware        : SAMSUNG EXYNOS5 (Flattened Device Tree)
&gt; Revision        : 0000
&gt; Serial          : 0000000000000000

How about x86 32bit machine? Are sse (and others) enabled?

My tested x86 LXC 32bit container (i686 Ubuntu 14.04) is 8 cores (hyperthreading), SSE, SSE2, SSE3, SSE4.1, SSE4.2, and AVX enabled.


$ cat /proc/cpuinfo
processor       : 7
vendor_id       : GenuineIntel
cpu family      : 6
model           : 42
model name      : Intel(R) Core(TM) i7-2860QM CPU @ 2.50GHz
stepping        : 7
microcode       : 0x1a
cpu MHz         : 800.000
cache size      : 8192 KB
physical id     : 0
siblings        : 8
core id         : 3
cpu cores       : 4
apicid          : 7
initial apicid  : 7
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4999.71
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

$ uname -a
Linux my32bitbox 3.13.0-76-generic #120-Ubuntu SMP Mon Jan 18 15:59:10 UTC 2016 i686 i686 i686 GNU/Linux</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189359</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-05-02 02:46:38 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I&apos;ve just built and tested.
&gt; And I cannot reproduce the results.
&gt; 
&gt; Currently, I think this regression is due to the processor&apos;s capabilities.
&gt; Seeing the original patch, I&apos;ve found that we use sqrtDouble without seeing
&gt; supportsFloatingPointSqrt(). sqrtDouble is only allowed in SSE2 environment
&gt; in x86.
&gt; I&apos;ll create the &quot;attempt-to-fix&quot; patch. ossy@, could you try it when I
&gt; submit it here?

I can try patches only on our ARM board, I don&apos;t have any x86 hardware.
GTK guys can help, since they maintain the GTK x86 bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189363</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-05-02 03:07:16 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Landed http://trac.webkit.org/changeset/200263 to get more information.

It seems it is a rounding issue:
https://build.webkit.org/builders/JSCOnly%20Linux%20ARMv7%20Thumb2%20Release/builds/452

Running stress/math-pow-stable-results.js.always-trigger-copy-phase
stress/math-pow-stable-results.js.default: Exception: Failed opaquePow with base = 1.4426950408889634 exponent = -0.5 expected (0.8325546111576977) got (0.8325546111576978)
stress/math-pow-stable-results.js.default: ERROR: Unexpected exit code: 3
FAIL: stress/math-pow-stable-results.js.default
stress/math-pow-stable-results.js.always-trigger-copy-phase: Exception: Failed opaquePow with base = 1.4426950408889634 exponent = -0.5 expected (0.8325546111576977) got (0.8325546111576978)
Running stress/math-pow-stable-results.js.no-llint
stress/math-pow-stable-results.js.always-trigger-copy-phase: ERROR: Unexpected exit code: 3
FAIL: stress/math-pow-stable-results.js.always-trigger-copy-phase
Running stress/math-pow-stable-results.js.no-cjit-validate-phases
stress/math-pow-stable-results.js.no-llint: Exception: Failed opaquePow with base = 2 exponent = -0.5 expected (0.7071067811865475) got (0.7071067811865476)
stress/math-pow-stable-results.js.no-llint: ERROR: Unexpected exit code: 3
FAIL: stress/math-pow-stable-results.js.no-llint
Running stress/math-pow-stable-results.js.dfg-eager
stress/math-pow-stable-results.js.no-cjit-validate-phases: Exception: Failed opaquePow with base = 2 exponent = -0.5 expected (0.7071067811865475) got (0.7071067811865476)
stress/math-pow-stable-results.js.no-cjit-validate-phases: ERROR: Unexpected exit code: 3
FAIL: stress/math-pow-stable-results.js.no-cjit-validate-phases
Running stress/math-pow-stable-results.js.dfg-eager-no-cjit-validate
stress/math-pow-stable-results.js.dfg-eager: Exception: Failed opaquePow with base = 2 exponent = -0.5 expected (0.7071067811865475) got (0.7071067811865476)
stress/math-pow-stable-results.js.dfg-eager: ERROR: Unexpected exit code: 3
FAIL: stress/math-pow-stable-results.js.dfg-eager
Running stress/math-pow-stable-results.js.dfg-maximal-flush-validate-no-cjit
stress/math-pow-stable-results.js.dfg-eager-no-cjit-validate: Exception: Failed opaquePow with base = 2 exponent = -0.5 expected (0.7071067811865475) got (0.7071067811865476)
stress/math-pow-stable-results.js.dfg-eager-no-cjit-validate: ERROR: Unexpected exit code: 3
FAIL: stress/math-pow-stable-results.js.dfg-eager-no-cjit-validate
Running stress/regexp-exec-effect-after-exception.js.default
stress/math-pow-stable-results.js.dfg-maximal-flush-validate-no-cjit: Exception: Failed opaquePow with base = 2 exponent = -0.5 expected (0.7071067811865475) got (0.7071067811865476)
stress/math-pow-stable-results.js.dfg-maximal-flush-validate-no-cjit: ERROR: Unexpected exit code: 3
FAIL: stress/math-pow-stable-results.js.dfg-maximal-flush-validate-no-cjit

 
&gt; Is it possible to get all the compile flags of those Linux build? Something
&gt; like fast-math could cause something like this.
 
&gt; Ossy, do you have access to the hardware? Getting those binaries would be a
&gt; start. If you could also disassemble the test that would be even better.

Sure, I&apos;ll upload the disassembly soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189365</commentid>
    <comment_count>13</comment_count>
      <attachid>277902</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-05-02 03:22:39 -0700</bug_when>
    <thetext>Created attachment 277902
disassembly of stress/math-pow-stable-results.js.default on ARMv7 Thumb2

working directory: .tests/stress

$ ../../.vm/JavaScriptCore.framework/Resources/jsc  --dumpDisassembly=true --useFTLJIT\=false --useFunctionDotArguments\=true math-pow-stable-results.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189366</commentid>
    <comment_count>14</comment_count>
      <attachid>277903</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-05-02 03:23:41 -0700</bug_when>
    <thetext>Created attachment 277903
a preprocessed JSC source

to be able to check all build time flags</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189386</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-05-02 06:52:55 -0700</bug_when>
    <thetext>A clean build fixed it on the ARMv7 Thumb2 JSCOnly bot:
https://build.webkit.org/builders/JSCOnly%20Linux%20ARMv7%20Thumb2%20Release/builds/453

Let&apos;s see if clean build fixes it on x86 too:
https://build.webkit.org/builders/GTK%20Linux%2032-bit%20Release/builds/61021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189404</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-02 09:10:54 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; A clean build fixed it on the ARMv7 Thumb2 JSCOnly bot:
&gt; https://build.webkit.org/builders/JSCOnly%20Linux%20ARMv7%20Thumb2%20Release/
&gt; builds/453
&gt; 
&gt; Let&apos;s see if clean build fixes it on x86 too:
&gt; https://build.webkit.org/builders/GTK%20Linux%2032-bit%20Release/builds/61021

Nice. OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189419</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-02 10:08:14 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; A clean build fixed it on the ARMv7 Thumb2 JSCOnly bot:
&gt; &gt; https://build.webkit.org/builders/JSCOnly%20Linux%20ARMv7%20Thumb2%20Release/
&gt; &gt; builds/453
&gt; &gt; 
&gt; &gt; Let&apos;s see if clean build fixes it on x86 too:
&gt; &gt; https://build.webkit.org/builders/GTK%20Linux%2032-bit%20Release/builds/61021
&gt; 
&gt; Nice. OK.

x86 32bit is still failing. It seems that this error is due to the precision.
I&apos;m now considering about x87.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191477</commentid>
    <comment_count>18</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-05-10 02:00:10 -0700</bug_when>
    <thetext>It would be great to know if GTK x86 bot has SSE2 support or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193257</commentid>
    <comment_count>19</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-15 14:44:41 -0700</bug_when>
    <thetext>I&apos;ve just extracted C runtime code (operationMathPow()), and executed it.
https://gist.github.com/Constellation/2ae6dc8ff7bc4d0bb7870503d654848a

Interestingly, I&apos;ve got the 9.652406070129542e-160 in 32/64 environment.
Even if we enable/disable sse in 32bit (80bit double is used in x87), we got the same result. I think, there is some bugs in JIT code. I&apos;ll investigate it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193275</commentid>
    <comment_count>20</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-15 16:19:13 -0700</bug_when>
    <thetext>Ah, OK. I think I&apos;ve found the cause of this.
This is due to x87&apos;s 80bit double precision. The result depends on fldl / fstpl. They perform 80 =&gt; 64 / 64 =&gt; 80 bit rouding.

https://gist.github.com/Constellation/2ae6dc8ff7bc4d0bb7870503d654848a

We got the following disasm from the above code. One is compiled without any options, one is compiled with -O3.

No option:
https://gist.github.com/Constellation/ff034fa6929c2f3570108214df5fe30b

O3:
https://gist.github.com/Constellation/c161ff854cd3615a7226527d83e9cbe5

In particular, we should focus on the following part.

 93         // If the exponent is a small positive int32 integer, we do a fast exponentiation
 94         double result = 1;
 95         while (yAsInt) {
 96             if (yAsInt &amp; 1)
 97                 result *= x;
 98             x *= x;
 99             yAsInt &gt;&gt;= 1;
100         }
101         return result;

O0:
 80486da:	d9 e8                	fld1   
 80486dc:	dd 5d e8             	fstpl  -0x18(%ebp)
 80486df:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
 80486e3:	74 21                	je     8048706 &lt;_Z16operationMathPowdd+0x1eb&gt;
 80486e5:	8b 45 e4             	mov    -0x1c(%ebp),%eax
 80486e8:	83 e0 01             	and    $0x1,%eax
 80486eb:	85 c0                	test   %eax,%eax
 80486ed:	74 09                	je     80486f8 &lt;_Z16operationMathPowdd+0x1dd&gt;
 80486ef:	dd 45 e8             	fldl   -0x18(%ebp)
 80486f2:	dc 4d d0             	fmull  -0x30(%ebp)
 80486f5:	dd 5d e8             	fstpl  -0x18(%ebp)
 80486f8:	dd 45 d0             	fldl   -0x30(%ebp)
 80486fb:	dc 4d d0             	fmull  -0x30(%ebp)
 80486fe:	dd 5d d0             	fstpl  -0x30(%ebp)
 8048701:	d1 7d e4             	sarl   -0x1c(%ebp)
 8048704:	eb d9                	jmp    80486df &lt;_Z16operationMathPowdd+0x1c4&gt;
 8048706:	dd 45 e8             	fldl   -0x18(%ebp)
 8048709:	eb 16                	jmp    8048721 &lt;_Z16operationMathPowdd+0x206&gt;

O3:
 80486c9:	dd d8                	fstp   %st(0)
 80486cb:	d9 e8                	fld1   
 80486cd:	eb 03                	jmp    80486d2 &lt;_Z16operationMathPowdd+0x142&gt;
 80486cf:	90                   	nop
 80486d0:	d9 c9                	fxch   %st(1)
 80486d2:	a8 01                	test   $0x1,%al
 80486d4:	74 0a                	je     80486e0 &lt;_Z16operationMathPowdd+0x150&gt;
 80486d6:	d8 c9                	fmul   %st(1),%st
 80486d8:	d9 c9                	fxch   %st(1)
 80486da:	eb 06                	jmp    80486e2 &lt;_Z16operationMathPowdd+0x152&gt;
 80486dc:	8d 74 26 00          	lea    0x0(%esi,%eiz,1),%esi
 80486e0:	d9 c9                	fxch   %st(1)
 80486e2:	d1 f8                	sar    %eax
 80486e4:	d8 c8                	fmul   %st(0),%st
 80486e6:	75 e8                	jne    80486d0 &lt;_Z16operationMathPowdd+0x140&gt;
 80486e8:	dd d8                	fstp   %st(0)
 80486ea:	e9 33 ff ff ff       	jmp    8048622 &lt;_Z16operationMathPowdd+0x92&gt;


In O0 ver, we always perform fstpl / fldl onto the result of multiplying. This performs 80bit =&gt; 64bit rounding.
But, in O3 ver, we don&apos;t do that. It means that multiplying is calculated in 80bit in x87.

As a result, it causes the precision problem. If operationMathPow is compiled like O3 cases,

C runtime: It performs 80bit multiplying. And we round 80bit =&gt; 64bit at the end of operationMathPow.
DFG: It always uses SSE. So there is no rounding problem. (SSE registers are 64bit).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193289</commentid>
    <comment_count>21</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-15 17:27:50 -0700</bug_when>
    <thetext>The default flag for mfpmath in clang is sse in OS X.
That&apos;s why 32bit OS X port does not show this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193330</commentid>
    <comment_count>22</comment_count>
      <attachid>278998</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-15 21:16:43 -0700</bug_when>
    <thetext>Created attachment 278998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193334</commentid>
    <comment_count>23</comment_count>
      <attachid>279000</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-15 22:02:46 -0700</bug_when>
    <thetext>Created attachment 279000
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193339</commentid>
    <comment_count>24</comment_count>
      <attachid>279002</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-15 23:38:07 -0700</bug_when>
    <thetext>Created attachment 279002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193341</commentid>
    <comment_count>25</comment_count>
      <attachid>279002</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-15 23:48:49 -0700</bug_when>
    <thetext>Comment on attachment 279002
Patch

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

Added comments.

&gt; Source/JavaScriptCore/ChangeLog:18
&gt; +        occur in OS X clang 32bit environment. This is because `-mfpmath=sse` is enabled by default in OS X clang 32bit.

Currently, in this patch, I use `volatile double` approach. But there are several alternative designs.

(1) Do not use this fast path in operationMathPow &amp; DFG JIT if `CPU(X86) &amp;&amp; (!defined(__SSE2_MATH__) || !defined(__SSE2__))`.

This is more reliable than using `volatile double`. But it incurs some performance penalty in DFG JIT compared to the current case,
since DFG JIT gives up emitting this fast path even if SSE2 is available.

(2) Emit x87 in DFG when `CPU(X86) &amp;&amp; (!defined(__SSE2_MATH__) || !defined(__SSE2__))`.

I think it&apos;s not good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193342</commentid>
    <comment_count>26</comment_count>
      <attachid>279002</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-16 00:04:45 -0700</bug_when>
    <thetext>Comment on attachment 279002
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:18
&gt;&gt; +        occur in OS X clang 32bit environment. This is because `-mfpmath=sse` is enabled by default in OS X clang 32bit.
&gt; 
&gt; Currently, in this patch, I use `volatile double` approach. But there are several alternative designs.
&gt; 
&gt; (1) Do not use this fast path in operationMathPow &amp; DFG JIT if `CPU(X86) &amp;&amp; (!defined(__SSE2_MATH__) || !defined(__SSE2__))`.
&gt; 
&gt; This is more reliable than using `volatile double`. But it incurs some performance penalty in DFG JIT compared to the current case,
&gt; since DFG JIT gives up emitting this fast path even if SSE2 is available.
&gt; 
&gt; (2) Emit x87 in DFG when `CPU(X86) &amp;&amp; (!defined(__SSE2_MATH__) || !defined(__SSE2__))`.
&gt; 
&gt; I think it&apos;s not good.

Reading this[1], `volatile double` seems OK.

[1]: https://gcc.gnu.org/wiki/x87note</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193343</commentid>
    <comment_count>27</comment_count>
      <attachid>279002</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-16 00:07:29 -0700</bug_when>
    <thetext>Comment on attachment 279002
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:18
&gt;&gt;&gt; +        occur in OS X clang 32bit environment. This is because `-mfpmath=sse` is enabled by default in OS X clang 32bit.
&gt;&gt; 
&gt;&gt; Currently, in this patch, I use `volatile double` approach. But there are several alternative designs.
&gt;&gt; 
&gt;&gt; (1) Do not use this fast path in operationMathPow &amp; DFG JIT if `CPU(X86) &amp;&amp; (!defined(__SSE2_MATH__) || !defined(__SSE2__))`.
&gt;&gt; 
&gt;&gt; This is more reliable than using `volatile double`. But it incurs some performance penalty in DFG JIT compared to the current case,
&gt;&gt; since DFG JIT gives up emitting this fast path even if SSE2 is available.
&gt;&gt; 
&gt;&gt; (2) Emit x87 in DFG when `CPU(X86) &amp;&amp; (!defined(__SSE2_MATH__) || !defined(__SSE2__))`.
&gt;&gt; 
&gt;&gt; I think it&apos;s not good.
&gt; 
&gt; Reading this[1], `volatile double` seems OK.
&gt; 
&gt; [1]: https://gcc.gnu.org/wiki/x87note

And this https://gcc.gnu.org/bugzilla/show_bug.cgi?id=323</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193418</commentid>
    <comment_count>28</comment_count>
      <attachid>279002</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-16 10:50:42 -0700</bug_when>
    <thetext>Comment on attachment 279002
Patch

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

&gt; Source/JavaScriptCore/runtime/MathCommon.cpp:438
&gt;      if (static_cast&lt;double&gt;(yAsInt) == y &amp;&amp; yAsInt &gt; 0 &amp;&amp; yAsInt &lt;= maxExponentForIntegerMathPow) {

This should work if yAsInt == 0, too.  It would correctly return 1, and it would do so faster than mathPowInternal.
We could probably also do special optimizations for yAsInt &lt; 0, but there would probably be lots of edge cases and precision problems to worry about.  Same with non-{-0.5, 0.5} multiples of 0.5, which probably aren&apos;t very common.

&gt; Source/JavaScriptCore/runtime/MathCommon.cpp:448
&gt; +        typedef volatile double DoubleValue;

Will we have to do this elsewhere, too?  I&apos;ve solved 80-bit precision (actually 64-bit mantissa) rounding issues on Windows with _control_fp and _PC_53, but that changes the rounding mode globally for the application.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193633</commentid>
    <comment_count>29</comment_count>
      <attachid>279002</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-05-16 17:23:20 -0700</bug_when>
    <thetext>Comment on attachment 279002
Patch

Good job finding the issue!

I wish there was a way for gcc to use SSE for the entire JSC. I am sure there are plenty of similar bugs that are not covered by tests :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193648</commentid>
    <comment_count>30</comment_count>
      <attachid>279077</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-16 18:02:55 -0700</bug_when>
    <thetext>Created attachment 279077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193649</commentid>
    <comment_count>31</comment_count>
      <attachid>279002</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-16 18:04:16 -0700</bug_when>
    <thetext>Comment on attachment 279002
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/MathCommon.cpp:438
&gt;&gt;      if (static_cast&lt;double&gt;(yAsInt) == y &amp;&amp; yAsInt &gt; 0 &amp;&amp; yAsInt &lt;= maxExponentForIntegerMathPow) {
&gt; 
&gt; This should work if yAsInt == 0, too.  It would correctly return 1, and it would do so faster than mathPowInternal.
&gt; We could probably also do special optimizations for yAsInt &lt; 0, but there would probably be lots of edge cases and precision problems to worry about.  Same with non-{-0.5, 0.5} multiples of 0.5, which probably aren&apos;t very common.

Nice catch!. DFG / FTL already handles this 0 case. So operationMathPow should be aware of that since operationMathPow&apos;s processing should be aligned to DFG / FTL&apos;s ones.

&gt;&gt; Source/JavaScriptCore/runtime/MathCommon.cpp:448
&gt;&gt; +        typedef volatile double DoubleValue;
&gt; 
&gt; Will we have to do this elsewhere, too?  I&apos;ve solved 80-bit precision (actually 64-bit mantissa) rounding issues on Windows with _control_fp and _PC_53, but that changes the rounding mode globally for the application.

I think this should be limited. The requirement is that the generated value is consistent in all the tiers (from LLInt to FTL).
If the value is calculated in 80bit, it&apos;s ok if the DFG also calculate it in 80bit.
So, what we should take care is that the mathematical value calculated in DFG like this.

Yeah, as you said, _control_fp in Win (And _FPU_SETCW &amp; _FPU_DOUBLE in the other environments) changes the FPU precision globally.
So in this patch, I take the small changes that effect is limited. However, if changing the configuration is acceptable, changing it can be a good alternative.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193656</commentid>
    <comment_count>32</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-16 18:24:37 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; Comment on attachment 279002 [details]
&gt; Patch
&gt; 
&gt; Good job finding the issue!
&gt; 
&gt; I wish there was a way for gcc to use SSE for the entire JSC. I am sure
&gt; there are plenty of similar bugs that are not covered by tests :(

Yeah. -mfpmath=sse &amp; -march=native can enforce gcc to use SSE2 (muld etc.) if they are supported. However, in the environment that does not support SSE2, we need to take the conservative approach. And I think we still need to consider about such environments since the binary packages for i686 (e.g. Debian&apos;s i686 port) need to consider the CPU capabilities conservatively. Linux drops i386 support, but i686 support still remains. And i686 (Pentium Pro ~) does not include SSE2 (Pentium 4 ~).

After reconsidering about the probelm, I think Alex&apos;s suggestion - changing FPU precision globally - seems nice in WebKit globally.

Pros:
- We don&apos;t need to consider about x87 80bit precision anymore.
- In Windows, FPU precision is configured 64bit by default. (And in Linux, this is configued 80bit). So I don&apos;t think enforcing 64bit precision incurs some critical problems.

Cons:
- The change affects globally. So all the x87 processing in the process is now enforced to 64bit precision.
- Even if FPU config is changed, libc&apos;s math function may return the value in 80bit precision (For example, I&apos;ve checked that std::pow() still returns 80bit precision value even if we changed x87 precision to 64bit in x86). Potentially, this incurs some inconsistency problems.
- We need to take care of the other libraries that may change the FPU configuration to keep this 64bit. For example, DirectX is known that it changes FPU configuration (without D3DCREATE_FPU_PRESERVE).

Alex, Benjamin, what do you think of?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193659</commentid>
    <comment_count>33</comment_count>
      <attachid>279077</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-05-16 18:41:21 -0700</bug_when>
    <thetext>Comment on attachment 279077
Patch

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

&gt; Source/JavaScriptCore/b3/B3MathExtras.cpp:53
&gt; -        start-&gt;appendNew&lt;Const32Value&gt;(procedure, origin, 1000));
&gt; +        start-&gt;appendNew&lt;Const32Value&gt;(procedure, origin, maxExponentForIntegerMathPow));

Missing header for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193660</commentid>
    <comment_count>34</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-05-16 18:42:05 -0700</bug_when>
    <thetext>Changing the FPU configuration seems fragile to me. We would see bugs appearing if any library decides to change it too.

Alex, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193662</commentid>
    <comment_count>35</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-16 18:45:33 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; Changing the FPU configuration seems fragile to me. We would see bugs
&gt; appearing if any library decides to change it too.
&gt; 
&gt; Alex, what do you think?

(In reply to comment #32)
&gt; (In reply to comment #29)
&gt; &gt; Comment on attachment 279002 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Good job finding the issue!
&gt; &gt; 
&gt; &gt; I wish there was a way for gcc to use SSE for the entire JSC. I am sure
&gt; &gt; there are plenty of similar bugs that are not covered by tests :(
&gt; 
&gt; Yeah. -mfpmath=sse &amp; -march=native can enforce gcc to use SSE2 (muld etc.)
&gt; if they are supported. However, in the environment that does not support
&gt; SSE2, we need to take the conservative approach. And I think we still need
&gt; to consider about such environments since the binary packages for i686 (e.g.
&gt; Debian&apos;s i686 port) need to consider the CPU capabilities conservatively.
&gt; Linux drops i386 support, but i686 support still remains. And i686 (Pentium
&gt; Pro ~) does not include SSE2 (Pentium 4 ~).
&gt; 
&gt; After reconsidering about the probelm, I think Alex&apos;s suggestion - changing
&gt; FPU precision globally - seems nice in WebKit globally.
&gt; 
&gt; Pros:
&gt; - We don&apos;t need to consider about x87 80bit precision anymore.
&gt; - In Windows, FPU precision is configured 64bit by default. (And in Linux,
&gt; this is configued 80bit). So I don&apos;t think enforcing 64bit precision incurs
&gt; some critical problems.

Ah, and potential concern is that there are so many Linux libraries that is not used in Windows; gtk, etc.

&gt; 
&gt; Cons:
&gt; - The change affects globally. So all the x87 processing in the process is
&gt; now enforced to 64bit precision.
&gt; - Even if FPU config is changed, libc&apos;s math function may return the value
&gt; in 80bit precision (For example, I&apos;ve checked that std::pow() still returns
&gt; 80bit precision value even if we changed x87 precision to 64bit in x86).
&gt; Potentially, this incurs some inconsistency problems.
&gt; - We need to take care of the other libraries that may change the FPU
&gt; configuration to keep this 64bit. For example, DirectX is known that it
&gt; changes FPU configuration (without D3DCREATE_FPU_PRESERVE).
&gt; 
&gt; Alex, Benjamin, what do you think of?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193717</commentid>
    <comment_count>36</comment_count>
      <attachid>279077</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-16 21:06:14 -0700</bug_when>
    <thetext>Comment on attachment 279077
Patch

I think this fix is good, but there are certainly more, and if we found all of them, the code would look messy everywhere and do lots of unnecessary storing to the stack.  Requiring all JSC applications to use 53-bit mantissa mode would be VERY bad, because some of them intentionally change it for more precision in fancy math libraries.  I had to debug such a problem once and that was no fun.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193727</commentid>
    <comment_count>37</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-16 21:25:55 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; Comment on attachment 279077 [details]
&gt; Patch
&gt; 
&gt; I think this fix is good, but there are certainly more, and if we found all
&gt; of them, the code would look messy everywhere and do lots of unnecessary
&gt; storing to the stack.  Requiring all JSC applications to use 53-bit mantissa
&gt; mode would be VERY bad, because some of them intentionally change it for
&gt; more precision in fancy math libraries.  I had to debug such a problem once
&gt; and that was no fun.

Sounds reasonable. OK, I&apos;ll go with this patch and watch the build bot. Thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193728</commentid>
    <comment_count>38</comment_count>
      <attachid>279077</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-16 21:26:22 -0700</bug_when>
    <thetext>Comment on attachment 279077
Patch

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

&gt;&gt; Source/JavaScriptCore/b3/B3MathExtras.cpp:53
&gt;&gt; +        start-&gt;appendNew&lt;Const32Value&gt;(procedure, origin, maxExponentForIntegerMathPow));
&gt; 
&gt; Missing header for this.

Oops, thanks. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193731</commentid>
    <comment_count>39</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-16 21:35:17 -0700</bug_when>
    <thetext>Committed r200996: &lt;http://trac.webkit.org/changeset/200996&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193735</commentid>
    <comment_count>40</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-16 22:00:17 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; Comment on attachment 279077 [details]
&gt; Patch
&gt; 
&gt; I think this fix is good, but there are certainly more, and if we found all
&gt; of them, the code would look messy everywhere and do lots of unnecessary
&gt; storing to the stack.  Requiring all JSC applications to use 53-bit mantissa
&gt; mode would be VERY bad, because some of them intentionally change it for
&gt; more precision in fancy math libraries.  I had to debug such a problem once
&gt; and that was no fun.

Once the new code like this is found, we need to extract this DoubleValue type and use it in such code to ensure 64bit precision.
I believe such code is rare; the problematic pattern is that the same floating point calculation is done in C runtime and Baseline / DFG (not FTL) JIT SSE2 code separately.
FTL does not have a problem since FTL is not enabled in x86 32bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193749</commentid>
    <comment_count>41</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-16 22:43:44 -0700</bug_when>
    <thetext>operations with base = 0.6931471805599453 exponent = 999 are fixed.
But still failing due to exponent = 0.5 / -0.5 special path cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193752</commentid>
    <comment_count>42</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-16 22:53:02 -0700</bug_when>
    <thetext>Ah, OK. math-pow-with-constants.js cases are fixed.
But math-pow-stable-results.js cases remain.
This is because of the similar issue in sqrt. operationMathPow uses sqrt. This c sqrt function is implementation-dependent, but, actually, the result is calculated in 80bit precision in glibc.
However, DFG JIT fast path for 0.5 / -0.5 uses sqrt SSE operation. Of course, they have 64bit precision.

I think the similar issue should occur in ArithSqrt and std::sqrt.
Seeing the ArithXXX nodes at glance, the other nodes do not have the problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193759</commentid>
    <comment_count>43</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-16 23:33:16 -0700</bug_when>
    <thetext>I&apos;ve just opened the new bug to handle sqrt and pow.
https://bugs.webkit.org/show_bug.cgi?id=157787</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193793</commentid>
    <comment_count>44</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-17 06:42:38 -0700</bug_when>
    <thetext>Committed r201014: &lt;http://trac.webkit.org/changeset/201014&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>277902</attachid>
            <date>2016-05-02 03:22:39 -0700</date>
            <delta_ts>2016-05-02 03:22:39 -0700</delta_ts>
            <desc>disassembly of stress/math-pow-stable-results.js.default on ARMv7 Thumb2</desc>
            <filename>disasm.txt</filename>
            <type>text/plain</type>
            <size>1194679</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">R2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBb
MHhiNmYwODAwMSwgMHhiNmYwODA4MSk6CiAgICAweGI2ZjA4MDAwOiAgICBwdXNoICAge3I3LCBs
cn0KICAgIDB4YjZmMDgwMDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDgwMDY6ICAgIG1v
diAgICByMTIsICMwCiAgICAweGI2ZjA4MDBhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAg
MHhiNmYwODAwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDgwMTI6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4MDE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZm
MDgwMTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDgwMWE6ICAgIGxkciAgICByMSwgW3I3
LCAjMTZdCiAgICAweGI2ZjA4MDFjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYw
ODAxZTogICAgbW92dyAgIHIxMiwgIzYyMTc3CiAgICAweGI2ZjA4MDIyOiAgICBtb3Z0ICAgcjEy
LCAjNDY3OTUKICAgIDB4YjZmMDgwMjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDgwMjg6ICAg
IG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDgwMmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAw
eGI2ZjA4MDJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODAzMjogICAgbGRyICAg
IHI2LCBbcjZdCiAgICAweGI2ZjA4MDM0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA4MDM2
OiAgICBibmUgICAgMHhiNmYwODA0MAogICAgMHhiNmYwODAzODogICAgbW92ICAgIHNwLCByNwog
ICAgMHhiNmYwODAzYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA4MDNlOiAgICBieCAg
ICAgbHIKICAgIDB4YjZmMDgwNDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA4MDQ0
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODA0ODogICAgc3RyICAgIHI3LCBbcjZd
CiAgICAweGI2ZjA4MDRhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA4MDRjOiAgICBtb3Z3
ICAgcjMsICM2MzI0OQogICAgMHhiNmYwODA1MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4
YjZmMDgwNTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwODA1NjogICAgbW92dyAgIHI2LCAjNDYx
ODgKICAgIDB4YjZmMDgwNWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4MDVlOiAg
ICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDgwNjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQg
SklUIGNvZGUgZm9yIG5hdGl2ZSBDb25zdHJ1Y3QgdHJhbXBvbGluZToKICAgIENvZGUgYXQgWzB4
YjZmMDgwODEsIDB4YjZmMDgwZTEpOgogICAgMHhiNmYwODA4MDogICAgcHVzaCAgIHtyNywgbHJ9
CiAgICAweGI2ZjA4MDg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA4MDg2OiAgICBtb3Yg
ICAgcjEyLCAjMAogICAgMHhiNmYwODA4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4
YjZmMDgwOGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA4MDkyOiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgMHhiNmYwODA5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA4
MDk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA4MDlhOiAgICBsZHIgICAgcjEsIFtyNywg
IzE2XQogICAgMHhiNmYwODA5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDgw
OWU6ICAgIGxkciAgICByMTIsIFtyMiwgIzQwXQogICAgMHhiNmYwODBhMjogICAgYmx4ICAgIHIx
MgogICAgMHhiNmYwODBhNDogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDgwYTg6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4MGFjOiAgICBsZHIgICAgcjYsIFtyNl0KICAg
IDB4YjZmMDgwYWU6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDgwYjA6ICAgIGJuZSAgICAw
eGI2ZjA4MGJhCiAgICAweGI2ZjA4MGIyOiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA4MGI0
OiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDgwYjg6ICAgIGJ4ICAgICBscgogICAgMHhi
NmYwODBiYTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDgwYmU6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjA4MGMyOiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDgw
YzQ6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDgwYzY6ICAgIG1vdncgICByMywgIzYzMjQ5
CiAgICAweGI2ZjA4MGNhOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwODBjZTogICAg
Ymx4ICAgIHIzCiAgICAweGI2ZjA4MGQwOiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYw
ODBkNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDgwZDg6ICAgIGxkciAgICByMSwg
W3I2XQogICAgMHhiNmYwODBkYTogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3Ig
SklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDgwZTEsIDB4YjZmMDgxNjEp
OgogICAgMHhiNmYwODBlMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA4MGU0OiAgICBt
b3YgICAgcjcsIHNwCiAgICAweGI2ZjA4MGU2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYw
ODBlYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDgwZWU6ICAgIG1vdncgICBy
NiwgIzQyMTI4CiAgICAweGI2ZjA4MGYyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYw
ODBmNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA4MGY4OiAgICBtb3YgICAgcjAsIHI3
CiAgICAweGI2ZjA4MGZhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwODBmYzog
ICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDgwZmU6ICAgIG1vdncgICByMTIsICM1
MzY0OQogICAgMHhiNmYwODEwMjogICAgbW92dCAgIHIxMiwgIzQ2Nzk1CiAgICAweGI2ZjA4MTA2
OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA4MTA4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2
ZjA4MTBhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwODEwZTogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDgxMTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwODEx
NDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwODExNjogICAgYm5lICAgIDB4YjZmMDgxMjAK
ICAgIDB4YjZmMDgxMTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDgxMWE6ICAgIHBvcCAg
ICB7cjcsIGxyfQogICAgMHhiNmYwODExZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA4MTIwOiAg
ICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwODEyNDogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgIDB4YjZmMDgxMjg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwODEyYTogICAgbW92
ICAgIHIwLCByNwogICAgMHhiNmYwODEyYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZm
MDgxMzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA4MTM0OiAgICBibHggICAgcjMK
ICAgIDB4YjZmMDgxMzY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA4MTNhOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODEzZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAw
eGI2ZjA4MTQwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5h
dGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwODE2MSwgMHhiNmYwODFlMSk6CiAgICAweGI2
ZjA4MTYwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDgxNjQ6ICAgIG1vdiAgICByNywg
c3AKICAgIDB4YjZmMDgxNjY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA4MTZhOiAgICBz
dHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwODE2ZTogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgIDB4YjZmMDgxNzI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4MTc2OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDgxNzg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZm
MDgxN2E6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA4MTdjOiAgICBsZHIgICAg
cjIsIFtyMSwgIzIwXQogICAgMHhiNmYwODE3ZTogICAgbW92dyAgIHIxMiwgIzYyOTMzCiAgICAw
eGI2ZjA4MTgyOiAgICBtb3Z0ICAgcjEyLCAjNDY3OTAKICAgIDB4YjZmMDgxODY6ICAgIGJseCAg
ICByMTIKICAgIDB4YjZmMDgxODg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDgxOGE6ICAg
IG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA4MThlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwODE5MjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA4MTk0OiAgICBjbXAg
ICAgcjIsICMwCiAgICAweGI2ZjA4MTk2OiAgICBibmUgICAgMHhiNmYwODFhMAogICAgMHhiNmYw
ODE5ODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwODE5YTogICAgcG9wICAgIHtyNywgbHJ9
CiAgICAweGI2ZjA4MTllOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDgxYTA6ICAgIG1vdncgICBy
NiwgIzQyMTI4CiAgICAweGI2ZjA4MWE0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYw
ODFhODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA4MWFhOiAgICBtb3YgICAgcjAsIHI3
CiAgICAweGI2ZjA4MWFjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwODFiMDogICAg
bW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDgxYjQ6ICAgIGJseCAgICByMwogICAgMHhiNmYw
ODFiNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDgxYmE6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA4MWJlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDgxYzA6
ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6
CiAgICBDb2RlIGF0IFsweGI2ZjA4MWUxLCAweGI2ZjA4MjYxKToKICAgIDB4YjZmMDgxZTA6ICAg
IHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwODFlNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhi
NmYwODFlNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDgxZWE6ICAgIHN0ciAgICByMTIs
IFtyNywgIzhdCiAgICAweGI2ZjA4MWVlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYw
ODFmMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDgxZjY6ICAgIHN0ciAgICByNywg
W3I2XQogICAgMHhiNmYwODFmODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwODFmYTogICAg
bGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDgxZmM6ICAgIGxkciAgICByMiwgW3IxLCAj
MjBdCiAgICAweGI2ZjA4MWZlOiAgICBtb3Z3ICAgcjEyLCAjNjM2OTMKICAgIDB4YjZmMDgyMDI6
ICAgIG1vdnQgICByMTIsICM0NjgwNwogICAgMHhiNmYwODIwNjogICAgYmx4ICAgIHIxMgogICAg
MHhiNmYwODIwODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwODIwYTogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgIDB4YjZmMDgyMGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4
MjEyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDgyMTQ6ICAgIGNtcCAgICByMiwgIzAK
ICAgIDB4YjZmMDgyMTY6ICAgIGJuZSAgICAweGI2ZjA4MjIwCiAgICAweGI2ZjA4MjE4OiAgICBt
b3YgICAgc3AsIHI3CiAgICAweGI2ZjA4MjFhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZm
MDgyMWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwODIyMDogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgIDB4YjZmMDgyMjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4MjI4OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDgyMmE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZm
MDgyMmM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA4MjMwOiAgICBtb3Z0ICAgcjMs
ICM0Njc3NgogICAgMHhiNmYwODIzNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA4MjM2OiAgICBt
b3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwODIzYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDgyM2U6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwODI0MDogICAgYnggICAg
IHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUg
YXQgWzB4YjZmMDgyNjEsIDB4YjZmMDgyZTEpOgogICAgMHhiNmYwODI2MDogICAgcHVzaCAgIHty
NywgbHJ9CiAgICAweGI2ZjA4MjY0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA4MjY2OiAg
ICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwODI2YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0K
ICAgIDB4YjZmMDgyNmU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA4MjcyOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODI3NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjA4Mjc4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA4MjdhOiAgICBsZHIgICAgcjEs
IFtyNywgIzE2XQogICAgMHhiNmYwODI3YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4
YjZmMDgyN2U6ICAgIG1vdncgICByMTIsICM2MTYzNwogICAgMHhiNmYwODI4MjogICAgbW92dCAg
IHIxMiwgIzQ2ODA3CiAgICAweGI2ZjA4Mjg2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA4Mjg4
OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA4MjhhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAog
ICAgMHhiNmYwODI4ZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDgyOTI6ICAgIGxk
ciAgICByNiwgW3I2XQogICAgMHhiNmYwODI5NDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYw
ODI5NjogICAgYm5lICAgIDB4YjZmMDgyYTAKICAgIDB4YjZmMDgyOTg6ICAgIG1vdiAgICBzcCwg
cjcKICAgIDB4YjZmMDgyOWE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwODI5ZTogICAg
YnggICAgIGxyCiAgICAweGI2ZjA4MmEwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYw
ODJhNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDgyYTg6ICAgIHN0ciAgICByNywg
W3I2XQogICAgMHhiNmYwODJhYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwODJhYzogICAg
bW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDgyYjA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAg
ICAweGI2ZjA4MmI0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDgyYjY6ICAgIG1vdncgICByNiwg
IzQ2MTg4CiAgICAweGI2ZjA4MmJhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODJi
ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA4MmMwOiAgICBieCAgICAgcjEKR2VuZXJh
dGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYw
ODJlMSwgMHhiNmYwODM2MSk6CiAgICAweGI2ZjA4MmUwOiAgICBwdXNoICAge3I3LCBscn0KICAg
IDB4YjZmMDgyZTQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDgyZTY6ICAgIG1vdiAgICBy
MTIsICMwCiAgICAweGI2ZjA4MmVhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYw
ODJlZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDgyZjI6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA4MmY2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDgyZjg6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDgyZmE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZd
CiAgICAweGI2ZjA4MmZjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwODJmZTog
ICAgbW92dyAgIHIxMiwgIzUzNDI5CiAgICAweGI2ZjA4MzAyOiAgICBtb3Z0ICAgcjEyLCAjNDY4
MDcKICAgIDB4YjZmMDgzMDY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDgzMDg6ICAgIG1vdiAg
ICBsciwgcjMKICAgIDB4YjZmMDgzMGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA4
MzBlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODMxMjogICAgbGRyICAgIHI2LCBb
cjZdCiAgICAweGI2ZjA4MzE0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA4MzE2OiAgICBi
bmUgICAgMHhiNmYwODMyMAogICAgMHhiNmYwODMxODogICAgbW92ICAgIHNwLCByNwogICAgMHhi
NmYwODMxYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA4MzFlOiAgICBieCAgICAgbHIK
ICAgIDB4YjZmMDgzMjA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA4MzI0OiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODMyODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjA4MzJhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA4MzJjOiAgICBtb3Z3ICAgcjMs
ICM2MzI0OQogICAgMHhiNmYwODMzMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDgz
MzQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwODMzNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAg
IDB4YjZmMDgzM2E6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4MzNlOiAgICBsZHIg
ICAgcjEsIFtyNl0KICAgIDB4YjZmMDgzNDA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNv
ZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA4MzYxLCAweGI2
ZjA4M2UxKToKICAgIDB4YjZmMDgzNjA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwODM2
NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwODM2NjogICAgbW92ICAgIHIxMiwgIzAKICAg
IDB4YjZmMDgzNmE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA4MzZlOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwODM3MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDgzNzY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwODM3ODogICAgbW92ICAg
IHIwLCByNwogICAgMHhiNmYwODM3YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZm
MDgzN2M6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA4MzdlOiAgICBtb3Z3ICAg
cjEyLCAjNTQ0NTcKICAgIDB4YjZmMDgzODI6ICAgIG1vdnQgICByMTIsICM0NjgwNwogICAgMHhi
NmYwODM4NjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwODM4ODogICAgbW92ICAgIGxyLCByMwog
ICAgMHhiNmYwODM4YTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDgzOGU6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4MzkyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4
YjZmMDgzOTQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDgzOTY6ICAgIGJuZSAgICAweGI2
ZjA4M2EwCiAgICAweGI2ZjA4Mzk4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA4MzlhOiAg
ICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDgzOWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYw
ODNhMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDgzYTQ6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA4M2E4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDgzYWE6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDgzYWM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAg
ICAweGI2ZjA4M2IwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwODNiNDogICAgYmx4
ICAgIHIzCiAgICAweGI2ZjA4M2I2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwODNi
YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDgzYmU6ICAgIGxkciAgICByMSwgW3I2
XQogICAgMHhiNmYwODNjMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklU
IENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDgzZTEsIDB4YjZmMDg0NjEpOgog
ICAgMHhiNmYwODNlMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA4M2U0OiAgICBtb3Yg
ICAgcjcsIHNwCiAgICAweGI2ZjA4M2U2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwODNl
YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDgzZWU6ICAgIG1vdncgICByNiwg
IzQyMTI4CiAgICAweGI2ZjA4M2YyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODNm
NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA4M2Y4OiAgICBtb3YgICAgcjAsIHI3CiAg
ICAweGI2ZjA4M2ZhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwODNmYzogICAg
bGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDgzZmU6ICAgIG1vdncgICByMTIsICM1Mzkw
NQogICAgMHhiNmYwODQwMjogICAgbW92dCAgIHIxMiwgIzQ2ODA3CiAgICAweGI2ZjA4NDA2OiAg
ICBibHggICAgcjEyCiAgICAweGI2ZjA4NDA4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA4
NDBhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwODQwZTogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDg0MTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwODQxNDog
ICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwODQxNjogICAgYm5lICAgIDB4YjZmMDg0MjAKICAg
IDB4YjZmMDg0MTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDg0MWE6ICAgIHBvcCAgICB7
cjcsIGxyfQogICAgMHhiNmYwODQxZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA4NDIwOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwODQyNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDg0Mjg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwODQyYTogICAgbW92ICAg
IHIwLCByNwogICAgMHhiNmYwODQyYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDg0
MzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA4NDM0OiAgICBibHggICAgcjMKICAg
IDB4YjZmMDg0MzY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA4NDNhOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODQzZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2
ZjA4NDQwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2
ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwODQ2MSwgMHhiNmYwODRlMSk6CiAgICAweGI2ZjA4
NDYwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDg0NjQ6ICAgIG1vdiAgICByNywgc3AK
ICAgIDB4YjZmMDg0NjY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA4NDZhOiAgICBzdHIg
ICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwODQ2ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
IDB4YjZmMDg0NzI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4NDc2OiAgICBzdHIg
ICAgcjcsIFtyNl0KICAgIDB4YjZmMDg0Nzg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDg0
N2E6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA4NDdjOiAgICBsZHIgICAgcjIs
IFtyMSwgIzIwXQogICAgMHhiNmYwODQ3ZTogICAgbW92dyAgIHIxMiwgIzUzNTY1CiAgICAweGI2
ZjA4NDgyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MDcKICAgIDB4YjZmMDg0ODY6ICAgIGJseCAgICBy
MTIKICAgIDB4YjZmMDg0ODg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDg0OGE6ICAgIG1v
dncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA4NDhlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwODQ5MjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA4NDk0OiAgICBjbXAgICAg
cjIsICMwCiAgICAweGI2ZjA4NDk2OiAgICBibmUgICAgMHhiNmYwODRhMAogICAgMHhiNmYwODQ5
ODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwODQ5YTogICAgcG9wICAgIHtyNywgbHJ9CiAg
ICAweGI2ZjA4NDllOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDg0YTA6ICAgIG1vdncgICByNiwg
IzQyMTI4CiAgICAweGI2ZjA4NGE0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODRh
ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA4NGFhOiAgICBtb3YgICAgcjAsIHI3CiAg
ICAweGI2ZjA4NGFjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwODRiMDogICAgbW92
dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDg0YjQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwODRi
NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDg0YmE6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjA4NGJlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDg0YzA6ICAg
IGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAg
ICBDb2RlIGF0IFsweGI2ZjA4NGUxLCAweGI2ZjA4NTYxKToKICAgIDB4YjZmMDg0ZTA6ICAgIHB1
c2ggICB7cjcsIGxyfQogICAgMHhiNmYwODRlNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYw
ODRlNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDg0ZWE6ICAgIHN0ciAgICByMTIsIFty
NywgIzhdCiAgICAweGI2ZjA4NGVlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwODRm
MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDg0ZjY6ICAgIHN0ciAgICByNywgW3I2
XQogICAgMHhiNmYwODRmODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwODRmYTogICAgbGRy
ICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDg0ZmM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBd
CiAgICAweGI2ZjA4NGZlOiAgICBtb3Z3ICAgcjEyLCAjNTQ5MDEKICAgIDB4YjZmMDg1MDI6ICAg
IG1vdnQgICByMTIsICM0NjgwNwogICAgMHhiNmYwODUwNjogICAgYmx4ICAgIHIxMgogICAgMHhi
NmYwODUwODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwODUwYTogICAgbW92dyAgIHI2LCAj
NDYzNDgKICAgIDB4YjZmMDg1MGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4NTEy
OiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDg1MTQ6ICAgIGNtcCAgICByMiwgIzAKICAg
IDB4YjZmMDg1MTY6ICAgIGJuZSAgICAweGI2ZjA4NTIwCiAgICAweGI2ZjA4NTE4OiAgICBtb3Yg
ICAgc3AsIHI3CiAgICAweGI2ZjA4NTFhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDg1
MWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwODUyMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
IDB4YjZmMDg1MjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4NTI4OiAgICBzdHIg
ICAgcjcsIFtyNl0KICAgIDB4YjZmMDg1MmE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDg1
MmM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA4NTMwOiAgICBtb3Z0ICAgcjMsICM0
Njc3NgogICAgMHhiNmYwODUzNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA4NTM2OiAgICBtb3Z3
ICAgcjYsICM0NjE4OAogICAgMHhiNmYwODUzYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMDg1M2U6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwODU0MDogICAgYnggICAgIHIx
CkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQg
WzB4YjZmMDg1NjEsIDB4YjZmMDg1ZTEpOgogICAgMHhiNmYwODU2MDogICAgcHVzaCAgIHtyNywg
bHJ9CiAgICAweGI2ZjA4NTY0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA4NTY2OiAgICBt
b3YgICAgcjEyLCAjMAogICAgMHhiNmYwODU2YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAg
IDB4YjZmMDg1NmU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA4NTcyOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODU3NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2
ZjA4NTc4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA4NTdhOiAgICBsZHIgICAgcjEsIFty
NywgIzE2XQogICAgMHhiNmYwODU3YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZm
MDg1N2U6ICAgIG1vdncgICByMTIsICM2MDg4MQogICAgMHhiNmYwODU4MjogICAgbW92dCAgIHIx
MiwgIzQ2ODA3CiAgICAweGI2ZjA4NTg2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA4NTg4OiAg
ICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA4NThhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAg
MHhiNmYwODU4ZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDg1OTI6ICAgIGxkciAg
ICByNiwgW3I2XQogICAgMHhiNmYwODU5NDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwODU5
NjogICAgYm5lICAgIDB4YjZmMDg1YTAKICAgIDB4YjZmMDg1OTg6ICAgIG1vdiAgICBzcCwgcjcK
ICAgIDB4YjZmMDg1OWE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwODU5ZTogICAgYngg
ICAgIGxyCiAgICAweGI2ZjA4NWEwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwODVh
NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDg1YTg6ICAgIHN0ciAgICByNywgW3I2
XQogICAgMHhiNmYwODVhYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwODVhYzogICAgbW92
dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDg1YjA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAw
eGI2ZjA4NWI0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDg1YjY6ICAgIG1vdncgICByNiwgIzQ2
MTg4CiAgICAweGI2ZjA4NWJhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODViZTog
ICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA4NWMwOiAgICBieCAgICAgcjEKR2VuZXJhdGVk
IEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwODVl
MSwgMHhiNmYwODY2MSk6CiAgICAweGI2ZjA4NWUwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4
YjZmMDg1ZTQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDg1ZTY6ICAgIG1vdiAgICByMTIs
ICMwCiAgICAweGI2ZjA4NWVhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwODVl
ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDg1ZjI6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjA4NWY2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDg1Zjg6ICAg
IG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDg1ZmE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAg
ICAweGI2ZjA4NWZjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwODVmZTogICAg
bW92dyAgIHIxMiwgIzU1NjUzCiAgICAweGI2ZjA4NjAyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MDcK
ICAgIDB4YjZmMDg2MDY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDg2MDg6ICAgIG1vdiAgICBs
ciwgcjMKICAgIDB4YjZmMDg2MGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA4NjBl
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODYxMjogICAgbGRyICAgIHI2LCBbcjZd
CiAgICAweGI2ZjA4NjE0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA4NjE2OiAgICBibmUg
ICAgMHhiNmYwODYyMAogICAgMHhiNmYwODYxODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYw
ODYxYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA4NjFlOiAgICBieCAgICAgbHIKICAg
IDB4YjZmMDg2MjA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA4NjI0OiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODYyODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2
ZjA4NjJhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA4NjJjOiAgICBtb3Z3ICAgcjMsICM2
MzI0OQogICAgMHhiNmYwODYzMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDg2MzQ6
ICAgIGJseCAgICByMwogICAgMHhiNmYwODYzNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4
YjZmMDg2M2E6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4NjNlOiAgICBsZHIgICAg
cjEsIFtyNl0KICAgIDB4YjZmMDg2NDA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUg
Zm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA4NjYxLCAweGI2ZjA4
NmUxKToKICAgIDB4YjZmMDg2NjA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwODY2NDog
ICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwODY2NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4
YjZmMDg2NmE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA4NjZlOiAgICBtb3Z3
ICAgcjYsICM0MjEyOAogICAgMHhiNmYwODY3MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMDg2NzY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwODY3ODogICAgbW92ICAgIHIw
LCByNwogICAgMHhiNmYwODY3YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDg2
N2M6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA4NjdlOiAgICBtb3Z3ICAgcjEy
LCAjNTgyNjUKICAgIDB4YjZmMDg2ODI6ICAgIG1vdnQgICByMTIsICM0NjgwNwogICAgMHhiNmYw
ODY4NjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwODY4ODogICAgbW92ICAgIGxyLCByMwogICAg
MHhiNmYwODY4YTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDg2OGU6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4NjkyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZm
MDg2OTQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDg2OTY6ICAgIGJuZSAgICAweGI2ZjA4
NmEwCiAgICAweGI2ZjA4Njk4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA4NjlhOiAgICBw
b3AgICAge3I3LCBscn0KICAgIDB4YjZmMDg2OWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwODZh
MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDg2YTQ6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjA4NmE4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDg2YWE6ICAg
IG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDg2YWM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAw
eGI2ZjA4NmIwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwODZiNDogICAgYmx4ICAg
IHIzCiAgICAweGI2ZjA4NmI2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwODZiYTog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDg2YmU6ICAgIGxkciAgICByMSwgW3I2XQog
ICAgMHhiNmYwODZjMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENU
SSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDg2ZTEsIDB4YjZmMDg3NjEpOgogICAg
MHhiNmYwODZlMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA4NmU0OiAgICBtb3YgICAg
cjcsIHNwCiAgICAweGI2ZjA4NmU2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwODZlYTog
ICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDg2ZWU6ICAgIG1vdncgICByNiwgIzQy
MTI4CiAgICAweGI2ZjA4NmYyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODZmNjog
ICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA4NmY4OiAgICBtb3YgICAgcjAsIHI3CiAgICAw
eGI2ZjA4NmZhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwODZmYzogICAgbGRy
ICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDg2ZmU6ICAgIG1vdncgICByMTIsICM5NDU3CiAg
ICAweGI2ZjA4NzAyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MDAKICAgIDB4YjZmMDg3MDY6ICAgIGJs
eCAgICByMTIKICAgIDB4YjZmMDg3MDg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDg3MGE6
ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA4NzBlOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwODcxMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA4NzE0OiAgICBj
bXAgICAgcjIsICMwCiAgICAweGI2ZjA4NzE2OiAgICBibmUgICAgMHhiNmYwODcyMAogICAgMHhi
NmYwODcxODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwODcxYTogICAgcG9wICAgIHtyNywg
bHJ9CiAgICAweGI2ZjA4NzFlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDg3MjA6ICAgIG1vdncg
ICByNiwgIzQyMTI4CiAgICAweGI2ZjA4NzI0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwODcyODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA4NzJhOiAgICBtb3YgICAgcjAs
IHI3CiAgICAweGI2ZjA4NzJjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwODczMDog
ICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDg3MzQ6ICAgIGJseCAgICByMwogICAgMHhi
NmYwODczNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDg3M2E6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjA4NzNlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDg3
NDA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNh
bGw6CiAgICBDb2RlIGF0IFsweGI2ZjA4NzYxLCAweGI2ZjA4N2UxKToKICAgIDB4YjZmMDg3NjA6
ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwODc2NDogICAgbW92ICAgIHI3LCBzcAogICAg
MHhiNmYwODc2NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDg3NmE6ICAgIHN0ciAgICBy
MTIsIFtyNywgIzhdCiAgICAweGI2ZjA4NzZlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhi
NmYwODc3MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDg3NzY6ICAgIHN0ciAgICBy
NywgW3I2XQogICAgMHhiNmYwODc3ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwODc3YTog
ICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDg3N2M6ICAgIGxkciAgICByMiwgW3Ix
LCAjMjBdCiAgICAweGI2ZjA4NzdlOiAgICBtb3Z3ICAgcjEyLCAjOTkzNwogICAgMHhiNmYwODc4
MjogICAgbW92dCAgIHIxMiwgIzQ2ODAwCiAgICAweGI2ZjA4Nzg2OiAgICBibHggICAgcjEyCiAg
ICAweGI2ZjA4Nzg4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA4NzhhOiAgICBtb3Z3ICAg
cjYsICM0NjM0OAogICAgMHhiNmYwODc4ZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZm
MDg3OTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwODc5NDogICAgY21wICAgIHIyLCAj
MAogICAgMHhiNmYwODc5NjogICAgYm5lICAgIDB4YjZmMDg3YTAKICAgIDB4YjZmMDg3OTg6ICAg
IG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDg3OWE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhi
NmYwODc5ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA4N2EwOiAgICBtb3Z3ICAgcjYsICM0MjEy
OAogICAgMHhiNmYwODdhNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDg3YTg6ICAg
IHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwODdhYTogICAgbW92ICAgIHIwLCByNwogICAgMHhi
NmYwODdhYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDg3YjA6ICAgIG1vdnQgICBy
MywgIzQ2Nzc2CiAgICAweGI2ZjA4N2I0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDg3YjY6ICAg
IG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA4N2JhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwODdiZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA4N2MwOiAgICBieCAg
ICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29k
ZSBhdCBbMHhiNmYwODdlMSwgMHhiNmYwODg2MSk6CiAgICAweGI2ZjA4N2UwOiAgICBwdXNoICAg
e3I3LCBscn0KICAgIDB4YjZmMDg3ZTQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDg3ZTY6
ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA4N2VhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4
XQogICAgMHhiNmYwODdlZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDg3ZjI6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4N2Y2OiAgICBzdHIgICAgcjcsIFtyNl0KICAg
IDB4YjZmMDg3Zjg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDg3ZmE6ICAgIGxkciAgICBy
MSwgW3I3LCAjMTZdCiAgICAweGI2ZjA4N2ZjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAg
MHhiNmYwODdmZTogICAgbW92dyAgIHIxMiwgIzI2Mjg1CiAgICAweGI2ZjA4ODAyOiAgICBtb3Z0
ICAgcjEyLCAjNDY4MDMKICAgIDB4YjZmMDg4MDY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDg4
MDg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDg4MGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4
CiAgICAweGI2ZjA4ODBlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODgxMjogICAg
bGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA4ODE0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2
ZjA4ODE2OiAgICBibmUgICAgMHhiNmYwODgyMAogICAgMHhiNmYwODgxODogICAgbW92ICAgIHNw
LCByNwogICAgMHhiNmYwODgxYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA4ODFlOiAg
ICBieCAgICAgbHIKICAgIDB4YjZmMDg4MjA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2
ZjA4ODI0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODgyODogICAgc3RyICAgIHI3
LCBbcjZdCiAgICAweGI2ZjA4ODJhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA4ODJjOiAg
ICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwODgzMDogICAgbW92dCAgIHIzLCAjNDY3NzYK
ICAgIDB4YjZmMDg4MzQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwODgzNjogICAgbW92dyAgIHI2
LCAjNDYxODgKICAgIDB4YjZmMDg4M2E6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4
ODNlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDg4NDA6ICAgIGJ4ICAgICByMQpHZW5l
cmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2
ZjA4ODYxLCAweGI2ZjA4OGUxKToKICAgIDB4YjZmMDg4NjA6ICAgIHB1c2ggICB7cjcsIGxyfQog
ICAgMHhiNmYwODg2NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwODg2NjogICAgbW92ICAg
IHIxMiwgIzAKICAgIDB4YjZmMDg4NmE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2
ZjA4ODZlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwODg3MjogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDg4NzY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwODg3
ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwODg3YTogICAgbGRyICAgIHIxLCBbcjcsICMx
Nl0KICAgIDB4YjZmMDg4N2M6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA4ODdl
OiAgICBtb3Z3ICAgcjEyLCAjMjU2OTMKICAgIDB4YjZmMDg4ODI6ICAgIG1vdnQgICByMTIsICM0
NjgwMwogICAgMHhiNmYwODg4NjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwODg4ODogICAgbW92
ICAgIGxyLCByMwogICAgMHhiNmYwODg4YTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZm
MDg4OGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4ODkyOiAgICBsZHIgICAgcjYs
IFtyNl0KICAgIDB4YjZmMDg4OTQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDg4OTY6ICAg
IGJuZSAgICAweGI2ZjA4OGEwCiAgICAweGI2ZjA4ODk4OiAgICBtb3YgICAgc3AsIHI3CiAgICAw
eGI2ZjA4ODlhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDg4OWU6ICAgIGJ4ICAgICBs
cgogICAgMHhiNmYwODhhMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDg4YTQ6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4OGE4OiAgICBzdHIgICAgcjcsIFtyNl0KICAg
IDB4YjZmMDg4YWE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDg4YWM6ICAgIG1vdncgICBy
MywgIzYzMjQ5CiAgICAweGI2ZjA4OGIwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYw
ODhiNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA4OGI2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAog
ICAgMHhiNmYwODhiYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDg4YmU6ICAgIGxk
ciAgICByMSwgW3I2XQogICAgMHhiNmYwODhjMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQg
Y29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDg4ZTEsIDB4
YjZmMDg5NjEpOgogICAgMHhiNmYwODhlMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA4
OGU0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA4OGU2OiAgICBtb3YgICAgcjEyLCAjMAog
ICAgMHhiNmYwODhlYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDg4ZWU6ICAg
IG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA4OGYyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwODhmNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA4OGY4OiAgICBtb3Yg
ICAgcjAsIHI3CiAgICAweGI2ZjA4OGZhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhi
NmYwODhmYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDg4ZmU6ICAgIG1vdncg
ICByMTIsICMyNTk3NwogICAgMHhiNmYwODkwMjogICAgbW92dCAgIHIxMiwgIzQ2ODAzCiAgICAw
eGI2ZjA4OTA2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA4OTA4OiAgICBtb3YgICAgbHIsIHIz
CiAgICAweGI2ZjA4OTBhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwODkwZTogICAg
bW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDg5MTI6ICAgIGxkciAgICByNiwgW3I2XQogICAg
MHhiNmYwODkxNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwODkxNjogICAgYm5lICAgIDB4
YjZmMDg5MjAKICAgIDB4YjZmMDg5MTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDg5MWE6
ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwODkxZTogICAgYnggICAgIGxyCiAgICAweGI2
ZjA4OTIwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwODkyNDogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDg5Mjg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwODky
YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwODkyYzogICAgbW92dyAgIHIzLCAjNjMyNDkK
ICAgIDB4YjZmMDg5MzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA4OTM0OiAgICBi
bHggICAgcjMKICAgIDB4YjZmMDg5MzY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA4
OTNhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwODkzZTogICAgbGRyICAgIHIxLCBb
cjZdCiAgICAweGI2ZjA4OTQwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBK
SVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwODk2MSwgMHhiNmYwODllMSk6
CiAgICAweGI2ZjA4OTYwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDg5NjQ6ICAgIG1v
diAgICByNywgc3AKICAgIDB4YjZmMDg5NjY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA4
OTZhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwODk2ZTogICAgbW92dyAgIHI2
LCAjNDIxMjgKICAgIDB4YjZmMDg5NzI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4
OTc2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDg5Nzg6ICAgIG1vdiAgICByMCwgcjcK
ICAgIDB4YjZmMDg5N2E6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA4OTdjOiAg
ICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwODk3ZTogICAgbW92dyAgIHIxMiwgIzMx
ODY1CiAgICAweGI2ZjA4OTgyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MDMKICAgIDB4YjZmMDg5ODY6
ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDg5ODg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZm
MDg5OGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA4OThlOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwODk5MjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA4OTk0
OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA4OTk2OiAgICBibmUgICAgMHhiNmYwODlhMAog
ICAgMHhiNmYwODk5ODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwODk5YTogICAgcG9wICAg
IHtyNywgbHJ9CiAgICAweGI2ZjA4OTllOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDg5YTA6ICAg
IG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA4OWE0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwODlhODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA4OWFhOiAgICBtb3Yg
ICAgcjAsIHI3CiAgICAweGI2ZjA4OWFjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYw
ODliMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDg5YjQ6ICAgIGJseCAgICByMwog
ICAgMHhiNmYwODliNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDg5YmE6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4OWJlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4
YjZmMDg5YzA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0
aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA4OWUxLCAweGI2ZjA4YTYxKToKICAgIDB4YjZm
MDg5ZTA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwODllNDogICAgbW92ICAgIHI3LCBz
cAogICAgMHhiNmYwODllNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDg5ZWE6ICAgIHN0
ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA4OWVlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgMHhiNmYwODlmMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDg5ZjY6ICAgIHN0
ciAgICByNywgW3I2XQogICAgMHhiNmYwODlmODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYw
ODlmYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDg5ZmM6ICAgIGxkciAgICBy
MiwgW3IxLCAjMjBdCiAgICAweGI2ZjA4OWZlOiAgICBtb3Z3ICAgcjEyLCAjMzE1ODkKICAgIDB4
YjZmMDhhMDI6ICAgIG1vdnQgICByMTIsICM0NjgwMwogICAgMHhiNmYwOGEwNjogICAgYmx4ICAg
IHIxMgogICAgMHhiNmYwOGEwODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwOGEwYTogICAg
bW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDhhMGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAweGI2ZjA4YTEyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDhhMTQ6ICAgIGNtcCAg
ICByMiwgIzAKICAgIDB4YjZmMDhhMTY6ICAgIGJuZSAgICAweGI2ZjA4YTIwCiAgICAweGI2ZjA4
YTE4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA4YTFhOiAgICBwb3AgICAge3I3LCBscn0K
ICAgIDB4YjZmMDhhMWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwOGEyMDogICAgbW92dyAgIHI2
LCAjNDIxMjgKICAgIDB4YjZmMDhhMjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4
YTI4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDhhMmE6ICAgIG1vdiAgICByMCwgcjcK
ICAgIDB4YjZmMDhhMmM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA4YTMwOiAgICBt
b3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwOGEzNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA4
YTM2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwOGEzYTogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDhhM2U6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwOGE0MDog
ICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoK
ICAgIENvZGUgYXQgWzB4YjZmMDhhNjEsIDB4YjZmMDhhZTEpOgogICAgMHhiNmYwOGE2MDogICAg
cHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA4YTY0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2
ZjA4YTY2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwOGE2YTogICAgc3RyICAgIHIxMiwg
W3I3LCAjOF0KICAgIDB4YjZmMDhhNmU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA4
YTcyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOGE3NjogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAweGI2ZjA4YTc4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA4YTdhOiAgICBs
ZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwOGE3YzogICAgbGRyICAgIHIyLCBbcjEsICMy
MF0KICAgIDB4YjZmMDhhN2U6ICAgIG1vdncgICByMTIsICMzMzc5NwogICAgMHhiNmYwOGE4Mjog
ICAgbW92dCAgIHIxMiwgIzQ2ODAzCiAgICAweGI2ZjA4YTg2OiAgICBibHggICAgcjEyCiAgICAw
eGI2ZjA4YTg4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA4YThhOiAgICBtb3Z3ICAgcjYs
ICM0NjM0OAogICAgMHhiNmYwOGE4ZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDhh
OTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwOGE5NDogICAgY21wICAgIHIyLCAjMAog
ICAgMHhiNmYwOGE5NjogICAgYm5lICAgIDB4YjZmMDhhYTAKICAgIDB4YjZmMDhhOTg6ICAgIG1v
diAgICBzcCwgcjcKICAgIDB4YjZmMDhhOWE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYw
OGE5ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA4YWEwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgMHhiNmYwOGFhNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDhhYTg6ICAgIHN0
ciAgICByNywgW3I2XQogICAgMHhiNmYwOGFhYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYw
OGFhYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDhhYjA6ICAgIG1vdnQgICByMywg
IzQ2Nzc2CiAgICAweGI2ZjA4YWI0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDhhYjY6ICAgIG1v
dncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA4YWJhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwOGFiZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA4YWMwOiAgICBieCAgICAg
cjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBh
dCBbMHhiNmYwOGFlMSwgMHhiNmYwOGI2MSk6CiAgICAweGI2ZjA4YWUwOiAgICBwdXNoICAge3I3
LCBscn0KICAgIDB4YjZmMDhhZTQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDhhZTY6ICAg
IG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA4YWVhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQog
ICAgMHhiNmYwOGFlZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDhhZjI6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4YWY2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4
YjZmMDhhZjg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDhhZmE6ICAgIGxkciAgICByMSwg
W3I3LCAjMTZdCiAgICAweGI2ZjA4YWZjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhi
NmYwOGFmZTogICAgbW92dyAgIHIxMiwgIzMzNTIxCiAgICAweGI2ZjA4YjAyOiAgICBtb3Z0ICAg
cjEyLCAjNDY4MDMKICAgIDB4YjZmMDhiMDY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDhiMDg6
ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDhiMGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAg
ICAweGI2ZjA4YjBlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOGIxMjogICAgbGRy
ICAgIHI2LCBbcjZdCiAgICAweGI2ZjA4YjE0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA4
YjE2OiAgICBibmUgICAgMHhiNmYwOGIyMAogICAgMHhiNmYwOGIxODogICAgbW92ICAgIHNwLCBy
NwogICAgMHhiNmYwOGIxYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA4YjFlOiAgICBi
eCAgICAgbHIKICAgIDB4YjZmMDhiMjA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA4
YjI0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOGIyODogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAweGI2ZjA4YjJhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA4YjJjOiAgICBt
b3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwOGIzMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAg
IDB4YjZmMDhiMzQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwOGIzNjogICAgbW92dyAgIHI2LCAj
NDYxODgKICAgIDB4YjZmMDhiM2E6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4YjNl
OiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDhiNDA6ICAgIGJ4ICAgICByMQpHZW5lcmF0
ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA4
YjYxLCAweGI2ZjA4YmUxKToKICAgIDB4YjZmMDhiNjA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAg
MHhiNmYwOGI2NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwOGI2NjogICAgbW92ICAgIHIx
MiwgIzAKICAgIDB4YjZmMDhiNmE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA4
YjZlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwOGI3MjogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDhiNzY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwOGI3ODog
ICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwOGI3YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0K
ICAgIDB4YjZmMDhiN2M6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA4YjdlOiAg
ICBtb3Z3ICAgcjEyLCAjMzIxNDEKICAgIDB4YjZmMDhiODI6ICAgIG1vdnQgICByMTIsICM0Njgw
MwogICAgMHhiNmYwOGI4NjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwOGI4ODogICAgbW92ICAg
IGxyLCByMwogICAgMHhiNmYwOGI4YTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDhi
OGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4YjkyOiAgICBsZHIgICAgcjYsIFty
Nl0KICAgIDB4YjZmMDhiOTQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDhiOTY6ICAgIGJu
ZSAgICAweGI2ZjA4YmEwCiAgICAweGI2ZjA4Yjk4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2
ZjA4YjlhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDhiOWU6ICAgIGJ4ICAgICBscgog
ICAgMHhiNmYwOGJhMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDhiYTQ6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4YmE4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4
YjZmMDhiYWE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDhiYWM6ICAgIG1vdncgICByMywg
IzYzMjQ5CiAgICAweGI2ZjA4YmIwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwOGJi
NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA4YmI2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAg
MHhiNmYwOGJiYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDhiYmU6ICAgIGxkciAg
ICByMSwgW3I2XQogICAgMHhiNmYwOGJjMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29k
ZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDhiZTEsIDB4YjZm
MDhjNjEpOgogICAgMHhiNmYwOGJlMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA4YmU0
OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA4YmU2OiAgICBtb3YgICAgcjEyLCAjMAogICAg
MHhiNmYwOGJlYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDhiZWU6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA4YmYyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwOGJmNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA4YmY4OiAgICBtb3YgICAg
cjAsIHI3CiAgICAweGI2ZjA4YmZhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYw
OGJmYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDhiZmU6ICAgIG1vdncgICBy
MTIsICMzMjQxNwogICAgMHhiNmYwOGMwMjogICAgbW92dCAgIHIxMiwgIzQ2ODAzCiAgICAweGI2
ZjA4YzA2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA4YzA4OiAgICBtb3YgICAgbHIsIHIzCiAg
ICAweGI2ZjA4YzBhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwOGMwZTogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDhjMTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhi
NmYwOGMxNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwOGMxNjogICAgYm5lICAgIDB4YjZm
MDhjMjAKICAgIDB4YjZmMDhjMTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDhjMWE6ICAg
IHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwOGMxZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA4
YzIwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwOGMyNDogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDhjMjg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwOGMyYTog
ICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwOGMyYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAg
IDB4YjZmMDhjMzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA4YzM0OiAgICBibHgg
ICAgcjMKICAgIDB4YjZmMDhjMzY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA4YzNh
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOGMzZTogICAgbGRyICAgIHIxLCBbcjZd
CiAgICAweGI2ZjA4YzQwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQg
Q1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwOGM2MSwgMHhiNmYwOGNlMSk6CiAg
ICAweGI2ZjA4YzYwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDhjNjQ6ICAgIG1vdiAg
ICByNywgc3AKICAgIDB4YjZmMDhjNjY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA4YzZh
OiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwOGM2ZTogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgIDB4YjZmMDhjNzI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4Yzc2
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDhjNzg6ICAgIG1vdiAgICByMCwgcjcKICAg
IDB4YjZmMDhjN2E6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA4YzdjOiAgICBs
ZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwOGM3ZTogICAgbW92dyAgIHIxMiwgIzMzMjQ1
CiAgICAweGI2ZjA4YzgyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MDMKICAgIDB4YjZmMDhjODY6ICAg
IGJseCAgICByMTIKICAgIDB4YjZmMDhjODg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDhj
OGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA4YzhlOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgMHhiNmYwOGM5MjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA4Yzk0OiAg
ICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA4Yzk2OiAgICBibmUgICAgMHhiNmYwOGNhMAogICAg
MHhiNmYwOGM5ODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwOGM5YTogICAgcG9wICAgIHty
NywgbHJ9CiAgICAweGI2ZjA4YzllOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDhjYTA6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA4Y2E0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwOGNhODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA4Y2FhOiAgICBtb3YgICAg
cjAsIHI3CiAgICAweGI2ZjA4Y2FjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwOGNi
MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDhjYjQ6ICAgIGJseCAgICByMwogICAg
MHhiNmYwOGNiNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDhjYmE6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4Y2JlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZm
MDhjYzA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZl
IGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA4Y2UxLCAweGI2ZjA4ZDYxKToKICAgIDB4YjZmMDhj
ZTA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwOGNlNDogICAgbW92ICAgIHI3LCBzcAog
ICAgMHhiNmYwOGNlNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDhjZWE6ICAgIHN0ciAg
ICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA4Y2VlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAg
MHhiNmYwOGNmMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDhjZjY6ICAgIHN0ciAg
ICByNywgW3I2XQogICAgMHhiNmYwOGNmODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwOGNm
YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDhjZmM6ICAgIGxkciAgICByMiwg
W3IxLCAjMjBdCiAgICAweGI2ZjA4Y2ZlOiAgICBtb3Z3ICAgcjEyLCAjMjU0NDkKICAgIDB4YjZm
MDhkMDI6ICAgIG1vdnQgICByMTIsICM0NjgwMwogICAgMHhiNmYwOGQwNjogICAgYmx4ICAgIHIx
MgogICAgMHhiNmYwOGQwODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwOGQwYTogICAgbW92
dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDhkMGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAw
eGI2ZjA4ZDEyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDhkMTQ6ICAgIGNtcCAgICBy
MiwgIzAKICAgIDB4YjZmMDhkMTY6ICAgIGJuZSAgICAweGI2ZjA4ZDIwCiAgICAweGI2ZjA4ZDE4
OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA4ZDFhOiAgICBwb3AgICAge3I3LCBscn0KICAg
IDB4YjZmMDhkMWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwOGQyMDogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgIDB4YjZmMDhkMjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4ZDI4
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDhkMmE6ICAgIG1vdiAgICByMCwgcjcKICAg
IDB4YjZmMDhkMmM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA4ZDMwOiAgICBtb3Z0
ICAgcjMsICM0Njc3NgogICAgMHhiNmYwOGQzNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA4ZDM2
OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwOGQzYTogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDhkM2U6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwOGQ0MDogICAg
YnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAg
IENvZGUgYXQgWzB4YjZmMDhkNjEsIDB4YjZmMDhkZTEpOgogICAgMHhiNmYwOGQ2MDogICAgcHVz
aCAgIHtyNywgbHJ9CiAgICAweGI2ZjA4ZDY0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA4
ZDY2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwOGQ2YTogICAgc3RyICAgIHIxMiwgW3I3
LCAjOF0KICAgIDB4YjZmMDhkNmU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA4ZDcy
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOGQ3NjogICAgc3RyICAgIHI3LCBbcjZd
CiAgICAweGI2ZjA4ZDc4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA4ZDdhOiAgICBsZHIg
ICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwOGQ3YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0K
ICAgIDB4YjZmMDhkN2U6ICAgIG1vdncgICByMTIsICMzMjY5MwogICAgMHhiNmYwOGQ4MjogICAg
bW92dCAgIHIxMiwgIzQ2ODAzCiAgICAweGI2ZjA4ZDg2OiAgICBibHggICAgcjEyCiAgICAweGI2
ZjA4ZDg4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA4ZDhhOiAgICBtb3Z3ICAgcjYsICM0
NjM0OAogICAgMHhiNmYwOGQ4ZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDhkOTI6
ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwOGQ5NDogICAgY21wICAgIHIyLCAjMAogICAg
MHhiNmYwOGQ5NjogICAgYm5lICAgIDB4YjZmMDhkYTAKICAgIDB4YjZmMDhkOTg6ICAgIG1vdiAg
ICBzcCwgcjcKICAgIDB4YjZmMDhkOWE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwOGQ5
ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA4ZGEwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAg
MHhiNmYwOGRhNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDhkYTg6ICAgIHN0ciAg
ICByNywgW3I2XQogICAgMHhiNmYwOGRhYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwOGRh
YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDhkYjA6ICAgIG1vdnQgICByMywgIzQ2
Nzc2CiAgICAweGI2ZjA4ZGI0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDhkYjY6ICAgIG1vdncg
ICByNiwgIzQ2MTg4CiAgICAweGI2ZjA4ZGJhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwOGRiZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA4ZGMwOiAgICBieCAgICAgcjEK
R2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBb
MHhiNmYwOGRlMSwgMHhiNmYwOGU2MSk6CiAgICAweGI2ZjA4ZGUwOiAgICBwdXNoICAge3I3LCBs
cn0KICAgIDB4YjZmMDhkZTQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDhkZTY6ICAgIG1v
diAgICByMTIsICMwCiAgICAweGI2ZjA4ZGVhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAg
MHhiNmYwOGRlZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDhkZjI6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4ZGY2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZm
MDhkZjg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDhkZmE6ICAgIGxkciAgICByMSwgW3I3
LCAjMTZdCiAgICAweGI2ZjA4ZGZjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYw
OGRmZTogICAgbW92dyAgIHIxMiwgIzM0MDczCiAgICAweGI2ZjA4ZTAyOiAgICBtb3Z0ICAgcjEy
LCAjNDY4MDMKICAgIDB4YjZmMDhlMDY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDhlMDg6ICAg
IG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDhlMGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAw
eGI2ZjA4ZTBlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOGUxMjogICAgbGRyICAg
IHI2LCBbcjZdCiAgICAweGI2ZjA4ZTE0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA4ZTE2
OiAgICBibmUgICAgMHhiNmYwOGUyMAogICAgMHhiNmYwOGUxODogICAgbW92ICAgIHNwLCByNwog
ICAgMHhiNmYwOGUxYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA4ZTFlOiAgICBieCAg
ICAgbHIKICAgIDB4YjZmMDhlMjA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA4ZTI0
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOGUyODogICAgc3RyICAgIHI3LCBbcjZd
CiAgICAweGI2ZjA4ZTJhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA4ZTJjOiAgICBtb3Z3
ICAgcjMsICM2MzI0OQogICAgMHhiNmYwOGUzMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4
YjZmMDhlMzQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwOGUzNjogICAgbW92dyAgIHI2LCAjNDYx
ODgKICAgIDB4YjZmMDhlM2E6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4ZTNlOiAg
ICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDhlNDA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQg
SklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA4ZTYx
LCAweGI2ZjA4ZWUxKToKICAgIDB4YjZmMDhlNjA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhi
NmYwOGU2NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwOGU2NjogICAgbW92ICAgIHIxMiwg
IzAKICAgIDB4YjZmMDhlNmE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA4ZTZl
OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwOGU3MjogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDhlNzY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwOGU3ODogICAg
bW92ICAgIHIwLCByNwogICAgMHhiNmYwOGU3YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAg
IDB4YjZmMDhlN2M6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA4ZTdlOiAgICBt
b3Z3ICAgcjEyLCAjMzQzNDkKICAgIDB4YjZmMDhlODI6ICAgIG1vdnQgICByMTIsICM0NjgwMwog
ICAgMHhiNmYwOGU4NjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwOGU4ODogICAgbW92ICAgIGxy
LCByMwogICAgMHhiNmYwOGU4YTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDhlOGU6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4ZTkyOiAgICBsZHIgICAgcjYsIFtyNl0K
ICAgIDB4YjZmMDhlOTQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDhlOTY6ICAgIGJuZSAg
ICAweGI2ZjA4ZWEwCiAgICAweGI2ZjA4ZTk4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA4
ZTlhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDhlOWU6ICAgIGJ4ICAgICBscgogICAg
MHhiNmYwOGVhMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDhlYTQ6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4ZWE4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZm
MDhlYWE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDhlYWM6ICAgIG1vdncgICByMywgIzYz
MjQ5CiAgICAweGI2ZjA4ZWIwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwOGViNDog
ICAgYmx4ICAgIHIzCiAgICAweGI2ZjA4ZWI2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhi
NmYwOGViYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDhlYmU6ICAgIGxkciAgICBy
MSwgW3I2XQogICAgMHhiNmYwOGVjMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBm
b3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDhlZTEsIDB4YjZmMDhm
NjEpOgogICAgMHhiNmYwOGVlMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA4ZWU0OiAg
ICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA4ZWU2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhi
NmYwOGVlYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDhlZWU6ICAgIG1vdncg
ICByNiwgIzQyMTI4CiAgICAweGI2ZjA4ZWYyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwOGVmNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA4ZWY4OiAgICBtb3YgICAgcjAs
IHI3CiAgICAweGI2ZjA4ZWZhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwOGVm
YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDhlZmU6ICAgIG1vdncgICByMTIs
ICMzNDYyNQogICAgMHhiNmYwOGYwMjogICAgbW92dCAgIHIxMiwgIzQ2ODAzCiAgICAweGI2ZjA4
ZjA2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA4ZjA4OiAgICBtb3YgICAgbHIsIHIzCiAgICAw
eGI2ZjA4ZjBhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwOGYwZTogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMDhmMTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYw
OGYxNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwOGYxNjogICAgYm5lICAgIDB4YjZmMDhm
MjAKICAgIDB4YjZmMDhmMTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDhmMWE6ICAgIHBv
cCAgICB7cjcsIGxyfQogICAgMHhiNmYwOGYxZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA4ZjIw
OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwOGYyNDogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDhmMjg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwOGYyYTogICAg
bW92ICAgIHIwLCByNwogICAgMHhiNmYwOGYyYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4
YjZmMDhmMzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA4ZjM0OiAgICBibHggICAg
cjMKICAgIDB4YjZmMDhmMzY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA4ZjNhOiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOGYzZTogICAgbGRyICAgIHIxLCBbcjZdCiAg
ICAweGI2ZjA4ZjQwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJ
IG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwOGY2MSwgMHhiNmYwOGZlMSk6CiAgICAw
eGI2ZjA4ZjYwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDhmNjQ6ICAgIG1vdiAgICBy
Nywgc3AKICAgIDB4YjZmMDhmNjY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA4ZjZhOiAg
ICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwOGY2ZTogICAgbW92dyAgIHI2LCAjNDIx
MjgKICAgIDB4YjZmMDhmNzI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA4Zjc2OiAg
ICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDhmNzg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4
YjZmMDhmN2E6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA4ZjdjOiAgICBsZHIg
ICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwOGY3ZTogICAgbW92dyAgIHIxMiwgIzgzNDkKICAg
IDB4YjZmMDhmODI6ICAgIG1vdnQgICByMTIsICM0Njc5MQogICAgMHhiNmYwOGY4NjogICAgYmx4
ICAgIHIxMgogICAgMHhiNmYwOGY4ODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwOGY4YTog
ICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDhmOGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAweGI2ZjA4ZjkyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDhmOTQ6ICAgIGNt
cCAgICByMiwgIzAKICAgIDB4YjZmMDhmOTY6ICAgIGJuZSAgICAweGI2ZjA4ZmEwCiAgICAweGI2
ZjA4Zjk4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA4ZjlhOiAgICBwb3AgICAge3I3LCBs
cn0KICAgIDB4YjZmMDhmOWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwOGZhMDogICAgbW92dyAg
IHI2LCAjNDIxMjgKICAgIDB4YjZmMDhmYTQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjA4ZmE4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDhmYWE6ICAgIG1vdiAgICByMCwg
cjcKICAgIDB4YjZmMDhmYWM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA4ZmIwOiAg
ICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwOGZiNDogICAgYmx4ICAgIHIzCiAgICAweGI2
ZjA4ZmI2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwOGZiYTogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDhmYmU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwOGZj
MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2Fs
bDoKICAgIENvZGUgYXQgWzB4YjZmMGJmODEsIDB4YjZmMGMwMDEpOgogICAgMHhiNmYwYmY4MDog
ICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjBiZjg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAw
eGI2ZjBiZjg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwYmY4YTogICAgc3RyICAgIHIx
MiwgW3I3LCAjOF0KICAgIDB4YjZmMGJmOGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2
ZjBiZjkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYmY5NjogICAgc3RyICAgIHI3
LCBbcjZdCiAgICAweGI2ZjBiZjk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBiZjlhOiAg
ICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwYmY5YzogICAgbGRyICAgIHIyLCBbcjEs
ICMyMF0KICAgIDB4YjZmMGJmOWU6ICAgIG1vdncgICByMTIsICMyNjU4OQogICAgMHhiNmYwYmZh
MjogICAgbW92dCAgIHIxMiwgIzQ2ODAzCiAgICAweGI2ZjBiZmE2OiAgICBibHggICAgcjEyCiAg
ICAweGI2ZjBiZmE4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjBiZmFhOiAgICBtb3Z3ICAg
cjYsICM0NjM0OAogICAgMHhiNmYwYmZhZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZm
MGJmYjI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwYmZiNDogICAgY21wICAgIHIyLCAj
MAogICAgMHhiNmYwYmZiNjogICAgYm5lICAgIDB4YjZmMGJmYzAKICAgIDB4YjZmMGJmYjg6ICAg
IG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMGJmYmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhi
NmYwYmZiZTogICAgYnggICAgIGxyCiAgICAweGI2ZjBiZmMwOiAgICBtb3Z3ICAgcjYsICM0MjEy
OAogICAgMHhiNmYwYmZjNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGJmYzg6ICAg
IHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYmZjYTogICAgbW92ICAgIHIwLCByNwogICAgMHhi
NmYwYmZjYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMGJmZDA6ICAgIG1vdnQgICBy
MywgIzQ2Nzc2CiAgICAweGI2ZjBiZmQ0OiAgICBibHggICAgcjMKICAgIDB4YjZmMGJmZDY6ICAg
IG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjBiZmRhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwYmZkZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjBiZmUwOiAgICBieCAg
ICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29k
ZSBhdCBbMHhiNmYwYmYwMSwgMHhiNmYwYmY4MSk6CiAgICAweGI2ZjBiZjAwOiAgICBwdXNoICAg
e3I3LCBscn0KICAgIDB4YjZmMGJmMDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMGJmMDY6
ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjBiZjBhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4
XQogICAgMHhiNmYwYmYwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGJmMTI6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiZjE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAg
IDB4YjZmMGJmMTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGJmMWE6ICAgIGxkciAgICBy
MSwgW3I3LCAjMTZdCiAgICAweGI2ZjBiZjFjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAg
MHhiNmYwYmYxZTogICAgbW92dyAgIHIxMiwgIzMyOTY5CiAgICAweGI2ZjBiZjIyOiAgICBtb3Z0
ICAgcjEyLCAjNDY4MDMKICAgIDB4YjZmMGJmMjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMGJm
Mjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMGJmMmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4
CiAgICAweGI2ZjBiZjJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYmYzMjogICAg
bGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjBiZjM0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2
ZjBiZjM2OiAgICBibmUgICAgMHhiNmYwYmY0MAogICAgMHhiNmYwYmYzODogICAgbW92ICAgIHNw
LCByNwogICAgMHhiNmYwYmYzYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjBiZjNlOiAg
ICBieCAgICAgbHIKICAgIDB4YjZmMGJmNDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2
ZjBiZjQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYmY0ODogICAgc3RyICAgIHI3
LCBbcjZdCiAgICAweGI2ZjBiZjRhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBiZjRjOiAg
ICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwYmY1MDogICAgbW92dCAgIHIzLCAjNDY3NzYK
ICAgIDB4YjZmMGJmNTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwYmY1NjogICAgbW92dyAgIHI2
LCAjNDYxODgKICAgIDB4YjZmMGJmNWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBi
ZjVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMGJmNjA6ICAgIGJ4ICAgICByMQpHZW5l
cmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2
ZjBiZTgxLCAweGI2ZjBiZjAxKToKICAgIDB4YjZmMGJlODA6ICAgIHB1c2ggICB7cjcsIGxyfQog
ICAgMHhiNmYwYmU4NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwYmU4NjogICAgbW92ICAg
IHIxMiwgIzAKICAgIDB4YjZmMGJlOGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2
ZjBiZThlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYmU5MjogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMGJlOTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYmU5
ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYmU5YTogICAgbGRyICAgIHIxLCBbcjcsICMx
Nl0KICAgIDB4YjZmMGJlOWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjBiZTll
OiAgICBtb3Z3ICAgcjEyLCAjMTIwMTMKICAgIDB4YjZmMGJlYTI6ICAgIG1vdnQgICByMTIsICM0
Njc5MQogICAgMHhiNmYwYmVhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwYmVhODogICAgbW92
ICAgIGxyLCByMwogICAgMHhiNmYwYmVhYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZm
MGJlYWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiZWIyOiAgICBsZHIgICAgcjYs
IFtyNl0KICAgIDB4YjZmMGJlYjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMGJlYjY6ICAg
IGJuZSAgICAweGI2ZjBiZWMwCiAgICAweGI2ZjBiZWI4OiAgICBtb3YgICAgc3AsIHI3CiAgICAw
eGI2ZjBiZWJhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMGJlYmU6ICAgIGJ4ICAgICBs
cgogICAgMHhiNmYwYmVjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGJlYzQ6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiZWM4OiAgICBzdHIgICAgcjcsIFtyNl0KICAg
IDB4YjZmMGJlY2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGJlY2M6ICAgIG1vdncgICBy
MywgIzYzMjQ5CiAgICAweGI2ZjBiZWQwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYw
YmVkNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjBiZWQ2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAog
ICAgMHhiNmYwYmVkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGJlZGU6ICAgIGxk
ciAgICByMSwgW3I2XQogICAgMHhiNmYwYmVlMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQg
Y29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMGJlMDEsIDB4
YjZmMGJlODEpOgogICAgMHhiNmYwYmUwMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjBi
ZTA0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjBiZTA2OiAgICBtb3YgICAgcjEyLCAjMAog
ICAgMHhiNmYwYmUwYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMGJlMGU6ICAg
IG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBiZTEyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwYmUxNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBiZTE4OiAgICBtb3Yg
ICAgcjAsIHI3CiAgICAweGI2ZjBiZTFhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhi
NmYwYmUxYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMGJlMWU6ICAgIG1vdncg
ICByMTIsICMyNjYyMQogICAgMHhiNmYwYmUyMjogICAgbW92dCAgIHIxMiwgIzQ2NzkxCiAgICAw
eGI2ZjBiZTI2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjBiZTI4OiAgICBtb3YgICAgbHIsIHIz
CiAgICAweGI2ZjBiZTJhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwYmUyZTogICAg
bW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGJlMzI6ICAgIGxkciAgICByNiwgW3I2XQogICAg
MHhiNmYwYmUzNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwYmUzNjogICAgYm5lICAgIDB4
YjZmMGJlNDAKICAgIDB4YjZmMGJlMzg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMGJlM2E6
ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwYmUzZTogICAgYnggICAgIGxyCiAgICAweGI2
ZjBiZTQwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYmU0NDogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMGJlNDg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYmU0
YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYmU0YzogICAgbW92dyAgIHIzLCAjNjMyNDkK
ICAgIDB4YjZmMGJlNTA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjBiZTU0OiAgICBi
bHggICAgcjMKICAgIDB4YjZmMGJlNTY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjBi
ZTVhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYmU1ZTogICAgbGRyICAgIHIxLCBb
cjZdCiAgICAweGI2ZjBiZTYwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBK
SVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwYmQ4MSwgMHhiNmYwYmUwMSk6
CiAgICAweGI2ZjBiZDgwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMGJkODQ6ICAgIG1v
diAgICByNywgc3AKICAgIDB4YjZmMGJkODY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjBi
ZDhhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwYmQ4ZTogICAgbW92dyAgIHI2
LCAjNDIxMjgKICAgIDB4YjZmMGJkOTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBi
ZDk2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGJkOTg6ICAgIG1vdiAgICByMCwgcjcK
ICAgIDB4YjZmMGJkOWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjBiZDljOiAg
ICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwYmQ5ZTogICAgbW92dyAgIHIxMiwgIzE0
OTg5CiAgICAweGI2ZjBiZGEyOiAgICBtb3Z0ICAgcjEyLCAjNDY3OTEKICAgIDB4YjZmMGJkYTY6
ICAgIGJseCAgICByMTIKICAgIDB4YjZmMGJkYTg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZm
MGJkYWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjBiZGFlOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwYmRiMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjBiZGI0
OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjBiZGI2OiAgICBibmUgICAgMHhiNmYwYmRjMAog
ICAgMHhiNmYwYmRiODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwYmRiYTogICAgcG9wICAg
IHtyNywgbHJ9CiAgICAweGI2ZjBiZGJlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMGJkYzA6ICAg
IG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBiZGM0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwYmRjODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBiZGNhOiAgICBtb3Yg
ICAgcjAsIHI3CiAgICAweGI2ZjBiZGNjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYw
YmRkMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMGJkZDQ6ICAgIGJseCAgICByMwog
ICAgMHhiNmYwYmRkNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMGJkZGE6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiZGRlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4
YjZmMGJkZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0
aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjBiZDAxLCAweGI2ZjBiZDgxKToKICAgIDB4YjZm
MGJkMDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwYmQwNDogICAgbW92ICAgIHI3LCBz
cAogICAgMHhiNmYwYmQwNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMGJkMGE6ICAgIHN0
ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjBiZDBlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgMHhiNmYwYmQxMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGJkMTY6ICAgIHN0
ciAgICByNywgW3I2XQogICAgMHhiNmYwYmQxODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYw
YmQxYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMGJkMWM6ICAgIGxkciAgICBy
MiwgW3IxLCAjMjBdCiAgICAweGI2ZjBiZDFlOiAgICBtb3Z3ICAgcjEyLCAjNjExNjEKICAgIDB4
YjZmMGJkMjI6ICAgIG1vdnQgICByMTIsICM0Njc5MAogICAgMHhiNmYwYmQyNjogICAgYmx4ICAg
IHIxMgogICAgMHhiNmYwYmQyODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwYmQyYTogICAg
bW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMGJkMmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAweGI2ZjBiZDMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMGJkMzQ6ICAgIGNtcCAg
ICByMiwgIzAKICAgIDB4YjZmMGJkMzY6ICAgIGJuZSAgICAweGI2ZjBiZDQwCiAgICAweGI2ZjBi
ZDM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjBiZDNhOiAgICBwb3AgICAge3I3LCBscn0K
ICAgIDB4YjZmMGJkM2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwYmQ0MDogICAgbW92dyAgIHI2
LCAjNDIxMjgKICAgIDB4YjZmMGJkNDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBi
ZDQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGJkNGE6ICAgIG1vdiAgICByMCwgcjcK
ICAgIDB4YjZmMGJkNGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjBiZDUwOiAgICBt
b3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwYmQ1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjBi
ZDU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwYmQ1YTogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMGJkNWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwYmQ2MDog
ICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoK
ICAgIENvZGUgYXQgWzB4YjZmMGJjODEsIDB4YjZmMGJkMDEpOgogICAgMHhiNmYwYmM4MDogICAg
cHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjBiYzg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2
ZjBiYzg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwYmM4YTogICAgc3RyICAgIHIxMiwg
W3I3LCAjOF0KICAgIDB4YjZmMGJjOGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBi
YzkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYmM5NjogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAweGI2ZjBiYzk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBiYzlhOiAgICBs
ZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwYmM5YzogICAgbGRyICAgIHIyLCBbcjEsICMy
MF0KICAgIDB4YjZmMGJjOWU6ICAgIG1vdncgICByMTIsICM2MTg4OQogICAgMHhiNmYwYmNhMjog
ICAgbW92dCAgIHIxMiwgIzQ2NzkwCiAgICAweGI2ZjBiY2E2OiAgICBibHggICAgcjEyCiAgICAw
eGI2ZjBiY2E4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjBiY2FhOiAgICBtb3Z3ICAgcjYs
ICM0NjM0OAogICAgMHhiNmYwYmNhZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGJj
YjI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwYmNiNDogICAgY21wICAgIHIyLCAjMAog
ICAgMHhiNmYwYmNiNjogICAgYm5lICAgIDB4YjZmMGJjYzAKICAgIDB4YjZmMGJjYjg6ICAgIG1v
diAgICBzcCwgcjcKICAgIDB4YjZmMGJjYmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYw
YmNiZTogICAgYnggICAgIGxyCiAgICAweGI2ZjBiY2MwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgMHhiNmYwYmNjNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGJjYzg6ICAgIHN0
ciAgICByNywgW3I2XQogICAgMHhiNmYwYmNjYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYw
YmNjYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMGJjZDA6ICAgIG1vdnQgICByMywg
IzQ2Nzc2CiAgICAweGI2ZjBiY2Q0OiAgICBibHggICAgcjMKICAgIDB4YjZmMGJjZDY6ICAgIG1v
dncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjBiY2RhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwYmNkZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjBiY2UwOiAgICBieCAgICAg
cjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBh
dCBbMHhiNmYwYmMwMSwgMHhiNmYwYmM4MSk6CiAgICAweGI2ZjBiYzAwOiAgICBwdXNoICAge3I3
LCBscn0KICAgIDB4YjZmMGJjMDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMGJjMDY6ICAg
IG1vdiAgICByMTIsICMwCiAgICAweGI2ZjBiYzBhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQog
ICAgMHhiNmYwYmMwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGJjMTI6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiYzE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4
YjZmMGJjMTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGJjMWE6ICAgIGxkciAgICByMSwg
W3I3LCAjMTZdCiAgICAweGI2ZjBiYzFjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhi
NmYwYmMxZTogICAgbW92dyAgIHIxMiwgIzYxODg5CiAgICAweGI2ZjBiYzIyOiAgICBtb3Z0ICAg
cjEyLCAjNDY3OTAKICAgIDB4YjZmMGJjMjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMGJjMjg6
ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMGJjMmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAg
ICAweGI2ZjBiYzJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYmMzMjogICAgbGRy
ICAgIHI2LCBbcjZdCiAgICAweGI2ZjBiYzM0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjBi
YzM2OiAgICBibmUgICAgMHhiNmYwYmM0MAogICAgMHhiNmYwYmMzODogICAgbW92ICAgIHNwLCBy
NwogICAgMHhiNmYwYmMzYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjBiYzNlOiAgICBi
eCAgICAgbHIKICAgIDB4YjZmMGJjNDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBi
YzQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYmM0ODogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAweGI2ZjBiYzRhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBiYzRjOiAgICBt
b3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwYmM1MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAg
IDB4YjZmMGJjNTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwYmM1NjogICAgbW92dyAgIHI2LCAj
NDYxODgKICAgIDB4YjZmMGJjNWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiYzVl
OiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMGJjNjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0
ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjBi
YjgxLCAweGI2ZjBiYzAxKToKICAgIDB4YjZmMGJiODA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAg
MHhiNmYwYmI4NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwYmI4NjogICAgbW92ICAgIHIx
MiwgIzAKICAgIDB4YjZmMGJiOGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjBi
YjhlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYmI5MjogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMGJiOTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYmI5ODog
ICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYmI5YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0K
ICAgIDB4YjZmMGJiOWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjBiYjllOiAg
ICBtb3Z3ICAgcjEyLCAjNTgwMTMKICAgIDB4YjZmMGJiYTI6ICAgIG1vdnQgICByMTIsICM0Njc5
MAogICAgMHhiNmYwYmJhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwYmJhODogICAgbW92ICAg
IGxyLCByMwogICAgMHhiNmYwYmJhYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMGJi
YWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiYmIyOiAgICBsZHIgICAgcjYsIFty
Nl0KICAgIDB4YjZmMGJiYjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMGJiYjY6ICAgIGJu
ZSAgICAweGI2ZjBiYmMwCiAgICAweGI2ZjBiYmI4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2
ZjBiYmJhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMGJiYmU6ICAgIGJ4ICAgICBscgog
ICAgMHhiNmYwYmJjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGJiYzQ6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiYmM4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4
YjZmMGJiY2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGJiY2M6ICAgIG1vdncgICByMywg
IzYzMjQ5CiAgICAweGI2ZjBiYmQwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwYmJk
NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjBiYmQ2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAg
MHhiNmYwYmJkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGJiZGU6ICAgIGxkciAg
ICByMSwgW3I2XQogICAgMHhiNmYwYmJlMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29k
ZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMGJiMDEsIDB4YjZm
MGJiODEpOgogICAgMHhiNmYwYmIwMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjBiYjA0
OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjBiYjA2OiAgICBtb3YgICAgcjEyLCAjMAogICAg
MHhiNmYwYmIwYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMGJiMGU6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBiYjEyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwYmIxNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBiYjE4OiAgICBtb3YgICAg
cjAsIHI3CiAgICAweGI2ZjBiYjFhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYw
YmIxYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMGJiMWU6ICAgIG1vdncgICBy
MTIsICM2NDE0NQogICAgMHhiNmYwYmIyMjogICAgbW92dCAgIHIxMiwgIzQ2NzkwCiAgICAweGI2
ZjBiYjI2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjBiYjI4OiAgICBtb3YgICAgbHIsIHIzCiAg
ICAweGI2ZjBiYjJhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwYmIyZTogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGJiMzI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhi
NmYwYmIzNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwYmIzNjogICAgYm5lICAgIDB4YjZm
MGJiNDAKICAgIDB4YjZmMGJiMzg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMGJiM2E6ICAg
IHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwYmIzZTogICAgYnggICAgIGxyCiAgICAweGI2ZjBi
YjQwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYmI0NDogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMGJiNDg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYmI0YTog
ICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYmI0YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAg
IDB4YjZmMGJiNTA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjBiYjU0OiAgICBibHgg
ICAgcjMKICAgIDB4YjZmMGJiNTY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjBiYjVh
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYmI1ZTogICAgbGRyICAgIHIxLCBbcjZd
CiAgICAweGI2ZjBiYjYwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQg
Q1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwYmE4MSwgMHhiNmYwYmIwMSk6CiAg
ICAweGI2ZjBiYTgwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMGJhODQ6ICAgIG1vdiAg
ICByNywgc3AKICAgIDB4YjZmMGJhODY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjBiYThh
OiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwYmE4ZTogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgIDB4YjZmMGJhOTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiYTk2
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGJhOTg6ICAgIG1vdiAgICByMCwgcjcKICAg
IDB4YjZmMGJhOWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjBiYTljOiAgICBs
ZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwYmE5ZTogICAgbW92dyAgIHIxMiwgIzY0MTQ1
CiAgICAweGI2ZjBiYWEyOiAgICBtb3Z0ICAgcjEyLCAjNDY3OTAKICAgIDB4YjZmMGJhYTY6ICAg
IGJseCAgICByMTIKICAgIDB4YjZmMGJhYTg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMGJh
YWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjBiYWFlOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgMHhiNmYwYmFiMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjBiYWI0OiAg
ICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjBiYWI2OiAgICBibmUgICAgMHhiNmYwYmFjMAogICAg
MHhiNmYwYmFiODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwYmFiYTogICAgcG9wICAgIHty
NywgbHJ9CiAgICAweGI2ZjBiYWJlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMGJhYzA6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBiYWM0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwYmFjODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBiYWNhOiAgICBtb3YgICAg
cjAsIHI3CiAgICAweGI2ZjBiYWNjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwYmFk
MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMGJhZDQ6ICAgIGJseCAgICByMwogICAg
MHhiNmYwYmFkNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMGJhZGE6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiYWRlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZm
MGJhZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZl
IGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjBiYTAxLCAweGI2ZjBiYTgxKToKICAgIDB4YjZmMGJh
MDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwYmEwNDogICAgbW92ICAgIHI3LCBzcAog
ICAgMHhiNmYwYmEwNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMGJhMGE6ICAgIHN0ciAg
ICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjBiYTBlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAg
MHhiNmYwYmExMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGJhMTY6ICAgIHN0ciAg
ICByNywgW3I2XQogICAgMHhiNmYwYmExODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYmEx
YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMGJhMWM6ICAgIGxkciAgICByMiwg
W3IxLCAjMjBdCiAgICAweGI2ZjBiYTFlOiAgICBtb3Z3ICAgcjEyLCAjMTU4MzMKICAgIDB4YjZm
MGJhMjI6ICAgIG1vdnQgICByMTIsICM0Njc5MQogICAgMHhiNmYwYmEyNjogICAgYmx4ICAgIHIx
MgogICAgMHhiNmYwYmEyODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwYmEyYTogICAgbW92
dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMGJhMmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAw
eGI2ZjBiYTMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMGJhMzQ6ICAgIGNtcCAgICBy
MiwgIzAKICAgIDB4YjZmMGJhMzY6ICAgIGJuZSAgICAweGI2ZjBiYTQwCiAgICAweGI2ZjBiYTM4
OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjBiYTNhOiAgICBwb3AgICAge3I3LCBscn0KICAg
IDB4YjZmMGJhM2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwYmE0MDogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgIDB4YjZmMGJhNDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiYTQ4
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGJhNGE6ICAgIG1vdiAgICByMCwgcjcKICAg
IDB4YjZmMGJhNGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjBiYTUwOiAgICBtb3Z0
ICAgcjMsICM0Njc3NgogICAgMHhiNmYwYmE1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjBiYTU2
OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwYmE1YTogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMGJhNWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwYmE2MDogICAg
YnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAg
IENvZGUgYXQgWzB4YjZmMGI5ODEsIDB4YjZmMGJhMDEpOgogICAgMHhiNmYwYjk4MDogICAgcHVz
aCAgIHtyNywgbHJ9CiAgICAweGI2ZjBiOTg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjBi
OTg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwYjk4YTogICAgc3RyICAgIHIxMiwgW3I3
LCAjOF0KICAgIDB4YjZmMGI5OGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBiOTky
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYjk5NjogICAgc3RyICAgIHI3LCBbcjZd
CiAgICAweGI2ZjBiOTk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBiOTlhOiAgICBsZHIg
ICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwYjk5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0K
ICAgIDB4YjZmMGI5OWU6ICAgIG1vdncgICByMTIsICMxOTQwNQogICAgMHhiNmYwYjlhMjogICAg
bW92dCAgIHIxMiwgIzQ2NzkxCiAgICAweGI2ZjBiOWE2OiAgICBibHggICAgcjEyCiAgICAweGI2
ZjBiOWE4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjBiOWFhOiAgICBtb3Z3ICAgcjYsICM0
NjM0OAogICAgMHhiNmYwYjlhZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGI5YjI6
ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwYjliNDogICAgY21wICAgIHIyLCAjMAogICAg
MHhiNmYwYjliNjogICAgYm5lICAgIDB4YjZmMGI5YzAKICAgIDB4YjZmMGI5Yjg6ICAgIG1vdiAg
ICBzcCwgcjcKICAgIDB4YjZmMGI5YmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwYjli
ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjBiOWMwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAg
MHhiNmYwYjljNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGI5Yzg6ICAgIHN0ciAg
ICByNywgW3I2XQogICAgMHhiNmYwYjljYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYjlj
YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMGI5ZDA6ICAgIG1vdnQgICByMywgIzQ2
Nzc2CiAgICAweGI2ZjBiOWQ0OiAgICBibHggICAgcjMKICAgIDB4YjZmMGI5ZDY6ICAgIG1vdncg
ICByNiwgIzQ2MTg4CiAgICAweGI2ZjBiOWRhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwYjlkZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjBiOWUwOiAgICBieCAgICAgcjEK
R2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBb
MHhiNmYwYjkwMSwgMHhiNmYwYjk4MSk6CiAgICAweGI2ZjBiOTAwOiAgICBwdXNoICAge3I3LCBs
cn0KICAgIDB4YjZmMGI5MDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMGI5MDY6ICAgIG1v
diAgICByMTIsICMwCiAgICAweGI2ZjBiOTBhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAg
MHhiNmYwYjkwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGI5MTI6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiOTE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZm
MGI5MTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGI5MWE6ICAgIGxkciAgICByMSwgW3I3
LCAjMTZdCiAgICAweGI2ZjBiOTFjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYw
YjkxZTogICAgbW92dyAgIHIxMiwgIzY0ODAxCiAgICAweGI2ZjBiOTIyOiAgICBtb3Z0ICAgcjEy
LCAjNDY3OTAKICAgIDB4YjZmMGI5MjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMGI5Mjg6ICAg
IG1vdiAgICBsciwgcjMKICAgIDB4YjZmMGI5MmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAw
eGI2ZjBiOTJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYjkzMjogICAgbGRyICAg
IHI2LCBbcjZdCiAgICAweGI2ZjBiOTM0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjBiOTM2
OiAgICBibmUgICAgMHhiNmYwYjk0MAogICAgMHhiNmYwYjkzODogICAgbW92ICAgIHNwLCByNwog
ICAgMHhiNmYwYjkzYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjBiOTNlOiAgICBieCAg
ICAgbHIKICAgIDB4YjZmMGI5NDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBiOTQ0
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYjk0ODogICAgc3RyICAgIHI3LCBbcjZd
CiAgICAweGI2ZjBiOTRhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBiOTRjOiAgICBtb3Z3
ICAgcjMsICM2MzI0OQogICAgMHhiNmYwYjk1MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4
YjZmMGI5NTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwYjk1NjogICAgbW92dyAgIHI2LCAjNDYx
ODgKICAgIDB4YjZmMGI5NWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiOTVlOiAg
ICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMGI5NjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQg
SklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjBiODgx
LCAweGI2ZjBiOTAxKToKICAgIDB4YjZmMGI4ODA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhi
NmYwYjg4NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwYjg4NjogICAgbW92ICAgIHIxMiwg
IzAKICAgIDB4YjZmMGI4OGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjBiODhl
OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYjg5MjogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMGI4OTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYjg5ODogICAg
bW92ICAgIHIwLCByNwogICAgMHhiNmYwYjg5YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAg
IDB4YjZmMGI4OWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjBiODllOiAgICBt
b3Z3ICAgcjEyLCAjNTkxNjUKICAgIDB4YjZmMGI4YTI6ICAgIG1vdnQgICByMTIsICM0Njc5MAog
ICAgMHhiNmYwYjhhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwYjhhODogICAgbW92ICAgIGxy
LCByMwogICAgMHhiNmYwYjhhYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMGI4YWU6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiOGIyOiAgICBsZHIgICAgcjYsIFtyNl0K
ICAgIDB4YjZmMGI4YjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMGI4YjY6ICAgIGJuZSAg
ICAweGI2ZjBiOGMwCiAgICAweGI2ZjBiOGI4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjBi
OGJhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMGI4YmU6ICAgIGJ4ICAgICBscgogICAg
MHhiNmYwYjhjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGI4YzQ6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiOGM4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZm
MGI4Y2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGI4Y2M6ICAgIG1vdncgICByMywgIzYz
MjQ5CiAgICAweGI2ZjBiOGQwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwYjhkNDog
ICAgYmx4ICAgIHIzCiAgICAweGI2ZjBiOGQ2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhi
NmYwYjhkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGI4ZGU6ICAgIGxkciAgICBy
MSwgW3I2XQogICAgMHhiNmYwYjhlMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBm
b3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMGI4MDEsIDB4YjZmMGI4
ODEpOgogICAgMHhiNmYwYjgwMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjBiODA0OiAg
ICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjBiODA2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhi
NmYwYjgwYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMGI4MGU6ICAgIG1vdncg
ICByNiwgIzQyMTI4CiAgICAweGI2ZjBiODEyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwYjgxNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBiODE4OiAgICBtb3YgICAgcjAs
IHI3CiAgICAweGI2ZjBiODFhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwYjgx
YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMGI4MWU6ICAgIG1vdncgICByMTIs
ICM2MDA5NwogICAgMHhiNmYwYjgyMjogICAgbW92dCAgIHIxMiwgIzQ2NzkwCiAgICAweGI2ZjBi
ODI2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjBiODI4OiAgICBtb3YgICAgbHIsIHIzCiAgICAw
eGI2ZjBiODJhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwYjgyZTogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMGI4MzI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYw
YjgzNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwYjgzNjogICAgYm5lICAgIDB4YjZmMGI4
NDAKICAgIDB4YjZmMGI4Mzg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMGI4M2E6ICAgIHBv
cCAgICB7cjcsIGxyfQogICAgMHhiNmYwYjgzZTogICAgYnggICAgIGxyCiAgICAweGI2ZjBiODQw
OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYjg0NDogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMGI4NDg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYjg0YTogICAg
bW92ICAgIHIwLCByNwogICAgMHhiNmYwYjg0YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4
YjZmMGI4NTA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjBiODU0OiAgICBibHggICAg
cjMKICAgIDB4YjZmMGI4NTY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjBiODVhOiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYjg1ZTogICAgbGRyICAgIHIxLCBbcjZdCiAg
ICAweGI2ZjBiODYwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJ
IG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwYjc4MSwgMHhiNmYwYjgwMSk6CiAgICAw
eGI2ZjBiNzgwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMGI3ODQ6ICAgIG1vdiAgICBy
Nywgc3AKICAgIDB4YjZmMGI3ODY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjBiNzhhOiAg
ICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwYjc4ZTogICAgbW92dyAgIHI2LCAjNDIx
MjgKICAgIDB4YjZmMGI3OTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiNzk2OiAg
ICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGI3OTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4
YjZmMGI3OWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjBiNzljOiAgICBsZHIg
ICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwYjc5ZTogICAgbW92dyAgIHIxMiwgIzU3NDk3CiAg
ICAweGI2ZjBiN2EyOiAgICBtb3Z0ICAgcjEyLCAjNDY3OTAKICAgIDB4YjZmMGI3YTY6ICAgIGJs
eCAgICByMTIKICAgIDB4YjZmMGI3YTg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMGI3YWE6
ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjBiN2FlOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwYjdiMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjBiN2I0OiAgICBj
bXAgICAgcjIsICMwCiAgICAweGI2ZjBiN2I2OiAgICBibmUgICAgMHhiNmYwYjdjMAogICAgMHhi
NmYwYjdiODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwYjdiYTogICAgcG9wICAgIHtyNywg
bHJ9CiAgICAweGI2ZjBiN2JlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMGI3YzA6ICAgIG1vdncg
ICByNiwgIzQyMTI4CiAgICAweGI2ZjBiN2M0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwYjdjODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBiN2NhOiAgICBtb3YgICAgcjAs
IHI3CiAgICAweGI2ZjBiN2NjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwYjdkMDog
ICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMGI3ZDQ6ICAgIGJseCAgICByMwogICAgMHhi
NmYwYjdkNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMGI3ZGE6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjBiN2RlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMGI3
ZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNh
bGw6CiAgICBDb2RlIGF0IFsweGI2ZjBiNzAxLCAweGI2ZjBiNzgxKToKICAgIDB4YjZmMGI3MDA6
ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwYjcwNDogICAgbW92ICAgIHI3LCBzcAogICAg
MHhiNmYwYjcwNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMGI3MGE6ICAgIHN0ciAgICBy
MTIsIFtyNywgIzhdCiAgICAweGI2ZjBiNzBlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhi
NmYwYjcxMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGI3MTY6ICAgIHN0ciAgICBy
NywgW3I2XQogICAgMHhiNmYwYjcxODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYjcxYTog
ICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMGI3MWM6ICAgIGxkciAgICByMiwgW3Ix
LCAjMjBdCiAgICAweGI2ZjBiNzFlOiAgICBtb3Z3ICAgcjEyLCAjNTc3NTcKICAgIDB4YjZmMGI3
MjI6ICAgIG1vdnQgICByMTIsICM0Njc5MAogICAgMHhiNmYwYjcyNjogICAgYmx4ICAgIHIxMgog
ICAgMHhiNmYwYjcyODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwYjcyYTogICAgbW92dyAg
IHI2LCAjNDYzNDgKICAgIDB4YjZmMGI3MmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjBiNzMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMGI3MzQ6ICAgIGNtcCAgICByMiwg
IzAKICAgIDB4YjZmMGI3MzY6ICAgIGJuZSAgICAweGI2ZjBiNzQwCiAgICAweGI2ZjBiNzM4OiAg
ICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjBiNzNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4
YjZmMGI3M2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwYjc0MDogICAgbW92dyAgIHI2LCAjNDIx
MjgKICAgIDB4YjZmMGI3NDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiNzQ4OiAg
ICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGI3NGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4
YjZmMGI3NGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjBiNzUwOiAgICBtb3Z0ICAg
cjMsICM0Njc3NgogICAgMHhiNmYwYjc1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjBiNzU2OiAg
ICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwYjc1YTogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgIDB4YjZmMGI3NWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwYjc2MDogICAgYngg
ICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENv
ZGUgYXQgWzB4YjZmMGI2ODEsIDB4YjZmMGI3MDEpOgogICAgMHhiNmYwYjY4MDogICAgcHVzaCAg
IHtyNywgbHJ9CiAgICAweGI2ZjBiNjg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjBiNjg2
OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwYjY4YTogICAgc3RyICAgIHIxMiwgW3I3LCAj
OF0KICAgIDB4YjZmMGI2OGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBiNjkyOiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYjY5NjogICAgc3RyICAgIHI3LCBbcjZdCiAg
ICAweGI2ZjBiNjk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBiNjlhOiAgICBsZHIgICAg
cjEsIFtyNywgIzE2XQogICAgMHhiNmYwYjY5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAg
IDB4YjZmMGI2OWU6ICAgIG1vdncgICByMTIsICMxMjkyMQogICAgMHhiNmYwYjZhMjogICAgbW92
dCAgIHIxMiwgIzQ2ODEwCiAgICAweGI2ZjBiNmE2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjBi
NmE4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjBiNmFhOiAgICBtb3Z3ICAgcjYsICM0NjM0
OAogICAgMHhiNmYwYjZhZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGI2YjI6ICAg
IGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwYjZiNDogICAgY21wICAgIHIyLCAjMAogICAgMHhi
NmYwYjZiNjogICAgYm5lICAgIDB4YjZmMGI2YzAKICAgIDB4YjZmMGI2Yjg6ICAgIG1vdiAgICBz
cCwgcjcKICAgIDB4YjZmMGI2YmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwYjZiZTog
ICAgYnggICAgIGxyCiAgICAweGI2ZjBiNmMwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhi
NmYwYjZjNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGI2Yzg6ICAgIHN0ciAgICBy
NywgW3I2XQogICAgMHhiNmYwYjZjYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYjZjYzog
ICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMGI2ZDA6ICAgIG1vdnQgICByMywgIzQ2Nzc2
CiAgICAweGI2ZjBiNmQ0OiAgICBibHggICAgcjMKICAgIDB4YjZmMGI2ZDY6ICAgIG1vdncgICBy
NiwgIzQ2MTg4CiAgICAweGI2ZjBiNmRhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYw
YjZkZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjBiNmUwOiAgICBieCAgICAgcjEKR2Vu
ZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhi
NmYwYjYwMSwgMHhiNmYwYjY4MSk6CiAgICAweGI2ZjBiNjAwOiAgICBwdXNoICAge3I3LCBscn0K
ICAgIDB4YjZmMGI2MDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMGI2MDY6ICAgIG1vdiAg
ICByMTIsICMwCiAgICAweGI2ZjBiNjBhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhi
NmYwYjYwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGI2MTI6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjBiNjE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGI2
MTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGI2MWE6ICAgIGxkciAgICByMSwgW3I3LCAj
MTZdCiAgICAweGI2ZjBiNjFjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwYjYx
ZTogICAgbW92dyAgIHIxMiwgIzc2NjkKICAgIDB4YjZmMGI2MjI6ICAgIG1vdnQgICByMTIsICM0
NjgxMAogICAgMHhiNmYwYjYyNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwYjYyODogICAgbW92
ICAgIGxyLCByMwogICAgMHhiNmYwYjYyYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZm
MGI2MmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiNjMyOiAgICBsZHIgICAgcjYs
IFtyNl0KICAgIDB4YjZmMGI2MzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMGI2MzY6ICAg
IGJuZSAgICAweGI2ZjBiNjQwCiAgICAweGI2ZjBiNjM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAw
eGI2ZjBiNjNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMGI2M2U6ICAgIGJ4ICAgICBs
cgogICAgMHhiNmYwYjY0MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGI2NDQ6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiNjQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAg
IDB4YjZmMGI2NGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGI2NGM6ICAgIG1vdncgICBy
MywgIzYzMjQ5CiAgICAweGI2ZjBiNjUwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYw
YjY1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjBiNjU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAog
ICAgMHhiNmYwYjY1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGI2NWU6ICAgIGxk
ciAgICByMSwgW3I2XQogICAgMHhiNmYwYjY2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQg
Y29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMGI1ODEsIDB4
YjZmMGI2MDEpOgogICAgMHhiNmYwYjU4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjBi
NTg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjBiNTg2OiAgICBtb3YgICAgcjEyLCAjMAog
ICAgMHhiNmYwYjU4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMGI1OGU6ICAg
IG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBiNTkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwYjU5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBiNTk4OiAgICBtb3Yg
ICAgcjAsIHI3CiAgICAweGI2ZjBiNTlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhi
NmYwYjU5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMGI1OWU6ICAgIG1vdncg
ICByMTIsICM3NDQ1CiAgICAweGI2ZjBiNWEyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MTAKICAgIDB4
YjZmMGI1YTY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMGI1YTg6ICAgIG1vdiAgICBsciwgcjMK
ICAgIDB4YjZmMGI1YWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjBiNWFlOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYjViMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAw
eGI2ZjBiNWI0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjBiNWI2OiAgICBibmUgICAgMHhi
NmYwYjVjMAogICAgMHhiNmYwYjViODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwYjViYTog
ICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjBiNWJlOiAgICBieCAgICAgbHIKICAgIDB4YjZm
MGI1YzA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBiNWM0OiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwYjVjODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBiNWNh
OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBiNWNjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQog
ICAgMHhiNmYwYjVkMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMGI1ZDQ6ICAgIGJs
eCAgICByMwogICAgMHhiNmYwYjVkNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMGI1
ZGE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiNWRlOiAgICBsZHIgICAgcjEsIFty
Nl0KICAgIDB4YjZmMGI1ZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJ
VCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjBiNTAxLCAweGI2ZjBiNTgxKToK
ICAgIDB4YjZmMGI1MDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwYjUwNDogICAgbW92
ICAgIHI3LCBzcAogICAgMHhiNmYwYjUwNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMGI1
MGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjBiNTBlOiAgICBtb3Z3ICAgcjYs
ICM0MjEyOAogICAgMHhiNmYwYjUxMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGI1
MTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYjUxODogICAgbW92ICAgIHIwLCByNwog
ICAgMHhiNmYwYjUxYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMGI1MWM6ICAg
IGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjBiNTFlOiAgICBtb3Z3ICAgcjEyLCAjMjEz
NDEKICAgIDB4YjZmMGI1MjI6ICAgIG1vdnQgICByMTIsICM0NjgxMAogICAgMHhiNmYwYjUyNjog
ICAgYmx4ICAgIHIxMgogICAgMHhiNmYwYjUyODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYw
YjUyYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMGI1MmU6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjBiNTMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMGI1MzQ6
ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMGI1MzY6ICAgIGJuZSAgICAweGI2ZjBiNTQwCiAg
ICAweGI2ZjBiNTM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjBiNTNhOiAgICBwb3AgICAg
e3I3LCBscn0KICAgIDB4YjZmMGI1M2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwYjU0MDogICAg
bW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGI1NDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAweGI2ZjBiNTQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGI1NGE6ICAgIG1vdiAg
ICByMCwgcjcKICAgIDB4YjZmMGI1NGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjBi
NTUwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwYjU1NDogICAgYmx4ICAgIHIzCiAg
ICAweGI2ZjBiNTU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwYjU1YTogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGI1NWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhi
NmYwYjU2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRp
dmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMGI0ODEsIDB4YjZmMGI1MDEpOgogICAgMHhiNmYw
YjQ4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjBiNDg0OiAgICBtb3YgICAgcjcsIHNw
CiAgICAweGI2ZjBiNDg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwYjQ4YTogICAgc3Ry
ICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMGI0OGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAg
ICAweGI2ZjBiNDkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYjQ5NjogICAgc3Ry
ICAgIHI3LCBbcjZdCiAgICAweGI2ZjBiNDk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBi
NDlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwYjQ5YzogICAgbGRyICAgIHIy
LCBbcjEsICMyMF0KICAgIDB4YjZmMGI0OWU6ICAgIG1vdncgICByMTIsICM4MTYxCiAgICAweGI2
ZjBiNGEyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MTAKICAgIDB4YjZmMGI0YTY6ICAgIGJseCAgICBy
MTIKICAgIDB4YjZmMGI0YTg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMGI0YWE6ICAgIG1v
dncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjBiNGFlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwYjRiMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjBiNGI0OiAgICBjbXAgICAg
cjIsICMwCiAgICAweGI2ZjBiNGI2OiAgICBibmUgICAgMHhiNmYwYjRjMAogICAgMHhiNmYwYjRi
ODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwYjRiYTogICAgcG9wICAgIHtyNywgbHJ9CiAg
ICAweGI2ZjBiNGJlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMGI0YzA6ICAgIG1vdncgICByNiwg
IzQyMTI4CiAgICAweGI2ZjBiNGM0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYjRj
ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBiNGNhOiAgICBtb3YgICAgcjAsIHI3CiAg
ICAweGI2ZjBiNGNjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwYjRkMDogICAgbW92
dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMGI0ZDQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwYjRk
NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMGI0ZGE6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjBiNGRlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMGI0ZTA6ICAg
IGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAg
ICBDb2RlIGF0IFsweGI2ZjBiNDAxLCAweGI2ZjBiNDgxKToKICAgIDB4YjZmMGI0MDA6ICAgIHB1
c2ggICB7cjcsIGxyfQogICAgMHhiNmYwYjQwNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYw
YjQwNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMGI0MGE6ICAgIHN0ciAgICByMTIsIFty
NywgIzhdCiAgICAweGI2ZjBiNDBlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYjQx
MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGI0MTY6ICAgIHN0ciAgICByNywgW3I2
XQogICAgMHhiNmYwYjQxODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYjQxYTogICAgbGRy
ICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMGI0MWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBd
CiAgICAweGI2ZjBiNDFlOiAgICBtb3Z3ICAgcjEyLCAjMTI0NjUKICAgIDB4YjZmMGI0MjI6ICAg
IG1vdnQgICByMTIsICM0NjgxMAogICAgMHhiNmYwYjQyNjogICAgYmx4ICAgIHIxMgogICAgMHhi
NmYwYjQyODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwYjQyYTogICAgbW92dyAgIHI2LCAj
NDYzNDgKICAgIDB4YjZmMGI0MmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiNDMy
OiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMGI0MzQ6ICAgIGNtcCAgICByMiwgIzAKICAg
IDB4YjZmMGI0MzY6ICAgIGJuZSAgICAweGI2ZjBiNDQwCiAgICAweGI2ZjBiNDM4OiAgICBtb3Yg
ICAgc3AsIHI3CiAgICAweGI2ZjBiNDNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMGI0
M2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwYjQ0MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
IDB4YjZmMGI0NDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiNDQ4OiAgICBzdHIg
ICAgcjcsIFtyNl0KICAgIDB4YjZmMGI0NGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGI0
NGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjBiNDUwOiAgICBtb3Z0ICAgcjMsICM0
Njc3NgogICAgMHhiNmYwYjQ1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjBiNDU2OiAgICBtb3Z3
ICAgcjYsICM0NjE4OAogICAgMHhiNmYwYjQ1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMGI0NWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwYjQ2MDogICAgYnggICAgIHIx
CkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQg
WzB4YjZmMGIzODEsIDB4YjZmMGI0MDEpOgogICAgMHhiNmYwYjM4MDogICAgcHVzaCAgIHtyNywg
bHJ9CiAgICAweGI2ZjBiMzg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjBiMzg2OiAgICBt
b3YgICAgcjEyLCAjMAogICAgMHhiNmYwYjM4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAg
IDB4YjZmMGIzOGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBiMzkyOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYjM5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2
ZjBiMzk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBiMzlhOiAgICBsZHIgICAgcjEsIFty
NywgIzE2XQogICAgMHhiNmYwYjM5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZm
MGIzOWU6ICAgIG1vdncgICByMTIsICMxMjIzNwogICAgMHhiNmYwYjNhMjogICAgbW92dCAgIHIx
MiwgIzQ2ODEwCiAgICAweGI2ZjBiM2E2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjBiM2E4OiAg
ICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjBiM2FhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAg
MHhiNmYwYjNhZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGIzYjI6ICAgIGxkciAg
ICByNiwgW3I2XQogICAgMHhiNmYwYjNiNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwYjNi
NjogICAgYm5lICAgIDB4YjZmMGIzYzAKICAgIDB4YjZmMGIzYjg6ICAgIG1vdiAgICBzcCwgcjcK
ICAgIDB4YjZmMGIzYmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwYjNiZTogICAgYngg
ICAgIGxyCiAgICAweGI2ZjBiM2MwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYjNj
NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGIzYzg6ICAgIHN0ciAgICByNywgW3I2
XQogICAgMHhiNmYwYjNjYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYjNjYzogICAgbW92
dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMGIzZDA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAw
eGI2ZjBiM2Q0OiAgICBibHggICAgcjMKICAgIDB4YjZmMGIzZDY6ICAgIG1vdncgICByNiwgIzQ2
MTg4CiAgICAweGI2ZjBiM2RhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYjNkZTog
ICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjBiM2UwOiAgICBieCAgICAgcjEKR2VuZXJhdGVk
IEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwYjMw
MSwgMHhiNmYwYjM4MSk6CiAgICAweGI2ZjBiMzAwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4
YjZmMGIzMDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMGIzMDY6ICAgIG1vdiAgICByMTIs
ICMwCiAgICAweGI2ZjBiMzBhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwYjMw
ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGIzMTI6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjBiMzE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGIzMTg6ICAg
IG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGIzMWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAg
ICAweGI2ZjBiMzFjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwYjMxZTogICAg
bW92dyAgIHIxMiwgIzc5MzMKICAgIDB4YjZmMGIzMjI6ICAgIG1vdnQgICByMTIsICM0NjgxMAog
ICAgMHhiNmYwYjMyNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwYjMyODogICAgbW92ICAgIGxy
LCByMwogICAgMHhiNmYwYjMyYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMGIzMmU6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiMzMyOiAgICBsZHIgICAgcjYsIFtyNl0K
ICAgIDB4YjZmMGIzMzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMGIzMzY6ICAgIGJuZSAg
ICAweGI2ZjBiMzQwCiAgICAweGI2ZjBiMzM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjBi
MzNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMGIzM2U6ICAgIGJ4ICAgICBscgogICAg
MHhiNmYwYjM0MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGIzNDQ6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiMzQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZm
MGIzNGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGIzNGM6ICAgIG1vdncgICByMywgIzYz
MjQ5CiAgICAweGI2ZjBiMzUwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwYjM1NDog
ICAgYmx4ICAgIHIzCiAgICAweGI2ZjBiMzU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhi
NmYwYjM1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGIzNWU6ICAgIGxkciAgICBy
MSwgW3I2XQogICAgMHhiNmYwYjM2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBm
b3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMGIyODEsIDB4YjZmMGIz
MDEpOgogICAgMHhiNmYwYjI4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjBiMjg0OiAg
ICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjBiMjg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhi
NmYwYjI4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMGIyOGU6ICAgIG1vdncg
ICByNiwgIzQyMTI4CiAgICAweGI2ZjBiMjkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwYjI5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBiMjk4OiAgICBtb3YgICAgcjAs
IHI3CiAgICAweGI2ZjBiMjlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwYjI5
YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMGIyOWU6ICAgIG1vdncgICByMTIs
ICMxMjY5MwogICAgMHhiNmYwYjJhMjogICAgbW92dCAgIHIxMiwgIzQ2ODEwCiAgICAweGI2ZjBi
MmE2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjBiMmE4OiAgICBtb3YgICAgbHIsIHIzCiAgICAw
eGI2ZjBiMmFhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwYjJhZTogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMGIyYjI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYw
YjJiNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwYjJiNjogICAgYm5lICAgIDB4YjZmMGIy
YzAKICAgIDB4YjZmMGIyYjg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMGIyYmE6ICAgIHBv
cCAgICB7cjcsIGxyfQogICAgMHhiNmYwYjJiZTogICAgYnggICAgIGxyCiAgICAweGI2ZjBiMmMw
OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYjJjNDogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMGIyYzg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYjJjYTogICAg
bW92ICAgIHIwLCByNwogICAgMHhiNmYwYjJjYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4
YjZmMGIyZDA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjBiMmQ0OiAgICBibHggICAg
cjMKICAgIDB4YjZmMGIyZDY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjBiMmRhOiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYjJkZTogICAgbGRyICAgIHIxLCBbcjZdCiAg
ICAweGI2ZjBiMmUwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJ
IG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwYjIwMSwgMHhiNmYwYjI4MSk6CiAgICAw
eGI2ZjBiMjAwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMGIyMDQ6ICAgIG1vdiAgICBy
Nywgc3AKICAgIDB4YjZmMGIyMDY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjBiMjBhOiAg
ICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwYjIwZTogICAgbW92dyAgIHI2LCAjNDIx
MjgKICAgIDB4YjZmMGIyMTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiMjE2OiAg
ICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGIyMTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4
YjZmMGIyMWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjBiMjFjOiAgICBsZHIg
ICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwYjIxZTogICAgbW92dyAgIHIxMiwgIzgzODkKICAg
IDB4YjZmMGIyMjI6ICAgIG1vdnQgICByMTIsICM0NjgxMAogICAgMHhiNmYwYjIyNjogICAgYmx4
ICAgIHIxMgogICAgMHhiNmYwYjIyODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwYjIyYTog
ICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMGIyMmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAweGI2ZjBiMjMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMGIyMzQ6ICAgIGNt
cCAgICByMiwgIzAKICAgIDB4YjZmMGIyMzY6ICAgIGJuZSAgICAweGI2ZjBiMjQwCiAgICAweGI2
ZjBiMjM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjBiMjNhOiAgICBwb3AgICAge3I3LCBs
cn0KICAgIDB4YjZmMGIyM2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwYjI0MDogICAgbW92dyAg
IHI2LCAjNDIxMjgKICAgIDB4YjZmMGIyNDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjBiMjQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGIyNGE6ICAgIG1vdiAgICByMCwg
cjcKICAgIDB4YjZmMGIyNGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjBiMjUwOiAg
ICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwYjI1NDogICAgYmx4ICAgIHIzCiAgICAweGI2
ZjBiMjU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwYjI1YTogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMGIyNWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwYjI2
MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2Fs
bDoKICAgIENvZGUgYXQgWzB4YjZmMGIxODEsIDB4YjZmMGIyMDEpOgogICAgMHhiNmYwYjE4MDog
ICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjBiMTg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAw
eGI2ZjBiMTg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwYjE4YTogICAgc3RyICAgIHIx
MiwgW3I3LCAjOF0KICAgIDB4YjZmMGIxOGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2
ZjBiMTkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYjE5NjogICAgc3RyICAgIHI3
LCBbcjZdCiAgICAweGI2ZjBiMTk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBiMTlhOiAg
ICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwYjE5YzogICAgbGRyICAgIHIyLCBbcjEs
ICMyMF0KICAgIDB4YjZmMGIxOWU6ICAgIG1vdncgICByMTIsICMxMzg0NQogICAgMHhiNmYwYjFh
MjogICAgbW92dCAgIHIxMiwgIzQ2ODEwCiAgICAweGI2ZjBiMWE2OiAgICBibHggICAgcjEyCiAg
ICAweGI2ZjBiMWE4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjBiMWFhOiAgICBtb3Z3ICAg
cjYsICM0NjM0OAogICAgMHhiNmYwYjFhZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZm
MGIxYjI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwYjFiNDogICAgY21wICAgIHIyLCAj
MAogICAgMHhiNmYwYjFiNjogICAgYm5lICAgIDB4YjZmMGIxYzAKICAgIDB4YjZmMGIxYjg6ICAg
IG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMGIxYmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhi
NmYwYjFiZTogICAgYnggICAgIGxyCiAgICAweGI2ZjBiMWMwOiAgICBtb3Z3ICAgcjYsICM0MjEy
OAogICAgMHhiNmYwYjFjNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGIxYzg6ICAg
IHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYjFjYTogICAgbW92ICAgIHIwLCByNwogICAgMHhi
NmYwYjFjYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMGIxZDA6ICAgIG1vdnQgICBy
MywgIzQ2Nzc2CiAgICAweGI2ZjBiMWQ0OiAgICBibHggICAgcjMKICAgIDB4YjZmMGIxZDY6ICAg
IG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjBiMWRhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwYjFkZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjBiMWUwOiAgICBieCAg
ICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29k
ZSBhdCBbMHhiNmYwYjEwMSwgMHhiNmYwYjE4MSk6CiAgICAweGI2ZjBiMTAwOiAgICBwdXNoICAg
e3I3LCBscn0KICAgIDB4YjZmMGIxMDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMGIxMDY6
ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjBiMTBhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4
XQogICAgMHhiNmYwYjEwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGIxMTI6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiMTE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAg
IDB4YjZmMGIxMTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGIxMWE6ICAgIGxkciAgICBy
MSwgW3I3LCAjMTZdCiAgICAweGI2ZjBiMTFjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAg
MHhiNmYwYjExZTogICAgbW92dyAgIHIxMiwgIzUyMzcKICAgIDB4YjZmMGIxMjI6ICAgIG1vdnQg
ICByMTIsICM0NjgwMAogICAgMHhiNmYwYjEyNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwYjEy
ODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwYjEyYTogICAgbW92dyAgIHI2LCAjNDYzNDgK
ICAgIDB4YjZmMGIxMmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiMTMyOiAgICBs
ZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMGIxMzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZm
MGIxMzY6ICAgIGJuZSAgICAweGI2ZjBiMTQwCiAgICAweGI2ZjBiMTM4OiAgICBtb3YgICAgc3As
IHI3CiAgICAweGI2ZjBiMTNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMGIxM2U6ICAg
IGJ4ICAgICBscgogICAgMHhiNmYwYjE0MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZm
MGIxNDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiMTQ4OiAgICBzdHIgICAgcjcs
IFtyNl0KICAgIDB4YjZmMGIxNGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGIxNGM6ICAg
IG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjBiMTUwOiAgICBtb3Z0ICAgcjMsICM0Njc3Ngog
ICAgMHhiNmYwYjE1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjBiMTU2OiAgICBtb3Z3ICAgcjYs
ICM0NjE4OAogICAgMHhiNmYwYjE1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGIx
NWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwYjE2MDogICAgYnggICAgIHIxCkdlbmVy
YXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZm
MGIwODEsIDB4YjZmMGIxMDEpOgogICAgMHhiNmYwYjA4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAg
ICAweGI2ZjBiMDg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjBiMDg2OiAgICBtb3YgICAg
cjEyLCAjMAogICAgMHhiNmYwYjA4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZm
MGIwOGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBiMDkyOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwYjA5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBiMDk4
OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBiMDlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2
XQogICAgMHhiNmYwYjA5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMGIwOWU6
ICAgIG1vdncgICByMTIsICM2MDg5CiAgICAweGI2ZjBiMGEyOiAgICBtb3Z0ICAgcjEyLCAjNDY4
MTEKICAgIDB4YjZmMGIwYTY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMGIwYTg6ICAgIG1vdiAg
ICBsciwgcjMKICAgIDB4YjZmMGIwYWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjBi
MGFlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYjBiMjogICAgbGRyICAgIHI2LCBb
cjZdCiAgICAweGI2ZjBiMGI0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjBiMGI2OiAgICBi
bmUgICAgMHhiNmYwYjBjMAogICAgMHhiNmYwYjBiODogICAgbW92ICAgIHNwLCByNwogICAgMHhi
NmYwYjBiYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjBiMGJlOiAgICBieCAgICAgbHIK
ICAgIDB4YjZmMGIwYzA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBiMGM0OiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYjBjODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjBiMGNhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBiMGNjOiAgICBtb3Z3ICAgcjMs
ICM2MzI0OQogICAgMHhiNmYwYjBkMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMGIw
ZDQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwYjBkNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAg
IDB4YjZmMGIwZGE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBiMGRlOiAgICBsZHIg
ICAgcjEsIFtyNl0KICAgIDB4YjZmMGIwZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNv
ZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjBiMDAxLCAweGI2
ZjBiMDgxKToKICAgIDB4YjZmMGIwMDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwYjAw
NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwYjAwNjogICAgbW92ICAgIHIxMiwgIzAKICAg
IDB4YjZmMGIwMGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjBiMDBlOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYjAxMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMGIwMTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYjAxODogICAgbW92ICAg
IHIwLCByNwogICAgMHhiNmYwYjAxYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZm
MGIwMWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjBiMDFlOiAgICBtb3Z3ICAg
cjEyLCAjNzA2OQogICAgMHhiNmYwYjAyMjogICAgbW92dCAgIHIxMiwgIzQ2ODExCiAgICAweGI2
ZjBiMDI2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjBiMDI4OiAgICBtb3YgICAgbHIsIHIzCiAg
ICAweGI2ZjBiMDJhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwYjAyZTogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGIwMzI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhi
NmYwYjAzNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwYjAzNjogICAgYm5lICAgIDB4YjZm
MGIwNDAKICAgIDB4YjZmMGIwMzg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMGIwM2E6ICAg
IHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwYjAzZTogICAgYnggICAgIGxyCiAgICAweGI2ZjBi
MDQwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYjA0NDogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMGIwNDg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYjA0YTog
ICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYjA0YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAg
IDB4YjZmMGIwNTA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjBiMDU0OiAgICBibHgg
ICAgcjMKICAgIDB4YjZmMGIwNTY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjBiMDVh
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYjA1ZTogICAgbGRyICAgIHIxLCBbcjZd
CiAgICAweGI2ZjBiMDYwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQg
Q1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwYWY4MSwgMHhiNmYwYjAwMSk6CiAg
ICAweGI2ZjBhZjgwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMGFmODQ6ICAgIG1vdiAg
ICByNywgc3AKICAgIDB4YjZmMGFmODY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjBhZjhh
OiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwYWY4ZTogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgIDB4YjZmMGFmOTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhZjk2
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGFmOTg6ICAgIG1vdiAgICByMCwgcjcKICAg
IDB4YjZmMGFmOWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjBhZjljOiAgICBs
ZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwYWY5ZTogICAgbW92dyAgIHIxMiwgIzY4MjUK
ICAgIDB4YjZmMGFmYTI6ICAgIG1vdnQgICByMTIsICM0NjgxMQogICAgMHhiNmYwYWZhNjogICAg
Ymx4ICAgIHIxMgogICAgMHhiNmYwYWZhODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwYWZh
YTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMGFmYWU6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjBhZmIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMGFmYjQ6ICAg
IGNtcCAgICByMiwgIzAKICAgIDB4YjZmMGFmYjY6ICAgIGJuZSAgICAweGI2ZjBhZmMwCiAgICAw
eGI2ZjBhZmI4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjBhZmJhOiAgICBwb3AgICAge3I3
LCBscn0KICAgIDB4YjZmMGFmYmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwYWZjMDogICAgbW92
dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGFmYzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAw
eGI2ZjBhZmM4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGFmY2E6ICAgIG1vdiAgICBy
MCwgcjcKICAgIDB4YjZmMGFmY2M6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjBhZmQw
OiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwYWZkNDogICAgYmx4ICAgIHIzCiAgICAw
eGI2ZjBhZmQ2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwYWZkYTogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMGFmZGU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYw
YWZlMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUg
Y2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMGFmMDEsIDB4YjZmMGFmODEpOgogICAgMHhiNmYwYWYw
MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjBhZjA0OiAgICBtb3YgICAgcjcsIHNwCiAg
ICAweGI2ZjBhZjA2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwYWYwYTogICAgc3RyICAg
IHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMGFmMGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAw
eGI2ZjBhZjEyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYWYxNjogICAgc3RyICAg
IHI3LCBbcjZdCiAgICAweGI2ZjBhZjE4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBhZjFh
OiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwYWYxYzogICAgbGRyICAgIHIyLCBb
cjEsICMyMF0KICAgIDB4YjZmMGFmMWU6ICAgIG1vdncgICByMTIsICM2NTgxCiAgICAweGI2ZjBh
ZjIyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MTEKICAgIDB4YjZmMGFmMjY6ICAgIGJseCAgICByMTIK
ICAgIDB4YjZmMGFmMjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMGFmMmE6ICAgIG1vdncg
ICByNiwgIzQ2MzQ4CiAgICAweGI2ZjBhZjJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwYWYzMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjBhZjM0OiAgICBjbXAgICAgcjIs
ICMwCiAgICAweGI2ZjBhZjM2OiAgICBibmUgICAgMHhiNmYwYWY0MAogICAgMHhiNmYwYWYzODog
ICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwYWYzYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAw
eGI2ZjBhZjNlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMGFmNDA6ICAgIG1vdncgICByNiwgIzQy
MTI4CiAgICAweGI2ZjBhZjQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYWY0ODog
ICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBhZjRhOiAgICBtb3YgICAgcjAsIHI3CiAgICAw
eGI2ZjBhZjRjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwYWY1MDogICAgbW92dCAg
IHIzLCAjNDY3NzYKICAgIDB4YjZmMGFmNTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwYWY1Njog
ICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMGFmNWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAweGI2ZjBhZjVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMGFmNjA6ICAgIGJ4
ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBD
b2RlIGF0IFsweGI2ZjBhZTgxLCAweGI2ZjBhZjAxKToKICAgIDB4YjZmMGFlODA6ICAgIHB1c2gg
ICB7cjcsIGxyfQogICAgMHhiNmYwYWU4NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwYWU4
NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMGFlOGE6ICAgIHN0ciAgICByMTIsIFtyNywg
IzhdCiAgICAweGI2ZjBhZThlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYWU5Mjog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGFlOTY6ICAgIHN0ciAgICByNywgW3I2XQog
ICAgMHhiNmYwYWU5ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYWU5YTogICAgbGRyICAg
IHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMGFlOWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAg
ICAweGI2ZjBhZTllOiAgICBtb3Z3ICAgcjEyLCAjMTI5ODEKICAgIDB4YjZmMGFlYTI6ICAgIG1v
dnQgICByMTIsICM0NjgxMQogICAgMHhiNmYwYWVhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYw
YWVhODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwYWVhYTogICAgbW92dyAgIHI2LCAjNDYz
NDgKICAgIDB4YjZmMGFlYWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhZWIyOiAg
ICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMGFlYjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4
YjZmMGFlYjY6ICAgIGJuZSAgICAweGI2ZjBhZWMwCiAgICAweGI2ZjBhZWI4OiAgICBtb3YgICAg
c3AsIHI3CiAgICAweGI2ZjBhZWJhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMGFlYmU6
ICAgIGJ4ICAgICBscgogICAgMHhiNmYwYWVjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4
YjZmMGFlYzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhZWM4OiAgICBzdHIgICAg
cjcsIFtyNl0KICAgIDB4YjZmMGFlY2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGFlY2M6
ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjBhZWQwOiAgICBtb3Z0ICAgcjMsICM0Njc3
NgogICAgMHhiNmYwYWVkNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjBhZWQ2OiAgICBtb3Z3ICAg
cjYsICM0NjE4OAogICAgMHhiNmYwYWVkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZm
MGFlZGU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwYWVlMDogICAgYnggICAgIHIxCkdl
bmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4
YjZmMGFlMDEsIDB4YjZmMGFlODEpOgogICAgMHhiNmYwYWUwMDogICAgcHVzaCAgIHtyNywgbHJ9
CiAgICAweGI2ZjBhZTA0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjBhZTA2OiAgICBtb3Yg
ICAgcjEyLCAjMAogICAgMHhiNmYwYWUwYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4
YjZmMGFlMGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBhZTEyOiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgMHhiNmYwYWUxNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBh
ZTE4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBhZTFhOiAgICBsZHIgICAgcjEsIFtyNywg
IzE2XQogICAgMHhiNmYwYWUxYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMGFl
MWU6ICAgIG1vdncgICByMTIsICMxMjI3NwogICAgMHhiNmYwYWUyMjogICAgbW92dCAgIHIxMiwg
IzQ2ODExCiAgICAweGI2ZjBhZTI2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjBhZTI4OiAgICBt
b3YgICAgbHIsIHIzCiAgICAweGI2ZjBhZTJhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhi
NmYwYWUyZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGFlMzI6ICAgIGxkciAgICBy
NiwgW3I2XQogICAgMHhiNmYwYWUzNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwYWUzNjog
ICAgYm5lICAgIDB4YjZmMGFlNDAKICAgIDB4YjZmMGFlMzg6ICAgIG1vdiAgICBzcCwgcjcKICAg
IDB4YjZmMGFlM2E6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwYWUzZTogICAgYnggICAg
IGxyCiAgICAweGI2ZjBhZTQwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYWU0NDog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGFlNDg6ICAgIHN0ciAgICByNywgW3I2XQog
ICAgMHhiNmYwYWU0YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYWU0YzogICAgbW92dyAg
IHIzLCAjNjMyNDkKICAgIDB4YjZmMGFlNTA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2
ZjBhZTU0OiAgICBibHggICAgcjMKICAgIDB4YjZmMGFlNTY6ICAgIG1vdncgICByNiwgIzQ2MTg4
CiAgICAweGI2ZjBhZTVhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYWU1ZTogICAg
bGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjBhZTYwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJ
VCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwYWQ4MSwg
MHhiNmYwYWUwMSk6CiAgICAweGI2ZjBhZDgwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZm
MGFkODQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMGFkODY6ICAgIG1vdiAgICByMTIsICMw
CiAgICAweGI2ZjBhZDhhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwYWQ4ZTog
ICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGFkOTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAweGI2ZjBhZDk2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGFkOTg6ICAgIG1v
diAgICByMCwgcjcKICAgIDB4YjZmMGFkOWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAw
eGI2ZjBhZDljOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwYWQ5ZTogICAgbW92
dyAgIHIxMiwgIzYzMzMKICAgIDB4YjZmMGFkYTI6ICAgIG1vdnQgICByMTIsICM0NjgxMQogICAg
MHhiNmYwYWRhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwYWRhODogICAgbW92ICAgIGxyLCBy
MwogICAgMHhiNmYwYWRhYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMGFkYWU6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhZGIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAg
IDB4YjZmMGFkYjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMGFkYjY6ICAgIGJuZSAgICAw
eGI2ZjBhZGMwCiAgICAweGI2ZjBhZGI4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjBhZGJh
OiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMGFkYmU6ICAgIGJ4ICAgICBscgogICAgMHhi
NmYwYWRjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGFkYzQ6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjBhZGM4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGFk
Y2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGFkY2M6ICAgIG1vdncgICByMywgIzYzMjQ5
CiAgICAweGI2ZjBhZGQwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwYWRkNDogICAg
Ymx4ICAgIHIzCiAgICAweGI2ZjBhZGQ2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYw
YWRkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGFkZGU6ICAgIGxkciAgICByMSwg
W3I2XQogICAgMHhiNmYwYWRlMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3Ig
SklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMGFkMDEsIDB4YjZmMGFkODEp
OgogICAgMHhiNmYwYWQwMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjBhZDA0OiAgICBt
b3YgICAgcjcsIHNwCiAgICAweGI2ZjBhZDA2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYw
YWQwYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMGFkMGU6ICAgIG1vdncgICBy
NiwgIzQyMTI4CiAgICAweGI2ZjBhZDEyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYw
YWQxNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBhZDE4OiAgICBtb3YgICAgcjAsIHI3
CiAgICAweGI2ZjBhZDFhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwYWQxYzog
ICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMGFkMWU6ICAgIG1vdncgICByMTIsICM0
MzE0NQogICAgMHhiNmYwYWQyMjogICAgbW92dCAgIHIxMiwgIzQ2ODA2CiAgICAweGI2ZjBhZDI2
OiAgICBibHggICAgcjEyCiAgICAweGI2ZjBhZDI4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2
ZjBhZDJhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwYWQyZTogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMGFkMzI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwYWQz
NDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwYWQzNjogICAgYm5lICAgIDB4YjZmMGFkNDAK
ICAgIDB4YjZmMGFkMzg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMGFkM2E6ICAgIHBvcCAg
ICB7cjcsIGxyfQogICAgMHhiNmYwYWQzZTogICAgYnggICAgIGxyCiAgICAweGI2ZjBhZDQwOiAg
ICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYWQ0NDogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgIDB4YjZmMGFkNDg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYWQ0YTogICAgbW92
ICAgIHIwLCByNwogICAgMHhiNmYwYWQ0YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZm
MGFkNTA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjBhZDU0OiAgICBibHggICAgcjMK
ICAgIDB4YjZmMGFkNTY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjBhZDVhOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYWQ1ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAw
eGI2ZjBhZDYwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5h
dGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwYWM4MSwgMHhiNmYwYWQwMSk6CiAgICAweGI2
ZjBhYzgwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMGFjODQ6ICAgIG1vdiAgICByNywg
c3AKICAgIDB4YjZmMGFjODY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjBhYzhhOiAgICBz
dHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwYWM4ZTogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgIDB4YjZmMGFjOTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhYzk2OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGFjOTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZm
MGFjOWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjBhYzljOiAgICBsZHIgICAg
cjIsIFtyMSwgIzIwXQogICAgMHhiNmYwYWM5ZTogICAgbW92dyAgIHIxMiwgIzQyMTQ1CiAgICAw
eGI2ZjBhY2EyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MDYKICAgIDB4YjZmMGFjYTY6ICAgIGJseCAg
ICByMTIKICAgIDB4YjZmMGFjYTg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMGFjYWE6ICAg
IG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjBhY2FlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwYWNiMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjBhY2I0OiAgICBjbXAg
ICAgcjIsICMwCiAgICAweGI2ZjBhY2I2OiAgICBibmUgICAgMHhiNmYwYWNjMAogICAgMHhiNmYw
YWNiODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwYWNiYTogICAgcG9wICAgIHtyNywgbHJ9
CiAgICAweGI2ZjBhY2JlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMGFjYzA6ICAgIG1vdncgICBy
NiwgIzQyMTI4CiAgICAweGI2ZjBhY2M0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYw
YWNjODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBhY2NhOiAgICBtb3YgICAgcjAsIHI3
CiAgICAweGI2ZjBhY2NjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwYWNkMDogICAg
bW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMGFjZDQ6ICAgIGJseCAgICByMwogICAgMHhiNmYw
YWNkNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMGFjZGE6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjBhY2RlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMGFjZTA6
ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6
CiAgICBDb2RlIGF0IFsweGI2ZjBhYzAxLCAweGI2ZjBhYzgxKToKICAgIDB4YjZmMGFjMDA6ICAg
IHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwYWMwNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhi
NmYwYWMwNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMGFjMGE6ICAgIHN0ciAgICByMTIs
IFtyNywgIzhdCiAgICAweGI2ZjBhYzBlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYw
YWMxMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGFjMTY6ICAgIHN0ciAgICByNywg
W3I2XQogICAgMHhiNmYwYWMxODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYWMxYTogICAg
bGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMGFjMWM6ICAgIGxkciAgICByMiwgW3IxLCAj
MjBdCiAgICAweGI2ZjBhYzFlOiAgICBtb3Z3ICAgcjEyLCAjNDIzODkKICAgIDB4YjZmMGFjMjI6
ICAgIG1vdnQgICByMTIsICM0NjgwNgogICAgMHhiNmYwYWMyNjogICAgYmx4ICAgIHIxMgogICAg
MHhiNmYwYWMyODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwYWMyYTogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgIDB4YjZmMGFjMmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBh
YzMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMGFjMzQ6ICAgIGNtcCAgICByMiwgIzAK
ICAgIDB4YjZmMGFjMzY6ICAgIGJuZSAgICAweGI2ZjBhYzQwCiAgICAweGI2ZjBhYzM4OiAgICBt
b3YgICAgc3AsIHI3CiAgICAweGI2ZjBhYzNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZm
MGFjM2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwYWM0MDogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgIDB4YjZmMGFjNDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhYzQ4OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGFjNGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZm
MGFjNGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjBhYzUwOiAgICBtb3Z0ICAgcjMs
ICM0Njc3NgogICAgMHhiNmYwYWM1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjBhYzU2OiAgICBt
b3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwYWM1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMGFjNWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwYWM2MDogICAgYnggICAg
IHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUg
YXQgWzB4YjZmMGFiODEsIDB4YjZmMGFjMDEpOgogICAgMHhiNmYwYWI4MDogICAgcHVzaCAgIHty
NywgbHJ9CiAgICAweGI2ZjBhYjg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjBhYjg2OiAg
ICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwYWI4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0K
ICAgIDB4YjZmMGFiOGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBhYjkyOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYWI5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjBhYjk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBhYjlhOiAgICBsZHIgICAgcjEs
IFtyNywgIzE2XQogICAgMHhiNmYwYWI5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4
YjZmMGFiOWU6ICAgIG1vdncgICByMTIsICM0MjkwMQogICAgMHhiNmYwYWJhMjogICAgbW92dCAg
IHIxMiwgIzQ2ODA2CiAgICAweGI2ZjBhYmE2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjBhYmE4
OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjBhYmFhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAog
ICAgMHhiNmYwYWJhZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGFiYjI6ICAgIGxk
ciAgICByNiwgW3I2XQogICAgMHhiNmYwYWJiNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYw
YWJiNjogICAgYm5lICAgIDB4YjZmMGFiYzAKICAgIDB4YjZmMGFiYjg6ICAgIG1vdiAgICBzcCwg
cjcKICAgIDB4YjZmMGFiYmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwYWJiZTogICAg
YnggICAgIGxyCiAgICAweGI2ZjBhYmMwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYw
YWJjNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGFiYzg6ICAgIHN0ciAgICByNywg
W3I2XQogICAgMHhiNmYwYWJjYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYWJjYzogICAg
bW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMGFiZDA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAg
ICAweGI2ZjBhYmQ0OiAgICBibHggICAgcjMKICAgIDB4YjZmMGFiZDY6ICAgIG1vdncgICByNiwg
IzQ2MTg4CiAgICAweGI2ZjBhYmRhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYWJk
ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjBhYmUwOiAgICBieCAgICAgcjEKR2VuZXJh
dGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYw
YWIwMSwgMHhiNmYwYWI4MSk6CiAgICAweGI2ZjBhYjAwOiAgICBwdXNoICAge3I3LCBscn0KICAg
IDB4YjZmMGFiMDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMGFiMDY6ICAgIG1vdiAgICBy
MTIsICMwCiAgICAweGI2ZjBhYjBhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYw
YWIwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGFiMTI6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjBhYjE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGFiMTg6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGFiMWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZd
CiAgICAweGI2ZjBhYjFjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwYWIxZTog
ICAgbW92dyAgIHIxMiwgIzQyNjM3CiAgICAweGI2ZjBhYjIyOiAgICBtb3Z0ICAgcjEyLCAjNDY4
MDYKICAgIDB4YjZmMGFiMjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMGFiMjg6ICAgIG1vdiAg
ICBsciwgcjMKICAgIDB4YjZmMGFiMmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjBh
YjJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYWIzMjogICAgbGRyICAgIHI2LCBb
cjZdCiAgICAweGI2ZjBhYjM0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjBhYjM2OiAgICBi
bmUgICAgMHhiNmYwYWI0MAogICAgMHhiNmYwYWIzODogICAgbW92ICAgIHNwLCByNwogICAgMHhi
NmYwYWIzYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjBhYjNlOiAgICBieCAgICAgbHIK
ICAgIDB4YjZmMGFiNDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBhYjQ0OiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYWI0ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjBhYjRhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBhYjRjOiAgICBtb3Z3ICAgcjMs
ICM2MzI0OQogICAgMHhiNmYwYWI1MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMGFi
NTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwYWI1NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAg
IDB4YjZmMGFiNWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhYjVlOiAgICBsZHIg
ICAgcjEsIFtyNl0KICAgIDB4YjZmMGFiNjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNv
ZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjBhYTgxLCAweGI2
ZjBhYjAxKToKICAgIDB4YjZmMGFhODA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwYWE4
NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwYWE4NjogICAgbW92ICAgIHIxMiwgIzAKICAg
IDB4YjZmMGFhOGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjBhYThlOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYWE5MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMGFhOTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYWE5ODogICAgbW92ICAg
IHIwLCByNwogICAgMHhiNmYwYWE5YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZm
MGFhOWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjBhYTllOiAgICBtb3Z3ICAg
cjEyLCAjNDg3NTcKICAgIDB4YjZmMGFhYTI6ICAgIG1vdnQgICByMTIsICM0NjgwNgogICAgMHhi
NmYwYWFhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwYWFhODogICAgbW92ICAgIGxyLCByMwog
ICAgMHhiNmYwYWFhYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMGFhYWU6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhYWIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4
YjZmMGFhYjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMGFhYjY6ICAgIGJuZSAgICAweGI2
ZjBhYWMwCiAgICAweGI2ZjBhYWI4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjBhYWJhOiAg
ICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMGFhYmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYw
YWFjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGFhYzQ6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjBhYWM4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGFhY2E6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGFhY2M6ICAgIG1vdncgICByMywgIzYzMjQ5CiAg
ICAweGI2ZjBhYWQwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwYWFkNDogICAgYmx4
ICAgIHIzCiAgICAweGI2ZjBhYWQ2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwYWFk
YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGFhZGU6ICAgIGxkciAgICByMSwgW3I2
XQogICAgMHhiNmYwYWFlMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklU
IENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMGFhMDEsIDB4YjZmMGFhODEpOgog
ICAgMHhiNmYwYWEwMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjBhYTA0OiAgICBtb3Yg
ICAgcjcsIHNwCiAgICAweGI2ZjBhYTA2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwYWEw
YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMGFhMGU6ICAgIG1vdncgICByNiwg
IzQyMTI4CiAgICAweGI2ZjBhYTEyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYWEx
NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBhYTE4OiAgICBtb3YgICAgcjAsIHI3CiAg
ICAweGI2ZjBhYTFhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwYWExYzogICAg
bGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMGFhMWU6ICAgIG1vdncgICByMTIsICM0OTQ1
NwogICAgMHhiNmYwYWEyMjogICAgbW92dCAgIHIxMiwgIzQ2ODA2CiAgICAweGI2ZjBhYTI2OiAg
ICBibHggICAgcjEyCiAgICAweGI2ZjBhYTI4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjBh
YTJhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwYWEyZTogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMGFhMzI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwYWEzNDog
ICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwYWEzNjogICAgYm5lICAgIDB4YjZmMGFhNDAKICAg
IDB4YjZmMGFhMzg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMGFhM2E6ICAgIHBvcCAgICB7
cjcsIGxyfQogICAgMHhiNmYwYWEzZTogICAgYnggICAgIGxyCiAgICAweGI2ZjBhYTQwOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYWE0NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMGFhNDg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYWE0YTogICAgbW92ICAg
IHIwLCByNwogICAgMHhiNmYwYWE0YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMGFh
NTA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjBhYTU0OiAgICBibHggICAgcjMKICAg
IDB4YjZmMGFhNTY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjBhYTVhOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYWE1ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2
ZjBhYTYwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2
ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwYTk4MSwgMHhiNmYwYWEwMSk6CiAgICAweGI2ZjBh
OTgwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMGE5ODQ6ICAgIG1vdiAgICByNywgc3AK
ICAgIDB4YjZmMGE5ODY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjBhOThhOiAgICBzdHIg
ICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwYTk4ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
IDB4YjZmMGE5OTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhOTk2OiAgICBzdHIg
ICAgcjcsIFtyNl0KICAgIDB4YjZmMGE5OTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGE5
OWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjBhOTljOiAgICBsZHIgICAgcjIs
IFtyMSwgIzIwXQogICAgMHhiNmYwYTk5ZTogICAgbW92dyAgIHIxMiwgIzQyMzg5CiAgICAweGI2
ZjBhOWEyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MDYKICAgIDB4YjZmMGE5YTY6ICAgIGJseCAgICBy
MTIKICAgIDB4YjZmMGE5YTg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMGE5YWE6ICAgIG1v
dncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjBhOWFlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwYTliMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjBhOWI0OiAgICBjbXAgICAg
cjIsICMwCiAgICAweGI2ZjBhOWI2OiAgICBibmUgICAgMHhiNmYwYTljMAogICAgMHhiNmYwYTli
ODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwYTliYTogICAgcG9wICAgIHtyNywgbHJ9CiAg
ICAweGI2ZjBhOWJlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMGE5YzA6ICAgIG1vdncgICByNiwg
IzQyMTI4CiAgICAweGI2ZjBhOWM0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYTlj
ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBhOWNhOiAgICBtb3YgICAgcjAsIHI3CiAg
ICAweGI2ZjBhOWNjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwYTlkMDogICAgbW92
dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMGE5ZDQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwYTlk
NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMGE5ZGE6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjBhOWRlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMGE5ZTA6ICAg
IGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAg
ICBDb2RlIGF0IFsweGI2ZjBhOTAxLCAweGI2ZjBhOTgxKToKICAgIDB4YjZmMGE5MDA6ICAgIHB1
c2ggICB7cjcsIGxyfQogICAgMHhiNmYwYTkwNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYw
YTkwNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMGE5MGE6ICAgIHN0ciAgICByMTIsIFty
NywgIzhdCiAgICAweGI2ZjBhOTBlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYTkx
MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGE5MTY6ICAgIHN0ciAgICByNywgW3I2
XQogICAgMHhiNmYwYTkxODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYTkxYTogICAgbGRy
ICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMGE5MWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBd
CiAgICAweGI2ZjBhOTFlOiAgICBtb3Z3ICAgcjEyLCAjNDI2MzcKICAgIDB4YjZmMGE5MjI6ICAg
IG1vdnQgICByMTIsICM0NjgwNgogICAgMHhiNmYwYTkyNjogICAgYmx4ICAgIHIxMgogICAgMHhi
NmYwYTkyODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwYTkyYTogICAgbW92dyAgIHI2LCAj
NDYzNDgKICAgIDB4YjZmMGE5MmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhOTMy
OiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMGE5MzQ6ICAgIGNtcCAgICByMiwgIzAKICAg
IDB4YjZmMGE5MzY6ICAgIGJuZSAgICAweGI2ZjBhOTQwCiAgICAweGI2ZjBhOTM4OiAgICBtb3Yg
ICAgc3AsIHI3CiAgICAweGI2ZjBhOTNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMGE5
M2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwYTk0MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
IDB4YjZmMGE5NDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhOTQ4OiAgICBzdHIg
ICAgcjcsIFtyNl0KICAgIDB4YjZmMGE5NGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGE5
NGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjBhOTUwOiAgICBtb3Z0ICAgcjMsICM0
Njc3NgogICAgMHhiNmYwYTk1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjBhOTU2OiAgICBtb3Z3
ICAgcjYsICM0NjE4OAogICAgMHhiNmYwYTk1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMGE5NWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwYTk2MDogICAgYnggICAgIHIx
CkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQg
WzB4YjZmMGE4ODEsIDB4YjZmMGE5MDEpOgogICAgMHhiNmYwYTg4MDogICAgcHVzaCAgIHtyNywg
bHJ9CiAgICAweGI2ZjBhODg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjBhODg2OiAgICBt
b3YgICAgcjEyLCAjMAogICAgMHhiNmYwYTg4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAg
IDB4YjZmMGE4OGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBhODkyOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYTg5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2
ZjBhODk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBhODlhOiAgICBsZHIgICAgcjEsIFty
NywgIzE2XQogICAgMHhiNmYwYTg5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZm
MGE4OWU6ICAgIG1vdncgICByMTIsICM0OTg4NQogICAgMHhiNmYwYThhMjogICAgbW92dCAgIHIx
MiwgIzQ2ODA2CiAgICAweGI2ZjBhOGE2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjBhOGE4OiAg
ICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjBhOGFhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAg
MHhiNmYwYThhZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGE4YjI6ICAgIGxkciAg
ICByNiwgW3I2XQogICAgMHhiNmYwYThiNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwYThi
NjogICAgYm5lICAgIDB4YjZmMGE4YzAKICAgIDB4YjZmMGE4Yjg6ICAgIG1vdiAgICBzcCwgcjcK
ICAgIDB4YjZmMGE4YmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwYThiZTogICAgYngg
ICAgIGxyCiAgICAweGI2ZjBhOGMwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYThj
NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGE4Yzg6ICAgIHN0ciAgICByNywgW3I2
XQogICAgMHhiNmYwYThjYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYThjYzogICAgbW92
dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMGE4ZDA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAw
eGI2ZjBhOGQ0OiAgICBibHggICAgcjMKICAgIDB4YjZmMGE4ZDY6ICAgIG1vdncgICByNiwgIzQ2
MTg4CiAgICAweGI2ZjBhOGRhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYThkZTog
ICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjBhOGUwOiAgICBieCAgICAgcjEKR2VuZXJhdGVk
IEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwYTgw
MSwgMHhiNmYwYTg4MSk6CiAgICAweGI2ZjBhODAwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4
YjZmMGE4MDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMGE4MDY6ICAgIG1vdiAgICByMTIs
ICMwCiAgICAweGI2ZjBhODBhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwYTgw
ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGE4MTI6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjBhODE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGE4MTg6ICAg
IG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGE4MWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAg
ICAweGI2ZjBhODFjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwYTgxZTogICAg
bW92dyAgIHIxMiwgIzQzMzU3CiAgICAweGI2ZjBhODIyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MDYK
ICAgIDB4YjZmMGE4MjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMGE4Mjg6ICAgIG1vdiAgICBs
ciwgcjMKICAgIDB4YjZmMGE4MmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjBhODJl
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYTgzMjogICAgbGRyICAgIHI2LCBbcjZd
CiAgICAweGI2ZjBhODM0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjBhODM2OiAgICBibmUg
ICAgMHhiNmYwYTg0MAogICAgMHhiNmYwYTgzODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYw
YTgzYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjBhODNlOiAgICBieCAgICAgbHIKICAg
IDB4YjZmMGE4NDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBhODQ0OiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYTg0ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2
ZjBhODRhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBhODRjOiAgICBtb3Z3ICAgcjMsICM2
MzI0OQogICAgMHhiNmYwYTg1MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMGE4NTQ6
ICAgIGJseCAgICByMwogICAgMHhiNmYwYTg1NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4
YjZmMGE4NWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhODVlOiAgICBsZHIgICAg
cjEsIFtyNl0KICAgIDB4YjZmMGE4NjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUg
Zm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjBhNzgxLCAweGI2ZjBh
ODAxKToKICAgIDB4YjZmMGE3ODA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwYTc4NDog
ICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwYTc4NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4
YjZmMGE3OGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjBhNzhlOiAgICBtb3Z3
ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYTc5MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMGE3OTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYTc5ODogICAgbW92ICAgIHIw
LCByNwogICAgMHhiNmYwYTc5YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMGE3
OWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjBhNzllOiAgICBtb3Z3ICAgcjEy
LCAjNjUwNDkKICAgIDB4YjZmMGE3YTI6ICAgIG1vdnQgICByMTIsICM0Njc5MwogICAgMHhiNmYw
YTdhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwYTdhODogICAgbW92ICAgIGxyLCByMwogICAg
MHhiNmYwYTdhYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMGE3YWU6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhN2IyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZm
MGE3YjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMGE3YjY6ICAgIGJuZSAgICAweGI2ZjBh
N2MwCiAgICAweGI2ZjBhN2I4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjBhN2JhOiAgICBw
b3AgICAge3I3LCBscn0KICAgIDB4YjZmMGE3YmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwYTdj
MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGE3YzQ6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjBhN2M4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGE3Y2E6ICAg
IG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGE3Y2M6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAw
eGI2ZjBhN2QwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwYTdkNDogICAgYmx4ICAg
IHIzCiAgICAweGI2ZjBhN2Q2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwYTdkYTog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGE3ZGU6ICAgIGxkciAgICByMSwgW3I2XQog
ICAgMHhiNmYwYTdlMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENU
SSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMGE3MDEsIDB4YjZmMGE3ODEpOgogICAg
MHhiNmYwYTcwMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjBhNzA0OiAgICBtb3YgICAg
cjcsIHNwCiAgICAweGI2ZjBhNzA2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwYTcwYTog
ICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMGE3MGU6ICAgIG1vdncgICByNiwgIzQy
MTI4CiAgICAweGI2ZjBhNzEyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYTcxNjog
ICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBhNzE4OiAgICBtb3YgICAgcjAsIHI3CiAgICAw
eGI2ZjBhNzFhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwYTcxYzogICAgbGRy
ICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMGE3MWU6ICAgIG1vdncgICByMTIsICMzMTYxNwog
ICAgMHhiNmYwYTcyMjogICAgbW92dCAgIHIxMiwgIzQ2ODExCiAgICAweGI2ZjBhNzI2OiAgICBi
bHggICAgcjEyCiAgICAweGI2ZjBhNzI4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjBhNzJh
OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwYTcyZTogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMGE3MzI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwYTczNDogICAg
Y21wICAgIHIyLCAjMAogICAgMHhiNmYwYTczNjogICAgYm5lICAgIDB4YjZmMGE3NDAKICAgIDB4
YjZmMGE3Mzg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMGE3M2E6ICAgIHBvcCAgICB7cjcs
IGxyfQogICAgMHhiNmYwYTczZTogICAgYnggICAgIGxyCiAgICAweGI2ZjBhNzQwOiAgICBtb3Z3
ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYTc0NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMGE3NDg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYTc0YTogICAgbW92ICAgIHIw
LCByNwogICAgMHhiNmYwYTc0YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMGE3NTA6
ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjBhNzU0OiAgICBibHggICAgcjMKICAgIDB4
YjZmMGE3NTY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjBhNzVhOiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgMHhiNmYwYTc1ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjBh
NzYwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBj
YWxsOgogICAgQ29kZSBhdCBbMHhiNmYwYTY4MSwgMHhiNmYwYTcwMSk6CiAgICAweGI2ZjBhNjgw
OiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMGE2ODQ6ICAgIG1vdiAgICByNywgc3AKICAg
IDB4YjZmMGE2ODY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjBhNjhhOiAgICBzdHIgICAg
cjEyLCBbcjcsICM4XQogICAgMHhiNmYwYTY4ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4
YjZmMGE2OTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhNjk2OiAgICBzdHIgICAg
cjcsIFtyNl0KICAgIDB4YjZmMGE2OTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGE2OWE6
ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjBhNjljOiAgICBsZHIgICAgcjIsIFty
MSwgIzIwXQogICAgMHhiNmYwYTY5ZTogICAgbW92dyAgIHIxMiwgIzMxNjE3CiAgICAweGI2ZjBh
NmEyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MTEKICAgIDB4YjZmMGE2YTY6ICAgIGJseCAgICByMTIK
ICAgIDB4YjZmMGE2YTg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMGE2YWE6ICAgIG1vdncg
ICByNiwgIzQ2MzQ4CiAgICAweGI2ZjBhNmFlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwYTZiMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjBhNmI0OiAgICBjbXAgICAgcjIs
ICMwCiAgICAweGI2ZjBhNmI2OiAgICBibmUgICAgMHhiNmYwYTZjMAogICAgMHhiNmYwYTZiODog
ICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwYTZiYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAw
eGI2ZjBhNmJlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMGE2YzA6ICAgIG1vdncgICByNiwgIzQy
MTI4CiAgICAweGI2ZjBhNmM0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYTZjODog
ICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBhNmNhOiAgICBtb3YgICAgcjAsIHI3CiAgICAw
eGI2ZjBhNmNjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwYTZkMDogICAgbW92dCAg
IHIzLCAjNDY3NzYKICAgIDB4YjZmMGE2ZDQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwYTZkNjog
ICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMGE2ZGE6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAweGI2ZjBhNmRlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMGE2ZTA6ICAgIGJ4
ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIG5hdGl2ZSBUYWlsIFdpdGggU2F2ZWQgVGFn
cyBDYWxsIHRyYW1wb2xpbmU6CiAgICBDb2RlIGF0IFsweGI2ZjBhNjIxLCAweGI2ZjBhNjgxKToK
ICAgIDB4YjZmMGE2MjA6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjBhNjI0OiAgICBzdHIg
ICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwYTYyODogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
IDB4YjZmMGE2MmM6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhNjMwOiAgICBzdHIg
ICAgcjcsIFtyNl0KICAgIDB4YjZmMGE2MzI6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGE2
MzQ6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjBhNjM2OiAgICBsZHIgICAgcjIs
IFtyMSwgIzIwXQogICAgMHhiNmYwYTYzODogICAgbGRyICAgIHIxMiwgW3IyLCAjMzZdCiAgICAw
eGI2ZjBhNjNjOiAgICBibHggICAgcjEyCiAgICAweGI2ZjBhNjNlOiAgICBtb3Z3ICAgcjYsICM0
NjM0OAogICAgMHhiNmYwYTY0MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGE2NDY6
ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwYTY0ODogICAgY21wICAgIHIyLCAjMAogICAg
MHhiNmYwYTY0YTogICAgYm5lICAgIDB4YjZmMGE2NTQKICAgIDB4YjZmMGE2NGM6ICAgIG1vdiAg
ICBzcCwgcjcKICAgIDB4YjZmMGE2NGU6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwYTY1
MjogICAgYnggICAgIGxyCiAgICAweGI2ZjBhNjU0OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAg
MHhiNmYwYTY1ODogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGE2NWM6ICAgIHN0ciAg
ICByNywgW3I2XQogICAgMHhiNmYwYTY1ZTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYTY2
MDogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMGE2NjQ6ICAgIG1vdnQgICByMywgIzQ2
Nzc2CiAgICAweGI2ZjBhNjY4OiAgICBibHggICAgcjMKICAgIDB4YjZmMGE2NmE6ICAgIG1vdncg
ICByNiwgIzQ2MTg4CiAgICAweGI2ZjBhNjZlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwYTY3MjogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjBhNjc0OiAgICBieCAgICAgcjEK
R2VuZXJhdGVkIEpJVCBjb2RlIGZvciBTcGVjaWFsaXplZCB0aHVuayBmb3IgY2hhckF0OgogICAg
Q29kZSBhdCBbMHhiNmYwYTU0MSwgMHhiNmYwYTYwMSk6CiAgICAweGI2ZjBhNTQwOiAgICBwdXNo
ICAge3I3LCBscn0KICAgIDB4YjZmMGE1NDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMGE1
NDY6ICAgIGxkciAgICByNiwgW3I3LCAjMjRdCiAgICAweGI2ZjBhNTQ4OiAgICBjbXAgICAgcjIs
ICMyCiAgICAweGI2ZjBhNTRhOiAgICBpdHR0ICAgbmUKICAgIDB4YjZmMGE1NGM6ICAgIG5vcG5l
ICAKICAgIDB4YjZmMGE1NGU6ICAgIG5vcG5lICAKICAgIDB4YjZmMGE1NTI6ICAgIGJuZSAgICAw
eGI2NzBhNjIwCiAgICAweGI2ZjBhNTU2OiAgICBsZHIgICAgcjAsIFtyNywgIzMyXQogICAgMHhi
NmYwYTU1ODogICAgbGRyICAgIHI2LCBbcjcsICMzNl0KICAgIDB4YjZmMGE1NWE6ICAgIGNtbiAg
ICByNiwgIzUKICAgIDB4YjZmMGE1NWU6ICAgIGl0dHQgICBuZQogICAgMHhiNmYwYTU2MDogICAg
bm9wbmUgIAogICAgMHhiNmYwYTU2MjogICAgbm9wbmUgIAogICAgMHhiNmYwYTU2NjogICAgYm5l
ICAgIDB4YjY3MGE2MjAKICAgIDB4YjZmMGE1NmE6ICAgIGxkciAgICByNiwgW3IwXQogICAgMHhi
NmYwYTU2YzogICAgbW92dyAgIHIxMiwgIzMyNDE2CiAgICAweGI2ZjBhNTcwOiAgICBtb3Z0ICAg
cjEyLCAjNDYyMDcKICAgIDB4YjZmMGE1NzQ6ICAgIGNtcCAgICByNiwgcjEyCiAgICAweGI2ZjBh
NTc4OiAgICBpdHR0ICAgbmUKICAgIDB4YjZmMGE1N2E6ICAgIG5vcG5lICAKICAgIDB4YjZmMGE1
N2M6ICAgIG5vcG5lICAKICAgIDB4YjZmMGE1ODA6ICAgIGJuZSAgICAweGI2NzBhNjIwCiAgICAw
eGI2ZjBhNTg0OiAgICBsZHIgICAgcjIsIFtyMCwgIzEyXQogICAgMHhiNmYwYTU4NjogICAgbGRy
ICAgIHIwLCBbcjAsICMxNl0KICAgIDB4YjZmMGE1ODg6ICAgIHRzdCAgICByMCwgcjAKICAgIDB4
YjZmMGE1OGE6ICAgIGl0dHQgICBlcQogICAgMHhiNmYwYTU4YzogICAgbm9wZXEgIAogICAgMHhi
NmYwYTU4ZTogICAgbm9wZXEgIAogICAgMHhiNmYwYTU5MjogICAgYmVxICAgIDB4YjY3MGE2MjAK
ICAgIDB4YjZmMGE1OTY6ICAgIGxkciAgICByMSwgW3I3LCAjNDBdCiAgICAweGI2ZjBhNTk4OiAg
ICBsZHIgICAgcjYsIFtyNywgIzQ0XQogICAgMHhiNmYwYTU5YTogICAgY21wICAgIHI2LCAjNDI5
NDk2NzI5NQogICAgMHhiNmYwYTU5ZTogICAgaXR0dCAgIG5lCiAgICAweGI2ZjBhNWEwOiAgICBu
b3BuZSAgCiAgICAweGI2ZjBhNWEyOiAgICBub3BuZSAgCiAgICAweGI2ZjBhNWE2OiAgICBibmUg
ICAgMHhiNjcwYTYyMAogICAgMHhiNmYwYTVhYTogICAgY21wICAgIHIxLCByMgogICAgMHhiNmYw
YTVhYzogICAgaXR0dCAgIGhzCiAgICAweGI2ZjBhNWFlOiAgICBub3BocyAgCiAgICAweGI2ZjBh
NWIwOiAgICBub3BocyAgCiAgICAweGI2ZjBhNWI0OiAgICBiaHMgICAgMHhiNjcwYTYyMAogICAg
MHhiNmYwYTViODogICAgbGRyICAgIHIyLCBbcjAsICMxMl0KICAgIDB4YjZmMGE1YmE6ICAgIGxk
ciAgICByMCwgW3IwLCAjOF0KICAgIDB4YjZmMGE1YmM6ICAgIHRzdCAgICByMiwgIzgKICAgIDB4
YjZmMGE1YzA6ICAgIGJlcSAgICAweGI2ZjBhNWM2CiAgICAweGI2ZjBhNWMyOiAgICBsZHJiICAg
cjAsIFtyMCwgcjFdCiAgICAweGI2ZjBhNWM0OiAgICBiICAgICAgMHhiNmYwYTVjYQogICAgMHhi
NmYwYTVjNjogICAgbGRyaCAgIHIwLCBbcjAsIHIxLCAjMV0KICAgIDB4YjZmMGE1Y2E6ICAgIGNt
cCAgICByMCwgIzI1NgogICAgMHhiNmYwYTVjZTogICAgaXR0dCAgIGhzCiAgICAweGI2ZjBhNWQw
OiAgICBub3BocyAgCiAgICAweGI2ZjBhNWQyOiAgICBub3BocyAgCiAgICAweGI2ZjBhNWQ2OiAg
ICBiaHMgICAgMHhiNjcwYTYyMAogICAgMHhiNmYwYTVkYTogICAgbW92dyAgIHIxLCAjNDI0MDgK
ICAgIDB4YjZmMGE1ZGU6ICAgIG1vdnQgICByMSwgIzQ2MjA3CiAgICAweGI2ZjBhNWUyOiAgICBs
ZHIgICAgcjAsIFtyMSwgcjAsICMyXQogICAgMHhiNmYwYTVlNjogICAgdHN0ICAgIHIwLCByMAog
ICAgMHhiNmYwYTVlODogICAgaXR0dCAgIGVxCiAgICAweGI2ZjBhNWVhOiAgICBub3BlcSAgCiAg
ICAweGI2ZjBhNWVjOiAgICBub3BlcSAgCiAgICAweGI2ZjBhNWYwOiAgICBiZXEgICAgMHhiNjcw
YTYyMAogICAgMHhiNmYwYTVmNDogICAgbXZuICAgIHIxLCAjNAogICAgMHhiNmYwYTVmODogICAg
bW92ICAgIHNwLCByNwogICAgMHhiNmYwYTVmYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2
ZjBhNWZlOiAgICBieCAgICAgbHIKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBTcGVjaWFsaXplZCB0
aHVuayBmb3IgY2hhckNvZGVBdDoKICAgIENvZGUgYXQgWzB4YjZmMGE0ODEsIDB4YjZmMGE1MjEp
OgogICAgMHhiNmYwYTQ4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjBhNDg0OiAgICBt
b3YgICAgcjcsIHNwCiAgICAweGI2ZjBhNDg2OiAgICBsZHIgICAgcjYsIFtyNywgIzI0XQogICAg
MHhiNmYwYTQ4ODogICAgY21wICAgIHIyLCAjMgogICAgMHhiNmYwYTQ4YTogICAgaXR0dCAgIG5l
CiAgICAweGI2ZjBhNDhjOiAgICBub3BuZSAgCiAgICAweGI2ZjBhNDhlOiAgICBub3BuZSAgCiAg
ICAweGI2ZjBhNDkyOiAgICBibmUgICAgMHhiNjcwYTYyMAogICAgMHhiNmYwYTQ5NjogICAgbGRy
ICAgIHIwLCBbcjcsICMzMl0KICAgIDB4YjZmMGE0OTg6ICAgIGxkciAgICByNiwgW3I3LCAjMzZd
CiAgICAweGI2ZjBhNDlhOiAgICBjbW4gICAgcjYsICM1CiAgICAweGI2ZjBhNDllOiAgICBpdHR0
ICAgbmUKICAgIDB4YjZmMGE0YTA6ICAgIG5vcG5lICAKICAgIDB4YjZmMGE0YTI6ICAgIG5vcG5l
ICAKICAgIDB4YjZmMGE0YTY6ICAgIGJuZSAgICAweGI2NzBhNjIwCiAgICAweGI2ZjBhNGFhOiAg
ICBsZHIgICAgcjYsIFtyMF0KICAgIDB4YjZmMGE0YWM6ICAgIG1vdncgICByMTIsICMzMjQxNgog
ICAgMHhiNmYwYTRiMDogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI2ZjBhNGI0OiAgICBj
bXAgICAgcjYsIHIxMgogICAgMHhiNmYwYTRiODogICAgaXR0dCAgIG5lCiAgICAweGI2ZjBhNGJh
OiAgICBub3BuZSAgCiAgICAweGI2ZjBhNGJjOiAgICBub3BuZSAgCiAgICAweGI2ZjBhNGMwOiAg
ICBibmUgICAgMHhiNjcwYTYyMAogICAgMHhiNmYwYTRjNDogICAgbGRyICAgIHIyLCBbcjAsICMx
Ml0KICAgIDB4YjZmMGE0YzY6ICAgIGxkciAgICByMCwgW3IwLCAjMTZdCiAgICAweGI2ZjBhNGM4
OiAgICB0c3QgICAgcjAsIHIwCiAgICAweGI2ZjBhNGNhOiAgICBpdHR0ICAgZXEKICAgIDB4YjZm
MGE0Y2M6ICAgIG5vcGVxICAKICAgIDB4YjZmMGE0Y2U6ICAgIG5vcGVxICAKICAgIDB4YjZmMGE0
ZDI6ICAgIGJlcSAgICAweGI2NzBhNjIwCiAgICAweGI2ZjBhNGQ2OiAgICBsZHIgICAgcjEsIFty
NywgIzQwXQogICAgMHhiNmYwYTRkODogICAgbGRyICAgIHI2LCBbcjcsICM0NF0KICAgIDB4YjZm
MGE0ZGE6ICAgIGNtcCAgICByNiwgIzQyOTQ5NjcyOTUKICAgIDB4YjZmMGE0ZGU6ICAgIGl0dHQg
ICBuZQogICAgMHhiNmYwYTRlMDogICAgbm9wbmUgIAogICAgMHhiNmYwYTRlMjogICAgbm9wbmUg
IAogICAgMHhiNmYwYTRlNjogICAgYm5lICAgIDB4YjY3MGE2MjAKICAgIDB4YjZmMGE0ZWE6ICAg
IGNtcCAgICByMSwgcjIKICAgIDB4YjZmMGE0ZWM6ICAgIGl0dHQgICBocwogICAgMHhiNmYwYTRl
ZTogICAgbm9waHMgIAogICAgMHhiNmYwYTRmMDogICAgbm9waHMgIAogICAgMHhiNmYwYTRmNDog
ICAgYmhzICAgIDB4YjY3MGE2MjAKICAgIDB4YjZmMGE0Zjg6ICAgIGxkciAgICByMiwgW3IwLCAj
MTJdCiAgICAweGI2ZjBhNGZhOiAgICBsZHIgICAgcjAsIFtyMCwgIzhdCiAgICAweGI2ZjBhNGZj
OiAgICB0c3QgICAgcjIsICM4CiAgICAweGI2ZjBhNTAwOiAgICBiZXEgICAgMHhiNmYwYTUwNgog
ICAgMHhiNmYwYTUwMjogICAgbGRyYiAgIHIwLCBbcjAsIHIxXQogICAgMHhiNmYwYTUwNDogICAg
YiAgICAgIDB4YjZmMGE1MGEKICAgIDB4YjZmMGE1MDY6ICAgIGxkcmggICByMCwgW3IwLCByMSwg
IzFdCiAgICAweGI2ZjBhNTBhOiAgICBtb3YgICAgcjEsICM0Mjk0OTY3Mjk1CiAgICAweGI2ZjBh
NTBlOiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjBhNTEwOiAgICBwb3AgICAge3I3LCBscn0K
ICAgIDB4YjZmMGE1MTQ6ICAgIGJ4ICAgICBscgpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBD
VEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjBhNDAxLCAweGI2ZjBhNDgxKToKICAg
IDB4YjZmMGE0MDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwYTQwNDogICAgbW92ICAg
IHI3LCBzcAogICAgMHhiNmYwYTQwNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMGE0MGE6
ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjBhNDBlOiAgICBtb3Z3ICAgcjYsICM0
MjEyOAogICAgMHhiNmYwYTQxMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGE0MTY6
ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYTQxODogICAgbW92ICAgIHIwLCByNwogICAg
MHhiNmYwYTQxYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMGE0MWM6ICAgIGxk
ciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjBhNDFlOiAgICBtb3Z3ICAgcjEyLCAjMzMwODEK
ICAgIDB4YjZmMGE0MjI6ICAgIG1vdnQgICByMTIsICM0NjgxMQogICAgMHhiNmYwYTQyNjogICAg
Ymx4ICAgIHIxMgogICAgMHhiNmYwYTQyODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwYTQy
YTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMGE0MmU6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjBhNDMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMGE0MzQ6ICAg
IGNtcCAgICByMiwgIzAKICAgIDB4YjZmMGE0MzY6ICAgIGJuZSAgICAweGI2ZjBhNDQwCiAgICAw
eGI2ZjBhNDM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjBhNDNhOiAgICBwb3AgICAge3I3
LCBscn0KICAgIDB4YjZmMGE0M2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwYTQ0MDogICAgbW92
dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGE0NDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAw
eGI2ZjBhNDQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGE0NGE6ICAgIG1vdiAgICBy
MCwgcjcKICAgIDB4YjZmMGE0NGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjBhNDUw
OiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwYTQ1NDogICAgYmx4ICAgIHIzCiAgICAw
eGI2ZjBhNDU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwYTQ1YTogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMGE0NWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYw
YTQ2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUg
Y2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMGEzODEsIDB4YjZmMGE0MDEpOgogICAgMHhiNmYwYTM4
MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjBhMzg0OiAgICBtb3YgICAgcjcsIHNwCiAg
ICAweGI2ZjBhMzg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwYTM4YTogICAgc3RyICAg
IHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMGEzOGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAw
eGI2ZjBhMzkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYTM5NjogICAgc3RyICAg
IHI3LCBbcjZdCiAgICAweGI2ZjBhMzk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBhMzlh
OiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwYTM5YzogICAgbGRyICAgIHIyLCBb
cjEsICMyMF0KICAgIDB4YjZmMGEzOWU6ICAgIG1vdncgICByMTIsICM1MDgwNQogICAgMHhiNmYw
YTNhMjogICAgbW92dCAgIHIxMiwgIzQ2ODExCiAgICAweGI2ZjBhM2E2OiAgICBibHggICAgcjEy
CiAgICAweGI2ZjBhM2E4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjBhM2FhOiAgICBtb3Z3
ICAgcjYsICM0NjM0OAogICAgMHhiNmYwYTNhZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMGEzYjI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwYTNiNDogICAgY21wICAgIHIy
LCAjMAogICAgMHhiNmYwYTNiNjogICAgYm5lICAgIDB4YjZmMGEzYzAKICAgIDB4YjZmMGEzYjg6
ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMGEzYmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAg
MHhiNmYwYTNiZTogICAgYnggICAgIGxyCiAgICAweGI2ZjBhM2MwOiAgICBtb3Z3ICAgcjYsICM0
MjEyOAogICAgMHhiNmYwYTNjNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGEzYzg6
ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYTNjYTogICAgbW92ICAgIHIwLCByNwogICAg
MHhiNmYwYTNjYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMGEzZDA6ICAgIG1vdnQg
ICByMywgIzQ2Nzc2CiAgICAweGI2ZjBhM2Q0OiAgICBibHggICAgcjMKICAgIDB4YjZmMGEzZDY6
ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjBhM2RhOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwYTNkZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjBhM2UwOiAgICBi
eCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAg
Q29kZSBhdCBbMHhiNmYwYTMwMSwgMHhiNmYwYTM4MSk6CiAgICAweGI2ZjBhMzAwOiAgICBwdXNo
ICAge3I3LCBscn0KICAgIDB4YjZmMGEzMDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMGEz
MDY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjBhMzBhOiAgICBzdHIgICAgcjEyLCBbcjcs
ICM4XQogICAgMHhiNmYwYTMwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGEzMTI6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhMzE2OiAgICBzdHIgICAgcjcsIFtyNl0K
ICAgIDB4YjZmMGEzMTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGEzMWE6ICAgIGxkciAg
ICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjBhMzFjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQog
ICAgMHhiNmYwYTMxZTogICAgbW92dyAgIHIxMiwgIzM1NDIxCiAgICAweGI2ZjBhMzIyOiAgICBt
b3Z0ICAgcjEyLCAjNDY4MTEKICAgIDB4YjZmMGEzMjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZm
MGEzMjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMGEzMmE6ICAgIG1vdncgICByNiwgIzQ2
MzQ4CiAgICAweGI2ZjBhMzJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYTMzMjog
ICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjBhMzM0OiAgICBjbXAgICAgcjIsICMwCiAgICAw
eGI2ZjBhMzM2OiAgICBibmUgICAgMHhiNmYwYTM0MAogICAgMHhiNmYwYTMzODogICAgbW92ICAg
IHNwLCByNwogICAgMHhiNmYwYTMzYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjBhMzNl
OiAgICBieCAgICAgbHIKICAgIDB4YjZmMGEzNDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAw
eGI2ZjBhMzQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYTM0ODogICAgc3RyICAg
IHI3LCBbcjZdCiAgICAweGI2ZjBhMzRhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBhMzRj
OiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwYTM1MDogICAgbW92dCAgIHIzLCAjNDY3
NzYKICAgIDB4YjZmMGEzNTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwYTM1NjogICAgbW92dyAg
IHI2LCAjNDYxODgKICAgIDB4YjZmMGEzNWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjBhMzVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMGEzNjA6ICAgIGJ4ICAgICByMQpH
ZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsw
eGI2ZjBhMjgxLCAweGI2ZjBhMzAxKToKICAgIDB4YjZmMGEyODA6ICAgIHB1c2ggICB7cjcsIGxy
fQogICAgMHhiNmYwYTI4NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwYTI4NjogICAgbW92
ICAgIHIxMiwgIzAKICAgIDB4YjZmMGEyOGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAw
eGI2ZjBhMjhlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYTI5MjogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMGEyOTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYw
YTI5ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYTI5YTogICAgbGRyICAgIHIxLCBbcjcs
ICMxNl0KICAgIDB4YjZmMGEyOWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjBh
MjllOiAgICBtb3Z3ICAgcjEyLCAjMzI1ODEKICAgIDB4YjZmMGEyYTI6ICAgIG1vdnQgICByMTIs
ICM0NjgxMQogICAgMHhiNmYwYTJhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwYTJhODogICAg
bW92ICAgIGxyLCByMwogICAgMHhiNmYwYTJhYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4
YjZmMGEyYWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhMmIyOiAgICBsZHIgICAg
cjYsIFtyNl0KICAgIDB4YjZmMGEyYjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMGEyYjY6
ICAgIGJuZSAgICAweGI2ZjBhMmMwCiAgICAweGI2ZjBhMmI4OiAgICBtb3YgICAgc3AsIHI3CiAg
ICAweGI2ZjBhMmJhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMGEyYmU6ICAgIGJ4ICAg
ICBscgogICAgMHhiNmYwYTJjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMGEyYzQ6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhMmM4OiAgICBzdHIgICAgcjcsIFtyNl0K
ICAgIDB4YjZmMGEyY2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGEyY2M6ICAgIG1vdncg
ICByMywgIzYzMjQ5CiAgICAweGI2ZjBhMmQwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhi
NmYwYTJkNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjBhMmQ2OiAgICBtb3Z3ICAgcjYsICM0NjE4
OAogICAgMHhiNmYwYTJkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGEyZGU6ICAg
IGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwYTJlMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBK
SVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMGEyMDEs
IDB4YjZmMGEyODEpOgogICAgMHhiNmYwYTIwMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2
ZjBhMjA0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjBhMjA2OiAgICBtb3YgICAgcjEyLCAj
MAogICAgMHhiNmYwYTIwYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMGEyMGU6
ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBhMjEyOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwYTIxNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBhMjE4OiAgICBt
b3YgICAgcjAsIHI3CiAgICAweGI2ZjBhMjFhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAg
MHhiNmYwYTIxYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMGEyMWU6ICAgIG1v
dncgICByMTIsICMzOTc3NwogICAgMHhiNmYwYTIyMjogICAgbW92dCAgIHIxMiwgIzQ2ODExCiAg
ICAweGI2ZjBhMjI2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjBhMjI4OiAgICBtb3YgICAgbHIs
IHIzCiAgICAweGI2ZjBhMjJhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwYTIyZTog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGEyMzI6ICAgIGxkciAgICByNiwgW3I2XQog
ICAgMHhiNmYwYTIzNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwYTIzNjogICAgYm5lICAg
IDB4YjZmMGEyNDAKICAgIDB4YjZmMGEyMzg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMGEy
M2E6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwYTIzZTogICAgYnggICAgIGxyCiAgICAw
eGI2ZjBhMjQwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwYTI0NDogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMGEyNDg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYw
YTI0YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYTI0YzogICAgbW92dyAgIHIzLCAjNjMy
NDkKICAgIDB4YjZmMGEyNTA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjBhMjU0OiAg
ICBibHggICAgcjMKICAgIDB4YjZmMGEyNTY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2
ZjBhMjVhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYTI1ZTogICAgbGRyICAgIHIx
LCBbcjZdCiAgICAweGI2ZjBhMjYwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZv
ciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwYTE4MSwgMHhiNmYwYTIw
MSk6CiAgICAweGI2ZjBhMTgwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMGExODQ6ICAg
IG1vdiAgICByNywgc3AKICAgIDB4YjZmMGExODY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2
ZjBhMThhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwYTE4ZTogICAgbW92dyAg
IHI2LCAjNDIxMjgKICAgIDB4YjZmMGExOTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjBhMTk2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGExOTg6ICAgIG1vdiAgICByMCwg
cjcKICAgIDB4YjZmMGExOWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjBhMTlj
OiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwYTE5ZTogICAgbW92dyAgIHIxMiwg
IzM5Nzg1CiAgICAweGI2ZjBhMWEyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MTEKICAgIDB4YjZmMGEx
YTY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMGExYTg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4
YjZmMGExYWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjBhMWFlOiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgMHhiNmYwYTFiMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjBh
MWI0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjBhMWI2OiAgICBibmUgICAgMHhiNmYwYTFj
MAogICAgMHhiNmYwYTFiODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwYTFiYTogICAgcG9w
ICAgIHtyNywgbHJ9CiAgICAweGI2ZjBhMWJlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMGExYzA6
ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBhMWM0OiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwYTFjODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjBhMWNhOiAgICBt
b3YgICAgcjAsIHI3CiAgICAweGI2ZjBhMWNjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhi
NmYwYTFkMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMGExZDQ6ICAgIGJseCAgICBy
MwogICAgMHhiNmYwYTFkNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMGExZGE6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhMWRlOiAgICBsZHIgICAgcjEsIFtyNl0KICAg
IDB4YjZmMGExZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkg
bmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjBhMTAxLCAweGI2ZjBhMTgxKToKICAgIDB4
YjZmMGExMDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwYTEwNDogICAgbW92ICAgIHI3
LCBzcAogICAgMHhiNmYwYTEwNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMGExMGE6ICAg
IHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjBhMTBlOiAgICBtb3Z3ICAgcjYsICM0MjEy
OAogICAgMHhiNmYwYTExMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGExMTY6ICAg
IHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYTExODogICAgbW92ICAgIHIwLCByNwogICAgMHhi
NmYwYTExYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMGExMWM6ICAgIGxkciAg
ICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjBhMTFlOiAgICBtb3Z3ICAgcjEyLCAjMTYxMwogICAg
MHhiNmYwYTEyMjogICAgbW92dCAgIHIxMiwgIzQ2ODEyCiAgICAweGI2ZjBhMTI2OiAgICBibHgg
ICAgcjEyCiAgICAweGI2ZjBhMTI4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjBhMTJhOiAg
ICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwYTEyZTogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgIDB4YjZmMGExMzI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwYTEzNDogICAgY21w
ICAgIHIyLCAjMAogICAgMHhiNmYwYTEzNjogICAgYm5lICAgIDB4YjZmMGExNDAKICAgIDB4YjZm
MGExMzg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMGExM2E6ICAgIHBvcCAgICB7cjcsIGxy
fQogICAgMHhiNmYwYTEzZTogICAgYnggICAgIGxyCiAgICAweGI2ZjBhMTQwOiAgICBtb3Z3ICAg
cjYsICM0MjEyOAogICAgMHhiNmYwYTE0NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZm
MGExNDg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwYTE0YTogICAgbW92ICAgIHIwLCBy
NwogICAgMHhiNmYwYTE0YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMGExNTA6ICAg
IG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjBhMTU0OiAgICBibHggICAgcjMKICAgIDB4YjZm
MGExNTY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjBhMTVhOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwYTE1ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjBhMTYw
OiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxs
OgogICAgQ29kZSBhdCBbMHhiNmYwYTA4MSwgMHhiNmYwYTEwMSk6CiAgICAweGI2ZjBhMDgwOiAg
ICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMGEwODQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4
YjZmMGEwODY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjBhMDhhOiAgICBzdHIgICAgcjEy
LCBbcjcsICM4XQogICAgMHhiNmYwYTA4ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZm
MGEwOTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhMDk2OiAgICBzdHIgICAgcjcs
IFtyNl0KICAgIDB4YjZmMGEwOTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMGEwOWE6ICAg
IGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjBhMDljOiAgICBsZHIgICAgcjIsIFtyMSwg
IzIwXQogICAgMHhiNmYwYTA5ZTogICAgbW92dyAgIHIxMiwgIzc5OTcKICAgIDB4YjZmMGEwYTI6
ICAgIG1vdnQgICByMTIsICM0NjgxMgogICAgMHhiNmYwYTBhNjogICAgYmx4ICAgIHIxMgogICAg
MHhiNmYwYTBhODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwYTBhYTogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgIDB4YjZmMGEwYWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBh
MGIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMGEwYjQ6ICAgIGNtcCAgICByMiwgIzAK
ICAgIDB4YjZmMGEwYjY6ICAgIGJuZSAgICAweGI2ZjBhMGMwCiAgICAweGI2ZjBhMGI4OiAgICBt
b3YgICAgc3AsIHI3CiAgICAweGI2ZjBhMGJhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZm
MGEwYmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwYTBjMDogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgIDB4YjZmMGEwYzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjBhMGM4OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMGEwY2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZm
MGEwY2M6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjBhMGQwOiAgICBtb3Z0ICAgcjMs
ICM0Njc3NgogICAgMHhiNmYwYTBkNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjBhMGQ2OiAgICBt
b3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwYTBkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMGEwZGU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwYTBlMDogICAgYnggICAg
IHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUg
YXQgWzB4YjZmMGEwMDEsIDB4YjZmMGEwODEpOgogICAgMHhiNmYwYTAwMDogICAgcHVzaCAgIHty
NywgbHJ9CiAgICAweGI2ZjBhMDA0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjBhMDA2OiAg
ICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwYTAwYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0K
ICAgIDB4YjZmMGEwMGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjBhMDEyOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYTAxNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjBhMDE4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjBhMDFhOiAgICBsZHIgICAgcjEs
IFtyNywgIzE2XQogICAgMHhiNmYwYTAxYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4
YjZmMGEwMWU6ICAgIG1vdncgICByMTIsICMzNzUzMwogICAgMHhiNmYwYTAyMjogICAgbW92dCAg
IHIxMiwgIzQ2ODExCiAgICAweGI2ZjBhMDI2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjBhMDI4
OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjBhMDJhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAog
ICAgMHhiNmYwYTAyZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGEwMzI6ICAgIGxk
ciAgICByNiwgW3I2XQogICAgMHhiNmYwYTAzNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYw
YTAzNjogICAgYm5lICAgIDB4YjZmMGEwNDAKICAgIDB4YjZmMGEwMzg6ICAgIG1vdiAgICBzcCwg
cjcKICAgIDB4YjZmMGEwM2E6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwYTAzZTogICAg
YnggICAgIGxyCiAgICAweGI2ZjBhMDQwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYw
YTA0NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMGEwNDg6ICAgIHN0ciAgICByNywg
W3I2XQogICAgMHhiNmYwYTA0YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwYTA0YzogICAg
bW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMGEwNTA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAg
ICAweGI2ZjBhMDU0OiAgICBibHggICAgcjMKICAgIDB4YjZmMGEwNTY6ICAgIG1vdncgICByNiwg
IzQ2MTg4CiAgICAweGI2ZjBhMDVhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwYTA1
ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjBhMDYwOiAgICBieCAgICAgcjEKR2VuZXJh
dGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYw
OWY4MSwgMHhiNmYwYTAwMSk6CiAgICAweGI2ZjA5ZjgwOiAgICBwdXNoICAge3I3LCBscn0KICAg
IDB4YjZmMDlmODQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDlmODY6ICAgIG1vdiAgICBy
MTIsICMwCiAgICAweGI2ZjA5ZjhhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYw
OWY4ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDlmOTI6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA5Zjk2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDlmOTg6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDlmOWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZd
CiAgICAweGI2ZjA5ZjljOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwOWY5ZTog
ICAgbW92dyAgIHIxMiwgIzM4MDY5CiAgICAweGI2ZjA5ZmEyOiAgICBtb3Z0ICAgcjEyLCAjNDY4
MTEKICAgIDB4YjZmMDlmYTY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDlmYTg6ICAgIG1vdiAg
ICBsciwgcjMKICAgIDB4YjZmMDlmYWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA5
ZmFlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOWZiMjogICAgbGRyICAgIHI2LCBb
cjZdCiAgICAweGI2ZjA5ZmI0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA5ZmI2OiAgICBi
bmUgICAgMHhiNmYwOWZjMAogICAgMHhiNmYwOWZiODogICAgbW92ICAgIHNwLCByNwogICAgMHhi
NmYwOWZiYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA5ZmJlOiAgICBieCAgICAgbHIK
ICAgIDB4YjZmMDlmYzA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA5ZmM0OiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOWZjODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjA5ZmNhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA5ZmNjOiAgICBtb3Z3ICAgcjMs
ICM2MzI0OQogICAgMHhiNmYwOWZkMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDlm
ZDQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwOWZkNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAg
IDB4YjZmMDlmZGE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5ZmRlOiAgICBsZHIg
ICAgcjEsIFtyNl0KICAgIDB4YjZmMDlmZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNv
ZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA5ZjAxLCAweGI2
ZjA5ZjgxKToKICAgIDB4YjZmMDlmMDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwOWYw
NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwOWYwNjogICAgbW92ICAgIHIxMiwgIzAKICAg
IDB4YjZmMDlmMGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA5ZjBlOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwOWYxMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDlmMTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwOWYxODogICAgbW92ICAg
IHIwLCByNwogICAgMHhiNmYwOWYxYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZm
MDlmMWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA5ZjFlOiAgICBtb3Z3ICAg
cjEyLCAjMzE3MzcKICAgIDB4YjZmMDlmMjI6ICAgIG1vdnQgICByMTIsICM0NjgxMQogICAgMHhi
NmYwOWYyNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwOWYyODogICAgbW92ICAgIGxyLCByMwog
ICAgMHhiNmYwOWYyYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDlmMmU6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5ZjMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4
YjZmMDlmMzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDlmMzY6ICAgIGJuZSAgICAweGI2
ZjA5ZjQwCiAgICAweGI2ZjA5ZjM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA5ZjNhOiAg
ICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDlmM2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYw
OWY0MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDlmNDQ6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA5ZjQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDlmNGE6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDlmNGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAg
ICAweGI2ZjA5ZjUwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwOWY1NDogICAgYmx4
ICAgIHIzCiAgICAweGI2ZjA5ZjU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwOWY1
YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDlmNWU6ICAgIGxkciAgICByMSwgW3I2
XQogICAgMHhiNmYwOWY2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklU
IENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDllODEsIDB4YjZmMDlmMDEpOgog
ICAgMHhiNmYwOWU4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA5ZTg0OiAgICBtb3Yg
ICAgcjcsIHNwCiAgICAweGI2ZjA5ZTg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwOWU4
YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDllOGU6ICAgIG1vdncgICByNiwg
IzQyMTI4CiAgICAweGI2ZjA5ZTkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOWU5
NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA5ZTk4OiAgICBtb3YgICAgcjAsIHI3CiAg
ICAweGI2ZjA5ZTlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwOWU5YzogICAg
bGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDllOWU6ICAgIG1vdncgICByMTIsICMzNDM3
NwogICAgMHhiNmYwOWVhMjogICAgbW92dCAgIHIxMiwgIzQ2ODExCiAgICAweGI2ZjA5ZWE2OiAg
ICBibHggICAgcjEyCiAgICAweGI2ZjA5ZWE4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA5
ZWFhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwOWVhZTogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDllYjI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwOWViNDog
ICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwOWViNjogICAgYm5lICAgIDB4YjZmMDllYzAKICAg
IDB4YjZmMDllYjg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDllYmE6ICAgIHBvcCAgICB7
cjcsIGxyfQogICAgMHhiNmYwOWViZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA5ZWMwOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwOWVjNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDllYzg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwOWVjYTogICAgbW92ICAg
IHIwLCByNwogICAgMHhiNmYwOWVjYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDll
ZDA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA5ZWQ0OiAgICBibHggICAgcjMKICAg
IDB4YjZmMDllZDY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA5ZWRhOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOWVkZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2
ZjA5ZWUwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2
ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwOWUwMSwgMHhiNmYwOWU4MSk6CiAgICAweGI2ZjA5
ZTAwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDllMDQ6ICAgIG1vdiAgICByNywgc3AK
ICAgIDB4YjZmMDllMDY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA5ZTBhOiAgICBzdHIg
ICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwOWUwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
IDB4YjZmMDllMTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5ZTE2OiAgICBzdHIg
ICAgcjcsIFtyNl0KICAgIDB4YjZmMDllMTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDll
MWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA5ZTFjOiAgICBsZHIgICAgcjIs
IFtyMSwgIzIwXQogICAgMHhiNmYwOWUxZTogICAgbW92dyAgIHIxMiwgIzM0NTc3CiAgICAweGI2
ZjA5ZTIyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MTEKICAgIDB4YjZmMDllMjY6ICAgIGJseCAgICBy
MTIKICAgIDB4YjZmMDllMjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDllMmE6ICAgIG1v
dncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA5ZTJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwOWUzMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA5ZTM0OiAgICBjbXAgICAg
cjIsICMwCiAgICAweGI2ZjA5ZTM2OiAgICBibmUgICAgMHhiNmYwOWU0MAogICAgMHhiNmYwOWUz
ODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwOWUzYTogICAgcG9wICAgIHtyNywgbHJ9CiAg
ICAweGI2ZjA5ZTNlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDllNDA6ICAgIG1vdncgICByNiwg
IzQyMTI4CiAgICAweGI2ZjA5ZTQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOWU0
ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA5ZTRhOiAgICBtb3YgICAgcjAsIHI3CiAg
ICAweGI2ZjA5ZTRjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwOWU1MDogICAgbW92
dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDllNTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwOWU1
NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDllNWE6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjA5ZTVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDllNjA6ICAg
IGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAg
ICBDb2RlIGF0IFsweGI2ZjA5ZDgxLCAweGI2ZjA5ZTAxKToKICAgIDB4YjZmMDlkODA6ICAgIHB1
c2ggICB7cjcsIGxyfQogICAgMHhiNmYwOWQ4NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYw
OWQ4NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDlkOGE6ICAgIHN0ciAgICByMTIsIFty
NywgIzhdCiAgICAweGI2ZjA5ZDhlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwOWQ5
MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDlkOTY6ICAgIHN0ciAgICByNywgW3I2
XQogICAgMHhiNmYwOWQ5ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwOWQ5YTogICAgbGRy
ICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDlkOWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBd
CiAgICAweGI2ZjA5ZDllOiAgICBtb3Z3ICAgcjEyLCAjMTU3MwogICAgMHhiNmYwOWRhMjogICAg
bW92dCAgIHIxMiwgIzQ2ODEyCiAgICAweGI2ZjA5ZGE2OiAgICBibHggICAgcjEyCiAgICAweGI2
ZjA5ZGE4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA5ZGFhOiAgICBtb3Z3ICAgcjYsICM0
NjM0OAogICAgMHhiNmYwOWRhZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDlkYjI6
ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwOWRiNDogICAgY21wICAgIHIyLCAjMAogICAg
MHhiNmYwOWRiNjogICAgYm5lICAgIDB4YjZmMDlkYzAKICAgIDB4YjZmMDlkYjg6ICAgIG1vdiAg
ICBzcCwgcjcKICAgIDB4YjZmMDlkYmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwOWRi
ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA5ZGMwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAg
MHhiNmYwOWRjNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDlkYzg6ICAgIHN0ciAg
ICByNywgW3I2XQogICAgMHhiNmYwOWRjYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwOWRj
YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDlkZDA6ICAgIG1vdnQgICByMywgIzQ2
Nzc2CiAgICAweGI2ZjA5ZGQ0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDlkZDY6ICAgIG1vdncg
ICByNiwgIzQ2MTg4CiAgICAweGI2ZjA5ZGRhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwOWRkZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA5ZGUwOiAgICBieCAgICAgcjEK
R2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBb
MHhiNmYwOWQwMSwgMHhiNmYwOWQ4MSk6CiAgICAweGI2ZjA5ZDAwOiAgICBwdXNoICAge3I3LCBs
cn0KICAgIDB4YjZmMDlkMDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDlkMDY6ICAgIG1v
diAgICByMTIsICMwCiAgICAweGI2ZjA5ZDBhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAg
MHhiNmYwOWQwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDlkMTI6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5ZDE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZm
MDlkMTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDlkMWE6ICAgIGxkciAgICByMSwgW3I3
LCAjMTZdCiAgICAweGI2ZjA5ZDFjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYw
OWQxZTogICAgbW92dyAgIHIxMiwgIzE1OTMKICAgIDB4YjZmMDlkMjI6ICAgIG1vdnQgICByMTIs
ICM0NjgxMgogICAgMHhiNmYwOWQyNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwOWQyODogICAg
bW92ICAgIGxyLCByMwogICAgMHhiNmYwOWQyYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4
YjZmMDlkMmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5ZDMyOiAgICBsZHIgICAg
cjYsIFtyNl0KICAgIDB4YjZmMDlkMzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDlkMzY6
ICAgIGJuZSAgICAweGI2ZjA5ZDQwCiAgICAweGI2ZjA5ZDM4OiAgICBtb3YgICAgc3AsIHI3CiAg
ICAweGI2ZjA5ZDNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDlkM2U6ICAgIGJ4ICAg
ICBscgogICAgMHhiNmYwOWQ0MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDlkNDQ6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5ZDQ4OiAgICBzdHIgICAgcjcsIFtyNl0K
ICAgIDB4YjZmMDlkNGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDlkNGM6ICAgIG1vdncg
ICByMywgIzYzMjQ5CiAgICAweGI2ZjA5ZDUwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhi
NmYwOWQ1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA5ZDU2OiAgICBtb3Z3ICAgcjYsICM0NjE4
OAogICAgMHhiNmYwOWQ1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDlkNWU6ICAg
IGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwOWQ2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBK
SVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDljODEs
IDB4YjZmMDlkMDEpOgogICAgMHhiNmYwOWM4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2
ZjA5Yzg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA5Yzg2OiAgICBtb3YgICAgcjEyLCAj
MAogICAgMHhiNmYwOWM4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDljOGU6
ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA5YzkyOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwOWM5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA5Yzk4OiAgICBt
b3YgICAgcjAsIHI3CiAgICAweGI2ZjA5YzlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAg
MHhiNmYwOWM5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDljOWU6ICAgIG1v
dncgICByMTIsICM1MTQ4NQogICAgMHhiNmYwOWNhMjogICAgbW92dCAgIHIxMiwgIzQ2ODExCiAg
ICAweGI2ZjA5Y2E2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA5Y2E4OiAgICBtb3YgICAgbHIs
IHIzCiAgICAweGI2ZjA5Y2FhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwOWNhZTog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDljYjI6ICAgIGxkciAgICByNiwgW3I2XQog
ICAgMHhiNmYwOWNiNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwOWNiNjogICAgYm5lICAg
IDB4YjZmMDljYzAKICAgIDB4YjZmMDljYjg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDlj
YmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwOWNiZTogICAgYnggICAgIGxyCiAgICAw
eGI2ZjA5Y2MwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwOWNjNDogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMDljYzg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYw
OWNjYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwOWNjYzogICAgbW92dyAgIHIzLCAjNjMy
NDkKICAgIDB4YjZmMDljZDA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA5Y2Q0OiAg
ICBibHggICAgcjMKICAgIDB4YjZmMDljZDY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2
ZjA5Y2RhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOWNkZTogICAgbGRyICAgIHIx
LCBbcjZdCiAgICAweGI2ZjA5Y2UwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZv
ciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwOWMwMSwgMHhiNmYwOWM4
MSk6CiAgICAweGI2ZjA5YzAwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDljMDQ6ICAg
IG1vdiAgICByNywgc3AKICAgIDB4YjZmMDljMDY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2
ZjA5YzBhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwOWMwZTogICAgbW92dyAg
IHI2LCAjNDIxMjgKICAgIDB4YjZmMDljMTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjA5YzE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDljMTg6ICAgIG1vdiAgICByMCwg
cjcKICAgIDB4YjZmMDljMWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA5YzFj
OiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwOWMxZTogICAgbW92dyAgIHIxMiwg
IzUyMTMzCiAgICAweGI2ZjA5YzIyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MTEKICAgIDB4YjZmMDlj
MjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDljMjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4
YjZmMDljMmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA5YzJlOiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgMHhiNmYwOWMzMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA5
YzM0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA5YzM2OiAgICBibmUgICAgMHhiNmYwOWM0
MAogICAgMHhiNmYwOWMzODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwOWMzYTogICAgcG9w
ICAgIHtyNywgbHJ9CiAgICAweGI2ZjA5YzNlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDljNDA6
ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA5YzQ0OiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwOWM0ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA5YzRhOiAgICBt
b3YgICAgcjAsIHI3CiAgICAweGI2ZjA5YzRjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhi
NmYwOWM1MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDljNTQ6ICAgIGJseCAgICBy
MwogICAgMHhiNmYwOWM1NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDljNWE6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5YzVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAg
IDB4YjZmMDljNjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkg
bmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA5YjgxLCAweGI2ZjA5YzAxKToKICAgIDB4
YjZmMDliODA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwOWI4NDogICAgbW92ICAgIHI3
LCBzcAogICAgMHhiNmYwOWI4NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDliOGE6ICAg
IHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA5YjhlOiAgICBtb3Z3ICAgcjYsICM0MjEy
OAogICAgMHhiNmYwOWI5MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDliOTY6ICAg
IHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwOWI5ODogICAgbW92ICAgIHIwLCByNwogICAgMHhi
NmYwOWI5YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDliOWM6ICAgIGxkciAg
ICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA5YjllOiAgICBtb3Z3ICAgcjEyLCAjNTIzNDkKICAg
IDB4YjZmMDliYTI6ICAgIG1vdnQgICByMTIsICM0NjgxMQogICAgMHhiNmYwOWJhNjogICAgYmx4
ICAgIHIxMgogICAgMHhiNmYwOWJhODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwOWJhYTog
ICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDliYWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAweGI2ZjA5YmIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDliYjQ6ICAgIGNt
cCAgICByMiwgIzAKICAgIDB4YjZmMDliYjY6ICAgIGJuZSAgICAweGI2ZjA5YmMwCiAgICAweGI2
ZjA5YmI4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA5YmJhOiAgICBwb3AgICAge3I3LCBs
cn0KICAgIDB4YjZmMDliYmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwOWJjMDogICAgbW92dyAg
IHI2LCAjNDIxMjgKICAgIDB4YjZmMDliYzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjA5YmM4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDliY2E6ICAgIG1vdiAgICByMCwg
cjcKICAgIDB4YjZmMDliY2M6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA5YmQwOiAg
ICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwOWJkNDogICAgYmx4ICAgIHIzCiAgICAweGI2
ZjA5YmQ2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwOWJkYTogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDliZGU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwOWJl
MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2Fs
bDoKICAgIENvZGUgYXQgWzB4YjZmMDliMDEsIDB4YjZmMDliODEpOgogICAgMHhiNmYwOWIwMDog
ICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA5YjA0OiAgICBtb3YgICAgcjcsIHNwCiAgICAw
eGI2ZjA5YjA2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwOWIwYTogICAgc3RyICAgIHIx
MiwgW3I3LCAjOF0KICAgIDB4YjZmMDliMGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2
ZjA5YjEyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOWIxNjogICAgc3RyICAgIHI3
LCBbcjZdCiAgICAweGI2ZjA5YjE4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA5YjFhOiAg
ICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwOWIxYzogICAgbGRyICAgIHIyLCBbcjEs
ICMyMF0KICAgIDB4YjZmMDliMWU6ICAgIG1vdncgICByMTIsICM1MjU2NQogICAgMHhiNmYwOWIy
MjogICAgbW92dCAgIHIxMiwgIzQ2ODExCiAgICAweGI2ZjA5YjI2OiAgICBibHggICAgcjEyCiAg
ICAweGI2ZjA5YjI4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA5YjJhOiAgICBtb3Z3ICAg
cjYsICM0NjM0OAogICAgMHhiNmYwOWIyZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZm
MDliMzI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwOWIzNDogICAgY21wICAgIHIyLCAj
MAogICAgMHhiNmYwOWIzNjogICAgYm5lICAgIDB4YjZmMDliNDAKICAgIDB4YjZmMDliMzg6ICAg
IG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDliM2E6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhi
NmYwOWIzZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA5YjQwOiAgICBtb3Z3ICAgcjYsICM0MjEy
OAogICAgMHhiNmYwOWI0NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDliNDg6ICAg
IHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwOWI0YTogICAgbW92ICAgIHIwLCByNwogICAgMHhi
NmYwOWI0YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDliNTA6ICAgIG1vdnQgICBy
MywgIzQ2Nzc2CiAgICAweGI2ZjA5YjU0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDliNTY6ICAg
IG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA5YjVhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwOWI1ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA5YjYwOiAgICBieCAg
ICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29k
ZSBhdCBbMHhiNmYwOWE4MSwgMHhiNmYwOWIwMSk6CiAgICAweGI2ZjA5YTgwOiAgICBwdXNoICAg
e3I3LCBscn0KICAgIDB4YjZmMDlhODQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDlhODY6
ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA5YThhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4
XQogICAgMHhiNmYwOWE4ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDlhOTI6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5YTk2OiAgICBzdHIgICAgcjcsIFtyNl0KICAg
IDB4YjZmMDlhOTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDlhOWE6ICAgIGxkciAgICBy
MSwgW3I3LCAjMTZdCiAgICAweGI2ZjA5YTljOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAg
MHhiNmYwOWE5ZTogICAgbW92dyAgIHIxMiwgIzUzMzA1CiAgICAweGI2ZjA5YWEyOiAgICBtb3Z0
ICAgcjEyLCAjNDY4MTEKICAgIDB4YjZmMDlhYTY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDlh
YTg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDlhYWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4
CiAgICAweGI2ZjA5YWFlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOWFiMjogICAg
bGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA5YWI0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2
ZjA5YWI2OiAgICBibmUgICAgMHhiNmYwOWFjMAogICAgMHhiNmYwOWFiODogICAgbW92ICAgIHNw
LCByNwogICAgMHhiNmYwOWFiYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA5YWJlOiAg
ICBieCAgICAgbHIKICAgIDB4YjZmMDlhYzA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2
ZjA5YWM0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOWFjODogICAgc3RyICAgIHI3
LCBbcjZdCiAgICAweGI2ZjA5YWNhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA5YWNjOiAg
ICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwOWFkMDogICAgbW92dCAgIHIzLCAjNDY3NzYK
ICAgIDB4YjZmMDlhZDQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwOWFkNjogICAgbW92dyAgIHI2
LCAjNDYxODgKICAgIDB4YjZmMDlhZGE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5
YWRlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDlhZTA6ICAgIGJ4ICAgICByMQpHZW5l
cmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2
ZjA5YTAxLCAweGI2ZjA5YTgxKToKICAgIDB4YjZmMDlhMDA6ICAgIHB1c2ggICB7cjcsIGxyfQog
ICAgMHhiNmYwOWEwNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwOWEwNjogICAgbW92ICAg
IHIxMiwgIzAKICAgIDB4YjZmMDlhMGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2
ZjA5YTBlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwOWExMjogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDlhMTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwOWEx
ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwOWExYTogICAgbGRyICAgIHIxLCBbcjcsICMx
Nl0KICAgIDB4YjZmMDlhMWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA5YTFl
OiAgICBtb3Z3ICAgcjEyLCAjNTI3ODEKICAgIDB4YjZmMDlhMjI6ICAgIG1vdnQgICByMTIsICM0
NjgxMQogICAgMHhiNmYwOWEyNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwOWEyODogICAgbW92
ICAgIGxyLCByMwogICAgMHhiNmYwOWEyYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZm
MDlhMmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5YTMyOiAgICBsZHIgICAgcjYs
IFtyNl0KICAgIDB4YjZmMDlhMzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDlhMzY6ICAg
IGJuZSAgICAweGI2ZjA5YTQwCiAgICAweGI2ZjA5YTM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAw
eGI2ZjA5YTNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDlhM2U6ICAgIGJ4ICAgICBs
cgogICAgMHhiNmYwOWE0MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDlhNDQ6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5YTQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAg
IDB4YjZmMDlhNGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDlhNGM6ICAgIG1vdncgICBy
MywgIzYzMjQ5CiAgICAweGI2ZjA5YTUwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYw
OWE1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA5YTU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAog
ICAgMHhiNmYwOWE1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDlhNWU6ICAgIGxk
ciAgICByMSwgW3I2XQogICAgMHhiNmYwOWE2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQg
Y29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDk5ODEsIDB4
YjZmMDlhMDEpOgogICAgMHhiNmYwOTk4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA5
OTg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA5OTg2OiAgICBtb3YgICAgcjEyLCAjMAog
ICAgMHhiNmYwOTk4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDk5OGU6ICAg
IG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA5OTkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwOTk5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA5OTk4OiAgICBtb3Yg
ICAgcjAsIHI3CiAgICAweGI2ZjA5OTlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhi
NmYwOTk5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDk5OWU6ICAgIG1vdncg
ICByMTIsICM1Mjk5NwogICAgMHhiNmYwOTlhMjogICAgbW92dCAgIHIxMiwgIzQ2ODExCiAgICAw
eGI2ZjA5OWE2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA5OWE4OiAgICBtb3YgICAgbHIsIHIz
CiAgICAweGI2ZjA5OWFhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwOTlhZTogICAg
bW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDk5YjI6ICAgIGxkciAgICByNiwgW3I2XQogICAg
MHhiNmYwOTliNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwOTliNjogICAgYm5lICAgIDB4
YjZmMDk5YzAKICAgIDB4YjZmMDk5Yjg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDk5YmE6
ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwOTliZTogICAgYnggICAgIGxyCiAgICAweGI2
ZjA5OWMwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwOTljNDogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDk5Yzg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwOTlj
YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwOTljYzogICAgbW92dyAgIHIzLCAjNjMyNDkK
ICAgIDB4YjZmMDk5ZDA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA5OWQ0OiAgICBi
bHggICAgcjMKICAgIDB4YjZmMDk5ZDY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA5
OWRhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOTlkZTogICAgbGRyICAgIHIxLCBb
cjZdCiAgICAweGI2ZjA5OWUwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBK
SVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwOTkwMSwgMHhiNmYwOTk4MSk6
CiAgICAweGI2ZjA5OTAwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDk5MDQ6ICAgIG1v
diAgICByNywgc3AKICAgIDB4YjZmMDk5MDY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA5
OTBhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwOTkwZTogICAgbW92dyAgIHI2
LCAjNDIxMjgKICAgIDB4YjZmMDk5MTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5
OTE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDk5MTg6ICAgIG1vdiAgICByMCwgcjcK
ICAgIDB4YjZmMDk5MWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA5OTFjOiAg
ICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwOTkxZTogICAgbW92dyAgIHIxMiwgIzUx
NzAxCiAgICAweGI2ZjA5OTIyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MTEKICAgIDB4YjZmMDk5MjY6
ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDk5Mjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZm
MDk5MmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA5OTJlOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwOTkzMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA5OTM0
OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA5OTM2OiAgICBibmUgICAgMHhiNmYwOTk0MAog
ICAgMHhiNmYwOTkzODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwOTkzYTogICAgcG9wICAg
IHtyNywgbHJ9CiAgICAweGI2ZjA5OTNlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDk5NDA6ICAg
IG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA5OTQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwOTk0ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA5OTRhOiAgICBtb3Yg
ICAgcjAsIHI3CiAgICAweGI2ZjA5OTRjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYw
OTk1MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDk5NTQ6ICAgIGJseCAgICByMwog
ICAgMHhiNmYwOTk1NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDk5NWE6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5OTVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4
YjZmMDk5NjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0
aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA5ODgxLCAweGI2ZjA5OTAxKToKICAgIDB4YjZm
MDk4ODA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwOTg4NDogICAgbW92ICAgIHI3LCBz
cAogICAgMHhiNmYwOTg4NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDk4OGE6ICAgIHN0
ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA5ODhlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgMHhiNmYwOTg5MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDk4OTY6ICAgIHN0
ciAgICByNywgW3I2XQogICAgMHhiNmYwOTg5ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYw
OTg5YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDk4OWM6ICAgIGxkciAgICBy
MiwgW3IxLCAjMjBdCiAgICAweGI2ZjA5ODllOiAgICBtb3Z3ICAgcjEyLCAjNTE5MTcKICAgIDB4
YjZmMDk4YTI6ICAgIG1vdnQgICByMTIsICM0NjgxMQogICAgMHhiNmYwOThhNjogICAgYmx4ICAg
IHIxMgogICAgMHhiNmYwOThhODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwOThhYTogICAg
bW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDk4YWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAweGI2ZjA5OGIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDk4YjQ6ICAgIGNtcCAg
ICByMiwgIzAKICAgIDB4YjZmMDk4YjY6ICAgIGJuZSAgICAweGI2ZjA5OGMwCiAgICAweGI2ZjA5
OGI4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA5OGJhOiAgICBwb3AgICAge3I3LCBscn0K
ICAgIDB4YjZmMDk4YmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwOThjMDogICAgbW92dyAgIHI2
LCAjNDIxMjgKICAgIDB4YjZmMDk4YzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5
OGM4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDk4Y2E6ICAgIG1vdiAgICByMCwgcjcK
ICAgIDB4YjZmMDk4Y2M6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA5OGQwOiAgICBt
b3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwOThkNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA5
OGQ2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwOThkYTogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDk4ZGU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwOThlMDog
ICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoK
ICAgIENvZGUgYXQgWzB4YjZmMDk4MDEsIDB4YjZmMDk4ODEpOgogICAgMHhiNmYwOTgwMDogICAg
cHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA5ODA0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2
ZjA5ODA2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwOTgwYTogICAgc3RyICAgIHIxMiwg
W3I3LCAjOF0KICAgIDB4YjZmMDk4MGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA5
ODEyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOTgxNjogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAweGI2ZjA5ODE4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA5ODFhOiAgICBs
ZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwOTgxYzogICAgbGRyICAgIHIyLCBbcjEsICMy
MF0KICAgIDB4YjZmMDk4MWU6ICAgIG1vdncgICByMTIsICM1MzYxMwogICAgMHhiNmYwOTgyMjog
ICAgbW92dCAgIHIxMiwgIzQ2ODExCiAgICAweGI2ZjA5ODI2OiAgICBibHggICAgcjEyCiAgICAw
eGI2ZjA5ODI4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA5ODJhOiAgICBtb3Z3ICAgcjYs
ICM0NjM0OAogICAgMHhiNmYwOTgyZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDk4
MzI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwOTgzNDogICAgY21wICAgIHIyLCAjMAog
ICAgMHhiNmYwOTgzNjogICAgYm5lICAgIDB4YjZmMDk4NDAKICAgIDB4YjZmMDk4Mzg6ICAgIG1v
diAgICBzcCwgcjcKICAgIDB4YjZmMDk4M2E6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYw
OTgzZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA5ODQwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgMHhiNmYwOTg0NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDk4NDg6ICAgIHN0
ciAgICByNywgW3I2XQogICAgMHhiNmYwOTg0YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYw
OTg0YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDk4NTA6ICAgIG1vdnQgICByMywg
IzQ2Nzc2CiAgICAweGI2ZjA5ODU0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDk4NTY6ICAgIG1v
dncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA5ODVhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwOTg1ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA5ODYwOiAgICBieCAgICAg
cjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBh
dCBbMHhiNmYwOTc4MSwgMHhiNmYwOTgwMSk6CiAgICAweGI2ZjA5NzgwOiAgICBwdXNoICAge3I3
LCBscn0KICAgIDB4YjZmMDk3ODQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDk3ODY6ICAg
IG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA5NzhhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQog
ICAgMHhiNmYwOTc4ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDk3OTI6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5Nzk2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4
YjZmMDk3OTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDk3OWE6ICAgIGxkciAgICByMSwg
W3I3LCAjMTZdCiAgICAweGI2ZjA5NzljOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhi
NmYwOTc5ZTogICAgbW92dyAgIHIxMiwgIzU0NjEzCiAgICAweGI2ZjA5N2EyOiAgICBtb3Z0ICAg
cjEyLCAjNDY4MTEKICAgIDB4YjZmMDk3YTY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDk3YTg6
ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDk3YWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAg
ICAweGI2ZjA5N2FlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOTdiMjogICAgbGRy
ICAgIHI2LCBbcjZdCiAgICAweGI2ZjA5N2I0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA5
N2I2OiAgICBibmUgICAgMHhiNmYwOTdjMAogICAgMHhiNmYwOTdiODogICAgbW92ICAgIHNwLCBy
NwogICAgMHhiNmYwOTdiYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA5N2JlOiAgICBi
eCAgICAgbHIKICAgIDB4YjZmMDk3YzA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA5
N2M0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOTdjODogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAweGI2ZjA5N2NhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA5N2NjOiAgICBt
b3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwOTdkMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAg
IDB4YjZmMDk3ZDQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwOTdkNjogICAgbW92dyAgIHI2LCAj
NDYxODgKICAgIDB4YjZmMDk3ZGE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5N2Rl
OiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDk3ZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0
ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA5
NzAxLCAweGI2ZjA5NzgxKToKICAgIDB4YjZmMDk3MDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAg
MHhiNmYwOTcwNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwOTcwNjogICAgbW92ICAgIHIx
MiwgIzAKICAgIDB4YjZmMDk3MGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA5
NzBlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwOTcxMjogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDk3MTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwOTcxODog
ICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwOTcxYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0K
ICAgIDB4YjZmMDk3MWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA5NzFlOiAg
ICBtb3Z3ICAgcjEyLCAjNTQxMTMKICAgIDB4YjZmMDk3MjI6ICAgIG1vdnQgICByMTIsICM0Njgx
MQogICAgMHhiNmYwOTcyNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwOTcyODogICAgbW92ICAg
IGxyLCByMwogICAgMHhiNmYwOTcyYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDk3
MmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5NzMyOiAgICBsZHIgICAgcjYsIFty
Nl0KICAgIDB4YjZmMDk3MzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDk3MzY6ICAgIGJu
ZSAgICAweGI2ZjA5NzQwCiAgICAweGI2ZjA5NzM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2
ZjA5NzNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDk3M2U6ICAgIGJ4ICAgICBscgog
ICAgMHhiNmYwOTc0MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDk3NDQ6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5NzQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4
YjZmMDk3NGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDk3NGM6ICAgIG1vdncgICByMywg
IzYzMjQ5CiAgICAweGI2ZjA5NzUwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwOTc1
NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA5NzU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAg
MHhiNmYwOTc1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDk3NWU6ICAgIGxkciAg
ICByMSwgW3I2XQogICAgMHhiNmYwOTc2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29k
ZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDk2ODEsIDB4YjZm
MDk3MDEpOgogICAgMHhiNmYwOTY4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA5Njg0
OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA5Njg2OiAgICBtb3YgICAgcjEyLCAjMAogICAg
MHhiNmYwOTY4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDk2OGU6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA5NjkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwOTY5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA5Njk4OiAgICBtb3YgICAg
cjAsIHI3CiAgICAweGI2ZjA5NjlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYw
OTY5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDk2OWU6ICAgIG1vdncgICBy
MTIsICM0OTI0NQogICAgMHhiNmYwOTZhMjogICAgbW92dCAgIHIxMiwgIzQ2ODExCiAgICAweGI2
ZjA5NmE2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA5NmE4OiAgICBtb3YgICAgbHIsIHIzCiAg
ICAweGI2ZjA5NmFhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwOTZhZTogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDk2YjI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhi
NmYwOTZiNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwOTZiNjogICAgYm5lICAgIDB4YjZm
MDk2YzAKICAgIDB4YjZmMDk2Yjg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDk2YmE6ICAg
IHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwOTZiZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA5
NmMwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwOTZjNDogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDk2Yzg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwOTZjYTog
ICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwOTZjYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAg
IDB4YjZmMDk2ZDA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA5NmQ0OiAgICBibHgg
ICAgcjMKICAgIDB4YjZmMDk2ZDY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA5NmRh
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOTZkZTogICAgbGRyICAgIHIxLCBbcjZd
CiAgICAweGI2ZjA5NmUwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQg
Q1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwOTYwMSwgMHhiNmYwOTY4MSk6CiAg
ICAweGI2ZjA5NjAwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDk2MDQ6ICAgIG1vdiAg
ICByNywgc3AKICAgIDB4YjZmMDk2MDY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA5NjBh
OiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwOTYwZTogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgIDB4YjZmMDk2MTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5NjE2
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDk2MTg6ICAgIG1vdiAgICByMCwgcjcKICAg
IDB4YjZmMDk2MWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA5NjFjOiAgICBs
ZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwOTYxZTogICAgbW92dyAgIHIxMiwgIzM3NDM3
CiAgICAweGI2ZjA5NjIyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MTEKICAgIDB4YjZmMDk2MjY6ICAg
IGJseCAgICByMTIKICAgIDB4YjZmMDk2Mjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDk2
MmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA5NjJlOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgMHhiNmYwOTYzMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA5NjM0OiAg
ICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA5NjM2OiAgICBibmUgICAgMHhiNmYwOTY0MAogICAg
MHhiNmYwOTYzODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwOTYzYTogICAgcG9wICAgIHty
NywgbHJ9CiAgICAweGI2ZjA5NjNlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDk2NDA6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA5NjQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwOTY0ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA5NjRhOiAgICBtb3YgICAg
cjAsIHI3CiAgICAweGI2ZjA5NjRjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwOTY1
MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDk2NTQ6ICAgIGJseCAgICByMwogICAg
MHhiNmYwOTY1NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDk2NWE6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5NjVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZm
MDk2NjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZl
IGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA5NTgxLCAweGI2ZjA5NjAxKToKICAgIDB4YjZmMDk1
ODA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwOTU4NDogICAgbW92ICAgIHI3LCBzcAog
ICAgMHhiNmYwOTU4NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDk1OGE6ICAgIHN0ciAg
ICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA5NThlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAg
MHhiNmYwOTU5MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDk1OTY6ICAgIHN0ciAg
ICByNywgW3I2XQogICAgMHhiNmYwOTU5ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwOTU5
YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDk1OWM6ICAgIGxkciAgICByMiwg
W3IxLCAjMjBdCiAgICAweGI2ZjA5NTllOiAgICBtb3Z3ICAgcjEyLCAjMzc0NjkKICAgIDB4YjZm
MDk1YTI6ICAgIG1vdnQgICByMTIsICM0NjgxMQogICAgMHhiNmYwOTVhNjogICAgYmx4ICAgIHIx
MgogICAgMHhiNmYwOTVhODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwOTVhYTogICAgbW92
dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDk1YWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAw
eGI2ZjA5NWIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDk1YjQ6ICAgIGNtcCAgICBy
MiwgIzAKICAgIDB4YjZmMDk1YjY6ICAgIGJuZSAgICAweGI2ZjA5NWMwCiAgICAweGI2ZjA5NWI4
OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA5NWJhOiAgICBwb3AgICAge3I3LCBscn0KICAg
IDB4YjZmMDk1YmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwOTVjMDogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgIDB4YjZmMDk1YzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5NWM4
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDk1Y2E6ICAgIG1vdiAgICByMCwgcjcKICAg
IDB4YjZmMDk1Y2M6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA5NWQwOiAgICBtb3Z0
ICAgcjMsICM0Njc3NgogICAgMHhiNmYwOTVkNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA5NWQ2
OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwOTVkYTogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDk1ZGU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwOTVlMDogICAg
YnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAg
IENvZGUgYXQgWzB4YjZmMDk1MDEsIDB4YjZmMDk1ODEpOgogICAgMHhiNmYwOTUwMDogICAgcHVz
aCAgIHtyNywgbHJ9CiAgICAweGI2ZjA5NTA0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA5
NTA2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwOTUwYTogICAgc3RyICAgIHIxMiwgW3I3
LCAjOF0KICAgIDB4YjZmMDk1MGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA5NTEy
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOTUxNjogICAgc3RyICAgIHI3LCBbcjZd
CiAgICAweGI2ZjA5NTE4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA5NTFhOiAgICBsZHIg
ICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwOTUxYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0K
ICAgIDB4YjZmMDk1MWU6ICAgIG1vdncgICByMTIsICMzNzUwMQogICAgMHhiNmYwOTUyMjogICAg
bW92dCAgIHIxMiwgIzQ2ODExCiAgICAweGI2ZjA5NTI2OiAgICBibHggICAgcjEyCiAgICAweGI2
ZjA5NTI4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA5NTJhOiAgICBtb3Z3ICAgcjYsICM0
NjM0OAogICAgMHhiNmYwOTUyZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDk1MzI6
ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwOTUzNDogICAgY21wICAgIHIyLCAjMAogICAg
MHhiNmYwOTUzNjogICAgYm5lICAgIDB4YjZmMDk1NDAKICAgIDB4YjZmMDk1Mzg6ICAgIG1vdiAg
ICBzcCwgcjcKICAgIDB4YjZmMDk1M2E6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwOTUz
ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA5NTQwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAg
MHhiNmYwOTU0NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDk1NDg6ICAgIHN0ciAg
ICByNywgW3I2XQogICAgMHhiNmYwOTU0YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwOTU0
YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDk1NTA6ICAgIG1vdnQgICByMywgIzQ2
Nzc2CiAgICAweGI2ZjA5NTU0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDk1NTY6ICAgIG1vdncg
ICByNiwgIzQ2MTg4CiAgICAweGI2ZjA5NTVhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwOTU1ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA5NTYwOiAgICBieCAgICAgcjEK
R2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBb
MHhiNmYwOTQ4MSwgMHhiNmYwOTUwMSk6CiAgICAweGI2ZjA5NDgwOiAgICBwdXNoICAge3I3LCBs
cn0KICAgIDB4YjZmMDk0ODQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDk0ODY6ICAgIG1v
diAgICByMTIsICMwCiAgICAweGI2ZjA5NDhhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAg
MHhiNmYwOTQ4ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDk0OTI6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5NDk2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZm
MDk0OTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDk0OWE6ICAgIGxkciAgICByMSwgW3I3
LCAjMTZdCiAgICAweGI2ZjA5NDljOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYw
OTQ5ZTogICAgbW92dyAgIHIxMiwgIzM5NzkzCiAgICAweGI2ZjA5NGEyOiAgICBtb3Z0ICAgcjEy
LCAjNDY4MTEKICAgIDB4YjZmMDk0YTY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDk0YTg6ICAg
IG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDk0YWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAw
eGI2ZjA5NGFlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOTRiMjogICAgbGRyICAg
IHI2LCBbcjZdCiAgICAweGI2ZjA5NGI0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA5NGI2
OiAgICBibmUgICAgMHhiNmYwOTRjMAogICAgMHhiNmYwOTRiODogICAgbW92ICAgIHNwLCByNwog
ICAgMHhiNmYwOTRiYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA5NGJlOiAgICBieCAg
ICAgbHIKICAgIDB4YjZmMDk0YzA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA5NGM0
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOTRjODogICAgc3RyICAgIHI3LCBbcjZd
CiAgICAweGI2ZjA5NGNhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA5NGNjOiAgICBtb3Z3
ICAgcjMsICM2MzI0OQogICAgMHhiNmYwOTRkMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4
YjZmMDk0ZDQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwOTRkNjogICAgbW92dyAgIHI2LCAjNDYx
ODgKICAgIDB4YjZmMDk0ZGE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5NGRlOiAg
ICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDk0ZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQg
SklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA5NDAx
LCAweGI2ZjA5NDgxKToKICAgIDB4YjZmMDk0MDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhi
NmYwOTQwNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwOTQwNjogICAgbW92ICAgIHIxMiwg
IzAKICAgIDB4YjZmMDk0MGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA5NDBl
OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwOTQxMjogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDk0MTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwOTQxODogICAg
bW92ICAgIHIwLCByNwogICAgMHhiNmYwOTQxYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAg
IDB4YjZmMDk0MWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA5NDFlOiAgICBt
b3Z3ICAgcjEyLCAjNDAzOTcKICAgIDB4YjZmMDk0MjI6ICAgIG1vdnQgICByMTIsICM0NjgxMQog
ICAgMHhiNmYwOTQyNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwOTQyODogICAgbW92ICAgIGxy
LCByMwogICAgMHhiNmYwOTQyYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDk0MmU6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5NDMyOiAgICBsZHIgICAgcjYsIFtyNl0K
ICAgIDB4YjZmMDk0MzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDk0MzY6ICAgIGJuZSAg
ICAweGI2ZjA5NDQwCiAgICAweGI2ZjA5NDM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA5
NDNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDk0M2U6ICAgIGJ4ICAgICBscgogICAg
MHhiNmYwOTQ0MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDk0NDQ6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5NDQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZm
MDk0NGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDk0NGM6ICAgIG1vdncgICByMywgIzYz
MjQ5CiAgICAweGI2ZjA5NDUwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwOTQ1NDog
ICAgYmx4ICAgIHIzCiAgICAweGI2ZjA5NDU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhi
NmYwOTQ1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDk0NWU6ICAgIGxkciAgICBy
MSwgW3I2XQogICAgMHhiNmYwOTQ2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBm
b3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDkzODEsIDB4YjZmMDk0
MDEpOgogICAgMHhiNmYwOTM4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA5Mzg0OiAg
ICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA5Mzg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhi
NmYwOTM4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDkzOGU6ICAgIG1vdncg
ICByNiwgIzQyMTI4CiAgICAweGI2ZjA5MzkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwOTM5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA5Mzk4OiAgICBtb3YgICAgcjAs
IHI3CiAgICAweGI2ZjA5MzlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwOTM5
YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDkzOWU6ICAgIG1vdncgICByMTIs
ICM0MTAyNQogICAgMHhiNmYwOTNhMjogICAgbW92dCAgIHIxMiwgIzQ2ODExCiAgICAweGI2ZjA5
M2E2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA5M2E4OiAgICBtb3YgICAgbHIsIHIzCiAgICAw
eGI2ZjA5M2FhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwOTNhZTogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMDkzYjI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYw
OTNiNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwOTNiNjogICAgYm5lICAgIDB4YjZmMDkz
YzAKICAgIDB4YjZmMDkzYjg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDkzYmE6ICAgIHBv
cCAgICB7cjcsIGxyfQogICAgMHhiNmYwOTNiZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA5M2Mw
OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwOTNjNDogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDkzYzg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwOTNjYTogICAg
bW92ICAgIHIwLCByNwogICAgMHhiNmYwOTNjYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4
YjZmMDkzZDA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA5M2Q0OiAgICBibHggICAg
cjMKICAgIDB4YjZmMDkzZDY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA5M2RhOiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOTNkZTogICAgbGRyICAgIHIxLCBbcjZdCiAg
ICAweGI2ZjA5M2UwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJ
IG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwOTMwMSwgMHhiNmYwOTM4MSk6CiAgICAw
eGI2ZjA5MzAwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDkzMDQ6ICAgIG1vdiAgICBy
Nywgc3AKICAgIDB4YjZmMDkzMDY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA5MzBhOiAg
ICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwOTMwZTogICAgbW92dyAgIHI2LCAjNDIx
MjgKICAgIDB4YjZmMDkzMTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5MzE2OiAg
ICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDkzMTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4
YjZmMDkzMWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA5MzFjOiAgICBsZHIg
ICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwOTMxZTogICAgbW92dyAgIHIxMiwgIzQ4MzYxCiAg
ICAweGI2ZjA5MzIyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MTEKICAgIDB4YjZmMDkzMjY6ICAgIGJs
eCAgICByMTIKICAgIDB4YjZmMDkzMjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDkzMmE6
ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA5MzJlOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwOTMzMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA5MzM0OiAgICBj
bXAgICAgcjIsICMwCiAgICAweGI2ZjA5MzM2OiAgICBibmUgICAgMHhiNmYwOTM0MAogICAgMHhi
NmYwOTMzODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwOTMzYTogICAgcG9wICAgIHtyNywg
bHJ9CiAgICAweGI2ZjA5MzNlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDkzNDA6ICAgIG1vdncg
ICByNiwgIzQyMTI4CiAgICAweGI2ZjA5MzQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwOTM0ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA5MzRhOiAgICBtb3YgICAgcjAs
IHI3CiAgICAweGI2ZjA5MzRjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwOTM1MDog
ICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDkzNTQ6ICAgIGJseCAgICByMwogICAgMHhi
NmYwOTM1NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDkzNWE6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjA5MzVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDkz
NjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNh
bGw6CiAgICBDb2RlIGF0IFsweGI2ZjA5MjgxLCAweGI2ZjA5MzAxKToKICAgIDB4YjZmMDkyODA6
ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwOTI4NDogICAgbW92ICAgIHI3LCBzcAogICAg
MHhiNmYwOTI4NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDkyOGE6ICAgIHN0ciAgICBy
MTIsIFtyNywgIzhdCiAgICAweGI2ZjA5MjhlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhi
NmYwOTI5MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDkyOTY6ICAgIHN0ciAgICBy
NywgW3I2XQogICAgMHhiNmYwOTI5ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwOTI5YTog
ICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDkyOWM6ICAgIGxkciAgICByMiwgW3Ix
LCAjMjBdCiAgICAweGI2ZjA5MjllOiAgICBtb3Z3ICAgcjEyLCAjMzIzNzcKICAgIDB4YjZmMDky
YTI6ICAgIG1vdnQgICByMTIsICM0NjgxMQogICAgMHhiNmYwOTJhNjogICAgYmx4ICAgIHIxMgog
ICAgMHhiNmYwOTJhODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwOTJhYTogICAgbW92dyAg
IHI2LCAjNDYzNDgKICAgIDB4YjZmMDkyYWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjA5MmIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDkyYjQ6ICAgIGNtcCAgICByMiwg
IzAKICAgIDB4YjZmMDkyYjY6ICAgIGJuZSAgICAweGI2ZjA5MmMwCiAgICAweGI2ZjA5MmI4OiAg
ICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA5MmJhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4
YjZmMDkyYmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwOTJjMDogICAgbW92dyAgIHI2LCAjNDIx
MjgKICAgIDB4YjZmMDkyYzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5MmM4OiAg
ICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDkyY2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4
YjZmMDkyY2M6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA5MmQwOiAgICBtb3Z0ICAg
cjMsICM0Njc3NgogICAgMHhiNmYwOTJkNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA5MmQ2OiAg
ICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwOTJkYTogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgIDB4YjZmMDkyZGU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwOTJlMDogICAgYngg
ICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgU3BlY2lhbGl6ZWQgdGh1bmsgZm9yIGNoYXJD
b2RlQXQ6CiAgICBDb2RlIGF0IFsweGI2ZjA5MWMxLCAweGI2ZjA5MjYxKToKICAgIDB4YjZmMDkx
YzA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwOTFjNDogICAgbW92ICAgIHI3LCBzcAog
ICAgMHhiNmYwOTFjNjogICAgbGRyICAgIHI2LCBbcjcsICMyNF0KICAgIDB4YjZmMDkxYzg6ICAg
IGNtcCAgICByMiwgIzIKICAgIDB4YjZmMDkxY2E6ICAgIGl0dHQgICBuZQogICAgMHhiNmYwOTFj
YzogICAgbm9wbmUgIAogICAgMHhiNmYwOTFjZTogICAgbm9wbmUgIAogICAgMHhiNmYwOTFkMjog
ICAgYm5lICAgIDB4YjY3MGE2MjAKICAgIDB4YjZmMDkxZDY6ICAgIGxkciAgICByMCwgW3I3LCAj
MzJdCiAgICAweGI2ZjA5MWQ4OiAgICBsZHIgICAgcjYsIFtyNywgIzM2XQogICAgMHhiNmYwOTFk
YTogICAgY21uICAgIHI2LCAjNQogICAgMHhiNmYwOTFkZTogICAgaXR0dCAgIG5lCiAgICAweGI2
ZjA5MWUwOiAgICBub3BuZSAgCiAgICAweGI2ZjA5MWUyOiAgICBub3BuZSAgCiAgICAweGI2ZjA5
MWU2OiAgICBibmUgICAgMHhiNjcwYTYyMAogICAgMHhiNmYwOTFlYTogICAgbGRyICAgIHI2LCBb
cjBdCiAgICAweGI2ZjA5MWVjOiAgICBtb3Z3ICAgcjEyLCAjMzI0MTYKICAgIDB4YjZmMDkxZjA6
ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNmYwOTFmNDogICAgY21wICAgIHI2LCByMTIK
ICAgIDB4YjZmMDkxZjg6ICAgIGl0dHQgICBuZQogICAgMHhiNmYwOTFmYTogICAgbm9wbmUgIAog
ICAgMHhiNmYwOTFmYzogICAgbm9wbmUgIAogICAgMHhiNmYwOTIwMDogICAgYm5lICAgIDB4YjY3
MGE2MjAKICAgIDB4YjZmMDkyMDQ6ICAgIGxkciAgICByMiwgW3IwLCAjMTJdCiAgICAweGI2ZjA5
MjA2OiAgICBsZHIgICAgcjAsIFtyMCwgIzE2XQogICAgMHhiNmYwOTIwODogICAgdHN0ICAgIHIw
LCByMAogICAgMHhiNmYwOTIwYTogICAgaXR0dCAgIGVxCiAgICAweGI2ZjA5MjBjOiAgICBub3Bl
cSAgCiAgICAweGI2ZjA5MjBlOiAgICBub3BlcSAgCiAgICAweGI2ZjA5MjEyOiAgICBiZXEgICAg
MHhiNjcwYTYyMAogICAgMHhiNmYwOTIxNjogICAgbGRyICAgIHIxLCBbcjcsICM0MF0KICAgIDB4
YjZmMDkyMTg6ICAgIGxkciAgICByNiwgW3I3LCAjNDRdCiAgICAweGI2ZjA5MjFhOiAgICBjbXAg
ICAgcjYsICM0Mjk0OTY3Mjk1CiAgICAweGI2ZjA5MjFlOiAgICBpdHR0ICAgbmUKICAgIDB4YjZm
MDkyMjA6ICAgIG5vcG5lICAKICAgIDB4YjZmMDkyMjI6ICAgIG5vcG5lICAKICAgIDB4YjZmMDky
MjY6ICAgIGJuZSAgICAweGI2NzBhNjIwCiAgICAweGI2ZjA5MjJhOiAgICBjbXAgICAgcjEsIHIy
CiAgICAweGI2ZjA5MjJjOiAgICBpdHR0ICAgaHMKICAgIDB4YjZmMDkyMmU6ICAgIG5vcGhzICAK
ICAgIDB4YjZmMDkyMzA6ICAgIG5vcGhzICAKICAgIDB4YjZmMDkyMzQ6ICAgIGJocyAgICAweGI2
NzBhNjIwCiAgICAweGI2ZjA5MjM4OiAgICBsZHIgICAgcjIsIFtyMCwgIzEyXQogICAgMHhiNmYw
OTIzYTogICAgbGRyICAgIHIwLCBbcjAsICM4XQogICAgMHhiNmYwOTIzYzogICAgdHN0ICAgIHIy
LCAjOAogICAgMHhiNmYwOTI0MDogICAgYmVxICAgIDB4YjZmMDkyNDYKICAgIDB4YjZmMDkyNDI6
ICAgIGxkcmIgICByMCwgW3IwLCByMV0KICAgIDB4YjZmMDkyNDQ6ICAgIGIgICAgICAweGI2ZjA5
MjRhCiAgICAweGI2ZjA5MjQ2OiAgICBsZHJoICAgcjAsIFtyMCwgcjEsICMxXQogICAgMHhiNmYw
OTI0YTogICAgbW92ICAgIHIxLCAjNDI5NDk2NzI5NQogICAgMHhiNmYwOTI0ZTogICAgbW92ICAg
IHNwLCByNwogICAgMHhiNmYwOTI1MDogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA5MjU0
OiAgICBieCAgICAgbHIKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxs
OgogICAgQ29kZSBhdCBbMHhiNmYwOTE0MSwgMHhiNmYwOTFjMSk6CiAgICAweGI2ZjA5MTQwOiAg
ICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDkxNDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4
YjZmMDkxNDY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA5MTRhOiAgICBzdHIgICAgcjEy
LCBbcjcsICM4XQogICAgMHhiNmYwOTE0ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZm
MDkxNTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5MTU2OiAgICBzdHIgICAgcjcs
IFtyNl0KICAgIDB4YjZmMDkxNTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDkxNWE6ICAg
IGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA5MTVjOiAgICBsZHIgICAgcjIsIFtyMSwg
IzIwXQogICAgMHhiNmYwOTE1ZTogICAgbW92dyAgIHIxMiwgIzM0MzMKICAgIDB4YjZmMDkxNjI6
ICAgIG1vdnQgICByMTIsICM0NjgxMwogICAgMHhiNmYwOTE2NjogICAgYmx4ICAgIHIxMgogICAg
MHhiNmYwOTE2ODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwOTE2YTogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgIDB4YjZmMDkxNmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5
MTcyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDkxNzQ6ICAgIGNtcCAgICByMiwgIzAK
ICAgIDB4YjZmMDkxNzY6ICAgIGJuZSAgICAweGI2ZjA5MTgwCiAgICAweGI2ZjA5MTc4OiAgICBt
b3YgICAgc3AsIHI3CiAgICAweGI2ZjA5MTdhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZm
MDkxN2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwOTE4MDogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgIDB4YjZmMDkxODQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5MTg4OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDkxOGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZm
MDkxOGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA5MTkwOiAgICBtb3Z0ICAgcjMs
ICM0Njc3NgogICAgMHhiNmYwOTE5NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA5MTk2OiAgICBt
b3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwOTE5YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDkxOWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwOTFhMDogICAgYnggICAg
IHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUg
YXQgWzB4YjZmMDkwYzEsIDB4YjZmMDkxNDEpOgogICAgMHhiNmYwOTBjMDogICAgcHVzaCAgIHty
NywgbHJ9CiAgICAweGI2ZjA5MGM0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA5MGM2OiAg
ICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwOTBjYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0K
ICAgIDB4YjZmMDkwY2U6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA5MGQyOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOTBkNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjA5MGQ4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA5MGRhOiAgICBsZHIgICAgcjEs
IFtyNywgIzE2XQogICAgMHhiNmYwOTBkYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4
YjZmMDkwZGU6ICAgIG1vdncgICByMTIsICMyNTY2MQogICAgMHhiNmYwOTBlMjogICAgbW92dCAg
IHIxMiwgIzQ2Nzk4CiAgICAweGI2ZjA5MGU2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA5MGU4
OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA5MGVhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAog
ICAgMHhiNmYwOTBlZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDkwZjI6ICAgIGxk
ciAgICByNiwgW3I2XQogICAgMHhiNmYwOTBmNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYw
OTBmNjogICAgYm5lICAgIDB4YjZmMDkxMDAKICAgIDB4YjZmMDkwZjg6ICAgIG1vdiAgICBzcCwg
cjcKICAgIDB4YjZmMDkwZmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwOTBmZTogICAg
YnggICAgIGxyCiAgICAweGI2ZjA5MTAwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYw
OTEwNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDkxMDg6ICAgIHN0ciAgICByNywg
W3I2XQogICAgMHhiNmYwOTEwYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwOTEwYzogICAg
bW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDkxMTA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAg
ICAweGI2ZjA5MTE0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDkxMTY6ICAgIG1vdncgICByNiwg
IzQ2MTg4CiAgICAweGI2ZjA5MTFhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOTEx
ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA5MTIwOiAgICBieCAgICAgcjEKR2VuZXJh
dGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYw
OTA0MSwgMHhiNmYwOTBjMSk6CiAgICAweGI2ZjA5MDQwOiAgICBwdXNoICAge3I3LCBscn0KICAg
IDB4YjZmMDkwNDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDkwNDY6ICAgIG1vdiAgICBy
MTIsICMwCiAgICAweGI2ZjA5MDRhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYw
OTA0ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDkwNTI6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA5MDU2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDkwNTg6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDkwNWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZd
CiAgICAweGI2ZjA5MDVjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwOTA1ZTog
ICAgbW92dyAgIHIxMiwgIzU2OTg5CiAgICAweGI2ZjA5MDYyOiAgICBtb3Z0ICAgcjEyLCAjNDY4
MTQKICAgIDB4YjZmMDkwNjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDkwNjg6ICAgIG1vdiAg
ICBsciwgcjMKICAgIDB4YjZmMDkwNmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA5
MDZlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOTA3MjogICAgbGRyICAgIHI2LCBb
cjZdCiAgICAweGI2ZjA5MDc0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA5MDc2OiAgICBi
bmUgICAgMHhiNmYwOTA4MAogICAgMHhiNmYwOTA3ODogICAgbW92ICAgIHNwLCByNwogICAgMHhi
NmYwOTA3YTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA5MDdlOiAgICBieCAgICAgbHIK
ICAgIDB4YjZmMDkwODA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA5MDg0OiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwOTA4ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjA5MDhhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA5MDhjOiAgICBtb3Z3ICAgcjMs
ICM2MzI0OQogICAgMHhiNmYwOTA5MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDkw
OTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwOTA5NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAg
IDB4YjZmMDkwOWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA5MDllOiAgICBsZHIg
ICAgcjEsIFtyNl0KICAgIDB4YjZmMDkwYTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNv
ZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA0MDAxLCAweGI2
ZjA0MDgxKToKICAgIDB4YjZmMDQwMDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNDAw
NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNDAwNjogICAgbW92ICAgIHIxMiwgIzAKICAg
IDB4YjZmMDQwMGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA0MDBlOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNDAxMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDQwMTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNDAxODogICAgbW92ICAg
IHIwLCByNwogICAgMHhiNmYwNDAxYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZm
MDQwMWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA0MDFlOiAgICBtb3Z3ICAg
cjEyLCAjNTcyMDkKICAgIDB4YjZmMDQwMjI6ICAgIG1vdnQgICByMTIsICM0NjgxNAogICAgMHhi
NmYwNDAyNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNDAyODogICAgbW92ICAgIGxyLCByMwog
ICAgMHhiNmYwNDAyYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDQwMmU6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0MDMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4
YjZmMDQwMzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDQwMzY6ICAgIGJuZSAgICAweGI2
ZjA0MDQwCiAgICAweGI2ZjA0MDM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA0MDNhOiAg
ICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDQwM2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYw
NDA0MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDQwNDQ6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA0MDQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDQwNGE6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDQwNGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAg
ICAweGI2ZjA0MDUwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNDA1NDogICAgYmx4
ICAgIHIzCiAgICAweGI2ZjA0MDU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNDA1
YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDQwNWU6ICAgIGxkciAgICByMSwgW3I2
XQogICAgMHhiNmYwNDA2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklU
IENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDQwODEsIDB4YjZmMDQxMDEpOgog
ICAgMHhiNmYwNDA4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA0MDg0OiAgICBtb3Yg
ICAgcjcsIHNwCiAgICAweGI2ZjA0MDg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNDA4
YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDQwOGU6ICAgIG1vdncgICByNiwg
IzQyMTI4CiAgICAweGI2ZjA0MDkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNDA5
NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA0MDk4OiAgICBtb3YgICAgcjAsIHI3CiAg
ICAweGI2ZjA0MDlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNDA5YzogICAg
bGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDQwOWU6ICAgIG1vdncgICByMTIsICM1NjQ0
NQogICAgMHhiNmYwNDBhMjogICAgbW92dCAgIHIxMiwgIzQ2ODE0CiAgICAweGI2ZjA0MGE2OiAg
ICBibHggICAgcjEyCiAgICAweGI2ZjA0MGE4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA0
MGFhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNDBhZTogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDQwYjI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNDBiNDog
ICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwNDBiNjogICAgYm5lICAgIDB4YjZmMDQwYzAKICAg
IDB4YjZmMDQwYjg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDQwYmE6ICAgIHBvcCAgICB7
cjcsIGxyfQogICAgMHhiNmYwNDBiZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA0MGMwOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNDBjNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDQwYzg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNDBjYTogICAgbW92ICAg
IHIwLCByNwogICAgMHhiNmYwNDBjYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDQw
ZDA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA0MGQ0OiAgICBibHggICAgcjMKICAg
IDB4YjZmMDQwZDY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA0MGRhOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNDBkZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2
ZjA0MGUwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2
ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNDEwMSwgMHhiNmYwNDE4MSk6CiAgICAweGI2ZjA0
MTAwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDQxMDQ6ICAgIG1vdiAgICByNywgc3AK
ICAgIDB4YjZmMDQxMDY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA0MTBhOiAgICBzdHIg
ICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwNDEwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
IDB4YjZmMDQxMTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0MTE2OiAgICBzdHIg
ICAgcjcsIFtyNl0KICAgIDB4YjZmMDQxMTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDQx
MWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA0MTFjOiAgICBsZHIgICAgcjIs
IFtyMSwgIzIwXQogICAgMHhiNmYwNDExZTogICAgbW92dyAgIHIxMiwgIzU2NjY1CiAgICAweGI2
ZjA0MTIyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MTQKICAgIDB4YjZmMDQxMjY6ICAgIGJseCAgICBy
MTIKICAgIDB4YjZmMDQxMjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDQxMmE6ICAgIG1v
dncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA0MTJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwNDEzMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA0MTM0OiAgICBjbXAgICAg
cjIsICMwCiAgICAweGI2ZjA0MTM2OiAgICBibmUgICAgMHhiNmYwNDE0MAogICAgMHhiNmYwNDEz
ODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNDEzYTogICAgcG9wICAgIHtyNywgbHJ9CiAg
ICAweGI2ZjA0MTNlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDQxNDA6ICAgIG1vdncgICByNiwg
IzQyMTI4CiAgICAweGI2ZjA0MTQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNDE0
ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA0MTRhOiAgICBtb3YgICAgcjAsIHI3CiAg
ICAweGI2ZjA0MTRjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNDE1MDogICAgbW92
dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDQxNTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwNDE1
NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDQxNWE6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjA0MTVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDQxNjA6ICAg
IGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAg
ICBDb2RlIGF0IFsweGI2ZjA0MTgxLCAweGI2ZjA0MjAxKToKICAgIDB4YjZmMDQxODA6ICAgIHB1
c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNDE4NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYw
NDE4NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDQxOGE6ICAgIHN0ciAgICByMTIsIFty
NywgIzhdCiAgICAweGI2ZjA0MThlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNDE5
MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDQxOTY6ICAgIHN0ciAgICByNywgW3I2
XQogICAgMHhiNmYwNDE5ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNDE5YTogICAgbGRy
ICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDQxOWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBd
CiAgICAweGI2ZjA0MTllOiAgICBtb3Z3ICAgcjEyLCAjNjM4NzcKICAgIDB4YjZmMDQxYTI6ICAg
IG1vdnQgICByMTIsICM0NjgxNAogICAgMHhiNmYwNDFhNjogICAgYmx4ICAgIHIxMgogICAgMHhi
NmYwNDFhODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwNDFhYTogICAgbW92dyAgIHI2LCAj
NDYzNDgKICAgIDB4YjZmMDQxYWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0MWIy
OiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDQxYjQ6ICAgIGNtcCAgICByMiwgIzAKICAg
IDB4YjZmMDQxYjY6ICAgIGJuZSAgICAweGI2ZjA0MWMwCiAgICAweGI2ZjA0MWI4OiAgICBtb3Yg
ICAgc3AsIHI3CiAgICAweGI2ZjA0MWJhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDQx
YmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNDFjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
IDB4YjZmMDQxYzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0MWM4OiAgICBzdHIg
ICAgcjcsIFtyNl0KICAgIDB4YjZmMDQxY2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDQx
Y2M6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA0MWQwOiAgICBtb3Z0ICAgcjMsICM0
Njc3NgogICAgMHhiNmYwNDFkNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA0MWQ2OiAgICBtb3Z3
ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNDFkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMDQxZGU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNDFlMDogICAgYnggICAgIHIx
CkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQg
WzB4YjZmMDQyMDEsIDB4YjZmMDQyODEpOgogICAgMHhiNmYwNDIwMDogICAgcHVzaCAgIHtyNywg
bHJ9CiAgICAweGI2ZjA0MjA0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA0MjA2OiAgICBt
b3YgICAgcjEyLCAjMAogICAgMHhiNmYwNDIwYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAg
IDB4YjZmMDQyMGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA0MjEyOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNDIxNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2
ZjA0MjE4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA0MjFhOiAgICBsZHIgICAgcjEsIFty
NywgIzE2XQogICAgMHhiNmYwNDIxYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZm
MDQyMWU6ICAgIG1vdncgICByMTIsICM2MzY1NwogICAgMHhiNmYwNDIyMjogICAgbW92dCAgIHIx
MiwgIzQ2ODE0CiAgICAweGI2ZjA0MjI2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA0MjI4OiAg
ICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA0MjJhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAg
MHhiNmYwNDIyZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDQyMzI6ICAgIGxkciAg
ICByNiwgW3I2XQogICAgMHhiNmYwNDIzNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwNDIz
NjogICAgYm5lICAgIDB4YjZmMDQyNDAKICAgIDB4YjZmMDQyMzg6ICAgIG1vdiAgICBzcCwgcjcK
ICAgIDB4YjZmMDQyM2E6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNDIzZTogICAgYngg
ICAgIGxyCiAgICAweGI2ZjA0MjQwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNDI0
NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDQyNDg6ICAgIHN0ciAgICByNywgW3I2
XQogICAgMHhiNmYwNDI0YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNDI0YzogICAgbW92
dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDQyNTA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAw
eGI2ZjA0MjU0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDQyNTY6ICAgIG1vdncgICByNiwgIzQ2
MTg4CiAgICAweGI2ZjA0MjVhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNDI1ZTog
ICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA0MjYwOiAgICBieCAgICAgcjEKR2VuZXJhdGVk
IEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNDI4
MSwgMHhiNmYwNDMwMSk6CiAgICAweGI2ZjA0MjgwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4
YjZmMDQyODQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDQyODY6ICAgIG1vdiAgICByMTIs
ICMwCiAgICAweGI2ZjA0MjhhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwNDI4
ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDQyOTI6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjA0Mjk2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDQyOTg6ICAg
IG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDQyOWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAg
ICAweGI2ZjA0MjljOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNDI5ZTogICAg
bW92dyAgIHIxMiwgIzY0MDk3CiAgICAweGI2ZjA0MmEyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MTQK
ICAgIDB4YjZmMDQyYTY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDQyYTg6ICAgIG1vdiAgICBs
ciwgcjMKICAgIDB4YjZmMDQyYWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA0MmFl
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNDJiMjogICAgbGRyICAgIHI2LCBbcjZd
CiAgICAweGI2ZjA0MmI0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA0MmI2OiAgICBibmUg
ICAgMHhiNmYwNDJjMAogICAgMHhiNmYwNDJiODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYw
NDJiYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA0MmJlOiAgICBieCAgICAgbHIKICAg
IDB4YjZmMDQyYzA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA0MmM0OiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNDJjODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2
ZjA0MmNhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA0MmNjOiAgICBtb3Z3ICAgcjMsICM2
MzI0OQogICAgMHhiNmYwNDJkMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDQyZDQ6
ICAgIGJseCAgICByMwogICAgMHhiNmYwNDJkNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4
YjZmMDQyZGE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0MmRlOiAgICBsZHIgICAg
cjEsIFtyNl0KICAgIDB4YjZmMDQyZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUg
Zm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA0MzAxLCAweGI2ZjA0
MzgxKToKICAgIDB4YjZmMDQzMDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNDMwNDog
ICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNDMwNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4
YjZmMDQzMGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA0MzBlOiAgICBtb3Z3
ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNDMxMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMDQzMTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNDMxODogICAgbW92ICAgIHIw
LCByNwogICAgMHhiNmYwNDMxYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDQz
MWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA0MzFlOiAgICBtb3Z3ICAgcjEy
LCAjMzk2OTcKICAgIDB4YjZmMDQzMjI6ICAgIG1vdnQgICByMTIsICM0NjgwNgogICAgMHhiNmYw
NDMyNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNDMyODogICAgbW92ICAgIGxyLCByMwogICAg
MHhiNmYwNDMyYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDQzMmU6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0MzMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZm
MDQzMzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDQzMzY6ICAgIGJuZSAgICAweGI2ZjA0
MzQwCiAgICAweGI2ZjA0MzM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA0MzNhOiAgICBw
b3AgICAge3I3LCBscn0KICAgIDB4YjZmMDQzM2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNDM0
MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDQzNDQ6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjA0MzQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDQzNGE6ICAg
IG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDQzNGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAw
eGI2ZjA0MzUwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNDM1NDogICAgYmx4ICAg
IHIzCiAgICAweGI2ZjA0MzU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNDM1YTog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDQzNWU6ICAgIGxkciAgICByMSwgW3I2XQog
ICAgMHhiNmYwNDM2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENU
SSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDQzODEsIDB4YjZmMDQ0MDEpOgogICAg
MHhiNmYwNDM4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA0Mzg0OiAgICBtb3YgICAg
cjcsIHNwCiAgICAweGI2ZjA0Mzg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNDM4YTog
ICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDQzOGU6ICAgIG1vdncgICByNiwgIzQy
MTI4CiAgICAweGI2ZjA0MzkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNDM5Njog
ICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA0Mzk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAw
eGI2ZjA0MzlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNDM5YzogICAgbGRy
ICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDQzOWU6ICAgIG1vdncgICByMTIsICMzNjczCiAg
ICAweGI2ZjA0M2EyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MTEKICAgIDB4YjZmMDQzYTY6ICAgIGJs
eCAgICByMTIKICAgIDB4YjZmMDQzYTg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDQzYWE6
ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA0M2FlOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwNDNiMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA0M2I0OiAgICBj
bXAgICAgcjIsICMwCiAgICAweGI2ZjA0M2I2OiAgICBibmUgICAgMHhiNmYwNDNjMAogICAgMHhi
NmYwNDNiODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNDNiYTogICAgcG9wICAgIHtyNywg
bHJ9CiAgICAweGI2ZjA0M2JlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDQzYzA6ICAgIG1vdncg
ICByNiwgIzQyMTI4CiAgICAweGI2ZjA0M2M0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwNDNjODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA0M2NhOiAgICBtb3YgICAgcjAs
IHI3CiAgICAweGI2ZjA0M2NjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNDNkMDog
ICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDQzZDQ6ICAgIGJseCAgICByMwogICAgMHhi
NmYwNDNkNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDQzZGE6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjA0M2RlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDQz
ZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNh
bGw6CiAgICBDb2RlIGF0IFsweGI2ZjA0NDAxLCAweGI2ZjA0NDgxKToKICAgIDB4YjZmMDQ0MDA6
ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNDQwNDogICAgbW92ICAgIHI3LCBzcAogICAg
MHhiNmYwNDQwNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDQ0MGE6ICAgIHN0ciAgICBy
MTIsIFtyNywgIzhdCiAgICAweGI2ZjA0NDBlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhi
NmYwNDQxMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDQ0MTY6ICAgIHN0ciAgICBy
NywgW3I2XQogICAgMHhiNmYwNDQxODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNDQxYTog
ICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDQ0MWM6ICAgIGxkciAgICByMiwgW3Ix
LCAjMjBdCiAgICAweGI2ZjA0NDFlOiAgICBtb3Z3ICAgcjEyLCAjNDg2MTcKICAgIDB4YjZmMDQ0
MjI6ICAgIG1vdnQgICByMTIsICM0NjgwNwogICAgMHhiNmYwNDQyNjogICAgYmx4ICAgIHIxMgog
ICAgMHhiNmYwNDQyODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwNDQyYTogICAgbW92dyAg
IHI2LCAjNDYzNDgKICAgIDB4YjZmMDQ0MmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjA0NDMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDQ0MzQ6ICAgIGNtcCAgICByMiwg
IzAKICAgIDB4YjZmMDQ0MzY6ICAgIGJuZSAgICAweGI2ZjA0NDQwCiAgICAweGI2ZjA0NDM4OiAg
ICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA0NDNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4
YjZmMDQ0M2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNDQ0MDogICAgbW92dyAgIHI2LCAjNDIx
MjgKICAgIDB4YjZmMDQ0NDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0NDQ4OiAg
ICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDQ0NGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4
YjZmMDQ0NGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA0NDUwOiAgICBtb3Z0ICAg
cjMsICM0Njc3NgogICAgMHhiNmYwNDQ1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA0NDU2OiAg
ICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNDQ1YTogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgIDB4YjZmMDQ0NWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNDQ2MDogICAgYngg
ICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENv
ZGUgYXQgWzB4YjZmMDQ0ODEsIDB4YjZmMDQ1MDEpOgogICAgMHhiNmYwNDQ4MDogICAgcHVzaCAg
IHtyNywgbHJ9CiAgICAweGI2ZjA0NDg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA0NDg2
OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNDQ4YTogICAgc3RyICAgIHIxMiwgW3I3LCAj
OF0KICAgIDB4YjZmMDQ0OGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA0NDkyOiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNDQ5NjogICAgc3RyICAgIHI3LCBbcjZdCiAg
ICAweGI2ZjA0NDk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA0NDlhOiAgICBsZHIgICAg
cjEsIFtyNywgIzE2XQogICAgMHhiNmYwNDQ5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAg
IDB4YjZmMDQ0OWU6ICAgIG1vdncgICByMTIsICM0Mjg0MQogICAgMHhiNmYwNDRhMjogICAgbW92
dCAgIHIxMiwgIzQ2ODA3CiAgICAweGI2ZjA0NGE2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA0
NGE4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA0NGFhOiAgICBtb3Z3ICAgcjYsICM0NjM0
OAogICAgMHhiNmYwNDRhZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDQ0YjI6ICAg
IGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNDRiNDogICAgY21wICAgIHIyLCAjMAogICAgMHhi
NmYwNDRiNjogICAgYm5lICAgIDB4YjZmMDQ0YzAKICAgIDB4YjZmMDQ0Yjg6ICAgIG1vdiAgICBz
cCwgcjcKICAgIDB4YjZmMDQ0YmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNDRiZTog
ICAgYnggICAgIGxyCiAgICAweGI2ZjA0NGMwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhi
NmYwNDRjNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDQ0Yzg6ICAgIHN0ciAgICBy
NywgW3I2XQogICAgMHhiNmYwNDRjYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNDRjYzog
ICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDQ0ZDA6ICAgIG1vdnQgICByMywgIzQ2Nzc2
CiAgICAweGI2ZjA0NGQ0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDQ0ZDY6ICAgIG1vdncgICBy
NiwgIzQ2MTg4CiAgICAweGI2ZjA0NGRhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYw
NDRkZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA0NGUwOiAgICBieCAgICAgcjEKR2Vu
ZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhi
NmYwNDUwMSwgMHhiNmYwNDU4MSk6CiAgICAweGI2ZjA0NTAwOiAgICBwdXNoICAge3I3LCBscn0K
ICAgIDB4YjZmMDQ1MDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDQ1MDY6ICAgIG1vdiAg
ICByMTIsICMwCiAgICAweGI2ZjA0NTBhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhi
NmYwNDUwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDQ1MTI6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjA0NTE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDQ1
MTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDQ1MWE6ICAgIGxkciAgICByMSwgW3I3LCAj
MTZdCiAgICAweGI2ZjA0NTFjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNDUx
ZTogICAgbW92dyAgIHIxMiwgIzQwNDA5CiAgICAweGI2ZjA0NTIyOiAgICBtb3Z0ICAgcjEyLCAj
NDY4MDcKICAgIDB4YjZmMDQ1MjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDQ1Mjg6ICAgIG1v
diAgICBsciwgcjMKICAgIDB4YjZmMDQ1MmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2
ZjA0NTJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNDUzMjogICAgbGRyICAgIHI2
LCBbcjZdCiAgICAweGI2ZjA0NTM0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA0NTM2OiAg
ICBibmUgICAgMHhiNmYwNDU0MAogICAgMHhiNmYwNDUzODogICAgbW92ICAgIHNwLCByNwogICAg
MHhiNmYwNDUzYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA0NTNlOiAgICBieCAgICAg
bHIKICAgIDB4YjZmMDQ1NDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA0NTQ0OiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNDU0ODogICAgc3RyICAgIHI3LCBbcjZdCiAg
ICAweGI2ZjA0NTRhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA0NTRjOiAgICBtb3Z3ICAg
cjMsICM2MzI0OQogICAgMHhiNmYwNDU1MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZm
MDQ1NTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwNDU1NjogICAgbW92dyAgIHI2LCAjNDYxODgK
ICAgIDB4YjZmMDQ1NWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0NTVlOiAgICBs
ZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDQ1NjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklU
IGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA0NTgxLCAw
eGI2ZjA0NjAxKToKICAgIDB4YjZmMDQ1ODA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYw
NDU4NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNDU4NjogICAgbW92ICAgIHIxMiwgIzAK
ICAgIDB4YjZmMDQ1OGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA0NThlOiAg
ICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNDU5MjogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgIDB4YjZmMDQ1OTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNDU5ODogICAgbW92
ICAgIHIwLCByNwogICAgMHhiNmYwNDU5YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4
YjZmMDQ1OWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA0NTllOiAgICBtb3Z3
ICAgcjEyLCAjNDY2MTcKICAgIDB4YjZmMDQ1YTI6ICAgIG1vdnQgICByMTIsICM0NjgwNwogICAg
MHhiNmYwNDVhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNDVhODogICAgbW92ICAgIGxyLCBy
MwogICAgMHhiNmYwNDVhYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDQ1YWU6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0NWIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAg
IDB4YjZmMDQ1YjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDQ1YjY6ICAgIGJuZSAgICAw
eGI2ZjA0NWMwCiAgICAweGI2ZjA0NWI4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA0NWJh
OiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDQ1YmU6ICAgIGJ4ICAgICBscgogICAgMHhi
NmYwNDVjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDQ1YzQ6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjA0NWM4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDQ1
Y2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDQ1Y2M6ICAgIG1vdncgICByMywgIzYzMjQ5
CiAgICAweGI2ZjA0NWQwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNDVkNDogICAg
Ymx4ICAgIHIzCiAgICAweGI2ZjA0NWQ2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYw
NDVkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDQ1ZGU6ICAgIGxkciAgICByMSwg
W3I2XQogICAgMHhiNmYwNDVlMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3Ig
SklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDQ2MDEsIDB4YjZmMDQ2ODEp
OgogICAgMHhiNmYwNDYwMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA0NjA0OiAgICBt
b3YgICAgcjcsIHNwCiAgICAweGI2ZjA0NjA2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYw
NDYwYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDQ2MGU6ICAgIG1vdncgICBy
NiwgIzQyMTI4CiAgICAweGI2ZjA0NjEyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYw
NDYxNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA0NjE4OiAgICBtb3YgICAgcjAsIHI3
CiAgICAweGI2ZjA0NjFhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNDYxYzog
ICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDQ2MWU6ICAgIG1vdncgICByMTIsICM0
Mjg0MQogICAgMHhiNmYwNDYyMjogICAgbW92dCAgIHIxMiwgIzQ2ODA3CiAgICAweGI2ZjA0NjI2
OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA0NjI4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2
ZjA0NjJhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNDYyZTogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDQ2MzI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNDYz
NDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwNDYzNjogICAgYm5lICAgIDB4YjZmMDQ2NDAK
ICAgIDB4YjZmMDQ2Mzg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDQ2M2E6ICAgIHBvcCAg
ICB7cjcsIGxyfQogICAgMHhiNmYwNDYzZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA0NjQwOiAg
ICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNDY0NDogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgIDB4YjZmMDQ2NDg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNDY0YTogICAgbW92
ICAgIHIwLCByNwogICAgMHhiNmYwNDY0YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZm
MDQ2NTA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA0NjU0OiAgICBibHggICAgcjMK
ICAgIDB4YjZmMDQ2NTY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA0NjVhOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNDY1ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAw
eGI2ZjA0NjYwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5h
dGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNDY4MSwgMHhiNmYwNDcwMSk6CiAgICAweGI2
ZjA0NjgwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDQ2ODQ6ICAgIG1vdiAgICByNywg
c3AKICAgIDB4YjZmMDQ2ODY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA0NjhhOiAgICBz
dHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwNDY4ZTogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgIDB4YjZmMDQ2OTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0Njk2OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDQ2OTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZm
MDQ2OWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA0NjljOiAgICBsZHIgICAg
cjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNDY5ZTogICAgbW92dyAgIHIxMiwgIzQ5MDU3CiAgICAw
eGI2ZjA0NmEyOiAgICBtb3Z0ICAgcjEyLCAjNDY3OTAKICAgIDB4YjZmMDQ2YTY6ICAgIGJseCAg
ICByMTIKICAgIDB4YjZmMDQ2YTg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDQ2YWE6ICAg
IG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA0NmFlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwNDZiMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA0NmI0OiAgICBjbXAg
ICAgcjIsICMwCiAgICAweGI2ZjA0NmI2OiAgICBibmUgICAgMHhiNmYwNDZjMAogICAgMHhiNmYw
NDZiODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNDZiYTogICAgcG9wICAgIHtyNywgbHJ9
CiAgICAweGI2ZjA0NmJlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDQ2YzA6ICAgIG1vdncgICBy
NiwgIzQyMTI4CiAgICAweGI2ZjA0NmM0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYw
NDZjODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA0NmNhOiAgICBtb3YgICAgcjAsIHI3
CiAgICAweGI2ZjA0NmNjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNDZkMDogICAg
bW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDQ2ZDQ6ICAgIGJseCAgICByMwogICAgMHhiNmYw
NDZkNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDQ2ZGE6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA0NmRlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDQ2ZTA6
ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6
CiAgICBDb2RlIGF0IFsweGI2ZjA0NzAxLCAweGI2ZjA0NzgxKToKICAgIDB4YjZmMDQ3MDA6ICAg
IHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNDcwNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhi
NmYwNDcwNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDQ3MGE6ICAgIHN0ciAgICByMTIs
IFtyNywgIzhdCiAgICAweGI2ZjA0NzBlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYw
NDcxMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDQ3MTY6ICAgIHN0ciAgICByNywg
W3I2XQogICAgMHhiNmYwNDcxODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNDcxYTogICAg
bGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDQ3MWM6ICAgIGxkciAgICByMiwgW3IxLCAj
MjBdCiAgICAweGI2ZjA0NzFlOiAgICBtb3Z3ICAgcjEyLCAjMTE4ODkKICAgIDB4YjZmMDQ3MjI6
ICAgIG1vdnQgICByMTIsICM0NjgwNwogICAgMHhiNmYwNDcyNjogICAgYmx4ICAgIHIxMgogICAg
MHhiNmYwNDcyODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwNDcyYTogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgIDB4YjZmMDQ3MmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0
NzMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDQ3MzQ6ICAgIGNtcCAgICByMiwgIzAK
ICAgIDB4YjZmMDQ3MzY6ICAgIGJuZSAgICAweGI2ZjA0NzQwCiAgICAweGI2ZjA0NzM4OiAgICBt
b3YgICAgc3AsIHI3CiAgICAweGI2ZjA0NzNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZm
MDQ3M2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNDc0MDogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgIDB4YjZmMDQ3NDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0NzQ4OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDQ3NGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZm
MDQ3NGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA0NzUwOiAgICBtb3Z0ICAgcjMs
ICM0Njc3NgogICAgMHhiNmYwNDc1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA0NzU2OiAgICBt
b3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNDc1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDQ3NWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNDc2MDogICAgYnggICAg
IHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUg
YXQgWzB4YjZmMDQ3ODEsIDB4YjZmMDQ4MDEpOgogICAgMHhiNmYwNDc4MDogICAgcHVzaCAgIHty
NywgbHJ9CiAgICAweGI2ZjA0Nzg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA0Nzg2OiAg
ICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNDc4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0K
ICAgIDB4YjZmMDQ3OGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA0NzkyOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNDc5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjA0Nzk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA0NzlhOiAgICBsZHIgICAgcjEs
IFtyNywgIzE2XQogICAgMHhiNmYwNDc5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4
YjZmMDQ3OWU6ICAgIG1vdncgICByMTIsICMxMTk2OQogICAgMHhiNmYwNDdhMjogICAgbW92dCAg
IHIxMiwgIzQ2ODA3CiAgICAweGI2ZjA0N2E2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA0N2E4
OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA0N2FhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAog
ICAgMHhiNmYwNDdhZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDQ3YjI6ICAgIGxk
ciAgICByNiwgW3I2XQogICAgMHhiNmYwNDdiNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYw
NDdiNjogICAgYm5lICAgIDB4YjZmMDQ3YzAKICAgIDB4YjZmMDQ3Yjg6ICAgIG1vdiAgICBzcCwg
cjcKICAgIDB4YjZmMDQ3YmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNDdiZTogICAg
YnggICAgIGxyCiAgICAweGI2ZjA0N2MwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYw
NDdjNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDQ3Yzg6ICAgIHN0ciAgICByNywg
W3I2XQogICAgMHhiNmYwNDdjYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNDdjYzogICAg
bW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDQ3ZDA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAg
ICAweGI2ZjA0N2Q0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDQ3ZDY6ICAgIG1vdncgICByNiwg
IzQ2MTg4CiAgICAweGI2ZjA0N2RhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNDdk
ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA0N2UwOiAgICBieCAgICAgcjEKR2VuZXJh
dGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYw
NDgwMSwgMHhiNmYwNDg4MSk6CiAgICAweGI2ZjA0ODAwOiAgICBwdXNoICAge3I3LCBscn0KICAg
IDB4YjZmMDQ4MDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDQ4MDY6ICAgIG1vdiAgICBy
MTIsICMwCiAgICAweGI2ZjA0ODBhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYw
NDgwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDQ4MTI6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA0ODE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDQ4MTg6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDQ4MWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZd
CiAgICAweGI2ZjA0ODFjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNDgxZTog
ICAgbW92dyAgIHIxMiwgIzExODQxCiAgICAweGI2ZjA0ODIyOiAgICBtb3Z0ICAgcjEyLCAjNDY4
MDcKICAgIDB4YjZmMDQ4MjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDQ4Mjg6ICAgIG1vdiAg
ICBsciwgcjMKICAgIDB4YjZmMDQ4MmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA0
ODJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNDgzMjogICAgbGRyICAgIHI2LCBb
cjZdCiAgICAweGI2ZjA0ODM0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA0ODM2OiAgICBi
bmUgICAgMHhiNmYwNDg0MAogICAgMHhiNmYwNDgzODogICAgbW92ICAgIHNwLCByNwogICAgMHhi
NmYwNDgzYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA0ODNlOiAgICBieCAgICAgbHIK
ICAgIDB4YjZmMDQ4NDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA0ODQ0OiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNDg0ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjA0ODRhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA0ODRjOiAgICBtb3Z3ICAgcjMs
ICM2MzI0OQogICAgMHhiNmYwNDg1MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDQ4
NTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwNDg1NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAg
IDB4YjZmMDQ4NWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0ODVlOiAgICBsZHIg
ICAgcjEsIFtyNl0KICAgIDB4YjZmMDQ4NjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNv
ZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA0ODgxLCAweGI2
ZjA0OTAxKToKICAgIDB4YjZmMDQ4ODA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNDg4
NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNDg4NjogICAgbW92ICAgIHIxMiwgIzAKICAg
IDB4YjZmMDQ4OGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA0ODhlOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNDg5MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDQ4OTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNDg5ODogICAgbW92ICAg
IHIwLCByNwogICAgMHhiNmYwNDg5YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZm
MDQ4OWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA0ODllOiAgICBtb3Z3ICAg
cjEyLCAjMTE3MjEKICAgIDB4YjZmMDQ4YTI6ICAgIG1vdnQgICByMTIsICM0NjgwNwogICAgMHhi
NmYwNDhhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNDhhODogICAgbW92ICAgIGxyLCByMwog
ICAgMHhiNmYwNDhhYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDQ4YWU6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0OGIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4
YjZmMDQ4YjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDQ4YjY6ICAgIGJuZSAgICAweGI2
ZjA0OGMwCiAgICAweGI2ZjA0OGI4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA0OGJhOiAg
ICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDQ4YmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYw
NDhjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDQ4YzQ6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA0OGM4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDQ4Y2E6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDQ4Y2M6ICAgIG1vdncgICByMywgIzYzMjQ5CiAg
ICAweGI2ZjA0OGQwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNDhkNDogICAgYmx4
ICAgIHIzCiAgICAweGI2ZjA0OGQ2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNDhk
YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDQ4ZGU6ICAgIGxkciAgICByMSwgW3I2
XQogICAgMHhiNmYwNDhlMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklU
IENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDQ5MDEsIDB4YjZmMDQ5ODEpOgog
ICAgMHhiNmYwNDkwMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA0OTA0OiAgICBtb3Yg
ICAgcjcsIHNwCiAgICAweGI2ZjA0OTA2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNDkw
YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDQ5MGU6ICAgIG1vdncgICByNiwg
IzQyMTI4CiAgICAweGI2ZjA0OTEyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNDkx
NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA0OTE4OiAgICBtb3YgICAgcjAsIHI3CiAg
ICAweGI2ZjA0OTFhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNDkxYzogICAg
bGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDQ5MWU6ICAgIG1vdncgICByMTIsICM3MDQ5
CiAgICAweGI2ZjA0OTIyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MDAKICAgIDB4YjZmMDQ5MjY6ICAg
IGJseCAgICByMTIKICAgIDB4YjZmMDQ5Mjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDQ5
MmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA0OTJlOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgMHhiNmYwNDkzMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA0OTM0OiAg
ICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA0OTM2OiAgICBibmUgICAgMHhiNmYwNDk0MAogICAg
MHhiNmYwNDkzODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNDkzYTogICAgcG9wICAgIHty
NywgbHJ9CiAgICAweGI2ZjA0OTNlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDQ5NDA6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA0OTQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwNDk0ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA0OTRhOiAgICBtb3YgICAg
cjAsIHI3CiAgICAweGI2ZjA0OTRjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNDk1
MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDQ5NTQ6ICAgIGJseCAgICByMwogICAg
MHhiNmYwNDk1NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDQ5NWE6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0OTVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZm
MDQ5NjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZl
IGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA0OTgxLCAweGI2ZjA0YTAxKToKICAgIDB4YjZmMDQ5
ODA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNDk4NDogICAgbW92ICAgIHI3LCBzcAog
ICAgMHhiNmYwNDk4NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDQ5OGE6ICAgIHN0ciAg
ICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA0OThlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAg
MHhiNmYwNDk5MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDQ5OTY6ICAgIHN0ciAg
ICByNywgW3I2XQogICAgMHhiNmYwNDk5ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNDk5
YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDQ5OWM6ICAgIGxkciAgICByMiwg
W3IxLCAjMjBdCiAgICAweGI2ZjA0OTllOiAgICBtb3Z3ICAgcjEyLCAjMjI3NDUKICAgIDB4YjZm
MDQ5YTI6ICAgIG1vdnQgICByMTIsICM0Njc5OAogICAgMHhiNmYwNDlhNjogICAgYmx4ICAgIHIx
MgogICAgMHhiNmYwNDlhODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwNDlhYTogICAgbW92
dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDQ5YWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAw
eGI2ZjA0OWIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDQ5YjQ6ICAgIGNtcCAgICBy
MiwgIzAKICAgIDB4YjZmMDQ5YjY6ICAgIGJuZSAgICAweGI2ZjA0OWMwCiAgICAweGI2ZjA0OWI4
OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA0OWJhOiAgICBwb3AgICAge3I3LCBscn0KICAg
IDB4YjZmMDQ5YmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNDljMDogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgIDB4YjZmMDQ5YzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0OWM4
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDQ5Y2E6ICAgIG1vdiAgICByMCwgcjcKICAg
IDB4YjZmMDQ5Y2M6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA0OWQwOiAgICBtb3Z0
ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNDlkNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA0OWQ2
OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNDlkYTogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDQ5ZGU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNDllMDogICAg
YnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAg
IENvZGUgYXQgWzB4YjZmMDRhMDEsIDB4YjZmMDRhODEpOgogICAgMHhiNmYwNGEwMDogICAgcHVz
aCAgIHtyNywgbHJ9CiAgICAweGI2ZjA0YTA0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA0
YTA2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNGEwYTogICAgc3RyICAgIHIxMiwgW3I3
LCAjOF0KICAgIDB4YjZmMDRhMGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA0YTEy
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNGExNjogICAgc3RyICAgIHI3LCBbcjZd
CiAgICAweGI2ZjA0YTE4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA0YTFhOiAgICBsZHIg
ICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNGExYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0K
ICAgIDB4YjZmMDRhMWU6ICAgIG1vdncgICByMTIsICM2MzA2NQogICAgMHhiNmYwNGEyMjogICAg
bW92dCAgIHIxMiwgIzQ2ODA4CiAgICAweGI2ZjA0YTI2OiAgICBibHggICAgcjEyCiAgICAweGI2
ZjA0YTI4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA0YTJhOiAgICBtb3Z3ICAgcjYsICM0
NjM0OAogICAgMHhiNmYwNGEyZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDRhMzI6
ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNGEzNDogICAgY21wICAgIHIyLCAjMAogICAg
MHhiNmYwNGEzNjogICAgYm5lICAgIDB4YjZmMDRhNDAKICAgIDB4YjZmMDRhMzg6ICAgIG1vdiAg
ICBzcCwgcjcKICAgIDB4YjZmMDRhM2E6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNGEz
ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA0YTQwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAg
MHhiNmYwNGE0NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDRhNDg6ICAgIHN0ciAg
ICByNywgW3I2XQogICAgMHhiNmYwNGE0YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNGE0
YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDRhNTA6ICAgIG1vdnQgICByMywgIzQ2
Nzc2CiAgICAweGI2ZjA0YTU0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDRhNTY6ICAgIG1vdncg
ICByNiwgIzQ2MTg4CiAgICAweGI2ZjA0YTVhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwNGE1ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA0YTYwOiAgICBieCAgICAgcjEK
R2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBb
MHhiNmYwNGE4MSwgMHhiNmYwNGIwMSk6CiAgICAweGI2ZjA0YTgwOiAgICBwdXNoICAge3I3LCBs
cn0KICAgIDB4YjZmMDRhODQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDRhODY6ICAgIG1v
diAgICByMTIsICMwCiAgICAweGI2ZjA0YThhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAg
MHhiNmYwNGE4ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDRhOTI6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0YTk2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZm
MDRhOTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDRhOWE6ICAgIGxkciAgICByMSwgW3I3
LCAjMTZdCiAgICAweGI2ZjA0YTljOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYw
NGE5ZTogICAgbW92dyAgIHIxMiwgIzM2NzcKICAgIDB4YjZmMDRhYTI6ICAgIG1vdnQgICByMTIs
ICM0NjgwMAogICAgMHhiNmYwNGFhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNGFhODogICAg
bW92ICAgIGxyLCByMwogICAgMHhiNmYwNGFhYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4
YjZmMDRhYWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0YWIyOiAgICBsZHIgICAg
cjYsIFtyNl0KICAgIDB4YjZmMDRhYjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDRhYjY6
ICAgIGJuZSAgICAweGI2ZjA0YWMwCiAgICAweGI2ZjA0YWI4OiAgICBtb3YgICAgc3AsIHI3CiAg
ICAweGI2ZjA0YWJhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDRhYmU6ICAgIGJ4ICAg
ICBscgogICAgMHhiNmYwNGFjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDRhYzQ6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0YWM4OiAgICBzdHIgICAgcjcsIFtyNl0K
ICAgIDB4YjZmMDRhY2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDRhY2M6ICAgIG1vdncg
ICByMywgIzYzMjQ5CiAgICAweGI2ZjA0YWQwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhi
NmYwNGFkNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA0YWQ2OiAgICBtb3Z3ICAgcjYsICM0NjE4
OAogICAgMHhiNmYwNGFkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDRhZGU6ICAg
IGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNGFlMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBK
SVQgY29kZSBmb3IgU3BlY2lhbGl6ZWQgdGh1bmsgZm9yIGFiczoKICAgIENvZGUgYXQgWzB4YjZm
MDRiMDEsIDB4YjZmMDRiYTEpOgogICAgMHhiNmYwNGIwMDogICAgcHVzaCAgIHtyNywgbHJ9CiAg
ICAweGI2ZjA0YjA0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA0YjA2OiAgICBsZHIgICAg
cjYsIFtyNywgIzI0XQogICAgMHhiNmYwNGIwODogICAgY21wICAgIHIyLCAjMgogICAgMHhiNmYw
NGIwYTogICAgaXR0dCAgIG5lCiAgICAweGI2ZjA0YjBjOiAgICBub3BuZSAgCiAgICAweGI2ZjA0
YjBlOiAgICBub3BuZSAgCiAgICAweGI2ZjA0YjEyOiAgICBibmUgICAgMHhiNjcwYTYyMAogICAg
MHhiNmYwNGIxNjogICAgbGRyICAgIHIwLCBbcjcsICM0MF0KICAgIDB4YjZmMDRiMTg6ICAgIGxk
ciAgICByNiwgW3I3LCAjNDRdCiAgICAweGI2ZjA0YjFhOiAgICBjbXAgICAgcjYsICM0Mjk0OTY3
Mjk1CiAgICAweGI2ZjA0YjFlOiAgICBibmUgICAgMHhiNmYwNGI0MgogICAgMHhiNmYwNGIyMDog
ICAgYXNyICAgIHIxLCByMCwgIzMxCiAgICAweGI2ZjA0YjI0OiAgICBhZGQgICAgcjAsIHIxCiAg
ICAweGI2ZjA0YjI2OiAgICBlb3IgICAgcjAsIHIxCiAgICAweGI2ZjA0YjI4OiAgICB0c3QgICAg
cjAsIHIwCiAgICAweGI2ZjA0YjJhOiAgICBpdHR0ICAgbWkKICAgIDB4YjZmMDRiMmM6ICAgIG5v
cG1pICAKICAgIDB4YjZmMDRiMmU6ICAgIG5vcG1pICAKICAgIDB4YjZmMDRiMzI6ICAgIGJtaSAg
ICAweGI2NzBhNjIwCiAgICAweGI2ZjA0YjM2OiAgICBtb3YgICAgcjEsICM0Mjk0OTY3Mjk1CiAg
ICAweGI2ZjA0YjNhOiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA0YjNjOiAgICBwb3AgICAg
e3I3LCBscn0KICAgIDB4YjZmMDRiNDA6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNGI0MjogICAg
bGRyICAgIHIwLCBbcjcsICM0NF0KICAgIDB4YjZmMDRiNDQ6ICAgIGNtbiAgICByMCwgIzcKICAg
IDB4YjZmMDRiNDg6ICAgIGJsbyAgICAweGI2ZjA0YjY2CiAgICAweGI2ZjA0YjRhOiAgICBjbXAg
ICAgcjAsICM0Mjk0OTY3Mjk1CiAgICAweGI2ZjA0YjRlOiAgICBpdHR0ICAgbmUKICAgIDB4YjZm
MDRiNTA6ICAgIG5vcG5lICAKICAgIDB4YjZmMDRiNTI6ICAgIG5vcG5lICAKICAgIDB4YjZmMDRi
NTY6ICAgIGJuZSAgICAweGI2NzBhNjIwCiAgICAweGI2ZjA0YjVhOiAgICBsZHIgICAgcjAsIFty
NywgIzQwXQogICAgMHhiNmYwNGI1YzogICAgdm1vdiAgIGQ3LCByMCwgcjAKICAgIDB4YjZmMDRi
NjA6ICAgIHZjdnQuZjY0LnMzMiBkMCwgczE0CiAgICAweGI2ZjA0YjY0OiAgICBiICAgICAgMHhi
NmYwNGI2YQogICAgMHhiNmYwNGI2NjogICAgdmxkciAgIGQwLCBbcjcsICM0MF0KICAgIDB4YjZm
MDRiNmE6ICAgIC5sb25nICBlZWIwMWJjMAogICAgMHhiNmYwNGI2ZTogICAgdm1vdiAgIHIxLCBy
MSwgZDEKICAgIDB4YjZmMDRiNzI6ICAgIHRzdCAgICByMSwgcjEKICAgIDB4YjZmMDRiNzQ6ICAg
IGJuZSAgICAweGI2ZjA0YjgwCiAgICAweGI2ZjA0Yjc2OiAgICB0c3QgICAgcjAsIHIwCiAgICAw
eGI2ZjA0Yjc4OiAgICBibmUgICAgMHhiNmYwNGI4MAogICAgMHhiNmYwNGI3YTogICAgbW92cyAg
IHIwLCAjMAogICAgMHhiNmYwNGI3YzogICAgbW92ICAgIHIxLCAjNDI5NDk2NzI5NQogICAgMHhi
NmYwNGI4MDogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNGI4MjogICAgcG9wICAgIHtyNywg
bHJ9CiAgICAweGI2ZjA0Yjg2OiAgICBieCAgICAgbHIKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBK
SVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNGJhMSwgMHhiNmYwNGMyMSk6
CiAgICAweGI2ZjA0YmEwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDRiYTQ6ICAgIG1v
diAgICByNywgc3AKICAgIDB4YjZmMDRiYTY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA0
YmFhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwNGJhZTogICAgbW92dyAgIHI2
LCAjNDIxMjgKICAgIDB4YjZmMDRiYjI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0
YmI2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDRiYjg6ICAgIG1vdiAgICByMCwgcjcK
ICAgIDB4YjZmMDRiYmE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA0YmJjOiAg
ICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNGJiZTogICAgbW92dyAgIHIxMiwgIzUy
MzQ5CiAgICAweGI2ZjA0YmMyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MDYKICAgIDB4YjZmMDRiYzY6
ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDRiYzg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZm
MDRiY2E6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA0YmNlOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwNGJkMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA0YmQ0
OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA0YmQ2OiAgICBibmUgICAgMHhiNmYwNGJlMAog
ICAgMHhiNmYwNGJkODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNGJkYTogICAgcG9wICAg
IHtyNywgbHJ9CiAgICAweGI2ZjA0YmRlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDRiZTA6ICAg
IG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA0YmU0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwNGJlODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA0YmVhOiAgICBtb3Yg
ICAgcjAsIHI3CiAgICAweGI2ZjA0YmVjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYw
NGJmMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDRiZjQ6ICAgIGJseCAgICByMwog
ICAgMHhiNmYwNGJmNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDRiZmE6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0YmZlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4
YjZmMDRjMDA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0
aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA0YzIxLCAweGI2ZjA0Y2ExKToKICAgIDB4YjZm
MDRjMjA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNGMyNDogICAgbW92ICAgIHI3LCBz
cAogICAgMHhiNmYwNGMyNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDRjMmE6ICAgIHN0
ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA0YzJlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgMHhiNmYwNGMzMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDRjMzY6ICAgIHN0
ciAgICByNywgW3I2XQogICAgMHhiNmYwNGMzODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYw
NGMzYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDRjM2M6ICAgIGxkciAgICBy
MiwgW3IxLCAjMjBdCiAgICAweGI2ZjA0YzNlOiAgICBtb3Z3ICAgcjEyLCAjNTExNDEKICAgIDB4
YjZmMDRjNDI6ICAgIG1vdnQgICByMTIsICM0NjgwNgogICAgMHhiNmYwNGM0NjogICAgYmx4ICAg
IHIxMgogICAgMHhiNmYwNGM0ODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwNGM0YTogICAg
bW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDRjNGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAweGI2ZjA0YzUyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDRjNTQ6ICAgIGNtcCAg
ICByMiwgIzAKICAgIDB4YjZmMDRjNTY6ICAgIGJuZSAgICAweGI2ZjA0YzYwCiAgICAweGI2ZjA0
YzU4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA0YzVhOiAgICBwb3AgICAge3I3LCBscn0K
ICAgIDB4YjZmMDRjNWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNGM2MDogICAgbW92dyAgIHI2
LCAjNDIxMjgKICAgIDB4YjZmMDRjNjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0
YzY4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDRjNmE6ICAgIG1vdiAgICByMCwgcjcK
ICAgIDB4YjZmMDRjNmM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA0YzcwOiAgICBt
b3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNGM3NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA0
Yzc2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNGM3YTogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDRjN2U6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNGM4MDog
ICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoK
ICAgIENvZGUgYXQgWzB4YjZmMDRjYTEsIDB4YjZmMDRkMjEpOgogICAgMHhiNmYwNGNhMDogICAg
cHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA0Y2E0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2
ZjA0Y2E2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNGNhYTogICAgc3RyICAgIHIxMiwg
W3I3LCAjOF0KICAgIDB4YjZmMDRjYWU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA0
Y2IyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNGNiNjogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAweGI2ZjA0Y2I4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA0Y2JhOiAgICBs
ZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNGNiYzogICAgbGRyICAgIHIyLCBbcjEsICMy
MF0KICAgIDB4YjZmMDRjYmU6ICAgIG1vdncgICByMTIsICM1MDg3MwogICAgMHhiNmYwNGNjMjog
ICAgbW92dCAgIHIxMiwgIzQ2ODA2CiAgICAweGI2ZjA0Y2M2OiAgICBibHggICAgcjEyCiAgICAw
eGI2ZjA0Y2M4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA0Y2NhOiAgICBtb3Z3ICAgcjYs
ICM0NjM0OAogICAgMHhiNmYwNGNjZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDRj
ZDI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNGNkNDogICAgY21wICAgIHIyLCAjMAog
ICAgMHhiNmYwNGNkNjogICAgYm5lICAgIDB4YjZmMDRjZTAKICAgIDB4YjZmMDRjZDg6ICAgIG1v
diAgICBzcCwgcjcKICAgIDB4YjZmMDRjZGE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYw
NGNkZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA0Y2UwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgMHhiNmYwNGNlNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDRjZTg6ICAgIHN0
ciAgICByNywgW3I2XQogICAgMHhiNmYwNGNlYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYw
NGNlYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDRjZjA6ICAgIG1vdnQgICByMywg
IzQ2Nzc2CiAgICAweGI2ZjA0Y2Y0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDRjZjY6ICAgIG1v
dncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA0Y2ZhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwNGNmZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA0ZDAwOiAgICBieCAgICAg
cjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBh
dCBbMHhiNmYwNGQyMSwgMHhiNmYwNGRhMSk6CiAgICAweGI2ZjA0ZDIwOiAgICBwdXNoICAge3I3
LCBscn0KICAgIDB4YjZmMDRkMjQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDRkMjY6ICAg
IG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA0ZDJhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQog
ICAgMHhiNmYwNGQyZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDRkMzI6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0ZDM2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4
YjZmMDRkMzg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDRkM2E6ICAgIGxkciAgICByMSwg
W3I3LCAjMTZdCiAgICAweGI2ZjA0ZDNjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhi
NmYwNGQzZTogICAgbW92dyAgIHIxMiwgIzUyNzY1CiAgICAweGI2ZjA0ZDQyOiAgICBtb3Z0ICAg
cjEyLCAjNDY4MDYKICAgIDB4YjZmMDRkNDY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDRkNDg6
ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDRkNGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAg
ICAweGI2ZjA0ZDRlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNGQ1MjogICAgbGRy
ICAgIHI2LCBbcjZdCiAgICAweGI2ZjA0ZDU0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA0
ZDU2OiAgICBibmUgICAgMHhiNmYwNGQ2MAogICAgMHhiNmYwNGQ1ODogICAgbW92ICAgIHNwLCBy
NwogICAgMHhiNmYwNGQ1YTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA0ZDVlOiAgICBi
eCAgICAgbHIKICAgIDB4YjZmMDRkNjA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA0
ZDY0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNGQ2ODogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAweGI2ZjA0ZDZhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA0ZDZjOiAgICBt
b3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNGQ3MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAg
IDB4YjZmMDRkNzQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwNGQ3NjogICAgbW92dyAgIHI2LCAj
NDYxODgKICAgIDB4YjZmMDRkN2E6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0ZDdl
OiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDRkODA6ICAgIGJ4ICAgICByMQpHZW5lcmF0
ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA0
ZGExLCAweGI2ZjA0ZTIxKToKICAgIDB4YjZmMDRkYTA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAg
MHhiNmYwNGRhNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNGRhNjogICAgbW92ICAgIHIx
MiwgIzAKICAgIDB4YjZmMDRkYWE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA0
ZGFlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNGRiMjogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDRkYjY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNGRiODog
ICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNGRiYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0K
ICAgIDB4YjZmMDRkYmM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA0ZGJlOiAg
ICBtb3Z3ICAgcjEyLCAjNTA2NjUKICAgIDB4YjZmMDRkYzI6ICAgIG1vdnQgICByMTIsICM0Njgw
NgogICAgMHhiNmYwNGRjNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNGRjODogICAgbW92ICAg
IGxyLCByMwogICAgMHhiNmYwNGRjYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDRk
Y2U6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0ZGQyOiAgICBsZHIgICAgcjYsIFty
Nl0KICAgIDB4YjZmMDRkZDQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDRkZDY6ICAgIGJu
ZSAgICAweGI2ZjA0ZGUwCiAgICAweGI2ZjA0ZGQ4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2
ZjA0ZGRhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDRkZGU6ICAgIGJ4ICAgICBscgog
ICAgMHhiNmYwNGRlMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDRkZTQ6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0ZGU4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4
YjZmMDRkZWE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDRkZWM6ICAgIG1vdncgICByMywg
IzYzMjQ5CiAgICAweGI2ZjA0ZGYwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNGRm
NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA0ZGY2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAg
MHhiNmYwNGRmYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDRkZmU6ICAgIGxkciAg
ICByMSwgW3I2XQogICAgMHhiNmYwNGUwMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29k
ZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDRlMjEsIDB4YjZm
MDRlYTEpOgogICAgMHhiNmYwNGUyMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA0ZTI0
OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA0ZTI2OiAgICBtb3YgICAgcjEyLCAjMAogICAg
MHhiNmYwNGUyYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDRlMmU6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA0ZTMyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwNGUzNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA0ZTM4OiAgICBtb3YgICAg
cjAsIHI3CiAgICAweGI2ZjA0ZTNhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYw
NGUzYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDRlM2U6ICAgIG1vdncgICBy
MTIsICM1MDc2OQogICAgMHhiNmYwNGU0MjogICAgbW92dCAgIHIxMiwgIzQ2ODA2CiAgICAweGI2
ZjA0ZTQ2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA0ZTQ4OiAgICBtb3YgICAgbHIsIHIzCiAg
ICAweGI2ZjA0ZTRhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNGU0ZTogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDRlNTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhi
NmYwNGU1NDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwNGU1NjogICAgYm5lICAgIDB4YjZm
MDRlNjAKICAgIDB4YjZmMDRlNTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDRlNWE6ICAg
IHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNGU1ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA0
ZTYwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNGU2NDogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDRlNjg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNGU2YTog
ICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNGU2YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAg
IDB4YjZmMDRlNzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA0ZTc0OiAgICBibHgg
ICAgcjMKICAgIDB4YjZmMDRlNzY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA0ZTdh
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNGU3ZTogICAgbGRyICAgIHIxLCBbcjZd
CiAgICAweGI2ZjA0ZTgwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQg
Q1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNGVhMSwgMHhiNmYwNGYyMSk6CiAg
ICAweGI2ZjA0ZWEwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDRlYTQ6ICAgIG1vdiAg
ICByNywgc3AKICAgIDB4YjZmMDRlYTY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA0ZWFh
OiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwNGVhZTogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgIDB4YjZmMDRlYjI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0ZWI2
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDRlYjg6ICAgIG1vdiAgICByMCwgcjcKICAg
IDB4YjZmMDRlYmE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA0ZWJjOiAgICBs
ZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNGViZTogICAgbW92dyAgIHIxMiwgIzUwOTc3
CiAgICAweGI2ZjA0ZWMyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MDYKICAgIDB4YjZmMDRlYzY6ICAg
IGJseCAgICByMTIKICAgIDB4YjZmMDRlYzg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDRl
Y2E6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA0ZWNlOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgMHhiNmYwNGVkMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA0ZWQ0OiAg
ICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA0ZWQ2OiAgICBibmUgICAgMHhiNmYwNGVlMAogICAg
MHhiNmYwNGVkODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNGVkYTogICAgcG9wICAgIHty
NywgbHJ9CiAgICAweGI2ZjA0ZWRlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDRlZTA6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA0ZWU0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwNGVlODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA0ZWVhOiAgICBtb3YgICAg
cjAsIHI3CiAgICAweGI2ZjA0ZWVjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNGVm
MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDRlZjQ6ICAgIGJseCAgICByMwogICAg
MHhiNmYwNGVmNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDRlZmE6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0ZWZlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZm
MDRmMDA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZl
IGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA0ZjIxLCAweGI2ZjA0ZmExKToKICAgIDB4YjZmMDRm
MjA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNGYyNDogICAgbW92ICAgIHI3LCBzcAog
ICAgMHhiNmYwNGYyNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDRmMmE6ICAgIHN0ciAg
ICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA0ZjJlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAg
MHhiNmYwNGYzMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDRmMzY6ICAgIHN0ciAg
ICByNywgW3I2XQogICAgMHhiNmYwNGYzODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNGYz
YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDRmM2M6ICAgIGxkciAgICByMiwg
W3IxLCAjMjBdCiAgICAweGI2ZjA0ZjNlOiAgICBtb3Z3ICAgcjEyLCAjNTIyNDUKICAgIDB4YjZm
MDRmNDI6ICAgIG1vdnQgICByMTIsICM0NjgwNgogICAgMHhiNmYwNGY0NjogICAgYmx4ICAgIHIx
MgogICAgMHhiNmYwNGY0ODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwNGY0YTogICAgbW92
dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDRmNGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAw
eGI2ZjA0ZjUyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDRmNTQ6ICAgIGNtcCAgICBy
MiwgIzAKICAgIDB4YjZmMDRmNTY6ICAgIGJuZSAgICAweGI2ZjA0ZjYwCiAgICAweGI2ZjA0ZjU4
OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA0ZjVhOiAgICBwb3AgICAge3I3LCBscn0KICAg
IDB4YjZmMDRmNWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNGY2MDogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgIDB4YjZmMDRmNjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0ZjY4
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDRmNmE6ICAgIG1vdiAgICByMCwgcjcKICAg
IDB4YjZmMDRmNmM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA0ZjcwOiAgICBtb3Z0
ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNGY3NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA0Zjc2
OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNGY3YTogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDRmN2U6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNGY4MDogICAg
YnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgbmF0aXZlIENhbGwgdHJhbXBvbGluZToK
ICAgIENvZGUgYXQgWzB4YjZmMDdmODEsIDB4YjZmMDdmZTEpOgogICAgMHhiNmYwN2Y4MDogICAg
cHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA3Zjg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2
ZjA3Zjg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwN2Y4YTogICAgc3RyICAgIHIxMiwg
W3I3LCAjOF0KICAgIDB4YjZmMDdmOGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA3
ZjkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwN2Y5NjogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAweGI2ZjA3Zjk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA3ZjlhOiAgICBs
ZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwN2Y5YzogICAgbGRyICAgIHIyLCBbcjEsICMy
MF0KICAgIDB4YjZmMDdmOWU6ICAgIGxkciAgICByMTIsIFtyMiwgIzM2XQogICAgMHhiNmYwN2Zh
MjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwN2ZhNDogICAgbW92dyAgIHI2LCAjNDYzNDgKICAg
IDB4YjZmMDdmYTg6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA3ZmFjOiAgICBsZHIg
ICAgcjYsIFtyNl0KICAgIDB4YjZmMDdmYWU6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDdm
YjA6ICAgIGJuZSAgICAweGI2ZjA3ZmJhCiAgICAweGI2ZjA3ZmIyOiAgICBtb3YgICAgc3AsIHI3
CiAgICAweGI2ZjA3ZmI0OiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDdmYjg6ICAgIGJ4
ICAgICBscgogICAgMHhiNmYwN2ZiYTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDdm
YmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA3ZmMyOiAgICBzdHIgICAgcjcsIFty
Nl0KICAgIDB4YjZmMDdmYzQ6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDdmYzY6ICAgIG1v
dncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA3ZmNhOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAg
MHhiNmYwN2ZjZTogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA3ZmQwOiAgICBtb3Z3ICAgcjYsICM0
NjE4OAogICAgMHhiNmYwN2ZkNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDdmZDg6
ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwN2ZkYTogICAgYnggICAgIHIxCkdlbmVyYXRl
ZCBKSVQgY29kZSBmb3IgU3BlY2lhbGl6ZWQgdGh1bmsgZm9yIGNsejMyOgogICAgQ29kZSBhdCBb
MHhiNmYwN2VjMSwgMHhiNmYwN2Y0MSk6CiAgICAweGI2ZjA3ZWMwOiAgICBwdXNoICAge3I3LCBs
cn0KICAgIDB4YjZmMDdlYzQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDdlYzY6ICAgIGxk
ciAgICByNiwgW3I3LCAjMjRdCiAgICAweGI2ZjA3ZWM4OiAgICBjbXAgICAgcjIsICMyCiAgICAw
eGI2ZjA3ZWNhOiAgICBpdHR0ICAgbmUKICAgIDB4YjZmMDdlY2M6ICAgIG5vcG5lICAKICAgIDB4
YjZmMDdlY2U6ICAgIG5vcG5lICAKICAgIDB4YjZmMDdlZDI6ICAgIGJuZSAgICAweGI2NzBhNjIw
CiAgICAweGI2ZjA3ZWQ2OiAgICBsZHIgICAgcjAsIFtyNywgIzQwXQogICAgMHhiNmYwN2VkODog
ICAgbGRyICAgIHI2LCBbcjcsICM0NF0KICAgIDB4YjZmMDdlZGE6ICAgIGNtcCAgICByNiwgIzQy
OTQ5NjcyOTUKICAgIDB4YjZmMDdlZGU6ICAgIGJuZSAgICAweGI2ZjA3ZWYyCiAgICAweGI2ZjA3
ZWUwOiAgICBjbHogICAgcjEsIHIwCiAgICAweGI2ZjA3ZWU0OiAgICBtb3YgICAgcjAsIHIxCiAg
ICAweGI2ZjA3ZWU2OiAgICBtb3YgICAgcjEsICM0Mjk0OTY3Mjk1CiAgICAweGI2ZjA3ZWVhOiAg
ICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA3ZWVjOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4
YjZmMDdlZjA6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwN2VmMjogICAgbGRyICAgIHIwLCBbcjcs
ICM0NF0KICAgIDB4YjZmMDdlZjQ6ICAgIGNtbiAgICByMCwgIzcKICAgIDB4YjZmMDdlZjg6ICAg
IGJsbyAgICAweGI2ZjA3ZjE2CiAgICAweGI2ZjA3ZWZhOiAgICBjbXAgICAgcjAsICM0Mjk0OTY3
Mjk1CiAgICAweGI2ZjA3ZWZlOiAgICBpdHR0ICAgbmUKICAgIDB4YjZmMDdmMDA6ICAgIG5vcG5l
ICAKICAgIDB4YjZmMDdmMDI6ICAgIG5vcG5lICAKICAgIDB4YjZmMDdmMDY6ICAgIGJuZSAgICAw
eGI2NzBhNjIwCiAgICAweGI2ZjA3ZjBhOiAgICBsZHIgICAgcjAsIFtyNywgIzQwXQogICAgMHhi
NmYwN2YwYzogICAgdm1vdiAgIGQ3LCByMCwgcjAKICAgIDB4YjZmMDdmMTA6ICAgIHZjdnQuZjY0
LnMzMiBkMCwgczE0CiAgICAweGI2ZjA3ZjE0OiAgICBiICAgICAgMHhiNmYwN2YxYQogICAgMHhi
NmYwN2YxNjogICAgdmxkciAgIGQwLCBbcjcsICM0MF0KICAgIDB4YjZmMDdmMWE6ICAgIHZjdnQu
czMyLmY2NCBzMTQsIGQwCiAgICAweGI2ZjA3ZjFlOiAgICB2bW92ICAgczE0LCByMAogICAgMHhi
NmYwN2YyMjogICAgYWRkICAgIHIxMiwgcjAsIHIwCiAgICAweGI2ZjA3ZjI2OiAgICBiZXEgICAg
MHhiNmYwN2YyZQogICAgMHhiNmYwN2YyODogICAgY21uICAgIHIxMiwgIzIKICAgIDB4YjZmMDdm
MmM6ICAgIGJuZSAgICAweGI2ZjA4MGUwCiAgICAweGI2ZjA3ZjJlOiAgICBub3AgICAgCiAgICAw
eGI2ZjA3ZjMwOiAgICBub3AgICAgCiAgICAweGI2ZjA3ZjM0OiAgICBiICAgICAgMHhiNjcwYTYy
MApHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0
IFsweGI2ZjA3ZTQxLCAweGI2ZjA3ZWMxKToKICAgIDB4YjZmMDdlNDA6ICAgIHB1c2ggICB7cjcs
IGxyfQogICAgMHhiNmYwN2U0NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwN2U0NjogICAg
bW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDdlNGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAg
ICAweGI2ZjA3ZTRlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwN2U1MjogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDdlNTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhi
NmYwN2U1ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwN2U1YTogICAgbGRyICAgIHIxLCBb
cjcsICMxNl0KICAgIDB4YjZmMDdlNWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2
ZjA3ZTVlOiAgICBtb3Z3ICAgcjEyLCAjNTI2NjEKICAgIDB4YjZmMDdlNjI6ICAgIG1vdnQgICBy
MTIsICM0NjgwNgogICAgMHhiNmYwN2U2NjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwN2U2ODog
ICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwN2U2YTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAg
IDB4YjZmMDdlNmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA3ZTcyOiAgICBsZHIg
ICAgcjYsIFtyNl0KICAgIDB4YjZmMDdlNzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDdl
NzY6ICAgIGJuZSAgICAweGI2ZjA3ZTgwCiAgICAweGI2ZjA3ZTc4OiAgICBtb3YgICAgc3AsIHI3
CiAgICAweGI2ZjA3ZTdhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDdlN2U6ICAgIGJ4
ICAgICBscgogICAgMHhiNmYwN2U4MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDdl
ODQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA3ZTg4OiAgICBzdHIgICAgcjcsIFty
Nl0KICAgIDB4YjZmMDdlOGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDdlOGM6ICAgIG1v
dncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA3ZTkwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAg
MHhiNmYwN2U5NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA3ZTk2OiAgICBtb3Z3ICAgcjYsICM0
NjE4OAogICAgMHhiNmYwN2U5YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDdlOWU6
ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwN2VhMDogICAgYnggICAgIHIxCkdlbmVyYXRl
ZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDdk
YzEsIDB4YjZmMDdlNDEpOgogICAgMHhiNmYwN2RjMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAw
eGI2ZjA3ZGM0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA3ZGM2OiAgICBtb3YgICAgcjEy
LCAjMAogICAgMHhiNmYwN2RjYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDdk
Y2U6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA3ZGQyOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgMHhiNmYwN2RkNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA3ZGQ4OiAg
ICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA3ZGRhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQog
ICAgMHhiNmYwN2RkYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDdkZGU6ICAg
IG1vdncgICByMTIsICM1MTk0OQogICAgMHhiNmYwN2RlMjogICAgbW92dCAgIHIxMiwgIzQ2ODA2
CiAgICAweGI2ZjA3ZGU2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA3ZGU4OiAgICBtb3YgICAg
bHIsIHIzCiAgICAweGI2ZjA3ZGVhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwN2Rl
ZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDdkZjI6ICAgIGxkciAgICByNiwgW3I2
XQogICAgMHhiNmYwN2RmNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwN2RmNjogICAgYm5l
ICAgIDB4YjZmMDdlMDAKICAgIDB4YjZmMDdkZjg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZm
MDdkZmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwN2RmZTogICAgYnggICAgIGxyCiAg
ICAweGI2ZjA3ZTAwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwN2UwNDogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDdlMDg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhi
NmYwN2UwYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwN2UwYzogICAgbW92dyAgIHIzLCAj
NjMyNDkKICAgIDB4YjZmMDdlMTA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA3ZTE0
OiAgICBibHggICAgcjMKICAgIDB4YjZmMDdlMTY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAw
eGI2ZjA3ZTFhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwN2UxZTogICAgbGRyICAg
IHIxLCBbcjZdCiAgICAweGI2ZjA3ZTIwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2Rl
IGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwN2Q0MSwgMHhiNmYw
N2RjMSk6CiAgICAweGI2ZjA3ZDQwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDdkNDQ6
ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDdkNDY6ICAgIG1vdiAgICByMTIsICMwCiAgICAw
eGI2ZjA3ZDRhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwN2Q0ZTogICAgbW92
dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDdkNTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAw
eGI2ZjA3ZDU2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDdkNTg6ICAgIG1vdiAgICBy
MCwgcjcKICAgIDB4YjZmMDdkNWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA3
ZDVjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwN2Q1ZTogICAgbW92dyAgIHIx
MiwgIzUyMDUzCiAgICAweGI2ZjA3ZDYyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MDYKICAgIDB4YjZm
MDdkNjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDdkNjg6ICAgIG1vdiAgICBsciwgcjMKICAg
IDB4YjZmMDdkNmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA3ZDZlOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwN2Q3MjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2
ZjA3ZDc0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA3ZDc2OiAgICBibmUgICAgMHhiNmYw
N2Q4MAogICAgMHhiNmYwN2Q3ODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwN2Q3YTogICAg
cG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA3ZDdlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDdk
ODA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA3ZDg0OiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgMHhiNmYwN2Q4ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA3ZDhhOiAg
ICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA3ZDhjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAg
MHhiNmYwN2Q5MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDdkOTQ6ICAgIGJseCAg
ICByMwogICAgMHhiNmYwN2Q5NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDdkOWE6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA3ZDllOiAgICBsZHIgICAgcjEsIFtyNl0K
ICAgIDB4YjZmMDdkYTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBD
VEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA3Y2MxLCAweGI2ZjA3ZDQxKToKICAg
IDB4YjZmMDdjYzA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwN2NjNDogICAgbW92ICAg
IHI3LCBzcAogICAgMHhiNmYwN2NjNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDdjY2E6
ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA3Y2NlOiAgICBtb3Z3ICAgcjYsICM0
MjEyOAogICAgMHhiNmYwN2NkMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDdjZDY6
ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwN2NkODogICAgbW92ICAgIHIwLCByNwogICAg
MHhiNmYwN2NkYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDdjZGM6ICAgIGxk
ciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA3Y2RlOiAgICBtb3Z3ICAgcjEyLCAjNTE4NjUK
ICAgIDB4YjZmMDdjZTI6ICAgIG1vdnQgICByMTIsICM0NjgwNgogICAgMHhiNmYwN2NlNjogICAg
Ymx4ICAgIHIxMgogICAgMHhiNmYwN2NlODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwN2Nl
YTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDdjZWU6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjA3Y2YyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDdjZjQ6ICAg
IGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDdjZjY6ICAgIGJuZSAgICAweGI2ZjA3ZDAwCiAgICAw
eGI2ZjA3Y2Y4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA3Y2ZhOiAgICBwb3AgICAge3I3
LCBscn0KICAgIDB4YjZmMDdjZmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwN2QwMDogICAgbW92
dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDdkMDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAw
eGI2ZjA3ZDA4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDdkMGE6ICAgIG1vdiAgICBy
MCwgcjcKICAgIDB4YjZmMDdkMGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA3ZDEw
OiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwN2QxNDogICAgYmx4ICAgIHIzCiAgICAw
eGI2ZjA3ZDE2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwN2QxYTogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMDdkMWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYw
N2QyMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUg
Y2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDdjNDEsIDB4YjZmMDdjYzEpOgogICAgMHhiNmYwN2M0
MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA3YzQ0OiAgICBtb3YgICAgcjcsIHNwCiAg
ICAweGI2ZjA3YzQ2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwN2M0YTogICAgc3RyICAg
IHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDdjNGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAw
eGI2ZjA3YzUyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwN2M1NjogICAgc3RyICAg
IHI3LCBbcjZdCiAgICAweGI2ZjA3YzU4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA3YzVh
OiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwN2M1YzogICAgbGRyICAgIHIyLCBb
cjEsICMyMF0KICAgIDB4YjZmMDdjNWU6ICAgIG1vdncgICByMTIsICM1MzI3NwogICAgMHhiNmYw
N2M2MjogICAgbW92dCAgIHIxMiwgIzQ2ODA2CiAgICAweGI2ZjA3YzY2OiAgICBibHggICAgcjEy
CiAgICAweGI2ZjA3YzY4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA3YzZhOiAgICBtb3Z3
ICAgcjYsICM0NjM0OAogICAgMHhiNmYwN2M2ZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMDdjNzI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwN2M3NDogICAgY21wICAgIHIy
LCAjMAogICAgMHhiNmYwN2M3NjogICAgYm5lICAgIDB4YjZmMDdjODAKICAgIDB4YjZmMDdjNzg6
ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDdjN2E6ICAgIHBvcCAgICB7cjcsIGxyfQogICAg
MHhiNmYwN2M3ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA3YzgwOiAgICBtb3Z3ICAgcjYsICM0
MjEyOAogICAgMHhiNmYwN2M4NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDdjODg6
ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwN2M4YTogICAgbW92ICAgIHIwLCByNwogICAg
MHhiNmYwN2M4YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDdjOTA6ICAgIG1vdnQg
ICByMywgIzQ2Nzc2CiAgICAweGI2ZjA3Yzk0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDdjOTY6
ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA3YzlhOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwN2M5ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA3Y2EwOiAgICBi
eCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAg
Q29kZSBhdCBbMHhiNmYwN2JjMSwgMHhiNmYwN2M0MSk6CiAgICAweGI2ZjA3YmMwOiAgICBwdXNo
ICAge3I3LCBscn0KICAgIDB4YjZmMDdiYzQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDdi
YzY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA3YmNhOiAgICBzdHIgICAgcjEyLCBbcjcs
ICM4XQogICAgMHhiNmYwN2JjZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDdiZDI6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA3YmQ2OiAgICBzdHIgICAgcjcsIFtyNl0K
ICAgIDB4YjZmMDdiZDg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDdiZGE6ICAgIGxkciAg
ICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA3YmRjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQog
ICAgMHhiNmYwN2JkZTogICAgbW92dyAgIHIxMiwgIzUxNTUzCiAgICAweGI2ZjA3YmUyOiAgICBt
b3Z0ICAgcjEyLCAjNDY4MDYKICAgIDB4YjZmMDdiZTY6ICAgIGJseCAgICByMTIKICAgIDB4YjZm
MDdiZTg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDdiZWE6ICAgIG1vdncgICByNiwgIzQ2
MzQ4CiAgICAweGI2ZjA3YmVlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwN2JmMjog
ICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA3YmY0OiAgICBjbXAgICAgcjIsICMwCiAgICAw
eGI2ZjA3YmY2OiAgICBibmUgICAgMHhiNmYwN2MwMAogICAgMHhiNmYwN2JmODogICAgbW92ICAg
IHNwLCByNwogICAgMHhiNmYwN2JmYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA3YmZl
OiAgICBieCAgICAgbHIKICAgIDB4YjZmMDdjMDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAw
eGI2ZjA3YzA0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwN2MwODogICAgc3RyICAg
IHI3LCBbcjZdCiAgICAweGI2ZjA3YzBhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA3YzBj
OiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwN2MxMDogICAgbW92dCAgIHIzLCAjNDY3
NzYKICAgIDB4YjZmMDdjMTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwN2MxNjogICAgbW92dyAg
IHI2LCAjNDYxODgKICAgIDB4YjZmMDdjMWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjA3YzFlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDdjMjA6ICAgIGJ4ICAgICByMQpH
ZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsw
eGI2ZjA3YjQxLCAweGI2ZjA3YmMxKToKICAgIDB4YjZmMDdiNDA6ICAgIHB1c2ggICB7cjcsIGxy
fQogICAgMHhiNmYwN2I0NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwN2I0NjogICAgbW92
ICAgIHIxMiwgIzAKICAgIDB4YjZmMDdiNGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAw
eGI2ZjA3YjRlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwN2I1MjogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMDdiNTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYw
N2I1ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwN2I1YTogICAgbGRyICAgIHIxLCBbcjcs
ICMxNl0KICAgIDB4YjZmMDdiNWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA3
YjVlOiAgICBtb3Z3ICAgcjEyLCAjNTIxNTcKICAgIDB4YjZmMDdiNjI6ICAgIG1vdnQgICByMTIs
ICM0NjgwNgogICAgMHhiNmYwN2I2NjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwN2I2ODogICAg
bW92ICAgIGxyLCByMwogICAgMHhiNmYwN2I2YTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4
YjZmMDdiNmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA3YjcyOiAgICBsZHIgICAg
cjYsIFtyNl0KICAgIDB4YjZmMDdiNzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDdiNzY6
ICAgIGJuZSAgICAweGI2ZjA3YjgwCiAgICAweGI2ZjA3Yjc4OiAgICBtb3YgICAgc3AsIHI3CiAg
ICAweGI2ZjA3YjdhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDdiN2U6ICAgIGJ4ICAg
ICBscgogICAgMHhiNmYwN2I4MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDdiODQ6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA3Yjg4OiAgICBzdHIgICAgcjcsIFtyNl0K
ICAgIDB4YjZmMDdiOGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDdiOGM6ICAgIG1vdncg
ICByMywgIzYzMjQ5CiAgICAweGI2ZjA3YjkwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhi
NmYwN2I5NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA3Yjk2OiAgICBtb3Z3ICAgcjYsICM0NjE4
OAogICAgMHhiNmYwN2I5YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDdiOWU6ICAg
IGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwN2JhMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBK
SVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDdhYzEs
IDB4YjZmMDdiNDEpOgogICAgMHhiNmYwN2FjMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2
ZjA3YWM0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA3YWM2OiAgICBtb3YgICAgcjEyLCAj
MAogICAgMHhiNmYwN2FjYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDdhY2U6
ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA3YWQyOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwN2FkNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA3YWQ4OiAgICBt
b3YgICAgcjAsIHI3CiAgICAweGI2ZjA3YWRhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAg
MHhiNmYwN2FkYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDdhZGU6ICAgIG1v
dncgICByMTIsICM1MTc2MQogICAgMHhiNmYwN2FlMjogICAgbW92dCAgIHIxMiwgIzQ2ODA2CiAg
ICAweGI2ZjA3YWU2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA3YWU4OiAgICBtb3YgICAgbHIs
IHIzCiAgICAweGI2ZjA3YWVhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwN2FlZTog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDdhZjI6ICAgIGxkciAgICByNiwgW3I2XQog
ICAgMHhiNmYwN2FmNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwN2FmNjogICAgYm5lICAg
IDB4YjZmMDdiMDAKICAgIDB4YjZmMDdhZjg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDdh
ZmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwN2FmZTogICAgYnggICAgIGxyCiAgICAw
eGI2ZjA3YjAwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwN2IwNDogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMDdiMDg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYw
N2IwYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwN2IwYzogICAgbW92dyAgIHIzLCAjNjMy
NDkKICAgIDB4YjZmMDdiMTA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA3YjE0OiAg
ICBibHggICAgcjMKICAgIDB4YjZmMDdiMTY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2
ZjA3YjFhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwN2IxZTogICAgbGRyICAgIHIx
LCBbcjZdCiAgICAweGI2ZjA3YjIwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZv
ciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwN2E0MSwgMHhiNmYwN2Fj
MSk6CiAgICAweGI2ZjA3YTQwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDdhNDQ6ICAg
IG1vdiAgICByNywgc3AKICAgIDB4YjZmMDdhNDY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2
ZjA3YTRhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwN2E0ZTogICAgbW92dyAg
IHI2LCAjNDIxMjgKICAgIDB4YjZmMDdhNTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjA3YTU2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDdhNTg6ICAgIG1vdiAgICByMCwg
cjcKICAgIDB4YjZmMDdhNWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA3YTVj
OiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwN2E1ZTogICAgbW92dyAgIHIxMiwg
IzU0NTMzCiAgICAweGI2ZjA3YTYyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MDYKICAgIDB4YjZmMDdh
NjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDdhNjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4
YjZmMDdhNmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA3YTZlOiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgMHhiNmYwN2E3MjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA3
YTc0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA3YTc2OiAgICBibmUgICAgMHhiNmYwN2E4
MAogICAgMHhiNmYwN2E3ODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwN2E3YTogICAgcG9w
ICAgIHtyNywgbHJ9CiAgICAweGI2ZjA3YTdlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDdhODA6
ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA3YTg0OiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwN2E4ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA3YThhOiAgICBt
b3YgICAgcjAsIHI3CiAgICAweGI2ZjA3YThjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhi
NmYwN2E5MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDdhOTQ6ICAgIGJseCAgICBy
MwogICAgMHhiNmYwN2E5NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDdhOWE6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA3YTllOiAgICBsZHIgICAgcjEsIFtyNl0KICAg
IDB4YjZmMDdhYTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkg
bmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA3OWMxLCAweGI2ZjA3YTQxKToKICAgIDB4
YjZmMDc5YzA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNzljNDogICAgbW92ICAgIHI3
LCBzcAogICAgMHhiNmYwNzljNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDc5Y2E6ICAg
IHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA3OWNlOiAgICBtb3Z3ICAgcjYsICM0MjEy
OAogICAgMHhiNmYwNzlkMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDc5ZDY6ICAg
IHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNzlkODogICAgbW92ICAgIHIwLCByNwogICAgMHhi
NmYwNzlkYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDc5ZGM6ICAgIGxkciAg
ICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA3OWRlOiAgICBtb3Z3ICAgcjEyLCAjNTQ4MDEKICAg
IDB4YjZmMDc5ZTI6ICAgIG1vdnQgICByMTIsICM0NjgwNgogICAgMHhiNmYwNzllNjogICAgYmx4
ICAgIHIxMgogICAgMHhiNmYwNzllODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwNzllYTog
ICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDc5ZWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAweGI2ZjA3OWYyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDc5ZjQ6ICAgIGNt
cCAgICByMiwgIzAKICAgIDB4YjZmMDc5ZjY6ICAgIGJuZSAgICAweGI2ZjA3YTAwCiAgICAweGI2
ZjA3OWY4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA3OWZhOiAgICBwb3AgICAge3I3LCBs
cn0KICAgIDB4YjZmMDc5ZmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwN2EwMDogICAgbW92dyAg
IHI2LCAjNDIxMjgKICAgIDB4YjZmMDdhMDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjA3YTA4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDdhMGE6ICAgIG1vdiAgICByMCwg
cjcKICAgIDB4YjZmMDdhMGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA3YTEwOiAg
ICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwN2ExNDogICAgYmx4ICAgIHIzCiAgICAweGI2
ZjA3YTE2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwN2ExYTogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDdhMWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwN2Ey
MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgU3BlY2lhbGl6ZWQgdGh1bmsg
Zm9yIHBvdzoKICAgIENvZGUgYXQgWzB4YjZmMDc3YzEsIDB4YjZmMDc5MjEpOgogICAgMHhiNmYw
NzdjMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA3N2M0OiAgICBtb3YgICAgcjcsIHNw
CiAgICAweGI2ZjA3N2M2OiAgICBsZHIgICAgcjYsIFtyNywgIzI0XQogICAgMHhiNmYwNzdjODog
ICAgY21wICAgIHIyLCAjMwogICAgMHhiNmYwNzdjYTogICAgaXR0dCAgIG5lCiAgICAweGI2ZjA3
N2NjOiAgICBub3BuZSAgCiAgICAweGI2ZjA3N2NlOiAgICBub3BuZSAgCiAgICAweGI2ZjA3N2Qy
OiAgICBibmUgICAgMHhiNjcwYTYyMAogICAgMHhiNmYwNzdkNjogICAgbW92dyAgIHI2LCAjMTY1
OTIKICAgIDB4YjZmMDc3ZGE6ICAgIG1vdnQgICByNiwgIzQ2ODI0CiAgICAweGI2ZjA3N2RlOiAg
ICB2bGRyICAgZDEsIFtyNl0KICAgIDB4YjZmMDc3ZTI6ICAgIGxkciAgICByMCwgW3I3LCAjNDRd
CiAgICAweGI2ZjA3N2U0OiAgICBjbW4gICAgcjAsICM3CiAgICAweGI2ZjA3N2U4OiAgICBibG8g
ICAgMHhiNmYwNzgwNgogICAgMHhiNmYwNzdlYTogICAgY21wICAgIHIwLCAjNDI5NDk2NzI5NQog
ICAgMHhiNmYwNzdlZTogICAgaXR0dCAgIG5lCiAgICAweGI2ZjA3N2YwOiAgICBub3BuZSAgCiAg
ICAweGI2ZjA3N2YyOiAgICBub3BuZSAgCiAgICAweGI2ZjA3N2Y2OiAgICBibmUgICAgMHhiNjcw
YTYyMAogICAgMHhiNmYwNzdmYTogICAgbGRyICAgIHIwLCBbcjcsICM0MF0KICAgIDB4YjZmMDc3
ZmM6ICAgIHZtb3YgICBkNywgcjAsIHIwCiAgICAweGI2ZjA3ODAwOiAgICB2Y3Z0LmY2NC5zMzIg
ZDAsIHMxNAogICAgMHhiNmYwNzgwNDogICAgYiAgICAgIDB4YjZmMDc4MGEKICAgIDB4YjZmMDc4
MDY6ICAgIHZsZHIgICBkMCwgW3I3LCAjNDBdCiAgICAweGI2ZjA3ODBhOiAgICBsZHIgICAgcjAs
IFtyNywgIzQ4XQogICAgMHhiNmYwNzgwYzogICAgbGRyICAgIHI2LCBbcjcsICM1Ml0KICAgIDB4
YjZmMDc4MGU6ICAgIGNtcCAgICByNiwgIzQyOTQ5NjcyOTUKICAgIDB4YjZmMDc4MTI6ICAgIGJu
ZSAgICAweGI2ZjA3ODdjCiAgICAweGI2ZjA3ODE0OiAgICBjbXAgICAgcjAsICMwCiAgICAweGI2
ZjA3ODE2OiAgICBpdHR0ICAgbHQKICAgIDB4YjZmMDc4MTg6ICAgIG5vcGx0ICAKICAgIDB4YjZm
MDc4MWE6ICAgIG5vcGx0ICAKICAgIDB4YjZmMDc4MWU6ICAgIGJsdCAgICAweGI2NzBhNjIwCiAg
ICAweGI2ZjA3ODIyOiAgICB0c3QgICAgcjAsIHIwCiAgICAweGI2ZjA3ODI0OiAgICBiZXEgICAg
MHhiNmYwNzgzYwogICAgMHhiNmYwNzgyNjogICAgdHN0ICAgIHIwLCAjMQogICAgMHhiNmYwNzgy
YTogICAgYmVxICAgIDB4YjZmMDc4MzAKICAgIDB4YjZmMDc4MmM6ICAgIC5sb25nICBlZTIxMWIw
MAogICAgMHhiNmYwNzgzMDogICAgLmxvbmcgIGVlMjAwYjAwCiAgICAweGI2ZjA3ODM0OiAgICBh
c3IgICAgcjAsIHIwLCAjMQogICAgMHhiNmYwNzgzODogICAgdHN0ICAgIHIwLCByMAogICAgMHhi
NmYwNzgzYTogICAgYm5lICAgIDB4YjZmMDdhMjYKICAgIDB4YjZmMDc4M2M6ICAgIHZjdnQuczMy
LmY2NCBzMTQsIGQxCiAgICAweGI2ZjA3ODQwOiAgICB2bW92ICAgczE0LCByMAogICAgMHhiNmYw
Nzg0NDogICAgdmN2dC5mNjQuczMyIGQ3LCBzMTQKICAgIDB4YjZmMDc4NDg6ICAgIHZjbXAuZjY0
IGQxLCBkNwogICAgMHhiNmYwNzg0YzogICAgdm1ycyAgIGFwc3JfbnpjdiwgZnBzY3IKICAgIDB4
YjZmMDc4NTA6ICAgIGJuZSAgICAweGI2ZjA3ODYyCiAgICAweGI2ZjA3ODUyOiAgICB0c3QgICAg
cjAsIHIwCiAgICAweGI2ZjA3ODU0OiAgICBiZXEgICAgMHhiNmYwNzg2MgogICAgMHhiNmYwNzg1
NjogICAgbW92ICAgIHIxLCAjNDI5NDk2NzI5NQogICAgMHhiNmYwNzg1YTogICAgbW92ICAgIHNw
LCByNwogICAgMHhiNmYwNzg1YzogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA3ODYwOiAg
ICBieCAgICAgbHIKICAgIDB4YjZmMDc4NjI6ICAgIHZtb3YgICByMSwgcjEsIGQxCiAgICAweGI2
ZjA3ODY2OiAgICB0c3QgICAgcjEsIHIxCiAgICAweGI2ZjA3ODY4OiAgICBibmUgICAgMHhiNmYw
Nzg3NAogICAgMHhiNmYwNzg2YTogICAgdHN0ICAgIHIwLCByMAogICAgMHhiNmYwNzg2YzogICAg
Ym5lICAgIDB4YjZmMDc4NzQKICAgIDB4YjZmMDc4NmU6ICAgIG1vdnMgICByMCwgIzAKICAgIDB4
YjZmMDc4NzA6ICAgIG1vdiAgICByMSwgIzQyOTQ5NjcyOTUKICAgIDB4YjZmMDc4NzQ6ICAgIG1v
diAgICBzcCwgcjcKICAgIDB4YjZmMDc4NzY6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYw
Nzg3YTogICAgYnggICAgIGxyCiAgICAweGI2ZjA3ODdjOiAgICBtb3Z3ICAgcjYsICMxNjYwMAog
ICAgMHhiNmYwNzg4MDogICAgbW92dCAgIHI2LCAjNDY4MjQKICAgIDB4YjZmMDc4ODQ6ICAgIHZs
ZHIgICBkMywgW3I2XQogICAgMHhiNmYwNzg4ODogICAgbGRyICAgIHIwLCBbcjcsICM1Ml0KICAg
IDB4YjZmMDc4OGE6ICAgIGNtbiAgICByMCwgIzcKICAgIDB4YjZmMDc4OGU6ICAgIGJsbyAgICAw
eGI2ZjA3OGFjCiAgICAweGI2ZjA3ODkwOiAgICBjbXAgICAgcjAsICM0Mjk0OTY3Mjk1CiAgICAw
eGI2ZjA3ODk0OiAgICBpdHR0ICAgbmUKICAgIDB4YjZmMDc4OTY6ICAgIG5vcG5lICAKICAgIDB4
YjZmMDc4OTg6ICAgIG5vcG5lICAKICAgIDB4YjZmMDc4OWM6ICAgIGJuZSAgICAweGI2NzBhNjIw
CiAgICAweGI2ZjA3OGEwOiAgICBsZHIgICAgcjAsIFtyNywgIzQ4XQogICAgMHhiNmYwNzhhMjog
ICAgdm1vdiAgIGQ3LCByMCwgcjAKICAgIDB4YjZmMDc4YTY6ICAgIHZjdnQuZjY0LnMzMiBkMiwg
czE0CiAgICAweGI2ZjA3OGFhOiAgICBiICAgICAgMHhiNmYwNzhiMAogICAgMHhiNmYwNzhhYzog
ICAgdmxkciAgIGQyLCBbcjcsICM0OF0KICAgIDB4YjZmMDc4YjA6ICAgIHZjbXAuZjY0IGQwLCBk
MQogICAgMHhiNmYwNzhiNDogICAgdm1ycyAgIGFwc3JfbnpjdiwgZnBzY3IKICAgIDB4YjZmMDc4
Yjg6ICAgIGl0dHQgICBscwogICAgMHhiNmYwNzhiYTogICAgbm9wbHMgIAogICAgMHhiNmYwNzhi
YzogICAgbm9wbHMgIAogICAgMHhiNmYwNzhjMDogICAgYmxzICAgIDB4YjY3MGE2MjAKICAgIDB4
YjZmMDc4YzQ6ICAgIHZjbXAuZjY0IGQyLCBkMwogICAgMHhiNmYwNzhjODogICAgdm1ycyAgIGFw
c3JfbnpjdiwgZnBzY3IKICAgIDB4YjZmMDc4Y2M6ICAgIGl0dHQgICBuZQogICAgMHhiNmYwNzhj
ZTogICAgbm9wbmUgIAogICAgMHhiNmYwNzhkMDogICAgbm9wbmUgIAogICAgMHhiNmYwNzhkNDog
ICAgYm5lICAgIDB4YjY3MGE2MjAKICAgIDB4YjZmMDc4ZDg6ICAgIC5sb25nICBlZWIxMGJjMAog
ICAgMHhiNmYwNzhkYzogICAgLmxvbmcgIGVlODExYjAwCiAgICAweGI2ZjA3OGUwOiAgICB2Y3Z0
LnMzMi5mNjQgczE0LCBkMQogICAgMHhiNmYwNzhlNDogICAgdm1vdiAgIHMxNCwgcjAKICAgIDB4
YjZmMDc4ZTg6ICAgIHZjdnQuZjY0LnMzMiBkNywgczE0CiAgICAweGI2ZjA3OGVjOiAgICB2Y21w
LmY2NCBkMSwgZDcKICAgIDB4YjZmMDc4ZjA6ICAgIHZtcnMgICBhcHNyX256Y3YsIGZwc2NyCiAg
ICAweGI2ZjA3OGY0OiAgICBibmUgICAgMHhiNmYwNzkwNgogICAgMHhiNmYwNzhmNjogICAgdHN0
ICAgIHIwLCByMAogICAgMHhiNmYwNzhmODogICAgYmVxICAgIDB4YjZmMDc5MDYKICAgIDB4YjZm
MDc4ZmE6ICAgIG1vdiAgICByMSwgIzQyOTQ5NjcyOTUKICAgIDB4YjZmMDc4ZmU6ICAgIG1vdiAg
ICBzcCwgcjcKICAgIDB4YjZmMDc5MDA6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNzkw
NDogICAgYnggICAgIGxyCiAgICAweGI2ZjA3OTA2OiAgICB2bW92ICAgcjEsIHIxLCBkMQogICAg
MHhiNmYwNzkwYTogICAgdHN0ICAgIHIxLCByMQogICAgMHhiNmYwNzkwYzogICAgYm5lICAgIDB4
YjZmMDc5MTgKICAgIDB4YjZmMDc5MGU6ICAgIHRzdCAgICByMCwgcjAKICAgIDB4YjZmMDc5MTA6
ICAgIGJuZSAgICAweGI2ZjA3OTE4CiAgICAweGI2ZjA3OTEyOiAgICBtb3ZzICAgcjAsICMwCiAg
ICAweGI2ZjA3OTE0OiAgICBtb3YgICAgcjEsICM0Mjk0OTY3Mjk1CiAgICAweGI2ZjA3OTE4OiAg
ICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA3OTFhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4
YjZmMDc5MWU6ICAgIGJ4ICAgICBscgpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0
aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA3OTIxLCAweGI2ZjA3OWExKToKICAgIDB4YjZm
MDc5MjA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNzkyNDogICAgbW92ICAgIHI3LCBz
cAogICAgMHhiNmYwNzkyNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDc5MmE6ICAgIHN0
ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA3OTJlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgMHhiNmYwNzkzMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDc5MzY6ICAgIHN0
ciAgICByNywgW3I2XQogICAgMHhiNmYwNzkzODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYw
NzkzYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDc5M2M6ICAgIGxkciAgICBy
MiwgW3IxLCAjMjBdCiAgICAweGI2ZjA3OTNlOiAgICBtb3Z3ICAgcjEyLCAjNTUwNjUKICAgIDB4
YjZmMDc5NDI6ICAgIG1vdnQgICByMTIsICM0NjgwNgogICAgMHhiNmYwNzk0NjogICAgYmx4ICAg
IHIxMgogICAgMHhiNmYwNzk0ODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwNzk0YTogICAg
bW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDc5NGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAweGI2ZjA3OTUyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDc5NTQ6ICAgIGNtcCAg
ICByMiwgIzAKICAgIDB4YjZmMDc5NTY6ICAgIGJuZSAgICAweGI2ZjA3OTYwCiAgICAweGI2ZjA3
OTU4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA3OTVhOiAgICBwb3AgICAge3I3LCBscn0K
ICAgIDB4YjZmMDc5NWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNzk2MDogICAgbW92dyAgIHI2
LCAjNDIxMjgKICAgIDB4YjZmMDc5NjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA3
OTY4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDc5NmE6ICAgIG1vdiAgICByMCwgcjcK
ICAgIDB4YjZmMDc5NmM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA3OTcwOiAgICBt
b3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNzk3NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA3
OTc2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNzk3YTogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDc5N2U6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNzk4MDog
ICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoK
ICAgIENvZGUgYXQgWzB4YjZmMDc3NDEsIDB4YjZmMDc3YzEpOgogICAgMHhiNmYwNzc0MDogICAg
cHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA3NzQ0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2
ZjA3NzQ2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNzc0YTogICAgc3RyICAgIHIxMiwg
W3I3LCAjOF0KICAgIDB4YjZmMDc3NGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA3
NzUyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNzc1NjogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAweGI2ZjA3NzU4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA3NzVhOiAgICBs
ZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNzc1YzogICAgbGRyICAgIHIyLCBbcjEsICMy
MF0KICAgIDB4YjZmMDc3NWU6ICAgIG1vdncgICByMTIsICM1MjQ1MwogICAgMHhiNmYwNzc2Mjog
ICAgbW92dCAgIHIxMiwgIzQ2ODA2CiAgICAweGI2ZjA3NzY2OiAgICBibHggICAgcjEyCiAgICAw
eGI2ZjA3NzY4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA3NzZhOiAgICBtb3Z3ICAgcjYs
ICM0NjM0OAogICAgMHhiNmYwNzc2ZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDc3
NzI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNzc3NDogICAgY21wICAgIHIyLCAjMAog
ICAgMHhiNmYwNzc3NjogICAgYm5lICAgIDB4YjZmMDc3ODAKICAgIDB4YjZmMDc3Nzg6ICAgIG1v
diAgICBzcCwgcjcKICAgIDB4YjZmMDc3N2E6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYw
Nzc3ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA3NzgwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgMHhiNmYwNzc4NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDc3ODg6ICAgIHN0
ciAgICByNywgW3I2XQogICAgMHhiNmYwNzc4YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYw
Nzc4YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDc3OTA6ICAgIG1vdnQgICByMywg
IzQ2Nzc2CiAgICAweGI2ZjA3Nzk0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDc3OTY6ICAgIG1v
dncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA3NzlhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwNzc5ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA3N2EwOiAgICBieCAgICAg
cjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBh
dCBbMHhiNmYwNzZjMSwgMHhiNmYwNzc0MSk6CiAgICAweGI2ZjA3NmMwOiAgICBwdXNoICAge3I3
LCBscn0KICAgIDB4YjZmMDc2YzQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDc2YzY6ICAg
IG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA3NmNhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQog
ICAgMHhiNmYwNzZjZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDc2ZDI6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA3NmQ2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4
YjZmMDc2ZDg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDc2ZGE6ICAgIGxkciAgICByMSwg
W3I3LCAjMTZdCiAgICAweGI2ZjA3NmRjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhi
NmYwNzZkZTogICAgbW92dyAgIHIxMiwgIzUxNDQ5CiAgICAweGI2ZjA3NmUyOiAgICBtb3Z0ICAg
cjEyLCAjNDY4MDYKICAgIDB4YjZmMDc2ZTY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDc2ZTg6
ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDc2ZWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAg
ICAweGI2ZjA3NmVlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNzZmMjogICAgbGRy
ICAgIHI2LCBbcjZdCiAgICAweGI2ZjA3NmY0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA3
NmY2OiAgICBibmUgICAgMHhiNmYwNzcwMAogICAgMHhiNmYwNzZmODogICAgbW92ICAgIHNwLCBy
NwogICAgMHhiNmYwNzZmYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA3NmZlOiAgICBi
eCAgICAgbHIKICAgIDB4YjZmMDc3MDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA3
NzA0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNzcwODogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAweGI2ZjA3NzBhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA3NzBjOiAgICBt
b3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNzcxMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAg
IDB4YjZmMDc3MTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwNzcxNjogICAgbW92dyAgIHI2LCAj
NDYxODgKICAgIDB4YjZmMDc3MWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA3NzFl
OiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDc3MjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0
ZWQgSklUIGNvZGUgZm9yIFNwZWNpYWxpemVkIHRodW5rIGZvciBzcXJ0OgogICAgQ29kZSBhdCBb
MHhiNmYwNzYyMSwgMHhiNmYwNzY4MSk6CiAgICAweGI2ZjA3NjIwOiAgICBwdXNoICAge3I3LCBs
cn0KICAgIDB4YjZmMDc2MjQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDc2MjY6ICAgIGxk
ciAgICByNiwgW3I3LCAjMjRdCiAgICAweGI2ZjA3NjI4OiAgICBjbXAgICAgcjIsICMyCiAgICAw
eGI2ZjA3NjJhOiAgICBpdHR0ICAgbmUKICAgIDB4YjZmMDc2MmM6ICAgIG5vcG5lICAKICAgIDB4
YjZmMDc2MmU6ICAgIG5vcG5lICAKICAgIDB4YjZmMDc2MzI6ICAgIGJuZSAgICAweGI2NzBhNjIw
CiAgICAweGI2ZjA3NjM2OiAgICBsZHIgICAgcjAsIFtyNywgIzQ0XQogICAgMHhiNmYwNzYzODog
ICAgY21uICAgIHIwLCAjNwogICAgMHhiNmYwNzYzYzogICAgYmxvICAgIDB4YjZmMDc2NWEKICAg
IDB4YjZmMDc2M2U6ICAgIGNtcCAgICByMCwgIzQyOTQ5NjcyOTUKICAgIDB4YjZmMDc2NDI6ICAg
IGl0dHQgICBuZQogICAgMHhiNmYwNzY0NDogICAgbm9wbmUgIAogICAgMHhiNmYwNzY0NjogICAg
bm9wbmUgIAogICAgMHhiNmYwNzY0YTogICAgYm5lICAgIDB4YjY3MGE2MjAKICAgIDB4YjZmMDc2
NGU6ICAgIGxkciAgICByMCwgW3I3LCAjNDBdCiAgICAweGI2ZjA3NjUwOiAgICB2bW92ICAgZDcs
IHIwLCByMAogICAgMHhiNmYwNzY1NDogICAgdmN2dC5mNjQuczMyIGQwLCBzMTQKICAgIDB4YjZm
MDc2NTg6ICAgIGIgICAgICAweGI2ZjA3NjVlCiAgICAweGI2ZjA3NjVhOiAgICB2bGRyICAgZDAs
IFtyNywgIzQwXQogICAgMHhiNmYwNzY1ZTogICAgLmxvbmcgIGVlYjEwYmMwCiAgICAweGI2ZjA3
NjYyOiAgICB2bW92ICAgcjEsIHIxLCBkMAogICAgMHhiNmYwNzY2NjogICAgdHN0ICAgIHIxLCBy
MQogICAgMHhiNmYwNzY2ODogICAgYm5lICAgIDB4YjZmMDc2NzQKICAgIDB4YjZmMDc2NmE6ICAg
IHRzdCAgICByMCwgcjAKICAgIDB4YjZmMDc2NmM6ICAgIGJuZSAgICAweGI2ZjA3Njc0CiAgICAw
eGI2ZjA3NjZlOiAgICBtb3ZzICAgcjAsICMwCiAgICAweGI2ZjA3NjcwOiAgICBtb3YgICAgcjEs
ICM0Mjk0OTY3Mjk1CiAgICAweGI2ZjA3Njc0OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA3
Njc2OiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDc2N2E6ICAgIGJ4ICAgICBscgpHZW5l
cmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2
ZjA3NWExLCAweGI2ZjA3NjIxKToKICAgIDB4YjZmMDc1YTA6ICAgIHB1c2ggICB7cjcsIGxyfQog
ICAgMHhiNmYwNzVhNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNzVhNjogICAgbW92ICAg
IHIxMiwgIzAKICAgIDB4YjZmMDc1YWE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2
ZjA3NWFlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNzViMjogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDc1YjY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNzVi
ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNzViYTogICAgbGRyICAgIHIxLCBbcjcsICMx
Nl0KICAgIDB4YjZmMDc1YmM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA3NWJl
OiAgICBtb3Z3ICAgcjEyLCAjNTEzNDUKICAgIDB4YjZmMDc1YzI6ICAgIG1vdnQgICByMTIsICM0
NjgwNgogICAgMHhiNmYwNzVjNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNzVjODogICAgbW92
ICAgIGxyLCByMwogICAgMHhiNmYwNzVjYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZm
MDc1Y2U6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA3NWQyOiAgICBsZHIgICAgcjYs
IFtyNl0KICAgIDB4YjZmMDc1ZDQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDc1ZDY6ICAg
IGJuZSAgICAweGI2ZjA3NWUwCiAgICAweGI2ZjA3NWQ4OiAgICBtb3YgICAgc3AsIHI3CiAgICAw
eGI2ZjA3NWRhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDc1ZGU6ICAgIGJ4ICAgICBs
cgogICAgMHhiNmYwNzVlMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDc1ZTQ6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA3NWU4OiAgICBzdHIgICAgcjcsIFtyNl0KICAg
IDB4YjZmMDc1ZWE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDc1ZWM6ICAgIG1vdncgICBy
MywgIzYzMjQ5CiAgICAweGI2ZjA3NWYwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYw
NzVmNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA3NWY2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAog
ICAgMHhiNmYwNzVmYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDc1ZmU6ICAgIGxk
ciAgICByMSwgW3I2XQogICAgMHhiNmYwNzYwMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQg
Y29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDc1MjEsIDB4
YjZmMDc1YTEpOgogICAgMHhiNmYwNzUyMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA3
NTI0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA3NTI2OiAgICBtb3YgICAgcjEyLCAjMAog
ICAgMHhiNmYwNzUyYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDc1MmU6ICAg
IG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA3NTMyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwNzUzNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA3NTM4OiAgICBtb3Yg
ICAgcjAsIHI3CiAgICAweGI2ZjA3NTNhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhi
NmYwNzUzYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDc1M2U6ICAgIG1vdncg
ICByMTIsICM1MTY1NwogICAgMHhiNmYwNzU0MjogICAgbW92dCAgIHIxMiwgIzQ2ODA2CiAgICAw
eGI2ZjA3NTQ2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA3NTQ4OiAgICBtb3YgICAgbHIsIHIz
CiAgICAweGI2ZjA3NTRhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNzU0ZTogICAg
bW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDc1NTI6ICAgIGxkciAgICByNiwgW3I2XQogICAg
MHhiNmYwNzU1NDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwNzU1NjogICAgYm5lICAgIDB4
YjZmMDc1NjAKICAgIDB4YjZmMDc1NTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDc1NWE6
ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNzU1ZTogICAgYnggICAgIGxyCiAgICAweGI2
ZjA3NTYwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNzU2NDogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDc1Njg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNzU2
YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNzU2YzogICAgbW92dyAgIHIzLCAjNjMyNDkK
ICAgIDB4YjZmMDc1NzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA3NTc0OiAgICBi
bHggICAgcjMKICAgIDB4YjZmMDc1NzY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA3
NTdhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNzU3ZTogICAgbGRyICAgIHIxLCBb
cjZdCiAgICAweGI2ZjA3NTgwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBT
cGVjaWFsaXplZCB0aHVuayBmb3IgaW11bDoKICAgIENvZGUgYXQgWzB4YjZmMDczZTEsIDB4YjZm
MDc0YzEpOgogICAgMHhiNmYwNzNlMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA3M2U0
OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA3M2U2OiAgICBsZHIgICAgcjYsIFtyNywgIzI0
XQogICAgMHhiNmYwNzNlODogICAgY21wICAgIHIyLCAjMwogICAgMHhiNmYwNzNlYTogICAgaXR0
dCAgIG5lCiAgICAweGI2ZjA3M2VjOiAgICBub3BuZSAgCiAgICAweGI2ZjA3M2VlOiAgICBub3Bu
ZSAgCiAgICAweGI2ZjA3M2YyOiAgICBibmUgICAgMHhiNjcwYTYyMAogICAgMHhiNmYwNzNmNjog
ICAgbGRyICAgIHIwLCBbcjcsICM0MF0KICAgIDB4YjZmMDczZjg6ICAgIGxkciAgICByNiwgW3I3
LCAjNDRdCiAgICAweGI2ZjA3M2ZhOiAgICBjbXAgICAgcjYsICM0Mjk0OTY3Mjk1CiAgICAweGI2
ZjA3M2ZlOiAgICBibmUgICAgMHhiNmYwNzQxYQogICAgMHhiNmYwNzQwMDogICAgbGRyICAgIHIx
LCBbcjcsICM0OF0KICAgIDB4YjZmMDc0MDI6ICAgIGxkciAgICByNiwgW3I3LCAjNTJdCiAgICAw
eGI2ZjA3NDA0OiAgICBjbXAgICAgcjYsICM0Mjk0OTY3Mjk1CiAgICAweGI2ZjA3NDA4OiAgICBi
bmUgICAgMHhiNmYwNzQ2MAogICAgMHhiNmYwNzQwYTogICAgc211bGwgIHIwLCByMTIsIHIwLCBy
MQogICAgMHhiNmYwNzQwZTogICAgbW92ICAgIHIxLCAjNDI5NDk2NzI5NQogICAgMHhiNmYwNzQx
MjogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNzQxNDogICAgcG9wICAgIHtyNywgbHJ9CiAg
ICAweGI2ZjA3NDE4OiAgICBieCAgICAgbHIKICAgIDB4YjZmMDc0MWE6ICAgIGxkciAgICByMCwg
W3I3LCAjNDRdCiAgICAweGI2ZjA3NDFjOiAgICBjbW4gICAgcjAsICM3CiAgICAweGI2ZjA3NDIw
OiAgICBibG8gICAgMHhiNmYwNzQzZQogICAgMHhiNmYwNzQyMjogICAgY21wICAgIHIwLCAjNDI5
NDk2NzI5NQogICAgMHhiNmYwNzQyNjogICAgaXR0dCAgIG5lCiAgICAweGI2ZjA3NDI4OiAgICBu
b3BuZSAgCiAgICAweGI2ZjA3NDJhOiAgICBub3BuZSAgCiAgICAweGI2ZjA3NDJlOiAgICBibmUg
ICAgMHhiNjcwYTYyMAogICAgMHhiNmYwNzQzMjogICAgbGRyICAgIHIwLCBbcjcsICM0MF0KICAg
IDB4YjZmMDc0MzQ6ICAgIHZtb3YgICBkNywgcjAsIHIwCiAgICAweGI2ZjA3NDM4OiAgICB2Y3Z0
LmY2NC5zMzIgZDAsIHMxNAogICAgMHhiNmYwNzQzYzogICAgYiAgICAgIDB4YjZmMDc0NDIKICAg
IDB4YjZmMDc0M2U6ICAgIHZsZHIgICBkMCwgW3I3LCAjNDBdCiAgICAweGI2ZjA3NDQyOiAgICB2
Y3Z0LnMzMi5mNjQgczE0LCBkMAogICAgMHhiNmYwNzQ0NjogICAgdm1vdiAgIHMxNCwgcjAKICAg
IDB4YjZmMDc0NGE6ICAgIGFkZCAgICByMTIsIHIwLCByMAogICAgMHhiNmYwNzQ0ZTogICAgYmVx
ICAgIDB4YjZmMDc0NTYKICAgIDB4YjZmMDc0NTA6ICAgIGNtbiAgICByMTIsICMyCiAgICAweGI2
ZjA3NDU0OiAgICBibmUgICAgMHhiNmYwNzYwMAogICAgMHhiNmYwNzQ1NjogICAgbm9wICAgIAog
ICAgMHhiNmYwNzQ1ODogICAgbm9wICAgIAogICAgMHhiNmYwNzQ1YzogICAgYiAgICAgIDB4YjY3
MGE2MjAKICAgIDB4YjZmMDc0NjA6ICAgIGxkciAgICByMSwgW3I3LCAjNTJdCiAgICAweGI2ZjA3
NDYyOiAgICBjbW4gICAgcjEsICM3CiAgICAweGI2ZjA3NDY2OiAgICBibG8gICAgMHhiNmYwNzQ4
NAogICAgMHhiNmYwNzQ2ODogICAgY21wICAgIHIxLCAjNDI5NDk2NzI5NQogICAgMHhiNmYwNzQ2
YzogICAgaXR0dCAgIG5lCiAgICAweGI2ZjA3NDZlOiAgICBub3BuZSAgCiAgICAweGI2ZjA3NDcw
OiAgICBub3BuZSAgCiAgICAweGI2ZjA3NDc0OiAgICBibmUgICAgMHhiNjcwYTYyMAogICAgMHhi
NmYwNzQ3ODogICAgbGRyICAgIHIxLCBbcjcsICM0OF0KICAgIDB4YjZmMDc0N2E6ICAgIHZtb3Yg
ICBkNywgcjEsIHIxCiAgICAweGI2ZjA3NDdlOiAgICB2Y3Z0LmY2NC5zMzIgZDAsIHMxNAogICAg
MHhiNmYwNzQ4MjogICAgYiAgICAgIDB4YjZmMDc0ODgKICAgIDB4YjZmMDc0ODQ6ICAgIHZsZHIg
ICBkMCwgW3I3LCAjNDhdCiAgICAweGI2ZjA3NDg4OiAgICB2Y3Z0LnMzMi5mNjQgczE0LCBkMAog
ICAgMHhiNmYwNzQ4YzogICAgdm1vdiAgIHMxNCwgcjEKICAgIDB4YjZmMDc0OTA6ICAgIGFkZCAg
ICByMTIsIHIxLCByMQogICAgMHhiNmYwNzQ5NDogICAgYmVxICAgIDB4YjZmMDc0OWMKICAgIDB4
YjZmMDc0OTY6ICAgIGNtbiAgICByMTIsICMyCiAgICAweGI2ZjA3NDlhOiAgICBibmUgICAgMHhi
NmYwNzYwYQogICAgMHhiNmYwNzQ5YzogICAgbm9wICAgIAogICAgMHhiNmYwNzQ5ZTogICAgbm9w
ICAgIAogICAgMHhiNmYwNzRhMjogICAgYiAgICAgIDB4YjY3MGE2MjAKR2VuZXJhdGVkIEpJVCBj
b2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNzM2MSwgMHhi
NmYwNzNlMSk6CiAgICAweGI2ZjA3MzYwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDcz
NjQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDczNjY6ICAgIG1vdiAgICByMTIsICMwCiAg
ICAweGI2ZjA3MzZhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwNzM2ZTogICAg
bW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDczNzI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAweGI2ZjA3Mzc2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDczNzg6ICAgIG1vdiAg
ICByMCwgcjcKICAgIDB4YjZmMDczN2E6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2
ZjA3MzdjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNzM3ZTogICAgbW92dyAg
IHIxMiwgIzIyMDU3CiAgICAweGI2ZjA3MzgyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MDkKICAgIDB4
YjZmMDczODY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDczODg6ICAgIG1vdiAgICBsciwgcjMK
ICAgIDB4YjZmMDczOGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA3MzhlOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNzM5MjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAw
eGI2ZjA3Mzk0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA3Mzk2OiAgICBibmUgICAgMHhi
NmYwNzNhMAogICAgMHhiNmYwNzM5ODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNzM5YTog
ICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA3MzllOiAgICBieCAgICAgbHIKICAgIDB4YjZm
MDczYTA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA3M2E0OiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwNzNhODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA3M2Fh
OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA3M2FjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQog
ICAgMHhiNmYwNzNiMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDczYjQ6ICAgIGJs
eCAgICByMwogICAgMHhiNmYwNzNiNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDcz
YmE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA3M2JlOiAgICBsZHIgICAgcjEsIFty
Nl0KICAgIDB4YjZmMDczYzA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJ
VCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA3MmUxLCAweGI2ZjA3MzYxKToK
ICAgIDB4YjZmMDcyZTA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNzJlNDogICAgbW92
ICAgIHI3LCBzcAogICAgMHhiNmYwNzJlNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDcy
ZWE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA3MmVlOiAgICBtb3Z3ICAgcjYs
ICM0MjEyOAogICAgMHhiNmYwNzJmMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDcy
ZjY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNzJmODogICAgbW92ICAgIHIwLCByNwog
ICAgMHhiNmYwNzJmYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDcyZmM6ICAg
IGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA3MmZlOiAgICBtb3Z3ICAgcjEyLCAjMjI5
NjkKICAgIDB4YjZmMDczMDI6ICAgIG1vdnQgICByMTIsICM0NjgwOQogICAgMHhiNmYwNzMwNjog
ICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNzMwODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYw
NzMwYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDczMGU6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA3MzEyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDczMTQ6
ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDczMTY6ICAgIGJuZSAgICAweGI2ZjA3MzIwCiAg
ICAweGI2ZjA3MzE4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA3MzFhOiAgICBwb3AgICAg
e3I3LCBscn0KICAgIDB4YjZmMDczMWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNzMyMDogICAg
bW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDczMjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAweGI2ZjA3MzI4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDczMmE6ICAgIG1vdiAg
ICByMCwgcjcKICAgIDB4YjZmMDczMmM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA3
MzMwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNzMzNDogICAgYmx4ICAgIHIzCiAg
ICAweGI2ZjA3MzM2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNzMzYTogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDczM2U6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhi
NmYwNzM0MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRp
dmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDcyNjEsIDB4YjZmMDcyZTEpOgogICAgMHhiNmYw
NzI2MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA3MjY0OiAgICBtb3YgICAgcjcsIHNw
CiAgICAweGI2ZjA3MjY2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNzI2YTogICAgc3Ry
ICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDcyNmU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAg
ICAweGI2ZjA3MjcyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNzI3NjogICAgc3Ry
ICAgIHI3LCBbcjZdCiAgICAweGI2ZjA3Mjc4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA3
MjdhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNzI3YzogICAgbGRyICAgIHIy
LCBbcjEsICMyMF0KICAgIDB4YjZmMDcyN2U6ICAgIG1vdncgICByMTIsICMxMDMwOQogICAgMHhi
NmYwNzI4MjogICAgbW92dCAgIHIxMiwgIzQ2ODAwCiAgICAweGI2ZjA3Mjg2OiAgICBibHggICAg
cjEyCiAgICAweGI2ZjA3Mjg4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA3MjhhOiAgICBt
b3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNzI4ZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDcyOTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNzI5NDogICAgY21wICAg
IHIyLCAjMAogICAgMHhiNmYwNzI5NjogICAgYm5lICAgIDB4YjZmMDcyYTAKICAgIDB4YjZmMDcy
OTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDcyOWE6ICAgIHBvcCAgICB7cjcsIGxyfQog
ICAgMHhiNmYwNzI5ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA3MmEwOiAgICBtb3Z3ICAgcjYs
ICM0MjEyOAogICAgMHhiNmYwNzJhNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDcy
YTg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNzJhYTogICAgbW92ICAgIHIwLCByNwog
ICAgMHhiNmYwNzJhYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDcyYjA6ICAgIG1v
dnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA3MmI0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDcy
YjY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA3MmJhOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgMHhiNmYwNzJiZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA3MmMwOiAg
ICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBTcGVjaWFsaXplZCB0aHVuayBmb3Ig
YWJzOgogICAgQ29kZSBhdCBbMHhiNmYwNzFhMSwgMHhiNmYwNzI0MSk6CiAgICAweGI2ZjA3MWEw
OiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDcxYTQ6ICAgIG1vdiAgICByNywgc3AKICAg
IDB4YjZmMDcxYTY6ICAgIGxkciAgICByNiwgW3I3LCAjMjRdCiAgICAweGI2ZjA3MWE4OiAgICBj
bXAgICAgcjIsICMyCiAgICAweGI2ZjA3MWFhOiAgICBpdHR0ICAgbmUKICAgIDB4YjZmMDcxYWM6
ICAgIG5vcG5lICAKICAgIDB4YjZmMDcxYWU6ICAgIG5vcG5lICAKICAgIDB4YjZmMDcxYjI6ICAg
IGJuZSAgICAweGI2NzBhNjIwCiAgICAweGI2ZjA3MWI2OiAgICBsZHIgICAgcjAsIFtyNywgIzQw
XQogICAgMHhiNmYwNzFiODogICAgbGRyICAgIHI2LCBbcjcsICM0NF0KICAgIDB4YjZmMDcxYmE6
ICAgIGNtcCAgICByNiwgIzQyOTQ5NjcyOTUKICAgIDB4YjZmMDcxYmU6ICAgIGJuZSAgICAweGI2
ZjA3MWUyCiAgICAweGI2ZjA3MWMwOiAgICBhc3IgICAgcjEsIHIwLCAjMzEKICAgIDB4YjZmMDcx
YzQ6ICAgIGFkZCAgICByMCwgcjEKICAgIDB4YjZmMDcxYzY6ICAgIGVvciAgICByMCwgcjEKICAg
IDB4YjZmMDcxYzg6ICAgIHRzdCAgICByMCwgcjAKICAgIDB4YjZmMDcxY2E6ICAgIGl0dHQgICBt
aQogICAgMHhiNmYwNzFjYzogICAgbm9wbWkgIAogICAgMHhiNmYwNzFjZTogICAgbm9wbWkgIAog
ICAgMHhiNmYwNzFkMjogICAgYm1pICAgIDB4YjY3MGE2MjAKICAgIDB4YjZmMDcxZDY6ICAgIG1v
diAgICByMSwgIzQyOTQ5NjcyOTUKICAgIDB4YjZmMDcxZGE6ICAgIG1vdiAgICBzcCwgcjcKICAg
IDB4YjZmMDcxZGM6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNzFlMDogICAgYnggICAg
IGxyCiAgICAweGI2ZjA3MWUyOiAgICBsZHIgICAgcjAsIFtyNywgIzQ0XQogICAgMHhiNmYwNzFl
NDogICAgY21uICAgIHIwLCAjNwogICAgMHhiNmYwNzFlODogICAgYmxvICAgIDB4YjZmMDcyMDYK
ICAgIDB4YjZmMDcxZWE6ICAgIGNtcCAgICByMCwgIzQyOTQ5NjcyOTUKICAgIDB4YjZmMDcxZWU6
ICAgIGl0dHQgICBuZQogICAgMHhiNmYwNzFmMDogICAgbm9wbmUgIAogICAgMHhiNmYwNzFmMjog
ICAgbm9wbmUgIAogICAgMHhiNmYwNzFmNjogICAgYm5lICAgIDB4YjY3MGE2MjAKICAgIDB4YjZm
MDcxZmE6ICAgIGxkciAgICByMCwgW3I3LCAjNDBdCiAgICAweGI2ZjA3MWZjOiAgICB2bW92ICAg
ZDcsIHIwLCByMAogICAgMHhiNmYwNzIwMDogICAgdmN2dC5mNjQuczMyIGQwLCBzMTQKICAgIDB4
YjZmMDcyMDQ6ICAgIGIgICAgICAweGI2ZjA3MjBhCiAgICAweGI2ZjA3MjA2OiAgICB2bGRyICAg
ZDAsIFtyNywgIzQwXQogICAgMHhiNmYwNzIwYTogICAgLmxvbmcgIGVlYjAxYmMwCiAgICAweGI2
ZjA3MjBlOiAgICB2bW92ICAgcjEsIHIxLCBkMQogICAgMHhiNmYwNzIxMjogICAgdHN0ICAgIHIx
LCByMQogICAgMHhiNmYwNzIxNDogICAgYm5lICAgIDB4YjZmMDcyMjAKICAgIDB4YjZmMDcyMTY6
ICAgIHRzdCAgICByMCwgcjAKICAgIDB4YjZmMDcyMTg6ICAgIGJuZSAgICAweGI2ZjA3MjIwCiAg
ICAweGI2ZjA3MjFhOiAgICBtb3ZzICAgcjAsICMwCiAgICAweGI2ZjA3MjFjOiAgICBtb3YgICAg
cjEsICM0Mjk0OTY3Mjk1CiAgICAweGI2ZjA3MjIwOiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2
ZjA3MjIyOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDcyMjY6ICAgIGJ4ICAgICBscgpH
ZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsw
eGI2ZjA3MTIxLCAweGI2ZjA3MWExKToKICAgIDB4YjZmMDcxMjA6ICAgIHB1c2ggICB7cjcsIGxy
fQogICAgMHhiNmYwNzEyNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNzEyNjogICAgbW92
ICAgIHIxMiwgIzAKICAgIDB4YjZmMDcxMmE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAw
eGI2ZjA3MTJlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNzEzMjogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMDcxMzY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYw
NzEzODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNzEzYTogICAgbGRyICAgIHIxLCBbcjcs
ICMxNl0KICAgIDB4YjZmMDcxM2M6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA3
MTNlOiAgICBtb3Z3ICAgcjEyLCAjNzU4MQogICAgMHhiNmYwNzE0MjogICAgbW92dCAgIHIxMiwg
IzQ2ODAwCiAgICAweGI2ZjA3MTQ2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA3MTQ4OiAgICBt
b3YgICAgbHIsIHIzCiAgICAweGI2ZjA3MTRhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhi
NmYwNzE0ZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDcxNTI6ICAgIGxkciAgICBy
NiwgW3I2XQogICAgMHhiNmYwNzE1NDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwNzE1Njog
ICAgYm5lICAgIDB4YjZmMDcxNjAKICAgIDB4YjZmMDcxNTg6ICAgIG1vdiAgICBzcCwgcjcKICAg
IDB4YjZmMDcxNWE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNzE1ZTogICAgYnggICAg
IGxyCiAgICAweGI2ZjA3MTYwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNzE2NDog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDcxNjg6ICAgIHN0ciAgICByNywgW3I2XQog
ICAgMHhiNmYwNzE2YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNzE2YzogICAgbW92dyAg
IHIzLCAjNjMyNDkKICAgIDB4YjZmMDcxNzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2
ZjA3MTc0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDcxNzY6ICAgIG1vdncgICByNiwgIzQ2MTg4
CiAgICAweGI2ZjA3MTdhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNzE3ZTogICAg
bGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA3MTgwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJ
VCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNzBhMSwg
MHhiNmYwNzEyMSk6CiAgICAweGI2ZjA3MGEwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZm
MDcwYTQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDcwYTY6ICAgIG1vdiAgICByMTIsICMw
CiAgICAweGI2ZjA3MGFhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwNzBhZTog
ICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDcwYjI6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAweGI2ZjA3MGI2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDcwYjg6ICAgIG1v
diAgICByMCwgcjcKICAgIDB4YjZmMDcwYmE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAw
eGI2ZjA3MGJjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNzBiZTogICAgbW92
dyAgIHIxMiwgIzc0OTMKICAgIDB4YjZmMDcwYzI6ICAgIG1vdnQgICByMTIsICM0NjgwMAogICAg
MHhiNmYwNzBjNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNzBjODogICAgbW92ICAgIGxyLCBy
MwogICAgMHhiNmYwNzBjYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDcwY2U6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA3MGQyOiAgICBsZHIgICAgcjYsIFtyNl0KICAg
IDB4YjZmMDcwZDQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDcwZDY6ICAgIGJuZSAgICAw
eGI2ZjA3MGUwCiAgICAweGI2ZjA3MGQ4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA3MGRh
OiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDcwZGU6ICAgIGJ4ICAgICBscgogICAgMHhi
NmYwNzBlMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDcwZTQ6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjA3MGU4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDcw
ZWE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDcwZWM6ICAgIG1vdncgICByMywgIzYzMjQ5
CiAgICAweGI2ZjA3MGYwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNzBmNDogICAg
Ymx4ICAgIHIzCiAgICAweGI2ZjA3MGY2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYw
NzBmYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDcwZmU6ICAgIGxkciAgICByMSwg
W3I2XQogICAgMHhiNmYwNzEwMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3Ig
SklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDcwMjEsIDB4YjZmMDcwYTEp
OgogICAgMHhiNmYwNzAyMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA3MDI0OiAgICBt
b3YgICAgcjcsIHNwCiAgICAweGI2ZjA3MDI2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYw
NzAyYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDcwMmU6ICAgIG1vdncgICBy
NiwgIzQyMTI4CiAgICAweGI2ZjA3MDMyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYw
NzAzNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA3MDM4OiAgICBtb3YgICAgcjAsIHI3
CiAgICAweGI2ZjA3MDNhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNzAzYzog
ICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDcwM2U6ICAgIG1vdncgICByMTIsICMx
MzIzNwogICAgMHhiNmYwNzA0MjogICAgbW92dCAgIHIxMiwgIzQ2Nzk5CiAgICAweGI2ZjA3MDQ2
OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA3MDQ4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2
ZjA3MDRhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNzA0ZTogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDcwNTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNzA1
NDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwNzA1NjogICAgYm5lICAgIDB4YjZmMDcwNjAK
ICAgIDB4YjZmMDcwNTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDcwNWE6ICAgIHBvcCAg
ICB7cjcsIGxyfQogICAgMHhiNmYwNzA1ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA3MDYwOiAg
ICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNzA2NDogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgIDB4YjZmMDcwNjg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNzA2YTogICAgbW92
ICAgIHIwLCByNwogICAgMHhiNmYwNzA2YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZm
MDcwNzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA3MDc0OiAgICBibHggICAgcjMK
ICAgIDB4YjZmMDcwNzY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA3MDdhOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNzA3ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAw
eGI2ZjA3MDgwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5h
dGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNGZhMSwgMHhiNmYwNTAyMSk6CiAgICAweGI2
ZjA0ZmEwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDRmYTQ6ICAgIG1vdiAgICByNywg
c3AKICAgIDB4YjZmMDRmYTY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA0ZmFhOiAgICBz
dHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwNGZhZTogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgIDB4YjZmMDRmYjI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA0ZmI2OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDRmYjg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZm
MDRmYmE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA0ZmJjOiAgICBsZHIgICAg
cjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNGZiZTogICAgbW92dyAgIHIxMiwgIzI3MDEzCiAgICAw
eGI2ZjA0ZmMyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MDMKICAgIDB4YjZmMDRmYzY6ICAgIGJseCAg
ICByMTIKICAgIDB4YjZmMDRmYzg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDRmY2E6ICAg
IG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA0ZmNlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwNGZkMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA0ZmQ0OiAgICBjbXAg
ICAgcjIsICMwCiAgICAweGI2ZjA0ZmQ2OiAgICBibmUgICAgMHhiNmYwNGZlMAogICAgMHhiNmYw
NGZkODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNGZkYTogICAgcG9wICAgIHtyNywgbHJ9
CiAgICAweGI2ZjA0ZmRlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDRmZTA6ICAgIG1vdncgICBy
NiwgIzQyMTI4CiAgICAweGI2ZjA0ZmU0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYw
NGZlODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA0ZmVhOiAgICBtb3YgICAgcjAsIHI3
CiAgICAweGI2ZjA0ZmVjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNGZmMDogICAg
bW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDRmZjQ6ICAgIGJseCAgICByMwogICAgMHhiNmYw
NGZmNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDRmZmE6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA0ZmZlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDUwMDA6
ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6
CiAgICBDb2RlIGF0IFsweGI2ZjA1MDIxLCAweGI2ZjA1MGExKToKICAgIDB4YjZmMDUwMjA6ICAg
IHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNTAyNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhi
NmYwNTAyNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDUwMmE6ICAgIHN0ciAgICByMTIs
IFtyNywgIzhdCiAgICAweGI2ZjA1MDJlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYw
NTAzMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDUwMzY6ICAgIHN0ciAgICByNywg
W3I2XQogICAgMHhiNmYwNTAzODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNTAzYTogICAg
bGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDUwM2M6ICAgIGxkciAgICByMiwgW3IxLCAj
MjBdCiAgICAweGI2ZjA1MDNlOiAgICBtb3Z3ICAgcjEyLCAjMjczMTMKICAgIDB4YjZmMDUwNDI6
ICAgIG1vdnQgICByMTIsICM0NjgwMwogICAgMHhiNmYwNTA0NjogICAgYmx4ICAgIHIxMgogICAg
MHhiNmYwNTA0ODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwNTA0YTogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgIDB4YjZmMDUwNGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1
MDUyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDUwNTQ6ICAgIGNtcCAgICByMiwgIzAK
ICAgIDB4YjZmMDUwNTY6ICAgIGJuZSAgICAweGI2ZjA1MDYwCiAgICAweGI2ZjA1MDU4OiAgICBt
b3YgICAgc3AsIHI3CiAgICAweGI2ZjA1MDVhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZm
MDUwNWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNTA2MDogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgIDB4YjZmMDUwNjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1MDY4OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDUwNmE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZm
MDUwNmM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA1MDcwOiAgICBtb3Z0ICAgcjMs
ICM0Njc3NgogICAgMHhiNmYwNTA3NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA1MDc2OiAgICBt
b3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNTA3YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDUwN2U6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNTA4MDogICAgYnggICAg
IHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUg
YXQgWzB4YjZmMDUwYTEsIDB4YjZmMDUxMjEpOgogICAgMHhiNmYwNTBhMDogICAgcHVzaCAgIHty
NywgbHJ9CiAgICAweGI2ZjA1MGE0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA1MGE2OiAg
ICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNTBhYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0K
ICAgIDB4YjZmMDUwYWU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA1MGIyOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNTBiNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjA1MGI4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA1MGJhOiAgICBsZHIgICAgcjEs
IFtyNywgIzE2XQogICAgMHhiNmYwNTBiYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4
YjZmMDUwYmU6ICAgIG1vdncgICByMTIsICMzNjkwNQogICAgMHhiNmYwNTBjMjogICAgbW92dCAg
IHIxMiwgIzQ2ODAzCiAgICAweGI2ZjA1MGM2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA1MGM4
OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA1MGNhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAog
ICAgMHhiNmYwNTBjZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDUwZDI6ICAgIGxk
ciAgICByNiwgW3I2XQogICAgMHhiNmYwNTBkNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYw
NTBkNjogICAgYm5lICAgIDB4YjZmMDUwZTAKICAgIDB4YjZmMDUwZDg6ICAgIG1vdiAgICBzcCwg
cjcKICAgIDB4YjZmMDUwZGE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNTBkZTogICAg
YnggICAgIGxyCiAgICAweGI2ZjA1MGUwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYw
NTBlNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDUwZTg6ICAgIHN0ciAgICByNywg
W3I2XQogICAgMHhiNmYwNTBlYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNTBlYzogICAg
bW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDUwZjA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAg
ICAweGI2ZjA1MGY0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDUwZjY6ICAgIG1vdncgICByNiwg
IzQ2MTg4CiAgICAweGI2ZjA1MGZhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNTBm
ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA1MTAwOiAgICBieCAgICAgcjEKR2VuZXJh
dGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYw
NTEyMSwgMHhiNmYwNTFhMSk6CiAgICAweGI2ZjA1MTIwOiAgICBwdXNoICAge3I3LCBscn0KICAg
IDB4YjZmMDUxMjQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDUxMjY6ICAgIG1vdiAgICBy
MTIsICMwCiAgICAweGI2ZjA1MTJhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYw
NTEyZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDUxMzI6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA1MTM2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDUxMzg6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDUxM2E6ICAgIGxkciAgICByMSwgW3I3LCAjMTZd
CiAgICAweGI2ZjA1MTNjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNTEzZTog
ICAgbW92dyAgIHIxMiwgIzMxMTA1CiAgICAweGI2ZjA1MTQyOiAgICBtb3Z0ICAgcjEyLCAjNDY3
OTgKICAgIDB4YjZmMDUxNDY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDUxNDg6ICAgIG1vdiAg
ICBsciwgcjMKICAgIDB4YjZmMDUxNGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA1
MTRlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNTE1MjogICAgbGRyICAgIHI2LCBb
cjZdCiAgICAweGI2ZjA1MTU0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA1MTU2OiAgICBi
bmUgICAgMHhiNmYwNTE2MAogICAgMHhiNmYwNTE1ODogICAgbW92ICAgIHNwLCByNwogICAgMHhi
NmYwNTE1YTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA1MTVlOiAgICBieCAgICAgbHIK
ICAgIDB4YjZmMDUxNjA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA1MTY0OiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNTE2ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjA1MTZhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA1MTZjOiAgICBtb3Z3ICAgcjMs
ICM2MzI0OQogICAgMHhiNmYwNTE3MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDUx
NzQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwNTE3NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAg
IDB4YjZmMDUxN2E6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1MTdlOiAgICBsZHIg
ICAgcjEsIFtyNl0KICAgIDB4YjZmMDUxODA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNv
ZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA1MWExLCAweGI2
ZjA1MjIxKToKICAgIDB4YjZmMDUxYTA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNTFh
NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNTFhNjogICAgbW92ICAgIHIxMiwgIzAKICAg
IDB4YjZmMDUxYWE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA1MWFlOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNTFiMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDUxYjY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNTFiODogICAgbW92ICAg
IHIwLCByNwogICAgMHhiNmYwNTFiYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZm
MDUxYmM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA1MWJlOiAgICBtb3Z3ICAg
cjEyLCAjMzExOTMKICAgIDB4YjZmMDUxYzI6ICAgIG1vdnQgICByMTIsICM0Njc5OAogICAgMHhi
NmYwNTFjNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNTFjODogICAgbW92ICAgIGxyLCByMwog
ICAgMHhiNmYwNTFjYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDUxY2U6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1MWQyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4
YjZmMDUxZDQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDUxZDY6ICAgIGJuZSAgICAweGI2
ZjA1MWUwCiAgICAweGI2ZjA1MWQ4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA1MWRhOiAg
ICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDUxZGU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYw
NTFlMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDUxZTQ6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA1MWU4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDUxZWE6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDUxZWM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAg
ICAweGI2ZjA1MWYwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNTFmNDogICAgYmx4
ICAgIHIzCiAgICAweGI2ZjA1MWY2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNTFm
YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDUxZmU6ICAgIGxkciAgICByMSwgW3I2
XQogICAgMHhiNmYwNTIwMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklU
IENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDUyMjEsIDB4YjZmMDUyYTEpOgog
ICAgMHhiNmYwNTIyMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA1MjI0OiAgICBtb3Yg
ICAgcjcsIHNwCiAgICAweGI2ZjA1MjI2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNTIy
YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDUyMmU6ICAgIG1vdncgICByNiwg
IzQyMTI4CiAgICAweGI2ZjA1MjMyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNTIz
NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA1MjM4OiAgICBtb3YgICAgcjAsIHI3CiAg
ICAweGI2ZjA1MjNhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNTIzYzogICAg
bGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDUyM2U6ICAgIG1vdncgICByMTIsICM1NDM2
OQogICAgMHhiNmYwNTI0MjogICAgbW92dCAgIHIxMiwgIzQ2ODAxCiAgICAweGI2ZjA1MjQ2OiAg
ICBibHggICAgcjEyCiAgICAweGI2ZjA1MjQ4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA1
MjRhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNTI0ZTogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDUyNTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNTI1NDog
ICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwNTI1NjogICAgYm5lICAgIDB4YjZmMDUyNjAKICAg
IDB4YjZmMDUyNTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDUyNWE6ICAgIHBvcCAgICB7
cjcsIGxyfQogICAgMHhiNmYwNTI1ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA1MjYwOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNTI2NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDUyNjg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNTI2YTogICAgbW92ICAg
IHIwLCByNwogICAgMHhiNmYwNTI2YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDUy
NzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA1Mjc0OiAgICBibHggICAgcjMKICAg
IDB4YjZmMDUyNzY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA1MjdhOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNTI3ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2
ZjA1MjgwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2
ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNTJhMSwgMHhiNmYwNTMyMSk6CiAgICAweGI2ZjA1
MmEwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDUyYTQ6ICAgIG1vdiAgICByNywgc3AK
ICAgIDB4YjZmMDUyYTY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA1MmFhOiAgICBzdHIg
ICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwNTJhZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
IDB4YjZmMDUyYjI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1MmI2OiAgICBzdHIg
ICAgcjcsIFtyNl0KICAgIDB4YjZmMDUyYjg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDUy
YmE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA1MmJjOiAgICBsZHIgICAgcjIs
IFtyMSwgIzIwXQogICAgMHhiNmYwNTJiZTogICAgbW92dyAgIHIxMiwgIzM4MQogICAgMHhiNmYw
NTJjMjogICAgbW92dCAgIHIxMiwgIzQ2Nzk0CiAgICAweGI2ZjA1MmM2OiAgICBibHggICAgcjEy
CiAgICAweGI2ZjA1MmM4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA1MmNhOiAgICBtb3Z3
ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNTJjZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMDUyZDI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNTJkNDogICAgY21wICAgIHIy
LCAjMAogICAgMHhiNmYwNTJkNjogICAgYm5lICAgIDB4YjZmMDUyZTAKICAgIDB4YjZmMDUyZDg6
ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDUyZGE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAg
MHhiNmYwNTJkZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA1MmUwOiAgICBtb3Z3ICAgcjYsICM0
MjEyOAogICAgMHhiNmYwNTJlNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDUyZTg6
ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNTJlYTogICAgbW92ICAgIHIwLCByNwogICAg
MHhiNmYwNTJlYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDUyZjA6ICAgIG1vdnQg
ICByMywgIzQ2Nzc2CiAgICAweGI2ZjA1MmY0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDUyZjY6
ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA1MmZhOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwNTJmZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA1MzAwOiAgICBi
eCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAg
Q29kZSBhdCBbMHhiNmYwNTMyMSwgMHhiNmYwNTNhMSk6CiAgICAweGI2ZjA1MzIwOiAgICBwdXNo
ICAge3I3LCBscn0KICAgIDB4YjZmMDUzMjQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDUz
MjY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA1MzJhOiAgICBzdHIgICAgcjEyLCBbcjcs
ICM4XQogICAgMHhiNmYwNTMyZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDUzMzI6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1MzM2OiAgICBzdHIgICAgcjcsIFtyNl0K
ICAgIDB4YjZmMDUzMzg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDUzM2E6ICAgIGxkciAg
ICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA1MzNjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQog
ICAgMHhiNmYwNTMzZTogICAgbW92dyAgIHIxMiwgIzI0MTY5CiAgICAweGI2ZjA1MzQyOiAgICBt
b3Z0ICAgcjEyLCAjNDY4MDcKICAgIDB4YjZmMDUzNDY6ICAgIGJseCAgICByMTIKICAgIDB4YjZm
MDUzNDg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDUzNGE6ICAgIG1vdncgICByNiwgIzQ2
MzQ4CiAgICAweGI2ZjA1MzRlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNTM1Mjog
ICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA1MzU0OiAgICBjbXAgICAgcjIsICMwCiAgICAw
eGI2ZjA1MzU2OiAgICBibmUgICAgMHhiNmYwNTM2MAogICAgMHhiNmYwNTM1ODogICAgbW92ICAg
IHNwLCByNwogICAgMHhiNmYwNTM1YTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA1MzVl
OiAgICBieCAgICAgbHIKICAgIDB4YjZmMDUzNjA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAw
eGI2ZjA1MzY0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNTM2ODogICAgc3RyICAg
IHI3LCBbcjZdCiAgICAweGI2ZjA1MzZhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA1MzZj
OiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNTM3MDogICAgbW92dCAgIHIzLCAjNDY3
NzYKICAgIDB4YjZmMDUzNzQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwNTM3NjogICAgbW92dyAg
IHI2LCAjNDYxODgKICAgIDB4YjZmMDUzN2E6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjA1MzdlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDUzODA6ICAgIGJ4ICAgICByMQpH
ZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsw
eGI2ZjA1M2ExLCAweGI2ZjA1NDIxKToKICAgIDB4YjZmMDUzYTA6ICAgIHB1c2ggICB7cjcsIGxy
fQogICAgMHhiNmYwNTNhNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNTNhNjogICAgbW92
ICAgIHIxMiwgIzAKICAgIDB4YjZmMDUzYWE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAw
eGI2ZjA1M2FlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNTNiMjogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMDUzYjY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYw
NTNiODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNTNiYTogICAgbGRyICAgIHIxLCBbcjcs
ICMxNl0KICAgIDB4YjZmMDUzYmM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA1
M2JlOiAgICBtb3Z3ICAgcjEyLCAjNTQ4ODkKICAgIDB4YjZmMDUzYzI6ICAgIG1vdnQgICByMTIs
ICM0Njc5MAogICAgMHhiNmYwNTNjNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNTNjODogICAg
bW92ICAgIGxyLCByMwogICAgMHhiNmYwNTNjYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4
YjZmMDUzY2U6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1M2QyOiAgICBsZHIgICAg
cjYsIFtyNl0KICAgIDB4YjZmMDUzZDQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDUzZDY6
ICAgIGJuZSAgICAweGI2ZjA1M2UwCiAgICAweGI2ZjA1M2Q4OiAgICBtb3YgICAgc3AsIHI3CiAg
ICAweGI2ZjA1M2RhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDUzZGU6ICAgIGJ4ICAg
ICBscgogICAgMHhiNmYwNTNlMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDUzZTQ6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1M2U4OiAgICBzdHIgICAgcjcsIFtyNl0K
ICAgIDB4YjZmMDUzZWE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDUzZWM6ICAgIG1vdncg
ICByMywgIzYzMjQ5CiAgICAweGI2ZjA1M2YwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhi
NmYwNTNmNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA1M2Y2OiAgICBtb3Z3ICAgcjYsICM0NjE4
OAogICAgMHhiNmYwNTNmYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDUzZmU6ICAg
IGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNTQwMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBK
SVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDU0MjEs
IDB4YjZmMDU0YTEpOgogICAgMHhiNmYwNTQyMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2
ZjA1NDI0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA1NDI2OiAgICBtb3YgICAgcjEyLCAj
MAogICAgMHhiNmYwNTQyYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDU0MmU6
ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA1NDMyOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwNTQzNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA1NDM4OiAgICBt
b3YgICAgcjAsIHI3CiAgICAweGI2ZjA1NDNhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAg
MHhiNmYwNTQzYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDU0M2U6ICAgIG1v
dncgICByMTIsICM0NzAxMwogICAgMHhiNmYwNTQ0MjogICAgbW92dCAgIHIxMiwgIzQ2ODA3CiAg
ICAweGI2ZjA1NDQ2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA1NDQ4OiAgICBtb3YgICAgbHIs
IHIzCiAgICAweGI2ZjA1NDRhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNTQ0ZTog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDU0NTI6ICAgIGxkciAgICByNiwgW3I2XQog
ICAgMHhiNmYwNTQ1NDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwNTQ1NjogICAgYm5lICAg
IDB4YjZmMDU0NjAKICAgIDB4YjZmMDU0NTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDU0
NWE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNTQ1ZTogICAgYnggICAgIGxyCiAgICAw
eGI2ZjA1NDYwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNTQ2NDogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMDU0Njg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYw
NTQ2YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNTQ2YzogICAgbW92dyAgIHIzLCAjNjMy
NDkKICAgIDB4YjZmMDU0NzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA1NDc0OiAg
ICBibHggICAgcjMKICAgIDB4YjZmMDU0NzY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2
ZjA1NDdhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNTQ3ZTogICAgbGRyICAgIHIx
LCBbcjZdCiAgICAweGI2ZjA1NDgwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZv
ciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNTRhMSwgMHhiNmYwNTUy
MSk6CiAgICAweGI2ZjA1NGEwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDU0YTQ6ICAg
IG1vdiAgICByNywgc3AKICAgIDB4YjZmMDU0YTY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2
ZjA1NGFhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwNTRhZTogICAgbW92dyAg
IHI2LCAjNDIxMjgKICAgIDB4YjZmMDU0YjI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjA1NGI2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDU0Yjg6ICAgIG1vdiAgICByMCwg
cjcKICAgIDB4YjZmMDU0YmE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA1NGJj
OiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNTRiZTogICAgbW92dyAgIHIxMiwg
IzIwOTk3CiAgICAweGI2ZjA1NGMyOiAgICBtb3Z0ICAgcjEyLCAjNDY3OTkKICAgIDB4YjZmMDU0
YzY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDU0Yzg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4
YjZmMDU0Y2E6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA1NGNlOiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgMHhiNmYwNTRkMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA1
NGQ0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA1NGQ2OiAgICBibmUgICAgMHhiNmYwNTRl
MAogICAgMHhiNmYwNTRkODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNTRkYTogICAgcG9w
ICAgIHtyNywgbHJ9CiAgICAweGI2ZjA1NGRlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDU0ZTA6
ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA1NGU0OiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwNTRlODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA1NGVhOiAgICBt
b3YgICAgcjAsIHI3CiAgICAweGI2ZjA1NGVjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhi
NmYwNTRmMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDU0ZjQ6ICAgIGJseCAgICBy
MwogICAgMHhiNmYwNTRmNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDU0ZmE6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1NGZlOiAgICBsZHIgICAgcjEsIFtyNl0KICAg
IDB4YjZmMDU1MDA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkg
bmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA1NTIxLCAweGI2ZjA1NWExKToKICAgIDB4
YjZmMDU1MjA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNTUyNDogICAgbW92ICAgIHI3
LCBzcAogICAgMHhiNmYwNTUyNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDU1MmE6ICAg
IHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA1NTJlOiAgICBtb3Z3ICAgcjYsICM0MjEy
OAogICAgMHhiNmYwNTUzMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDU1MzY6ICAg
IHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNTUzODogICAgbW92ICAgIHIwLCByNwogICAgMHhi
NmYwNTUzYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDU1M2M6ICAgIGxkciAg
ICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA1NTNlOiAgICBtb3Z3ICAgcjEyLCAjNDYyMDEKICAg
IDB4YjZmMDU1NDI6ICAgIG1vdnQgICByMTIsICM0NjgxMQogICAgMHhiNmYwNTU0NjogICAgYmx4
ICAgIHIxMgogICAgMHhiNmYwNTU0ODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwNTU0YTog
ICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDU1NGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAweGI2ZjA1NTUyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDU1NTQ6ICAgIGNt
cCAgICByMiwgIzAKICAgIDB4YjZmMDU1NTY6ICAgIGJuZSAgICAweGI2ZjA1NTYwCiAgICAweGI2
ZjA1NTU4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA1NTVhOiAgICBwb3AgICAge3I3LCBs
cn0KICAgIDB4YjZmMDU1NWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNTU2MDogICAgbW92dyAg
IHI2LCAjNDIxMjgKICAgIDB4YjZmMDU1NjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjA1NTY4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDU1NmE6ICAgIG1vdiAgICByMCwg
cjcKICAgIDB4YjZmMDU1NmM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA1NTcwOiAg
ICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNTU3NDogICAgYmx4ICAgIHIzCiAgICAweGI2
ZjA1NTc2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNTU3YTogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDU1N2U6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNTU4
MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2Fs
bDoKICAgIENvZGUgYXQgWzB4YjZmMDU1YTEsIDB4YjZmMDU2MjEpOgogICAgMHhiNmYwNTVhMDog
ICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA1NWE0OiAgICBtb3YgICAgcjcsIHNwCiAgICAw
eGI2ZjA1NWE2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNTVhYTogICAgc3RyICAgIHIx
MiwgW3I3LCAjOF0KICAgIDB4YjZmMDU1YWU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2
ZjA1NWIyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNTViNjogICAgc3RyICAgIHI3
LCBbcjZdCiAgICAweGI2ZjA1NWI4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA1NWJhOiAg
ICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNTViYzogICAgbGRyICAgIHIyLCBbcjEs
ICMyMF0KICAgIDB4YjZmMDU1YmU6ICAgIG1vdncgICByMTIsICMxMTY4OQogICAgMHhiNmYwNTVj
MjogICAgbW92dCAgIHIxMiwgIzQ2ODExCiAgICAweGI2ZjA1NWM2OiAgICBibHggICAgcjEyCiAg
ICAweGI2ZjA1NWM4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA1NWNhOiAgICBtb3Z3ICAg
cjYsICM0NjM0OAogICAgMHhiNmYwNTVjZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZm
MDU1ZDI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNTVkNDogICAgY21wICAgIHIyLCAj
MAogICAgMHhiNmYwNTVkNjogICAgYm5lICAgIDB4YjZmMDU1ZTAKICAgIDB4YjZmMDU1ZDg6ICAg
IG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDU1ZGE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhi
NmYwNTVkZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA1NWUwOiAgICBtb3Z3ICAgcjYsICM0MjEy
OAogICAgMHhiNmYwNTVlNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDU1ZTg6ICAg
IHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNTVlYTogICAgbW92ICAgIHIwLCByNwogICAgMHhi
NmYwNTVlYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDU1ZjA6ICAgIG1vdnQgICBy
MywgIzQ2Nzc2CiAgICAweGI2ZjA1NWY0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDU1ZjY6ICAg
IG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA1NWZhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwNTVmZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA1NjAwOiAgICBieCAg
ICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29k
ZSBhdCBbMHhiNmYwNTYyMSwgMHhiNmYwNTZhMSk6CiAgICAweGI2ZjA1NjIwOiAgICBwdXNoICAg
e3I3LCBscn0KICAgIDB4YjZmMDU2MjQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDU2MjY6
ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA1NjJhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4
XQogICAgMHhiNmYwNTYyZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDU2MzI6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1NjM2OiAgICBzdHIgICAgcjcsIFtyNl0KICAg
IDB4YjZmMDU2Mzg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDU2M2E6ICAgIGxkciAgICBy
MSwgW3I3LCAjMTZdCiAgICAweGI2ZjA1NjNjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAg
MHhiNmYwNTYzZTogICAgbW92dyAgIHIxMiwgIzEyNzA1CiAgICAweGI2ZjA1NjQyOiAgICBtb3Z0
ICAgcjEyLCAjNDY4MTEKICAgIDB4YjZmMDU2NDY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDU2
NDg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDU2NGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4
CiAgICAweGI2ZjA1NjRlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNTY1MjogICAg
bGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA1NjU0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2
ZjA1NjU2OiAgICBibmUgICAgMHhiNmYwNTY2MAogICAgMHhiNmYwNTY1ODogICAgbW92ICAgIHNw
LCByNwogICAgMHhiNmYwNTY1YTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA1NjVlOiAg
ICBieCAgICAgbHIKICAgIDB4YjZmMDU2NjA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2
ZjA1NjY0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNTY2ODogICAgc3RyICAgIHI3
LCBbcjZdCiAgICAweGI2ZjA1NjZhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA1NjZjOiAg
ICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNTY3MDogICAgbW92dCAgIHIzLCAjNDY3NzYK
ICAgIDB4YjZmMDU2NzQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwNTY3NjogICAgbW92dyAgIHI2
LCAjNDYxODgKICAgIDB4YjZmMDU2N2E6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1
NjdlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDU2ODA6ICAgIGJ4ICAgICByMQpHZW5l
cmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2
ZjA1NmExLCAweGI2ZjA1NzIxKToKICAgIDB4YjZmMDU2YTA6ICAgIHB1c2ggICB7cjcsIGxyfQog
ICAgMHhiNmYwNTZhNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNTZhNjogICAgbW92ICAg
IHIxMiwgIzAKICAgIDB4YjZmMDU2YWE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2
ZjA1NmFlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNTZiMjogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDU2YjY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNTZi
ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNTZiYTogICAgbGRyICAgIHIxLCBbcjcsICMx
Nl0KICAgIDB4YjZmMDU2YmM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA1NmJl
OiAgICBtb3Z3ICAgcjEyLCAjMTE3NzcKICAgIDB4YjZmMDU2YzI6ICAgIG1vdnQgICByMTIsICM0
NjgxMQogICAgMHhiNmYwNTZjNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNTZjODogICAgbW92
ICAgIGxyLCByMwogICAgMHhiNmYwNTZjYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZm
MDU2Y2U6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1NmQyOiAgICBsZHIgICAgcjYs
IFtyNl0KICAgIDB4YjZmMDU2ZDQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDU2ZDY6ICAg
IGJuZSAgICAweGI2ZjA1NmUwCiAgICAweGI2ZjA1NmQ4OiAgICBtb3YgICAgc3AsIHI3CiAgICAw
eGI2ZjA1NmRhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDU2ZGU6ICAgIGJ4ICAgICBs
cgogICAgMHhiNmYwNTZlMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDU2ZTQ6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1NmU4OiAgICBzdHIgICAgcjcsIFtyNl0KICAg
IDB4YjZmMDU2ZWE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDU2ZWM6ICAgIG1vdncgICBy
MywgIzYzMjQ5CiAgICAweGI2ZjA1NmYwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYw
NTZmNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA1NmY2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAog
ICAgMHhiNmYwNTZmYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDU2ZmU6ICAgIGxk
ciAgICByMSwgW3I2XQogICAgMHhiNmYwNTcwMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQg
Y29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDU3MjEsIDB4
YjZmMDU3YTEpOgogICAgMHhiNmYwNTcyMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA1
NzI0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA1NzI2OiAgICBtb3YgICAgcjEyLCAjMAog
ICAgMHhiNmYwNTcyYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDU3MmU6ICAg
IG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA1NzMyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwNTczNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA1NzM4OiAgICBtb3Yg
ICAgcjAsIHI3CiAgICAweGI2ZjA1NzNhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhi
NmYwNTczYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDU3M2U6ICAgIG1vdncg
ICByMTIsICM0NzgyNQogICAgMHhiNmYwNTc0MjogICAgbW92dCAgIHIxMiwgIzQ2ODA2CiAgICAw
eGI2ZjA1NzQ2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA1NzQ4OiAgICBtb3YgICAgbHIsIHIz
CiAgICAweGI2ZjA1NzRhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNTc0ZTogICAg
bW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDU3NTI6ICAgIGxkciAgICByNiwgW3I2XQogICAg
MHhiNmYwNTc1NDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwNTc1NjogICAgYm5lICAgIDB4
YjZmMDU3NjAKICAgIDB4YjZmMDU3NTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDU3NWE6
ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNTc1ZTogICAgYnggICAgIGxyCiAgICAweGI2
ZjA1NzYwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNTc2NDogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDU3Njg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNTc2
YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNTc2YzogICAgbW92dyAgIHIzLCAjNjMyNDkK
ICAgIDB4YjZmMDU3NzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA1Nzc0OiAgICBi
bHggICAgcjMKICAgIDB4YjZmMDU3NzY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA1
NzdhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNTc3ZTogICAgbGRyICAgIHIxLCBb
cjZdCiAgICAweGI2ZjA1NzgwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBK
SVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNTdhMSwgMHhiNmYwNTgyMSk6
CiAgICAweGI2ZjA1N2EwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDU3YTQ6ICAgIG1v
diAgICByNywgc3AKICAgIDB4YjZmMDU3YTY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA1
N2FhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwNTdhZTogICAgbW92dyAgIHI2
LCAjNDIxMjgKICAgIDB4YjZmMDU3YjI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1
N2I2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDU3Yjg6ICAgIG1vdiAgICByMCwgcjcK
ICAgIDB4YjZmMDU3YmE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA1N2JjOiAg
ICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNTdiZTogICAgbW92dyAgIHIxMiwgIzQ5
MTgxCiAgICAweGI2ZjA1N2MyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MDYKICAgIDB4YjZmMDU3YzY6
ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDU3Yzg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZm
MDU3Y2E6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA1N2NlOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwNTdkMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA1N2Q0
OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA1N2Q2OiAgICBibmUgICAgMHhiNmYwNTdlMAog
ICAgMHhiNmYwNTdkODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNTdkYTogICAgcG9wICAg
IHtyNywgbHJ9CiAgICAweGI2ZjA1N2RlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDU3ZTA6ICAg
IG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA1N2U0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwNTdlODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA1N2VhOiAgICBtb3Yg
ICAgcjAsIHI3CiAgICAweGI2ZjA1N2VjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYw
NTdmMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDU3ZjQ6ICAgIGJseCAgICByMwog
ICAgMHhiNmYwNTdmNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDU3ZmE6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1N2ZlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4
YjZmMDU4MDA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0
aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA1ODIxLCAweGI2ZjA1OGExKToKICAgIDB4YjZm
MDU4MjA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNTgyNDogICAgbW92ICAgIHI3LCBz
cAogICAgMHhiNmYwNTgyNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDU4MmE6ICAgIHN0
ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA1ODJlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgMHhiNmYwNTgzMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDU4MzY6ICAgIHN0
ciAgICByNywgW3I2XQogICAgMHhiNmYwNTgzODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYw
NTgzYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDU4M2M6ICAgIGxkciAgICBy
MiwgW3IxLCAjMjBdCiAgICAweGI2ZjA1ODNlOiAgICBtb3Z3ICAgcjEyLCAjNDc5MTMKICAgIDB4
YjZmMDU4NDI6ICAgIG1vdnQgICByMTIsICM0NjgwNgogICAgMHhiNmYwNTg0NjogICAgYmx4ICAg
IHIxMgogICAgMHhiNmYwNTg0ODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwNTg0YTogICAg
bW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDU4NGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAweGI2ZjA1ODUyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDU4NTQ6ICAgIGNtcCAg
ICByMiwgIzAKICAgIDB4YjZmMDU4NTY6ICAgIGJuZSAgICAweGI2ZjA1ODYwCiAgICAweGI2ZjA1
ODU4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA1ODVhOiAgICBwb3AgICAge3I3LCBscn0K
ICAgIDB4YjZmMDU4NWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNTg2MDogICAgbW92dyAgIHI2
LCAjNDIxMjgKICAgIDB4YjZmMDU4NjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1
ODY4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDU4NmE6ICAgIG1vdiAgICByMCwgcjcK
ICAgIDB4YjZmMDU4NmM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA1ODcwOiAgICBt
b3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNTg3NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA1
ODc2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNTg3YTogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDU4N2U6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNTg4MDog
ICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoK
ICAgIENvZGUgYXQgWzB4YjZmMDU4YTEsIDB4YjZmMDU5MjEpOgogICAgMHhiNmYwNThhMDogICAg
cHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA1OGE0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2
ZjA1OGE2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNThhYTogICAgc3RyICAgIHIxMiwg
W3I3LCAjOF0KICAgIDB4YjZmMDU4YWU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA1
OGIyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNThiNjogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAweGI2ZjA1OGI4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA1OGJhOiAgICBs
ZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNThiYzogICAgbGRyICAgIHIyLCBbcjEsICMy
MF0KICAgIDB4YjZmMDU4YmU6ICAgIG1vdncgICByMTIsICMzMjgwNQogICAgMHhiNmYwNThjMjog
ICAgbW92dCAgIHIxMiwgIzQ2Nzk0CiAgICAweGI2ZjA1OGM2OiAgICBibHggICAgcjEyCiAgICAw
eGI2ZjA1OGM4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA1OGNhOiAgICBtb3Z3ICAgcjYs
ICM0NjM0OAogICAgMHhiNmYwNThjZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDU4
ZDI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNThkNDogICAgY21wICAgIHIyLCAjMAog
ICAgMHhiNmYwNThkNjogICAgYm5lICAgIDB4YjZmMDU4ZTAKICAgIDB4YjZmMDU4ZDg6ICAgIG1v
diAgICBzcCwgcjcKICAgIDB4YjZmMDU4ZGE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYw
NThkZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA1OGUwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgMHhiNmYwNThlNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDU4ZTg6ICAgIHN0
ciAgICByNywgW3I2XQogICAgMHhiNmYwNThlYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYw
NThlYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDU4ZjA6ICAgIG1vdnQgICByMywg
IzQ2Nzc2CiAgICAweGI2ZjA1OGY0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDU4ZjY6ICAgIG1v
dncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA1OGZhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwNThmZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA1OTAwOiAgICBieCAgICAg
cjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBh
dCBbMHhiNmYwNTkyMSwgMHhiNmYwNTlhMSk6CiAgICAweGI2ZjA1OTIwOiAgICBwdXNoICAge3I3
LCBscn0KICAgIDB4YjZmMDU5MjQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDU5MjY6ICAg
IG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA1OTJhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQog
ICAgMHhiNmYwNTkyZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDU5MzI6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1OTM2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4
YjZmMDU5Mzg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDU5M2E6ICAgIGxkciAgICByMSwg
W3I3LCAjMTZdCiAgICAweGI2ZjA1OTNjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhi
NmYwNTkzZTogICAgbW92dyAgIHIxMiwgIzMyODY5CiAgICAweGI2ZjA1OTQyOiAgICBtb3Z0ICAg
cjEyLCAjNDY3OTQKICAgIDB4YjZmMDU5NDY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDU5NDg6
ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDU5NGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAg
ICAweGI2ZjA1OTRlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNTk1MjogICAgbGRy
ICAgIHI2LCBbcjZdCiAgICAweGI2ZjA1OTU0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA1
OTU2OiAgICBibmUgICAgMHhiNmYwNTk2MAogICAgMHhiNmYwNTk1ODogICAgbW92ICAgIHNwLCBy
NwogICAgMHhiNmYwNTk1YTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA1OTVlOiAgICBi
eCAgICAgbHIKICAgIDB4YjZmMDU5NjA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA1
OTY0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNTk2ODogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAweGI2ZjA1OTZhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA1OTZjOiAgICBt
b3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNTk3MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAg
IDB4YjZmMDU5NzQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwNTk3NjogICAgbW92dyAgIHI2LCAj
NDYxODgKICAgIDB4YjZmMDU5N2E6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1OTdl
OiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDU5ODA6ICAgIGJ4ICAgICByMQpHZW5lcmF0
ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA1
OWExLCAweGI2ZjA1YTIxKToKICAgIDB4YjZmMDU5YTA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAg
MHhiNmYwNTlhNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNTlhNjogICAgbW92ICAgIHIx
MiwgIzAKICAgIDB4YjZmMDU5YWE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA1
OWFlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNTliMjogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDU5YjY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNTliODog
ICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNTliYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0K
ICAgIDB4YjZmMDU5YmM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA1OWJlOiAg
ICBtb3Z3ICAgcjEyLCAjNTk2MzMKICAgIDB4YjZmMDU5YzI6ICAgIG1vdnQgICByMTIsICM0Njgw
OQogICAgMHhiNmYwNTljNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNTljODogICAgbW92ICAg
IGxyLCByMwogICAgMHhiNmYwNTljYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDU5
Y2U6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1OWQyOiAgICBsZHIgICAgcjYsIFty
Nl0KICAgIDB4YjZmMDU5ZDQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDU5ZDY6ICAgIGJu
ZSAgICAweGI2ZjA1OWUwCiAgICAweGI2ZjA1OWQ4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2
ZjA1OWRhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDU5ZGU6ICAgIGJ4ICAgICBscgog
ICAgMHhiNmYwNTllMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDU5ZTQ6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1OWU4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4
YjZmMDU5ZWE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDU5ZWM6ICAgIG1vdncgICByMywg
IzYzMjQ5CiAgICAweGI2ZjA1OWYwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNTlm
NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA1OWY2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAg
MHhiNmYwNTlmYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDU5ZmU6ICAgIGxkciAg
ICByMSwgW3I2XQogICAgMHhiNmYwNWEwMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29k
ZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDVhMjEsIDB4YjZm
MDVhYTEpOgogICAgMHhiNmYwNWEyMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA1YTI0
OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA1YTI2OiAgICBtb3YgICAgcjEyLCAjMAogICAg
MHhiNmYwNWEyYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDVhMmU6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA1YTMyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwNWEzNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA1YTM4OiAgICBtb3YgICAg
cjAsIHI3CiAgICAweGI2ZjA1YTNhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYw
NWEzYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDVhM2U6ICAgIG1vdncgICBy
MTIsICMxNjUyMQogICAgMHhiNmYwNWE0MjogICAgbW92dCAgIHIxMiwgIzQ2ODEwCiAgICAweGI2
ZjA1YTQ2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA1YTQ4OiAgICBtb3YgICAgbHIsIHIzCiAg
ICAweGI2ZjA1YTRhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNWE0ZTogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDVhNTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhi
NmYwNWE1NDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwNWE1NjogICAgYm5lICAgIDB4YjZm
MDVhNjAKICAgIDB4YjZmMDVhNTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDVhNWE6ICAg
IHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNWE1ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA1
YTYwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNWE2NDogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDVhNjg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNWE2YTog
ICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNWE2YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAg
IDB4YjZmMDVhNzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA1YTc0OiAgICBibHgg
ICAgcjMKICAgIDB4YjZmMDVhNzY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA1YTdh
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNWE3ZTogICAgbGRyICAgIHIxLCBbcjZd
CiAgICAweGI2ZjA1YTgwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQg
Q1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNWFhMSwgMHhiNmYwNWIyMSk6CiAg
ICAweGI2ZjA1YWEwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDVhYTQ6ICAgIG1vdiAg
ICByNywgc3AKICAgIDB4YjZmMDVhYTY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA1YWFh
OiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwNWFhZTogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgIDB4YjZmMDVhYjI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1YWI2
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDVhYjg6ICAgIG1vdiAgICByMCwgcjcKICAg
IDB4YjZmMDVhYmE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA1YWJjOiAgICBs
ZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNWFiZTogICAgbW92dyAgIHIxMiwgIzE2NzU3
CiAgICAweGI2ZjA1YWMyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MTAKICAgIDB4YjZmMDVhYzY6ICAg
IGJseCAgICByMTIKICAgIDB4YjZmMDVhYzg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDVh
Y2E6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA1YWNlOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgMHhiNmYwNWFkMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA1YWQ0OiAg
ICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA1YWQ2OiAgICBibmUgICAgMHhiNmYwNWFlMAogICAg
MHhiNmYwNWFkODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNWFkYTogICAgcG9wICAgIHty
NywgbHJ9CiAgICAweGI2ZjA1YWRlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDVhZTA6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA1YWU0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwNWFlODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA1YWVhOiAgICBtb3YgICAg
cjAsIHI3CiAgICAweGI2ZjA1YWVjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNWFm
MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDVhZjQ6ICAgIGJseCAgICByMwogICAg
MHhiNmYwNWFmNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDVhZmE6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1YWZlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZm
MDViMDA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZl
IGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA1YjIxLCAweGI2ZjA1YmExKToKICAgIDB4YjZmMDVi
MjA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNWIyNDogICAgbW92ICAgIHI3LCBzcAog
ICAgMHhiNmYwNWIyNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDViMmE6ICAgIHN0ciAg
ICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA1YjJlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAg
MHhiNmYwNWIzMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDViMzY6ICAgIHN0ciAg
ICByNywgW3I2XQogICAgMHhiNmYwNWIzODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNWIz
YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDViM2M6ICAgIGxkciAgICByMiwg
W3IxLCAjMjBdCiAgICAweGI2ZjA1YjNlOiAgICBtb3Z3ICAgcjEyLCAjMTcwMjkKICAgIDB4YjZm
MDViNDI6ICAgIG1vdnQgICByMTIsICM0NjgxMAogICAgMHhiNmYwNWI0NjogICAgYmx4ICAgIHIx
MgogICAgMHhiNmYwNWI0ODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwNWI0YTogICAgbW92
dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDViNGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAw
eGI2ZjA1YjUyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDViNTQ6ICAgIGNtcCAgICBy
MiwgIzAKICAgIDB4YjZmMDViNTY6ICAgIGJuZSAgICAweGI2ZjA1YjYwCiAgICAweGI2ZjA1YjU4
OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA1YjVhOiAgICBwb3AgICAge3I3LCBscn0KICAg
IDB4YjZmMDViNWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNWI2MDogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgIDB4YjZmMDViNjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1YjY4
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDViNmE6ICAgIG1vdiAgICByMCwgcjcKICAg
IDB4YjZmMDViNmM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA1YjcwOiAgICBtb3Z0
ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNWI3NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA1Yjc2
OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNWI3YTogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDViN2U6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNWI4MDogICAg
YnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAg
IENvZGUgYXQgWzB4YjZmMDViYTEsIDB4YjZmMDVjMjEpOgogICAgMHhiNmYwNWJhMDogICAgcHVz
aCAgIHtyNywgbHJ9CiAgICAweGI2ZjA1YmE0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA1
YmE2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNWJhYTogICAgc3RyICAgIHIxMiwgW3I3
LCAjOF0KICAgIDB4YjZmMDViYWU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA1YmIy
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNWJiNjogICAgc3RyICAgIHI3LCBbcjZd
CiAgICAweGI2ZjA1YmI4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA1YmJhOiAgICBsZHIg
ICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNWJiYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0K
ICAgIDB4YjZmMDViYmU6ICAgIG1vdncgICByMTIsICM0ODA0MQogICAgMHhiNmYwNWJjMjogICAg
bW92dCAgIHIxMiwgIzQ2ODExCiAgICAweGI2ZjA1YmM2OiAgICBibHggICAgcjEyCiAgICAweGI2
ZjA1YmM4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA1YmNhOiAgICBtb3Z3ICAgcjYsICM0
NjM0OAogICAgMHhiNmYwNWJjZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDViZDI6
ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNWJkNDogICAgY21wICAgIHIyLCAjMAogICAg
MHhiNmYwNWJkNjogICAgYm5lICAgIDB4YjZmMDViZTAKICAgIDB4YjZmMDViZDg6ICAgIG1vdiAg
ICBzcCwgcjcKICAgIDB4YjZmMDViZGE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNWJk
ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA1YmUwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAg
MHhiNmYwNWJlNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDViZTg6ICAgIHN0ciAg
ICByNywgW3I2XQogICAgMHhiNmYwNWJlYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNWJl
YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDViZjA6ICAgIG1vdnQgICByMywgIzQ2
Nzc2CiAgICAweGI2ZjA1YmY0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDViZjY6ICAgIG1vdncg
ICByNiwgIzQ2MTg4CiAgICAweGI2ZjA1YmZhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwNWJmZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA1YzAwOiAgICBieCAgICAgcjEK
R2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBb
MHhiNmYwNWMyMSwgMHhiNmYwNWNhMSk6CiAgICAweGI2ZjA1YzIwOiAgICBwdXNoICAge3I3LCBs
cn0KICAgIDB4YjZmMDVjMjQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDVjMjY6ICAgIG1v
diAgICByMTIsICMwCiAgICAweGI2ZjA1YzJhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAg
MHhiNmYwNWMyZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDVjMzI6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1YzM2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZm
MDVjMzg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDVjM2E6ICAgIGxkciAgICByMSwgW3I3
LCAjMTZdCiAgICAweGI2ZjA1YzNjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYw
NWMzZTogICAgbW92dyAgIHIxMiwgIzQ2Mzk3CiAgICAweGI2ZjA1YzQyOiAgICBtb3Z0ICAgcjEy
LCAjNDY4MTEKICAgIDB4YjZmMDVjNDY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDVjNDg6ICAg
IG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDVjNGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAw
eGI2ZjA1YzRlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNWM1MjogICAgbGRyICAg
IHI2LCBbcjZdCiAgICAweGI2ZjA1YzU0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA1YzU2
OiAgICBibmUgICAgMHhiNmYwNWM2MAogICAgMHhiNmYwNWM1ODogICAgbW92ICAgIHNwLCByNwog
ICAgMHhiNmYwNWM1YTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA1YzVlOiAgICBieCAg
ICAgbHIKICAgIDB4YjZmMDVjNjA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA1YzY0
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNWM2ODogICAgc3RyICAgIHI3LCBbcjZd
CiAgICAweGI2ZjA1YzZhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA1YzZjOiAgICBtb3Z3
ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNWM3MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4
YjZmMDVjNzQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwNWM3NjogICAgbW92dyAgIHI2LCAjNDYx
ODgKICAgIDB4YjZmMDVjN2E6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1YzdlOiAg
ICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDVjODA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQg
SklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA1Y2Ex
LCAweGI2ZjA1ZDIxKToKICAgIDB4YjZmMDVjYTA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhi
NmYwNWNhNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNWNhNjogICAgbW92ICAgIHIxMiwg
IzAKICAgIDB4YjZmMDVjYWE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA1Y2Fl
OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNWNiMjogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDVjYjY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNWNiODogICAg
bW92ICAgIHIwLCByNwogICAgMHhiNmYwNWNiYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAg
IDB4YjZmMDVjYmM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA1Y2JlOiAgICBt
b3Z3ICAgcjEyLCAjNDc2ODUKICAgIDB4YjZmMDVjYzI6ICAgIG1vdnQgICByMTIsICM0NjgxMQog
ICAgMHhiNmYwNWNjNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNWNjODogICAgbW92ICAgIGxy
LCByMwogICAgMHhiNmYwNWNjYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDVjY2U6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1Y2QyOiAgICBsZHIgICAgcjYsIFtyNl0K
ICAgIDB4YjZmMDVjZDQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDVjZDY6ICAgIGJuZSAg
ICAweGI2ZjA1Y2UwCiAgICAweGI2ZjA1Y2Q4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA1
Y2RhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDVjZGU6ICAgIGJ4ICAgICBscgogICAg
MHhiNmYwNWNlMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDVjZTQ6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1Y2U4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZm
MDVjZWE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDVjZWM6ICAgIG1vdncgICByMywgIzYz
MjQ5CiAgICAweGI2ZjA1Y2YwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNWNmNDog
ICAgYmx4ICAgIHIzCiAgICAweGI2ZjA1Y2Y2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhi
NmYwNWNmYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDVjZmU6ICAgIGxkciAgICBy
MSwgW3I2XQogICAgMHhiNmYwNWQwMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBm
b3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDVkMjEsIDB4YjZmMDVk
YTEpOgogICAgMHhiNmYwNWQyMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA1ZDI0OiAg
ICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA1ZDI2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhi
NmYwNWQyYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDVkMmU6ICAgIG1vdncg
ICByNiwgIzQyMTI4CiAgICAweGI2ZjA1ZDMyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwNWQzNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA1ZDM4OiAgICBtb3YgICAgcjAs
IHI3CiAgICAweGI2ZjA1ZDNhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNWQz
YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDVkM2U6ICAgIG1vdncgICByMTIs
ICM0Mjg2OQogICAgMHhiNmYwNWQ0MjogICAgbW92dCAgIHIxMiwgIzQ2NzkzCiAgICAweGI2ZjA1
ZDQ2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA1ZDQ4OiAgICBtb3YgICAgbHIsIHIzCiAgICAw
eGI2ZjA1ZDRhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNWQ0ZTogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMDVkNTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYw
NWQ1NDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwNWQ1NjogICAgYm5lICAgIDB4YjZmMDVk
NjAKICAgIDB4YjZmMDVkNTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDVkNWE6ICAgIHBv
cCAgICB7cjcsIGxyfQogICAgMHhiNmYwNWQ1ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA1ZDYw
OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNWQ2NDogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDVkNjg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNWQ2YTogICAg
bW92ICAgIHIwLCByNwogICAgMHhiNmYwNWQ2YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4
YjZmMDVkNzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA1ZDc0OiAgICBibHggICAg
cjMKICAgIDB4YjZmMDVkNzY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA1ZDdhOiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNWQ3ZTogICAgbGRyICAgIHIxLCBbcjZdCiAg
ICAweGI2ZjA1ZDgwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJ
IG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNWRhMSwgMHhiNmYwNWUyMSk6CiAgICAw
eGI2ZjA1ZGEwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDVkYTQ6ICAgIG1vdiAgICBy
Nywgc3AKICAgIDB4YjZmMDVkYTY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA1ZGFhOiAg
ICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwNWRhZTogICAgbW92dyAgIHI2LCAjNDIx
MjgKICAgIDB4YjZmMDVkYjI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1ZGI2OiAg
ICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDVkYjg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4
YjZmMDVkYmE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA1ZGJjOiAgICBsZHIg
ICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNWRiZTogICAgbW92dyAgIHIxMiwgIzQ1ODY1CiAg
ICAweGI2ZjA1ZGMyOiAgICBtb3Z0ICAgcjEyLCAjNDY3OTMKICAgIDB4YjZmMDVkYzY6ICAgIGJs
eCAgICByMTIKICAgIDB4YjZmMDVkYzg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDVkY2E6
ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA1ZGNlOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwNWRkMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA1ZGQ0OiAgICBj
bXAgICAgcjIsICMwCiAgICAweGI2ZjA1ZGQ2OiAgICBibmUgICAgMHhiNmYwNWRlMAogICAgMHhi
NmYwNWRkODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNWRkYTogICAgcG9wICAgIHtyNywg
bHJ9CiAgICAweGI2ZjA1ZGRlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDVkZTA6ICAgIG1vdncg
ICByNiwgIzQyMTI4CiAgICAweGI2ZjA1ZGU0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwNWRlODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA1ZGVhOiAgICBtb3YgICAgcjAs
IHI3CiAgICAweGI2ZjA1ZGVjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNWRmMDog
ICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDVkZjQ6ICAgIGJseCAgICByMwogICAgMHhi
NmYwNWRmNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDVkZmE6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjA1ZGZlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDVl
MDA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNh
bGw6CiAgICBDb2RlIGF0IFsweGI2ZjA1ZTIxLCAweGI2ZjA1ZWExKToKICAgIDB4YjZmMDVlMjA6
ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNWUyNDogICAgbW92ICAgIHI3LCBzcAogICAg
MHhiNmYwNWUyNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDVlMmE6ICAgIHN0ciAgICBy
MTIsIFtyNywgIzhdCiAgICAweGI2ZjA1ZTJlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhi
NmYwNWUzMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDVlMzY6ICAgIHN0ciAgICBy
NywgW3I2XQogICAgMHhiNmYwNWUzODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNWUzYTog
ICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDVlM2M6ICAgIGxkciAgICByMiwgW3Ix
LCAjMjBdCiAgICAweGI2ZjA1ZTNlOiAgICBtb3Z3ICAgcjEyLCAjNDU2NjEKICAgIDB4YjZmMDVl
NDI6ICAgIG1vdnQgICByMTIsICM0Njc5MwogICAgMHhiNmYwNWU0NjogICAgYmx4ICAgIHIxMgog
ICAgMHhiNmYwNWU0ODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwNWU0YTogICAgbW92dyAg
IHI2LCAjNDYzNDgKICAgIDB4YjZmMDVlNGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjA1ZTUyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDVlNTQ6ICAgIGNtcCAgICByMiwg
IzAKICAgIDB4YjZmMDVlNTY6ICAgIGJuZSAgICAweGI2ZjA1ZTYwCiAgICAweGI2ZjA1ZTU4OiAg
ICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA1ZTVhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4
YjZmMDVlNWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNWU2MDogICAgbW92dyAgIHI2LCAjNDIx
MjgKICAgIDB4YjZmMDVlNjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1ZTY4OiAg
ICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDVlNmE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4
YjZmMDVlNmM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA1ZTcwOiAgICBtb3Z0ICAg
cjMsICM0Njc3NgogICAgMHhiNmYwNWU3NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA1ZTc2OiAg
ICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNWU3YTogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgIDB4YjZmMDVlN2U6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNWU4MDogICAgYngg
ICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENv
ZGUgYXQgWzB4YjZmMDVlYTEsIDB4YjZmMDVmMjEpOgogICAgMHhiNmYwNWVhMDogICAgcHVzaCAg
IHtyNywgbHJ9CiAgICAweGI2ZjA1ZWE0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA1ZWE2
OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNWVhYTogICAgc3RyICAgIHIxMiwgW3I3LCAj
OF0KICAgIDB4YjZmMDVlYWU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA1ZWIyOiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNWViNjogICAgc3RyICAgIHI3LCBbcjZdCiAg
ICAweGI2ZjA1ZWI4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA1ZWJhOiAgICBsZHIgICAg
cjEsIFtyNywgIzE2XQogICAgMHhiNmYwNWViYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAg
IDB4YjZmMDVlYmU6ICAgIG1vdncgICByMTIsICM0NTQ1NwogICAgMHhiNmYwNWVjMjogICAgbW92
dCAgIHIxMiwgIzQ2NzkzCiAgICAweGI2ZjA1ZWM2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA1
ZWM4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA1ZWNhOiAgICBtb3Z3ICAgcjYsICM0NjM0
OAogICAgMHhiNmYwNWVjZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDVlZDI6ICAg
IGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNWVkNDogICAgY21wICAgIHIyLCAjMAogICAgMHhi
NmYwNWVkNjogICAgYm5lICAgIDB4YjZmMDVlZTAKICAgIDB4YjZmMDVlZDg6ICAgIG1vdiAgICBz
cCwgcjcKICAgIDB4YjZmMDVlZGE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNWVkZTog
ICAgYnggICAgIGxyCiAgICAweGI2ZjA1ZWUwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhi
NmYwNWVlNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDVlZTg6ICAgIHN0ciAgICBy
NywgW3I2XQogICAgMHhiNmYwNWVlYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNWVlYzog
ICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDVlZjA6ICAgIG1vdnQgICByMywgIzQ2Nzc2
CiAgICAweGI2ZjA1ZWY0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDVlZjY6ICAgIG1vdncgICBy
NiwgIzQ2MTg4CiAgICAweGI2ZjA1ZWZhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYw
NWVmZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA1ZjAwOiAgICBieCAgICAgcjEKR2Vu
ZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhi
NmYwNWYyMSwgMHhiNmYwNWZhMSk6CiAgICAweGI2ZjA1ZjIwOiAgICBwdXNoICAge3I3LCBscn0K
ICAgIDB4YjZmMDVmMjQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDVmMjY6ICAgIG1vdiAg
ICByMTIsICMwCiAgICAweGI2ZjA1ZjJhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhi
NmYwNWYyZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDVmMzI6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjA1ZjM2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDVm
Mzg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDVmM2E6ICAgIGxkciAgICByMSwgW3I3LCAj
MTZdCiAgICAweGI2ZjA1ZjNjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNWYz
ZTogICAgbW92dyAgIHIxMiwgIzQ1MjUzCiAgICAweGI2ZjA1ZjQyOiAgICBtb3Z0ICAgcjEyLCAj
NDY3OTMKICAgIDB4YjZmMDVmNDY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDVmNDg6ICAgIG1v
diAgICBsciwgcjMKICAgIDB4YjZmMDVmNGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2
ZjA1ZjRlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNWY1MjogICAgbGRyICAgIHI2
LCBbcjZdCiAgICAweGI2ZjA1ZjU0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA1ZjU2OiAg
ICBibmUgICAgMHhiNmYwNWY2MAogICAgMHhiNmYwNWY1ODogICAgbW92ICAgIHNwLCByNwogICAg
MHhiNmYwNWY1YTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA1ZjVlOiAgICBieCAgICAg
bHIKICAgIDB4YjZmMDVmNjA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA1ZjY0OiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNWY2ODogICAgc3RyICAgIHI3LCBbcjZdCiAg
ICAweGI2ZjA1ZjZhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA1ZjZjOiAgICBtb3Z3ICAg
cjMsICM2MzI0OQogICAgMHhiNmYwNWY3MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZm
MDVmNzQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwNWY3NjogICAgbW92dyAgIHI2LCAjNDYxODgK
ICAgIDB4YjZmMDVmN2E6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1ZjdlOiAgICBs
ZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDVmODA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklU
IGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA1ZmExLCAw
eGI2ZjA2MDIxKToKICAgIDB4YjZmMDVmYTA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYw
NWZhNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNWZhNjogICAgbW92ICAgIHIxMiwgIzAK
ICAgIDB4YjZmMDVmYWE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA1ZmFlOiAg
ICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNWZiMjogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgIDB4YjZmMDVmYjY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNWZiODogICAgbW92
ICAgIHIwLCByNwogICAgMHhiNmYwNWZiYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4
YjZmMDVmYmM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA1ZmJlOiAgICBtb3Z3
ICAgcjEyLCAjNDIyNTcKICAgIDB4YjZmMDVmYzI6ICAgIG1vdnQgICByMTIsICM0Njc5MwogICAg
MHhiNmYwNWZjNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNWZjODogICAgbW92ICAgIGxyLCBy
MwogICAgMHhiNmYwNWZjYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDVmY2U6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA1ZmQyOiAgICBsZHIgICAgcjYsIFtyNl0KICAg
IDB4YjZmMDVmZDQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDVmZDY6ICAgIGJuZSAgICAw
eGI2ZjA1ZmUwCiAgICAweGI2ZjA1ZmQ4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA1ZmRh
OiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDVmZGU6ICAgIGJ4ICAgICBscgogICAgMHhi
NmYwNWZlMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDVmZTQ6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjA1ZmU4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDVm
ZWE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDVmZWM6ICAgIG1vdncgICByMywgIzYzMjQ5
CiAgICAweGI2ZjA1ZmYwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNWZmNDogICAg
Ymx4ICAgIHIzCiAgICAweGI2ZjA1ZmY2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYw
NWZmYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDVmZmU6ICAgIGxkciAgICByMSwg
W3I2XQogICAgMHhiNmYwNjAwMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3Ig
SklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDYwMjEsIDB4YjZmMDYwYTEp
OgogICAgMHhiNmYwNjAyMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA2MDI0OiAgICBt
b3YgICAgcjcsIHNwCiAgICAweGI2ZjA2MDI2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYw
NjAyYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDYwMmU6ICAgIG1vdncgICBy
NiwgIzQyMTI4CiAgICAweGI2ZjA2MDMyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYw
NjAzNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA2MDM4OiAgICBtb3YgICAgcjAsIHI3
CiAgICAweGI2ZjA2MDNhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNjAzYzog
ICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDYwM2U6ICAgIG1vdncgICByMTIsICM0
MjY2NQogICAgMHhiNmYwNjA0MjogICAgbW92dCAgIHIxMiwgIzQ2NzkzCiAgICAweGI2ZjA2MDQ2
OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA2MDQ4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2
ZjA2MDRhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNjA0ZTogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDYwNTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNjA1
NDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwNjA1NjogICAgYm5lICAgIDB4YjZmMDYwNjAK
ICAgIDB4YjZmMDYwNTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDYwNWE6ICAgIHBvcCAg
ICB7cjcsIGxyfQogICAgMHhiNmYwNjA1ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA2MDYwOiAg
ICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNjA2NDogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgIDB4YjZmMDYwNjg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNjA2YTogICAgbW92
ICAgIHIwLCByNwogICAgMHhiNmYwNjA2YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZm
MDYwNzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA2MDc0OiAgICBibHggICAgcjMK
ICAgIDB4YjZmMDYwNzY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA2MDdhOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNjA3ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAw
eGI2ZjA2MDgwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5h
dGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNjBhMSwgMHhiNmYwNjEyMSk6CiAgICAweGI2
ZjA2MGEwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDYwYTQ6ICAgIG1vdiAgICByNywg
c3AKICAgIDB4YjZmMDYwYTY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA2MGFhOiAgICBz
dHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwNjBhZTogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgIDB4YjZmMDYwYjI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2MGI2OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDYwYjg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZm
MDYwYmE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA2MGJjOiAgICBsZHIgICAg
cjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNjBiZTogICAgbW92dyAgIHIxMiwgIzQyNDYxCiAgICAw
eGI2ZjA2MGMyOiAgICBtb3Z0ICAgcjEyLCAjNDY3OTMKICAgIDB4YjZmMDYwYzY6ICAgIGJseCAg
ICByMTIKICAgIDB4YjZmMDYwYzg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDYwY2E6ICAg
IG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA2MGNlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwNjBkMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA2MGQ0OiAgICBjbXAg
ICAgcjIsICMwCiAgICAweGI2ZjA2MGQ2OiAgICBibmUgICAgMHhiNmYwNjBlMAogICAgMHhiNmYw
NjBkODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNjBkYTogICAgcG9wICAgIHtyNywgbHJ9
CiAgICAweGI2ZjA2MGRlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDYwZTA6ICAgIG1vdncgICBy
NiwgIzQyMTI4CiAgICAweGI2ZjA2MGU0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYw
NjBlODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA2MGVhOiAgICBtb3YgICAgcjAsIHI3
CiAgICAweGI2ZjA2MGVjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNjBmMDogICAg
bW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDYwZjQ6ICAgIGJseCAgICByMwogICAgMHhiNmYw
NjBmNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDYwZmE6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA2MGZlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDYxMDA6
ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6
CiAgICBDb2RlIGF0IFsweGI2ZjA2MTIxLCAweGI2ZjA2MWExKToKICAgIDB4YjZmMDYxMjA6ICAg
IHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNjEyNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhi
NmYwNjEyNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDYxMmE6ICAgIHN0ciAgICByMTIs
IFtyNywgIzhdCiAgICAweGI2ZjA2MTJlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYw
NjEzMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDYxMzY6ICAgIHN0ciAgICByNywg
W3I2XQogICAgMHhiNmYwNjEzODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNjEzYTogICAg
bGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDYxM2M6ICAgIGxkciAgICByMiwgW3IxLCAj
MjBdCiAgICAweGI2ZjA2MTNlOiAgICBtb3Z3ICAgcjEyLCAjNDE4NDkKICAgIDB4YjZmMDYxNDI6
ICAgIG1vdnQgICByMTIsICM0Njc5MwogICAgMHhiNmYwNjE0NjogICAgYmx4ICAgIHIxMgogICAg
MHhiNmYwNjE0ODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwNjE0YTogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgIDB4YjZmMDYxNGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2
MTUyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDYxNTQ6ICAgIGNtcCAgICByMiwgIzAK
ICAgIDB4YjZmMDYxNTY6ICAgIGJuZSAgICAweGI2ZjA2MTYwCiAgICAweGI2ZjA2MTU4OiAgICBt
b3YgICAgc3AsIHI3CiAgICAweGI2ZjA2MTVhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZm
MDYxNWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNjE2MDogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgIDB4YjZmMDYxNjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2MTY4OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDYxNmE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZm
MDYxNmM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA2MTcwOiAgICBtb3Z0ICAgcjMs
ICM0Njc3NgogICAgMHhiNmYwNjE3NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA2MTc2OiAgICBt
b3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNjE3YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDYxN2U6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNjE4MDogICAgYnggICAg
IHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUg
YXQgWzB4YjZmMDYxYTEsIDB4YjZmMDYyMjEpOgogICAgMHhiNmYwNjFhMDogICAgcHVzaCAgIHty
NywgbHJ9CiAgICAweGI2ZjA2MWE0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA2MWE2OiAg
ICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNjFhYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0K
ICAgIDB4YjZmMDYxYWU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA2MWIyOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNjFiNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjA2MWI4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA2MWJhOiAgICBsZHIgICAgcjEs
IFtyNywgIzE2XQogICAgMHhiNmYwNjFiYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4
YjZmMDYxYmU6ICAgIG1vdncgICByMTIsICM0MjA1MwogICAgMHhiNmYwNjFjMjogICAgbW92dCAg
IHIxMiwgIzQ2NzkzCiAgICAweGI2ZjA2MWM2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA2MWM4
OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA2MWNhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAog
ICAgMHhiNmYwNjFjZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDYxZDI6ICAgIGxk
ciAgICByNiwgW3I2XQogICAgMHhiNmYwNjFkNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYw
NjFkNjogICAgYm5lICAgIDB4YjZmMDYxZTAKICAgIDB4YjZmMDYxZDg6ICAgIG1vdiAgICBzcCwg
cjcKICAgIDB4YjZmMDYxZGE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNjFkZTogICAg
YnggICAgIGxyCiAgICAweGI2ZjA2MWUwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYw
NjFlNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDYxZTg6ICAgIHN0ciAgICByNywg
W3I2XQogICAgMHhiNmYwNjFlYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNjFlYzogICAg
bW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDYxZjA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAg
ICAweGI2ZjA2MWY0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDYxZjY6ICAgIG1vdncgICByNiwg
IzQ2MTg4CiAgICAweGI2ZjA2MWZhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNjFm
ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA2MjAwOiAgICBieCAgICAgcjEKR2VuZXJh
dGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYw
NjIyMSwgMHhiNmYwNjJhMSk6CiAgICAweGI2ZjA2MjIwOiAgICBwdXNoICAge3I3LCBscn0KICAg
IDB4YjZmMDYyMjQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDYyMjY6ICAgIG1vdiAgICBy
MTIsICMwCiAgICAweGI2ZjA2MjJhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYw
NjIyZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDYyMzI6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA2MjM2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDYyMzg6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDYyM2E6ICAgIGxkciAgICByMSwgW3I3LCAjMTZd
CiAgICAweGI2ZjA2MjNjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNjIzZTog
ICAgbW92dyAgIHIxMiwgIzQzNDgxCiAgICAweGI2ZjA2MjQyOiAgICBtb3Z0ICAgcjEyLCAjNDY3
OTMKICAgIDB4YjZmMDYyNDY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDYyNDg6ICAgIG1vdiAg
ICBsciwgcjMKICAgIDB4YjZmMDYyNGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA2
MjRlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNjI1MjogICAgbGRyICAgIHI2LCBb
cjZdCiAgICAweGI2ZjA2MjU0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA2MjU2OiAgICBi
bmUgICAgMHhiNmYwNjI2MAogICAgMHhiNmYwNjI1ODogICAgbW92ICAgIHNwLCByNwogICAgMHhi
NmYwNjI1YTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA2MjVlOiAgICBieCAgICAgbHIK
ICAgIDB4YjZmMDYyNjA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA2MjY0OiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNjI2ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjA2MjZhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA2MjZjOiAgICBtb3Z3ICAgcjMs
ICM2MzI0OQogICAgMHhiNmYwNjI3MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDYy
NzQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwNjI3NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAg
IDB4YjZmMDYyN2E6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2MjdlOiAgICBsZHIg
ICAgcjEsIFtyNl0KICAgIDB4YjZmMDYyODA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNv
ZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA2MmExLCAweGI2
ZjA2MzIxKToKICAgIDB4YjZmMDYyYTA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNjJh
NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNjJhNjogICAgbW92ICAgIHIxMiwgIzAKICAg
IDB4YjZmMDYyYWE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA2MmFlOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNjJiMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDYyYjY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNjJiODogICAgbW92ICAg
IHIwLCByNwogICAgMHhiNmYwNjJiYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZm
MDYyYmM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA2MmJlOiAgICBtb3Z3ICAg
cjEyLCAjNDMwNzMKICAgIDB4YjZmMDYyYzI6ICAgIG1vdnQgICByMTIsICM0Njc5MwogICAgMHhi
NmYwNjJjNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNjJjODogICAgbW92ICAgIGxyLCByMwog
ICAgMHhiNmYwNjJjYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDYyY2U6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2MmQyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4
YjZmMDYyZDQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDYyZDY6ICAgIGJuZSAgICAweGI2
ZjA2MmUwCiAgICAweGI2ZjA2MmQ4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA2MmRhOiAg
ICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDYyZGU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYw
NjJlMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDYyZTQ6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA2MmU4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDYyZWE6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDYyZWM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAg
ICAweGI2ZjA2MmYwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNjJmNDogICAgYmx4
ICAgIHIzCiAgICAweGI2ZjA2MmY2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNjJm
YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDYyZmU6ICAgIGxkciAgICByMSwgW3I2
XQogICAgMHhiNmYwNjMwMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklU
IENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDYzMjEsIDB4YjZmMDYzYTEpOgog
ICAgMHhiNmYwNjMyMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA2MzI0OiAgICBtb3Yg
ICAgcjcsIHNwCiAgICAweGI2ZjA2MzI2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNjMy
YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDYzMmU6ICAgIG1vdncgICByNiwg
IzQyMTI4CiAgICAweGI2ZjA2MzMyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNjMz
NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA2MzM4OiAgICBtb3YgICAgcjAsIHI3CiAg
ICAweGI2ZjA2MzNhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNjMzYzogICAg
bGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDYzM2U6ICAgIG1vdncgICByMTIsICM0NDE5
MwogICAgMHhiNmYwNjM0MjogICAgbW92dCAgIHIxMiwgIzQ2NzkzCiAgICAweGI2ZjA2MzQ2OiAg
ICBibHggICAgcjEyCiAgICAweGI2ZjA2MzQ4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA2
MzRhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNjM0ZTogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDYzNTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNjM1NDog
ICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwNjM1NjogICAgYm5lICAgIDB4YjZmMDYzNjAKICAg
IDB4YjZmMDYzNTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDYzNWE6ICAgIHBvcCAgICB7
cjcsIGxyfQogICAgMHhiNmYwNjM1ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA2MzYwOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNjM2NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDYzNjg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNjM2YTogICAgbW92ICAg
IHIwLCByNwogICAgMHhiNmYwNjM2YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDYz
NzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA2Mzc0OiAgICBibHggICAgcjMKICAg
IDB4YjZmMDYzNzY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA2MzdhOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNjM3ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2
ZjA2MzgwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2
ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNjNhMSwgMHhiNmYwNjQyMSk6CiAgICAweGI2ZjA2
M2EwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDYzYTQ6ICAgIG1vdiAgICByNywgc3AK
ICAgIDB4YjZmMDYzYTY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA2M2FhOiAgICBzdHIg
ICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwNjNhZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
IDB4YjZmMDYzYjI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2M2I2OiAgICBzdHIg
ICAgcjcsIFtyNl0KICAgIDB4YjZmMDYzYjg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDYz
YmE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA2M2JjOiAgICBsZHIgICAgcjIs
IFtyMSwgIzIwXQogICAgMHhiNmYwNjNiZTogICAgbW92dyAgIHIxMiwgIzQzODQxCiAgICAweGI2
ZjA2M2MyOiAgICBtb3Z0ICAgcjEyLCAjNDY3OTMKICAgIDB4YjZmMDYzYzY6ICAgIGJseCAgICBy
MTIKICAgIDB4YjZmMDYzYzg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDYzY2E6ICAgIG1v
dncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA2M2NlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwNjNkMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA2M2Q0OiAgICBjbXAgICAg
cjIsICMwCiAgICAweGI2ZjA2M2Q2OiAgICBibmUgICAgMHhiNmYwNjNlMAogICAgMHhiNmYwNjNk
ODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNjNkYTogICAgcG9wICAgIHtyNywgbHJ9CiAg
ICAweGI2ZjA2M2RlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDYzZTA6ICAgIG1vdncgICByNiwg
IzQyMTI4CiAgICAweGI2ZjA2M2U0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNjNl
ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA2M2VhOiAgICBtb3YgICAgcjAsIHI3CiAg
ICAweGI2ZjA2M2VjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNjNmMDogICAgbW92
dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDYzZjQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwNjNm
NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDYzZmE6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjA2M2ZlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDY0MDA6ICAg
IGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAg
ICBDb2RlIGF0IFsweGI2ZjA2NDIxLCAweGI2ZjA2NGExKToKICAgIDB4YjZmMDY0MjA6ICAgIHB1
c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNjQyNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYw
NjQyNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDY0MmE6ICAgIHN0ciAgICByMTIsIFty
NywgIzhdCiAgICAweGI2ZjA2NDJlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNjQz
MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDY0MzY6ICAgIHN0ciAgICByNywgW3I2
XQogICAgMHhiNmYwNjQzODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNjQzYTogICAgbGRy
ICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDY0M2M6ICAgIGxkciAgICByMiwgW3IxLCAjMjBd
CiAgICAweGI2ZjA2NDNlOiAgICBtb3Z3ICAgcjEyLCAjNDA4ODEKICAgIDB4YjZmMDY0NDI6ICAg
IG1vdnQgICByMTIsICM0Njc5MwogICAgMHhiNmYwNjQ0NjogICAgYmx4ICAgIHIxMgogICAgMHhi
NmYwNjQ0ODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwNjQ0YTogICAgbW92dyAgIHI2LCAj
NDYzNDgKICAgIDB4YjZmMDY0NGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2NDUy
OiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDY0NTQ6ICAgIGNtcCAgICByMiwgIzAKICAg
IDB4YjZmMDY0NTY6ICAgIGJuZSAgICAweGI2ZjA2NDYwCiAgICAweGI2ZjA2NDU4OiAgICBtb3Yg
ICAgc3AsIHI3CiAgICAweGI2ZjA2NDVhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDY0
NWU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNjQ2MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
IDB4YjZmMDY0NjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2NDY4OiAgICBzdHIg
ICAgcjcsIFtyNl0KICAgIDB4YjZmMDY0NmE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDY0
NmM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA2NDcwOiAgICBtb3Z0ICAgcjMsICM0
Njc3NgogICAgMHhiNmYwNjQ3NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA2NDc2OiAgICBtb3Z3
ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNjQ3YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMDY0N2U6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNjQ4MDogICAgYnggICAgIHIx
CkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQg
WzB4YjZmMDY0YTEsIDB4YjZmMDY1MjEpOgogICAgMHhiNmYwNjRhMDogICAgcHVzaCAgIHtyNywg
bHJ9CiAgICAweGI2ZjA2NGE0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA2NGE2OiAgICBt
b3YgICAgcjEyLCAjMAogICAgMHhiNmYwNjRhYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAg
IDB4YjZmMDY0YWU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA2NGIyOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNjRiNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2
ZjA2NGI4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA2NGJhOiAgICBsZHIgICAgcjEsIFty
NywgIzE2XQogICAgMHhiNmYwNjRiYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZm
MDY0YmU6ICAgIG1vdncgICByMTIsICM0NDg5NwogICAgMHhiNmYwNjRjMjogICAgbW92dCAgIHIx
MiwgIzQ2NzkzCiAgICAweGI2ZjA2NGM2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA2NGM4OiAg
ICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA2NGNhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAg
MHhiNmYwNjRjZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDY0ZDI6ICAgIGxkciAg
ICByNiwgW3I2XQogICAgMHhiNmYwNjRkNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwNjRk
NjogICAgYm5lICAgIDB4YjZmMDY0ZTAKICAgIDB4YjZmMDY0ZDg6ICAgIG1vdiAgICBzcCwgcjcK
ICAgIDB4YjZmMDY0ZGE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNjRkZTogICAgYngg
ICAgIGxyCiAgICAweGI2ZjA2NGUwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNjRl
NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDY0ZTg6ICAgIHN0ciAgICByNywgW3I2
XQogICAgMHhiNmYwNjRlYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNjRlYzogICAgbW92
dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDY0ZjA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAw
eGI2ZjA2NGY0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDY0ZjY6ICAgIG1vdncgICByNiwgIzQ2
MTg4CiAgICAweGI2ZjA2NGZhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNjRmZTog
ICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA2NTAwOiAgICBieCAgICAgcjEKR2VuZXJhdGVk
IEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNjUy
MSwgMHhiNmYwNjVhMSk6CiAgICAweGI2ZjA2NTIwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4
YjZmMDY1MjQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDY1MjY6ICAgIG1vdiAgICByMTIs
ICMwCiAgICAweGI2ZjA2NTJhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwNjUy
ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDY1MzI6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjA2NTM2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDY1Mzg6ICAg
IG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDY1M2E6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAg
ICAweGI2ZjA2NTNjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNjUzZTogICAg
bW92dyAgIHIxMiwgIzQzMjc3CiAgICAweGI2ZjA2NTQyOiAgICBtb3Z0ICAgcjEyLCAjNDY3OTMK
ICAgIDB4YjZmMDY1NDY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDY1NDg6ICAgIG1vdiAgICBs
ciwgcjMKICAgIDB4YjZmMDY1NGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA2NTRl
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNjU1MjogICAgbGRyICAgIHI2LCBbcjZd
CiAgICAweGI2ZjA2NTU0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA2NTU2OiAgICBibmUg
ICAgMHhiNmYwNjU2MAogICAgMHhiNmYwNjU1ODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYw
NjU1YTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA2NTVlOiAgICBieCAgICAgbHIKICAg
IDB4YjZmMDY1NjA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA2NTY0OiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNjU2ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2
ZjA2NTZhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA2NTZjOiAgICBtb3Z3ICAgcjMsICM2
MzI0OQogICAgMHhiNmYwNjU3MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDY1NzQ6
ICAgIGJseCAgICByMwogICAgMHhiNmYwNjU3NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4
YjZmMDY1N2E6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2NTdlOiAgICBsZHIgICAg
cjEsIFtyNl0KICAgIDB4YjZmMDY1ODA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUg
Zm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA2NWExLCAweGI2ZjA2
NjIxKToKICAgIDB4YjZmMDY1YTA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNjVhNDog
ICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNjVhNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4
YjZmMDY1YWE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA2NWFlOiAgICBtb3Z3
ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNjViMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMDY1YjY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNjViODogICAgbW92ICAgIHIw
LCByNwogICAgMHhiNmYwNjViYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDY1
YmM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA2NWJlOiAgICBtb3Z3ICAgcjEy
LCAjNDQ1NDUKICAgIDB4YjZmMDY1YzI6ICAgIG1vdnQgICByMTIsICM0Njc5MwogICAgMHhiNmYw
NjVjNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNjVjODogICAgbW92ICAgIGxyLCByMwogICAg
MHhiNmYwNjVjYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDY1Y2U6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2NWQyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZm
MDY1ZDQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDY1ZDY6ICAgIGJuZSAgICAweGI2ZjA2
NWUwCiAgICAweGI2ZjA2NWQ4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA2NWRhOiAgICBw
b3AgICAge3I3LCBscn0KICAgIDB4YjZmMDY1ZGU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNjVl
MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDY1ZTQ6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjA2NWU4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDY1ZWE6ICAg
IG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDY1ZWM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAw
eGI2ZjA2NWYwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNjVmNDogICAgYmx4ICAg
IHIzCiAgICAweGI2ZjA2NWY2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwNjVmYTog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDY1ZmU6ICAgIGxkciAgICByMSwgW3I2XQog
ICAgMHhiNmYwNjYwMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENU
SSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDY2MjEsIDB4YjZmMDY2YTEpOgogICAg
MHhiNmYwNjYyMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA2NjI0OiAgICBtb3YgICAg
cjcsIHNwCiAgICAweGI2ZjA2NjI2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwNjYyYTog
ICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDY2MmU6ICAgIG1vdncgICByNiwgIzQy
MTI4CiAgICAweGI2ZjA2NjMyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNjYzNjog
ICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA2NjM4OiAgICBtb3YgICAgcjAsIHI3CiAgICAw
eGI2ZjA2NjNhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNjYzYzogICAgbGRy
ICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDY2M2U6ICAgIG1vdncgICByMTIsICM0MTQ0MQog
ICAgMHhiNmYwNjY0MjogICAgbW92dCAgIHIxMiwgIzQ2NzkzCiAgICAweGI2ZjA2NjQ2OiAgICBi
bHggICAgcjEyCiAgICAweGI2ZjA2NjQ4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA2NjRh
OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNjY0ZTogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDY2NTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNjY1NDogICAg
Y21wICAgIHIyLCAjMAogICAgMHhiNmYwNjY1NjogICAgYm5lICAgIDB4YjZmMDY2NjAKICAgIDB4
YjZmMDY2NTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDY2NWE6ICAgIHBvcCAgICB7cjcs
IGxyfQogICAgMHhiNmYwNjY1ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA2NjYwOiAgICBtb3Z3
ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNjY2NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMDY2Njg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNjY2YTogICAgbW92ICAgIHIw
LCByNwogICAgMHhiNmYwNjY2YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDY2NzA6
ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA2Njc0OiAgICBibHggICAgcjMKICAgIDB4
YjZmMDY2NzY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA2NjdhOiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgMHhiNmYwNjY3ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA2
NjgwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBj
YWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNjZhMSwgMHhiNmYwNjcyMSk6CiAgICAweGI2ZjA2NmEw
OiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDY2YTQ6ICAgIG1vdiAgICByNywgc3AKICAg
IDB4YjZmMDY2YTY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA2NmFhOiAgICBzdHIgICAg
cjEyLCBbcjcsICM4XQogICAgMHhiNmYwNjZhZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4
YjZmMDY2YjI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2NmI2OiAgICBzdHIgICAg
cjcsIFtyNl0KICAgIDB4YjZmMDY2Yjg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDY2YmE6
ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA2NmJjOiAgICBsZHIgICAgcjIsIFty
MSwgIzIwXQogICAgMHhiNmYwNjZiZTogICAgbW92dyAgIHIxMiwgIzQxNjQ1CiAgICAweGI2ZjA2
NmMyOiAgICBtb3Z0ICAgcjEyLCAjNDY3OTMKICAgIDB4YjZmMDY2YzY6ICAgIGJseCAgICByMTIK
ICAgIDB4YjZmMDY2Yzg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDY2Y2E6ICAgIG1vdncg
ICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA2NmNlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwNjZkMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA2NmQ0OiAgICBjbXAgICAgcjIs
ICMwCiAgICAweGI2ZjA2NmQ2OiAgICBibmUgICAgMHhiNmYwNjZlMAogICAgMHhiNmYwNjZkODog
ICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNjZkYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAw
eGI2ZjA2NmRlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDY2ZTA6ICAgIG1vdncgICByNiwgIzQy
MTI4CiAgICAweGI2ZjA2NmU0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNjZlODog
ICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA2NmVhOiAgICBtb3YgICAgcjAsIHI3CiAgICAw
eGI2ZjA2NmVjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNjZmMDogICAgbW92dCAg
IHIzLCAjNDY3NzYKICAgIDB4YjZmMDY2ZjQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwNjZmNjog
ICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDY2ZmE6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAweGI2ZjA2NmZlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDY3MDA6ICAgIGJ4
ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBD
b2RlIGF0IFsweGI2ZjA2NzIxLCAweGI2ZjA2N2ExKToKICAgIDB4YjZmMDY3MjA6ICAgIHB1c2gg
ICB7cjcsIGxyfQogICAgMHhiNmYwNjcyNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNjcy
NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDY3MmE6ICAgIHN0ciAgICByMTIsIFtyNywg
IzhdCiAgICAweGI2ZjA2NzJlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNjczMjog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDY3MzY6ICAgIHN0ciAgICByNywgW3I2XQog
ICAgMHhiNmYwNjczODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNjczYTogICAgbGRyICAg
IHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDY3M2M6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAg
ICAweGI2ZjA2NzNlOiAgICBtb3Z3ICAgcjEyLCAjNDEyMzcKICAgIDB4YjZmMDY3NDI6ICAgIG1v
dnQgICByMTIsICM0Njc5MwogICAgMHhiNmYwNjc0NjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYw
Njc0ODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwNjc0YTogICAgbW92dyAgIHI2LCAjNDYz
NDgKICAgIDB4YjZmMDY3NGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2NzUyOiAg
ICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDY3NTQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4
YjZmMDY3NTY6ICAgIGJuZSAgICAweGI2ZjA2NzYwCiAgICAweGI2ZjA2NzU4OiAgICBtb3YgICAg
c3AsIHI3CiAgICAweGI2ZjA2NzVhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDY3NWU6
ICAgIGJ4ICAgICBscgogICAgMHhiNmYwNjc2MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4
YjZmMDY3NjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2NzY4OiAgICBzdHIgICAg
cjcsIFtyNl0KICAgIDB4YjZmMDY3NmE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDY3NmM6
ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA2NzcwOiAgICBtb3Z0ICAgcjMsICM0Njc3
NgogICAgMHhiNmYwNjc3NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA2Nzc2OiAgICBtb3Z3ICAg
cjYsICM0NjE4OAogICAgMHhiNmYwNjc3YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZm
MDY3N2U6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNjc4MDogICAgYnggICAgIHIxCkdl
bmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4
YjZmMDY3YTEsIDB4YjZmMDY4MjEpOgogICAgMHhiNmYwNjdhMDogICAgcHVzaCAgIHtyNywgbHJ9
CiAgICAweGI2ZjA2N2E0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA2N2E2OiAgICBtb3Yg
ICAgcjEyLCAjMAogICAgMHhiNmYwNjdhYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4
YjZmMDY3YWU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA2N2IyOiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgMHhiNmYwNjdiNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA2
N2I4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA2N2JhOiAgICBsZHIgICAgcjEsIFtyNywg
IzE2XQogICAgMHhiNmYwNjdiYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDY3
YmU6ICAgIG1vdncgICByMTIsICM0ODE3CiAgICAweGI2ZjA2N2MyOiAgICBtb3Z0ICAgcjEyLCAj
MQogICAgMHhiNmYwNjdjNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNjdjODogICAgbW92ICAg
IGxyLCByMwogICAgMHhiNmYwNjdjYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDY3
Y2U6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2N2QyOiAgICBsZHIgICAgcjYsIFty
Nl0KICAgIDB4YjZmMDY3ZDQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDY3ZDY6ICAgIGJu
ZSAgICAweGI2ZjA2N2UwCiAgICAweGI2ZjA2N2Q4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2
ZjA2N2RhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDY3ZGU6ICAgIGJ4ICAgICBscgog
ICAgMHhiNmYwNjdlMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDY3ZTQ6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2N2U4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4
YjZmMDY3ZWE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDY3ZWM6ICAgIG1vdncgICByMywg
IzYzMjQ5CiAgICAweGI2ZjA2N2YwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNjdm
NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA2N2Y2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAg
MHhiNmYwNjdmYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDY3ZmU6ICAgIGxkciAg
ICByMSwgW3I2XQogICAgMHhiNmYwNjgwMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29k
ZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDY4MjEsIDB4YjZm
MDY4YTEpOgogICAgMHhiNmYwNjgyMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA2ODI0
OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA2ODI2OiAgICBtb3YgICAgcjEyLCAjMAogICAg
MHhiNmYwNjgyYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDY4MmU6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA2ODMyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwNjgzNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA2ODM4OiAgICBtb3YgICAg
cjAsIHI3CiAgICAweGI2ZjA2ODNhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYw
NjgzYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDY4M2U6ICAgIG1vdncgICBy
MTIsICMzMDgwMQogICAgMHhiNmYwNjg0MjogICAgbW92dCAgIHIxMiwgIzEKICAgIDB4YjZmMDY4
NDY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDY4NDg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4
YjZmMDY4NGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA2ODRlOiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgMHhiNmYwNjg1MjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA2
ODU0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA2ODU2OiAgICBibmUgICAgMHhiNmYwNjg2
MAogICAgMHhiNmYwNjg1ODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNjg1YTogICAgcG9w
ICAgIHtyNywgbHJ9CiAgICAweGI2ZjA2ODVlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDY4NjA6
ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA2ODY0OiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwNjg2ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA2ODZhOiAgICBt
b3YgICAgcjAsIHI3CiAgICAweGI2ZjA2ODZjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhi
NmYwNjg3MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDY4NzQ6ICAgIGJseCAgICBy
MwogICAgMHhiNmYwNjg3NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDY4N2E6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2ODdlOiAgICBsZHIgICAgcjEsIFtyNl0KICAg
IDB4YjZmMDY4ODA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkg
bmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA2OGExLCAweGI2ZjA2OTIxKToKICAgIDB4
YjZmMDY4YTA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNjhhNDogICAgbW92ICAgIHI3
LCBzcAogICAgMHhiNmYwNjhhNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDY4YWE6ICAg
IHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA2OGFlOiAgICBtb3Z3ICAgcjYsICM0MjEy
OAogICAgMHhiNmYwNjhiMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDY4YjY6ICAg
IHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNjhiODogICAgbW92ICAgIHIwLCByNwogICAgMHhi
NmYwNjhiYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDY4YmM6ICAgIGxkciAg
ICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA2OGJlOiAgICBtb3Z3ICAgcjEyLCAjMzEwNDUKICAg
IDB4YjZmMDY4YzI6ICAgIG1vdnQgICByMTIsICMxCiAgICAweGI2ZjA2OGM2OiAgICBibHggICAg
cjEyCiAgICAweGI2ZjA2OGM4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA2OGNhOiAgICBt
b3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNjhjZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDY4ZDI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNjhkNDogICAgY21wICAg
IHIyLCAjMAogICAgMHhiNmYwNjhkNjogICAgYm5lICAgIDB4YjZmMDY4ZTAKICAgIDB4YjZmMDY4
ZDg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDY4ZGE6ICAgIHBvcCAgICB7cjcsIGxyfQog
ICAgMHhiNmYwNjhkZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA2OGUwOiAgICBtb3Z3ICAgcjYs
ICM0MjEyOAogICAgMHhiNmYwNjhlNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDY4
ZTg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNjhlYTogICAgbW92ICAgIHIwLCByNwog
ICAgMHhiNmYwNjhlYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDY4ZjA6ICAgIG1v
dnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA2OGY0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDY4
ZjY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA2OGZhOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgMHhiNmYwNjhmZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA2OTAwOiAg
ICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgog
ICAgQ29kZSBhdCBbMHhiNmYwNjkyMSwgMHhiNmYwNjlhMSk6CiAgICAweGI2ZjA2OTIwOiAgICBw
dXNoICAge3I3LCBscn0KICAgIDB4YjZmMDY5MjQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZm
MDY5MjY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA2OTJhOiAgICBzdHIgICAgcjEyLCBb
cjcsICM4XQogICAgMHhiNmYwNjkyZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDY5
MzI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2OTM2OiAgICBzdHIgICAgcjcsIFty
Nl0KICAgIDB4YjZmMDY5Mzg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDY5M2E6ICAgIGxk
ciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA2OTNjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIw
XQogICAgMHhiNmYwNjkzZTogICAgbW92dyAgIHIxMiwgIzI2MjEKICAgIDB4YjZmMDY5NDI6ICAg
IG1vdnQgICByMTIsICMxCiAgICAweGI2ZjA2OTQ2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA2
OTQ4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA2OTRhOiAgICBtb3Z3ICAgcjYsICM0NjM0
OAogICAgMHhiNmYwNjk0ZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDY5NTI6ICAg
IGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNjk1NDogICAgY21wICAgIHIyLCAjMAogICAgMHhi
NmYwNjk1NjogICAgYm5lICAgIDB4YjZmMDY5NjAKICAgIDB4YjZmMDY5NTg6ICAgIG1vdiAgICBz
cCwgcjcKICAgIDB4YjZmMDY5NWE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNjk1ZTog
ICAgYnggICAgIGxyCiAgICAweGI2ZjA2OTYwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhi
NmYwNjk2NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDY5Njg6ICAgIHN0ciAgICBy
NywgW3I2XQogICAgMHhiNmYwNjk2YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNjk2Yzog
ICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDY5NzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2
CiAgICAweGI2ZjA2OTc0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDY5NzY6ICAgIG1vdncgICBy
NiwgIzQ2MTg4CiAgICAweGI2ZjA2OTdhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYw
Njk3ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA2OTgwOiAgICBieCAgICAgcjEKR2Vu
ZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhi
NmYwNjlhMSwgMHhiNmYwNmEyMSk6CiAgICAweGI2ZjA2OWEwOiAgICBwdXNoICAge3I3LCBscn0K
ICAgIDB4YjZmMDY5YTQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDY5YTY6ICAgIG1vdiAg
ICByMTIsICMwCiAgICAweGI2ZjA2OWFhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhi
NmYwNjlhZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDY5YjI6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjA2OWI2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDY5
Yjg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDY5YmE6ICAgIGxkciAgICByMSwgW3I3LCAj
MTZdCiAgICAweGI2ZjA2OWJjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNjli
ZTogICAgbW92dyAgIHIxMiwgIzY1Mzg1CiAgICAweGI2ZjA2OWMyOiAgICBtb3Z0ICAgcjEyLCAj
MAogICAgMHhiNmYwNjljNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNjljODogICAgbW92ICAg
IGxyLCByMwogICAgMHhiNmYwNjljYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDY5
Y2U6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2OWQyOiAgICBsZHIgICAgcjYsIFty
Nl0KICAgIDB4YjZmMDY5ZDQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDY5ZDY6ICAgIGJu
ZSAgICAweGI2ZjA2OWUwCiAgICAweGI2ZjA2OWQ4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2
ZjA2OWRhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDY5ZGU6ICAgIGJ4ICAgICBscgog
ICAgMHhiNmYwNjllMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDY5ZTQ6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2OWU4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4
YjZmMDY5ZWE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDY5ZWM6ICAgIG1vdncgICByMywg
IzYzMjQ5CiAgICAweGI2ZjA2OWYwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNjlm
NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA2OWY2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAg
MHhiNmYwNjlmYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDY5ZmU6ICAgIGxkciAg
ICByMSwgW3I2XQogICAgMHhiNmYwNmEwMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29k
ZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDZhMjEsIDB4YjZm
MDZhYTEpOgogICAgMHhiNmYwNmEyMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA2YTI0
OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA2YTI2OiAgICBtb3YgICAgcjEyLCAjMAogICAg
MHhiNmYwNmEyYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDZhMmU6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA2YTMyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwNmEzNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA2YTM4OiAgICBtb3YgICAg
cjAsIHI3CiAgICAweGI2ZjA2YTNhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYw
NmEzYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDZhM2U6ICAgIG1vdncgICBy
MTIsICM2NTMxNwogICAgMHhiNmYwNmE0MjogICAgbW92dCAgIHIxMiwgIzAKICAgIDB4YjZmMDZh
NDY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDZhNDg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4
YjZmMDZhNGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA2YTRlOiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgMHhiNmYwNmE1MjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA2
YTU0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA2YTU2OiAgICBibmUgICAgMHhiNmYwNmE2
MAogICAgMHhiNmYwNmE1ODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNmE1YTogICAgcG9w
ICAgIHtyNywgbHJ9CiAgICAweGI2ZjA2YTVlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDZhNjA6
ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA2YTY0OiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwNmE2ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA2YTZhOiAgICBt
b3YgICAgcjAsIHI3CiAgICAweGI2ZjA2YTZjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhi
NmYwNmE3MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDZhNzQ6ICAgIGJseCAgICBy
MwogICAgMHhiNmYwNmE3NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDZhN2E6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2YTdlOiAgICBsZHIgICAgcjEsIFtyNl0KICAg
IDB4YjZmMDZhODA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkg
bmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA2YWExLCAweGI2ZjA2YjIxKToKICAgIDB4
YjZmMDZhYTA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNmFhNDogICAgbW92ICAgIHI3
LCBzcAogICAgMHhiNmYwNmFhNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDZhYWE6ICAg
IHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA2YWFlOiAgICBtb3Z3ICAgcjYsICM0MjEy
OAogICAgMHhiNmYwNmFiMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDZhYjY6ICAg
IHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNmFiODogICAgbW92ICAgIHIwLCByNwogICAgMHhi
NmYwNmFiYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDZhYmM6ICAgIGxkciAg
ICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA2YWJlOiAgICBtb3Z3ICAgcjEyLCAjMjA0NQogICAg
MHhiNmYwNmFjMjogICAgbW92dCAgIHIxMiwgIzEKICAgIDB4YjZmMDZhYzY6ICAgIGJseCAgICBy
MTIKICAgIDB4YjZmMDZhYzg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDZhY2E6ICAgIG1v
dncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA2YWNlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwNmFkMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA2YWQ0OiAgICBjbXAgICAg
cjIsICMwCiAgICAweGI2ZjA2YWQ2OiAgICBibmUgICAgMHhiNmYwNmFlMAogICAgMHhiNmYwNmFk
ODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNmFkYTogICAgcG9wICAgIHtyNywgbHJ9CiAg
ICAweGI2ZjA2YWRlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDZhZTA6ICAgIG1vdncgICByNiwg
IzQyMTI4CiAgICAweGI2ZjA2YWU0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNmFl
ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA2YWVhOiAgICBtb3YgICAgcjAsIHI3CiAg
ICAweGI2ZjA2YWVjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNmFmMDogICAgbW92
dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDZhZjQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwNmFm
NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDZhZmE6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjA2YWZlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDZiMDA6ICAg
IGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAg
ICBDb2RlIGF0IFsweGI2ZjA2YjIxLCAweGI2ZjA2YmExKToKICAgIDB4YjZmMDZiMjA6ICAgIHB1
c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNmIyNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYw
NmIyNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDZiMmE6ICAgIHN0ciAgICByMTIsIFty
NywgIzhdCiAgICAweGI2ZjA2YjJlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNmIz
MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDZiMzY6ICAgIHN0ciAgICByNywgW3I2
XQogICAgMHhiNmYwNmIzODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNmIzYTogICAgbGRy
ICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDZiM2M6ICAgIGxkciAgICByMiwgW3IxLCAjMjBd
CiAgICAweGI2ZjA2YjNlOiAgICBtb3Z3ICAgcjEyLCAjMjE1NwogICAgMHhiNmYwNmI0MjogICAg
bW92dCAgIHIxMiwgIzEKICAgIDB4YjZmMDZiNDY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDZi
NDg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDZiNGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4
CiAgICAweGI2ZjA2YjRlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNmI1MjogICAg
bGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA2YjU0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2
ZjA2YjU2OiAgICBibmUgICAgMHhiNmYwNmI2MAogICAgMHhiNmYwNmI1ODogICAgbW92ICAgIHNw
LCByNwogICAgMHhiNmYwNmI1YTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA2YjVlOiAg
ICBieCAgICAgbHIKICAgIDB4YjZmMDZiNjA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2
ZjA2YjY0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNmI2ODogICAgc3RyICAgIHI3
LCBbcjZdCiAgICAweGI2ZjA2YjZhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA2YjZjOiAg
ICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwNmI3MDogICAgbW92dCAgIHIzLCAjNDY3NzYK
ICAgIDB4YjZmMDZiNzQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwNmI3NjogICAgbW92dyAgIHI2
LCAjNDYxODgKICAgIDB4YjZmMDZiN2E6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2
YjdlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDZiODA6ICAgIGJ4ICAgICByMQpHZW5l
cmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2
ZjA2YmExLCAweGI2ZjA2YzIxKToKICAgIDB4YjZmMDZiYTA6ICAgIHB1c2ggICB7cjcsIGxyfQog
ICAgMHhiNmYwNmJhNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNmJhNjogICAgbW92ICAg
IHIxMiwgIzAKICAgIDB4YjZmMDZiYWE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2
ZjA2YmFlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNmJiMjogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDZiYjY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNmJi
ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNmJiYTogICAgbGRyICAgIHIxLCBbcjcsICMx
Nl0KICAgIDB4YjZmMDZiYmM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA2YmJl
OiAgICBtb3Z3ICAgcjEyLCAjMTkzMwogICAgMHhiNmYwNmJjMjogICAgbW92dCAgIHIxMiwgIzEK
ICAgIDB4YjZmMDZiYzY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDZiYzg6ICAgIG1vdiAgICBs
ciwgcjMKICAgIDB4YjZmMDZiY2E6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA2YmNl
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNmJkMjogICAgbGRyICAgIHI2LCBbcjZd
CiAgICAweGI2ZjA2YmQ0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA2YmQ2OiAgICBibmUg
ICAgMHhiNmYwNmJlMAogICAgMHhiNmYwNmJkODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYw
NmJkYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA2YmRlOiAgICBieCAgICAgbHIKICAg
IDB4YjZmMDZiZTA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA2YmU0OiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNmJlODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2
ZjA2YmVhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA2YmVjOiAgICBtb3Z3ICAgcjMsICM2
MzI0OQogICAgMHhiNmYwNmJmMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDZiZjQ6
ICAgIGJseCAgICByMwogICAgMHhiNmYwNmJmNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4
YjZmMDZiZmE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2YmZlOiAgICBsZHIgICAg
cjEsIFtyNl0KICAgIDB4YjZmMDZjMDA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUg
Zm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA2YzIxLCAweGI2ZjA2
Y2ExKToKICAgIDB4YjZmMDZjMjA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNmMyNDog
ICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwNmMyNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4
YjZmMDZjMmE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA2YzJlOiAgICBtb3Z3
ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNmMzMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMDZjMzY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNmMzODogICAgbW92ICAgIHIw
LCByNwogICAgMHhiNmYwNmMzYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDZj
M2M6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjA2YzNlOiAgICBtb3Z3ICAgcjEy
LCAjNjUxOTcKICAgIDB4YjZmMDZjNDI6ICAgIG1vdnQgICByMTIsICMwCiAgICAweGI2ZjA2YzQ2
OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA2YzQ4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2
ZjA2YzRhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNmM0ZTogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDZjNTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNmM1
NDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwNmM1NjogICAgYm5lICAgIDB4YjZmMDZjNjAK
ICAgIDB4YjZmMDZjNTg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDZjNWE6ICAgIHBvcCAg
ICB7cjcsIGxyfQogICAgMHhiNmYwNmM1ZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA2YzYwOiAg
ICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwNmM2NDogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgIDB4YjZmMDZjNjg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNmM2YTogICAgbW92
ICAgIHIwLCByNwogICAgMHhiNmYwNmM2YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZm
MDZjNzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjA2Yzc0OiAgICBibHggICAgcjMK
ICAgIDB4YjZmMDZjNzY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA2YzdhOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNmM3ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAw
eGI2ZjA2YzgwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5h
dGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwNmNhMSwgMHhiNmYwNmQyMSk6CiAgICAweGI2
ZjA2Y2EwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDZjYTQ6ICAgIG1vdiAgICByNywg
c3AKICAgIDB4YjZmMDZjYTY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA2Y2FhOiAgICBz
dHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwNmNhZTogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgIDB4YjZmMDZjYjI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2Y2I2OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDZjYjg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZm
MDZjYmE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA2Y2JjOiAgICBsZHIgICAg
cjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNmNiZTogICAgbW92dyAgIHIxMiwgIzE4NDEKICAgIDB4
YjZmMDZjYzI6ICAgIG1vdnQgICByMTIsICMxCiAgICAweGI2ZjA2Y2M2OiAgICBibHggICAgcjEy
CiAgICAweGI2ZjA2Y2M4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA2Y2NhOiAgICBtb3Z3
ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNmNjZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMDZjZDI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNmNkNDogICAgY21wICAgIHIy
LCAjMAogICAgMHhiNmYwNmNkNjogICAgYm5lICAgIDB4YjZmMDZjZTAKICAgIDB4YjZmMDZjZDg6
ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDZjZGE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAg
MHhiNmYwNmNkZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA2Y2UwOiAgICBtb3Z3ICAgcjYsICM0
MjEyOAogICAgMHhiNmYwNmNlNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDZjZTg6
ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNmNlYTogICAgbW92ICAgIHIwLCByNwogICAg
MHhiNmYwNmNlYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDZjZjA6ICAgIG1vdnQg
ICByMywgIzQ2Nzc2CiAgICAweGI2ZjA2Y2Y0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDZjZjY6
ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA2Y2ZhOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwNmNmZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA2ZDAwOiAgICBi
eCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAg
Q29kZSBhdCBbMHhiNmYwNmQyMSwgMHhiNmYwNmRhMSk6CiAgICAweGI2ZjA2ZDIwOiAgICBwdXNo
ICAge3I3LCBscn0KICAgIDB4YjZmMDZkMjQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDZk
MjY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA2ZDJhOiAgICBzdHIgICAgcjEyLCBbcjcs
ICM4XQogICAgMHhiNmYwNmQyZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDZkMzI6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2ZDM2OiAgICBzdHIgICAgcjcsIFtyNl0K
ICAgIDB4YjZmMDZkMzg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDZkM2E6ICAgIGxkciAg
ICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA2ZDNjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQog
ICAgMHhiNmYwNmQzZTogICAgbW92dyAgIHIxMiwgIzE0ODkKICAgIDB4YjZmMDZkNDI6ICAgIG1v
dnQgICByMTIsICMxCiAgICAweGI2ZjA2ZDQ2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjA2ZDQ4
OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA2ZDRhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAog
ICAgMHhiNmYwNmQ0ZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDZkNTI6ICAgIGxk
ciAgICByNiwgW3I2XQogICAgMHhiNmYwNmQ1NDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYw
NmQ1NjogICAgYm5lICAgIDB4YjZmMDZkNjAKICAgIDB4YjZmMDZkNTg6ICAgIG1vdiAgICBzcCwg
cjcKICAgIDB4YjZmMDZkNWE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwNmQ1ZTogICAg
YnggICAgIGxyCiAgICAweGI2ZjA2ZDYwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYw
NmQ2NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDZkNjg6ICAgIHN0ciAgICByNywg
W3I2XQogICAgMHhiNmYwNmQ2YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwNmQ2YzogICAg
bW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDZkNzA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAg
ICAweGI2ZjA2ZDc0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDZkNzY6ICAgIG1vdncgICByNiwg
IzQ2MTg4CiAgICAweGI2ZjA2ZDdhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNmQ3
ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA2ZDgwOiAgICBieCAgICAgcjEKR2VuZXJh
dGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYw
NmRhMSwgMHhiNmYwNmUyMSk6CiAgICAweGI2ZjA2ZGEwOiAgICBwdXNoICAge3I3LCBscn0KICAg
IDB4YjZmMDZkYTQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDZkYTY6ICAgIG1vdiAgICBy
MTIsICMwCiAgICAweGI2ZjA2ZGFhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYw
NmRhZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDZkYjI6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjA2ZGI2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDZkYjg6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDZkYmE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZd
CiAgICAweGI2ZjA2ZGJjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwNmRiZTog
ICAgbW92dyAgIHIxMiwgIzEyNjI5CiAgICAweGI2ZjA2ZGMyOiAgICBtb3Z0ICAgcjEyLCAjMQog
ICAgMHhiNmYwNmRjNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNmRjODogICAgbW92ICAgIGxy
LCByMwogICAgMHhiNmYwNmRjYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDZkY2U6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2ZGQyOiAgICBsZHIgICAgcjYsIFtyNl0K
ICAgIDB4YjZmMDZkZDQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDZkZDY6ICAgIGJuZSAg
ICAweGI2ZjA2ZGUwCiAgICAweGI2ZjA2ZGQ4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjA2
ZGRhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDZkZGU6ICAgIGJ4ICAgICBscgogICAg
MHhiNmYwNmRlMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDZkZTQ6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2ZGU4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZm
MDZkZWE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDZkZWM6ICAgIG1vdncgICByMywgIzYz
MjQ5CiAgICAweGI2ZjA2ZGYwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwNmRmNDog
ICAgYmx4ICAgIHIzCiAgICAweGI2ZjA2ZGY2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhi
NmYwNmRmYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDZkZmU6ICAgIGxkciAgICBy
MSwgW3I2XQogICAgMHhiNmYwNmUwMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBm
b3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDZlMjEsIDB4YjZmMDZl
YTEpOgogICAgMHhiNmYwNmUyMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjA2ZTI0OiAg
ICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA2ZTI2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhi
NmYwNmUyYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDZlMmU6ICAgIG1vdncg
ICByNiwgIzQyMTI4CiAgICAweGI2ZjA2ZTMyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwNmUzNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA2ZTM4OiAgICBtb3YgICAgcjAs
IHI3CiAgICAweGI2ZjA2ZTNhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwNmUz
YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDZlM2U6ICAgIG1vdncgICByMTIs
ICM2NTIyMQogICAgMHhiNmYwNmU0MjogICAgbW92dCAgIHIxMiwgIzAKICAgIDB4YjZmMDZlNDY6
ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDZlNDg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZm
MDZlNGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA2ZTRlOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwNmU1MjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjA2ZTU0
OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA2ZTU2OiAgICBibmUgICAgMHhiNmYwNmU2MAog
ICAgMHhiNmYwNmU1ODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwNmU1YTogICAgcG9wICAg
IHtyNywgbHJ9CiAgICAweGI2ZjA2ZTVlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDZlNjA6ICAg
IG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA2ZTY0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwNmU2ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA2ZTZhOiAgICBtb3Yg
ICAgcjAsIHI3CiAgICAweGI2ZjA2ZTZjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYw
NmU3MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDZlNzQ6ICAgIGJseCAgICByMwog
ICAgMHhiNmYwNmU3NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDZlN2E6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2ZTdlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4
YjZmMDZlODA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0
aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjA2ZWExLCAweGI2ZjA2ZjIxKToKICAgIDB4YjZm
MDZlYTA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwNmVhNDogICAgbW92ICAgIHI3LCBz
cAogICAgMHhiNmYwNmVhNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDZlYWE6ICAgIHN0
ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjA2ZWFlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgMHhiNmYwNmViMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDZlYjY6ICAgIHN0
ciAgICByNywgW3I2XQogICAgMHhiNmYwNmViODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYw
NmViYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDZlYmM6ICAgIGxkciAgICBy
MiwgW3IxLCAjMjBdCiAgICAweGI2ZjA2ZWJlOiAgICBtb3Z3ICAgcjEyLCAjMjEyNDUKICAgIDB4
YjZmMDZlYzI6ICAgIG1vdnQgICByMTIsICMxCiAgICAweGI2ZjA2ZWM2OiAgICBibHggICAgcjEy
CiAgICAweGI2ZjA2ZWM4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjA2ZWNhOiAgICBtb3Z3
ICAgcjYsICM0NjM0OAogICAgMHhiNmYwNmVjZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMDZlZDI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwNmVkNDogICAgY21wICAgIHIy
LCAjMAogICAgMHhiNmYwNmVkNjogICAgYm5lICAgIDB4YjZmMDZlZTAKICAgIDB4YjZmMDZlZDg6
ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDZlZGE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAg
MHhiNmYwNmVkZTogICAgYnggICAgIGxyCiAgICAweGI2ZjA2ZWUwOiAgICBtb3Z3ICAgcjYsICM0
MjEyOAogICAgMHhiNmYwNmVlNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDZlZTg6
ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwNmVlYTogICAgbW92ICAgIHIwLCByNwogICAg
MHhiNmYwNmVlYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDZlZjA6ICAgIG1vdnQg
ICByMywgIzQ2Nzc2CiAgICAweGI2ZjA2ZWY0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDZlZjY6
ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjA2ZWZhOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwNmVmZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA2ZjAwOiAgICBi
eCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAg
Q29kZSBhdCBbMHhiNmYwNmYyMSwgMHhiNmYwNmZhMSk6CiAgICAweGI2ZjA2ZjIwOiAgICBwdXNo
ICAge3I3LCBscn0KICAgIDB4YjZmMDZmMjQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDZm
MjY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjA2ZjJhOiAgICBzdHIgICAgcjEyLCBbcjcs
ICM4XQogICAgMHhiNmYwNmYyZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDZmMzI6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2ZjM2OiAgICBzdHIgICAgcjcsIFtyNl0K
ICAgIDB4YjZmMDZmMzg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDZmM2E6ICAgIGxkciAg
ICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjA2ZjNjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQog
ICAgMHhiNmYwNmYzZTogICAgbW92dyAgIHIxMiwgIzEwMTI5CiAgICAweGI2ZjA2ZjQyOiAgICBt
b3Z0ICAgcjEyLCAjMQogICAgMHhiNmYwNmY0NjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwNmY0
ODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwNmY0YTogICAgbW92dyAgIHI2LCAjNDYzNDgK
ICAgIDB4YjZmMDZmNGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2ZjUyOiAgICBs
ZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDZmNTQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZm
MDZmNTY6ICAgIGJuZSAgICAweGI2ZjA2ZjYwCiAgICAweGI2ZjA2ZjU4OiAgICBtb3YgICAgc3As
IHI3CiAgICAweGI2ZjA2ZjVhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDZmNWU6ICAg
IGJ4ICAgICBscgogICAgMHhiNmYwNmY2MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZm
MDZmNjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2ZjY4OiAgICBzdHIgICAgcjcs
IFtyNl0KICAgIDB4YjZmMDZmNmE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDZmNmM6ICAg
IG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjA2ZjcwOiAgICBtb3Z0ICAgcjMsICM0Njc3Ngog
ICAgMHhiNmYwNmY3NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjA2Zjc2OiAgICBtb3Z3ICAgcjYs
ICM0NjE4OAogICAgMHhiNmYwNmY3YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDZm
N2U6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwNmY4MDogICAgYnggICAgIHIxCkdlbmVy
YXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZm
MDZmYTEsIDB4YjZmMDcwMjEpOgogICAgMHhiNmYwNmZhMDogICAgcHVzaCAgIHtyNywgbHJ9CiAg
ICAweGI2ZjA2ZmE0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjA2ZmE2OiAgICBtb3YgICAg
cjEyLCAjMAogICAgMHhiNmYwNmZhYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZm
MDZmYWU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA2ZmIyOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwNmZiNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjA2ZmI4
OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA2ZmJhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2
XQogICAgMHhiNmYwNmZiYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDZmYmU6
ICAgIG1vdncgICByMTIsICMxMDUwOQogICAgMHhiNmYwNmZjMjogICAgbW92dCAgIHIxMiwgIzEK
ICAgIDB4YjZmMDZmYzY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDZmYzg6ICAgIG1vdiAgICBs
ciwgcjMKICAgIDB4YjZmMDZmY2E6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjA2ZmNl
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNmZkMjogICAgbGRyICAgIHI2LCBbcjZd
CiAgICAweGI2ZjA2ZmQ0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjA2ZmQ2OiAgICBibmUg
ICAgMHhiNmYwNmZlMAogICAgMHhiNmYwNmZkODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYw
NmZkYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjA2ZmRlOiAgICBieCAgICAgbHIKICAg
IDB4YjZmMDZmZTA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjA2ZmU0OiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwNmZlODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2
ZjA2ZmVhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjA2ZmVjOiAgICBtb3Z3ICAgcjMsICM2
MzI0OQogICAgMHhiNmYwNmZmMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDZmZjQ6
ICAgIGJseCAgICByMwogICAgMHhiNmYwNmZmNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4
YjZmMDZmZmE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjA2ZmZlOiAgICBsZHIgICAg
cjEsIFtyNl0KICAgIDB4YjZmMDcwMDA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUg
Zm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjAwMDAxLCAweGI2ZjAw
MDgxKToKICAgIDB4YjZmMDAwMDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwMDAwNDog
ICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwMDAwNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4
YjZmMDAwMGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjAwMDBlOiAgICBtb3Z3
ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMDAxMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMDAwMTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMDAxODogICAgbW92ICAgIHIw
LCByNwogICAgMHhiNmYwMDAxYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDAw
MWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjAwMDFlOiAgICBtb3Z3ICAgcjEy
LCAjOTY5MwogICAgMHhiNmYwMDAyMjogICAgbW92dCAgIHIxMiwgIzEKICAgIDB4YjZmMDAwMjY6
ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDAwMjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZm
MDAwMmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjAwMDJlOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwMDAzMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjAwMDM0
OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjAwMDM2OiAgICBibmUgICAgMHhiNmYwMDA0MAog
ICAgMHhiNmYwMDAzODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwMDAzYTogICAgcG9wICAg
IHtyNywgbHJ9CiAgICAweGI2ZjAwMDNlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDAwNDA6ICAg
IG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAwMDQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwMDA0ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAwMDRhOiAgICBtb3Yg
ICAgcjAsIHI3CiAgICAweGI2ZjAwMDRjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYw
MDA1MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDAwNTQ6ICAgIGJseCAgICByMwog
ICAgMHhiNmYwMDA1NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDAwNWE6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwMDVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4
YjZmMDAwNjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0
aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjAwMDgxLCAweGI2ZjAwMTAxKToKICAgIDB4YjZm
MDAwODA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwMDA4NDogICAgbW92ICAgIHI3LCBz
cAogICAgMHhiNmYwMDA4NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDAwOGE6ICAgIHN0
ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjAwMDhlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgMHhiNmYwMDA5MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDAwOTY6ICAgIHN0
ciAgICByNywgW3I2XQogICAgMHhiNmYwMDA5ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYw
MDA5YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDAwOWM6ICAgIGxkciAgICBy
MiwgW3IxLCAjMjBdCiAgICAweGI2ZjAwMDllOiAgICBtb3Z3ICAgcjEyLCAjODQ3MwogICAgMHhi
NmYwMDBhMjogICAgbW92dCAgIHIxMiwgIzEKICAgIDB4YjZmMDAwYTY6ICAgIGJseCAgICByMTIK
ICAgIDB4YjZmMDAwYTg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDAwYWE6ICAgIG1vdncg
ICByNiwgIzQ2MzQ4CiAgICAweGI2ZjAwMGFlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwMDBiMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjAwMGI0OiAgICBjbXAgICAgcjIs
ICMwCiAgICAweGI2ZjAwMGI2OiAgICBibmUgICAgMHhiNmYwMDBjMAogICAgMHhiNmYwMDBiODog
ICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwMDBiYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAw
eGI2ZjAwMGJlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDAwYzA6ICAgIG1vdncgICByNiwgIzQy
MTI4CiAgICAweGI2ZjAwMGM0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMDBjODog
ICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAwMGNhOiAgICBtb3YgICAgcjAsIHI3CiAgICAw
eGI2ZjAwMGNjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwMDBkMDogICAgbW92dCAg
IHIzLCAjNDY3NzYKICAgIDB4YjZmMDAwZDQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwMDBkNjog
ICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDAwZGE6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAweGI2ZjAwMGRlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDAwZTA6ICAgIGJ4
ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBD
b2RlIGF0IFsweGI2ZjAwMTAxLCAweGI2ZjAwMTgxKToKICAgIDB4YjZmMDAxMDA6ICAgIHB1c2gg
ICB7cjcsIGxyfQogICAgMHhiNmYwMDEwNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwMDEw
NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDAxMGE6ICAgIHN0ciAgICByMTIsIFtyNywg
IzhdCiAgICAweGI2ZjAwMTBlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMDExMjog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDAxMTY6ICAgIHN0ciAgICByNywgW3I2XQog
ICAgMHhiNmYwMDExODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMDExYTogICAgbGRyICAg
IHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDAxMWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAg
ICAweGI2ZjAwMTFlOiAgICBtb3Z3ICAgcjEyLCAjMjUxODkKICAgIDB4YjZmMDAxMjI6ICAgIG1v
dnQgICByMTIsICMxCiAgICAweGI2ZjAwMTI2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjAwMTI4
OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjAwMTJhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAog
ICAgMHhiNmYwMDEyZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDAxMzI6ICAgIGxk
ciAgICByNiwgW3I2XQogICAgMHhiNmYwMDEzNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYw
MDEzNjogICAgYm5lICAgIDB4YjZmMDAxNDAKICAgIDB4YjZmMDAxMzg6ICAgIG1vdiAgICBzcCwg
cjcKICAgIDB4YjZmMDAxM2E6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwMDEzZTogICAg
YnggICAgIGxyCiAgICAweGI2ZjAwMTQwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYw
MDE0NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDAxNDg6ICAgIHN0ciAgICByNywg
W3I2XQogICAgMHhiNmYwMDE0YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMDE0YzogICAg
bW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDAxNTA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAg
ICAweGI2ZjAwMTU0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDAxNTY6ICAgIG1vdncgICByNiwg
IzQ2MTg4CiAgICAweGI2ZjAwMTVhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMDE1
ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjAwMTYwOiAgICBieCAgICAgcjEKR2VuZXJh
dGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYw
MDE4MSwgMHhiNmYwMDIwMSk6CiAgICAweGI2ZjAwMTgwOiAgICBwdXNoICAge3I3LCBscn0KICAg
IDB4YjZmMDAxODQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDAxODY6ICAgIG1vdiAgICBy
MTIsICMwCiAgICAweGI2ZjAwMThhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYw
MDE4ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDAxOTI6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjAwMTk2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDAxOTg6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDAxOWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZd
CiAgICAweGI2ZjAwMTljOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwMDE5ZTog
ICAgbW92dyAgIHIxMiwgIzE0MjkKICAgIDB4YjZmMDAxYTI6ICAgIG1vdnQgICByMTIsICMxCiAg
ICAweGI2ZjAwMWE2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjAwMWE4OiAgICBtb3YgICAgbHIs
IHIzCiAgICAweGI2ZjAwMWFhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwMDFhZTog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDAxYjI6ICAgIGxkciAgICByNiwgW3I2XQog
ICAgMHhiNmYwMDFiNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwMDFiNjogICAgYm5lICAg
IDB4YjZmMDAxYzAKICAgIDB4YjZmMDAxYjg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDAx
YmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwMDFiZTogICAgYnggICAgIGxyCiAgICAw
eGI2ZjAwMWMwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMDFjNDogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMDAxYzg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYw
MDFjYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMDFjYzogICAgbW92dyAgIHIzLCAjNjMy
NDkKICAgIDB4YjZmMDAxZDA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjAwMWQ0OiAg
ICBibHggICAgcjMKICAgIDB4YjZmMDAxZDY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2
ZjAwMWRhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMDFkZTogICAgbGRyICAgIHIx
LCBbcjZdCiAgICAweGI2ZjAwMWUwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZv
ciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwMDIwMSwgMHhiNmYwMDI4
MSk6CiAgICAweGI2ZjAwMjAwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDAyMDQ6ICAg
IG1vdiAgICByNywgc3AKICAgIDB4YjZmMDAyMDY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2
ZjAwMjBhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwMDIwZTogICAgbW92dyAg
IHI2LCAjNDIxMjgKICAgIDB4YjZmMDAyMTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjAwMjE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDAyMTg6ICAgIG1vdiAgICByMCwg
cjcKICAgIDB4YjZmMDAyMWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjAwMjFj
OiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwMDIxZTogICAgbW92dyAgIHIxMiwg
IzQ0OQogICAgMHhiNmYwMDIyMjogICAgbW92dCAgIHIxMiwgIzEKICAgIDB4YjZmMDAyMjY6ICAg
IGJseCAgICByMTIKICAgIDB4YjZmMDAyMjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDAy
MmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjAwMjJlOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgMHhiNmYwMDIzMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjAwMjM0OiAg
ICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjAwMjM2OiAgICBibmUgICAgMHhiNmYwMDI0MAogICAg
MHhiNmYwMDIzODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwMDIzYTogICAgcG9wICAgIHty
NywgbHJ9CiAgICAweGI2ZjAwMjNlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDAyNDA6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAwMjQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwMDI0ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAwMjRhOiAgICBtb3YgICAg
cjAsIHI3CiAgICAweGI2ZjAwMjRjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwMDI1
MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDAyNTQ6ICAgIGJseCAgICByMwogICAg
MHhiNmYwMDI1NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDAyNWE6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwMjVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZm
MDAyNjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZl
IGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjAwMjgxLCAweGI2ZjAwMzAxKToKICAgIDB4YjZmMDAy
ODA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwMDI4NDogICAgbW92ICAgIHI3LCBzcAog
ICAgMHhiNmYwMDI4NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDAyOGE6ICAgIHN0ciAg
ICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjAwMjhlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAg
MHhiNmYwMDI5MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDAyOTY6ICAgIHN0ciAg
ICByNywgW3I2XQogICAgMHhiNmYwMDI5ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMDI5
YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDAyOWM6ICAgIGxkciAgICByMiwg
W3IxLCAjMjBdCiAgICAweGI2ZjAwMjllOiAgICBtb3Z3ICAgcjEyLCAjNDQ5CiAgICAweGI2ZjAw
MmEyOiAgICBtb3Z0ICAgcjEyLCAjMQogICAgMHhiNmYwMDJhNjogICAgYmx4ICAgIHIxMgogICAg
MHhiNmYwMDJhODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwMDJhYTogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgIDB4YjZmMDAyYWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAw
MmIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDAyYjQ6ICAgIGNtcCAgICByMiwgIzAK
ICAgIDB4YjZmMDAyYjY6ICAgIGJuZSAgICAweGI2ZjAwMmMwCiAgICAweGI2ZjAwMmI4OiAgICBt
b3YgICAgc3AsIHI3CiAgICAweGI2ZjAwMmJhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZm
MDAyYmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwMDJjMDogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgIDB4YjZmMDAyYzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwMmM4OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDAyY2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZm
MDAyY2M6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjAwMmQwOiAgICBtb3Z0ICAgcjMs
ICM0Njc3NgogICAgMHhiNmYwMDJkNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjAwMmQ2OiAgICBt
b3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwMDJkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDAyZGU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwMDJlMDogICAgYnggICAg
IHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUg
YXQgWzB4YjZmMDAzMDEsIDB4YjZmMDAzODEpOgogICAgMHhiNmYwMDMwMDogICAgcHVzaCAgIHty
NywgbHJ9CiAgICAweGI2ZjAwMzA0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAwMzA2OiAg
ICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwMDMwYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0K
ICAgIDB4YjZmMDAzMGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAwMzEyOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMDMxNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjAwMzE4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAwMzFhOiAgICBsZHIgICAgcjEs
IFtyNywgIzE2XQogICAgMHhiNmYwMDMxYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4
YjZmMDAzMWU6ICAgIG1vdncgICByMTIsICM0MjUKICAgIDB4YjZmMDAzMjI6ICAgIG1vdnQgICBy
MTIsICMxCiAgICAweGI2ZjAwMzI2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjAwMzI4OiAgICBt
b3YgICAgbHIsIHIzCiAgICAweGI2ZjAwMzJhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhi
NmYwMDMyZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDAzMzI6ICAgIGxkciAgICBy
NiwgW3I2XQogICAgMHhiNmYwMDMzNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwMDMzNjog
ICAgYm5lICAgIDB4YjZmMDAzNDAKICAgIDB4YjZmMDAzMzg6ICAgIG1vdiAgICBzcCwgcjcKICAg
IDB4YjZmMDAzM2E6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwMDMzZTogICAgYnggICAg
IGxyCiAgICAweGI2ZjAwMzQwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMDM0NDog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDAzNDg6ICAgIHN0ciAgICByNywgW3I2XQog
ICAgMHhiNmYwMDM0YTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMDM0YzogICAgbW92dyAg
IHIzLCAjNjMyNDkKICAgIDB4YjZmMDAzNTA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2
ZjAwMzU0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDAzNTY6ICAgIG1vdncgICByNiwgIzQ2MTg4
CiAgICAweGI2ZjAwMzVhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMDM1ZTogICAg
bGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjAwMzYwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJ
VCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwMDM4MSwg
MHhiNmYwMDQwMSk6CiAgICAweGI2ZjAwMzgwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZm
MDAzODQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDAzODY6ICAgIG1vdiAgICByMTIsICMw
CiAgICAweGI2ZjAwMzhhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwMDM4ZTog
ICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDAzOTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAweGI2ZjAwMzk2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDAzOTg6ICAgIG1v
diAgICByMCwgcjcKICAgIDB4YjZmMDAzOWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAw
eGI2ZjAwMzljOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwMDM5ZTogICAgbW92
dyAgIHIxMiwgIzQyMzcKICAgIDB4YjZmMDAzYTI6ICAgIG1vdnQgICByMTIsICMxCiAgICAweGI2
ZjAwM2E2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjAwM2E4OiAgICBtb3YgICAgbHIsIHIzCiAg
ICAweGI2ZjAwM2FhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwMDNhZTogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDAzYjI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhi
NmYwMDNiNDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNmYwMDNiNjogICAgYm5lICAgIDB4YjZm
MDAzYzAKICAgIDB4YjZmMDAzYjg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDAzYmE6ICAg
IHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwMDNiZTogICAgYnggICAgIGxyCiAgICAweGI2ZjAw
M2MwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMDNjNDogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDAzYzg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMDNjYTog
ICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMDNjYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAg
IDB4YjZmMDAzZDA6ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjAwM2Q0OiAgICBibHgg
ICAgcjMKICAgIDB4YjZmMDAzZDY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjAwM2Rh
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMDNkZTogICAgbGRyICAgIHIxLCBbcjZd
CiAgICAweGI2ZjAwM2UwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQg
Q1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBhdCBbMHhiNmYwMDQwMSwgMHhiNmYwMDQ4MSk6CiAg
ICAweGI2ZjAwNDAwOiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDA0MDQ6ICAgIG1vdiAg
ICByNywgc3AKICAgIDB4YjZmMDA0MDY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjAwNDBh
OiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgMHhiNmYwMDQwZTogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgIDB4YjZmMDA0MTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwNDE2
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDA0MTg6ICAgIG1vdiAgICByMCwgcjcKICAg
IDB4YjZmMDA0MWE6ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjAwNDFjOiAgICBs
ZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhiNmYwMDQxZTogICAgbW92dyAgIHIxMiwgIzQwMQog
ICAgMHhiNmYwMDQyMjogICAgbW92dCAgIHIxMiwgIzEKICAgIDB4YjZmMDA0MjY6ICAgIGJseCAg
ICByMTIKICAgIDB4YjZmMDA0Mjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDA0MmE6ICAg
IG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjAwNDJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwMDQzMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjAwNDM0OiAgICBjbXAg
ICAgcjIsICMwCiAgICAweGI2ZjAwNDM2OiAgICBibmUgICAgMHhiNmYwMDQ0MAogICAgMHhiNmYw
MDQzODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwMDQzYTogICAgcG9wICAgIHtyNywgbHJ9
CiAgICAweGI2ZjAwNDNlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDA0NDA6ICAgIG1vdncgICBy
NiwgIzQyMTI4CiAgICAweGI2ZjAwNDQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYw
MDQ0ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAwNDRhOiAgICBtb3YgICAgcjAsIHI3
CiAgICAweGI2ZjAwNDRjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwMDQ1MDogICAg
bW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDA0NTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYw
MDQ1NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDA0NWE6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjAwNDVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDA0NjA6
ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6
CiAgICBDb2RlIGF0IFsweGI2ZjAwNDgxLCAweGI2ZjAwNTAxKToKICAgIDB4YjZmMDA0ODA6ICAg
IHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwMDQ4NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhi
NmYwMDQ4NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDA0OGE6ICAgIHN0ciAgICByMTIs
IFtyNywgIzhdCiAgICAweGI2ZjAwNDhlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYw
MDQ5MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDA0OTY6ICAgIHN0ciAgICByNywg
W3I2XQogICAgMHhiNmYwMDQ5ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMDQ5YTogICAg
bGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDA0OWM6ICAgIGxkciAgICByMiwgW3IxLCAj
MjBdCiAgICAweGI2ZjAwNDllOiAgICBtb3Z3ICAgcjEyLCAjMzc3CiAgICAweGI2ZjAwNGEyOiAg
ICBtb3Z0ICAgcjEyLCAjMQogICAgMHhiNmYwMDRhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYw
MDRhODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwMDRhYTogICAgbW92dyAgIHI2LCAjNDYz
NDgKICAgIDB4YjZmMDA0YWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwNGIyOiAg
ICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDA0YjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4
YjZmMDA0YjY6ICAgIGJuZSAgICAweGI2ZjAwNGMwCiAgICAweGI2ZjAwNGI4OiAgICBtb3YgICAg
c3AsIHI3CiAgICAweGI2ZjAwNGJhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDA0YmU6
ICAgIGJ4ICAgICBscgogICAgMHhiNmYwMDRjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4
YjZmMDA0YzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwNGM4OiAgICBzdHIgICAg
cjcsIFtyNl0KICAgIDB4YjZmMDA0Y2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDA0Y2M6
ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjAwNGQwOiAgICBtb3Z0ICAgcjMsICM0Njc3
NgogICAgMHhiNmYwMDRkNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjAwNGQ2OiAgICBtb3Z3ICAg
cjYsICM0NjE4OAogICAgMHhiNmYwMDRkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZm
MDA0ZGU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwMDRlMDogICAgYnggICAgIHIxCkdl
bmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4
YjZmMDA1MDEsIDB4YjZmMDA1ODEpOgogICAgMHhiNmYwMDUwMDogICAgcHVzaCAgIHtyNywgbHJ9
CiAgICAweGI2ZjAwNTA0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAwNTA2OiAgICBtb3Yg
ICAgcjEyLCAjMAogICAgMHhiNmYwMDUwYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4
YjZmMDA1MGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAwNTEyOiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgMHhiNmYwMDUxNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAw
NTE4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAwNTFhOiAgICBsZHIgICAgcjEsIFtyNywg
IzE2XQogICAgMHhiNmYwMDUxYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDA1
MWU6ICAgIG1vdncgICByMTIsICMxMDMzCiAgICAweGI2ZjAwNTIyOiAgICBtb3Z0ICAgcjEyLCAj
MQogICAgMHhiNmYwMDUyNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMDUyODogICAgbW92ICAg
IGxyLCByMwogICAgMHhiNmYwMDUyYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDA1
MmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwNTMyOiAgICBsZHIgICAgcjYsIFty
Nl0KICAgIDB4YjZmMDA1MzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDA1MzY6ICAgIGJu
ZSAgICAweGI2ZjAwNTQwCiAgICAweGI2ZjAwNTM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2
ZjAwNTNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDA1M2U6ICAgIGJ4ICAgICBscgog
ICAgMHhiNmYwMDU0MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDA1NDQ6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwNTQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4
YjZmMDA1NGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDA1NGM6ICAgIG1vdncgICByMywg
IzYzMjQ5CiAgICAweGI2ZjAwNTUwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwMDU1
NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjAwNTU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAg
MHhiNmYwMDU1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDA1NWU6ICAgIGxkciAg
ICByMSwgW3I2XQogICAgMHhiNmYwMDU2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29k
ZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDA1ODEsIDB4YjZm
MDA2MDEpOgogICAgMHhiNmYwMDU4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjAwNTg0
OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAwNTg2OiAgICBtb3YgICAgcjEyLCAjMAogICAg
MHhiNmYwMDU4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDA1OGU6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAwNTkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwMDU5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAwNTk4OiAgICBtb3YgICAg
cjAsIHI3CiAgICAweGI2ZjAwNTlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYw
MDU5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDA1OWU6ICAgIG1vdncgICBy
MTIsICM4OTA5CiAgICAweGI2ZjAwNWEyOiAgICBtb3Z0ICAgcjEyLCAjMQogICAgMHhiNmYwMDVh
NjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMDVhODogICAgbW92ICAgIGxyLCByMwogICAgMHhi
NmYwMDVhYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDA1YWU6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjAwNWIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDA1
YjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDA1YjY6ICAgIGJuZSAgICAweGI2ZjAwNWMw
CiAgICAweGI2ZjAwNWI4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAwNWJhOiAgICBwb3Ag
ICAge3I3LCBscn0KICAgIDB4YjZmMDA1YmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwMDVjMDog
ICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDA1YzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAweGI2ZjAwNWM4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDA1Y2E6ICAgIG1v
diAgICByMCwgcjcKICAgIDB4YjZmMDA1Y2M6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2
ZjAwNWQwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwMDVkNDogICAgYmx4ICAgIHIz
CiAgICAweGI2ZjAwNWQ2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwMDVkYTogICAg
bW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDA1ZGU6ICAgIGxkciAgICByMSwgW3I2XQogICAg
MHhiNmYwMDVlMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBu
YXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDA2MDEsIDB4YjZmMDA2ODEpOgogICAgMHhi
NmYwMDYwMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjAwNjA0OiAgICBtb3YgICAgcjcs
IHNwCiAgICAweGI2ZjAwNjA2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwMDYwYTogICAg
c3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDA2MGU6ICAgIG1vdncgICByNiwgIzQyMTI4
CiAgICAweGI2ZjAwNjEyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMDYxNjogICAg
c3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAwNjE4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2
ZjAwNjFhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwMDYxYzogICAgbGRyICAg
IHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDA2MWU6ICAgIG1vdncgICByMTIsICMxNTYxCiAgICAw
eGI2ZjAwNjIyOiAgICBtb3Z0ICAgcjEyLCAjMQogICAgMHhiNmYwMDYyNjogICAgYmx4ICAgIHIx
MgogICAgMHhiNmYwMDYyODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwMDYyYTogICAgbW92
dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDA2MmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAw
eGI2ZjAwNjMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDA2MzQ6ICAgIGNtcCAgICBy
MiwgIzAKICAgIDB4YjZmMDA2MzY6ICAgIGJuZSAgICAweGI2ZjAwNjQwCiAgICAweGI2ZjAwNjM4
OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAwNjNhOiAgICBwb3AgICAge3I3LCBscn0KICAg
IDB4YjZmMDA2M2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwMDY0MDogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgIDB4YjZmMDA2NDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwNjQ4
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDA2NGE6ICAgIG1vdiAgICByMCwgcjcKICAg
IDB4YjZmMDA2NGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjAwNjUwOiAgICBtb3Z0
ICAgcjMsICM0Njc3NgogICAgMHhiNmYwMDY1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjAwNjU2
OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwMDY1YTogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDA2NWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwMDY2MDogICAg
YnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAg
IENvZGUgYXQgWzB4YjZmMDA2ODEsIDB4YjZmMDA3MDEpOgogICAgMHhiNmYwMDY4MDogICAgcHVz
aCAgIHtyNywgbHJ9CiAgICAweGI2ZjAwNjg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAw
Njg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwMDY4YTogICAgc3RyICAgIHIxMiwgW3I3
LCAjOF0KICAgIDB4YjZmMDA2OGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAwNjky
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMDY5NjogICAgc3RyICAgIHI3LCBbcjZd
CiAgICAweGI2ZjAwNjk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAwNjlhOiAgICBsZHIg
ICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwMDY5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0K
ICAgIDB4YjZmMDA2OWU6ICAgIG1vdncgICByMTIsICMxNzA1CiAgICAweGI2ZjAwNmEyOiAgICBt
b3Z0ICAgcjEyLCAjMQogICAgMHhiNmYwMDZhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMDZh
ODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwMDZhYTogICAgbW92dyAgIHI2LCAjNDYzNDgK
ICAgIDB4YjZmMDA2YWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwNmIyOiAgICBs
ZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDA2YjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZm
MDA2YjY6ICAgIGJuZSAgICAweGI2ZjAwNmMwCiAgICAweGI2ZjAwNmI4OiAgICBtb3YgICAgc3As
IHI3CiAgICAweGI2ZjAwNmJhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDA2YmU6ICAg
IGJ4ICAgICBscgogICAgMHhiNmYwMDZjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZm
MDA2YzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwNmM4OiAgICBzdHIgICAgcjcs
IFtyNl0KICAgIDB4YjZmMDA2Y2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDA2Y2M6ICAg
IG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjAwNmQwOiAgICBtb3Z0ICAgcjMsICM0Njc3Ngog
ICAgMHhiNmYwMDZkNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjAwNmQ2OiAgICBtb3Z3ICAgcjYs
ICM0NjE4OAogICAgMHhiNmYwMDZkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDA2
ZGU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwMDZlMDogICAgYnggICAgIHIxCkdlbmVy
YXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZm
MDA3MDEsIDB4YjZmMDA3ODEpOgogICAgMHhiNmYwMDcwMDogICAgcHVzaCAgIHtyNywgbHJ9CiAg
ICAweGI2ZjAwNzA0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAwNzA2OiAgICBtb3YgICAg
cjEyLCAjMAogICAgMHhiNmYwMDcwYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZm
MDA3MGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAwNzEyOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwMDcxNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAwNzE4
OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAwNzFhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2
XQogICAgMHhiNmYwMDcxYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDA3MWU6
ICAgIG1vdncgICByMTIsICMxNjAxCiAgICAweGI2ZjAwNzIyOiAgICBtb3Z0ICAgcjEyLCAjMQog
ICAgMHhiNmYwMDcyNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMDcyODogICAgbW92ICAgIGxy
LCByMwogICAgMHhiNmYwMDcyYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDA3MmU6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwNzMyOiAgICBsZHIgICAgcjYsIFtyNl0K
ICAgIDB4YjZmMDA3MzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDA3MzY6ICAgIGJuZSAg
ICAweGI2ZjAwNzQwCiAgICAweGI2ZjAwNzM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAw
NzNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDA3M2U6ICAgIGJ4ICAgICBscgogICAg
MHhiNmYwMDc0MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDA3NDQ6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwNzQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZm
MDA3NGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDA3NGM6ICAgIG1vdncgICByMywgIzYz
MjQ5CiAgICAweGI2ZjAwNzUwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwMDc1NDog
ICAgYmx4ICAgIHIzCiAgICAweGI2ZjAwNzU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhi
NmYwMDc1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDA3NWU6ICAgIGxkciAgICBy
MSwgW3I2XQogICAgMHhiNmYwMDc2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBm
b3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDA3ODEsIDB4YjZmMDA4
MDEpOgogICAgMHhiNmYwMDc4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjAwNzg0OiAg
ICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAwNzg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhi
NmYwMDc4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDA3OGU6ICAgIG1vdncg
ICByNiwgIzQyMTI4CiAgICAweGI2ZjAwNzkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwMDc5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAwNzk4OiAgICBtb3YgICAgcjAs
IHI3CiAgICAweGI2ZjAwNzlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwMDc5
YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDA3OWU6ICAgIG1vdncgICByMTIs
ICMyOTg1CiAgICAweGI2ZjAwN2EyOiAgICBtb3Z0ICAgcjEyLCAjMQogICAgMHhiNmYwMDdhNjog
ICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMDdhODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYw
MDdhYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDA3YWU6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjAwN2IyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDA3YjQ6
ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDA3YjY6ICAgIGJuZSAgICAweGI2ZjAwN2MwCiAg
ICAweGI2ZjAwN2I4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAwN2JhOiAgICBwb3AgICAg
e3I3LCBscn0KICAgIDB4YjZmMDA3YmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwMDdjMDogICAg
bW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDA3YzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAweGI2ZjAwN2M4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDA3Y2E6ICAgIG1vdiAg
ICByMCwgcjcKICAgIDB4YjZmMDA3Y2M6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjAw
N2QwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwMDdkNDogICAgYmx4ICAgIHIzCiAg
ICAweGI2ZjAwN2Q2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwMDdkYTogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDA3ZGU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhi
NmYwMDdlMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRp
dmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDA4MDEsIDB4YjZmMDA4ODEpOgogICAgMHhiNmYw
MDgwMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjAwODA0OiAgICBtb3YgICAgcjcsIHNw
CiAgICAweGI2ZjAwODA2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwMDgwYTogICAgc3Ry
ICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDA4MGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAg
ICAweGI2ZjAwODEyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMDgxNjogICAgc3Ry
ICAgIHI3LCBbcjZdCiAgICAweGI2ZjAwODE4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAw
ODFhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwMDgxYzogICAgbGRyICAgIHIy
LCBbcjEsICMyMF0KICAgIDB4YjZmMDA4MWU6ICAgIG1vdncgICByMTIsICMxMDgyOQogICAgMHhi
NmYwMDgyMjogICAgbW92dCAgIHIxMiwgIzEKICAgIDB4YjZmMDA4MjY6ICAgIGJseCAgICByMTIK
ICAgIDB4YjZmMDA4Mjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDA4MmE6ICAgIG1vdncg
ICByNiwgIzQ2MzQ4CiAgICAweGI2ZjAwODJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwMDgzMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjAwODM0OiAgICBjbXAgICAgcjIs
ICMwCiAgICAweGI2ZjAwODM2OiAgICBibmUgICAgMHhiNmYwMDg0MAogICAgMHhiNmYwMDgzODog
ICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwMDgzYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAw
eGI2ZjAwODNlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDA4NDA6ICAgIG1vdncgICByNiwgIzQy
MTI4CiAgICAweGI2ZjAwODQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMDg0ODog
ICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAwODRhOiAgICBtb3YgICAgcjAsIHI3CiAgICAw
eGI2ZjAwODRjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwMDg1MDogICAgbW92dCAg
IHIzLCAjNDY3NzYKICAgIDB4YjZmMDA4NTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwMDg1Njog
ICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDA4NWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAweGI2ZjAwODVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDA4NjA6ICAgIGJ4
ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBD
b2RlIGF0IFsweGI2ZjAwODgxLCAweGI2ZjAwOTAxKToKICAgIDB4YjZmMDA4ODA6ICAgIHB1c2gg
ICB7cjcsIGxyfQogICAgMHhiNmYwMDg4NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwMDg4
NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDA4OGE6ICAgIHN0ciAgICByMTIsIFtyNywg
IzhdCiAgICAweGI2ZjAwODhlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMDg5Mjog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDA4OTY6ICAgIHN0ciAgICByNywgW3I2XQog
ICAgMHhiNmYwMDg5ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMDg5YTogICAgbGRyICAg
IHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDA4OWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAg
ICAweGI2ZjAwODllOiAgICBtb3Z3ICAgcjEyLCAjNTc0OQogICAgMHhiNmYwMDhhMjogICAgbW92
dCAgIHIxMiwgIzEKICAgIDB4YjZmMDA4YTY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDA4YTg6
ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDA4YWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAg
ICAweGI2ZjAwOGFlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMDhiMjogICAgbGRy
ICAgIHI2LCBbcjZdCiAgICAweGI2ZjAwOGI0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjAw
OGI2OiAgICBibmUgICAgMHhiNmYwMDhjMAogICAgMHhiNmYwMDhiODogICAgbW92ICAgIHNwLCBy
NwogICAgMHhiNmYwMDhiYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjAwOGJlOiAgICBi
eCAgICAgbHIKICAgIDB4YjZmMDA4YzA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAw
OGM0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMDhjODogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAweGI2ZjAwOGNhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAwOGNjOiAgICBt
b3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwMDhkMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAg
IDB4YjZmMDA4ZDQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwMDhkNjogICAgbW92dyAgIHI2LCAj
NDYxODgKICAgIDB4YjZmMDA4ZGE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwOGRl
OiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDA4ZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0
ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjAw
OTAxLCAweGI2ZjAwOTgxKToKICAgIDB4YjZmMDA5MDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAg
MHhiNmYwMDkwNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwMDkwNjogICAgbW92ICAgIHIx
MiwgIzAKICAgIDB4YjZmMDA5MGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjAw
OTBlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMDkxMjogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgIDB4YjZmMDA5MTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMDkxODog
ICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMDkxYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0K
ICAgIDB4YjZmMDA5MWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjAwOTFlOiAg
ICBtb3Z3ICAgcjEyLCAjNzkxMwogICAgMHhiNmYwMDkyMjogICAgbW92dCAgIHIxMiwgIzEKICAg
IDB4YjZmMDA5MjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDA5Mjg6ICAgIG1vdiAgICBsciwg
cjMKICAgIDB4YjZmMDA5MmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjAwOTJlOiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMDkzMjogICAgbGRyICAgIHI2LCBbcjZdCiAg
ICAweGI2ZjAwOTM0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjAwOTM2OiAgICBibmUgICAg
MHhiNmYwMDk0MAogICAgMHhiNmYwMDkzODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwMDkz
YTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjAwOTNlOiAgICBieCAgICAgbHIKICAgIDB4
YjZmMDA5NDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAwOTQ0OiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgMHhiNmYwMDk0ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAw
OTRhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAwOTRjOiAgICBtb3Z3ICAgcjMsICM2MzI0
OQogICAgMHhiNmYwMDk1MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDA5NTQ6ICAg
IGJseCAgICByMwogICAgMHhiNmYwMDk1NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZm
MDA5NWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwOTVlOiAgICBsZHIgICAgcjEs
IFtyNl0KICAgIDB4YjZmMDA5NjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9y
IEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjAwOTgxLCAweGI2ZjAwYTAx
KToKICAgIDB4YjZmMDA5ODA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwMDk4NDogICAg
bW92ICAgIHI3LCBzcAogICAgMHhiNmYwMDk4NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZm
MDA5OGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjAwOThlOiAgICBtb3Z3ICAg
cjYsICM0MjEyOAogICAgMHhiNmYwMDk5MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZm
MDA5OTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMDk5ODogICAgbW92ICAgIHIwLCBy
NwogICAgMHhiNmYwMDk5YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDA5OWM6
ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjAwOTllOiAgICBtb3Z3ICAgcjEyLCAj
MzIwNQogICAgMHhiNmYwMDlhMjogICAgbW92dCAgIHIxMiwgIzEKICAgIDB4YjZmMDA5YTY6ICAg
IGJseCAgICByMTIKICAgIDB4YjZmMDA5YTg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDA5
YWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjAwOWFlOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgMHhiNmYwMDliMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjAwOWI0OiAg
ICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjAwOWI2OiAgICBibmUgICAgMHhiNmYwMDljMAogICAg
MHhiNmYwMDliODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwMDliYTogICAgcG9wICAgIHty
NywgbHJ9CiAgICAweGI2ZjAwOWJlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDA5YzA6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAwOWM0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwMDljODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAwOWNhOiAgICBtb3YgICAg
cjAsIHI3CiAgICAweGI2ZjAwOWNjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwMDlk
MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDA5ZDQ6ICAgIGJseCAgICByMwogICAg
MHhiNmYwMDlkNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDA5ZGE6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwOWRlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZm
MDA5ZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZl
IGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjAwYTAxLCAweGI2ZjAwYTgxKToKICAgIDB4YjZmMDBh
MDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwMGEwNDogICAgbW92ICAgIHI3LCBzcAog
ICAgMHhiNmYwMGEwNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDBhMGE6ICAgIHN0ciAg
ICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjAwYTBlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAg
MHhiNmYwMGExMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDBhMTY6ICAgIHN0ciAg
ICByNywgW3I2XQogICAgMHhiNmYwMGExODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMGEx
YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDBhMWM6ICAgIGxkciAgICByMiwg
W3IxLCAjMjBdCiAgICAweGI2ZjAwYTFlOiAgICBtb3Z3ICAgcjEyLCAjOTE3CiAgICAweGI2ZjAw
YTIyOiAgICBtb3Z0ICAgcjEyLCAjMQogICAgMHhiNmYwMGEyNjogICAgYmx4ICAgIHIxMgogICAg
MHhiNmYwMGEyODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwMGEyYTogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgIDB4YjZmMDBhMmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAw
YTMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDBhMzQ6ICAgIGNtcCAgICByMiwgIzAK
ICAgIDB4YjZmMDBhMzY6ICAgIGJuZSAgICAweGI2ZjAwYTQwCiAgICAweGI2ZjAwYTM4OiAgICBt
b3YgICAgc3AsIHI3CiAgICAweGI2ZjAwYTNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZm
MDBhM2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwMGE0MDogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgIDB4YjZmMDBhNDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwYTQ4OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDBhNGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZm
MDBhNGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjAwYTUwOiAgICBtb3Z0ICAgcjMs
ICM0Njc3NgogICAgMHhiNmYwMGE1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjAwYTU2OiAgICBt
b3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwMGE1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDBhNWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwMGE2MDogICAgYnggICAg
IHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUg
YXQgWzB4YjZmMDBhODEsIDB4YjZmMDBiMDEpOgogICAgMHhiNmYwMGE4MDogICAgcHVzaCAgIHty
NywgbHJ9CiAgICAweGI2ZjAwYTg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAwYTg2OiAg
ICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwMGE4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0K
ICAgIDB4YjZmMDBhOGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAwYTkyOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMGE5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjAwYTk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAwYTlhOiAgICBsZHIgICAgcjEs
IFtyNywgIzE2XQogICAgMHhiNmYwMGE5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4
YjZmMDBhOWU6ICAgIG1vdncgICByMTIsICMzODM3CiAgICAweGI2ZjAwYWEyOiAgICBtb3Z0ICAg
cjEyLCAjMQogICAgMHhiNmYwMGFhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMGFhODogICAg
bW92ICAgIGxyLCByMwogICAgMHhiNmYwMGFhYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4
YjZmMDBhYWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwYWIyOiAgICBsZHIgICAg
cjYsIFtyNl0KICAgIDB4YjZmMDBhYjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDBhYjY6
ICAgIGJuZSAgICAweGI2ZjAwYWMwCiAgICAweGI2ZjAwYWI4OiAgICBtb3YgICAgc3AsIHI3CiAg
ICAweGI2ZjAwYWJhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDBhYmU6ICAgIGJ4ICAg
ICBscgogICAgMHhiNmYwMGFjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDBhYzQ6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwYWM4OiAgICBzdHIgICAgcjcsIFtyNl0K
ICAgIDB4YjZmMDBhY2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDBhY2M6ICAgIG1vdncg
ICByMywgIzYzMjQ5CiAgICAweGI2ZjAwYWQwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhi
NmYwMGFkNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjAwYWQ2OiAgICBtb3Z3ICAgcjYsICM0NjE4
OAogICAgMHhiNmYwMGFkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDBhZGU6ICAg
IGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwMGFlMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBK
SVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDBiMDEs
IDB4YjZmMDBiODEpOgogICAgMHhiNmYwMGIwMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2
ZjAwYjA0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAwYjA2OiAgICBtb3YgICAgcjEyLCAj
MAogICAgMHhiNmYwMGIwYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDBiMGU6
ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAwYjEyOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwMGIxNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAwYjE4OiAgICBt
b3YgICAgcjAsIHI3CiAgICAweGI2ZjAwYjFhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAg
MHhiNmYwMGIxYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDBiMWU6ICAgIG1v
dncgICByMTIsICM2NTIyOQogICAgMHhiNmYwMGIyMjogICAgbW92dCAgIHIxMiwgIzAKICAgIDB4
YjZmMDBiMjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDBiMjg6ICAgIG1vdiAgICBsciwgcjMK
ICAgIDB4YjZmMDBiMmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjAwYjJlOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMGIzMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAw
eGI2ZjAwYjM0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjAwYjM2OiAgICBibmUgICAgMHhi
NmYwMGI0MAogICAgMHhiNmYwMGIzODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwMGIzYTog
ICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjAwYjNlOiAgICBieCAgICAgbHIKICAgIDB4YjZm
MDBiNDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAwYjQ0OiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwMGI0ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAwYjRh
OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAwYjRjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQog
ICAgMHhiNmYwMGI1MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDBiNTQ6ICAgIGJs
eCAgICByMwogICAgMHhiNmYwMGI1NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDBi
NWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwYjVlOiAgICBsZHIgICAgcjEsIFty
Nl0KICAgIDB4YjZmMDBiNjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJ
VCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjAwYjgxLCAweGI2ZjAwYzAxKToK
ICAgIDB4YjZmMDBiODA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwMGI4NDogICAgbW92
ICAgIHI3LCBzcAogICAgMHhiNmYwMGI4NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDBi
OGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjAwYjhlOiAgICBtb3Z3ICAgcjYs
ICM0MjEyOAogICAgMHhiNmYwMGI5MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDBi
OTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMGI5ODogICAgbW92ICAgIHIwLCByNwog
ICAgMHhiNmYwMGI5YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDBiOWM6ICAg
IGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjAwYjllOiAgICBtb3Z3ICAgcjEyLCAjNjUy
NDUKICAgIDB4YjZmMDBiYTI6ICAgIG1vdnQgICByMTIsICMwCiAgICAweGI2ZjAwYmE2OiAgICBi
bHggICAgcjEyCiAgICAweGI2ZjAwYmE4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjAwYmFh
OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwMGJhZTogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDBiYjI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwMGJiNDogICAg
Y21wICAgIHIyLCAjMAogICAgMHhiNmYwMGJiNjogICAgYm5lICAgIDB4YjZmMDBiYzAKICAgIDB4
YjZmMDBiYjg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDBiYmE6ICAgIHBvcCAgICB7cjcs
IGxyfQogICAgMHhiNmYwMGJiZTogICAgYnggICAgIGxyCiAgICAweGI2ZjAwYmMwOiAgICBtb3Z3
ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMGJjNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMDBiYzg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMGJjYTogICAgbW92ICAgIHIw
LCByNwogICAgMHhiNmYwMGJjYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDBiZDA6
ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjAwYmQ0OiAgICBibHggICAgcjMKICAgIDB4
YjZmMDBiZDY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjAwYmRhOiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgMHhiNmYwMGJkZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjAw
YmUwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBj
YWxsOgogICAgQ29kZSBhdCBbMHhiNmYwMGMwMSwgMHhiNmYwMGM4MSk6CiAgICAweGI2ZjAwYzAw
OiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDBjMDQ6ICAgIG1vdiAgICByNywgc3AKICAg
IDB4YjZmMDBjMDY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjAwYzBhOiAgICBzdHIgICAg
cjEyLCBbcjcsICM4XQogICAgMHhiNmYwMGMwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4
YjZmMDBjMTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwYzE2OiAgICBzdHIgICAg
cjcsIFtyNl0KICAgIDB4YjZmMDBjMTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDBjMWE6
ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjAwYzFjOiAgICBsZHIgICAgcjIsIFty
MSwgIzIwXQogICAgMHhiNmYwMGMxZTogICAgbW92dyAgIHIxMiwgIzY1MjM3CiAgICAweGI2ZjAw
YzIyOiAgICBtb3Z0ICAgcjEyLCAjMAogICAgMHhiNmYwMGMyNjogICAgYmx4ICAgIHIxMgogICAg
MHhiNmYwMGMyODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwMGMyYTogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgIDB4YjZmMDBjMmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAw
YzMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDBjMzQ6ICAgIGNtcCAgICByMiwgIzAK
ICAgIDB4YjZmMDBjMzY6ICAgIGJuZSAgICAweGI2ZjAwYzQwCiAgICAweGI2ZjAwYzM4OiAgICBt
b3YgICAgc3AsIHI3CiAgICAweGI2ZjAwYzNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZm
MDBjM2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwMGM0MDogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgIDB4YjZmMDBjNDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwYzQ4OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDBjNGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZm
MDBjNGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjAwYzUwOiAgICBtb3Z0ICAgcjMs
ICM0Njc3NgogICAgMHhiNmYwMGM1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjAwYzU2OiAgICBt
b3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwMGM1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDBjNWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwMGM2MDogICAgYnggICAg
IHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUg
YXQgWzB4YjZmMDBjODEsIDB4YjZmMDBkMDEpOgogICAgMHhiNmYwMGM4MDogICAgcHVzaCAgIHty
NywgbHJ9CiAgICAweGI2ZjAwYzg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAwYzg2OiAg
ICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwMGM4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0K
ICAgIDB4YjZmMDBjOGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAwYzkyOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMGM5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjAwYzk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAwYzlhOiAgICBsZHIgICAgcjEs
IFtyNywgIzE2XQogICAgMHhiNmYwMGM5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4
YjZmMDBjOWU6ICAgIG1vdncgICByMTIsICM2NTI1MwogICAgMHhiNmYwMGNhMjogICAgbW92dCAg
IHIxMiwgIzAKICAgIDB4YjZmMDBjYTY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDBjYTg6ICAg
IG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDBjYWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAw
eGI2ZjAwY2FlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMGNiMjogICAgbGRyICAg
IHI2LCBbcjZdCiAgICAweGI2ZjAwY2I0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjAwY2I2
OiAgICBibmUgICAgMHhiNmYwMGNjMAogICAgMHhiNmYwMGNiODogICAgbW92ICAgIHNwLCByNwog
ICAgMHhiNmYwMGNiYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjAwY2JlOiAgICBieCAg
ICAgbHIKICAgIDB4YjZmMDBjYzA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAwY2M0
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMGNjODogICAgc3RyICAgIHI3LCBbcjZd
CiAgICAweGI2ZjAwY2NhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAwY2NjOiAgICBtb3Z3
ICAgcjMsICM2MzI0OQogICAgMHhiNmYwMGNkMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4
YjZmMDBjZDQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwMGNkNjogICAgbW92dyAgIHI2LCAjNDYx
ODgKICAgIDB4YjZmMDBjZGE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwY2RlOiAg
ICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDBjZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQg
SklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjAwZDAx
LCAweGI2ZjAwZDgxKToKICAgIDB4YjZmMDBkMDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhi
NmYwMGQwNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwMGQwNjogICAgbW92ICAgIHIxMiwg
IzAKICAgIDB4YjZmMDBkMGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjAwZDBl
OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMGQxMjogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDBkMTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMGQxODogICAg
bW92ICAgIHIwLCByNwogICAgMHhiNmYwMGQxYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAg
IDB4YjZmMDBkMWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjAwZDFlOiAgICBt
b3Z3ICAgcjEyLCAjNzIxCiAgICAweGI2ZjAwZDIyOiAgICBtb3Z0ICAgcjEyLCAjMQogICAgMHhi
NmYwMGQyNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMGQyODogICAgbW92ICAgIGxyLCByMwog
ICAgMHhiNmYwMGQyYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDBkMmU6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwZDMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4
YjZmMDBkMzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDBkMzY6ICAgIGJuZSAgICAweGI2
ZjAwZDQwCiAgICAweGI2ZjAwZDM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAwZDNhOiAg
ICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDBkM2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYw
MGQ0MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDBkNDQ6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjAwZDQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDBkNGE6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDBkNGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAg
ICAweGI2ZjAwZDUwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwMGQ1NDogICAgYmx4
ICAgIHIzCiAgICAweGI2ZjAwZDU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwMGQ1
YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDBkNWU6ICAgIGxkciAgICByMSwgW3I2
XQogICAgMHhiNmYwMGQ2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklU
IENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDBkODEsIDB4YjZmMDBlMDEpOgog
ICAgMHhiNmYwMGQ4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjAwZDg0OiAgICBtb3Yg
ICAgcjcsIHNwCiAgICAweGI2ZjAwZDg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwMGQ4
YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDBkOGU6ICAgIG1vdncgICByNiwg
IzQyMTI4CiAgICAweGI2ZjAwZDkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMGQ5
NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAwZDk4OiAgICBtb3YgICAgcjAsIHI3CiAg
ICAweGI2ZjAwZDlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwMGQ5YzogICAg
bGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDBkOWU6ICAgIG1vdncgICByMTIsICM4NTMK
ICAgIDB4YjZmMDBkYTI6ICAgIG1vdnQgICByMTIsICMxCiAgICAweGI2ZjAwZGE2OiAgICBibHgg
ICAgcjEyCiAgICAweGI2ZjAwZGE4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjAwZGFhOiAg
ICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwMGRhZTogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgIDB4YjZmMDBkYjI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwMGRiNDogICAgY21w
ICAgIHIyLCAjMAogICAgMHhiNmYwMGRiNjogICAgYm5lICAgIDB4YjZmMDBkYzAKICAgIDB4YjZm
MDBkYjg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDBkYmE6ICAgIHBvcCAgICB7cjcsIGxy
fQogICAgMHhiNmYwMGRiZTogICAgYnggICAgIGxyCiAgICAweGI2ZjAwZGMwOiAgICBtb3Z3ICAg
cjYsICM0MjEyOAogICAgMHhiNmYwMGRjNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZm
MDBkYzg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMGRjYTogICAgbW92ICAgIHIwLCBy
NwogICAgMHhiNmYwMGRjYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDBkZDA6ICAg
IG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjAwZGQ0OiAgICBibHggICAgcjMKICAgIDB4YjZm
MDBkZDY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjAwZGRhOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwMGRkZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjAwZGUw
OiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxs
OgogICAgQ29kZSBhdCBbMHhiNmYwMGUwMSwgMHhiNmYwMGU4MSk6CiAgICAweGI2ZjAwZTAwOiAg
ICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDBlMDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4
YjZmMDBlMDY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjAwZTBhOiAgICBzdHIgICAgcjEy
LCBbcjcsICM4XQogICAgMHhiNmYwMGUwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZm
MDBlMTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwZTE2OiAgICBzdHIgICAgcjcs
IFtyNl0KICAgIDB4YjZmMDBlMTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDBlMWE6ICAg
IGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjAwZTFjOiAgICBsZHIgICAgcjIsIFtyMSwg
IzIwXQogICAgMHhiNmYwMGUxZTogICAgbW92dyAgIHIxMiwgIzc2OQogICAgMHhiNmYwMGUyMjog
ICAgbW92dCAgIHIxMiwgIzEKICAgIDB4YjZmMDBlMjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZm
MDBlMjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDBlMmE6ICAgIG1vdncgICByNiwgIzQ2
MzQ4CiAgICAweGI2ZjAwZTJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMGUzMjog
ICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjAwZTM0OiAgICBjbXAgICAgcjIsICMwCiAgICAw
eGI2ZjAwZTM2OiAgICBibmUgICAgMHhiNmYwMGU0MAogICAgMHhiNmYwMGUzODogICAgbW92ICAg
IHNwLCByNwogICAgMHhiNmYwMGUzYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjAwZTNl
OiAgICBieCAgICAgbHIKICAgIDB4YjZmMDBlNDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAw
eGI2ZjAwZTQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMGU0ODogICAgc3RyICAg
IHI3LCBbcjZdCiAgICAweGI2ZjAwZTRhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAwZTRj
OiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwMGU1MDogICAgbW92dCAgIHIzLCAjNDY3
NzYKICAgIDB4YjZmMDBlNTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwMGU1NjogICAgbW92dyAg
IHI2LCAjNDYxODgKICAgIDB4YjZmMDBlNWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjAwZTVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDBlNjA6ICAgIGJ4ICAgICByMQpH
ZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsw
eGI2ZjAwZTgxLCAweGI2ZjAwZjAxKToKICAgIDB4YjZmMDBlODA6ICAgIHB1c2ggICB7cjcsIGxy
fQogICAgMHhiNmYwMGU4NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwMGU4NjogICAgbW92
ICAgIHIxMiwgIzAKICAgIDB4YjZmMDBlOGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAw
eGI2ZjAwZThlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMGU5MjogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMDBlOTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYw
MGU5ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMGU5YTogICAgbGRyICAgIHIxLCBbcjcs
ICMxNl0KICAgIDB4YjZmMDBlOWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjAw
ZTllOiAgICBtb3Z3ICAgcjEyLCAjMjM4OQogICAgMHhiNmYwMGVhMjogICAgbW92dCAgIHIxMiwg
IzEKICAgIDB4YjZmMDBlYTY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDBlYTg6ICAgIG1vdiAg
ICBsciwgcjMKICAgIDB4YjZmMDBlYWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjAw
ZWFlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMGViMjogICAgbGRyICAgIHI2LCBb
cjZdCiAgICAweGI2ZjAwZWI0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjAwZWI2OiAgICBi
bmUgICAgMHhiNmYwMGVjMAogICAgMHhiNmYwMGViODogICAgbW92ICAgIHNwLCByNwogICAgMHhi
NmYwMGViYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjAwZWJlOiAgICBieCAgICAgbHIK
ICAgIDB4YjZmMDBlYzA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAwZWM0OiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMGVjODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjAwZWNhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAwZWNjOiAgICBtb3Z3ICAgcjMs
ICM2MzI0OQogICAgMHhiNmYwMGVkMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDBl
ZDQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwMGVkNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAg
IDB4YjZmMDBlZGE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwZWRlOiAgICBsZHIg
ICAgcjEsIFtyNl0KICAgIDB4YjZmMDBlZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNv
ZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjAwZjAxLCAweGI2
ZjAwZjgxKToKICAgIDB4YjZmMDBmMDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwMGYw
NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwMGYwNjogICAgbW92ICAgIHIxMiwgIzAKICAg
IDB4YjZmMDBmMGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjAwZjBlOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMGYxMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDBmMTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMGYxODogICAgbW92ICAg
IHIwLCByNwogICAgMHhiNmYwMGYxYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZm
MDBmMWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjAwZjFlOiAgICBtb3Z3ICAg
cjEyLCAjODczCiAgICAweGI2ZjAwZjIyOiAgICBtb3Z0ICAgcjEyLCAjMQogICAgMHhiNmYwMGYy
NjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMGYyODogICAgbW92ICAgIGxyLCByMwogICAgMHhi
NmYwMGYyYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDBmMmU6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjAwZjMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDBm
MzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDBmMzY6ICAgIGJuZSAgICAweGI2ZjAwZjQw
CiAgICAweGI2ZjAwZjM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAwZjNhOiAgICBwb3Ag
ICAge3I3LCBscn0KICAgIDB4YjZmMDBmM2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwMGY0MDog
ICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDBmNDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAweGI2ZjAwZjQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDBmNGE6ICAgIG1v
diAgICByMCwgcjcKICAgIDB4YjZmMDBmNGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2
ZjAwZjUwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwMGY1NDogICAgYmx4ICAgIHIz
CiAgICAweGI2ZjAwZjU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwMGY1YTogICAg
bW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDBmNWU6ICAgIGxkciAgICByMSwgW3I2XQogICAg
MHhiNmYwMGY2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBu
YXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDBmODEsIDB4YjZmMDEwMDEpOgogICAgMHhi
NmYwMGY4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjAwZjg0OiAgICBtb3YgICAgcjcs
IHNwCiAgICAweGI2ZjAwZjg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwMGY4YTogICAg
c3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDBmOGU6ICAgIG1vdncgICByNiwgIzQyMTI4
CiAgICAweGI2ZjAwZjkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMGY5NjogICAg
c3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAwZjk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2
ZjAwZjlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwMGY5YzogICAgbGRyICAg
IHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDBmOWU6ICAgIG1vdncgICByMTIsICM1MTIxCiAgICAw
eGI2ZjAwZmEyOiAgICBtb3Z0ICAgcjEyLCAjMQogICAgMHhiNmYwMGZhNjogICAgYmx4ICAgIHIx
MgogICAgMHhiNmYwMGZhODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwMGZhYTogICAgbW92
dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDBmYWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAw
eGI2ZjAwZmIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDBmYjQ6ICAgIGNtcCAgICBy
MiwgIzAKICAgIDB4YjZmMDBmYjY6ICAgIGJuZSAgICAweGI2ZjAwZmMwCiAgICAweGI2ZjAwZmI4
OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAwZmJhOiAgICBwb3AgICAge3I3LCBscn0KICAg
IDB4YjZmMDBmYmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwMGZjMDogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgIDB4YjZmMDBmYzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAwZmM4
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDBmY2E6ICAgIG1vdiAgICByMCwgcjcKICAg
IDB4YjZmMDBmY2M6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjAwZmQwOiAgICBtb3Z0
ICAgcjMsICM0Njc3NgogICAgMHhiNmYwMGZkNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjAwZmQ2
OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwMGZkYTogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDBmZGU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwMGZlMDogICAg
YnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAg
IENvZGUgYXQgWzB4YjZmMDEwMDEsIDB4YjZmMDEwODEpOgogICAgMHhiNmYwMTAwMDogICAgcHVz
aCAgIHtyNywgbHJ9CiAgICAweGI2ZjAxMDA0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAx
MDA2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwMTAwYTogICAgc3RyICAgIHIxMiwgW3I3
LCAjOF0KICAgIDB4YjZmMDEwMGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAxMDEy
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMTAxNjogICAgc3RyICAgIHI3LCBbcjZd
CiAgICAweGI2ZjAxMDE4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAxMDFhOiAgICBsZHIg
ICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwMTAxYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0K
ICAgIDB4YjZmMDEwMWU6ICAgIG1vdncgICByMTIsICMyMjc1MwogICAgMHhiNmYwMTAyMjogICAg
bW92dCAgIHIxMiwgIzEKICAgIDB4YjZmMDEwMjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDEw
Mjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDEwMmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4
CiAgICAweGI2ZjAxMDJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMTAzMjogICAg
bGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjAxMDM0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2
ZjAxMDM2OiAgICBibmUgICAgMHhiNmYwMTA0MAogICAgMHhiNmYwMTAzODogICAgbW92ICAgIHNw
LCByNwogICAgMHhiNmYwMTAzYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjAxMDNlOiAg
ICBieCAgICAgbHIKICAgIDB4YjZmMDEwNDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2
ZjAxMDQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMTA0ODogICAgc3RyICAgIHI3
LCBbcjZdCiAgICAweGI2ZjAxMDRhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAxMDRjOiAg
ICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwMTA1MDogICAgbW92dCAgIHIzLCAjNDY3NzYK
ICAgIDB4YjZmMDEwNTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwMTA1NjogICAgbW92dyAgIHI2
LCAjNDYxODgKICAgIDB4YjZmMDEwNWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAx
MDVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDEwNjA6ICAgIGJ4ICAgICByMQpHZW5l
cmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2
ZjAxMDgxLCAweGI2ZjAxMTAxKToKICAgIDB4YjZmMDEwODA6ICAgIHB1c2ggICB7cjcsIGxyfQog
ICAgMHhiNmYwMTA4NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwMTA4NjogICAgbW92ICAg
IHIxMiwgIzAKICAgIDB4YjZmMDEwOGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2
ZjAxMDhlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMTA5MjogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDEwOTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMTA5
ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMTA5YTogICAgbGRyICAgIHIxLCBbcjcsICMx
Nl0KICAgIDB4YjZmMDEwOWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjAxMDll
OiAgICBtb3Z3ICAgcjEyLCAjNDM0NQogICAgMHhiNmYwMTBhMjogICAgbW92dCAgIHIxMiwgIzEK
ICAgIDB4YjZmMDEwYTY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDEwYTg6ICAgIG1vdiAgICBs
ciwgcjMKICAgIDB4YjZmMDEwYWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjAxMGFl
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMTBiMjogICAgbGRyICAgIHI2LCBbcjZd
CiAgICAweGI2ZjAxMGI0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjAxMGI2OiAgICBibmUg
ICAgMHhiNmYwMTBjMAogICAgMHhiNmYwMTBiODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYw
MTBiYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjAxMGJlOiAgICBieCAgICAgbHIKICAg
IDB4YjZmMDEwYzA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAxMGM0OiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMTBjODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2
ZjAxMGNhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAxMGNjOiAgICBtb3Z3ICAgcjMsICM2
MzI0OQogICAgMHhiNmYwMTBkMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDEwZDQ6
ICAgIGJseCAgICByMwogICAgMHhiNmYwMTBkNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4
YjZmMDEwZGE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxMGRlOiAgICBsZHIgICAg
cjEsIFtyNl0KICAgIDB4YjZmMDEwZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUg
Zm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjAxMTAxLCAweGI2ZjAx
MTgxKToKICAgIDB4YjZmMDExMDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwMTEwNDog
ICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwMTEwNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4
YjZmMDExMGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjAxMTBlOiAgICBtb3Z3
ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMTExMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMDExMTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMTExODogICAgbW92ICAgIHIw
LCByNwogICAgMHhiNmYwMTExYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDEx
MWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjAxMTFlOiAgICBtb3Z3ICAgcjEy
LCAjMzQyOQogICAgMHhiNmYwMTEyMjogICAgbW92dCAgIHIxMiwgIzEKICAgIDB4YjZmMDExMjY6
ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDExMjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZm
MDExMmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjAxMTJlOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwMTEzMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjAxMTM0
OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjAxMTM2OiAgICBibmUgICAgMHhiNmYwMTE0MAog
ICAgMHhiNmYwMTEzODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwMTEzYTogICAgcG9wICAg
IHtyNywgbHJ9CiAgICAweGI2ZjAxMTNlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDExNDA6ICAg
IG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAxMTQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgMHhiNmYwMTE0ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAxMTRhOiAgICBtb3Yg
ICAgcjAsIHI3CiAgICAweGI2ZjAxMTRjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYw
MTE1MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDExNTQ6ICAgIGJseCAgICByMwog
ICAgMHhiNmYwMTE1NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDExNWE6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxMTVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4
YjZmMDExNjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0
aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjAxMTgxLCAweGI2ZjAxMjAxKToKICAgIDB4YjZm
MDExODA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwMTE4NDogICAgbW92ICAgIHI3LCBz
cAogICAgMHhiNmYwMTE4NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDExOGE6ICAgIHN0
ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjAxMThlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgMHhiNmYwMTE5MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDExOTY6ICAgIHN0
ciAgICByNywgW3I2XQogICAgMHhiNmYwMTE5ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYw
MTE5YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDExOWM6ICAgIGxkciAgICBy
MiwgW3IxLCAjMjBdCiAgICAweGI2ZjAxMTllOiAgICBtb3Z3ICAgcjEyLCAjMTIyOTMKICAgIDB4
YjZmMDExYTI6ICAgIG1vdnQgICByMTIsICMxCiAgICAweGI2ZjAxMWE2OiAgICBibHggICAgcjEy
CiAgICAweGI2ZjAxMWE4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjAxMWFhOiAgICBtb3Z3
ICAgcjYsICM0NjM0OAogICAgMHhiNmYwMTFhZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMDExYjI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwMTFiNDogICAgY21wICAgIHIy
LCAjMAogICAgMHhiNmYwMTFiNjogICAgYm5lICAgIDB4YjZmMDExYzAKICAgIDB4YjZmMDExYjg6
ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDExYmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAg
MHhiNmYwMTFiZTogICAgYnggICAgIGxyCiAgICAweGI2ZjAxMWMwOiAgICBtb3Z3ICAgcjYsICM0
MjEyOAogICAgMHhiNmYwMTFjNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDExYzg6
ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMTFjYTogICAgbW92ICAgIHIwLCByNwogICAg
MHhiNmYwMTFjYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDExZDA6ICAgIG1vdnQg
ICByMywgIzQ2Nzc2CiAgICAweGI2ZjAxMWQ0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDExZDY6
ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjAxMWRhOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwMTFkZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjAxMWUwOiAgICBi
eCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAg
Q29kZSBhdCBbMHhiNmYwMTIwMSwgMHhiNmYwMTI4MSk6CiAgICAweGI2ZjAxMjAwOiAgICBwdXNo
ICAge3I3LCBscn0KICAgIDB4YjZmMDEyMDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDEy
MDY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjAxMjBhOiAgICBzdHIgICAgcjEyLCBbcjcs
ICM4XQogICAgMHhiNmYwMTIwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDEyMTI6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxMjE2OiAgICBzdHIgICAgcjcsIFtyNl0K
ICAgIDB4YjZmMDEyMTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDEyMWE6ICAgIGxkciAg
ICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjAxMjFjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQog
ICAgMHhiNmYwMTIxZTogICAgbW92dyAgIHIxMiwgIzIwOTM3CiAgICAweGI2ZjAxMjIyOiAgICBt
b3Z0ICAgcjEyLCAjMQogICAgMHhiNmYwMTIyNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMTIy
ODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwMTIyYTogICAgbW92dyAgIHI2LCAjNDYzNDgK
ICAgIDB4YjZmMDEyMmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxMjMyOiAgICBs
ZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDEyMzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZm
MDEyMzY6ICAgIGJuZSAgICAweGI2ZjAxMjQwCiAgICAweGI2ZjAxMjM4OiAgICBtb3YgICAgc3As
IHI3CiAgICAweGI2ZjAxMjNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDEyM2U6ICAg
IGJ4ICAgICBscgogICAgMHhiNmYwMTI0MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZm
MDEyNDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxMjQ4OiAgICBzdHIgICAgcjcs
IFtyNl0KICAgIDB4YjZmMDEyNGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDEyNGM6ICAg
IG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjAxMjUwOiAgICBtb3Z0ICAgcjMsICM0Njc3Ngog
ICAgMHhiNmYwMTI1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjAxMjU2OiAgICBtb3Z3ICAgcjYs
ICM0NjE4OAogICAgMHhiNmYwMTI1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDEy
NWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwMTI2MDogICAgYnggICAgIHIxCkdlbmVy
YXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZm
MDEyODEsIDB4YjZmMDEzMDEpOgogICAgMHhiNmYwMTI4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAg
ICAweGI2ZjAxMjg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAxMjg2OiAgICBtb3YgICAg
cjEyLCAjMAogICAgMHhiNmYwMTI4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZm
MDEyOGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAxMjkyOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwMTI5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAxMjk4
OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAxMjlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2
XQogICAgMHhiNmYwMTI5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDEyOWU6
ICAgIG1vdncgICByMTIsICM3ODA1CiAgICAweGI2ZjAxMmEyOiAgICBtb3Z0ICAgcjEyLCAjMQog
ICAgMHhiNmYwMTJhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMTJhODogICAgbW92ICAgIGxy
LCByMwogICAgMHhiNmYwMTJhYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDEyYWU6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxMmIyOiAgICBsZHIgICAgcjYsIFtyNl0K
ICAgIDB4YjZmMDEyYjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDEyYjY6ICAgIGJuZSAg
ICAweGI2ZjAxMmMwCiAgICAweGI2ZjAxMmI4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAx
MmJhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDEyYmU6ICAgIGJ4ICAgICBscgogICAg
MHhiNmYwMTJjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDEyYzQ6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxMmM4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZm
MDEyY2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDEyY2M6ICAgIG1vdncgICByMywgIzYz
MjQ5CiAgICAweGI2ZjAxMmQwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwMTJkNDog
ICAgYmx4ICAgIHIzCiAgICAweGI2ZjAxMmQ2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhi
NmYwMTJkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDEyZGU6ICAgIGxkciAgICBy
MSwgW3I2XQogICAgMHhiNmYwMTJlMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBm
b3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDEzMDEsIDB4YjZmMDEz
ODEpOgogICAgMHhiNmYwMTMwMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjAxMzA0OiAg
ICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAxMzA2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhi
NmYwMTMwYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDEzMGU6ICAgIG1vdncg
ICByNiwgIzQyMTI4CiAgICAweGI2ZjAxMzEyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwMTMxNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAxMzE4OiAgICBtb3YgICAgcjAs
IHI3CiAgICAweGI2ZjAxMzFhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwMTMx
YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDEzMWU6ICAgIG1vdncgICByMTIs
ICMxNjQxCiAgICAweGI2ZjAxMzIyOiAgICBtb3Z0ICAgcjEyLCAjMQogICAgMHhiNmYwMTMyNjog
ICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMTMyODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYw
MTMyYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDEzMmU6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAweGI2ZjAxMzMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDEzMzQ6
ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDEzMzY6ICAgIGJuZSAgICAweGI2ZjAxMzQwCiAg
ICAweGI2ZjAxMzM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAxMzNhOiAgICBwb3AgICAg
e3I3LCBscn0KICAgIDB4YjZmMDEzM2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwMTM0MDogICAg
bW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDEzNDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAweGI2ZjAxMzQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDEzNGE6ICAgIG1vdiAg
ICByMCwgcjcKICAgIDB4YjZmMDEzNGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjAx
MzUwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwMTM1NDogICAgYmx4ICAgIHIzCiAg
ICAweGI2ZjAxMzU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwMTM1YTogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDEzNWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhi
NmYwMTM2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRp
dmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDEzODEsIDB4YjZmMDE0MDEpOgogICAgMHhiNmYw
MTM4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjAxMzg0OiAgICBtb3YgICAgcjcsIHNw
CiAgICAweGI2ZjAxMzg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwMTM4YTogICAgc3Ry
ICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDEzOGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAg
ICAweGI2ZjAxMzkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMTM5NjogICAgc3Ry
ICAgIHI3LCBbcjZdCiAgICAweGI2ZjAxMzk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAx
MzlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwMTM5YzogICAgbGRyICAgIHIy
LCBbcjEsICMyMF0KICAgIDB4YjZmMDEzOWU6ICAgIG1vdncgICByMTIsICM3MTg1CiAgICAweGI2
ZjAxM2EyOiAgICBtb3Z0ICAgcjEyLCAjMQogICAgMHhiNmYwMTNhNjogICAgYmx4ICAgIHIxMgog
ICAgMHhiNmYwMTNhODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwMTNhYTogICAgbW92dyAg
IHI2LCAjNDYzNDgKICAgIDB4YjZmMDEzYWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2
ZjAxM2IyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDEzYjQ6ICAgIGNtcCAgICByMiwg
IzAKICAgIDB4YjZmMDEzYjY6ICAgIGJuZSAgICAweGI2ZjAxM2MwCiAgICAweGI2ZjAxM2I4OiAg
ICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAxM2JhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4
YjZmMDEzYmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwMTNjMDogICAgbW92dyAgIHI2LCAjNDIx
MjgKICAgIDB4YjZmMDEzYzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxM2M4OiAg
ICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDEzY2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4
YjZmMDEzY2M6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjAxM2QwOiAgICBtb3Z0ICAg
cjMsICM0Njc3NgogICAgMHhiNmYwMTNkNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjAxM2Q2OiAg
ICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwMTNkYTogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgIDB4YjZmMDEzZGU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwMTNlMDogICAgYngg
ICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENv
ZGUgYXQgWzB4YjZmMDE0MDEsIDB4YjZmMDE0ODEpOgogICAgMHhiNmYwMTQwMDogICAgcHVzaCAg
IHtyNywgbHJ9CiAgICAweGI2ZjAxNDA0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAxNDA2
OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwMTQwYTogICAgc3RyICAgIHIxMiwgW3I3LCAj
OF0KICAgIDB4YjZmMDE0MGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAxNDEyOiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMTQxNjogICAgc3RyICAgIHI3LCBbcjZdCiAg
ICAweGI2ZjAxNDE4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAxNDFhOiAgICBsZHIgICAg
cjEsIFtyNywgIzE2XQogICAgMHhiNmYwMTQxYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAg
IDB4YjZmMDE0MWU6ICAgIG1vdncgICByMTIsICM1NDAxCiAgICAweGI2ZjAxNDIyOiAgICBtb3Z0
ICAgcjEyLCAjMQogICAgMHhiNmYwMTQyNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMTQyODog
ICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwMTQyYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAg
IDB4YjZmMDE0MmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxNDMyOiAgICBsZHIg
ICAgcjYsIFtyNl0KICAgIDB4YjZmMDE0MzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDE0
MzY6ICAgIGJuZSAgICAweGI2ZjAxNDQwCiAgICAweGI2ZjAxNDM4OiAgICBtb3YgICAgc3AsIHI3
CiAgICAweGI2ZjAxNDNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDE0M2U6ICAgIGJ4
ICAgICBscgogICAgMHhiNmYwMTQ0MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDE0
NDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxNDQ4OiAgICBzdHIgICAgcjcsIFty
Nl0KICAgIDB4YjZmMDE0NGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDE0NGM6ICAgIG1v
dncgICByMywgIzYzMjQ5CiAgICAweGI2ZjAxNDUwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAg
MHhiNmYwMTQ1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjAxNDU2OiAgICBtb3Z3ICAgcjYsICM0
NjE4OAogICAgMHhiNmYwMTQ1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDE0NWU6
ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwMTQ2MDogICAgYnggICAgIHIxCkdlbmVyYXRl
ZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDE0
ODEsIDB4YjZmMDE1MDEpOgogICAgMHhiNmYwMTQ4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAw
eGI2ZjAxNDg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAxNDg2OiAgICBtb3YgICAgcjEy
LCAjMAogICAgMHhiNmYwMTQ4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDE0
OGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAxNDkyOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgMHhiNmYwMTQ5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAxNDk4OiAg
ICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAxNDlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQog
ICAgMHhiNmYwMTQ5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDE0OWU6ICAg
IG1vdncgICByMTIsICMxNzQ5CiAgICAweGI2ZjAxNGEyOiAgICBtb3Z0ICAgcjEyLCAjMQogICAg
MHhiNmYwMTRhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMTRhODogICAgbW92ICAgIGxyLCBy
MwogICAgMHhiNmYwMTRhYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDE0YWU6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxNGIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAg
IDB4YjZmMDE0YjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDE0YjY6ICAgIGJuZSAgICAw
eGI2ZjAxNGMwCiAgICAweGI2ZjAxNGI4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAxNGJh
OiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDE0YmU6ICAgIGJ4ICAgICBscgogICAgMHhi
NmYwMTRjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDE0YzQ6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjAxNGM4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDE0
Y2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDE0Y2M6ICAgIG1vdncgICByMywgIzYzMjQ5
CiAgICAweGI2ZjAxNGQwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwMTRkNDogICAg
Ymx4ICAgIHIzCiAgICAweGI2ZjAxNGQ2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYw
MTRkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDE0ZGU6ICAgIGxkciAgICByMSwg
W3I2XQogICAgMHhiNmYwMTRlMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3Ig
SklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDE1MDEsIDB4YjZmMDE1ODEp
OgogICAgMHhiNmYwMTUwMDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjAxNTA0OiAgICBt
b3YgICAgcjcsIHNwCiAgICAweGI2ZjAxNTA2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYw
MTUwYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDE1MGU6ICAgIG1vdncgICBy
NiwgIzQyMTI4CiAgICAweGI2ZjAxNTEyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYw
MTUxNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAxNTE4OiAgICBtb3YgICAgcjAsIHI3
CiAgICAweGI2ZjAxNTFhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwMTUxYzog
ICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDE1MWU6ICAgIG1vdncgICByMTIsICM1
OTA5CiAgICAweGI2ZjAxNTIyOiAgICBtb3Z0ICAgcjEyLCAjMQogICAgMHhiNmYwMTUyNjogICAg
Ymx4ICAgIHIxMgogICAgMHhiNmYwMTUyODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwMTUy
YTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDE1MmU6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAweGI2ZjAxNTMyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDE1MzQ6ICAg
IGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDE1MzY6ICAgIGJuZSAgICAweGI2ZjAxNTQwCiAgICAw
eGI2ZjAxNTM4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAxNTNhOiAgICBwb3AgICAge3I3
LCBscn0KICAgIDB4YjZmMDE1M2U6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwMTU0MDogICAgbW92
dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDE1NDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAw
eGI2ZjAxNTQ4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDE1NGE6ICAgIG1vdiAgICBy
MCwgcjcKICAgIDB4YjZmMDE1NGM6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjAxNTUw
OiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwMTU1NDogICAgYmx4ICAgIHIzCiAgICAw
eGI2ZjAxNTU2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwMTU1YTogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjZmMDE1NWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYw
MTU2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUg
Y2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDE1ODEsIDB4YjZmMDE2MDEpOgogICAgMHhiNmYwMTU4
MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjAxNTg0OiAgICBtb3YgICAgcjcsIHNwCiAg
ICAweGI2ZjAxNTg2OiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwMTU4YTogICAgc3RyICAg
IHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDE1OGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAw
eGI2ZjAxNTkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMTU5NjogICAgc3RyICAg
IHI3LCBbcjZdCiAgICAweGI2ZjAxNTk4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAxNTlh
OiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAgMHhiNmYwMTU5YzogICAgbGRyICAgIHIyLCBb
cjEsICMyMF0KICAgIDB4YjZmMDE1OWU6ICAgIG1vdncgICByMTIsICM2NDQxCiAgICAweGI2ZjAx
NWEyOiAgICBtb3Z0ICAgcjEyLCAjMQogICAgMHhiNmYwMTVhNjogICAgYmx4ICAgIHIxMgogICAg
MHhiNmYwMTVhODogICAgbW92ICAgIGxyLCByMwogICAgMHhiNmYwMTVhYTogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgIDB4YjZmMDE1YWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAx
NWIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgIDB4YjZmMDE1YjQ6ICAgIGNtcCAgICByMiwgIzAK
ICAgIDB4YjZmMDE1YjY6ICAgIGJuZSAgICAweGI2ZjAxNWMwCiAgICAweGI2ZjAxNWI4OiAgICBt
b3YgICAgc3AsIHI3CiAgICAweGI2ZjAxNWJhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZm
MDE1YmU6ICAgIGJ4ICAgICBscgogICAgMHhiNmYwMTVjMDogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgIDB4YjZmMDE1YzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxNWM4OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDE1Y2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZm
MDE1Y2M6ICAgIG1vdncgICByMywgIzYzMjQ5CiAgICAweGI2ZjAxNWQwOiAgICBtb3Z0ICAgcjMs
ICM0Njc3NgogICAgMHhiNmYwMTVkNDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjAxNWQ2OiAgICBt
b3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYwMTVkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDE1ZGU6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwMTVlMDogICAgYnggICAg
IHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUg
YXQgWzB4YjZmMDE2MDEsIDB4YjZmMDE2ODEpOgogICAgMHhiNmYwMTYwMDogICAgcHVzaCAgIHty
NywgbHJ9CiAgICAweGI2ZjAxNjA0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAxNjA2OiAg
ICBtb3YgICAgcjEyLCAjMAogICAgMHhiNmYwMTYwYTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0K
ICAgIDB4YjZmMDE2MGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAxNjEyOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMTYxNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAw
eGI2ZjAxNjE4OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAxNjFhOiAgICBsZHIgICAgcjEs
IFtyNywgIzE2XQogICAgMHhiNmYwMTYxYzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4
YjZmMDE2MWU6ICAgIG1vdncgICByMTIsICM2NTI2MQogICAgMHhiNmYwMTYyMjogICAgbW92dCAg
IHIxMiwgIzAKICAgIDB4YjZmMDE2MjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDE2Mjg6ICAg
IG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDE2MmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAw
eGI2ZjAxNjJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMTYzMjogICAgbGRyICAg
IHI2LCBbcjZdCiAgICAweGI2ZjAxNjM0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjAxNjM2
OiAgICBibmUgICAgMHhiNmYwMTY0MAogICAgMHhiNmYwMTYzODogICAgbW92ICAgIHNwLCByNwog
ICAgMHhiNmYwMTYzYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjAxNjNlOiAgICBieCAg
ICAgbHIKICAgIDB4YjZmMDE2NDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAxNjQ0
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMTY0ODogICAgc3RyICAgIHI3LCBbcjZd
CiAgICAweGI2ZjAxNjRhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAxNjRjOiAgICBtb3Z3
ICAgcjMsICM2MzI0OQogICAgMHhiNmYwMTY1MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4
YjZmMDE2NTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwMTY1NjogICAgbW92dyAgIHI2LCAjNDYx
ODgKICAgIDB4YjZmMDE2NWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxNjVlOiAg
ICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDE2NjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQg
SklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjAxNjgx
LCAweGI2ZjAxNzAxKToKICAgIDB4YjZmMDE2ODA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhi
NmYwMTY4NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwMTY4NjogICAgbW92ICAgIHIxMiwg
IzAKICAgIDB4YjZmMDE2OGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjAxNjhl
OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMTY5MjogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDE2OTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMTY5ODogICAg
bW92ICAgIHIwLCByNwogICAgMHhiNmYwMTY5YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAg
IDB4YjZmMDE2OWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjAxNjllOiAgICBt
b3Z3ICAgcjEyLCAjMTY3MwogICAgMHhiNmYwMTZhMjogICAgbW92dCAgIHIxMiwgIzEKICAgIDB4
YjZmMDE2YTY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDE2YTg6ICAgIG1vdiAgICBsciwgcjMK
ICAgIDB4YjZmMDE2YWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjAxNmFlOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMTZiMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAw
eGI2ZjAxNmI0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjAxNmI2OiAgICBibmUgICAgMHhi
NmYwMTZjMAogICAgMHhiNmYwMTZiODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwMTZiYTog
ICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjAxNmJlOiAgICBieCAgICAgbHIKICAgIDB4YjZm
MDE2YzA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAxNmM0OiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwMTZjODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAxNmNh
OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAxNmNjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQog
ICAgMHhiNmYwMTZkMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDE2ZDQ6ICAgIGJs
eCAgICByMwogICAgMHhiNmYwMTZkNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDE2
ZGE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxNmRlOiAgICBsZHIgICAgcjEsIFty
Nl0KICAgIDB4YjZmMDE2ZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJ
VCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjAxNzAxLCAweGI2ZjAxNzgxKToK
ICAgIDB4YjZmMDE3MDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwMTcwNDogICAgbW92
ICAgIHI3LCBzcAogICAgMHhiNmYwMTcwNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDE3
MGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjAxNzBlOiAgICBtb3Z3ICAgcjYs
ICM0MjEyOAogICAgMHhiNmYwMTcxMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDE3
MTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMTcxODogICAgbW92ICAgIHIwLCByNwog
ICAgMHhiNmYwMTcxYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDE3MWM6ICAg
IGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjAxNzFlOiAgICBtb3Z3ICAgcjEyLCAjNjUy
ODUKICAgIDB4YjZmMDE3MjI6ICAgIG1vdnQgICByMTIsICMwCiAgICAweGI2ZjAxNzI2OiAgICBi
bHggICAgcjEyCiAgICAweGI2ZjAxNzI4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjAxNzJh
OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgMHhiNmYwMTcyZTogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgIDB4YjZmMDE3MzI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwMTczNDogICAg
Y21wICAgIHIyLCAjMAogICAgMHhiNmYwMTczNjogICAgYm5lICAgIDB4YjZmMDE3NDAKICAgIDB4
YjZmMDE3Mzg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDE3M2E6ICAgIHBvcCAgICB7cjcs
IGxyfQogICAgMHhiNmYwMTczZTogICAgYnggICAgIGxyCiAgICAweGI2ZjAxNzQwOiAgICBtb3Z3
ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMTc0NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4
YjZmMDE3NDg6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMTc0YTogICAgbW92ICAgIHIw
LCByNwogICAgMHhiNmYwMTc0YzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDE3NTA6
ICAgIG1vdnQgICByMywgIzQ2Nzc2CiAgICAweGI2ZjAxNzU0OiAgICBibHggICAgcjMKICAgIDB4
YjZmMDE3NTY6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjAxNzVhOiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgMHhiNmYwMTc1ZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjAx
NzYwOiAgICBieCAgICAgcjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBj
YWxsOgogICAgQ29kZSBhdCBbMHhiNmYwMTc4MSwgMHhiNmYwMTgwMSk6CiAgICAweGI2ZjAxNzgw
OiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDE3ODQ6ICAgIG1vdiAgICByNywgc3AKICAg
IDB4YjZmMDE3ODY6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI2ZjAxNzhhOiAgICBzdHIgICAg
cjEyLCBbcjcsICM4XQogICAgMHhiNmYwMTc4ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4
YjZmMDE3OTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxNzk2OiAgICBzdHIgICAg
cjcsIFtyNl0KICAgIDB4YjZmMDE3OTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDE3OWE6
ICAgIGxkciAgICByMSwgW3I3LCAjMTZdCiAgICAweGI2ZjAxNzljOiAgICBsZHIgICAgcjIsIFty
MSwgIzIwXQogICAgMHhiNmYwMTc5ZTogICAgbW92dyAgIHIxMiwgIzkxODkKICAgIDB4YjZmMDE3
YTI6ICAgIG1vdnQgICByMTIsICMxCiAgICAweGI2ZjAxN2E2OiAgICBibHggICAgcjEyCiAgICAw
eGI2ZjAxN2E4OiAgICBtb3YgICAgbHIsIHIzCiAgICAweGI2ZjAxN2FhOiAgICBtb3Z3ICAgcjYs
ICM0NjM0OAogICAgMHhiNmYwMTdhZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDE3
YjI6ICAgIGxkciAgICByNiwgW3I2XQogICAgMHhiNmYwMTdiNDogICAgY21wICAgIHIyLCAjMAog
ICAgMHhiNmYwMTdiNjogICAgYm5lICAgIDB4YjZmMDE3YzAKICAgIDB4YjZmMDE3Yjg6ICAgIG1v
diAgICBzcCwgcjcKICAgIDB4YjZmMDE3YmE6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYw
MTdiZTogICAgYnggICAgIGxyCiAgICAweGI2ZjAxN2MwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgMHhiNmYwMTdjNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDE3Yzg6ICAgIHN0
ciAgICByNywgW3I2XQogICAgMHhiNmYwMTdjYTogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYw
MTdjYzogICAgbW92dyAgIHIzLCAjNjMyNDkKICAgIDB4YjZmMDE3ZDA6ICAgIG1vdnQgICByMywg
IzQ2Nzc2CiAgICAweGI2ZjAxN2Q0OiAgICBibHggICAgcjMKICAgIDB4YjZmMDE3ZDY6ICAgIG1v
dncgICByNiwgIzQ2MTg4CiAgICAweGI2ZjAxN2RhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwMTdkZTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjAxN2UwOiAgICBieCAgICAg
cjEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBKSVQgQ1RJIG5hdGl2ZSBjYWxsOgogICAgQ29kZSBh
dCBbMHhiNmYwMTgwMSwgMHhiNmYwMTg4MSk6CiAgICAweGI2ZjAxODAwOiAgICBwdXNoICAge3I3
LCBscn0KICAgIDB4YjZmMDE4MDQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDE4MDY6ICAg
IG1vdiAgICByMTIsICMwCiAgICAweGI2ZjAxODBhOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQog
ICAgMHhiNmYwMTgwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDE4MTI6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxODE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4
YjZmMDE4MTg6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDE4MWE6ICAgIGxkciAgICByMSwg
W3I3LCAjMTZdCiAgICAweGI2ZjAxODFjOiAgICBsZHIgICAgcjIsIFtyMSwgIzIwXQogICAgMHhi
NmYwMTgxZTogICAgbW92dyAgIHIxMiwgIzMxNDA1CiAgICAweGI2ZjAxODIyOiAgICBtb3Z0ICAg
cjEyLCAjMQogICAgMHhiNmYwMTgyNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMTgyODogICAg
bW92ICAgIGxyLCByMwogICAgMHhiNmYwMTgyYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4
YjZmMDE4MmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxODMyOiAgICBsZHIgICAg
cjYsIFtyNl0KICAgIDB4YjZmMDE4MzQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDE4MzY6
ICAgIGJuZSAgICAweGI2ZjAxODQwCiAgICAweGI2ZjAxODM4OiAgICBtb3YgICAgc3AsIHI3CiAg
ICAweGI2ZjAxODNhOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDE4M2U6ICAgIGJ4ICAg
ICBscgogICAgMHhiNmYwMTg0MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDE4NDQ6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxODQ4OiAgICBzdHIgICAgcjcsIFtyNl0K
ICAgIDB4YjZmMDE4NGE6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDE4NGM6ICAgIG1vdncg
ICByMywgIzYzMjQ5CiAgICAweGI2ZjAxODUwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhi
NmYwMTg1NDogICAgYmx4ICAgIHIzCiAgICAweGI2ZjAxODU2OiAgICBtb3Z3ICAgcjYsICM0NjE4
OAogICAgMHhiNmYwMTg1YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDE4NWU6ICAg
IGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwMTg2MDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBK
SVQgY29kZSBmb3IgSklUIENUSSBuYXRpdmUgY2FsbDoKICAgIENvZGUgYXQgWzB4YjZmMDE4ODEs
IDB4YjZmMDE5MDEpOgogICAgMHhiNmYwMTg4MDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2
ZjAxODg0OiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAxODg2OiAgICBtb3YgICAgcjEyLCAj
MAogICAgMHhiNmYwMTg4YTogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgIDB4YjZmMDE4OGU6
ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAxODkyOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwMTg5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAxODk4OiAgICBt
b3YgICAgcjAsIHI3CiAgICAweGI2ZjAxODlhOiAgICBsZHIgICAgcjEsIFtyNywgIzE2XQogICAg
MHhiNmYwMTg5YzogICAgbGRyICAgIHIyLCBbcjEsICMyMF0KICAgIDB4YjZmMDE4OWU6ICAgIG1v
dncgICByMTIsICM2NTI5MwogICAgMHhiNmYwMThhMjogICAgbW92dCAgIHIxMiwgIzAKICAgIDB4
YjZmMDE4YTY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDE4YTg6ICAgIG1vdiAgICBsciwgcjMK
ICAgIDB4YjZmMDE4YWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjAxOGFlOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMThiMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAw
eGI2ZjAxOGI0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjAxOGI2OiAgICBibmUgICAgMHhi
NmYwMThjMAogICAgMHhiNmYwMThiODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwMThiYTog
ICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjAxOGJlOiAgICBieCAgICAgbHIKICAgIDB4YjZm
MDE4YzA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAxOGM0OiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgMHhiNmYwMThjODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAxOGNh
OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAxOGNjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQog
ICAgMHhiNmYwMThkMDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDE4ZDQ6ICAgIGJs
eCAgICByMwogICAgMHhiNmYwMThkNjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDE4
ZGE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxOGRlOiAgICBsZHIgICAgcjEsIFty
Nl0KICAgIDB4YjZmMDE4ZTA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJ
VCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjAxOTAxLCAweGI2ZjAxOTgxKToK
ICAgIDB4YjZmMDE5MDA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwMTkwNDogICAgbW92
ICAgIHI3LCBzcAogICAgMHhiNmYwMTkwNjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDE5
MGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjAxOTBlOiAgICBtb3Z3ICAgcjYs
ICM0MjEyOAogICAgMHhiNmYwMTkxMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDE5
MTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMTkxODogICAgbW92ICAgIHIwLCByNwog
ICAgMHhiNmYwMTkxYTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDE5MWM6ICAg
IGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjAxOTFlOiAgICBtb3Z3ICAgcjEyLCAjMzk2
NQogICAgMHhiNmYwMTkyMjogICAgbW92dCAgIHIxMiwgIzEKICAgIDB4YjZmMDE5MjY6ICAgIGJs
eCAgICByMTIKICAgIDB4YjZmMDE5Mjg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDE5MmE6
ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2ZjAxOTJlOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNmYwMTkzMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjAxOTM0OiAgICBj
bXAgICAgcjIsICMwCiAgICAweGI2ZjAxOTM2OiAgICBibmUgICAgMHhiNmYwMTk0MAogICAgMHhi
NmYwMTkzODogICAgbW92ICAgIHNwLCByNwogICAgMHhiNmYwMTkzYTogICAgcG9wICAgIHtyNywg
bHJ9CiAgICAweGI2ZjAxOTNlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDE5NDA6ICAgIG1vdncg
ICByNiwgIzQyMTI4CiAgICAweGI2ZjAxOTQ0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhi
NmYwMTk0ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAxOTRhOiAgICBtb3YgICAgcjAs
IHI3CiAgICAweGI2ZjAxOTRjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwMTk1MDog
ICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZmMDE5NTQ6ICAgIGJseCAgICByMwogICAgMHhi
NmYwMTk1NjogICAgbW92dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDE5NWE6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjAxOTVlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDE5
NjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNh
bGw6CiAgICBDb2RlIGF0IFsweGI2ZjAxOTgxLCAweGI2ZjAxYTAxKToKICAgIDB4YjZmMDE5ODA6
ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwMTk4NDogICAgbW92ICAgIHI3LCBzcAogICAg
MHhiNmYwMTk4NjogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDE5OGE6ICAgIHN0ciAgICBy
MTIsIFtyNywgIzhdCiAgICAweGI2ZjAxOThlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhi
NmYwMTk5MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDE5OTY6ICAgIHN0ciAgICBy
NywgW3I2XQogICAgMHhiNmYwMTk5ODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMTk5YTog
ICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4YjZmMDE5OWM6ICAgIGxkciAgICByMiwgW3Ix
LCAjMjBdCiAgICAweGI2ZjAxOTllOiAgICBtb3Z3ICAgcjEyLCAjMzY2MQogICAgMHhiNmYwMTlh
MjogICAgbW92dCAgIHIxMiwgIzEKICAgIDB4YjZmMDE5YTY6ICAgIGJseCAgICByMTIKICAgIDB4
YjZmMDE5YTg6ICAgIG1vdiAgICBsciwgcjMKICAgIDB4YjZmMDE5YWE6ICAgIG1vdncgICByNiwg
IzQ2MzQ4CiAgICAweGI2ZjAxOWFlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMTli
MjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAweGI2ZjAxOWI0OiAgICBjbXAgICAgcjIsICMwCiAg
ICAweGI2ZjAxOWI2OiAgICBibmUgICAgMHhiNmYwMTljMAogICAgMHhiNmYwMTliODogICAgbW92
ICAgIHNwLCByNwogICAgMHhiNmYwMTliYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjAx
OWJlOiAgICBieCAgICAgbHIKICAgIDB4YjZmMDE5YzA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAg
ICAweGI2ZjAxOWM0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMTljODogICAgc3Ry
ICAgIHI3LCBbcjZdCiAgICAweGI2ZjAxOWNhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAx
OWNjOiAgICBtb3Z3ICAgcjMsICM2MzI0OQogICAgMHhiNmYwMTlkMDogICAgbW92dCAgIHIzLCAj
NDY3NzYKICAgIDB4YjZmMDE5ZDQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwMTlkNjogICAgbW92
dyAgIHI2LCAjNDYxODgKICAgIDB4YjZmMDE5ZGE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAw
eGI2ZjAxOWRlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDE5ZTA6ICAgIGJ4ICAgICBy
MQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0
IFsweGI2ZjAxYTAxLCAweGI2ZjAxYTgxKToKICAgIDB4YjZmMDFhMDA6ICAgIHB1c2ggICB7cjcs
IGxyfQogICAgMHhiNmYwMWEwNDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwMWEwNjogICAg
bW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDFhMGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAg
ICAweGI2ZjAxYTBlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMWExMjogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDFhMTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhi
NmYwMWExODogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMWExYTogICAgbGRyICAgIHIxLCBb
cjcsICMxNl0KICAgIDB4YjZmMDFhMWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2
ZjAxYTFlOiAgICBtb3Z3ICAgcjEyLCAjMjI2OQogICAgMHhiNmYwMWEyMjogICAgbW92dCAgIHIx
MiwgIzEKICAgIDB4YjZmMDFhMjY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDFhMjg6ICAgIG1v
diAgICBsciwgcjMKICAgIDB4YjZmMDFhMmE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAweGI2
ZjAxYTJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMWEzMjogICAgbGRyICAgIHI2
LCBbcjZdCiAgICAweGI2ZjAxYTM0OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI2ZjAxYTM2OiAg
ICBibmUgICAgMHhiNmYwMWE0MAogICAgMHhiNmYwMWEzODogICAgbW92ICAgIHNwLCByNwogICAg
MHhiNmYwMWEzYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjAxYTNlOiAgICBieCAgICAg
bHIKICAgIDB4YjZmMDFhNDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAxYTQ0OiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMWE0ODogICAgc3RyICAgIHI3LCBbcjZdCiAg
ICAweGI2ZjAxYTRhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAxYTRjOiAgICBtb3Z3ICAg
cjMsICM2MzI0OQogICAgMHhiNmYwMWE1MDogICAgbW92dCAgIHIzLCAjNDY3NzYKICAgIDB4YjZm
MDFhNTQ6ICAgIGJseCAgICByMwogICAgMHhiNmYwMWE1NjogICAgbW92dyAgIHI2LCAjNDYxODgK
ICAgIDB4YjZmMDFhNWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxYTVlOiAgICBs
ZHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDFhNjA6ICAgIGJ4ICAgICByMQpHZW5lcmF0ZWQgSklU
IGNvZGUgZm9yIEpJVCBDVEkgbmF0aXZlIGNhbGw6CiAgICBDb2RlIGF0IFsweGI2ZjAxYTgxLCAw
eGI2ZjAxYjAxKToKICAgIDB4YjZmMDFhODA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYw
MWE4NDogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwMWE4NjogICAgbW92ICAgIHIxMiwgIzAK
ICAgIDB4YjZmMDFhOGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI2ZjAxYThlOiAg
ICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMWE5MjogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgIDB4YjZmMDFhOTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMWE5ODogICAgbW92
ICAgIHIwLCByNwogICAgMHhiNmYwMWE5YTogICAgbGRyICAgIHIxLCBbcjcsICMxNl0KICAgIDB4
YjZmMDFhOWM6ICAgIGxkciAgICByMiwgW3IxLCAjMjBdCiAgICAweGI2ZjAxYTllOiAgICBtb3Z3
ICAgcjEyLCAjMjA5MDUKICAgIDB4YjZmMDFhYTI6ICAgIG1vdnQgICByMTIsICM0NjgwMQogICAg
MHhiNmYwMWFhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMWFhODogICAgbW92ICAgIGxyLCBy
MwogICAgMHhiNmYwMWFhYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgIDB4YjZmMDFhYWU6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAxYWIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAg
IDB4YjZmMDFhYjQ6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjZmMDFhYjY6ICAgIGJuZSAgICAw
eGI2ZjAxYWMwCiAgICAweGI2ZjAxYWI4OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAxYWJh
OiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDFhYmU6ICAgIGJ4ICAgICBscgogICAgMHhi
NmYwMWFjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDFhYzQ6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI2ZjAxYWM4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjZmMDFh
Y2E6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjZmMDFhY2M6ICAgIG1vdncgICByMywgIzYzMjQ5
CiAgICAweGI2ZjAxYWQwOiAgICBtb3Z0ICAgcjMsICM0Njc3NgogICAgMHhiNmYwMWFkNDogICAg
Ymx4ICAgIHIzCiAgICAweGI2ZjAxYWQ2OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgMHhiNmYw
MWFkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDFhZGU6ICAgIGxkciAgICByMSwg
W3I2XQogICAgMHhiNmYwMWFlMDogICAgYnggICAgIHIxCkdlbmVyYXRlZCBKSVQgY29kZSBmb3Ig
TExJbnQgcHJvZ3JhbSBwcm9sb2d1ZSB0aHVuazoKICAgIENvZGUgYXQgWzB4YjZmMDdmZTEsIDB4
YjZmMDgwMDEpOgogICAgMHhiNmYwN2ZlMDogICAgbW92dyAgIHIwLCAjMzE5MTEKICAgIDB4YjZm
MDdmZTQ6ICAgIG1vdnQgICByMCwgIzQ2NzgwCiAgICAweGI2ZjA3ZmU4OiAgICBieCAgICAgcjAK
R2VuZXJhdGVkIEpJVCBjb2RlIGZvciBMTEludCBmdW5jdGlvbiBmb3IgY2FsbCBwcm9sb2d1ZSB0
aHVuazoKICAgIENvZGUgYXQgWzB4YjZmMDc5YTEsIDB4YjZmMDc5YzEpOgogICAgMHhiNmYwNzlh
MDogICAgbW92dyAgIHIwLCAjMzIzMDEKICAgIDB4YjZmMDc5YTQ6ICAgIG1vdnQgICByMCwgIzQ2
NzgwCiAgICAweGI2ZjA3OWE4OiAgICBieCAgICAgcjAKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBM
TEludCBmdW5jdGlvbiBmb3IgY2FsbCB3aXRoIGFyaXR5IGNoZWNrIHByb2xvZ3VlIHRodW5rOgog
ICAgQ29kZSBhdCBbMHhiNmYwNzI0MSwgMHhiNmYwNzI2MSk6CiAgICAweGI2ZjA3MjQwOiAgICBt
b3Z3ICAgcjAsICMzMjY5OQogICAgMHhiNmYwNzI0NDogICAgbW92dCAgIHIwLCAjNDY3ODAKICAg
IDB4YjZmMDcyNDg6ICAgIGJ4ICAgICByMApHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIExMSW50IGV2
YWwgcHJvbG9ndWUgdGh1bms6CiAgICBDb2RlIGF0IFsweGI2ZjBhNTIxLCAweGI2ZjBhNTQxKToK
ICAgIDB4YjZmMGE1MjA6ICAgIG1vdncgICByMCwgIzMyMTcxCiAgICAweGI2ZjBhNTI0OiAgICBt
b3Z0ICAgcjAsICM0Njc4MAogICAgMHhiNmYwYTUyODogICAgYnggICAgIHIwCkdlbmVyYXRlZCBK
SVQgY29kZSBmb3IgZml4dXAgYXJpdHk6CiAgICBDb2RlIGF0IFsweGI2ZjAxYjAxLCAweGI2ZjAx
YjgxKToKICAgIDB4YjZmMDFiMDA6ICAgIG1vdiAgICByMywgcjcKICAgIDB4YjZmMDFiMDI6ICAg
IGxkciAgICByMiwgW3I3LCAjMjRdCiAgICAweGI2ZjAxYjA0OiAgICBhZGRzICAgcjIsIHIyLCAj
NAogICAgMHhiNmYwMWIwNjogICAgbW92ICAgIHIxLCByMAogICAgMHhiNmYwMWIwODogICAgYW5k
ICAgIHIxLCByMSwgIzEKICAgIDB4YjZmMDFiMGM6ICAgIHRzdCAgICByMSwgcjEKICAgIDB4YjZm
MDFiMGU6ICAgIGJlcSAgICAweGI2ZjAxYjM0CiAgICAweGI2ZjAxYjEwOiAgICBtb3YgICAgcjks
ICMwCiAgICAweGI2ZjAxYjE0OiAgICBzdHIgICAgcjksIFtyNywgcjIsIGxzbCAjM10KICAgIDB4
YjZmMDFiMTg6ICAgIG12biAgICByOSwgIzMKICAgIDB4YjZmMDFiMWM6ICAgIGFkZHMgICByNiwg
cjcsICM0CiAgICAweGI2ZjAxYjFlOiAgICBzdHIgICAgcjksIFtyNiwgcjIsIGxzbCAjM10KICAg
IDB4YjZmMDFiMjI6ICAgIGFkZHMgICByMiwgcjIsICMxCiAgICAweGI2ZjAxYjI0OiAgICBzdWJz
ICAgcjEsIHIxLCAjMQogICAgMHhiNmYwMWIyNjogICAgYm5lICAgIDB4YjZmMDFkMTAKICAgIDB4
YjZmMDFiMjg6ICAgIG12biAgICByMTIsICMxCiAgICAweGI2ZjAxYjJjOiAgICBhbmQgICAgcjAs
IHIwLCByMTIKICAgIDB4YjZmMDFiMzA6ICAgIHRzdCAgICByMCwgcjAKICAgIDB4YjZmMDFiMzI6
ICAgIGJlcSAgICAweGI2ZjAxYjc0CiAgICAweGI2ZjAxYjM0OiAgICByc2IgICAgcjAsIHIwLCAj
MAogICAgMHhiNmYwMWIzNjogICAgbGRyICAgIHI5LCBbcjNdCiAgICAweGI2ZjAxYjNhOiAgICBz
dHIgICAgcjksIFtyMywgcjAsIGxzbCAjM10KICAgIDB4YjZmMDFiM2U6ICAgIGxkciAgICByOSwg
W3IzLCAjNF0KICAgIDB4YjZmMDFiNDI6ICAgIGFkZHMgICByNiwgcjMsICM0CiAgICAweGI2ZjAx
YjQ0OiAgICBzdHIgICAgcjksIFtyNiwgcjAsIGxzbCAjM10KICAgIDB4YjZmMDFiNDg6ICAgIGFk
ZHMgICByMywgIzgKICAgIDB4YjZmMDFiNGE6ICAgIHN1YnMgICByMiwgcjIsICMxCiAgICAweGI2
ZjAxYjRjOiAgICBibmUgICAgMHhiNmYwMWQzNgogICAgMHhiNmYwMWI0ZTogICAgbW92ICAgIHIy
LCByMAogICAgMHhiNmYwMWI1MDogICAgbW92ICAgIHI5LCAjMAogICAgMHhiNmYwMWI1NDogICAg
c3RyICAgIHI5LCBbcjMsIHIwLCBsc2wgIzNdCiAgICAweGI2ZjAxYjU4OiAgICBtdm4gICAgcjks
ICMzCiAgICAweGI2ZjAxYjVjOiAgICBhZGRzICAgcjYsIHIzLCAjNAogICAgMHhiNmYwMWI1ZTog
ICAgc3RyICAgIHI5LCBbcjYsIHIwLCBsc2wgIzNdCiAgICAweGI2ZjAxYjYyOiAgICBhZGRzICAg
cjMsICM4CiAgICAweGI2ZjAxYjY0OiAgICBhZGRzICAgcjIsIHIyLCAjMQogICAgMHhiNmYwMWI2
NjogICAgYm5lICAgIDB4YjZmMDFkNTAKICAgIDB4YjZmMDFiNjg6ICAgIG1vdiAgICByOSwgcjAK
ICAgIDB4YjZmMDFiNmE6ICAgIGxzbCAgICByOSwgcjksICMzCiAgICAweGI2ZjAxYjZlOiAgICBh
ZGQgICAgcjcsIHI5CiAgICAweGI2ZjAxYjcwOiAgICBtb3YgICAgc3AsIHNwCiAgICAweGI2ZjAx
YjcyOiAgICBhZGQgICAgc3AsIHI5CiAgICAweGI2ZjAxYjc0OiAgICBieCAgICAgbHIKR2VuZXJh
dGVkIEJhc2VsaW5lIEpJVCBjb2RlIGZvciBpc0lkZW50aWNhbCNFYTFyUUQ6WzB4YjQ3OTM2OTAt
PjB4YjQ3ZDVhNDAsIEJhc2VsaW5lRnVuY3Rpb25DYWxsLCA5NV0sIGluc3RydWN0aW9uIGNvdW50
ID0gOTUKICAgU291cmNlOiBmdW5jdGlvbiBpc0lkZW50aWNhbChyZXN1bHQsIGV4cGVjdGVkKSB7
IGlmIChleHBlY3RlZCA9PT0gZXhwZWN0ZWQpIHsgaWYgKHJlc3VsdCAhPT0gZXhwZWN0ZWQpIHJl
dHVybiBmYWxzZTsgaWYgKCFleHBlY3RlZCAmJiAxIC8gZXhwZWN0ZWQgPT09IC1JbmZpbml0eSAm
JiAxIC8gcmVzdWx0ICE9PSAtSW5maW5pdHkpIHJldHVybiBmYWxzZTsgcmV0dXJuIHRydWU7IH0g
cmV0dXJuIHJlc3VsdCAhPT0gcmVzdWx0OyB9CiAgIENvZGUgYXQgWzB4YjZmMDMwNjAsIDB4YjZm
MDNiZGMpOgogICAgICAgIDB4YjZmMDMwNjA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgICAgIDB4
YjZmMDMwNjQ6ICAgIG1vdiAgICByNywgc3AKICAgICAgICAweGI2ZjAzMDY2OiAgICBtb3Z3ICAg
cjEyLCAjMTM5NjgKICAgICAgICAweGI2ZjAzMDZhOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAg
ICAgICAweGI2ZjAzMDZlOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgICAgIDB4YjZmMDMw
NzI6ICAgIGxkciAgICByMCwgW3I3LCAjMzJdCiAgICAgICAgMHhiNmYwMzA3NDogICAgbGRyICAg
IHIxLCBbcjcsICMzNl0KICAgICAgICAweGI2ZjAzMDc2OiAgICBtb3Z3ICAgcjYsICMzMzkzNgog
ICAgICAgIDB4YjZmMDMwN2E6ICAgIG1vdnQgICByNiwgIzQ2MjY5CiAgICAgICAgMHhiNmYwMzA3
ZTogICAgc3RyICAgIHIwLCBbcjZdCiAgICAgICAgMHhiNmYwMzA4MDogICAgbW92dyAgIHI2LCAj
MzM5NDAKICAgICAgICAweGI2ZjAzMDg0OiAgICBtb3Z0ICAgcjYsICM0NjI2OQogICAgICAgIDB4
YjZmMDMwODg6ICAgIHN0ciAgICByMSwgW3I2XQogICAgICAgIDB4YjZmMDMwOGE6ICAgIGxkciAg
ICByMCwgW3I3LCAjNDBdCiAgICAgICAgMHhiNmYwMzA4YzogICAgbGRyICAgIHIxLCBbcjcsICM0
NF0KICAgICAgICAweGI2ZjAzMDhlOiAgICBtb3Z3ICAgcjYsICMzMzk2OAogICAgICAgIDB4YjZm
MDMwOTI6ICAgIG1vdnQgICByNiwgIzQ2MjY5CiAgICAgICAgMHhiNmYwMzA5NjogICAgc3RyICAg
IHIwLCBbcjZdCiAgICAgICAgMHhiNmYwMzA5ODogICAgbW92dyAgIHI2LCAjMzM5NzIKICAgICAg
ICAweGI2ZjAzMDljOiAgICBtb3Z0ICAgcjYsICM0NjI2OQogICAgICAgIDB4YjZmMDMwYTA6ICAg
IHN0ciAgICByMSwgW3I2XQogICAgICAgIDB4YjZmMDMwYTI6ICAgIGxkciAgICByMCwgW3I3LCAj
NDhdCiAgICAgICAgMHhiNmYwMzBhNDogICAgbGRyICAgIHIxLCBbcjcsICM1Ml0KICAgICAgICAw
eGI2ZjAzMGE2OiAgICBtb3Z3ICAgcjYsICMzNDAwMAogICAgICAgIDB4YjZmMDMwYWE6ICAgIG1v
dnQgICByNiwgIzQ2MjY5CiAgICAgICAgMHhiNmYwMzBhZTogICAgc3RyICAgIHIwLCBbcjZdCiAg
ICAgICAgMHhiNmYwMzBiMDogICAgbW92dyAgIHI2LCAjMzQwMDQKICAgICAgICAweGI2ZjAzMGI0
OiAgICBtb3Z0ICAgcjYsICM0NjI2OQogICAgICAgIDB4YjZmMDMwYjg6ICAgIHN0ciAgICByMSwg
W3I2XQogICAgICAgIDB4YjZmMDMwYmE6ICAgIG12biAgICByMTIsICM4NwogICAgICAgIDB4YjZm
MDMwYmU6ICAgIGFkZCAgICByMSwgcjcsIHIxMgogICAgICAgIDB4YjZmMDMwYzI6ICAgIG1vdncg
ICByNiwgIzQ2MzQwCiAgICAgICAgMHhiNmYwMzBjNjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
ICAgICAweGI2ZjAzMGNhOiAgICBsZHIgICAgcjEyLCBbcjZdCiAgICAgICAgMHhiNmYwMzBjZTog
ICAgY21wICAgIHIxMiwgcjEKICAgICAgICAweGI2ZjAzMGQyOiAgICBiaGkgICAgMHhiNmYwM2Fl
NAogICAgICAgIDB4YjZmMDMwZDY6ICAgIG1vdiAgICBzcCwgcjEKICAgIFsgICAwXSBlbnRlciAg
ICAgICAgICAgICAKICAgICAgICAweGI2ZjAzMGQ4OiAgICBtb3Z3ICAgcjYsICMxNDI0OAogICAg
ICAgIDB4YjZmMDMwZGM6ICAgIG1vdnQgICByNiwgIzQ2MjAxCiAgICAgICAgMHhiNmYwMzBlMDog
ICAgbGRyICAgIHIxMiwgW3I2XQogICAgICAgIDB4YjZmMDMwZTQ6ICAgIGFkZCAgICByMTIsIHIx
MiwgIzE1CiAgICAgICAgMHhiNmYwMzBlODogICAgc3RyICAgIHIxMiwgW3I2XQogICAgICAgIDB4
YjZmMDMwZWM6ICAgIGJtaSAgICAweGI2ZjAzMTJhCiAgICAgICAgMHhiNmYwMzBlZTogICAgbW92
cyAgIHIxLCAjMAogICAgICAgIDB4YjZmMDMwZjA6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAw
eGI2ZjAzMGYyOiAgICBtb3Z3ICAgcjEyLCAjMTIKICAgICAgICAweGI2ZjAzMGY2OiAgICBtb3Z0
ICAgcjEyLCAjNDYyNjYKICAgICAgICAweGI2ZjAzMGZhOiAgICBzdHIgICAgcjEyLCBbcjcsICMy
OF0KICAgICAgICAweGI2ZjAzMGZlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjZm
MDMxMDI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNmYwMzEwNjogICAgc3RyICAg
IHI3LCBbcjZdCiAgICAgICAgMHhiNmYwMzEwODogICAgbW92dyAgIHIxMiwgIzIzMTczCiAgICAg
ICAgMHhiNmYwMzEwYzogICAgbW92dCAgIHIxMiwgIzQ2Nzc3CiAgICAgICAgMHhiNmYwMzExMDog
ICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjZmMDMxMTI6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAg
ICAgICAgMHhiNmYwMzExNjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI2ZjAzMTFh
OiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI2ZjAzMTFjOiAgICBjbXAgICAgcjIsICMw
CiAgICAgICAgMHhiNmYwMzExZTogICAgYm5lICAgIDB4YjZmMDNiYmMKICAgICAgICAweGI2ZjAz
MTIyOiAgICB0c3QgICAgcjAsIHIwCiAgICAgICAgMHhiNmYwMzEyNDogICAgYmVxICAgIDB4YjZm
MDMxMmEKICAgICAgICAweGI2ZjAzMTI2OiAgICBtb3YgICAgc3AsIHIxCiAgICAgICAgMHhiNmYw
MzEyODogICAgYnggICAgIHIwCiAgICAgICAgMHhiNmYwMzEyYTogICAgbW92ICAgIHIxMiwgIzAK
ICAgICAgICAweGI2ZjAzMTJlOiAgICBzdHIgICAgcjEyLCBbcjcsICMtOF0KICAgICAgICAweGI2
ZjAzMTMyOiAgICBtdm4gICAgcjEyLCAjMwogICAgICAgIDB4YjZmMDMxMzY6ICAgIHN0ciAgICBy
MTIsIFtyNywgIy00XQogICAgICAgIDB4YjZmMDMxM2E6ICAgIG1vdiAgICByMTIsICMwCiAgICAg
ICAgMHhiNmYwMzEzZTogICAgc3RyICAgIHIxMiwgW3I3LCAjLTE2XQogICAgICAgIDB4YjZmMDMx
NDI6ICAgIG12biAgICByMTIsICMzCiAgICAgICAgMHhiNmYwMzE0NjogICAgc3RyICAgIHIxMiwg
W3I3LCAjLTEyXQogICAgICAgIDB4YjZmMDMxNGE6ICAgIG1vdiAgICByMTIsICMwCiAgICAgICAg
MHhiNmYwMzE0ZTogICAgc3RyICAgIHIxMiwgW3I3LCAjLTI0XQogICAgICAgIDB4YjZmMDMxNTI6
ICAgIG12biAgICByMTIsICMzCiAgICAgICAgMHhiNmYwMzE1NjogICAgc3RyICAgIHIxMiwgW3I3
LCAjLTIwXQogICAgICAgIDB4YjZmMDMxNWE6ICAgIG1vdncgICByMTIsICMxMgogICAgICAgIDB4
YjZmMDMxNWU6ICAgIG1vdnQgICByMTIsICM0NjI2NgogICAgICAgIDB4YjZmMDMxNjI6ICAgIHN0
ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjZmMDMxNjY6ICAgIG1vdncgICByNiwgIzQy
MTI4CiAgICAgICAgMHhiNmYwMzE2YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI2
ZjAzMTZlOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI2ZjAzMTcwOiAgICBtb3YgICAg
cjAsIHI3CiAgICAgICAgMHhiNmYwMzE3MjogICAgbW92cyAgIHIxLCAjOAogICAgICAgIDB4YjZm
MDMxNzQ6ICAgIG1vdnQgICByMSwgIzQ2MjY2CiAgICAgICAgMHhiNmYwMzE3ODogICAgbW92dyAg
IHIxMiwgIzE5NjY5CiAgICAgICAgMHhiNmYwMzE3YzogICAgbW92dCAgIHIxMiwgIzQ2NzkzCiAg
ICAgICAgMHhiNmYwMzE4MDogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjZmMDMxODI6ICAgIG1v
dncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNmYwMzE4NjogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgICAgICAweGI2ZjAzMThhOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI2ZjAzMThj
OiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNmYwMzE4ZTogICAgYm5lICAgIDB4YjZmMDNi
YmMKICAgIFsgICAxXSBnZXRfc2NvcGUgICAgICAgICBsb2MwCiAgICAgICAgMHhiNmYwMzE5Mjog
ICAgbGRyICAgIHIwLCBbcjcsICMxNl0KICAgICAgICAweGI2ZjAzMTk0OiAgICBsZHIgICAgcjAs
IFtyMCwgIzE2XQogICAgICAgIDB4YjZmMDMxOTY6ICAgIHN0ciAgICByMCwgW3I3LCAjLThdCiAg
ICAgICAgMHhiNmYwMzE5YTogICAgbXZuICAgIHIxMiwgIzQKICAgICAgICAweGI2ZjAzMTllOiAg
ICBzdHIgICAgcjEyLCBbcjcsICMtNF0KICAgIFsgICAzXSBtb3YgICAgICAgICAgICAgICBsb2Mx
LCBsb2MwCiAgICAgICAgMHhiNmYwMzFhMjogICAgbGRyICAgIHIwLCBbcjcsICMtOF0KICAgICAg
ICAweGI2ZjAzMWE2OiAgICBsZHIgICAgcjEsIFtyNywgIy00XQogICAgICAgIDB4YjZmMDMxYWE6
ICAgIHN0ciAgICByMCwgW3I3LCAjLTE2XQogICAgICAgIDB4YjZmMDMxYWU6ICAgIHN0ciAgICBy
MSwgW3I3LCAjLTEyXQogICAgWyAgIDZdIHN0cmljdGVxICAgICAgICAgIGxvYzMsIGFyZzIsIGFy
ZzIKICAgICAgICAweGI2ZjAzMWIyOiAgICBsZHIgICAgcjIsIFtyNywgIzQ4XQogICAgICAgIDB4
YjZmMDMxYjQ6ICAgIGxkciAgICByMywgW3I3LCAjNTJdCiAgICAgICAgMHhiNmYwMzFiNjogICAg
bGRyICAgIHIwLCBbcjcsICM0OF0KICAgICAgICAweGI2ZjAzMWI4OiAgICBsZHIgICAgcjEsIFty
NywgIzUyXQogICAgICAgIDB4YjZmMDMxYmE6ICAgIGNtcCAgICByMSwgcjMKICAgICAgICAweGI2
ZjAzMWJjOiAgICBibmUgICAgMHhiNmYwMzU4YwogICAgICAgIDB4YjZmMDMxYzA6ICAgIGNtbiAg
ICByMSwgIzcKICAgICAgICAweGI2ZjAzMWM0OiAgICBibG8gICAgMHhiNmYwMzU4YwogICAgICAg
IDB4YjZmMDMxYzg6ICAgIGNtbiAgICByMSwgIzUKICAgICAgICAweGI2ZjAzMWNjOiAgICBibmUg
ICAgMHhiNmYwMzFkYwogICAgICAgIDB4YjZmMDMxY2U6ICAgIGxkcmIgICByNiwgW3IwLCAjNV0K
ICAgICAgICAweGI2ZjAzMWQwOiAgICBjbXAgICAgcjIsICMyMAogICAgICAgIDB4YjZmMDMxZDI6
ICAgIGJocyAgICAweGI2ZjAzMWRjCiAgICAgICAgMHhiNmYwMzFkNDogICAgbGRyYiAgIHI2LCBb
cjIsICM1XQogICAgICAgIDB4YjZmMDMxZDY6ICAgIGNtcCAgICByMiwgIzIwCiAgICAgICAgMHhi
NmYwMzFkODogICAgYmxvICAgIDB4YjZmMDM1OGMKICAgICAgICAweGI2ZjAzMWRjOiAgICBjbXAg
ICAgcjAsIHIyCiAgICAgICAgMHhiNmYwMzFkZTogICAgaXRlICAgIGVxCiAgICAgICAgMHhiNmYw
MzFlMDogICAgbW92ZXEgIHIwLCAjMQogICAgICAgIDB4YjZmMDMxZTI6ICAgIG1vdm5lICByMCwg
IzAKICAgICAgICAweGI2ZjAzMWU0OiAgICBzdHIgICAgcjAsIFtyNywgIy0zMl0KICAgICAgICAw
eGI2ZjAzMWU4OiAgICBtdm4gICAgcjEyLCAjMQogICAgICAgIDB4YjZmMDMxZWM6ICAgIHN0ciAg
ICByMTIsIFtyNywgIy0yOF0KICAgIFsgIDEwXSBqZmFsc2UgICAgICAgICAgICBsb2MzLCA3OSgt
Pjg5KQogICAgICAgIDB4YjZmMDMxZjA6ICAgIGxkciAgICByMCwgW3I3LCAjLTMyXQogICAgICAg
IDB4YjZmMDMxZjQ6ICAgIGxkciAgICByMSwgW3I3LCAjLTI4XQogICAgICAgIDB4YjZmMDMxZjg6
ICAgIGNtbiAgICByMSwgIzIKICAgICAgICAweGI2ZjAzMWZjOiAgICBibG8gICAgMHhiNmYwMzVl
MgogICAgICAgIDB4YjZmMDMyMDA6ICAgIHRzdCAgICByMCwgcjAKICAgICAgICAweGI2ZjAzMjAy
OiAgICBiZXEgICAgMHhiNmYwMzUzZQogICAgWyAgMTNdIG5zdHJpY3RlcSAgICAgICAgIGxvYzMs
IGFyZzEsIGFyZzIKICAgICAgICAweGI2ZjAzMjA2OiAgICBsZHIgICAgcjIsIFtyNywgIzQ4XQog
ICAgICAgIDB4YjZmMDMyMDg6ICAgIGxkciAgICByMywgW3I3LCAjNTJdCiAgICAgICAgMHhiNmYw
MzIwYTogICAgbGRyICAgIHIwLCBbcjcsICM0MF0KICAgICAgICAweGI2ZjAzMjBjOiAgICBsZHIg
ICAgcjEsIFtyNywgIzQ0XQogICAgICAgIDB4YjZmMDMyMGU6ICAgIGNtcCAgICByMSwgcjMKICAg
ICAgICAweGI2ZjAzMjEwOiAgICBibmUgICAgMHhiNmYwMzY1NgogICAgICAgIDB4YjZmMDMyMTQ6
ICAgIGNtbiAgICByMSwgIzcKICAgICAgICAweGI2ZjAzMjE4OiAgICBibG8gICAgMHhiNmYwMzY1
NgogICAgICAgIDB4YjZmMDMyMWM6ICAgIGNtbiAgICByMSwgIzUKICAgICAgICAweGI2ZjAzMjIw
OiAgICBibmUgICAgMHhiNmYwMzIzMAogICAgICAgIDB4YjZmMDMyMjI6ICAgIGxkcmIgICByNiwg
W3IwLCAjNV0KICAgICAgICAweGI2ZjAzMjI0OiAgICBjbXAgICAgcjIsICMyMAogICAgICAgIDB4
YjZmMDMyMjY6ICAgIGJocyAgICAweGI2ZjAzMjMwCiAgICAgICAgMHhiNmYwMzIyODogICAgbGRy
YiAgIHI2LCBbcjIsICM1XQogICAgICAgIDB4YjZmMDMyMmE6ICAgIGNtcCAgICByMiwgIzIwCiAg
ICAgICAgMHhiNmYwMzIyYzogICAgYmxvICAgIDB4YjZmMDM2NTYKICAgICAgICAweGI2ZjAzMjMw
OiAgICBjbXAgICAgcjAsIHIyCiAgICAgICAgMHhiNmYwMzIzMjogICAgaXRlICAgIG5lCiAgICAg
ICAgMHhiNmYwMzIzNDogICAgbW92bmUgIHIwLCAjMQogICAgICAgIDB4YjZmMDMyMzY6ICAgIG1v
dmVxICByMCwgIzAKICAgICAgICAweGI2ZjAzMjM4OiAgICBzdHIgICAgcjAsIFtyNywgIy0zMl0K
ICAgICAgICAweGI2ZjAzMjNjOiAgICBtdm4gICAgcjEyLCAjMQogICAgICAgIDB4YjZmMDMyNDA6
ICAgIHN0ciAgICByMTIsIFtyNywgIy0yOF0KICAgIFsgIDE3XSBqZmFsc2UgICAgICAgICAgICBs
b2MzLCA1KC0+MjIpCiAgICAgICAgMHhiNmYwMzI0NDogICAgbGRyICAgIHIwLCBbcjcsICMtMzJd
CiAgICAgICAgMHhiNmYwMzI0ODogICAgbGRyICAgIHIxLCBbcjcsICMtMjhdCiAgICAgICAgMHhi
NmYwMzI0YzogICAgY21uICAgIHIxLCAjMgogICAgICAgIDB4YjZmMDMyNTA6ICAgIGJsbyAgICAw
eGI2ZjAzNmFjCiAgICAgICAgMHhiNmYwMzI1NDogICAgdHN0ICAgIHIwLCByMAogICAgICAgIDB4
YjZmMDMyNTY6ICAgIGJlcSAgICAweGI2ZjAzMjY2CiAgICBbICAyMF0gcmV0ICAgICAgICAgICAg
ICAgRmFsc2UoY29uc3QxKQogICAgICAgIDB4YjZmMDMyNTg6ICAgIG1vdnMgICByMCwgIzAKICAg
ICAgICAweGI2ZjAzMjVhOiAgICBtdm4gICAgcjEsICMxCiAgICAgICAgMHhiNmYwMzI1ZTogICAg
bW92ICAgIHNwLCByNwogICAgICAgIDB4YjZmMDMyNjA6ICAgIHBvcCAgICB7cjcsIGxyfQogICAg
ICAgIDB4YjZmMDMyNjQ6ICAgIGJ4ICAgICBscgogICAgWyAgMjJdIGp0cnVlICAgICAgICAgICAg
IGFyZzIsIDY1KC0+ODcpCiAgICAgICAgMHhiNmYwMzI2NjogICAgbGRyICAgIHIwLCBbcjcsICM0
OF0KICAgICAgICAweGI2ZjAzMjY4OiAgICBsZHIgICAgcjEsIFtyNywgIzUyXQogICAgICAgIDB4
YjZmMDMyNmE6ICAgIGNtbiAgICByMSwgIzIKICAgICAgICAweGI2ZjAzMjZlOiAgICBibG8gICAg
MHhiNmYwMzcyMgogICAgICAgIDB4YjZmMDMyNzI6ICAgIHRzdCAgICByMCwgcjAKICAgICAgICAw
eGI2ZjAzMjc0OiAgICBibmUgICAgMHhiNmYwMzUzMAogICAgWyAgMjVdIGRpdiAgICAgICAgICAg
ICAgIGxvYzMsIEludDMyOiAxKGNvbnN0MiksIGFyZzIgICAgcmVzdWx0czogSW50MzIKICAgICAg
ICAweGI2ZjAzMjc4OiAgICBsZHIgICAgcjIsIFtyNywgIzQ4XQogICAgICAgIDB4YjZmMDMyN2E6
ICAgIGxkciAgICByMywgW3I3LCAjNTJdCiAgICAgICAgMHhiNmYwMzI3YzogICAgbW92ICAgIHI4
LCAjMQogICAgICAgIDB4YjZmMDMyODA6ICAgIHZtb3YgICBkNywgcjgsIHI4CiAgICAgICAgMHhi
NmYwMzI4NDogICAgdmN2dC5mNjQuczMyIGQwLCBzMTQKICAgICAgICAweGI2ZjAzMjg4OiAgICBh
ZGR3ICAgcjgsIHIzLCAjMQogICAgICAgIDB4YjZmMDMyOGM6ICAgIGNtbiAgICByOCwgIzYKICAg
ICAgICAweGI2ZjAzMjkwOiAgICBiaHMgICAgMHhiNmYwMzc5OAogICAgICAgIDB4YjZmMDMyOTQ6
ICAgIGNtcCAgICByMywgIzQyOTQ5NjcyOTUKICAgICAgICAweGI2ZjAzMjk4OiAgICBibmUgICAg
MHhiNmYwMzJhNAogICAgICAgIDB4YjZmMDMyOWE6ICAgIHZtb3YgICBkNywgcjIsIHIyCiAgICAg
ICAgMHhiNmYwMzI5ZTogICAgdmN2dC5mNjQuczMyIGQxLCBzMTQKICAgICAgICAweGI2ZjAzMmEy
OiAgICBiICAgICAgMHhiNmYwMzJhOAogICAgICAgIDB4YjZmMDMyYTQ6ICAgIHZtb3YgICBkMSwg
cjMsIHIzCiAgICAgICAgMHhiNmYwMzJhODogICAgLmxvbmcgIGVlODAwYjAxCiAgICAgICAgMHhi
NmYwMzJhYzogICAgdmN2dC5zMzIuZjY0IHMxNCwgZDAKICAgICAgICAweGI2ZjAzMmIwOiAgICB2
bW92ICAgczE0LCByOAogICAgICAgIDB4YjZmMDMyYjQ6ICAgIHZjdnQuZjY0LnMzMiBkNywgczE0
CiAgICAgICAgMHhiNmYwMzJiODogICAgdmNtcC5mNjQgZDAsIGQ3CiAgICAgICAgMHhiNmYwMzJi
YzogICAgdm1ycyAgIGFwc3JfbnpjdiwgZnBzY3IKICAgICAgICAweGI2ZjAzMmMwOiAgICBibmUg
ICAgMHhiNmYwMzJkMAogICAgICAgIDB4YjZmMDMyYzI6ICAgIHRzdCAgICByOCwgcjgKICAgICAg
ICAweGI2ZjAzMmM2OiAgICBiZXEgICAgMHhiNmYwMzJkMAogICAgICAgIDB4YjZmMDMyYzg6ICAg
IG1vdiAgICByMCwgcjgKICAgICAgICAweGI2ZjAzMmNhOiAgICBtb3YgICAgcjEsICM0Mjk0OTY3
Mjk1CiAgICAgICAgMHhiNmYwMzJjZTogICAgYiAgICAgIDB4YjZmMDMyZjAKICAgICAgICAweGI2
ZjAzMmQwOiAgICBtb3Z3ICAgcjYsICM4NzA4CiAgICAgICAgMHhiNmYwMzJkNDogICAgbW92dCAg
IHI2LCAjNDYyNjQKICAgICAgICAweGI2ZjAzMmQ4OiAgICBsZHIgICAgcjEyLCBbcjZdCiAgICAg
ICAgMHhiNmYwMzJkYzogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgICAgIDB4YjZmMDMyZTA6
ICAgIG1vdncgICByNiwgIzg3MDgKICAgICAgICAweGI2ZjAzMmU0OiAgICBtb3Z0ICAgcjYsICM0
NjI2NAogICAgICAgIDB4YjZmMDMyZTg6ICAgIHN0ciAgICByMTIsIFtyNl0KICAgICAgICAweGI2
ZjAzMmVjOiAgICB2bW92ICAgcjEsIHIxLCBkMAogICAgICAgIDB4YjZmMDMyZjA6ICAgIHN0ciAg
ICByMCwgW3I3LCAjLTMyXQogICAgICAgIDB4YjZmMDMyZjQ6ICAgIHN0ciAgICByMSwgW3I3LCAj
LTI4XQogICAgWyAgMzBdIHJlc29sdmVfc2NvcGUgICAgIGxvYzQsIGxvYzAsIEluZmluaXR5KEBp
ZDApLCA8R2xvYmFsVmFyPiwgMiwgMHhiNDdlNzhjMAogICAgICAgIDB4YjZmMDMyZjg6ICAgIG12
biAgICByMSwgIzQKICAgICAgICAweGI2ZjAzMmZjOiAgICBtb3Z3ICAgcjAsICMzMDkxMgogICAg
ICAgIDB4YjZmMDMzMDA6ICAgIG1vdnQgICByMCwgIzQ2MjA2CiAgICAgICAgMHhiNmYwMzMwNDog
ICAgc3RyICAgIHIwLCBbcjcsICMtNDBdCiAgICAgICAgMHhiNmYwMzMwODogICAgc3RyICAgIHIx
LCBbcjcsICMtMzZdCiAgICBbICAzN10gZ2V0X2Zyb21fc2NvcGUgICAgbG9jNSwgbG9jNCwgSW5m
aW5pdHkoQGlkMCksIDIwNDk8VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFZhcnxOb3RJbml0aWFsaXph
dGlvbj4sIC0xMjYyNDk5ODMyICAgIHByZWRpY3RpbmcgTm9uaW50YXNkb3VibGUKICAgICAgICAw
eGI2ZjAzMzBjOiAgICBtb3Z3ICAgcjYsICM1MTIxMgogICAgICAgIDB4YjZmMDMzMTA6ICAgIG1v
dnQgICByNiwgIzQ2MjcxCiAgICAgICAgMHhiNmYwMzMxNDogICAgbGRyICAgIHIxLCBbcjZdCiAg
ICAgICAgMHhiNmYwMzMxNjogICAgbW92dyAgIHI2LCAjNTEyMDgKICAgICAgICAweGI2ZjAzMzFh
OiAgICBtb3Z0ICAgcjYsICM0NjI3MQogICAgICAgIDB4YjZmMDMzMWU6ICAgIGxkciAgICByMCwg
W3I2XQogICAgICAgIDB4YjZmMDMzMjA6ICAgIG1vdncgICByNiwgIzQ5NjgwCiAgICAgICAgMHhi
NmYwMzMyNDogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgICAgICAweGI2ZjAzMzI4OiAgICBzdHIg
ICAgcjAsIFtyNl0KICAgICAgICAweGI2ZjAzMzJhOiAgICBtb3Z3ICAgcjYsICM0OTY4NAogICAg
ICAgIDB4YjZmMDMzMmU6ICAgIG1vdnQgICByNiwgIzQ2MjY0CiAgICAgICAgMHhiNmYwMzMzMjog
ICAgc3RyICAgIHIxLCBbcjZdCiAgICAgICAgMHhiNmYwMzMzNDogICAgc3RyICAgIHIwLCBbcjcs
ICMtNDhdCiAgICAgICAgMHhiNmYwMzMzODogICAgc3RyICAgIHIxLCBbcjcsICMtNDRdCiAgICBb
ICA0NV0gbmVnYXRlICAgICAgICAgICAgbG9jNiwgbG9jNQogICAgICAgIDB4YjZmMDMzM2M6ICAg
IGxkciAgICByMCwgW3I3LCAjLTQ4XQogICAgICAgIDB4YjZmMDMzNDA6ICAgIGxkciAgICByMSwg
W3I3LCAjLTQ0XQogICAgICAgIDB4YjZmMDMzNDQ6ICAgIGNtcCAgICByMSwgIzQyOTQ5NjcyOTUK
ICAgICAgICAweGI2ZjAzMzQ4OiAgICBibmUgICAgMHhiNmYwMzM1YQogICAgICAgIDB4YjZmMDMz
NGE6ICAgIG12biAgICByMTIsICMyMTQ3NDgzNjQ4CiAgICAgICAgMHhiNmYwMzM0ZTogICAgdHN0
ICAgIHIwLCByMTIKICAgICAgICAweGI2ZjAzMzUyOiAgICBiZXEgICAgMHhiNmYwMzdlZQogICAg
ICAgIDB4YjZmMDMzNTY6ICAgIHJzYiAgICByMCwgcjAsICMwCiAgICAgICAgMHhiNmYwMzM1ODog
ICAgYiAgICAgIDB4YjZmMDMzNmEKICAgICAgICAweGI2ZjAzMzVhOiAgICBhZGR3ICAgcjgsIHIx
LCAjMQogICAgICAgIDB4YjZmMDMzNWU6ICAgIGNtbiAgICByOCwgIzYKICAgICAgICAweGI2ZjAz
MzYyOiAgICBiaHMgICAgMHhiNmYwMzdlZQogICAgICAgIDB4YjZmMDMzNjY6ICAgIGVvciAgICBy
MSwgcjEsICMyMTQ3NDgzNjQ4CiAgICAgICAgMHhiNmYwMzM2YTogICAgc3RyICAgIHIwLCBbcjcs
ICMtNTZdCiAgICAgICAgMHhiNmYwMzM2ZTogICAgc3RyICAgIHIxLCBbcjcsICMtNTJdCiAgICBb
ICA0OF0gc3RyaWN0ZXEgICAgICAgICAgbG9jMywgbG9jMywgbG9jNgogICAgICAgIDB4YjZmMDMz
NzI6ICAgIGxkciAgICByMiwgW3I3LCAjLTU2XQogICAgICAgIDB4YjZmMDMzNzY6ICAgIGxkciAg
ICByMywgW3I3LCAjLTUyXQogICAgICAgIDB4YjZmMDMzN2E6ICAgIGxkciAgICByMCwgW3I3LCAj
LTMyXQogICAgICAgIDB4YjZmMDMzN2U6ICAgIGxkciAgICByMSwgW3I3LCAjLTI4XQogICAgICAg
IDB4YjZmMDMzODI6ICAgIGNtcCAgICByMSwgcjMKICAgICAgICAweGI2ZjAzMzg0OiAgICBibmUg
ICAgMHhiNmYwMzg0NAogICAgICAgIDB4YjZmMDMzODg6ICAgIGNtbiAgICByMSwgIzcKICAgICAg
ICAweGI2ZjAzMzhjOiAgICBibG8gICAgMHhiNmYwMzg0NAogICAgICAgIDB4YjZmMDMzOTA6ICAg
IGNtbiAgICByMSwgIzUKICAgICAgICAweGI2ZjAzMzk0OiAgICBibmUgICAgMHhiNmYwMzNhNAog
ICAgICAgIDB4YjZmMDMzOTY6ICAgIGxkcmIgICByNiwgW3IwLCAjNV0KICAgICAgICAweGI2ZjAz
Mzk4OiAgICBjbXAgICAgcjIsICMyMAogICAgICAgIDB4YjZmMDMzOWE6ICAgIGJocyAgICAweGI2
ZjAzM2E0CiAgICAgICAgMHhiNmYwMzM5YzogICAgbGRyYiAgIHI2LCBbcjIsICM1XQogICAgICAg
IDB4YjZmMDMzOWU6ICAgIGNtcCAgICByMiwgIzIwCiAgICAgICAgMHhiNmYwMzNhMDogICAgYmxv
ICAgIDB4YjZmMDM4NDQKICAgICAgICAweGI2ZjAzM2E0OiAgICBjbXAgICAgcjAsIHIyCiAgICAg
ICAgMHhiNmYwMzNhNjogICAgaXRlICAgIGVxCiAgICAgICAgMHhiNmYwMzNhODogICAgbW92ZXEg
IHIwLCAjMQogICAgICAgIDB4YjZmMDMzYWE6ICAgIG1vdm5lICByMCwgIzAKICAgICAgICAweGI2
ZjAzM2FjOiAgICBzdHIgICAgcjAsIFtyNywgIy0zMl0KICAgICAgICAweGI2ZjAzM2IwOiAgICBt
dm4gICAgcjEyLCAjMQogICAgICAgIDB4YjZmMDMzYjQ6ICAgIHN0ciAgICByMTIsIFtyNywgIy0y
OF0KICAgIFsgIDUyXSBqZmFsc2UgICAgICAgICAgICBsb2MzLCAzNSgtPjg3KQogICAgICAgIDB4
YjZmMDMzYjg6ICAgIGxkciAgICByMCwgW3I3LCAjLTMyXQogICAgICAgIDB4YjZmMDMzYmM6ICAg
IGxkciAgICByMSwgW3I3LCAjLTI4XQogICAgICAgIDB4YjZmMDMzYzA6ICAgIGNtbiAgICByMSwg
IzIKICAgICAgICAweGI2ZjAzM2M0OiAgICBibG8gICAgMHhiNmYwMzg5YQogICAgICAgIDB4YjZm
MDMzYzg6ICAgIHRzdCAgICByMCwgcjAKICAgICAgICAweGI2ZjAzM2NhOiAgICBiZXEgICAgMHhi
NmYwMzUzMAogICAgWyAgNTVdIGRpdiAgICAgICAgICAgICAgIGxvYzMsIEludDMyOiAxKGNvbnN0
MiksIGFyZzEgICAgcmVzdWx0czogSW50MzIKICAgICAgICAweGI2ZjAzM2NlOiAgICBsZHIgICAg
cjIsIFtyNywgIzQwXQogICAgICAgIDB4YjZmMDMzZDA6ICAgIGxkciAgICByMywgW3I3LCAjNDRd
CiAgICAgICAgMHhiNmYwMzNkMjogICAgbW92ICAgIHI4LCAjMQogICAgICAgIDB4YjZmMDMzZDY6
ICAgIHZtb3YgICBkNywgcjgsIHI4CiAgICAgICAgMHhiNmYwMzNkYTogICAgdmN2dC5mNjQuczMy
IGQwLCBzMTQKICAgICAgICAweGI2ZjAzM2RlOiAgICBhZGR3ICAgcjgsIHIzLCAjMQogICAgICAg
IDB4YjZmMDMzZTI6ICAgIGNtbiAgICByOCwgIzYKICAgICAgICAweGI2ZjAzM2U2OiAgICBiaHMg
ICAgMHhiNmYwMzkxMAogICAgICAgIDB4YjZmMDMzZWE6ICAgIGNtcCAgICByMywgIzQyOTQ5Njcy
OTUKICAgICAgICAweGI2ZjAzM2VlOiAgICBibmUgICAgMHhiNmYwMzNmYQogICAgICAgIDB4YjZm
MDMzZjA6ICAgIHZtb3YgICBkNywgcjIsIHIyCiAgICAgICAgMHhiNmYwMzNmNDogICAgdmN2dC5m
NjQuczMyIGQxLCBzMTQKICAgICAgICAweGI2ZjAzM2Y4OiAgICBiICAgICAgMHhiNmYwMzNmZQog
ICAgICAgIDB4YjZmMDMzZmE6ICAgIHZtb3YgICBkMSwgcjMsIHIzCiAgICAgICAgMHhiNmYwMzNm
ZTogICAgLmxvbmcgIGVlODAwYjAxCiAgICAgICAgMHhiNmYwMzQwMjogICAgdmN2dC5zMzIuZjY0
IHMxNCwgZDAKICAgICAgICAweGI2ZjAzNDA2OiAgICB2bW92ICAgczE0LCByOAogICAgICAgIDB4
YjZmMDM0MGE6ICAgIHZjdnQuZjY0LnMzMiBkNywgczE0CiAgICAgICAgMHhiNmYwMzQwZTogICAg
dmNtcC5mNjQgZDAsIGQ3CiAgICAgICAgMHhiNmYwMzQxMjogICAgdm1ycyAgIGFwc3Jfbnpjdiwg
ZnBzY3IKICAgICAgICAweGI2ZjAzNDE2OiAgICBibmUgICAgMHhiNmYwMzQyNgogICAgICAgIDB4
YjZmMDM0MTg6ICAgIHRzdCAgICByOCwgcjgKICAgICAgICAweGI2ZjAzNDFjOiAgICBiZXEgICAg
MHhiNmYwMzQyNgogICAgICAgIDB4YjZmMDM0MWU6ICAgIG1vdiAgICByMCwgcjgKICAgICAgICAw
eGI2ZjAzNDIwOiAgICBtb3YgICAgcjEsICM0Mjk0OTY3Mjk1CiAgICAgICAgMHhiNmYwMzQyNDog
ICAgYiAgICAgIDB4YjZmMDM0NDYKICAgICAgICAweGI2ZjAzNDI2OiAgICBtb3Z3ICAgcjYsICM4
NzE2CiAgICAgICAgMHhiNmYwMzQyYTogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgICAgICAweGI2
ZjAzNDJlOiAgICBsZHIgICAgcjEyLCBbcjZdCiAgICAgICAgMHhiNmYwMzQzMjogICAgYWRkdyAg
IHIxMiwgcjEyLCAjMQogICAgICAgIDB4YjZmMDM0MzY6ICAgIG1vdncgICByNiwgIzg3MTYKICAg
ICAgICAweGI2ZjAzNDNhOiAgICBtb3Z0ICAgcjYsICM0NjI2NAogICAgICAgIDB4YjZmMDM0M2U6
ICAgIHN0ciAgICByMTIsIFtyNl0KICAgICAgICAweGI2ZjAzNDQyOiAgICB2bW92ICAgcjEsIHIx
LCBkMAogICAgICAgIDB4YjZmMDM0NDY6ICAgIHN0ciAgICByMCwgW3I3LCAjLTMyXQogICAgICAg
IDB4YjZmMDM0NGE6ICAgIHN0ciAgICByMSwgW3I3LCAjLTI4XQogICAgWyAgNjBdIHJlc29sdmVf
c2NvcGUgICAgIGxvYzQsIGxvYzAsIEluZmluaXR5KEBpZDApLCA8R2xvYmFsVmFyPiwgMiwgMHhi
NDdlNzhjMAogICAgICAgIDB4YjZmMDM0NGU6ICAgIG12biAgICByMSwgIzQKICAgICAgICAweGI2
ZjAzNDUyOiAgICBtb3Z3ICAgcjAsICMzMDkxMgogICAgICAgIDB4YjZmMDM0NTY6ICAgIG1vdnQg
ICByMCwgIzQ2MjA2CiAgICAgICAgMHhiNmYwMzQ1YTogICAgc3RyICAgIHIwLCBbcjcsICMtNDBd
CiAgICAgICAgMHhiNmYwMzQ1ZTogICAgc3RyICAgIHIxLCBbcjcsICMtMzZdCiAgICBbICA2N10g
Z2V0X2Zyb21fc2NvcGUgICAgbG9jNSwgbG9jNCwgSW5maW5pdHkoQGlkMCksIDIwNDk8VGhyb3dJ
Zk5vdEZvdW5kfEdsb2JhbFZhcnxOb3RJbml0aWFsaXphdGlvbj4sIC0xMjYyNDk5ODMyICAgIHBy
ZWRpY3RpbmcgTm9uZQogICAgICAgIDB4YjZmMDM0NjI6ICAgIG1vdncgICByNiwgIzUxMjEyCiAg
ICAgICAgMHhiNmYwMzQ2NjogICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI2ZjAzNDZh
OiAgICBsZHIgICAgcjEsIFtyNl0KICAgICAgICAweGI2ZjAzNDZjOiAgICBtb3Z3ICAgcjYsICM1
MTIwOAogICAgICAgIDB4YjZmMDM0NzA6ICAgIG1vdnQgICByNiwgIzQ2MjcxCiAgICAgICAgMHhi
NmYwMzQ3NDogICAgbGRyICAgIHIwLCBbcjZdCiAgICAgICAgMHhiNmYwMzQ3NjogICAgbW92dyAg
IHI2LCAjNDk3MTIKICAgICAgICAweGI2ZjAzNDdhOiAgICBtb3Z0ICAgcjYsICM0NjI2NAogICAg
ICAgIDB4YjZmMDM0N2U6ICAgIHN0ciAgICByMCwgW3I2XQogICAgICAgIDB4YjZmMDM0ODA6ICAg
IG1vdncgICByNiwgIzQ5NzE2CiAgICAgICAgMHhiNmYwMzQ4NDogICAgbW92dCAgIHI2LCAjNDYy
NjQKICAgICAgICAweGI2ZjAzNDg4OiAgICBzdHIgICAgcjEsIFtyNl0KICAgICAgICAweGI2ZjAz
NDhhOiAgICBzdHIgICAgcjAsIFtyNywgIy00OF0KICAgICAgICAweGI2ZjAzNDhlOiAgICBzdHIg
ICAgcjEsIFtyNywgIy00NF0KICAgIFsgIDc1XSBuZWdhdGUgICAgICAgICAgICBsb2M2LCBsb2M1
CiAgICAgICAgMHhiNmYwMzQ5MjogICAgbGRyICAgIHIwLCBbcjcsICMtNDhdCiAgICAgICAgMHhi
NmYwMzQ5NjogICAgbGRyICAgIHIxLCBbcjcsICMtNDRdCiAgICAgICAgMHhiNmYwMzQ5YTogICAg
Y21wICAgIHIxLCAjNDI5NDk2NzI5NQogICAgICAgIDB4YjZmMDM0OWU6ICAgIGJuZSAgICAweGI2
ZjAzNGIwCiAgICAgICAgMHhiNmYwMzRhMDogICAgbXZuICAgIHIxMiwgIzIxNDc0ODM2NDgKICAg
ICAgICAweGI2ZjAzNGE0OiAgICB0c3QgICAgcjAsIHIxMgogICAgICAgIDB4YjZmMDM0YTg6ICAg
IGJlcSAgICAweGI2ZjAzOTY2CiAgICAgICAgMHhiNmYwMzRhYzogICAgcnNiICAgIHIwLCByMCwg
IzAKICAgICAgICAweGI2ZjAzNGFlOiAgICBiICAgICAgMHhiNmYwMzRjMAogICAgICAgIDB4YjZm
MDM0YjA6ICAgIGFkZHcgICByOCwgcjEsICMxCiAgICAgICAgMHhiNmYwMzRiNDogICAgY21uICAg
IHI4LCAjNgogICAgICAgIDB4YjZmMDM0Yjg6ICAgIGJocyAgICAweGI2ZjAzOTY2CiAgICAgICAg
MHhiNmYwMzRiYzogICAgZW9yICAgIHIxLCByMSwgIzIxNDc0ODM2NDgKICAgICAgICAweGI2ZjAz
NGMwOiAgICBzdHIgICAgcjAsIFtyNywgIy01Nl0KICAgICAgICAweGI2ZjAzNGM0OiAgICBzdHIg
ICAgcjEsIFtyNywgIy01Ml0KICAgIFsgIDc4XSBuc3RyaWN0ZXEgICAgICAgICBsb2MzLCBsb2Mz
LCBsb2M2CiAgICAgICAgMHhiNmYwMzRjODogICAgbGRyICAgIHIyLCBbcjcsICMtNTZdCiAgICAg
ICAgMHhiNmYwMzRjYzogICAgbGRyICAgIHIzLCBbcjcsICMtNTJdCiAgICAgICAgMHhiNmYwMzRk
MDogICAgbGRyICAgIHIwLCBbcjcsICMtMzJdCiAgICAgICAgMHhiNmYwMzRkNDogICAgbGRyICAg
IHIxLCBbcjcsICMtMjhdCiAgICAgICAgMHhiNmYwMzRkODogICAgY21wICAgIHIxLCByMwogICAg
ICAgIDB4YjZmMDM0ZGE6ICAgIGJuZSAgICAweGI2ZjAzOWJlCiAgICAgICAgMHhiNmYwMzRkZTog
ICAgY21uICAgIHIxLCAjNwogICAgICAgIDB4YjZmMDM0ZTI6ICAgIGJsbyAgICAweGI2ZjAzOWJl
CiAgICAgICAgMHhiNmYwMzRlNjogICAgY21uICAgIHIxLCAjNQogICAgICAgIDB4YjZmMDM0ZWE6
ICAgIGJuZSAgICAweGI2ZjAzNGZhCiAgICAgICAgMHhiNmYwMzRlYzogICAgbGRyYiAgIHI2LCBb
cjAsICM1XQogICAgICAgIDB4YjZmMDM0ZWU6ICAgIGNtcCAgICByMiwgIzIwCiAgICAgICAgMHhi
NmYwMzRmMDogICAgYmhzICAgIDB4YjZmMDM0ZmEKICAgICAgICAweGI2ZjAzNGYyOiAgICBsZHJi
ICAgcjYsIFtyMiwgIzVdCiAgICAgICAgMHhiNmYwMzRmNDogICAgY21wICAgIHIyLCAjMjAKICAg
ICAgICAweGI2ZjAzNGY2OiAgICBibG8gICAgMHhiNmYwMzliZQogICAgICAgIDB4YjZmMDM0ZmE6
ICAgIGNtcCAgICByMCwgcjIKICAgICAgICAweGI2ZjAzNGZjOiAgICBpdGUgICAgbmUKICAgICAg
ICAweGI2ZjAzNGZlOiAgICBtb3ZuZSAgcjAsICMxCiAgICAgICAgMHhiNmYwMzUwMDogICAgbW92
ZXEgIHIwLCAjMAogICAgICAgIDB4YjZmMDM1MDI6ICAgIHN0ciAgICByMCwgW3I3LCAjLTMyXQog
ICAgICAgIDB4YjZmMDM1MDY6ICAgIG12biAgICByMTIsICMxCiAgICAgICAgMHhiNmYwMzUwYTog
ICAgc3RyICAgIHIxMiwgW3I3LCAjLTI4XQogICAgWyAgODJdIGpmYWxzZSAgICAgICAgICAgIGxv
YzMsIDUoLT44NykKICAgICAgICAweGI2ZjAzNTBlOiAgICBsZHIgICAgcjAsIFtyNywgIy0zMl0K
ICAgICAgICAweGI2ZjAzNTEyOiAgICBsZHIgICAgcjEsIFtyNywgIy0yOF0KICAgICAgICAweGI2
ZjAzNTE2OiAgICBjbW4gICAgcjEsICMyCiAgICAgICAgMHhiNmYwMzUxYTogICAgYmxvICAgIDB4
YjZmMDNhMTYKICAgICAgICAweGI2ZjAzNTFlOiAgICB0c3QgICAgcjAsIHIwCiAgICAgICAgMHhi
NmYwMzUyMDogICAgYmVxICAgIDB4YjZmMDM1MzAKICAgIFsgIDg1XSByZXQgICAgICAgICAgICAg
ICBGYWxzZShjb25zdDEpCiAgICAgICAgMHhiNmYwMzUyMjogICAgbW92cyAgIHIwLCAjMAogICAg
ICAgIDB4YjZmMDM1MjQ6ICAgIG12biAgICByMSwgIzEKICAgICAgICAweGI2ZjAzNTI4OiAgICBt
b3YgICAgc3AsIHI3CiAgICAgICAgMHhiNmYwMzUyYTogICAgcG9wICAgIHtyNywgbHJ9CiAgICAg
ICAgMHhiNmYwMzUyZTogICAgYnggICAgIGxyCiAgICBbICA4N10gcmV0ICAgICAgICAgICAgICAg
VHJ1ZShjb25zdDMpCiAgICAgICAgMHhiNmYwMzUzMDogICAgbW92cyAgIHIwLCAjMQogICAgICAg
IDB4YjZmMDM1MzI6ICAgIG12biAgICByMSwgIzEKICAgICAgICAweGI2ZjAzNTM2OiAgICBtb3Yg
ICAgc3AsIHI3CiAgICAgICAgMHhiNmYwMzUzODogICAgcG9wICAgIHtyNywgbHJ9CiAgICAgICAg
MHhiNmYwMzUzYzogICAgYnggICAgIGxyCiAgICBbICA4OV0gbnN0cmljdGVxICAgICAgICAgbG9j
MywgYXJnMSwgYXJnMQogICAgICAgIDB4YjZmMDM1M2U6ICAgIGxkciAgICByMiwgW3I3LCAjNDBd
CiAgICAgICAgMHhiNmYwMzU0MDogICAgbGRyICAgIHIzLCBbcjcsICM0NF0KICAgICAgICAweGI2
ZjAzNTQyOiAgICBsZHIgICAgcjAsIFtyNywgIzQwXQogICAgICAgIDB4YjZmMDM1NDQ6ICAgIGxk
ciAgICByMSwgW3I3LCAjNDRdCiAgICAgICAgMHhiNmYwMzU0NjogICAgY21wICAgIHIxLCByMwog
ICAgICAgIDB4YjZmMDM1NDg6ICAgIGJuZSAgICAweGI2ZjAzYThjCiAgICAgICAgMHhiNmYwMzU0
YzogICAgY21uICAgIHIxLCAjNwogICAgICAgIDB4YjZmMDM1NTA6ICAgIGJsbyAgICAweGI2ZjAz
YThjCiAgICAgICAgMHhiNmYwMzU1NDogICAgY21uICAgIHIxLCAjNQogICAgICAgIDB4YjZmMDM1
NTg6ICAgIGJuZSAgICAweGI2ZjAzNTY4CiAgICAgICAgMHhiNmYwMzU1YTogICAgbGRyYiAgIHI2
LCBbcjAsICM1XQogICAgICAgIDB4YjZmMDM1NWM6ICAgIGNtcCAgICByMiwgIzIwCiAgICAgICAg
MHhiNmYwMzU1ZTogICAgYmhzICAgIDB4YjZmMDM1NjgKICAgICAgICAweGI2ZjAzNTYwOiAgICBs
ZHJiICAgcjYsIFtyMiwgIzVdCiAgICAgICAgMHhiNmYwMzU2MjogICAgY21wICAgIHIyLCAjMjAK
ICAgICAgICAweGI2ZjAzNTY0OiAgICBibG8gICAgMHhiNmYwM2E4YwogICAgICAgIDB4YjZmMDM1
Njg6ICAgIGNtcCAgICByMCwgcjIKICAgICAgICAweGI2ZjAzNTZhOiAgICBpdGUgICAgbmUKICAg
ICAgICAweGI2ZjAzNTZjOiAgICBtb3ZuZSAgcjAsICMxCiAgICAgICAgMHhiNmYwMzU2ZTogICAg
bW92ZXEgIHIwLCAjMAogICAgICAgIDB4YjZmMDM1NzA6ICAgIHN0ciAgICByMCwgW3I3LCAjLTMy
XQogICAgICAgIDB4YjZmMDM1NzQ6ICAgIG12biAgICByMTIsICMxCiAgICAgICAgMHhiNmYwMzU3
ODogICAgc3RyICAgIHIxMiwgW3I3LCAjLTI4XQogICAgWyAgOTNdIHJldCAgICAgICAgICAgICAg
IGxvYzMKICAgICAgICAweGI2ZjAzNTdjOiAgICBsZHIgICAgcjAsIFtyNywgIy0zMl0KICAgICAg
ICAweGI2ZjAzNTgwOiAgICBsZHIgICAgcjEsIFtyNywgIy0yOF0KICAgICAgICAweGI2ZjAzNTg0
OiAgICBtb3YgICAgc3AsIHI3CiAgICAgICAgMHhiNmYwMzU4NjogICAgcG9wICAgIHtyNywgbHJ9
CiAgICAgICAgMHhiNmYwMzU4YTogICAgYnggICAgIGxyCiAgICAoRW5kIE9mIE1haW4gUGF0aCkK
ICAgIChTKSBbICAgNl0gc3RyaWN0ZXEgICAgICAgICAgbG9jMywgYXJnMiwgYXJnMgogICAgICAg
IDB4YjZmMDM1OGM6ICAgIG1vdncgICByMTIsICMzNgogICAgICAgIDB4YjZmMDM1OTA6ICAgIG1v
dnQgICByMTIsICM0NjI2NgogICAgICAgIDB4YjZmMDM1OTQ6ICAgIHN0ciAgICByMTIsIFtyNywg
IzI4XQogICAgICAgIDB4YjZmMDM1OTg6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhi
NmYwMzU5YzogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI2ZjAzNWEwOiAgICBzdHIg
ICAgcjcsIFtyNl0KICAgICAgICAweGI2ZjAzNWEyOiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAg
MHhiNmYwMzVhNDogICAgbW92cyAgIHIxLCAjMzIKICAgICAgICAweGI2ZjAzNWE2OiAgICBtb3Z0
ICAgcjEsICM0NjI2NgogICAgICAgIDB4YjZmMDM1YWE6ICAgIG1vdncgICByMTIsICM2MjUzCiAg
ICAgICAgMHhiNmYwMzVhZTogICAgbW92dCAgIHIxMiwgIzQ2NzkzCiAgICAgICAgMHhiNmYwMzVi
MjogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjZmMDM1YjQ6ICAgIG1vdncgICByNiwgIzQ2MzQ4
CiAgICAgICAgMHhiNmYwMzViODogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI2ZjAz
NWJjOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI2ZjAzNWJlOiAgICBjbXAgICAgcjIs
ICMwCiAgICAgICAgMHhiNmYwMzVjMDogICAgYm5lICAgIDB4YjZmMDNiYmMKICAgICAgICAweGI2
ZjAzNWM0OiAgICBtb3Z3ICAgcjYsICM4OTAwCiAgICAgICAgMHhiNmYwMzVjODogICAgbW92dCAg
IHI2LCAjNDYyNjQKICAgICAgICAweGI2ZjAzNWNjOiAgICBsZHIgICAgcjEyLCBbcjZdCiAgICAg
ICAgMHhiNmYwMzVkMDogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgICAgIDB4YjZmMDM1ZDQ6
ICAgIG1vdncgICByNiwgIzg5MDAKICAgICAgICAweGI2ZjAzNWQ4OiAgICBtb3Z0ICAgcjYsICM0
NjI2NAogICAgICAgIDB4YjZmMDM1ZGM6ICAgIHN0ciAgICByMTIsIFtyNl0KICAgICAgICAweGI2
ZjAzNWUwOiAgICBiICAgICAgMHhiNmYwNDFmMAogICAgKFMpIFsgIDEwXSBqZmFsc2UgICAgICAg
ICAgICBsb2MzLCA3OSgtPjg5KQogICAgICAgIDB4YjZmMDM1ZTI6ICAgIGNtbiAgICByMSwgIzcK
ICAgICAgICAweGI2ZjAzNWU2OiAgICBiaGkgICAgMHhiNmYwMzVmYwogICAgICAgIDB4YjZmMDM1
ZTg6ICAgIHZsZHIgICBkMCwgW3I3LCAjLTMyXQogICAgICAgIDB4YjZmMDM1ZWM6ICAgIC5sb25n
ICBlZWI1MGI0MAogICAgICAgIDB4YjZmMDM1ZjA6ICAgIHZtcnMgICBhcHNyX256Y3YsIGZwc2Ny
CiAgICAgICAgMHhiNmYwMzVmNDogICAgYnZzICAgIDB4YjZmMDM1ZjgKICAgICAgICAweGI2ZjAz
NWY2OiAgICBibmUgICAgMHhiNmYwMzVmYQogICAgICAgIDB4YjZmMDM1Zjg6ICAgIGIgICAgICAw
eGI2ZjA0NTNlCiAgICAgICAgMHhiNmYwMzVmYTogICAgYiAgICAgIDB4YjZmMDQyMDYKICAgICAg
ICAweGI2ZjAzNWZjOiAgICBtb3YgICAgcjIsIHIwCiAgICAgICAgMHhiNmYwMzVmZTogICAgbW92
ICAgIHIzLCByMQogICAgICAgIDB4YjZmMDM2MDA6ICAgIG1vdnMgICByMSwgIzAKICAgICAgICAw
eGI2ZjAzNjAyOiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNmYwMzYwNDogICAgbW92dyAg
IHIxMiwgIzUyCiAgICAgICAgMHhiNmYwMzYwODogICAgbW92dCAgIHIxMiwgIzQ2MjY2CiAgICAg
ICAgMHhiNmYwMzYwYzogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNmYwMzYx
MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI2ZjAzNjE0OiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgICAgIDB4YjZmMDM2MTg6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4
YjZmMDM2MWE6ICAgIG1vdncgICByMTIsICM1NjU2NQogICAgICAgIDB4YjZmMDM2MWU6ICAgIG1v
dnQgICByMTIsICM0Njc3NgogICAgICAgIDB4YjZmMDM2MjI6ICAgIGJseCAgICByMTIKICAgICAg
ICAweGI2ZjAzNjI0OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjZmMDM2Mjg6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNmYwMzYyYzogICAgbGRyICAgIHI2LCBbcjZd
CiAgICAgICAgMHhiNmYwMzYyZTogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjZmMDM2MzA6
ICAgIGJuZSAgICAweGI2ZjAzYmJjCiAgICAgICAgMHhiNmYwMzYzNDogICAgdHN0ICAgIHIwLCBy
MAogICAgICAgIDB4YjZmMDM2MzY6ICAgIGJlcSAgICAweGI2ZjAzNzNlCiAgICAgICAgMHhiNmYw
MzYzODogICAgbW92dyAgIHI2LCAjODkwOAogICAgICAgIDB4YjZmMDM2M2M6ICAgIG1vdnQgICBy
NiwgIzQ2MjY0CiAgICAgICAgMHhiNmYwMzY0MDogICAgbGRyICAgIHIxMiwgW3I2XQogICAgICAg
IDB4YjZmMDM2NDQ6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgICAgICAweGI2ZjAzNjQ4OiAg
ICBtb3Z3ICAgcjYsICM4OTA4CiAgICAgICAgMHhiNmYwMzY0YzogICAgbW92dCAgIHI2LCAjNDYy
NjQKICAgICAgICAweGI2ZjAzNjUwOiAgICBzdHIgICAgcjEyLCBbcjZdCiAgICAgICAgMHhiNmYw
MzY1NDogICAgYiAgICAgIDB4YjZmMDQyMDYKICAgIChTKSBbICAxM10gbnN0cmljdGVxICAgICAg
ICAgbG9jMywgYXJnMSwgYXJnMgogICAgICAgIDB4YjZmMDM2NTY6ICAgIG1vdncgICByMTIsICM2
NAogICAgICAgIDB4YjZmMDM2NWE6ICAgIG1vdnQgICByMTIsICM0NjI2NgogICAgICAgIDB4YjZm
MDM2NWU6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjZmMDM2NjI6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNmYwMzY2NjogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgICAgICAweGI2ZjAzNjZhOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI2ZjAzNjZj
OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNmYwMzY2ZTogICAgbW92cyAgIHIxLCAjNjAK
ICAgICAgICAweGI2ZjAzNjcwOiAgICBtb3Z0ICAgcjEsICM0NjI2NgogICAgICAgIDB4YjZmMDM2
NzQ6ICAgIG1vdncgICByMTIsICM2NjgxCiAgICAgICAgMHhiNmYwMzY3ODogICAgbW92dCAgIHIx
MiwgIzQ2NzkzCiAgICAgICAgMHhiNmYwMzY3YzogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjZm
MDM2N2U6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNmYwMzY4MjogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgICAgICAweGI2ZjAzNjg2OiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAg
ICAweGI2ZjAzNjg4OiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNmYwMzY4YTogICAgYm5l
ICAgIDB4YjZmMDNiYmMKICAgICAgICAweGI2ZjAzNjhlOiAgICBtb3Z3ICAgcjYsICM4OTE2CiAg
ICAgICAgMHhiNmYwMzY5MjogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgICAgICAweGI2ZjAzNjk2
OiAgICBsZHIgICAgcjEyLCBbcjZdCiAgICAgICAgMHhiNmYwMzY5YTogICAgYWRkdyAgIHIxMiwg
cjEyLCAjMQogICAgICAgIDB4YjZmMDM2OWU6ICAgIG1vdncgICByNiwgIzg5MTYKICAgICAgICAw
eGI2ZjAzNmEyOiAgICBtb3Z0ICAgcjYsICM0NjI2NAogICAgICAgIDB4YjZmMDM2YTY6ICAgIHN0
ciAgICByMTIsIFtyNl0KICAgICAgICAweGI2ZjAzNmFhOiAgICBiICAgICAgMHhiNmYwNDI0NAog
ICAgKFMpIFsgIDE3XSBqZmFsc2UgICAgICAgICAgICBsb2MzLCA1KC0+MjIpCiAgICAgICAgMHhi
NmYwMzZhYzogICAgY21uICAgIHIxLCAjNwogICAgICAgIDB4YjZmMDM2YjA6ICAgIGJoaSAgICAw
eGI2ZjAzNmM2CiAgICAgICAgMHhiNmYwMzZiMjogICAgdmxkciAgIGQwLCBbcjcsICMtMzJdCiAg
ICAgICAgMHhiNmYwMzZiNjogICAgLmxvbmcgIGVlYjUwYjQwCiAgICAgICAgMHhiNmYwMzZiYTog
ICAgdm1ycyAgIGFwc3JfbnpjdiwgZnBzY3IKICAgICAgICAweGI2ZjAzNmJlOiAgICBidnMgICAg
MHhiNmYwMzZjMgogICAgICAgIDB4YjZmMDM2YzA6ICAgIGJuZSAgICAweGI2ZjAzNmM0CiAgICAg
ICAgMHhiNmYwMzZjMjogICAgYiAgICAgIDB4YjZmMDQyNjYKICAgICAgICAweGI2ZjAzNmM0OiAg
ICBiICAgICAgMHhiNmYwNDI1OAogICAgICAgIDB4YjZmMDM2YzY6ICAgIG1vdiAgICByMiwgcjAK
ICAgICAgICAweGI2ZjAzNmM4OiAgICBtb3YgICAgcjMsIHIxCiAgICAgICAgMHhiNmYwMzZjYTog
ICAgbW92cyAgIHIxLCAjMAogICAgICAgIDB4YjZmMDM2Y2M6ICAgIG1vdiAgICByMCwgcjcKICAg
ICAgICAweGI2ZjAzNmNlOiAgICBtb3Z3ICAgcjEyLCAjODAKICAgICAgICAweGI2ZjAzNmQyOiAg
ICBtb3Z0ICAgcjEyLCAjNDYyNjYKICAgICAgICAweGI2ZjAzNmQ2OiAgICBzdHIgICAgcjEyLCBb
cjcsICMyOF0KICAgICAgICAweGI2ZjAzNmRhOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAg
IDB4YjZmMDM2ZGU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNmYwMzZlMjogICAg
c3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNmYwMzZlNDogICAgbW92dyAgIHIxMiwgIzU2NTY1
CiAgICAgICAgMHhiNmYwMzZlODogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAgICAgMHhiNmYw
MzZlYzogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjZmMDM2ZWU6ICAgIG1vdncgICByNiwgIzQ2
MzQ4CiAgICAgICAgMHhiNmYwMzZmMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI2
ZjAzNmY2OiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI2ZjAzNmY4OiAgICBjbXAgICAg
cjIsICMwCiAgICAgICAgMHhiNmYwMzZmYTogICAgYm5lICAgIDB4YjZmMDNiYmMKICAgICAgICAw
eGI2ZjAzNmZlOiAgICB0c3QgICAgcjAsIHIwCiAgICAgICAgMHhiNmYwMzcwMDogICAgYmVxICAg
IDB4YjZmMDMyNjYKICAgICAgICAweGI2ZjAzNzA0OiAgICBtb3Z3ICAgcjYsICM4OTI0CiAgICAg
ICAgMHhiNmYwMzcwODogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgICAgICAweGI2ZjAzNzBjOiAg
ICBsZHIgICAgcjEyLCBbcjZdCiAgICAgICAgMHhiNmYwMzcxMDogICAgYWRkdyAgIHIxMiwgcjEy
LCAjMQogICAgICAgIDB4YjZmMDM3MTQ6ICAgIG1vdncgICByNiwgIzg5MjQKICAgICAgICAweGI2
ZjAzNzE4OiAgICBtb3Z0ICAgcjYsICM0NjI2NAogICAgICAgIDB4YjZmMDM3MWM6ICAgIHN0ciAg
ICByMTIsIFtyNl0KICAgICAgICAweGI2ZjAzNzIwOiAgICBiICAgICAgMHhiNmYwNDI1OAogICAg
KFMpIFsgIDIyXSBqdHJ1ZSAgICAgICAgICAgICBhcmcyLCA2NSgtPjg3KQogICAgICAgIDB4YjZm
MDM3MjI6ICAgIGNtbiAgICByMSwgIzcKICAgICAgICAweGI2ZjAzNzI2OiAgICBiaGkgICAgMHhi
NmYwMzczYwogICAgICAgIDB4YjZmMDM3Mjg6ICAgIHZsZHIgICBkMCwgW3I3LCAjNDhdCiAgICAg
ICAgMHhiNmYwMzcyYzogICAgLmxvbmcgIGVlYjUwYjQwCiAgICAgICAgMHhiNmYwMzczMDogICAg
dm1ycyAgIGFwc3JfbnpjdiwgZnBzY3IKICAgICAgICAweGI2ZjAzNzM0OiAgICBidnMgICAgMHhi
NmYwMzczYQogICAgICAgIDB4YjZmMDM3MzY6ICAgIGJuZSAgICAweGI2ZjAzNTMwCiAgICAgICAg
MHhiNmYwMzczYTogICAgYiAgICAgIDB4YjZmMDQyNzgKICAgICAgICAweGI2ZjAzNzNjOiAgICBt
b3YgICAgcjIsIHIwCiAgICAgICAgMHhiNmYwMzczZTogICAgbW92ICAgIHIzLCByMQogICAgICAg
IDB4YjZmMDM3NDA6ICAgIG1vdnMgICByMSwgIzAKICAgICAgICAweGI2ZjAzNzQyOiAgICBtb3Yg
ICAgcjAsIHI3CiAgICAgICAgMHhiNmYwMzc0NDogICAgbW92dyAgIHIxMiwgIzEwMAogICAgICAg
IDB4YjZmMDM3NDg6ICAgIG1vdnQgICByMTIsICM0NjI2NgogICAgICAgIDB4YjZmMDM3NGM6ICAg
IHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjZmMDM3NTA6ICAgIG1vdncgICByNiwg
IzQyMTI4CiAgICAgICAgMHhiNmYwMzc1NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAw
eGI2ZjAzNzU4OiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI2ZjAzNzVhOiAgICBtb3Z3
ICAgcjEyLCAjNTY1NjUKICAgICAgICAweGI2ZjAzNzVlOiAgICBtb3Z0ICAgcjEyLCAjNDY3NzYK
ICAgICAgICAweGI2ZjAzNzYyOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNmYwMzc2NDogICAg
bW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI2ZjAzNzY4OiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgICAgIDB4YjZmMDM3NmM6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjZmMDM3
NmU6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI2ZjAzNzcwOiAgICBibmUgICAgMHhiNmYw
M2JiYwogICAgICAgIDB4YjZmMDM3NzQ6ICAgIHRzdCAgICByMCwgcjAKICAgICAgICAweGI2ZjAz
Nzc2OiAgICBibmUgICAgMHhiNmYwMzUzMAogICAgICAgIDB4YjZmMDM3N2E6ICAgIG1vdncgICBy
NiwgIzg5MzIKICAgICAgICAweGI2ZjAzNzdlOiAgICBtb3Z0ICAgcjYsICM0NjI2NAogICAgICAg
IDB4YjZmMDM3ODI6ICAgIGxkciAgICByMTIsIFtyNl0KICAgICAgICAweGI2ZjAzNzg2OiAgICBh
ZGR3ICAgcjEyLCByMTIsICMxCiAgICAgICAgMHhiNmYwMzc4YTogICAgbW92dyAgIHI2LCAjODkz
MgogICAgICAgIDB4YjZmMDM3OGU6ICAgIG1vdnQgICByNiwgIzQ2MjY0CiAgICAgICAgMHhiNmYw
Mzc5MjogICAgc3RyICAgIHIxMiwgW3I2XQogICAgICAgIDB4YjZmMDM3OTY6ICAgIGIgICAgICAw
eGI2ZjA0Mjc4CiAgICAoUykgWyAgMjVdIGRpdiAgICAgICAgICAgICAgIGxvYzMsIEludDMyOiAx
KGNvbnN0MiksIGFyZzIgICAgcmVzdWx0czogSW50MzIKICAgICAgICAweGI2ZjAzNzk4OiAgICBt
b3Z3ICAgcjEyLCAjMTEyCiAgICAgICAgMHhiNmYwMzc5YzogICAgbW92dCAgIHIxMiwgIzQ2MjY2
CiAgICAgICAgMHhiNmYwMzdhMDogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhi
NmYwMzdhNDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI2ZjAzN2E4OiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjZmMDM3YWM6ICAgIHN0ciAgICByNywgW3I2XQogICAg
ICAgIDB4YjZmMDM3YWU6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI2ZjAzN2IwOiAgICBt
b3ZzICAgcjEsICMxMDgKICAgICAgICAweGI2ZjAzN2IyOiAgICBtb3Z0ICAgcjEsICM0NjI2Ngog
ICAgICAgIDB4YjZmMDM3YjY6ICAgIG1vdncgICByMTIsICMxMzgxNwogICAgICAgIDB4YjZmMDM3
YmE6ICAgIG1vdnQgICByMTIsICM0Njc5MwogICAgICAgIDB4YjZmMDM3YmU6ICAgIGJseCAgICBy
MTIKICAgICAgICAweGI2ZjAzN2MwOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjZm
MDM3YzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNmYwMzdjODogICAgbGRyICAg
IHI2LCBbcjZdCiAgICAgICAgMHhiNmYwMzdjYTogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4
YjZmMDM3Y2M6ICAgIGJuZSAgICAweGI2ZjAzYmJjCiAgICAgICAgMHhiNmYwMzdkMDogICAgbW92
dyAgIHI2LCAjODk0MAogICAgICAgIDB4YjZmMDM3ZDQ6ICAgIG1vdnQgICByNiwgIzQ2MjY0CiAg
ICAgICAgMHhiNmYwMzdkODogICAgbGRyICAgIHIxMiwgW3I2XQogICAgICAgIDB4YjZmMDM3ZGM6
ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgICAgICAweGI2ZjAzN2UwOiAgICBtb3Z3ICAgcjYs
ICM4OTQwCiAgICAgICAgMHhiNmYwMzdlNDogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgICAgICAw
eGI2ZjAzN2U4OiAgICBzdHIgICAgcjEyLCBbcjZdCiAgICAgICAgMHhiNmYwMzdlYzogICAgYiAg
ICAgIDB4YjZmMDQyZjgKICAgIChTKSBbICA0NV0gbmVnYXRlICAgICAgICAgICAgbG9jNiwgbG9j
NQogICAgICAgIDB4YjZmMDM3ZWU6ICAgIG1vdncgICByMTIsICMxOTIKICAgICAgICAweGI2ZjAz
N2YyOiAgICBtb3Z0ICAgcjEyLCAjNDYyNjYKICAgICAgICAweGI2ZjAzN2Y2OiAgICBzdHIgICAg
cjEyLCBbcjcsICMyOF0KICAgICAgICAweGI2ZjAzN2ZhOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgICAgIDB4YjZmMDM3ZmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNmYwMzgw
MjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNmYwMzgwNDogICAgbW92ICAgIHIwLCBy
NwogICAgICAgIDB4YjZmMDM4MDY6ICAgIG1vdnMgICByMSwgIzE4OAogICAgICAgIDB4YjZmMDM4
MDg6ICAgIG1vdnQgICByMSwgIzQ2MjY2CiAgICAgICAgMHhiNmYwMzgwYzogICAgbW92dyAgIHIx
MiwgIzExOTg1CiAgICAgICAgMHhiNmYwMzgxMDogICAgbW92dCAgIHIxMiwgIzQ2NzkzCiAgICAg
ICAgMHhiNmYwMzgxNDogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjZmMDM4MTY6ICAgIG1vdncg
ICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNmYwMzgxYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
ICAgICAweGI2ZjAzODFlOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI2ZjAzODIwOiAg
ICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNmYwMzgyMjogICAgYm5lICAgIDB4YjZmMDNiYmMK
ICAgICAgICAweGI2ZjAzODI2OiAgICBtb3Z3ICAgcjYsICM4OTQ4CiAgICAgICAgMHhiNmYwMzgy
YTogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgICAgICAweGI2ZjAzODJlOiAgICBsZHIgICAgcjEy
LCBbcjZdCiAgICAgICAgMHhiNmYwMzgzMjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgICAg
IDB4YjZmMDM4MzY6ICAgIG1vdncgICByNiwgIzg5NDgKICAgICAgICAweGI2ZjAzODNhOiAgICBt
b3Z0ICAgcjYsICM0NjI2NAogICAgICAgIDB4YjZmMDM4M2U6ICAgIHN0ciAgICByMTIsIFtyNl0K
ICAgICAgICAweGI2ZjAzODQyOiAgICBiICAgICAgMHhiNmYwNDM3MgogICAgKFMpIFsgIDQ4XSBz
dHJpY3RlcSAgICAgICAgICBsb2MzLCBsb2MzLCBsb2M2CiAgICAgICAgMHhiNmYwMzg0NDogICAg
bW92dyAgIHIxMiwgIzIwNAogICAgICAgIDB4YjZmMDM4NDg6ICAgIG1vdnQgICByMTIsICM0NjI2
NgogICAgICAgIDB4YjZmMDM4NGM6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4
YjZmMDM4NTA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNmYwMzg1NDogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI2ZjAzODU4OiAgICBzdHIgICAgcjcsIFtyNl0KICAg
ICAgICAweGI2ZjAzODVhOiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNmYwMzg1YzogICAg
bW92cyAgIHIxLCAjMjAwCiAgICAgICAgMHhiNmYwMzg1ZTogICAgbW92dCAgIHIxLCAjNDYyNjYK
ICAgICAgICAweGI2ZjAzODYyOiAgICBtb3Z3ICAgcjEyLCAjNjI1MwogICAgICAgIDB4YjZmMDM4
NjY6ICAgIG1vdnQgICByMTIsICM0Njc5MwogICAgICAgIDB4YjZmMDM4NmE6ICAgIGJseCAgICBy
MTIKICAgICAgICAweGI2ZjAzODZjOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjZm
MDM4NzA6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNmYwMzg3NDogICAgbGRyICAg
IHI2LCBbcjZdCiAgICAgICAgMHhiNmYwMzg3NjogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4
YjZmMDM4Nzg6ICAgIGJuZSAgICAweGI2ZjAzYmJjCiAgICAgICAgMHhiNmYwMzg3YzogICAgbW92
dyAgIHI2LCAjODk1NgogICAgICAgIDB4YjZmMDM4ODA6ICAgIG1vdnQgICByNiwgIzQ2MjY0CiAg
ICAgICAgMHhiNmYwMzg4NDogICAgbGRyICAgIHIxMiwgW3I2XQogICAgICAgIDB4YjZmMDM4ODg6
ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgICAgICAweGI2ZjAzODhjOiAgICBtb3Z3ICAgcjYs
ICM4OTU2CiAgICAgICAgMHhiNmYwMzg5MDogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgICAgICAw
eGI2ZjAzODk0OiAgICBzdHIgICAgcjEyLCBbcjZdCiAgICAgICAgMHhiNmYwMzg5ODogICAgYiAg
ICAgIDB4YjZmMDQzYjgKICAgIChTKSBbICA1Ml0gamZhbHNlICAgICAgICAgICAgbG9jMywgMzUo
LT44NykKICAgICAgICAweGI2ZjAzODlhOiAgICBjbW4gICAgcjEsICM3CiAgICAgICAgMHhiNmYw
Mzg5ZTogICAgYmhpICAgIDB4YjZmMDM4YjQKICAgICAgICAweGI2ZjAzOGEwOiAgICB2bGRyICAg
ZDAsIFtyNywgIy0zMl0KICAgICAgICAweGI2ZjAzOGE0OiAgICAubG9uZyAgZWViNTBiNDAKICAg
ICAgICAweGI2ZjAzOGE4OiAgICB2bXJzICAgYXBzcl9uemN2LCBmcHNjcgogICAgICAgIDB4YjZm
MDM4YWM6ICAgIGJ2cyAgICAweGI2ZjAzOGIwCiAgICAgICAgMHhiNmYwMzhhZTogICAgYm5lICAg
IDB4YjZmMDM4YjIKICAgICAgICAweGI2ZjAzOGIwOiAgICBiICAgICAgMHhiNmYwNDUzMAogICAg
ICAgIDB4YjZmMDM4YjI6ICAgIGIgICAgICAweGI2ZjA0M2NlCiAgICAgICAgMHhiNmYwMzhiNDog
ICAgbW92ICAgIHIyLCByMAogICAgICAgIDB4YjZmMDM4YjY6ICAgIG1vdiAgICByMywgcjEKICAg
ICAgICAweGI2ZjAzOGI4OiAgICBtb3ZzICAgcjEsICMwCiAgICAgICAgMHhiNmYwMzhiYTogICAg
bW92ICAgIHIwLCByNwogICAgICAgIDB4YjZmMDM4YmM6ICAgIG1vdncgICByMTIsICMyMjAKICAg
ICAgICAweGI2ZjAzOGMwOiAgICBtb3Z0ICAgcjEyLCAjNDYyNjYKICAgICAgICAweGI2ZjAzOGM0
OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI2ZjAzOGM4OiAgICBtb3Z3ICAg
cjYsICM0MjEyOAogICAgICAgIDB4YjZmMDM4Y2M6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAg
ICAgMHhiNmYwMzhkMDogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNmYwMzhkMjogICAg
bW92dyAgIHIxMiwgIzU2NTY1CiAgICAgICAgMHhiNmYwMzhkNjogICAgbW92dCAgIHIxMiwgIzQ2
Nzc2CiAgICAgICAgMHhiNmYwMzhkYTogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjZmMDM4ZGM6
ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNmYwMzhlMDogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgICAgICAweGI2ZjAzOGU0OiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI2
ZjAzOGU2OiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNmYwMzhlODogICAgYm5lICAgIDB4
YjZmMDNiYmMKICAgICAgICAweGI2ZjAzOGVjOiAgICB0c3QgICAgcjAsIHIwCiAgICAgICAgMHhi
NmYwMzhlZTogICAgYmVxICAgIDB4YjZmMDM1MzAKICAgICAgICAweGI2ZjAzOGYyOiAgICBtb3Z3
ICAgcjYsICMxMjEwMAogICAgICAgIDB4YjZmMDM4ZjY6ICAgIG1vdnQgICByNiwgIzQ2MjY0CiAg
ICAgICAgMHhiNmYwMzhmYTogICAgbGRyICAgIHIxMiwgW3I2XQogICAgICAgIDB4YjZmMDM4ZmU6
ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgICAgICAweGI2ZjAzOTAyOiAgICBtb3Z3ICAgcjYs
ICMxMjEwMAogICAgICAgIDB4YjZmMDM5MDY6ICAgIG1vdnQgICByNiwgIzQ2MjY0CiAgICAgICAg
MHhiNmYwMzkwYTogICAgc3RyICAgIHIxMiwgW3I2XQogICAgICAgIDB4YjZmMDM5MGU6ICAgIGIg
ICAgICAweGI2ZjA0M2NlCiAgICAoUykgWyAgNTVdIGRpdiAgICAgICAgICAgICAgIGxvYzMsIElu
dDMyOiAxKGNvbnN0MiksIGFyZzEgICAgcmVzdWx0czogSW50MzIKICAgICAgICAweGI2ZjAzOTEw
OiAgICBtb3Z3ICAgcjEyLCAjMjMyCiAgICAgICAgMHhiNmYwMzkxNDogICAgbW92dCAgIHIxMiwg
IzQ2MjY2CiAgICAgICAgMHhiNmYwMzkxODogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAg
ICAgMHhiNmYwMzkxYzogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI2ZjAzOTIwOiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjZmMDM5MjQ6ICAgIHN0ciAgICByNywgW3I2
XQogICAgICAgIDB4YjZmMDM5MjY6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI2ZjAzOTI4
OiAgICBtb3ZzICAgcjEsICMyMjgKICAgICAgICAweGI2ZjAzOTJhOiAgICBtb3Z0ICAgcjEsICM0
NjI2NgogICAgICAgIDB4YjZmMDM5MmU6ICAgIG1vdncgICByMTIsICMxMzgxNwogICAgICAgIDB4
YjZmMDM5MzI6ICAgIG1vdnQgICByMTIsICM0Njc5MwogICAgICAgIDB4YjZmMDM5MzY6ICAgIGJs
eCAgICByMTIKICAgICAgICAweGI2ZjAzOTM4OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAg
IDB4YjZmMDM5M2M6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNmYwMzk0MDogICAg
bGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNmYwMzk0MjogICAgY21wICAgIHIyLCAjMAogICAg
ICAgIDB4YjZmMDM5NDQ6ICAgIGJuZSAgICAweGI2ZjAzYmJjCiAgICAgICAgMHhiNmYwMzk0ODog
ICAgbW92dyAgIHI2LCAjMTIxMDgKICAgICAgICAweGI2ZjAzOTRjOiAgICBtb3Z0ICAgcjYsICM0
NjI2NAogICAgICAgIDB4YjZmMDM5NTA6ICAgIGxkciAgICByMTIsIFtyNl0KICAgICAgICAweGI2
ZjAzOTU0OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAgICAgMHhiNmYwMzk1ODogICAgbW92
dyAgIHI2LCAjMTIxMDgKICAgICAgICAweGI2ZjAzOTVjOiAgICBtb3Z0ICAgcjYsICM0NjI2NAog
ICAgICAgIDB4YjZmMDM5NjA6ICAgIHN0ciAgICByMTIsIFtyNl0KICAgICAgICAweGI2ZjAzOTY0
OiAgICBiICAgICAgMHhiNmYwNDQ0ZQogICAgKFMpIFsgIDc1XSBuZWdhdGUgICAgICAgICAgICBs
b2M2LCBsb2M1CiAgICAgICAgMHhiNmYwMzk2NjogICAgbW92dyAgIHIxMiwgIzMxMgogICAgICAg
IDB4YjZmMDM5NmE6ICAgIG1vdnQgICByMTIsICM0NjI2NgogICAgICAgIDB4YjZmMDM5NmU6ICAg
IHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjZmMDM5NzI6ICAgIG1vdncgICByNiwg
IzQyMTI4CiAgICAgICAgMHhiNmYwMzk3NjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAw
eGI2ZjAzOTdhOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI2ZjAzOTdjOiAgICBtb3Yg
ICAgcjAsIHI3CiAgICAgICAgMHhiNmYwMzk3ZTogICAgbW92dyAgIHIxLCAjMzA4CiAgICAgICAg
MHhiNmYwMzk4MjogICAgbW92dCAgIHIxLCAjNDYyNjYKICAgICAgICAweGI2ZjAzOTg2OiAgICBt
b3Z3ICAgcjEyLCAjMTE5ODUKICAgICAgICAweGI2ZjAzOThhOiAgICBtb3Z0ICAgcjEyLCAjNDY3
OTMKICAgICAgICAweGI2ZjAzOThlOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNmYwMzk5MDog
ICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI2ZjAzOTk0OiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgICAgIDB4YjZmMDM5OTg6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjZm
MDM5OWE6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI2ZjAzOTljOiAgICBibmUgICAgMHhi
NmYwM2JiYwogICAgICAgIDB4YjZmMDM5YTA6ICAgIG1vdncgICByNiwgIzEyMTE2CiAgICAgICAg
MHhiNmYwMzlhNDogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgICAgICAweGI2ZjAzOWE4OiAgICBs
ZHIgICAgcjEyLCBbcjZdCiAgICAgICAgMHhiNmYwMzlhYzogICAgYWRkdyAgIHIxMiwgcjEyLCAj
MQogICAgICAgIDB4YjZmMDM5YjA6ICAgIG1vdncgICByNiwgIzEyMTE2CiAgICAgICAgMHhiNmYw
MzliNDogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgICAgICAweGI2ZjAzOWI4OiAgICBzdHIgICAg
cjEyLCBbcjZdCiAgICAgICAgMHhiNmYwMzliYzogICAgYiAgICAgIDB4YjZmMDQ0YzgKICAgIChT
KSBbICA3OF0gbnN0cmljdGVxICAgICAgICAgbG9jMywgbG9jMywgbG9jNgogICAgICAgIDB4YjZm
MDM5YmU6ICAgIG1vdncgICByMTIsICMzMjQKICAgICAgICAweGI2ZjAzOWMyOiAgICBtb3Z0ICAg
cjEyLCAjNDYyNjYKICAgICAgICAweGI2ZjAzOWM2OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0K
ICAgICAgICAweGI2ZjAzOWNhOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjZmMDM5
Y2U6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNmYwMzlkMjogICAgc3RyICAgIHI3
LCBbcjZdCiAgICAgICAgMHhiNmYwMzlkNDogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjZm
MDM5ZDY6ICAgIG1vdncgICByMSwgIzMyMAogICAgICAgIDB4YjZmMDM5ZGE6ICAgIG1vdnQgICBy
MSwgIzQ2MjY2CiAgICAgICAgMHhiNmYwMzlkZTogICAgbW92dyAgIHIxMiwgIzY2ODEKICAgICAg
ICAweGI2ZjAzOWUyOiAgICBtb3Z0ICAgcjEyLCAjNDY3OTMKICAgICAgICAweGI2ZjAzOWU2OiAg
ICBibHggICAgcjEyCiAgICAgICAgMHhiNmYwMzllODogICAgbW92dyAgIHI2LCAjNDYzNDgKICAg
ICAgICAweGI2ZjAzOWVjOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjZmMDM5ZjA6
ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjZmMDM5ZjI6ICAgIGNtcCAgICByMiwgIzAK
ICAgICAgICAweGI2ZjAzOWY0OiAgICBibmUgICAgMHhiNmYwM2JiYwogICAgICAgIDB4YjZmMDM5
Zjg6ICAgIG1vdncgICByNiwgIzEyMTI0CiAgICAgICAgMHhiNmYwMzlmYzogICAgbW92dCAgIHI2
LCAjNDYyNjQKICAgICAgICAweGI2ZjAzYTAwOiAgICBsZHIgICAgcjEyLCBbcjZdCiAgICAgICAg
MHhiNmYwM2EwNDogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgICAgIDB4YjZmMDNhMDg6ICAg
IG1vdncgICByNiwgIzEyMTI0CiAgICAgICAgMHhiNmYwM2EwYzogICAgbW92dCAgIHI2LCAjNDYy
NjQKICAgICAgICAweGI2ZjAzYTEwOiAgICBzdHIgICAgcjEyLCBbcjZdCiAgICAgICAgMHhiNmYw
M2ExNDogICAgYiAgICAgIDB4YjZmMDQ1MGUKICAgIChTKSBbICA4Ml0gamZhbHNlICAgICAgICAg
ICAgbG9jMywgNSgtPjg3KQogICAgICAgIDB4YjZmMDNhMTY6ICAgIGNtbiAgICByMSwgIzcKICAg
ICAgICAweGI2ZjAzYTFhOiAgICBiaGkgICAgMHhiNmYwM2EzMAogICAgICAgIDB4YjZmMDNhMWM6
ICAgIHZsZHIgICBkMCwgW3I3LCAjLTMyXQogICAgICAgIDB4YjZmMDNhMjA6ICAgIC5sb25nICBl
ZWI1MGI0MAogICAgICAgIDB4YjZmMDNhMjQ6ICAgIHZtcnMgICBhcHNyX256Y3YsIGZwc2NyCiAg
ICAgICAgMHhiNmYwM2EyODogICAgYnZzICAgIDB4YjZmMDNhMmMKICAgICAgICAweGI2ZjAzYTJh
OiAgICBibmUgICAgMHhiNmYwM2EyZQogICAgICAgIDB4YjZmMDNhMmM6ICAgIGIgICAgICAweGI2
ZjA0NTMwCiAgICAgICAgMHhiNmYwM2EyZTogICAgYiAgICAgIDB4YjZmMDQ1MjIKICAgICAgICAw
eGI2ZjAzYTMwOiAgICBtb3YgICAgcjIsIHIwCiAgICAgICAgMHhiNmYwM2EzMjogICAgbW92ICAg
IHIzLCByMQogICAgICAgIDB4YjZmMDNhMzQ6ICAgIG1vdnMgICByMSwgIzAKICAgICAgICAweGI2
ZjAzYTM2OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNmYwM2EzODogICAgbW92dyAgIHIx
MiwgIzM0MAogICAgICAgIDB4YjZmMDNhM2M6ICAgIG1vdnQgICByMTIsICM0NjI2NgogICAgICAg
IDB4YjZmMDNhNDA6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjZmMDNhNDQ6
ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNmYwM2E0ODogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgICAgICAweGI2ZjAzYTRjOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI2
ZjAzYTRlOiAgICBtb3Z3ICAgcjEyLCAjNTY1NjUKICAgICAgICAweGI2ZjAzYTUyOiAgICBtb3Z0
ICAgcjEyLCAjNDY3NzYKICAgICAgICAweGI2ZjAzYTU2OiAgICBibHggICAgcjEyCiAgICAgICAg
MHhiNmYwM2E1ODogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI2ZjAzYTVjOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjZmMDNhNjA6ICAgIGxkciAgICByNiwgW3I2XQog
ICAgICAgIDB4YjZmMDNhNjI6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI2ZjAzYTY0OiAg
ICBibmUgICAgMHhiNmYwM2JiYwogICAgICAgIDB4YjZmMDNhNjg6ICAgIHRzdCAgICByMCwgcjAK
ICAgICAgICAweGI2ZjAzYTZhOiAgICBiZXEgICAgMHhiNmYwMzUzMAogICAgICAgIDB4YjZmMDNh
NmU6ICAgIG1vdncgICByNiwgIzEyMTMyCiAgICAgICAgMHhiNmYwM2E3MjogICAgbW92dCAgIHI2
LCAjNDYyNjQKICAgICAgICAweGI2ZjAzYTc2OiAgICBsZHIgICAgcjEyLCBbcjZdCiAgICAgICAg
MHhiNmYwM2E3YTogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgICAgIDB4YjZmMDNhN2U6ICAg
IG1vdncgICByNiwgIzEyMTMyCiAgICAgICAgMHhiNmYwM2E4MjogICAgbW92dCAgIHI2LCAjNDYy
NjQKICAgICAgICAweGI2ZjAzYTg2OiAgICBzdHIgICAgcjEyLCBbcjZdCiAgICAgICAgMHhiNmYw
M2E4YTogICAgYiAgICAgIDB4YjZmMDQ1MjIKICAgIChTKSBbICA4OV0gbnN0cmljdGVxICAgICAg
ICAgbG9jMywgYXJnMSwgYXJnMQogICAgICAgIDB4YjZmMDNhOGM6ICAgIG1vdncgICByMTIsICMz
NjgKICAgICAgICAweGI2ZjAzYTkwOiAgICBtb3Z0ICAgcjEyLCAjNDYyNjYKICAgICAgICAweGI2
ZjAzYTk0OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI2ZjAzYTk4OiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjZmMDNhOWM6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAgICAgMHhiNmYwM2FhMDogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNmYwM2Fh
MjogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjZmMDNhYTQ6ICAgIG1vdncgICByMSwgIzM2
NAogICAgICAgIDB4YjZmMDNhYTg6ICAgIG1vdnQgICByMSwgIzQ2MjY2CiAgICAgICAgMHhiNmYw
M2FhYzogICAgbW92dyAgIHIxMiwgIzY2ODEKICAgICAgICAweGI2ZjAzYWIwOiAgICBtb3Z0ICAg
cjEyLCAjNDY3OTMKICAgICAgICAweGI2ZjAzYWI0OiAgICBibHggICAgcjEyCiAgICAgICAgMHhi
NmYwM2FiNjogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI2ZjAzYWJhOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjZmMDNhYmU6ICAgIGxkciAgICByNiwgW3I2XQogICAg
ICAgIDB4YjZmMDNhYzA6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI2ZjAzYWMyOiAgICBi
bmUgICAgMHhiNmYwM2JiYwogICAgICAgIDB4YjZmMDNhYzY6ICAgIG1vdncgICByNiwgIzEyMTQw
CiAgICAgICAgMHhiNmYwM2FjYTogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgICAgICAweGI2ZjAz
YWNlOiAgICBsZHIgICAgcjEyLCBbcjZdCiAgICAgICAgMHhiNmYwM2FkMjogICAgYWRkdyAgIHIx
MiwgcjEyLCAjMQogICAgICAgIDB4YjZmMDNhZDY6ICAgIG1vdncgICByNiwgIzEyMTQwCiAgICAg
ICAgMHhiNmYwM2FkYTogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgICAgICAweGI2ZjAzYWRlOiAg
ICBzdHIgICAgcjEyLCBbcjZdCiAgICAgICAgMHhiNmYwM2FlMjogICAgYiAgICAgIDB4YjZmMDQ1
N2MKICAgIChFbmQgT2YgU2xvdyBQYXRoKQogICAgICAgIDB4YjZmMDNhZTQ6ICAgIG12biAgICBy
MTIsICMyMwogICAgICAgIDB4YjZmMDNhZTg6ICAgIG1vdiAgICBzcCwgc3AKICAgICAgICAweGI2
ZjAzYWVhOiAgICBhZGQgICAgc3AsIHIxMgogICAgICAgIDB4YjZmMDNhZWM6ICAgIG1vdncgICBy
MSwgIzEzOTY4CiAgICAgICAgMHhiNmYwM2FmMDogICAgbW92dCAgIHIxLCAjNDYyMDEKICAgICAg
ICAweGI2ZjAzYWY0OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNmYwM2FmNjogICAgbW92
dyAgIHIxMiwgIzEyCiAgICAgICAgMHhiNmYwM2FmYTogICAgbW92dCAgIHIxMiwgIzQ2MjY2CiAg
ICAgICAgMHhiNmYwM2FmZTogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNmYw
M2IwMjogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI2ZjAzYjA2OiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgICAgIDB4YjZmMDNiMGE6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAg
IDB4YjZmMDNiMGM6ICAgIG1vdncgICByMTIsICM0NzkwOQogICAgICAgIDB4YjZmMDNiMTA6ICAg
IG1vdnQgICByMTIsICM0Njc3NgogICAgICAgIDB4YjZmMDNiMTQ6ICAgIGJseCAgICByMTIKICAg
ICAgICAweGI2ZjAzYjE2OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjZmMDNiMWE6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNmYwM2IxZTogICAgbGRyICAgIHI2LCBb
cjZdCiAgICAgICAgMHhiNmYwM2IyMDogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjZmMDNi
MjI6ICAgIGJuZSAgICAweGI2ZjAzYjljCiAgICAgICAgMHhiNmYwM2IyNDogICAgbW92ICAgIHIx
MiwgIzAKICAgICAgICAweGI2ZjAzYjI4OiAgICBtb3Z3ICAgcjYsICMxMzk5MAogICAgICAgIDB4
YjZmMDNiMmM6ICAgIG1vdnQgICByNiwgIzQ2MjAxCiAgICAgICAgMHhiNmYwM2IzMDogICAgLmxv
bmcgIGY4ODZjMDAwCiAgICAgICAgMHhiNmYwM2IzNDogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAg
ICAgMHhiNmYwM2IzODogICAgbW92ICAgIHI3LCBzcAogICAgICAgIDB4YjZmMDNiM2E6ICAgIG1v
dncgICByMTIsICMxMzk2OAogICAgICAgIDB4YjZmMDNiM2U6ICAgIG1vdnQgICByMTIsICM0NjIw
MQogICAgICAgIDB4YjZmMDNiNDI6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAgICAgMHhi
NmYwM2I0NjogICAgbGRyICAgIHIxLCBbcjcsICMyNF0KICAgICAgICAweGI2ZjAzYjQ4OiAgICBj
bXAgICAgcjEsICMzCiAgICAgICAgMHhiNmYwM2I0YTogICAgYmhzICAgIDB4YjZmMDMwNzIKICAg
ICAgICAweGI2ZjAzYjRlOiAgICBtdm4gICAgcjEyLCAjMjMKICAgICAgICAweGI2ZjAzYjUyOiAg
ICBtb3YgICAgc3AsIHNwCiAgICAgICAgMHhiNmYwM2I1NDogICAgYWRkICAgIHNwLCByMTIKICAg
ICAgICAweGI2ZjAzYjU2OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNmYwM2I1ODogICAg
bW92dyAgIHIxMiwgIzEyCiAgICAgICAgMHhiNmYwM2I1YzogICAgbW92dCAgIHIxMiwgIzQ2MjY2
CiAgICAgICAgMHhiNmYwM2I2MDogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhi
NmYwM2I2NDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI2ZjAzYjY4OiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjZmMDNiNmM6ICAgIHN0ciAgICByNywgW3I2XQogICAg
ICAgIDB4YjZmMDNiNmU6ICAgIG1vdncgICByMTIsICM0Nzk5NwogICAgICAgIDB4YjZmMDNiNzI6
ICAgIG1vdnQgICByMTIsICM0Njc3NgogICAgICAgIDB4YjZmMDNiNzY6ICAgIGJseCAgICByMTIK
ICAgICAgICAweGI2ZjAzYjc4OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjZmMDNi
N2M6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNmYwM2I4MDogICAgbGRyICAgIHI2
LCBbcjZdCiAgICAgICAgMHhiNmYwM2I4MjogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjZm
MDNiODQ6ICAgIGJuZSAgICAweGI2ZjAzYjljCiAgICAgICAgMHhiNmYwM2I4NjogICAgYWRkICAg
IHNwLCBzcCwgIzYKICAgICAgICAweGI2ZjAzYjg4OiAgICB0c3QgICAgcjAsIHIwCiAgICAgICAg
MHhiNmYwM2I4YTogICAgYmVxICAgIDB4YjZmMDMwNzIKICAgICAgICAweGI2ZjAzYjhlOiAgICBt
b3Z3ICAgcjEyLCAjNjkxMwogICAgICAgIDB4YjZmMDNiOTI6ICAgIG1vdnQgICByMTIsICM0Njgz
MgogICAgICAgIDB4YjZmMDNiOTY6ICAgIGJseCAgICByMTIKICAgICAgICAweGI2ZjAzYjk4OiAg
ICBiICAgICAgMHhiNmYwMzA3MgogICAgICAgIDB4YjZmMDNiOWM6ICAgIG1vdncgICByMCwgIzMy
NzY4CiAgICAgICAgMHhiNmYwM2JhMDogICAgbW92dCAgIHIwLCAjNDYyMDcKICAgICAgICAweGI2
ZjAzYmE0OiAgICBtb3YgICAgcjEsIHI3CiAgICAgICAgMHhiNmYwM2JhNjogICAgbW92dyAgIHIx
MiwgIzYzMjM3CiAgICAgICAgMHhiNmYwM2JhYTogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAg
ICAgMHhiNmYwM2JhZTogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjZmMDNiYjA6ICAgIG1vdncg
ICByNiwgIzQ2MTg4CiAgICAgICAgMHhiNmYwM2JiNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
ICAgICAweGI2ZjAzYmI4OiAgICBsZHIgICAgcjEsIFtyNl0KICAgICAgICAweGI2ZjAzYmJhOiAg
ICBieCAgICAgcjEKICAgICAgICAweGI2ZjAzYmJjOiAgICBtb3Z3ICAgcjAsICMzMjc2OAogICAg
ICAgIDB4YjZmMDNiYzA6ICAgIG1vdnQgICByMCwgIzQ2MjA3CiAgICAgICAgMHhiNmYwM2JjNDog
ICAgbW92ICAgIHIxLCByNwogICAgICAgIDB4YjZmMDNiYzY6ICAgIG1vdncgICByMTIsICM2MzIy
NQogICAgICAgIDB4YjZmMDNiY2E6ICAgIG1vdnQgICByMTIsICM0Njc3NgogICAgICAgIDB4YjZm
MDNiY2U6ICAgIGJseCAgICByMTIKICAgICAgICAweGI2ZjAzYmQwOiAgICBtb3Z3ICAgcjYsICM0
NjE4OAogICAgICAgIDB4YjZmMDNiZDQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhi
NmYwM2JkODogICAgbGRyICAgIHIxLCBbcjZdCiAgICAgICAgMHhiNmYwM2JkYTogICAgYnggICAg
IHIxCkRlc3Ryb3lpbmcgSklUIGNvZGUgYXQgMHhiNmYwNzlhMC4uLjB4YjZmMDc5YzAKR2VuZXJh
dGVkIEpJVCBjb2RlIGZvciBMaW5rIGNhbGwgc2xvdyBwYXRoIHRodW5rOgogICAgQ29kZSBhdCBb
MHhiNmYwM2JlMSwgMHhiNmYwM2M4MSk6CiAgICAweGI2ZjAzYmUwOiAgICBwdXNoICAge3I3LCBs
cn0KICAgIDB4YjZmMDNiZTQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDNiZTY6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAzYmVhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
MHhiNmYwM2JlZTogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAzYmYwOiAgICBtdm4gICAg
cjEyLCAjMjMKICAgIDB4YjZmMDNiZjQ6ICAgIG1vdiAgICBzcCwgc3AKICAgIDB4YjZmMDNiZjY6
ICAgIGFkZCAgICBzcCwgcjEyCiAgICAweGI2ZjAzYmY4OiAgICBtb3YgICAgcjEsIHIyCiAgICAw
eGI2ZjAzYmZhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAzYmZjOiAgICBtb3Z3ICAgcjQs
ICM0OTkyOQogICAgMHhiNmYwM2MwMDogICAgbW92dCAgIHI0LCAjNDY3NzYKICAgIDB4YjZmMDNj
MDQ6ICAgIGJseCAgICByNAogICAgMHhiNmYwM2MwNjogICAgYWRkICAgIHNwLCBzcCwgIzYKICAg
IDB4YjZmMDNjMDg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDNjMGE6ICAgIHBvcCAgICB7
cjcsIGxyfQogICAgMHhiNmYwM2MwZTogICAgdHN0ICAgIHIxLCByMQogICAgMHhiNmYwM2MxMDog
ICAgYmVxICAgIDB4YjZmMDNjNjAKICAgIDB4YjZmMDNjMTI6ICAgIG1vdiAgICByNSwgbHIKICAg
IDB4YjZmMDNjMTQ6ICAgIGxkciAgICByMSwgW3I3LCAjMjRdCiAgICAweGI2ZjAzYzE2OiAgICBs
ZHIgICAgcjMsIFtyNywgIzhdCiAgICAweGI2ZjAzYzE4OiAgICBsZHIgICAgcjMsIFtyMywgIzMy
XQogICAgMHhiNmYwM2MxYTogICAgY21wICAgIHIzLCByMQogICAgMHhiNmYwM2MxYzogICAgYmxz
ICAgIDB4YjZmMDNjMjAKICAgIDB4YjZmMDNjMWU6ICAgIG1vdiAgICByMSwgcjMKICAgIDB4YjZm
MDNjMjA6ICAgIGFkZHMgICByMSwgcjEsICM1CiAgICAweGI2ZjAzYzIyOiAgICBtdm4gICAgcjEy
LCAjMQogICAgMHhiNmYwM2MyNjogICAgYW5kICAgIHIxLCByMSwgcjEyCiAgICAweGI2ZjAzYzJh
OiAgICBtb3YgICAgcjEyLCAjOAogICAgMHhiNmYwM2MyZTogICAgc211bGwgIHIxLCByMTIsIHIx
LCByMTIKICAgIDB4YjZmMDNjMzI6ICAgIGFkZHMgICByMywgcjcsIHIxCiAgICAweGI2ZjAzYzM0
OiAgICBsZHIgICAgcjEsIFtzcCwgIzE2XQogICAgMHhiNmYwM2MzNjogICAgYWRkcyAgIHIxLCBy
MSwgIzUKICAgIDB4YjZmMDNjMzg6ICAgIG12biAgICByMTIsICMxCiAgICAweGI2ZjAzYzNjOiAg
ICBhbmQgICAgcjEsIHIxLCByMTIKICAgIDB4YjZmMDNjNDA6ICAgIG1vdiAgICByMTIsICM4CiAg
ICAweGI2ZjAzYzQ0OiAgICBzbXVsbCAgcjEsIHIxMiwgcjEsIHIxMgogICAgMHhiNmYwM2M0ODog
ICAgbGRyICAgIGxyLCBbcjcsICM0XQogICAgMHhiNmYwM2M0YzogICAgc3VicyAgIHIxLCAjOAog
ICAgMHhiNmYwM2M0ZTogICAgc3VicyAgIHIzLCByMywgcjEKICAgIDB4YjZmMDNjNTA6ICAgIGxk
ciAgICByNywgW3I3XQogICAgMHhiNmYwM2M1MjogICAgc3VicyAgIHIxLCByMSwgIzQKICAgIDB4
YjZmMDNjNTQ6ICAgIGxkciAgICByMiwgW3NwLCByMV0KICAgIDB4YjZmMDNjNTg6ICAgIHN0ciAg
ICByMiwgW3IzLCByMV0KICAgIDB4YjZmMDNjNWE6ICAgIHRzdCAgICByMSwgcjEKICAgIDB4YjZm
MDNjNWM6ICAgIGJuZSAgICAweGI2ZjAzZTUyCiAgICAweGI2ZjAzYzVlOiAgICBtb3YgICAgc3As
IHIzCiAgICAweGI2ZjAzYzYwOiAgICBieCAgICAgcjAKR2VuZXJhdGVkIEJhc2VsaW5lIEpJVCBj
b2RlIGZvciBvcGFxdWVQb3cjQzZraGU5OlsweGI0NzkzN2UwLT4weGI0N2Q1YWMwLCBCYXNlbGlu
ZUZ1bmN0aW9uQ2FsbCwgNDcgKE5ldmVySW5saW5lKV0sIGluc3RydWN0aW9uIGNvdW50ID0gNDcK
ICAgU291cmNlOiBmdW5jdGlvbiBvcGFxdWVQb3coYSwgYikgeyByZXR1cm4gTWF0aC5wb3coYSwg
Yik7IH0KICAgQ29kZSBhdCBbMHhiNmYwMWI4MCwgMHhiNmYwMjA4YSk6CiAgICAgICAgMHhiNmYw
MWI4MDogICAgbm9wICAgIAogICAgICAgIDB4YjZmMDFiODI6ICAgIHB1c2ggICB7cjcsIGxyfQog
ICAgICAgIDB4YjZmMDFiODY6ICAgIG1vdiAgICByNywgc3AKICAgICAgICAweGI2ZjAxYjg4OiAg
ICBtb3Z3ICAgcjEyLCAjMTQzMDQKICAgICAgICAweGI2ZjAxYjhjOiAgICBtb3Z0ICAgcjEyLCAj
NDYyMDEKICAgICAgICAweGI2ZjAxYjkwOiAgICBzdHIgICAgcjEyLCBbcjcsICM4XQogICAgICAg
IDB4YjZmMDFiOTQ6ICAgIGxkciAgICByMCwgW3I3LCAjMzJdCiAgICAgICAgMHhiNmYwMWI5Njog
ICAgbGRyICAgIHIxLCBbcjcsICMzNl0KICAgICAgICAweGI2ZjAxYjk4OiAgICBtb3Z3ICAgcjYs
ICMzMzcyOAogICAgICAgIDB4YjZmMDFiOWM6ICAgIG1vdnQgICByNiwgIzQ2MjY5CiAgICAgICAg
MHhiNmYwMWJhMDogICAgc3RyICAgIHIwLCBbcjZdCiAgICAgICAgMHhiNmYwMWJhMjogICAgbW92
dyAgIHI2LCAjMzM3MzIKICAgICAgICAweGI2ZjAxYmE2OiAgICBtb3Z0ICAgcjYsICM0NjI2OQog
ICAgICAgIDB4YjZmMDFiYWE6ICAgIHN0ciAgICByMSwgW3I2XQogICAgICAgIDB4YjZmMDFiYWM6
ICAgIGxkciAgICByMCwgW3I3LCAjNDBdCiAgICAgICAgMHhiNmYwMWJhZTogICAgbGRyICAgIHIx
LCBbcjcsICM0NF0KICAgICAgICAweGI2ZjAxYmIwOiAgICBtb3Z3ICAgcjYsICMzMzc2MAogICAg
ICAgIDB4YjZmMDFiYjQ6ICAgIG1vdnQgICByNiwgIzQ2MjY5CiAgICAgICAgMHhiNmYwMWJiODog
ICAgc3RyICAgIHIwLCBbcjZdCiAgICAgICAgMHhiNmYwMWJiYTogICAgbW92dyAgIHI2LCAjMzM3
NjQKICAgICAgICAweGI2ZjAxYmJlOiAgICBtb3Z0ICAgcjYsICM0NjI2OQogICAgICAgIDB4YjZm
MDFiYzI6ICAgIHN0ciAgICByMSwgW3I2XQogICAgICAgIDB4YjZmMDFiYzQ6ICAgIGxkciAgICBy
MCwgW3I3LCAjNDhdCiAgICAgICAgMHhiNmYwMWJjNjogICAgbGRyICAgIHIxLCBbcjcsICM1Ml0K
ICAgICAgICAweGI2ZjAxYmM4OiAgICBtb3Z3ICAgcjYsICMzMzc5MgogICAgICAgIDB4YjZmMDFi
Y2M6ICAgIG1vdnQgICByNiwgIzQ2MjY5CiAgICAgICAgMHhiNmYwMWJkMDogICAgc3RyICAgIHIw
LCBbcjZdCiAgICAgICAgMHhiNmYwMWJkMjogICAgbW92dyAgIHI2LCAjMzM3OTYKICAgICAgICAw
eGI2ZjAxYmQ2OiAgICBtb3Z0ICAgcjYsICM0NjI2OQogICAgICAgIDB4YjZmMDFiZGE6ICAgIHN0
ciAgICByMSwgW3I2XQogICAgICAgIDB4YjZmMDFiZGM6ICAgIG12biAgICByMTIsICMxMTkKICAg
ICAgICAweGI2ZjAxYmUwOiAgICBhZGQgICAgcjEsIHI3LCByMTIKICAgICAgICAweGI2ZjAxYmU0
OiAgICBtb3Z3ICAgcjYsICM0NjM0MAogICAgICAgIDB4YjZmMDFiZTg6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAgICAgMHhiNmYwMWJlYzogICAgbGRyICAgIHIxMiwgW3I2XQogICAgICAgIDB4
YjZmMDFiZjA6ICAgIGNtcCAgICByMTIsIHIxCiAgICAgICAgMHhiNmYwMWJmNDogICAgYmhpICAg
IDB4YjZmMDFmOTQKICAgICAgICAweGI2ZjAxYmY4OiAgICBtb3YgICAgc3AsIHIxCiAgICBbICAg
MF0gZW50ZXIgICAgICAgICAgICAgCiAgICAgICAgMHhiNmYwMWJmYTogICAgbW92dyAgIHI2LCAj
MTQ1ODQKICAgICAgICAweGI2ZjAxYmZlOiAgICBtb3Z0ICAgcjYsICM0NjIwMQogICAgICAgIDB4
YjZmMDFjMDI6ICAgIGxkciAgICByMTIsIFtyNl0KICAgICAgICAweGI2ZjAxYzA2OiAgICBhZGQg
ICAgcjEyLCByMTIsICMxNQogICAgICAgIDB4YjZmMDFjMGE6ICAgIHN0ciAgICByMTIsIFtyNl0K
ICAgICAgICAweGI2ZjAxYzBlOiAgICBibWkgICAgMHhiNmYwMWM0YwogICAgICAgIDB4YjZmMDFj
MTA6ICAgIG1vdnMgICByMSwgIzAKICAgICAgICAweGI2ZjAxYzEyOiAgICBtb3YgICAgcjAsIHI3
CiAgICAgICAgMHhiNmYwMWMxNDogICAgbW92dyAgIHIxMiwgIzMyNzgwCiAgICAgICAgMHhiNmYw
MWMxODogICAgbW92dCAgIHIxMiwgIzQ2MjY0CiAgICAgICAgMHhiNmYwMWMxYzogICAgc3RyICAg
IHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNmYwMWMyMDogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgICAgICAweGI2ZjAxYzI0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjZmMDFj
Mjg6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjZmMDFjMmE6ICAgIG1vdncgICByMTIs
ICMyMzE3MwogICAgICAgIDB4YjZmMDFjMmU6ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAgICAg
IDB4YjZmMDFjMzI6ICAgIGJseCAgICByMTIKICAgICAgICAweGI2ZjAxYzM0OiAgICBtb3Z3ICAg
cjYsICM0NjM0OAogICAgICAgIDB4YjZmMDFjMzg6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAg
ICAgMHhiNmYwMWMzYzogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNmYwMWMzZTogICAg
Y21wICAgIHIyLCAjMAogICAgICAgIDB4YjZmMDFjNDA6ICAgIGJuZSAgICAweGI2ZjAyMDZhCiAg
ICAgICAgMHhiNmYwMWM0NDogICAgdHN0ICAgIHIwLCByMAogICAgICAgIDB4YjZmMDFjNDY6ICAg
IGJlcSAgICAweGI2ZjAxYzRjCiAgICAgICAgMHhiNmYwMWM0ODogICAgbW92ICAgIHNwLCByMQog
ICAgICAgIDB4YjZmMDFjNGE6ICAgIGJ4ICAgICByMAogICAgICAgIDB4YjZmMDFjNGM6ICAgIG1v
diAgICByMTIsICMwCiAgICAgICAgMHhiNmYwMWM1MDogICAgc3RyICAgIHIxMiwgW3I3LCAjLThd
CiAgICAgICAgMHhiNmYwMWM1NDogICAgbXZuICAgIHIxMiwgIzMKICAgICAgICAweGI2ZjAxYzU4
OiAgICBzdHIgICAgcjEyLCBbcjcsICMtNF0KICAgICAgICAweGI2ZjAxYzVjOiAgICBtb3YgICAg
cjEyLCAjMAogICAgICAgIDB4YjZmMDFjNjA6ICAgIHN0ciAgICByMTIsIFtyNywgIy0xNl0KICAg
ICAgICAweGI2ZjAxYzY0OiAgICBtdm4gICAgcjEyLCAjMwogICAgICAgIDB4YjZmMDFjNjg6ICAg
IHN0ciAgICByMTIsIFtyNywgIy0xMl0KICAgICAgICAweGI2ZjAxYzZjOiAgICBtb3YgICAgcjEy
LCAjMAogICAgICAgIDB4YjZmMDFjNzA6ICAgIHN0ciAgICByMTIsIFtyNywgIy0yNF0KICAgICAg
ICAweGI2ZjAxYzc0OiAgICBtdm4gICAgcjEyLCAjMwogICAgICAgIDB4YjZmMDFjNzg6ICAgIHN0
ciAgICByMTIsIFtyNywgIy0yMF0KICAgICAgICAweGI2ZjAxYzdjOiAgICBtb3Z3ICAgcjEyLCAj
MzI3ODAKICAgICAgICAweGI2ZjAxYzgwOiAgICBtb3Z0ICAgcjEyLCAjNDYyNjQKICAgICAgICAw
eGI2ZjAxYzg0OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI2ZjAxYzg4OiAg
ICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjZmMDFjOGM6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAgICAgMHhiNmYwMWM5MDogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNmYw
MWM5MjogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjZmMDFjOTQ6ICAgIG1vdncgICByMSwg
IzMyNzc2CiAgICAgICAgMHhiNmYwMWM5ODogICAgbW92dCAgIHIxLCAjNDYyNjQKICAgICAgICAw
eGI2ZjAxYzljOiAgICBtb3Z3ICAgcjEyLCAjMTk2NjkKICAgICAgICAweGI2ZjAxY2EwOiAgICBt
b3Z0ICAgcjEyLCAjNDY3OTMKICAgICAgICAweGI2ZjAxY2E0OiAgICBibHggICAgcjEyCiAgICAg
ICAgMHhiNmYwMWNhNjogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI2ZjAxY2FhOiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjZmMDFjYWU6ICAgIGxkciAgICByNiwgW3I2
XQogICAgICAgIDB4YjZmMDFjYjA6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI2ZjAxY2Iy
OiAgICBibmUgICAgMHhiNmYwMjA2YQogICAgWyAgIDFdIGdldF9zY29wZSAgICAgICAgIGxvYzAK
ICAgICAgICAweGI2ZjAxY2I2OiAgICBsZHIgICAgcjAsIFtyNywgIzE2XQogICAgICAgIDB4YjZm
MDFjYjg6ICAgIGxkciAgICByMCwgW3IwLCAjMTZdCiAgICAgICAgMHhiNmYwMWNiYTogICAgc3Ry
ICAgIHIwLCBbcjcsICMtOF0KICAgICAgICAweGI2ZjAxY2JlOiAgICBtdm4gICAgcjEyLCAjNAog
ICAgICAgIDB4YjZmMDFjYzI6ICAgIHN0ciAgICByMTIsIFtyNywgIy00XQogICAgWyAgIDNdIG1v
diAgICAgICAgICAgICAgIGxvYzEsIGxvYzAKICAgICAgICAweGI2ZjAxY2M2OiAgICBsZHIgICAg
cjAsIFtyNywgIy04XQogICAgICAgIDB4YjZmMDFjY2E6ICAgIGxkciAgICByMSwgW3I3LCAjLTRd
CiAgICAgICAgMHhiNmYwMWNjZTogICAgc3RyICAgIHIwLCBbcjcsICMtMTZdCiAgICAgICAgMHhi
NmYwMWNkMjogICAgc3RyICAgIHIxLCBbcjcsICMtMTJdCiAgICBbICAgNl0gcmVzb2x2ZV9zY29w
ZSAgICAgbG9jNywgbG9jMCwgTWF0aChAaWQwKSwgPEdsb2JhbFByb3BlcnR5PiwgMiwgMHhiNDdl
NzhjMAogICAgICAgIDB4YjZmMDFjZDY6ICAgIG12biAgICByMSwgIzQKICAgICAgICAweGI2ZjAx
Y2RhOiAgICBtb3Z3ICAgcjAsICMzMDkxMgogICAgICAgIDB4YjZmMDFjZGU6ICAgIG1vdnQgICBy
MCwgIzQ2MjA2CiAgICAgICAgMHhiNmYwMWNlMjogICAgc3RyICAgIHIwLCBbcjcsICMtNjRdCiAg
ICAgICAgMHhiNmYwMWNlNjogICAgc3RyICAgIHIxLCBbcjcsICMtNjBdCiAgICBbICAxM10gZ2V0
X2Zyb21fc2NvcGUgICAgbG9jNywgbG9jNywgTWF0aChAaWQwKSwgMjA0ODxUaHJvd0lmTm90Rm91
bmR8R2xvYmFsUHJvcGVydHl8Tm90SW5pdGlhbGl6YXRpb24+LCAxMjcgICAgcHJlZGljdGluZyBP
dGhlcm9iagogICAgICAgIDB4YjZmMDFjZWE6ICAgIGxkciAgICByMCwgW3I3LCAjLTY0XQogICAg
ICAgIDB4YjZmMDFjZWU6ICAgIGxkciAgICByMSwgW3I3LCAjLTYwXQogICAgICAgIDB4YjZmMDFj
ZjI6ICAgIG1vdncgICByNiwgIzMyODQ4CiAgICAgICAgMHhiNmYwMWNmNjogICAgbW92dCAgIHI2
LCAjNDYyNjQKICAgICAgICAweGI2ZjAxY2ZhOiAgICBsZHIgICAgcjIsIFtyNl0KICAgICAgICAw
eGI2ZjAxY2ZjOiAgICBsZHIgICAgcjEyLCBbcjBdCiAgICAgICAgMHhiNmYwMWQwMDogICAgY21w
ICAgIHIxMiwgcjIKICAgICAgICAweGI2ZjAxZDA0OiAgICBibmUgICAgMHhiNmYwMWU0NgogICAg
ICAgIDB4YjZmMDFkMDg6ICAgIG1vdiAgICByMiwgcjAKICAgICAgICAweGI2ZjAxZDBhOiAgICBt
b3Z3ICAgcjYsICMzMjg1MgogICAgICAgIDB4YjZmMDFkMGU6ICAgIG1vdnQgICByNiwgIzQ2MjY0
CiAgICAgICAgMHhiNmYwMWQxMjogICAgbGRyICAgIHIzLCBbcjZdCiAgICAgICAgMHhiNmYwMWQx
NDogICAgbGRyICAgIHIyLCBbcjIsICM4XQogICAgICAgIDB4YjZmMDFkMTY6ICAgIHJzYiAgICBy
MywgcjMsICMwCiAgICAgICAgMHhiNmYwMWQxODogICAgYWRkdyAgIHI2LCByMiwgIzc4NAogICAg
ICAgIDB4YjZmMDFkMWM6ICAgIGxkciAgICByMCwgW3I2LCByMywgIzNdCiAgICAgICAgMHhiNmYw
MWQyMDogICAgYWRkdyAgIHI2LCByMiwgIzc4OAogICAgICAgIDB4YjZmMDFkMjQ6ICAgIGxkciAg
ICByMSwgW3I2LCByMywgIzNdCiAgICAgICAgMHhiNmYwMWQyODogICAgbW92dyAgIHI2LCAjMzM4
MzIKICAgICAgICAweGI2ZjAxZDJjOiAgICBtb3Z0ICAgcjYsICM0NjI2OQogICAgICAgIDB4YjZm
MDFkMzA6ICAgIHN0ciAgICByMCwgW3I2XQogICAgICAgIDB4YjZmMDFkMzI6ICAgIG1vdncgICBy
NiwgIzMzODM2CiAgICAgICAgMHhiNmYwMWQzNjogICAgbW92dCAgIHI2LCAjNDYyNjkKICAgICAg
ICAweGI2ZjAxZDNhOiAgICBzdHIgICAgcjEsIFtyNl0KICAgICAgICAweGI2ZjAxZDNjOiAgICBz
dHIgICAgcjAsIFtyNywgIy02NF0KICAgICAgICAweGI2ZjAxZDQwOiAgICBzdHIgICAgcjEsIFty
NywgIy02MF0KICAgIFsgIDIxXSBnZXRfYnlfaWQgICAgICAgICBsb2MzLCBsb2M3LCBwb3coQGlk
MSkgbGxpbnQoc3RydWN0ID0gMHhiNDdjMmFhMCAob2Zmc2V0ID0gMTMzKSkgICAgcHJlZGljdGlu
ZyBGdW5jdGlvbgogICAgICAgIDB4YjZmMDFkNDQ6ICAgIGxkciAgICByMCwgW3I3LCAjLTY0XQog
ICAgICAgIDB4YjZmMDFkNDg6ICAgIGxkciAgICByMSwgW3I3LCAjLTYwXQogICAgICAgIDB4YjZm
MDFkNGM6ICAgIGNtbiAgICByMSwgIzUKICAgICAgICAweGI2ZjAxZDUwOiAgICBibmUgICAgMHhi
NmYwMWViYQogICAgICAgIDB4YjZmMDFkNTQ6ICAgIGxkciAgICByNiwgW3IwXQogICAgICAgIDB4
YjZmMDFkNTY6ICAgIG1vdncgICByMTIsICMwCiAgICAgICAgMHhiNmYwMWQ1YTogICAgbW92dCAg
IHIxMiwgIzAKICAgICAgICAweGI2ZjAxZDVlOiAgICBjbXAgICAgcjYsIHIxMgogICAgICAgIDB4
YjZmMDFkNjI6ICAgIGl0dHQgICBuZQogICAgICAgIDB4YjZmMDFkNjQ6ICAgIG1vdnduZSByMTIs
ICM3ODY3CiAgICAgICAgMHhiNmYwMWQ2ODogICAgbW92dG5lIHIxMiwgIzQ2ODMyCiAgICAgICAg
MHhiNmYwMWQ2YzogICAgYnhuZSAgIHIxMgogICAgICAgIDB4YjZmMDFkNmU6ICAgIGxkciAgICBy
MSwgW3IwXQogICAgICAgIDB4YjZmMDFkNzI6ICAgIGxkciAgICByMCwgW3IwXQogICAgICAgIDB4
YjZmMDFkNzY6ICAgIG1vdncgICByNiwgIzMzODY0CiAgICAgICAgMHhiNmYwMWQ3YTogICAgbW92
dCAgIHI2LCAjNDYyNjkKICAgICAgICAweGI2ZjAxZDdlOiAgICBzdHIgICAgcjAsIFtyNl0KICAg
ICAgICAweGI2ZjAxZDgwOiAgICBtb3Z3ICAgcjYsICMzMzg2OAogICAgICAgIDB4YjZmMDFkODQ6
ICAgIG1vdnQgICByNiwgIzQ2MjY5CiAgICAgICAgMHhiNmYwMWQ4ODogICAgc3RyICAgIHIxLCBb
cjZdCiAgICAgICAgMHhiNmYwMWQ4YTogICAgc3RyICAgIHIwLCBbcjcsICMtMzJdCiAgICAgICAg
MHhiNmYwMWQ4ZTogICAgc3RyICAgIHIxLCBbcjcsICMtMjhdCiAgICBbICAzMF0gbW92ICAgICAg
ICAgICAgICAgbG9jNiwgYXJnMQogICAgICAgIDB4YjZmMDFkOTI6ICAgIGxkciAgICByMCwgW3I3
LCAjNDBdCiAgICAgICAgMHhiNmYwMWQ5NDogICAgbGRyICAgIHIxLCBbcjcsICM0NF0KICAgICAg
ICAweGI2ZjAxZDk2OiAgICBzdHIgICAgcjAsIFtyNywgIy01Nl0KICAgICAgICAweGI2ZjAxZDlh
OiAgICBzdHIgICAgcjEsIFtyNywgIy01Ml0KICAgIFsgIDMzXSBtb3YgICAgICAgICAgICAgICBs
b2M1LCBhcmcyCiAgICAgICAgMHhiNmYwMWQ5ZTogICAgbGRyICAgIHIwLCBbcjcsICM0OF0KICAg
ICAgICAweGI2ZjAxZGEwOiAgICBsZHIgICAgcjEsIFtyNywgIzUyXQogICAgICAgIDB4YjZmMDFk
YTI6ICAgIHN0ciAgICByMCwgW3I3LCAjLTQ4XQogICAgICAgIDB4YjZmMDFkYTY6ICAgIHN0ciAg
ICByMSwgW3I3LCAjLTQ0XQogICAgWyAgMzZdIGNhbGwgICAgICAgICAgICAgIGxvYzMsIGxvYzMs
IDMsIDEyIGxsaW50KDB4YjQ3ZjIyYTAsIGV4ZWMgMHhiNDdlMTRjMCkgc3RhdHVzKChGdW5jdGlv
bjogQ2VsbDogMHhiNDdmMjJhMCAoMHhiNDdmNmUxMDpbRnVuY3Rpb24sIHtuYW1lOjEwMCwgbGVu
Z3RoOjEwMX0sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwLCBMZWFmXSk7IEV4ZWN1dGFibGU6
IE5hdGl2ZUV4ZWN1dGFibGU6MHhiNmQ2ZDQyZC8weGY2MzApKSAgICBOb25BcnJheTsgcHJlZGlj
dGluZyBOb25pbnRhc2RvdWJsZQogICAgICAgIDB4YjZmMDFkYWE6ICAgIGxkciAgICByMSwgW3I3
LCAjLTY0XQogICAgICAgIDB4YjZmMDFkYWU6ICAgIGxkciAgICByMCwgW3I3LCAjLTYwXQogICAg
ICAgIDB4YjZmMDFkYjI6ICAgIGNtbiAgICByMCwgIzUKICAgICAgICAweGI2ZjAxZGI2OiAgICBi
bmUgICAgMHhiNmYwMWRjNAogICAgICAgIDB4YjZmMDFkYjg6ICAgIGxkciAgICByMSwgW3IxXQog
ICAgICAgIDB4YjZmMDFkYmE6ICAgIG1vdncgICByNiwgIzQxNDc2CiAgICAgICAgMHhiNmYwMWRi
ZTogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgICAgICAweGI2ZjAxZGMyOiAgICBzdHIgICAgcjEs
IFtyNl0KICAgICAgICAweGI2ZjAxZGM0OiAgICBtb3YgICAgc3AsIHI3CiAgICAgICAgMHhiNmYw
MWRjNjogICAgbXZuICAgIHIxMiwgIzg3CiAgICAgICAgMHhiNmYwMWRjYTogICAgbW92ICAgIHNw
LCBzcAogICAgICAgIDB4YjZmMDFkY2M6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAgICAgMHhiNmYw
MWRjZTogICAgbW92ICAgIHIxMiwgIzMKICAgICAgICAweGI2ZjAxZGQyOiAgICBzdHIgICAgcjEy
LCBbc3AsICMxNl0KICAgICAgICAweGI2ZjAxZGQ2OiAgICBtb3Z3ICAgcjEyLCAjMzI5MjAKICAg
ICAgICAweGI2ZjAxZGRhOiAgICBtb3Z0ICAgcjEyLCAjNDYyNjQKICAgICAgICAweGI2ZjAxZGRl
OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI2ZjAxZGUyOiAgICBsZHIgICAg
cjAsIFtyNywgIy0zMl0KICAgICAgICAweGI2ZjAxZGU2OiAgICBsZHIgICAgcjEsIFtyNywgIy0y
OF0KICAgICAgICAweGI2ZjAxZGVhOiAgICBzdHIgICAgcjAsIFtzcCwgIzhdCiAgICAgICAgMHhi
NmYwMWRlYzogICAgc3RyICAgIHIxLCBbc3AsICMxMl0KICAgICAgICAweGI2ZjAxZGVlOiAgICBj
bW4gICAgcjEsICM1CiAgICAgICAgMHhiNmYwMWRmMjogICAgYm5lICAgIDB4YjZmMDFmM2UKICAg
ICAgICAweGI2ZjAxZGY2OiAgICBtb3Z3ICAgcjEyLCAjMAogICAgICAgIDB4YjZmMDFkZmE6ICAg
IG1vdnQgICByMTIsICMwCiAgICAgICAgMHhiNmYwMWRmZTogICAgY21wICAgIHIwLCByMTIKICAg
ICAgICAweGI2ZjAxZTAyOiAgICBibmUgICAgMHhiNmYwMWYzZQogICAgICAgIDB4YjZmMDFlMDY6
ICAgIG1vdncgICByMTIsICMwCiAgICAgICAgMHhiNmYwMWUwYTogICAgbW92dCAgIHIxMiwgIzAK
ICAgICAgICAweGI2ZjAxZTBlOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNmYwMWUxMDogICAg
bW92ICAgIHNwLCByNwogICAgICAgIDB4YjZmMDFlMTI6ICAgIG12biAgICByMTIsICMxMTkKICAg
ICAgICAweGI2ZjAxZTE2OiAgICBtb3YgICAgc3AsIHNwCiAgICAgICAgMHhiNmYwMWUxODogICAg
YWRkICAgIHNwLCByMTIKICAgICAgICAweGI2ZjAxZTFhOiAgICBtb3Z3ICAgcjYsICMzMzg5Ngog
ICAgICAgIDB4YjZmMDFlMWU6ICAgIG1vdnQgICByNiwgIzQ2MjY5CiAgICAgICAgMHhiNmYwMWUy
MjogICAgc3RyICAgIHIwLCBbcjZdCiAgICAgICAgMHhiNmYwMWUyNDogICAgbW92dyAgIHI2LCAj
MzM5MDAKICAgICAgICAweGI2ZjAxZTI4OiAgICBtb3Z0ICAgcjYsICM0NjI2OQogICAgICAgIDB4
YjZmMDFlMmM6ICAgIHN0ciAgICByMSwgW3I2XQogICAgICAgIDB4YjZmMDFlMmU6ICAgIHN0ciAg
ICByMCwgW3I3LCAjLTMyXQogICAgICAgIDB4YjZmMDFlMzI6ICAgIHN0ciAgICByMSwgW3I3LCAj
LTI4XQogICAgWyAgNDVdIHJldCAgICAgICAgICAgICAgIGxvYzMKICAgICAgICAweGI2ZjAxZTM2
OiAgICBsZHIgICAgcjAsIFtyNywgIy0zMl0KICAgICAgICAweGI2ZjAxZTNhOiAgICBsZHIgICAg
cjEsIFtyNywgIy0yOF0KICAgICAgICAweGI2ZjAxZTNlOiAgICBtb3YgICAgc3AsIHI3CiAgICAg
ICAgMHhiNmYwMWU0MDogICAgcG9wICAgIHtyNywgbHJ9CiAgICAgICAgMHhiNmYwMWU0NDogICAg
YnggICAgIGxyCiAgICAoRW5kIE9mIE1haW4gUGF0aCkKICAgIChTKSBbICAxM10gZ2V0X2Zyb21f
c2NvcGUgICAgbG9jNywgbG9jNywgTWF0aChAaWQwKSwgMjA0ODxUaHJvd0lmTm90Rm91bmR8R2xv
YmFsUHJvcGVydHl8Tm90SW5pdGlhbGl6YXRpb24+LCAxMjcgICAgcHJlZGljdGluZyBPdGhlcm9i
agogICAgICAgIDB4YjZmMDFlNDY6ICAgIG1vdncgICByMSwgIzMyODI4CiAgICAgICAgMHhiNmYw
MWU0YTogICAgbW92dCAgIHIxLCAjNDYyNjQKICAgICAgICAweGI2ZjAxZTRlOiAgICBtb3YgICAg
cjAsIHI3CiAgICAgICAgMHhiNmYwMWU1MDogICAgbW92dyAgIHIxMiwgIzMyODMyCiAgICAgICAg
MHhiNmYwMWU1NDogICAgbW92dCAgIHIxMiwgIzQ2MjY0CiAgICAgICAgMHhiNmYwMWU1ODogICAg
c3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNmYwMWU1YzogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgICAgICAweGI2ZjAxZTYwOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4
YjZmMDFlNjQ6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjZmMDFlNjY6ICAgIG1vdncg
ICByMTIsICMxMzE4NQogICAgICAgIDB4YjZmMDFlNmE6ICAgIG1vdnQgICByMTIsICM0Njc3Nwog
ICAgICAgIDB4YjZmMDFlNmU6ICAgIGJseCAgICByMTIKICAgICAgICAweGI2ZjAxZTcwOiAgICBt
b3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjZmMDFlNzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAgICAgMHhiNmYwMWU3ODogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNmYwMWU3
YTogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjZmMDFlN2M6ICAgIGJuZSAgICAweGI2ZjAy
MDZhCiAgICAgICAgMHhiNmYwMWU4MDogICAgbW92dyAgIHI2LCAjMzM4MzIKICAgICAgICAweGI2
ZjAxZTg0OiAgICBtb3Z0ICAgcjYsICM0NjI2OQogICAgICAgIDB4YjZmMDFlODg6ICAgIHN0ciAg
ICByMCwgW3I2XQogICAgICAgIDB4YjZmMDFlOGE6ICAgIG1vdncgICByNiwgIzMzODM2CiAgICAg
ICAgMHhiNmYwMWU4ZTogICAgbW92dCAgIHI2LCAjNDYyNjkKICAgICAgICAweGI2ZjAxZTkyOiAg
ICBzdHIgICAgcjEsIFtyNl0KICAgICAgICAweGI2ZjAxZTk0OiAgICBzdHIgICAgcjAsIFtyNywg
Iy02NF0KICAgICAgICAweGI2ZjAxZTk4OiAgICBzdHIgICAgcjEsIFtyNywgIy02MF0KICAgICAg
ICAweGI2ZjAxZTljOiAgICBtb3Z3ICAgcjYsICMzNjU0OAogICAgICAgIDB4YjZmMDFlYTA6ICAg
IG1vdnQgICByNiwgIzQ2MjY2CiAgICAgICAgMHhiNmYwMWVhNDogICAgbGRyICAgIHIxMiwgW3I2
XQogICAgICAgIDB4YjZmMDFlYTg6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgICAgICAweGI2
ZjAxZWFjOiAgICBtb3Z3ICAgcjYsICMzNjU0OAogICAgICAgIDB4YjZmMDFlYjA6ICAgIG1vdnQg
ICByNiwgIzQ2MjY2CiAgICAgICAgMHhiNmYwMWViNDogICAgc3RyICAgIHIxMiwgW3I2XQogICAg
ICAgIDB4YjZmMDFlYjg6ICAgIGIgICAgICAweGI2ZjAyZDQ0CiAgICAoUykgWyAgMjFdIGdldF9i
eV9pZCAgICAgICAgIGxvYzMsIGxvYzcsIHBvdyhAaWQxKSBsbGludChzdHJ1Y3QgPSAweGI0N2My
YWEwIChvZmZzZXQgPSAxMzMpKSAgICBwcmVkaWN0aW5nIEZ1bmN0aW9uCiAgICAgICAgMHhiNmYw
MWViYTogICAgbW92dyAgIHIxMiwgIzI3Mjg4CiAgICAgICAgMHhiNmYwMWViZTogICAgbW92dCAg
IHIxMiwgIzQ2MjY3CiAgICAgICAgMHhiNmYwMWVjMjogICAgc3RyICAgIHIxMiwgW3NwXQogICAg
ICAgIDB4YjZmMDFlYzY6ICAgIG1vdiAgICByMiwgcjAKICAgICAgICAweGI2ZjAxZWM4OiAgICBt
b3YgICAgcjMsIHIxCiAgICAgICAgMHhiNmYwMWVjYTogICAgbW92dyAgIHIxLCAjNTE1MjgKICAg
ICAgICAweGI2ZjAxZWNlOiAgICBtb3Z0ICAgcjEsICM0NjI2NAogICAgICAgIDB4YjZmMDFlZDI6
ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI2ZjAxZWQ0OiAgICBtb3Z3ICAgcjEyLCAjMzI4
NjQKICAgICAgICAweGI2ZjAxZWQ4OiAgICBtb3Z0ICAgcjEyLCAjNDYyNjQKICAgICAgICAweGI2
ZjAxZWRjOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI2ZjAxZWUwOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjZmMDFlZTQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAgICAgMHhiNmYwMWVlODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNmYwMWVl
YTogICAgbW92dyAgIHIxMiwgIzE4NTEzCiAgICAgICAgMHhiNmYwMWVlZTogICAgbW92dCAgIHIx
MiwgIzQ2Nzc3CiAgICAgICAgMHhiNmYwMWVmMjogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjZm
MDFlZjQ6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNmYwMWVmODogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgICAgICAweGI2ZjAxZWZjOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAg
ICAweGI2ZjAxZWZlOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNmYwMWYwMDogICAgYm5l
ICAgIDB4YjZmMDIwNmEKICAgICAgICAweGI2ZjAxZjA0OiAgICBtb3Z3ICAgcjYsICMzMzg2NAog
ICAgICAgIDB4YjZmMDFmMDg6ICAgIG1vdnQgICByNiwgIzQ2MjY5CiAgICAgICAgMHhiNmYwMWYw
YzogICAgc3RyICAgIHIwLCBbcjZdCiAgICAgICAgMHhiNmYwMWYwZTogICAgbW92dyAgIHI2LCAj
MzM4NjgKICAgICAgICAweGI2ZjAxZjEyOiAgICBtb3Z0ICAgcjYsICM0NjI2OQogICAgICAgIDB4
YjZmMDFmMTY6ICAgIHN0ciAgICByMSwgW3I2XQogICAgICAgIDB4YjZmMDFmMTg6ICAgIHN0ciAg
ICByMCwgW3I3LCAjLTMyXQogICAgICAgIDB4YjZmMDFmMWM6ICAgIHN0ciAgICByMSwgW3I3LCAj
LTI4XQogICAgICAgIDB4YjZmMDFmMjA6ICAgIG1vdncgICByNiwgIzM2NTU2CiAgICAgICAgMHhi
NmYwMWYyNDogICAgbW92dCAgIHI2LCAjNDYyNjYKICAgICAgICAweGI2ZjAxZjI4OiAgICBsZHIg
ICAgcjEyLCBbcjZdCiAgICAgICAgMHhiNmYwMWYyYzogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQog
ICAgICAgIDB4YjZmMDFmMzA6ICAgIG1vdncgICByNiwgIzM2NTU2CiAgICAgICAgMHhiNmYwMWYz
NDogICAgbW92dCAgIHI2LCAjNDYyNjYKICAgICAgICAweGI2ZjAxZjM4OiAgICBzdHIgICAgcjEy
LCBbcjZdCiAgICAgICAgMHhiNmYwMWYzYzogICAgYiAgICAgIDB4YjZmMDJkOTIKICAgIChTKSBb
ICAzNl0gY2FsbCAgICAgICAgICAgICAgbG9jMywgbG9jMywgMywgMTIgbGxpbnQoMHhiNDdmMjJh
MCwgZXhlYyAweGI0N2UxNGMwKSBzdGF0dXMoKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YyMmEwICgw
eGI0N2Y2ZTEwOltGdW5jdGlvbiwge25hbWU6MTAwLCBsZW5ndGg6MTAxfSwgTm9uQXJyYXksIFBy
b3RvOjB4YjQ3ZWRkZTAsIExlYWZdKTsgRXhlY3V0YWJsZTogTmF0aXZlRXhlY3V0YWJsZToweGI2
ZDZkNDJkLzB4ZjYzMCkpICAgIE5vbkFycmF5OyBwcmVkaWN0aW5nIE5vbmludGFzZG91YmxlCiAg
ICAgICAgMHhiNmYwMWYzZTogICAgbW92dyAgIHIyLCAjNTE2MDAKICAgICAgICAweGI2ZjAxZjQy
OiAgICBtb3Z0ICAgcjIsICM0NjI2NAogICAgICAgIDB4YjZmMDFmNDY6ICAgIG1vdncgICByMTIs
ICMxNTMyOQogICAgICAgIDB4YjZmMDFmNGE6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgICAg
IDB4YjZmMDFmNGU6ICAgIGJseCAgICByMTIKICAgICAgICAweGI2ZjAxZjUwOiAgICBtb3YgICAg
c3AsIHI3CiAgICAgICAgMHhiNmYwMWY1MjogICAgbXZuICAgIHIxMiwgIzExOQogICAgICAgIDB4
YjZmMDFmNTY6ICAgIG1vdiAgICBzcCwgc3AKICAgICAgICAweGI2ZjAxZjU4OiAgICBhZGQgICAg
c3AsIHIxMgogICAgICAgIDB4YjZmMDFmNWE6ICAgIG1vdncgICByNiwgIzMzODk2CiAgICAgICAg
MHhiNmYwMWY1ZTogICAgbW92dCAgIHI2LCAjNDYyNjkKICAgICAgICAweGI2ZjAxZjYyOiAgICBz
dHIgICAgcjAsIFtyNl0KICAgICAgICAweGI2ZjAxZjY0OiAgICBtb3Z3ICAgcjYsICMzMzkwMAog
ICAgICAgIDB4YjZmMDFmNjg6ICAgIG1vdnQgICByNiwgIzQ2MjY5CiAgICAgICAgMHhiNmYwMWY2
YzogICAgc3RyICAgIHIxLCBbcjZdCiAgICAgICAgMHhiNmYwMWY2ZTogICAgc3RyICAgIHIwLCBb
cjcsICMtMzJdCiAgICAgICAgMHhiNmYwMWY3MjogICAgc3RyICAgIHIxLCBbcjcsICMtMjhdCiAg
ICAgICAgMHhiNmYwMWY3NjogICAgbW92dyAgIHI2LCAjMzY1NjQKICAgICAgICAweGI2ZjAxZjdh
OiAgICBtb3Z0ICAgcjYsICM0NjI2NgogICAgICAgIDB4YjZmMDFmN2U6ICAgIGxkciAgICByMTIs
IFtyNl0KICAgICAgICAweGI2ZjAxZjgyOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAgICAg
MHhiNmYwMWY4NjogICAgbW92dyAgIHI2LCAjMzY1NjQKICAgICAgICAweGI2ZjAxZjhhOiAgICBt
b3Z0ICAgcjYsICM0NjI2NgogICAgICAgIDB4YjZmMDFmOGU6ICAgIHN0ciAgICByMTIsIFtyNl0K
ICAgICAgICAweGI2ZjAxZjkyOiAgICBiICAgICAgMHhiNmYwMmUzNgogICAgKEVuZCBPZiBTbG93
IFBhdGgpCiAgICAgICAgMHhiNmYwMWY5NDogICAgbXZuICAgIHIxMiwgIzIzCiAgICAgICAgMHhi
NmYwMWY5ODogICAgbW92ICAgIHNwLCBzcAogICAgICAgIDB4YjZmMDFmOWE6ICAgIGFkZCAgICBz
cCwgcjEyCiAgICAgICAgMHhiNmYwMWY5YzogICAgbW92dyAgIHIxLCAjMTQzMDQKICAgICAgICAw
eGI2ZjAxZmEwOiAgICBtb3Z0ICAgcjEsICM0NjIwMQogICAgICAgIDB4YjZmMDFmYTQ6ICAgIG1v
diAgICByMCwgcjcKICAgICAgICAweGI2ZjAxZmE2OiAgICBtb3Z3ICAgcjEyLCAjMzI3ODAKICAg
ICAgICAweGI2ZjAxZmFhOiAgICBtb3Z0ICAgcjEyLCAjNDYyNjQKICAgICAgICAweGI2ZjAxZmFl
OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI2ZjAxZmIyOiAgICBtb3Z3ICAg
cjYsICM0MjEyOAogICAgICAgIDB4YjZmMDFmYjY6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAg
ICAgMHhiNmYwMWZiYTogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNmYwMWZiYzogICAg
bW92dyAgIHIxMiwgIzQ3OTA5CiAgICAgICAgMHhiNmYwMWZjMDogICAgbW92dCAgIHIxMiwgIzQ2
Nzc2CiAgICAgICAgMHhiNmYwMWZjNDogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjZmMDFmYzY6
ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNmYwMWZjYTogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgICAgICAweGI2ZjAxZmNlOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI2
ZjAxZmQwOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNmYwMWZkMjogICAgYm5lICAgIDB4
YjZmMDIwNGEKICAgICAgICAweGI2ZjAxZmQ0OiAgICBtb3YgICAgcjEyLCAjMAogICAgICAgIDB4
YjZmMDFmZDg6ICAgIG1vdncgICByNiwgIzE0MzI2CiAgICAgICAgMHhiNmYwMWZkYzogICAgbW92
dCAgIHI2LCAjNDYyMDEKICAgICAgICAweGI2ZjAxZmUwOiAgICAubG9uZyAgZjg4NmMwMDAKICAg
ICAgICAweGI2ZjAxZmU0OiAgICBwdXNoICAge3I3LCBscn0KICAgICAgICAweGI2ZjAxZmU4OiAg
ICBtb3YgICAgcjcsIHNwCiAgICAgICAgMHhiNmYwMWZlYTogICAgbW92dyAgIHIxMiwgIzE0MzA0
CiAgICAgICAgMHhiNmYwMWZlZTogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAgICAgMHhiNmYw
MWZmMjogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgICAgICAweGI2ZjAxZmY2OiAgICBsZHIg
ICAgcjEsIFtyNywgIzI0XQogICAgICAgIDB4YjZmMDFmZjg6ICAgIGNtcCAgICByMSwgIzMKICAg
ICAgICAweGI2ZjAxZmZhOiAgICBiaHMgICAgMHhiNmYwMWI5NAogICAgICAgIDB4YjZmMDFmZmU6
ICAgIG12biAgICByMTIsICMyMwogICAgICAgIDB4YjZmMDIwMDI6ICAgIG1vdiAgICBzcCwgc3AK
ICAgICAgICAweGI2ZjAyMDA0OiAgICBhZGQgICAgc3AsIHIxMgogICAgICAgIDB4YjZmMDIwMDY6
ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI2ZjAyMDA4OiAgICBtb3Z3ICAgcjEyLCAjMzI3
ODAKICAgICAgICAweGI2ZjAyMDBjOiAgICBtb3Z0ICAgcjEyLCAjNDYyNjQKICAgICAgICAweGI2
ZjAyMDEwOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI2ZjAyMDE0OiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjZmMDIwMTg6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAgICAgMHhiNmYwMjAxYzogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNmYwMjAx
ZTogICAgbW92dyAgIHIxMiwgIzQ3OTk3CiAgICAgICAgMHhiNmYwMjAyMjogICAgbW92dCAgIHIx
MiwgIzQ2Nzc2CiAgICAgICAgMHhiNmYwMjAyNjogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjZm
MDIwMjg6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNmYwMjAyYzogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgICAgICAweGI2ZjAyMDMwOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAg
ICAweGI2ZjAyMDMyOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNmYwMjAzNDogICAgYm5l
ICAgIDB4YjZmMDIwNGEKICAgICAgICAweGI2ZjAyMDM2OiAgICBhZGQgICAgc3AsIHNwLCAjNgog
ICAgICAgIDB4YjZmMDIwMzg6ICAgIHRzdCAgICByMCwgcjAKICAgICAgICAweGI2ZjAyMDNhOiAg
ICBiZXEgICAgMHhiNmYwMWI5NAogICAgICAgIDB4YjZmMDIwM2U6ICAgIG1vdncgICByMTIsICM2
OTEzCiAgICAgICAgMHhiNmYwMjA0MjogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAgICAgMHhi
NmYwMjA0NjogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjZmMDIwNDg6ICAgIGIgICAgICAweGI2
ZjAyYjk0CiAgICAgICAgMHhiNmYwMjA0YTogICAgbW92dyAgIHIwLCAjMzI3NjgKICAgICAgICAw
eGI2ZjAyMDRlOiAgICBtb3Z0ICAgcjAsICM0NjIwNwogICAgICAgIDB4YjZmMDIwNTI6ICAgIG1v
diAgICByMSwgcjcKICAgICAgICAweGI2ZjAyMDU0OiAgICBtb3Z3ICAgcjEyLCAjNjMyMzcKICAg
ICAgICAweGI2ZjAyMDU4OiAgICBtb3Z0ICAgcjEyLCAjNDY3NzYKICAgICAgICAweGI2ZjAyMDVj
OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNmYwMjA1ZTogICAgbW92dyAgIHI2LCAjNDYxODgK
ICAgICAgICAweGI2ZjAyMDYyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjZmMDIw
NjY6ICAgIGxkciAgICByMSwgW3I2XQogICAgICAgIDB4YjZmMDIwNjg6ICAgIGJ4ICAgICByMQog
ICAgICAgIDB4YjZmMDIwNmE6ICAgIG1vdncgICByMCwgIzMyNzY4CiAgICAgICAgMHhiNmYwMjA2
ZTogICAgbW92dCAgIHIwLCAjNDYyMDcKICAgICAgICAweGI2ZjAyMDcyOiAgICBtb3YgICAgcjEs
IHI3CiAgICAgICAgMHhiNmYwMjA3NDogICAgbW92dyAgIHIxMiwgIzYzMjI1CiAgICAgICAgMHhi
NmYwMjA3ODogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAgICAgMHhiNmYwMjA3YzogICAgYmx4
ICAgIHIxMgogICAgICAgIDB4YjZmMDIwN2U6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAgICAg
MHhiNmYwMjA4MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI2ZjAyMDg2OiAgICBs
ZHIgICAgcjEsIFtyNl0KICAgICAgICAweGI2ZjAyMDg4OiAgICBieCAgICAgcjEKRGVzdHJveWlu
ZyBKSVQgY29kZSBhdCAweGI2ZjA3OWEwLi4uMHhiNmYwNzljMApHZW5lcmF0ZWQgSklUIGNvZGUg
Zm9yIERGRyBPU1IgZXhpdCBnZW5lcmF0aW9uIHRodW5rOgogICAgQ29kZSBhdCBbMHhiNmYwM2M4
MSwgMHhiNmYwM2U2MSk6CiAgICAweGI2ZjAzYzgwOiAgICBwdXNoICAge3IxfQogICAgMHhiNmYw
M2M4MjogICAgbW92dyAgIHIxLCAjNTY2MTYKICAgIDB4YjZmMDNjODY6ICAgIG1vdnQgICByMSwg
IzQ2MjY5CiAgICAweGI2ZjAzYzhhOiAgICBzdHIgICAgcjAsIFtyMV0KICAgIDB4YjZmMDNjOGM6
ICAgIHBvcCAgICB7cjF9CiAgICAweGI2ZjAzYzhlOiAgICBtb3Z3ICAgcjYsICM0NjE4NAogICAg
MHhiNmYwM2M5MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDNjOTY6ICAgIGxkciAg
ICByMCwgW3I2XQogICAgMHhiNmYwM2M5ODogICAgdHN0ICAgIHIwLCByMAogICAgMHhiNmYwM2M5
YTogICAgYmVxICAgIDB4YjZmMDNjOWUKICAgIDB4YjZmMDNjOWM6ICAgIG1vdiAgICByNywgcjAK
ICAgIDB4YjZmMDNjOWU6ICAgIGxkciAgICByMCwgW3I3LCAjOF0KICAgIDB4YjZmMDNjYTA6ICAg
IGxkciAgICByMCwgW3IwLCAjOTZdCiAgICAweGI2ZjAzY2EyOiAgICBhZGRzICAgcjAsICMyNAog
ICAgMHhiNmYwM2NhNDogICAgbGRyICAgIHIwLCBbcjAsICMxMDBdCiAgICAweGI2ZjAzY2E2OiAg
ICByc2IgICAgcjAsIHIwLCAjMAogICAgMHhiNmYwM2NhODogICAgbW92ICAgIHIxMiwgIzgKICAg
IDB4YjZmMDNjYWM6ICAgIHNtdWxsICByMCwgcjEyLCByMCwgcjEyCiAgICAweGI2ZjAzY2IwOiAg
ICBhZGQgICAgcjAsIHI3CiAgICAweGI2ZjAzY2IyOiAgICBtb3YgICAgc3AsIHIwCiAgICAweGI2
ZjAzY2I0OiAgICBwdXNoICAge3IxfQogICAgMHhiNmYwM2NiNjogICAgbW92dyAgIHIxLCAjNTY2
MTYKICAgIDB4YjZmMDNjYmE6ICAgIG1vdnQgICByMSwgIzQ2MjY5CiAgICAweGI2ZjAzY2JlOiAg
ICBsZHIgICAgcjAsIFtyMV0KICAgIDB4YjZmMDNjYzA6ICAgIHBvcCAgICB7cjF9CiAgICAweGI2
ZjAzY2MyOiAgICBtb3Z3ICAgcjYsICMxOTYxNgogICAgMHhiNmYwM2NjNjogICAgbW92dCAgIHI2
LCAjNDYyNjQKICAgIDB4YjZmMDNjY2E6ICAgIHN0ciAgICByMCwgW3I2XQogICAgMHhiNmYwM2Nj
YzogICAgbW92dyAgIHI2LCAjMTk2MjQKICAgIDB4YjZmMDNjZDA6ICAgIG1vdnQgICByNiwgIzQ2
MjY0CiAgICAweGI2ZjAzY2Q0OiAgICBzdHIgICAgcjEsIFtyNl0KICAgIDB4YjZmMDNjZDY6ICAg
IG1vdncgICByNiwgIzE5NjMyCiAgICAweGI2ZjAzY2RhOiAgICBtb3Z0ICAgcjYsICM0NjI2NAog
ICAgMHhiNmYwM2NkZTogICAgc3RyICAgIHIyLCBbcjZdCiAgICAweGI2ZjAzY2UwOiAgICBtb3Z3
ICAgcjYsICMxOTY0MAogICAgMHhiNmYwM2NlNDogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgIDB4
YjZmMDNjZTg6ICAgIHN0ciAgICByMywgW3I2XQogICAgMHhiNmYwM2NlYTogICAgbW92dyAgIHI2
LCAjMTk2NDgKICAgIDB4YjZmMDNjZWU6ICAgIG1vdnQgICByNiwgIzQ2MjY0CiAgICAweGI2ZjAz
Y2YyOiAgICBzdHIgICAgcjgsIFtyNl0KICAgIDB4YjZmMDNjZjY6ICAgIG1vdncgICByNiwgIzE5
NjU2CiAgICAweGI2ZjAzY2ZhOiAgICBtb3Z0ICAgcjYsICM0NjI2NAogICAgMHhiNmYwM2NmZTog
ICAgc3RyICAgIHI5LCBbcjZdCiAgICAweGI2ZjAzZDAyOiAgICBtb3Z3ICAgcjYsICMxOTY2NAog
ICAgMHhiNmYwM2QwNjogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgIDB4YjZmMDNkMGE6ICAgIHN0
ciAgICByMTAsIFtyNl0KICAgIDB4YjZmMDNkMGU6ICAgIG1vdncgICByNiwgIzE5NjcyCiAgICAw
eGI2ZjAzZDEyOiAgICBtb3Z0ICAgcjYsICM0NjI2NAogICAgMHhiNmYwM2QxNjogICAgc3RyICAg
IHIxMSwgW3I2XQogICAgMHhiNmYwM2QxYTogICAgbW92dyAgIHI2LCAjMTk2ODAKICAgIDB4YjZm
MDNkMWU6ICAgIG1vdnQgICByNiwgIzQ2MjY0CiAgICAweGI2ZjAzZDIyOiAgICBzdHIgICAgcjQs
IFtyNl0KICAgIDB4YjZmMDNkMjQ6ICAgIG1vdncgICByMCwgIzE5Njg4CiAgICAweGI2ZjAzZDI4
OiAgICBtb3Z0ICAgcjAsICM0NjI2NAogICAgMHhiNmYwM2QyYzogICAgLmxvbmcgIGVkODAwYjAw
CiAgICAweGI2ZjAzZDMwOiAgICBtb3Z3ICAgcjAsICMxOTY5NgogICAgMHhiNmYwM2QzNDogICAg
bW92dCAgIHIwLCAjNDYyNjQKICAgIDB4YjZmMDNkMzg6ICAgIC5sb25nICBlZDgwMWIwMAogICAg
MHhiNmYwM2QzYzogICAgbW92dyAgIHIwLCAjMTk3MDQKICAgIDB4YjZmMDNkNDA6ICAgIG1vdnQg
ICByMCwgIzQ2MjY0CiAgICAweGI2ZjAzZDQ0OiAgICAubG9uZyAgZWQ4MDJiMDAKICAgIDB4YjZm
MDNkNDg6ICAgIG1vdncgICByMCwgIzE5NzEyCiAgICAweGI2ZjAzZDRjOiAgICBtb3Z0ICAgcjAs
ICM0NjI2NAogICAgMHhiNmYwM2Q1MDogICAgLmxvbmcgIGVkODAzYjAwCiAgICAweGI2ZjAzZDU0
OiAgICBtb3Z3ICAgcjAsICMxOTcyMAogICAgMHhiNmYwM2Q1ODogICAgbW92dCAgIHIwLCAjNDYy
NjQKICAgIDB4YjZmMDNkNWM6ICAgIC5sb25nICBlZDgwNGIwMAogICAgMHhiNmYwM2Q2MDogICAg
bW92dyAgIHIwLCAjMTk3MjgKICAgIDB4YjZmMDNkNjQ6ICAgIG1vdnQgICByMCwgIzQ2MjY0CiAg
ICAweGI2ZjAzZDY4OiAgICAubG9uZyAgZWQ4MDViMDAKICAgIDB4YjZmMDNkNmM6ICAgIG1vdncg
ICByMCwgIzE5NjA4CiAgICAweGI2ZjAzZDcwOiAgICBtb3Z0ICAgcjAsICM0NjI2NAogICAgMHhi
NmYwM2Q3NDogICAgbW92ICAgIHIxMiwgIzEyMAogICAgMHhiNmYwM2Q3ODogICAgc3RyICAgIHIx
MiwgW3IwXQogICAgMHhiNmYwM2Q3YzogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwM2Q3ZTog
ICAgbW92dyAgIHIxMiwgIzU4OTAxCiAgICAweGI2ZjAzZDgyOiAgICBtb3Z0ICAgcjEyLCAjNDY3
NTUKICAgIDB4YjZmMDNkODY6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDNkODg6ICAgIG1vdncg
ICByMCwgIzE5NjA4CiAgICAweGI2ZjAzZDhjOiAgICBtb3Z0ICAgcjAsICM0NjI2NAogICAgMHhi
NmYwM2Q5MDogICAgbW92ICAgIHIxMiwgIzAKICAgIDB4YjZmMDNkOTQ6ICAgIHN0ciAgICByMTIs
IFtyMF0KICAgIDB4YjZmMDNkOTg6ICAgIG1vdncgICByMCwgIzE5Njg4CiAgICAweGI2ZjAzZDlj
OiAgICBtb3Z0ICAgcjAsICM0NjI2NAogICAgMHhiNmYwM2RhMDogICAgdmxkciAgIGQwLCBbcjBd
CiAgICAweGI2ZjAzZGE0OiAgICBtb3Z3ICAgcjAsICMxOTY5NgogICAgMHhiNmYwM2RhODogICAg
bW92dCAgIHIwLCAjNDYyNjQKICAgIDB4YjZmMDNkYWM6ICAgIHZsZHIgICBkMSwgW3IwXQogICAg
MHhiNmYwM2RiMDogICAgbW92dyAgIHIwLCAjMTk3MDQKICAgIDB4YjZmMDNkYjQ6ICAgIG1vdnQg
ICByMCwgIzQ2MjY0CiAgICAweGI2ZjAzZGI4OiAgICB2bGRyICAgZDIsIFtyMF0KICAgIDB4YjZm
MDNkYmM6ICAgIG1vdncgICByMCwgIzE5NzEyCiAgICAweGI2ZjAzZGMwOiAgICBtb3Z0ICAgcjAs
ICM0NjI2NAogICAgMHhiNmYwM2RjNDogICAgdmxkciAgIGQzLCBbcjBdCiAgICAweGI2ZjAzZGM4
OiAgICBtb3Z3ICAgcjAsICMxOTcyMAogICAgMHhiNmYwM2RjYzogICAgbW92dCAgIHIwLCAjNDYy
NjQKICAgIDB4YjZmMDNkZDA6ICAgIHZsZHIgICBkNCwgW3IwXQogICAgMHhiNmYwM2RkNDogICAg
bW92dyAgIHIwLCAjMTk3MjgKICAgIDB4YjZmMDNkZDg6ICAgIG1vdnQgICByMCwgIzQ2MjY0CiAg
ICAweGI2ZjAzZGRjOiAgICB2bGRyICAgZDUsIFtyMF0KICAgIDB4YjZmMDNkZTA6ICAgIG1vdncg
ICByNiwgIzE5NjE2CiAgICAweGI2ZjAzZGU0OiAgICBtb3Z0ICAgcjYsICM0NjI2NAogICAgMHhi
NmYwM2RlODogICAgbGRyICAgIHIwLCBbcjZdCiAgICAweGI2ZjAzZGVhOiAgICBtb3Z3ICAgcjYs
ICMxOTYyNAogICAgMHhiNmYwM2RlZTogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgIDB4YjZmMDNk
ZjI6ICAgIGxkciAgICByMSwgW3I2XQogICAgMHhiNmYwM2RmNDogICAgbW92dyAgIHI2LCAjMTk2
MzIKICAgIDB4YjZmMDNkZjg6ICAgIG1vdnQgICByNiwgIzQ2MjY0CiAgICAweGI2ZjAzZGZjOiAg
ICBsZHIgICAgcjIsIFtyNl0KICAgIDB4YjZmMDNkZmU6ICAgIG1vdncgICByNiwgIzE5NjQwCiAg
ICAweGI2ZjAzZTAyOiAgICBtb3Z0ICAgcjYsICM0NjI2NAogICAgMHhiNmYwM2UwNjogICAgbGRy
ICAgIHIzLCBbcjZdCiAgICAweGI2ZjAzZTA4OiAgICBtb3Z3ICAgcjYsICMxOTY0OAogICAgMHhi
NmYwM2UwYzogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgIDB4YjZmMDNlMTA6ICAgIGxkciAgICBy
OCwgW3I2XQogICAgMHhiNmYwM2UxNDogICAgbW92dyAgIHI2LCAjMTk2NTYKICAgIDB4YjZmMDNl
MTg6ICAgIG1vdnQgICByNiwgIzQ2MjY0CiAgICAweGI2ZjAzZTFjOiAgICBsZHIgICAgcjksIFty
Nl0KICAgIDB4YjZmMDNlMjA6ICAgIG1vdncgICByNiwgIzE5NjY0CiAgICAweGI2ZjAzZTI0OiAg
ICBtb3Z0ICAgcjYsICM0NjI2NAogICAgMHhiNmYwM2UyODogICAgbGRyICAgIHIxMCwgW3I2XQog
ICAgMHhiNmYwM2UyYzogICAgbW92dyAgIHI2LCAjMTk2NzIKICAgIDB4YjZmMDNlMzA6ICAgIG1v
dnQgICByNiwgIzQ2MjY0CiAgICAweGI2ZjAzZTM0OiAgICBsZHIgICAgcjExLCBbcjZdCiAgICAw
eGI2ZjAzZTM4OiAgICBtb3Z3ICAgcjYsICMxOTY4MAogICAgMHhiNmYwM2UzYzogICAgbW92dCAg
IHI2LCAjNDYyNjQKICAgIDB4YjZmMDNlNDA6ICAgIGxkciAgICByNCwgW3I2XQogICAgMHhiNmYw
M2U0MjogICAgbW92dyAgIHIxMiwgIzQ2MjAwCiAgICAweGI2ZjAzZTQ2OiAgICBtb3Z0ICAgcjEy
LCAjNDYyMDcKICAgIDB4YjZmMDNlNGE6ICAgIGxkciAgICByMTIsIFtyMTJdCiAgICAweGI2ZjAz
ZTRlOiAgICBieCAgICAgcjEyCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgVGhyb3cgZXhjZXB0aW9u
IGZyb20gY2FsbCBzbG93IHBhdGggdGh1bms6CiAgICBDb2RlIGF0IFsweGI2ZjA3ZjQxLCAweGI2
ZjA3ZjgxKToKICAgIDB4YjZmMDdmNDA6ICAgIG1vdiAgICByNSwgbHIKICAgIDB4YjZmMDdmNDI6
ICAgIG1vdiAgICByMSwgcjcKICAgIDB4YjZmMDdmNDQ6ICAgIG1vdncgICByMCwgIzMyNzY4CiAg
ICAweGI2ZjA3ZjQ4OiAgICBtb3Z0ICAgcjAsICM0NjIwNwogICAgMHhiNmYwN2Y0YzogICAgbW92
dyAgIHI0LCAjNjMyMjUKICAgIDB4YjZmMDdmNTA6ICAgIG1vdnQgICByNCwgIzQ2Nzc2CiAgICAw
eGI2ZjA3ZjU0OiAgICBibHggICAgcjQKICAgIDB4YjZmMDdmNTY6ICAgIG1vdncgICByNiwgIzQ2
MTg4CiAgICAweGI2ZjA3ZjVhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwN2Y1ZTog
ICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI2ZjA3ZjYwOiAgICBieCAgICAgcjEKR2VuZXJhdGVk
IEpJVCBjb2RlIGZvciBMaW5rIHBvbHltb3JwaGljIGNhbGwgc2xvdyBwYXRoIHRodW5rOgogICAg
Q29kZSBhdCBbMHhiNmYwM2U2MSwgMHhiNmYwM2YwMSk6CiAgICAweGI2ZjAzZTYwOiAgICBwdXNo
ICAge3I3LCBscn0KICAgIDB4YjZmMDNlNjQ6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDNl
NjY6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAzZTZhOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgMHhiNmYwM2U2ZTogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAzZTcwOiAg
ICBtdm4gICAgcjEyLCAjMjMKICAgIDB4YjZmMDNlNzQ6ICAgIG1vdiAgICBzcCwgc3AKICAgIDB4
YjZmMDNlNzY6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAweGI2ZjAzZTc4OiAgICBtb3YgICAgcjEs
IHIyCiAgICAweGI2ZjAzZTdhOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAzZTdjOiAgICBt
b3Z3ICAgcjQsICM1MDY5MwogICAgMHhiNmYwM2U4MDogICAgbW92dCAgIHI0LCAjNDY3NzYKICAg
IDB4YjZmMDNlODQ6ICAgIGJseCAgICByNAogICAgMHhiNmYwM2U4NjogICAgYWRkICAgIHNwLCBz
cCwgIzYKICAgIDB4YjZmMDNlODg6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDNlOGE6ICAg
IHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwM2U4ZTogICAgdHN0ICAgIHIxLCByMQogICAgMHhi
NmYwM2U5MDogICAgYmVxICAgIDB4YjZmMDNlZTAKICAgIDB4YjZmMDNlOTI6ICAgIG1vdiAgICBy
NSwgbHIKICAgIDB4YjZmMDNlOTQ6ICAgIGxkciAgICByMSwgW3I3LCAjMjRdCiAgICAweGI2ZjAz
ZTk2OiAgICBsZHIgICAgcjMsIFtyNywgIzhdCiAgICAweGI2ZjAzZTk4OiAgICBsZHIgICAgcjMs
IFtyMywgIzMyXQogICAgMHhiNmYwM2U5YTogICAgY21wICAgIHIzLCByMQogICAgMHhiNmYwM2U5
YzogICAgYmxzICAgIDB4YjZmMDNlYTAKICAgIDB4YjZmMDNlOWU6ICAgIG1vdiAgICByMSwgcjMK
ICAgIDB4YjZmMDNlYTA6ICAgIGFkZHMgICByMSwgcjEsICM1CiAgICAweGI2ZjAzZWEyOiAgICBt
dm4gICAgcjEyLCAjMQogICAgMHhiNmYwM2VhNjogICAgYW5kICAgIHIxLCByMSwgcjEyCiAgICAw
eGI2ZjAzZWFhOiAgICBtb3YgICAgcjEyLCAjOAogICAgMHhiNmYwM2VhZTogICAgc211bGwgIHIx
LCByMTIsIHIxLCByMTIKICAgIDB4YjZmMDNlYjI6ICAgIGFkZHMgICByMywgcjcsIHIxCiAgICAw
eGI2ZjAzZWI0OiAgICBsZHIgICAgcjEsIFtzcCwgIzE2XQogICAgMHhiNmYwM2ViNjogICAgYWRk
cyAgIHIxLCByMSwgIzUKICAgIDB4YjZmMDNlYjg6ICAgIG12biAgICByMTIsICMxCiAgICAweGI2
ZjAzZWJjOiAgICBhbmQgICAgcjEsIHIxLCByMTIKICAgIDB4YjZmMDNlYzA6ICAgIG1vdiAgICBy
MTIsICM4CiAgICAweGI2ZjAzZWM0OiAgICBzbXVsbCAgcjEsIHIxMiwgcjEsIHIxMgogICAgMHhi
NmYwM2VjODogICAgbGRyICAgIGxyLCBbcjcsICM0XQogICAgMHhiNmYwM2VjYzogICAgc3VicyAg
IHIxLCAjOAogICAgMHhiNmYwM2VjZTogICAgc3VicyAgIHIzLCByMywgcjEKICAgIDB4YjZmMDNl
ZDA6ICAgIGxkciAgICByNywgW3I3XQogICAgMHhiNmYwM2VkMjogICAgc3VicyAgIHIxLCByMSwg
IzQKICAgIDB4YjZmMDNlZDQ6ICAgIGxkciAgICByMiwgW3NwLCByMV0KICAgIDB4YjZmMDNlZDg6
ICAgIHN0ciAgICByMiwgW3IzLCByMV0KICAgIDB4YjZmMDNlZGE6ICAgIHRzdCAgICByMSwgcjEK
ICAgIDB4YjZmMDNlZGM6ICAgIGJuZSAgICAweGI2ZjA0MGQyCiAgICAweGI2ZjAzZWRlOiAgICBt
b3YgICAgc3AsIHIzCiAgICAweGI2ZjAzZWUwOiAgICBieCAgICAgcjAKR2VuZXJhdGVkIERGRyBK
SVQgY29kZSBmb3IgaXNJZGVudGljYWwjRWExclFEOlsweGI0NzkxODYwLT4weGI0NzkzNjkwLT4w
eGI0N2Q1YTQwLCBERkdGdW5jdGlvbkNhbGwsIDk1XSwgaW5zdHJ1Y3Rpb24gY291bnQgPSA5NToK
ICAgIE9wdGltaXplZCB3aXRoIGV4ZWN1dGlvbiBjb3VudGVyID0gMTAwNS4wMDAwMDAvMTQyOC4w
MDAwMDAsIDUKICAgIENvZGUgYXQgWzB4YjZmMDIwYTAsIDB4YjZmMDIzZTApOgogICAgICAgIDB4
YjZmMDIwYTA6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgICAgIDB4YjZmMDIwYTQ6ICAgIG1vdiAg
ICByNywgc3AKICAgICAgICAweGI2ZjAyMGE2OiAgICBtb3Z3ICAgcjEyLCAjNjI0MAogICAgICAg
IDB4YjZmMDIwYWE6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgICAgIDB4YjZmMDIwYWU6ICAg
IHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAgICAgMHhiNmYwMjBiMjogICAgbXZuICAgIHIxMiwg
Izg3CiAgICAgICAgMHhiNmYwMjBiNjogICAgYWRkICAgIHIxLCByNywgcjEyCiAgICAgICAgMHhi
NmYwMjBiYTogICAgbW92dyAgIHI2LCAjNDYzNDAKICAgICAgICAweGI2ZjAyMGJlOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjZmMDIwYzI6ICAgIGxkciAgICByMTIsIFtyNl0KICAg
ICAgICAweGI2ZjAyMGM2OiAgICBjbXAgICAgcjEyLCByMQogICAgICAgIDB4YjZmMDIwY2E6ICAg
IGJoaSAgICAweGI2ZjAyMmM2CiAgICAgICAgMHhiNmYwMjBjZTogICAgbW92ICAgIHNwLCByNwog
ICAgICAgIDB4YjZmMDIwZDA6ICAgIG12biAgICByMTIsICM1NQogICAgICAgIDB4YjZmMDIwZDQ6
ICAgIG1vdiAgICBzcCwgc3AKICAgICAgICAweGI2ZjAyMGQ2OiAgICBhZGQgICAgc3AsIHIxMgog
ICAgQmxvY2sgIzAgKGJjIzApOiAoT1NSIHRhcmdldCkKICAgICAgRXhlY3V0aW9uIGNvdW50OiAx
LjAwMDAwMAogICAgICBQcmVkZWNlc3NvcnM6CiAgICAgIFN1Y2Nlc3NvcnM6ICMxICM4CiAgICAg
IERvbWluYXRlZCBieTogIzAKICAgICAgRG9taW5hdGVzOiAjMCAjMSAjMiAjMyAjNCAjNSAjNiAj
NyAjOAogICAgICBEb21pbmFuY2UgRnJvbnRpZXI6IAogICAgICBJdGVyYXRlZCBEb21pbmFuY2Ug
RnJvbnRpZXI6IAogICAgICAgMTo8IDI6LT4JU2V0QXJndW1lbnQoSXNGbHVzaGVkLCBhcmcxKEJ+
PE51bWJlcj4vRmx1c2hlZEpTVmFsdWUpLCBtYWNoaW5lOmFyZzEsIFc6U2lkZVN0YXRlLCBiYyMw
KSAgcHJlZGljdGluZyBCb29saW50MzJEb3VibGVwdXJlbmFuCiAgICAgICAyOjwgMzotPglTZXRB
cmd1bWVudChJc0ZsdXNoZWQsIGFyZzIoQ348TnVtYmVyPi9GbHVzaGVkSlNWYWx1ZSksIG1hY2hp
bmU6YXJnMiwgVzpTaWRlU3RhdGUsIGJjIzApICBwcmVkaWN0aW5nIEJvb2xpbnQzMkRvdWJsZXB1
cmVuYW4KICAgICAgIDM6PCAzOmxvYzE+CUpTQ29uc3RhbnQoSlN8UHVyZUludCwgT3RoZXIsIFVu
ZGVmaW5lZCwgYmMjMCkKICAgICAgIDQ6PCEwOi0+CU1vdkhpbnQoVW50eXBlZDpAMywgTXVzdEdl
biwgbG9jMCwgVzpTaWRlU3RhdGUsIENsb2JiZXJzRXhpdCwgYmMjMCkKICAgICAgIDY6PCEwOi0+
CU1vdkhpbnQoVW50eXBlZDpAMywgTXVzdEdlbiwgbG9jMSwgVzpTaWRlU3RhdGUsIENsb2JiZXJz
RXhpdCwgYmMjMCwgRXhpdEludmFsaWQpCiAgICAgICA4OjwhMDotPglNb3ZIaW50KFVudHlwZWQ6
QDMsIE11c3RHZW4sIGxvYzIsIFc6U2lkZVN0YXRlLCBDbG9iYmVyc0V4aXQsIGJjIzAsIEV4aXRJ
bnZhbGlkKQogICAgICAxMTo8IDM6bG9jMT4JSlNDb25zdGFudChKU3xVc2VBc090aGVyLCBPdGhl
cm9iaiwgV2VhazpDZWxsOiAweGI0N2YwZDYwICglQmQ6SlNMZXhpY2FsRW52aXJvbm1lbnQpLCBi
YyMxKQogICAgICAxMjo8ITA6LT4JTW92SGludChVbnR5cGVkOkAxMSwgTXVzdEdlbiwgbG9jMCwg
VzpTaWRlU3RhdGUsIENsb2JiZXJzRXhpdCwgYmMjMSkKICAgICAgMTM6PCAxOi0+CVNldExvY2Fs
KFVudHlwZWQ6QDExLCBsb2MwKEd+PE9iamVjdD4vRmx1c2hlZEpTVmFsdWUpLCBtYWNoaW5lOmxv
YzAsIFc6U3RhY2soLTEpLCBiYyMxLCBleGl0OiBiYyMzKSAgcHJlZGljdGluZyBPdGhlcm9iagog
ICAgICAgIDB4YjZmMDIwZDg6ICAgIG12biAgICByMCwgIzQKICAgICAgICAweGI2ZjAyMGRjOiAg
ICBtb3Z3ICAgcjEsICMzNDI0CiAgICAgICAgMHhiNmYwMjBlMDogICAgbW92dCAgIHIxLCAjNDYy
MDcKICAgICAgICAweGI2ZjAyMGU0OiAgICBzdHIgICAgcjEsIFtyNywgIy04XQogICAgICAgIDB4
YjZmMDIwZTg6ICAgIHN0ciAgICByMCwgW3I3LCAjLTRdCiAgICAgIDE0OjwhMDotPglNb3ZIaW50
KFVudHlwZWQ6QDExLCBNdXN0R2VuLCBsb2MxLCBXOlNpZGVTdGF0ZSwgQ2xvYmJlcnNFeGl0LCBi
YyMzKQogICAgICAxNjo8ITE6bG9jMT4JR2V0TG9jYWwoVW50eXBlZDpAMiwgSlN8TXVzdEdlbnxV
c2VBc090aGVyLCBCb29saW50MzJEb3VibGVwdXJlbmFuLCBhcmcyKEN+PE51bWJlcj4vRmx1c2hl
ZEpTVmFsdWUpLCBtYWNoaW5lOmFyZzIsIFI6U3RhY2soNiksIGJjIzYpICBwcmVkaWN0aW5nIEJv
b2xpbnQzMkRvdWJsZXB1cmVuYW4KICAgICAgICAweGI2ZjAyMGVjOiAgICBsZHIgICAgcjAsIFty
NywgIzQ4XQogICAgICAgIDB4YjZmMDIwZWU6ICAgIGxkciAgICByMSwgW3I3LCAjNTJdCiAgICAg
MTEzOjwgMjpsb2MxPglEb3VibGVSZXAoQ2hlY2s6TnVtYmVyOkAxNiwgRG91YmxlfFB1cmVJbnQs
IEJ5dGVjb2RlZG91YmxlLCBFeGl0cywgYmMjNikKICAgICAgICAweGI2ZjAyMGYwOiAgICBjbXAg
ICAgcjEsICM0Mjk0OTY3Mjk1CiAgICAgICAgMHhiNmYwMjBmNDogICAgYmVxICAgIDB4YjZmMDIx
MDQKICAgICAgICAweGI2ZjAyMGY2OiAgICBjbW4gICAgcjEsICM3CiAgICAgICAgMHhiNmYwMjBm
YTogICAgYmhzICAgIDB4YjZmMDIzOTIKICAgICAgICAweGI2ZjAyMGZlOiAgICB2bW92ICAgZDAs
IHIxLCByMQogICAgICAgIDB4YjZmMDIxMDI6ICAgIGIgICAgICAweGI2ZjAyMTBjCiAgICAgICAg
MHhiNmYwMjEwNDogICAgdm1vdiAgIGQ3LCByMCwgcjAKICAgICAgICAweGI2ZjAyMTA4OiAgICB2
Y3Z0LmY2NC5zMzIgZDAsIHMxNAogICAgICAxNzo8IDI6bG9jMT4JQ29tcGFyZVN0cmljdEVxKERv
dWJsZVJlcDpAMTEzPERvdWJsZT4sIERvdWJsZVJlcDpAMTEzPERvdWJsZT4sIEJvb2xlYW58VXNl
QXNPdGhlciwgQm9vbCwgRXhpdHMsIGJjIzYpCiAgICAgICAgMHhiNmYwMjEwYzogICAgbW92cyAg
IHIwLCAjMQogICAgICAgIDB4YjZmMDIxMGU6ICAgIHZjbXAuZjY0IGQwLCBkMAogICAgICAgIDB4
YjZmMDIxMTI6ICAgIHZtcnMgICBhcHNyX256Y3YsIGZwc2NyCiAgICAgICAgMHhiNmYwMjExNjog
ICAgYmVxICAgIDB4YjZmMDIxMWEKICAgICAgICAweGI2ZjAyMTE4OiAgICBtb3ZzICAgcjAsICMw
CiAgICAgIDE4OjwhMDotPglNb3ZIaW50KFVudHlwZWQ6QDE3LCBNdXN0R2VuLCBsb2MzLCBXOlNp
ZGVTdGF0ZSwgQ2xvYmJlcnNFeGl0LCBiYyM2KQogICAgICAyMDo8ITA6LT4JQnJhbmNoKEtub3du
Qm9vbGVhbjpAMTcsIE11c3RHZW4sIFQ6IzEvdzoxLjAwMDAwMCwgRjojOC93OjEuMDAwMDAwLCBX
OlNpZGVTdGF0ZSwgYmMjMTApCiAgICAgICAgMHhiNmYwMjExYTogICAgdHN0ICAgIHIwLCAjMQog
ICAgICAgIDB4YjZmMDIxMWU6ICAgIGJlcSAgICAweGI2ZjAyMjgwCiAgICBCbG9jayAjMSAoYmMj
MTMpOgogICAgICBFeGVjdXRpb24gY291bnQ6IDEuMDAwMDAwCiAgICAgIFByZWRlY2Vzc29yczog
IzAKICAgICAgU3VjY2Vzc29yczogIzIgIzMKICAgICAgRG9taW5hdGVkIGJ5OiAjMCAjMQogICAg
ICBEb21pbmF0ZXM6ICMxICMyICMzICM0ICM1ICM2ICM3CiAgICAgIERvbWluYW5jZSBGcm9udGll
cjogCiAgICAgIEl0ZXJhdGVkIERvbWluYW5jZSBGcm9udGllcjogCiAgICAgIFBoaSBOb2Rlczog
QDE0NTxhcmcxLDM+LT4oQDEpLCBAMTQ2PGFyZzIsMz4tPihAMiksIEAxNDg8bG9jMCwxPi0+KEAx
MykKICAgICAgMjE6PCExOmxvYzE+CUdldExvY2FsKFVudHlwZWQ6QDE0NSwgSlN8TXVzdEdlbnxV
c2VBc090aGVyLCBCb29saW50MzJEb3VibGVwdXJlbmFuLCBhcmcxKEJ+PE51bWJlcj4vRmx1c2hl
ZEpTVmFsdWUpLCBtYWNoaW5lOmFyZzEsIFI6U3RhY2soNSksIGJjIzEzKSAgcHJlZGljdGluZyBC
b29saW50MzJEb3VibGVwdXJlbmFuCiAgICAgICAgMHhiNmYwMjEyMjogICAgbGRyICAgIHIwLCBb
cjcsICM0MF0KICAgICAgICAweGI2ZjAyMTI0OiAgICBsZHIgICAgcjEsIFtyNywgIzQ0XQogICAg
ICAyMjo8ITE6bG9jMj4JR2V0TG9jYWwoVW50eXBlZDpAMTQ2LCBKU3xNdXN0R2VufFVzZUFzT3Ro
ZXIsIEJvb2xpbnQzMkRvdWJsZXB1cmVuYW4sIGFyZzIoQ348TnVtYmVyPi9GbHVzaGVkSlNWYWx1
ZSksIG1hY2hpbmU6YXJnMiwgUjpTdGFjayg2KSwgYmMjMTMpICBwcmVkaWN0aW5nIEJvb2xpbnQz
MkRvdWJsZXB1cmVuYW4KICAgICAgICAweGI2ZjAyMTI2OiAgICBsZHIgICAgcjIsIFtyNywgIzQ4
XQogICAgICAgIDB4YjZmMDIxMjg6ICAgIGxkciAgICByMywgW3I3LCAjNTJdCiAgICAgMTE1Ojwg
MTpsb2MxPglEb3VibGVSZXAoQ2hlY2s6TnVtYmVyOkAyMSwgRG91YmxlfFB1cmVJbnQsIEJ5dGVj
b2RlZG91YmxlLCBFeGl0cywgYmMjMTMpCiAgICAgICAgMHhiNmYwMjEyYTogICAgY21wICAgIHIx
LCAjNDI5NDk2NzI5NQogICAgICAgIDB4YjZmMDIxMmU6ICAgIGJlcSAgICAweGI2ZjAyMTNlCiAg
ICAgICAgMHhiNmYwMjEzMDogICAgY21uICAgIHIxLCAjNwogICAgICAgIDB4YjZmMDIxMzQ6ICAg
IGJocyAgICAweGI2ZjAyM2FjCiAgICAgICAgMHhiNmYwMjEzODogICAgdm1vdiAgIGQwLCByMSwg
cjEKICAgICAgICAweGI2ZjAyMTNjOiAgICBiICAgICAgMHhiNmYwMjE0NgogICAgICAgIDB4YjZm
MDIxM2U6ICAgIHZtb3YgICBkNywgcjAsIHIwCiAgICAgICAgMHhiNmYwMjE0MjogICAgdmN2dC5m
NjQuczMyIGQwLCBzMTQKICAgICAxMTY6PCAxOmxvYzI+CURvdWJsZVJlcChOdW1iZXI6QDIyLCBE
b3VibGV8UHVyZUludCwgQnl0ZWNvZGVkb3VibGUsIGJjIzEzKQogICAgICAgIDB4YjZmMDIxNDY6
ICAgIGNtcCAgICByMywgIzQyOTQ5NjcyOTUKICAgICAgICAweGI2ZjAyMTRhOiAgICBiZXEgICAg
MHhiNmYwMjE1MgogICAgICAgIDB4YjZmMDIxNGM6ICAgIHZtb3YgICBkMSwgcjMsIHIzCiAgICAg
ICAgMHhiNmYwMjE1MDogICAgYiAgICAgIDB4YjZmMDIxNWEKICAgICAgICAweGI2ZjAyMTUyOiAg
ICB2bW92ICAgZDcsIHIyLCByMgogICAgICAgIDB4YjZmMDIxNTY6ICAgIHZjdnQuZjY0LnMzMiBk
MSwgczE0CiAgICAgIDIzOjwgMTpsb2MyPglDb21wYXJlU3RyaWN0RXEoRG91YmxlUmVwOkAxMTU8
RG91YmxlPiwgRG91YmxlUmVwOkAxMTY8RG91YmxlPiwgQm9vbGVhbnxVc2VBc090aGVyLCBCb29s
LCBFeGl0cywgYmMjMTMpCiAgICAgICAgMHhiNmYwMjE1YTogICAgbW92cyAgIHIwLCAjMQogICAg
ICAgIDB4YjZmMDIxNWM6ICAgIHZjbXAuZjY0IGQwLCBkMQogICAgICAgIDB4YjZmMDIxNjA6ICAg
IHZtcnMgICBhcHNyX256Y3YsIGZwc2NyCiAgICAgICAgMHhiNmYwMjE2NDogICAgYmVxICAgIDB4
YjZmMDIxNjgKICAgICAgICAweGI2ZjAyMTY2OiAgICBtb3ZzICAgcjAsICMwCiAgICAgIDI0Ojwg
Mjpsb2MyPglMb2dpY2FsTm90KEtub3duQm9vbGVhbjpAMjMsIEJvb2xlYW58VXNlQXNPdGhlciwg
Qm9vbCwgYmMjMTMpCiAgICAgICAgMHhiNmYwMjE2ODogICAgZW9yICAgIHIwLCByMCwgIzEKICAg
ICAgMjU6PCEwOi0+CU1vdkhpbnQoVW50eXBlZDpAMjQsIE11c3RHZW4sIGxvYzMsIFc6U2lkZVN0
YXRlLCBDbG9iYmVyc0V4aXQsIGJjIzEzKQogICAgICAyNzo8ITA6LT4JQnJhbmNoKEtub3duQm9v
bGVhbjpAMjQsIE11c3RHZW4sIFQ6IzIvdzoxLjAwMDAwMCwgRjojMy93OjEuMDAwMDAwLCBXOlNp
ZGVTdGF0ZSwgYmMjMTcpCiAgICAgICAgMHhiNmYwMjE2YzogICAgdHN0ICAgIHIwLCAjMQogICAg
ICAgIDB4YjZmMDIxNzA6ICAgIGJlcSAgICAweGI2ZjAyMThlCiAgICBCbG9jayAjMiAoYmMjMjAp
OgogICAgICBFeGVjdXRpb24gY291bnQ6IDEuMDAwMDAwCiAgICAgIFByZWRlY2Vzc29yczogIzEK
ICAgICAgU3VjY2Vzc29yczoKICAgICAgRG9taW5hdGVkIGJ5OiAjMCAjMSAjMgogICAgICBEb21p
bmF0ZXM6ICMyCiAgICAgIERvbWluYW5jZSBGcm9udGllcjogCiAgICAgIEl0ZXJhdGVkIERvbWlu
YW5jZSBGcm9udGllcjogCiAgICAgIFBoaSBOb2RlczogQDE0MzxhcmcyLDE+LT4oQDE0NiksIEAx
NDQ8YXJnMSwxPi0+KEAxNDUpCiAgICAgIDI4OjwgMTpsb2MyPglKU0NvbnN0YW50KEpTfFVzZUFz
T3RoZXIsIEJvb2wsIEZhbHNlLCBiYyMyMCkKICAgICAgMjk6PCEwOi0+CVJldHVybihVbnR5cGVk
OkAyOCwgTXVzdEdlbiwgVzpTaWRlU3RhdGUsIEV4aXRzLCBiYyMyMCkKICAgICAgICAweGI2ZjAy
MTcyOiAgICBtdm4gICAgcjAsICMxCiAgICAgICAgMHhiNmYwMjE3NjogICAgbW92cyAgIHIxLCAj
MAogICAgICAgIDB4YjZmMDIxNzg6ICAgIG1vdiAgICByMTIsIHIwCiAgICAgICAgMHhiNmYwMjE3
YTogICAgbW92ICAgIHIwLCByMQogICAgICAgIDB4YjZmMDIxN2M6ICAgIG1vdiAgICByMSwgcjEy
CiAgICAgICAgMHhiNmYwMjE3ZTogICAgbW92ICAgIHNwLCByNwogICAgICAgIDB4YjZmMDIxODA6
ICAgIHBvcCAgICB7cjcsIGxyfQogICAgICAgIDB4YjZmMDIxODQ6ICAgIGJ4ICAgICBscgogICAg
ICAgIDB4YjZmMDIxODY6ICAgIG1vdnMgICByMiwgIzIxMwogICAgICAgIDB4YjZmMDIxODg6ICAg
IG1vdiAgICByMTIsICMxNjEKICAgICAgICAweGI2ZjAyMThjOiAgICBia3B0ICAgIzAKICAgICAg
MzA6PCEwOi0+CUZsdXNoKENoZWNrOlVudHlwZWQ6QDE0MywgTXVzdEdlbnxJc0ZsdXNoZWQsIGFy
ZzIoQ348TnVtYmVyPi9GbHVzaGVkSlNWYWx1ZSksIG1hY2hpbmU6YXJnMiwgUjpTdGFjayg2KSwg
VzpTaWRlU3RhdGUsIGJjIzIwKSAgcHJlZGljdGluZyBCb29saW50MzJEb3VibGVwdXJlbmFuCiAg
ICAgIDMxOjwhMDotPglGbHVzaChDaGVjazpVbnR5cGVkOkAxNDQsIE11c3RHZW58SXNGbHVzaGVk
LCBhcmcxKEJ+PE51bWJlcj4vRmx1c2hlZEpTVmFsdWUpLCBtYWNoaW5lOmFyZzEsIFI6U3RhY2so
NSksIFc6U2lkZVN0YXRlLCBiYyMyMCkgIHByZWRpY3RpbmcgQm9vbGludDMyRG91YmxlcHVyZW5h
bgogICAgQmxvY2sgIzMgKGJjIzIyKToKICAgICAgRXhlY3V0aW9uIGNvdW50OiAxLjAwMDAwMAog
ICAgICBQcmVkZWNlc3NvcnM6ICMxCiAgICAgIFN1Y2Nlc3NvcnM6ICM3ICM0CiAgICAgIERvbWlu
YXRlZCBieTogIzAgIzEgIzMKICAgICAgRG9taW5hdGVzOiAjMyAjNCAjNSAjNiAjNwogICAgICBE
b21pbmFuY2UgRnJvbnRpZXI6IAogICAgICBJdGVyYXRlZCBEb21pbmFuY2UgRnJvbnRpZXI6IAog
ICAgICBQaGkgTm9kZXM6IEAxNDI8YXJnMiwzPi0+KEAxNDYpLCBAMTQ3PGxvYzAsMT4tPihAMTQ4
KSwgQDE1MDxhcmcxLDI+LT4oQDE0NSkKICAgICAgMzI6PCExOmxvYzI+CUdldExvY2FsKFVudHlw
ZWQ6QDE0MiwgSlN8TXVzdEdlbnxVc2VBc090aGVyLCBCb29saW50MzJEb3VibGVwdXJlbmFuLCBh
cmcyKEN+PE51bWJlcj4vRmx1c2hlZEpTVmFsdWUpLCBtYWNoaW5lOmFyZzIsIFI6U3RhY2soNiks
IGJjIzIyKSAgcHJlZGljdGluZyBCb29saW50MzJEb3VibGVwdXJlbmFuCiAgICAgICAgMHhiNmYw
MjE4ZTogICAgbGRyICAgIHIwLCBbcjcsICM0OF0KICAgICAgICAweGI2ZjAyMTkwOiAgICBsZHIg
ICAgcjEsIFtyNywgIzUyXQogICAgIDExNzo8IDE6bG9jMj4JRG91YmxlUmVwKE51bWJlcjpAMzIs
IERvdWJsZXxQdXJlSW50LCBCeXRlY29kZWRvdWJsZSwgYmMjMjIpCiAgICAgICAgMHhiNmYwMjE5
MjogICAgY21wICAgIHIxLCAjNDI5NDk2NzI5NQogICAgICAgIDB4YjZmMDIxOTY6ICAgIGJlcSAg
ICAweGI2ZjAyMTllCiAgICAgICAgMHhiNmYwMjE5ODogICAgdm1vdiAgIGQwLCByMSwgcjEKICAg
ICAgICAweGI2ZjAyMTljOiAgICBiICAgICAgMHhiNmYwMjFhNgogICAgICAgIDB4YjZmMDIxOWU6
ICAgIHZtb3YgICBkNywgcjAsIHIwCiAgICAgICAgMHhiNmYwMjFhMjogICAgdmN2dC5mNjQuczMy
IGQwLCBzMTQKICAgICAgMzM6PCEwOi0+CUJyYW5jaChEb3VibGVSZXA6QDExNzxEb3VibGU+LCBN
dXN0R2VuLCBUOiM3L3c6MS4wMDAwMDAsIEY6IzQvdzoxLjAwMDAwMCwgVzpTaWRlU3RhdGUsIGJj
IzIyKQogICAgICAgIDB4YjZmMDIxYTY6ICAgIC5sb25nICBlZWI1MGI0MAogICAgICAgIDB4YjZm
MDIxYWE6ICAgIHZtcnMgICBhcHNyX256Y3YsIGZwc2NyCiAgICAgICAgMHhiNmYwMjFhZTogICAg
YnZzICAgIDB4YjZmMDIxYjQKICAgICAgICAweGI2ZjAyMWIwOiAgICBibmUgICAgMHhiNmYwMjI2
NAogICAgQmxvY2sgIzQgKGJjIzI1KToKICAgICAgRXhlY3V0aW9uIGNvdW50OiAxLjAwMDAwMAog
ICAgICBQcmVkZWNlc3NvcnM6ICMzCiAgICAgIFN1Y2Nlc3NvcnM6ICM1ICM3CiAgICAgIERvbWlu
YXRlZCBieTogIzAgIzEgIzMgIzQKICAgICAgRG9taW5hdGVzOiAjNCAjNSAjNgogICAgICBEb21p
bmFuY2UgRnJvbnRpZXI6ICM3CiAgICAgIEl0ZXJhdGVkIERvbWluYW5jZSBGcm9udGllcjogIzcK
ICAgICAgUGhpIE5vZGVzOiBAMTQwPGFyZzIsMz4tPihAMTQyKSwgQDE0MTxsb2MwLDI+LT4oQDE0
NyksIEAxNDk8YXJnMSwyPi0+KEAxNTApCiAgICAgIDM1OjwhMTpsb2MyPglHZXRMb2NhbChVbnR5
cGVkOkAxNDAsIEpTfE11c3RHZW4sIEJvb2xpbnQzMkRvdWJsZXB1cmVuYW4sIGFyZzIoQ348TnVt
YmVyPi9GbHVzaGVkSlNWYWx1ZSksIG1hY2hpbmU6YXJnMiwgUjpTdGFjayg2KSwgYmMjMjUpICBw
cmVkaWN0aW5nIEJvb2xpbnQzMkRvdWJsZXB1cmVuYW4KICAgICAgICAweGI2ZjAyMWI0OiAgICBs
ZHIgICAgcjAsIFtyNywgIzQ4XQogICAgICAgIDB4YjZmMDIxYjY6ICAgIGxkciAgICByMSwgW3I3
LCAjNTJdCiAgICAgMTE4OjwgMTpsb2MxPglEb3VibGVDb25zdGFudChEb3VibGV8UHVyZUludCwg
Qnl0ZWNvZGVkb3VibGUsIERvdWJsZTogM2ZmMDAwMDA6MDAwMDAwMDAsIDEuMDAwMDAwLCBiYyMy
NSkKICAgICAxMTk6PCAxOmxvYzI+CURvdWJsZVJlcChOdW1iZXI6QDM1LCBEb3VibGV8UHVyZUlu
dCwgQnl0ZWNvZGVkb3VibGUsIGJjIzI1KQogICAgICAgIDB4YjZmMDIxYjg6ICAgIGNtcCAgICBy
MSwgIzQyOTQ5NjcyOTUKICAgICAgICAweGI2ZjAyMWJjOiAgICBiZXEgICAgMHhiNmYwMjFjNAog
ICAgICAgIDB4YjZmMDIxYmU6ICAgIHZtb3YgICBkMCwgcjEsIHIxCiAgICAgICAgMHhiNmYwMjFj
MjogICAgYiAgICAgIDB4YjZmMDIxY2MKICAgICAgICAweGI2ZjAyMWM0OiAgICB2bW92ICAgZDcs
IHIwLCByMAogICAgICAgIDB4YjZmMDIxYzg6ICAgIHZjdnQuZjY0LnMzMiBkMCwgczE0CiAgICAg
IDM2OjwhMjpsb2MyPglBcml0aERpdihEb3VibGVSZXA6QDExODxEb3VibGU+LCBEb3VibGVSZXA6
QDExOTxEb3VibGU+LCBEb3VibGV8TXVzdEdlbnxVc2VBc090aGVyfE1heU92ZXJmbG93SW50MzJJ
bkJhc2VsaW5lfE1heU5lZ1plcm9JbkJhc2VsaW5lLCBCeXRlY29kZWRvdWJsZSwgTm90U2V0LCBF
eGl0cywgYmMjMjUpCiAgICAgICAgMHhiNmYwMjFjYzogICAgbW92dyAgIHI2LCAjNTY4MTYKICAg
ICAgICAweGI2ZjAyMWQwOiAgICBtb3Z0ICAgcjYsICM0NjI2OQogICAgICAgIDB4YjZmMDIxZDQ6
ICAgIHZsZHIgICBkMSwgW3I2XQogICAgICAgIDB4YjZmMDIxZDg6ICAgIC5sb25nICBlZTgxMWIw
MAogICAgICAzNzo8ITA6LT4JTW92SGludChEb3VibGVSZXA6QDM2PERvdWJsZT4sIE11c3RHZW4s
IGxvYzMsIFc6U2lkZVN0YXRlLCBDbG9iYmVyc0V4aXQsIGJjIzI1LCBFeGl0SW52YWxpZCkKICAg
ICAgMzk6PCAxOmxvYzE+CUpTQ29uc3RhbnQoSlN8VXNlQXNPdGhlciwgT3RoZXJvYmosIFdlYWs6
Q2VsbDogMHhiNDdlNzhjMCAoJUVqOmdsb2JhbCksIGJjIzMwKQogICAgICA0MDo8ITA6LT4JTW92
SGludChVbnR5cGVkOkAzOSwgTXVzdEdlbiwgbG9jNCwgVzpTaWRlU3RhdGUsIENsb2JiZXJzRXhp
dCwgYmMjMzApCiAgICAgMTMwOjwhMDotPglQaGFudG9tTG9jYWwoVW50eXBlZDpAMTQxLCBNdXN0
R2VuLCBsb2MwKEd+PE9iamVjdD4vRmx1c2hlZEpTVmFsdWUpLCBtYWNoaW5lOmxvYzAsIFc6U2lk
ZVN0YXRlLCBiYyMzMCwgRXhpdEludmFsaWQpICBwcmVkaWN0aW5nIE90aGVyb2JqCiAgICAgIDQ1
OjwgMTpsb2MxPglKU0NvbnN0YW50KEpTLCBOb25pbnRhc2RvdWJsZSwgRG91YmxlOiA3ZmYwMDAw
MDowMDAwMDAwMCwgaW5mLCBiYyMzNykKICAgICAgNDY6PCEwOi0+CU1vdkhpbnQoVW50eXBlZDpA
NDUsIE11c3RHZW4sIGxvYzUsIFc6U2lkZVN0YXRlLCBDbG9iYmVyc0V4aXQsIGJjIzM3KQogICAg
ICA0ODo8IDI6bG9jMT4JRG91YmxlQ29uc3RhbnQoRG91YmxlfFVzZUFzT3RoZXIsIEFueUludEFz
RG91YmxlTm9uaW50YXNkb3VibGUsIERvdWJsZTogZmZmMDAwMDA6MDAwMDAwMDAsIC1pbmYsIGJj
IzQ1KQogICAgICA0OTo8ITA6LT4JTW92SGludChEb3VibGVSZXA6QDQ4PERvdWJsZT4sIE11c3RH
ZW4sIGxvYzYsIFc6U2lkZVN0YXRlLCBDbG9iYmVyc0V4aXQsIGJjIzQ1KQogICAgICA1MTo8IDI6
bG9jMT4JQ29tcGFyZVN0cmljdEVxKERvdWJsZVJlcDpAMzY8RG91YmxlPiwgRG91YmxlUmVwOkA0
ODxEb3VibGU+LCBCb29sZWFufFVzZUFzT3RoZXIsIEJvb2wsIEV4aXRzLCBiYyM0OCkKICAgICAg
ICAweGI2ZjAyMWRjOiAgICBtb3ZzICAgcjAsICMxCiAgICAgICAgMHhiNmYwMjFkZTogICAgbW92
dyAgIHI2LCAjNTY4MzIKICAgICAgICAweGI2ZjAyMWUyOiAgICBtb3Z0ICAgcjYsICM0NjI2OQog
ICAgICAgIDB4YjZmMDIxZTY6ICAgIHZsZHIgICBkMCwgW3I2XQogICAgICAgIDB4YjZmMDIxZWE6
ICAgIHZjbXAuZjY0IGQxLCBkMAogICAgICAgIDB4YjZmMDIxZWU6ICAgIHZtcnMgICBhcHNyX256
Y3YsIGZwc2NyCiAgICAgICAgMHhiNmYwMjFmMjogICAgYmVxICAgIDB4YjZmMDIxZjYKICAgICAg
ICAweGI2ZjAyMWY0OiAgICBtb3ZzICAgcjAsICMwCiAgICAgIDUyOjwhMDotPglNb3ZIaW50KFVu
dHlwZWQ6QDUxLCBNdXN0R2VuLCBsb2MzLCBXOlNpZGVTdGF0ZSwgQ2xvYmJlcnNFeGl0LCBiYyM0
OCkKICAgICAgNTQ6PCEwOi0+CUJyYW5jaChLbm93bkJvb2xlYW46QDUxLCBNdXN0R2VuLCBUOiM1
L3c6MS4wMDAwMDAsIEY6IzcvdzoxLjAwMDAwMCwgVzpTaWRlU3RhdGUsIGJjIzUyKQogICAgICAg
IDB4YjZmMDIxZjY6ICAgIHRzdCAgICByMCwgIzEKICAgICAgICAweGI2ZjAyMWZhOiAgICBiZXEg
ICAgMHhiNmYwMjI2NAogICAgQmxvY2sgIzUgKGJjIzU1KToKICAgICAgRXhlY3V0aW9uIGNvdW50
OiAxLjAwMDAwMAogICAgICBQcmVkZWNlc3NvcnM6ICM0CiAgICAgIFN1Y2Nlc3NvcnM6ICM2ICM3
CiAgICAgIERvbWluYXRlZCBieTogIzAgIzEgIzMgIzQgIzUKICAgICAgRG9taW5hdGVzOiAjNSAj
NgogICAgICBEb21pbmFuY2UgRnJvbnRpZXI6ICM3CiAgICAgIEl0ZXJhdGVkIERvbWluYW5jZSBG
cm9udGllcjogIzcKICAgICAgUGhpIE5vZGVzOiBAMTM4PGFyZzEsMz4tPihAMTQ5KSwgQDEzOTxs
b2MwLDE+LT4oQDE0MSksIEAxNTE8YXJnMiwyPi0+KEAxNDApCiAgICAgIDU2OjwhMTpsb2MxPglH
ZXRMb2NhbChVbnR5cGVkOkAxMzgsIEpTfE11c3RHZW4sIEJvb2xpbnQzMkRvdWJsZXB1cmVuYW4s
IGFyZzEoQn48TnVtYmVyPi9GbHVzaGVkSlNWYWx1ZSksIG1hY2hpbmU6YXJnMSwgUjpTdGFjayg1
KSwgYmMjNTUpICBwcmVkaWN0aW5nIEJvb2xpbnQzMkRvdWJsZXB1cmVuYW4KICAgICAgICAweGI2
ZjAyMWZjOiAgICBsZHIgICAgcjAsIFtyNywgIzQwXQogICAgICAgIDB4YjZmMDIxZmU6ICAgIGxk
ciAgICByMSwgW3I3LCAjNDRdCiAgICAgMTIzOjwgMTpsb2MyPglEb3VibGVDb25zdGFudChEb3Vi
bGV8UHVyZUludCwgQnl0ZWNvZGVkb3VibGUsIERvdWJsZTogM2ZmMDAwMDA6MDAwMDAwMDAsIDEu
MDAwMDAwLCBiYyM1NSkKICAgICAxMjQ6PCAxOmxvYzE+CURvdWJsZVJlcChOdW1iZXI6QDU2LCBE
b3VibGV8UHVyZUludCwgQnl0ZWNvZGVkb3VibGUsIGJjIzU1KQogICAgICAgIDB4YjZmMDIyMDA6
ICAgIGNtcCAgICByMSwgIzQyOTQ5NjcyOTUKICAgICAgICAweGI2ZjAyMjA0OiAgICBiZXEgICAg
MHhiNmYwMjIwYwogICAgICAgIDB4YjZmMDIyMDY6ICAgIHZtb3YgICBkMCwgcjEsIHIxCiAgICAg
ICAgMHhiNmYwMjIwYTogICAgYiAgICAgIDB4YjZmMDIyMTQKICAgICAgICAweGI2ZjAyMjBjOiAg
ICB2bW92ICAgZDcsIHIwLCByMAogICAgICAgIDB4YjZmMDIyMTA6ICAgIHZjdnQuZjY0LnMzMiBk
MCwgczE0CiAgICAgIDU3OjwhMjpsb2MxPglBcml0aERpdihEb3VibGVSZXA6QDEyMzxEb3VibGU+
LCBEb3VibGVSZXA6QDEyNDxEb3VibGU+LCBEb3VibGV8TXVzdEdlbnxVc2VBc090aGVyLCBCeXRl
Y29kZWRvdWJsZSwgTm90U2V0LCBFeGl0cywgYmMjNTUpCiAgICAgICAgMHhiNmYwMjIxNDogICAg
bW92dyAgIHI2LCAjNTY4MTYKICAgICAgICAweGI2ZjAyMjE4OiAgICBtb3Z0ICAgcjYsICM0NjI2
OQogICAgICAgIDB4YjZmMDIyMWM6ICAgIHZsZHIgICBkMSwgW3I2XQogICAgICAgIDB4YjZmMDIy
MjA6ICAgIC5sb25nICBlZTgxMWIwMAogICAgICA1ODo8ITA6LT4JTW92SGludChEb3VibGVSZXA6
QDU3PERvdWJsZT4sIE11c3RHZW4sIGxvYzMsIFc6U2lkZVN0YXRlLCBDbG9iYmVyc0V4aXQsIGJj
IzU1LCBFeGl0SW52YWxpZCkKICAgICAgNjA6PCAxOmxvYzI+CUpTQ29uc3RhbnQoSlN8VXNlQXNP
dGhlciwgT3RoZXJvYmosIFdlYWs6Q2VsbDogMHhiNDdlNzhjMCAoJUVqOmdsb2JhbCksIGJjIzYw
KQogICAgICA2MTo8ITA6LT4JTW92SGludChVbnR5cGVkOkA2MCwgTXVzdEdlbiwgbG9jNCwgVzpT
aWRlU3RhdGUsIENsb2JiZXJzRXhpdCwgYmMjNjApCiAgICAgMTMxOjwhMDotPglQaGFudG9tTG9j
YWwoVW50eXBlZDpAMTM5LCBNdXN0R2VuLCBsb2MwKEd+PE9iamVjdD4vRmx1c2hlZEpTVmFsdWUp
LCBtYWNoaW5lOmxvYzAsIFc6U2lkZVN0YXRlLCBiYyM2MCwgRXhpdEludmFsaWQpICBwcmVkaWN0
aW5nIE90aGVyb2JqCiAgICAgIDY2OjwgMTpsb2MyPglKU0NvbnN0YW50KEpTLCBOb25pbnRhc2Rv
dWJsZSwgRG91YmxlOiA3ZmYwMDAwMDowMDAwMDAwMCwgaW5mLCBiYyM2NykKICAgICAgNjc6PCEw
Oi0+CU1vdkhpbnQoVW50eXBlZDpANjYsIE11c3RHZW4sIGxvYzUsIFc6U2lkZVN0YXRlLCBDbG9i
YmVyc0V4aXQsIGJjIzY3KQogICAgICA2OTo8IDI6bG9jMj4JRG91YmxlQ29uc3RhbnQoRG91Ymxl
fFVzZUFzT3RoZXIsIEFueUludEFzRG91YmxlTm9uaW50YXNkb3VibGUsIERvdWJsZTogZmZmMDAw
MDA6MDAwMDAwMDAsIC1pbmYsIGJjIzc1KQogICAgICA3MDo8ITA6LT4JTW92SGludChEb3VibGVS
ZXA6QDY5PERvdWJsZT4sIE11c3RHZW4sIGxvYzYsIFc6U2lkZVN0YXRlLCBDbG9iYmVyc0V4aXQs
IGJjIzc1KQogICAgICA3Mjo8IDE6bG9jMj4JQ29tcGFyZVN0cmljdEVxKERvdWJsZVJlcDpANTc8
RG91YmxlPiwgRG91YmxlUmVwOkA2OTxEb3VibGU+LCBCb29sZWFufFVzZUFzT3RoZXIsIEJvb2ws
IEV4aXRzLCBiYyM3OCkKICAgICAgICAweGI2ZjAyMjI0OiAgICBtb3ZzICAgcjAsICMxCiAgICAg
ICAgMHhiNmYwMjIyNjogICAgbW92dyAgIHI2LCAjNTY4MzIKICAgICAgICAweGI2ZjAyMjJhOiAg
ICBtb3Z0ICAgcjYsICM0NjI2OQogICAgICAgIDB4YjZmMDIyMmU6ICAgIHZsZHIgICBkMCwgW3I2
XQogICAgICAgIDB4YjZmMDIyMzI6ICAgIHZjbXAuZjY0IGQxLCBkMAogICAgICAgIDB4YjZmMDIy
MzY6ICAgIHZtcnMgICBhcHNyX256Y3YsIGZwc2NyCiAgICAgICAgMHhiNmYwMjIzYTogICAgYmVx
ICAgIDB4YjZmMDIyM2UKICAgICAgICAweGI2ZjAyMjNjOiAgICBtb3ZzICAgcjAsICMwCiAgICAg
IDczOjwgMjpsb2MyPglMb2dpY2FsTm90KEtub3duQm9vbGVhbjpANzIsIEJvb2xlYW58VXNlQXNP
dGhlciwgQm9vbCwgYmMjNzgpCiAgICAgICAgMHhiNmYwMjIzZTogICAgZW9yICAgIHIwLCByMCwg
IzEKICAgICAgNzQ6PCEwOi0+CU1vdkhpbnQoVW50eXBlZDpANzMsIE11c3RHZW4sIGxvYzMsIFc6
U2lkZVN0YXRlLCBDbG9iYmVyc0V4aXQsIGJjIzc4KQogICAgICA3Njo8ITA6LT4JQnJhbmNoKEtu
b3duQm9vbGVhbjpANzMsIE11c3RHZW4sIFQ6IzYvdzoxLjAwMDAwMCwgRjojNy93OjEuMDAwMDAw
LCBXOlNpZGVTdGF0ZSwgYmMjODIpCiAgICAgICAgMHhiNmYwMjI0MjogICAgdHN0ICAgIHIwLCAj
MQogICAgICAgIDB4YjZmMDIyNDY6ICAgIGJlcSAgICAweGI2ZjAyMjY0CiAgICBCbG9jayAjNiAo
YmMjODUpOgogICAgICBFeGVjdXRpb24gY291bnQ6IDEuMDAwMDAwCiAgICAgIFByZWRlY2Vzc29y
czogIzUKICAgICAgU3VjY2Vzc29yczoKICAgICAgRG9taW5hdGVkIGJ5OiAjMCAjMSAjMyAjNCAj
NSAjNgogICAgICBEb21pbmF0ZXM6ICM2CiAgICAgIERvbWluYW5jZSBGcm9udGllcjogCiAgICAg
IEl0ZXJhdGVkIERvbWluYW5jZSBGcm9udGllcjogCiAgICAgIFBoaSBOb2RlczogQDEzNjxhcmcy
LDE+LT4oQDE1MSksIEAxMzc8YXJnMSwxPi0+KEAxMzgpCiAgICAgIDc3OjwgMTpsb2MyPglKU0Nv
bnN0YW50KEpTfFVzZUFzT3RoZXIsIEJvb2wsIEZhbHNlLCBiYyM4NSkKICAgICAgNzg6PCEwOi0+
CVJldHVybihVbnR5cGVkOkA3NywgTXVzdEdlbiwgVzpTaWRlU3RhdGUsIEV4aXRzLCBiYyM4NSkK
ICAgICAgICAweGI2ZjAyMjQ4OiAgICBtdm4gICAgcjAsICMxCiAgICAgICAgMHhiNmYwMjI0Yzog
ICAgbW92cyAgIHIxLCAjMAogICAgICAgIDB4YjZmMDIyNGU6ICAgIG1vdiAgICByMTIsIHIwCiAg
ICAgICAgMHhiNmYwMjI1MDogICAgbW92ICAgIHIwLCByMQogICAgICAgIDB4YjZmMDIyNTI6ICAg
IG1vdiAgICByMSwgcjEyCiAgICAgICAgMHhiNmYwMjI1NDogICAgbW92ICAgIHNwLCByNwogICAg
ICAgIDB4YjZmMDIyNTY6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgICAgIDB4YjZmMDIyNWE6ICAg
IGJ4ICAgICBscgogICAgICAgIDB4YjZmMDIyNWM6ICAgIG1vdnMgICByMiwgIzIxMwogICAgICAg
IDB4YjZmMDIyNWU6ICAgIG1vdiAgICByMTIsICMxNjEKICAgICAgICAweGI2ZjAyMjYyOiAgICBi
a3B0ICAgIzAKICAgICAgNzk6PCEwOi0+CUZsdXNoKENoZWNrOlVudHlwZWQ6QDEzNiwgTXVzdEdl
bnxJc0ZsdXNoZWQsIGFyZzIoQ348TnVtYmVyPi9GbHVzaGVkSlNWYWx1ZSksIG1hY2hpbmU6YXJn
MiwgUjpTdGFjayg2KSwgVzpTaWRlU3RhdGUsIGJjIzg1KSAgcHJlZGljdGluZyBCb29saW50MzJE
b3VibGVwdXJlbmFuCiAgICAgIDgwOjwhMDotPglGbHVzaChDaGVjazpVbnR5cGVkOkAxMzcsIE11
c3RHZW58SXNGbHVzaGVkLCBhcmcxKEJ+PE51bWJlcj4vRmx1c2hlZEpTVmFsdWUpLCBtYWNoaW5l
OmFyZzEsIFI6U3RhY2soNSksIFc6U2lkZVN0YXRlLCBiYyM4NSkgIHByZWRpY3RpbmcgQm9vbGlu
dDMyRG91YmxlcHVyZW5hbgogICAgQmxvY2sgIzcgKGJjIzg3KToKICAgICAgRXhlY3V0aW9uIGNv
dW50OiAxLjAwMDAwMAogICAgICBQcmVkZWNlc3NvcnM6ICMzICM0ICM1CiAgICAgIFN1Y2Nlc3Nv
cnM6CiAgICAgIERvbWluYXRlZCBieTogIzAgIzEgIzMgIzcKICAgICAgRG9taW5hdGVzOiAjNwog
ICAgICBEb21pbmFuY2UgRnJvbnRpZXI6IAogICAgICBJdGVyYXRlZCBEb21pbmFuY2UgRnJvbnRp
ZXI6IAogICAgICBQaGkgTm9kZXM6IEAxMzQ8YXJnMiwxPi0+KEAxNTEsIEAxNDAsIEAxNDIpLCBA
MTM1PGFyZzEsMT4tPihAMTM4LCBAMTQ5LCBAMTUwKQogICAgICA4MTo8IDE6bG9jMj4JSlNDb25z
dGFudChKU3xVc2VBc090aGVyLCBCb29sLCBUcnVlLCBiYyM4NykKICAgICAgODI6PCEwOi0+CVJl
dHVybihVbnR5cGVkOkA4MSwgTXVzdEdlbiwgVzpTaWRlU3RhdGUsIEV4aXRzLCBiYyM4NykKICAg
ICAgICAweGI2ZjAyMjY0OiAgICBtdm4gICAgcjAsICMxCiAgICAgICAgMHhiNmYwMjI2ODogICAg
bW92cyAgIHIxLCAjMQogICAgICAgIDB4YjZmMDIyNmE6ICAgIG1vdiAgICByMTIsIHIwCiAgICAg
ICAgMHhiNmYwMjI2YzogICAgbW92ICAgIHIwLCByMQogICAgICAgIDB4YjZmMDIyNmU6ICAgIG1v
diAgICByMSwgcjEyCiAgICAgICAgMHhiNmYwMjI3MDogICAgbW92ICAgIHNwLCByNwogICAgICAg
IDB4YjZmMDIyNzI6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgICAgIDB4YjZmMDIyNzY6ICAgIGJ4
ICAgICBscgogICAgICAgIDB4YjZmMDIyNzg6ICAgIG1vdnMgICByMiwgIzIxMwogICAgICAgIDB4
YjZmMDIyN2E6ICAgIG1vdiAgICByMTIsICMxNjEKICAgICAgICAweGI2ZjAyMjdlOiAgICBia3B0
ICAgIzAKICAgICAgODM6PCEwOi0+CUZsdXNoKENoZWNrOlVudHlwZWQ6QDEzNCwgTXVzdEdlbnxJ
c0ZsdXNoZWQsIGFyZzIoQ348TnVtYmVyPi9GbHVzaGVkSlNWYWx1ZSksIG1hY2hpbmU6YXJnMiwg
UjpTdGFjayg2KSwgVzpTaWRlU3RhdGUsIGJjIzg3KSAgcHJlZGljdGluZyBCb29saW50MzJEb3Vi
bGVwdXJlbmFuCiAgICAgIDg0OjwhMDotPglGbHVzaChDaGVjazpVbnR5cGVkOkAxMzUsIE11c3RH
ZW58SXNGbHVzaGVkLCBhcmcxKEJ+PE51bWJlcj4vRmx1c2hlZEpTVmFsdWUpLCBtYWNoaW5lOmFy
ZzEsIFI6U3RhY2soNSksIFc6U2lkZVN0YXRlLCBiYyM4NykgIHByZWRpY3RpbmcgQm9vbGludDMy
RG91YmxlcHVyZW5hbgogICAgQmxvY2sgIzggKGJjIzg5KToKICAgICAgRXhlY3V0aW9uIGNvdW50
OiAxLjAwMDAwMAogICAgICBQcmVkZWNlc3NvcnM6ICMwCiAgICAgIFN1Y2Nlc3NvcnM6CiAgICAg
IERvbWluYXRlZCBieTogIzAgIzgKICAgICAgRG9taW5hdGVzOiAjOAogICAgICBEb21pbmFuY2Ug
RnJvbnRpZXI6IAogICAgICBJdGVyYXRlZCBEb21pbmFuY2UgRnJvbnRpZXI6IAogICAgICBQaGkg
Tm9kZXM6IEAxMzI8YXJnMSwyPi0+KEAxKSwgQDEzMzxhcmcyLDE+LT4oQDIpCiAgICAgIDg1Ojwh
MTpsb2MyPglHZXRMb2NhbChVbnR5cGVkOkAxMzIsIEpTfE11c3RHZW58VXNlQXNPdGhlciwgQm9v
bGludDMyRG91YmxlcHVyZW5hbiwgYXJnMShCfjxOdW1iZXI+L0ZsdXNoZWRKU1ZhbHVlKSwgbWFj
aGluZTphcmcxLCBSOlN0YWNrKDUpLCBiYyM4OSkgIHByZWRpY3RpbmcgQm9vbGludDMyRG91Ymxl
cHVyZW5hbgogICAgICAgIDB4YjZmMDIyODA6ICAgIGxkciAgICByMCwgW3I3LCAjNDBdCiAgICAg
ICAgMHhiNmYwMjI4MjogICAgbGRyICAgIHIxLCBbcjcsICM0NF0KICAgICAxMjg6PCAyOmxvYzI+
CURvdWJsZVJlcChDaGVjazpOdW1iZXI6QDg1LCBEb3VibGV8UHVyZUludCwgQnl0ZWNvZGVkb3Vi
bGUsIEV4aXRzLCBiYyM4OSkKICAgICAgICAweGI2ZjAyMjg0OiAgICBjbXAgICAgcjEsICM0Mjk0
OTY3Mjk1CiAgICAgICAgMHhiNmYwMjI4ODogICAgYmVxICAgIDB4YjZmMDIyOTgKICAgICAgICAw
eGI2ZjAyMjhhOiAgICBjbW4gICAgcjEsICM3CiAgICAgICAgMHhiNmYwMjI4ZTogICAgYmhzICAg
IDB4YjZmMDIzYzYKICAgICAgICAweGI2ZjAyMjkyOiAgICB2bW92ICAgZDAsIHIxLCByMQogICAg
ICAgIDB4YjZmMDIyOTY6ICAgIGIgICAgICAweGI2ZjAyMmEwCiAgICAgICAgMHhiNmYwMjI5ODog
ICAgdm1vdiAgIGQ3LCByMCwgcjAKICAgICAgICAweGI2ZjAyMjljOiAgICB2Y3Z0LmY2NC5zMzIg
ZDAsIHMxNAogICAgICA4Njo8IDE6bG9jMj4JQ29tcGFyZVN0cmljdEVxKERvdWJsZVJlcDpAMTI4
PERvdWJsZT4sIERvdWJsZVJlcDpAMTI4PERvdWJsZT4sIEJvb2xlYW58VXNlQXNPdGhlciwgQm9v
bCwgRXhpdHMsIGJjIzg5KQogICAgICAgIDB4YjZmMDIyYTA6ICAgIG1vdnMgICByMCwgIzEKICAg
ICAgICAweGI2ZjAyMmEyOiAgICB2Y21wLmY2NCBkMCwgZDAKICAgICAgICAweGI2ZjAyMmE2OiAg
ICB2bXJzICAgYXBzcl9uemN2LCBmcHNjcgogICAgICAgIDB4YjZmMDIyYWE6ICAgIGJlcSAgICAw
eGI2ZjAyMmFlCiAgICAgICAgMHhiNmYwMjJhYzogICAgbW92cyAgIHIwLCAjMAogICAgICA4Nzo8
IDI6bG9jMj4JTG9naWNhbE5vdChLbm93bkJvb2xlYW46QDg2LCBCb29sZWFufFVzZUFzT3RoZXIs
IEJvb2wsIGJjIzg5KQogICAgICAgIDB4YjZmMDIyYWU6ICAgIGVvciAgICByMCwgcjAsICMxCiAg
ICAgIDg4OjwhMDotPglNb3ZIaW50KFVudHlwZWQ6QDg3LCBNdXN0R2VuLCBsb2MzLCBXOlNpZGVT
dGF0ZSwgQ2xvYmJlcnNFeGl0LCBiYyM4OSkKICAgICAgOTA6PCEwOi0+CVJldHVybihVbnR5cGVk
OkA4NywgTXVzdEdlbiwgVzpTaWRlU3RhdGUsIEV4aXRzLCBiYyM5MykKICAgICAgICAweGI2ZjAy
MmIyOiAgICBtdm4gICAgcjEsICMxCiAgICAgICAgMHhiNmYwMjJiNjogICAgbW92ICAgIHNwLCBy
NwogICAgICAgIDB4YjZmMDIyYjg6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgICAgIDB4YjZmMDIy
YmM6ICAgIGJ4ICAgICBscgogICAgICAgIDB4YjZmMDIyYmU6ICAgIG1vdnMgICByMiwgIzIxMwog
ICAgICAgIDB4YjZmMDIyYzA6ICAgIG1vdiAgICByMTIsICMxNjEKICAgICAgICAweGI2ZjAyMmM0
OiAgICBia3B0ICAgIzAKICAgICAgOTE6PCEwOi0+CUZsdXNoKENoZWNrOlVudHlwZWQ6QDEzMywg
TXVzdEdlbnxJc0ZsdXNoZWQsIGFyZzIoQ348TnVtYmVyPi9GbHVzaGVkSlNWYWx1ZSksIG1hY2hp
bmU6YXJnMiwgUjpTdGFjayg2KSwgVzpTaWRlU3RhdGUsIGJjIzkzKSAgcHJlZGljdGluZyBCb29s
aW50MzJEb3VibGVwdXJlbmFuCiAgICAgIDkyOjwhMDotPglGbHVzaChDaGVjazpVbnR5cGVkOkAx
MzIsIE11c3RHZW58SXNGbHVzaGVkLCBhcmcxKEJ+PE51bWJlcj4vRmx1c2hlZEpTVmFsdWUpLCBt
YWNoaW5lOmFyZzEsIFI6U3RhY2soNSksIFc6U2lkZVN0YXRlLCBiYyM5MykgIHByZWRpY3Rpbmcg
Qm9vbGludDMyRG91YmxlcHVyZW5hbgogICAgKEVuZCBPZiBNYWluIFBhdGgpCiAgICAgICAgMHhi
NmYwMjJjNjogICAgbW92ICAgIHIxMiwgIzAKICAgICAgICAweGI2ZjAyMmNhOiAgICBzdHIgICAg
cjEyLCBbcjcsICMyOF0KICAgICAgICAweGI2ZjAyMmNlOiAgICBtdm4gICAgcjEyLCAjMjMKICAg
ICAgICAweGI2ZjAyMmQyOiAgICBtb3YgICAgc3AsIHNwCiAgICAgICAgMHhiNmYwMjJkNDogICAg
YWRkICAgIHNwLCByMTIKICAgICAgICAweGI2ZjAyMmQ2OiAgICBtb3Z3ICAgcjEsICM2MjQwCiAg
ICAgICAgMHhiNmYwMjJkYTogICAgbW92dCAgIHIxLCAjNDYyMDEKICAgICAgICAweGI2ZjAyMmRl
OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNmYwMjJlMDogICAgbW92ICAgIHIxMiwgIzEK
ICAgICAgICAweGI2ZjAyMmU0OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI2
ZjAyMmU4OiAgICBtb3Z3ICAgcjEyLCAjNDc5MDkKICAgICAgICAweGI2ZjAyMmVjOiAgICBtb3Z0
ICAgcjEyLCAjNDY3NzYKICAgICAgICAweGI2ZjAyMmYwOiAgICBibHggICAgcjEyCiAgICAgICAg
MHhiNmYwMjJmMjogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI2ZjAyMmY2OiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjZmMDIyZmE6ICAgIGxkciAgICByNiwgW3I2XQog
ICAgICAgIDB4YjZmMDIyZmM6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI2ZjAyMmZlOiAg
ICBibmUgICAgMHhiNmYwMjM2OAogICAgICAgIDB4YjZmMDIzMDA6ICAgIHB1c2ggICB7cjcsIGxy
fQogICAgICAgIDB4YjZmMDIzMDQ6ICAgIG1vdiAgICByNywgc3AKICAgICAgICAweGI2ZjAyMzA2
OiAgICBtb3Z3ICAgcjEyLCAjNjI0MAogICAgICAgIDB4YjZmMDIzMGE6ICAgIG1vdnQgICByMTIs
ICM0NjIwMQogICAgICAgIDB4YjZmMDIzMGU6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAg
ICAgMHhiNmYwMjMxMjogICAgbGRyICAgIHIxLCBbcjcsICMyNF0KICAgICAgICAweGI2ZjAyMzE0
OiAgICBjbXAgICAgcjEsICMzCiAgICAgICAgMHhiNmYwMjMxNjogICAgYmhzICAgIDB4YjZmMDIw
YjIKICAgICAgICAweGI2ZjAyMzFhOiAgICBtb3YgICAgcjEyLCAjMgogICAgICAgIDB4YjZmMDIz
MWU6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjZmMDIzMjI6ICAgIG12biAg
ICByMTIsICMyMwogICAgICAgIDB4YjZmMDIzMjY6ICAgIG1vdiAgICBzcCwgc3AKICAgICAgICAw
eGI2ZjAyMzI4OiAgICBhZGQgICAgc3AsIHIxMgogICAgICAgIDB4YjZmMDIzMmE6ICAgIG1vdiAg
ICByMCwgcjcKICAgICAgICAweGI2ZjAyMzJjOiAgICBtb3YgICAgcjEyLCAjMwogICAgICAgIDB4
YjZmMDIzMzA6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjZmMDIzMzQ6ICAg
IG1vdncgICByMTIsICM0Nzk5NwogICAgICAgIDB4YjZmMDIzMzg6ICAgIG1vdnQgICByMTIsICM0
Njc3NgogICAgICAgIDB4YjZmMDIzM2M6ICAgIGJseCAgICByMTIKICAgICAgICAweGI2ZjAyMzNl
OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjZmMDIzNDI6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAgICAgMHhiNmYwMjM0NjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhi
NmYwMjM0ODogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjZmMDIzNGE6ICAgIGJuZSAgICAw
eGI2ZjAyMzY4CiAgICAgICAgMHhiNmYwMjM0YzogICAgYWRkICAgIHNwLCBzcCwgIzYKICAgICAg
ICAweGI2ZjAyMzRlOiAgICB0c3QgICAgcjAsIHIwCiAgICAgICAgMHhiNmYwMjM1MDogICAgYmVx
ICAgIDB4YjZmMDIwYjIKICAgICAgICAweGI2ZjAyMzU0OiAgICBtb3YgICAgcjEyLCAjNAogICAg
ICAgIDB4YjZmMDIzNTg6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjZmMDIz
NWM6ICAgIG1vdncgICByMTIsICM2OTEzCiAgICAgICAgMHhiNmYwMjM2MDogICAgbW92dCAgIHIx
MiwgIzQ2ODMyCiAgICAgICAgMHhiNmYwMjM2NDogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjZm
MDIzNjY6ICAgIGIgICAgICAweGI2ZjAzMGIyCiAgICAgICAgMHhiNmYwMjM2ODogICAgbW92dyAg
IHIwLCAjMzI3NjgKICAgICAgICAweGI2ZjAyMzZjOiAgICBtb3Z0ICAgcjAsICM0NjIwNwogICAg
ICAgIDB4YjZmMDIzNzA6ICAgIG1vdiAgICByMSwgcjcKICAgICAgICAweGI2ZjAyMzcyOiAgICBt
b3YgICAgc3AsIHI3CiAgICAgICAgMHhiNmYwMjM3NDogICAgbXZuICAgIHIxMiwgIzU1CiAgICAg
ICAgMHhiNmYwMjM3ODogICAgbW92ICAgIHNwLCBzcAogICAgICAgIDB4YjZmMDIzN2E6ICAgIGFk
ZCAgICBzcCwgcjEyCiAgICAgICAgMHhiNmYwMjM3YzogICAgbW92dyAgIHIxMiwgIzYzMjM3CiAg
ICAgICAgMHhiNmYwMjM4MDogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAgICAgMHhiNmYwMjM4
NDogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjZmMDIzODY6ICAgIG1vdncgICByNiwgIzQ2MTg4
CiAgICAgICAgMHhiNmYwMjM4YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI2ZjAy
MzhlOiAgICBsZHIgICAgcjEsIFtyNl0KICAgICAgICAweGI2ZjAyMzkwOiAgICBieCAgICAgcjEK
ICAgICAgICAweGI2ZjAyMzkyOiAgICBtb3YgICAgcjEyLCAjMAogICAgICAgIDB4YjZmMDIzOTY6
ICAgIG1vdncgICByNiwgIzQ2MTk2CiAgICAgICAgMHhiNmYwMjM5YTogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgICAgICAweGI2ZjAyMzllOiAgICBzdHIgICAgcjEyLCBbcjZdCiAgICAgICAgMHhi
NmYwMjNhMjogICAgbm9wICAgIAogICAgICAgIDB4YjZmMDIzYTQ6ICAgIG5vcCAgICAKICAgICAg
ICAweGI2ZjAyM2E4OiAgICBiICAgICAgMHhiNjcwM2M4MAogICAgICAgIDB4YjZmMDIzYWM6ICAg
IG1vdiAgICByMTIsICMxCiAgICAgICAgMHhiNmYwMjNiMDogICAgbW92dyAgIHI2LCAjNDYxOTYK
ICAgICAgICAweGI2ZjAyM2I0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjZmMDIz
Yjg6ICAgIHN0ciAgICByMTIsIFtyNl0KICAgICAgICAweGI2ZjAyM2JjOiAgICBub3AgICAgCiAg
ICAgICAgMHhiNmYwMjNiZTogICAgbm9wICAgIAogICAgICAgIDB4YjZmMDIzYzI6ICAgIGIgICAg
ICAweGI2NzAzYzgwCiAgICAgICAgMHhiNmYwMjNjNjogICAgbW92ICAgIHIxMiwgIzIKICAgICAg
ICAweGI2ZjAyM2NhOiAgICBtb3Z3ICAgcjYsICM0NjE5NgogICAgICAgIDB4YjZmMDIzY2U6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNmYwMjNkMjogICAgc3RyICAgIHIxMiwgW3I2
XQogICAgICAgIDB4YjZmMDIzZDY6ICAgIG5vcCAgICAKICAgICAgICAweGI2ZjAyM2Q4OiAgICBu
b3AgICAgCiAgICAgICAgMHhiNmYwMjNkYzogICAgYiAgICAgIDB4YjY3MDNjODAKICAgIFN0cnVj
dHVyZXM6CiAgICAgICAgJUJkOkpTTGV4aWNhbEVudmlyb25tZW50ID0gMHhiNDdmNjBhMDpbSlNM
ZXhpY2FsRW52aXJvbm1lbnQsIHt9LCBOb25BcnJheSwgTGVhZl0KICAgICAgICAlRWo6Z2xvYmFs
ICAgICAgICAgICAgICAgPSAweGI0N2MxODgwOltnbG9iYWwsIHtwYXJzZUludDoxMDAsIE9iamVj
dDoxMDEsIEZ1bmN0aW9uOjEwMiwgQXJyYXk6MTAzLCBSZWdFeHA6MTA0LCBFdmFsRXJyb3I6MTA1
LCBSYW5nZUVycm9yOjEwNiwgUmVmZXJlbmNlRXJyb3I6MTA3LCBTeW50YXhFcnJvcjoxMDgsIFR5
cGVFcnJvcjoxMDksIFVSSUVycm9yOjExMCwgUHJveHk6MTExLCBTZXQ6MTEyLCBNYXA6MTEzLCBE
YXRlOjExNCwgU3RyaW5nOjExNSwgU3ltYm9sOjExNiwgQm9vbGVhbjoxMTcsIE51bWJlcjoxMTgs
IEVycm9yOjExOSwgUHJvbWlzZToxMjAsIEFycmF5QnVmZmVyOjEyMSwgV2Vha01hcDoxMjIsIFdl
YWtTZXQ6MTIzLCBldmFsOjEyNCwgSW50bDoxMjUsIEpTT046MTI2LCBNYXRoOjEyNywgUmVmbGVj
dDoxMjgsIERhdGFWaWV3OjEyOSwgRmxvYXQ2NEFycmF5OjEzMCwgRmxvYXQzMkFycmF5OjEzMSwg
VWludDMyQXJyYXk6MTMyLCBJbnQzMkFycmF5OjEzMywgVWludDE2QXJyYXk6MTM0LCBJbnQxNkFy
cmF5OjEzNSwgVWludDhDbGFtcGVkQXJyYXk6MTM2LCBVaW50OEFycmF5OjEzNywgSW50OEFycmF5
OjEzOCwgUHJpdmF0ZVN5bWJvbC5JbnQ4QXJyYXk6MTM5LCBQcml2YXRlU3ltYm9sLkludDE2QXJy
YXk6MTQwLCBQcml2YXRlU3ltYm9sLkludDMyQXJyYXk6MTQxLCBQcml2YXRlU3ltYm9sLlVpbnQ4
QXJyYXk6MTQyLCBQcml2YXRlU3ltYm9sLlVpbnQ4Q2xhbXBlZEFycmF5OjE0MywgUHJpdmF0ZVN5
bWJvbC5VaW50MTZBcnJheToxNDQsIFByaXZhdGVTeW1ib2wuVWludDMyQXJyYXk6MTQ1LCBQcml2
YXRlU3ltYm9sLkZsb2F0MzJBcnJheToxNDYsIFByaXZhdGVTeW1ib2wuRmxvYXQ2NEFycmF5OjE0
NywgY29uc29sZToxNDgsIGRlYnVnOjE0OSwgZGVzY3JpYmU6MTUwLCBkZXNjcmliZUFycmF5OjE1
MSwgcHJpbnQ6MTUyLCBxdWl0OjE1MywgYWJvcnQ6MTU0LCBnYzoxNTUsIGZ1bGxHQzoxNTYsIGVk
ZW5HQzoxNTcsIGZvcmNlR0NTbG93UGF0aHM6MTU4LCBnY0hlYXBTaXplOjE1OSwgYWRkcmVzc09m
OjE2MCwgZ2V0R2V0dGVyU2V0dGVyOjE2MSwgdmVyc2lvbjoxNjIsIHJ1bjoxNjMsIGxvYWQ6MTY0
LCByZWFkRmlsZToxNjUsIGNoZWNrU3ludGF4OjE2NiwganNjU3RhY2s6MTY3LCByZWFkbGluZTox
NjgsIHByZWNpc2VUaW1lOjE2OSwgbmV2ZXJJbmxpbmVGdW5jdGlvbjoxNzAsIG5vSW5saW5lOjE3
MSwgbm9ERkc6MTcyLCBub0ZUTDoxNzMsIG51bWJlck9mREZHQ29tcGlsZXM6MTc0LCBvcHRpbWl6
ZU5leHRJbnZvY2F0aW9uOjE3NSwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50OjE3NiwgdHJhbnNm
ZXJBcnJheUJ1ZmZlcjoxNzcsIGZhaWxOZXh0TmV3Q29kZUJsb2NrOjE3OCwgc2hhZG93Q2hpY2tl
bkZ1bmN0aW9uc09uU3RhY2s6MTc5LCBzZXRHbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRO
b3RUaHJvdzoxODAsIFJvb3Q6MTgxLCBFbGVtZW50OjE4MiwgZ2V0RWxlbWVudDoxODMsIHNldEVs
ZW1lbnRSb290OjE4NCwgU2ltcGxlT2JqZWN0OjE4NSwgZ2V0SGlkZGVuVmFsdWU6MTg2LCBzZXRI
aWRkZW5WYWx1ZToxODcsIERGR1RydWU6MTg4LCBPU1JFeGl0OjE4OSwgaXNGaW5hbFRpZXI6MTkw
LCBwcmVkaWN0SW50MzI6MTkxLCBpc0ludDMyOjE5MiwgZmlhdEludDUyOjE5MywgZWZmZWN0ZnVs
NDI6MTk0LCBtYWtlTWFzcXVlcmFkZXI6MTk1LCBoYXNDdXN0b21Qcm9wZXJ0aWVzOjE5NiwgY3Jl
YXRlUHJveHk6MTk3LCBjcmVhdGVSdW50aW1lQXJyYXk6MTk4LCBjcmVhdGVJbXB1cmVHZXR0ZXI6
MTk5LCBjcmVhdGVDdXN0b21HZXR0ZXJPYmplY3Q6MjAwLCBjcmVhdGVCdWlsdGluOjIwMSwgY3Jl
YXRlR2xvYmFsT2JqZWN0OjIwMiwgc2V0SW1wdXJlR2V0dGVyRGVsZWdhdGU6MjAzLCBkdW1wVHlw
ZXNGb3JBbGxWYXJpYWJsZXM6MjA0LCBmaW5kVHlwZUZvckV4cHJlc3Npb246MjA1LCByZXR1cm5U
eXBlRm9yOjIwNiwgZHVtcEJhc2ljQmxvY2tFeGVjdXRpb25SYW5nZXM6MjA3LCBoYXNCYXNpY0Js
b2NrRXhlY3V0ZWQ6MjA4LCBiYXNpY0Jsb2NrRXhlY3V0aW9uQ291bnQ6MjA5LCBlbmFibGVFeGNl
cHRpb25GdXp6OjIxMCwgZHJhaW5NaWNyb3Rhc2tzOjIxMSwgaXMzMkJpdFBsYXRmb3JtOjIxMiwg
bG9hZE1vZHVsZToyMTMsIGNoZWNrTW9kdWxlU3ludGF4OjIxNCwgcGxhdGZvcm1TdXBwb3J0c1Nh
bXBsaW5nUHJvZmlsZXI6MjE1LCBnZW5lcmF0ZUhlYXBTbmFwc2hvdDoyMTYsIHN0YXJ0U2FtcGxp
bmdQcm9maWxlcjoyMTcsIHNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlczoyMTh9LCBOb25BcnJh
eSwgUHJvdG86MHhiNDdkM2ZmMCwgSGFzIGJlZW4gZGljdGlvbmFyeSwgTGVhZl0KR2VuZXJhdGVk
IEpJVCBjb2RlIGZvciBERkcgT1NSIGVudHJ5IHRodW5rOgogICAgQ29kZSBhdCBbMHhiNmYwM2Yw
MSwgMHhiNmYwM2Y2MSk6CiAgICAweGI2ZjAzZjAwOiAgICBtb3YgICAgcjAsIHIxCiAgICAweGI2
ZjAzZjAyOiAgICBsZHIgICAgcjEsIFtyMF0KICAgIDB4YjZmMDNmMDQ6ICAgIG1vdiAgICByMiwg
cjEKICAgIDB4YjZmMDNmMDY6ICAgIGxzbCAgICByMiwgcjIsICMzCiAgICAweGI2ZjAzZjBhOiAg
ICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAzZjBjOiAgICBzdWIgICAgc3AsIHNwLCByMgogICAg
MHhiNmYwM2YxMDogICAgc3VicyAgIHIxLCByMSwgIzEKICAgIDB4YjZmMDNmMTI6ICAgIG1vdiAg
ICByOCwgcjEKICAgIDB4YjZmMDNmMTQ6ICAgIHJzYiAgICByOCwgcjgsICMwCiAgICAweGI2ZjAz
ZjE4OiAgICBhZGR3ICAgcjYsIHIwLCAjNDgKICAgIDB4YjZmMDNmMWM6ICAgIGxkciAgICByMiwg
W3I2LCByMSwgIzNdCiAgICAweGI2ZjAzZjIwOiAgICBhZGR3ICAgcjYsIHIwLCAjNTIKICAgIDB4
YjZmMDNmMjQ6ICAgIGxkciAgICByMywgW3I2LCByMSwgIzNdCiAgICAweGI2ZjAzZjI4OiAgICBt
dm4gICAgcjYsICM3CiAgICAweGI2ZjAzZjJjOiAgICBhZGQgICAgcjYsIHI3CiAgICAweGI2ZjAz
ZjJlOiAgICBzdHIgICAgcjIsIFtyNiwgcjgsIGxzbCAjM10KICAgIDB4YjZmMDNmMzI6ICAgIG12
biAgICByNiwgIzMKICAgIDB4YjZmMDNmMzY6ICAgIGFkZCAgICByNiwgcjcKICAgIDB4YjZmMDNm
Mzg6ICAgIHN0ciAgICByMywgW3I2LCByOCwgbHNsICMzXQogICAgMHhiNmYwM2YzYzogICAgY21u
ICAgIHIxLCAjNAogICAgMHhiNmYwM2Y0MDogICAgYm5lICAgIDB4YjZmMDQxMTAKICAgIDB4YjZm
MDNmNDI6ICAgIGxkciAgICByMSwgW3IwLCAjOF0KICAgIDB4YjZmMDNmNDQ6ICAgIGNtcCAgICBy
MSwgIzEwMDAKICAgIDB4YjZmMDNmNDg6ICAgIGJoaSAgICAweGI2ZjAzZjUwCiAgICAweGI2ZjAz
ZjRhOiAgICBtb3YgICAgcjEyLCAjMjMwCiAgICAweGI2ZjAzZjRlOiAgICBia3B0ICAgIzAKICAg
IDB4YjZmMDNmNTA6ICAgIGJ4ICAgICByMQpMaW5raW5nIGNhbGwgaW4gb3BhcXVlUG93I0M2a2hl
OTpbMHhiNDc5MzdlMC0+MHhiNDdkNWFjMCwgQmFzZWxpbmVGdW5jdGlvbkNhbGwsIDQ3IChOZXZl
cklubGluZSldIGF0IGJjIzM2IHRvIChudWxsKSwgZW50cnlwb2ludCBhdCBDb2RlUHRyKGV4ZWN1
dGFibGUgPSAweGI2ZjA3N2MxLCBkYXRhTG9jYXRpb24gPSAweGI2ZjA3N2MwKQpHZW5lcmF0ZWQg
SklUIGNvZGUgZm9yIEFjY2VzcyBzdHViIGZvciBvcGFxdWVQb3cjQzZraGU5OlsweGI0NzkzN2Uw
LT4weGI0N2Q1YWMwLCBCYXNlbGluZUZ1bmN0aW9uQ2FsbCwgNDcgKE5ldmVySW5saW5lKV0gYmMj
MjEgd2l0aCByZXR1cm4gcG9pbnQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNmYwMWQ3NywgZGF0
YUxvY2F0aW9uID0gMHhiNmYwMWQ3Nik6IExvYWQ6KEdlbmVyYXRlZCwgc3RydWN0dXJlID0gMHhi
NDdjMmFhMDpbTWF0aCwge0U6MTAwLCBMTjI6MTAxLCBMTjEwOjEwMiwgTE9HMkU6MTAzLCBMT0cx
MEU6MTA0LCBQSToxMDUsIFNRUlQxXzI6MTA2LCBTUVJUMjoxMDcsIFN5bWJvbC50b1N0cmluZ1Rh
ZzoxMDgsIGFiczoxMDksIGFjb3M6MTEwLCBhc2luOjExMSwgYXRhbjoxMTIsIGFjb3NoOjExMywg
YXNpbmg6MTE0LCBhdGFuaDoxMTUsIGF0YW4yOjExNiwgY2JydDoxMTcsIGNlaWw6MTE4LCBjbHoz
MjoxMTksIGNvczoxMjAsIGNvc2g6MTIxLCBleHA6MTIyLCBleHBtMToxMjMsIGZsb29yOjEyNCwg
ZnJvdW5kOjEyNSwgaHlwb3Q6MTI2LCBsb2c6MTI3LCBsb2cxMDoxMjgsIGxvZzFwOjEyOSwgbG9n
MjoxMzAsIG1heDoxMzEsIG1pbjoxMzIsIHBvdzoxMzMsIHJhbmRvbToxMzQsIHJvdW5kOjEzNSwg
c2lnbjoxMzYsIHNpbjoxMzcsIHNpbmg6MTM4LCBzcXJ0OjEzOSwgdGFuOjE0MCwgdGFuaDoxNDEs
IHRydW5jOjE0MiwgaW11bDoxNDN9LCBOb25BcnJheSwgUHJvdG86MHhiNDdkM2ZmMCwgTGVhZl0s
IG9mZnNldCA9IDEzMyk6CiAgICBDb2RlIGF0IFsweGI2ZjA3NGMxLCAweGI2ZjA3NTIxKToKICAg
IDB4YjZmMDc0YzA6ICAgIGxkciAgICByNiwgW3IwXQogICAgMHhiNmYwNzRjMjogICAgbW92dyAg
IHIxMiwgIzEwOTEyCiAgICAweGI2ZjA3NGM2OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDQKICAgIDB4
YjZmMDc0Y2E6ICAgIGNtcCAgICByNiwgcjEyCiAgICAweGI2ZjA3NGNlOiAgICBpdHR0ICAgbmUK
ICAgIDB4YjZmMDc0ZDA6ICAgIG5vcG5lICAKICAgIDB4YjZmMDc0ZDI6ICAgIG5vcG5lICAKICAg
IDB4YjZmMDc0ZDY6ICAgIGJuZSAgICAweGI2ZjAxZWJhCiAgICAweGI2ZjA3NGRhOiAgICBsZHIg
ICAgcjAsIFtyMCwgIzhdCiAgICAweGI2ZjA3NGRjOiAgICBtb3Z3ICAgcjYsICM2NTI2MAogICAg
MHhiNmYwNzRlMDogICAgbW92dCAgIHI2LCAjNjU1MzUKICAgIDB4YjZmMDc0ZTQ6ICAgIGxkciAg
ICByMSwgW3IwLCByNl0KICAgIDB4YjZmMDc0ZTY6ICAgIG1vdncgICByNiwgIzY1MjU2CiAgICAw
eGI2ZjA3NGVhOiAgICBtb3Z0ICAgcjYsICM2NTUzNQogICAgMHhiNmYwNzRlZTogICAgbGRyICAg
IHIwLCBbcjAsIHI2XQogICAgMHhiNmYwNzRmMDogICAgbm9wICAgIAogICAgMHhiNmYwNzRmMjog
ICAgbm9wICAgIAogICAgMHhiNmYwNzRmNjogICAgYiAgICAgIDB4YjZmMDFkNzYKICAgIDB4YjZm
MDc0ZmE6ICAgIG5vcCAgICAKICAgIDB4YjZmMDc0ZmM6ICAgIG5vcCAgICAKICAgIDB4YjZmMDc1
MDA6ICAgIGIgICAgICAweGI2ZjAxZWJhCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgVmlydHVhbCBj
YWxsIHNsb3cgcGF0aCB0aHVuazoKICAgIENvZGUgYXQgWzB4YjZmMDIzZTEsIDB4YjZmMDI0YTEp
OgogICAgMHhiNmYwMjNlMDogICAgbGRyICAgIHIxMiwgW3IyLCAjNTJdCiAgICAweGI2ZjAyM2U0
OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI2ZjAyM2U4OiAgICBzdHIgICAgcjEyLCBb
cjIsICM1Ml0KICAgIDB4YjZmMDIzZWM6ICAgIGNtbiAgICByMSwgIzUKICAgIDB4YjZmMDIzZjA6
ICAgIGJuZSAgICAweGI2ZjAyNDA4CiAgICAweGI2ZjAyM2YyOiAgICBsZHJiICAgcjYsIFtyMCwg
IzVdCiAgICAweGI2ZjAyM2Y0OiAgICBjbXAgICAgcjIsICMyMwogICAgMHhiNmYwMjNmNjogICAg
Ym5lICAgIDB4YjZmMDI0MDgKICAgIDB4YjZmMDIzZjg6ICAgIGxkciAgICByOCwgW3IwLCAjMjBd
CiAgICAweGI2ZjAyM2ZjOiAgICBsZHIgICAgcjgsIFtyOCwgIzI4XQogICAgMHhiNmYwMjQwMDog
ICAgdHN0ICAgIHI4LCByOAogICAgMHhiNmYwMjQwNDogICAgYmVxICAgIDB4YjZmMDI0MDgKICAg
IDB4YjZmMDI0MDY6ICAgIGJ4ICAgICByOAogICAgMHhiNmYwMjQwODogICAgcHVzaCAgIHtyNywg
bHJ9CiAgICAweGI2ZjAyNDBjOiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAyNDBlOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMjQxMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjZmMDI0MTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMjQxODogICAgbXZuICAg
IHIxMiwgIzIzCiAgICAweGI2ZjAyNDFjOiAgICBtb3YgICAgc3AsIHNwCiAgICAweGI2ZjAyNDFl
OiAgICBhZGQgICAgc3AsIHIxMgogICAgMHhiNmYwMjQyMDogICAgbW92ICAgIHIxLCByMgogICAg
MHhiNmYwMjQyMjogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMjQyNDogICAgbW92dyAgIHI0
LCAjNTEyNzcKICAgIDB4YjZmMDI0Mjg6ICAgIG1vdnQgICByNCwgIzQ2Nzc2CiAgICAweGI2ZjAy
NDJjOiAgICBibHggICAgcjQKICAgIDB4YjZmMDI0MmU6ICAgIGFkZCAgICBzcCwgc3AsICM2CiAg
ICAweGI2ZjAyNDMwOiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAyNDMyOiAgICBwb3AgICAg
e3I3LCBscn0KICAgIDB4YjZmMDI0MzY6ICAgIHRzdCAgICByMSwgcjEKICAgIDB4YjZmMDI0Mzg6
ICAgIGJlcSAgICAweGI2ZjAyNDg4CiAgICAweGI2ZjAyNDNhOiAgICBtb3YgICAgcjUsIGxyCiAg
ICAweGI2ZjAyNDNjOiAgICBsZHIgICAgcjEsIFtyNywgIzI0XQogICAgMHhiNmYwMjQzZTogICAg
bGRyICAgIHIzLCBbcjcsICM4XQogICAgMHhiNmYwMjQ0MDogICAgbGRyICAgIHIzLCBbcjMsICMz
Ml0KICAgIDB4YjZmMDI0NDI6ICAgIGNtcCAgICByMywgcjEKICAgIDB4YjZmMDI0NDQ6ICAgIGJs
cyAgICAweGI2ZjAyNDQ4CiAgICAweGI2ZjAyNDQ2OiAgICBtb3YgICAgcjEsIHIzCiAgICAweGI2
ZjAyNDQ4OiAgICBhZGRzICAgcjEsIHIxLCAjNQogICAgMHhiNmYwMjQ0YTogICAgbXZuICAgIHIx
MiwgIzEKICAgIDB4YjZmMDI0NGU6ICAgIGFuZCAgICByMSwgcjEsIHIxMgogICAgMHhiNmYwMjQ1
MjogICAgbW92ICAgIHIxMiwgIzgKICAgIDB4YjZmMDI0NTY6ICAgIHNtdWxsICByMSwgcjEyLCBy
MSwgcjEyCiAgICAweGI2ZjAyNDVhOiAgICBhZGRzICAgcjMsIHI3LCByMQogICAgMHhiNmYwMjQ1
YzogICAgbGRyICAgIHIxLCBbc3AsICMxNl0KICAgIDB4YjZmMDI0NWU6ICAgIGFkZHMgICByMSwg
cjEsICM1CiAgICAweGI2ZjAyNDYwOiAgICBtdm4gICAgcjEyLCAjMQogICAgMHhiNmYwMjQ2NDog
ICAgYW5kICAgIHIxLCByMSwgcjEyCiAgICAweGI2ZjAyNDY4OiAgICBtb3YgICAgcjEyLCAjOAog
ICAgMHhiNmYwMjQ2YzogICAgc211bGwgIHIxLCByMTIsIHIxLCByMTIKICAgIDB4YjZmMDI0NzA6
ICAgIGxkciAgICBsciwgW3I3LCAjNF0KICAgIDB4YjZmMDI0NzQ6ICAgIHN1YnMgICByMSwgIzgK
ICAgIDB4YjZmMDI0NzY6ICAgIHN1YnMgICByMywgcjMsIHIxCiAgICAweGI2ZjAyNDc4OiAgICBs
ZHIgICAgcjcsIFtyN10KICAgIDB4YjZmMDI0N2E6ICAgIHN1YnMgICByMSwgcjEsICM0CiAgICAw
eGI2ZjAyNDdjOiAgICBsZHIgICAgcjIsIFtzcCwgcjFdCiAgICAweGI2ZjAyNDgwOiAgICBzdHIg
ICAgcjIsIFtyMywgcjFdCiAgICAweGI2ZjAyNDgyOiAgICB0c3QgICAgcjEsIHIxCiAgICAweGI2
ZjAyNDg0OiAgICBibmUgICAgMHhiNmYwMjY3YQogICAgMHhiNmYwMjQ4NjogICAgbW92ICAgIHNw
LCByMwogICAgMHhiNmYwMjQ4ODogICAgYnggICAgIHIwCkdlbmVyYXRlZCBKSVQgY29kZSBmb3Ig
U3RyaW5nIGdldF9ieV92YWwgc3R1YjoKICAgIENvZGUgYXQgWzB4YjZmMDNmNjEsIDB4YjZmMDNm
YzEpOgogICAgMHhiNmYwM2Y2MDogICAgbGRyICAgIHI2LCBbcjBdCiAgICAweGI2ZjAzZjYyOiAg
ICBtb3Z3ICAgcjEyLCAjMzI0MTYKICAgIDB4YjZmMDNmNjY6ICAgIG1vdnQgICByMTIsICM0NjIw
NwogICAgMHhiNmYwM2Y2YTogICAgY21wICAgIHI2LCByMTIKICAgIDB4YjZmMDNmNmU6ICAgIGJu
ZSAgICAweGI2ZjAzZmE2CiAgICAweGI2ZjAzZjcwOiAgICBsZHIgICAgcjEsIFtyMCwgIzEyXQog
ICAgMHhiNmYwM2Y3MjogICAgbGRyICAgIHIwLCBbcjAsICMxNl0KICAgIDB4YjZmMDNmNzQ6ICAg
IHRzdCAgICByMCwgcjAKICAgIDB4YjZmMDNmNzY6ICAgIGJlcSAgICAweGI2ZjAzZmE2CiAgICAw
eGI2ZjAzZjc4OiAgICBjbXAgICAgcjIsIHIxCiAgICAweGI2ZjAzZjdhOiAgICBiaHMgICAgMHhi
NmYwM2ZhNgogICAgMHhiNmYwM2Y3YzogICAgbGRyICAgIHIxLCBbcjAsICMxMl0KICAgIDB4YjZm
MDNmN2U6ICAgIGxkciAgICByMCwgW3IwLCAjOF0KICAgIDB4YjZmMDNmODA6ICAgIHRzdCAgICBy
MSwgIzgKICAgIDB4YjZmMDNmODQ6ICAgIGJlcSAgICAweGI2ZjAzZjhhCiAgICAweGI2ZjAzZjg2
OiAgICBsZHJiICAgcjAsIFtyMCwgcjJdCiAgICAweGI2ZjAzZjg4OiAgICBiICAgICAgMHhiNmYw
M2Y4ZQogICAgMHhiNmYwM2Y4YTogICAgbGRyaCAgIHIwLCBbcjAsIHIyLCAjMV0KICAgIDB4YjZm
MDNmOGU6ICAgIGNtcCAgICByMCwgIzI1NgogICAgMHhiNmYwM2Y5MjogICAgYmhzICAgIDB4YjZm
MDNmYTYKICAgIDB4YjZmMDNmOTQ6ICAgIG1vdncgICByMSwgIzQyNDA4CiAgICAweGI2ZjAzZjk4
OiAgICBtb3Z0ICAgcjEsICM0NjIwNwogICAgMHhiNmYwM2Y5YzogICAgbGRyICAgIHIwLCBbcjEs
IHIwLCAjMl0KICAgIDB4YjZmMDNmYTA6ICAgIG12biAgICByMSwgIzQKICAgIDB4YjZmMDNmYTQ6
ICAgIGJ4ICAgICBscgogICAgMHhiNmYwM2ZhNjogICAgbW92cyAgIHIwLCAjMAogICAgMHhiNmYw
M2ZhODogICAgYnggICAgIGxyCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgVmlydHVhbCBjYWxsIHNs
b3cgcGF0aCB0aHVuazoKICAgIENvZGUgYXQgWzB4YjZmMDI0YTEsIDB4YjZmMDI1NjEpOgogICAg
MHhiNmYwMjRhMDogICAgbGRyICAgIHIxMiwgW3IyLCAjNTJdCiAgICAweGI2ZjAyNGE0OiAgICBh
ZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI2ZjAyNGE4OiAgICBzdHIgICAgcjEyLCBbcjIsICM1
Ml0KICAgIDB4YjZmMDI0YWM6ICAgIGNtbiAgICByMSwgIzUKICAgIDB4YjZmMDI0YjA6ICAgIGJu
ZSAgICAweGI2ZjAyNGM4CiAgICAweGI2ZjAyNGIyOiAgICBsZHJiICAgcjYsIFtyMCwgIzVdCiAg
ICAweGI2ZjAyNGI0OiAgICBjbXAgICAgcjIsICMyMwogICAgMHhiNmYwMjRiNjogICAgYm5lICAg
IDB4YjZmMDI0YzgKICAgIDB4YjZmMDI0Yjg6ICAgIGxkciAgICByOCwgW3IwLCAjMjBdCiAgICAw
eGI2ZjAyNGJjOiAgICBsZHIgICAgcjgsIFtyOCwgIzI4XQogICAgMHhiNmYwMjRjMDogICAgdHN0
ICAgIHI4LCByOAogICAgMHhiNmYwMjRjNDogICAgYmVxICAgIDB4YjZmMDI0YzgKICAgIDB4YjZm
MDI0YzY6ICAgIGJ4ICAgICByOAogICAgMHhiNmYwMjRjODogICAgcHVzaCAgIHtyNywgbHJ9CiAg
ICAweGI2ZjAyNGNjOiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAyNGNlOiAgICBtb3Z3ICAg
cjYsICM0MjEyOAogICAgMHhiNmYwMjRkMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZm
MDI0ZDY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMjRkODogICAgbXZuICAgIHIxMiwg
IzIzCiAgICAweGI2ZjAyNGRjOiAgICBtb3YgICAgc3AsIHNwCiAgICAweGI2ZjAyNGRlOiAgICBh
ZGQgICAgc3AsIHIxMgogICAgMHhiNmYwMjRlMDogICAgbW92ICAgIHIxLCByMgogICAgMHhiNmYw
MjRlMjogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMjRlNDogICAgbW92dyAgIHI0LCAjNTEy
NzcKICAgIDB4YjZmMDI0ZTg6ICAgIG1vdnQgICByNCwgIzQ2Nzc2CiAgICAweGI2ZjAyNGVjOiAg
ICBibHggICAgcjQKICAgIDB4YjZmMDI0ZWU6ICAgIGFkZCAgICBzcCwgc3AsICM2CiAgICAweGI2
ZjAyNGYwOiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAyNGYyOiAgICBwb3AgICAge3I3LCBs
cn0KICAgIDB4YjZmMDI0ZjY6ICAgIHRzdCAgICByMSwgcjEKICAgIDB4YjZmMDI0Zjg6ICAgIGJl
cSAgICAweGI2ZjAyNTQ4CiAgICAweGI2ZjAyNGZhOiAgICBtb3YgICAgcjUsIGxyCiAgICAweGI2
ZjAyNGZjOiAgICBsZHIgICAgcjEsIFtyNywgIzI0XQogICAgMHhiNmYwMjRmZTogICAgbGRyICAg
IHIzLCBbcjcsICM4XQogICAgMHhiNmYwMjUwMDogICAgbGRyICAgIHIzLCBbcjMsICMzMl0KICAg
IDB4YjZmMDI1MDI6ICAgIGNtcCAgICByMywgcjEKICAgIDB4YjZmMDI1MDQ6ICAgIGJscyAgICAw
eGI2ZjAyNTA4CiAgICAweGI2ZjAyNTA2OiAgICBtb3YgICAgcjEsIHIzCiAgICAweGI2ZjAyNTA4
OiAgICBhZGRzICAgcjEsIHIxLCAjNQogICAgMHhiNmYwMjUwYTogICAgbXZuICAgIHIxMiwgIzEK
ICAgIDB4YjZmMDI1MGU6ICAgIGFuZCAgICByMSwgcjEsIHIxMgogICAgMHhiNmYwMjUxMjogICAg
bW92ICAgIHIxMiwgIzgKICAgIDB4YjZmMDI1MTY6ICAgIHNtdWxsICByMSwgcjEyLCByMSwgcjEy
CiAgICAweGI2ZjAyNTFhOiAgICBhZGRzICAgcjMsIHI3LCByMQogICAgMHhiNmYwMjUxYzogICAg
bGRyICAgIHIxLCBbc3AsICMxNl0KICAgIDB4YjZmMDI1MWU6ICAgIGFkZHMgICByMSwgcjEsICM1
CiAgICAweGI2ZjAyNTIwOiAgICBtdm4gICAgcjEyLCAjMQogICAgMHhiNmYwMjUyNDogICAgYW5k
ICAgIHIxLCByMSwgcjEyCiAgICAweGI2ZjAyNTI4OiAgICBtb3YgICAgcjEyLCAjOAogICAgMHhi
NmYwMjUyYzogICAgc211bGwgIHIxLCByMTIsIHIxLCByMTIKICAgIDB4YjZmMDI1MzA6ICAgIGxk
ciAgICBsciwgW3I3LCAjNF0KICAgIDB4YjZmMDI1MzQ6ICAgIHN1YnMgICByMSwgIzgKICAgIDB4
YjZmMDI1MzY6ICAgIHN1YnMgICByMywgcjMsIHIxCiAgICAweGI2ZjAyNTM4OiAgICBsZHIgICAg
cjcsIFtyN10KICAgIDB4YjZmMDI1M2E6ICAgIHN1YnMgICByMSwgcjEsICM0CiAgICAweGI2ZjAy
NTNjOiAgICBsZHIgICAgcjIsIFtzcCwgcjFdCiAgICAweGI2ZjAyNTQwOiAgICBzdHIgICAgcjIs
IFtyMywgcjFdCiAgICAweGI2ZjAyNTQyOiAgICB0c3QgICAgcjEsIHIxCiAgICAweGI2ZjAyNTQ0
OiAgICBibmUgICAgMHhiNmYwMjczYQogICAgMHhiNmYwMjU0NjogICAgbW92ICAgIHNwLCByMwog
ICAgMHhiNmYwMjU0ODogICAgYnggICAgIHIwCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgVmlydHVh
bCBjYWxsIHNsb3cgcGF0aCB0aHVuazoKICAgIENvZGUgYXQgWzB4YjZmMDI1NjEsIDB4YjZmMDI2
MjEpOgogICAgMHhiNmYwMjU2MDogICAgbGRyICAgIHIxMiwgW3IyLCAjNTJdCiAgICAweGI2ZjAy
NTY0OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI2ZjAyNTY4OiAgICBzdHIgICAgcjEy
LCBbcjIsICM1Ml0KICAgIDB4YjZmMDI1NmM6ICAgIGNtbiAgICByMSwgIzUKICAgIDB4YjZmMDI1
NzA6ICAgIGJuZSAgICAweGI2ZjAyNTg4CiAgICAweGI2ZjAyNTcyOiAgICBsZHJiICAgcjYsIFty
MCwgIzVdCiAgICAweGI2ZjAyNTc0OiAgICBjbXAgICAgcjIsICMyMwogICAgMHhiNmYwMjU3Njog
ICAgYm5lICAgIDB4YjZmMDI1ODgKICAgIDB4YjZmMDI1Nzg6ICAgIGxkciAgICByOCwgW3IwLCAj
MjBdCiAgICAweGI2ZjAyNTdjOiAgICBsZHIgICAgcjgsIFtyOCwgIzI4XQogICAgMHhiNmYwMjU4
MDogICAgdHN0ICAgIHI4LCByOAogICAgMHhiNmYwMjU4NDogICAgYmVxICAgIDB4YjZmMDI1ODgK
ICAgIDB4YjZmMDI1ODY6ICAgIGJ4ICAgICByOAogICAgMHhiNmYwMjU4ODogICAgcHVzaCAgIHty
NywgbHJ9CiAgICAweGI2ZjAyNThjOiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAyNThlOiAg
ICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMjU5MjogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgIDB4YjZmMDI1OTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMjU5ODogICAgbXZu
ICAgIHIxMiwgIzIzCiAgICAweGI2ZjAyNTljOiAgICBtb3YgICAgc3AsIHNwCiAgICAweGI2ZjAy
NTllOiAgICBhZGQgICAgc3AsIHIxMgogICAgMHhiNmYwMjVhMDogICAgbW92ICAgIHIxLCByMgog
ICAgMHhiNmYwMjVhMjogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMjVhNDogICAgbW92dyAg
IHI0LCAjNTEyNzcKICAgIDB4YjZmMDI1YTg6ICAgIG1vdnQgICByNCwgIzQ2Nzc2CiAgICAweGI2
ZjAyNWFjOiAgICBibHggICAgcjQKICAgIDB4YjZmMDI1YWU6ICAgIGFkZCAgICBzcCwgc3AsICM2
CiAgICAweGI2ZjAyNWIwOiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAyNWIyOiAgICBwb3Ag
ICAge3I3LCBscn0KICAgIDB4YjZmMDI1YjY6ICAgIHRzdCAgICByMSwgcjEKICAgIDB4YjZmMDI1
Yjg6ICAgIGJlcSAgICAweGI2ZjAyNjA4CiAgICAweGI2ZjAyNWJhOiAgICBtb3YgICAgcjUsIGxy
CiAgICAweGI2ZjAyNWJjOiAgICBsZHIgICAgcjEsIFtyNywgIzI0XQogICAgMHhiNmYwMjViZTog
ICAgbGRyICAgIHIzLCBbcjcsICM4XQogICAgMHhiNmYwMjVjMDogICAgbGRyICAgIHIzLCBbcjMs
ICMzMl0KICAgIDB4YjZmMDI1YzI6ICAgIGNtcCAgICByMywgcjEKICAgIDB4YjZmMDI1YzQ6ICAg
IGJscyAgICAweGI2ZjAyNWM4CiAgICAweGI2ZjAyNWM2OiAgICBtb3YgICAgcjEsIHIzCiAgICAw
eGI2ZjAyNWM4OiAgICBhZGRzICAgcjEsIHIxLCAjNQogICAgMHhiNmYwMjVjYTogICAgbXZuICAg
IHIxMiwgIzEKICAgIDB4YjZmMDI1Y2U6ICAgIGFuZCAgICByMSwgcjEsIHIxMgogICAgMHhiNmYw
MjVkMjogICAgbW92ICAgIHIxMiwgIzgKICAgIDB4YjZmMDI1ZDY6ICAgIHNtdWxsICByMSwgcjEy
LCByMSwgcjEyCiAgICAweGI2ZjAyNWRhOiAgICBhZGRzICAgcjMsIHI3LCByMQogICAgMHhiNmYw
MjVkYzogICAgbGRyICAgIHIxLCBbc3AsICMxNl0KICAgIDB4YjZmMDI1ZGU6ICAgIGFkZHMgICBy
MSwgcjEsICM1CiAgICAweGI2ZjAyNWUwOiAgICBtdm4gICAgcjEyLCAjMQogICAgMHhiNmYwMjVl
NDogICAgYW5kICAgIHIxLCByMSwgcjEyCiAgICAweGI2ZjAyNWU4OiAgICBtb3YgICAgcjEyLCAj
OAogICAgMHhiNmYwMjVlYzogICAgc211bGwgIHIxLCByMTIsIHIxLCByMTIKICAgIDB4YjZmMDI1
ZjA6ICAgIGxkciAgICBsciwgW3I3LCAjNF0KICAgIDB4YjZmMDI1ZjQ6ICAgIHN1YnMgICByMSwg
IzgKICAgIDB4YjZmMDI1ZjY6ICAgIHN1YnMgICByMywgcjMsIHIxCiAgICAweGI2ZjAyNWY4OiAg
ICBsZHIgICAgcjcsIFtyN10KICAgIDB4YjZmMDI1ZmE6ICAgIHN1YnMgICByMSwgcjEsICM0CiAg
ICAweGI2ZjAyNWZjOiAgICBsZHIgICAgcjIsIFtzcCwgcjFdCiAgICAweGI2ZjAyNjAwOiAgICBz
dHIgICAgcjIsIFtyMywgcjFdCiAgICAweGI2ZjAyNjAyOiAgICB0c3QgICAgcjEsIHIxCiAgICAw
eGI2ZjAyNjA0OiAgICBibmUgICAgMHhiNmYwMjdmYQogICAgMHhiNmYwMjYwNjogICAgbW92ICAg
IHNwLCByMwogICAgMHhiNmYwMjYwODogICAgYnggICAgIHIwCkdlbmVyYXRlZCBCYXNlbGluZSBK
SVQgY29kZSBmb3IgPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNl
bGluZUdsb2JhbCwgMTU1NF0sIGluc3RydWN0aW9uIGNvdW50ID0gMTU1NAogICBTb3VyY2U6IC8v
IFRoaXMgdGVzdCB2ZXJpZnkgdGhlIHJlc3VsdHMgb2YgTWF0aC5wb3coKSBkbyBub3QgY2hhbmdl
IGFzIHdlIGNoYW5nZSBvcHRpbWl6YXRpb24gdGllci4gZnVuY3Rpb24gb3BhcXVlUG93KGEsIGIp
IHsgcmV0dXJuIE1hdGgucG93KGEsIGIpOyB9IG5vSW5saW5lKG9wYXF1ZVBvdyk7IGxldCBjYXNl
U3RyaW5ncyA9IFsgIjAiLCAiLTAuIiwgIjAuNSIsICIxIiwgIjIiLCAiLTAuNSIsICItMSIsICI5
OTkiLCAiMTAwMCIsICIxMDAxIiwgIk5hTiIsICJJbmZpbml0eSIsICItSW5maW5pdHkiLCAiTWF0
aC5QSSIsICJNYXRoLkxOMiIsICJNYXRoLkxOMTAiLCAiTWF0aC5FIiwgIk1hdGguTE9HMTBFIiwg
Ik1hdGguTE9HMkUiLCAiTWF0aC5TUVJUMiIgXTsgbGV0IGNhc2VzID0gW107IGZvciAobGV0IGNh
c2VTdHJpbmcgb2YgY2FzZVN0cmluZ3MpIHsgY2FzZXMucHVzaChldmFsKGNhc2VTdHJpbmcpKTsg
fSBsZXQgZXhwZWN0ZWRSZXN1bHRzID0gW107IGxldCBjb25zdGFudEJhc2VGdW5jdGlvbnMgPSBb
XTsgbGV0IGNvbnN0YW50RXhwb25lbnRGdW5jdGlvbnMgPSBbXTsgZm9yIChsZXQgaSA9IDA7IGkg
PCBjYXNlcy5sZW5ndGg7ICsraSkgeyBsZXQgYmFzZSA9IGNhc2VzW2ldOyBleHBlY3RlZFJlc3Vs
dHNbaV0gPSBbXTsgZm9yIChsZXQgaiA9IDA7IGogPCBjYXNlcy5sZW5ndGg7ICsraikgeyBsZXQg
ZXhwb25lbnQgPSBjYXNlc1tqXTsgZXhwZWN0ZWRSZXN1bHRzW2ldW2pdID0gTWF0aC5wb3coYmFz
ZSwgZXhwb25lbnQpOyB9IGV2YWwoImNvbnN0YW50QmFzZUZ1bmN0aW9uc1tpXSA9IGZ1bmN0aW9u
IChleHBvbmVudCkgeyByZXR1cm4gTWF0aC5wb3coIiArIGNhc2VTdHJpbmdzW2ldICsgIiwgZXhw
b25lbnQpOyB9Iik7IGV2YWwoImNvbnN0YW50RXhwb25lbnRGdW5jdGlvbnNbaV0gPSBmdW5jdGlv
biAoYmFzZSkgeyByZXR1cm4gTWF0aC5wb3coYmFzZSwgIiArIGNhc2VTdHJpbmdzW2ldICsgIik7
IH0iKTsgfSBmdW5jdGlvbiBpc0lkZW50aWNhbChyZXN1bHQsIGV4cGVjdGVkKSB7IGlmIChleHBl
Y3RlZCA9PT0gZXhwZWN0ZWQpIHsgaWYgKHJlc3VsdCAhPT0gZXhwZWN0ZWQpIHJldHVybiBmYWxz
ZTsgaWYgKCFleHBlY3RlZCAmJiAxIC8gZXhwZWN0ZWQgPT09IC1JbmZpbml0eSAmJiAxIC8gcmVz
dWx0ICE9PSAtSW5maW5pdHkpIHJldHVybiBmYWxzZTsgcmV0dXJuIHRydWU7IH0gcmV0dXJuIHJl
c3VsdCAhPT0gcmVzdWx0OyB9IGZvciAobGV0IHRpZXJVcExvb3BDb3VudGVyID0gMDsgdGllclVw
TG9vcENvdW50ZXIgPCAxZTM7ICsrdGllclVwTG9vcENvdW50ZXIpIHsgZm9yIChsZXQgaSA9IDA7
IGkgPCBjYXNlcy5sZW5ndGg7ICsraSkgeyBsZXQgYmFzZSA9IGNhc2VzW2ldOyBmb3IgKGxldCBq
ID0gMDsgaiA8IGNhc2VzLmxlbmd0aDsgKytqKSB7IGxldCBleHBvbmVudCA9IGNhc2VzW2pdOyBs
ZXQgZXhwZWN0ZWRSZXN1bHQgPSBleHBlY3RlZFJlc3VsdHNbaV1bal07IGxldCByZXN1bHQgPSBv
cGFxdWVQb3coYmFzZSwgZXhwb25lbnQpOyBpZiAoIWlzSWRlbnRpY2FsKHJlc3VsdCwgZXhwZWN0
ZWRSZXN1bHQpKSB0aHJvdyAiRmFpbGVkIG9wYXF1ZVBvdyB3aXRoIGJhc2UgPSAiICsgYmFzZSAr
ICIgZXhwb25lbnQgPSAiICsgZXhwb25lbnQgKyAiIGV4cGVjdGVkICgiICsgZXhwZWN0ZWRSZXN1
bHQgKyAiKSBnb3QgKCIgKyByZXN1bHQgKyAiKSI7IHJlc3VsdCA9IGNvbnN0YW50QmFzZUZ1bmN0
aW9uc1tpXShleHBvbmVudCk7IGlmICghaXNJZGVudGljYWwocmVzdWx0LCBleHBlY3RlZFJlc3Vs
dCkpIHRocm93ICJGYWlsZWQgY29uc3RhbnRCYXNlRnVuY3Rpb25zIHdpdGggYmFzZSA9ICIgKyBi
YXNlICsgIiBleHBvbmVudCA9ICIgKyBleHBvbmVudDsgcmVzdWx0ID0gY29uc3RhbnRFeHBvbmVu
dEZ1bmN0aW9uc1tqXShiYXNlKTsgaWYgKCFpc0lkZW50aWNhbChyZXN1bHQsIGV4cGVjdGVkUmVz
dWx0KSkgdGhyb3cgIkZhaWxlZCBjb25zdGFudEV4cG9uZW50RnVuY3Rpb25zIHdpdGggYmFzZSA9
ICIgKyBiYXNlICsgIiBleHBvbmVudCA9ICIgKyBleHBvbmVudDsgfSB9IH0gCiAgIENvZGUgYXQg
WzB4YjRjNTkwMDAsIDB4YjRjNWU2YTApOgogICAgICAgIDB4YjRjNTkwMDA6ICAgIG5vcCAgICAK
ICAgICAgICAweGI0YzU5MDAyOiAgICBwdXNoICAge3I3LCBscn0KICAgICAgICAweGI0YzU5MDA2
OiAgICBtb3YgICAgcjcsIHNwCiAgICAgICAgMHhiNGM1OTAwODogICAgbW92dyAgIHIxMiwgIzE1
OTg0CiAgICAgICAgMHhiNGM1OTAwYzogICAgbW92dCAgIHIxMiwgIzQ2MjAyCiAgICAgICAgMHhi
NGM1OTAxMDogICAgc3RyICAgIHIxMiwgW3I3LCAjOF0KICAgICAgICAweGI0YzU5MDE0OiAgICBt
dm4gICAgcjEyLCAjMTgzCiAgICAgICAgMHhiNGM1OTAxODogICAgYWRkICAgIHIxLCByNywgcjEy
CiAgICAgICAgMHhiNGM1OTAxYzogICAgbW92dyAgIHI2LCAjNDYzNDAKICAgICAgICAweGI0YzU5
MDIwOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNTkwMjQ6ICAgIGxkciAgICBy
MTIsIFtyNl0KICAgICAgICAweGI0YzU5MDI4OiAgICBjbXAgICAgcjEyLCByMQogICAgICAgIDB4
YjRjNTkwMmM6ICAgIGJoaSAgICAweGI0YzVlNjIwCiAgICAgICAgMHhiNGM1OTAzMDogICAgbW92
ICAgIHNwLCByMQogICAgWyAgIDBdIGVudGVyICAgICAgICAgICAgIAogICAgICAgIDB4YjRjNTkw
MzI6ICAgIG1vdiAgICByMTIsICMwCiAgICAgICAgMHhiNGM1OTAzNjogICAgc3RyICAgIHIxMiwg
W3I3LCAjLThdCiAgICAgICAgMHhiNGM1OTAzYTogICAgbXZuICAgIHIxMiwgIzMKICAgICAgICAw
eGI0YzU5MDNlOiAgICBzdHIgICAgcjEyLCBbcjcsICMtNF0KICAgICAgICAweGI0YzU5MDQyOiAg
ICBtb3YgICAgcjEyLCAjMAogICAgICAgIDB4YjRjNTkwNDY6ICAgIHN0ciAgICByMTIsIFtyNywg
Iy0xNl0KICAgICAgICAweGI0YzU5MDRhOiAgICBtdm4gICAgcjEyLCAjMwogICAgICAgIDB4YjRj
NTkwNGU6ICAgIHN0ciAgICByMTIsIFtyNywgIy0xMl0KICAgICAgICAweGI0YzU5MDUyOiAgICBt
b3Z3ICAgcjEyLCAjNDc2MjgKICAgICAgICAweGI0YzU5MDU2OiAgICBtb3Z0ICAgcjEyLCAjNDU4
MjIKICAgICAgICAweGI0YzU5MDVhOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAw
eGI0YzU5MDVlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNTkwNjI6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1OTA2NjogICAgc3RyICAgIHI3LCBbcjZdCiAg
ICAgICAgMHhiNGM1OTA2ODogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNTkwNmE6ICAg
IG1vdncgICByMSwgIzQ3NjI0CiAgICAgICAgMHhiNGM1OTA2ZTogICAgbW92dCAgIHIxLCAjNDU4
MjIKICAgICAgICAweGI0YzU5MDcyOiAgICBtb3Z3ICAgcjEyLCAjMTk2NjkKICAgICAgICAweGI0
YzU5MDc2OiAgICBtb3Z0ICAgcjEyLCAjNDY3OTMKICAgICAgICAweGI0YzU5MDdhOiAgICBibHgg
ICAgcjEyCiAgICAgICAgMHhiNGM1OTA3YzogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAw
eGI0YzU5MDgwOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNTkwODQ6ICAgIGxk
ciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNTkwODY6ICAgIGNtcCAgICByMiwgIzAKICAgICAg
ICAweGI0YzU5MDg4OiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgWyAgIDFdIGdldF9zY29wZSAg
ICAgICAgIGxvYzAKICAgICAgICAweGI0YzU5MDhjOiAgICBsZHIgICAgcjAsIFtyNywgIzE2XQog
ICAgICAgIDB4YjRjNTkwOGU6ICAgIGxkciAgICByMCwgW3IwLCAjMTZdCiAgICAgICAgMHhiNGM1
OTA5MDogICAgc3RyICAgIHIwLCBbcjcsICMtOF0KICAgICAgICAweGI0YzU5MDk0OiAgICBtdm4g
ICAgcjEyLCAjNAogICAgICAgIDB4YjRjNTkwOTg6ICAgIHN0ciAgICByMTIsIFtyNywgIy00XQog
ICAgWyAgIDNdIG1vdiAgICAgICAgICAgICAgIGxvYzEsIGxvYzAKICAgICAgICAweGI0YzU5MDlj
OiAgICBsZHIgICAgcjAsIFtyNywgIy04XQogICAgICAgIDB4YjRjNTkwYTA6ICAgIGxkciAgICBy
MSwgW3I3LCAjLTRdCiAgICAgICAgMHhiNGM1OTBhNDogICAgc3RyICAgIHIwLCBbcjcsICMtMTZd
CiAgICAgICAgMHhiNGM1OTBhODogICAgc3RyICAgIHIxLCBbcjcsICMtMTJdCiAgICBbICAgNl0g
Y3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQgbG9jMiwgbG9jMCwgQ2VsbDogMHhiNDdiNmQ4MCAo
MHhiNDdmN2E0MDpbU3ltYm9sVGFibGUsIHt9LCBOb25BcnJheSwgTGVhZl0pKGNvbnN0MCksIDxK
U1ZhbHVlKCk+KGNvbnN0MSkKICAgICAgICAweGI0YzU5MGFjOiAgICBtb3Z3ICAgcjEyLCAjNDc2
NTIKICAgICAgICAweGI0YzU5MGIwOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0
YzU5MGI0OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzU5MGI4OiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNTkwYmM6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAgICAgMHhiNGM1OTBjMDogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1OTBj
MjogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNTkwYzQ6ICAgIG1vdncgICByMSwgIzQ3
NjQ4CiAgICAgICAgMHhiNGM1OTBjODogICAgbW92dCAgIHIxLCAjNDU4MjIKICAgICAgICAweGI0
YzU5MGNjOiAgICBtb3Z3ICAgcjEyLCAjMjI5MzcKICAgICAgICAweGI0YzU5MGQwOiAgICBtb3Z0
ICAgcjEyLCAjNDY3OTMKICAgICAgICAweGI0YzU5MGQ0OiAgICBibHggICAgcjEyCiAgICAgICAg
MHhiNGM1OTBkNjogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzU5MGRhOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNTkwZGU6ICAgIGxkciAgICByNiwgW3I2XQog
ICAgICAgIDB4YjRjNTkwZTA6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzU5MGUyOiAg
ICBibmUgICAgMHhiNGM1ZTY4MAogICAgWyAgMTFdIG1vdiAgICAgICAgICAgICAgIGxvYzAsIGxv
YzIKICAgICAgICAweGI0YzU5MGU2OiAgICBsZHIgICAgcjAsIFtyNywgIy0yNF0KICAgICAgICAw
eGI0YzU5MGVhOiAgICBsZHIgICAgcjEsIFtyNywgIy0yMF0KICAgICAgICAweGI0YzU5MGVlOiAg
ICBzdHIgICAgcjAsIFtyNywgIy04XQogICAgICAgIDB4YjRjNTkwZjI6ICAgIHN0ciAgICByMSwg
W3I3LCAjLTRdCiAgICBbICAxNF0gcHV0X3RvX3Njb3BlICAgICAgbG9jMiwgdGhpcyhAaWQwKSwg
dGhpcywgMjA1MjxUaHJvd0lmTm90Rm91bmR8TG9jYWxDbG9zdXJlVmFyfE5vdEluaXRpYWxpemF0
aW9uPiwgPHN0cnVjdHVyZT4sIDAKICAgICAgICAweGI0YzU5MGY2OiAgICBsZHIgICAgcjAsIFty
NywgIzM2XQogICAgICAgIDB4YjRjNTkwZjg6ICAgIGNtbiAgICByMCwgIzUKICAgICAgICAweGI0
YzU5MGZjOiAgICBibmUgICAgMHhiNGM1OTEzZQogICAgICAgIDB4YjRjNTkwZmU6ICAgIGxkciAg
ICByMSwgW3I3LCAjLTI0XQogICAgICAgIDB4YjRjNTkxMDI6ICAgIGxkciAgICByMCwgW3I3LCAj
LTIwXQogICAgICAgIDB4YjRjNTkxMDY6ICAgIGxkcmIgICByNiwgW3IxLCAjN10KICAgICAgICAw
eGI0YzU5MTA4OiAgICB0c3QgICAgcjYsIHI2CiAgICAgICAgMHhiNGM1OTEwYTogICAgYm5lICAg
IDB4YjRjNTkxM2UKICAgICAgICAweGI0YzU5MTBjOiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAg
MHhiNGM1OTEwZTogICAgbW92dyAgIHIxMiwgIzQ3Njg0CiAgICAgICAgMHhiNGM1OTExMjogICAg
bW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1OTExNjogICAgc3RyICAgIHIxMiwgW3I3
LCAjMjhdCiAgICAgICAgMHhiNGM1OTExYTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAw
eGI0YzU5MTFlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNTkxMjI6ICAgIHN0
ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNTkxMjQ6ICAgIG1vdncgICByMTIsICM2MzE3Nwog
ICAgICAgIDB4YjRjNTkxMjg6ICAgIG1vdnQgICByMTIsICM0Njc3NgogICAgICAgIDB4YjRjNTkx
MmM6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzU5MTJlOiAgICBtb3Z3ICAgcjYsICM0NjM0
OAogICAgICAgIDB4YjRjNTkxMzI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1
OTEzNjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1OTEzODogICAgY21wICAgIHIy
LCAjMAogICAgICAgIDB4YjRjNTkxM2E6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhi
NGM1OTEzZTogICAgbGRyICAgIHIyLCBbcjcsICMzMl0KICAgICAgICAweGI0YzU5MTQwOiAgICBs
ZHIgICAgcjMsIFtyNywgIzM2XQogICAgICAgIDB4YjRjNTkxNDI6ICAgIGxkciAgICByMCwgW3I3
LCAjLTI0XQogICAgICAgIDB4YjRjNTkxNDY6ICAgIGxkciAgICByMSwgW3I3LCAjLTIwXQogICAg
ICAgIDB4YjRjNTkxNGE6ICAgIG1vdncgICByNiwgIzEwNzg4CiAgICAgICAgMHhiNGM1OTE0ZTog
ICAgbW92dCAgIHI2LCAjNDYyNjYKICAgICAgICAweGI0YzU5MTUyOiAgICBsZHJiICAgcjYsIFty
Nl0KICAgICAgICAweGI0YzU5MTU0OiAgICBjbXAgICAgcjIsICMyCiAgICAgICAgMHhiNGM1OTE1
NjogICAgYm5lICAgIDB4YjRjNWMzZTgKICAgICAgICAweGI0YzU5MTVhOiAgICBzdHIgICAgcjMs
IFtyMCwgIzI4XQogICAgICAgIDB4YjRjNTkxNWM6ICAgIHN0ciAgICByMiwgW3IwLCAjMjRdCiAg
ICBbICAyMV0gbmV3X2Z1bmMgICAgICAgICAgbG9jMywgbG9jMCwgZjAKICAgICAgICAweGI0YzU5
MTVlOiAgICBsZHIgICAgcjAsIFtyNywgIy04XQogICAgICAgIDB4YjRjNTkxNjI6ICAgIG1vdiAg
ICByMSwgcjAKICAgICAgICAweGI0YzU5MTY0OiAgICBtb3Z3ICAgcjIsICMyMzIzMgogICAgICAg
IDB4YjRjNTkxNjg6ICAgIG1vdnQgICByMiwgIzQ2MjA1CiAgICAgICAgMHhiNGM1OTE2YzogICAg
bW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNTkxNmU6ICAgIG1vdncgICByMTIsICM0NzcxMgog
ICAgICAgIDB4YjRjNTkxNzI6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNTkx
NzY6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNTkxN2E6ICAgIG1vdncg
ICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1OTE3ZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
ICAgICAweGI0YzU5MTgyOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzU5MTg0OiAg
ICBtb3Z3ICAgcjEyLCAjNTg1NDUKICAgICAgICAweGI0YzU5MTg4OiAgICBtb3Z0ICAgcjEyLCAj
NDY3NzYKICAgICAgICAweGI0YzU5MThjOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1OTE4
ZTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzU5MTkyOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgICAgIDB4YjRjNTkxOTY6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4
YjRjNTkxOTg6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzU5MTlhOiAgICBibmUgICAg
MHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNTkxOWU6ICAgIHN0ciAgICByMCwgW3I3LCAjLTMyXQog
ICAgICAgIDB4YjRjNTkxYTI6ICAgIHN0ciAgICByMSwgW3I3LCAjLTI4XQogICAgWyAgMjVdIHJl
c29sdmVfc2NvcGUgICAgIGxvYzQsIGxvYzAsIG9wYXF1ZVBvdyhAaWQxKSwgPEdsb2JhbFZhcj4s
IDIsIDB4YjQ3ZTc4YzAKICAgICAgICAweGI0YzU5MWE2OiAgICBtdm4gICAgcjEsICM0CiAgICAg
ICAgMHhiNGM1OTFhYTogICAgbW92dyAgIHIwLCAjMzA5MTIKICAgICAgICAweGI0YzU5MWFlOiAg
ICBtb3Z0ICAgcjAsICM0NjIwNgogICAgICAgIDB4YjRjNTkxYjI6ICAgIHN0ciAgICByMCwgW3I3
LCAjLTQwXQogICAgICAgIDB4YjRjNTkxYjY6ICAgIHN0ciAgICByMSwgW3I3LCAjLTM2XQogICAg
WyAgMzJdIG1vdiAgICAgICAgICAgICAgIGxvYzUsIGxvYzQKICAgICAgICAweGI0YzU5MWJhOiAg
ICBsZHIgICAgcjAsIFtyNywgIy00MF0KICAgICAgICAweGI0YzU5MWJlOiAgICBsZHIgICAgcjEs
IFtyNywgIy0zNl0KICAgICAgICAweGI0YzU5MWMyOiAgICBzdHIgICAgcjAsIFtyNywgIy00OF0K
ICAgICAgICAweGI0YzU5MWM2OiAgICBzdHIgICAgcjEsIFtyNywgIy00NF0KICAgIFsgIDM1XSBw
dXRfdG9fc2NvcGUgICAgICBsb2M1LCBvcGFxdWVQb3coQGlkMSksIGxvYzMsIDIwNDk8VGhyb3dJ
Zk5vdEZvdW5kfEdsb2JhbFZhcnxOb3RJbml0aWFsaXphdGlvbj4sIDxzdHJ1Y3R1cmU+LCAtMTI2
MjQ5OTE3NgogICAgICAgIDB4YjRjNTkxY2E6ICAgIGxkciAgICByMCwgW3I3LCAjLTI4XQogICAg
ICAgIDB4YjRjNTkxY2U6ICAgIGNtbiAgICByMCwgIzUKICAgICAgICAweGI0YzU5MWQyOiAgICBi
bmUgICAgMHhiNGM1OTIxYwogICAgICAgIDB4YjRjNTkxZDQ6ICAgIG1vdncgICByNiwgIzMwOTE5
CiAgICAgICAgMHhiNGM1OTFkODogICAgbW92dCAgIHI2LCAjNDYyMDYKICAgICAgICAweGI0YzU5
MWRjOiAgICBsZHJiICAgcjYsIFtyNl0KICAgICAgICAweGI0YzU5MWRlOiAgICB0c3QgICAgcjYs
IHI2CiAgICAgICAgMHhiNGM1OTFlMDogICAgYm5lICAgIDB4YjRjNTkyMWMKICAgICAgICAweGI0
YzU5MWUyOiAgICBtb3Z3ICAgcjEsICMzMDkxMgogICAgICAgIDB4YjRjNTkxZTY6ICAgIG1vdnQg
ICByMSwgIzQ2MjA2CiAgICAgICAgMHhiNGM1OTFlYTogICAgbW92ICAgIHIwLCByNwogICAgICAg
IDB4YjRjNTkxZWM6ICAgIG1vdncgICByMTIsICM0Nzc2OAogICAgICAgIDB4YjRjNTkxZjA6ICAg
IG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNTkxZjQ6ICAgIHN0ciAgICByMTIsIFty
NywgIzI4XQogICAgICAgIDB4YjRjNTkxZjg6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAg
MHhiNGM1OTFmYzogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzU5MjAwOiAgICBz
dHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzU5MjAyOiAgICBtb3Z3ICAgcjEyLCAjNjMxNzcK
ICAgICAgICAweGI0YzU5MjA2OiAgICBtb3Z0ICAgcjEyLCAjNDY3NzYKICAgICAgICAweGI0YzU5
MjBhOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1OTIwYzogICAgbW92dyAgIHI2LCAjNDYz
NDgKICAgICAgICAweGI0YzU5MjEwOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRj
NTkyMTQ6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNTkyMTY6ICAgIGNtcCAgICBy
MiwgIzAKICAgICAgICAweGI0YzU5MjE4OiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4
YjRjNTkyMWM6ICAgIGxkciAgICByMCwgW3I3LCAjLTMyXQogICAgICAgIDB4YjRjNTkyMjA6ICAg
IGxkciAgICByMSwgW3I3LCAjLTI4XQogICAgICAgIDB4YjRjNTkyMjQ6ICAgIG1vdncgICByNiwg
IzEwNjIwCiAgICAgICAgMHhiNGM1OTIyODogICAgbW92dCAgIHI2LCAjNDYyNjYKICAgICAgICAw
eGI0YzU5MjJjOiAgICBsZHJiICAgcjYsIFtyNl0KICAgICAgICAweGI0YzU5MjJlOiAgICBjbXAg
ICAgcjIsICMyCiAgICAgICAgMHhiNGM1OTIzMDogICAgYm5lICAgIDB4YjRjNWM0MjYKICAgICAg
ICAweGI0YzU5MjM0OiAgICBtb3Z3ICAgcjYsICM1MTg2OAogICAgICAgIDB4YjRjNTkyMzg6ICAg
IG1vdnQgICByNiwgIzQ2MjcxCiAgICAgICAgMHhiNGM1OTIzYzogICAgc3RyICAgIHIxLCBbcjZd
CiAgICAgICAgMHhiNGM1OTIzZTogICAgbW92dyAgIHI2LCAjNTE4NjQKICAgICAgICAweGI0YzU5
MjQyOiAgICBtb3Z0ICAgcjYsICM0NjI3MQogICAgICAgIDB4YjRjNTkyNDY6ICAgIHN0ciAgICBy
MCwgW3I2XQogICAgWyAgNDJdIG5ld19mdW5jICAgICAgICAgIGxvYzMsIGxvYzAsIGYxCiAgICAg
ICAgMHhiNGM1OTI0ODogICAgbGRyICAgIHIwLCBbcjcsICMtOF0KICAgICAgICAweGI0YzU5MjRj
OiAgICBtb3YgICAgcjEsIHIwCiAgICAgICAgMHhiNGM1OTI0ZTogICAgbW92dyAgIHIyLCAjMjMx
MDQKICAgICAgICAweGI0YzU5MjUyOiAgICBtb3Z0ICAgcjIsICM0NjIwNQogICAgICAgIDB4YjRj
NTkyNTY6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzU5MjU4OiAgICBtb3Z3ICAgcjEy
LCAjNDc3OTYKICAgICAgICAweGI0YzU5MjVjOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAg
ICAweGI0YzU5MjYwOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzU5MjY0
OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNTkyNjg6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAgICAgMHhiNGM1OTI2YzogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhi
NGM1OTI2ZTogICAgbW92dyAgIHIxMiwgIzU4NTQ1CiAgICAgICAgMHhiNGM1OTI3MjogICAgbW92
dCAgIHIxMiwgIzQ2Nzc2CiAgICAgICAgMHhiNGM1OTI3NjogICAgYmx4ICAgIHIxMgogICAgICAg
IDB4YjRjNTkyNzg6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1OTI3YzogICAg
bW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzU5MjgwOiAgICBsZHIgICAgcjYsIFtyNl0K
ICAgICAgICAweGI0YzU5MjgyOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1OTI4NDog
ICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzU5Mjg4OiAgICBzdHIgICAgcjAsIFty
NywgIy0zMl0KICAgICAgICAweGI0YzU5MjhjOiAgICBzdHIgICAgcjEsIFtyNywgIy0yOF0KICAg
IFsgIDQ2XSBwdXRfdG9fc2NvcGUgICAgICBsb2M1LCBpc0lkZW50aWNhbChAaWQyKSwgbG9jMywg
MjA0OTxUaHJvd0lmTm90Rm91bmR8R2xvYmFsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgPHN0cnVj
dHVyZT4sIC0xMjYyNDk5MTY4CiAgICAgICAgMHhiNGM1OTI5MDogICAgbGRyICAgIHIwLCBbcjcs
ICMtMjhdCiAgICAgICAgMHhiNGM1OTI5NDogICAgY21uICAgIHIwLCAjNQogICAgICAgIDB4YjRj
NTkyOTg6ICAgIGJuZSAgICAweGI0YzU5MmUyCiAgICAgICAgMHhiNGM1OTI5YTogICAgbW92dyAg
IHI2LCAjMzA5MTkKICAgICAgICAweGI0YzU5MjllOiAgICBtb3Z0ICAgcjYsICM0NjIwNgogICAg
ICAgIDB4YjRjNTkyYTI6ICAgIGxkcmIgICByNiwgW3I2XQogICAgICAgIDB4YjRjNTkyYTQ6ICAg
IHRzdCAgICByNiwgcjYKICAgICAgICAweGI0YzU5MmE2OiAgICBibmUgICAgMHhiNGM1OTJlMgog
ICAgICAgIDB4YjRjNTkyYTg6ICAgIG1vdncgICByMSwgIzMwOTEyCiAgICAgICAgMHhiNGM1OTJh
YzogICAgbW92dCAgIHIxLCAjNDYyMDYKICAgICAgICAweGI0YzU5MmIwOiAgICBtb3YgICAgcjAs
IHI3CiAgICAgICAgMHhiNGM1OTJiMjogICAgbW92dyAgIHIxMiwgIzQ3ODEyCiAgICAgICAgMHhi
NGM1OTJiNjogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1OTJiYTogICAgc3Ry
ICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1OTJiZTogICAgbW92dyAgIHI2LCAjNDIx
MjgKICAgICAgICAweGI0YzU5MmMyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRj
NTkyYzY6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNTkyYzg6ICAgIG1vdncgICBy
MTIsICM2MzE3NwogICAgICAgIDB4YjRjNTkyY2M6ICAgIG1vdnQgICByMTIsICM0Njc3NgogICAg
ICAgIDB4YjRjNTkyZDA6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzU5MmQyOiAgICBtb3Z3
ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNTkyZDY6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAgICAgMHhiNGM1OTJkYTogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1OTJkYzog
ICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNTkyZGU6ICAgIGJuZSAgICAweGI0YzVlNjgw
CiAgICAgICAgMHhiNGM1OTJlMjogICAgbGRyICAgIHIwLCBbcjcsICMtMzJdCiAgICAgICAgMHhi
NGM1OTJlNjogICAgbGRyICAgIHIxLCBbcjcsICMtMjhdCiAgICAgICAgMHhiNGM1OTJlYTogICAg
bW92dyAgIHI2LCAjMTA2NDQKICAgICAgICAweGI0YzU5MmVlOiAgICBtb3Z0ICAgcjYsICM0NjI2
NgogICAgICAgIDB4YjRjNTkyZjI6ICAgIGxkcmIgICByNiwgW3I2XQogICAgICAgIDB4YjRjNTky
ZjQ6ICAgIGNtcCAgICByMiwgIzIKICAgICAgICAweGI0YzU5MmY2OiAgICBibmUgICAgMHhiNGM1
YzQ2NAogICAgICAgIDB4YjRjNTkyZmE6ICAgIG1vdncgICByNiwgIzUxODc2CiAgICAgICAgMHhi
NGM1OTJmZTogICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI0YzU5MzAyOiAgICBzdHIg
ICAgcjEsIFtyNl0KICAgICAgICAweGI0YzU5MzA0OiAgICBtb3Z3ICAgcjYsICM1MTg3MgogICAg
ICAgIDB4YjRjNTkzMDg6ICAgIG1vdnQgICByNiwgIzQ2MjcxCiAgICAgICAgMHhiNGM1OTMwYzog
ICAgc3RyICAgIHIwLCBbcjZdCiAgICBbICA1M10gbW92ICAgICAgICAgICAgICAgbG9jMywgVW5k
ZWZpbmVkKGNvbnN0MikKICAgICAgICAweGI0YzU5MzBlOiAgICBtb3YgICAgcjEyLCAjMAogICAg
ICAgIDB4YjRjNTkzMTI6ICAgIHN0ciAgICByMTIsIFtyNywgIy0zMl0KICAgICAgICAweGI0YzU5
MzE2OiAgICBtdm4gICAgcjEyLCAjMwogICAgICAgIDB4YjRjNTkzMWE6ICAgIHN0ciAgICByMTIs
IFtyNywgIy0yOF0KICAgIFsgIDU2XSByZXNvbHZlX3Njb3BlICAgICBsb2M3LCBsb2MwLCBub0lu
bGluZShAaWQzKSwgPEdsb2JhbFByb3BlcnR5PiwgMiwgMHhiNDdlNzhjMAogICAgICAgIDB4YjRj
NTkzMWU6ICAgIG12biAgICByMSwgIzQKICAgICAgICAweGI0YzU5MzIyOiAgICBtb3Z3ICAgcjAs
ICMzMDkxMgogICAgICAgIDB4YjRjNTkzMjY6ICAgIG1vdnQgICByMCwgIzQ2MjA2CiAgICAgICAg
MHhiNGM1OTMyYTogICAgc3RyICAgIHIwLCBbcjcsICMtNjRdCiAgICAgICAgMHhiNGM1OTMyZTog
ICAgc3RyICAgIHIxLCBbcjcsICMtNjBdCiAgICBbICA2M10gZ2V0X2Zyb21fc2NvcGUgICAgbG9j
NCwgbG9jNywgbm9JbmxpbmUoQGlkMyksIDIwNDg8VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFByb3Bl
cnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMTcxICAgIHByZWRpY3RpbmcgRnVuY3Rpb24KICAgICAg
ICAweGI0YzU5MzMyOiAgICBsZHIgICAgcjAsIFtyNywgIy02NF0KICAgICAgICAweGI0YzU5MzM2
OiAgICBsZHIgICAgcjEsIFtyNywgIy02MF0KICAgICAgICAweGI0YzU5MzNhOiAgICBtb3Z3ICAg
cjYsICM0Nzg5NgogICAgICAgIDB4YjRjNTkzM2U6ICAgIG1vdnQgICByNiwgIzQ1ODIyCiAgICAg
ICAgMHhiNGM1OTM0MjogICAgbGRyICAgIHIyLCBbcjZdCiAgICAgICAgMHhiNGM1OTM0NDogICAg
bGRyICAgIHIxMiwgW3IwXQogICAgICAgIDB4YjRjNTkzNDg6ICAgIGNtcCAgICByMTIsIHIyCiAg
ICAgICAgMHhiNGM1OTM0YzogICAgYm5lICAgIDB4YjRjNWM0YTIKICAgICAgICAweGI0YzU5MzUw
OiAgICBtb3YgICAgcjIsIHIwCiAgICAgICAgMHhiNGM1OTM1MjogICAgbW92dyAgIHI2LCAjNDc5
MDAKICAgICAgICAweGI0YzU5MzU2OiAgICBtb3Z0ICAgcjYsICM0NTgyMgogICAgICAgIDB4YjRj
NTkzNWE6ICAgIGxkciAgICByMywgW3I2XQogICAgICAgIDB4YjRjNTkzNWM6ICAgIGxkciAgICBy
MiwgW3IyLCAjOF0KICAgICAgICAweGI0YzU5MzVlOiAgICByc2IgICAgcjMsIHIzLCAjMAogICAg
ICAgIDB4YjRjNTkzNjA6ICAgIGFkZHcgICByNiwgcjIsICM3ODQKICAgICAgICAweGI0YzU5MzY0
OiAgICBsZHIgICAgcjAsIFtyNiwgcjMsICMzXQogICAgICAgIDB4YjRjNTkzNjg6ICAgIGFkZHcg
ICByNiwgcjIsICM3ODgKICAgICAgICAweGI0YzU5MzZjOiAgICBsZHIgICAgcjEsIFtyNiwgcjMs
ICMzXQogICAgICAgIDB4YjRjNTkzNzA6ICAgIHN0ciAgICByMCwgW3I3LCAjLTQwXQogICAgICAg
IDB4YjRjNTkzNzQ6ICAgIHN0ciAgICByMSwgW3I3LCAjLTM2XQogICAgWyAgNzFdIHJlc29sdmVf
c2NvcGUgICAgIGxvYzYsIGxvYzAsIG9wYXF1ZVBvdyhAaWQxKSwgPEdsb2JhbFZhcj4sIDIsIDB4
YjQ3ZTc4YzAKICAgICAgICAweGI0YzU5Mzc4OiAgICBtdm4gICAgcjEsICM0CiAgICAgICAgMHhi
NGM1OTM3YzogICAgbW92dyAgIHIwLCAjMzA5MTIKICAgICAgICAweGI0YzU5MzgwOiAgICBtb3Z0
ICAgcjAsICM0NjIwNgogICAgICAgIDB4YjRjNTkzODQ6ICAgIHN0ciAgICByMCwgW3I3LCAjLTU2
XQogICAgICAgIDB4YjRjNTkzODg6ICAgIHN0ciAgICByMSwgW3I3LCAjLTUyXQogICAgWyAgNzhd
IGdldF9mcm9tX3Njb3BlICAgIGxvYzYsIGxvYzYsIG9wYXF1ZVBvdyhAaWQxKSwgMjA0OTxUaHJv
d0lmTm90Rm91bmR8R2xvYmFsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgLTEyNjI0OTkxNzYgICAg
cHJlZGljdGluZyBGdW5jdGlvbgogICAgICAgIDB4YjRjNTkzOGM6ICAgIG1vdncgICByNiwgIzUx
ODY4CiAgICAgICAgMHhiNGM1OTM5MDogICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI0
YzU5Mzk0OiAgICBsZHIgICAgcjEsIFtyNl0KICAgICAgICAweGI0YzU5Mzk2OiAgICBtb3Z3ICAg
cjYsICM1MTg2NAogICAgICAgIDB4YjRjNTkzOWE6ICAgIG1vdnQgICByNiwgIzQ2MjcxCiAgICAg
ICAgMHhiNGM1OTM5ZTogICAgbGRyICAgIHIwLCBbcjZdCiAgICAgICAgMHhiNGM1OTNhMDogICAg
c3RyICAgIHIwLCBbcjcsICMtNTZdCiAgICAgICAgMHhiNGM1OTNhNDogICAgc3RyICAgIHIxLCBb
cjcsICMtNTJdCiAgICBbICA4Nl0gY2FsbCAgICAgICAgICAgICAgbG9jMywgbG9jNCwgMiwgMTIg
bGxpbnQoMHhiNDdmMTNhMCwgZXhlYyAweGI0N2I3ZDgwKSBzdGF0dXMoKEZ1bmN0aW9uOiBDZWxs
OiAweGI0N2YxM2EwICgweGI0N2Y2ZTEwOltGdW5jdGlvbiwge25hbWU6MTAwLCBsZW5ndGg6MTAx
fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTAsIExlYWZdKTsgRXhlY3V0YWJsZTogTmF0aXZl
RXhlY3V0YWJsZToweDEwMWMxLzB4ZjYzMCkpICAgIE5vbkFycmF5OyBwcmVkaWN0aW5nIE90aGVy
CiAgICAgICAgMHhiNGM1OTNhODogICAgbW92ICAgIHNwLCByNwogICAgICAgIDB4YjRjNTkzYWE6
ICAgIG12biAgICByMTIsICM4NwogICAgICAgIDB4YjRjNTkzYWU6ICAgIG1vdiAgICBzcCwgc3AK
ICAgICAgICAweGI0YzU5M2IwOiAgICBhZGQgICAgc3AsIHIxMgogICAgICAgIDB4YjRjNTkzYjI6
ICAgIG1vdiAgICByMTIsICMyCiAgICAgICAgMHhiNGM1OTNiNjogICAgc3RyICAgIHIxMiwgW3Nw
LCAjMTZdCiAgICAgICAgMHhiNGM1OTNiYTogICAgbW92dyAgIHIxMiwgIzQ3OTY4CiAgICAgICAg
MHhiNGM1OTNiZTogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1OTNjMjogICAg
c3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1OTNjNjogICAgbGRyICAgIHIwLCBb
cjcsICMtNDBdCiAgICAgICAgMHhiNGM1OTNjYTogICAgbGRyICAgIHIxLCBbcjcsICMtMzZdCiAg
ICAgICAgMHhiNGM1OTNjZTogICAgc3RyICAgIHIwLCBbc3AsICM4XQogICAgICAgIDB4YjRjNTkz
ZDA6ICAgIHN0ciAgICByMSwgW3NwLCAjMTJdCiAgICAgICAgMHhiNGM1OTNkMjogICAgY21uICAg
IHIxLCAjNQogICAgICAgIDB4YjRjNTkzZDY6ICAgIGJuZSAgICAweGI0YzVjNGU4CiAgICAgICAg
MHhiNGM1OTNkYTogICAgbW92dyAgIHIxMiwgIzAKICAgICAgICAweGI0YzU5M2RlOiAgICBtb3Z0
ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNTkzZTI6ICAgIGNtcCAgICByMCwgcjEyCiAgICAgICAg
MHhiNGM1OTNlNjogICAgYm5lICAgIDB4YjRjNWM0ZTgKICAgICAgICAweGI0YzU5M2VhOiAgICBt
b3Z3ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNTkzZWU6ICAgIG1vdnQgICByMTIsICMwCiAgICAg
ICAgMHhiNGM1OTNmMjogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNTkzZjQ6ICAgIG1vdiAg
ICBzcCwgcjcKICAgICAgICAweGI0YzU5M2Y2OiAgICBtdm4gICAgcjEyLCAjMTgzCiAgICAgICAg
MHhiNGM1OTNmYTogICAgbW92ICAgIHNwLCBzcAogICAgICAgIDB4YjRjNTkzZmM6ICAgIGFkZCAg
ICBzcCwgcjEyCiAgICAgICAgMHhiNGM1OTNmZTogICAgc3RyICAgIHIwLCBbcjcsICMtMzJdCiAg
ICAgICAgMHhiNGM1OTQwMjogICAgc3RyICAgIHIxLCBbcjcsICMtMjhdCiAgICBbICA5NV0gcmVz
b2x2ZV9zY29wZSAgICAgbG9jNCwgbG9jMCwgY2FzZVN0cmluZ3MoQGlkNCksIDxHbG9iYWxMZXhp
Y2FsVmFyPiwgMSwgMHhiNDdkZmZjMAogICAgICAgIDB4YjRjNTk0MDY6ICAgIG12biAgICByMSwg
IzQKICAgICAgICAweGI0YzU5NDBhOiAgICBtb3Z3ICAgcjAsICM2NTQ3MgogICAgICAgIDB4YjRj
NTk0MGU6ICAgIG1vdnQgICByMCwgIzQ2MjA1CiAgICAgICAgMHhiNGM1OTQxMjogICAgc3RyICAg
IHIwLCBbcjcsICMtNDBdCiAgICAgICAgMHhiNGM1OTQxNjogICAgc3RyICAgIHIxLCBbcjcsICMt
MzZdCiAgICBbIDEwMl0gbmV3X2FycmF5X2J1ZmZlciAgbG9jNSwgMCwgMjAKICAgICAgICAweGI0
YzU5NDFhOiAgICBtb3Z3ICAgcjEsICMyNTkyOAogICAgICAgIDB4YjRjNTk0MWU6ICAgIG1vdnQg
ICByMSwgIzQ2MjcwCiAgICAgICAgMHhiNGM1OTQyMjogICAgbW92dyAgIHIyLCAjMTMwODgKICAg
ICAgICAweGI0YzU5NDI2OiAgICBtb3Z0ICAgcjIsICM0NjI3MQogICAgICAgIDB4YjRjNTk0MmE6
ICAgIG1vdnMgICByMywgIzIwCiAgICAgICAgMHhiNGM1OTQyYzogICAgbW92ICAgIHIwLCByNwog
ICAgICAgIDB4YjRjNTk0MmU6ICAgIG1vdncgICByMTIsICM0ODAzNgogICAgICAgIDB4YjRjNTk0
MzI6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNTk0MzY6ICAgIHN0ciAgICBy
MTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNTk0M2E6ICAgIG1vdncgICByNiwgIzQyMTI4CiAg
ICAgICAgMHhiNGM1OTQzZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzU5NDQy
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzU5NDQ0OiAgICBtb3Z3ICAgcjEyLCAj
NTgwMjUKICAgICAgICAweGI0YzU5NDQ4OiAgICBtb3Z0ICAgcjEyLCAjNDY3NzYKICAgICAgICAw
eGI0YzU5NDRjOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1OTQ0ZTogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgICAgICAweGI0YzU5NDUyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAg
IDB4YjRjNTk0NTY6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNTk0NTg6ICAgIGNt
cCAgICByMiwgIzAKICAgICAgICAweGI0YzU5NDVhOiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAg
ICAgIDB4YjRjNTk0NWU6ICAgIHN0ciAgICByMCwgW3I3LCAjLTQ4XQogICAgICAgIDB4YjRjNTk0
NjI6ICAgIHN0ciAgICByMSwgW3I3LCAjLTQ0XQogICAgWyAxMDddIHB1dF90b19zY29wZSAgICAg
IGxvYzQsIGNhc2VTdHJpbmdzKEBpZDQpLCBsb2M1LCAxMDQ4NTc4PERvTm90VGhyb3dJZk5vdEZv
dW5kfEdsb2JhbExleGljYWxWYXJ8SW5pdGlhbGl6YXRpb24+LCA8c3RydWN0dXJlPiwgLTEyNjI1
MDEzNTIKICAgICAgICAweGI0YzU5NDY2OiAgICBsZHIgICAgcjAsIFtyNywgIy00NF0KICAgICAg
ICAweGI0YzU5NDZhOiAgICBjbW4gICAgcjAsICM1CiAgICAgICAgMHhiNGM1OTQ2ZTogICAgYm5l
ICAgIDB4YjRjNTk0YjgKICAgICAgICAweGI0YzU5NDcwOiAgICBtb3Z3ICAgcjYsICM2NTQ3OQog
ICAgICAgIDB4YjRjNTk0NzQ6ICAgIG1vdnQgICByNiwgIzQ2MjA1CiAgICAgICAgMHhiNGM1OTQ3
ODogICAgbGRyYiAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1OTQ3YTogICAgdHN0ICAgIHI2LCBy
NgogICAgICAgIDB4YjRjNTk0N2M6ICAgIGJuZSAgICAweGI0YzU5NGI4CiAgICAgICAgMHhiNGM1
OTQ3ZTogICAgbW92dyAgIHIxLCAjNjU0NzIKICAgICAgICAweGI0YzU5NDgyOiAgICBtb3Z0ICAg
cjEsICM0NjIwNQogICAgICAgIDB4YjRjNTk0ODY6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAw
eGI0YzU5NDg4OiAgICBtb3Z3ICAgcjEyLCAjNDgwNTYKICAgICAgICAweGI0YzU5NDhjOiAgICBt
b3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzU5NDkwOiAgICBzdHIgICAgcjEyLCBbcjcs
ICMyOF0KICAgICAgICAweGI0YzU5NDk0OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4
YjRjNTk0OTg6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1OTQ5YzogICAgc3Ry
ICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1OTQ5ZTogICAgbW92dyAgIHIxMiwgIzYzMTc3CiAg
ICAgICAgMHhiNGM1OTRhMjogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAgICAgMHhiNGM1OTRh
NjogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNTk0YTg6ICAgIG1vdncgICByNiwgIzQ2MzQ4
CiAgICAgICAgMHhiNGM1OTRhYzogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzU5
NGIwOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzU5NGIyOiAgICBjbXAgICAgcjIs
ICMwCiAgICAgICAgMHhiNGM1OTRiNDogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0
YzU5NGI4OiAgICBsZHIgICAgcjAsIFtyNywgIy00OF0KICAgICAgICAweGI0YzU5NGJjOiAgICBs
ZHIgICAgcjEsIFtyNywgIy00NF0KICAgICAgICAweGI0YzU5NGMwOiAgICBtb3Z3ICAgcjYsICMx
MDc0MAogICAgICAgIDB4YjRjNTk0YzQ6ICAgIG1vdnQgICByNiwgIzQ2MjY2CiAgICAgICAgMHhi
NGM1OTRjODogICAgbGRyYiAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1OTRjYTogICAgY21wICAg
IHIyLCAjMgogICAgICAgIDB4YjRjNTk0Y2M6ICAgIGJuZSAgICAweGI0YzVjNTEwCiAgICAgICAg
MHhiNGM1OTRkMDogICAgbW92dyAgIHI2LCAjNDk2OTIKICAgICAgICAweGI0YzU5NGQ0OiAgICBt
b3Z0ICAgcjYsICM0NjI3MQogICAgICAgIDB4YjRjNTk0ZDg6ICAgIHN0ciAgICByMSwgW3I2XQog
ICAgICAgIDB4YjRjNTk0ZGE6ICAgIG1vdncgICByNiwgIzQ5Njg4CiAgICAgICAgMHhiNGM1OTRk
ZTogICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI0YzU5NGUyOiAgICBzdHIgICAgcjAs
IFtyNl0KICAgIFsgMTE0XSByZXNvbHZlX3Njb3BlICAgICBsb2M0LCBsb2MwLCBjYXNlcyhAaWQ1
KSwgPEdsb2JhbExleGljYWxWYXI+LCAxLCAweGI0N2RmZmMwCiAgICAgICAgMHhiNGM1OTRlNDog
ICAgbXZuICAgIHIxLCAjNAogICAgICAgIDB4YjRjNTk0ZTg6ICAgIG1vdncgICByMCwgIzY1NDcy
CiAgICAgICAgMHhiNGM1OTRlYzogICAgbW92dCAgIHIwLCAjNDYyMDUKICAgICAgICAweGI0YzU5
NGYwOiAgICBzdHIgICAgcjAsIFtyNywgIy00MF0KICAgICAgICAweGI0YzU5NGY0OiAgICBzdHIg
ICAgcjEsIFtyNywgIy0zNl0KICAgIFsgMTIxXSBuZXdfYXJyYXkgICAgICAgICBsb2M1LCBoZWFk
MCwgMAogICAgICAgIDB4YjRjNTk0Zjg6ICAgIGFkZHMgICByMCwgcjcsICMwCiAgICAgICAgMHhi
NGM1OTRmYTogICAgbW92ICAgIHIyLCByMAogICAgICAgIDB4YjRjNTk0ZmM6ICAgIG1vdncgICBy
MSwgIzI1OTM2CiAgICAgICAgMHhiNGM1OTUwMDogICAgbW92dCAgIHIxLCAjNDYyNzAKICAgICAg
ICAweGI0YzU5NTA0OiAgICBtb3ZzICAgcjMsICMwCiAgICAgICAgMHhiNGM1OTUwNjogICAgbW92
ICAgIHIwLCByNwogICAgICAgIDB4YjRjNTk1MDg6ICAgIG1vdncgICByMTIsICM0ODExMgogICAg
ICAgIDB4YjRjNTk1MGM6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNTk1MTA6
ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNTk1MTQ6ICAgIG1vdncgICBy
NiwgIzQyMTI4CiAgICAgICAgMHhiNGM1OTUxODogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAg
ICAweGI0YzU5NTFjOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzU5NTFlOiAgICBt
b3Z3ICAgcjEyLCAjNTc2MDkKICAgICAgICAweGI0YzU5NTIyOiAgICBtb3Z0ICAgcjEyLCAjNDY3
NzYKICAgICAgICAweGI0YzU5NTI2OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1OTUyODog
ICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzU5NTJjOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgICAgIDB4YjRjNTk1MzA6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRj
NTk1MzI6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzU5NTM0OiAgICBibmUgICAgMHhi
NGM1ZTY4MAogICAgICAgIDB4YjRjNTk1Mzg6ICAgIHN0ciAgICByMCwgW3I3LCAjLTQ4XQogICAg
ICAgIDB4YjRjNTk1M2M6ICAgIHN0ciAgICByMSwgW3I3LCAjLTQ0XQogICAgWyAxMjZdIHB1dF90
b19zY29wZSAgICAgIGxvYzQsIGNhc2VzKEBpZDUpLCBsb2M1LCAxMDQ4NTc4PERvTm90VGhyb3dJ
Zk5vdEZvdW5kfEdsb2JhbExleGljYWxWYXJ8SW5pdGlhbGl6YXRpb24+LCA8c3RydWN0dXJlPiwg
LTEyNjI1MDEzNzYKICAgICAgICAweGI0YzU5NTQwOiAgICBsZHIgICAgcjAsIFtyNywgIy00NF0K
ICAgICAgICAweGI0YzU5NTQ0OiAgICBjbW4gICAgcjAsICM1CiAgICAgICAgMHhiNGM1OTU0ODog
ICAgYm5lICAgIDB4YjRjNTk1OTIKICAgICAgICAweGI0YzU5NTRhOiAgICBtb3Z3ICAgcjYsICM2
NTQ3OQogICAgICAgIDB4YjRjNTk1NGU6ICAgIG1vdnQgICByNiwgIzQ2MjA1CiAgICAgICAgMHhi
NGM1OTU1MjogICAgbGRyYiAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1OTU1NDogICAgdHN0ICAg
IHI2LCByNgogICAgICAgIDB4YjRjNTk1NTY6ICAgIGJuZSAgICAweGI0YzU5NTkyCiAgICAgICAg
MHhiNGM1OTU1ODogICAgbW92dyAgIHIxLCAjNjU0NzIKICAgICAgICAweGI0YzU5NTVjOiAgICBt
b3Z0ICAgcjEsICM0NjIwNQogICAgICAgIDB4YjRjNTk1NjA6ICAgIG1vdiAgICByMCwgcjcKICAg
ICAgICAweGI0YzU5NTYyOiAgICBtb3Z3ICAgcjEyLCAjNDgxMzIKICAgICAgICAweGI0YzU5NTY2
OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzU5NTZhOiAgICBzdHIgICAgcjEy
LCBbcjcsICMyOF0KICAgICAgICAweGI0YzU5NTZlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAg
ICAgIDB4YjRjNTk1NzI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1OTU3Njog
ICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1OTU3ODogICAgbW92dyAgIHIxMiwgIzYz
MTc3CiAgICAgICAgMHhiNGM1OTU3YzogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAgICAgMHhi
NGM1OTU4MDogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNTk1ODI6ICAgIG1vdncgICByNiwg
IzQ2MzQ4CiAgICAgICAgMHhiNGM1OTU4NjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAw
eGI0YzU5NThhOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzU5NThjOiAgICBjbXAg
ICAgcjIsICMwCiAgICAgICAgMHhiNGM1OTU4ZTogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAg
ICAweGI0YzU5NTkyOiAgICBsZHIgICAgcjAsIFtyNywgIy00OF0KICAgICAgICAweGI0YzU5NTk2
OiAgICBsZHIgICAgcjEsIFtyNywgIy00NF0KICAgICAgICAweGI0YzU5NTlhOiAgICBtb3Z3ICAg
cjYsICMxMDY2OAogICAgICAgIDB4YjRjNTk1OWU6ICAgIG1vdnQgICByNiwgIzQ2MjY2CiAgICAg
ICAgMHhiNGM1OTVhMjogICAgbGRyYiAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1OTVhNDogICAg
Y21wICAgIHIyLCAjMgogICAgICAgIDB4YjRjNTk1YTY6ICAgIGJuZSAgICAweGI0YzVjNTRlCiAg
ICAgICAgMHhiNGM1OTVhYTogICAgbW92dyAgIHI2LCAjNDk2NjgKICAgICAgICAweGI0YzU5NWFl
OiAgICBtb3Z0ICAgcjYsICM0NjI3MQogICAgICAgIDB4YjRjNTk1YjI6ICAgIHN0ciAgICByMSwg
W3I2XQogICAgICAgIDB4YjRjNTk1YjQ6ICAgIG1vdncgICByNiwgIzQ5NjY0CiAgICAgICAgMHhi
NGM1OTViODogICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI0YzU5NWJjOiAgICBzdHIg
ICAgcjAsIFtyNl0KICAgIFsgMTMzXSBjcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCBsb2M0LCBs
b2MwLCBDZWxsOiAweGI0N2I2ZDQwICgweGI0N2Y3YTQwOltTeW1ib2xUYWJsZSwge30sIE5vbkFy
cmF5LCBMZWFmXSkoY29uc3QyMyksIDxKU1ZhbHVlKCk+KGNvbnN0MSkKICAgICAgICAweGI0YzU5
NWJlOiAgICBtb3Z3ICAgcjEyLCAjNDgxNjAKICAgICAgICAweGI0YzU5NWMyOiAgICBtb3Z0ICAg
cjEyLCAjNDU4MjIKICAgICAgICAweGI0YzU5NWM2OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0K
ICAgICAgICAweGI0YzU5NWNhOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNTk1
Y2U6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1OTVkMjogICAgc3RyICAgIHI3
LCBbcjZdCiAgICAgICAgMHhiNGM1OTVkNDogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRj
NTk1ZDY6ICAgIG1vdncgICByMSwgIzQ4MTU2CiAgICAgICAgMHhiNGM1OTVkYTogICAgbW92dCAg
IHIxLCAjNDU4MjIKICAgICAgICAweGI0YzU5NWRlOiAgICBtb3Z3ICAgcjEyLCAjMjI5MzcKICAg
ICAgICAweGI0YzU5NWUyOiAgICBtb3Z0ICAgcjEyLCAjNDY3OTMKICAgICAgICAweGI0YzU5NWU2
OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1OTVlODogICAgbW92dyAgIHI2LCAjNDYzNDgK
ICAgICAgICAweGI0YzU5NWVjOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNTk1
ZjA6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNTk1ZjI6ICAgIGNtcCAgICByMiwg
IzAKICAgICAgICAweGI0YzU5NWY0OiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgWyAxMzhdIG1v
diAgICAgICAgICAgICAgIGxvYzAsIGxvYzQKICAgICAgICAweGI0YzU5NWY4OiAgICBsZHIgICAg
cjAsIFtyNywgIy00MF0KICAgICAgICAweGI0YzU5NWZjOiAgICBsZHIgICAgcjEsIFtyNywgIy0z
Nl0KICAgICAgICAweGI0YzU5NjAwOiAgICBzdHIgICAgcjAsIFtyNywgIy04XQogICAgICAgIDB4
YjRjNTk2MDQ6ICAgIHN0ciAgICByMSwgW3I3LCAjLTRdCiAgICBbIDE0MV0gcmVzb2x2ZV9zY29w
ZSAgICAgbG9jNSwgbG9jMCwgY2FzZVN0cmluZ3MoQGlkNCksIDxHbG9iYWxMZXhpY2FsVmFyPiwg
MiwgMHhiNDdkZmZjMAogICAgICAgIDB4YjRjNTk2MDg6ICAgIG12biAgICByMSwgIzQKICAgICAg
ICAweGI0YzU5NjBjOiAgICBtb3Z3ICAgcjAsICM2NTQ3MgogICAgICAgIDB4YjRjNTk2MTA6ICAg
IG1vdnQgICByMCwgIzQ2MjA1CiAgICAgICAgMHhiNGM1OTYxNDogICAgc3RyICAgIHIwLCBbcjcs
ICMtNDhdCiAgICAgICAgMHhiNGM1OTYxODogICAgc3RyICAgIHIxLCBbcjcsICMtNDRdCiAgICBb
IDE0OF0gZ2V0X2Zyb21fc2NvcGUgICAgbG9jNSwgbG9jNSwgY2FzZVN0cmluZ3MoQGlkNCksIDIw
NTA8VGhyb3dJZk5vdEZvdW5kfEdsb2JhbExleGljYWxWYXJ8Tm90SW5pdGlhbGl6YXRpb24+LCAt
MTI2MjUwMTM1MiAgICBwcmVkaWN0aW5nIEFycmF5CiAgICAgICAgMHhiNGM1OTYxYzogICAgbW92
dyAgIHI2LCAjNDk2OTIKICAgICAgICAweGI0YzU5NjIwOiAgICBtb3Z0ICAgcjYsICM0NjI3MQog
ICAgICAgIDB4YjRjNTk2MjQ6ICAgIGxkciAgICByMSwgW3I2XQogICAgICAgIDB4YjRjNTk2MjY6
ICAgIG1vdncgICByNiwgIzQ5Njg4CiAgICAgICAgMHhiNGM1OTYyYTogICAgbW92dCAgIHI2LCAj
NDYyNzEKICAgICAgICAweGI0YzU5NjJlOiAgICBsZHIgICAgcjAsIFtyNl0KICAgICAgICAweGI0
YzU5NjMwOiAgICBjbW4gICAgcjEsICM2CiAgICAgICAgMHhiNGM1OTYzNDogICAgYmVxICAgIDB4
YjRjNWM1OGMKICAgICAgICAweGI0YzU5NjM4OiAgICBzdHIgICAgcjAsIFtyNywgIy00OF0KICAg
ICAgICAweGI0YzU5NjNjOiAgICBzdHIgICAgcjEsIFtyNywgIy00NF0KICAgIFsgMTU2XSBnZXRf
YnlfaWQgICAgICAgICBsb2M2LCBsb2M1LCBTeW1ib2wuaXRlcmF0b3IoQGlkNikgICAgcHJlZGlj
dGluZyBGdW5jdGlvbgogICAgICAgIDB4YjRjNTk2NDA6ICAgIGxkciAgICByMCwgW3I3LCAjLTQ4
XQogICAgICAgIDB4YjRjNTk2NDQ6ICAgIGxkciAgICByMSwgW3I3LCAjLTQ0XQogICAgICAgIDB4
YjRjNTk2NDg6ICAgIGNtbiAgICByMSwgIzUKICAgICAgICAweGI0YzU5NjRjOiAgICBibmUgICAg
MHhiNGM1YzVkMgogICAgICAgIDB4YjRjNTk2NTA6ICAgIGxkciAgICByNiwgW3IwXQogICAgICAg
IDB4YjRjNTk2NTI6ICAgIG1vdncgICByMTIsICMwCiAgICAgICAgMHhiNGM1OTY1NjogICAgbW92
dCAgIHIxMiwgIzAKICAgICAgICAweGI0YzU5NjVhOiAgICBjbXAgICAgcjYsIHIxMgogICAgICAg
IDB4YjRjNTk2NWU6ICAgIGl0dHQgICBuZQogICAgICAgIDB4YjRjNTk2NjA6ICAgIG1vdnduZSBy
MTIsICM1MDY0MwogICAgICAgIDB4YjRjNTk2NjQ6ICAgIG1vdnRuZSByMTIsICM0NjI3NwogICAg
ICAgIDB4YjRjNTk2Njg6ICAgIGJ4bmUgICByMTIKICAgICAgICAweGI0YzU5NjZhOiAgICBsZHIg
ICAgcjEsIFtyMF0KICAgICAgICAweGI0YzU5NjZlOiAgICBsZHIgICAgcjAsIFtyMF0KICAgICAg
ICAweGI0YzU5NjcyOiAgICBzdHIgICAgcjAsIFtyNywgIy01Nl0KICAgICAgICAweGI0YzU5Njc2
OiAgICBzdHIgICAgcjEsIFtyNywgIy01Ml0KICAgIFsgMTY1XSBtb3YgICAgICAgICAgICAgICBs
b2M5LCBsb2M1CiAgICAgICAgMHhiNGM1OTY3YTogICAgbGRyICAgIHIwLCBbcjcsICMtNDhdCiAg
ICAgICAgMHhiNGM1OTY3ZTogICAgbGRyICAgIHIxLCBbcjcsICMtNDRdCiAgICAgICAgMHhiNGM1
OTY4MjogICAgc3RyICAgIHIwLCBbcjcsICMtODBdCiAgICAgICAgMHhiNGM1OTY4NjogICAgc3Ry
ICAgIHIxLCBbcjcsICMtNzZdCiAgICBbIDE2OF0gY2FsbCAgICAgICAgICAgICAgbG9jNiwgbG9j
NiwgMSwgMTQgbGxpbnQoMHhiNDdmM2YwMCwgZXhlYyAweGI0N2UzZWMwKSBzdGF0dXMoKEZ1bmN0
aW9uOiBDZWxsOiAweGI0N2YzZjAwICgweGI0N2Y2ZTEwOltGdW5jdGlvbiwge25hbWU6MTAwLCBs
ZW5ndGg6MTAxfSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTAsIExlYWZdKTsgRXhlY3V0YWJs
ZTogTmF0aXZlRXhlY3V0YWJsZToweGI2YzZmNWQ1LzB4ZjYzMCkpICAgIEFycmF5V2l0aENvbnRp
Z3VvdXMsIE9yaWdpbmFsOyBwcmVkaWN0aW5nIE90aGVyb2JqCiAgICAgICAgMHhiNGM1OTY4YTog
ICAgbW92ICAgIHNwLCByNwogICAgICAgIDB4YjRjNTk2OGM6ICAgIG12biAgICByMTIsICMxMDMK
ICAgICAgICAweGI0YzU5NjkwOiAgICBtb3YgICAgc3AsIHNwCiAgICAgICAgMHhiNGM1OTY5Mjog
ICAgYWRkICAgIHNwLCByMTIKICAgICAgICAweGI0YzU5Njk0OiAgICBtb3YgICAgcjEyLCAjMQog
ICAgICAgIDB4YjRjNTk2OTg6ICAgIHN0ciAgICByMTIsIFtzcCwgIzE2XQogICAgICAgIDB4YjRj
NTk2OWM6ICAgIG1vdncgICByMTIsICM0ODI5NgogICAgICAgIDB4YjRjNTk2YTA6ICAgIG1vdnQg
ICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNTk2YTQ6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4
XQogICAgICAgIDB4YjRjNTk2YTg6ICAgIGxkciAgICByMCwgW3I3LCAjLTU2XQogICAgICAgIDB4
YjRjNTk2YWM6ICAgIGxkciAgICByMSwgW3I3LCAjLTUyXQogICAgICAgIDB4YjRjNTk2YjA6ICAg
IHN0ciAgICByMCwgW3NwLCAjOF0KICAgICAgICAweGI0YzU5NmIyOiAgICBzdHIgICAgcjEsIFtz
cCwgIzEyXQogICAgICAgIDB4YjRjNTk2YjQ6ICAgIGNtbiAgICByMSwgIzUKICAgICAgICAweGI0
YzU5NmI4OiAgICBibmUgICAgMHhiNGM1YzYyOAogICAgICAgIDB4YjRjNTk2YmM6ICAgIG1vdncg
ICByMTIsICMwCiAgICAgICAgMHhiNGM1OTZjMDogICAgbW92dCAgIHIxMiwgIzAKICAgICAgICAw
eGI0YzU5NmM0OiAgICBjbXAgICAgcjAsIHIxMgogICAgICAgIDB4YjRjNTk2Yzg6ICAgIGJuZSAg
ICAweGI0YzVjNjI4CiAgICAgICAgMHhiNGM1OTZjYzogICAgbW92dyAgIHIxMiwgIzAKICAgICAg
ICAweGI0YzU5NmQwOiAgICBtb3Z0ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNTk2ZDQ6ICAgIGJs
eCAgICByMTIKICAgICAgICAweGI0YzU5NmQ2OiAgICBtb3YgICAgc3AsIHI3CiAgICAgICAgMHhi
NGM1OTZkODogICAgbXZuICAgIHIxMiwgIzE4MwogICAgICAgIDB4YjRjNTk2ZGM6ICAgIG1vdiAg
ICBzcCwgc3AKICAgICAgICAweGI0YzU5NmRlOiAgICBhZGQgICAgc3AsIHIxMgogICAgICAgIDB4
YjRjNTk2ZTA6ICAgIHN0ciAgICByMCwgW3I3LCAjLTU2XQogICAgICAgIDB4YjRjNTk2ZTQ6ICAg
IHN0ciAgICByMSwgW3I3LCAjLTUyXQogICAgWyAxNzddIG1vdiAgICAgICAgICAgICAgIGxvYzcs
IFVuZGVmaW5lZChjb25zdDIpCiAgICAgICAgMHhiNGM1OTZlODogICAgbW92ICAgIHIxMiwgIzAK
ICAgICAgICAweGI0YzU5NmVjOiAgICBzdHIgICAgcjEyLCBbcjcsICMtNjRdCiAgICAgICAgMHhi
NGM1OTZmMDogICAgbXZuICAgIHIxMiwgIzMKICAgICAgICAweGI0YzU5NmY0OiAgICBzdHIgICAg
cjEyLCBbcjcsICMtNjBdCiAgICBbIDE4MF0gam1wICAgICAgICAgICAgICAgMTIwKC0+MzAwKQog
ICAgICAgIDB4YjRjNTk2Zjg6ICAgIGIgICAgICAweGI0YzU5YmQ4CiAgICBbIDE4Ml0gbG9vcF9o
aW50ICAgICAgICAgCiAgICBbIDE4M10gcHV0X3RvX3Njb3BlICAgICAgbG9jNCwgY2FzZVN0cmlu
ZyhAaWQ3KSwgbG9jNywgMTA0ODU4MDxEb05vdFRocm93SWZOb3RGb3VuZHxMb2NhbENsb3N1cmVW
YXJ8SW5pdGlhbGl6YXRpb24+LCA8c3RydWN0dXJlPiwgMAogICAgICAgIDB4YjRjNTk2ZmE6ICAg
IGxkciAgICByMCwgW3I3LCAjLTYwXQogICAgICAgIDB4YjRjNTk2ZmU6ICAgIGNtbiAgICByMCwg
IzUKICAgICAgICAweGI0YzU5NzAyOiAgICBibmUgICAgMHhiNGM1OTc0NAogICAgICAgIDB4YjRj
NTk3MDQ6ICAgIGxkciAgICByMSwgW3I3LCAjLTQwXQogICAgICAgIDB4YjRjNTk3MDg6ICAgIGxk
ciAgICByMCwgW3I3LCAjLTM2XQogICAgICAgIDB4YjRjNTk3MGM6ICAgIGxkcmIgICByNiwgW3Ix
LCAjN10KICAgICAgICAweGI0YzU5NzBlOiAgICB0c3QgICAgcjYsIHI2CiAgICAgICAgMHhiNGM1
OTcxMDogICAgYm5lICAgIDB4YjRjNTk3NDQKICAgICAgICAweGI0YzU5NzEyOiAgICBtb3YgICAg
cjAsIHI3CiAgICAgICAgMHhiNGM1OTcxNDogICAgbW92dyAgIHIxMiwgIzQ4MzYwCiAgICAgICAg
MHhiNGM1OTcxODogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1OTcxYzogICAg
c3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1OTcyMDogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgICAgICAweGI0YzU5NzI0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4
YjRjNTk3Mjg6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNTk3MmE6ICAgIG1vdncg
ICByMTIsICM2MzE3NwogICAgICAgIDB4YjRjNTk3MmU6ICAgIG1vdnQgICByMTIsICM0Njc3Ngog
ICAgICAgIDB4YjRjNTk3MzI6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzU5NzM0OiAgICBt
b3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNTk3Mzg6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAgICAgMHhiNGM1OTczYzogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1OTcz
ZTogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNTk3NDA6ICAgIGJuZSAgICAweGI0YzVl
NjgwCiAgICAgICAgMHhiNGM1OTc0NDogICAgbGRyICAgIHIyLCBbcjcsICMtNjRdCiAgICAgICAg
MHhiNGM1OTc0ODogICAgbGRyICAgIHIzLCBbcjcsICMtNjBdCiAgICAgICAgMHhiNGM1OTc0Yzog
ICAgbGRyICAgIHIwLCBbcjcsICMtNDBdCiAgICAgICAgMHhiNGM1OTc1MDogICAgbGRyICAgIHIx
LCBbcjcsICMtMzZdCiAgICAgICAgMHhiNGM1OTc1NDogICAgc3RyICAgIHIzLCBbcjAsICMyOF0K
ICAgICAgICAweGI0YzU5NzU2OiAgICBzdHIgICAgcjIsIFtyMCwgIzI0XQogICAgWyAxOTBdIHJl
c29sdmVfc2NvcGUgICAgIGxvYzksIGxvYzAsIGNhc2VzKEBpZDUpLCA8R2xvYmFsTGV4aWNhbFZh
cj4sIDIsIDB4YjQ3ZGZmYzAKICAgICAgICAweGI0YzU5NzU4OiAgICBtdm4gICAgcjEsICM0CiAg
ICAgICAgMHhiNGM1OTc1YzogICAgbW92dyAgIHIwLCAjNjU0NzIKICAgICAgICAweGI0YzU5NzYw
OiAgICBtb3Z0ICAgcjAsICM0NjIwNQogICAgICAgIDB4YjRjNTk3NjQ6ICAgIHN0ciAgICByMCwg
W3I3LCAjLTgwXQogICAgICAgIDB4YjRjNTk3Njg6ICAgIHN0ciAgICByMSwgW3I3LCAjLTc2XQog
ICAgWyAxOTddIGdldF9mcm9tX3Njb3BlICAgIGxvYzksIGxvYzksIGNhc2VzKEBpZDUpLCAyMDUw
PFRocm93SWZOb3RGb3VuZHxHbG9iYWxMZXhpY2FsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgLTEy
NjI1MDEzNzYgICAgcHJlZGljdGluZyBBcnJheQogICAgICAgIDB4YjRjNTk3NmM6ICAgIG1vdncg
ICByNiwgIzQ5NjY4CiAgICAgICAgMHhiNGM1OTc3MDogICAgbW92dCAgIHI2LCAjNDYyNzEKICAg
ICAgICAweGI0YzU5Nzc0OiAgICBsZHIgICAgcjEsIFtyNl0KICAgICAgICAweGI0YzU5Nzc2OiAg
ICBtb3Z3ICAgcjYsICM0OTY2NAogICAgICAgIDB4YjRjNTk3N2E6ICAgIG1vdnQgICByNiwgIzQ2
MjcxCiAgICAgICAgMHhiNGM1OTc3ZTogICAgbGRyICAgIHIwLCBbcjZdCiAgICAgICAgMHhiNGM1
OTc4MDogICAgY21uICAgIHIxLCAjNgogICAgICAgIDB4YjRjNTk3ODQ6ICAgIGJlcSAgICAweGI0
YzVjNjUwCiAgICAgICAgMHhiNGM1OTc4ODogICAgc3RyICAgIHIwLCBbcjcsICMtODBdCiAgICAg
ICAgMHhiNGM1OTc4YzogICAgc3RyICAgIHIxLCBbcjcsICMtNzZdCiAgICBbIDIwNV0gZ2V0X2J5
X2lkICAgICAgICAgbG9jMywgbG9jOSwgcHVzaChAaWQ4KSAgICBwcmVkaWN0aW5nIEZ1bmN0aW9u
CiAgICAgICAgMHhiNGM1OTc5MDogICAgbGRyICAgIHIwLCBbcjcsICMtODBdCiAgICAgICAgMHhi
NGM1OTc5NDogICAgbGRyICAgIHIxLCBbcjcsICMtNzZdCiAgICAgICAgMHhiNGM1OTc5ODogICAg
Y21uICAgIHIxLCAjNQogICAgICAgIDB4YjRjNTk3OWM6ICAgIGJuZSAgICAweGI0YzVjNjk2CiAg
ICAgICAgMHhiNGM1OTdhMDogICAgbGRyICAgIHI2LCBbcjBdCiAgICAgICAgMHhiNGM1OTdhMjog
ICAgbW92dyAgIHIxMiwgIzAKICAgICAgICAweGI0YzU5N2E2OiAgICBtb3Z0ICAgcjEyLCAjMAog
ICAgICAgIDB4YjRjNTk3YWE6ICAgIGNtcCAgICByNiwgcjEyCiAgICAgICAgMHhiNGM1OTdhZTog
ICAgaXR0dCAgIG5lCiAgICAgICAgMHhiNGM1OTdiMDogICAgbW92d25lIHIxMiwgIzUwODM5CiAg
ICAgICAgMHhiNGM1OTdiNDogICAgbW92dG5lIHIxMiwgIzQ2Mjc3CiAgICAgICAgMHhiNGM1OTdi
ODogICAgYnhuZSAgIHIxMgogICAgICAgIDB4YjRjNTk3YmE6ICAgIGxkciAgICByMSwgW3IwXQog
ICAgICAgIDB4YjRjNTk3YmU6ICAgIGxkciAgICByMCwgW3IwXQogICAgICAgIDB4YjRjNTk3YzI6
ICAgIHN0ciAgICByMCwgW3I3LCAjLTMyXQogICAgICAgIDB4YjRjNTk3YzY6ICAgIHN0ciAgICBy
MSwgW3I3LCAjLTI4XQogICAgWyAyMTRdIHJlc29sdmVfc2NvcGUgICAgIGxvYzEzLCBsb2MwLCBl
dmFsKEBpZDkpLCA8R2xvYmFsUHJvcGVydHk+LCAzLCAweGI0N2U3OGMwCiAgICAgICAgMHhiNGM1
OTdjYTogICAgbXZuICAgIHIxLCAjNAogICAgICAgIDB4YjRjNTk3Y2U6ICAgIG1vdncgICByMCwg
IzMwOTEyCiAgICAgICAgMHhiNGM1OTdkMjogICAgbW92dCAgIHIwLCAjNDYyMDYKICAgICAgICAw
eGI0YzU5N2Q2OiAgICBzdHIgICAgcjAsIFtyNywgIy0xMTJdCiAgICAgICAgMHhiNGM1OTdkYTog
ICAgc3RyICAgIHIxLCBbcjcsICMtMTA4XQogICAgWyAyMjFdIGdldF9mcm9tX3Njb3BlICAgIGxv
YzEwLCBsb2MxMywgZXZhbChAaWQ5KSwgMjA0ODxUaHJvd0lmTm90Rm91bmR8R2xvYmFsUHJvcGVy
dHl8Tm90SW5pdGlhbGl6YXRpb24+LCAxMjQgICAgcHJlZGljdGluZyBGdW5jdGlvbgogICAgICAg
IDB4YjRjNTk3ZGU6ICAgIGxkciAgICByMCwgW3I3LCAjLTExMl0KICAgICAgICAweGI0YzU5N2Uy
OiAgICBsZHIgICAgcjEsIFtyNywgIy0xMDhdCiAgICAgICAgMHhiNGM1OTdlNjogICAgbW92dyAg
IHI2LCAjNDg1MjgKICAgICAgICAweGI0YzU5N2VhOiAgICBtb3Z0ICAgcjYsICM0NTgyMgogICAg
ICAgIDB4YjRjNTk3ZWU6ICAgIGxkciAgICByMiwgW3I2XQogICAgICAgIDB4YjRjNTk3ZjA6ICAg
IGxkciAgICByMTIsIFtyMF0KICAgICAgICAweGI0YzU5N2Y0OiAgICBjbXAgICAgcjEyLCByMgog
ICAgICAgIDB4YjRjNTk3Zjg6ICAgIGJuZSAgICAweGI0YzVjNmVjCiAgICAgICAgMHhiNGM1OTdm
YzogICAgbW92ICAgIHIyLCByMAogICAgICAgIDB4YjRjNTk3ZmU6ICAgIG1vdncgICByNiwgIzQ4
NTMyCiAgICAgICAgMHhiNGM1OTgwMjogICAgbW92dCAgIHI2LCAjNDU4MjIKICAgICAgICAweGI0
YzU5ODA2OiAgICBsZHIgICAgcjMsIFtyNl0KICAgICAgICAweGI0YzU5ODA4OiAgICBsZHIgICAg
cjIsIFtyMiwgIzhdCiAgICAgICAgMHhiNGM1OTgwYTogICAgcnNiICAgIHIzLCByMywgIzAKICAg
ICAgICAweGI0YzU5ODBjOiAgICBhZGR3ICAgcjYsIHIyLCAjNzg0CiAgICAgICAgMHhiNGM1OTgx
MDogICAgbGRyICAgIHIwLCBbcjYsIHIzLCAjM10KICAgICAgICAweGI0YzU5ODE0OiAgICBhZGR3
ICAgcjYsIHIyLCAjNzg4CiAgICAgICAgMHhiNGM1OTgxODogICAgbGRyICAgIHIxLCBbcjYsIHIz
LCAjM10KICAgICAgICAweGI0YzU5ODFjOiAgICBzdHIgICAgcjAsIFtyNywgIy04OF0KICAgICAg
ICAweGI0YzU5ODIwOiAgICBzdHIgICAgcjEsIFtyNywgIy04NF0KICAgIFsgMjI5XSBnZXRfZnJv
bV9zY29wZSAgICBsb2MxMiwgbG9jNCwgY2FzZVN0cmluZyhAaWQ3KSwgMjA1MTxUaHJvd0lmTm90
Rm91bmR8Q2xvc3VyZVZhcnxOb3RJbml0aWFsaXphdGlvbj4sIDAgICAgcHJlZGljdGluZyBTdHJp
bmdpZGVudAogICAgICAgIDB4YjRjNTk4MjQ6ICAgIGxkciAgICByMCwgW3I3LCAjLTQwXQogICAg
ICAgIDB4YjRjNTk4Mjg6ICAgIGxkciAgICByMSwgW3I3LCAjLTM2XQogICAgICAgIDB4YjRjNTk4
MmM6ICAgIGxkciAgICByMSwgW3IwLCAjMjhdCiAgICAgICAgMHhiNGM1OTgyZTogICAgbGRyICAg
IHIwLCBbcjAsICMyNF0KICAgICAgICAweGI0YzU5ODMwOiAgICBzdHIgICAgcjAsIFtyNywgIy0x
MDRdCiAgICAgICAgMHhiNGM1OTgzNDogICAgc3RyICAgIHIxLCBbcjcsICMtMTAwXQogICAgWyAy
MzddIGNhbGxfZXZhbCAgICAgICAgIGxvYzgsIGxvYzEwLCAyLCAxOCAgICBPcmlnaW5hbDsgcHJl
ZGljdGluZyBOb25pbnRhc2RvdWJsZQogICAgICAgIDB4YjRjNTk4Mzg6ICAgIG1vdiAgICBzcCwg
cjcKICAgICAgICAweGI0YzU5ODNhOiAgICBtdm4gICAgcjEyLCAjMTM1CiAgICAgICAgMHhiNGM1
OTgzZTogICAgbW92ICAgIHNwLCBzcAogICAgICAgIDB4YjRjNTk4NDA6ICAgIGFkZCAgICBzcCwg
cjEyCiAgICAgICAgMHhiNGM1OTg0MjogICAgbW92ICAgIHIxMiwgIzIKICAgICAgICAweGI0YzU5
ODQ2OiAgICBzdHIgICAgcjEyLCBbc3AsICMxNl0KICAgICAgICAweGI0YzU5ODRhOiAgICBtb3Z3
ICAgcjEyLCAjNDg1NzIKICAgICAgICAweGI0YzU5ODRlOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIK
ICAgICAgICAweGI0YzU5ODUyOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0
YzU5ODU2OiAgICBsZHIgICAgcjAsIFtyNywgIy04OF0KICAgICAgICAweGI0YzU5ODVhOiAgICBs
ZHIgICAgcjEsIFtyNywgIy04NF0KICAgICAgICAweGI0YzU5ODVlOiAgICBzdHIgICAgcjAsIFtz
cCwgIzhdCiAgICAgICAgMHhiNGM1OTg2MDogICAgc3RyICAgIHIxLCBbc3AsICMxMl0KICAgICAg
ICAweGI0YzU5ODYyOiAgICBtdm4gICAgcjEyLCAjNwogICAgICAgIDB4YjRjNTk4NjY6ICAgIGFk
ZCAgICByMSwgc3AsIHIxMgogICAgICAgIDB4YjRjNTk4NmE6ICAgIHN0ciAgICByNywgW3IxXQog
ICAgICAgIDB4YjRjNTk4NmM6ICAgIG1vdiAgICBzcCwgcjcKICAgICAgICAweGI0YzU5ODZlOiAg
ICBtdm4gICAgcjEyLCAjMTgzCiAgICAgICAgMHhiNGM1OTg3MjogICAgbW92ICAgIHNwLCBzcAog
ICAgICAgIDB4YjRjNTk4NzQ6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAgICAgMHhiNGM1OTg3Njog
ICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNTk4Nzg6ICAgIG1vdncgICByMTIsICM0ODU3
NgogICAgICAgIDB4YjRjNTk4N2M6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRj
NTk4ODA6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNTk4ODQ6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1OTg4ODogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgICAgICAweGI0YzU5ODhjOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzU5ODhl
OiAgICBtb3Z3ICAgcjEyLCAjNDg1NzYKICAgICAgICAweGI0YzU5ODkyOiAgICBtb3Z0ICAgcjEy
LCAjNDU4MjIKICAgICAgICAweGI0YzU5ODk2OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAg
ICAgICAweGI0YzU5ODlhOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNTk4OWU6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1OThhMjogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAgICAgMHhiNGM1OThhNDogICAgbW92dyAgIHIxMiwgIzQ5ODA5CiAgICAgICAgMHhi
NGM1OThhODogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAgICAgMHhiNGM1OThhYzogICAgYmx4
ICAgIHIxMgogICAgICAgIDB4YjRjNTk4YWU6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAg
MHhiNGM1OThiMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzU5OGI2OiAgICBs
ZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzU5OGI4OiAgICBjbXAgICAgcjIsICMwCiAgICAg
ICAgMHhiNGM1OThiYTogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzU5OGJlOiAg
ICBjbW4gICAgcjEsICM2CiAgICAgICAgMHhiNGM1OThjMjogICAgYmVxICAgIDB4YjRjNWM3MzIK
ICAgICAgICAweGI0YzU5OGM2OiAgICBzdHIgICAgcjAsIFtyNywgIy03Ml0KICAgICAgICAweGI0
YzU5OGNhOiAgICBzdHIgICAgcjEsIFtyNywgIy02OF0KICAgIFsgMjQ2XSBjYWxsICAgICAgICAg
ICAgICBsb2MzLCBsb2MzLCAyLCAxNCBsbGludCgweGI0N2YzN2UwLCBleGVjIDB4YjQ3ZTM2MDAp
IHN0YXR1cygoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjM3ZTAgKDB4YjQ3ZjZlMTA6W0Z1bmN0aW9u
LCB7bmFtZToxMDAsIGxlbmd0aDoxMDF9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMCwgTGVh
Zl0pOyBFeGVjdXRhYmxlOiBOYXRpdmVFeGVjdXRhYmxlOjB4YjZjNmYxYzEvMHhmNjMwKSkgICAg
QXJyYXlXaXRoQ29udGlndW91cywgT3JpZ2luYWw7IHByZWRpY3RpbmcgTm9uYm9vbGludDMyCiAg
ICAgICAgMHhiNGM1OThjZTogICAgbW92ICAgIHNwLCByNwogICAgICAgIDB4YjRjNTk4ZDA6ICAg
IG12biAgICByMTIsICMxMDMKICAgICAgICAweGI0YzU5OGQ0OiAgICBtb3YgICAgc3AsIHNwCiAg
ICAgICAgMHhiNGM1OThkNjogICAgYWRkICAgIHNwLCByMTIKICAgICAgICAweGI0YzU5OGQ4OiAg
ICBtb3YgICAgcjEyLCAjMgogICAgICAgIDB4YjRjNTk4ZGM6ICAgIHN0ciAgICByMTIsIFtzcCwg
IzE2XQogICAgICAgIDB4YjRjNTk4ZTA6ICAgIG1vdncgICByMTIsICM0ODYwOAogICAgICAgIDB4
YjRjNTk4ZTQ6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNTk4ZTg6ICAgIHN0
ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNTk4ZWM6ICAgIGxkciAgICByMCwgW3I3
LCAjLTMyXQogICAgICAgIDB4YjRjNTk4ZjA6ICAgIGxkciAgICByMSwgW3I3LCAjLTI4XQogICAg
ICAgIDB4YjRjNTk4ZjQ6ICAgIHN0ciAgICByMCwgW3NwLCAjOF0KICAgICAgICAweGI0YzU5OGY2
OiAgICBzdHIgICAgcjEsIFtzcCwgIzEyXQogICAgICAgIDB4YjRjNTk4Zjg6ICAgIGNtbiAgICBy
MSwgIzUKICAgICAgICAweGI0YzU5OGZjOiAgICBibmUgICAgMHhiNGM1Yzc2YwogICAgICAgIDB4
YjRjNTk5MDA6ICAgIG1vdncgICByMTIsICMwCiAgICAgICAgMHhiNGM1OTkwNDogICAgbW92dCAg
IHIxMiwgIzAKICAgICAgICAweGI0YzU5OTA4OiAgICBjbXAgICAgcjAsIHIxMgogICAgICAgIDB4
YjRjNTk5MGM6ICAgIGJuZSAgICAweGI0YzVjNzZjCiAgICAgICAgMHhiNGM1OTkxMDogICAgbW92
dyAgIHIxMiwgIzAKICAgICAgICAweGI0YzU5OTE0OiAgICBtb3Z0ICAgcjEyLCAjMAogICAgICAg
IDB4YjRjNTk5MTg6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzU5OTFhOiAgICBtb3YgICAg
c3AsIHI3CiAgICAgICAgMHhiNGM1OTkxYzogICAgbXZuICAgIHIxMiwgIzE4MwogICAgICAgIDB4
YjRjNTk5MjA6ICAgIG1vdiAgICBzcCwgc3AKICAgICAgICAweGI0YzU5OTIyOiAgICBhZGQgICAg
c3AsIHIxMgogICAgICAgIDB4YjRjNTk5MjQ6ICAgIHN0ciAgICByMCwgW3I3LCAjLTMyXQogICAg
ICAgIDB4YjRjNTk5Mjg6ICAgIHN0ciAgICByMSwgW3I3LCAjLTI4XQogICAgWyAyNTVdIGptcCAg
ICAgICAgICAgICAgIDQ1KC0+MzAwKQogICAgICAgIDB4YjRjNTk5MmM6ICAgIGIgICAgICAweGI0
YzU5YmQ4CiAgICBbIDI1N10gY2F0Y2ggICAgICAgICAgICAgbG9jOCwgbG9jOQogICAgICAgIDB4
YjRjNTk5MmU6ICAgIG1vdncgICByMywgIzMyNzY4CiAgICAgICAgMHhiNGM1OTkzMjogICAgbW92
dCAgIHIzLCAjNDYyMDcKICAgICAgICAweGI0YzU5OTM2OiAgICBtb3Z3ICAgcjYsICMxMzQxNgog
ICAgICAgIDB4YjRjNTk5M2E6ICAgIGxkciAgICByNywgW3IzLCByNl0KICAgICAgICAweGI0YzU5
OTNjOiAgICBtb3YgICAgcjEyLCAjMAogICAgICAgIDB4YjRjNTk5NDA6ICAgIG1vdncgICByNiwg
IzEzNDE2CiAgICAgICAgMHhiNGM1OTk0NDogICAgc3RyICAgIHIxMiwgW3IzLCByNl0KICAgICAg
ICAweGI0YzU5OTQ4OiAgICBtb3YgICAgc3AsIHI3CiAgICAgICAgMHhiNGM1OTk0YTogICAgbXZu
ICAgIHIxMiwgIzE4MwogICAgICAgIDB4YjRjNTk5NGU6ICAgIG1vdiAgICBzcCwgc3AKICAgICAg
ICAweGI0YzU5OTUwOiAgICBhZGQgICAgc3AsIHIxMgogICAgICAgIDB4YjRjNTk5NTI6ICAgIG1v
diAgICByMCwgcjcKICAgICAgICAweGI0YzU5OTU0OiAgICBtb3Z3ICAgcjEyLCAjNDg2NTYKICAg
ICAgICAweGI0YzU5OTU4OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzU5OTVj
OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzU5OTYwOiAgICBtb3Z3ICAg
cjYsICM0MjEyOAogICAgICAgIDB4YjRjNTk5NjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAg
ICAgMHhiNGM1OTk2ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1OTk2YTogICAg
bW92dyAgIHIxMiwgIzY0MjczCiAgICAgICAgMHhiNGM1OTk2ZTogICAgbW92dCAgIHIxMiwgIzQ2
Nzc2CiAgICAgICAgMHhiNGM1OTk3MjogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNTk5NzQ6
ICAgIHRzdCAgICByMCwgcjAKICAgICAgICAweGI0YzU5OTc2OiAgICBiZXEgICAgMHhiNGM1OTk4
NAogICAgICAgIDB4YjRjNTk5Nzg6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAgICAgMHhiNGM1
OTk3YzogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzU5OTgwOiAgICBsZHIgICAg
cjEsIFtyNl0KICAgICAgICAweGI0YzU5OTgyOiAgICBieCAgICAgcjEKICAgICAgICAweGI0YzU5
OTg0OiAgICBtb3Z3ICAgcjMsICMzMjc2OAogICAgICAgIDB4YjRjNTk5ODg6ICAgIG1vdnQgICBy
MywgIzQ2MjA3CiAgICAgICAgMHhiNGM1OTk4YzogICAgbW92dyAgIHI2LCAjMTM1ODAKICAgICAg
ICAweGI0YzU5OTkwOiAgICBsZHIgICAgcjIsIFtyMywgcjZdCiAgICAgICAgMHhiNGM1OTk5Mjog
ICAgbXZuICAgIHIxLCAjNAogICAgICAgIDB4YjRjNTk5OTY6ICAgIG1vdiAgICByMTIsICMwCiAg
ICAgICAgMHhiNGM1OTk5YTogICAgbW92dyAgIHI2LCAjMTM1ODAKICAgICAgICAweGI0YzU5OTll
OiAgICBzdHIgICAgcjEyLCBbcjMsIHI2XQogICAgICAgIDB4YjRjNTk5YTI6ICAgIHN0ciAgICBy
MiwgW3I3LCAjLTcyXQogICAgICAgIDB4YjRjNTk5YTY6ICAgIHN0ciAgICByMSwgW3I3LCAjLTY4
XQogICAgICAgIDB4YjRjNTk5YWE6ICAgIGxkciAgICByMCwgW3IyLCAjMTZdCiAgICAgICAgMHhi
NGM1OTlhYzogICAgbGRyICAgIHIxLCBbcjIsICMyMF0KICAgICAgICAweGI0YzU5OWFlOiAgICBz
dHIgICAgcjAsIFtyNywgIy04MF0KICAgICAgICAweGI0YzU5OWIyOiAgICBzdHIgICAgcjEsIFty
NywgIy03Nl0KICAgIFsgMjYwXSBtb3YgICAgICAgICAgICAgICBsb2MwLCBsb2M0CiAgICAgICAg
MHhiNGM1OTliNjogICAgbGRyICAgIHIwLCBbcjcsICMtNDBdCiAgICAgICAgMHhiNGM1OTliYTog
ICAgbGRyICAgIHIxLCBbcjcsICMtMzZdCiAgICAgICAgMHhiNGM1OTliZTogICAgc3RyICAgIHIw
LCBbcjcsICMtOF0KICAgICAgICAweGI0YzU5OWMyOiAgICBzdHIgICAgcjEsIFtyNywgIy00XQog
ICAgWyAyNjNdIGdldF9ieV9pZCAgICAgICAgIGxvYzEwLCBsb2M2LCByZXR1cm4oQGlkMTApICAg
IHByZWRpY3RpbmcgTm9uZQogICAgICAgIDB4YjRjNTk5YzY6ICAgIGxkciAgICByMCwgW3I3LCAj
LTU2XQogICAgICAgIDB4YjRjNTk5Y2E6ICAgIGxkciAgICByMSwgW3I3LCAjLTUyXQogICAgICAg
IDB4YjRjNTk5Y2U6ICAgIGNtbiAgICByMSwgIzUKICAgICAgICAweGI0YzU5OWQyOiAgICBibmUg
ICAgMHhiNGM1Yzc5NAogICAgICAgIDB4YjRjNTk5ZDY6ICAgIGxkciAgICByNiwgW3IwXQogICAg
ICAgIDB4YjRjNTk5ZDg6ICAgIG1vdncgICByMTIsICMwCiAgICAgICAgMHhiNGM1OTlkYzogICAg
bW92dCAgIHIxMiwgIzAKICAgICAgICAweGI0YzU5OWUwOiAgICBjbXAgICAgcjYsIHIxMgogICAg
ICAgIDB4YjRjNTk5ZTQ6ICAgIGl0dHQgICBuZQogICAgICAgIDB4YjRjNTk5ZTY6ICAgIG1vdndu
ZSByMTIsICM1MTA5MwogICAgICAgIDB4YjRjNTk5ZWE6ICAgIG1vdnRuZSByMTIsICM0NjI3Nwog
ICAgICAgIDB4YjRjNTk5ZWU6ICAgIGJ4bmUgICByMTIKICAgICAgICAweGI0YzU5OWYwOiAgICBs
ZHIgICAgcjEsIFtyMF0KICAgICAgICAweGI0YzU5OWY0OiAgICBsZHIgICAgcjAsIFtyMF0KICAg
ICAgICAweGI0YzU5OWY4OiAgICBzdHIgICAgcjAsIFtyNywgIy04OF0KICAgICAgICAweGI0YzU5
OWZjOiAgICBzdHIgICAgcjEsIFtyNywgIy04NF0KICAgIFsgMjcyXSBpc191bmRlZmluZWQgICAg
ICBsb2MxMSwgbG9jMTAKICAgICAgICAweGI0YzU5YTAwOiAgICBsZHIgICAgcjAsIFtyNywgIy04
OF0KICAgICAgICAweGI0YzU5YTA0OiAgICBsZHIgICAgcjEsIFtyNywgIy04NF0KICAgICAgICAw
eGI0YzU5YTA4OiAgICBjbW4gICAgcjEsICM1CiAgICAgICAgMHhiNGM1OWEwYzogICAgYmVxICAg
IDB4YjRjNTlhMWEKICAgICAgICAweGI0YzU5YTBlOiAgICBjbW4gICAgcjEsICM0CiAgICAgICAg
MHhiNGM1OWExMjogICAgaXRlICAgIGVxCiAgICAgICAgMHhiNGM1OWExNDogICAgbW92ZXEgIHIw
LCAjMQogICAgICAgIDB4YjRjNTlhMTY6ICAgIG1vdm5lICByMCwgIzAKICAgICAgICAweGI0YzU5
YTE4OiAgICBiICAgICAgMHhiNGM1OWEzYQogICAgICAgIDB4YjRjNTlhMWE6ICAgIGxkcmIgICBy
NiwgW3IwLCAjNl0KICAgICAgICAweGI0YzU5YTFjOiAgICB0c3QgICAgcjYsICMxCiAgICAgICAg
MHhiNGM1OWEyMDogICAgYm5lICAgIDB4YjRjNTlhMjYKICAgICAgICAweGI0YzU5YTIyOiAgICBt
b3ZzICAgcjAsICMwCiAgICAgICAgMHhiNGM1OWEyNDogICAgYiAgICAgIDB4YjRjNTlhM2EKICAg
ICAgICAweGI0YzU5YTI2OiAgICBsZHIgICAgcjEsIFtyMF0KICAgICAgICAweGI0YzU5YTI4OiAg
ICBtb3Z3ICAgcjAsICMzMDkxMgogICAgICAgIDB4YjRjNTlhMmM6ICAgIG1vdnQgICByMCwgIzQ2
MjA2CiAgICAgICAgMHhiNGM1OWEzMDogICAgbGRyICAgIHIxLCBbcjEsICMyMF0KICAgICAgICAw
eGI0YzU5YTMyOiAgICBjbXAgICAgcjAsIHIxCiAgICAgICAgMHhiNGM1OWEzNDogICAgaXRlICAg
IGVxCiAgICAgICAgMHhiNGM1OWEzNjogICAgbW92ZXEgIHIwLCAjMQogICAgICAgIDB4YjRjNTlh
Mzg6ICAgIG1vdm5lICByMCwgIzAKICAgICAgICAweGI0YzU5YTNhOiAgICBzdHIgICAgcjAsIFty
NywgIy05Nl0KICAgICAgICAweGI0YzU5YTNlOiAgICBtdm4gICAgcjEyLCAjMQogICAgICAgIDB4
YjRjNTlhNDI6ICAgIHN0ciAgICByMTIsIFtyNywgIy05Ml0KICAgIFsgMjc1XSBqdHJ1ZSAgICAg
ICAgICAgICBsb2MxMSwgMTUoLT4yOTApCiAgICAgICAgMHhiNGM1OWE0NjogICAgbGRyICAgIHIw
LCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1OWE0YTogICAgbGRyICAgIHIxLCBbcjcsICMtOTJd
CiAgICAgICAgMHhiNGM1OWE0ZTogICAgY21uICAgIHIxLCAjMgogICAgICAgIDB4YjRjNTlhNTI6
ICAgIGJsbyAgICAweGI0YzVjN2VhCiAgICAgICAgMHhiNGM1OWE1NjogICAgdHN0ICAgIHIwLCBy
MAogICAgICAgIDB4YjRjNTlhNTg6ICAgIGJuZSAgICAweGI0YzU5YWM4CiAgICBbIDI3OF0gbW92
ICAgICAgICAgICAgICAgbG9jMTMsIGxvYzYKICAgICAgICAweGI0YzU5YTVhOiAgICBsZHIgICAg
cjAsIFtyNywgIy01Nl0KICAgICAgICAweGI0YzU5YTVlOiAgICBsZHIgICAgcjEsIFtyNywgIy01
Ml0KICAgICAgICAweGI0YzU5YTYyOiAgICBzdHIgICAgcjAsIFtyNywgIy0xMTJdCiAgICAgICAg
MHhiNGM1OWE2NjogICAgc3RyICAgIHIxLCBbcjcsICMtMTA4XQogICAgWyAyODFdIGNhbGwgICAg
ICAgICAgICAgIGxvYzcsIGxvYzEwLCAxLCAxOCBzdGF0dXMoQ291bGQgVGFrZSBTbG93IFBhdGgp
ICAgIE9yaWdpbmFsOyBwcmVkaWN0aW5nIE5vbmUKICAgICAgICAweGI0YzU5YTZhOiAgICBtb3Yg
ICAgc3AsIHI3CiAgICAgICAgMHhiNGM1OWE2YzogICAgbXZuICAgIHIxMiwgIzEzNQogICAgICAg
IDB4YjRjNTlhNzA6ICAgIG1vdiAgICBzcCwgc3AKICAgICAgICAweGI0YzU5YTcyOiAgICBhZGQg
ICAgc3AsIHIxMgogICAgICAgIDB4YjRjNTlhNzQ6ICAgIG1vdiAgICByMTIsICMxCiAgICAgICAg
MHhiNGM1OWE3ODogICAgc3RyICAgIHIxMiwgW3NwLCAjMTZdCiAgICAgICAgMHhiNGM1OWE3Yzog
ICAgbW92dyAgIHIxMiwgIzQ4NzQ4CiAgICAgICAgMHhiNGM1OWE4MDogICAgbW92dCAgIHIxMiwg
IzQ1ODIyCiAgICAgICAgMHhiNGM1OWE4NDogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAg
ICAgMHhiNGM1OWE4ODogICAgbGRyICAgIHIwLCBbcjcsICMtODhdCiAgICAgICAgMHhiNGM1OWE4
YzogICAgbGRyICAgIHIxLCBbcjcsICMtODRdCiAgICAgICAgMHhiNGM1OWE5MDogICAgc3RyICAg
IHIwLCBbc3AsICM4XQogICAgICAgIDB4YjRjNTlhOTI6ICAgIHN0ciAgICByMSwgW3NwLCAjMTJd
CiAgICAgICAgMHhiNGM1OWE5NDogICAgY21uICAgIHIxLCAjNQogICAgICAgIDB4YjRjNTlhOTg6
ICAgIGJuZSAgICAweGI0YzVjODQ4CiAgICAgICAgMHhiNGM1OWE5YzogICAgbW92dyAgIHIxMiwg
IzAKICAgICAgICAweGI0YzU5YWEwOiAgICBtb3Z0ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNTlh
YTQ6ICAgIGNtcCAgICByMCwgcjEyCiAgICAgICAgMHhiNGM1OWFhODogICAgYm5lICAgIDB4YjRj
NWM4NDgKICAgICAgICAweGI0YzU5YWFjOiAgICBtb3Z3ICAgcjEyLCAjMAogICAgICAgIDB4YjRj
NTlhYjA6ICAgIG1vdnQgICByMTIsICMwCiAgICAgICAgMHhiNGM1OWFiNDogICAgYmx4ICAgIHIx
MgogICAgICAgIDB4YjRjNTlhYjY6ICAgIG1vdiAgICBzcCwgcjcKICAgICAgICAweGI0YzU5YWI4
OiAgICBtdm4gICAgcjEyLCAjMTgzCiAgICAgICAgMHhiNGM1OWFiYzogICAgbW92ICAgIHNwLCBz
cAogICAgICAgIDB4YjRjNTlhYmU6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAgICAgMHhiNGM1OWFj
MDogICAgc3RyICAgIHIwLCBbcjcsICMtNjRdCiAgICAgICAgMHhiNGM1OWFjNDogICAgc3RyICAg
IHIxLCBbcjcsICMtNjBdCiAgICBbIDI5MF0gdGhyb3cgICAgICAgICAgICAgbG9jOAogICAgICAg
IDB4YjRjNTlhYzg6ICAgIGxkciAgICByMCwgW3I3LCAjLTcyXQogICAgICAgIDB4YjRjNTlhY2M6
ICAgIGxkciAgICByMSwgW3I3LCAjLTY4XQogICAgICAgIDB4YjRjNTlhZDA6ICAgIG1vdiAgICBy
MiwgcjAKICAgICAgICAweGI0YzU5YWQyOiAgICBtb3YgICAgcjMsIHIxCiAgICAgICAgMHhiNGM1
OWFkNDogICAgbW92cyAgIHIxLCAjMAogICAgICAgIDB4YjRjNTlhZDY6ICAgIG1vdiAgICByMCwg
cjcKICAgICAgICAweGI0YzU5YWQ4OiAgICBtb3Z3ICAgcjEyLCAjNDg3ODgKICAgICAgICAweGI0
YzU5YWRjOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzU5YWUwOiAgICBzdHIg
ICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzU5YWU0OiAgICBtb3Z3ICAgcjYsICM0MjEy
OAogICAgICAgIDB4YjRjNTlhZTg6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1
OWFlYzogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1OWFlZTogICAgbW92dyAgIHIx
MiwgIzYyNTg5CiAgICAgICAgMHhiNGM1OWFmMjogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAg
ICAgMHhiNGM1OWFmNjogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNTlhZjg6ICAgIG1vdncg
ICByNiwgIzQ2MTg4CiAgICAgICAgMHhiNGM1OWFmYzogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
ICAgICAweGI0YzU5YjAwOiAgICBsZHIgICAgcjEsIFtyNl0KICAgICAgICAweGI0YzU5YjAyOiAg
ICBieCAgICAgcjEKICAgIFsgMjkyXSBjYXRjaCAgICAgICAgICAgICBsb2MxNCwgbG9jMTQKICAg
ICAgICAweGI0YzU5YjA0OiAgICBtb3Z3ICAgcjMsICMzMjc2OAogICAgICAgIDB4YjRjNTliMDg6
ICAgIG1vdnQgICByMywgIzQ2MjA3CiAgICAgICAgMHhiNGM1OWIwYzogICAgbW92dyAgIHI2LCAj
MTM0MTYKICAgICAgICAweGI0YzU5YjEwOiAgICBsZHIgICAgcjcsIFtyMywgcjZdCiAgICAgICAg
MHhiNGM1OWIxMjogICAgbW92ICAgIHIxMiwgIzAKICAgICAgICAweGI0YzU5YjE2OiAgICBtb3Z3
ICAgcjYsICMxMzQxNgogICAgICAgIDB4YjRjNTliMWE6ICAgIHN0ciAgICByMTIsIFtyMywgcjZd
CiAgICAgICAgMHhiNGM1OWIxZTogICAgbW92ICAgIHNwLCByNwogICAgICAgIDB4YjRjNTliMjA6
ICAgIG12biAgICByMTIsICMxODMKICAgICAgICAweGI0YzU5YjI0OiAgICBtb3YgICAgc3AsIHNw
CiAgICAgICAgMHhiNGM1OWIyNjogICAgYWRkICAgIHNwLCByMTIKICAgICAgICAweGI0YzU5YjI4
OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1OWIyYTogICAgbW92dyAgIHIxMiwgIzQ4
Nzk2CiAgICAgICAgMHhiNGM1OWIyZTogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhi
NGM1OWIzMjogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1OWIzNjogICAg
bW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzU5YjNhOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgICAgIDB4YjRjNTliM2U6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNTli
NDA6ICAgIG1vdncgICByMTIsICM2NDI3MwogICAgICAgIDB4YjRjNTliNDQ6ICAgIG1vdnQgICBy
MTIsICM0Njc3NgogICAgICAgIDB4YjRjNTliNDg6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0
YzU5YjRhOiAgICB0c3QgICAgcjAsIHIwCiAgICAgICAgMHhiNGM1OWI0YzogICAgYmVxICAgIDB4
YjRjNTliNWEKICAgICAgICAweGI0YzU5YjRlOiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAgICAg
IDB4YjRjNTliNTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1OWI1NjogICAg
bGRyICAgIHIxLCBbcjZdCiAgICAgICAgMHhiNGM1OWI1ODogICAgYnggICAgIHIxCiAgICAgICAg
MHhiNGM1OWI1YTogICAgbW92dyAgIHIzLCAjMzI3NjgKICAgICAgICAweGI0YzU5YjVlOiAgICBt
b3Z0ICAgcjMsICM0NjIwNwogICAgICAgIDB4YjRjNTliNjI6ICAgIG1vdncgICByNiwgIzEzNTgw
CiAgICAgICAgMHhiNGM1OWI2NjogICAgbGRyICAgIHIyLCBbcjMsIHI2XQogICAgICAgIDB4YjRj
NTliNjg6ICAgIG12biAgICByMSwgIzQKICAgICAgICAweGI0YzU5YjZjOiAgICBtb3YgICAgcjEy
LCAjMAogICAgICAgIDB4YjRjNTliNzA6ICAgIG1vdncgICByNiwgIzEzNTgwCiAgICAgICAgMHhi
NGM1OWI3NDogICAgc3RyICAgIHIxMiwgW3IzLCByNl0KICAgICAgICAweGI0YzU5Yjc4OiAgICBz
dHIgICAgcjIsIFtyNywgIy0xMjBdCiAgICAgICAgMHhiNGM1OWI3YzogICAgc3RyICAgIHIxLCBb
cjcsICMtMTE2XQogICAgICAgIDB4YjRjNTliODA6ICAgIGxkciAgICByMCwgW3IyLCAjMTZdCiAg
ICAgICAgMHhiNGM1OWI4MjogICAgbGRyICAgIHIxLCBbcjIsICMyMF0KICAgICAgICAweGI0YzU5
Yjg0OiAgICBzdHIgICAgcjAsIFtyNywgIy0xMjBdCiAgICAgICAgMHhiNGM1OWI4ODogICAgc3Ry
ICAgIHIxLCBbcjcsICMtMTE2XQogICAgWyAyOTVdIG1vdiAgICAgICAgICAgICAgIGxvYzAsIGxv
YzQKICAgICAgICAweGI0YzU5YjhjOiAgICBsZHIgICAgcjAsIFtyNywgIy00MF0KICAgICAgICAw
eGI0YzU5YjkwOiAgICBsZHIgICAgcjEsIFtyNywgIy0zNl0KICAgICAgICAweGI0YzU5Yjk0OiAg
ICBzdHIgICAgcjAsIFtyNywgIy04XQogICAgICAgIDB4YjRjNTliOTg6ICAgIHN0ciAgICByMSwg
W3I3LCAjLTRdCiAgICBbIDI5OF0gdGhyb3cgICAgICAgICAgICAgbG9jOAogICAgICAgIDB4YjRj
NTliOWM6ICAgIGxkciAgICByMCwgW3I3LCAjLTcyXQogICAgICAgIDB4YjRjNTliYTA6ICAgIGxk
ciAgICByMSwgW3I3LCAjLTY4XQogICAgICAgIDB4YjRjNTliYTQ6ICAgIG1vdiAgICByMiwgcjAK
ICAgICAgICAweGI0YzU5YmE2OiAgICBtb3YgICAgcjMsIHIxCiAgICAgICAgMHhiNGM1OWJhODog
ICAgbW92cyAgIHIxLCAjMAogICAgICAgIDB4YjRjNTliYWE6ICAgIG1vdiAgICByMCwgcjcKICAg
ICAgICAweGI0YzU5YmFjOiAgICBtb3Z3ICAgcjEyLCAjNDg4MjAKICAgICAgICAweGI0YzU5YmIw
OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzU5YmI0OiAgICBzdHIgICAgcjEy
LCBbcjcsICMyOF0KICAgICAgICAweGI0YzU5YmI4OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAg
ICAgIDB4YjRjNTliYmM6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1OWJjMDog
ICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1OWJjMjogICAgbW92dyAgIHIxMiwgIzYy
NTg5CiAgICAgICAgMHhiNGM1OWJjNjogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAgICAgMHhi
NGM1OWJjYTogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNTliY2M6ICAgIG1vdncgICByNiwg
IzQ2MTg4CiAgICAgICAgMHhiNGM1OWJkMDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAw
eGI0YzU5YmQ0OiAgICBsZHIgICAgcjEsIFtyNl0KICAgICAgICAweGI0YzU5YmQ2OiAgICBieCAg
ICAgcjEKICAgIFsgMzAwXSBnZXRfZnJvbV9zY29wZSAgICBsb2M4LCBsb2M0LCBjYXNlU3RyaW5n
KEBpZDcpLCAxMDUwNjI3PERvTm90VGhyb3dJZk5vdEZvdW5kfENsb3N1cmVWYXJ8Tm90SW5pdGlh
bGl6YXRpb24+LCAwICAgIHByZWRpY3RpbmcgU3RyaW5naWRlbnQKICAgICAgICAweGI0YzU5YmQ4
OiAgICBsZHIgICAgcjAsIFtyNywgIy00MF0KICAgICAgICAweGI0YzU5YmRjOiAgICBsZHIgICAg
cjEsIFtyNywgIy0zNl0KICAgICAgICAweGI0YzU5YmUwOiAgICBsZHIgICAgcjEsIFtyMCwgIzI4
XQogICAgICAgIDB4YjRjNTliZTI6ICAgIGxkciAgICByMCwgW3IwLCAjMjRdCiAgICAgICAgMHhi
NGM1OWJlNDogICAgc3RyICAgIHIwLCBbcjcsICMtNzJdCiAgICAgICAgMHhiNGM1OWJlODogICAg
c3RyICAgIHIxLCBbcjcsICMtNjhdCiAgICBbIDMwOF0gZ2V0X3BhcmVudF9zY29wZSAgbG9jOSwg
bG9jNAogICAgICAgIDB4YjRjNTliZWM6ICAgIGxkciAgICByMCwgW3I3LCAjLTQwXQogICAgICAg
IDB4YjRjNTliZjA6ICAgIGxkciAgICByMCwgW3IwLCAjMTZdCiAgICAgICAgMHhiNGM1OWJmMjog
ICAgc3RyICAgIHIwLCBbcjcsICMtODBdCiAgICAgICAgMHhiNGM1OWJmNjogICAgbXZuICAgIHIx
MiwgIzQKICAgICAgICAweGI0YzU5YmZhOiAgICBzdHIgICAgcjEyLCBbcjcsICMtNzZdCiAgICBb
IDMxMV0gbW92ICAgICAgICAgICAgICAgbG9jMCwgbG9jOQogICAgICAgIDB4YjRjNTliZmU6ICAg
IGxkciAgICByMCwgW3I3LCAjLTgwXQogICAgICAgIDB4YjRjNTljMDI6ICAgIGxkciAgICByMSwg
W3I3LCAjLTc2XQogICAgICAgIDB4YjRjNTljMDY6ICAgIHN0ciAgICByMCwgW3I3LCAjLThdCiAg
ICAgICAgMHhiNGM1OWMwYTogICAgc3RyICAgIHIxLCBbcjcsICMtNF0KICAgIFsgMzE0XSBjcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudCBsb2M0LCBsb2MwLCBDZWxsOiAweGI0N2I2ZDQwICgweGI0
N2Y3YTQwOltTeW1ib2xUYWJsZSwge30sIE5vbkFycmF5LCBMZWFmXSkoY29uc3QyMyksIDxKU1Zh
bHVlKCk+KGNvbnN0MSkKICAgICAgICAweGI0YzU5YzBlOiAgICBtb3Z3ICAgcjEyLCAjNDg4ODQK
ICAgICAgICAweGI0YzU5YzEyOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzU5
YzE2OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzU5YzFhOiAgICBtb3Z3
ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNTljMWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAgICAgMHhiNGM1OWMyMjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1OWMyNDog
ICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNTljMjY6ICAgIG1vdncgICByMSwgIzQ4ODgw
CiAgICAgICAgMHhiNGM1OWMyYTogICAgbW92dCAgIHIxLCAjNDU4MjIKICAgICAgICAweGI0YzU5
YzJlOiAgICBtb3Z3ICAgcjEyLCAjMjI5MzcKICAgICAgICAweGI0YzU5YzMyOiAgICBtb3Z0ICAg
cjEyLCAjNDY3OTMKICAgICAgICAweGI0YzU5YzM2OiAgICBibHggICAgcjEyCiAgICAgICAgMHhi
NGM1OWMzODogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzU5YzNjOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNTljNDA6ICAgIGxkciAgICByNiwgW3I2XQogICAg
ICAgIDB4YjRjNTljNDI6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzU5YzQ0OiAgICBi
bmUgICAgMHhiNGM1ZTY4MAogICAgWyAzMTldIG1vdiAgICAgICAgICAgICAgIGxvYzAsIGxvYzQK
ICAgICAgICAweGI0YzU5YzQ4OiAgICBsZHIgICAgcjAsIFtyNywgIy00MF0KICAgICAgICAweGI0
YzU5YzRjOiAgICBsZHIgICAgcjEsIFtyNywgIy0zNl0KICAgICAgICAweGI0YzU5YzUwOiAgICBz
dHIgICAgcjAsIFtyNywgIy04XQogICAgICAgIDB4YjRjNTljNTQ6ICAgIHN0ciAgICByMSwgW3I3
LCAjLTRdCiAgICBbIDMyMl0gcHV0X3RvX3Njb3BlICAgICAgbG9jNCwgY2FzZVN0cmluZyhAaWQ3
KSwgbG9jOCwgMTA1MDYyODxEb05vdFRocm93SWZOb3RGb3VuZHxMb2NhbENsb3N1cmVWYXJ8Tm90
SW5pdGlhbGl6YXRpb24+LCA8c3RydWN0dXJlPiwgMAogICAgICAgIDB4YjRjNTljNTg6ICAgIGxk
ciAgICByMCwgW3I3LCAjLTY4XQogICAgICAgIDB4YjRjNTljNWM6ICAgIGNtbiAgICByMCwgIzUK
ICAgICAgICAweGI0YzU5YzYwOiAgICBibmUgICAgMHhiNGM1OWNhMgogICAgICAgIDB4YjRjNTlj
NjI6ICAgIGxkciAgICByMSwgW3I3LCAjLTQwXQogICAgICAgIDB4YjRjNTljNjY6ICAgIGxkciAg
ICByMCwgW3I3LCAjLTM2XQogICAgICAgIDB4YjRjNTljNmE6ICAgIGxkcmIgICByNiwgW3IxLCAj
N10KICAgICAgICAweGI0YzU5YzZjOiAgICB0c3QgICAgcjYsIHI2CiAgICAgICAgMHhiNGM1OWM2
ZTogICAgYm5lICAgIDB4YjRjNTljYTIKICAgICAgICAweGI0YzU5YzcwOiAgICBtb3YgICAgcjAs
IHI3CiAgICAgICAgMHhiNGM1OWM3MjogICAgbW92dyAgIHIxMiwgIzQ4OTE2CiAgICAgICAgMHhi
NGM1OWM3NjogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1OWM3YTogICAgc3Ry
ICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1OWM3ZTogICAgbW92dyAgIHI2LCAjNDIx
MjgKICAgICAgICAweGI0YzU5YzgyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRj
NTljODY6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNTljODg6ICAgIG1vdncgICBy
MTIsICM2MzE3NwogICAgICAgIDB4YjRjNTljOGM6ICAgIG1vdnQgICByMTIsICM0Njc3NgogICAg
ICAgIDB4YjRjNTljOTA6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzU5YzkyOiAgICBtb3Z3
ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNTljOTY6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAgICAgMHhiNGM1OWM5YTogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1OWM5Yzog
ICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNTljOWU6ICAgIGJuZSAgICAweGI0YzVlNjgw
CiAgICAgICAgMHhiNGM1OWNhMjogICAgbGRyICAgIHIyLCBbcjcsICMtNzJdCiAgICAgICAgMHhi
NGM1OWNhNjogICAgbGRyICAgIHIzLCBbcjcsICMtNjhdCiAgICAgICAgMHhiNGM1OWNhYTogICAg
bGRyICAgIHIwLCBbcjcsICMtNDBdCiAgICAgICAgMHhiNGM1OWNhZTogICAgbGRyICAgIHIxLCBb
cjcsICMtMzZdCiAgICAgICAgMHhiNGM1OWNiMjogICAgc3RyICAgIHIzLCBbcjAsICMyOF0KICAg
ICAgICAweGI0YzU5Y2I0OiAgICBzdHIgICAgcjIsIFtyMCwgIzI0XQogICAgWyAzMjldIGdldF9i
eV9pZCAgICAgICAgIGxvYzgsIGxvYzYsIG5leHQoQGlkMTEpICAgIHByZWRpY3RpbmcgRnVuY3Rp
b24KICAgICAgICAweGI0YzU5Y2I2OiAgICBsZHIgICAgcjAsIFtyNywgIy01Nl0KICAgICAgICAw
eGI0YzU5Y2JhOiAgICBsZHIgICAgcjEsIFtyNywgIy01Ml0KICAgICAgICAweGI0YzU5Y2JlOiAg
ICBjbW4gICAgcjEsICM1CiAgICAgICAgMHhiNGM1OWNjMjogICAgYm5lICAgIDB4YjRjNWM4NzAK
ICAgICAgICAweGI0YzU5Y2M2OiAgICBsZHIgICAgcjYsIFtyMF0KICAgICAgICAweGI0YzU5Y2M4
OiAgICBtb3Z3ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNTljY2M6ICAgIG1vdnQgICByMTIsICMw
CiAgICAgICAgMHhiNGM1OWNkMDogICAgY21wICAgIHI2LCByMTIKICAgICAgICAweGI0YzU5Y2Q0
OiAgICBpdHR0ICAgbmUKICAgICAgICAweGI0YzU5Y2Q2OiAgICBtb3Z3bmUgcjEyLCAjNTEzMTMK
ICAgICAgICAweGI0YzU5Y2RhOiAgICBtb3Z0bmUgcjEyLCAjNDYyNzcKICAgICAgICAweGI0YzU5
Y2RlOiAgICBieG5lICAgcjEyCiAgICAgICAgMHhiNGM1OWNlMDogICAgbGRyICAgIHIxLCBbcjBd
CiAgICAgICAgMHhiNGM1OWNlNDogICAgbGRyICAgIHIwLCBbcjBdCiAgICAgICAgMHhiNGM1OWNl
ODogICAgc3RyICAgIHIwLCBbcjcsICMtNzJdCiAgICAgICAgMHhiNGM1OWNlYzogICAgc3RyICAg
IHIxLCBbcjcsICMtNjhdCiAgICBbIDMzOF0gbW92ICAgICAgICAgICAgICAgbG9jMTEsIGxvYzYK
ICAgICAgICAweGI0YzU5Y2YwOiAgICBsZHIgICAgcjAsIFtyNywgIy01Nl0KICAgICAgICAweGI0
YzU5Y2Y0OiAgICBsZHIgICAgcjEsIFtyNywgIy01Ml0KICAgICAgICAweGI0YzU5Y2Y4OiAgICBz
dHIgICAgcjAsIFtyNywgIy05Nl0KICAgICAgICAweGI0YzU5Y2ZjOiAgICBzdHIgICAgcjEsIFty
NywgIy05Ml0KICAgIFsgMzQxXSBjYWxsICAgICAgICAgICAgICBsb2M3LCBsb2M4LCAxLCAxNiBs
bGludCgweGI0N2YwY2MwLCBleGVjIDB4YjQ3ZDU5YzApIHN0YXR1cygoRnVuY3Rpb246IENlbGw6
IDB4YjQ3ZjBjYzAgKDB4YjQ3ZjZlMTA6W0Z1bmN0aW9uLCB7bmFtZToxMDAsIGxlbmd0aDoxMDF9
LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMCwgTGVhZl0pOyBFeGVjdXRhYmxlOiBuZXh0I0FV
TWtORDpbMHhiNDdhM2QyMC0+MHhiNDdkNTljMCwgTExJbnRGdW5jdGlvbkNhbGwsIDI0OSAoU3Ry
aWN0TW9kZSldKSkgICAgTm9uQXJyYXk7IHByZWRpY3RpbmcgRmluYWwKICAgICAgICAweGI0YzU5
ZDAwOiAgICBtb3YgICAgc3AsIHI3CiAgICAgICAgMHhiNGM1OWQwMjogICAgbXZuICAgIHIxMiwg
IzExOQogICAgICAgIDB4YjRjNTlkMDY6ICAgIG1vdiAgICBzcCwgc3AKICAgICAgICAweGI0YzU5
ZDA4OiAgICBhZGQgICAgc3AsIHIxMgogICAgICAgIDB4YjRjNTlkMGE6ICAgIG1vdiAgICByMTIs
ICMxCiAgICAgICAgMHhiNGM1OWQwZTogICAgc3RyICAgIHIxMiwgW3NwLCAjMTZdCiAgICAgICAg
MHhiNGM1OWQxMjogICAgbW92dyAgIHIxMiwgIzQ4OTg4CiAgICAgICAgMHhiNGM1OWQxNjogICAg
bW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1OWQxYTogICAgc3RyICAgIHIxMiwgW3I3
LCAjMjhdCiAgICAgICAgMHhiNGM1OWQxZTogICAgbGRyICAgIHIwLCBbcjcsICMtNzJdCiAgICAg
ICAgMHhiNGM1OWQyMjogICAgbGRyICAgIHIxLCBbcjcsICMtNjhdCiAgICAgICAgMHhiNGM1OWQy
NjogICAgc3RyICAgIHIwLCBbc3AsICM4XQogICAgICAgIDB4YjRjNTlkMjg6ICAgIHN0ciAgICBy
MSwgW3NwLCAjMTJdCiAgICAgICAgMHhiNGM1OWQyYTogICAgY21uICAgIHIxLCAjNQogICAgICAg
IDB4YjRjNTlkMmU6ICAgIGJuZSAgICAweGI0YzVjOGM2CiAgICAgICAgMHhiNGM1OWQzMjogICAg
bW92dyAgIHIxMiwgIzAKICAgICAgICAweGI0YzU5ZDM2OiAgICBtb3Z0ICAgcjEyLCAjMAogICAg
ICAgIDB4YjRjNTlkM2E6ICAgIGNtcCAgICByMCwgcjEyCiAgICAgICAgMHhiNGM1OWQzZTogICAg
Ym5lICAgIDB4YjRjNWM4YzYKICAgICAgICAweGI0YzU5ZDQyOiAgICBtb3Z3ICAgcjEyLCAjMAog
ICAgICAgIDB4YjRjNTlkNDY6ICAgIG1vdnQgICByMTIsICMwCiAgICAgICAgMHhiNGM1OWQ0YTog
ICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNTlkNGM6ICAgIG1vdiAgICBzcCwgcjcKICAgICAg
ICAweGI0YzU5ZDRlOiAgICBtdm4gICAgcjEyLCAjMTgzCiAgICAgICAgMHhiNGM1OWQ1MjogICAg
bW92ICAgIHNwLCBzcAogICAgICAgIDB4YjRjNTlkNTQ6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAg
ICAgMHhiNGM1OWQ1NjogICAgc3RyICAgIHIwLCBbcjcsICMtNjRdCiAgICAgICAgMHhiNGM1OWQ1
YTogICAgc3RyICAgIHIxLCBbcjcsICMtNjBdCiAgICBbIDM1MF0gaXNfb2JqZWN0ICAgICAgICAg
bG9jOCwgbG9jNwogICAgICAgIDB4YjRjNTlkNWU6ICAgIGxkciAgICByMCwgW3I3LCAjLTY0XQog
ICAgICAgIDB4YjRjNTlkNjI6ICAgIGxkciAgICByMSwgW3I3LCAjLTYwXQogICAgICAgIDB4YjRj
NTlkNjY6ICAgIGNtbiAgICByMSwgIzUKICAgICAgICAweGI0YzU5ZDZhOiAgICBibmUgICAgMHhi
NGM1OWQ3OAogICAgICAgIDB4YjRjNTlkNmM6ICAgIGxkcmIgICByNiwgW3IwLCAjNV0KICAgICAg
ICAweGI0YzU5ZDZlOiAgICBjbXAgICAgcjIsICMyMAogICAgICAgIDB4YjRjNTlkNzA6ICAgIGl0
ZSAgICBocwogICAgICAgIDB4YjRjNTlkNzI6ICAgIG1vdmhzICByMCwgIzEKICAgICAgICAweGI0
YzU5ZDc0OiAgICBtb3ZsbyAgcjAsICMwCiAgICAgICAgMHhiNGM1OWQ3NjogICAgYiAgICAgIDB4
YjRjNTlkN2EKICAgICAgICAweGI0YzU5ZDc4OiAgICBtb3ZzICAgcjAsICMwCiAgICAgICAgMHhi
NGM1OWQ3YTogICAgc3RyICAgIHIwLCBbcjcsICMtNzJdCiAgICAgICAgMHhiNGM1OWQ3ZTogICAg
bXZuICAgIHIxMiwgIzEKICAgICAgICAweGI0YzU5ZDgyOiAgICBzdHIgICAgcjEyLCBbcjcsICMt
NjhdCiAgICBbIDM1M10ganRydWUgICAgICAgICAgICAgbG9jOCwgNigtPjM1OSkKICAgICAgICAw
eGI0YzU5ZDg2OiAgICBsZHIgICAgcjAsIFtyNywgIy03Ml0KICAgICAgICAweGI0YzU5ZDhhOiAg
ICBsZHIgICAgcjEsIFtyNywgIy02OF0KICAgICAgICAweGI0YzU5ZDhlOiAgICBjbW4gICAgcjEs
ICMyCiAgICAgICAgMHhiNGM1OWQ5MjogICAgYmxvICAgIDB4YjRjNWM4ZWUKICAgICAgICAweGI0
YzU5ZDk2OiAgICB0c3QgICAgcjAsIHIwCiAgICAgICAgMHhiNGM1OWQ5ODogICAgYm5lICAgIDB4
YjRjNTlkZTYKICAgIFsgMzU2XSB0aHJvd19zdGF0aWNfZXJyb3IgU3RyaW5nIChhdG9taWMpIChp
ZGVudGlmaWVyKTogSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0Lihj
b25zdDI0KSwgZmFsc2UKICAgICAgICAweGI0YzU5ZDlhOiAgICBtb3Z3ICAgcjAsICMzNDgxNgog
ICAgICAgIDB4YjRjNTlkOWU6ICAgIG1vdnQgICByMCwgIzQ2MjA0CiAgICAgICAgMHhiNGM1OWRh
MjogICAgbXZuICAgIHIxLCAjNAogICAgICAgIDB4YjRjNTlkYTY6ICAgIG1vdiAgICByMTIsICMw
CiAgICAgICAgMHhiNGM1OWRhYTogICAgc3RyICAgIHIxMiwgW3NwXQogICAgICAgIDB4YjRjNTlk
YWU6ICAgIG1vdiAgICByMiwgcjAKICAgICAgICAweGI0YzU5ZGIwOiAgICBtb3YgICAgcjMsIHIx
CiAgICAgICAgMHhiNGM1OWRiMjogICAgbW92cyAgIHIxLCAjMAogICAgICAgIDB4YjRjNTlkYjQ6
ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzU5ZGI2OiAgICBtb3Z3ICAgcjEyLCAjNDkw
NTIKICAgICAgICAweGI0YzU5ZGJhOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0
YzU5ZGJlOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzU5ZGMyOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNTlkYzY6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAgICAgMHhiNGM1OWRjYTogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1OWRj
YzogICAgbW92dyAgIHIxMiwgIzU5Mzk3CiAgICAgICAgMHhiNGM1OWRkMDogICAgbW92dCAgIHIx
MiwgIzQ2Nzc2CiAgICAgICAgMHhiNGM1OWRkNDogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRj
NTlkZDY6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1OWRkYTogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgICAgICAweGI0YzU5ZGRlOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAg
ICAweGI0YzU5ZGUwOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1OWRlMjogICAgYm5l
ICAgIDB4YjRjNWU2ODAKICAgIFsgMzU5XSBnZXRfYnlfaWQgICAgICAgICBsb2M4LCBsb2M3LCBk
b25lKEBpZDEyKSBsbGludChzdHJ1Y3QgPSAweGI0N2MxNWIwIChvZmZzZXQgPSAwKSkgICAgcHJl
ZGljdGluZyBCb29sCiAgICAgICAgMHhiNGM1OWRlNjogICAgbGRyICAgIHIwLCBbcjcsICMtNjRd
CiAgICAgICAgMHhiNGM1OWRlYTogICAgbGRyICAgIHIxLCBbcjcsICMtNjBdCiAgICAgICAgMHhi
NGM1OWRlZTogICAgY21uICAgIHIxLCAjNQogICAgICAgIDB4YjRjNTlkZjI6ICAgIGJuZSAgICAw
eGI0YzVjOTRjCiAgICAgICAgMHhiNGM1OWRmNjogICAgbGRyICAgIHI2LCBbcjBdCiAgICAgICAg
MHhiNGM1OWRmODogICAgbW92dyAgIHIxMiwgIzAKICAgICAgICAweGI0YzU5ZGZjOiAgICBtb3Z0
ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNTllMDA6ICAgIGNtcCAgICByNiwgcjEyCiAgICAgICAg
MHhiNGM1OWUwNDogICAgaXR0dCAgIG5lCiAgICAgICAgMHhiNGM1OWUwNjogICAgbW92d25lIHIx
MiwgIzUxNTMzCiAgICAgICAgMHhiNGM1OWUwYTogICAgbW92dG5lIHIxMiwgIzQ2Mjc3CiAgICAg
ICAgMHhiNGM1OWUwZTogICAgYnhuZSAgIHIxMgogICAgICAgIDB4YjRjNTllMTA6ICAgIGxkciAg
ICByMSwgW3IwXQogICAgICAgIDB4YjRjNTllMTQ6ICAgIGxkciAgICByMCwgW3IwXQogICAgICAg
IDB4YjRjNTllMTg6ICAgIHN0ciAgICByMCwgW3I3LCAjLTcyXQogICAgICAgIDB4YjRjNTllMWM6
ICAgIHN0ciAgICByMSwgW3I3LCAjLTY4XQogICAgWyAzNjhdIGp0cnVlICAgICAgICAgICAgIGxv
YzgsIDUwKC0+NDE4KQogICAgICAgIDB4YjRjNTllMjA6ICAgIGxkciAgICByMCwgW3I3LCAjLTcy
XQogICAgICAgIDB4YjRjNTllMjQ6ICAgIGxkciAgICByMSwgW3I3LCAjLTY4XQogICAgICAgIDB4
YjRjNTllMjg6ICAgIGNtbiAgICByMSwgIzIKICAgICAgICAweGI0YzU5ZTJjOiAgICBibG8gICAg
MHhiNGM1YzlhMgogICAgICAgIDB4YjRjNTllMzA6ICAgIHRzdCAgICByMCwgcjAKICAgICAgICAw
eGI0YzU5ZTMyOiAgICBibmUgICAgMHhiNGM1OWZmZQogICAgWyAzNzFdIGdldF9ieV9pZCAgICAg
ICAgIGxvYzcsIGxvYzcsIHZhbHVlKEBpZDEzKSBsbGludChzdHJ1Y3QgPSAweGI0N2MxNWIwIChv
ZmZzZXQgPSAxKSkgICAgcHJlZGljdGluZyBTdHJpbmdpZGVudAogICAgICAgIDB4YjRjNTllMzY6
ICAgIGxkciAgICByMCwgW3I3LCAjLTY0XQogICAgICAgIDB4YjRjNTllM2E6ICAgIGxkciAgICBy
MSwgW3I3LCAjLTYwXQogICAgICAgIDB4YjRjNTllM2U6ICAgIGNtbiAgICByMSwgIzUKICAgICAg
ICAweGI0YzU5ZTQyOiAgICBibmUgICAgMHhiNGM1Y2EwMAogICAgICAgIDB4YjRjNTllNDY6ICAg
IGxkciAgICByNiwgW3IwXQogICAgICAgIDB4YjRjNTllNDg6ICAgIG1vdncgICByMTIsICMwCiAg
ICAgICAgMHhiNGM1OWU0YzogICAgbW92dCAgIHIxMiwgIzAKICAgICAgICAweGI0YzU5ZTUwOiAg
ICBjbXAgICAgcjYsIHIxMgogICAgICAgIDB4YjRjNTllNTQ6ICAgIGl0dHQgICBuZQogICAgICAg
IDB4YjRjNTllNTY6ICAgIG1vdnduZSByMTIsICM1MTcxMwogICAgICAgIDB4YjRjNTllNWE6ICAg
IG1vdnRuZSByMTIsICM0NjI3NwogICAgICAgIDB4YjRjNTllNWU6ICAgIGJ4bmUgICByMTIKICAg
ICAgICAweGI0YzU5ZTYwOiAgICBsZHIgICAgcjEsIFtyMF0KICAgICAgICAweGI0YzU5ZTY0OiAg
ICBsZHIgICAgcjAsIFtyMF0KICAgICAgICAweGI0YzU5ZTY4OiAgICBzdHIgICAgcjAsIFtyNywg
Iy02NF0KICAgICAgICAweGI0YzU5ZTZjOiAgICBzdHIgICAgcjEsIFtyNywgIy02MF0KICAgIFsg
MzgwXSBqbXAgICAgICAgICAgICAgICAtMTk4KC0+MTgyKQogICAgICAgIDB4YjRjNTllNzA6ICAg
IGIgICAgICAweGI0YzVhNmZhCiAgICBbIDM4Ml0gZ2V0X2J5X2lkICAgICAgICAgbG9jNywgbG9j
NiwgcmV0dXJuKEBpZDEwKSAgICBwcmVkaWN0aW5nIE5vbmUKICAgICAgICAweGI0YzU5ZTcyOiAg
ICBsZHIgICAgcjAsIFtyNywgIy01Nl0KICAgICAgICAweGI0YzU5ZTc2OiAgICBsZHIgICAgcjEs
IFtyNywgIy01Ml0KICAgICAgICAweGI0YzU5ZTdhOiAgICBjbW4gICAgcjEsICM1CiAgICAgICAg
MHhiNGM1OWU3ZTogICAgYm5lICAgIDB4YjRjNWNhNTYKICAgICAgICAweGI0YzU5ZTgyOiAgICBs
ZHIgICAgcjYsIFtyMF0KICAgICAgICAweGI0YzU5ZTg0OiAgICBtb3Z3ICAgcjEyLCAjMAogICAg
ICAgIDB4YjRjNTllODg6ICAgIG1vdnQgICByMTIsICMwCiAgICAgICAgMHhiNGM1OWU4YzogICAg
Y21wICAgIHI2LCByMTIKICAgICAgICAweGI0YzU5ZTkwOiAgICBpdHR0ICAgbmUKICAgICAgICAw
eGI0YzU5ZTkyOiAgICBtb3Z3bmUgcjEyLCAjNTE3OTkKICAgICAgICAweGI0YzU5ZTk2OiAgICBt
b3Z0bmUgcjEyLCAjNDYyNzcKICAgICAgICAweGI0YzU5ZTlhOiAgICBieG5lICAgcjEyCiAgICAg
ICAgMHhiNGM1OWU5YzogICAgbGRyICAgIHIxLCBbcjBdCiAgICAgICAgMHhiNGM1OWVhMDogICAg
bGRyICAgIHIwLCBbcjBdCiAgICAgICAgMHhiNGM1OWVhNDogICAgc3RyICAgIHIwLCBbcjcsICMt
NjRdCiAgICAgICAgMHhiNGM1OWVhODogICAgc3RyICAgIHIxLCBbcjcsICMtNjBdCiAgICBbIDM5
MV0gaXNfdW5kZWZpbmVkICAgICAgbG9jOCwgbG9jNwogICAgICAgIDB4YjRjNTllYWM6ICAgIGxk
ciAgICByMCwgW3I3LCAjLTY0XQogICAgICAgIDB4YjRjNTllYjA6ICAgIGxkciAgICByMSwgW3I3
LCAjLTYwXQogICAgICAgIDB4YjRjNTllYjQ6ICAgIGNtbiAgICByMSwgIzUKICAgICAgICAweGI0
YzU5ZWI4OiAgICBiZXEgICAgMHhiNGM1OWVjNgogICAgICAgIDB4YjRjNTllYmE6ICAgIGNtbiAg
ICByMSwgIzQKICAgICAgICAweGI0YzU5ZWJlOiAgICBpdGUgICAgZXEKICAgICAgICAweGI0YzU5
ZWMwOiAgICBtb3ZlcSAgcjAsICMxCiAgICAgICAgMHhiNGM1OWVjMjogICAgbW92bmUgIHIwLCAj
MAogICAgICAgIDB4YjRjNTllYzQ6ICAgIGIgICAgICAweGI0YzU5ZWU2CiAgICAgICAgMHhiNGM1
OWVjNjogICAgbGRyYiAgIHI2LCBbcjAsICM2XQogICAgICAgIDB4YjRjNTllYzg6ICAgIHRzdCAg
ICByNiwgIzEKICAgICAgICAweGI0YzU5ZWNjOiAgICBibmUgICAgMHhiNGM1OWVkMgogICAgICAg
IDB4YjRjNTllY2U6ICAgIG1vdnMgICByMCwgIzAKICAgICAgICAweGI0YzU5ZWQwOiAgICBiICAg
ICAgMHhiNGM1OWVlNgogICAgICAgIDB4YjRjNTllZDI6ICAgIGxkciAgICByMSwgW3IwXQogICAg
ICAgIDB4YjRjNTllZDQ6ICAgIG1vdncgICByMCwgIzMwOTEyCiAgICAgICAgMHhiNGM1OWVkODog
ICAgbW92dCAgIHIwLCAjNDYyMDYKICAgICAgICAweGI0YzU5ZWRjOiAgICBsZHIgICAgcjEsIFty
MSwgIzIwXQogICAgICAgIDB4YjRjNTllZGU6ICAgIGNtcCAgICByMCwgcjEKICAgICAgICAweGI0
YzU5ZWUwOiAgICBpdGUgICAgZXEKICAgICAgICAweGI0YzU5ZWUyOiAgICBtb3ZlcSAgcjAsICMx
CiAgICAgICAgMHhiNGM1OWVlNDogICAgbW92bmUgIHIwLCAjMAogICAgICAgIDB4YjRjNTllZTY6
ICAgIHN0ciAgICByMCwgW3I3LCAjLTcyXQogICAgICAgIDB4YjRjNTllZWE6ICAgIG12biAgICBy
MTIsICMxCiAgICAgICAgMHhiNGM1OWVlZTogICAgc3RyICAgIHIxMiwgW3I3LCAjLTY4XQogICAg
WyAzOTRdIGp0cnVlICAgICAgICAgICAgIGxvYzgsIDI0KC0+NDE4KQogICAgICAgIDB4YjRjNTll
ZjI6ICAgIGxkciAgICByMCwgW3I3LCAjLTcyXQogICAgICAgIDB4YjRjNTllZjY6ICAgIGxkciAg
ICByMSwgW3I3LCAjLTY4XQogICAgICAgIDB4YjRjNTllZmE6ICAgIGNtbiAgICByMSwgIzIKICAg
ICAgICAweGI0YzU5ZWZlOiAgICBibG8gICAgMHhiNGM1Y2FhYwogICAgICAgIDB4YjRjNTlmMDI6
ICAgIHRzdCAgICByMCwgcjAKICAgICAgICAweGI0YzU5ZjA0OiAgICBibmUgICAgMHhiNGM1OWZm
ZQogICAgWyAzOTddIG1vdiAgICAgICAgICAgICAgIGxvYzExLCBsb2M2CiAgICAgICAgMHhiNGM1
OWYwODogICAgbGRyICAgIHIwLCBbcjcsICMtNTZdCiAgICAgICAgMHhiNGM1OWYwYzogICAgbGRy
ICAgIHIxLCBbcjcsICMtNTJdCiAgICAgICAgMHhiNGM1OWYxMDogICAgc3RyICAgIHIwLCBbcjcs
ICMtOTZdCiAgICAgICAgMHhiNGM1OWYxNDogICAgc3RyICAgIHIxLCBbcjcsICMtOTJdCiAgICBb
IDQwMF0gY2FsbCAgICAgICAgICAgICAgbG9jOCwgbG9jNywgMSwgMTYgc3RhdHVzKENvdWxkIFRh
a2UgU2xvdyBQYXRoKSAgICBPcmlnaW5hbDsgcHJlZGljdGluZyBOb25lCiAgICAgICAgMHhiNGM1
OWYxODogICAgbW92ICAgIHNwLCByNwogICAgICAgIDB4YjRjNTlmMWE6ICAgIG12biAgICByMTIs
ICMxMTkKICAgICAgICAweGI0YzU5ZjFlOiAgICBtb3YgICAgc3AsIHNwCiAgICAgICAgMHhiNGM1
OWYyMDogICAgYWRkICAgIHNwLCByMTIKICAgICAgICAweGI0YzU5ZjIyOiAgICBtb3YgICAgcjEy
LCAjMQogICAgICAgIDB4YjRjNTlmMjY6ICAgIHN0ciAgICByMTIsIFtzcCwgIzE2XQogICAgICAg
IDB4YjRjNTlmMmE6ICAgIG1vdncgICByMTIsICM0OTIyNAogICAgICAgIDB4YjRjNTlmMmU6ICAg
IG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNTlmMzI6ICAgIHN0ciAgICByMTIsIFty
NywgIzI4XQogICAgICAgIDB4YjRjNTlmMzY6ICAgIGxkciAgICByMCwgW3I3LCAjLTY0XQogICAg
ICAgIDB4YjRjNTlmM2E6ICAgIGxkciAgICByMSwgW3I3LCAjLTYwXQogICAgICAgIDB4YjRjNTlm
M2U6ICAgIHN0ciAgICByMCwgW3NwLCAjOF0KICAgICAgICAweGI0YzU5ZjQwOiAgICBzdHIgICAg
cjEsIFtzcCwgIzEyXQogICAgICAgIDB4YjRjNTlmNDI6ICAgIGNtbiAgICByMSwgIzUKICAgICAg
ICAweGI0YzU5ZjQ2OiAgICBibmUgICAgMHhiNGM1Y2IwYQogICAgICAgIDB4YjRjNTlmNGE6ICAg
IG1vdncgICByMTIsICMwCiAgICAgICAgMHhiNGM1OWY0ZTogICAgbW92dCAgIHIxMiwgIzAKICAg
ICAgICAweGI0YzU5ZjUyOiAgICBjbXAgICAgcjAsIHIxMgogICAgICAgIDB4YjRjNTlmNTY6ICAg
IGJuZSAgICAweGI0YzVjYjBhCiAgICAgICAgMHhiNGM1OWY1YTogICAgbW92dyAgIHIxMiwgIzAK
ICAgICAgICAweGI0YzU5ZjVlOiAgICBtb3Z0ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNTlmNjI6
ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzU5ZjY0OiAgICBtb3YgICAgc3AsIHI3CiAgICAg
ICAgMHhiNGM1OWY2NjogICAgbXZuICAgIHIxMiwgIzE4MwogICAgICAgIDB4YjRjNTlmNmE6ICAg
IG1vdiAgICBzcCwgc3AKICAgICAgICAweGI0YzU5ZjZjOiAgICBhZGQgICAgc3AsIHIxMgogICAg
ICAgIDB4YjRjNTlmNmU6ICAgIHN0ciAgICByMCwgW3I3LCAjLTcyXQogICAgICAgIDB4YjRjNTlm
NzI6ICAgIHN0ciAgICByMSwgW3I3LCAjLTY4XQogICAgWyA0MDldIGlzX29iamVjdCAgICAgICAg
IGxvYzEyLCBsb2M4CiAgICAgICAgMHhiNGM1OWY3NjogICAgbGRyICAgIHIwLCBbcjcsICMtNzJd
CiAgICAgICAgMHhiNGM1OWY3YTogICAgbGRyICAgIHIxLCBbcjcsICMtNjhdCiAgICAgICAgMHhi
NGM1OWY3ZTogICAgY21uICAgIHIxLCAjNQogICAgICAgIDB4YjRjNTlmODI6ICAgIGJuZSAgICAw
eGI0YzU5ZjkwCiAgICAgICAgMHhiNGM1OWY4NDogICAgbGRyYiAgIHI2LCBbcjAsICM1XQogICAg
ICAgIDB4YjRjNTlmODY6ICAgIGNtcCAgICByMiwgIzIwCiAgICAgICAgMHhiNGM1OWY4ODogICAg
aXRlICAgIGhzCiAgICAgICAgMHhiNGM1OWY4YTogICAgbW92aHMgIHIwLCAjMQogICAgICAgIDB4
YjRjNTlmOGM6ICAgIG1vdmxvICByMCwgIzAKICAgICAgICAweGI0YzU5ZjhlOiAgICBiICAgICAg
MHhiNGM1OWY5MgogICAgICAgIDB4YjRjNTlmOTA6ICAgIG1vdnMgICByMCwgIzAKICAgICAgICAw
eGI0YzU5ZjkyOiAgICBzdHIgICAgcjAsIFtyNywgIy0xMDRdCiAgICAgICAgMHhiNGM1OWY5Njog
ICAgbXZuICAgIHIxMiwgIzEKICAgICAgICAweGI0YzU5ZjlhOiAgICBzdHIgICAgcjEyLCBbcjcs
ICMtMTAwXQogICAgWyA0MTJdIGp0cnVlICAgICAgICAgICAgIGxvYzEyLCA2KC0+NDE4KQogICAg
ICAgIDB4YjRjNTlmOWU6ICAgIGxkciAgICByMCwgW3I3LCAjLTEwNF0KICAgICAgICAweGI0YzU5
ZmEyOiAgICBsZHIgICAgcjEsIFtyNywgIy0xMDBdCiAgICAgICAgMHhiNGM1OWZhNjogICAgY21u
ICAgIHIxLCAjMgogICAgICAgIDB4YjRjNTlmYWE6ICAgIGJsbyAgICAweGI0YzVjYjMyCiAgICAg
ICAgMHhiNGM1OWZhZTogICAgdHN0ICAgIHIwLCByMAogICAgICAgIDB4YjRjNTlmYjA6ICAgIGJu
ZSAgICAweGI0YzU5ZmZlCiAgICBbIDQxNV0gdGhyb3dfc3RhdGljX2Vycm9yIFN0cmluZyAoYXRv
bWljKSAoaWRlbnRpZmllcik6IEl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9i
amVjdC4oY29uc3QyNCksIGZhbHNlCiAgICAgICAgMHhiNGM1OWZiMjogICAgbW92dyAgIHIwLCAj
MzQ4MTYKICAgICAgICAweGI0YzU5ZmI2OiAgICBtb3Z0ICAgcjAsICM0NjIwNAogICAgICAgIDB4
YjRjNTlmYmE6ICAgIG12biAgICByMSwgIzQKICAgICAgICAweGI0YzU5ZmJlOiAgICBtb3YgICAg
cjEyLCAjMAogICAgICAgIDB4YjRjNTlmYzI6ICAgIHN0ciAgICByMTIsIFtzcF0KICAgICAgICAw
eGI0YzU5ZmM2OiAgICBtb3YgICAgcjIsIHIwCiAgICAgICAgMHhiNGM1OWZjODogICAgbW92ICAg
IHIzLCByMQogICAgICAgIDB4YjRjNTlmY2E6ICAgIG1vdnMgICByMSwgIzAKICAgICAgICAweGI0
YzU5ZmNjOiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1OWZjZTogICAgbW92dyAgIHIx
MiwgIzQ5Mjg4CiAgICAgICAgMHhiNGM1OWZkMjogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAg
ICAgMHhiNGM1OWZkNjogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1OWZk
YTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzU5ZmRlOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgICAgIDB4YjRjNTlmZTI6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4
YjRjNTlmZTQ6ICAgIG1vdncgICByMTIsICM1OTM5NwogICAgICAgIDB4YjRjNTlmZTg6ICAgIG1v
dnQgICByMTIsICM0Njc3NgogICAgICAgIDB4YjRjNTlmZWM6ICAgIGJseCAgICByMTIKICAgICAg
ICAweGI0YzU5ZmVlOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNTlmZjI6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1OWZmNjogICAgbGRyICAgIHI2LCBbcjZd
CiAgICAgICAgMHhiNGM1OWZmODogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNTlmZmE6
ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICBbIDQxOF0gZ2V0X3BhcmVudF9zY29wZSAgbG9jNSwg
bG9jNAogICAgICAgIDB4YjRjNTlmZmU6ICAgIGxkciAgICByMCwgW3I3LCAjLTQwXQogICAgICAg
IDB4YjRjNWEwMDI6ICAgIGxkciAgICByMCwgW3IwLCAjMTZdCiAgICAgICAgMHhiNGM1YTAwNDog
ICAgc3RyICAgIHIwLCBbcjcsICMtNDhdCiAgICAgICAgMHhiNGM1YTAwODogICAgbXZuICAgIHIx
MiwgIzQKICAgICAgICAweGI0YzVhMDBjOiAgICBzdHIgICAgcjEyLCBbcjcsICMtNDRdCiAgICBb
IDQyMV0gbW92ICAgICAgICAgICAgICAgbG9jMCwgbG9jNQogICAgICAgIDB4YjRjNWEwMTA6ICAg
IGxkciAgICByMCwgW3I3LCAjLTQ4XQogICAgICAgIDB4YjRjNWEwMTQ6ICAgIGxkciAgICByMSwg
W3I3LCAjLTQ0XQogICAgICAgIDB4YjRjNWEwMTg6ICAgIHN0ciAgICByMCwgW3I3LCAjLThdCiAg
ICAgICAgMHhiNGM1YTAxYzogICAgc3RyICAgIHIxLCBbcjcsICMtNF0KICAgIFsgNDI0XSByZXNv
bHZlX3Njb3BlICAgICBsb2M0LCBsb2MwLCBleHBlY3RlZFJlc3VsdHMoQGlkMTQpLCA8R2xvYmFs
TGV4aWNhbFZhcj4sIDEsIDB4YjQ3ZGZmYzAKICAgICAgICAweGI0YzVhMDIwOiAgICBtdm4gICAg
cjEsICM0CiAgICAgICAgMHhiNGM1YTAyNDogICAgbW92dyAgIHIwLCAjNjU0NzIKICAgICAgICAw
eGI0YzVhMDI4OiAgICBtb3Z0ICAgcjAsICM0NjIwNQogICAgICAgIDB4YjRjNWEwMmM6ICAgIHN0
ciAgICByMCwgW3I3LCAjLTQwXQogICAgICAgIDB4YjRjNWEwMzA6ICAgIHN0ciAgICByMSwgW3I3
LCAjLTM2XQogICAgWyA0MzFdIG5ld19hcnJheSAgICAgICAgIGxvYzUsIGhlYWQwLCAwCiAgICAg
ICAgMHhiNGM1YTAzNDogICAgYWRkcyAgIHIwLCByNywgIzAKICAgICAgICAweGI0YzVhMDM2OiAg
ICBtb3YgICAgcjIsIHIwCiAgICAgICAgMHhiNGM1YTAzODogICAgbW92dyAgIHIxLCAjMjU5NDQK
ICAgICAgICAweGI0YzVhMDNjOiAgICBtb3Z0ICAgcjEsICM0NjI3MAogICAgICAgIDB4YjRjNWEw
NDA6ICAgIG1vdnMgICByMywgIzAKICAgICAgICAweGI0YzVhMDQyOiAgICBtb3YgICAgcjAsIHI3
CiAgICAgICAgMHhiNGM1YTA0NDogICAgbW92dyAgIHIxMiwgIzQ5MzUyCiAgICAgICAgMHhiNGM1
YTA0ODogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YTA0YzogICAgc3RyICAg
IHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1YTA1MDogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgICAgICAweGI0YzVhMDU0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWEw
NTg6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWEwNWE6ICAgIG1vdncgICByMTIs
ICM1NzYwOQogICAgICAgIDB4YjRjNWEwNWU6ICAgIG1vdnQgICByMTIsICM0Njc3NgogICAgICAg
IDB4YjRjNWEwNjI6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVhMDY0OiAgICBtb3Z3ICAg
cjYsICM0NjM0OAogICAgICAgIDB4YjRjNWEwNjg6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAg
ICAgMHhiNGM1YTA2YzogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1YTA2ZTogICAg
Y21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWEwNzA6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAg
ICAgICAgMHhiNGM1YTA3NDogICAgc3RyICAgIHIwLCBbcjcsICMtNDhdCiAgICAgICAgMHhiNGM1
YTA3ODogICAgc3RyICAgIHIxLCBbcjcsICMtNDRdCiAgICBbIDQzNl0gcHV0X3RvX3Njb3BlICAg
ICAgbG9jNCwgZXhwZWN0ZWRSZXN1bHRzKEBpZDE0KSwgbG9jNSwgMTA0ODU3ODxEb05vdFRocm93
SWZOb3RGb3VuZHxHbG9iYWxMZXhpY2FsVmFyfEluaXRpYWxpemF0aW9uPiwgPHN0cnVjdHVyZT4s
IC0xMjYyNTAxMzYwCiAgICAgICAgMHhiNGM1YTA3YzogICAgbGRyICAgIHIwLCBbcjcsICMtNDRd
CiAgICAgICAgMHhiNGM1YTA4MDogICAgY21uICAgIHIwLCAjNQogICAgICAgIDB4YjRjNWEwODQ6
ICAgIGJuZSAgICAweGI0YzVhMGNlCiAgICAgICAgMHhiNGM1YTA4NjogICAgbW92dyAgIHI2LCAj
NjU0NzkKICAgICAgICAweGI0YzVhMDhhOiAgICBtb3Z0ICAgcjYsICM0NjIwNQogICAgICAgIDB4
YjRjNWEwOGU6ICAgIGxkcmIgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWEwOTA6ICAgIHRzdCAg
ICByNiwgcjYKICAgICAgICAweGI0YzVhMDkyOiAgICBibmUgICAgMHhiNGM1YTBjZQogICAgICAg
IDB4YjRjNWEwOTQ6ICAgIG1vdncgICByMSwgIzY1NDcyCiAgICAgICAgMHhiNGM1YTA5ODogICAg
bW92dCAgIHIxLCAjNDYyMDUKICAgICAgICAweGI0YzVhMDljOiAgICBtb3YgICAgcjAsIHI3CiAg
ICAgICAgMHhiNGM1YTA5ZTogICAgbW92dyAgIHIxMiwgIzQ5MzcyCiAgICAgICAgMHhiNGM1YTBh
MjogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YTBhNjogICAgc3RyICAgIHIx
MiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1YTBhYTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
ICAgICAweGI0YzVhMGFlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWEwYjI6
ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWEwYjQ6ICAgIG1vdncgICByMTIsICM2
MzE3NwogICAgICAgIDB4YjRjNWEwYjg6ICAgIG1vdnQgICByMTIsICM0Njc3NgogICAgICAgIDB4
YjRjNWEwYmM6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVhMGJlOiAgICBtb3Z3ICAgcjYs
ICM0NjM0OAogICAgICAgIDB4YjRjNWEwYzI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAg
MHhiNGM1YTBjNjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1YTBjODogICAgY21w
ICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWEwY2E6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAg
ICAgMHhiNGM1YTBjZTogICAgbGRyICAgIHIwLCBbcjcsICMtNDhdCiAgICAgICAgMHhiNGM1YTBk
MjogICAgbGRyICAgIHIxLCBbcjcsICMtNDRdCiAgICAgICAgMHhiNGM1YTBkNjogICAgbW92dyAg
IHI2LCAjMTA3MTYKICAgICAgICAweGI0YzVhMGRhOiAgICBtb3Z0ICAgcjYsICM0NjI2NgogICAg
ICAgIDB4YjRjNWEwZGU6ICAgIGxkcmIgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWEwZTA6ICAg
IGNtcCAgICByMiwgIzIKICAgICAgICAweGI0YzVhMGUyOiAgICBibmUgICAgMHhiNGM1Y2I5MAog
ICAgICAgIDB4YjRjNWEwZTY6ICAgIG1vdncgICByNiwgIzQ5Njg0CiAgICAgICAgMHhiNGM1YTBl
YTogICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI0YzVhMGVlOiAgICBzdHIgICAgcjEs
IFtyNl0KICAgICAgICAweGI0YzVhMGYwOiAgICBtb3Z3ICAgcjYsICM0OTY4MAogICAgICAgIDB4
YjRjNWEwZjQ6ICAgIG1vdnQgICByNiwgIzQ2MjcxCiAgICAgICAgMHhiNGM1YTBmODogICAgc3Ry
ICAgIHIwLCBbcjZdCiAgICBbIDQ0M10gcmVzb2x2ZV9zY29wZSAgICAgbG9jNCwgbG9jMCwgY29u
c3RhbnRCYXNlRnVuY3Rpb25zKEBpZDE1KSwgPEdsb2JhbExleGljYWxWYXI+LCAxLCAweGI0N2Rm
ZmMwCiAgICAgICAgMHhiNGM1YTBmYTogICAgbXZuICAgIHIxLCAjNAogICAgICAgIDB4YjRjNWEw
ZmU6ICAgIG1vdncgICByMCwgIzY1NDcyCiAgICAgICAgMHhiNGM1YTEwMjogICAgbW92dCAgIHIw
LCAjNDYyMDUKICAgICAgICAweGI0YzVhMTA2OiAgICBzdHIgICAgcjAsIFtyNywgIy00MF0KICAg
ICAgICAweGI0YzVhMTBhOiAgICBzdHIgICAgcjEsIFtyNywgIy0zNl0KICAgIFsgNDUwXSBuZXdf
YXJyYXkgICAgICAgICBsb2M1LCBoZWFkMCwgMAogICAgICAgIDB4YjRjNWExMGU6ICAgIGFkZHMg
ICByMCwgcjcsICMwCiAgICAgICAgMHhiNGM1YTExMDogICAgbW92ICAgIHIyLCByMAogICAgICAg
IDB4YjRjNWExMTI6ICAgIG1vdncgICByMSwgIzI1OTUyCiAgICAgICAgMHhiNGM1YTExNjogICAg
bW92dCAgIHIxLCAjNDYyNzAKICAgICAgICAweGI0YzVhMTFhOiAgICBtb3ZzICAgcjMsICMwCiAg
ICAgICAgMHhiNGM1YTExYzogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWExMWU6ICAg
IG1vdncgICByMTIsICM0OTQyOAogICAgICAgIDB4YjRjNWExMjI6ICAgIG1vdnQgICByMTIsICM0
NTgyMgogICAgICAgIDB4YjRjNWExMjY6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAg
IDB4YjRjNWExMmE6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1YTEyZTogICAg
bW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVhMTMyOiAgICBzdHIgICAgcjcsIFtyNl0K
ICAgICAgICAweGI0YzVhMTM0OiAgICBtb3Z3ICAgcjEyLCAjNTc2MDkKICAgICAgICAweGI0YzVh
MTM4OiAgICBtb3Z0ICAgcjEyLCAjNDY3NzYKICAgICAgICAweGI0YzVhMTNjOiAgICBibHggICAg
cjEyCiAgICAgICAgMHhiNGM1YTEzZTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0
YzVhMTQyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWExNDY6ICAgIGxkciAg
ICByNiwgW3I2XQogICAgICAgIDB4YjRjNWExNDg6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAw
eGI0YzVhMTRhOiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWExNGU6ICAgIHN0
ciAgICByMCwgW3I3LCAjLTQ4XQogICAgICAgIDB4YjRjNWExNTI6ICAgIHN0ciAgICByMSwgW3I3
LCAjLTQ0XQogICAgWyA0NTVdIHB1dF90b19zY29wZSAgICAgIGxvYzQsIGNvbnN0YW50QmFzZUZ1
bmN0aW9ucyhAaWQxNSksIGxvYzUsIDEwNDg1Nzg8RG9Ob3RUaHJvd0lmTm90Rm91bmR8R2xvYmFs
TGV4aWNhbFZhcnxJbml0aWFsaXphdGlvbj4sIDxzdHJ1Y3R1cmU+LCAtMTI2MjUwMTM0NAogICAg
ICAgIDB4YjRjNWExNTY6ICAgIGxkciAgICByMCwgW3I3LCAjLTQ0XQogICAgICAgIDB4YjRjNWEx
NWE6ICAgIGNtbiAgICByMCwgIzUKICAgICAgICAweGI0YzVhMTVlOiAgICBibmUgICAgMHhiNGM1
YTFhOAogICAgICAgIDB4YjRjNWExNjA6ICAgIG1vdncgICByNiwgIzY1NDc5CiAgICAgICAgMHhi
NGM1YTE2NDogICAgbW92dCAgIHI2LCAjNDYyMDUKICAgICAgICAweGI0YzVhMTY4OiAgICBsZHJi
ICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVhMTZhOiAgICB0c3QgICAgcjYsIHI2CiAgICAgICAg
MHhiNGM1YTE2YzogICAgYm5lICAgIDB4YjRjNWExYTgKICAgICAgICAweGI0YzVhMTZlOiAgICBt
b3Z3ICAgcjEsICM2NTQ3MgogICAgICAgIDB4YjRjNWExNzI6ICAgIG1vdnQgICByMSwgIzQ2MjA1
CiAgICAgICAgMHhiNGM1YTE3NjogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWExNzg6
ICAgIG1vdncgICByMTIsICM0OTQ0OAogICAgICAgIDB4YjRjNWExN2M6ICAgIG1vdnQgICByMTIs
ICM0NTgyMgogICAgICAgIDB4YjRjNWExODA6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAg
ICAgIDB4YjRjNWExODQ6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1YTE4ODog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVhMThjOiAgICBzdHIgICAgcjcsIFty
Nl0KICAgICAgICAweGI0YzVhMThlOiAgICBtb3Z3ICAgcjEyLCAjNjMxNzcKICAgICAgICAweGI0
YzVhMTkyOiAgICBtb3Z0ICAgcjEyLCAjNDY3NzYKICAgICAgICAweGI0YzVhMTk2OiAgICBibHgg
ICAgcjEyCiAgICAgICAgMHhiNGM1YTE5ODogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAw
eGI0YzVhMTljOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWExYTA6ICAgIGxk
ciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWExYTI6ICAgIGNtcCAgICByMiwgIzAKICAgICAg
ICAweGI0YzVhMWE0OiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWExYTg6ICAg
IGxkciAgICByMCwgW3I3LCAjLTQ4XQogICAgICAgIDB4YjRjNWExYWM6ICAgIGxkciAgICByMSwg
W3I3LCAjLTQ0XQogICAgICAgIDB4YjRjNWExYjA6ICAgIG1vdncgICByNiwgIzEwNzY0CiAgICAg
ICAgMHhiNGM1YTFiNDogICAgbW92dCAgIHI2LCAjNDYyNjYKICAgICAgICAweGI0YzVhMWI4OiAg
ICBsZHJiICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVhMWJhOiAgICBjbXAgICAgcjIsICMyCiAg
ICAgICAgMHhiNGM1YTFiYzogICAgYm5lICAgIDB4YjRjNWNiY2UKICAgICAgICAweGI0YzVhMWMw
OiAgICBtb3Z3ICAgcjYsICM0OTcwMAogICAgICAgIDB4YjRjNWExYzQ6ICAgIG1vdnQgICByNiwg
IzQ2MjcxCiAgICAgICAgMHhiNGM1YTFjODogICAgc3RyICAgIHIxLCBbcjZdCiAgICAgICAgMHhi
NGM1YTFjYTogICAgbW92dyAgIHI2LCAjNDk2OTYKICAgICAgICAweGI0YzVhMWNlOiAgICBtb3Z0
ICAgcjYsICM0NjI3MQogICAgICAgIDB4YjRjNWExZDI6ICAgIHN0ciAgICByMCwgW3I2XQogICAg
WyA0NjJdIHJlc29sdmVfc2NvcGUgICAgIGxvYzQsIGxvYzAsIGNvbnN0YW50RXhwb25lbnRGdW5j
dGlvbnMoQGlkMTYpLCA8R2xvYmFsTGV4aWNhbFZhcj4sIDEsIDB4YjQ3ZGZmYzAKICAgICAgICAw
eGI0YzVhMWQ0OiAgICBtdm4gICAgcjEsICM0CiAgICAgICAgMHhiNGM1YTFkODogICAgbW92dyAg
IHIwLCAjNjU0NzIKICAgICAgICAweGI0YzVhMWRjOiAgICBtb3Z0ICAgcjAsICM0NjIwNQogICAg
ICAgIDB4YjRjNWExZTA6ICAgIHN0ciAgICByMCwgW3I3LCAjLTQwXQogICAgICAgIDB4YjRjNWEx
ZTQ6ICAgIHN0ciAgICByMSwgW3I3LCAjLTM2XQogICAgWyA0NjldIG5ld19hcnJheSAgICAgICAg
IGxvYzUsIGhlYWQwLCAwCiAgICAgICAgMHhiNGM1YTFlODogICAgYWRkcyAgIHIwLCByNywgIzAK
ICAgICAgICAweGI0YzVhMWVhOiAgICBtb3YgICAgcjIsIHIwCiAgICAgICAgMHhiNGM1YTFlYzog
ICAgbW92dyAgIHIxLCAjMjU5NjAKICAgICAgICAweGI0YzVhMWYwOiAgICBtb3Z0ICAgcjEsICM0
NjI3MAogICAgICAgIDB4YjRjNWExZjQ6ICAgIG1vdnMgICByMywgIzAKICAgICAgICAweGI0YzVh
MWY2OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1YTFmODogICAgbW92dyAgIHIxMiwg
IzQ5NTA0CiAgICAgICAgMHhiNGM1YTFmYzogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAg
MHhiNGM1YTIwMDogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1YTIwNDog
ICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVhMjA4OiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgICAgIDB4YjRjNWEyMGM6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRj
NWEyMGU6ICAgIG1vdncgICByMTIsICM1NzYwOQogICAgICAgIDB4YjRjNWEyMTI6ICAgIG1vdnQg
ICByMTIsICM0Njc3NgogICAgICAgIDB4YjRjNWEyMTY6ICAgIGJseCAgICByMTIKICAgICAgICAw
eGI0YzVhMjE4OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWEyMWM6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1YTIyMDogICAgbGRyICAgIHI2LCBbcjZdCiAg
ICAgICAgMHhiNGM1YTIyMjogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWEyMjQ6ICAg
IGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1YTIyODogICAgc3RyICAgIHIwLCBbcjcs
ICMtNDhdCiAgICAgICAgMHhiNGM1YTIyYzogICAgc3RyICAgIHIxLCBbcjcsICMtNDRdCiAgICBb
IDQ3NF0gcHV0X3RvX3Njb3BlICAgICAgbG9jNCwgY29uc3RhbnRFeHBvbmVudEZ1bmN0aW9ucyhA
aWQxNiksIGxvYzUsIDEwNDg1Nzg8RG9Ob3RUaHJvd0lmTm90Rm91bmR8R2xvYmFsTGV4aWNhbFZh
cnxJbml0aWFsaXphdGlvbj4sIDxzdHJ1Y3R1cmU+LCAtMTI2MjUwMTM2OAogICAgICAgIDB4YjRj
NWEyMzA6ICAgIGxkciAgICByMCwgW3I3LCAjLTQ0XQogICAgICAgIDB4YjRjNWEyMzQ6ICAgIGNt
biAgICByMCwgIzUKICAgICAgICAweGI0YzVhMjM4OiAgICBibmUgICAgMHhiNGM1YTI4MgogICAg
ICAgIDB4YjRjNWEyM2E6ICAgIG1vdncgICByNiwgIzY1NDc5CiAgICAgICAgMHhiNGM1YTIzZTog
ICAgbW92dCAgIHI2LCAjNDYyMDUKICAgICAgICAweGI0YzVhMjQyOiAgICBsZHJiICAgcjYsIFty
Nl0KICAgICAgICAweGI0YzVhMjQ0OiAgICB0c3QgICAgcjYsIHI2CiAgICAgICAgMHhiNGM1YTI0
NjogICAgYm5lICAgIDB4YjRjNWEyODIKICAgICAgICAweGI0YzVhMjQ4OiAgICBtb3Z3ICAgcjEs
ICM2NTQ3MgogICAgICAgIDB4YjRjNWEyNGM6ICAgIG1vdnQgICByMSwgIzQ2MjA1CiAgICAgICAg
MHhiNGM1YTI1MDogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWEyNTI6ICAgIG1vdncg
ICByMTIsICM0OTUyNAogICAgICAgIDB4YjRjNWEyNTY6ICAgIG1vdnQgICByMTIsICM0NTgyMgog
ICAgICAgIDB4YjRjNWEyNWE6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRj
NWEyNWU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1YTI2MjogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVhMjY2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAg
ICAweGI0YzVhMjY4OiAgICBtb3Z3ICAgcjEyLCAjNjMxNzcKICAgICAgICAweGI0YzVhMjZjOiAg
ICBtb3Z0ICAgcjEyLCAjNDY3NzYKICAgICAgICAweGI0YzVhMjcwOiAgICBibHggICAgcjEyCiAg
ICAgICAgMHhiNGM1YTI3MjogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVhMjc2
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWEyN2E6ICAgIGxkciAgICByNiwg
W3I2XQogICAgICAgIDB4YjRjNWEyN2M6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVh
MjdlOiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWEyODI6ICAgIGxkciAgICBy
MCwgW3I3LCAjLTQ4XQogICAgICAgIDB4YjRjNWEyODY6ICAgIGxkciAgICByMSwgW3I3LCAjLTQ0
XQogICAgICAgIDB4YjRjNWEyOGE6ICAgIG1vdncgICByNiwgIzEwNjkyCiAgICAgICAgMHhiNGM1
YTI4ZTogICAgbW92dCAgIHI2LCAjNDYyNjYKICAgICAgICAweGI0YzVhMjkyOiAgICBsZHJiICAg
cjYsIFtyNl0KICAgICAgICAweGI0YzVhMjk0OiAgICBjbXAgICAgcjIsICMyCiAgICAgICAgMHhi
NGM1YTI5NjogICAgYm5lICAgIDB4YjRjNWNjMGMKICAgICAgICAweGI0YzVhMjlhOiAgICBtb3Z3
ICAgcjYsICM0OTY3NgogICAgICAgIDB4YjRjNWEyOWU6ICAgIG1vdnQgICByNiwgIzQ2MjcxCiAg
ICAgICAgMHhiNGM1YTJhMjogICAgc3RyICAgIHIxLCBbcjZdCiAgICAgICAgMHhiNGM1YTJhNDog
ICAgbW92dyAgIHI2LCAjNDk2NzIKICAgICAgICAweGI0YzVhMmE4OiAgICBtb3Z0ICAgcjYsICM0
NjI3MQogICAgICAgIDB4YjRjNWEyYWM6ICAgIHN0ciAgICByMCwgW3I2XQogICAgWyA0ODFdIGNy
ZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50IGxvYzQsIGxvYzAsIENlbGw6IDB4YjQ3YjZkMDAgKDB4
YjQ3ZjdhNDA6W1N5bWJvbFRhYmxlLCB7fSwgTm9uQXJyYXksIExlYWZdKShjb25zdDI1KSwgPEpT
VmFsdWUoKT4oY29uc3QxKQogICAgICAgIDB4YjRjNWEyYWU6ICAgIG1vdncgICByMTIsICM0OTU1
MgogICAgICAgIDB4YjRjNWEyYjI6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRj
NWEyYjY6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWEyYmE6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1YTJiZTogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgICAgICAweGI0YzVhMmMyOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVhMmM0
OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1YTJjNjogICAgbW92dyAgIHIxLCAjNDk1
NDgKICAgICAgICAweGI0YzVhMmNhOiAgICBtb3Z0ICAgcjEsICM0NTgyMgogICAgICAgIDB4YjRj
NWEyY2U6ICAgIG1vdncgICByMTIsICMyMjkzNwogICAgICAgIDB4YjRjNWEyZDI6ICAgIG1vdnQg
ICByMTIsICM0Njc5MwogICAgICAgIDB4YjRjNWEyZDY6ICAgIGJseCAgICByMTIKICAgICAgICAw
eGI0YzVhMmQ4OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWEyZGM6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1YTJlMDogICAgbGRyICAgIHI2LCBbcjZdCiAg
ICAgICAgMHhiNGM1YTJlMjogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWEyZTQ6ICAg
IGJuZSAgICAweGI0YzVlNjgwCiAgICBbIDQ4Nl0gbW92ICAgICAgICAgICAgICAgbG9jMCwgbG9j
NAogICAgICAgIDB4YjRjNWEyZTg6ICAgIGxkciAgICByMCwgW3I3LCAjLTQwXQogICAgICAgIDB4
YjRjNWEyZWM6ICAgIGxkciAgICByMSwgW3I3LCAjLTM2XQogICAgICAgIDB4YjRjNWEyZjA6ICAg
IHN0ciAgICByMCwgW3I3LCAjLThdCiAgICAgICAgMHhiNGM1YTJmNDogICAgc3RyICAgIHIxLCBb
cjcsICMtNF0KICAgIFsgNDg5XSBwdXRfdG9fc2NvcGUgICAgICBsb2M0LCBpKEBpZDE3KSwgSW50
MzI6IDAoY29uc3QyNiksIDEwNDg1ODA8RG9Ob3RUaHJvd0lmTm90Rm91bmR8TG9jYWxDbG9zdXJl
VmFyfEluaXRpYWxpemF0aW9uPiwgPHN0cnVjdHVyZT4sIDAKICAgICAgICAweGI0YzVhMmY4OiAg
ICBtb3YgICAgcjAsICM0Mjk0OTY3Mjk1CiAgICAgICAgMHhiNGM1YTJmYzogICAgY21uICAgIHIw
LCAjNQogICAgICAgIDB4YjRjNWEzMDA6ICAgIGJuZSAgICAweGI0YzVhMzQyCiAgICAgICAgMHhi
NGM1YTMwMjogICAgbGRyICAgIHIxLCBbcjcsICMtNDBdCiAgICAgICAgMHhiNGM1YTMwNjogICAg
bGRyICAgIHIwLCBbcjcsICMtMzZdCiAgICAgICAgMHhiNGM1YTMwYTogICAgbGRyYiAgIHI2LCBb
cjEsICM3XQogICAgICAgIDB4YjRjNWEzMGM6ICAgIHRzdCAgICByNiwgcjYKICAgICAgICAweGI0
YzVhMzBlOiAgICBibmUgICAgMHhiNGM1YTM0MgogICAgICAgIDB4YjRjNWEzMTA6ICAgIG1vdiAg
ICByMCwgcjcKICAgICAgICAweGI0YzVhMzEyOiAgICBtb3Z3ICAgcjEyLCAjNDk1ODQKICAgICAg
ICAweGI0YzVhMzE2OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVhMzFhOiAg
ICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVhMzFlOiAgICBtb3Z3ICAgcjYs
ICM0MjEyOAogICAgICAgIDB4YjRjNWEzMjI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAg
MHhiNGM1YTMyNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1YTMyODogICAgbW92
dyAgIHIxMiwgIzYzMTc3CiAgICAgICAgMHhiNGM1YTMyYzogICAgbW92dCAgIHIxMiwgIzQ2Nzc2
CiAgICAgICAgMHhiNGM1YTMzMDogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWEzMzI6ICAg
IG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1YTMzNjogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgICAgICAweGI0YzVhMzNhOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVh
MzNjOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1YTMzZTogICAgYm5lICAgIDB4YjRj
NWU2ODAKICAgICAgICAweGI0YzVhMzQyOiAgICBtb3ZzICAgcjIsICMwCiAgICAgICAgMHhiNGM1
YTM0NDogICAgbW92ICAgIHIzLCAjNDI5NDk2NzI5NQogICAgICAgIDB4YjRjNWEzNDg6ICAgIGxk
ciAgICByMCwgW3I3LCAjLTQwXQogICAgICAgIDB4YjRjNWEzNGM6ICAgIGxkciAgICByMSwgW3I3
LCAjLTM2XQogICAgICAgIDB4YjRjNWEzNTA6ICAgIHN0ciAgICByMywgW3IwLCAjMjhdCiAgICAg
ICAgMHhiNGM1YTM1MjogICAgc3RyICAgIHIyLCBbcjAsICMyNF0KICAgIFsgNDk2XSBnZXRfZnJv
bV9zY29wZSAgICBsb2M1LCBsb2M0LCBpKEBpZDE3KSwgMjA1MTxUaHJvd0lmTm90Rm91bmR8Q2xv
c3VyZVZhcnxOb3RJbml0aWFsaXphdGlvbj4sIDAgICAgcHJlZGljdGluZyBCb29saW50MzIKICAg
ICAgICAweGI0YzVhMzU0OiAgICBsZHIgICAgcjAsIFtyNywgIy00MF0KICAgICAgICAweGI0YzVh
MzU4OiAgICBsZHIgICAgcjEsIFtyNywgIy0zNl0KICAgICAgICAweGI0YzVhMzVjOiAgICBsZHIg
ICAgcjEsIFtyMCwgIzI4XQogICAgICAgIDB4YjRjNWEzNWU6ICAgIGxkciAgICByMCwgW3IwLCAj
MjRdCiAgICAgICAgMHhiNGM1YTM2MDogICAgc3RyICAgIHIwLCBbcjcsICMtNDhdCiAgICAgICAg
MHhiNGM1YTM2NDogICAgc3RyICAgIHIxLCBbcjcsICMtNDRdCiAgICBbIDUwNF0gcmVzb2x2ZV9z
Y29wZSAgICAgbG9jNiwgbG9jMCwgY2FzZXMoQGlkNSksIDxHbG9iYWxMZXhpY2FsVmFyPiwgMiwg
MHhiNDdkZmZjMAogICAgICAgIDB4YjRjNWEzNjg6ICAgIG12biAgICByMSwgIzQKICAgICAgICAw
eGI0YzVhMzZjOiAgICBtb3Z3ICAgcjAsICM2NTQ3MgogICAgICAgIDB4YjRjNWEzNzA6ICAgIG1v
dnQgICByMCwgIzQ2MjA1CiAgICAgICAgMHhiNGM1YTM3NDogICAgc3RyICAgIHIwLCBbcjcsICMt
NTZdCiAgICAgICAgMHhiNGM1YTM3ODogICAgc3RyICAgIHIxLCBbcjcsICMtNTJdCiAgICBbIDUx
MV0gZ2V0X2Zyb21fc2NvcGUgICAgbG9jNywgbG9jNiwgY2FzZXMoQGlkNSksIDIwNTA8VGhyb3dJ
Zk5vdEZvdW5kfEdsb2JhbExleGljYWxWYXJ8Tm90SW5pdGlhbGl6YXRpb24+LCAtMTI2MjUwMTM3
NiAgICBwcmVkaWN0aW5nIEFycmF5CiAgICAgICAgMHhiNGM1YTM3YzogICAgbW92dyAgIHI2LCAj
NDk2NjgKICAgICAgICAweGI0YzVhMzgwOiAgICBtb3Z0ICAgcjYsICM0NjI3MQogICAgICAgIDB4
YjRjNWEzODQ6ICAgIGxkciAgICByMSwgW3I2XQogICAgICAgIDB4YjRjNWEzODY6ICAgIG1vdncg
ICByNiwgIzQ5NjY0CiAgICAgICAgMHhiNGM1YTM4YTogICAgbW92dCAgIHI2LCAjNDYyNzEKICAg
ICAgICAweGI0YzVhMzhlOiAgICBsZHIgICAgcjAsIFtyNl0KICAgICAgICAweGI0YzVhMzkwOiAg
ICBjbW4gICAgcjEsICM2CiAgICAgICAgMHhiNGM1YTM5NDogICAgYmVxICAgIDB4YjRjNWNjNGEK
ICAgICAgICAweGI0YzVhMzk4OiAgICBzdHIgICAgcjAsIFtyNywgIy02NF0KICAgICAgICAweGI0
YzVhMzljOiAgICBzdHIgICAgcjEsIFtyNywgIy02MF0KICAgIFsgNTE5XSBhcnJheV9sZW5ndGgg
ICAgICBsb2M4LCBsb2M3LCBsZW5ndGgoQGlkMTgpIGxsaW50KGFycmF5X2xlbmd0aCkgICAgcHJl
ZGljdGluZyBOb25ib29saW50MzIKICAgICAgICAweGI0YzVhM2EwOiAgICBsZHIgICAgcjAsIFty
NywgIy02NF0KICAgICAgICAweGI0YzVhM2E0OiAgICBsZHIgICAgcjEsIFtyNywgIy02MF0KICAg
ICAgICAweGI0YzVhM2E4OiAgICBjbW4gICAgcjEsICM1CiAgICAgICAgMHhiNGM1YTNhYzogICAg
Ym5lICAgIDB4YjRjNWNjOTAKICAgICAgICAweGI0YzVhM2IwOiAgICBsZHIgICAgcjYsIFtyMF0K
ICAgICAgICAweGI0YzVhM2IyOiAgICBtb3Z3ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNWEzYjY6
ICAgIG1vdnQgICByMTIsICMwCiAgICAgICAgMHhiNGM1YTNiYTogICAgY21wICAgIHI2LCByMTIK
ICAgICAgICAweGI0YzVhM2JlOiAgICBpdHR0ICAgbmUKICAgICAgICAweGI0YzVhM2MwOiAgICBt
b3Z3bmUgcjEyLCAjNTIzNjkKICAgICAgICAweGI0YzVhM2M0OiAgICBtb3Z0bmUgcjEyLCAjNDYy
NzcKICAgICAgICAweGI0YzVhM2M4OiAgICBieG5lICAgcjEyCiAgICAgICAgMHhiNGM1YTNjYTog
ICAgbGRyICAgIHIxLCBbcjBdCiAgICAgICAgMHhiNGM1YTNjZTogICAgbGRyICAgIHIwLCBbcjBd
CiAgICAgICAgMHhiNGM1YTNkMjogICAgc3RyICAgIHIwLCBbcjcsICMtNzJdCiAgICAgICAgMHhi
NGM1YTNkNjogICAgc3RyICAgIHIxLCBbcjcsICMtNjhdCiAgICBbIDUyOF0gam5sZXNzICAgICAg
ICAgICAgbG9jNSwgbG9jOCwgNDc4KC0+MTAwNikKICAgICAgICAweGI0YzVhM2RhOiAgICBsZHIg
ICAgcjIsIFtyNywgIy03Ml0KICAgICAgICAweGI0YzVhM2RlOiAgICBsZHIgICAgcjMsIFtyNywg
Iy02OF0KICAgICAgICAweGI0YzVhM2UyOiAgICBsZHIgICAgcjAsIFtyNywgIy00OF0KICAgICAg
ICAweGI0YzVhM2U2OiAgICBsZHIgICAgcjEsIFtyNywgIy00NF0KICAgICAgICAweGI0YzVhM2Vh
OiAgICBjbXAgICAgcjEsICM0Mjk0OTY3Mjk1CiAgICAgICAgMHhiNGM1YTNlZTogICAgYm5lICAg
IDB4YjRjNWEzZmUKICAgICAgICAweGI0YzVhM2YwOiAgICBjbXAgICAgcjMsICM0Mjk0OTY3Mjk1
CiAgICAgICAgMHhiNGM1YTNmNDogICAgYm5lICAgIDB4YjRjNWE0MzQKICAgICAgICAweGI0YzVh
M2Y2OiAgICBjbXAgICAgcjAsIHIyCiAgICAgICAgMHhiNGM1YTNmODogICAgYmdlICAgIDB4YjRj
NWIzNTQKICAgICAgICAweGI0YzVhM2ZjOiAgICBiICAgICAgMHhiNGM1YTQ1NAogICAgICAgIDB4
YjRjNWEzZmU6ICAgIGNtbiAgICByMSwgIzcKICAgICAgICAweGI0YzVhNDAyOiAgICBiaGkgICAg
MHhiNGM1Y2NlNgogICAgICAgIDB4YjRjNWE0MDY6ICAgIGNtbiAgICByMywgIzcKICAgICAgICAw
eGI0YzVhNDBhOiAgICBibG8gICAgMHhiNGM1YTQxZQogICAgICAgIDB4YjRjNWE0MGM6ICAgIGNt
cCAgICByMywgIzQyOTQ5NjcyOTUKICAgICAgICAweGI0YzVhNDEwOiAgICBibmUgICAgMHhiNGM1
Y2NlNgogICAgICAgIDB4YjRjNWE0MTQ6ICAgIHZtb3YgICBkNywgcjIsIHIyCiAgICAgICAgMHhi
NGM1YTQxODogICAgdmN2dC5mNjQuczMyIGQwLCBzMTQKICAgICAgICAweGI0YzVhNDFjOiAgICBi
ICAgICAgMHhiNGM1YTQyMgogICAgICAgIDB4YjRjNWE0MWU6ICAgIHZsZHIgICBkMCwgW3I3LCAj
LTcyXQogICAgICAgIDB4YjRjNWE0MjI6ICAgIHZsZHIgICBkMiwgW3I3LCAjLTQ4XQogICAgICAg
IDB4YjRjNWE0MjY6ICAgIHZjbXAuZjY0IGQwLCBkMgogICAgICAgIDB4YjRjNWE0MmE6ICAgIHZt
cnMgICBhcHNyX256Y3YsIGZwc2NyCiAgICAgICAgMHhiNGM1YTQyZTogICAgYmxlICAgIDB4YjRj
NWIzNTQKICAgICAgICAweGI0YzVhNDMyOiAgICBiICAgICAgMHhiNGM1YTQ1NAogICAgICAgIDB4
YjRjNWE0MzQ6ICAgIHZtb3YgICBkNywgcjAsIHIwCiAgICAgICAgMHhiNGM1YTQzODogICAgdmN2
dC5mNjQuczMyIGQwLCBzMTQKICAgICAgICAweGI0YzVhNDNjOiAgICBjbW4gICAgcjMsICM3CiAg
ICAgICAgMHhiNGM1YTQ0MDogICAgYmhpICAgIDB4YjRjNWNjZTYKICAgICAgICAweGI0YzVhNDQ0
OiAgICB2bGRyICAgZDEsIFtyNywgIy03Ml0KICAgICAgICAweGI0YzVhNDQ4OiAgICB2Y21wLmY2
NCBkMSwgZDAKICAgICAgICAweGI0YzVhNDRjOiAgICB2bXJzICAgYXBzcl9uemN2LCBmcHNjcgog
ICAgICAgIDB4YjRjNWE0NTA6ICAgIGJsZSAgICAweGI0YzViMzU0CiAgICBbIDUzMl0gbG9vcF9o
aW50ICAgICAgICAgCiAgICBbIDUzM10gY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQgbG9jNSwg
bG9jMCwgQ2VsbDogMHhiNDdiNmNjMCAoMHhiNDdmN2E0MDpbU3ltYm9sVGFibGUsIHt9LCBOb25B
cnJheSwgTGVhZl0pKGNvbnN0MjcpLCA8SlNWYWx1ZSgpPihjb25zdDEpCiAgICAgICAgMHhiNGM1
YTQ1NDogICAgbW92dyAgIHIxMiwgIzQ5NzYwCiAgICAgICAgMHhiNGM1YTQ1ODogICAgbW92dCAg
IHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YTQ1YzogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhd
CiAgICAgICAgMHhiNGM1YTQ2MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVh
NDY0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWE0Njg6ICAgIHN0ciAgICBy
NywgW3I2XQogICAgICAgIDB4YjRjNWE0NmE6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0
YzVhNDZjOiAgICBtb3Z3ICAgcjEsICM0OTc1NgogICAgICAgIDB4YjRjNWE0NzA6ICAgIG1vdnQg
ICByMSwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YTQ3NDogICAgbW92dyAgIHIxMiwgIzIyOTM3CiAg
ICAgICAgMHhiNGM1YTQ3ODogICAgbW92dCAgIHIxMiwgIzQ2NzkzCiAgICAgICAgMHhiNGM1YTQ3
YzogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWE0N2U6ICAgIG1vdncgICByNiwgIzQ2MzQ4
CiAgICAgICAgMHhiNGM1YTQ4MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVh
NDg2OiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVhNDg4OiAgICBjbXAgICAgcjIs
ICMwCiAgICAgICAgMHhiNGM1YTQ4YTogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgIFsgNTM4XSBt
b3YgICAgICAgICAgICAgICBsb2MwLCBsb2M1CiAgICAgICAgMHhiNGM1YTQ4ZTogICAgbGRyICAg
IHIwLCBbcjcsICMtNDhdCiAgICAgICAgMHhiNGM1YTQ5MjogICAgbGRyICAgIHIxLCBbcjcsICMt
NDRdCiAgICAgICAgMHhiNGM1YTQ5NjogICAgc3RyICAgIHIwLCBbcjcsICMtOF0KICAgICAgICAw
eGI0YzVhNDlhOiAgICBzdHIgICAgcjEsIFtyNywgIy00XQogICAgWyA1NDFdIHJlc29sdmVfc2Nv
cGUgICAgIGxvYzYsIGxvYzAsIGNhc2VzKEBpZDUpLCA8R2xvYmFsTGV4aWNhbFZhcj4sIDMsIDB4
YjQ3ZGZmYzAKICAgICAgICAweGI0YzVhNDllOiAgICBtdm4gICAgcjEsICM0CiAgICAgICAgMHhi
NGM1YTRhMjogICAgbW92dyAgIHIwLCAjNjU0NzIKICAgICAgICAweGI0YzVhNGE2OiAgICBtb3Z0
ICAgcjAsICM0NjIwNQogICAgICAgIDB4YjRjNWE0YWE6ICAgIHN0ciAgICByMCwgW3I3LCAjLTU2
XQogICAgICAgIDB4YjRjNWE0YWU6ICAgIHN0ciAgICByMSwgW3I3LCAjLTUyXQogICAgWyA1NDhd
IGdldF9mcm9tX3Njb3BlICAgIGxvYzYsIGxvYzYsIGNhc2VzKEBpZDUpLCAyMDUwPFRocm93SWZO
b3RGb3VuZHxHbG9iYWxMZXhpY2FsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgLTEyNjI1MDEzNzYg
ICAgcHJlZGljdGluZyBBcnJheQogICAgICAgIDB4YjRjNWE0YjI6ICAgIG1vdncgICByNiwgIzQ5
NjY4CiAgICAgICAgMHhiNGM1YTRiNjogICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI0
YzVhNGJhOiAgICBsZHIgICAgcjEsIFtyNl0KICAgICAgICAweGI0YzVhNGJjOiAgICBtb3Z3ICAg
cjYsICM0OTY2NAogICAgICAgIDB4YjRjNWE0YzA6ICAgIG1vdnQgICByNiwgIzQ2MjcxCiAgICAg
ICAgMHhiNGM1YTRjNDogICAgbGRyICAgIHIwLCBbcjZdCiAgICAgICAgMHhiNGM1YTRjNjogICAg
Y21uICAgIHIxLCAjNgogICAgICAgIDB4YjRjNWE0Y2E6ICAgIGJlcSAgICAweGI0YzVjZDNjCiAg
ICAgICAgMHhiNGM1YTRjZTogICAgc3RyICAgIHIwLCBbcjcsICMtNTZdCiAgICAgICAgMHhiNGM1
YTRkMjogICAgc3RyICAgIHIxLCBbcjcsICMtNTJdCiAgICBbIDU1Nl0gZ2V0X2Zyb21fc2NvcGUg
ICAgbG9jNywgbG9jNCwgaShAaWQxNyksIDIwNTE8VGhyb3dJZk5vdEZvdW5kfENsb3N1cmVWYXJ8
Tm90SW5pdGlhbGl6YXRpb24+LCAwICAgIHByZWRpY3RpbmcgTm9uYm9vbGludDMyCiAgICAgICAg
MHhiNGM1YTRkNjogICAgbGRyICAgIHIwLCBbcjcsICMtNDBdCiAgICAgICAgMHhiNGM1YTRkYTog
ICAgbGRyICAgIHIxLCBbcjcsICMtMzZdCiAgICAgICAgMHhiNGM1YTRkZTogICAgbGRyICAgIHIx
LCBbcjAsICMyOF0KICAgICAgICAweGI0YzVhNGUwOiAgICBsZHIgICAgcjAsIFtyMCwgIzI0XQog
ICAgICAgIDB4YjRjNWE0ZTI6ICAgIHN0ciAgICByMCwgW3I3LCAjLTY0XQogICAgICAgIDB4YjRj
NWE0ZTY6ICAgIHN0ciAgICByMSwgW3I3LCAjLTYwXQogICAgWyA1NjRdIGdldF9ieV92YWwgICAg
ICAgIGxvYzYsIGxvYzYsIGxvYzcgICAgQXJyYXlXaXRoQ29udGlndW91cywgT3JpZ2luYWw7IHBy
ZWRpY3RpbmcgTm9uaW50YXNkb3VibGUKICAgICAgICAweGI0YzVhNGVhOiAgICBsZHIgICAgcjIs
IFtyNywgIy02NF0KICAgICAgICAweGI0YzVhNGVlOiAgICBsZHIgICAgcjMsIFtyNywgIy02MF0K
ICAgICAgICAweGI0YzVhNGYyOiAgICBsZHIgICAgcjAsIFtyNywgIy01Nl0KICAgICAgICAweGI0
YzVhNGY2OiAgICBsZHIgICAgcjEsIFtyNywgIy01Ml0KICAgICAgICAweGI0YzVhNGZhOiAgICBj
bW4gICAgcjEsICM1CiAgICAgICAgMHhiNGM1YTRmZTogICAgYm5lICAgIDB4YjRjNWNkODIKICAg
ICAgICAweGI0YzVhNTAyOiAgICBjbXAgICAgcjMsICM0Mjk0OTY3Mjk1CiAgICAgICAgMHhiNGM1
YTUwNjogICAgaXR0dCAgIG5lCiAgICAgICAgMHhiNGM1YTUwODogICAgbW92d25lIHIxMiwgIzUy
NjExCiAgICAgICAgMHhiNGM1YTUwYzogICAgbW92dG5lIHIxMiwgIzQ2Mjc3CiAgICAgICAgMHhi
NGM1YTUxMDogICAgYnhuZSAgIHIxMgogICAgICAgIDB4YjRjNWE1MTI6ICAgIGxkcmIgICByMSwg
W3IwLCAjNF0KICAgICAgICAweGI0YzVhNTE0OiAgICBhbmQgICAgcjEsIHIxLCAjMTQKICAgICAg
ICAweGI0YzVhNTE4OiAgICBjbXAgICAgcjEsICM4CiAgICAgICAgMHhiNGM1YTUxYTogICAgaXR0
dCAgIG5lCiAgICAgICAgMHhiNGM1YTUxYzogICAgbW92d25lIHIxMiwgIzUyNjEzCiAgICAgICAg
MHhiNGM1YTUyMDogICAgbW92dG5lIHIxMiwgIzQ2Mjc3CiAgICAgICAgMHhiNGM1YTUyNDogICAg
YnhuZSAgIHIxMgogICAgICAgIDB4YjRjNWE1MjY6ICAgIGxkciAgICByMywgW3IwLCAjOF0KICAg
ICAgICAweGI0YzVhNTI4OiAgICBsZHIgICAgcjEyLCBbcjMsICMtOF0KICAgICAgICAweGI0YzVh
NTJjOiAgICBjbXAgICAgcjIsIHIxMgogICAgICAgIDB4YjRjNWE1MzA6ICAgIGJocyAgICAweGI0
YzVjZGFlCiAgICAgICAgMHhiNGM1YTUzNDogICAgYWRkcyAgIHI2LCByMywgIzQKICAgICAgICAw
eGI0YzVhNTM2OiAgICBsZHIgICAgcjEsIFtyNiwgcjIsICMzXQogICAgICAgIDB4YjRjNWE1M2E6
ICAgIGxkciAgICByMCwgW3IzLCByMiwgIzNdCiAgICAgICAgMHhiNGM1YTUzZTogICAgY21uICAg
IHIxLCAjNgogICAgICAgIDB4YjRjNWE1NDI6ICAgIGJlcSAgICAweGI0YzVjZGFlCiAgICAgICAg
MHhiNGM1YTU0NjogICAgc3RyICAgIHIwLCBbcjcsICMtNTZdCiAgICAgICAgMHhiNGM1YTU0YTog
ICAgc3RyICAgIHIxLCBbcjcsICMtNTJdCiAgICBbIDU3MF0gcHV0X3RvX3Njb3BlICAgICAgbG9j
NSwgYmFzZShAaWQxOSksIGxvYzYsIDEwNDg1ODA8RG9Ob3RUaHJvd0lmTm90Rm91bmR8TG9jYWxD
bG9zdXJlVmFyfEluaXRpYWxpemF0aW9uPiwgPHN0cnVjdHVyZT4sIDAKICAgICAgICAweGI0YzVh
NTRlOiAgICBsZHIgICAgcjAsIFtyNywgIy01Ml0KICAgICAgICAweGI0YzVhNTUyOiAgICBjbW4g
ICAgcjAsICM1CiAgICAgICAgMHhiNGM1YTU1NjogICAgYm5lICAgIDB4YjRjNWE1OTgKICAgICAg
ICAweGI0YzVhNTU4OiAgICBsZHIgICAgcjEsIFtyNywgIy00OF0KICAgICAgICAweGI0YzVhNTVj
OiAgICBsZHIgICAgcjAsIFtyNywgIy00NF0KICAgICAgICAweGI0YzVhNTYwOiAgICBsZHJiICAg
cjYsIFtyMSwgIzddCiAgICAgICAgMHhiNGM1YTU2MjogICAgdHN0ICAgIHI2LCByNgogICAgICAg
IDB4YjRjNWE1NjQ6ICAgIGJuZSAgICAweGI0YzVhNTk4CiAgICAgICAgMHhiNGM1YTU2NjogICAg
bW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWE1Njg6ICAgIG1vdncgICByMTIsICM0OTkwOAog
ICAgICAgIDB4YjRjNWE1NmM6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWE1
NzA6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWE1NzQ6ICAgIG1vdncg
ICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1YTU3ODogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
ICAgICAweGI0YzVhNTdjOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVhNTdlOiAg
ICBtb3Z3ICAgcjEyLCAjNjMxNzcKICAgICAgICAweGI0YzVhNTgyOiAgICBtb3Z0ICAgcjEyLCAj
NDY3NzYKICAgICAgICAweGI0YzVhNTg2OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1YTU4
ODogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVhNThjOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgICAgIDB4YjRjNWE1OTA6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4
YjRjNWE1OTI6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVhNTk0OiAgICBibmUgICAg
MHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWE1OTg6ICAgIGxkciAgICByMiwgW3I3LCAjLTU2XQog
ICAgICAgIDB4YjRjNWE1OWM6ICAgIGxkciAgICByMywgW3I3LCAjLTUyXQogICAgICAgIDB4YjRj
NWE1YTA6ICAgIGxkciAgICByMCwgW3I3LCAjLTQ4XQogICAgICAgIDB4YjRjNWE1YTQ6ICAgIGxk
ciAgICByMSwgW3I3LCAjLTQ0XQogICAgICAgIDB4YjRjNWE1YTg6ICAgIHN0ciAgICByMywgW3Iw
LCAjMjhdCiAgICAgICAgMHhiNGM1YTVhYTogICAgc3RyICAgIHIyLCBbcjAsICMyNF0KICAgIFsg
NTc3XSByZXNvbHZlX3Njb3BlICAgICBsb2M2LCBsb2MwLCBleHBlY3RlZFJlc3VsdHMoQGlkMTQp
LCA8R2xvYmFsTGV4aWNhbFZhcj4sIDMsIDB4YjQ3ZGZmYzAKICAgICAgICAweGI0YzVhNWFjOiAg
ICBtdm4gICAgcjEsICM0CiAgICAgICAgMHhiNGM1YTViMDogICAgbW92dyAgIHIwLCAjNjU0NzIK
ICAgICAgICAweGI0YzVhNWI0OiAgICBtb3Z0ICAgcjAsICM0NjIwNQogICAgICAgIDB4YjRjNWE1
Yjg6ICAgIHN0ciAgICByMCwgW3I3LCAjLTU2XQogICAgICAgIDB4YjRjNWE1YmM6ICAgIHN0ciAg
ICByMSwgW3I3LCAjLTUyXQogICAgWyA1ODRdIGdldF9mcm9tX3Njb3BlICAgIGxvYzYsIGxvYzYs
IGV4cGVjdGVkUmVzdWx0cyhAaWQxNCksIDIwNTA8VGhyb3dJZk5vdEZvdW5kfEdsb2JhbExleGlj
YWxWYXJ8Tm90SW5pdGlhbGl6YXRpb24+LCAtMTI2MjUwMTM2MCAgICBwcmVkaWN0aW5nIEFycmF5
CiAgICAgICAgMHhiNGM1YTVjMDogICAgbW92dyAgIHI2LCAjNDk2ODQKICAgICAgICAweGI0YzVh
NWM0OiAgICBtb3Z0ICAgcjYsICM0NjI3MQogICAgICAgIDB4YjRjNWE1Yzg6ICAgIGxkciAgICBy
MSwgW3I2XQogICAgICAgIDB4YjRjNWE1Y2E6ICAgIG1vdncgICByNiwgIzQ5NjgwCiAgICAgICAg
MHhiNGM1YTVjZTogICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI0YzVhNWQyOiAgICBs
ZHIgICAgcjAsIFtyNl0KICAgICAgICAweGI0YzVhNWQ0OiAgICBjbW4gICAgcjEsICM2CiAgICAg
ICAgMHhiNGM1YTVkODogICAgYmVxICAgIDB4YjRjNWNlMTIKICAgICAgICAweGI0YzVhNWRjOiAg
ICBzdHIgICAgcjAsIFtyNywgIy01Nl0KICAgICAgICAweGI0YzVhNWUwOiAgICBzdHIgICAgcjEs
IFtyNywgIy01Ml0KICAgIFsgNTkyXSBnZXRfZnJvbV9zY29wZSAgICBsb2M3LCBsb2M0LCBpKEBp
ZDE3KSwgMjA1MTxUaHJvd0lmTm90Rm91bmR8Q2xvc3VyZVZhcnxOb3RJbml0aWFsaXphdGlvbj4s
IDAgICAgcHJlZGljdGluZyBOb25ib29saW50MzIKICAgICAgICAweGI0YzVhNWU0OiAgICBsZHIg
ICAgcjAsIFtyNywgIy00MF0KICAgICAgICAweGI0YzVhNWU4OiAgICBsZHIgICAgcjEsIFtyNywg
Iy0zNl0KICAgICAgICAweGI0YzVhNWVjOiAgICBsZHIgICAgcjEsIFtyMCwgIzI4XQogICAgICAg
IDB4YjRjNWE1ZWU6ICAgIGxkciAgICByMCwgW3IwLCAjMjRdCiAgICAgICAgMHhiNGM1YTVmMDog
ICAgc3RyICAgIHIwLCBbcjcsICMtNjRdCiAgICAgICAgMHhiNGM1YTVmNDogICAgc3RyICAgIHIx
LCBbcjcsICMtNjBdCiAgICBbIDYwMF0gbmV3X2FycmF5ICAgICAgICAgbG9jMywgaGVhZDAsIDAK
ICAgICAgICAweGI0YzVhNWY4OiAgICBhZGRzICAgcjAsIHI3LCAjMAogICAgICAgIDB4YjRjNWE1
ZmE6ICAgIG1vdiAgICByMiwgcjAKICAgICAgICAweGI0YzVhNWZjOiAgICBtb3Z3ICAgcjEsICMy
NTk2OAogICAgICAgIDB4YjRjNWE2MDA6ICAgIG1vdnQgICByMSwgIzQ2MjcwCiAgICAgICAgMHhi
NGM1YTYwNDogICAgbW92cyAgIHIzLCAjMAogICAgICAgIDB4YjRjNWE2MDY6ICAgIG1vdiAgICBy
MCwgcjcKICAgICAgICAweGI0YzVhNjA4OiAgICBtb3Z3ICAgcjEyLCAjNTAwMjgKICAgICAgICAw
eGI0YzVhNjBjOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVhNjEwOiAgICBz
dHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVhNjE0OiAgICBtb3Z3ICAgcjYsICM0
MjEyOAogICAgICAgIDB4YjRjNWE2MTg6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhi
NGM1YTYxYzogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1YTYxZTogICAgbW92dyAg
IHIxMiwgIzU3NjA5CiAgICAgICAgMHhiNGM1YTYyMjogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAg
ICAgICAgMHhiNGM1YTYyNjogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWE2Mjg6ICAgIG1v
dncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1YTYyYzogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgICAgICAweGI0YzVhNjMwOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVhNjMy
OiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1YTYzNDogICAgYm5lICAgIDB4YjRjNWU2
ODAKICAgICAgICAweGI0YzVhNjM4OiAgICBzdHIgICAgcjAsIFtyNywgIy0zMl0KICAgICAgICAw
eGI0YzVhNjNjOiAgICBzdHIgICAgcjEsIFtyNywgIy0yOF0KICAgIFsgNjA1XSBwdXRfYnlfdmFs
ICAgICAgICBsb2M2LCBsb2M3LCBsb2MzICAgIEFycmF5V2l0aENvbnRpZ3VvdXMsIE9yaWdpbmFs
CiAgICAgICAgMHhiNGM1YTY0MDogICAgbGRyICAgIHIyLCBbcjcsICMtNjRdCiAgICAgICAgMHhi
NGM1YTY0NDogICAgbGRyICAgIHIzLCBbcjcsICMtNjBdCiAgICAgICAgMHhiNGM1YTY0ODogICAg
bGRyICAgIHIwLCBbcjcsICMtNTZdCiAgICAgICAgMHhiNGM1YTY0YzogICAgbGRyICAgIHIxLCBb
cjcsICMtNTJdCiAgICAgICAgMHhiNGM1YTY1MDogICAgY21uICAgIHIxLCAjNQogICAgICAgIDB4
YjRjNWE2NTQ6ICAgIGJuZSAgICAweGI0YzVjZTU4CiAgICAgICAgMHhiNGM1YTY1ODogICAgY21w
ICAgIHIzLCAjNDI5NDk2NzI5NQogICAgICAgIDB4YjRjNWE2NWM6ICAgIGl0dHQgICBuZQogICAg
ICAgIDB4YjRjNWE2NWU6ICAgIG1vdnduZSByMTIsICM1MjgyNQogICAgICAgIDB4YjRjNWE2NjI6
ICAgIG1vdnRuZSByMTIsICM0NjI3NwogICAgICAgIDB4YjRjNWE2NjY6ICAgIGJ4bmUgICByMTIK
ICAgICAgICAweGI0YzVhNjY4OiAgICBsZHJiICAgcjEsIFtyMCwgIzRdCiAgICAgICAgMHhiNGM1
YTY2YTogICAgYW5kICAgIHIxLCByMSwgIzE0CiAgICAgICAgMHhiNGM1YTY2ZTogICAgY21wICAg
IHIxLCAjOAogICAgICAgIDB4YjRjNWE2NzA6ICAgIGl0dHQgICBuZQogICAgICAgIDB4YjRjNWE2
NzI6ICAgIG1vdnduZSByMTIsICM1MjgyNQogICAgICAgIDB4YjRjNWE2NzY6ICAgIG1vdnRuZSBy
MTIsICM0NjI3NwogICAgICAgIDB4YjRjNWE2N2E6ICAgIGJ4bmUgICByMTIKICAgICAgICAweGI0
YzVhNjdjOiAgICBsZHIgICAgcjMsIFtyMCwgIzhdCiAgICAgICAgMHhiNGM1YTY3ZTogICAgbGRy
ICAgIHIxMiwgW3IzLCAjLThdCiAgICAgICAgMHhiNGM1YTY4MjogICAgY21wICAgIHIyLCByMTIK
ICAgICAgICAweGI0YzVhNjg2OiAgICBiaHMgICAgMHhiNGM1YTZlZQogICAgICAgIDB4YjRjNWE2
ODg6ICAgIGxkciAgICByMCwgW3I3LCAjLTMyXQogICAgICAgIDB4YjRjNWE2OGM6ICAgIGxkciAg
ICByMSwgW3I3LCAjLTI4XQogICAgICAgIDB4YjRjNWE2OTA6ICAgIHN0ciAgICByMCwgW3IzLCBy
MiwgbHNsICMzXQogICAgICAgIDB4YjRjNWE2OTQ6ICAgIGFkZHMgICByNiwgcjMsICM0CiAgICAg
ICAgMHhiNGM1YTY5NjogICAgc3RyICAgIHIxLCBbcjYsIHIyLCBsc2wgIzNdCiAgICAgICAgMHhi
NGM1YTY5YTogICAgbGRyICAgIHIzLCBbcjcsICMtNTZdCiAgICAgICAgMHhiNGM1YTY5ZTogICAg
bGRyICAgIHIyLCBbcjcsICMtNTJdCiAgICAgICAgMHhiNGM1YTZhMjogICAgbGRyICAgIHIwLCBb
cjcsICMtMjhdCiAgICAgICAgMHhiNGM1YTZhNjogICAgY21uICAgIHIwLCAjNQogICAgICAgIDB4
YjRjNWE2YWE6ICAgIGJuZSAgICAweGI0YzVhNmVjCiAgICAgICAgMHhiNGM1YTZhYzogICAgbGRy
ICAgIHIxLCBbcjcsICMtNTZdCiAgICAgICAgMHhiNGM1YTZiMDogICAgbGRyICAgIHIwLCBbcjcs
ICMtNTJdCiAgICAgICAgMHhiNGM1YTZiNDogICAgbGRyYiAgIHI2LCBbcjEsICM3XQogICAgICAg
IDB4YjRjNWE2YjY6ICAgIHRzdCAgICByNiwgcjYKICAgICAgICAweGI0YzVhNmI4OiAgICBibmUg
ICAgMHhiNGM1YTZlYwogICAgICAgIDB4YjRjNWE2YmE6ICAgIG1vdiAgICByMCwgcjcKICAgICAg
ICAweGI0YzVhNmJjOiAgICBtb3Z3ICAgcjEyLCAjNTAwNDgKICAgICAgICAweGI0YzVhNmMwOiAg
ICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVhNmM0OiAgICBzdHIgICAgcjEyLCBb
cjcsICMyOF0KICAgICAgICAweGI0YzVhNmM4OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAg
IDB4YjRjNWE2Y2M6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1YTZkMDogICAg
c3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1YTZkMjogICAgbW92dyAgIHIxMiwgIzYzMTc3
CiAgICAgICAgMHhiNGM1YTZkNjogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAgICAgMHhiNGM1
YTZkYTogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWE2ZGM6ICAgIG1vdncgICByNiwgIzQ2
MzQ4CiAgICAgICAgMHhiNGM1YTZlMDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0
YzVhNmU0OiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVhNmU2OiAgICBjbXAgICAg
cjIsICMwCiAgICAgICAgMHhiNGM1YTZlODogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAw
eGI0YzVhNmVjOiAgICBiICAgICAgMHhiNGM1YTcxMgogICAgICAgIDB4YjRjNWE2ZWU6ICAgIGxk
ciAgICByMTIsIFtyMywgIy00XQogICAgICAgIDB4YjRjNWE2ZjI6ICAgIGNtcCAgICByMiwgcjEy
CiAgICAgICAgMHhiNGM1YTZmNjogICAgYmhzICAgIDB4YjRjNWNlNWEKICAgICAgICAweGI0YzVh
NmZhOiAgICBtb3YgICAgcjEyLCAjMQogICAgICAgIDB4YjRjNWE2ZmU6ICAgIG1vdncgICByNiwg
IzYzNTYwCiAgICAgICAgMHhiNGM1YTcwMjogICAgbW92dCAgIHI2LCAjNDYyNjUKICAgICAgICAw
eGI0YzVhNzA2OiAgICAubG9uZyAgZjg4NmMwMDAKICAgICAgICAweGI0YzVhNzBhOiAgICBhZGRz
ICAgcjEsIHIyLCAjMQogICAgICAgIDB4YjRjNWE3MGM6ICAgIHN0ciAgICByMSwgW3IzLCAjLThd
CiAgICAgICAgMHhiNGM1YTcxMDogICAgYiAgICAgIDB4YjRjNWI2ODgKICAgIFsgNjEwXSBtb3Yg
ICAgICAgICAgICAgICBsb2M2LCA8SlNWYWx1ZSgpPihjb25zdDEpCiAgICAgICAgMHhiNGM1YTcx
MjogICAgbW92ICAgIHIxMiwgIzAKICAgICAgICAweGI0YzVhNzE2OiAgICBzdHIgICAgcjEyLCBb
cjcsICMtNTZdCiAgICAgICAgMHhiNGM1YTcxYTogICAgbXZuICAgIHIxMiwgIzUKICAgICAgICAw
eGI0YzVhNzFlOiAgICBzdHIgICAgcjEyLCBbcjcsICMtNTJdCiAgICBbIDYxM10gbW92ICAgICAg
ICAgICAgICAgbG9jNiwgSW50MzI6IDAoY29uc3QyNikKICAgICAgICAweGI0YzVhNzIyOiAgICBt
b3YgICAgcjEyLCAjMAogICAgICAgIDB4YjRjNWE3MjY6ICAgIHN0ciAgICByMTIsIFtyNywgIy01
Nl0KICAgICAgICAweGI0YzVhNzJhOiAgICBtb3YgICAgcjEyLCAjNDI5NDk2NzI5NQogICAgICAg
IDB4YjRjNWE3MmU6ICAgIHN0ciAgICByMTIsIFtyNywgIy01Ml0KICAgIFsgNjE2XSBtb3YgICAg
ICAgICAgICAgICBsb2M3LCBsb2M2CiAgICAgICAgMHhiNGM1YTczMjogICAgbGRyICAgIHIwLCBb
cjcsICMtNTZdCiAgICAgICAgMHhiNGM1YTczNjogICAgbGRyICAgIHIxLCBbcjcsICMtNTJdCiAg
ICAgICAgMHhiNGM1YTczYTogICAgc3RyICAgIHIwLCBbcjcsICMtNjRdCiAgICAgICAgMHhiNGM1
YTczZTogICAgc3RyICAgIHIxLCBbcjcsICMtNjBdCiAgICBbIDYxOV0gcmVzb2x2ZV9zY29wZSAg
ICAgbG9jOCwgbG9jMCwgY2FzZXMoQGlkNSksIDxHbG9iYWxMZXhpY2FsVmFyPiwgMywgMHhiNDdk
ZmZjMAogICAgICAgIDB4YjRjNWE3NDI6ICAgIG12biAgICByMSwgIzQKICAgICAgICAweGI0YzVh
NzQ2OiAgICBtb3Z3ICAgcjAsICM2NTQ3MgogICAgICAgIDB4YjRjNWE3NGE6ICAgIG1vdnQgICBy
MCwgIzQ2MjA1CiAgICAgICAgMHhiNGM1YTc0ZTogICAgc3RyICAgIHIwLCBbcjcsICMtNzJdCiAg
ICAgICAgMHhiNGM1YTc1MjogICAgc3RyICAgIHIxLCBbcjcsICMtNjhdCiAgICBbIDYyNl0gZ2V0
X2Zyb21fc2NvcGUgICAgbG9jOSwgbG9jOCwgY2FzZXMoQGlkNSksIDIwNTA8VGhyb3dJZk5vdEZv
dW5kfEdsb2JhbExleGljYWxWYXJ8Tm90SW5pdGlhbGl6YXRpb24+LCAtMTI2MjUwMTM3NiAgICBw
cmVkaWN0aW5nIEFycmF5CiAgICAgICAgMHhiNGM1YTc1NjogICAgbW92dyAgIHI2LCAjNDk2NjgK
ICAgICAgICAweGI0YzVhNzVhOiAgICBtb3Z0ICAgcjYsICM0NjI3MQogICAgICAgIDB4YjRjNWE3
NWU6ICAgIGxkciAgICByMSwgW3I2XQogICAgICAgIDB4YjRjNWE3NjA6ICAgIG1vdncgICByNiwg
IzQ5NjY0CiAgICAgICAgMHhiNGM1YTc2NDogICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAw
eGI0YzVhNzY4OiAgICBsZHIgICAgcjAsIFtyNl0KICAgICAgICAweGI0YzVhNzZhOiAgICBjbW4g
ICAgcjEsICM2CiAgICAgICAgMHhiNGM1YTc2ZTogICAgYmVxICAgIDB4YjRjNWNlZDYKICAgICAg
ICAweGI0YzVhNzcyOiAgICBzdHIgICAgcjAsIFtyNywgIy04MF0KICAgICAgICAweGI0YzVhNzc2
OiAgICBzdHIgICAgcjEsIFtyNywgIy03Nl0KICAgIFsgNjM0XSBhcnJheV9sZW5ndGggICAgICBs
b2MxMCwgbG9jOSwgbGVuZ3RoKEBpZDE4KSBsbGludChhcnJheV9sZW5ndGgpICAgIHByZWRpY3Rp
bmcgTm9uYm9vbGludDMyCiAgICAgICAgMHhiNGM1YTc3YTogICAgbGRyICAgIHIwLCBbcjcsICMt
ODBdCiAgICAgICAgMHhiNGM1YTc3ZTogICAgbGRyICAgIHIxLCBbcjcsICMtNzZdCiAgICAgICAg
MHhiNGM1YTc4MjogICAgY21uICAgIHIxLCAjNQogICAgICAgIDB4YjRjNWE3ODY6ICAgIGJuZSAg
ICAweGI0YzVjZjFjCiAgICAgICAgMHhiNGM1YTc4YTogICAgbGRyICAgIHI2LCBbcjBdCiAgICAg
ICAgMHhiNGM1YTc4YzogICAgbW92dyAgIHIxMiwgIzAKICAgICAgICAweGI0YzVhNzkwOiAgICBt
b3Z0ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNWE3OTQ6ICAgIGNtcCAgICByNiwgcjEyCiAgICAg
ICAgMHhiNGM1YTc5ODogICAgaXR0dCAgIG5lCiAgICAgICAgMHhiNGM1YTc5YTogICAgbW92d25l
IHIxMiwgIzUzMDIxCiAgICAgICAgMHhiNGM1YTc5ZTogICAgbW92dG5lIHIxMiwgIzQ2Mjc3CiAg
ICAgICAgMHhiNGM1YTdhMjogICAgYnhuZSAgIHIxMgogICAgICAgIDB4YjRjNWE3YTQ6ICAgIGxk
ciAgICByMSwgW3IwXQogICAgICAgIDB4YjRjNWE3YTg6ICAgIGxkciAgICByMCwgW3IwXQogICAg
ICAgIDB4YjRjNWE3YWM6ICAgIHN0ciAgICByMCwgW3I3LCAjLTg4XQogICAgICAgIDB4YjRjNWE3
YjA6ICAgIHN0ciAgICByMSwgW3I3LCAjLTg0XQogICAgWyA2NDNdIGpubGVzcyAgICAgICAgICAg
IGxvYzcsIGxvYzEwLCAxNDMoLT43ODYpCiAgICAgICAgMHhiNGM1YTdiNDogICAgbGRyICAgIHIy
LCBbcjcsICMtODhdCiAgICAgICAgMHhiNGM1YTdiODogICAgbGRyICAgIHIzLCBbcjcsICMtODRd
CiAgICAgICAgMHhiNGM1YTdiYzogICAgbGRyICAgIHIwLCBbcjcsICMtNjRdCiAgICAgICAgMHhi
NGM1YTdjMDogICAgbGRyICAgIHIxLCBbcjcsICMtNjBdCiAgICAgICAgMHhiNGM1YTdjNDogICAg
Y21wICAgIHIxLCAjNDI5NDk2NzI5NQogICAgICAgIDB4YjRjNWE3Yzg6ICAgIGJuZSAgICAweGI0
YzVhN2Q4CiAgICAgICAgMHhiNGM1YTdjYTogICAgY21wICAgIHIzLCAjNDI5NDk2NzI5NQogICAg
ICAgIDB4YjRjNWE3Y2U6ICAgIGJuZSAgICAweGI0YzVhODBlCiAgICAgICAgMHhiNGM1YTdkMDog
ICAgY21wICAgIHIwLCByMgogICAgICAgIDB4YjRjNWE3ZDI6ICAgIGJnZSAgICAweGI0YzVhYzk4
CiAgICAgICAgMHhiNGM1YTdkNjogICAgYiAgICAgIDB4YjRjNWE4MmUKICAgICAgICAweGI0YzVh
N2Q4OiAgICBjbW4gICAgcjEsICM3CiAgICAgICAgMHhiNGM1YTdkYzogICAgYmhpICAgIDB4YjRj
NWNmNzIKICAgICAgICAweGI0YzVhN2UwOiAgICBjbW4gICAgcjMsICM3CiAgICAgICAgMHhiNGM1
YTdlNDogICAgYmxvICAgIDB4YjRjNWE3ZjgKICAgICAgICAweGI0YzVhN2U2OiAgICBjbXAgICAg
cjMsICM0Mjk0OTY3Mjk1CiAgICAgICAgMHhiNGM1YTdlYTogICAgYm5lICAgIDB4YjRjNWNmNzIK
ICAgICAgICAweGI0YzVhN2VlOiAgICB2bW92ICAgZDcsIHIyLCByMgogICAgICAgIDB4YjRjNWE3
ZjI6ICAgIHZjdnQuZjY0LnMzMiBkMCwgczE0CiAgICAgICAgMHhiNGM1YTdmNjogICAgYiAgICAg
IDB4YjRjNWE3ZmMKICAgICAgICAweGI0YzVhN2Y4OiAgICB2bGRyICAgZDAsIFtyNywgIy04OF0K
ICAgICAgICAweGI0YzVhN2ZjOiAgICB2bGRyICAgZDIsIFtyNywgIy02NF0KICAgICAgICAweGI0
YzVhODAwOiAgICB2Y21wLmY2NCBkMCwgZDIKICAgICAgICAweGI0YzVhODA0OiAgICB2bXJzICAg
YXBzcl9uemN2LCBmcHNjcgogICAgICAgIDB4YjRjNWE4MDg6ICAgIGJsZSAgICAweGI0YzVhYzk4
CiAgICAgICAgMHhiNGM1YTgwYzogICAgYiAgICAgIDB4YjRjNWE4MmUKICAgICAgICAweGI0YzVh
ODBlOiAgICB2bW92ICAgZDcsIHIwLCByMAogICAgICAgIDB4YjRjNWE4MTI6ICAgIHZjdnQuZjY0
LnMzMiBkMCwgczE0CiAgICAgICAgMHhiNGM1YTgxNjogICAgY21uICAgIHIzLCAjNwogICAgICAg
IDB4YjRjNWE4MWE6ICAgIGJoaSAgICAweGI0YzVjZjcyCiAgICAgICAgMHhiNGM1YTgxZTogICAg
dmxkciAgIGQxLCBbcjcsICMtODhdCiAgICAgICAgMHhiNGM1YTgyMjogICAgdmNtcC5mNjQgZDEs
IGQwCiAgICAgICAgMHhiNGM1YTgyNjogICAgdm1ycyAgIGFwc3JfbnpjdiwgZnBzY3IKICAgICAg
ICAweGI0YzVhODJhOiAgICBibGUgICAgMHhiNGM1YWM5OAogICAgWyA2NDddIGxvb3BfaGludCAg
ICAgICAgIAogICAgWyA2NDhdIG1vdiAgICAgICAgICAgICAgIGxvYzcsIDxKU1ZhbHVlKCk+KGNv
bnN0MSkKICAgICAgICAweGI0YzVhODJlOiAgICBtb3YgICAgcjEyLCAjMAogICAgICAgIDB4YjRj
NWE4MzI6ICAgIHN0ciAgICByMTIsIFtyNywgIy02NF0KICAgICAgICAweGI0YzVhODM2OiAgICBt
dm4gICAgcjEyLCAjNQogICAgICAgIDB4YjRjNWE4M2E6ICAgIHN0ciAgICByMTIsIFtyNywgIy02
MF0KICAgIFsgNjUxXSByZXNvbHZlX3Njb3BlICAgICBsb2M4LCBsb2MwLCBjYXNlcyhAaWQ1KSwg
PEdsb2JhbExleGljYWxWYXI+LCAzLCAweGI0N2RmZmMwCiAgICAgICAgMHhiNGM1YTgzZTogICAg
bXZuICAgIHIxLCAjNAogICAgICAgIDB4YjRjNWE4NDI6ICAgIG1vdncgICByMCwgIzY1NDcyCiAg
ICAgICAgMHhiNGM1YTg0NjogICAgbW92dCAgIHIwLCAjNDYyMDUKICAgICAgICAweGI0YzVhODRh
OiAgICBzdHIgICAgcjAsIFtyNywgIy03Ml0KICAgICAgICAweGI0YzVhODRlOiAgICBzdHIgICAg
cjEsIFtyNywgIy02OF0KICAgIFsgNjU4XSBnZXRfZnJvbV9zY29wZSAgICBsb2M5LCBsb2M4LCBj
YXNlcyhAaWQ1KSwgMjA1MDxUaHJvd0lmTm90Rm91bmR8R2xvYmFsTGV4aWNhbFZhcnxOb3RJbml0
aWFsaXphdGlvbj4sIC0xMjYyNTAxMzc2ICAgIHByZWRpY3RpbmcgQXJyYXkKICAgICAgICAweGI0
YzVhODUyOiAgICBtb3Z3ICAgcjYsICM0OTY2OAogICAgICAgIDB4YjRjNWE4NTY6ICAgIG1vdnQg
ICByNiwgIzQ2MjcxCiAgICAgICAgMHhiNGM1YTg1YTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAg
ICAgMHhiNGM1YTg1YzogICAgbW92dyAgIHI2LCAjNDk2NjQKICAgICAgICAweGI0YzVhODYwOiAg
ICBtb3Z0ICAgcjYsICM0NjI3MQogICAgICAgIDB4YjRjNWE4NjQ6ICAgIGxkciAgICByMCwgW3I2
XQogICAgICAgIDB4YjRjNWE4NjY6ICAgIGNtbiAgICByMSwgIzYKICAgICAgICAweGI0YzVhODZh
OiAgICBiZXEgICAgMHhiNGM1Y2ZjOAogICAgICAgIDB4YjRjNWE4NmU6ICAgIHN0ciAgICByMCwg
W3I3LCAjLTgwXQogICAgICAgIDB4YjRjNWE4NzI6ICAgIHN0ciAgICByMSwgW3I3LCAjLTc2XQog
ICAgWyA2NjZdIGdldF9ieV92YWwgICAgICAgIGxvYzcsIGxvYzksIGxvYzYgICAgQXJyYXlXaXRo
Q29udGlndW91cywgT3JpZ2luYWw7IHByZWRpY3RpbmcgTm9uaW50YXNkb3VibGUKICAgICAgICAw
eGI0YzVhODc2OiAgICBsZHIgICAgcjIsIFtyNywgIy01Nl0KICAgICAgICAweGI0YzVhODdhOiAg
ICBsZHIgICAgcjMsIFtyNywgIy01Ml0KICAgICAgICAweGI0YzVhODdlOiAgICBsZHIgICAgcjAs
IFtyNywgIy04MF0KICAgICAgICAweGI0YzVhODgyOiAgICBsZHIgICAgcjEsIFtyNywgIy03Nl0K
ICAgICAgICAweGI0YzVhODg2OiAgICBjbW4gICAgcjEsICM1CiAgICAgICAgMHhiNGM1YTg4YTog
ICAgYm5lICAgIDB4YjRjNWQwMGUKICAgICAgICAweGI0YzVhODhlOiAgICBjbXAgICAgcjMsICM0
Mjk0OTY3Mjk1CiAgICAgICAgMHhiNGM1YTg5MjogICAgaXR0dCAgIG5lCiAgICAgICAgMHhiNGM1
YTg5NDogICAgbW92d25lIHIxMiwgIzUzMjYzCiAgICAgICAgMHhiNGM1YTg5ODogICAgbW92dG5l
IHIxMiwgIzQ2Mjc3CiAgICAgICAgMHhiNGM1YTg5YzogICAgYnhuZSAgIHIxMgogICAgICAgIDB4
YjRjNWE4OWU6ICAgIGxkcmIgICByMSwgW3IwLCAjNF0KICAgICAgICAweGI0YzVhOGEwOiAgICBh
bmQgICAgcjEsIHIxLCAjMTQKICAgICAgICAweGI0YzVhOGE0OiAgICBjbXAgICAgcjEsICM4CiAg
ICAgICAgMHhiNGM1YThhNjogICAgaXR0dCAgIG5lCiAgICAgICAgMHhiNGM1YThhODogICAgbW92
d25lIHIxMiwgIzUzMjY1CiAgICAgICAgMHhiNGM1YThhYzogICAgbW92dG5lIHIxMiwgIzQ2Mjc3
CiAgICAgICAgMHhiNGM1YThiMDogICAgYnhuZSAgIHIxMgogICAgICAgIDB4YjRjNWE4YjI6ICAg
IGxkciAgICByMywgW3IwLCAjOF0KICAgICAgICAweGI0YzVhOGI0OiAgICBsZHIgICAgcjEyLCBb
cjMsICMtOF0KICAgICAgICAweGI0YzVhOGI4OiAgICBjbXAgICAgcjIsIHIxMgogICAgICAgIDB4
YjRjNWE4YmM6ICAgIGJocyAgICAweGI0YzVkMDNhCiAgICAgICAgMHhiNGM1YThjMDogICAgYWRk
cyAgIHI2LCByMywgIzQKICAgICAgICAweGI0YzVhOGMyOiAgICBsZHIgICAgcjEsIFtyNiwgcjIs
ICMzXQogICAgICAgIDB4YjRjNWE4YzY6ICAgIGxkciAgICByMCwgW3IzLCByMiwgIzNdCiAgICAg
ICAgMHhiNGM1YThjYTogICAgY21uICAgIHIxLCAjNgogICAgICAgIDB4YjRjNWE4Y2U6ICAgIGJl
cSAgICAweGI0YzVkMDNhCiAgICAgICAgMHhiNGM1YThkMjogICAgc3RyICAgIHIwLCBbcjcsICMt
NjRdCiAgICAgICAgMHhiNGM1YThkNjogICAgc3RyICAgIHIxLCBbcjcsICMtNjBdCiAgICBbIDY3
Ml0gcmVzb2x2ZV9zY29wZSAgICAgbG9jOSwgbG9jMCwgZXhwZWN0ZWRSZXN1bHRzKEBpZDE0KSwg
PEdsb2JhbExleGljYWxWYXI+LCAzLCAweGI0N2RmZmMwCiAgICAgICAgMHhiNGM1YThkYTogICAg
bXZuICAgIHIxLCAjNAogICAgICAgIDB4YjRjNWE4ZGU6ICAgIG1vdncgICByMCwgIzY1NDcyCiAg
ICAgICAgMHhiNGM1YThlMjogICAgbW92dCAgIHIwLCAjNDYyMDUKICAgICAgICAweGI0YzVhOGU2
OiAgICBzdHIgICAgcjAsIFtyNywgIy04MF0KICAgICAgICAweGI0YzVhOGVhOiAgICBzdHIgICAg
cjEsIFtyNywgIy03Nl0KICAgIFsgNjc5XSBnZXRfZnJvbV9zY29wZSAgICBsb2M5LCBsb2M5LCBl
eHBlY3RlZFJlc3VsdHMoQGlkMTQpLCAyMDUwPFRocm93SWZOb3RGb3VuZHxHbG9iYWxMZXhpY2Fs
VmFyfE5vdEluaXRpYWxpemF0aW9uPiwgLTEyNjI1MDEzNjAgICAgcHJlZGljdGluZyBBcnJheQog
ICAgICAgIDB4YjRjNWE4ZWU6ICAgIG1vdncgICByNiwgIzQ5Njg0CiAgICAgICAgMHhiNGM1YThm
MjogICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI0YzVhOGY2OiAgICBsZHIgICAgcjEs
IFtyNl0KICAgICAgICAweGI0YzVhOGY4OiAgICBtb3Z3ICAgcjYsICM0OTY4MAogICAgICAgIDB4
YjRjNWE4ZmM6ICAgIG1vdnQgICByNiwgIzQ2MjcxCiAgICAgICAgMHhiNGM1YTkwMDogICAgbGRy
ICAgIHIwLCBbcjZdCiAgICAgICAgMHhiNGM1YTkwMjogICAgY21uICAgIHIxLCAjNgogICAgICAg
IDB4YjRjNWE5MDY6ICAgIGJlcSAgICAweGI0YzVkMDllCiAgICAgICAgMHhiNGM1YTkwYTogICAg
c3RyICAgIHIwLCBbcjcsICMtODBdCiAgICAgICAgMHhiNGM1YTkwZTogICAgc3RyICAgIHIxLCBb
cjcsICMtNzZdCiAgICBbIDY4N10gZ2V0X2Zyb21fc2NvcGUgICAgbG9jMTAsIGxvYzQsIGkoQGlk
MTcpLCAyMDUxPFRocm93SWZOb3RGb3VuZHxDbG9zdXJlVmFyfE5vdEluaXRpYWxpemF0aW9uPiwg
MCAgICBwcmVkaWN0aW5nIE5vbmJvb2xpbnQzMgogICAgICAgIDB4YjRjNWE5MTI6ICAgIGxkciAg
ICByMCwgW3I3LCAjLTQwXQogICAgICAgIDB4YjRjNWE5MTY6ICAgIGxkciAgICByMSwgW3I3LCAj
LTM2XQogICAgICAgIDB4YjRjNWE5MWE6ICAgIGxkciAgICByMSwgW3IwLCAjMjhdCiAgICAgICAg
MHhiNGM1YTkxYzogICAgbGRyICAgIHIwLCBbcjAsICMyNF0KICAgICAgICAweGI0YzVhOTFlOiAg
ICBzdHIgICAgcjAsIFtyNywgIy04OF0KICAgICAgICAweGI0YzVhOTIyOiAgICBzdHIgICAgcjEs
IFtyNywgIy04NF0KICAgIFsgNjk1XSBnZXRfYnlfdmFsICAgICAgICBsb2M4LCBsb2M5LCBsb2Mx
MCAgICBBcnJheVdpdGhDb250aWd1b3VzLCBPcmlnaW5hbDsgcHJlZGljdGluZyBBcnJheQogICAg
ICAgIDB4YjRjNWE5MjY6ICAgIGxkciAgICByMiwgW3I3LCAjLTg4XQogICAgICAgIDB4YjRjNWE5
MmE6ICAgIGxkciAgICByMywgW3I3LCAjLTg0XQogICAgICAgIDB4YjRjNWE5MmU6ICAgIGxkciAg
ICByMCwgW3I3LCAjLTgwXQogICAgICAgIDB4YjRjNWE5MzI6ICAgIGxkciAgICByMSwgW3I3LCAj
LTc2XQogICAgICAgIDB4YjRjNWE5MzY6ICAgIGNtbiAgICByMSwgIzUKICAgICAgICAweGI0YzVh
OTNhOiAgICBibmUgICAgMHhiNGM1ZDBlNAogICAgICAgIDB4YjRjNWE5M2U6ICAgIGNtcCAgICBy
MywgIzQyOTQ5NjcyOTUKICAgICAgICAweGI0YzVhOTQyOiAgICBpdHR0ICAgbmUKICAgICAgICAw
eGI0YzVhOTQ0OiAgICBtb3Z3bmUgcjEyLCAjNTM0NzcKICAgICAgICAweGI0YzVhOTQ4OiAgICBt
b3Z0bmUgcjEyLCAjNDYyNzcKICAgICAgICAweGI0YzVhOTRjOiAgICBieG5lICAgcjEyCiAgICAg
ICAgMHhiNGM1YTk0ZTogICAgbGRyYiAgIHIxLCBbcjAsICM0XQogICAgICAgIDB4YjRjNWE5NTA6
ICAgIGFuZCAgICByMSwgcjEsICMxNAogICAgICAgIDB4YjRjNWE5NTQ6ICAgIGNtcCAgICByMSwg
IzgKICAgICAgICAweGI0YzVhOTU2OiAgICBpdHR0ICAgbmUKICAgICAgICAweGI0YzVhOTU4OiAg
ICBtb3Z3bmUgcjEyLCAjNTM0NzkKICAgICAgICAweGI0YzVhOTVjOiAgICBtb3Z0bmUgcjEyLCAj
NDYyNzcKICAgICAgICAweGI0YzVhOTYwOiAgICBieG5lICAgcjEyCiAgICAgICAgMHhiNGM1YTk2
MjogICAgbGRyICAgIHIzLCBbcjAsICM4XQogICAgICAgIDB4YjRjNWE5NjQ6ICAgIGxkciAgICBy
MTIsIFtyMywgIy04XQogICAgICAgIDB4YjRjNWE5Njg6ICAgIGNtcCAgICByMiwgcjEyCiAgICAg
ICAgMHhiNGM1YTk2YzogICAgYmhzICAgIDB4YjRjNWQxMTAKICAgICAgICAweGI0YzVhOTcwOiAg
ICBhZGRzICAgcjYsIHIzLCAjNAogICAgICAgIDB4YjRjNWE5NzI6ICAgIGxkciAgICByMSwgW3I2
LCByMiwgIzNdCiAgICAgICAgMHhiNGM1YTk3NjogICAgbGRyICAgIHIwLCBbcjMsIHIyLCAjM10K
ICAgICAgICAweGI0YzVhOTdhOiAgICBjbW4gICAgcjEsICM2CiAgICAgICAgMHhiNGM1YTk3ZTog
ICAgYmVxICAgIDB4YjRjNWQxMTAKICAgICAgICAweGI0YzVhOTgyOiAgICBzdHIgICAgcjAsIFty
NywgIy03Ml0KICAgICAgICAweGI0YzVhOTg2OiAgICBzdHIgICAgcjEsIFtyNywgIy02OF0KICAg
IFsgNzAxXSBtb3YgICAgICAgICAgICAgICBsb2M5LCBsb2M2CiAgICAgICAgMHhiNGM1YTk4YTog
ICAgbGRyICAgIHIwLCBbcjcsICMtNTZdCiAgICAgICAgMHhiNGM1YTk4ZTogICAgbGRyICAgIHIx
LCBbcjcsICMtNTJdCiAgICAgICAgMHhiNGM1YTk5MjogICAgc3RyICAgIHIwLCBbcjcsICMtODBd
CiAgICAgICAgMHhiNGM1YTk5NjogICAgc3RyICAgIHIxLCBbcjcsICMtNzZdCiAgICBbIDcwNF0g
cmVzb2x2ZV9zY29wZSAgICAgbG9jMTMsIGxvYzAsIE1hdGgoQGlkMjApLCA8R2xvYmFsUHJvcGVy
dHk+LCA0LCAweGI0N2U3OGMwCiAgICAgICAgMHhiNGM1YTk5YTogICAgbXZuICAgIHIxLCAjNAog
ICAgICAgIDB4YjRjNWE5OWU6ICAgIG1vdncgICByMCwgIzMwOTEyCiAgICAgICAgMHhiNGM1YTlh
MjogICAgbW92dCAgIHIwLCAjNDYyMDYKICAgICAgICAweGI0YzVhOWE2OiAgICBzdHIgICAgcjAs
IFtyNywgIy0xMTJdCiAgICAgICAgMHhiNGM1YTlhYTogICAgc3RyICAgIHIxLCBbcjcsICMtMTA4
XQogICAgWyA3MTFdIGdldF9mcm9tX3Njb3BlICAgIGxvYzEzLCBsb2MxMywgTWF0aChAaWQyMCks
IDIwNDg8VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwg
MTI3ICAgIHByZWRpY3RpbmcgT3RoZXJvYmoKICAgICAgICAweGI0YzVhOWFlOiAgICBsZHIgICAg
cjAsIFtyNywgIy0xMTJdCiAgICAgICAgMHhiNGM1YTliMjogICAgbGRyICAgIHIxLCBbcjcsICMt
MTA4XQogICAgICAgIDB4YjRjNWE5YjY6ICAgIG1vdncgICByNiwgIzUwNDg4CiAgICAgICAgMHhi
NGM1YTliYTogICAgbW92dCAgIHI2LCAjNDU4MjIKICAgICAgICAweGI0YzVhOWJlOiAgICBsZHIg
ICAgcjIsIFtyNl0KICAgICAgICAweGI0YzVhOWMwOiAgICBsZHIgICAgcjEyLCBbcjBdCiAgICAg
ICAgMHhiNGM1YTljNDogICAgY21wICAgIHIxMiwgcjIKICAgICAgICAweGI0YzVhOWM4OiAgICBi
bmUgICAgMHhiNGM1ZDE3NAogICAgICAgIDB4YjRjNWE5Y2M6ICAgIG1vdiAgICByMiwgcjAKICAg
ICAgICAweGI0YzVhOWNlOiAgICBtb3Z3ICAgcjYsICM1MDQ5MgogICAgICAgIDB4YjRjNWE5ZDI6
ICAgIG1vdnQgICByNiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YTlkNjogICAgbGRyICAgIHIzLCBb
cjZdCiAgICAgICAgMHhiNGM1YTlkODogICAgbGRyICAgIHIyLCBbcjIsICM4XQogICAgICAgIDB4
YjRjNWE5ZGE6ICAgIHJzYiAgICByMywgcjMsICMwCiAgICAgICAgMHhiNGM1YTlkYzogICAgYWRk
dyAgIHI2LCByMiwgIzc4NAogICAgICAgIDB4YjRjNWE5ZTA6ICAgIGxkciAgICByMCwgW3I2LCBy
MywgIzNdCiAgICAgICAgMHhiNGM1YTllNDogICAgYWRkdyAgIHI2LCByMiwgIzc4OAogICAgICAg
IDB4YjRjNWE5ZTg6ICAgIGxkciAgICByMSwgW3I2LCByMywgIzNdCiAgICAgICAgMHhiNGM1YTll
YzogICAgc3RyICAgIHIwLCBbcjcsICMtMTEyXQogICAgICAgIDB4YjRjNWE5ZjA6ICAgIHN0ciAg
ICByMSwgW3I3LCAjLTEwOF0KICAgIFsgNzE5XSBnZXRfYnlfaWQgICAgICAgICBsb2MzLCBsb2Mx
MywgcG93KEBpZDIxKSBsbGludChzdHJ1Y3QgPSAweGI0N2MyYWEwIChvZmZzZXQgPSAxMzMpKSAg
ICBwcmVkaWN0aW5nIEZ1bmN0aW9uCiAgICAgICAgMHhiNGM1YTlmNDogICAgbGRyICAgIHIwLCBb
cjcsICMtMTEyXQogICAgICAgIDB4YjRjNWE5Zjg6ICAgIGxkciAgICByMSwgW3I3LCAjLTEwOF0K
ICAgICAgICAweGI0YzVhOWZjOiAgICBjbW4gICAgcjEsICM1CiAgICAgICAgMHhiNGM1YWEwMDog
ICAgYm5lICAgIDB4YjRjNWQxYmEKICAgICAgICAweGI0YzVhYTA0OiAgICBsZHIgICAgcjYsIFty
MF0KICAgICAgICAweGI0YzVhYTA2OiAgICBtb3Z3ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNWFh
MGE6ICAgIG1vdnQgICByMTIsICMwCiAgICAgICAgMHhiNGM1YWEwZTogICAgY21wICAgIHI2LCBy
MTIKICAgICAgICAweGI0YzVhYTEyOiAgICBpdHR0ICAgbmUKICAgICAgICAweGI0YzVhYTE0OiAg
ICBtb3Z3bmUgcjEyLCAjNTM2OTEKICAgICAgICAweGI0YzVhYTE4OiAgICBtb3Z0bmUgcjEyLCAj
NDYyNzcKICAgICAgICAweGI0YzVhYTFjOiAgICBieG5lICAgcjEyCiAgICAgICAgMHhiNGM1YWEx
ZTogICAgbGRyICAgIHIxLCBbcjBdCiAgICAgICAgMHhiNGM1YWEyMjogICAgbGRyICAgIHIwLCBb
cjBdCiAgICAgICAgMHhiNGM1YWEyNjogICAgc3RyICAgIHIwLCBbcjcsICMtMzJdCiAgICAgICAg
MHhiNGM1YWEyYTogICAgc3RyICAgIHIxLCBbcjcsICMtMjhdCiAgICBbIDcyOF0gZ2V0X2Zyb21f
c2NvcGUgICAgbG9jMTIsIGxvYzUsIGJhc2UoQGlkMTkpLCAyMDUxPFRocm93SWZOb3RGb3VuZHxD
bG9zdXJlVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgMCAgICBwcmVkaWN0aW5nIE5vbmludGFzZG91
YmxlCiAgICAgICAgMHhiNGM1YWEyZTogICAgbGRyICAgIHIwLCBbcjcsICMtNDhdCiAgICAgICAg
MHhiNGM1YWEzMjogICAgbGRyICAgIHIxLCBbcjcsICMtNDRdCiAgICAgICAgMHhiNGM1YWEzNjog
ICAgbGRyICAgIHIxLCBbcjAsICMyOF0KICAgICAgICAweGI0YzVhYTM4OiAgICBsZHIgICAgcjAs
IFtyMCwgIzI0XQogICAgICAgIDB4YjRjNWFhM2E6ICAgIHN0ciAgICByMCwgW3I3LCAjLTEwNF0K
ICAgICAgICAweGI0YzVhYTNlOiAgICBzdHIgICAgcjEsIFtyNywgIy0xMDBdCiAgICBbIDczNl0g
bW92ICAgICAgICAgICAgICAgbG9jMTEsIGxvYzcKICAgICAgICAweGI0YzVhYTQyOiAgICBsZHIg
ICAgcjAsIFtyNywgIy02NF0KICAgICAgICAweGI0YzVhYTQ2OiAgICBsZHIgICAgcjEsIFtyNywg
Iy02MF0KICAgICAgICAweGI0YzVhYTRhOiAgICBzdHIgICAgcjAsIFtyNywgIy05Nl0KICAgICAg
ICAweGI0YzVhYTRlOiAgICBzdHIgICAgcjEsIFtyNywgIy05Ml0KICAgIFsgNzM5XSBjYWxsICAg
ICAgICAgICAgICBsb2MzLCBsb2MzLCAzLCAxOCBsbGludCgweGI0N2YyMmEwLCBleGVjIDB4YjQ3
ZTE0YzApIHN0YXR1cygoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjIyYTAgKDB4YjQ3ZjZlMTA6W0Z1
bmN0aW9uLCB7bmFtZToxMDAsIGxlbmd0aDoxMDF9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRl
MCwgTGVhZl0pOyBFeGVjdXRhYmxlOiBOYXRpdmVFeGVjdXRhYmxlOjB4YjZkNmQ0MmQvMHhmNjMw
KSkgICAgTm9uQXJyYXk7IHByZWRpY3RpbmcgTm9uaW50YXNkb3VibGUKICAgICAgICAweGI0YzVh
YTUyOiAgICBtb3YgICAgc3AsIHI3CiAgICAgICAgMHhiNGM1YWE1NDogICAgbXZuICAgIHIxMiwg
IzEzNQogICAgICAgIDB4YjRjNWFhNTg6ICAgIG1vdiAgICBzcCwgc3AKICAgICAgICAweGI0YzVh
YTVhOiAgICBhZGQgICAgc3AsIHIxMgogICAgICAgIDB4YjRjNWFhNWM6ICAgIG1vdiAgICByMTIs
ICMzCiAgICAgICAgMHhiNGM1YWE2MDogICAgc3RyICAgIHIxMiwgW3NwLCAjMTZdCiAgICAgICAg
MHhiNGM1YWE2NDogICAgbW92dyAgIHIxMiwgIzUwNTgwCiAgICAgICAgMHhiNGM1YWE2ODogICAg
bW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YWE2YzogICAgc3RyICAgIHIxMiwgW3I3
LCAjMjhdCiAgICAgICAgMHhiNGM1YWE3MDogICAgbGRyICAgIHIwLCBbcjcsICMtMzJdCiAgICAg
ICAgMHhiNGM1YWE3NDogICAgbGRyICAgIHIxLCBbcjcsICMtMjhdCiAgICAgICAgMHhiNGM1YWE3
ODogICAgc3RyICAgIHIwLCBbc3AsICM4XQogICAgICAgIDB4YjRjNWFhN2E6ICAgIHN0ciAgICBy
MSwgW3NwLCAjMTJdCiAgICAgICAgMHhiNGM1YWE3YzogICAgY21uICAgIHIxLCAjNQogICAgICAg
IDB4YjRjNWFhODA6ICAgIGJuZSAgICAweGI0YzVkMjEwCiAgICAgICAgMHhiNGM1YWE4NDogICAg
bW92dyAgIHIxMiwgIzAKICAgICAgICAweGI0YzVhYTg4OiAgICBtb3Z0ICAgcjEyLCAjMAogICAg
ICAgIDB4YjRjNWFhOGM6ICAgIGNtcCAgICByMCwgcjEyCiAgICAgICAgMHhiNGM1YWE5MDogICAg
Ym5lICAgIDB4YjRjNWQyMTAKICAgICAgICAweGI0YzVhYTk0OiAgICBtb3Z3ICAgcjEyLCAjMAog
ICAgICAgIDB4YjRjNWFhOTg6ICAgIG1vdnQgICByMTIsICMwCiAgICAgICAgMHhiNGM1YWE5Yzog
ICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWFhOWU6ICAgIG1vdiAgICBzcCwgcjcKICAgICAg
ICAweGI0YzVhYWEwOiAgICBtdm4gICAgcjEyLCAjMTgzCiAgICAgICAgMHhiNGM1YWFhNDogICAg
bW92ICAgIHNwLCBzcAogICAgICAgIDB4YjRjNWFhYTY6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAg
ICAgMHhiNGM1YWFhODogICAgc3RyICAgIHIwLCBbcjcsICMtMzJdCiAgICAgICAgMHhiNGM1YWFh
YzogICAgc3RyICAgIHIxLCBbcjcsICMtMjhdCiAgICBbIDc0OF0gcHV0X2J5X3ZhbCAgICAgICAg
bG9jOCwgbG9jOSwgbG9jMyAgICBBcnJheVdpdGhDb250aWd1b3VzLCBPcmlnaW5hbAogICAgICAg
IDB4YjRjNWFhYjA6ICAgIGxkciAgICByMiwgW3I3LCAjLTgwXQogICAgICAgIDB4YjRjNWFhYjQ6
ICAgIGxkciAgICByMywgW3I3LCAjLTc2XQogICAgICAgIDB4YjRjNWFhYjg6ICAgIGxkciAgICBy
MCwgW3I3LCAjLTcyXQogICAgICAgIDB4YjRjNWFhYmM6ICAgIGxkciAgICByMSwgW3I3LCAjLTY4
XQogICAgICAgIDB4YjRjNWFhYzA6ICAgIGNtbiAgICByMSwgIzUKICAgICAgICAweGI0YzVhYWM0
OiAgICBibmUgICAgMHhiNGM1ZDIzOAogICAgICAgIDB4YjRjNWFhYzg6ICAgIGNtcCAgICByMywg
IzQyOTQ5NjcyOTUKICAgICAgICAweGI0YzVhYWNjOiAgICBpdHR0ICAgbmUKICAgICAgICAweGI0
YzVhYWNlOiAgICBtb3Z3bmUgcjEyLCAjNTM4MTcKICAgICAgICAweGI0YzVhYWQyOiAgICBtb3Z0
bmUgcjEyLCAjNDYyNzcKICAgICAgICAweGI0YzVhYWQ2OiAgICBieG5lICAgcjEyCiAgICAgICAg
MHhiNGM1YWFkODogICAgbGRyYiAgIHIxLCBbcjAsICM0XQogICAgICAgIDB4YjRjNWFhZGE6ICAg
IGFuZCAgICByMSwgcjEsICMxNAogICAgICAgIDB4YjRjNWFhZGU6ICAgIGNtcCAgICByMSwgIzgK
ICAgICAgICAweGI0YzVhYWUwOiAgICBpdHR0ICAgbmUKICAgICAgICAweGI0YzVhYWUyOiAgICBt
b3Z3bmUgcjEyLCAjNTM4MTcKICAgICAgICAweGI0YzVhYWU2OiAgICBtb3Z0bmUgcjEyLCAjNDYy
NzcKICAgICAgICAweGI0YzVhYWVhOiAgICBieG5lICAgcjEyCiAgICAgICAgMHhiNGM1YWFlYzog
ICAgbGRyICAgIHIzLCBbcjAsICM4XQogICAgICAgIDB4YjRjNWFhZWU6ICAgIGxkciAgICByMTIs
IFtyMywgIy04XQogICAgICAgIDB4YjRjNWFhZjI6ICAgIGNtcCAgICByMiwgcjEyCiAgICAgICAg
MHhiNGM1YWFmNjogICAgYmhzICAgIDB4YjRjNWFiNWUKICAgICAgICAweGI0YzVhYWY4OiAgICBs
ZHIgICAgcjAsIFtyNywgIy0zMl0KICAgICAgICAweGI0YzVhYWZjOiAgICBsZHIgICAgcjEsIFty
NywgIy0yOF0KICAgICAgICAweGI0YzVhYjAwOiAgICBzdHIgICAgcjAsIFtyMywgcjIsIGxzbCAj
M10KICAgICAgICAweGI0YzVhYjA0OiAgICBhZGRzICAgcjYsIHIzLCAjNAogICAgICAgIDB4YjRj
NWFiMDY6ICAgIHN0ciAgICByMSwgW3I2LCByMiwgbHNsICMzXQogICAgICAgIDB4YjRjNWFiMGE6
ICAgIGxkciAgICByMywgW3I3LCAjLTcyXQogICAgICAgIDB4YjRjNWFiMGU6ICAgIGxkciAgICBy
MiwgW3I3LCAjLTY4XQogICAgICAgIDB4YjRjNWFiMTI6ICAgIGxkciAgICByMCwgW3I3LCAjLTI4
XQogICAgICAgIDB4YjRjNWFiMTY6ICAgIGNtbiAgICByMCwgIzUKICAgICAgICAweGI0YzVhYjFh
OiAgICBibmUgICAgMHhiNGM1YWI1YwogICAgICAgIDB4YjRjNWFiMWM6ICAgIGxkciAgICByMSwg
W3I3LCAjLTcyXQogICAgICAgIDB4YjRjNWFiMjA6ICAgIGxkciAgICByMCwgW3I3LCAjLTY4XQog
ICAgICAgIDB4YjRjNWFiMjQ6ICAgIGxkcmIgICByNiwgW3IxLCAjN10KICAgICAgICAweGI0YzVh
YjI2OiAgICB0c3QgICAgcjYsIHI2CiAgICAgICAgMHhiNGM1YWIyODogICAgYm5lICAgIDB4YjRj
NWFiNWMKICAgICAgICAweGI0YzVhYjJhOiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1
YWIyYzogICAgbW92dyAgIHIxMiwgIzUwNjIwCiAgICAgICAgMHhiNGM1YWIzMDogICAgbW92dCAg
IHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YWIzNDogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhd
CiAgICAgICAgMHhiNGM1YWIzODogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVh
YjNjOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWFiNDA6ICAgIHN0ciAgICBy
NywgW3I2XQogICAgICAgIDB4YjRjNWFiNDI6ICAgIG1vdncgICByMTIsICM2MzE3NwogICAgICAg
IDB4YjRjNWFiNDY6ICAgIG1vdnQgICByMTIsICM0Njc3NgogICAgICAgIDB4YjRjNWFiNGE6ICAg
IGJseCAgICByMTIKICAgICAgICAweGI0YzVhYjRjOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAg
ICAgIDB4YjRjNWFiNTA6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1YWI1NDog
ICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1YWI1NjogICAgY21wICAgIHIyLCAjMAog
ICAgICAgIDB4YjRjNWFiNTg6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1YWI1
YzogICAgYiAgICAgIDB4YjRjNWFiODIKICAgICAgICAweGI0YzVhYjVlOiAgICBsZHIgICAgcjEy
LCBbcjMsICMtNF0KICAgICAgICAweGI0YzVhYjYyOiAgICBjbXAgICAgcjIsIHIxMgogICAgICAg
IDB4YjRjNWFiNjY6ICAgIGJocyAgICAweGI0YzVkMjNhCiAgICAgICAgMHhiNGM1YWI2YTogICAg
bW92ICAgIHIxMiwgIzEKICAgICAgICAweGI0YzVhYjZlOiAgICBtb3Z3ICAgcjYsICM2MzYyNAog
ICAgICAgIDB4YjRjNWFiNzI6ICAgIG1vdnQgICByNiwgIzQ2MjY1CiAgICAgICAgMHhiNGM1YWI3
NjogICAgLmxvbmcgIGY4ODZjMDAwCiAgICAgICAgMHhiNGM1YWI3YTogICAgYWRkcyAgIHIxLCBy
MiwgIzEKICAgICAgICAweGI0YzVhYjdjOiAgICBzdHIgICAgcjEsIFtyMywgIy04XQogICAgICAg
IDB4YjRjNWFiODA6ICAgIGIgICAgICAweGI0YzViYWY4CiAgICBbIDc1M10gaW5jICAgICAgICAg
ICAgICAgbG9jNgogICAgICAgIDB4YjRjNWFiODI6ICAgIGxkciAgICByMCwgW3I3LCAjLTU2XQog
ICAgICAgIDB4YjRjNWFiODY6ICAgIGxkciAgICByMSwgW3I3LCAjLTUyXQogICAgICAgIDB4YjRj
NWFiOGE6ICAgIGNtcCAgICByMSwgIzQyOTQ5NjcyOTUKICAgICAgICAweGI0YzVhYjhlOiAgICBi
bmUgICAgMHhiNGM1ZDJiNgogICAgICAgIDB4YjRjNWFiOTI6ICAgIGFkZHMgICByMCwgcjAsICMx
CiAgICAgICAgMHhiNGM1YWI5NDogICAgYnZzICAgIDB4YjRjNWQyYjYKICAgICAgICAweGI0YzVh
Yjk4OiAgICBzdHIgICAgcjAsIFtyNywgIy01Nl0KICAgIFsgNzU1XSBtb3YgICAgICAgICAgICAg
ICBsb2M3LCBsb2M2CiAgICAgICAgMHhiNGM1YWI5YzogICAgbGRyICAgIHIwLCBbcjcsICMtNTZd
CiAgICAgICAgMHhiNGM1YWJhMDogICAgbGRyICAgIHIxLCBbcjcsICMtNTJdCiAgICAgICAgMHhi
NGM1YWJhNDogICAgc3RyICAgIHIwLCBbcjcsICMtNjRdCiAgICAgICAgMHhiNGM1YWJhODogICAg
c3RyICAgIHIxLCBbcjcsICMtNjBdCiAgICBbIDc1OF0gcmVzb2x2ZV9zY29wZSAgICAgbG9jOCwg
bG9jMCwgY2FzZXMoQGlkNSksIDxHbG9iYWxMZXhpY2FsVmFyPiwgMywgMHhiNDdkZmZjMAogICAg
ICAgIDB4YjRjNWFiYWM6ICAgIG12biAgICByMSwgIzQKICAgICAgICAweGI0YzVhYmIwOiAgICBt
b3Z3ICAgcjAsICM2NTQ3MgogICAgICAgIDB4YjRjNWFiYjQ6ICAgIG1vdnQgICByMCwgIzQ2MjA1
CiAgICAgICAgMHhiNGM1YWJiODogICAgc3RyICAgIHIwLCBbcjcsICMtNzJdCiAgICAgICAgMHhi
NGM1YWJiYzogICAgc3RyICAgIHIxLCBbcjcsICMtNjhdCiAgICBbIDc2NV0gZ2V0X2Zyb21fc2Nv
cGUgICAgbG9jOSwgbG9jOCwgY2FzZXMoQGlkNSksIDIwNTA8VGhyb3dJZk5vdEZvdW5kfEdsb2Jh
bExleGljYWxWYXJ8Tm90SW5pdGlhbGl6YXRpb24+LCAtMTI2MjUwMTM3NiAgICBwcmVkaWN0aW5n
IEFycmF5CiAgICAgICAgMHhiNGM1YWJjMDogICAgbW92dyAgIHI2LCAjNDk2NjgKICAgICAgICAw
eGI0YzVhYmM0OiAgICBtb3Z0ICAgcjYsICM0NjI3MQogICAgICAgIDB4YjRjNWFiYzg6ICAgIGxk
ciAgICByMSwgW3I2XQogICAgICAgIDB4YjRjNWFiY2E6ICAgIG1vdncgICByNiwgIzQ5NjY0CiAg
ICAgICAgMHhiNGM1YWJjZTogICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI0YzVhYmQy
OiAgICBsZHIgICAgcjAsIFtyNl0KICAgICAgICAweGI0YzVhYmQ0OiAgICBjbW4gICAgcjEsICM2
CiAgICAgICAgMHhiNGM1YWJkODogICAgYmVxICAgIDB4YjRjNWQyZjQKICAgICAgICAweGI0YzVh
YmRjOiAgICBzdHIgICAgcjAsIFtyNywgIy04MF0KICAgICAgICAweGI0YzVhYmUwOiAgICBzdHIg
ICAgcjEsIFtyNywgIy03Nl0KICAgIFsgNzczXSBhcnJheV9sZW5ndGggICAgICBsb2MxMCwgbG9j
OSwgbGVuZ3RoKEBpZDE4KSBsbGludChhcnJheV9sZW5ndGgpICAgIHByZWRpY3RpbmcgTm9uYm9v
bGludDMyCiAgICAgICAgMHhiNGM1YWJlNDogICAgbGRyICAgIHIwLCBbcjcsICMtODBdCiAgICAg
ICAgMHhiNGM1YWJlODogICAgbGRyICAgIHIxLCBbcjcsICMtNzZdCiAgICAgICAgMHhiNGM1YWJl
YzogICAgY21uICAgIHIxLCAjNQogICAgICAgIDB4YjRjNWFiZjA6ICAgIGJuZSAgICAweGI0YzVk
MzNhCiAgICAgICAgMHhiNGM1YWJmNDogICAgbGRyICAgIHI2LCBbcjBdCiAgICAgICAgMHhiNGM1
YWJmNjogICAgbW92dyAgIHIxMiwgIzAKICAgICAgICAweGI0YzVhYmZhOiAgICBtb3Z0ICAgcjEy
LCAjMAogICAgICAgIDB4YjRjNWFiZmU6ICAgIGNtcCAgICByNiwgcjEyCiAgICAgICAgMHhiNGM1
YWMwMjogICAgaXR0dCAgIG5lCiAgICAgICAgMHhiNGM1YWMwNDogICAgbW92d25lIHIxMiwgIzU0
MDc1CiAgICAgICAgMHhiNGM1YWMwODogICAgbW92dG5lIHIxMiwgIzQ2Mjc3CiAgICAgICAgMHhi
NGM1YWMwYzogICAgYnhuZSAgIHIxMgogICAgICAgIDB4YjRjNWFjMGU6ICAgIGxkciAgICByMSwg
W3IwXQogICAgICAgIDB4YjRjNWFjMTI6ICAgIGxkciAgICByMCwgW3IwXQogICAgICAgIDB4YjRj
NWFjMTY6ICAgIHN0ciAgICByMCwgW3I3LCAjLTg4XQogICAgICAgIDB4YjRjNWFjMWE6ICAgIHN0
ciAgICByMSwgW3I3LCAjLTg0XQogICAgWyA3ODJdIGpsZXNzICAgICAgICAgICAgIGxvYzcsIGxv
YzEwLCAtMTM1KC0+NjQ3KQogICAgICAgIDB4YjRjNWFjMWU6ICAgIGxkciAgICByMiwgW3I3LCAj
LTg4XQogICAgICAgIDB4YjRjNWFjMjI6ICAgIGxkciAgICByMywgW3I3LCAjLTg0XQogICAgICAg
IDB4YjRjNWFjMjY6ICAgIGxkciAgICByMCwgW3I3LCAjLTY0XQogICAgICAgIDB4YjRjNWFjMmE6
ICAgIGxkciAgICByMSwgW3I3LCAjLTYwXQogICAgICAgIDB4YjRjNWFjMmU6ICAgIGNtcCAgICBy
MSwgIzQyOTQ5NjcyOTUKICAgICAgICAweGI0YzVhYzMyOiAgICBibmUgICAgMHhiNGM1YWM0Mgog
ICAgICAgIDB4YjRjNWFjMzQ6ICAgIGNtcCAgICByMywgIzQyOTQ5NjcyOTUKICAgICAgICAweGI0
YzVhYzM4OiAgICBibmUgICAgMHhiNGM1YWM3OAogICAgICAgIDB4YjRjNWFjM2E6ICAgIGNtcCAg
ICByMCwgcjIKICAgICAgICAweGI0YzVhYzNjOiAgICBibHQgICAgMHhiNGM1YTgyZQogICAgICAg
IDB4YjRjNWFjNDA6ICAgIGIgICAgICAweGI0YzVhYzk4CiAgICAgICAgMHhiNGM1YWM0MjogICAg
Y21uICAgIHIxLCAjNwogICAgICAgIDB4YjRjNWFjNDY6ICAgIGJoaSAgICAweGI0YzVkMzkwCiAg
ICAgICAgMHhiNGM1YWM0YTogICAgY21uICAgIHIzLCAjNwogICAgICAgIDB4YjRjNWFjNGU6ICAg
IGJsbyAgICAweGI0YzVhYzYyCiAgICAgICAgMHhiNGM1YWM1MDogICAgY21wICAgIHIzLCAjNDI5
NDk2NzI5NQogICAgICAgIDB4YjRjNWFjNTQ6ICAgIGJuZSAgICAweGI0YzVkMzkwCiAgICAgICAg
MHhiNGM1YWM1ODogICAgdm1vdiAgIGQ3LCByMiwgcjIKICAgICAgICAweGI0YzVhYzVjOiAgICB2
Y3Z0LmY2NC5zMzIgZDAsIHMxNAogICAgICAgIDB4YjRjNWFjNjA6ICAgIGIgICAgICAweGI0YzVh
YzY2CiAgICAgICAgMHhiNGM1YWM2MjogICAgdmxkciAgIGQwLCBbcjcsICMtODhdCiAgICAgICAg
MHhiNGM1YWM2NjogICAgdmxkciAgIGQyLCBbcjcsICMtNjRdCiAgICAgICAgMHhiNGM1YWM2YTog
ICAgdmNtcC5mNjQgZDIsIGQwCiAgICAgICAgMHhiNGM1YWM2ZTogICAgdm1ycyAgIGFwc3Jfbnpj
diwgZnBzY3IKICAgICAgICAweGI0YzVhYzcyOiAgICBibG8gICAgMHhiNGM1YTgyZQogICAgICAg
IDB4YjRjNWFjNzY6ICAgIGIgICAgICAweGI0YzVhYzk4CiAgICAgICAgMHhiNGM1YWM3ODogICAg
dm1vdiAgIGQ3LCByMCwgcjAKICAgICAgICAweGI0YzVhYzdjOiAgICB2Y3Z0LmY2NC5zMzIgZDAs
IHMxNAogICAgICAgIDB4YjRjNWFjODA6ICAgIGNtbiAgICByMywgIzcKICAgICAgICAweGI0YzVh
Yzg0OiAgICBiaGkgICAgMHhiNGM1ZDM5MAogICAgICAgIDB4YjRjNWFjODg6ICAgIHZsZHIgICBk
MSwgW3I3LCAjLTg4XQogICAgICAgIDB4YjRjNWFjOGM6ICAgIHZjbXAuZjY0IGQwLCBkMQogICAg
ICAgIDB4YjRjNWFjOTA6ICAgIHZtcnMgICBhcHNyX256Y3YsIGZwc2NyCiAgICAgICAgMHhiNGM1
YWM5NDogICAgYmxvICAgIDB4YjRjNWE4MmUKICAgIFsgNzg2XSByZXNvbHZlX3Njb3BlICAgICBs
b2M5LCBsb2MwLCBldmFsKEBpZDkpLCA8R2xvYmFsUHJvcGVydHk+LCA0LCAweGI0N2U3OGMwCiAg
ICAgICAgMHhiNGM1YWM5ODogICAgbXZuICAgIHIxLCAjNAogICAgICAgIDB4YjRjNWFjOWM6ICAg
IG1vdncgICByMCwgIzMwOTEyCiAgICAgICAgMHhiNGM1YWNhMDogICAgbW92dCAgIHIwLCAjNDYy
MDYKICAgICAgICAweGI0YzVhY2E0OiAgICBzdHIgICAgcjAsIFtyNywgIy04MF0KICAgICAgICAw
eGI0YzVhY2E4OiAgICBzdHIgICAgcjEsIFtyNywgIy03Nl0KICAgIFsgNzkzXSBnZXRfZnJvbV9z
Y29wZSAgICBsb2M2LCBsb2M5LCBldmFsKEBpZDkpLCAyMDQ4PFRocm93SWZOb3RGb3VuZHxHbG9i
YWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDEyNCAgICBwcmVkaWN0aW5nIEZ1bmN0aW9u
CiAgICAgICAgMHhiNGM1YWNhYzogICAgbGRyICAgIHIwLCBbcjcsICMtODBdCiAgICAgICAgMHhi
NGM1YWNiMDogICAgbGRyICAgIHIxLCBbcjcsICMtNzZdCiAgICAgICAgMHhiNGM1YWNiNDogICAg
bW92dyAgIHI2LCAjNTA4MTYKICAgICAgICAweGI0YzVhY2I4OiAgICBtb3Z0ICAgcjYsICM0NTgy
MgogICAgICAgIDB4YjRjNWFjYmM6ICAgIGxkciAgICByMiwgW3I2XQogICAgICAgIDB4YjRjNWFj
YmU6ICAgIGxkciAgICByMTIsIFtyMF0KICAgICAgICAweGI0YzVhY2MyOiAgICBjbXAgICAgcjEy
LCByMgogICAgICAgIDB4YjRjNWFjYzY6ICAgIGJuZSAgICAweGI0YzVkM2U2CiAgICAgICAgMHhi
NGM1YWNjYTogICAgbW92ICAgIHIyLCByMAogICAgICAgIDB4YjRjNWFjY2M6ICAgIG1vdncgICBy
NiwgIzUwODIwCiAgICAgICAgMHhiNGM1YWNkMDogICAgbW92dCAgIHI2LCAjNDU4MjIKICAgICAg
ICAweGI0YzVhY2Q0OiAgICBsZHIgICAgcjMsIFtyNl0KICAgICAgICAweGI0YzVhY2Q2OiAgICBs
ZHIgICAgcjIsIFtyMiwgIzhdCiAgICAgICAgMHhiNGM1YWNkODogICAgcnNiICAgIHIzLCByMywg
IzAKICAgICAgICAweGI0YzVhY2RhOiAgICBhZGR3ICAgcjYsIHIyLCAjNzg0CiAgICAgICAgMHhi
NGM1YWNkZTogICAgbGRyICAgIHIwLCBbcjYsIHIzLCAjM10KICAgICAgICAweGI0YzVhY2UyOiAg
ICBhZGR3ICAgcjYsIHIyLCAjNzg4CiAgICAgICAgMHhiNGM1YWNlNjogICAgbGRyICAgIHIxLCBb
cjYsIHIzLCAjM10KICAgICAgICAweGI0YzVhY2VhOiAgICBzdHIgICAgcjAsIFtyNywgIy01Nl0K
ICAgICAgICAweGI0YzVhY2VlOiAgICBzdHIgICAgcjEsIFtyNywgIy01Ml0KICAgIFsgODAxXSBt
b3YgICAgICAgICAgICAgICBsb2MxMCwgU3RyaW5nIChhdG9taWMpIChpZGVudGlmaWVyKTogY29u
c3RhbnRCYXNlRnVuY3Rpb25zW2ldID0gZnVuY3Rpb24gKGV4cG9uZW50KSB7IHJldHVybiBNYXRo
LnBvdygoY29uc3QyOCkKICAgICAgICAweGI0YzVhY2YyOiAgICBtb3Z3ICAgcjEyLCAjMzQ1OTIK
ICAgICAgICAweGI0YzVhY2Y2OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDQKICAgICAgICAweGI0YzVh
Y2ZhOiAgICBzdHIgICAgcjEyLCBbcjcsICMtODhdCiAgICAgICAgMHhiNGM1YWNmZTogICAgbXZu
ICAgIHIxMiwgIzQKICAgICAgICAweGI0YzVhZDAyOiAgICBzdHIgICAgcjEyLCBbcjcsICMtODRd
CiAgICBbIDgwNF0gcmVzb2x2ZV9zY29wZSAgICAgbG9jMTIsIGxvYzAsIGNhc2VTdHJpbmdzKEBp
ZDQpLCA8R2xvYmFsTGV4aWNhbFZhcj4sIDMsIDB4YjQ3ZGZmYzAKICAgICAgICAweGI0YzVhZDA2
OiAgICBtdm4gICAgcjEsICM0CiAgICAgICAgMHhiNGM1YWQwYTogICAgbW92dyAgIHIwLCAjNjU0
NzIKICAgICAgICAweGI0YzVhZDBlOiAgICBtb3Z0ICAgcjAsICM0NjIwNQogICAgICAgIDB4YjRj
NWFkMTI6ICAgIHN0ciAgICByMCwgW3I3LCAjLTEwNF0KICAgICAgICAweGI0YzVhZDE2OiAgICBz
dHIgICAgcjEsIFtyNywgIy0xMDBdCiAgICBbIDgxMV0gZ2V0X2Zyb21fc2NvcGUgICAgbG9jMTIs
IGxvYzEyLCBjYXNlU3RyaW5ncyhAaWQ0KSwgMjA1MDxUaHJvd0lmTm90Rm91bmR8R2xvYmFsTGV4
aWNhbFZhcnxOb3RJbml0aWFsaXphdGlvbj4sIC0xMjYyNTAxMzUyICAgIHByZWRpY3RpbmcgQXJy
YXkKICAgICAgICAweGI0YzVhZDFhOiAgICBtb3Z3ICAgcjYsICM0OTY5MgogICAgICAgIDB4YjRj
NWFkMWU6ICAgIG1vdnQgICByNiwgIzQ2MjcxCiAgICAgICAgMHhiNGM1YWQyMjogICAgbGRyICAg
IHIxLCBbcjZdCiAgICAgICAgMHhiNGM1YWQyNDogICAgbW92dyAgIHI2LCAjNDk2ODgKICAgICAg
ICAweGI0YzVhZDI4OiAgICBtb3Z0ICAgcjYsICM0NjI3MQogICAgICAgIDB4YjRjNWFkMmM6ICAg
IGxkciAgICByMCwgW3I2XQogICAgICAgIDB4YjRjNWFkMmU6ICAgIGNtbiAgICByMSwgIzYKICAg
ICAgICAweGI0YzVhZDMyOiAgICBiZXEgICAgMHhiNGM1ZDQyYwogICAgICAgIDB4YjRjNWFkMzY6
ICAgIHN0ciAgICByMCwgW3I3LCAjLTEwNF0KICAgICAgICAweGI0YzVhZDNhOiAgICBzdHIgICAg
cjEsIFtyNywgIy0xMDBdCiAgICBbIDgxOV0gZ2V0X2Zyb21fc2NvcGUgICAgbG9jMTMsIGxvYzQs
IGkoQGlkMTcpLCAyMDUxPFRocm93SWZOb3RGb3VuZHxDbG9zdXJlVmFyfE5vdEluaXRpYWxpemF0
aW9uPiwgMCAgICBwcmVkaWN0aW5nIE5vbmJvb2xpbnQzMgogICAgICAgIDB4YjRjNWFkM2U6ICAg
IGxkciAgICByMCwgW3I3LCAjLTQwXQogICAgICAgIDB4YjRjNWFkNDI6ICAgIGxkciAgICByMSwg
W3I3LCAjLTM2XQogICAgICAgIDB4YjRjNWFkNDY6ICAgIGxkciAgICByMSwgW3IwLCAjMjhdCiAg
ICAgICAgMHhiNGM1YWQ0ODogICAgbGRyICAgIHIwLCBbcjAsICMyNF0KICAgICAgICAweGI0YzVh
ZDRhOiAgICBzdHIgICAgcjAsIFtyNywgIy0xMTJdCiAgICAgICAgMHhiNGM1YWQ0ZTogICAgc3Ry
ICAgIHIxLCBbcjcsICMtMTA4XQogICAgWyA4MjddIGdldF9ieV92YWwgICAgICAgIGxvYzExLCBs
b2MxMiwgbG9jMTMgICAgQXJyYXlXaXRoQ29udGlndW91cywgT3JpZ2luYWw7IHByZWRpY3Rpbmcg
U3RyaW5naWRlbnQKICAgICAgICAweGI0YzVhZDUyOiAgICBsZHIgICAgcjIsIFtyNywgIy0xMTJd
CiAgICAgICAgMHhiNGM1YWQ1NjogICAgbGRyICAgIHIzLCBbcjcsICMtMTA4XQogICAgICAgIDB4
YjRjNWFkNWE6ICAgIGxkciAgICByMCwgW3I3LCAjLTEwNF0KICAgICAgICAweGI0YzVhZDVlOiAg
ICBsZHIgICAgcjEsIFtyNywgIy0xMDBdCiAgICAgICAgMHhiNGM1YWQ2MjogICAgY21uICAgIHIx
LCAjNQogICAgICAgIDB4YjRjNWFkNjY6ICAgIGJuZSAgICAweGI0YzVkNDcyCiAgICAgICAgMHhi
NGM1YWQ2YTogICAgY21wICAgIHIzLCAjNDI5NDk2NzI5NQogICAgICAgIDB4YjRjNWFkNmU6ICAg
IGl0dHQgICBuZQogICAgICAgIDB4YjRjNWFkNzA6ICAgIG1vdnduZSByMTIsICM1NDM4NwogICAg
ICAgIDB4YjRjNWFkNzQ6ICAgIG1vdnRuZSByMTIsICM0NjI3NwogICAgICAgIDB4YjRjNWFkNzg6
ICAgIGJ4bmUgICByMTIKICAgICAgICAweGI0YzVhZDdhOiAgICBsZHJiICAgcjEsIFtyMCwgIzRd
CiAgICAgICAgMHhiNGM1YWQ3YzogICAgYW5kICAgIHIxLCByMSwgIzE0CiAgICAgICAgMHhiNGM1
YWQ4MDogICAgY21wICAgIHIxLCAjOAogICAgICAgIDB4YjRjNWFkODI6ICAgIGl0dHQgICBuZQog
ICAgICAgIDB4YjRjNWFkODQ6ICAgIG1vdnduZSByMTIsICM1NDM4OQogICAgICAgIDB4YjRjNWFk
ODg6ICAgIG1vdnRuZSByMTIsICM0NjI3NwogICAgICAgIDB4YjRjNWFkOGM6ICAgIGJ4bmUgICBy
MTIKICAgICAgICAweGI0YzVhZDhlOiAgICBsZHIgICAgcjMsIFtyMCwgIzhdCiAgICAgICAgMHhi
NGM1YWQ5MDogICAgbGRyICAgIHIxMiwgW3IzLCAjLThdCiAgICAgICAgMHhiNGM1YWQ5NDogICAg
Y21wICAgIHIyLCByMTIKICAgICAgICAweGI0YzVhZDk4OiAgICBiaHMgICAgMHhiNGM1ZDQ5ZQog
ICAgICAgIDB4YjRjNWFkOWM6ICAgIGFkZHMgICByNiwgcjMsICM0CiAgICAgICAgMHhiNGM1YWQ5
ZTogICAgbGRyICAgIHIxLCBbcjYsIHIyLCAjM10KICAgICAgICAweGI0YzVhZGEyOiAgICBsZHIg
ICAgcjAsIFtyMywgcjIsICMzXQogICAgICAgIDB4YjRjNWFkYTY6ICAgIGNtbiAgICByMSwgIzYK
ICAgICAgICAweGI0YzVhZGFhOiAgICBiZXEgICAgMHhiNGM1ZDQ5ZQogICAgICAgIDB4YjRjNWFk
YWU6ICAgIHN0ciAgICByMCwgW3I3LCAjLTk2XQogICAgICAgIDB4YjRjNWFkYjI6ICAgIHN0ciAg
ICByMSwgW3I3LCAjLTkyXQogICAgWyA4MzNdIHRvX3ByaW1pdGl2ZSAgICAgIGxvYzExLCBsb2Mx
MQogICAgICAgIDB4YjRjNWFkYjY6ICAgIGxkciAgICByMCwgW3I3LCAjLTk2XQogICAgICAgIDB4
YjRjNWFkYmE6ICAgIGxkciAgICByMSwgW3I3LCAjLTkyXQogICAgICAgIDB4YjRjNWFkYmU6ICAg
IGNtbiAgICByMSwgIzUKICAgICAgICAweGI0YzVhZGMyOiAgICBibmUgICAgMHhiNGM1YWRjYwog
ICAgICAgIDB4YjRjNWFkYzQ6ICAgIGxkcmIgICByNiwgW3IwLCAjNV0KICAgICAgICAweGI0YzVh
ZGM2OiAgICBjbXAgICAgcjIsICMyMAogICAgICAgIDB4YjRjNWFkYzg6ICAgIGJocyAgICAweGI0
YzVkNTAyCiAgICBbIDgzNl0gbW92ICAgICAgICAgICAgICAgbG9jMTIsIFN0cmluZyAoYXRvbWlj
KSAoaWRlbnRpZmllcik6ICwgZXhwb25lbnQpOyB9KGNvbnN0MjkpCiAgICAgICAgMHhiNGM1YWRj
YzogICAgbW92dyAgIHIxMiwgIzM0NTYwCiAgICAgICAgMHhiNGM1YWRkMDogICAgbW92dCAgIHIx
MiwgIzQ2MjA0CiAgICAgICAgMHhiNGM1YWRkNDogICAgc3RyICAgIHIxMiwgW3I3LCAjLTEwNF0K
ICAgICAgICAweGI0YzVhZGQ4OiAgICBtdm4gICAgcjEyLCAjNAogICAgICAgIDB4YjRjNWFkZGM6
ICAgIHN0ciAgICByMTIsIFtyNywgIy0xMDBdCiAgICBbIDgzOV0gc3RyY2F0ICAgICAgICAgICAg
bG9jOCwgbG9jMTAsIDMKICAgICAgICAweGI0YzVhZGUwOiAgICBtb3Z3ICAgcjEyLCAjNTA5ODQK
ICAgICAgICAweGI0YzVhZGU0OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVh
ZGU4OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVhZGVjOiAgICBtb3Z3
ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWFkZjA6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAgICAgMHhiNGM1YWRmNDogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1YWRmNjog
ICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWFkZjg6ICAgIG1vdncgICByMSwgIzUwOTgw
CiAgICAgICAgMHhiNGM1YWRmYzogICAgbW92dCAgIHIxLCAjNDU4MjIKICAgICAgICAweGI0YzVh
ZTAwOiAgICBtb3Z3ICAgcjEyLCAjMTg5MjUKICAgICAgICAweGI0YzVhZTA0OiAgICBtb3Z0ICAg
cjEyLCAjNDY3OTMKICAgICAgICAweGI0YzVhZTA4OiAgICBibHggICAgcjEyCiAgICAgICAgMHhi
NGM1YWUwYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVhZTBlOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWFlMTI6ICAgIGxkciAgICByNiwgW3I2XQogICAg
ICAgIDB4YjRjNWFlMTQ6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVhZTE2OiAgICBi
bmUgICAgMHhiNGM1ZTY4MAogICAgWyA4NDNdIGNhbGxfZXZhbCAgICAgICAgIGxvYzMsIGxvYzYs
IDIsIDE0ICAgIE9yaWdpbmFsOyBwcmVkaWN0aW5nIEZ1bmN0aW9uCiAgICAgICAgMHhiNGM1YWUx
YTogICAgbW92ICAgIHNwLCByNwogICAgICAgIDB4YjRjNWFlMWM6ICAgIG12biAgICByMTIsICMx
MDMKICAgICAgICAweGI0YzVhZTIwOiAgICBtb3YgICAgc3AsIHNwCiAgICAgICAgMHhiNGM1YWUy
MjogICAgYWRkICAgIHNwLCByMTIKICAgICAgICAweGI0YzVhZTI0OiAgICBtb3YgICAgcjEyLCAj
MgogICAgICAgIDB4YjRjNWFlMjg6ICAgIHN0ciAgICByMTIsIFtzcCwgIzE2XQogICAgICAgIDB4
YjRjNWFlMmM6ICAgIG1vdncgICByMTIsICM1MDk5NgogICAgICAgIDB4YjRjNWFlMzA6ICAgIG1v
dnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWFlMzQ6ICAgIHN0ciAgICByMTIsIFtyNywg
IzI4XQogICAgICAgIDB4YjRjNWFlMzg6ICAgIGxkciAgICByMCwgW3I3LCAjLTU2XQogICAgICAg
IDB4YjRjNWFlM2M6ICAgIGxkciAgICByMSwgW3I3LCAjLTUyXQogICAgICAgIDB4YjRjNWFlNDA6
ICAgIHN0ciAgICByMCwgW3NwLCAjOF0KICAgICAgICAweGI0YzVhZTQyOiAgICBzdHIgICAgcjEs
IFtzcCwgIzEyXQogICAgICAgIDB4YjRjNWFlNDQ6ICAgIG12biAgICByMTIsICM3CiAgICAgICAg
MHhiNGM1YWU0ODogICAgYWRkICAgIHIxLCBzcCwgcjEyCiAgICAgICAgMHhiNGM1YWU0YzogICAg
c3RyICAgIHI3LCBbcjFdCiAgICAgICAgMHhiNGM1YWU0ZTogICAgbW92ICAgIHNwLCByNwogICAg
ICAgIDB4YjRjNWFlNTA6ICAgIG12biAgICByMTIsICMxODMKICAgICAgICAweGI0YzVhZTU0OiAg
ICBtb3YgICAgc3AsIHNwCiAgICAgICAgMHhiNGM1YWU1NjogICAgYWRkICAgIHNwLCByMTIKICAg
ICAgICAweGI0YzVhZTU4OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1YWU1YTogICAg
bW92dyAgIHIxMiwgIzUxMDAwCiAgICAgICAgMHhiNGM1YWU1ZTogICAgbW92dCAgIHIxMiwgIzQ1
ODIyCiAgICAgICAgMHhiNGM1YWU2MjogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAg
MHhiNGM1YWU2NjogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVhZTZhOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWFlNmU6ICAgIHN0ciAgICByNywgW3I2XQog
ICAgICAgIDB4YjRjNWFlNzA6ICAgIG1vdncgICByMTIsICM1MTAwMAogICAgICAgIDB4YjRjNWFl
NzQ6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWFlNzg6ICAgIHN0ciAgICBy
MTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWFlN2M6ICAgIG1vdncgICByNiwgIzQyMTI4CiAg
ICAgICAgMHhiNGM1YWU4MDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVhZTg0
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVhZTg2OiAgICBtb3Z3ICAgcjEyLCAj
NDk4MDkKICAgICAgICAweGI0YzVhZThhOiAgICBtb3Z0ICAgcjEyLCAjNDY3NzYKICAgICAgICAw
eGI0YzVhZThlOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1YWU5MDogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgICAgICAweGI0YzVhZTk0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAg
IDB4YjRjNWFlOTg6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWFlOWE6ICAgIGNt
cCAgICByMiwgIzAKICAgICAgICAweGI0YzVhZTljOiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAg
ICAgIDB4YjRjNWFlYTA6ICAgIGNtbiAgICByMSwgIzYKICAgICAgICAweGI0YzVhZWE0OiAgICBi
ZXEgICAgMHhiNGM1ZDU0MAogICAgICAgIDB4YjRjNWFlYTg6ICAgIHN0ciAgICByMCwgW3I3LCAj
LTMyXQogICAgICAgIDB4YjRjNWFlYWM6ICAgIHN0ciAgICByMSwgW3I3LCAjLTI4XQogICAgWyA4
NTJdIHJlc29sdmVfc2NvcGUgICAgIGxvYzksIGxvYzAsIGV2YWwoQGlkOSksIDxHbG9iYWxQcm9w
ZXJ0eT4sIDQsIDB4YjQ3ZTc4YzAKICAgICAgICAweGI0YzVhZWIwOiAgICBtdm4gICAgcjEsICM0
CiAgICAgICAgMHhiNGM1YWViNDogICAgbW92dyAgIHIwLCAjMzA5MTIKICAgICAgICAweGI0YzVh
ZWI4OiAgICBtb3Z0ICAgcjAsICM0NjIwNgogICAgICAgIDB4YjRjNWFlYmM6ICAgIHN0ciAgICBy
MCwgW3I3LCAjLTgwXQogICAgICAgIDB4YjRjNWFlYzA6ICAgIHN0ciAgICByMSwgW3I3LCAjLTc2
XQogICAgWyA4NTldIGdldF9mcm9tX3Njb3BlICAgIGxvYzYsIGxvYzksIGV2YWwoQGlkOSksIDIw
NDg8VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMTI0
ICAgIHByZWRpY3RpbmcgRnVuY3Rpb24KICAgICAgICAweGI0YzVhZWM0OiAgICBsZHIgICAgcjAs
IFtyNywgIy04MF0KICAgICAgICAweGI0YzVhZWM4OiAgICBsZHIgICAgcjEsIFtyNywgIy03Nl0K
ICAgICAgICAweGI0YzVhZWNjOiAgICBtb3Z3ICAgcjYsICM1MTA4MAogICAgICAgIDB4YjRjNWFl
ZDA6ICAgIG1vdnQgICByNiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YWVkNDogICAgbGRyICAgIHIy
LCBbcjZdCiAgICAgICAgMHhiNGM1YWVkNjogICAgbGRyICAgIHIxMiwgW3IwXQogICAgICAgIDB4
YjRjNWFlZGE6ICAgIGNtcCAgICByMTIsIHIyCiAgICAgICAgMHhiNGM1YWVkZTogICAgYm5lICAg
IDB4YjRjNWQ1N2EKICAgICAgICAweGI0YzVhZWUyOiAgICBtb3YgICAgcjIsIHIwCiAgICAgICAg
MHhiNGM1YWVlNDogICAgbW92dyAgIHI2LCAjNTEwODQKICAgICAgICAweGI0YzVhZWU4OiAgICBt
b3Z0ICAgcjYsICM0NTgyMgogICAgICAgIDB4YjRjNWFlZWM6ICAgIGxkciAgICByMywgW3I2XQog
ICAgICAgIDB4YjRjNWFlZWU6ICAgIGxkciAgICByMiwgW3IyLCAjOF0KICAgICAgICAweGI0YzVh
ZWYwOiAgICByc2IgICAgcjMsIHIzLCAjMAogICAgICAgIDB4YjRjNWFlZjI6ICAgIGFkZHcgICBy
NiwgcjIsICM3ODQKICAgICAgICAweGI0YzVhZWY2OiAgICBsZHIgICAgcjAsIFtyNiwgcjMsICMz
XQogICAgICAgIDB4YjRjNWFlZmE6ICAgIGFkZHcgICByNiwgcjIsICM3ODgKICAgICAgICAweGI0
YzVhZWZlOiAgICBsZHIgICAgcjEsIFtyNiwgcjMsICMzXQogICAgICAgIDB4YjRjNWFmMDI6ICAg
IHN0ciAgICByMCwgW3I3LCAjLTU2XQogICAgICAgIDB4YjRjNWFmMDY6ICAgIHN0ciAgICByMSwg
W3I3LCAjLTUyXQogICAgWyA4NjddIG1vdiAgICAgICAgICAgICAgIGxvYzEwLCBTdHJpbmcgKGF0
b21pYykgKGlkZW50aWZpZXIpOiBjb25zdGFudEV4cG9uZW50RnVuY3Rpb25zW2ldID0gZnVuY3Rp
b24gKGJhc2UpIHsgcmV0dXJuIE1hdGgucG93KGJhc2UsIChjb25zdDMwKQogICAgICAgIDB4YjRj
NWFmMGE6ICAgIG1vdncgICByMTIsICMzNDUyOAogICAgICAgIDB4YjRjNWFmMGU6ICAgIG1vdnQg
ICByMTIsICM0NjIwNAogICAgICAgIDB4YjRjNWFmMTI6ICAgIHN0ciAgICByMTIsIFtyNywgIy04
OF0KICAgICAgICAweGI0YzVhZjE2OiAgICBtdm4gICAgcjEyLCAjNAogICAgICAgIDB4YjRjNWFm
MWE6ICAgIHN0ciAgICByMTIsIFtyNywgIy04NF0KICAgIFsgODcwXSByZXNvbHZlX3Njb3BlICAg
ICBsb2MxMiwgbG9jMCwgY2FzZVN0cmluZ3MoQGlkNCksIDxHbG9iYWxMZXhpY2FsVmFyPiwgMywg
MHhiNDdkZmZjMAogICAgICAgIDB4YjRjNWFmMWU6ICAgIG12biAgICByMSwgIzQKICAgICAgICAw
eGI0YzVhZjIyOiAgICBtb3Z3ICAgcjAsICM2NTQ3MgogICAgICAgIDB4YjRjNWFmMjY6ICAgIG1v
dnQgICByMCwgIzQ2MjA1CiAgICAgICAgMHhiNGM1YWYyYTogICAgc3RyICAgIHIwLCBbcjcsICMt
MTA0XQogICAgICAgIDB4YjRjNWFmMmU6ICAgIHN0ciAgICByMSwgW3I3LCAjLTEwMF0KICAgIFsg
ODc3XSBnZXRfZnJvbV9zY29wZSAgICBsb2MxMiwgbG9jMTIsIGNhc2VTdHJpbmdzKEBpZDQpLCAy
MDUwPFRocm93SWZOb3RGb3VuZHxHbG9iYWxMZXhpY2FsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwg
LTEyNjI1MDEzNTIgICAgcHJlZGljdGluZyBBcnJheQogICAgICAgIDB4YjRjNWFmMzI6ICAgIG1v
dncgICByNiwgIzQ5NjkyCiAgICAgICAgMHhiNGM1YWYzNjogICAgbW92dCAgIHI2LCAjNDYyNzEK
ICAgICAgICAweGI0YzVhZjNhOiAgICBsZHIgICAgcjEsIFtyNl0KICAgICAgICAweGI0YzVhZjNj
OiAgICBtb3Z3ICAgcjYsICM0OTY4OAogICAgICAgIDB4YjRjNWFmNDA6ICAgIG1vdnQgICByNiwg
IzQ2MjcxCiAgICAgICAgMHhiNGM1YWY0NDogICAgbGRyICAgIHIwLCBbcjZdCiAgICAgICAgMHhi
NGM1YWY0NjogICAgY21uICAgIHIxLCAjNgogICAgICAgIDB4YjRjNWFmNGE6ICAgIGJlcSAgICAw
eGI0YzVkNWMwCiAgICAgICAgMHhiNGM1YWY0ZTogICAgc3RyICAgIHIwLCBbcjcsICMtMTA0XQog
ICAgICAgIDB4YjRjNWFmNTI6ICAgIHN0ciAgICByMSwgW3I3LCAjLTEwMF0KICAgIFsgODg1XSBn
ZXRfZnJvbV9zY29wZSAgICBsb2MxMywgbG9jNCwgaShAaWQxNyksIDIwNTE8VGhyb3dJZk5vdEZv
dW5kfENsb3N1cmVWYXJ8Tm90SW5pdGlhbGl6YXRpb24+LCAwICAgIHByZWRpY3RpbmcgTm9uYm9v
bGludDMyCiAgICAgICAgMHhiNGM1YWY1NjogICAgbGRyICAgIHIwLCBbcjcsICMtNDBdCiAgICAg
ICAgMHhiNGM1YWY1YTogICAgbGRyICAgIHIxLCBbcjcsICMtMzZdCiAgICAgICAgMHhiNGM1YWY1
ZTogICAgbGRyICAgIHIxLCBbcjAsICMyOF0KICAgICAgICAweGI0YzVhZjYwOiAgICBsZHIgICAg
cjAsIFtyMCwgIzI0XQogICAgICAgIDB4YjRjNWFmNjI6ICAgIHN0ciAgICByMCwgW3I3LCAjLTEx
Ml0KICAgICAgICAweGI0YzVhZjY2OiAgICBzdHIgICAgcjEsIFtyNywgIy0xMDhdCiAgICBbIDg5
M10gZ2V0X2J5X3ZhbCAgICAgICAgbG9jMTEsIGxvYzEyLCBsb2MxMyAgICBBcnJheVdpdGhDb250
aWd1b3VzLCBPcmlnaW5hbDsgcHJlZGljdGluZyBTdHJpbmdpZGVudAogICAgICAgIDB4YjRjNWFm
NmE6ICAgIGxkciAgICByMiwgW3I3LCAjLTExMl0KICAgICAgICAweGI0YzVhZjZlOiAgICBsZHIg
ICAgcjMsIFtyNywgIy0xMDhdCiAgICAgICAgMHhiNGM1YWY3MjogICAgbGRyICAgIHIwLCBbcjcs
ICMtMTA0XQogICAgICAgIDB4YjRjNWFmNzY6ICAgIGxkciAgICByMSwgW3I3LCAjLTEwMF0KICAg
ICAgICAweGI0YzVhZjdhOiAgICBjbW4gICAgcjEsICM1CiAgICAgICAgMHhiNGM1YWY3ZTogICAg
Ym5lICAgIDB4YjRjNWQ2MDYKICAgICAgICAweGI0YzVhZjgyOiAgICBjbXAgICAgcjMsICM0Mjk0
OTY3Mjk1CiAgICAgICAgMHhiNGM1YWY4NjogICAgaXR0dCAgIG5lCiAgICAgICAgMHhiNGM1YWY4
ODogICAgbW92d25lIHIxMiwgIzU0NzkxCiAgICAgICAgMHhiNGM1YWY4YzogICAgbW92dG5lIHIx
MiwgIzQ2Mjc3CiAgICAgICAgMHhiNGM1YWY5MDogICAgYnhuZSAgIHIxMgogICAgICAgIDB4YjRj
NWFmOTI6ICAgIGxkcmIgICByMSwgW3IwLCAjNF0KICAgICAgICAweGI0YzVhZjk0OiAgICBhbmQg
ICAgcjEsIHIxLCAjMTQKICAgICAgICAweGI0YzVhZjk4OiAgICBjbXAgICAgcjEsICM4CiAgICAg
ICAgMHhiNGM1YWY5YTogICAgaXR0dCAgIG5lCiAgICAgICAgMHhiNGM1YWY5YzogICAgbW92d25l
IHIxMiwgIzU0NzkzCiAgICAgICAgMHhiNGM1YWZhMDogICAgbW92dG5lIHIxMiwgIzQ2Mjc3CiAg
ICAgICAgMHhiNGM1YWZhNDogICAgYnhuZSAgIHIxMgogICAgICAgIDB4YjRjNWFmYTY6ICAgIGxk
ciAgICByMywgW3IwLCAjOF0KICAgICAgICAweGI0YzVhZmE4OiAgICBsZHIgICAgcjEyLCBbcjMs
ICMtOF0KICAgICAgICAweGI0YzVhZmFjOiAgICBjbXAgICAgcjIsIHIxMgogICAgICAgIDB4YjRj
NWFmYjA6ICAgIGJocyAgICAweGI0YzVkNjMyCiAgICAgICAgMHhiNGM1YWZiNDogICAgYWRkcyAg
IHI2LCByMywgIzQKICAgICAgICAweGI0YzVhZmI2OiAgICBsZHIgICAgcjEsIFtyNiwgcjIsICMz
XQogICAgICAgIDB4YjRjNWFmYmE6ICAgIGxkciAgICByMCwgW3IzLCByMiwgIzNdCiAgICAgICAg
MHhiNGM1YWZiZTogICAgY21uICAgIHIxLCAjNgogICAgICAgIDB4YjRjNWFmYzI6ICAgIGJlcSAg
ICAweGI0YzVkNjMyCiAgICAgICAgMHhiNGM1YWZjNjogICAgc3RyICAgIHIwLCBbcjcsICMtOTZd
CiAgICAgICAgMHhiNGM1YWZjYTogICAgc3RyICAgIHIxLCBbcjcsICMtOTJdCiAgICBbIDg5OV0g
dG9fcHJpbWl0aXZlICAgICAgbG9jMTEsIGxvYzExCiAgICAgICAgMHhiNGM1YWZjZTogICAgbGRy
ICAgIHIwLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1YWZkMjogICAgbGRyICAgIHIxLCBbcjcs
ICMtOTJdCiAgICAgICAgMHhiNGM1YWZkNjogICAgY21uICAgIHIxLCAjNQogICAgICAgIDB4YjRj
NWFmZGE6ICAgIGJuZSAgICAweGI0YzVhZmU0CiAgICAgICAgMHhiNGM1YWZkYzogICAgbGRyYiAg
IHI2LCBbcjAsICM1XQogICAgICAgIDB4YjRjNWFmZGU6ICAgIGNtcCAgICByMiwgIzIwCiAgICAg
ICAgMHhiNGM1YWZlMDogICAgYmhzICAgIDB4YjRjNWQ2OTYKICAgIFsgOTAyXSBtb3YgICAgICAg
ICAgICAgICBsb2MxMiwgU3RyaW5nIChhdG9taWMpIChpZGVudGlmaWVyKTogKTsgfShjb25zdDMx
KQogICAgICAgIDB4YjRjNWFmZTQ6ICAgIG1vdncgICByMTIsICMzNDQ5NgogICAgICAgIDB4YjRj
NWFmZTg6ICAgIG1vdnQgICByMTIsICM0NjIwNAogICAgICAgIDB4YjRjNWFmZWM6ICAgIHN0ciAg
ICByMTIsIFtyNywgIy0xMDRdCiAgICAgICAgMHhiNGM1YWZmMDogICAgbXZuICAgIHIxMiwgIzQK
ICAgICAgICAweGI0YzVhZmY0OiAgICBzdHIgICAgcjEyLCBbcjcsICMtMTAwXQogICAgWyA5MDVd
IHN0cmNhdCAgICAgICAgICAgIGxvYzgsIGxvYzEwLCAzCiAgICAgICAgMHhiNGM1YWZmODogICAg
bW92dyAgIHIxMiwgIzUxMjQ4CiAgICAgICAgMHhiNGM1YWZmYzogICAgbW92dCAgIHIxMiwgIzQ1
ODIyCiAgICAgICAgMHhiNGM1YjAwMDogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAg
MHhiNGM1YjAwNDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzViMDA4OiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWIwMGM6ICAgIHN0ciAgICByNywgW3I2XQog
ICAgICAgIDB4YjRjNWIwMGU6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzViMDEwOiAg
ICBtb3Z3ICAgcjEsICM1MTI0NAogICAgICAgIDB4YjRjNWIwMTQ6ICAgIG1vdnQgICByMSwgIzQ1
ODIyCiAgICAgICAgMHhiNGM1YjAxODogICAgbW92dyAgIHIxMiwgIzE4OTI1CiAgICAgICAgMHhi
NGM1YjAxYzogICAgbW92dCAgIHIxMiwgIzQ2NzkzCiAgICAgICAgMHhiNGM1YjAyMDogICAgYmx4
ICAgIHIxMgogICAgICAgIDB4YjRjNWIwMjI6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAg
MHhiNGM1YjAyNjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzViMDJhOiAgICBs
ZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzViMDJjOiAgICBjbXAgICAgcjIsICMwCiAgICAg
ICAgMHhiNGM1YjAyZTogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgIFsgOTA5XSBjYWxsX2V2YWwg
ICAgICAgICBsb2MzLCBsb2M2LCAyLCAxNCAgICBPcmlnaW5hbDsgcHJlZGljdGluZyBGdW5jdGlv
bgogICAgICAgIDB4YjRjNWIwMzI6ICAgIG1vdiAgICBzcCwgcjcKICAgICAgICAweGI0YzViMDM0
OiAgICBtdm4gICAgcjEyLCAjMTAzCiAgICAgICAgMHhiNGM1YjAzODogICAgbW92ICAgIHNwLCBz
cAogICAgICAgIDB4YjRjNWIwM2E6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAgICAgMHhiNGM1YjAz
YzogICAgbW92ICAgIHIxMiwgIzIKICAgICAgICAweGI0YzViMDQwOiAgICBzdHIgICAgcjEyLCBb
c3AsICMxNl0KICAgICAgICAweGI0YzViMDQ0OiAgICBtb3Z3ICAgcjEyLCAjNTEyNjAKICAgICAg
ICAweGI0YzViMDQ4OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzViMDRjOiAg
ICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzViMDUwOiAgICBsZHIgICAgcjAs
IFtyNywgIy01Nl0KICAgICAgICAweGI0YzViMDU0OiAgICBsZHIgICAgcjEsIFtyNywgIy01Ml0K
ICAgICAgICAweGI0YzViMDU4OiAgICBzdHIgICAgcjAsIFtzcCwgIzhdCiAgICAgICAgMHhiNGM1
YjA1YTogICAgc3RyICAgIHIxLCBbc3AsICMxMl0KICAgICAgICAweGI0YzViMDVjOiAgICBtdm4g
ICAgcjEyLCAjNwogICAgICAgIDB4YjRjNWIwNjA6ICAgIGFkZCAgICByMSwgc3AsIHIxMgogICAg
ICAgIDB4YjRjNWIwNjQ6ICAgIHN0ciAgICByNywgW3IxXQogICAgICAgIDB4YjRjNWIwNjY6ICAg
IG1vdiAgICBzcCwgcjcKICAgICAgICAweGI0YzViMDY4OiAgICBtdm4gICAgcjEyLCAjMTgzCiAg
ICAgICAgMHhiNGM1YjA2YzogICAgbW92ICAgIHNwLCBzcAogICAgICAgIDB4YjRjNWIwNmU6ICAg
IGFkZCAgICBzcCwgcjEyCiAgICAgICAgMHhiNGM1YjA3MDogICAgbW92ICAgIHIwLCByNwogICAg
ICAgIDB4YjRjNWIwNzI6ICAgIG1vdncgICByMTIsICM1MTI2NAogICAgICAgIDB4YjRjNWIwNzY6
ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWIwN2E6ICAgIHN0ciAgICByMTIs
IFtyNywgIzI4XQogICAgICAgIDB4YjRjNWIwN2U6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAg
ICAgMHhiNGM1YjA4MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzViMDg2OiAg
ICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzViMDg4OiAgICBtb3Z3ICAgcjEyLCAjNTEy
NjQKICAgICAgICAweGI0YzViMDhjOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0
YzViMDkwOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzViMDk0OiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWIwOTg6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAgICAgMHhiNGM1YjA5YzogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1YjA5
ZTogICAgbW92dyAgIHIxMiwgIzQ5ODA5CiAgICAgICAgMHhiNGM1YjBhMjogICAgbW92dCAgIHIx
MiwgIzQ2Nzc2CiAgICAgICAgMHhiNGM1YjBhNjogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRj
NWIwYTg6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1YjBhYzogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgICAgICAweGI0YzViMGIwOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAg
ICAweGI0YzViMGIyOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1YjBiNDogICAgYm5l
ICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzViMGI4OiAgICBjbW4gICAgcjEsICM2CiAgICAg
ICAgMHhiNGM1YjBiYzogICAgYmVxICAgIDB4YjRjNWQ2ZDQKICAgICAgICAweGI0YzViMGMwOiAg
ICBzdHIgICAgcjAsIFtyNywgIy0zMl0KICAgICAgICAweGI0YzViMGM0OiAgICBzdHIgICAgcjEs
IFtyNywgIy0yOF0KICAgIFsgOTE4XSBnZXRfcGFyZW50X3Njb3BlICBsb2M2LCBsb2M1CiAgICAg
ICAgMHhiNGM1YjBjODogICAgbGRyICAgIHIwLCBbcjcsICMtNDhdCiAgICAgICAgMHhiNGM1YjBj
YzogICAgbGRyICAgIHIwLCBbcjAsICMxNl0KICAgICAgICAweGI0YzViMGNlOiAgICBzdHIgICAg
cjAsIFtyNywgIy01Nl0KICAgICAgICAweGI0YzViMGQyOiAgICBtdm4gICAgcjEyLCAjNAogICAg
ICAgIDB4YjRjNWIwZDY6ICAgIHN0ciAgICByMTIsIFtyNywgIy01Ml0KICAgIFsgOTIxXSBtb3Yg
ICAgICAgICAgICAgICBsb2MwLCBsb2M2CiAgICAgICAgMHhiNGM1YjBkYTogICAgbGRyICAgIHIw
LCBbcjcsICMtNTZdCiAgICAgICAgMHhiNGM1YjBkZTogICAgbGRyICAgIHIxLCBbcjcsICMtNTJd
CiAgICAgICAgMHhiNGM1YjBlMjogICAgc3RyICAgIHIwLCBbcjcsICMtOF0KICAgICAgICAweGI0
YzViMGU2OiAgICBzdHIgICAgcjEsIFtyNywgIy00XQogICAgWyA5MjRdIGdldF9mcm9tX3Njb3Bl
ICAgIGxvYzUsIGxvYzQsIGkoQGlkMTcpLCAxMDUwNjI3PERvTm90VGhyb3dJZk5vdEZvdW5kfENs
b3N1cmVWYXJ8Tm90SW5pdGlhbGl6YXRpb24+LCAwICAgIHByZWRpY3RpbmcgTm9uYm9vbGludDMy
CiAgICAgICAgMHhiNGM1YjBlYTogICAgbGRyICAgIHIwLCBbcjcsICMtNDBdCiAgICAgICAgMHhi
NGM1YjBlZTogICAgbGRyICAgIHIxLCBbcjcsICMtMzZdCiAgICAgICAgMHhiNGM1YjBmMjogICAg
bGRyICAgIHIxLCBbcjAsICMyOF0KICAgICAgICAweGI0YzViMGY0OiAgICBsZHIgICAgcjAsIFty
MCwgIzI0XQogICAgICAgIDB4YjRjNWIwZjY6ICAgIHN0ciAgICByMCwgW3I3LCAjLTQ4XQogICAg
ICAgIDB4YjRjNWIwZmE6ICAgIHN0ciAgICByMSwgW3I3LCAjLTQ0XQogICAgWyA5MzJdIGdldF9w
YXJlbnRfc2NvcGUgIGxvYzYsIGxvYzQKICAgICAgICAweGI0YzViMGZlOiAgICBsZHIgICAgcjAs
IFtyNywgIy00MF0KICAgICAgICAweGI0YzViMTAyOiAgICBsZHIgICAgcjAsIFtyMCwgIzE2XQog
ICAgICAgIDB4YjRjNWIxMDQ6ICAgIHN0ciAgICByMCwgW3I3LCAjLTU2XQogICAgICAgIDB4YjRj
NWIxMDg6ICAgIG12biAgICByMTIsICM0CiAgICAgICAgMHhiNGM1YjEwYzogICAgc3RyICAgIHIx
MiwgW3I3LCAjLTUyXQogICAgWyA5MzVdIG1vdiAgICAgICAgICAgICAgIGxvYzAsIGxvYzYKICAg
ICAgICAweGI0YzViMTEwOiAgICBsZHIgICAgcjAsIFtyNywgIy01Nl0KICAgICAgICAweGI0YzVi
MTE0OiAgICBsZHIgICAgcjEsIFtyNywgIy01Ml0KICAgICAgICAweGI0YzViMTE4OiAgICBzdHIg
ICAgcjAsIFtyNywgIy04XQogICAgICAgIDB4YjRjNWIxMWM6ICAgIHN0ciAgICByMSwgW3I3LCAj
LTRdCiAgICBbIDkzOF0gY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQgbG9jNCwgbG9jMCwgQ2Vs
bDogMHhiNDdiNmQwMCAoMHhiNDdmN2E0MDpbU3ltYm9sVGFibGUsIHt9LCBOb25BcnJheSwgTGVh
Zl0pKGNvbnN0MjUpLCA8SlNWYWx1ZSgpPihjb25zdDEpCiAgICAgICAgMHhiNGM1YjEyMDogICAg
bW92dyAgIHIxMiwgIzUxMzgwCiAgICAgICAgMHhiNGM1YjEyNDogICAgbW92dCAgIHIxMiwgIzQ1
ODIyCiAgICAgICAgMHhiNGM1YjEyODogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAg
MHhiNGM1YjEyYzogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzViMTMwOiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWIxMzQ6ICAgIHN0ciAgICByNywgW3I2XQog
ICAgICAgIDB4YjRjNWIxMzY6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzViMTM4OiAg
ICBtb3Z3ICAgcjEsICM1MTM3NgogICAgICAgIDB4YjRjNWIxM2M6ICAgIG1vdnQgICByMSwgIzQ1
ODIyCiAgICAgICAgMHhiNGM1YjE0MDogICAgbW92dyAgIHIxMiwgIzIyOTM3CiAgICAgICAgMHhi
NGM1YjE0NDogICAgbW92dCAgIHIxMiwgIzQ2NzkzCiAgICAgICAgMHhiNGM1YjE0ODogICAgYmx4
ICAgIHIxMgogICAgICAgIDB4YjRjNWIxNGE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAg
MHhiNGM1YjE0ZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzViMTUyOiAgICBs
ZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzViMTU0OiAgICBjbXAgICAgcjIsICMwCiAgICAg
ICAgMHhiNGM1YjE1NjogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgIFsgOTQzXSBtb3YgICAgICAg
ICAgICAgICBsb2MwLCBsb2M0CiAgICAgICAgMHhiNGM1YjE1YTogICAgbGRyICAgIHIwLCBbcjcs
ICMtNDBdCiAgICAgICAgMHhiNGM1YjE1ZTogICAgbGRyICAgIHIxLCBbcjcsICMtMzZdCiAgICAg
ICAgMHhiNGM1YjE2MjogICAgc3RyICAgIHIwLCBbcjcsICMtOF0KICAgICAgICAweGI0YzViMTY2
OiAgICBzdHIgICAgcjEsIFtyNywgIy00XQogICAgWyA5NDZdIHB1dF90b19zY29wZSAgICAgIGxv
YzQsIGkoQGlkMTcpLCBsb2M1LCAxMDUwNjI4PERvTm90VGhyb3dJZk5vdEZvdW5kfExvY2FsQ2xv
c3VyZVZhcnxOb3RJbml0aWFsaXphdGlvbj4sIDxzdHJ1Y3R1cmU+LCAwCiAgICAgICAgMHhiNGM1
YjE2YTogICAgbGRyICAgIHIwLCBbcjcsICMtNDRdCiAgICAgICAgMHhiNGM1YjE2ZTogICAgY21u
ICAgIHIwLCAjNQogICAgICAgIDB4YjRjNWIxNzI6ICAgIGJuZSAgICAweGI0YzViMWI0CiAgICAg
ICAgMHhiNGM1YjE3NDogICAgbGRyICAgIHIxLCBbcjcsICMtNDBdCiAgICAgICAgMHhiNGM1YjE3
ODogICAgbGRyICAgIHIwLCBbcjcsICMtMzZdCiAgICAgICAgMHhiNGM1YjE3YzogICAgbGRyYiAg
IHI2LCBbcjEsICM3XQogICAgICAgIDB4YjRjNWIxN2U6ICAgIHRzdCAgICByNiwgcjYKICAgICAg
ICAweGI0YzViMTgwOiAgICBibmUgICAgMHhiNGM1YjFiNAogICAgICAgIDB4YjRjNWIxODI6ICAg
IG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzViMTg0OiAgICBtb3Z3ICAgcjEyLCAjNTE0MTIK
ICAgICAgICAweGI0YzViMTg4OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVi
MThjOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzViMTkwOiAgICBtb3Z3
ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWIxOTQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAgICAgMHhiNGM1YjE5ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1YjE5YTog
ICAgbW92dyAgIHIxMiwgIzYzMTc3CiAgICAgICAgMHhiNGM1YjE5ZTogICAgbW92dCAgIHIxMiwg
IzQ2Nzc2CiAgICAgICAgMHhiNGM1YjFhMjogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWIx
YTQ6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1YjFhODogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgICAgICAweGI0YzViMWFjOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAw
eGI0YzViMWFlOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1YjFiMDogICAgYm5lICAg
IDB4YjRjNWU2ODAKICAgICAgICAweGI0YzViMWI0OiAgICBsZHIgICAgcjIsIFtyNywgIy00OF0K
ICAgICAgICAweGI0YzViMWI4OiAgICBsZHIgICAgcjMsIFtyNywgIy00NF0KICAgICAgICAweGI0
YzViMWJjOiAgICBsZHIgICAgcjAsIFtyNywgIy00MF0KICAgICAgICAweGI0YzViMWMwOiAgICBs
ZHIgICAgcjEsIFtyNywgIy0zNl0KICAgICAgICAweGI0YzViMWM0OiAgICBzdHIgICAgcjMsIFty
MCwgIzI4XQogICAgICAgIDB4YjRjNWIxYzY6ICAgIHN0ciAgICByMiwgW3IwLCAjMjRdCiAgICBb
IDk1M10gZ2V0X2Zyb21fc2NvcGUgICAgbG9jNSwgbG9jNCwgaShAaWQxNyksIDIwNTE8VGhyb3dJ
Zk5vdEZvdW5kfENsb3N1cmVWYXJ8Tm90SW5pdGlhbGl6YXRpb24+LCAwICAgIHByZWRpY3Rpbmcg
Tm9uYm9vbGludDMyCiAgICAgICAgMHhiNGM1YjFjODogICAgbGRyICAgIHIwLCBbcjcsICMtNDBd
CiAgICAgICAgMHhiNGM1YjFjYzogICAgbGRyICAgIHIxLCBbcjcsICMtMzZdCiAgICAgICAgMHhi
NGM1YjFkMDogICAgbGRyICAgIHIxLCBbcjAsICMyOF0KICAgICAgICAweGI0YzViMWQyOiAgICBs
ZHIgICAgcjAsIFtyMCwgIzI0XQogICAgICAgIDB4YjRjNWIxZDQ6ICAgIHN0ciAgICByMCwgW3I3
LCAjLTQ4XQogICAgICAgIDB4YjRjNWIxZDg6ICAgIHN0ciAgICByMSwgW3I3LCAjLTQ0XQogICAg
WyA5NjFdIGluYyAgICAgICAgICAgICAgIGxvYzUKICAgICAgICAweGI0YzViMWRjOiAgICBsZHIg
ICAgcjAsIFtyNywgIy00OF0KICAgICAgICAweGI0YzViMWUwOiAgICBsZHIgICAgcjEsIFtyNywg
Iy00NF0KICAgICAgICAweGI0YzViMWU0OiAgICBjbXAgICAgcjEsICM0Mjk0OTY3Mjk1CiAgICAg
ICAgMHhiNGM1YjFlODogICAgYm5lICAgIDB4YjRjNWQ3MGUKICAgICAgICAweGI0YzViMWVjOiAg
ICBhZGRzICAgcjAsIHIwLCAjMQogICAgICAgIDB4YjRjNWIxZWU6ICAgIGJ2cyAgICAweGI0YzVk
NzBlCiAgICAgICAgMHhiNGM1YjFmMjogICAgc3RyICAgIHIwLCBbcjcsICMtNDhdCiAgICBbIDk2
M10gcHV0X3RvX3Njb3BlICAgICAgbG9jNCwgaShAaWQxNyksIGxvYzUsIDIwNTI8VGhyb3dJZk5v
dEZvdW5kfExvY2FsQ2xvc3VyZVZhcnxOb3RJbml0aWFsaXphdGlvbj4sIDxzdHJ1Y3R1cmU+LCAw
CiAgICAgICAgMHhiNGM1YjFmNjogICAgbGRyICAgIHIwLCBbcjcsICMtNDRdCiAgICAgICAgMHhi
NGM1YjFmYTogICAgY21uICAgIHIwLCAjNQogICAgICAgIDB4YjRjNWIxZmU6ICAgIGJuZSAgICAw
eGI0YzViMjQwCiAgICAgICAgMHhiNGM1YjIwMDogICAgbGRyICAgIHIxLCBbcjcsICMtNDBdCiAg
ICAgICAgMHhiNGM1YjIwNDogICAgbGRyICAgIHIwLCBbcjcsICMtMzZdCiAgICAgICAgMHhiNGM1
YjIwODogICAgbGRyYiAgIHI2LCBbcjEsICM3XQogICAgICAgIDB4YjRjNWIyMGE6ICAgIHRzdCAg
ICByNiwgcjYKICAgICAgICAweGI0YzViMjBjOiAgICBibmUgICAgMHhiNGM1YjI0MAogICAgICAg
IDB4YjRjNWIyMGU6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzViMjEwOiAgICBtb3Z3
ICAgcjEyLCAjNTE0ODAKICAgICAgICAweGI0YzViMjE0OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIK
ICAgICAgICAweGI0YzViMjE4OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0
YzViMjFjOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWIyMjA6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1YjIyNDogICAgc3RyICAgIHI3LCBbcjZdCiAgICAg
ICAgMHhiNGM1YjIyNjogICAgbW92dyAgIHIxMiwgIzYzMTc3CiAgICAgICAgMHhiNGM1YjIyYTog
ICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAgICAgMHhiNGM1YjIyZTogICAgYmx4ICAgIHIxMgog
ICAgICAgIDB4YjRjNWIyMzA6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1YjIz
NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzViMjM4OiAgICBsZHIgICAgcjYs
IFtyNl0KICAgICAgICAweGI0YzViMjNhOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1
YjIzYzogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzViMjQwOiAgICBsZHIgICAg
cjIsIFtyNywgIy00OF0KICAgICAgICAweGI0YzViMjQ0OiAgICBsZHIgICAgcjMsIFtyNywgIy00
NF0KICAgICAgICAweGI0YzViMjQ4OiAgICBsZHIgICAgcjAsIFtyNywgIy00MF0KICAgICAgICAw
eGI0YzViMjRjOiAgICBsZHIgICAgcjEsIFtyNywgIy0zNl0KICAgICAgICAweGI0YzViMjUwOiAg
ICBzdHIgICAgcjMsIFtyMCwgIzI4XQogICAgICAgIDB4YjRjNWIyNTI6ICAgIHN0ciAgICByMiwg
W3IwLCAjMjRdCiAgICBbIDk3MF0gZ2V0X2Zyb21fc2NvcGUgICAgbG9jNSwgbG9jNCwgaShAaWQx
NyksIDIwNTE8VGhyb3dJZk5vdEZvdW5kfENsb3N1cmVWYXJ8Tm90SW5pdGlhbGl6YXRpb24+LCAw
ICAgIHByZWRpY3RpbmcgTm9uYm9vbGludDMyCiAgICAgICAgMHhiNGM1YjI1NDogICAgbGRyICAg
IHIwLCBbcjcsICMtNDBdCiAgICAgICAgMHhiNGM1YjI1ODogICAgbGRyICAgIHIxLCBbcjcsICMt
MzZdCiAgICAgICAgMHhiNGM1YjI1YzogICAgbGRyICAgIHIxLCBbcjAsICMyOF0KICAgICAgICAw
eGI0YzViMjVlOiAgICBsZHIgICAgcjAsIFtyMCwgIzI0XQogICAgICAgIDB4YjRjNWIyNjA6ICAg
IHN0ciAgICByMCwgW3I3LCAjLTQ4XQogICAgICAgIDB4YjRjNWIyNjQ6ICAgIHN0ciAgICByMSwg
W3I3LCAjLTQ0XQogICAgWyA5NzhdIHJlc29sdmVfc2NvcGUgICAgIGxvYzYsIGxvYzAsIGNhc2Vz
KEBpZDUpLCA8R2xvYmFsTGV4aWNhbFZhcj4sIDIsIDB4YjQ3ZGZmYzAKICAgICAgICAweGI0YzVi
MjY4OiAgICBtdm4gICAgcjEsICM0CiAgICAgICAgMHhiNGM1YjI2YzogICAgbW92dyAgIHIwLCAj
NjU0NzIKICAgICAgICAweGI0YzViMjcwOiAgICBtb3Z0ICAgcjAsICM0NjIwNQogICAgICAgIDB4
YjRjNWIyNzQ6ICAgIHN0ciAgICByMCwgW3I3LCAjLTU2XQogICAgICAgIDB4YjRjNWIyNzg6ICAg
IHN0ciAgICByMSwgW3I3LCAjLTUyXQogICAgWyA5ODVdIGdldF9mcm9tX3Njb3BlICAgIGxvYzcs
IGxvYzYsIGNhc2VzKEBpZDUpLCAyMDUwPFRocm93SWZOb3RGb3VuZHxHbG9iYWxMZXhpY2FsVmFy
fE5vdEluaXRpYWxpemF0aW9uPiwgLTEyNjI1MDEzNzYgICAgcHJlZGljdGluZyBBcnJheQogICAg
ICAgIDB4YjRjNWIyN2M6ICAgIG1vdncgICByNiwgIzQ5NjY4CiAgICAgICAgMHhiNGM1YjI4MDog
ICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI0YzViMjg0OiAgICBsZHIgICAgcjEsIFty
Nl0KICAgICAgICAweGI0YzViMjg2OiAgICBtb3Z3ICAgcjYsICM0OTY2NAogICAgICAgIDB4YjRj
NWIyOGE6ICAgIG1vdnQgICByNiwgIzQ2MjcxCiAgICAgICAgMHhiNGM1YjI4ZTogICAgbGRyICAg
IHIwLCBbcjZdCiAgICAgICAgMHhiNGM1YjI5MDogICAgY21uICAgIHIxLCAjNgogICAgICAgIDB4
YjRjNWIyOTQ6ICAgIGJlcSAgICAweGI0YzVkNzRjCiAgICAgICAgMHhiNGM1YjI5ODogICAgc3Ry
ICAgIHIwLCBbcjcsICMtNjRdCiAgICAgICAgMHhiNGM1YjI5YzogICAgc3RyICAgIHIxLCBbcjcs
ICMtNjBdCiAgICBbIDk5M10gYXJyYXlfbGVuZ3RoICAgICAgbG9jOCwgbG9jNywgbGVuZ3RoKEBp
ZDE4KSBsbGludChhcnJheV9sZW5ndGgpICAgIHByZWRpY3RpbmcgTm9uYm9vbGludDMyCiAgICAg
ICAgMHhiNGM1YjJhMDogICAgbGRyICAgIHIwLCBbcjcsICMtNjRdCiAgICAgICAgMHhiNGM1YjJh
NDogICAgbGRyICAgIHIxLCBbcjcsICMtNjBdCiAgICAgICAgMHhiNGM1YjJhODogICAgY21uICAg
IHIxLCAjNQogICAgICAgIDB4YjRjNWIyYWM6ICAgIGJuZSAgICAweGI0YzVkNzkyCiAgICAgICAg
MHhiNGM1YjJiMDogICAgbGRyICAgIHI2LCBbcjBdCiAgICAgICAgMHhiNGM1YjJiMjogICAgbW92
dyAgIHIxMiwgIzAKICAgICAgICAweGI0YzViMmI2OiAgICBtb3Z0ICAgcjEyLCAjMAogICAgICAg
IDB4YjRjNWIyYmE6ICAgIGNtcCAgICByNiwgcjEyCiAgICAgICAgMHhiNGM1YjJiZTogICAgaXR0
dCAgIG5lCiAgICAgICAgMHhiNGM1YjJjMDogICAgbW92d25lIHIxMiwgIzU1MTg3CiAgICAgICAg
MHhiNGM1YjJjNDogICAgbW92dG5lIHIxMiwgIzQ2Mjc3CiAgICAgICAgMHhiNGM1YjJjODogICAg
YnhuZSAgIHIxMgogICAgICAgIDB4YjRjNWIyY2E6ICAgIGxkciAgICByMSwgW3IwXQogICAgICAg
IDB4YjRjNWIyY2U6ICAgIGxkciAgICByMCwgW3IwXQogICAgICAgIDB4YjRjNWIyZDI6ICAgIHN0
ciAgICByMCwgW3I3LCAjLTcyXQogICAgICAgIDB4YjRjNWIyZDY6ICAgIHN0ciAgICByMSwgW3I3
LCAjLTY4XQogICAgWzEwMDJdIGpsZXNzICAgICAgICAgICAgIGxvYzUsIGxvYzgsIC00NzAoLT41
MzIpCiAgICAgICAgMHhiNGM1YjJkYTogICAgbGRyICAgIHIyLCBbcjcsICMtNzJdCiAgICAgICAg
MHhiNGM1YjJkZTogICAgbGRyICAgIHIzLCBbcjcsICMtNjhdCiAgICAgICAgMHhiNGM1YjJlMjog
ICAgbGRyICAgIHIwLCBbcjcsICMtNDhdCiAgICAgICAgMHhiNGM1YjJlNjogICAgbGRyICAgIHIx
LCBbcjcsICMtNDRdCiAgICAgICAgMHhiNGM1YjJlYTogICAgY21wICAgIHIxLCAjNDI5NDk2NzI5
NQogICAgICAgIDB4YjRjNWIyZWU6ICAgIGJuZSAgICAweGI0YzViMmZlCiAgICAgICAgMHhiNGM1
YjJmMDogICAgY21wICAgIHIzLCAjNDI5NDk2NzI5NQogICAgICAgIDB4YjRjNWIyZjQ6ICAgIGJu
ZSAgICAweGI0YzViMzM0CiAgICAgICAgMHhiNGM1YjJmNjogICAgY21wICAgIHIwLCByMgogICAg
ICAgIDB4YjRjNWIyZjg6ICAgIGJsdCAgICAweGI0YzVhNDU0CiAgICAgICAgMHhiNGM1YjJmYzog
ICAgYiAgICAgIDB4YjRjNWIzNTQKICAgICAgICAweGI0YzViMmZlOiAgICBjbW4gICAgcjEsICM3
CiAgICAgICAgMHhiNGM1YjMwMjogICAgYmhpICAgIDB4YjRjNWQ3ZTgKICAgICAgICAweGI0YzVi
MzA2OiAgICBjbW4gICAgcjMsICM3CiAgICAgICAgMHhiNGM1YjMwYTogICAgYmxvICAgIDB4YjRj
NWIzMWUKICAgICAgICAweGI0YzViMzBjOiAgICBjbXAgICAgcjMsICM0Mjk0OTY3Mjk1CiAgICAg
ICAgMHhiNGM1YjMxMDogICAgYm5lICAgIDB4YjRjNWQ3ZTgKICAgICAgICAweGI0YzViMzE0OiAg
ICB2bW92ICAgZDcsIHIyLCByMgogICAgICAgIDB4YjRjNWIzMTg6ICAgIHZjdnQuZjY0LnMzMiBk
MCwgczE0CiAgICAgICAgMHhiNGM1YjMxYzogICAgYiAgICAgIDB4YjRjNWIzMjIKICAgICAgICAw
eGI0YzViMzFlOiAgICB2bGRyICAgZDAsIFtyNywgIy03Ml0KICAgICAgICAweGI0YzViMzIyOiAg
ICB2bGRyICAgZDIsIFtyNywgIy00OF0KICAgICAgICAweGI0YzViMzI2OiAgICB2Y21wLmY2NCBk
MiwgZDAKICAgICAgICAweGI0YzViMzJhOiAgICB2bXJzICAgYXBzcl9uemN2LCBmcHNjcgogICAg
ICAgIDB4YjRjNWIzMmU6ICAgIGJsbyAgICAweGI0YzVhNDU0CiAgICAgICAgMHhiNGM1YjMzMjog
ICAgYiAgICAgIDB4YjRjNWIzNTQKICAgICAgICAweGI0YzViMzM0OiAgICB2bW92ICAgZDcsIHIw
LCByMAogICAgICAgIDB4YjRjNWIzMzg6ICAgIHZjdnQuZjY0LnMzMiBkMCwgczE0CiAgICAgICAg
MHhiNGM1YjMzYzogICAgY21uICAgIHIzLCAjNwogICAgICAgIDB4YjRjNWIzNDA6ICAgIGJoaSAg
ICAweGI0YzVkN2U4CiAgICAgICAgMHhiNGM1YjM0NDogICAgdmxkciAgIGQxLCBbcjcsICMtNzJd
CiAgICAgICAgMHhiNGM1YjM0ODogICAgdmNtcC5mNjQgZDAsIGQxCiAgICAgICAgMHhiNGM1YjM0
YzogICAgdm1ycyAgIGFwc3JfbnpjdiwgZnBzY3IKICAgICAgICAweGI0YzViMzUwOiAgICBibG8g
ICAgMHhiNGM1YTQ1NAogICAgWzEwMDZdIGdldF9wYXJlbnRfc2NvcGUgIGxvYzUsIGxvYzQKICAg
ICAgICAweGI0YzViMzU0OiAgICBsZHIgICAgcjAsIFtyNywgIy00MF0KICAgICAgICAweGI0YzVi
MzU4OiAgICBsZHIgICAgcjAsIFtyMCwgIzE2XQogICAgICAgIDB4YjRjNWIzNWE6ICAgIHN0ciAg
ICByMCwgW3I3LCAjLTQ4XQogICAgICAgIDB4YjRjNWIzNWU6ICAgIG12biAgICByMTIsICM0CiAg
ICAgICAgMHhiNGM1YjM2MjogICAgc3RyICAgIHIxMiwgW3I3LCAjLTQ0XQogICAgWzEwMDldIG1v
diAgICAgICAgICAgICAgIGxvYzAsIGxvYzUKICAgICAgICAweGI0YzViMzY2OiAgICBsZHIgICAg
cjAsIFtyNywgIy00OF0KICAgICAgICAweGI0YzViMzZhOiAgICBsZHIgICAgcjEsIFtyNywgIy00
NF0KICAgICAgICAweGI0YzViMzZlOiAgICBzdHIgICAgcjAsIFtyNywgIy04XQogICAgICAgIDB4
YjRjNWIzNzI6ICAgIHN0ciAgICByMSwgW3I3LCAjLTRdCiAgICBbMTAxMl0gbW92ICAgICAgICAg
ICAgICAgbG9jNCwgPEpTVmFsdWUoKT4oY29uc3QxKQogICAgICAgIDB4YjRjNWIzNzY6ICAgIG1v
diAgICByMTIsICMwCiAgICAgICAgMHhiNGM1YjM3YTogICAgc3RyICAgIHIxMiwgW3I3LCAjLTQw
XQogICAgICAgIDB4YjRjNWIzN2U6ICAgIG12biAgICByMTIsICM1CiAgICAgICAgMHhiNGM1YjM4
MjogICAgc3RyICAgIHIxMiwgW3I3LCAjLTM2XQogICAgWzEwMTVdIG1vdiAgICAgICAgICAgICAg
IGxvYzQsIEludDMyOiAwKGNvbnN0MjYpCiAgICAgICAgMHhiNGM1YjM4NjogICAgbW92ICAgIHIx
MiwgIzAKICAgICAgICAweGI0YzViMzhhOiAgICBzdHIgICAgcjEyLCBbcjcsICMtNDBdCiAgICAg
ICAgMHhiNGM1YjM4ZTogICAgbW92ICAgIHIxMiwgIzQyOTQ5NjcyOTUKICAgICAgICAweGI0YzVi
MzkyOiAgICBzdHIgICAgcjEyLCBbcjcsICMtMzZdCiAgICBbMTAxOF0gam5sZXNzICAgICAgICAg
ICAgbG9jNCwgSW50MzI6IDEwMDAoY29uc3QzMiksIDUzNCgtPjE1NTIpCiAgICAgICAgMHhiNGM1
YjM5NjogICAgbGRyICAgIHIwLCBbcjcsICMtNDBdCiAgICAgICAgMHhiNGM1YjM5YTogICAgbGRy
ICAgIHIxLCBbcjcsICMtMzZdCiAgICAgICAgMHhiNGM1YjM5ZTogICAgY21wICAgIHIxLCAjNDI5
NDk2NzI5NQogICAgICAgIDB4YjRjNWIzYTI6ICAgIGJuZSAgICAweGI0YzViM2FlCiAgICAgICAg
MHhiNGM1YjNhNDogICAgY21wICAgIHIwLCAjMTAwMAogICAgICAgIDB4YjRjNWIzYTg6ICAgIGJn
ZSAgICAweGI0YzVjM2Q4CiAgICAgICAgMHhiNGM1YjNhYzogICAgYiAgICAgIDB4YjRjNWIzZjIK
ICAgICAgICAweGI0YzViM2FlOiAgICBjbW4gICAgcjEsICM3CiAgICAgICAgMHhiNGM1YjNiMjog
ICAgYmhpICAgIDB4YjRjNWQ4M2UKICAgICAgICAweGI0YzViM2I2OiAgICBtb3YgICAgcjIsICMx
MDAwCiAgICAgICAgMHhiNGM1YjNiYTogICAgbW92ICAgIHIzLCAjNDI5NDk2NzI5NQogICAgICAg
IDB4YjRjNWIzYmU6ICAgIGNtbiAgICByMywgIzcKICAgICAgICAweGI0YzViM2MyOiAgICBibG8g
ICAgMHhiNGM1YjNkNgogICAgICAgIDB4YjRjNWIzYzQ6ICAgIGNtcCAgICByMywgIzQyOTQ5Njcy
OTUKICAgICAgICAweGI0YzViM2M4OiAgICBibmUgICAgMHhiNGM1ZDgzZQogICAgICAgIDB4YjRj
NWIzY2M6ICAgIHZtb3YgICBkNywgcjIsIHIyCiAgICAgICAgMHhiNGM1YjNkMDogICAgdmN2dC5m
NjQuczMyIGQwLCBzMTQKICAgICAgICAweGI0YzViM2Q0OiAgICBiICAgICAgMHhiNGM1YjNlMgog
ICAgICAgIDB4YjRjNWIzZDY6ICAgIG1vdncgICByNiwgIzkwODgKICAgICAgICAweGI0YzViM2Rh
OiAgICBtb3Z0ICAgcjYsICM0NjI3MQogICAgICAgIDB4YjRjNWIzZGU6ICAgIHZsZHIgICBkMCwg
W3I2XQogICAgICAgIDB4YjRjNWIzZTI6ICAgIHZsZHIgICBkMiwgW3I3LCAjLTQwXQogICAgICAg
IDB4YjRjNWIzZTY6ICAgIHZjbXAuZjY0IGQwLCBkMgogICAgICAgIDB4YjRjNWIzZWE6ICAgIHZt
cnMgICBhcHNyX256Y3YsIGZwc2NyCiAgICAgICAgMHhiNGM1YjNlZTogICAgYmxlICAgIDB4YjRj
NWMzZDgKICAgIFsxMDIyXSBsb29wX2hpbnQgICAgICAgICAKICAgIFsxMDIzXSBtb3YgICAgICAg
ICAgICAgICBsb2M1LCA8SlNWYWx1ZSgpPihjb25zdDEpCiAgICAgICAgMHhiNGM1YjNmMjogICAg
bW92ICAgIHIxMiwgIzAKICAgICAgICAweGI0YzViM2Y2OiAgICBzdHIgICAgcjEyLCBbcjcsICMt
NDhdCiAgICAgICAgMHhiNGM1YjNmYTogICAgbXZuICAgIHIxMiwgIzUKICAgICAgICAweGI0YzVi
M2ZlOiAgICBzdHIgICAgcjEyLCBbcjcsICMtNDRdCiAgICBbMTAyNl0gbW92ICAgICAgICAgICAg
ICAgbG9jNSwgSW50MzI6IDAoY29uc3QyNikKICAgICAgICAweGI0YzViNDAyOiAgICBtb3YgICAg
cjEyLCAjMAogICAgICAgIDB4YjRjNWI0MDY6ICAgIHN0ciAgICByMTIsIFtyNywgIy00OF0KICAg
ICAgICAweGI0YzViNDBhOiAgICBtb3YgICAgcjEyLCAjNDI5NDk2NzI5NQogICAgICAgIDB4YjRj
NWI0MGU6ICAgIHN0ciAgICByMTIsIFtyNywgIy00NF0KICAgIFsxMDI5XSBtb3YgICAgICAgICAg
ICAgICBsb2M2LCBsb2M1CiAgICAgICAgMHhiNGM1YjQxMjogICAgbGRyICAgIHIwLCBbcjcsICMt
NDhdCiAgICAgICAgMHhiNGM1YjQxNjogICAgbGRyICAgIHIxLCBbcjcsICMtNDRdCiAgICAgICAg
MHhiNGM1YjQxYTogICAgc3RyICAgIHIwLCBbcjcsICMtNTZdCiAgICAgICAgMHhiNGM1YjQxZTog
ICAgc3RyICAgIHIxLCBbcjcsICMtNTJdCiAgICBbMTAzMl0gcmVzb2x2ZV9zY29wZSAgICAgbG9j
NywgbG9jMCwgY2FzZXMoQGlkNSksIDxHbG9iYWxMZXhpY2FsVmFyPiwgMSwgMHhiNDdkZmZjMAog
ICAgICAgIDB4YjRjNWI0MjI6ICAgIG12biAgICByMSwgIzQKICAgICAgICAweGI0YzViNDI2OiAg
ICBtb3Z3ICAgcjAsICM2NTQ3MgogICAgICAgIDB4YjRjNWI0MmE6ICAgIG1vdnQgICByMCwgIzQ2
MjA1CiAgICAgICAgMHhiNGM1YjQyZTogICAgc3RyICAgIHIwLCBbcjcsICMtNjRdCiAgICAgICAg
MHhiNGM1YjQzMjogICAgc3RyICAgIHIxLCBbcjcsICMtNjBdCiAgICBbMTAzOV0gZ2V0X2Zyb21f
c2NvcGUgICAgbG9jOCwgbG9jNywgY2FzZXMoQGlkNSksIDIwNTA8VGhyb3dJZk5vdEZvdW5kfEds
b2JhbExleGljYWxWYXJ8Tm90SW5pdGlhbGl6YXRpb24+LCAtMTI2MjUwMTM3NiAgICBwcmVkaWN0
aW5nIEFycmF5CiAgICAgICAgMHhiNGM1YjQzNjogICAgbW92dyAgIHI2LCAjNDk2NjgKICAgICAg
ICAweGI0YzViNDNhOiAgICBtb3Z0ICAgcjYsICM0NjI3MQogICAgICAgIDB4YjRjNWI0M2U6ICAg
IGxkciAgICByMSwgW3I2XQogICAgICAgIDB4YjRjNWI0NDA6ICAgIG1vdncgICByNiwgIzQ5NjY0
CiAgICAgICAgMHhiNGM1YjQ0NDogICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI0YzVi
NDQ4OiAgICBsZHIgICAgcjAsIFtyNl0KICAgICAgICAweGI0YzViNDRhOiAgICBjbW4gICAgcjEs
ICM2CiAgICAgICAgMHhiNGM1YjQ0ZTogICAgYmVxICAgIDB4YjRjNWQ4OTQKICAgICAgICAweGI0
YzViNDUyOiAgICBzdHIgICAgcjAsIFtyNywgIy03Ml0KICAgICAgICAweGI0YzViNDU2OiAgICBz
dHIgICAgcjEsIFtyNywgIy02OF0KICAgIFsxMDQ3XSBhcnJheV9sZW5ndGggICAgICBsb2M5LCBs
b2M4LCBsZW5ndGgoQGlkMTgpIGxsaW50KGFycmF5X2xlbmd0aCkgICAgcHJlZGljdGluZyBOb25i
b29saW50MzIKICAgICAgICAweGI0YzViNDVhOiAgICBsZHIgICAgcjAsIFtyNywgIy03Ml0KICAg
ICAgICAweGI0YzViNDVlOiAgICBsZHIgICAgcjEsIFtyNywgIy02OF0KICAgICAgICAweGI0YzVi
NDYyOiAgICBjbW4gICAgcjEsICM1CiAgICAgICAgMHhiNGM1YjQ2NjogICAgYm5lICAgIDB4YjRj
NWQ4ZGEKICAgICAgICAweGI0YzViNDZhOiAgICBsZHIgICAgcjYsIFtyMF0KICAgICAgICAweGI0
YzViNDZjOiAgICBtb3Z3ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNWI0NzA6ICAgIG1vdnQgICBy
MTIsICMwCiAgICAgICAgMHhiNGM1YjQ3NDogICAgY21wICAgIHI2LCByMTIKICAgICAgICAweGI0
YzViNDc4OiAgICBpdHR0ICAgbmUKICAgICAgICAweGI0YzViNDdhOiAgICBtb3Z3bmUgcjEyLCAj
NTU1MTUKICAgICAgICAweGI0YzViNDdlOiAgICBtb3Z0bmUgcjEyLCAjNDYyNzcKICAgICAgICAw
eGI0YzViNDgyOiAgICBieG5lICAgcjEyCiAgICAgICAgMHhiNGM1YjQ4NDogICAgbGRyICAgIHIx
LCBbcjBdCiAgICAgICAgMHhiNGM1YjQ4ODogICAgbGRyICAgIHIwLCBbcjBdCiAgICAgICAgMHhi
NGM1YjQ4YzogICAgc3RyICAgIHIwLCBbcjcsICMtODBdCiAgICAgICAgMHhiNGM1YjQ5MDogICAg
c3RyICAgIHIxLCBbcjcsICMtNzZdCiAgICBbMTA1Nl0gam5sZXNzICAgICAgICAgICAgbG9jNiwg
bG9jOSwgNDkwKC0+MTU0NikKICAgICAgICAweGI0YzViNDk0OiAgICBsZHIgICAgcjIsIFtyNywg
Iy04MF0KICAgICAgICAweGI0YzViNDk4OiAgICBsZHIgICAgcjMsIFtyNywgIy03Nl0KICAgICAg
ICAweGI0YzViNDljOiAgICBsZHIgICAgcjAsIFtyNywgIy01Nl0KICAgICAgICAweGI0YzViNGEw
OiAgICBsZHIgICAgcjEsIFtyNywgIy01Ml0KICAgICAgICAweGI0YzViNGE0OiAgICBjbXAgICAg
cjEsICM0Mjk0OTY3Mjk1CiAgICAgICAgMHhiNGM1YjRhODogICAgYm5lICAgIDB4YjRjNWI0YjgK
ICAgICAgICAweGI0YzViNGFhOiAgICBjbXAgICAgcjMsICM0Mjk0OTY3Mjk1CiAgICAgICAgMHhi
NGM1YjRhZTogICAgYm5lICAgIDB4YjRjNWI0ZWUKICAgICAgICAweGI0YzViNGIwOiAgICBjbXAg
ICAgcjAsIHIyCiAgICAgICAgMHhiNGM1YjRiMjogICAgYmdlICAgIDB4YjRjNWMzNjIKICAgICAg
ICAweGI0YzViNGI2OiAgICBiICAgICAgMHhiNGM1YjUwZQogICAgICAgIDB4YjRjNWI0Yjg6ICAg
IGNtbiAgICByMSwgIzcKICAgICAgICAweGI0YzViNGJjOiAgICBiaGkgICAgMHhiNGM1ZDkzMAog
ICAgICAgIDB4YjRjNWI0YzA6ICAgIGNtbiAgICByMywgIzcKICAgICAgICAweGI0YzViNGM0OiAg
ICBibG8gICAgMHhiNGM1YjRkOAogICAgICAgIDB4YjRjNWI0YzY6ICAgIGNtcCAgICByMywgIzQy
OTQ5NjcyOTUKICAgICAgICAweGI0YzViNGNhOiAgICBibmUgICAgMHhiNGM1ZDkzMAogICAgICAg
IDB4YjRjNWI0Y2U6ICAgIHZtb3YgICBkNywgcjIsIHIyCiAgICAgICAgMHhiNGM1YjRkMjogICAg
dmN2dC5mNjQuczMyIGQwLCBzMTQKICAgICAgICAweGI0YzViNGQ2OiAgICBiICAgICAgMHhiNGM1
YjRkYwogICAgICAgIDB4YjRjNWI0ZDg6ICAgIHZsZHIgICBkMCwgW3I3LCAjLTgwXQogICAgICAg
IDB4YjRjNWI0ZGM6ICAgIHZsZHIgICBkMiwgW3I3LCAjLTU2XQogICAgICAgIDB4YjRjNWI0ZTA6
ICAgIHZjbXAuZjY0IGQwLCBkMgogICAgICAgIDB4YjRjNWI0ZTQ6ICAgIHZtcnMgICBhcHNyX256
Y3YsIGZwc2NyCiAgICAgICAgMHhiNGM1YjRlODogICAgYmxlICAgIDB4YjRjNWMzNjIKICAgICAg
ICAweGI0YzViNGVjOiAgICBiICAgICAgMHhiNGM1YjUwZQogICAgICAgIDB4YjRjNWI0ZWU6ICAg
IHZtb3YgICBkNywgcjAsIHIwCiAgICAgICAgMHhiNGM1YjRmMjogICAgdmN2dC5mNjQuczMyIGQw
LCBzMTQKICAgICAgICAweGI0YzViNGY2OiAgICBjbW4gICAgcjMsICM3CiAgICAgICAgMHhiNGM1
YjRmYTogICAgYmhpICAgIDB4YjRjNWQ5MzAKICAgICAgICAweGI0YzViNGZlOiAgICB2bGRyICAg
ZDEsIFtyNywgIy04MF0KICAgICAgICAweGI0YzViNTAyOiAgICB2Y21wLmY2NCBkMSwgZDAKICAg
ICAgICAweGI0YzViNTA2OiAgICB2bXJzICAgYXBzcl9uemN2LCBmcHNjcgogICAgICAgIDB4YjRj
NWI1MGE6ICAgIGJsZSAgICAweGI0YzVjMzYyCiAgICBbMTA2MF0gbG9vcF9oaW50ICAgICAgICAg
CiAgICBbMTA2MV0gbW92ICAgICAgICAgICAgICAgbG9jNiwgPEpTVmFsdWUoKT4oY29uc3QxKQog
ICAgICAgIDB4YjRjNWI1MGU6ICAgIG1vdiAgICByMTIsICMwCiAgICAgICAgMHhiNGM1YjUxMjog
ICAgc3RyICAgIHIxMiwgW3I3LCAjLTU2XQogICAgICAgIDB4YjRjNWI1MTY6ICAgIG12biAgICBy
MTIsICM1CiAgICAgICAgMHhiNGM1YjUxYTogICAgc3RyICAgIHIxMiwgW3I3LCAjLTUyXQogICAg
WzEwNjRdIHJlc29sdmVfc2NvcGUgICAgIGxvYzcsIGxvYzAsIGNhc2VzKEBpZDUpLCA8R2xvYmFs
TGV4aWNhbFZhcj4sIDEsIDB4YjQ3ZGZmYzAKICAgICAgICAweGI0YzViNTFlOiAgICBtdm4gICAg
cjEsICM0CiAgICAgICAgMHhiNGM1YjUyMjogICAgbW92dyAgIHIwLCAjNjU0NzIKICAgICAgICAw
eGI0YzViNTI2OiAgICBtb3Z0ICAgcjAsICM0NjIwNQogICAgICAgIDB4YjRjNWI1MmE6ICAgIHN0
ciAgICByMCwgW3I3LCAjLTY0XQogICAgICAgIDB4YjRjNWI1MmU6ICAgIHN0ciAgICByMSwgW3I3
LCAjLTYwXQogICAgWzEwNzFdIGdldF9mcm9tX3Njb3BlICAgIGxvYzgsIGxvYzcsIGNhc2VzKEBp
ZDUpLCAyMDUwPFRocm93SWZOb3RGb3VuZHxHbG9iYWxMZXhpY2FsVmFyfE5vdEluaXRpYWxpemF0
aW9uPiwgLTEyNjI1MDEzNzYgICAgcHJlZGljdGluZyBBcnJheQogICAgICAgIDB4YjRjNWI1MzI6
ICAgIG1vdncgICByNiwgIzQ5NjY4CiAgICAgICAgMHhiNGM1YjUzNjogICAgbW92dCAgIHI2LCAj
NDYyNzEKICAgICAgICAweGI0YzViNTNhOiAgICBsZHIgICAgcjEsIFtyNl0KICAgICAgICAweGI0
YzViNTNjOiAgICBtb3Z3ICAgcjYsICM0OTY2NAogICAgICAgIDB4YjRjNWI1NDA6ICAgIG1vdnQg
ICByNiwgIzQ2MjcxCiAgICAgICAgMHhiNGM1YjU0NDogICAgbGRyICAgIHIwLCBbcjZdCiAgICAg
ICAgMHhiNGM1YjU0NjogICAgY21uICAgIHIxLCAjNgogICAgICAgIDB4YjRjNWI1NGE6ICAgIGJl
cSAgICAweGI0YzVkOTg2CiAgICAgICAgMHhiNGM1YjU0ZTogICAgc3RyICAgIHIwLCBbcjcsICMt
NzJdCiAgICAgICAgMHhiNGM1YjU1MjogICAgc3RyICAgIHIxLCBbcjcsICMtNjhdCiAgICBbMTA3
OV0gZ2V0X2J5X3ZhbCAgICAgICAgbG9jNiwgbG9jOCwgbG9jNSAgICBBcnJheVdpdGhDb250aWd1
b3VzLCBPcmlnaW5hbDsgcHJlZGljdGluZyBOb25pbnRhc2RvdWJsZQogICAgICAgIDB4YjRjNWI1
NTY6ICAgIGxkciAgICByMiwgW3I3LCAjLTQ4XQogICAgICAgIDB4YjRjNWI1NWE6ICAgIGxkciAg
ICByMywgW3I3LCAjLTQ0XQogICAgICAgIDB4YjRjNWI1NWU6ICAgIGxkciAgICByMCwgW3I3LCAj
LTcyXQogICAgICAgIDB4YjRjNWI1NjI6ICAgIGxkciAgICByMSwgW3I3LCAjLTY4XQogICAgICAg
IDB4YjRjNWI1NjY6ICAgIGNtbiAgICByMSwgIzUKICAgICAgICAweGI0YzViNTZhOiAgICBibmUg
ICAgMHhiNGM1ZDljYwogICAgICAgIDB4YjRjNWI1NmU6ICAgIGNtcCAgICByMywgIzQyOTQ5Njcy
OTUKICAgICAgICAweGI0YzViNTcyOiAgICBpdHR0ICAgbmUKICAgICAgICAweGI0YzViNTc0OiAg
ICBtb3Z3bmUgcjEyLCAjNTU3NTcKICAgICAgICAweGI0YzViNTc4OiAgICBtb3Z0bmUgcjEyLCAj
NDYyNzcKICAgICAgICAweGI0YzViNTdjOiAgICBieG5lICAgcjEyCiAgICAgICAgMHhiNGM1YjU3
ZTogICAgbGRyYiAgIHIxLCBbcjAsICM0XQogICAgICAgIDB4YjRjNWI1ODA6ICAgIGFuZCAgICBy
MSwgcjEsICMxNAogICAgICAgIDB4YjRjNWI1ODQ6ICAgIGNtcCAgICByMSwgIzgKICAgICAgICAw
eGI0YzViNTg2OiAgICBpdHR0ICAgbmUKICAgICAgICAweGI0YzViNTg4OiAgICBtb3Z3bmUgcjEy
LCAjNTU3NTkKICAgICAgICAweGI0YzViNThjOiAgICBtb3Z0bmUgcjEyLCAjNDYyNzcKICAgICAg
ICAweGI0YzViNTkwOiAgICBieG5lICAgcjEyCiAgICAgICAgMHhiNGM1YjU5MjogICAgbGRyICAg
IHIzLCBbcjAsICM4XQogICAgICAgIDB4YjRjNWI1OTQ6ICAgIGxkciAgICByMTIsIFtyMywgIy04
XQogICAgICAgIDB4YjRjNWI1OTg6ICAgIGNtcCAgICByMiwgcjEyCiAgICAgICAgMHhiNGM1YjU5
YzogICAgYmhzICAgIDB4YjRjNWQ5ZjgKICAgICAgICAweGI0YzViNWEwOiAgICBhZGRzICAgcjYs
IHIzLCAjNAogICAgICAgIDB4YjRjNWI1YTI6ICAgIGxkciAgICByMSwgW3I2LCByMiwgIzNdCiAg
ICAgICAgMHhiNGM1YjVhNjogICAgbGRyICAgIHIwLCBbcjMsIHIyLCAjM10KICAgICAgICAweGI0
YzViNWFhOiAgICBjbW4gICAgcjEsICM2CiAgICAgICAgMHhiNGM1YjVhZTogICAgYmVxICAgIDB4
YjRjNWQ5ZjgKICAgICAgICAweGI0YzViNWIyOiAgICBzdHIgICAgcjAsIFtyNywgIy01Nl0KICAg
ICAgICAweGI0YzViNWI2OiAgICBzdHIgICAgcjEsIFtyNywgIy01Ml0KICAgIFsxMDg1XSBtb3Yg
ICAgICAgICAgICAgICBsb2M3LCA8SlNWYWx1ZSgpPihjb25zdDEpCiAgICAgICAgMHhiNGM1YjVi
YTogICAgbW92ICAgIHIxMiwgIzAKICAgICAgICAweGI0YzViNWJlOiAgICBzdHIgICAgcjEyLCBb
cjcsICMtNjRdCiAgICAgICAgMHhiNGM1YjVjMjogICAgbXZuICAgIHIxMiwgIzUKICAgICAgICAw
eGI0YzViNWM2OiAgICBzdHIgICAgcjEyLCBbcjcsICMtNjBdCiAgICBbMTA4OF0gbW92ICAgICAg
ICAgICAgICAgbG9jNywgSW50MzI6IDAoY29uc3QyNikKICAgICAgICAweGI0YzViNWNhOiAgICBt
b3YgICAgcjEyLCAjMAogICAgICAgIDB4YjRjNWI1Y2U6ICAgIHN0ciAgICByMTIsIFtyNywgIy02
NF0KICAgICAgICAweGI0YzViNWQyOiAgICBtb3YgICAgcjEyLCAjNDI5NDk2NzI5NQogICAgICAg
IDB4YjRjNWI1ZDY6ICAgIHN0ciAgICByMTIsIFtyNywgIy02MF0KICAgIFsxMDkxXSBtb3YgICAg
ICAgICAgICAgICBsb2M4LCBsb2M3CiAgICAgICAgMHhiNGM1YjVkYTogICAgbGRyICAgIHIwLCBb
cjcsICMtNjRdCiAgICAgICAgMHhiNGM1YjVkZTogICAgbGRyICAgIHIxLCBbcjcsICMtNjBdCiAg
ICAgICAgMHhiNGM1YjVlMjogICAgc3RyICAgIHIwLCBbcjcsICMtNzJdCiAgICAgICAgMHhiNGM1
YjVlNjogICAgc3RyICAgIHIxLCBbcjcsICMtNjhdCiAgICBbMTA5NF0gcmVzb2x2ZV9zY29wZSAg
ICAgbG9jOSwgbG9jMCwgY2FzZXMoQGlkNSksIDxHbG9iYWxMZXhpY2FsVmFyPiwgMSwgMHhiNDdk
ZmZjMAogICAgICAgIDB4YjRjNWI1ZWE6ICAgIG12biAgICByMSwgIzQKICAgICAgICAweGI0YzVi
NWVlOiAgICBtb3Z3ICAgcjAsICM2NTQ3MgogICAgICAgIDB4YjRjNWI1ZjI6ICAgIG1vdnQgICBy
MCwgIzQ2MjA1CiAgICAgICAgMHhiNGM1YjVmNjogICAgc3RyICAgIHIwLCBbcjcsICMtODBdCiAg
ICAgICAgMHhiNGM1YjVmYTogICAgc3RyICAgIHIxLCBbcjcsICMtNzZdCiAgICBbMTEwMV0gZ2V0
X2Zyb21fc2NvcGUgICAgbG9jMTAsIGxvYzksIGNhc2VzKEBpZDUpLCAyMDUwPFRocm93SWZOb3RG
b3VuZHxHbG9iYWxMZXhpY2FsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgLTEyNjI1MDEzNzYgICAg
cHJlZGljdGluZyBBcnJheQogICAgICAgIDB4YjRjNWI1ZmU6ICAgIG1vdncgICByNiwgIzQ5NjY4
CiAgICAgICAgMHhiNGM1YjYwMjogICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI0YzVi
NjA2OiAgICBsZHIgICAgcjEsIFtyNl0KICAgICAgICAweGI0YzViNjA4OiAgICBtb3Z3ICAgcjYs
ICM0OTY2NAogICAgICAgIDB4YjRjNWI2MGM6ICAgIG1vdnQgICByNiwgIzQ2MjcxCiAgICAgICAg
MHhiNGM1YjYxMDogICAgbGRyICAgIHIwLCBbcjZdCiAgICAgICAgMHhiNGM1YjYxMjogICAgY21u
ICAgIHIxLCAjNgogICAgICAgIDB4YjRjNWI2MTY6ICAgIGJlcSAgICAweGI0YzVkYTVjCiAgICAg
ICAgMHhiNGM1YjYxYTogICAgc3RyICAgIHIwLCBbcjcsICMtODhdCiAgICAgICAgMHhiNGM1YjYx
ZTogICAgc3RyICAgIHIxLCBbcjcsICMtODRdCiAgICBbMTEwOV0gYXJyYXlfbGVuZ3RoICAgICAg
bG9jMTEsIGxvYzEwLCBsZW5ndGgoQGlkMTgpIGxsaW50KGFycmF5X2xlbmd0aCkgICAgcHJlZGlj
dGluZyBOb25ib29saW50MzIKICAgICAgICAweGI0YzViNjIyOiAgICBsZHIgICAgcjAsIFtyNywg
Iy04OF0KICAgICAgICAweGI0YzViNjI2OiAgICBsZHIgICAgcjEsIFtyNywgIy04NF0KICAgICAg
ICAweGI0YzViNjJhOiAgICBjbW4gICAgcjEsICM1CiAgICAgICAgMHhiNGM1YjYyZTogICAgYm5l
ICAgIDB4YjRjNWRhYTIKICAgICAgICAweGI0YzViNjMyOiAgICBsZHIgICAgcjYsIFtyMF0KICAg
ICAgICAweGI0YzViNjM0OiAgICBtb3Z3ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNWI2Mzg6ICAg
IG1vdnQgICByMTIsICMwCiAgICAgICAgMHhiNGM1YjYzYzogICAgY21wICAgIHI2LCByMTIKICAg
ICAgICAweGI0YzViNjQwOiAgICBpdHR0ICAgbmUKICAgICAgICAweGI0YzViNjQyOiAgICBtb3Z3
bmUgcjEyLCAjNTU5NzEKICAgICAgICAweGI0YzViNjQ2OiAgICBtb3Z0bmUgcjEyLCAjNDYyNzcK
ICAgICAgICAweGI0YzViNjRhOiAgICBieG5lICAgcjEyCiAgICAgICAgMHhiNGM1YjY0YzogICAg
bGRyICAgIHIxLCBbcjBdCiAgICAgICAgMHhiNGM1YjY1MDogICAgbGRyICAgIHIwLCBbcjBdCiAg
ICAgICAgMHhiNGM1YjY1NDogICAgc3RyICAgIHIwLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1
YjY1ODogICAgc3RyICAgIHIxLCBbcjcsICMtOTJdCiAgICBbMTExOF0gam5sZXNzICAgICAgICAg
ICAgbG9jOCwgbG9jMTEsIDM5NSgtPjE1MTMpCiAgICAgICAgMHhiNGM1YjY1YzogICAgbGRyICAg
IHIyLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1YjY2MDogICAgbGRyICAgIHIzLCBbcjcsICMt
OTJdCiAgICAgICAgMHhiNGM1YjY2NDogICAgbGRyICAgIHIwLCBbcjcsICMtNzJdCiAgICAgICAg
MHhiNGM1YjY2ODogICAgbGRyICAgIHIxLCBbcjcsICMtNjhdCiAgICAgICAgMHhiNGM1YjY2Yzog
ICAgY21wICAgIHIxLCAjNDI5NDk2NzI5NQogICAgICAgIDB4YjRjNWI2NzA6ICAgIGJuZSAgICAw
eGI0YzViNjgwCiAgICAgICAgMHhiNGM1YjY3MjogICAgY21wICAgIHIzLCAjNDI5NDk2NzI5NQog
ICAgICAgIDB4YjRjNWI2NzY6ICAgIGJuZSAgICAweGI0YzViNmI2CiAgICAgICAgMHhiNGM1YjY3
ODogICAgY21wICAgIHIwLCByMgogICAgICAgIDB4YjRjNWI2N2E6ICAgIGJnZSAgICAweGI0YzVj
MjRjCiAgICAgICAgMHhiNGM1YjY3ZTogICAgYiAgICAgIDB4YjRjNWI2ZDYKICAgICAgICAweGI0
YzViNjgwOiAgICBjbW4gICAgcjEsICM3CiAgICAgICAgMHhiNGM1YjY4NDogICAgYmhpICAgIDB4
YjRjNWRhZjgKICAgICAgICAweGI0YzViNjg4OiAgICBjbW4gICAgcjMsICM3CiAgICAgICAgMHhi
NGM1YjY4YzogICAgYmxvICAgIDB4YjRjNWI2YTAKICAgICAgICAweGI0YzViNjhlOiAgICBjbXAg
ICAgcjMsICM0Mjk0OTY3Mjk1CiAgICAgICAgMHhiNGM1YjY5MjogICAgYm5lICAgIDB4YjRjNWRh
ZjgKICAgICAgICAweGI0YzViNjk2OiAgICB2bW92ICAgZDcsIHIyLCByMgogICAgICAgIDB4YjRj
NWI2OWE6ICAgIHZjdnQuZjY0LnMzMiBkMCwgczE0CiAgICAgICAgMHhiNGM1YjY5ZTogICAgYiAg
ICAgIDB4YjRjNWI2YTQKICAgICAgICAweGI0YzViNmEwOiAgICB2bGRyICAgZDAsIFtyNywgIy05
Nl0KICAgICAgICAweGI0YzViNmE0OiAgICB2bGRyICAgZDIsIFtyNywgIy03Ml0KICAgICAgICAw
eGI0YzViNmE4OiAgICB2Y21wLmY2NCBkMCwgZDIKICAgICAgICAweGI0YzViNmFjOiAgICB2bXJz
ICAgYXBzcl9uemN2LCBmcHNjcgogICAgICAgIDB4YjRjNWI2YjA6ICAgIGJsZSAgICAweGI0YzVj
MjRjCiAgICAgICAgMHhiNGM1YjZiNDogICAgYiAgICAgIDB4YjRjNWI2ZDYKICAgICAgICAweGI0
YzViNmI2OiAgICB2bW92ICAgZDcsIHIwLCByMAogICAgICAgIDB4YjRjNWI2YmE6ICAgIHZjdnQu
ZjY0LnMzMiBkMCwgczE0CiAgICAgICAgMHhiNGM1YjZiZTogICAgY21uICAgIHIzLCAjNwogICAg
ICAgIDB4YjRjNWI2YzI6ICAgIGJoaSAgICAweGI0YzVkYWY4CiAgICAgICAgMHhiNGM1YjZjNjog
ICAgdmxkciAgIGQxLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1YjZjYTogICAgdmNtcC5mNjQg
ZDEsIGQwCiAgICAgICAgMHhiNGM1YjZjZTogICAgdm1ycyAgIGFwc3JfbnpjdiwgZnBzY3IKICAg
ICAgICAweGI0YzViNmQyOiAgICBibGUgICAgMHhiNGM1YzI0YwogICAgWzExMjJdIGxvb3BfaGlu
dCAgICAgICAgIAogICAgWzExMjNdIG1vdiAgICAgICAgICAgICAgIGxvYzgsIDxKU1ZhbHVlKCk+
KGNvbnN0MSkKICAgICAgICAweGI0YzViNmQ2OiAgICBtb3YgICAgcjEyLCAjMAogICAgICAgIDB4
YjRjNWI2ZGE6ICAgIHN0ciAgICByMTIsIFtyNywgIy03Ml0KICAgICAgICAweGI0YzViNmRlOiAg
ICBtdm4gICAgcjEyLCAjNQogICAgICAgIDB4YjRjNWI2ZTI6ICAgIHN0ciAgICByMTIsIFtyNywg
Iy02OF0KICAgIFsxMTI2XSBtb3YgICAgICAgICAgICAgICBsb2M5LCA8SlNWYWx1ZSgpPihjb25z
dDEpCiAgICAgICAgMHhiNGM1YjZlNjogICAgbW92ICAgIHIxMiwgIzAKICAgICAgICAweGI0YzVi
NmVhOiAgICBzdHIgICAgcjEyLCBbcjcsICMtODBdCiAgICAgICAgMHhiNGM1YjZlZTogICAgbXZu
ICAgIHIxMiwgIzUKICAgICAgICAweGI0YzViNmYyOiAgICBzdHIgICAgcjEyLCBbcjcsICMtNzZd
CiAgICBbMTEyOV0gbW92ICAgICAgICAgICAgICAgbG9jMTAsIDxKU1ZhbHVlKCk+KGNvbnN0MSkK
ICAgICAgICAweGI0YzViNmY2OiAgICBtb3YgICAgcjEyLCAjMAogICAgICAgIDB4YjRjNWI2ZmE6
ICAgIHN0ciAgICByMTIsIFtyNywgIy04OF0KICAgICAgICAweGI0YzViNmZlOiAgICBtdm4gICAg
cjEyLCAjNQogICAgICAgIDB4YjRjNWI3MDI6ICAgIHN0ciAgICByMTIsIFtyNywgIy04NF0KICAg
IFsxMTMyXSByZXNvbHZlX3Njb3BlICAgICBsb2MxMSwgbG9jMCwgY2FzZXMoQGlkNSksIDxHbG9i
YWxMZXhpY2FsVmFyPiwgMSwgMHhiNDdkZmZjMAogICAgICAgIDB4YjRjNWI3MDY6ICAgIG12biAg
ICByMSwgIzQKICAgICAgICAweGI0YzViNzBhOiAgICBtb3Z3ICAgcjAsICM2NTQ3MgogICAgICAg
IDB4YjRjNWI3MGU6ICAgIG1vdnQgICByMCwgIzQ2MjA1CiAgICAgICAgMHhiNGM1YjcxMjogICAg
c3RyICAgIHIwLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1YjcxNjogICAgc3RyICAgIHIxLCBb
cjcsICMtOTJdCiAgICBbMTEzOV0gZ2V0X2Zyb21fc2NvcGUgICAgbG9jMTIsIGxvYzExLCBjYXNl
cyhAaWQ1KSwgMjA1MDxUaHJvd0lmTm90Rm91bmR8R2xvYmFsTGV4aWNhbFZhcnxOb3RJbml0aWFs
aXphdGlvbj4sIC0xMjYyNTAxMzc2ICAgIHByZWRpY3RpbmcgQXJyYXkKICAgICAgICAweGI0YzVi
NzFhOiAgICBtb3Z3ICAgcjYsICM0OTY2OAogICAgICAgIDB4YjRjNWI3MWU6ICAgIG1vdnQgICBy
NiwgIzQ2MjcxCiAgICAgICAgMHhiNGM1YjcyMjogICAgbGRyICAgIHIxLCBbcjZdCiAgICAgICAg
MHhiNGM1YjcyNDogICAgbW92dyAgIHI2LCAjNDk2NjQKICAgICAgICAweGI0YzViNzI4OiAgICBt
b3Z0ICAgcjYsICM0NjI3MQogICAgICAgIDB4YjRjNWI3MmM6ICAgIGxkciAgICByMCwgW3I2XQog
ICAgICAgIDB4YjRjNWI3MmU6ICAgIGNtbiAgICByMSwgIzYKICAgICAgICAweGI0YzViNzMyOiAg
ICBiZXEgICAgMHhiNGM1ZGI0ZQogICAgICAgIDB4YjRjNWI3MzY6ICAgIHN0ciAgICByMCwgW3I3
LCAjLTEwNF0KICAgICAgICAweGI0YzViNzNhOiAgICBzdHIgICAgcjEsIFtyNywgIy0xMDBdCiAg
ICBbMTE0N10gZ2V0X2J5X3ZhbCAgICAgICAgbG9jOSwgbG9jMTIsIGxvYzcgICAgQXJyYXlXaXRo
Q29udGlndW91cywgT3JpZ2luYWw7IHByZWRpY3RpbmcgQW55SW50QXNEb3VibGUKICAgICAgICAw
eGI0YzViNzNlOiAgICBsZHIgICAgcjIsIFtyNywgIy02NF0KICAgICAgICAweGI0YzViNzQyOiAg
ICBsZHIgICAgcjMsIFtyNywgIy02MF0KICAgICAgICAweGI0YzViNzQ2OiAgICBsZHIgICAgcjAs
IFtyNywgIy0xMDRdCiAgICAgICAgMHhiNGM1Yjc0YTogICAgbGRyICAgIHIxLCBbcjcsICMtMTAw
XQogICAgICAgIDB4YjRjNWI3NGU6ICAgIGNtbiAgICByMSwgIzUKICAgICAgICAweGI0YzViNzUy
OiAgICBibmUgICAgMHhiNGM1ZGI5NAogICAgICAgIDB4YjRjNWI3NTY6ICAgIGNtcCAgICByMywg
IzQyOTQ5NjcyOTUKICAgICAgICAweGI0YzViNzVhOiAgICBpdHR0ICAgbmUKICAgICAgICAweGI0
YzViNzVjOiAgICBtb3Z3bmUgcjEyLCAjNTYyMTMKICAgICAgICAweGI0YzViNzYwOiAgICBtb3Z0
bmUgcjEyLCAjNDYyNzcKICAgICAgICAweGI0YzViNzY0OiAgICBieG5lICAgcjEyCiAgICAgICAg
MHhiNGM1Yjc2NjogICAgbGRyYiAgIHIxLCBbcjAsICM0XQogICAgICAgIDB4YjRjNWI3Njg6ICAg
IGFuZCAgICByMSwgcjEsICMxNAogICAgICAgIDB4YjRjNWI3NmM6ICAgIGNtcCAgICByMSwgIzgK
ICAgICAgICAweGI0YzViNzZlOiAgICBpdHR0ICAgbmUKICAgICAgICAweGI0YzViNzcwOiAgICBt
b3Z3bmUgcjEyLCAjNTYyMTUKICAgICAgICAweGI0YzViNzc0OiAgICBtb3Z0bmUgcjEyLCAjNDYy
NzcKICAgICAgICAweGI0YzViNzc4OiAgICBieG5lICAgcjEyCiAgICAgICAgMHhiNGM1Yjc3YTog
ICAgbGRyICAgIHIzLCBbcjAsICM4XQogICAgICAgIDB4YjRjNWI3N2M6ICAgIGxkciAgICByMTIs
IFtyMywgIy04XQogICAgICAgIDB4YjRjNWI3ODA6ICAgIGNtcCAgICByMiwgcjEyCiAgICAgICAg
MHhiNGM1Yjc4NDogICAgYmhzICAgIDB4YjRjNWRiYzAKICAgICAgICAweGI0YzViNzg4OiAgICBh
ZGRzICAgcjYsIHIzLCAjNAogICAgICAgIDB4YjRjNWI3OGE6ICAgIGxkciAgICByMSwgW3I2LCBy
MiwgIzNdCiAgICAgICAgMHhiNGM1Yjc4ZTogICAgbGRyICAgIHIwLCBbcjMsIHIyLCAjM10KICAg
ICAgICAweGI0YzViNzkyOiAgICBjbW4gICAgcjEsICM2CiAgICAgICAgMHhiNGM1Yjc5NjogICAg
YmVxICAgIDB4YjRjNWRiYzAKICAgICAgICAweGI0YzViNzlhOiAgICBzdHIgICAgcjAsIFtyNywg
Iy04MF0KICAgICAgICAweGI0YzViNzllOiAgICBzdHIgICAgcjEsIFtyNywgIy03Nl0KICAgIFsx
MTUzXSByZXNvbHZlX3Njb3BlICAgICBsb2MxMSwgbG9jMCwgZXhwZWN0ZWRSZXN1bHRzKEBpZDE0
KSwgPEdsb2JhbExleGljYWxWYXI+LCAxLCAweGI0N2RmZmMwCiAgICAgICAgMHhiNGM1YjdhMjog
ICAgbXZuICAgIHIxLCAjNAogICAgICAgIDB4YjRjNWI3YTY6ICAgIG1vdncgICByMCwgIzY1NDcy
CiAgICAgICAgMHhiNGM1YjdhYTogICAgbW92dCAgIHIwLCAjNDYyMDUKICAgICAgICAweGI0YzVi
N2FlOiAgICBzdHIgICAgcjAsIFtyNywgIy05Nl0KICAgICAgICAweGI0YzViN2IyOiAgICBzdHIg
ICAgcjEsIFtyNywgIy05Ml0KICAgIFsxMTYwXSBnZXRfZnJvbV9zY29wZSAgICBsb2MxMiwgbG9j
MTEsIGV4cGVjdGVkUmVzdWx0cyhAaWQxNCksIDIwNTA8VGhyb3dJZk5vdEZvdW5kfEdsb2JhbExl
eGljYWxWYXJ8Tm90SW5pdGlhbGl6YXRpb24+LCAtMTI2MjUwMTM2MCAgICBwcmVkaWN0aW5nIEFy
cmF5CiAgICAgICAgMHhiNGM1YjdiNjogICAgbW92dyAgIHI2LCAjNDk2ODQKICAgICAgICAweGI0
YzViN2JhOiAgICBtb3Z0ICAgcjYsICM0NjI3MQogICAgICAgIDB4YjRjNWI3YmU6ICAgIGxkciAg
ICByMSwgW3I2XQogICAgICAgIDB4YjRjNWI3YzA6ICAgIG1vdncgICByNiwgIzQ5NjgwCiAgICAg
ICAgMHhiNGM1YjdjNDogICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI0YzViN2M4OiAg
ICBsZHIgICAgcjAsIFtyNl0KICAgICAgICAweGI0YzViN2NhOiAgICBjbW4gICAgcjEsICM2CiAg
ICAgICAgMHhiNGM1YjdjZTogICAgYmVxICAgIDB4YjRjNWRjMjQKICAgICAgICAweGI0YzViN2Qy
OiAgICBzdHIgICAgcjAsIFtyNywgIy0xMDRdCiAgICAgICAgMHhiNGM1YjdkNjogICAgc3RyICAg
IHIxLCBbcjcsICMtMTAwXQogICAgWzExNjhdIGdldF9ieV92YWwgICAgICAgIGxvYzExLCBsb2Mx
MiwgbG9jNSAgICBBcnJheVdpdGhDb250aWd1b3VzLCBPcmlnaW5hbDsgcHJlZGljdGluZyBBcnJh
eQogICAgICAgIDB4YjRjNWI3ZGE6ICAgIGxkciAgICByMiwgW3I3LCAjLTQ4XQogICAgICAgIDB4
YjRjNWI3ZGU6ICAgIGxkciAgICByMywgW3I3LCAjLTQ0XQogICAgICAgIDB4YjRjNWI3ZTI6ICAg
IGxkciAgICByMCwgW3I3LCAjLTEwNF0KICAgICAgICAweGI0YzViN2U2OiAgICBsZHIgICAgcjEs
IFtyNywgIy0xMDBdCiAgICAgICAgMHhiNGM1YjdlYTogICAgY21uICAgIHIxLCAjNQogICAgICAg
IDB4YjRjNWI3ZWU6ICAgIGJuZSAgICAweGI0YzVkYzZhCiAgICAgICAgMHhiNGM1YjdmMjogICAg
Y21wICAgIHIzLCAjNDI5NDk2NzI5NQogICAgICAgIDB4YjRjNWI3ZjY6ICAgIGl0dHQgICBuZQog
ICAgICAgIDB4YjRjNWI3Zjg6ICAgIG1vdnduZSByMTIsICM1NjQyNwogICAgICAgIDB4YjRjNWI3
ZmM6ICAgIG1vdnRuZSByMTIsICM0NjI3NwogICAgICAgIDB4YjRjNWI4MDA6ICAgIGJ4bmUgICBy
MTIKICAgICAgICAweGI0YzViODAyOiAgICBsZHJiICAgcjEsIFtyMCwgIzRdCiAgICAgICAgMHhi
NGM1YjgwNDogICAgYW5kICAgIHIxLCByMSwgIzE0CiAgICAgICAgMHhiNGM1YjgwODogICAgY21w
ICAgIHIxLCAjOAogICAgICAgIDB4YjRjNWI4MGE6ICAgIGl0dHQgICBuZQogICAgICAgIDB4YjRj
NWI4MGM6ICAgIG1vdnduZSByMTIsICM1NjQyOQogICAgICAgIDB4YjRjNWI4MTA6ICAgIG1vdnRu
ZSByMTIsICM0NjI3NwogICAgICAgIDB4YjRjNWI4MTQ6ICAgIGJ4bmUgICByMTIKICAgICAgICAw
eGI0YzViODE2OiAgICBsZHIgICAgcjMsIFtyMCwgIzhdCiAgICAgICAgMHhiNGM1YjgxODogICAg
bGRyICAgIHIxMiwgW3IzLCAjLThdCiAgICAgICAgMHhiNGM1YjgxYzogICAgY21wICAgIHIyLCBy
MTIKICAgICAgICAweGI0YzViODIwOiAgICBiaHMgICAgMHhiNGM1ZGM5NgogICAgICAgIDB4YjRj
NWI4MjQ6ICAgIGFkZHMgICByNiwgcjMsICM0CiAgICAgICAgMHhiNGM1YjgyNjogICAgbGRyICAg
IHIxLCBbcjYsIHIyLCAjM10KICAgICAgICAweGI0YzViODJhOiAgICBsZHIgICAgcjAsIFtyMywg
cjIsICMzXQogICAgICAgIDB4YjRjNWI4MmU6ICAgIGNtbiAgICByMSwgIzYKICAgICAgICAweGI0
YzViODMyOiAgICBiZXEgICAgMHhiNGM1ZGM5NgogICAgICAgIDB4YjRjNWI4MzY6ICAgIHN0ciAg
ICByMCwgW3I3LCAjLTk2XQogICAgICAgIDB4YjRjNWI4M2E6ICAgIHN0ciAgICByMSwgW3I3LCAj
LTkyXQogICAgWzExNzRdIGdldF9ieV92YWwgICAgICAgIGxvYzgsIGxvYzExLCBsb2M3ICAgIEFy
cmF5V2l0aENvbnRpZ3VvdXMsIE9yaWdpbmFsOyBwcmVkaWN0aW5nIE5vbmludGFzZG91YmxlCiAg
ICAgICAgMHhiNGM1YjgzZTogICAgbGRyICAgIHIyLCBbcjcsICMtNjRdCiAgICAgICAgMHhiNGM1
Yjg0MjogICAgbGRyICAgIHIzLCBbcjcsICMtNjBdCiAgICAgICAgMHhiNGM1Yjg0NjogICAgbGRy
ICAgIHIwLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1Yjg0YTogICAgbGRyICAgIHIxLCBbcjcs
ICMtOTJdCiAgICAgICAgMHhiNGM1Yjg0ZTogICAgY21uICAgIHIxLCAjNQogICAgICAgIDB4YjRj
NWI4NTI6ICAgIGJuZSAgICAweGI0YzVkY2ZhCiAgICAgICAgMHhiNGM1Yjg1NjogICAgY21wICAg
IHIzLCAjNDI5NDk2NzI5NQogICAgICAgIDB4YjRjNWI4NWE6ICAgIGl0dHQgICBuZQogICAgICAg
IDB4YjRjNWI4NWM6ICAgIG1vdnduZSByMTIsICM1NjU3MQogICAgICAgIDB4YjRjNWI4NjA6ICAg
IG1vdnRuZSByMTIsICM0NjI3NwogICAgICAgIDB4YjRjNWI4NjQ6ICAgIGJ4bmUgICByMTIKICAg
ICAgICAweGI0YzViODY2OiAgICBsZHJiICAgcjEsIFtyMCwgIzRdCiAgICAgICAgMHhiNGM1Yjg2
ODogICAgYW5kICAgIHIxLCByMSwgIzE0CiAgICAgICAgMHhiNGM1Yjg2YzogICAgY21wICAgIHIx
LCAjOAogICAgICAgIDB4YjRjNWI4NmU6ICAgIGl0dHQgICBuZQogICAgICAgIDB4YjRjNWI4NzA6
ICAgIG1vdnduZSByMTIsICM1NjU3MwogICAgICAgIDB4YjRjNWI4NzQ6ICAgIG1vdnRuZSByMTIs
ICM0NjI3NwogICAgICAgIDB4YjRjNWI4Nzg6ICAgIGJ4bmUgICByMTIKICAgICAgICAweGI0YzVi
ODdhOiAgICBsZHIgICAgcjMsIFtyMCwgIzhdCiAgICAgICAgMHhiNGM1Yjg3YzogICAgbGRyICAg
IHIxMiwgW3IzLCAjLThdCiAgICAgICAgMHhiNGM1Yjg4MDogICAgY21wICAgIHIyLCByMTIKICAg
ICAgICAweGI0YzViODg0OiAgICBiaHMgICAgMHhiNGM1ZGQyNgogICAgICAgIDB4YjRjNWI4ODg6
ICAgIGFkZHMgICByNiwgcjMsICM0CiAgICAgICAgMHhiNGM1Yjg4YTogICAgbGRyICAgIHIxLCBb
cjYsIHIyLCAjM10KICAgICAgICAweGI0YzViODhlOiAgICBsZHIgICAgcjAsIFtyMywgcjIsICMz
XQogICAgICAgIDB4YjRjNWI4OTI6ICAgIGNtbiAgICByMSwgIzYKICAgICAgICAweGI0YzViODk2
OiAgICBiZXEgICAgMHhiNGM1ZGQyNgogICAgICAgIDB4YjRjNWI4OWE6ICAgIHN0ciAgICByMCwg
W3I3LCAjLTcyXQogICAgICAgIDB4YjRjNWI4OWU6ICAgIHN0ciAgICByMSwgW3I3LCAjLTY4XQog
ICAgWzExODBdIHJlc29sdmVfc2NvcGUgICAgIGxvYzE1LCBsb2MwLCBvcGFxdWVQb3coQGlkMSks
IDxHbG9iYWxWYXI+LCAyLCAweGI0N2U3OGMwCiAgICAgICAgMHhiNGM1YjhhMjogICAgbXZuICAg
IHIxLCAjNAogICAgICAgIDB4YjRjNWI4YTY6ICAgIG1vdncgICByMCwgIzMwOTEyCiAgICAgICAg
MHhiNGM1YjhhYTogICAgbW92dCAgIHIwLCAjNDYyMDYKICAgICAgICAweGI0YzViOGFlOiAgICBz
dHIgICAgcjAsIFtyNywgIy0xMjhdCiAgICAgICAgMHhiNGM1YjhiMjogICAgc3RyICAgIHIxLCBb
cjcsICMtMTI0XQogICAgWzExODddIGdldF9mcm9tX3Njb3BlICAgIGxvYzExLCBsb2MxNSwgb3Bh
cXVlUG93KEBpZDEpLCAyMDQ5PFRocm93SWZOb3RGb3VuZHxHbG9iYWxWYXJ8Tm90SW5pdGlhbGl6
YXRpb24+LCAtMTI2MjQ5OTE3NiAgICBwcmVkaWN0aW5nIEZ1bmN0aW9uCiAgICAgICAgMHhiNGM1
YjhiNjogICAgbW92dyAgIHI2LCAjNTE4NjgKICAgICAgICAweGI0YzViOGJhOiAgICBtb3Z0ICAg
cjYsICM0NjI3MQogICAgICAgIDB4YjRjNWI4YmU6ICAgIGxkciAgICByMSwgW3I2XQogICAgICAg
IDB4YjRjNWI4YzA6ICAgIG1vdncgICByNiwgIzUxODY0CiAgICAgICAgMHhiNGM1YjhjNDogICAg
bW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI0YzViOGM4OiAgICBsZHIgICAgcjAsIFtyNl0K
ICAgICAgICAweGI0YzViOGNhOiAgICBzdHIgICAgcjAsIFtyNywgIy05Nl0KICAgICAgICAweGI0
YzViOGNlOiAgICBzdHIgICAgcjEsIFtyNywgIy05Ml0KICAgIFsxMTk1XSBtb3YgICAgICAgICAg
ICAgICBsb2MxNCwgbG9jNgogICAgICAgIDB4YjRjNWI4ZDI6ICAgIGxkciAgICByMCwgW3I3LCAj
LTU2XQogICAgICAgIDB4YjRjNWI4ZDY6ICAgIGxkciAgICByMSwgW3I3LCAjLTUyXQogICAgICAg
IDB4YjRjNWI4ZGE6ICAgIHN0ciAgICByMCwgW3I3LCAjLTEyMF0KICAgICAgICAweGI0YzViOGRl
OiAgICBzdHIgICAgcjEsIFtyNywgIy0xMTZdCiAgICBbMTE5OF0gbW92ICAgICAgICAgICAgICAg
bG9jMTMsIGxvYzkKICAgICAgICAweGI0YzViOGUyOiAgICBsZHIgICAgcjAsIFtyNywgIy04MF0K
ICAgICAgICAweGI0YzViOGU2OiAgICBsZHIgICAgcjEsIFtyNywgIy03Nl0KICAgICAgICAweGI0
YzViOGVhOiAgICBzdHIgICAgcjAsIFtyNywgIy0xMTJdCiAgICAgICAgMHhiNGM1YjhlZTogICAg
c3RyICAgIHIxLCBbcjcsICMtMTA4XQogICAgWzEyMDFdIGNhbGwgICAgICAgICAgICAgIGxvYzEw
LCBsb2MxMSwgMywgMjAgbGxpbnQoMHhiNDdmMGQ0MCwgZXhlYyAweGI0N2Q1YWMwKSBzdGF0dXMo
KEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwZDQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5v
bkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6IG9wYXF1ZVBvdyNDNmtoZTk6
WzB4YjQ3OTM3ZTAtPjB4YjQ3ZDVhYzAsIEJhc2VsaW5lRnVuY3Rpb25DYWxsLCA0NyAoTmV2ZXJJ
bmxpbmUpXSkpICAgIE5vbkFycmF5OyBwcmVkaWN0aW5nIE5vbmludGFzZG91YmxlCiAgICAgICAg
MHhiNGM1YjhmMjogICAgbW92ICAgIHNwLCByNwogICAgICAgIDB4YjRjNWI4ZjQ6ICAgIG12biAg
ICByMTIsICMxNTEKICAgICAgICAweGI0YzViOGY4OiAgICBtb3YgICAgc3AsIHNwCiAgICAgICAg
MHhiNGM1YjhmYTogICAgYWRkICAgIHNwLCByMTIKICAgICAgICAweGI0YzViOGZjOiAgICBtb3Yg
ICAgcjEyLCAjMwogICAgICAgIDB4YjRjNWI5MDA6ICAgIHN0ciAgICByMTIsIFtzcCwgIzE2XQog
ICAgICAgIDB4YjRjNWI5MDQ6ICAgIG1vdncgICByMTIsICM1MjQyOAogICAgICAgIDB4YjRjNWI5
MDg6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWI5MGM6ICAgIHN0ciAgICBy
MTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWI5MTA6ICAgIGxkciAgICByMCwgW3I3LCAjLTk2
XQogICAgICAgIDB4YjRjNWI5MTQ6ICAgIGxkciAgICByMSwgW3I3LCAjLTkyXQogICAgICAgIDB4
YjRjNWI5MTg6ICAgIHN0ciAgICByMCwgW3NwLCAjOF0KICAgICAgICAweGI0YzViOTFhOiAgICBz
dHIgICAgcjEsIFtzcCwgIzEyXQogICAgICAgIDB4YjRjNWI5MWM6ICAgIGNtbiAgICByMSwgIzUK
ICAgICAgICAweGI0YzViOTIwOiAgICBibmUgICAgMHhiNGM1ZGQ4YQogICAgICAgIDB4YjRjNWI5
MjQ6ICAgIG1vdncgICByMTIsICMwCiAgICAgICAgMHhiNGM1YjkyODogICAgbW92dCAgIHIxMiwg
IzAKICAgICAgICAweGI0YzViOTJjOiAgICBjbXAgICAgcjAsIHIxMgogICAgICAgIDB4YjRjNWI5
MzA6ICAgIGJuZSAgICAweGI0YzVkZDhhCiAgICAgICAgMHhiNGM1YjkzNDogICAgbW92dyAgIHIx
MiwgIzAKICAgICAgICAweGI0YzViOTM4OiAgICBtb3Z0ICAgcjEyLCAjMAogICAgICAgIDB4YjRj
NWI5M2M6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzViOTNlOiAgICBtb3YgICAgc3AsIHI3
CiAgICAgICAgMHhiNGM1Yjk0MDogICAgbXZuICAgIHIxMiwgIzE4MwogICAgICAgIDB4YjRjNWI5
NDQ6ICAgIG1vdiAgICBzcCwgc3AKICAgICAgICAweGI0YzViOTQ2OiAgICBhZGQgICAgc3AsIHIx
MgogICAgICAgIDB4YjRjNWI5NDg6ICAgIHN0ciAgICByMCwgW3I3LCAjLTg4XQogICAgICAgIDB4
YjRjNWI5NGM6ICAgIHN0ciAgICByMSwgW3I3LCAjLTg0XQogICAgWzEyMTBdIHJlc29sdmVfc2Nv
cGUgICAgIGxvYzE1LCBsb2MwLCBpc0lkZW50aWNhbChAaWQyKSwgPEdsb2JhbFZhcj4sIDIsIDB4
YjQ3ZTc4YzAKICAgICAgICAweGI0YzViOTUwOiAgICBtdm4gICAgcjEsICM0CiAgICAgICAgMHhi
NGM1Yjk1NDogICAgbW92dyAgIHIwLCAjMzA5MTIKICAgICAgICAweGI0YzViOTU4OiAgICBtb3Z0
ICAgcjAsICM0NjIwNgogICAgICAgIDB4YjRjNWI5NWM6ICAgIHN0ciAgICByMCwgW3I3LCAjLTEy
OF0KICAgICAgICAweGI0YzViOTYwOiAgICBzdHIgICAgcjEsIFtyNywgIy0xMjRdCiAgICBbMTIx
N10gZ2V0X2Zyb21fc2NvcGUgICAgbG9jMTEsIGxvYzE1LCBpc0lkZW50aWNhbChAaWQyKSwgMjA0
OTxUaHJvd0lmTm90Rm91bmR8R2xvYmFsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgLTEyNjI0OTkx
NjggICAgcHJlZGljdGluZyBGdW5jdGlvbgogICAgICAgIDB4YjRjNWI5NjQ6ICAgIG1vdncgICBy
NiwgIzUxODc2CiAgICAgICAgMHhiNGM1Yjk2ODogICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAg
ICAweGI0YzViOTZjOiAgICBsZHIgICAgcjEsIFtyNl0KICAgICAgICAweGI0YzViOTZlOiAgICBt
b3Z3ICAgcjYsICM1MTg3MgogICAgICAgIDB4YjRjNWI5NzI6ICAgIG1vdnQgICByNiwgIzQ2Mjcx
CiAgICAgICAgMHhiNGM1Yjk3NjogICAgbGRyICAgIHIwLCBbcjZdCiAgICAgICAgMHhiNGM1Yjk3
ODogICAgc3RyICAgIHIwLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1Yjk3YzogICAgc3RyICAg
IHIxLCBbcjcsICMtOTJdCiAgICBbMTIyNV0gbW92ICAgICAgICAgICAgICAgbG9jMTQsIGxvYzEw
CiAgICAgICAgMHhiNGM1Yjk4MDogICAgbGRyICAgIHIwLCBbcjcsICMtODhdCiAgICAgICAgMHhi
NGM1Yjk4NDogICAgbGRyICAgIHIxLCBbcjcsICMtODRdCiAgICAgICAgMHhiNGM1Yjk4ODogICAg
c3RyICAgIHIwLCBbcjcsICMtMTIwXQogICAgICAgIDB4YjRjNWI5OGM6ICAgIHN0ciAgICByMSwg
W3I3LCAjLTExNl0KICAgIFsxMjI4XSBtb3YgICAgICAgICAgICAgICBsb2MxMywgbG9jOAogICAg
ICAgIDB4YjRjNWI5OTA6ICAgIGxkciAgICByMCwgW3I3LCAjLTcyXQogICAgICAgIDB4YjRjNWI5
OTQ6ICAgIGxkciAgICByMSwgW3I3LCAjLTY4XQogICAgICAgIDB4YjRjNWI5OTg6ICAgIHN0ciAg
ICByMCwgW3I3LCAjLTExMl0KICAgICAgICAweGI0YzViOTljOiAgICBzdHIgICAgcjEsIFtyNywg
Iy0xMDhdCiAgICBbMTIzMV0gY2FsbCAgICAgICAgICAgICAgbG9jMTEsIGxvYzExLCAzLCAyMCBs
bGludCgweGI0N2YwZDIwLCBleGVjIDB4YjQ3ZDVhNDApIHN0YXR1cygoRnVuY3Rpb246IENlbGw6
IDB4YjQ3ZjBkMjAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4
YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogaXNJZGVudGljYWwjRWExclFEOlsweGI0NzkxODYwLT4w
eGI0NzkzNjkwLT4weGI0N2Q1YTQwLCBERkdGdW5jdGlvbkNhbGwsIDk1XSkpICAgIE5vbkFycmF5
OyBwcmVkaWN0aW5nIEJvb2wKICAgICAgICAweGI0YzViOWEwOiAgICBtb3YgICAgc3AsIHI3CiAg
ICAgICAgMHhiNGM1YjlhMjogICAgbXZuICAgIHIxMiwgIzE1MQogICAgICAgIDB4YjRjNWI5YTY6
ICAgIG1vdiAgICBzcCwgc3AKICAgICAgICAweGI0YzViOWE4OiAgICBhZGQgICAgc3AsIHIxMgog
ICAgICAgIDB4YjRjNWI5YWE6ICAgIG1vdiAgICByMTIsICMzCiAgICAgICAgMHhiNGM1YjlhZTog
ICAgc3RyICAgIHIxMiwgW3NwLCAjMTZdCiAgICAgICAgMHhiNGM1YjliMjogICAgbW92dyAgIHIx
MiwgIzUyNTQ4CiAgICAgICAgMHhiNGM1YjliNjogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAg
ICAgMHhiNGM1YjliYTogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1Yjli
ZTogICAgbGRyICAgIHIwLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1YjljMjogICAgbGRyICAg
IHIxLCBbcjcsICMtOTJdCiAgICAgICAgMHhiNGM1YjljNjogICAgc3RyICAgIHIwLCBbc3AsICM4
XQogICAgICAgIDB4YjRjNWI5Yzg6ICAgIHN0ciAgICByMSwgW3NwLCAjMTJdCiAgICAgICAgMHhi
NGM1YjljYTogICAgY21uICAgIHIxLCAjNQogICAgICAgIDB4YjRjNWI5Y2U6ICAgIGJuZSAgICAw
eGI0YzVkZGIyCiAgICAgICAgMHhiNGM1YjlkMjogICAgbW92dyAgIHIxMiwgIzAKICAgICAgICAw
eGI0YzViOWQ2OiAgICBtb3Z0ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNWI5ZGE6ICAgIGNtcCAg
ICByMCwgcjEyCiAgICAgICAgMHhiNGM1YjlkZTogICAgYm5lICAgIDB4YjRjNWRkYjIKICAgICAg
ICAweGI0YzViOWUyOiAgICBtb3Z3ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNWI5ZTY6ICAgIG1v
dnQgICByMTIsICMwCiAgICAgICAgMHhiNGM1YjllYTogICAgYmx4ICAgIHIxMgogICAgICAgIDB4
YjRjNWI5ZWM6ICAgIG1vdiAgICBzcCwgcjcKICAgICAgICAweGI0YzViOWVlOiAgICBtdm4gICAg
cjEyLCAjMTgzCiAgICAgICAgMHhiNGM1YjlmMjogICAgbW92ICAgIHNwLCBzcAogICAgICAgIDB4
YjRjNWI5ZjQ6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAgICAgMHhiNGM1YjlmNjogICAgc3RyICAg
IHIwLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1YjlmYTogICAgc3RyICAgIHIxLCBbcjcsICMt
OTJdCiAgICBbMTI0MF0ganRydWUgICAgICAgICAgICAgbG9jMTEsIDQ4KC0+MTI4OCkKICAgICAg
ICAweGI0YzViOWZlOiAgICBsZHIgICAgcjAsIFtyNywgIy05Nl0KICAgICAgICAweGI0YzViYTAy
OiAgICBsZHIgICAgcjEsIFtyNywgIy05Ml0KICAgICAgICAweGI0YzViYTA2OiAgICBjbW4gICAg
cjEsICMyCiAgICAgICAgMHhiNGM1YmEwYTogICAgYmxvICAgIDB4YjRjNWRkZGEKICAgICAgICAw
eGI0YzViYTBlOiAgICB0c3QgICAgcjAsIHIwCiAgICAgICAgMHhiNGM1YmExMDogICAgYm5lICAg
IDB4YjRjNWJiODYKICAgIFsxMjQzXSBtb3YgICAgICAgICAgICAgICBsb2MxMSwgU3RyaW5nIChh
dG9taWMpIChpZGVudGlmaWVyKTogRmFpbGVkIG9wYXF1ZVBvdyB3aXRoIGJhc2UgPSAoY29uc3Qz
MykKICAgICAgICAweGI0YzViYTE0OiAgICBtb3Z3ICAgcjEyLCAjMzQzMDQKICAgICAgICAweGI0
YzViYTE4OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDQKICAgICAgICAweGI0YzViYTFjOiAgICBzdHIg
ICAgcjEyLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1YmEyMDogICAgbXZuICAgIHIxMiwgIzQK
ICAgICAgICAweGI0YzViYTI0OiAgICBzdHIgICAgcjEyLCBbcjcsICMtOTJdCiAgICBbMTI0Nl0g
bW92ICAgICAgICAgICAgICAgbG9jMTIsIGxvYzYKICAgICAgICAweGI0YzViYTI4OiAgICBsZHIg
ICAgcjAsIFtyNywgIy01Nl0KICAgICAgICAweGI0YzViYTJjOiAgICBsZHIgICAgcjEsIFtyNywg
Iy01Ml0KICAgICAgICAweGI0YzViYTMwOiAgICBzdHIgICAgcjAsIFtyNywgIy0xMDRdCiAgICAg
ICAgMHhiNGM1YmEzNDogICAgc3RyICAgIHIxLCBbcjcsICMtMTAwXQogICAgWzEyNDldIHRvX3By
aW1pdGl2ZSAgICAgIGxvYzEyLCBsb2MxMgogICAgICAgIDB4YjRjNWJhMzg6ICAgIGxkciAgICBy
MCwgW3I3LCAjLTEwNF0KICAgICAgICAweGI0YzViYTNjOiAgICBsZHIgICAgcjEsIFtyNywgIy0x
MDBdCiAgICAgICAgMHhiNGM1YmE0MDogICAgY21uICAgIHIxLCAjNQogICAgICAgIDB4YjRjNWJh
NDQ6ICAgIGJuZSAgICAweGI0YzViYTRlCiAgICAgICAgMHhiNGM1YmE0NjogICAgbGRyYiAgIHI2
LCBbcjAsICM1XQogICAgICAgIDB4YjRjNWJhNDg6ICAgIGNtcCAgICByMiwgIzIwCiAgICAgICAg
MHhiNGM1YmE0YTogICAgYmhzICAgIDB4YjRjNWRlMzgKICAgIFsxMjUyXSBtb3YgICAgICAgICAg
ICAgICBsb2MxMywgU3RyaW5nIChhdG9taWMpIChpZGVudGlmaWVyKTogIGV4cG9uZW50ID0gKGNv
bnN0MzQpCiAgICAgICAgMHhiNGM1YmE0ZTogICAgbW92dyAgIHIxMiwgIzM0MjcyCiAgICAgICAg
MHhiNGM1YmE1MjogICAgbW92dCAgIHIxMiwgIzQ2MjA0CiAgICAgICAgMHhiNGM1YmE1NjogICAg
c3RyICAgIHIxMiwgW3I3LCAjLTExMl0KICAgICAgICAweGI0YzViYTVhOiAgICBtdm4gICAgcjEy
LCAjNAogICAgICAgIDB4YjRjNWJhNWU6ICAgIHN0ciAgICByMTIsIFtyNywgIy0xMDhdCiAgICBb
MTI1NV0gbW92ICAgICAgICAgICAgICAgbG9jMTQsIGxvYzkKICAgICAgICAweGI0YzViYTYyOiAg
ICBsZHIgICAgcjAsIFtyNywgIy04MF0KICAgICAgICAweGI0YzViYTY2OiAgICBsZHIgICAgcjEs
IFtyNywgIy03Nl0KICAgICAgICAweGI0YzViYTZhOiAgICBzdHIgICAgcjAsIFtyNywgIy0xMjBd
CiAgICAgICAgMHhiNGM1YmE2ZTogICAgc3RyICAgIHIxLCBbcjcsICMtMTE2XQogICAgWzEyNThd
IHRvX3ByaW1pdGl2ZSAgICAgIGxvYzE0LCBsb2MxNAogICAgICAgIDB4YjRjNWJhNzI6ICAgIGxk
ciAgICByMCwgW3I3LCAjLTEyMF0KICAgICAgICAweGI0YzViYTc2OiAgICBsZHIgICAgcjEsIFty
NywgIy0xMTZdCiAgICAgICAgMHhiNGM1YmE3YTogICAgY21uICAgIHIxLCAjNQogICAgICAgIDB4
YjRjNWJhN2U6ICAgIGJuZSAgICAweGI0YzViYTg4CiAgICAgICAgMHhiNGM1YmE4MDogICAgbGRy
YiAgIHI2LCBbcjAsICM1XQogICAgICAgIDB4YjRjNWJhODI6ICAgIGNtcCAgICByMiwgIzIwCiAg
ICAgICAgMHhiNGM1YmE4NDogICAgYmhzICAgIDB4YjRjNWRlNzYKICAgIFsxMjYxXSBtb3YgICAg
ICAgICAgICAgICBsb2MxNSwgU3RyaW5nIChhdG9taWMpIChpZGVudGlmaWVyKTogIGV4cGVjdGVk
ICgoY29uc3QzNSkKICAgICAgICAweGI0YzViYTg4OiAgICBtb3Z3ICAgcjEyLCAjMzQyNDAKICAg
ICAgICAweGI0YzViYThjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDQKICAgICAgICAweGI0YzViYTkw
OiAgICBzdHIgICAgcjEyLCBbcjcsICMtMTI4XQogICAgICAgIDB4YjRjNWJhOTQ6ICAgIG12biAg
ICByMTIsICM0CiAgICAgICAgMHhiNGM1YmE5ODogICAgc3RyICAgIHIxMiwgW3I3LCAjLTEyNF0K
ICAgIFsxMjY0XSBtb3YgICAgICAgICAgICAgICBsb2MxNiwgbG9jOAogICAgICAgIDB4YjRjNWJh
OWM6ICAgIGxkciAgICByMCwgW3I3LCAjLTcyXQogICAgICAgIDB4YjRjNWJhYTA6ICAgIGxkciAg
ICByMSwgW3I3LCAjLTY4XQogICAgICAgIDB4YjRjNWJhYTQ6ICAgIHN0ciAgICByMCwgW3I3LCAj
LTEzNl0KICAgICAgICAweGI0YzViYWE4OiAgICBzdHIgICAgcjEsIFtyNywgIy0xMzJdCiAgICBb
MTI2N10gdG9fcHJpbWl0aXZlICAgICAgbG9jMTYsIGxvYzE2CiAgICAgICAgMHhiNGM1YmFhYzog
ICAgbGRyICAgIHIwLCBbcjcsICMtMTM2XQogICAgICAgIDB4YjRjNWJhYjA6ICAgIGxkciAgICBy
MSwgW3I3LCAjLTEzMl0KICAgICAgICAweGI0YzViYWI0OiAgICBjbW4gICAgcjEsICM1CiAgICAg
ICAgMHhiNGM1YmFiODogICAgYm5lICAgIDB4YjRjNWJhYzIKICAgICAgICAweGI0YzViYWJhOiAg
ICBsZHJiICAgcjYsIFtyMCwgIzVdCiAgICAgICAgMHhiNGM1YmFiYzogICAgY21wICAgIHIyLCAj
MjAKICAgICAgICAweGI0YzViYWJlOiAgICBiaHMgICAgMHhiNGM1ZGViNAogICAgWzEyNzBdIG1v
diAgICAgICAgICAgICAgIGxvYzE3LCBTdHJpbmcgKGF0b21pYykgKGlkZW50aWZpZXIpOiApIGdv
dCAoKGNvbnN0MzYpCiAgICAgICAgMHhiNGM1YmFjMjogICAgbW92dyAgIHIxMiwgIzM0MjA4CiAg
ICAgICAgMHhiNGM1YmFjNjogICAgbW92dCAgIHIxMiwgIzQ2MjA0CiAgICAgICAgMHhiNGM1YmFj
YTogICAgc3RyICAgIHIxMiwgW3I3LCAjLTE0NF0KICAgICAgICAweGI0YzViYWNlOiAgICBtdm4g
ICAgcjEyLCAjNAogICAgICAgIDB4YjRjNWJhZDI6ICAgIHN0ciAgICByMTIsIFtyNywgIy0xNDBd
CiAgICBbMTI3M10gbW92ICAgICAgICAgICAgICAgbG9jMTgsIGxvYzEwCiAgICAgICAgMHhiNGM1
YmFkNjogICAgbGRyICAgIHIwLCBbcjcsICMtODhdCiAgICAgICAgMHhiNGM1YmFkYTogICAgbGRy
ICAgIHIxLCBbcjcsICMtODRdCiAgICAgICAgMHhiNGM1YmFkZTogICAgc3RyICAgIHIwLCBbcjcs
ICMtMTUyXQogICAgICAgIDB4YjRjNWJhZTI6ICAgIHN0ciAgICByMSwgW3I3LCAjLTE0OF0KICAg
IFsxMjc2XSB0b19wcmltaXRpdmUgICAgICBsb2MxOCwgbG9jMTgKICAgICAgICAweGI0YzViYWU2
OiAgICBsZHIgICAgcjAsIFtyNywgIy0xNTJdCiAgICAgICAgMHhiNGM1YmFlYTogICAgbGRyICAg
IHIxLCBbcjcsICMtMTQ4XQogICAgICAgIDB4YjRjNWJhZWU6ICAgIGNtbiAgICByMSwgIzUKICAg
ICAgICAweGI0YzViYWYyOiAgICBibmUgICAgMHhiNGM1YmFmYwogICAgICAgIDB4YjRjNWJhZjQ6
ICAgIGxkcmIgICByNiwgW3IwLCAjNV0KICAgICAgICAweGI0YzViYWY2OiAgICBjbXAgICAgcjIs
ICMyMAogICAgICAgIDB4YjRjNWJhZjg6ICAgIGJocyAgICAweGI0YzVkZWYyCiAgICBbMTI3OV0g
bW92ICAgICAgICAgICAgICAgbG9jMTksIFN0cmluZyAoYXRvbWljKSAoaWRlbnRpZmllcik6ICko
Y29uc3QzNykKICAgICAgICAweGI0YzViYWZjOiAgICBtb3Z3ICAgcjEyLCAjNjQxNjAKICAgICAg
ICAweGI0YzViYjAwOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDYKICAgICAgICAweGI0YzViYjA0OiAg
ICBzdHIgICAgcjEyLCBbcjcsICMtMTYwXQogICAgICAgIDB4YjRjNWJiMDg6ICAgIG12biAgICBy
MTIsICM0CiAgICAgICAgMHhiNGM1YmIwYzogICAgc3RyICAgIHIxMiwgW3I3LCAjLTE1Nl0KICAg
IFsxMjgyXSBzdHJjYXQgICAgICAgICAgICBsb2MxMSwgbG9jMTEsIDkKICAgICAgICAweGI0YzVi
YjEwOiAgICBtb3Z3ICAgcjEyLCAjNTI3NTYKICAgICAgICAweGI0YzViYjE0OiAgICBtb3Z0ICAg
cjEyLCAjNDU4MjIKICAgICAgICAweGI0YzViYjE4OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0K
ICAgICAgICAweGI0YzViYjFjOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWJi
MjA6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1YmIyNDogICAgc3RyICAgIHI3
LCBbcjZdCiAgICAgICAgMHhiNGM1YmIyNjogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRj
NWJiMjg6ICAgIG1vdncgICByMSwgIzUyNzUyCiAgICAgICAgMHhiNGM1YmIyYzogICAgbW92dCAg
IHIxLCAjNDU4MjIKICAgICAgICAweGI0YzViYjMwOiAgICBtb3Z3ICAgcjEyLCAjMTg5MjUKICAg
ICAgICAweGI0YzViYjM0OiAgICBtb3Z0ICAgcjEyLCAjNDY3OTMKICAgICAgICAweGI0YzViYjM4
OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1YmIzYTogICAgbW92dyAgIHI2LCAjNDYzNDgK
ICAgICAgICAweGI0YzViYjNlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWJi
NDI6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWJiNDQ6ICAgIGNtcCAgICByMiwg
IzAKICAgICAgICAweGI0YzViYjQ2OiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgWzEyODZdIHRo
cm93ICAgICAgICAgICAgIGxvYzExCiAgICAgICAgMHhiNGM1YmI0YTogICAgbGRyICAgIHIwLCBb
cjcsICMtOTZdCiAgICAgICAgMHhiNGM1YmI0ZTogICAgbGRyICAgIHIxLCBbcjcsICMtOTJdCiAg
ICAgICAgMHhiNGM1YmI1MjogICAgbW92ICAgIHIyLCByMAogICAgICAgIDB4YjRjNWJiNTQ6ICAg
IG1vdiAgICByMywgcjEKICAgICAgICAweGI0YzViYjU2OiAgICBtb3ZzICAgcjEsICMwCiAgICAg
ICAgMHhiNGM1YmI1ODogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWJiNWE6ICAgIG1v
dncgICByMTIsICM1Mjc3MgogICAgICAgIDB4YjRjNWJiNWU6ICAgIG1vdnQgICByMTIsICM0NTgy
MgogICAgICAgIDB4YjRjNWJiNjI6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4
YjRjNWJiNjY6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1YmI2YTogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzViYjZlOiAgICBzdHIgICAgcjcsIFtyNl0KICAg
ICAgICAweGI0YzViYjcwOiAgICBtb3Z3ICAgcjEyLCAjNjI1ODkKICAgICAgICAweGI0YzViYjc0
OiAgICBtb3Z0ICAgcjEyLCAjNDY3NzYKICAgICAgICAweGI0YzViYjc4OiAgICBibHggICAgcjEy
CiAgICAgICAgMHhiNGM1YmI3YTogICAgbW92dyAgIHI2LCAjNDYxODgKICAgICAgICAweGI0YzVi
YjdlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWJiODI6ICAgIGxkciAgICBy
MSwgW3I2XQogICAgICAgIDB4YjRjNWJiODQ6ICAgIGJ4ICAgICByMQogICAgWzEyODhdIHJlc29s
dmVfc2NvcGUgICAgIGxvYzExLCBsb2MwLCBjb25zdGFudEJhc2VGdW5jdGlvbnMoQGlkMTUpLCA8
R2xvYmFsTGV4aWNhbFZhcj4sIDEsIDB4YjQ3ZGZmYzAKICAgICAgICAweGI0YzViYjg2OiAgICBt
dm4gICAgcjEsICM0CiAgICAgICAgMHhiNGM1YmI4YTogICAgbW92dyAgIHIwLCAjNjU0NzIKICAg
ICAgICAweGI0YzViYjhlOiAgICBtb3Z0ICAgcjAsICM0NjIwNQogICAgICAgIDB4YjRjNWJiOTI6
ICAgIHN0ciAgICByMCwgW3I3LCAjLTk2XQogICAgICAgIDB4YjRjNWJiOTY6ICAgIHN0ciAgICBy
MSwgW3I3LCAjLTkyXQogICAgWzEyOTVdIGdldF9mcm9tX3Njb3BlICAgIGxvYzEyLCBsb2MxMSwg
Y29uc3RhbnRCYXNlRnVuY3Rpb25zKEBpZDE1KSwgMjA1MDxUaHJvd0lmTm90Rm91bmR8R2xvYmFs
TGV4aWNhbFZhcnxOb3RJbml0aWFsaXphdGlvbj4sIC0xMjYyNTAxMzQ0ICAgIHByZWRpY3Rpbmcg
QXJyYXkKICAgICAgICAweGI0YzViYjlhOiAgICBtb3Z3ICAgcjYsICM0OTcwMAogICAgICAgIDB4
YjRjNWJiOWU6ICAgIG1vdnQgICByNiwgIzQ2MjcxCiAgICAgICAgMHhiNGM1YmJhMjogICAgbGRy
ICAgIHIxLCBbcjZdCiAgICAgICAgMHhiNGM1YmJhNDogICAgbW92dyAgIHI2LCAjNDk2OTYKICAg
ICAgICAweGI0YzViYmE4OiAgICBtb3Z0ICAgcjYsICM0NjI3MQogICAgICAgIDB4YjRjNWJiYWM6
ICAgIGxkciAgICByMCwgW3I2XQogICAgICAgIDB4YjRjNWJiYWU6ICAgIGNtbiAgICByMSwgIzYK
ICAgICAgICAweGI0YzViYmIyOiAgICBiZXEgICAgMHhiNGM1ZGYzMAogICAgICAgIDB4YjRjNWJi
YjY6ICAgIHN0ciAgICByMCwgW3I3LCAjLTEwNF0KICAgICAgICAweGI0YzViYmJhOiAgICBzdHIg
ICAgcjEsIFtyNywgIy0xMDBdCiAgICBbMTMwM10gZ2V0X2J5X3ZhbCAgICAgICAgbG9jMTMsIGxv
YzEyLCBsb2M1ICAgIEFycmF5V2l0aENvbnRpZ3VvdXMsIE9yaWdpbmFsOyBwcmVkaWN0aW5nIEZ1
bmN0aW9uCiAgICAgICAgMHhiNGM1YmJiZTogICAgbGRyICAgIHIyLCBbcjcsICMtNDhdCiAgICAg
ICAgMHhiNGM1YmJjMjogICAgbGRyICAgIHIzLCBbcjcsICMtNDRdCiAgICAgICAgMHhiNGM1YmJj
NjogICAgbGRyICAgIHIwLCBbcjcsICMtMTA0XQogICAgICAgIDB4YjRjNWJiY2E6ICAgIGxkciAg
ICByMSwgW3I3LCAjLTEwMF0KICAgICAgICAweGI0YzViYmNlOiAgICBjbW4gICAgcjEsICM1CiAg
ICAgICAgMHhiNGM1YmJkMjogICAgYm5lICAgIDB4YjRjNWRmNzYKICAgICAgICAweGI0YzViYmQ2
OiAgICBjbXAgICAgcjMsICM0Mjk0OTY3Mjk1CiAgICAgICAgMHhiNGM1YmJkYTogICAgaXR0dCAg
IG5lCiAgICAgICAgMHhiNGM1YmJkYzogICAgbW92d25lIHIxMiwgIzU3MjA3CiAgICAgICAgMHhi
NGM1YmJlMDogICAgbW92dG5lIHIxMiwgIzQ2Mjc3CiAgICAgICAgMHhiNGM1YmJlNDogICAgYnhu
ZSAgIHIxMgogICAgICAgIDB4YjRjNWJiZTY6ICAgIGxkcmIgICByMSwgW3IwLCAjNF0KICAgICAg
ICAweGI0YzViYmU4OiAgICBhbmQgICAgcjEsIHIxLCAjMTQKICAgICAgICAweGI0YzViYmVjOiAg
ICBjbXAgICAgcjEsICM4CiAgICAgICAgMHhiNGM1YmJlZTogICAgaXR0dCAgIG5lCiAgICAgICAg
MHhiNGM1YmJmMDogICAgbW92d25lIHIxMiwgIzU3MjA5CiAgICAgICAgMHhiNGM1YmJmNDogICAg
bW92dG5lIHIxMiwgIzQ2Mjc3CiAgICAgICAgMHhiNGM1YmJmODogICAgYnhuZSAgIHIxMgogICAg
ICAgIDB4YjRjNWJiZmE6ICAgIGxkciAgICByMywgW3IwLCAjOF0KICAgICAgICAweGI0YzViYmZj
OiAgICBsZHIgICAgcjEyLCBbcjMsICMtOF0KICAgICAgICAweGI0YzViYzAwOiAgICBjbXAgICAg
cjIsIHIxMgogICAgICAgIDB4YjRjNWJjMDQ6ICAgIGJocyAgICAweGI0YzVkZmEyCiAgICAgICAg
MHhiNGM1YmMwODogICAgYWRkcyAgIHI2LCByMywgIzQKICAgICAgICAweGI0YzViYzBhOiAgICBs
ZHIgICAgcjEsIFtyNiwgcjIsICMzXQogICAgICAgIDB4YjRjNWJjMGU6ICAgIGxkciAgICByMCwg
W3IzLCByMiwgIzNdCiAgICAgICAgMHhiNGM1YmMxMjogICAgY21uICAgIHIxLCAjNgogICAgICAg
IDB4YjRjNWJjMTY6ICAgIGJlcSAgICAweGI0YzVkZmEyCiAgICAgICAgMHhiNGM1YmMxYTogICAg
c3RyICAgIHIwLCBbcjcsICMtMTEyXQogICAgICAgIDB4YjRjNWJjMWU6ICAgIHN0ciAgICByMSwg
W3I3LCAjLTEwOF0KICAgIFsxMzA5XSBtb3YgICAgICAgICAgICAgICBsb2MxNSwgbG9jMTIKICAg
ICAgICAweGI0YzViYzIyOiAgICBsZHIgICAgcjAsIFtyNywgIy0xMDRdCiAgICAgICAgMHhiNGM1
YmMyNjogICAgbGRyICAgIHIxLCBbcjcsICMtMTAwXQogICAgICAgIDB4YjRjNWJjMmE6ICAgIHN0
ciAgICByMCwgW3I3LCAjLTEyOF0KICAgICAgICAweGI0YzViYzJlOiAgICBzdHIgICAgcjEsIFty
NywgIy0xMjRdCiAgICBbMTMxMl0gbW92ICAgICAgICAgICAgICAgbG9jMTQsIGxvYzkKICAgICAg
ICAweGI0YzViYzMyOiAgICBsZHIgICAgcjAsIFtyNywgIy04MF0KICAgICAgICAweGI0YzViYzM2
OiAgICBsZHIgICAgcjEsIFtyNywgIy03Nl0KICAgICAgICAweGI0YzViYzNhOiAgICBzdHIgICAg
cjAsIFtyNywgIy0xMjBdCiAgICAgICAgMHhiNGM1YmMzZTogICAgc3RyICAgIHIxLCBbcjcsICMt
MTE2XQogICAgWzEzMTVdIGNhbGwgICAgICAgICAgICAgIGxvYzEwLCBsb2MxMywgMiwgMjAgbGxp
bnQoMHhiNDdmMDQ0MCwgZXhlYyAweGI0N2Q1NzQwKSBzdGF0dXMoKEZ1bmN0aW9uOiBDZWxsOiAw
eGI0N2YwNDQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0
N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBclpuT2w6WzB4YjQ3OTE3MTAtPjB4YjQ3ZDU3NDAsIExM
SW50RnVuY3Rpb25DYWxsLCA0N10pKSAgICBBcnJheVdpdGhDb250aWd1b3VzLCBPcmlnaW5hbDsg
cHJlZGljdGluZyBOb25pbnRhc2RvdWJsZQogICAgICAgIDB4YjRjNWJjNDI6ICAgIG1vdiAgICBz
cCwgcjcKICAgICAgICAweGI0YzViYzQ0OiAgICBtdm4gICAgcjEyLCAjMTUxCiAgICAgICAgMHhi
NGM1YmM0ODogICAgbW92ICAgIHNwLCBzcAogICAgICAgIDB4YjRjNWJjNGE6ICAgIGFkZCAgICBz
cCwgcjEyCiAgICAgICAgMHhiNGM1YmM0YzogICAgbW92ICAgIHIxMiwgIzIKICAgICAgICAweGI0
YzViYzUwOiAgICBzdHIgICAgcjEyLCBbc3AsICMxNl0KICAgICAgICAweGI0YzViYzU0OiAgICBt
b3Z3ICAgcjEyLCAjNTI4ODQKICAgICAgICAweGI0YzViYzU4OiAgICBtb3Z0ICAgcjEyLCAjNDU4
MjIKICAgICAgICAweGI0YzViYzVjOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAw
eGI0YzViYzYwOiAgICBsZHIgICAgcjAsIFtyNywgIy0xMTJdCiAgICAgICAgMHhiNGM1YmM2NDog
ICAgbGRyICAgIHIxLCBbcjcsICMtMTA4XQogICAgICAgIDB4YjRjNWJjNjg6ICAgIHN0ciAgICBy
MCwgW3NwLCAjOF0KICAgICAgICAweGI0YzViYzZhOiAgICBzdHIgICAgcjEsIFtzcCwgIzEyXQog
ICAgICAgIDB4YjRjNWJjNmM6ICAgIGNtbiAgICByMSwgIzUKICAgICAgICAweGI0YzViYzcwOiAg
ICBibmUgICAgMHhiNGM1ZTAwNgogICAgICAgIDB4YjRjNWJjNzQ6ICAgIG1vdncgICByMTIsICMw
CiAgICAgICAgMHhiNGM1YmM3ODogICAgbW92dCAgIHIxMiwgIzAKICAgICAgICAweGI0YzViYzdj
OiAgICBjbXAgICAgcjAsIHIxMgogICAgICAgIDB4YjRjNWJjODA6ICAgIGJuZSAgICAweGI0YzVl
MDA2CiAgICAgICAgMHhiNGM1YmM4NDogICAgbW92dyAgIHIxMiwgIzAKICAgICAgICAweGI0YzVi
Yzg4OiAgICBtb3Z0ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNWJjOGM6ICAgIGJseCAgICByMTIK
ICAgICAgICAweGI0YzViYzhlOiAgICBtb3YgICAgc3AsIHI3CiAgICAgICAgMHhiNGM1YmM5MDog
ICAgbXZuICAgIHIxMiwgIzE4MwogICAgICAgIDB4YjRjNWJjOTQ6ICAgIG1vdiAgICBzcCwgc3AK
ICAgICAgICAweGI0YzViYzk2OiAgICBhZGQgICAgc3AsIHIxMgogICAgICAgIDB4YjRjNWJjOTg6
ICAgIHN0ciAgICByMCwgW3I3LCAjLTg4XQogICAgICAgIDB4YjRjNWJjOWM6ICAgIHN0ciAgICBy
MSwgW3I3LCAjLTg0XQogICAgWzEzMjRdIG1vdiAgICAgICAgICAgICAgIGxvYzMsIGxvYzEwCiAg
ICAgICAgMHhiNGM1YmNhMDogICAgbGRyICAgIHIwLCBbcjcsICMtODhdCiAgICAgICAgMHhiNGM1
YmNhNDogICAgbGRyICAgIHIxLCBbcjcsICMtODRdCiAgICAgICAgMHhiNGM1YmNhODogICAgc3Ry
ICAgIHIwLCBbcjcsICMtMzJdCiAgICAgICAgMHhiNGM1YmNhYzogICAgc3RyICAgIHIxLCBbcjcs
ICMtMjhdCiAgICBbMTMyN10gcmVzb2x2ZV9zY29wZSAgICAgbG9jMTUsIGxvYzAsIGlzSWRlbnRp
Y2FsKEBpZDIpLCA8R2xvYmFsVmFyPiwgMiwgMHhiNDdlNzhjMAogICAgICAgIDB4YjRjNWJjYjA6
ICAgIG12biAgICByMSwgIzQKICAgICAgICAweGI0YzViY2I0OiAgICBtb3Z3ICAgcjAsICMzMDkx
MgogICAgICAgIDB4YjRjNWJjYjg6ICAgIG1vdnQgICByMCwgIzQ2MjA2CiAgICAgICAgMHhiNGM1
YmNiYzogICAgc3RyICAgIHIwLCBbcjcsICMtMTI4XQogICAgICAgIDB4YjRjNWJjYzA6ICAgIHN0
ciAgICByMSwgW3I3LCAjLTEyNF0KICAgIFsxMzM0XSBnZXRfZnJvbV9zY29wZSAgICBsb2MxMSwg
bG9jMTUsIGlzSWRlbnRpY2FsKEBpZDIpLCAyMDQ5PFRocm93SWZOb3RGb3VuZHxHbG9iYWxWYXJ8
Tm90SW5pdGlhbGl6YXRpb24+LCAtMTI2MjQ5OTE2OCAgICBwcmVkaWN0aW5nIEZ1bmN0aW9uCiAg
ICAgICAgMHhiNGM1YmNjNDogICAgbW92dyAgIHI2LCAjNTE4NzYKICAgICAgICAweGI0YzViY2M4
OiAgICBtb3Z0ICAgcjYsICM0NjI3MQogICAgICAgIDB4YjRjNWJjY2M6ICAgIGxkciAgICByMSwg
W3I2XQogICAgICAgIDB4YjRjNWJjY2U6ICAgIG1vdncgICByNiwgIzUxODcyCiAgICAgICAgMHhi
NGM1YmNkMjogICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI0YzViY2Q2OiAgICBsZHIg
ICAgcjAsIFtyNl0KICAgICAgICAweGI0YzViY2Q4OiAgICBzdHIgICAgcjAsIFtyNywgIy05Nl0K
ICAgICAgICAweGI0YzViY2RjOiAgICBzdHIgICAgcjEsIFtyNywgIy05Ml0KICAgIFsxMzQyXSBt
b3YgICAgICAgICAgICAgICBsb2MxNCwgbG9jMTAKICAgICAgICAweGI0YzViY2UwOiAgICBsZHIg
ICAgcjAsIFtyNywgIy04OF0KICAgICAgICAweGI0YzViY2U0OiAgICBsZHIgICAgcjEsIFtyNywg
Iy04NF0KICAgICAgICAweGI0YzViY2U4OiAgICBzdHIgICAgcjAsIFtyNywgIy0xMjBdCiAgICAg
ICAgMHhiNGM1YmNlYzogICAgc3RyICAgIHIxLCBbcjcsICMtMTE2XQogICAgWzEzNDVdIG1vdiAg
ICAgICAgICAgICAgIGxvYzEzLCBsb2M4CiAgICAgICAgMHhiNGM1YmNmMDogICAgbGRyICAgIHIw
LCBbcjcsICMtNzJdCiAgICAgICAgMHhiNGM1YmNmNDogICAgbGRyICAgIHIxLCBbcjcsICMtNjhd
CiAgICAgICAgMHhiNGM1YmNmODogICAgc3RyICAgIHIwLCBbcjcsICMtMTEyXQogICAgICAgIDB4
YjRjNWJjZmM6ICAgIHN0ciAgICByMSwgW3I3LCAjLTEwOF0KICAgIFsxMzQ4XSBjYWxsICAgICAg
ICAgICAgICBsb2MxMSwgbG9jMTEsIDMsIDIwIGxsaW50KDB4YjQ3ZjBkMjAsIGV4ZWMgMHhiNDdk
NWE0MCkgc3RhdHVzKChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMGQyMCAoMHhiNDdmNzA5MDpbRnVu
Y3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiBpc0lk
ZW50aWNhbCNFYTFyUUQ6WzB4YjQ3OTE4NjAtPjB4YjQ3OTM2OTAtPjB4YjQ3ZDVhNDAsIERGR0Z1
bmN0aW9uQ2FsbCwgOTVdKSkgICAgTm9uQXJyYXk7IHByZWRpY3RpbmcgQm9vbAogICAgICAgIDB4
YjRjNWJkMDA6ICAgIG1vdiAgICBzcCwgcjcKICAgICAgICAweGI0YzViZDAyOiAgICBtdm4gICAg
cjEyLCAjMTUxCiAgICAgICAgMHhiNGM1YmQwNjogICAgbW92ICAgIHNwLCBzcAogICAgICAgIDB4
YjRjNWJkMDg6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAgICAgMHhiNGM1YmQwYTogICAgbW92ICAg
IHIxMiwgIzMKICAgICAgICAweGI0YzViZDBlOiAgICBzdHIgICAgcjEyLCBbc3AsICMxNl0KICAg
ICAgICAweGI0YzViZDEyOiAgICBtb3Z3ICAgcjEyLCAjNTMwMTYKICAgICAgICAweGI0YzViZDE2
OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzViZDFhOiAgICBzdHIgICAgcjEy
LCBbcjcsICMyOF0KICAgICAgICAweGI0YzViZDFlOiAgICBsZHIgICAgcjAsIFtyNywgIy05Nl0K
ICAgICAgICAweGI0YzViZDIyOiAgICBsZHIgICAgcjEsIFtyNywgIy05Ml0KICAgICAgICAweGI0
YzViZDI2OiAgICBzdHIgICAgcjAsIFtzcCwgIzhdCiAgICAgICAgMHhiNGM1YmQyODogICAgc3Ry
ICAgIHIxLCBbc3AsICMxMl0KICAgICAgICAweGI0YzViZDJhOiAgICBjbW4gICAgcjEsICM1CiAg
ICAgICAgMHhiNGM1YmQyZTogICAgYm5lICAgIDB4YjRjNWUwMmUKICAgICAgICAweGI0YzViZDMy
OiAgICBtb3Z3ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNWJkMzY6ICAgIG1vdnQgICByMTIsICMw
CiAgICAgICAgMHhiNGM1YmQzYTogICAgY21wICAgIHIwLCByMTIKICAgICAgICAweGI0YzViZDNl
OiAgICBibmUgICAgMHhiNGM1ZTAyZQogICAgICAgIDB4YjRjNWJkNDI6ICAgIG1vdncgICByMTIs
ICMwCiAgICAgICAgMHhiNGM1YmQ0NjogICAgbW92dCAgIHIxMiwgIzAKICAgICAgICAweGI0YzVi
ZDRhOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1YmQ0YzogICAgbW92ICAgIHNwLCByNwog
ICAgICAgIDB4YjRjNWJkNGU6ICAgIG12biAgICByMTIsICMxODMKICAgICAgICAweGI0YzViZDUy
OiAgICBtb3YgICAgc3AsIHNwCiAgICAgICAgMHhiNGM1YmQ1NDogICAgYWRkICAgIHNwLCByMTIK
ICAgICAgICAweGI0YzViZDU2OiAgICBzdHIgICAgcjAsIFtyNywgIy05Nl0KICAgICAgICAweGI0
YzViZDVhOiAgICBzdHIgICAgcjEsIFtyNywgIy05Ml0KICAgIFsxMzU3XSBqdHJ1ZSAgICAgICAg
ICAgICBsb2MxMSwgMjcoLT4xMzg0KQogICAgICAgIDB4YjRjNWJkNWU6ICAgIGxkciAgICByMCwg
W3I3LCAjLTk2XQogICAgICAgIDB4YjRjNWJkNjI6ICAgIGxkciAgICByMSwgW3I3LCAjLTkyXQog
ICAgICAgIDB4YjRjNWJkNjY6ICAgIGNtbiAgICByMSwgIzIKICAgICAgICAweGI0YzViZDZhOiAg
ICBibG8gICAgMHhiNGM1ZTA1NgogICAgICAgIDB4YjRjNWJkNmU6ICAgIHRzdCAgICByMCwgcjAK
ICAgICAgICAweGI0YzViZDcwOiAgICBibmUgICAgMHhiNGM1YmU1ZQogICAgWzEzNjBdIG1vdiAg
ICAgICAgICAgICAgIGxvYzExLCBTdHJpbmcgKGF0b21pYykgKGlkZW50aWZpZXIpOiBGYWlsZWQg
Y29uc3RhbnRCYXNlRnVuY3Rpb25zIHdpdGggYmFzZSA9IChjb25zdDM4KQogICAgICAgIDB4YjRj
NWJkNzQ6ICAgIG1vdncgICByMTIsICMzNDE3NgogICAgICAgIDB4YjRjNWJkNzg6ICAgIG1vdnQg
ICByMTIsICM0NjIwNAogICAgICAgIDB4YjRjNWJkN2M6ICAgIHN0ciAgICByMTIsIFtyNywgIy05
Nl0KICAgICAgICAweGI0YzViZDgwOiAgICBtdm4gICAgcjEyLCAjNAogICAgICAgIDB4YjRjNWJk
ODQ6ICAgIHN0ciAgICByMTIsIFtyNywgIy05Ml0KICAgIFsxMzYzXSBtb3YgICAgICAgICAgICAg
ICBsb2MxMiwgbG9jNgogICAgICAgIDB4YjRjNWJkODg6ICAgIGxkciAgICByMCwgW3I3LCAjLTU2
XQogICAgICAgIDB4YjRjNWJkOGM6ICAgIGxkciAgICByMSwgW3I3LCAjLTUyXQogICAgICAgIDB4
YjRjNWJkOTA6ICAgIHN0ciAgICByMCwgW3I3LCAjLTEwNF0KICAgICAgICAweGI0YzViZDk0OiAg
ICBzdHIgICAgcjEsIFtyNywgIy0xMDBdCiAgICBbMTM2Nl0gdG9fcHJpbWl0aXZlICAgICAgbG9j
MTIsIGxvYzEyCiAgICAgICAgMHhiNGM1YmQ5ODogICAgbGRyICAgIHIwLCBbcjcsICMtMTA0XQog
ICAgICAgIDB4YjRjNWJkOWM6ICAgIGxkciAgICByMSwgW3I3LCAjLTEwMF0KICAgICAgICAweGI0
YzViZGEwOiAgICBjbW4gICAgcjEsICM1CiAgICAgICAgMHhiNGM1YmRhNDogICAgYm5lICAgIDB4
YjRjNWJkYWUKICAgICAgICAweGI0YzViZGE2OiAgICBsZHJiICAgcjYsIFtyMCwgIzVdCiAgICAg
ICAgMHhiNGM1YmRhODogICAgY21wICAgIHIyLCAjMjAKICAgICAgICAweGI0YzViZGFhOiAgICBi
aHMgICAgMHhiNGM1ZTBiNAogICAgWzEzNjldIG1vdiAgICAgICAgICAgICAgIGxvYzEzLCBTdHJp
bmcgKGF0b21pYykgKGlkZW50aWZpZXIpOiAgZXhwb25lbnQgPSAoY29uc3QzNCkKICAgICAgICAw
eGI0YzViZGFlOiAgICBtb3Z3ICAgcjEyLCAjMzQyNzIKICAgICAgICAweGI0YzViZGIyOiAgICBt
b3Z0ICAgcjEyLCAjNDYyMDQKICAgICAgICAweGI0YzViZGI2OiAgICBzdHIgICAgcjEyLCBbcjcs
ICMtMTEyXQogICAgICAgIDB4YjRjNWJkYmE6ICAgIG12biAgICByMTIsICM0CiAgICAgICAgMHhi
NGM1YmRiZTogICAgc3RyICAgIHIxMiwgW3I3LCAjLTEwOF0KICAgIFsxMzcyXSBtb3YgICAgICAg
ICAgICAgICBsb2MxNCwgbG9jOQogICAgICAgIDB4YjRjNWJkYzI6ICAgIGxkciAgICByMCwgW3I3
LCAjLTgwXQogICAgICAgIDB4YjRjNWJkYzY6ICAgIGxkciAgICByMSwgW3I3LCAjLTc2XQogICAg
ICAgIDB4YjRjNWJkY2E6ICAgIHN0ciAgICByMCwgW3I3LCAjLTEyMF0KICAgICAgICAweGI0YzVi
ZGNlOiAgICBzdHIgICAgcjEsIFtyNywgIy0xMTZdCiAgICBbMTM3NV0gdG9fcHJpbWl0aXZlICAg
ICAgbG9jMTQsIGxvYzE0CiAgICAgICAgMHhiNGM1YmRkMjogICAgbGRyICAgIHIwLCBbcjcsICMt
MTIwXQogICAgICAgIDB4YjRjNWJkZDY6ICAgIGxkciAgICByMSwgW3I3LCAjLTExNl0KICAgICAg
ICAweGI0YzViZGRhOiAgICBjbW4gICAgcjEsICM1CiAgICAgICAgMHhiNGM1YmRkZTogICAgYm5l
ICAgIDB4YjRjNWJkZTgKICAgICAgICAweGI0YzViZGUwOiAgICBsZHJiICAgcjYsIFtyMCwgIzVd
CiAgICAgICAgMHhiNGM1YmRlMjogICAgY21wICAgIHIyLCAjMjAKICAgICAgICAweGI0YzViZGU0
OiAgICBiaHMgICAgMHhiNGM1ZTBmMgogICAgWzEzNzhdIHN0cmNhdCAgICAgICAgICAgIGxvYzEx
LCBsb2MxMSwgNAogICAgICAgIDB4YjRjNWJkZTg6ICAgIG1vdncgICByMTIsICM1MzE0MAogICAg
ICAgIDB4YjRjNWJkZWM6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWJkZjA6
ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWJkZjQ6ICAgIG1vdncgICBy
NiwgIzQyMTI4CiAgICAgICAgMHhiNGM1YmRmODogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAg
ICAweGI0YzViZGZjOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzViZGZlOiAgICBt
b3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1YmUwMDogICAgbW92dyAgIHIxLCAjNTMxMzYKICAg
ICAgICAweGI0YzViZTA0OiAgICBtb3Z0ICAgcjEsICM0NTgyMgogICAgICAgIDB4YjRjNWJlMDg6
ICAgIG1vdncgICByMTIsICMxODkyNQogICAgICAgIDB4YjRjNWJlMGM6ICAgIG1vdnQgICByMTIs
ICM0Njc5MwogICAgICAgIDB4YjRjNWJlMTA6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVi
ZTEyOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWJlMTY6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1YmUxYTogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAg
MHhiNGM1YmUxYzogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWJlMWU6ICAgIGJuZSAg
ICAweGI0YzVlNjgwCiAgICBbMTM4Ml0gdGhyb3cgICAgICAgICAgICAgbG9jMTEKICAgICAgICAw
eGI0YzViZTIyOiAgICBsZHIgICAgcjAsIFtyNywgIy05Nl0KICAgICAgICAweGI0YzViZTI2OiAg
ICBsZHIgICAgcjEsIFtyNywgIy05Ml0KICAgICAgICAweGI0YzViZTJhOiAgICBtb3YgICAgcjIs
IHIwCiAgICAgICAgMHhiNGM1YmUyYzogICAgbW92ICAgIHIzLCByMQogICAgICAgIDB4YjRjNWJl
MmU6ICAgIG1vdnMgICByMSwgIzAKICAgICAgICAweGI0YzViZTMwOiAgICBtb3YgICAgcjAsIHI3
CiAgICAgICAgMHhiNGM1YmUzMjogICAgbW92dyAgIHIxMiwgIzUzMTU2CiAgICAgICAgMHhiNGM1
YmUzNjogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YmUzYTogICAgc3RyICAg
IHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1YmUzZTogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgICAgICAweGI0YzViZTQyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWJl
NDY6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWJlNDg6ICAgIG1vdncgICByMTIs
ICM2MjU4OQogICAgICAgIDB4YjRjNWJlNGM6ICAgIG1vdnQgICByMTIsICM0Njc3NgogICAgICAg
IDB4YjRjNWJlNTA6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzViZTUyOiAgICBtb3Z3ICAg
cjYsICM0NjE4OAogICAgICAgIDB4YjRjNWJlNTY6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAg
ICAgMHhiNGM1YmU1YTogICAgbGRyICAgIHIxLCBbcjZdCiAgICAgICAgMHhiNGM1YmU1YzogICAg
YnggICAgIHIxCiAgICBbMTM4NF0gcmVzb2x2ZV9zY29wZSAgICAgbG9jMTEsIGxvYzAsIGNvbnN0
YW50RXhwb25lbnRGdW5jdGlvbnMoQGlkMTYpLCA8R2xvYmFsTGV4aWNhbFZhcj4sIDEsIDB4YjQ3
ZGZmYzAKICAgICAgICAweGI0YzViZTVlOiAgICBtdm4gICAgcjEsICM0CiAgICAgICAgMHhiNGM1
YmU2MjogICAgbW92dyAgIHIwLCAjNjU0NzIKICAgICAgICAweGI0YzViZTY2OiAgICBtb3Z0ICAg
cjAsICM0NjIwNQogICAgICAgIDB4YjRjNWJlNmE6ICAgIHN0ciAgICByMCwgW3I3LCAjLTk2XQog
ICAgICAgIDB4YjRjNWJlNmU6ICAgIHN0ciAgICByMSwgW3I3LCAjLTkyXQogICAgWzEzOTFdIGdl
dF9mcm9tX3Njb3BlICAgIGxvYzEyLCBsb2MxMSwgY29uc3RhbnRFeHBvbmVudEZ1bmN0aW9ucyhA
aWQxNiksIDIwNTA8VGhyb3dJZk5vdEZvdW5kfEdsb2JhbExleGljYWxWYXJ8Tm90SW5pdGlhbGl6
YXRpb24+LCAtMTI2MjUwMTM2OCAgICBwcmVkaWN0aW5nIEFycmF5CiAgICAgICAgMHhiNGM1YmU3
MjogICAgbW92dyAgIHI2LCAjNDk2NzYKICAgICAgICAweGI0YzViZTc2OiAgICBtb3Z0ICAgcjYs
ICM0NjI3MQogICAgICAgIDB4YjRjNWJlN2E6ICAgIGxkciAgICByMSwgW3I2XQogICAgICAgIDB4
YjRjNWJlN2M6ICAgIG1vdncgICByNiwgIzQ5NjcyCiAgICAgICAgMHhiNGM1YmU4MDogICAgbW92
dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI0YzViZTg0OiAgICBsZHIgICAgcjAsIFtyNl0KICAg
ICAgICAweGI0YzViZTg2OiAgICBjbW4gICAgcjEsICM2CiAgICAgICAgMHhiNGM1YmU4YTogICAg
YmVxICAgIDB4YjRjNWUxMzAKICAgICAgICAweGI0YzViZThlOiAgICBzdHIgICAgcjAsIFtyNywg
Iy0xMDRdCiAgICAgICAgMHhiNGM1YmU5MjogICAgc3RyICAgIHIxLCBbcjcsICMtMTAwXQogICAg
WzEzOTldIGdldF9ieV92YWwgICAgICAgIGxvYzEzLCBsb2MxMiwgbG9jNyAgICBBcnJheVdpdGhD
b250aWd1b3VzLCBPcmlnaW5hbDsgcHJlZGljdGluZyBGdW5jdGlvbgogICAgICAgIDB4YjRjNWJl
OTY6ICAgIGxkciAgICByMiwgW3I3LCAjLTY0XQogICAgICAgIDB4YjRjNWJlOWE6ICAgIGxkciAg
ICByMywgW3I3LCAjLTYwXQogICAgICAgIDB4YjRjNWJlOWU6ICAgIGxkciAgICByMCwgW3I3LCAj
LTEwNF0KICAgICAgICAweGI0YzViZWEyOiAgICBsZHIgICAgcjEsIFtyNywgIy0xMDBdCiAgICAg
ICAgMHhiNGM1YmVhNjogICAgY21uICAgIHIxLCAjNQogICAgICAgIDB4YjRjNWJlYWE6ICAgIGJu
ZSAgICAweGI0YzVlMTc2CiAgICAgICAgMHhiNGM1YmVhZTogICAgY21wICAgIHIzLCAjNDI5NDk2
NzI5NQogICAgICAgIDB4YjRjNWJlYjI6ICAgIGl0dHQgICBuZQogICAgICAgIDB4YjRjNWJlYjQ6
ICAgIG1vdnduZSByMTIsICM1NzcxOQogICAgICAgIDB4YjRjNWJlYjg6ICAgIG1vdnRuZSByMTIs
ICM0NjI3NwogICAgICAgIDB4YjRjNWJlYmM6ICAgIGJ4bmUgICByMTIKICAgICAgICAweGI0YzVi
ZWJlOiAgICBsZHJiICAgcjEsIFtyMCwgIzRdCiAgICAgICAgMHhiNGM1YmVjMDogICAgYW5kICAg
IHIxLCByMSwgIzE0CiAgICAgICAgMHhiNGM1YmVjNDogICAgY21wICAgIHIxLCAjOAogICAgICAg
IDB4YjRjNWJlYzY6ICAgIGl0dHQgICBuZQogICAgICAgIDB4YjRjNWJlYzg6ICAgIG1vdnduZSBy
MTIsICM1NzcyMQogICAgICAgIDB4YjRjNWJlY2M6ICAgIG1vdnRuZSByMTIsICM0NjI3NwogICAg
ICAgIDB4YjRjNWJlZDA6ICAgIGJ4bmUgICByMTIKICAgICAgICAweGI0YzViZWQyOiAgICBsZHIg
ICAgcjMsIFtyMCwgIzhdCiAgICAgICAgMHhiNGM1YmVkNDogICAgbGRyICAgIHIxMiwgW3IzLCAj
LThdCiAgICAgICAgMHhiNGM1YmVkODogICAgY21wICAgIHIyLCByMTIKICAgICAgICAweGI0YzVi
ZWRjOiAgICBiaHMgICAgMHhiNGM1ZTFhMgogICAgICAgIDB4YjRjNWJlZTA6ICAgIGFkZHMgICBy
NiwgcjMsICM0CiAgICAgICAgMHhiNGM1YmVlMjogICAgbGRyICAgIHIxLCBbcjYsIHIyLCAjM10K
ICAgICAgICAweGI0YzViZWU2OiAgICBsZHIgICAgcjAsIFtyMywgcjIsICMzXQogICAgICAgIDB4
YjRjNWJlZWE6ICAgIGNtbiAgICByMSwgIzYKICAgICAgICAweGI0YzViZWVlOiAgICBiZXEgICAg
MHhiNGM1ZTFhMgogICAgICAgIDB4YjRjNWJlZjI6ICAgIHN0ciAgICByMCwgW3I3LCAjLTExMl0K
ICAgICAgICAweGI0YzViZWY2OiAgICBzdHIgICAgcjEsIFtyNywgIy0xMDhdCiAgICBbMTQwNV0g
bW92ICAgICAgICAgICAgICAgbG9jMTUsIGxvYzEyCiAgICAgICAgMHhiNGM1YmVmYTogICAgbGRy
ICAgIHIwLCBbcjcsICMtMTA0XQogICAgICAgIDB4YjRjNWJlZmU6ICAgIGxkciAgICByMSwgW3I3
LCAjLTEwMF0KICAgICAgICAweGI0YzViZjAyOiAgICBzdHIgICAgcjAsIFtyNywgIy0xMjhdCiAg
ICAgICAgMHhiNGM1YmYwNjogICAgc3RyICAgIHIxLCBbcjcsICMtMTI0XQogICAgWzE0MDhdIG1v
diAgICAgICAgICAgICAgIGxvYzE0LCBsb2M2CiAgICAgICAgMHhiNGM1YmYwYTogICAgbGRyICAg
IHIwLCBbcjcsICMtNTZdCiAgICAgICAgMHhiNGM1YmYwZTogICAgbGRyICAgIHIxLCBbcjcsICMt
NTJdCiAgICAgICAgMHhiNGM1YmYxMjogICAgc3RyICAgIHIwLCBbcjcsICMtMTIwXQogICAgICAg
IDB4YjRjNWJmMTY6ICAgIHN0ciAgICByMSwgW3I3LCAjLTExNl0KICAgIFsxNDExXSBjYWxsICAg
ICAgICAgICAgICBsb2MxMCwgbG9jMTMsIDIsIDIwIGxsaW50KDB4YjQ3OWJlMDAsIGV4ZWMgMHhi
NDdkNGZjMCkgc3RhdHVzKChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmUwMCAoMHhiNDdmNzA5MDpb
RnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAj
RHZDd2NyOlsweGI0NzkyODIwLT4weGI0N2Q0ZmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDldKSkg
ICAgQXJyYXlXaXRoQ29udGlndW91cywgT3JpZ2luYWw7IHByZWRpY3RpbmcgTm9uaW50YXNkb3Vi
bGUKICAgICAgICAweGI0YzViZjFhOiAgICBtb3YgICAgc3AsIHI3CiAgICAgICAgMHhiNGM1YmYx
YzogICAgbXZuICAgIHIxMiwgIzE1MQogICAgICAgIDB4YjRjNWJmMjA6ICAgIG1vdiAgICBzcCwg
c3AKICAgICAgICAweGI0YzViZjIyOiAgICBhZGQgICAgc3AsIHIxMgogICAgICAgIDB4YjRjNWJm
MjQ6ICAgIG1vdiAgICByMTIsICMyCiAgICAgICAgMHhiNGM1YmYyODogICAgc3RyICAgIHIxMiwg
W3NwLCAjMTZdCiAgICAgICAgMHhiNGM1YmYyYzogICAgbW92dyAgIHIxMiwgIzUzMjY4CiAgICAg
ICAgMHhiNGM1YmYzMDogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YmYzNDog
ICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1YmYzODogICAgbGRyICAgIHIw
LCBbcjcsICMtMTEyXQogICAgICAgIDB4YjRjNWJmM2M6ICAgIGxkciAgICByMSwgW3I3LCAjLTEw
OF0KICAgICAgICAweGI0YzViZjQwOiAgICBzdHIgICAgcjAsIFtzcCwgIzhdCiAgICAgICAgMHhi
NGM1YmY0MjogICAgc3RyICAgIHIxLCBbc3AsICMxMl0KICAgICAgICAweGI0YzViZjQ0OiAgICBj
bW4gICAgcjEsICM1CiAgICAgICAgMHhiNGM1YmY0ODogICAgYm5lICAgIDB4YjRjNWUyMDYKICAg
ICAgICAweGI0YzViZjRjOiAgICBtb3Z3ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNWJmNTA6ICAg
IG1vdnQgICByMTIsICMwCiAgICAgICAgMHhiNGM1YmY1NDogICAgY21wICAgIHIwLCByMTIKICAg
ICAgICAweGI0YzViZjU4OiAgICBibmUgICAgMHhiNGM1ZTIwNgogICAgICAgIDB4YjRjNWJmNWM6
ICAgIG1vdncgICByMTIsICMwCiAgICAgICAgMHhiNGM1YmY2MDogICAgbW92dCAgIHIxMiwgIzAK
ICAgICAgICAweGI0YzViZjY0OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1YmY2NjogICAg
bW92ICAgIHNwLCByNwogICAgICAgIDB4YjRjNWJmNjg6ICAgIG12biAgICByMTIsICMxODMKICAg
ICAgICAweGI0YzViZjZjOiAgICBtb3YgICAgc3AsIHNwCiAgICAgICAgMHhiNGM1YmY2ZTogICAg
YWRkICAgIHNwLCByMTIKICAgICAgICAweGI0YzViZjcwOiAgICBzdHIgICAgcjAsIFtyNywgIy04
OF0KICAgICAgICAweGI0YzViZjc0OiAgICBzdHIgICAgcjEsIFtyNywgIy04NF0KICAgIFsxNDIw
XSBtb3YgICAgICAgICAgICAgICBsb2MzLCBsb2MxMAogICAgICAgIDB4YjRjNWJmNzg6ICAgIGxk
ciAgICByMCwgW3I3LCAjLTg4XQogICAgICAgIDB4YjRjNWJmN2M6ICAgIGxkciAgICByMSwgW3I3
LCAjLTg0XQogICAgICAgIDB4YjRjNWJmODA6ICAgIHN0ciAgICByMCwgW3I3LCAjLTMyXQogICAg
ICAgIDB4YjRjNWJmODQ6ICAgIHN0ciAgICByMSwgW3I3LCAjLTI4XQogICAgWzE0MjNdIHJlc29s
dmVfc2NvcGUgICAgIGxvYzE1LCBsb2MwLCBpc0lkZW50aWNhbChAaWQyKSwgPEdsb2JhbFZhcj4s
IDIsIDB4YjQ3ZTc4YzAKICAgICAgICAweGI0YzViZjg4OiAgICBtdm4gICAgcjEsICM0CiAgICAg
ICAgMHhiNGM1YmY4YzogICAgbW92dyAgIHIwLCAjMzA5MTIKICAgICAgICAweGI0YzViZjkwOiAg
ICBtb3Z0ICAgcjAsICM0NjIwNgogICAgICAgIDB4YjRjNWJmOTQ6ICAgIHN0ciAgICByMCwgW3I3
LCAjLTEyOF0KICAgICAgICAweGI0YzViZjk4OiAgICBzdHIgICAgcjEsIFtyNywgIy0xMjRdCiAg
ICBbMTQzMF0gZ2V0X2Zyb21fc2NvcGUgICAgbG9jMTEsIGxvYzE1LCBpc0lkZW50aWNhbChAaWQy
KSwgMjA0OTxUaHJvd0lmTm90Rm91bmR8R2xvYmFsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgLTEy
NjI0OTkxNjggICAgcHJlZGljdGluZyBGdW5jdGlvbgogICAgICAgIDB4YjRjNWJmOWM6ICAgIG1v
dncgICByNiwgIzUxODc2CiAgICAgICAgMHhiNGM1YmZhMDogICAgbW92dCAgIHI2LCAjNDYyNzEK
ICAgICAgICAweGI0YzViZmE0OiAgICBsZHIgICAgcjEsIFtyNl0KICAgICAgICAweGI0YzViZmE2
OiAgICBtb3Z3ICAgcjYsICM1MTg3MgogICAgICAgIDB4YjRjNWJmYWE6ICAgIG1vdnQgICByNiwg
IzQ2MjcxCiAgICAgICAgMHhiNGM1YmZhZTogICAgbGRyICAgIHIwLCBbcjZdCiAgICAgICAgMHhi
NGM1YmZiMDogICAgc3RyICAgIHIwLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1YmZiNDogICAg
c3RyICAgIHIxLCBbcjcsICMtOTJdCiAgICBbMTQzOF0gbW92ICAgICAgICAgICAgICAgbG9jMTQs
IGxvYzEwCiAgICAgICAgMHhiNGM1YmZiODogICAgbGRyICAgIHIwLCBbcjcsICMtODhdCiAgICAg
ICAgMHhiNGM1YmZiYzogICAgbGRyICAgIHIxLCBbcjcsICMtODRdCiAgICAgICAgMHhiNGM1YmZj
MDogICAgc3RyICAgIHIwLCBbcjcsICMtMTIwXQogICAgICAgIDB4YjRjNWJmYzQ6ICAgIHN0ciAg
ICByMSwgW3I3LCAjLTExNl0KICAgIFsxNDQxXSBtb3YgICAgICAgICAgICAgICBsb2MxMywgbG9j
OAogICAgICAgIDB4YjRjNWJmYzg6ICAgIGxkciAgICByMCwgW3I3LCAjLTcyXQogICAgICAgIDB4
YjRjNWJmY2M6ICAgIGxkciAgICByMSwgW3I3LCAjLTY4XQogICAgICAgIDB4YjRjNWJmZDA6ICAg
IHN0ciAgICByMCwgW3I3LCAjLTExMl0KICAgICAgICAweGI0YzViZmQ0OiAgICBzdHIgICAgcjEs
IFtyNywgIy0xMDhdCiAgICBbMTQ0NF0gY2FsbCAgICAgICAgICAgICAgbG9jMTEsIGxvYzExLCAz
LCAyMCBsbGludCgweGI0N2YwZDIwLCBleGVjIDB4YjQ3ZDVhNDApIHN0YXR1cygoRnVuY3Rpb246
IENlbGw6IDB4YjQ3ZjBkMjAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFBy
b3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogaXNJZGVudGljYWwjRWExclFEOlsweGI0Nzkx
ODYwLT4weGI0NzkzNjkwLT4weGI0N2Q1YTQwLCBERkdGdW5jdGlvbkNhbGwsIDk1XSkpICAgIE5v
bkFycmF5OyBwcmVkaWN0aW5nIEJvb2wKICAgICAgICAweGI0YzViZmQ4OiAgICBtb3YgICAgc3As
IHI3CiAgICAgICAgMHhiNGM1YmZkYTogICAgbXZuICAgIHIxMiwgIzE1MQogICAgICAgIDB4YjRj
NWJmZGU6ICAgIG1vdiAgICBzcCwgc3AKICAgICAgICAweGI0YzViZmUwOiAgICBhZGQgICAgc3As
IHIxMgogICAgICAgIDB4YjRjNWJmZTI6ICAgIG1vdiAgICByMTIsICMzCiAgICAgICAgMHhiNGM1
YmZlNjogICAgc3RyICAgIHIxMiwgW3NwLCAjMTZdCiAgICAgICAgMHhiNGM1YmZlYTogICAgbW92
dyAgIHIxMiwgIzUzNDAwCiAgICAgICAgMHhiNGM1YmZlZTogICAgbW92dCAgIHIxMiwgIzQ1ODIy
CiAgICAgICAgMHhiNGM1YmZmMjogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhi
NGM1YmZmNjogICAgbGRyICAgIHIwLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1YmZmYTogICAg
bGRyICAgIHIxLCBbcjcsICMtOTJdCiAgICAgICAgMHhiNGM1YmZmZTogICAgc3RyICAgIHIwLCBb
c3AsICM4XQogICAgICAgIDB4YjRjNWMwMDA6ICAgIHN0ciAgICByMSwgW3NwLCAjMTJdCiAgICAg
ICAgMHhiNGM1YzAwMjogICAgY21uICAgIHIxLCAjNQogICAgICAgIDB4YjRjNWMwMDY6ICAgIGJu
ZSAgICAweGI0YzVlMjJlCiAgICAgICAgMHhiNGM1YzAwYTogICAgbW92dyAgIHIxMiwgIzAKICAg
ICAgICAweGI0YzVjMDBlOiAgICBtb3Z0ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNWMwMTI6ICAg
IGNtcCAgICByMCwgcjEyCiAgICAgICAgMHhiNGM1YzAxNjogICAgYm5lICAgIDB4YjRjNWUyMmUK
ICAgICAgICAweGI0YzVjMDFhOiAgICBtb3Z3ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNWMwMWU6
ICAgIG1vdnQgICByMTIsICMwCiAgICAgICAgMHhiNGM1YzAyMjogICAgYmx4ICAgIHIxMgogICAg
ICAgIDB4YjRjNWMwMjQ6ICAgIG1vdiAgICBzcCwgcjcKICAgICAgICAweGI0YzVjMDI2OiAgICBt
dm4gICAgcjEyLCAjMTgzCiAgICAgICAgMHhiNGM1YzAyYTogICAgbW92ICAgIHNwLCBzcAogICAg
ICAgIDB4YjRjNWMwMmM6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAgICAgMHhiNGM1YzAyZTogICAg
c3RyICAgIHIwLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1YzAzMjogICAgc3RyICAgIHIxLCBb
cjcsICMtOTJdCiAgICBbMTQ1M10ganRydWUgICAgICAgICAgICAgbG9jMTEsIDI3KC0+MTQ4MCkK
ICAgICAgICAweGI0YzVjMDM2OiAgICBsZHIgICAgcjAsIFtyNywgIy05Nl0KICAgICAgICAweGI0
YzVjMDNhOiAgICBsZHIgICAgcjEsIFtyNywgIy05Ml0KICAgICAgICAweGI0YzVjMDNlOiAgICBj
bW4gICAgcjEsICMyCiAgICAgICAgMHhiNGM1YzA0MjogICAgYmxvICAgIDB4YjRjNWUyNTYKICAg
ICAgICAweGI0YzVjMDQ2OiAgICB0c3QgICAgcjAsIHIwCiAgICAgICAgMHhiNGM1YzA0ODogICAg
Ym5lICAgIDB4YjRjNWMxMzYKICAgIFsxNDU2XSBtb3YgICAgICAgICAgICAgICBsb2MxMSwgU3Ry
aW5nIChhdG9taWMpIChpZGVudGlmaWVyKTogRmFpbGVkIGNvbnN0YW50RXhwb25lbnRGdW5jdGlv
bnMgd2l0aCBiYXNlID0gKGNvbnN0MzkpCiAgICAgICAgMHhiNGM1YzA0YzogICAgbW92dyAgIHIx
MiwgIzM0MTQ0CiAgICAgICAgMHhiNGM1YzA1MDogICAgbW92dCAgIHIxMiwgIzQ2MjA0CiAgICAg
ICAgMHhiNGM1YzA1NDogICAgc3RyICAgIHIxMiwgW3I3LCAjLTk2XQogICAgICAgIDB4YjRjNWMw
NTg6ICAgIG12biAgICByMTIsICM0CiAgICAgICAgMHhiNGM1YzA1YzogICAgc3RyICAgIHIxMiwg
W3I3LCAjLTkyXQogICAgWzE0NTldIG1vdiAgICAgICAgICAgICAgIGxvYzEyLCBsb2M2CiAgICAg
ICAgMHhiNGM1YzA2MDogICAgbGRyICAgIHIwLCBbcjcsICMtNTZdCiAgICAgICAgMHhiNGM1YzA2
NDogICAgbGRyICAgIHIxLCBbcjcsICMtNTJdCiAgICAgICAgMHhiNGM1YzA2ODogICAgc3RyICAg
IHIwLCBbcjcsICMtMTA0XQogICAgICAgIDB4YjRjNWMwNmM6ICAgIHN0ciAgICByMSwgW3I3LCAj
LTEwMF0KICAgIFsxNDYyXSB0b19wcmltaXRpdmUgICAgICBsb2MxMiwgbG9jMTIKICAgICAgICAw
eGI0YzVjMDcwOiAgICBsZHIgICAgcjAsIFtyNywgIy0xMDRdCiAgICAgICAgMHhiNGM1YzA3NDog
ICAgbGRyICAgIHIxLCBbcjcsICMtMTAwXQogICAgICAgIDB4YjRjNWMwNzg6ICAgIGNtbiAgICBy
MSwgIzUKICAgICAgICAweGI0YzVjMDdjOiAgICBibmUgICAgMHhiNGM1YzA4NgogICAgICAgIDB4
YjRjNWMwN2U6ICAgIGxkcmIgICByNiwgW3IwLCAjNV0KICAgICAgICAweGI0YzVjMDgwOiAgICBj
bXAgICAgcjIsICMyMAogICAgICAgIDB4YjRjNWMwODI6ICAgIGJocyAgICAweGI0YzVlMmI0CiAg
ICBbMTQ2NV0gbW92ICAgICAgICAgICAgICAgbG9jMTMsIFN0cmluZyAoYXRvbWljKSAoaWRlbnRp
Zmllcik6ICBleHBvbmVudCA9IChjb25zdDM0KQogICAgICAgIDB4YjRjNWMwODY6ICAgIG1vdncg
ICByMTIsICMzNDI3MgogICAgICAgIDB4YjRjNWMwOGE6ICAgIG1vdnQgICByMTIsICM0NjIwNAog
ICAgICAgIDB4YjRjNWMwOGU6ICAgIHN0ciAgICByMTIsIFtyNywgIy0xMTJdCiAgICAgICAgMHhi
NGM1YzA5MjogICAgbXZuICAgIHIxMiwgIzQKICAgICAgICAweGI0YzVjMDk2OiAgICBzdHIgICAg
cjEyLCBbcjcsICMtMTA4XQogICAgWzE0NjhdIG1vdiAgICAgICAgICAgICAgIGxvYzE0LCBsb2M5
CiAgICAgICAgMHhiNGM1YzA5YTogICAgbGRyICAgIHIwLCBbcjcsICMtODBdCiAgICAgICAgMHhi
NGM1YzA5ZTogICAgbGRyICAgIHIxLCBbcjcsICMtNzZdCiAgICAgICAgMHhiNGM1YzBhMjogICAg
c3RyICAgIHIwLCBbcjcsICMtMTIwXQogICAgICAgIDB4YjRjNWMwYTY6ICAgIHN0ciAgICByMSwg
W3I3LCAjLTExNl0KICAgIFsxNDcxXSB0b19wcmltaXRpdmUgICAgICBsb2MxNCwgbG9jMTQKICAg
ICAgICAweGI0YzVjMGFhOiAgICBsZHIgICAgcjAsIFtyNywgIy0xMjBdCiAgICAgICAgMHhiNGM1
YzBhZTogICAgbGRyICAgIHIxLCBbcjcsICMtMTE2XQogICAgICAgIDB4YjRjNWMwYjI6ICAgIGNt
biAgICByMSwgIzUKICAgICAgICAweGI0YzVjMGI2OiAgICBibmUgICAgMHhiNGM1YzBjMAogICAg
ICAgIDB4YjRjNWMwYjg6ICAgIGxkcmIgICByNiwgW3IwLCAjNV0KICAgICAgICAweGI0YzVjMGJh
OiAgICBjbXAgICAgcjIsICMyMAogICAgICAgIDB4YjRjNWMwYmM6ICAgIGJocyAgICAweGI0YzVl
MmYyCiAgICBbMTQ3NF0gc3RyY2F0ICAgICAgICAgICAgbG9jMTEsIGxvYzExLCA0CiAgICAgICAg
MHhiNGM1YzBjMDogICAgbW92dyAgIHIxMiwgIzUzNTI0CiAgICAgICAgMHhiNGM1YzBjNDogICAg
bW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YzBjODogICAgc3RyICAgIHIxMiwgW3I3
LCAjMjhdCiAgICAgICAgMHhiNGM1YzBjYzogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAw
eGI0YzVjMGQwOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWMwZDQ6ICAgIHN0
ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWMwZDY6ICAgIG1vdiAgICByMCwgcjcKICAgICAg
ICAweGI0YzVjMGQ4OiAgICBtb3Z3ICAgcjEsICM1MzUyMAogICAgICAgIDB4YjRjNWMwZGM6ICAg
IG1vdnQgICByMSwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YzBlMDogICAgbW92dyAgIHIxMiwgIzE4
OTI1CiAgICAgICAgMHhiNGM1YzBlNDogICAgbW92dCAgIHIxMiwgIzQ2NzkzCiAgICAgICAgMHhi
NGM1YzBlODogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWMwZWE6ICAgIG1vdncgICByNiwg
IzQ2MzQ4CiAgICAgICAgMHhiNGM1YzBlZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAw
eGI0YzVjMGYyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVjMGY0OiAgICBjbXAg
ICAgcjIsICMwCiAgICAgICAgMHhiNGM1YzBmNjogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgIFsx
NDc4XSB0aHJvdyAgICAgICAgICAgICBsb2MxMQogICAgICAgIDB4YjRjNWMwZmE6ICAgIGxkciAg
ICByMCwgW3I3LCAjLTk2XQogICAgICAgIDB4YjRjNWMwZmU6ICAgIGxkciAgICByMSwgW3I3LCAj
LTkyXQogICAgICAgIDB4YjRjNWMxMDI6ICAgIG1vdiAgICByMiwgcjAKICAgICAgICAweGI0YzVj
MTA0OiAgICBtb3YgICAgcjMsIHIxCiAgICAgICAgMHhiNGM1YzEwNjogICAgbW92cyAgIHIxLCAj
MAogICAgICAgIDB4YjRjNWMxMDg6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVjMTBh
OiAgICBtb3Z3ICAgcjEyLCAjNTM1NDAKICAgICAgICAweGI0YzVjMTBlOiAgICBtb3Z0ICAgcjEy
LCAjNDU4MjIKICAgICAgICAweGI0YzVjMTEyOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAg
ICAgICAweGI0YzVjMTE2OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWMxMWE6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1YzExZTogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAgICAgMHhiNGM1YzEyMDogICAgbW92dyAgIHIxMiwgIzYyNTg5CiAgICAgICAgMHhi
NGM1YzEyNDogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAgICAgMHhiNGM1YzEyODogICAgYmx4
ICAgIHIxMgogICAgICAgIDB4YjRjNWMxMmE6ICAgIG1vdncgICByNiwgIzQ2MTg4CiAgICAgICAg
MHhiNGM1YzEyZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVjMTMyOiAgICBs
ZHIgICAgcjEsIFtyNl0KICAgICAgICAweGI0YzVjMTM0OiAgICBieCAgICAgcjEKICAgIFsxNDgw
XSBpbmMgICAgICAgICAgICAgICBsb2M3CiAgICAgICAgMHhiNGM1YzEzNjogICAgbGRyICAgIHIw
LCBbcjcsICMtNjRdCiAgICAgICAgMHhiNGM1YzEzYTogICAgbGRyICAgIHIxLCBbcjcsICMtNjBd
CiAgICAgICAgMHhiNGM1YzEzZTogICAgY21wICAgIHIxLCAjNDI5NDk2NzI5NQogICAgICAgIDB4
YjRjNWMxNDI6ICAgIGJuZSAgICAweGI0YzVlMzMwCiAgICAgICAgMHhiNGM1YzE0NjogICAgYWRk
cyAgIHIwLCByMCwgIzEKICAgICAgICAweGI0YzVjMTQ4OiAgICBidnMgICAgMHhiNGM1ZTMzMAog
ICAgICAgIDB4YjRjNWMxNGM6ICAgIHN0ciAgICByMCwgW3I3LCAjLTY0XQogICAgWzE0ODJdIG1v
diAgICAgICAgICAgICAgIGxvYzgsIGxvYzcKICAgICAgICAweGI0YzVjMTUwOiAgICBsZHIgICAg
cjAsIFtyNywgIy02NF0KICAgICAgICAweGI0YzVjMTU0OiAgICBsZHIgICAgcjEsIFtyNywgIy02
MF0KICAgICAgICAweGI0YzVjMTU4OiAgICBzdHIgICAgcjAsIFtyNywgIy03Ml0KICAgICAgICAw
eGI0YzVjMTVjOiAgICBzdHIgICAgcjEsIFtyNywgIy02OF0KICAgIFsxNDg1XSByZXNvbHZlX3Nj
b3BlICAgICBsb2M5LCBsb2MwLCBjYXNlcyhAaWQ1KSwgPEdsb2JhbExleGljYWxWYXI+LCAxLCAw
eGI0N2RmZmMwCiAgICAgICAgMHhiNGM1YzE2MDogICAgbXZuICAgIHIxLCAjNAogICAgICAgIDB4
YjRjNWMxNjQ6ICAgIG1vdncgICByMCwgIzY1NDcyCiAgICAgICAgMHhiNGM1YzE2ODogICAgbW92
dCAgIHIwLCAjNDYyMDUKICAgICAgICAweGI0YzVjMTZjOiAgICBzdHIgICAgcjAsIFtyNywgIy04
MF0KICAgICAgICAweGI0YzVjMTcwOiAgICBzdHIgICAgcjEsIFtyNywgIy03Nl0KICAgIFsxNDky
XSBnZXRfZnJvbV9zY29wZSAgICBsb2MxMCwgbG9jOSwgY2FzZXMoQGlkNSksIDIwNTA8VGhyb3dJ
Zk5vdEZvdW5kfEdsb2JhbExleGljYWxWYXJ8Tm90SW5pdGlhbGl6YXRpb24+LCAtMTI2MjUwMTM3
NiAgICBwcmVkaWN0aW5nIEFycmF5CiAgICAgICAgMHhiNGM1YzE3NDogICAgbW92dyAgIHI2LCAj
NDk2NjgKICAgICAgICAweGI0YzVjMTc4OiAgICBtb3Z0ICAgcjYsICM0NjI3MQogICAgICAgIDB4
YjRjNWMxN2M6ICAgIGxkciAgICByMSwgW3I2XQogICAgICAgIDB4YjRjNWMxN2U6ICAgIG1vdncg
ICByNiwgIzQ5NjY0CiAgICAgICAgMHhiNGM1YzE4MjogICAgbW92dCAgIHI2LCAjNDYyNzEKICAg
ICAgICAweGI0YzVjMTg2OiAgICBsZHIgICAgcjAsIFtyNl0KICAgICAgICAweGI0YzVjMTg4OiAg
ICBjbW4gICAgcjEsICM2CiAgICAgICAgMHhiNGM1YzE4YzogICAgYmVxICAgIDB4YjRjNWUzNmUK
ICAgICAgICAweGI0YzVjMTkwOiAgICBzdHIgICAgcjAsIFtyNywgIy04OF0KICAgICAgICAweGI0
YzVjMTk0OiAgICBzdHIgICAgcjEsIFtyNywgIy04NF0KICAgIFsxNTAwXSBhcnJheV9sZW5ndGgg
ICAgICBsb2MxMSwgbG9jMTAsIGxlbmd0aChAaWQxOCkgbGxpbnQoYXJyYXlfbGVuZ3RoKSAgICBw
cmVkaWN0aW5nIE5vbmJvb2xpbnQzMgogICAgICAgIDB4YjRjNWMxOTg6ICAgIGxkciAgICByMCwg
W3I3LCAjLTg4XQogICAgICAgIDB4YjRjNWMxOWM6ICAgIGxkciAgICByMSwgW3I3LCAjLTg0XQog
ICAgICAgIDB4YjRjNWMxYTA6ICAgIGNtbiAgICByMSwgIzUKICAgICAgICAweGI0YzVjMWE0OiAg
ICBibmUgICAgMHhiNGM1ZTNiNAogICAgICAgIDB4YjRjNWMxYTg6ICAgIGxkciAgICByNiwgW3Iw
XQogICAgICAgIDB4YjRjNWMxYWE6ICAgIG1vdncgICByMTIsICMwCiAgICAgICAgMHhiNGM1YzFh
ZTogICAgbW92dCAgIHIxMiwgIzAKICAgICAgICAweGI0YzVjMWIyOiAgICBjbXAgICAgcjYsIHIx
MgogICAgICAgIDB4YjRjNWMxYjY6ICAgIGl0dHQgICBuZQogICAgICAgIDB4YjRjNWMxYjg6ICAg
IG1vdnduZSByMTIsICM1ODI5MwogICAgICAgIDB4YjRjNWMxYmM6ICAgIG1vdnRuZSByMTIsICM0
NjI3NwogICAgICAgIDB4YjRjNWMxYzA6ICAgIGJ4bmUgICByMTIKICAgICAgICAweGI0YzVjMWMy
OiAgICBsZHIgICAgcjEsIFtyMF0KICAgICAgICAweGI0YzVjMWM2OiAgICBsZHIgICAgcjAsIFty
MF0KICAgICAgICAweGI0YzVjMWNhOiAgICBzdHIgICAgcjAsIFtyNywgIy05Nl0KICAgICAgICAw
eGI0YzVjMWNlOiAgICBzdHIgICAgcjEsIFtyNywgIy05Ml0KICAgIFsxNTA5XSBqbGVzcyAgICAg
ICAgICAgICBsb2M4LCBsb2MxMSwgLTM4NygtPjExMjIpCiAgICAgICAgMHhiNGM1YzFkMjogICAg
bGRyICAgIHIyLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1YzFkNjogICAgbGRyICAgIHIzLCBb
cjcsICMtOTJdCiAgICAgICAgMHhiNGM1YzFkYTogICAgbGRyICAgIHIwLCBbcjcsICMtNzJdCiAg
ICAgICAgMHhiNGM1YzFkZTogICAgbGRyICAgIHIxLCBbcjcsICMtNjhdCiAgICAgICAgMHhiNGM1
YzFlMjogICAgY21wICAgIHIxLCAjNDI5NDk2NzI5NQogICAgICAgIDB4YjRjNWMxZTY6ICAgIGJu
ZSAgICAweGI0YzVjMWY2CiAgICAgICAgMHhiNGM1YzFlODogICAgY21wICAgIHIzLCAjNDI5NDk2
NzI5NQogICAgICAgIDB4YjRjNWMxZWM6ICAgIGJuZSAgICAweGI0YzVjMjJjCiAgICAgICAgMHhi
NGM1YzFlZTogICAgY21wICAgIHIwLCByMgogICAgICAgIDB4YjRjNWMxZjA6ICAgIGJsdCAgICAw
eGI0YzViNmQ2CiAgICAgICAgMHhiNGM1YzFmNDogICAgYiAgICAgIDB4YjRjNWMyNGMKICAgICAg
ICAweGI0YzVjMWY2OiAgICBjbW4gICAgcjEsICM3CiAgICAgICAgMHhiNGM1YzFmYTogICAgYmhp
ICAgIDB4YjRjNWU0MGEKICAgICAgICAweGI0YzVjMWZlOiAgICBjbW4gICAgcjMsICM3CiAgICAg
ICAgMHhiNGM1YzIwMjogICAgYmxvICAgIDB4YjRjNWMyMTYKICAgICAgICAweGI0YzVjMjA0OiAg
ICBjbXAgICAgcjMsICM0Mjk0OTY3Mjk1CiAgICAgICAgMHhiNGM1YzIwODogICAgYm5lICAgIDB4
YjRjNWU0MGEKICAgICAgICAweGI0YzVjMjBjOiAgICB2bW92ICAgZDcsIHIyLCByMgogICAgICAg
IDB4YjRjNWMyMTA6ICAgIHZjdnQuZjY0LnMzMiBkMCwgczE0CiAgICAgICAgMHhiNGM1YzIxNDog
ICAgYiAgICAgIDB4YjRjNWMyMWEKICAgICAgICAweGI0YzVjMjE2OiAgICB2bGRyICAgZDAsIFty
NywgIy05Nl0KICAgICAgICAweGI0YzVjMjFhOiAgICB2bGRyICAgZDIsIFtyNywgIy03Ml0KICAg
ICAgICAweGI0YzVjMjFlOiAgICB2Y21wLmY2NCBkMiwgZDAKICAgICAgICAweGI0YzVjMjIyOiAg
ICB2bXJzICAgYXBzcl9uemN2LCBmcHNjcgogICAgICAgIDB4YjRjNWMyMjY6ICAgIGJsbyAgICAw
eGI0YzViNmQ2CiAgICAgICAgMHhiNGM1YzIyYTogICAgYiAgICAgIDB4YjRjNWMyNGMKICAgICAg
ICAweGI0YzVjMjJjOiAgICB2bW92ICAgZDcsIHIwLCByMAogICAgICAgIDB4YjRjNWMyMzA6ICAg
IHZjdnQuZjY0LnMzMiBkMCwgczE0CiAgICAgICAgMHhiNGM1YzIzNDogICAgY21uICAgIHIzLCAj
NwogICAgICAgIDB4YjRjNWMyMzg6ICAgIGJoaSAgICAweGI0YzVlNDBhCiAgICAgICAgMHhiNGM1
YzIzYzogICAgdmxkciAgIGQxLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1YzI0MDogICAgdmNt
cC5mNjQgZDAsIGQxCiAgICAgICAgMHhiNGM1YzI0NDogICAgdm1ycyAgIGFwc3JfbnpjdiwgZnBz
Y3IKICAgICAgICAweGI0YzVjMjQ4OiAgICBibG8gICAgMHhiNGM1YjZkNgogICAgWzE1MTNdIGlu
YyAgICAgICAgICAgICAgIGxvYzUKICAgICAgICAweGI0YzVjMjRjOiAgICBsZHIgICAgcjAsIFty
NywgIy00OF0KICAgICAgICAweGI0YzVjMjUwOiAgICBsZHIgICAgcjEsIFtyNywgIy00NF0KICAg
ICAgICAweGI0YzVjMjU0OiAgICBjbXAgICAgcjEsICM0Mjk0OTY3Mjk1CiAgICAgICAgMHhiNGM1
YzI1ODogICAgYm5lICAgIDB4YjRjNWU0NjAKICAgICAgICAweGI0YzVjMjVjOiAgICBhZGRzICAg
cjAsIHIwLCAjMQogICAgICAgIDB4YjRjNWMyNWU6ICAgIGJ2cyAgICAweGI0YzVlNDYwCiAgICAg
ICAgMHhiNGM1YzI2MjogICAgc3RyICAgIHIwLCBbcjcsICMtNDhdCiAgICBbMTUxNV0gbW92ICAg
ICAgICAgICAgICAgbG9jNiwgbG9jNQogICAgICAgIDB4YjRjNWMyNjY6ICAgIGxkciAgICByMCwg
W3I3LCAjLTQ4XQogICAgICAgIDB4YjRjNWMyNmE6ICAgIGxkciAgICByMSwgW3I3LCAjLTQ0XQog
ICAgICAgIDB4YjRjNWMyNmU6ICAgIHN0ciAgICByMCwgW3I3LCAjLTU2XQogICAgICAgIDB4YjRj
NWMyNzI6ICAgIHN0ciAgICByMSwgW3I3LCAjLTUyXQogICAgWzE1MThdIHJlc29sdmVfc2NvcGUg
ICAgIGxvYzcsIGxvYzAsIGNhc2VzKEBpZDUpLCA8R2xvYmFsTGV4aWNhbFZhcj4sIDEsIDB4YjQ3
ZGZmYzAKICAgICAgICAweGI0YzVjMjc2OiAgICBtdm4gICAgcjEsICM0CiAgICAgICAgMHhiNGM1
YzI3YTogICAgbW92dyAgIHIwLCAjNjU0NzIKICAgICAgICAweGI0YzVjMjdlOiAgICBtb3Z0ICAg
cjAsICM0NjIwNQogICAgICAgIDB4YjRjNWMyODI6ICAgIHN0ciAgICByMCwgW3I3LCAjLTY0XQog
ICAgICAgIDB4YjRjNWMyODY6ICAgIHN0ciAgICByMSwgW3I3LCAjLTYwXQogICAgWzE1MjVdIGdl
dF9mcm9tX3Njb3BlICAgIGxvYzgsIGxvYzcsIGNhc2VzKEBpZDUpLCAyMDUwPFRocm93SWZOb3RG
b3VuZHxHbG9iYWxMZXhpY2FsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgLTEyNjI1MDEzNzYgICAg
cHJlZGljdGluZyBBcnJheQogICAgICAgIDB4YjRjNWMyOGE6ICAgIG1vdncgICByNiwgIzQ5NjY4
CiAgICAgICAgMHhiNGM1YzI4ZTogICAgbW92dCAgIHI2LCAjNDYyNzEKICAgICAgICAweGI0YzVj
MjkyOiAgICBsZHIgICAgcjEsIFtyNl0KICAgICAgICAweGI0YzVjMjk0OiAgICBtb3Z3ICAgcjYs
ICM0OTY2NAogICAgICAgIDB4YjRjNWMyOTg6ICAgIG1vdnQgICByNiwgIzQ2MjcxCiAgICAgICAg
MHhiNGM1YzI5YzogICAgbGRyICAgIHIwLCBbcjZdCiAgICAgICAgMHhiNGM1YzI5ZTogICAgY21u
ICAgIHIxLCAjNgogICAgICAgIDB4YjRjNWMyYTI6ICAgIGJlcSAgICAweGI0YzVlNDllCiAgICAg
ICAgMHhiNGM1YzJhNjogICAgc3RyICAgIHIwLCBbcjcsICMtNzJdCiAgICAgICAgMHhiNGM1YzJh
YTogICAgc3RyICAgIHIxLCBbcjcsICMtNjhdCiAgICBbMTUzM10gYXJyYXlfbGVuZ3RoICAgICAg
bG9jOSwgbG9jOCwgbGVuZ3RoKEBpZDE4KSBsbGludChhcnJheV9sZW5ndGgpICAgIHByZWRpY3Rp
bmcgTm9uYm9vbGludDMyCiAgICAgICAgMHhiNGM1YzJhZTogICAgbGRyICAgIHIwLCBbcjcsICMt
NzJdCiAgICAgICAgMHhiNGM1YzJiMjogICAgbGRyICAgIHIxLCBbcjcsICMtNjhdCiAgICAgICAg
MHhiNGM1YzJiNjogICAgY21uICAgIHIxLCAjNQogICAgICAgIDB4YjRjNWMyYmE6ICAgIGJuZSAg
ICAweGI0YzVlNGU0CiAgICAgICAgMHhiNGM1YzJiZTogICAgbGRyICAgIHI2LCBbcjBdCiAgICAg
ICAgMHhiNGM1YzJjMDogICAgbW92dyAgIHIxMiwgIzAKICAgICAgICAweGI0YzVjMmM0OiAgICBt
b3Z0ICAgcjEyLCAjMAogICAgICAgIDB4YjRjNWMyYzg6ICAgIGNtcCAgICByNiwgcjEyCiAgICAg
ICAgMHhiNGM1YzJjYzogICAgaXR0dCAgIG5lCiAgICAgICAgMHhiNGM1YzJjZTogICAgbW92d25l
IHIxMiwgIzU4NTk3CiAgICAgICAgMHhiNGM1YzJkMjogICAgbW92dG5lIHIxMiwgIzQ2Mjc3CiAg
ICAgICAgMHhiNGM1YzJkNjogICAgYnhuZSAgIHIxMgogICAgICAgIDB4YjRjNWMyZDg6ICAgIGxk
ciAgICByMSwgW3IwXQogICAgICAgIDB4YjRjNWMyZGM6ICAgIGxkciAgICByMCwgW3IwXQogICAg
ICAgIDB4YjRjNWMyZTA6ICAgIHN0ciAgICByMCwgW3I3LCAjLTgwXQogICAgICAgIDB4YjRjNWMy
ZTQ6ICAgIHN0ciAgICByMSwgW3I3LCAjLTc2XQogICAgWzE1NDJdIGpsZXNzICAgICAgICAgICAg
IGxvYzYsIGxvYzksIC00ODIoLT4xMDYwKQogICAgICAgIDB4YjRjNWMyZTg6ICAgIGxkciAgICBy
MiwgW3I3LCAjLTgwXQogICAgICAgIDB4YjRjNWMyZWM6ICAgIGxkciAgICByMywgW3I3LCAjLTc2
XQogICAgICAgIDB4YjRjNWMyZjA6ICAgIGxkciAgICByMCwgW3I3LCAjLTU2XQogICAgICAgIDB4
YjRjNWMyZjQ6ICAgIGxkciAgICByMSwgW3I3LCAjLTUyXQogICAgICAgIDB4YjRjNWMyZjg6ICAg
IGNtcCAgICByMSwgIzQyOTQ5NjcyOTUKICAgICAgICAweGI0YzVjMmZjOiAgICBibmUgICAgMHhi
NGM1YzMwYwogICAgICAgIDB4YjRjNWMyZmU6ICAgIGNtcCAgICByMywgIzQyOTQ5NjcyOTUKICAg
ICAgICAweGI0YzVjMzAyOiAgICBibmUgICAgMHhiNGM1YzM0MgogICAgICAgIDB4YjRjNWMzMDQ6
ICAgIGNtcCAgICByMCwgcjIKICAgICAgICAweGI0YzVjMzA2OiAgICBibHQgICAgMHhiNGM1YjUw
ZQogICAgICAgIDB4YjRjNWMzMGE6ICAgIGIgICAgICAweGI0YzVjMzYyCiAgICAgICAgMHhiNGM1
YzMwYzogICAgY21uICAgIHIxLCAjNwogICAgICAgIDB4YjRjNWMzMTA6ICAgIGJoaSAgICAweGI0
YzVlNTNhCiAgICAgICAgMHhiNGM1YzMxNDogICAgY21uICAgIHIzLCAjNwogICAgICAgIDB4YjRj
NWMzMTg6ICAgIGJsbyAgICAweGI0YzVjMzJjCiAgICAgICAgMHhiNGM1YzMxYTogICAgY21wICAg
IHIzLCAjNDI5NDk2NzI5NQogICAgICAgIDB4YjRjNWMzMWU6ICAgIGJuZSAgICAweGI0YzVlNTNh
CiAgICAgICAgMHhiNGM1YzMyMjogICAgdm1vdiAgIGQ3LCByMiwgcjIKICAgICAgICAweGI0YzVj
MzI2OiAgICB2Y3Z0LmY2NC5zMzIgZDAsIHMxNAogICAgICAgIDB4YjRjNWMzMmE6ICAgIGIgICAg
ICAweGI0YzVjMzMwCiAgICAgICAgMHhiNGM1YzMyYzogICAgdmxkciAgIGQwLCBbcjcsICMtODBd
CiAgICAgICAgMHhiNGM1YzMzMDogICAgdmxkciAgIGQyLCBbcjcsICMtNTZdCiAgICAgICAgMHhi
NGM1YzMzNDogICAgdmNtcC5mNjQgZDIsIGQwCiAgICAgICAgMHhiNGM1YzMzODogICAgdm1ycyAg
IGFwc3JfbnpjdiwgZnBzY3IKICAgICAgICAweGI0YzVjMzNjOiAgICBibG8gICAgMHhiNGM1YjUw
ZQogICAgICAgIDB4YjRjNWMzNDA6ICAgIGIgICAgICAweGI0YzVjMzYyCiAgICAgICAgMHhiNGM1
YzM0MjogICAgdm1vdiAgIGQ3LCByMCwgcjAKICAgICAgICAweGI0YzVjMzQ2OiAgICB2Y3Z0LmY2
NC5zMzIgZDAsIHMxNAogICAgICAgIDB4YjRjNWMzNGE6ICAgIGNtbiAgICByMywgIzcKICAgICAg
ICAweGI0YzVjMzRlOiAgICBiaGkgICAgMHhiNGM1ZTUzYQogICAgICAgIDB4YjRjNWMzNTI6ICAg
IHZsZHIgICBkMSwgW3I3LCAjLTgwXQogICAgICAgIDB4YjRjNWMzNTY6ICAgIHZjbXAuZjY0IGQw
LCBkMQogICAgICAgIDB4YjRjNWMzNWE6ICAgIHZtcnMgICBhcHNyX256Y3YsIGZwc2NyCiAgICAg
ICAgMHhiNGM1YzM1ZTogICAgYmxvICAgIDB4YjRjNWI1MGUKICAgIFsxNTQ2XSBpbmMgICAgICAg
ICAgICAgICBsb2M0CiAgICAgICAgMHhiNGM1YzM2MjogICAgbGRyICAgIHIwLCBbcjcsICMtNDBd
CiAgICAgICAgMHhiNGM1YzM2NjogICAgbGRyICAgIHIxLCBbcjcsICMtMzZdCiAgICAgICAgMHhi
NGM1YzM2YTogICAgY21wICAgIHIxLCAjNDI5NDk2NzI5NQogICAgICAgIDB4YjRjNWMzNmU6ICAg
IGJuZSAgICAweGI0YzVlNTkwCiAgICAgICAgMHhiNGM1YzM3MjogICAgYWRkcyAgIHIwLCByMCwg
IzEKICAgICAgICAweGI0YzVjMzc0OiAgICBidnMgICAgMHhiNGM1ZTU5MAogICAgICAgIDB4YjRj
NWMzNzg6ICAgIHN0ciAgICByMCwgW3I3LCAjLTQwXQogICAgWzE1NDhdIGpsZXNzICAgICAgICAg
ICAgIGxvYzQsIEludDMyOiAxMDAwKGNvbnN0MzIpLCAtNTI2KC0+MTAyMikKICAgICAgICAweGI0
YzVjMzdjOiAgICBsZHIgICAgcjAsIFtyNywgIy00MF0KICAgICAgICAweGI0YzVjMzgwOiAgICBs
ZHIgICAgcjEsIFtyNywgIy0zNl0KICAgICAgICAweGI0YzVjMzg0OiAgICBjbXAgICAgcjEsICM0
Mjk0OTY3Mjk1CiAgICAgICAgMHhiNGM1YzM4ODogICAgYm5lICAgIDB4YjRjNWMzOTQKICAgICAg
ICAweGI0YzVjMzhhOiAgICBjbXAgICAgcjAsICMxMDAwCiAgICAgICAgMHhiNGM1YzM4ZTogICAg
Ymx0ICAgIDB4YjRjNWIzZjIKICAgICAgICAweGI0YzVjMzkyOiAgICBiICAgICAgMHhiNGM1YzNk
OAogICAgICAgIDB4YjRjNWMzOTQ6ICAgIGNtbiAgICByMSwgIzcKICAgICAgICAweGI0YzVjMzk4
OiAgICBiaGkgICAgMHhiNGM1ZTVjYwogICAgICAgIDB4YjRjNWMzOWM6ICAgIG1vdiAgICByMiwg
IzEwMDAKICAgICAgICAweGI0YzVjM2EwOiAgICBtb3YgICAgcjMsICM0Mjk0OTY3Mjk1CiAgICAg
ICAgMHhiNGM1YzNhNDogICAgY21uICAgIHIzLCAjNwogICAgICAgIDB4YjRjNWMzYTg6ICAgIGJs
byAgICAweGI0YzVjM2JjCiAgICAgICAgMHhiNGM1YzNhYTogICAgY21wICAgIHIzLCAjNDI5NDk2
NzI5NQogICAgICAgIDB4YjRjNWMzYWU6ICAgIGJuZSAgICAweGI0YzVlNWNjCiAgICAgICAgMHhi
NGM1YzNiMjogICAgdm1vdiAgIGQ3LCByMiwgcjIKICAgICAgICAweGI0YzVjM2I2OiAgICB2Y3Z0
LmY2NC5zMzIgZDAsIHMxNAogICAgICAgIDB4YjRjNWMzYmE6ICAgIGIgICAgICAweGI0YzVjM2M4
CiAgICAgICAgMHhiNGM1YzNiYzogICAgbW92dyAgIHI2LCAjOTA4OAogICAgICAgIDB4YjRjNWMz
YzA6ICAgIG1vdnQgICByNiwgIzQ2MjcxCiAgICAgICAgMHhiNGM1YzNjNDogICAgdmxkciAgIGQw
LCBbcjZdCiAgICAgICAgMHhiNGM1YzNjODogICAgdmxkciAgIGQyLCBbcjcsICMtNDBdCiAgICAg
ICAgMHhiNGM1YzNjYzogICAgdmNtcC5mNjQgZDIsIGQwCiAgICAgICAgMHhiNGM1YzNkMDogICAg
dm1ycyAgIGFwc3JfbnpjdiwgZnBzY3IKICAgICAgICAweGI0YzVjM2Q0OiAgICBibG8gICAgMHhi
NGM1YjNmMgogICAgWzE1NTJdIGVuZCAgICAgICAgICAgICAgIGxvYzMKICAgICAgICAweGI0YzVj
M2Q4OiAgICBsZHIgICAgcjAsIFtyNywgIy0zMl0KICAgICAgICAweGI0YzVjM2RjOiAgICBsZHIg
ICAgcjEsIFtyNywgIy0yOF0KICAgICAgICAweGI0YzVjM2UwOiAgICBtb3YgICAgc3AsIHI3CiAg
ICAgICAgMHhiNGM1YzNlMjogICAgcG9wICAgIHtyNywgbHJ9CiAgICAgICAgMHhiNGM1YzNlNjog
ICAgYnggICAgIGxyCiAgICAoRW5kIE9mIE1haW4gUGF0aCkKICAgIChTKSBbICAxNF0gcHV0X3Rv
X3Njb3BlICAgICAgbG9jMiwgdGhpcyhAaWQwKSwgdGhpcywgMjA1MjxUaHJvd0lmTm90Rm91bmR8
TG9jYWxDbG9zdXJlVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgPHN0cnVjdHVyZT4sIDAKICAgICAg
ICAweGI0YzVjM2U4OiAgICBtb3Z3ICAgcjEsICM0NzY4MAogICAgICAgIDB4YjRjNWMzZWM6ICAg
IG1vdnQgICByMSwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YzNmMDogICAgbW92ICAgIHIwLCByNwog
ICAgICAgIDB4YjRjNWMzZjI6ICAgIG1vdncgICByMTIsICM0NzY4NAogICAgICAgIDB4YjRjNWMz
ZjY6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWMzZmE6ICAgIHN0ciAgICBy
MTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWMzZmU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAg
ICAgICAgMHhiNGM1YzQwMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVjNDA2
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVjNDA4OiAgICBtb3Z3ICAgcjEyLCAj
MTU0MDEKICAgICAgICAweGI0YzVjNDBjOiAgICBtb3Z0ICAgcjEyLCAjNDY3NzcKICAgICAgICAw
eGI0YzVjNDEwOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1YzQxMjogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgICAgICAweGI0YzVjNDE2OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAg
IDB4YjRjNWM0MWE6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWM0MWM6ICAgIGNt
cCAgICByMiwgIzAKICAgICAgICAweGI0YzVjNDFlOiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAg
ICAgIDB4YjRjNWM0MjI6ICAgIGIgICAgICAweGI0YzU5MTVlCiAgICAoUykgWyAgMzVdIHB1dF90
b19zY29wZSAgICAgIGxvYzUsIG9wYXF1ZVBvdyhAaWQxKSwgbG9jMywgMjA0OTxUaHJvd0lmTm90
Rm91bmR8R2xvYmFsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgPHN0cnVjdHVyZT4sIC0xMjYyNDk5
MTc2CiAgICAgICAgMHhiNGM1YzQyNjogICAgbW92dyAgIHIxLCAjNDc3NjQKICAgICAgICAweGI0
YzVjNDJhOiAgICBtb3Z0ICAgcjEsICM0NTgyMgogICAgICAgIDB4YjRjNWM0MmU6ICAgIG1vdiAg
ICByMCwgcjcKICAgICAgICAweGI0YzVjNDMwOiAgICBtb3Z3ICAgcjEyLCAjNDc3NjgKICAgICAg
ICAweGI0YzVjNDM0OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVjNDM4OiAg
ICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVjNDNjOiAgICBtb3Z3ICAgcjYs
ICM0MjEyOAogICAgICAgIDB4YjRjNWM0NDA6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAg
MHhiNGM1YzQ0NDogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1YzQ0NjogICAgbW92
dyAgIHIxMiwgIzE1NDAxCiAgICAgICAgMHhiNGM1YzQ0YTogICAgbW92dCAgIHIxMiwgIzQ2Nzc3
CiAgICAgICAgMHhiNGM1YzQ0ZTogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWM0NTA6ICAg
IG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1YzQ1NDogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgICAgICAweGI0YzVjNDU4OiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVj
NDVhOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1YzQ1YzogICAgYm5lICAgIDB4YjRj
NWU2ODAKICAgICAgICAweGI0YzVjNDYwOiAgICBiICAgICAgMHhiNGM1OTI0OAogICAgKFMpIFsg
IDQ2XSBwdXRfdG9fc2NvcGUgICAgICBsb2M1LCBpc0lkZW50aWNhbChAaWQyKSwgbG9jMywgMjA0
OTxUaHJvd0lmTm90Rm91bmR8R2xvYmFsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgPHN0cnVjdHVy
ZT4sIC0xMjYyNDk5MTY4CiAgICAgICAgMHhiNGM1YzQ2NDogICAgbW92dyAgIHIxLCAjNDc4MDgK
ICAgICAgICAweGI0YzVjNDY4OiAgICBtb3Z0ICAgcjEsICM0NTgyMgogICAgICAgIDB4YjRjNWM0
NmM6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVjNDZlOiAgICBtb3Z3ICAgcjEyLCAj
NDc4MTIKICAgICAgICAweGI0YzVjNDcyOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAw
eGI0YzVjNDc2OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVjNDdhOiAg
ICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWM0N2U6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAgICAgMHhiNGM1YzQ4MjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1
YzQ4NDogICAgbW92dyAgIHIxMiwgIzE1NDAxCiAgICAgICAgMHhiNGM1YzQ4ODogICAgbW92dCAg
IHIxMiwgIzQ2Nzc3CiAgICAgICAgMHhiNGM1YzQ4YzogICAgYmx4ICAgIHIxMgogICAgICAgIDB4
YjRjNWM0OGU6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1YzQ5MjogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVjNDk2OiAgICBsZHIgICAgcjYsIFtyNl0KICAg
ICAgICAweGI0YzVjNDk4OiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1YzQ5YTogICAg
Ym5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVjNDllOiAgICBiICAgICAgMHhiNGM1OTMw
ZQogICAgKFMpIFsgIDYzXSBnZXRfZnJvbV9zY29wZSAgICBsb2M0LCBsb2M3LCBub0lubGluZShA
aWQzKSwgMjA0ODxUaHJvd0lmTm90Rm91bmR8R2xvYmFsUHJvcGVydHl8Tm90SW5pdGlhbGl6YXRp
b24+LCAxNzEgICAgcHJlZGljdGluZyBGdW5jdGlvbgogICAgICAgIDB4YjRjNWM0YTI6ICAgIG1v
dncgICByMSwgIzQ3ODc2CiAgICAgICAgMHhiNGM1YzRhNjogICAgbW92dCAgIHIxLCAjNDU4MjIK
ICAgICAgICAweGI0YzVjNGFhOiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1YzRhYzog
ICAgbW92dyAgIHIxMiwgIzQ3ODgwCiAgICAgICAgMHhiNGM1YzRiMDogICAgbW92dCAgIHIxMiwg
IzQ1ODIyCiAgICAgICAgMHhiNGM1YzRiNDogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAg
ICAgMHhiNGM1YzRiODogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVjNGJjOiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWM0YzA6ICAgIHN0ciAgICByNywgW3I2
XQogICAgICAgIDB4YjRjNWM0YzI6ICAgIG1vdncgICByMTIsICMxMzE4NQogICAgICAgIDB4YjRj
NWM0YzY6ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAgICAgIDB4YjRjNWM0Y2E6ICAgIGJseCAg
ICByMTIKICAgICAgICAweGI0YzVjNGNjOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4
YjRjNWM0ZDA6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1YzRkNDogICAgbGRy
ICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1YzRkNjogICAgY21wICAgIHIyLCAjMAogICAgICAg
IDB4YjRjNWM0ZDg6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1YzRkYzogICAg
c3RyICAgIHIwLCBbcjcsICMtNDBdCiAgICAgICAgMHhiNGM1YzRlMDogICAgc3RyICAgIHIxLCBb
cjcsICMtMzZdCiAgICAgICAgMHhiNGM1YzRlNDogICAgYiAgICAgIDB4YjRjNTkzNzgKICAgIChT
KSBbICA4Nl0gY2FsbCAgICAgICAgICAgICAgbG9jMywgbG9jNCwgMiwgMTIgbGxpbnQoMHhiNDdm
MTNhMCwgZXhlYyAweGI0N2I3ZDgwKSBzdGF0dXMoKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YxM2Ew
ICgweGI0N2Y2ZTEwOltGdW5jdGlvbiwge25hbWU6MTAwLCBsZW5ndGg6MTAxfSwgTm9uQXJyYXks
IFByb3RvOjB4YjQ3ZWRkZTAsIExlYWZdKTsgRXhlY3V0YWJsZTogTmF0aXZlRXhlY3V0YWJsZTow
eDEwMWMxLzB4ZjYzMCkpICAgIE5vbkFycmF5OyBwcmVkaWN0aW5nIE90aGVyCiAgICAgICAgMHhi
NGM1YzRlODogICAgbW92dyAgIHIyLCAjNTE4MTYKICAgICAgICAweGI0YzVjNGVjOiAgICBtb3Z0
ICAgcjIsICM0NjI2NAogICAgICAgIDB4YjRjNWM0ZjA6ICAgIG1vdncgICByMTIsICMxNTMyOQog
ICAgICAgIDB4YjRjNWM0ZjQ6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgICAgIDB4YjRjNWM0
Zjg6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVjNGZhOiAgICBtb3YgICAgc3AsIHI3CiAg
ICAgICAgMHhiNGM1YzRmYzogICAgbXZuICAgIHIxMiwgIzE4MwogICAgICAgIDB4YjRjNWM1MDA6
ICAgIG1vdiAgICBzcCwgc3AKICAgICAgICAweGI0YzVjNTAyOiAgICBhZGQgICAgc3AsIHIxMgog
ICAgICAgIDB4YjRjNWM1MDQ6ICAgIHN0ciAgICByMCwgW3I3LCAjLTMyXQogICAgICAgIDB4YjRj
NWM1MDg6ICAgIHN0ciAgICByMSwgW3I3LCAjLTI4XQogICAgICAgIDB4YjRjNWM1MGM6ICAgIGIg
ICAgICAweGI0YzU5NDA2CiAgICAoUykgWyAxMDddIHB1dF90b19zY29wZSAgICAgIGxvYzQsIGNh
c2VTdHJpbmdzKEBpZDQpLCBsb2M1LCAxMDQ4NTc4PERvTm90VGhyb3dJZk5vdEZvdW5kfEdsb2Jh
bExleGljYWxWYXJ8SW5pdGlhbGl6YXRpb24+LCA8c3RydWN0dXJlPiwgLTEyNjI1MDEzNTIKICAg
ICAgICAweGI0YzVjNTEwOiAgICBtb3Z3ICAgcjEsICM0ODA1MgogICAgICAgIDB4YjRjNWM1MTQ6
ICAgIG1vdnQgICByMSwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YzUxODogICAgbW92ICAgIHIwLCBy
NwogICAgICAgIDB4YjRjNWM1MWE6ICAgIG1vdncgICByMTIsICM0ODA1NgogICAgICAgIDB4YjRj
NWM1MWU6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWM1MjI6ICAgIHN0ciAg
ICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWM1MjY6ICAgIG1vdncgICByNiwgIzQyMTI4
CiAgICAgICAgMHhiNGM1YzUyYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVj
NTJlOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVjNTMwOiAgICBtb3Z3ICAgcjEy
LCAjMTU0MDEKICAgICAgICAweGI0YzVjNTM0OiAgICBtb3Z0ICAgcjEyLCAjNDY3NzcKICAgICAg
ICAweGI0YzVjNTM4OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1YzUzYTogICAgbW92dyAg
IHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVjNTNlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
ICAgIDB4YjRjNWM1NDI6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWM1NDQ6ICAg
IGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVjNTQ2OiAgICBibmUgICAgMHhiNGM1ZTY4MAog
ICAgICAgIDB4YjRjNWM1NGE6ICAgIGIgICAgICAweGI0YzU5NGU0CiAgICAoUykgWyAxMjZdIHB1
dF90b19zY29wZSAgICAgIGxvYzQsIGNhc2VzKEBpZDUpLCBsb2M1LCAxMDQ4NTc4PERvTm90VGhy
b3dJZk5vdEZvdW5kfEdsb2JhbExleGljYWxWYXJ8SW5pdGlhbGl6YXRpb24+LCA8c3RydWN0dXJl
PiwgLTEyNjI1MDEzNzYKICAgICAgICAweGI0YzVjNTRlOiAgICBtb3Z3ICAgcjEsICM0ODEyOAog
ICAgICAgIDB4YjRjNWM1NTI6ICAgIG1vdnQgICByMSwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YzU1
NjogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWM1NTg6ICAgIG1vdncgICByMTIsICM0
ODEzMgogICAgICAgIDB4YjRjNWM1NWM6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4
YjRjNWM1NjA6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWM1NjQ6ICAg
IG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1YzU2ODogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgICAgICAweGI0YzVjNTZjOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVj
NTZlOiAgICBtb3Z3ICAgcjEyLCAjMTU0MDEKICAgICAgICAweGI0YzVjNTcyOiAgICBtb3Z0ICAg
cjEyLCAjNDY3NzcKICAgICAgICAweGI0YzVjNTc2OiAgICBibHggICAgcjEyCiAgICAgICAgMHhi
NGM1YzU3ODogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVjNTdjOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWM1ODA6ICAgIGxkciAgICByNiwgW3I2XQogICAg
ICAgIDB4YjRjNWM1ODI6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVjNTg0OiAgICBi
bmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWM1ODg6ICAgIGIgICAgICAweGI0YzU5NWJl
CiAgICAoUykgWyAxNDhdIGdldF9mcm9tX3Njb3BlICAgIGxvYzUsIGxvYzUsIGNhc2VTdHJpbmdz
KEBpZDQpLCAyMDUwPFRocm93SWZOb3RGb3VuZHxHbG9iYWxMZXhpY2FsVmFyfE5vdEluaXRpYWxp
emF0aW9uPiwgLTEyNjI1MDEzNTIgICAgcHJlZGljdGluZyBBcnJheQogICAgICAgIDB4YjRjNWM1
OGM6ICAgIG1vdncgICByMSwgIzQ4MjE2CiAgICAgICAgMHhiNGM1YzU5MDogICAgbW92dCAgIHIx
LCAjNDU4MjIKICAgICAgICAweGI0YzVjNTk0OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhi
NGM1YzU5NjogICAgbW92dyAgIHIxMiwgIzQ4MjIwCiAgICAgICAgMHhiNGM1YzU5YTogICAgbW92
dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YzU5ZTogICAgc3RyICAgIHIxMiwgW3I3LCAj
MjhdCiAgICAgICAgMHhiNGM1YzVhMjogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0
YzVjNWE2OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWM1YWE6ICAgIHN0ciAg
ICByNywgW3I2XQogICAgICAgIDB4YjRjNWM1YWM6ICAgIG1vdncgICByMTIsICMxMzE4NQogICAg
ICAgIDB4YjRjNWM1YjA6ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAgICAgIDB4YjRjNWM1YjQ6
ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVjNWI2OiAgICBtb3Z3ICAgcjYsICM0NjM0OAog
ICAgICAgIDB4YjRjNWM1YmE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1YzVi
ZTogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1YzVjMDogICAgY21wICAgIHIyLCAj
MAogICAgICAgIDB4YjRjNWM1YzI6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1
YzVjNjogICAgc3RyICAgIHIwLCBbcjcsICMtNDhdCiAgICAgICAgMHhiNGM1YzVjYTogICAgc3Ry
ICAgIHIxLCBbcjcsICMtNDRdCiAgICAgICAgMHhiNGM1YzVjZTogICAgYiAgICAgIDB4YjRjNTk2
NDAKICAgIChTKSBbIDE1Nl0gZ2V0X2J5X2lkICAgICAgICAgbG9jNiwgbG9jNSwgU3ltYm9sLml0
ZXJhdG9yKEBpZDYpICAgIHByZWRpY3RpbmcgRnVuY3Rpb24KICAgICAgICAweGI0YzVjNWQyOiAg
ICBtb3Z3ICAgcjEyLCAjMTQ5NzYKICAgICAgICAweGI0YzVjNWQ2OiAgICBtb3Z0ICAgcjEyLCAj
NDYyNzAKICAgICAgICAweGI0YzVjNWRhOiAgICBzdHIgICAgcjEyLCBbc3BdCiAgICAgICAgMHhi
NGM1YzVkZTogICAgbW92ICAgIHIyLCByMAogICAgICAgIDB4YjRjNWM1ZTA6ICAgIG1vdiAgICBy
MywgcjEKICAgICAgICAweGI0YzVjNWUyOiAgICBtb3Z3ICAgcjEsICM1MTg4OAogICAgICAgIDB4
YjRjNWM1ZTY6ICAgIG1vdnQgICByMSwgIzQ2MjY0CiAgICAgICAgMHhiNGM1YzVlYTogICAgbW92
ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWM1ZWM6ICAgIG1vdncgICByMTIsICM0ODI1MgogICAg
ICAgIDB4YjRjNWM1ZjA6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWM1ZjQ6
ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWM1Zjg6ICAgIG1vdncgICBy
NiwgIzQyMTI4CiAgICAgICAgMHhiNGM1YzVmYzogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAg
ICAweGI0YzVjNjAwOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVjNjAyOiAgICBt
b3Z3ICAgcjEyLCAjMTg1MTMKICAgICAgICAweGI0YzVjNjA2OiAgICBtb3Z0ICAgcjEyLCAjNDY3
NzcKICAgICAgICAweGI0YzVjNjBhOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1YzYwYzog
ICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVjNjEwOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgICAgIDB4YjRjNWM2MTQ6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRj
NWM2MTY6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVjNjE4OiAgICBibmUgICAgMHhi
NGM1ZTY4MAogICAgICAgIDB4YjRjNWM2MWM6ICAgIHN0ciAgICByMCwgW3I3LCAjLTU2XQogICAg
ICAgIDB4YjRjNWM2MjA6ICAgIHN0ciAgICByMSwgW3I3LCAjLTUyXQogICAgICAgIDB4YjRjNWM2
MjQ6ICAgIGIgICAgICAweGI0YzU5NjdhCiAgICAoUykgWyAxNjhdIGNhbGwgICAgICAgICAgICAg
IGxvYzYsIGxvYzYsIDEsIDE0IGxsaW50KDB4YjQ3ZjNmMDAsIGV4ZWMgMHhiNDdlM2VjMCkgc3Rh
dHVzKChGdW5jdGlvbjogQ2VsbDogMHhiNDdmM2YwMCAoMHhiNDdmNmUxMDpbRnVuY3Rpb24sIHtu
YW1lOjEwMCwgbGVuZ3RoOjEwMX0sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwLCBMZWFmXSk7
IEV4ZWN1dGFibGU6IE5hdGl2ZUV4ZWN1dGFibGU6MHhiNmM2ZjVkNS8weGY2MzApKSAgICBBcnJh
eVdpdGhDb250aWd1b3VzLCBPcmlnaW5hbDsgcHJlZGljdGluZyBPdGhlcm9iagogICAgICAgIDB4
YjRjNWM2Mjg6ICAgIG1vdncgICByMiwgIzUxOTYwCiAgICAgICAgMHhiNGM1YzYyYzogICAgbW92
dCAgIHIyLCAjNDYyNjQKICAgICAgICAweGI0YzVjNjMwOiAgICBtb3Z3ICAgcjEyLCAjMTUzMjkK
ICAgICAgICAweGI0YzVjNjM0OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgICAgICAweGI0YzVj
NjM4OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1YzYzYTogICAgbW92ICAgIHNwLCByNwog
ICAgICAgIDB4YjRjNWM2M2M6ICAgIG12biAgICByMTIsICMxODMKICAgICAgICAweGI0YzVjNjQw
OiAgICBtb3YgICAgc3AsIHNwCiAgICAgICAgMHhiNGM1YzY0MjogICAgYWRkICAgIHNwLCByMTIK
ICAgICAgICAweGI0YzVjNjQ0OiAgICBzdHIgICAgcjAsIFtyNywgIy01Nl0KICAgICAgICAweGI0
YzVjNjQ4OiAgICBzdHIgICAgcjEsIFtyNywgIy01Ml0KICAgICAgICAweGI0YzVjNjRjOiAgICBi
ICAgICAgMHhiNGM1OTZlOAogICAgKFMpIFsgMTk3XSBnZXRfZnJvbV9zY29wZSAgICBsb2M5LCBs
b2M5LCBjYXNlcyhAaWQ1KSwgMjA1MDxUaHJvd0lmTm90Rm91bmR8R2xvYmFsTGV4aWNhbFZhcnxO
b3RJbml0aWFsaXphdGlvbj4sIC0xMjYyNTAxMzc2ICAgIHByZWRpY3RpbmcgQXJyYXkKICAgICAg
ICAweGI0YzVjNjUwOiAgICBtb3Z3ICAgcjEsICM0ODQxMgogICAgICAgIDB4YjRjNWM2NTQ6ICAg
IG1vdnQgICByMSwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YzY1ODogICAgbW92ICAgIHIwLCByNwog
ICAgICAgIDB4YjRjNWM2NWE6ICAgIG1vdncgICByMTIsICM0ODQxNgogICAgICAgIDB4YjRjNWM2
NWU6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWM2NjI6ICAgIHN0ciAgICBy
MTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWM2NjY6ICAgIG1vdncgICByNiwgIzQyMTI4CiAg
ICAgICAgMHhiNGM1YzY2YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVjNjZl
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVjNjcwOiAgICBtb3Z3ICAgcjEyLCAj
MTMxODUKICAgICAgICAweGI0YzVjNjc0OiAgICBtb3Z0ICAgcjEyLCAjNDY3NzcKICAgICAgICAw
eGI0YzVjNjc4OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1YzY3YTogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgICAgICAweGI0YzVjNjdlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAg
IDB4YjRjNWM2ODI6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWM2ODQ6ICAgIGNt
cCAgICByMiwgIzAKICAgICAgICAweGI0YzVjNjg2OiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAg
ICAgIDB4YjRjNWM2OGE6ICAgIHN0ciAgICByMCwgW3I3LCAjLTgwXQogICAgICAgIDB4YjRjNWM2
OGU6ICAgIHN0ciAgICByMSwgW3I3LCAjLTc2XQogICAgICAgIDB4YjRjNWM2OTI6ICAgIGIgICAg
ICAweGI0YzU5NzkwCiAgICAoUykgWyAyMDVdIGdldF9ieV9pZCAgICAgICAgIGxvYzMsIGxvYzks
IHB1c2goQGlkOCkgICAgcHJlZGljdGluZyBGdW5jdGlvbgogICAgICAgIDB4YjRjNWM2OTY6ICAg
IG1vdncgICByMTIsICM0MDM5MgogICAgICAgIDB4YjRjNWM2OWE6ICAgIG1vdnQgICByMTIsICM0
NjI3MAogICAgICAgIDB4YjRjNWM2OWU6ICAgIHN0ciAgICByMTIsIFtzcF0KICAgICAgICAweGI0
YzVjNmEyOiAgICBtb3YgICAgcjIsIHIwCiAgICAgICAgMHhiNGM1YzZhNDogICAgbW92ICAgIHIz
LCByMQogICAgICAgIDB4YjRjNWM2YTY6ICAgIG1vdncgICByMSwgIzUyMDMyCiAgICAgICAgMHhi
NGM1YzZhYTogICAgbW92dCAgIHIxLCAjNDYyNjQKICAgICAgICAweGI0YzVjNmFlOiAgICBtb3Yg
ICAgcjAsIHI3CiAgICAgICAgMHhiNGM1YzZiMDogICAgbW92dyAgIHIxMiwgIzQ4NDQ4CiAgICAg
ICAgMHhiNGM1YzZiNDogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1YzZiODog
ICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1YzZiYzogICAgbW92dyAgIHI2
LCAjNDIxMjgKICAgICAgICAweGI0YzVjNmMwOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAg
IDB4YjRjNWM2YzQ6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWM2YzY6ICAgIG1v
dncgICByMTIsICMxODUxMwogICAgICAgIDB4YjRjNWM2Y2E6ICAgIG1vdnQgICByMTIsICM0Njc3
NwogICAgICAgIDB4YjRjNWM2Y2U6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVjNmQwOiAg
ICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWM2ZDQ6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAgICAgMHhiNGM1YzZkODogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1
YzZkYTogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWM2ZGM6ICAgIGJuZSAgICAweGI0
YzVlNjgwCiAgICAgICAgMHhiNGM1YzZlMDogICAgc3RyICAgIHIwLCBbcjcsICMtMzJdCiAgICAg
ICAgMHhiNGM1YzZlNDogICAgc3RyICAgIHIxLCBbcjcsICMtMjhdCiAgICAgICAgMHhiNGM1YzZl
ODogICAgYiAgICAgIDB4YjRjNTk3Y2EKICAgIChTKSBbIDIyMV0gZ2V0X2Zyb21fc2NvcGUgICAg
bG9jMTAsIGxvYzEzLCBldmFsKEBpZDkpLCAyMDQ4PFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9w
ZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDEyNCAgICBwcmVkaWN0aW5nIEZ1bmN0aW9uCiAgICAg
ICAgMHhiNGM1YzZlYzogICAgbW92dyAgIHIxLCAjNDg1MDgKICAgICAgICAweGI0YzVjNmYwOiAg
ICBtb3Z0ICAgcjEsICM0NTgyMgogICAgICAgIDB4YjRjNWM2ZjQ6ICAgIG1vdiAgICByMCwgcjcK
ICAgICAgICAweGI0YzVjNmY2OiAgICBtb3Z3ICAgcjEyLCAjNDg1MTIKICAgICAgICAweGI0YzVj
NmZhOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVjNmZlOiAgICBzdHIgICAg
cjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVjNzAyOiAgICBtb3Z3ICAgcjYsICM0MjEyOAog
ICAgICAgIDB4YjRjNWM3MDY6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1Yzcw
YTogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1YzcwYzogICAgbW92dyAgIHIxMiwg
IzEzMTg1CiAgICAgICAgMHhiNGM1YzcxMDogICAgbW92dCAgIHIxMiwgIzQ2Nzc3CiAgICAgICAg
MHhiNGM1YzcxNDogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWM3MTY6ICAgIG1vdncgICBy
NiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1YzcxYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAg
ICAweGI0YzVjNzFlOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVjNzIwOiAgICBj
bXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1YzcyMjogICAgYm5lICAgIDB4YjRjNWU2ODAKICAg
ICAgICAweGI0YzVjNzI2OiAgICBzdHIgICAgcjAsIFtyNywgIy04OF0KICAgICAgICAweGI0YzVj
NzJhOiAgICBzdHIgICAgcjEsIFtyNywgIy04NF0KICAgICAgICAweGI0YzVjNzJlOiAgICBiICAg
ICAgMHhiNGM1OTgyNAogICAgKFMpIFsgMjM3XSBjYWxsX2V2YWwgICAgICAgICBsb2M4LCBsb2Mx
MCwgMiwgMTggICAgT3JpZ2luYWw7IHByZWRpY3RpbmcgTm9uaW50YXNkb3VibGUKICAgICAgICAw
eGI0YzVjNzMyOiAgICBtb3YgICAgc3AsIHI3CiAgICAgICAgMHhiNGM1YzczNDogICAgbXZuICAg
IHIxMiwgIzEzNQogICAgICAgIDB4YjRjNWM3Mzg6ICAgIG1vdiAgICBzcCwgc3AKICAgICAgICAw
eGI0YzVjNzNhOiAgICBhZGQgICAgc3AsIHIxMgogICAgICAgIDB4YjRjNWM3M2M6ICAgIGxkciAg
ICByMCwgW3NwLCAjOF0KICAgICAgICAweGI0YzVjNzNlOiAgICBsZHIgICAgcjEsIFtzcCwgIzhd
CiAgICAgICAgMHhiNGM1Yzc0MDogICAgbW92dyAgIHIyLCAjNDU3NzYKICAgICAgICAweGI0YzVj
NzQ0OiAgICBtb3Z0ICAgcjIsICM0NjI2MwogICAgICAgIDB4YjRjNWM3NDg6ICAgIGxkciAgICBy
MCwgW3I3LCAjMTZdCiAgICAgICAgMHhiNGM1Yzc0YTogICAgbGRyICAgIHIxLCBbcjcsICMyMF0K
ICAgICAgICAweGI0YzVjNzRjOiAgICBtb3Z3ICAgcjEyLCAjOTE4NQogICAgICAgIDB4YjRjNWM3
NTA6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgICAgIDB4YjRjNWM3NTQ6ICAgIGJseCAgICBy
MTIKICAgICAgICAweGI0YzVjNzU2OiAgICBtb3YgICAgc3AsIHI3CiAgICAgICAgMHhiNGM1Yzc1
ODogICAgbXZuICAgIHIxMiwgIzE4MwogICAgICAgIDB4YjRjNWM3NWM6ICAgIG1vdiAgICBzcCwg
c3AKICAgICAgICAweGI0YzVjNzVlOiAgICBhZGQgICAgc3AsIHIxMgogICAgICAgIDB4YjRjNWM3
NjA6ICAgIHN0ciAgICByMCwgW3I3LCAjLTcyXQogICAgICAgIDB4YjRjNWM3NjQ6ICAgIHN0ciAg
ICByMSwgW3I3LCAjLTY4XQogICAgICAgIDB4YjRjNWM3Njg6ICAgIGIgICAgICAweGI0YzU5OGNl
CiAgICAoUykgWyAyNDZdIGNhbGwgICAgICAgICAgICAgIGxvYzMsIGxvYzMsIDIsIDE0IGxsaW50
KDB4YjQ3ZjM3ZTAsIGV4ZWMgMHhiNDdlMzYwMCkgc3RhdHVzKChGdW5jdGlvbjogQ2VsbDogMHhi
NDdmMzdlMCAoMHhiNDdmNmUxMDpbRnVuY3Rpb24sIHtuYW1lOjEwMCwgbGVuZ3RoOjEwMX0sIE5v
bkFycmF5LCBQcm90bzoweGI0N2VkZGUwLCBMZWFmXSk7IEV4ZWN1dGFibGU6IE5hdGl2ZUV4ZWN1
dGFibGU6MHhiNmM2ZjFjMS8weGY2MzApKSAgICBBcnJheVdpdGhDb250aWd1b3VzLCBPcmlnaW5h
bDsgcHJlZGljdGluZyBOb25ib29saW50MzIKICAgICAgICAweGI0YzVjNzZjOiAgICBtb3Z3ICAg
cjIsICM1MjEwNAogICAgICAgIDB4YjRjNWM3NzA6ICAgIG1vdnQgICByMiwgIzQ2MjY0CiAgICAg
ICAgMHhiNGM1Yzc3NDogICAgbW92dyAgIHIxMiwgIzE1MzI5CiAgICAgICAgMHhiNGM1Yzc3ODog
ICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAgICAgMHhiNGM1Yzc3YzogICAgYmx4ICAgIHIxMgog
ICAgICAgIDB4YjRjNWM3N2U6ICAgIG1vdiAgICBzcCwgcjcKICAgICAgICAweGI0YzVjNzgwOiAg
ICBtdm4gICAgcjEyLCAjMTgzCiAgICAgICAgMHhiNGM1Yzc4NDogICAgbW92ICAgIHNwLCBzcAog
ICAgICAgIDB4YjRjNWM3ODY6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAgICAgMHhiNGM1Yzc4ODog
ICAgc3RyICAgIHIwLCBbcjcsICMtMzJdCiAgICAgICAgMHhiNGM1Yzc4YzogICAgc3RyICAgIHIx
LCBbcjcsICMtMjhdCiAgICAgICAgMHhiNGM1Yzc5MDogICAgYiAgICAgIDB4YjRjNTk5MmMKICAg
IChTKSBbIDI2M10gZ2V0X2J5X2lkICAgICAgICAgbG9jMTAsIGxvYzYsIHJldHVybihAaWQxMCkg
ICAgcHJlZGljdGluZyBOb25lCiAgICAgICAgMHhiNGM1Yzc5NDogICAgbW92dyAgIHIxMiwgIzM5
NjAwCiAgICAgICAgMHhiNGM1Yzc5ODogICAgbW92dCAgIHIxMiwgIzQ2MjcwCiAgICAgICAgMHhi
NGM1Yzc5YzogICAgc3RyICAgIHIxMiwgW3NwXQogICAgICAgIDB4YjRjNWM3YTA6ICAgIG1vdiAg
ICByMiwgcjAKICAgICAgICAweGI0YzVjN2EyOiAgICBtb3YgICAgcjMsIHIxCiAgICAgICAgMHhi
NGM1YzdhNDogICAgbW92dyAgIHIxLCAjNTIxNzYKICAgICAgICAweGI0YzVjN2E4OiAgICBtb3Z0
ICAgcjEsICM0NjI2NAogICAgICAgIDB4YjRjNWM3YWM6ICAgIG1vdiAgICByMCwgcjcKICAgICAg
ICAweGI0YzVjN2FlOiAgICBtb3Z3ICAgcjEyLCAjNDg2ODAKICAgICAgICAweGI0YzVjN2IyOiAg
ICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVjN2I2OiAgICBzdHIgICAgcjEyLCBb
cjcsICMyOF0KICAgICAgICAweGI0YzVjN2JhOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAg
IDB4YjRjNWM3YmU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1YzdjMjogICAg
c3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1YzdjNDogICAgbW92dyAgIHIxMiwgIzE4NTEz
CiAgICAgICAgMHhiNGM1YzdjODogICAgbW92dCAgIHIxMiwgIzQ2Nzc3CiAgICAgICAgMHhiNGM1
YzdjYzogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWM3Y2U6ICAgIG1vdncgICByNiwgIzQ2
MzQ4CiAgICAgICAgMHhiNGM1YzdkMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0
YzVjN2Q2OiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVjN2Q4OiAgICBjbXAgICAg
cjIsICMwCiAgICAgICAgMHhiNGM1YzdkYTogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAw
eGI0YzVjN2RlOiAgICBzdHIgICAgcjAsIFtyNywgIy04OF0KICAgICAgICAweGI0YzVjN2UyOiAg
ICBzdHIgICAgcjEsIFtyNywgIy04NF0KICAgICAgICAweGI0YzVjN2U2OiAgICBiICAgICAgMHhi
NGM1OWEwMAogICAgKFMpIFsgMjc1XSBqdHJ1ZSAgICAgICAgICAgICBsb2MxMSwgMTUoLT4yOTAp
CiAgICAgICAgMHhiNGM1YzdlYTogICAgY21uICAgIHIxLCAjNwogICAgICAgIDB4YjRjNWM3ZWU6
ICAgIGJoaSAgICAweGI0YzVjODA2CiAgICAgICAgMHhiNGM1YzdmMDogICAgdmxkciAgIGQwLCBb
cjcsICMtOTZdCiAgICAgICAgMHhiNGM1YzdmNDogICAgLmxvbmcgIGVlYjUwYjQwCiAgICAgICAg
MHhiNGM1YzdmODogICAgdm1ycyAgIGFwc3JfbnpjdiwgZnBzY3IKICAgICAgICAweGI0YzVjN2Zj
OiAgICBidnMgICAgMHhiNGM1YzgwMgogICAgICAgIDB4YjRjNWM3ZmU6ICAgIGJuZSAgICAweGI0
YzU5YWM4CiAgICAgICAgMHhiNGM1YzgwMjogICAgYiAgICAgIDB4YjRjNTlhNWEKICAgICAgICAw
eGI0YzVjODA2OiAgICBtb3YgICAgcjIsIHIwCiAgICAgICAgMHhiNGM1YzgwODogICAgbW92ICAg
IHIzLCByMQogICAgICAgIDB4YjRjNWM4MGE6ICAgIG1vdnMgICByMSwgIzAKICAgICAgICAweGI0
YzVjODBjOiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1YzgwZTogICAgbW92dyAgIHIx
MiwgIzQ4NzI4CiAgICAgICAgMHhiNGM1YzgxMjogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAg
ICAgMHhiNGM1YzgxNjogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1Yzgx
YTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVjODFlOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgICAgIDB4YjRjNWM4MjI6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4
YjRjNWM4MjQ6ICAgIG1vdncgICByMTIsICM1NjU2NQogICAgICAgIDB4YjRjNWM4Mjg6ICAgIG1v
dnQgICByMTIsICM0Njc3NgogICAgICAgIDB4YjRjNWM4MmM6ICAgIGJseCAgICByMTIKICAgICAg
ICAweGI0YzVjODJlOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWM4MzI6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1YzgzNjogICAgbGRyICAgIHI2LCBbcjZd
CiAgICAgICAgMHhiNGM1YzgzODogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWM4M2E6
ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1YzgzZTogICAgdHN0ICAgIHIwLCBy
MAogICAgICAgIDB4YjRjNWM4NDA6ICAgIGJuZSAgICAweGI0YzU5YWM4CiAgICAgICAgMHhiNGM1
Yzg0NDogICAgYiAgICAgIDB4YjRjNTlhNWEKICAgIChTKSBbIDI4MV0gY2FsbCAgICAgICAgICAg
ICAgbG9jNywgbG9jMTAsIDEsIDE4IHN0YXR1cyhDb3VsZCBUYWtlIFNsb3cgUGF0aCkgICAgT3Jp
Z2luYWw7IHByZWRpY3RpbmcgTm9uZQogICAgICAgIDB4YjRjNWM4NDg6ICAgIG1vdncgICByMiwg
IzUyMjQ4CiAgICAgICAgMHhiNGM1Yzg0YzogICAgbW92dCAgIHIyLCAjNDYyNjQKICAgICAgICAw
eGI0YzVjODUwOiAgICBtb3Z3ICAgcjEyLCAjMTUzMjkKICAgICAgICAweGI0YzVjODU0OiAgICBt
b3Z0ICAgcjEyLCAjNDY4MzIKICAgICAgICAweGI0YzVjODU4OiAgICBibHggICAgcjEyCiAgICAg
ICAgMHhiNGM1Yzg1YTogICAgbW92ICAgIHNwLCByNwogICAgICAgIDB4YjRjNWM4NWM6ICAgIG12
biAgICByMTIsICMxODMKICAgICAgICAweGI0YzVjODYwOiAgICBtb3YgICAgc3AsIHNwCiAgICAg
ICAgMHhiNGM1Yzg2MjogICAgYWRkICAgIHNwLCByMTIKICAgICAgICAweGI0YzVjODY0OiAgICBz
dHIgICAgcjAsIFtyNywgIy02NF0KICAgICAgICAweGI0YzVjODY4OiAgICBzdHIgICAgcjEsIFty
NywgIy02MF0KICAgICAgICAweGI0YzVjODZjOiAgICBiICAgICAgMHhiNGM1OWFjOAogICAgKFMp
IFsgMzI5XSBnZXRfYnlfaWQgICAgICAgICBsb2M4LCBsb2M2LCBuZXh0KEBpZDExKSAgICBwcmVk
aWN0aW5nIEZ1bmN0aW9uCiAgICAgICAgMHhiNGM1Yzg3MDogICAgbW92dyAgIHIxMiwgIzM5MzYw
CiAgICAgICAgMHhiNGM1Yzg3NDogICAgbW92dCAgIHIxMiwgIzQ2MjcwCiAgICAgICAgMHhiNGM1
Yzg3ODogICAgc3RyICAgIHIxMiwgW3NwXQogICAgICAgIDB4YjRjNWM4N2M6ICAgIG1vdiAgICBy
MiwgcjAKICAgICAgICAweGI0YzVjODdlOiAgICBtb3YgICAgcjMsIHIxCiAgICAgICAgMHhiNGM1
Yzg4MDogICAgbW92dyAgIHIxLCAjNTIzMjAKICAgICAgICAweGI0YzVjODg0OiAgICBtb3Z0ICAg
cjEsICM0NjI2NAogICAgICAgIDB4YjRjNWM4ODg6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAw
eGI0YzVjODhhOiAgICBtb3Z3ICAgcjEyLCAjNDg5NDQKICAgICAgICAweGI0YzVjODhlOiAgICBt
b3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVjODkyOiAgICBzdHIgICAgcjEyLCBbcjcs
ICMyOF0KICAgICAgICAweGI0YzVjODk2OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4
YjRjNWM4OWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1Yzg5ZTogICAgc3Ry
ICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1YzhhMDogICAgbW92dyAgIHIxMiwgIzE4NTEzCiAg
ICAgICAgMHhiNGM1YzhhNDogICAgbW92dCAgIHIxMiwgIzQ2Nzc3CiAgICAgICAgMHhiNGM1Yzhh
ODogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWM4YWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4
CiAgICAgICAgMHhiNGM1YzhhZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVj
OGIyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVjOGI0OiAgICBjbXAgICAgcjIs
ICMwCiAgICAgICAgMHhiNGM1YzhiNjogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0
YzVjOGJhOiAgICBzdHIgICAgcjAsIFtyNywgIy03Ml0KICAgICAgICAweGI0YzVjOGJlOiAgICBz
dHIgICAgcjEsIFtyNywgIy02OF0KICAgICAgICAweGI0YzVjOGMyOiAgICBiICAgICAgMHhiNGM1
OWNmMAogICAgKFMpIFsgMzQxXSBjYWxsICAgICAgICAgICAgICBsb2M3LCBsb2M4LCAxLCAxNiBs
bGludCgweGI0N2YwY2MwLCBleGVjIDB4YjQ3ZDU5YzApIHN0YXR1cygoRnVuY3Rpb246IENlbGw6
IDB4YjQ3ZjBjYzAgKDB4YjQ3ZjZlMTA6W0Z1bmN0aW9uLCB7bmFtZToxMDAsIGxlbmd0aDoxMDF9
LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMCwgTGVhZl0pOyBFeGVjdXRhYmxlOiBuZXh0I0FV
TWtORDpbMHhiNDdhM2QyMC0+MHhiNDdkNTljMCwgTExJbnRGdW5jdGlvbkNhbGwsIDI0OSAoU3Ry
aWN0TW9kZSldKSkgICAgTm9uQXJyYXk7IHByZWRpY3RpbmcgRmluYWwKICAgICAgICAweGI0YzVj
OGM2OiAgICBtb3Z3ICAgcjIsICM1MjM5MgogICAgICAgIDB4YjRjNWM4Y2E6ICAgIG1vdnQgICBy
MiwgIzQ2MjY0CiAgICAgICAgMHhiNGM1YzhjZTogICAgbW92dyAgIHIxMiwgIzE1MzI5CiAgICAg
ICAgMHhiNGM1YzhkMjogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAgICAgMHhiNGM1YzhkNjog
ICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWM4ZDg6ICAgIG1vdiAgICBzcCwgcjcKICAgICAg
ICAweGI0YzVjOGRhOiAgICBtdm4gICAgcjEyLCAjMTgzCiAgICAgICAgMHhiNGM1YzhkZTogICAg
bW92ICAgIHNwLCBzcAogICAgICAgIDB4YjRjNWM4ZTA6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAg
ICAgMHhiNGM1YzhlMjogICAgc3RyICAgIHIwLCBbcjcsICMtNjRdCiAgICAgICAgMHhiNGM1Yzhl
NjogICAgc3RyICAgIHIxLCBbcjcsICMtNjBdCiAgICAgICAgMHhiNGM1YzhlYTogICAgYiAgICAg
IDB4YjRjNTlkNWUKICAgIChTKSBbIDM1M10ganRydWUgICAgICAgICAgICAgbG9jOCwgNigtPjM1
OSkKICAgICAgICAweGI0YzVjOGVlOiAgICBjbW4gICAgcjEsICM3CiAgICAgICAgMHhiNGM1Yzhm
MjogICAgYmhpICAgIDB4YjRjNWM5MGEKICAgICAgICAweGI0YzVjOGY0OiAgICB2bGRyICAgZDAs
IFtyNywgIy03Ml0KICAgICAgICAweGI0YzVjOGY4OiAgICAubG9uZyAgZWViNTBiNDAKICAgICAg
ICAweGI0YzVjOGZjOiAgICB2bXJzICAgYXBzcl9uemN2LCBmcHNjcgogICAgICAgIDB4YjRjNWM5
MDA6ICAgIGJ2cyAgICAweGI0YzVjOTA2CiAgICAgICAgMHhiNGM1YzkwMjogICAgYm5lICAgIDB4
YjRjNTlkZTYKICAgICAgICAweGI0YzVjOTA2OiAgICBiICAgICAgMHhiNGM1OWQ5YQogICAgICAg
IDB4YjRjNWM5MGE6ICAgIG1vdiAgICByMiwgcjAKICAgICAgICAweGI0YzVjOTBjOiAgICBtb3Yg
ICAgcjMsIHIxCiAgICAgICAgMHhiNGM1YzkwZTogICAgbW92cyAgIHIxLCAjMAogICAgICAgIDB4
YjRjNWM5MTA6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVjOTEyOiAgICBtb3Z3ICAg
cjEyLCAjNDkwNDAKICAgICAgICAweGI0YzVjOTE2OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAg
ICAgICAweGI0YzVjOTFhOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVj
OTFlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWM5MjI6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1YzkyNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAg
MHhiNGM1YzkyODogICAgbW92dyAgIHIxMiwgIzU2NTY1CiAgICAgICAgMHhiNGM1YzkyYzogICAg
bW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAgICAgMHhiNGM1YzkzMDogICAgYmx4ICAgIHIxMgogICAg
ICAgIDB4YjRjNWM5MzI6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1YzkzNjog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVjOTNhOiAgICBsZHIgICAgcjYsIFty
Nl0KICAgICAgICAweGI0YzVjOTNjOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1Yzkz
ZTogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVjOTQyOiAgICB0c3QgICAgcjAs
IHIwCiAgICAgICAgMHhiNGM1Yzk0NDogICAgYm5lICAgIDB4YjRjNTlkZTYKICAgICAgICAweGI0
YzVjOTQ4OiAgICBiICAgICAgMHhiNGM1OWQ5YQogICAgKFMpIFsgMzU5XSBnZXRfYnlfaWQgICAg
ICAgICBsb2M4LCBsb2M3LCBkb25lKEBpZDEyKSBsbGludChzdHJ1Y3QgPSAweGI0N2MxNWIwIChv
ZmZzZXQgPSAwKSkgICAgcHJlZGljdGluZyBCb29sCiAgICAgICAgMHhiNGM1Yzk0YzogICAgbW92
dyAgIHIxMiwgIzE1NjAKICAgICAgICAweGI0YzVjOTUwOiAgICBtb3Z0ICAgcjEyLCAjNDYyNzAK
ICAgICAgICAweGI0YzVjOTU0OiAgICBzdHIgICAgcjEyLCBbc3BdCiAgICAgICAgMHhiNGM1Yzk1
ODogICAgbW92ICAgIHIyLCByMAogICAgICAgIDB4YjRjNWM5NWE6ICAgIG1vdiAgICByMywgcjEK
ICAgICAgICAweGI0YzVjOTVjOiAgICBtb3Z3ICAgcjEsICM1MjQ2NAogICAgICAgIDB4YjRjNWM5
NjA6ICAgIG1vdnQgICByMSwgIzQ2MjY0CiAgICAgICAgMHhiNGM1Yzk2NDogICAgbW92ICAgIHIw
LCByNwogICAgICAgIDB4YjRjNWM5NjY6ICAgIG1vdncgICByMTIsICM0OTA2NAogICAgICAgIDB4
YjRjNWM5NmE6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWM5NmU6ICAgIHN0
ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWM5NzI6ICAgIG1vdncgICByNiwgIzQy
MTI4CiAgICAgICAgMHhiNGM1Yzk3NjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0
YzVjOTdhOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVjOTdjOiAgICBtb3Z3ICAg
cjEyLCAjMTg1MTMKICAgICAgICAweGI0YzVjOTgwOiAgICBtb3Z0ICAgcjEyLCAjNDY3NzcKICAg
ICAgICAweGI0YzVjOTg0OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1Yzk4NjogICAgbW92
dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVjOThhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgICAgIDB4YjRjNWM5OGU6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWM5OTA6
ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVjOTkyOiAgICBibmUgICAgMHhiNGM1ZTY4
MAogICAgICAgIDB4YjRjNWM5OTY6ICAgIHN0ciAgICByMCwgW3I3LCAjLTcyXQogICAgICAgIDB4
YjRjNWM5OWE6ICAgIHN0ciAgICByMSwgW3I3LCAjLTY4XQogICAgICAgIDB4YjRjNWM5OWU6ICAg
IGIgICAgICAweGI0YzU5ZTIwCiAgICAoUykgWyAzNjhdIGp0cnVlICAgICAgICAgICAgIGxvYzgs
IDUwKC0+NDE4KQogICAgICAgIDB4YjRjNWM5YTI6ICAgIGNtbiAgICByMSwgIzcKICAgICAgICAw
eGI0YzVjOWE2OiAgICBiaGkgICAgMHhiNGM1YzliZQogICAgICAgIDB4YjRjNWM5YTg6ICAgIHZs
ZHIgICBkMCwgW3I3LCAjLTcyXQogICAgICAgIDB4YjRjNWM5YWM6ICAgIC5sb25nICBlZWI1MGI0
MAogICAgICAgIDB4YjRjNWM5YjA6ICAgIHZtcnMgICBhcHNyX256Y3YsIGZwc2NyCiAgICAgICAg
MHhiNGM1YzliNDogICAgYnZzICAgIDB4YjRjNWM5YmEKICAgICAgICAweGI0YzVjOWI2OiAgICBi
bmUgICAgMHhiNGM1OWZmZQogICAgICAgIDB4YjRjNWM5YmE6ICAgIGIgICAgICAweGI0YzU5ZTM2
CiAgICAgICAgMHhiNGM1YzliZTogICAgbW92ICAgIHIyLCByMAogICAgICAgIDB4YjRjNWM5YzA6
ICAgIG1vdiAgICByMywgcjEKICAgICAgICAweGI0YzVjOWMyOiAgICBtb3ZzICAgcjEsICMwCiAg
ICAgICAgMHhiNGM1YzljNDogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWM5YzY6ICAg
IG1vdncgICByMTIsICM0OTEwMAogICAgICAgIDB4YjRjNWM5Y2E6ICAgIG1vdnQgICByMTIsICM0
NTgyMgogICAgICAgIDB4YjRjNWM5Y2U6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAg
IDB4YjRjNWM5ZDI6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1YzlkNjogICAg
bW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVjOWRhOiAgICBzdHIgICAgcjcsIFtyNl0K
ICAgICAgICAweGI0YzVjOWRjOiAgICBtb3Z3ICAgcjEyLCAjNTY1NjUKICAgICAgICAweGI0YzVj
OWUwOiAgICBtb3Z0ICAgcjEyLCAjNDY3NzYKICAgICAgICAweGI0YzVjOWU0OiAgICBibHggICAg
cjEyCiAgICAgICAgMHhiNGM1YzllNjogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0
YzVjOWVhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWM5ZWU6ICAgIGxkciAg
ICByNiwgW3I2XQogICAgICAgIDB4YjRjNWM5ZjA6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAw
eGI0YzVjOWYyOiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWM5ZjY6ICAgIHRz
dCAgICByMCwgcjAKICAgICAgICAweGI0YzVjOWY4OiAgICBibmUgICAgMHhiNGM1OWZmZQogICAg
ICAgIDB4YjRjNWM5ZmM6ICAgIGIgICAgICAweGI0YzU5ZTM2CiAgICAoUykgWyAzNzFdIGdldF9i
eV9pZCAgICAgICAgIGxvYzcsIGxvYzcsIHZhbHVlKEBpZDEzKSBsbGludChzdHJ1Y3QgPSAweGI0
N2MxNWIwIChvZmZzZXQgPSAxKSkgICAgcHJlZGljdGluZyBTdHJpbmdpZGVudAogICAgICAgIDB4
YjRjNWNhMDA6ICAgIG1vdncgICByMTIsICMyOTA0CiAgICAgICAgMHhiNGM1Y2EwNDogICAgbW92
dCAgIHIxMiwgIzQ2MjcwCiAgICAgICAgMHhiNGM1Y2EwODogICAgc3RyICAgIHIxMiwgW3NwXQog
ICAgICAgIDB4YjRjNWNhMGM6ICAgIG1vdiAgICByMiwgcjAKICAgICAgICAweGI0YzVjYTBlOiAg
ICBtb3YgICAgcjMsIHIxCiAgICAgICAgMHhiNGM1Y2ExMDogICAgbW92dyAgIHIxLCAjNTI1MzYK
ICAgICAgICAweGI0YzVjYTE0OiAgICBtb3Z0ICAgcjEsICM0NjI2NAogICAgICAgIDB4YjRjNWNh
MTg6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVjYTFhOiAgICBtb3Z3ICAgcjEyLCAj
NDkxMTIKICAgICAgICAweGI0YzVjYTFlOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAw
eGI0YzVjYTIyOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVjYTI2OiAg
ICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWNhMmE6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAgICAgMHhiNGM1Y2EyZTogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1
Y2EzMDogICAgbW92dyAgIHIxMiwgIzE4NTEzCiAgICAgICAgMHhiNGM1Y2EzNDogICAgbW92dCAg
IHIxMiwgIzQ2Nzc3CiAgICAgICAgMHhiNGM1Y2EzODogICAgYmx4ICAgIHIxMgogICAgICAgIDB4
YjRjNWNhM2E6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1Y2EzZTogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVjYTQyOiAgICBsZHIgICAgcjYsIFtyNl0KICAg
ICAgICAweGI0YzVjYTQ0OiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1Y2E0NjogICAg
Ym5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVjYTRhOiAgICBzdHIgICAgcjAsIFtyNywg
Iy02NF0KICAgICAgICAweGI0YzVjYTRlOiAgICBzdHIgICAgcjEsIFtyNywgIy02MF0KICAgICAg
ICAweGI0YzVjYTUyOiAgICBiICAgICAgMHhiNGM1OWU3MAogICAgKFMpIFsgMzgyXSBnZXRfYnlf
aWQgICAgICAgICBsb2M3LCBsb2M2LCByZXR1cm4oQGlkMTApICAgIHByZWRpY3RpbmcgTm9uZQog
ICAgICAgIDB4YjRjNWNhNTY6ICAgIG1vdncgICByMTIsICMzOTYwMAogICAgICAgIDB4YjRjNWNh
NWE6ICAgIG1vdnQgICByMTIsICM0NjI3MAogICAgICAgIDB4YjRjNWNhNWU6ICAgIHN0ciAgICBy
MTIsIFtzcF0KICAgICAgICAweGI0YzVjYTYyOiAgICBtb3YgICAgcjIsIHIwCiAgICAgICAgMHhi
NGM1Y2E2NDogICAgbW92ICAgIHIzLCByMQogICAgICAgIDB4YjRjNWNhNjY6ICAgIG1vdncgICBy
MSwgIzUyNjA4CiAgICAgICAgMHhiNGM1Y2E2YTogICAgbW92dCAgIHIxLCAjNDYyNjQKICAgICAg
ICAweGI0YzVjYTZlOiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1Y2E3MDogICAgbW92
dyAgIHIxMiwgIzQ5MTU2CiAgICAgICAgMHhiNGM1Y2E3NDogICAgbW92dCAgIHIxMiwgIzQ1ODIy
CiAgICAgICAgMHhiNGM1Y2E3ODogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhi
NGM1Y2E3YzogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVjYTgwOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWNhODQ6ICAgIHN0ciAgICByNywgW3I2XQogICAg
ICAgIDB4YjRjNWNhODY6ICAgIG1vdncgICByMTIsICMxODUxMwogICAgICAgIDB4YjRjNWNhOGE6
ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAgICAgIDB4YjRjNWNhOGU6ICAgIGJseCAgICByMTIK
ICAgICAgICAweGI0YzVjYTkwOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWNh
OTQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1Y2E5ODogICAgbGRyICAgIHI2
LCBbcjZdCiAgICAgICAgMHhiNGM1Y2E5YTogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRj
NWNhOWM6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1Y2FhMDogICAgc3RyICAg
IHIwLCBbcjcsICMtNjRdCiAgICAgICAgMHhiNGM1Y2FhNDogICAgc3RyICAgIHIxLCBbcjcsICMt
NjBdCiAgICAgICAgMHhiNGM1Y2FhODogICAgYiAgICAgIDB4YjRjNTllYWMKICAgIChTKSBbIDM5
NF0ganRydWUgICAgICAgICAgICAgbG9jOCwgMjQoLT40MTgpCiAgICAgICAgMHhiNGM1Y2FhYzog
ICAgY21uICAgIHIxLCAjNwogICAgICAgIDB4YjRjNWNhYjA6ICAgIGJoaSAgICAweGI0YzVjYWM4
CiAgICAgICAgMHhiNGM1Y2FiMjogICAgdmxkciAgIGQwLCBbcjcsICMtNzJdCiAgICAgICAgMHhi
NGM1Y2FiNjogICAgLmxvbmcgIGVlYjUwYjQwCiAgICAgICAgMHhiNGM1Y2FiYTogICAgdm1ycyAg
IGFwc3JfbnpjdiwgZnBzY3IKICAgICAgICAweGI0YzVjYWJlOiAgICBidnMgICAgMHhiNGM1Y2Fj
NAogICAgICAgIDB4YjRjNWNhYzA6ICAgIGJuZSAgICAweGI0YzU5ZmZlCiAgICAgICAgMHhiNGM1
Y2FjNDogICAgYiAgICAgIDB4YjRjNTlmMDgKICAgICAgICAweGI0YzVjYWM4OiAgICBtb3YgICAg
cjIsIHIwCiAgICAgICAgMHhiNGM1Y2FjYTogICAgbW92ICAgIHIzLCByMQogICAgICAgIDB4YjRj
NWNhY2M6ICAgIG1vdnMgICByMSwgIzAKICAgICAgICAweGI0YzVjYWNlOiAgICBtb3YgICAgcjAs
IHI3CiAgICAgICAgMHhiNGM1Y2FkMDogICAgbW92dyAgIHIxMiwgIzQ5MjA0CiAgICAgICAgMHhi
NGM1Y2FkNDogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1Y2FkODogICAgc3Ry
ICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1Y2FkYzogICAgbW92dyAgIHI2LCAjNDIx
MjgKICAgICAgICAweGI0YzVjYWUwOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRj
NWNhZTQ6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWNhZTY6ICAgIG1vdncgICBy
MTIsICM1NjU2NQogICAgICAgIDB4YjRjNWNhZWE6ICAgIG1vdnQgICByMTIsICM0Njc3NgogICAg
ICAgIDB4YjRjNWNhZWU6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVjYWYwOiAgICBtb3Z3
ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWNhZjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAgICAgMHhiNGM1Y2FmODogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1Y2FmYTog
ICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWNhZmM6ICAgIGJuZSAgICAweGI0YzVlNjgw
CiAgICAgICAgMHhiNGM1Y2IwMDogICAgdHN0ICAgIHIwLCByMAogICAgICAgIDB4YjRjNWNiMDI6
ICAgIGJuZSAgICAweGI0YzU5ZmZlCiAgICAgICAgMHhiNGM1Y2IwNjogICAgYiAgICAgIDB4YjRj
NTlmMDgKICAgIChTKSBbIDQwMF0gY2FsbCAgICAgICAgICAgICAgbG9jOCwgbG9jNywgMSwgMTYg
c3RhdHVzKENvdWxkIFRha2UgU2xvdyBQYXRoKSAgICBPcmlnaW5hbDsgcHJlZGljdGluZyBOb25l
CiAgICAgICAgMHhiNGM1Y2IwYTogICAgbW92dyAgIHIyLCAjNTI2ODAKICAgICAgICAweGI0YzVj
YjBlOiAgICBtb3Z0ICAgcjIsICM0NjI2NAogICAgICAgIDB4YjRjNWNiMTI6ICAgIG1vdncgICBy
MTIsICMxNTMyOQogICAgICAgIDB4YjRjNWNiMTY6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAg
ICAgIDB4YjRjNWNiMWE6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVjYjFjOiAgICBtb3Yg
ICAgc3AsIHI3CiAgICAgICAgMHhiNGM1Y2IxZTogICAgbXZuICAgIHIxMiwgIzE4MwogICAgICAg
IDB4YjRjNWNiMjI6ICAgIG1vdiAgICBzcCwgc3AKICAgICAgICAweGI0YzVjYjI0OiAgICBhZGQg
ICAgc3AsIHIxMgogICAgICAgIDB4YjRjNWNiMjY6ICAgIHN0ciAgICByMCwgW3I3LCAjLTcyXQog
ICAgICAgIDB4YjRjNWNiMmE6ICAgIHN0ciAgICByMSwgW3I3LCAjLTY4XQogICAgICAgIDB4YjRj
NWNiMmU6ICAgIGIgICAgICAweGI0YzU5Zjc2CiAgICAoUykgWyA0MTJdIGp0cnVlICAgICAgICAg
ICAgIGxvYzEyLCA2KC0+NDE4KQogICAgICAgIDB4YjRjNWNiMzI6ICAgIGNtbiAgICByMSwgIzcK
ICAgICAgICAweGI0YzVjYjM2OiAgICBiaGkgICAgMHhiNGM1Y2I0ZQogICAgICAgIDB4YjRjNWNi
Mzg6ICAgIHZsZHIgICBkMCwgW3I3LCAjLTEwNF0KICAgICAgICAweGI0YzVjYjNjOiAgICAubG9u
ZyAgZWViNTBiNDAKICAgICAgICAweGI0YzVjYjQwOiAgICB2bXJzICAgYXBzcl9uemN2LCBmcHNj
cgogICAgICAgIDB4YjRjNWNiNDQ6ICAgIGJ2cyAgICAweGI0YzVjYjRhCiAgICAgICAgMHhiNGM1
Y2I0NjogICAgYm5lICAgIDB4YjRjNTlmZmUKICAgICAgICAweGI0YzVjYjRhOiAgICBiICAgICAg
MHhiNGM1OWZiMgogICAgICAgIDB4YjRjNWNiNGU6ICAgIG1vdiAgICByMiwgcjAKICAgICAgICAw
eGI0YzVjYjUwOiAgICBtb3YgICAgcjMsIHIxCiAgICAgICAgMHhiNGM1Y2I1MjogICAgbW92cyAg
IHIxLCAjMAogICAgICAgIDB4YjRjNWNiNTQ6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0
YzVjYjU2OiAgICBtb3Z3ICAgcjEyLCAjNDkyNzYKICAgICAgICAweGI0YzVjYjVhOiAgICBtb3Z0
ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVjYjVlOiAgICBzdHIgICAgcjEyLCBbcjcsICMy
OF0KICAgICAgICAweGI0YzVjYjYyOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRj
NWNiNjY6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1Y2I2YTogICAgc3RyICAg
IHI3LCBbcjZdCiAgICAgICAgMHhiNGM1Y2I2YzogICAgbW92dyAgIHIxMiwgIzU2NTY1CiAgICAg
ICAgMHhiNGM1Y2I3MDogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAgICAgMHhiNGM1Y2I3NDog
ICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWNiNzY6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAg
ICAgICAgMHhiNGM1Y2I3YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVjYjdl
OiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVjYjgwOiAgICBjbXAgICAgcjIsICMw
CiAgICAgICAgMHhiNGM1Y2I4MjogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVj
Yjg2OiAgICB0c3QgICAgcjAsIHIwCiAgICAgICAgMHhiNGM1Y2I4ODogICAgYm5lICAgIDB4YjRj
NTlmZmUKICAgICAgICAweGI0YzVjYjhjOiAgICBiICAgICAgMHhiNGM1OWZiMgogICAgKFMpIFsg
NDM2XSBwdXRfdG9fc2NvcGUgICAgICBsb2M0LCBleHBlY3RlZFJlc3VsdHMoQGlkMTQpLCBsb2M1
LCAxMDQ4NTc4PERvTm90VGhyb3dJZk5vdEZvdW5kfEdsb2JhbExleGljYWxWYXJ8SW5pdGlhbGl6
YXRpb24+LCA8c3RydWN0dXJlPiwgLTEyNjI1MDEzNjAKICAgICAgICAweGI0YzVjYjkwOiAgICBt
b3Z3ICAgcjEsICM0OTM2OAogICAgICAgIDB4YjRjNWNiOTQ6ICAgIG1vdnQgICByMSwgIzQ1ODIy
CiAgICAgICAgMHhiNGM1Y2I5ODogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWNiOWE6
ICAgIG1vdncgICByMTIsICM0OTM3MgogICAgICAgIDB4YjRjNWNiOWU6ICAgIG1vdnQgICByMTIs
ICM0NTgyMgogICAgICAgIDB4YjRjNWNiYTI6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAg
ICAgIDB4YjRjNWNiYTY6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1Y2JhYTog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVjYmFlOiAgICBzdHIgICAgcjcsIFty
Nl0KICAgICAgICAweGI0YzVjYmIwOiAgICBtb3Z3ICAgcjEyLCAjMTU0MDEKICAgICAgICAweGI0
YzVjYmI0OiAgICBtb3Z0ICAgcjEyLCAjNDY3NzcKICAgICAgICAweGI0YzVjYmI4OiAgICBibHgg
ICAgcjEyCiAgICAgICAgMHhiNGM1Y2JiYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAw
eGI0YzVjYmJlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWNiYzI6ICAgIGxk
ciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWNiYzQ6ICAgIGNtcCAgICByMiwgIzAKICAgICAg
ICAweGI0YzVjYmM2OiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWNiY2E6ICAg
IGIgICAgICAweGI0YzVhMGZhCiAgICAoUykgWyA0NTVdIHB1dF90b19zY29wZSAgICAgIGxvYzQs
IGNvbnN0YW50QmFzZUZ1bmN0aW9ucyhAaWQxNSksIGxvYzUsIDEwNDg1Nzg8RG9Ob3RUaHJvd0lm
Tm90Rm91bmR8R2xvYmFsTGV4aWNhbFZhcnxJbml0aWFsaXphdGlvbj4sIDxzdHJ1Y3R1cmU+LCAt
MTI2MjUwMTM0NAogICAgICAgIDB4YjRjNWNiY2U6ICAgIG1vdncgICByMSwgIzQ5NDQ0CiAgICAg
ICAgMHhiNGM1Y2JkMjogICAgbW92dCAgIHIxLCAjNDU4MjIKICAgICAgICAweGI0YzVjYmQ2OiAg
ICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1Y2JkODogICAgbW92dyAgIHIxMiwgIzQ5NDQ4
CiAgICAgICAgMHhiNGM1Y2JkYzogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1
Y2JlMDogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1Y2JlNDogICAgbW92
dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVjYmU4OiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgICAgIDB4YjRjNWNiZWM6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWNiZWU6
ICAgIG1vdncgICByMTIsICMxNTQwMQogICAgICAgIDB4YjRjNWNiZjI6ICAgIG1vdnQgICByMTIs
ICM0Njc3NwogICAgICAgIDB4YjRjNWNiZjY6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVj
YmY4OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWNiZmM6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1Y2MwMDogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAg
MHhiNGM1Y2MwMjogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWNjMDQ6ICAgIGJuZSAg
ICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1Y2MwODogICAgYiAgICAgIDB4YjRjNWExZDQKICAg
IChTKSBbIDQ3NF0gcHV0X3RvX3Njb3BlICAgICAgbG9jNCwgY29uc3RhbnRFeHBvbmVudEZ1bmN0
aW9ucyhAaWQxNiksIGxvYzUsIDEwNDg1Nzg8RG9Ob3RUaHJvd0lmTm90Rm91bmR8R2xvYmFsTGV4
aWNhbFZhcnxJbml0aWFsaXphdGlvbj4sIDxzdHJ1Y3R1cmU+LCAtMTI2MjUwMTM2OAogICAgICAg
IDB4YjRjNWNjMGM6ICAgIG1vdncgICByMSwgIzQ5NTIwCiAgICAgICAgMHhiNGM1Y2MxMDogICAg
bW92dCAgIHIxLCAjNDU4MjIKICAgICAgICAweGI0YzVjYzE0OiAgICBtb3YgICAgcjAsIHI3CiAg
ICAgICAgMHhiNGM1Y2MxNjogICAgbW92dyAgIHIxMiwgIzQ5NTI0CiAgICAgICAgMHhiNGM1Y2Mx
YTogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1Y2MxZTogICAgc3RyICAgIHIx
MiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1Y2MyMjogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
ICAgICAweGI0YzVjYzI2OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWNjMmE6
ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWNjMmM6ICAgIG1vdncgICByMTIsICMx
NTQwMQogICAgICAgIDB4YjRjNWNjMzA6ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAgICAgIDB4
YjRjNWNjMzQ6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVjYzM2OiAgICBtb3Z3ICAgcjYs
ICM0NjM0OAogICAgICAgIDB4YjRjNWNjM2E6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAg
MHhiNGM1Y2MzZTogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1Y2M0MDogICAgY21w
ICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWNjNDI6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAg
ICAgMHhiNGM1Y2M0NjogICAgYiAgICAgIDB4YjRjNWEyYWUKICAgIChTKSBbIDUxMV0gZ2V0X2Zy
b21fc2NvcGUgICAgbG9jNywgbG9jNiwgY2FzZXMoQGlkNSksIDIwNTA8VGhyb3dJZk5vdEZvdW5k
fEdsb2JhbExleGljYWxWYXJ8Tm90SW5pdGlhbGl6YXRpb24+LCAtMTI2MjUwMTM3NiAgICBwcmVk
aWN0aW5nIEFycmF5CiAgICAgICAgMHhiNGM1Y2M0YTogICAgbW92dyAgIHIxLCAjNDk2NjgKICAg
ICAgICAweGI0YzVjYzRlOiAgICBtb3Z0ICAgcjEsICM0NTgyMgogICAgICAgIDB4YjRjNWNjNTI6
ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVjYzU0OiAgICBtb3Z3ICAgcjEyLCAjNDk2
NzIKICAgICAgICAweGI0YzVjYzU4OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0
YzVjYzVjOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVjYzYwOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWNjNjQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAgICAgMHhiNGM1Y2M2ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1Y2M2
YTogICAgbW92dyAgIHIxMiwgIzEzMTg1CiAgICAgICAgMHhiNGM1Y2M2ZTogICAgbW92dCAgIHIx
MiwgIzQ2Nzc3CiAgICAgICAgMHhiNGM1Y2M3MjogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRj
NWNjNzQ6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1Y2M3ODogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVjYzdjOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAg
ICAweGI0YzVjYzdlOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1Y2M4MDogICAgYm5l
ICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVjYzg0OiAgICBzdHIgICAgcjAsIFtyNywgIy02
NF0KICAgICAgICAweGI0YzVjYzg4OiAgICBzdHIgICAgcjEsIFtyNywgIy02MF0KICAgICAgICAw
eGI0YzVjYzhjOiAgICBiICAgICAgMHhiNGM1YTNhMAogICAgKFMpIFsgNTE5XSBhcnJheV9sZW5n
dGggICAgICBsb2M4LCBsb2M3LCBsZW5ndGgoQGlkMTgpIGxsaW50KGFycmF5X2xlbmd0aCkgICAg
cHJlZGljdGluZyBOb25ib29saW50MzIKICAgICAgICAweGI0YzVjYzkwOiAgICBtb3Z3ICAgcjEy
LCAjMjA4OAogICAgICAgIDB4YjRjNWNjOTQ6ICAgIG1vdnQgICByMTIsICM0NjI3MAogICAgICAg
IDB4YjRjNWNjOTg6ICAgIHN0ciAgICByMTIsIFtzcF0KICAgICAgICAweGI0YzVjYzljOiAgICBt
b3YgICAgcjIsIHIwCiAgICAgICAgMHhiNGM1Y2M5ZTogICAgbW92ICAgIHIzLCByMQogICAgICAg
IDB4YjRjNWNjYTA6ICAgIG1vdncgICByMSwgIzUyNzUyCiAgICAgICAgMHhiNGM1Y2NhNDogICAg
bW92dCAgIHIxLCAjNDYyNjQKICAgICAgICAweGI0YzVjY2E4OiAgICBtb3YgICAgcjAsIHI3CiAg
ICAgICAgMHhiNGM1Y2NhYTogICAgbW92dyAgIHIxMiwgIzQ5NzA0CiAgICAgICAgMHhiNGM1Y2Nh
ZTogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1Y2NiMjogICAgc3RyICAgIHIx
MiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1Y2NiNjogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
ICAgICAweGI0YzVjY2JhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWNjYmU6
ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWNjYzA6ICAgIG1vdncgICByMTIsICMx
ODUxMwogICAgICAgIDB4YjRjNWNjYzQ6ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAgICAgIDB4
YjRjNWNjYzg6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVjY2NhOiAgICBtb3Z3ICAgcjYs
ICM0NjM0OAogICAgICAgIDB4YjRjNWNjY2U6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAg
MHhiNGM1Y2NkMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1Y2NkNDogICAgY21w
ICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWNjZDY6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAg
ICAgMHhiNGM1Y2NkYTogICAgc3RyICAgIHIwLCBbcjcsICMtNzJdCiAgICAgICAgMHhiNGM1Y2Nk
ZTogICAgc3RyICAgIHIxLCBbcjcsICMtNjhdCiAgICAgICAgMHhiNGM1Y2NlMjogICAgYiAgICAg
IDB4YjRjNWEzZGEKICAgIChTKSBbIDUyOF0gam5sZXNzICAgICAgICAgICAgbG9jNSwgbG9jOCwg
NDc4KC0+MTAwNikKICAgICAgICAweGI0YzVjY2U2OiAgICBsZHIgICAgcjAsIFtyNywgIy00OF0K
ICAgICAgICAweGI0YzVjY2VhOiAgICBsZHIgICAgcjEsIFtyNywgIy00NF0KICAgICAgICAweGI0
YzVjY2VlOiAgICBsZHIgICAgcjIsIFtyNywgIy03Ml0KICAgICAgICAweGI0YzVjY2YyOiAgICBs
ZHIgICAgcjMsIFtyNywgIy02OF0KICAgICAgICAweGI0YzVjY2Y2OiAgICBzdHIgICAgcjMsIFtz
cCwgIzRdCiAgICAgICAgMHhiNGM1Y2NmODogICAgc3RyICAgIHIyLCBbc3BdCiAgICAgICAgMHhi
NGM1Y2NmYTogICAgbW92ICAgIHIyLCByMAogICAgICAgIDB4YjRjNWNjZmM6ICAgIG1vdiAgICBy
MywgcjEKICAgICAgICAweGI0YzVjY2ZlOiAgICBtb3ZzICAgcjEsICMwCiAgICAgICAgMHhiNGM1
Y2QwMDogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWNkMDI6ICAgIG1vdncgICByMTIs
ICM0OTc0MAogICAgICAgIDB4YjRjNWNkMDY6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAg
IDB4YjRjNWNkMGE6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWNkMGU6
ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1Y2QxMjogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgICAgICAweGI0YzVjZDE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0
YzVjZDE4OiAgICBtb3Z3ICAgcjEyLCAjNTE4MTcKICAgICAgICAweGI0YzVjZDFjOiAgICBtb3Z0
ICAgcjEyLCAjNDY3NzYKICAgICAgICAweGI0YzVjZDIwOiAgICBibHggICAgcjEyCiAgICAgICAg
MHhiNGM1Y2QyMjogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVjZDI2OiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWNkMmE6ICAgIGxkciAgICByNiwgW3I2XQog
ICAgICAgIDB4YjRjNWNkMmM6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVjZDJlOiAg
ICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWNkMzI6ICAgIHRzdCAgICByMCwgcjAK
ICAgICAgICAweGI0YzVjZDM0OiAgICBiZXEgICAgMHhiNGM1YjM1NAogICAgICAgIDB4YjRjNWNk
Mzg6ICAgIGIgICAgICAweGI0YzVhNDU0CiAgICAoUykgWyA1NDhdIGdldF9mcm9tX3Njb3BlICAg
IGxvYzYsIGxvYzYsIGNhc2VzKEBpZDUpLCAyMDUwPFRocm93SWZOb3RGb3VuZHxHbG9iYWxMZXhp
Y2FsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgLTEyNjI1MDEzNzYgICAgcHJlZGljdGluZyBBcnJh
eQogICAgICAgIDB4YjRjNWNkM2M6ICAgIG1vdncgICByMSwgIzQ5ODE2CiAgICAgICAgMHhiNGM1
Y2Q0MDogICAgbW92dCAgIHIxLCAjNDU4MjIKICAgICAgICAweGI0YzVjZDQ0OiAgICBtb3YgICAg
cjAsIHI3CiAgICAgICAgMHhiNGM1Y2Q0NjogICAgbW92dyAgIHIxMiwgIzQ5ODIwCiAgICAgICAg
MHhiNGM1Y2Q0YTogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1Y2Q0ZTogICAg
c3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1Y2Q1MjogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgICAgICAweGI0YzVjZDU2OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4
YjRjNWNkNWE6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWNkNWM6ICAgIG1vdncg
ICByMTIsICMxMzE4NQogICAgICAgIDB4YjRjNWNkNjA6ICAgIG1vdnQgICByMTIsICM0Njc3Nwog
ICAgICAgIDB4YjRjNWNkNjQ6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVjZDY2OiAgICBt
b3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWNkNmE6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAgICAgMHhiNGM1Y2Q2ZTogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1Y2Q3
MDogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWNkNzI6ICAgIGJuZSAgICAweGI0YzVl
NjgwCiAgICAgICAgMHhiNGM1Y2Q3NjogICAgc3RyICAgIHIwLCBbcjcsICMtNTZdCiAgICAgICAg
MHhiNGM1Y2Q3YTogICAgc3RyICAgIHIxLCBbcjcsICMtNTJdCiAgICAgICAgMHhiNGM1Y2Q3ZTog
ICAgYiAgICAgIDB4YjRjNWE0ZDYKICAgIChTKSBbIDU2NF0gZ2V0X2J5X3ZhbCAgICAgICAgbG9j
NiwgbG9jNiwgbG9jNyAgICBBcnJheVdpdGhDb250aWd1b3VzLCBPcmlnaW5hbDsgcHJlZGljdGlu
ZyBOb25pbnRhc2RvdWJsZQogICAgICAgIDB4YjRjNWNkODI6ICAgIGIgICAgICAweGI0YzVjZGFl
CiAgICAgICAgMHhiNGM1Y2Q4NDogICAgbGRyICAgIHI2LCBbcjBdCiAgICAgICAgMHhiNGM1Y2Q4
NjogICAgbW92dyAgIHIxMiwgIzMyNDE2CiAgICAgICAgMHhiNGM1Y2Q4YTogICAgbW92dCAgIHIx
MiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1Y2Q4ZTogICAgY21wICAgIHI2LCByMTIKICAgICAgICAw
eGI0YzVjZDkyOiAgICBibmUgICAgMHhiNGM1Y2RhZQogICAgICAgIDB4YjRjNWNkOTQ6ICAgIG1v
dncgICByMTIsICMxNjIyNQogICAgICAgIDB4YjRjNWNkOTg6ICAgIG1vdnQgICByMTIsICM0Njgz
MgogICAgICAgIDB4YjRjNWNkOWM6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVjZDllOiAg
ICB0c3QgICAgcjAsIHIwCiAgICAgICAgMHhiNGM1Y2RhMDogICAgYmVxICAgIDB4YjRjNWNkYWUK
ICAgICAgICAweGI0YzVjZGEyOiAgICBzdHIgICAgcjAsIFtyNywgIy01Nl0KICAgICAgICAweGI0
YzVjZGE2OiAgICBzdHIgICAgcjEsIFtyNywgIy01Ml0KICAgICAgICAweGI0YzVjZGFhOiAgICBi
ICAgICAgMHhiNGM1YTU0ZQogICAgICAgIDB4YjRjNWNkYWU6ICAgIGxkciAgICByMCwgW3I3LCAj
LTU2XQogICAgICAgIDB4YjRjNWNkYjI6ICAgIGxkciAgICByMSwgW3I3LCAjLTUyXQogICAgICAg
IDB4YjRjNWNkYjY6ICAgIGxkciAgICByMiwgW3I3LCAjLTY0XQogICAgICAgIDB4YjRjNWNkYmE6
ICAgIGxkciAgICByMywgW3I3LCAjLTYwXQogICAgICAgIDB4YjRjNWNkYmU6ICAgIG1vdncgICBy
MTIsICMyNzQ4OAogICAgICAgIDB4YjRjNWNkYzI6ICAgIG1vdnQgICByMTIsICM0NjI3MAogICAg
ICAgIDB4YjRjNWNkYzY6ICAgIHN0ciAgICByMTIsIFtzcCwgIzhdCiAgICAgICAgMHhiNGM1Y2Rj
YTogICAgc3RyICAgIHIzLCBbc3AsICM0XQogICAgICAgIDB4YjRjNWNkY2M6ICAgIHN0ciAgICBy
MiwgW3NwXQogICAgICAgIDB4YjRjNWNkY2U6ICAgIG1vdiAgICByMiwgcjAKICAgICAgICAweGI0
YzVjZGQwOiAgICBtb3YgICAgcjMsIHIxCiAgICAgICAgMHhiNGM1Y2RkMjogICAgbW92cyAgIHIx
LCAjMAogICAgICAgIDB4YjRjNWNkZDQ6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVj
ZGQ2OiAgICBtb3Z3ICAgcjEyLCAjNDk4ODQKICAgICAgICAweGI0YzVjZGRhOiAgICBtb3Z0ICAg
cjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVjZGRlOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0K
ICAgICAgICAweGI0YzVjZGUyOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWNk
ZTY6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1Y2RlYTogICAgc3RyICAgIHI3
LCBbcjZdCiAgICAgICAgMHhiNGM1Y2RlYzogICAgbW92dyAgIHIxMiwgIzEzMDMzCiAgICAgICAg
MHhiNGM1Y2RmMDogICAgbW92dCAgIHIxMiwgIzQ2Nzc3CiAgICAgICAgMHhiNGM1Y2RmNDogICAg
Ymx4ICAgIHIxMgogICAgICAgIDB4YjRjNWNkZjY6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAg
ICAgMHhiNGM1Y2RmYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVjZGZlOiAg
ICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVjZTAwOiAgICBjbXAgICAgcjIsICMwCiAg
ICAgICAgMHhiNGM1Y2UwMjogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVjZTA2
OiAgICBzdHIgICAgcjAsIFtyNywgIy01Nl0KICAgICAgICAweGI0YzVjZTBhOiAgICBzdHIgICAg
cjEsIFtyNywgIy01Ml0KICAgICAgICAweGI0YzVjZTBlOiAgICBiICAgICAgMHhiNGM1YTU0ZQog
ICAgKFMpIFsgNTg0XSBnZXRfZnJvbV9zY29wZSAgICBsb2M2LCBsb2M2LCBleHBlY3RlZFJlc3Vs
dHMoQGlkMTQpLCAyMDUwPFRocm93SWZOb3RGb3VuZHxHbG9iYWxMZXhpY2FsVmFyfE5vdEluaXRp
YWxpemF0aW9uPiwgLTEyNjI1MDEzNjAgICAgcHJlZGljdGluZyBBcnJheQogICAgICAgIDB4YjRj
NWNlMTI6ICAgIG1vdncgICByMSwgIzQ5OTYwCiAgICAgICAgMHhiNGM1Y2UxNjogICAgbW92dCAg
IHIxLCAjNDU4MjIKICAgICAgICAweGI0YzVjZTFhOiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAg
MHhiNGM1Y2UxYzogICAgbW92dyAgIHIxMiwgIzQ5OTY0CiAgICAgICAgMHhiNGM1Y2UyMDogICAg
bW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1Y2UyNDogICAgc3RyICAgIHIxMiwgW3I3
LCAjMjhdCiAgICAgICAgMHhiNGM1Y2UyODogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAw
eGI0YzVjZTJjOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWNlMzA6ICAgIHN0
ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWNlMzI6ICAgIG1vdncgICByMTIsICMxMzE4NQog
ICAgICAgIDB4YjRjNWNlMzY6ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAgICAgIDB4YjRjNWNl
M2E6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVjZTNjOiAgICBtb3Z3ICAgcjYsICM0NjM0
OAogICAgICAgIDB4YjRjNWNlNDA6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1
Y2U0NDogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1Y2U0NjogICAgY21wICAgIHIy
LCAjMAogICAgICAgIDB4YjRjNWNlNDg6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhi
NGM1Y2U0YzogICAgc3RyICAgIHIwLCBbcjcsICMtNTZdCiAgICAgICAgMHhiNGM1Y2U1MDogICAg
c3RyICAgIHIxLCBbcjcsICMtNTJdCiAgICAgICAgMHhiNGM1Y2U1NDogICAgYiAgICAgIDB4YjRj
NWE1ZTQKICAgIChTKSBbIDYwNV0gcHV0X2J5X3ZhbCAgICAgICAgbG9jNiwgbG9jNywgbG9jMyAg
ICBBcnJheVdpdGhDb250aWd1b3VzLCBPcmlnaW5hbAogICAgICAgIDB4YjRjNWNlNTg6ICAgIGIg
ICAgICAweGI0YzVjZTZhCiAgICAgICAgMHhiNGM1Y2U1YTogICAgbW92ICAgIHIxMiwgIzEKICAg
ICAgICAweGI0YzVjZTVlOiAgICBtb3Z3ICAgcjYsICM2MzU2MQogICAgICAgIDB4YjRjNWNlNjI6
ICAgIG1vdnQgICByNiwgIzQ2MjY1CiAgICAgICAgMHhiNGM1Y2U2NjogICAgLmxvbmcgIGY4ODZj
MDAwCiAgICAgICAgMHhiNGM1Y2U2YTogICAgbGRyICAgIHIxLCBbcjcsICMtNTZdCiAgICAgICAg
MHhiNGM1Y2U2ZTogICAgbGRyICAgIHIyLCBbcjcsICMtNTJdCiAgICAgICAgMHhiNGM1Y2U3Mjog
ICAgbGRyICAgIHIwLCBbcjcsICMtNjRdCiAgICAgICAgMHhiNGM1Y2U3NjogICAgbGRyICAgIHIz
LCBbcjcsICMtNjBdCiAgICAgICAgMHhiNGM1Y2U3YTogICAgbGRyICAgIHI4LCBbcjcsICMtMzJd
CiAgICAgICAgMHhiNGM1Y2U3ZTogICAgbGRyICAgIHI5LCBbcjcsICMtMjhdCiAgICAgICAgMHhi
NGM1Y2U4MjogICAgbW92dyAgIHIxMiwgIzI3NTQ0CiAgICAgICAgMHhiNGM1Y2U4NjogICAgbW92
dCAgIHIxMiwgIzQ2MjcwCiAgICAgICAgMHhiNGM1Y2U4YTogICAgc3RyICAgIHIxMiwgW3NwLCAj
MTZdCiAgICAgICAgMHhiNGM1Y2U4ZTogICAgc3RyICAgIHI5LCBbc3AsICMxMl0KICAgICAgICAw
eGI0YzVjZTkyOiAgICBzdHIgICAgcjgsIFtzcCwgIzhdCiAgICAgICAgMHhiNGM1Y2U5NjogICAg
c3RyICAgIHIzLCBbc3AsICM0XQogICAgICAgIDB4YjRjNWNlOTg6ICAgIHN0ciAgICByMCwgW3Nw
XQogICAgICAgIDB4YjRjNWNlOWE6ICAgIG1vdiAgICByMywgcjIKICAgICAgICAweGI0YzVjZTlj
OiAgICBtb3YgICAgcjIsIHIxCiAgICAgICAgMHhiNGM1Y2U5ZTogICAgbW92cyAgIHIxLCAjMAog
ICAgICAgIDB4YjRjNWNlYTA6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVjZWEyOiAg
ICBtb3Z3ICAgcjEyLCAjNTAwNDgKICAgICAgICAweGI0YzVjZWE2OiAgICBtb3Z0ICAgcjEyLCAj
NDU4MjIKICAgICAgICAweGI0YzVjZWFhOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAg
ICAweGI0YzVjZWFlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWNlYjI6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1Y2ViNjogICAgc3RyICAgIHI3LCBbcjZd
CiAgICAgICAgMHhiNGM1Y2ViODogICAgbW92dyAgIHIxMiwgIzM1NjI1CiAgICAgICAgMHhiNGM1
Y2ViYzogICAgbW92dCAgIHIxMiwgIzQ2Nzc3CiAgICAgICAgMHhiNGM1Y2VjMDogICAgYmx4ICAg
IHIxMgogICAgICAgIDB4YjRjNWNlYzI6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhi
NGM1Y2VjNjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVjZWNhOiAgICBsZHIg
ICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVjZWNjOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAg
MHhiNGM1Y2VjZTogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVjZWQyOiAgICBi
ICAgICAgMHhiNGM1YTcxMgogICAgKFMpIFsgNjI2XSBnZXRfZnJvbV9zY29wZSAgICBsb2M5LCBs
b2M4LCBjYXNlcyhAaWQ1KSwgMjA1MDxUaHJvd0lmTm90Rm91bmR8R2xvYmFsTGV4aWNhbFZhcnxO
b3RJbml0aWFsaXphdGlvbj4sIC0xMjYyNTAxMzc2ICAgIHByZWRpY3RpbmcgQXJyYXkKICAgICAg
ICAweGI0YzVjZWQ2OiAgICBtb3Z3ICAgcjEsICM1MDEyOAogICAgICAgIDB4YjRjNWNlZGE6ICAg
IG1vdnQgICByMSwgIzQ1ODIyCiAgICAgICAgMHhiNGM1Y2VkZTogICAgbW92ICAgIHIwLCByNwog
ICAgICAgIDB4YjRjNWNlZTA6ICAgIG1vdncgICByMTIsICM1MDEzMgogICAgICAgIDB4YjRjNWNl
ZTQ6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWNlZTg6ICAgIHN0ciAgICBy
MTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWNlZWM6ICAgIG1vdncgICByNiwgIzQyMTI4CiAg
ICAgICAgMHhiNGM1Y2VmMDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVjZWY0
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVjZWY2OiAgICBtb3Z3ICAgcjEyLCAj
MTMxODUKICAgICAgICAweGI0YzVjZWZhOiAgICBtb3Z0ICAgcjEyLCAjNDY3NzcKICAgICAgICAw
eGI0YzVjZWZlOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1Y2YwMDogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgICAgICAweGI0YzVjZjA0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAg
IDB4YjRjNWNmMDg6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWNmMGE6ICAgIGNt
cCAgICByMiwgIzAKICAgICAgICAweGI0YzVjZjBjOiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAg
ICAgIDB4YjRjNWNmMTA6ICAgIHN0ciAgICByMCwgW3I3LCAjLTgwXQogICAgICAgIDB4YjRjNWNm
MTQ6ICAgIHN0ciAgICByMSwgW3I3LCAjLTc2XQogICAgICAgIDB4YjRjNWNmMTg6ICAgIGIgICAg
ICAweGI0YzVhNzdhCiAgICAoUykgWyA2MzRdIGFycmF5X2xlbmd0aCAgICAgIGxvYzEwLCBsb2M5
LCBsZW5ndGgoQGlkMTgpIGxsaW50KGFycmF5X2xlbmd0aCkgICAgcHJlZGljdGluZyBOb25ib29s
aW50MzIKICAgICAgICAweGI0YzVjZjFjOiAgICBtb3Z3ICAgcjEyLCAjMjA4OAogICAgICAgIDB4
YjRjNWNmMjA6ICAgIG1vdnQgICByMTIsICM0NjI3MAogICAgICAgIDB4YjRjNWNmMjQ6ICAgIHN0
ciAgICByMTIsIFtzcF0KICAgICAgICAweGI0YzVjZjI4OiAgICBtb3YgICAgcjIsIHIwCiAgICAg
ICAgMHhiNGM1Y2YyYTogICAgbW92ICAgIHIzLCByMQogICAgICAgIDB4YjRjNWNmMmM6ICAgIG1v
dncgICByMSwgIzUyODI0CiAgICAgICAgMHhiNGM1Y2YzMDogICAgbW92dCAgIHIxLCAjNDYyNjQK
ICAgICAgICAweGI0YzVjZjM0OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1Y2YzNjog
ICAgbW92dyAgIHIxMiwgIzUwMTY0CiAgICAgICAgMHhiNGM1Y2YzYTogICAgbW92dCAgIHIxMiwg
IzQ1ODIyCiAgICAgICAgMHhiNGM1Y2YzZTogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAg
ICAgMHhiNGM1Y2Y0MjogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVjZjQ2OiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWNmNGE6ICAgIHN0ciAgICByNywgW3I2
XQogICAgICAgIDB4YjRjNWNmNGM6ICAgIG1vdncgICByMTIsICMxODUxMwogICAgICAgIDB4YjRj
NWNmNTA6ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAgICAgIDB4YjRjNWNmNTQ6ICAgIGJseCAg
ICByMTIKICAgICAgICAweGI0YzVjZjU2OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4
YjRjNWNmNWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1Y2Y1ZTogICAgbGRy
ICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1Y2Y2MDogICAgY21wICAgIHIyLCAjMAogICAgICAg
IDB4YjRjNWNmNjI6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1Y2Y2NjogICAg
c3RyICAgIHIwLCBbcjcsICMtODhdCiAgICAgICAgMHhiNGM1Y2Y2YTogICAgc3RyICAgIHIxLCBb
cjcsICMtODRdCiAgICAgICAgMHhiNGM1Y2Y2ZTogICAgYiAgICAgIDB4YjRjNWE3YjQKICAgIChT
KSBbIDY0M10gam5sZXNzICAgICAgICAgICAgbG9jNywgbG9jMTAsIDE0MygtPjc4NikKICAgICAg
ICAweGI0YzVjZjcyOiAgICBsZHIgICAgcjAsIFtyNywgIy02NF0KICAgICAgICAweGI0YzVjZjc2
OiAgICBsZHIgICAgcjEsIFtyNywgIy02MF0KICAgICAgICAweGI0YzVjZjdhOiAgICBsZHIgICAg
cjIsIFtyNywgIy04OF0KICAgICAgICAweGI0YzVjZjdlOiAgICBsZHIgICAgcjMsIFtyNywgIy04
NF0KICAgICAgICAweGI0YzVjZjgyOiAgICBzdHIgICAgcjMsIFtzcCwgIzRdCiAgICAgICAgMHhi
NGM1Y2Y4NDogICAgc3RyICAgIHIyLCBbc3BdCiAgICAgICAgMHhiNGM1Y2Y4NjogICAgbW92ICAg
IHIyLCByMAogICAgICAgIDB4YjRjNWNmODg6ICAgIG1vdiAgICByMywgcjEKICAgICAgICAweGI0
YzVjZjhhOiAgICBtb3ZzICAgcjEsICMwCiAgICAgICAgMHhiNGM1Y2Y4YzogICAgbW92ICAgIHIw
LCByNwogICAgICAgIDB4YjRjNWNmOGU6ICAgIG1vdncgICByMTIsICM1MDIwMAogICAgICAgIDB4
YjRjNWNmOTI6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWNmOTY6ICAgIHN0
ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWNmOWE6ICAgIG1vdncgICByNiwgIzQy
MTI4CiAgICAgICAgMHhiNGM1Y2Y5ZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0
YzVjZmEyOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVjZmE0OiAgICBtb3Z3ICAg
cjEyLCAjNTE4MTcKICAgICAgICAweGI0YzVjZmE4OiAgICBtb3Z0ICAgcjEyLCAjNDY3NzYKICAg
ICAgICAweGI0YzVjZmFjOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1Y2ZhZTogICAgbW92
dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVjZmIyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgICAgIDB4YjRjNWNmYjY6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWNmYjg6
ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVjZmJhOiAgICBibmUgICAgMHhiNGM1ZTY4
MAogICAgICAgIDB4YjRjNWNmYmU6ICAgIHRzdCAgICByMCwgcjAKICAgICAgICAweGI0YzVjZmMw
OiAgICBiZXEgICAgMHhiNGM1YWM5OAogICAgICAgIDB4YjRjNWNmYzQ6ICAgIGIgICAgICAweGI0
YzVhODJlCiAgICAoUykgWyA2NThdIGdldF9mcm9tX3Njb3BlICAgIGxvYzksIGxvYzgsIGNhc2Vz
KEBpZDUpLCAyMDUwPFRocm93SWZOb3RGb3VuZHxHbG9iYWxMZXhpY2FsVmFyfE5vdEluaXRpYWxp
emF0aW9uPiwgLTEyNjI1MDEzNzYgICAgcHJlZGljdGluZyBBcnJheQogICAgICAgIDB4YjRjNWNm
Yzg6ICAgIG1vdncgICByMSwgIzUwMjU2CiAgICAgICAgMHhiNGM1Y2ZjYzogICAgbW92dCAgIHIx
LCAjNDU4MjIKICAgICAgICAweGI0YzVjZmQwOiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhi
NGM1Y2ZkMjogICAgbW92dyAgIHIxMiwgIzUwMjYwCiAgICAgICAgMHhiNGM1Y2ZkNjogICAgbW92
dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1Y2ZkYTogICAgc3RyICAgIHIxMiwgW3I3LCAj
MjhdCiAgICAgICAgMHhiNGM1Y2ZkZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0
YzVjZmUyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWNmZTY6ICAgIHN0ciAg
ICByNywgW3I2XQogICAgICAgIDB4YjRjNWNmZTg6ICAgIG1vdncgICByMTIsICMxMzE4NQogICAg
ICAgIDB4YjRjNWNmZWM6ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAgICAgIDB4YjRjNWNmZjA6
ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVjZmYyOiAgICBtb3Z3ICAgcjYsICM0NjM0OAog
ICAgICAgIDB4YjRjNWNmZjY6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1Y2Zm
YTogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1Y2ZmYzogICAgY21wICAgIHIyLCAj
MAogICAgICAgIDB4YjRjNWNmZmU6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1
ZDAwMjogICAgc3RyICAgIHIwLCBbcjcsICMtODBdCiAgICAgICAgMHhiNGM1ZDAwNjogICAgc3Ry
ICAgIHIxLCBbcjcsICMtNzZdCiAgICAgICAgMHhiNGM1ZDAwYTogICAgYiAgICAgIDB4YjRjNWE4
NzYKICAgIChTKSBbIDY2Nl0gZ2V0X2J5X3ZhbCAgICAgICAgbG9jNywgbG9jOSwgbG9jNiAgICBB
cnJheVdpdGhDb250aWd1b3VzLCBPcmlnaW5hbDsgcHJlZGljdGluZyBOb25pbnRhc2RvdWJsZQog
ICAgICAgIDB4YjRjNWQwMGU6ICAgIGIgICAgICAweGI0YzVkMDNhCiAgICAgICAgMHhiNGM1ZDAx
MDogICAgbGRyICAgIHI2LCBbcjBdCiAgICAgICAgMHhiNGM1ZDAxMjogICAgbW92dyAgIHIxMiwg
IzMyNDE2CiAgICAgICAgMHhiNGM1ZDAxNjogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAgICAg
MHhiNGM1ZDAxYTogICAgY21wICAgIHI2LCByMTIKICAgICAgICAweGI0YzVkMDFlOiAgICBibmUg
ICAgMHhiNGM1ZDAzYQogICAgICAgIDB4YjRjNWQwMjA6ICAgIG1vdncgICByMTIsICMxNjIyNQog
ICAgICAgIDB4YjRjNWQwMjQ6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgICAgIDB4YjRjNWQw
Mjg6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVkMDJhOiAgICB0c3QgICAgcjAsIHIwCiAg
ICAgICAgMHhiNGM1ZDAyYzogICAgYmVxICAgIDB4YjRjNWQwM2EKICAgICAgICAweGI0YzVkMDJl
OiAgICBzdHIgICAgcjAsIFtyNywgIy02NF0KICAgICAgICAweGI0YzVkMDMyOiAgICBzdHIgICAg
cjEsIFtyNywgIy02MF0KICAgICAgICAweGI0YzVkMDM2OiAgICBiICAgICAgMHhiNGM1YThkYQog
ICAgICAgIDB4YjRjNWQwM2E6ICAgIGxkciAgICByMCwgW3I3LCAjLTgwXQogICAgICAgIDB4YjRj
NWQwM2U6ICAgIGxkciAgICByMSwgW3I3LCAjLTc2XQogICAgICAgIDB4YjRjNWQwNDI6ICAgIGxk
ciAgICByMiwgW3I3LCAjLTU2XQogICAgICAgIDB4YjRjNWQwNDY6ICAgIGxkciAgICByMywgW3I3
LCAjLTUyXQogICAgICAgIDB4YjRjNWQwNGE6ICAgIG1vdncgICByMTIsICMyNzYwMAogICAgICAg
IDB4YjRjNWQwNGU6ICAgIG1vdnQgICByMTIsICM0NjI3MAogICAgICAgIDB4YjRjNWQwNTI6ICAg
IHN0ciAgICByMTIsIFtzcCwgIzhdCiAgICAgICAgMHhiNGM1ZDA1NjogICAgc3RyICAgIHIzLCBb
c3AsICM0XQogICAgICAgIDB4YjRjNWQwNTg6ICAgIHN0ciAgICByMiwgW3NwXQogICAgICAgIDB4
YjRjNWQwNWE6ICAgIG1vdiAgICByMiwgcjAKICAgICAgICAweGI0YzVkMDVjOiAgICBtb3YgICAg
cjMsIHIxCiAgICAgICAgMHhiNGM1ZDA1ZTogICAgbW92cyAgIHIxLCAjMAogICAgICAgIDB4YjRj
NWQwNjA6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVkMDYyOiAgICBtb3Z3ICAgcjEy
LCAjNTAyOTIKICAgICAgICAweGI0YzVkMDY2OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAg
ICAweGI0YzVkMDZhOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVkMDZl
OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWQwNzI6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAgICAgMHhiNGM1ZDA3NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhi
NGM1ZDA3ODogICAgbW92dyAgIHIxMiwgIzEzMDMzCiAgICAgICAgMHhiNGM1ZDA3YzogICAgbW92
dCAgIHIxMiwgIzQ2Nzc3CiAgICAgICAgMHhiNGM1ZDA4MDogICAgYmx4ICAgIHIxMgogICAgICAg
IDB4YjRjNWQwODI6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1ZDA4NjogICAg
bW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVkMDhhOiAgICBsZHIgICAgcjYsIFtyNl0K
ICAgICAgICAweGI0YzVkMDhjOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1ZDA4ZTog
ICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVkMDkyOiAgICBzdHIgICAgcjAsIFty
NywgIy02NF0KICAgICAgICAweGI0YzVkMDk2OiAgICBzdHIgICAgcjEsIFtyNywgIy02MF0KICAg
ICAgICAweGI0YzVkMDlhOiAgICBiICAgICAgMHhiNGM1YThkYQogICAgKFMpIFsgNjc5XSBnZXRf
ZnJvbV9zY29wZSAgICBsb2M5LCBsb2M5LCBleHBlY3RlZFJlc3VsdHMoQGlkMTQpLCAyMDUwPFRo
cm93SWZOb3RGb3VuZHxHbG9iYWxMZXhpY2FsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgLTEyNjI1
MDEzNjAgICAgcHJlZGljdGluZyBBcnJheQogICAgICAgIDB4YjRjNWQwOWU6ICAgIG1vdncgICBy
MSwgIzUwMzQwCiAgICAgICAgMHhiNGM1ZDBhMjogICAgbW92dCAgIHIxLCAjNDU4MjIKICAgICAg
ICAweGI0YzVkMGE2OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1ZDBhODogICAgbW92
dyAgIHIxMiwgIzUwMzQ0CiAgICAgICAgMHhiNGM1ZDBhYzogICAgbW92dCAgIHIxMiwgIzQ1ODIy
CiAgICAgICAgMHhiNGM1ZDBiMDogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhi
NGM1ZDBiNDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVkMGI4OiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWQwYmM6ICAgIHN0ciAgICByNywgW3I2XQogICAg
ICAgIDB4YjRjNWQwYmU6ICAgIG1vdncgICByMTIsICMxMzE4NQogICAgICAgIDB4YjRjNWQwYzI6
ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAgICAgIDB4YjRjNWQwYzY6ICAgIGJseCAgICByMTIK
ICAgICAgICAweGI0YzVkMGM4OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWQw
Y2M6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZDBkMDogICAgbGRyICAgIHI2
LCBbcjZdCiAgICAgICAgMHhiNGM1ZDBkMjogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRj
NWQwZDQ6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1ZDBkODogICAgc3RyICAg
IHIwLCBbcjcsICMtODBdCiAgICAgICAgMHhiNGM1ZDBkYzogICAgc3RyICAgIHIxLCBbcjcsICMt
NzZdCiAgICAgICAgMHhiNGM1ZDBlMDogICAgYiAgICAgIDB4YjRjNWE5MTIKICAgIChTKSBbIDY5
NV0gZ2V0X2J5X3ZhbCAgICAgICAgbG9jOCwgbG9jOSwgbG9jMTAgICAgQXJyYXlXaXRoQ29udGln
dW91cywgT3JpZ2luYWw7IHByZWRpY3RpbmcgQXJyYXkKICAgICAgICAweGI0YzVkMGU0OiAgICBi
ICAgICAgMHhiNGM1ZDExMAogICAgICAgIDB4YjRjNWQwZTY6ICAgIGxkciAgICByNiwgW3IwXQog
ICAgICAgIDB4YjRjNWQwZTg6ICAgIG1vdncgICByMTIsICMzMjQxNgogICAgICAgIDB4YjRjNWQw
ZWM6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgICAgIDB4YjRjNWQwZjA6ICAgIGNtcCAgICBy
NiwgcjEyCiAgICAgICAgMHhiNGM1ZDBmNDogICAgYm5lICAgIDB4YjRjNWQxMTAKICAgICAgICAw
eGI0YzVkMGY2OiAgICBtb3Z3ICAgcjEyLCAjMTYyMjUKICAgICAgICAweGI0YzVkMGZhOiAgICBt
b3Z0ICAgcjEyLCAjNDY4MzIKICAgICAgICAweGI0YzVkMGZlOiAgICBibHggICAgcjEyCiAgICAg
ICAgMHhiNGM1ZDEwMDogICAgdHN0ICAgIHIwLCByMAogICAgICAgIDB4YjRjNWQxMDI6ICAgIGJl
cSAgICAweGI0YzVkMTEwCiAgICAgICAgMHhiNGM1ZDEwNDogICAgc3RyICAgIHIwLCBbcjcsICMt
NzJdCiAgICAgICAgMHhiNGM1ZDEwODogICAgc3RyICAgIHIxLCBbcjcsICMtNjhdCiAgICAgICAg
MHhiNGM1ZDEwYzogICAgYiAgICAgIDB4YjRjNWE5OGEKICAgICAgICAweGI0YzVkMTEwOiAgICBs
ZHIgICAgcjAsIFtyNywgIy04MF0KICAgICAgICAweGI0YzVkMTE0OiAgICBsZHIgICAgcjEsIFty
NywgIy03Nl0KICAgICAgICAweGI0YzVkMTE4OiAgICBsZHIgICAgcjIsIFtyNywgIy04OF0KICAg
ICAgICAweGI0YzVkMTFjOiAgICBsZHIgICAgcjMsIFtyNywgIy04NF0KICAgICAgICAweGI0YzVk
MTIwOiAgICBtb3Z3ICAgcjEyLCAjMjc2NTYKICAgICAgICAweGI0YzVkMTI0OiAgICBtb3Z0ICAg
cjEyLCAjNDYyNzAKICAgICAgICAweGI0YzVkMTI4OiAgICBzdHIgICAgcjEyLCBbc3AsICM4XQog
ICAgICAgIDB4YjRjNWQxMmM6ICAgIHN0ciAgICByMywgW3NwLCAjNF0KICAgICAgICAweGI0YzVk
MTJlOiAgICBzdHIgICAgcjIsIFtzcF0KICAgICAgICAweGI0YzVkMTMwOiAgICBtb3YgICAgcjIs
IHIwCiAgICAgICAgMHhiNGM1ZDEzMjogICAgbW92ICAgIHIzLCByMQogICAgICAgIDB4YjRjNWQx
MzQ6ICAgIG1vdnMgICByMSwgIzAKICAgICAgICAweGI0YzVkMTM2OiAgICBtb3YgICAgcjAsIHI3
CiAgICAgICAgMHhiNGM1ZDEzODogICAgbW92dyAgIHIxMiwgIzUwNDA4CiAgICAgICAgMHhiNGM1
ZDEzYzogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZDE0MDogICAgc3RyICAg
IHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1ZDE0NDogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgICAgICAweGI0YzVkMTQ4OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWQx
NGM6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWQxNGU6ICAgIG1vdncgICByMTIs
ICMxMzAzMwogICAgICAgIDB4YjRjNWQxNTI6ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAgICAg
IDB4YjRjNWQxNTY6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVkMTU4OiAgICBtb3Z3ICAg
cjYsICM0NjM0OAogICAgICAgIDB4YjRjNWQxNWM6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAg
ICAgMHhiNGM1ZDE2MDogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1ZDE2MjogICAg
Y21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWQxNjQ6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAg
ICAgICAgMHhiNGM1ZDE2ODogICAgc3RyICAgIHIwLCBbcjcsICMtNzJdCiAgICAgICAgMHhiNGM1
ZDE2YzogICAgc3RyICAgIHIxLCBbcjcsICMtNjhdCiAgICAgICAgMHhiNGM1ZDE3MDogICAgYiAg
ICAgIDB4YjRjNWE5OGEKICAgIChTKSBbIDcxMV0gZ2V0X2Zyb21fc2NvcGUgICAgbG9jMTMsIGxv
YzEzLCBNYXRoKEBpZDIwKSwgMjA0ODxUaHJvd0lmTm90Rm91bmR8R2xvYmFsUHJvcGVydHl8Tm90
SW5pdGlhbGl6YXRpb24+LCAxMjcgICAgcHJlZGljdGluZyBPdGhlcm9iagogICAgICAgIDB4YjRj
NWQxNzQ6ICAgIG1vdncgICByMSwgIzUwNDY4CiAgICAgICAgMHhiNGM1ZDE3ODogICAgbW92dCAg
IHIxLCAjNDU4MjIKICAgICAgICAweGI0YzVkMTdjOiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAg
MHhiNGM1ZDE3ZTogICAgbW92dyAgIHIxMiwgIzUwNDcyCiAgICAgICAgMHhiNGM1ZDE4MjogICAg
bW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZDE4NjogICAgc3RyICAgIHIxMiwgW3I3
LCAjMjhdCiAgICAgICAgMHhiNGM1ZDE4YTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAw
eGI0YzVkMThlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWQxOTI6ICAgIHN0
ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWQxOTQ6ICAgIG1vdncgICByMTIsICMxMzE4NQog
ICAgICAgIDB4YjRjNWQxOTg6ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAgICAgIDB4YjRjNWQx
OWM6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVkMTllOiAgICBtb3Z3ICAgcjYsICM0NjM0
OAogICAgICAgIDB4YjRjNWQxYTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1
ZDFhNjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1ZDFhODogICAgY21wICAgIHIy
LCAjMAogICAgICAgIDB4YjRjNWQxYWE6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhi
NGM1ZDFhZTogICAgc3RyICAgIHIwLCBbcjcsICMtMTEyXQogICAgICAgIDB4YjRjNWQxYjI6ICAg
IHN0ciAgICByMSwgW3I3LCAjLTEwOF0KICAgICAgICAweGI0YzVkMWI2OiAgICBiICAgICAgMHhi
NGM1YTlmNAogICAgKFMpIFsgNzE5XSBnZXRfYnlfaWQgICAgICAgICBsb2MzLCBsb2MxMywgcG93
KEBpZDIxKSBsbGludChzdHJ1Y3QgPSAweGI0N2MyYWEwIChvZmZzZXQgPSAxMzMpKSAgICBwcmVk
aWN0aW5nIEZ1bmN0aW9uCiAgICAgICAgMHhiNGM1ZDFiYTogICAgbW92dyAgIHIxMiwgIzI3Mjg4
CiAgICAgICAgMHhiNGM1ZDFiZTogICAgbW92dCAgIHIxMiwgIzQ2MjY3CiAgICAgICAgMHhiNGM1
ZDFjMjogICAgc3RyICAgIHIxMiwgW3NwXQogICAgICAgIDB4YjRjNWQxYzY6ICAgIG1vdiAgICBy
MiwgcjAKICAgICAgICAweGI0YzVkMWM4OiAgICBtb3YgICAgcjMsIHIxCiAgICAgICAgMHhiNGM1
ZDFjYTogICAgbW92dyAgIHIxLCAjNTI4OTYKICAgICAgICAweGI0YzVkMWNlOiAgICBtb3Z0ICAg
cjEsICM0NjI2NAogICAgICAgIDB4YjRjNWQxZDI6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAw
eGI0YzVkMWQ0OiAgICBtb3Z3ICAgcjEyLCAjNTA1MDQKICAgICAgICAweGI0YzVkMWQ4OiAgICBt
b3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVkMWRjOiAgICBzdHIgICAgcjEyLCBbcjcs
ICMyOF0KICAgICAgICAweGI0YzVkMWUwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4
YjRjNWQxZTQ6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZDFlODogICAgc3Ry
ICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1ZDFlYTogICAgbW92dyAgIHIxMiwgIzE4NTEzCiAg
ICAgICAgMHhiNGM1ZDFlZTogICAgbW92dCAgIHIxMiwgIzQ2Nzc3CiAgICAgICAgMHhiNGM1ZDFm
MjogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWQxZjQ6ICAgIG1vdncgICByNiwgIzQ2MzQ4
CiAgICAgICAgMHhiNGM1ZDFmODogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVk
MWZjOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVkMWZlOiAgICBjbXAgICAgcjIs
ICMwCiAgICAgICAgMHhiNGM1ZDIwMDogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0
YzVkMjA0OiAgICBzdHIgICAgcjAsIFtyNywgIy0zMl0KICAgICAgICAweGI0YzVkMjA4OiAgICBz
dHIgICAgcjEsIFtyNywgIy0yOF0KICAgICAgICAweGI0YzVkMjBjOiAgICBiICAgICAgMHhiNGM1
YWEyZQogICAgKFMpIFsgNzM5XSBjYWxsICAgICAgICAgICAgICBsb2MzLCBsb2MzLCAzLCAxOCBs
bGludCgweGI0N2YyMmEwLCBleGVjIDB4YjQ3ZTE0YzApIHN0YXR1cygoRnVuY3Rpb246IENlbGw6
IDB4YjQ3ZjIyYTAgKDB4YjQ3ZjZlMTA6W0Z1bmN0aW9uLCB7bmFtZToxMDAsIGxlbmd0aDoxMDF9
LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMCwgTGVhZl0pOyBFeGVjdXRhYmxlOiBOYXRpdmVF
eGVjdXRhYmxlOjB4YjZkNmQ0MmQvMHhmNjMwKSkgICAgTm9uQXJyYXk7IHByZWRpY3RpbmcgTm9u
aW50YXNkb3VibGUKICAgICAgICAweGI0YzVkMjEwOiAgICBtb3Z3ICAgcjIsICM1Mjk2OAogICAg
ICAgIDB4YjRjNWQyMTQ6ICAgIG1vdnQgICByMiwgIzQ2MjY0CiAgICAgICAgMHhiNGM1ZDIxODog
ICAgbW92dyAgIHIxMiwgIzE1MzI5CiAgICAgICAgMHhiNGM1ZDIxYzogICAgbW92dCAgIHIxMiwg
IzQ2ODMyCiAgICAgICAgMHhiNGM1ZDIyMDogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWQy
MjI6ICAgIG1vdiAgICBzcCwgcjcKICAgICAgICAweGI0YzVkMjI0OiAgICBtdm4gICAgcjEyLCAj
MTgzCiAgICAgICAgMHhiNGM1ZDIyODogICAgbW92ICAgIHNwLCBzcAogICAgICAgIDB4YjRjNWQy
MmE6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAgICAgMHhiNGM1ZDIyYzogICAgc3RyICAgIHIwLCBb
cjcsICMtMzJdCiAgICAgICAgMHhiNGM1ZDIzMDogICAgc3RyICAgIHIxLCBbcjcsICMtMjhdCiAg
ICAgICAgMHhiNGM1ZDIzNDogICAgYiAgICAgIDB4YjRjNWFhYjAKICAgIChTKSBbIDc0OF0gcHV0
X2J5X3ZhbCAgICAgICAgbG9jOCwgbG9jOSwgbG9jMyAgICBBcnJheVdpdGhDb250aWd1b3VzLCBP
cmlnaW5hbAogICAgICAgIDB4YjRjNWQyMzg6ICAgIGIgICAgICAweGI0YzVkMjRhCiAgICAgICAg
MHhiNGM1ZDIzYTogICAgbW92ICAgIHIxMiwgIzEKICAgICAgICAweGI0YzVkMjNlOiAgICBtb3Z3
ICAgcjYsICM2MzYyNQogICAgICAgIDB4YjRjNWQyNDI6ICAgIG1vdnQgICByNiwgIzQ2MjY1CiAg
ICAgICAgMHhiNGM1ZDI0NjogICAgLmxvbmcgIGY4ODZjMDAwCiAgICAgICAgMHhiNGM1ZDI0YTog
ICAgbGRyICAgIHIxLCBbcjcsICMtNzJdCiAgICAgICAgMHhiNGM1ZDI0ZTogICAgbGRyICAgIHIy
LCBbcjcsICMtNjhdCiAgICAgICAgMHhiNGM1ZDI1MjogICAgbGRyICAgIHIwLCBbcjcsICMtODBd
CiAgICAgICAgMHhiNGM1ZDI1NjogICAgbGRyICAgIHIzLCBbcjcsICMtNzZdCiAgICAgICAgMHhi
NGM1ZDI1YTogICAgbGRyICAgIHI4LCBbcjcsICMtMzJdCiAgICAgICAgMHhiNGM1ZDI1ZTogICAg
bGRyICAgIHI5LCBbcjcsICMtMjhdCiAgICAgICAgMHhiNGM1ZDI2MjogICAgbW92dyAgIHIxMiwg
IzI3NzEyCiAgICAgICAgMHhiNGM1ZDI2NjogICAgbW92dCAgIHIxMiwgIzQ2MjcwCiAgICAgICAg
MHhiNGM1ZDI2YTogICAgc3RyICAgIHIxMiwgW3NwLCAjMTZdCiAgICAgICAgMHhiNGM1ZDI2ZTog
ICAgc3RyICAgIHI5LCBbc3AsICMxMl0KICAgICAgICAweGI0YzVkMjcyOiAgICBzdHIgICAgcjgs
IFtzcCwgIzhdCiAgICAgICAgMHhiNGM1ZDI3NjogICAgc3RyICAgIHIzLCBbc3AsICM0XQogICAg
ICAgIDB4YjRjNWQyNzg6ICAgIHN0ciAgICByMCwgW3NwXQogICAgICAgIDB4YjRjNWQyN2E6ICAg
IG1vdiAgICByMywgcjIKICAgICAgICAweGI0YzVkMjdjOiAgICBtb3YgICAgcjIsIHIxCiAgICAg
ICAgMHhiNGM1ZDI3ZTogICAgbW92cyAgIHIxLCAjMAogICAgICAgIDB4YjRjNWQyODA6ICAgIG1v
diAgICByMCwgcjcKICAgICAgICAweGI0YzVkMjgyOiAgICBtb3Z3ICAgcjEyLCAjNTA2MjAKICAg
ICAgICAweGI0YzVkMjg2OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVkMjhh
OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVkMjhlOiAgICBtb3Z3ICAg
cjYsICM0MjEyOAogICAgICAgIDB4YjRjNWQyOTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAg
ICAgMHhiNGM1ZDI5NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1ZDI5ODogICAg
bW92dyAgIHIxMiwgIzM1NjI1CiAgICAgICAgMHhiNGM1ZDI5YzogICAgbW92dCAgIHIxMiwgIzQ2
Nzc3CiAgICAgICAgMHhiNGM1ZDJhMDogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWQyYTI6
ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1ZDJhNjogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgICAgICAweGI0YzVkMmFhOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0
YzVkMmFjOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1ZDJhZTogICAgYm5lICAgIDB4
YjRjNWU2ODAKICAgICAgICAweGI0YzVkMmIyOiAgICBiICAgICAgMHhiNGM1YWI4MgogICAgKFMp
IFsgNzUzXSBpbmMgICAgICAgICAgICAgICBsb2M2CiAgICAgICAgMHhiNGM1ZDJiNjogICAgbW92
dyAgIHIxMiwgIzUwNjQwCiAgICAgICAgMHhiNGM1ZDJiYTogICAgbW92dCAgIHIxMiwgIzQ1ODIy
CiAgICAgICAgMHhiNGM1ZDJiZTogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhi
NGM1ZDJjMjogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVkMmM2OiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWQyY2E6ICAgIHN0ciAgICByNywgW3I2XQogICAg
ICAgIDB4YjRjNWQyY2M6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVkMmNlOiAgICBt
b3Z3ICAgcjEsICM1MDYzNgogICAgICAgIDB4YjRjNWQyZDI6ICAgIG1vdnQgICByMSwgIzQ1ODIy
CiAgICAgICAgMHhiNGM1ZDJkNjogICAgbW92dyAgIHIxMiwgIzEwOTM3CiAgICAgICAgMHhiNGM1
ZDJkYTogICAgbW92dCAgIHIxMiwgIzQ2NzkzCiAgICAgICAgMHhiNGM1ZDJkZTogICAgYmx4ICAg
IHIxMgogICAgICAgIDB4YjRjNWQyZTA6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhi
NGM1ZDJlNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVkMmU4OiAgICBsZHIg
ICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVkMmVhOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAg
MHhiNGM1ZDJlYzogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVkMmYwOiAgICBi
ICAgICAgMHhiNGM1YWI5YwogICAgKFMpIFsgNzY1XSBnZXRfZnJvbV9zY29wZSAgICBsb2M5LCBs
b2M4LCBjYXNlcyhAaWQ1KSwgMjA1MDxUaHJvd0lmTm90Rm91bmR8R2xvYmFsTGV4aWNhbFZhcnxO
b3RJbml0aWFsaXphdGlvbj4sIC0xMjYyNTAxMzc2ICAgIHByZWRpY3RpbmcgQXJyYXkKICAgICAg
ICAweGI0YzVkMmY0OiAgICBtb3Z3ICAgcjEsICM1MDY4NAogICAgICAgIDB4YjRjNWQyZjg6ICAg
IG1vdnQgICByMSwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZDJmYzogICAgbW92ICAgIHIwLCByNwog
ICAgICAgIDB4YjRjNWQyZmU6ICAgIG1vdncgICByMTIsICM1MDY4OAogICAgICAgIDB4YjRjNWQz
MDI6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWQzMDY6ICAgIHN0ciAgICBy
MTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWQzMGE6ICAgIG1vdncgICByNiwgIzQyMTI4CiAg
ICAgICAgMHhiNGM1ZDMwZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVkMzEy
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVkMzE0OiAgICBtb3Z3ICAgcjEyLCAj
MTMxODUKICAgICAgICAweGI0YzVkMzE4OiAgICBtb3Z0ICAgcjEyLCAjNDY3NzcKICAgICAgICAw
eGI0YzVkMzFjOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1ZDMxZTogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgICAgICAweGI0YzVkMzIyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAg
IDB4YjRjNWQzMjY6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWQzMjg6ICAgIGNt
cCAgICByMiwgIzAKICAgICAgICAweGI0YzVkMzJhOiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAg
ICAgIDB4YjRjNWQzMmU6ICAgIHN0ciAgICByMCwgW3I3LCAjLTgwXQogICAgICAgIDB4YjRjNWQz
MzI6ICAgIHN0ciAgICByMSwgW3I3LCAjLTc2XQogICAgICAgIDB4YjRjNWQzMzY6ICAgIGIgICAg
ICAweGI0YzVhYmU0CiAgICAoUykgWyA3NzNdIGFycmF5X2xlbmd0aCAgICAgIGxvYzEwLCBsb2M5
LCBsZW5ndGgoQGlkMTgpIGxsaW50KGFycmF5X2xlbmd0aCkgICAgcHJlZGljdGluZyBOb25ib29s
aW50MzIKICAgICAgICAweGI0YzVkMzNhOiAgICBtb3Z3ICAgcjEyLCAjMjA4OAogICAgICAgIDB4
YjRjNWQzM2U6ICAgIG1vdnQgICByMTIsICM0NjI3MAogICAgICAgIDB4YjRjNWQzNDI6ICAgIHN0
ciAgICByMTIsIFtzcF0KICAgICAgICAweGI0YzVkMzQ2OiAgICBtb3YgICAgcjIsIHIwCiAgICAg
ICAgMHhiNGM1ZDM0ODogICAgbW92ICAgIHIzLCByMQogICAgICAgIDB4YjRjNWQzNGE6ICAgIG1v
dncgICByMSwgIzUzMDQwCiAgICAgICAgMHhiNGM1ZDM0ZTogICAgbW92dCAgIHIxLCAjNDYyNjQK
ICAgICAgICAweGI0YzVkMzUyOiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1ZDM1NDog
ICAgbW92dyAgIHIxMiwgIzUwNzIwCiAgICAgICAgMHhiNGM1ZDM1ODogICAgbW92dCAgIHIxMiwg
IzQ1ODIyCiAgICAgICAgMHhiNGM1ZDM1YzogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAg
ICAgMHhiNGM1ZDM2MDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVkMzY0OiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWQzNjg6ICAgIHN0ciAgICByNywgW3I2
XQogICAgICAgIDB4YjRjNWQzNmE6ICAgIG1vdncgICByMTIsICMxODUxMwogICAgICAgIDB4YjRj
NWQzNmU6ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAgICAgIDB4YjRjNWQzNzI6ICAgIGJseCAg
ICByMTIKICAgICAgICAweGI0YzVkMzc0OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4
YjRjNWQzNzg6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZDM3YzogICAgbGRy
ICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1ZDM3ZTogICAgY21wICAgIHIyLCAjMAogICAgICAg
IDB4YjRjNWQzODA6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1ZDM4NDogICAg
c3RyICAgIHIwLCBbcjcsICMtODhdCiAgICAgICAgMHhiNGM1ZDM4ODogICAgc3RyICAgIHIxLCBb
cjcsICMtODRdCiAgICAgICAgMHhiNGM1ZDM4YzogICAgYiAgICAgIDB4YjRjNWFjMWUKICAgIChT
KSBbIDc4Ml0gamxlc3MgICAgICAgICAgICAgbG9jNywgbG9jMTAsIC0xMzUoLT42NDcpCiAgICAg
ICAgMHhiNGM1ZDM5MDogICAgbGRyICAgIHIwLCBbcjcsICMtNjRdCiAgICAgICAgMHhiNGM1ZDM5
NDogICAgbGRyICAgIHIxLCBbcjcsICMtNjBdCiAgICAgICAgMHhiNGM1ZDM5ODogICAgbGRyICAg
IHIyLCBbcjcsICMtODhdCiAgICAgICAgMHhiNGM1ZDM5YzogICAgbGRyICAgIHIzLCBbcjcsICMt
ODRdCiAgICAgICAgMHhiNGM1ZDNhMDogICAgc3RyICAgIHIzLCBbc3AsICM0XQogICAgICAgIDB4
YjRjNWQzYTI6ICAgIHN0ciAgICByMiwgW3NwXQogICAgICAgIDB4YjRjNWQzYTQ6ICAgIG1vdiAg
ICByMiwgcjAKICAgICAgICAweGI0YzVkM2E2OiAgICBtb3YgICAgcjMsIHIxCiAgICAgICAgMHhi
NGM1ZDNhODogICAgbW92cyAgIHIxLCAjMAogICAgICAgIDB4YjRjNWQzYWE6ICAgIG1vdiAgICBy
MCwgcjcKICAgICAgICAweGI0YzVkM2FjOiAgICBtb3Z3ICAgcjEyLCAjNTA3NTYKICAgICAgICAw
eGI0YzVkM2IwOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVkM2I0OiAgICBz
dHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVkM2I4OiAgICBtb3Z3ICAgcjYsICM0
MjEyOAogICAgICAgIDB4YjRjNWQzYmM6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhi
NGM1ZDNjMDogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1ZDNjMjogICAgbW92dyAg
IHIxMiwgIzUxODE3CiAgICAgICAgMHhiNGM1ZDNjNjogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAg
ICAgICAgMHhiNGM1ZDNjYTogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWQzY2M6ICAgIG1v
dncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1ZDNkMDogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgICAgICAweGI0YzVkM2Q0OiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVkM2Q2
OiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1ZDNkODogICAgYm5lICAgIDB4YjRjNWU2
ODAKICAgICAgICAweGI0YzVkM2RjOiAgICB0c3QgICAgcjAsIHIwCiAgICAgICAgMHhiNGM1ZDNk
ZTogICAgYm5lICAgIDB4YjRjNWE4MmUKICAgICAgICAweGI0YzVkM2UyOiAgICBiICAgICAgMHhi
NGM1YWM5OAogICAgKFMpIFsgNzkzXSBnZXRfZnJvbV9zY29wZSAgICBsb2M2LCBsb2M5LCBldmFs
KEBpZDkpLCAyMDQ4PFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXph
dGlvbj4sIDEyNCAgICBwcmVkaWN0aW5nIEZ1bmN0aW9uCiAgICAgICAgMHhiNGM1ZDNlNjogICAg
bW92dyAgIHIxLCAjNTA3OTYKICAgICAgICAweGI0YzVkM2VhOiAgICBtb3Z0ICAgcjEsICM0NTgy
MgogICAgICAgIDB4YjRjNWQzZWU6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVkM2Yw
OiAgICBtb3Z3ICAgcjEyLCAjNTA4MDAKICAgICAgICAweGI0YzVkM2Y0OiAgICBtb3Z0ICAgcjEy
LCAjNDU4MjIKICAgICAgICAweGI0YzVkM2Y4OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAg
ICAgICAweGI0YzVkM2ZjOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWQ0MDA6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZDQwNDogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAgICAgMHhiNGM1ZDQwNjogICAgbW92dyAgIHIxMiwgIzEzMTg1CiAgICAgICAgMHhi
NGM1ZDQwYTogICAgbW92dCAgIHIxMiwgIzQ2Nzc3CiAgICAgICAgMHhiNGM1ZDQwZTogICAgYmx4
ICAgIHIxMgogICAgICAgIDB4YjRjNWQ0MTA6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAg
MHhiNGM1ZDQxNDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVkNDE4OiAgICBs
ZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVkNDFhOiAgICBjbXAgICAgcjIsICMwCiAgICAg
ICAgMHhiNGM1ZDQxYzogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVkNDIwOiAg
ICBzdHIgICAgcjAsIFtyNywgIy01Nl0KICAgICAgICAweGI0YzVkNDI0OiAgICBzdHIgICAgcjEs
IFtyNywgIy01Ml0KICAgICAgICAweGI0YzVkNDI4OiAgICBiICAgICAgMHhiNGM1YWNmMgogICAg
KFMpIFsgODExXSBnZXRfZnJvbV9zY29wZSAgICBsb2MxMiwgbG9jMTIsIGNhc2VTdHJpbmdzKEBp
ZDQpLCAyMDUwPFRocm93SWZOb3RGb3VuZHxHbG9iYWxMZXhpY2FsVmFyfE5vdEluaXRpYWxpemF0
aW9uPiwgLTEyNjI1MDEzNTIgICAgcHJlZGljdGluZyBBcnJheQogICAgICAgIDB4YjRjNWQ0MmM6
ICAgIG1vdncgICByMSwgIzUwODY4CiAgICAgICAgMHhiNGM1ZDQzMDogICAgbW92dCAgIHIxLCAj
NDU4MjIKICAgICAgICAweGI0YzVkNDM0OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1
ZDQzNjogICAgbW92dyAgIHIxMiwgIzUwODcyCiAgICAgICAgMHhiNGM1ZDQzYTogICAgbW92dCAg
IHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZDQzZTogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhd
CiAgICAgICAgMHhiNGM1ZDQ0MjogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVk
NDQ2OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWQ0NGE6ICAgIHN0ciAgICBy
NywgW3I2XQogICAgICAgIDB4YjRjNWQ0NGM6ICAgIG1vdncgICByMTIsICMxMzE4NQogICAgICAg
IDB4YjRjNWQ0NTA6ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAgICAgIDB4YjRjNWQ0NTQ6ICAg
IGJseCAgICByMTIKICAgICAgICAweGI0YzVkNDU2OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAg
ICAgIDB4YjRjNWQ0NWE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZDQ1ZTog
ICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1ZDQ2MDogICAgY21wICAgIHIyLCAjMAog
ICAgICAgIDB4YjRjNWQ0NjI6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1ZDQ2
NjogICAgc3RyICAgIHIwLCBbcjcsICMtMTA0XQogICAgICAgIDB4YjRjNWQ0NmE6ICAgIHN0ciAg
ICByMSwgW3I3LCAjLTEwMF0KICAgICAgICAweGI0YzVkNDZlOiAgICBiICAgICAgMHhiNGM1YWQz
ZQogICAgKFMpIFsgODI3XSBnZXRfYnlfdmFsICAgICAgICBsb2MxMSwgbG9jMTIsIGxvYzEzICAg
IEFycmF5V2l0aENvbnRpZ3VvdXMsIE9yaWdpbmFsOyBwcmVkaWN0aW5nIFN0cmluZ2lkZW50CiAg
ICAgICAgMHhiNGM1ZDQ3MjogICAgYiAgICAgIDB4YjRjNWQ0OWUKICAgICAgICAweGI0YzVkNDc0
OiAgICBsZHIgICAgcjYsIFtyMF0KICAgICAgICAweGI0YzVkNDc2OiAgICBtb3Z3ICAgcjEyLCAj
MzI0MTYKICAgICAgICAweGI0YzVkNDdhOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgICAgICAw
eGI0YzVkNDdlOiAgICBjbXAgICAgcjYsIHIxMgogICAgICAgIDB4YjRjNWQ0ODI6ICAgIGJuZSAg
ICAweGI0YzVkNDllCiAgICAgICAgMHhiNGM1ZDQ4NDogICAgbW92dyAgIHIxMiwgIzE2MjI1CiAg
ICAgICAgMHhiNGM1ZDQ4ODogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAgICAgMHhiNGM1ZDQ4
YzogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWQ0OGU6ICAgIHRzdCAgICByMCwgcjAKICAg
ICAgICAweGI0YzVkNDkwOiAgICBiZXEgICAgMHhiNGM1ZDQ5ZQogICAgICAgIDB4YjRjNWQ0OTI6
ICAgIHN0ciAgICByMCwgW3I3LCAjLTk2XQogICAgICAgIDB4YjRjNWQ0OTY6ICAgIHN0ciAgICBy
MSwgW3I3LCAjLTkyXQogICAgICAgIDB4YjRjNWQ0OWE6ICAgIGIgICAgICAweGI0YzVhZGI2CiAg
ICAgICAgMHhiNGM1ZDQ5ZTogICAgbGRyICAgIHIwLCBbcjcsICMtMTA0XQogICAgICAgIDB4YjRj
NWQ0YTI6ICAgIGxkciAgICByMSwgW3I3LCAjLTEwMF0KICAgICAgICAweGI0YzVkNGE2OiAgICBs
ZHIgICAgcjIsIFtyNywgIy0xMTJdCiAgICAgICAgMHhiNGM1ZDRhYTogICAgbGRyICAgIHIzLCBb
cjcsICMtMTA4XQogICAgICAgIDB4YjRjNWQ0YWU6ICAgIG1vdncgICByMTIsICMyNzc2OAogICAg
ICAgIDB4YjRjNWQ0YjI6ICAgIG1vdnQgICByMTIsICM0NjI3MAogICAgICAgIDB4YjRjNWQ0YjY6
ICAgIHN0ciAgICByMTIsIFtzcCwgIzhdCiAgICAgICAgMHhiNGM1ZDRiYTogICAgc3RyICAgIHIz
LCBbc3AsICM0XQogICAgICAgIDB4YjRjNWQ0YmM6ICAgIHN0ciAgICByMiwgW3NwXQogICAgICAg
IDB4YjRjNWQ0YmU6ICAgIG1vdiAgICByMiwgcjAKICAgICAgICAweGI0YzVkNGMwOiAgICBtb3Yg
ICAgcjMsIHIxCiAgICAgICAgMHhiNGM1ZDRjMjogICAgbW92cyAgIHIxLCAjMAogICAgICAgIDB4
YjRjNWQ0YzQ6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVkNGM2OiAgICBtb3Z3ICAg
cjEyLCAjNTA5MzYKICAgICAgICAweGI0YzVkNGNhOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAg
ICAgICAweGI0YzVkNGNlOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVk
NGQyOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWQ0ZDY6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZDRkYTogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAg
MHhiNGM1ZDRkYzogICAgbW92dyAgIHIxMiwgIzEzMDMzCiAgICAgICAgMHhiNGM1ZDRlMDogICAg
bW92dCAgIHIxMiwgIzQ2Nzc3CiAgICAgICAgMHhiNGM1ZDRlNDogICAgYmx4ICAgIHIxMgogICAg
ICAgIDB4YjRjNWQ0ZTY6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1ZDRlYTog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVkNGVlOiAgICBsZHIgICAgcjYsIFty
Nl0KICAgICAgICAweGI0YzVkNGYwOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1ZDRm
MjogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVkNGY2OiAgICBzdHIgICAgcjAs
IFtyNywgIy05Nl0KICAgICAgICAweGI0YzVkNGZhOiAgICBzdHIgICAgcjEsIFtyNywgIy05Ml0K
ICAgICAgICAweGI0YzVkNGZlOiAgICBiICAgICAgMHhiNGM1YWRiNgogICAgKFMpIFsgODMzXSB0
b19wcmltaXRpdmUgICAgICBsb2MxMSwgbG9jMTEKICAgICAgICAweGI0YzVkNTAyOiAgICBtb3Z3
ICAgcjEyLCAjNTA5NjAKICAgICAgICAweGI0YzVkNTA2OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIK
ICAgICAgICAweGI0YzVkNTBhOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0
YzVkNTBlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWQ1MTI6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZDUxNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAg
ICAgMHhiNGM1ZDUxODogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWQ1MWE6ICAgIG1v
dncgICByMSwgIzUwOTU2CiAgICAgICAgMHhiNGM1ZDUxZTogICAgbW92dCAgIHIxLCAjNDU4MjIK
ICAgICAgICAweGI0YzVkNTIyOiAgICBtb3Z3ICAgcjEyLCAjMTk0NDkKICAgICAgICAweGI0YzVk
NTI2OiAgICBtb3Z0ICAgcjEyLCAjNDY3OTMKICAgICAgICAweGI0YzVkNTJhOiAgICBibHggICAg
cjEyCiAgICAgICAgMHhiNGM1ZDUyYzogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0
YzVkNTMwOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWQ1MzQ6ICAgIGxkciAg
ICByNiwgW3I2XQogICAgICAgIDB4YjRjNWQ1MzY6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAw
eGI0YzVkNTM4OiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWQ1M2M6ICAgIGIg
ICAgICAweGI0YzVhZGNjCiAgICAoUykgWyA4NDNdIGNhbGxfZXZhbCAgICAgICAgIGxvYzMsIGxv
YzYsIDIsIDE0ICAgIE9yaWdpbmFsOyBwcmVkaWN0aW5nIEZ1bmN0aW9uCiAgICAgICAgMHhiNGM1
ZDU0MDogICAgbW92ICAgIHNwLCByNwogICAgICAgIDB4YjRjNWQ1NDI6ICAgIG12biAgICByMTIs
ICMxMDMKICAgICAgICAweGI0YzVkNTQ2OiAgICBtb3YgICAgc3AsIHNwCiAgICAgICAgMHhiNGM1
ZDU0ODogICAgYWRkICAgIHNwLCByMTIKICAgICAgICAweGI0YzVkNTRhOiAgICBsZHIgICAgcjAs
IFtzcCwgIzhdCiAgICAgICAgMHhiNGM1ZDU0YzogICAgbGRyICAgIHIxLCBbc3AsICM4XQogICAg
ICAgIDB4YjRjNWQ1NGU6ICAgIG1vdncgICByMiwgIzQ1ODQ4CiAgICAgICAgMHhiNGM1ZDU1Mjog
ICAgbW92dCAgIHIyLCAjNDYyNjMKICAgICAgICAweGI0YzVkNTU2OiAgICBsZHIgICAgcjAsIFty
NywgIzE2XQogICAgICAgIDB4YjRjNWQ1NTg6ICAgIGxkciAgICByMSwgW3I3LCAjMjBdCiAgICAg
ICAgMHhiNGM1ZDU1YTogICAgbW92dyAgIHIxMiwgIzkzNzcKICAgICAgICAweGI0YzVkNTVlOiAg
ICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgICAgICAweGI0YzVkNTYyOiAgICBibHggICAgcjEyCiAg
ICAgICAgMHhiNGM1ZDU2NDogICAgbW92ICAgIHNwLCByNwogICAgICAgIDB4YjRjNWQ1NjY6ICAg
IG12biAgICByMTIsICMxODMKICAgICAgICAweGI0YzVkNTZhOiAgICBtb3YgICAgc3AsIHNwCiAg
ICAgICAgMHhiNGM1ZDU2YzogICAgYWRkICAgIHNwLCByMTIKICAgICAgICAweGI0YzVkNTZlOiAg
ICBzdHIgICAgcjAsIFtyNywgIy0zMl0KICAgICAgICAweGI0YzVkNTcyOiAgICBzdHIgICAgcjEs
IFtyNywgIy0yOF0KICAgICAgICAweGI0YzVkNTc2OiAgICBiICAgICAgMHhiNGM1YWViMAogICAg
KFMpIFsgODU5XSBnZXRfZnJvbV9zY29wZSAgICBsb2M2LCBsb2M5LCBldmFsKEBpZDkpLCAyMDQ4
PFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDEyNCAg
ICBwcmVkaWN0aW5nIEZ1bmN0aW9uCiAgICAgICAgMHhiNGM1ZDU3YTogICAgbW92dyAgIHIxLCAj
NTEwNjAKICAgICAgICAweGI0YzVkNTdlOiAgICBtb3Z0ICAgcjEsICM0NTgyMgogICAgICAgIDB4
YjRjNWQ1ODI6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVkNTg0OiAgICBtb3Z3ICAg
cjEyLCAjNTEwNjQKICAgICAgICAweGI0YzVkNTg4OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAg
ICAgICAweGI0YzVkNThjOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVk
NTkwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWQ1OTQ6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZDU5ODogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAg
MHhiNGM1ZDU5YTogICAgbW92dyAgIHIxMiwgIzEzMTg1CiAgICAgICAgMHhiNGM1ZDU5ZTogICAg
bW92dCAgIHIxMiwgIzQ2Nzc3CiAgICAgICAgMHhiNGM1ZDVhMjogICAgYmx4ICAgIHIxMgogICAg
ICAgIDB4YjRjNWQ1YTQ6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1ZDVhODog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVkNWFjOiAgICBsZHIgICAgcjYsIFty
Nl0KICAgICAgICAweGI0YzVkNWFlOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1ZDVi
MDogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVkNWI0OiAgICBzdHIgICAgcjAs
IFtyNywgIy01Nl0KICAgICAgICAweGI0YzVkNWI4OiAgICBzdHIgICAgcjEsIFtyNywgIy01Ml0K
ICAgICAgICAweGI0YzVkNWJjOiAgICBiICAgICAgMHhiNGM1YWYwYQogICAgKFMpIFsgODc3XSBn
ZXRfZnJvbV9zY29wZSAgICBsb2MxMiwgbG9jMTIsIGNhc2VTdHJpbmdzKEBpZDQpLCAyMDUwPFRo
cm93SWZOb3RGb3VuZHxHbG9iYWxMZXhpY2FsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgLTEyNjI1
MDEzNTIgICAgcHJlZGljdGluZyBBcnJheQogICAgICAgIDB4YjRjNWQ1YzA6ICAgIG1vdncgICBy
MSwgIzUxMTMyCiAgICAgICAgMHhiNGM1ZDVjNDogICAgbW92dCAgIHIxLCAjNDU4MjIKICAgICAg
ICAweGI0YzVkNWM4OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1ZDVjYTogICAgbW92
dyAgIHIxMiwgIzUxMTM2CiAgICAgICAgMHhiNGM1ZDVjZTogICAgbW92dCAgIHIxMiwgIzQ1ODIy
CiAgICAgICAgMHhiNGM1ZDVkMjogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhi
NGM1ZDVkNjogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVkNWRhOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWQ1ZGU6ICAgIHN0ciAgICByNywgW3I2XQogICAg
ICAgIDB4YjRjNWQ1ZTA6ICAgIG1vdncgICByMTIsICMxMzE4NQogICAgICAgIDB4YjRjNWQ1ZTQ6
ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAgICAgIDB4YjRjNWQ1ZTg6ICAgIGJseCAgICByMTIK
ICAgICAgICAweGI0YzVkNWVhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWQ1
ZWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZDVmMjogICAgbGRyICAgIHI2
LCBbcjZdCiAgICAgICAgMHhiNGM1ZDVmNDogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRj
NWQ1ZjY6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1ZDVmYTogICAgc3RyICAg
IHIwLCBbcjcsICMtMTA0XQogICAgICAgIDB4YjRjNWQ1ZmU6ICAgIHN0ciAgICByMSwgW3I3LCAj
LTEwMF0KICAgICAgICAweGI0YzVkNjAyOiAgICBiICAgICAgMHhiNGM1YWY1NgogICAgKFMpIFsg
ODkzXSBnZXRfYnlfdmFsICAgICAgICBsb2MxMSwgbG9jMTIsIGxvYzEzICAgIEFycmF5V2l0aENv
bnRpZ3VvdXMsIE9yaWdpbmFsOyBwcmVkaWN0aW5nIFN0cmluZ2lkZW50CiAgICAgICAgMHhiNGM1
ZDYwNjogICAgYiAgICAgIDB4YjRjNWQ2MzIKICAgICAgICAweGI0YzVkNjA4OiAgICBsZHIgICAg
cjYsIFtyMF0KICAgICAgICAweGI0YzVkNjBhOiAgICBtb3Z3ICAgcjEyLCAjMzI0MTYKICAgICAg
ICAweGI0YzVkNjBlOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgICAgICAweGI0YzVkNjEyOiAg
ICBjbXAgICAgcjYsIHIxMgogICAgICAgIDB4YjRjNWQ2MTY6ICAgIGJuZSAgICAweGI0YzVkNjMy
CiAgICAgICAgMHhiNGM1ZDYxODogICAgbW92dyAgIHIxMiwgIzE2MjI1CiAgICAgICAgMHhiNGM1
ZDYxYzogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAgICAgMHhiNGM1ZDYyMDogICAgYmx4ICAg
IHIxMgogICAgICAgIDB4YjRjNWQ2MjI6ICAgIHRzdCAgICByMCwgcjAKICAgICAgICAweGI0YzVk
NjI0OiAgICBiZXEgICAgMHhiNGM1ZDYzMgogICAgICAgIDB4YjRjNWQ2MjY6ICAgIHN0ciAgICBy
MCwgW3I3LCAjLTk2XQogICAgICAgIDB4YjRjNWQ2MmE6ICAgIHN0ciAgICByMSwgW3I3LCAjLTky
XQogICAgICAgIDB4YjRjNWQ2MmU6ICAgIGIgICAgICAweGI0YzVhZmNlCiAgICAgICAgMHhiNGM1
ZDYzMjogICAgbGRyICAgIHIwLCBbcjcsICMtMTA0XQogICAgICAgIDB4YjRjNWQ2MzY6ICAgIGxk
ciAgICByMSwgW3I3LCAjLTEwMF0KICAgICAgICAweGI0YzVkNjNhOiAgICBsZHIgICAgcjIsIFty
NywgIy0xMTJdCiAgICAgICAgMHhiNGM1ZDYzZTogICAgbGRyICAgIHIzLCBbcjcsICMtMTA4XQog
ICAgICAgIDB4YjRjNWQ2NDI6ICAgIG1vdncgICByMTIsICMyNzgyNAogICAgICAgIDB4YjRjNWQ2
NDY6ICAgIG1vdnQgICByMTIsICM0NjI3MAogICAgICAgIDB4YjRjNWQ2NGE6ICAgIHN0ciAgICBy
MTIsIFtzcCwgIzhdCiAgICAgICAgMHhiNGM1ZDY0ZTogICAgc3RyICAgIHIzLCBbc3AsICM0XQog
ICAgICAgIDB4YjRjNWQ2NTA6ICAgIHN0ciAgICByMiwgW3NwXQogICAgICAgIDB4YjRjNWQ2NTI6
ICAgIG1vdiAgICByMiwgcjAKICAgICAgICAweGI0YzVkNjU0OiAgICBtb3YgICAgcjMsIHIxCiAg
ICAgICAgMHhiNGM1ZDY1NjogICAgbW92cyAgIHIxLCAjMAogICAgICAgIDB4YjRjNWQ2NTg6ICAg
IG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVkNjVhOiAgICBtb3Z3ICAgcjEyLCAjNTEyMDAK
ICAgICAgICAweGI0YzVkNjVlOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVk
NjYyOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVkNjY2OiAgICBtb3Z3
ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWQ2NmE6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAgICAgMHhiNGM1ZDY2ZTogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1ZDY3MDog
ICAgbW92dyAgIHIxMiwgIzEzMDMzCiAgICAgICAgMHhiNGM1ZDY3NDogICAgbW92dCAgIHIxMiwg
IzQ2Nzc3CiAgICAgICAgMHhiNGM1ZDY3ODogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWQ2
N2E6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1ZDY3ZTogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgICAgICAweGI0YzVkNjgyOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAw
eGI0YzVkNjg0OiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1ZDY4NjogICAgYm5lICAg
IDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVkNjhhOiAgICBzdHIgICAgcjAsIFtyNywgIy05Nl0K
ICAgICAgICAweGI0YzVkNjhlOiAgICBzdHIgICAgcjEsIFtyNywgIy05Ml0KICAgICAgICAweGI0
YzVkNjkyOiAgICBiICAgICAgMHhiNGM1YWZjZQogICAgKFMpIFsgODk5XSB0b19wcmltaXRpdmUg
ICAgICBsb2MxMSwgbG9jMTEKICAgICAgICAweGI0YzVkNjk2OiAgICBtb3Z3ICAgcjEyLCAjNTEy
MjQKICAgICAgICAweGI0YzVkNjlhOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0
YzVkNjllOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVkNmEyOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWQ2YTY6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAgICAgMHhiNGM1ZDZhYTogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1ZDZh
YzogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWQ2YWU6ICAgIG1vdncgICByMSwgIzUx
MjIwCiAgICAgICAgMHhiNGM1ZDZiMjogICAgbW92dCAgIHIxLCAjNDU4MjIKICAgICAgICAweGI0
YzVkNmI2OiAgICBtb3Z3ICAgcjEyLCAjMTk0NDkKICAgICAgICAweGI0YzVkNmJhOiAgICBtb3Z0
ICAgcjEyLCAjNDY3OTMKICAgICAgICAweGI0YzVkNmJlOiAgICBibHggICAgcjEyCiAgICAgICAg
MHhiNGM1ZDZjMDogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVkNmM0OiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWQ2Yzg6ICAgIGxkciAgICByNiwgW3I2XQog
ICAgICAgIDB4YjRjNWQ2Y2E6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVkNmNjOiAg
ICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWQ2ZDA6ICAgIGIgICAgICAweGI0YzVh
ZmU0CiAgICAoUykgWyA5MDldIGNhbGxfZXZhbCAgICAgICAgIGxvYzMsIGxvYzYsIDIsIDE0ICAg
IE9yaWdpbmFsOyBwcmVkaWN0aW5nIEZ1bmN0aW9uCiAgICAgICAgMHhiNGM1ZDZkNDogICAgbW92
ICAgIHNwLCByNwogICAgICAgIDB4YjRjNWQ2ZDY6ICAgIG12biAgICByMTIsICMxMDMKICAgICAg
ICAweGI0YzVkNmRhOiAgICBtb3YgICAgc3AsIHNwCiAgICAgICAgMHhiNGM1ZDZkYzogICAgYWRk
ICAgIHNwLCByMTIKICAgICAgICAweGI0YzVkNmRlOiAgICBsZHIgICAgcjAsIFtzcCwgIzhdCiAg
ICAgICAgMHhiNGM1ZDZlMDogICAgbGRyICAgIHIxLCBbc3AsICM4XQogICAgICAgIDB4YjRjNWQ2
ZTI6ICAgIG1vdncgICByMiwgIzQ1OTIwCiAgICAgICAgMHhiNGM1ZDZlNjogICAgbW92dCAgIHIy
LCAjNDYyNjMKICAgICAgICAweGI0YzVkNmVhOiAgICBsZHIgICAgcjAsIFtyNywgIzE2XQogICAg
ICAgIDB4YjRjNWQ2ZWM6ICAgIGxkciAgICByMSwgW3I3LCAjMjBdCiAgICAgICAgMHhiNGM1ZDZl
ZTogICAgbW92dyAgIHIxMiwgIzk1NjkKICAgICAgICAweGI0YzVkNmYyOiAgICBtb3Z0ICAgcjEy
LCAjNDY4MzIKICAgICAgICAweGI0YzVkNmY2OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1
ZDZmODogICAgbW92ICAgIHNwLCByNwogICAgICAgIDB4YjRjNWQ2ZmE6ICAgIG12biAgICByMTIs
ICMxODMKICAgICAgICAweGI0YzVkNmZlOiAgICBtb3YgICAgc3AsIHNwCiAgICAgICAgMHhiNGM1
ZDcwMDogICAgYWRkICAgIHNwLCByMTIKICAgICAgICAweGI0YzVkNzAyOiAgICBzdHIgICAgcjAs
IFtyNywgIy0zMl0KICAgICAgICAweGI0YzVkNzA2OiAgICBzdHIgICAgcjEsIFtyNywgIy0yOF0K
ICAgICAgICAweGI0YzVkNzBhOiAgICBiICAgICAgMHhiNGM1YjBjOAogICAgKFMpIFsgOTYxXSBp
bmMgICAgICAgICAgICAgICBsb2M1CiAgICAgICAgMHhiNGM1ZDcwZTogICAgbW92dyAgIHIxMiwg
IzUxNDcyCiAgICAgICAgMHhiNGM1ZDcxMjogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAg
MHhiNGM1ZDcxNjogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1ZDcxYTog
ICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVkNzFlOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgICAgIDB4YjRjNWQ3MjI6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRj
NWQ3MjQ6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVkNzI2OiAgICBtb3Z3ICAgcjEs
ICM1MTQ2OAogICAgICAgIDB4YjRjNWQ3MmE6ICAgIG1vdnQgICByMSwgIzQ1ODIyCiAgICAgICAg
MHhiNGM1ZDcyZTogICAgbW92dyAgIHIxMiwgIzEwOTM3CiAgICAgICAgMHhiNGM1ZDczMjogICAg
bW92dCAgIHIxMiwgIzQ2NzkzCiAgICAgICAgMHhiNGM1ZDczNjogICAgYmx4ICAgIHIxMgogICAg
ICAgIDB4YjRjNWQ3Mzg6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1ZDczYzog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVkNzQwOiAgICBsZHIgICAgcjYsIFty
Nl0KICAgICAgICAweGI0YzVkNzQyOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1ZDc0
NDogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVkNzQ4OiAgICBiICAgICAgMHhi
NGM1YjFmNgogICAgKFMpIFsgOTg1XSBnZXRfZnJvbV9zY29wZSAgICBsb2M3LCBsb2M2LCBjYXNl
cyhAaWQ1KSwgMjA1MDxUaHJvd0lmTm90Rm91bmR8R2xvYmFsTGV4aWNhbFZhcnxOb3RJbml0aWFs
aXphdGlvbj4sIC0xMjYyNTAxMzc2ICAgIHByZWRpY3RpbmcgQXJyYXkKICAgICAgICAweGI0YzVk
NzRjOiAgICBtb3Z3ICAgcjEsICM1MTU2NAogICAgICAgIDB4YjRjNWQ3NTA6ICAgIG1vdnQgICBy
MSwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZDc1NDogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4
YjRjNWQ3NTY6ICAgIG1vdncgICByMTIsICM1MTU2OAogICAgICAgIDB4YjRjNWQ3NWE6ICAgIG1v
dnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWQ3NWU6ICAgIHN0ciAgICByMTIsIFtyNywg
IzI4XQogICAgICAgIDB4YjRjNWQ3NjI6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhi
NGM1ZDc2NjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVkNzZhOiAgICBzdHIg
ICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVkNzZjOiAgICBtb3Z3ICAgcjEyLCAjMTMxODUKICAg
ICAgICAweGI0YzVkNzcwOiAgICBtb3Z0ICAgcjEyLCAjNDY3NzcKICAgICAgICAweGI0YzVkNzc0
OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1ZDc3NjogICAgbW92dyAgIHI2LCAjNDYzNDgK
ICAgICAgICAweGI0YzVkNzdhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWQ3
N2U6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWQ3ODA6ICAgIGNtcCAgICByMiwg
IzAKICAgICAgICAweGI0YzVkNzgyOiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRj
NWQ3ODY6ICAgIHN0ciAgICByMCwgW3I3LCAjLTY0XQogICAgICAgIDB4YjRjNWQ3OGE6ICAgIHN0
ciAgICByMSwgW3I3LCAjLTYwXQogICAgICAgIDB4YjRjNWQ3OGU6ICAgIGIgICAgICAweGI0YzVi
MmEwCiAgICAoUykgWyA5OTNdIGFycmF5X2xlbmd0aCAgICAgIGxvYzgsIGxvYzcsIGxlbmd0aChA
aWQxOCkgbGxpbnQoYXJyYXlfbGVuZ3RoKSAgICBwcmVkaWN0aW5nIE5vbmJvb2xpbnQzMgogICAg
ICAgIDB4YjRjNWQ3OTI6ICAgIG1vdncgICByMTIsICMyMDg4CiAgICAgICAgMHhiNGM1ZDc5Njog
ICAgbW92dCAgIHIxMiwgIzQ2MjcwCiAgICAgICAgMHhiNGM1ZDc5YTogICAgc3RyICAgIHIxMiwg
W3NwXQogICAgICAgIDB4YjRjNWQ3OWU6ICAgIG1vdiAgICByMiwgcjAKICAgICAgICAweGI0YzVk
N2EwOiAgICBtb3YgICAgcjMsIHIxCiAgICAgICAgMHhiNGM1ZDdhMjogICAgbW92dyAgIHIxLCAj
NTMxMTIKICAgICAgICAweGI0YzVkN2E2OiAgICBtb3Z0ICAgcjEsICM0NjI2NAogICAgICAgIDB4
YjRjNWQ3YWE6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVkN2FjOiAgICBtb3Z3ICAg
cjEyLCAjNTE2MDAKICAgICAgICAweGI0YzVkN2IwOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAg
ICAgICAweGI0YzVkN2I0OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVk
N2I4OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWQ3YmM6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZDdjMDogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAg
MHhiNGM1ZDdjMjogICAgbW92dyAgIHIxMiwgIzE4NTEzCiAgICAgICAgMHhiNGM1ZDdjNjogICAg
bW92dCAgIHIxMiwgIzQ2Nzc3CiAgICAgICAgMHhiNGM1ZDdjYTogICAgYmx4ICAgIHIxMgogICAg
ICAgIDB4YjRjNWQ3Y2M6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1ZDdkMDog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVkN2Q0OiAgICBsZHIgICAgcjYsIFty
Nl0KICAgICAgICAweGI0YzVkN2Q2OiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1ZDdk
ODogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVkN2RjOiAgICBzdHIgICAgcjAs
IFtyNywgIy03Ml0KICAgICAgICAweGI0YzVkN2UwOiAgICBzdHIgICAgcjEsIFtyNywgIy02OF0K
ICAgICAgICAweGI0YzVkN2U0OiAgICBiICAgICAgMHhiNGM1YjJkYQogICAgKFMpIFsxMDAyXSBq
bGVzcyAgICAgICAgICAgICBsb2M1LCBsb2M4LCAtNDcwKC0+NTMyKQogICAgICAgIDB4YjRjNWQ3
ZTg6ICAgIGxkciAgICByMCwgW3I3LCAjLTQ4XQogICAgICAgIDB4YjRjNWQ3ZWM6ICAgIGxkciAg
ICByMSwgW3I3LCAjLTQ0XQogICAgICAgIDB4YjRjNWQ3ZjA6ICAgIGxkciAgICByMiwgW3I3LCAj
LTcyXQogICAgICAgIDB4YjRjNWQ3ZjQ6ICAgIGxkciAgICByMywgW3I3LCAjLTY4XQogICAgICAg
IDB4YjRjNWQ3Zjg6ICAgIHN0ciAgICByMywgW3NwLCAjNF0KICAgICAgICAweGI0YzVkN2ZhOiAg
ICBzdHIgICAgcjIsIFtzcF0KICAgICAgICAweGI0YzVkN2ZjOiAgICBtb3YgICAgcjIsIHIwCiAg
ICAgICAgMHhiNGM1ZDdmZTogICAgbW92ICAgIHIzLCByMQogICAgICAgIDB4YjRjNWQ4MDA6ICAg
IG1vdnMgICByMSwgIzAKICAgICAgICAweGI0YzVkODAyOiAgICBtb3YgICAgcjAsIHI3CiAgICAg
ICAgMHhiNGM1ZDgwNDogICAgbW92dyAgIHIxMiwgIzUxNjM2CiAgICAgICAgMHhiNGM1ZDgwODog
ICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZDgwYzogICAgc3RyICAgIHIxMiwg
W3I3LCAjMjhdCiAgICAgICAgMHhiNGM1ZDgxMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAg
ICAweGI0YzVkODE0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWQ4MTg6ICAg
IHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWQ4MWE6ICAgIG1vdncgICByMTIsICM1MTgx
NwogICAgICAgIDB4YjRjNWQ4MWU6ICAgIG1vdnQgICByMTIsICM0Njc3NgogICAgICAgIDB4YjRj
NWQ4MjI6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVkODI0OiAgICBtb3Z3ICAgcjYsICM0
NjM0OAogICAgICAgIDB4YjRjNWQ4Mjg6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhi
NGM1ZDgyYzogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1ZDgyZTogICAgY21wICAg
IHIyLCAjMAogICAgICAgIDB4YjRjNWQ4MzA6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAg
MHhiNGM1ZDgzNDogICAgdHN0ICAgIHIwLCByMAogICAgICAgIDB4YjRjNWQ4MzY6ICAgIGJuZSAg
ICAweGI0YzVhNDU0CiAgICAgICAgMHhiNGM1ZDgzYTogICAgYiAgICAgIDB4YjRjNWIzNTQKICAg
IChTKSBbMTAxOF0gam5sZXNzICAgICAgICAgICAgbG9jNCwgSW50MzI6IDEwMDAoY29uc3QzMiks
IDUzNCgtPjE1NTIpCiAgICAgICAgMHhiNGM1ZDgzZTogICAgbGRyICAgIHIwLCBbcjcsICMtNDBd
CiAgICAgICAgMHhiNGM1ZDg0MjogICAgbGRyICAgIHIxLCBbcjcsICMtMzZdCiAgICAgICAgMHhi
NGM1ZDg0NjogICAgbW92ICAgIHIyLCAjMTAwMAogICAgICAgIDB4YjRjNWQ4NGE6ICAgIG1vdiAg
ICByMywgIzQyOTQ5NjcyOTUKICAgICAgICAweGI0YzVkODRlOiAgICBzdHIgICAgcjMsIFtzcCwg
IzRdCiAgICAgICAgMHhiNGM1ZDg1MDogICAgc3RyICAgIHIyLCBbc3BdCiAgICAgICAgMHhiNGM1
ZDg1MjogICAgbW92ICAgIHIyLCByMAogICAgICAgIDB4YjRjNWQ4NTQ6ICAgIG1vdiAgICByMywg
cjEKICAgICAgICAweGI0YzVkODU2OiAgICBtb3ZzICAgcjEsICMwCiAgICAgICAgMHhiNGM1ZDg1
ODogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWQ4NWE6ICAgIG1vdncgICByMTIsICM1
MTcwMAogICAgICAgIDB4YjRjNWQ4NWU6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4
YjRjNWQ4NjI6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWQ4NjY6ICAg
IG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1ZDg2YTogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgICAgICAweGI0YzVkODZlOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVk
ODcwOiAgICBtb3Z3ICAgcjEyLCAjNTE4MTcKICAgICAgICAweGI0YzVkODc0OiAgICBtb3Z0ICAg
cjEyLCAjNDY3NzYKICAgICAgICAweGI0YzVkODc4OiAgICBibHggICAgcjEyCiAgICAgICAgMHhi
NGM1ZDg3YTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVkODdlOiAgICBtb3Z0
ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWQ4ODI6ICAgIGxkciAgICByNiwgW3I2XQogICAg
ICAgIDB4YjRjNWQ4ODQ6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVkODg2OiAgICBi
bmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWQ4OGE6ICAgIHRzdCAgICByMCwgcjAKICAg
ICAgICAweGI0YzVkODhjOiAgICBiZXEgICAgMHhiNGM1YzNkOAogICAgICAgIDB4YjRjNWQ4OTA6
ICAgIGIgICAgICAweGI0YzViM2YyCiAgICAoUykgWzEwMzldIGdldF9mcm9tX3Njb3BlICAgIGxv
YzgsIGxvYzcsIGNhc2VzKEBpZDUpLCAyMDUwPFRocm93SWZOb3RGb3VuZHxHbG9iYWxMZXhpY2Fs
VmFyfE5vdEluaXRpYWxpemF0aW9uPiwgLTEyNjI1MDEzNzYgICAgcHJlZGljdGluZyBBcnJheQog
ICAgICAgIDB4YjRjNWQ4OTQ6ICAgIG1vdncgICByMSwgIzUxNzgwCiAgICAgICAgMHhiNGM1ZDg5
ODogICAgbW92dCAgIHIxLCAjNDU4MjIKICAgICAgICAweGI0YzVkODljOiAgICBtb3YgICAgcjAs
IHI3CiAgICAgICAgMHhiNGM1ZDg5ZTogICAgbW92dyAgIHIxMiwgIzUxNzg0CiAgICAgICAgMHhi
NGM1ZDhhMjogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZDhhNjogICAgc3Ry
ICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1ZDhhYTogICAgbW92dyAgIHI2LCAjNDIx
MjgKICAgICAgICAweGI0YzVkOGFlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRj
NWQ4YjI6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWQ4YjQ6ICAgIG1vdncgICBy
MTIsICMxMzE4NQogICAgICAgIDB4YjRjNWQ4Yjg6ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAg
ICAgIDB4YjRjNWQ4YmM6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVkOGJlOiAgICBtb3Z3
ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWQ4YzI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAgICAgMHhiNGM1ZDhjNjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1ZDhjODog
ICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWQ4Y2E6ICAgIGJuZSAgICAweGI0YzVlNjgw
CiAgICAgICAgMHhiNGM1ZDhjZTogICAgc3RyICAgIHIwLCBbcjcsICMtNzJdCiAgICAgICAgMHhi
NGM1ZDhkMjogICAgc3RyICAgIHIxLCBbcjcsICMtNjhdCiAgICAgICAgMHhiNGM1ZDhkNjogICAg
YiAgICAgIDB4YjRjNWI0NWEKICAgIChTKSBbMTA0N10gYXJyYXlfbGVuZ3RoICAgICAgbG9jOSwg
bG9jOCwgbGVuZ3RoKEBpZDE4KSBsbGludChhcnJheV9sZW5ndGgpICAgIHByZWRpY3RpbmcgTm9u
Ym9vbGludDMyCiAgICAgICAgMHhiNGM1ZDhkYTogICAgbW92dyAgIHIxMiwgIzIwODgKICAgICAg
ICAweGI0YzVkOGRlOiAgICBtb3Z0ICAgcjEyLCAjNDYyNzAKICAgICAgICAweGI0YzVkOGUyOiAg
ICBzdHIgICAgcjEyLCBbc3BdCiAgICAgICAgMHhiNGM1ZDhlNjogICAgbW92ICAgIHIyLCByMAog
ICAgICAgIDB4YjRjNWQ4ZTg6ICAgIG1vdiAgICByMywgcjEKICAgICAgICAweGI0YzVkOGVhOiAg
ICBtb3Z3ICAgcjEsICM0NTA1NgogICAgICAgIDB4YjRjNWQ4ZWU6ICAgIG1vdnQgICByMSwgIzQ2
MjYzCiAgICAgICAgMHhiNGM1ZDhmMjogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWQ4
ZjQ6ICAgIG1vdncgICByMTIsICM1MTgxNgogICAgICAgIDB4YjRjNWQ4Zjg6ICAgIG1vdnQgICBy
MTIsICM0NTgyMgogICAgICAgIDB4YjRjNWQ4ZmM6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQog
ICAgICAgIDB4YjRjNWQ5MDA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1ZDkw
NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVkOTA4OiAgICBzdHIgICAgcjcs
IFtyNl0KICAgICAgICAweGI0YzVkOTBhOiAgICBtb3Z3ICAgcjEyLCAjMTg1MTMKICAgICAgICAw
eGI0YzVkOTBlOiAgICBtb3Z0ICAgcjEyLCAjNDY3NzcKICAgICAgICAweGI0YzVkOTEyOiAgICBi
bHggICAgcjEyCiAgICAgICAgMHhiNGM1ZDkxNDogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAg
ICAweGI0YzVkOTE4OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWQ5MWM6ICAg
IGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWQ5MWU6ICAgIGNtcCAgICByMiwgIzAKICAg
ICAgICAweGI0YzVkOTIwOiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWQ5MjQ6
ICAgIHN0ciAgICByMCwgW3I3LCAjLTgwXQogICAgICAgIDB4YjRjNWQ5Mjg6ICAgIHN0ciAgICBy
MSwgW3I3LCAjLTc2XQogICAgICAgIDB4YjRjNWQ5MmM6ICAgIGIgICAgICAweGI0YzViNDk0CiAg
ICAoUykgWzEwNTZdIGpubGVzcyAgICAgICAgICAgIGxvYzYsIGxvYzksIDQ5MCgtPjE1NDYpCiAg
ICAgICAgMHhiNGM1ZDkzMDogICAgbGRyICAgIHIwLCBbcjcsICMtNTZdCiAgICAgICAgMHhiNGM1
ZDkzNDogICAgbGRyICAgIHIxLCBbcjcsICMtNTJdCiAgICAgICAgMHhiNGM1ZDkzODogICAgbGRy
ICAgIHIyLCBbcjcsICMtODBdCiAgICAgICAgMHhiNGM1ZDkzYzogICAgbGRyICAgIHIzLCBbcjcs
ICMtNzZdCiAgICAgICAgMHhiNGM1ZDk0MDogICAgc3RyICAgIHIzLCBbc3AsICM0XQogICAgICAg
IDB4YjRjNWQ5NDI6ICAgIHN0ciAgICByMiwgW3NwXQogICAgICAgIDB4YjRjNWQ5NDQ6ICAgIG1v
diAgICByMiwgcjAKICAgICAgICAweGI0YzVkOTQ2OiAgICBtb3YgICAgcjMsIHIxCiAgICAgICAg
MHhiNGM1ZDk0ODogICAgbW92cyAgIHIxLCAjMAogICAgICAgIDB4YjRjNWQ5NGE6ICAgIG1vdiAg
ICByMCwgcjcKICAgICAgICAweGI0YzVkOTRjOiAgICBtb3Z3ICAgcjEyLCAjNTE4NTIKICAgICAg
ICAweGI0YzVkOTUwOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVkOTU0OiAg
ICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVkOTU4OiAgICBtb3Z3ICAgcjYs
ICM0MjEyOAogICAgICAgIDB4YjRjNWQ5NWM6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAg
MHhiNGM1ZDk2MDogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1ZDk2MjogICAgbW92
dyAgIHIxMiwgIzUxODE3CiAgICAgICAgMHhiNGM1ZDk2NjogICAgbW92dCAgIHIxMiwgIzQ2Nzc2
CiAgICAgICAgMHhiNGM1ZDk2YTogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWQ5NmM6ICAg
IG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1ZDk3MDogICAgbW92dCAgIHI2LCAjNDYy
MDcKICAgICAgICAweGI0YzVkOTc0OiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVk
OTc2OiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1ZDk3ODogICAgYm5lICAgIDB4YjRj
NWU2ODAKICAgICAgICAweGI0YzVkOTdjOiAgICB0c3QgICAgcjAsIHIwCiAgICAgICAgMHhiNGM1
ZDk3ZTogICAgYmVxICAgIDB4YjRjNWMzNjIKICAgICAgICAweGI0YzVkOTgyOiAgICBiICAgICAg
MHhiNGM1YjUwZQogICAgKFMpIFsxMDcxXSBnZXRfZnJvbV9zY29wZSAgICBsb2M4LCBsb2M3LCBj
YXNlcyhAaWQ1KSwgMjA1MDxUaHJvd0lmTm90Rm91bmR8R2xvYmFsTGV4aWNhbFZhcnxOb3RJbml0
aWFsaXphdGlvbj4sIC0xMjYyNTAxMzc2ICAgIHByZWRpY3RpbmcgQXJyYXkKICAgICAgICAweGI0
YzVkOTg2OiAgICBtb3Z3ICAgcjEsICM1MTkwOAogICAgICAgIDB4YjRjNWQ5OGE6ICAgIG1vdnQg
ICByMSwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZDk4ZTogICAgbW92ICAgIHIwLCByNwogICAgICAg
IDB4YjRjNWQ5OTA6ICAgIG1vdncgICByMTIsICM1MTkxMgogICAgICAgIDB4YjRjNWQ5OTQ6ICAg
IG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWQ5OTg6ICAgIHN0ciAgICByMTIsIFty
NywgIzI4XQogICAgICAgIDB4YjRjNWQ5OWM6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAg
MHhiNGM1ZDlhMDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVkOWE0OiAgICBz
dHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVkOWE2OiAgICBtb3Z3ICAgcjEyLCAjMTMxODUK
ICAgICAgICAweGI0YzVkOWFhOiAgICBtb3Z0ICAgcjEyLCAjNDY3NzcKICAgICAgICAweGI0YzVk
OWFlOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1ZDliMDogICAgbW92dyAgIHI2LCAjNDYz
NDgKICAgICAgICAweGI0YzVkOWI0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRj
NWQ5Yjg6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWQ5YmE6ICAgIGNtcCAgICBy
MiwgIzAKICAgICAgICAweGI0YzVkOWJjOiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4
YjRjNWQ5YzA6ICAgIHN0ciAgICByMCwgW3I3LCAjLTcyXQogICAgICAgIDB4YjRjNWQ5YzQ6ICAg
IHN0ciAgICByMSwgW3I3LCAjLTY4XQogICAgICAgIDB4YjRjNWQ5Yzg6ICAgIGIgICAgICAweGI0
YzViNTU2CiAgICAoUykgWzEwNzldIGdldF9ieV92YWwgICAgICAgIGxvYzYsIGxvYzgsIGxvYzUg
ICAgQXJyYXlXaXRoQ29udGlndW91cywgT3JpZ2luYWw7IHByZWRpY3RpbmcgTm9uaW50YXNkb3Vi
bGUKICAgICAgICAweGI0YzVkOWNjOiAgICBiICAgICAgMHhiNGM1ZDlmOAogICAgICAgIDB4YjRj
NWQ5Y2U6ICAgIGxkciAgICByNiwgW3IwXQogICAgICAgIDB4YjRjNWQ5ZDA6ICAgIG1vdncgICBy
MTIsICMzMjQxNgogICAgICAgIDB4YjRjNWQ5ZDQ6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAg
ICAgIDB4YjRjNWQ5ZDg6ICAgIGNtcCAgICByNiwgcjEyCiAgICAgICAgMHhiNGM1ZDlkYzogICAg
Ym5lICAgIDB4YjRjNWQ5ZjgKICAgICAgICAweGI0YzVkOWRlOiAgICBtb3Z3ICAgcjEyLCAjMTYy
MjUKICAgICAgICAweGI0YzVkOWUyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgICAgICAweGI0
YzVkOWU2OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1ZDllODogICAgdHN0ICAgIHIwLCBy
MAogICAgICAgIDB4YjRjNWQ5ZWE6ICAgIGJlcSAgICAweGI0YzVkOWY4CiAgICAgICAgMHhiNGM1
ZDllYzogICAgc3RyICAgIHIwLCBbcjcsICMtNTZdCiAgICAgICAgMHhiNGM1ZDlmMDogICAgc3Ry
ICAgIHIxLCBbcjcsICMtNTJdCiAgICAgICAgMHhiNGM1ZDlmNDogICAgYiAgICAgIDB4YjRjNWI1
YmEKICAgICAgICAweGI0YzVkOWY4OiAgICBsZHIgICAgcjAsIFtyNywgIy03Ml0KICAgICAgICAw
eGI0YzVkOWZjOiAgICBsZHIgICAgcjEsIFtyNywgIy02OF0KICAgICAgICAweGI0YzVkYTAwOiAg
ICBsZHIgICAgcjIsIFtyNywgIy00OF0KICAgICAgICAweGI0YzVkYTA0OiAgICBsZHIgICAgcjMs
IFtyNywgIy00NF0KICAgICAgICAweGI0YzVkYTA4OiAgICBtb3Z3ICAgcjEyLCAjMjc4ODAKICAg
ICAgICAweGI0YzVkYTBjOiAgICBtb3Z0ICAgcjEyLCAjNDYyNzAKICAgICAgICAweGI0YzVkYTEw
OiAgICBzdHIgICAgcjEyLCBbc3AsICM4XQogICAgICAgIDB4YjRjNWRhMTQ6ICAgIHN0ciAgICBy
MywgW3NwLCAjNF0KICAgICAgICAweGI0YzVkYTE2OiAgICBzdHIgICAgcjIsIFtzcF0KICAgICAg
ICAweGI0YzVkYTE4OiAgICBtb3YgICAgcjIsIHIwCiAgICAgICAgMHhiNGM1ZGExYTogICAgbW92
ICAgIHIzLCByMQogICAgICAgIDB4YjRjNWRhMWM6ICAgIG1vdnMgICByMSwgIzAKICAgICAgICAw
eGI0YzVkYTFlOiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1ZGEyMDogICAgbW92dyAg
IHIxMiwgIzUxOTQ0CiAgICAgICAgMHhiNGM1ZGEyNDogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAg
ICAgICAgMHhiNGM1ZGEyODogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1
ZGEyYzogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVkYTMwOiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgICAgIDB4YjRjNWRhMzQ6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAg
IDB4YjRjNWRhMzY6ICAgIG1vdncgICByMTIsICMxMzAzMwogICAgICAgIDB4YjRjNWRhM2E6ICAg
IG1vdnQgICByMTIsICM0Njc3NwogICAgICAgIDB4YjRjNWRhM2U6ICAgIGJseCAgICByMTIKICAg
ICAgICAweGI0YzVkYTQwOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWRhNDQ6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZGE0ODogICAgbGRyICAgIHI2LCBb
cjZdCiAgICAgICAgMHhiNGM1ZGE0YTogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWRh
NGM6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1ZGE1MDogICAgc3RyICAgIHIw
LCBbcjcsICMtNTZdCiAgICAgICAgMHhiNGM1ZGE1NDogICAgc3RyICAgIHIxLCBbcjcsICMtNTJd
CiAgICAgICAgMHhiNGM1ZGE1ODogICAgYiAgICAgIDB4YjRjNWI1YmEKICAgIChTKSBbMTEwMV0g
Z2V0X2Zyb21fc2NvcGUgICAgbG9jMTAsIGxvYzksIGNhc2VzKEBpZDUpLCAyMDUwPFRocm93SWZO
b3RGb3VuZHxHbG9iYWxMZXhpY2FsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgLTEyNjI1MDEzNzYg
ICAgcHJlZGljdGluZyBBcnJheQogICAgICAgIDB4YjRjNWRhNWM6ICAgIG1vdncgICByMSwgIzUy
MDI4CiAgICAgICAgMHhiNGM1ZGE2MDogICAgbW92dCAgIHIxLCAjNDU4MjIKICAgICAgICAweGI0
YzVkYTY0OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1ZGE2NjogICAgbW92dyAgIHIx
MiwgIzUyMDMyCiAgICAgICAgMHhiNGM1ZGE2YTogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAg
ICAgMHhiNGM1ZGE2ZTogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1ZGE3
MjogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVkYTc2OiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgICAgIDB4YjRjNWRhN2E6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4
YjRjNWRhN2M6ICAgIG1vdncgICByMTIsICMxMzE4NQogICAgICAgIDB4YjRjNWRhODA6ICAgIG1v
dnQgICByMTIsICM0Njc3NwogICAgICAgIDB4YjRjNWRhODQ6ICAgIGJseCAgICByMTIKICAgICAg
ICAweGI0YzVkYTg2OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWRhOGE6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZGE4ZTogICAgbGRyICAgIHI2LCBbcjZd
CiAgICAgICAgMHhiNGM1ZGE5MDogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWRhOTI6
ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1ZGE5NjogICAgc3RyICAgIHIwLCBb
cjcsICMtODhdCiAgICAgICAgMHhiNGM1ZGE5YTogICAgc3RyICAgIHIxLCBbcjcsICMtODRdCiAg
ICAgICAgMHhiNGM1ZGE5ZTogICAgYiAgICAgIDB4YjRjNWI2MjIKICAgIChTKSBbMTEwOV0gYXJy
YXlfbGVuZ3RoICAgICAgbG9jMTEsIGxvYzEwLCBsZW5ndGgoQGlkMTgpIGxsaW50KGFycmF5X2xl
bmd0aCkgICAgcHJlZGljdGluZyBOb25ib29saW50MzIKICAgICAgICAweGI0YzVkYWEyOiAgICBt
b3Z3ICAgcjEyLCAjMjA4OAogICAgICAgIDB4YjRjNWRhYTY6ICAgIG1vdnQgICByMTIsICM0NjI3
MAogICAgICAgIDB4YjRjNWRhYWE6ICAgIHN0ciAgICByMTIsIFtzcF0KICAgICAgICAweGI0YzVk
YWFlOiAgICBtb3YgICAgcjIsIHIwCiAgICAgICAgMHhiNGM1ZGFiMDogICAgbW92ICAgIHIzLCBy
MQogICAgICAgIDB4YjRjNWRhYjI6ICAgIG1vdncgICByMSwgIzQ1MTI4CiAgICAgICAgMHhiNGM1
ZGFiNjogICAgbW92dCAgIHIxLCAjNDYyNjMKICAgICAgICAweGI0YzVkYWJhOiAgICBtb3YgICAg
cjAsIHI3CiAgICAgICAgMHhiNGM1ZGFiYzogICAgbW92dyAgIHIxMiwgIzUyMDY0CiAgICAgICAg
MHhiNGM1ZGFjMDogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZGFjNDogICAg
c3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1ZGFjODogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgICAgICAweGI0YzVkYWNjOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4
YjRjNWRhZDA6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWRhZDI6ICAgIG1vdncg
ICByMTIsICMxODUxMwogICAgICAgIDB4YjRjNWRhZDY6ICAgIG1vdnQgICByMTIsICM0Njc3Nwog
ICAgICAgIDB4YjRjNWRhZGE6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVkYWRjOiAgICBt
b3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWRhZTA6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAgICAgMHhiNGM1ZGFlNDogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1ZGFl
NjogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWRhZTg6ICAgIGJuZSAgICAweGI0YzVl
NjgwCiAgICAgICAgMHhiNGM1ZGFlYzogICAgc3RyICAgIHIwLCBbcjcsICMtOTZdCiAgICAgICAg
MHhiNGM1ZGFmMDogICAgc3RyICAgIHIxLCBbcjcsICMtOTJdCiAgICAgICAgMHhiNGM1ZGFmNDog
ICAgYiAgICAgIDB4YjRjNWI2NWMKICAgIChTKSBbMTExOF0gam5sZXNzICAgICAgICAgICAgbG9j
OCwgbG9jMTEsIDM5NSgtPjE1MTMpCiAgICAgICAgMHhiNGM1ZGFmODogICAgbGRyICAgIHIwLCBb
cjcsICMtNzJdCiAgICAgICAgMHhiNGM1ZGFmYzogICAgbGRyICAgIHIxLCBbcjcsICMtNjhdCiAg
ICAgICAgMHhiNGM1ZGIwMDogICAgbGRyICAgIHIyLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1
ZGIwNDogICAgbGRyICAgIHIzLCBbcjcsICMtOTJdCiAgICAgICAgMHhiNGM1ZGIwODogICAgc3Ry
ICAgIHIzLCBbc3AsICM0XQogICAgICAgIDB4YjRjNWRiMGE6ICAgIHN0ciAgICByMiwgW3NwXQog
ICAgICAgIDB4YjRjNWRiMGM6ICAgIG1vdiAgICByMiwgcjAKICAgICAgICAweGI0YzVkYjBlOiAg
ICBtb3YgICAgcjMsIHIxCiAgICAgICAgMHhiNGM1ZGIxMDogICAgbW92cyAgIHIxLCAjMAogICAg
ICAgIDB4YjRjNWRiMTI6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVkYjE0OiAgICBt
b3Z3ICAgcjEyLCAjNTIxMDAKICAgICAgICAweGI0YzVkYjE4OiAgICBtb3Z0ICAgcjEyLCAjNDU4
MjIKICAgICAgICAweGI0YzVkYjFjOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAw
eGI0YzVkYjIwOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWRiMjQ6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZGIyODogICAgc3RyICAgIHI3LCBbcjZdCiAg
ICAgICAgMHhiNGM1ZGIyYTogICAgbW92dyAgIHIxMiwgIzUxODE3CiAgICAgICAgMHhiNGM1ZGIy
ZTogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAgICAgMHhiNGM1ZGIzMjogICAgYmx4ICAgIHIx
MgogICAgICAgIDB4YjRjNWRiMzQ6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1
ZGIzODogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVkYjNjOiAgICBsZHIgICAg
cjYsIFtyNl0KICAgICAgICAweGI0YzVkYjNlOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhi
NGM1ZGI0MDogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVkYjQ0OiAgICB0c3Qg
ICAgcjAsIHIwCiAgICAgICAgMHhiNGM1ZGI0NjogICAgYmVxICAgIDB4YjRjNWMyNGMKICAgICAg
ICAweGI0YzVkYjRhOiAgICBiICAgICAgMHhiNGM1YjZkNgogICAgKFMpIFsxMTM5XSBnZXRfZnJv
bV9zY29wZSAgICBsb2MxMiwgbG9jMTEsIGNhc2VzKEBpZDUpLCAyMDUwPFRocm93SWZOb3RGb3Vu
ZHxHbG9iYWxMZXhpY2FsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgLTEyNjI1MDEzNzYgICAgcHJl
ZGljdGluZyBBcnJheQogICAgICAgIDB4YjRjNWRiNGU6ICAgIG1vdncgICByMSwgIzUyMTgwCiAg
ICAgICAgMHhiNGM1ZGI1MjogICAgbW92dCAgIHIxLCAjNDU4MjIKICAgICAgICAweGI0YzVkYjU2
OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1ZGI1ODogICAgbW92dyAgIHIxMiwgIzUy
MTg0CiAgICAgICAgMHhiNGM1ZGI1YzogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhi
NGM1ZGI2MDogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1ZGI2NDogICAg
bW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVkYjY4OiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgICAgIDB4YjRjNWRiNmM6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWRi
NmU6ICAgIG1vdncgICByMTIsICMxMzE4NQogICAgICAgIDB4YjRjNWRiNzI6ICAgIG1vdnQgICBy
MTIsICM0Njc3NwogICAgICAgIDB4YjRjNWRiNzY6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0
YzVkYjc4OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWRiN2M6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZGI4MDogICAgbGRyICAgIHI2LCBbcjZdCiAgICAg
ICAgMHhiNGM1ZGI4MjogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWRiODQ6ICAgIGJu
ZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1ZGI4ODogICAgc3RyICAgIHIwLCBbcjcsICMt
MTA0XQogICAgICAgIDB4YjRjNWRiOGM6ICAgIHN0ciAgICByMSwgW3I3LCAjLTEwMF0KICAgICAg
ICAweGI0YzVkYjkwOiAgICBiICAgICAgMHhiNGM1YjczZQogICAgKFMpIFsxMTQ3XSBnZXRfYnlf
dmFsICAgICAgICBsb2M5LCBsb2MxMiwgbG9jNyAgICBBcnJheVdpdGhDb250aWd1b3VzLCBPcmln
aW5hbDsgcHJlZGljdGluZyBBbnlJbnRBc0RvdWJsZQogICAgICAgIDB4YjRjNWRiOTQ6ICAgIGIg
ICAgICAweGI0YzVkYmMwCiAgICAgICAgMHhiNGM1ZGI5NjogICAgbGRyICAgIHI2LCBbcjBdCiAg
ICAgICAgMHhiNGM1ZGI5ODogICAgbW92dyAgIHIxMiwgIzMyNDE2CiAgICAgICAgMHhiNGM1ZGI5
YzogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZGJhMDogICAgY21wICAgIHI2
LCByMTIKICAgICAgICAweGI0YzVkYmE0OiAgICBibmUgICAgMHhiNGM1ZGJjMAogICAgICAgIDB4
YjRjNWRiYTY6ICAgIG1vdncgICByMTIsICMxNjIyNQogICAgICAgIDB4YjRjNWRiYWE6ICAgIG1v
dnQgICByMTIsICM0NjgzMgogICAgICAgIDB4YjRjNWRiYWU6ICAgIGJseCAgICByMTIKICAgICAg
ICAweGI0YzVkYmIwOiAgICB0c3QgICAgcjAsIHIwCiAgICAgICAgMHhiNGM1ZGJiMjogICAgYmVx
ICAgIDB4YjRjNWRiYzAKICAgICAgICAweGI0YzVkYmI0OiAgICBzdHIgICAgcjAsIFtyNywgIy04
MF0KICAgICAgICAweGI0YzVkYmI4OiAgICBzdHIgICAgcjEsIFtyNywgIy03Nl0KICAgICAgICAw
eGI0YzVkYmJjOiAgICBiICAgICAgMHhiNGM1YjdhMgogICAgICAgIDB4YjRjNWRiYzA6ICAgIGxk
ciAgICByMCwgW3I3LCAjLTEwNF0KICAgICAgICAweGI0YzVkYmM0OiAgICBsZHIgICAgcjEsIFty
NywgIy0xMDBdCiAgICAgICAgMHhiNGM1ZGJjODogICAgbGRyICAgIHIyLCBbcjcsICMtNjRdCiAg
ICAgICAgMHhiNGM1ZGJjYzogICAgbGRyICAgIHIzLCBbcjcsICMtNjBdCiAgICAgICAgMHhiNGM1
ZGJkMDogICAgbW92dyAgIHIxMiwgIzI3OTM2CiAgICAgICAgMHhiNGM1ZGJkNDogICAgbW92dCAg
IHIxMiwgIzQ2MjcwCiAgICAgICAgMHhiNGM1ZGJkODogICAgc3RyICAgIHIxMiwgW3NwLCAjOF0K
ICAgICAgICAweGI0YzVkYmRjOiAgICBzdHIgICAgcjMsIFtzcCwgIzRdCiAgICAgICAgMHhiNGM1
ZGJkZTogICAgc3RyICAgIHIyLCBbc3BdCiAgICAgICAgMHhiNGM1ZGJlMDogICAgbW92ICAgIHIy
LCByMAogICAgICAgIDB4YjRjNWRiZTI6ICAgIG1vdiAgICByMywgcjEKICAgICAgICAweGI0YzVk
YmU0OiAgICBtb3ZzICAgcjEsICMwCiAgICAgICAgMHhiNGM1ZGJlNjogICAgbW92ICAgIHIwLCBy
NwogICAgICAgIDB4YjRjNWRiZTg6ICAgIG1vdncgICByMTIsICM1MjIxNgogICAgICAgIDB4YjRj
NWRiZWM6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWRiZjA6ICAgIHN0ciAg
ICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWRiZjQ6ICAgIG1vdncgICByNiwgIzQyMTI4
CiAgICAgICAgMHhiNGM1ZGJmODogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVk
YmZjOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVkYmZlOiAgICBtb3Z3ICAgcjEy
LCAjMTMwMzMKICAgICAgICAweGI0YzVkYzAyOiAgICBtb3Z0ICAgcjEyLCAjNDY3NzcKICAgICAg
ICAweGI0YzVkYzA2OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1ZGMwODogICAgbW92dyAg
IHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVkYzBjOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAg
ICAgIDB4YjRjNWRjMTA6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWRjMTI6ICAg
IGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVkYzE0OiAgICBibmUgICAgMHhiNGM1ZTY4MAog
ICAgICAgIDB4YjRjNWRjMTg6ICAgIHN0ciAgICByMCwgW3I3LCAjLTgwXQogICAgICAgIDB4YjRj
NWRjMWM6ICAgIHN0ciAgICByMSwgW3I3LCAjLTc2XQogICAgICAgIDB4YjRjNWRjMjA6ICAgIGIg
ICAgICAweGI0YzViN2EyCiAgICAoUykgWzExNjBdIGdldF9mcm9tX3Njb3BlICAgIGxvYzEyLCBs
b2MxMSwgZXhwZWN0ZWRSZXN1bHRzKEBpZDE0KSwgMjA1MDxUaHJvd0lmTm90Rm91bmR8R2xvYmFs
TGV4aWNhbFZhcnxOb3RJbml0aWFsaXphdGlvbj4sIC0xMjYyNTAxMzYwICAgIHByZWRpY3Rpbmcg
QXJyYXkKICAgICAgICAweGI0YzVkYzI0OiAgICBtb3Z3ICAgcjEsICM1MjI2NAogICAgICAgIDB4
YjRjNWRjMjg6ICAgIG1vdnQgICByMSwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZGMyYzogICAgbW92
ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWRjMmU6ICAgIG1vdncgICByMTIsICM1MjI2OAogICAg
ICAgIDB4YjRjNWRjMzI6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWRjMzY6
ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWRjM2E6ICAgIG1vdncgICBy
NiwgIzQyMTI4CiAgICAgICAgMHhiNGM1ZGMzZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAg
ICAweGI0YzVkYzQyOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVkYzQ0OiAgICBt
b3Z3ICAgcjEyLCAjMTMxODUKICAgICAgICAweGI0YzVkYzQ4OiAgICBtb3Z0ICAgcjEyLCAjNDY3
NzcKICAgICAgICAweGI0YzVkYzRjOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1ZGM0ZTog
ICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVkYzUyOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgICAgIDB4YjRjNWRjNTY6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRj
NWRjNTg6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVkYzVhOiAgICBibmUgICAgMHhi
NGM1ZTY4MAogICAgICAgIDB4YjRjNWRjNWU6ICAgIHN0ciAgICByMCwgW3I3LCAjLTEwNF0KICAg
ICAgICAweGI0YzVkYzYyOiAgICBzdHIgICAgcjEsIFtyNywgIy0xMDBdCiAgICAgICAgMHhiNGM1
ZGM2NjogICAgYiAgICAgIDB4YjRjNWI3ZGEKICAgIChTKSBbMTE2OF0gZ2V0X2J5X3ZhbCAgICAg
ICAgbG9jMTEsIGxvYzEyLCBsb2M1ICAgIEFycmF5V2l0aENvbnRpZ3VvdXMsIE9yaWdpbmFsOyBw
cmVkaWN0aW5nIEFycmF5CiAgICAgICAgMHhiNGM1ZGM2YTogICAgYiAgICAgIDB4YjRjNWRjOTYK
ICAgICAgICAweGI0YzVkYzZjOiAgICBsZHIgICAgcjYsIFtyMF0KICAgICAgICAweGI0YzVkYzZl
OiAgICBtb3Z3ICAgcjEyLCAjMzI0MTYKICAgICAgICAweGI0YzVkYzcyOiAgICBtb3Z0ICAgcjEy
LCAjNDYyMDcKICAgICAgICAweGI0YzVkYzc2OiAgICBjbXAgICAgcjYsIHIxMgogICAgICAgIDB4
YjRjNWRjN2E6ICAgIGJuZSAgICAweGI0YzVkYzk2CiAgICAgICAgMHhiNGM1ZGM3YzogICAgbW92
dyAgIHIxMiwgIzE2MjI1CiAgICAgICAgMHhiNGM1ZGM4MDogICAgbW92dCAgIHIxMiwgIzQ2ODMy
CiAgICAgICAgMHhiNGM1ZGM4NDogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWRjODY6ICAg
IHRzdCAgICByMCwgcjAKICAgICAgICAweGI0YzVkYzg4OiAgICBiZXEgICAgMHhiNGM1ZGM5Ngog
ICAgICAgIDB4YjRjNWRjOGE6ICAgIHN0ciAgICByMCwgW3I3LCAjLTk2XQogICAgICAgIDB4YjRj
NWRjOGU6ICAgIHN0ciAgICByMSwgW3I3LCAjLTkyXQogICAgICAgIDB4YjRjNWRjOTI6ICAgIGIg
ICAgICAweGI0YzViODNlCiAgICAgICAgMHhiNGM1ZGM5NjogICAgbGRyICAgIHIwLCBbcjcsICMt
MTA0XQogICAgICAgIDB4YjRjNWRjOWE6ICAgIGxkciAgICByMSwgW3I3LCAjLTEwMF0KICAgICAg
ICAweGI0YzVkYzllOiAgICBsZHIgICAgcjIsIFtyNywgIy00OF0KICAgICAgICAweGI0YzVkY2Ey
OiAgICBsZHIgICAgcjMsIFtyNywgIy00NF0KICAgICAgICAweGI0YzVkY2E2OiAgICBtb3Z3ICAg
cjEyLCAjMjc5OTIKICAgICAgICAweGI0YzVkY2FhOiAgICBtb3Z0ICAgcjEyLCAjNDYyNzAKICAg
ICAgICAweGI0YzVkY2FlOiAgICBzdHIgICAgcjEyLCBbc3AsICM4XQogICAgICAgIDB4YjRjNWRj
YjI6ICAgIHN0ciAgICByMywgW3NwLCAjNF0KICAgICAgICAweGI0YzVkY2I0OiAgICBzdHIgICAg
cjIsIFtzcF0KICAgICAgICAweGI0YzVkY2I2OiAgICBtb3YgICAgcjIsIHIwCiAgICAgICAgMHhi
NGM1ZGNiODogICAgbW92ICAgIHIzLCByMQogICAgICAgIDB4YjRjNWRjYmE6ICAgIG1vdnMgICBy
MSwgIzAKICAgICAgICAweGI0YzVkY2JjOiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1
ZGNiZTogICAgbW92dyAgIHIxMiwgIzUyMzAwCiAgICAgICAgMHhiNGM1ZGNjMjogICAgbW92dCAg
IHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZGNjNjogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhd
CiAgICAgICAgMHhiNGM1ZGNjYTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVk
Y2NlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWRjZDI6ICAgIHN0ciAgICBy
NywgW3I2XQogICAgICAgIDB4YjRjNWRjZDQ6ICAgIG1vdncgICByMTIsICMxMzAzMwogICAgICAg
IDB4YjRjNWRjZDg6ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAgICAgIDB4YjRjNWRjZGM6ICAg
IGJseCAgICByMTIKICAgICAgICAweGI0YzVkY2RlOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAg
ICAgIDB4YjRjNWRjZTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZGNlNjog
ICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1ZGNlODogICAgY21wICAgIHIyLCAjMAog
ICAgICAgIDB4YjRjNWRjZWE6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1ZGNl
ZTogICAgc3RyICAgIHIwLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1ZGNmMjogICAgc3RyICAg
IHIxLCBbcjcsICMtOTJdCiAgICAgICAgMHhiNGM1ZGNmNjogICAgYiAgICAgIDB4YjRjNWI4M2UK
ICAgIChTKSBbMTE3NF0gZ2V0X2J5X3ZhbCAgICAgICAgbG9jOCwgbG9jMTEsIGxvYzcgICAgQXJy
YXlXaXRoQ29udGlndW91cywgT3JpZ2luYWw7IHByZWRpY3RpbmcgTm9uaW50YXNkb3VibGUKICAg
ICAgICAweGI0YzVkY2ZhOiAgICBiICAgICAgMHhiNGM1ZGQyNgogICAgICAgIDB4YjRjNWRjZmM6
ICAgIGxkciAgICByNiwgW3IwXQogICAgICAgIDB4YjRjNWRjZmU6ICAgIG1vdncgICByMTIsICMz
MjQxNgogICAgICAgIDB4YjRjNWRkMDI6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgICAgIDB4
YjRjNWRkMDY6ICAgIGNtcCAgICByNiwgcjEyCiAgICAgICAgMHhiNGM1ZGQwYTogICAgYm5lICAg
IDB4YjRjNWRkMjYKICAgICAgICAweGI0YzVkZDBjOiAgICBtb3Z3ICAgcjEyLCAjMTYyMjUKICAg
ICAgICAweGI0YzVkZDEwOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgICAgICAweGI0YzVkZDE0
OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1ZGQxNjogICAgdHN0ICAgIHIwLCByMAogICAg
ICAgIDB4YjRjNWRkMTg6ICAgIGJlcSAgICAweGI0YzVkZDI2CiAgICAgICAgMHhiNGM1ZGQxYTog
ICAgc3RyICAgIHIwLCBbcjcsICMtNzJdCiAgICAgICAgMHhiNGM1ZGQxZTogICAgc3RyICAgIHIx
LCBbcjcsICMtNjhdCiAgICAgICAgMHhiNGM1ZGQyMjogICAgYiAgICAgIDB4YjRjNWI4YTIKICAg
ICAgICAweGI0YzVkZDI2OiAgICBsZHIgICAgcjAsIFtyNywgIy05Nl0KICAgICAgICAweGI0YzVk
ZDJhOiAgICBsZHIgICAgcjEsIFtyNywgIy05Ml0KICAgICAgICAweGI0YzVkZDJlOiAgICBsZHIg
ICAgcjIsIFtyNywgIy02NF0KICAgICAgICAweGI0YzVkZDMyOiAgICBsZHIgICAgcjMsIFtyNywg
Iy02MF0KICAgICAgICAweGI0YzVkZDM2OiAgICBtb3Z3ICAgcjEyLCAjMjgwNDgKICAgICAgICAw
eGI0YzVkZDNhOiAgICBtb3Z0ICAgcjEyLCAjNDYyNzAKICAgICAgICAweGI0YzVkZDNlOiAgICBz
dHIgICAgcjEyLCBbc3AsICM4XQogICAgICAgIDB4YjRjNWRkNDI6ICAgIHN0ciAgICByMywgW3Nw
LCAjNF0KICAgICAgICAweGI0YzVkZDQ0OiAgICBzdHIgICAgcjIsIFtzcF0KICAgICAgICAweGI0
YzVkZDQ2OiAgICBtb3YgICAgcjIsIHIwCiAgICAgICAgMHhiNGM1ZGQ0ODogICAgbW92ICAgIHIz
LCByMQogICAgICAgIDB4YjRjNWRkNGE6ICAgIG1vdnMgICByMSwgIzAKICAgICAgICAweGI0YzVk
ZDRjOiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1ZGQ0ZTogICAgbW92dyAgIHIxMiwg
IzUyMzI0CiAgICAgICAgMHhiNGM1ZGQ1MjogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAg
MHhiNGM1ZGQ1NjogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1ZGQ1YTog
ICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVkZDVlOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgICAgIDB4YjRjNWRkNjI6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRj
NWRkNjQ6ICAgIG1vdncgICByMTIsICMxMzAzMwogICAgICAgIDB4YjRjNWRkNjg6ICAgIG1vdnQg
ICByMTIsICM0Njc3NwogICAgICAgIDB4YjRjNWRkNmM6ICAgIGJseCAgICByMTIKICAgICAgICAw
eGI0YzVkZDZlOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWRkNzI6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZGQ3NjogICAgbGRyICAgIHI2LCBbcjZdCiAg
ICAgICAgMHhiNGM1ZGQ3ODogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWRkN2E6ICAg
IGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1ZGQ3ZTogICAgc3RyICAgIHIwLCBbcjcs
ICMtNzJdCiAgICAgICAgMHhiNGM1ZGQ4MjogICAgc3RyICAgIHIxLCBbcjcsICMtNjhdCiAgICAg
ICAgMHhiNGM1ZGQ4NjogICAgYiAgICAgIDB4YjRjNWI4YTIKICAgIChTKSBbMTIwMV0gY2FsbCAg
ICAgICAgICAgICAgbG9jMTAsIGxvYzExLCAzLCAyMCBsbGludCgweGI0N2YwZDQwLCBleGVjIDB4
YjQ3ZDVhYzApIHN0YXR1cygoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjBkNDAgKDB4YjQ3ZjcwOTA6
W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTog
b3BhcXVlUG93I0M2a2hlOTpbMHhiNDc5MzdlMC0+MHhiNDdkNWFjMCwgQmFzZWxpbmVGdW5jdGlv
bkNhbGwsIDQ3IChOZXZlcklubGluZSldKSkgICAgTm9uQXJyYXk7IHByZWRpY3RpbmcgTm9uaW50
YXNkb3VibGUKICAgICAgICAweGI0YzVkZDhhOiAgICBtb3Z3ICAgcjIsICM0NTIwMAogICAgICAg
IDB4YjRjNWRkOGU6ICAgIG1vdnQgICByMiwgIzQ2MjYzCiAgICAgICAgMHhiNGM1ZGQ5MjogICAg
bW92dyAgIHIxMiwgIzE1MzI5CiAgICAgICAgMHhiNGM1ZGQ5NjogICAgbW92dCAgIHIxMiwgIzQ2
ODMyCiAgICAgICAgMHhiNGM1ZGQ5YTogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWRkOWM6
ICAgIG1vdiAgICBzcCwgcjcKICAgICAgICAweGI0YzVkZDllOiAgICBtdm4gICAgcjEyLCAjMTgz
CiAgICAgICAgMHhiNGM1ZGRhMjogICAgbW92ICAgIHNwLCBzcAogICAgICAgIDB4YjRjNWRkYTQ6
ICAgIGFkZCAgICBzcCwgcjEyCiAgICAgICAgMHhiNGM1ZGRhNjogICAgc3RyICAgIHIwLCBbcjcs
ICMtODhdCiAgICAgICAgMHhiNGM1ZGRhYTogICAgc3RyICAgIHIxLCBbcjcsICMtODRdCiAgICAg
ICAgMHhiNGM1ZGRhZTogICAgYiAgICAgIDB4YjRjNWI5NTAKICAgIChTKSBbMTIzMV0gY2FsbCAg
ICAgICAgICAgICAgbG9jMTEsIGxvYzExLCAzLCAyMCBsbGludCgweGI0N2YwZDIwLCBleGVjIDB4
YjQ3ZDVhNDApIHN0YXR1cygoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjBkMjAgKDB4YjQ3ZjcwOTA6
W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTog
aXNJZGVudGljYWwjRWExclFEOlsweGI0NzkxODYwLT4weGI0NzkzNjkwLT4weGI0N2Q1YTQwLCBE
RkdGdW5jdGlvbkNhbGwsIDk1XSkpICAgIE5vbkFycmF5OyBwcmVkaWN0aW5nIEJvb2wKICAgICAg
ICAweGI0YzVkZGIyOiAgICBtb3Z3ICAgcjIsICM0NTI3MgogICAgICAgIDB4YjRjNWRkYjY6ICAg
IG1vdnQgICByMiwgIzQ2MjYzCiAgICAgICAgMHhiNGM1ZGRiYTogICAgbW92dyAgIHIxMiwgIzE1
MzI5CiAgICAgICAgMHhiNGM1ZGRiZTogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAgICAgMHhi
NGM1ZGRjMjogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWRkYzQ6ICAgIG1vdiAgICBzcCwg
cjcKICAgICAgICAweGI0YzVkZGM2OiAgICBtdm4gICAgcjEyLCAjMTgzCiAgICAgICAgMHhiNGM1
ZGRjYTogICAgbW92ICAgIHNwLCBzcAogICAgICAgIDB4YjRjNWRkY2M6ICAgIGFkZCAgICBzcCwg
cjEyCiAgICAgICAgMHhiNGM1ZGRjZTogICAgc3RyICAgIHIwLCBbcjcsICMtOTZdCiAgICAgICAg
MHhiNGM1ZGRkMjogICAgc3RyICAgIHIxLCBbcjcsICMtOTJdCiAgICAgICAgMHhiNGM1ZGRkNjog
ICAgYiAgICAgIDB4YjRjNWI5ZmUKICAgIChTKSBbMTI0MF0ganRydWUgICAgICAgICAgICAgbG9j
MTEsIDQ4KC0+MTI4OCkKICAgICAgICAweGI0YzVkZGRhOiAgICBjbW4gICAgcjEsICM3CiAgICAg
ICAgMHhiNGM1ZGRkZTogICAgYmhpICAgIDB4YjRjNWRkZjYKICAgICAgICAweGI0YzVkZGUwOiAg
ICB2bGRyICAgZDAsIFtyNywgIy05Nl0KICAgICAgICAweGI0YzVkZGU0OiAgICAubG9uZyAgZWVi
NTBiNDAKICAgICAgICAweGI0YzVkZGU4OiAgICB2bXJzICAgYXBzcl9uemN2LCBmcHNjcgogICAg
ICAgIDB4YjRjNWRkZWM6ICAgIGJ2cyAgICAweGI0YzVkZGYyCiAgICAgICAgMHhiNGM1ZGRlZTog
ICAgYm5lICAgIDB4YjRjNWJiODYKICAgICAgICAweGI0YzVkZGYyOiAgICBiICAgICAgMHhiNGM1
YmExNAogICAgICAgIDB4YjRjNWRkZjY6ICAgIG1vdiAgICByMiwgcjAKICAgICAgICAweGI0YzVk
ZGY4OiAgICBtb3YgICAgcjMsIHIxCiAgICAgICAgMHhiNGM1ZGRmYTogICAgbW92cyAgIHIxLCAj
MAogICAgICAgIDB4YjRjNWRkZmM6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVkZGZl
OiAgICBtb3Z3ICAgcjEyLCAjNTI1ODgKICAgICAgICAweGI0YzVkZTAyOiAgICBtb3Z0ICAgcjEy
LCAjNDU4MjIKICAgICAgICAweGI0YzVkZTA2OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAg
ICAgICAweGI0YzVkZTBhOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWRlMGU6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZGUxMjogICAgc3RyICAgIHI3LCBb
cjZdCiAgICAgICAgMHhiNGM1ZGUxNDogICAgbW92dyAgIHIxMiwgIzU2NTY1CiAgICAgICAgMHhi
NGM1ZGUxODogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAgICAgMHhiNGM1ZGUxYzogICAgYmx4
ICAgIHIxMgogICAgICAgIDB4YjRjNWRlMWU6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAg
MHhiNGM1ZGUyMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVkZTI2OiAgICBs
ZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVkZTI4OiAgICBjbXAgICAgcjIsICMwCiAgICAg
ICAgMHhiNGM1ZGUyYTogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVkZTJlOiAg
ICB0c3QgICAgcjAsIHIwCiAgICAgICAgMHhiNGM1ZGUzMDogICAgYm5lICAgIDB4YjRjNWJiODYK
ICAgICAgICAweGI0YzVkZTM0OiAgICBiICAgICAgMHhiNGM1YmExNAogICAgKFMpIFsxMjQ5XSB0
b19wcmltaXRpdmUgICAgICBsb2MxMiwgbG9jMTIKICAgICAgICAweGI0YzVkZTM4OiAgICBtb3Z3
ICAgcjEyLCAjNTI2MjQKICAgICAgICAweGI0YzVkZTNjOiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIK
ICAgICAgICAweGI0YzVkZTQwOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0
YzVkZTQ0OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWRlNDg6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZGU0YzogICAgc3RyICAgIHI3LCBbcjZdCiAgICAg
ICAgMHhiNGM1ZGU0ZTogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWRlNTA6ICAgIG1v
dncgICByMSwgIzUyNjIwCiAgICAgICAgMHhiNGM1ZGU1NDogICAgbW92dCAgIHIxLCAjNDU4MjIK
ICAgICAgICAweGI0YzVkZTU4OiAgICBtb3Z3ICAgcjEyLCAjMTk0NDkKICAgICAgICAweGI0YzVk
ZTVjOiAgICBtb3Z0ICAgcjEyLCAjNDY3OTMKICAgICAgICAweGI0YzVkZTYwOiAgICBibHggICAg
cjEyCiAgICAgICAgMHhiNGM1ZGU2MjogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0
YzVkZTY2OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWRlNmE6ICAgIGxkciAg
ICByNiwgW3I2XQogICAgICAgIDB4YjRjNWRlNmM6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAw
eGI0YzVkZTZlOiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWRlNzI6ICAgIGIg
ICAgICAweGI0YzViYTRlCiAgICAoUykgWzEyNThdIHRvX3ByaW1pdGl2ZSAgICAgIGxvYzE0LCBs
b2MxNAogICAgICAgIDB4YjRjNWRlNzY6ICAgIG1vdncgICByMTIsICM1MjY2MAogICAgICAgIDB4
YjRjNWRlN2E6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWRlN2U6ICAgIHN0
ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWRlODI6ICAgIG1vdncgICByNiwgIzQy
MTI4CiAgICAgICAgMHhiNGM1ZGU4NjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0
YzVkZThhOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVkZThjOiAgICBtb3YgICAg
cjAsIHI3CiAgICAgICAgMHhiNGM1ZGU4ZTogICAgbW92dyAgIHIxLCAjNTI2NTYKICAgICAgICAw
eGI0YzVkZTkyOiAgICBtb3Z0ICAgcjEsICM0NTgyMgogICAgICAgIDB4YjRjNWRlOTY6ICAgIG1v
dncgICByMTIsICMxOTQ0OQogICAgICAgIDB4YjRjNWRlOWE6ICAgIG1vdnQgICByMTIsICM0Njc5
MwogICAgICAgIDB4YjRjNWRlOWU6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVkZWEwOiAg
ICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWRlYTQ6ICAgIG1vdnQgICByNiwgIzQ2
MjA3CiAgICAgICAgMHhiNGM1ZGVhODogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1
ZGVhYTogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWRlYWM6ICAgIGJuZSAgICAweGI0
YzVlNjgwCiAgICAgICAgMHhiNGM1ZGViMDogICAgYiAgICAgIDB4YjRjNWJhODgKICAgIChTKSBb
MTI2N10gdG9fcHJpbWl0aXZlICAgICAgbG9jMTYsIGxvYzE2CiAgICAgICAgMHhiNGM1ZGViNDog
ICAgbW92dyAgIHIxMiwgIzUyNjk2CiAgICAgICAgMHhiNGM1ZGViODogICAgbW92dCAgIHIxMiwg
IzQ1ODIyCiAgICAgICAgMHhiNGM1ZGViYzogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAg
ICAgMHhiNGM1ZGVjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVkZWM0OiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWRlYzg6ICAgIHN0ciAgICByNywgW3I2
XQogICAgICAgIDB4YjRjNWRlY2E6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVkZWNj
OiAgICBtb3Z3ICAgcjEsICM1MjY5MgogICAgICAgIDB4YjRjNWRlZDA6ICAgIG1vdnQgICByMSwg
IzQ1ODIyCiAgICAgICAgMHhiNGM1ZGVkNDogICAgbW92dyAgIHIxMiwgIzE5NDQ5CiAgICAgICAg
MHhiNGM1ZGVkODogICAgbW92dCAgIHIxMiwgIzQ2NzkzCiAgICAgICAgMHhiNGM1ZGVkYzogICAg
Ymx4ICAgIHIxMgogICAgICAgIDB4YjRjNWRlZGU6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAg
ICAgMHhiNGM1ZGVlMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVkZWU2OiAg
ICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVkZWU4OiAgICBjbXAgICAgcjIsICMwCiAg
ICAgICAgMHhiNGM1ZGVlYTogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVkZWVl
OiAgICBiICAgICAgMHhiNGM1YmFjMgogICAgKFMpIFsxMjc2XSB0b19wcmltaXRpdmUgICAgICBs
b2MxOCwgbG9jMTgKICAgICAgICAweGI0YzVkZWYyOiAgICBtb3Z3ICAgcjEyLCAjNTI3MzIKICAg
ICAgICAweGI0YzVkZWY2OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVkZWZh
OiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVkZWZlOiAgICBtb3Z3ICAg
cjYsICM0MjEyOAogICAgICAgIDB4YjRjNWRmMDI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAg
ICAgMHhiNGM1ZGYwNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1ZGYwODogICAg
bW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWRmMGE6ICAgIG1vdncgICByMSwgIzUyNzI4CiAg
ICAgICAgMHhiNGM1ZGYwZTogICAgbW92dCAgIHIxLCAjNDU4MjIKICAgICAgICAweGI0YzVkZjEy
OiAgICBtb3Z3ICAgcjEyLCAjMTk0NDkKICAgICAgICAweGI0YzVkZjE2OiAgICBtb3Z0ICAgcjEy
LCAjNDY3OTMKICAgICAgICAweGI0YzVkZjFhOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1
ZGYxYzogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVkZjIwOiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgICAgIDB4YjRjNWRmMjQ6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAg
IDB4YjRjNWRmMjY6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVkZjI4OiAgICBibmUg
ICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWRmMmM6ICAgIGIgICAgICAweGI0YzViYWZjCiAg
ICAoUykgWzEyOTVdIGdldF9mcm9tX3Njb3BlICAgIGxvYzEyLCBsb2MxMSwgY29uc3RhbnRCYXNl
RnVuY3Rpb25zKEBpZDE1KSwgMjA1MDxUaHJvd0lmTm90Rm91bmR8R2xvYmFsTGV4aWNhbFZhcnxO
b3RJbml0aWFsaXphdGlvbj4sIC0xMjYyNTAxMzQ0ICAgIHByZWRpY3RpbmcgQXJyYXkKICAgICAg
ICAweGI0YzVkZjMwOiAgICBtb3Z3ICAgcjEsICM1MjgwNAogICAgICAgIDB4YjRjNWRmMzQ6ICAg
IG1vdnQgICByMSwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZGYzODogICAgbW92ICAgIHIwLCByNwog
ICAgICAgIDB4YjRjNWRmM2E6ICAgIG1vdncgICByMTIsICM1MjgwOAogICAgICAgIDB4YjRjNWRm
M2U6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWRmNDI6ICAgIHN0ciAgICBy
MTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWRmNDY6ICAgIG1vdncgICByNiwgIzQyMTI4CiAg
ICAgICAgMHhiNGM1ZGY0YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVkZjRl
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVkZjUwOiAgICBtb3Z3ICAgcjEyLCAj
MTMxODUKICAgICAgICAweGI0YzVkZjU0OiAgICBtb3Z0ICAgcjEyLCAjNDY3NzcKICAgICAgICAw
eGI0YzVkZjU4OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1ZGY1YTogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgICAgICAweGI0YzVkZjVlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAg
IDB4YjRjNWRmNjI6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWRmNjQ6ICAgIGNt
cCAgICByMiwgIzAKICAgICAgICAweGI0YzVkZjY2OiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAg
ICAgIDB4YjRjNWRmNmE6ICAgIHN0ciAgICByMCwgW3I3LCAjLTEwNF0KICAgICAgICAweGI0YzVk
ZjZlOiAgICBzdHIgICAgcjEsIFtyNywgIy0xMDBdCiAgICAgICAgMHhiNGM1ZGY3MjogICAgYiAg
ICAgIDB4YjRjNWJiYmUKICAgIChTKSBbMTMwM10gZ2V0X2J5X3ZhbCAgICAgICAgbG9jMTMsIGxv
YzEyLCBsb2M1ICAgIEFycmF5V2l0aENvbnRpZ3VvdXMsIE9yaWdpbmFsOyBwcmVkaWN0aW5nIEZ1
bmN0aW9uCiAgICAgICAgMHhiNGM1ZGY3NjogICAgYiAgICAgIDB4YjRjNWRmYTIKICAgICAgICAw
eGI0YzVkZjc4OiAgICBsZHIgICAgcjYsIFtyMF0KICAgICAgICAweGI0YzVkZjdhOiAgICBtb3Z3
ICAgcjEyLCAjMzI0MTYKICAgICAgICAweGI0YzVkZjdlOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcK
ICAgICAgICAweGI0YzVkZjgyOiAgICBjbXAgICAgcjYsIHIxMgogICAgICAgIDB4YjRjNWRmODY6
ICAgIGJuZSAgICAweGI0YzVkZmEyCiAgICAgICAgMHhiNGM1ZGY4ODogICAgbW92dyAgIHIxMiwg
IzE2MjI1CiAgICAgICAgMHhiNGM1ZGY4YzogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAgICAg
MHhiNGM1ZGY5MDogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWRmOTI6ICAgIHRzdCAgICBy
MCwgcjAKICAgICAgICAweGI0YzVkZjk0OiAgICBiZXEgICAgMHhiNGM1ZGZhMgogICAgICAgIDB4
YjRjNWRmOTY6ICAgIHN0ciAgICByMCwgW3I3LCAjLTExMl0KICAgICAgICAweGI0YzVkZjlhOiAg
ICBzdHIgICAgcjEsIFtyNywgIy0xMDhdCiAgICAgICAgMHhiNGM1ZGY5ZTogICAgYiAgICAgIDB4
YjRjNWJjMjIKICAgICAgICAweGI0YzVkZmEyOiAgICBsZHIgICAgcjAsIFtyNywgIy0xMDRdCiAg
ICAgICAgMHhiNGM1ZGZhNjogICAgbGRyICAgIHIxLCBbcjcsICMtMTAwXQogICAgICAgIDB4YjRj
NWRmYWE6ICAgIGxkciAgICByMiwgW3I3LCAjLTQ4XQogICAgICAgIDB4YjRjNWRmYWU6ICAgIGxk
ciAgICByMywgW3I3LCAjLTQ0XQogICAgICAgIDB4YjRjNWRmYjI6ICAgIG1vdncgICByMTIsICMy
ODEwNAogICAgICAgIDB4YjRjNWRmYjY6ICAgIG1vdnQgICByMTIsICM0NjI3MAogICAgICAgIDB4
YjRjNWRmYmE6ICAgIHN0ciAgICByMTIsIFtzcCwgIzhdCiAgICAgICAgMHhiNGM1ZGZiZTogICAg
c3RyICAgIHIzLCBbc3AsICM0XQogICAgICAgIDB4YjRjNWRmYzA6ICAgIHN0ciAgICByMiwgW3Nw
XQogICAgICAgIDB4YjRjNWRmYzI6ICAgIG1vdiAgICByMiwgcjAKICAgICAgICAweGI0YzVkZmM0
OiAgICBtb3YgICAgcjMsIHIxCiAgICAgICAgMHhiNGM1ZGZjNjogICAgbW92cyAgIHIxLCAjMAog
ICAgICAgIDB4YjRjNWRmYzg6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVkZmNhOiAg
ICBtb3Z3ICAgcjEyLCAjNTI4NDAKICAgICAgICAweGI0YzVkZmNlOiAgICBtb3Z0ICAgcjEyLCAj
NDU4MjIKICAgICAgICAweGI0YzVkZmQyOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAg
ICAweGI0YzVkZmQ2OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWRmZGE6ICAg
IG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZGZkZTogICAgc3RyICAgIHI3LCBbcjZd
CiAgICAgICAgMHhiNGM1ZGZlMDogICAgbW92dyAgIHIxMiwgIzEzMDMzCiAgICAgICAgMHhiNGM1
ZGZlNDogICAgbW92dCAgIHIxMiwgIzQ2Nzc3CiAgICAgICAgMHhiNGM1ZGZlODogICAgYmx4ICAg
IHIxMgogICAgICAgIDB4YjRjNWRmZWE6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhi
NGM1ZGZlZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVkZmYyOiAgICBsZHIg
ICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVkZmY0OiAgICBjbXAgICAgcjIsICMwCiAgICAgICAg
MHhiNGM1ZGZmNjogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVkZmZhOiAgICBz
dHIgICAgcjAsIFtyNywgIy0xMTJdCiAgICAgICAgMHhiNGM1ZGZmZTogICAgc3RyICAgIHIxLCBb
cjcsICMtMTA4XQogICAgICAgIDB4YjRjNWUwMDI6ICAgIGIgICAgICAweGI0YzViYzIyCiAgICAo
UykgWzEzMTVdIGNhbGwgICAgICAgICAgICAgIGxvYzEwLCBsb2MxMywgMiwgMjAgbGxpbnQoMHhi
NDdmMDQ0MCwgZXhlYyAweGI0N2Q1NzQwKSBzdGF0dXMoKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2Yw
NDQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUw
XSk7IEV4ZWN1dGFibGU6ICNBclpuT2w6WzB4YjQ3OTE3MTAtPjB4YjQ3ZDU3NDAsIExMSW50RnVu
Y3Rpb25DYWxsLCA0N10pKSAgICBBcnJheVdpdGhDb250aWd1b3VzLCBPcmlnaW5hbDsgcHJlZGlj
dGluZyBOb25pbnRhc2RvdWJsZQogICAgICAgIDB4YjRjNWUwMDY6ICAgIG1vdncgICByMiwgIzQ1
MzQ0CiAgICAgICAgMHhiNGM1ZTAwYTogICAgbW92dCAgIHIyLCAjNDYyNjMKICAgICAgICAweGI0
YzVlMDBlOiAgICBtb3Z3ICAgcjEyLCAjMTUzMjkKICAgICAgICAweGI0YzVlMDEyOiAgICBtb3Z0
ICAgcjEyLCAjNDY4MzIKICAgICAgICAweGI0YzVlMDE2OiAgICBibHggICAgcjEyCiAgICAgICAg
MHhiNGM1ZTAxODogICAgbW92ICAgIHNwLCByNwogICAgICAgIDB4YjRjNWUwMWE6ICAgIG12biAg
ICByMTIsICMxODMKICAgICAgICAweGI0YzVlMDFlOiAgICBtb3YgICAgc3AsIHNwCiAgICAgICAg
MHhiNGM1ZTAyMDogICAgYWRkICAgIHNwLCByMTIKICAgICAgICAweGI0YzVlMDIyOiAgICBzdHIg
ICAgcjAsIFtyNywgIy04OF0KICAgICAgICAweGI0YzVlMDI2OiAgICBzdHIgICAgcjEsIFtyNywg
Iy04NF0KICAgICAgICAweGI0YzVlMDJhOiAgICBiICAgICAgMHhiNGM1YmNhMAogICAgKFMpIFsx
MzQ4XSBjYWxsICAgICAgICAgICAgICBsb2MxMSwgbG9jMTEsIDMsIDIwIGxsaW50KDB4YjQ3ZjBk
MjAsIGV4ZWMgMHhiNDdkNWE0MCkgc3RhdHVzKChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMGQyMCAo
MHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBF
eGVjdXRhYmxlOiBpc0lkZW50aWNhbCNFYTFyUUQ6WzB4YjQ3OTE4NjAtPjB4YjQ3OTM2OTAtPjB4
YjQ3ZDVhNDAsIERGR0Z1bmN0aW9uQ2FsbCwgOTVdKSkgICAgTm9uQXJyYXk7IHByZWRpY3Rpbmcg
Qm9vbAogICAgICAgIDB4YjRjNWUwMmU6ICAgIG1vdncgICByMiwgIzQ1NDE2CiAgICAgICAgMHhi
NGM1ZTAzMjogICAgbW92dCAgIHIyLCAjNDYyNjMKICAgICAgICAweGI0YzVlMDM2OiAgICBtb3Z3
ICAgcjEyLCAjMTUzMjkKICAgICAgICAweGI0YzVlMDNhOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIK
ICAgICAgICAweGI0YzVlMDNlOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1ZTA0MDogICAg
bW92ICAgIHNwLCByNwogICAgICAgIDB4YjRjNWUwNDI6ICAgIG12biAgICByMTIsICMxODMKICAg
ICAgICAweGI0YzVlMDQ2OiAgICBtb3YgICAgc3AsIHNwCiAgICAgICAgMHhiNGM1ZTA0ODogICAg
YWRkICAgIHNwLCByMTIKICAgICAgICAweGI0YzVlMDRhOiAgICBzdHIgICAgcjAsIFtyNywgIy05
Nl0KICAgICAgICAweGI0YzVlMDRlOiAgICBzdHIgICAgcjEsIFtyNywgIy05Ml0KICAgICAgICAw
eGI0YzVlMDUyOiAgICBiICAgICAgMHhiNGM1YmQ1ZQogICAgKFMpIFsxMzU3XSBqdHJ1ZSAgICAg
ICAgICAgICBsb2MxMSwgMjcoLT4xMzg0KQogICAgICAgIDB4YjRjNWUwNTY6ICAgIGNtbiAgICBy
MSwgIzcKICAgICAgICAweGI0YzVlMDVhOiAgICBiaGkgICAgMHhiNGM1ZTA3MgogICAgICAgIDB4
YjRjNWUwNWM6ICAgIHZsZHIgICBkMCwgW3I3LCAjLTk2XQogICAgICAgIDB4YjRjNWUwNjA6ICAg
IC5sb25nICBlZWI1MGI0MAogICAgICAgIDB4YjRjNWUwNjQ6ICAgIHZtcnMgICBhcHNyX256Y3Ys
IGZwc2NyCiAgICAgICAgMHhiNGM1ZTA2ODogICAgYnZzICAgIDB4YjRjNWUwNmUKICAgICAgICAw
eGI0YzVlMDZhOiAgICBibmUgICAgMHhiNGM1YmU1ZQogICAgICAgIDB4YjRjNWUwNmU6ICAgIGIg
ICAgICAweGI0YzViZDc0CiAgICAgICAgMHhiNGM1ZTA3MjogICAgbW92ICAgIHIyLCByMAogICAg
ICAgIDB4YjRjNWUwNzQ6ICAgIG1vdiAgICByMywgcjEKICAgICAgICAweGI0YzVlMDc2OiAgICBt
b3ZzICAgcjEsICMwCiAgICAgICAgMHhiNGM1ZTA3ODogICAgbW92ICAgIHIwLCByNwogICAgICAg
IDB4YjRjNWUwN2E6ICAgIG1vdncgICByMTIsICM1MzA1NgogICAgICAgIDB4YjRjNWUwN2U6ICAg
IG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWUwODI6ICAgIHN0ciAgICByMTIsIFty
NywgIzI4XQogICAgICAgIDB4YjRjNWUwODY6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAg
MHhiNGM1ZTA4YTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVlMDhlOiAgICBz
dHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVlMDkwOiAgICBtb3Z3ICAgcjEyLCAjNTY1NjUK
ICAgICAgICAweGI0YzVlMDk0OiAgICBtb3Z0ICAgcjEyLCAjNDY3NzYKICAgICAgICAweGI0YzVl
MDk4OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1ZTA5YTogICAgbW92dyAgIHI2LCAjNDYz
NDgKICAgICAgICAweGI0YzVlMDllOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRj
NWUwYTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWUwYTQ6ICAgIGNtcCAgICBy
MiwgIzAKICAgICAgICAweGI0YzVlMGE2OiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4
YjRjNWUwYWE6ICAgIHRzdCAgICByMCwgcjAKICAgICAgICAweGI0YzVlMGFjOiAgICBibmUgICAg
MHhiNGM1YmU1ZQogICAgICAgIDB4YjRjNWUwYjA6ICAgIGIgICAgICAweGI0YzViZDc0CiAgICAo
UykgWzEzNjZdIHRvX3ByaW1pdGl2ZSAgICAgIGxvYzEyLCBsb2MxMgogICAgICAgIDB4YjRjNWUw
YjQ6ICAgIG1vdncgICByMTIsICM1MzA5MgogICAgICAgIDB4YjRjNWUwYjg6ICAgIG1vdnQgICBy
MTIsICM0NTgyMgogICAgICAgIDB4YjRjNWUwYmM6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQog
ICAgICAgIDB4YjRjNWUwYzA6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1ZTBj
NDogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVlMGM4OiAgICBzdHIgICAgcjcs
IFtyNl0KICAgICAgICAweGI0YzVlMGNhOiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1
ZTBjYzogICAgbW92dyAgIHIxLCAjNTMwODgKICAgICAgICAweGI0YzVlMGQwOiAgICBtb3Z0ICAg
cjEsICM0NTgyMgogICAgICAgIDB4YjRjNWUwZDQ6ICAgIG1vdncgICByMTIsICMxOTQ0OQogICAg
ICAgIDB4YjRjNWUwZDg6ICAgIG1vdnQgICByMTIsICM0Njc5MwogICAgICAgIDB4YjRjNWUwZGM6
ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVlMGRlOiAgICBtb3Z3ICAgcjYsICM0NjM0OAog
ICAgICAgIDB4YjRjNWUwZTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZTBl
NjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1ZTBlODogICAgY21wICAgIHIyLCAj
MAogICAgICAgIDB4YjRjNWUwZWE6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1
ZTBlZTogICAgYiAgICAgIDB4YjRjNWJkYWUKICAgIChTKSBbMTM3NV0gdG9fcHJpbWl0aXZlICAg
ICAgbG9jMTQsIGxvYzE0CiAgICAgICAgMHhiNGM1ZTBmMjogICAgbW92dyAgIHIxMiwgIzUzMTI4
CiAgICAgICAgMHhiNGM1ZTBmNjogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1
ZTBmYTogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1ZTBmZTogICAgbW92
dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVlMTAyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwog
ICAgICAgIDB4YjRjNWUxMDY6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWUxMDg6
ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVlMTBhOiAgICBtb3Z3ICAgcjEsICM1MzEy
NAogICAgICAgIDB4YjRjNWUxMGU6ICAgIG1vdnQgICByMSwgIzQ1ODIyCiAgICAgICAgMHhiNGM1
ZTExMjogICAgbW92dyAgIHIxMiwgIzE5NDQ5CiAgICAgICAgMHhiNGM1ZTExNjogICAgbW92dCAg
IHIxMiwgIzQ2NzkzCiAgICAgICAgMHhiNGM1ZTExYTogICAgYmx4ICAgIHIxMgogICAgICAgIDB4
YjRjNWUxMWM6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1ZTEyMDogICAgbW92
dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVlMTI0OiAgICBsZHIgICAgcjYsIFtyNl0KICAg
ICAgICAweGI0YzVlMTI2OiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1ZTEyODogICAg
Ym5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVlMTJjOiAgICBiICAgICAgMHhiNGM1YmRl
OAogICAgKFMpIFsxMzkxXSBnZXRfZnJvbV9zY29wZSAgICBsb2MxMiwgbG9jMTEsIGNvbnN0YW50
RXhwb25lbnRGdW5jdGlvbnMoQGlkMTYpLCAyMDUwPFRocm93SWZOb3RGb3VuZHxHbG9iYWxMZXhp
Y2FsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgLTEyNjI1MDEzNjggICAgcHJlZGljdGluZyBBcnJh
eQogICAgICAgIDB4YjRjNWUxMzA6ICAgIG1vdncgICByMSwgIzUzMTg4CiAgICAgICAgMHhiNGM1
ZTEzNDogICAgbW92dCAgIHIxLCAjNDU4MjIKICAgICAgICAweGI0YzVlMTM4OiAgICBtb3YgICAg
cjAsIHI3CiAgICAgICAgMHhiNGM1ZTEzYTogICAgbW92dyAgIHIxMiwgIzUzMTkyCiAgICAgICAg
MHhiNGM1ZTEzZTogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZTE0MjogICAg
c3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1ZTE0NjogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgICAgICAweGI0YzVlMTRhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4
YjRjNWUxNGU6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWUxNTA6ICAgIG1vdncg
ICByMTIsICMxMzE4NQogICAgICAgIDB4YjRjNWUxNTQ6ICAgIG1vdnQgICByMTIsICM0Njc3Nwog
ICAgICAgIDB4YjRjNWUxNTg6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVlMTVhOiAgICBt
b3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWUxNWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAgICAgMHhiNGM1ZTE2MjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1ZTE2
NDogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWUxNjY6ICAgIGJuZSAgICAweGI0YzVl
NjgwCiAgICAgICAgMHhiNGM1ZTE2YTogICAgc3RyICAgIHIwLCBbcjcsICMtMTA0XQogICAgICAg
IDB4YjRjNWUxNmU6ICAgIHN0ciAgICByMSwgW3I3LCAjLTEwMF0KICAgICAgICAweGI0YzVlMTcy
OiAgICBiICAgICAgMHhiNGM1YmU5NgogICAgKFMpIFsxMzk5XSBnZXRfYnlfdmFsICAgICAgICBs
b2MxMywgbG9jMTIsIGxvYzcgICAgQXJyYXlXaXRoQ29udGlndW91cywgT3JpZ2luYWw7IHByZWRp
Y3RpbmcgRnVuY3Rpb24KICAgICAgICAweGI0YzVlMTc2OiAgICBiICAgICAgMHhiNGM1ZTFhMgog
ICAgICAgIDB4YjRjNWUxNzg6ICAgIGxkciAgICByNiwgW3IwXQogICAgICAgIDB4YjRjNWUxN2E6
ICAgIG1vdncgICByMTIsICMzMjQxNgogICAgICAgIDB4YjRjNWUxN2U6ICAgIG1vdnQgICByMTIs
ICM0NjIwNwogICAgICAgIDB4YjRjNWUxODI6ICAgIGNtcCAgICByNiwgcjEyCiAgICAgICAgMHhi
NGM1ZTE4NjogICAgYm5lICAgIDB4YjRjNWUxYTIKICAgICAgICAweGI0YzVlMTg4OiAgICBtb3Z3
ICAgcjEyLCAjMTYyMjUKICAgICAgICAweGI0YzVlMThjOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIK
ICAgICAgICAweGI0YzVlMTkwOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1ZTE5MjogICAg
dHN0ICAgIHIwLCByMAogICAgICAgIDB4YjRjNWUxOTQ6ICAgIGJlcSAgICAweGI0YzVlMWEyCiAg
ICAgICAgMHhiNGM1ZTE5NjogICAgc3RyICAgIHIwLCBbcjcsICMtMTEyXQogICAgICAgIDB4YjRj
NWUxOWE6ICAgIHN0ciAgICByMSwgW3I3LCAjLTEwOF0KICAgICAgICAweGI0YzVlMTllOiAgICBi
ICAgICAgMHhiNGM1YmVmYQogICAgICAgIDB4YjRjNWUxYTI6ICAgIGxkciAgICByMCwgW3I3LCAj
LTEwNF0KICAgICAgICAweGI0YzVlMWE2OiAgICBsZHIgICAgcjEsIFtyNywgIy0xMDBdCiAgICAg
ICAgMHhiNGM1ZTFhYTogICAgbGRyICAgIHIyLCBbcjcsICMtNjRdCiAgICAgICAgMHhiNGM1ZTFh
ZTogICAgbGRyICAgIHIzLCBbcjcsICMtNjBdCiAgICAgICAgMHhiNGM1ZTFiMjogICAgbW92dyAg
IHIxMiwgIzI4MTYwCiAgICAgICAgMHhiNGM1ZTFiNjogICAgbW92dCAgIHIxMiwgIzQ2MjcwCiAg
ICAgICAgMHhiNGM1ZTFiYTogICAgc3RyICAgIHIxMiwgW3NwLCAjOF0KICAgICAgICAweGI0YzVl
MWJlOiAgICBzdHIgICAgcjMsIFtzcCwgIzRdCiAgICAgICAgMHhiNGM1ZTFjMDogICAgc3RyICAg
IHIyLCBbc3BdCiAgICAgICAgMHhiNGM1ZTFjMjogICAgbW92ICAgIHIyLCByMAogICAgICAgIDB4
YjRjNWUxYzQ6ICAgIG1vdiAgICByMywgcjEKICAgICAgICAweGI0YzVlMWM2OiAgICBtb3ZzICAg
cjEsICMwCiAgICAgICAgMHhiNGM1ZTFjODogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRj
NWUxY2E6ICAgIG1vdncgICByMTIsICM1MzIyNAogICAgICAgIDB4YjRjNWUxY2U6ICAgIG1vdnQg
ICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWUxZDI6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4
XQogICAgICAgIDB4YjRjNWUxZDY6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1
ZTFkYTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVlMWRlOiAgICBzdHIgICAg
cjcsIFtyNl0KICAgICAgICAweGI0YzVlMWUwOiAgICBtb3Z3ICAgcjEyLCAjMTMwMzMKICAgICAg
ICAweGI0YzVlMWU0OiAgICBtb3Z0ICAgcjEyLCAjNDY3NzcKICAgICAgICAweGI0YzVlMWU4OiAg
ICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1ZTFlYTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAg
ICAgICAweGI0YzVlMWVlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWUxZjI6
ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWUxZjQ6ICAgIGNtcCAgICByMiwgIzAK
ICAgICAgICAweGI0YzVlMWY2OiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWUx
ZmE6ICAgIHN0ciAgICByMCwgW3I3LCAjLTExMl0KICAgICAgICAweGI0YzVlMWZlOiAgICBzdHIg
ICAgcjEsIFtyNywgIy0xMDhdCiAgICAgICAgMHhiNGM1ZTIwMjogICAgYiAgICAgIDB4YjRjNWJl
ZmEKICAgIChTKSBbMTQxMV0gY2FsbCAgICAgICAgICAgICAgbG9jMTAsIGxvYzEzLCAyLCAyMCBs
bGludCgweGI0NzliZTAwLCBleGVjIDB4YjQ3ZDRmYzApIHN0YXR1cygoRnVuY3Rpb246IENlbGw6
IDB4YjQ3OWJlMDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4
YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0R2Q3djcjpbMHhiNDc5MjgyMC0+MHhiNDdkNGZjMCwg
TExJbnRGdW5jdGlvbkNhbGwsIDQ5XSkpICAgIEFycmF5V2l0aENvbnRpZ3VvdXMsIE9yaWdpbmFs
OyBwcmVkaWN0aW5nIE5vbmludGFzZG91YmxlCiAgICAgICAgMHhiNGM1ZTIwNjogICAgbW92dyAg
IHIyLCAjNDU0ODgKICAgICAgICAweGI0YzVlMjBhOiAgICBtb3Z0ICAgcjIsICM0NjI2MwogICAg
ICAgIDB4YjRjNWUyMGU6ICAgIG1vdncgICByMTIsICMxNTMyOQogICAgICAgIDB4YjRjNWUyMTI6
ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgICAgIDB4YjRjNWUyMTY6ICAgIGJseCAgICByMTIK
ICAgICAgICAweGI0YzVlMjE4OiAgICBtb3YgICAgc3AsIHI3CiAgICAgICAgMHhiNGM1ZTIxYTog
ICAgbXZuICAgIHIxMiwgIzE4MwogICAgICAgIDB4YjRjNWUyMWU6ICAgIG1vdiAgICBzcCwgc3AK
ICAgICAgICAweGI0YzVlMjIwOiAgICBhZGQgICAgc3AsIHIxMgogICAgICAgIDB4YjRjNWUyMjI6
ICAgIHN0ciAgICByMCwgW3I3LCAjLTg4XQogICAgICAgIDB4YjRjNWUyMjY6ICAgIHN0ciAgICBy
MSwgW3I3LCAjLTg0XQogICAgICAgIDB4YjRjNWUyMmE6ICAgIGIgICAgICAweGI0YzViZjc4CiAg
ICAoUykgWzE0NDRdIGNhbGwgICAgICAgICAgICAgIGxvYzExLCBsb2MxMSwgMywgMjAgbGxpbnQo
MHhiNDdmMGQyMCwgZXhlYyAweGI0N2Q1YTQwKSBzdGF0dXMoKEZ1bmN0aW9uOiBDZWxsOiAweGI0
N2YwZDIwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2Vk
ZGUwXSk7IEV4ZWN1dGFibGU6IGlzSWRlbnRpY2FsI0VhMXJRRDpbMHhiNDc5MTg2MC0+MHhiNDc5
MzY5MC0+MHhiNDdkNWE0MCwgREZHRnVuY3Rpb25DYWxsLCA5NV0pKSAgICBOb25BcnJheTsgcHJl
ZGljdGluZyBCb29sCiAgICAgICAgMHhiNGM1ZTIyZTogICAgbW92dyAgIHIyLCAjNDU1NjAKICAg
ICAgICAweGI0YzVlMjMyOiAgICBtb3Z0ICAgcjIsICM0NjI2MwogICAgICAgIDB4YjRjNWUyMzY6
ICAgIG1vdncgICByMTIsICMxNTMyOQogICAgICAgIDB4YjRjNWUyM2E6ICAgIG1vdnQgICByMTIs
ICM0NjgzMgogICAgICAgIDB4YjRjNWUyM2U6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVl
MjQwOiAgICBtb3YgICAgc3AsIHI3CiAgICAgICAgMHhiNGM1ZTI0MjogICAgbXZuICAgIHIxMiwg
IzE4MwogICAgICAgIDB4YjRjNWUyNDY6ICAgIG1vdiAgICBzcCwgc3AKICAgICAgICAweGI0YzVl
MjQ4OiAgICBhZGQgICAgc3AsIHIxMgogICAgICAgIDB4YjRjNWUyNGE6ICAgIHN0ciAgICByMCwg
W3I3LCAjLTk2XQogICAgICAgIDB4YjRjNWUyNGU6ICAgIHN0ciAgICByMSwgW3I3LCAjLTkyXQog
ICAgICAgIDB4YjRjNWUyNTI6ICAgIGIgICAgICAweGI0YzVjMDM2CiAgICAoUykgWzE0NTNdIGp0
cnVlICAgICAgICAgICAgIGxvYzExLCAyNygtPjE0ODApCiAgICAgICAgMHhiNGM1ZTI1NjogICAg
Y21uICAgIHIxLCAjNwogICAgICAgIDB4YjRjNWUyNWE6ICAgIGJoaSAgICAweGI0YzVlMjcyCiAg
ICAgICAgMHhiNGM1ZTI1YzogICAgdmxkciAgIGQwLCBbcjcsICMtOTZdCiAgICAgICAgMHhiNGM1
ZTI2MDogICAgLmxvbmcgIGVlYjUwYjQwCiAgICAgICAgMHhiNGM1ZTI2NDogICAgdm1ycyAgIGFw
c3JfbnpjdiwgZnBzY3IKICAgICAgICAweGI0YzVlMjY4OiAgICBidnMgICAgMHhiNGM1ZTI2ZQog
ICAgICAgIDB4YjRjNWUyNmE6ICAgIGJuZSAgICAweGI0YzVjMTM2CiAgICAgICAgMHhiNGM1ZTI2
ZTogICAgYiAgICAgIDB4YjRjNWMwNGMKICAgICAgICAweGI0YzVlMjcyOiAgICBtb3YgICAgcjIs
IHIwCiAgICAgICAgMHhiNGM1ZTI3NDogICAgbW92ICAgIHIzLCByMQogICAgICAgIDB4YjRjNWUy
NzY6ICAgIG1vdnMgICByMSwgIzAKICAgICAgICAweGI0YzVlMjc4OiAgICBtb3YgICAgcjAsIHI3
CiAgICAgICAgMHhiNGM1ZTI3YTogICAgbW92dyAgIHIxMiwgIzUzNDQwCiAgICAgICAgMHhiNGM1
ZTI3ZTogICAgbW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZTI4MjogICAgc3RyICAg
IHIxMiwgW3I3LCAjMjhdCiAgICAgICAgMHhiNGM1ZTI4NjogICAgbW92dyAgIHI2LCAjNDIxMjgK
ICAgICAgICAweGI0YzVlMjhhOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWUy
OGU6ICAgIHN0ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWUyOTA6ICAgIG1vdncgICByMTIs
ICM1NjU2NQogICAgICAgIDB4YjRjNWUyOTQ6ICAgIG1vdnQgICByMTIsICM0Njc3NgogICAgICAg
IDB4YjRjNWUyOTg6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0YzVlMjlhOiAgICBtb3Z3ICAg
cjYsICM0NjM0OAogICAgICAgIDB4YjRjNWUyOWU6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAg
ICAgMHhiNGM1ZTJhMjogICAgbGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1ZTJhNDogICAg
Y21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWUyYTY6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAg
ICAgICAgMHhiNGM1ZTJhYTogICAgdHN0ICAgIHIwLCByMAogICAgICAgIDB4YjRjNWUyYWM6ICAg
IGJuZSAgICAweGI0YzVjMTM2CiAgICAgICAgMHhiNGM1ZTJiMDogICAgYiAgICAgIDB4YjRjNWMw
NGMKICAgIChTKSBbMTQ2Ml0gdG9fcHJpbWl0aXZlICAgICAgbG9jMTIsIGxvYzEyCiAgICAgICAg
MHhiNGM1ZTJiNDogICAgbW92dyAgIHIxMiwgIzUzNDc2CiAgICAgICAgMHhiNGM1ZTJiODogICAg
bW92dCAgIHIxMiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZTJiYzogICAgc3RyICAgIHIxMiwgW3I3
LCAjMjhdCiAgICAgICAgMHhiNGM1ZTJjMDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAw
eGI0YzVlMmM0OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWUyYzg6ICAgIHN0
ciAgICByNywgW3I2XQogICAgICAgIDB4YjRjNWUyY2E6ICAgIG1vdiAgICByMCwgcjcKICAgICAg
ICAweGI0YzVlMmNjOiAgICBtb3Z3ICAgcjEsICM1MzQ3MgogICAgICAgIDB4YjRjNWUyZDA6ICAg
IG1vdnQgICByMSwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZTJkNDogICAgbW92dyAgIHIxMiwgIzE5
NDQ5CiAgICAgICAgMHhiNGM1ZTJkODogICAgbW92dCAgIHIxMiwgIzQ2NzkzCiAgICAgICAgMHhi
NGM1ZTJkYzogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWUyZGU6ICAgIG1vdncgICByNiwg
IzQ2MzQ4CiAgICAgICAgMHhiNGM1ZTJlMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAw
eGI0YzVlMmU2OiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVlMmU4OiAgICBjbXAg
ICAgcjIsICMwCiAgICAgICAgMHhiNGM1ZTJlYTogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAg
ICAweGI0YzVlMmVlOiAgICBiICAgICAgMHhiNGM1YzA4NgogICAgKFMpIFsxNDcxXSB0b19wcmlt
aXRpdmUgICAgICBsb2MxNCwgbG9jMTQKICAgICAgICAweGI0YzVlMmYyOiAgICBtb3Z3ICAgcjEy
LCAjNTM1MTIKICAgICAgICAweGI0YzVlMmY2OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAg
ICAweGI0YzVlMmZhOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVlMmZl
OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWUzMDI6ICAgIG1vdnQgICByNiwg
IzQ2MjA3CiAgICAgICAgMHhiNGM1ZTMwNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhi
NGM1ZTMwODogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWUzMGE6ICAgIG1vdncgICBy
MSwgIzUzNTA4CiAgICAgICAgMHhiNGM1ZTMwZTogICAgbW92dCAgIHIxLCAjNDU4MjIKICAgICAg
ICAweGI0YzVlMzEyOiAgICBtb3Z3ICAgcjEyLCAjMTk0NDkKICAgICAgICAweGI0YzVlMzE2OiAg
ICBtb3Z0ICAgcjEyLCAjNDY3OTMKICAgICAgICAweGI0YzVlMzFhOiAgICBibHggICAgcjEyCiAg
ICAgICAgMHhiNGM1ZTMxYzogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVlMzIw
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWUzMjQ6ICAgIGxkciAgICByNiwg
W3I2XQogICAgICAgIDB4YjRjNWUzMjY6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVl
MzI4OiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWUzMmM6ICAgIGIgICAgICAw
eGI0YzVjMGMwCiAgICAoUykgWzE0ODBdIGluYyAgICAgICAgICAgICAgIGxvYzcKICAgICAgICAw
eGI0YzVlMzMwOiAgICBtb3Z3ICAgcjEyLCAjNTM1NDgKICAgICAgICAweGI0YzVlMzM0OiAgICBt
b3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVlMzM4OiAgICBzdHIgICAgcjEyLCBbcjcs
ICMyOF0KICAgICAgICAweGI0YzVlMzNjOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4
YjRjNWUzNDA6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZTM0NDogICAgc3Ry
ICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1ZTM0NjogICAgbW92ICAgIHIwLCByNwogICAgICAg
IDB4YjRjNWUzNDg6ICAgIG1vdncgICByMSwgIzUzNTQ0CiAgICAgICAgMHhiNGM1ZTM0YzogICAg
bW92dCAgIHIxLCAjNDU4MjIKICAgICAgICAweGI0YzVlMzUwOiAgICBtb3Z3ICAgcjEyLCAjMTA5
MzcKICAgICAgICAweGI0YzVlMzU0OiAgICBtb3Z0ICAgcjEyLCAjNDY3OTMKICAgICAgICAweGI0
YzVlMzU4OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1ZTM1YTogICAgbW92dyAgIHI2LCAj
NDYzNDgKICAgICAgICAweGI0YzVlMzVlOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4
YjRjNWUzNjI6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWUzNjQ6ICAgIGNtcCAg
ICByMiwgIzAKICAgICAgICAweGI0YzVlMzY2OiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAg
IDB4YjRjNWUzNmE6ICAgIGIgICAgICAweGI0YzVjMTUwCiAgICAoUykgWzE0OTJdIGdldF9mcm9t
X3Njb3BlICAgIGxvYzEwLCBsb2M5LCBjYXNlcyhAaWQ1KSwgMjA1MDxUaHJvd0lmTm90Rm91bmR8
R2xvYmFsTGV4aWNhbFZhcnxOb3RJbml0aWFsaXphdGlvbj4sIC0xMjYyNTAxMzc2ICAgIHByZWRp
Y3RpbmcgQXJyYXkKICAgICAgICAweGI0YzVlMzZlOiAgICBtb3Z3ICAgcjEsICM1MzU5MgogICAg
ICAgIDB4YjRjNWUzNzI6ICAgIG1vdnQgICByMSwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZTM3Njog
ICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWUzNzg6ICAgIG1vdncgICByMTIsICM1MzU5
NgogICAgICAgIDB4YjRjNWUzN2M6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRj
NWUzODA6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWUzODQ6ICAgIG1v
dncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1ZTM4ODogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgICAgICAweGI0YzVlMzhjOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVlMzhl
OiAgICBtb3Z3ICAgcjEyLCAjMTMxODUKICAgICAgICAweGI0YzVlMzkyOiAgICBtb3Z0ICAgcjEy
LCAjNDY3NzcKICAgICAgICAweGI0YzVlMzk2OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1
ZTM5ODogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVlMzljOiAgICBtb3Z0ICAg
cjYsICM0NjIwNwogICAgICAgIDB4YjRjNWUzYTA6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAg
IDB4YjRjNWUzYTI6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVlM2E0OiAgICBibmUg
ICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWUzYTg6ICAgIHN0ciAgICByMCwgW3I3LCAjLTg4
XQogICAgICAgIDB4YjRjNWUzYWM6ICAgIHN0ciAgICByMSwgW3I3LCAjLTg0XQogICAgICAgIDB4
YjRjNWUzYjA6ICAgIGIgICAgICAweGI0YzVjMTk4CiAgICAoUykgWzE1MDBdIGFycmF5X2xlbmd0
aCAgICAgIGxvYzExLCBsb2MxMCwgbGVuZ3RoKEBpZDE4KSBsbGludChhcnJheV9sZW5ndGgpICAg
IHByZWRpY3RpbmcgTm9uYm9vbGludDMyCiAgICAgICAgMHhiNGM1ZTNiNDogICAgbW92dyAgIHIx
MiwgIzIwODgKICAgICAgICAweGI0YzVlM2I4OiAgICBtb3Z0ICAgcjEyLCAjNDYyNzAKICAgICAg
ICAweGI0YzVlM2JjOiAgICBzdHIgICAgcjEyLCBbc3BdCiAgICAgICAgMHhiNGM1ZTNjMDogICAg
bW92ICAgIHIyLCByMAogICAgICAgIDB4YjRjNWUzYzI6ICAgIG1vdiAgICByMywgcjEKICAgICAg
ICAweGI0YzVlM2M0OiAgICBtb3Z3ICAgcjEsICM0NTYzMgogICAgICAgIDB4YjRjNWUzYzg6ICAg
IG1vdnQgICByMSwgIzQ2MjYzCiAgICAgICAgMHhiNGM1ZTNjYzogICAgbW92ICAgIHIwLCByNwog
ICAgICAgIDB4YjRjNWUzY2U6ICAgIG1vdncgICByMTIsICM1MzYyOAogICAgICAgIDB4YjRjNWUz
ZDI6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWUzZDY6ICAgIHN0ciAgICBy
MTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWUzZGE6ICAgIG1vdncgICByNiwgIzQyMTI4CiAg
ICAgICAgMHhiNGM1ZTNkZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVlM2Uy
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVlM2U0OiAgICBtb3Z3ICAgcjEyLCAj
MTg1MTMKICAgICAgICAweGI0YzVlM2U4OiAgICBtb3Z0ICAgcjEyLCAjNDY3NzcKICAgICAgICAw
eGI0YzVlM2VjOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1ZTNlZTogICAgbW92dyAgIHI2
LCAjNDYzNDgKICAgICAgICAweGI0YzVlM2YyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAg
IDB4YjRjNWUzZjY6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4YjRjNWUzZjg6ICAgIGNt
cCAgICByMiwgIzAKICAgICAgICAweGI0YzVlM2ZhOiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAg
ICAgIDB4YjRjNWUzZmU6ICAgIHN0ciAgICByMCwgW3I3LCAjLTk2XQogICAgICAgIDB4YjRjNWU0
MDI6ICAgIHN0ciAgICByMSwgW3I3LCAjLTkyXQogICAgICAgIDB4YjRjNWU0MDY6ICAgIGIgICAg
ICAweGI0YzVjMWQyCiAgICAoUykgWzE1MDldIGpsZXNzICAgICAgICAgICAgIGxvYzgsIGxvYzEx
LCAtMzg3KC0+MTEyMikKICAgICAgICAweGI0YzVlNDBhOiAgICBsZHIgICAgcjAsIFtyNywgIy03
Ml0KICAgICAgICAweGI0YzVlNDBlOiAgICBsZHIgICAgcjEsIFtyNywgIy02OF0KICAgICAgICAw
eGI0YzVlNDEyOiAgICBsZHIgICAgcjIsIFtyNywgIy05Nl0KICAgICAgICAweGI0YzVlNDE2OiAg
ICBsZHIgICAgcjMsIFtyNywgIy05Ml0KICAgICAgICAweGI0YzVlNDFhOiAgICBzdHIgICAgcjMs
IFtzcCwgIzRdCiAgICAgICAgMHhiNGM1ZTQxYzogICAgc3RyICAgIHIyLCBbc3BdCiAgICAgICAg
MHhiNGM1ZTQxZTogICAgbW92ICAgIHIyLCByMAogICAgICAgIDB4YjRjNWU0MjA6ICAgIG1vdiAg
ICByMywgcjEKICAgICAgICAweGI0YzVlNDIyOiAgICBtb3ZzICAgcjEsICMwCiAgICAgICAgMHhi
NGM1ZTQyNDogICAgbW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWU0MjY6ICAgIG1vdncgICBy
MTIsICM1MzY2NAogICAgICAgIDB4YjRjNWU0MmE6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAg
ICAgIDB4YjRjNWU0MmU6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWU0
MzI6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1ZTQzNjogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgICAgICAweGI0YzVlNDNhOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAw
eGI0YzVlNDNjOiAgICBtb3Z3ICAgcjEyLCAjNTE4MTcKICAgICAgICAweGI0YzVlNDQwOiAgICBt
b3Z0ICAgcjEyLCAjNDY3NzYKICAgICAgICAweGI0YzVlNDQ0OiAgICBibHggICAgcjEyCiAgICAg
ICAgMHhiNGM1ZTQ0NjogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVlNDRhOiAg
ICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWU0NGU6ICAgIGxkciAgICByNiwgW3I2
XQogICAgICAgIDB4YjRjNWU0NTA6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVlNDUy
OiAgICBibmUgICAgMHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWU0NTY6ICAgIHRzdCAgICByMCwg
cjAKICAgICAgICAweGI0YzVlNDU4OiAgICBibmUgICAgMHhiNGM1YjZkNgogICAgICAgIDB4YjRj
NWU0NWM6ICAgIGIgICAgICAweGI0YzVjMjRjCiAgICAoUykgWzE1MTNdIGluYyAgICAgICAgICAg
ICAgIGxvYzUKICAgICAgICAweGI0YzVlNDYwOiAgICBtb3Z3ICAgcjEyLCAjNTM2ODAKICAgICAg
ICAweGI0YzVlNDY0OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVlNDY4OiAg
ICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVlNDZjOiAgICBtb3Z3ICAgcjYs
ICM0MjEyOAogICAgICAgIDB4YjRjNWU0NzA6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAg
MHhiNGM1ZTQ3NDogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1ZTQ3NjogICAgbW92
ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWU0Nzg6ICAgIG1vdncgICByMSwgIzUzNjc2CiAgICAg
ICAgMHhiNGM1ZTQ3YzogICAgbW92dCAgIHIxLCAjNDU4MjIKICAgICAgICAweGI0YzVlNDgwOiAg
ICBtb3Z3ICAgcjEyLCAjMTA5MzcKICAgICAgICAweGI0YzVlNDg0OiAgICBtb3Z0ICAgcjEyLCAj
NDY3OTMKICAgICAgICAweGI0YzVlNDg4OiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1ZTQ4
YTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVlNDhlOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgICAgIDB4YjRjNWU0OTI6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4
YjRjNWU0OTQ6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVlNDk2OiAgICBibmUgICAg
MHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWU0OWE6ICAgIGIgICAgICAweGI0YzVjMjY2CiAgICAo
UykgWzE1MjVdIGdldF9mcm9tX3Njb3BlICAgIGxvYzgsIGxvYzcsIGNhc2VzKEBpZDUpLCAyMDUw
PFRocm93SWZOb3RGb3VuZHxHbG9iYWxMZXhpY2FsVmFyfE5vdEluaXRpYWxpemF0aW9uPiwgLTEy
NjI1MDEzNzYgICAgcHJlZGljdGluZyBBcnJheQogICAgICAgIDB4YjRjNWU0OWU6ICAgIG1vdncg
ICByMSwgIzUzNzI0CiAgICAgICAgMHhiNGM1ZTRhMjogICAgbW92dCAgIHIxLCAjNDU4MjIKICAg
ICAgICAweGI0YzVlNGE2OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1ZTRhODogICAg
bW92dyAgIHIxMiwgIzUzNzI4CiAgICAgICAgMHhiNGM1ZTRhYzogICAgbW92dCAgIHIxMiwgIzQ1
ODIyCiAgICAgICAgMHhiNGM1ZTRiMDogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAgICAg
MHhiNGM1ZTRiNDogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVlNGI4OiAgICBt
b3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWU0YmM6ICAgIHN0ciAgICByNywgW3I2XQog
ICAgICAgIDB4YjRjNWU0YmU6ICAgIG1vdncgICByMTIsICMxMzE4NQogICAgICAgIDB4YjRjNWU0
YzI6ICAgIG1vdnQgICByMTIsICM0Njc3NwogICAgICAgIDB4YjRjNWU0YzY6ICAgIGJseCAgICBy
MTIKICAgICAgICAweGI0YzVlNGM4OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRj
NWU0Y2M6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZTRkMDogICAgbGRyICAg
IHI2LCBbcjZdCiAgICAgICAgMHhiNGM1ZTRkMjogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4
YjRjNWU0ZDQ6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1ZTRkODogICAgc3Ry
ICAgIHIwLCBbcjcsICMtNzJdCiAgICAgICAgMHhiNGM1ZTRkYzogICAgc3RyICAgIHIxLCBbcjcs
ICMtNjhdCiAgICAgICAgMHhiNGM1ZTRlMDogICAgYiAgICAgIDB4YjRjNWMyYWUKICAgIChTKSBb
MTUzM10gYXJyYXlfbGVuZ3RoICAgICAgbG9jOSwgbG9jOCwgbGVuZ3RoKEBpZDE4KSBsbGludChh
cnJheV9sZW5ndGgpICAgIHByZWRpY3RpbmcgTm9uYm9vbGludDMyCiAgICAgICAgMHhiNGM1ZTRl
NDogICAgbW92dyAgIHIxMiwgIzIwODgKICAgICAgICAweGI0YzVlNGU4OiAgICBtb3Z0ICAgcjEy
LCAjNDYyNzAKICAgICAgICAweGI0YzVlNGVjOiAgICBzdHIgICAgcjEyLCBbc3BdCiAgICAgICAg
MHhiNGM1ZTRmMDogICAgbW92ICAgIHIyLCByMAogICAgICAgIDB4YjRjNWU0ZjI6ICAgIG1vdiAg
ICByMywgcjEKICAgICAgICAweGI0YzVlNGY0OiAgICBtb3Z3ICAgcjEsICM0NTcwNAogICAgICAg
IDB4YjRjNWU0Zjg6ICAgIG1vdnQgICByMSwgIzQ2MjYzCiAgICAgICAgMHhiNGM1ZTRmYzogICAg
bW92ICAgIHIwLCByNwogICAgICAgIDB4YjRjNWU0ZmU6ICAgIG1vdncgICByMTIsICM1Mzc2MAog
ICAgICAgIDB4YjRjNWU1MDI6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAgIDB4YjRjNWU1
MDY6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWU1MGE6ICAgIG1vdncg
ICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1ZTUwZTogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
ICAgICAweGI0YzVlNTEyOiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0YzVlNTE0OiAg
ICBtb3Z3ICAgcjEyLCAjMTg1MTMKICAgICAgICAweGI0YzVlNTE4OiAgICBtb3Z0ICAgcjEyLCAj
NDY3NzcKICAgICAgICAweGI0YzVlNTFjOiAgICBibHggICAgcjEyCiAgICAgICAgMHhiNGM1ZTUx
ZTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVlNTIyOiAgICBtb3Z0ICAgcjYs
ICM0NjIwNwogICAgICAgIDB4YjRjNWU1MjY6ICAgIGxkciAgICByNiwgW3I2XQogICAgICAgIDB4
YjRjNWU1Mjg6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVlNTJhOiAgICBibmUgICAg
MHhiNGM1ZTY4MAogICAgICAgIDB4YjRjNWU1MmU6ICAgIHN0ciAgICByMCwgW3I3LCAjLTgwXQog
ICAgICAgIDB4YjRjNWU1MzI6ICAgIHN0ciAgICByMSwgW3I3LCAjLTc2XQogICAgICAgIDB4YjRj
NWU1MzY6ICAgIGIgICAgICAweGI0YzVjMmU4CiAgICAoUykgWzE1NDJdIGpsZXNzICAgICAgICAg
ICAgIGxvYzYsIGxvYzksIC00ODIoLT4xMDYwKQogICAgICAgIDB4YjRjNWU1M2E6ICAgIGxkciAg
ICByMCwgW3I3LCAjLTU2XQogICAgICAgIDB4YjRjNWU1M2U6ICAgIGxkciAgICByMSwgW3I3LCAj
LTUyXQogICAgICAgIDB4YjRjNWU1NDI6ICAgIGxkciAgICByMiwgW3I3LCAjLTgwXQogICAgICAg
IDB4YjRjNWU1NDY6ICAgIGxkciAgICByMywgW3I3LCAjLTc2XQogICAgICAgIDB4YjRjNWU1NGE6
ICAgIHN0ciAgICByMywgW3NwLCAjNF0KICAgICAgICAweGI0YzVlNTRjOiAgICBzdHIgICAgcjIs
IFtzcF0KICAgICAgICAweGI0YzVlNTRlOiAgICBtb3YgICAgcjIsIHIwCiAgICAgICAgMHhiNGM1
ZTU1MDogICAgbW92ICAgIHIzLCByMQogICAgICAgIDB4YjRjNWU1NTI6ICAgIG1vdnMgICByMSwg
IzAKICAgICAgICAweGI0YzVlNTU0OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1ZTU1
NjogICAgbW92dyAgIHIxMiwgIzUzNzk2CiAgICAgICAgMHhiNGM1ZTU1YTogICAgbW92dCAgIHIx
MiwgIzQ1ODIyCiAgICAgICAgMHhiNGM1ZTU1ZTogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAg
ICAgICAgMHhiNGM1ZTU2MjogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgICAgICAweGI0YzVlNTY2
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWU1NmE6ICAgIHN0ciAgICByNywg
W3I2XQogICAgICAgIDB4YjRjNWU1NmM6ICAgIG1vdncgICByMTIsICM1MTgxNwogICAgICAgIDB4
YjRjNWU1NzA6ICAgIG1vdnQgICByMTIsICM0Njc3NgogICAgICAgIDB4YjRjNWU1NzQ6ICAgIGJs
eCAgICByMTIKICAgICAgICAweGI0YzVlNTc2OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAg
IDB4YjRjNWU1N2E6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZTU3ZTogICAg
bGRyICAgIHI2LCBbcjZdCiAgICAgICAgMHhiNGM1ZTU4MDogICAgY21wICAgIHIyLCAjMAogICAg
ICAgIDB4YjRjNWU1ODI6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1ZTU4Njog
ICAgdHN0ICAgIHIwLCByMAogICAgICAgIDB4YjRjNWU1ODg6ICAgIGJuZSAgICAweGI0YzViNTBl
CiAgICAgICAgMHhiNGM1ZTU4YzogICAgYiAgICAgIDB4YjRjNWMzNjIKICAgIChTKSBbMTU0Nl0g
aW5jICAgICAgICAgICAgICAgbG9jNAogICAgICAgIDB4YjRjNWU1OTA6ICAgIG1vdncgICByMTIs
ICM1MzgxMgogICAgICAgIDB4YjRjNWU1OTQ6ICAgIG1vdnQgICByMTIsICM0NTgyMgogICAgICAg
IDB4YjRjNWU1OTg6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWU1OWM6
ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAgICAgMHhiNGM1ZTVhMDogICAgbW92dCAgIHI2LCAj
NDYyMDcKICAgICAgICAweGI0YzVlNWE0OiAgICBzdHIgICAgcjcsIFtyNl0KICAgICAgICAweGI0
YzVlNWE2OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1ZTVhODogICAgbW92dyAgIHIx
LCAjNTM4MDgKICAgICAgICAweGI0YzVlNWFjOiAgICBtb3Z0ICAgcjEsICM0NTgyMgogICAgICAg
IDB4YjRjNWU1YjA6ICAgIG1vdncgICByMTIsICMxMDkzNwogICAgICAgIDB4YjRjNWU1YjQ6ICAg
IG1vdnQgICByMTIsICM0Njc5MwogICAgICAgIDB4YjRjNWU1Yjg6ICAgIGJseCAgICByMTIKICAg
ICAgICAweGI0YzVlNWJhOiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWU1YmU6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZTVjMjogICAgbGRyICAgIHI2LCBb
cjZdCiAgICAgICAgMHhiNGM1ZTVjNDogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWU1
YzY6ICAgIGJuZSAgICAweGI0YzVlNjgwCiAgICAgICAgMHhiNGM1ZTVjODogICAgYiAgICAgIDB4
YjRjNWMzN2MKICAgIChTKSBbMTU0OF0gamxlc3MgICAgICAgICAgICAgbG9jNCwgSW50MzI6IDEw
MDAoY29uc3QzMiksIC01MjYoLT4xMDIyKQogICAgICAgIDB4YjRjNWU1Y2M6ICAgIGxkciAgICBy
MCwgW3I3LCAjLTQwXQogICAgICAgIDB4YjRjNWU1ZDA6ICAgIGxkciAgICByMSwgW3I3LCAjLTM2
XQogICAgICAgIDB4YjRjNWU1ZDQ6ICAgIG1vdiAgICByMiwgIzEwMDAKICAgICAgICAweGI0YzVl
NWQ4OiAgICBtb3YgICAgcjMsICM0Mjk0OTY3Mjk1CiAgICAgICAgMHhiNGM1ZTVkYzogICAgc3Ry
ICAgIHIzLCBbc3AsICM0XQogICAgICAgIDB4YjRjNWU1ZGU6ICAgIHN0ciAgICByMiwgW3NwXQog
ICAgICAgIDB4YjRjNWU1ZTA6ICAgIG1vdiAgICByMiwgcjAKICAgICAgICAweGI0YzVlNWUyOiAg
ICBtb3YgICAgcjMsIHIxCiAgICAgICAgMHhiNGM1ZTVlNDogICAgbW92cyAgIHIxLCAjMAogICAg
ICAgIDB4YjRjNWU1ZTY6ICAgIG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVlNWU4OiAgICBt
b3Z3ICAgcjEyLCAjNTM4MjAKICAgICAgICAweGI0YzVlNWVjOiAgICBtb3Z0ICAgcjEyLCAjNDU4
MjIKICAgICAgICAweGI0YzVlNWYwOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAw
eGI0YzVlNWY0OiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgICAgIDB4YjRjNWU1Zjg6ICAgIG1v
dnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZTVmYzogICAgc3RyICAgIHI3LCBbcjZdCiAg
ICAgICAgMHhiNGM1ZTVmZTogICAgbW92dyAgIHIxMiwgIzUxODE3CiAgICAgICAgMHhiNGM1ZTYw
MjogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAgICAgMHhiNGM1ZTYwNjogICAgYmx4ICAgIHIx
MgogICAgICAgIDB4YjRjNWU2MDg6ICAgIG1vdncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1
ZTYwYzogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVlNjEwOiAgICBsZHIgICAg
cjYsIFtyNl0KICAgICAgICAweGI0YzVlNjEyOiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhi
NGM1ZTYxNDogICAgYm5lICAgIDB4YjRjNWU2ODAKICAgICAgICAweGI0YzVlNjE2OiAgICB0c3Qg
ICAgcjAsIHIwCiAgICAgICAgMHhiNGM1ZTYxODogICAgYm5lICAgIDB4YjRjNWIzZjIKICAgICAg
ICAweGI0YzVlNjFjOiAgICBiICAgICAgMHhiNGM1YzNkOAogICAgKEVuZCBPZiBTbG93IFBhdGgp
CiAgICAgICAgMHhiNGM1ZTYyMDogICAgbXZuICAgIHIxMiwgIzIzCiAgICAgICAgMHhiNGM1ZTYy
NDogICAgbW92ICAgIHNwLCBzcAogICAgICAgIDB4YjRjNWU2MjY6ICAgIGFkZCAgICBzcCwgcjEy
CiAgICAgICAgMHhiNGM1ZTYyODogICAgbW92dyAgIHIxLCAjMTU5ODQKICAgICAgICAweGI0YzVl
NjJjOiAgICBtb3Z0ICAgcjEsICM0NjIwMgogICAgICAgIDB4YjRjNWU2MzA6ICAgIG1vdiAgICBy
MCwgcjcKICAgICAgICAweGI0YzVlNjMyOiAgICBtb3Z3ICAgcjEyLCAjNDc2MjgKICAgICAgICAw
eGI0YzVlNjM2OiAgICBtb3Z0ICAgcjEyLCAjNDU4MjIKICAgICAgICAweGI0YzVlNjNhOiAgICBz
dHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVlNjNlOiAgICBtb3Z3ICAgcjYsICM0
MjEyOAogICAgICAgIDB4YjRjNWU2NDI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhi
NGM1ZTY0NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAgICAgMHhiNGM1ZTY0ODogICAgbW92dyAg
IHIxMiwgIzQ3OTA5CiAgICAgICAgMHhiNGM1ZTY0YzogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAg
ICAgICAgMHhiNGM1ZTY1MDogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWU2NTI6ICAgIG1v
dncgICByNiwgIzQ2MzQ4CiAgICAgICAgMHhiNGM1ZTY1NjogICAgbW92dCAgIHI2LCAjNDYyMDcK
ICAgICAgICAweGI0YzVlNjVhOiAgICBsZHIgICAgcjYsIFtyNl0KICAgICAgICAweGI0YzVlNjVj
OiAgICBjbXAgICAgcjIsICMwCiAgICAgICAgMHhiNGM1ZTY1ZTogICAgYm5lICAgIDB4YjRjNWU4
NjAKICAgICAgICAweGI0YzVlNjYwOiAgICBtb3Z3ICAgcjAsICMzMjc2OAogICAgICAgIDB4YjRj
NWU2NjQ6ICAgIG1vdnQgICByMCwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZTY2ODogICAgbW92ICAg
IHIxLCByNwogICAgICAgIDB4YjRjNWU2NmE6ICAgIG1vdncgICByMTIsICM2MzIzNwogICAgICAg
IDB4YjRjNWU2NmU6ICAgIG1vdnQgICByMTIsICM0Njc3NgogICAgICAgIDB4YjRjNWU2NzI6ICAg
IGJseCAgICByMTIKICAgICAgICAweGI0YzVlNjc0OiAgICBtb3Z3ICAgcjYsICM0NjE4OAogICAg
ICAgIDB4YjRjNWU2Nzg6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZTY3Yzog
ICAgbGRyICAgIHIxLCBbcjZdCiAgICAgICAgMHhiNGM1ZTY3ZTogICAgYnggICAgIHIxCiAgICAg
ICAgMHhiNGM1ZTY4MDogICAgbW92dyAgIHIwLCAjMzI3NjgKICAgICAgICAweGI0YzVlNjg0OiAg
ICBtb3Z0ICAgcjAsICM0NjIwNwogICAgICAgIDB4YjRjNWU2ODg6ICAgIG1vdiAgICByMSwgcjcK
ICAgICAgICAweGI0YzVlNjhhOiAgICBtb3Z3ICAgcjEyLCAjNjMyMjUKICAgICAgICAweGI0YzVl
NjhlOiAgICBtb3Z0ICAgcjEyLCAjNDY3NzYKICAgICAgICAweGI0YzVlNjkyOiAgICBibHggICAg
cjEyCiAgICAgICAgMHhiNGM1ZTY5NDogICAgbW92dyAgIHI2LCAjNDYxODgKICAgICAgICAweGI0
YzVlNjk4OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWU2OWM6ICAgIGxkciAg
ICByMSwgW3I2XQogICAgICAgIDB4YjRjNWU2OWU6ICAgIGJ4ICAgICByMQpMaW5raW5nIGNhbGwg
aW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2Jh
bCwgMTU1NF0gYXQgYmMjMTIwMSB0byBvcGFxdWVQb3cjQzZraGU5OlsweGI0NzkzN2UwLT4weGI0
N2Q1YWMwLCBCYXNlbGluZUZ1bmN0aW9uQ2FsbCwgNDcgKE5ldmVySW5saW5lKV0sIGVudHJ5cG9p
bnQgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNmYwMWI4MSwgZGF0YUxvY2F0aW9uID0gMHhi
NmYwMWI4MCkKTGlua2luZyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhi
NDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEyMzEgdG8gaXNJZGVudGljYWwj
RWExclFEOlsweGI0NzkxODYwLT4weGI0NzkzNjkwLT4weGI0N2Q1YTQwLCBERkdGdW5jdGlvbkNh
bGwsIDk1XSwgZW50cnlwb2ludCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI2ZjAyMGExLCBk
YXRhTG9jYXRpb24gPSAweGI2ZjAyMGEwKQpMaW5raW5nIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklv
OlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMx
NSB0byAjQXJabk9sOlsweGI0NzkxNzEwLT4weGI0N2Q1NzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NDddLCBlbnRyeXBvaW50IGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjZmMDc5YTEsIGRhdGFM
b2NhdGlvbiA9IDB4YjZmMDc5YTApCkxpbmtpbmcgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4
YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzQ4IHRv
IGlzSWRlbnRpY2FsI0VhMXJRRDpbMHhiNDc5MTg2MC0+MHhiNDc5MzY5MC0+MHhiNDdkNWE0MCwg
REZHRnVuY3Rpb25DYWxsLCA5NV0sIGVudHJ5cG9pbnQgYXQgQ29kZVB0cihleGVjdXRhYmxlID0g
MHhiNmYwMjBhMSwgZGF0YUxvY2F0aW9uID0gMHhiNmYwMjBhMCkKTGlua2luZyBjYWxsIGluIDxn
bG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1
NTRdIGF0IGJjIzE0MTEgdG8gI0FNSXlUZjpbMHhiNDc5MjU4MC0+MHhiNDdkNGRjMCwgTExJbnRG
dW5jdGlvbkNhbGwsIDYxXSwgZW50cnlwb2ludCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI2
ZjA3OWExLCBkYXRhTG9jYXRpb24gPSAweGI2ZjA3OWEwKQpMaW5raW5nIGNhbGwgaW4gPGdsb2Jh
bD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0g
YXQgYmMjMTQ0NCB0byBpc0lkZW50aWNhbCNFYTFyUUQ6WzB4YjQ3OTE4NjAtPjB4YjQ3OTM2OTAt
PjB4YjQ3ZDVhNDAsIERGR0Z1bmN0aW9uQ2FsbCwgOTVdLCBlbnRyeXBvaW50IGF0IENvZGVQdHIo
ZXhlY3V0YWJsZSA9IDB4YjZmMDIwYTEsIGRhdGFMb2NhdGlvbiA9IDB4YjZmMDIwYTApCkdlbmVy
YXRlZCBKSVQgY29kZSBmb3IgUG9seW1vcnBoaWMgY2FsbCBzdHViIGZvciA8Z2xvYmFsPiNCeVB6
SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSwgcmV0dXJu
IHBvaW50IDB4YjRjNWUyMTksIHRhcmdldHMgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4
YjQ3OWJjODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3
ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FNSXlUZjpbMHhiNDc5MjU4MC0+MHhiNDdkNGRjMCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDYxXSksIGNvZGVCbG9jayA9ICNBTUl5VGY6WzB4YjQ3OTI1ODAtPjB4
YjQ3ZDRkYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2MV0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjog
Q2VsbDogMHhiNDc5YmJjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJv
dG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQ1lWVGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0
Y2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjRdKSwgY29kZUJsb2NrID0gI0NZVlRsVzpbMHhiNDc5
MjQzMC0+MHhiNDdkNGNjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDY0XT46CiAgICBDb2RlIGF0IFsw
eGI2ZjAyNjIxLCAweGI2ZjAyNmMxKToKICAgIDB4YjZmMDI2MjA6ICAgIG1vdncgICByMSwgIzY0
NDcyCiAgICAweGI2ZjAyNjI0OiAgICBtb3Z0ICAgcjEsICMxODYKICAgIDB4YjZmMDI2Mjg6ICAg
IG1vdncgICByMTIsICM0ODA2NAogICAgMHhiNmYwMjYyYzogICAgbW92dCAgIHIxMiwgIzQ2MjAx
CiAgICAweGI2ZjAyNjMwOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNmYwMjYzNDogICAgYm5l
ICAgIDB4YjZmMDI2NTYKICAgIDB4YjZmMDI2MzY6ICAgIGxkciAgICByMTIsIFtyMSwgIzRdCiAg
ICAweGI2ZjAyNjNhOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI2ZjAyNjNlOiAgICBz
dHIgICAgcjEyLCBbcjEsICM0XQogICAgMHhiNmYwMjY0MjogICAgbW92dyAgIHIxMiwgIzMxMTM3
CiAgICAweGI2ZjAyNjQ2OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjZmMDI2NGE6ICAg
IGJseCAgICByMTIKICAgIDB4YjZmMDI2NGM6ICAgIG1vdncgICByMTIsICM0ODk5OQogICAgMHhi
NmYwMjY1MDogICAgbW92dCAgIHIxMiwgIzQ2Mjc3CiAgICAweGI2ZjAyNjU0OiAgICBieCAgICAg
cjEyCiAgICAweGI2ZjAyNjU2OiAgICBtb3Z3ICAgcjEyLCAjNDgyNTYKICAgIDB4YjZmMDI2NWE6
ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNmYwMjY1ZTogICAgY21wICAgIHIwLCByMTIK
ICAgIDB4YjZmMDI2NjI6ICAgIGJuZSAgICAweGI2ZjAyNjg0CiAgICAweGI2ZjAyNjY0OiAgICBs
ZHIgICAgcjEyLCBbcjFdCiAgICAweGI2ZjAyNjY4OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAg
ICAweGI2ZjAyNjZjOiAgICBzdHIgICAgcjEyLCBbcjFdCiAgICAweGI2ZjAyNjcwOiAgICBtb3Z3
ICAgcjEyLCAjMzExMzcKICAgIDB4YjZmMDI2NzQ6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAg
MHhiNmYwMjY3ODogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMjY3YTogICAgbW92dyAgIHIxMiwg
IzQ4OTk5CiAgICAweGI2ZjAyNjdlOiAgICBtb3Z0ICAgcjEyLCAjNDYyNzcKICAgIDB4YjZmMDI2
ODI6ICAgIGJ4ICAgICByMTIKICAgIDB4YjZmMDI2ODQ6ICAgIG12biAgICByMSwgIzQKICAgIDB4
YjZmMDI2ODg6ICAgIG1vdncgICByMiwgIzQ1NDg4CiAgICAweGI2ZjAyNjhjOiAgICBtb3Z0ICAg
cjIsICM0NjI2MwogICAgMHhiNmYwMjY5MDogICAgbW92dyAgIHI4LCAjNTc4ODEKICAgIDB4YjZm
MDI2OTQ6ICAgIG1vdnQgICByOCwgIzQ2Mjc3CiAgICAweGI2ZjAyNjk4OiAgICBtb3YgICAgbHIs
IHI4CiAgICAweGI2ZjAyNjlhOiAgICBub3AgICAgCiAgICAweGI2ZjAyNjljOiAgICBub3AgICAg
CiAgICAweGI2ZjAyNmEwOiAgICBiICAgICAgMHhiNjcwM2U2MApMaW5raW5nIHBvbHltb3JwaGlj
IGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGlu
ZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJjODAg
KDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsg
RXhlY3V0YWJsZTogI0FNSXlUZjpbMHhiNDc5MjU4MC0+MHhiNDdkNGRjMCwgTExJbnRGdW5jdGlv
bkNhbGwsIDYxXSksIGNvZGVCbG9jayA9ICNBTUl5VGY6WzB4YjQ3OTI1ODAtPjB4YjQ3ZDRkYzAs
IExMSW50RnVuY3Rpb25DYWxsLCA2MV0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9i
YWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRd
IGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYmMwICgweGI0N2Y3MDkwOltG
dW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICND
WVZUbFc6WzB4YjQ3OTI0MzAtPjB4YjQ3ZDRjYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2NF0pLCBj
b2RlQmxvY2sgPSAjQ1lWVGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0Y2MwLCBMTEludEZ1bmN0aW9u
Q2FsbCwgNjRdCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgVmlydHVhbCBjYWxsIHNsb3cgcGF0aCB0
aHVuazoKICAgIENvZGUgYXQgWzB4YjZmMDI2YzEsIDB4YjZmMDI3ODEpOgogICAgMHhiNmYwMjZj
MDogICAgbGRyICAgIHIxMiwgW3IyLCAjNTJdCiAgICAweGI2ZjAyNmM0OiAgICBhZGR3ICAgcjEy
LCByMTIsICMxCiAgICAweGI2ZjAyNmM4OiAgICBzdHIgICAgcjEyLCBbcjIsICM1Ml0KICAgIDB4
YjZmMDI2Y2M6ICAgIGNtbiAgICByMSwgIzUKICAgIDB4YjZmMDI2ZDA6ICAgIGJuZSAgICAweGI2
ZjAyNmU4CiAgICAweGI2ZjAyNmQyOiAgICBsZHJiICAgcjYsIFtyMCwgIzVdCiAgICAweGI2ZjAy
NmQ0OiAgICBjbXAgICAgcjIsICMyMwogICAgMHhiNmYwMjZkNjogICAgYm5lICAgIDB4YjZmMDI2
ZTgKICAgIDB4YjZmMDI2ZDg6ICAgIGxkciAgICByOCwgW3IwLCAjMjBdCiAgICAweGI2ZjAyNmRj
OiAgICBsZHIgICAgcjgsIFtyOCwgIzI4XQogICAgMHhiNmYwMjZlMDogICAgdHN0ICAgIHI4LCBy
OAogICAgMHhiNmYwMjZlNDogICAgYmVxICAgIDB4YjZmMDI2ZTgKICAgIDB4YjZmMDI2ZTY6ICAg
IGJ4ICAgICByOAogICAgMHhiNmYwMjZlODogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjAy
NmVjOiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2ZjAyNmVlOiAgICBtb3Z3ICAgcjYsICM0MjEy
OAogICAgMHhiNmYwMjZmMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjZmMDI2ZjY6ICAg
IHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMjZmODogICAgbXZuICAgIHIxMiwgIzIzCiAgICAw
eGI2ZjAyNmZjOiAgICBtb3YgICAgc3AsIHNwCiAgICAweGI2ZjAyNmZlOiAgICBhZGQgICAgc3As
IHIxMgogICAgMHhiNmYwMjcwMDogICAgbW92ICAgIHIxLCByMgogICAgMHhiNmYwMjcwMjogICAg
bW92ICAgIHIwLCByNwogICAgMHhiNmYwMjcwNDogICAgbW92dyAgIHI0LCAjNTEyNzcKICAgIDB4
YjZmMDI3MDg6ICAgIG1vdnQgICByNCwgIzQ2Nzc2CiAgICAweGI2ZjAyNzBjOiAgICBibHggICAg
cjQKICAgIDB4YjZmMDI3MGU6ICAgIGFkZCAgICBzcCwgc3AsICM2CiAgICAweGI2ZjAyNzEwOiAg
ICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAyNzEyOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4
YjZmMDI3MTY6ICAgIHRzdCAgICByMSwgcjEKICAgIDB4YjZmMDI3MTg6ICAgIGJlcSAgICAweGI2
ZjAyNzY4CiAgICAweGI2ZjAyNzFhOiAgICBtb3YgICAgcjUsIGxyCiAgICAweGI2ZjAyNzFjOiAg
ICBsZHIgICAgcjEsIFtyNywgIzI0XQogICAgMHhiNmYwMjcxZTogICAgbGRyICAgIHIzLCBbcjcs
ICM4XQogICAgMHhiNmYwMjcyMDogICAgbGRyICAgIHIzLCBbcjMsICMzMl0KICAgIDB4YjZmMDI3
MjI6ICAgIGNtcCAgICByMywgcjEKICAgIDB4YjZmMDI3MjQ6ICAgIGJscyAgICAweGI2ZjAyNzI4
CiAgICAweGI2ZjAyNzI2OiAgICBtb3YgICAgcjEsIHIzCiAgICAweGI2ZjAyNzI4OiAgICBhZGRz
ICAgcjEsIHIxLCAjNQogICAgMHhiNmYwMjcyYTogICAgbXZuICAgIHIxMiwgIzEKICAgIDB4YjZm
MDI3MmU6ICAgIGFuZCAgICByMSwgcjEsIHIxMgogICAgMHhiNmYwMjczMjogICAgbW92ICAgIHIx
MiwgIzgKICAgIDB4YjZmMDI3MzY6ICAgIHNtdWxsICByMSwgcjEyLCByMSwgcjEyCiAgICAweGI2
ZjAyNzNhOiAgICBhZGRzICAgcjMsIHI3LCByMQogICAgMHhiNmYwMjczYzogICAgbGRyICAgIHIx
LCBbc3AsICMxNl0KICAgIDB4YjZmMDI3M2U6ICAgIGFkZHMgICByMSwgcjEsICM1CiAgICAweGI2
ZjAyNzQwOiAgICBtdm4gICAgcjEyLCAjMQogICAgMHhiNmYwMjc0NDogICAgYW5kICAgIHIxLCBy
MSwgcjEyCiAgICAweGI2ZjAyNzQ4OiAgICBtb3YgICAgcjEyLCAjOAogICAgMHhiNmYwMjc0Yzog
ICAgc211bGwgIHIxLCByMTIsIHIxLCByMTIKICAgIDB4YjZmMDI3NTA6ICAgIGxkciAgICBsciwg
W3I3LCAjNF0KICAgIDB4YjZmMDI3NTQ6ICAgIHN1YnMgICByMSwgIzgKICAgIDB4YjZmMDI3NTY6
ICAgIHN1YnMgICByMywgcjMsIHIxCiAgICAweGI2ZjAyNzU4OiAgICBsZHIgICAgcjcsIFtyN10K
ICAgIDB4YjZmMDI3NWE6ICAgIHN1YnMgICByMSwgcjEsICM0CiAgICAweGI2ZjAyNzVjOiAgICBs
ZHIgICAgcjIsIFtzcCwgcjFdCiAgICAweGI2ZjAyNzYwOiAgICBzdHIgICAgcjIsIFtyMywgcjFd
CiAgICAweGI2ZjAyNzYyOiAgICB0c3QgICAgcjEsIHIxCiAgICAweGI2ZjAyNzY0OiAgICBibmUg
ICAgMHhiNmYwMjk1YQogICAgMHhiNmYwMjc2NjogICAgbW92ICAgIHNwLCByMwogICAgMHhiNmYw
Mjc2ODogICAgYnggICAgIHIwCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgUG9seW1vcnBoaWMgY2Fs
bCBzdHViIGZvciA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2Vs
aW5lR2xvYmFsLCAxNTU0XSwgcmV0dXJuIHBvaW50IDB4YjRjNWUyMTksIHRhcmdldHMgPHZhcmlh
bnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJjODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7
fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FNSXlUZjpbMHhi
NDc5MjU4MC0+MHhiNDdkNGRjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDYxXSksIGNvZGVCbG9jayA9
ICNBTUl5VGY6WzB4YjQ3OTI1ODAtPjB4YjQ3ZDRkYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2MV0+
LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmJjMCAoMHhiNDdmNzA5MDpbRnVu
Y3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQ1lW
VGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0Y2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjRdKSwgY29k
ZUJsb2NrID0gI0NZVlRsVzpbMHhiNDc5MjQzMC0+MHhiNDdkNGNjMCwgTExJbnRGdW5jdGlvbkNh
bGwsIDY0XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYjAwICgweGI0N2Y3
MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFi
bGU6ICNCUXlJdEY6WzB4YjQ3OTIyZTAtPjB4YjQ3ZDRiYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3
MF0pLCBjb2RlQmxvY2sgPSAjQlF5SXRGOlsweGI0NzkyMmUwLT4weGI0N2Q0YmMwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNzBdPjoKICAgIENvZGUgYXQgWzB4YjZmMDI3ODEsIDB4YjZmMDI4NDEpOgog
ICAgMHhiNmYwMjc4MDogICAgbW92dyAgIHIxLCAjNjQ0ODgKICAgIDB4YjZmMDI3ODQ6ICAgIG1v
dnQgICByMSwgIzE4NgogICAgMHhiNmYwMjc4ODogICAgbW92dyAgIHIxMiwgIzQ3ODcyCiAgICAw
eGI2ZjAyNzhjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjZmMDI3OTA6ICAgIGNtcCAg
ICByMCwgcjEyCiAgICAweGI2ZjAyNzk0OiAgICBibmUgICAgMHhiNmYwMjdiNgogICAgMHhiNmYw
Mjc5NjogICAgbGRyICAgIHIxMiwgW3IxLCAjOF0KICAgIDB4YjZmMDI3OWE6ICAgIGFkZHcgICBy
MTIsIHIxMiwgIzEKICAgIDB4YjZmMDI3OWU6ICAgIHN0ciAgICByMTIsIFtyMSwgIzhdCiAgICAw
eGI2ZjAyN2EyOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjZmMDI3YTY6ICAgIG1vdnQg
ICByMTIsICM0NjgzMgogICAgMHhiNmYwMjdhYTogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMjdh
YzogICAgbW92dyAgIHIxMiwgIzQ4OTk5CiAgICAweGI2ZjAyN2IwOiAgICBtb3Z0ICAgcjEyLCAj
NDYyNzcKICAgIDB4YjZmMDI3YjQ6ICAgIGJ4ICAgICByMTIKICAgIDB4YjZmMDI3YjY6ICAgIG1v
dncgICByMTIsICM0ODI1NgogICAgMHhiNmYwMjdiYTogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAg
ICAweGI2ZjAyN2JlOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNmYwMjdjMjogICAgYm5lICAg
IDB4YjZmMDI3ZTQKICAgIDB4YjZmMDI3YzQ6ICAgIGxkciAgICByMTIsIFtyMV0KICAgIDB4YjZm
MDI3Yzg6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjZmMDI3Y2M6ICAgIHN0ciAgICBy
MTIsIFtyMV0KICAgIDB4YjZmMDI3ZDA6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNmYw
MjdkNDogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI2ZjAyN2Q4OiAgICBibHggICAgcjEy
CiAgICAweGI2ZjAyN2RhOiAgICBtb3Z3ICAgcjEyLCAjNDg5OTkKICAgIDB4YjZmMDI3ZGU6ICAg
IG1vdnQgICByMTIsICM0NjI3NwogICAgMHhiNmYwMjdlMjogICAgYnggICAgIHIxMgogICAgMHhi
NmYwMjdlNDogICAgbW92dyAgIHIxMiwgIzQ4MDY0CiAgICAweGI2ZjAyN2U4OiAgICBtb3Z0ICAg
cjEyLCAjNDYyMDEKICAgIDB4YjZmMDI3ZWM6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI2ZjAy
N2YwOiAgICBibmUgICAgMHhiNmYwMjgxMgogICAgMHhiNmYwMjdmMjogICAgbGRyICAgIHIxMiwg
W3IxLCAjNF0KICAgIDB4YjZmMDI3ZjY6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjZm
MDI3ZmE6ICAgIHN0ciAgICByMTIsIFtyMSwgIzRdCiAgICAweGI2ZjAyN2ZlOiAgICBtb3Z3ICAg
cjEyLCAjMzExMzcKICAgIDB4YjZmMDI4MDI6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhi
NmYwMjgwNjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMjgwODogICAgbW92dyAgIHIxMiwgIzQ4
OTk5CiAgICAweGI2ZjAyODBjOiAgICBtb3Z0ICAgcjEyLCAjNDYyNzcKICAgIDB4YjZmMDI4MTA6
ICAgIGJ4ICAgICByMTIKICAgIDB4YjZmMDI4MTI6ICAgIG12biAgICByMSwgIzQKICAgIDB4YjZm
MDI4MTY6ICAgIG1vdncgICByMiwgIzQ1NDg4CiAgICAweGI2ZjAyODFhOiAgICBtb3Z0ICAgcjIs
ICM0NjI2MwogICAgMHhiNmYwMjgxZTogICAgbW92dyAgIHI4LCAjNTc4ODEKICAgIDB4YjZmMDI4
MjI6ICAgIG1vdnQgICByOCwgIzQ2Mjc3CiAgICAweGI2ZjAyODI2OiAgICBtb3YgICAgbHIsIHI4
CiAgICAweGI2ZjAyODI4OiAgICBub3AgICAgCiAgICAweGI2ZjAyODJhOiAgICBub3AgICAgCiAg
ICAweGI2ZjAyODJlOiAgICBiICAgICAgMHhiNjcwM2U2MApMaW5raW5nIHBvbHltb3JwaGljIGNh
bGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUds
b2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJjODAgKDB4
YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhl
Y3V0YWJsZTogI0FNSXlUZjpbMHhiNDc5MjU4MC0+MHhiNDdkNGRjMCwgTExJbnRGdW5jdGlvbkNh
bGwsIDYxXSksIGNvZGVCbG9jayA9ICNBTUl5VGY6WzB4YjQ3OTI1ODAtPjB4YjQ3ZDRkYzAsIExM
SW50RnVuY3Rpb25DYWxsLCA2MV0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+
I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0
IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYmMwICgweGI0N2Y3MDkwOltGdW5j
dGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNDWVZU
bFc6WzB4YjQ3OTI0MzAtPjB4YjQ3ZDRjYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2NF0pLCBjb2Rl
QmxvY2sgPSAjQ1lWVGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0Y2MwLCBMTEludEZ1bmN0aW9uQ2Fs
bCwgNjRdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3
YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChG
dW5jdGlvbjogQ2VsbDogMHhiNDc5YmIwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25B
cnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQlF5SXRGOlsweGI0NzkyMmUw
LT4weGI0N2Q0YmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0JReUl0
RjpbMHhiNDc5MjJlMC0+MHhiNDdkNGJjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXQpHZW5lcmF0
ZWQgSklUIGNvZGUgZm9yIFZpcnR1YWwgY2FsbCBzbG93IHBhdGggdGh1bms6CiAgICBDb2RlIGF0
IFsweGI2ZjAyODQxLCAweGI2ZjAyOTAxKToKICAgIDB4YjZmMDI4NDA6ICAgIGxkciAgICByMTIs
IFtyMiwgIzUyXQogICAgMHhiNmYwMjg0NDogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhi
NmYwMjg0ODogICAgc3RyICAgIHIxMiwgW3IyLCAjNTJdCiAgICAweGI2ZjAyODRjOiAgICBjbW4g
ICAgcjEsICM1CiAgICAweGI2ZjAyODUwOiAgICBibmUgICAgMHhiNmYwMjg2OAogICAgMHhiNmYw
Mjg1MjogICAgbGRyYiAgIHI2LCBbcjAsICM1XQogICAgMHhiNmYwMjg1NDogICAgY21wICAgIHIy
LCAjMjMKICAgIDB4YjZmMDI4NTY6ICAgIGJuZSAgICAweGI2ZjAyODY4CiAgICAweGI2ZjAyODU4
OiAgICBsZHIgICAgcjgsIFtyMCwgIzIwXQogICAgMHhiNmYwMjg1YzogICAgbGRyICAgIHI4LCBb
cjgsICMyOF0KICAgIDB4YjZmMDI4NjA6ICAgIHRzdCAgICByOCwgcjgKICAgIDB4YjZmMDI4NjQ6
ICAgIGJlcSAgICAweGI2ZjAyODY4CiAgICAweGI2ZjAyODY2OiAgICBieCAgICAgcjgKICAgIDB4
YjZmMDI4Njg6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwMjg2YzogICAgbW92ICAgIHI3
LCBzcAogICAgMHhiNmYwMjg2ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjZmMDI4NzI6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAyODc2OiAgICBzdHIgICAgcjcsIFtyNl0K
ICAgIDB4YjZmMDI4Nzg6ICAgIG12biAgICByMTIsICMyMwogICAgMHhiNmYwMjg3YzogICAgbW92
ICAgIHNwLCBzcAogICAgMHhiNmYwMjg3ZTogICAgYWRkICAgIHNwLCByMTIKICAgIDB4YjZmMDI4
ODA6ICAgIG1vdiAgICByMSwgcjIKICAgIDB4YjZmMDI4ODI6ICAgIG1vdiAgICByMCwgcjcKICAg
IDB4YjZmMDI4ODQ6ICAgIG1vdncgICByNCwgIzUxMjc3CiAgICAweGI2ZjAyODg4OiAgICBtb3Z0
ICAgcjQsICM0Njc3NgogICAgMHhiNmYwMjg4YzogICAgYmx4ICAgIHI0CiAgICAweGI2ZjAyODhl
OiAgICBhZGQgICAgc3AsIHNwLCAjNgogICAgMHhiNmYwMjg5MDogICAgbW92ICAgIHNwLCByNwog
ICAgMHhiNmYwMjg5MjogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjAyODk2OiAgICB0c3Qg
ICAgcjEsIHIxCiAgICAweGI2ZjAyODk4OiAgICBiZXEgICAgMHhiNmYwMjhlOAogICAgMHhiNmYw
Mjg5YTogICAgbW92ICAgIHI1LCBscgogICAgMHhiNmYwMjg5YzogICAgbGRyICAgIHIxLCBbcjcs
ICMyNF0KICAgIDB4YjZmMDI4OWU6ICAgIGxkciAgICByMywgW3I3LCAjOF0KICAgIDB4YjZmMDI4
YTA6ICAgIGxkciAgICByMywgW3IzLCAjMzJdCiAgICAweGI2ZjAyOGEyOiAgICBjbXAgICAgcjMs
IHIxCiAgICAweGI2ZjAyOGE0OiAgICBibHMgICAgMHhiNmYwMjhhOAogICAgMHhiNmYwMjhhNjog
ICAgbW92ICAgIHIxLCByMwogICAgMHhiNmYwMjhhODogICAgYWRkcyAgIHIxLCByMSwgIzUKICAg
IDB4YjZmMDI4YWE6ICAgIG12biAgICByMTIsICMxCiAgICAweGI2ZjAyOGFlOiAgICBhbmQgICAg
cjEsIHIxLCByMTIKICAgIDB4YjZmMDI4YjI6ICAgIG1vdiAgICByMTIsICM4CiAgICAweGI2ZjAy
OGI2OiAgICBzbXVsbCAgcjEsIHIxMiwgcjEsIHIxMgogICAgMHhiNmYwMjhiYTogICAgYWRkcyAg
IHIzLCByNywgcjEKICAgIDB4YjZmMDI4YmM6ICAgIGxkciAgICByMSwgW3NwLCAjMTZdCiAgICAw
eGI2ZjAyOGJlOiAgICBhZGRzICAgcjEsIHIxLCAjNQogICAgMHhiNmYwMjhjMDogICAgbXZuICAg
IHIxMiwgIzEKICAgIDB4YjZmMDI4YzQ6ICAgIGFuZCAgICByMSwgcjEsIHIxMgogICAgMHhiNmYw
MjhjODogICAgbW92ICAgIHIxMiwgIzgKICAgIDB4YjZmMDI4Y2M6ICAgIHNtdWxsICByMSwgcjEy
LCByMSwgcjEyCiAgICAweGI2ZjAyOGQwOiAgICBsZHIgICAgbHIsIFtyNywgIzRdCiAgICAweGI2
ZjAyOGQ0OiAgICBzdWJzICAgcjEsICM4CiAgICAweGI2ZjAyOGQ2OiAgICBzdWJzICAgcjMsIHIz
LCByMQogICAgMHhiNmYwMjhkODogICAgbGRyICAgIHI3LCBbcjddCiAgICAweGI2ZjAyOGRhOiAg
ICBzdWJzICAgcjEsIHIxLCAjNAogICAgMHhiNmYwMjhkYzogICAgbGRyICAgIHIyLCBbc3AsIHIx
XQogICAgMHhiNmYwMjhlMDogICAgc3RyICAgIHIyLCBbcjMsIHIxXQogICAgMHhiNmYwMjhlMjog
ICAgdHN0ICAgIHIxLCByMQogICAgMHhiNmYwMjhlNDogICAgYm5lICAgIDB4YjZmMDJhZGEKICAg
IDB4YjZmMDI4ZTY6ICAgIG1vdiAgICBzcCwgcjMKICAgIDB4YjZmMDI4ZTg6ICAgIGJ4ICAgICBy
MApDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRy
KGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMj
MTQxMQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2Rl
UHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwg
YmMjMTQxMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIFBvbHltb3JwaGljIGNhbGwgc3R1YiBmb3Ig
PGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwg
MTU1NF0sIHJldHVybiBwb2ludCAweGI0YzVlMjE5LCB0YXJnZXRzIDx2YXJpYW50ID0gKEZ1bmN0
aW9uOiBDZWxsOiAweGI0NzliYzgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5
LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBTUl5VGY6WzB4YjQ3OTI1ODAtPjB4
YjQ3ZDRkYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2MV0pLCBjb2RlQmxvY2sgPSAjQU1JeVRmOlsw
eGI0NzkyNTgwLT4weGI0N2Q0ZGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjFdPiwgPHZhcmlhbnQg
PSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJiYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwg
Tm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0NZVlRsVzpbMHhiNDc5
MjQzMC0+MHhiNDdkNGNjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDY0XSksIGNvZGVCbG9jayA9ICND
WVZUbFc6WzB4YjQ3OTI0MzAtPjB4YjQ3ZDRjYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2NF0+LCA8
dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmIwMCAoMHhiNDdmNzA5MDpbRnVuY3Rp
b24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQlF5SXRG
OlsweGI0NzkyMmUwLT4weGI0N2Q0YmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJs
b2NrID0gI0JReUl0RjpbMHhiNDc5MjJlMC0+MHhiNDdkNGJjMCwgTExJbnRGdW5jdGlvbkNhbGws
IDcwXT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYTQwICgweGI0N2Y3MDkw
OltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6
ICNBVWhGSFc6WzB4YjQ3OTIxOTAtPjB4YjQ3ZDRhYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0p
LCBjb2RlQmxvY2sgPSAjQVVoRkhXOlsweGI0NzkyMTkwLT4weGI0N2Q0YWMwLCBMTEludEZ1bmN0
aW9uQ2FsbCwgNzBdPjoKICAgIENvZGUgYXQgWzB4YjZmMDI5MDEsIDB4YjZmMDJhMDEpOgogICAg
MHhiNmYwMjkwMDogICAgbW92dyAgIHIxLCAjNjQzMjAKICAgIDB4YjZmMDI5MDQ6ICAgIG1vdnQg
ICByMSwgIzE4NgogICAgMHhiNmYwMjkwODogICAgbW92dyAgIHIxMiwgIzQ4MDY0CiAgICAweGI2
ZjAyOTBjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjZmMDI5MTA6ICAgIGNtcCAgICBy
MCwgcjEyCiAgICAweGI2ZjAyOTE0OiAgICBibHQgICAgMHhiNmYwMjk3MgogICAgMHhiNmYwMjkx
NjogICAgbW92dyAgIHIxMiwgIzQ4MjU2CiAgICAweGI2ZjAyOTFhOiAgICBtb3Z0ICAgcjEyLCAj
NDYyMDEKICAgIDB4YjZmMDI5MWU6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI2ZjAyOTIyOiAg
ICBibmUgICAgMHhiNmYwMjk0NAogICAgMHhiNmYwMjkyNDogICAgbGRyICAgIHIxMiwgW3IxXQog
ICAgMHhiNmYwMjkyODogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNmYwMjkyYzogICAg
c3RyICAgIHIxMiwgW3IxXQogICAgMHhiNmYwMjkzMDogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAg
ICAweGI2ZjAyOTM0OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjZmMDI5Mzg6ICAgIGJs
eCAgICByMTIKICAgIDB4YjZmMDI5M2E6ICAgIG1vdncgICByMTIsICM0ODk5OQogICAgMHhiNmYw
MjkzZTogICAgbW92dCAgIHIxMiwgIzQ2Mjc3CiAgICAweGI2ZjAyOTQyOiAgICBieCAgICAgcjEy
CiAgICAweGI2ZjAyOTQ0OiAgICBtb3Z3ICAgcjEyLCAjNDgwNjQKICAgIDB4YjZmMDI5NDg6ICAg
IG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNmYwMjk0YzogICAgY21wICAgIHIwLCByMTIKICAg
IDB4YjZmMDI5NTA6ICAgIGJuZSAgICAweGI2ZjAyOWNlCiAgICAweGI2ZjAyOTUyOiAgICBsZHIg
ICAgcjEyLCBbcjEsICM0XQogICAgMHhiNmYwMjk1NjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQog
ICAgMHhiNmYwMjk1YTogICAgc3RyICAgIHIxMiwgW3IxLCAjNF0KICAgIDB4YjZmMDI5NWU6ICAg
IG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNmYwMjk2MjogICAgbW92dCAgIHIxMiwgIzQ2ODMy
CiAgICAweGI2ZjAyOTY2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjAyOTY4OiAgICBtb3Z3ICAg
cjEyLCAjNDg5OTkKICAgIDB4YjZmMDI5NmM6ICAgIG1vdnQgICByMTIsICM0NjI3NwogICAgMHhi
NmYwMjk3MDogICAgYnggICAgIHIxMgogICAgMHhiNmYwMjk3MjogICAgbW92dyAgIHIxMiwgIzQ3
ODcyCiAgICAweGI2ZjAyOTc2OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjZmMDI5N2E6
ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI2ZjAyOTdlOiAgICBibmUgICAgMHhiNmYwMjlhMAog
ICAgMHhiNmYwMjk4MDogICAgbGRyICAgIHIxMiwgW3IxLCAjOF0KICAgIDB4YjZmMDI5ODQ6ICAg
IGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjZmMDI5ODg6ICAgIHN0ciAgICByMTIsIFtyMSwg
IzhdCiAgICAweGI2ZjAyOThjOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjZmMDI5OTA6
ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNmYwMjk5NDogICAgYmx4ICAgIHIxMgogICAg
MHhiNmYwMjk5NjogICAgbW92dyAgIHIxMiwgIzQ4OTk5CiAgICAweGI2ZjAyOTlhOiAgICBtb3Z0
ICAgcjEyLCAjNDYyNzcKICAgIDB4YjZmMDI5OWU6ICAgIGJ4ICAgICByMTIKICAgIDB4YjZmMDI5
YTA6ICAgIG1vdncgICByMTIsICM0NzY4MAogICAgMHhiNmYwMjlhNDogICAgbW92dCAgIHIxMiwg
IzQ2MjAxCiAgICAweGI2ZjAyOWE4OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNmYwMjlhYzog
ICAgYm5lICAgIDB4YjZmMDI5Y2UKICAgIDB4YjZmMDI5YWU6ICAgIGxkciAgICByMTIsIFtyMSwg
IzEyXQogICAgMHhiNmYwMjliMjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNmYwMjli
NjogICAgc3RyICAgIHIxMiwgW3IxLCAjMTJdCiAgICAweGI2ZjAyOWJhOiAgICBtb3Z3ICAgcjEy
LCAjMzExMzcKICAgIDB4YjZmMDI5YmU6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNmYw
MjljMjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMjljNDogICAgbW92dyAgIHIxMiwgIzQ4OTk5
CiAgICAweGI2ZjAyOWM4OiAgICBtb3Z0ICAgcjEyLCAjNDYyNzcKICAgIDB4YjZmMDI5Y2M6ICAg
IGJ4ICAgICByMTIKICAgIDB4YjZmMDI5Y2U6ICAgIG12biAgICByMSwgIzQKICAgIDB4YjZmMDI5
ZDI6ICAgIG1vdncgICByMiwgIzQ1NDg4CiAgICAweGI2ZjAyOWQ2OiAgICBtb3Z0ICAgcjIsICM0
NjI2MwogICAgMHhiNmYwMjlkYTogICAgbW92dyAgIHI4LCAjNTc4ODEKICAgIDB4YjZmMDI5ZGU6
ICAgIG1vdnQgICByOCwgIzQ2Mjc3CiAgICAweGI2ZjAyOWUyOiAgICBtb3YgICAgbHIsIHI4CiAg
ICAweGI2ZjAyOWU0OiAgICBub3AgICAgCiAgICAweGI2ZjAyOWU2OiAgICBub3AgICAgCiAgICAw
eGI2ZjAyOWVhOiAgICBiICAgICAgMHhiNjcwM2U2MApMaW5raW5nIHBvbHltb3JwaGljIGNhbGwg
aW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2Jh
bCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJjODAgKDB4YjQ3
ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0
YWJsZTogI0FNSXlUZjpbMHhiNDc5MjU4MC0+MHhiNDdkNGRjMCwgTExJbnRGdW5jdGlvbkNhbGws
IDYxXSksIGNvZGVCbG9jayA9ICNBTUl5VGY6WzB4YjQ3OTI1ODAtPjB4YjQ3ZDRkYzAsIExMSW50
RnVuY3Rpb25DYWxsLCA2MV0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5
UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJj
IzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYmMwICgweGI0N2Y3MDkwOltGdW5jdGlv
biwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNDWVZUbFc6
WzB4YjQ3OTI0MzAtPjB4YjQ3ZDRjYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2NF0pLCBjb2RlQmxv
Y2sgPSAjQ1lWVGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0Y2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NjRdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNl
NzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5j
dGlvbjogQ2VsbDogMHhiNDc5YmIwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJh
eSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQlF5SXRGOlsweGI0NzkyMmUwLT4w
eGI0N2Q0YmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0JReUl0Rjpb
MHhiNDc5MjJlMC0+MHhiNDdkNGJjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXQpMaW5raW5nIHBv
bHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUw
LCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4
YjQ3OWJhNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3
ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FVaEZIVzpbMHhiNDc5MjE5MC0+MHhiNDdkNGFjMCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNBVWhGSFc6WzB4YjQ3OTIxOTAtPjB4
YjQ3ZDRhYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0KR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBW
aXJ0dWFsIGNhbGwgc2xvdyBwYXRoIHRodW5rOgogICAgQ29kZSBhdCBbMHhiNmYwMmEwMSwgMHhi
NmYwMmFjMSk6CiAgICAweGI2ZjAyYTAwOiAgICBsZHIgICAgcjEyLCBbcjIsICM1Ml0KICAgIDB4
YjZmMDJhMDQ6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjZmMDJhMDg6ICAgIHN0ciAg
ICByMTIsIFtyMiwgIzUyXQogICAgMHhiNmYwMmEwYzogICAgY21uICAgIHIxLCAjNQogICAgMHhi
NmYwMmExMDogICAgYm5lICAgIDB4YjZmMDJhMjgKICAgIDB4YjZmMDJhMTI6ICAgIGxkcmIgICBy
NiwgW3IwLCAjNV0KICAgIDB4YjZmMDJhMTQ6ICAgIGNtcCAgICByMiwgIzIzCiAgICAweGI2ZjAy
YTE2OiAgICBibmUgICAgMHhiNmYwMmEyOAogICAgMHhiNmYwMmExODogICAgbGRyICAgIHI4LCBb
cjAsICMyMF0KICAgIDB4YjZmMDJhMWM6ICAgIGxkciAgICByOCwgW3I4LCAjMjhdCiAgICAweGI2
ZjAyYTIwOiAgICB0c3QgICAgcjgsIHI4CiAgICAweGI2ZjAyYTI0OiAgICBiZXEgICAgMHhiNmYw
MmEyOAogICAgMHhiNmYwMmEyNjogICAgYnggICAgIHI4CiAgICAweGI2ZjAyYTI4OiAgICBwdXNo
ICAge3I3LCBscn0KICAgIDB4YjZmMDJhMmM6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjZmMDJh
MmU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAyYTMyOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgMHhiNmYwMmEzNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI2ZjAyYTM4OiAg
ICBtdm4gICAgcjEyLCAjMjMKICAgIDB4YjZmMDJhM2M6ICAgIG1vdiAgICBzcCwgc3AKICAgIDB4
YjZmMDJhM2U6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAweGI2ZjAyYTQwOiAgICBtb3YgICAgcjEs
IHIyCiAgICAweGI2ZjAyYTQyOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI2ZjAyYTQ0OiAgICBt
b3Z3ICAgcjQsICM1MTI3NwogICAgMHhiNmYwMmE0ODogICAgbW92dCAgIHI0LCAjNDY3NzYKICAg
IDB4YjZmMDJhNGM6ICAgIGJseCAgICByNAogICAgMHhiNmYwMmE0ZTogICAgYWRkICAgIHNwLCBz
cCwgIzYKICAgIDB4YjZmMDJhNTA6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjZmMDJhNTI6ICAg
IHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwMmE1NjogICAgdHN0ICAgIHIxLCByMQogICAgMHhi
NmYwMmE1ODogICAgYmVxICAgIDB4YjZmMDJhYTgKICAgIDB4YjZmMDJhNWE6ICAgIG1vdiAgICBy
NSwgbHIKICAgIDB4YjZmMDJhNWM6ICAgIGxkciAgICByMSwgW3I3LCAjMjRdCiAgICAweGI2ZjAy
YTVlOiAgICBsZHIgICAgcjMsIFtyNywgIzhdCiAgICAweGI2ZjAyYTYwOiAgICBsZHIgICAgcjMs
IFtyMywgIzMyXQogICAgMHhiNmYwMmE2MjogICAgY21wICAgIHIzLCByMQogICAgMHhiNmYwMmE2
NDogICAgYmxzICAgIDB4YjZmMDJhNjgKICAgIDB4YjZmMDJhNjY6ICAgIG1vdiAgICByMSwgcjMK
ICAgIDB4YjZmMDJhNjg6ICAgIGFkZHMgICByMSwgcjEsICM1CiAgICAweGI2ZjAyYTZhOiAgICBt
dm4gICAgcjEyLCAjMQogICAgMHhiNmYwMmE2ZTogICAgYW5kICAgIHIxLCByMSwgcjEyCiAgICAw
eGI2ZjAyYTcyOiAgICBtb3YgICAgcjEyLCAjOAogICAgMHhiNmYwMmE3NjogICAgc211bGwgIHIx
LCByMTIsIHIxLCByMTIKICAgIDB4YjZmMDJhN2E6ICAgIGFkZHMgICByMywgcjcsIHIxCiAgICAw
eGI2ZjAyYTdjOiAgICBsZHIgICAgcjEsIFtzcCwgIzE2XQogICAgMHhiNmYwMmE3ZTogICAgYWRk
cyAgIHIxLCByMSwgIzUKICAgIDB4YjZmMDJhODA6ICAgIG12biAgICByMTIsICMxCiAgICAweGI2
ZjAyYTg0OiAgICBhbmQgICAgcjEsIHIxLCByMTIKICAgIDB4YjZmMDJhODg6ICAgIG1vdiAgICBy
MTIsICM4CiAgICAweGI2ZjAyYThjOiAgICBzbXVsbCAgcjEsIHIxMiwgcjEsIHIxMgogICAgMHhi
NmYwMmE5MDogICAgbGRyICAgIGxyLCBbcjcsICM0XQogICAgMHhiNmYwMmE5NDogICAgc3VicyAg
IHIxLCAjOAogICAgMHhiNmYwMmE5NjogICAgc3VicyAgIHIzLCByMywgcjEKICAgIDB4YjZmMDJh
OTg6ICAgIGxkciAgICByNywgW3I3XQogICAgMHhiNmYwMmE5YTogICAgc3VicyAgIHIxLCByMSwg
IzQKICAgIDB4YjZmMDJhOWM6ICAgIGxkciAgICByMiwgW3NwLCByMV0KICAgIDB4YjZmMDJhYTA6
ICAgIHN0ciAgICByMiwgW3IzLCByMV0KICAgIDB4YjZmMDJhYTI6ICAgIHRzdCAgICByMSwgcjEK
ICAgIDB4YjZmMDJhYTQ6ICAgIGJuZSAgICAweGI2ZjAyYzlhCiAgICAweGI2ZjAyYWE2OiAgICBt
b3YgICAgc3AsIHIzCiAgICAweGI2ZjAyYWE4OiAgICBieCAgICAgcjAKQ2xlYXJpbmcgY2FsbCBs
aW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhi
NGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcgY2Fs
bCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0g
MHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcg
Y2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxl
ID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKR2VuZXJh
dGVkIEpJVCBjb2RlIGZvciBQb2x5bW9ycGhpYyBjYWxsIHN0dWIgZm9yIDxnbG9iYWw+I0J5UHpJ
bzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdLCByZXR1cm4g
cG9pbnQgMHhiNGM1ZTIxOSwgdGFyZ2V0cyA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhi
NDc5YmM4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdl
ZGRlMF0pOyBFeGVjdXRhYmxlOiAjQU1JeVRmOlsweGI0NzkyNTgwLT4weGI0N2Q0ZGMwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNjFdKSwgY29kZUJsb2NrID0gI0FNSXlUZjpbMHhiNDc5MjU4MC0+MHhi
NDdkNGRjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDYxXT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBD
ZWxsOiAweGI0NzliYmMwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90
bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNDWVZUbFc6WzB4YjQ3OTI0MzAtPjB4YjQ3ZDRj
YzAsIExMSW50RnVuY3Rpb25DYWxsLCA2NF0pLCBjb2RlQmxvY2sgPSAjQ1lWVGxXOlsweGI0Nzky
NDMwLT4weGI0N2Q0Y2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjRdPiwgPHZhcmlhbnQgPSAoRnVu
Y3Rpb246IENlbGw6IDB4YjQ3OWJiMDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJy
YXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JReUl0RjpbMHhiNDc5MjJlMC0+
MHhiNDdkNGJjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNCUXlJdEY6
WzB4YjQ3OTIyZTAtPjB4YjQ3ZDRiYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0+LCA8dmFyaWFu
dCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmE0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9
LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQVVoRkhXOlsweGI0
NzkyMTkwLT4weGI0N2Q0YWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0g
I0FVaEZIVzpbMHhiNDc5MjE5MC0+MHhiNDdkNGFjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXT4s
IDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliOTgwICgweGI0N2Y3MDkwOltGdW5j
dGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNEOE00
MFk6WzB4YjQ3OTIwNDAtPjB4YjQ3ZDQ5YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2Rl
QmxvY2sgPSAjRDhNNDBZOlsweGI0NzkyMDQwLT4weGI0N2Q0OWMwLCBMTEludEZ1bmN0aW9uQ2Fs
bCwgNzBdPjoKICAgIENvZGUgYXQgWzB4YjZmMDJhYzEsIDB4YjZmMDJiZTEpOgogICAgMHhiNmYw
MmFjMDogICAgbW92dyAgIHIxLCAjNjQ1MDQKICAgIDB4YjZmMDJhYzQ6ICAgIG1vdnQgICByMSwg
IzE4NgogICAgMHhiNmYwMmFjODogICAgbW92dyAgIHIxMiwgIzQ4MDY0CiAgICAweGI2ZjAyYWNj
OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjZmMDJhZDA6ICAgIGNtcCAgICByMCwgcjEy
CiAgICAweGI2ZjAyYWQ0OiAgICBibHQgICAgMHhiNmYwMmIzMgogICAgMHhiNmYwMmFkNjogICAg
bW92dyAgIHIxMiwgIzQ4MDY0CiAgICAweGI2ZjAyYWRhOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEK
ICAgIDB4YjZmMDJhZGU6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI2ZjAyYWUyOiAgICBibmUg
ICAgMHhiNmYwMmIwNAogICAgMHhiNmYwMmFlNDogICAgbGRyICAgIHIxMiwgW3IxLCAjNF0KICAg
IDB4YjZmMDJhZTg6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjZmMDJhZWM6ICAgIHN0
ciAgICByMTIsIFtyMSwgIzRdCiAgICAweGI2ZjAyYWYwOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcK
ICAgIDB4YjZmMDJhZjQ6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNmYwMmFmODogICAg
Ymx4ICAgIHIxMgogICAgMHhiNmYwMmFmYTogICAgbW92dyAgIHIxMiwgIzQ4OTk5CiAgICAweGI2
ZjAyYWZlOiAgICBtb3Z0ICAgcjEyLCAjNDYyNzcKICAgIDB4YjZmMDJiMDI6ICAgIGJ4ICAgICBy
MTIKICAgIDB4YjZmMDJiMDQ6ICAgIG1vdncgICByMTIsICM0ODI1NgogICAgMHhiNmYwMmIwODog
ICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI2ZjAyYjBjOiAgICBjbXAgICAgcjAsIHIxMgog
ICAgMHhiNmYwMmIxMDogICAgYm5lICAgIDB4YjZmMDJiYmMKICAgIDB4YjZmMDJiMTI6ICAgIGxk
ciAgICByMTIsIFtyMV0KICAgIDB4YjZmMDJiMTY6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAg
IDB4YjZmMDJiMWE6ICAgIHN0ciAgICByMTIsIFtyMV0KICAgIDB4YjZmMDJiMWU6ICAgIG1vdncg
ICByMTIsICMzMTEzNwogICAgMHhiNmYwMmIyMjogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAw
eGI2ZjAyYjI2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjAyYjI4OiAgICBtb3Z3ICAgcjEyLCAj
NDg5OTkKICAgIDB4YjZmMDJiMmM6ICAgIG1vdnQgICByMTIsICM0NjI3NwogICAgMHhiNmYwMmIz
MDogICAgYnggICAgIHIxMgogICAgMHhiNmYwMmIzMjogICAgbW92dyAgIHIxMiwgIzQ3ODcyCiAg
ICAweGI2ZjAyYjM2OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjZmMDJiM2E6ICAgIGNt
cCAgICByMCwgcjEyCiAgICAweGI2ZjAyYjNlOiAgICBibmUgICAgMHhiNmYwMmI2MAogICAgMHhi
NmYwMmI0MDogICAgbGRyICAgIHIxMiwgW3IxLCAjOF0KICAgIDB4YjZmMDJiNDQ6ICAgIGFkZHcg
ICByMTIsIHIxMiwgIzEKICAgIDB4YjZmMDJiNDg6ICAgIHN0ciAgICByMTIsIFtyMSwgIzhdCiAg
ICAweGI2ZjAyYjRjOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjZmMDJiNTA6ICAgIG1v
dnQgICByMTIsICM0NjgzMgogICAgMHhiNmYwMmI1NDogICAgYmx4ICAgIHIxMgogICAgMHhiNmYw
MmI1NjogICAgbW92dyAgIHIxMiwgIzQ4OTk5CiAgICAweGI2ZjAyYjVhOiAgICBtb3Z0ICAgcjEy
LCAjNDYyNzcKICAgIDB4YjZmMDJiNWU6ICAgIGJ4ICAgICByMTIKICAgIDB4YjZmMDJiNjA6ICAg
IG1vdncgICByMTIsICM0NzQ4OAogICAgMHhiNmYwMmI2NDogICAgbW92dCAgIHIxMiwgIzQ2MjAx
CiAgICAweGI2ZjAyYjY4OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNmYwMmI2YzogICAgYm5l
ICAgIDB4YjZmMDJiOGUKICAgIDB4YjZmMDJiNmU6ICAgIGxkciAgICByMTIsIFtyMSwgIzE2XQog
ICAgMHhiNmYwMmI3MjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNmYwMmI3NjogICAg
c3RyICAgIHIxMiwgW3IxLCAjMTZdCiAgICAweGI2ZjAyYjdhOiAgICBtb3Z3ICAgcjEyLCAjMzEx
MzcKICAgIDB4YjZmMDJiN2U6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNmYwMmI4Mjog
ICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMmI4NDogICAgbW92dyAgIHIxMiwgIzQ4OTk5CiAgICAw
eGI2ZjAyYjg4OiAgICBtb3Z0ICAgcjEyLCAjNDYyNzcKICAgIDB4YjZmMDJiOGM6ICAgIGJ4ICAg
ICByMTIKICAgIDB4YjZmMDJiOGU6ICAgIG1vdncgICByMTIsICM0NzY4MAogICAgMHhiNmYwMmI5
MjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI2ZjAyYjk2OiAgICBjbXAgICAgcjAsIHIx
MgogICAgMHhiNmYwMmI5YTogICAgYm5lICAgIDB4YjZmMDJiYmMKICAgIDB4YjZmMDJiOWM6ICAg
IGxkciAgICByMTIsIFtyMSwgIzEyXQogICAgMHhiNmYwMmJhMDogICAgYWRkdyAgIHIxMiwgcjEy
LCAjMQogICAgMHhiNmYwMmJhNDogICAgc3RyICAgIHIxMiwgW3IxLCAjMTJdCiAgICAweGI2ZjAy
YmE4OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjZmMDJiYWM6ICAgIG1vdnQgICByMTIs
ICM0NjgzMgogICAgMHhiNmYwMmJiMDogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMmJiMjogICAg
bW92dyAgIHIxMiwgIzQ4OTk5CiAgICAweGI2ZjAyYmI2OiAgICBtb3Z0ICAgcjEyLCAjNDYyNzcK
ICAgIDB4YjZmMDJiYmE6ICAgIGJ4ICAgICByMTIKICAgIDB4YjZmMDJiYmM6ICAgIG12biAgICBy
MSwgIzQKICAgIDB4YjZmMDJiYzA6ICAgIG1vdncgICByMiwgIzQ1NDg4CiAgICAweGI2ZjAyYmM0
OiAgICBtb3Z0ICAgcjIsICM0NjI2MwogICAgMHhiNmYwMmJjODogICAgbW92dyAgIHI4LCAjNTc4
ODEKICAgIDB4YjZmMDJiY2M6ICAgIG1vdnQgICByOCwgIzQ2Mjc3CiAgICAweGI2ZjAyYmQwOiAg
ICBtb3YgICAgbHIsIHI4CiAgICAweGI2ZjAyYmQyOiAgICBub3AgICAgCiAgICAweGI2ZjAyYmQ0
OiAgICBub3AgICAgCiAgICAweGI2ZjAyYmQ4OiAgICBiICAgICAgMHhiNjcwM2U2MApMaW5raW5n
IHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2Fi
ZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6
IDB4YjQ3OWJjODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4
YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FNSXlUZjpbMHhiNDc5MjU4MC0+MHhiNDdkNGRjMCwg
TExJbnRGdW5jdGlvbkNhbGwsIDYxXSksIGNvZGVCbG9jayA9ICNBTUl5VGY6WzB4YjQ3OTI1ODAt
PjB4YjQ3ZDRkYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2MV0KTGlua2luZyBwb2x5bW9ycGhpYyBj
YWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVH
bG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYmMwICgw
eGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4
ZWN1dGFibGU6ICNDWVZUbFc6WzB4YjQ3OTI0MzAtPjB4YjQ3ZDRjYzAsIExMSW50RnVuY3Rpb25D
YWxsLCA2NF0pLCBjb2RlQmxvY2sgPSAjQ1lWVGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0Y2MwLCBM
TEludEZ1bmN0aW9uQ2FsbCwgNjRdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFs
PiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBh
dCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmIwMCAoMHhiNDdmNzA5MDpbRnVu
Y3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQlF5
SXRGOlsweGI0NzkyMmUwLT4weGI0N2Q0YmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29k
ZUJsb2NrID0gI0JReUl0RjpbMHhiNDc5MjJlMC0+MHhiNDdkNGJjMCwgTExJbnRGdW5jdGlvbkNh
bGwsIDcwXQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0
N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAo
RnVuY3Rpb246IENlbGw6IDB4YjQ3OWJhNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9u
QXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FVaEZIVzpbMHhiNDc5MjE5
MC0+MHhiNDdkNGFjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNBVWhG
SFc6WzB4YjQ3OTIxOTAtPjB4YjQ3ZDRhYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0KTGlua2lu
ZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdh
YmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxs
OiAweGI0NzliOTgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzow
eGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNEOE00MFk6WzB4YjQ3OTIwNDAtPjB4YjQ3ZDQ5YzAs
IExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjRDhNNDBZOlsweGI0NzkyMDQw
LT4weGI0N2Q0OWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdCkdlbmVyYXRlZCBKSVQgY29kZSBm
b3IgVmlydHVhbCBjYWxsIHNsb3cgcGF0aCB0aHVuazoKICAgIENvZGUgYXQgWzB4YjZmMDJiZTEs
IDB4YjZmMDJjYTEpOgogICAgMHhiNmYwMmJlMDogICAgbGRyICAgIHIxMiwgW3IyLCAjNTJdCiAg
ICAweGI2ZjAyYmU0OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI2ZjAyYmU4OiAgICBz
dHIgICAgcjEyLCBbcjIsICM1Ml0KICAgIDB4YjZmMDJiZWM6ICAgIGNtbiAgICByMSwgIzUKICAg
IDB4YjZmMDJiZjA6ICAgIGJuZSAgICAweGI2ZjAyYzA4CiAgICAweGI2ZjAyYmYyOiAgICBsZHJi
ICAgcjYsIFtyMCwgIzVdCiAgICAweGI2ZjAyYmY0OiAgICBjbXAgICAgcjIsICMyMwogICAgMHhi
NmYwMmJmNjogICAgYm5lICAgIDB4YjZmMDJjMDgKICAgIDB4YjZmMDJiZjg6ICAgIGxkciAgICBy
OCwgW3IwLCAjMjBdCiAgICAweGI2ZjAyYmZjOiAgICBsZHIgICAgcjgsIFtyOCwgIzI4XQogICAg
MHhiNmYwMmMwMDogICAgdHN0ICAgIHI4LCByOAogICAgMHhiNmYwMmMwNDogICAgYmVxICAgIDB4
YjZmMDJjMDgKICAgIDB4YjZmMDJjMDY6ICAgIGJ4ICAgICByOAogICAgMHhiNmYwMmMwODogICAg
cHVzaCAgIHtyNywgbHJ9CiAgICAweGI2ZjAyYzBjOiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI2
ZjAyYzBlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNmYwMmMxMjogICAgbW92dCAgIHI2
LCAjNDYyMDcKICAgIDB4YjZmMDJjMTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNmYwMmMx
ODogICAgbXZuICAgIHIxMiwgIzIzCiAgICAweGI2ZjAyYzFjOiAgICBtb3YgICAgc3AsIHNwCiAg
ICAweGI2ZjAyYzFlOiAgICBhZGQgICAgc3AsIHIxMgogICAgMHhiNmYwMmMyMDogICAgbW92ICAg
IHIxLCByMgogICAgMHhiNmYwMmMyMjogICAgbW92ICAgIHIwLCByNwogICAgMHhiNmYwMmMyNDog
ICAgbW92dyAgIHI0LCAjNTEyNzcKICAgIDB4YjZmMDJjMjg6ICAgIG1vdnQgICByNCwgIzQ2Nzc2
CiAgICAweGI2ZjAyYzJjOiAgICBibHggICAgcjQKICAgIDB4YjZmMDJjMmU6ICAgIGFkZCAgICBz
cCwgc3AsICM2CiAgICAweGI2ZjAyYzMwOiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI2ZjAyYzMy
OiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjZmMDJjMzY6ICAgIHRzdCAgICByMSwgcjEKICAg
IDB4YjZmMDJjMzg6ICAgIGJlcSAgICAweGI2ZjAyYzg4CiAgICAweGI2ZjAyYzNhOiAgICBtb3Yg
ICAgcjUsIGxyCiAgICAweGI2ZjAyYzNjOiAgICBsZHIgICAgcjEsIFtyNywgIzI0XQogICAgMHhi
NmYwMmMzZTogICAgbGRyICAgIHIzLCBbcjcsICM4XQogICAgMHhiNmYwMmM0MDogICAgbGRyICAg
IHIzLCBbcjMsICMzMl0KICAgIDB4YjZmMDJjNDI6ICAgIGNtcCAgICByMywgcjEKICAgIDB4YjZm
MDJjNDQ6ICAgIGJscyAgICAweGI2ZjAyYzQ4CiAgICAweGI2ZjAyYzQ2OiAgICBtb3YgICAgcjEs
IHIzCiAgICAweGI2ZjAyYzQ4OiAgICBhZGRzICAgcjEsIHIxLCAjNQogICAgMHhiNmYwMmM0YTog
ICAgbXZuICAgIHIxMiwgIzEKICAgIDB4YjZmMDJjNGU6ICAgIGFuZCAgICByMSwgcjEsIHIxMgog
ICAgMHhiNmYwMmM1MjogICAgbW92ICAgIHIxMiwgIzgKICAgIDB4YjZmMDJjNTY6ICAgIHNtdWxs
ICByMSwgcjEyLCByMSwgcjEyCiAgICAweGI2ZjAyYzVhOiAgICBhZGRzICAgcjMsIHI3LCByMQog
ICAgMHhiNmYwMmM1YzogICAgbGRyICAgIHIxLCBbc3AsICMxNl0KICAgIDB4YjZmMDJjNWU6ICAg
IGFkZHMgICByMSwgcjEsICM1CiAgICAweGI2ZjAyYzYwOiAgICBtdm4gICAgcjEyLCAjMQogICAg
MHhiNmYwMmM2NDogICAgYW5kICAgIHIxLCByMSwgcjEyCiAgICAweGI2ZjAyYzY4OiAgICBtb3Yg
ICAgcjEyLCAjOAogICAgMHhiNmYwMmM2YzogICAgc211bGwgIHIxLCByMTIsIHIxLCByMTIKICAg
IDB4YjZmMDJjNzA6ICAgIGxkciAgICBsciwgW3I3LCAjNF0KICAgIDB4YjZmMDJjNzQ6ICAgIHN1
YnMgICByMSwgIzgKICAgIDB4YjZmMDJjNzY6ICAgIHN1YnMgICByMywgcjMsIHIxCiAgICAweGI2
ZjAyYzc4OiAgICBsZHIgICAgcjcsIFtyN10KICAgIDB4YjZmMDJjN2E6ICAgIHN1YnMgICByMSwg
cjEsICM0CiAgICAweGI2ZjAyYzdjOiAgICBsZHIgICAgcjIsIFtzcCwgcjFdCiAgICAweGI2ZjAy
YzgwOiAgICBzdHIgICAgcjIsIFtyMywgcjFdCiAgICAweGI2ZjAyYzgyOiAgICB0c3QgICAgcjEs
IHIxCiAgICAweGI2ZjAyYzg0OiAgICBibmUgICAgMHhiNmYwMmU3YQogICAgMHhiNmYwMmM4Njog
ICAgbW92ICAgIHNwLCByMwogICAgMHhiNmYwMmM4ODogICAgYnggICAgIHIwCkNsZWFyaW5nIGNh
bGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9
IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5n
IGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJs
ZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFy
aW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0
YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNs
ZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhl
Y3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDEx
CkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgUG9seW1vcnBoaWMgY2FsbCBzdHViIGZvciA8Z2xvYmFs
PiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSwg
cmV0dXJuIHBvaW50IDB4YjRjNWUyMTksIHRhcmdldHMgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENl
bGw6IDB4YjQ3OWJjODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3Rv
OjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FNSXlUZjpbMHhiNDc5MjU4MC0+MHhiNDdkNGRj
MCwgTExJbnRGdW5jdGlvbkNhbGwsIDYxXSksIGNvZGVCbG9jayA9ICNBTUl5VGY6WzB4YjQ3OTI1
ODAtPjB4YjQ3ZDRkYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2MV0+LCA8dmFyaWFudCA9IChGdW5j
dGlvbjogQ2VsbDogMHhiNDc5YmJjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJh
eSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQ1lWVGxXOlsweGI0NzkyNDMwLT4w
eGI0N2Q0Y2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjRdKSwgY29kZUJsb2NrID0gI0NZVlRsVzpb
MHhiNDc5MjQzMC0+MHhiNDdkNGNjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDY0XT4sIDx2YXJpYW50
ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYjAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30s
IE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCUXlJdEY6WzB4YjQ3
OTIyZTAtPjB4YjQ3ZDRiYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAj
QlF5SXRGOlsweGI0NzkyMmUwLT4weGI0N2Q0YmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdPiwg
PHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJhNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0
aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FVaEZI
VzpbMHhiNDc5MjE5MC0+MHhiNDdkNGFjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVC
bG9jayA9ICNBVWhGSFc6WzB4YjQ3OTIxOTAtPjB4YjQ3ZDRhYzAsIExMSW50RnVuY3Rpb25DYWxs
LCA3MF0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5Yjk4MCAoMHhiNDdmNzA5
MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxl
OiAjRDhNNDBZOlsweGI0NzkyMDQwLT4weGI0N2Q0OWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBd
KSwgY29kZUJsb2NrID0gI0Q4TTQwWTpbMHhiNDc5MjA0MC0+MHhiNDdkNDljMCwgTExJbnRGdW5j
dGlvbkNhbGwsIDcwXT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliOGMwICgw
eGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4
ZWN1dGFibGU6ICNCWEdLMEQ6WzB4YjQ3OTFlZjAtPjB4YjQ3ZDQ4YzAsIExMSW50RnVuY3Rpb25D
YWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjQlhHSzBEOlsweGI0NzkxZWYwLT4weGI0N2Q0OGMwLCBM
TEludEZ1bmN0aW9uQ2FsbCwgNzBdPjoKICAgIENvZGUgYXQgWzB4YjZmMDJjYTEsIDB4YjZmMDJl
MDEpOgogICAgMHhiNmYwMmNhMDogICAgbW92dyAgIHIxLCAjNjQ0MDgKICAgIDB4YjZmMDJjYTQ6
ICAgIG1vdnQgICByMSwgIzE4NgogICAgMHhiNmYwMmNhODogICAgbW92dyAgIHIxMiwgIzQ3ODcy
CiAgICAweGI2ZjAyY2FjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjZmMDJjYjA6ICAg
IGNtcCAgICByMCwgcjEyCiAgICAweGI2ZjAyY2I0OiAgICBibHQgICAgMHhiNmYwMmQ0MAogICAg
MHhiNmYwMmNiNjogICAgbW92dyAgIHIxMiwgIzQ4MDY0CiAgICAweGI2ZjAyY2JhOiAgICBtb3Z0
ICAgcjEyLCAjNDYyMDEKICAgIDB4YjZmMDJjYmU6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI2
ZjAyY2MyOiAgICBibmUgICAgMHhiNmYwMmNlNAogICAgMHhiNmYwMmNjNDogICAgbGRyICAgIHIx
MiwgW3IxLCAjNF0KICAgIDB4YjZmMDJjYzg6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4
YjZmMDJjY2M6ICAgIHN0ciAgICByMTIsIFtyMSwgIzRdCiAgICAweGI2ZjAyY2QwOiAgICBtb3Z3
ICAgcjEyLCAjMzExMzcKICAgIDB4YjZmMDJjZDQ6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAg
MHhiNmYwMmNkODogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMmNkYTogICAgbW92dyAgIHIxMiwg
IzQ4OTk5CiAgICAweGI2ZjAyY2RlOiAgICBtb3Z0ICAgcjEyLCAjNDYyNzcKICAgIDB4YjZmMDJj
ZTI6ICAgIGJ4ICAgICByMTIKICAgIDB4YjZmMDJjZTQ6ICAgIG1vdncgICByMTIsICM0ODI1Ngog
ICAgMHhiNmYwMmNlODogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI2ZjAyY2VjOiAgICBj
bXAgICAgcjAsIHIxMgogICAgMHhiNmYwMmNmMDogICAgYm5lICAgIDB4YjZmMDJkMTIKICAgIDB4
YjZmMDJjZjI6ICAgIGxkciAgICByMTIsIFtyMV0KICAgIDB4YjZmMDJjZjY6ICAgIGFkZHcgICBy
MTIsIHIxMiwgIzEKICAgIDB4YjZmMDJjZmE6ICAgIHN0ciAgICByMTIsIFtyMV0KICAgIDB4YjZm
MDJjZmU6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNmYwMmQwMjogICAgbW92dCAgIHIx
MiwgIzQ2ODMyCiAgICAweGI2ZjAyZDA2OiAgICBibHggICAgcjEyCiAgICAweGI2ZjAyZDA4OiAg
ICBtb3Z3ICAgcjEyLCAjNDg5OTkKICAgIDB4YjZmMDJkMGM6ICAgIG1vdnQgICByMTIsICM0NjI3
NwogICAgMHhiNmYwMmQxMDogICAgYnggICAgIHIxMgogICAgMHhiNmYwMmQxMjogICAgbW92dyAg
IHIxMiwgIzQ3ODcyCiAgICAweGI2ZjAyZDE2OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4
YjZmMDJkMWE6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI2ZjAyZDFlOiAgICBibmUgICAgMHhi
NmYwMmRjYQogICAgMHhiNmYwMmQyMDogICAgbGRyICAgIHIxMiwgW3IxLCAjOF0KICAgIDB4YjZm
MDJkMjQ6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjZmMDJkMjg6ICAgIHN0ciAgICBy
MTIsIFtyMSwgIzhdCiAgICAweGI2ZjAyZDJjOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4
YjZmMDJkMzA6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNmYwMmQzNDogICAgYmx4ICAg
IHIxMgogICAgMHhiNmYwMmQzNjogICAgbW92dyAgIHIxMiwgIzQ4OTk5CiAgICAweGI2ZjAyZDNh
OiAgICBtb3Z0ICAgcjEyLCAjNDYyNzcKICAgIDB4YjZmMDJkM2U6ICAgIGJ4ICAgICByMTIKICAg
IDB4YjZmMDJkNDA6ICAgIG1vdncgICByMTIsICM0NzQ4OAogICAgMHhiNmYwMmQ0NDogICAgbW92
dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI2ZjAyZDQ4OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhi
NmYwMmQ0YzogICAgYm5lICAgIDB4YjZmMDJkNmUKICAgIDB4YjZmMDJkNGU6ICAgIGxkciAgICBy
MTIsIFtyMSwgIzE2XQogICAgMHhiNmYwMmQ1MjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAg
MHhiNmYwMmQ1NjogICAgc3RyICAgIHIxMiwgW3IxLCAjMTZdCiAgICAweGI2ZjAyZDVhOiAgICBt
b3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjZmMDJkNWU6ICAgIG1vdnQgICByMTIsICM0NjgzMgog
ICAgMHhiNmYwMmQ2MjogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMmQ2NDogICAgbW92dyAgIHIx
MiwgIzQ4OTk5CiAgICAweGI2ZjAyZDY4OiAgICBtb3Z0ICAgcjEyLCAjNDYyNzcKICAgIDB4YjZm
MDJkNmM6ICAgIGJ4ICAgICByMTIKICAgIDB4YjZmMDJkNmU6ICAgIG1vdncgICByMTIsICM0NzY4
MAogICAgMHhiNmYwMmQ3MjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI2ZjAyZDc2OiAg
ICBjbXAgICAgcjAsIHIxMgogICAgMHhiNmYwMmQ3YTogICAgYm5lICAgIDB4YjZmMDJkOWMKICAg
IDB4YjZmMDJkN2M6ICAgIGxkciAgICByMTIsIFtyMSwgIzEyXQogICAgMHhiNmYwMmQ4MDogICAg
YWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNmYwMmQ4NDogICAgc3RyICAgIHIxMiwgW3IxLCAj
MTJdCiAgICAweGI2ZjAyZDg4OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjZmMDJkOGM6
ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNmYwMmQ5MDogICAgYmx4ICAgIHIxMgogICAg
MHhiNmYwMmQ5MjogICAgbW92dyAgIHIxMiwgIzQ4OTk5CiAgICAweGI2ZjAyZDk2OiAgICBtb3Z0
ICAgcjEyLCAjNDYyNzcKICAgIDB4YjZmMDJkOWE6ICAgIGJ4ICAgICByMTIKICAgIDB4YjZmMDJk
OWM6ICAgIG1vdncgICByMTIsICM0NzI5NgogICAgMHhiNmYwMmRhMDogICAgbW92dCAgIHIxMiwg
IzQ2MjAxCiAgICAweGI2ZjAyZGE0OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNmYwMmRhODog
ICAgYm5lICAgIDB4YjZmMDJkY2EKICAgIDB4YjZmMDJkYWE6ICAgIGxkciAgICByMTIsIFtyMSwg
IzIwXQogICAgMHhiNmYwMmRhZTogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNmYwMmRi
MjogICAgc3RyICAgIHIxMiwgW3IxLCAjMjBdCiAgICAweGI2ZjAyZGI2OiAgICBtb3Z3ICAgcjEy
LCAjMzExMzcKICAgIDB4YjZmMDJkYmE6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNmYw
MmRiZTogICAgYmx4ICAgIHIxMgogICAgMHhiNmYwMmRjMDogICAgbW92dyAgIHIxMiwgIzQ4OTk5
CiAgICAweGI2ZjAyZGM0OiAgICBtb3Z0ICAgcjEyLCAjNDYyNzcKICAgIDB4YjZmMDJkYzg6ICAg
IGJ4ICAgICByMTIKICAgIDB4YjZmMDJkY2E6ICAgIG12biAgICByMSwgIzQKICAgIDB4YjZmMDJk
Y2U6ICAgIG1vdncgICByMiwgIzQ1NDg4CiAgICAweGI2ZjAyZGQyOiAgICBtb3Z0ICAgcjIsICM0
NjI2MwogICAgMHhiNmYwMmRkNjogICAgbW92dyAgIHI4LCAjNTc4ODEKICAgIDB4YjZmMDJkZGE6
ICAgIG1vdnQgICByOCwgIzQ2Mjc3CiAgICAweGI2ZjAyZGRlOiAgICBtb3YgICAgbHIsIHI4CiAg
ICAweGI2ZjAyZGUwOiAgICBub3AgICAgCiAgICAweGI2ZjAyZGUyOiAgICBub3AgICAgCiAgICAw
eGI2ZjAyZGU2OiAgICBiICAgICAgMHhiNjcwM2U2MApMaW5raW5nIHBvbHltb3JwaGljIGNhbGwg
aW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2Jh
bCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJjODAgKDB4YjQ3
ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0
YWJsZTogI0FNSXlUZjpbMHhiNDc5MjU4MC0+MHhiNDdkNGRjMCwgTExJbnRGdW5jdGlvbkNhbGws
IDYxXSksIGNvZGVCbG9jayA9ICNBTUl5VGY6WzB4YjQ3OTI1ODAtPjB4YjQ3ZDRkYzAsIExMSW50
RnVuY3Rpb25DYWxsLCA2MV0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5
UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJj
IzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYmMwICgweGI0N2Y3MDkwOltGdW5jdGlv
biwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNDWVZUbFc6
WzB4YjQ3OTI0MzAtPjB4YjQ3ZDRjYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2NF0pLCBjb2RlQmxv
Y2sgPSAjQ1lWVGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0Y2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NjRdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNl
NzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5j
dGlvbjogQ2VsbDogMHhiNDc5YmIwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJh
eSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQlF5SXRGOlsweGI0NzkyMmUwLT4w
eGI0N2Q0YmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0JReUl0Rjpb
MHhiNDc5MjJlMC0+MHhiNDdkNGJjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXQpMaW5raW5nIHBv
bHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUw
LCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4
YjQ3OWJhNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3
ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FVaEZIVzpbMHhiNDc5MjE5MC0+MHhiNDdkNGFjMCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNBVWhGSFc6WzB4YjQ3OTIxOTAtPjB4
YjQ3ZDRhYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxs
IGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9i
YWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliOTgwICgweGI0
N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1
dGFibGU6ICNEOE00MFk6WzB4YjQ3OTIwNDAtPjB4YjQ3ZDQ5YzAsIExMSW50RnVuY3Rpb25DYWxs
LCA3MF0pLCBjb2RlQmxvY2sgPSAjRDhNNDBZOlsweGI0NzkyMDQwLT4weGI0N2Q0OWMwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNzBdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNC
eVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBi
YyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YjhjMCAoMHhiNDdmNzA5MDpbRnVuY3Rp
b24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQlhHSzBE
OlsweGI0NzkxZWYwLT4weGI0N2Q0OGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJs
b2NrID0gI0JYR0swRDpbMHhiNDc5MWVmMC0+MHhiNDdkNDhjMCwgTExJbnRGdW5jdGlvbkNhbGws
IDcwXQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIFZpcnR1YWwgY2FsbCBzbG93IHBhdGggdGh1bms6
CiAgICBDb2RlIGF0IFsweGI2ZjAyZTAxLCAweGI2ZjAyZWMxKToKICAgIDB4YjZmMDJlMDA6ICAg
IGxkciAgICByMTIsIFtyMiwgIzUyXQogICAgMHhiNmYwMmUwNDogICAgYWRkdyAgIHIxMiwgcjEy
LCAjMQogICAgMHhiNmYwMmUwODogICAgc3RyICAgIHIxMiwgW3IyLCAjNTJdCiAgICAweGI2ZjAy
ZTBjOiAgICBjbW4gICAgcjEsICM1CiAgICAweGI2ZjAyZTEwOiAgICBibmUgICAgMHhiNmYwMmUy
OAogICAgMHhiNmYwMmUxMjogICAgbGRyYiAgIHI2LCBbcjAsICM1XQogICAgMHhiNmYwMmUxNDog
ICAgY21wICAgIHIyLCAjMjMKICAgIDB4YjZmMDJlMTY6ICAgIGJuZSAgICAweGI2ZjAyZTI4CiAg
ICAweGI2ZjAyZTE4OiAgICBsZHIgICAgcjgsIFtyMCwgIzIwXQogICAgMHhiNmYwMmUxYzogICAg
bGRyICAgIHI4LCBbcjgsICMyOF0KICAgIDB4YjZmMDJlMjA6ICAgIHRzdCAgICByOCwgcjgKICAg
IDB4YjZmMDJlMjQ6ICAgIGJlcSAgICAweGI2ZjAyZTI4CiAgICAweGI2ZjAyZTI2OiAgICBieCAg
ICAgcjgKICAgIDB4YjZmMDJlMjg6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNmYwMmUyYzog
ICAgbW92ICAgIHI3LCBzcAogICAgMHhiNmYwMmUyZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
IDB4YjZmMDJlMzI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI2ZjAyZTM2OiAgICBzdHIg
ICAgcjcsIFtyNl0KICAgIDB4YjZmMDJlMzg6ICAgIG12biAgICByMTIsICMyMwogICAgMHhiNmYw
MmUzYzogICAgbW92ICAgIHNwLCBzcAogICAgMHhiNmYwMmUzZTogICAgYWRkICAgIHNwLCByMTIK
ICAgIDB4YjZmMDJlNDA6ICAgIG1vdiAgICByMSwgcjIKICAgIDB4YjZmMDJlNDI6ICAgIG1vdiAg
ICByMCwgcjcKICAgIDB4YjZmMDJlNDQ6ICAgIG1vdncgICByNCwgIzUxMjc3CiAgICAweGI2ZjAy
ZTQ4OiAgICBtb3Z0ICAgcjQsICM0Njc3NgogICAgMHhiNmYwMmU0YzogICAgYmx4ICAgIHI0CiAg
ICAweGI2ZjAyZTRlOiAgICBhZGQgICAgc3AsIHNwLCAjNgogICAgMHhiNmYwMmU1MDogICAgbW92
ICAgIHNwLCByNwogICAgMHhiNmYwMmU1MjogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI2ZjAy
ZTU2OiAgICB0c3QgICAgcjEsIHIxCiAgICAweGI2ZjAyZTU4OiAgICBiZXEgICAgMHhiNmYwMmVh
OAogICAgMHhiNmYwMmU1YTogICAgbW92ICAgIHI1LCBscgogICAgMHhiNmYwMmU1YzogICAgbGRy
ICAgIHIxLCBbcjcsICMyNF0KICAgIDB4YjZmMDJlNWU6ICAgIGxkciAgICByMywgW3I3LCAjOF0K
ICAgIDB4YjZmMDJlNjA6ICAgIGxkciAgICByMywgW3IzLCAjMzJdCiAgICAweGI2ZjAyZTYyOiAg
ICBjbXAgICAgcjMsIHIxCiAgICAweGI2ZjAyZTY0OiAgICBibHMgICAgMHhiNmYwMmU2OAogICAg
MHhiNmYwMmU2NjogICAgbW92ICAgIHIxLCByMwogICAgMHhiNmYwMmU2ODogICAgYWRkcyAgIHIx
LCByMSwgIzUKICAgIDB4YjZmMDJlNmE6ICAgIG12biAgICByMTIsICMxCiAgICAweGI2ZjAyZTZl
OiAgICBhbmQgICAgcjEsIHIxLCByMTIKICAgIDB4YjZmMDJlNzI6ICAgIG1vdiAgICByMTIsICM4
CiAgICAweGI2ZjAyZTc2OiAgICBzbXVsbCAgcjEsIHIxMiwgcjEsIHIxMgogICAgMHhiNmYwMmU3
YTogICAgYWRkcyAgIHIzLCByNywgcjEKICAgIDB4YjZmMDJlN2M6ICAgIGxkciAgICByMSwgW3Nw
LCAjMTZdCiAgICAweGI2ZjAyZTdlOiAgICBhZGRzICAgcjEsIHIxLCAjNQogICAgMHhiNmYwMmU4
MDogICAgbXZuICAgIHIxMiwgIzEKICAgIDB4YjZmMDJlODQ6ICAgIGFuZCAgICByMSwgcjEsIHIx
MgogICAgMHhiNmYwMmU4ODogICAgbW92ICAgIHIxMiwgIzgKICAgIDB4YjZmMDJlOGM6ICAgIHNt
dWxsICByMSwgcjEyLCByMSwgcjEyCiAgICAweGI2ZjAyZTkwOiAgICBsZHIgICAgbHIsIFtyNywg
IzRdCiAgICAweGI2ZjAyZTk0OiAgICBzdWJzICAgcjEsICM4CiAgICAweGI2ZjAyZTk2OiAgICBz
dWJzICAgcjMsIHIzLCByMQogICAgMHhiNmYwMmU5ODogICAgbGRyICAgIHI3LCBbcjddCiAgICAw
eGI2ZjAyZTlhOiAgICBzdWJzICAgcjEsIHIxLCAjNAogICAgMHhiNmYwMmU5YzogICAgbGRyICAg
IHIyLCBbc3AsIHIxXQogICAgMHhiNmYwMmVhMDogICAgc3RyICAgIHIyLCBbcjMsIHIxXQogICAg
MHhiNmYwMmVhMjogICAgdHN0ICAgIHIxLCByMQogICAgMHhiNmYwMmVhNDogICAgYm5lICAgIDB4
YjZmMDMwOWEKICAgIDB4YjZmMDJlYTY6ICAgIG1vdiAgICBzcCwgcjMKICAgIDB4YjZmMDJlYTg6
ICAgIGJ4ICAgICByMApDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2Fs
bCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0
YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMg
Y2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAw
eGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBo
aWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24g
PSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1v
cnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRp
b24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9s
eW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9j
YXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIFBvbHlt
b3JwaGljIGNhbGwgc3R1YiBmb3IgPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2Fi
ZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0sIHJldHVybiBwb2ludCAweGI0YzVlMjE5LCB0YXJn
ZXRzIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYzgwICgweGI0N2Y3MDkwOltG
dW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNB
TUl5VGY6WzB4YjQ3OTI1ODAtPjB4YjQ3ZDRkYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2MV0pLCBj
b2RlQmxvY2sgPSAjQU1JeVRmOlsweGI0NzkyNTgwLT4weGI0N2Q0ZGMwLCBMTEludEZ1bmN0aW9u
Q2FsbCwgNjFdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJiYzAgKDB4YjQ3
ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0
YWJsZTogI0NZVlRsVzpbMHhiNDc5MjQzMC0+MHhiNDdkNGNjMCwgTExJbnRGdW5jdGlvbkNhbGws
IDY0XSksIGNvZGVCbG9jayA9ICNDWVZUbFc6WzB4YjQ3OTI0MzAtPjB4YjQ3ZDRjYzAsIExMSW50
RnVuY3Rpb25DYWxsLCA2NF0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmIw
MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0p
OyBFeGVjdXRhYmxlOiAjQlF5SXRGOlsweGI0NzkyMmUwLT4weGI0N2Q0YmMwLCBMTEludEZ1bmN0
aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0JReUl0RjpbMHhiNDc5MjJlMC0+MHhiNDdkNGJj
MCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAw
eGI0NzliYTQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0
N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBVWhGSFc6WzB4YjQ3OTIxOTAtPjB4YjQ3ZDRhYzAsIExM
SW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjQVVoRkhXOlsweGI0NzkyMTkwLT4w
eGI0N2Q0YWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246
IENlbGw6IDB4YjQ3OWI5ODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFBy
b3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0Q4TTQwWTpbMHhiNDc5MjA0MC0+MHhiNDdk
NDljMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNEOE00MFk6WzB4YjQ3
OTIwNDAtPjB4YjQ3ZDQ5YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0+LCA8dmFyaWFudCA9IChG
dW5jdGlvbjogQ2VsbDogMHhiNDc5YjhjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25B
cnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQlhHSzBEOlsweGI0NzkxZWYw
LT4weGI0N2Q0OGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0JYR0sw
RDpbMHhiNDc5MWVmMC0+MHhiNDdkNDhjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXT4sIDx2YXJp
YW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliODAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwg
e30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNEazFFOWU6WzB4
YjQ3OTFkYTAtPjB4YjQ3ZDQ3YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sg
PSAjRGsxRTllOlsweGI0NzkxZGEwLT4weGI0N2Q0N2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBd
PjoKICAgIENvZGUgYXQgWzB4YjRjNWU2YTEsIDB4YjRjNWU4NDEpOgogICAgMHhiNGM1ZTZhMDog
ICAgbW92dyAgIHIxLCAjNjQ0NDAKICAgIDB4YjRjNWU2YTQ6ICAgIG1vdnQgICByMSwgIzE4Ngog
ICAgMHhiNGM1ZTZhODogICAgbW92dyAgIHIxMiwgIzQ3ODcyCiAgICAweGI0YzVlNmFjOiAgICBt
b3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNWU2YjA6ICAgIGNtcCAgICByMCwgcjEyCiAgICAw
eGI0YzVlNmI0OiAgICBibHQgICAgMHhiNGM1ZTc0MgogICAgMHhiNGM1ZTZiNjogICAgbW92dyAg
IHIxMiwgIzQ3ODcyCiAgICAweGI0YzVlNmJhOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4
YjRjNWU2YmU6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzVlNmMyOiAgICBibmUgICAgMHhi
NGM1ZTZlNAogICAgMHhiNGM1ZTZjNDogICAgbGRyICAgIHIxMiwgW3IxLCAjOF0KICAgIDB4YjRj
NWU2Yzg6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNWU2Y2M6ICAgIHN0ciAgICBy
MTIsIFtyMSwgIzhdCiAgICAweGI0YzVlNmQwOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4
YjRjNWU2ZDQ6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZTZkODogICAgYmx4ICAg
IHIxMgogICAgMHhiNGM1ZTZkYTogICAgbm9wICAgIAogICAgMHhiNGM1ZTZkYzogICAgbm9wICAg
IAogICAgMHhiNGM1ZTZlMDogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWU2ZTQ6ICAg
IG1vdncgICByMTIsICM0ODI1NgogICAgMHhiNGM1ZTZlODogICAgbW92dCAgIHIxMiwgIzQ2MjAx
CiAgICAweGI0YzVlNmVjOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZTZmMDogICAgYm5l
ICAgIDB4YjRjNWU3MTIKICAgIDB4YjRjNWU2ZjI6ICAgIGxkciAgICByMTIsIFtyMV0KICAgIDB4
YjRjNWU2ZjY6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNWU2ZmE6ICAgIHN0ciAg
ICByMTIsIFtyMV0KICAgIDB4YjRjNWU2ZmU6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhi
NGM1ZTcwMjogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzVlNzA2OiAgICBibHggICAg
cjEyCiAgICAweGI0YzVlNzA4OiAgICBub3AgICAgCiAgICAweGI0YzVlNzBhOiAgICBub3AgICAg
CiAgICAweGI0YzVlNzBlOiAgICBiICAgICAgMHhiNGM1YmY2NgogICAgMHhiNGM1ZTcxMjogICAg
bW92dyAgIHIxMiwgIzQ4MDY0CiAgICAweGI0YzVlNzE2OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEK
ICAgIDB4YjRjNWU3MWE6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzVlNzFlOiAgICBibmUg
ICAgMHhiNGM1ZTgwOAogICAgMHhiNGM1ZTcyMjogICAgbGRyICAgIHIxMiwgW3IxLCAjNF0KICAg
IDB4YjRjNWU3MjY6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNWU3MmE6ICAgIHN0
ciAgICByMTIsIFtyMSwgIzRdCiAgICAweGI0YzVlNzJlOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcK
ICAgIDB4YjRjNWU3MzI6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZTczNjogICAg
Ymx4ICAgIHIxMgogICAgMHhiNGM1ZTczODogICAgbm9wICAgIAogICAgMHhiNGM1ZTczYTogICAg
bm9wICAgIAogICAgMHhiNGM1ZTczZTogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWU3
NDI6ICAgIG1vdncgICByMTIsICM0NzQ4OAogICAgMHhiNGM1ZTc0NjogICAgbW92dCAgIHIxMiwg
IzQ2MjAxCiAgICAweGI0YzVlNzRhOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZTc0ZTog
ICAgYmx0ICAgIDB4YjRjNWU3YWMKICAgIDB4YjRjNWU3NTA6ICAgIG1vdncgICByMTIsICM0NzQ4
OAogICAgMHhiNGM1ZTc1NDogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVlNzU4OiAg
ICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZTc1YzogICAgYm5lICAgIDB4YjRjNWU3N2UKICAg
IDB4YjRjNWU3NWU6ICAgIGxkciAgICByMTIsIFtyMSwgIzE2XQogICAgMHhiNGM1ZTc2MjogICAg
YWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZTc2NjogICAgc3RyICAgIHIxMiwgW3IxLCAj
MTZdCiAgICAweGI0YzVlNzZhOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWU3NmU6
ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZTc3MjogICAgYmx4ICAgIHIxMgogICAg
MHhiNGM1ZTc3NDogICAgbm9wICAgIAogICAgMHhiNGM1ZTc3NjogICAgbm9wICAgIAogICAgMHhi
NGM1ZTc3YTogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWU3N2U6ICAgIG1vdncgICBy
MTIsICM0NzY4MAogICAgMHhiNGM1ZTc4MjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0
YzVlNzg2OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZTc4YTogICAgYm5lICAgIDB4YjRj
NWU4MDgKICAgIDB4YjRjNWU3OGM6ICAgIGxkciAgICByMTIsIFtyMSwgIzEyXQogICAgMHhiNGM1
ZTc5MDogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZTc5NDogICAgc3RyICAgIHIx
MiwgW3IxLCAjMTJdCiAgICAweGI0YzVlNzk4OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4
YjRjNWU3OWM6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZTdhMDogICAgYmx4ICAg
IHIxMgogICAgMHhiNGM1ZTdhMjogICAgbm9wICAgIAogICAgMHhiNGM1ZTdhNDogICAgbm9wICAg
IAogICAgMHhiNGM1ZTdhODogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWU3YWM6ICAg
IG1vdncgICByMTIsICM0NzEwNAogICAgMHhiNGM1ZTdiMDogICAgbW92dCAgIHIxMiwgIzQ2MjAx
CiAgICAweGI0YzVlN2I0OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZTdiODogICAgYm5l
ICAgIDB4YjRjNWU3ZGEKICAgIDB4YjRjNWU3YmE6ICAgIGxkciAgICByMTIsIFtyMSwgIzI0XQog
ICAgMHhiNGM1ZTdiZTogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZTdjMjogICAg
c3RyICAgIHIxMiwgW3IxLCAjMjRdCiAgICAweGI0YzVlN2M2OiAgICBtb3Z3ICAgcjEyLCAjMzEx
MzcKICAgIDB4YjRjNWU3Y2E6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZTdjZTog
ICAgYmx4ICAgIHIxMgogICAgMHhiNGM1ZTdkMDogICAgbm9wICAgIAogICAgMHhiNGM1ZTdkMjog
ICAgbm9wICAgIAogICAgMHhiNGM1ZTdkNjogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRj
NWU3ZGE6ICAgIG1vdncgICByMTIsICM0NzI5NgogICAgMHhiNGM1ZTdkZTogICAgbW92dCAgIHIx
MiwgIzQ2MjAxCiAgICAweGI0YzVlN2UyOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZTdl
NjogICAgYm5lICAgIDB4YjRjNWU4MDgKICAgIDB4YjRjNWU3ZTg6ICAgIGxkciAgICByMTIsIFty
MSwgIzIwXQogICAgMHhiNGM1ZTdlYzogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1
ZTdmMDogICAgc3RyICAgIHIxMiwgW3IxLCAjMjBdCiAgICAweGI0YzVlN2Y0OiAgICBtb3Z3ICAg
cjEyLCAjMzExMzcKICAgIDB4YjRjNWU3Zjg6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhi
NGM1ZTdmYzogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1ZTdmZTogICAgbm9wICAgIAogICAgMHhi
NGM1ZTgwMDogICAgbm9wICAgIAogICAgMHhiNGM1ZTgwNDogICAgYiAgICAgIDB4YjRjNWJmNjYK
ICAgIDB4YjRjNWU4MDg6ICAgIG12biAgICByMSwgIzQKICAgIDB4YjRjNWU4MGM6ICAgIG1vdncg
ICByMiwgIzQ1NDg4CiAgICAweGI0YzVlODEwOiAgICBtb3Z0ICAgcjIsICM0NjI2MwogICAgMHhi
NGM1ZTgxNDogICAgbW92dyAgIHI4LCAjNTc4ODEKICAgIDB4YjRjNWU4MTg6ICAgIG1vdnQgICBy
OCwgIzQ2Mjc3CiAgICAweGI0YzVlODFjOiAgICBtb3YgICAgbHIsIHI4CiAgICAweGI0YzVlODFl
OiAgICBtb3Z3ICAgcjEyLCAjMTU5NjkKICAgIDB4YjRjNWU4MjI6ICAgIG1vdnQgICByMTIsICM0
NjgzMgogICAgMHhiNGM1ZTgyNjogICAgYnggICAgIHIxMgpMaW5raW5nIHBvbHltb3JwaGljIGNh
bGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUds
b2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJjODAgKDB4
YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhl
Y3V0YWJsZTogI0FNSXlUZjpbMHhiNDc5MjU4MC0+MHhiNDdkNGRjMCwgTExJbnRGdW5jdGlvbkNh
bGwsIDYxXSksIGNvZGVCbG9jayA9ICNBTUl5VGY6WzB4YjQ3OTI1ODAtPjB4YjQ3ZDRkYzAsIExM
SW50RnVuY3Rpb25DYWxsLCA2MV0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+
I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0
IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYmMwICgweGI0N2Y3MDkwOltGdW5j
dGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNDWVZU
bFc6WzB4YjQ3OTI0MzAtPjB4YjQ3ZDRjYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2NF0pLCBjb2Rl
QmxvY2sgPSAjQ1lWVGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0Y2MwLCBMTEludEZ1bmN0aW9uQ2Fs
bCwgNjRdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3
YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChG
dW5jdGlvbjogQ2VsbDogMHhiNDc5YmIwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25B
cnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQlF5SXRGOlsweGI0NzkyMmUw
LT4weGI0N2Q0YmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0JReUl0
RjpbMHhiNDc5MjJlMC0+MHhiNDdkNGJjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXQpMaW5raW5n
IHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2Fi
ZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6
IDB4YjQ3OWJhNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4
YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FVaEZIVzpbMHhiNDc5MjE5MC0+MHhiNDdkNGFjMCwg
TExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNBVWhGSFc6WzB4YjQ3OTIxOTAt
PjB4YjQ3ZDRhYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0KTGlua2luZyBwb2x5bW9ycGhpYyBj
YWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVH
bG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliOTgwICgw
eGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4
ZWN1dGFibGU6ICNEOE00MFk6WzB4YjQ3OTIwNDAtPjB4YjQ3ZDQ5YzAsIExMSW50RnVuY3Rpb25D
YWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjRDhNNDBZOlsweGI0NzkyMDQwLT4weGI0N2Q0OWMwLCBM
TEludEZ1bmN0aW9uQ2FsbCwgNzBdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFs
PiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBh
dCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YjhjMCAoMHhiNDdmNzA5MDpbRnVu
Y3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQlhH
SzBEOlsweGI0NzkxZWYwLT4weGI0N2Q0OGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29k
ZUJsb2NrID0gI0JYR0swRDpbMHhiNDc5MWVmMC0+MHhiNDdkNDhjMCwgTExJbnRGdW5jdGlvbkNh
bGwsIDcwXQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0
N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAo
RnVuY3Rpb246IENlbGw6IDB4YjQ3OWI4MDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9u
QXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0RrMUU5ZTpbMHhiNDc5MWRh
MC0+MHhiNDdkNDdjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNEazFF
OWU6WzB4YjQ3OTFkYTAtPjB4YjQ3ZDQ3YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0KR2VuZXJh
dGVkIEpJVCBjb2RlIGZvciBWaXJ0dWFsIGNhbGwgc2xvdyBwYXRoIHRodW5rOgogICAgQ29kZSBh
dCBbMHhiNmYwMmVjMSwgMHhiNmYwMmY4MSk6CiAgICAweGI2ZjAyZWMwOiAgICBsZHIgICAgcjEy
LCBbcjIsICM1Ml0KICAgIDB4YjZmMDJlYzQ6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4
YjZmMDJlYzg6ICAgIHN0ciAgICByMTIsIFtyMiwgIzUyXQogICAgMHhiNmYwMmVjYzogICAgY21u
ICAgIHIxLCAjNQogICAgMHhiNmYwMmVkMDogICAgYm5lICAgIDB4YjZmMDJlZTgKICAgIDB4YjZm
MDJlZDI6ICAgIGxkcmIgICByNiwgW3IwLCAjNV0KICAgIDB4YjZmMDJlZDQ6ICAgIGNtcCAgICBy
MiwgIzIzCiAgICAweGI2ZjAyZWQ2OiAgICBibmUgICAgMHhiNmYwMmVlOAogICAgMHhiNmYwMmVk
ODogICAgbGRyICAgIHI4LCBbcjAsICMyMF0KICAgIDB4YjZmMDJlZGM6ICAgIGxkciAgICByOCwg
W3I4LCAjMjhdCiAgICAweGI2ZjAyZWUwOiAgICB0c3QgICAgcjgsIHI4CiAgICAweGI2ZjAyZWU0
OiAgICBiZXEgICAgMHhiNmYwMmVlOAogICAgMHhiNmYwMmVlNjogICAgYnggICAgIHI4CiAgICAw
eGI2ZjAyZWU4OiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjZmMDJlZWM6ICAgIG1vdiAgICBy
Nywgc3AKICAgIDB4YjZmMDJlZWU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI2ZjAyZWYy
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNmYwMmVmNjogICAgc3RyICAgIHI3LCBbcjZd
CiAgICAweGI2ZjAyZWY4OiAgICBtdm4gICAgcjEyLCAjMjMKICAgIDB4YjZmMDJlZmM6ICAgIG1v
diAgICBzcCwgc3AKICAgIDB4YjZmMDJlZmU6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAweGI2ZjAy
ZjAwOiAgICBtb3YgICAgcjEsIHIyCiAgICAweGI2ZjAyZjAyOiAgICBtb3YgICAgcjAsIHI3CiAg
ICAweGI2ZjAyZjA0OiAgICBtb3Z3ICAgcjQsICM1MTI3NwogICAgMHhiNmYwMmYwODogICAgbW92
dCAgIHI0LCAjNDY3NzYKICAgIDB4YjZmMDJmMGM6ICAgIGJseCAgICByNAogICAgMHhiNmYwMmYw
ZTogICAgYWRkICAgIHNwLCBzcCwgIzYKICAgIDB4YjZmMDJmMTA6ICAgIG1vdiAgICBzcCwgcjcK
ICAgIDB4YjZmMDJmMTI6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNmYwMmYxNjogICAgdHN0
ICAgIHIxLCByMQogICAgMHhiNmYwMmYxODogICAgYmVxICAgIDB4YjZmMDJmNjgKICAgIDB4YjZm
MDJmMWE6ICAgIG1vdiAgICByNSwgbHIKICAgIDB4YjZmMDJmMWM6ICAgIGxkciAgICByMSwgW3I3
LCAjMjRdCiAgICAweGI2ZjAyZjFlOiAgICBsZHIgICAgcjMsIFtyNywgIzhdCiAgICAweGI2ZjAy
ZjIwOiAgICBsZHIgICAgcjMsIFtyMywgIzMyXQogICAgMHhiNmYwMmYyMjogICAgY21wICAgIHIz
LCByMQogICAgMHhiNmYwMmYyNDogICAgYmxzICAgIDB4YjZmMDJmMjgKICAgIDB4YjZmMDJmMjY6
ICAgIG1vdiAgICByMSwgcjMKICAgIDB4YjZmMDJmMjg6ICAgIGFkZHMgICByMSwgcjEsICM1CiAg
ICAweGI2ZjAyZjJhOiAgICBtdm4gICAgcjEyLCAjMQogICAgMHhiNmYwMmYyZTogICAgYW5kICAg
IHIxLCByMSwgcjEyCiAgICAweGI2ZjAyZjMyOiAgICBtb3YgICAgcjEyLCAjOAogICAgMHhiNmYw
MmYzNjogICAgc211bGwgIHIxLCByMTIsIHIxLCByMTIKICAgIDB4YjZmMDJmM2E6ICAgIGFkZHMg
ICByMywgcjcsIHIxCiAgICAweGI2ZjAyZjNjOiAgICBsZHIgICAgcjEsIFtzcCwgIzE2XQogICAg
MHhiNmYwMmYzZTogICAgYWRkcyAgIHIxLCByMSwgIzUKICAgIDB4YjZmMDJmNDA6ICAgIG12biAg
ICByMTIsICMxCiAgICAweGI2ZjAyZjQ0OiAgICBhbmQgICAgcjEsIHIxLCByMTIKICAgIDB4YjZm
MDJmNDg6ICAgIG1vdiAgICByMTIsICM4CiAgICAweGI2ZjAyZjRjOiAgICBzbXVsbCAgcjEsIHIx
MiwgcjEsIHIxMgogICAgMHhiNmYwMmY1MDogICAgbGRyICAgIGxyLCBbcjcsICM0XQogICAgMHhi
NmYwMmY1NDogICAgc3VicyAgIHIxLCAjOAogICAgMHhiNmYwMmY1NjogICAgc3VicyAgIHIzLCBy
MywgcjEKICAgIDB4YjZmMDJmNTg6ICAgIGxkciAgICByNywgW3I3XQogICAgMHhiNmYwMmY1YTog
ICAgc3VicyAgIHIxLCByMSwgIzQKICAgIDB4YjZmMDJmNWM6ICAgIGxkciAgICByMiwgW3NwLCBy
MV0KICAgIDB4YjZmMDJmNjA6ICAgIHN0ciAgICByMiwgW3IzLCByMV0KICAgIDB4YjZmMDJmNjI6
ICAgIHRzdCAgICByMSwgcjEKICAgIDB4YjZmMDJmNjQ6ICAgIGJuZSAgICAweGI2ZjAzMTVhCiAg
ICAweGI2ZjAyZjY2OiAgICBtb3YgICAgc3AsIHIzCiAgICAweGI2ZjAyZjY4OiAgICBieCAgICAg
cjAKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0
cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJj
IzE0MTEKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29k
ZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCks
IGJjIzE0MTEKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQg
Q29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIx
OCksIGJjIzE0MTEKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwg
YXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1
ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNh
bGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhi
NGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGlj
IGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0g
MHhiNGM1ZTIxOCksIGJjIzE0MTEKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBQb2x5bW9ycGhpYyBj
YWxsIHN0dWIgZm9yIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFz
ZWxpbmVHbG9iYWwsIDE1NTRdLCByZXR1cm4gcG9pbnQgMHhiNGM1ZTIxOSwgdGFyZ2V0cyA8dmFy
aWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmM4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24s
IHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQU1JeVRmOlsw
eGI0NzkyNTgwLT4weGI0N2Q0ZGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjFdKSwgY29kZUJsb2Nr
ID0gI0FNSXlUZjpbMHhiNDc5MjU4MC0+MHhiNDdkNGRjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDYx
XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYmMwICgweGI0N2Y3MDkwOltG
dW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICND
WVZUbFc6WzB4YjQ3OTI0MzAtPjB4YjQ3ZDRjYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2NF0pLCBj
b2RlQmxvY2sgPSAjQ1lWVGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0Y2MwLCBMTEludEZ1bmN0aW9u
Q2FsbCwgNjRdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJiMDAgKDB4YjQ3
ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0
YWJsZTogI0JReUl0RjpbMHhiNDc5MjJlMC0+MHhiNDdkNGJjMCwgTExJbnRGdW5jdGlvbkNhbGws
IDcwXSksIGNvZGVCbG9jayA9ICNCUXlJdEY6WzB4YjQ3OTIyZTAtPjB4YjQ3ZDRiYzAsIExMSW50
RnVuY3Rpb25DYWxsLCA3MF0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmE0
MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0p
OyBFeGVjdXRhYmxlOiAjQVVoRkhXOlsweGI0NzkyMTkwLT4weGI0N2Q0YWMwLCBMTEludEZ1bmN0
aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0FVaEZIVzpbMHhiNDc5MjE5MC0+MHhiNDdkNGFj
MCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAw
eGI0NzliOTgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0
N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNEOE00MFk6WzB4YjQ3OTIwNDAtPjB4YjQ3ZDQ5YzAsIExM
SW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjRDhNNDBZOlsweGI0NzkyMDQwLT4w
eGI0N2Q0OWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246
IENlbGw6IDB4YjQ3OWI4YzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFBy
b3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JYR0swRDpbMHhiNDc5MWVmMC0+MHhiNDdk
NDhjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNCWEdLMEQ6WzB4YjQ3
OTFlZjAtPjB4YjQ3ZDQ4YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0+LCA8dmFyaWFudCA9IChG
dW5jdGlvbjogQ2VsbDogMHhiNDc5YjgwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25B
cnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRGsxRTllOlsweGI0NzkxZGEw
LT4weGI0N2Q0N2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0RrMUU5
ZTpbMHhiNDc5MWRhMC0+MHhiNDdkNDdjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXT4sIDx2YXJp
YW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliNzQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwg
e30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFaktLZW46WzB4
YjQ3OTFjNTAtPjB4YjQ3ZDQ2YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sg
PSAjRWpLS2VuOlsweGI0NzkxYzUwLT4weGI0N2Q0NmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBd
PjoKICAgIENvZGUgYXQgWzB4YjRjNWU4NDEsIDB4YjRjNWVhMjEpOgogICAgMHhiNGM1ZTg0MDog
ICAgbW92dyAgIHIxLCAjNjQ1MjgKICAgIDB4YjRjNWU4NDQ6ICAgIG1vdnQgICByMSwgIzE4Ngog
ICAgMHhiNGM1ZTg0ODogICAgbW92dyAgIHIxMiwgIzQ3NjgwCiAgICAweGI0YzVlODRjOiAgICBt
b3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNWU4NTA6ICAgIGNtcCAgICByMCwgcjEyCiAgICAw
eGI0YzVlODU0OiAgICBibHQgICAgMHhiNGM1ZTkyMgogICAgMHhiNGM1ZTg1ODogICAgbW92dyAg
IHIxMiwgIzQ4MDY0CiAgICAweGI0YzVlODVjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4
YjRjNWU4NjA6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzVlODY0OiAgICBibHQgICAgMHhi
NGM1ZThjNAogICAgMHhiNGM1ZTg2NjogICAgbW92dyAgIHIxMiwgIzQ4MjU2CiAgICAweGI0YzVl
ODZhOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNWU4NmU6ICAgIGNtcCAgICByMCwg
cjEyCiAgICAweGI0YzVlODcyOiAgICBibmUgICAgMHhiNGM1ZTg5NAogICAgMHhiNGM1ZTg3NDog
ICAgbGRyICAgIHIxMiwgW3IxXQogICAgMHhiNGM1ZTg3ODogICAgYWRkdyAgIHIxMiwgcjEyLCAj
MQogICAgMHhiNGM1ZTg3YzogICAgc3RyICAgIHIxMiwgW3IxXQogICAgMHhiNGM1ZTg4MDogICAg
bW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzVlODg0OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIK
ICAgIDB4YjRjNWU4ODg6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNWU4OGE6ICAgIG5vcCAgICAK
ICAgIDB4YjRjNWU4OGM6ICAgIG5vcCAgICAKICAgIDB4YjRjNWU4OTA6ICAgIGIgICAgICAweGI0
YzViZjY2CiAgICAweGI0YzVlODk0OiAgICBtb3Z3ICAgcjEyLCAjNDgwNjQKICAgIDB4YjRjNWU4
OTg6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1ZTg5YzogICAgY21wICAgIHIwLCBy
MTIKICAgIDB4YjRjNWU4YTA6ICAgIGJuZSAgICAweGI0YzVlOWVhCiAgICAweGI0YzVlOGE0OiAg
ICBsZHIgICAgcjEyLCBbcjEsICM0XQogICAgMHhiNGM1ZThhODogICAgYWRkdyAgIHIxMiwgcjEy
LCAjMQogICAgMHhiNGM1ZThhYzogICAgc3RyICAgIHIxMiwgW3IxLCAjNF0KICAgIDB4YjRjNWU4
YjA6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1ZThiNDogICAgbW92dCAgIHIxMiwg
IzQ2ODMyCiAgICAweGI0YzVlOGI4OiAgICBibHggICAgcjEyCiAgICAweGI0YzVlOGJhOiAgICBu
b3AgICAgCiAgICAweGI0YzVlOGJjOiAgICBub3AgICAgCiAgICAweGI0YzVlOGMwOiAgICBiICAg
ICAgMHhiNGM1YmY2NgogICAgMHhiNGM1ZThjNDogICAgbW92dyAgIHIxMiwgIzQ3ODcyCiAgICAw
eGI0YzVlOGM4OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNWU4Y2M6ICAgIGNtcCAg
ICByMCwgcjEyCiAgICAweGI0YzVlOGQwOiAgICBibmUgICAgMHhiNGM1ZThmMgogICAgMHhiNGM1
ZThkMjogICAgbGRyICAgIHIxMiwgW3IxLCAjOF0KICAgIDB4YjRjNWU4ZDY6ICAgIGFkZHcgICBy
MTIsIHIxMiwgIzEKICAgIDB4YjRjNWU4ZGE6ICAgIHN0ciAgICByMTIsIFtyMSwgIzhdCiAgICAw
eGI0YzVlOGRlOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWU4ZTI6ICAgIG1vdnQg
ICByMTIsICM0NjgzMgogICAgMHhiNGM1ZThlNjogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1ZThl
ODogICAgbm9wICAgIAogICAgMHhiNGM1ZThlYTogICAgbm9wICAgIAogICAgMHhiNGM1ZThlZTog
ICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWU4ZjI6ICAgIG1vdncgICByMTIsICM0NzY4
MAogICAgMHhiNGM1ZThmNjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVlOGZhOiAg
ICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZThmZTogICAgYm5lICAgIDB4YjRjNWU5ZWEKICAg
IDB4YjRjNWU5MDI6ICAgIGxkciAgICByMTIsIFtyMSwgIzEyXQogICAgMHhiNGM1ZTkwNjogICAg
YWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZTkwYTogICAgc3RyICAgIHIxMiwgW3IxLCAj
MTJdCiAgICAweGI0YzVlOTBlOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWU5MTI6
ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZTkxNjogICAgYmx4ICAgIHIxMgogICAg
MHhiNGM1ZTkxODogICAgbm9wICAgIAogICAgMHhiNGM1ZTkxYTogICAgbm9wICAgIAogICAgMHhi
NGM1ZTkxZTogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWU5MjI6ICAgIG1vdncgICBy
MTIsICM0NzI5NgogICAgMHhiNGM1ZTkyNjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0
YzVlOTJhOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZTkyZTogICAgYmx0ICAgIDB4YjRj
NWU5OGMKICAgIDB4YjRjNWU5MzA6ICAgIG1vdncgICByMTIsICM0NzQ4OAogICAgMHhiNGM1ZTkz
NDogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVlOTM4OiAgICBjbXAgICAgcjAsIHIx
MgogICAgMHhiNGM1ZTkzYzogICAgYm5lICAgIDB4YjRjNWU5NWUKICAgIDB4YjRjNWU5M2U6ICAg
IGxkciAgICByMTIsIFtyMSwgIzE2XQogICAgMHhiNGM1ZTk0MjogICAgYWRkdyAgIHIxMiwgcjEy
LCAjMQogICAgMHhiNGM1ZTk0NjogICAgc3RyICAgIHIxMiwgW3IxLCAjMTZdCiAgICAweGI0YzVl
OTRhOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWU5NGU6ICAgIG1vdnQgICByMTIs
ICM0NjgzMgogICAgMHhiNGM1ZTk1MjogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1ZTk1NDogICAg
bm9wICAgIAogICAgMHhiNGM1ZTk1NjogICAgbm9wICAgIAogICAgMHhiNGM1ZTk1YTogICAgYiAg
ICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWU5NWU6ICAgIG1vdncgICByMTIsICM0NzI5NgogICAg
MHhiNGM1ZTk2MjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVlOTY2OiAgICBjbXAg
ICAgcjAsIHIxMgogICAgMHhiNGM1ZTk2YTogICAgYm5lICAgIDB4YjRjNWU5ZWEKICAgIDB4YjRj
NWU5NmM6ICAgIGxkciAgICByMTIsIFtyMSwgIzIwXQogICAgMHhiNGM1ZTk3MDogICAgYWRkdyAg
IHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZTk3NDogICAgc3RyICAgIHIxMiwgW3IxLCAjMjBdCiAg
ICAweGI0YzVlOTc4OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWU5N2M6ICAgIG1v
dnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZTk4MDogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1
ZTk4MjogICAgbm9wICAgIAogICAgMHhiNGM1ZTk4NDogICAgbm9wICAgIAogICAgMHhiNGM1ZTk4
ODogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWU5OGM6ICAgIG1vdncgICByMTIsICM0
NzEwNAogICAgMHhiNGM1ZTk5MDogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVlOTk0
OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZTk5ODogICAgYm5lICAgIDB4YjRjNWU5YmEK
ICAgIDB4YjRjNWU5OWE6ICAgIGxkciAgICByMTIsIFtyMSwgIzI0XQogICAgMHhiNGM1ZTk5ZTog
ICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZTlhMjogICAgc3RyICAgIHIxMiwgW3Ix
LCAjMjRdCiAgICAweGI0YzVlOWE2OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWU5
YWE6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZTlhZTogICAgYmx4ICAgIHIxMgog
ICAgMHhiNGM1ZTliMDogICAgbm9wICAgIAogICAgMHhiNGM1ZTliMjogICAgbm9wICAgIAogICAg
MHhiNGM1ZTliNjogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWU5YmE6ICAgIG5vcCAg
ICAKICAgIDB4YjRjNWU5YmM6ICAgIG1vdncgICByMTIsICM0NjkxMgogICAgMHhiNGM1ZTljMDog
ICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVlOWM0OiAgICBjbXAgICAgcjAsIHIxMgog
ICAgMHhiNGM1ZTljODogICAgYm5lICAgIDB4YjRjNWU5ZWEKICAgIDB4YjRjNWU5Y2E6ICAgIGxk
ciAgICByMTIsIFtyMSwgIzI4XQogICAgMHhiNGM1ZTljZTogICAgYWRkdyAgIHIxMiwgcjEyLCAj
MQogICAgMHhiNGM1ZTlkMjogICAgc3RyICAgIHIxMiwgW3IxLCAjMjhdCiAgICAweGI0YzVlOWQ2
OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWU5ZGE6ICAgIG1vdnQgICByMTIsICM0
NjgzMgogICAgMHhiNGM1ZTlkZTogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1ZTllMDogICAgbm9w
ICAgIAogICAgMHhiNGM1ZTllMjogICAgbm9wICAgIAogICAgMHhiNGM1ZTllNjogICAgYiAgICAg
IDB4YjRjNWJmNjYKICAgIDB4YjRjNWU5ZWE6ICAgIG12biAgICByMSwgIzQKICAgIDB4YjRjNWU5
ZWU6ICAgIG1vdncgICByMiwgIzQ1NDg4CiAgICAweGI0YzVlOWYyOiAgICBtb3Z0ICAgcjIsICM0
NjI2MwogICAgMHhiNGM1ZTlmNjogICAgbW92dyAgIHI4LCAjNTc4ODEKICAgIDB4YjRjNWU5ZmE6
ICAgIG1vdnQgICByOCwgIzQ2Mjc3CiAgICAweGI0YzVlOWZlOiAgICBtb3YgICAgbHIsIHI4CiAg
ICAweGI0YzVlYTAwOiAgICBtb3Z3ICAgcjEyLCAjMTU5NjkKICAgIDB4YjRjNWVhMDQ6ICAgIG1v
dnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZWEwODogICAgYnggICAgIHIxMgpMaW5raW5nIHBv
bHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUw
LCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4
YjQ3OWJjODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3
ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FNSXlUZjpbMHhiNDc5MjU4MC0+MHhiNDdkNGRjMCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDYxXSksIGNvZGVCbG9jayA9ICNBTUl5VGY6WzB4YjQ3OTI1ODAtPjB4
YjQ3ZDRkYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2MV0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxs
IGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9i
YWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYmMwICgweGI0
N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1
dGFibGU6ICNDWVZUbFc6WzB4YjQ3OTI0MzAtPjB4YjQ3ZDRjYzAsIExMSW50RnVuY3Rpb25DYWxs
LCA2NF0pLCBjb2RlQmxvY2sgPSAjQ1lWVGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0Y2MwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNjRdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNC
eVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBi
YyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmIwMCAoMHhiNDdmNzA5MDpbRnVuY3Rp
b24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQlF5SXRG
OlsweGI0NzkyMmUwLT4weGI0N2Q0YmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJs
b2NrID0gI0JReUl0RjpbMHhiNDc5MjJlMC0+MHhiNDdkNGJjMCwgTExJbnRGdW5jdGlvbkNhbGws
IDcwXQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2Ez
ZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVu
Y3Rpb246IENlbGw6IDB4YjQ3OWJhNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJy
YXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FVaEZIVzpbMHhiNDc5MjE5MC0+
MHhiNDdkNGFjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNBVWhGSFc6
WzB4YjQ3OTIxOTAtPjB4YjQ3ZDRhYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0KTGlua2luZyBw
b2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1
MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAw
eGI0NzliOTgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0
N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNEOE00MFk6WzB4YjQ3OTIwNDAtPjB4YjQ3ZDQ5YzAsIExM
SW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjRDhNNDBZOlsweGI0NzkyMDQwLT4w
eGI0N2Q0OWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2Fs
bCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xv
YmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YjhjMCAoMHhi
NDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVj
dXRhYmxlOiAjQlhHSzBEOlsweGI0NzkxZWYwLT4weGI0N2Q0OGMwLCBMTEludEZ1bmN0aW9uQ2Fs
bCwgNzBdKSwgY29kZUJsb2NrID0gI0JYR0swRDpbMHhiNDc5MWVmMC0+MHhiNDdkNDhjMCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDcwXQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4j
QnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQg
YmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWI4MDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0
aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0RrMUU5
ZTpbMHhiNDc5MWRhMC0+MHhiNDdkNDdjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVC
bG9jayA9ICNEazFFOWU6WzB4YjQ3OTFkYTAtPjB4YjQ3ZDQ3YzAsIExMSW50RnVuY3Rpb25DYWxs
LCA3MF0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdh
M2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1
bmN0aW9uOiBDZWxsOiAweGI0NzliNzQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFy
cmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFaktLZW46WzB4YjQ3OTFjNTAt
PjB4YjQ3ZDQ2YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjRWpLS2Vu
OlsweGI0NzkxYzUwLT4weGI0N2Q0NmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdCkdlbmVyYXRl
ZCBKSVQgY29kZSBmb3IgVmlydHVhbCBjYWxsIHNsb3cgcGF0aCB0aHVuazoKICAgIENvZGUgYXQg
WzB4YjRjNWVhMjEsIDB4YjRjNWVhZTEpOgogICAgMHhiNGM1ZWEyMDogICAgbGRyICAgIHIxMiwg
W3IyLCAjNTJdCiAgICAweGI0YzVlYTI0OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0
YzVlYTI4OiAgICBzdHIgICAgcjEyLCBbcjIsICM1Ml0KICAgIDB4YjRjNWVhMmM6ICAgIGNtbiAg
ICByMSwgIzUKICAgIDB4YjRjNWVhMzA6ICAgIGJuZSAgICAweGI0YzVlYTQ4CiAgICAweGI0YzVl
YTMyOiAgICBsZHJiICAgcjYsIFtyMCwgIzVdCiAgICAweGI0YzVlYTM0OiAgICBjbXAgICAgcjIs
ICMyMwogICAgMHhiNGM1ZWEzNjogICAgYm5lICAgIDB4YjRjNWVhNDgKICAgIDB4YjRjNWVhMzg6
ICAgIGxkciAgICByOCwgW3IwLCAjMjBdCiAgICAweGI0YzVlYTNjOiAgICBsZHIgICAgcjgsIFty
OCwgIzI4XQogICAgMHhiNGM1ZWE0MDogICAgdHN0ICAgIHI4LCByOAogICAgMHhiNGM1ZWE0NDog
ICAgYmVxICAgIDB4YjRjNWVhNDgKICAgIDB4YjRjNWVhNDY6ICAgIGJ4ICAgICByOAogICAgMHhi
NGM1ZWE0ODogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI0YzVlYTRjOiAgICBtb3YgICAgcjcs
IHNwCiAgICAweGI0YzVlYTRlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNGM1ZWE1Mjog
ICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjRjNWVhNTY6ICAgIHN0ciAgICByNywgW3I2XQog
ICAgMHhiNGM1ZWE1ODogICAgbXZuICAgIHIxMiwgIzIzCiAgICAweGI0YzVlYTVjOiAgICBtb3Yg
ICAgc3AsIHNwCiAgICAweGI0YzVlYTVlOiAgICBhZGQgICAgc3AsIHIxMgogICAgMHhiNGM1ZWE2
MDogICAgbW92ICAgIHIxLCByMgogICAgMHhiNGM1ZWE2MjogICAgbW92ICAgIHIwLCByNwogICAg
MHhiNGM1ZWE2NDogICAgbW92dyAgIHI0LCAjNTEyNzcKICAgIDB4YjRjNWVhNjg6ICAgIG1vdnQg
ICByNCwgIzQ2Nzc2CiAgICAweGI0YzVlYTZjOiAgICBibHggICAgcjQKICAgIDB4YjRjNWVhNmU6
ICAgIGFkZCAgICBzcCwgc3AsICM2CiAgICAweGI0YzVlYTcwOiAgICBtb3YgICAgc3AsIHI3CiAg
ICAweGI0YzVlYTcyOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjRjNWVhNzY6ICAgIHRzdCAg
ICByMSwgcjEKICAgIDB4YjRjNWVhNzg6ICAgIGJlcSAgICAweGI0YzVlYWM4CiAgICAweGI0YzVl
YTdhOiAgICBtb3YgICAgcjUsIGxyCiAgICAweGI0YzVlYTdjOiAgICBsZHIgICAgcjEsIFtyNywg
IzI0XQogICAgMHhiNGM1ZWE3ZTogICAgbGRyICAgIHIzLCBbcjcsICM4XQogICAgMHhiNGM1ZWE4
MDogICAgbGRyICAgIHIzLCBbcjMsICMzMl0KICAgIDB4YjRjNWVhODI6ICAgIGNtcCAgICByMywg
cjEKICAgIDB4YjRjNWVhODQ6ICAgIGJscyAgICAweGI0YzVlYTg4CiAgICAweGI0YzVlYTg2OiAg
ICBtb3YgICAgcjEsIHIzCiAgICAweGI0YzVlYTg4OiAgICBhZGRzICAgcjEsIHIxLCAjNQogICAg
MHhiNGM1ZWE4YTogICAgbXZuICAgIHIxMiwgIzEKICAgIDB4YjRjNWVhOGU6ICAgIGFuZCAgICBy
MSwgcjEsIHIxMgogICAgMHhiNGM1ZWE5MjogICAgbW92ICAgIHIxMiwgIzgKICAgIDB4YjRjNWVh
OTY6ICAgIHNtdWxsICByMSwgcjEyLCByMSwgcjEyCiAgICAweGI0YzVlYTlhOiAgICBhZGRzICAg
cjMsIHI3LCByMQogICAgMHhiNGM1ZWE5YzogICAgbGRyICAgIHIxLCBbc3AsICMxNl0KICAgIDB4
YjRjNWVhOWU6ICAgIGFkZHMgICByMSwgcjEsICM1CiAgICAweGI0YzVlYWEwOiAgICBtdm4gICAg
cjEyLCAjMQogICAgMHhiNGM1ZWFhNDogICAgYW5kICAgIHIxLCByMSwgcjEyCiAgICAweGI0YzVl
YWE4OiAgICBtb3YgICAgcjEyLCAjOAogICAgMHhiNGM1ZWFhYzogICAgc211bGwgIHIxLCByMTIs
IHIxLCByMTIKICAgIDB4YjRjNWVhYjA6ICAgIGxkciAgICBsciwgW3I3LCAjNF0KICAgIDB4YjRj
NWVhYjQ6ICAgIHN1YnMgICByMSwgIzgKICAgIDB4YjRjNWVhYjY6ICAgIHN1YnMgICByMywgcjMs
IHIxCiAgICAweGI0YzVlYWI4OiAgICBsZHIgICAgcjcsIFtyN10KICAgIDB4YjRjNWVhYmE6ICAg
IHN1YnMgICByMSwgcjEsICM0CiAgICAweGI0YzVlYWJjOiAgICBsZHIgICAgcjIsIFtzcCwgcjFd
CiAgICAweGI0YzVlYWMwOiAgICBzdHIgICAgcjIsIFtyMywgcjFdCiAgICAweGI0YzVlYWMyOiAg
ICB0c3QgICAgcjEsIHIxCiAgICAweGI0YzVlYWM0OiAgICBibmUgICAgMHhiNGM1ZWNiYQogICAg
MHhiNGM1ZWFjNjogICAgbW92ICAgIHNwLCByMwogICAgMHhiNGM1ZWFjODogICAgYnggICAgIHIw
CkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIo
ZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMx
NDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQ
dHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBi
YyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENv
ZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgp
LCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0
IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUy
MTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxs
IGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRj
NWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBj
YWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4
YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhp
YyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9
IDB4YjRjNWUyMTgpLCBiYyMxNDExCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgUG9seW1vcnBoaWMg
Y2FsbCBzdHViIGZvciA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJh
c2VsaW5lR2xvYmFsLCAxNTU0XSwgcmV0dXJuIHBvaW50IDB4YjRjNWUyMTksIHRhcmdldHMgPHZh
cmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJjODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9u
LCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FNSXlUZjpb
MHhiNDc5MjU4MC0+MHhiNDdkNGRjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDYxXSksIGNvZGVCbG9j
ayA9ICNBTUl5VGY6WzB4YjQ3OTI1ODAtPjB4YjQ3ZDRkYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2
MV0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmJjMCAoMHhiNDdmNzA5MDpb
RnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAj
Q1lWVGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0Y2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjRdKSwg
Y29kZUJsb2NrID0gI0NZVlRsVzpbMHhiNDc5MjQzMC0+MHhiNDdkNGNjMCwgTExJbnRGdW5jdGlv
bkNhbGwsIDY0XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYjAwICgweGI0
N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1
dGFibGU6ICNCUXlJdEY6WzB4YjQ3OTIyZTAtPjB4YjQ3ZDRiYzAsIExMSW50RnVuY3Rpb25DYWxs
LCA3MF0pLCBjb2RlQmxvY2sgPSAjQlF5SXRGOlsweGI0NzkyMmUwLT4weGI0N2Q0YmMwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNzBdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJh
NDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBd
KTsgRXhlY3V0YWJsZTogI0FVaEZIVzpbMHhiNDc5MjE5MC0+MHhiNDdkNGFjMCwgTExJbnRGdW5j
dGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNBVWhGSFc6WzB4YjQ3OTIxOTAtPjB4YjQ3ZDRh
YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDog
MHhiNDc5Yjk4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhi
NDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRDhNNDBZOlsweGI0NzkyMDQwLT4weGI0N2Q0OWMwLCBM
TEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0Q4TTQwWTpbMHhiNDc5MjA0MC0+
MHhiNDdkNDljMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9u
OiBDZWxsOiAweGI0NzliOGMwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQ
cm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCWEdLMEQ6WzB4YjQ3OTFlZjAtPjB4YjQ3
ZDQ4YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjQlhHSzBEOlsweGI0
NzkxZWYwLT4weGI0N2Q0OGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdPiwgPHZhcmlhbnQgPSAo
RnVuY3Rpb246IENlbGw6IDB4YjQ3OWI4MDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9u
QXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0RrMUU5ZTpbMHhiNDc5MWRh
MC0+MHhiNDdkNDdjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNEazFF
OWU6WzB4YjQ3OTFkYTAtPjB4YjQ3ZDQ3YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0+LCA8dmFy
aWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5Yjc0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24s
IHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRWpLS2VuOlsw
eGI0NzkxYzUwLT4weGI0N2Q0NmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2Nr
ID0gI0VqS0tlbjpbMHhiNDc5MWM1MC0+MHhiNDdkNDZjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcw
XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliNjgwICgweGI0N2Y3MDkwOltG
dW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNF
Z1U0dGw6WzB4YjQ3OTFiMDAtPjB4YjQ3ZDQ1YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBj
b2RlQmxvY2sgPSAjRWdVNHRsOlsweGI0NzkxYjAwLT4weGI0N2Q0NWMwLCBMTEludEZ1bmN0aW9u
Q2FsbCwgNzBdPjoKICAgIENvZGUgYXQgWzB4YjRjNWVhZTEsIDB4YjRjNWVjZTEpOgogICAgMHhi
NGM1ZWFlMDogICAgbW92dyAgIHIxLCAjNjQ1NjgKICAgIDB4YjRjNWVhZTQ6ICAgIG1vdnQgICBy
MSwgIzE4NgogICAgMHhiNGM1ZWFlODogICAgbW92dyAgIHIxMiwgIzQ3NjgwCiAgICAweGI0YzVl
YWVjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNWVhZjA6ICAgIGNtcCAgICByMCwg
cjEyCiAgICAweGI0YzVlYWY0OiAgICBibHQgICAgMHhiNGM1ZWJjMgogICAgMHhiNGM1ZWFmODog
ICAgbW92dyAgIHIxMiwgIzQ4MDY0CiAgICAweGI0YzVlYWZjOiAgICBtb3Z0ICAgcjEyLCAjNDYy
MDEKICAgIDB4YjRjNWViMDA6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzVlYjA0OiAgICBi
bHQgICAgMHhiNGM1ZWI2NAogICAgMHhiNGM1ZWIwNjogICAgbW92dyAgIHIxMiwgIzQ4MDY0CiAg
ICAweGI0YzVlYjBhOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNWViMGU6ICAgIGNt
cCAgICByMCwgcjEyCiAgICAweGI0YzVlYjEyOiAgICBibmUgICAgMHhiNGM1ZWIzNAogICAgMHhi
NGM1ZWIxNDogICAgbGRyICAgIHIxMiwgW3IxLCAjNF0KICAgIDB4YjRjNWViMTg6ICAgIGFkZHcg
ICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNWViMWM6ICAgIHN0ciAgICByMTIsIFtyMSwgIzRdCiAg
ICAweGI0YzVlYjIwOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWViMjQ6ICAgIG1v
dnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZWIyODogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1
ZWIyYTogICAgbm9wICAgIAogICAgMHhiNGM1ZWIyYzogICAgbm9wICAgIAogICAgMHhiNGM1ZWIz
MDogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWViMzQ6ICAgIG1vdncgICByMTIsICM0
ODI1NgogICAgMHhiNGM1ZWIzODogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVlYjNj
OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZWI0MDogICAgYm5lICAgIDB4YjRjNWVjYjYK
ICAgIDB4YjRjNWViNDQ6ICAgIGxkciAgICByMTIsIFtyMV0KICAgIDB4YjRjNWViNDg6ICAgIGFk
ZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNWViNGM6ICAgIHN0ciAgICByMTIsIFtyMV0KICAg
IDB4YjRjNWViNTA6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1ZWI1NDogICAgbW92
dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzVlYjU4OiAgICBibHggICAgcjEyCiAgICAweGI0YzVl
YjVhOiAgICBub3AgICAgCiAgICAweGI0YzVlYjVjOiAgICBub3AgICAgCiAgICAweGI0YzVlYjYw
OiAgICBiICAgICAgMHhiNGM1YmY2NgogICAgMHhiNGM1ZWI2NDogICAgbW92dyAgIHIxMiwgIzQ3
ODcyCiAgICAweGI0YzVlYjY4OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNWViNmM6
ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzVlYjcwOiAgICBibmUgICAgMHhiNGM1ZWI5Mgog
ICAgMHhiNGM1ZWI3MjogICAgbGRyICAgIHIxMiwgW3IxLCAjOF0KICAgIDB4YjRjNWViNzY6ICAg
IGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNWViN2E6ICAgIHN0ciAgICByMTIsIFtyMSwg
IzhdCiAgICAweGI0YzVlYjdlOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWViODI6
ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZWI4NjogICAgYmx4ICAgIHIxMgogICAg
MHhiNGM1ZWI4ODogICAgbm9wICAgIAogICAgMHhiNGM1ZWI4YTogICAgbm9wICAgIAogICAgMHhi
NGM1ZWI4ZTogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWViOTI6ICAgIG1vdncgICBy
MTIsICM0NzY4MAogICAgMHhiNGM1ZWI5NjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0
YzVlYjlhOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZWI5ZTogICAgYm5lICAgIDB4YjRj
NWVjYjYKICAgIDB4YjRjNWViYTI6ICAgIGxkciAgICByMTIsIFtyMSwgIzEyXQogICAgMHhiNGM1
ZWJhNjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZWJhYTogICAgc3RyICAgIHIx
MiwgW3IxLCAjMTJdCiAgICAweGI0YzVlYmFlOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4
YjRjNWViYjI6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZWJiNjogICAgYmx4ICAg
IHIxMgogICAgMHhiNGM1ZWJiODogICAgbm9wICAgIAogICAgMHhiNGM1ZWJiYTogICAgbm9wICAg
IAogICAgMHhiNGM1ZWJiZTogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWViYzI6ICAg
IG1vdncgICByMTIsICM0NzI5NgogICAgMHhiNGM1ZWJjNjogICAgbW92dCAgIHIxMiwgIzQ2MjAx
CiAgICAweGI0YzVlYmNhOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZWJjZTogICAgYmx0
ICAgIDB4YjRjNWVjMmMKICAgIDB4YjRjNWViZDA6ICAgIG1vdncgICByMTIsICM0NzI5NgogICAg
MHhiNGM1ZWJkNDogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVlYmQ4OiAgICBjbXAg
ICAgcjAsIHIxMgogICAgMHhiNGM1ZWJkYzogICAgYm5lICAgIDB4YjRjNWViZmUKICAgIDB4YjRj
NWViZGU6ICAgIGxkciAgICByMTIsIFtyMSwgIzIwXQogICAgMHhiNGM1ZWJlMjogICAgYWRkdyAg
IHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZWJlNjogICAgc3RyICAgIHIxMiwgW3IxLCAjMjBdCiAg
ICAweGI0YzVlYmVhOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWViZWU6ICAgIG1v
dnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZWJmMjogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1
ZWJmNDogICAgbm9wICAgIAogICAgMHhiNGM1ZWJmNjogICAgbm9wICAgIAogICAgMHhiNGM1ZWJm
YTogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWViZmU6ICAgIG1vdncgICByMTIsICM0
NzQ4OAogICAgMHhiNGM1ZWMwMjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVlYzA2
OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZWMwYTogICAgYm5lICAgIDB4YjRjNWVjYjYK
ICAgIDB4YjRjNWVjMGM6ICAgIGxkciAgICByMTIsIFtyMSwgIzE2XQogICAgMHhiNGM1ZWMxMDog
ICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZWMxNDogICAgc3RyICAgIHIxMiwgW3Ix
LCAjMTZdCiAgICAweGI0YzVlYzE4OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWVj
MWM6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZWMyMDogICAgYmx4ICAgIHIxMgog
ICAgMHhiNGM1ZWMyMjogICAgbm9wICAgIAogICAgMHhiNGM1ZWMyNDogICAgbm9wICAgIAogICAg
MHhiNGM1ZWMyODogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWVjMmM6ICAgIG1vdncg
ICByMTIsICM0NjkxMgogICAgMHhiNGM1ZWMzMDogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAw
eGI0YzVlYzM0OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZWMzODogICAgYm5lICAgIDB4
YjRjNWVjNWEKICAgIDB4YjRjNWVjM2E6ICAgIGxkciAgICByMTIsIFtyMSwgIzI4XQogICAgMHhi
NGM1ZWMzZTogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZWM0MjogICAgc3RyICAg
IHIxMiwgW3IxLCAjMjhdCiAgICAweGI0YzVlYzQ2OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAg
IDB4YjRjNWVjNGE6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZWM0ZTogICAgYmx4
ICAgIHIxMgogICAgMHhiNGM1ZWM1MDogICAgbm9wICAgIAogICAgMHhiNGM1ZWM1MjogICAgbm9w
ICAgIAogICAgMHhiNGM1ZWM1NjogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWVjNWE6
ICAgIG1vdncgICByMTIsICM0NjcyMAogICAgMHhiNGM1ZWM1ZTogICAgbW92dCAgIHIxMiwgIzQ2
MjAxCiAgICAweGI0YzVlYzYyOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZWM2NjogICAg
Ym5lICAgIDB4YjRjNWVjODgKICAgIDB4YjRjNWVjNjg6ICAgIGxkciAgICByMTIsIFtyMSwgIzMy
XQogICAgMHhiNGM1ZWM2YzogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZWM3MDog
ICAgc3RyICAgIHIxMiwgW3IxLCAjMzJdCiAgICAweGI0YzVlYzc0OiAgICBtb3Z3ICAgcjEyLCAj
MzExMzcKICAgIDB4YjRjNWVjNzg6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZWM3
YzogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1ZWM3ZTogICAgbm9wICAgIAogICAgMHhiNGM1ZWM4
MDogICAgbm9wICAgIAogICAgMHhiNGM1ZWM4NDogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4
YjRjNWVjODg6ICAgIG1vdncgICByMTIsICM0NzEwNAogICAgMHhiNGM1ZWM4YzogICAgbW92dCAg
IHIxMiwgIzQ2MjAxCiAgICAweGI0YzVlYzkwOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1
ZWM5NDogICAgYm5lICAgIDB4YjRjNWVjYjYKICAgIDB4YjRjNWVjOTY6ICAgIGxkciAgICByMTIs
IFtyMSwgIzI0XQogICAgMHhiNGM1ZWM5YTogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhi
NGM1ZWM5ZTogICAgc3RyICAgIHIxMiwgW3IxLCAjMjRdCiAgICAweGI0YzVlY2EyOiAgICBtb3Z3
ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWVjYTY6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAg
MHhiNGM1ZWNhYTogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1ZWNhYzogICAgbm9wICAgIAogICAg
MHhiNGM1ZWNhZTogICAgbm9wICAgIAogICAgMHhiNGM1ZWNiMjogICAgYiAgICAgIDB4YjRjNWJm
NjYKICAgIDB4YjRjNWVjYjY6ICAgIG12biAgICByMSwgIzQKICAgIDB4YjRjNWVjYmE6ICAgIG1v
dncgICByMiwgIzQ1NDg4CiAgICAweGI0YzVlY2JlOiAgICBtb3Z0ICAgcjIsICM0NjI2MwogICAg
MHhiNGM1ZWNjMjogICAgbW92dyAgIHI4LCAjNTc4ODEKICAgIDB4YjRjNWVjYzY6ICAgIG1vdnQg
ICByOCwgIzQ2Mjc3CiAgICAweGI0YzVlY2NhOiAgICBtb3YgICAgbHIsIHI4CiAgICAweGI0YzVl
Y2NjOiAgICBtb3Z3ICAgcjEyLCAjMTU5NjkKICAgIDB4YjRjNWVjZDA6ICAgIG1vdnQgICByMTIs
ICM0NjgzMgogICAgMHhiNGM1ZWNkNDogICAgYnggICAgIHIxMgpMaW5raW5nIHBvbHltb3JwaGlj
IGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGlu
ZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJjODAg
KDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsg
RXhlY3V0YWJsZTogI0FNSXlUZjpbMHhiNDc5MjU4MC0+MHhiNDdkNGRjMCwgTExJbnRGdW5jdGlv
bkNhbGwsIDYxXSksIGNvZGVCbG9jayA9ICNBTUl5VGY6WzB4YjQ3OTI1ODAtPjB4YjQ3ZDRkYzAs
IExMSW50RnVuY3Rpb25DYWxsLCA2MV0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9i
YWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRd
IGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYmMwICgweGI0N2Y3MDkwOltG
dW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICND
WVZUbFc6WzB4YjQ3OTI0MzAtPjB4YjQ3ZDRjYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2NF0pLCBj
b2RlQmxvY2sgPSAjQ1lWVGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0Y2MwLCBMTEludEZ1bmN0aW9u
Q2FsbCwgNjRdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4
YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRv
IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmIwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBO
b25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQlF5SXRGOlsweGI0Nzky
MmUwLT4weGI0N2Q0YmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0JR
eUl0RjpbMHhiNDc5MjJlMC0+MHhiNDdkNGJjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXQpMaW5r
aW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0
N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENl
bGw6IDB4YjQ3OWJhNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3Rv
OjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FVaEZIVzpbMHhiNDc5MjE5MC0+MHhiNDdkNGFj
MCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNBVWhGSFc6WzB4YjQ3OTIx
OTAtPjB4YjQ3ZDRhYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0KTGlua2luZyBwb2x5bW9ycGhp
YyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxp
bmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliOTgw
ICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7
IEV4ZWN1dGFibGU6ICNEOE00MFk6WzB4YjQ3OTIwNDAtPjB4YjQ3ZDQ5YzAsIExMSW50RnVuY3Rp
b25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjRDhNNDBZOlsweGI0NzkyMDQwLT4weGI0N2Q0OWMw
LCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xv
YmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0
XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YjhjMCAoMHhiNDdmNzA5MDpb
RnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAj
QlhHSzBEOlsweGI0NzkxZWYwLT4weGI0N2Q0OGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwg
Y29kZUJsb2NrID0gI0JYR0swRDpbMHhiNDc5MWVmMC0+MHhiNDdkNDhjMCwgTExJbnRGdW5jdGlv
bkNhbGwsIDcwXQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsw
eGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0
byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWI4MDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwg
Tm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0RrMUU5ZTpbMHhiNDc5
MWRhMC0+MHhiNDdkNDdjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNE
azFFOWU6WzB4YjQ3OTFkYTAtPjB4YjQ3ZDQ3YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0KTGlu
a2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhi
NDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBD
ZWxsOiAweGI0NzliNzQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90
bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFaktLZW46WzB4YjQ3OTFjNTAtPjB4YjQ3ZDQ2
YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjRWpLS2VuOlsweGI0Nzkx
YzUwLT4weGI0N2Q0NmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdCkxpbmtpbmcgcG9seW1vcnBo
aWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2Vs
aW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YjY4
MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0p
OyBFeGVjdXRhYmxlOiAjRWdVNHRsOlsweGI0NzkxYjAwLT4weGI0N2Q0NWMwLCBMTEludEZ1bmN0
aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0VnVTR0bDpbMHhiNDc5MWIwMC0+MHhiNDdkNDVj
MCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIFZpcnR1YWwg
Y2FsbCBzbG93IHBhdGggdGh1bms6CiAgICBDb2RlIGF0IFsweGI0YzVlY2UxLCAweGI0YzVlZGEx
KToKICAgIDB4YjRjNWVjZTA6ICAgIGxkciAgICByMTIsIFtyMiwgIzUyXQogICAgMHhiNGM1ZWNl
NDogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZWNlODogICAgc3RyICAgIHIxMiwg
W3IyLCAjNTJdCiAgICAweGI0YzVlY2VjOiAgICBjbW4gICAgcjEsICM1CiAgICAweGI0YzVlY2Yw
OiAgICBibmUgICAgMHhiNGM1ZWQwOAogICAgMHhiNGM1ZWNmMjogICAgbGRyYiAgIHI2LCBbcjAs
ICM1XQogICAgMHhiNGM1ZWNmNDogICAgY21wICAgIHIyLCAjMjMKICAgIDB4YjRjNWVjZjY6ICAg
IGJuZSAgICAweGI0YzVlZDA4CiAgICAweGI0YzVlY2Y4OiAgICBsZHIgICAgcjgsIFtyMCwgIzIw
XQogICAgMHhiNGM1ZWNmYzogICAgbGRyICAgIHI4LCBbcjgsICMyOF0KICAgIDB4YjRjNWVkMDA6
ICAgIHRzdCAgICByOCwgcjgKICAgIDB4YjRjNWVkMDQ6ICAgIGJlcSAgICAweGI0YzVlZDA4CiAg
ICAweGI0YzVlZDA2OiAgICBieCAgICAgcjgKICAgIDB4YjRjNWVkMDg6ICAgIHB1c2ggICB7cjcs
IGxyfQogICAgMHhiNGM1ZWQwYzogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNGM1ZWQwZTogICAg
bW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjRjNWVkMTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAweGI0YzVlZDE2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjRjNWVkMTg6ICAgIG12biAg
ICByMTIsICMyMwogICAgMHhiNGM1ZWQxYzogICAgbW92ICAgIHNwLCBzcAogICAgMHhiNGM1ZWQx
ZTogICAgYWRkICAgIHNwLCByMTIKICAgIDB4YjRjNWVkMjA6ICAgIG1vdiAgICByMSwgcjIKICAg
IDB4YjRjNWVkMjI6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjRjNWVkMjQ6ICAgIG1vdncgICBy
NCwgIzUxMjc3CiAgICAweGI0YzVlZDI4OiAgICBtb3Z0ICAgcjQsICM0Njc3NgogICAgMHhiNGM1
ZWQyYzogICAgYmx4ICAgIHI0CiAgICAweGI0YzVlZDJlOiAgICBhZGQgICAgc3AsIHNwLCAjNgog
ICAgMHhiNGM1ZWQzMDogICAgbW92ICAgIHNwLCByNwogICAgMHhiNGM1ZWQzMjogICAgcG9wICAg
IHtyNywgbHJ9CiAgICAweGI0YzVlZDM2OiAgICB0c3QgICAgcjEsIHIxCiAgICAweGI0YzVlZDM4
OiAgICBiZXEgICAgMHhiNGM1ZWQ4OAogICAgMHhiNGM1ZWQzYTogICAgbW92ICAgIHI1LCBscgog
ICAgMHhiNGM1ZWQzYzogICAgbGRyICAgIHIxLCBbcjcsICMyNF0KICAgIDB4YjRjNWVkM2U6ICAg
IGxkciAgICByMywgW3I3LCAjOF0KICAgIDB4YjRjNWVkNDA6ICAgIGxkciAgICByMywgW3IzLCAj
MzJdCiAgICAweGI0YzVlZDQyOiAgICBjbXAgICAgcjMsIHIxCiAgICAweGI0YzVlZDQ0OiAgICBi
bHMgICAgMHhiNGM1ZWQ0OAogICAgMHhiNGM1ZWQ0NjogICAgbW92ICAgIHIxLCByMwogICAgMHhi
NGM1ZWQ0ODogICAgYWRkcyAgIHIxLCByMSwgIzUKICAgIDB4YjRjNWVkNGE6ICAgIG12biAgICBy
MTIsICMxCiAgICAweGI0YzVlZDRlOiAgICBhbmQgICAgcjEsIHIxLCByMTIKICAgIDB4YjRjNWVk
NTI6ICAgIG1vdiAgICByMTIsICM4CiAgICAweGI0YzVlZDU2OiAgICBzbXVsbCAgcjEsIHIxMiwg
cjEsIHIxMgogICAgMHhiNGM1ZWQ1YTogICAgYWRkcyAgIHIzLCByNywgcjEKICAgIDB4YjRjNWVk
NWM6ICAgIGxkciAgICByMSwgW3NwLCAjMTZdCiAgICAweGI0YzVlZDVlOiAgICBhZGRzICAgcjEs
IHIxLCAjNQogICAgMHhiNGM1ZWQ2MDogICAgbXZuICAgIHIxMiwgIzEKICAgIDB4YjRjNWVkNjQ6
ICAgIGFuZCAgICByMSwgcjEsIHIxMgogICAgMHhiNGM1ZWQ2ODogICAgbW92ICAgIHIxMiwgIzgK
ICAgIDB4YjRjNWVkNmM6ICAgIHNtdWxsICByMSwgcjEyLCByMSwgcjEyCiAgICAweGI0YzVlZDcw
OiAgICBsZHIgICAgbHIsIFtyNywgIzRdCiAgICAweGI0YzVlZDc0OiAgICBzdWJzICAgcjEsICM4
CiAgICAweGI0YzVlZDc2OiAgICBzdWJzICAgcjMsIHIzLCByMQogICAgMHhiNGM1ZWQ3ODogICAg
bGRyICAgIHI3LCBbcjddCiAgICAweGI0YzVlZDdhOiAgICBzdWJzICAgcjEsIHIxLCAjNAogICAg
MHhiNGM1ZWQ3YzogICAgbGRyICAgIHIyLCBbc3AsIHIxXQogICAgMHhiNGM1ZWQ4MDogICAgc3Ry
ICAgIHIyLCBbcjMsIHIxXQogICAgMHhiNGM1ZWQ4MjogICAgdHN0ICAgIHIxLCByMQogICAgMHhi
NGM1ZWQ4NDogICAgYm5lICAgIDB4YjRjNWVmN2EKICAgIDB4YjRjNWVkODY6ICAgIG1vdiAgICBz
cCwgcjMKICAgIDB4YjRjNWVkODg6ICAgIGJ4ICAgICByMApDbGVhcmluZyBjYWxsIGxpbmsgaW5m
byBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5
LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxsIGxpbmsg
aW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVl
MjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxsIGxp
bmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0
YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxs
IGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAw
eGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBj
YWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUg
PSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmlu
ZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFi
bGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVh
cmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1
dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpD
bGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4
ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQx
MQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIFBvbHltb3JwaGljIGNhbGwgc3R1YiBmb3IgPGdsb2Jh
bD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0s
IHJldHVybiBwb2ludCAweGI0YzVlMDE5LCB0YXJnZXRzIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBD
ZWxsOiAweGI0N2YwNDQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90
bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBclpuT2w6WzB4YjQ3OTE3MTAtPjB4YjQ3ZDU3
NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQXJabk9sOlsweGI0Nzkx
NzEwLT4weGI0N2Q1NzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAoRnVu
Y3Rpb246IENlbGw6IDB4YjQ3ZjAzODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJy
YXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0VhR2ZHNDpbMHhiNDc5MTVjMC0+
MHhiNDdkNTY0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNFYUdmRzQ6
WzB4YjQ3OTE1YzAtPjB4YjQ3ZDU2NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10+OgogICAgQ29k
ZSBhdCBbMHhiNmYwMmY4MSwgMHhiNmYwMzAyMSk6CiAgICAweGI2ZjAyZjgwOiAgICBtb3Z3ICAg
cjEsICM2NDYzMgogICAgMHhiNmYwMmY4NDogICAgbW92dCAgIHIxLCAjMTg2CiAgICAweGI2ZjAy
Zjg4OiAgICBtb3Z3ICAgcjEyLCAjMTA4OAogICAgMHhiNmYwMmY4YzogICAgbW92dCAgIHIxMiwg
IzQ2MjA3CiAgICAweGI2ZjAyZjkwOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNmYwMmY5NDog
ICAgYm5lICAgIDB4YjZmMDJmYjYKICAgIDB4YjZmMDJmOTY6ICAgIGxkciAgICByMTIsIFtyMV0K
ICAgIDB4YjZmMDJmOWE6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjZmMDJmOWU6ICAg
IHN0ciAgICByMTIsIFtyMV0KICAgIDB4YjZmMDJmYTI6ICAgIG1vdncgICByMTIsICMzMTEzNwog
ICAgMHhiNmYwMmZhNjogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI2ZjAyZmFhOiAgICBi
bHggICAgcjEyCiAgICAweGI2ZjAyZmFjOiAgICBtb3Z3ICAgcjEyLCAjNDgyNzEKICAgIDB4YjZm
MDJmYjA6ICAgIG1vdnQgICByMTIsICM0NjI3NwogICAgMHhiNmYwMmZiNDogICAgYnggICAgIHIx
MgogICAgMHhiNmYwMmZiNjogICAgbW92dyAgIHIxMiwgIzg5NgogICAgMHhiNmYwMmZiYTogICAg
bW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI2ZjAyZmJlOiAgICBjbXAgICAgcjAsIHIxMgogICAg
MHhiNmYwMmZjMjogICAgYm5lICAgIDB4YjZmMDJmZTQKICAgIDB4YjZmMDJmYzQ6ICAgIGxkciAg
ICByMTIsIFtyMSwgIzRdCiAgICAweGI2ZjAyZmM4OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAg
ICAweGI2ZjAyZmNjOiAgICBzdHIgICAgcjEyLCBbcjEsICM0XQogICAgMHhiNmYwMmZkMDogICAg
bW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI2ZjAyZmQ0OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIK
ICAgIDB4YjZmMDJmZDg6ICAgIGJseCAgICByMTIKICAgIDB4YjZmMDJmZGE6ICAgIG1vdncgICBy
MTIsICM0ODI3MQogICAgMHhiNmYwMmZkZTogICAgbW92dCAgIHIxMiwgIzQ2Mjc3CiAgICAweGI2
ZjAyZmUyOiAgICBieCAgICAgcjEyCiAgICAweGI2ZjAyZmU0OiAgICBtdm4gICAgcjEsICM0CiAg
ICAweGI2ZjAyZmU4OiAgICBtb3Z3ICAgcjIsICM0NTM0NAogICAgMHhiNmYwMmZlYzogICAgbW92
dCAgIHIyLCAjNDYyNjMKICAgIDB4YjZmMDJmZjA6ICAgIG1vdncgICByOCwgIzU3MzY5CiAgICAw
eGI2ZjAyZmY0OiAgICBtb3Z0ICAgcjgsICM0NjI3NwogICAgMHhiNmYwMmZmODogICAgbW92ICAg
IGxyLCByOAogICAgMHhiNmYwMmZmYTogICAgbm9wICAgIAogICAgMHhiNmYwMmZmYzogICAgbm9w
ICAgIAogICAgMHhiNmYwMzAwMDogICAgYiAgICAgIDB4YjY3MDNlNjAKTGlua2luZyBwb2x5bW9y
cGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFz
ZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2Yw
NDQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUw
XSk7IEV4ZWN1dGFibGU6ICNBclpuT2w6WzB4YjQ3OTE3MTAtPjB4YjQ3ZDU3NDAsIExMSW50RnVu
Y3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQXJabk9sOlsweGI0NzkxNzEwLT4weGI0N2Q1
NzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8
Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAx
NTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDM4MCAoMHhiNDdmNzA5
MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxl
OiAjRWFHZkc0OlsweGI0NzkxNWMwLT4weGI0N2Q1NjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDdd
KSwgY29kZUJsb2NrID0gI0VhR2ZHNDpbMHhiNDc5MTVjMC0+MHhiNDdkNTY0MCwgTExJbnRGdW5j
dGlvbkNhbGwsIDQ3XQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIFZpcnR1YWwgY2FsbCBzbG93IHBh
dGggdGh1bms6CiAgICBDb2RlIGF0IFsweGI0YzVlZGExLCAweGI0YzVlZTYxKToKICAgIDB4YjRj
NWVkYTA6ICAgIGxkciAgICByMTIsIFtyMiwgIzUyXQogICAgMHhiNGM1ZWRhNDogICAgYWRkdyAg
IHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZWRhODogICAgc3RyICAgIHIxMiwgW3IyLCAjNTJdCiAg
ICAweGI0YzVlZGFjOiAgICBjbW4gICAgcjEsICM1CiAgICAweGI0YzVlZGIwOiAgICBibmUgICAg
MHhiNGM1ZWRjOAogICAgMHhiNGM1ZWRiMjogICAgbGRyYiAgIHI2LCBbcjAsICM1XQogICAgMHhi
NGM1ZWRiNDogICAgY21wICAgIHIyLCAjMjMKICAgIDB4YjRjNWVkYjY6ICAgIGJuZSAgICAweGI0
YzVlZGM4CiAgICAweGI0YzVlZGI4OiAgICBsZHIgICAgcjgsIFtyMCwgIzIwXQogICAgMHhiNGM1
ZWRiYzogICAgbGRyICAgIHI4LCBbcjgsICMyOF0KICAgIDB4YjRjNWVkYzA6ICAgIHRzdCAgICBy
OCwgcjgKICAgIDB4YjRjNWVkYzQ6ICAgIGJlcSAgICAweGI0YzVlZGM4CiAgICAweGI0YzVlZGM2
OiAgICBieCAgICAgcjgKICAgIDB4YjRjNWVkYzg6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhi
NGM1ZWRjYzogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNGM1ZWRjZTogICAgbW92dyAgIHI2LCAj
NDIxMjgKICAgIDB4YjRjNWVkZDI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI0YzVlZGQ2
OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjRjNWVkZDg6ICAgIG12biAgICByMTIsICMyMwog
ICAgMHhiNGM1ZWRkYzogICAgbW92ICAgIHNwLCBzcAogICAgMHhiNGM1ZWRkZTogICAgYWRkICAg
IHNwLCByMTIKICAgIDB4YjRjNWVkZTA6ICAgIG1vdiAgICByMSwgcjIKICAgIDB4YjRjNWVkZTI6
ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjRjNWVkZTQ6ICAgIG1vdncgICByNCwgIzUxMjc3CiAg
ICAweGI0YzVlZGU4OiAgICBtb3Z0ICAgcjQsICM0Njc3NgogICAgMHhiNGM1ZWRlYzogICAgYmx4
ICAgIHI0CiAgICAweGI0YzVlZGVlOiAgICBhZGQgICAgc3AsIHNwLCAjNgogICAgMHhiNGM1ZWRm
MDogICAgbW92ICAgIHNwLCByNwogICAgMHhiNGM1ZWRmMjogICAgcG9wICAgIHtyNywgbHJ9CiAg
ICAweGI0YzVlZGY2OiAgICB0c3QgICAgcjEsIHIxCiAgICAweGI0YzVlZGY4OiAgICBiZXEgICAg
MHhiNGM1ZWU0OAogICAgMHhiNGM1ZWRmYTogICAgbW92ICAgIHI1LCBscgogICAgMHhiNGM1ZWRm
YzogICAgbGRyICAgIHIxLCBbcjcsICMyNF0KICAgIDB4YjRjNWVkZmU6ICAgIGxkciAgICByMywg
W3I3LCAjOF0KICAgIDB4YjRjNWVlMDA6ICAgIGxkciAgICByMywgW3IzLCAjMzJdCiAgICAweGI0
YzVlZTAyOiAgICBjbXAgICAgcjMsIHIxCiAgICAweGI0YzVlZTA0OiAgICBibHMgICAgMHhiNGM1
ZWUwOAogICAgMHhiNGM1ZWUwNjogICAgbW92ICAgIHIxLCByMwogICAgMHhiNGM1ZWUwODogICAg
YWRkcyAgIHIxLCByMSwgIzUKICAgIDB4YjRjNWVlMGE6ICAgIG12biAgICByMTIsICMxCiAgICAw
eGI0YzVlZTBlOiAgICBhbmQgICAgcjEsIHIxLCByMTIKICAgIDB4YjRjNWVlMTI6ICAgIG1vdiAg
ICByMTIsICM4CiAgICAweGI0YzVlZTE2OiAgICBzbXVsbCAgcjEsIHIxMiwgcjEsIHIxMgogICAg
MHhiNGM1ZWUxYTogICAgYWRkcyAgIHIzLCByNywgcjEKICAgIDB4YjRjNWVlMWM6ICAgIGxkciAg
ICByMSwgW3NwLCAjMTZdCiAgICAweGI0YzVlZTFlOiAgICBhZGRzICAgcjEsIHIxLCAjNQogICAg
MHhiNGM1ZWUyMDogICAgbXZuICAgIHIxMiwgIzEKICAgIDB4YjRjNWVlMjQ6ICAgIGFuZCAgICBy
MSwgcjEsIHIxMgogICAgMHhiNGM1ZWUyODogICAgbW92ICAgIHIxMiwgIzgKICAgIDB4YjRjNWVl
MmM6ICAgIHNtdWxsICByMSwgcjEyLCByMSwgcjEyCiAgICAweGI0YzVlZTMwOiAgICBsZHIgICAg
bHIsIFtyNywgIzRdCiAgICAweGI0YzVlZTM0OiAgICBzdWJzICAgcjEsICM4CiAgICAweGI0YzVl
ZTM2OiAgICBzdWJzICAgcjMsIHIzLCByMQogICAgMHhiNGM1ZWUzODogICAgbGRyICAgIHI3LCBb
cjddCiAgICAweGI0YzVlZTNhOiAgICBzdWJzICAgcjEsIHIxLCAjNAogICAgMHhiNGM1ZWUzYzog
ICAgbGRyICAgIHIyLCBbc3AsIHIxXQogICAgMHhiNGM1ZWU0MDogICAgc3RyICAgIHIyLCBbcjMs
IHIxXQogICAgMHhiNGM1ZWU0MjogICAgdHN0ICAgIHIxLCByMQogICAgMHhiNGM1ZWU0NDogICAg
Ym5lICAgIDB4YjRjNWYwM2EKICAgIDB4YjRjNWVlNDY6ICAgIG1vdiAgICBzcCwgcjMKICAgIDB4
YjRjNWVlNDg6ICAgIGJ4ICAgICByMApHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIFBvbHltb3JwaGlj
IGNhbGwgc3R1YiBmb3IgPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBC
YXNlbGluZUdsb2JhbCwgMTU1NF0sIHJldHVybiBwb2ludCAweGI0YzVlMjE5LCB0YXJnZXRzIDx2
YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYzgwICgweGI0N2Y3MDkwOltGdW5jdGlv
biwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBTUl5VGY6
WzB4YjQ3OTI1ODAtPjB4YjQ3ZDRkYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2MV0pLCBjb2RlQmxv
Y2sgPSAjQU1JeVRmOlsweGI0NzkyNTgwLT4weGI0N2Q0ZGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NjFdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJiYzAgKDB4YjQ3ZjcwOTA6
W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTog
I0NZVlRsVzpbMHhiNDc5MjQzMC0+MHhiNDdkNGNjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDY0XSks
IGNvZGVCbG9jayA9ICNDWVZUbFc6WzB4YjQ3OTI0MzAtPjB4YjQ3ZDRjYzAsIExMSW50RnVuY3Rp
b25DYWxsLCA2NF0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmIwMCAoMHhi
NDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVj
dXRhYmxlOiAjQlF5SXRGOlsweGI0NzkyMmUwLT4weGI0N2Q0YmMwLCBMTEludEZ1bmN0aW9uQ2Fs
bCwgNzBdKSwgY29kZUJsb2NrID0gI0JReUl0RjpbMHhiNDc5MjJlMC0+MHhiNDdkNGJjMCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDcwXT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0Nzli
YTQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUw
XSk7IEV4ZWN1dGFibGU6ICNBVWhGSFc6WzB4YjQ3OTIxOTAtPjB4YjQ3ZDRhYzAsIExMSW50RnVu
Y3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjQVVoRkhXOlsweGI0NzkyMTkwLT4weGI0N2Q0
YWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6
IDB4YjQ3OWI5ODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4
YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0Q4TTQwWTpbMHhiNDc5MjA0MC0+MHhiNDdkNDljMCwg
TExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNEOE00MFk6WzB4YjQ3OTIwNDAt
PjB4YjQ3ZDQ5YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0+LCA8dmFyaWFudCA9IChGdW5jdGlv
bjogQ2VsbDogMHhiNDc5YjhjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwg
UHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQlhHSzBEOlsweGI0NzkxZWYwLT4weGI0
N2Q0OGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0JYR0swRDpbMHhi
NDc5MWVmMC0+MHhiNDdkNDhjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXT4sIDx2YXJpYW50ID0g
KEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliODAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5v
bkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNEazFFOWU6WzB4YjQ3OTFk
YTAtPjB4YjQ3ZDQ3YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjRGsx
RTllOlsweGI0NzkxZGEwLT4weGI0N2Q0N2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdPiwgPHZh
cmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWI3NDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9u
LCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0VqS0tlbjpb
MHhiNDc5MWM1MC0+MHhiNDdkNDZjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9j
ayA9ICNFaktLZW46WzB4YjQ3OTFjNTAtPjB4YjQ3ZDQ2YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3
MF0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YjY4MCAoMHhiNDdmNzA5MDpb
RnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAj
RWdVNHRsOlsweGI0NzkxYjAwLT4weGI0N2Q0NWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwg
Y29kZUJsb2NrID0gI0VnVTR0bDpbMHhiNDc5MWIwMC0+MHhiNDdkNDVjMCwgTExJbnRGdW5jdGlv
bkNhbGwsIDcwXT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwNTgwICgweGI0
N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1
dGFibGU6ICNEbEo4THI6WzB4YjQ3OTMzZjAtPjB4YjQ3ZDU4YzAsIExMSW50RnVuY3Rpb25DYWxs
LCA0OV0pLCBjb2RlQmxvY2sgPSAjRGxKOExyOlsweGI0NzkzM2YwLT4weGI0N2Q1OGMwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNDldPjoKICAgIENvZGUgYXQgWzB4YjRjNjBkNjEsIDB4YjRjNjBmYTEp
OgogICAgMHhiNGM2MGQ2MDogICAgbW92dyAgIHIxLCAjNjQzNjAKICAgIDB4YjRjNjBkNjQ6ICAg
IG1vdnQgICByMSwgIzE4NgogICAgMHhiNGM2MGQ2ODogICAgbW92dyAgIHIxMiwgIzQ3NjgwCiAg
ICAweGI0YzYwZDZjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNjBkNzA6ICAgIGNt
cCAgICByMCwgcjEyCiAgICAweGI0YzYwZDc0OiAgICBibHQgICAgMHhiNGM2MGU3MAogICAgMHhi
NGM2MGQ3ODogICAgbW92dyAgIHIxMiwgIzQ4MjU2CiAgICAweGI0YzYwZDdjOiAgICBtb3Z0ICAg
cjEyLCAjNDYyMDEKICAgIDB4YjRjNjBkODA6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzYw
ZDg0OiAgICBibHQgICAgMHhiNGM2MGRlNAogICAgMHhiNGM2MGQ4NjogICAgbW92dyAgIHIxMiwg
IzE0MDgKICAgIDB4YjRjNjBkOGE6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM2MGQ4
ZTogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNjBkOTI6ICAgIGJuZSAgICAweGI0YzYwZGI0
CiAgICAweGI0YzYwZDk0OiAgICBsZHIgICAgcjEyLCBbcjEsICMzNl0KICAgIDB4YjRjNjBkOTg6
ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNjBkOWM6ICAgIHN0ciAgICByMTIsIFty
MSwgIzM2XQogICAgMHhiNGM2MGRhMDogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzYw
ZGE0OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjBkYTg6ICAgIGJseCAgICByMTIK
ICAgIDB4YjRjNjBkYWE6ICAgIG5vcCAgICAKICAgIDB4YjRjNjBkYWM6ICAgIG5vcCAgICAKICAg
IDB4YjRjNjBkYjA6ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0YzYwZGI0OiAgICBtb3Z3
ICAgcjEyLCAjNDgyNTYKICAgIDB4YjRjNjBkYjg6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAg
MHhiNGM2MGRiYzogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNjBkYzA6ICAgIGJuZSAgICAw
eGI0YzYwZjY0CiAgICAweGI0YzYwZGM0OiAgICBsZHIgICAgcjEyLCBbcjFdCiAgICAweGI0YzYw
ZGM4OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzYwZGNjOiAgICBzdHIgICAgcjEy
LCBbcjFdCiAgICAweGI0YzYwZGQwOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNjBk
ZDQ6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM2MGRkODogICAgYmx4ICAgIHIxMgog
ICAgMHhiNGM2MGRkYTogICAgbm9wICAgIAogICAgMHhiNGM2MGRkYzogICAgbm9wICAgIAogICAg
MHhiNGM2MGRlMDogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNjBkZTQ6ICAgIG1vdncg
ICByMTIsICM0ODA2NAogICAgMHhiNGM2MGRlODogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAw
eGI0YzYwZGVjOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM2MGRmMDogICAgYm5lICAgIDB4
YjRjNjBlMTIKICAgIDB4YjRjNjBkZjI6ICAgIGxkciAgICByMTIsIFtyMSwgIzRdCiAgICAweGI0
YzYwZGY2OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzYwZGZhOiAgICBzdHIgICAg
cjEyLCBbcjEsICM0XQogICAgMHhiNGM2MGRmZTogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAw
eGI0YzYwZTAyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjBlMDY6ICAgIGJseCAg
ICByMTIKICAgIDB4YjRjNjBlMDg6ICAgIG5vcCAgICAKICAgIDB4YjRjNjBlMGE6ICAgIG5vcCAg
ICAKICAgIDB4YjRjNjBlMGU6ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0YzYwZTEyOiAg
ICBtb3Z3ICAgcjEyLCAjNDc2ODAKICAgIDB4YjRjNjBlMTY6ICAgIG1vdnQgICByMTIsICM0NjIw
MQogICAgMHhiNGM2MGUxYTogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNjBlMWU6ICAgIGJu
ZSAgICAweGI0YzYwZTQwCiAgICAweGI0YzYwZTIwOiAgICBsZHIgICAgcjEyLCBbcjEsICMxMl0K
ICAgIDB4YjRjNjBlMjQ6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNjBlMjg6ICAg
IHN0ciAgICByMTIsIFtyMSwgIzEyXQogICAgMHhiNGM2MGUyYzogICAgbW92dyAgIHIxMiwgIzMx
MTM3CiAgICAweGI0YzYwZTMwOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjBlMzQ6
ICAgIGJseCAgICByMTIKICAgIDB4YjRjNjBlMzY6ICAgIG5vcCAgICAKICAgIDB4YjRjNjBlMzg6
ICAgIG5vcCAgICAKICAgIDB4YjRjNjBlM2M6ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0
YzYwZTQwOiAgICBtb3Z3ICAgcjEyLCAjNDc4NzIKICAgIDB4YjRjNjBlNDQ6ICAgIG1vdnQgICBy
MTIsICM0NjIwMQogICAgMHhiNGM2MGU0ODogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNjBl
NGM6ICAgIGJuZSAgICAweGI0YzYwZjY0CiAgICAweGI0YzYwZTUwOiAgICBsZHIgICAgcjEyLCBb
cjEsICM4XQogICAgMHhiNGM2MGU1NDogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM2
MGU1ODogICAgc3RyICAgIHIxMiwgW3IxLCAjOF0KICAgIDB4YjRjNjBlNWM6ICAgIG1vdncgICBy
MTIsICMzMTEzNwogICAgMHhiNGM2MGU2MDogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0
YzYwZTY0OiAgICBibHggICAgcjEyCiAgICAweGI0YzYwZTY2OiAgICBub3AgICAgCiAgICAweGI0
YzYwZTY4OiAgICBub3AgICAgCiAgICAweGI0YzYwZTZjOiAgICBiICAgICAgMHhiNGM1YmY2Ngog
ICAgMHhiNGM2MGU3MDogICAgbW92dyAgIHIxMiwgIzQ3MTA0CiAgICAweGI0YzYwZTc0OiAgICBt
b3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNjBlNzg6ICAgIGNtcCAgICByMCwgcjEyCiAgICAw
eGI0YzYwZTdjOiAgICBibHQgICAgMHhiNGM2MGYwOAogICAgMHhiNGM2MGU3ZTogICAgbW92dyAg
IHIxMiwgIzQ3MTA0CiAgICAweGI0YzYwZTgyOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4
YjRjNjBlODY6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzYwZThhOiAgICBibmUgICAgMHhi
NGM2MGVhYwogICAgMHhiNGM2MGU4YzogICAgbGRyICAgIHIxMiwgW3IxLCAjMjRdCiAgICAweGI0
YzYwZTkwOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzYwZTk0OiAgICBzdHIgICAg
cjEyLCBbcjEsICMyNF0KICAgIDB4YjRjNjBlOTg6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAg
MHhiNGM2MGU5YzogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzYwZWEwOiAgICBibHgg
ICAgcjEyCiAgICAweGI0YzYwZWEyOiAgICBub3AgICAgCiAgICAweGI0YzYwZWE0OiAgICBub3Ag
ICAgCiAgICAweGI0YzYwZWE4OiAgICBiICAgICAgMHhiNGM1YmY2NgogICAgMHhiNGM2MGVhYzog
ICAgbW92dyAgIHIxMiwgIzQ3NDg4CiAgICAweGI0YzYwZWIwOiAgICBtb3Z0ICAgcjEyLCAjNDYy
MDEKICAgIDB4YjRjNjBlYjQ6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzYwZWI4OiAgICBi
bmUgICAgMHhiNGM2MGVkYQogICAgMHhiNGM2MGViYTogICAgbGRyICAgIHIxMiwgW3IxLCAjMTZd
CiAgICAweGI0YzYwZWJlOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzYwZWMyOiAg
ICBzdHIgICAgcjEyLCBbcjEsICMxNl0KICAgIDB4YjRjNjBlYzY6ICAgIG1vdncgICByMTIsICMz
MTEzNwogICAgMHhiNGM2MGVjYTogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzYwZWNl
OiAgICBibHggICAgcjEyCiAgICAweGI0YzYwZWQwOiAgICBub3AgICAgCiAgICAweGI0YzYwZWQy
OiAgICBub3AgICAgCiAgICAweGI0YzYwZWQ2OiAgICBiICAgICAgMHhiNGM1YmY2NgogICAgMHhi
NGM2MGVkYTogICAgbW92dyAgIHIxMiwgIzQ3Mjk2CiAgICAweGI0YzYwZWRlOiAgICBtb3Z0ICAg
cjEyLCAjNDYyMDEKICAgIDB4YjRjNjBlZTI6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzYw
ZWU2OiAgICBibmUgICAgMHhiNGM2MGY2NAogICAgMHhiNGM2MGVlODogICAgbGRyICAgIHIxMiwg
W3IxLCAjMjBdCiAgICAweGI0YzYwZWVjOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0
YzYwZWYwOiAgICBzdHIgICAgcjEyLCBbcjEsICMyMF0KICAgIDB4YjRjNjBlZjQ6ICAgIG1vdncg
ICByMTIsICMzMTEzNwogICAgMHhiNGM2MGVmODogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAw
eGI0YzYwZWZjOiAgICBibHggICAgcjEyCiAgICAweGI0YzYwZWZlOiAgICBub3AgICAgCiAgICAw
eGI0YzYwZjAwOiAgICBub3AgICAgCiAgICAweGI0YzYwZjA0OiAgICBiICAgICAgMHhiNGM1YmY2
NgogICAgMHhiNGM2MGYwODogICAgbW92dyAgIHIxMiwgIzQ2OTEyCiAgICAweGI0YzYwZjBjOiAg
ICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNjBmMTA6ICAgIGNtcCAgICByMCwgcjEyCiAg
ICAweGI0YzYwZjE0OiAgICBibmUgICAgMHhiNGM2MGYzNgogICAgMHhiNGM2MGYxNjogICAgbGRy
ICAgIHIxMiwgW3IxLCAjMjhdCiAgICAweGI0YzYwZjFhOiAgICBhZGR3ICAgcjEyLCByMTIsICMx
CiAgICAweGI0YzYwZjFlOiAgICBzdHIgICAgcjEyLCBbcjEsICMyOF0KICAgIDB4YjRjNjBmMjI6
ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM2MGYyNjogICAgbW92dCAgIHIxMiwgIzQ2
ODMyCiAgICAweGI0YzYwZjJhOiAgICBibHggICAgcjEyCiAgICAweGI0YzYwZjJjOiAgICBub3Ag
ICAgCiAgICAweGI0YzYwZjJlOiAgICBub3AgICAgCiAgICAweGI0YzYwZjMyOiAgICBiICAgICAg
MHhiNGM1YmY2NgogICAgMHhiNGM2MGYzNjogICAgbW92dyAgIHIxMiwgIzQ2NzIwCiAgICAweGI0
YzYwZjNhOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNjBmM2U6ICAgIGNtcCAgICBy
MCwgcjEyCiAgICAweGI0YzYwZjQyOiAgICBibmUgICAgMHhiNGM2MGY2NAogICAgMHhiNGM2MGY0
NDogICAgbGRyICAgIHIxMiwgW3IxLCAjMzJdCiAgICAweGI0YzYwZjQ4OiAgICBhZGR3ICAgcjEy
LCByMTIsICMxCiAgICAweGI0YzYwZjRjOiAgICBzdHIgICAgcjEyLCBbcjEsICMzMl0KICAgIDB4
YjRjNjBmNTA6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM2MGY1NDogICAgbW92dCAg
IHIxMiwgIzQ2ODMyCiAgICAweGI0YzYwZjU4OiAgICBibHggICAgcjEyCiAgICAweGI0YzYwZjVh
OiAgICBub3AgICAgCiAgICAweGI0YzYwZjVjOiAgICBub3AgICAgCiAgICAweGI0YzYwZjYwOiAg
ICBiICAgICAgMHhiNGM1YmY2NgogICAgMHhiNGM2MGY2NDogICAgbXZuICAgIHIxLCAjNAogICAg
MHhiNGM2MGY2ODogICAgbW92dyAgIHIyLCAjNDU0ODgKICAgIDB4YjRjNjBmNmM6ICAgIG1vdnQg
ICByMiwgIzQ2MjYzCiAgICAweGI0YzYwZjcwOiAgICBtb3Z3ICAgcjgsICM1Nzg4MQogICAgMHhi
NGM2MGY3NDogICAgbW92dCAgIHI4LCAjNDYyNzcKICAgIDB4YjRjNjBmNzg6ICAgIG1vdiAgICBs
ciwgcjgKICAgIDB4YjRjNjBmN2E6ICAgIG1vdncgICByMTIsICMxNTk2OQogICAgMHhiNGM2MGY3
ZTogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzYwZjgyOiAgICBieCAgICAgcjEyCkxp
bmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4
YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjog
Q2VsbDogMHhiNDc5YmM4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJv
dG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQU1JeVRmOlsweGI0NzkyNTgwLT4weGI0N2Q0
ZGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjFdKSwgY29kZUJsb2NrID0gI0FNSXlUZjpbMHhiNDc5
MjU4MC0+MHhiNDdkNGRjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDYxXQpMaW5raW5nIHBvbHltb3Jw
aGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNl
bGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJi
YzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBd
KTsgRXhlY3V0YWJsZTogI0NZVlRsVzpbMHhiNDc5MjQzMC0+MHhiNDdkNGNjMCwgTExJbnRGdW5j
dGlvbkNhbGwsIDY0XSksIGNvZGVCbG9jayA9ICNDWVZUbFc6WzB4YjQ3OTI0MzAtPjB4YjQ3ZDRj
YzAsIExMSW50RnVuY3Rpb25DYWxsLCA2NF0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxn
bG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1
NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYjAwICgweGI0N2Y3MDkw
OltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6
ICNCUXlJdEY6WzB4YjQ3OTIyZTAtPjB4YjQ3ZDRiYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0p
LCBjb2RlQmxvY2sgPSAjQlF5SXRGOlsweGI0NzkyMmUwLT4weGI0N2Q0YmMwLCBMTEludEZ1bmN0
aW9uQ2FsbCwgNzBdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86
WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDEx
IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmE0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9
LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQVVoRkhXOlsweGI0
NzkyMTkwLT4weGI0N2Q0YWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0g
I0FVaEZIVzpbMHhiNDc5MjE5MC0+MHhiNDdkNGFjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXQpM
aW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4w
eGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246
IENlbGw6IDB4YjQ3OWI5ODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFBy
b3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0Q4TTQwWTpbMHhiNDc5MjA0MC0+MHhiNDdk
NDljMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNEOE00MFk6WzB4YjQ3
OTIwNDAtPjB4YjQ3ZDQ5YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0KTGlua2luZyBwb2x5bW9y
cGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFz
ZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0Nzli
OGMwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUw
XSk7IEV4ZWN1dGFibGU6ICNCWEdLMEQ6WzB4YjQ3OTFlZjAtPjB4YjQ3ZDQ4YzAsIExMSW50RnVu
Y3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjQlhHSzBEOlsweGI0NzkxZWYwLT4weGI0N2Q0
OGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8
Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAx
NTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YjgwMCAoMHhiNDdmNzA5
MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxl
OiAjRGsxRTllOlsweGI0NzkxZGEwLT4weGI0N2Q0N2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBd
KSwgY29kZUJsb2NrID0gI0RrMUU5ZTpbMHhiNDc5MWRhMC0+MHhiNDdkNDdjMCwgTExJbnRGdW5j
dGlvbkNhbGwsIDcwXQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklv
OlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQx
MSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWI3NDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7
fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0VqS0tlbjpbMHhi
NDc5MWM1MC0+MHhiNDdkNDZjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9
ICNFaktLZW46WzB4YjQ3OTFjNTAtPjB4YjQ3ZDQ2YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0K
TGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+
MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9u
OiBDZWxsOiAweGI0NzliNjgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQ
cm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFZ1U0dGw6WzB4YjQ3OTFiMDAtPjB4YjQ3
ZDQ1YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjRWdVNHRsOlsweGI0
NzkxYjAwLT4weGI0N2Q0NWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdCkxpbmtpbmcgcG9seW1v
cnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJh
c2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDdm
MDU4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRl
MF0pOyBFeGVjdXRhYmxlOiAjRGxKOExyOlsweGI0NzkzM2YwLT4weGI0N2Q1OGMwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNDldKSwgY29kZUJsb2NrID0gI0RsSjhMcjpbMHhiNDc5MzNmMC0+MHhiNDdk
NThjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5XQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIFZpcnR1
YWwgY2FsbCBzbG93IHBhdGggdGh1bms6CiAgICBDb2RlIGF0IFsweGI0YzVlZTYxLCAweGI0YzVl
ZjIxKToKICAgIDB4YjRjNWVlNjA6ICAgIGxkciAgICByMTIsIFtyMiwgIzUyXQogICAgMHhiNGM1
ZWU2NDogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZWU2ODogICAgc3RyICAgIHIx
MiwgW3IyLCAjNTJdCiAgICAweGI0YzVlZTZjOiAgICBjbW4gICAgcjEsICM1CiAgICAweGI0YzVl
ZTcwOiAgICBibmUgICAgMHhiNGM1ZWU4OAogICAgMHhiNGM1ZWU3MjogICAgbGRyYiAgIHI2LCBb
cjAsICM1XQogICAgMHhiNGM1ZWU3NDogICAgY21wICAgIHIyLCAjMjMKICAgIDB4YjRjNWVlNzY6
ICAgIGJuZSAgICAweGI0YzVlZTg4CiAgICAweGI0YzVlZTc4OiAgICBsZHIgICAgcjgsIFtyMCwg
IzIwXQogICAgMHhiNGM1ZWU3YzogICAgbGRyICAgIHI4LCBbcjgsICMyOF0KICAgIDB4YjRjNWVl
ODA6ICAgIHRzdCAgICByOCwgcjgKICAgIDB4YjRjNWVlODQ6ICAgIGJlcSAgICAweGI0YzVlZTg4
CiAgICAweGI0YzVlZTg2OiAgICBieCAgICAgcjgKICAgIDB4YjRjNWVlODg6ICAgIHB1c2ggICB7
cjcsIGxyfQogICAgMHhiNGM1ZWU4YzogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNGM1ZWU4ZTog
ICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjRjNWVlOTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAweGI0YzVlZTk2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjRjNWVlOTg6ICAgIG12
biAgICByMTIsICMyMwogICAgMHhiNGM1ZWU5YzogICAgbW92ICAgIHNwLCBzcAogICAgMHhiNGM1
ZWU5ZTogICAgYWRkICAgIHNwLCByMTIKICAgIDB4YjRjNWVlYTA6ICAgIG1vdiAgICByMSwgcjIK
ICAgIDB4YjRjNWVlYTI6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjRjNWVlYTQ6ICAgIG1vdncg
ICByNCwgIzUxMjc3CiAgICAweGI0YzVlZWE4OiAgICBtb3Z0ICAgcjQsICM0Njc3NgogICAgMHhi
NGM1ZWVhYzogICAgYmx4ICAgIHI0CiAgICAweGI0YzVlZWFlOiAgICBhZGQgICAgc3AsIHNwLCAj
NgogICAgMHhiNGM1ZWViMDogICAgbW92ICAgIHNwLCByNwogICAgMHhiNGM1ZWViMjogICAgcG9w
ICAgIHtyNywgbHJ9CiAgICAweGI0YzVlZWI2OiAgICB0c3QgICAgcjEsIHIxCiAgICAweGI0YzVl
ZWI4OiAgICBiZXEgICAgMHhiNGM1ZWYwOAogICAgMHhiNGM1ZWViYTogICAgbW92ICAgIHI1LCBs
cgogICAgMHhiNGM1ZWViYzogICAgbGRyICAgIHIxLCBbcjcsICMyNF0KICAgIDB4YjRjNWVlYmU6
ICAgIGxkciAgICByMywgW3I3LCAjOF0KICAgIDB4YjRjNWVlYzA6ICAgIGxkciAgICByMywgW3Iz
LCAjMzJdCiAgICAweGI0YzVlZWMyOiAgICBjbXAgICAgcjMsIHIxCiAgICAweGI0YzVlZWM0OiAg
ICBibHMgICAgMHhiNGM1ZWVjOAogICAgMHhiNGM1ZWVjNjogICAgbW92ICAgIHIxLCByMwogICAg
MHhiNGM1ZWVjODogICAgYWRkcyAgIHIxLCByMSwgIzUKICAgIDB4YjRjNWVlY2E6ICAgIG12biAg
ICByMTIsICMxCiAgICAweGI0YzVlZWNlOiAgICBhbmQgICAgcjEsIHIxLCByMTIKICAgIDB4YjRj
NWVlZDI6ICAgIG1vdiAgICByMTIsICM4CiAgICAweGI0YzVlZWQ2OiAgICBzbXVsbCAgcjEsIHIx
MiwgcjEsIHIxMgogICAgMHhiNGM1ZWVkYTogICAgYWRkcyAgIHIzLCByNywgcjEKICAgIDB4YjRj
NWVlZGM6ICAgIGxkciAgICByMSwgW3NwLCAjMTZdCiAgICAweGI0YzVlZWRlOiAgICBhZGRzICAg
cjEsIHIxLCAjNQogICAgMHhiNGM1ZWVlMDogICAgbXZuICAgIHIxMiwgIzEKICAgIDB4YjRjNWVl
ZTQ6ICAgIGFuZCAgICByMSwgcjEsIHIxMgogICAgMHhiNGM1ZWVlODogICAgbW92ICAgIHIxMiwg
IzgKICAgIDB4YjRjNWVlZWM6ICAgIHNtdWxsICByMSwgcjEyLCByMSwgcjEyCiAgICAweGI0YzVl
ZWYwOiAgICBsZHIgICAgbHIsIFtyNywgIzRdCiAgICAweGI0YzVlZWY0OiAgICBzdWJzICAgcjEs
ICM4CiAgICAweGI0YzVlZWY2OiAgICBzdWJzICAgcjMsIHIzLCByMQogICAgMHhiNGM1ZWVmODog
ICAgbGRyICAgIHI3LCBbcjddCiAgICAweGI0YzVlZWZhOiAgICBzdWJzICAgcjEsIHIxLCAjNAog
ICAgMHhiNGM1ZWVmYzogICAgbGRyICAgIHIyLCBbc3AsIHIxXQogICAgMHhiNGM1ZWYwMDogICAg
c3RyICAgIHIyLCBbcjMsIHIxXQogICAgMHhiNGM1ZWYwMjogICAgdHN0ICAgIHIxLCByMQogICAg
MHhiNGM1ZWYwNDogICAgYm5lICAgIDB4YjRjNWYwZmEKICAgIDB4YjRjNWVmMDY6ICAgIG1vdiAg
ICBzcCwgcjMKICAgIDB4YjRjNWVmMDg6ICAgIGJ4ICAgICByMApDbGVhcmluZyBjYWxsIGxpbmsg
aW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVl
MjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxsIGxp
bmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0
YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxs
IGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAw
eGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBj
YWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUg
PSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmlu
ZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFi
bGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVh
cmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1
dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpD
bGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4
ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQx
MQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRy
KGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMj
MTQxMQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2Rl
UHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwg
YmMjMTQxMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIFBvbHltb3JwaGljIGNhbGwgc3R1YiBmb3Ig
PGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwg
MTU1NF0sIHJldHVybiBwb2ludCAweGI0YzVlMjE5LCB0YXJnZXRzIDx2YXJpYW50ID0gKEZ1bmN0
aW9uOiBDZWxsOiAweGI0NzliYzgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5
LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBTUl5VGY6WzB4YjQ3OTI1ODAtPjB4
YjQ3ZDRkYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2MV0pLCBjb2RlQmxvY2sgPSAjQU1JeVRmOlsw
eGI0NzkyNTgwLT4weGI0N2Q0ZGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjFdPiwgPHZhcmlhbnQg
PSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJiYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwg
Tm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0NZVlRsVzpbMHhiNDc5
MjQzMC0+MHhiNDdkNGNjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDY0XSksIGNvZGVCbG9jayA9ICND
WVZUbFc6WzB4YjQ3OTI0MzAtPjB4YjQ3ZDRjYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2NF0+LCA8
dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmIwMCAoMHhiNDdmNzA5MDpbRnVuY3Rp
b24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQlF5SXRG
OlsweGI0NzkyMmUwLT4weGI0N2Q0YmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJs
b2NrID0gI0JReUl0RjpbMHhiNDc5MjJlMC0+MHhiNDdkNGJjMCwgTExJbnRGdW5jdGlvbkNhbGws
IDcwXT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYTQwICgweGI0N2Y3MDkw
OltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6
ICNBVWhGSFc6WzB4YjQ3OTIxOTAtPjB4YjQ3ZDRhYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0p
LCBjb2RlQmxvY2sgPSAjQVVoRkhXOlsweGI0NzkyMTkwLT4weGI0N2Q0YWMwLCBMTEludEZ1bmN0
aW9uQ2FsbCwgNzBdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWI5ODAgKDB4
YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhl
Y3V0YWJsZTogI0Q4TTQwWTpbMHhiNDc5MjA0MC0+MHhiNDdkNDljMCwgTExJbnRGdW5jdGlvbkNh
bGwsIDcwXSksIGNvZGVCbG9jayA9ICNEOE00MFk6WzB4YjQ3OTIwNDAtPjB4YjQ3ZDQ5YzAsIExM
SW50RnVuY3Rpb25DYWxsLCA3MF0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5
YjhjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRl
MF0pOyBFeGVjdXRhYmxlOiAjQlhHSzBEOlsweGI0NzkxZWYwLT4weGI0N2Q0OGMwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0JYR0swRDpbMHhiNDc5MWVmMC0+MHhiNDdk
NDhjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxs
OiAweGI0NzliODAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzow
eGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNEazFFOWU6WzB4YjQ3OTFkYTAtPjB4YjQ3ZDQ3YzAs
IExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjRGsxRTllOlsweGI0NzkxZGEw
LT4weGI0N2Q0N2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdPiwgPHZhcmlhbnQgPSAoRnVuY3Rp
b246IENlbGw6IDB4YjQ3OWI3NDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXks
IFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0VqS0tlbjpbMHhiNDc5MWM1MC0+MHhi
NDdkNDZjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNFaktLZW46WzB4
YjQ3OTFjNTAtPjB4YjQ3ZDQ2YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0+LCA8dmFyaWFudCA9
IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YjY4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBO
b25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRWdVNHRsOlsweGI0Nzkx
YjAwLT4weGI0N2Q0NWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0Vn
VTR0bDpbMHhiNDc5MWIwMC0+MHhiNDdkNDVjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXT4sIDx2
YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwNTgwICgweGI0N2Y3MDkwOltGdW5jdGlv
biwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNEbEo4THI6
WzB4YjQ3OTMzZjAtPjB4YjQ3ZDU4YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0OV0pLCBjb2RlQmxv
Y2sgPSAjRGxKOExyOlsweGI0NzkzM2YwLT4weGI0N2Q1OGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NDldPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjA0YzAgKDB4YjQ3ZjcwOTA6
W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTog
I0VaVnVHTDpbMHhiNDc5MzJhMC0+MHhiNDdkNTdjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5XSks
IGNvZGVCbG9jayA9ICNFWlZ1R0w6WzB4YjQ3OTMyYTAtPjB4YjQ3ZDU3YzAsIExMSW50RnVuY3Rp
b25DYWxsLCA0OV0+OgogICAgQ29kZSBhdCBbMHhiNGM2MGE4MSwgMHhiNGM2MGNlMSk6CiAgICAw
eGI0YzYwYTgwOiAgICBtb3Z3ICAgcjEsICM2NDY0OAogICAgMHhiNGM2MGE4NDogICAgbW92dCAg
IHIxLCAjMTg2CiAgICAweGI0YzYwYTg4OiAgICBtb3Z3ICAgcjEyLCAjNDc2ODAKICAgIDB4YjRj
NjBhOGM6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM2MGE5MDogICAgY21wICAgIHIw
LCByMTIKICAgIDB4YjRjNjBhOTQ6ICAgIGJsdCAgICAweGI0YzYwYmJlCiAgICAweGI0YzYwYTk4
OiAgICBtb3Z3ICAgcjEyLCAjNDgyNTYKICAgIDB4YjRjNjBhOWM6ICAgIG1vdnQgICByMTIsICM0
NjIwMQogICAgMHhiNGM2MGFhMDogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNjBhYTQ6ICAg
IGJsdCAgICAweGI0YzYwYjMyCiAgICAweGI0YzYwYWE2OiAgICBtb3Z3ICAgcjEyLCAjNDgyNTYK
ICAgIDB4YjRjNjBhYWE6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM2MGFhZTogICAg
Y21wICAgIHIwLCByMTIKICAgIDB4YjRjNjBhYjI6ICAgIGJuZSAgICAweGI0YzYwYWQ0CiAgICAw
eGI0YzYwYWI0OiAgICBsZHIgICAgcjEyLCBbcjFdCiAgICAweGI0YzYwYWI4OiAgICBhZGR3ICAg
cjEyLCByMTIsICMxCiAgICAweGI0YzYwYWJjOiAgICBzdHIgICAgcjEyLCBbcjFdCiAgICAweGI0
YzYwYWMwOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNjBhYzQ6ICAgIG1vdnQgICBy
MTIsICM0NjgzMgogICAgMHhiNGM2MGFjODogICAgYmx4ICAgIHIxMgogICAgMHhiNGM2MGFjYTog
ICAgbm9wICAgIAogICAgMHhiNGM2MGFjYzogICAgbm9wICAgIAogICAgMHhiNGM2MGFkMDogICAg
YiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNjBhZDQ6ICAgIG1vdncgICByMTIsICMxNDA4CiAg
ICAweGI0YzYwYWQ4OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNjBhZGM6ICAgIGNt
cCAgICByMCwgcjEyCiAgICAweGI0YzYwYWUwOiAgICBibmUgICAgMHhiNGM2MGIwMgogICAgMHhi
NGM2MGFlMjogICAgbGRyICAgIHIxMiwgW3IxLCAjMzZdCiAgICAweGI0YzYwYWU2OiAgICBhZGR3
ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzYwYWVhOiAgICBzdHIgICAgcjEyLCBbcjEsICMzNl0K
ICAgIDB4YjRjNjBhZWU6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM2MGFmMjogICAg
bW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzYwYWY2OiAgICBibHggICAgcjEyCiAgICAweGI0
YzYwYWY4OiAgICBub3AgICAgCiAgICAweGI0YzYwYWZhOiAgICBub3AgICAgCiAgICAweGI0YzYw
YWZlOiAgICBiICAgICAgMHhiNGM1YmY2NgogICAgMHhiNGM2MGIwMjogICAgbW92dyAgIHIxMiwg
IzEyMTYKICAgIDB4YjRjNjBiMDY6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM2MGIw
YTogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNjBiMGU6ICAgIGJuZSAgICAweGI0YzYwY2Iy
CiAgICAweGI0YzYwYjEyOiAgICBsZHIgICAgcjEyLCBbcjEsICM0MF0KICAgIDB4YjRjNjBiMTY6
ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNjBiMWE6ICAgIHN0ciAgICByMTIsIFty
MSwgIzQwXQogICAgMHhiNGM2MGIxZTogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzYw
YjIyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjBiMjY6ICAgIGJseCAgICByMTIK
ICAgIDB4YjRjNjBiMjg6ICAgIG5vcCAgICAKICAgIDB4YjRjNjBiMmE6ICAgIG5vcCAgICAKICAg
IDB4YjRjNjBiMmU6ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0YzYwYjMyOiAgICBtb3Z3
ICAgcjEyLCAjNDgwNjQKICAgIDB4YjRjNjBiMzY6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAg
MHhiNGM2MGIzYTogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNjBiM2U6ICAgIGJuZSAgICAw
eGI0YzYwYjYwCiAgICAweGI0YzYwYjQwOiAgICBsZHIgICAgcjEyLCBbcjEsICM0XQogICAgMHhi
NGM2MGI0NDogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM2MGI0ODogICAgc3RyICAg
IHIxMiwgW3IxLCAjNF0KICAgIDB4YjRjNjBiNGM6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAg
MHhiNGM2MGI1MDogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzYwYjU0OiAgICBibHgg
ICAgcjEyCiAgICAweGI0YzYwYjU2OiAgICBub3AgICAgCiAgICAweGI0YzYwYjU4OiAgICBub3Ag
ICAgCiAgICAweGI0YzYwYjVjOiAgICBiICAgICAgMHhiNGM1YmY2NgogICAgMHhiNGM2MGI2MDog
ICAgbW92dyAgIHIxMiwgIzQ3NjgwCiAgICAweGI0YzYwYjY0OiAgICBtb3Z0ICAgcjEyLCAjNDYy
MDEKICAgIDB4YjRjNjBiNjg6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzYwYjZjOiAgICBi
bmUgICAgMHhiNGM2MGI4ZQogICAgMHhiNGM2MGI2ZTogICAgbGRyICAgIHIxMiwgW3IxLCAjMTJd
CiAgICAweGI0YzYwYjcyOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzYwYjc2OiAg
ICBzdHIgICAgcjEyLCBbcjEsICMxMl0KICAgIDB4YjRjNjBiN2E6ICAgIG1vdncgICByMTIsICMz
MTEzNwogICAgMHhiNGM2MGI3ZTogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzYwYjgy
OiAgICBibHggICAgcjEyCiAgICAweGI0YzYwYjg0OiAgICBub3AgICAgCiAgICAweGI0YzYwYjg2
OiAgICBub3AgICAgCiAgICAweGI0YzYwYjhhOiAgICBiICAgICAgMHhiNGM1YmY2NgogICAgMHhi
NGM2MGI4ZTogICAgbW92dyAgIHIxMiwgIzQ3ODcyCiAgICAweGI0YzYwYjkyOiAgICBtb3Z0ICAg
cjEyLCAjNDYyMDEKICAgIDB4YjRjNjBiOTY6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzYw
YjlhOiAgICBibmUgICAgMHhiNGM2MGNiMgogICAgMHhiNGM2MGI5ZTogICAgbGRyICAgIHIxMiwg
W3IxLCAjOF0KICAgIDB4YjRjNjBiYTI6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRj
NjBiYTY6ICAgIHN0ciAgICByMTIsIFtyMSwgIzhdCiAgICAweGI0YzYwYmFhOiAgICBtb3Z3ICAg
cjEyLCAjMzExMzcKICAgIDB4YjRjNjBiYWU6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhi
NGM2MGJiMjogICAgYmx4ICAgIHIxMgogICAgMHhiNGM2MGJiNDogICAgbm9wICAgIAogICAgMHhi
NGM2MGJiNjogICAgbm9wICAgIAogICAgMHhiNGM2MGJiYTogICAgYiAgICAgIDB4YjRjNWJmNjYK
ICAgIDB4YjRjNjBiYmU6ICAgIG1vdncgICByMTIsICM0NzI5NgogICAgMHhiNGM2MGJjMjogICAg
bW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzYwYmM2OiAgICBjbXAgICAgcjAsIHIxMgogICAg
MHhiNGM2MGJjYTogICAgYmx0ICAgIDB4YjRjNjBjMjgKICAgIDB4YjRjNjBiY2M6ICAgIG1vdncg
ICByMTIsICM0NzQ4OAogICAgMHhiNGM2MGJkMDogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAw
eGI0YzYwYmQ0OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM2MGJkODogICAgYm5lICAgIDB4
YjRjNjBiZmEKICAgIDB4YjRjNjBiZGE6ICAgIGxkciAgICByMTIsIFtyMSwgIzE2XQogICAgMHhi
NGM2MGJkZTogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM2MGJlMjogICAgc3RyICAg
IHIxMiwgW3IxLCAjMTZdCiAgICAweGI0YzYwYmU2OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAg
IDB4YjRjNjBiZWE6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM2MGJlZTogICAgYmx4
ICAgIHIxMgogICAgMHhiNGM2MGJmMDogICAgbm9wICAgIAogICAgMHhiNGM2MGJmMjogICAgbm9w
ICAgIAogICAgMHhiNGM2MGJmNjogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNjBiZmE6
ICAgIG1vdncgICByMTIsICM0NzI5NgogICAgMHhiNGM2MGJmZTogICAgbW92dCAgIHIxMiwgIzQ2
MjAxCiAgICAweGI0YzYwYzAyOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM2MGMwNjogICAg
Ym5lICAgIDB4YjRjNjBjYjIKICAgIDB4YjRjNjBjMDg6ICAgIGxkciAgICByMTIsIFtyMSwgIzIw
XQogICAgMHhiNGM2MGMwYzogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM2MGMxMDog
ICAgc3RyICAgIHIxMiwgW3IxLCAjMjBdCiAgICAweGI0YzYwYzE0OiAgICBtb3Z3ICAgcjEyLCAj
MzExMzcKICAgIDB4YjRjNjBjMTg6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM2MGMx
YzogICAgYmx4ICAgIHIxMgogICAgMHhiNGM2MGMxZTogICAgbm9wICAgIAogICAgMHhiNGM2MGMy
MDogICAgbm9wICAgIAogICAgMHhiNGM2MGMyNDogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4
YjRjNjBjMjg6ICAgIG1vdncgICByMTIsICM0NzEwNAogICAgMHhiNGM2MGMyYzogICAgbW92dCAg
IHIxMiwgIzQ2MjAxCiAgICAweGI0YzYwYzMwOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM2
MGMzNDogICAgYm5lICAgIDB4YjRjNjBjNTYKICAgIDB4YjRjNjBjMzY6ICAgIGxkciAgICByMTIs
IFtyMSwgIzI0XQogICAgMHhiNGM2MGMzYTogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhi
NGM2MGMzZTogICAgc3RyICAgIHIxMiwgW3IxLCAjMjRdCiAgICAweGI0YzYwYzQyOiAgICBtb3Z3
ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNjBjNDY6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAg
MHhiNGM2MGM0YTogICAgYmx4ICAgIHIxMgogICAgMHhiNGM2MGM0YzogICAgbm9wICAgIAogICAg
MHhiNGM2MGM0ZTogICAgbm9wICAgIAogICAgMHhiNGM2MGM1MjogICAgYiAgICAgIDB4YjRjNWJm
NjYKICAgIDB4YjRjNjBjNTY6ICAgIG1vdncgICByMTIsICM0NjcyMAogICAgMHhiNGM2MGM1YTog
ICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzYwYzVlOiAgICBjbXAgICAgcjAsIHIxMgog
ICAgMHhiNGM2MGM2MjogICAgYm5lICAgIDB4YjRjNjBjODQKICAgIDB4YjRjNjBjNjQ6ICAgIGxk
ciAgICByMTIsIFtyMSwgIzMyXQogICAgMHhiNGM2MGM2ODogICAgYWRkdyAgIHIxMiwgcjEyLCAj
MQogICAgMHhiNGM2MGM2YzogICAgc3RyICAgIHIxMiwgW3IxLCAjMzJdCiAgICAweGI0YzYwYzcw
OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNjBjNzQ6ICAgIG1vdnQgICByMTIsICM0
NjgzMgogICAgMHhiNGM2MGM3ODogICAgYmx4ICAgIHIxMgogICAgMHhiNGM2MGM3YTogICAgbm9w
ICAgIAogICAgMHhiNGM2MGM3YzogICAgbm9wICAgIAogICAgMHhiNGM2MGM4MDogICAgYiAgICAg
IDB4YjRjNWJmNjYKICAgIDB4YjRjNjBjODQ6ICAgIG1vdncgICByMTIsICM0NjkxMgogICAgMHhi
NGM2MGM4ODogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzYwYzhjOiAgICBjbXAgICAg
cjAsIHIxMgogICAgMHhiNGM2MGM5MDogICAgYm5lICAgIDB4YjRjNjBjYjIKICAgIDB4YjRjNjBj
OTI6ICAgIGxkciAgICByMTIsIFtyMSwgIzI4XQogICAgMHhiNGM2MGM5NjogICAgYWRkdyAgIHIx
MiwgcjEyLCAjMQogICAgMHhiNGM2MGM5YTogICAgc3RyICAgIHIxMiwgW3IxLCAjMjhdCiAgICAw
eGI0YzYwYzllOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNjBjYTI6ICAgIG1vdnQg
ICByMTIsICM0NjgzMgogICAgMHhiNGM2MGNhNjogICAgYmx4ICAgIHIxMgogICAgMHhiNGM2MGNh
ODogICAgbm9wICAgIAogICAgMHhiNGM2MGNhYTogICAgbm9wICAgIAogICAgMHhiNGM2MGNhZTog
ICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNjBjYjI6ICAgIG12biAgICByMSwgIzQKICAg
IDB4YjRjNjBjYjY6ICAgIG1vdncgICByMiwgIzQ1NDg4CiAgICAweGI0YzYwY2JhOiAgICBtb3Z0
ICAgcjIsICM0NjI2MwogICAgMHhiNGM2MGNiZTogICAgbW92dyAgIHI4LCAjNTc4ODEKICAgIDB4
YjRjNjBjYzI6ICAgIG1vdnQgICByOCwgIzQ2Mjc3CiAgICAweGI0YzYwY2M2OiAgICBtb3YgICAg
bHIsIHI4CiAgICAweGI0YzYwY2M4OiAgICBtb3Z3ICAgcjEyLCAjMTU5NjkKICAgIDB4YjRjNjBj
Y2M6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM2MGNkMDogICAgYnggICAgIHIxMgpM
aW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4w
eGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246
IENlbGw6IDB4YjQ3OWJjODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFBy
b3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FNSXlUZjpbMHhiNDc5MjU4MC0+MHhiNDdk
NGRjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDYxXSksIGNvZGVCbG9jayA9ICNBTUl5VGY6WzB4YjQ3
OTI1ODAtPjB4YjQ3ZDRkYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2MV0KTGlua2luZyBwb2x5bW9y
cGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFz
ZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0Nzli
YmMwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUw
XSk7IEV4ZWN1dGFibGU6ICNDWVZUbFc6WzB4YjQ3OTI0MzAtPjB4YjQ3ZDRjYzAsIExMSW50RnVu
Y3Rpb25DYWxsLCA2NF0pLCBjb2RlQmxvY2sgPSAjQ1lWVGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0
Y2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjRdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8
Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAx
NTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmIwMCAoMHhiNDdmNzA5
MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxl
OiAjQlF5SXRGOlsweGI0NzkyMmUwLT4weGI0N2Q0YmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBd
KSwgY29kZUJsb2NrID0gI0JReUl0RjpbMHhiNDc5MjJlMC0+MHhiNDdkNGJjMCwgTExJbnRGdW5j
dGlvbkNhbGwsIDcwXQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklv
OlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQx
MSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJhNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7
fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FVaEZIVzpbMHhi
NDc5MjE5MC0+MHhiNDdkNGFjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9
ICNBVWhGSFc6WzB4YjQ3OTIxOTAtPjB4YjQ3ZDRhYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0K
TGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+
MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9u
OiBDZWxsOiAweGI0NzliOTgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQ
cm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNEOE00MFk6WzB4YjQ3OTIwNDAtPjB4YjQ3
ZDQ5YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjRDhNNDBZOlsweGI0
NzkyMDQwLT4weGI0N2Q0OWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdCkxpbmtpbmcgcG9seW1v
cnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJh
c2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5
YjhjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRl
MF0pOyBFeGVjdXRhYmxlOiAjQlhHSzBEOlsweGI0NzkxZWYwLT4weGI0N2Q0OGMwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0JYR0swRDpbMHhiNDc5MWVmMC0+MHhiNDdk
NDhjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4g
PGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwg
MTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWI4MDAgKDB4YjQ3Zjcw
OTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJs
ZTogI0RrMUU5ZTpbMHhiNDc5MWRhMC0+MHhiNDdkNDdjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcw
XSksIGNvZGVCbG9jayA9ICNEazFFOWU6WzB4YjQ3OTFkYTAtPjB4YjQ3ZDQ3YzAsIExMSW50RnVu
Y3Rpb25DYWxsLCA3MF0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJ
bzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0
MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliNzQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwg
e30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFaktLZW46WzB4
YjQ3OTFjNTAtPjB4YjQ3ZDQ2YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sg
PSAjRWpLS2VuOlsweGI0NzkxYzUwLT4weGI0N2Q0NmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBd
CkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAt
PjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlv
bjogQ2VsbDogMHhiNDc5YjY4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwg
UHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRWdVNHRsOlsweGI0NzkxYjAwLT4weGI0
N2Q0NWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0VnVTR0bDpbMHhi
NDc5MWIwMC0+MHhiNDdkNDVjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXQpMaW5raW5nIHBvbHlt
b3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBC
YXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3
ZjA1ODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRk
ZTBdKTsgRXhlY3V0YWJsZTogI0RsSjhMcjpbMHhiNDc5MzNmMC0+MHhiNDdkNThjMCwgTExJbnRG
dW5jdGlvbkNhbGwsIDQ5XSksIGNvZGVCbG9jayA9ICNEbEo4THI6WzB4YjQ3OTMzZjAtPjB4YjQ3
ZDU4YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0OV0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGlu
IDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWws
IDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwNGMwICgweGI0N2Y3
MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFi
bGU6ICNFWlZ1R0w6WzB4YjQ3OTMyYTAtPjB4YjQ3ZDU3YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0
OV0pLCBjb2RlQmxvY2sgPSAjRVpWdUdMOlsweGI0NzkzMmEwLT4weGI0N2Q1N2MwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNDldCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgVmlydHVhbCBjYWxsIHNsb3cg
cGF0aCB0aHVuazoKICAgIENvZGUgYXQgWzB4YjRjNjA5ODEsIDB4YjRjNjBhNDEpOgogICAgMHhi
NGM2MDk4MDogICAgbGRyICAgIHIxMiwgW3IyLCAjNTJdCiAgICAweGI0YzYwOTg0OiAgICBhZGR3
ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzYwOTg4OiAgICBzdHIgICAgcjEyLCBbcjIsICM1Ml0K
ICAgIDB4YjRjNjA5OGM6ICAgIGNtbiAgICByMSwgIzUKICAgIDB4YjRjNjA5OTA6ICAgIGJuZSAg
ICAweGI0YzYwOWE4CiAgICAweGI0YzYwOTkyOiAgICBsZHJiICAgcjYsIFtyMCwgIzVdCiAgICAw
eGI0YzYwOTk0OiAgICBjbXAgICAgcjIsICMyMwogICAgMHhiNGM2MDk5NjogICAgYm5lICAgIDB4
YjRjNjA5YTgKICAgIDB4YjRjNjA5OTg6ICAgIGxkciAgICByOCwgW3IwLCAjMjBdCiAgICAweGI0
YzYwOTljOiAgICBsZHIgICAgcjgsIFtyOCwgIzI4XQogICAgMHhiNGM2MDlhMDogICAgdHN0ICAg
IHI4LCByOAogICAgMHhiNGM2MDlhNDogICAgYmVxICAgIDB4YjRjNjA5YTgKICAgIDB4YjRjNjA5
YTY6ICAgIGJ4ICAgICByOAogICAgMHhiNGM2MDlhODogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAw
eGI0YzYwOWFjOiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI0YzYwOWFlOiAgICBtb3Z3ICAgcjYs
ICM0MjEyOAogICAgMHhiNGM2MDliMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjRjNjA5
YjY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNGM2MDliODogICAgbXZuICAgIHIxMiwgIzIz
CiAgICAweGI0YzYwOWJjOiAgICBtb3YgICAgc3AsIHNwCiAgICAweGI0YzYwOWJlOiAgICBhZGQg
ICAgc3AsIHIxMgogICAgMHhiNGM2MDljMDogICAgbW92ICAgIHIxLCByMgogICAgMHhiNGM2MDlj
MjogICAgbW92ICAgIHIwLCByNwogICAgMHhiNGM2MDljNDogICAgbW92dyAgIHI0LCAjNTEyNzcK
ICAgIDB4YjRjNjA5Yzg6ICAgIG1vdnQgICByNCwgIzQ2Nzc2CiAgICAweGI0YzYwOWNjOiAgICBi
bHggICAgcjQKICAgIDB4YjRjNjA5Y2U6ICAgIGFkZCAgICBzcCwgc3AsICM2CiAgICAweGI0YzYw
OWQwOiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI0YzYwOWQyOiAgICBwb3AgICAge3I3LCBscn0K
ICAgIDB4YjRjNjA5ZDY6ICAgIHRzdCAgICByMSwgcjEKICAgIDB4YjRjNjA5ZDg6ICAgIGJlcSAg
ICAweGI0YzYwYTI4CiAgICAweGI0YzYwOWRhOiAgICBtb3YgICAgcjUsIGxyCiAgICAweGI0YzYw
OWRjOiAgICBsZHIgICAgcjEsIFtyNywgIzI0XQogICAgMHhiNGM2MDlkZTogICAgbGRyICAgIHIz
LCBbcjcsICM4XQogICAgMHhiNGM2MDllMDogICAgbGRyICAgIHIzLCBbcjMsICMzMl0KICAgIDB4
YjRjNjA5ZTI6ICAgIGNtcCAgICByMywgcjEKICAgIDB4YjRjNjA5ZTQ6ICAgIGJscyAgICAweGI0
YzYwOWU4CiAgICAweGI0YzYwOWU2OiAgICBtb3YgICAgcjEsIHIzCiAgICAweGI0YzYwOWU4OiAg
ICBhZGRzICAgcjEsIHIxLCAjNQogICAgMHhiNGM2MDllYTogICAgbXZuICAgIHIxMiwgIzEKICAg
IDB4YjRjNjA5ZWU6ICAgIGFuZCAgICByMSwgcjEsIHIxMgogICAgMHhiNGM2MDlmMjogICAgbW92
ICAgIHIxMiwgIzgKICAgIDB4YjRjNjA5ZjY6ICAgIHNtdWxsICByMSwgcjEyLCByMSwgcjEyCiAg
ICAweGI0YzYwOWZhOiAgICBhZGRzICAgcjMsIHI3LCByMQogICAgMHhiNGM2MDlmYzogICAgbGRy
ICAgIHIxLCBbc3AsICMxNl0KICAgIDB4YjRjNjA5ZmU6ICAgIGFkZHMgICByMSwgcjEsICM1CiAg
ICAweGI0YzYwYTAwOiAgICBtdm4gICAgcjEyLCAjMQogICAgMHhiNGM2MGEwNDogICAgYW5kICAg
IHIxLCByMSwgcjEyCiAgICAweGI0YzYwYTA4OiAgICBtb3YgICAgcjEyLCAjOAogICAgMHhiNGM2
MGEwYzogICAgc211bGwgIHIxLCByMTIsIHIxLCByMTIKICAgIDB4YjRjNjBhMTA6ICAgIGxkciAg
ICBsciwgW3I3LCAjNF0KICAgIDB4YjRjNjBhMTQ6ICAgIHN1YnMgICByMSwgIzgKICAgIDB4YjRj
NjBhMTY6ICAgIHN1YnMgICByMywgcjMsIHIxCiAgICAweGI0YzYwYTE4OiAgICBsZHIgICAgcjcs
IFtyN10KICAgIDB4YjRjNjBhMWE6ICAgIHN1YnMgICByMSwgcjEsICM0CiAgICAweGI0YzYwYTFj
OiAgICBsZHIgICAgcjIsIFtzcCwgcjFdCiAgICAweGI0YzYwYTIwOiAgICBzdHIgICAgcjIsIFty
MywgcjFdCiAgICAweGI0YzYwYTIyOiAgICB0c3QgICAgcjEsIHIxCiAgICAweGI0YzYwYTI0OiAg
ICBibmUgICAgMHhiNGM2MGMxYQogICAgMHhiNGM2MGEyNjogICAgbW92ICAgIHNwLCByMwogICAg
MHhiNGM2MGEyODogICAgYnggICAgIHIwCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5
bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2Nh
dGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBw
b2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFM
b2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZv
ciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRh
dGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZv
IGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTks
IGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBp
bmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUy
MTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGlu
ayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRj
NWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwg
bGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4
YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNh
bGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9
IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5n
IGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJs
ZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFy
aW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0
YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkdl
bmVyYXRlZCBKSVQgY29kZSBmb3IgQWNjZXNzIHN0dWIgZm9yIDxnbG9iYWw+I0J5UHpJbzpbMHhi
NDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGJjIzE1MDAgd2l0aCBy
ZXR1cm4gcG9pbnQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1YzFjYiwgZGF0YUxvY2F0aW9u
ID0gMHhiNGM1YzFjYSk6IEFycmF5TGVuZ3RoOihHZW5lcmF0ZWQpOgogICAgQ29kZSBhdCBbMHhi
NGM2MGNlMSwgMHhiNGM2MGQ0MSk6CiAgICAweGI0YzYwY2UwOiAgICBsZHJiICAgcjIsIFtyMCwg
IzRdCiAgICAweGI0YzYwY2UyOiAgICB0c3QgICAgcjIsICMxCiAgICAweGI0YzYwY2U2OiAgICBp
dHR0ICAgZXEKICAgIDB4YjRjNjBjZTg6ICAgIG5vcGVxICAKICAgIDB4YjRjNjBjZWE6ICAgIG5v
cGVxICAKICAgIDB4YjRjNjBjZWU6ICAgIGJlcSAgICAweGI0YzVlM2I0CiAgICAweGI0YzYwY2Yy
OiAgICB0c3QgICAgcjIsICMxNAogICAgMHhiNGM2MGNmNjogICAgaXR0dCAgIGVxCiAgICAweGI0
YzYwY2Y4OiAgICBub3BlcSAgCiAgICAweGI0YzYwY2ZhOiAgICBub3BlcSAgCiAgICAweGI0YzYw
Y2ZlOiAgICBiZXEgICAgMHhiNGM1ZTNiNAogICAgMHhiNGM2MGQwMjogICAgbGRyICAgIHIyLCBb
cjAsICM4XQogICAgMHhiNGM2MGQwNDogICAgbGRyICAgIHIyLCBbcjIsICMtOF0KICAgIDB4YjRj
NjBkMDg6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjRjNjBkMGE6ICAgIGJsdCAgICAweGI0YzYw
ZDFjCiAgICAweGI0YzYwZDBjOiAgICBtb3YgICAgcjAsIHIyCiAgICAweGI0YzYwZDBlOiAgICBt
b3YgICAgcjEsICM0Mjk0OTY3Mjk1CiAgICAweGI0YzYwZDEyOiAgICBub3AgICAgCiAgICAweGI0
YzYwZDE0OiAgICBub3AgICAgCiAgICAweGI0YzYwZDE4OiAgICBiICAgICAgMHhiNGM1YzFjYQog
ICAgMHhiNGM2MGQxYzogICAgbW92dyAgIHIyLCAjNDU2OTQKICAgIDB4YjRjNjBkMjA6ICAgIG1v
dnQgICByMiwgIzQ2MjYzCiAgICAweGI0YzYwZDI0OiAgICBsZHJiICAgcjIsIFtyMl0KICAgIDB4
YjRjNjBkMjY6ICAgIGFkZHMgICByMiwgcjIsICMxCiAgICAweGI0YzYwZDI4OiAgICBtb3Z3ICAg
cjYsICM0NTY5NAogICAgMHhiNGM2MGQyYzogICAgbW92dCAgIHI2LCAjNDYyNjMKICAgIDB4YjRj
NjBkMzA6ICAgIHN0cmIgICByMiwgW3I2XQogICAgMHhiNGM2MGQzMjogICAgbm9wICAgIAogICAg
MHhiNGM2MGQzNDogICAgbm9wICAgIAogICAgMHhiNGM2MGQzODogICAgYiAgICAgIDB4YjRjNWUz
YjQKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBQb2x5bW9ycGhpYyBjYWxsIHN0dWIgZm9yIDxnbG9i
YWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRd
LCByZXR1cm4gcG9pbnQgMHhiNGM1ZTIxOSwgdGFyZ2V0cyA8dmFyaWFudCA9IChGdW5jdGlvbjog
Q2VsbDogMHhiNDc5YmM4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJv
dG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQU1JeVRmOlsweGI0NzkyNTgwLT4weGI0N2Q0
ZGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjFdKSwgY29kZUJsb2NrID0gI0FNSXlUZjpbMHhiNDc5
MjU4MC0+MHhiNDdkNGRjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDYxXT4sIDx2YXJpYW50ID0gKEZ1
bmN0aW9uOiBDZWxsOiAweGI0NzliYmMwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFy
cmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNDWVZUbFc6WzB4YjQ3OTI0MzAt
PjB4YjQ3ZDRjYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2NF0pLCBjb2RlQmxvY2sgPSAjQ1lWVGxX
OlsweGI0NzkyNDMwLT4weGI0N2Q0Y2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjRdPiwgPHZhcmlh
bnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJiMDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7
fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JReUl0RjpbMHhi
NDc5MjJlMC0+MHhiNDdkNGJjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9
ICNCUXlJdEY6WzB4YjQ3OTIyZTAtPjB4YjQ3ZDRiYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0+
LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmE0MCAoMHhiNDdmNzA5MDpbRnVu
Y3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQVVo
RkhXOlsweGI0NzkyMTkwLT4weGI0N2Q0YWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29k
ZUJsb2NrID0gI0FVaEZIVzpbMHhiNDc5MjE5MC0+MHhiNDdkNGFjMCwgTExJbnRGdW5jdGlvbkNh
bGwsIDcwXT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliOTgwICgweGI0N2Y3
MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFi
bGU6ICNEOE00MFk6WzB4YjQ3OTIwNDAtPjB4YjQ3ZDQ5YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3
MF0pLCBjb2RlQmxvY2sgPSAjRDhNNDBZOlsweGI0NzkyMDQwLT4weGI0N2Q0OWMwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNzBdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWI4YzAg
KDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsg
RXhlY3V0YWJsZTogI0JYR0swRDpbMHhiNDc5MWVmMC0+MHhiNDdkNDhjMCwgTExJbnRGdW5jdGlv
bkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNCWEdLMEQ6WzB4YjQ3OTFlZjAtPjB4YjQ3ZDQ4YzAs
IExMSW50RnVuY3Rpb25DYWxsLCA3MF0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhi
NDc5YjgwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdl
ZGRlMF0pOyBFeGVjdXRhYmxlOiAjRGsxRTllOlsweGI0NzkxZGEwLT4weGI0N2Q0N2MwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0RrMUU5ZTpbMHhiNDc5MWRhMC0+MHhi
NDdkNDdjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBD
ZWxsOiAweGI0NzliNzQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90
bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFaktLZW46WzB4YjQ3OTFjNTAtPjB4YjQ3ZDQ2
YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjRWpLS2VuOlsweGI0Nzkx
YzUwLT4weGI0N2Q0NmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdPiwgPHZhcmlhbnQgPSAoRnVu
Y3Rpb246IENlbGw6IDB4YjQ3OWI2ODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJy
YXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0VnVTR0bDpbMHhiNDc5MWIwMC0+
MHhiNDdkNDVjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNFZ1U0dGw6
WzB4YjQ3OTFiMDAtPjB4YjQ3ZDQ1YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0+LCA8dmFyaWFu
dCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDU4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9
LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRGxKOExyOlsweGI0
NzkzM2YwLT4weGI0N2Q1OGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDldKSwgY29kZUJsb2NrID0g
I0RsSjhMcjpbMHhiNDc5MzNmMC0+MHhiNDdkNThjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5XT4s
IDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwNGMwICgweGI0N2Y3MDkwOltGdW5j
dGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFWlZ1
R0w6WzB4YjQ3OTMyYTAtPjB4YjQ3ZDU3YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0OV0pLCBjb2Rl
QmxvY2sgPSAjRVpWdUdMOlsweGI0NzkzMmEwLT4weGI0N2Q1N2MwLCBMTEludEZ1bmN0aW9uQ2Fs
bCwgNDldPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjA0MDAgKDB4YjQ3Zjcw
OTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJs
ZTogI0I0RFhBajpbMHhiNDc5MzE1MC0+MHhiNDdkNTZjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5
XSksIGNvZGVCbG9jayA9ICNCNERYQWo6WzB4YjQ3OTMxNTAtPjB4YjQ3ZDU2YzAsIExMSW50RnVu
Y3Rpb25DYWxsLCA0OV0+OgogICAgQ29kZSBhdCBbMHhiNGM2MDY2MSwgMHhiNGM2MDhlMSk6CiAg
ICAweGI0YzYwNjYwOiAgICBtb3Z3ICAgcjEsICM2NDY5NgogICAgMHhiNGM2MDY2NDogICAgbW92
dCAgIHIxLCAjMTg2CiAgICAweGI0YzYwNjY4OiAgICBtb3Z3ICAgcjEyLCAjNDc4NzIKICAgIDB4
YjRjNjA2NmM6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM2MDY3MDogICAgY21wICAg
IHIwLCByMTIKICAgIDB4YjRjNjA2NzQ6ICAgIGJsdCAgICAweGI0YzYwNzllCiAgICAweGI0YzYw
Njc4OiAgICBtb3Z3ICAgcjEyLCAjMTAyNAogICAgMHhiNGM2MDY3YzogICAgbW92dCAgIHIxMiwg
IzQ2MjA3CiAgICAweGI0YzYwNjgwOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM2MDY4NDog
ICAgYmx0ICAgIDB4YjRjNjA3MTIKICAgIDB4YjRjNjA2ODY6ICAgIG1vdncgICByMTIsICMxMDI0
CiAgICAweGI0YzYwNjhhOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNjA2OGU6ICAg
IGNtcCAgICByMCwgcjEyCiAgICAweGI0YzYwNjkyOiAgICBibmUgICAgMHhiNGM2MDZiNAogICAg
MHhiNGM2MDY5NDogICAgbGRyICAgIHIxMiwgW3IxLCAjNDRdCiAgICAweGI0YzYwNjk4OiAgICBh
ZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzYwNjljOiAgICBzdHIgICAgcjEyLCBbcjEsICM0
NF0KICAgIDB4YjRjNjA2YTA6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM2MDZhNDog
ICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzYwNmE4OiAgICBibHggICAgcjEyCiAgICAw
eGI0YzYwNmFhOiAgICBub3AgICAgCiAgICAweGI0YzYwNmFjOiAgICBub3AgICAgCiAgICAweGI0
YzYwNmIwOiAgICBiICAgICAgMHhiNGM1YmY2NgogICAgMHhiNGM2MDZiNDogICAgbW92dyAgIHIx
MiwgIzE0MDgKICAgIDB4YjRjNjA2Yjg6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM2
MDZiYzogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNjA2YzA6ICAgIGJuZSAgICAweGI0YzYw
NmUyCiAgICAweGI0YzYwNmMyOiAgICBsZHIgICAgcjEyLCBbcjEsICMzNl0KICAgIDB4YjRjNjA2
YzY6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNjA2Y2E6ICAgIHN0ciAgICByMTIs
IFtyMSwgIzM2XQogICAgMHhiNGM2MDZjZTogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0
YzYwNmQyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjA2ZDY6ICAgIGJseCAgICBy
MTIKICAgIDB4YjRjNjA2ZDg6ICAgIG5vcCAgICAKICAgIDB4YjRjNjA2ZGE6ICAgIG5vcCAgICAK
ICAgIDB4YjRjNjA2ZGU6ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0YzYwNmUyOiAgICBt
b3Z3ICAgcjEyLCAjMTIxNgogICAgMHhiNGM2MDZlNjogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAg
ICAweGI0YzYwNmVhOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM2MDZlZTogICAgYm5lICAg
IDB4YjRjNjA4YzAKICAgIDB4YjRjNjA2ZjI6ICAgIGxkciAgICByMTIsIFtyMSwgIzQwXQogICAg
MHhiNGM2MDZmNjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM2MDZmYTogICAgc3Ry
ICAgIHIxMiwgW3IxLCAjNDBdCiAgICAweGI0YzYwNmZlOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcK
ICAgIDB4YjRjNjA3MDI6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM2MDcwNjogICAg
Ymx4ICAgIHIxMgogICAgMHhiNGM2MDcwODogICAgbm9wICAgIAogICAgMHhiNGM2MDcwYTogICAg
bm9wICAgIAogICAgMHhiNGM2MDcwZTogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNjA3
MTI6ICAgIG1vdncgICByMTIsICM0ODA2NAogICAgMHhiNGM2MDcxNjogICAgbW92dCAgIHIxMiwg
IzQ2MjAxCiAgICAweGI0YzYwNzFhOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM2MDcxZTog
ICAgYm5lICAgIDB4YjRjNjA3NDAKICAgIDB4YjRjNjA3MjA6ICAgIGxkciAgICByMTIsIFtyMSwg
IzRdCiAgICAweGI0YzYwNzI0OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzYwNzI4
OiAgICBzdHIgICAgcjEyLCBbcjEsICM0XQogICAgMHhiNGM2MDcyYzogICAgbW92dyAgIHIxMiwg
IzMxMTM3CiAgICAweGI0YzYwNzMwOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjA3
MzQ6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNjA3MzY6ICAgIG5vcCAgICAKICAgIDB4YjRjNjA3
Mzg6ICAgIG5vcCAgICAKICAgIDB4YjRjNjA3M2M6ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAw
eGI0YzYwNzQwOiAgICBtb3Z3ICAgcjEyLCAjNDc4NzIKICAgIDB4YjRjNjA3NDQ6ICAgIG1vdnQg
ICByMTIsICM0NjIwMQogICAgMHhiNGM2MDc0ODogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRj
NjA3NGM6ICAgIGJuZSAgICAweGI0YzYwNzZlCiAgICAweGI0YzYwNzRlOiAgICBsZHIgICAgcjEy
LCBbcjEsICM4XQogICAgMHhiNGM2MDc1MjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhi
NGM2MDc1NjogICAgc3RyICAgIHIxMiwgW3IxLCAjOF0KICAgIDB4YjRjNjA3NWE6ICAgIG1vdncg
ICByMTIsICMzMTEzNwogICAgMHhiNGM2MDc1ZTogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAw
eGI0YzYwNzYyOiAgICBibHggICAgcjEyCiAgICAweGI0YzYwNzY0OiAgICBub3AgICAgCiAgICAw
eGI0YzYwNzY2OiAgICBub3AgICAgCiAgICAweGI0YzYwNzZhOiAgICBiICAgICAgMHhiNGM1YmY2
NgogICAgMHhiNGM2MDc2ZTogICAgbW92dyAgIHIxMiwgIzQ4MjU2CiAgICAweGI0YzYwNzcyOiAg
ICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNjA3NzY6ICAgIGNtcCAgICByMCwgcjEyCiAg
ICAweGI0YzYwNzdhOiAgICBibmUgICAgMHhiNGM2MDhjMAogICAgMHhiNGM2MDc3ZTogICAgbGRy
ICAgIHIxMiwgW3IxXQogICAgMHhiNGM2MDc4MjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAg
MHhiNGM2MDc4NjogICAgc3RyICAgIHIxMiwgW3IxXQogICAgMHhiNGM2MDc4YTogICAgbW92dyAg
IHIxMiwgIzMxMTM3CiAgICAweGI0YzYwNzhlOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4
YjRjNjA3OTI6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNjA3OTQ6ICAgIG5vcCAgICAKICAgIDB4
YjRjNjA3OTY6ICAgIG5vcCAgICAKICAgIDB4YjRjNjA3OWE6ICAgIGIgICAgICAweGI0YzViZjY2
CiAgICAweGI0YzYwNzllOiAgICBtb3Z3ICAgcjEyLCAjNDcyOTYKICAgIDB4YjRjNjA3YTI6ICAg
IG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM2MDdhNjogICAgY21wICAgIHIwLCByMTIKICAg
IDB4YjRjNjA3YWE6ICAgIGJsdCAgICAweGI0YzYwODM2CiAgICAweGI0YzYwN2FjOiAgICBtb3Z3
ICAgcjEyLCAjNDc0ODgKICAgIDB4YjRjNjA3YjA6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAg
MHhiNGM2MDdiNDogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNjA3Yjg6ICAgIGJuZSAgICAw
eGI0YzYwN2RhCiAgICAweGI0YzYwN2JhOiAgICBsZHIgICAgcjEyLCBbcjEsICMxNl0KICAgIDB4
YjRjNjA3YmU6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNjA3YzI6ICAgIHN0ciAg
ICByMTIsIFtyMSwgIzE2XQogICAgMHhiNGM2MDdjNjogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAg
ICAweGI0YzYwN2NhOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjA3Y2U6ICAgIGJs
eCAgICByMTIKICAgIDB4YjRjNjA3ZDA6ICAgIG5vcCAgICAKICAgIDB4YjRjNjA3ZDI6ICAgIG5v
cCAgICAKICAgIDB4YjRjNjA3ZDY6ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0YzYwN2Rh
OiAgICBtb3Z3ICAgcjEyLCAjNDcyOTYKICAgIDB4YjRjNjA3ZGU6ICAgIG1vdnQgICByMTIsICM0
NjIwMQogICAgMHhiNGM2MDdlMjogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNjA3ZTY6ICAg
IGJuZSAgICAweGI0YzYwODA4CiAgICAweGI0YzYwN2U4OiAgICBsZHIgICAgcjEyLCBbcjEsICMy
MF0KICAgIDB4YjRjNjA3ZWM6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNjA3ZjA6
ICAgIHN0ciAgICByMTIsIFtyMSwgIzIwXQogICAgMHhiNGM2MDdmNDogICAgbW92dyAgIHIxMiwg
IzMxMTM3CiAgICAweGI0YzYwN2Y4OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjA3
ZmM6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNjA3ZmU6ICAgIG5vcCAgICAKICAgIDB4YjRjNjA4
MDA6ICAgIG5vcCAgICAKICAgIDB4YjRjNjA4MDQ6ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAw
eGI0YzYwODA4OiAgICBtb3Z3ICAgcjEyLCAjNDc2ODAKICAgIDB4YjRjNjA4MGM6ICAgIG1vdnQg
ICByMTIsICM0NjIwMQogICAgMHhiNGM2MDgxMDogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRj
NjA4MTQ6ICAgIGJuZSAgICAweGI0YzYwOGMwCiAgICAweGI0YzYwODE2OiAgICBsZHIgICAgcjEy
LCBbcjEsICMxMl0KICAgIDB4YjRjNjA4MWE6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4
YjRjNjA4MWU6ICAgIHN0ciAgICByMTIsIFtyMSwgIzEyXQogICAgMHhiNGM2MDgyMjogICAgbW92
dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzYwODI2OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAg
IDB4YjRjNjA4MmE6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNjA4MmM6ICAgIG5vcCAgICAKICAg
IDB4YjRjNjA4MmU6ICAgIG5vcCAgICAKICAgIDB4YjRjNjA4MzI6ICAgIGIgICAgICAweGI0YzVi
ZjY2CiAgICAweGI0YzYwODM2OiAgICBtb3Z3ICAgcjEyLCAjNDcxMDQKICAgIDB4YjRjNjA4M2E6
ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM2MDgzZTogICAgY21wICAgIHIwLCByMTIK
ICAgIDB4YjRjNjA4NDI6ICAgIGJuZSAgICAweGI0YzYwODY0CiAgICAweGI0YzYwODQ0OiAgICBs
ZHIgICAgcjEyLCBbcjEsICMyNF0KICAgIDB4YjRjNjA4NDg6ICAgIGFkZHcgICByMTIsIHIxMiwg
IzEKICAgIDB4YjRjNjA4NGM6ICAgIHN0ciAgICByMTIsIFtyMSwgIzI0XQogICAgMHhiNGM2MDg1
MDogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzYwODU0OiAgICBtb3Z0ICAgcjEyLCAj
NDY4MzIKICAgIDB4YjRjNjA4NTg6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNjA4NWE6ICAgIG5v
cCAgICAKICAgIDB4YjRjNjA4NWM6ICAgIG5vcCAgICAKICAgIDB4YjRjNjA4NjA6ICAgIGIgICAg
ICAweGI0YzViZjY2CiAgICAweGI0YzYwODY0OiAgICBtb3Z3ICAgcjEyLCAjNDY3MjAKICAgIDB4
YjRjNjA4Njg6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM2MDg2YzogICAgY21wICAg
IHIwLCByMTIKICAgIDB4YjRjNjA4NzA6ICAgIGJuZSAgICAweGI0YzYwODkyCiAgICAweGI0YzYw
ODcyOiAgICBsZHIgICAgcjEyLCBbcjEsICMzMl0KICAgIDB4YjRjNjA4NzY6ICAgIGFkZHcgICBy
MTIsIHIxMiwgIzEKICAgIDB4YjRjNjA4N2E6ICAgIHN0ciAgICByMTIsIFtyMSwgIzMyXQogICAg
MHhiNGM2MDg3ZTogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzYwODgyOiAgICBtb3Z0
ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjA4ODY6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNjA4
ODg6ICAgIG5vcCAgICAKICAgIDB4YjRjNjA4OGE6ICAgIG5vcCAgICAKICAgIDB4YjRjNjA4OGU6
ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0YzYwODkyOiAgICBtb3Z3ICAgcjEyLCAjNDY5
MTIKICAgIDB4YjRjNjA4OTY6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM2MDg5YTog
ICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNjA4OWU6ICAgIGJuZSAgICAweGI0YzYwOGMwCiAg
ICAweGI0YzYwOGEwOiAgICBsZHIgICAgcjEyLCBbcjEsICMyOF0KICAgIDB4YjRjNjA4YTQ6ICAg
IGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNjA4YTg6ICAgIHN0ciAgICByMTIsIFtyMSwg
IzI4XQogICAgMHhiNGM2MDhhYzogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzYwOGIw
OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjA4YjQ6ICAgIGJseCAgICByMTIKICAg
IDB4YjRjNjA4YjY6ICAgIG5vcCAgICAKICAgIDB4YjRjNjA4Yjg6ICAgIG5vcCAgICAKICAgIDB4
YjRjNjA4YmM6ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0YzYwOGMwOiAgICBtdm4gICAg
cjEsICM0CiAgICAweGI0YzYwOGM0OiAgICBtb3Z3ICAgcjIsICM0NTQ4OAogICAgMHhiNGM2MDhj
ODogICAgbW92dCAgIHIyLCAjNDYyNjMKICAgIDB4YjRjNjA4Y2M6ICAgIG1vdncgICByOCwgIzU3
ODgxCiAgICAweGI0YzYwOGQwOiAgICBtb3Z0ICAgcjgsICM0NjI3NwogICAgMHhiNGM2MDhkNDog
ICAgbW92ICAgIGxyLCByOAogICAgMHhiNGM2MDhkNjogICAgbW92dyAgIHIxMiwgIzE1OTY5CiAg
ICAweGI0YzYwOGRhOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjA4ZGU6ICAgIGJ4
ICAgICByMTIKTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhi
NDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8g
KEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYzgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5v
bkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBTUl5VGY6WzB4YjQ3OTI1
ODAtPjB4YjQ3ZDRkYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2MV0pLCBjb2RlQmxvY2sgPSAjQU1J
eVRmOlsweGI0NzkyNTgwLT4weGI0N2Q0ZGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjFdCkxpbmtp
bmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3
YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2Vs
bDogMHhiNDc5YmJjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86
MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQ1lWVGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0Y2Mw
LCBMTEludEZ1bmN0aW9uQ2FsbCwgNjRdKSwgY29kZUJsb2NrID0gI0NZVlRsVzpbMHhiNDc5MjQz
MC0+MHhiNDdkNGNjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDY0XQpMaW5raW5nIHBvbHltb3JwaGlj
IGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGlu
ZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJiMDAg
KDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsg
RXhlY3V0YWJsZTogI0JReUl0RjpbMHhiNDc5MjJlMC0+MHhiNDdkNGJjMCwgTExJbnRGdW5jdGlv
bkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNCUXlJdEY6WzB4YjQ3OTIyZTAtPjB4YjQ3ZDRiYzAs
IExMSW50RnVuY3Rpb25DYWxsLCA3MF0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9i
YWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRd
IGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYTQwICgweGI0N2Y3MDkwOltG
dW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNB
VWhGSFc6WzB4YjQ3OTIxOTAtPjB4YjQ3ZDRhYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBj
b2RlQmxvY2sgPSAjQVVoRkhXOlsweGI0NzkyMTkwLT4weGI0N2Q0YWMwLCBMTEludEZ1bmN0aW9u
Q2FsbCwgNzBdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4
YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRv
IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5Yjk4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBO
b25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRDhNNDBZOlsweGI0Nzky
MDQwLT4weGI0N2Q0OWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0Q4
TTQwWTpbMHhiNDc5MjA0MC0+MHhiNDdkNDljMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXQpMaW5r
aW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0
N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENl
bGw6IDB4YjQ3OWI4YzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3Rv
OjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JYR0swRDpbMHhiNDc5MWVmMC0+MHhiNDdkNDhj
MCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNCWEdLMEQ6WzB4YjQ3OTFl
ZjAtPjB4YjQ3ZDQ4YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0KTGlua2luZyBwb2x5bW9ycGhp
YyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxp
bmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliODAw
ICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7
IEV4ZWN1dGFibGU6ICNEazFFOWU6WzB4YjQ3OTFkYTAtPjB4YjQ3ZDQ3YzAsIExMSW50RnVuY3Rp
b25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjRGsxRTllOlsweGI0NzkxZGEwLT4weGI0N2Q0N2Mw
LCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xv
YmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0
XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5Yjc0MCAoMHhiNDdmNzA5MDpb
RnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAj
RWpLS2VuOlsweGI0NzkxYzUwLT4weGI0N2Q0NmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwg
Y29kZUJsb2NrID0gI0VqS0tlbjpbMHhiNDc5MWM1MC0+MHhiNDdkNDZjMCwgTExJbnRGdW5jdGlv
bkNhbGwsIDcwXQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsw
eGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0
byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWI2ODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwg
Tm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0VnVTR0bDpbMHhiNDc5
MWIwMC0+MHhiNDdkNDVjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNF
Z1U0dGw6WzB4YjQ3OTFiMDAtPjB4YjQ3ZDQ1YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0KTGlu
a2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhi
NDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBD
ZWxsOiAweGI0N2YwNTgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90
bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNEbEo4THI6WzB4YjQ3OTMzZjAtPjB4YjQ3ZDU4
YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0OV0pLCBjb2RlQmxvY2sgPSAjRGxKOExyOlsweGI0Nzkz
M2YwLT4weGI0N2Q1OGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDldCkxpbmtpbmcgcG9seW1vcnBo
aWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2Vs
aW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDRj
MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0p
OyBFeGVjdXRhYmxlOiAjRVpWdUdMOlsweGI0NzkzMmEwLT4weGI0N2Q1N2MwLCBMTEludEZ1bmN0
aW9uQ2FsbCwgNDldKSwgY29kZUJsb2NrID0gI0VaVnVHTDpbMHhiNDc5MzJhMC0+MHhiNDdkNTdj
MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGds
b2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1
NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjA0MDAgKDB4YjQ3ZjcwOTA6
W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTog
I0I0RFhBajpbMHhiNDc5MzE1MC0+MHhiNDdkNTZjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5XSks
IGNvZGVCbG9jayA9ICNCNERYQWo6WzB4YjQ3OTMxNTAtPjB4YjQ3ZDU2YzAsIExMSW50RnVuY3Rp
b25DYWxsLCA0OV0KR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBWaXJ0dWFsIGNhbGwgc2xvdyBwYXRo
IHRodW5rOgogICAgQ29kZSBhdCBbMHhiNGM2MDU2MSwgMHhiNGM2MDYyMSk6CiAgICAweGI0YzYw
NTYwOiAgICBsZHIgICAgcjEyLCBbcjIsICM1Ml0KICAgIDB4YjRjNjA1NjQ6ICAgIGFkZHcgICBy
MTIsIHIxMiwgIzEKICAgIDB4YjRjNjA1Njg6ICAgIHN0ciAgICByMTIsIFtyMiwgIzUyXQogICAg
MHhiNGM2MDU2YzogICAgY21uICAgIHIxLCAjNQogICAgMHhiNGM2MDU3MDogICAgYm5lICAgIDB4
YjRjNjA1ODgKICAgIDB4YjRjNjA1NzI6ICAgIGxkcmIgICByNiwgW3IwLCAjNV0KICAgIDB4YjRj
NjA1NzQ6ICAgIGNtcCAgICByMiwgIzIzCiAgICAweGI0YzYwNTc2OiAgICBibmUgICAgMHhiNGM2
MDU4OAogICAgMHhiNGM2MDU3ODogICAgbGRyICAgIHI4LCBbcjAsICMyMF0KICAgIDB4YjRjNjA1
N2M6ICAgIGxkciAgICByOCwgW3I4LCAjMjhdCiAgICAweGI0YzYwNTgwOiAgICB0c3QgICAgcjgs
IHI4CiAgICAweGI0YzYwNTg0OiAgICBiZXEgICAgMHhiNGM2MDU4OAogICAgMHhiNGM2MDU4Njog
ICAgYnggICAgIHI4CiAgICAweGI0YzYwNTg4OiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjRj
NjA1OGM6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjRjNjA1OGU6ICAgIG1vdncgICByNiwgIzQy
MTI4CiAgICAweGI0YzYwNTkyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNGM2MDU5Njog
ICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI0YzYwNTk4OiAgICBtdm4gICAgcjEyLCAjMjMKICAg
IDB4YjRjNjA1OWM6ICAgIG1vdiAgICBzcCwgc3AKICAgIDB4YjRjNjA1OWU6ICAgIGFkZCAgICBz
cCwgcjEyCiAgICAweGI0YzYwNWEwOiAgICBtb3YgICAgcjEsIHIyCiAgICAweGI0YzYwNWEyOiAg
ICBtb3YgICAgcjAsIHI3CiAgICAweGI0YzYwNWE0OiAgICBtb3Z3ICAgcjQsICM1MTI3NwogICAg
MHhiNGM2MDVhODogICAgbW92dCAgIHI0LCAjNDY3NzYKICAgIDB4YjRjNjA1YWM6ICAgIGJseCAg
ICByNAogICAgMHhiNGM2MDVhZTogICAgYWRkICAgIHNwLCBzcCwgIzYKICAgIDB4YjRjNjA1YjA6
ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjRjNjA1YjI6ICAgIHBvcCAgICB7cjcsIGxyfQogICAg
MHhiNGM2MDViNjogICAgdHN0ICAgIHIxLCByMQogICAgMHhiNGM2MDViODogICAgYmVxICAgIDB4
YjRjNjA2MDgKICAgIDB4YjRjNjA1YmE6ICAgIG1vdiAgICByNSwgbHIKICAgIDB4YjRjNjA1YmM6
ICAgIGxkciAgICByMSwgW3I3LCAjMjRdCiAgICAweGI0YzYwNWJlOiAgICBsZHIgICAgcjMsIFty
NywgIzhdCiAgICAweGI0YzYwNWMwOiAgICBsZHIgICAgcjMsIFtyMywgIzMyXQogICAgMHhiNGM2
MDVjMjogICAgY21wICAgIHIzLCByMQogICAgMHhiNGM2MDVjNDogICAgYmxzICAgIDB4YjRjNjA1
YzgKICAgIDB4YjRjNjA1YzY6ICAgIG1vdiAgICByMSwgcjMKICAgIDB4YjRjNjA1Yzg6ICAgIGFk
ZHMgICByMSwgcjEsICM1CiAgICAweGI0YzYwNWNhOiAgICBtdm4gICAgcjEyLCAjMQogICAgMHhi
NGM2MDVjZTogICAgYW5kICAgIHIxLCByMSwgcjEyCiAgICAweGI0YzYwNWQyOiAgICBtb3YgICAg
cjEyLCAjOAogICAgMHhiNGM2MDVkNjogICAgc211bGwgIHIxLCByMTIsIHIxLCByMTIKICAgIDB4
YjRjNjA1ZGE6ICAgIGFkZHMgICByMywgcjcsIHIxCiAgICAweGI0YzYwNWRjOiAgICBsZHIgICAg
cjEsIFtzcCwgIzE2XQogICAgMHhiNGM2MDVkZTogICAgYWRkcyAgIHIxLCByMSwgIzUKICAgIDB4
YjRjNjA1ZTA6ICAgIG12biAgICByMTIsICMxCiAgICAweGI0YzYwNWU0OiAgICBhbmQgICAgcjEs
IHIxLCByMTIKICAgIDB4YjRjNjA1ZTg6ICAgIG1vdiAgICByMTIsICM4CiAgICAweGI0YzYwNWVj
OiAgICBzbXVsbCAgcjEsIHIxMiwgcjEsIHIxMgogICAgMHhiNGM2MDVmMDogICAgbGRyICAgIGxy
LCBbcjcsICM0XQogICAgMHhiNGM2MDVmNDogICAgc3VicyAgIHIxLCAjOAogICAgMHhiNGM2MDVm
NjogICAgc3VicyAgIHIzLCByMywgcjEKICAgIDB4YjRjNjA1Zjg6ICAgIGxkciAgICByNywgW3I3
XQogICAgMHhiNGM2MDVmYTogICAgc3VicyAgIHIxLCByMSwgIzQKICAgIDB4YjRjNjA1ZmM6ICAg
IGxkciAgICByMiwgW3NwLCByMV0KICAgIDB4YjRjNjA2MDA6ICAgIHN0ciAgICByMiwgW3IzLCBy
MV0KICAgIDB4YjRjNjA2MDI6ICAgIHRzdCAgICByMSwgcjEKICAgIDB4YjRjNjA2MDQ6ICAgIGJu
ZSAgICAweGI0YzYwN2ZhCiAgICAweGI0YzYwNjA2OiAgICBtb3YgICAgc3AsIHIzCiAgICAweGI0
YzYwNjA4OiAgICBieCAgICAgcjAKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3Jw
aGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9u
ID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHlt
b3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0
aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBv
bHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxv
Y2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9y
IHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0
YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8g
Zm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwg
ZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcgY2FsbCBsaW5rIGlu
Zm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTIx
OSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcgY2FsbCBsaW5r
IGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1
ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcgY2FsbCBs
aW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhi
NGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcgY2Fs
bCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0g
MHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcg
Y2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxl
ID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJp
bmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRh
YmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKR2Vu
ZXJhdGVkIEpJVCBjb2RlIGZvciBQb2x5bW9ycGhpYyBjYWxsIHN0dWIgZm9yIDxnbG9iYWw+I0J5
UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdLCByZXR1
cm4gcG9pbnQgMHhiNGM1ZTIxOSwgdGFyZ2V0cyA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDog
MHhiNDc5YmM4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhi
NDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQU1JeVRmOlsweGI0NzkyNTgwLT4weGI0N2Q0ZGMwLCBM
TEludEZ1bmN0aW9uQ2FsbCwgNjFdKSwgY29kZUJsb2NrID0gI0FNSXlUZjpbMHhiNDc5MjU4MC0+
MHhiNDdkNGRjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDYxXT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9u
OiBDZWxsOiAweGI0NzliYmMwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQ
cm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNDWVZUbFc6WzB4YjQ3OTI0MzAtPjB4YjQ3
ZDRjYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2NF0pLCBjb2RlQmxvY2sgPSAjQ1lWVGxXOlsweGI0
NzkyNDMwLT4weGI0N2Q0Y2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjRdPiwgPHZhcmlhbnQgPSAo
RnVuY3Rpb246IENlbGw6IDB4YjQ3OWJiMDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9u
QXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JReUl0RjpbMHhiNDc5MjJl
MC0+MHhiNDdkNGJjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNCUXlJ
dEY6WzB4YjQ3OTIyZTAtPjB4YjQ3ZDRiYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0+LCA8dmFy
aWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmE0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24s
IHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQVVoRkhXOlsw
eGI0NzkyMTkwLT4weGI0N2Q0YWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2Nr
ID0gI0FVaEZIVzpbMHhiNDc5MjE5MC0+MHhiNDdkNGFjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcw
XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliOTgwICgweGI0N2Y3MDkwOltG
dW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNE
OE00MFk6WzB4YjQ3OTIwNDAtPjB4YjQ3ZDQ5YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBj
b2RlQmxvY2sgPSAjRDhNNDBZOlsweGI0NzkyMDQwLT4weGI0N2Q0OWMwLCBMTEludEZ1bmN0aW9u
Q2FsbCwgNzBdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWI4YzAgKDB4YjQ3
ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0
YWJsZTogI0JYR0swRDpbMHhiNDc5MWVmMC0+MHhiNDdkNDhjMCwgTExJbnRGdW5jdGlvbkNhbGws
IDcwXSksIGNvZGVCbG9jayA9ICNCWEdLMEQ6WzB4YjQ3OTFlZjAtPjB4YjQ3ZDQ4YzAsIExMSW50
RnVuY3Rpb25DYWxsLCA3MF0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5Yjgw
MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0p
OyBFeGVjdXRhYmxlOiAjRGsxRTllOlsweGI0NzkxZGEwLT4weGI0N2Q0N2MwLCBMTEludEZ1bmN0
aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0RrMUU5ZTpbMHhiNDc5MWRhMC0+MHhiNDdkNDdj
MCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAw
eGI0NzliNzQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0
N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFaktLZW46WzB4YjQ3OTFjNTAtPjB4YjQ3ZDQ2YzAsIExM
SW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjRWpLS2VuOlsweGI0NzkxYzUwLT4w
eGI0N2Q0NmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246
IENlbGw6IDB4YjQ3OWI2ODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFBy
b3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0VnVTR0bDpbMHhiNDc5MWIwMC0+MHhiNDdk
NDVjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNFZ1U0dGw6WzB4YjQ3
OTFiMDAtPjB4YjQ3ZDQ1YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0+LCA8dmFyaWFudCA9IChG
dW5jdGlvbjogQ2VsbDogMHhiNDdmMDU4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25B
cnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRGxKOExyOlsweGI0NzkzM2Yw
LT4weGI0N2Q1OGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDldKSwgY29kZUJsb2NrID0gI0RsSjhM
cjpbMHhiNDc5MzNmMC0+MHhiNDdkNThjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5XT4sIDx2YXJp
YW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwNGMwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwg
e30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFWlZ1R0w6WzB4
YjQ3OTMyYTAtPjB4YjQ3ZDU3YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0OV0pLCBjb2RlQmxvY2sg
PSAjRVpWdUdMOlsweGI0NzkzMmEwLT4weGI0N2Q1N2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDld
PiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjA0MDAgKDB4YjQ3ZjcwOTA6W0Z1
bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0I0
RFhBajpbMHhiNDc5MzE1MC0+MHhiNDdkNTZjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5XSksIGNv
ZGVCbG9jayA9ICNCNERYQWo6WzB4YjQ3OTMxNTAtPjB4YjQ3ZDU2YzAsIExMSW50RnVuY3Rpb25D
YWxsLCA0OV0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDM0MCAoMHhiNDdm
NzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRh
YmxlOiAjQ21EVjh6OlsweGI0NzkzMDAwLT4weGI0N2Q1NWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NDldKSwgY29kZUJsb2NrID0gI0NtRFY4ejpbMHhiNDc5MzAwMC0+MHhiNDdkNTVjMCwgTExJbnRG
dW5jdGlvbkNhbGwsIDQ5XT46CiAgICBDb2RlIGF0IFsweGI0YzYwMjAxLCAweGI0YzYwNGMxKToK
ICAgIDB4YjRjNjAyMDA6ICAgIG1vdncgICByMSwgIzY0NzUyCiAgICAweGI0YzYwMjA0OiAgICBt
b3Z0ICAgcjEsICMxODYKICAgIDB4YjRjNjAyMDg6ICAgIG1vdncgICByMTIsICM0Nzg3MgogICAg
MHhiNGM2MDIwYzogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzYwMjEwOiAgICBjbXAg
ICAgcjAsIHIxMgogICAgMHhiNGM2MDIxNDogICAgYmx0ICAgIDB4YjRjNjAzN2MKICAgIDB4YjRj
NjAyMTg6ICAgIG1vdncgICByMTIsICMxMDI0CiAgICAweGI0YzYwMjFjOiAgICBtb3Z0ICAgcjEy
LCAjNDYyMDcKICAgIDB4YjRjNjAyMjA6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzYwMjI0
OiAgICBibHQgICAgMHhiNGM2MDJiMgogICAgMHhiNGM2MDIyNjogICAgbW92dyAgIHIxMiwgIzEy
MTYKICAgIDB4YjRjNjAyMmE6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM2MDIyZTog
ICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNjAyMzI6ICAgIGJuZSAgICAweGI0YzYwMjU0CiAg
ICAweGI0YzYwMjM0OiAgICBsZHIgICAgcjEyLCBbcjEsICM0MF0KICAgIDB4YjRjNjAyMzg6ICAg
IGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNjAyM2M6ICAgIHN0ciAgICByMTIsIFtyMSwg
IzQwXQogICAgMHhiNGM2MDI0MDogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzYwMjQ0
OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjAyNDg6ICAgIGJseCAgICByMTIKICAg
IDB4YjRjNjAyNGE6ICAgIG5vcCAgICAKICAgIDB4YjRjNjAyNGM6ICAgIG5vcCAgICAKICAgIDB4
YjRjNjAyNTA6ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0YzYwMjU0OiAgICBtb3Z3ICAg
cjEyLCAjMTQwOAogICAgMHhiNGM2MDI1ODogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0
YzYwMjVjOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM2MDI2MDogICAgYm5lICAgIDB4YjRj
NjAyODIKICAgIDB4YjRjNjAyNjI6ICAgIGxkciAgICByMTIsIFtyMSwgIzM2XQogICAgMHhiNGM2
MDI2NjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM2MDI2YTogICAgc3RyICAgIHIx
MiwgW3IxLCAjMzZdCiAgICAweGI0YzYwMjZlOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4
YjRjNjAyNzI6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM2MDI3NjogICAgYmx4ICAg
IHIxMgogICAgMHhiNGM2MDI3ODogICAgbm9wICAgIAogICAgMHhiNGM2MDI3YTogICAgbm9wICAg
IAogICAgMHhiNGM2MDI3ZTogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNjAyODI6ICAg
IG1vdncgICByMTIsICMxMDI0CiAgICAweGI0YzYwMjg2OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcK
ICAgIDB4YjRjNjAyOGE6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzYwMjhlOiAgICBibmUg
ICAgMHhiNGM2MDQ5ZQogICAgMHhiNGM2MDI5MjogICAgbGRyICAgIHIxMiwgW3IxLCAjNDRdCiAg
ICAweGI0YzYwMjk2OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzYwMjlhOiAgICBz
dHIgICAgcjEyLCBbcjEsICM0NF0KICAgIDB4YjRjNjAyOWU6ICAgIG1vdncgICByMTIsICMzMTEz
NwogICAgMHhiNGM2MDJhMjogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzYwMmE2OiAg
ICBibHggICAgcjEyCiAgICAweGI0YzYwMmE4OiAgICBub3AgICAgCiAgICAweGI0YzYwMmFhOiAg
ICBub3AgICAgCiAgICAweGI0YzYwMmFlOiAgICBiICAgICAgMHhiNGM1YmY2NgogICAgMHhiNGM2
MDJiMjogICAgbW92dyAgIHIxMiwgIzQ4MjU2CiAgICAweGI0YzYwMmI2OiAgICBtb3Z0ICAgcjEy
LCAjNDYyMDEKICAgIDB4YjRjNjAyYmE6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzYwMmJl
OiAgICBibHQgICAgMHhiNGM2MDMxZQogICAgMHhiNGM2MDJjMDogICAgbW92dyAgIHIxMiwgIzQ4
MjU2CiAgICAweGI0YzYwMmM0OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNjAyYzg6
ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzYwMmNjOiAgICBibmUgICAgMHhiNGM2MDJlZQog
ICAgMHhiNGM2MDJjZTogICAgbGRyICAgIHIxMiwgW3IxXQogICAgMHhiNGM2MDJkMjogICAgYWRk
dyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM2MDJkNjogICAgc3RyICAgIHIxMiwgW3IxXQogICAg
MHhiNGM2MDJkYTogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzYwMmRlOiAgICBtb3Z0
ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjAyZTI6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNjAy
ZTQ6ICAgIG5vcCAgICAKICAgIDB4YjRjNjAyZTY6ICAgIG5vcCAgICAKICAgIDB4YjRjNjAyZWE6
ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0YzYwMmVlOiAgICBtb3Z3ICAgcjEyLCAjODMy
CiAgICAweGI0YzYwMmYyOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNjAyZjY6ICAg
IGNtcCAgICByMCwgcjEyCiAgICAweGI0YzYwMmZhOiAgICBibmUgICAgMHhiNGM2MDQ5ZQogICAg
MHhiNGM2MDJmZTogICAgbGRyICAgIHIxMiwgW3IxLCAjNDhdCiAgICAweGI0YzYwMzAyOiAgICBh
ZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzYwMzA2OiAgICBzdHIgICAgcjEyLCBbcjEsICM0
OF0KICAgIDB4YjRjNjAzMGE6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM2MDMwZTog
ICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzYwMzEyOiAgICBibHggICAgcjEyCiAgICAw
eGI0YzYwMzE0OiAgICBub3AgICAgCiAgICAweGI0YzYwMzE2OiAgICBub3AgICAgCiAgICAweGI0
YzYwMzFhOiAgICBiICAgICAgMHhiNGM1YmY2NgogICAgMHhiNGM2MDMxZTogICAgbW92dyAgIHIx
MiwgIzQ3ODcyCiAgICAweGI0YzYwMzIyOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRj
NjAzMjY6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzYwMzJhOiAgICBibmUgICAgMHhiNGM2
MDM0YwogICAgMHhiNGM2MDMyYzogICAgbGRyICAgIHIxMiwgW3IxLCAjOF0KICAgIDB4YjRjNjAz
MzA6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNjAzMzQ6ICAgIHN0ciAgICByMTIs
IFtyMSwgIzhdCiAgICAweGI0YzYwMzM4OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRj
NjAzM2M6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM2MDM0MDogICAgYmx4ICAgIHIx
MgogICAgMHhiNGM2MDM0MjogICAgbm9wICAgIAogICAgMHhiNGM2MDM0NDogICAgbm9wICAgIAog
ICAgMHhiNGM2MDM0ODogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNjAzNGM6ICAgIG1v
dncgICByMTIsICM0ODA2NAogICAgMHhiNGM2MDM1MDogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAg
ICAweGI0YzYwMzU0OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM2MDM1ODogICAgYm5lICAg
IDB4YjRjNjA0OWUKICAgIDB4YjRjNjAzNWM6ICAgIGxkciAgICByMTIsIFtyMSwgIzRdCiAgICAw
eGI0YzYwMzYwOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzYwMzY0OiAgICBzdHIg
ICAgcjEyLCBbcjEsICM0XQogICAgMHhiNGM2MDM2ODogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAg
ICAweGI0YzYwMzZjOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjAzNzA6ICAgIGJs
eCAgICByMTIKICAgIDB4YjRjNjAzNzI6ICAgIG5vcCAgICAKICAgIDB4YjRjNjAzNzQ6ICAgIG5v
cCAgICAKICAgIDB4YjRjNjAzNzg6ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0YzYwMzdj
OiAgICBtb3Z3ICAgcjEyLCAjNDcyOTYKICAgIDB4YjRjNjAzODA6ICAgIG1vdnQgICByMTIsICM0
NjIwMQogICAgMHhiNGM2MDM4NDogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNjAzODg6ICAg
IGJsdCAgICAweGI0YzYwNDE0CiAgICAweGI0YzYwMzhhOiAgICBtb3Z3ICAgcjEyLCAjNDc0ODgK
ICAgIDB4YjRjNjAzOGU6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM2MDM5MjogICAg
Y21wICAgIHIwLCByMTIKICAgIDB4YjRjNjAzOTY6ICAgIGJuZSAgICAweGI0YzYwM2I4CiAgICAw
eGI0YzYwMzk4OiAgICBsZHIgICAgcjEyLCBbcjEsICMxNl0KICAgIDB4YjRjNjAzOWM6ICAgIGFk
ZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNjAzYTA6ICAgIHN0ciAgICByMTIsIFtyMSwgIzE2
XQogICAgMHhiNGM2MDNhNDogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzYwM2E4OiAg
ICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjAzYWM6ICAgIGJseCAgICByMTIKICAgIDB4
YjRjNjAzYWU6ICAgIG5vcCAgICAKICAgIDB4YjRjNjAzYjA6ICAgIG5vcCAgICAKICAgIDB4YjRj
NjAzYjQ6ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0YzYwM2I4OiAgICBtb3Z3ICAgcjEy
LCAjNDcyOTYKICAgIDB4YjRjNjAzYmM6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM2
MDNjMDogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNjAzYzQ6ICAgIGJuZSAgICAweGI0YzYw
M2U2CiAgICAweGI0YzYwM2M2OiAgICBsZHIgICAgcjEyLCBbcjEsICMyMF0KICAgIDB4YjRjNjAz
Y2E6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNjAzY2U6ICAgIHN0ciAgICByMTIs
IFtyMSwgIzIwXQogICAgMHhiNGM2MDNkMjogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0
YzYwM2Q2OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjAzZGE6ICAgIGJseCAgICBy
MTIKICAgIDB4YjRjNjAzZGM6ICAgIG5vcCAgICAKICAgIDB4YjRjNjAzZGU6ICAgIG5vcCAgICAK
ICAgIDB4YjRjNjAzZTI6ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0YzYwM2U2OiAgICBt
b3Z3ICAgcjEyLCAjNDc2ODAKICAgIDB4YjRjNjAzZWE6ICAgIG1vdnQgICByMTIsICM0NjIwMQog
ICAgMHhiNGM2MDNlZTogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNjAzZjI6ICAgIGJuZSAg
ICAweGI0YzYwNDllCiAgICAweGI0YzYwM2Y0OiAgICBsZHIgICAgcjEyLCBbcjEsICMxMl0KICAg
IDB4YjRjNjAzZjg6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNjAzZmM6ICAgIHN0
ciAgICByMTIsIFtyMSwgIzEyXQogICAgMHhiNGM2MDQwMDogICAgbW92dyAgIHIxMiwgIzMxMTM3
CiAgICAweGI0YzYwNDA0OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjA0MDg6ICAg
IGJseCAgICByMTIKICAgIDB4YjRjNjA0MGE6ICAgIG5vcCAgICAKICAgIDB4YjRjNjA0MGM6ICAg
IG5vcCAgICAKICAgIDB4YjRjNjA0MTA6ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0YzYw
NDE0OiAgICBtb3Z3ICAgcjEyLCAjNDcxMDQKICAgIDB4YjRjNjA0MTg6ICAgIG1vdnQgICByMTIs
ICM0NjIwMQogICAgMHhiNGM2MDQxYzogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNjA0MjA6
ICAgIGJuZSAgICAweGI0YzYwNDQyCiAgICAweGI0YzYwNDIyOiAgICBsZHIgICAgcjEyLCBbcjEs
ICMyNF0KICAgIDB4YjRjNjA0MjY6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNjA0
MmE6ICAgIHN0ciAgICByMTIsIFtyMSwgIzI0XQogICAgMHhiNGM2MDQyZTogICAgbW92dyAgIHIx
MiwgIzMxMTM3CiAgICAweGI0YzYwNDMyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRj
NjA0MzY6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNjA0Mzg6ICAgIG5vcCAgICAKICAgIDB4YjRj
NjA0M2E6ICAgIG5vcCAgICAKICAgIDB4YjRjNjA0M2U6ICAgIGIgICAgICAweGI0YzViZjY2CiAg
ICAweGI0YzYwNDQyOiAgICBtb3Z3ICAgcjEyLCAjNDY3MjAKICAgIDB4YjRjNjA0NDY6ICAgIG1v
dnQgICByMTIsICM0NjIwMQogICAgMHhiNGM2MDQ0YTogICAgY21wICAgIHIwLCByMTIKICAgIDB4
YjRjNjA0NGU6ICAgIGJuZSAgICAweGI0YzYwNDcwCiAgICAweGI0YzYwNDUwOiAgICBsZHIgICAg
cjEyLCBbcjEsICMzMl0KICAgIDB4YjRjNjA0NTQ6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAg
IDB4YjRjNjA0NTg6ICAgIHN0ciAgICByMTIsIFtyMSwgIzMyXQogICAgMHhiNGM2MDQ1YzogICAg
bW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzYwNDYwOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIK
ICAgIDB4YjRjNjA0NjQ6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNjA0NjY6ICAgIG5vcCAgICAK
ICAgIDB4YjRjNjA0Njg6ICAgIG5vcCAgICAKICAgIDB4YjRjNjA0NmM6ICAgIGIgICAgICAweGI0
YzViZjY2CiAgICAweGI0YzYwNDcwOiAgICBtb3Z3ICAgcjEyLCAjNDY5MTIKICAgIDB4YjRjNjA0
NzQ6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM2MDQ3ODogICAgY21wICAgIHIwLCBy
MTIKICAgIDB4YjRjNjA0N2M6ICAgIGJuZSAgICAweGI0YzYwNDllCiAgICAweGI0YzYwNDdlOiAg
ICBsZHIgICAgcjEyLCBbcjEsICMyOF0KICAgIDB4YjRjNjA0ODI6ICAgIGFkZHcgICByMTIsIHIx
MiwgIzEKICAgIDB4YjRjNjA0ODY6ICAgIHN0ciAgICByMTIsIFtyMSwgIzI4XQogICAgMHhiNGM2
MDQ4YTogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzYwNDhlOiAgICBtb3Z0ICAgcjEy
LCAjNDY4MzIKICAgIDB4YjRjNjA0OTI6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNjA0OTQ6ICAg
IG5vcCAgICAKICAgIDB4YjRjNjA0OTY6ICAgIG5vcCAgICAKICAgIDB4YjRjNjA0OWE6ICAgIGIg
ICAgICAweGI0YzViZjY2CiAgICAweGI0YzYwNDllOiAgICBtdm4gICAgcjEsICM0CiAgICAweGI0
YzYwNGEyOiAgICBtb3Z3ICAgcjIsICM0NTQ4OAogICAgMHhiNGM2MDRhNjogICAgbW92dCAgIHIy
LCAjNDYyNjMKICAgIDB4YjRjNjA0YWE6ICAgIG1vdncgICByOCwgIzU3ODgxCiAgICAweGI0YzYw
NGFlOiAgICBtb3Z0ICAgcjgsICM0NjI3NwogICAgMHhiNGM2MDRiMjogICAgbW92ICAgIGxyLCBy
OAogICAgMHhiNGM2MDRiNDogICAgbW92dyAgIHIxMiwgIzE1OTY5CiAgICAweGI0YzYwNGI4OiAg
ICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNjA0YmM6ICAgIGJ4ICAgICByMTIKTGlua2lu
ZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdh
YmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxs
OiAweGI0NzliYzgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzow
eGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBTUl5VGY6WzB4YjQ3OTI1ODAtPjB4YjQ3ZDRkYzAs
IExMSW50RnVuY3Rpb25DYWxsLCA2MV0pLCBjb2RlQmxvY2sgPSAjQU1JeVRmOlsweGI0NzkyNTgw
LT4weGI0N2Q0ZGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjFdCkxpbmtpbmcgcG9seW1vcnBoaWMg
Y2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5l
R2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmJjMCAo
MHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBF
eGVjdXRhYmxlOiAjQ1lWVGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0Y2MwLCBMTEludEZ1bmN0aW9u
Q2FsbCwgNjRdKSwgY29kZUJsb2NrID0gI0NZVlRsVzpbMHhiNDc5MjQzMC0+MHhiNDdkNGNjMCwg
TExJbnRGdW5jdGlvbkNhbGwsIDY0XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2Jh
bD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0g
YXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJiMDAgKDB4YjQ3ZjcwOTA6W0Z1
bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JR
eUl0RjpbMHhiNDc5MjJlMC0+MHhiNDdkNGJjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNv
ZGVCbG9jayA9ICNCUXlJdEY6WzB4YjQ3OTIyZTAtPjB4YjQ3ZDRiYzAsIExMSW50RnVuY3Rpb25D
YWxsLCA3MF0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhi
NDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8g
KEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYTQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5v
bkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBVWhGSFc6WzB4YjQ3OTIx
OTAtPjB4YjQ3ZDRhYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjQVVo
RkhXOlsweGI0NzkyMTkwLT4weGI0N2Q0YWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdCkxpbmtp
bmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3
YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2Vs
bDogMHhiNDc5Yjk4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86
MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRDhNNDBZOlsweGI0NzkyMDQwLT4weGI0N2Q0OWMw
LCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0Q4TTQwWTpbMHhiNDc5MjA0
MC0+MHhiNDdkNDljMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXQpMaW5raW5nIHBvbHltb3JwaGlj
IGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGlu
ZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWI4YzAg
KDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsg
RXhlY3V0YWJsZTogI0JYR0swRDpbMHhiNDc5MWVmMC0+MHhiNDdkNDhjMCwgTExJbnRGdW5jdGlv
bkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNCWEdLMEQ6WzB4YjQ3OTFlZjAtPjB4YjQ3ZDQ4YzAs
IExMSW50RnVuY3Rpb25DYWxsLCA3MF0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9i
YWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRd
IGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliODAwICgweGI0N2Y3MDkwOltG
dW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNE
azFFOWU6WzB4YjQ3OTFkYTAtPjB4YjQ3ZDQ3YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBj
b2RlQmxvY2sgPSAjRGsxRTllOlsweGI0NzkxZGEwLT4weGI0N2Q0N2MwLCBMTEludEZ1bmN0aW9u
Q2FsbCwgNzBdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4
YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRv
IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5Yjc0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBO
b25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRWpLS2VuOlsweGI0Nzkx
YzUwLT4weGI0N2Q0NmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0Vq
S0tlbjpbMHhiNDc5MWM1MC0+MHhiNDdkNDZjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXQpMaW5r
aW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0
N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENl
bGw6IDB4YjQ3OWI2ODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3Rv
OjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0VnVTR0bDpbMHhiNDc5MWIwMC0+MHhiNDdkNDVj
MCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNFZ1U0dGw6WzB4YjQ3OTFi
MDAtPjB4YjQ3ZDQ1YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0KTGlua2luZyBwb2x5bW9ycGhp
YyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxp
bmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwNTgw
ICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7
IEV4ZWN1dGFibGU6ICNEbEo4THI6WzB4YjQ3OTMzZjAtPjB4YjQ3ZDU4YzAsIExMSW50RnVuY3Rp
b25DYWxsLCA0OV0pLCBjb2RlQmxvY2sgPSAjRGxKOExyOlsweGI0NzkzM2YwLT4weGI0N2Q1OGMw
LCBMTEludEZ1bmN0aW9uQ2FsbCwgNDldCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xv
YmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0
XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDRjMCAoMHhiNDdmNzA5MDpb
RnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAj
RVpWdUdMOlsweGI0NzkzMmEwLT4weGI0N2Q1N2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDldKSwg
Y29kZUJsb2NrID0gI0VaVnVHTDpbMHhiNDc5MzJhMC0+MHhiNDdkNTdjMCwgTExJbnRGdW5jdGlv
bkNhbGwsIDQ5XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsw
eGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0
byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjA0MDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwg
Tm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0I0RFhBajpbMHhiNDc5
MzE1MC0+MHhiNDdkNTZjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5XSksIGNvZGVCbG9jayA9ICNC
NERYQWo6WzB4YjQ3OTMxNTAtPjB4YjQ3ZDU2YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0OV0KTGlu
a2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhi
NDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBD
ZWxsOiAweGI0N2YwMzQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90
bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNDbURWOHo6WzB4YjQ3OTMwMDAtPjB4YjQ3ZDU1
YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0OV0pLCBjb2RlQmxvY2sgPSAjQ21EVjh6OlsweGI0Nzkz
MDAwLT4weGI0N2Q1NWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDldCkdlbmVyYXRlZCBKSVQgY29k
ZSBmb3IgVmlydHVhbCBjYWxsIHNsb3cgcGF0aCB0aHVuazoKICAgIENvZGUgYXQgWzB4YjRjNjAx
MDEsIDB4YjRjNjAxYzEpOgogICAgMHhiNGM2MDEwMDogICAgbGRyICAgIHIxMiwgW3IyLCAjNTJd
CiAgICAweGI0YzYwMTA0OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzYwMTA4OiAg
ICBzdHIgICAgcjEyLCBbcjIsICM1Ml0KICAgIDB4YjRjNjAxMGM6ICAgIGNtbiAgICByMSwgIzUK
ICAgIDB4YjRjNjAxMTA6ICAgIGJuZSAgICAweGI0YzYwMTI4CiAgICAweGI0YzYwMTEyOiAgICBs
ZHJiICAgcjYsIFtyMCwgIzVdCiAgICAweGI0YzYwMTE0OiAgICBjbXAgICAgcjIsICMyMwogICAg
MHhiNGM2MDExNjogICAgYm5lICAgIDB4YjRjNjAxMjgKICAgIDB4YjRjNjAxMTg6ICAgIGxkciAg
ICByOCwgW3IwLCAjMjBdCiAgICAweGI0YzYwMTFjOiAgICBsZHIgICAgcjgsIFtyOCwgIzI4XQog
ICAgMHhiNGM2MDEyMDogICAgdHN0ICAgIHI4LCByOAogICAgMHhiNGM2MDEyNDogICAgYmVxICAg
IDB4YjRjNjAxMjgKICAgIDB4YjRjNjAxMjY6ICAgIGJ4ICAgICByOAogICAgMHhiNGM2MDEyODog
ICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI0YzYwMTJjOiAgICBtb3YgICAgcjcsIHNwCiAgICAw
eGI0YzYwMTJlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNGM2MDEzMjogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgIDB4YjRjNjAxMzY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNGM2
MDEzODogICAgbXZuICAgIHIxMiwgIzIzCiAgICAweGI0YzYwMTNjOiAgICBtb3YgICAgc3AsIHNw
CiAgICAweGI0YzYwMTNlOiAgICBhZGQgICAgc3AsIHIxMgogICAgMHhiNGM2MDE0MDogICAgbW92
ICAgIHIxLCByMgogICAgMHhiNGM2MDE0MjogICAgbW92ICAgIHIwLCByNwogICAgMHhiNGM2MDE0
NDogICAgbW92dyAgIHI0LCAjNTEyNzcKICAgIDB4YjRjNjAxNDg6ICAgIG1vdnQgICByNCwgIzQ2
Nzc2CiAgICAweGI0YzYwMTRjOiAgICBibHggICAgcjQKICAgIDB4YjRjNjAxNGU6ICAgIGFkZCAg
ICBzcCwgc3AsICM2CiAgICAweGI0YzYwMTUwOiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI0YzYw
MTUyOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjRjNjAxNTY6ICAgIHRzdCAgICByMSwgcjEK
ICAgIDB4YjRjNjAxNTg6ICAgIGJlcSAgICAweGI0YzYwMWE4CiAgICAweGI0YzYwMTVhOiAgICBt
b3YgICAgcjUsIGxyCiAgICAweGI0YzYwMTVjOiAgICBsZHIgICAgcjEsIFtyNywgIzI0XQogICAg
MHhiNGM2MDE1ZTogICAgbGRyICAgIHIzLCBbcjcsICM4XQogICAgMHhiNGM2MDE2MDogICAgbGRy
ICAgIHIzLCBbcjMsICMzMl0KICAgIDB4YjRjNjAxNjI6ICAgIGNtcCAgICByMywgcjEKICAgIDB4
YjRjNjAxNjQ6ICAgIGJscyAgICAweGI0YzYwMTY4CiAgICAweGI0YzYwMTY2OiAgICBtb3YgICAg
cjEsIHIzCiAgICAweGI0YzYwMTY4OiAgICBhZGRzICAgcjEsIHIxLCAjNQogICAgMHhiNGM2MDE2
YTogICAgbXZuICAgIHIxMiwgIzEKICAgIDB4YjRjNjAxNmU6ICAgIGFuZCAgICByMSwgcjEsIHIx
MgogICAgMHhiNGM2MDE3MjogICAgbW92ICAgIHIxMiwgIzgKICAgIDB4YjRjNjAxNzY6ICAgIHNt
dWxsICByMSwgcjEyLCByMSwgcjEyCiAgICAweGI0YzYwMTdhOiAgICBhZGRzICAgcjMsIHI3LCBy
MQogICAgMHhiNGM2MDE3YzogICAgbGRyICAgIHIxLCBbc3AsICMxNl0KICAgIDB4YjRjNjAxN2U6
ICAgIGFkZHMgICByMSwgcjEsICM1CiAgICAweGI0YzYwMTgwOiAgICBtdm4gICAgcjEyLCAjMQog
ICAgMHhiNGM2MDE4NDogICAgYW5kICAgIHIxLCByMSwgcjEyCiAgICAweGI0YzYwMTg4OiAgICBt
b3YgICAgcjEyLCAjOAogICAgMHhiNGM2MDE4YzogICAgc211bGwgIHIxLCByMTIsIHIxLCByMTIK
ICAgIDB4YjRjNjAxOTA6ICAgIGxkciAgICBsciwgW3I3LCAjNF0KICAgIDB4YjRjNjAxOTQ6ICAg
IHN1YnMgICByMSwgIzgKICAgIDB4YjRjNjAxOTY6ICAgIHN1YnMgICByMywgcjMsIHIxCiAgICAw
eGI0YzYwMTk4OiAgICBsZHIgICAgcjcsIFtyN10KICAgIDB4YjRjNjAxOWE6ICAgIHN1YnMgICBy
MSwgcjEsICM0CiAgICAweGI0YzYwMTljOiAgICBsZHIgICAgcjIsIFtzcCwgcjFdCiAgICAweGI0
YzYwMWEwOiAgICBzdHIgICAgcjIsIFtyMywgcjFdCiAgICAweGI0YzYwMWEyOiAgICB0c3QgICAg
cjEsIHIxCiAgICAweGI0YzYwMWE0OiAgICBibmUgICAgMHhiNGM2MDM5YQogICAgMHhiNGM2MDFh
NjogICAgbW92ICAgIHNwLCByMwogICAgMHhiNGM2MDFhODogICAgYnggICAgIHIwCkNsZWFyaW5n
IGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJs
ZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFy
aW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0
YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNs
ZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhl
Y3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDEx
CkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIo
ZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMx
NDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQ
dHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBi
YyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENv
ZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgp
LCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0
IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUy
MTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxs
IGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRj
NWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBj
YWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4
YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhp
YyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9
IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9y
cGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlv
biA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5
bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2Nh
dGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgUG9seW1v
cnBoaWMgY2FsbCBzdHViIGZvciA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJm
NTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSwgcmV0dXJuIHBvaW50IDB4YjRjNWUyMTksIHRhcmdl
dHMgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJjODAgKDB4YjQ3ZjcwOTA6W0Z1
bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FN
SXlUZjpbMHhiNDc5MjU4MC0+MHhiNDdkNGRjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDYxXSksIGNv
ZGVCbG9jayA9ICNBTUl5VGY6WzB4YjQ3OTI1ODAtPjB4YjQ3ZDRkYzAsIExMSW50RnVuY3Rpb25D
YWxsLCA2MV0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmJjMCAoMHhiNDdm
NzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRh
YmxlOiAjQ1lWVGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0Y2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NjRdKSwgY29kZUJsb2NrID0gI0NZVlRsVzpbMHhiNDc5MjQzMC0+MHhiNDdkNGNjMCwgTExJbnRG
dW5jdGlvbkNhbGwsIDY0XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYjAw
ICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7
IEV4ZWN1dGFibGU6ICNCUXlJdEY6WzB4YjQ3OTIyZTAtPjB4YjQ3ZDRiYzAsIExMSW50RnVuY3Rp
b25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjQlF5SXRGOlsweGI0NzkyMmUwLT4weGI0N2Q0YmMw
LCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4
YjQ3OWJhNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3
ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FVaEZIVzpbMHhiNDc5MjE5MC0+MHhiNDdkNGFjMCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNBVWhGSFc6WzB4YjQ3OTIxOTAtPjB4
YjQ3ZDRhYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjog
Q2VsbDogMHhiNDc5Yjk4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJv
dG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRDhNNDBZOlsweGI0NzkyMDQwLT4weGI0N2Q0
OWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0Q4TTQwWTpbMHhiNDc5
MjA0MC0+MHhiNDdkNDljMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXT4sIDx2YXJpYW50ID0gKEZ1
bmN0aW9uOiBDZWxsOiAweGI0NzliOGMwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFy
cmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCWEdLMEQ6WzB4YjQ3OTFlZjAt
PjB4YjQ3ZDQ4YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjQlhHSzBE
OlsweGI0NzkxZWYwLT4weGI0N2Q0OGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdPiwgPHZhcmlh
bnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWI4MDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7
fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0RrMUU5ZTpbMHhi
NDc5MWRhMC0+MHhiNDdkNDdjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9
ICNEazFFOWU6WzB4YjQ3OTFkYTAtPjB4YjQ3ZDQ3YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0+
LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5Yjc0MCAoMHhiNDdmNzA5MDpbRnVu
Y3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRWpL
S2VuOlsweGI0NzkxYzUwLT4weGI0N2Q0NmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29k
ZUJsb2NrID0gI0VqS0tlbjpbMHhiNDc5MWM1MC0+MHhiNDdkNDZjMCwgTExJbnRGdW5jdGlvbkNh
bGwsIDcwXT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliNjgwICgweGI0N2Y3
MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFi
bGU6ICNFZ1U0dGw6WzB4YjQ3OTFiMDAtPjB4YjQ3ZDQ1YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3
MF0pLCBjb2RlQmxvY2sgPSAjRWdVNHRsOlsweGI0NzkxYjAwLT4weGI0N2Q0NWMwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNzBdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjA1ODAg
KDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsg
RXhlY3V0YWJsZTogI0RsSjhMcjpbMHhiNDc5MzNmMC0+MHhiNDdkNThjMCwgTExJbnRGdW5jdGlv
bkNhbGwsIDQ5XSksIGNvZGVCbG9jayA9ICNEbEo4THI6WzB4YjQ3OTMzZjAtPjB4YjQ3ZDU4YzAs
IExMSW50RnVuY3Rpb25DYWxsLCA0OV0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhi
NDdmMDRjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdl
ZGRlMF0pOyBFeGVjdXRhYmxlOiAjRVpWdUdMOlsweGI0NzkzMmEwLT4weGI0N2Q1N2MwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNDldKSwgY29kZUJsb2NrID0gI0VaVnVHTDpbMHhiNDc5MzJhMC0+MHhi
NDdkNTdjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBD
ZWxsOiAweGI0N2YwNDAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90
bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCNERYQWo6WzB4YjQ3OTMxNTAtPjB4YjQ3ZDU2
YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0OV0pLCBjb2RlQmxvY2sgPSAjQjREWEFqOlsweGI0Nzkz
MTUwLT4weGI0N2Q1NmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDldPiwgPHZhcmlhbnQgPSAoRnVu
Y3Rpb246IENlbGw6IDB4YjQ3ZjAzNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJy
YXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0NtRFY4ejpbMHhiNDc5MzAwMC0+
MHhiNDdkNTVjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5XSksIGNvZGVCbG9jayA9ICNDbURWOHo6
WzB4YjQ3OTMwMDAtPjB4YjQ3ZDU1YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0OV0+LCA8dmFyaWFu
dCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDI4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9
LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQzZtcTd3OlsweGI0
NzkyZWIwLT4weGI0N2Q1NGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDldKSwgY29kZUJsb2NrID0g
I0M2bXE3dzpbMHhiNDc5MmViMC0+MHhiNDdkNTRjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5XT46
CiAgICBDb2RlIGF0IFsweGI0YzVlZjIxLCAweGI0YzVmMjIxKToKICAgIDB4YjRjNWVmMjA6ICAg
IG1vdncgICByMSwgIzY0ODA4CiAgICAweGI0YzVlZjI0OiAgICBtb3Z0ICAgcjEsICMxODYKICAg
IDB4YjRjNWVmMjg6ICAgIG1vdncgICByMTIsICM0ODA2NAogICAgMHhiNGM1ZWYyYzogICAgbW92
dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVlZjMwOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhi
NGM1ZWYzNDogICAgYmx0ICAgIDB4YjRjNWYwOWMKICAgIDB4YjRjNWVmMzg6ICAgIG1vdncgICBy
MTIsICMxMDI0CiAgICAweGI0YzVlZjNjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRj
NWVmNDA6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzVlZjQ0OiAgICBibHQgICAgMHhiNGM1
ZWZkMgogICAgMHhiNGM1ZWY0NjogICAgbW92dyAgIHIxMiwgIzE0MDgKICAgIDB4YjRjNWVmNGE6
ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1ZWY0ZTogICAgY21wICAgIHIwLCByMTIK
ICAgIDB4YjRjNWVmNTI6ICAgIGJuZSAgICAweGI0YzVlZjc0CiAgICAweGI0YzVlZjU0OiAgICBs
ZHIgICAgcjEyLCBbcjEsICMzNl0KICAgIDB4YjRjNWVmNTg6ICAgIGFkZHcgICByMTIsIHIxMiwg
IzEKICAgIDB4YjRjNWVmNWM6ICAgIHN0ciAgICByMTIsIFtyMSwgIzM2XQogICAgMHhiNGM1ZWY2
MDogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzVlZjY0OiAgICBtb3Z0ICAgcjEyLCAj
NDY4MzIKICAgIDB4YjRjNWVmNjg6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNWVmNmE6ICAgIG5v
cCAgICAKICAgIDB4YjRjNWVmNmM6ICAgIG5vcCAgICAKICAgIDB4YjRjNWVmNzA6ICAgIGIgICAg
ICAweGI0YzViZjY2CiAgICAweGI0YzVlZjc0OiAgICBtb3Z3ICAgcjEyLCAjMTAyNAogICAgMHhi
NGM1ZWY3ODogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzVlZjdjOiAgICBjbXAgICAg
cjAsIHIxMgogICAgMHhiNGM1ZWY4MDogICAgYm5lICAgIDB4YjRjNWVmYTIKICAgIDB4YjRjNWVm
ODI6ICAgIGxkciAgICByMTIsIFtyMSwgIzQ0XQogICAgMHhiNGM1ZWY4NjogICAgYWRkdyAgIHIx
MiwgcjEyLCAjMQogICAgMHhiNGM1ZWY4YTogICAgc3RyICAgIHIxMiwgW3IxLCAjNDRdCiAgICAw
eGI0YzVlZjhlOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWVmOTI6ICAgIG1vdnQg
ICByMTIsICM0NjgzMgogICAgMHhiNGM1ZWY5NjogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1ZWY5
ODogICAgbm9wICAgIAogICAgMHhiNGM1ZWY5YTogICAgbm9wICAgIAogICAgMHhiNGM1ZWY5ZTog
ICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWVmYTI6ICAgIG1vdncgICByMTIsICMxMjE2
CiAgICAweGI0YzVlZmE2OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNWVmYWE6ICAg
IGNtcCAgICByMCwgcjEyCiAgICAweGI0YzVlZmFlOiAgICBibmUgICAgMHhiNGM1ZjFmYwogICAg
MHhiNGM1ZWZiMjogICAgbGRyICAgIHIxMiwgW3IxLCAjNDBdCiAgICAweGI0YzVlZmI2OiAgICBh
ZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzVlZmJhOiAgICBzdHIgICAgcjEyLCBbcjEsICM0
MF0KICAgIDB4YjRjNWVmYmU6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1ZWZjMjog
ICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzVlZmM2OiAgICBibHggICAgcjEyCiAgICAw
eGI0YzVlZmM4OiAgICBub3AgICAgCiAgICAweGI0YzVlZmNhOiAgICBub3AgICAgCiAgICAweGI0
YzVlZmNlOiAgICBiICAgICAgMHhiNGM1YmY2NgogICAgMHhiNGM1ZWZkMjogICAgbW92dyAgIHIx
MiwgIzY0MAogICAgMHhiNGM1ZWZkNjogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzVl
ZmRhOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZWZkZTogICAgYmx0ICAgIDB4YjRjNWYw
M2UKICAgIDB4YjRjNWVmZTA6ICAgIG1vdncgICByMTIsICM2NDAKICAgIDB4YjRjNWVmZTQ6ICAg
IG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1ZWZlODogICAgY21wICAgIHIwLCByMTIKICAg
IDB4YjRjNWVmZWM6ICAgIGJuZSAgICAweGI0YzVmMDBlCiAgICAweGI0YzVlZmVlOiAgICBsZHIg
ICAgcjEyLCBbcjEsICM1Ml0KICAgIDB4YjRjNWVmZjI6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEK
ICAgIDB4YjRjNWVmZjY6ICAgIHN0ciAgICByMTIsIFtyMSwgIzUyXQogICAgMHhiNGM1ZWZmYTog
ICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzVlZmZlOiAgICBtb3Z0ICAgcjEyLCAjNDY4
MzIKICAgIDB4YjRjNWYwMDI6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNWYwMDQ6ICAgIG5vcCAg
ICAKICAgIDB4YjRjNWYwMDY6ICAgIG5vcCAgICAKICAgIDB4YjRjNWYwMGE6ICAgIGIgICAgICAw
eGI0YzViZjY2CiAgICAweGI0YzVmMDBlOiAgICBtb3Z3ICAgcjEyLCAjODMyCiAgICAweGI0YzVm
MDEyOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNWYwMTY6ICAgIGNtcCAgICByMCwg
cjEyCiAgICAweGI0YzVmMDFhOiAgICBibmUgICAgMHhiNGM1ZjFmYwogICAgMHhiNGM1ZjAxZTog
ICAgbGRyICAgIHIxMiwgW3IxLCAjNDhdCiAgICAweGI0YzVmMDIyOiAgICBhZGR3ICAgcjEyLCBy
MTIsICMxCiAgICAweGI0YzVmMDI2OiAgICBzdHIgICAgcjEyLCBbcjEsICM0OF0KICAgIDB4YjRj
NWYwMmE6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1ZjAyZTogICAgbW92dCAgIHIx
MiwgIzQ2ODMyCiAgICAweGI0YzVmMDMyOiAgICBibHggICAgcjEyCiAgICAweGI0YzVmMDM0OiAg
ICBub3AgICAgCiAgICAweGI0YzVmMDM2OiAgICBub3AgICAgCiAgICAweGI0YzVmMDNhOiAgICBi
ICAgICAgMHhiNGM1YmY2NgogICAgMHhiNGM1ZjAzZTogICAgbW92dyAgIHIxMiwgIzQ4MjU2CiAg
ICAweGI0YzVmMDQyOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNWYwNDY6ICAgIGNt
cCAgICByMCwgcjEyCiAgICAweGI0YzVmMDRhOiAgICBibmUgICAgMHhiNGM1ZjA2YwogICAgMHhi
NGM1ZjA0YzogICAgbGRyICAgIHIxMiwgW3IxXQogICAgMHhiNGM1ZjA1MDogICAgYWRkdyAgIHIx
MiwgcjEyLCAjMQogICAgMHhiNGM1ZjA1NDogICAgc3RyICAgIHIxMiwgW3IxXQogICAgMHhiNGM1
ZjA1ODogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzVmMDVjOiAgICBtb3Z0ICAgcjEy
LCAjNDY4MzIKICAgIDB4YjRjNWYwNjA6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNWYwNjI6ICAg
IG5vcCAgICAKICAgIDB4YjRjNWYwNjQ6ICAgIG5vcCAgICAKICAgIDB4YjRjNWYwNjg6ICAgIGIg
ICAgICAweGI0YzViZjY2CiAgICAweGI0YzVmMDZjOiAgICBtb3Z3ICAgcjEyLCAjNDgwNjQKICAg
IDB4YjRjNWYwNzA6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1ZjA3NDogICAgY21w
ICAgIHIwLCByMTIKICAgIDB4YjRjNWYwNzg6ICAgIGJuZSAgICAweGI0YzVmMWZjCiAgICAweGI0
YzVmMDdjOiAgICBsZHIgICAgcjEyLCBbcjEsICM0XQogICAgMHhiNGM1ZjA4MDogICAgYWRkdyAg
IHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZjA4NDogICAgc3RyICAgIHIxMiwgW3IxLCAjNF0KICAg
IDB4YjRjNWYwODg6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1ZjA4YzogICAgbW92
dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzVmMDkwOiAgICBibHggICAgcjEyCiAgICAweGI0YzVm
MDkyOiAgICBub3AgICAgCiAgICAweGI0YzVmMDk0OiAgICBub3AgICAgCiAgICAweGI0YzVmMDk4
OiAgICBiICAgICAgMHhiNGM1YmY2NgogICAgMHhiNGM1ZjA5YzogICAgbW92dyAgIHIxMiwgIzQ3
NDg4CiAgICAweGI0YzVmMGEwOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNWYwYTQ6
ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzVmMGE4OiAgICBibHQgICAgMHhiNGM1ZjEzNgog
ICAgMHhiNGM1ZjBhYTogICAgbW92dyAgIHIxMiwgIzQ3NjgwCiAgICAweGI0YzVmMGFlOiAgICBt
b3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNWYwYjI6ICAgIGNtcCAgICByMCwgcjEyCiAgICAw
eGI0YzVmMGI2OiAgICBibmUgICAgMHhiNGM1ZjBkOAogICAgMHhiNGM1ZjBiODogICAgbGRyICAg
IHIxMiwgW3IxLCAjMTJdCiAgICAweGI0YzVmMGJjOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAg
ICAweGI0YzVmMGMwOiAgICBzdHIgICAgcjEyLCBbcjEsICMxMl0KICAgIDB4YjRjNWYwYzQ6ICAg
IG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1ZjBjODogICAgbW92dCAgIHIxMiwgIzQ2ODMy
CiAgICAweGI0YzVmMGNjOiAgICBibHggICAgcjEyCiAgICAweGI0YzVmMGNlOiAgICBub3AgICAg
CiAgICAweGI0YzVmMGQwOiAgICBub3AgICAgCiAgICAweGI0YzVmMGQ0OiAgICBiICAgICAgMHhi
NGM1YmY2NgogICAgMHhiNGM1ZjBkODogICAgbW92dyAgIHIxMiwgIzQ3NDg4CiAgICAweGI0YzVm
MGRjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNWYwZTA6ICAgIGNtcCAgICByMCwg
cjEyCiAgICAweGI0YzVmMGU0OiAgICBibmUgICAgMHhiNGM1ZjEwNgogICAgMHhiNGM1ZjBlNjog
ICAgbGRyICAgIHIxMiwgW3IxLCAjMTZdCiAgICAweGI0YzVmMGVhOiAgICBhZGR3ICAgcjEyLCBy
MTIsICMxCiAgICAweGI0YzVmMGVlOiAgICBzdHIgICAgcjEyLCBbcjEsICMxNl0KICAgIDB4YjRj
NWYwZjI6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1ZjBmNjogICAgbW92dCAgIHIx
MiwgIzQ2ODMyCiAgICAweGI0YzVmMGZhOiAgICBibHggICAgcjEyCiAgICAweGI0YzVmMGZjOiAg
ICBub3AgICAgCiAgICAweGI0YzVmMGZlOiAgICBub3AgICAgCiAgICAweGI0YzVmMTAyOiAgICBi
ICAgICAgMHhiNGM1YmY2NgogICAgMHhiNGM1ZjEwNjogICAgbW92dyAgIHIxMiwgIzQ3ODcyCiAg
ICAweGI0YzVmMTBhOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNWYxMGU6ICAgIGNt
cCAgICByMCwgcjEyCiAgICAweGI0YzVmMTEyOiAgICBibmUgICAgMHhiNGM1ZjFmYwogICAgMHhi
NGM1ZjExNjogICAgbGRyICAgIHIxMiwgW3IxLCAjOF0KICAgIDB4YjRjNWYxMWE6ICAgIGFkZHcg
ICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNWYxMWU6ICAgIHN0ciAgICByMTIsIFtyMSwgIzhdCiAg
ICAweGI0YzVmMTIyOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWYxMjY6ICAgIG1v
dnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZjEyYTogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1
ZjEyYzogICAgbm9wICAgIAogICAgMHhiNGM1ZjEyZTogICAgbm9wICAgIAogICAgMHhiNGM1ZjEz
MjogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWYxMzY6ICAgIG1vdncgICByMTIsICM0
NzEwNAogICAgMHhiNGM1ZjEzYTogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVmMTNl
OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZjE0MjogICAgYmx0ICAgIDB4YjRjNWYxYTAK
ICAgIDB4YjRjNWYxNDQ6ICAgIG1vdncgICByMTIsICM0NzI5NgogICAgMHhiNGM1ZjE0ODogICAg
bW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVmMTRjOiAgICBjbXAgICAgcjAsIHIxMgogICAg
MHhiNGM1ZjE1MDogICAgYm5lICAgIDB4YjRjNWYxNzIKICAgIDB4YjRjNWYxNTI6ICAgIGxkciAg
ICByMTIsIFtyMSwgIzIwXQogICAgMHhiNGM1ZjE1NjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQog
ICAgMHhiNGM1ZjE1YTogICAgc3RyICAgIHIxMiwgW3IxLCAjMjBdCiAgICAweGI0YzVmMTVlOiAg
ICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWYxNjI6ICAgIG1vdnQgICByMTIsICM0Njgz
MgogICAgMHhiNGM1ZjE2NjogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1ZjE2ODogICAgbm9wICAg
IAogICAgMHhiNGM1ZjE2YTogICAgbm9wICAgIAogICAgMHhiNGM1ZjE2ZTogICAgYiAgICAgIDB4
YjRjNWJmNjYKICAgIDB4YjRjNWYxNzI6ICAgIG1vdncgICByMTIsICM0NzEwNAogICAgMHhiNGM1
ZjE3NjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVmMTdhOiAgICBjbXAgICAgcjAs
IHIxMgogICAgMHhiNGM1ZjE3ZTogICAgYm5lICAgIDB4YjRjNWYxZmMKICAgIDB4YjRjNWYxODA6
ICAgIGxkciAgICByMTIsIFtyMSwgIzI0XQogICAgMHhiNGM1ZjE4NDogICAgYWRkdyAgIHIxMiwg
cjEyLCAjMQogICAgMHhiNGM1ZjE4ODogICAgc3RyICAgIHIxMiwgW3IxLCAjMjRdCiAgICAweGI0
YzVmMThjOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWYxOTA6ICAgIG1vdnQgICBy
MTIsICM0NjgzMgogICAgMHhiNGM1ZjE5NDogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1ZjE5Njog
ICAgbm9wICAgIAogICAgMHhiNGM1ZjE5ODogICAgbm9wICAgIAogICAgMHhiNGM1ZjE5YzogICAg
YiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWYxYTA6ICAgIG1vdncgICByMTIsICM0NjcyMAog
ICAgMHhiNGM1ZjFhNDogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVmMWE4OiAgICBj
bXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZjFhYzogICAgYm5lICAgIDB4YjRjNWYxY2UKICAgIDB4
YjRjNWYxYWU6ICAgIGxkciAgICByMTIsIFtyMSwgIzMyXQogICAgMHhiNGM1ZjFiMjogICAgYWRk
dyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZjFiNjogICAgc3RyICAgIHIxMiwgW3IxLCAjMzJd
CiAgICAweGI0YzVmMWJhOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWYxYmU6ICAg
IG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZjFjMjogICAgYmx4ICAgIHIxMgogICAgMHhi
NGM1ZjFjNDogICAgbm9wICAgIAogICAgMHhiNGM1ZjFjNjogICAgbm9wICAgIAogICAgMHhiNGM1
ZjFjYTogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWYxY2U6ICAgIG1vdncgICByMTIs
ICM0NjkxMgogICAgMHhiNGM1ZjFkMjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVm
MWQ2OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZjFkYTogICAgYm5lICAgIDB4YjRjNWYx
ZmMKICAgIDB4YjRjNWYxZGM6ICAgIGxkciAgICByMTIsIFtyMSwgIzI4XQogICAgMHhiNGM1ZjFl
MDogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZjFlNDogICAgc3RyICAgIHIxMiwg
W3IxLCAjMjhdCiAgICAweGI0YzVmMWU4OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRj
NWYxZWM6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZjFmMDogICAgYmx4ICAgIHIx
MgogICAgMHhiNGM1ZjFmMjogICAgbm9wICAgIAogICAgMHhiNGM1ZjFmNDogICAgbm9wICAgIAog
ICAgMHhiNGM1ZjFmODogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWYxZmM6ICAgIG12
biAgICByMSwgIzQKICAgIDB4YjRjNWYyMDA6ICAgIG1vdncgICByMiwgIzQ1NDg4CiAgICAweGI0
YzVmMjA0OiAgICBtb3Z0ICAgcjIsICM0NjI2MwogICAgMHhiNGM1ZjIwODogICAgbW92dyAgIHI4
LCAjNTc4ODEKICAgIDB4YjRjNWYyMGM6ICAgIG1vdnQgICByOCwgIzQ2Mjc3CiAgICAweGI0YzVm
MjEwOiAgICBtb3YgICAgbHIsIHI4CiAgICAweGI0YzVmMjEyOiAgICBtb3Z3ICAgcjEyLCAjMTU5
NjkKICAgIDB4YjRjNWYyMTY6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZjIxYTog
ICAgYnggICAgIHIxMgpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklv
OlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQx
MSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJjODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7
fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FNSXlUZjpbMHhi
NDc5MjU4MC0+MHhiNDdkNGRjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDYxXSksIGNvZGVCbG9jayA9
ICNBTUl5VGY6WzB4YjQ3OTI1ODAtPjB4YjQ3ZDRkYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2MV0K
TGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+
MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9u
OiBDZWxsOiAweGI0NzliYmMwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQ
cm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNDWVZUbFc6WzB4YjQ3OTI0MzAtPjB4YjQ3
ZDRjYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2NF0pLCBjb2RlQmxvY2sgPSAjQ1lWVGxXOlsweGI0
NzkyNDMwLT4weGI0N2Q0Y2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjRdCkxpbmtpbmcgcG9seW1v
cnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJh
c2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5
YmIwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRl
MF0pOyBFeGVjdXRhYmxlOiAjQlF5SXRGOlsweGI0NzkyMmUwLT4weGI0N2Q0YmMwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0JReUl0RjpbMHhiNDc5MjJlMC0+MHhiNDdk
NGJjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4g
PGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwg
MTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJhNDAgKDB4YjQ3Zjcw
OTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJs
ZTogI0FVaEZIVzpbMHhiNDc5MjE5MC0+MHhiNDdkNGFjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcw
XSksIGNvZGVCbG9jayA9ICNBVWhGSFc6WzB4YjQ3OTIxOTAtPjB4YjQ3ZDRhYzAsIExMSW50RnVu
Y3Rpb25DYWxsLCA3MF0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJ
bzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0
MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliOTgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwg
e30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNEOE00MFk6WzB4
YjQ3OTIwNDAtPjB4YjQ3ZDQ5YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sg
PSAjRDhNNDBZOlsweGI0NzkyMDQwLT4weGI0N2Q0OWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBd
CkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAt
PjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlv
bjogQ2VsbDogMHhiNDc5YjhjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwg
UHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQlhHSzBEOlsweGI0NzkxZWYwLT4weGI0
N2Q0OGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0JYR0swRDpbMHhi
NDc5MWVmMC0+MHhiNDdkNDhjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXQpMaW5raW5nIHBvbHlt
b3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBC
YXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3
OWI4MDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRk
ZTBdKTsgRXhlY3V0YWJsZTogI0RrMUU5ZTpbMHhiNDc5MWRhMC0+MHhiNDdkNDdjMCwgTExJbnRG
dW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNEazFFOWU6WzB4YjQ3OTFkYTAtPjB4YjQ3
ZDQ3YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGlu
IDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWws
IDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliNzQwICgweGI0N2Y3
MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFi
bGU6ICNFaktLZW46WzB4YjQ3OTFjNTAtPjB4YjQ3ZDQ2YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3
MF0pLCBjb2RlQmxvY2sgPSAjRWpLS2VuOlsweGI0NzkxYzUwLT4weGI0N2Q0NmMwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNzBdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6
SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMx
NDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YjY4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24s
IHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRWdVNHRsOlsw
eGI0NzkxYjAwLT4weGI0N2Q0NWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2Nr
ID0gI0VnVTR0bDpbMHhiNDc5MWIwMC0+MHhiNDdkNDVjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcw
XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcw
LT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rp
b246IENlbGw6IDB4YjQ3ZjA1ODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXks
IFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0RsSjhMcjpbMHhiNDc5MzNmMC0+MHhi
NDdkNThjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5XSksIGNvZGVCbG9jayA9ICNEbEo4THI6WzB4
YjQ3OTMzZjAtPjB4YjQ3ZDU4YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0OV0KTGlua2luZyBwb2x5
bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwg
QmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0
N2YwNGMwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2Vk
ZGUwXSk7IEV4ZWN1dGFibGU6ICNFWlZ1R0w6WzB4YjQ3OTMyYTAtPjB4YjQ3ZDU3YzAsIExMSW50
RnVuY3Rpb25DYWxsLCA0OV0pLCBjb2RlQmxvY2sgPSAjRVpWdUdMOlsweGI0NzkzMmEwLT4weGI0
N2Q1N2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDldCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBp
biA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFs
LCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDQwMCAoMHhiNDdm
NzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRh
YmxlOiAjQjREWEFqOlsweGI0NzkzMTUwLT4weGI0N2Q1NmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NDldKSwgY29kZUJsb2NrID0gI0I0RFhBajpbMHhiNDc5MzE1MC0+MHhiNDdkNTZjMCwgTExJbnRG
dW5jdGlvbkNhbGwsIDQ5XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQ
eklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMj
MTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAzNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9u
LCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0NtRFY4ejpb
MHhiNDc5MzAwMC0+MHhiNDdkNTVjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5XSksIGNvZGVCbG9j
ayA9ICNDbURWOHo6WzB4YjQ3OTMwMDAtPjB4YjQ3ZDU1YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0
OV0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3
MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0
aW9uOiBDZWxsOiAweGI0N2YwMjgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5
LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNDNm1xN3c6WzB4YjQ3OTJlYjAtPjB4
YjQ3ZDU0YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0OV0pLCBjb2RlQmxvY2sgPSAjQzZtcTd3Olsw
eGI0NzkyZWIwLT4weGI0N2Q1NGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDldCkdlbmVyYXRlZCBK
SVQgY29kZSBmb3IgVmlydHVhbCBjYWxsIHNsb3cgcGF0aCB0aHVuazoKICAgIENvZGUgYXQgWzB4
YjRjNWYyMjEsIDB4YjRjNWYyZTEpOgogICAgMHhiNGM1ZjIyMDogICAgbGRyICAgIHIxMiwgW3Iy
LCAjNTJdCiAgICAweGI0YzVmMjI0OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzVm
MjI4OiAgICBzdHIgICAgcjEyLCBbcjIsICM1Ml0KICAgIDB4YjRjNWYyMmM6ICAgIGNtbiAgICBy
MSwgIzUKICAgIDB4YjRjNWYyMzA6ICAgIGJuZSAgICAweGI0YzVmMjQ4CiAgICAweGI0YzVmMjMy
OiAgICBsZHJiICAgcjYsIFtyMCwgIzVdCiAgICAweGI0YzVmMjM0OiAgICBjbXAgICAgcjIsICMy
MwogICAgMHhiNGM1ZjIzNjogICAgYm5lICAgIDB4YjRjNWYyNDgKICAgIDB4YjRjNWYyMzg6ICAg
IGxkciAgICByOCwgW3IwLCAjMjBdCiAgICAweGI0YzVmMjNjOiAgICBsZHIgICAgcjgsIFtyOCwg
IzI4XQogICAgMHhiNGM1ZjI0MDogICAgdHN0ICAgIHI4LCByOAogICAgMHhiNGM1ZjI0NDogICAg
YmVxICAgIDB4YjRjNWYyNDgKICAgIDB4YjRjNWYyNDY6ICAgIGJ4ICAgICByOAogICAgMHhiNGM1
ZjI0ODogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI0YzVmMjRjOiAgICBtb3YgICAgcjcsIHNw
CiAgICAweGI0YzVmMjRlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNGM1ZjI1MjogICAg
bW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjRjNWYyNTY6ICAgIHN0ciAgICByNywgW3I2XQogICAg
MHhiNGM1ZjI1ODogICAgbXZuICAgIHIxMiwgIzIzCiAgICAweGI0YzVmMjVjOiAgICBtb3YgICAg
c3AsIHNwCiAgICAweGI0YzVmMjVlOiAgICBhZGQgICAgc3AsIHIxMgogICAgMHhiNGM1ZjI2MDog
ICAgbW92ICAgIHIxLCByMgogICAgMHhiNGM1ZjI2MjogICAgbW92ICAgIHIwLCByNwogICAgMHhi
NGM1ZjI2NDogICAgbW92dyAgIHI0LCAjNTEyNzcKICAgIDB4YjRjNWYyNjg6ICAgIG1vdnQgICBy
NCwgIzQ2Nzc2CiAgICAweGI0YzVmMjZjOiAgICBibHggICAgcjQKICAgIDB4YjRjNWYyNmU6ICAg
IGFkZCAgICBzcCwgc3AsICM2CiAgICAweGI0YzVmMjcwOiAgICBtb3YgICAgc3AsIHI3CiAgICAw
eGI0YzVmMjcyOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjRjNWYyNzY6ICAgIHRzdCAgICBy
MSwgcjEKICAgIDB4YjRjNWYyNzg6ICAgIGJlcSAgICAweGI0YzVmMmM4CiAgICAweGI0YzVmMjdh
OiAgICBtb3YgICAgcjUsIGxyCiAgICAweGI0YzVmMjdjOiAgICBsZHIgICAgcjEsIFtyNywgIzI0
XQogICAgMHhiNGM1ZjI3ZTogICAgbGRyICAgIHIzLCBbcjcsICM4XQogICAgMHhiNGM1ZjI4MDog
ICAgbGRyICAgIHIzLCBbcjMsICMzMl0KICAgIDB4YjRjNWYyODI6ICAgIGNtcCAgICByMywgcjEK
ICAgIDB4YjRjNWYyODQ6ICAgIGJscyAgICAweGI0YzVmMjg4CiAgICAweGI0YzVmMjg2OiAgICBt
b3YgICAgcjEsIHIzCiAgICAweGI0YzVmMjg4OiAgICBhZGRzICAgcjEsIHIxLCAjNQogICAgMHhi
NGM1ZjI4YTogICAgbXZuICAgIHIxMiwgIzEKICAgIDB4YjRjNWYyOGU6ICAgIGFuZCAgICByMSwg
cjEsIHIxMgogICAgMHhiNGM1ZjI5MjogICAgbW92ICAgIHIxMiwgIzgKICAgIDB4YjRjNWYyOTY6
ICAgIHNtdWxsICByMSwgcjEyLCByMSwgcjEyCiAgICAweGI0YzVmMjlhOiAgICBhZGRzICAgcjMs
IHI3LCByMQogICAgMHhiNGM1ZjI5YzogICAgbGRyICAgIHIxLCBbc3AsICMxNl0KICAgIDB4YjRj
NWYyOWU6ICAgIGFkZHMgICByMSwgcjEsICM1CiAgICAweGI0YzVmMmEwOiAgICBtdm4gICAgcjEy
LCAjMQogICAgMHhiNGM1ZjJhNDogICAgYW5kICAgIHIxLCByMSwgcjEyCiAgICAweGI0YzVmMmE4
OiAgICBtb3YgICAgcjEyLCAjOAogICAgMHhiNGM1ZjJhYzogICAgc211bGwgIHIxLCByMTIsIHIx
LCByMTIKICAgIDB4YjRjNWYyYjA6ICAgIGxkciAgICBsciwgW3I3LCAjNF0KICAgIDB4YjRjNWYy
YjQ6ICAgIHN1YnMgICByMSwgIzgKICAgIDB4YjRjNWYyYjY6ICAgIHN1YnMgICByMywgcjMsIHIx
CiAgICAweGI0YzVmMmI4OiAgICBsZHIgICAgcjcsIFtyN10KICAgIDB4YjRjNWYyYmE6ICAgIHN1
YnMgICByMSwgcjEsICM0CiAgICAweGI0YzVmMmJjOiAgICBsZHIgICAgcjIsIFtzcCwgcjFdCiAg
ICAweGI0YzVmMmMwOiAgICBzdHIgICAgcjIsIFtyMywgcjFdCiAgICAweGI0YzVmMmMyOiAgICB0
c3QgICAgcjEsIHIxCiAgICAweGI0YzVmMmM0OiAgICBibmUgICAgMHhiNGM1ZjRiYQogICAgMHhi
NGM1ZjJjNjogICAgbW92ICAgIHNwLCByMwogICAgMHhiNGM1ZjJjODogICAgYnggICAgIHIwCkNs
ZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhl
Y3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDEx
CkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIo
ZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMx
NDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQ
dHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBi
YyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENv
ZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgp
LCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0
IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUy
MTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxs
IGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRj
NWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBj
YWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9IDB4
YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhp
YyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlvbiA9
IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9y
cGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2NhdGlv
biA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5
bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFMb2Nh
dGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBw
b2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRhdGFM
b2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZv
ciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTksIGRh
dGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkNsZWFyaW5nIGNhbGwgbGluayBpbmZv
IGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUyMTks
IGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUyMTgpLCBiYyMxNDExCkdlbmVyYXRlZCBKSVQgY29kZSBm
b3IgUG9seW1vcnBoaWMgY2FsbCBzdHViIGZvciA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAt
PjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSwgcmV0dXJuIHBvaW50IDB4YjRjNWUy
MTksIHRhcmdldHMgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJjODAgKDB4YjQ3
ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0
YWJsZTogI0FNSXlUZjpbMHhiNDc5MjU4MC0+MHhiNDdkNGRjMCwgTExJbnRGdW5jdGlvbkNhbGws
IDYxXSksIGNvZGVCbG9jayA9ICNBTUl5VGY6WzB4YjQ3OTI1ODAtPjB4YjQ3ZDRkYzAsIExMSW50
RnVuY3Rpb25DYWxsLCA2MV0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmJj
MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0p
OyBFeGVjdXRhYmxlOiAjQ1lWVGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0Y2MwLCBMTEludEZ1bmN0
aW9uQ2FsbCwgNjRdKSwgY29kZUJsb2NrID0gI0NZVlRsVzpbMHhiNDc5MjQzMC0+MHhiNDdkNGNj
MCwgTExJbnRGdW5jdGlvbkNhbGwsIDY0XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAw
eGI0NzliYjAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0
N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCUXlJdEY6WzB4YjQ3OTIyZTAtPjB4YjQ3ZDRiYzAsIExM
SW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjQlF5SXRGOlsweGI0NzkyMmUwLT4w
eGI0N2Q0YmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246
IENlbGw6IDB4YjQ3OWJhNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFBy
b3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FVaEZIVzpbMHhiNDc5MjE5MC0+MHhiNDdk
NGFjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNBVWhGSFc6WzB4YjQ3
OTIxOTAtPjB4YjQ3ZDRhYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0+LCA8dmFyaWFudCA9IChG
dW5jdGlvbjogQ2VsbDogMHhiNDc5Yjk4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25B
cnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRDhNNDBZOlsweGI0NzkyMDQw
LT4weGI0N2Q0OWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0gI0Q4TTQw
WTpbMHhiNDc5MjA0MC0+MHhiNDdkNDljMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXT4sIDx2YXJp
YW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliOGMwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwg
e30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCWEdLMEQ6WzB4
YjQ3OTFlZjAtPjB4YjQ3ZDQ4YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sg
PSAjQlhHSzBEOlsweGI0NzkxZWYwLT4weGI0N2Q0OGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBd
PiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWI4MDAgKDB4YjQ3ZjcwOTA6W0Z1
bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0Rr
MUU5ZTpbMHhiNDc5MWRhMC0+MHhiNDdkNDdjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNv
ZGVCbG9jayA9ICNEazFFOWU6WzB4YjQ3OTFkYTAtPjB4YjQ3ZDQ3YzAsIExMSW50RnVuY3Rpb25D
YWxsLCA3MF0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5Yjc0MCAoMHhiNDdm
NzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRh
YmxlOiAjRWpLS2VuOlsweGI0NzkxYzUwLT4weGI0N2Q0NmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NzBdKSwgY29kZUJsb2NrID0gI0VqS0tlbjpbMHhiNDc5MWM1MC0+MHhiNDdkNDZjMCwgTExJbnRG
dW5jdGlvbkNhbGwsIDcwXT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliNjgw
ICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7
IEV4ZWN1dGFibGU6ICNFZ1U0dGw6WzB4YjQ3OTFiMDAtPjB4YjQ3ZDQ1YzAsIExMSW50RnVuY3Rp
b25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjRWdVNHRsOlsweGI0NzkxYjAwLT4weGI0N2Q0NWMw
LCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4
YjQ3ZjA1ODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3
ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0RsSjhMcjpbMHhiNDc5MzNmMC0+MHhiNDdkNThjMCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDQ5XSksIGNvZGVCbG9jayA9ICNEbEo4THI6WzB4YjQ3OTMzZjAtPjB4
YjQ3ZDU4YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0OV0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjog
Q2VsbDogMHhiNDdmMDRjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJv
dG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRVpWdUdMOlsweGI0NzkzMmEwLT4weGI0N2Q1
N2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDldKSwgY29kZUJsb2NrID0gI0VaVnVHTDpbMHhiNDc5
MzJhMC0+MHhiNDdkNTdjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5XT4sIDx2YXJpYW50ID0gKEZ1
bmN0aW9uOiBDZWxsOiAweGI0N2YwNDAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFy
cmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCNERYQWo6WzB4YjQ3OTMxNTAt
PjB4YjQ3ZDU2YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0OV0pLCBjb2RlQmxvY2sgPSAjQjREWEFq
OlsweGI0NzkzMTUwLT4weGI0N2Q1NmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDldPiwgPHZhcmlh
bnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAzNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7
fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0NtRFY4ejpbMHhi
NDc5MzAwMC0+MHhiNDdkNTVjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5XSksIGNvZGVCbG9jayA9
ICNDbURWOHo6WzB4YjQ3OTMwMDAtPjB4YjQ3ZDU1YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0OV0+
LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDI4MCAoMHhiNDdmNzA5MDpbRnVu
Y3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQzZt
cTd3OlsweGI0NzkyZWIwLT4weGI0N2Q1NGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDldKSwgY29k
ZUJsb2NrID0gI0M2bXE3dzpbMHhiNDc5MmViMC0+MHhiNDdkNTRjMCwgTExJbnRGdW5jdGlvbkNh
bGwsIDQ5XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMWMwICgweGI0N2Y3
MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFi
bGU6ICNDSml2a1A6WzB4YjQ3OTJkNjAtPjB4YjQ3ZDUzYzAsIExMSW50RnVuY3Rpb25DYWxsLCA0
OV0pLCBjb2RlQmxvY2sgPSAjQ0ppdmtQOlsweGI0NzkyZDYwLT4weGI0N2Q1M2MwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNDldPjoKICAgIENvZGUgYXQgWzB4YjRjNWYyZTEsIDB4YjRjNWY2MjEpOgog
ICAgMHhiNGM1ZjJlMDogICAgbW92dyAgIHIxLCAjNjQ4NzIKICAgIDB4YjRjNWYyZTQ6ICAgIG1v
dnQgICByMSwgIzE4NgogICAgMHhiNGM1ZjJlODogICAgbW92dyAgIHIxMiwgIzQ4MDY0CiAgICAw
eGI0YzVmMmVjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNWYyZjA6ICAgIGNtcCAg
ICByMCwgcjEyCiAgICAweGI0YzVmMmY0OiAgICBibHQgICAgMHhiNGM1ZjQ5YwogICAgMHhiNGM1
ZjJmODogICAgbW92dyAgIHIxMiwgIzgzMgogICAgMHhiNGM1ZjJmYzogICAgbW92dCAgIHIxMiwg
IzQ2MjA3CiAgICAweGI0YzVmMzAwOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZjMwNDog
ICAgYmx0ICAgIDB4YjRjNWYzZDIKICAgIDB4YjRjNWYzMDg6ICAgIG1vdncgICByMTIsICMxMjE2
CiAgICAweGI0YzVmMzBjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNWYzMTA6ICAg
IGNtcCAgICByMCwgcjEyCiAgICAweGI0YzVmMzE0OiAgICBibHQgICAgMHhiNGM1ZjM3NAogICAg
MHhiNGM1ZjMxNjogICAgbW92dyAgIHIxMiwgIzEyMTYKICAgIDB4YjRjNWYzMWE6ICAgIG1vdnQg
ICByMTIsICM0NjIwNwogICAgMHhiNGM1ZjMxZTogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRj
NWYzMjI6ICAgIGJuZSAgICAweGI0YzVmMzQ0CiAgICAweGI0YzVmMzI0OiAgICBsZHIgICAgcjEy
LCBbcjEsICM0MF0KICAgIDB4YjRjNWYzMjg6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4
YjRjNWYzMmM6ICAgIHN0ciAgICByMTIsIFtyMSwgIzQwXQogICAgMHhiNGM1ZjMzMDogICAgbW92
dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzVmMzM0OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAg
IDB4YjRjNWYzMzg6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNWYzM2E6ICAgIG5vcCAgICAKICAg
IDB4YjRjNWYzM2M6ICAgIG5vcCAgICAKICAgIDB4YjRjNWYzNDA6ICAgIGIgICAgICAweGI0YzVi
ZjY2CiAgICAweGI0YzVmMzQ0OiAgICBtb3Z3ICAgcjEyLCAjMTQwOAogICAgMHhiNGM1ZjM0ODog
ICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzVmMzRjOiAgICBjbXAgICAgcjAsIHIxMgog
ICAgMHhiNGM1ZjM1MDogICAgYm5lICAgIDB4YjRjNWY1ZmMKICAgIDB4YjRjNWYzNTQ6ICAgIGxk
ciAgICByMTIsIFtyMSwgIzM2XQogICAgMHhiNGM1ZjM1ODogICAgYWRkdyAgIHIxMiwgcjEyLCAj
MQogICAgMHhiNGM1ZjM1YzogICAgc3RyICAgIHIxMiwgW3IxLCAjMzZdCiAgICAweGI0YzVmMzYw
OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWYzNjQ6ICAgIG1vdnQgICByMTIsICM0
NjgzMgogICAgMHhiNGM1ZjM2ODogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1ZjM2YTogICAgbm9w
ICAgIAogICAgMHhiNGM1ZjM2YzogICAgbm9wICAgIAogICAgMHhiNGM1ZjM3MDogICAgYiAgICAg
IDB4YjRjNWJmNjYKICAgIDB4YjRjNWYzNzQ6ICAgIG1vdncgICByMTIsICMxMDI0CiAgICAweGI0
YzVmMzc4OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNWYzN2M6ICAgIGNtcCAgICBy
MCwgcjEyCiAgICAweGI0YzVmMzgwOiAgICBibmUgICAgMHhiNGM1ZjNhMgogICAgMHhiNGM1ZjM4
MjogICAgbGRyICAgIHIxMiwgW3IxLCAjNDRdCiAgICAweGI0YzVmMzg2OiAgICBhZGR3ICAgcjEy
LCByMTIsICMxCiAgICAweGI0YzVmMzhhOiAgICBzdHIgICAgcjEyLCBbcjEsICM0NF0KICAgIDB4
YjRjNWYzOGU6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1ZjM5MjogICAgbW92dCAg
IHIxMiwgIzQ2ODMyCiAgICAweGI0YzVmMzk2OiAgICBibHggICAgcjEyCiAgICAweGI0YzVmMzk4
OiAgICBub3AgICAgCiAgICAweGI0YzVmMzlhOiAgICBub3AgICAgCiAgICAweGI0YzVmMzllOiAg
ICBiICAgICAgMHhiNGM1YmY2NgogICAgMHhiNGM1ZjNhMjogICAgbW92dyAgIHIxMiwgIzgzMgog
ICAgMHhiNGM1ZjNhNjogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzVmM2FhOiAgICBj
bXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZjNhZTogICAgYm5lICAgIDB4YjRjNWY1ZmMKICAgIDB4
YjRjNWYzYjI6ICAgIGxkciAgICByMTIsIFtyMSwgIzQ4XQogICAgMHhiNGM1ZjNiNjogICAgYWRk
dyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZjNiYTogICAgc3RyICAgIHIxMiwgW3IxLCAjNDhd
CiAgICAweGI0YzVmM2JlOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWYzYzI6ICAg
IG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZjNjNjogICAgYmx4ICAgIHIxMgogICAgMHhi
NGM1ZjNjODogICAgbm9wICAgIAogICAgMHhiNGM1ZjNjYTogICAgbm9wICAgIAogICAgMHhiNGM1
ZjNjZTogICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWYzZDI6ICAgIG1vdncgICByMTIs
ICM0NDgKICAgIDB4YjRjNWYzZDY6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1ZjNk
YTogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNWYzZGU6ICAgIGJsdCAgICAweGI0YzVmNDNl
CiAgICAweGI0YzVmM2UwOiAgICBtb3Z3ICAgcjEyLCAjNjQwCiAgICAweGI0YzVmM2U0OiAgICBt
b3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNWYzZTg6ICAgIGNtcCAgICByMCwgcjEyCiAgICAw
eGI0YzVmM2VjOiAgICBibmUgICAgMHhiNGM1ZjQwZQogICAgMHhiNGM1ZjNlZTogICAgbGRyICAg
IHIxMiwgW3IxLCAjNTJdCiAgICAweGI0YzVmM2YyOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAg
ICAweGI0YzVmM2Y2OiAgICBzdHIgICAgcjEyLCBbcjEsICM1Ml0KICAgIDB4YjRjNWYzZmE6ICAg
IG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1ZjNmZTogICAgbW92dCAgIHIxMiwgIzQ2ODMy
CiAgICAweGI0YzVmNDAyOiAgICBibHggICAgcjEyCiAgICAweGI0YzVmNDA0OiAgICBub3AgICAg
CiAgICAweGI0YzVmNDA2OiAgICBub3AgICAgCiAgICAweGI0YzVmNDBhOiAgICBiICAgICAgMHhi
NGM1YmY2NgogICAgMHhiNGM1ZjQwZTogICAgbW92dyAgIHIxMiwgIzQ0OAogICAgMHhiNGM1ZjQx
MjogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzVmNDE2OiAgICBjbXAgICAgcjAsIHIx
MgogICAgMHhiNGM1ZjQxYTogICAgYm5lICAgIDB4YjRjNWY1ZmMKICAgIDB4YjRjNWY0MWU6ICAg
IGxkciAgICByMTIsIFtyMSwgIzU2XQogICAgMHhiNGM1ZjQyMjogICAgYWRkdyAgIHIxMiwgcjEy
LCAjMQogICAgMHhiNGM1ZjQyNjogICAgc3RyICAgIHIxMiwgW3IxLCAjNTZdCiAgICAweGI0YzVm
NDJhOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWY0MmU6ICAgIG1vdnQgICByMTIs
ICM0NjgzMgogICAgMHhiNGM1ZjQzMjogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1ZjQzNDogICAg
bm9wICAgIAogICAgMHhiNGM1ZjQzNjogICAgbm9wICAgIAogICAgMHhiNGM1ZjQzYTogICAgYiAg
ICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWY0M2U6ICAgIG1vdncgICByMTIsICM0ODA2NAogICAg
MHhiNGM1ZjQ0MjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVmNDQ2OiAgICBjbXAg
ICAgcjAsIHIxMgogICAgMHhiNGM1ZjQ0YTogICAgYm5lICAgIDB4YjRjNWY0NmMKICAgIDB4YjRj
NWY0NGM6ICAgIGxkciAgICByMTIsIFtyMSwgIzRdCiAgICAweGI0YzVmNDUwOiAgICBhZGR3ICAg
cjEyLCByMTIsICMxCiAgICAweGI0YzVmNDU0OiAgICBzdHIgICAgcjEyLCBbcjEsICM0XQogICAg
MHhiNGM1ZjQ1ODogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzVmNDVjOiAgICBtb3Z0
ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNWY0NjA6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNWY0
NjI6ICAgIG5vcCAgICAKICAgIDB4YjRjNWY0NjQ6ICAgIG5vcCAgICAKICAgIDB4YjRjNWY0Njg6
ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0YzVmNDZjOiAgICBtb3Z3ICAgcjEyLCAjNDgy
NTYKICAgIDB4YjRjNWY0NzA6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1ZjQ3NDog
ICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNWY0Nzg6ICAgIGJuZSAgICAweGI0YzVmNWZjCiAg
ICAweGI0YzVmNDdjOiAgICBsZHIgICAgcjEyLCBbcjFdCiAgICAweGI0YzVmNDgwOiAgICBhZGR3
ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzVmNDg0OiAgICBzdHIgICAgcjEyLCBbcjFdCiAgICAw
eGI0YzVmNDg4OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWY0OGM6ICAgIG1vdnQg
ICByMTIsICM0NjgzMgogICAgMHhiNGM1ZjQ5MDogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1ZjQ5
MjogICAgbm9wICAgIAogICAgMHhiNGM1ZjQ5NDogICAgbm9wICAgIAogICAgMHhiNGM1ZjQ5ODog
ICAgYiAgICAgIDB4YjRjNWJmNjYKICAgIDB4YjRjNWY0OWM6ICAgIG1vdncgICByMTIsICM0NzQ4
OAogICAgMHhiNGM1ZjRhMDogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVmNGE0OiAg
ICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZjRhODogICAgYmx0ICAgIDB4YjRjNWY1MzYKICAg
IDB4YjRjNWY0YWE6ICAgIG1vdncgICByMTIsICM0NzY4MAogICAgMHhiNGM1ZjRhZTogICAgbW92
dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVmNGIyOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhi
NGM1ZjRiNjogICAgYm5lICAgIDB4YjRjNWY0ZDgKICAgIDB4YjRjNWY0Yjg6ICAgIGxkciAgICBy
MTIsIFtyMSwgIzEyXQogICAgMHhiNGM1ZjRiYzogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAg
MHhiNGM1ZjRjMDogICAgc3RyICAgIHIxMiwgW3IxLCAjMTJdCiAgICAweGI0YzVmNGM0OiAgICBt
b3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNWY0Yzg6ICAgIG1vdnQgICByMTIsICM0NjgzMgog
ICAgMHhiNGM1ZjRjYzogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1ZjRjZTogICAgbm9wICAgIAog
ICAgMHhiNGM1ZjRkMDogICAgbm9wICAgIAogICAgMHhiNGM1ZjRkNDogICAgYiAgICAgIDB4YjRj
NWJmNjYKICAgIDB4YjRjNWY0ZDg6ICAgIG1vdncgICByMTIsICM0Nzg3MgogICAgMHhiNGM1ZjRk
YzogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVmNGUwOiAgICBjbXAgICAgcjAsIHIx
MgogICAgMHhiNGM1ZjRlNDogICAgYm5lICAgIDB4YjRjNWY1MDYKICAgIDB4YjRjNWY0ZTY6ICAg
IGxkciAgICByMTIsIFtyMSwgIzhdCiAgICAweGI0YzVmNGVhOiAgICBhZGR3ICAgcjEyLCByMTIs
ICMxCiAgICAweGI0YzVmNGVlOiAgICBzdHIgICAgcjEyLCBbcjEsICM4XQogICAgMHhiNGM1ZjRm
MjogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzVmNGY2OiAgICBtb3Z0ICAgcjEyLCAj
NDY4MzIKICAgIDB4YjRjNWY0ZmE6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNWY0ZmM6ICAgIG5v
cCAgICAKICAgIDB4YjRjNWY0ZmU6ICAgIG5vcCAgICAKICAgIDB4YjRjNWY1MDI6ICAgIGIgICAg
ICAweGI0YzViZjY2CiAgICAweGI0YzVmNTA2OiAgICBtb3Z3ICAgcjEyLCAjNDc0ODgKICAgIDB4
YjRjNWY1MGE6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1ZjUwZTogICAgY21wICAg
IHIwLCByMTIKICAgIDB4YjRjNWY1MTI6ICAgIGJuZSAgICAweGI0YzVmNWZjCiAgICAweGI0YzVm
NTE2OiAgICBsZHIgICAgcjEyLCBbcjEsICMxNl0KICAgIDB4YjRjNWY1MWE6ICAgIGFkZHcgICBy
MTIsIHIxMiwgIzEKICAgIDB4YjRjNWY1MWU6ICAgIHN0ciAgICByMTIsIFtyMSwgIzE2XQogICAg
MHhiNGM1ZjUyMjogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzVmNTI2OiAgICBtb3Z0
ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNWY1MmE6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNWY1
MmM6ICAgIG5vcCAgICAKICAgIDB4YjRjNWY1MmU6ICAgIG5vcCAgICAKICAgIDB4YjRjNWY1MzI6
ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0YzVmNTM2OiAgICBtb3Z3ICAgcjEyLCAjNDcx
MDQKICAgIDB4YjRjNWY1M2E6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1ZjUzZTog
ICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNWY1NDI6ICAgIGJsdCAgICAweGI0YzVmNWEwCiAg
ICAweGI0YzVmNTQ0OiAgICBtb3Z3ICAgcjEyLCAjNDcyOTYKICAgIDB4YjRjNWY1NDg6ICAgIG1v
dnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1ZjU0YzogICAgY21wICAgIHIwLCByMTIKICAgIDB4
YjRjNWY1NTA6ICAgIGJuZSAgICAweGI0YzVmNTcyCiAgICAweGI0YzVmNTUyOiAgICBsZHIgICAg
cjEyLCBbcjEsICMyMF0KICAgIDB4YjRjNWY1NTY6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAg
IDB4YjRjNWY1NWE6ICAgIHN0ciAgICByMTIsIFtyMSwgIzIwXQogICAgMHhiNGM1ZjU1ZTogICAg
bW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzVmNTYyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIK
ICAgIDB4YjRjNWY1NjY6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNWY1Njg6ICAgIG5vcCAgICAK
ICAgIDB4YjRjNWY1NmE6ICAgIG5vcCAgICAKICAgIDB4YjRjNWY1NmU6ICAgIGIgICAgICAweGI0
YzViZjY2CiAgICAweGI0YzVmNTcyOiAgICBtb3Z3ICAgcjEyLCAjNDcxMDQKICAgIDB4YjRjNWY1
NzY6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1ZjU3YTogICAgY21wICAgIHIwLCBy
MTIKICAgIDB4YjRjNWY1N2U6ICAgIGJuZSAgICAweGI0YzVmNWZjCiAgICAweGI0YzVmNTgwOiAg
ICBsZHIgICAgcjEyLCBbcjEsICMyNF0KICAgIDB4YjRjNWY1ODQ6ICAgIGFkZHcgICByMTIsIHIx
MiwgIzEKICAgIDB4YjRjNWY1ODg6ICAgIHN0ciAgICByMTIsIFtyMSwgIzI0XQogICAgMHhiNGM1
ZjU4YzogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzVmNTkwOiAgICBtb3Z0ICAgcjEy
LCAjNDY4MzIKICAgIDB4YjRjNWY1OTQ6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNWY1OTY6ICAg
IG5vcCAgICAKICAgIDB4YjRjNWY1OTg6ICAgIG5vcCAgICAKICAgIDB4YjRjNWY1OWM6ICAgIGIg
ICAgICAweGI0YzViZjY2CiAgICAweGI0YzVmNWEwOiAgICBtb3Z3ICAgcjEyLCAjNDY3MjAKICAg
IDB4YjRjNWY1YTQ6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1ZjVhODogICAgY21w
ICAgIHIwLCByMTIKICAgIDB4YjRjNWY1YWM6ICAgIGJuZSAgICAweGI0YzVmNWNlCiAgICAweGI0
YzVmNWFlOiAgICBsZHIgICAgcjEyLCBbcjEsICMzMl0KICAgIDB4YjRjNWY1YjI6ICAgIGFkZHcg
ICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNWY1YjY6ICAgIHN0ciAgICByMTIsIFtyMSwgIzMyXQog
ICAgMHhiNGM1ZjViYTogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzVmNWJlOiAgICBt
b3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNWY1YzI6ICAgIGJseCAgICByMTIKICAgIDB4YjRj
NWY1YzQ6ICAgIG5vcCAgICAKICAgIDB4YjRjNWY1YzY6ICAgIG5vcCAgICAKICAgIDB4YjRjNWY1
Y2E6ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0YzVmNWNlOiAgICBtb3Z3ICAgcjEyLCAj
NDY5MTIKICAgIDB4YjRjNWY1ZDI6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1ZjVk
NjogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNWY1ZGE6ICAgIGJuZSAgICAweGI0YzVmNWZj
CiAgICAweGI0YzVmNWRjOiAgICBsZHIgICAgcjEyLCBbcjEsICMyOF0KICAgIDB4YjRjNWY1ZTA6
ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNWY1ZTQ6ICAgIHN0ciAgICByMTIsIFty
MSwgIzI4XQogICAgMHhiNGM1ZjVlODogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzVm
NWVjOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNWY1ZjA6ICAgIGJseCAgICByMTIK
ICAgIDB4YjRjNWY1ZjI6ICAgIG5vcCAgICAKICAgIDB4YjRjNWY1ZjQ6ICAgIG5vcCAgICAKICAg
IDB4YjRjNWY1Zjg6ICAgIGIgICAgICAweGI0YzViZjY2CiAgICAweGI0YzVmNWZjOiAgICBtdm4g
ICAgcjEsICM0CiAgICAweGI0YzVmNjAwOiAgICBtb3Z3ICAgcjIsICM0NTQ4OAogICAgMHhiNGM1
ZjYwNDogICAgbW92dCAgIHIyLCAjNDYyNjMKICAgIDB4YjRjNWY2MDg6ICAgIG1vdncgICByOCwg
IzU3ODgxCiAgICAweGI0YzVmNjBjOiAgICBtb3Z0ICAgcjgsICM0NjI3NwogICAgMHhiNGM1ZjYx
MDogICAgbW92ICAgIGxyLCByOAogICAgMHhiNGM1ZjYxMjogICAgbW92dyAgIHIxMiwgIzE1OTY5
CiAgICAweGI0YzVmNjE2OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNWY2MWE6ICAg
IGJ4ICAgICByMTIKTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpb
MHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEg
dG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYzgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30s
IE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBTUl5VGY6WzB4YjQ3
OTI1ODAtPjB4YjQ3ZDRkYzAsIExMSW50RnVuY3Rpb25DYWxsLCA2MV0pLCBjb2RlQmxvY2sgPSAj
QU1JeVRmOlsweGI0NzkyNTgwLT4weGI0N2Q0ZGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjFdCkxp
bmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4
YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjog
Q2VsbDogMHhiNDc5YmJjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJv
dG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQ1lWVGxXOlsweGI0NzkyNDMwLT4weGI0N2Q0
Y2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjRdKSwgY29kZUJsb2NrID0gI0NZVlRsVzpbMHhiNDc5
MjQzMC0+MHhiNDdkNGNjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDY0XQpMaW5raW5nIHBvbHltb3Jw
aGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNl
bGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJi
MDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBd
KTsgRXhlY3V0YWJsZTogI0JReUl0RjpbMHhiNDc5MjJlMC0+MHhiNDdkNGJjMCwgTExJbnRGdW5j
dGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNCUXlJdEY6WzB4YjQ3OTIyZTAtPjB4YjQ3ZDRi
YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxn
bG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1
NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYTQwICgweGI0N2Y3MDkw
OltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6
ICNBVWhGSFc6WzB4YjQ3OTIxOTAtPjB4YjQ3ZDRhYzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0p
LCBjb2RlQmxvY2sgPSAjQVVoRkhXOlsweGI0NzkyMTkwLT4weGI0N2Q0YWMwLCBMTEludEZ1bmN0
aW9uQ2FsbCwgNzBdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86
WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDEx
IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5Yjk4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9
LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRDhNNDBZOlsweGI0
NzkyMDQwLT4weGI0N2Q0OWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdKSwgY29kZUJsb2NrID0g
I0Q4TTQwWTpbMHhiNDc5MjA0MC0+MHhiNDdkNDljMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXQpM
aW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4w
eGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246
IENlbGw6IDB4YjQ3OWI4YzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFBy
b3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JYR0swRDpbMHhiNDc5MWVmMC0+MHhiNDdk
NDhjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9ICNCWEdLMEQ6WzB4YjQ3
OTFlZjAtPjB4YjQ3ZDQ4YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0KTGlua2luZyBwb2x5bW9y
cGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFz
ZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0Nzli
ODAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUw
XSk7IEV4ZWN1dGFibGU6ICNEazFFOWU6WzB4YjQ3OTFkYTAtPjB4YjQ3ZDQ3YzAsIExMSW50RnVu
Y3Rpb25DYWxsLCA3MF0pLCBjb2RlQmxvY2sgPSAjRGsxRTllOlsweGI0NzkxZGEwLT4weGI0N2Q0
N2MwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8
Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAx
NTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5Yjc0MCAoMHhiNDdmNzA5
MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxl
OiAjRWpLS2VuOlsweGI0NzkxYzUwLT4weGI0N2Q0NmMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNzBd
KSwgY29kZUJsb2NrID0gI0VqS0tlbjpbMHhiNDc5MWM1MC0+MHhiNDdkNDZjMCwgTExJbnRGdW5j
dGlvbkNhbGwsIDcwXQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklv
OlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQx
MSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWI2ODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7
fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0VnVTR0bDpbMHhi
NDc5MWIwMC0+MHhiNDdkNDVjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDcwXSksIGNvZGVCbG9jayA9
ICNFZ1U0dGw6WzB4YjQ3OTFiMDAtPjB4YjQ3ZDQ1YzAsIExMSW50RnVuY3Rpb25DYWxsLCA3MF0K
TGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+
MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0MTEgdG8gKEZ1bmN0aW9u
OiBDZWxsOiAweGI0N2YwNTgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQ
cm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNEbEo4THI6WzB4YjQ3OTMzZjAtPjB4YjQ3
ZDU4YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0OV0pLCBjb2RlQmxvY2sgPSAjRGxKOExyOlsweGI0
NzkzM2YwLT4weGI0N2Q1OGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDldCkxpbmtpbmcgcG9seW1v
cnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJh
c2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDdm
MDRjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRl
MF0pOyBFeGVjdXRhYmxlOiAjRVpWdUdMOlsweGI0NzkzMmEwLT4weGI0N2Q1N2MwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNDldKSwgY29kZUJsb2NrID0gI0VaVnVHTDpbMHhiNDc5MzJhMC0+MHhiNDdk
NTdjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4g
PGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwg
MTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjA0MDAgKDB4YjQ3Zjcw
OTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJs
ZTogI0I0RFhBajpbMHhiNDc5MzE1MC0+MHhiNDdkNTZjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5
XSksIGNvZGVCbG9jayA9ICNCNERYQWo6WzB4YjQ3OTMxNTAtPjB4YjQ3ZDU2YzAsIExMSW50RnVu
Y3Rpb25DYWxsLCA0OV0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJ
bzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzE0
MTEgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMzQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwg
e30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNDbURWOHo6WzB4
YjQ3OTMwMDAtPjB4YjQ3ZDU1YzAsIExMSW50RnVuY3Rpb25DYWxsLCA0OV0pLCBjb2RlQmxvY2sg
PSAjQ21EVjh6OlsweGI0NzkzMDAwLT4weGI0N2Q1NWMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDld
CkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAt
PjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxNDExIHRvIChGdW5jdGlv
bjogQ2VsbDogMHhiNDdmMDI4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwg
UHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQzZtcTd3OlsweGI0NzkyZWIwLT4weGI0
N2Q1NGMwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDldKSwgY29kZUJsb2NrID0gI0M2bXE3dzpbMHhi
NDc5MmViMC0+MHhiNDdkNTRjMCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ5XQpMaW5raW5nIHBvbHlt
b3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBC
YXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTQxMSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3
ZjAxYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRk
ZTBdKTsgRXhlY3V0YWJsZTogI0NKaXZrUDpbMHhiNDc5MmQ2MC0+MHhiNDdkNTNjMCwgTExJbnRG
dW5jdGlvbkNhbGwsIDQ5XSksIGNvZGVCbG9jayA9ICNDSml2a1A6WzB4YjQ3OTJkNjAtPjB4YjQ3
ZDUzYzAsIExMSW50RnVuY3Rpb25DYWxsLCA0OV0KR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBWaXJ0
dWFsIGNhbGwgc2xvdyBwYXRoIHRodW5rOgogICAgQ29kZSBhdCBbMHhiNGM1ZjYyMSwgMHhiNGM1
ZjZlMSk6CiAgICAweGI0YzVmNjIwOiAgICBsZHIgICAgcjEyLCBbcjIsICM1Ml0KICAgIDB4YjRj
NWY2MjQ6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNWY2Mjg6ICAgIHN0ciAgICBy
MTIsIFtyMiwgIzUyXQogICAgMHhiNGM1ZjYyYzogICAgY21uICAgIHIxLCAjNQogICAgMHhiNGM1
ZjYzMDogICAgYm5lICAgIDB4YjRjNWY2NDgKICAgIDB4YjRjNWY2MzI6ICAgIGxkcmIgICByNiwg
W3IwLCAjNV0KICAgIDB4YjRjNWY2MzQ6ICAgIGNtcCAgICByMiwgIzIzCiAgICAweGI0YzVmNjM2
OiAgICBibmUgICAgMHhiNGM1ZjY0OAogICAgMHhiNGM1ZjYzODogICAgbGRyICAgIHI4LCBbcjAs
ICMyMF0KICAgIDB4YjRjNWY2M2M6ICAgIGxkciAgICByOCwgW3I4LCAjMjhdCiAgICAweGI0YzVm
NjQwOiAgICB0c3QgICAgcjgsIHI4CiAgICAweGI0YzVmNjQ0OiAgICBiZXEgICAgMHhiNGM1ZjY0
OAogICAgMHhiNGM1ZjY0NjogICAgYnggICAgIHI4CiAgICAweGI0YzVmNjQ4OiAgICBwdXNoICAg
e3I3LCBscn0KICAgIDB4YjRjNWY2NGM6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjRjNWY2NGU6
ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI0YzVmNjUyOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNGM1ZjY1NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI0YzVmNjU4OiAgICBt
dm4gICAgcjEyLCAjMjMKICAgIDB4YjRjNWY2NWM6ICAgIG1vdiAgICBzcCwgc3AKICAgIDB4YjRj
NWY2NWU6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAweGI0YzVmNjYwOiAgICBtb3YgICAgcjEsIHIy
CiAgICAweGI0YzVmNjYyOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI0YzVmNjY0OiAgICBtb3Z3
ICAgcjQsICM1MTI3NwogICAgMHhiNGM1ZjY2ODogICAgbW92dCAgIHI0LCAjNDY3NzYKICAgIDB4
YjRjNWY2NmM6ICAgIGJseCAgICByNAogICAgMHhiNGM1ZjY2ZTogICAgYWRkICAgIHNwLCBzcCwg
IzYKICAgIDB4YjRjNWY2NzA6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjRjNWY2NzI6ICAgIHBv
cCAgICB7cjcsIGxyfQogICAgMHhiNGM1ZjY3NjogICAgdHN0ICAgIHIxLCByMQogICAgMHhiNGM1
ZjY3ODogICAgYmVxICAgIDB4YjRjNWY2YzgKICAgIDB4YjRjNWY2N2E6ICAgIG1vdiAgICByNSwg
bHIKICAgIDB4YjRjNWY2N2M6ICAgIGxkciAgICByMSwgW3I3LCAjMjRdCiAgICAweGI0YzVmNjdl
OiAgICBsZHIgICAgcjMsIFtyNywgIzhdCiAgICAweGI0YzVmNjgwOiAgICBsZHIgICAgcjMsIFty
MywgIzMyXQogICAgMHhiNGM1ZjY4MjogICAgY21wICAgIHIzLCByMQogICAgMHhiNGM1ZjY4NDog
ICAgYmxzICAgIDB4YjRjNWY2ODgKICAgIDB4YjRjNWY2ODY6ICAgIG1vdiAgICByMSwgcjMKICAg
IDB4YjRjNWY2ODg6ICAgIGFkZHMgICByMSwgcjEsICM1CiAgICAweGI0YzVmNjhhOiAgICBtdm4g
ICAgcjEyLCAjMQogICAgMHhiNGM1ZjY4ZTogICAgYW5kICAgIHIxLCByMSwgcjEyCiAgICAweGI0
YzVmNjkyOiAgICBtb3YgICAgcjEyLCAjOAogICAgMHhiNGM1ZjY5NjogICAgc211bGwgIHIxLCBy
MTIsIHIxLCByMTIKICAgIDB4YjRjNWY2OWE6ICAgIGFkZHMgICByMywgcjcsIHIxCiAgICAweGI0
YzVmNjljOiAgICBsZHIgICAgcjEsIFtzcCwgIzE2XQogICAgMHhiNGM1ZjY5ZTogICAgYWRkcyAg
IHIxLCByMSwgIzUKICAgIDB4YjRjNWY2YTA6ICAgIG12biAgICByMTIsICMxCiAgICAweGI0YzVm
NmE0OiAgICBhbmQgICAgcjEsIHIxLCByMTIKICAgIDB4YjRjNWY2YTg6ICAgIG1vdiAgICByMTIs
ICM4CiAgICAweGI0YzVmNmFjOiAgICBzbXVsbCAgcjEsIHIxMiwgcjEsIHIxMgogICAgMHhiNGM1
ZjZiMDogICAgbGRyICAgIGxyLCBbcjcsICM0XQogICAgMHhiNGM1ZjZiNDogICAgc3VicyAgIHIx
LCAjOAogICAgMHhiNGM1ZjZiNjogICAgc3VicyAgIHIzLCByMywgcjEKICAgIDB4YjRjNWY2Yjg6
ICAgIGxkciAgICByNywgW3I3XQogICAgMHhiNGM1ZjZiYTogICAgc3VicyAgIHIxLCByMSwgIzQK
ICAgIDB4YjRjNWY2YmM6ICAgIGxkciAgICByMiwgW3NwLCByMV0KICAgIDB4YjRjNWY2YzA6ICAg
IHN0ciAgICByMiwgW3IzLCByMV0KICAgIDB4YjRjNWY2YzI6ICAgIHRzdCAgICByMSwgcjEKICAg
IDB4YjRjNWY2YzQ6ICAgIGJuZSAgICAweGI0YzVmOGJhCiAgICAweGI0YzVmNmM2OiAgICBtb3Yg
ICAgc3AsIHIzCiAgICAweGI0YzVmNmM4OiAgICBieCAgICAgcjAKQ2xlYXJpbmcgY2FsbCBsaW5r
IGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1
ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcgY2FsbCBs
aW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhi
NGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcgY2Fs
bCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0g
MHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcg
Y2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxl
ID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJp
bmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRh
YmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xl
YXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVj
dXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEK
Q2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihl
eGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJjIzE0
MTEKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0
cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCksIGJj
IzE0MTEKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29k
ZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIxOCks
IGJjIzE0MTEKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQg
Q29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTIx
OCksIGJjIzE0MTEKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwg
YXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1
ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNh
bGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0gMHhi
NGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGlj
IGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9uID0g
MHhiNGM1ZTIxOCksIGJjIzE0MTEKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3Jw
aGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTIxOSwgZGF0YUxvY2F0aW9u
ID0gMHhiNGM1ZTIxOCksIGJjIzE0MTEKTGlua2luZyB2aXJ0dWFsIGNhbGwgYXQgPGdsb2JhbD4j
QnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYmMj
MTQxMQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIFZpcnR1YWwgY2FsbCBzbG93IHBhdGggdGh1bms6
CiAgICBDb2RlIGF0IFsweGI0YzVmNmUxLCAweGI0YzVmN2ExKToKICAgIDB4YjRjNWY2ZTA6ICAg
IGxkciAgICByMTIsIFtyMiwgIzUyXQogICAgMHhiNGM1ZjZlNDogICAgYWRkdyAgIHIxMiwgcjEy
LCAjMQogICAgMHhiNGM1ZjZlODogICAgc3RyICAgIHIxMiwgW3IyLCAjNTJdCiAgICAweGI0YzVm
NmVjOiAgICBjbW4gICAgcjEsICM1CiAgICAweGI0YzVmNmYwOiAgICBibmUgICAgMHhiNGM1Zjcw
OAogICAgMHhiNGM1ZjZmMjogICAgbGRyYiAgIHI2LCBbcjAsICM1XQogICAgMHhiNGM1ZjZmNDog
ICAgY21wICAgIHIyLCAjMjMKICAgIDB4YjRjNWY2ZjY6ICAgIGJuZSAgICAweGI0YzVmNzA4CiAg
ICAweGI0YzVmNmY4OiAgICBsZHIgICAgcjgsIFtyMCwgIzIwXQogICAgMHhiNGM1ZjZmYzogICAg
bGRyICAgIHI4LCBbcjgsICMyOF0KICAgIDB4YjRjNWY3MDA6ICAgIHRzdCAgICByOCwgcjgKICAg
IDB4YjRjNWY3MDQ6ICAgIGJlcSAgICAweGI0YzVmNzA4CiAgICAweGI0YzVmNzA2OiAgICBieCAg
ICAgcjgKICAgIDB4YjRjNWY3MDg6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNGM1ZjcwYzog
ICAgbW92ICAgIHI3LCBzcAogICAgMHhiNGM1ZjcwZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
IDB4YjRjNWY3MTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI0YzVmNzE2OiAgICBzdHIg
ICAgcjcsIFtyNl0KICAgIDB4YjRjNWY3MTg6ICAgIG12biAgICByMTIsICMyMwogICAgMHhiNGM1
ZjcxYzogICAgbW92ICAgIHNwLCBzcAogICAgMHhiNGM1ZjcxZTogICAgYWRkICAgIHNwLCByMTIK
ICAgIDB4YjRjNWY3MjA6ICAgIG1vdiAgICByMSwgcjIKICAgIDB4YjRjNWY3MjI6ICAgIG1vdiAg
ICByMCwgcjcKICAgIDB4YjRjNWY3MjQ6ICAgIG1vdncgICByNCwgIzUxMjc3CiAgICAweGI0YzVm
NzI4OiAgICBtb3Z0ICAgcjQsICM0Njc3NgogICAgMHhiNGM1ZjcyYzogICAgYmx4ICAgIHI0CiAg
ICAweGI0YzVmNzJlOiAgICBhZGQgICAgc3AsIHNwLCAjNgogICAgMHhiNGM1ZjczMDogICAgbW92
ICAgIHNwLCByNwogICAgMHhiNGM1ZjczMjogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI0YzVm
NzM2OiAgICB0c3QgICAgcjEsIHIxCiAgICAweGI0YzVmNzM4OiAgICBiZXEgICAgMHhiNGM1Zjc4
OAogICAgMHhiNGM1ZjczYTogICAgbW92ICAgIHI1LCBscgogICAgMHhiNGM1ZjczYzogICAgbGRy
ICAgIHIxLCBbcjcsICMyNF0KICAgIDB4YjRjNWY3M2U6ICAgIGxkciAgICByMywgW3I3LCAjOF0K
ICAgIDB4YjRjNWY3NDA6ICAgIGxkciAgICByMywgW3IzLCAjMzJdCiAgICAweGI0YzVmNzQyOiAg
ICBjbXAgICAgcjMsIHIxCiAgICAweGI0YzVmNzQ0OiAgICBibHMgICAgMHhiNGM1Zjc0OAogICAg
MHhiNGM1Zjc0NjogICAgbW92ICAgIHIxLCByMwogICAgMHhiNGM1Zjc0ODogICAgYWRkcyAgIHIx
LCByMSwgIzUKICAgIDB4YjRjNWY3NGE6ICAgIG12biAgICByMTIsICMxCiAgICAweGI0YzVmNzRl
OiAgICBhbmQgICAgcjEsIHIxLCByMTIKICAgIDB4YjRjNWY3NTI6ICAgIG1vdiAgICByMTIsICM4
CiAgICAweGI0YzVmNzU2OiAgICBzbXVsbCAgcjEsIHIxMiwgcjEsIHIxMgogICAgMHhiNGM1Zjc1
YTogICAgYWRkcyAgIHIzLCByNywgcjEKICAgIDB4YjRjNWY3NWM6ICAgIGxkciAgICByMSwgW3Nw
LCAjMTZdCiAgICAweGI0YzVmNzVlOiAgICBhZGRzICAgcjEsIHIxLCAjNQogICAgMHhiNGM1Zjc2
MDogICAgbXZuICAgIHIxMiwgIzEKICAgIDB4YjRjNWY3NjQ6ICAgIGFuZCAgICByMSwgcjEsIHIx
MgogICAgMHhiNGM1Zjc2ODogICAgbW92ICAgIHIxMiwgIzgKICAgIDB4YjRjNWY3NmM6ICAgIHNt
dWxsICByMSwgcjEyLCByMSwgcjEyCiAgICAweGI0YzVmNzcwOiAgICBsZHIgICAgbHIsIFtyNywg
IzRdCiAgICAweGI0YzVmNzc0OiAgICBzdWJzICAgcjEsICM4CiAgICAweGI0YzVmNzc2OiAgICBz
dWJzICAgcjMsIHIzLCByMQogICAgMHhiNGM1Zjc3ODogICAgbGRyICAgIHI3LCBbcjddCiAgICAw
eGI0YzVmNzdhOiAgICBzdWJzICAgcjEsIHIxLCAjNAogICAgMHhiNGM1Zjc3YzogICAgbGRyICAg
IHIyLCBbc3AsIHIxXQogICAgMHhiNGM1Zjc4MDogICAgc3RyICAgIHIyLCBbcjMsIHIxXQogICAg
MHhiNGM1Zjc4MjogICAgdHN0ICAgIHIxLCByMQogICAgMHhiNGM1Zjc4NDogICAgYm5lICAgIDB4
YjRjNWY5N2EKICAgIDB4YjRjNWY3ODY6ICAgIG1vdiAgICBzcCwgcjMKICAgIDB4YjRjNWY3ODg6
ICAgIGJ4ICAgICByMApDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2Fs
bCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0
YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMg
Y2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAw
eGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBo
aWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24g
PSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1v
cnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRp
b24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9s
eW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9j
YXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3Ig
cG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRh
TG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBm
b3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBk
YXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxsIGxpbmsgaW5m
byBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMjE5
LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxsIGxpbmsg
aW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVl
MjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxsIGxp
bmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0
YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBjYWxs
IGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAw
eGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmluZyBj
YWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUg
PSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVhcmlu
ZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFi
bGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpDbGVh
cmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1
dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQxMQpD
bGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4
ZWN1dGFibGUgPSAweGI0YzVlMjE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMjE4KSwgYmMjMTQx
MQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIFBvbHltb3JwaGljIGNhbGwgc3R1YiBmb3IgPGdsb2Jh
bD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0s
IHJldHVybiBwb2ludCAweGI0YzVlMDE5LCB0YXJnZXRzIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBD
ZWxsOiAweGI0N2YwNDQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90
bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBclpuT2w6WzB4YjQ3OTE3MTAtPjB4YjQ3ZDU3
NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQXJabk9sOlsweGI0Nzkx
NzEwLT4weGI0N2Q1NzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAoRnVu
Y3Rpb246IENlbGw6IDB4YjQ3ZjAzODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJy
YXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0VhR2ZHNDpbMHhiNDc5MTVjMC0+
MHhiNDdkNTY0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNFYUdmRzQ6
WzB4YjQ3OTE1YzAtPjB4YjQ3ZDU2NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10+LCA8dmFyaWFu
dCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDJjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9
LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQWZrU1ZJOlsweGI0
NzkxNDcwLT4weGI0N2Q1NTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0g
I0Fma1NWSTpbMHhiNDc5MTQ3MC0+MHhiNDdkNTU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XT46
CiAgICBDb2RlIGF0IFsweGI0YzVmN2ExLCAweGI0YzVmODYxKToKICAgIDB4YjRjNWY3YTA6ICAg
IG1vdncgICByMSwgIzY0OTM2CiAgICAweGI0YzVmN2E0OiAgICBtb3Z0ICAgcjEsICMxODYKICAg
IDB4YjRjNWY3YTg6ICAgIG1vdncgICByMTIsICM3MDQKICAgIDB4YjRjNWY3YWM6ICAgIG1vdnQg
ICByMTIsICM0NjIwNwogICAgMHhiNGM1ZjdiMDogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRj
NWY3YjQ6ICAgIGJuZSAgICAweGI0YzVmN2Q2CiAgICAweGI0YzVmN2I2OiAgICBsZHIgICAgcjEy
LCBbcjEsICM4XQogICAgMHhiNGM1ZjdiYTogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhi
NGM1ZjdiZTogICAgc3RyICAgIHIxMiwgW3IxLCAjOF0KICAgIDB4YjRjNWY3YzI6ICAgIG1vdncg
ICByMTIsICMzMTEzNwogICAgMHhiNGM1ZjdjNjogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAw
eGI0YzVmN2NhOiAgICBibHggICAgcjEyCiAgICAweGI0YzVmN2NjOiAgICBub3AgICAgCiAgICAw
eGI0YzVmN2NlOiAgICBub3AgICAgCiAgICAweGI0YzVmN2QyOiAgICBiICAgICAgMHhiNGM1YmM4
ZQogICAgMHhiNGM1ZjdkNjogICAgbW92dyAgIHIxMiwgIzg5NgogICAgMHhiNGM1ZjdkYTogICAg
bW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzVmN2RlOiAgICBjbXAgICAgcjAsIHIxMgogICAg
MHhiNGM1ZjdlMjogICAgYm5lICAgIDB4YjRjNWY4MDQKICAgIDB4YjRjNWY3ZTQ6ICAgIGxkciAg
ICByMTIsIFtyMSwgIzRdCiAgICAweGI0YzVmN2U4OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAg
ICAweGI0YzVmN2VjOiAgICBzdHIgICAgcjEyLCBbcjEsICM0XQogICAgMHhiNGM1ZjdmMDogICAg
bW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzVmN2Y0OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIK
ICAgIDB4YjRjNWY3Zjg6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNWY3ZmE6ICAgIG5vcCAgICAK
ICAgIDB4YjRjNWY3ZmM6ICAgIG5vcCAgICAKICAgIDB4YjRjNWY4MDA6ICAgIGIgICAgICAweGI0
YzViYzhlCiAgICAweGI0YzVmODA0OiAgICBtb3Z3ICAgcjEyLCAjMTA4OAogICAgMHhiNGM1Zjgw
ODogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzVmODBjOiAgICBjbXAgICAgcjAsIHIx
MgogICAgMHhiNGM1ZjgxMDogICAgYm5lICAgIDB4YjRjNWY4MzIKICAgIDB4YjRjNWY4MTI6ICAg
IGxkciAgICByMTIsIFtyMV0KICAgIDB4YjRjNWY4MTY6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEK
ICAgIDB4YjRjNWY4MWE6ICAgIHN0ciAgICByMTIsIFtyMV0KICAgIDB4YjRjNWY4MWU6ICAgIG1v
dncgICByMTIsICMzMTEzNwogICAgMHhiNGM1ZjgyMjogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAg
ICAweGI0YzVmODI2OiAgICBibHggICAgcjEyCiAgICAweGI0YzVmODI4OiAgICBub3AgICAgCiAg
ICAweGI0YzVmODJhOiAgICBub3AgICAgCiAgICAweGI0YzVmODJlOiAgICBiICAgICAgMHhiNGM1
YmM4ZQogICAgMHhiNGM1ZjgzMjogICAgbXZuICAgIHIxLCAjNAogICAgMHhiNGM1ZjgzNjogICAg
bW92dyAgIHIyLCAjNDUzNDQKICAgIDB4YjRjNWY4M2E6ICAgIG1vdnQgICByMiwgIzQ2MjYzCiAg
ICAweGI0YzVmODNlOiAgICBtb3Z3ICAgcjgsICM1NzM2OQogICAgMHhiNGM1Zjg0MjogICAgbW92
dCAgIHI4LCAjNDYyNzcKICAgIDB4YjRjNWY4NDY6ICAgIG1vdiAgICBsciwgcjgKICAgIDB4YjRj
NWY4NDg6ICAgIG1vdncgICByMTIsICMxNTk2OQogICAgMHhiNGM1Zjg0YzogICAgbW92dCAgIHIx
MiwgIzQ2ODMyCiAgICAweGI0YzVmODUwOiAgICBieCAgICAgcjEyCkxpbmtpbmcgcG9seW1vcnBo
aWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2Vs
aW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDQ0
MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0p
OyBFeGVjdXRhYmxlOiAjQXJabk9sOlsweGI0NzkxNzEwLT4weGI0N2Q1NzQwLCBMTEludEZ1bmN0
aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0FyWm5PbDpbMHhiNDc5MTcxMC0+MHhiNDdkNTc0
MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGds
b2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1
NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAzODAgKDB4YjQ3ZjcwOTA6
W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTog
I0VhR2ZHNDpbMHhiNDc5MTVjMC0+MHhiNDdkNTY0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSks
IGNvZGVCbG9jayA9ICNFYUdmRzQ6WzB4YjQ3OTE1YzAtPjB4YjQ3ZDU2NDAsIExMSW50RnVuY3Rp
b25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpb
MHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUg
dG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMmMwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30s
IE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBZmtTVkk6WzB4YjQ3
OTE0NzAtPjB4YjQ3ZDU1NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAj
QWZrU1ZJOlsweGI0NzkxNDcwLT4weGI0N2Q1NTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddCkdl
bmVyYXRlZCBKSVQgY29kZSBmb3IgVmlydHVhbCBjYWxsIHNsb3cgcGF0aCB0aHVuazoKICAgIENv
ZGUgYXQgWzB4YjRjNWY4NjEsIDB4YjRjNWY5MjEpOgogICAgMHhiNGM1Zjg2MDogICAgbGRyICAg
IHIxMiwgW3IyLCAjNTJdCiAgICAweGI0YzVmODY0OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAg
ICAweGI0YzVmODY4OiAgICBzdHIgICAgcjEyLCBbcjIsICM1Ml0KICAgIDB4YjRjNWY4NmM6ICAg
IGNtbiAgICByMSwgIzUKICAgIDB4YjRjNWY4NzA6ICAgIGJuZSAgICAweGI0YzVmODg4CiAgICAw
eGI0YzVmODcyOiAgICBsZHJiICAgcjYsIFtyMCwgIzVdCiAgICAweGI0YzVmODc0OiAgICBjbXAg
ICAgcjIsICMyMwogICAgMHhiNGM1Zjg3NjogICAgYm5lICAgIDB4YjRjNWY4ODgKICAgIDB4YjRj
NWY4Nzg6ICAgIGxkciAgICByOCwgW3IwLCAjMjBdCiAgICAweGI0YzVmODdjOiAgICBsZHIgICAg
cjgsIFtyOCwgIzI4XQogICAgMHhiNGM1Zjg4MDogICAgdHN0ICAgIHI4LCByOAogICAgMHhiNGM1
Zjg4NDogICAgYmVxICAgIDB4YjRjNWY4ODgKICAgIDB4YjRjNWY4ODY6ICAgIGJ4ICAgICByOAog
ICAgMHhiNGM1Zjg4ODogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI0YzVmODhjOiAgICBtb3Yg
ICAgcjcsIHNwCiAgICAweGI0YzVmODhlOiAgICBtb3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNGM1
Zjg5MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjRjNWY4OTY6ICAgIHN0ciAgICByNywg
W3I2XQogICAgMHhiNGM1Zjg5ODogICAgbXZuICAgIHIxMiwgIzIzCiAgICAweGI0YzVmODljOiAg
ICBtb3YgICAgc3AsIHNwCiAgICAweGI0YzVmODllOiAgICBhZGQgICAgc3AsIHIxMgogICAgMHhi
NGM1ZjhhMDogICAgbW92ICAgIHIxLCByMgogICAgMHhiNGM1ZjhhMjogICAgbW92ICAgIHIwLCBy
NwogICAgMHhiNGM1ZjhhNDogICAgbW92dyAgIHI0LCAjNTEyNzcKICAgIDB4YjRjNWY4YTg6ICAg
IG1vdnQgICByNCwgIzQ2Nzc2CiAgICAweGI0YzVmOGFjOiAgICBibHggICAgcjQKICAgIDB4YjRj
NWY4YWU6ICAgIGFkZCAgICBzcCwgc3AsICM2CiAgICAweGI0YzVmOGIwOiAgICBtb3YgICAgc3As
IHI3CiAgICAweGI0YzVmOGIyOiAgICBwb3AgICAge3I3LCBscn0KICAgIDB4YjRjNWY4YjY6ICAg
IHRzdCAgICByMSwgcjEKICAgIDB4YjRjNWY4Yjg6ICAgIGJlcSAgICAweGI0YzVmOTA4CiAgICAw
eGI0YzVmOGJhOiAgICBtb3YgICAgcjUsIGxyCiAgICAweGI0YzVmOGJjOiAgICBsZHIgICAgcjEs
IFtyNywgIzI0XQogICAgMHhiNGM1ZjhiZTogICAgbGRyICAgIHIzLCBbcjcsICM4XQogICAgMHhi
NGM1ZjhjMDogICAgbGRyICAgIHIzLCBbcjMsICMzMl0KICAgIDB4YjRjNWY4YzI6ICAgIGNtcCAg
ICByMywgcjEKICAgIDB4YjRjNWY4YzQ6ICAgIGJscyAgICAweGI0YzVmOGM4CiAgICAweGI0YzVm
OGM2OiAgICBtb3YgICAgcjEsIHIzCiAgICAweGI0YzVmOGM4OiAgICBhZGRzICAgcjEsIHIxLCAj
NQogICAgMHhiNGM1ZjhjYTogICAgbXZuICAgIHIxMiwgIzEKICAgIDB4YjRjNWY4Y2U6ICAgIGFu
ZCAgICByMSwgcjEsIHIxMgogICAgMHhiNGM1ZjhkMjogICAgbW92ICAgIHIxMiwgIzgKICAgIDB4
YjRjNWY4ZDY6ICAgIHNtdWxsICByMSwgcjEyLCByMSwgcjEyCiAgICAweGI0YzVmOGRhOiAgICBh
ZGRzICAgcjMsIHI3LCByMQogICAgMHhiNGM1ZjhkYzogICAgbGRyICAgIHIxLCBbc3AsICMxNl0K
ICAgIDB4YjRjNWY4ZGU6ICAgIGFkZHMgICByMSwgcjEsICM1CiAgICAweGI0YzVmOGUwOiAgICBt
dm4gICAgcjEyLCAjMQogICAgMHhiNGM1ZjhlNDogICAgYW5kICAgIHIxLCByMSwgcjEyCiAgICAw
eGI0YzVmOGU4OiAgICBtb3YgICAgcjEyLCAjOAogICAgMHhiNGM1ZjhlYzogICAgc211bGwgIHIx
LCByMTIsIHIxLCByMTIKICAgIDB4YjRjNWY4ZjA6ICAgIGxkciAgICBsciwgW3I3LCAjNF0KICAg
IDB4YjRjNWY4ZjQ6ICAgIHN1YnMgICByMSwgIzgKICAgIDB4YjRjNWY4ZjY6ICAgIHN1YnMgICBy
MywgcjMsIHIxCiAgICAweGI0YzVmOGY4OiAgICBsZHIgICAgcjcsIFtyN10KICAgIDB4YjRjNWY4
ZmE6ICAgIHN1YnMgICByMSwgcjEsICM0CiAgICAweGI0YzVmOGZjOiAgICBsZHIgICAgcjIsIFtz
cCwgcjFdCiAgICAweGI0YzVmOTAwOiAgICBzdHIgICAgcjIsIFtyMywgcjFdCiAgICAweGI0YzVm
OTAyOiAgICB0c3QgICAgcjEsIHIxCiAgICAweGI0YzVmOTA0OiAgICBibmUgICAgMHhiNGM1ZmFm
YQogICAgMHhiNGM1ZjkwNjogICAgbW92ICAgIHNwLCByMwogICAgMHhiNGM1ZjkwODogICAgYngg
ICAgIHIwCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENv
ZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUwMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUwMTgp
LCBiYyMxMzE1CkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0
IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUwMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUw
MTgpLCBiYyMxMzE1CkdlbmVyYXRlZCBERkcgSklUIGNvZGUgZm9yIG9wYXF1ZVBvdyNDNmtoZTk6
WzB4YjQ3OTEzMjAtPjB4YjQ3OTM3ZTAtPjB4YjQ3ZDVhYzAsIERGR0Z1bmN0aW9uQ2FsbCwgNDcg
KE5ldmVySW5saW5lKV0sIGluc3RydWN0aW9uIGNvdW50ID0gNDc6CiAgICBPcHRpbWl6ZWQgd2l0
aCBleGVjdXRpb24gY291bnRlciA9IDEwMDUuMDAwMDAwLzEyNTIuMDAwMDAwLCA1CiAgICBDb2Rl
IGF0IFsweGI0YzVmOTIwLCAweGI0YzVmYjFlKToKICAgICAgICAweGI0YzVmOTIwOiAgICBwdXNo
ICAge3I3LCBscn0KICAgICAgICAweGI0YzVmOTI0OiAgICBtb3YgICAgcjcsIHNwCiAgICAgICAg
MHhiNGM1ZjkyNjogICAgbW92dyAgIHIxMiwgIzQ4OTYKICAgICAgICAweGI0YzVmOTJhOiAgICBt
b3Z0ICAgcjEyLCAjNDYyMDEKICAgICAgICAweGI0YzVmOTJlOiAgICBzdHIgICAgcjEyLCBbcjcs
ICM4XQogICAgICAgIDB4YjRjNWY5MzI6ICAgIG12biAgICByMTIsICMxMTkKICAgICAgICAweGI0
YzVmOTM2OiAgICBhZGQgICAgcjEsIHI3LCByMTIKICAgICAgICAweGI0YzVmOTNhOiAgICBtb3Z3
ICAgcjYsICM0NjM0MAogICAgICAgIDB4YjRjNWY5M2U6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAg
ICAgICAgMHhiNGM1Zjk0MjogICAgbGRyICAgIHIxMiwgW3I2XQogICAgICAgIDB4YjRjNWY5NDY6
ICAgIGNtcCAgICByMTIsIHIxCiAgICAgICAgMHhiNGM1Zjk0YTogICAgYmhpICAgIDB4YjRjNWZh
MWUKICAgICAgICAweGI0YzVmOTRlOiAgICBtb3YgICAgc3AsIHI3CiAgICAgICAgMHhiNGM1Zjk1
MDogICAgbXZuICAgIHIxMiwgIzcxCiAgICAgICAgMHhiNGM1Zjk1NDogICAgbW92ICAgIHNwLCBz
cAogICAgICAgIDB4YjRjNWY5NTY6ICAgIGFkZCAgICBzcCwgcjEyCiAgICBCbG9jayAjMCAoYmMj
MCk6IChPU1IgdGFyZ2V0KQogICAgICBFeGVjdXRpb24gY291bnQ6IDEuMDAwMDAwCiAgICAgIFBy
ZWRlY2Vzc29yczoKICAgICAgU3VjY2Vzc29yczoKICAgICAgRG9taW5hdGVkIGJ5OiAjMAogICAg
ICBEb21pbmF0ZXM6ICMwCiAgICAgIERvbWluYW5jZSBGcm9udGllcjogCiAgICAgIEl0ZXJhdGVk
IERvbWluYW5jZSBGcm9udGllcjogCiAgICAgICAxOjwgMjotPglTZXRBcmd1bWVudChJc0ZsdXNo
ZWQsIGFyZzEoQn48RG91YmxlPi9GbHVzaGVkSlNWYWx1ZSksIG1hY2hpbmU6YXJnMSwgVzpTaWRl
U3RhdGUsIGJjIzApICBwcmVkaWN0aW5nIEFueUludEFzRG91YmxlTm9uaW50YXNkb3VibGUKICAg
ICAgIDI6PCAyOi0+CVNldEFyZ3VtZW50KElzRmx1c2hlZCwgYXJnMihDfjxEb3VibGU+L0ZsdXNo
ZWRKU1ZhbHVlKSwgbWFjaGluZTphcmcyLCBXOlNpZGVTdGF0ZSwgYmMjMCkgIHByZWRpY3Rpbmcg
Tm9uaW50YXNkb3VibGUKICAgICAgIDM6PCAzOmxvYzA+CUpTQ29uc3RhbnQoSlN8UHVyZUludCwg
T3RoZXIsIFVuZGVmaW5lZCwgYmMjMCkKICAgICAgIDQ6PCEwOi0+CU1vdkhpbnQoVW50eXBlZDpA
MywgTXVzdEdlbiwgbG9jMCwgVzpTaWRlU3RhdGUsIENsb2JiZXJzRXhpdCwgYmMjMCkKICAgICAg
IDY6PCEwOi0+CU1vdkhpbnQoVW50eXBlZDpAMywgTXVzdEdlbiwgbG9jMSwgVzpTaWRlU3RhdGUs
IENsb2JiZXJzRXhpdCwgYmMjMCwgRXhpdEludmFsaWQpCiAgICAgICA4OjwhMDotPglNb3ZIaW50
KFVudHlwZWQ6QDMsIE11c3RHZW4sIGxvYzIsIFc6U2lkZVN0YXRlLCBDbG9iYmVyc0V4aXQsIGJj
IzAsIEV4aXRJbnZhbGlkKQogICAgICAxMTo8IDI6bG9jMD4JSlNDb25zdGFudChKU3xVc2VBc090
aGVyLCBPdGhlcm9iaiwgV2VhazpDZWxsOiAweGI0N2YwZDYwICglQmQ6SlNMZXhpY2FsRW52aXJv
bm1lbnQpLCBiYyMxKQogICAgICAxMjo8ITA6LT4JTW92SGludChVbnR5cGVkOkAxMSwgTXVzdEdl
biwgbG9jMCwgVzpTaWRlU3RhdGUsIENsb2JiZXJzRXhpdCwgYmMjMSkKICAgICAgMTQ6PCEwOi0+
CU1vdkhpbnQoVW50eXBlZDpAMTEsIE11c3RHZW4sIGxvYzEsIFc6U2lkZVN0YXRlLCBDbG9iYmVy
c0V4aXQsIGJjIzMpCiAgICAgIDE2OjwgMTpsb2MwPglKU0NvbnN0YW50KEpTfFVzZUFzT3RoZXIs
IE90aGVyb2JqLCBXZWFrOkNlbGw6IDB4YjQ3ZTc4YzAgKCVFajpnbG9iYWwpLCBiYyM2KQogICAg
ICAxNzo8ITA6LT4JTW92SGludChVbnR5cGVkOkAxNiwgTXVzdEdlbiwgbG9jNywgVzpTaWRlU3Rh
dGUsIENsb2JiZXJzRXhpdCwgYmMjNikKICAgICAgMjI6PCAyOmxvYzA+CUpTQ29uc3RhbnQoSlN8
VXNlQXNPdGhlciwgT3RoZXJvYmosIFdlYWs6Q2VsbDogMHhiNDdkM2RhMCAoJURqOk1hdGgpLCBi
YyMxMykKICAgICAgMjQ6PCEwOi0+CU1vdkhpbnQoVW50eXBlZDpAMjIsIE11c3RHZW4sIGxvYzcs
IFc6U2lkZVN0YXRlLCBDbG9iYmVyc0V4aXQsIGJjIzEzKQogICAgICAyODo8IDI6bG9jMT4JSlND
b25zdGFudChKU3xVc2VBc090aGVyLCBGdW5jdGlvbiwgV2VhazpDZWxsOiAweGI0N2YyMmEwICgl
RDE6RnVuY3Rpb24pLCBiYyMyMSkKICAgICAgMjk6PCEwOi0+CU1vdkhpbnQoVW50eXBlZDpAMjgs
IE11c3RHZW4sIGxvYzMsIFc6U2lkZVN0YXRlLCBDbG9iYmVyc0V4aXQsIGJjIzIxKQogICAgICAz
MTo8ITM6bG9jMj4JR2V0TG9jYWwoVW50eXBlZDpAMSwgSlN8TXVzdEdlbnxVc2VBc090aGVyLCBB
bnlJbnRBc0RvdWJsZU5vbmludGFzZG91YmxlLCBhcmcxKEJ+PERvdWJsZT4vRmx1c2hlZEpTVmFs
dWUpLCBtYWNoaW5lOmFyZzEsIFI6U3RhY2soNSksIGJjIzMwKSAgcHJlZGljdGluZyBBbnlJbnRB
c0RvdWJsZU5vbmludGFzZG91YmxlCiAgICAgICAgMHhiNGM1Zjk1ODogICAgbGRyICAgIHIwLCBb
cjcsICM0MF0KICAgICAgICAweGI0YzVmOTVhOiAgICBsZHIgICAgcjEsIFtyNywgIzQ0XQogICAg
ICAzMjo8ITA6LT4JTW92SGludChVbnR5cGVkOkAzMSwgTXVzdEdlbiwgbG9jNiwgVzpTaWRlU3Rh
dGUsIENsb2JiZXJzRXhpdCwgYmMjMzApCiAgICAgIDM0OjwhMzpsb2MzPglHZXRMb2NhbChVbnR5
cGVkOkAyLCBKU3xNdXN0R2VufFVzZUFzT3RoZXIsIE5vbmludGFzZG91YmxlLCBhcmcyKEN+PERv
dWJsZT4vRmx1c2hlZEpTVmFsdWUpLCBtYWNoaW5lOmFyZzIsIFI6U3RhY2soNiksIGJjIzMzKSAg
cHJlZGljdGluZyBOb25pbnRhc2RvdWJsZQogICAgICAgIDB4YjRjNWY5NWM6ICAgIGxkciAgICBy
MiwgW3I3LCAjNDhdCiAgICAgICAgMHhiNGM1Zjk1ZTogICAgbGRyICAgIHIzLCBbcjcsICM1Ml0K
ICAgICAgMzU6PCEwOi0+CU1vdkhpbnQoVW50eXBlZDpAMzQsIE11c3RHZW4sIGxvYzUsIFc6U2lk
ZVN0YXRlLCBDbG9iYmVyc0V4aXQsIGJjIzMzKQogICAgICA0ODo8IDE6bG9jND4JRG91YmxlUmVw
KENoZWNrOlJlYWxOdW1iZXI6QDMxLCBEb3VibGV8UHVyZUludCwgQnl0ZWNvZGVkb3VibGUsIEV4
aXRzLCBiYyMzNikKICAgICAgICAweGI0YzVmOTYwOiAgICB2bW92ICAgZDAsIHIxLCByMQogICAg
ICAgIDB4YjRjNWY5NjQ6ICAgIHZjbXAuZjY0IGQwLCBkMAogICAgICAgIDB4YjRjNWY5Njg6ICAg
IHZtcnMgICBhcHNyX256Y3YsIGZwc2NyCiAgICAgICAgMHhiNGM1Zjk2YzogICAgYmVxICAgIDB4
YjRjNWY5N2UKICAgICAgICAweGI0YzVmOTZlOiAgICBjbXAgICAgcjEsICM0Mjk0OTY3Mjk1CiAg
ICAgICAgMHhiNGM1Zjk3MjogICAgYm5lICAgIDB4YjRjNWZhZWEKICAgICAgICAweGI0YzVmOTc2
OiAgICB2bW92ICAgZDcsIHIwLCByMAogICAgICAgIDB4YjRjNWY5N2E6ICAgIHZjdnQuZjY0LnMz
MiBkMCwgczE0CiAgICAgIDQ5OjwgMTpsb2M1PglEb3VibGVSZXAoQ2hlY2s6UmVhbE51bWJlcjpA
MzQsIERvdWJsZXxQdXJlSW50LCBCeXRlY29kZWRvdWJsZSwgRXhpdHMsIGJjIzM2KQogICAgICAg
IDB4YjRjNWY5N2U6ICAgIHZtb3YgICBkMSwgcjMsIHIzCiAgICAgICAgMHhiNGM1Zjk4MjogICAg
dmNtcC5mNjQgZDEsIGQxCiAgICAgICAgMHhiNGM1Zjk4NjogICAgdm1ycyAgIGFwc3Jfbnpjdiwg
ZnBzY3IKICAgICAgICAweGI0YzVmOThhOiAgICBiZXEgICAgMHhiNGM1Zjk5YwogICAgICAgIDB4
YjRjNWY5OGM6ICAgIGNtcCAgICByMywgIzQyOTQ5NjcyOTUKICAgICAgICAweGI0YzVmOTkwOiAg
ICBibmUgICAgMHhiNGM1ZmIwNAogICAgICAgIDB4YjRjNWY5OTQ6ICAgIHZtb3YgICBkNywgcjIs
IHIyCiAgICAgICAgMHhiNGM1Zjk5ODogICAgdmN2dC5mNjQuczMyIGQxLCBzMTQKICAgICAgMzg6
PCAzOmxvYzU+CUFyaXRoUG93KERvdWJsZVJlcDpANDg8RG91YmxlPiwgRG91YmxlUmVwOkA0OTxE
b3VibGU+LCBEb3VibGV8VXNlQXNPdGhlciwgQnl0ZWNvZGVkb3VibGUsIEV4aXRzLCBiYyMzNikK
ICAgICAgICAweGI0YzVmOTljOiAgICBzdHIgICAgcjEsIFtyNywgIy0yMF0KICAgICAgICAweGI0
YzVmOWEwOiAgICBzdHIgICAgcjAsIFtyNywgIy0yNF0KICAgICAgICAweGI0YzVmOWE0OiAgICBz
dHIgICAgcjMsIFtyNywgIy0yOF0KICAgICAgICAweGI0YzVmOWE4OiAgICBzdHIgICAgcjIsIFty
NywgIy0zMl0KICAgICAgICAweGI0YzVmOWFjOiAgICAubG9uZyAgZWQwNzBiMGEKICAgICAgICAw
eGI0YzVmOWIwOiAgICAubG9uZyAgZWQwNzFiMGMKICAgICAgICAweGI0YzVmOWI0OiAgICB2Y3Z0
LnMzMi5mNjQgczE0LCBkMQogICAgICAgIDB4YjRjNWY5Yjg6ICAgIHZtb3YgICBzMTQsIHIwCiAg
ICAgICAgMHhiNGM1ZjliYzogICAgdmN2dC5mNjQuczMyIGQ3LCBzMTQKICAgICAgICAweGI0YzVm
OWMwOiAgICB2Y21wLmY2NCBkMSwgZDcKICAgICAgICAweGI0YzVmOWM0OiAgICB2bXJzICAgYXBz
cl9uemN2LCBmcHNjcgogICAgICAgIDB4YjRjNWY5Yzg6ICAgIGJuZSAgICAweGI0YzVmOWY4CiAg
ICAgICAgMHhiNGM1ZjljYTogICAgLmxvbmcgIGVlYjAyYjQwCiAgICAgICAgMHhiNGM1ZjljZTog
ICAgY21wICAgIHIwLCAjMTAwMAogICAgICAgIDB4YjRjNWY5ZDI6ICAgIGJoaSAgICAweGI0YzVm
OWY4CiAgICAgICAgMHhiNGM1ZjlkNDogICAgbW92dyAgIHI2LCAjMzEyNDAKICAgICAgICAweGI0
YzVmOWQ4OiAgICBtb3Z0ICAgcjYsICM0NjgyMwogICAgICAgIDB4YjRjNWY5ZGM6ICAgIHZsZHIg
ICBkMCwgW3I2XQogICAgICAgIDB4YjRjNWY5ZTA6ICAgIHRzdCAgICByMCwgIzEKICAgICAgICAw
eGI0YzVmOWU0OiAgICBiZXEgICAgMHhiNGM1ZjllYQogICAgICAgIDB4YjRjNWY5ZTY6ICAgIC5s
b25nICBlZTIwMGIwMgogICAgICAgIDB4YjRjNWY5ZWE6ICAgIC5sb25nICBlZTIyMmIwMgogICAg
ICAgIDB4YjRjNWY5ZWU6ICAgIGFzciAgICByMCwgcjAsICMxCiAgICAgICAgMHhiNGM1ZjlmMjog
ICAgdHN0ICAgIHIwLCByMAogICAgICAgIDB4YjRjNWY5ZjQ6ICAgIGJuZSAgICAweGI0YzVmYmUw
CiAgICAgICAgMHhiNGM1ZjlmNjogICAgYiAgICAgIDB4YjRjNWZhMGEKICAgICAgICAweGI0YzVm
OWY4OiAgICBtb3YgICAgcjEyLCAjMAogICAgICAgIDB4YjRjNWY5ZmM6ICAgIHN0ciAgICByMTIs
IFtyNywgIzI4XQogICAgICAgIDB4YjRjNWZhMDA6ICAgIG1vdncgICByMTIsICM1MDMxMwogICAg
ICAgIDB4YjRjNWZhMDQ6ICAgIG1vdnQgICByMTIsICM0NjgwNgogICAgICAgIDB4YjRjNWZhMDg6
ICAgIGJseCAgICByMTIKICAgICAgNTI6PCEwOi0+CVBoYW50b20oVW50eXBlZDpAMjgsIE11c3RH
ZW4sIGJjIzM2KQogICAgICA1Mzo8ITA6LT4JUGhhbnRvbShVbnR5cGVkOkAyMiwgTXVzdEdlbiwg
YmMjMzYpCiAgICAgIDU0OjwhMDotPglQaGFudG9tKFVudHlwZWQ6QDMxLCBNdXN0R2VuLCBiYyMz
NikKICAgICAgNTU6PCEwOi0+CVBoYW50b20oVW50eXBlZDpAMzQsIE11c3RHZW4sIGJjIzM2KQog
ICAgICAzOTo8ITA6LT4JTW92SGludChEb3VibGVSZXA6QDM4PERvdWJsZT4sIE11c3RHZW4sIGxv
YzMsIFc6U2lkZVN0YXRlLCBDbG9iYmVyc0V4aXQsIGJjIzM2KQogICAgICA1MDo8IDE6bG9jMz4J
VmFsdWVSZXAoRG91YmxlUmVwOkAzODxEb3VibGU+LCBKU3xQdXJlSW50LCBCeXRlY29kZWRvdWJs
ZSwgYmMjMzYsIGV4aXQ6IGJjIzQ1KQogICAgICAgIDB4YjRjNWZhMGE6ICAgIHZtb3YgICByMSwg
cjEsIGQwCiAgICAgIDQ1OjwhMDotPglSZXR1cm4oVW50eXBlZDpANTAsIE11c3RHZW4sIFc6U2lk
ZVN0YXRlLCBFeGl0cywgYmMjNDUpCiAgICAgICAgMHhiNGM1ZmEwZTogICAgbW92ICAgIHNwLCBy
NwogICAgICAgIDB4YjRjNWZhMTA6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgICAgIDB4YjRjNWZh
MTQ6ICAgIGJ4ICAgICBscgogICAgICAgIDB4YjRjNWZhMTY6ICAgIG1vdnMgICByMiwgIzIxMwog
ICAgICAgIDB4YjRjNWZhMTg6ICAgIG1vdiAgICByMTIsICMxNjEKICAgICAgICAweGI0YzVmYTFj
OiAgICBia3B0ICAgIzAKICAgICAgNTY6PCEwOi0+CVBoYW50b20oQ2hlY2s6RG91YmxlUmVwOkAz
ODxEb3VibGU+LCBNdXN0R2VuLCBiYyM0NSkKICAgICAgNDY6PCEwOi0+CUZsdXNoKENoZWNrOlVu
dHlwZWQ6QDIsIE11c3RHZW58SXNGbHVzaGVkLCBhcmcyKEN+PERvdWJsZT4vRmx1c2hlZEpTVmFs
dWUpLCBtYWNoaW5lOmFyZzIsIFI6U3RhY2soNiksIFc6U2lkZVN0YXRlLCBiYyM0NSkgIHByZWRp
Y3RpbmcgTm9uaW50YXNkb3VibGUKICAgICAgNDc6PCEwOi0+CUZsdXNoKENoZWNrOlVudHlwZWQ6
QDEsIE11c3RHZW58SXNGbHVzaGVkLCBhcmcxKEJ+PERvdWJsZT4vRmx1c2hlZEpTVmFsdWUpLCBt
YWNoaW5lOmFyZzEsIFI6U3RhY2soNSksIFc6U2lkZVN0YXRlLCBiYyM0NSkgIHByZWRpY3Rpbmcg
QW55SW50QXNEb3VibGVOb25pbnRhc2RvdWJsZQogICAgKEVuZCBPZiBNYWluIFBhdGgpCiAgICAg
ICAgMHhiNGM1ZmExZTogICAgbW92ICAgIHIxMiwgIzEKICAgICAgICAweGI0YzVmYTIyOiAgICBz
dHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAgICAweGI0YzVmYTI2OiAgICBtdm4gICAgcjEyLCAj
MjMKICAgICAgICAweGI0YzVmYTJhOiAgICBtb3YgICAgc3AsIHNwCiAgICAgICAgMHhiNGM1ZmEy
YzogICAgYWRkICAgIHNwLCByMTIKICAgICAgICAweGI0YzVmYTJlOiAgICBtb3Z3ICAgcjEsICM0
ODk2CiAgICAgICAgMHhiNGM1ZmEzMjogICAgbW92dCAgIHIxLCAjNDYyMDEKICAgICAgICAweGI0
YzVmYTM2OiAgICBtb3YgICAgcjAsIHI3CiAgICAgICAgMHhiNGM1ZmEzODogICAgbW92ICAgIHIx
MiwgIzIKICAgICAgICAweGI0YzVmYTNjOiAgICBzdHIgICAgcjEyLCBbcjcsICMyOF0KICAgICAg
ICAweGI0YzVmYTQwOiAgICBtb3Z3ICAgcjEyLCAjNDc5MDkKICAgICAgICAweGI0YzVmYTQ0OiAg
ICBtb3Z0ICAgcjEyLCAjNDY3NzYKICAgICAgICAweGI0YzVmYTQ4OiAgICBibHggICAgcjEyCiAg
ICAgICAgMHhiNGM1ZmE0YTogICAgbW92dyAgIHI2LCAjNDYzNDgKICAgICAgICAweGI0YzVmYTRl
OiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgICAgIDB4YjRjNWZhNTI6ICAgIGxkciAgICByNiwg
W3I2XQogICAgICAgIDB4YjRjNWZhNTQ6ICAgIGNtcCAgICByMiwgIzAKICAgICAgICAweGI0YzVm
YTU2OiAgICBibmUgICAgMHhiNGM1ZmFjMAogICAgICAgIDB4YjRjNWZhNTg6ICAgIHB1c2ggICB7
cjcsIGxyfQogICAgICAgIDB4YjRjNWZhNWM6ICAgIG1vdiAgICByNywgc3AKICAgICAgICAweGI0
YzVmYTVlOiAgICBtb3Z3ICAgcjEyLCAjNDg5NgogICAgICAgIDB4YjRjNWZhNjI6ICAgIG1vdnQg
ICByMTIsICM0NjIwMQogICAgICAgIDB4YjRjNWZhNjY6ICAgIHN0ciAgICByMTIsIFtyNywgIzhd
CiAgICAgICAgMHhiNGM1ZmE2YTogICAgbGRyICAgIHIxLCBbcjcsICMyNF0KICAgICAgICAweGI0
YzVmYTZjOiAgICBjbXAgICAgcjEsICMzCiAgICAgICAgMHhiNGM1ZmE2ZTogICAgYmhzICAgIDB4
YjRjNWY5MzIKICAgICAgICAweGI0YzVmYTcyOiAgICBtb3YgICAgcjEyLCAjMwogICAgICAgIDB4
YjRjNWZhNzY6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWZhN2E6ICAg
IG12biAgICByMTIsICMyMwogICAgICAgIDB4YjRjNWZhN2U6ICAgIG1vdiAgICBzcCwgc3AKICAg
ICAgICAweGI0YzVmYTgwOiAgICBhZGQgICAgc3AsIHIxMgogICAgICAgIDB4YjRjNWZhODI6ICAg
IG1vdiAgICByMCwgcjcKICAgICAgICAweGI0YzVmYTg0OiAgICBtb3YgICAgcjEyLCAjNAogICAg
ICAgIDB4YjRjNWZhODg6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4YjRjNWZh
OGM6ICAgIG1vdncgICByMTIsICM0Nzk5NwogICAgICAgIDB4YjRjNWZhOTA6ICAgIG1vdnQgICBy
MTIsICM0Njc3NgogICAgICAgIDB4YjRjNWZhOTQ6ICAgIGJseCAgICByMTIKICAgICAgICAweGI0
YzVmYTk2OiAgICBtb3Z3ICAgcjYsICM0NjM0OAogICAgICAgIDB4YjRjNWZhOWE6ICAgIG1vdnQg
ICByNiwgIzQ2MjA3CiAgICAgICAgMHhiNGM1ZmE5ZTogICAgbGRyICAgIHI2LCBbcjZdCiAgICAg
ICAgMHhiNGM1ZmFhMDogICAgY21wICAgIHIyLCAjMAogICAgICAgIDB4YjRjNWZhYTI6ICAgIGJu
ZSAgICAweGI0YzVmYWMwCiAgICAgICAgMHhiNGM1ZmFhNDogICAgYWRkICAgIHNwLCBzcCwgIzYK
ICAgICAgICAweGI0YzVmYWE2OiAgICB0c3QgICAgcjAsIHIwCiAgICAgICAgMHhiNGM1ZmFhODog
ICAgYmVxICAgIDB4YjRjNWY5MzIKICAgICAgICAweGI0YzVmYWFjOiAgICBtb3YgICAgcjEyLCAj
NQogICAgICAgIDB4YjRjNWZhYjA6ICAgIHN0ciAgICByMTIsIFtyNywgIzI4XQogICAgICAgIDB4
YjRjNWZhYjQ6ICAgIG1vdncgICByMTIsICM2OTEzCiAgICAgICAgMHhiNGM1ZmFiODogICAgbW92
dCAgIHIxMiwgIzQ2ODMyCiAgICAgICAgMHhiNGM1ZmFiYzogICAgYmx4ICAgIHIxMgogICAgICAg
IDB4YjRjNWZhYmU6ICAgIGIgICAgICAweGI0YzYwOTMyCiAgICAgICAgMHhiNGM1ZmFjMDogICAg
bW92dyAgIHIwLCAjMzI3NjgKICAgICAgICAweGI0YzVmYWM0OiAgICBtb3Z0ICAgcjAsICM0NjIw
NwogICAgICAgIDB4YjRjNWZhYzg6ICAgIG1vdiAgICByMSwgcjcKICAgICAgICAweGI0YzVmYWNh
OiAgICBtb3YgICAgc3AsIHI3CiAgICAgICAgMHhiNGM1ZmFjYzogICAgbXZuICAgIHIxMiwgIzcx
CiAgICAgICAgMHhiNGM1ZmFkMDogICAgbW92ICAgIHNwLCBzcAogICAgICAgIDB4YjRjNWZhZDI6
ICAgIGFkZCAgICBzcCwgcjEyCiAgICAgICAgMHhiNGM1ZmFkNDogICAgbW92dyAgIHIxMiwgIzYz
MjM3CiAgICAgICAgMHhiNGM1ZmFkODogICAgbW92dCAgIHIxMiwgIzQ2Nzc2CiAgICAgICAgMHhi
NGM1ZmFkYzogICAgYmx4ICAgIHIxMgogICAgICAgIDB4YjRjNWZhZGU6ICAgIG1vdncgICByNiwg
IzQ2MTg4CiAgICAgICAgMHhiNGM1ZmFlMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgICAgICAw
eGI0YzVmYWU2OiAgICBsZHIgICAgcjEsIFtyNl0KICAgICAgICAweGI0YzVmYWU4OiAgICBieCAg
ICAgcjEKICAgICAgICAweGI0YzVmYWVhOiAgICBtb3YgICAgcjEyLCAjMAogICAgICAgIDB4YjRj
NWZhZWU6ICAgIG1vdncgICByNiwgIzQ2MTk2CiAgICAgICAgMHhiNGM1ZmFmMjogICAgbW92dCAg
IHI2LCAjNDYyMDcKICAgICAgICAweGI0YzVmYWY2OiAgICBzdHIgICAgcjEyLCBbcjZdCiAgICAg
ICAgMHhiNGM1ZmFmYTogICAgbW92dyAgIHIxMiwgIzE1NDg5CiAgICAgICAgMHhiNGM1ZmFmZTog
ICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAgICAgMHhiNGM1ZmIwMjogICAgYnggICAgIHIxMgog
ICAgICAgIDB4YjRjNWZiMDQ6ICAgIG1vdiAgICByMTIsICMxCiAgICAgICAgMHhiNGM1ZmIwODog
ICAgbW92dyAgIHI2LCAjNDYxOTYKICAgICAgICAweGI0YzVmYjBjOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgICAgIDB4YjRjNWZiMTA6ICAgIHN0ciAgICByMTIsIFtyNl0KICAgICAgICAweGI0
YzVmYjE0OiAgICBtb3Z3ICAgcjEyLCAjMTU0ODkKICAgICAgICAweGI0YzVmYjE4OiAgICBtb3Z0
ICAgcjEyLCAjNDY4MzIKICAgICAgICAweGI0YzVmYjFjOiAgICBieCAgICAgcjEyCiAgICBTdHJ1
Y3R1cmVzOgogICAgICAgICVCZDpKU0xleGljYWxFbnZpcm9ubWVudCA9IDB4YjQ3ZjYwYTA6W0pT
TGV4aWNhbEVudmlyb25tZW50LCB7fSwgTm9uQXJyYXksIExlYWZdCiAgICAgICAgJUQxOkZ1bmN0
aW9uICAgICAgICAgICAgID0gMHhiNDdmNmUxMDpbRnVuY3Rpb24sIHtuYW1lOjEwMCwgbGVuZ3Ro
OjEwMX0sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwLCBMZWFmXQogICAgICAgICVEajpNYXRo
ICAgICAgICAgICAgICAgICA9IDB4YjQ3YzJhYTA6W01hdGgsIHtFOjEwMCwgTE4yOjEwMSwgTE4x
MDoxMDIsIExPRzJFOjEwMywgTE9HMTBFOjEwNCwgUEk6MTA1LCBTUVJUMV8yOjEwNiwgU1FSVDI6
MTA3LCBTeW1ib2wudG9TdHJpbmdUYWc6MTA4LCBhYnM6MTA5LCBhY29zOjExMCwgYXNpbjoxMTEs
IGF0YW46MTEyLCBhY29zaDoxMTMsIGFzaW5oOjExNCwgYXRhbmg6MTE1LCBhdGFuMjoxMTYsIGNi
cnQ6MTE3LCBjZWlsOjExOCwgY2x6MzI6MTE5LCBjb3M6MTIwLCBjb3NoOjEyMSwgZXhwOjEyMiwg
ZXhwbTE6MTIzLCBmbG9vcjoxMjQsIGZyb3VuZDoxMjUsIGh5cG90OjEyNiwgbG9nOjEyNywgbG9n
MTA6MTI4LCBsb2cxcDoxMjksIGxvZzI6MTMwLCBtYXg6MTMxLCBtaW46MTMyLCBwb3c6MTMzLCBy
YW5kb206MTM0LCByb3VuZDoxMzUsIHNpZ246MTM2LCBzaW46MTM3LCBzaW5oOjEzOCwgc3FydDox
MzksIHRhbjoxNDAsIHRhbmg6MTQxLCB0cnVuYzoxNDIsIGltdWw6MTQzfSwgTm9uQXJyYXksIFBy
b3RvOjB4YjQ3ZDNmZjAsIExlYWZdCiAgICAgICAgJUVqOmdsb2JhbCAgICAgICAgICAgICAgID0g
MHhiNDdjMTg4MDpbZ2xvYmFsLCB7cGFyc2VJbnQ6MTAwLCBPYmplY3Q6MTAxLCBGdW5jdGlvbjox
MDIsIEFycmF5OjEwMywgUmVnRXhwOjEwNCwgRXZhbEVycm9yOjEwNSwgUmFuZ2VFcnJvcjoxMDYs
IFJlZmVyZW5jZUVycm9yOjEwNywgU3ludGF4RXJyb3I6MTA4LCBUeXBlRXJyb3I6MTA5LCBVUklF
cnJvcjoxMTAsIFByb3h5OjExMSwgU2V0OjExMiwgTWFwOjExMywgRGF0ZToxMTQsIFN0cmluZzox
MTUsIFN5bWJvbDoxMTYsIEJvb2xlYW46MTE3LCBOdW1iZXI6MTE4LCBFcnJvcjoxMTksIFByb21p
c2U6MTIwLCBBcnJheUJ1ZmZlcjoxMjEsIFdlYWtNYXA6MTIyLCBXZWFrU2V0OjEyMywgZXZhbDox
MjQsIEludGw6MTI1LCBKU09OOjEyNiwgTWF0aDoxMjcsIFJlZmxlY3Q6MTI4LCBEYXRhVmlldzox
MjksIEZsb2F0NjRBcnJheToxMzAsIEZsb2F0MzJBcnJheToxMzEsIFVpbnQzMkFycmF5OjEzMiwg
SW50MzJBcnJheToxMzMsIFVpbnQxNkFycmF5OjEzNCwgSW50MTZBcnJheToxMzUsIFVpbnQ4Q2xh
bXBlZEFycmF5OjEzNiwgVWludDhBcnJheToxMzcsIEludDhBcnJheToxMzgsIFByaXZhdGVTeW1i
b2wuSW50OEFycmF5OjEzOSwgUHJpdmF0ZVN5bWJvbC5JbnQxNkFycmF5OjE0MCwgUHJpdmF0ZVN5
bWJvbC5JbnQzMkFycmF5OjE0MSwgUHJpdmF0ZVN5bWJvbC5VaW50OEFycmF5OjE0MiwgUHJpdmF0
ZVN5bWJvbC5VaW50OENsYW1wZWRBcnJheToxNDMsIFByaXZhdGVTeW1ib2wuVWludDE2QXJyYXk6
MTQ0LCBQcml2YXRlU3ltYm9sLlVpbnQzMkFycmF5OjE0NSwgUHJpdmF0ZVN5bWJvbC5GbG9hdDMy
QXJyYXk6MTQ2LCBQcml2YXRlU3ltYm9sLkZsb2F0NjRBcnJheToxNDcsIGNvbnNvbGU6MTQ4LCBk
ZWJ1ZzoxNDksIGRlc2NyaWJlOjE1MCwgZGVzY3JpYmVBcnJheToxNTEsIHByaW50OjE1MiwgcXVp
dDoxNTMsIGFib3J0OjE1NCwgZ2M6MTU1LCBmdWxsR0M6MTU2LCBlZGVuR0M6MTU3LCBmb3JjZUdD
U2xvd1BhdGhzOjE1OCwgZ2NIZWFwU2l6ZToxNTksIGFkZHJlc3NPZjoxNjAsIGdldEdldHRlclNl
dHRlcjoxNjEsIHZlcnNpb246MTYyLCBydW46MTYzLCBsb2FkOjE2NCwgcmVhZEZpbGU6MTY1LCBj
aGVja1N5bnRheDoxNjYsIGpzY1N0YWNrOjE2NywgcmVhZGxpbmU6MTY4LCBwcmVjaXNlVGltZTox
NjksIG5ldmVySW5saW5lRnVuY3Rpb246MTcwLCBub0lubGluZToxNzEsIG5vREZHOjE3Miwgbm9G
VEw6MTczLCBudW1iZXJPZkRGR0NvbXBpbGVzOjE3NCwgb3B0aW1pemVOZXh0SW52b2NhdGlvbjox
NzUsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudDoxNzYsIHRyYW5zZmVyQXJyYXlCdWZmZXI6MTc3
LCBmYWlsTmV4dE5ld0NvZGVCbG9jazoxNzgsIHNoYWRvd0NoaWNrZW5GdW5jdGlvbnNPblN0YWNr
OjE3OSwgc2V0R2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkTm90VGhyb3c6MTgwLCBSb290
OjE4MSwgRWxlbWVudDoxODIsIGdldEVsZW1lbnQ6MTgzLCBzZXRFbGVtZW50Um9vdDoxODQsIFNp
bXBsZU9iamVjdDoxODUsIGdldEhpZGRlblZhbHVlOjE4Niwgc2V0SGlkZGVuVmFsdWU6MTg3LCBE
RkdUcnVlOjE4OCwgT1NSRXhpdDoxODksIGlzRmluYWxUaWVyOjE5MCwgcHJlZGljdEludDMyOjE5
MSwgaXNJbnQzMjoxOTIsIGZpYXRJbnQ1MjoxOTMsIGVmZmVjdGZ1bDQyOjE5NCwgbWFrZU1hc3F1
ZXJhZGVyOjE5NSwgaGFzQ3VzdG9tUHJvcGVydGllczoxOTYsIGNyZWF0ZVByb3h5OjE5NywgY3Jl
YXRlUnVudGltZUFycmF5OjE5OCwgY3JlYXRlSW1wdXJlR2V0dGVyOjE5OSwgY3JlYXRlQ3VzdG9t
R2V0dGVyT2JqZWN0OjIwMCwgY3JlYXRlQnVpbHRpbjoyMDEsIGNyZWF0ZUdsb2JhbE9iamVjdDoy
MDIsIHNldEltcHVyZUdldHRlckRlbGVnYXRlOjIwMywgZHVtcFR5cGVzRm9yQWxsVmFyaWFibGVz
OjIwNCwgZmluZFR5cGVGb3JFeHByZXNzaW9uOjIwNSwgcmV0dXJuVHlwZUZvcjoyMDYsIGR1bXBC
YXNpY0Jsb2NrRXhlY3V0aW9uUmFuZ2VzOjIwNywgaGFzQmFzaWNCbG9ja0V4ZWN1dGVkOjIwOCwg
YmFzaWNCbG9ja0V4ZWN1dGlvbkNvdW50OjIwOSwgZW5hYmxlRXhjZXB0aW9uRnV6ejoyMTAsIGRy
YWluTWljcm90YXNrczoyMTEsIGlzMzJCaXRQbGF0Zm9ybToyMTIsIGxvYWRNb2R1bGU6MjEzLCBj
aGVja01vZHVsZVN5bnRheDoyMTQsIHBsYXRmb3JtU3VwcG9ydHNTYW1wbGluZ1Byb2ZpbGVyOjIx
NSwgZ2VuZXJhdGVIZWFwU25hcHNob3Q6MjE2LCBzdGFydFNhbXBsaW5nUHJvZmlsZXI6MjE3LCBz
YW1wbGluZ1Byb2ZpbGVyU3RhY2tUcmFjZXM6MjE4fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZDNm
ZjAsIEhhcyBiZWVuIGRpY3Rpb25hcnksIExlYWZdClVubGlua2luZyBjYWxsIGZyb20gQ29kZVB0
cihleGVjdXRhYmxlID0gMHhiNGM1ZGQ5ZCwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZGQ5YykKR2Vu
ZXJhdGVkIEpJVCBjb2RlIGZvciBQb2x5bW9ycGhpYyBjYWxsIHN0dWIgZm9yIDxnbG9iYWw+I0J5
UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdLCByZXR1
cm4gcG9pbnQgMHhiNGM1ZTAxOSwgdGFyZ2V0cyA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDog
MHhiNDdmMDQ0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhi
NDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQXJabk9sOlsweGI0NzkxNzEwLT4weGI0N2Q1NzQwLCBM
TEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0FyWm5PbDpbMHhiNDc5MTcxMC0+
MHhiNDdkNTc0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9u
OiBDZWxsOiAweGI0N2YwMzgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQ
cm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFYUdmRzQ6WzB4YjQ3OTE1YzAtPjB4YjQ3
ZDU2NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjRWFHZkc0OlsweGI0
NzkxNWMwLT4weGI0N2Q1NjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAo
RnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAyYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9u
QXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0Fma1NWSTpbMHhiNDc5MTQ3
MC0+MHhiNDdkNTU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNBZmtT
Vkk6WzB4YjQ3OTE0NzAtPjB4YjQ3ZDU1NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10+LCA8dmFy
aWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDIwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24s
IHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQnMxWlBwOlsw
eGI0NzkxMWQwLT4weGI0N2Q1NDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2Nr
ID0gI0JzMVpQcDpbMHhiNDc5MTFkMC0+MHhiNDdkNTQ0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3
XT46CiAgICBDb2RlIGF0IFsweGI0YzVmYjIxLCAweGI0YzVmYzIxKToKICAgIDB4YjRjNWZiMjA6
ICAgIG1vdncgICByMSwgIzY0NjA4CiAgICAweGI0YzVmYjI0OiAgICBtb3Z0ICAgcjEsICMxODYK
ICAgIDB4YjRjNWZiMjg6ICAgIG1vdncgICByMTIsICM4OTYKICAgIDB4YjRjNWZiMmM6ICAgIG1v
dnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1ZmIzMDogICAgY21wICAgIHIwLCByMTIKICAgIDB4
YjRjNWZiMzQ6ICAgIGJsdCAgICAweGI0YzVmYjkyCiAgICAweGI0YzVmYjM2OiAgICBtb3Z3ICAg
cjEyLCAjMTA4OAogICAgMHhiNGM1ZmIzYTogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0
YzVmYjNlOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZmI0MjogICAgYm5lICAgIDB4YjRj
NWZiNjQKICAgIDB4YjRjNWZiNDQ6ICAgIGxkciAgICByMTIsIFtyMV0KICAgIDB4YjRjNWZiNDg6
ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNWZiNGM6ICAgIHN0ciAgICByMTIsIFty
MV0KICAgIDB4YjRjNWZiNTA6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1ZmI1NDog
ICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzVmYjU4OiAgICBibHggICAgcjEyCiAgICAw
eGI0YzVmYjVhOiAgICBub3AgICAgCiAgICAweGI0YzVmYjVjOiAgICBub3AgICAgCiAgICAweGI0
YzVmYjYwOiAgICBiICAgICAgMHhiNGM1YmM4ZQogICAgMHhiNGM1ZmI2NDogICAgbW92dyAgIHIx
MiwgIzg5NgogICAgMHhiNGM1ZmI2ODogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzVm
YjZjOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1ZmI3MDogICAgYm5lICAgIDB4YjRjNWZi
ZWUKICAgIDB4YjRjNWZiNzI6ICAgIGxkciAgICByMTIsIFtyMSwgIzRdCiAgICAweGI0YzVmYjc2
OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzVmYjdhOiAgICBzdHIgICAgcjEyLCBb
cjEsICM0XQogICAgMHhiNGM1ZmI3ZTogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzVm
YjgyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNWZiODY6ICAgIGJseCAgICByMTIK
ICAgIDB4YjRjNWZiODg6ICAgIG5vcCAgICAKICAgIDB4YjRjNWZiOGE6ICAgIG5vcCAgICAKICAg
IDB4YjRjNWZiOGU6ICAgIGIgICAgICAweGI0YzViYzhlCiAgICAweGI0YzVmYjkyOiAgICBtb3Z3
ICAgcjEyLCAjNzA0CiAgICAweGI0YzVmYjk2OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4
YjRjNWZiOWE6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzVmYjllOiAgICBibmUgICAgMHhi
NGM1ZmJjMAogICAgMHhiNGM1ZmJhMDogICAgbGRyICAgIHIxMiwgW3IxLCAjOF0KICAgIDB4YjRj
NWZiYTQ6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNWZiYTg6ICAgIHN0ciAgICBy
MTIsIFtyMSwgIzhdCiAgICAweGI0YzVmYmFjOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4
YjRjNWZiYjA6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZmJiNDogICAgYmx4ICAg
IHIxMgogICAgMHhiNGM1ZmJiNjogICAgbm9wICAgIAogICAgMHhiNGM1ZmJiODogICAgbm9wICAg
IAogICAgMHhiNGM1ZmJiYzogICAgYiAgICAgIDB4YjRjNWJjOGUKICAgIDB4YjRjNWZiYzA6ICAg
IG1vdncgICByMTIsICM1MTIKICAgIDB4YjRjNWZiYzQ6ICAgIG1vdnQgICByMTIsICM0NjIwNwog
ICAgMHhiNGM1ZmJjODogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNWZiY2M6ICAgIGJuZSAg
ICAweGI0YzVmYmVlCiAgICAweGI0YzVmYmNlOiAgICBsZHIgICAgcjEyLCBbcjEsICMxMl0KICAg
IDB4YjRjNWZiZDI6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNWZiZDY6ICAgIHN0
ciAgICByMTIsIFtyMSwgIzEyXQogICAgMHhiNGM1ZmJkYTogICAgbW92dyAgIHIxMiwgIzMxMTM3
CiAgICAweGI0YzVmYmRlOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNWZiZTI6ICAg
IGJseCAgICByMTIKICAgIDB4YjRjNWZiZTQ6ICAgIG5vcCAgICAKICAgIDB4YjRjNWZiZTY6ICAg
IG5vcCAgICAKICAgIDB4YjRjNWZiZWE6ICAgIGIgICAgICAweGI0YzViYzhlCiAgICAweGI0YzVm
YmVlOiAgICBtdm4gICAgcjEsICM0CiAgICAweGI0YzVmYmYyOiAgICBtb3Z3ICAgcjIsICM0NTM0
NAogICAgMHhiNGM1ZmJmNjogICAgbW92dCAgIHIyLCAjNDYyNjMKICAgIDB4YjRjNWZiZmE6ICAg
IG1vdncgICByOCwgIzU3MzY5CiAgICAweGI0YzVmYmZlOiAgICBtb3Z0ICAgcjgsICM0NjI3Nwog
ICAgMHhiNGM1ZmMwMjogICAgbW92ICAgIGxyLCByOAogICAgMHhiNGM1ZmMwNDogICAgbW92dyAg
IHIxMiwgIzE1OTY5CiAgICAweGI0YzVmYzA4OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4
YjRjNWZjMGM6ICAgIGJ4ICAgICByMTIKTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9i
YWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRd
IGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwNDQwICgweGI0N2Y3MDkwOltG
dW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNB
clpuT2w6WzB4YjQ3OTE3MTAtPjB4YjQ3ZDU3NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBj
b2RlQmxvY2sgPSAjQXJabk9sOlsweGI0NzkxNzEwLT4weGI0N2Q1NzQwLCBMTEludEZ1bmN0aW9u
Q2FsbCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4
YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRv
IChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDM4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBO
b25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRWFHZkc0OlsweGI0Nzkx
NWMwLT4weGI0N2Q1NjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0Vh
R2ZHNDpbMHhiNDc5MTVjMC0+MHhiNDdkNTY0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5r
aW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0
N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENl
bGw6IDB4YjQ3ZjAyYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3Rv
OjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0Fma1NWSTpbMHhiNDc5MTQ3MC0+MHhiNDdkNTU0
MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNBZmtTVkk6WzB4YjQ3OTE0
NzAtPjB4YjQ3ZDU1NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9ycGhp
YyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxp
bmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMjAw
ICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7
IEV4ZWN1dGFibGU6ICNCczFaUHA6WzB4YjQ3OTExZDAtPjB4YjQ3ZDU0NDAsIExMSW50RnVuY3Rp
b25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQnMxWlBwOlsweGI0NzkxMWQwLT4weGI0N2Q1NDQw
LCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgVmlydHVhbCBj
YWxsIHNsb3cgcGF0aCB0aHVuazoKICAgIENvZGUgYXQgWzB4YjRjNWZjMjEsIDB4YjRjNWZjZTEp
OgogICAgMHhiNGM1ZmMyMDogICAgbGRyICAgIHIxMiwgW3IyLCAjNTJdCiAgICAweGI0YzVmYzI0
OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzVmYzI4OiAgICBzdHIgICAgcjEyLCBb
cjIsICM1Ml0KICAgIDB4YjRjNWZjMmM6ICAgIGNtbiAgICByMSwgIzUKICAgIDB4YjRjNWZjMzA6
ICAgIGJuZSAgICAweGI0YzVmYzQ4CiAgICAweGI0YzVmYzMyOiAgICBsZHJiICAgcjYsIFtyMCwg
IzVdCiAgICAweGI0YzVmYzM0OiAgICBjbXAgICAgcjIsICMyMwogICAgMHhiNGM1ZmMzNjogICAg
Ym5lICAgIDB4YjRjNWZjNDgKICAgIDB4YjRjNWZjMzg6ICAgIGxkciAgICByOCwgW3IwLCAjMjBd
CiAgICAweGI0YzVmYzNjOiAgICBsZHIgICAgcjgsIFtyOCwgIzI4XQogICAgMHhiNGM1ZmM0MDog
ICAgdHN0ICAgIHI4LCByOAogICAgMHhiNGM1ZmM0NDogICAgYmVxICAgIDB4YjRjNWZjNDgKICAg
IDB4YjRjNWZjNDY6ICAgIGJ4ICAgICByOAogICAgMHhiNGM1ZmM0ODogICAgcHVzaCAgIHtyNywg
bHJ9CiAgICAweGI0YzVmYzRjOiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI0YzVmYzRlOiAgICBt
b3Z3ICAgcjYsICM0MjEyOAogICAgMHhiNGM1ZmM1MjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAg
IDB4YjRjNWZjNTY6ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNGM1ZmM1ODogICAgbXZuICAg
IHIxMiwgIzIzCiAgICAweGI0YzVmYzVjOiAgICBtb3YgICAgc3AsIHNwCiAgICAweGI0YzVmYzVl
OiAgICBhZGQgICAgc3AsIHIxMgogICAgMHhiNGM1ZmM2MDogICAgbW92ICAgIHIxLCByMgogICAg
MHhiNGM1ZmM2MjogICAgbW92ICAgIHIwLCByNwogICAgMHhiNGM1ZmM2NDogICAgbW92dyAgIHI0
LCAjNTEyNzcKICAgIDB4YjRjNWZjNjg6ICAgIG1vdnQgICByNCwgIzQ2Nzc2CiAgICAweGI0YzVm
YzZjOiAgICBibHggICAgcjQKICAgIDB4YjRjNWZjNmU6ICAgIGFkZCAgICBzcCwgc3AsICM2CiAg
ICAweGI0YzVmYzcwOiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI0YzVmYzcyOiAgICBwb3AgICAg
e3I3LCBscn0KICAgIDB4YjRjNWZjNzY6ICAgIHRzdCAgICByMSwgcjEKICAgIDB4YjRjNWZjNzg6
ICAgIGJlcSAgICAweGI0YzVmY2M4CiAgICAweGI0YzVmYzdhOiAgICBtb3YgICAgcjUsIGxyCiAg
ICAweGI0YzVmYzdjOiAgICBsZHIgICAgcjEsIFtyNywgIzI0XQogICAgMHhiNGM1ZmM3ZTogICAg
bGRyICAgIHIzLCBbcjcsICM4XQogICAgMHhiNGM1ZmM4MDogICAgbGRyICAgIHIzLCBbcjMsICMz
Ml0KICAgIDB4YjRjNWZjODI6ICAgIGNtcCAgICByMywgcjEKICAgIDB4YjRjNWZjODQ6ICAgIGJs
cyAgICAweGI0YzVmYzg4CiAgICAweGI0YzVmYzg2OiAgICBtb3YgICAgcjEsIHIzCiAgICAweGI0
YzVmYzg4OiAgICBhZGRzICAgcjEsIHIxLCAjNQogICAgMHhiNGM1ZmM4YTogICAgbXZuICAgIHIx
MiwgIzEKICAgIDB4YjRjNWZjOGU6ICAgIGFuZCAgICByMSwgcjEsIHIxMgogICAgMHhiNGM1ZmM5
MjogICAgbW92ICAgIHIxMiwgIzgKICAgIDB4YjRjNWZjOTY6ICAgIHNtdWxsICByMSwgcjEyLCBy
MSwgcjEyCiAgICAweGI0YzVmYzlhOiAgICBhZGRzICAgcjMsIHI3LCByMQogICAgMHhiNGM1ZmM5
YzogICAgbGRyICAgIHIxLCBbc3AsICMxNl0KICAgIDB4YjRjNWZjOWU6ICAgIGFkZHMgICByMSwg
cjEsICM1CiAgICAweGI0YzVmY2EwOiAgICBtdm4gICAgcjEyLCAjMQogICAgMHhiNGM1ZmNhNDog
ICAgYW5kICAgIHIxLCByMSwgcjEyCiAgICAweGI0YzVmY2E4OiAgICBtb3YgICAgcjEyLCAjOAog
ICAgMHhiNGM1ZmNhYzogICAgc211bGwgIHIxLCByMTIsIHIxLCByMTIKICAgIDB4YjRjNWZjYjA6
ICAgIGxkciAgICBsciwgW3I3LCAjNF0KICAgIDB4YjRjNWZjYjQ6ICAgIHN1YnMgICByMSwgIzgK
ICAgIDB4YjRjNWZjYjY6ICAgIHN1YnMgICByMywgcjMsIHIxCiAgICAweGI0YzVmY2I4OiAgICBs
ZHIgICAgcjcsIFtyN10KICAgIDB4YjRjNWZjYmE6ICAgIHN1YnMgICByMSwgcjEsICM0CiAgICAw
eGI0YzVmY2JjOiAgICBsZHIgICAgcjIsIFtzcCwgcjFdCiAgICAweGI0YzVmY2MwOiAgICBzdHIg
ICAgcjIsIFtyMywgcjFdCiAgICAweGI0YzVmY2MyOiAgICB0c3QgICAgcjEsIHIxCiAgICAweGI0
YzVmY2M0OiAgICBibmUgICAgMHhiNGM1ZmViYQogICAgMHhiNGM1ZmNjNjogICAgbW92ICAgIHNw
LCByMwogICAgMHhiNGM1ZmNjODogICAgYnggICAgIHIwCkNsZWFyaW5nIGNhbGwgbGluayBpbmZv
IGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUwMTks
IGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUwMTgpLCBiYyMxMzE1CkNsZWFyaW5nIGNhbGwgbGluayBp
bmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUw
MTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUwMTgpLCBiYyMxMzE1CkNsZWFyaW5nIGNhbGwgbGlu
ayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRj
NWUwMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUwMTgpLCBiYyMxMzE1CkxpbmtpbmcgY2FsbCBp
biA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFs
LCAxNTU0XSBhdCBiYyMxMjAxIHRvIG9wYXF1ZVBvdyNDNmtoZTk6WzB4YjQ3OTEzMjAtPjB4YjQ3
OTM3ZTAtPjB4YjQ3ZDVhYzAsIERGR0Z1bmN0aW9uQ2FsbCwgNDcgKE5ldmVySW5saW5lKV0sIGVu
dHJ5cG9pbnQgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZjkyMSwgZGF0YUxvY2F0aW9u
ID0gMHhiNGM1ZjkyMCkKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBERkcgT1NSIGV4aXQgIzEgKGJj
IzM2LCBCYWRUeXBlKSBmcm9tIG9wYXF1ZVBvdyNDNmtoZTk6WzB4YjQ3OTEzMjAtPjB4YjQ3OTM3
ZTAtPjB4YjQ3ZDVhYzAsIERGR0Z1bmN0aW9uQ2FsbCwgNDcgKE5ldmVySW5saW5lKV0sIHdpdGgg
b3BlcmFuZHMgPSBhcmcyOiphcmcyIGFyZzE6KmFyZzEgYXJnMDpbVW5kZWZpbmVkXSBsb2MwOltV
bmRlZmluZWRdIGxvYzE6W1VuZGVmaW5lZF0gbG9jMjpbVW5kZWZpbmVkXSBsb2MzOltDZWxsOiAw
eGI0N2YyMmEwICglRDE6RnVuY3Rpb24pXSBsb2M0OltVbmRlZmluZWRdIGxvYzU6cGFpciglcjMs
ICVyMikgbG9jNjpwYWlyKCVyMSwgJXIwKSBsb2M3OltDZWxsOiAweGI0N2QzZGEwICglRGo6TWF0
aCldIGxvYzg6W1VuZGVmaW5lZF0gbG9jOTpbVW5kZWZpbmVkXSBsb2MxMDpbVW5kZWZpbmVkXSBs
b2MxMTpbVW5kZWZpbmVkXToKICAgIENvZGUgYXQgWzB4YjRjNWZjZTEsIDB4YjRjNWZmNDEpOgog
ICAgMHhiNGM1ZmNlMDogICAgbW92dyAgIHI2LCAjMzM4MDQKICAgIDB4YjRjNWZjZTQ6ICAgIG1v
dnQgICByNiwgIzQ2MjY5CiAgICAweGI0YzVmY2U4OiAgICBzdHIgICAgcjMsIFtyNl0KICAgIDB4
YjRjNWZjZWE6ICAgIG1vdncgICByNiwgIzMzODAwCiAgICAweGI0YzVmY2VlOiAgICBtb3Z0ICAg
cjYsICM0NjI2OQogICAgMHhiNGM1ZmNmMjogICAgc3RyICAgIHIyLCBbcjZdCiAgICAweGI0YzVm
Y2Y0OiAgICBtb3Z3ICAgcjYsICMxOTY4NAogICAgMHhiNGM1ZmNmODogICAgbW92dCAgIHI2LCAj
NDYyNjQKICAgIDB4YjRjNWZjZmM6ICAgIHN0ciAgICByMywgW3I2XQogICAgMHhiNGM1ZmNmZTog
ICAgbW92dyAgIHI2LCAjMTk2ODAKICAgIDB4YjRjNWZkMDI6ICAgIG1vdnQgICByNiwgIzQ2MjY0
CiAgICAweGI0YzVmZDA2OiAgICBzdHIgICAgcjIsIFtyNl0KICAgIDB4YjRjNWZkMDg6ICAgIG1v
dncgICByNiwgIzE5NjkyCiAgICAweGI0YzVmZDBjOiAgICBtb3Z0ICAgcjYsICM0NjI2NAogICAg
MHhiNGM1ZmQxMDogICAgc3RyICAgIHIxLCBbcjZdCiAgICAweGI0YzVmZDEyOiAgICBtb3Z3ICAg
cjYsICMxOTY4OAogICAgMHhiNGM1ZmQxNjogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgIDB4YjRj
NWZkMWE6ICAgIHN0ciAgICByMCwgW3I2XQogICAgMHhiNGM1ZmQxYzogICAgbGRyICAgIHIwLCBb
cjcsICM0NF0KICAgIDB4YjRjNWZkMWU6ICAgIGxkciAgICByMSwgW3I3LCAjNDBdCiAgICAweGI0
YzVmZDIwOiAgICBtb3Z3ICAgcjYsICMxOTYyOAogICAgMHhiNGM1ZmQyNDogICAgbW92dCAgIHI2
LCAjNDYyNjQKICAgIDB4YjRjNWZkMjg6ICAgIHN0ciAgICByMCwgW3I2XQogICAgMHhiNGM1ZmQy
YTogICAgbW92dyAgIHI2LCAjMTk2MjQKICAgIDB4YjRjNWZkMmU6ICAgIG1vdnQgICByNiwgIzQ2
MjY0CiAgICAweGI0YzVmZDMyOiAgICBzdHIgICAgcjEsIFtyNl0KICAgIDB4YjRjNWZkMzQ6ICAg
IGxkciAgICByMCwgW3I3LCAjNTJdCiAgICAweGI0YzVmZDM2OiAgICBsZHIgICAgcjEsIFtyNywg
IzQ4XQogICAgMHhiNGM1ZmQzODogICAgbW92dyAgIHI2LCAjMTk2MzYKICAgIDB4YjRjNWZkM2M6
ICAgIG1vdnQgICByNiwgIzQ2MjY0CiAgICAweGI0YzVmZDQwOiAgICBzdHIgICAgcjAsIFtyNl0K
ICAgIDB4YjRjNWZkNDI6ICAgIG1vdncgICByNiwgIzE5NjMyCiAgICAweGI0YzVmZDQ2OiAgICBt
b3Z0ICAgcjYsICM0NjI2NAogICAgMHhiNGM1ZmQ0YTogICAgc3RyICAgIHIxLCBbcjZdCiAgICAw
eGI0YzVmZDRjOiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI0YzVmZDRlOiAgICBtdm4gICAgcjEy
LCAjMTE5CiAgICAweGI0YzVmZDUyOiAgICBtb3YgICAgc3AsIHNwCiAgICAweGI0YzVmZDU0OiAg
ICBhZGQgICAgc3AsIHIxMgogICAgMHhiNGM1ZmQ1NjogICAgbXZuICAgIHIxMiwgIzMKICAgIDB4
YjRjNWZkNWE6ICAgIHN0ciAgICByMTIsIFtyNywgIzM2XQogICAgMHhiNGM1ZmQ1ZTogICAgbW92
ICAgIHIxMiwgIzAKICAgIDB4YjRjNWZkNjI6ICAgIHN0ciAgICByMTIsIFtyNywgIzMyXQogICAg
MHhiNGM1ZmQ2NjogICAgbW92dyAgIHI2LCAjMTk2MjgKICAgIDB4YjRjNWZkNmE6ICAgIG1vdnQg
ICByNiwgIzQ2MjY0CiAgICAweGI0YzVmZDZlOiAgICBsZHIgICAgcjAsIFtyNl0KICAgIDB4YjRj
NWZkNzA6ICAgIG1vdncgICByNiwgIzE5NjI0CiAgICAweGI0YzVmZDc0OiAgICBtb3Z0ICAgcjYs
ICM0NjI2NAogICAgMHhiNGM1ZmQ3ODogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI0YzVmZDdh
OiAgICBzdHIgICAgcjAsIFtyNywgIzQ0XQogICAgMHhiNGM1ZmQ3YzogICAgc3RyICAgIHIxLCBb
cjcsICM0MF0KICAgIDB4YjRjNWZkN2U6ICAgIG1vdncgICByNiwgIzE5NjM2CiAgICAweGI0YzVm
ZDgyOiAgICBtb3Z0ICAgcjYsICM0NjI2NAogICAgMHhiNGM1ZmQ4NjogICAgbGRyICAgIHIwLCBb
cjZdCiAgICAweGI0YzVmZDg4OiAgICBtb3Z3ICAgcjYsICMxOTYzMgogICAgMHhiNGM1ZmQ4Yzog
ICAgbW92dCAgIHI2LCAjNDYyNjQKICAgIDB4YjRjNWZkOTA6ICAgIGxkciAgICByMSwgW3I2XQog
ICAgMHhiNGM1ZmQ5MjogICAgc3RyICAgIHIwLCBbcjcsICM1Ml0KICAgIDB4YjRjNWZkOTQ6ICAg
IHN0ciAgICByMSwgW3I3LCAjNDhdCiAgICAweGI0YzVmZDk2OiAgICBtdm4gICAgcjEyLCAjMwog
ICAgMHhiNGM1ZmQ5YTogICAgc3RyICAgIHIxMiwgW3I3LCAjLTRdCiAgICAweGI0YzVmZDllOiAg
ICBtb3YgICAgcjEyLCAjMAogICAgMHhiNGM1ZmRhMjogICAgc3RyICAgIHIxMiwgW3I3LCAjLThd
CiAgICAweGI0YzVmZGE2OiAgICBtdm4gICAgcjEyLCAjMwogICAgMHhiNGM1ZmRhYTogICAgc3Ry
ICAgIHIxMiwgW3I3LCAjLTEyXQogICAgMHhiNGM1ZmRhZTogICAgbW92ICAgIHIxMiwgIzAKICAg
IDB4YjRjNWZkYjI6ICAgIHN0ciAgICByMTIsIFtyNywgIy0xNl0KICAgIDB4YjRjNWZkYjY6ICAg
IG12biAgICByMTIsICMzCiAgICAweGI0YzVmZGJhOiAgICBzdHIgICAgcjEyLCBbcjcsICMtMjBd
CiAgICAweGI0YzVmZGJlOiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNGM1ZmRjMjogICAgc3Ry
ICAgIHIxMiwgW3I3LCAjLTI0XQogICAgMHhiNGM1ZmRjNjogICAgbXZuICAgIHIxMiwgIzQKICAg
IDB4YjRjNWZkY2E6ICAgIHN0ciAgICByMTIsIFtyNywgIy0yOF0KICAgIDB4YjRjNWZkY2U6ICAg
IG1vdncgICByMTIsICM4ODY0CiAgICAweGI0YzVmZGQyOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcK
ICAgIDB4YjRjNWZkZDY6ICAgIHN0ciAgICByMTIsIFtyNywgIy0zMl0KICAgIDB4YjRjNWZkZGE6
ICAgIG12biAgICByMTIsICMzCiAgICAweGI0YzVmZGRlOiAgICBzdHIgICAgcjEyLCBbcjcsICMt
MzZdCiAgICAweGI0YzVmZGUyOiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNGM1ZmRlNjogICAg
c3RyICAgIHIxMiwgW3I3LCAjLTQwXQogICAgMHhiNGM1ZmRlYTogICAgbW92dyAgIHI2LCAjMTk2
ODQKICAgIDB4YjRjNWZkZWU6ICAgIG1vdnQgICByNiwgIzQ2MjY0CiAgICAweGI0YzVmZGYyOiAg
ICBsZHIgICAgcjAsIFtyNl0KICAgIDB4YjRjNWZkZjQ6ICAgIG1vdncgICByNiwgIzE5NjgwCiAg
ICAweGI0YzVmZGY4OiAgICBtb3Z0ICAgcjYsICM0NjI2NAogICAgMHhiNGM1ZmRmYzogICAgbGRy
ICAgIHIxLCBbcjZdCiAgICAweGI0YzVmZGZlOiAgICBzdHIgICAgcjAsIFtyNywgIy00NF0KICAg
IDB4YjRjNWZlMDI6ICAgIHN0ciAgICByMSwgW3I3LCAjLTQ4XQogICAgMHhiNGM1ZmUwNjogICAg
bW92dyAgIHI2LCAjMTk2OTIKICAgIDB4YjRjNWZlMGE6ICAgIG1vdnQgICByNiwgIzQ2MjY0CiAg
ICAweGI0YzVmZTBlOiAgICBsZHIgICAgcjAsIFtyNl0KICAgIDB4YjRjNWZlMTA6ICAgIG1vdncg
ICByNiwgIzE5Njg4CiAgICAweGI0YzVmZTE0OiAgICBtb3Z0ICAgcjYsICM0NjI2NAogICAgMHhi
NGM1ZmUxODogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI0YzVmZTFhOiAgICBzdHIgICAgcjAs
IFtyNywgIy01Ml0KICAgIDB4YjRjNWZlMWU6ICAgIHN0ciAgICByMSwgW3I3LCAjLTU2XQogICAg
MHhiNGM1ZmUyMjogICAgbXZuICAgIHIxMiwgIzQKICAgIDB4YjRjNWZlMjY6ICAgIHN0ciAgICBy
MTIsIFtyNywgIy02MF0KICAgIDB4YjRjNWZlMmE6ICAgIG1vdncgICByMTIsICMxNTc3NgogICAg
MHhiNGM1ZmUyZTogICAgbW92dCAgIHIxMiwgIzQ2MjA1CiAgICAweGI0YzVmZTMyOiAgICBzdHIg
ICAgcjEyLCBbcjcsICMtNjRdCiAgICAweGI0YzVmZTM2OiAgICBtdm4gICAgcjEyLCAjMwogICAg
MHhiNGM1ZmUzYTogICAgc3RyICAgIHIxMiwgW3I3LCAjLTY4XQogICAgMHhiNGM1ZmUzZTogICAg
bW92ICAgIHIxMiwgIzAKICAgIDB4YjRjNWZlNDI6ICAgIHN0ciAgICByMTIsIFtyNywgIy03Ml0K
ICAgIDB4YjRjNWZlNDY6ICAgIG12biAgICByMTIsICMzCiAgICAweGI0YzVmZTRhOiAgICBzdHIg
ICAgcjEyLCBbcjcsICMtNzZdCiAgICAweGI0YzVmZTRlOiAgICBtb3YgICAgcjEyLCAjMAogICAg
MHhiNGM1ZmU1MjogICAgc3RyICAgIHIxMiwgW3I3LCAjLTgwXQogICAgMHhiNGM1ZmU1NjogICAg
bXZuICAgIHIxMiwgIzMKICAgIDB4YjRjNWZlNWE6ICAgIHN0ciAgICByMTIsIFtyNywgIy04NF0K
ICAgIDB4YjRjNWZlNWU6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI0YzVmZTYyOiAgICBzdHIg
ICAgcjEyLCBbcjcsICMtODhdCiAgICAweGI0YzVmZTY2OiAgICBtdm4gICAgcjEyLCAjMwogICAg
MHhiNGM1ZmU2YTogICAgc3RyICAgIHIxMiwgW3I3LCAjLTkyXQogICAgMHhiNGM1ZmU2ZTogICAg
bW92ICAgIHIxMiwgIzAKICAgIDB4YjRjNWZlNzI6ICAgIHN0ciAgICByMTIsIFtyNywgIy05Nl0K
ICAgIDB4YjRjNWZlNzY6ICAgIG1vdncgICByNiwgIzI0NjUyCiAgICAweGI0YzVmZTdhOiAgICBt
b3Z0ICAgcjYsICM0NjI2NQogICAgMHhiNGM1ZmU3ZTogICAgbGRyICAgIHIxMiwgW3I2XQogICAg
MHhiNGM1ZmU4MjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZmU4NjogICAgbW92
dyAgIHI2LCAjMjQ2NTIKICAgIDB4YjRjNWZlOGE6ICAgIG1vdnQgICByNiwgIzQ2MjY1CiAgICAw
eGI0YzVmZThlOiAgICBzdHIgICAgcjEyLCBbcjZdCiAgICAweGI0YzVmZTkyOiAgICBtb3Z3ICAg
cjAsICM0ODk2CiAgICAweGI0YzVmZTk2OiAgICBtb3Z0ICAgcjAsICM0NjIwMQogICAgMHhiNGM1
ZmU5YTogICAgbGRyICAgIHIyLCBbcjAsICMyOTJdCiAgICAweGI0YzVmZTllOiAgICBhZGRzICAg
cjIsIHIyLCAjMQogICAgMHhiNGM1ZmVhMDogICAgc3RyICAgIHIyLCBbcjAsICMyOTJdCiAgICAw
eGI0YzVmZWE0OiAgICBtb3Z3ICAgcjAsICMxNDMwNAogICAgMHhiNGM1ZmVhODogICAgbW92dCAg
IHIwLCAjNDYyMDEKICAgIDB4YjRjNWZlYWM6ICAgIGxkciAgICByNiwgW3IwLCAjMjgwXQogICAg
MHhiNGM1ZmViMDogICAgY21wICAgIHIyLCAjMAogICAgMHhiNGM1ZmViMjogICAgYmdlICAgIDB4
YjRjNWZlYmEKICAgIDB4YjRjNWZlYjQ6ICAgIG1vdnMgICByMSwgIzEwMAogICAgMHhiNGM1ZmVi
NjogICAgY21wICAgIHIyLCByMQogICAgMHhiNGM1ZmViODogICAgYmxzICAgIDB4YjRjNWZlY2UK
ICAgIDB4YjRjNWZlYmE6ICAgIG1vdncgICByMSwgIzI0NjQ4CiAgICAweGI0YzVmZWJlOiAgICBt
b3Z0ICAgcjEsICM0NjI2NQogICAgMHhiNGM1ZmVjMjogICAgbW92dyAgIHI0LCAjNDY3NTcKICAg
IDB4YjRjNWZlYzY6ICAgIG1vdnQgICByNCwgIzQ2NzU3CiAgICAweGI0YzVmZWNhOiAgICBibHgg
ICAgcjQKICAgIDB4YjRjNWZlY2M6ICAgIGIgICAgICAweGI0YzVmZWVlCiAgICAweGI0YzVmZWNl
OiAgICBtb3Z3ICAgcjEyLCAjNjQ1MzYKICAgIDB4YjRjNWZlZDI6ICAgIG1vdnQgICByMTIsICM2
NTUzNQogICAgMHhiNGM1ZmVkNjogICAgc3RyICAgIHIxMiwgW3IwLCAjMjgwXQogICAgMHhiNGM1
ZmVkYTogICAgbW92dyAgIHIxMiwgIzEyNTIKICAgIDB4YjRjNWZlZGU6ICAgIHN0ciAgICByMTIs
IFtyMCwgIzI4OF0KICAgIDB4YjRjNWZlZTI6ICAgIG1vdncgICByMTIsICMwCiAgICAweGI0YzVm
ZWU2OiAgICBtb3Z0ICAgcjEyLCAjMTc1MzAKICAgIDB4YjRjNWZlZWE6ICAgIHN0ciAgICByMTIs
IFtyMCwgIzI4NF0KICAgIDB4YjRjNWZlZWU6ICAgIG1vdncgICByMTIsICMxNDMwNAogICAgMHhi
NGM1ZmVmMjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzVmZWY2OiAgICBzdHIgICAg
cjEyLCBbcjcsICM4XQogICAgMHhiNGM1ZmVmYTogICAgbW92dyAgIHIxMiwgIzMyOTIwCiAgICAw
eGI0YzVmZWZlOiAgICBtb3Z0ICAgcjEyLCAjNDYyNjQKICAgIDB4YjRjNWZmMDI6ICAgIHN0ciAg
ICByMTIsIFtyNywgIzI4XQogICAgMHhiNGM1ZmYwNjogICAgbW92dyAgIHIxLCAjMTQzMDQKICAg
IDB4YjRjNWZmMGE6ICAgIG1vdnQgICByMSwgIzQ2MjAxCiAgICAweGI0YzVmZjBlOiAgICBsZHJi
ICAgcjYsIFtyMSwgIzddCiAgICAweGI0YzVmZjEwOiAgICB0c3QgICAgcjYsIHI2CiAgICAweGI0
YzVmZjEyOiAgICBibmUgICAgMHhiNGM1ZmYyMAogICAgMHhiNGM1ZmYxNDogICAgbW92ICAgIHIw
LCByNwogICAgMHhiNGM1ZmYxNjogICAgbW92dyAgIHI0LCAjNjMxMjkKICAgIDB4YjRjNWZmMWE6
ICAgIG1vdnQgICByNCwgIzQ2Nzc2CiAgICAweGI0YzVmZjFlOiAgICBibHggICAgcjQKICAgIDB4
YjRjNWZmMjA6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjRjNWZmMjI6ICAgIG12biAgICByMTIs
ICMxMTkKICAgIDB4YjRjNWZmMjY6ICAgIG1vdiAgICBzcCwgc3AKICAgIDB4YjRjNWZmMjg6ICAg
IGFkZCAgICBzcCwgcjEyCiAgICAweGI0YzVmZjJhOiAgICBtb3Z3ICAgcjIsICM3NTk1CiAgICAw
eGI0YzVmZjJlOiAgICBtb3Z0ICAgcjIsICM0NjgzMgogICAgMHhiNGM1ZmYzMjogICAgYnggICAg
IHIyCkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgUG9seW1vcnBoaWMgY2FsbCBzdHViIGZvciA8Z2xv
YmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0
XSwgcmV0dXJuIHBvaW50IDB4YjRjNWUwMTksIHRhcmdldHMgPHZhcmlhbnQgPSAoRnVuY3Rpb246
IENlbGw6IDB4YjQ3ZjA0NDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFBy
b3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FyWm5PbDpbMHhiNDc5MTcxMC0+MHhiNDdk
NTc0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNBclpuT2w6WzB4YjQ3
OTE3MTAtPjB4YjQ3ZDU3NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10+LCA8dmFyaWFudCA9IChG
dW5jdGlvbjogQ2VsbDogMHhiNDdmMDM4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25B
cnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRWFHZkc0OlsweGI0NzkxNWMw
LT4weGI0N2Q1NjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0VhR2ZH
NDpbMHhiNDc5MTVjMC0+MHhiNDdkNTY0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJp
YW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMmMwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwg
e30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBZmtTVkk6WzB4
YjQ3OTE0NzAtPjB4YjQ3ZDU1NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sg
PSAjQWZrU1ZJOlsweGI0NzkxNDcwLT4weGI0N2Q1NTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDdd
PiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAyMDAgKDB4YjQ3ZjcwOTA6W0Z1
bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0Jz
MVpQcDpbMHhiNDc5MTFkMC0+MHhiNDdkNTQ0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNv
ZGVCbG9jayA9ICNCczFaUHA6WzB4YjQ3OTExZDAtPjB4YjQ3ZDU0NDAsIExMSW50RnVuY3Rpb25D
YWxsLCA0N10+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDE0MCAoMHhiNDdm
NzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRh
YmxlOiAjQmo0OUhVOlsweGI0NzkxMDgwLT4weGI0N2Q1MzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NDddKSwgY29kZUJsb2NrID0gI0JqNDlIVTpbMHhiNDc5MTA4MC0+MHhiNDdkNTM0MCwgTExJbnRG
dW5jdGlvbkNhbGwsIDQ3XT46CiAgICBDb2RlIGF0IFsweGI0YzVmZjQxLCAweGI0YzYwMDYxKToK
ICAgIDB4YjRjNWZmNDA6ICAgIG1vdncgICByMSwgIzY1MDE2CiAgICAweGI0YzVmZjQ0OiAgICBt
b3Z0ICAgcjEsICMxODYKICAgIDB4YjRjNWZmNDg6ICAgIG1vdncgICByMTIsICM4OTYKICAgIDB4
YjRjNWZmNGM6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1ZmY1MDogICAgY21wICAg
IHIwLCByMTIKICAgIDB4YjRjNWZmNTQ6ICAgIGJsdCAgICAweGI0YzVmZmIyCiAgICAweGI0YzVm
ZjU2OiAgICBtb3Z3ICAgcjEyLCAjODk2CiAgICAweGI0YzVmZjVhOiAgICBtb3Z0ICAgcjEyLCAj
NDYyMDcKICAgIDB4YjRjNWZmNWU6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzVmZjYyOiAg
ICBibmUgICAgMHhiNGM1ZmY4NAogICAgMHhiNGM1ZmY2NDogICAgbGRyICAgIHIxMiwgW3IxLCAj
NF0KICAgIDB4YjRjNWZmNjg6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNWZmNmM6
ICAgIHN0ciAgICByMTIsIFtyMSwgIzRdCiAgICAweGI0YzVmZjcwOiAgICBtb3Z3ICAgcjEyLCAj
MzExMzcKICAgIDB4YjRjNWZmNzQ6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1ZmY3
ODogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1ZmY3YTogICAgbm9wICAgIAogICAgMHhiNGM1ZmY3
YzogICAgbm9wICAgIAogICAgMHhiNGM1ZmY4MDogICAgYiAgICAgIDB4YjRjNWJjOGUKICAgIDB4
YjRjNWZmODQ6ICAgIG1vdncgICByMTIsICMxMDg4CiAgICAweGI0YzVmZjg4OiAgICBtb3Z0ICAg
cjEyLCAjNDYyMDcKICAgIDB4YjRjNWZmOGM6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzVm
ZjkwOiAgICBibmUgICAgMHhiNGM2MDAzYwogICAgMHhiNGM1ZmY5MjogICAgbGRyICAgIHIxMiwg
W3IxXQogICAgMHhiNGM1ZmY5NjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1ZmY5
YTogICAgc3RyICAgIHIxMiwgW3IxXQogICAgMHhiNGM1ZmY5ZTogICAgbW92dyAgIHIxMiwgIzMx
MTM3CiAgICAweGI0YzVmZmEyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNWZmYTY6
ICAgIGJseCAgICByMTIKICAgIDB4YjRjNWZmYTg6ICAgIG5vcCAgICAKICAgIDB4YjRjNWZmYWE6
ICAgIG5vcCAgICAKICAgIDB4YjRjNWZmYWU6ICAgIGIgICAgICAweGI0YzViYzhlCiAgICAweGI0
YzVmZmIyOiAgICBtb3Z3ICAgcjEyLCAjNTEyCiAgICAweGI0YzVmZmI2OiAgICBtb3Z0ICAgcjEy
LCAjNDYyMDcKICAgIDB4YjRjNWZmYmE6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzVmZmJl
OiAgICBibmUgICAgMHhiNGM1ZmZlMAogICAgMHhiNGM1ZmZjMDogICAgbGRyICAgIHIxMiwgW3Ix
LCAjMTJdCiAgICAweGI0YzVmZmM0OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzVm
ZmM4OiAgICBzdHIgICAgcjEyLCBbcjEsICMxMl0KICAgIDB4YjRjNWZmY2M6ICAgIG1vdncgICBy
MTIsICMzMTEzNwogICAgMHhiNGM1ZmZkMDogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0
YzVmZmQ0OiAgICBibHggICAgcjEyCiAgICAweGI0YzVmZmQ2OiAgICBub3AgICAgCiAgICAweGI0
YzVmZmQ4OiAgICBub3AgICAgCiAgICAweGI0YzVmZmRjOiAgICBiICAgICAgMHhiNGM1YmM4ZQog
ICAgMHhiNGM1ZmZlMDogICAgbW92dyAgIHIxMiwgIzcwNAogICAgMHhiNGM1ZmZlNDogICAgbW92
dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzVmZmU4OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhi
NGM1ZmZlYzogICAgYm5lICAgIDB4YjRjNjAwMGUKICAgIDB4YjRjNWZmZWU6ICAgIGxkciAgICBy
MTIsIFtyMSwgIzhdCiAgICAweGI0YzVmZmYyOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAw
eGI0YzVmZmY2OiAgICBzdHIgICAgcjEyLCBbcjEsICM4XQogICAgMHhiNGM1ZmZmYTogICAgbW92
dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzVmZmZlOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAg
IDB4YjRjNjAwMDI6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNjAwMDQ6ICAgIG5vcCAgICAKICAg
IDB4YjRjNjAwMDY6ICAgIG5vcCAgICAKICAgIDB4YjRjNjAwMGE6ICAgIGIgICAgICAweGI0YzVi
YzhlCiAgICAweGI0YzYwMDBlOiAgICBtb3Z3ICAgcjEyLCAjMzIwCiAgICAweGI0YzYwMDEyOiAg
ICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNjAwMTY6ICAgIGNtcCAgICByMCwgcjEyCiAg
ICAweGI0YzYwMDFhOiAgICBibmUgICAgMHhiNGM2MDAzYwogICAgMHhiNGM2MDAxYzogICAgbGRy
ICAgIHIxMiwgW3IxLCAjMTZdCiAgICAweGI0YzYwMDIwOiAgICBhZGR3ICAgcjEyLCByMTIsICMx
CiAgICAweGI0YzYwMDI0OiAgICBzdHIgICAgcjEyLCBbcjEsICMxNl0KICAgIDB4YjRjNjAwMjg6
ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM2MDAyYzogICAgbW92dCAgIHIxMiwgIzQ2
ODMyCiAgICAweGI0YzYwMDMwOiAgICBibHggICAgcjEyCiAgICAweGI0YzYwMDMyOiAgICBub3Ag
ICAgCiAgICAweGI0YzYwMDM0OiAgICBub3AgICAgCiAgICAweGI0YzYwMDM4OiAgICBiICAgICAg
MHhiNGM1YmM4ZQogICAgMHhiNGM2MDAzYzogICAgbXZuICAgIHIxLCAjNAogICAgMHhiNGM2MDA0
MDogICAgbW92dyAgIHIyLCAjNDUzNDQKICAgIDB4YjRjNjAwNDQ6ICAgIG1vdnQgICByMiwgIzQ2
MjYzCiAgICAweGI0YzYwMDQ4OiAgICBtb3Z3ICAgcjgsICM1NzM2OQogICAgMHhiNGM2MDA0Yzog
ICAgbW92dCAgIHI4LCAjNDYyNzcKICAgIDB4YjRjNjAwNTA6ICAgIG1vdiAgICBsciwgcjgKICAg
IDB4YjRjNjAwNTI6ICAgIG1vdncgICByMTIsICMxNTk2OQogICAgMHhiNGM2MDA1NjogICAgbW92
dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzYwMDVhOiAgICBieCAgICAgcjEyCkxpbmtpbmcgcG9s
eW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAs
IEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhi
NDdmMDQ0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdl
ZGRlMF0pOyBFeGVjdXRhYmxlOiAjQXJabk9sOlsweGI0NzkxNzEwLT4weGI0N2Q1NzQwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0FyWm5PbDpbMHhiNDc5MTcxMC0+MHhi
NDdkNTc0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwg
aW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2Jh
bCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAzODAgKDB4YjQ3
ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0
YWJsZTogI0VhR2ZHNDpbMHhiNDc5MTVjMC0+MHhiNDdkNTY0MCwgTExJbnRGdW5jdGlvbkNhbGws
IDQ3XSksIGNvZGVCbG9jayA9ICNFYUdmRzQ6WzB4YjQ3OTE1YzAtPjB4YjQ3ZDU2NDAsIExMSW50
RnVuY3Rpb25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5
UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJj
IzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMmMwICgweGI0N2Y3MDkwOltGdW5jdGlv
biwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBZmtTVkk6
WzB4YjQ3OTE0NzAtPjB4YjQ3ZDU1NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxv
Y2sgPSAjQWZrU1ZJOlsweGI0NzkxNDcwLT4weGI0N2Q1NTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNl
NzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5j
dGlvbjogQ2VsbDogMHhiNDdmMDIwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJh
eSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQnMxWlBwOlsweGI0NzkxMWQwLT4w
eGI0N2Q1NDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0JzMVpQcDpb
MHhiNDc5MTFkMC0+MHhiNDdkNTQ0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBv
bHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUw
LCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4
YjQ3ZjAxNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3
ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JqNDlIVTpbMHhiNDc5MTA4MC0+MHhiNDdkNTM0MCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNCajQ5SFU6WzB4YjQ3OTEwODAtPjB4
YjQ3ZDUzNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10KR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBW
aXJ0dWFsIGNhbGwgc2xvdyBwYXRoIHRodW5rOgogICAgQ29kZSBhdCBbMHhiNGM1NDAwMSwgMHhi
NGM1NDBjMSk6CiAgICAweGI0YzU0MDAwOiAgICBsZHIgICAgcjEyLCBbcjIsICM1Ml0KICAgIDB4
YjRjNTQwMDQ6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTQwMDg6ICAgIHN0ciAg
ICByMTIsIFtyMiwgIzUyXQogICAgMHhiNGM1NDAwYzogICAgY21uICAgIHIxLCAjNQogICAgMHhi
NGM1NDAxMDogICAgYm5lICAgIDB4YjRjNTQwMjgKICAgIDB4YjRjNTQwMTI6ICAgIGxkcmIgICBy
NiwgW3IwLCAjNV0KICAgIDB4YjRjNTQwMTQ6ICAgIGNtcCAgICByMiwgIzIzCiAgICAweGI0YzU0
MDE2OiAgICBibmUgICAgMHhiNGM1NDAyOAogICAgMHhiNGM1NDAxODogICAgbGRyICAgIHI4LCBb
cjAsICMyMF0KICAgIDB4YjRjNTQwMWM6ICAgIGxkciAgICByOCwgW3I4LCAjMjhdCiAgICAweGI0
YzU0MDIwOiAgICB0c3QgICAgcjgsIHI4CiAgICAweGI0YzU0MDI0OiAgICBiZXEgICAgMHhiNGM1
NDAyOAogICAgMHhiNGM1NDAyNjogICAgYnggICAgIHI4CiAgICAweGI0YzU0MDI4OiAgICBwdXNo
ICAge3I3LCBscn0KICAgIDB4YjRjNTQwMmM6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjRjNTQw
MmU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI0YzU0MDMyOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgMHhiNGM1NDAzNjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI0YzU0MDM4OiAg
ICBtdm4gICAgcjEyLCAjMjMKICAgIDB4YjRjNTQwM2M6ICAgIG1vdiAgICBzcCwgc3AKICAgIDB4
YjRjNTQwM2U6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAweGI0YzU0MDQwOiAgICBtb3YgICAgcjEs
IHIyCiAgICAweGI0YzU0MDQyOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI0YzU0MDQ0OiAgICBt
b3Z3ICAgcjQsICM1MTI3NwogICAgMHhiNGM1NDA0ODogICAgbW92dCAgIHI0LCAjNDY3NzYKICAg
IDB4YjRjNTQwNGM6ICAgIGJseCAgICByNAogICAgMHhiNGM1NDA0ZTogICAgYWRkICAgIHNwLCBz
cCwgIzYKICAgIDB4YjRjNTQwNTA6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjRjNTQwNTI6ICAg
IHBvcCAgICB7cjcsIGxyfQogICAgMHhiNGM1NDA1NjogICAgdHN0ICAgIHIxLCByMQogICAgMHhi
NGM1NDA1ODogICAgYmVxICAgIDB4YjRjNTQwYTgKICAgIDB4YjRjNTQwNWE6ICAgIG1vdiAgICBy
NSwgbHIKICAgIDB4YjRjNTQwNWM6ICAgIGxkciAgICByMSwgW3I3LCAjMjRdCiAgICAweGI0YzU0
MDVlOiAgICBsZHIgICAgcjMsIFtyNywgIzhdCiAgICAweGI0YzU0MDYwOiAgICBsZHIgICAgcjMs
IFtyMywgIzMyXQogICAgMHhiNGM1NDA2MjogICAgY21wICAgIHIzLCByMQogICAgMHhiNGM1NDA2
NDogICAgYmxzICAgIDB4YjRjNTQwNjgKICAgIDB4YjRjNTQwNjY6ICAgIG1vdiAgICByMSwgcjMK
ICAgIDB4YjRjNTQwNjg6ICAgIGFkZHMgICByMSwgcjEsICM1CiAgICAweGI0YzU0MDZhOiAgICBt
dm4gICAgcjEyLCAjMQogICAgMHhiNGM1NDA2ZTogICAgYW5kICAgIHIxLCByMSwgcjEyCiAgICAw
eGI0YzU0MDcyOiAgICBtb3YgICAgcjEyLCAjOAogICAgMHhiNGM1NDA3NjogICAgc211bGwgIHIx
LCByMTIsIHIxLCByMTIKICAgIDB4YjRjNTQwN2E6ICAgIGFkZHMgICByMywgcjcsIHIxCiAgICAw
eGI0YzU0MDdjOiAgICBsZHIgICAgcjEsIFtzcCwgIzE2XQogICAgMHhiNGM1NDA3ZTogICAgYWRk
cyAgIHIxLCByMSwgIzUKICAgIDB4YjRjNTQwODA6ICAgIG12biAgICByMTIsICMxCiAgICAweGI0
YzU0MDg0OiAgICBhbmQgICAgcjEsIHIxLCByMTIKICAgIDB4YjRjNTQwODg6ICAgIG1vdiAgICBy
MTIsICM4CiAgICAweGI0YzU0MDhjOiAgICBzbXVsbCAgcjEsIHIxMiwgcjEsIHIxMgogICAgMHhi
NGM1NDA5MDogICAgbGRyICAgIGxyLCBbcjcsICM0XQogICAgMHhiNGM1NDA5NDogICAgc3VicyAg
IHIxLCAjOAogICAgMHhiNGM1NDA5NjogICAgc3VicyAgIHIzLCByMywgcjEKICAgIDB4YjRjNTQw
OTg6ICAgIGxkciAgICByNywgW3I3XQogICAgMHhiNGM1NDA5YTogICAgc3VicyAgIHIxLCByMSwg
IzQKICAgIDB4YjRjNTQwOWM6ICAgIGxkciAgICByMiwgW3NwLCByMV0KICAgIDB4YjRjNTQwYTA6
ICAgIHN0ciAgICByMiwgW3IzLCByMV0KICAgIDB4YjRjNTQwYTI6ICAgIHRzdCAgICByMSwgcjEK
ICAgIDB4YjRjNTQwYTQ6ICAgIGJuZSAgICAweGI0YzU0MjlhCiAgICAweGI0YzU0MGE2OiAgICBt
b3YgICAgc3AsIHIzCiAgICAweGI0YzU0MGE4OiAgICBieCAgICAgcjAKQ2xlYXJpbmcgY2FsbCBs
aW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhi
NGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKQ2xlYXJpbmcgY2Fs
bCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0g
MHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKQ2xlYXJpbmcg
Y2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxl
ID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKQ2xlYXJp
bmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRh
YmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKR2Vu
ZXJhdGVkIEpJVCBjb2RlIGZvciBQb2x5bW9ycGhpYyBjYWxsIHN0dWIgZm9yIDxnbG9iYWw+I0J5
UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdLCByZXR1
cm4gcG9pbnQgMHhiNGM1ZTAxOSwgdGFyZ2V0cyA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDog
MHhiNDdmMDQ0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhi
NDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQXJabk9sOlsweGI0NzkxNzEwLT4weGI0N2Q1NzQwLCBM
TEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0FyWm5PbDpbMHhiNDc5MTcxMC0+
MHhiNDdkNTc0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9u
OiBDZWxsOiAweGI0N2YwMzgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQ
cm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFYUdmRzQ6WzB4YjQ3OTE1YzAtPjB4YjQ3
ZDU2NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjRWFHZkc0OlsweGI0
NzkxNWMwLT4weGI0N2Q1NjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAo
RnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAyYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9u
QXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0Fma1NWSTpbMHhiNDc5MTQ3
MC0+MHhiNDdkNTU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNBZmtT
Vkk6WzB4YjQ3OTE0NzAtPjB4YjQ3ZDU1NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10+LCA8dmFy
aWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDIwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24s
IHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQnMxWlBwOlsw
eGI0NzkxMWQwLT4weGI0N2Q1NDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2Nr
ID0gI0JzMVpQcDpbMHhiNDc5MTFkMC0+MHhiNDdkNTQ0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3
XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMTQwICgweGI0N2Y3MDkwOltG
dW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNC
ajQ5SFU6WzB4YjQ3OTEwODAtPjB4YjQ3ZDUzNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBj
b2RlQmxvY2sgPSAjQmo0OUhVOlsweGI0NzkxMDgwLT4weGI0N2Q1MzQwLCBMTEludEZ1bmN0aW9u
Q2FsbCwgNDddPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJmYzAgKDB4YjQ3
ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0
YWJsZTogI0JkMWlnOTpbMHhiNDc5MGYzMC0+MHhiNDdkNTI0MCwgTExJbnRGdW5jdGlvbkNhbGws
IDQ3XSksIGNvZGVCbG9jayA9ICNCZDFpZzk6WzB4YjQ3OTBmMzAtPjB4YjQ3ZDUyNDAsIExMSW50
RnVuY3Rpb25DYWxsLCA0N10+OgogICAgQ29kZSBhdCBbMHhiNGM1NDBjMSwgMHhiNGM1NDIyMSk6
CiAgICAweGI0YzU0MGMwOiAgICBtb3Z3ICAgcjEsICM2NTA2NAogICAgMHhiNGM1NDBjNDogICAg
bW92dCAgIHIxLCAjMTg2CiAgICAweGI0YzU0MGM4OiAgICBtb3Z3ICAgcjEyLCAjNzA0CiAgICAw
eGI0YzU0MGNjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNTQwZDA6ICAgIGNtcCAg
ICByMCwgcjEyCiAgICAweGI0YzU0MGQ0OiAgICBibHQgICAgMHhiNGM1NDE2MAogICAgMHhiNGM1
NDBkNjogICAgbW92dyAgIHIxMiwgIzg5NgogICAgMHhiNGM1NDBkYTogICAgbW92dCAgIHIxMiwg
IzQ2MjA3CiAgICAweGI0YzU0MGRlOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NDBlMjog
ICAgYm5lICAgIDB4YjRjNTQxMDQKICAgIDB4YjRjNTQwZTQ6ICAgIGxkciAgICByMTIsIFtyMSwg
IzRdCiAgICAweGI0YzU0MGU4OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzU0MGVj
OiAgICBzdHIgICAgcjEyLCBbcjEsICM0XQogICAgMHhiNGM1NDBmMDogICAgbW92dyAgIHIxMiwg
IzMxMTM3CiAgICAweGI0YzU0MGY0OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNTQw
Zjg6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNTQwZmE6ICAgIG5vcCAgICAKICAgIDB4YjRjNTQw
ZmM6ICAgIG5vcCAgICAKICAgIDB4YjRjNTQxMDA6ICAgIGIgICAgICAweGI0NDViYzhlCiAgICAw
eGI0YzU0MTA0OiAgICBtb3Z3ICAgcjEyLCAjMTA4OAogICAgMHhiNGM1NDEwODogICAgbW92dCAg
IHIxMiwgIzQ2MjA3CiAgICAweGI0YzU0MTBjOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1
NDExMDogICAgYm5lICAgIDB4YjRjNTQxMzIKICAgIDB4YjRjNTQxMTI6ICAgIGxkciAgICByMTIs
IFtyMV0KICAgIDB4YjRjNTQxMTY6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTQx
MWE6ICAgIHN0ciAgICByMTIsIFtyMV0KICAgIDB4YjRjNTQxMWU6ICAgIG1vdncgICByMTIsICMz
MTEzNwogICAgMHhiNGM1NDEyMjogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU0MTI2
OiAgICBibHggICAgcjEyCiAgICAweGI0YzU0MTI4OiAgICBub3AgICAgCiAgICAweGI0YzU0MTJh
OiAgICBub3AgICAgCiAgICAweGI0YzU0MTJlOiAgICBiICAgICAgMHhiNDQ1YmM4ZQogICAgMHhi
NGM1NDEzMjogICAgbW92dyAgIHIxMiwgIzcwNAogICAgMHhiNGM1NDEzNjogICAgbW92dCAgIHIx
MiwgIzQ2MjA3CiAgICAweGI0YzU0MTNhOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NDEz
ZTogICAgYm5lICAgIDB4YjRjNTQxZWEKICAgIDB4YjRjNTQxNDA6ICAgIGxkciAgICByMTIsIFty
MSwgIzhdCiAgICAweGI0YzU0MTQ0OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzU0
MTQ4OiAgICBzdHIgICAgcjEyLCBbcjEsICM4XQogICAgMHhiNGM1NDE0YzogICAgbW92dyAgIHIx
MiwgIzMxMTM3CiAgICAweGI0YzU0MTUwOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRj
NTQxNTQ6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNTQxNTY6ICAgIG5vcCAgICAKICAgIDB4YjRj
NTQxNTg6ICAgIG5vcCAgICAKICAgIDB4YjRjNTQxNWM6ICAgIGIgICAgICAweGI0NDViYzhlCiAg
ICAweGI0YzU0MTYwOiAgICBtb3Z3ICAgcjEyLCAjNTEyCiAgICAweGI0YzU0MTY0OiAgICBtb3Z0
ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNTQxNjg6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0
YzU0MTZjOiAgICBibmUgICAgMHhiNGM1NDE4ZQogICAgMHhiNGM1NDE2ZTogICAgbGRyICAgIHIx
MiwgW3IxLCAjMTJdCiAgICAweGI0YzU0MTcyOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAw
eGI0YzU0MTc2OiAgICBzdHIgICAgcjEyLCBbcjEsICMxMl0KICAgIDB4YjRjNTQxN2E6ICAgIG1v
dncgICByMTIsICMzMTEzNwogICAgMHhiNGM1NDE3ZTogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAg
ICAweGI0YzU0MTgyOiAgICBibHggICAgcjEyCiAgICAweGI0YzU0MTg0OiAgICBub3AgICAgCiAg
ICAweGI0YzU0MTg2OiAgICBub3AgICAgCiAgICAweGI0YzU0MThhOiAgICBiICAgICAgMHhiNDQ1
YmM4ZQogICAgMHhiNGM1NDE4ZTogICAgbW92dyAgIHIxMiwgIzQ5MDg4CiAgICAweGI0YzU0MTky
OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNTQxOTY6ICAgIGNtcCAgICByMCwgcjEy
CiAgICAweGI0YzU0MTlhOiAgICBibmUgICAgMHhiNGM1NDFiYwogICAgMHhiNGM1NDE5YzogICAg
bGRyICAgIHIxMiwgW3IxLCAjMjBdCiAgICAweGI0YzU0MWEwOiAgICBhZGR3ICAgcjEyLCByMTIs
ICMxCiAgICAweGI0YzU0MWE0OiAgICBzdHIgICAgcjEyLCBbcjEsICMyMF0KICAgIDB4YjRjNTQx
YTg6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1NDFhYzogICAgbW92dCAgIHIxMiwg
IzQ2ODMyCiAgICAweGI0YzU0MWIwOiAgICBibHggICAgcjEyCiAgICAweGI0YzU0MWIyOiAgICBu
b3AgICAgCiAgICAweGI0YzU0MWI0OiAgICBub3AgICAgCiAgICAweGI0YzU0MWI4OiAgICBiICAg
ICAgMHhiNDQ1YmM4ZQogICAgMHhiNGM1NDFiYzogICAgbW92dyAgIHIxMiwgIzMyMAogICAgMHhi
NGM1NDFjMDogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzU0MWM0OiAgICBjbXAgICAg
cjAsIHIxMgogICAgMHhiNGM1NDFjODogICAgYm5lICAgIDB4YjRjNTQxZWEKICAgIDB4YjRjNTQx
Y2E6ICAgIGxkciAgICByMTIsIFtyMSwgIzE2XQogICAgMHhiNGM1NDFjZTogICAgYWRkdyAgIHIx
MiwgcjEyLCAjMQogICAgMHhiNGM1NDFkMjogICAgc3RyICAgIHIxMiwgW3IxLCAjMTZdCiAgICAw
eGI0YzU0MWQ2OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTQxZGE6ICAgIG1vdnQg
ICByMTIsICM0NjgzMgogICAgMHhiNGM1NDFkZTogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NDFl
MDogICAgbm9wICAgIAogICAgMHhiNGM1NDFlMjogICAgbm9wICAgIAogICAgMHhiNGM1NDFlNjog
ICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTQxZWE6ICAgIG12biAgICByMSwgIzQKICAg
IDB4YjRjNTQxZWU6ICAgIG1vdncgICByMiwgIzQ1MzQ0CiAgICAweGI0YzU0MWYyOiAgICBtb3Z0
ICAgcjIsICM0NjI2MwogICAgMHhiNGM1NDFmNjogICAgbW92dyAgIHI4LCAjNTczNjkKICAgIDB4
YjRjNTQxZmE6ICAgIG1vdnQgICByOCwgIzQ2Mjc3CiAgICAweGI0YzU0MWZlOiAgICBtb3YgICAg
bHIsIHI4CiAgICAweGI0YzU0MjAwOiAgICBtb3Z3ICAgcjEyLCAjMTU5NjkKICAgIDB4YjRjNTQy
MDQ6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NDIwODogICAgYnggICAgIHIxMgpM
aW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4w
eGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246
IENlbGw6IDB4YjQ3ZjA0NDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFBy
b3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FyWm5PbDpbMHhiNDc5MTcxMC0+MHhiNDdk
NTc0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNBclpuT2w6WzB4YjQ3
OTE3MTAtPjB4YjQ3ZDU3NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9y
cGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFz
ZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2Yw
MzgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUw
XSk7IEV4ZWN1dGFibGU6ICNFYUdmRzQ6WzB4YjQ3OTE1YzAtPjB4YjQ3ZDU2NDAsIExMSW50RnVu
Y3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjRWFHZkc0OlsweGI0NzkxNWMwLT4weGI0N2Q1
NjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8
Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAx
NTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDJjMCAoMHhiNDdmNzA5
MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxl
OiAjQWZrU1ZJOlsweGI0NzkxNDcwLT4weGI0N2Q1NTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDdd
KSwgY29kZUJsb2NrID0gI0Fma1NWSTpbMHhiNDc5MTQ3MC0+MHhiNDdkNTU0MCwgTExJbnRGdW5j
dGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklv
OlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMx
NSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAyMDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7
fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JzMVpQcDpbMHhi
NDc5MTFkMC0+MHhiNDdkNTQ0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9
ICNCczFaUHA6WzB4YjQ3OTExZDAtPjB4YjQ3ZDU0NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10K
TGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+
MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9u
OiBDZWxsOiAweGI0N2YwMTQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQ
cm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCajQ5SFU6WzB4YjQ3OTEwODAtPjB4YjQ3
ZDUzNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQmo0OUhVOlsweGI0
NzkxMDgwLT4weGI0N2Q1MzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1v
cnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJh
c2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5
YmZjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRl
MF0pOyBFeGVjdXRhYmxlOiAjQmQxaWc5OlsweGI0NzkwZjMwLT4weGI0N2Q1MjQwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0JkMWlnOTpbMHhiNDc5MGYzMC0+MHhiNDdk
NTI0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIFZpcnR1
YWwgY2FsbCBzbG93IHBhdGggdGh1bms6CiAgICBDb2RlIGF0IFsweGI0YzU0MjIxLCAweGI0YzU0
MmUxKToKICAgIDB4YjRjNTQyMjA6ICAgIGxkciAgICByMTIsIFtyMiwgIzUyXQogICAgMHhiNGM1
NDIyNDogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NDIyODogICAgc3RyICAgIHIx
MiwgW3IyLCAjNTJdCiAgICAweGI0YzU0MjJjOiAgICBjbW4gICAgcjEsICM1CiAgICAweGI0YzU0
MjMwOiAgICBibmUgICAgMHhiNGM1NDI0OAogICAgMHhiNGM1NDIzMjogICAgbGRyYiAgIHI2LCBb
cjAsICM1XQogICAgMHhiNGM1NDIzNDogICAgY21wICAgIHIyLCAjMjMKICAgIDB4YjRjNTQyMzY6
ICAgIGJuZSAgICAweGI0YzU0MjQ4CiAgICAweGI0YzU0MjM4OiAgICBsZHIgICAgcjgsIFtyMCwg
IzIwXQogICAgMHhiNGM1NDIzYzogICAgbGRyICAgIHI4LCBbcjgsICMyOF0KICAgIDB4YjRjNTQy
NDA6ICAgIHRzdCAgICByOCwgcjgKICAgIDB4YjRjNTQyNDQ6ICAgIGJlcSAgICAweGI0YzU0MjQ4
CiAgICAweGI0YzU0MjQ2OiAgICBieCAgICAgcjgKICAgIDB4YjRjNTQyNDg6ICAgIHB1c2ggICB7
cjcsIGxyfQogICAgMHhiNGM1NDI0YzogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNGM1NDI0ZTog
ICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjRjNTQyNTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3
CiAgICAweGI0YzU0MjU2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjRjNTQyNTg6ICAgIG12
biAgICByMTIsICMyMwogICAgMHhiNGM1NDI1YzogICAgbW92ICAgIHNwLCBzcAogICAgMHhiNGM1
NDI1ZTogICAgYWRkICAgIHNwLCByMTIKICAgIDB4YjRjNTQyNjA6ICAgIG1vdiAgICByMSwgcjIK
ICAgIDB4YjRjNTQyNjI6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjRjNTQyNjQ6ICAgIG1vdncg
ICByNCwgIzUxMjc3CiAgICAweGI0YzU0MjY4OiAgICBtb3Z0ICAgcjQsICM0Njc3NgogICAgMHhi
NGM1NDI2YzogICAgYmx4ICAgIHI0CiAgICAweGI0YzU0MjZlOiAgICBhZGQgICAgc3AsIHNwLCAj
NgogICAgMHhiNGM1NDI3MDogICAgbW92ICAgIHNwLCByNwogICAgMHhiNGM1NDI3MjogICAgcG9w
ICAgIHtyNywgbHJ9CiAgICAweGI0YzU0Mjc2OiAgICB0c3QgICAgcjEsIHIxCiAgICAweGI0YzU0
Mjc4OiAgICBiZXEgICAgMHhiNGM1NDJjOAogICAgMHhiNGM1NDI3YTogICAgbW92ICAgIHI1LCBs
cgogICAgMHhiNGM1NDI3YzogICAgbGRyICAgIHIxLCBbcjcsICMyNF0KICAgIDB4YjRjNTQyN2U6
ICAgIGxkciAgICByMywgW3I3LCAjOF0KICAgIDB4YjRjNTQyODA6ICAgIGxkciAgICByMywgW3Iz
LCAjMzJdCiAgICAweGI0YzU0MjgyOiAgICBjbXAgICAgcjMsIHIxCiAgICAweGI0YzU0Mjg0OiAg
ICBibHMgICAgMHhiNGM1NDI4OAogICAgMHhiNGM1NDI4NjogICAgbW92ICAgIHIxLCByMwogICAg
MHhiNGM1NDI4ODogICAgYWRkcyAgIHIxLCByMSwgIzUKICAgIDB4YjRjNTQyOGE6ICAgIG12biAg
ICByMTIsICMxCiAgICAweGI0YzU0MjhlOiAgICBhbmQgICAgcjEsIHIxLCByMTIKICAgIDB4YjRj
NTQyOTI6ICAgIG1vdiAgICByMTIsICM4CiAgICAweGI0YzU0Mjk2OiAgICBzbXVsbCAgcjEsIHIx
MiwgcjEsIHIxMgogICAgMHhiNGM1NDI5YTogICAgYWRkcyAgIHIzLCByNywgcjEKICAgIDB4YjRj
NTQyOWM6ICAgIGxkciAgICByMSwgW3NwLCAjMTZdCiAgICAweGI0YzU0MjllOiAgICBhZGRzICAg
cjEsIHIxLCAjNQogICAgMHhiNGM1NDJhMDogICAgbXZuICAgIHIxMiwgIzEKICAgIDB4YjRjNTQy
YTQ6ICAgIGFuZCAgICByMSwgcjEsIHIxMgogICAgMHhiNGM1NDJhODogICAgbW92ICAgIHIxMiwg
IzgKICAgIDB4YjRjNTQyYWM6ICAgIHNtdWxsICByMSwgcjEyLCByMSwgcjEyCiAgICAweGI0YzU0
MmIwOiAgICBsZHIgICAgbHIsIFtyNywgIzRdCiAgICAweGI0YzU0MmI0OiAgICBzdWJzICAgcjEs
ICM4CiAgICAweGI0YzU0MmI2OiAgICBzdWJzICAgcjMsIHIzLCByMQogICAgMHhiNGM1NDJiODog
ICAgbGRyICAgIHI3LCBbcjddCiAgICAweGI0YzU0MmJhOiAgICBzdWJzICAgcjEsIHIxLCAjNAog
ICAgMHhiNGM1NDJiYzogICAgbGRyICAgIHIyLCBbc3AsIHIxXQogICAgMHhiNGM1NDJjMDogICAg
c3RyICAgIHIyLCBbcjMsIHIxXQogICAgMHhiNGM1NDJjMjogICAgdHN0ICAgIHIxLCByMQogICAg
MHhiNGM1NDJjNDogICAgYm5lICAgIDB4YjRjNTQ0YmEKICAgIDB4YjRjNTQyYzY6ICAgIG1vdiAg
ICBzcCwgcjMKICAgIDB4YjRjNTQyYzg6ICAgIGJ4ICAgICByMApDbGVhcmluZyBjYWxsIGxpbmsg
aW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVl
MDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxp
bmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0
YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxs
IGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAw
eGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBj
YWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUg
PSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmlu
ZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFi
bGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpHZW5l
cmF0ZWQgSklUIGNvZGUgZm9yIFBvbHltb3JwaGljIGNhbGwgc3R1YiBmb3IgPGdsb2JhbD4jQnlQ
eklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0sIHJldHVy
biBwb2ludCAweGI0YzVlMDE5LCB0YXJnZXRzIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAw
eGI0N2YwNDQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0
N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBclpuT2w6WzB4YjQ3OTE3MTAtPjB4YjQ3ZDU3NDAsIExM
SW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQXJabk9sOlsweGI0NzkxNzEwLT4w
eGI0N2Q1NzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246
IENlbGw6IDB4YjQ3ZjAzODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFBy
b3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0VhR2ZHNDpbMHhiNDc5MTVjMC0+MHhiNDdk
NTY0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNFYUdmRzQ6WzB4YjQ3
OTE1YzAtPjB4YjQ3ZDU2NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10+LCA8dmFyaWFudCA9IChG
dW5jdGlvbjogQ2VsbDogMHhiNDdmMDJjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25B
cnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQWZrU1ZJOlsweGI0NzkxNDcw
LT4weGI0N2Q1NTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0Fma1NW
STpbMHhiNDc5MTQ3MC0+MHhiNDdkNTU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJp
YW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMjAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwg
e30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCczFaUHA6WzB4
YjQ3OTExZDAtPjB4YjQ3ZDU0NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sg
PSAjQnMxWlBwOlsweGI0NzkxMWQwLT4weGI0N2Q1NDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDdd
PiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAxNDAgKDB4YjQ3ZjcwOTA6W0Z1
bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0Jq
NDlIVTpbMHhiNDc5MTA4MC0+MHhiNDdkNTM0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNv
ZGVCbG9jayA9ICNCajQ5SFU6WzB4YjQ3OTEwODAtPjB4YjQ3ZDUzNDAsIExMSW50RnVuY3Rpb25D
YWxsLCA0N10+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmZjMCAoMHhiNDdm
NzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRh
YmxlOiAjQmQxaWc5OlsweGI0NzkwZjMwLT4weGI0N2Q1MjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NDddKSwgY29kZUJsb2NrID0gI0JkMWlnOTpbMHhiNDc5MGYzMC0+MHhiNDdkNTI0MCwgTExJbnRG
dW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliZjAw
ICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7
IEV4ZWN1dGFibGU6ICNDbEc0c1g6WzB4YjQ3OTBkZTAtPjB4YjQ3ZDUxNDAsIExMSW50RnVuY3Rp
b25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQ2xHNHNYOlsweGI0NzkwZGUwLT4weGI0N2Q1MTQw
LCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPjoKICAgIENvZGUgYXQgWzB4YjRjNTQyZTEsIDB4YjRj
NTQ0ODEpOgogICAgMHhiNGM1NDJlMDogICAgbW92dyAgIHIxLCAjNjUwOTYKICAgIDB4YjRjNTQy
ZTQ6ICAgIG1vdnQgICByMSwgIzE4NgogICAgMHhiNGM1NDJlODogICAgbW92dyAgIHIxMiwgIzcw
NAogICAgMHhiNGM1NDJlYzogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzU0MmYwOiAg
ICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NDJmNDogICAgYmx0ICAgIDB4YjRjNTQzODIKICAg
IDB4YjRjNTQyZjY6ICAgIG1vdncgICByMTIsICM3MDQKICAgIDB4YjRjNTQyZmE6ICAgIG1vdnQg
ICByMTIsICM0NjIwNwogICAgMHhiNGM1NDJmZTogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRj
NTQzMDI6ICAgIGJuZSAgICAweGI0YzU0MzI0CiAgICAweGI0YzU0MzA0OiAgICBsZHIgICAgcjEy
LCBbcjEsICM4XQogICAgMHhiNGM1NDMwODogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhi
NGM1NDMwYzogICAgc3RyICAgIHIxMiwgW3IxLCAjOF0KICAgIDB4YjRjNTQzMTA6ICAgIG1vdncg
ICByMTIsICMzMTEzNwogICAgMHhiNGM1NDMxNDogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAw
eGI0YzU0MzE4OiAgICBibHggICAgcjEyCiAgICAweGI0YzU0MzFhOiAgICBub3AgICAgCiAgICAw
eGI0YzU0MzFjOiAgICBub3AgICAgCiAgICAweGI0YzU0MzIwOiAgICBiICAgICAgMHhiNDQ1YmM4
ZQogICAgMHhiNGM1NDMyNDogICAgbW92dyAgIHIxMiwgIzEwODgKICAgIDB4YjRjNTQzMjg6ICAg
IG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1NDMyYzogICAgY21wICAgIHIwLCByMTIKICAg
IDB4YjRjNTQzMzA6ICAgIGJuZSAgICAweGI0YzU0MzUyCiAgICAweGI0YzU0MzMyOiAgICBsZHIg
ICAgcjEyLCBbcjFdCiAgICAweGI0YzU0MzM2OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAw
eGI0YzU0MzNhOiAgICBzdHIgICAgcjEyLCBbcjFdCiAgICAweGI0YzU0MzNlOiAgICBtb3Z3ICAg
cjEyLCAjMzExMzcKICAgIDB4YjRjNTQzNDI6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhi
NGM1NDM0NjogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NDM0ODogICAgbm9wICAgIAogICAgMHhi
NGM1NDM0YTogICAgbm9wICAgIAogICAgMHhiNGM1NDM0ZTogICAgYiAgICAgIDB4YjQ0NWJjOGUK
ICAgIDB4YjRjNTQzNTI6ICAgIG1vdncgICByMTIsICM4OTYKICAgIDB4YjRjNTQzNTY6ICAgIG1v
dnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1NDM1YTogICAgY21wICAgIHIwLCByMTIKICAgIDB4
YjRjNTQzNWU6ICAgIGJuZSAgICAweGI0YzU0NDQ4CiAgICAweGI0YzU0MzYyOiAgICBsZHIgICAg
cjEyLCBbcjEsICM0XQogICAgMHhiNGM1NDM2NjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAg
MHhiNGM1NDM2YTogICAgc3RyICAgIHIxMiwgW3IxLCAjNF0KICAgIDB4YjRjNTQzNmU6ICAgIG1v
dncgICByMTIsICMzMTEzNwogICAgMHhiNGM1NDM3MjogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAg
ICAweGI0YzU0Mzc2OiAgICBibHggICAgcjEyCiAgICAweGI0YzU0Mzc4OiAgICBub3AgICAgCiAg
ICAweGI0YzU0MzdhOiAgICBub3AgICAgCiAgICAweGI0YzU0MzdlOiAgICBiICAgICAgMHhiNDQ1
YmM4ZQogICAgMHhiNGM1NDM4MjogICAgbW92dyAgIHIxMiwgIzMyMAogICAgMHhiNGM1NDM4Njog
ICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzU0MzhhOiAgICBjbXAgICAgcjAsIHIxMgog
ICAgMHhiNGM1NDM4ZTogICAgYmx0ICAgIDB4YjRjNTQzZWMKICAgIDB4YjRjNTQzOTA6ICAgIG1v
dncgICByMTIsICMzMjAKICAgIDB4YjRjNTQzOTQ6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAg
MHhiNGM1NDM5ODogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTQzOWM6ICAgIGJuZSAgICAw
eGI0YzU0M2JlCiAgICAweGI0YzU0MzllOiAgICBsZHIgICAgcjEyLCBbcjEsICMxNl0KICAgIDB4
YjRjNTQzYTI6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTQzYTY6ICAgIHN0ciAg
ICByMTIsIFtyMSwgIzE2XQogICAgMHhiNGM1NDNhYTogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAg
ICAweGI0YzU0M2FlOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNTQzYjI6ICAgIGJs
eCAgICByMTIKICAgIDB4YjRjNTQzYjQ6ICAgIG5vcCAgICAKICAgIDB4YjRjNTQzYjY6ICAgIG5v
cCAgICAKICAgIDB4YjRjNTQzYmE6ICAgIGIgICAgICAweGI0NDViYzhlCiAgICAweGI0YzU0M2Jl
OiAgICBtb3Z3ICAgcjEyLCAjNTEyCiAgICAweGI0YzU0M2MyOiAgICBtb3Z0ICAgcjEyLCAjNDYy
MDcKICAgIDB4YjRjNTQzYzY6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU0M2NhOiAgICBi
bmUgICAgMHhiNGM1NDQ0OAogICAgMHhiNGM1NDNjYzogICAgbGRyICAgIHIxMiwgW3IxLCAjMTJd
CiAgICAweGI0YzU0M2QwOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzU0M2Q0OiAg
ICBzdHIgICAgcjEyLCBbcjEsICMxMl0KICAgIDB4YjRjNTQzZDg6ICAgIG1vdncgICByMTIsICMz
MTEzNwogICAgMHhiNGM1NDNkYzogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU0M2Uw
OiAgICBibHggICAgcjEyCiAgICAweGI0YzU0M2UyOiAgICBub3AgICAgCiAgICAweGI0YzU0M2U0
OiAgICBub3AgICAgCiAgICAweGI0YzU0M2U4OiAgICBiICAgICAgMHhiNDQ1YmM4ZQogICAgMHhi
NGM1NDNlYzogICAgbW92dyAgIHIxMiwgIzQ4ODk2CiAgICAweGI0YzU0M2YwOiAgICBtb3Z0ICAg
cjEyLCAjNDYyMDEKICAgIDB4YjRjNTQzZjQ6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU0
M2Y4OiAgICBibmUgICAgMHhiNGM1NDQxYQogICAgMHhiNGM1NDNmYTogICAgbGRyICAgIHIxMiwg
W3IxLCAjMjRdCiAgICAweGI0YzU0M2ZlOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0
YzU0NDAyOiAgICBzdHIgICAgcjEyLCBbcjEsICMyNF0KICAgIDB4YjRjNTQ0MDY6ICAgIG1vdncg
ICByMTIsICMzMTEzNwogICAgMHhiNGM1NDQwYTogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAw
eGI0YzU0NDBlOiAgICBibHggICAgcjEyCiAgICAweGI0YzU0NDEwOiAgICBub3AgICAgCiAgICAw
eGI0YzU0NDEyOiAgICBub3AgICAgCiAgICAweGI0YzU0NDE2OiAgICBiICAgICAgMHhiNDQ1YmM4
ZQogICAgMHhiNGM1NDQxYTogICAgbW92dyAgIHIxMiwgIzQ5MDg4CiAgICAweGI0YzU0NDFlOiAg
ICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNTQ0MjI6ICAgIGNtcCAgICByMCwgcjEyCiAg
ICAweGI0YzU0NDI2OiAgICBibmUgICAgMHhiNGM1NDQ0OAogICAgMHhiNGM1NDQyODogICAgbGRy
ICAgIHIxMiwgW3IxLCAjMjBdCiAgICAweGI0YzU0NDJjOiAgICBhZGR3ICAgcjEyLCByMTIsICMx
CiAgICAweGI0YzU0NDMwOiAgICBzdHIgICAgcjEyLCBbcjEsICMyMF0KICAgIDB4YjRjNTQ0MzQ6
ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1NDQzODogICAgbW92dCAgIHIxMiwgIzQ2
ODMyCiAgICAweGI0YzU0NDNjOiAgICBibHggICAgcjEyCiAgICAweGI0YzU0NDNlOiAgICBub3Ag
ICAgCiAgICAweGI0YzU0NDQwOiAgICBub3AgICAgCiAgICAweGI0YzU0NDQ0OiAgICBiICAgICAg
MHhiNDQ1YmM4ZQogICAgMHhiNGM1NDQ0ODogICAgbXZuICAgIHIxLCAjNAogICAgMHhiNGM1NDQ0
YzogICAgbW92dyAgIHIyLCAjNDUzNDQKICAgIDB4YjRjNTQ0NTA6ICAgIG1vdnQgICByMiwgIzQ2
MjYzCiAgICAweGI0YzU0NDU0OiAgICBtb3Z3ICAgcjgsICM1NzM2OQogICAgMHhiNGM1NDQ1ODog
ICAgbW92dCAgIHI4LCAjNDYyNzcKICAgIDB4YjRjNTQ0NWM6ICAgIG1vdiAgICBsciwgcjgKICAg
IDB4YjRjNTQ0NWU6ICAgIG1vdncgICByMTIsICMxNTk2OQogICAgMHhiNGM1NDQ2MjogICAgbW92
dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU0NDY2OiAgICBieCAgICAgcjEyCkxpbmtpbmcgcG9s
eW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAs
IEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhi
NDdmMDQ0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdl
ZGRlMF0pOyBFeGVjdXRhYmxlOiAjQXJabk9sOlsweGI0NzkxNzEwLT4weGI0N2Q1NzQwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0FyWm5PbDpbMHhiNDc5MTcxMC0+MHhi
NDdkNTc0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwg
aW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2Jh
bCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAzODAgKDB4YjQ3
ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0
YWJsZTogI0VhR2ZHNDpbMHhiNDc5MTVjMC0+MHhiNDdkNTY0MCwgTExJbnRGdW5jdGlvbkNhbGws
IDQ3XSksIGNvZGVCbG9jayA9ICNFYUdmRzQ6WzB4YjQ3OTE1YzAtPjB4YjQ3ZDU2NDAsIExMSW50
RnVuY3Rpb25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5
UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJj
IzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMmMwICgweGI0N2Y3MDkwOltGdW5jdGlv
biwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBZmtTVkk6
WzB4YjQ3OTE0NzAtPjB4YjQ3ZDU1NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxv
Y2sgPSAjQWZrU1ZJOlsweGI0NzkxNDcwLT4weGI0N2Q1NTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNl
NzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5j
dGlvbjogQ2VsbDogMHhiNDdmMDIwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJh
eSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQnMxWlBwOlsweGI0NzkxMWQwLT4w
eGI0N2Q1NDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0JzMVpQcDpb
MHhiNDc5MTFkMC0+MHhiNDdkNTQ0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBv
bHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUw
LCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4
YjQ3ZjAxNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3
ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JqNDlIVTpbMHhiNDc5MTA4MC0+MHhiNDdkNTM0MCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNCajQ5SFU6WzB4YjQ3OTEwODAtPjB4
YjQ3ZDUzNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxs
IGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9i
YWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliZmMwICgweGI0
N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1
dGFibGU6ICNCZDFpZzk6WzB4YjQ3OTBmMzAtPjB4YjQ3ZDUyNDAsIExMSW50RnVuY3Rpb25DYWxs
LCA0N10pLCBjb2RlQmxvY2sgPSAjQmQxaWc5OlsweGI0NzkwZjMwLT4weGI0N2Q1MjQwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNC
eVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBi
YyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmYwMCAoMHhiNDdmNzA5MDpbRnVuY3Rp
b24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQ2xHNHNY
OlsweGI0NzkwZGUwLT4weGI0N2Q1MTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJs
b2NrID0gI0NsRzRzWDpbMHhiNDc5MGRlMC0+MHhiNDdkNTE0MCwgTExJbnRGdW5jdGlvbkNhbGws
IDQ3XQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIFZpcnR1YWwgY2FsbCBzbG93IHBhdGggdGh1bms6
CiAgICBDb2RlIGF0IFsweGI0YzU0NDgxLCAweGI0YzU0NTQxKToKICAgIDB4YjRjNTQ0ODA6ICAg
IGxkciAgICByMTIsIFtyMiwgIzUyXQogICAgMHhiNGM1NDQ4NDogICAgYWRkdyAgIHIxMiwgcjEy
LCAjMQogICAgMHhiNGM1NDQ4ODogICAgc3RyICAgIHIxMiwgW3IyLCAjNTJdCiAgICAweGI0YzU0
NDhjOiAgICBjbW4gICAgcjEsICM1CiAgICAweGI0YzU0NDkwOiAgICBibmUgICAgMHhiNGM1NDRh
OAogICAgMHhiNGM1NDQ5MjogICAgbGRyYiAgIHI2LCBbcjAsICM1XQogICAgMHhiNGM1NDQ5NDog
ICAgY21wICAgIHIyLCAjMjMKICAgIDB4YjRjNTQ0OTY6ICAgIGJuZSAgICAweGI0YzU0NGE4CiAg
ICAweGI0YzU0NDk4OiAgICBsZHIgICAgcjgsIFtyMCwgIzIwXQogICAgMHhiNGM1NDQ5YzogICAg
bGRyICAgIHI4LCBbcjgsICMyOF0KICAgIDB4YjRjNTQ0YTA6ICAgIHRzdCAgICByOCwgcjgKICAg
IDB4YjRjNTQ0YTQ6ICAgIGJlcSAgICAweGI0YzU0NGE4CiAgICAweGI0YzU0NGE2OiAgICBieCAg
ICAgcjgKICAgIDB4YjRjNTQ0YTg6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNGM1NDRhYzog
ICAgbW92ICAgIHI3LCBzcAogICAgMHhiNGM1NDRhZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAg
IDB4YjRjNTQ0YjI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI0YzU0NGI2OiAgICBzdHIg
ICAgcjcsIFtyNl0KICAgIDB4YjRjNTQ0Yjg6ICAgIG12biAgICByMTIsICMyMwogICAgMHhiNGM1
NDRiYzogICAgbW92ICAgIHNwLCBzcAogICAgMHhiNGM1NDRiZTogICAgYWRkICAgIHNwLCByMTIK
ICAgIDB4YjRjNTQ0YzA6ICAgIG1vdiAgICByMSwgcjIKICAgIDB4YjRjNTQ0YzI6ICAgIG1vdiAg
ICByMCwgcjcKICAgIDB4YjRjNTQ0YzQ6ICAgIG1vdncgICByNCwgIzUxMjc3CiAgICAweGI0YzU0
NGM4OiAgICBtb3Z0ICAgcjQsICM0Njc3NgogICAgMHhiNGM1NDRjYzogICAgYmx4ICAgIHI0CiAg
ICAweGI0YzU0NGNlOiAgICBhZGQgICAgc3AsIHNwLCAjNgogICAgMHhiNGM1NDRkMDogICAgbW92
ICAgIHNwLCByNwogICAgMHhiNGM1NDRkMjogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI0YzU0
NGQ2OiAgICB0c3QgICAgcjEsIHIxCiAgICAweGI0YzU0NGQ4OiAgICBiZXEgICAgMHhiNGM1NDUy
OAogICAgMHhiNGM1NDRkYTogICAgbW92ICAgIHI1LCBscgogICAgMHhiNGM1NDRkYzogICAgbGRy
ICAgIHIxLCBbcjcsICMyNF0KICAgIDB4YjRjNTQ0ZGU6ICAgIGxkciAgICByMywgW3I3LCAjOF0K
ICAgIDB4YjRjNTQ0ZTA6ICAgIGxkciAgICByMywgW3IzLCAjMzJdCiAgICAweGI0YzU0NGUyOiAg
ICBjbXAgICAgcjMsIHIxCiAgICAweGI0YzU0NGU0OiAgICBibHMgICAgMHhiNGM1NDRlOAogICAg
MHhiNGM1NDRlNjogICAgbW92ICAgIHIxLCByMwogICAgMHhiNGM1NDRlODogICAgYWRkcyAgIHIx
LCByMSwgIzUKICAgIDB4YjRjNTQ0ZWE6ICAgIG12biAgICByMTIsICMxCiAgICAweGI0YzU0NGVl
OiAgICBhbmQgICAgcjEsIHIxLCByMTIKICAgIDB4YjRjNTQ0ZjI6ICAgIG1vdiAgICByMTIsICM4
CiAgICAweGI0YzU0NGY2OiAgICBzbXVsbCAgcjEsIHIxMiwgcjEsIHIxMgogICAgMHhiNGM1NDRm
YTogICAgYWRkcyAgIHIzLCByNywgcjEKICAgIDB4YjRjNTQ0ZmM6ICAgIGxkciAgICByMSwgW3Nw
LCAjMTZdCiAgICAweGI0YzU0NGZlOiAgICBhZGRzICAgcjEsIHIxLCAjNQogICAgMHhiNGM1NDUw
MDogICAgbXZuICAgIHIxMiwgIzEKICAgIDB4YjRjNTQ1MDQ6ICAgIGFuZCAgICByMSwgcjEsIHIx
MgogICAgMHhiNGM1NDUwODogICAgbW92ICAgIHIxMiwgIzgKICAgIDB4YjRjNTQ1MGM6ICAgIHNt
dWxsICByMSwgcjEyLCByMSwgcjEyCiAgICAweGI0YzU0NTEwOiAgICBsZHIgICAgbHIsIFtyNywg
IzRdCiAgICAweGI0YzU0NTE0OiAgICBzdWJzICAgcjEsICM4CiAgICAweGI0YzU0NTE2OiAgICBz
dWJzICAgcjMsIHIzLCByMQogICAgMHhiNGM1NDUxODogICAgbGRyICAgIHI3LCBbcjddCiAgICAw
eGI0YzU0NTFhOiAgICBzdWJzICAgcjEsIHIxLCAjNAogICAgMHhiNGM1NDUxYzogICAgbGRyICAg
IHIyLCBbc3AsIHIxXQogICAgMHhiNGM1NDUyMDogICAgc3RyICAgIHIyLCBbcjMsIHIxXQogICAg
MHhiNGM1NDUyMjogICAgdHN0ICAgIHIxLCByMQogICAgMHhiNGM1NDUyNDogICAgYm5lICAgIDB4
YjRjNTQ3MWEKICAgIDB4YjRjNTQ1MjY6ICAgIG1vdiAgICBzcCwgcjMKICAgIDB4YjRjNTQ1Mjg6
ICAgIGJ4ICAgICByMApDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2Fs
bCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0
YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMg
Y2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAw
eGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBo
aWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24g
PSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1v
cnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRp
b24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9s
eW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9j
YXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3Ig
cG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRh
TG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIFBv
bHltb3JwaGljIGNhbGwgc3R1YiBmb3IgPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0
N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0sIHJldHVybiBwb2ludCAweGI0YzVlMDE5LCB0
YXJnZXRzIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwNDQwICgweGI0N2Y3MDkw
OltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6
ICNBclpuT2w6WzB4YjQ3OTE3MTAtPjB4YjQ3ZDU3NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10p
LCBjb2RlQmxvY2sgPSAjQXJabk9sOlsweGI0NzkxNzEwLT4weGI0N2Q1NzQwLCBMTEludEZ1bmN0
aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAzODAgKDB4
YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhl
Y3V0YWJsZTogI0VhR2ZHNDpbMHhiNDc5MTVjMC0+MHhiNDdkNTY0MCwgTExJbnRGdW5jdGlvbkNh
bGwsIDQ3XSksIGNvZGVCbG9jayA9ICNFYUdmRzQ6WzB4YjQ3OTE1YzAtPjB4YjQ3ZDU2NDAsIExM
SW50RnVuY3Rpb25DYWxsLCA0N10+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDdm
MDJjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRl
MF0pOyBFeGVjdXRhYmxlOiAjQWZrU1ZJOlsweGI0NzkxNDcwLT4weGI0N2Q1NTQwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0Fma1NWSTpbMHhiNDc5MTQ3MC0+MHhiNDdk
NTU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxs
OiAweGI0N2YwMjAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzow
eGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCczFaUHA6WzB4YjQ3OTExZDAtPjB4YjQ3ZDU0NDAs
IExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQnMxWlBwOlsweGI0NzkxMWQw
LT4weGI0N2Q1NDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAoRnVuY3Rp
b246IENlbGw6IDB4YjQ3ZjAxNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXks
IFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JqNDlIVTpbMHhiNDc5MTA4MC0+MHhi
NDdkNTM0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNCajQ5SFU6WzB4
YjQ3OTEwODAtPjB4YjQ3ZDUzNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10+LCA8dmFyaWFudCA9
IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmZjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBO
b25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQmQxaWc5OlsweGI0Nzkw
ZjMwLT4weGI0N2Q1MjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0Jk
MWlnOTpbMHhiNDc5MGYzMC0+MHhiNDdkNTI0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2
YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliZjAwICgweGI0N2Y3MDkwOltGdW5jdGlv
biwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNDbEc0c1g6
WzB4YjQ3OTBkZTAtPjB4YjQ3ZDUxNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxv
Y2sgPSAjQ2xHNHNYOlsweGI0NzkwZGUwLT4weGI0N2Q1MTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NDddPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJlNDAgKDB4YjQ3ZjcwOTA6
W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTog
I0RRYnU2YjpbMHhiNDc5MGM5MC0+MHhiNDdkNTA0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSks
IGNvZGVCbG9jayA9ICNEUWJ1NmI6WzB4YjQ3OTBjOTAtPjB4YjQ3ZDUwNDAsIExMSW50RnVuY3Rp
b25DYWxsLCA0N10+OgogICAgQ29kZSBhdCBbMHhiNGM1NDU0MSwgMHhiNGM1NDcyMSk6CiAgICAw
eGI0YzU0NTQwOiAgICBtb3Z3ICAgcjEsICM2NTEyOAogICAgMHhiNGM1NDU0NDogICAgbW92dCAg
IHIxLCAjMTg2CiAgICAweGI0YzU0NTQ4OiAgICBtb3Z3ICAgcjEyLCAjNTEyCiAgICAweGI0YzU0
NTRjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNTQ1NTA6ICAgIGNtcCAgICByMCwg
cjEyCiAgICAweGI0YzU0NTU0OiAgICBibHQgICAgMHhiNGM1NDYyMgogICAgMHhiNGM1NDU1ODog
ICAgbW92dyAgIHIxMiwgIzg5NgogICAgMHhiNGM1NDU1YzogICAgbW92dCAgIHIxMiwgIzQ2MjA3
CiAgICAweGI0YzU0NTYwOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NDU2NDogICAgYmx0
ICAgIDB4YjRjNTQ1YzQKICAgIDB4YjRjNTQ1NjY6ICAgIG1vdncgICByMTIsICMxMDg4CiAgICAw
eGI0YzU0NTZhOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNTQ1NmU6ICAgIGNtcCAg
ICByMCwgcjEyCiAgICAweGI0YzU0NTcyOiAgICBibmUgICAgMHhiNGM1NDU5NAogICAgMHhiNGM1
NDU3NDogICAgbGRyICAgIHIxMiwgW3IxXQogICAgMHhiNGM1NDU3ODogICAgYWRkdyAgIHIxMiwg
cjEyLCAjMQogICAgMHhiNGM1NDU3YzogICAgc3RyICAgIHIxMiwgW3IxXQogICAgMHhiNGM1NDU4
MDogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzU0NTg0OiAgICBtb3Z0ICAgcjEyLCAj
NDY4MzIKICAgIDB4YjRjNTQ1ODg6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNTQ1OGE6ICAgIG5v
cCAgICAKICAgIDB4YjRjNTQ1OGM6ICAgIG5vcCAgICAKICAgIDB4YjRjNTQ1OTA6ICAgIGIgICAg
ICAweGI0NDViYzhlCiAgICAweGI0YzU0NTk0OiAgICBtb3Z3ICAgcjEyLCAjODk2CiAgICAweGI0
YzU0NTk4OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNTQ1OWM6ICAgIGNtcCAgICBy
MCwgcjEyCiAgICAweGI0YzU0NWEwOiAgICBibmUgICAgMHhiNGM1NDZlOAogICAgMHhiNGM1NDVh
NDogICAgbGRyICAgIHIxMiwgW3IxLCAjNF0KICAgIDB4YjRjNTQ1YTg6ICAgIGFkZHcgICByMTIs
IHIxMiwgIzEKICAgIDB4YjRjNTQ1YWM6ICAgIHN0ciAgICByMTIsIFtyMSwgIzRdCiAgICAweGI0
YzU0NWIwOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTQ1YjQ6ICAgIG1vdnQgICBy
MTIsICM0NjgzMgogICAgMHhiNGM1NDViODogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NDViYTog
ICAgbm9wICAgIAogICAgMHhiNGM1NDViYzogICAgbm9wICAgIAogICAgMHhiNGM1NDVjMDogICAg
YiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTQ1YzQ6ICAgIG1vdncgICByMTIsICM3MDQKICAg
IDB4YjRjNTQ1Yzg6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1NDVjYzogICAgY21w
ICAgIHIwLCByMTIKICAgIDB4YjRjNTQ1ZDA6ICAgIGJuZSAgICAweGI0YzU0NWYyCiAgICAweGI0
YzU0NWQyOiAgICBsZHIgICAgcjEyLCBbcjEsICM4XQogICAgMHhiNGM1NDVkNjogICAgYWRkdyAg
IHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NDVkYTogICAgc3RyICAgIHIxMiwgW3IxLCAjOF0KICAg
IDB4YjRjNTQ1ZGU6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1NDVlMjogICAgbW92
dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU0NWU2OiAgICBibHggICAgcjEyCiAgICAweGI0YzU0
NWU4OiAgICBub3AgICAgCiAgICAweGI0YzU0NWVhOiAgICBub3AgICAgCiAgICAweGI0YzU0NWVl
OiAgICBiICAgICAgMHhiNDQ1YmM4ZQogICAgMHhiNGM1NDVmMjogICAgbW92dyAgIHIxMiwgIzUx
MgogICAgMHhiNGM1NDVmNjogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzU0NWZhOiAg
ICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NDVmZTogICAgYm5lICAgIDB4YjRjNTQ2ZTgKICAg
IDB4YjRjNTQ2MDI6ICAgIGxkciAgICByMTIsIFtyMSwgIzEyXQogICAgMHhiNGM1NDYwNjogICAg
YWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NDYwYTogICAgc3RyICAgIHIxMiwgW3IxLCAj
MTJdCiAgICAweGI0YzU0NjBlOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTQ2MTI6
ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NDYxNjogICAgYmx4ICAgIHIxMgogICAg
MHhiNGM1NDYxODogICAgbm9wICAgIAogICAgMHhiNGM1NDYxYTogICAgbm9wICAgIAogICAgMHhi
NGM1NDYxZTogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTQ2MjI6ICAgIG1vdncgICBy
MTIsICM0OTA4OAogICAgMHhiNGM1NDYyNjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0
YzU0NjJhOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NDYyZTogICAgYmx0ICAgIDB4YjRj
NTQ2OGMKICAgIDB4YjRjNTQ2MzA6ICAgIG1vdncgICByMTIsICMzMjAKICAgIDB4YjRjNTQ2MzQ6
ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1NDYzODogICAgY21wICAgIHIwLCByMTIK
ICAgIDB4YjRjNTQ2M2M6ICAgIGJuZSAgICAweGI0YzU0NjVlCiAgICAweGI0YzU0NjNlOiAgICBs
ZHIgICAgcjEyLCBbcjEsICMxNl0KICAgIDB4YjRjNTQ2NDI6ICAgIGFkZHcgICByMTIsIHIxMiwg
IzEKICAgIDB4YjRjNTQ2NDY6ICAgIHN0ciAgICByMTIsIFtyMSwgIzE2XQogICAgMHhiNGM1NDY0
YTogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzU0NjRlOiAgICBtb3Z0ICAgcjEyLCAj
NDY4MzIKICAgIDB4YjRjNTQ2NTI6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNTQ2NTQ6ICAgIG5v
cCAgICAKICAgIDB4YjRjNTQ2NTY6ICAgIG5vcCAgICAKICAgIDB4YjRjNTQ2NWE6ICAgIGIgICAg
ICAweGI0NDViYzhlCiAgICAweGI0YzU0NjVlOiAgICBtb3Z3ICAgcjEyLCAjNDkwODgKICAgIDB4
YjRjNTQ2NjI6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1NDY2NjogICAgY21wICAg
IHIwLCByMTIKICAgIDB4YjRjNTQ2NmE6ICAgIGJuZSAgICAweGI0YzU0NmU4CiAgICAweGI0YzU0
NjZjOiAgICBsZHIgICAgcjEyLCBbcjEsICMyMF0KICAgIDB4YjRjNTQ2NzA6ICAgIGFkZHcgICBy
MTIsIHIxMiwgIzEKICAgIDB4YjRjNTQ2NzQ6ICAgIHN0ciAgICByMTIsIFtyMSwgIzIwXQogICAg
MHhiNGM1NDY3ODogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzU0NjdjOiAgICBtb3Z0
ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNTQ2ODA6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNTQ2
ODI6ICAgIG5vcCAgICAKICAgIDB4YjRjNTQ2ODQ6ICAgIG5vcCAgICAKICAgIDB4YjRjNTQ2ODg6
ICAgIGIgICAgICAweGI0NDViYzhlCiAgICAweGI0YzU0NjhjOiAgICBtb3Z3ICAgcjEyLCAjNDg4
OTYKICAgIDB4YjRjNTQ2OTA6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1NDY5NDog
ICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTQ2OTg6ICAgIGJuZSAgICAweGI0YzU0NmJhCiAg
ICAweGI0YzU0NjlhOiAgICBsZHIgICAgcjEyLCBbcjEsICMyNF0KICAgIDB4YjRjNTQ2OWU6ICAg
IGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTQ2YTI6ICAgIHN0ciAgICByMTIsIFtyMSwg
IzI0XQogICAgMHhiNGM1NDZhNjogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzU0NmFh
OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNTQ2YWU6ICAgIGJseCAgICByMTIKICAg
IDB4YjRjNTQ2YjA6ICAgIG5vcCAgICAKICAgIDB4YjRjNTQ2YjI6ICAgIG5vcCAgICAKICAgIDB4
YjRjNTQ2YjY6ICAgIGIgICAgICAweGI0NDViYzhlCiAgICAweGI0YzU0NmJhOiAgICBtb3Z3ICAg
cjEyLCAjNDg3MDQKICAgIDB4YjRjNTQ2YmU6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhi
NGM1NDZjMjogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTQ2YzY6ICAgIGJuZSAgICAweGI0
YzU0NmU4CiAgICAweGI0YzU0NmM4OiAgICBsZHIgICAgcjEyLCBbcjEsICMyOF0KICAgIDB4YjRj
NTQ2Y2M6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTQ2ZDA6ICAgIHN0ciAgICBy
MTIsIFtyMSwgIzI4XQogICAgMHhiNGM1NDZkNDogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAw
eGI0YzU0NmQ4OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNTQ2ZGM6ICAgIGJseCAg
ICByMTIKICAgIDB4YjRjNTQ2ZGU6ICAgIG5vcCAgICAKICAgIDB4YjRjNTQ2ZTA6ICAgIG5vcCAg
ICAKICAgIDB4YjRjNTQ2ZTQ6ICAgIGIgICAgICAweGI0NDViYzhlCiAgICAweGI0YzU0NmU4OiAg
ICBtdm4gICAgcjEsICM0CiAgICAweGI0YzU0NmVjOiAgICBtb3Z3ICAgcjIsICM0NTM0NAogICAg
MHhiNGM1NDZmMDogICAgbW92dCAgIHIyLCAjNDYyNjMKICAgIDB4YjRjNTQ2ZjQ6ICAgIG1vdncg
ICByOCwgIzU3MzY5CiAgICAweGI0YzU0NmY4OiAgICBtb3Z0ICAgcjgsICM0NjI3NwogICAgMHhi
NGM1NDZmYzogICAgbW92ICAgIGxyLCByOAogICAgMHhiNGM1NDZmZTogICAgbW92dyAgIHIxMiwg
IzE1OTY5CiAgICAweGI0YzU0NzAyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNTQ3
MDY6ICAgIGJ4ICAgICByMTIKTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5
UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJj
IzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwNDQwICgweGI0N2Y3MDkwOltGdW5jdGlv
biwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBclpuT2w6
WzB4YjQ3OTE3MTAtPjB4YjQ3ZDU3NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxv
Y2sgPSAjQXJabk9sOlsweGI0NzkxNzEwLT4weGI0N2Q1NzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNl
NzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5j
dGlvbjogQ2VsbDogMHhiNDdmMDM4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJh
eSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRWFHZkc0OlsweGI0NzkxNWMwLT4w
eGI0N2Q1NjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0VhR2ZHNDpb
MHhiNDc5MTVjMC0+MHhiNDdkNTY0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBv
bHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUw
LCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4
YjQ3ZjAyYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3
ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0Fma1NWSTpbMHhiNDc5MTQ3MC0+MHhiNDdkNTU0MCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNBZmtTVkk6WzB4YjQ3OTE0NzAtPjB4
YjQ3ZDU1NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxs
IGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9i
YWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMjAwICgweGI0
N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1
dGFibGU6ICNCczFaUHA6WzB4YjQ3OTExZDAtPjB4YjQ3ZDU0NDAsIExMSW50RnVuY3Rpb25DYWxs
LCA0N10pLCBjb2RlQmxvY2sgPSAjQnMxWlBwOlsweGI0NzkxMWQwLT4weGI0N2Q1NDQwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNC
eVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBi
YyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDE0MCAoMHhiNDdmNzA5MDpbRnVuY3Rp
b24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQmo0OUhV
OlsweGI0NzkxMDgwLT4weGI0N2Q1MzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJs
b2NrID0gI0JqNDlIVTpbMHhiNDc5MTA4MC0+MHhiNDdkNTM0MCwgTExJbnRGdW5jdGlvbkNhbGws
IDQ3XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2Ez
ZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVu
Y3Rpb246IENlbGw6IDB4YjQ3OWJmYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJy
YXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JkMWlnOTpbMHhiNDc5MGYzMC0+
MHhiNDdkNTI0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNCZDFpZzk6
WzB4YjQ3OTBmMzAtPjB4YjQ3ZDUyNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10KTGlua2luZyBw
b2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1
MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAw
eGI0NzliZjAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0
N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNDbEc0c1g6WzB4YjQ3OTBkZTAtPjB4YjQ3ZDUxNDAsIExM
SW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQ2xHNHNYOlsweGI0NzkwZGUwLT4w
eGI0N2Q1MTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2Fs
bCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xv
YmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmU0MCAoMHhi
NDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVj
dXRhYmxlOiAjRFFidTZiOlsweGI0NzkwYzkwLT4weGI0N2Q1MDQwLCBMTEludEZ1bmN0aW9uQ2Fs
bCwgNDddKSwgY29kZUJsb2NrID0gI0RRYnU2YjpbMHhiNDc5MGM5MC0+MHhiNDdkNTA0MCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDQ3XQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIFZpcnR1YWwgY2FsbCBz
bG93IHBhdGggdGh1bms6CiAgICBDb2RlIGF0IFsweGI0YzU0NzIxLCAweGI0YzU0N2UxKToKICAg
IDB4YjRjNTQ3MjA6ICAgIGxkciAgICByMTIsIFtyMiwgIzUyXQogICAgMHhiNGM1NDcyNDogICAg
YWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NDcyODogICAgc3RyICAgIHIxMiwgW3IyLCAj
NTJdCiAgICAweGI0YzU0NzJjOiAgICBjbW4gICAgcjEsICM1CiAgICAweGI0YzU0NzMwOiAgICBi
bmUgICAgMHhiNGM1NDc0OAogICAgMHhiNGM1NDczMjogICAgbGRyYiAgIHI2LCBbcjAsICM1XQog
ICAgMHhiNGM1NDczNDogICAgY21wICAgIHIyLCAjMjMKICAgIDB4YjRjNTQ3MzY6ICAgIGJuZSAg
ICAweGI0YzU0NzQ4CiAgICAweGI0YzU0NzM4OiAgICBsZHIgICAgcjgsIFtyMCwgIzIwXQogICAg
MHhiNGM1NDczYzogICAgbGRyICAgIHI4LCBbcjgsICMyOF0KICAgIDB4YjRjNTQ3NDA6ICAgIHRz
dCAgICByOCwgcjgKICAgIDB4YjRjNTQ3NDQ6ICAgIGJlcSAgICAweGI0YzU0NzQ4CiAgICAweGI0
YzU0NzQ2OiAgICBieCAgICAgcjgKICAgIDB4YjRjNTQ3NDg6ICAgIHB1c2ggICB7cjcsIGxyfQog
ICAgMHhiNGM1NDc0YzogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNGM1NDc0ZTogICAgbW92dyAg
IHI2LCAjNDIxMjgKICAgIDB4YjRjNTQ3NTI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI0
YzU0NzU2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjRjNTQ3NTg6ICAgIG12biAgICByMTIs
ICMyMwogICAgMHhiNGM1NDc1YzogICAgbW92ICAgIHNwLCBzcAogICAgMHhiNGM1NDc1ZTogICAg
YWRkICAgIHNwLCByMTIKICAgIDB4YjRjNTQ3NjA6ICAgIG1vdiAgICByMSwgcjIKICAgIDB4YjRj
NTQ3NjI6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjRjNTQ3NjQ6ICAgIG1vdncgICByNCwgIzUx
Mjc3CiAgICAweGI0YzU0NzY4OiAgICBtb3Z0ICAgcjQsICM0Njc3NgogICAgMHhiNGM1NDc2Yzog
ICAgYmx4ICAgIHI0CiAgICAweGI0YzU0NzZlOiAgICBhZGQgICAgc3AsIHNwLCAjNgogICAgMHhi
NGM1NDc3MDogICAgbW92ICAgIHNwLCByNwogICAgMHhiNGM1NDc3MjogICAgcG9wICAgIHtyNywg
bHJ9CiAgICAweGI0YzU0Nzc2OiAgICB0c3QgICAgcjEsIHIxCiAgICAweGI0YzU0Nzc4OiAgICBi
ZXEgICAgMHhiNGM1NDdjOAogICAgMHhiNGM1NDc3YTogICAgbW92ICAgIHI1LCBscgogICAgMHhi
NGM1NDc3YzogICAgbGRyICAgIHIxLCBbcjcsICMyNF0KICAgIDB4YjRjNTQ3N2U6ICAgIGxkciAg
ICByMywgW3I3LCAjOF0KICAgIDB4YjRjNTQ3ODA6ICAgIGxkciAgICByMywgW3IzLCAjMzJdCiAg
ICAweGI0YzU0NzgyOiAgICBjbXAgICAgcjMsIHIxCiAgICAweGI0YzU0Nzg0OiAgICBibHMgICAg
MHhiNGM1NDc4OAogICAgMHhiNGM1NDc4NjogICAgbW92ICAgIHIxLCByMwogICAgMHhiNGM1NDc4
ODogICAgYWRkcyAgIHIxLCByMSwgIzUKICAgIDB4YjRjNTQ3OGE6ICAgIG12biAgICByMTIsICMx
CiAgICAweGI0YzU0NzhlOiAgICBhbmQgICAgcjEsIHIxLCByMTIKICAgIDB4YjRjNTQ3OTI6ICAg
IG1vdiAgICByMTIsICM4CiAgICAweGI0YzU0Nzk2OiAgICBzbXVsbCAgcjEsIHIxMiwgcjEsIHIx
MgogICAgMHhiNGM1NDc5YTogICAgYWRkcyAgIHIzLCByNywgcjEKICAgIDB4YjRjNTQ3OWM6ICAg
IGxkciAgICByMSwgW3NwLCAjMTZdCiAgICAweGI0YzU0NzllOiAgICBhZGRzICAgcjEsIHIxLCAj
NQogICAgMHhiNGM1NDdhMDogICAgbXZuICAgIHIxMiwgIzEKICAgIDB4YjRjNTQ3YTQ6ICAgIGFu
ZCAgICByMSwgcjEsIHIxMgogICAgMHhiNGM1NDdhODogICAgbW92ICAgIHIxMiwgIzgKICAgIDB4
YjRjNTQ3YWM6ICAgIHNtdWxsICByMSwgcjEyLCByMSwgcjEyCiAgICAweGI0YzU0N2IwOiAgICBs
ZHIgICAgbHIsIFtyNywgIzRdCiAgICAweGI0YzU0N2I0OiAgICBzdWJzICAgcjEsICM4CiAgICAw
eGI0YzU0N2I2OiAgICBzdWJzICAgcjMsIHIzLCByMQogICAgMHhiNGM1NDdiODogICAgbGRyICAg
IHI3LCBbcjddCiAgICAweGI0YzU0N2JhOiAgICBzdWJzICAgcjEsIHIxLCAjNAogICAgMHhiNGM1
NDdiYzogICAgbGRyICAgIHIyLCBbc3AsIHIxXQogICAgMHhiNGM1NDdjMDogICAgc3RyICAgIHIy
LCBbcjMsIHIxXQogICAgMHhiNGM1NDdjMjogICAgdHN0ICAgIHIxLCByMQogICAgMHhiNGM1NDdj
NDogICAgYm5lICAgIDB4YjRjNTQ5YmEKICAgIDB4YjRjNTQ3YzY6ICAgIG1vdiAgICBzcCwgcjMK
ICAgIDB4YjRjNTQ3Yzg6ICAgIGJ4ICAgICByMApDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3Ig
cG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRh
TG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBm
b3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBk
YXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5m
byBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5
LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsg
aW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVl
MDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxp
bmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0
YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxs
IGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAw
eGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBj
YWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUg
PSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpHZW5lcmF0
ZWQgSklUIGNvZGUgZm9yIERGRyBPU1IgZXhpdCAjMCAoYmMjMzYsIEJhZFR5cGUpIGZyb20gb3Bh
cXVlUG93I0M2a2hlOTpbMHhiNDc5MTMyMC0+MHhiNDc5MzdlMC0+MHhiNDdkNWFjMCwgREZHRnVu
Y3Rpb25DYWxsLCA0NyAoTmV2ZXJJbmxpbmUpXSwgd2l0aCBvcGVyYW5kcyA9IGFyZzI6KmFyZzIg
YXJnMToqYXJnMSBhcmcwOltVbmRlZmluZWRdIGxvYzA6W1VuZGVmaW5lZF0gbG9jMTpbVW5kZWZp
bmVkXSBsb2MyOltVbmRlZmluZWRdIGxvYzM6W0NlbGw6IDB4YjQ3ZjIyYTAgKCVEMTpGdW5jdGlv
bildIGxvYzQ6W1VuZGVmaW5lZF0gbG9jNTpwYWlyKCVyMywgJXIyKSBsb2M2OnBhaXIoJXIxLCAl
cjApIGxvYzc6W0NlbGw6IDB4YjQ3ZDNkYTAgKCVEajpNYXRoKV0gbG9jODpbVW5kZWZpbmVkXSBs
b2M5OltVbmRlZmluZWRdIGxvYzEwOltVbmRlZmluZWRdIGxvYzExOltVbmRlZmluZWRdOgogICAg
Q29kZSBhdCBbMHhiNGM1NDdlMSwgMHhiNGM1NGE0MSk6CiAgICAweGI0YzU0N2UwOiAgICBtb3Z3
ICAgcjYsICMzMzc3MgogICAgMHhiNGM1NDdlNDogICAgbW92dCAgIHI2LCAjNDYyNjkKICAgIDB4
YjRjNTQ3ZTg6ICAgIHN0ciAgICByMSwgW3I2XQogICAgMHhiNGM1NDdlYTogICAgbW92dyAgIHI2
LCAjMzM3NjgKICAgIDB4YjRjNTQ3ZWU6ICAgIG1vdnQgICByNiwgIzQ2MjY5CiAgICAweGI0YzU0
N2YyOiAgICBzdHIgICAgcjAsIFtyNl0KICAgIDB4YjRjNTQ3ZjQ6ICAgIG1vdncgICByNiwgIzE5
Njg0CiAgICAweGI0YzU0N2Y4OiAgICBtb3Z0ICAgcjYsICM0NjI2NAogICAgMHhiNGM1NDdmYzog
ICAgc3RyICAgIHIzLCBbcjZdCiAgICAweGI0YzU0N2ZlOiAgICBtb3Z3ICAgcjYsICMxOTY4MAog
ICAgMHhiNGM1NDgwMjogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgIDB4YjRjNTQ4MDY6ICAgIHN0
ciAgICByMiwgW3I2XQogICAgMHhiNGM1NDgwODogICAgbW92dyAgIHI2LCAjMTk2OTIKICAgIDB4
YjRjNTQ4MGM6ICAgIG1vdnQgICByNiwgIzQ2MjY0CiAgICAweGI0YzU0ODEwOiAgICBzdHIgICAg
cjEsIFtyNl0KICAgIDB4YjRjNTQ4MTI6ICAgIG1vdncgICByNiwgIzE5Njg4CiAgICAweGI0YzU0
ODE2OiAgICBtb3Z0ICAgcjYsICM0NjI2NAogICAgMHhiNGM1NDgxYTogICAgc3RyICAgIHIwLCBb
cjZdCiAgICAweGI0YzU0ODFjOiAgICBsZHIgICAgcjAsIFtyNywgIzQ0XQogICAgMHhiNGM1NDgx
ZTogICAgbGRyICAgIHIxLCBbcjcsICM0MF0KICAgIDB4YjRjNTQ4MjA6ICAgIG1vdncgICByNiwg
IzE5NjI4CiAgICAweGI0YzU0ODI0OiAgICBtb3Z0ICAgcjYsICM0NjI2NAogICAgMHhiNGM1NDgy
ODogICAgc3RyICAgIHIwLCBbcjZdCiAgICAweGI0YzU0ODJhOiAgICBtb3Z3ICAgcjYsICMxOTYy
NAogICAgMHhiNGM1NDgyZTogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgIDB4YjRjNTQ4MzI6ICAg
IHN0ciAgICByMSwgW3I2XQogICAgMHhiNGM1NDgzNDogICAgbGRyICAgIHIwLCBbcjcsICM1Ml0K
ICAgIDB4YjRjNTQ4MzY6ICAgIGxkciAgICByMSwgW3I3LCAjNDhdCiAgICAweGI0YzU0ODM4OiAg
ICBtb3Z3ICAgcjYsICMxOTYzNgogICAgMHhiNGM1NDgzYzogICAgbW92dCAgIHI2LCAjNDYyNjQK
ICAgIDB4YjRjNTQ4NDA6ICAgIHN0ciAgICByMCwgW3I2XQogICAgMHhiNGM1NDg0MjogICAgbW92
dyAgIHI2LCAjMTk2MzIKICAgIDB4YjRjNTQ4NDY6ICAgIG1vdnQgICByNiwgIzQ2MjY0CiAgICAw
eGI0YzU0ODRhOiAgICBzdHIgICAgcjEsIFtyNl0KICAgIDB4YjRjNTQ4NGM6ICAgIG1vdiAgICBz
cCwgcjcKICAgIDB4YjRjNTQ4NGU6ICAgIG12biAgICByMTIsICMxMTkKICAgIDB4YjRjNTQ4NTI6
ICAgIG1vdiAgICBzcCwgc3AKICAgIDB4YjRjNTQ4NTQ6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAw
eGI0YzU0ODU2OiAgICBtdm4gICAgcjEyLCAjMwogICAgMHhiNGM1NDg1YTogICAgc3RyICAgIHIx
MiwgW3I3LCAjMzZdCiAgICAweGI0YzU0ODVlOiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNGM1
NDg2MjogICAgc3RyICAgIHIxMiwgW3I3LCAjMzJdCiAgICAweGI0YzU0ODY2OiAgICBtb3Z3ICAg
cjYsICMxOTYyOAogICAgMHhiNGM1NDg2YTogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgIDB4YjRj
NTQ4NmU6ICAgIGxkciAgICByMCwgW3I2XQogICAgMHhiNGM1NDg3MDogICAgbW92dyAgIHI2LCAj
MTk2MjQKICAgIDB4YjRjNTQ4NzQ6ICAgIG1vdnQgICByNiwgIzQ2MjY0CiAgICAweGI0YzU0ODc4
OiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjRjNTQ4N2E6ICAgIHN0ciAgICByMCwgW3I3LCAj
NDRdCiAgICAweGI0YzU0ODdjOiAgICBzdHIgICAgcjEsIFtyNywgIzQwXQogICAgMHhiNGM1NDg3
ZTogICAgbW92dyAgIHI2LCAjMTk2MzYKICAgIDB4YjRjNTQ4ODI6ICAgIG1vdnQgICByNiwgIzQ2
MjY0CiAgICAweGI0YzU0ODg2OiAgICBsZHIgICAgcjAsIFtyNl0KICAgIDB4YjRjNTQ4ODg6ICAg
IG1vdncgICByNiwgIzE5NjMyCiAgICAweGI0YzU0ODhjOiAgICBtb3Z0ICAgcjYsICM0NjI2NAog
ICAgMHhiNGM1NDg5MDogICAgbGRyICAgIHIxLCBbcjZdCiAgICAweGI0YzU0ODkyOiAgICBzdHIg
ICAgcjAsIFtyNywgIzUyXQogICAgMHhiNGM1NDg5NDogICAgc3RyICAgIHIxLCBbcjcsICM0OF0K
ICAgIDB4YjRjNTQ4OTY6ICAgIG12biAgICByMTIsICMzCiAgICAweGI0YzU0ODlhOiAgICBzdHIg
ICAgcjEyLCBbcjcsICMtNF0KICAgIDB4YjRjNTQ4OWU6ICAgIG1vdiAgICByMTIsICMwCiAgICAw
eGI0YzU0OGEyOiAgICBzdHIgICAgcjEyLCBbcjcsICMtOF0KICAgIDB4YjRjNTQ4YTY6ICAgIG12
biAgICByMTIsICMzCiAgICAweGI0YzU0OGFhOiAgICBzdHIgICAgcjEyLCBbcjcsICMtMTJdCiAg
ICAweGI0YzU0OGFlOiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhiNGM1NDhiMjogICAgc3RyICAg
IHIxMiwgW3I3LCAjLTE2XQogICAgMHhiNGM1NDhiNjogICAgbXZuICAgIHIxMiwgIzMKICAgIDB4
YjRjNTQ4YmE6ICAgIHN0ciAgICByMTIsIFtyNywgIy0yMF0KICAgIDB4YjRjNTQ4YmU6ICAgIG1v
diAgICByMTIsICMwCiAgICAweGI0YzU0OGMyOiAgICBzdHIgICAgcjEyLCBbcjcsICMtMjRdCiAg
ICAweGI0YzU0OGM2OiAgICBtdm4gICAgcjEyLCAjNAogICAgMHhiNGM1NDhjYTogICAgc3RyICAg
IHIxMiwgW3I3LCAjLTI4XQogICAgMHhiNGM1NDhjZTogICAgbW92dyAgIHIxMiwgIzg4NjQKICAg
IDB4YjRjNTQ4ZDI6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1NDhkNjogICAgc3Ry
ICAgIHIxMiwgW3I3LCAjLTMyXQogICAgMHhiNGM1NDhkYTogICAgbXZuICAgIHIxMiwgIzMKICAg
IDB4YjRjNTQ4ZGU6ICAgIHN0ciAgICByMTIsIFtyNywgIy0zNl0KICAgIDB4YjRjNTQ4ZTI6ICAg
IG1vdiAgICByMTIsICMwCiAgICAweGI0YzU0OGU2OiAgICBzdHIgICAgcjEyLCBbcjcsICMtNDBd
CiAgICAweGI0YzU0OGVhOiAgICBtb3Z3ICAgcjYsICMxOTY4NAogICAgMHhiNGM1NDhlZTogICAg
bW92dCAgIHI2LCAjNDYyNjQKICAgIDB4YjRjNTQ4ZjI6ICAgIGxkciAgICByMCwgW3I2XQogICAg
MHhiNGM1NDhmNDogICAgbW92dyAgIHI2LCAjMTk2ODAKICAgIDB4YjRjNTQ4Zjg6ICAgIG1vdnQg
ICByNiwgIzQ2MjY0CiAgICAweGI0YzU0OGZjOiAgICBsZHIgICAgcjEsIFtyNl0KICAgIDB4YjRj
NTQ4ZmU6ICAgIHN0ciAgICByMCwgW3I3LCAjLTQ0XQogICAgMHhiNGM1NDkwMjogICAgc3RyICAg
IHIxLCBbcjcsICMtNDhdCiAgICAweGI0YzU0OTA2OiAgICBtb3Z3ICAgcjYsICMxOTY5MgogICAg
MHhiNGM1NDkwYTogICAgbW92dCAgIHI2LCAjNDYyNjQKICAgIDB4YjRjNTQ5MGU6ICAgIGxkciAg
ICByMCwgW3I2XQogICAgMHhiNGM1NDkxMDogICAgbW92dyAgIHI2LCAjMTk2ODgKICAgIDB4YjRj
NTQ5MTQ6ICAgIG1vdnQgICByNiwgIzQ2MjY0CiAgICAweGI0YzU0OTE4OiAgICBsZHIgICAgcjEs
IFtyNl0KICAgIDB4YjRjNTQ5MWE6ICAgIHN0ciAgICByMCwgW3I3LCAjLTUyXQogICAgMHhiNGM1
NDkxZTogICAgc3RyICAgIHIxLCBbcjcsICMtNTZdCiAgICAweGI0YzU0OTIyOiAgICBtdm4gICAg
cjEyLCAjNAogICAgMHhiNGM1NDkyNjogICAgc3RyICAgIHIxMiwgW3I3LCAjLTYwXQogICAgMHhi
NGM1NDkyYTogICAgbW92dyAgIHIxMiwgIzE1Nzc2CiAgICAweGI0YzU0OTJlOiAgICBtb3Z0ICAg
cjEyLCAjNDYyMDUKICAgIDB4YjRjNTQ5MzI6ICAgIHN0ciAgICByMTIsIFtyNywgIy02NF0KICAg
IDB4YjRjNTQ5MzY6ICAgIG12biAgICByMTIsICMzCiAgICAweGI0YzU0OTNhOiAgICBzdHIgICAg
cjEyLCBbcjcsICMtNjhdCiAgICAweGI0YzU0OTNlOiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhi
NGM1NDk0MjogICAgc3RyICAgIHIxMiwgW3I3LCAjLTcyXQogICAgMHhiNGM1NDk0NjogICAgbXZu
ICAgIHIxMiwgIzMKICAgIDB4YjRjNTQ5NGE6ICAgIHN0ciAgICByMTIsIFtyNywgIy03Nl0KICAg
IDB4YjRjNTQ5NGU6ICAgIG1vdiAgICByMTIsICMwCiAgICAweGI0YzU0OTUyOiAgICBzdHIgICAg
cjEyLCBbcjcsICMtODBdCiAgICAweGI0YzU0OTU2OiAgICBtdm4gICAgcjEyLCAjMwogICAgMHhi
NGM1NDk1YTogICAgc3RyICAgIHIxMiwgW3I3LCAjLTg0XQogICAgMHhiNGM1NDk1ZTogICAgbW92
ICAgIHIxMiwgIzAKICAgIDB4YjRjNTQ5NjI6ICAgIHN0ciAgICByMTIsIFtyNywgIy04OF0KICAg
IDB4YjRjNTQ5NjY6ICAgIG12biAgICByMTIsICMzCiAgICAweGI0YzU0OTZhOiAgICBzdHIgICAg
cjEyLCBbcjcsICMtOTJdCiAgICAweGI0YzU0OTZlOiAgICBtb3YgICAgcjEyLCAjMAogICAgMHhi
NGM1NDk3MjogICAgc3RyICAgIHIxMiwgW3I3LCAjLTk2XQogICAgMHhiNGM1NDk3NjogICAgbW92
dyAgIHI2LCAjMjQ1ODAKICAgIDB4YjRjNTQ5N2E6ICAgIG1vdnQgICByNiwgIzQ2MjY1CiAgICAw
eGI0YzU0OTdlOiAgICBsZHIgICAgcjEyLCBbcjZdCiAgICAweGI0YzU0OTgyOiAgICBhZGR3ICAg
cjEyLCByMTIsICMxCiAgICAweGI0YzU0OTg2OiAgICBtb3Z3ICAgcjYsICMyNDU4MAogICAgMHhi
NGM1NDk4YTogICAgbW92dCAgIHI2LCAjNDYyNjUKICAgIDB4YjRjNTQ5OGU6ICAgIHN0ciAgICBy
MTIsIFtyNl0KICAgIDB4YjRjNTQ5OTI6ICAgIG1vdncgICByMCwgIzQ4OTYKICAgIDB4YjRjNTQ5
OTY6ICAgIG1vdnQgICByMCwgIzQ2MjAxCiAgICAweGI0YzU0OTlhOiAgICBsZHIgICAgcjIsIFty
MCwgIzI5Ml0KICAgIDB4YjRjNTQ5OWU6ICAgIGFkZHMgICByMiwgcjIsICMxCiAgICAweGI0YzU0
OWEwOiAgICBzdHIgICAgcjIsIFtyMCwgIzI5Ml0KICAgIDB4YjRjNTQ5YTQ6ICAgIG1vdncgICBy
MCwgIzE0MzA0CiAgICAweGI0YzU0OWE4OiAgICBtb3Z0ICAgcjAsICM0NjIwMQogICAgMHhiNGM1
NDlhYzogICAgbGRyICAgIHI2LCBbcjAsICMyODBdCiAgICAweGI0YzU0OWIwOiAgICBjbXAgICAg
cjIsICMwCiAgICAweGI0YzU0OWIyOiAgICBiZ2UgICAgMHhiNGM1NDliYQogICAgMHhiNGM1NDli
NDogICAgbW92cyAgIHIxLCAjMTAwCiAgICAweGI0YzU0OWI2OiAgICBjbXAgICAgcjIsIHIxCiAg
ICAweGI0YzU0OWI4OiAgICBibHMgICAgMHhiNGM1NDljZQogICAgMHhiNGM1NDliYTogICAgbW92
dyAgIHIxLCAjMjQ1NzYKICAgIDB4YjRjNTQ5YmU6ICAgIG1vdnQgICByMSwgIzQ2MjY1CiAgICAw
eGI0YzU0OWMyOiAgICBtb3Z3ICAgcjQsICM0Njc1NwogICAgMHhiNGM1NDljNjogICAgbW92dCAg
IHI0LCAjNDY3NTcKICAgIDB4YjRjNTQ5Y2E6ICAgIGJseCAgICByNAogICAgMHhiNGM1NDljYzog
ICAgYiAgICAgIDB4YjRjNTQ5ZWUKICAgIDB4YjRjNTQ5Y2U6ICAgIG1vdncgICByMTIsICM2NDUz
NgogICAgMHhiNGM1NDlkMjogICAgbW92dCAgIHIxMiwgIzY1NTM1CiAgICAweGI0YzU0OWQ2OiAg
ICBzdHIgICAgcjEyLCBbcjAsICMyODBdCiAgICAweGI0YzU0OWRhOiAgICBtb3Z3ICAgcjEyLCAj
MTI1MgogICAgMHhiNGM1NDlkZTogICAgc3RyICAgIHIxMiwgW3IwLCAjMjg4XQogICAgMHhiNGM1
NDllMjogICAgbW92dyAgIHIxMiwgIzAKICAgIDB4YjRjNTQ5ZTY6ICAgIG1vdnQgICByMTIsICMx
NzUzMAogICAgMHhiNGM1NDllYTogICAgc3RyICAgIHIxMiwgW3IwLCAjMjg0XQogICAgMHhiNGM1
NDllZTogICAgbW92dyAgIHIxMiwgIzE0MzA0CiAgICAweGI0YzU0OWYyOiAgICBtb3Z0ICAgcjEy
LCAjNDYyMDEKICAgIDB4YjRjNTQ5ZjY6ICAgIHN0ciAgICByMTIsIFtyNywgIzhdCiAgICAweGI0
YzU0OWZhOiAgICBtb3Z3ICAgcjEyLCAjMzI5MjAKICAgIDB4YjRjNTQ5ZmU6ICAgIG1vdnQgICBy
MTIsICM0NjI2NAogICAgMHhiNGM1NGEwMjogICAgc3RyICAgIHIxMiwgW3I3LCAjMjhdCiAgICAw
eGI0YzU0YTA2OiAgICBtb3Z3ICAgcjEsICMxNDMwNAogICAgMHhiNGM1NGEwYTogICAgbW92dCAg
IHIxLCAjNDYyMDEKICAgIDB4YjRjNTRhMGU6ICAgIGxkcmIgICByNiwgW3IxLCAjN10KICAgIDB4
YjRjNTRhMTA6ICAgIHRzdCAgICByNiwgcjYKICAgIDB4YjRjNTRhMTI6ICAgIGJuZSAgICAweGI0
YzU0YTIwCiAgICAweGI0YzU0YTE0OiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI0YzU0YTE2OiAg
ICBtb3Z3ICAgcjQsICM2MzEyOQogICAgMHhiNGM1NGExYTogICAgbW92dCAgIHI0LCAjNDY3NzYK
ICAgIDB4YjRjNTRhMWU6ICAgIGJseCAgICByNAogICAgMHhiNGM1NGEyMDogICAgbW92ICAgIHNw
LCByNwogICAgMHhiNGM1NGEyMjogICAgbXZuICAgIHIxMiwgIzExOQogICAgMHhiNGM1NGEyNjog
ICAgbW92ICAgIHNwLCBzcAogICAgMHhiNGM1NGEyODogICAgYWRkICAgIHNwLCByMTIKICAgIDB4
YjRjNTRhMmE6ICAgIG1vdncgICByMiwgIzc1OTUKICAgIDB4YjRjNTRhMmU6ICAgIG1vdnQgICBy
MiwgIzQ2ODMyCiAgICAweGI0YzU0YTMyOiAgICBieCAgICAgcjIKR2VuZXJhdGVkIEpJVCBjb2Rl
IGZvciBQb2x5bW9ycGhpYyBjYWxsIHN0dWIgZm9yIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3
MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdLCByZXR1cm4gcG9pbnQgMHhiNGM1
ZTAxOSwgdGFyZ2V0cyA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDQ0MCAoMHhi
NDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVj
dXRhYmxlOiAjQXJabk9sOlsweGI0NzkxNzEwLT4weGI0N2Q1NzQwLCBMTEludEZ1bmN0aW9uQ2Fs
bCwgNDddKSwgY29kZUJsb2NrID0gI0FyWm5PbDpbMHhiNDc5MTcxMC0+MHhiNDdkNTc0MCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2Yw
MzgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUw
XSk7IEV4ZWN1dGFibGU6ICNFYUdmRzQ6WzB4YjQ3OTE1YzAtPjB4YjQ3ZDU2NDAsIExMSW50RnVu
Y3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjRWFHZkc0OlsweGI0NzkxNWMwLT4weGI0N2Q1
NjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6
IDB4YjQ3ZjAyYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4
YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0Fma1NWSTpbMHhiNDc5MTQ3MC0+MHhiNDdkNTU0MCwg
TExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNBZmtTVkk6WzB4YjQ3OTE0NzAt
PjB4YjQ3ZDU1NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10+LCA8dmFyaWFudCA9IChGdW5jdGlv
bjogQ2VsbDogMHhiNDdmMDIwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwg
UHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQnMxWlBwOlsweGI0NzkxMWQwLT4weGI0
N2Q1NDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0JzMVpQcDpbMHhi
NDc5MTFkMC0+MHhiNDdkNTQ0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0g
KEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMTQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5v
bkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCajQ5SFU6WzB4YjQ3OTEw
ODAtPjB4YjQ3ZDUzNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQmo0
OUhVOlsweGI0NzkxMDgwLT4weGI0N2Q1MzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZh
cmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJmYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9u
LCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JkMWlnOTpb
MHhiNDc5MGYzMC0+MHhiNDdkNTI0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9j
ayA9ICNCZDFpZzk6WzB4YjQ3OTBmMzAtPjB4YjQ3ZDUyNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0
N10+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmYwMCAoMHhiNDdmNzA5MDpb
RnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAj
Q2xHNHNYOlsweGI0NzkwZGUwLT4weGI0N2Q1MTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwg
Y29kZUJsb2NrID0gI0NsRzRzWDpbMHhiNDc5MGRlMC0+MHhiNDdkNTE0MCwgTExJbnRGdW5jdGlv
bkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliZTQwICgweGI0
N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1
dGFibGU6ICNEUWJ1NmI6WzB4YjQ3OTBjOTAtPjB4YjQ3ZDUwNDAsIExMSW50RnVuY3Rpb25DYWxs
LCA0N10pLCBjb2RlQmxvY2sgPSAjRFFidTZiOlsweGI0NzkwYzkwLT4weGI0N2Q1MDQwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJk
ODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBd
KTsgRXhlY3V0YWJsZTogI0I2Y1JQODpbMHhiNDc5MGI0MC0+MHhiNDdkNGY0MCwgTExJbnRGdW5j
dGlvbkNhbGwsIDU5XSksIGNvZGVCbG9jayA9ICNCNmNSUDg6WzB4YjQ3OTBiNDAtPjB4YjQ3ZDRm
NDAsIExMSW50RnVuY3Rpb25DYWxsLCA1OV0+OgogICAgQ29kZSBhdCBbMHhiNGM1NGE0MSwgMHhi
NGM1NGM0MSk6CiAgICAweGI0YzU0YTQwOiAgICBtb3Z3ICAgcjEsICM2NTE2OAogICAgMHhiNGM1
NGE0NDogICAgbW92dCAgIHIxLCAjMTg2CiAgICAweGI0YzU0YTQ4OiAgICBtb3Z3ICAgcjEyLCAj
NTEyCiAgICAweGI0YzU0YTRjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNTRhNTA6
ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU0YTU0OiAgICBibHQgICAgMHhiNGM1NGIyMgog
ICAgMHhiNGM1NGE1ODogICAgbW92dyAgIHIxMiwgIzg5NgogICAgMHhiNGM1NGE1YzogICAgbW92
dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzU0YTYwOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhi
NGM1NGE2NDogICAgYmx0ICAgIDB4YjRjNTRhYzQKICAgIDB4YjRjNTRhNjY6ICAgIG1vdncgICBy
MTIsICM4OTYKICAgIDB4YjRjNTRhNmE6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1
NGE2ZTogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTRhNzI6ICAgIGJuZSAgICAweGI0YzU0
YTk0CiAgICAweGI0YzU0YTc0OiAgICBsZHIgICAgcjEyLCBbcjEsICM0XQogICAgMHhiNGM1NGE3
ODogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NGE3YzogICAgc3RyICAgIHIxMiwg
W3IxLCAjNF0KICAgIDB4YjRjNTRhODA6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1
NGE4NDogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU0YTg4OiAgICBibHggICAgcjEy
CiAgICAweGI0YzU0YThhOiAgICBub3AgICAgCiAgICAweGI0YzU0YThjOiAgICBub3AgICAgCiAg
ICAweGI0YzU0YTkwOiAgICBiICAgICAgMHhiNDQ1YmM4ZQogICAgMHhiNGM1NGE5NDogICAgbW92
dyAgIHIxMiwgIzEwODgKICAgIDB4YjRjNTRhOTg6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAg
MHhiNGM1NGE5YzogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTRhYTA6ICAgIGJuZSAgICAw
eGI0YzU0YzE2CiAgICAweGI0YzU0YWE0OiAgICBsZHIgICAgcjEyLCBbcjFdCiAgICAweGI0YzU0
YWE4OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzU0YWFjOiAgICBzdHIgICAgcjEy
LCBbcjFdCiAgICAweGI0YzU0YWIwOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTRh
YjQ6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NGFiODogICAgYmx4ICAgIHIxMgog
ICAgMHhiNGM1NGFiYTogICAgbm9wICAgIAogICAgMHhiNGM1NGFiYzogICAgbm9wICAgIAogICAg
MHhiNGM1NGFjMDogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTRhYzQ6ICAgIG1vdncg
ICByMTIsICM3MDQKICAgIDB4YjRjNTRhYzg6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhi
NGM1NGFjYzogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTRhZDA6ICAgIGJuZSAgICAweGI0
YzU0YWYyCiAgICAweGI0YzU0YWQyOiAgICBsZHIgICAgcjEyLCBbcjEsICM4XQogICAgMHhiNGM1
NGFkNjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NGFkYTogICAgc3RyICAgIHIx
MiwgW3IxLCAjOF0KICAgIDB4YjRjNTRhZGU6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhi
NGM1NGFlMjogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU0YWU2OiAgICBibHggICAg
cjEyCiAgICAweGI0YzU0YWU4OiAgICBub3AgICAgCiAgICAweGI0YzU0YWVhOiAgICBub3AgICAg
CiAgICAweGI0YzU0YWVlOiAgICBiICAgICAgMHhiNDQ1YmM4ZQogICAgMHhiNGM1NGFmMjogICAg
bW92dyAgIHIxMiwgIzUxMgogICAgMHhiNGM1NGFmNjogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAg
ICAweGI0YzU0YWZhOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NGFmZTogICAgYm5lICAg
IDB4YjRjNTRjMTYKICAgIDB4YjRjNTRiMDI6ICAgIGxkciAgICByMTIsIFtyMSwgIzEyXQogICAg
MHhiNGM1NGIwNjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NGIwYTogICAgc3Ry
ICAgIHIxMiwgW3IxLCAjMTJdCiAgICAweGI0YzU0YjBlOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcK
ICAgIDB4YjRjNTRiMTI6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NGIxNjogICAg
Ymx4ICAgIHIxMgogICAgMHhiNGM1NGIxODogICAgbm9wICAgIAogICAgMHhiNGM1NGIxYTogICAg
bm9wICAgIAogICAgMHhiNGM1NGIxZTogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTRi
MjI6ICAgIG1vdncgICByMTIsICM0OTA4OAogICAgMHhiNGM1NGIyNjogICAgbW92dCAgIHIxMiwg
IzQ2MjAxCiAgICAweGI0YzU0YjJhOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NGIyZTog
ICAgYmx0ICAgIDB4YjRjNTRiOGMKICAgIDB4YjRjNTRiMzA6ICAgIG1vdncgICByMTIsICM0OTA4
OAogICAgMHhiNGM1NGIzNDogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU0YjM4OiAg
ICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NGIzYzogICAgYm5lICAgIDB4YjRjNTRiNWUKICAg
IDB4YjRjNTRiM2U6ICAgIGxkciAgICByMTIsIFtyMSwgIzIwXQogICAgMHhiNGM1NGI0MjogICAg
YWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NGI0NjogICAgc3RyICAgIHIxMiwgW3IxLCAj
MjBdCiAgICAweGI0YzU0YjRhOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTRiNGU6
ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NGI1MjogICAgYmx4ICAgIHIxMgogICAg
MHhiNGM1NGI1NDogICAgbm9wICAgIAogICAgMHhiNGM1NGI1NjogICAgbm9wICAgIAogICAgMHhi
NGM1NGI1YTogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTRiNWU6ICAgIG1vdncgICBy
MTIsICMzMjAKICAgIDB4YjRjNTRiNjI6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1
NGI2NjogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTRiNmE6ICAgIGJuZSAgICAweGI0YzU0
YzE2CiAgICAweGI0YzU0YjZjOiAgICBsZHIgICAgcjEyLCBbcjEsICMxNl0KICAgIDB4YjRjNTRi
NzA6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTRiNzQ6ICAgIHN0ciAgICByMTIs
IFtyMSwgIzE2XQogICAgMHhiNGM1NGI3ODogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0
YzU0YjdjOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNTRiODA6ICAgIGJseCAgICBy
MTIKICAgIDB4YjRjNTRiODI6ICAgIG5vcCAgICAKICAgIDB4YjRjNTRiODQ6ICAgIG5vcCAgICAK
ICAgIDB4YjRjNTRiODg6ICAgIGIgICAgICAweGI0NDViYzhlCiAgICAweGI0YzU0YjhjOiAgICBt
b3Z3ICAgcjEyLCAjNDg3MDQKICAgIDB4YjRjNTRiOTA6ICAgIG1vdnQgICByMTIsICM0NjIwMQog
ICAgMHhiNGM1NGI5NDogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTRiOTg6ICAgIGJuZSAg
ICAweGI0YzU0YmJhCiAgICAweGI0YzU0YjlhOiAgICBsZHIgICAgcjEyLCBbcjEsICMyOF0KICAg
IDB4YjRjNTRiOWU6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTRiYTI6ICAgIHN0
ciAgICByMTIsIFtyMSwgIzI4XQogICAgMHhiNGM1NGJhNjogICAgbW92dyAgIHIxMiwgIzMxMTM3
CiAgICAweGI0YzU0YmFhOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNTRiYWU6ICAg
IGJseCAgICByMTIKICAgIDB4YjRjNTRiYjA6ICAgIG5vcCAgICAKICAgIDB4YjRjNTRiYjI6ICAg
IG5vcCAgICAKICAgIDB4YjRjNTRiYjY6ICAgIGIgICAgICAweGI0NDViYzhlCiAgICAweGI0YzU0
YmJhOiAgICBtb3Z3ICAgcjEyLCAjNDg1MTIKICAgIDB4YjRjNTRiYmU6ICAgIG1vdnQgICByMTIs
ICM0NjIwMQogICAgMHhiNGM1NGJjMjogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTRiYzY6
ICAgIGJuZSAgICAweGI0YzU0YmU4CiAgICAweGI0YzU0YmM4OiAgICBsZHIgICAgcjEyLCBbcjEs
ICMzMl0KICAgIDB4YjRjNTRiY2M6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTRi
ZDA6ICAgIHN0ciAgICByMTIsIFtyMSwgIzMyXQogICAgMHhiNGM1NGJkNDogICAgbW92dyAgIHIx
MiwgIzMxMTM3CiAgICAweGI0YzU0YmQ4OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRj
NTRiZGM6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNTRiZGU6ICAgIG5vcCAgICAKICAgIDB4YjRj
NTRiZTA6ICAgIG5vcCAgICAKICAgIDB4YjRjNTRiZTQ6ICAgIGIgICAgICAweGI0NDViYzhlCiAg
ICAweGI0YzU0YmU4OiAgICBtb3Z3ICAgcjEyLCAjNDg4OTYKICAgIDB4YjRjNTRiZWM6ICAgIG1v
dnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1NGJmMDogICAgY21wICAgIHIwLCByMTIKICAgIDB4
YjRjNTRiZjQ6ICAgIGJuZSAgICAweGI0YzU0YzE2CiAgICAweGI0YzU0YmY2OiAgICBsZHIgICAg
cjEyLCBbcjEsICMyNF0KICAgIDB4YjRjNTRiZmE6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAg
IDB4YjRjNTRiZmU6ICAgIHN0ciAgICByMTIsIFtyMSwgIzI0XQogICAgMHhiNGM1NGMwMjogICAg
bW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzU0YzA2OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIK
ICAgIDB4YjRjNTRjMGE6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNTRjMGM6ICAgIG5vcCAgICAK
ICAgIDB4YjRjNTRjMGU6ICAgIG5vcCAgICAKICAgIDB4YjRjNTRjMTI6ICAgIGIgICAgICAweGI0
NDViYzhlCiAgICAweGI0YzU0YzE2OiAgICBtdm4gICAgcjEsICM0CiAgICAweGI0YzU0YzFhOiAg
ICBtb3Z3ICAgcjIsICM0NTM0NAogICAgMHhiNGM1NGMxZTogICAgbW92dCAgIHIyLCAjNDYyNjMK
ICAgIDB4YjRjNTRjMjI6ICAgIG1vdncgICByOCwgIzU3MzY5CiAgICAweGI0YzU0YzI2OiAgICBt
b3Z0ICAgcjgsICM0NjI3NwogICAgMHhiNGM1NGMyYTogICAgbW92ICAgIGxyLCByOAogICAgMHhi
NGM1NGMyYzogICAgbW92dyAgIHIxMiwgIzE1OTY5CiAgICAweGI0YzU0YzMwOiAgICBtb3Z0ICAg
cjEyLCAjNDY4MzIKICAgIDB4YjRjNTRjMzQ6ICAgIGJ4ICAgICByMTIKTGlua2luZyBwb2x5bW9y
cGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFz
ZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2Yw
NDQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUw
XSk7IEV4ZWN1dGFibGU6ICNBclpuT2w6WzB4YjQ3OTE3MTAtPjB4YjQ3ZDU3NDAsIExMSW50RnVu
Y3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQXJabk9sOlsweGI0NzkxNzEwLT4weGI0N2Q1
NzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8
Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAx
NTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDM4MCAoMHhiNDdmNzA5
MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxl
OiAjRWFHZkc0OlsweGI0NzkxNWMwLT4weGI0N2Q1NjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDdd
KSwgY29kZUJsb2NrID0gI0VhR2ZHNDpbMHhiNDc5MTVjMC0+MHhiNDdkNTY0MCwgTExJbnRGdW5j
dGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklv
OlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMx
NSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAyYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7
fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0Fma1NWSTpbMHhi
NDc5MTQ3MC0+MHhiNDdkNTU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9
ICNBZmtTVkk6WzB4YjQ3OTE0NzAtPjB4YjQ3ZDU1NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10K
TGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+
MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9u
OiBDZWxsOiAweGI0N2YwMjAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQ
cm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCczFaUHA6WzB4YjQ3OTExZDAtPjB4YjQ3
ZDU0NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQnMxWlBwOlsweGI0
NzkxMWQwLT4weGI0N2Q1NDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1v
cnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJh
c2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDdm
MDE0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRl
MF0pOyBFeGVjdXRhYmxlOiAjQmo0OUhVOlsweGI0NzkxMDgwLT4weGI0N2Q1MzQwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0JqNDlIVTpbMHhiNDc5MTA4MC0+MHhiNDdk
NTM0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4g
PGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwg
MTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJmYzAgKDB4YjQ3Zjcw
OTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJs
ZTogI0JkMWlnOTpbMHhiNDc5MGYzMC0+MHhiNDdkNTI0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3
XSksIGNvZGVCbG9jayA9ICNCZDFpZzk6WzB4YjQ3OTBmMzAtPjB4YjQ3ZDUyNDAsIExMSW50RnVu
Y3Rpb25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJ
bzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEz
MTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliZjAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwg
e30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNDbEc0c1g6WzB4
YjQ3OTBkZTAtPjB4YjQ3ZDUxNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sg
PSAjQ2xHNHNYOlsweGI0NzkwZGUwLT4weGI0N2Q1MTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDdd
CkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAt
PjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlv
bjogQ2VsbDogMHhiNDc5YmU0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwg
UHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRFFidTZiOlsweGI0NzkwYzkwLT4weGI0
N2Q1MDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0RRYnU2YjpbMHhi
NDc5MGM5MC0+MHhiNDdkNTA0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBvbHlt
b3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBC
YXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3
OWJkODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRk
ZTBdKTsgRXhlY3V0YWJsZTogI0I2Y1JQODpbMHhiNDc5MGI0MC0+MHhiNDdkNGY0MCwgTExJbnRG
dW5jdGlvbkNhbGwsIDU5XSksIGNvZGVCbG9jayA9ICNCNmNSUDg6WzB4YjQ3OTBiNDAtPjB4YjQ3
ZDRmNDAsIExMSW50RnVuY3Rpb25DYWxsLCA1OV0KR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBWaXJ0
dWFsIGNhbGwgc2xvdyBwYXRoIHRodW5rOgogICAgQ29kZSBhdCBbMHhiNGM1NGM0MSwgMHhiNGM1
NGQwMSk6CiAgICAweGI0YzU0YzQwOiAgICBsZHIgICAgcjEyLCBbcjIsICM1Ml0KICAgIDB4YjRj
NTRjNDQ6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTRjNDg6ICAgIHN0ciAgICBy
MTIsIFtyMiwgIzUyXQogICAgMHhiNGM1NGM0YzogICAgY21uICAgIHIxLCAjNQogICAgMHhiNGM1
NGM1MDogICAgYm5lICAgIDB4YjRjNTRjNjgKICAgIDB4YjRjNTRjNTI6ICAgIGxkcmIgICByNiwg
W3IwLCAjNV0KICAgIDB4YjRjNTRjNTQ6ICAgIGNtcCAgICByMiwgIzIzCiAgICAweGI0YzU0YzU2
OiAgICBibmUgICAgMHhiNGM1NGM2OAogICAgMHhiNGM1NGM1ODogICAgbGRyICAgIHI4LCBbcjAs
ICMyMF0KICAgIDB4YjRjNTRjNWM6ICAgIGxkciAgICByOCwgW3I4LCAjMjhdCiAgICAweGI0YzU0
YzYwOiAgICB0c3QgICAgcjgsIHI4CiAgICAweGI0YzU0YzY0OiAgICBiZXEgICAgMHhiNGM1NGM2
OAogICAgMHhiNGM1NGM2NjogICAgYnggICAgIHI4CiAgICAweGI0YzU0YzY4OiAgICBwdXNoICAg
e3I3LCBscn0KICAgIDB4YjRjNTRjNmM6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjRjNTRjNmU6
ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI0YzU0YzcyOiAgICBtb3Z0ICAgcjYsICM0NjIw
NwogICAgMHhiNGM1NGM3NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI0YzU0Yzc4OiAgICBt
dm4gICAgcjEyLCAjMjMKICAgIDB4YjRjNTRjN2M6ICAgIG1vdiAgICBzcCwgc3AKICAgIDB4YjRj
NTRjN2U6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAweGI0YzU0YzgwOiAgICBtb3YgICAgcjEsIHIy
CiAgICAweGI0YzU0YzgyOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI0YzU0Yzg0OiAgICBtb3Z3
ICAgcjQsICM1MTI3NwogICAgMHhiNGM1NGM4ODogICAgbW92dCAgIHI0LCAjNDY3NzYKICAgIDB4
YjRjNTRjOGM6ICAgIGJseCAgICByNAogICAgMHhiNGM1NGM4ZTogICAgYWRkICAgIHNwLCBzcCwg
IzYKICAgIDB4YjRjNTRjOTA6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjRjNTRjOTI6ICAgIHBv
cCAgICB7cjcsIGxyfQogICAgMHhiNGM1NGM5NjogICAgdHN0ICAgIHIxLCByMQogICAgMHhiNGM1
NGM5ODogICAgYmVxICAgIDB4YjRjNTRjZTgKICAgIDB4YjRjNTRjOWE6ICAgIG1vdiAgICByNSwg
bHIKICAgIDB4YjRjNTRjOWM6ICAgIGxkciAgICByMSwgW3I3LCAjMjRdCiAgICAweGI0YzU0Yzll
OiAgICBsZHIgICAgcjMsIFtyNywgIzhdCiAgICAweGI0YzU0Y2EwOiAgICBsZHIgICAgcjMsIFty
MywgIzMyXQogICAgMHhiNGM1NGNhMjogICAgY21wICAgIHIzLCByMQogICAgMHhiNGM1NGNhNDog
ICAgYmxzICAgIDB4YjRjNTRjYTgKICAgIDB4YjRjNTRjYTY6ICAgIG1vdiAgICByMSwgcjMKICAg
IDB4YjRjNTRjYTg6ICAgIGFkZHMgICByMSwgcjEsICM1CiAgICAweGI0YzU0Y2FhOiAgICBtdm4g
ICAgcjEyLCAjMQogICAgMHhiNGM1NGNhZTogICAgYW5kICAgIHIxLCByMSwgcjEyCiAgICAweGI0
YzU0Y2IyOiAgICBtb3YgICAgcjEyLCAjOAogICAgMHhiNGM1NGNiNjogICAgc211bGwgIHIxLCBy
MTIsIHIxLCByMTIKICAgIDB4YjRjNTRjYmE6ICAgIGFkZHMgICByMywgcjcsIHIxCiAgICAweGI0
YzU0Y2JjOiAgICBsZHIgICAgcjEsIFtzcCwgIzE2XQogICAgMHhiNGM1NGNiZTogICAgYWRkcyAg
IHIxLCByMSwgIzUKICAgIDB4YjRjNTRjYzA6ICAgIG12biAgICByMTIsICMxCiAgICAweGI0YzU0
Y2M0OiAgICBhbmQgICAgcjEsIHIxLCByMTIKICAgIDB4YjRjNTRjYzg6ICAgIG1vdiAgICByMTIs
ICM4CiAgICAweGI0YzU0Y2NjOiAgICBzbXVsbCAgcjEsIHIxMiwgcjEsIHIxMgogICAgMHhiNGM1
NGNkMDogICAgbGRyICAgIGxyLCBbcjcsICM0XQogICAgMHhiNGM1NGNkNDogICAgc3VicyAgIHIx
LCAjOAogICAgMHhiNGM1NGNkNjogICAgc3VicyAgIHIzLCByMywgcjEKICAgIDB4YjRjNTRjZDg6
ICAgIGxkciAgICByNywgW3I3XQogICAgMHhiNGM1NGNkYTogICAgc3VicyAgIHIxLCByMSwgIzQK
ICAgIDB4YjRjNTRjZGM6ICAgIGxkciAgICByMiwgW3NwLCByMV0KICAgIDB4YjRjNTRjZTA6ICAg
IHN0ciAgICByMiwgW3IzLCByMV0KICAgIDB4YjRjNTRjZTI6ICAgIHRzdCAgICByMSwgcjEKICAg
IDB4YjRjNTRjZTQ6ICAgIGJuZSAgICAweGI0YzU0ZWRhCiAgICAweGI0YzU0Y2U2OiAgICBtb3Yg
ICAgc3AsIHIzCiAgICAweGI0YzU0Y2U4OiAgICBieCAgICAgcjAKQ2xlYXJpbmcgY2FsbCBsaW5r
IGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1
ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKQ2xlYXJpbmcgY2FsbCBs
aW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhi
NGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKQ2xlYXJpbmcgY2Fs
bCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0g
MHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKQ2xlYXJpbmcg
Y2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxl
ID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKQ2xlYXJp
bmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRh
YmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKQ2xl
YXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVj
dXRhYmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUK
Q2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihl
eGVjdXRhYmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEz
MTUKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0
cihleGVjdXRhYmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJj
IzEzMTUKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBQb2x5bW9ycGhpYyBjYWxsIHN0dWIgZm9yIDxn
bG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1
NTRdLCByZXR1cm4gcG9pbnQgMHhiNGM1ZTAxOSwgdGFyZ2V0cyA8dmFyaWFudCA9IChGdW5jdGlv
bjogQ2VsbDogMHhiNDdmMDQ0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwg
UHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQXJabk9sOlsweGI0NzkxNzEwLT4weGI0
N2Q1NzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0FyWm5PbDpbMHhi
NDc5MTcxMC0+MHhiNDdkNTc0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0g
KEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMzgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5v
bkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFYUdmRzQ6WzB4YjQ3OTE1
YzAtPjB4YjQ3ZDU2NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjRWFH
Zkc0OlsweGI0NzkxNWMwLT4weGI0N2Q1NjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZh
cmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAyYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9u
LCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0Fma1NWSTpb
MHhiNDc5MTQ3MC0+MHhiNDdkNTU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9j
ayA9ICNBZmtTVkk6WzB4YjQ3OTE0NzAtPjB4YjQ3ZDU1NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0
N10+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDIwMCAoMHhiNDdmNzA5MDpb
RnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAj
QnMxWlBwOlsweGI0NzkxMWQwLT4weGI0N2Q1NDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwg
Y29kZUJsb2NrID0gI0JzMVpQcDpbMHhiNDc5MTFkMC0+MHhiNDdkNTQ0MCwgTExJbnRGdW5jdGlv
bkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMTQwICgweGI0
N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1
dGFibGU6ICNCajQ5SFU6WzB4YjQ3OTEwODAtPjB4YjQ3ZDUzNDAsIExMSW50RnVuY3Rpb25DYWxs
LCA0N10pLCBjb2RlQmxvY2sgPSAjQmo0OUhVOlsweGI0NzkxMDgwLT4weGI0N2Q1MzQwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJm
YzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBd
KTsgRXhlY3V0YWJsZTogI0JkMWlnOTpbMHhiNDc5MGYzMC0+MHhiNDdkNTI0MCwgTExJbnRGdW5j
dGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNCZDFpZzk6WzB4YjQ3OTBmMzAtPjB4YjQ3ZDUy
NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDog
MHhiNDc5YmYwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhi
NDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQ2xHNHNYOlsweGI0NzkwZGUwLT4weGI0N2Q1MTQwLCBM
TEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0NsRzRzWDpbMHhiNDc5MGRlMC0+
MHhiNDdkNTE0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9u
OiBDZWxsOiAweGI0NzliZTQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQ
cm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNEUWJ1NmI6WzB4YjQ3OTBjOTAtPjB4YjQ3
ZDUwNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjRFFidTZiOlsweGI0
NzkwYzkwLT4weGI0N2Q1MDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAo
RnVuY3Rpb246IENlbGw6IDB4YjQ3OWJkODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9u
QXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0I2Y1JQODpbMHhiNDc5MGI0
MC0+MHhiNDdkNGY0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDU5XSksIGNvZGVCbG9jayA9ICNCNmNS
UDg6WzB4YjQ3OTBiNDAtPjB4YjQ3ZDRmNDAsIExMSW50RnVuY3Rpb25DYWxsLCA1OV0+LCA8dmFy
aWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmNjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24s
IHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQkFoV1hvOlsw
eGI0NzkwOWYwLT4weGI0N2Q0ZTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNTldKSwgY29kZUJsb2Nr
ID0gI0JBaFdYbzpbMHhiNDc5MDlmMC0+MHhiNDdkNGU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDU5
XT46CiAgICBDb2RlIGF0IFsweGI0YzU0ZDAxLCAweGI0YzU0ZjQxKToKICAgIDB4YjRjNTRkMDA6
ICAgIG1vdncgICByMSwgIzY0OTUyCiAgICAweGI0YzU0ZDA0OiAgICBtb3Z0ICAgcjEsICMxODYK
ICAgIDB4YjRjNTRkMDg6ICAgIG1vdncgICByMTIsICMzMjAKICAgIDB4YjRjNTRkMGM6ICAgIG1v
dnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1NGQxMDogICAgY21wICAgIHIwLCByMTIKICAgIDB4
YjRjNTRkMTQ6ICAgIGJsdCAgICAweGI0YzU0ZTEwCiAgICAweGI0YzU0ZDE4OiAgICBtb3Z3ICAg
cjEyLCAjNzA0CiAgICAweGI0YzU0ZDFjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRj
NTRkMjA6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU0ZDI0OiAgICBibHQgICAgMHhiNGM1
NGRiMgogICAgMHhiNGM1NGQyNjogICAgbW92dyAgIHIxMiwgIzg5NgogICAgMHhiNGM1NGQyYTog
ICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzU0ZDJlOiAgICBjbXAgICAgcjAsIHIxMgog
ICAgMHhiNGM1NGQzMjogICAgYm5lICAgIDB4YjRjNTRkNTQKICAgIDB4YjRjNTRkMzQ6ICAgIGxk
ciAgICByMTIsIFtyMSwgIzRdCiAgICAweGI0YzU0ZDM4OiAgICBhZGR3ICAgcjEyLCByMTIsICMx
CiAgICAweGI0YzU0ZDNjOiAgICBzdHIgICAgcjEyLCBbcjEsICM0XQogICAgMHhiNGM1NGQ0MDog
ICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzU0ZDQ0OiAgICBtb3Z0ICAgcjEyLCAjNDY4
MzIKICAgIDB4YjRjNTRkNDg6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNTRkNGE6ICAgIG5vcCAg
ICAKICAgIDB4YjRjNTRkNGM6ICAgIG5vcCAgICAKICAgIDB4YjRjNTRkNTA6ICAgIGIgICAgICAw
eGI0NDViYzhlCiAgICAweGI0YzU0ZDU0OiAgICBtb3Z3ICAgcjEyLCAjMTA4OAogICAgMHhiNGM1
NGQ1ODogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzU0ZDVjOiAgICBjbXAgICAgcjAs
IHIxMgogICAgMHhiNGM1NGQ2MDogICAgYm5lICAgIDB4YjRjNTRkODIKICAgIDB4YjRjNTRkNjI6
ICAgIGxkciAgICByMTIsIFtyMV0KICAgIDB4YjRjNTRkNjY6ICAgIGFkZHcgICByMTIsIHIxMiwg
IzEKICAgIDB4YjRjNTRkNmE6ICAgIHN0ciAgICByMTIsIFtyMV0KICAgIDB4YjRjNTRkNmU6ICAg
IG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1NGQ3MjogICAgbW92dCAgIHIxMiwgIzQ2ODMy
CiAgICAweGI0YzU0ZDc2OiAgICBibHggICAgcjEyCiAgICAweGI0YzU0ZDc4OiAgICBub3AgICAg
CiAgICAweGI0YzU0ZDdhOiAgICBub3AgICAgCiAgICAweGI0YzU0ZDdlOiAgICBiICAgICAgMHhi
NDQ1YmM4ZQogICAgMHhiNGM1NGQ4MjogICAgbW92dyAgIHIxMiwgIzcwNAogICAgMHhiNGM1NGQ4
NjogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzU0ZDhhOiAgICBjbXAgICAgcjAsIHIx
MgogICAgMHhiNGM1NGQ4ZTogICAgYm5lICAgIDB4YjRjNTRmMDQKICAgIDB4YjRjNTRkOTI6ICAg
IGxkciAgICByMTIsIFtyMSwgIzhdCiAgICAweGI0YzU0ZDk2OiAgICBhZGR3ICAgcjEyLCByMTIs
ICMxCiAgICAweGI0YzU0ZDlhOiAgICBzdHIgICAgcjEyLCBbcjEsICM4XQogICAgMHhiNGM1NGQ5
ZTogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzU0ZGEyOiAgICBtb3Z0ICAgcjEyLCAj
NDY4MzIKICAgIDB4YjRjNTRkYTY6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNTRkYTg6ICAgIG5v
cCAgICAKICAgIDB4YjRjNTRkYWE6ICAgIG5vcCAgICAKICAgIDB4YjRjNTRkYWU6ICAgIGIgICAg
ICAweGI0NDViYzhlCiAgICAweGI0YzU0ZGIyOiAgICBtb3Z3ICAgcjEyLCAjNTEyCiAgICAweGI0
YzU0ZGI2OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNTRkYmE6ICAgIGNtcCAgICBy
MCwgcjEyCiAgICAweGI0YzU0ZGJlOiAgICBibmUgICAgMHhiNGM1NGRlMAogICAgMHhiNGM1NGRj
MDogICAgbGRyICAgIHIxMiwgW3IxLCAjMTJdCiAgICAweGI0YzU0ZGM0OiAgICBhZGR3ICAgcjEy
LCByMTIsICMxCiAgICAweGI0YzU0ZGM4OiAgICBzdHIgICAgcjEyLCBbcjEsICMxMl0KICAgIDB4
YjRjNTRkY2M6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1NGRkMDogICAgbW92dCAg
IHIxMiwgIzQ2ODMyCiAgICAweGI0YzU0ZGQ0OiAgICBibHggICAgcjEyCiAgICAweGI0YzU0ZGQ2
OiAgICBub3AgICAgCiAgICAweGI0YzU0ZGQ4OiAgICBub3AgICAgCiAgICAweGI0YzU0ZGRjOiAg
ICBiICAgICAgMHhiNDQ1YmM4ZQogICAgMHhiNGM1NGRlMDogICAgbW92dyAgIHIxMiwgIzMyMAog
ICAgMHhiNGM1NGRlNDogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzU0ZGU4OiAgICBj
bXAgICAgcjAsIHIxMgogICAgMHhiNGM1NGRlYzogICAgYm5lICAgIDB4YjRjNTRmMDQKICAgIDB4
YjRjNTRkZjA6ICAgIGxkciAgICByMTIsIFtyMSwgIzE2XQogICAgMHhiNGM1NGRmNDogICAgYWRk
dyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NGRmODogICAgc3RyICAgIHIxMiwgW3IxLCAjMTZd
CiAgICAweGI0YzU0ZGZjOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTRlMDA6ICAg
IG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NGUwNDogICAgYmx4ICAgIHIxMgogICAgMHhi
NGM1NGUwNjogICAgbm9wICAgIAogICAgMHhiNGM1NGUwODogICAgbm9wICAgIAogICAgMHhiNGM1
NGUwYzogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTRlMTA6ICAgIG1vdncgICByMTIs
ICM0ODcwNAogICAgMHhiNGM1NGUxNDogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU0
ZTE4OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NGUxYzogICAgYmx0ICAgIDB4YjRjNTRl
YTgKICAgIDB4YjRjNTRlMWU6ICAgIG1vdncgICByMTIsICM0ODg5NgogICAgMHhiNGM1NGUyMjog
ICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU0ZTI2OiAgICBjbXAgICAgcjAsIHIxMgog
ICAgMHhiNGM1NGUyYTogICAgYm5lICAgIDB4YjRjNTRlNGMKICAgIDB4YjRjNTRlMmM6ICAgIGxk
ciAgICByMTIsIFtyMSwgIzI0XQogICAgMHhiNGM1NGUzMDogICAgYWRkdyAgIHIxMiwgcjEyLCAj
MQogICAgMHhiNGM1NGUzNDogICAgc3RyICAgIHIxMiwgW3IxLCAjMjRdCiAgICAweGI0YzU0ZTM4
OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTRlM2M6ICAgIG1vdnQgICByMTIsICM0
NjgzMgogICAgMHhiNGM1NGU0MDogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NGU0MjogICAgbm9w
ICAgIAogICAgMHhiNGM1NGU0NDogICAgbm9wICAgIAogICAgMHhiNGM1NGU0ODogICAgYiAgICAg
IDB4YjQ0NWJjOGUKICAgIDB4YjRjNTRlNGM6ICAgIG1vdncgICByMTIsICM0OTA4OAogICAgMHhi
NGM1NGU1MDogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU0ZTU0OiAgICBjbXAgICAg
cjAsIHIxMgogICAgMHhiNGM1NGU1ODogICAgYm5lICAgIDB4YjRjNTRlN2EKICAgIDB4YjRjNTRl
NWE6ICAgIGxkciAgICByMTIsIFtyMSwgIzIwXQogICAgMHhiNGM1NGU1ZTogICAgYWRkdyAgIHIx
MiwgcjEyLCAjMQogICAgMHhiNGM1NGU2MjogICAgc3RyICAgIHIxMiwgW3IxLCAjMjBdCiAgICAw
eGI0YzU0ZTY2OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTRlNmE6ICAgIG1vdnQg
ICByMTIsICM0NjgzMgogICAgMHhiNGM1NGU2ZTogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NGU3
MDogICAgbm9wICAgIAogICAgMHhiNGM1NGU3MjogICAgbm9wICAgIAogICAgMHhiNGM1NGU3Njog
ICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTRlN2E6ICAgIG1vdncgICByMTIsICM0ODcw
NAogICAgMHhiNGM1NGU3ZTogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU0ZTgyOiAg
ICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NGU4NjogICAgYm5lICAgIDB4YjRjNTRmMDQKICAg
IDB4YjRjNTRlODg6ICAgIGxkciAgICByMTIsIFtyMSwgIzI4XQogICAgMHhiNGM1NGU4YzogICAg
YWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NGU5MDogICAgc3RyICAgIHIxMiwgW3IxLCAj
MjhdCiAgICAweGI0YzU0ZTk0OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTRlOTg6
ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NGU5YzogICAgYmx4ICAgIHIxMgogICAg
MHhiNGM1NGU5ZTogICAgbm9wICAgIAogICAgMHhiNGM1NGVhMDogICAgbm9wICAgIAogICAgMHhi
NGM1NGVhNDogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTRlYTg6ICAgIG1vdncgICBy
MTIsICM0ODMyMAogICAgMHhiNGM1NGVhYzogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0
YzU0ZWIwOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NGViNDogICAgYm5lICAgIDB4YjRj
NTRlZDYKICAgIDB4YjRjNTRlYjY6ICAgIGxkciAgICByMTIsIFtyMSwgIzM2XQogICAgMHhiNGM1
NGViYTogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NGViZTogICAgc3RyICAgIHIx
MiwgW3IxLCAjMzZdCiAgICAweGI0YzU0ZWMyOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4
YjRjNTRlYzY6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NGVjYTogICAgYmx4ICAg
IHIxMgogICAgMHhiNGM1NGVjYzogICAgbm9wICAgIAogICAgMHhiNGM1NGVjZTogICAgbm9wICAg
IAogICAgMHhiNGM1NGVkMjogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTRlZDY6ICAg
IG1vdncgICByMTIsICM0ODUxMgogICAgMHhiNGM1NGVkYTogICAgbW92dCAgIHIxMiwgIzQ2MjAx
CiAgICAweGI0YzU0ZWRlOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NGVlMjogICAgYm5l
ICAgIDB4YjRjNTRmMDQKICAgIDB4YjRjNTRlZTQ6ICAgIGxkciAgICByMTIsIFtyMSwgIzMyXQog
ICAgMHhiNGM1NGVlODogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NGVlYzogICAg
c3RyICAgIHIxMiwgW3IxLCAjMzJdCiAgICAweGI0YzU0ZWYwOiAgICBtb3Z3ICAgcjEyLCAjMzEx
MzcKICAgIDB4YjRjNTRlZjQ6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NGVmODog
ICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NGVmYTogICAgbm9wICAgIAogICAgMHhiNGM1NGVmYzog
ICAgbm9wICAgIAogICAgMHhiNGM1NGYwMDogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRj
NTRmMDQ6ICAgIG12biAgICByMSwgIzQKICAgIDB4YjRjNTRmMDg6ICAgIG1vdncgICByMiwgIzQ1
MzQ0CiAgICAweGI0YzU0ZjBjOiAgICBtb3Z0ICAgcjIsICM0NjI2MwogICAgMHhiNGM1NGYxMDog
ICAgbW92dyAgIHI4LCAjNTczNjkKICAgIDB4YjRjNTRmMTQ6ICAgIG1vdnQgICByOCwgIzQ2Mjc3
CiAgICAweGI0YzU0ZjE4OiAgICBtb3YgICAgbHIsIHI4CiAgICAweGI0YzU0ZjFhOiAgICBtb3Z3
ICAgcjEyLCAjMTU5NjkKICAgIDB4YjRjNTRmMWU6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAg
MHhiNGM1NGYyMjogICAgYnggICAgIHIxMgpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGds
b2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1
NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjA0NDAgKDB4YjQ3ZjcwOTA6
W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTog
I0FyWm5PbDpbMHhiNDc5MTcxMC0+MHhiNDdkNTc0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSks
IGNvZGVCbG9jayA9ICNBclpuT2w6WzB4YjQ3OTE3MTAtPjB4YjQ3ZDU3NDAsIExMSW50RnVuY3Rp
b25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpb
MHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUg
dG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMzgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30s
IE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFYUdmRzQ6WzB4YjQ3
OTE1YzAtPjB4YjQ3ZDU2NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAj
RWFHZkc0OlsweGI0NzkxNWMwLT4weGI0N2Q1NjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddCkxp
bmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4
YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjog
Q2VsbDogMHhiNDdmMDJjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJv
dG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQWZrU1ZJOlsweGI0NzkxNDcwLT4weGI0N2Q1
NTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0Fma1NWSTpbMHhiNDc5
MTQ3MC0+MHhiNDdkNTU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBvbHltb3Jw
aGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNl
bGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAy
MDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBd
KTsgRXhlY3V0YWJsZTogI0JzMVpQcDpbMHhiNDc5MTFkMC0+MHhiNDdkNTQ0MCwgTExJbnRGdW5j
dGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNCczFaUHA6WzB4YjQ3OTExZDAtPjB4YjQ3ZDU0
NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxn
bG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1
NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMTQwICgweGI0N2Y3MDkw
OltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6
ICNCajQ5SFU6WzB4YjQ3OTEwODAtPjB4YjQ3ZDUzNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10p
LCBjb2RlQmxvY2sgPSAjQmo0OUhVOlsweGI0NzkxMDgwLT4weGI0N2Q1MzQwLCBMTEludEZ1bmN0
aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86
WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1
IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmZjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9
LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQmQxaWc5OlsweGI0
NzkwZjMwLT4weGI0N2Q1MjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0g
I0JkMWlnOTpbMHhiNDc5MGYzMC0+MHhiNDdkNTI0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpM
aW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4w
eGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246
IENlbGw6IDB4YjQ3OWJmMDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFBy
b3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0NsRzRzWDpbMHhiNDc5MGRlMC0+MHhiNDdk
NTE0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNDbEc0c1g6WzB4YjQ3
OTBkZTAtPjB4YjQ3ZDUxNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9y
cGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFz
ZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0Nzli
ZTQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUw
XSk7IEV4ZWN1dGFibGU6ICNEUWJ1NmI6WzB4YjQ3OTBjOTAtPjB4YjQ3ZDUwNDAsIExMSW50RnVu
Y3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjRFFidTZiOlsweGI0NzkwYzkwLT4weGI0N2Q1
MDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8
Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAx
NTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmQ4MCAoMHhiNDdmNzA5
MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxl
OiAjQjZjUlA4OlsweGI0NzkwYjQwLT4weGI0N2Q0ZjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNTld
KSwgY29kZUJsb2NrID0gI0I2Y1JQODpbMHhiNDc5MGI0MC0+MHhiNDdkNGY0MCwgTExJbnRGdW5j
dGlvbkNhbGwsIDU5XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklv
OlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMx
NSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJjYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7
fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JBaFdYbzpbMHhi
NDc5MDlmMC0+MHhiNDdkNGU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDU5XSksIGNvZGVCbG9jayA9
ICNCQWhXWG86WzB4YjQ3OTA5ZjAtPjB4YjQ3ZDRlNDAsIExMSW50RnVuY3Rpb25DYWxsLCA1OV0K
R2VuZXJhdGVkIEpJVCBjb2RlIGZvciBWaXJ0dWFsIGNhbGwgc2xvdyBwYXRoIHRodW5rOgogICAg
Q29kZSBhdCBbMHhiNGM1N2YwMSwgMHhiNGM1N2ZjMSk6CiAgICAweGI0YzU3ZjAwOiAgICBsZHIg
ICAgcjEyLCBbcjIsICM1Ml0KICAgIDB4YjRjNTdmMDQ6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEK
ICAgIDB4YjRjNTdmMDg6ICAgIHN0ciAgICByMTIsIFtyMiwgIzUyXQogICAgMHhiNGM1N2YwYzog
ICAgY21uICAgIHIxLCAjNQogICAgMHhiNGM1N2YxMDogICAgYm5lICAgIDB4YjRjNTdmMjgKICAg
IDB4YjRjNTdmMTI6ICAgIGxkcmIgICByNiwgW3IwLCAjNV0KICAgIDB4YjRjNTdmMTQ6ICAgIGNt
cCAgICByMiwgIzIzCiAgICAweGI0YzU3ZjE2OiAgICBibmUgICAgMHhiNGM1N2YyOAogICAgMHhi
NGM1N2YxODogICAgbGRyICAgIHI4LCBbcjAsICMyMF0KICAgIDB4YjRjNTdmMWM6ICAgIGxkciAg
ICByOCwgW3I4LCAjMjhdCiAgICAweGI0YzU3ZjIwOiAgICB0c3QgICAgcjgsIHI4CiAgICAweGI0
YzU3ZjI0OiAgICBiZXEgICAgMHhiNGM1N2YyOAogICAgMHhiNGM1N2YyNjogICAgYnggICAgIHI4
CiAgICAweGI0YzU3ZjI4OiAgICBwdXNoICAge3I3LCBscn0KICAgIDB4YjRjNTdmMmM6ICAgIG1v
diAgICByNywgc3AKICAgIDB4YjRjNTdmMmU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI0
YzU3ZjMyOiAgICBtb3Z0ICAgcjYsICM0NjIwNwogICAgMHhiNGM1N2YzNjogICAgc3RyICAgIHI3
LCBbcjZdCiAgICAweGI0YzU3ZjM4OiAgICBtdm4gICAgcjEyLCAjMjMKICAgIDB4YjRjNTdmM2M6
ICAgIG1vdiAgICBzcCwgc3AKICAgIDB4YjRjNTdmM2U6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAw
eGI0YzU3ZjQwOiAgICBtb3YgICAgcjEsIHIyCiAgICAweGI0YzU3ZjQyOiAgICBtb3YgICAgcjAs
IHI3CiAgICAweGI0YzU3ZjQ0OiAgICBtb3Z3ICAgcjQsICM1MTI3NwogICAgMHhiNGM1N2Y0ODog
ICAgbW92dCAgIHI0LCAjNDY3NzYKICAgIDB4YjRjNTdmNGM6ICAgIGJseCAgICByNAogICAgMHhi
NGM1N2Y0ZTogICAgYWRkICAgIHNwLCBzcCwgIzYKICAgIDB4YjRjNTdmNTA6ICAgIG1vdiAgICBz
cCwgcjcKICAgIDB4YjRjNTdmNTI6ICAgIHBvcCAgICB7cjcsIGxyfQogICAgMHhiNGM1N2Y1Njog
ICAgdHN0ICAgIHIxLCByMQogICAgMHhiNGM1N2Y1ODogICAgYmVxICAgIDB4YjRjNTdmYTgKICAg
IDB4YjRjNTdmNWE6ICAgIG1vdiAgICByNSwgbHIKICAgIDB4YjRjNTdmNWM6ICAgIGxkciAgICBy
MSwgW3I3LCAjMjRdCiAgICAweGI0YzU3ZjVlOiAgICBsZHIgICAgcjMsIFtyNywgIzhdCiAgICAw
eGI0YzU3ZjYwOiAgICBsZHIgICAgcjMsIFtyMywgIzMyXQogICAgMHhiNGM1N2Y2MjogICAgY21w
ICAgIHIzLCByMQogICAgMHhiNGM1N2Y2NDogICAgYmxzICAgIDB4YjRjNTdmNjgKICAgIDB4YjRj
NTdmNjY6ICAgIG1vdiAgICByMSwgcjMKICAgIDB4YjRjNTdmNjg6ICAgIGFkZHMgICByMSwgcjEs
ICM1CiAgICAweGI0YzU3ZjZhOiAgICBtdm4gICAgcjEyLCAjMQogICAgMHhiNGM1N2Y2ZTogICAg
YW5kICAgIHIxLCByMSwgcjEyCiAgICAweGI0YzU3ZjcyOiAgICBtb3YgICAgcjEyLCAjOAogICAg
MHhiNGM1N2Y3NjogICAgc211bGwgIHIxLCByMTIsIHIxLCByMTIKICAgIDB4YjRjNTdmN2E6ICAg
IGFkZHMgICByMywgcjcsIHIxCiAgICAweGI0YzU3ZjdjOiAgICBsZHIgICAgcjEsIFtzcCwgIzE2
XQogICAgMHhiNGM1N2Y3ZTogICAgYWRkcyAgIHIxLCByMSwgIzUKICAgIDB4YjRjNTdmODA6ICAg
IG12biAgICByMTIsICMxCiAgICAweGI0YzU3Zjg0OiAgICBhbmQgICAgcjEsIHIxLCByMTIKICAg
IDB4YjRjNTdmODg6ICAgIG1vdiAgICByMTIsICM4CiAgICAweGI0YzU3ZjhjOiAgICBzbXVsbCAg
cjEsIHIxMiwgcjEsIHIxMgogICAgMHhiNGM1N2Y5MDogICAgbGRyICAgIGxyLCBbcjcsICM0XQog
ICAgMHhiNGM1N2Y5NDogICAgc3VicyAgIHIxLCAjOAogICAgMHhiNGM1N2Y5NjogICAgc3VicyAg
IHIzLCByMywgcjEKICAgIDB4YjRjNTdmOTg6ICAgIGxkciAgICByNywgW3I3XQogICAgMHhiNGM1
N2Y5YTogICAgc3VicyAgIHIxLCByMSwgIzQKICAgIDB4YjRjNTdmOWM6ICAgIGxkciAgICByMiwg
W3NwLCByMV0KICAgIDB4YjRjNTdmYTA6ICAgIHN0ciAgICByMiwgW3IzLCByMV0KICAgIDB4YjRj
NTdmYTI6ICAgIHRzdCAgICByMSwgcjEKICAgIDB4YjRjNTdmYTQ6ICAgIGJuZSAgICAweGI0YzU4
MTlhCiAgICAweGI0YzU3ZmE2OiAgICBtb3YgICAgc3AsIHIzCiAgICAweGI0YzU3ZmE4OiAgICBi
eCAgICAgcjAKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQg
Q29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAx
OCksIGJjIzEzMTUKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwg
YXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1
ZTAxOCksIGJjIzEzMTUKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNh
bGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhi
NGM1ZTAxOCksIGJjIzEzMTUKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGlj
IGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0g
MHhiNGM1ZTAxOCksIGJjIzEzMTUKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3Jw
aGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9u
ID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHlt
b3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0
aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBv
bHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxv
Y2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9y
IHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTAxOSwgZGF0
YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8g
Zm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTAxOSwg
ZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKR2VuZXJhdGVkIEpJVCBjb2RlIGZv
ciBQb2x5bW9ycGhpYyBjYWxsIHN0dWIgZm9yIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+
MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdLCByZXR1cm4gcG9pbnQgMHhiNGM1ZTAx
OSwgdGFyZ2V0cyA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDQ0MCAoMHhiNDdm
NzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRh
YmxlOiAjQXJabk9sOlsweGI0NzkxNzEwLT4weGI0N2Q1NzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NDddKSwgY29kZUJsb2NrID0gI0FyWm5PbDpbMHhiNDc5MTcxMC0+MHhiNDdkNTc0MCwgTExJbnRG
dW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMzgw
ICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7
IEV4ZWN1dGFibGU6ICNFYUdmRzQ6WzB4YjQ3OTE1YzAtPjB4YjQ3ZDU2NDAsIExMSW50RnVuY3Rp
b25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjRWFHZkc0OlsweGI0NzkxNWMwLT4weGI0N2Q1NjQw
LCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4
YjQ3ZjAyYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3
ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0Fma1NWSTpbMHhiNDc5MTQ3MC0+MHhiNDdkNTU0MCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNBZmtTVkk6WzB4YjQ3OTE0NzAtPjB4
YjQ3ZDU1NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10+LCA8dmFyaWFudCA9IChGdW5jdGlvbjog
Q2VsbDogMHhiNDdmMDIwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJv
dG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQnMxWlBwOlsweGI0NzkxMWQwLT4weGI0N2Q1
NDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0JzMVpQcDpbMHhiNDc5
MTFkMC0+MHhiNDdkNTQ0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0gKEZ1
bmN0aW9uOiBDZWxsOiAweGI0N2YwMTQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFy
cmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCajQ5SFU6WzB4YjQ3OTEwODAt
PjB4YjQ3ZDUzNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQmo0OUhV
OlsweGI0NzkxMDgwLT4weGI0N2Q1MzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlh
bnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJmYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7
fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JkMWlnOTpbMHhi
NDc5MGYzMC0+MHhiNDdkNTI0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9
ICNCZDFpZzk6WzB4YjQ3OTBmMzAtPjB4YjQ3ZDUyNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10+
LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmYwMCAoMHhiNDdmNzA5MDpbRnVu
Y3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQ2xH
NHNYOlsweGI0NzkwZGUwLT4weGI0N2Q1MTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29k
ZUJsb2NrID0gI0NsRzRzWDpbMHhiNDc5MGRlMC0+MHhiNDdkNTE0MCwgTExJbnRGdW5jdGlvbkNh
bGwsIDQ3XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliZTQwICgweGI0N2Y3
MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFi
bGU6ICNEUWJ1NmI6WzB4YjQ3OTBjOTAtPjB4YjQ3ZDUwNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0
N10pLCBjb2RlQmxvY2sgPSAjRFFidTZiOlsweGI0NzkwYzkwLT4weGI0N2Q1MDQwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJkODAg
KDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsg
RXhlY3V0YWJsZTogI0I2Y1JQODpbMHhiNDc5MGI0MC0+MHhiNDdkNGY0MCwgTExJbnRGdW5jdGlv
bkNhbGwsIDU5XSksIGNvZGVCbG9jayA9ICNCNmNSUDg6WzB4YjQ3OTBiNDAtPjB4YjQ3ZDRmNDAs
IExMSW50RnVuY3Rpb25DYWxsLCA1OV0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhi
NDc5YmNjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdl
ZGRlMF0pOyBFeGVjdXRhYmxlOiAjQkFoV1hvOlsweGI0NzkwOWYwLT4weGI0N2Q0ZTQwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNTldKSwgY29kZUJsb2NrID0gI0JBaFdYbzpbMHhiNDc5MDlmMC0+MHhi
NDdkNGU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDU5XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBD
ZWxsOiAweGI0NzliYzAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90
bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFV0huQk46WzB4YjQ3OTA4YTAtPjB4YjQ3ZDRk
NDAsIExMSW50RnVuY3Rpb25DYWxsLCA2Ml0pLCBjb2RlQmxvY2sgPSAjRVdIbkJOOlsweGI0Nzkw
OGEwLT4weGI0N2Q0ZDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjJdPjoKICAgIENvZGUgYXQgWzB4
YjRjNTdjMjEsIDB4YjRjNTdlODEpOgogICAgMHhiNGM1N2MyMDogICAgbW92dyAgIHIxLCAjNjUy
MDgKICAgIDB4YjRjNTdjMjQ6ICAgIG1vdnQgICByMSwgIzE4NgogICAgMHhiNGM1N2MyODogICAg
bW92dyAgIHIxMiwgIzMyMAogICAgMHhiNGM1N2MyYzogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAg
ICAweGI0YzU3YzMwOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1N2MzNDogICAgYmx0ICAg
IDB4YjRjNTdkMzAKICAgIDB4YjRjNTdjMzg6ICAgIG1vdncgICByMTIsICM4OTYKICAgIDB4YjRj
NTdjM2M6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1N2M0MDogICAgY21wICAgIHIw
LCByMTIKICAgIDB4YjRjNTdjNDQ6ICAgIGJsdCAgICAweGI0YzU3Y2E0CiAgICAweGI0YzU3YzQ2
OiAgICBtb3Z3ICAgcjEyLCAjMTA4OAogICAgMHhiNGM1N2M0YTogICAgbW92dCAgIHIxMiwgIzQ2
MjA3CiAgICAweGI0YzU3YzRlOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1N2M1MjogICAg
Ym5lICAgIDB4YjRjNTdjNzQKICAgIDB4YjRjNTdjNTQ6ICAgIGxkciAgICByMTIsIFtyMV0KICAg
IDB4YjRjNTdjNTg6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTdjNWM6ICAgIHN0
ciAgICByMTIsIFtyMV0KICAgIDB4YjRjNTdjNjA6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAg
MHhiNGM1N2M2NDogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU3YzY4OiAgICBibHgg
ICAgcjEyCiAgICAweGI0YzU3YzZhOiAgICBub3AgICAgCiAgICAweGI0YzU3YzZjOiAgICBub3Ag
ICAgCiAgICAweGI0YzU3YzcwOiAgICBiICAgICAgMHhiNDQ1YmM4ZQogICAgMHhiNGM1N2M3NDog
ICAgbW92dyAgIHIxMiwgIzg5NgogICAgMHhiNGM1N2M3ODogICAgbW92dCAgIHIxMiwgIzQ2MjA3
CiAgICAweGI0YzU3YzdjOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1N2M4MDogICAgYm5l
ICAgIDB4YjRjNTdlNTIKICAgIDB4YjRjNTdjODQ6ICAgIGxkciAgICByMTIsIFtyMSwgIzRdCiAg
ICAweGI0YzU3Yzg4OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzU3YzhjOiAgICBz
dHIgICAgcjEyLCBbcjEsICM0XQogICAgMHhiNGM1N2M5MDogICAgbW92dyAgIHIxMiwgIzMxMTM3
CiAgICAweGI0YzU3Yzk0OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNTdjOTg6ICAg
IGJseCAgICByMTIKICAgIDB4YjRjNTdjOWE6ICAgIG5vcCAgICAKICAgIDB4YjRjNTdjOWM6ICAg
IG5vcCAgICAKICAgIDB4YjRjNTdjYTA6ICAgIGIgICAgICAweGI0NDViYzhlCiAgICAweGI0YzU3
Y2E0OiAgICBtb3Z3ICAgcjEyLCAjMzIwCiAgICAweGI0YzU3Y2E4OiAgICBtb3Z0ICAgcjEyLCAj
NDYyMDcKICAgIDB4YjRjNTdjYWM6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU3Y2IwOiAg
ICBibmUgICAgMHhiNGM1N2NkMgogICAgMHhiNGM1N2NiMjogICAgbGRyICAgIHIxMiwgW3IxLCAj
MTZdCiAgICAweGI0YzU3Y2I2OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzU3Y2Jh
OiAgICBzdHIgICAgcjEyLCBbcjEsICMxNl0KICAgIDB4YjRjNTdjYmU6ICAgIG1vdncgICByMTIs
ICMzMTEzNwogICAgMHhiNGM1N2NjMjogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU3
Y2M2OiAgICBibHggICAgcjEyCiAgICAweGI0YzU3Y2M4OiAgICBub3AgICAgCiAgICAweGI0YzU3
Y2NhOiAgICBub3AgICAgCiAgICAweGI0YzU3Y2NlOiAgICBiICAgICAgMHhiNDQ1YmM4ZQogICAg
MHhiNGM1N2NkMjogICAgbW92dyAgIHIxMiwgIzUxMgogICAgMHhiNGM1N2NkNjogICAgbW92dCAg
IHIxMiwgIzQ2MjA3CiAgICAweGI0YzU3Y2RhOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1
N2NkZTogICAgYm5lICAgIDB4YjRjNTdkMDAKICAgIDB4YjRjNTdjZTA6ICAgIGxkciAgICByMTIs
IFtyMSwgIzEyXQogICAgMHhiNGM1N2NlNDogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhi
NGM1N2NlODogICAgc3RyICAgIHIxMiwgW3IxLCAjMTJdCiAgICAweGI0YzU3Y2VjOiAgICBtb3Z3
ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTdjZjA6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAg
MHhiNGM1N2NmNDogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1N2NmNjogICAgbm9wICAgIAogICAg
MHhiNGM1N2NmODogICAgbm9wICAgIAogICAgMHhiNGM1N2NmYzogICAgYiAgICAgIDB4YjQ0NWJj
OGUKICAgIDB4YjRjNTdkMDA6ICAgIG1vdncgICByMTIsICM3MDQKICAgIDB4YjRjNTdkMDQ6ICAg
IG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1N2QwODogICAgY21wICAgIHIwLCByMTIKICAg
IDB4YjRjNTdkMGM6ICAgIGJuZSAgICAweGI0YzU3ZTUyCiAgICAweGI0YzU3ZDEwOiAgICBsZHIg
ICAgcjEyLCBbcjEsICM4XQogICAgMHhiNGM1N2QxNDogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQog
ICAgMHhiNGM1N2QxODogICAgc3RyICAgIHIxMiwgW3IxLCAjOF0KICAgIDB4YjRjNTdkMWM6ICAg
IG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1N2QyMDogICAgbW92dCAgIHIxMiwgIzQ2ODMy
CiAgICAweGI0YzU3ZDI0OiAgICBibHggICAgcjEyCiAgICAweGI0YzU3ZDI2OiAgICBub3AgICAg
CiAgICAweGI0YzU3ZDI4OiAgICBub3AgICAgCiAgICAweGI0YzU3ZDJjOiAgICBiICAgICAgMHhi
NDQ1YmM4ZQogICAgMHhiNGM1N2QzMDogICAgbW92dyAgIHIxMiwgIzQ4NzA0CiAgICAweGI0YzU3
ZDM0OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNTdkMzg6ICAgIGNtcCAgICByMCwg
cjEyCiAgICAweGI0YzU3ZDNjOiAgICBibHQgICAgMHhiNGM1N2RjOAogICAgMHhiNGM1N2QzZTog
ICAgbW92dyAgIHIxMiwgIzQ4ODk2CiAgICAweGI0YzU3ZDQyOiAgICBtb3Z0ICAgcjEyLCAjNDYy
MDEKICAgIDB4YjRjNTdkNDY6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU3ZDRhOiAgICBi
bmUgICAgMHhiNGM1N2Q2YwogICAgMHhiNGM1N2Q0YzogICAgbGRyICAgIHIxMiwgW3IxLCAjMjRd
CiAgICAweGI0YzU3ZDUwOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzU3ZDU0OiAg
ICBzdHIgICAgcjEyLCBbcjEsICMyNF0KICAgIDB4YjRjNTdkNTg6ICAgIG1vdncgICByMTIsICMz
MTEzNwogICAgMHhiNGM1N2Q1YzogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU3ZDYw
OiAgICBibHggICAgcjEyCiAgICAweGI0YzU3ZDYyOiAgICBub3AgICAgCiAgICAweGI0YzU3ZDY0
OiAgICBub3AgICAgCiAgICAweGI0YzU3ZDY4OiAgICBiICAgICAgMHhiNDQ1YmM4ZQogICAgMHhi
NGM1N2Q2YzogICAgbW92dyAgIHIxMiwgIzQ5MDg4CiAgICAweGI0YzU3ZDcwOiAgICBtb3Z0ICAg
cjEyLCAjNDYyMDEKICAgIDB4YjRjNTdkNzQ6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU3
ZDc4OiAgICBibmUgICAgMHhiNGM1N2Q5YQogICAgMHhiNGM1N2Q3YTogICAgbGRyICAgIHIxMiwg
W3IxLCAjMjBdCiAgICAweGI0YzU3ZDdlOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0
YzU3ZDgyOiAgICBzdHIgICAgcjEyLCBbcjEsICMyMF0KICAgIDB4YjRjNTdkODY6ICAgIG1vdncg
ICByMTIsICMzMTEzNwogICAgMHhiNGM1N2Q4YTogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAw
eGI0YzU3ZDhlOiAgICBibHggICAgcjEyCiAgICAweGI0YzU3ZDkwOiAgICBub3AgICAgCiAgICAw
eGI0YzU3ZDkyOiAgICBub3AgICAgCiAgICAweGI0YzU3ZDk2OiAgICBiICAgICAgMHhiNDQ1YmM4
ZQogICAgMHhiNGM1N2Q5YTogICAgbW92dyAgIHIxMiwgIzQ4NzA0CiAgICAweGI0YzU3ZDllOiAg
ICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNTdkYTI6ICAgIGNtcCAgICByMCwgcjEyCiAg
ICAweGI0YzU3ZGE2OiAgICBibmUgICAgMHhiNGM1N2U1MgogICAgMHhiNGM1N2RhODogICAgbGRy
ICAgIHIxMiwgW3IxLCAjMjhdCiAgICAweGI0YzU3ZGFjOiAgICBhZGR3ICAgcjEyLCByMTIsICMx
CiAgICAweGI0YzU3ZGIwOiAgICBzdHIgICAgcjEyLCBbcjEsICMyOF0KICAgIDB4YjRjNTdkYjQ6
ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1N2RiODogICAgbW92dCAgIHIxMiwgIzQ2
ODMyCiAgICAweGI0YzU3ZGJjOiAgICBibHggICAgcjEyCiAgICAweGI0YzU3ZGJlOiAgICBub3Ag
ICAgCiAgICAweGI0YzU3ZGMwOiAgICBub3AgICAgCiAgICAweGI0YzU3ZGM0OiAgICBiICAgICAg
MHhiNDQ1YmM4ZQogICAgMHhiNGM1N2RjODogICAgbW92dyAgIHIxMiwgIzQ4NTEyCiAgICAweGI0
YzU3ZGNjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNTdkZDA6ICAgIGNtcCAgICBy
MCwgcjEyCiAgICAweGI0YzU3ZGQ0OiAgICBibmUgICAgMHhiNGM1N2RmNgogICAgMHhiNGM1N2Rk
NjogICAgbGRyICAgIHIxMiwgW3IxLCAjMzJdCiAgICAweGI0YzU3ZGRhOiAgICBhZGR3ICAgcjEy
LCByMTIsICMxCiAgICAweGI0YzU3ZGRlOiAgICBzdHIgICAgcjEyLCBbcjEsICMzMl0KICAgIDB4
YjRjNTdkZTI6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1N2RlNjogICAgbW92dCAg
IHIxMiwgIzQ2ODMyCiAgICAweGI0YzU3ZGVhOiAgICBibHggICAgcjEyCiAgICAweGI0YzU3ZGVj
OiAgICBub3AgICAgCiAgICAweGI0YzU3ZGVlOiAgICBub3AgICAgCiAgICAweGI0YzU3ZGYyOiAg
ICBiICAgICAgMHhiNDQ1YmM4ZQogICAgMHhiNGM1N2RmNjogICAgbW92dyAgIHIxMiwgIzQ4MzIw
CiAgICAweGI0YzU3ZGZhOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNTdkZmU6ICAg
IGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU3ZTAyOiAgICBibmUgICAgMHhiNGM1N2UyNAogICAg
MHhiNGM1N2UwNDogICAgbGRyICAgIHIxMiwgW3IxLCAjMzZdCiAgICAweGI0YzU3ZTA4OiAgICBh
ZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzU3ZTBjOiAgICBzdHIgICAgcjEyLCBbcjEsICMz
Nl0KICAgIDB4YjRjNTdlMTA6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1N2UxNDog
ICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU3ZTE4OiAgICBibHggICAgcjEyCiAgICAw
eGI0YzU3ZTFhOiAgICBub3AgICAgCiAgICAweGI0YzU3ZTFjOiAgICBub3AgICAgCiAgICAweGI0
YzU3ZTIwOiAgICBiICAgICAgMHhiNDQ1YmM4ZQogICAgMHhiNGM1N2UyNDogICAgbW92dyAgIHIx
MiwgIzQ4MTI4CiAgICAweGI0YzU3ZTI4OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRj
NTdlMmM6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU3ZTMwOiAgICBibmUgICAgMHhiNGM1
N2U1MgogICAgMHhiNGM1N2UzMjogICAgbGRyICAgIHIxMiwgW3IxLCAjNDBdCiAgICAweGI0YzU3
ZTM2OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzU3ZTNhOiAgICBzdHIgICAgcjEy
LCBbcjEsICM0MF0KICAgIDB4YjRjNTdlM2U6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhi
NGM1N2U0MjogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU3ZTQ2OiAgICBibHggICAg
cjEyCiAgICAweGI0YzU3ZTQ4OiAgICBub3AgICAgCiAgICAweGI0YzU3ZTRhOiAgICBub3AgICAg
CiAgICAweGI0YzU3ZTRlOiAgICBiICAgICAgMHhiNDQ1YmM4ZQogICAgMHhiNGM1N2U1MjogICAg
bXZuICAgIHIxLCAjNAogICAgMHhiNGM1N2U1NjogICAgbW92dyAgIHIyLCAjNDUzNDQKICAgIDB4
YjRjNTdlNWE6ICAgIG1vdnQgICByMiwgIzQ2MjYzCiAgICAweGI0YzU3ZTVlOiAgICBtb3Z3ICAg
cjgsICM1NzM2OQogICAgMHhiNGM1N2U2MjogICAgbW92dCAgIHI4LCAjNDYyNzcKICAgIDB4YjRj
NTdlNjY6ICAgIG1vdiAgICBsciwgcjgKICAgIDB4YjRjNTdlNjg6ICAgIG1vdncgICByMTIsICMx
NTk2OQogICAgMHhiNGM1N2U2YzogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU3ZTcw
OiAgICBieCAgICAgcjEyCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6
SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMx
MzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDQ0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24s
IHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQXJabk9sOlsw
eGI0NzkxNzEwLT4weGI0N2Q1NzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2Nr
ID0gI0FyWm5PbDpbMHhiNDc5MTcxMC0+MHhiNDdkNTc0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3
XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcw
LT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rp
b246IENlbGw6IDB4YjQ3ZjAzODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXks
IFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0VhR2ZHNDpbMHhiNDc5MTVjMC0+MHhi
NDdkNTY0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNFYUdmRzQ6WzB4
YjQ3OTE1YzAtPjB4YjQ3ZDU2NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10KTGlua2luZyBwb2x5
bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwg
QmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0
N2YwMmMwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2Vk
ZGUwXSk7IEV4ZWN1dGFibGU6ICNBZmtTVkk6WzB4YjQ3OTE0NzAtPjB4YjQ3ZDU1NDAsIExMSW50
RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQWZrU1ZJOlsweGI0NzkxNDcwLT4weGI0
N2Q1NTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBp
biA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFs
LCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDIwMCAoMHhiNDdm
NzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRh
YmxlOiAjQnMxWlBwOlsweGI0NzkxMWQwLT4weGI0N2Q1NDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NDddKSwgY29kZUJsb2NrID0gI0JzMVpQcDpbMHhiNDc5MTFkMC0+MHhiNDdkNTQ0MCwgTExJbnRG
dW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQ
eklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMj
MTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAxNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9u
LCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JqNDlIVTpb
MHhiNDc5MTA4MC0+MHhiNDdkNTM0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9j
ayA9ICNCajQ5SFU6WzB4YjQ3OTEwODAtPjB4YjQ3ZDUzNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0
N10KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3
MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0
aW9uOiBDZWxsOiAweGI0NzliZmMwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5
LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCZDFpZzk6WzB4YjQ3OTBmMzAtPjB4
YjQ3ZDUyNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQmQxaWc5Olsw
eGI0NzkwZjMwLT4weGI0N2Q1MjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9s
eW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAs
IEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhi
NDc5YmYwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdl
ZGRlMF0pOyBFeGVjdXRhYmxlOiAjQ2xHNHNYOlsweGI0NzkwZGUwLT4weGI0N2Q1MTQwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0NsRzRzWDpbMHhiNDc5MGRlMC0+MHhi
NDdkNTE0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwg
aW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2Jh
bCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJlNDAgKDB4YjQ3
ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0
YWJsZTogI0RRYnU2YjpbMHhiNDc5MGM5MC0+MHhiNDdkNTA0MCwgTExJbnRGdW5jdGlvbkNhbGws
IDQ3XSksIGNvZGVCbG9jayA9ICNEUWJ1NmI6WzB4YjQ3OTBjOTAtPjB4YjQ3ZDUwNDAsIExMSW50
RnVuY3Rpb25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5
UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJj
IzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliZDgwICgweGI0N2Y3MDkwOltGdW5jdGlv
biwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCNmNSUDg6
WzB4YjQ3OTBiNDAtPjB4YjQ3ZDRmNDAsIExMSW50RnVuY3Rpb25DYWxsLCA1OV0pLCBjb2RlQmxv
Y2sgPSAjQjZjUlA4OlsweGI0NzkwYjQwLT4weGI0N2Q0ZjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NTldCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNl
NzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5j
dGlvbjogQ2VsbDogMHhiNDc5YmNjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJh
eSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQkFoV1hvOlsweGI0NzkwOWYwLT4w
eGI0N2Q0ZTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNTldKSwgY29kZUJsb2NrID0gI0JBaFdYbzpb
MHhiNDc5MDlmMC0+MHhiNDdkNGU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDU5XQpMaW5raW5nIHBv
bHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUw
LCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4
YjQ3OWJjMDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3
ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0VXSG5CTjpbMHhiNDc5MDhhMC0+MHhiNDdkNGQ0MCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDYyXSksIGNvZGVCbG9jayA9ICNFV0huQk46WzB4YjQ3OTA4YTAtPjB4
YjQ3ZDRkNDAsIExMSW50RnVuY3Rpb25DYWxsLCA2Ml0KR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBW
aXJ0dWFsIGNhbGwgc2xvdyBwYXRoIHRodW5rOgogICAgQ29kZSBhdCBbMHhiNGM1N2IyMSwgMHhi
NGM1N2JlMSk6CiAgICAweGI0YzU3YjIwOiAgICBsZHIgICAgcjEyLCBbcjIsICM1Ml0KICAgIDB4
YjRjNTdiMjQ6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTdiMjg6ICAgIHN0ciAg
ICByMTIsIFtyMiwgIzUyXQogICAgMHhiNGM1N2IyYzogICAgY21uICAgIHIxLCAjNQogICAgMHhi
NGM1N2IzMDogICAgYm5lICAgIDB4YjRjNTdiNDgKICAgIDB4YjRjNTdiMzI6ICAgIGxkcmIgICBy
NiwgW3IwLCAjNV0KICAgIDB4YjRjNTdiMzQ6ICAgIGNtcCAgICByMiwgIzIzCiAgICAweGI0YzU3
YjM2OiAgICBibmUgICAgMHhiNGM1N2I0OAogICAgMHhiNGM1N2IzODogICAgbGRyICAgIHI4LCBb
cjAsICMyMF0KICAgIDB4YjRjNTdiM2M6ICAgIGxkciAgICByOCwgW3I4LCAjMjhdCiAgICAweGI0
YzU3YjQwOiAgICB0c3QgICAgcjgsIHI4CiAgICAweGI0YzU3YjQ0OiAgICBiZXEgICAgMHhiNGM1
N2I0OAogICAgMHhiNGM1N2I0NjogICAgYnggICAgIHI4CiAgICAweGI0YzU3YjQ4OiAgICBwdXNo
ICAge3I3LCBscn0KICAgIDB4YjRjNTdiNGM6ICAgIG1vdiAgICByNywgc3AKICAgIDB4YjRjNTdi
NGU6ICAgIG1vdncgICByNiwgIzQyMTI4CiAgICAweGI0YzU3YjUyOiAgICBtb3Z0ICAgcjYsICM0
NjIwNwogICAgMHhiNGM1N2I1NjogICAgc3RyICAgIHI3LCBbcjZdCiAgICAweGI0YzU3YjU4OiAg
ICBtdm4gICAgcjEyLCAjMjMKICAgIDB4YjRjNTdiNWM6ICAgIG1vdiAgICBzcCwgc3AKICAgIDB4
YjRjNTdiNWU6ICAgIGFkZCAgICBzcCwgcjEyCiAgICAweGI0YzU3YjYwOiAgICBtb3YgICAgcjEs
IHIyCiAgICAweGI0YzU3YjYyOiAgICBtb3YgICAgcjAsIHI3CiAgICAweGI0YzU3YjY0OiAgICBt
b3Z3ICAgcjQsICM1MTI3NwogICAgMHhiNGM1N2I2ODogICAgbW92dCAgIHI0LCAjNDY3NzYKICAg
IDB4YjRjNTdiNmM6ICAgIGJseCAgICByNAogICAgMHhiNGM1N2I2ZTogICAgYWRkICAgIHNwLCBz
cCwgIzYKICAgIDB4YjRjNTdiNzA6ICAgIG1vdiAgICBzcCwgcjcKICAgIDB4YjRjNTdiNzI6ICAg
IHBvcCAgICB7cjcsIGxyfQogICAgMHhiNGM1N2I3NjogICAgdHN0ICAgIHIxLCByMQogICAgMHhi
NGM1N2I3ODogICAgYmVxICAgIDB4YjRjNTdiYzgKICAgIDB4YjRjNTdiN2E6ICAgIG1vdiAgICBy
NSwgbHIKICAgIDB4YjRjNTdiN2M6ICAgIGxkciAgICByMSwgW3I3LCAjMjRdCiAgICAweGI0YzU3
YjdlOiAgICBsZHIgICAgcjMsIFtyNywgIzhdCiAgICAweGI0YzU3YjgwOiAgICBsZHIgICAgcjMs
IFtyMywgIzMyXQogICAgMHhiNGM1N2I4MjogICAgY21wICAgIHIzLCByMQogICAgMHhiNGM1N2I4
NDogICAgYmxzICAgIDB4YjRjNTdiODgKICAgIDB4YjRjNTdiODY6ICAgIG1vdiAgICByMSwgcjMK
ICAgIDB4YjRjNTdiODg6ICAgIGFkZHMgICByMSwgcjEsICM1CiAgICAweGI0YzU3YjhhOiAgICBt
dm4gICAgcjEyLCAjMQogICAgMHhiNGM1N2I4ZTogICAgYW5kICAgIHIxLCByMSwgcjEyCiAgICAw
eGI0YzU3YjkyOiAgICBtb3YgICAgcjEyLCAjOAogICAgMHhiNGM1N2I5NjogICAgc211bGwgIHIx
LCByMTIsIHIxLCByMTIKICAgIDB4YjRjNTdiOWE6ICAgIGFkZHMgICByMywgcjcsIHIxCiAgICAw
eGI0YzU3YjljOiAgICBsZHIgICAgcjEsIFtzcCwgIzE2XQogICAgMHhiNGM1N2I5ZTogICAgYWRk
cyAgIHIxLCByMSwgIzUKICAgIDB4YjRjNTdiYTA6ICAgIG12biAgICByMTIsICMxCiAgICAweGI0
YzU3YmE0OiAgICBhbmQgICAgcjEsIHIxLCByMTIKICAgIDB4YjRjNTdiYTg6ICAgIG1vdiAgICBy
MTIsICM4CiAgICAweGI0YzU3YmFjOiAgICBzbXVsbCAgcjEsIHIxMiwgcjEsIHIxMgogICAgMHhi
NGM1N2JiMDogICAgbGRyICAgIGxyLCBbcjcsICM0XQogICAgMHhiNGM1N2JiNDogICAgc3VicyAg
IHIxLCAjOAogICAgMHhiNGM1N2JiNjogICAgc3VicyAgIHIzLCByMywgcjEKICAgIDB4YjRjNTdi
Yjg6ICAgIGxkciAgICByNywgW3I3XQogICAgMHhiNGM1N2JiYTogICAgc3VicyAgIHIxLCByMSwg
IzQKICAgIDB4YjRjNTdiYmM6ICAgIGxkciAgICByMiwgW3NwLCByMV0KICAgIDB4YjRjNTdiYzA6
ICAgIHN0ciAgICByMiwgW3IzLCByMV0KICAgIDB4YjRjNTdiYzI6ICAgIHRzdCAgICByMSwgcjEK
ICAgIDB4YjRjNTdiYzQ6ICAgIGJuZSAgICAweGI0YzU3ZGJhCiAgICAweGI0YzU3YmM2OiAgICBt
b3YgICAgc3AsIHIzCiAgICAweGI0YzU3YmM4OiAgICBieCAgICAgcjAKQ2xlYXJpbmcgY2FsbCBs
aW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhi
NGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKQ2xlYXJpbmcgY2Fs
bCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxlID0g
MHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKQ2xlYXJpbmcg
Y2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRhYmxl
ID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKQ2xlYXJp
bmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVjdXRh
YmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUKQ2xl
YXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihleGVj
dXRhYmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEzMTUK
Q2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0cihl
eGVjdXRhYmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJjIzEz
MTUKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29kZVB0
cihleGVjdXRhYmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCksIGJj
IzEzMTUKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQgQ29k
ZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAxOCks
IGJjIzEzMTUKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwgYXQg
Q29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1ZTAx
OCksIGJjIzEzMTUKQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNhbGwg
YXQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1ZTAxOSwgZGF0YUxvY2F0aW9uID0gMHhiNGM1
ZTAxOCksIGJjIzEzMTUKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBQb2x5bW9ycGhpYyBjYWxsIHN0
dWIgZm9yIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVH
bG9iYWwsIDE1NTRdLCByZXR1cm4gcG9pbnQgMHhiNGM1ZTAxOSwgdGFyZ2V0cyA8dmFyaWFudCA9
IChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDQ0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBO
b25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQXJabk9sOlsweGI0Nzkx
NzEwLT4weGI0N2Q1NzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0Fy
Wm5PbDpbMHhiNDc5MTcxMC0+MHhiNDdkNTc0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2
YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMzgwICgweGI0N2Y3MDkwOltGdW5jdGlv
biwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFYUdmRzQ6
WzB4YjQ3OTE1YzAtPjB4YjQ3ZDU2NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxv
Y2sgPSAjRWFHZkc0OlsweGI0NzkxNWMwLT4weGI0N2Q1NjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NDddPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAyYzAgKDB4YjQ3ZjcwOTA6
W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTog
I0Fma1NWSTpbMHhiNDc5MTQ3MC0+MHhiNDdkNTU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSks
IGNvZGVCbG9jayA9ICNBZmtTVkk6WzB4YjQ3OTE0NzAtPjB4YjQ3ZDU1NDAsIExMSW50RnVuY3Rp
b25DYWxsLCA0N10+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDIwMCAoMHhi
NDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVj
dXRhYmxlOiAjQnMxWlBwOlsweGI0NzkxMWQwLT4weGI0N2Q1NDQwLCBMTEludEZ1bmN0aW9uQ2Fs
bCwgNDddKSwgY29kZUJsb2NrID0gI0JzMVpQcDpbMHhiNDc5MTFkMC0+MHhiNDdkNTQ0MCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2Yw
MTQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUw
XSk7IEV4ZWN1dGFibGU6ICNCajQ5SFU6WzB4YjQ3OTEwODAtPjB4YjQ3ZDUzNDAsIExMSW50RnVu
Y3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQmo0OUhVOlsweGI0NzkxMDgwLT4weGI0N2Q1
MzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6
IDB4YjQ3OWJmYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4
YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JkMWlnOTpbMHhiNDc5MGYzMC0+MHhiNDdkNTI0MCwg
TExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNCZDFpZzk6WzB4YjQ3OTBmMzAt
PjB4YjQ3ZDUyNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10+LCA8dmFyaWFudCA9IChGdW5jdGlv
bjogQ2VsbDogMHhiNDc5YmYwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwg
UHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQ2xHNHNYOlsweGI0NzkwZGUwLT4weGI0
N2Q1MTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0NsRzRzWDpbMHhi
NDc5MGRlMC0+MHhiNDdkNTE0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0g
KEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliZTQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5v
bkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNEUWJ1NmI6WzB4YjQ3OTBj
OTAtPjB4YjQ3ZDUwNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjRFFi
dTZiOlsweGI0NzkwYzkwLT4weGI0N2Q1MDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZh
cmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJkODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9u
LCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0I2Y1JQODpb
MHhiNDc5MGI0MC0+MHhiNDdkNGY0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDU5XSksIGNvZGVCbG9j
ayA9ICNCNmNSUDg6WzB4YjQ3OTBiNDAtPjB4YjQ3ZDRmNDAsIExMSW50RnVuY3Rpb25DYWxsLCA1
OV0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmNjMCAoMHhiNDdmNzA5MDpb
RnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAj
QkFoV1hvOlsweGI0NzkwOWYwLT4weGI0N2Q0ZTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNTldKSwg
Y29kZUJsb2NrID0gI0JBaFdYbzpbMHhiNDc5MDlmMC0+MHhiNDdkNGU0MCwgTExJbnRGdW5jdGlv
bkNhbGwsIDU5XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYzAwICgweGI0
N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1
dGFibGU6ICNFV0huQk46WzB4YjQ3OTA4YTAtPjB4YjQ3ZDRkNDAsIExMSW50RnVuY3Rpb25DYWxs
LCA2Ml0pLCBjb2RlQmxvY2sgPSAjRVdIbkJOOlsweGI0NzkwOGEwLT4weGI0N2Q0ZDQwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNjJdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJi
NDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBd
KTsgRXhlY3V0YWJsZTogI0RMYzlBMzpbMHhiNDc5MDc1MC0+MHhiNDdkNGM0MCwgTExJbnRGdW5j
dGlvbkNhbGwsIDY4XSksIGNvZGVCbG9jayA9ICNETGM5QTM6WzB4YjQ3OTA3NTAtPjB4YjQ3ZDRj
NDAsIExMSW50RnVuY3Rpb25DYWxsLCA2OF0+OgogICAgQ29kZSBhdCBbMHhiNGM1NzgwMSwgMHhi
NGM1N2E4MSk6CiAgICAweGI0YzU3ODAwOiAgICBtb3Z3ICAgcjEsICM2NTI1NgogICAgMHhiNGM1
NzgwNDogICAgbW92dCAgIHIxLCAjMTg2CiAgICAweGI0YzU3ODA4OiAgICBtb3Z3ICAgcjEyLCAj
NDkwODgKICAgIDB4YjRjNTc4MGM6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1Nzgx
MDogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTc4MTQ6ICAgIGJsdCAgICAweGI0YzU3OTNl
CiAgICAweGI0YzU3ODE4OiAgICBtb3Z3ICAgcjEyLCAjNzA0CiAgICAweGI0YzU3ODFjOiAgICBt
b3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNTc4MjA6ICAgIGNtcCAgICByMCwgcjEyCiAgICAw
eGI0YzU3ODI0OiAgICBibHQgICAgMHhiNGM1NzhiMgogICAgMHhiNGM1NzgyNjogICAgbW92dyAg
IHIxMiwgIzEwODgKICAgIDB4YjRjNTc4MmE6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhi
NGM1NzgyZTogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTc4MzI6ICAgIGJuZSAgICAweGI0
YzU3ODU0CiAgICAweGI0YzU3ODM0OiAgICBsZHIgICAgcjEyLCBbcjFdCiAgICAweGI0YzU3ODM4
OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzU3ODNjOiAgICBzdHIgICAgcjEyLCBb
cjFdCiAgICAweGI0YzU3ODQwOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTc4NDQ6
ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1Nzg0ODogICAgYmx4ICAgIHIxMgogICAg
MHhiNGM1Nzg0YTogICAgbm9wICAgIAogICAgMHhiNGM1Nzg0YzogICAgbm9wICAgIAogICAgMHhi
NGM1Nzg1MDogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTc4NTQ6ICAgIG1vdncgICBy
MTIsICM3MDQKICAgIDB4YjRjNTc4NTg6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1
Nzg1YzogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTc4NjA6ICAgIGJuZSAgICAweGI0YzU3
ODgyCiAgICAweGI0YzU3ODYyOiAgICBsZHIgICAgcjEyLCBbcjEsICM4XQogICAgMHhiNGM1Nzg2
NjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1Nzg2YTogICAgc3RyICAgIHIxMiwg
W3IxLCAjOF0KICAgIDB4YjRjNTc4NmU6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1
Nzg3MjogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU3ODc2OiAgICBibHggICAgcjEy
CiAgICAweGI0YzU3ODc4OiAgICBub3AgICAgCiAgICAweGI0YzU3ODdhOiAgICBub3AgICAgCiAg
ICAweGI0YzU3ODdlOiAgICBiICAgICAgMHhiNDQ1YmM4ZQogICAgMHhiNGM1Nzg4MjogICAgbW92
dyAgIHIxMiwgIzg5NgogICAgMHhiNGM1Nzg4NjogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAw
eGI0YzU3ODhhOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1Nzg4ZTogICAgYm5lICAgIDB4
YjRjNTdhNjAKICAgIDB4YjRjNTc4OTI6ICAgIGxkciAgICByMTIsIFtyMSwgIzRdCiAgICAweGI0
YzU3ODk2OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzU3ODlhOiAgICBzdHIgICAg
cjEyLCBbcjEsICM0XQogICAgMHhiNGM1Nzg5ZTogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAw
eGI0YzU3OGEyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNTc4YTY6ICAgIGJseCAg
ICByMTIKICAgIDB4YjRjNTc4YTg6ICAgIG5vcCAgICAKICAgIDB4YjRjNTc4YWE6ICAgIG5vcCAg
ICAKICAgIDB4YjRjNTc4YWU6ICAgIGIgICAgICAweGI0NDViYzhlCiAgICAweGI0YzU3OGIyOiAg
ICBtb3Z3ICAgcjEyLCAjNTEyCiAgICAweGI0YzU3OGI2OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcK
ICAgIDB4YjRjNTc4YmE6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU3OGJlOiAgICBibmUg
ICAgMHhiNGM1NzhlMAogICAgMHhiNGM1NzhjMDogICAgbGRyICAgIHIxMiwgW3IxLCAjMTJdCiAg
ICAweGI0YzU3OGM0OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzU3OGM4OiAgICBz
dHIgICAgcjEyLCBbcjEsICMxMl0KICAgIDB4YjRjNTc4Y2M6ICAgIG1vdncgICByMTIsICMzMTEz
NwogICAgMHhiNGM1NzhkMDogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU3OGQ0OiAg
ICBibHggICAgcjEyCiAgICAweGI0YzU3OGQ2OiAgICBub3AgICAgCiAgICAweGI0YzU3OGQ4OiAg
ICBub3AgICAgCiAgICAweGI0YzU3OGRjOiAgICBiICAgICAgMHhiNDQ1YmM4ZQogICAgMHhiNGM1
NzhlMDogICAgbW92dyAgIHIxMiwgIzQ5MDg4CiAgICAweGI0YzU3OGU0OiAgICBtb3Z0ICAgcjEy
LCAjNDYyMDEKICAgIDB4YjRjNTc4ZTg6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU3OGVj
OiAgICBibmUgICAgMHhiNGM1NzkwZQogICAgMHhiNGM1NzhlZTogICAgbGRyICAgIHIxMiwgW3Ix
LCAjMjBdCiAgICAweGI0YzU3OGYyOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzU3
OGY2OiAgICBzdHIgICAgcjEyLCBbcjEsICMyMF0KICAgIDB4YjRjNTc4ZmE6ICAgIG1vdncgICBy
MTIsICMzMTEzNwogICAgMHhiNGM1NzhmZTogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0
YzU3OTAyOiAgICBibHggICAgcjEyCiAgICAweGI0YzU3OTA0OiAgICBub3AgICAgCiAgICAweGI0
YzU3OTA2OiAgICBub3AgICAgCiAgICAweGI0YzU3OTBhOiAgICBiICAgICAgMHhiNDQ1YmM4ZQog
ICAgMHhiNGM1NzkwZTogICAgbW92dyAgIHIxMiwgIzMyMAogICAgMHhiNGM1NzkxMjogICAgbW92
dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzU3OTE2OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhi
NGM1NzkxYTogICAgYm5lICAgIDB4YjRjNTdhNjAKICAgIDB4YjRjNTc5MWU6ICAgIGxkciAgICBy
MTIsIFtyMSwgIzE2XQogICAgMHhiNGM1NzkyMjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAg
MHhiNGM1NzkyNjogICAgc3RyICAgIHIxMiwgW3IxLCAjMTZdCiAgICAweGI0YzU3OTJhOiAgICBt
b3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTc5MmU6ICAgIG1vdnQgICByMTIsICM0NjgzMgog
ICAgMHhiNGM1NzkzMjogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NzkzNDogICAgbm9wICAgIAog
ICAgMHhiNGM1NzkzNjogICAgbm9wICAgIAogICAgMHhiNGM1NzkzYTogICAgYiAgICAgIDB4YjQ0
NWJjOGUKICAgIDB4YjRjNTc5M2U6ICAgIG1vdncgICByMTIsICM0ODUxMgogICAgMHhiNGM1Nzk0
MjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU3OTQ2OiAgICBjbXAgICAgcjAsIHIx
MgogICAgMHhiNGM1Nzk0YTogICAgYmx0ICAgIDB4YjRjNTc5ZDYKICAgIDB4YjRjNTc5NGM6ICAg
IG1vdncgICByMTIsICM0ODg5NgogICAgMHhiNGM1Nzk1MDogICAgbW92dCAgIHIxMiwgIzQ2MjAx
CiAgICAweGI0YzU3OTU0OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1Nzk1ODogICAgYm5l
ICAgIDB4YjRjNTc5N2EKICAgIDB4YjRjNTc5NWE6ICAgIGxkciAgICByMTIsIFtyMSwgIzI0XQog
ICAgMHhiNGM1Nzk1ZTogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1Nzk2MjogICAg
c3RyICAgIHIxMiwgW3IxLCAjMjRdCiAgICAweGI0YzU3OTY2OiAgICBtb3Z3ICAgcjEyLCAjMzEx
MzcKICAgIDB4YjRjNTc5NmE6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1Nzk2ZTog
ICAgYmx4ICAgIHIxMgogICAgMHhiNGM1Nzk3MDogICAgbm9wICAgIAogICAgMHhiNGM1Nzk3Mjog
ICAgbm9wICAgIAogICAgMHhiNGM1Nzk3NjogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRj
NTc5N2E6ICAgIG1vdncgICByMTIsICM0ODcwNAogICAgMHhiNGM1Nzk3ZTogICAgbW92dCAgIHIx
MiwgIzQ2MjAxCiAgICAweGI0YzU3OTgyOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1Nzk4
NjogICAgYm5lICAgIDB4YjRjNTc5YTgKICAgIDB4YjRjNTc5ODg6ICAgIGxkciAgICByMTIsIFty
MSwgIzI4XQogICAgMHhiNGM1Nzk4YzogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1
Nzk5MDogICAgc3RyICAgIHIxMiwgW3IxLCAjMjhdCiAgICAweGI0YzU3OTk0OiAgICBtb3Z3ICAg
cjEyLCAjMzExMzcKICAgIDB4YjRjNTc5OTg6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhi
NGM1Nzk5YzogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1Nzk5ZTogICAgbm9wICAgIAogICAgMHhi
NGM1NzlhMDogICAgbm9wICAgIAogICAgMHhiNGM1NzlhNDogICAgYiAgICAgIDB4YjQ0NWJjOGUK
ICAgIDB4YjRjNTc5YTg6ICAgIG1vdncgICByMTIsICM0ODUxMgogICAgMHhiNGM1NzlhYzogICAg
bW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU3OWIwOiAgICBjbXAgICAgcjAsIHIxMgogICAg
MHhiNGM1NzliNDogICAgYm5lICAgIDB4YjRjNTdhNjAKICAgIDB4YjRjNTc5YjY6ICAgIGxkciAg
ICByMTIsIFtyMSwgIzMyXQogICAgMHhiNGM1NzliYTogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQog
ICAgMHhiNGM1NzliZTogICAgc3RyICAgIHIxMiwgW3IxLCAjMzJdCiAgICAweGI0YzU3OWMyOiAg
ICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTc5YzY6ICAgIG1vdnQgICByMTIsICM0Njgz
MgogICAgMHhiNGM1NzljYTogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NzljYzogICAgbm9wICAg
IAogICAgMHhiNGM1NzljZTogICAgbm9wICAgIAogICAgMHhiNGM1NzlkMjogICAgYiAgICAgIDB4
YjQ0NWJjOGUKICAgIDB4YjRjNTc5ZDY6ICAgIG1vdncgICByMTIsICM0ODMyMAogICAgMHhiNGM1
NzlkYTogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU3OWRlOiAgICBjbXAgICAgcjAs
IHIxMgogICAgMHhiNGM1NzllMjogICAgYm5lICAgIDB4YjRjNTdhMDQKICAgIDB4YjRjNTc5ZTQ6
ICAgIGxkciAgICByMTIsIFtyMSwgIzM2XQogICAgMHhiNGM1NzllODogICAgYWRkdyAgIHIxMiwg
cjEyLCAjMQogICAgMHhiNGM1NzllYzogICAgc3RyICAgIHIxMiwgW3IxLCAjMzZdCiAgICAweGI0
YzU3OWYwOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTc5ZjQ6ICAgIG1vdnQgICBy
MTIsICM0NjgzMgogICAgMHhiNGM1NzlmODogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NzlmYTog
ICAgbm9wICAgIAogICAgMHhiNGM1NzlmYzogICAgbm9wICAgIAogICAgMHhiNGM1N2EwMDogICAg
YiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTdhMDQ6ICAgIG1vdncgICByMTIsICM0NzkzNgog
ICAgMHhiNGM1N2EwODogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU3YTBjOiAgICBj
bXAgICAgcjAsIHIxMgogICAgMHhiNGM1N2ExMDogICAgYm5lICAgIDB4YjRjNTdhMzIKICAgIDB4
YjRjNTdhMTI6ICAgIGxkciAgICByMTIsIFtyMSwgIzQ0XQogICAgMHhiNGM1N2ExNjogICAgYWRk
dyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1N2ExYTogICAgc3RyICAgIHIxMiwgW3IxLCAjNDRd
CiAgICAweGI0YzU3YTFlOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTdhMjI6ICAg
IG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1N2EyNjogICAgYmx4ICAgIHIxMgogICAgMHhi
NGM1N2EyODogICAgbm9wICAgIAogICAgMHhiNGM1N2EyYTogICAgbm9wICAgIAogICAgMHhiNGM1
N2EyZTogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTdhMzI6ICAgIG1vdncgICByMTIs
ICM0ODEyOAogICAgMHhiNGM1N2EzNjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU3
YTNhOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1N2EzZTogICAgYm5lICAgIDB4YjRjNTdh
NjAKICAgIDB4YjRjNTdhNDA6ICAgIGxkciAgICByMTIsIFtyMSwgIzQwXQogICAgMHhiNGM1N2E0
NDogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1N2E0ODogICAgc3RyICAgIHIxMiwg
W3IxLCAjNDBdCiAgICAweGI0YzU3YTRjOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRj
NTdhNTA6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1N2E1NDogICAgYmx4ICAgIHIx
MgogICAgMHhiNGM1N2E1NjogICAgbm9wICAgIAogICAgMHhiNGM1N2E1ODogICAgbm9wICAgIAog
ICAgMHhiNGM1N2E1YzogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTdhNjA6ICAgIG12
biAgICByMSwgIzQKICAgIDB4YjRjNTdhNjQ6ICAgIG1vdncgICByMiwgIzQ1MzQ0CiAgICAweGI0
YzU3YTY4OiAgICBtb3Z0ICAgcjIsICM0NjI2MwogICAgMHhiNGM1N2E2YzogICAgbW92dyAgIHI4
LCAjNTczNjkKICAgIDB4YjRjNTdhNzA6ICAgIG1vdnQgICByOCwgIzQ2Mjc3CiAgICAweGI0YzU3
YTc0OiAgICBtb3YgICAgbHIsIHI4CiAgICAweGI0YzU3YTc2OiAgICBtb3Z3ICAgcjEyLCAjMTU5
NjkKICAgIDB4YjRjNTdhN2E6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1N2E3ZTog
ICAgYnggICAgIHIxMgpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklv
OlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMx
NSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjA0NDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7
fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FyWm5PbDpbMHhi
NDc5MTcxMC0+MHhiNDdkNTc0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9
ICNBclpuT2w6WzB4YjQ3OTE3MTAtPjB4YjQ3ZDU3NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10K
TGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+
MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9u
OiBDZWxsOiAweGI0N2YwMzgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQ
cm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFYUdmRzQ6WzB4YjQ3OTE1YzAtPjB4YjQ3
ZDU2NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjRWFHZkc0OlsweGI0
NzkxNWMwLT4weGI0N2Q1NjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1v
cnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJh
c2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDdm
MDJjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRl
MF0pOyBFeGVjdXRhYmxlOiAjQWZrU1ZJOlsweGI0NzkxNDcwLT4weGI0N2Q1NTQwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0Fma1NWSTpbMHhiNDc5MTQ3MC0+MHhiNDdk
NTU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4g
PGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwg
MTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAyMDAgKDB4YjQ3Zjcw
OTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJs
ZTogI0JzMVpQcDpbMHhiNDc5MTFkMC0+MHhiNDdkNTQ0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3
XSksIGNvZGVCbG9jayA9ICNCczFaUHA6WzB4YjQ3OTExZDAtPjB4YjQ3ZDU0NDAsIExMSW50RnVu
Y3Rpb25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJ
bzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEz
MTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMTQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwg
e30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCajQ5SFU6WzB4
YjQ3OTEwODAtPjB4YjQ3ZDUzNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sg
PSAjQmo0OUhVOlsweGI0NzkxMDgwLT4weGI0N2Q1MzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDdd
CkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAt
PjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlv
bjogQ2VsbDogMHhiNDc5YmZjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwg
UHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQmQxaWc5OlsweGI0NzkwZjMwLT4weGI0
N2Q1MjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0JkMWlnOTpbMHhi
NDc5MGYzMC0+MHhiNDdkNTI0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBvbHlt
b3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBC
YXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3
OWJmMDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRk
ZTBdKTsgRXhlY3V0YWJsZTogI0NsRzRzWDpbMHhiNDc5MGRlMC0+MHhiNDdkNTE0MCwgTExJbnRG
dW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNDbEc0c1g6WzB4YjQ3OTBkZTAtPjB4YjQ3
ZDUxNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGlu
IDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWws
IDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliZTQwICgweGI0N2Y3
MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFi
bGU6ICNEUWJ1NmI6WzB4YjQ3OTBjOTAtPjB4YjQ3ZDUwNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0
N10pLCBjb2RlQmxvY2sgPSAjRFFidTZiOlsweGI0NzkwYzkwLT4weGI0N2Q1MDQwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6
SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMx
MzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmQ4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24s
IHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQjZjUlA4Olsw
eGI0NzkwYjQwLT4weGI0N2Q0ZjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNTldKSwgY29kZUJsb2Nr
ID0gI0I2Y1JQODpbMHhiNDc5MGI0MC0+MHhiNDdkNGY0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDU5
XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcw
LT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rp
b246IENlbGw6IDB4YjQ3OWJjYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXks
IFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JBaFdYbzpbMHhiNDc5MDlmMC0+MHhi
NDdkNGU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDU5XSksIGNvZGVCbG9jayA9ICNCQWhXWG86WzB4
YjQ3OTA5ZjAtPjB4YjQ3ZDRlNDAsIExMSW50RnVuY3Rpb25DYWxsLCA1OV0KTGlua2luZyBwb2x5
bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwg
QmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0
NzliYzAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2Vk
ZGUwXSk7IEV4ZWN1dGFibGU6ICNFV0huQk46WzB4YjQ3OTA4YTAtPjB4YjQ3ZDRkNDAsIExMSW50
RnVuY3Rpb25DYWxsLCA2Ml0pLCBjb2RlQmxvY2sgPSAjRVdIbkJOOlsweGI0NzkwOGEwLT4weGI0
N2Q0ZDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjJdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBp
biA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFs
LCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmI0MCAoMHhiNDdm
NzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRh
YmxlOiAjRExjOUEzOlsweGI0NzkwNzUwLT4weGI0N2Q0YzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NjhdKSwgY29kZUJsb2NrID0gI0RMYzlBMzpbMHhiNDc5MDc1MC0+MHhiNDdkNGM0MCwgTExJbnRG
dW5jdGlvbkNhbGwsIDY4XQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIFZpcnR1YWwgY2FsbCBzbG93
IHBhdGggdGh1bms6CiAgICBDb2RlIGF0IFsweGI0YzU3NzAxLCAweGI0YzU3N2MxKToKICAgIDB4
YjRjNTc3MDA6ICAgIGxkciAgICByMTIsIFtyMiwgIzUyXQogICAgMHhiNGM1NzcwNDogICAgYWRk
dyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NzcwODogICAgc3RyICAgIHIxMiwgW3IyLCAjNTJd
CiAgICAweGI0YzU3NzBjOiAgICBjbW4gICAgcjEsICM1CiAgICAweGI0YzU3NzEwOiAgICBibmUg
ICAgMHhiNGM1NzcyOAogICAgMHhiNGM1NzcxMjogICAgbGRyYiAgIHI2LCBbcjAsICM1XQogICAg
MHhiNGM1NzcxNDogICAgY21wICAgIHIyLCAjMjMKICAgIDB4YjRjNTc3MTY6ICAgIGJuZSAgICAw
eGI0YzU3NzI4CiAgICAweGI0YzU3NzE4OiAgICBsZHIgICAgcjgsIFtyMCwgIzIwXQogICAgMHhi
NGM1NzcxYzogICAgbGRyICAgIHI4LCBbcjgsICMyOF0KICAgIDB4YjRjNTc3MjA6ICAgIHRzdCAg
ICByOCwgcjgKICAgIDB4YjRjNTc3MjQ6ICAgIGJlcSAgICAweGI0YzU3NzI4CiAgICAweGI0YzU3
NzI2OiAgICBieCAgICAgcjgKICAgIDB4YjRjNTc3Mjg6ICAgIHB1c2ggICB7cjcsIGxyfQogICAg
MHhiNGM1NzcyYzogICAgbW92ICAgIHI3LCBzcAogICAgMHhiNGM1NzcyZTogICAgbW92dyAgIHI2
LCAjNDIxMjgKICAgIDB4YjRjNTc3MzI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI0YzU3
NzM2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjRjNTc3Mzg6ICAgIG12biAgICByMTIsICMy
MwogICAgMHhiNGM1NzczYzogICAgbW92ICAgIHNwLCBzcAogICAgMHhiNGM1NzczZTogICAgYWRk
ICAgIHNwLCByMTIKICAgIDB4YjRjNTc3NDA6ICAgIG1vdiAgICByMSwgcjIKICAgIDB4YjRjNTc3
NDI6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjRjNTc3NDQ6ICAgIG1vdncgICByNCwgIzUxMjc3
CiAgICAweGI0YzU3NzQ4OiAgICBtb3Z0ICAgcjQsICM0Njc3NgogICAgMHhiNGM1Nzc0YzogICAg
Ymx4ICAgIHI0CiAgICAweGI0YzU3NzRlOiAgICBhZGQgICAgc3AsIHNwLCAjNgogICAgMHhiNGM1
Nzc1MDogICAgbW92ICAgIHNwLCByNwogICAgMHhiNGM1Nzc1MjogICAgcG9wICAgIHtyNywgbHJ9
CiAgICAweGI0YzU3NzU2OiAgICB0c3QgICAgcjEsIHIxCiAgICAweGI0YzU3NzU4OiAgICBiZXEg
ICAgMHhiNGM1NzdhOAogICAgMHhiNGM1Nzc1YTogICAgbW92ICAgIHI1LCBscgogICAgMHhiNGM1
Nzc1YzogICAgbGRyICAgIHIxLCBbcjcsICMyNF0KICAgIDB4YjRjNTc3NWU6ICAgIGxkciAgICBy
MywgW3I3LCAjOF0KICAgIDB4YjRjNTc3NjA6ICAgIGxkciAgICByMywgW3IzLCAjMzJdCiAgICAw
eGI0YzU3NzYyOiAgICBjbXAgICAgcjMsIHIxCiAgICAweGI0YzU3NzY0OiAgICBibHMgICAgMHhi
NGM1Nzc2OAogICAgMHhiNGM1Nzc2NjogICAgbW92ICAgIHIxLCByMwogICAgMHhiNGM1Nzc2ODog
ICAgYWRkcyAgIHIxLCByMSwgIzUKICAgIDB4YjRjNTc3NmE6ICAgIG12biAgICByMTIsICMxCiAg
ICAweGI0YzU3NzZlOiAgICBhbmQgICAgcjEsIHIxLCByMTIKICAgIDB4YjRjNTc3NzI6ICAgIG1v
diAgICByMTIsICM4CiAgICAweGI0YzU3Nzc2OiAgICBzbXVsbCAgcjEsIHIxMiwgcjEsIHIxMgog
ICAgMHhiNGM1Nzc3YTogICAgYWRkcyAgIHIzLCByNywgcjEKICAgIDB4YjRjNTc3N2M6ICAgIGxk
ciAgICByMSwgW3NwLCAjMTZdCiAgICAweGI0YzU3NzdlOiAgICBhZGRzICAgcjEsIHIxLCAjNQog
ICAgMHhiNGM1Nzc4MDogICAgbXZuICAgIHIxMiwgIzEKICAgIDB4YjRjNTc3ODQ6ICAgIGFuZCAg
ICByMSwgcjEsIHIxMgogICAgMHhiNGM1Nzc4ODogICAgbW92ICAgIHIxMiwgIzgKICAgIDB4YjRj
NTc3OGM6ICAgIHNtdWxsICByMSwgcjEyLCByMSwgcjEyCiAgICAweGI0YzU3NzkwOiAgICBsZHIg
ICAgbHIsIFtyNywgIzRdCiAgICAweGI0YzU3Nzk0OiAgICBzdWJzICAgcjEsICM4CiAgICAweGI0
YzU3Nzk2OiAgICBzdWJzICAgcjMsIHIzLCByMQogICAgMHhiNGM1Nzc5ODogICAgbGRyICAgIHI3
LCBbcjddCiAgICAweGI0YzU3NzlhOiAgICBzdWJzICAgcjEsIHIxLCAjNAogICAgMHhiNGM1Nzc5
YzogICAgbGRyICAgIHIyLCBbc3AsIHIxXQogICAgMHhiNGM1NzdhMDogICAgc3RyICAgIHIyLCBb
cjMsIHIxXQogICAgMHhiNGM1NzdhMjogICAgdHN0ICAgIHIxLCByMQogICAgMHhiNGM1NzdhNDog
ICAgYm5lICAgIDB4YjRjNTc5OWEKICAgIDB4YjRjNTc3YTY6ICAgIG1vdiAgICBzcCwgcjMKICAg
IDB4YjRjNTc3YTg6ICAgIGJ4ICAgICByMApDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9s
eW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9j
YXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3Ig
cG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRh
TG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBm
b3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBk
YXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5m
byBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5
LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsg
aW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVl
MDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxp
bmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0
YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxs
IGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAw
eGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBj
YWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUg
PSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmlu
ZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFi
bGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVh
cmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1
dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpD
bGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4
ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMx
NQpHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEFjY2VzcyBzdHViIGZvciA8Z2xvYmFsPiNCeVB6SW86
WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBiYyMxNTMzIHdp
dGggcmV0dXJuIHBvaW50IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWMyZTEsIGRhdGFMb2Nh
dGlvbiA9IDB4YjRjNWMyZTApOiBBcnJheUxlbmd0aDooR2VuZXJhdGVkKToKICAgIENvZGUgYXQg
WzB4YjRjNTdlODEsIDB4YjRjNTdlZTEpOgogICAgMHhiNGM1N2U4MDogICAgbGRyYiAgIHIyLCBb
cjAsICM0XQogICAgMHhiNGM1N2U4MjogICAgdHN0ICAgIHIyLCAjMQogICAgMHhiNGM1N2U4Njog
ICAgaXR0dCAgIGVxCiAgICAweGI0YzU3ZTg4OiAgICBub3BlcSAgCiAgICAweGI0YzU3ZThhOiAg
ICBub3BlcSAgCiAgICAweGI0YzU3ZThlOiAgICBiZXEgICAgMHhiNDQ1ZTRlNAogICAgMHhiNGM1
N2U5MjogICAgdHN0ICAgIHIyLCAjMTQKICAgIDB4YjRjNTdlOTY6ICAgIGl0dHQgICBlcQogICAg
MHhiNGM1N2U5ODogICAgbm9wZXEgIAogICAgMHhiNGM1N2U5YTogICAgbm9wZXEgIAogICAgMHhi
NGM1N2U5ZTogICAgYmVxICAgIDB4YjQ0NWU0ZTQKICAgIDB4YjRjNTdlYTI6ICAgIGxkciAgICBy
MiwgW3IwLCAjOF0KICAgIDB4YjRjNTdlYTQ6ICAgIGxkciAgICByMiwgW3IyLCAjLThdCiAgICAw
eGI0YzU3ZWE4OiAgICBjbXAgICAgcjIsICMwCiAgICAweGI0YzU3ZWFhOiAgICBibHQgICAgMHhi
NGM1N2ViYwogICAgMHhiNGM1N2VhYzogICAgbW92ICAgIHIwLCByMgogICAgMHhiNGM1N2VhZTog
ICAgbW92ICAgIHIxLCAjNDI5NDk2NzI5NQogICAgMHhiNGM1N2ViMjogICAgbm9wICAgIAogICAg
MHhiNGM1N2ViNDogICAgbm9wICAgIAogICAgMHhiNGM1N2ViODogICAgYiAgICAgIDB4YjQ0NWMy
ZTAKICAgIDB4YjRjNTdlYmM6ICAgIG1vdncgICByMiwgIzQ1NzY2CiAgICAweGI0YzU3ZWMwOiAg
ICBtb3Z0ICAgcjIsICM0NjI2MwogICAgMHhiNGM1N2VjNDogICAgbGRyYiAgIHIyLCBbcjJdCiAg
ICAweGI0YzU3ZWM2OiAgICBhZGRzICAgcjIsIHIyLCAjMQogICAgMHhiNGM1N2VjODogICAgbW92
dyAgIHI2LCAjNDU3NjYKICAgIDB4YjRjNTdlY2M6ICAgIG1vdnQgICByNiwgIzQ2MjYzCiAgICAw
eGI0YzU3ZWQwOiAgICBzdHJiICAgcjIsIFtyNl0KICAgIDB4YjRjNTdlZDI6ICAgIG5vcCAgICAK
ICAgIDB4YjRjNTdlZDQ6ICAgIG5vcCAgICAKICAgIDB4YjRjNTdlZDg6ICAgIGIgICAgICAweGI0
NDVlNGU0CkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgQWNjZXNzIHN0dWIgZm9yIDxnbG9iYWw+I0J5
UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGJjIzEx
MDkgd2l0aCByZXR1cm4gcG9pbnQgQ29kZVB0cihleGVjdXRhYmxlID0gMHhiNGM1YjY1NSwgZGF0
YUxvY2F0aW9uID0gMHhiNGM1YjY1NCk6IEFycmF5TGVuZ3RoOihHZW5lcmF0ZWQpOgogICAgQ29k
ZSBhdCBbMHhiNGM2MDhlMSwgMHhiNGM2MDk0MSk6CiAgICAweGI0YzYwOGUwOiAgICBsZHJiICAg
cjIsIFtyMCwgIzRdCiAgICAweGI0YzYwOGUyOiAgICB0c3QgICAgcjIsICMxCiAgICAweGI0YzYw
OGU2OiAgICBpdHR0ICAgZXEKICAgIDB4YjRjNjA4ZTg6ICAgIG5vcGVxICAKICAgIDB4YjRjNjA4
ZWE6ICAgIG5vcGVxICAKICAgIDB4YjRjNjA4ZWU6ICAgIGJlcSAgICAweGI0YzVkYWEyCiAgICAw
eGI0YzYwOGYyOiAgICB0c3QgICAgcjIsICMxNAogICAgMHhiNGM2MDhmNjogICAgaXR0dCAgIGVx
CiAgICAweGI0YzYwOGY4OiAgICBub3BlcSAgCiAgICAweGI0YzYwOGZhOiAgICBub3BlcSAgCiAg
ICAweGI0YzYwOGZlOiAgICBiZXEgICAgMHhiNGM1ZGFhMgogICAgMHhiNGM2MDkwMjogICAgbGRy
ICAgIHIyLCBbcjAsICM4XQogICAgMHhiNGM2MDkwNDogICAgbGRyICAgIHIyLCBbcjIsICMtOF0K
ICAgIDB4YjRjNjA5MDg6ICAgIGNtcCAgICByMiwgIzAKICAgIDB4YjRjNjA5MGE6ICAgIGJsdCAg
ICAweGI0YzYwOTFjCiAgICAweGI0YzYwOTBjOiAgICBtb3YgICAgcjAsIHIyCiAgICAweGI0YzYw
OTBlOiAgICBtb3YgICAgcjEsICM0Mjk0OTY3Mjk1CiAgICAweGI0YzYwOTEyOiAgICBub3AgICAg
CiAgICAweGI0YzYwOTE0OiAgICBub3AgICAgCiAgICAweGI0YzYwOTE4OiAgICBiICAgICAgMHhi
NGM1YjY1NAogICAgMHhiNGM2MDkxYzogICAgbW92dyAgIHIyLCAjNDUxOTAKICAgIDB4YjRjNjA5
MjA6ICAgIG1vdnQgICByMiwgIzQ2MjYzCiAgICAweGI0YzYwOTI0OiAgICBsZHJiICAgcjIsIFty
Ml0KICAgIDB4YjRjNjA5MjY6ICAgIGFkZHMgICByMiwgcjIsICMxCiAgICAweGI0YzYwOTI4OiAg
ICBtb3Z3ICAgcjYsICM0NTE5MAogICAgMHhiNGM2MDkyYzogICAgbW92dCAgIHI2LCAjNDYyNjMK
ICAgIDB4YjRjNjA5MzA6ICAgIHN0cmIgICByMiwgW3I2XQogICAgMHhiNGM2MDkzMjogICAgbm9w
ICAgIAogICAgMHhiNGM2MDkzNDogICAgbm9wICAgIAogICAgMHhiNGM2MDkzODogICAgYiAgICAg
IDB4YjRjNWRhYTIKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBQb2x5bW9ycGhpYyBjYWxsIHN0dWIg
Zm9yIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9i
YWwsIDE1NTRdLCByZXR1cm4gcG9pbnQgMHhiNGM1ZTAxOSwgdGFyZ2V0cyA8dmFyaWFudCA9IChG
dW5jdGlvbjogQ2VsbDogMHhiNDdmMDQ0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25B
cnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQXJabk9sOlsweGI0NzkxNzEw
LT4weGI0N2Q1NzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0FyWm5P
bDpbMHhiNDc5MTcxMC0+MHhiNDdkNTc0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJp
YW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMzgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwg
e30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFYUdmRzQ6WzB4
YjQ3OTE1YzAtPjB4YjQ3ZDU2NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sg
PSAjRWFHZkc0OlsweGI0NzkxNWMwLT4weGI0N2Q1NjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDdd
PiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAyYzAgKDB4YjQ3ZjcwOTA6W0Z1
bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0Fm
a1NWSTpbMHhiNDc5MTQ3MC0+MHhiNDdkNTU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNv
ZGVCbG9jayA9ICNBZmtTVkk6WzB4YjQ3OTE0NzAtPjB4YjQ3ZDU1NDAsIExMSW50RnVuY3Rpb25D
YWxsLCA0N10+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDIwMCAoMHhiNDdm
NzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRh
YmxlOiAjQnMxWlBwOlsweGI0NzkxMWQwLT4weGI0N2Q1NDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwg
NDddKSwgY29kZUJsb2NrID0gI0JzMVpQcDpbMHhiNDc5MTFkMC0+MHhiNDdkNTQ0MCwgTExJbnRG
dW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMTQw
ICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7
IEV4ZWN1dGFibGU6ICNCajQ5SFU6WzB4YjQ3OTEwODAtPjB4YjQ3ZDUzNDAsIExMSW50RnVuY3Rp
b25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQmo0OUhVOlsweGI0NzkxMDgwLT4weGI0N2Q1MzQw
LCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4
YjQ3OWJmYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3
ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JkMWlnOTpbMHhiNDc5MGYzMC0+MHhiNDdkNTI0MCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNCZDFpZzk6WzB4YjQ3OTBmMzAtPjB4
YjQ3ZDUyNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10+LCA8dmFyaWFudCA9IChGdW5jdGlvbjog
Q2VsbDogMHhiNDc5YmYwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJv
dG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQ2xHNHNYOlsweGI0NzkwZGUwLT4weGI0N2Q1
MTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0NsRzRzWDpbMHhiNDc5
MGRlMC0+MHhiNDdkNTE0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0gKEZ1
bmN0aW9uOiBDZWxsOiAweGI0NzliZTQwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFy
cmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNEUWJ1NmI6WzB4YjQ3OTBjOTAt
PjB4YjQ3ZDUwNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjRFFidTZi
OlsweGI0NzkwYzkwLT4weGI0N2Q1MDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlh
bnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJkODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7
fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0I2Y1JQODpbMHhi
NDc5MGI0MC0+MHhiNDdkNGY0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDU5XSksIGNvZGVCbG9jayA9
ICNCNmNSUDg6WzB4YjQ3OTBiNDAtPjB4YjQ3ZDRmNDAsIExMSW50RnVuY3Rpb25DYWxsLCA1OV0+
LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmNjMCAoMHhiNDdmNzA5MDpbRnVu
Y3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQkFo
V1hvOlsweGI0NzkwOWYwLT4weGI0N2Q0ZTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNTldKSwgY29k
ZUJsb2NrID0gI0JBaFdYbzpbMHhiNDc5MDlmMC0+MHhiNDdkNGU0MCwgTExJbnRGdW5jdGlvbkNh
bGwsIDU5XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYzAwICgweGI0N2Y3
MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFi
bGU6ICNFV0huQk46WzB4YjQ3OTA4YTAtPjB4YjQ3ZDRkNDAsIExMSW50RnVuY3Rpb25DYWxsLCA2
Ml0pLCBjb2RlQmxvY2sgPSAjRVdIbkJOOlsweGI0NzkwOGEwLT4weGI0N2Q0ZDQwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNjJdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJiNDAg
KDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsg
RXhlY3V0YWJsZTogI0RMYzlBMzpbMHhiNDc5MDc1MC0+MHhiNDdkNGM0MCwgTExJbnRGdW5jdGlv
bkNhbGwsIDY4XSksIGNvZGVCbG9jayA9ICNETGM5QTM6WzB4YjQ3OTA3NTAtPjB4YjQ3ZDRjNDAs
IExMSW50RnVuY3Rpb25DYWxsLCA2OF0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhi
NDc5YmE4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdl
ZGRlMF0pOyBFeGVjdXRhYmxlOiAjQUVKd2JPOlsweGI0NzkwNjAwLT4weGI0N2Q0YjQwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNjhdKSwgY29kZUJsb2NrID0gI0FFSndiTzpbMHhiNDc5MDYwMC0+MHhi
NDdkNGI0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDY4XT46CiAgICBDb2RlIGF0IFsweGI0YzU3M2Ex
LCAweGI0YzU3NjYxKToKICAgIDB4YjRjNTczYTA6ICAgIG1vdncgICByMSwgIzY1MzEyCiAgICAw
eGI0YzU3M2E0OiAgICBtb3Z0ICAgcjEsICMxODYKICAgIDB4YjRjNTczYTg6ICAgIG1vdncgICBy
MTIsICM0OTA4OAogICAgMHhiNGM1NzNhYzogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0
YzU3M2IwOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NzNiNDogICAgYmx0ICAgIDB4YjRj
NTc0ZGUKICAgIDB4YjRjNTczYjg6ICAgIG1vdncgICByMTIsICM3MDQKICAgIDB4YjRjNTczYmM6
ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1NzNjMDogICAgY21wICAgIHIwLCByMTIK
ICAgIDB4YjRjNTczYzQ6ICAgIGJsdCAgICAweGI0YzU3NDUyCiAgICAweGI0YzU3M2M2OiAgICBt
b3Z3ICAgcjEyLCAjODk2CiAgICAweGI0YzU3M2NhOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAg
IDB4YjRjNTczY2U6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU3M2QyOiAgICBibmUgICAg
MHhiNGM1NzNmNAogICAgMHhiNGM1NzNkNDogICAgbGRyICAgIHIxMiwgW3IxLCAjNF0KICAgIDB4
YjRjNTczZDg6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTczZGM6ICAgIHN0ciAg
ICByMTIsIFtyMSwgIzRdCiAgICAweGI0YzU3M2UwOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAg
IDB4YjRjNTczZTQ6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NzNlODogICAgYmx4
ICAgIHIxMgogICAgMHhiNGM1NzNlYTogICAgbm9wICAgIAogICAgMHhiNGM1NzNlYzogICAgbm9w
ICAgIAogICAgMHhiNGM1NzNmMDogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTczZjQ6
ICAgIG1vdncgICByMTIsICMxMDg4CiAgICAweGI0YzU3M2Y4OiAgICBtb3Z0ICAgcjEyLCAjNDYy
MDcKICAgIDB4YjRjNTczZmM6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU3NDAwOiAgICBi
bmUgICAgMHhiNGM1NzQyMgogICAgMHhiNGM1NzQwMjogICAgbGRyICAgIHIxMiwgW3IxXQogICAg
MHhiNGM1NzQwNjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NzQwYTogICAgc3Ry
ICAgIHIxMiwgW3IxXQogICAgMHhiNGM1NzQwZTogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAw
eGI0YzU3NDEyOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNTc0MTY6ICAgIGJseCAg
ICByMTIKICAgIDB4YjRjNTc0MTg6ICAgIG5vcCAgICAKICAgIDB4YjRjNTc0MWE6ICAgIG5vcCAg
ICAKICAgIDB4YjRjNTc0MWU6ICAgIGIgICAgICAweGI0NDViYzhlCiAgICAweGI0YzU3NDIyOiAg
ICBtb3Z3ICAgcjEyLCAjNzA0CiAgICAweGI0YzU3NDI2OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcK
ICAgIDB4YjRjNTc0MmE6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU3NDJlOiAgICBibmUg
ICAgMHhiNGM1NzYzZQogICAgMHhiNGM1NzQzMjogICAgbGRyICAgIHIxMiwgW3IxLCAjOF0KICAg
IDB4YjRjNTc0MzY6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTc0M2E6ICAgIHN0
ciAgICByMTIsIFtyMSwgIzhdCiAgICAweGI0YzU3NDNlOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcK
ICAgIDB4YjRjNTc0NDI6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NzQ0NjogICAg
Ymx4ICAgIHIxMgogICAgMHhiNGM1NzQ0ODogICAgbm9wICAgIAogICAgMHhiNGM1NzQ0YTogICAg
bm9wICAgIAogICAgMHhiNGM1NzQ0ZTogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTc0
NTI6ICAgIG1vdncgICByMTIsICM0OTA4OAogICAgMHhiNGM1NzQ1NjogICAgbW92dCAgIHIxMiwg
IzQ2MjAxCiAgICAweGI0YzU3NDVhOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NzQ1ZTog
ICAgYm5lICAgIDB4YjRjNTc0ODAKICAgIDB4YjRjNTc0NjA6ICAgIGxkciAgICByMTIsIFtyMSwg
IzIwXQogICAgMHhiNGM1NzQ2NDogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NzQ2
ODogICAgc3RyICAgIHIxMiwgW3IxLCAjMjBdCiAgICAweGI0YzU3NDZjOiAgICBtb3Z3ICAgcjEy
LCAjMzExMzcKICAgIDB4YjRjNTc0NzA6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1
NzQ3NDogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NzQ3NjogICAgbm9wICAgIAogICAgMHhiNGM1
NzQ3ODogICAgbm9wICAgIAogICAgMHhiNGM1NzQ3YzogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAg
IDB4YjRjNTc0ODA6ICAgIG1vdncgICByMTIsICM1MTIKICAgIDB4YjRjNTc0ODQ6ICAgIG1vdnQg
ICByMTIsICM0NjIwNwogICAgMHhiNGM1NzQ4ODogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRj
NTc0OGM6ICAgIGJuZSAgICAweGI0YzU3NGFlCiAgICAweGI0YzU3NDhlOiAgICBsZHIgICAgcjEy
LCBbcjEsICMxMl0KICAgIDB4YjRjNTc0OTI6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4
YjRjNTc0OTY6ICAgIHN0ciAgICByMTIsIFtyMSwgIzEyXQogICAgMHhiNGM1NzQ5YTogICAgbW92
dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzU3NDllOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAg
IDB4YjRjNTc0YTI6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNTc0YTQ6ICAgIG5vcCAgICAKICAg
IDB4YjRjNTc0YTY6ICAgIG5vcCAgICAKICAgIDB4YjRjNTc0YWE6ICAgIGIgICAgICAweGI0NDVi
YzhlCiAgICAweGI0YzU3NGFlOiAgICBtb3Z3ICAgcjEyLCAjMzIwCiAgICAweGI0YzU3NGIyOiAg
ICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNTc0YjY6ICAgIGNtcCAgICByMCwgcjEyCiAg
ICAweGI0YzU3NGJhOiAgICBibmUgICAgMHhiNGM1NzYzZQogICAgMHhiNGM1NzRiZTogICAgbGRy
ICAgIHIxMiwgW3IxLCAjMTZdCiAgICAweGI0YzU3NGMyOiAgICBhZGR3ICAgcjEyLCByMTIsICMx
CiAgICAweGI0YzU3NGM2OiAgICBzdHIgICAgcjEyLCBbcjEsICMxNl0KICAgIDB4YjRjNTc0Y2E6
ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1NzRjZTogICAgbW92dCAgIHIxMiwgIzQ2
ODMyCiAgICAweGI0YzU3NGQyOiAgICBibHggICAgcjEyCiAgICAweGI0YzU3NGQ0OiAgICBub3Ag
ICAgCiAgICAweGI0YzU3NGQ2OiAgICBub3AgICAgCiAgICAweGI0YzU3NGRhOiAgICBiICAgICAg
MHhiNDQ1YmM4ZQogICAgMHhiNGM1NzRkZTogICAgbW92dyAgIHIxMiwgIzQ4NTEyCiAgICAweGI0
YzU3NGUyOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNTc0ZTY6ICAgIGNtcCAgICBy
MCwgcjEyCiAgICAweGI0YzU3NGVhOiAgICBibHQgICAgMHhiNGM1NzU3OAogICAgMHhiNGM1NzRl
YzogICAgbW92dyAgIHIxMiwgIzQ4NzA0CiAgICAweGI0YzU3NGYwOiAgICBtb3Z0ICAgcjEyLCAj
NDYyMDEKICAgIDB4YjRjNTc0ZjQ6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU3NGY4OiAg
ICBibmUgICAgMHhiNGM1NzUxYQogICAgMHhiNGM1NzRmYTogICAgbGRyICAgIHIxMiwgW3IxLCAj
MjhdCiAgICAweGI0YzU3NGZlOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzU3NTAy
OiAgICBzdHIgICAgcjEyLCBbcjEsICMyOF0KICAgIDB4YjRjNTc1MDY6ICAgIG1vdncgICByMTIs
ICMzMTEzNwogICAgMHhiNGM1NzUwYTogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU3
NTBlOiAgICBibHggICAgcjEyCiAgICAweGI0YzU3NTEwOiAgICBub3AgICAgCiAgICAweGI0YzU3
NTEyOiAgICBub3AgICAgCiAgICAweGI0YzU3NTE2OiAgICBiICAgICAgMHhiNDQ1YmM4ZQogICAg
MHhiNGM1NzUxYTogICAgbW92dyAgIHIxMiwgIzQ4ODk2CiAgICAweGI0YzU3NTFlOiAgICBtb3Z0
ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNTc1MjI6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0
YzU3NTI2OiAgICBibmUgICAgMHhiNGM1NzU0OAogICAgMHhiNGM1NzUyODogICAgbGRyICAgIHIx
MiwgW3IxLCAjMjRdCiAgICAweGI0YzU3NTJjOiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAw
eGI0YzU3NTMwOiAgICBzdHIgICAgcjEyLCBbcjEsICMyNF0KICAgIDB4YjRjNTc1MzQ6ICAgIG1v
dncgICByMTIsICMzMTEzNwogICAgMHhiNGM1NzUzODogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAg
ICAweGI0YzU3NTNjOiAgICBibHggICAgcjEyCiAgICAweGI0YzU3NTNlOiAgICBub3AgICAgCiAg
ICAweGI0YzU3NTQwOiAgICBub3AgICAgCiAgICAweGI0YzU3NTQ0OiAgICBiICAgICAgMHhiNDQ1
YmM4ZQogICAgMHhiNGM1NzU0ODogICAgbW92dyAgIHIxMiwgIzQ4NTEyCiAgICAweGI0YzU3NTRj
OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNTc1NTA6ICAgIGNtcCAgICByMCwgcjEy
CiAgICAweGI0YzU3NTU0OiAgICBibmUgICAgMHhiNGM1NzYzZQogICAgMHhiNGM1NzU1ODogICAg
bGRyICAgIHIxMiwgW3IxLCAjMzJdCiAgICAweGI0YzU3NTVjOiAgICBhZGR3ICAgcjEyLCByMTIs
ICMxCiAgICAweGI0YzU3NTYwOiAgICBzdHIgICAgcjEyLCBbcjEsICMzMl0KICAgIDB4YjRjNTc1
NjQ6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1NzU2ODogICAgbW92dCAgIHIxMiwg
IzQ2ODMyCiAgICAweGI0YzU3NTZjOiAgICBibHggICAgcjEyCiAgICAweGI0YzU3NTZlOiAgICBu
b3AgICAgCiAgICAweGI0YzU3NTcwOiAgICBub3AgICAgCiAgICAweGI0YzU3NTc0OiAgICBiICAg
ICAgMHhiNDQ1YmM4ZQogICAgMHhiNGM1NzU3ODogICAgbW92dyAgIHIxMiwgIzQ4MTI4CiAgICAw
eGI0YzU3NTdjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNTc1ODA6ICAgIGNtcCAg
ICByMCwgcjEyCiAgICAweGI0YzU3NTg0OiAgICBibHQgICAgMHhiNGM1NzVlMgogICAgMHhiNGM1
NzU4NjogICAgbW92dyAgIHIxMiwgIzQ4MTI4CiAgICAweGI0YzU3NThhOiAgICBtb3Z0ICAgcjEy
LCAjNDYyMDEKICAgIDB4YjRjNTc1OGU6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU3NTky
OiAgICBibmUgICAgMHhiNGM1NzViNAogICAgMHhiNGM1NzU5NDogICAgbGRyICAgIHIxMiwgW3Ix
LCAjNDBdCiAgICAweGI0YzU3NTk4OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzU3
NTljOiAgICBzdHIgICAgcjEyLCBbcjEsICM0MF0KICAgIDB4YjRjNTc1YTA6ICAgIG1vdncgICBy
MTIsICMzMTEzNwogICAgMHhiNGM1NzVhNDogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0
YzU3NWE4OiAgICBibHggICAgcjEyCiAgICAweGI0YzU3NWFhOiAgICBub3AgICAgCiAgICAweGI0
YzU3NWFjOiAgICBub3AgICAgCiAgICAweGI0YzU3NWIwOiAgICBiICAgICAgMHhiNDQ1YmM4ZQog
ICAgMHhiNGM1NzViNDogICAgbW92dyAgIHIxMiwgIzQ4MzIwCiAgICAweGI0YzU3NWI4OiAgICBt
b3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNTc1YmM6ICAgIGNtcCAgICByMCwgcjEyCiAgICAw
eGI0YzU3NWMwOiAgICBibmUgICAgMHhiNGM1NzYzZQogICAgMHhiNGM1NzVjMjogICAgbGRyICAg
IHIxMiwgW3IxLCAjMzZdCiAgICAweGI0YzU3NWM2OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAg
ICAweGI0YzU3NWNhOiAgICBzdHIgICAgcjEyLCBbcjEsICMzNl0KICAgIDB4YjRjNTc1Y2U6ICAg
IG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1NzVkMjogICAgbW92dCAgIHIxMiwgIzQ2ODMy
CiAgICAweGI0YzU3NWQ2OiAgICBibHggICAgcjEyCiAgICAweGI0YzU3NWQ4OiAgICBub3AgICAg
CiAgICAweGI0YzU3NWRhOiAgICBub3AgICAgCiAgICAweGI0YzU3NWRlOiAgICBiICAgICAgMHhi
NDQ1YmM4ZQogICAgMHhiNGM1NzVlMjogICAgbW92dyAgIHIxMiwgIzQ3OTM2CiAgICAweGI0YzU3
NWU2OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNTc1ZWE6ICAgIGNtcCAgICByMCwg
cjEyCiAgICAweGI0YzU3NWVlOiAgICBibmUgICAgMHhiNGM1NzYxMAogICAgMHhiNGM1NzVmMDog
ICAgbGRyICAgIHIxMiwgW3IxLCAjNDRdCiAgICAweGI0YzU3NWY0OiAgICBhZGR3ICAgcjEyLCBy
MTIsICMxCiAgICAweGI0YzU3NWY4OiAgICBzdHIgICAgcjEyLCBbcjEsICM0NF0KICAgIDB4YjRj
NTc1ZmM6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1NzYwMDogICAgbW92dCAgIHIx
MiwgIzQ2ODMyCiAgICAweGI0YzU3NjA0OiAgICBibHggICAgcjEyCiAgICAweGI0YzU3NjA2OiAg
ICBub3AgICAgCiAgICAweGI0YzU3NjA4OiAgICBub3AgICAgCiAgICAweGI0YzU3NjBjOiAgICBi
ICAgICAgMHhiNDQ1YmM4ZQogICAgMHhiNGM1NzYxMDogICAgbW92dyAgIHIxMiwgIzQ3NzQ0CiAg
ICAweGI0YzU3NjE0OiAgICBtb3Z0ICAgcjEyLCAjNDYyMDEKICAgIDB4YjRjNTc2MTg6ICAgIGNt
cCAgICByMCwgcjEyCiAgICAweGI0YzU3NjFjOiAgICBibmUgICAgMHhiNGM1NzYzZQogICAgMHhi
NGM1NzYxZTogICAgbGRyICAgIHIxMiwgW3IxLCAjNDhdCiAgICAweGI0YzU3NjIyOiAgICBhZGR3
ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzU3NjI2OiAgICBzdHIgICAgcjEyLCBbcjEsICM0OF0K
ICAgIDB4YjRjNTc2MmE6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1NzYyZTogICAg
bW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU3NjMyOiAgICBibHggICAgcjEyCiAgICAweGI0
YzU3NjM0OiAgICBub3AgICAgCiAgICAweGI0YzU3NjM2OiAgICBub3AgICAgCiAgICAweGI0YzU3
NjNhOiAgICBiICAgICAgMHhiNDQ1YmM4ZQogICAgMHhiNGM1NzYzZTogICAgbXZuICAgIHIxLCAj
NAogICAgMHhiNGM1NzY0MjogICAgbW92dyAgIHIyLCAjNDUzNDQKICAgIDB4YjRjNTc2NDY6ICAg
IG1vdnQgICByMiwgIzQ2MjYzCiAgICAweGI0YzU3NjRhOiAgICBtb3Z3ICAgcjgsICM1NzM2OQog
ICAgMHhiNGM1NzY0ZTogICAgbW92dCAgIHI4LCAjNDYyNzcKICAgIDB4YjRjNTc2NTI6ICAgIG1v
diAgICBsciwgcjgKICAgIDB4YjRjNTc2NTQ6ICAgIG1vdncgICByMTIsICMxNTk2OQogICAgMHhi
NGM1NzY1ODogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU3NjVjOiAgICBieCAgICAg
cjEyCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNl
NzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5j
dGlvbjogQ2VsbDogMHhiNDdmMDQ0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJh
eSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQXJabk9sOlsweGI0NzkxNzEwLT4w
eGI0N2Q1NzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0FyWm5PbDpb
MHhiNDc5MTcxMC0+MHhiNDdkNTc0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBv
bHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUw
LCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4
YjQ3ZjAzODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3
ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0VhR2ZHNDpbMHhiNDc5MTVjMC0+MHhiNDdkNTY0MCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNFYUdmRzQ6WzB4YjQ3OTE1YzAtPjB4
YjQ3ZDU2NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxs
IGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9i
YWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMmMwICgweGI0
N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1
dGFibGU6ICNBZmtTVkk6WzB4YjQ3OTE0NzAtPjB4YjQ3ZDU1NDAsIExMSW50RnVuY3Rpb25DYWxs
LCA0N10pLCBjb2RlQmxvY2sgPSAjQWZrU1ZJOlsweGI0NzkxNDcwLT4weGI0N2Q1NTQwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNC
eVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBi
YyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDIwMCAoMHhiNDdmNzA5MDpbRnVuY3Rp
b24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQnMxWlBw
OlsweGI0NzkxMWQwLT4weGI0N2Q1NDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJs
b2NrID0gI0JzMVpQcDpbMHhiNDc5MTFkMC0+MHhiNDdkNTQ0MCwgTExJbnRGdW5jdGlvbkNhbGws
IDQ3XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2Ez
ZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVu
Y3Rpb246IENlbGw6IDB4YjQ3ZjAxNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJy
YXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JqNDlIVTpbMHhiNDc5MTA4MC0+
MHhiNDdkNTM0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNCajQ5SFU6
WzB4YjQ3OTEwODAtPjB4YjQ3ZDUzNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10KTGlua2luZyBw
b2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1
MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAw
eGI0NzliZmMwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0
N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCZDFpZzk6WzB4YjQ3OTBmMzAtPjB4YjQ3ZDUyNDAsIExM
SW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQmQxaWc5OlsweGI0NzkwZjMwLT4w
eGI0N2Q1MjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2Fs
bCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xv
YmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmYwMCAoMHhi
NDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVj
dXRhYmxlOiAjQ2xHNHNYOlsweGI0NzkwZGUwLT4weGI0N2Q1MTQwLCBMTEludEZ1bmN0aW9uQ2Fs
bCwgNDddKSwgY29kZUJsb2NrID0gI0NsRzRzWDpbMHhiNDc5MGRlMC0+MHhiNDdkNTE0MCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4j
QnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQg
YmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJlNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0
aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0RRYnU2
YjpbMHhiNDc5MGM5MC0+MHhiNDdkNTA0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVC
bG9jayA9ICNEUWJ1NmI6WzB4YjQ3OTBjOTAtPjB4YjQ3ZDUwNDAsIExMSW50RnVuY3Rpb25DYWxs
LCA0N10KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdh
M2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1
bmN0aW9uOiBDZWxsOiAweGI0NzliZDgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFy
cmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCNmNSUDg6WzB4YjQ3OTBiNDAt
PjB4YjQ3ZDRmNDAsIExMSW50RnVuY3Rpb25DYWxsLCA1OV0pLCBjb2RlQmxvY2sgPSAjQjZjUlA4
OlsweGI0NzkwYjQwLT4weGI0N2Q0ZjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNTldCkxpbmtpbmcg
cG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJm
NTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDog
MHhiNDc5YmNjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhi
NDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQkFoV1hvOlsweGI0NzkwOWYwLT4weGI0N2Q0ZTQwLCBM
TEludEZ1bmN0aW9uQ2FsbCwgNTldKSwgY29kZUJsb2NrID0gI0JBaFdYbzpbMHhiNDc5MDlmMC0+
MHhiNDdkNGU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDU5XQpMaW5raW5nIHBvbHltb3JwaGljIGNh
bGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUds
b2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJjMDAgKDB4
YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhl
Y3V0YWJsZTogI0VXSG5CTjpbMHhiNDc5MDhhMC0+MHhiNDdkNGQ0MCwgTExJbnRGdW5jdGlvbkNh
bGwsIDYyXSksIGNvZGVCbG9jayA9ICNFV0huQk46WzB4YjQ3OTA4YTAtPjB4YjQ3ZDRkNDAsIExM
SW50RnVuY3Rpb25DYWxsLCA2Ml0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+
I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0
IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYjQwICgweGI0N2Y3MDkwOltGdW5j
dGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNETGM5
QTM6WzB4YjQ3OTA3NTAtPjB4YjQ3ZDRjNDAsIExMSW50RnVuY3Rpb25DYWxsLCA2OF0pLCBjb2Rl
QmxvY2sgPSAjRExjOUEzOlsweGI0NzkwNzUwLT4weGI0N2Q0YzQwLCBMTEludEZ1bmN0aW9uQ2Fs
bCwgNjhdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3
YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChG
dW5jdGlvbjogQ2VsbDogMHhiNDc5YmE4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25B
cnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQUVKd2JPOlsweGI0NzkwNjAw
LT4weGI0N2Q0YjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjhdKSwgY29kZUJsb2NrID0gI0FFSndi
TzpbMHhiNDc5MDYwMC0+MHhiNDdkNGI0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDY4XQpHZW5lcmF0
ZWQgSklUIGNvZGUgZm9yIFZpcnR1YWwgY2FsbCBzbG93IHBhdGggdGh1bms6CiAgICBDb2RlIGF0
IFsweGI0YzU3MmExLCAweGI0YzU3MzYxKToKICAgIDB4YjRjNTcyYTA6ICAgIGxkciAgICByMTIs
IFtyMiwgIzUyXQogICAgMHhiNGM1NzJhNDogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhi
NGM1NzJhODogICAgc3RyICAgIHIxMiwgW3IyLCAjNTJdCiAgICAweGI0YzU3MmFjOiAgICBjbW4g
ICAgcjEsICM1CiAgICAweGI0YzU3MmIwOiAgICBibmUgICAgMHhiNGM1NzJjOAogICAgMHhiNGM1
NzJiMjogICAgbGRyYiAgIHI2LCBbcjAsICM1XQogICAgMHhiNGM1NzJiNDogICAgY21wICAgIHIy
LCAjMjMKICAgIDB4YjRjNTcyYjY6ICAgIGJuZSAgICAweGI0YzU3MmM4CiAgICAweGI0YzU3MmI4
OiAgICBsZHIgICAgcjgsIFtyMCwgIzIwXQogICAgMHhiNGM1NzJiYzogICAgbGRyICAgIHI4LCBb
cjgsICMyOF0KICAgIDB4YjRjNTcyYzA6ICAgIHRzdCAgICByOCwgcjgKICAgIDB4YjRjNTcyYzQ6
ICAgIGJlcSAgICAweGI0YzU3MmM4CiAgICAweGI0YzU3MmM2OiAgICBieCAgICAgcjgKICAgIDB4
YjRjNTcyYzg6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNGM1NzJjYzogICAgbW92ICAgIHI3
LCBzcAogICAgMHhiNGM1NzJjZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjRjNTcyZDI6
ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI0YzU3MmQ2OiAgICBzdHIgICAgcjcsIFtyNl0K
ICAgIDB4YjRjNTcyZDg6ICAgIG12biAgICByMTIsICMyMwogICAgMHhiNGM1NzJkYzogICAgbW92
ICAgIHNwLCBzcAogICAgMHhiNGM1NzJkZTogICAgYWRkICAgIHNwLCByMTIKICAgIDB4YjRjNTcy
ZTA6ICAgIG1vdiAgICByMSwgcjIKICAgIDB4YjRjNTcyZTI6ICAgIG1vdiAgICByMCwgcjcKICAg
IDB4YjRjNTcyZTQ6ICAgIG1vdncgICByNCwgIzUxMjc3CiAgICAweGI0YzU3MmU4OiAgICBtb3Z0
ICAgcjQsICM0Njc3NgogICAgMHhiNGM1NzJlYzogICAgYmx4ICAgIHI0CiAgICAweGI0YzU3MmVl
OiAgICBhZGQgICAgc3AsIHNwLCAjNgogICAgMHhiNGM1NzJmMDogICAgbW92ICAgIHNwLCByNwog
ICAgMHhiNGM1NzJmMjogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI0YzU3MmY2OiAgICB0c3Qg
ICAgcjEsIHIxCiAgICAweGI0YzU3MmY4OiAgICBiZXEgICAgMHhiNGM1NzM0OAogICAgMHhiNGM1
NzJmYTogICAgbW92ICAgIHI1LCBscgogICAgMHhiNGM1NzJmYzogICAgbGRyICAgIHIxLCBbcjcs
ICMyNF0KICAgIDB4YjRjNTcyZmU6ICAgIGxkciAgICByMywgW3I3LCAjOF0KICAgIDB4YjRjNTcz
MDA6ICAgIGxkciAgICByMywgW3IzLCAjMzJdCiAgICAweGI0YzU3MzAyOiAgICBjbXAgICAgcjMs
IHIxCiAgICAweGI0YzU3MzA0OiAgICBibHMgICAgMHhiNGM1NzMwOAogICAgMHhiNGM1NzMwNjog
ICAgbW92ICAgIHIxLCByMwogICAgMHhiNGM1NzMwODogICAgYWRkcyAgIHIxLCByMSwgIzUKICAg
IDB4YjRjNTczMGE6ICAgIG12biAgICByMTIsICMxCiAgICAweGI0YzU3MzBlOiAgICBhbmQgICAg
cjEsIHIxLCByMTIKICAgIDB4YjRjNTczMTI6ICAgIG1vdiAgICByMTIsICM4CiAgICAweGI0YzU3
MzE2OiAgICBzbXVsbCAgcjEsIHIxMiwgcjEsIHIxMgogICAgMHhiNGM1NzMxYTogICAgYWRkcyAg
IHIzLCByNywgcjEKICAgIDB4YjRjNTczMWM6ICAgIGxkciAgICByMSwgW3NwLCAjMTZdCiAgICAw
eGI0YzU3MzFlOiAgICBhZGRzICAgcjEsIHIxLCAjNQogICAgMHhiNGM1NzMyMDogICAgbXZuICAg
IHIxMiwgIzEKICAgIDB4YjRjNTczMjQ6ICAgIGFuZCAgICByMSwgcjEsIHIxMgogICAgMHhiNGM1
NzMyODogICAgbW92ICAgIHIxMiwgIzgKICAgIDB4YjRjNTczMmM6ICAgIHNtdWxsICByMSwgcjEy
LCByMSwgcjEyCiAgICAweGI0YzU3MzMwOiAgICBsZHIgICAgbHIsIFtyNywgIzRdCiAgICAweGI0
YzU3MzM0OiAgICBzdWJzICAgcjEsICM4CiAgICAweGI0YzU3MzM2OiAgICBzdWJzICAgcjMsIHIz
LCByMQogICAgMHhiNGM1NzMzODogICAgbGRyICAgIHI3LCBbcjddCiAgICAweGI0YzU3MzNhOiAg
ICBzdWJzICAgcjEsIHIxLCAjNAogICAgMHhiNGM1NzMzYzogICAgbGRyICAgIHIyLCBbc3AsIHIx
XQogICAgMHhiNGM1NzM0MDogICAgc3RyICAgIHIyLCBbcjMsIHIxXQogICAgMHhiNGM1NzM0Mjog
ICAgdHN0ICAgIHIxLCByMQogICAgMHhiNGM1NzM0NDogICAgYm5lICAgIDB4YjRjNTc1M2EKICAg
IDB4YjRjNTczNDY6ICAgIG1vdiAgICBzcCwgcjMKICAgIDB4YjRjNTczNDg6ICAgIGJ4ICAgICBy
MApDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRy
KGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMj
MTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2Rl
UHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwg
YmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBD
b2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4
KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBh
dCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVl
MDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2Fs
bCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0
YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMg
Y2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAw
eGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBo
aWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24g
PSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1v
cnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRp
b24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9s
eW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9j
YXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3Ig
cG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRh
TG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBm
b3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBk
YXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5m
byBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5
LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpHZW5lcmF0ZWQgSklUIGNvZGUg
Zm9yIFBvbHltb3JwaGljIGNhbGwgc3R1YiBmb3IgPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcw
LT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0sIHJldHVybiBwb2ludCAweGI0YzVl
MDE5LCB0YXJnZXRzIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwNDQwICgweGI0
N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1
dGFibGU6ICNBclpuT2w6WzB4YjQ3OTE3MTAtPjB4YjQ3ZDU3NDAsIExMSW50RnVuY3Rpb25DYWxs
LCA0N10pLCBjb2RlQmxvY2sgPSAjQXJabk9sOlsweGI0NzkxNzEwLT4weGI0N2Q1NzQwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAz
ODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBd
KTsgRXhlY3V0YWJsZTogI0VhR2ZHNDpbMHhiNDc5MTVjMC0+MHhiNDdkNTY0MCwgTExJbnRGdW5j
dGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNFYUdmRzQ6WzB4YjQ3OTE1YzAtPjB4YjQ3ZDU2
NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDog
MHhiNDdmMDJjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhi
NDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQWZrU1ZJOlsweGI0NzkxNDcwLT4weGI0N2Q1NTQwLCBM
TEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0Fma1NWSTpbMHhiNDc5MTQ3MC0+
MHhiNDdkNTU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9u
OiBDZWxsOiAweGI0N2YwMjAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQ
cm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCczFaUHA6WzB4YjQ3OTExZDAtPjB4YjQ3
ZDU0NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQnMxWlBwOlsweGI0
NzkxMWQwLT4weGI0N2Q1NDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAo
RnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAxNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9u
QXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JqNDlIVTpbMHhiNDc5MTA4
MC0+MHhiNDdkNTM0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNCajQ5
SFU6WzB4YjQ3OTEwODAtPjB4YjQ3ZDUzNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10+LCA8dmFy
aWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmZjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24s
IHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQmQxaWc5Olsw
eGI0NzkwZjMwLT4weGI0N2Q1MjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2Nr
ID0gI0JkMWlnOTpbMHhiNDc5MGYzMC0+MHhiNDdkNTI0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3
XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliZjAwICgweGI0N2Y3MDkwOltG
dW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICND
bEc0c1g6WzB4YjQ3OTBkZTAtPjB4YjQ3ZDUxNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBj
b2RlQmxvY2sgPSAjQ2xHNHNYOlsweGI0NzkwZGUwLT4weGI0N2Q1MTQwLCBMTEludEZ1bmN0aW9u
Q2FsbCwgNDddPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJlNDAgKDB4YjQ3
ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0
YWJsZTogI0RRYnU2YjpbMHhiNDc5MGM5MC0+MHhiNDdkNTA0MCwgTExJbnRGdW5jdGlvbkNhbGws
IDQ3XSksIGNvZGVCbG9jayA9ICNEUWJ1NmI6WzB4YjQ3OTBjOTAtPjB4YjQ3ZDUwNDAsIExMSW50
RnVuY3Rpb25DYWxsLCA0N10+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmQ4
MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0p
OyBFeGVjdXRhYmxlOiAjQjZjUlA4OlsweGI0NzkwYjQwLT4weGI0N2Q0ZjQwLCBMTEludEZ1bmN0
aW9uQ2FsbCwgNTldKSwgY29kZUJsb2NrID0gI0I2Y1JQODpbMHhiNDc5MGI0MC0+MHhiNDdkNGY0
MCwgTExJbnRGdW5jdGlvbkNhbGwsIDU5XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAw
eGI0NzliY2MwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0
N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCQWhXWG86WzB4YjQ3OTA5ZjAtPjB4YjQ3ZDRlNDAsIExM
SW50RnVuY3Rpb25DYWxsLCA1OV0pLCBjb2RlQmxvY2sgPSAjQkFoV1hvOlsweGI0NzkwOWYwLT4w
eGI0N2Q0ZTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNTldPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246
IENlbGw6IDB4YjQ3OWJjMDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFBy
b3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0VXSG5CTjpbMHhiNDc5MDhhMC0+MHhiNDdk
NGQ0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDYyXSksIGNvZGVCbG9jayA9ICNFV0huQk46WzB4YjQ3
OTA4YTAtPjB4YjQ3ZDRkNDAsIExMSW50RnVuY3Rpb25DYWxsLCA2Ml0+LCA8dmFyaWFudCA9IChG
dW5jdGlvbjogQ2VsbDogMHhiNDc5YmI0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25B
cnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRExjOUEzOlsweGI0NzkwNzUw
LT4weGI0N2Q0YzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjhdKSwgY29kZUJsb2NrID0gI0RMYzlB
MzpbMHhiNDc5MDc1MC0+MHhiNDdkNGM0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDY4XT4sIDx2YXJp
YW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYTgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwg
e30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBRUp3Yk86WzB4
YjQ3OTA2MDAtPjB4YjQ3ZDRiNDAsIExMSW50RnVuY3Rpb25DYWxsLCA2OF0pLCBjb2RlQmxvY2sg
PSAjQUVKd2JPOlsweGI0NzkwNjAwLT4weGI0N2Q0YjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjhd
PiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWI5YzAgKDB4YjQ3ZjcwOTA6W0Z1
bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0M3
Tmg1WTpbMHhiNDc5MDRiMC0+MHhiNDdkNGE0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDY4XSksIGNv
ZGVCbG9jayA9ICNDN05oNVk6WzB4YjQ3OTA0YjAtPjB4YjQ3ZDRhNDAsIExMSW50RnVuY3Rpb25D
YWxsLCA2OF0+OgogICAgQ29kZSBhdCBbMHhiNGM1NGY0MSwgMHhiNGM1NTI0MSk6CiAgICAweGI0
YzU0ZjQwOiAgICBtb3Z3ICAgcjEsICM2NTM2OAogICAgMHhiNGM1NGY0NDogICAgbW92dCAgIHIx
LCAjMTg2CiAgICAweGI0YzU0ZjQ4OiAgICBtb3Z3ICAgcjEyLCAjNDg4OTYKICAgIDB4YjRjNTRm
NGM6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1NGY1MDogICAgY21wICAgIHIwLCBy
MTIKICAgIDB4YjRjNTRmNTQ6ICAgIGJsdCAgICAweGI0YzU1MGJlCiAgICAweGI0YzU0ZjU4OiAg
ICBtb3Z3ICAgcjEyLCAjNTEyCiAgICAweGI0YzU0ZjVjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcK
ICAgIDB4YjRjNTRmNjA6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU0ZjY0OiAgICBibHQg
ICAgMHhiNGM1NTAzMgogICAgMHhiNGM1NGY2ODogICAgbW92dyAgIHIxMiwgIzg5NgogICAgMHhi
NGM1NGY2YzogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzU0ZjcwOiAgICBjbXAgICAg
cjAsIHIxMgogICAgMHhiNGM1NGY3NDogICAgYmx0ICAgIDB4YjRjNTRmZDQKICAgIDB4YjRjNTRm
NzY6ICAgIG1vdncgICByMTIsICM4OTYKICAgIDB4YjRjNTRmN2E6ICAgIG1vdnQgICByMTIsICM0
NjIwNwogICAgMHhiNGM1NGY3ZTogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTRmODI6ICAg
IGJuZSAgICAweGI0YzU0ZmE0CiAgICAweGI0YzU0Zjg0OiAgICBsZHIgICAgcjEyLCBbcjEsICM0
XQogICAgMHhiNGM1NGY4ODogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NGY4Yzog
ICAgc3RyICAgIHIxMiwgW3IxLCAjNF0KICAgIDB4YjRjNTRmOTA6ICAgIG1vdncgICByMTIsICMz
MTEzNwogICAgMHhiNGM1NGY5NDogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU0Zjk4
OiAgICBibHggICAgcjEyCiAgICAweGI0YzU0ZjlhOiAgICBub3AgICAgCiAgICAweGI0YzU0Zjlj
OiAgICBub3AgICAgCiAgICAweGI0YzU0ZmEwOiAgICBiICAgICAgMHhiNDQ1YmM4ZQogICAgMHhi
NGM1NGZhNDogICAgbW92dyAgIHIxMiwgIzEwODgKICAgIDB4YjRjNTRmYTg6ICAgIG1vdnQgICBy
MTIsICM0NjIwNwogICAgMHhiNGM1NGZhYzogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTRm
YjA6ICAgIGJuZSAgICAweGI0YzU1MjFlCiAgICAweGI0YzU0ZmI0OiAgICBsZHIgICAgcjEyLCBb
cjFdCiAgICAweGI0YzU0ZmI4OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAweGI0YzU0ZmJj
OiAgICBzdHIgICAgcjEyLCBbcjFdCiAgICAweGI0YzU0ZmMwOiAgICBtb3Z3ICAgcjEyLCAjMzEx
MzcKICAgIDB4YjRjNTRmYzQ6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NGZjODog
ICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NGZjYTogICAgbm9wICAgIAogICAgMHhiNGM1NGZjYzog
ICAgbm9wICAgIAogICAgMHhiNGM1NGZkMDogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRj
NTRmZDQ6ICAgIG1vdncgICByMTIsICM3MDQKICAgIDB4YjRjNTRmZDg6ICAgIG1vdnQgICByMTIs
ICM0NjIwNwogICAgMHhiNGM1NGZkYzogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTRmZTA6
ICAgIGJuZSAgICAweGI0YzU1MDAyCiAgICAweGI0YzU0ZmUyOiAgICBsZHIgICAgcjEyLCBbcjEs
ICM4XQogICAgMHhiNGM1NGZlNjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NGZl
YTogICAgc3RyICAgIHIxMiwgW3IxLCAjOF0KICAgIDB4YjRjNTRmZWU6ICAgIG1vdncgICByMTIs
ICMzMTEzNwogICAgMHhiNGM1NGZmMjogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAgICAweGI0YzU0
ZmY2OiAgICBibHggICAgcjEyCiAgICAweGI0YzU0ZmY4OiAgICBub3AgICAgCiAgICAweGI0YzU0
ZmZhOiAgICBub3AgICAgCiAgICAweGI0YzU0ZmZlOiAgICBiICAgICAgMHhiNDQ1YmM4ZQogICAg
MHhiNGM1NTAwMjogICAgbW92dyAgIHIxMiwgIzUxMgogICAgMHhiNGM1NTAwNjogICAgbW92dCAg
IHIxMiwgIzQ2MjA3CiAgICAweGI0YzU1MDBhOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1
NTAwZTogICAgYm5lICAgIDB4YjRjNTUyMWUKICAgIDB4YjRjNTUwMTI6ICAgIGxkciAgICByMTIs
IFtyMSwgIzEyXQogICAgMHhiNGM1NTAxNjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhi
NGM1NTAxYTogICAgc3RyICAgIHIxMiwgW3IxLCAjMTJdCiAgICAweGI0YzU1MDFlOiAgICBtb3Z3
ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTUwMjI6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAg
MHhiNGM1NTAyNjogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NTAyODogICAgbm9wICAgIAogICAg
MHhiNGM1NTAyYTogICAgbm9wICAgIAogICAgMHhiNGM1NTAyZTogICAgYiAgICAgIDB4YjQ0NWJj
OGUKICAgIDB4YjRjNTUwMzI6ICAgIG1vdncgICByMTIsICM0OTA4OAogICAgMHhiNGM1NTAzNjog
ICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU1MDNhOiAgICBjbXAgICAgcjAsIHIxMgog
ICAgMHhiNGM1NTAzZTogICAgYm5lICAgIDB4YjRjNTUwNjAKICAgIDB4YjRjNTUwNDA6ICAgIGxk
ciAgICByMTIsIFtyMSwgIzIwXQogICAgMHhiNGM1NTA0NDogICAgYWRkdyAgIHIxMiwgcjEyLCAj
MQogICAgMHhiNGM1NTA0ODogICAgc3RyICAgIHIxMiwgW3IxLCAjMjBdCiAgICAweGI0YzU1MDRj
OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTUwNTA6ICAgIG1vdnQgICByMTIsICM0
NjgzMgogICAgMHhiNGM1NTA1NDogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NTA1NjogICAgbm9w
ICAgIAogICAgMHhiNGM1NTA1ODogICAgbm9wICAgIAogICAgMHhiNGM1NTA1YzogICAgYiAgICAg
IDB4YjQ0NWJjOGUKICAgIDB4YjRjNTUwNjA6ICAgIG1vdncgICByMTIsICM0ODg5NgogICAgMHhi
NGM1NTA2NDogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU1MDY4OiAgICBjbXAgICAg
cjAsIHIxMgogICAgMHhiNGM1NTA2YzogICAgYm5lICAgIDB4YjRjNTUwOGUKICAgIDB4YjRjNTUw
NmU6ICAgIGxkciAgICByMTIsIFtyMSwgIzI0XQogICAgMHhiNGM1NTA3MjogICAgYWRkdyAgIHIx
MiwgcjEyLCAjMQogICAgMHhiNGM1NTA3NjogICAgc3RyICAgIHIxMiwgW3IxLCAjMjRdCiAgICAw
eGI0YzU1MDdhOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTUwN2U6ICAgIG1vdnQg
ICByMTIsICM0NjgzMgogICAgMHhiNGM1NTA4MjogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NTA4
NDogICAgbm9wICAgIAogICAgMHhiNGM1NTA4NjogICAgbm9wICAgIAogICAgMHhiNGM1NTA4YTog
ICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTUwOGU6ICAgIG1vdncgICByMTIsICMzMjAK
ICAgIDB4YjRjNTUwOTI6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1NTA5NjogICAg
Y21wICAgIHIwLCByMTIKICAgIDB4YjRjNTUwOWE6ICAgIGJuZSAgICAweGI0YzU1MjFlCiAgICAw
eGI0YzU1MDllOiAgICBsZHIgICAgcjEyLCBbcjEsICMxNl0KICAgIDB4YjRjNTUwYTI6ICAgIGFk
ZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTUwYTY6ICAgIHN0ciAgICByMTIsIFtyMSwgIzE2
XQogICAgMHhiNGM1NTBhYTogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzU1MGFlOiAg
ICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNTUwYjI6ICAgIGJseCAgICByMTIKICAgIDB4
YjRjNTUwYjQ6ICAgIG5vcCAgICAKICAgIDB4YjRjNTUwYjY6ICAgIG5vcCAgICAKICAgIDB4YjRj
NTUwYmE6ICAgIGIgICAgICAweGI0NDViYzhlCiAgICAweGI0YzU1MGJlOiAgICBtb3Z3ICAgcjEy
LCAjNDgzMjAKICAgIDB4YjRjNTUwYzI6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1
NTBjNjogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTUwY2E6ICAgIGJsdCAgICAweGI0YzU1
MTU4CiAgICAweGI0YzU1MGNjOiAgICBtb3Z3ICAgcjEyLCAjNDg3MDQKICAgIDB4YjRjNTUwZDA6
ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1NTBkNDogICAgY21wICAgIHIwLCByMTIK
ICAgIDB4YjRjNTUwZDg6ICAgIGJuZSAgICAweGI0YzU1MGZhCiAgICAweGI0YzU1MGRhOiAgICBs
ZHIgICAgcjEyLCBbcjEsICMyOF0KICAgIDB4YjRjNTUwZGU6ICAgIGFkZHcgICByMTIsIHIxMiwg
IzEKICAgIDB4YjRjNTUwZTI6ICAgIHN0ciAgICByMTIsIFtyMSwgIzI4XQogICAgMHhiNGM1NTBl
NjogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzU1MGVhOiAgICBtb3Z0ICAgcjEyLCAj
NDY4MzIKICAgIDB4YjRjNTUwZWU6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNTUwZjA6ICAgIG5v
cCAgICAKICAgIDB4YjRjNTUwZjI6ICAgIG5vcCAgICAKICAgIDB4YjRjNTUwZjY6ICAgIGIgICAg
ICAweGI0NDViYzhlCiAgICAweGI0YzU1MGZhOiAgICBtb3Z3ICAgcjEyLCAjNDgzMjAKICAgIDB4
YjRjNTUwZmU6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1NTEwMjogICAgY21wICAg
IHIwLCByMTIKICAgIDB4YjRjNTUxMDY6ICAgIGJuZSAgICAweGI0YzU1MTI4CiAgICAweGI0YzU1
MTA4OiAgICBsZHIgICAgcjEyLCBbcjEsICMzNl0KICAgIDB4YjRjNTUxMGM6ICAgIGFkZHcgICBy
MTIsIHIxMiwgIzEKICAgIDB4YjRjNTUxMTA6ICAgIHN0ciAgICByMTIsIFtyMSwgIzM2XQogICAg
MHhiNGM1NTExNDogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzU1MTE4OiAgICBtb3Z0
ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNTUxMWM6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNTUx
MWU6ICAgIG5vcCAgICAKICAgIDB4YjRjNTUxMjA6ICAgIG5vcCAgICAKICAgIDB4YjRjNTUxMjQ6
ICAgIGIgICAgICAweGI0NDViYzhlCiAgICAweGI0YzU1MTI4OiAgICBtb3Z3ICAgcjEyLCAjNDg1
MTIKICAgIDB4YjRjNTUxMmM6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1NTEzMDog
ICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTUxMzQ6ICAgIGJuZSAgICAweGI0YzU1MjFlCiAg
ICAweGI0YzU1MTM4OiAgICBsZHIgICAgcjEyLCBbcjEsICMzMl0KICAgIDB4YjRjNTUxM2M6ICAg
IGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTUxNDA6ICAgIHN0ciAgICByMTIsIFtyMSwg
IzMyXQogICAgMHhiNGM1NTE0NDogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzU1MTQ4
OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNTUxNGM6ICAgIGJseCAgICByMTIKICAg
IDB4YjRjNTUxNGU6ICAgIG5vcCAgICAKICAgIDB4YjRjNTUxNTA6ICAgIG5vcCAgICAKICAgIDB4
YjRjNTUxNTQ6ICAgIGIgICAgICAweGI0NDViYzhlCiAgICAweGI0YzU1MTU4OiAgICBtb3Z3ICAg
cjEyLCAjNDc5MzYKICAgIDB4YjRjNTUxNWM6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhi
NGM1NTE2MDogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTUxNjQ6ICAgIGJsdCAgICAweGI0
YzU1MWMyCiAgICAweGI0YzU1MTY2OiAgICBtb3Z3ICAgcjEyLCAjNDc5MzYKICAgIDB4YjRjNTUx
NmE6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1NTE2ZTogICAgY21wICAgIHIwLCBy
MTIKICAgIDB4YjRjNTUxNzI6ICAgIGJuZSAgICAweGI0YzU1MTk0CiAgICAweGI0YzU1MTc0OiAg
ICBsZHIgICAgcjEyLCBbcjEsICM0NF0KICAgIDB4YjRjNTUxNzg6ICAgIGFkZHcgICByMTIsIHIx
MiwgIzEKICAgIDB4YjRjNTUxN2M6ICAgIHN0ciAgICByMTIsIFtyMSwgIzQ0XQogICAgMHhiNGM1
NTE4MDogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzU1MTg0OiAgICBtb3Z0ICAgcjEy
LCAjNDY4MzIKICAgIDB4YjRjNTUxODg6ICAgIGJseCAgICByMTIKICAgIDB4YjRjNTUxOGE6ICAg
IG5vcCAgICAKICAgIDB4YjRjNTUxOGM6ICAgIG5vcCAgICAKICAgIDB4YjRjNTUxOTA6ICAgIGIg
ICAgICAweGI0NDViYzhlCiAgICAweGI0YzU1MTk0OiAgICBtb3Z3ICAgcjEyLCAjNDgxMjgKICAg
IDB4YjRjNTUxOTg6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1NTE5YzogICAgY21w
ICAgIHIwLCByMTIKICAgIDB4YjRjNTUxYTA6ICAgIGJuZSAgICAweGI0YzU1MjFlCiAgICAweGI0
YzU1MWEyOiAgICBsZHIgICAgcjEyLCBbcjEsICM0MF0KICAgIDB4YjRjNTUxYTY6ICAgIGFkZHcg
ICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTUxYWE6ICAgIHN0ciAgICByMTIsIFtyMSwgIzQwXQog
ICAgMHhiNGM1NTFhZTogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzU1MWIyOiAgICBt
b3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNTUxYjY6ICAgIGJseCAgICByMTIKICAgIDB4YjRj
NTUxYjg6ICAgIG5vcCAgICAKICAgIDB4YjRjNTUxYmE6ICAgIG5vcCAgICAKICAgIDB4YjRjNTUx
YmU6ICAgIGIgICAgICAweGI0NDViYzhlCiAgICAweGI0YzU1MWMyOiAgICBtb3Z3ICAgcjEyLCAj
NDc3NDQKICAgIDB4YjRjNTUxYzY6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAgMHhiNGM1NTFj
YTogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTUxY2U6ICAgIGJuZSAgICAweGI0YzU1MWYw
CiAgICAweGI0YzU1MWQwOiAgICBsZHIgICAgcjEyLCBbcjEsICM0OF0KICAgIDB4YjRjNTUxZDQ6
ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTUxZDg6ICAgIHN0ciAgICByMTIsIFty
MSwgIzQ4XQogICAgMHhiNGM1NTFkYzogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAgICAweGI0YzU1
MWUwOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNTUxZTQ6ICAgIGJseCAgICByMTIK
ICAgIDB4YjRjNTUxZTY6ICAgIG5vcCAgICAKICAgIDB4YjRjNTUxZTg6ICAgIG5vcCAgICAKICAg
IDB4YjRjNTUxZWM6ICAgIGIgICAgICAweGI0NDViYzhlCiAgICAweGI0YzU1MWYwOiAgICBtb3Z3
ICAgcjEyLCAjNDc1NTIKICAgIDB4YjRjNTUxZjQ6ICAgIG1vdnQgICByMTIsICM0NjIwMQogICAg
MHhiNGM1NTFmODogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRjNTUxZmM6ICAgIGJuZSAgICAw
eGI0YzU1MjFlCiAgICAweGI0YzU1MWZlOiAgICBsZHIgICAgcjEyLCBbcjEsICM1Ml0KICAgIDB4
YjRjNTUyMDI6ICAgIGFkZHcgICByMTIsIHIxMiwgIzEKICAgIDB4YjRjNTUyMDY6ICAgIHN0ciAg
ICByMTIsIFtyMSwgIzUyXQogICAgMHhiNGM1NTIwYTogICAgbW92dyAgIHIxMiwgIzMxMTM3CiAg
ICAweGI0YzU1MjBlOiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRjNTUyMTI6ICAgIGJs
eCAgICByMTIKICAgIDB4YjRjNTUyMTQ6ICAgIG5vcCAgICAKICAgIDB4YjRjNTUyMTY6ICAgIG5v
cCAgICAKICAgIDB4YjRjNTUyMWE6ICAgIGIgICAgICAweGI0NDViYzhlCiAgICAweGI0YzU1MjFl
OiAgICBtdm4gICAgcjEsICM0CiAgICAweGI0YzU1MjIyOiAgICBtb3Z3ICAgcjIsICM0NTM0NAog
ICAgMHhiNGM1NTIyNjogICAgbW92dCAgIHIyLCAjNDYyNjMKICAgIDB4YjRjNTUyMmE6ICAgIG1v
dncgICByOCwgIzU3MzY5CiAgICAweGI0YzU1MjJlOiAgICBtb3Z0ICAgcjgsICM0NjI3NwogICAg
MHhiNGM1NTIzMjogICAgbW92ICAgIGxyLCByOAogICAgMHhiNGM1NTIzNDogICAgbW92dyAgIHIx
MiwgIzE1OTY5CiAgICAweGI0YzU1MjM4OiAgICBtb3Z0ICAgcjEyLCAjNDY4MzIKICAgIDB4YjRj
NTUyM2M6ICAgIGJ4ICAgICByMTIKTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+
I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0
IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwNDQwICgweGI0N2Y3MDkwOltGdW5j
dGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBclpu
T2w6WzB4YjQ3OTE3MTAtPjB4YjQ3ZDU3NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2Rl
QmxvY2sgPSAjQXJabk9sOlsweGI0NzkxNzEwLT4weGI0N2Q1NzQwLCBMTEludEZ1bmN0aW9uQ2Fs
bCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3
YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChG
dW5jdGlvbjogQ2VsbDogMHhiNDdmMDM4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25B
cnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRWFHZkc0OlsweGI0NzkxNWMw
LT4weGI0N2Q1NjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0VhR2ZH
NDpbMHhiNDc5MTVjMC0+MHhiNDdkNTY0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5n
IHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2Fi
ZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6
IDB4YjQ3ZjAyYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4
YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0Fma1NWSTpbMHhiNDc5MTQ3MC0+MHhiNDdkNTU0MCwg
TExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNBZmtTVkk6WzB4YjQ3OTE0NzAt
PjB4YjQ3ZDU1NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9ycGhpYyBj
YWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVH
bG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMjAwICgw
eGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4
ZWN1dGFibGU6ICNCczFaUHA6WzB4YjQ3OTExZDAtPjB4YjQ3ZDU0NDAsIExMSW50RnVuY3Rpb25D
YWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQnMxWlBwOlsweGI0NzkxMWQwLT4weGI0N2Q1NDQwLCBM
TEludEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFs
PiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBh
dCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDdmMDE0MCAoMHhiNDdmNzA5MDpbRnVu
Y3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQmo0
OUhVOlsweGI0NzkxMDgwLT4weGI0N2Q1MzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29k
ZUJsb2NrID0gI0JqNDlIVTpbMHhiNDc5MTA4MC0+MHhiNDdkNTM0MCwgTExJbnRGdW5jdGlvbkNh
bGwsIDQ3XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0
N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAo
RnVuY3Rpb246IENlbGw6IDB4YjQ3OWJmYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9u
QXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JkMWlnOTpbMHhiNDc5MGYz
MC0+MHhiNDdkNTI0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNCZDFp
Zzk6WzB4YjQ3OTBmMzAtPjB4YjQ3ZDUyNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10KTGlua2lu
ZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdh
YmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxs
OiAweGI0NzliZjAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzow
eGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNDbEc0c1g6WzB4YjQ3OTBkZTAtPjB4YjQ3ZDUxNDAs
IExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQ2xHNHNYOlsweGI0NzkwZGUw
LT4weGI0N2Q1MTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMg
Y2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5l
R2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmU0MCAo
MHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBF
eGVjdXRhYmxlOiAjRFFidTZiOlsweGI0NzkwYzkwLT4weGI0N2Q1MDQwLCBMTEludEZ1bmN0aW9u
Q2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0RRYnU2YjpbMHhiNDc5MGM5MC0+MHhiNDdkNTA0MCwg
TExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2Jh
bD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0g
YXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJkODAgKDB4YjQ3ZjcwOTA6W0Z1
bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0I2
Y1JQODpbMHhiNDc5MGI0MC0+MHhiNDdkNGY0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDU5XSksIGNv
ZGVCbG9jayA9ICNCNmNSUDg6WzB4YjQ3OTBiNDAtPjB4YjQ3ZDRmNDAsIExMSW50RnVuY3Rpb25D
YWxsLCA1OV0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhi
NDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8g
KEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliY2MwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5v
bkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCQWhXWG86WzB4YjQ3OTA5
ZjAtPjB4YjQ3ZDRlNDAsIExMSW50RnVuY3Rpb25DYWxsLCA1OV0pLCBjb2RlQmxvY2sgPSAjQkFo
V1hvOlsweGI0NzkwOWYwLT4weGI0N2Q0ZTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNTldCkxpbmtp
bmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3
YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2Vs
bDogMHhiNDc5YmMwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86
MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRVdIbkJOOlsweGI0NzkwOGEwLT4weGI0N2Q0ZDQw
LCBMTEludEZ1bmN0aW9uQ2FsbCwgNjJdKSwgY29kZUJsb2NrID0gI0VXSG5CTjpbMHhiNDc5MDhh
MC0+MHhiNDdkNGQ0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDYyXQpMaW5raW5nIHBvbHltb3JwaGlj
IGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGlu
ZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJiNDAg
KDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsg
RXhlY3V0YWJsZTogI0RMYzlBMzpbMHhiNDc5MDc1MC0+MHhiNDdkNGM0MCwgTExJbnRGdW5jdGlv
bkNhbGwsIDY4XSksIGNvZGVCbG9jayA9ICNETGM5QTM6WzB4YjQ3OTA3NTAtPjB4YjQ3ZDRjNDAs
IExMSW50RnVuY3Rpb25DYWxsLCA2OF0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9i
YWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRd
IGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYTgwICgweGI0N2Y3MDkwOltG
dW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNB
RUp3Yk86WzB4YjQ3OTA2MDAtPjB4YjQ3ZDRiNDAsIExMSW50RnVuY3Rpb25DYWxsLCA2OF0pLCBj
b2RlQmxvY2sgPSAjQUVKd2JPOlsweGI0NzkwNjAwLT4weGI0N2Q0YjQwLCBMTEludEZ1bmN0aW9u
Q2FsbCwgNjhdCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4
YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRv
IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YjljMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBO
b25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQzdOaDVZOlsweGI0Nzkw
NGIwLT4weGI0N2Q0YTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjhdKSwgY29kZUJsb2NrID0gI0M3
Tmg1WTpbMHhiNDc5MDRiMC0+MHhiNDdkNGE0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDY4XQpHZW5l
cmF0ZWQgSklUIGNvZGUgZm9yIFZpcnR1YWwgY2FsbCBzbG93IHBhdGggdGh1bms6CiAgICBDb2Rl
IGF0IFsweGI0YzU1MjQxLCAweGI0YzU1MzAxKToKICAgIDB4YjRjNTUyNDA6ICAgIGxkciAgICBy
MTIsIFtyMiwgIzUyXQogICAgMHhiNGM1NTI0NDogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAg
MHhiNGM1NTI0ODogICAgc3RyICAgIHIxMiwgW3IyLCAjNTJdCiAgICAweGI0YzU1MjRjOiAgICBj
bW4gICAgcjEsICM1CiAgICAweGI0YzU1MjUwOiAgICBibmUgICAgMHhiNGM1NTI2OAogICAgMHhi
NGM1NTI1MjogICAgbGRyYiAgIHI2LCBbcjAsICM1XQogICAgMHhiNGM1NTI1NDogICAgY21wICAg
IHIyLCAjMjMKICAgIDB4YjRjNTUyNTY6ICAgIGJuZSAgICAweGI0YzU1MjY4CiAgICAweGI0YzU1
MjU4OiAgICBsZHIgICAgcjgsIFtyMCwgIzIwXQogICAgMHhiNGM1NTI1YzogICAgbGRyICAgIHI4
LCBbcjgsICMyOF0KICAgIDB4YjRjNTUyNjA6ICAgIHRzdCAgICByOCwgcjgKICAgIDB4YjRjNTUy
NjQ6ICAgIGJlcSAgICAweGI0YzU1MjY4CiAgICAweGI0YzU1MjY2OiAgICBieCAgICAgcjgKICAg
IDB4YjRjNTUyNjg6ICAgIHB1c2ggICB7cjcsIGxyfQogICAgMHhiNGM1NTI2YzogICAgbW92ICAg
IHI3LCBzcAogICAgMHhiNGM1NTI2ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjRjNTUy
NzI6ICAgIG1vdnQgICByNiwgIzQ2MjA3CiAgICAweGI0YzU1Mjc2OiAgICBzdHIgICAgcjcsIFty
Nl0KICAgIDB4YjRjNTUyNzg6ICAgIG12biAgICByMTIsICMyMwogICAgMHhiNGM1NTI3YzogICAg
bW92ICAgIHNwLCBzcAogICAgMHhiNGM1NTI3ZTogICAgYWRkICAgIHNwLCByMTIKICAgIDB4YjRj
NTUyODA6ICAgIG1vdiAgICByMSwgcjIKICAgIDB4YjRjNTUyODI6ICAgIG1vdiAgICByMCwgcjcK
ICAgIDB4YjRjNTUyODQ6ICAgIG1vdncgICByNCwgIzUxMjc3CiAgICAweGI0YzU1Mjg4OiAgICBt
b3Z0ICAgcjQsICM0Njc3NgogICAgMHhiNGM1NTI4YzogICAgYmx4ICAgIHI0CiAgICAweGI0YzU1
MjhlOiAgICBhZGQgICAgc3AsIHNwLCAjNgogICAgMHhiNGM1NTI5MDogICAgbW92ICAgIHNwLCBy
NwogICAgMHhiNGM1NTI5MjogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI0YzU1Mjk2OiAgICB0
c3QgICAgcjEsIHIxCiAgICAweGI0YzU1Mjk4OiAgICBiZXEgICAgMHhiNGM1NTJlOAogICAgMHhi
NGM1NTI5YTogICAgbW92ICAgIHI1LCBscgogICAgMHhiNGM1NTI5YzogICAgbGRyICAgIHIxLCBb
cjcsICMyNF0KICAgIDB4YjRjNTUyOWU6ICAgIGxkciAgICByMywgW3I3LCAjOF0KICAgIDB4YjRj
NTUyYTA6ICAgIGxkciAgICByMywgW3IzLCAjMzJdCiAgICAweGI0YzU1MmEyOiAgICBjbXAgICAg
cjMsIHIxCiAgICAweGI0YzU1MmE0OiAgICBibHMgICAgMHhiNGM1NTJhOAogICAgMHhiNGM1NTJh
NjogICAgbW92ICAgIHIxLCByMwogICAgMHhiNGM1NTJhODogICAgYWRkcyAgIHIxLCByMSwgIzUK
ICAgIDB4YjRjNTUyYWE6ICAgIG12biAgICByMTIsICMxCiAgICAweGI0YzU1MmFlOiAgICBhbmQg
ICAgcjEsIHIxLCByMTIKICAgIDB4YjRjNTUyYjI6ICAgIG1vdiAgICByMTIsICM4CiAgICAweGI0
YzU1MmI2OiAgICBzbXVsbCAgcjEsIHIxMiwgcjEsIHIxMgogICAgMHhiNGM1NTJiYTogICAgYWRk
cyAgIHIzLCByNywgcjEKICAgIDB4YjRjNTUyYmM6ICAgIGxkciAgICByMSwgW3NwLCAjMTZdCiAg
ICAweGI0YzU1MmJlOiAgICBhZGRzICAgcjEsIHIxLCAjNQogICAgMHhiNGM1NTJjMDogICAgbXZu
ICAgIHIxMiwgIzEKICAgIDB4YjRjNTUyYzQ6ICAgIGFuZCAgICByMSwgcjEsIHIxMgogICAgMHhi
NGM1NTJjODogICAgbW92ICAgIHIxMiwgIzgKICAgIDB4YjRjNTUyY2M6ICAgIHNtdWxsICByMSwg
cjEyLCByMSwgcjEyCiAgICAweGI0YzU1MmQwOiAgICBsZHIgICAgbHIsIFtyNywgIzRdCiAgICAw
eGI0YzU1MmQ0OiAgICBzdWJzICAgcjEsICM4CiAgICAweGI0YzU1MmQ2OiAgICBzdWJzICAgcjMs
IHIzLCByMQogICAgMHhiNGM1NTJkODogICAgbGRyICAgIHI3LCBbcjddCiAgICAweGI0YzU1MmRh
OiAgICBzdWJzICAgcjEsIHIxLCAjNAogICAgMHhiNGM1NTJkYzogICAgbGRyICAgIHIyLCBbc3As
IHIxXQogICAgMHhiNGM1NTJlMDogICAgc3RyICAgIHIyLCBbcjMsIHIxXQogICAgMHhiNGM1NTJl
MjogICAgdHN0ICAgIHIxLCByMQogICAgMHhiNGM1NTJlNDogICAgYm5lICAgIDB4YjRjNTU0ZGEK
ICAgIDB4YjRjNTUyZTY6ICAgIG1vdiAgICBzcCwgcjMKICAgIDB4YjRjNTUyZTg6ICAgIGJ4ICAg
ICByMApDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2Rl
UHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwg
YmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBD
b2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4
KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBh
dCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVl
MDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2Fs
bCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0
YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMg
Y2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAw
eGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBo
aWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24g
PSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1v
cnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRp
b24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9s
eW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9j
YXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3Ig
cG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRh
TG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBm
b3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBk
YXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5m
byBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5
LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsg
aW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVl
MDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxp
bmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0
YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpHZW5lcmF0ZWQgSklU
IGNvZGUgZm9yIFBvbHltb3JwaGljIGNhbGwgc3R1YiBmb3IgPGdsb2JhbD4jQnlQeklvOlsweGI0
N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0sIHJldHVybiBwb2ludCAw
eGI0YzVlMDE5LCB0YXJnZXRzIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwNDQw
ICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7
IEV4ZWN1dGFibGU6ICNBclpuT2w6WzB4YjQ3OTE3MTAtPjB4YjQ3ZDU3NDAsIExMSW50RnVuY3Rp
b25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQXJabk9sOlsweGI0NzkxNzEwLT4weGI0N2Q1NzQw
LCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4
YjQ3ZjAzODAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3
ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0VhR2ZHNDpbMHhiNDc5MTVjMC0+MHhiNDdkNTY0MCwgTExJ
bnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNFYUdmRzQ6WzB4YjQ3OTE1YzAtPjB4
YjQ3ZDU2NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10+LCA8dmFyaWFudCA9IChGdW5jdGlvbjog
Q2VsbDogMHhiNDdmMDJjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJv
dG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQWZrU1ZJOlsweGI0NzkxNDcwLT4weGI0N2Q1
NTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0Fma1NWSTpbMHhiNDc5
MTQ3MC0+MHhiNDdkNTU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XT4sIDx2YXJpYW50ID0gKEZ1
bmN0aW9uOiBDZWxsOiAweGI0N2YwMjAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFy
cmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCczFaUHA6WzB4YjQ3OTExZDAt
PjB4YjQ3ZDU0NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjQnMxWlBw
OlsweGI0NzkxMWQwLT4weGI0N2Q1NDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlh
bnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAxNDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7
fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JqNDlIVTpbMHhi
NDc5MTA4MC0+MHhiNDdkNTM0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9
ICNCajQ5SFU6WzB4YjQ3OTEwODAtPjB4YjQ3ZDUzNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10+
LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmZjMCAoMHhiNDdmNzA5MDpbRnVu
Y3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQmQx
aWc5OlsweGI0NzkwZjMwLT4weGI0N2Q1MjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29k
ZUJsb2NrID0gI0JkMWlnOTpbMHhiNDc5MGYzMC0+MHhiNDdkNTI0MCwgTExJbnRGdW5jdGlvbkNh
bGwsIDQ3XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliZjAwICgweGI0N2Y3
MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFi
bGU6ICNDbEc0c1g6WzB4YjQ3OTBkZTAtPjB4YjQ3ZDUxNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0
N10pLCBjb2RlQmxvY2sgPSAjQ2xHNHNYOlsweGI0NzkwZGUwLT4weGI0N2Q1MTQwLCBMTEludEZ1
bmN0aW9uQ2FsbCwgNDddPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJlNDAg
KDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsg
RXhlY3V0YWJsZTogI0RRYnU2YjpbMHhiNDc5MGM5MC0+MHhiNDdkNTA0MCwgTExJbnRGdW5jdGlv
bkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNEUWJ1NmI6WzB4YjQ3OTBjOTAtPjB4YjQ3ZDUwNDAs
IExMSW50RnVuY3Rpb25DYWxsLCA0N10+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhi
NDc5YmQ4MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdl
ZGRlMF0pOyBFeGVjdXRhYmxlOiAjQjZjUlA4OlsweGI0NzkwYjQwLT4weGI0N2Q0ZjQwLCBMTElu
dEZ1bmN0aW9uQ2FsbCwgNTldKSwgY29kZUJsb2NrID0gI0I2Y1JQODpbMHhiNDc5MGI0MC0+MHhi
NDdkNGY0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDU5XT4sIDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBD
ZWxsOiAweGI0NzliY2MwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90
bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCQWhXWG86WzB4YjQ3OTA5ZjAtPjB4YjQ3ZDRl
NDAsIExMSW50RnVuY3Rpb25DYWxsLCA1OV0pLCBjb2RlQmxvY2sgPSAjQkFoV1hvOlsweGI0Nzkw
OWYwLT4weGI0N2Q0ZTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNTldPiwgPHZhcmlhbnQgPSAoRnVu
Y3Rpb246IENlbGw6IDB4YjQ3OWJjMDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJy
YXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0VXSG5CTjpbMHhiNDc5MDhhMC0+
MHhiNDdkNGQ0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDYyXSksIGNvZGVCbG9jayA9ICNFV0huQk46
WzB4YjQ3OTA4YTAtPjB4YjQ3ZDRkNDAsIExMSW50RnVuY3Rpb25DYWxsLCA2Ml0+LCA8dmFyaWFu
dCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmI0MCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9
LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjRExjOUEzOlsweGI0
NzkwNzUwLT4weGI0N2Q0YzQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjhdKSwgY29kZUJsb2NrID0g
I0RMYzlBMzpbMHhiNDc5MDc1MC0+MHhiNDdkNGM0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDY4XT4s
IDx2YXJpYW50ID0gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliYTgwICgweGI0N2Y3MDkwOltGdW5j
dGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNBRUp3
Yk86WzB4YjQ3OTA2MDAtPjB4YjQ3ZDRiNDAsIExMSW50RnVuY3Rpb25DYWxsLCA2OF0pLCBjb2Rl
QmxvY2sgPSAjQUVKd2JPOlsweGI0NzkwNjAwLT4weGI0N2Q0YjQwLCBMTEludEZ1bmN0aW9uQ2Fs
bCwgNjhdPiwgPHZhcmlhbnQgPSAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWI5YzAgKDB4YjQ3Zjcw
OTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJs
ZTogI0M3Tmg1WTpbMHhiNDc5MDRiMC0+MHhiNDdkNGE0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDY4
XSksIGNvZGVCbG9jayA9ICNDN05oNVk6WzB4YjQ3OTA0YjAtPjB4YjQ3ZDRhNDAsIExMSW50RnVu
Y3Rpb25DYWxsLCA2OF0+LCA8dmFyaWFudCA9IChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YjkwMCAo
MHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBF
eGVjdXRhYmxlOiAjQzFnbTJJOlsweGI0NzkwMzYwLT4weGI0N2Q0OTQwLCBMTEludEZ1bmN0aW9u
Q2FsbCwgNjhdKSwgY29kZUJsb2NrID0gI0MxZ20ySTpbMHhiNDc5MDM2MC0+MHhiNDdkNDk0MCwg
TExJbnRGdW5jdGlvbkNhbGwsIDY4XT46CiAgICBDb2RlIGF0IFsweGI0YzU1MzAxLCAweGI0YzU1
NjQxKToKICAgIDB4YjRjNTUzMDA6ICAgIG1vdncgICByMSwgIzY1NDMyCiAgICAweGI0YzU1MzA0
OiAgICBtb3Z0ICAgcjEsICMxODYKICAgIDB4YjRjNTUzMDg6ICAgIG1vdncgICByMTIsICM0ODg5
NgogICAgMHhiNGM1NTMwYzogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU1MzEwOiAg
ICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NTMxNDogICAgYmx0ICAgIDB4YjRjNTU0N2UKICAg
IDB4YjRjNTUzMTg6ICAgIG1vdncgICByMTIsICM1MTIKICAgIDB4YjRjNTUzMWM6ICAgIG1vdnQg
ICByMTIsICM0NjIwNwogICAgMHhiNGM1NTMyMDogICAgY21wICAgIHIwLCByMTIKICAgIDB4YjRj
NTUzMjQ6ICAgIGJsdCAgICAweGI0YzU1M2YyCiAgICAweGI0YzU1MzI4OiAgICBtb3Z3ICAgcjEy
LCAjODk2CiAgICAweGI0YzU1MzJjOiAgICBtb3Z0ICAgcjEyLCAjNDYyMDcKICAgIDB4YjRjNTUz
MzA6ICAgIGNtcCAgICByMCwgcjEyCiAgICAweGI0YzU1MzM0OiAgICBibHQgICAgMHhiNGM1NTM5
NAogICAgMHhiNGM1NTMzNjogICAgbW92dyAgIHIxMiwgIzEwODgKICAgIDB4YjRjNTUzM2E6ICAg
IG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1NTMzZTogICAgY21wICAgIHIwLCByMTIKICAg
IDB4YjRjNTUzNDI6ICAgIGJuZSAgICAweGI0YzU1MzY0CiAgICAweGI0YzU1MzQ0OiAgICBsZHIg
ICAgcjEyLCBbcjFdCiAgICAweGI0YzU1MzQ4OiAgICBhZGR3ICAgcjEyLCByMTIsICMxCiAgICAw
eGI0YzU1MzRjOiAgICBzdHIgICAgcjEyLCBbcjFdCiAgICAweGI0YzU1MzUwOiAgICBtb3Z3ICAg
cjEyLCAjMzExMzcKICAgIDB4YjRjNTUzNTQ6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhi
NGM1NTM1ODogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NTM1YTogICAgbm9wICAgIAogICAgMHhi
NGM1NTM1YzogICAgbm9wICAgIAogICAgMHhiNGM1NTM2MDogICAgYiAgICAgIDB4YjQ0NWJjOGUK
ICAgIDB4YjRjNTUzNjQ6ICAgIG1vdncgICByMTIsICM4OTYKICAgIDB4YjRjNTUzNjg6ICAgIG1v
dnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1NTM2YzogICAgY21wICAgIHIwLCByMTIKICAgIDB4
YjRjNTUzNzA6ICAgIGJuZSAgICAweGI0YzU1NjFlCiAgICAweGI0YzU1Mzc0OiAgICBsZHIgICAg
cjEyLCBbcjEsICM0XQogICAgMHhiNGM1NTM3ODogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAg
MHhiNGM1NTM3YzogICAgc3RyICAgIHIxMiwgW3IxLCAjNF0KICAgIDB4YjRjNTUzODA6ICAgIG1v
dncgICByMTIsICMzMTEzNwogICAgMHhiNGM1NTM4NDogICAgbW92dCAgIHIxMiwgIzQ2ODMyCiAg
ICAweGI0YzU1Mzg4OiAgICBibHggICAgcjEyCiAgICAweGI0YzU1MzhhOiAgICBub3AgICAgCiAg
ICAweGI0YzU1MzhjOiAgICBub3AgICAgCiAgICAweGI0YzU1MzkwOiAgICBiICAgICAgMHhiNDQ1
YmM4ZQogICAgMHhiNGM1NTM5NDogICAgbW92dyAgIHIxMiwgIzUxMgogICAgMHhiNGM1NTM5ODog
ICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzU1MzljOiAgICBjbXAgICAgcjAsIHIxMgog
ICAgMHhiNGM1NTNhMDogICAgYm5lICAgIDB4YjRjNTUzYzIKICAgIDB4YjRjNTUzYTI6ICAgIGxk
ciAgICByMTIsIFtyMSwgIzEyXQogICAgMHhiNGM1NTNhNjogICAgYWRkdyAgIHIxMiwgcjEyLCAj
MQogICAgMHhiNGM1NTNhYTogICAgc3RyICAgIHIxMiwgW3IxLCAjMTJdCiAgICAweGI0YzU1M2Fl
OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTUzYjI6ICAgIG1vdnQgICByMTIsICM0
NjgzMgogICAgMHhiNGM1NTNiNjogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NTNiODogICAgbm9w
ICAgIAogICAgMHhiNGM1NTNiYTogICAgbm9wICAgIAogICAgMHhiNGM1NTNiZTogICAgYiAgICAg
IDB4YjQ0NWJjOGUKICAgIDB4YjRjNTUzYzI6ICAgIG1vdncgICByMTIsICM3MDQKICAgIDB4YjRj
NTUzYzY6ICAgIG1vdnQgICByMTIsICM0NjIwNwogICAgMHhiNGM1NTNjYTogICAgY21wICAgIHIw
LCByMTIKICAgIDB4YjRjNTUzY2U6ICAgIGJuZSAgICAweGI0YzU1NjFlCiAgICAweGI0YzU1M2Qy
OiAgICBsZHIgICAgcjEyLCBbcjEsICM4XQogICAgMHhiNGM1NTNkNjogICAgYWRkdyAgIHIxMiwg
cjEyLCAjMQogICAgMHhiNGM1NTNkYTogICAgc3RyICAgIHIxMiwgW3IxLCAjOF0KICAgIDB4YjRj
NTUzZGU6ICAgIG1vdncgICByMTIsICMzMTEzNwogICAgMHhiNGM1NTNlMjogICAgbW92dCAgIHIx
MiwgIzQ2ODMyCiAgICAweGI0YzU1M2U2OiAgICBibHggICAgcjEyCiAgICAweGI0YzU1M2U4OiAg
ICBub3AgICAgCiAgICAweGI0YzU1M2VhOiAgICBub3AgICAgCiAgICAweGI0YzU1M2VlOiAgICBi
ICAgICAgMHhiNDQ1YmM4ZQogICAgMHhiNGM1NTNmMjogICAgbW92dyAgIHIxMiwgIzMyMAogICAg
MHhiNGM1NTNmNjogICAgbW92dCAgIHIxMiwgIzQ2MjA3CiAgICAweGI0YzU1M2ZhOiAgICBjbXAg
ICAgcjAsIHIxMgogICAgMHhiNGM1NTNmZTogICAgYm5lICAgIDB4YjRjNTU0MjAKICAgIDB4YjRj
NTU0MDA6ICAgIGxkciAgICByMTIsIFtyMSwgIzE2XQogICAgMHhiNGM1NTQwNDogICAgYWRkdyAg
IHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NTQwODogICAgc3RyICAgIHIxMiwgW3IxLCAjMTZdCiAg
ICAweGI0YzU1NDBjOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTU0MTA6ICAgIG1v
dnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NTQxNDogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1
NTQxNjogICAgbm9wICAgIAogICAgMHhiNGM1NTQxODogICAgbm9wICAgIAogICAgMHhiNGM1NTQx
YzogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTU0MjA6ICAgIG1vdncgICByMTIsICM0
ODg5NgogICAgMHhiNGM1NTQyNDogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU1NDI4
OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NTQyYzogICAgYm5lICAgIDB4YjRjNTU0NGUK
ICAgIDB4YjRjNTU0MmU6ICAgIGxkciAgICByMTIsIFtyMSwgIzI0XQogICAgMHhiNGM1NTQzMjog
ICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NTQzNjogICAgc3RyICAgIHIxMiwgW3Ix
LCAjMjRdCiAgICAweGI0YzU1NDNhOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTU0
M2U6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NTQ0MjogICAgYmx4ICAgIHIxMgog
ICAgMHhiNGM1NTQ0NDogICAgbm9wICAgIAogICAgMHhiNGM1NTQ0NjogICAgbm9wICAgIAogICAg
MHhiNGM1NTQ0YTogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTU0NGU6ICAgIG1vdncg
ICByMTIsICM0OTA4OAogICAgMHhiNGM1NTQ1MjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAw
eGI0YzU1NDU2OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NTQ1YTogICAgYm5lICAgIDB4
YjRjNTU2MWUKICAgIDB4YjRjNTU0NWU6ICAgIGxkciAgICByMTIsIFtyMSwgIzIwXQogICAgMHhi
NGM1NTQ2MjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NTQ2NjogICAgc3RyICAg
IHIxMiwgW3IxLCAjMjBdCiAgICAweGI0YzU1NDZhOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAg
IDB4YjRjNTU0NmU6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NTQ3MjogICAgYmx4
ICAgIHIxMgogICAgMHhiNGM1NTQ3NDogICAgbm9wICAgIAogICAgMHhiNGM1NTQ3NjogICAgbm9w
ICAgIAogICAgMHhiNGM1NTQ3YTogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTU0N2U6
ICAgIG1vdncgICByMTIsICM0ODEyOAogICAgMHhiNGM1NTQ4MjogICAgbW92dCAgIHIxMiwgIzQ2
MjAxCiAgICAweGI0YzU1NDg2OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NTQ4YTogICAg
Ymx0ICAgIDB4YjRjNTU1NTgKICAgIDB4YjRjNTU0OGU6ICAgIG1vdncgICByMTIsICM0ODUxMgog
ICAgMHhiNGM1NTQ5MjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU1NDk2OiAgICBj
bXAgICAgcjAsIHIxMgogICAgMHhiNGM1NTQ5YTogICAgYmx0ICAgIDB4YjRjNTU0ZmEKICAgIDB4
YjRjNTU0OWM6ICAgIG1vdncgICByMTIsICM0ODcwNAogICAgMHhiNGM1NTRhMDogICAgbW92dCAg
IHIxMiwgIzQ2MjAxCiAgICAweGI0YzU1NGE0OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1
NTRhODogICAgYm5lICAgIDB4YjRjNTU0Y2EKICAgIDB4YjRjNTU0YWE6ICAgIGxkciAgICByMTIs
IFtyMSwgIzI4XQogICAgMHhiNGM1NTRhZTogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhi
NGM1NTRiMjogICAgc3RyICAgIHIxMiwgW3IxLCAjMjhdCiAgICAweGI0YzU1NGI2OiAgICBtb3Z3
ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTU0YmE6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAg
MHhiNGM1NTRiZTogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NTRjMDogICAgbm9wICAgIAogICAg
MHhiNGM1NTRjMjogICAgbm9wICAgIAogICAgMHhiNGM1NTRjNjogICAgYiAgICAgIDB4YjQ0NWJj
OGUKICAgIDB4YjRjNTU0Y2E6ICAgIG1vdncgICByMTIsICM0ODUxMgogICAgMHhiNGM1NTRjZTog
ICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU1NGQyOiAgICBjbXAgICAgcjAsIHIxMgog
ICAgMHhiNGM1NTRkNjogICAgYm5lICAgIDB4YjRjNTU2MWUKICAgIDB4YjRjNTU0ZGE6ICAgIGxk
ciAgICByMTIsIFtyMSwgIzMyXQogICAgMHhiNGM1NTRkZTogICAgYWRkdyAgIHIxMiwgcjEyLCAj
MQogICAgMHhiNGM1NTRlMjogICAgc3RyICAgIHIxMiwgW3IxLCAjMzJdCiAgICAweGI0YzU1NGU2
OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTU0ZWE6ICAgIG1vdnQgICByMTIsICM0
NjgzMgogICAgMHhiNGM1NTRlZTogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NTRmMDogICAgbm9w
ICAgIAogICAgMHhiNGM1NTRmMjogICAgbm9wICAgIAogICAgMHhiNGM1NTRmNjogICAgYiAgICAg
IDB4YjQ0NWJjOGUKICAgIDB4YjRjNTU0ZmE6ICAgIG1vdncgICByMTIsICM0ODMyMAogICAgMHhi
NGM1NTRmZTogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU1NTAyOiAgICBjbXAgICAg
cjAsIHIxMgogICAgMHhiNGM1NTUwNjogICAgYm5lICAgIDB4YjRjNTU1MjgKICAgIDB4YjRjNTU1
MDg6ICAgIGxkciAgICByMTIsIFtyMSwgIzM2XQogICAgMHhiNGM1NTUwYzogICAgYWRkdyAgIHIx
MiwgcjEyLCAjMQogICAgMHhiNGM1NTUxMDogICAgc3RyICAgIHIxMiwgW3IxLCAjMzZdCiAgICAw
eGI0YzU1NTE0OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTU1MTg6ICAgIG1vdnQg
ICByMTIsICM0NjgzMgogICAgMHhiNGM1NTUxYzogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NTUx
ZTogICAgbm9wICAgIAogICAgMHhiNGM1NTUyMDogICAgbm9wICAgIAogICAgMHhiNGM1NTUyNDog
ICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTU1Mjg6ICAgIG1vdncgICByMTIsICM0ODEy
OAogICAgMHhiNGM1NTUyYzogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU1NTMwOiAg
ICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NTUzNDogICAgYm5lICAgIDB4YjRjNTU2MWUKICAg
IDB4YjRjNTU1Mzg6ICAgIGxkciAgICByMTIsIFtyMSwgIzQwXQogICAgMHhiNGM1NTUzYzogICAg
YWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NTU0MDogICAgc3RyICAgIHIxMiwgW3IxLCAj
NDBdCiAgICAweGI0YzU1NTQ0OiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTU1NDg6
ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NTU0YzogICAgYmx4ICAgIHIxMgogICAg
MHhiNGM1NTU0ZTogICAgbm9wICAgIAogICAgMHhiNGM1NTU1MDogICAgbm9wICAgIAogICAgMHhi
NGM1NTU1NDogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTU1NTg6ICAgIG1vdncgICBy
MTIsICM0Nzc0NAogICAgMHhiNGM1NTU1YzogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0
YzU1NTYwOiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NTU2NDogICAgYmx0ICAgIDB4YjRj
NTU1YzIKICAgIDB4YjRjNTU1NjY6ICAgIG1vdncgICByMTIsICM0Nzc0NAogICAgMHhiNGM1NTU2
YTogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU1NTZlOiAgICBjbXAgICAgcjAsIHIx
MgogICAgMHhiNGM1NTU3MjogICAgYm5lICAgIDB4YjRjNTU1OTQKICAgIDB4YjRjNTU1NzQ6ICAg
IGxkciAgICByMTIsIFtyMSwgIzQ4XQogICAgMHhiNGM1NTU3ODogICAgYWRkdyAgIHIxMiwgcjEy
LCAjMQogICAgMHhiNGM1NTU3YzogICAgc3RyICAgIHIxMiwgW3IxLCAjNDhdCiAgICAweGI0YzU1
NTgwOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTU1ODQ6ICAgIG1vdnQgICByMTIs
ICM0NjgzMgogICAgMHhiNGM1NTU4ODogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1NTU4YTogICAg
bm9wICAgIAogICAgMHhiNGM1NTU4YzogICAgbm9wICAgIAogICAgMHhiNGM1NTU5MDogICAgYiAg
ICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTU1OTQ6ICAgIG1vdncgICByMTIsICM0NzkzNgogICAg
MHhiNGM1NTU5ODogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU1NTljOiAgICBjbXAg
ICAgcjAsIHIxMgogICAgMHhiNGM1NTVhMDogICAgYm5lICAgIDB4YjRjNTU2MWUKICAgIDB4YjRj
NTU1YTI6ICAgIGxkciAgICByMTIsIFtyMSwgIzQ0XQogICAgMHhiNGM1NTVhNjogICAgYWRkdyAg
IHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NTVhYTogICAgc3RyICAgIHIxMiwgW3IxLCAjNDRdCiAg
ICAweGI0YzU1NWFlOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTU1YjI6ICAgIG1v
dnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NTViNjogICAgYmx4ICAgIHIxMgogICAgMHhiNGM1
NTViODogICAgbm9wICAgIAogICAgMHhiNGM1NTViYTogICAgbm9wICAgIAogICAgMHhiNGM1NTVi
ZTogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTU1YzI6ICAgIG1vdncgICByMTIsICM0
NzU1MgogICAgMHhiNGM1NTVjNjogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAweGI0YzU1NWNh
OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NTVjZTogICAgYm5lICAgIDB4YjRjNTU1ZjAK
ICAgIDB4YjRjNTU1ZDA6ICAgIGxkciAgICByMTIsIFtyMSwgIzUyXQogICAgMHhiNGM1NTVkNDog
ICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NTVkODogICAgc3RyICAgIHIxMiwgW3Ix
LCAjNTJdCiAgICAweGI0YzU1NWRjOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAgIDB4YjRjNTU1
ZTA6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NTVlNDogICAgYmx4ICAgIHIxMgog
ICAgMHhiNGM1NTVlNjogICAgbm9wICAgIAogICAgMHhiNGM1NTVlODogICAgbm9wICAgIAogICAg
MHhiNGM1NTVlYzogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTU1ZjA6ICAgIG1vdncg
ICByMTIsICM0NzM2MAogICAgMHhiNGM1NTVmNDogICAgbW92dCAgIHIxMiwgIzQ2MjAxCiAgICAw
eGI0YzU1NWY4OiAgICBjbXAgICAgcjAsIHIxMgogICAgMHhiNGM1NTVmYzogICAgYm5lICAgIDB4
YjRjNTU2MWUKICAgIDB4YjRjNTU1ZmU6ICAgIGxkciAgICByMTIsIFtyMSwgIzU2XQogICAgMHhi
NGM1NTYwMjogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NTYwNjogICAgc3RyICAg
IHIxMiwgW3IxLCAjNTZdCiAgICAweGI0YzU1NjBhOiAgICBtb3Z3ICAgcjEyLCAjMzExMzcKICAg
IDB4YjRjNTU2MGU6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1NTYxMjogICAgYmx4
ICAgIHIxMgogICAgMHhiNGM1NTYxNDogICAgbm9wICAgIAogICAgMHhiNGM1NTYxNjogICAgbm9w
ICAgIAogICAgMHhiNGM1NTYxYTogICAgYiAgICAgIDB4YjQ0NWJjOGUKICAgIDB4YjRjNTU2MWU6
ICAgIG12biAgICByMSwgIzQKICAgIDB4YjRjNTU2MjI6ICAgIG1vdncgICByMiwgIzQ1MzQ0CiAg
ICAweGI0YzU1NjI2OiAgICBtb3Z0ICAgcjIsICM0NjI2MwogICAgMHhiNGM1NTYyYTogICAgbW92
dyAgIHI4LCAjNTczNjkKICAgIDB4YjRjNTU2MmU6ICAgIG1vdnQgICByOCwgIzQ2Mjc3CiAgICAw
eGI0YzU1NjMyOiAgICBtb3YgICAgbHIsIHI4CiAgICAweGI0YzU1NjM0OiAgICBtb3Z3ICAgcjEy
LCAjMTU5NjkKICAgIDB4YjRjNTU2Mzg6ICAgIG1vdnQgICByMTIsICM0NjgzMgogICAgMHhiNGM1
NTYzYzogICAgYnggICAgIHIxMgpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4j
QnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQg
YmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjA0NDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0
aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FyWm5P
bDpbMHhiNDc5MTcxMC0+MHhiNDdkNTc0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVC
bG9jayA9ICNBclpuT2w6WzB4YjQ3OTE3MTAtPjB4YjQ3ZDU3NDAsIExMSW50RnVuY3Rpb25DYWxs
LCA0N10KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdh
M2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1
bmN0aW9uOiBDZWxsOiAweGI0N2YwMzgwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFy
cmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFYUdmRzQ6WzB4YjQ3OTE1YzAt
PjB4YjQ3ZDU2NDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjRWFHZkc0
OlsweGI0NzkxNWMwLT4weGI0N2Q1NjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcg
cG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJm
NTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDog
MHhiNDdmMDJjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhi
NDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQWZrU1ZJOlsweGI0NzkxNDcwLT4weGI0N2Q1NTQwLCBM
TEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0Fma1NWSTpbMHhiNDc5MTQ3MC0+
MHhiNDdkNTU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5nIHBvbHltb3JwaGljIGNh
bGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUds
b2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3ZjAyMDAgKDB4
YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhl
Y3V0YWJsZTogI0JzMVpQcDpbMHhiNDc5MTFkMC0+MHhiNDdkNTQ0MCwgTExJbnRGdW5jdGlvbkNh
bGwsIDQ3XSksIGNvZGVCbG9jayA9ICNCczFaUHA6WzB4YjQ3OTExZDAtPjB4YjQ3ZDU0NDAsIExM
SW50RnVuY3Rpb25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+
I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0
IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0N2YwMTQwICgweGI0N2Y3MDkwOltGdW5j
dGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNCajQ5
SFU6WzB4YjQ3OTEwODAtPjB4YjQ3ZDUzNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10pLCBjb2Rl
QmxvY2sgPSAjQmo0OUhVOlsweGI0NzkxMDgwLT4weGI0N2Q1MzQwLCBMTEludEZ1bmN0aW9uQ2Fs
bCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3
YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChG
dW5jdGlvbjogQ2VsbDogMHhiNDc5YmZjMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25B
cnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQmQxaWc5OlsweGI0NzkwZjMw
LT4weGI0N2Q1MjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNDddKSwgY29kZUJsb2NrID0gI0JkMWln
OTpbMHhiNDc5MGYzMC0+MHhiNDdkNTI0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDQ3XQpMaW5raW5n
IHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2Fi
ZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6
IDB4YjQ3OWJmMDAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4
YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0NsRzRzWDpbMHhiNDc5MGRlMC0+MHhiNDdkNTE0MCwg
TExJbnRGdW5jdGlvbkNhbGwsIDQ3XSksIGNvZGVCbG9jayA9ICNDbEc0c1g6WzB4YjQ3OTBkZTAt
PjB4YjQ3ZDUxNDAsIExMSW50RnVuY3Rpb25DYWxsLCA0N10KTGlua2luZyBwb2x5bW9ycGhpYyBj
YWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVH
bG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliZTQwICgw
eGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4
ZWN1dGFibGU6ICNEUWJ1NmI6WzB4YjQ3OTBjOTAtPjB4YjQ3ZDUwNDAsIExMSW50RnVuY3Rpb25D
YWxsLCA0N10pLCBjb2RlQmxvY2sgPSAjRFFidTZiOlsweGI0NzkwYzkwLT4weGI0N2Q1MDQwLCBM
TEludEZ1bmN0aW9uQ2FsbCwgNDddCkxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFs
PiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBh
dCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmQ4MCAoMHhiNDdmNzA5MDpbRnVu
Y3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQjZj
UlA4OlsweGI0NzkwYjQwLT4weGI0N2Q0ZjQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNTldKSwgY29k
ZUJsb2NrID0gI0I2Y1JQODpbMHhiNDc5MGI0MC0+MHhiNDdkNGY0MCwgTExJbnRGdW5jdGlvbkNh
bGwsIDU5XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2JhbD4jQnlQeklvOlsweGI0
N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0gYXQgYmMjMTMxNSB0byAo
RnVuY3Rpb246IENlbGw6IDB4YjQ3OWJjYzAgKDB4YjQ3ZjcwOTA6W0Z1bmN0aW9uLCB7fSwgTm9u
QXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0JBaFdYbzpbMHhiNDc5MDlm
MC0+MHhiNDdkNGU0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDU5XSksIGNvZGVCbG9jayA9ICNCQWhX
WG86WzB4YjQ3OTA5ZjAtPjB4YjQ3ZDRlNDAsIExMSW50RnVuY3Rpb25DYWxsLCA1OV0KTGlua2lu
ZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhiNDdhM2U3MC0+MHhiNDdh
YmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8gKEZ1bmN0aW9uOiBDZWxs
OiAweGI0NzliYzAwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5vbkFycmF5LCBQcm90bzow
eGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNFV0huQk46WzB4YjQ3OTA4YTAtPjB4YjQ3ZDRkNDAs
IExMSW50RnVuY3Rpb25DYWxsLCA2Ml0pLCBjb2RlQmxvY2sgPSAjRVdIbkJOOlsweGI0NzkwOGEw
LT4weGI0N2Q0ZDQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjJdCkxpbmtpbmcgcG9seW1vcnBoaWMg
Y2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5l
R2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2VsbDogMHhiNDc5YmI0MCAo
MHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86MHhiNDdlZGRlMF0pOyBF
eGVjdXRhYmxlOiAjRExjOUEzOlsweGI0NzkwNzUwLT4weGI0N2Q0YzQwLCBMTEludEZ1bmN0aW9u
Q2FsbCwgNjhdKSwgY29kZUJsb2NrID0gI0RMYzlBMzpbMHhiNDc5MDc1MC0+MHhiNDdkNGM0MCwg
TExJbnRGdW5jdGlvbkNhbGwsIDY4XQpMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gPGdsb2Jh
bD4jQnlQeklvOlsweGI0N2EzZTcwLT4weGI0N2FiZjUwLCBCYXNlbGluZUdsb2JhbCwgMTU1NF0g
YXQgYmMjMTMxNSB0byAoRnVuY3Rpb246IENlbGw6IDB4YjQ3OWJhODAgKDB4YjQ3ZjcwOTA6W0Z1
bmN0aW9uLCB7fSwgTm9uQXJyYXksIFByb3RvOjB4YjQ3ZWRkZTBdKTsgRXhlY3V0YWJsZTogI0FF
SndiTzpbMHhiNDc5MDYwMC0+MHhiNDdkNGI0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDY4XSksIGNv
ZGVCbG9jayA9ICNBRUp3Yk86WzB4YjQ3OTA2MDAtPjB4YjQ3ZDRiNDAsIExMSW50RnVuY3Rpb25D
YWxsLCA2OF0KTGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGluIDxnbG9iYWw+I0J5UHpJbzpbMHhi
NDdhM2U3MC0+MHhiNDdhYmY1MCwgQmFzZWxpbmVHbG9iYWwsIDE1NTRdIGF0IGJjIzEzMTUgdG8g
KEZ1bmN0aW9uOiBDZWxsOiAweGI0NzliOWMwICgweGI0N2Y3MDkwOltGdW5jdGlvbiwge30sIE5v
bkFycmF5LCBQcm90bzoweGI0N2VkZGUwXSk7IEV4ZWN1dGFibGU6ICNDN05oNVk6WzB4YjQ3OTA0
YjAtPjB4YjQ3ZDRhNDAsIExMSW50RnVuY3Rpb25DYWxsLCA2OF0pLCBjb2RlQmxvY2sgPSAjQzdO
aDVZOlsweGI0NzkwNGIwLT4weGI0N2Q0YTQwLCBMTEludEZ1bmN0aW9uQ2FsbCwgNjhdCkxpbmtp
bmcgcG9seW1vcnBoaWMgY2FsbCBpbiA8Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3
YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAxNTU0XSBhdCBiYyMxMzE1IHRvIChGdW5jdGlvbjogQ2Vs
bDogMHhiNDc5YjkwMCAoMHhiNDdmNzA5MDpbRnVuY3Rpb24sIHt9LCBOb25BcnJheSwgUHJvdG86
MHhiNDdlZGRlMF0pOyBFeGVjdXRhYmxlOiAjQzFnbTJJOlsweGI0NzkwMzYwLT4weGI0N2Q0OTQw
LCBMTEludEZ1bmN0aW9uQ2FsbCwgNjhdKSwgY29kZUJsb2NrID0gI0MxZ20ySTpbMHhiNDc5MDM2
MC0+MHhiNDdkNDk0MCwgTExJbnRGdW5jdGlvbkNhbGwsIDY4XQpHZW5lcmF0ZWQgSklUIGNvZGUg
Zm9yIFZpcnR1YWwgY2FsbCBzbG93IHBhdGggdGh1bms6CiAgICBDb2RlIGF0IFsweGI0YzU1NjQx
LCAweGI0YzU1NzAxKToKICAgIDB4YjRjNTU2NDA6ICAgIGxkciAgICByMTIsIFtyMiwgIzUyXQog
ICAgMHhiNGM1NTY0NDogICAgYWRkdyAgIHIxMiwgcjEyLCAjMQogICAgMHhiNGM1NTY0ODogICAg
c3RyICAgIHIxMiwgW3IyLCAjNTJdCiAgICAweGI0YzU1NjRjOiAgICBjbW4gICAgcjEsICM1CiAg
ICAweGI0YzU1NjUwOiAgICBibmUgICAgMHhiNGM1NTY2OAogICAgMHhiNGM1NTY1MjogICAgbGRy
YiAgIHI2LCBbcjAsICM1XQogICAgMHhiNGM1NTY1NDogICAgY21wICAgIHIyLCAjMjMKICAgIDB4
YjRjNTU2NTY6ICAgIGJuZSAgICAweGI0YzU1NjY4CiAgICAweGI0YzU1NjU4OiAgICBsZHIgICAg
cjgsIFtyMCwgIzIwXQogICAgMHhiNGM1NTY1YzogICAgbGRyICAgIHI4LCBbcjgsICMyOF0KICAg
IDB4YjRjNTU2NjA6ICAgIHRzdCAgICByOCwgcjgKICAgIDB4YjRjNTU2NjQ6ICAgIGJlcSAgICAw
eGI0YzU1NjY4CiAgICAweGI0YzU1NjY2OiAgICBieCAgICAgcjgKICAgIDB4YjRjNTU2Njg6ICAg
IHB1c2ggICB7cjcsIGxyfQogICAgMHhiNGM1NTY2YzogICAgbW92ICAgIHI3LCBzcAogICAgMHhi
NGM1NTY2ZTogICAgbW92dyAgIHI2LCAjNDIxMjgKICAgIDB4YjRjNTU2NzI6ICAgIG1vdnQgICBy
NiwgIzQ2MjA3CiAgICAweGI0YzU1Njc2OiAgICBzdHIgICAgcjcsIFtyNl0KICAgIDB4YjRjNTU2
Nzg6ICAgIG12biAgICByMTIsICMyMwogICAgMHhiNGM1NTY3YzogICAgbW92ICAgIHNwLCBzcAog
ICAgMHhiNGM1NTY3ZTogICAgYWRkICAgIHNwLCByMTIKICAgIDB4YjRjNTU2ODA6ICAgIG1vdiAg
ICByMSwgcjIKICAgIDB4YjRjNTU2ODI6ICAgIG1vdiAgICByMCwgcjcKICAgIDB4YjRjNTU2ODQ6
ICAgIG1vdncgICByNCwgIzUxMjc3CiAgICAweGI0YzU1Njg4OiAgICBtb3Z0ICAgcjQsICM0Njc3
NgogICAgMHhiNGM1NTY4YzogICAgYmx4ICAgIHI0CiAgICAweGI0YzU1NjhlOiAgICBhZGQgICAg
c3AsIHNwLCAjNgogICAgMHhiNGM1NTY5MDogICAgbW92ICAgIHNwLCByNwogICAgMHhiNGM1NTY5
MjogICAgcG9wICAgIHtyNywgbHJ9CiAgICAweGI0YzU1Njk2OiAgICB0c3QgICAgcjEsIHIxCiAg
ICAweGI0YzU1Njk4OiAgICBiZXEgICAgMHhiNGM1NTZlOAogICAgMHhiNGM1NTY5YTogICAgbW92
ICAgIHI1LCBscgogICAgMHhiNGM1NTY5YzogICAgbGRyICAgIHIxLCBbcjcsICMyNF0KICAgIDB4
YjRjNTU2OWU6ICAgIGxkciAgICByMywgW3I3LCAjOF0KICAgIDB4YjRjNTU2YTA6ICAgIGxkciAg
ICByMywgW3IzLCAjMzJdCiAgICAweGI0YzU1NmEyOiAgICBjbXAgICAgcjMsIHIxCiAgICAweGI0
YzU1NmE0OiAgICBibHMgICAgMHhiNGM1NTZhOAogICAgMHhiNGM1NTZhNjogICAgbW92ICAgIHIx
LCByMwogICAgMHhiNGM1NTZhODogICAgYWRkcyAgIHIxLCByMSwgIzUKICAgIDB4YjRjNTU2YWE6
ICAgIG12biAgICByMTIsICMxCiAgICAweGI0YzU1NmFlOiAgICBhbmQgICAgcjEsIHIxLCByMTIK
ICAgIDB4YjRjNTU2YjI6ICAgIG1vdiAgICByMTIsICM4CiAgICAweGI0YzU1NmI2OiAgICBzbXVs
bCAgcjEsIHIxMiwgcjEsIHIxMgogICAgMHhiNGM1NTZiYTogICAgYWRkcyAgIHIzLCByNywgcjEK
ICAgIDB4YjRjNTU2YmM6ICAgIGxkciAgICByMSwgW3NwLCAjMTZdCiAgICAweGI0YzU1NmJlOiAg
ICBhZGRzICAgcjEsIHIxLCAjNQogICAgMHhiNGM1NTZjMDogICAgbXZuICAgIHIxMiwgIzEKICAg
IDB4YjRjNTU2YzQ6ICAgIGFuZCAgICByMSwgcjEsIHIxMgogICAgMHhiNGM1NTZjODogICAgbW92
ICAgIHIxMiwgIzgKICAgIDB4YjRjNTU2Y2M6ICAgIHNtdWxsICByMSwgcjEyLCByMSwgcjEyCiAg
ICAweGI0YzU1NmQwOiAgICBsZHIgICAgbHIsIFtyNywgIzRdCiAgICAweGI0YzU1NmQ0OiAgICBz
dWJzICAgcjEsICM4CiAgICAweGI0YzU1NmQ2OiAgICBzdWJzICAgcjMsIHIzLCByMQogICAgMHhi
NGM1NTZkODogICAgbGRyICAgIHI3LCBbcjddCiAgICAweGI0YzU1NmRhOiAgICBzdWJzICAgcjEs
IHIxLCAjNAogICAgMHhiNGM1NTZkYzogICAgbGRyICAgIHIyLCBbc3AsIHIxXQogICAgMHhiNGM1
NTZlMDogICAgc3RyICAgIHIyLCBbcjMsIHIxXQogICAgMHhiNGM1NTZlMjogICAgdHN0ICAgIHIx
LCByMQogICAgMHhiNGM1NTZlNDogICAgYm5lICAgIDB4YjRjNTU4ZGEKICAgIDB4YjRjNTU2ZTY6
ICAgIG1vdiAgICBzcCwgcjMKICAgIDB4YjRjNTU2ZTg6ICAgIGJ4ICAgICByMApDbGVhcmluZyBj
YWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUg
PSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmlu
ZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFi
bGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVh
cmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1
dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpD
bGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4
ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMx
NQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRy
KGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMj
MTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBDb2Rl
UHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4KSwg
YmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBhdCBD
b2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVlMDE4
KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2FsbCBh
dCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0YzVl
MDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMgY2Fs
bCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAweGI0
YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBoaWMg
Y2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24gPSAw
eGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1vcnBo
aWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRpb24g
PSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9seW1v
cnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9jYXRp
b24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3IgcG9s
eW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRhTG9j
YXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpDbGVhcmluZyBjYWxsIGxpbmsgaW5mbyBmb3Ig
cG9seW1vcnBoaWMgY2FsbCBhdCBDb2RlUHRyKGV4ZWN1dGFibGUgPSAweGI0YzVlMDE5LCBkYXRh
TG9jYXRpb24gPSAweGI0YzVlMDE4KSwgYmMjMTMxNQpMaW5raW5nIHZpcnR1YWwgY2FsbCBhdCA8
Z2xvYmFsPiNCeVB6SW86WzB4YjQ3YTNlNzAtPjB4YjQ3YWJmNTAsIEJhc2VsaW5lR2xvYmFsLCAx
NTU0XSBiYyMxMzE1CkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgVmlydHVhbCBjYWxsIHNsb3cgcGF0
aCB0aHVuazoKICAgIENvZGUgYXQgWzB4YjRjNTU3MDEsIDB4YjRjNTU3YzEpOgogICAgMHhiNGM1
NTcwMDogICAgbGRyICAgIHIxMiwgW3IyLCAjNTJdCiAgICAweGI0YzU1NzA0OiAgICBhZGR3ICAg
cjEyLCByMTIsICMxCiAgICAweGI0YzU1NzA4OiAgICBzdHIgICAgcjEyLCBbcjIsICM1Ml0KICAg
IDB4YjRjNTU3MGM6ICAgIGNtbiAgICByMSwgIzUKICAgIDB4YjRjNTU3MTA6ICAgIGJuZSAgICAw
eGI0YzU1NzI4CiAgICAweGI0YzU1NzEyOiAgICBsZHJiICAgcjYsIFtyMCwgIzVdCiAgICAweGI0
YzU1NzE0OiAgICBjbXAgICAgcjIsICMyMwogICAgMHhiNGM1NTcxNjogICAgYm5lICAgIDB4YjRj
NTU3MjgKICAgIDB4YjRjNTU3MTg6ICAgIGxkciAgICByOCwgW3IwLCAjMjBdCiAgICAweGI0YzU1
NzFjOiAgICBsZHIgICAgcjgsIFtyOCwgIzI4XQogICAgMHhiNGM1NTcyMDogICAgdHN0ICAgIHI4
LCByOAogICAgMHhiNGM1NTcyNDogICAgYmVxICAgIDB4YjRjNTU3MjgKICAgIDB4YjRjNTU3MjY6
ICAgIGJ4ICAgICByOAogICAgMHhiNGM1NTcyODogICAgcHVzaCAgIHtyNywgbHJ9CiAgICAweGI0
YzU1NzJjOiAgICBtb3YgICAgcjcsIHNwCiAgICAweGI0YzU1NzJlOiAgICBtb3Z3ICAgcjYsICM0
MjEyOAogICAgMHhiNGM1NTczMjogICAgbW92dCAgIHI2LCAjNDYyMDcKICAgIDB4YjRjNTU3MzY6
ICAgIHN0ciAgICByNywgW3I2XQogICAgMHhiNGM1NTczODogICAgbXZuICAgIHIxMiwgIzIzCiAg
ICAweGI0YzU1NzNjOiAgICBtb3YgICAgc3AsIHNwCiAgICAweGI0YzU1NzNlOiAgICBhZGQgICAg
c3AsIHIxMgogICAgMHhiNGM1NTc0MDogICAgbW92ICAgIHIxLCByMgogICAgMHhiNGM1NTc0Mjog
ICAgbW92ICAgIHIwLCByNwogICAgMHhiNGM1NTc0NDogICAgbW92dyAgIHI0LCAjNTEyNzcKICAg
IDB4YjRjNTU3NDg6ICAgIG1vdnQgICByNCwgIzQ2Nzc2CiAgICAweGI0YzU1NzRjOiAgICBibHgg
ICAgcjQKICAgIDB4YjRjNTU3NGU6ICAgIGFkZCAgICBzcCwgc3AsICM2CiAgICAweGI0YzU1NzUw
OiAgICBtb3YgICAgc3AsIHI3CiAgICAweGI0YzU1NzUyOiAgICBwb3AgICAge3I3LCBscn0KICAg
IDB4YjRjNTU3NTY6ICAgIHRzdCAgICByMSwgcjEKICAgIDB4YjRjNTU3NTg6ICAgIGJlcSAgICAw
eGI0YzU1N2E4CiAgICAweGI0YzU1NzVhOiAgICBtb3YgICAgcjUsIGxyCiAgICAweGI0YzU1NzVj
OiAgICBsZHIgICAgcjEsIFtyNywgIzI0XQogICAgMHhiNGM1NTc1ZTogICAgbGRyICAgIHIzLCBb
cjcsICM4XQogICAgMHhiNGM1NTc2MDogICAgbGRyICAgIHIzLCBbcjMsICMzMl0KICAgIDB4YjRj
NTU3NjI6ICAgIGNtcCAgICByMywgcjEKICAgIDB4YjRjNTU3NjQ6ICAgIGJscyAgICAweGI0YzU1
NzY4CiAgICAweGI0YzU1NzY2OiAgICBtb3YgICAgcjEsIHIzCiAgICAweGI0YzU1NzY4OiAgICBh
ZGRzICAgcjEsIHIxLCAjNQogICAgMHhiNGM1NTc2YTogICAgbXZuICAgIHIxMiwgIzEKICAgIDB4
YjRjNTU3NmU6ICAgIGFuZCAgICByMSwgcjEsIHIxMgogICAgMHhiNGM1NTc3MjogICAgbW92ICAg
IHIxMiwgIzgKICAgIDB4YjRjNTU3NzY6ICAgIHNtdWxsICByMSwgcjEyLCByMSwgcjEyCiAgICAw
eGI0YzU1NzdhOiAgICBhZGRzICAgcjMsIHI3LCByMQogICAgMHhiNGM1NTc3YzogICAgbGRyICAg
IHIxLCBbc3AsICMxNl0KICAgIDB4YjRjNTU3N2U6ICAgIGFkZHMgICByMSwgcjEsICM1CiAgICAw
eGI0YzU1NzgwOiAgICBtdm4gICAgcjEyLCAjMQogICAgMHhiNGM1NTc4NDogICAgYW5kICAgIHIx
LCByMSwgcjEyCiAgICAweGI0YzU1Nzg4OiAgICBtb3YgICAgcjEyLCAjOAogICAgMHhiNGM1NTc4
YzogICAgc211bGwgIHIxLCByMTIsIHIxLCByMTIKICAgIDB4YjRjNTU3OTA6ICAgIGxkciAgICBs
ciwgW3I3LCAjNF0KICAgIDB4YjRjNTU3OTQ6ICAgIHN1YnMgICByMSwgIzgKICAgIDB4YjRjNTU3
OTY6ICAgIHN1YnMgICByMywgcjMsIHIxCiAgICAweGI0YzU1Nzk4OiAgICBsZHIgICAgcjcsIFty
N10KICAgIDB4YjRjNTU3OWE6ICAgIHN1YnMgICByMSwgcjEsICM0CiAgICAweGI0YzU1NzljOiAg
ICBsZHIgICAgcjIsIFtzcCwgcjFdCiAgICAweGI0YzU1N2EwOiAgICBzdHIgICAgcjIsIFtyMywg
cjFdCiAgICAweGI0YzU1N2EyOiAgICB0c3QgICAgcjEsIHIxCiAgICAweGI0YzU1N2E0OiAgICBi
bmUgICAgMHhiNGM1NTk5YQogICAgMHhiNGM1NTdhNjogICAgbW92ICAgIHNwLCByMwogICAgMHhi
NGM1NTdhODogICAgYnggICAgIHIwCkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9y
cGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUwMTksIGRhdGFMb2NhdGlv
biA9IDB4YjRjNWUwMTgpLCBiYyMxMzE1CkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5
bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUwMTksIGRhdGFMb2Nh
dGlvbiA9IDB4YjRjNWUwMTgpLCBiYyMxMzE1CkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBw
b2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUwMTksIGRhdGFM
b2NhdGlvbiA9IDB4YjRjNWUwMTgpLCBiYyMxMzE1CkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZv
ciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUwMTksIGRh
dGFMb2NhdGlvbiA9IDB4YjRjNWUwMTgpLCBiYyMxMzE1CkNsZWFyaW5nIGNhbGwgbGluayBpbmZv
IGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUwMTks
IGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUwMTgpLCBiYyMxMzE1CkNsZWFyaW5nIGNhbGwgbGluayBp
bmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUw
MTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUwMTgpLCBiYyMxMzE1CkNsZWFyaW5nIGNhbGwgbGlu
ayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRj
NWUwMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUwMTgpLCBiYyMxMzE1CkNsZWFyaW5nIGNhbGwg
bGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9IDB4
YjRjNWUwMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUwMTgpLCBiYyMxMzE1CkNsZWFyaW5nIGNh
bGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJsZSA9
IDB4YjRjNWUwMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUwMTgpLCBiYyMxMzE1CkNsZWFyaW5n
IGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0YWJs
ZSA9IDB4YjRjNWUwMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUwMTgpLCBiYyMxMzE1CkNsZWFy
aW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhlY3V0
YWJsZSA9IDB4YjRjNWUwMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUwMTgpLCBiYyMxMzE1CkNs
ZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIoZXhl
Y3V0YWJsZSA9IDB4YjRjNWUwMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUwMTgpLCBiYyMxMzE1
CkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQdHIo
ZXhlY3V0YWJsZSA9IDB4YjRjNWUwMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUwMTgpLCBiYyMx
MzE1CkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENvZGVQ
dHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUwMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUwMTgpLCBi
YyMxMzE1CkNsZWFyaW5nIGNhbGwgbGluayBpbmZvIGZvciBwb2x5bW9ycGhpYyBjYWxsIGF0IENv
ZGVQdHIoZXhlY3V0YWJsZSA9IDB4YjRjNWUwMTksIGRhdGFMb2NhdGlvbiA9IDB4YjRjNWUwMTgp
LCBiYyMxMzE1CkRlc3Ryb3lpbmcgSklUIGNvZGUgYXQgMHhiNmYwN2ZlMC4uLjB4YjZmMDgwMDAK
RXhjZXB0aW9uOiBGYWlsZWQgb3BhcXVlUG93IHdpdGggYmFzZSA9IDEuNDQyNjk1MDQwODg4OTYz
NCBleHBvbmVudCA9IC0wLjUgZXhwZWN0ZWQgKDAuODMyNTU0NjExMTU3Njk3NykgZ290ICgwLjgz
MjU1NDYxMTE1NzY5NzgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>277903</attachid>
            <date>2016-05-02 03:23:41 -0700</date>
            <delta_ts>2016-05-02 03:23:56 -0700</delta_ts>
            <desc>a preprocessed JSC source</desc>
            <filename>jsc.ii</filename>
            <type>text/plain</type>
            <size>3882382</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">IyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJl
ZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAiCiMgMSAiPGJ1aWx0LWluPiIKI2RlZmlu
ZSBfX1NURENfXyAxCiNkZWZpbmUgX19jcGx1c3BsdXMgMjAxMTAzTAojZGVmaW5lIF9fU1REQ19I
T1NURURfXyAxCiNkZWZpbmUgX19HTlVDX18gNAojZGVmaW5lIF9fR05VQ19NSU5PUl9fIDkKI2Rl
ZmluZSBfX0dOVUNfUEFUQ0hMRVZFTF9fIDMKI2RlZmluZSBfX1ZFUlNJT05fXyAiNC45LjMiCiNk
ZWZpbmUgX19BVE9NSUNfUkVMQVhFRCAwCiNkZWZpbmUgX19BVE9NSUNfU0VRX0NTVCA1CiNkZWZp
bmUgX19BVE9NSUNfQUNRVUlSRSAyCiNkZWZpbmUgX19BVE9NSUNfUkVMRUFTRSAzCiNkZWZpbmUg
X19BVE9NSUNfQUNRX1JFTCA0CiNkZWZpbmUgX19BVE9NSUNfQ09OU1VNRSAxCiNkZWZpbmUgX19w
aWNfXyAyCiNkZWZpbmUgX19QSUNfXyAyCiNkZWZpbmUgX19PUFRJTUlaRV9fIDEKI2RlZmluZSBf
X0ZJTklURV9NQVRIX09OTFlfXyAwCiNkZWZpbmUgX19TSVpFT0ZfSU5UX18gNAojZGVmaW5lIF9f
U0laRU9GX0xPTkdfXyA0CiNkZWZpbmUgX19TSVpFT0ZfTE9OR19MT05HX18gOAojZGVmaW5lIF9f
U0laRU9GX1NIT1JUX18gMgojZGVmaW5lIF9fU0laRU9GX0ZMT0FUX18gNAojZGVmaW5lIF9fU0la
RU9GX0RPVUJMRV9fIDgKI2RlZmluZSBfX1NJWkVPRl9MT05HX0RPVUJMRV9fIDgKI2RlZmluZSBf
X1NJWkVPRl9TSVpFX1RfXyA0CiNkZWZpbmUgX19DSEFSX0JJVF9fIDgKI2RlZmluZSBfX0JJR0dF
U1RfQUxJR05NRU5UX18gOAojZGVmaW5lIF9fT1JERVJfTElUVExFX0VORElBTl9fIDEyMzQKI2Rl
ZmluZSBfX09SREVSX0JJR19FTkRJQU5fXyA0MzIxCiNkZWZpbmUgX19PUkRFUl9QRFBfRU5ESUFO
X18gMzQxMgojZGVmaW5lIF9fQllURV9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fCiNk
ZWZpbmUgX19GTE9BVF9XT1JEX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18KI2RlZmlu
ZSBfX1NJWkVPRl9QT0lOVEVSX18gNAojZGVmaW5lIF9fR05VR19fIDQKI2RlZmluZSBfX1NJWkVf
VFlQRV9fIHVuc2lnbmVkIGludAojZGVmaW5lIF9fUFRSRElGRl9UWVBFX18gaW50CiNkZWZpbmUg
X19XQ0hBUl9UWVBFX18gdW5zaWduZWQgaW50CiNkZWZpbmUgX19XSU5UX1RZUEVfXyB1bnNpZ25l
ZCBpbnQKI2RlZmluZSBfX0lOVE1BWF9UWVBFX18gbG9uZyBsb25nIGludAojZGVmaW5lIF9fVUlO
VE1BWF9UWVBFX18gbG9uZyBsb25nIHVuc2lnbmVkIGludAojZGVmaW5lIF9fQ0hBUjE2X1RZUEVf
XyBzaG9ydCB1bnNpZ25lZCBpbnQKI2RlZmluZSBfX0NIQVIzMl9UWVBFX18gdW5zaWduZWQgaW50
CiNkZWZpbmUgX19TSUdfQVRPTUlDX1RZUEVfXyBpbnQKI2RlZmluZSBfX0lOVDhfVFlQRV9fIHNp
Z25lZCBjaGFyCiNkZWZpbmUgX19JTlQxNl9UWVBFX18gc2hvcnQgaW50CiNkZWZpbmUgX19JTlQz
Ml9UWVBFX18gaW50CiNkZWZpbmUgX19JTlQ2NF9UWVBFX18gbG9uZyBsb25nIGludAojZGVmaW5l
IF9fVUlOVDhfVFlQRV9fIHVuc2lnbmVkIGNoYXIKI2RlZmluZSBfX1VJTlQxNl9UWVBFX18gc2hv
cnQgdW5zaWduZWQgaW50CiNkZWZpbmUgX19VSU5UMzJfVFlQRV9fIHVuc2lnbmVkIGludAojZGVm
aW5lIF9fVUlOVDY0X1RZUEVfXyBsb25nIGxvbmcgdW5zaWduZWQgaW50CiNkZWZpbmUgX19JTlRf
TEVBU1Q4X1RZUEVfXyBzaWduZWQgY2hhcgojZGVmaW5lIF9fSU5UX0xFQVNUMTZfVFlQRV9fIHNo
b3J0IGludAojZGVmaW5lIF9fSU5UX0xFQVNUMzJfVFlQRV9fIGludAojZGVmaW5lIF9fSU5UX0xF
QVNUNjRfVFlQRV9fIGxvbmcgbG9uZyBpbnQKI2RlZmluZSBfX1VJTlRfTEVBU1Q4X1RZUEVfXyB1
bnNpZ25lZCBjaGFyCiNkZWZpbmUgX19VSU5UX0xFQVNUMTZfVFlQRV9fIHNob3J0IHVuc2lnbmVk
IGludAojZGVmaW5lIF9fVUlOVF9MRUFTVDMyX1RZUEVfXyB1bnNpZ25lZCBpbnQKI2RlZmluZSBf
X1VJTlRfTEVBU1Q2NF9UWVBFX18gbG9uZyBsb25nIHVuc2lnbmVkIGludAojZGVmaW5lIF9fSU5U
X0ZBU1Q4X1RZUEVfXyBzaWduZWQgY2hhcgojZGVmaW5lIF9fSU5UX0ZBU1QxNl9UWVBFX18gaW50
CiNkZWZpbmUgX19JTlRfRkFTVDMyX1RZUEVfXyBpbnQKI2RlZmluZSBfX0lOVF9GQVNUNjRfVFlQ
RV9fIGxvbmcgbG9uZyBpbnQKI2RlZmluZSBfX1VJTlRfRkFTVDhfVFlQRV9fIHVuc2lnbmVkIGNo
YXIKI2RlZmluZSBfX1VJTlRfRkFTVDE2X1RZUEVfXyB1bnNpZ25lZCBpbnQKI2RlZmluZSBfX1VJ
TlRfRkFTVDMyX1RZUEVfXyB1bnNpZ25lZCBpbnQKI2RlZmluZSBfX1VJTlRfRkFTVDY0X1RZUEVf
XyBsb25nIGxvbmcgdW5zaWduZWQgaW50CiNkZWZpbmUgX19JTlRQVFJfVFlQRV9fIGludAojZGVm
aW5lIF9fVUlOVFBUUl9UWVBFX18gdW5zaWduZWQgaW50CiNkZWZpbmUgX19oYXNfaW5jbHVkZShT
VFIpIF9faGFzX2luY2x1ZGVfXyhTVFIpCiNkZWZpbmUgX19oYXNfaW5jbHVkZV9uZXh0KFNUUikg
X19oYXNfaW5jbHVkZV9uZXh0X18oU1RSKQojZGVmaW5lIF9fR1hYX1dFQUtfXyAxCiNkZWZpbmUg
X19ERVBSRUNBVEVEIDEKI2RlZmluZSBfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXyAxCiNkZWZp
bmUgX19jcHBfYmluYXJ5X2xpdGVyYWxzIDIwMTMwNAojZGVmaW5lIF9fY3BwX3VuaWNvZGVfY2hh
cmFjdGVycyAyMDA3MDQKI2RlZmluZSBfX2NwcF9yYXdfc3RyaW5ncyAyMDA3MTAKI2RlZmluZSBf
X2NwcF91bmljb2RlX2xpdGVyYWxzIDIwMDcxMAojZGVmaW5lIF9fY3BwX3VzZXJfZGVmaW5lZF9s
aXRlcmFscyAyMDA4MDkKI2RlZmluZSBfX2NwcF9sYW1iZGFzIDIwMDkwNwojZGVmaW5lIF9fY3Bw
X2NvbnN0ZXhwciAyMDA3MDQKI2RlZmluZSBfX2NwcF9zdGF0aWNfYXNzZXJ0IDIwMDQxMAojZGVm
aW5lIF9fY3BwX2RlY2x0eXBlIDIwMDcwNwojZGVmaW5lIF9fY3BwX2F0dHJpYnV0ZXMgMjAwODA5
CiNkZWZpbmUgX19jcHBfcnZhbHVlX3JlZmVyZW5jZSAyMDA2MTAKI2RlZmluZSBfX2NwcF92YXJp
YWRpY190ZW1wbGF0ZXMgMjAwNzA0CiNkZWZpbmUgX19jcHBfYWxpYXNfdGVtcGxhdGVzIDIwMDcw
NAojZGVmaW5lIF9fR1hYX0FCSV9WRVJTSU9OIDEwMDIKI2RlZmluZSBfX1NDSEFSX01BWF9fIDEy
NwojZGVmaW5lIF9fU0hSVF9NQVhfXyAzMjc2NwojZGVmaW5lIF9fSU5UX01BWF9fIDIxNDc0ODM2
NDcKI2RlZmluZSBfX0xPTkdfTUFYX18gMjE0NzQ4MzY0N0wKI2RlZmluZSBfX0xPTkdfTE9OR19N
QVhfXyA5MjIzMzcyMDM2ODU0Nzc1ODA3TEwKI2RlZmluZSBfX1dDSEFSX01BWF9fIDQyOTQ5Njcy
OTVVCiNkZWZpbmUgX19XQ0hBUl9NSU5fXyAwVQojZGVmaW5lIF9fV0lOVF9NQVhfXyA0Mjk0OTY3
Mjk1VQojZGVmaW5lIF9fV0lOVF9NSU5fXyAwVQojZGVmaW5lIF9fUFRSRElGRl9NQVhfXyAyMTQ3
NDgzNjQ3CiNkZWZpbmUgX19TSVpFX01BWF9fIDQyOTQ5NjcyOTVVCiNkZWZpbmUgX19JTlRNQVhf
TUFYX18gOTIyMzM3MjAzNjg1NDc3NTgwN0xMCiNkZWZpbmUgX19JTlRNQVhfQyhjKSBjICMjIExM
CiNkZWZpbmUgX19VSU5UTUFYX01BWF9fIDE4NDQ2NzQ0MDczNzA5NTUxNjE1VUxMCiNkZWZpbmUg
X19VSU5UTUFYX0MoYykgYyAjIyBVTEwKI2RlZmluZSBfX1NJR19BVE9NSUNfTUFYX18gMjE0NzQ4
MzY0NwojZGVmaW5lIF9fU0lHX0FUT01JQ19NSU5fXyAoLV9fU0lHX0FUT01JQ19NQVhfXyAtIDEp
CiNkZWZpbmUgX19JTlQ4X01BWF9fIDEyNwojZGVmaW5lIF9fSU5UMTZfTUFYX18gMzI3NjcKI2Rl
ZmluZSBfX0lOVDMyX01BWF9fIDIxNDc0ODM2NDcKI2RlZmluZSBfX0lOVDY0X01BWF9fIDkyMjMz
NzIwMzY4NTQ3NzU4MDdMTAojZGVmaW5lIF9fVUlOVDhfTUFYX18gMjU1CiNkZWZpbmUgX19VSU5U
MTZfTUFYX18gNjU1MzUKI2RlZmluZSBfX1VJTlQzMl9NQVhfXyA0Mjk0OTY3Mjk1VQojZGVmaW5l
IF9fVUlOVDY0X01BWF9fIDE4NDQ2NzQ0MDczNzA5NTUxNjE1VUxMCiNkZWZpbmUgX19JTlRfTEVB
U1Q4X01BWF9fIDEyNwojZGVmaW5lIF9fSU5UOF9DKGMpIGMKI2RlZmluZSBfX0lOVF9MRUFTVDE2
X01BWF9fIDMyNzY3CiNkZWZpbmUgX19JTlQxNl9DKGMpIGMKI2RlZmluZSBfX0lOVF9MRUFTVDMy
X01BWF9fIDIxNDc0ODM2NDcKI2RlZmluZSBfX0lOVDMyX0MoYykgYwojZGVmaW5lIF9fSU5UX0xF
QVNUNjRfTUFYX18gOTIyMzM3MjAzNjg1NDc3NTgwN0xMCiNkZWZpbmUgX19JTlQ2NF9DKGMpIGMg
IyMgTEwKI2RlZmluZSBfX1VJTlRfTEVBU1Q4X01BWF9fIDI1NQojZGVmaW5lIF9fVUlOVDhfQyhj
KSBjCiNkZWZpbmUgX19VSU5UX0xFQVNUMTZfTUFYX18gNjU1MzUKI2RlZmluZSBfX1VJTlQxNl9D
KGMpIGMKI2RlZmluZSBfX1VJTlRfTEVBU1QzMl9NQVhfXyA0Mjk0OTY3Mjk1VQojZGVmaW5lIF9f
VUlOVDMyX0MoYykgYyAjIyBVCiNkZWZpbmUgX19VSU5UX0xFQVNUNjRfTUFYX18gMTg0NDY3NDQw
NzM3MDk1NTE2MTVVTEwKI2RlZmluZSBfX1VJTlQ2NF9DKGMpIGMgIyMgVUxMCiNkZWZpbmUgX19J
TlRfRkFTVDhfTUFYX18gMTI3CiNkZWZpbmUgX19JTlRfRkFTVDE2X01BWF9fIDIxNDc0ODM2NDcK
I2RlZmluZSBfX0lOVF9GQVNUMzJfTUFYX18gMjE0NzQ4MzY0NwojZGVmaW5lIF9fSU5UX0ZBU1Q2
NF9NQVhfXyA5MjIzMzcyMDM2ODU0Nzc1ODA3TEwKI2RlZmluZSBfX1VJTlRfRkFTVDhfTUFYX18g
MjU1CiNkZWZpbmUgX19VSU5UX0ZBU1QxNl9NQVhfXyA0Mjk0OTY3Mjk1VQojZGVmaW5lIF9fVUlO
VF9GQVNUMzJfTUFYX18gNDI5NDk2NzI5NVUKI2RlZmluZSBfX1VJTlRfRkFTVDY0X01BWF9fIDE4
NDQ2NzQ0MDczNzA5NTUxNjE1VUxMCiNkZWZpbmUgX19JTlRQVFJfTUFYX18gMjE0NzQ4MzY0Nwoj
ZGVmaW5lIF9fVUlOVFBUUl9NQVhfXyA0Mjk0OTY3Mjk1VQojZGVmaW5lIF9fR0NDX0lFQ181NTkg
MgojZGVmaW5lIF9fR0NDX0lFQ181NTlfQ09NUExFWCAyCiNkZWZpbmUgX19GTFRfRVZBTF9NRVRI
T0RfXyAwCiNkZWZpbmUgX19ERUNfRVZBTF9NRVRIT0RfXyAyCiNkZWZpbmUgX19GTFRfUkFESVhf
XyAyCiNkZWZpbmUgX19GTFRfTUFOVF9ESUdfXyAyNAojZGVmaW5lIF9fRkxUX0RJR19fIDYKI2Rl
ZmluZSBfX0ZMVF9NSU5fRVhQX18gKC0xMjUpCiNkZWZpbmUgX19GTFRfTUlOXzEwX0VYUF9fICgt
MzcpCiNkZWZpbmUgX19GTFRfTUFYX0VYUF9fIDEyOAojZGVmaW5lIF9fRkxUX01BWF8xMF9FWFBf
XyAzOAojZGVmaW5lIF9fRkxUX0RFQ0lNQUxfRElHX18gOQojZGVmaW5lIF9fRkxUX01BWF9fIDMu
NDAyODIzNDY2Mzg1Mjg4NmUrMzhGCiNkZWZpbmUgX19GTFRfTUlOX18gMS4xNzU0OTQzNTA4MjIy
ODc1ZS0zOEYKI2RlZmluZSBfX0ZMVF9FUFNJTE9OX18gMS4xOTIwOTI4OTU1MDc4MTI1ZS03Rgoj
ZGVmaW5lIF9fRkxUX0RFTk9STV9NSU5fXyAxLjQwMTI5ODQ2NDMyNDgxNzFlLTQ1RgojZGVmaW5l
IF9fRkxUX0hBU19ERU5PUk1fXyAxCiNkZWZpbmUgX19GTFRfSEFTX0lORklOSVRZX18gMQojZGVm
aW5lIF9fRkxUX0hBU19RVUlFVF9OQU5fXyAxCiNkZWZpbmUgX19GUF9GQVNUX0ZNQUYgMQojZGVm
aW5lIF9fREJMX01BTlRfRElHX18gNTMKI2RlZmluZSBfX0RCTF9ESUdfXyAxNQojZGVmaW5lIF9f
REJMX01JTl9FWFBfXyAoLTEwMjEpCiNkZWZpbmUgX19EQkxfTUlOXzEwX0VYUF9fICgtMzA3KQoj
ZGVmaW5lIF9fREJMX01BWF9FWFBfXyAxMDI0CiNkZWZpbmUgX19EQkxfTUFYXzEwX0VYUF9fIDMw
OAojZGVmaW5lIF9fREJMX0RFQ0lNQUxfRElHX18gMTcKI2RlZmluZSBfX0RCTF9NQVhfXyBkb3Vi
bGUoMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhMKQojZGVmaW5lIF9fREJMX01JTl9fIGRvdWJsZSgy
LjIyNTA3Mzg1ODUwNzIwMTRlLTMwOEwpCiNkZWZpbmUgX19EQkxfRVBTSUxPTl9fIGRvdWJsZSgy
LjIyMDQ0NjA0OTI1MDMxMzFlLTE2TCkKI2RlZmluZSBfX0RCTF9ERU5PUk1fTUlOX18gZG91Ymxl
KDQuOTQwNjU2NDU4NDEyNDY1NGUtMzI0TCkKI2RlZmluZSBfX0RCTF9IQVNfREVOT1JNX18gMQoj
ZGVmaW5lIF9fREJMX0hBU19JTkZJTklUWV9fIDEKI2RlZmluZSBfX0RCTF9IQVNfUVVJRVRfTkFO
X18gMQojZGVmaW5lIF9fRlBfRkFTVF9GTUEgMQojZGVmaW5lIF9fTERCTF9NQU5UX0RJR19fIDUz
CiNkZWZpbmUgX19MREJMX0RJR19fIDE1CiNkZWZpbmUgX19MREJMX01JTl9FWFBfXyAoLTEwMjEp
CiNkZWZpbmUgX19MREJMX01JTl8xMF9FWFBfXyAoLTMwNykKI2RlZmluZSBfX0xEQkxfTUFYX0VY
UF9fIDEwMjQKI2RlZmluZSBfX0xEQkxfTUFYXzEwX0VYUF9fIDMwOAojZGVmaW5lIF9fREVDSU1B
TF9ESUdfXyAxNwojZGVmaW5lIF9fTERCTF9NQVhfXyAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOEwK
I2RlZmluZSBfX0xEQkxfTUlOX18gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDhMCiNkZWZpbmUgX19M
REJMX0VQU0lMT05fXyAyLjIyMDQ0NjA0OTI1MDMxMzFlLTE2TAojZGVmaW5lIF9fTERCTF9ERU5P
Uk1fTUlOX18gNC45NDA2NTY0NTg0MTI0NjU0ZS0zMjRMCiNkZWZpbmUgX19MREJMX0hBU19ERU5P
Uk1fXyAxCiNkZWZpbmUgX19MREJMX0hBU19JTkZJTklUWV9fIDEKI2RlZmluZSBfX0xEQkxfSEFT
X1FVSUVUX05BTl9fIDEKI2RlZmluZSBfX0ZQX0ZBU1RfRk1BTCAxCiNkZWZpbmUgX19ERUMzMl9N
QU5UX0RJR19fIDcKI2RlZmluZSBfX0RFQzMyX01JTl9FWFBfXyAoLTk0KQojZGVmaW5lIF9fREVD
MzJfTUFYX0VYUF9fIDk3CiNkZWZpbmUgX19ERUMzMl9NSU5fXyAxRS05NURGCiNkZWZpbmUgX19E
RUMzMl9NQVhfXyA5Ljk5OTk5OUU5NkRGCiNkZWZpbmUgX19ERUMzMl9FUFNJTE9OX18gMUUtNkRG
CiNkZWZpbmUgX19ERUMzMl9TVUJOT1JNQUxfTUlOX18gMC4wMDAwMDFFLTk1REYKI2RlZmluZSBf
X0RFQzY0X01BTlRfRElHX18gMTYKI2RlZmluZSBfX0RFQzY0X01JTl9FWFBfXyAoLTM4MikKI2Rl
ZmluZSBfX0RFQzY0X01BWF9FWFBfXyAzODUKI2RlZmluZSBfX0RFQzY0X01JTl9fIDFFLTM4M0RE
CiNkZWZpbmUgX19ERUM2NF9NQVhfXyA5Ljk5OTk5OTk5OTk5OTk5OUUzODRERAojZGVmaW5lIF9f
REVDNjRfRVBTSUxPTl9fIDFFLTE1REQKI2RlZmluZSBfX0RFQzY0X1NVQk5PUk1BTF9NSU5fXyAw
LjAwMDAwMDAwMDAwMDAwMUUtMzgzREQKI2RlZmluZSBfX0RFQzEyOF9NQU5UX0RJR19fIDM0CiNk
ZWZpbmUgX19ERUMxMjhfTUlOX0VYUF9fICgtNjE0MikKI2RlZmluZSBfX0RFQzEyOF9NQVhfRVhQ
X18gNjE0NQojZGVmaW5lIF9fREVDMTI4X01JTl9fIDFFLTYxNDNETAojZGVmaW5lIF9fREVDMTI4
X01BWF9fIDkuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5RTYxNDRETAojZGVmaW5l
IF9fREVDMTI4X0VQU0lMT05fXyAxRS0zM0RMCiNkZWZpbmUgX19ERUMxMjhfU1VCTk9STUFMX01J
Tl9fIDAuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxRS02MTQzREwKI2RlZmluZSBf
X1NGUkFDVF9GQklUX18gNwojZGVmaW5lIF9fU0ZSQUNUX0lCSVRfXyAwCiNkZWZpbmUgX19TRlJB
Q1RfTUlOX18gKC0wLjVIUi0wLjVIUikKI2RlZmluZSBfX1NGUkFDVF9NQVhfXyAwWDdGUC03SFIK
I2RlZmluZSBfX1NGUkFDVF9FUFNJTE9OX18gMHgxUC03SFIKI2RlZmluZSBfX1VTRlJBQ1RfRkJJ
VF9fIDgKI2RlZmluZSBfX1VTRlJBQ1RfSUJJVF9fIDAKI2RlZmluZSBfX1VTRlJBQ1RfTUlOX18g
MC4wVUhSCiNkZWZpbmUgX19VU0ZSQUNUX01BWF9fIDBYRkZQLThVSFIKI2RlZmluZSBfX1VTRlJB
Q1RfRVBTSUxPTl9fIDB4MVAtOFVIUgojZGVmaW5lIF9fRlJBQ1RfRkJJVF9fIDE1CiNkZWZpbmUg
X19GUkFDVF9JQklUX18gMAojZGVmaW5lIF9fRlJBQ1RfTUlOX18gKC0wLjVSLTAuNVIpCiNkZWZp
bmUgX19GUkFDVF9NQVhfXyAwWDdGRkZQLTE1UgojZGVmaW5lIF9fRlJBQ1RfRVBTSUxPTl9fIDB4
MVAtMTVSCiNkZWZpbmUgX19VRlJBQ1RfRkJJVF9fIDE2CiNkZWZpbmUgX19VRlJBQ1RfSUJJVF9f
IDAKI2RlZmluZSBfX1VGUkFDVF9NSU5fXyAwLjBVUgojZGVmaW5lIF9fVUZSQUNUX01BWF9fIDBY
RkZGRlAtMTZVUgojZGVmaW5lIF9fVUZSQUNUX0VQU0lMT05fXyAweDFQLTE2VVIKI2RlZmluZSBf
X0xGUkFDVF9GQklUX18gMzEKI2RlZmluZSBfX0xGUkFDVF9JQklUX18gMAojZGVmaW5lIF9fTEZS
QUNUX01JTl9fICgtMC41TFItMC41TFIpCiNkZWZpbmUgX19MRlJBQ1RfTUFYX18gMFg3RkZGRkZG
RlAtMzFMUgojZGVmaW5lIF9fTEZSQUNUX0VQU0lMT05fXyAweDFQLTMxTFIKI2RlZmluZSBfX1VM
RlJBQ1RfRkJJVF9fIDMyCiNkZWZpbmUgX19VTEZSQUNUX0lCSVRfXyAwCiNkZWZpbmUgX19VTEZS
QUNUX01JTl9fIDAuMFVMUgojZGVmaW5lIF9fVUxGUkFDVF9NQVhfXyAwWEZGRkZGRkZGUC0zMlVM
UgojZGVmaW5lIF9fVUxGUkFDVF9FUFNJTE9OX18gMHgxUC0zMlVMUgojZGVmaW5lIF9fTExGUkFD
VF9GQklUX18gNjMKI2RlZmluZSBfX0xMRlJBQ1RfSUJJVF9fIDAKI2RlZmluZSBfX0xMRlJBQ1Rf
TUlOX18gKC0wLjVMTFItMC41TExSKQojZGVmaW5lIF9fTExGUkFDVF9NQVhfXyAwWDdGRkZGRkZG
RkZGRkZGRkZQLTYzTExSCiNkZWZpbmUgX19MTEZSQUNUX0VQU0lMT05fXyAweDFQLTYzTExSCiNk
ZWZpbmUgX19VTExGUkFDVF9GQklUX18gNjQKI2RlZmluZSBfX1VMTEZSQUNUX0lCSVRfXyAwCiNk
ZWZpbmUgX19VTExGUkFDVF9NSU5fXyAwLjBVTExSCiNkZWZpbmUgX19VTExGUkFDVF9NQVhfXyAw
WEZGRkZGRkZGRkZGRkZGRkZQLTY0VUxMUgojZGVmaW5lIF9fVUxMRlJBQ1RfRVBTSUxPTl9fIDB4
MVAtNjRVTExSCiNkZWZpbmUgX19TQUNDVU1fRkJJVF9fIDcKI2RlZmluZSBfX1NBQ0NVTV9JQklU
X18gOAojZGVmaW5lIF9fU0FDQ1VNX01JTl9fICgtMFgxUDdISy0wWDFQN0hLKQojZGVmaW5lIF9f
U0FDQ1VNX01BWF9fIDBYN0ZGRlAtN0hLCiNkZWZpbmUgX19TQUNDVU1fRVBTSUxPTl9fIDB4MVAt
N0hLCiNkZWZpbmUgX19VU0FDQ1VNX0ZCSVRfXyA4CiNkZWZpbmUgX19VU0FDQ1VNX0lCSVRfXyA4
CiNkZWZpbmUgX19VU0FDQ1VNX01JTl9fIDAuMFVISwojZGVmaW5lIF9fVVNBQ0NVTV9NQVhfXyAw
WEZGRkZQLThVSEsKI2RlZmluZSBfX1VTQUNDVU1fRVBTSUxPTl9fIDB4MVAtOFVISwojZGVmaW5l
IF9fQUNDVU1fRkJJVF9fIDE1CiNkZWZpbmUgX19BQ0NVTV9JQklUX18gMTYKI2RlZmluZSBfX0FD
Q1VNX01JTl9fICgtMFgxUDE1Sy0wWDFQMTVLKQojZGVmaW5lIF9fQUNDVU1fTUFYX18gMFg3RkZG
RkZGRlAtMTVLCiNkZWZpbmUgX19BQ0NVTV9FUFNJTE9OX18gMHgxUC0xNUsKI2RlZmluZSBfX1VB
Q0NVTV9GQklUX18gMTYKI2RlZmluZSBfX1VBQ0NVTV9JQklUX18gMTYKI2RlZmluZSBfX1VBQ0NV
TV9NSU5fXyAwLjBVSwojZGVmaW5lIF9fVUFDQ1VNX01BWF9fIDBYRkZGRkZGRkZQLTE2VUsKI2Rl
ZmluZSBfX1VBQ0NVTV9FUFNJTE9OX18gMHgxUC0xNlVLCiNkZWZpbmUgX19MQUNDVU1fRkJJVF9f
IDMxCiNkZWZpbmUgX19MQUNDVU1fSUJJVF9fIDMyCiNkZWZpbmUgX19MQUNDVU1fTUlOX18gKC0w
WDFQMzFMSy0wWDFQMzFMSykKI2RlZmluZSBfX0xBQ0NVTV9NQVhfXyAwWDdGRkZGRkZGRkZGRkZG
RkZQLTMxTEsKI2RlZmluZSBfX0xBQ0NVTV9FUFNJTE9OX18gMHgxUC0zMUxLCiNkZWZpbmUgX19V
TEFDQ1VNX0ZCSVRfXyAzMgojZGVmaW5lIF9fVUxBQ0NVTV9JQklUX18gMzIKI2RlZmluZSBfX1VM
QUNDVU1fTUlOX18gMC4wVUxLCiNkZWZpbmUgX19VTEFDQ1VNX01BWF9fIDBYRkZGRkZGRkZGRkZG
RkZGRlAtMzJVTEsKI2RlZmluZSBfX1VMQUNDVU1fRVBTSUxPTl9fIDB4MVAtMzJVTEsKI2RlZmlu
ZSBfX0xMQUNDVU1fRkJJVF9fIDMxCiNkZWZpbmUgX19MTEFDQ1VNX0lCSVRfXyAzMgojZGVmaW5l
IF9fTExBQ0NVTV9NSU5fXyAoLTBYMVAzMUxMSy0wWDFQMzFMTEspCiNkZWZpbmUgX19MTEFDQ1VN
X01BWF9fIDBYN0ZGRkZGRkZGRkZGRkZGRlAtMzFMTEsKI2RlZmluZSBfX0xMQUNDVU1fRVBTSUxP
Tl9fIDB4MVAtMzFMTEsKI2RlZmluZSBfX1VMTEFDQ1VNX0ZCSVRfXyAzMgojZGVmaW5lIF9fVUxM
QUNDVU1fSUJJVF9fIDMyCiNkZWZpbmUgX19VTExBQ0NVTV9NSU5fXyAwLjBVTExLCiNkZWZpbmUg
X19VTExBQ0NVTV9NQVhfXyAwWEZGRkZGRkZGRkZGRkZGRkZQLTMyVUxMSwojZGVmaW5lIF9fVUxM
QUNDVU1fRVBTSUxPTl9fIDB4MVAtMzJVTExLCiNkZWZpbmUgX19RUV9GQklUX18gNwojZGVmaW5l
IF9fUVFfSUJJVF9fIDAKI2RlZmluZSBfX0hRX0ZCSVRfXyAxNQojZGVmaW5lIF9fSFFfSUJJVF9f
IDAKI2RlZmluZSBfX1NRX0ZCSVRfXyAzMQojZGVmaW5lIF9fU1FfSUJJVF9fIDAKI2RlZmluZSBf
X0RRX0ZCSVRfXyA2MwojZGVmaW5lIF9fRFFfSUJJVF9fIDAKI2RlZmluZSBfX1RRX0ZCSVRfXyAx
MjcKI2RlZmluZSBfX1RRX0lCSVRfXyAwCiNkZWZpbmUgX19VUVFfRkJJVF9fIDgKI2RlZmluZSBf
X1VRUV9JQklUX18gMAojZGVmaW5lIF9fVUhRX0ZCSVRfXyAxNgojZGVmaW5lIF9fVUhRX0lCSVRf
XyAwCiNkZWZpbmUgX19VU1FfRkJJVF9fIDMyCiNkZWZpbmUgX19VU1FfSUJJVF9fIDAKI2RlZmlu
ZSBfX1VEUV9GQklUX18gNjQKI2RlZmluZSBfX1VEUV9JQklUX18gMAojZGVmaW5lIF9fVVRRX0ZC
SVRfXyAxMjgKI2RlZmluZSBfX1VUUV9JQklUX18gMAojZGVmaW5lIF9fSEFfRkJJVF9fIDcKI2Rl
ZmluZSBfX0hBX0lCSVRfXyA4CiNkZWZpbmUgX19TQV9GQklUX18gMTUKI2RlZmluZSBfX1NBX0lC
SVRfXyAxNgojZGVmaW5lIF9fREFfRkJJVF9fIDMxCiNkZWZpbmUgX19EQV9JQklUX18gMzIKI2Rl
ZmluZSBfX1RBX0ZCSVRfXyA2MwojZGVmaW5lIF9fVEFfSUJJVF9fIDY0CiNkZWZpbmUgX19VSEFf
RkJJVF9fIDgKI2RlZmluZSBfX1VIQV9JQklUX18gOAojZGVmaW5lIF9fVVNBX0ZCSVRfXyAxNgoj
ZGVmaW5lIF9fVVNBX0lCSVRfXyAxNgojZGVmaW5lIF9fVURBX0ZCSVRfXyAzMgojZGVmaW5lIF9f
VURBX0lCSVRfXyAzMgojZGVmaW5lIF9fVVRBX0ZCSVRfXyA2NAojZGVmaW5lIF9fVVRBX0lCSVRf
XyA2NAojZGVmaW5lIF9fUkVHSVNURVJfUFJFRklYX18gCiNkZWZpbmUgX19VU0VSX0xBQkVMX1BS
RUZJWF9fIAojZGVmaW5lIF9fR05VQ19TVERDX0lOTElORV9fIDEKI2RlZmluZSBfX1NUUklDVF9B
TlNJX18gMQojZGVmaW5lIF9fQ0hBUl9VTlNJR05FRF9fIDEKI2RlZmluZSBfX1dDSEFSX1VOU0lH
TkVEX18gMQojZGVmaW5lIF9fR0NDX0hBVkVfU1lOQ19DT01QQVJFX0FORF9TV0FQXzEgMQojZGVm
aW5lIF9fR0NDX0hBVkVfU1lOQ19DT01QQVJFX0FORF9TV0FQXzIgMQojZGVmaW5lIF9fR0NDX0hB
VkVfU1lOQ19DT01QQVJFX0FORF9TV0FQXzQgMQojZGVmaW5lIF9fR0NDX0hBVkVfU1lOQ19DT01Q
QVJFX0FORF9TV0FQXzggMQojZGVmaW5lIF9fR0NDX0FUT01JQ19CT09MX0xPQ0tfRlJFRSAyCiNk
ZWZpbmUgX19HQ0NfQVRPTUlDX0NIQVJfTE9DS19GUkVFIDIKI2RlZmluZSBfX0dDQ19BVE9NSUNf
Q0hBUjE2X1RfTE9DS19GUkVFIDIKI2RlZmluZSBfX0dDQ19BVE9NSUNfQ0hBUjMyX1RfTE9DS19G
UkVFIDIKI2RlZmluZSBfX0dDQ19BVE9NSUNfV0NIQVJfVF9MT0NLX0ZSRUUgMgojZGVmaW5lIF9f
R0NDX0FUT01JQ19TSE9SVF9MT0NLX0ZSRUUgMgojZGVmaW5lIF9fR0NDX0FUT01JQ19JTlRfTE9D
S19GUkVFIDIKI2RlZmluZSBfX0dDQ19BVE9NSUNfTE9OR19MT0NLX0ZSRUUgMgojZGVmaW5lIF9f
R0NDX0FUT01JQ19MTE9OR19MT0NLX0ZSRUUgMgojZGVmaW5lIF9fR0NDX0FUT01JQ19URVNUX0FO
RF9TRVRfVFJVRVZBTCAxCiNkZWZpbmUgX19HQ0NfQVRPTUlDX1BPSU5URVJfTE9DS19GUkVFIDIK
I2RlZmluZSBfX1BSQUdNQV9SRURFRklORV9FWFROQU1FIDEKI2RlZmluZSBfX1NJWkVPRl9XQ0hB
Ul9UX18gNAojZGVmaW5lIF9fU0laRU9GX1dJTlRfVF9fIDQKI2RlZmluZSBfX1NJWkVPRl9QVFJE
SUZGX1RfXyA0CiNkZWZpbmUgX19BUk1fRkVBVFVSRV9EU1AgMQojZGVmaW5lIF9fQVJNX0ZFQVRV
UkVfUUJJVCAxCiNkZWZpbmUgX19BUk1fRkVBVFVSRV9TQVQgMQojZGVmaW5lIF9fQVJNX0ZFQVRV
UkVfVU5BTElHTkVEIDEKI2RlZmluZSBfX0FSTV8zMkJJVF9TVEFURSAxCiNkZWZpbmUgX19BUk1f
RkVBVFVSRV9MRFJFWCAxNQojZGVmaW5lIF9fQVJNX0ZFQVRVUkVfQ0xaIDEKI2RlZmluZSBfX0FS
TV9GRUFUVVJFX1NJTUQzMiAxCiNkZWZpbmUgX19BUk1fU0laRU9GX01JTklNQUxfRU5VTSA0CiNk
ZWZpbmUgX19BUk1fU0laRU9GX1dDSEFSX1QgNAojZGVmaW5lIF9fQVJNX0FSQ0hfUFJPRklMRSA2
NQojZGVmaW5lIF9fYXJtX18gMQojZGVmaW5lIF9fQVJNX0FSQ0ggNwojZGVmaW5lIF9fQVJNX0FS
Q0hfSVNBX0FSTSAxCiNkZWZpbmUgX19BUENTXzMyX18gMQojZGVmaW5lIF9fdGh1bWJfXyAxCiNk
ZWZpbmUgX190aHVtYjJfXyAxCiNkZWZpbmUgX19BUk1fQVJDSF9JU0FfVEhVTUIgMgojZGVmaW5l
IF9fQVJNRUxfXyAxCiNkZWZpbmUgX19USFVNQkVMX18gMQojZGVmaW5lIF9fVkZQX0ZQX18gMQoj
ZGVmaW5lIF9fQVJNX0ZQIDE0CiNkZWZpbmUgX19BUk1fRkVBVFVSRV9GTUEgMQojZGVmaW5lIF9f
QVJNX05FT05fXyAxCiNkZWZpbmUgX19BUk1fTkVPTiAxCiNkZWZpbmUgX19BUk1fTkVPTl9GUCA2
CiNkZWZpbmUgX19USFVNQl9JTlRFUldPUktfXyAxCiNkZWZpbmUgX19BUk1fQVJDSF83QV9fIDEK
I2RlZmluZSBfX0FSTV9QQ1NfVkZQIDEKI2RlZmluZSBfX0FSTV9FQUJJX18gMQojZGVmaW5lIF9f
R1hYX1RZUEVJTkZPX0VRVUFMSVRZX0lOTElORSAwCiNkZWZpbmUgX19nbnVfbGludXhfXyAxCiNk
ZWZpbmUgX19saW51eCAxCiNkZWZpbmUgX19saW51eF9fIDEKI2RlZmluZSBfX3VuaXggMQojZGVm
aW5lIF9fdW5peF9fIDEKI2RlZmluZSBfX0VMRl9fIDEKIyAxICI8Y29tbWFuZC1saW5lPiIKI2Rl
ZmluZSBfR05VX1NPVVJDRSAxCiNkZWZpbmUgQlVJTERJTkdfSmF2YVNjcmlwdENvcmUgMQojZGVm
aW5lIEJVSUxESU5HX1dJVEhfQ01BS0UgMQojZGVmaW5lIEhBVkVfQ09ORklHX0ggMQojZGVmaW5l
IEphdmFTY3JpcHRDb3JlX0VYUE9SVFMgMQojZGVmaW5lIFNUQVRJQ0FMTFlfTElOS0VEX1dJVEhf
V1RGIDEKI2RlZmluZSBOREVCVUcgMQojIDEgIi91c3IvaW5jbHVkZS9zdGRjLXByZWRlZi5oIiAx
IDMgNAojIDE5ICIvdXNyL2luY2x1ZGUvc3RkYy1wcmVkZWYuaCIgMyA0CiNkZWZpbmUgX1NURENf
UFJFREVGX0ggMQojIDM4ICIvdXNyL2luY2x1ZGUvc3RkYy1wcmVkZWYuaCIgMyA0CiNkZWZpbmUg
X19TVERDX0lFQ181NTlfXyAxCgoKCgoKCgojZGVmaW5lIF9fU1REQ19JRUNfNTU5X0NPTVBMRVhf
XyAxCgoKCgoKCgojZGVmaW5lIF9fU1REQ19JU09fMTA2NDZfXyAyMDExMDNMCgoKI2RlZmluZSBf
X1NURENfTk9fVEhSRUFEU19fIDEKIyAxICI8Y29tbWFuZC1saW5lPiIgMgojIDEgIi4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1
ZVdhdGNocG9pbnRCYXNlLmNwcCIKIyAyNiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwIgoj
IDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaCIgMQojIDIzICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgiCiMgMSAiLi9jbWFrZWNvbmZpZy5oIiAxCgoj
ZGVmaW5lIENNQUtFQ09ORklHX0ggCgojZGVmaW5lIEVOQUJMRV8zRF9UUkFOU0ZPUk1TIDAKI2Rl
ZmluZSBFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTIDAKI2RlZmluZSBFTkFCTEVfQUNDRUxF
UkFURURfT1ZFUkZMT1dfU0NST0xMSU5HIDAKI2RlZmluZSBFTkFCTEVfQUNDRVNTSUJJTElUWSAw
CiNkZWZpbmUgRU5BQkxFX0FMTElOT05FX0JVSUxEIDAKI2RlZmluZSBFTkFCTEVfQVBJX1RFU1RT
IDEKI2RlZmluZSBFTkFCTEVfQVNTRU1CTEVSX1dYX0VYQ0xVU0lWRSAwCiNkZWZpbmUgRU5BQkxF
X0FTWU5DX1NDUk9MTElORyAwCiNkZWZpbmUgRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCAwCiNk
ZWZpbmUgRU5BQkxFX0FWRl9DQVBUSU9OUyAwCiNkZWZpbmUgRU5BQkxFX0JBVFRFUllfU1RBVFVT
IDAKI2RlZmluZSBFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HIDAKI2RlZmluZSBFTkFCTEVfQ0FO
VkFTX1BBVEggMQojZGVmaW5lIEVOQUJMRV9DQU5WQVNfUFJPWFkgMAojZGVmaW5lIEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORyAxCiNkZWZpbmUgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HIDAKI2Rl
ZmluZSBFTkFCTEVfQ09OVEVYVF9NRU5VUyAxCiNkZWZpbmUgRU5BQkxFX0NSRURFTlRJQUxfU1RP
UkFHRSAwCiNkZWZpbmUgRU5BQkxFX0NTUF9ORVhUIDAKI2RlZmluZSBFTkFCTEVfQ1NTM19URVhU
IDAKI2RlZmluZSBFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUsgMAojZGVmaW5lIEVOQUJMRV9D
U1NfQk9YX0RFQ09SQVRJT05fQlJFQUsgMQojZGVmaW5lIEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcg
MAojZGVmaW5lIEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04gMAojZGVmaW5lIEVOQUJMRV9D
U1NfR1JJRF9MQVlPVVQgMAojZGVmaW5lIEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04gMAoj
ZGVmaW5lIEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTiAwCiNkZWZpbmUgRU5BQkxFX0NTU19J
TUFHRV9TRVQgMAojZGVmaW5lIEVOQUJMRV9DU1NfUkVHSU9OUyAwCiNkZWZpbmUgRU5BQkxFX0NT
U19TQ1JPTExfU05BUCAwCiNkZWZpbmUgRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0IDAKI2Rl
ZmluZSBFTkFCTEVfQ1NTX1NIQVBFUyAwCiNkZWZpbmUgRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZ
IDAKI2RlZmluZSBFTkFCTEVfQ1VTVE9NX0VMRU1FTlRTIDAKI2RlZmluZSBFTkFCTEVfQ1VTVE9N
X1NDSEVNRV9IQU5ETEVSIDAKI2RlZmluZSBFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQgMAojZGVm
aW5lIEVOQUJMRV9EQVRBQkFTRV9QUk9DRVNTIDAKI2RlZmluZSBFTkFCTEVfREFUQUNVRV9WQUxV
RSAwCiNkZWZpbmUgRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQgMAojZGVmaW5lIEVOQUJMRV9EQVRB
X1RSQU5TRkVSX0lURU1TIDAKI2RlZmluZSBFTkFCTEVfREVUQUlMU19FTEVNRU5UIDEKI2RlZmlu
ZSBFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OIDAKI2RlZmluZSBFTkFCTEVfREZHX0pJVCAxCiNk
ZWZpbmUgRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SIDAKI2RlZmluZSBFTkFCTEVfRE9X
TkxPQURfQVRUUklCVVRFIDAKI2RlZmluZSBFTkFCTEVfRFJBR19TVVBQT1JUIDAKI2RlZmluZSBF
TkFCTEVfRU5DUllQVEVEX01FRElBIDAKI2RlZmluZSBFTkFCTEVfRU5DUllQVEVEX01FRElBX1Yy
IDAKI2RlZmluZSBFTkFCTEVfRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYIDEKI2RlZmluZSBFTkFC
TEVfRVM2X0dFTkVSQVRPUlMgMQojZGVmaW5lIEVOQUJMRV9FUzZfTU9EVUxFUyAwCiNkZWZpbmUg
RU5BQkxFX0ZFVENIX0FQSSAxCiNkZWZpbmUgRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMiAwCiNkZWZp
bmUgRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMgMAojZGVmaW5lIEVOQUJMRV9GVExfSklUIDAKI2Rl
ZmluZSBFTkFCTEVfRlRQRElSIDEKI2RlZmluZSBFTkFCTEVfRlVMTFNDUkVFTl9BUEkgMAojZGVm
aW5lIEVOQUJMRV9HQU1FUEFEIDAKI2RlZmluZSBFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVEIDAK
I2RlZmluZSBFTkFCTEVfR0VPTE9DQVRJT04gMAojZGVmaW5lIEVOQUJMRV9JQ09OREFUQUJBU0Ug
MQojZGVmaW5lIEVOQUJMRV9JTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcgMAojZGVmaW5lIEVO
QUJMRV9JTkRFWEVEX0RBVEFCQVNFIDAKI2RlZmluZSBFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9J
Tl9XT1JLRVJTIDAKI2RlZmluZSBFTkFCTEVfSU5ESUVfVUkgMAojZGVmaW5lIEVOQUJMRV9JTlBV
VF9UWVBFX0NPTE9SIDAKI2RlZmluZSBFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSIDAK
I2RlZmluZSBFTkFCTEVfSU5QVVRfVFlQRV9EQVRFIDAKI2RlZmluZSBFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFVElNRUxPQ0FMIDAKI2RlZmluZSBFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNP
TVBMRVRFIDAKI2RlZmluZSBFTkFCTEVfSU5QVVRfVFlQRV9NT05USCAwCiNkZWZpbmUgRU5BQkxF
X0lOUFVUX1RZUEVfVElNRSAwCiNkZWZpbmUgRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyAwCiNkZWZp
bmUgRU5BQkxFX0lOVEwgMQojZGVmaW5lIEVOQUJMRV9JT1NfQUlSUExBWSAwCiNkZWZpbmUgRU5B
QkxFX0lPU19URVhUX0FVVE9TSVpJTkcgMAojZGVmaW5lIEVOQUJMRV9KSVQgMQojZGVmaW5lIEVO
QUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyAwCiNkZWZpbmUgRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TIDAKI2RlZmluZSBFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUyAxCiNk
ZWZpbmUgRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8gMQojZGVmaW5lIEVOQUJMRV9MRVRURVJQUkVT
UyAwCiNkZWZpbmUgRU5BQkxFX0xJTktfUFJFRkVUQ0ggMAojZGVmaW5lIEVOQUJMRV9NQUNfTE9O
R19QUkVTUyAwCiNkZWZpbmUgRU5BQkxFX01BVEhNTCAxCiNkZWZpbmUgRU5BQkxFX01FRElBX0NB
UFRVUkUgMAojZGVmaW5lIEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQgMAojZGVmaW5lIEVO
QUJMRV9NRURJQV9TT1VSQ0UgMAojZGVmaW5lIEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTIDAKI2Rl
ZmluZSBFTkFCTEVfTUVESUFfU1RSRUFNIDAKI2RlZmluZSBFTkFCTEVfTUVNT1JZX1NBTVBMRVIg
MAojZGVmaW5lIEVOQUJMRV9NRVRFUl9FTEVNRU5UIDEKI2RlZmluZSBFTkFCTEVfTUhUTUwgMAoj
ZGVmaW5lIEVOQUJMRV9NSU5JQlJPV1NFUiAwCiNkZWZpbmUgRU5BQkxFX01PVVNFX0NVUlNPUl9T
Q0FMRSAwCiNkZWZpbmUgRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTIDAKI2RlZmluZSBF
TkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kgMQojZGVmaW5lIEVOQUJMRV9ORVRTQ0FQRV9Q
TFVHSU5fQVBJIDEKI2RlZmluZSBFTkFCTEVfTk9TTklGRiAwCiNkZWZpbmUgRU5BQkxFX05PVElG
SUNBVElPTlMgMAojZGVmaW5lIEVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMgMAojZGVmaW5lIEVO
QUJMRV9QREZLSVRfUExVR0lOIDAKI2RlZmluZSBFTkFCTEVfUEVSRk9STUFOQ0VfVElNRUxJTkUg
MAojZGVmaW5lIEVOQUJMRV9QT0lOVEVSX0xPQ0sgMAojZGVmaW5lIEVOQUJMRV9QUk9YSU1JVFlf
RVZFTlRTIDAKI2RlZmluZSBFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUIDAKI2RlZmluZSBFTkFC
TEVfUVVPVEEgMAojZGVmaW5lIEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SIDAKI2RlZmluZSBFTkFC
TEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUgMQojZGVmaW5lIEVOQUJMRV9SRVNPTFVUSU9OX01F
RElBX1FVRVJZIDAKI2RlZmluZSBFTkFCTEVfUkVTT1VSQ0VfVElNSU5HIDAKI2RlZmluZSBFTkFC
TEVfUkVTT1VSQ0VfVVNBR0UgMAojZGVmaW5lIEVOQUJMRV9SVUJCRVJfQkFORElORyAwCiNkZWZp
bmUgRU5BQkxFX1NBTVBMSU5HX1BST0ZJTEVSIDEKI2RlZmluZSBFTkFCTEVfU0VDQ09NUF9GSUxU
RVJTIDAKI2RlZmluZSBFTkFCTEVfU0VSVklDRV9DT05UUk9MUyAwCiNkZWZpbmUgRU5BQkxFX1NI
QURPV19ET00gMAojZGVmaW5lIEVOQUJMRV9TTU9PVEhfU0NST0xMSU5HIDAKI2RlZmluZSBFTkFC
TEVfU1BFRUNIX1NZTlRIRVNJUyAwCiNkZWZpbmUgRU5BQkxFX1NQRUxMQ0hFQ0sgMAojZGVmaW5l
IEVOQUJMRV9TVEFUSUNfSlNDIDAKI2RlZmluZSBFTkFCTEVfU1RSRUFNU19BUEkgMQojZGVmaW5l
IEVOQUJMRV9TVUJUTEVfQ1JZUFRPIDAKI2RlZmluZSBFTkFCTEVfU1ZHX0ZPTlRTIDEKI2RlZmlu
ZSBFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04gMAojZGVmaW5lIEVOQUJMRV9URVhU
X0FVVE9TSVpJTkcgMAojZGVmaW5lIEVOQUJMRV9USFJFQURFRF9DT01QT1NJVE9SIDAKI2RlZmlu
ZSBFTkFCTEVfVE9VQ0hfRVZFTlRTIDAKI2RlZmluZSBFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5H
IDAKI2RlZmluZSBFTkFCTEVfVE9VQ0hfU0xJREVSIDAKI2RlZmluZSBFTkFCTEVfVVNFUlNFTEVD
VF9BTEwgMAojZGVmaW5lIEVOQUJMRV9VU0VSX01FU1NBR0VfSEFORExFUlMgMAojZGVmaW5lIEVO
QUJMRV9VU0VSX1RJTUlORyAwCiNkZWZpbmUgRU5BQkxFX1ZJQlJBVElPTiAwCiNkZWZpbmUgRU5B
QkxFX1ZJREVPIDAKI2RlZmluZSBFTkFCTEVfVklERU9fVFJBQ0sgMAojZGVmaW5lIEVOQUJMRV9W
SUVXX01PREVfQ1NTX01FRElBIDEKI2RlZmluZSBFTkFCTEVfV0VCQVNTRU1CTFkgMAojZGVmaW5l
IEVOQUJMRV9XRUJHTCAwCiNkZWZpbmUgRU5BQkxFX1dFQlZUVF9SRUdJT05TIDAKI2RlZmluZSBF
TkFCTEVfV0VCX0FOSU1BVElPTlMgMAojZGVmaW5lIEVOQUJMRV9XRUJfQVVESU8gMAojZGVmaW5l
IEVOQUJMRV9XRUJfUkVQTEFZIDAKI2RlZmluZSBFTkFCTEVfV0VCX1JUQyAwCiNkZWZpbmUgRU5B
QkxFX1dFQl9TT0NLRVRTIDEKI2RlZmluZSBFTkFCTEVfV0VCX1RJTUlORyAwCiNkZWZpbmUgRU5B
QkxFX1hTTFQgMQojZGVmaW5lIEhBVkVfRkVBVFVSRVNfSCAxCiNkZWZpbmUgVVNFX0dFTkVSSUNf
RVZFTlRfTE9PUCAxCiNkZWZpbmUgVVNFX1NZU1RFTV9NQUxMT0MgMAojZGVmaW5lIFdURl9DUFVf
QVJNNjRfQ09SVEVYQTUzIDAKI2RlZmluZSBXVEZfREVGQVVMVF9FVkVOVF9MT09QIDAKIyAyNCAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oIiAyCgoKIyAxICIuLi8uLi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIiAxCiMgMjkgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgiCiNkZWZpbmUgV1RGX1BsYXRmb3JtX2ggCgoKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0
Zi9Db21waWxlci5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgiCiNk
ZWZpbmUgV1RGX0NvbXBpbGVyX2ggCgoKI2RlZmluZSBDT01QSUxFUihXVEZfRkVBVFVSRSkgKGRl
ZmluZWQgV1RGX0NPTVBJTEVSXyAjI1dURl9GRUFUVVJFICYmIFdURl9DT01QSUxFUl8gIyNXVEZf
RkVBVFVSRSkKCgojZGVmaW5lIENPTVBJTEVSX1NVUFBPUlRTKFdURl9DT01QSUxFUl9GRUFUVVJF
KSAoZGVmaW5lZCBXVEZfQ09NUElMRVJfU1VQUE9SVFNfICMjV1RGX0NPTVBJTEVSX0ZFQVRVUkUg
JiYgV1RGX0NPTVBJTEVSX1NVUFBPUlRTXyAjI1dURl9DT01QSUxFUl9GRUFUVVJFKQoKCiNkZWZp
bmUgQ09NUElMRVJfUVVJUksoV1RGX0NPTVBJTEVSX1FVSVJLKSAoZGVmaW5lZCBXVEZfQ09NUElM
RVJfUVVJUktfICMjV1RGX0NPTVBJTEVSX1FVSVJLICYmIFdURl9DT01QSUxFUl9RVUlSS18gIyNX
VEZfQ09NUElMRVJfUVVJUkspCgoKCgoKI2RlZmluZSBDT01QSUxFUl9IQVNfQ0xBTkdfQlVJTFRJ
Tih4KSAwCiMgNjAgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgiCiNkZWZpbmUgV1RG
X0NPTVBJTEVSX0dDQ19PUl9DTEFORyAxCgoKCgoKI2RlZmluZSBXVEZfQ09NUElMRVJfR0NDIDEK
I2RlZmluZSBXVEZfQ09NUElMRVJfU1VQUE9SVFNfQ1hYX1VTRVJfTElURVJBTFMgMQojZGVmaW5l
IFdURl9DT01QSUxFUl9TVVBQT1JUU19DWFhfUkVGRVJFTkNFX1FVQUxJRklFRF9GVU5DVElPTlMg
MQoKI2RlZmluZSBHQ0NfVkVSU0lPTiAoX19HTlVDX18gKiAxMDAwMCArIF9fR05VQ19NSU5PUl9f
ICogMTAwICsgX19HTlVDX1BBVENITEVWRUxfXykKI2RlZmluZSBHQ0NfVkVSU0lPTl9BVF9MRUFT
VChtYWpvcixtaW5vcixwYXRjaCkgKEdDQ19WRVJTSU9OID49IChtYWpvciAqIDEwMDAwICsgbWlu
b3IgKiAxMDAgKyBwYXRjaCkpCiMgODEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgi
CiNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtYXliZS11bmluaXRpYWxpemVkIgoj
IDExNyAiLi4vLi4vU291cmNlL1dURi93dGYvQ29tcGlsZXIuaCIKI2RlZmluZSBXVEZfQ09NUElM
RVJfUVVJUktfQ09OU0lERVJTX1VOUkVBQ0hBQkxFX0NPREUgMQoKCgoKCgoKI2RlZmluZSBXVEZf
Q09NUElMRVJfU1VQUE9SVFNfRUFCSSAxCgoKCgoKI2RlZmluZSBBU0FOX0VOQUJMRUQgMAoKCgoK
CiNkZWZpbmUgU1VQUFJFU1NfQVNBTiAKCgoKCgoKCiNkZWZpbmUgQUxXQVlTX0lOTElORSBpbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQojIDE1OSAiLi4vLi4vU291cmNl
L1dURi93dGYvQ29tcGlsZXIuaCIKI2RlZmluZSBXVEZfRVhURVJOX0NfQkVHSU4gZXh0ZXJuICJD
IiB7CiNkZWZpbmUgV1RGX0VYVEVSTl9DX0VORCB9CgoKCgoKCgojZGVmaW5lIEVYVEVSTl9DIGV4
dGVybiAiQyIKIyAxODAgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgiCiNkZWZpbmUg
RkFMTFRIUk9VR0ggCgoKCgoKI2RlZmluZSBMSUtFTFkoeCkgX19idWlsdGluX2V4cGVjdCghISh4
KSwgMSkKIyAxOTYgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgiCiNkZWZpbmUgTkVW
RVJfSU5MSU5FIF9fYXR0cmlidXRlX18oKF9fbm9pbmxpbmVfXykpCiMgMjEwICIuLi8uLi9Tb3Vy
Y2UvV1RGL3d0Zi9Db21waWxlci5oIgojZGVmaW5lIE5PX1JFVFVSTiBfX2F0dHJpYnV0ZSgoX19u
b3JldHVybl9fKSkKIyAyMjQgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgiCiNkZWZp
bmUgTk9fUkVUVVJOX1dJVEhfVkFMVUUgTk9fUkVUVVJOCiMgMjM4ICIuLi8uLi9Tb3VyY2UvV1RG
L3d0Zi9Db21waWxlci5oIgojZGVmaW5lIE9CSkNfQ0xBU1MgY2xhc3MKCgoKCgojZGVmaW5lIFBV
UkVfRlVOQ1RJT04gX19hdHRyaWJ1dGVfXygoX19wdXJlX18pKQojIDI1NCAiLi4vLi4vU291cmNl
L1dURi93dGYvQ29tcGlsZXIuaCIKI2RlZmluZSBSRUZFUkVOQ0VEX0ZST01fQVNNIF9fYXR0cmli
dXRlX18oKF9fdXNlZF9fKSkKIyAyNjQgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgi
CiNkZWZpbmUgVU5MSUtFTFkoeCkgX19idWlsdGluX2V4cGVjdCghISh4KSwgMCkKIyAyODEgIi4u
Ly4uL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgiCiNkZWZpbmUgVU5VU0VEX0xBQkVMKGxhYmVs
KSBVTlVTRURfUEFSQU0oJiYgbGFiZWwpCiMgMjkxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9Db21w
aWxlci5oIgojZGVmaW5lIFVOVVNFRF9QQVJBTSh2YXJpYWJsZSkgKHZvaWQpdmFyaWFibGUKCgoK
CgojZGVmaW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2Vk
X3Jlc3VsdF9fKSkKIyAzMyAiLi4vLi4vU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCIgMgoKCgoK
I2RlZmluZSBQTEFURk9STShXVEZfRkVBVFVSRSkgKGRlZmluZWQgV1RGX1BMQVRGT1JNXyAjI1dU
Rl9GRUFUVVJFICYmIFdURl9QTEFURk9STV8gIyNXVEZfRkVBVFVSRSkKCgoKCgojZGVmaW5lIENQ
VShXVEZfRkVBVFVSRSkgKGRlZmluZWQgV1RGX0NQVV8gIyNXVEZfRkVBVFVSRSAmJiBXVEZfQ1BV
XyAjI1dURl9GRUFUVVJFKQoKI2RlZmluZSBIQVZFKFdURl9GRUFUVVJFKSAoZGVmaW5lZCBIQVZF
XyAjI1dURl9GRUFUVVJFICYmIEhBVkVfICMjV1RGX0ZFQVRVUkUpCgoKI2RlZmluZSBPUyhXVEZf
RkVBVFVSRSkgKGRlZmluZWQgV1RGX09TXyAjI1dURl9GRUFUVVJFICYmIFdURl9PU18gIyNXVEZf
RkVBVFVSRSkKCgoKCgojZGVmaW5lIFVTRShXVEZfRkVBVFVSRSkgKGRlZmluZWQgVVNFXyAjI1dU
Rl9GRUFUVVJFICYmIFVTRV8gIyNXVEZfRkVBVFVSRSkKCiNkZWZpbmUgRU5BQkxFKFdURl9GRUFU
VVJFKSAoZGVmaW5lZCBFTkFCTEVfICMjV1RGX0ZFQVRVUkUgJiYgRU5BQkxFXyAjI1dURl9GRUFU
VVJFKQojIDE3OSAiLi4vLi4vU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCIKI2RlZmluZSBXVEZf
QVJNX0FSQ0hfQVRfTEVBU1QoTikgKENQVShBUk0pICYmIFdURl9BUk1fQVJDSF9WRVJTSU9OID49
IE4pCgoKCgoKI2RlZmluZSBXVEZfQ1BVX0FSTSAxCgoKI2RlZmluZSBXVEZfQ1BVX0FSTV9IQVJE
RlAgMQojIDIzMyAiLi4vLi4vU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCIKI2RlZmluZSBXVEZf
QVJNX0FSQ0hfVkVSU0lPTiA3CiMgMjgxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
IgojZGVmaW5lIFdURl9USFVNQl9BUkNIX1ZFUlNJT04gNAojIDMwNiAiLi4vLi4vU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaCIKI2RlZmluZSBXVEZfQ1BVX0FSTV9UUkFESVRJT05BTCAwCiNkZWZp
bmUgV1RGX0NQVV9BUk1fVEhVTUIyIDEKIyAzMTkgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgiCiNkZWZpbmUgV1RGX0NQVV9BUk1fTkVPTiAxCgoKCgojZGVmaW5lIEhBVkVfQVJNX05F
T05fSU5UUklOU0lDUyAxCgoKCiNkZWZpbmUgV1RGX0NQVV9BUk1fVkZQIDEKIyAzNDYgIi4uLy4u
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgiCiNkZWZpbmUgV1RGX0NQVV9ORUVEU19BTElHTkVE
X0FDQ0VTUyAxCiMgMzg4ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIgojZGVmaW5l
IFdURl9PU19MSU5VWCAxCiMgNDExICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIgoj
ZGVmaW5lIFdURl9PU19XSU4gRVJST1IgIlVTRSBXSU5ET1dTIFdJVEggT1MgTk9UIFdJTiIKI2Rl
ZmluZSBXVEZfT1NfTUFDIEVSUk9SICJVU0UgTUFDX09TX1ggV0lUSCBPUyBOT1QgTUFDIgojIDQy
NiAiLi4vLi4vU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCIKI2RlZmluZSBXVEZfT1NfVU5JWCAx
CgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMgNAojIDE5ICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMyA0CiNkZWZpbmUgX0ZFQVRVUkVTX0ggMQojIDEwMSAiL3Vzci9p
bmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojdW5kZWYgX19VU0VfSVNPQzExCiN1bmRlZiBfX1VTRV9J
U09DOTkKI3VuZGVmIF9fVVNFX0lTT0M5NQojdW5kZWYgX19VU0VfSVNPQ1hYMTEKI3VuZGVmIF9f
VVNFX1BPU0lYCiN1bmRlZiBfX1VTRV9QT1NJWDIKI3VuZGVmIF9fVVNFX1BPU0lYMTk5MzA5CiN1
bmRlZiBfX1VTRV9QT1NJWDE5OTUwNgojdW5kZWYgX19VU0VfWE9QRU4KI3VuZGVmIF9fVVNFX1hP
UEVOX0VYVEVOREVECiN1bmRlZiBfX1VTRV9VTklYOTgKI3VuZGVmIF9fVVNFX1hPUEVOMksKI3Vu
ZGVmIF9fVVNFX1hPUEVOMktYU0kKI3VuZGVmIF9fVVNFX1hPUEVOMks4CiN1bmRlZiBfX1VTRV9Y
T1BFTjJLOFhTSQojdW5kZWYgX19VU0VfTEFSR0VGSUxFCiN1bmRlZiBfX1VTRV9MQVJHRUZJTEU2
NAojdW5kZWYgX19VU0VfRklMRV9PRkZTRVQ2NAojdW5kZWYgX19VU0VfQlNECiN1bmRlZiBfX1VT
RV9TVklECiN1bmRlZiBfX1VTRV9NSVNDCiN1bmRlZiBfX1VTRV9BVEZJTEUKI3VuZGVmIF9fVVNF
X0dOVQojdW5kZWYgX19VU0VfUkVFTlRSQU5UCiN1bmRlZiBfX1VTRV9GT1JUSUZZX0xFVkVMCiN1
bmRlZiBfX0tFUk5FTF9TVFJJQ1RfTkFNRVMKCgoKCiNkZWZpbmUgX19LRVJORUxfU1RSSUNUX05B
TUVTIAojIDE0MiAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojZGVmaW5lIF9fR05VQ19Q
UkVSRVEobWFqLG1pbikgKChfX0dOVUNfXyA8PCAxNikgKyBfX0dOVUNfTUlOT1JfXyA+PSAoKG1h
aikgPDwgMTYpICsgKG1pbikpCiMgMTUxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMyA0CiN1
bmRlZiBfSVNPQzk1X1NPVVJDRQojZGVmaW5lIF9JU09DOTVfU09VUkNFIDEKI3VuZGVmIF9JU09D
OTlfU09VUkNFCiNkZWZpbmUgX0lTT0M5OV9TT1VSQ0UgMQojdW5kZWYgX0lTT0MxMV9TT1VSQ0UK
I2RlZmluZSBfSVNPQzExX1NPVVJDRSAxCiN1bmRlZiBfUE9TSVhfU09VUkNFCiNkZWZpbmUgX1BP
U0lYX1NPVVJDRSAxCiN1bmRlZiBfUE9TSVhfQ19TT1VSQ0UKI2RlZmluZSBfUE9TSVhfQ19TT1VS
Q0UgMjAwODA5TAojdW5kZWYgX1hPUEVOX1NPVVJDRQojZGVmaW5lIF9YT1BFTl9TT1VSQ0UgNzAw
CiN1bmRlZiBfWE9QRU5fU09VUkNFX0VYVEVOREVECiNkZWZpbmUgX1hPUEVOX1NPVVJDRV9FWFRF
TkRFRCAxCiN1bmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFCiNkZWZpbmUgX0xBUkdFRklMRTY0X1NP
VVJDRSAxCiN1bmRlZiBfREVGQVVMVF9TT1VSQ0UKI2RlZmluZSBfREVGQVVMVF9TT1VSQ0UgMQoj
dW5kZWYgX0JTRF9TT1VSQ0UKI2RlZmluZSBfQlNEX1NPVVJDRSAxCiN1bmRlZiBfU1ZJRF9TT1VS
Q0UKI2RlZmluZSBfU1ZJRF9TT1VSQ0UgMQojdW5kZWYgX0FURklMRV9TT1VSQ0UKI2RlZmluZSBf
QVRGSUxFX1NPVVJDRSAxCiMgMTg1ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMyA0CiN1bmRl
ZiBfREVGQVVMVF9TT1VSQ0UKI2RlZmluZSBfREVGQVVMVF9TT1VSQ0UgMQojdW5kZWYgX0JTRF9T
T1VSQ0UKI2RlZmluZSBfQlNEX1NPVVJDRSAxCiN1bmRlZiBfU1ZJRF9TT1VSQ0UKI2RlZmluZSBf
U1ZJRF9TT1VSQ0UgMQoKCgoKCiNkZWZpbmUgX19VU0VfSVNPQzExIDEKCgoKCgojZGVmaW5lIF9f
VVNFX0lTT0M5OSAxCgoKCgoKI2RlZmluZSBfX1VTRV9JU09DOTUgMQojIDIxNyAiL3Vzci9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDMgNAojZGVmaW5lIF9fVVNFX0lTT0NYWDExIDEKIyAyMjcgIi91c3Iv
aW5jbHVkZS9mZWF0dXJlcy5oIiAzIDQKI3VuZGVmIF9QT1NJWF9TT1VSQ0UKI2RlZmluZSBfUE9T
SVhfU09VUkNFIDEKI3VuZGVmIF9QT1NJWF9DX1NPVVJDRQojZGVmaW5lIF9QT1NJWF9DX1NPVVJD
RSAyMDA4MDlMCiMgMjQ4ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMyA0CiNkZWZpbmUgX19V
U0VfUE9TSVggMQoKCgojZGVmaW5lIF9fVVNFX1BPU0lYMiAxCgoKCiNkZWZpbmUgX19VU0VfUE9T
SVgxOTkzMDkgMQoKCgojZGVmaW5lIF9fVVNFX1BPU0lYMTk5NTA2IDEKCgoKI2RlZmluZSBfX1VT
RV9YT1BFTjJLIDEKI3VuZGVmIF9fVVNFX0lTT0M5NQojZGVmaW5lIF9fVVNFX0lTT0M5NSAxCiN1
bmRlZiBfX1VTRV9JU09DOTkKI2RlZmluZSBfX1VTRV9JU09DOTkgMQoKCgojZGVmaW5lIF9fVVNF
X1hPUEVOMks4IDEKI3VuZGVmIF9BVEZJTEVfU09VUkNFCiNkZWZpbmUgX0FURklMRV9TT1VSQ0Ug
MQoKCgojZGVmaW5lIF9fVVNFX1hPUEVOIDEKCiNkZWZpbmUgX19VU0VfWE9QRU5fRVhURU5ERUQg
MQojZGVmaW5lIF9fVVNFX1VOSVg5OCAxCiN1bmRlZiBfTEFSR0VGSUxFX1NPVVJDRQojZGVmaW5l
IF9MQVJHRUZJTEVfU09VUkNFIDEKCgojZGVmaW5lIF9fVVNFX1hPUEVOMks4IDEKI2RlZmluZSBf
X1VTRV9YT1BFTjJLOFhTSSAxCgojZGVmaW5lIF9fVVNFX1hPUEVOMksgMQojZGVmaW5lIF9fVVNF
X1hPUEVOMktYU0kgMQojdW5kZWYgX19VU0VfSVNPQzk1CiNkZWZpbmUgX19VU0VfSVNPQzk1IDEK
I3VuZGVmIF9fVVNFX0lTT0M5OQojZGVmaW5lIF9fVVNFX0lTT0M5OSAxCiMgMzA0ICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMyA0CiNkZWZpbmUgX19VU0VfTEFSR0VGSUxFIDEKCgoKI2RlZmlu
ZSBfX1VTRV9MQVJHRUZJTEU2NCAxCgoKCgoKCgojZGVmaW5lIF9fVVNFX01JU0MgMQoKCgojZGVm
aW5lIF9fVVNFX0JTRCAxCgoKCiNkZWZpbmUgX19VU0VfU1ZJRCAxCgoKCiNkZWZpbmUgX19VU0Vf
QVRGSUxFIDEKCgoKI2RlZmluZSBfX1VTRV9HTlUgMQojIDM0NyAiL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmgiIDMgNAojZGVmaW5lIF9fVVNFX0ZPUlRJRllfTEVWRUwgMAojIDM2MCAiL3Vzci9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDMgNAojdW5kZWYgX19HTlVfTElCUkFSWV9fCiNkZWZpbmUgX19HTlVf
TElCUkFSWV9fIDYKCgoKI2RlZmluZSBfX0dMSUJDX18gMgojZGVmaW5lIF9fR0xJQkNfTUlOT1Jf
XyAxOQoKI2RlZmluZSBfX0dMSUJDX1BSRVJFUShtYWosbWluKSAoKF9fR0xJQkNfXyA8PCAxNikg
KyBfX0dMSUJDX01JTk9SX18gPj0gKChtYWopIDw8IDE2KSArIChtaW4pKQoKCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvc3lzL2NkZWZzLmgiIDEgMyA0CiMgMTkgIi91
c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBf
U1lTX0NERUZTX0ggMQojIDM0ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMv
Y2RlZnMuaCIgMyA0CiN1bmRlZiBfX1AKI3VuZGVmIF9fUE1UCgoKCgoKCiNkZWZpbmUgX19MRUFG
ICwgX19sZWFmX18KI2RlZmluZSBfX0xFQUZfQVRUUiBfX2F0dHJpYnV0ZV9fICgoX19sZWFmX18p
KQojIDYwICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvY2RlZnMuaCIgMyA0
CiNkZWZpbmUgX19USFJPVyB0aHJvdyAoKQojZGVmaW5lIF9fVEhST1dOTCB0aHJvdyAoKQojZGVm
aW5lIF9fTlRIKGZjdCkgX19MRUFGX0FUVFIgZmN0IHRocm93ICgpCiMgODIgIi91c3IvaW5jbHVk
ZS9hcm0tbGludXgtZ251ZWFiaWhmL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX1AoYXJncykg
YXJncwojZGVmaW5lIF9fUE1UKGFyZ3MpIGFyZ3MKCgoKCiNkZWZpbmUgX19DT05DQVQoeCx5KSB4
ICMjIHkKI2RlZmluZSBfX1NUUklORyh4KSAjeAoKCiNkZWZpbmUgX19wdHJfdCB2b2lkICoKI2Rl
ZmluZSBfX2xvbmdfZG91YmxlX3QgbG9uZyBkb3VibGUKCgoKCiNkZWZpbmUgX19CRUdJTl9ERUNM
UyBleHRlcm4gIkMiIHsKI2RlZmluZSBfX0VORF9ERUNMUyB9CiMgMTIyICIvdXNyL2luY2x1ZGUv
YXJtLWxpbnV4LWdudWVhYmloZi9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19CRUdJTl9OQU1F
U1BBQ0VfU1REIAojZGVmaW5lIF9fRU5EX05BTUVTUEFDRV9TVEQgCiNkZWZpbmUgX19VU0lOR19O
QU1FU1BBQ0VfU1REKG5hbWUpIAojZGVmaW5lIF9fQkVHSU5fTkFNRVNQQUNFX0M5OSAKI2RlZmlu
ZSBfX0VORF9OQU1FU1BBQ0VfQzk5IAojZGVmaW5lIF9fVVNJTkdfTkFNRVNQQUNFX0M5OShuYW1l
KSAKCgoKCiNkZWZpbmUgX19ib3MocHRyKSBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKHB0ciwgX19V
U0VfRk9SVElGWV9MRVZFTCA+IDEpCiNkZWZpbmUgX19ib3MwKHB0cikgX19idWlsdGluX29iamVj
dF9zaXplIChwdHIsIDApCiNkZWZpbmUgX19mb3J0aWZ5X2Z1bmN0aW9uIF9fZXh0ZXJuX2Fsd2F5
c19pbmxpbmUgX19hdHRyaWJ1dGVfYXJ0aWZpY2lhbF9fCgoKI2RlZmluZSBfX3dhcm5kZWNsKG5h
bWUsbXNnKSBleHRlcm4gdm9pZCBuYW1lICh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5pbmdf
XyAobXNnKSkpCgojZGVmaW5lIF9fd2FybmF0dHIobXNnKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5p
bmdfXyAobXNnKSkpCiNkZWZpbmUgX19lcnJvcmRlY2wobmFtZSxtc2cpIGV4dGVybiB2b2lkIG5h
bWUgKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXyAobXNnKSkpCiMgMTUxICIvdXNyL2lu
Y2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19mbGV4
YXJyIFtdCiMgMTc4ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvY2RlZnMu
aCIgMyA0CiNkZWZpbmUgX19SRURJUkVDVChuYW1lLHByb3RvLGFsaWFzKSBuYW1lIHByb3RvIF9f
YXNtX18gKF9fQVNNTkFNRSAoI2FsaWFzKSkKCiNkZWZpbmUgX19SRURJUkVDVF9OVEgobmFtZSxw
cm90byxhbGlhcykgbmFtZSBwcm90byBfX1RIUk9XIF9fYXNtX18gKF9fQVNNTkFNRSAoI2FsaWFz
KSkKCiNkZWZpbmUgX19SRURJUkVDVF9OVEhOTChuYW1lLHByb3RvLGFsaWFzKSBuYW1lIHByb3Rv
IF9fVEhST1dOTCBfX2FzbV9fIChfX0FTTU5BTUUgKCNhbGlhcykpCgoKCgoKCgojZGVmaW5lIF9f
QVNNTkFNRShjbmFtZSkgX19BU01OQU1FMiAoX19VU0VSX0xBQkVMX1BSRUZJWF9fLCBjbmFtZSkK
I2RlZmluZSBfX0FTTU5BTUUyKHByZWZpeCxjbmFtZSkgX19TVFJJTkcgKHByZWZpeCkgY25hbWUK
IyAyMTIgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3N5cy9jZGVmcy5oIiAzIDQK
I2RlZmluZSBfX2F0dHJpYnV0ZV9tYWxsb2NfXyBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykp
CgoKCgoKCgojZGVmaW5lIF9fYXR0cmlidXRlX2FsbG9jX3NpemVfXyhwYXJhbXMpIF9fYXR0cmli
dXRlX18gKChfX2FsbG9jX3NpemVfXyBwYXJhbXMpKQojIDIzMCAiL3Vzci9pbmNsdWRlL2FybS1s
aW51eC1nbnVlYWJpaGYvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fYXR0cmlidXRlX3B1cmVf
XyBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKQoKCgoKCgojZGVmaW5lIF9fYXR0cmlidXRlX2Nv
bnN0X18gX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpCiMgMjQ2ICIvdXNyL2luY2x1ZGUvYXJt
LWxpbnV4LWdudWVhYmloZi9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19hdHRyaWJ1dGVfdXNl
ZF9fIF9fYXR0cmlidXRlX18gKChfX3VzZWRfXykpCiNkZWZpbmUgX19hdHRyaWJ1dGVfbm9pbmxp
bmVfXyBfX2F0dHJpYnV0ZV9fICgoX19ub2lubGluZV9fKSkKCgoKCgoKCiNkZWZpbmUgX19hdHRy
aWJ1dGVfZGVwcmVjYXRlZF9fIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpCiMgMjY3
ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvY2RlZnMuaCIgMyA0CiNkZWZp
bmUgX19hdHRyaWJ1dGVfZm9ybWF0X2FyZ19fKHgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9h
cmdfXyAoeCkpKQojIDI3NyAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvc3lzL2Nk
ZWZzLmgiIDMgNAojZGVmaW5lIF9fYXR0cmlidXRlX2Zvcm1hdF9zdHJmbW9uX18oYSxiKSBfX2F0
dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zdHJmbW9uX18sIGEsIGIpKSkKIyAyODYgIi91c3Iv
aW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX25v
bm51bGwocGFyYW1zKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gcGFyYW1zKSkKCgoKCgoK
CiNkZWZpbmUgX19hdHRyaWJ1dGVfd2Fybl91bnVzZWRfcmVzdWx0X18gX19hdHRyaWJ1dGVfXyAo
KF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKQojIDMwMyAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fd3VyIAoKCgoKI2RlZmluZSBfX2Fs
d2F5c19pbmxpbmUgX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkK
CgoKCgoKCiNkZWZpbmUgX19hdHRyaWJ1dGVfYXJ0aWZpY2lhbF9fIF9fYXR0cmlidXRlX18gKChf
X2FydGlmaWNpYWxfXykpCiMgMzI3ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9z
eXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19leHRlcm5faW5saW5lIGV4dGVybiBfX2lubGluZSBf
X2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKQojZGVmaW5lIF9fZXh0ZXJuX2Fsd2F5c19p
bmxpbmUgZXh0ZXJuIF9fYWx3YXlzX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5l
X18pKQojIDM0MiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvc3lzL2NkZWZzLmgi
IDMgNAojZGVmaW5lIF9fdmFfYXJnX3BhY2soKSBfX2J1aWx0aW5fdmFfYXJnX3BhY2sgKCkKI2Rl
ZmluZSBfX3ZhX2FyZ19wYWNrX2xlbigpIF9fYnVpbHRpbl92YV9hcmdfcGFja19sZW4gKCkKIyAz
NjYgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3N5cy9jZGVmcy5oIiAzIDQKI2Rl
ZmluZSBfX3Jlc3RyaWN0X2FyciAKIyAzNzggIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFi
aWhmL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX2dsaWJjX3VubGlrZWx5KGNvbmQpIF9fYnVp
bHRpbl9leHBlY3QgKChjb25kKSwgMCkKI2RlZmluZSBfX2dsaWJjX2xpa2VseShjb25kKSBfX2J1
aWx0aW5fZXhwZWN0ICgoY29uZCksIDEpCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4
LWdudWVhYmloZi9iaXRzL3dvcmRzaXplLmgiIDEgMyA0CiMgMTggIi91c3IvaW5jbHVkZS9hcm0t
bGludXgtZ251ZWFiaWhmL2JpdHMvd29yZHNpemUuaCIgMyA0CiNkZWZpbmUgX19XT1JEU0laRSAz
MgojIDM4NiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvc3lzL2NkZWZzLmgiIDIg
MyA0CiMgNDA3ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvY2RlZnMuaCIg
MyA0CiNkZWZpbmUgX19MREJMX1JFRElSMShuYW1lLHByb3RvLGFsaWFzKSBuYW1lIHByb3RvCiNk
ZWZpbmUgX19MREJMX1JFRElSKG5hbWUscHJvdG8pIG5hbWUgcHJvdG8KI2RlZmluZSBfX0xEQkxf
UkVESVIxX05USChuYW1lLHByb3RvLGFsaWFzKSBuYW1lIHByb3RvIF9fVEhST1cKI2RlZmluZSBf
X0xEQkxfUkVESVJfTlRIKG5hbWUscHJvdG8pIG5hbWUgcHJvdG8gX19USFJPVwojZGVmaW5lIF9f
TERCTF9SRURJUl9ERUNMKG5hbWUpIAoKI2RlZmluZSBfX1JFRElSRUNUX0xEQkwobmFtZSxwcm90
byxhbGlhcykgX19SRURJUkVDVCAobmFtZSwgcHJvdG8sIGFsaWFzKQojZGVmaW5lIF9fUkVESVJF
Q1RfTlRIX0xEQkwobmFtZSxwcm90byxhbGlhcykgX19SRURJUkVDVF9OVEggKG5hbWUsIHByb3Rv
LCBhbGlhcykKIyAzNzUgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMgNAojIDM5MCAiL3Vz
ci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojZGVmaW5lIF9fVVNFX0VYVEVSTl9JTkxJTkVTIDEK
CgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvZ251L3N0dWJzLmgi
IDEgMyA0CiMgMTAgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2dudS9zdHVicy5o
IiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9nbnUvc3R1YnMtaGFy
ZC5oIiAxIDMgNAojIDEwICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9nbnUvc3R1
YnMtaGFyZC5oIiAzIDQKI2RlZmluZSBfX3N0dWJfY2hmbGFncyAKI2RlZmluZSBfX3N0dWJfY3Jl
YXRlX21vZHVsZSAKI2RlZmluZSBfX3N0dWJfZmF0dGFjaCAKI2RlZmluZSBfX3N0dWJfZmNoZmxh
Z3MgCiNkZWZpbmUgX19zdHViX2ZkZXRhY2ggCiNkZWZpbmUgX19zdHViX2dldF9rZXJuZWxfc3lt
cyAKI2RlZmluZSBfX3N0dWJfZ2V0bXNnIAojZGVmaW5lIF9fc3R1Yl9nZXRwbXNnIAojZGVmaW5l
IF9fc3R1Yl9ndHR5IAojZGVmaW5lIF9fc3R1Yl9sY2htb2QgCiNkZWZpbmUgX19zdHViX3B1dG1z
ZyAKI2RlZmluZSBfX3N0dWJfcHV0cG1zZyAKI2RlZmluZSBfX3N0dWJfcXVlcnlfbW9kdWxlIAoj
ZGVmaW5lIF9fc3R1Yl9yZXZva2UgCiNkZWZpbmUgX19zdHViX3NldGxvZ2luIAojZGVmaW5lIF9f
c3R1Yl9zaWdyZXR1cm4gCiNkZWZpbmUgX19zdHViX3NzdGsgCiNkZWZpbmUgX19zdHViX3N0dHkg
CiMgMTEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2dudS9zdHVicy5oIiAyIDMg
NAojIDM5OSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMyA0CiMgNDM1ICIuLi8uLi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIiAyCiMgNjA5ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oIgojZGVmaW5lIEhBVkVfRVJSTk9fSCAxCiNkZWZpbmUgSEFWRV9MQU5HSU5GT19IIDEK
I2RlZmluZSBIQVZFX01NQVAgMQojZGVmaW5lIEhBVkVfU0lHTkFMX0ggMQojZGVmaW5lIEhBVkVf
U1RSSU5HU19IIDEKI2RlZmluZSBIQVZFX1NZU19QQVJBTV9IIDEKI2RlZmluZSBIQVZFX1NZU19U
SU1FX0ggMQojZGVmaW5lIFVTRV9QVEhSRUFEUyAxCiMgNjI1ICIuLi8uLi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oIgojZGVmaW5lIEhBVkVfVkFTUFJJTlRGIDEKIyA2NDAgIi4uLy4uL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtLmgiCiNkZWZpbmUgSEFWRV9UTV9HTVRPRkYgMQojZGVmaW5lIEhB
VkVfVE1fWk9ORSAxCiNkZWZpbmUgSEFWRV9USU1FR00gMQojIDY4NiAiLi4vLi4vU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaCIKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5l
cy5oIiAxCiMgMzAgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgiCiNkZWZp
bmUgV1RGX0ZlYXR1cmVEZWZpbmVzX2ggCiMgMzM1ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9GZWF0
dXJlRGVmaW5lcy5oIgojZGVmaW5lIEVOQUJMRV9BUE5HIDEKIyAzNjcgIi4uLy4uL1NvdXJjZS9X
VEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgiCiNkZWZpbmUgRU5BQkxFX0NPTlRFTlRfRVhURU5TSU9O
UyAwCiMgNDA3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIgojZGVmaW5l
IEVOQUJMRV9DVVJTT1JfU1VQUE9SVCAxCiMgNTM3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9GZWF0
dXJlRGVmaW5lcy5oIgojZGVmaW5lIEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENI
RVJTIDAKCgoKCgoKCiNkZWZpbmUgRU5BQkxFX0pBVkFTQ1JJUFRfSTE4Tl9BUEkgMAojIDYwNSAi
Li4vLi4vU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCIKI2RlZmluZSBFTkFCTEVfTU9V
U0VfRk9SQ0VfRVZFTlRTIDEKIyA2MjEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZp
bmVzLmgiCiNkZWZpbmUgRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSAwCgoK
CgoKCgojZGVmaW5lIEVOQUJMRV9PUEVOVFlQRV9WRVJUSUNBTCAwCiMgNjYzICIuLi8uLi9Tb3Vy
Y2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIgojZGVmaW5lIEVOQUJMRV9SRVFVRVNUX0FVVE9D
T01QTEVURSAwCiMgNjk5ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIgoj
ZGVmaW5lIEVOQUJMRV9URVhUX0NBUkVUIDEKCgoKI2RlZmluZSBFTkFCTEVfVEVYVF9TRUxFQ1RJ
T04gMQojIDc0MyAiLi4vLi4vU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCIKI2RlZmlu
ZSBFTkFCTEVfR1JBUEhJQ1NfQ09OVEVYVF8zRCBFTkFCTEVfV0VCR0wKCgoKCgoKCiNkZWZpbmUg
RU5BQkxFX1dFQl9BUkNISVZFIDAKIyA3NzEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVE
ZWZpbmVzLmgiCiNkZWZpbmUgRU5BQkxFX1dJTExfUkVWRUFMX0VER0VfRVZFTlRTIDEKIyA2ODcg
Ii4uLy4uL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgiIDIKIyA3MDMgIi4uLy4uL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgiCiNkZWZpbmUgVVNFX0pTVkFMVUUzMl82NCAxCiMgNzE2ICIuLi8u
Li9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIgojdW5kZWYgRU5BQkxFX0ZUTF9KSVQKI2RlZmlu
ZSBFTkFCTEVfRlRMX0pJVCAwCiMgNzQzICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
IgojZGVmaW5lIFVTRV9BUk1WN19ESVNBU1NFTUJMRVIgMQoKCgojZGVmaW5lIEVOQUJMRV9ESVNB
U1NFTUJMRVIgMQojIDgwMyAiLi4vLi4vU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCIKI2RlZmlu
ZSBFTkFCTEVfV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcgMAojIDgxMyAiLi4vLi4vU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaCIKI2RlZmluZSBFTkFCTEVfQUxMT0NBVElPTl9MT0dHSU5HIDAKIyA4
MjIgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgiCiNkZWZpbmUgRU5BQkxFX0RGR19S
RUdJU1RFUl9BTExPQ0FUSU9OX1ZBTElEQVRJT04gMAojIDgzMiAiLi4vLi4vU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaCIKI2RlZmluZSBKU0NfSE9TVF9DQUxMIAoKCgoKI2RlZmluZSBIQVZFX0NP
TVBVVEVEX0dPVE8gMQoKCgoKI2RlZmluZSBFTkFCTEVfQ09NUFVURURfR09UT19PUENPREVTIDEK
CgoKI2RlZmluZSBFTkFCTEVfUkVHRVhQX1RSQUNJTkcgMAoKCgojZGVmaW5lIEVOQUJMRV9ZQVJS
X0pJVCAxCgoKI2RlZmluZSBFTkFCTEVfWUFSUl9KSVRfREVCVUcgMAojIDg2MiAiLi4vLi4vU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaCIKI3VuZGVmIEVOQUJMRV9BU1NFTUJMRVIKI2RlZmluZSBF
TkFCTEVfQVNTRU1CTEVSIDEKIyA4NzIgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgi
CiN1bmRlZiBFTkFCTEVfQVNTRU1CTEVSCiNkZWZpbmUgRU5BQkxFX0FTU0VNQkxFUiAxCiMgODgy
ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIgojZGVmaW5lIEVOQUJMRV9NQVNNX1BS
T0JFIDAKIyA4OTEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgiCiNkZWZpbmUgRU5B
QkxFX0VYRUNVVEFCTEVfQUxMT0NBVE9SX0RFTUFORCAxCiMgOTAwICIuLi8uLi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybS5oIgojZGVmaW5lIEVOQUJMRV9DU1NfU0VMRUNUT1JfSklUIDAKIyA5MzQg
Ii4uLy4uL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgiCiNkZWZpbmUgV1RGX1BMQVRGT1JNX0NG
TkVUV09SSyBFcnJvciBVU0VfbWFjcm9fc2hvdWxkX2JlX3VzZWRfd2l0aF9DRk5FVFdPUksKCgoK
CgoKI2RlZmluZSBFTkFCTEVfQlJBTkNIX0NPTVBBQ1RJT04gMQoKCgoKCgoKI2RlZmluZSBFTkFC
TEVfVEhSRUFESU5HX0dFTkVSSUMgMQojIDk3NyAiLi4vLi4vU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaCIKI2RlZmluZSBVU0VfSU1MQU5HX0ZPTlRfTElOSzIgMQoKCgoKCgoKI2RlZmluZSBFTkFC
TEVfQklORElOR19JTlRFR1JJVFkgMQojIDk5NiAiLi4vLi4vU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaCIKI2RlZmluZSBFTkFCTEVfVFJFRV9ERUJVR0dJTkcgMAojIDEwMzUgIi4uLy4uL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtLmgiCiNkZWZpbmUgVVNFX1pMSUIgMQojIDEwNTAgIi4uLy4uL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgiCiNkZWZpbmUgVVNFX0dSQU1NQVJfQ0hFQ0tJTkcgMQoj
IDExMjggIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgiCiNkZWZpbmUgVEFSR0VUX09T
X0lQSE9ORSAwCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaCIgMgoj
IDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0V4cG9ydE1hY3Jvcy5oIiAxCiMgMzEgIi4uLy4uL1Nv
dXJjZS9XVEYvd3RmL0V4cG9ydE1hY3Jvcy5oIgojZGVmaW5lIEV4cG9ydE1hY3Jvc19oIAojIDQ1
ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9FeHBvcnRNYWNyb3MuaCIKI2RlZmluZSBIQVZFX0lOVEVS
TkFMX1ZJU0lCSUxJVFkgMQojZGVmaW5lIFdURl9JTlRFUk5BTCBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJoaWRkZW4iKSkpCiMgNTkgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0V4cG9ydE1hY3Jv
cy5oIgojZGVmaW5lIFdURl9FWFBPUlRfREVDTEFSQVRJT04gX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSkKI2RlZmluZSBXVEZfSU1QT1JUX0RFQ0xBUkFUSU9OIFdURl9FWFBP
UlRfREVDTEFSQVRJT04KI2RlZmluZSBXVEZfSElEREVOX0RFQ0xBUkFUSU9OIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkKIyA3MiAiLi4vLi4vU291cmNlL1dURi93dGYvRXhw
b3J0TWFjcm9zLmgiCiNkZWZpbmUgV1RGX0lTX0xJTktFRF9JTl9TQU1FX0JJTkFSWSAxCiMgOTkg
Ii4uLy4uL1NvdXJjZS9XVEYvd3RmL0V4cG9ydE1hY3Jvcy5oIgojZGVmaW5lIFdURl9FWFBPUlRE
QVRBIAoKCiNkZWZpbmUgV1RGX0VYUE9SVENMQVNTIFdURl9FWFBPUlREQVRBCgojZGVmaW5lIFdU
Rl9FWFBPUlQgCiNkZWZpbmUgV1RGX0lNUE9SVCAKI2RlZmluZSBXVEZfSElEREVOIAoKCgoKI2Rl
ZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGX0VYUE9SVAoKCgoKI2RlZmluZSBXVEZfRVhQT1JU
X1NUUklOR19BUEkgV1RGX0VYUE9SVF9QUklWQVRFCgojZGVmaW5lIFdURl9FWFBPUlRfSElEREVO
IFdURl9ISURERU4KCiNkZWZpbmUgSElEREVOX0lOTElORSBXVEZfRVhQT1JUX0hJRERFTiBpbmxp
bmUKIyAyOCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oIiAyCgojIDEgIi4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRXhwb3J0TWFjcm9zLmgiIDEKIyAz
MSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNFeHBvcnRNYWNyb3MuaCIK
I2RlZmluZSBKU0V4cG9ydE1hY3Jvc19oIAojIDYyICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0V4cG9ydE1hY3Jvcy5oIgojZGVmaW5lIEpTX0VYUE9SVERBVEEgCiNkZWZp
bmUgSlNfRVhQT1JUQ0xBU1MgCgoKCiNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgCiNkZWZpbmUg
SlNfRVhQT1JUX0hJRERFTiAKIyAzMCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZp
Zy5oIiAyCiMgNTIgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaCIKI3VuZGVm
IG5ldwojdW5kZWYgZGVsZXRlCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5o
IiAxCiMgMjIgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaCIKI2RlZmluZSBXVEZf
RmFzdE1hbGxvY19oIAoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL25ldyIgMSAzCiMgMzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvbmV3IiAzCiNkZWZpbmUgX05FVyAKCiAg
ICAgICAKIyAzOCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9uZXciIDMKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvYml0cy9jKytj
b25maWcuaCIgMSAzCiMgMzEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvYysrY29uZmln
LmgiIDMKI2RlZmluZSBfR0xJQkNYWF9DWFhfQ09ORklHX0ggMQoKCiNkZWZpbmUgX19HTElCQ1hY
X18gMjAxNTA2MjYKIyA0MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvYml0cy9jKytjb25maWcu
aCIgMwojZGVmaW5lIF9HTElCQ1hYX1BVUkUgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkKCgoK
I2RlZmluZSBfR0xJQkNYWF9DT05TVCBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkKCgoKI2Rl
ZmluZSBfR0xJQkNYWF9OT1JFVFVSTiBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSkKIyA2
NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvYml0cy9jKytjb25maWcuaCIgMwojZGVmaW5lIF9H
TElCQ1hYX0hBVkVfQVRUUklCVVRFX1ZJU0lCSUxJVFkgMQoKCiNkZWZpbmUgX0dMSUJDWFhfVklT
SUJJTElUWShWKSBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCNWKSkpCiMgNzggIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvYysrY29uZmlnLmgiIDMKI2RlZmluZSBfR0xJQkNY
WF9VU0VfREVQUkVDQVRFRCAxCgoKCiNkZWZpbmUgX0dMSUJDWFhfREVQUkVDQVRFRCBfX2F0dHJp
YnV0ZV9fICgoX19kZXByZWNhdGVkX18pKQoKCgoKCgojZGVmaW5lIF9HTElCQ1hYX0FCSV9UQUdf
Q1hYMTEgX19hdHRyaWJ1dGUgKChfX2FiaV90YWdfXyAoImN4eDExIikpKQojIDk4ICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9iaXRzL2MrK2NvbmZpZy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfQ09O
U1RFWFBSIGNvbnN0ZXhwcgojZGVmaW5lIF9HTElCQ1hYX1VTRV9DT05TVEVYUFIgY29uc3RleHBy
CiMgMTA5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL2MrK2NvbmZpZy5oIiAzCiNkZWZp
bmUgX0dMSUJDWFhfTk9FWENFUFQgbm9leGNlcHQKI2RlZmluZSBfR0xJQkNYWF9VU0VfTk9FWENF
UFQgbm9leGNlcHQKI2RlZmluZSBfR0xJQkNYWF9USFJPVyhfRVhDKSAKIyAxMjAgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2JpdHMvYysrY29uZmlnLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9OT1RI
Uk9XIF9HTElCQ1hYX1VTRV9OT0VYQ0VQVAoKCgoKCgojZGVmaW5lIF9HTElCQ1hYX1RIUk9XX09S
X0FCT1JUKF9FWEMpIChfX2J1aWx0aW5fYWJvcnQoKSkKIyAxNDEgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2JpdHMvYysrY29uZmlnLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9FWFRFUk5fVEVNUExB
VEUgMQojIDE4NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvYml0cy9jKytjb25maWcuaCIgMwpu
YW1lc3BhY2Ugc3RkCnsKICB0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CiAgdHlwZWRlZiBp
bnQgcHRyZGlmZl90OwoKCiAgdHlwZWRlZiBkZWNsdHlwZShudWxscHRyKSBudWxscHRyX3Q7Cgp9
CgoKCiNkZWZpbmUgX0dMSUJDWFhfSU5MSU5FX1ZFUlNJT04gMAojIDI0MCAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvYml0cy9jKytjb25maWcuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0JFR0lOX05B
TUVTUEFDRV9WRVJTSU9OIAojZGVmaW5lIF9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTiAK
IyAzMjEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvYysrY29uZmlnLmgiIDMKI2RlZmlu
ZSBfR0xJQkNYWF9TVERfQSBzdGQKCgoKI2RlZmluZSBfR0xJQkNYWF9TVERfQyBzdGQKCgoKI2Rl
ZmluZSBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfQUxHTyAKCgoKI2RlZmluZSBfR0xJQkNYWF9F
TkRfTkFNRVNQQUNFX0FMR08gCgoKCiNkZWZpbmUgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX0NP
TlRBSU5FUiAKCgoKI2RlZmluZSBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX0NPTlRBSU5FUiAKCgoK
CiN1bmRlZiBfR0xJQkNYWF9MT05HX0RPVUJMRV9DT01QQVQKIyAzNTggIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2JpdHMvYysrY29uZmlnLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9OQU1FU1BBQ0Vf
TERCTCAKI2RlZmluZSBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfTERCTCAKI2RlZmluZSBfR0xJ
QkNYWF9FTkRfTkFNRVNQQUNFX0xEQkwgCgoKCgojZGVmaW5lIF9fZ2xpYmN4eF9hc3NlcnQoX0Nv
bmRpdGlvbikgCiMgNDExICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL2MrK2NvbmZpZy5o
IiAzCiNkZWZpbmUgX0dMSUJDWFhfU1lOQ0hST05JWkFUSU9OX0hBUFBFTlNfQkVGT1JFKEEpIAoK
CiNkZWZpbmUgX0dMSUJDWFhfU1lOQ0hST05JWkFUSU9OX0hBUFBFTlNfQUZURVIoQSkgCgoKCiNk
ZWZpbmUgX0dMSUJDWFhfQkVHSU5fRVhURVJOX0MgZXh0ZXJuICJDIiB7CiNkZWZpbmUgX0dMSUJD
WFhfRU5EX0VYVEVSTl9DIH0KIyA0MzAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvYysr
Y29uZmlnLmgiIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL29zX2RlZmluZXMu
aCIgMSAzCiMgMzEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvb3NfZGVmaW5lcy5oIiAz
CiNkZWZpbmUgX0dMSUJDWFhfT1NfREVGSU5FUyAxCgoKCgoKI2RlZmluZSBfX05PX0NUWVBFIDEK
CgoKCgoKCiN1bmRlZiBfR0xJQkNYWF9IQVZFX0dFVFMKIyA0MzEgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2JpdHMvYysrY29uZmlnLmgiIDIgMwoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvYml0cy9jcHVfZGVmaW5lcy5oIiAxIDMKIyAzMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
Yml0cy9jcHVfZGVmaW5lcy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfQ1BVX0RFRklORVMgMQojIDQz
NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvYml0cy9jKytjb25maWcuaCIgMiAzCgoKCgojZGVm
aW5lIF9HTElCQ1hYX1BTRVVET19WSVNJQklMSVRZKFYpIAoKCgoKCgojZGVmaW5lIF9HTElCQ1hY
X1dFQUtfREVGSU5JVElPTiAKIyA0NTYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvYysr
Y29uZmlnLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9GQVNUX01BVEggMAoKCgoKCgojZGVmaW5lIF9f
Tihtc2dpZCkgKG1zZ2lkKQoKCiN1bmRlZiBtaW4KI3VuZGVmIG1heAoKCgoKCgojZGVmaW5lIF9H
TElCQ1hYX0hBVkVfQUNPU0YgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9BQ09TTCAxCgoKI2Rl
ZmluZSBfR0xJQkNYWF9IQVZFX0FTSU5GIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfQVNJTkwg
MQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9BU19TWU1WRVJfRElSRUNUSVZFIDEKCgojZGVmaW5l
IF9HTElCQ1hYX0hBVkVfQVRBTjJGIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfQVRBTjJMIDEK
CgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfQVRBTkYgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9B
VEFOTCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0FUX1FVSUNLX0VYSVQgMQoKCgoKCiNkZWZp
bmUgX0dMSUJDWFhfSEFWRV9DRUlMRiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0NFSUxMIDEK
CgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfQ09NUExFWF9IIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hB
VkVfQ09TRiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0NPU0hGIDEKCgojZGVmaW5lIF9HTElC
Q1hYX0hBVkVfQ09TSEwgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9DT1NMIDEKCgojZGVmaW5l
IF9HTElCQ1hYX0hBVkVfRExGQ05fSCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0VCQURNU0cg
MQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9FQ0FOQ0VMRUQgMQoKCiNkZWZpbmUgX0dMSUJDWFhf
SEFWRV9FQ0hJTEQgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9FSURSTSAxCgoKI2RlZmluZSBf
R0xJQkNYWF9IQVZFX0VORElBTl9IIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfRU5PREFUQSAx
CgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0VOT0xJTksgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFW
RV9FTk9TUEMgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9FTk9TUiAxCgoKI2RlZmluZSBfR0xJ
QkNYWF9IQVZFX0VOT1NUUiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0VOT1RSRUNPVkVSQUJM
RSAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0VOT1RTVVAgMQoKCiNkZWZpbmUgX0dMSUJDWFhf
SEFWRV9FT1ZFUkZMT1cgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9FT1dORVJERUFEIDEKCgoj
ZGVmaW5lIF9HTElCQ1hYX0hBVkVfRVBFUk0gMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9FUFJP
VE8gMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9FVElNRSAxCgoKI2RlZmluZSBfR0xJQkNYWF9I
QVZFX0VUSU1FRE9VVCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0VUWFRCU1kgMQoKCiNkZWZp
bmUgX0dMSUJDWFhfSEFWRV9FV09VTERCTE9DSyAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0VY
RUNJTkZPX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9FWFBGIDEKCgojZGVmaW5lIF9HTElC
Q1hYX0hBVkVfRVhQTCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0ZBQlNGIDEKCgojZGVmaW5l
IF9HTElCQ1hYX0hBVkVfRkFCU0wgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9GRU5WX0ggMQoK
CiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9GSU5JVEUgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9G
SU5JVEVGIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfRklOSVRFTCAxCgoKI2RlZmluZSBfR0xJ
QkNYWF9IQVZFX0ZMT0FUX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9GTE9PUkYgMQoKCiNk
ZWZpbmUgX0dMSUJDWFhfSEFWRV9GTE9PUkwgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9GTU9E
RiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0ZNT0RMIDEKIyA2MzkgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2JpdHMvYysrY29uZmlnLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0ZSRVhQ
RiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0ZSRVhQTCAxCgoKI2RlZmluZSBfR0xJQkNYWF9I
QVZFX0dFVElQSU5GTyAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0dFVFMgMQoKCiNkZWZpbmUg
X0dMSUJDWFhfSEFWRV9IWVBPVCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0hZUE9URiAxCgoK
I2RlZmluZSBfR0xJQkNYWF9IQVZFX0hZUE9UTCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0lD
T05WIDEKCgoKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfSU5UNjRfVCAxCgoKCgoKI2RlZmluZSBf
R0xJQkNYWF9IQVZFX0lOVDY0X1RfTE9OR19MT05HIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVf
SU5UVFlQRVNfSCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0lTSU5GIDEKCgojZGVmaW5lIF9H
TElCQ1hYX0hBVkVfSVNJTkZGIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfSVNJTkZMIDEKCgoj
ZGVmaW5lIF9HTElCQ1hYX0hBVkVfSVNOQU4gMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9JU05B
TkYgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9JU05BTkwgMQoKCiNkZWZpbmUgX0dMSUJDWFhf
SEFWRV9JU1dCTEFOSyAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0xDX01FU1NBR0VTIDEKCgoj
ZGVmaW5lIF9HTElCQ1hYX0hBVkVfTERFWFBGIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfTERF
WFBMIDEKIyA3MjYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvYysrY29uZmlnLmgiIDMK
I2RlZmluZSBfR0xJQkNYWF9IQVZFX0xJTlVYX0ZVVEVYIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hB
VkVfTE9DQUxFX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9MT0cxMEYgMQoKCiNkZWZpbmUg
X0dMSUJDWFhfSEFWRV9MT0cxMEwgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9MT0dGIDEKCgoj
ZGVmaW5lIF9HTElCQ1hYX0hBVkVfTE9HTCAxCiMgNzUwICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9iaXRzL2MrK2NvbmZpZy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9NQlNUQVRFX1QgMQoK
CiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9NRU1PUllfSCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZF
X01PREYgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9NT0RGRiAxCgoKI2RlZmluZSBfR0xJQkNY
WF9IQVZFX01PREZMIDEKCgoKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfUE9MTCAxCgoKI2RlZmlu
ZSBfR0xJQkNYWF9IQVZFX1BPV0YgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9QT1dMIDEKCgoK
CgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfUVVJQ0tfRVhJVCAxCgoKCgoKI2RlZmluZSBfR0xJQkNY
WF9IQVZFX1NJTkNPUyAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NJTkNPU0YgMQoKCiNkZWZp
bmUgX0dMSUJDWFhfSEFWRV9TSU5DT1NMIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfU0lORiAx
CgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NJTkhGIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVf
U0lOSEwgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TSU5MIDEKCgoKCgojZGVmaW5lIF9HTElC
Q1hYX0hBVkVfU1FSVEYgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TUVJUTCAxCgoKI2RlZmlu
ZSBfR0xJQkNYWF9IQVZFX1NUREFMSUdOX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TVERC
T09MX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TVERJTlRfSCAxCgoKI2RlZmluZSBfR0xJ
QkNYWF9IQVZFX1NURExJQl9IIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfU1RSRVJST1JfTCAx
CgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NUUkVSUk9SX1IgMQoKCiNkZWZpbmUgX0dMSUJDWFhf
SEFWRV9TVFJJTkdTX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TVFJJTkdfSCAxCgoKI2Rl
ZmluZSBfR0xJQkNYWF9IQVZFX1NUUlRPRiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NUUlRP
TEQgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TVFJYRlJNX0wgMQoKCgojZGVmaW5lIF9HTElC
Q1hYX0hBVkVfU1lNVkVSX1NZTUJPTF9SRU5BTUlOR19SVU5USU1FX1NVUFBPUlQgMQoKCgoKCiNk
ZWZpbmUgX0dMSUJDWFhfSEFWRV9TWVNfSU9DVExfSCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZF
X1NZU19JUENfSCAxCiMgODY4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL2MrK2NvbmZp
Zy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TWVNfUEFSQU1fSCAxCgoKI2RlZmluZSBfR0xJ
QkNYWF9IQVZFX1NZU19SRVNPVVJDRV9IIDEKCgoKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfU1lT
X1NFTV9IIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfU1lTX1NUQVRfSCAxCgoKI2RlZmluZSBf
R0xJQkNYWF9IQVZFX1NZU19TWVNJTkZPX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TWVNf
VElNRV9IIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfU1lTX1RZUEVTX0ggMQoKCiNkZWZpbmUg
X0dMSUJDWFhfSEFWRV9TWVNfVUlPX0ggMQoKCgoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TX0lT
UkVHIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfVEFORiAxCgoKI2RlZmluZSBfR0xJQkNYWF9I
QVZFX1RBTkhGIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfVEFOSEwgMQoKCiNkZWZpbmUgX0dM
SUJDWFhfSEFWRV9UQU5MIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfVEdNQVRIX0ggMQoKCiNk
ZWZpbmUgX0dMSUJDWFhfSEFWRV9UTFMgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9VTklTVERf
SCAxCgoKCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1ZGV1NDQU5GIDEKCgojZGVmaW5lIF9HTElC
Q1hYX0hBVkVfVlNXU0NBTkYgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9WV1NDQU5GIDEKCgoj
ZGVmaW5lIF9HTElCQ1hYX0hBVkVfV0NIQVJfSCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1dD
U1RPRiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1dDVFlQRV9IIDEKCgoKCgojZGVmaW5lIF9H
TElCQ1hYX0hBVkVfV1JJVEVWIDEKIyAxMTM4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRz
L2MrK2NvbmZpZy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfSUNPTlZfQ09OU1QgCgoKCiNkZWZpbmUg
TFRfT0JKRElSICIubGlicy8iCgoKCgoKI2RlZmluZSBfR0xJQkNYWF9QQUNLQUdFX0JVR1JFUE9S
VCAiIgoKCiNkZWZpbmUgX0dMSUJDWFhfUEFDS0FHRV9OQU1FICJwYWNrYWdlLXVudXNlZCIKCgoj
ZGVmaW5lIF9HTElCQ1hYX1BBQ0tBR0VfU1RSSU5HICJwYWNrYWdlLXVudXNlZCB2ZXJzaW9uLXVu
dXNlZCIKCgojZGVmaW5lIF9HTElCQ1hYX1BBQ0tBR0VfVEFSTkFNRSAibGlic3RkYysrIgoKCiNk
ZWZpbmUgX0dMSUJDWFhfUEFDS0FHRV9VUkwgIiIKCgojZGVmaW5lIF9HTElCQ1hYX1BBQ0tBR0Vf
X0dMSUJDWFhfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCiMgMTE4MSAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvYml0cy9jKytjb25maWcuaCIgMwojZGVmaW5lIFNURENfSEVBREVSUyAxCgoKCgoK
I2RlZmluZSBfR0xJQkNYWF9BVE9NSUNfQlVJTFRJTlMgMQoKCgoKCgojZGVmaW5lIF9HTElCQ1hY
X0ZVTExZX0RZTkFNSUNfU1RSSU5HIDAKCgojZGVmaW5lIF9HTElCQ1hYX0hBU19HVEhSRUFEUyAx
CgoKI2RlZmluZSBfR0xJQkNYWF9IT1NURUQgMQoKCgoKI2RlZmluZSBfR0xJQkNYWF9QVFJESUZG
X1RfSVNfSU5UIDEKCgoKCgojZGVmaW5lIF9HTElCQ1hYX1NJWkVfVF9JU19VSU5UIDEKCgoKCgoj
ZGVmaW5lIF9HTElCQ1hYX1NURElPX0VPRiAtMQoKCiNkZWZpbmUgX0dMSUJDWFhfU1RESU9fU0VF
S19DVVIgMQoKCiNkZWZpbmUgX0dMSUJDWFhfU1RESU9fU0VFS19FTkQgMgoKCiNkZWZpbmUgX0dM
SUJDWFhfU1lNVkVSIDEKCgoKCgojZGVmaW5lIF9HTElCQ1hYX1NZTVZFUl9HTlUgMQojIDEyNDIg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvYysrY29uZmlnLmgiIDMKI2RlZmluZSBfR0xJ
QkNYWF9VU0VfQzk5IDEKCgoKCiNkZWZpbmUgX0dMSUJDWFhfVVNFX0M5OV9DT01QTEVYIDEKCgoK
CiNkZWZpbmUgX0dMSUJDWFhfVVNFX0M5OV9DT01QTEVYX1RSMSAxCgoKCiNkZWZpbmUgX0dMSUJD
WFhfVVNFX0M5OV9DVFlQRV9UUjEgMQoKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9DOTlfRkVOVl9U
UjEgMQoKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9DOTlfSU5UVFlQRVNfVFIxIDEKCgoKI2RlZmlu
ZSBfR0xJQkNYWF9VU0VfQzk5X0lOVFRZUEVTX1dDSEFSX1RfVFIxIDEKCgoKI2RlZmluZSBfR0xJ
QkNYWF9VU0VfQzk5X01BVEggMQoKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9DOTlfTUFUSF9UUjEg
MQoKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9DOTlfU1RESU5UX1RSMSAxCgoKCgoKCiNkZWZpbmUg
X0dMSUJDWFhfVVNFX0NMT0NLX01PTk9UT05JQyAxCgoKI2RlZmluZSBfR0xJQkNYWF9VU0VfQ0xP
Q0tfUkVBTFRJTUUgMQojIDEzMDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvYysrY29u
ZmlnLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9VU0VfR0VUVElNRU9GREFZIDEKCgojZGVmaW5lIF9H
TElCQ1hYX1VTRV9HRVRfTlBST0NTIDEKCgoKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9MRlMgMQoK
CiNkZWZpbmUgX0dMSUJDWFhfVVNFX0xPTkdfTE9ORyAxCgoKI2RlZmluZSBfR0xJQkNYWF9VU0Vf
TkFOT1NMRUVQIDEKIyAxMzI1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL2MrK2NvbmZp
Zy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfVVNFX1JBTkRPTV9UUjEgMQoKCiNkZWZpbmUgX0dMSUJD
WFhfVVNFX1NDSEVEX1lJRUxEIDEKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9TQ19OUFJPQ0VTU09S
U19PTkxOIDEKIyAxMzQwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL2MrK2NvbmZpZy5o
IiAzCiNkZWZpbmUgX0dMSUJDWFhfVVNFX1RNUE5BTSAxCgoKI2RlZmluZSBfR0xJQkNYWF9VU0Vf
V0NIQVJfVCAxCgoKI2RlZmluZSBfR0xJQkNYWF9WRVJCT1NFIDEKCgoKCgojZGVmaW5lIF9HVEhS
RUFEX1VTRV9NVVRFWF9USU1FRExPQ0sgMQojIDQwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL25ldyIgMiAzCiMgMSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9leGNlcHRpb24iIDEg
MwojIDMxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2V4Y2VwdGlvbiIgMwojZGVmaW5lIF9fRVhDRVBUSU9OX18gCgogICAgICAgCiMgMzQg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
ZXhjZXB0aW9uIiAzCgojcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHB1c2goZGVmYXVsdCkKCgojIDEg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
Yml0cy9hdG9taWNfbG9ja2ZyZWVfZGVmaW5lcy5oIiAxIDMKIyAzMSAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2F0b21pY19sb2Nr
ZnJlZV9kZWZpbmVzLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9BVE9NSUNfTE9DS19GUkVFX0ggMQoK
ICAgICAgIAojIDM0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2JpdHMvYXRvbWljX2xvY2tmcmVlX2RlZmluZXMuaCIgMwojIDQ5ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMv
YXRvbWljX2xvY2tmcmVlX2RlZmluZXMuaCIgMwojZGVmaW5lIEFUT01JQ19CT09MX0xPQ0tfRlJF
RSBfX0dDQ19BVE9NSUNfQk9PTF9MT0NLX0ZSRUUKI2RlZmluZSBBVE9NSUNfQ0hBUl9MT0NLX0ZS
RUUgX19HQ0NfQVRPTUlDX0NIQVJfTE9DS19GUkVFCiNkZWZpbmUgQVRPTUlDX1dDSEFSX1RfTE9D
S19GUkVFIF9fR0NDX0FUT01JQ19XQ0hBUl9UX0xPQ0tfRlJFRQojZGVmaW5lIEFUT01JQ19DSEFS
MTZfVF9MT0NLX0ZSRUUgX19HQ0NfQVRPTUlDX0NIQVIxNl9UX0xPQ0tfRlJFRQojZGVmaW5lIEFU
T01JQ19DSEFSMzJfVF9MT0NLX0ZSRUUgX19HQ0NfQVRPTUlDX0NIQVIzMl9UX0xPQ0tfRlJFRQoj
ZGVmaW5lIEFUT01JQ19TSE9SVF9MT0NLX0ZSRUUgX19HQ0NfQVRPTUlDX1NIT1JUX0xPQ0tfRlJF
RQojZGVmaW5lIEFUT01JQ19JTlRfTE9DS19GUkVFIF9fR0NDX0FUT01JQ19JTlRfTE9DS19GUkVF
CiNkZWZpbmUgQVRPTUlDX0xPTkdfTE9DS19GUkVFIF9fR0NDX0FUT01JQ19MT05HX0xPQ0tfRlJF
RQojZGVmaW5lIEFUT01JQ19MTE9OR19MT0NLX0ZSRUUgX19HQ0NfQVRPTUlDX0xMT05HX0xPQ0tf
RlJFRQojZGVmaW5lIEFUT01JQ19QT0lOVEVSX0xPQ0tfRlJFRSBfX0dDQ19BVE9NSUNfUE9JTlRF
Ul9MT0NLX0ZSRUUKIyAzOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9leGNlcHRpb24iIDIgMwoKZXh0ZXJuICJDKysiIHsKCm5hbWVzcGFj
ZSBzdGQKewojIDYwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2V4Y2VwdGlvbiIgMwogIGNsYXNzIGV4Y2VwdGlvbgogIHsKICBwdWJsaWM6
CiAgICBleGNlcHRpb24oKSBub2V4Y2VwdCB7IH0KICAgIHZpcnR1YWwgfmV4Y2VwdGlvbigpIG5v
ZXhjZXB0OwoKCgogICAgdmlydHVhbCBjb25zdCBjaGFyKiB3aGF0KCkgY29uc3Qgbm9leGNlcHQ7
CiAgfTsKCgoKICBjbGFzcyBiYWRfZXhjZXB0aW9uIDogcHVibGljIGV4Y2VwdGlvbgogIHsKICBw
dWJsaWM6CiAgICBiYWRfZXhjZXB0aW9uKCkgbm9leGNlcHQgeyB9CgoKCiAgICB2aXJ0dWFsIH5i
YWRfZXhjZXB0aW9uKCkgbm9leGNlcHQ7CgoKICAgIHZpcnR1YWwgY29uc3QgY2hhciogd2hhdCgp
IGNvbnN0IG5vZXhjZXB0OwogIH07CgoKICB0eXBlZGVmIHZvaWQgKCp0ZXJtaW5hdGVfaGFuZGxl
cikgKCk7CgoKICB0eXBlZGVmIHZvaWQgKCp1bmV4cGVjdGVkX2hhbmRsZXIpICgpOwoKCiAgdGVy
bWluYXRlX2hhbmRsZXIgc2V0X3Rlcm1pbmF0ZSh0ZXJtaW5hdGVfaGFuZGxlcikgbm9leGNlcHQ7
CgoKCiAgdGVybWluYXRlX2hhbmRsZXIgZ2V0X3Rlcm1pbmF0ZSgpIG5vZXhjZXB0OwoKCgoKICB2
b2lkIHRlcm1pbmF0ZSgpIG5vZXhjZXB0IF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsK
CgogIHVuZXhwZWN0ZWRfaGFuZGxlciBzZXRfdW5leHBlY3RlZCh1bmV4cGVjdGVkX2hhbmRsZXIp
IG5vZXhjZXB0OwoKCgogIHVuZXhwZWN0ZWRfaGFuZGxlciBnZXRfdW5leHBlY3RlZCgpIG5vZXhj
ZXB0OwoKCgoKICB2b2lkIHVuZXhwZWN0ZWQoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f
KSk7CiMgMTI3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2V4Y2VwdGlvbiIgMwogIGJvb2wgdW5jYXVnaHRfZXhjZXB0aW9uKCkgbm9leGNl
cHQgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKfQoKbmFtZXNwYWNlIF9fZ251X2N4eAp7
CgojIDE1MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9leGNlcHRpb24iIDMKICB2b2lkIF9fdmVyYm9zZV90ZXJtaW5hdGVfaGFuZGxlcigp
OwoKCn0KCn0KCiNwcmFnbWEgR0NDIHZpc2liaWxpdHkgcG9wCgoKIyAxICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvZXhjZXB0aW9u
X3B0ci5oIiAxIDMKIyAzMiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL2V4Y2VwdGlvbl9wdHIuaCIgMwojZGVmaW5lIF9FWENFUFRJ
T05fUFRSX0ggCgojcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHB1c2goZGVmYXVsdCkKCgojIDEgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9leGNlcHRpb25fZGVmaW5lcy5oIiAxIDMKIyAzMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2V4Y2VwdGlvbl9kZWZpbmVzLmgi
IDMKI2RlZmluZSBfRVhDRVBUSU9OX0RFRklORVNfSCAxCgoKCiNkZWZpbmUgX190cnkgaWYgKHRy
dWUpCiNkZWZpbmUgX19jYXRjaChYKSBpZiAoZmFsc2UpCiNkZWZpbmUgX190aHJvd19leGNlcHRp
b25fYWdhaW4gCiMgMzggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9leGNlcHRpb25fcHRyLmgiIDIgMwoKCgoKCmV4dGVybiAiQysr
IiB7CgpuYW1lc3BhY2Ugc3RkCnsKICBjbGFzcyB0eXBlX2luZm87CgoKCgoKICBuYW1lc3BhY2Ug
X19leGNlcHRpb25fcHRyCiAgewogICAgY2xhc3MgZXhjZXB0aW9uX3B0cjsKICB9CgogIHVzaW5n
IF9fZXhjZXB0aW9uX3B0cjo6ZXhjZXB0aW9uX3B0cjsKCgoKCgogIGV4Y2VwdGlvbl9wdHIgY3Vy
cmVudF9leGNlcHRpb24oKSBub2V4Y2VwdDsKCgogIHZvaWQgcmV0aHJvd19leGNlcHRpb24oZXhj
ZXB0aW9uX3B0cikgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKICBuYW1lc3BhY2Ug
X19leGNlcHRpb25fcHRyCiAgewoKCgoKICAgIGNsYXNzIGV4Y2VwdGlvbl9wdHIKICAgIHsKICAg
ICAgdm9pZCogX01fZXhjZXB0aW9uX29iamVjdDsKCiAgICAgIGV4cGxpY2l0IGV4Y2VwdGlvbl9w
dHIodm9pZCogX19lKSBub2V4Y2VwdDsKCiAgICAgIHZvaWQgX01fYWRkcmVmKCkgbm9leGNlcHQ7
CiAgICAgIHZvaWQgX01fcmVsZWFzZSgpIG5vZXhjZXB0OwoKICAgICAgdm9pZCAqX01fZ2V0KCkg
Y29uc3Qgbm9leGNlcHQgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgogICAgICBmcmllbmQg
ZXhjZXB0aW9uX3B0ciBzdGQ6OmN1cnJlbnRfZXhjZXB0aW9uKCkgbm9leGNlcHQ7CiAgICAgIGZy
aWVuZCB2b2lkIHN0ZDo6cmV0aHJvd19leGNlcHRpb24oZXhjZXB0aW9uX3B0cik7CgogICAgcHVi
bGljOgogICAgICBleGNlcHRpb25fcHRyKCkgbm9leGNlcHQ7CgogICAgICBleGNlcHRpb25fcHRy
KGNvbnN0IGV4Y2VwdGlvbl9wdHImKSBub2V4Y2VwdDsKCgogICAgICBleGNlcHRpb25fcHRyKG51
bGxwdHJfdCkgbm9leGNlcHQKICAgICAgOiBfTV9leGNlcHRpb25fb2JqZWN0KDApCiAgICAgIHsg
fQoKICAgICAgZXhjZXB0aW9uX3B0cihleGNlcHRpb25fcHRyJiYgX19vKSBub2V4Y2VwdAogICAg
ICA6IF9NX2V4Y2VwdGlvbl9vYmplY3QoX19vLl9NX2V4Y2VwdGlvbl9vYmplY3QpCiAgICAgIHsg
X19vLl9NX2V4Y2VwdGlvbl9vYmplY3QgPSAwOyB9CiMgMTExICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvZXhjZXB0aW9uX3B0ci5o
IiAzCiAgICAgIGV4Y2VwdGlvbl9wdHImCiAgICAgIG9wZXJhdG9yPShjb25zdCBleGNlcHRpb25f
cHRyJikgbm9leGNlcHQ7CgoKICAgICAgZXhjZXB0aW9uX3B0ciYKICAgICAgb3BlcmF0b3I9KGV4
Y2VwdGlvbl9wdHImJiBfX28pIG5vZXhjZXB0CiAgICAgIHsKICAgICAgICBleGNlcHRpb25fcHRy
KHN0YXRpY19jYXN0PGV4Y2VwdGlvbl9wdHImJj4oX19vKSkuc3dhcCgqdGhpcyk7CiAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgICB9CgoKICAgICAgfmV4Y2VwdGlvbl9wdHIoKSBub2V4Y2VwdDsK
CiAgICAgIHZvaWQKICAgICAgc3dhcChleGNlcHRpb25fcHRyJikgbm9leGNlcHQ7CiMgMTM4ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Jp
dHMvZXhjZXB0aW9uX3B0ci5oIiAzCiAgICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25z
dAogICAgICB7IHJldHVybiBfTV9leGNlcHRpb25fb2JqZWN0OyB9CgoKICAgICAgZnJpZW5kIGJv
b2wKICAgICAgb3BlcmF0b3I9PShjb25zdCBleGNlcHRpb25fcHRyJiwgY29uc3QgZXhjZXB0aW9u
X3B0ciYpCiBub2V4Y2VwdCBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCiAgICAgIGNvbnN0
IGNsYXNzIHN0ZDo6dHlwZV9pbmZvKgogICAgICBfX2N4YV9leGNlcHRpb25fdHlwZSgpIGNvbnN0
IG5vZXhjZXB0CiBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKICAgIH07CgogICAgYm9vbAog
ICAgb3BlcmF0b3I9PShjb25zdCBleGNlcHRpb25fcHRyJiwgY29uc3QgZXhjZXB0aW9uX3B0ciYp
CiAgICAgIG5vZXhjZXB0IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKICAgIGJvb2wKICAg
IG9wZXJhdG9yIT0oY29uc3QgZXhjZXB0aW9uX3B0ciYsIGNvbnN0IGV4Y2VwdGlvbl9wdHImKQog
ICAgICBub2V4Y2VwdCBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCiAgICBpbmxpbmUgdm9p
ZAogICAgc3dhcChleGNlcHRpb25fcHRyJiBfX2xocywgZXhjZXB0aW9uX3B0ciYgX19yaHMpCiAg
ICB7IF9fbGhzLnN3YXAoX19yaHMpOyB9CgogIH0KCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRXg+
CiAgICBleGNlcHRpb25fcHRyCiAgICBtYWtlX2V4Y2VwdGlvbl9wdHIoX0V4IF9fZXgpIG5vZXhj
ZXB0CiAgICB7CiAgICAgIGlmICh0cnVlKQogewoKCgogfQogICAgICBpZiAoZmFsc2UpCiB7CiAg
IHJldHVybiBjdXJyZW50X2V4Y2VwdGlvbigpOwogfQogICAgfQoKCgoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0V4PgogICAgZXhjZXB0aW9uX3B0cgogICAgY29weV9leGNlcHRpb24oX0V4IF9fZXgp
IG5vZXhjZXB0IF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfRXg+CiAgICBleGNlcHRpb25fcHRyCiAgICBjb3B5X2V4Y2VwdGlvbihfRXggX19l
eCkgbm9leGNlcHQKICAgIHsgcmV0dXJuIHN0ZDo6bWFrZV9leGNlcHRpb25fcHRyPF9FeD4oX19l
eCk7IH0KCgp9Cgp9CgojcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHBvcAojIDE2MyAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9leGNlcHRpb24i
IDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvYml0cy9uZXN0ZWRfZXhjZXB0aW9uLmgiIDEgMwojIDMxICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbmVzdGVkX2V4
Y2VwdGlvbi5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfTkVTVEVEX0VYQ0VQVElPTl9IIDEKCiNwcmFn
bWEgR0NDIHZpc2liaWxpdHkgcHVzaChkZWZhdWx0KQojIDQ1ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbmVzdGVkX2V4Y2VwdGlv
bi5oIiAzCmV4dGVybiAiQysrIiB7CgpuYW1lc3BhY2Ugc3RkCnsKCgoKCgoKICBjbGFzcyBuZXN0
ZWRfZXhjZXB0aW9uCiAgewogICAgZXhjZXB0aW9uX3B0ciBfTV9wdHI7CgogIHB1YmxpYzoKICAg
IG5lc3RlZF9leGNlcHRpb24oKSBub2V4Y2VwdCA6IF9NX3B0cihjdXJyZW50X2V4Y2VwdGlvbigp
KSB7IH0KCiAgICBuZXN0ZWRfZXhjZXB0aW9uKGNvbnN0IG5lc3RlZF9leGNlcHRpb24mKSA9IGRl
ZmF1bHQ7CgogICAgbmVzdGVkX2V4Y2VwdGlvbiYgb3BlcmF0b3I9KGNvbnN0IG5lc3RlZF9leGNl
cHRpb24mKSA9IGRlZmF1bHQ7CgogICAgdmlydHVhbCB+bmVzdGVkX2V4Y2VwdGlvbigpIG5vZXhj
ZXB0OwoKICAgIHZvaWQKICAgIHJldGhyb3dfbmVzdGVkKCkgY29uc3QgX19hdHRyaWJ1dGVfXyAo
KF9fbm9yZXR1cm5fXykpCiAgICB7IHJldGhyb3dfZXhjZXB0aW9uKF9NX3B0cik7IH0KCiAgICBl
eGNlcHRpb25fcHRyCiAgICBuZXN0ZWRfcHRyKCkgY29uc3QKICAgIHsgcmV0dXJuIF9NX3B0cjsg
fQogIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9FeGNlcHQ+CiAgICBzdHJ1Y3QgX05lc3RlZF9l
eGNlcHRpb24gOiBwdWJsaWMgX0V4Y2VwdCwgcHVibGljIG5lc3RlZF9leGNlcHRpb24KICAgIHsK
ICAgICAgZXhwbGljaXQgX05lc3RlZF9leGNlcHRpb24oX0V4Y2VwdCYmIF9fZXgpCiAgICAgIDog
X0V4Y2VwdChzdGF0aWNfY2FzdDxfRXhjZXB0JiY+KF9fZXgpKQogICAgICB7IH0KICAgIH07Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9FeD4KICAgIHN0cnVjdCBfX2dldF9uZXN0ZWRfaGVscGVyCiAg
ICB7CiAgICAgIHN0YXRpYyBjb25zdCBuZXN0ZWRfZXhjZXB0aW9uKgogICAgICBfU19nZXQoY29u
c3QgX0V4JiBfX2V4KQogICAgICB7IHJldHVybiBkeW5hbWljX2Nhc3Q8Y29uc3QgbmVzdGVkX2V4
Y2VwdGlvbio+KCZfX2V4KTsgfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0V4PgogICAg
c3RydWN0IF9fZ2V0X25lc3RlZF9oZWxwZXI8X0V4Kj4KICAgIHsKICAgICAgc3RhdGljIGNvbnN0
IG5lc3RlZF9leGNlcHRpb24qCiAgICAgIF9TX2dldChjb25zdCBfRXgqIF9fZXgpCiAgICAgIHsg
cmV0dXJuIGR5bmFtaWNfY2FzdDxjb25zdCBuZXN0ZWRfZXhjZXB0aW9uKj4oX19leCk7IH0KICAg
IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9FeD4KICAgIGlubGluZSBjb25zdCBuZXN0ZWRfZXhj
ZXB0aW9uKgogICAgX19nZXRfbmVzdGVkX2V4Y2VwdGlvbihjb25zdCBfRXgmIF9fZXgpCiAgICB7
IHJldHVybiBfX2dldF9uZXN0ZWRfaGVscGVyPF9FeD46Ol9TX2dldChfX2V4KTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfRXg+CiAgICB2b2lkCiAgICBfX3Rocm93X3dpdGhfbmVzdGVkKF9FeCYm
LCBjb25zdCBuZXN0ZWRfZXhjZXB0aW9uKiA9IDApCiAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Jl
dHVybl9fKSk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9FeD4KICAgIHZvaWQKICAgIF9fdGhyb3df
d2l0aF9uZXN0ZWQoX0V4JiYsIC4uLikgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoK
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRXg+CiAgICBpbmxpbmUgdm9pZAogICAgX190aHJvd193
aXRoX25lc3RlZChfRXgmJiBfX2V4LCBjb25zdCBuZXN0ZWRfZXhjZXB0aW9uKikKICAgIHsgdGhy
b3cgX19leDsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRXg+CiAgICBpbmxpbmUgdm9pZAogICAg
X190aHJvd193aXRoX25lc3RlZChfRXgmJiBfX2V4LCAuLi4pCiAgICB7IHRocm93IF9OZXN0ZWRf
ZXhjZXB0aW9uPF9FeD4oc3RhdGljX2Nhc3Q8X0V4JiY+KF9fZXgpKTsgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfRXg+CiAgICB2b2lkCiAgICB0aHJvd193aXRoX25lc3RlZChfRXggX19leCkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9FeD4K
ICAgIGlubGluZSB2b2lkCiAgICB0aHJvd193aXRoX25lc3RlZChfRXggX19leCkKICAgIHsKICAg
ICAgaWYgKF9fZ2V0X25lc3RlZF9leGNlcHRpb24oX19leCkpCiAgICAgICAgdGhyb3cgX19leDsK
ICAgICAgX190aHJvd193aXRoX25lc3RlZChzdGF0aWNfY2FzdDxfRXgmJj4oX19leCksICZfX2V4
KTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9FeD4KICAgIGlubGluZSB2b2lkCiAgICBy
ZXRocm93X2lmX25lc3RlZChjb25zdCBfRXgmIF9fZXgpCiAgICB7CiAgICAgIGlmIChjb25zdCBu
ZXN0ZWRfZXhjZXB0aW9uKiBfX25lc3RlZCA9IF9fZ2V0X25lc3RlZF9leGNlcHRpb24oX19leCkp
CiAgICAgICAgX19uZXN0ZWQtPnJldGhyb3dfbmVzdGVkKCk7CiAgICB9CgoKICBpbmxpbmUgdm9p
ZAogIHJldGhyb3dfaWZfbmVzdGVkKGNvbnN0IG5lc3RlZF9leGNlcHRpb24mIF9fZXgpCiAgeyBf
X2V4LnJldGhyb3dfbmVzdGVkKCk7IH0KCgp9Cgp9CgoKCiNwcmFnbWEgR0NDIHZpc2liaWxpdHkg
cG9wCiMgMTY0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2V4Y2VwdGlvbiIgMiAzCiMgNDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvbmV3IiAyIDMKCiNwcmFnbWEgR0NDIHZpc2li
aWxpdHkgcHVzaChkZWZhdWx0KQoKZXh0ZXJuICJDKysiIHsKCm5hbWVzcGFjZSBzdGQKewoKCgoK
CgogIGNsYXNzIGJhZF9hbGxvYyA6IHB1YmxpYyBleGNlcHRpb24KICB7CiAgcHVibGljOgogICAg
YmFkX2FsbG9jKCkgdGhyb3coKSB7IH0KCgoKICAgIHZpcnR1YWwgfmJhZF9hbGxvYygpIHRocm93
KCk7CgoKICAgIHZpcnR1YWwgY29uc3QgY2hhciogd2hhdCgpIGNvbnN0IHRocm93KCk7CiAgfTsK
CgogIGNsYXNzIGJhZF9hcnJheV9uZXdfbGVuZ3RoIDogcHVibGljIGJhZF9hbGxvYwogIHsKICBw
dWJsaWM6CiAgICBiYWRfYXJyYXlfbmV3X2xlbmd0aCgpIHRocm93KCkgeyB9OwoKCgogICAgdmly
dHVhbCB+YmFkX2FycmF5X25ld19sZW5ndGgoKSB0aHJvdygpOwoKCiAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHdoYXQoKSBjb25zdCB0aHJvdygpOwogIH07CiMgOTkgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvbmV3IiAzCiAgc3RydWN0IG5v
dGhyb3dfdCB7IH07CgogIGV4dGVybiBjb25zdCBub3Rocm93X3Qgbm90aHJvdzsKCgoKICB0eXBl
ZGVmIHZvaWQgKCpuZXdfaGFuZGxlcikoKTsKCgoKICBuZXdfaGFuZGxlciBzZXRfbmV3X2hhbmRs
ZXIobmV3X2hhbmRsZXIpIHRocm93KCk7CgoKCiAgbmV3X2hhbmRsZXIgZ2V0X25ld19oYW5kbGVy
KCkgbm9leGNlcHQ7Cgp9CiMgMTI4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL25ldyIgMwp2b2lkKiBvcGVyYXRvciBuZXcoc3RkOjpzaXpl
X3QpCiAgX19hdHRyaWJ1dGVfXygoX19leHRlcm5hbGx5X3Zpc2libGVfXykpOwp2b2lkKiBvcGVy
YXRvciBuZXdbXShzdGQ6OnNpemVfdCkKICBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlz
aWJsZV9fKSk7CnZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqKSBub2V4Y2VwdAogIF9fYXR0cmli
dXRlX18oKF9fZXh0ZXJuYWxseV92aXNpYmxlX18pKTsKdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2
b2lkKikgbm9leGNlcHQKICBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSk7
CnZvaWQqIG9wZXJhdG9yIG5ldyhzdGQ6OnNpemVfdCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSBu
b2V4Y2VwdAogIF9fYXR0cmlidXRlX18oKF9fZXh0ZXJuYWxseV92aXNpYmxlX18pKTsKdm9pZCog
b3BlcmF0b3IgbmV3W10oc3RkOjpzaXplX3QsIGNvbnN0IHN0ZDo6bm90aHJvd190Jikgbm9leGNl
cHQKICBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSk7CnZvaWQgb3BlcmF0
b3IgZGVsZXRlKHZvaWQqLCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpIG5vZXhjZXB0CiAgX19hdHRy
aWJ1dGVfXygoX19leHRlcm5hbGx5X3Zpc2libGVfXykpOwp2b2lkIG9wZXJhdG9yIGRlbGV0ZVtd
KHZvaWQqLCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpIG5vZXhjZXB0CiAgX19hdHRyaWJ1dGVfXygo
X19leHRlcm5hbGx5X3Zpc2libGVfXykpOwoKCmlubGluZSB2b2lkKiBvcGVyYXRvciBuZXcoc3Rk
OjpzaXplX3QsIHZvaWQqIF9fcCkgbm9leGNlcHQKeyByZXR1cm4gX19wOyB9CmlubGluZSB2b2lk
KiBvcGVyYXRvciBuZXdbXShzdGQ6OnNpemVfdCwgdm9pZCogX19wKSBub2V4Y2VwdAp7IHJldHVy
biBfX3A7IH0KCgppbmxpbmUgdm9pZCBvcGVyYXRvciBkZWxldGUgKHZvaWQqLCB2b2lkKikgbm9l
eGNlcHQgeyB9CmlubGluZSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqLCB2b2lkKikgbm9l
eGNlcHQgeyB9Cgp9CgojcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHBvcAojIDI1ICIuLi8uLi9Tb3Vy
Y2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEg
MyA0CiMgMjcgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CiNkZWZpbmUgX19uZWVkX3NpemVf
dCAKCiNkZWZpbmUgX19uZWVkX3djaGFyX3QgCiNkZWZpbmUgX19uZWVkX05VTEwgCgojIDEgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAxIDMgNAojIDE4NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojZGVmaW5lIF9fc2l6ZV90
X18gCiNkZWZpbmUgX19TSVpFX1RfXyAKI2RlZmluZSBfU0laRV9UIAojZGVmaW5lIF9TWVNfU0la
RV9UX0ggCiNkZWZpbmUgX1RfU0laRV8gCiNkZWZpbmUgX1RfU0laRSAKI2RlZmluZSBfX1NJWkVf
VCAKI2RlZmluZSBfU0laRV9UXyAKI2RlZmluZSBfQlNEX1NJWkVfVF8gCiNkZWZpbmUgX1NJWkVf
VF9ERUZJTkVEXyAKI2RlZmluZSBfU0laRV9UX0RFRklORUQgCiNkZWZpbmUgX0JTRF9TSVpFX1Rf
REVGSU5FRF8gCiNkZWZpbmUgX1NJWkVfVF9ERUNMQVJFRCAKI2RlZmluZSBfX19pbnRfc2l6ZV90
X2ggCiNkZWZpbmUgX0dDQ19TSVpFX1QgCiNkZWZpbmUgX1NJWkVUXyAKCgoKCgoKI2RlZmluZSBf
X3NpemVfdCAKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CiMgMjM0ICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRk
ZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfc2l6ZV90CiMgMjYzICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2dj
Yy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiNk
ZWZpbmUgX193Y2hhcl90X18gCiNkZWZpbmUgX19XQ0hBUl9UX18gCiNkZWZpbmUgX1dDSEFSX1Qg
CiNkZWZpbmUgX1RfV0NIQVJfIAojZGVmaW5lIF9UX1dDSEFSIAojZGVmaW5lIF9fV0NIQVJfVCAK
I2RlZmluZSBfV0NIQVJfVF8gCiNkZWZpbmUgX0JTRF9XQ0hBUl9UXyAKI2RlZmluZSBfV0NIQVJf
VF9ERUZJTkVEXyAKI2RlZmluZSBfV0NIQVJfVF9ERUZJTkVEIAojZGVmaW5lIF9XQ0hBUl9UX0gg
CiNkZWZpbmUgX19faW50X3djaGFyX3RfaCAKI2RlZmluZSBfX0lOVF9XQ0hBUl9UX0ggCiNkZWZp
bmUgX0dDQ19XQ0hBUl9UIAojZGVmaW5lIF9XQ0hBUl9UX0RFQ0xBUkVEIAojIDI5MCAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMgNAojdW5kZWYgX0JTRF9XQ0hBUl9UXwojIDM0MyAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2xpYi9n
Y2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAoj
dW5kZWYgX19uZWVkX3djaGFyX3QKIyAzOTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIE5VTEwK
CiNkZWZpbmUgTlVMTCBfX251bGwKIyA0MDggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVl
ZF9OVUxMCiMgMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKCmV4dGVybiAiQyIgewoK
CiNkZWZpbmUgX1NURExJQl9IIDEKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVh
YmloZi9iaXRzL3dhaXRmbGFncy5oIiAxIDMgNAojIDI1ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4
LWdudWVhYmloZi9iaXRzL3dhaXRmbGFncy5oIiAzIDQKI2RlZmluZSBXTk9IQU5HIDEKI2RlZmlu
ZSBXVU5UUkFDRUQgMgoKCiNkZWZpbmUgV1NUT1BQRUQgMgojZGVmaW5lIFdFWElURUQgNAojZGVm
aW5lIFdDT05USU5VRUQgOAojZGVmaW5lIFdOT1dBSVQgMHgwMTAwMDAwMAoKI2RlZmluZSBfX1dO
T1RIUkVBRCAweDIwMDAwMDAwCgojZGVmaW5lIF9fV0FMTCAweDQwMDAwMDAwCiNkZWZpbmUgX19X
Q0xPTkUgMHg4MDAwMDAwMAoKCgoKI2RlZmluZSBfX0VOVU1fSURUWVBFX1QgMQoKCgojdW5kZWYg
UF9BTEwKI3VuZGVmIFBfUElECiN1bmRlZiBQX1BHSUQKCnR5cGVkZWYgZW51bQp7CiAgUF9BTEws
CiAgUF9QSUQsCiAgUF9QR0lECn0gaWR0eXBlX3Q7CiMgNDIgIi91c3IvaW5jbHVkZS9zdGRsaWIu
aCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3dhaXRz
dGF0dXMuaCIgMSAzIDQKIyAyOCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0
cy93YWl0c3RhdHVzLmgiIDMgNAojZGVmaW5lIF9fV0VYSVRTVEFUVVMoc3RhdHVzKSAoKChzdGF0
dXMpICYgMHhmZjAwKSA+PiA4KQoKCiNkZWZpbmUgX19XVEVSTVNJRyhzdGF0dXMpICgoc3RhdHVz
KSAmIDB4N2YpCgoKI2RlZmluZSBfX1dTVE9QU0lHKHN0YXR1cykgX19XRVhJVFNUQVRVUyhzdGF0
dXMpCgoKI2RlZmluZSBfX1dJRkVYSVRFRChzdGF0dXMpIChfX1dURVJNU0lHKHN0YXR1cykgPT0g
MCkKCgojZGVmaW5lIF9fV0lGU0lHTkFMRUQoc3RhdHVzKSAoKChzaWduZWQgY2hhcikgKCgoc3Rh
dHVzKSAmIDB4N2YpICsgMSkgPj4gMSkgPiAwKQoKCgojZGVmaW5lIF9fV0lGU1RPUFBFRChzdGF0
dXMpICgoKHN0YXR1cykgJiAweGZmKSA9PSAweDdmKQoKCgoKI2RlZmluZSBfX1dJRkNPTlRJTlVF
RChzdGF0dXMpICgoc3RhdHVzKSA9PSBfX1dfQ09OVElOVUVEKQoKCgojZGVmaW5lIF9fV0NPUkVE
VU1QKHN0YXR1cykgKChzdGF0dXMpICYgX19XQ09SRUZMQUcpCgoKI2RlZmluZSBfX1dfRVhJVENP
REUocmV0LHNpZykgKChyZXQpIDw8IDggfCAoc2lnKSkKI2RlZmluZSBfX1dfU1RPUENPREUoc2ln
KSAoKHNpZykgPDwgOCB8IDB4N2YpCiNkZWZpbmUgX19XX0NPTlRJTlVFRCAweGZmZmYKI2RlZmlu
ZSBfX1dDT1JFRkxBRyAweDgwCgoKCgojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzIDQK
IyAxOSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAzIDQKI2RlZmluZSBfRU5ESUFOX0ggMQojIDMx
ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDMgNAojZGVmaW5lIF9fTElUVExFX0VORElBTiAxMjM0
CiNkZWZpbmUgX19CSUdfRU5ESUFOIDQzMjEKI2RlZmluZSBfX1BEUF9FTkRJQU4gMzQxMgoKCiMg
MSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9lbmRpYW4uaCIgMSAzIDQK
IyA5ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL2VuZGlhbi5oIiAzIDQK
I2RlZmluZSBfX0JZVEVfT1JERVIgX19MSVRUTEVfRU5ESUFOCiMgMzcgIi91c3IvaW5jbHVkZS9l
bmRpYW4uaCIgMiAzIDQKCgoKCiNkZWZpbmUgX19GTE9BVF9XT1JEX09SREVSIF9fQllURV9PUkRF
UgoKCgojZGVmaW5lIExJVFRMRV9FTkRJQU4gX19MSVRUTEVfRU5ESUFOCiNkZWZpbmUgQklHX0VO
RElBTiBfX0JJR19FTkRJQU4KI2RlZmluZSBQRFBfRU5ESUFOIF9fUERQX0VORElBTgojZGVmaW5l
IEJZVEVfT1JERVIgX19CWVRFX09SREVSCgoKCiNkZWZpbmUgX19MT05HX0xPTkdfUEFJUihISSxM
TykgTE8sIEhJCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2Jp
dHMvYnl0ZXN3YXAuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJp
aGYvYml0cy9ieXRlc3dhcC5oIiAzIDQKI2RlZmluZSBfQklUU19CWVRFU1dBUF9IIDEKCgojIDEg
Ii91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvdHlwZXMuaCIgMSAzIDQKIyAy
NCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy90eXBlcy5oIiAzIDQKI2Rl
ZmluZSBfQklUU19UWVBFU19IIDEKCgojIDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFi
aWhmL2JpdHMvd29yZHNpemUuaCIgMSAzIDQKIyAxOCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvYml0cy93b3Jkc2l6ZS5oIiAzIDQKI2RlZmluZSBfX1dPUkRTSVpFIDMyCiMgMjgg
Ii91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvdHlwZXMuaCIgMiAzIDQKCgp0
eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50
IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIGludCBfX3VfbG9uZzsKCgp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBl
ZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19p
bnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVmIHNp
Z25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKCgoK
X19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19l
eHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCgoK
CgoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwpfX2V4dGVu
c2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90OwojIDg5ICIv
dXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3R5cGVzLmgiIDMgNAojZGVmaW5l
IF9fUzE2X1RZUEUgc2hvcnQgaW50CiNkZWZpbmUgX19VMTZfVFlQRSB1bnNpZ25lZCBzaG9ydCBp
bnQKI2RlZmluZSBfX1MzMl9UWVBFIGludAojZGVmaW5lIF9fVTMyX1RZUEUgdW5zaWduZWQgaW50
CiNkZWZpbmUgX19TTE9OR1dPUkRfVFlQRSBsb25nIGludAojZGVmaW5lIF9fVUxPTkdXT1JEX1RZ
UEUgdW5zaWduZWQgbG9uZyBpbnQKCiNkZWZpbmUgX19TUVVBRF9UWVBFIF9fcXVhZF90CiNkZWZp
bmUgX19VUVVBRF9UWVBFIF9fdV9xdWFkX3QKI2RlZmluZSBfX1NXT1JEX1RZUEUgaW50CiNkZWZp
bmUgX19VV09SRF9UWVBFIHVuc2lnbmVkIGludAojZGVmaW5lIF9fU0xPTkczMl9UWVBFIGxvbmcg
aW50CiNkZWZpbmUgX19VTE9ORzMyX1RZUEUgdW5zaWduZWQgbG9uZyBpbnQKI2RlZmluZSBfX1M2
NF9UWVBFIF9fcXVhZF90CiNkZWZpbmUgX19VNjRfVFlQRSBfX3VfcXVhZF90CgoKI2RlZmluZSBf
X1NURF9UWVBFIF9fZXh0ZW5zaW9uX18gdHlwZWRlZgojIDEyMSAiL3Vzci9pbmNsdWRlL2FybS1s
aW51eC1nbnVlYWJpaGYvYml0cy90eXBlcy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxp
bnV4LWdudWVhYmloZi9iaXRzL3R5cGVzaXplcy5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUv
YXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3R5cGVzaXplcy5oIiAzIDQKI2RlZmluZSBfQklUU19U
WVBFU0laRVNfSCAxCgoKCgojZGVmaW5lIF9fREVWX1RfVFlQRSBfX1VRVUFEX1RZUEUKI2RlZmlu
ZSBfX1VJRF9UX1RZUEUgX19VMzJfVFlQRQojZGVmaW5lIF9fR0lEX1RfVFlQRSBfX1UzMl9UWVBF
CiNkZWZpbmUgX19JTk9fVF9UWVBFIF9fVUxPTkdXT1JEX1RZUEUKI2RlZmluZSBfX0lOTzY0X1Rf
VFlQRSBfX1VRVUFEX1RZUEUKI2RlZmluZSBfX01PREVfVF9UWVBFIF9fVTMyX1RZUEUKI2RlZmlu
ZSBfX05MSU5LX1RfVFlQRSBfX1VXT1JEX1RZUEUKI2RlZmluZSBfX09GRl9UX1RZUEUgX19TTE9O
R1dPUkRfVFlQRQojZGVmaW5lIF9fT0ZGNjRfVF9UWVBFIF9fU1FVQURfVFlQRQojZGVmaW5lIF9f
UElEX1RfVFlQRSBfX1MzMl9UWVBFCiNkZWZpbmUgX19STElNX1RfVFlQRSBfX1VMT05HV09SRF9U
WVBFCiNkZWZpbmUgX19STElNNjRfVF9UWVBFIF9fVVFVQURfVFlQRQojZGVmaW5lIF9fQkxLQ05U
X1RfVFlQRSBfX1NMT05HV09SRF9UWVBFCiNkZWZpbmUgX19CTEtDTlQ2NF9UX1RZUEUgX19TUVVB
RF9UWVBFCiNkZWZpbmUgX19GU0JMS0NOVF9UX1RZUEUgX19VTE9OR1dPUkRfVFlQRQojZGVmaW5l
IF9fRlNCTEtDTlQ2NF9UX1RZUEUgX19VUVVBRF9UWVBFCiNkZWZpbmUgX19GU0ZJTENOVF9UX1RZ
UEUgX19VTE9OR1dPUkRfVFlQRQojZGVmaW5lIF9fRlNGSUxDTlQ2NF9UX1RZUEUgX19VUVVBRF9U
WVBFCiNkZWZpbmUgX19GU1dPUkRfVF9UWVBFIF9fU1dPUkRfVFlQRQojZGVmaW5lIF9fSURfVF9U
WVBFIF9fVTMyX1RZUEUKI2RlZmluZSBfX0NMT0NLX1RfVFlQRSBfX1NMT05HV09SRF9UWVBFCiNk
ZWZpbmUgX19USU1FX1RfVFlQRSBfX1NMT05HV09SRF9UWVBFCiNkZWZpbmUgX19VU0VDT05EU19U
X1RZUEUgX19VMzJfVFlQRQojZGVmaW5lIF9fU1VTRUNPTkRTX1RfVFlQRSBfX1NMT05HV09SRF9U
WVBFCiNkZWZpbmUgX19EQUREUl9UX1RZUEUgX19TMzJfVFlQRQojZGVmaW5lIF9fS0VZX1RfVFlQ
RSBfX1MzMl9UWVBFCiNkZWZpbmUgX19DTE9DS0lEX1RfVFlQRSBfX1MzMl9UWVBFCiNkZWZpbmUg
X19USU1FUl9UX1RZUEUgdm9pZCAqCiNkZWZpbmUgX19CTEtTSVpFX1RfVFlQRSBfX1NMT05HV09S
RF9UWVBFCiNkZWZpbmUgX19GU0lEX1RfVFlQRSBzdHJ1Y3QgeyBpbnQgX192YWxbMl07IH0KI2Rl
ZmluZSBfX1NTSVpFX1RfVFlQRSBfX1NXT1JEX1RZUEUKI2RlZmluZSBfX1NZU0NBTExfU0xPTkdf
VFlQRSBfX1NMT05HV09SRF9UWVBFCiNkZWZpbmUgX19TWVNDQUxMX1VMT05HX1RZUEUgX19VTE9O
R1dPUkRfVFlQRQojIDc0ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3R5
cGVzaXplcy5oIiAzIDQKI2RlZmluZSBfX0ZEX1NFVFNJWkUgMTAyNAojIDEyMiAiL3Vzci9pbmNs
dWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy90eXBlcy5oIiAyIDMgNAoKCl9fZXh0ZW5zaW9u
X18gdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNp
Z25lZCBpbnQgX191aWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGludCBfX2dp
ZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19pbm9fdDsKX19l
eHRlbnNpb25fXyB0eXBlZGVmIF9fdV9xdWFkX3QgX19pbm82NF90OwpfX2V4dGVuc2lvbl9fIHR5
cGVkZWYgdW5zaWduZWQgaW50IF9fbW9kZV90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9fbmxpbmtfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7
Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBfX3F1YWRfdCBfX29mZjY0X3Q7Cl9fZXh0ZW5zaW9uX18g
dHlwZWRlZiBpbnQgX19waWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdCB7IGludCBf
X3ZhbFsyXTsgfSBfX2ZzaWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fY2xv
Y2tfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fcmxpbV90Owpf
X2V4dGVuc2lvbl9fIHR5cGVkZWYgX191X3F1YWRfdCBfX3JsaW02NF90OwpfX2V4dGVuc2lvbl9f
IHR5cGVkZWYgdW5zaWduZWQgaW50IF9faWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcg
aW50IF9fdGltZV90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9fdXNlY29u
ZHNfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CgpfX2V4
dGVuc2lvbl9fIHR5cGVkZWYgaW50IF9fZGFkZHJfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGlu
dCBfX2tleV90OwoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBpbnQgX19jbG9ja2lkX3Q7CgoKX19l
eHRlbnNpb25fXyB0eXBlZGVmIHZvaWQgKiBfX3RpbWVyX3Q7CgoKX19leHRlbnNpb25fXyB0eXBl
ZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcg
aW50IF9fYmxrY250X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0
X3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fZnNibGtjbnRf
dDsKX19leHRlbnNpb25fXyB0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7CgoKX19l
eHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fZnNmaWxjbnRfdDsKX19leHRl
bnNpb25fXyB0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7CgoKX19leHRlbnNpb25f
XyB0eXBlZGVmIGludCBfX2Zzd29yZF90OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIGludCBfX3Nz
aXplX3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fc3lzY2FsbF9zbG9uZ190
OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fc3lzY2FsbF91bG9u
Z190OwoKCgp0eXBlZGVmIF9fb2ZmNjRfdCBfX2xvZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCAqX19x
YWRkcl90Owp0eXBlZGVmIGNoYXIgKl9fY2FkZHJfdDsKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYg
aW50IF9faW50cHRyX3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGludCBfX3Nv
Y2tsZW5fdDsKCgojdW5kZWYgX19TVERfVFlQRQojIDI4ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4
LWdudWVhYmloZi9iaXRzL2J5dGVzd2FwLmgiIDIgMyA0CgoKI2RlZmluZSBfX2Jzd2FwX2NvbnN0
YW50XzE2KHgpICgodW5zaWduZWQgc2hvcnQgaW50KSgoKCh4KSA+PiA4KSAmIDB4ZmZ1KSB8ICgo
KHgpICYgMHhmZnUpIDw8IDgpKSkKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVh
YmloZi9iaXRzL2J5dGVzd2FwLTE2LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9hcm0tbGlu
dXgtZ251ZWFiaWhmL2JpdHMvYnl0ZXN3YXAtMTYuaCIgMyA0CiNkZWZpbmUgX19ic3dhcF8xNih4
KSAoX19leHRlbnNpb25fXyAoeyB1bnNpZ25lZCBzaG9ydCBpbnQgX19ic3ggPSAodW5zaWduZWQg
c2hvcnQgaW50KSAoeCk7IF9fYnN3YXBfY29uc3RhbnRfMTYgKF9fYnN4KTsgfSkpCiMgMzUgIi91
c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvYnl0ZXN3YXAuaCIgMiAzIDQKCgoj
ZGVmaW5lIF9fYnN3YXBfY29uc3RhbnRfMzIoeCkgKCgoKHgpICYgMHhmZjAwMDAwMHUpID4+IDI0
KSB8ICgoKHgpICYgMHgwMGZmMDAwMHUpID4+IDgpIHwgKCgoeCkgJiAweDAwMDBmZjAwdSkgPDwg
OCkgfCAoKCh4KSAmIDB4MDAwMDAwZmZ1KSA8PCAyNCkpCgoKCgoKc3RhdGljIF9faW5saW5lIHVu
c2lnbmVkIGludApfX2Jzd2FwXzMyICh1bnNpZ25lZCBpbnQgX19ic3gpCnsKICByZXR1cm4gX19i
dWlsdGluX2Jzd2FwMzIgKF9fYnN4KTsKfQojIDYzICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdu
dWVhYmloZi9iaXRzL2J5dGVzd2FwLmgiIDMgNAojZGVmaW5lIF9fYnN3YXBfY29uc3RhbnRfNjQo
eCkgKF9fZXh0ZW5zaW9uX18gKCgoKHgpICYgMHhmZjAwMDAwMDAwMDAwMDAwdWxsKSA+PiA1Nikg
fCAoKCh4KSAmIDB4MDBmZjAwMDAwMDAwMDAwMHVsbCkgPj4gNDApIHwgKCgoeCkgJiAweDAwMDBm
ZjAwMDAwMDAwMDB1bGwpID4+IDI0KSB8ICgoKHgpICYgMHgwMDAwMDBmZjAwMDAwMDAwdWxsKSA+
PiA4KSB8ICgoKHgpICYgMHgwMDAwMDAwMGZmMDAwMDAwdWxsKSA8PCA4KSB8ICgoKHgpICYgMHgw
MDAwMDAwMDAwZmYwMDAwdWxsKSA8PCAyNCkgfCAoKCh4KSAmIDB4MDAwMDAwMDAwMDAwZmYwMHVs
bCkgPDwgNDApIHwgKCgoeCkgJiAweDAwMDAwMDAwMDAwMDAwZmZ1bGwpIDw8IDU2KSkpCiMgNzQg
Ii91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvYnl0ZXN3YXAuaCIgMyA0CnN0
YXRpYyBfX2lubGluZSBfX3VpbnQ2NF90Cl9fYnN3YXBfNjQgKF9fdWludDY0X3QgX19ic3gpCnsK
ICByZXR1cm4gX19idWlsdGluX2Jzd2FwNjQgKF9fYnN4KTsKfQojIDYxICIvdXNyL2luY2x1ZGUv
ZW5kaWFuLmgiIDIgMyA0CgoKI2RlZmluZSBodG9iZTE2KHgpIF9fYnN3YXBfMTYgKHgpCiNkZWZp
bmUgaHRvbGUxNih4KSAoeCkKI2RlZmluZSBiZTE2dG9oKHgpIF9fYnN3YXBfMTYgKHgpCiNkZWZp
bmUgbGUxNnRvaCh4KSAoeCkKCiNkZWZpbmUgaHRvYmUzMih4KSBfX2Jzd2FwXzMyICh4KQojZGVm
aW5lIGh0b2xlMzIoeCkgKHgpCiNkZWZpbmUgYmUzMnRvaCh4KSBfX2Jzd2FwXzMyICh4KQojZGVm
aW5lIGxlMzJ0b2goeCkgKHgpCgojZGVmaW5lIGh0b2JlNjQoeCkgX19ic3dhcF82NCAoeCkKI2Rl
ZmluZSBodG9sZTY0KHgpICh4KQojZGVmaW5lIGJlNjR0b2goeCkgX19ic3dhcF82NCAoeCkKI2Rl
ZmluZSBsZTY0dG9oKHgpICh4KQojIDY1ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmlo
Zi9iaXRzL3dhaXRzdGF0dXMuaCIgMiAzIDQKCnVuaW9uIHdhaXQKICB7CiAgICBpbnQgd19zdGF0
dXM7CiAgICBzdHJ1Y3QKICAgICAgewoKIHVuc2lnbmVkIGludCBfX3dfdGVybXNpZzo3OwogdW5z
aWduZWQgaW50IF9fd19jb3JlZHVtcDoxOwogdW5zaWduZWQgaW50IF9fd19yZXRjb2RlOjg7CiB1
bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAgICB9IF9fd2FpdF90ZXJtaW5hdGVkOwogICAgc3Ry
dWN0CiAgICAgIHsKCiB1bnNpZ25lZCBpbnQgX193X3N0b3B2YWw6ODsKIHVuc2lnbmVkIGludCBf
X3dfc3RvcHNpZzo4OwogdW5zaWduZWQgaW50OjE2OwoKCgoKCgogICAgICB9IF9fd2FpdF9zdG9w
cGVkOwogIH07CgojZGVmaW5lIHdfdGVybXNpZyBfX3dhaXRfdGVybWluYXRlZC5fX3dfdGVybXNp
ZwojZGVmaW5lIHdfY29yZWR1bXAgX193YWl0X3Rlcm1pbmF0ZWQuX193X2NvcmVkdW1wCiNkZWZp
bmUgd19yZXRjb2RlIF9fd2FpdF90ZXJtaW5hdGVkLl9fd19yZXRjb2RlCiNkZWZpbmUgd19zdG9w
c2lnIF9fd2FpdF9zdG9wcGVkLl9fd19zdG9wc2lnCiNkZWZpbmUgd19zdG9wdmFsIF9fd2FpdF9z
dG9wcGVkLl9fd19zdG9wdmFsCiMgNDMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKIyA1
NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKI2RlZmluZSBfX1dBSVRfSU5UKHN0YXR1cykg
KCooaW50ICopICYoc3RhdHVzKSkKIyA2MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKI2Rl
ZmluZSBfX1dBSVRfU1RBVFVTIHZvaWQgKgojZGVmaW5lIF9fV0FJVF9TVEFUVVNfREVGTiB2b2lk
ICoKIyA4NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKI2RlZmluZSBXRVhJVFNUQVRVUyhz
dGF0dXMpIF9fV0VYSVRTVEFUVVMgKF9fV0FJVF9JTlQgKHN0YXR1cykpCiNkZWZpbmUgV1RFUk1T
SUcoc3RhdHVzKSBfX1dURVJNU0lHIChfX1dBSVRfSU5UIChzdGF0dXMpKQojZGVmaW5lIFdTVE9Q
U0lHKHN0YXR1cykgX19XU1RPUFNJRyAoX19XQUlUX0lOVCAoc3RhdHVzKSkKI2RlZmluZSBXSUZF
WElURUQoc3RhdHVzKSBfX1dJRkVYSVRFRCAoX19XQUlUX0lOVCAoc3RhdHVzKSkKI2RlZmluZSBX
SUZTSUdOQUxFRChzdGF0dXMpIF9fV0lGU0lHTkFMRUQgKF9fV0FJVF9JTlQgKHN0YXR1cykpCiNk
ZWZpbmUgV0lGU1RPUFBFRChzdGF0dXMpIF9fV0lGU1RPUFBFRCAoX19XQUlUX0lOVCAoc3RhdHVz
KSkKCiNkZWZpbmUgV0lGQ09OVElOVUVEKHN0YXR1cykgX19XSUZDT05USU5VRUQgKF9fV0FJVF9J
TlQgKHN0YXR1cykpCgoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsKICAgIGlu
dCByZW07CiAgfSBkaXZfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90
OwogICAgbG9uZyBpbnQgcmVtOwogIH0gbGRpdl90OwojZGVmaW5lIF9fbGRpdl90X2RlZmluZWQg
MQoKCgoKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBsb25nIGlu
dCBxdW90OwogICAgbG9uZyBsb25nIGludCByZW07CiAgfSBsbGRpdl90OwojZGVmaW5lIF9fbGxk
aXZfdF9kZWZpbmVkIDEKCgoKCgojZGVmaW5lIFJBTkRfTUFYIDIxNDc0ODM2NDcKCgoKCiNkZWZp
bmUgRVhJVF9GQUlMVVJFIDEKI2RlZmluZSBFWElUX1NVQ0NFU1MgMAoKCgojZGVmaW5lIE1CX0NV
Ul9NQVggKF9fY3R5cGVfZ2V0X21iX2N1cl9tYXggKCkpCmV4dGVybiBzaXplX3QgX19jdHlwZV9n
ZXRfbWJfY3VyX21heCAodm9pZCkgdGhyb3cgKCkgOwoKCgoKZXh0ZXJuIGRvdWJsZSBhdG9mIChj
b25zdCBjaGFyICpfX25wdHIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCmV4dGVybiBpbnQgYXRvaSAo
Y29uc3QgY2hhciAqX19ucHRyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CgpleHRlcm4gbG9uZyBpbnQg
YXRvbCAoY29uc3QgY2hhciAqX19ucHRyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CgoKCgoKX19leHRl
bnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBhdG9sbCAoY29uc3QgY2hhciAqX19ucHRyKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChf
X25vbm51bGxfXyAoMSkpKSA7CgoKCgoKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgKGNvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgpleHRl
cm4gZmxvYXQgc3RydG9mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u
dWxsX18gKDEpKSk7CgpleHRlcm4gbG9uZyBkb3VibGUgc3RydG9sZCAoY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKZXh0ZXJuIGxv
bmcgaW50IHN0cnRvbCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX25vbm51bGxfXyAoMSkpKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3Vs
IChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u
bnVsbF9fICgxKSkpOwoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0
b3EgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X25vbm51bGxfXyAoMSkpKTsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9u
ZyBpbnQgc3RydG91cSAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJu
IGxvbmcgbG9uZyBpbnQgc3RydG9sbCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAg
ICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCl9fZXh0ZW5zaW9uX18KZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGwgKGNvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLAogICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCiMgMjM1ICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS94bG9jYWxlLmgiIDEg
MyA0CiMgMjEgIi91c3IvaW5jbHVkZS94bG9jYWxlLmgiIDMgNAojZGVmaW5lIF9YTE9DQUxFX0gg
MQoKCgoKCnR5cGVkZWYgc3RydWN0IF9fbG9jYWxlX3N0cnVjdAp7CgogIHN0cnVjdCBfX2xvY2Fs
ZV9kYXRhICpfX2xvY2FsZXNbMTNdOwoKCiAgY29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICpfX2N0
eXBlX2I7CiAgY29uc3QgaW50ICpfX2N0eXBlX3RvbG93ZXI7CiAgY29uc3QgaW50ICpfX2N0eXBl
X3RvdXBwZXI7CgoKICBjb25zdCBjaGFyICpfX25hbWVzWzEzXTsKfSAqX19sb2NhbGVfdDsKCgp0
eXBlZGVmIF9fbG9jYWxlX3QgbG9jYWxlX3Q7CiMgMjM2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi
IDIgMyA0CgoKCmV4dGVybiBsb25nIGludCBzdHJ0b2xfbCAoY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsCiAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsCiAg
ICAgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f
ICgxLCA0KSkpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWxfbCAoY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
CiAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDQpKSk7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiBs
b25nIGxvbmcgaW50IHN0cnRvbGxfbCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwKICAgIF9fbG9jYWxlX3Qg
X19sb2MpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCA0KSkp
OwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VsbF9s
IChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLAogICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykKICAgICB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDQpKSk7CgpleHRlcm4gZG91Ymxl
IHN0cnRvZF9sIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAzKSkpOwoKZXh0ZXJuIGZsb2F0IHN0cnRvZl9sIChjb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm9ubnVsbF9fICgxLCAzKSkpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHN0cnRvbGRfbCAoY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLAogICAgICAgICBfX2xvY2FsZV90IF9fbG9jKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX25vbm51bGxfXyAoMSwgMykpKTsKCgoKCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1
dGVfXyAoKF9fZ251X2lubGluZV9fKSkgaW50Cl9fYXR0cmlidXRlX18gKChfX2xlYWZfXykpIGF0
b2kgKGNvbnN0IGNoYXIgKl9fbnB0cikgdGhyb3cgKCkKewogIHJldHVybiAoaW50KSBzdHJ0b2wg
KF9fbnB0ciwgKGNoYXIgKiopIF9fbnVsbCwgMTApOwp9CmV4dGVybiBfX2lubGluZSBfX2F0dHJp
YnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBsb25nIGludApfX2F0dHJpYnV0ZV9fICgoX19sZWFm
X18pKSBhdG9sIChjb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsKICByZXR1cm4gc3RydG9s
IChfX25wdHIsIChjaGFyICoqKSBfX251bGwsIDEwKTsKfQoKCgoKX19leHRlbnNpb25fXyBleHRl
cm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgbG9uZyBsb25nIGlu
dApfX2F0dHJpYnV0ZV9fICgoX19sZWFmX18pKSBhdG9sbCAoY29uc3QgY2hhciAqX19ucHRyKSB0
aHJvdyAoKQp7CiAgcmV0dXJuIHN0cnRvbGwgKF9fbnB0ciwgKGNoYXIgKiopIF9fbnVsbCwgMTAp
Owp9CgojIDMwNSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGNoYXIgKmw2NGEg
KGxvbmcgaW50IF9fbikgdGhyb3cgKCkgOwoKCmV4dGVybiBsb25nIGludCBhNjRsIChjb25zdCBj
aGFyICpfX3MpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRy
aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FybS1s
aW51eC1nbnVlYWJpaGYvc3lzL3R5cGVzLmgiIDEgMyA0CiMgMjMgIi91c3IvaW5jbHVkZS9hcm0t
bGludXgtZ251ZWFiaWhmL3N5cy90eXBlcy5oIiAzIDQKI2RlZmluZSBfU1lTX1RZUEVTX0ggMQoK
CgpleHRlcm4gIkMiIHsKCgoKCgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKdHlwZWRlZiBfX3Vf
c2hvcnQgdV9zaG9ydDsKdHlwZWRlZiBfX3VfaW50IHVfaW50Owp0eXBlZGVmIF9fdV9sb25nIHVf
bG9uZzsKdHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191X3F1YWRfdCB1X3F1YWRf
dDsKdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7CiNkZWZpbmUgX191X2NoYXJfZGVmaW5lZCAKCgoK
dHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9fdDsKCgoKI2Rl
ZmluZSBfX2lub190X2RlZmluZWQgCgoKdHlwZWRlZiBfX2lubzY0X3QgaW5vNjRfdDsKI2RlZmlu
ZSBfX2lubzY0X3RfZGVmaW5lZCAKCgoKdHlwZWRlZiBfX2Rldl90IGRldl90OwojZGVmaW5lIF9f
ZGV2X3RfZGVmaW5lZCAKCgoKdHlwZWRlZiBfX2dpZF90IGdpZF90OwojZGVmaW5lIF9fZ2lkX3Rf
ZGVmaW5lZCAKCgoKdHlwZWRlZiBfX21vZGVfdCBtb2RlX3Q7CiNkZWZpbmUgX19tb2RlX3RfZGVm
aW5lZCAKCgoKdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKI2RlZmluZSBfX25saW5rX3RfZGVm
aW5lZCAKCgoKdHlwZWRlZiBfX3VpZF90IHVpZF90OwojZGVmaW5lIF9fdWlkX3RfZGVmaW5lZCAK
CgoKCnR5cGVkZWYgX19vZmZfdCBvZmZfdDsKCgoKI2RlZmluZSBfX29mZl90X2RlZmluZWQgCgoK
dHlwZWRlZiBfX29mZjY0X3Qgb2ZmNjRfdDsKI2RlZmluZSBfX29mZjY0X3RfZGVmaW5lZCAKCgoK
dHlwZWRlZiBfX3BpZF90IHBpZF90OwojZGVmaW5lIF9fcGlkX3RfZGVmaW5lZCAKCgoKCnR5cGVk
ZWYgX19pZF90IGlkX3Q7CiNkZWZpbmUgX19pZF90X2RlZmluZWQgCgoKCnR5cGVkZWYgX19zc2l6
ZV90IHNzaXplX3Q7CiNkZWZpbmUgX19zc2l6ZV90X2RlZmluZWQgCgoKCgp0eXBlZGVmIF9fZGFk
ZHJfdCBkYWRkcl90Owp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwojZGVmaW5lIF9fZGFkZHJf
dF9kZWZpbmVkIAoKCgoKdHlwZWRlZiBfX2tleV90IGtleV90OwojZGVmaW5lIF9fa2V5X3RfZGVm
aW5lZCAKCgoKI2RlZmluZSBfX25lZWRfY2xvY2tfdCAKCiNkZWZpbmUgX19uZWVkX3RpbWVfdCAK
I2RlZmluZSBfX25lZWRfdGltZXJfdCAKI2RlZmluZSBfX25lZWRfY2xvY2tpZF90IAojIDEgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDEgMyA0CiMgNTMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAoj
ZGVmaW5lIF9fY2xvY2tfdF9kZWZpbmVkIDEKCgoKCgp0eXBlZGVmIF9fY2xvY2tfdCBjbG9ja190
OwoKCgoKCgojdW5kZWYgX19uZWVkX2Nsb2NrX3QKCgojZGVmaW5lIF9fdGltZV90X2RlZmluZWQg
MQoKCgoKCnR5cGVkZWYgX190aW1lX3QgdGltZV90OwoKCgoKCgojdW5kZWYgX19uZWVkX3RpbWVf
dAoKCgojZGVmaW5lIF9fY2xvY2tpZF90X2RlZmluZWQgMQoKCgoKdHlwZWRlZiBfX2Nsb2NraWRf
dCBjbG9ja2lkX3Q7CgoKI3VuZGVmIF9fY2xvY2tpZF90aW1lX3QKCgoKI2RlZmluZSBfX3RpbWVy
X3RfZGVmaW5lZCAxCgoKCgp0eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90OwoKCiN1bmRlZiBfX25l
ZWRfdGltZXJfdAojIDEyNyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CiN1bmRlZiBfX25lZWRf
dGltZXNwZWMKIyAxMzMgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3N5cy90eXBl
cy5oIiAyIDMgNAoKCgp0eXBlZGVmIF9fdXNlY29uZHNfdCB1c2Vjb25kc190OwojZGVmaW5lIF9f
dXNlY29uZHNfdF9kZWZpbmVkIAoKCnR5cGVkZWYgX19zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsK
I2RlZmluZSBfX3N1c2Vjb25kc190X2RlZmluZWQgCgoKCiNkZWZpbmUgX19uZWVkX3NpemVfdCAK
IyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAyMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9f
bmVlZF9zaXplX3QKIyA0MDggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF9OVUxMCiMg
MTQ3ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvdHlwZXMuaCIgMiAzIDQK
CgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBpbnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50OwojIDE4NyAiL3Vzci9pbmNs
dWRlL2FybS1saW51eC1nbnVlYWJpaGYvc3lzL3R5cGVzLmgiIDMgNAojZGVmaW5lIF9faW50Tl90
KE4sTU9ERSkgdHlwZWRlZiBpbnQgaW50ICMjTiAjI190IF9fYXR0cmlidXRlX18gKChfX21vZGVf
XyAoTU9ERSkpKQoKI2RlZmluZSBfX3VfaW50Tl90KE4sTU9ERSkgdHlwZWRlZiB1bnNpZ25lZCBp
bnQgdV9pbnQgIyNOICMjX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChNT0RFKSkpCgoKCiNk
ZWZpbmUgX19pbnQ4X3RfZGVmaW5lZCAKdHlwZWRlZiBpbnQgaW50OF90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIGludCBpbnQxNl90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBpbnQzMl90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoX19ESV9fKSkpOwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9f
YXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1
X2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5z
aWduZWQgaW50IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAo
X19ESV9fKSkpOwoKdHlwZWRlZiBpbnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2Rl
X18gKF9fd29yZF9fKSkpOwoKCgoKCiNkZWZpbmUgX19CSVRfVFlQRVNfREVGSU5FRF9fIDEKCgoK
CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvc3lzL3NlbGVjdC5oIiAx
IDMgNAojIDIyICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvc2VsZWN0Lmgi
IDMgNAojZGVmaW5lIF9TWVNfU0VMRUNUX0ggMQoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXJt
LWxpbnV4LWdudWVhYmloZi9iaXRzL3NlbGVjdC5oIiAxIDMgNAojIDI1ICIvdXNyL2luY2x1ZGUv
YXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3NlbGVjdC5oIiAzIDQKI2RlZmluZSBfX0ZEX1pFUk8o
cykgZG8geyB1bnNpZ25lZCBpbnQgX19pOyBmZF9zZXQgKl9fYXJyID0gKHMpOyBmb3IgKF9faSA9
IDA7IF9faSA8IHNpemVvZiAoZmRfc2V0KSAvIHNpemVvZiAoX19mZF9tYXNrKTsgKytfX2kpIF9f
RkRTX0JJVFMgKF9fYXJyKVtfX2ldID0gMDsgfSB3aGlsZSAoMCkKCgoKCgoKI2RlZmluZSBfX0ZE
X1NFVChkLHMpICgodm9pZCkgKF9fRkRTX0JJVFMgKHMpW19fRkRfRUxUKGQpXSB8PSBfX0ZEX01B
U0soZCkpKQoKI2RlZmluZSBfX0ZEX0NMUihkLHMpICgodm9pZCkgKF9fRkRTX0JJVFMgKHMpW19f
RkRfRUxUKGQpXSAmPSB+X19GRF9NQVNLKGQpKSkKCiNkZWZpbmUgX19GRF9JU1NFVChkLHMpICgo
X19GRFNfQklUUyAocylbX19GRF9FTFQgKGQpXSAmIF9fRkRfTUFTSyAoZCkpICE9IDApCiMgMzEg
Ii91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3N5cy9zZWxlY3QuaCIgMiAzIDQKCgoj
IDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc2lnc2V0LmgiIDEgMyA0
CiMgMjAgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc2lnc2V0LmgiIDMg
NAojZGVmaW5lIF9TSUdTRVRfSF90eXBlcyAxCgp0eXBlZGVmIGludCBfX3NpZ19hdG9taWNfdDsK
CgoKI2RlZmluZSBfU0lHU0VUX05XT1JEUyAoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBs
b25nIGludCkpKQp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdmFs
WygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpXTsKICB9IF9fc2lnc2V0
X3Q7CiMgMzQgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3N5cy9zZWxlY3QuaCIg
MiAzIDQKCgojZGVmaW5lIF9fc2lnc2V0X3RfZGVmaW5lZCAKdHlwZWRlZiBfX3NpZ3NldF90IHNp
Z3NldF90OwoKCgojZGVmaW5lIF9fbmVlZF90aW1lX3QgCiNkZWZpbmUgX19uZWVkX3RpbWVzcGVj
IAojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMyA0CiMgNjYgIi91c3IvaW5jbHVkZS90aW1l
LmgiIDMgNAojdW5kZWYgX19uZWVkX2Nsb2NrX3QKIyA4MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg
MyA0CiN1bmRlZiBfX25lZWRfdGltZV90CiMgOTQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAoj
dW5kZWYgX19jbG9ja2lkX3RpbWVfdAojIDEwNiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CiN1
bmRlZiBfX25lZWRfdGltZXJfdAoKCgoKCgoKI2RlZmluZSBfX3RpbWVzcGVjX2RlZmluZWQgMQoK
CgoKCnN0cnVjdCB0aW1lc3BlYwogIHsKICAgIF9fdGltZV90IHR2X3NlYzsKICAgIF9fc3lzY2Fs
bF9zbG9uZ190IHR2X25zZWM7CiAgfTsKCgojdW5kZWYgX19uZWVkX3RpbWVzcGVjCiMgNDQgIi91
c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3N5cy9zZWxlY3QuaCIgMiAzIDQKI2RlZmlu
ZSBfX25lZWRfdGltZXZhbCAKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9i
aXRzL3RpbWUuaCIgMSAzIDQKIyAyNSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYv
Yml0cy90aW1lLmgiIDMgNAojZGVmaW5lIF9TVFJVQ1RfVElNRVZBTCAxCgoKCgpzdHJ1Y3QgdGlt
ZXZhbAogIHsKICAgIF9fdGltZV90IHR2X3NlYzsKICAgIF9fc3VzZWNvbmRzX3QgdHZfdXNlYzsK
ICB9OwojIDk5ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3RpbWUuaCIg
MyA0CiN1bmRlZiBfX25lZWRfdGltZXZhbAojIDQ2ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdu
dWVhYmloZi9zeXMvc2VsZWN0LmgiIDIgMyA0CiMgNTQgIi91c3IvaW5jbHVkZS9hcm0tbGludXgt
Z251ZWFiaWhmL3N5cy9zZWxlY3QuaCIgMyA0CnR5cGVkZWYgbG9uZyBpbnQgX19mZF9tYXNrOwoK
CiN1bmRlZiBfX05GREJJVFMKCiNkZWZpbmUgX19ORkRCSVRTICg4ICogKGludCkgc2l6ZW9mIChf
X2ZkX21hc2spKQojZGVmaW5lIF9fRkRfRUxUKGQpICgoZCkgLyBfX05GREJJVFMpCiNkZWZpbmUg
X19GRF9NQVNLKGQpICgoX19mZF9tYXNrKSAxIDw8ICgoZCkgJSBfX05GREJJVFMpKQoKCnR5cGVk
ZWYgc3RydWN0CiAgewoKCgogICAgX19mZF9tYXNrIGZkc19iaXRzWzEwMjQgLyAoOCAqIChpbnQp
IHNpemVvZiAoX19mZF9tYXNrKSldOwojZGVmaW5lIF9fRkRTX0JJVFMoc2V0KSAoKHNldCktPmZk
c19iaXRzKQoKCgoKICB9IGZkX3NldDsKCgojZGVmaW5lIEZEX1NFVFNJWkUgX19GRF9TRVRTSVpF
CgoKCnR5cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CgoKI2RlZmluZSBORkRCSVRTIF9fTkZEQklU
UwoKCgoKI2RlZmluZSBGRF9TRVQoZmQsZmRzZXRwKSBfX0ZEX1NFVCAoZmQsIGZkc2V0cCkKI2Rl
ZmluZSBGRF9DTFIoZmQsZmRzZXRwKSBfX0ZEX0NMUiAoZmQsIGZkc2V0cCkKI2RlZmluZSBGRF9J
U1NFVChmZCxmZHNldHApIF9fRkRfSVNTRVQgKGZkLCBmZHNldHApCiNkZWZpbmUgRkRfWkVSTyhm
ZHNldHApIF9fRkRfWkVSTyAoZmRzZXRwKQoKCmV4dGVybiAiQyIgewojIDEwNiAiL3Vzci9pbmNs
dWRlL2FybS1saW51eC1nbnVlYWJpaGYvc3lzL3NlbGVjdC5oIiAzIDQKZXh0ZXJuIGludCBzZWxl
Y3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmljdCBfX3JlYWRmZHMsCiAgICAgZmRfc2V0
ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCiAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0
ZmRzLAogICAgIHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91dCk7CiMgMTE4ICIv
dXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvc2VsZWN0LmgiIDMgNApleHRlcm4g
aW50IHBzZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmljdCBfX3JlYWRmZHMsCiAg
ICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICBmZF9zZXQgKl9fcmVzdHJp
Y3QgX19leGNlcHRmZHMsCiAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdCBf
X3RpbWVvdXQsCiAgICAgIGNvbnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19zaWdtYXNrKTsK
IyAxMzEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3N5cy9zZWxlY3QuaCIgMyA0
Cn0KIyAyMjAgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3N5cy90eXBlcy5oIiAy
IDMgNAoKCiMgMSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvc3lzL3N5c21hY3Jv
cy5oIiAxIDMgNAojIDIwICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvc3lz
bWFjcm9zLmgiIDMgNAojZGVmaW5lIF9TWVNfU1lTTUFDUk9TX0ggMQoKCgpleHRlcm4gIkMiIHsK
Cl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGludCBnbnVfZGV2X21ham9yICh1bnNpZ25l
ZCBsb25nIGxvbmcgaW50IF9fZGV2KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgaW50IGdudV9kZXZfbWlub3Ig
KHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19kZXYpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcg
aW50IGdudV9kZXZfbWFrZWRldiAodW5zaWduZWQgaW50IF9fbWFqb3IsCiAgICAgICAgICAgIHVu
c2lnbmVkIGludCBfX21pbm9yKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19n
bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkgdW5zaWduZWQgaW50Cl9f
YXR0cmlidXRlX18gKChfX2xlYWZfXykpIGdudV9kZXZfbWFqb3IgKHVuc2lnbmVkIGxvbmcgbG9u
ZyBpbnQgX19kZXYpIHRocm93ICgpCnsKICByZXR1cm4gKChfX2RldiA+PiA4KSAmIDB4ZmZmKSB8
ICgodW5zaWduZWQgaW50KSAoX19kZXYgPj4gMzIpICYgfjB4ZmZmKTsKfQoKX19leHRlbnNpb25f
XyBleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpIHVuc2lnbmVkIGludApfX2F0dHJpYnV0ZV9fICgoX19sZWFm
X18pKSBnbnVfZGV2X21pbm9yICh1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fZGV2KSB0aHJvdyAo
KQp7CiAgcmV0dXJuIChfX2RldiAmIDB4ZmYpIHwgKCh1bnNpZ25lZCBpbnQpIChfX2RldiA+PiAx
MikgJiB+MHhmZik7Cn0KCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRl
X18gKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKSB1bnNpZ25l
ZCBsb25nIGxvbmcgaW50Cl9fYXR0cmlidXRlX18gKChfX2xlYWZfXykpIGdudV9kZXZfbWFrZWRl
diAodW5zaWduZWQgaW50IF9fbWFqb3IsIHVuc2lnbmVkIGludCBfX21pbm9yKSB0aHJvdyAoKQp7
CiAgcmV0dXJuICgoX19taW5vciAmIDB4ZmYpIHwgKChfX21ham9yICYgMHhmZmYpIDw8IDgpCiAg
IHwgKCgodW5zaWduZWQgbG9uZyBsb25nIGludCkgKF9fbWlub3IgJiB+MHhmZikpIDw8IDEyKQog
ICB8ICgoKHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQpIChfX21ham9yICYgfjB4ZmZmKSkgPDwgMzIp
KTsKfQoKfQoKCiNkZWZpbmUgbWFqb3IoZGV2KSBnbnVfZGV2X21ham9yIChkZXYpCiNkZWZpbmUg
bWlub3IoZGV2KSBnbnVfZGV2X21pbm9yIChkZXYpCiNkZWZpbmUgbWFrZWRldihtYWosbWluKSBn
bnVfZGV2X21ha2VkZXYgKG1haiwgbWluKQojIDIyMyAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvc3lzL3R5cGVzLmgiIDIgMyA0CgoKCgoKdHlwZWRlZiBfX2Jsa3NpemVfdCBibGtz
aXplX3Q7CiNkZWZpbmUgX19ibGtzaXplX3RfZGVmaW5lZCAKCgoKCgp0eXBlZGVmIF9fYmxrY250
X3QgYmxrY250X3Q7CiNkZWZpbmUgX19ibGtjbnRfdF9kZWZpbmVkIAoKCnR5cGVkZWYgX19mc2Js
a2NudF90IGZzYmxrY250X3Q7CiNkZWZpbmUgX19mc2Jsa2NudF90X2RlZmluZWQgCgoKdHlwZWRl
ZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKI2RlZmluZSBfX2ZzZmlsY250X3RfZGVmaW5lZCAK
IyAyNjIgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3N5cy90eXBlcy5oIiAzIDQK
dHlwZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzYmxrY250NjRfdCBm
c2Jsa2NudDY0X3Q7CnR5cGVkZWYgX19mc2ZpbGNudDY0X3QgZnNmaWxjbnQ2NF90OwoKCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9wdGhyZWFkdHlwZXMuaCIg
MSAzIDQKIyAxOSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9wdGhyZWFk
dHlwZXMuaCIgMyA0CiNkZWZpbmUgX0JJVFNfUFRIUkVBRFRZUEVTX0ggMQoKCgojZGVmaW5lIF9f
U0laRU9GX1BUSFJFQURfQVRUUl9UIDM2CiNkZWZpbmUgX19TSVpFT0ZfUFRIUkVBRF9NVVRFWF9U
IDI0CiNkZWZpbmUgX19TSVpFT0ZfUFRIUkVBRF9NVVRFWEFUVFJfVCA0CiNkZWZpbmUgX19TSVpF
T0ZfUFRIUkVBRF9DT05EX1QgNDgKI2RlZmluZSBfX1NJWkVPRl9QVEhSRUFEX0NPTkRfQ09NUEFU
X1QgMTIKI2RlZmluZSBfX1NJWkVPRl9QVEhSRUFEX0NPTkRBVFRSX1QgNAojZGVmaW5lIF9fU0la
RU9GX1BUSFJFQURfUldMT0NLX1QgMzIKI2RlZmluZSBfX1NJWkVPRl9QVEhSRUFEX1JXTE9DS0FU
VFJfVCA4CiNkZWZpbmUgX19TSVpFT0ZfUFRIUkVBRF9CQVJSSUVSX1QgMjAKI2RlZmluZSBfX1NJ
WkVPRl9QVEhSRUFEX0JBUlJJRVJBVFRSX1QgNAoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGlu
dCBwdGhyZWFkX3Q7CgoKdW5pb24gcHRocmVhZF9hdHRyX3QKewogIGNoYXIgX19zaXplWzM2XTsK
ICBsb25nIGludCBfX2FsaWduOwp9OwoKdHlwZWRlZiB1bmlvbiBwdGhyZWFkX2F0dHJfdCBwdGhy
ZWFkX2F0dHJfdDsKI2RlZmluZSBfX2hhdmVfcHRocmVhZF9hdHRyX3QgMQoKCgp0eXBlZGVmIHN0
cnVjdCBfX3B0aHJlYWRfaW50ZXJuYWxfc2xpc3QKewogIHN0cnVjdCBfX3B0aHJlYWRfaW50ZXJu
YWxfc2xpc3QgKl9fbmV4dDsKfSBfX3B0aHJlYWRfc2xpc3RfdDsKCgoKCnR5cGVkZWYgdW5pb24K
ewogIHN0cnVjdCBfX3B0aHJlYWRfbXV0ZXhfcwogIHsKICAgIGludCBfX2xvY2s7CiAgICB1bnNp
Z25lZCBpbnQgX19jb3VudDsKICAgIGludCBfX293bmVyOwoKCiAgICBpbnQgX19raW5kOwogICAg
dW5zaWduZWQgaW50IF9fbnVzZXJzOwogICAgX19leHRlbnNpb25fXyB1bmlvbgogICAgewogICAg
ICBpbnQgX19zcGluczsKICAgICAgX19wdGhyZWFkX3NsaXN0X3QgX19saXN0OwogICAgfTsKICB9
IF9fZGF0YTsKICBjaGFyIF9fc2l6ZVsyNF07CiAgbG9uZyBpbnQgX19hbGlnbjsKfSBwdGhyZWFk
X211dGV4X3Q7Cgp0eXBlZGVmIHVuaW9uCnsKICBjaGFyIF9fc2l6ZVs0XTsKICBsb25nIGludCBf
X2FsaWduOwp9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7CgoKCgp0eXBlZGVmIHVuaW9uCnsKICBzdHJ1
Y3QKICB7CiAgICBpbnQgX19sb2NrOwogICAgdW5zaWduZWQgaW50IF9fZnV0ZXg7CiAgICBfX2V4
dGVuc2lvbl9fIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX190b3RhbF9zZXE7CiAgICBfX2V4dGVu
c2lvbl9fIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX193YWtldXBfc2VxOwogICAgX19leHRlbnNp
b25fXyB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fd29rZW5fc2VxOwogICAgdm9pZCAqX19tdXRl
eDsKICAgIHVuc2lnbmVkIGludCBfX253YWl0ZXJzOwogICAgdW5zaWduZWQgaW50IF9fYnJvYWRj
YXN0X3NlcTsKICB9IF9fZGF0YTsKICBjaGFyIF9fc2l6ZVs0OF07CiAgX19leHRlbnNpb25fXyBs
b25nIGxvbmcgaW50IF9fYWxpZ247Cn0gcHRocmVhZF9jb25kX3Q7Cgp0eXBlZGVmIHVuaW9uCnsK
ICBjaGFyIF9fc2l6ZVs0XTsKICBsb25nIGludCBfX2FsaWduOwp9IHB0aHJlYWRfY29uZGF0dHJf
dDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCgoKdHlwZWRlZiBpbnQg
cHRocmVhZF9vbmNlX3Q7CgoKCgoKdHlwZWRlZiB1bmlvbgp7CiAgc3RydWN0CiAgewogICAgaW50
IF9fbG9jazsKICAgIHVuc2lnbmVkIGludCBfX25yX3JlYWRlcnM7CiAgICB1bnNpZ25lZCBpbnQg
X19yZWFkZXJzX3dha2V1cDsKICAgIHVuc2lnbmVkIGludCBfX3dyaXRlcl93YWtldXA7CiAgICB1
bnNpZ25lZCBpbnQgX19ucl9yZWFkZXJzX3F1ZXVlZDsKICAgIHVuc2lnbmVkIGludCBfX25yX3dy
aXRlcnNfcXVldWVkOwojIDE0NCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0
cy9wdGhyZWFkdHlwZXMuaCIgMyA0CiAgICB1bnNpZ25lZCBjaGFyIF9fZmxhZ3M7CiAgICB1bnNp
Z25lZCBjaGFyIF9fc2hhcmVkOwogICAgdW5zaWduZWQgY2hhciBfX3BhZDE7CiAgICB1bnNpZ25l
ZCBjaGFyIF9fcGFkMjsKCiAgICBpbnQgX193cml0ZXI7CiAgfSBfX2RhdGE7CiAgY2hhciBfX3Np
emVbMzJdOwogIGxvbmcgaW50IF9fYWxpZ247Cn0gcHRocmVhZF9yd2xvY2tfdDsKCnR5cGVkZWYg
dW5pb24KewogIGNoYXIgX19zaXplWzhdOwogIGxvbmcgaW50IF9fYWxpZ247Cn0gcHRocmVhZF9y
d2xvY2thdHRyX3Q7CgoKCgoKdHlwZWRlZiB2b2xhdGlsZSBpbnQgcHRocmVhZF9zcGlubG9ja190
OwoKCgoKdHlwZWRlZiB1bmlvbgp7CiAgY2hhciBfX3NpemVbMjBdOwogIGxvbmcgaW50IF9fYWxp
Z247Cn0gcHRocmVhZF9iYXJyaWVyX3Q7Cgp0eXBlZGVmIHVuaW9uCnsKICBjaGFyIF9fc2l6ZVs0
XTsKICBpbnQgX19hbGlnbjsKfSBwdGhyZWFkX2JhcnJpZXJhdHRyX3Q7CiMgMjcxICIvdXNyL2lu
Y2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvdHlwZXMuaCIgMiAzIDQKCgp9CiMgMzE1ICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CgoKCgoKCmV4dGVybiBsb25nIGludCByYW5kb20g
KHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIHNyYW5kb20gKHVuc2lnbmVkIGludCBfX3Nl
ZWQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICppbml0c3RhdGUgKHVuc2lnbmVkIGludCBf
X3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAgIHNpemVfdCBfX3N0YXRlbGVuKSB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoKCmV4dGVybiBjaGFyICpzZXRzdGF0
ZSAoY2hhciAqX19zdGF0ZWJ1ZikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f
ICgxKSkpOwoKCgoKCgoKc3RydWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50MzJfdCAqZnB0cjsK
ICAgIGludDMyX3QgKnJwdHI7CiAgICBpbnQzMl90ICpzdGF0ZTsKICAgIGludCByYW5kX3R5cGU7
CiAgICBpbnQgcmFuZF9kZWc7CiAgICBpbnQgcmFuZF9zZXA7CiAgICBpbnQzMl90ICplbmRfcHRy
OwogIH07CgpleHRlcm4gaW50IHJhbmRvbV9yIChzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJp
Y3QgX19idWYsCiAgICAgICBpbnQzMl90ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgpleHRlcm4gaW50IHNyYW5kb21f
ciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgpleHRlcm4gaW50IGlu
aXRzdGF0ZV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVi
dWYsCiAgIHNpemVfdCBfX3N0YXRlbGVuLAogICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJp
Y3QgX19idWYpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCA0
KSkpOwoKZXh0ZXJuIGludCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYs
CiAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikKICAgICB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgoKCmV4dGVybiBp
bnQgcmFuZCAodm9pZCkgdGhyb3cgKCk7CgpleHRlcm4gdm9pZCBzcmFuZCAodW5zaWduZWQgaW50
IF9fc2VlZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWduZWQgaW50ICpf
X3NlZWQpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4ICh2b2lkKSB0aHJv
dyAoKTsKZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVsz
XSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBs
b25nIGludCBscmFuZDQ4ICh2b2lkKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDgg
KHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gbG9uZyBpbnQgbXJhbmQ0OCAodm9pZCkg
dGhyb3cgKCk7CmV4dGVybiBsb25nIGludCBqcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194
c3ViaVszXSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7
CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSB0aHJvdyAoKTsKZXh0
ZXJuIHVuc2lnbmVkIHNob3J0IGludCAqc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVk
MTZ2WzNdKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsK
ZXh0ZXJuIHZvaWQgbGNvbmc0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10pIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgpzdHJ1Y3QgZHJhbmQ0
OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNo
b3J0IGludCBfX29sZF94WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVuc2ln
bmVkIHNob3J0IGludCBfX2luaXQ7CiAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVkIGxvbmcgbG9u
ZyBpbnQgX19hOwoKICB9OwoKCmV4dGVybiBpbnQgZHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9k
YXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jl
c3VsdCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwpleHRl
cm4gaW50IGVyYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAg
c3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICBkb3VibGUg
Kl9fcmVzdHJpY3QgX19yZXN1bHQpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSwgMikpKTsKCgpleHRlcm4gaW50IGxyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAq
X19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3Vs
dCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CmV4
dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAg
ICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgIGxvbmcg
aW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IG1yYW5kNDhfciAoc3RydWN0IGRyYW5k
NDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICBsb25nIGludCAqX19yZXN0cmlj
dCBfX3Jlc3VsdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs
IDIpKSk7CmV4dGVybiBpbnQganJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVsz
XSwKICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAg
ICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHNyYW5kNDhfciAobG9u
ZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgpleHRlcm4gaW50IHNlZWQ0
OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLAogICAgICAgc3RydWN0IGRyYW5k
NDhfZGF0YSAqX19idWZmZXIpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo
MSwgMikpKTsKCmV4dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJh
bVs3XSwKICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgoKCiNkZWZpbmUgX19t
YWxsb2NfYW5kX2NhbGxvY19kZWZpbmVkIAoKCmV4dGVybiB2b2lkICptYWxsb2MgKHNpemVfdCBf
X3NpemUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkgOwoKZXh0ZXJuIHZv
aWQgKmNhbGxvYyAoc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpCiAgICAgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSA7CgoKCgoKCgoKCgpleHRlcm4gdm9pZCAqcmVh
bGxvYyAodm9pZCAqX19wdHIsIHNpemVfdCBfX3NpemUpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsKCmV4dGVybiB2b2lkIGZyZWUgKHZvaWQg
Kl9fcHRyKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIGNmcmVlICh2b2lkICpfX3B0cikgdGhy
b3cgKCk7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAxIDMgNAojIDE5ICIvdXNyL2lu
Y2x1ZGUvYWxsb2NhLmgiIDMgNAojZGVmaW5lIF9BTExPQ0FfSCAxCgoKCiNkZWZpbmUgX19uZWVk
X3NpemVfdCAKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvNC45LjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAyMzQgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIv
Z2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQK
I3VuZGVmIF9fbmVlZF9zaXplX3QKIyA0MDggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVl
ZF9OVUxMCiMgMjUgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzIDQKCmV4dGVybiAiQyIgewoK
CiN1bmRlZiBhbGxvY2EKCgpleHRlcm4gdm9pZCAqYWxsb2NhIChzaXplX3QgX19zaXplKSB0aHJv
dyAoKTsKCgojZGVmaW5lIGFsbG9jYShzaXplKSBfX2J1aWx0aW5fYWxsb2NhIChzaXplKQoKCn0K
IyA0OTMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKCgoKCgpleHRlcm4gdm9pZCAqdmFs
bG9jIChzaXplX3QgX19zaXplKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykp
IDsKCgoKCmV4dGVybiBpbnQgcG9zaXhfbWVtYWxpZ24gKHZvaWQgKipfX21lbXB0ciwgc2l6ZV90
IF9fYWxpZ25tZW50LCBzaXplX3QgX19zaXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX25vbm51bGxfXyAoMSkpKSA7CgoKCgpleHRlcm4gdm9pZCAqYWxpZ25lZF9hbGxvYyAoc2l6
ZV90IF9fYWxpZ25tZW50LCBzaXplX3QgX19zaXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX21hbGxvY19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fYWxsb2Nfc2l6ZV9fICgyKSkpIDsK
CgoKCmV4dGVybiB2b2lkIGFib3J0ICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3JldHVybl9fKSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAodm9pZCkp
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCmV4dGVybiAi
QysrIiBpbnQgYXRfcXVpY2tfZXhpdCAodm9pZCAoKl9fZnVuYykgKHZvaWQpKQogICAgIHRocm93
ICgpIF9fYXNtICgiYXRfcXVpY2tfZXhpdCIpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo
MSkpKTsKCgoKCgoKCgoKZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9f
c3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgoKZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9f
c3RhdHVzKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoKZXh0
ZXJuIHZvaWQgcXVpY2tfZXhpdCAoaW50IF9fc3RhdHVzKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3JldHVybl9fKSk7CgoKCgoKCgpleHRlcm4gdm9pZCBfRXhpdCAoaW50IF9fc3RhdHVz
KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoKCmV4dGVybiBj
aGFyICpnZXRlbnYgKGNvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKCgpleHRlcm4gY2hhciAqc2VjdXJlX2dldGVudiAoY29u
c3QgY2hhciAqX19uYW1lKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSkpKSA7CgoKCgoKCmV4dGVybiBpbnQgcHV0ZW52IChjaGFyICpfX3N0cmluZykgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4dGVybiBpbnQgc2V0
ZW52IChjb25zdCBjaGFyICpfX25hbWUsIGNvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX3JlcGxh
Y2UpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwoKCmV4
dGVybiBpbnQgdW5zZXRlbnYgKGNvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCgpleHRlcm4gaW50IGNsZWFyZW52ICh2b2lk
KSB0aHJvdyAoKTsKIyA2MDYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBjaGFy
ICpta3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25v
bm51bGxfXyAoMSkpKTsKIyA2MjAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBp
bnQgbWtzdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f
ICgxKSkpIDsKIyA2MzAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBpbnQgbWtz
dGVtcDY0IChjaGFyICpfX3RlbXBsYXRlKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEp
KSkgOwojIDY0MiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBta3N0ZW1w
cyAoY2hhciAqX190ZW1wbGF0ZSwgaW50IF9fc3VmZml4bGVuKSBfX2F0dHJpYnV0ZV9fICgoX19u
b25udWxsX18gKDEpKSkgOwojIDY1MiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJu
IGludCBta3N0ZW1wczY0IChjaGFyICpfX3RlbXBsYXRlLCBpbnQgX19zdWZmaXhsZW4pCiAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKIyA2NjMgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMyA0CmV4dGVybiBjaGFyICpta2R0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwojIDY3NCAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBta29zdGVtcCAoY2hhciAqX190ZW1wbGF0ZSwg
aW50IF9fZmxhZ3MpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CiMgNjg0ICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gaW50IG1rb3N0ZW1wNjQgKGNoYXIgKl9f
dGVtcGxhdGUsIGludCBfX2ZsYWdzKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkg
OwojIDY5NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBta29zdGVtcHMg
KGNoYXIgKl9fdGVtcGxhdGUsIGludCBfX3N1ZmZpeGxlbiwgaW50IF9fZmxhZ3MpCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKIyA3MDYgIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMyA0CmV4dGVybiBpbnQgbWtvc3RlbXBzNjQgKGNoYXIgKl9fdGVtcGxhdGUsIGludCBf
X3N1ZmZpeGxlbiwgaW50IF9fZmxhZ3MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f
ICgxKSkpIDsKCgoKCgoKCgoKZXh0ZXJuIGludCBzeXN0ZW0gKGNvbnN0IGNoYXIgKl9fY29tbWFu
ZCkgOwoKCgoKCgpleHRlcm4gY2hhciAqY2Fub25pY2FsaXplX2ZpbGVfbmFtZSAoY29uc3QgY2hh
ciAqX19uYW1lKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp
KSA7CiMgNzM0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gY2hhciAqcmVhbHBh
dGggKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAogICAgICAgICBjaGFyICpfX3Jlc3Ry
aWN0IF9fcmVzb2x2ZWQpIHRocm93ICgpIDsKCgoKCgojZGVmaW5lIF9fQ09NUEFSX0ZOX1QgCnR5
cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsK
Cgp0eXBlZGVmIF9fY29tcGFyX2ZuX3QgY29tcGFyaXNvbl9mbl90OwoKCgp0eXBlZGVmIGludCAo
Kl9fY29tcGFyX2RfZm5fdCkgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCB2b2lkICopOwoK
CgoKCmV4dGVybiB2b2lkICpic2VhcmNoIChjb25zdCB2b2lkICpfX2tleSwgY29uc3Qgdm9pZCAq
X19iYXNlLAogICAgICAgIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLCBfX2NvbXBhcl9m
bl90IF9fY29tcGFyKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMiwgNSkp
KSA7CgoKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3N0ZGxpYi1i
c2VhcmNoLmgiIDEgMyA0CiMgMTkgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2Jp
dHMvc3RkbGliLWJzZWFyY2guaCIgMyA0CmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgo
X19nbnVfaW5saW5lX18pKSB2b2lkICoKYnNlYXJjaCAoY29uc3Qgdm9pZCAqX19rZXksIGNvbnN0
IHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCiAgX19jb21wYXJf
Zm5fdCBfX2NvbXBhcikKewogIHNpemVfdCBfX2wsIF9fdSwgX19pZHg7CiAgY29uc3Qgdm9pZCAq
X19wOwogIGludCBfX2NvbXBhcmlzb247CgogIF9fbCA9IDA7CiAgX191ID0gX19ubWVtYjsKICB3
aGlsZSAoX19sIDwgX191KQogICAgewogICAgICBfX2lkeCA9IChfX2wgKyBfX3UpIC8gMjsKICAg
ICAgX19wID0gKHZvaWQgKikgKCgoY29uc3QgY2hhciAqKSBfX2Jhc2UpICsgKF9faWR4ICogX19z
aXplKSk7CiAgICAgIF9fY29tcGFyaXNvbiA9ICgqX19jb21wYXIpIChfX2tleSwgX19wKTsKICAg
ICAgaWYgKF9fY29tcGFyaXNvbiA8IDApCiBfX3UgPSBfX2lkeDsKICAgICAgZWxzZSBpZiAoX19j
b21wYXJpc29uID4gMCkKIF9fbCA9IF9faWR4ICsgMTsKICAgICAgZWxzZQogcmV0dXJuICh2b2lk
ICopIF9fcDsKICAgIH0KCiAgcmV0dXJuIF9fbnVsbDsKfQojIDc2MSAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAyIDMgNAoKCgoKZXh0ZXJuIHZvaWQgcXNvcnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90
IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCiAgICAgX19jb21wYXJfZm5fdCBfX2NvbXBhcikgX19h
dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCA0KSkpOwoKZXh0ZXJuIHZvaWQgcXNvcnRfciAo
dm9pZCAqX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKICAgICAgIF9fY29t
cGFyX2RfZm5fdCBfX2NvbXBhciwgdm9pZCAqX19hcmcpCiAgX19hdHRyaWJ1dGVfXyAoKF9fbm9u
bnVsbF9fICgxLCA0KSkpOwoKCgoKZXh0ZXJuIGludCBhYnMgKGludCBfX3gpIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKSA7CmV4dGVybiBsb25nIGludCBsYWJzIChsb25nIGlu
dCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKSA7CgoKCl9fZXh0ZW5z
aW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxhYnMgKGxvbmcgbG9uZyBpbnQgX194KQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKSA7CgoKCgoKCgpleHRlcm4gZGl2
X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9fZGVub20pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpIDsKZXh0ZXJuIGxkaXZfdCBsZGl2IChsb25nIGludCBfX251bWVy
LCBsb25nIGludCBfX2Rlbm9tKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKSA7CgoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsbGRpdl90IGxsZGl2IChsb25nIGxvbmcg
aW50IF9fbnVtZXIsCiAgICAgICAgbG9uZyBsb25nIGludCBfX2Rlbm9tKQogICAgIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKSA7CgojIDgxMiAiL3Vzci9pbmNsdWRlL3N0ZGxp
Yi5oIiAzIDQKZXh0ZXJuIGNoYXIgKmVjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQs
IGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCkpKSA7CgoKCgpleHRlcm4g
Y2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0
IF9fZGVjcHQsCiAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0KSkpIDsKCgoKCmV4dGVybiBjaGFyICpnY3Z0IChkb3Vi
bGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikKICAgICB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMpKSkgOwoKCgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChs
b25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgIGludCAqX19yZXN0cmljdCBf
X2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX25vbm51bGxfXyAoMywgNCkpKSA7CmV4dGVybiBjaGFyICpxZmN2dCAobG9uZyBkb3Vi
bGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwg
aW50ICpfX3Jlc3RyaWN0IF9fc2lnbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19u
b25udWxsX18gKDMsIDQpKSkgOwpleHRlcm4gY2hhciAqcWdjdnQgKGxvbmcgZG91YmxlIF9fdmFs
dWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9ubnVsbF9fICgzKSkpIDsKCgoKCmV4dGVybiBpbnQgZWN2dF9yIChkb3VibGUgX192
YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICBpbnQgKl9f
cmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgIHNpemVfdCBfX2xl
bikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0LCA1KSkpOwpleHRl
cm4gaW50IGZjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3Ry
aWN0IF9fZGVjcHQsCiAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmlj
dCBfX2J1ZiwKICAgICBzaXplX3QgX19sZW4pIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25v
bm51bGxfXyAoMywgNCwgNSkpKTsKCmV4dGVybiBpbnQgcWVjdnRfciAobG9uZyBkb3VibGUgX192
YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpf
X3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9f
bGVuKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCwgNSkp
KTsKZXh0ZXJuIGludCBxZmN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQs
CiAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAog
ICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pCiAgICAgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0LCA1KSkpOwoKCgoKCgpleHRlcm4gaW50
IG1ibGVuIChjb25zdCBjaGFyICpfX3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBp
bnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAgIGNvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHdjdG9tYiAo
Y2hhciAqX19zLCB3Y2hhcl90IF9fd2NoYXIpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IG1i
c3Rvd2NzICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywKICAgY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKZXh0ZXJuIHNpemVfdCB3Y3N0b21icyAo
Y2hhciAqX19yZXN0cmljdCBfX3MsCiAgIGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2Nz
LCBzaXplX3QgX19uKQogICAgIHRocm93ICgpOwoKCgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAo
Y29uc3QgY2hhciAqX19yZXNwb25zZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs
bF9fICgxKSkpIDsKIyA4OTkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBpbnQg
Z2V0c3Vib3B0IChjaGFyICoqX19yZXN0cmljdCBfX29wdGlvbnAsCiAgICAgICAgY2hhciAqY29u
c3QgKl9fcmVzdHJpY3QgX190b2tlbnMsCiAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX192YWx1
ZXApCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyLCAzKSkp
IDsKCgoKCgpleHRlcm4gdm9pZCBzZXRrZXkgKGNvbnN0IGNoYXIgKl9fa2V5KSB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKCgpleHRlcm4gaW50IHBvc2l4
X29wZW5wdCAoaW50IF9fb2ZsYWcpIDsKCgoKCgoKCmV4dGVybiBpbnQgZ3JhbnRwdCAoaW50IF9f
ZmQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVubG9ja3B0IChpbnQgX19mZCkgdGhyb3cgKCk7
CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIHRocm93ICgpIDsKCgoKCgoKZXh0
ZXJuIGludCBwdHNuYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVu
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgpleHRl
cm4gaW50IGdldHB0ICh2b2lkKTsKCgoKCgoKZXh0ZXJuIGludCBnZXRsb2FkYXZnIChkb3VibGUg
X19sb2FkYXZnW10sIGludCBfX25lbGVtKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X25vbm51bGxfXyAoMSkpKTsKCgojIDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L2JpdHMvc3RkbGliLWZsb2F0LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9hcm0tbGludXgt
Z251ZWFiaWhmL2JpdHMvc3RkbGliLWZsb2F0LmgiIDMgNAoKZXh0ZXJuIF9faW5saW5lIF9fYXR0
cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGRvdWJsZQpfX2F0dHJpYnV0ZV9fICgoX19sZWFm
X18pKSBhdG9mIChjb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsKICByZXR1cm4gc3RydG9k
IChfX25wdHIsIChjaGFyICoqKSBfX251bGwpOwp9CgojIDk1NiAiL3Vzci9pbmNsdWRlL3N0ZGxp
Yi5oIiAyIDMgNAojIDk2NiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKI3VuZGVmIF9fbmVl
ZF9tYWxsb2NfYW5kX2NhbGxvYwoKfQojIDI2ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFs
bG9jLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaCIgMQojIDI4
ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaCIKI2RlZmluZSBXVEZfU3RkTGli
RXh0cmFzX2ggCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvY2hyb25vIiAxIDMKIyAzMCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9jaHJvbm8iIDMKI2RlZmluZSBfR0xJQkNY
WF9DSFJPTk8gMQoKICAgICAgIAojIDMzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Nocm9ubyIgMwoKCgoKCiMgMSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9yYXRpbyIgMSAzCiMg
MzAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvcmF0aW8iIDMKI2RlZmluZSBfR0xJQkNYWF9SQVRJTyAxCgogICAgICAgCiMgMzMgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvcmF0aW8i
IDMKCgoKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvdHlwZV90cmFpdHMiIDEgMwojIDMwICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3R5cGVfdHJhaXRzIiAzCiNkZWZpbmUg
X0dMSUJDWFhfVFlQRV9UUkFJVFMgMQoKICAgICAgIAojIDMzICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3R5cGVfdHJhaXRzIiAzCiMgNDIg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
dHlwZV90cmFpdHMiIDMKbmFtZXNwYWNlIHN0ZAp7CiAgdHlwZWRlZiBzaG9ydCB1bnNpZ25lZCBp
bnQgdWludF9sZWFzdDE2X3Q7CiAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9sZWFzdDMyX3Q7
Cn0KCgoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRl
ZmF1bHQiKSkpCnsKCiMgNjggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvdHlwZV90cmFpdHMiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAs
IF9UcCBfX3Y+CiAgICBzdHJ1Y3QgaW50ZWdyYWxfY29uc3RhbnQKICAgIHsKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBfVHAgdmFsdWUgPSBfX3Y7CiAgICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7
CiAgICAgIHR5cGVkZWYgaW50ZWdyYWxfY29uc3RhbnQ8X1RwLCBfX3Y+IHR5cGU7CiAgICAgIGNv
bnN0ZXhwciBvcGVyYXRvciB2YWx1ZV90eXBlKCkgY29uc3QgeyByZXR1cm4gdmFsdWU7IH0KCgoK
CgoKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgX1RwIF9fdj4KICAgIGNvbnN0ZXhw
ciBfVHAgaW50ZWdyYWxfY29uc3RhbnQ8X1RwLCBfX3Y+Ojp2YWx1ZTsKCgogIHR5cGVkZWYgaW50
ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgdHJ1ZT4gdHJ1ZV90eXBlOwoKCiAgdHlwZWRlZiBpbnRlZ3Jh
bF9jb25zdGFudDxib29sLCBmYWxzZT4gZmFsc2VfdHlwZTsKCgoKICB0ZW1wbGF0ZTxib29sLCB0
eXBlbmFtZSwgdHlwZW5hbWU+CiAgICBzdHJ1Y3QgY29uZGl0aW9uYWw7CgogIHRlbXBsYXRlPHR5
cGVuYW1lLi4uPgogICAgc3RydWN0IF9fb3JfOwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19v
cl88PgogICAgOiBwdWJsaWMgZmFsc2VfdHlwZQogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQjE+CiAgICBzdHJ1Y3QgX19vcl88X0IxPgogICAgOiBwdWJsaWMgX0IxCiAgICB7IH07Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9CMSwgdHlwZW5hbWUgX0IyPgogICAgc3RydWN0IF9fb3JfPF9C
MSwgX0IyPgogICAgOiBwdWJsaWMgY29uZGl0aW9uYWw8X0IxOjp2YWx1ZSwgX0IxLCBfQjI+Ojp0
eXBlCiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9CMSwgdHlwZW5hbWUgX0IyLCB0eXBl
bmFtZSBfQjMsIHR5cGVuYW1lLi4uIF9Cbj4KICAgIHN0cnVjdCBfX29yXzxfQjEsIF9CMiwgX0Iz
LCBfQm4uLi4+CiAgICA6IHB1YmxpYyBjb25kaXRpb25hbDxfQjE6OnZhbHVlLCBfQjEsIF9fb3Jf
PF9CMiwgX0IzLCBfQm4uLi4+Pjo6dHlwZQogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
Lj4KICAgIHN0cnVjdCBfX2FuZF87CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2FuZF88Pgog
ICAgOiBwdWJsaWMgdHJ1ZV90eXBlCiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9CMT4K
ICAgIHN0cnVjdCBfX2FuZF88X0IxPgogICAgOiBwdWJsaWMgX0IxCiAgICB7IH07CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9CMSwgdHlwZW5hbWUgX0IyPgogICAgc3RydWN0IF9fYW5kXzxfQjEsIF9C
Mj4KICAgIDogcHVibGljIGNvbmRpdGlvbmFsPF9CMTo6dmFsdWUsIF9CMiwgX0IxPjo6dHlwZQog
ICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQjEsIHR5cGVuYW1lIF9CMiwgdHlwZW5hbWUg
X0IzLCB0eXBlbmFtZS4uLiBfQm4+CiAgICBzdHJ1Y3QgX19hbmRfPF9CMSwgX0IyLCBfQjMsIF9C
bi4uLj4KICAgIDogcHVibGljIGNvbmRpdGlvbmFsPF9CMTo6dmFsdWUsIF9fYW5kXzxfQjIsIF9C
MywgX0JuLi4uPiwgX0IxPjo6dHlwZQogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUHA+
CiAgICBzdHJ1Y3QgX19ub3RfCiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCAh
X1BwOjp2YWx1ZT4KICAgIHsgfTsKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBz
dHJ1Y3QgX19zdWNjZXNzX3R5cGUKICAgIHsgdHlwZWRlZiBfVHAgdHlwZTsgfTsKCiAgc3RydWN0
IF9fZmFpbHVyZV90eXBlCiAgeyB9OwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lPgogICAgc3RydWN0
IHJlbW92ZV9jdjsKCiAgdGVtcGxhdGU8dHlwZW5hbWU+CiAgICBzdHJ1Y3QgX19pc192b2lkX2hl
bHBlcgogICAgOiBwdWJsaWMgZmFsc2VfdHlwZSB7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVj
dCBfX2lzX3ZvaWRfaGVscGVyPHZvaWQ+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX3ZvaWQKICAgIDogcHVibGljIF9f
aXNfdm9pZF9oZWxwZXI8dHlwZW5hbWUgcmVtb3ZlX2N2PF9UcD46OnR5cGU+Ojp0eXBlCiAgICB7
IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lPgogICAgc3RydWN0IF9faXNfaW50ZWdyYWxfaGVscGVy
CiAgICA6IHB1YmxpYyBmYWxzZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9f
aXNfaW50ZWdyYWxfaGVscGVyPGJvb2w+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKICB0
ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ3JhbF9oZWxwZXI8Y2hhcj4KICAgIDogcHVi
bGljIHRydWVfdHlwZSB7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVncmFs
X2hlbHBlcjxzaWduZWQgY2hhcj4KICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CgogIHRlbXBs
YXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVncmFsX2hlbHBlcjx1bnNpZ25lZCBjaGFyPgogICAg
OiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2lu
dGVncmFsX2hlbHBlcjx3Y2hhcl90PgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKCgogIHRl
bXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVncmFsX2hlbHBlcjxjaGFyMTZfdD4KICAgIDog
cHVibGljIHRydWVfdHlwZSB7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVn
cmFsX2hlbHBlcjxjaGFyMzJfdD4KICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CgogIHRlbXBs
YXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVncmFsX2hlbHBlcjxzaG9ydD4KICAgIDogcHVibGlj
IHRydWVfdHlwZSB7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVncmFsX2hl
bHBlcjx1bnNpZ25lZCBzaG9ydD4KICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CgogIHRlbXBs
YXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVncmFsX2hlbHBlcjxpbnQ+CiAgICA6IHB1YmxpYyB0
cnVlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ3JhbF9oZWxw
ZXI8dW5zaWduZWQgaW50PgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8
PgogICAgc3RydWN0IF9faXNfaW50ZWdyYWxfaGVscGVyPGxvbmc+CiAgICA6IHB1YmxpYyB0cnVl
X3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ3JhbF9oZWxwZXI8
dW5zaWduZWQgbG9uZz4KICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CgogIHRlbXBsYXRlPD4K
ICAgIHN0cnVjdCBfX2lzX2ludGVncmFsX2hlbHBlcjxsb25nIGxvbmc+CiAgICA6IHB1YmxpYyB0
cnVlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ3JhbF9oZWxw
ZXI8dW5zaWduZWQgbG9uZyBsb25nPgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKIyAyNTYg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
dHlwZV90cmFpdHMiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNfaW50
ZWdyYWwKICAgIDogcHVibGljIF9faXNfaW50ZWdyYWxfaGVscGVyPHR5cGVuYW1lIHJlbW92ZV9j
djxfVHA+Ojp0eXBlPjo6dHlwZQogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZT4KICAgIHN0
cnVjdCBfX2lzX2Zsb2F0aW5nX3BvaW50X2hlbHBlcgogICAgOiBwdWJsaWMgZmFsc2VfdHlwZSB7
IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2Zsb2F0aW5nX3BvaW50X2hlbHBlcjxm
bG9hdD4KICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVj
dCBfX2lzX2Zsb2F0aW5nX3BvaW50X2hlbHBlcjxkb3VibGU+CiAgICA6IHB1YmxpYyB0cnVlX3R5
cGUgeyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19mbG9hdGluZ19wb2ludF9oZWxw
ZXI8bG9uZyBkb3VibGU+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwojIDI4NCAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy90eXBlX3Ry
YWl0cyIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc19mbG9hdGluZ19w
b2ludAogICAgOiBwdWJsaWMgX19pc19mbG9hdGluZ19wb2ludF9oZWxwZXI8dHlwZW5hbWUgcmVt
b3ZlX2N2PF9UcD46OnR5cGU+Ojp0eXBlCiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZT4K
ICAgIHN0cnVjdCBpc19hcnJheQogICAgOiBwdWJsaWMgZmFsc2VfdHlwZSB7IH07CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcCwgc3RkOjpzaXplX3QgX1NpemU+CiAgICBzdHJ1Y3QgaXNfYXJyYXk8
X1RwW19TaXplXT4KICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIHN0cnVjdCBpc19hcnJheTxfVHBbXT4KICAgIDogcHVibGljIHRydWVfdHlw
ZSB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lPgogICAgc3RydWN0IF9faXNfcG9pbnRlcl9oZWxw
ZXIKICAgIDogcHVibGljIGZhbHNlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICBzdHJ1Y3QgX19pc19wb2ludGVyX2hlbHBlcjxfVHAqPgogICAgOiBwdWJsaWMgdHJ1ZV90
eXBlIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc19wb2ludGVy
CiAgICA6IHB1YmxpYyBfX2lzX3BvaW50ZXJfaGVscGVyPHR5cGVuYW1lIHJlbW92ZV9jdjxfVHA+
Ojp0eXBlPjo6dHlwZQogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWU+CiAgICBzdHJ1Y3Qg
aXNfbHZhbHVlX3JlZmVyZW5jZQogICAgOiBwdWJsaWMgZmFsc2VfdHlwZSB7IH07CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc19sdmFsdWVfcmVmZXJlbmNlPF9UcCY+CiAg
ICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWU+CiAgICBzdHJ1
Y3QgaXNfcnZhbHVlX3JlZmVyZW5jZQogICAgOiBwdWJsaWMgZmFsc2VfdHlwZSB7IH07CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc19ydmFsdWVfcmVmZXJlbmNlPF9UcCYm
PgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWU+CiAgICBz
dHJ1Y3QgaXNfZnVuY3Rpb247CgogIHRlbXBsYXRlPHR5cGVuYW1lPgogICAgc3RydWN0IF9faXNf
bWVtYmVyX29iamVjdF9wb2ludGVyX2hlbHBlcgogICAgOiBwdWJsaWMgZmFsc2VfdHlwZSB7IH07
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NwPgogICAgc3RydWN0IF9faXNf
bWVtYmVyX29iamVjdF9wb2ludGVyX2hlbHBlcjxfVHAgX0NwOjoqPgogICAgOiBwdWJsaWMgaW50
ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgIWlzX2Z1bmN0aW9uPF9UcD46OnZhbHVlPiB7IH07CgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNfbWVtYmVyX29iamVjdF9wb2ludGVy
CiAgICA6IHB1YmxpYyBfX2lzX21lbWJlcl9vYmplY3RfcG9pbnRlcl9oZWxwZXI8CiAgICB0eXBl
bmFtZSByZW1vdmVfY3Y8X1RwPjo6dHlwZT46OnR5cGUKICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWU+CiAgICBzdHJ1Y3QgX19pc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl9oZWxwZXIKICAg
IDogcHVibGljIGZhbHNlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVu
YW1lIF9DcD4KICAgIHN0cnVjdCBfX2lzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyX2hlbHBlcjxf
VHAgX0NwOjoqPgogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgaXNfZnVuY3Rp
b248X1RwPjo6dmFsdWU+IHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVj
dCBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcgogICAgOiBwdWJsaWMgX19pc19tZW1iZXJfZnVu
Y3Rpb25fcG9pbnRlcl9oZWxwZXI8CiAgICB0eXBlbmFtZSByZW1vdmVfY3Y8X1RwPjo6dHlwZT46
OnR5cGUKICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc19l
bnVtCiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCBfX2lzX2VudW0oX1RwKT4K
ICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc191bmlvbgog
ICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgX19pc191bmlvbihfVHApPgogICAg
eyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX2NsYXNzCiAgICA6
IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCBfX2lzX2NsYXNzKF9UcCk+CiAgICB7IH07
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZT4KICAgIHN0cnVjdCBpc19mdW5jdGlvbgogICAgOiBwdWJs
aWMgZmFsc2VfdHlwZSB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lLi4u
IF9BcmdUeXBlcz4KICAgIHN0cnVjdCBpc19mdW5jdGlvbjxfUmVzKF9BcmdUeXBlcy4uLik+CiAg
ICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBl
bmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgaXNfZnVuY3Rpb248X1JlcyhfQXJnVHlwZXMu
Li4pICY+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
UmVzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgaXNfZnVuY3Rpb248X1Jlcyhf
QXJnVHlwZXMuLi4pICYmPgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3RydWN0IGlzX2Z1bmN0
aW9uPF9SZXMoX0FyZ1R5cGVzLi4uLi4uKT4KICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAgIHN0cnVj
dCBpc19mdW5jdGlvbjxfUmVzKF9BcmdUeXBlcy4uLi4uLikgJj4KICAgIDogcHVibGljIHRydWVf
dHlwZSB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lLi4uIF9BcmdUeXBl
cz4KICAgIHN0cnVjdCBpc19mdW5jdGlvbjxfUmVzKF9BcmdUeXBlcy4uLi4uLikgJiY+CiAgICA6
IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFt
ZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgaXNfZnVuY3Rpb248X1JlcyhfQXJnVHlwZXMuLi4p
IGNvbnN0PgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JlcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3RydWN0IGlzX2Z1bmN0aW9uPF9SZXMo
X0FyZ1R5cGVzLi4uKSBjb25zdCAmPgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3RydWN0IGlz
X2Z1bmN0aW9uPF9SZXMoX0FyZ1R5cGVzLi4uKSBjb25zdCAmJj4KICAgIDogcHVibGljIHRydWVf
dHlwZSB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lLi4uIF9BcmdUeXBl
cz4KICAgIHN0cnVjdCBpc19mdW5jdGlvbjxfUmVzKF9BcmdUeXBlcy4uLi4uLikgY29uc3Q+CiAg
ICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBl
bmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgaXNfZnVuY3Rpb248X1JlcyhfQXJnVHlwZXMu
Li4uLi4pIGNvbnN0ICY+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgaXNfZnVuY3Rp
b248X1JlcyhfQXJnVHlwZXMuLi4uLi4pIGNvbnN0ICYmPgogICAgOiBwdWJsaWMgdHJ1ZV90eXBl
IHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgog
ICAgc3RydWN0IGlzX2Z1bmN0aW9uPF9SZXMoX0FyZ1R5cGVzLi4uKSB2b2xhdGlsZT4KICAgIDog
cHVibGljIHRydWVfdHlwZSB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1l
Li4uIF9BcmdUeXBlcz4KICAgIHN0cnVjdCBpc19mdW5jdGlvbjxfUmVzKF9BcmdUeXBlcy4uLikg
dm9sYXRpbGUgJj4KICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9SZXMsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAgIHN0cnVjdCBpc19mdW5jdGlvbjxf
UmVzKF9BcmdUeXBlcy4uLikgdm9sYXRpbGUgJiY+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBz
dHJ1Y3QgaXNfZnVuY3Rpb248X1JlcyhfQXJnVHlwZXMuLi4uLi4pIHZvbGF0aWxlPgogICAgOiBw
dWJsaWMgdHJ1ZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUu
Li4gX0FyZ1R5cGVzPgogICAgc3RydWN0IGlzX2Z1bmN0aW9uPF9SZXMoX0FyZ1R5cGVzLi4uLi4u
KSB2b2xhdGlsZSAmPgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3RydWN0IGlzX2Z1bmN0aW9u
PF9SZXMoX0FyZ1R5cGVzLi4uLi4uKSB2b2xhdGlsZSAmJj4KICAgIDogcHVibGljIHRydWVfdHlw
ZSB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4K
ICAgIHN0cnVjdCBpc19mdW5jdGlvbjxfUmVzKF9BcmdUeXBlcy4uLikgY29uc3Qgdm9sYXRpbGU+
CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0
eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgaXNfZnVuY3Rpb248X1JlcyhfQXJnVHlw
ZXMuLi4pIGNvbnN0IHZvbGF0aWxlICY+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3Qg
aXNfZnVuY3Rpb248X1JlcyhfQXJnVHlwZXMuLi4pIGNvbnN0IHZvbGF0aWxlICYmPgogICAgOiBw
dWJsaWMgdHJ1ZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUu
Li4gX0FyZ1R5cGVzPgogICAgc3RydWN0IGlzX2Z1bmN0aW9uPF9SZXMoX0FyZ1R5cGVzLi4uLi4u
KSBjb25zdCB2b2xhdGlsZT4KICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAgIHN0cnVjdCBpc19mdW5j
dGlvbjxfUmVzKF9BcmdUeXBlcy4uLi4uLikgY29uc3Qgdm9sYXRpbGUgJj4KICAgIDogcHVibGlj
IHRydWVfdHlwZSB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lLi4uIF9B
cmdUeXBlcz4KICAgIHN0cnVjdCBpc19mdW5jdGlvbjxfUmVzKF9BcmdUeXBlcy4uLi4uLikgY29u
c3Qgdm9sYXRpbGUgJiY+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKI2RlZmluZSBfX2Nw
cF9saWJfaXNfbnVsbF9wb2ludGVyIDIwMTMwOQoKICB0ZW1wbGF0ZTx0eXBlbmFtZT4KICAgIHN0
cnVjdCBfX2lzX251bGxfcG9pbnRlcl9oZWxwZXIKICAgIDogcHVibGljIGZhbHNlX3R5cGUgeyB9
OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19udWxsX3BvaW50ZXJfaGVscGVyPHN0ZDo6
bnVsbHB0cl90PgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIHN0cnVjdCBpc19udWxsX3BvaW50ZXIKICAgIDogcHVibGljIF9faXNfbnVs
bF9wb2ludGVyX2hlbHBlcjx0eXBlbmFtZSByZW1vdmVfY3Y8X1RwPjo6dHlwZT46OnR5cGUKICAg
IHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX251bGxwdHJf
dAogICAgOiBwdWJsaWMgaXNfbnVsbF9wb2ludGVyPF9UcD4KICAgIHsgfTsKCgoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX3JlZmVyZW5jZQogICAgOiBwdWJsaWMgX19v
cl88aXNfbHZhbHVlX3JlZmVyZW5jZTxfVHA+LAogICAgICAgICAgICAgICAgICAgaXNfcnZhbHVl
X3JlZmVyZW5jZTxfVHA+Pjo6dHlwZQogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgc3RydWN0IGlzX2FyaXRobWV0aWMKICAgIDogcHVibGljIF9fb3JfPGlzX2ludGVncmFs
PF9UcD4sIGlzX2Zsb2F0aW5nX3BvaW50PF9UcD4+Ojp0eXBlCiAgICB7IH07CgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNfZnVuZGFtZW50YWwKICAgIDogcHVibGljIF9f
b3JfPGlzX2FyaXRobWV0aWM8X1RwPiwgaXNfdm9pZDxfVHA+LAogICAgIGlzX251bGxfcG9pbnRl
cjxfVHA+Pjo6dHlwZQogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3Ry
dWN0IGlzX29iamVjdAogICAgOiBwdWJsaWMgX19ub3RfPF9fb3JfPGlzX2Z1bmN0aW9uPF9UcD4s
IGlzX3JlZmVyZW5jZTxfVHA+LAogICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3ZvaWQ8X1Rw
Pj4+Ojp0eXBlCiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lPgogICAgc3RydWN0IGlzX21l
bWJlcl9wb2ludGVyOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX3Nj
YWxhcgogICAgOiBwdWJsaWMgX19vcl88aXNfYXJpdGhtZXRpYzxfVHA+LCBpc19lbnVtPF9UcD4s
IGlzX3BvaW50ZXI8X1RwPiwKICAgICAgICAgICAgICAgICAgIGlzX21lbWJlcl9wb2ludGVyPF9U
cD4sIGlzX251bGxfcG9pbnRlcjxfVHA+Pjo6dHlwZQogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX2NvbXBvdW5kCiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9j
b25zdGFudDxib29sLCAhaXNfZnVuZGFtZW50YWw8X1RwPjo6dmFsdWU+IHsgfTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfbWVtYmVyX3BvaW50ZXJfaGVscGVyCiAg
ICA6IHB1YmxpYyBmYWxzZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBl
bmFtZSBfQ3A+CiAgICBzdHJ1Y3QgX19pc19tZW1iZXJfcG9pbnRlcl9oZWxwZXI8X1RwIF9DcDo6
Kj4KICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICBzdHJ1Y3QgaXNfbWVtYmVyX3BvaW50ZXIKICAgIDogcHVibGljIF9faXNfbWVtYmVyX3Bv
aW50ZXJfaGVscGVyPHR5cGVuYW1lIHJlbW92ZV9jdjxfVHA+Ojp0eXBlPjo6dHlwZQogICAgeyB9
OwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX3JlZmVyZW5jZWFi
bGUKICAgIDogcHVibGljIF9fb3JfPGlzX29iamVjdDxfVHA+LCBpc19yZWZlcmVuY2U8X1RwPj46
OnR5cGUKICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0Fy
Z3M+CiAgICBzdHJ1Y3QgX19pc19yZWZlcmVuY2VhYmxlPF9SZXMoX0FyZ3MuLi4pPgogICAgOiBw
dWJsaWMgdHJ1ZV90eXBlCiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVu
YW1lLi4uIF9BcmdzPgogICAgc3RydWN0IF9faXNfcmVmZXJlbmNlYWJsZTxfUmVzKF9BcmdzLi4u
Li4uKT4KICAgIDogcHVibGljIHRydWVfdHlwZQogICAgeyB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZT4KICAgIHN0cnVjdCBpc19jb25zdAogICAgOiBwdWJsaWMgZmFsc2VfdHlwZSB7IH07Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc19jb25zdDxfVHAgY29uc3Q+CiAg
ICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWU+CiAgICBzdHJ1
Y3QgaXNfdm9sYXRpbGUKICAgIDogcHVibGljIGZhbHNlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNfdm9sYXRpbGU8X1RwIHZvbGF0aWxlPgogICAgOiBw
dWJsaWMgdHJ1ZV90eXBlIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVj
dCBpc190cml2aWFsCiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCBfX2lzX3Ry
aXZpYWwoX1RwKT4KICAgIHsgfTsKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3Ry
dWN0IGlzX3N0YW5kYXJkX2xheW91dAogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9v
bCwgX19pc19zdGFuZGFyZF9sYXlvdXQoX1RwKT4KICAgIHsgfTsKCgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNfcG9kCiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFu
dDxib29sLCBfX2lzX3BvZChfVHApPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgc3RydWN0IGlzX2xpdGVyYWxfdHlwZQogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3Rh
bnQ8Ym9vbCwgX19pc19saXRlcmFsX3R5cGUoX1RwKT4KICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc19lbXB0eQogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29u
c3RhbnQ8Ym9vbCwgX19pc19lbXB0eShfVHApPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgc3RydWN0IGlzX3BvbHltb3JwaGljCiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9j
b25zdGFudDxib29sLCBfX2lzX3BvbHltb3JwaGljKF9UcCk+CiAgICB7IH07CiMgNjUyICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3R5cGVf
dHJhaXRzIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX2Fic3RyYWN0
CiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCBfX2lzX2Fic3RyYWN0KF9UcCk+
CiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwKICAgIGJvb2wgPSBpc19hcml0aG1l
dGljPF9UcD46OnZhbHVlPgogICAgc3RydWN0IF9faXNfc2lnbmVkX2hlbHBlcgogICAgOiBwdWJs
aWMgZmFsc2VfdHlwZSB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBf
X2lzX3NpZ25lZF9oZWxwZXI8X1RwLCB0cnVlPgogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3Rh
bnQ8Ym9vbCwgX1RwKC0xKSA8IF9UcCgwKT4KICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4KICAgIHN0cnVjdCBpc19zaWduZWQKICAgIDogcHVibGljIF9faXNfc2lnbmVkX2hlbHBl
cjxfVHA+Ojp0eXBlCiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1
Y3QgaXNfdW5zaWduZWQKICAgIDogcHVibGljIF9fYW5kXzxpc19hcml0aG1ldGljPF9UcD4sIF9f
bm90Xzxpc19zaWduZWQ8X1RwPj4+Ojp0eXBlCiAgICB7IH07CgoKCgogIHRlbXBsYXRlPHR5cGVu
YW1lPgogICAgc3RydWN0IGFkZF9ydmFsdWVfcmVmZXJlbmNlOwoKCgoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPgogICAgdHlwZW5hbWUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8X1RwPjo6dHlwZSBk
ZWNsdmFsKCkgbm9leGNlcHQ7CgogIHRlbXBsYXRlPHR5cGVuYW1lLCB1bnNpZ25lZCA9IDA+CiAg
ICBzdHJ1Y3QgZXh0ZW50OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZT4KICAgIHN0cnVjdCByZW1vdmVf
YWxsX2V4dGVudHM7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX2Fy
cmF5X2tub3duX2JvdW5kcwogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgKGV4
dGVudDxfVHA+Ojp2YWx1ZSA+IDApPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICBzdHJ1Y3QgX19pc19hcnJheV91bmtub3duX2JvdW5kcwogICAgOiBwdWJsaWMgX19hbmRf
PGlzX2FycmF5PF9UcD4sIF9fbm90XzxleHRlbnQ8X1RwPj4+Ojp0eXBlCiAgICB7IH07CgoKCgoK
CiAgc3RydWN0IF9fZG9faXNfZGVzdHJ1Y3RpYmxlX2ltcGwKICB7CiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHAsIHR5cGVuYW1lID0gZGVjbHR5cGUoZGVjbHZhbDxfVHAmPigpLn5fVHAoKSk+CiAg
ICAgIHN0YXRpYyB0cnVlX3R5cGUgX190ZXN0KGludCk7CgogICAgdGVtcGxhdGU8dHlwZW5hbWU+
CiAgICAgIHN0YXRpYyBmYWxzZV90eXBlIF9fdGVzdCguLi4pOwogIH07CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX2Rlc3RydWN0aWJsZV9pbXBsCiAgICA6IHB1Ymxp
YyBfX2RvX2lzX2Rlc3RydWN0aWJsZV9pbXBsCiAgICB7CiAgICAgIHR5cGVkZWYgZGVjbHR5cGUo
X190ZXN0PF9UcD4oMCkpIHR5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsCiAg
ICAgICAgICAgYm9vbCA9IF9fb3JfPGlzX3ZvaWQ8X1RwPiwKICAgICAgICAgICAgICAgICAgICAg
ICAgX19pc19hcnJheV91bmtub3duX2JvdW5kczxfVHA+LAogICAgICAgICAgICAgICAgICAgICAg
ICBpc19mdW5jdGlvbjxfVHA+Pjo6dmFsdWUsCiAgICAgICAgICAgYm9vbCA9IF9fb3JfPGlzX3Jl
ZmVyZW5jZTxfVHA+LCBpc19zY2FsYXI8X1RwPj46OnZhbHVlPgogICAgc3RydWN0IF9faXNfZGVz
dHJ1Y3RpYmxlX3NhZmU7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lz
X2Rlc3RydWN0aWJsZV9zYWZlPF9UcCwgZmFsc2UsIGZhbHNlPgogICAgOiBwdWJsaWMgX19pc19k
ZXN0cnVjdGlibGVfaW1wbDx0eXBlbmFtZQogICAgICAgICAgICAgICByZW1vdmVfYWxsX2V4dGVu
dHM8X1RwPjo6dHlwZT46OnR5cGUKICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgc3RydWN0IF9faXNfZGVzdHJ1Y3RpYmxlX3NhZmU8X1RwLCB0cnVlLCBmYWxzZT4KICAgIDog
cHVibGljIGZhbHNlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1
Y3QgX19pc19kZXN0cnVjdGlibGVfc2FmZTxfVHAsIGZhbHNlLCB0cnVlPgogICAgOiBwdWJsaWMg
dHJ1ZV90eXBlIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc19k
ZXN0cnVjdGlibGUKICAgIDogcHVibGljIF9faXNfZGVzdHJ1Y3RpYmxlX3NhZmU8X1RwPjo6dHlw
ZQogICAgeyB9OwoKCgoKCiAgc3RydWN0IF9fZG9faXNfbnRfZGVzdHJ1Y3RpYmxlX2ltcGwKICB7
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICAgIHN0YXRpYyBpbnRlZ3JhbF9jb25zdGFu
dDxib29sLCBub2V4Y2VwdChkZWNsdmFsPF9UcCY+KCkufl9UcCgpKT4KICAgICAgICBfX3Rlc3Qo
aW50KTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4KICAgICAgc3RhdGljIGZhbHNlX3R5cGUgX190
ZXN0KC4uLik7CiAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNf
bnRfZGVzdHJ1Y3RpYmxlX2ltcGwKICAgIDogcHVibGljIF9fZG9faXNfbnRfZGVzdHJ1Y3RpYmxl
X2ltcGwKICAgIHsKICAgICAgdHlwZWRlZiBkZWNsdHlwZShfX3Rlc3Q8X1RwPigwKSkgdHlwZTsK
ICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwKICAgICAgICAgICBib29sID0gX19vcl88
aXNfdm9pZDxfVHA+LAogICAgICAgICAgICAgICAgICAgICAgICBfX2lzX2FycmF5X3Vua25vd25f
Ym91bmRzPF9UcD4sCiAgICAgICAgICAgICAgICAgICAgICAgIGlzX2Z1bmN0aW9uPF9UcD4+Ojp2
YWx1ZSwKICAgICAgICAgICBib29sID0gX19vcl88aXNfcmVmZXJlbmNlPF9UcD4sIGlzX3NjYWxh
cjxfVHA+Pjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19pc19udF9kZXN0cnVjdGlibGVfc2FmZTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfbnRfZGVzdHJ1Y3RpYmxlX3Nh
ZmU8X1RwLCBmYWxzZSwgZmFsc2U+CiAgICA6IHB1YmxpYyBfX2lzX250X2Rlc3RydWN0aWJsZV9p
bXBsPHR5cGVuYW1lCiAgICAgICAgICAgICAgIHJlbW92ZV9hbGxfZXh0ZW50czxfVHA+Ojp0eXBl
Pjo6dHlwZQogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19p
c19udF9kZXN0cnVjdGlibGVfc2FmZTxfVHAsIHRydWUsIGZhbHNlPgogICAgOiBwdWJsaWMgZmFs
c2VfdHlwZSB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX250
X2Rlc3RydWN0aWJsZV9zYWZlPF9UcCwgZmFsc2UsIHRydWU+CiAgICA6IHB1YmxpYyB0cnVlX3R5
cGUgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX25vdGhyb3df
ZGVzdHJ1Y3RpYmxlCiAgICA6IHB1YmxpYyBfX2lzX250X2Rlc3RydWN0aWJsZV9zYWZlPF9UcD46
OnR5cGUKICAgIHsgfTsKCiAgc3RydWN0IF9fZG9faXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlX2lt
cGwKICB7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lID0gZGVjbHR5cGUoX1Rw
KCkpPgogICAgICBzdGF0aWMgdHJ1ZV90eXBlIF9fdGVzdChpbnQpOwoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lPgogICAgICBzdGF0aWMgZmFsc2VfdHlwZSBfX3Rlc3QoLi4uKTsKICB9OwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19kZWZhdWx0X2NvbnN0cnVjdGlibGVf
aW1wbAogICAgOiBwdWJsaWMgX19kb19pc19kZWZhdWx0X2NvbnN0cnVjdGlibGVfaW1wbAogICAg
ewogICAgICB0eXBlZGVmIGRlY2x0eXBlKF9fdGVzdDxfVHA+KDApKSB0eXBlOwogICAgfTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfZGVmYXVsdF9jb25zdHJ1Y3Rp
YmxlX2F0b20KICAgIDogcHVibGljIF9fYW5kXzxfX25vdF88aXNfdm9pZDxfVHA+PiwKICAgICAg
ICAgICAgICAgICAgICBfX2lzX2RlZmF1bHRfY29uc3RydWN0aWJsZV9pbXBsPF9UcD4+Ojp0eXBl
CiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgYm9vbCA9IGlzX2FycmF5PF9UcD46
OnZhbHVlPgogICAgc3RydWN0IF9faXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlX3NhZmU7CgoKCgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfZGVmYXVsdF9jb25zdHJ1
Y3RpYmxlX3NhZmU8X1RwLCB0cnVlPgogICAgOiBwdWJsaWMgX19hbmRfPF9faXNfYXJyYXlfa25v
d25fYm91bmRzPF9UcD4sCiAgICAgIF9faXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlX2F0b208dHlw
ZW5hbWUKICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZV9hbGxfZXh0ZW50czxfVHA+Ojp0eXBl
Pj46OnR5cGUKICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9f
aXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlX3NhZmU8X1RwLCBmYWxzZT4KICAgIDogcHVibGljIF9f
aXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlX2F0b208X1RwPjo6dHlwZQogICAgeyB9OwoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX2RlZmF1bHRfY29uc3RydWN0aWJsZQog
ICAgOiBwdWJsaWMgX19pc19kZWZhdWx0X2NvbnN0cnVjdGlibGVfc2FmZTxfVHA+Ojp0eXBlCiAg
ICB7IH07CiMgODY0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL3R5cGVfdHJhaXRzIiAzCiAgc3RydWN0IF9fZG9faXNfc3RhdGljX2Nhc3Rh
YmxlX2ltcGwKICB7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnJvbSwgdHlwZW5hbWUgX1RvLCB0
eXBlbmFtZQogICAgICAgICAgICAgPSBkZWNsdHlwZShzdGF0aWNfY2FzdDxfVG8+KGRlY2x2YWw8
X0Zyb20+KCkpKT4KICAgICAgc3RhdGljIHRydWVfdHlwZSBfX3Rlc3QoaW50KTsKCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+CiAgICAgIHN0YXRpYyBmYWxzZV90eXBlIF9fdGVzdCgu
Li4pOwogIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gcm9tLCB0eXBlbmFtZSBfVG8+CiAgICBz
dHJ1Y3QgX19pc19zdGF0aWNfY2FzdGFibGVfaW1wbAogICAgOiBwdWJsaWMgX19kb19pc19zdGF0
aWNfY2FzdGFibGVfaW1wbAogICAgewogICAgICB0eXBlZGVmIGRlY2x0eXBlKF9fdGVzdDxfRnJv
bSwgX1RvPigwKSkgdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gcm9tLCB0eXBl
bmFtZSBfVG8+CiAgICBzdHJ1Y3QgX19pc19zdGF0aWNfY2FzdGFibGVfc2FmZQogICAgOiBwdWJs
aWMgX19pc19zdGF0aWNfY2FzdGFibGVfaW1wbDxfRnJvbSwgX1RvPjo6dHlwZQogICAgeyB9OwoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zyb20sIHR5cGVuYW1lIF9Ubz4KICAgIHN0cnVjdCBfX2lz
X3N0YXRpY19jYXN0YWJsZQogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgKF9f
aXNfc3RhdGljX2Nhc3RhYmxlX3NhZmU8CiAgICAgICAgICBfRnJvbSwgX1RvPjo6dmFsdWUpPgog
ICAgeyB9OwoKCgoKCgogIHN0cnVjdCBfX2RvX2lzX2RpcmVjdF9jb25zdHJ1Y3RpYmxlX2ltcGwK
ICB7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BcmcsIHR5cGVuYW1lCiAg
ICAgID0gZGVjbHR5cGUoOjpuZXcgX1RwKGRlY2x2YWw8X0FyZz4oKSkpPgogICAgICBzdGF0aWMg
dHJ1ZV90eXBlIF9fdGVzdChpbnQpOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4K
ICAgICAgc3RhdGljIGZhbHNlX3R5cGUgX190ZXN0KC4uLik7CiAgfTsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwLCB0eXBlbmFtZSBfQXJnPgogICAgc3RydWN0IF9faXNfZGlyZWN0X2NvbnN0cnVj
dGlibGVfaW1wbAogICAgOiBwdWJsaWMgX19kb19pc19kaXJlY3RfY29uc3RydWN0aWJsZV9pbXBs
CiAgICB7CiAgICAgIHR5cGVkZWYgZGVjbHR5cGUoX190ZXN0PF9UcCwgX0FyZz4oMCkpIHR5cGU7
CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Bcmc+CiAgICBzdHJ1
Y3QgX19pc19kaXJlY3RfY29uc3RydWN0aWJsZV9uZXdfc2FmZQogICAgOiBwdWJsaWMgX19hbmRf
PGlzX2Rlc3RydWN0aWJsZTxfVHA+LAogICAgICAgICAgICAgICAgICAgIF9faXNfZGlyZWN0X2Nv
bnN0cnVjdGlibGVfaW1wbDxfVHAsIF9Bcmc+Pjo6dHlwZQogICAgeyB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSwgdHlwZW5hbWU+CiAgICBzdHJ1Y3QgaXNfc2FtZTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUsIHR5cGVuYW1lPgogICAgc3RydWN0IGlzX2Jhc2Vfb2Y7CgogIHRlbXBsYXRlPHR5cGVuYW1l
PgogICAgc3RydWN0IHJlbW92ZV9yZWZlcmVuY2U7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gcm9t
LCB0eXBlbmFtZSBfVG8sIGJvb2wKICAgICAgICAgICA9IF9fbm90XzxfX29yXzxpc192b2lkPF9G
cm9tPiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpc19mdW5jdGlvbjxfRnJvbT4+Pjo6dmFs
dWU+CiAgICBzdHJ1Y3QgX19pc19iYXNlX3RvX2Rlcml2ZWRfcmVmOwoKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9Gcm9tLCB0eXBlbmFtZSBfVG8+CiAgICBzdHJ1Y3QgX19pc19iYXNlX3RvX2Rlcml2
ZWRfcmVmPF9Gcm9tLCBfVG8sIHRydWU+CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVt
b3ZlX2N2PHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8X0Zyb20KICAgICAgICA+Ojp0eXBlPjo6
dHlwZSBfX3NyY190OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjx0eXBlbmFtZSBy
ZW1vdmVfcmVmZXJlbmNlPF9UbwogICAgICAgID46OnR5cGU+Ojp0eXBlIF9fZHN0X3Q7CiAgICAg
IHR5cGVkZWYgX19hbmRfPF9fbm90Xzxpc19zYW1lPF9fc3JjX3QsIF9fZHN0X3Q+PiwKICAgICAg
IGlzX2Jhc2Vfb2Y8X19zcmNfdCwgX19kc3RfdD4+IHR5cGU7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCB2YWx1ZSA9IHR5cGU6OnZhbHVlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0Zyb20sIHR5cGVuYW1lIF9Ubz4KICAgIHN0cnVjdCBfX2lzX2Jhc2VfdG9fZGVyaXZlZF9yZWY8
X0Zyb20sIF9UbywgZmFsc2U+CiAgICA6IHB1YmxpYyBmYWxzZV90eXBlCiAgICB7IH07CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9Gcm9tLCB0eXBlbmFtZSBfVG8sIGJvb2wKICAgICAgICAgICA9IF9f
YW5kXzxpc19sdmFsdWVfcmVmZXJlbmNlPF9Gcm9tPiwKICAgICAgICAgICAgICAgICAgICBpc19y
dmFsdWVfcmVmZXJlbmNlPF9Ubz4+Ojp2YWx1ZT4KICAgIHN0cnVjdCBfX2lzX2x2YWx1ZV90b19y
dmFsdWVfcmVmOwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gcm9tLCB0eXBlbmFtZSBfVG8+CiAg
ICBzdHJ1Y3QgX19pc19sdmFsdWVfdG9fcnZhbHVlX3JlZjxfRnJvbSwgX1RvLCB0cnVlPgogICAg
ewogICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjx0eXBlbmFtZSByZW1vdmVfcmVmZXJl
bmNlPAogICAgICAgIF9Gcm9tPjo6dHlwZT46OnR5cGUgX19zcmNfdDsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSByZW1vdmVfY3Y8dHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTwKICAgICAgICBfVG8+
Ojp0eXBlPjo6dHlwZSBfX2RzdF90OwogICAgICB0eXBlZGVmIF9fYW5kXzxfX25vdF88aXNfZnVu
Y3Rpb248X19zcmNfdD4+LAogICAgICAgIF9fb3JfPGlzX3NhbWU8X19zcmNfdCwgX19kc3RfdD4s
CiAgICAgIGlzX2Jhc2Vfb2Y8X19kc3RfdCwgX19zcmNfdD4+PiB0eXBlOwogICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgdmFsdWUgPSB0eXBlOjp2YWx1ZTsKICAgIH07CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9Gcm9tLCB0eXBlbmFtZSBfVG8+CiAgICBzdHJ1Y3QgX19pc19sdmFsdWVfdG9fcnZh
bHVlX3JlZjxfRnJvbSwgX1RvLCBmYWxzZT4KICAgIDogcHVibGljIGZhbHNlX3R5cGUKICAgIHsg
fTsKCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQXJnPgogICAgc3Ry
dWN0IF9faXNfZGlyZWN0X2NvbnN0cnVjdGlibGVfcmVmX2Nhc3QKICAgIDogcHVibGljIF9fYW5k
XzxfX2lzX3N0YXRpY19jYXN0YWJsZTxfQXJnLCBfVHA+LAogICAgICAgICAgICAgICAgICAgIF9f
bm90XzxfX29yXzxfX2lzX2Jhc2VfdG9fZGVyaXZlZF9yZWY8X0FyZywgX1RwPiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19pc19sdmFsdWVfdG9fcnZhbHVlX3JlZjxfQXJnLCBf
VHA+CiAgICAgICAgICAgICAgICAgICA+Pj46OnR5cGUKICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwLCB0eXBlbmFtZSBfQXJnPgogICAgc3RydWN0IF9faXNfZGlyZWN0X2NvbnN0cnVj
dGlibGVfbmV3CiAgICA6IHB1YmxpYyBjb25kaXRpb25hbDxpc19yZWZlcmVuY2U8X1RwPjo6dmFs
dWUsCiAgICBfX2lzX2RpcmVjdF9jb25zdHJ1Y3RpYmxlX3JlZl9jYXN0PF9UcCwgX0FyZz4sCiAg
ICBfX2lzX2RpcmVjdF9jb25zdHJ1Y3RpYmxlX25ld19zYWZlPF9UcCwgX0FyZz4KICAgID46OnR5
cGUKICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQXJnPgogICAg
c3RydWN0IF9faXNfZGlyZWN0X2NvbnN0cnVjdGlibGUKICAgIDogcHVibGljIF9faXNfZGlyZWN0
X2NvbnN0cnVjdGlibGVfbmV3PF9UcCwgX0FyZz46OnR5cGUKICAgIHsgfTsKCgoKCgoKICBzdHJ1
Y3QgX19kb19pc19uYXJ5X2NvbnN0cnVjdGlibGVfaW1wbAogIHsKICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3MsIHR5cGVuYW1lCiAgICAgICAgICAgICA9IGRlY2x0
eXBlKF9UcChkZWNsdmFsPF9BcmdzPigpLi4uKSk+CiAgICAgIHN0YXRpYyB0cnVlX3R5cGUgX190
ZXN0KGludCk7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lLi4uPgogICAgICBzdGF0
aWMgZmFsc2VfdHlwZSBfX3Rlc3QoLi4uKTsKICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAs
IHR5cGVuYW1lLi4uIF9BcmdzPgogICAgc3RydWN0IF9faXNfbmFyeV9jb25zdHJ1Y3RpYmxlX2lt
cGwKICAgIDogcHVibGljIF9fZG9faXNfbmFyeV9jb25zdHJ1Y3RpYmxlX2ltcGwKICAgIHsKICAg
ICAgdHlwZWRlZiBkZWNsdHlwZShfX3Rlc3Q8X1RwLCBfQXJncy4uLj4oMCkpIHR5cGU7CiAgICB9
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4uIF9BcmdzPgogICAgc3RydWN0
IF9faXNfbmFyeV9jb25zdHJ1Y3RpYmxlCiAgICA6IHB1YmxpYyBfX2lzX25hcnlfY29uc3RydWN0
aWJsZV9pbXBsPF9UcCwgX0FyZ3MuLi4+Ojp0eXBlCiAgICB7CiAgICAgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mLi4uKF9BcmdzKSA+IDEsCiAgICAgICAgICAgICAgICAgICAgIk9ubHkgdXNlZnVsIGZv
ciA+IDEgYXJndW1lbnRzIik7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVu
YW1lLi4uIF9BcmdzPgogICAgc3RydWN0IF9faXNfY29uc3RydWN0aWJsZV9pbXBsCiAgICA6IHB1
YmxpYyBfX2lzX25hcnlfY29uc3RydWN0aWJsZTxfVHAsIF9BcmdzLi4uPgogICAgeyB9OwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Bcmc+CiAgICBzdHJ1Y3QgX19pc19jb25z
dHJ1Y3RpYmxlX2ltcGw8X1RwLCBfQXJnPgogICAgOiBwdWJsaWMgX19pc19kaXJlY3RfY29uc3Ry
dWN0aWJsZTxfVHAsIF9Bcmc+CiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAg
IHN0cnVjdCBfX2lzX2NvbnN0cnVjdGlibGVfaW1wbDxfVHA+CiAgICA6IHB1YmxpYyBpc19kZWZh
dWx0X2NvbnN0cnVjdGlibGU8X1RwPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
LCB0eXBlbmFtZS4uLiBfQXJncz4KICAgIHN0cnVjdCBpc19jb25zdHJ1Y3RpYmxlCiAgICA6IHB1
YmxpYyBfX2lzX2NvbnN0cnVjdGlibGVfaW1wbDxfVHAsIF9BcmdzLi4uPjo6dHlwZQogICAgeyB9
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGJvb2wgPSBfX2lzX3JlZmVyZW5jZWFibGU8X1Rw
Pjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19pc19jb3B5X2NvbnN0cnVjdGlibGVfaW1wbDsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfY29weV9jb25zdHJ1Y3RpYmxlX2lt
cGw8X1RwLCBmYWxzZT4KICAgIDogcHVibGljIGZhbHNlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19jb3B5X2NvbnN0cnVjdGlibGVfaW1wbDxfVHAs
IHRydWU+CiAgICA6IHB1YmxpYyBpc19jb25zdHJ1Y3RpYmxlPF9UcCwgY29uc3QgX1RwJj4KICAg
IHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc19jb3B5X2NvbnN0
cnVjdGlibGUKICAgIDogcHVibGljIF9faXNfY29weV9jb25zdHJ1Y3RpYmxlX2ltcGw8X1RwPgog
ICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGJvb2wgPSBfX2lzX3JlZmVyZW5jZWFi
bGU8X1RwPjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19pc19tb3ZlX2NvbnN0cnVjdGlibGVfaW1wbDsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfbW92ZV9jb25zdHJ1Y3Rp
YmxlX2ltcGw8X1RwLCBmYWxzZT4KICAgIDogcHVibGljIGZhbHNlX3R5cGUgeyB9OwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19tb3ZlX2NvbnN0cnVjdGlibGVfaW1w
bDxfVHAsIHRydWU+CiAgICA6IHB1YmxpYyBpc19jb25zdHJ1Y3RpYmxlPF9UcCwgX1RwJiY+CiAg
ICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNfbW92ZV9jb25z
dHJ1Y3RpYmxlCiAgICA6IHB1YmxpYyBfX2lzX21vdmVfY29uc3RydWN0aWJsZV9pbXBsPF9UcD4K
ICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfbnRfZGVm
YXVsdF9jb25zdHJ1Y3RpYmxlX2F0b20KICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJv
b2wsIG5vZXhjZXB0KF9UcCgpKT4KICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBi
b29sID0gaXNfYXJyYXk8X1RwPjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19pc19udF9kZWZhdWx0X2Nv
bnN0cnVjdGlibGVfaW1wbDsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9f
aXNfbnRfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlX2ltcGw8X1RwLCB0cnVlPgogICAgOiBwdWJsaWMg
X19hbmRfPF9faXNfYXJyYXlfa25vd25fYm91bmRzPF9UcD4sCiAgICAgIF9faXNfbnRfZGVmYXVs
dF9jb25zdHJ1Y3RpYmxlX2F0b208dHlwZW5hbWUKICAgICAgICAgICAgICAgICAgICAgIHJlbW92
ZV9hbGxfZXh0ZW50czxfVHA+Ojp0eXBlPj46OnR5cGUKICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfbnRfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlX2ltcGw8
X1RwLCBmYWxzZT4KICAgIDogcHVibGljIF9faXNfbnRfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlX2F0
b208X1RwPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlz
X25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlCiAgICA6IHB1YmxpYyBfX2FuZF88aXNfZGVm
YXVsdF9jb25zdHJ1Y3RpYmxlPF9UcD4sCiAgICAgICAgICAgICAgICAgICAgX19pc19udF9kZWZh
dWx0X2NvbnN0cnVjdGlibGVfaW1wbDxfVHA+Pjo6dHlwZQogICAgeyB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4uIF9BcmdzPgogICAgc3RydWN0IF9faXNfbnRfY29uc3Ry
dWN0aWJsZV9pbXBsCiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCBub2V4Y2Vw
dChfVHAoZGVjbHZhbDxfQXJncz4oKS4uLikpPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHAsIHR5cGVuYW1lIF9Bcmc+CiAgICBzdHJ1Y3QgX19pc19udF9jb25zdHJ1Y3RpYmxlX2lt
cGw8X1RwLCBfQXJnPgogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZXhjZXB0KHN0YXRpY19jYXN0PF9UcD4oZGVjbHZh
bDxfQXJnPigpKSk+CiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVj
dCBfX2lzX250X2NvbnN0cnVjdGlibGVfaW1wbDxfVHA+CiAgICA6IHB1YmxpYyBpc19ub3Rocm93
X2RlZmF1bHRfY29uc3RydWN0aWJsZTxfVHA+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHAsIHR5cGVuYW1lLi4uIF9BcmdzPgogICAgc3RydWN0IGlzX25vdGhyb3dfY29uc3RydWN0
aWJsZQogICAgOiBwdWJsaWMgX19hbmRfPGlzX2NvbnN0cnVjdGlibGU8X1RwLCBfQXJncy4uLj4s
CiAgICAgIF9faXNfbnRfY29uc3RydWN0aWJsZV9pbXBsPF9UcCwgX0FyZ3MuLi4+Pjo6dHlwZQog
ICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGJvb2wgPSBfX2lzX3JlZmVyZW5jZWFi
bGU8X1RwPjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19pc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJs
ZV9pbXBsOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19ub3Rocm93
X2NvcHlfY29uc3RydWN0aWJsZV9pbXBsPF9UcCwgZmFsc2U+CiAgICA6IHB1YmxpYyBmYWxzZV90
eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfbm90aHJv
d19jb3B5X2NvbnN0cnVjdGlibGVfaW1wbDxfVHAsIHRydWU+CiAgICA6IHB1YmxpYyBpc19ub3Ro
cm93X2NvbnN0cnVjdGlibGU8X1RwLCBjb25zdCBfVHAmPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX25vdGhyb3dfY29weV9jb25zdHJ1Y3RpYmxlCiAg
ICA6IHB1YmxpYyBfX2lzX25vdGhyb3dfY29weV9jb25zdHJ1Y3RpYmxlX2ltcGw8X1RwPgogICAg
eyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGJvb2wgPSBfX2lzX3JlZmVyZW5jZWFibGU8
X1RwPjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19pc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZV9p
bXBsOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19ub3Rocm93X21v
dmVfY29uc3RydWN0aWJsZV9pbXBsPF9UcCwgZmFsc2U+CiAgICA6IHB1YmxpYyBmYWxzZV90eXBl
IHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfbm90aHJvd19t
b3ZlX2NvbnN0cnVjdGlibGVfaW1wbDxfVHAsIHRydWU+CiAgICA6IHB1YmxpYyBpc19ub3Rocm93
X2NvbnN0cnVjdGlibGU8X1RwLCBfVHAmJj4KICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4KICAgIHN0cnVjdCBpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZQogICAgOiBwdWJs
aWMgX19pc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZV9pbXBsPF9UcD4KICAgIHsgfTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+CiAgICBjbGFzcyBfX2lzX2Fzc2ln
bmFibGVfaGVscGVyCiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1l
IF9VcDEsCiAgICAgICAgdHlwZW5hbWUgPSBkZWNsdHlwZShkZWNsdmFsPF9UcDE+KCkgPSBkZWNs
dmFsPF9VcDE+KCkpPgogc3RhdGljIHRydWVfdHlwZQogX190ZXN0KGludCk7CgogICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+CiBzdGF0aWMgZmFsc2VfdHlwZQogX190ZXN0KC4uLik7
CgogICAgcHVibGljOgogICAgICB0eXBlZGVmIGRlY2x0eXBlKF9fdGVzdDxfVHAsIF9VcD4oMCkp
IHR5cGU7CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+CiAg
ICBzdHJ1Y3QgaXNfYXNzaWduYWJsZQogICAgICA6IHB1YmxpYyBfX2lzX2Fzc2lnbmFibGVfaGVs
cGVyPF9UcCwgX1VwPjo6dHlwZQogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGJv
b2wgPSBfX2lzX3JlZmVyZW5jZWFibGU8X1RwPjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19pc19jb3B5
X2Fzc2lnbmFibGVfaW1wbDsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9f
aXNfY29weV9hc3NpZ25hYmxlX2ltcGw8X1RwLCBmYWxzZT4KICAgIDogcHVibGljIGZhbHNlX3R5
cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19jb3B5X2Fz
c2lnbmFibGVfaW1wbDxfVHAsIHRydWU+CiAgICA6IHB1YmxpYyBpc19hc3NpZ25hYmxlPF9UcCYs
IGNvbnN0IF9UcCY+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1
Y3QgaXNfY29weV9hc3NpZ25hYmxlCiAgICA6IHB1YmxpYyBfX2lzX2NvcHlfYXNzaWduYWJsZV9p
bXBsPF9UcD4KICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBib29sID0gX19pc19y
ZWZlcmVuY2VhYmxlPF9UcD46OnZhbHVlPgogICAgc3RydWN0IF9faXNfbW92ZV9hc3NpZ25hYmxl
X2ltcGw7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX21vdmVfYXNz
aWduYWJsZV9pbXBsPF9UcCwgZmFsc2U+CiAgICA6IHB1YmxpYyBmYWxzZV90eXBlIHsgfTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfbW92ZV9hc3NpZ25hYmxlX2lt
cGw8X1RwLCB0cnVlPgogICAgOiBwdWJsaWMgaXNfYXNzaWduYWJsZTxfVHAmLCBfVHAmJj4KICAg
IHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc19tb3ZlX2Fzc2ln
bmFibGUKICAgIDogcHVibGljIF9faXNfbW92ZV9hc3NpZ25hYmxlX2ltcGw8X1RwPgogICAgeyB9
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9VcD4KICAgIHN0cnVjdCBfX2lz
X250X2Fzc2lnbmFibGVfaW1wbAogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwg
bm9leGNlcHQoZGVjbHZhbDxfVHA+KCkgPSBkZWNsdmFsPF9VcD4oKSk+CiAgICB7IH07CgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9VcD4KICAgIHN0cnVjdCBpc19ub3Rocm93
X2Fzc2lnbmFibGUKICAgIDogcHVibGljIF9fYW5kXzxpc19hc3NpZ25hYmxlPF9UcCwgX1VwPiwK
ICAgICAgX19pc19udF9hc3NpZ25hYmxlX2ltcGw8X1RwLCBfVXA+Pjo6dHlwZQogICAgeyB9OwoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGJvb2wgPSBfX2lzX3JlZmVyZW5jZWFibGU8X1RwPjo6
dmFsdWU+CiAgICBzdHJ1Y3QgX19pc19udF9jb3B5X2Fzc2lnbmFibGVfaW1wbDsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfbnRfY29weV9hc3NpZ25hYmxlX2ltcGw8
X1RwLCBmYWxzZT4KICAgIDogcHVibGljIGZhbHNlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19udF9jb3B5X2Fzc2lnbmFibGVfaW1wbDxfVHAsIHRy
dWU+CiAgICA6IHB1YmxpYyBpc19ub3Rocm93X2Fzc2lnbmFibGU8X1RwJiwgY29uc3QgX1RwJj4K
ICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc19ub3Rocm93
X2NvcHlfYXNzaWduYWJsZQogICAgOiBwdWJsaWMgX19pc19udF9jb3B5X2Fzc2lnbmFibGVfaW1w
bDxfVHA+CiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgYm9vbCA9IF9faXNfcmVm
ZXJlbmNlYWJsZTxfVHA+Ojp2YWx1ZT4KICAgIHN0cnVjdCBfX2lzX250X21vdmVfYXNzaWduYWJs
ZV9pbXBsOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19udF9tb3Zl
X2Fzc2lnbmFibGVfaW1wbDxfVHAsIGZhbHNlPgogICAgOiBwdWJsaWMgZmFsc2VfdHlwZSB7IH07
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX250X21vdmVfYXNzaWdu
YWJsZV9pbXBsPF9UcCwgdHJ1ZT4KICAgIDogcHVibGljIGlzX25vdGhyb3dfYXNzaWduYWJsZTxf
VHAmLCBfVHAmJj4KICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVj
dCBpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZQogICAgOiBwdWJsaWMgX19pc19udF9tb3ZlX2Fz
c2lnbmFibGVfaW1wbDxfVHA+CiAgICB7IH07CiMgMTMwMCAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy90eXBlX3RyYWl0cyIgMwogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlCiAg
ICA6IHB1YmxpYyBfX2FuZF88aXNfZGVzdHJ1Y3RpYmxlPF9UcD4sIGludGVncmFsX2NvbnN0YW50
PGJvb2wsCiAgICAgICAgIF9faGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcihfVHApPj46OnR5cGUKICAg
IHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBoYXNfdHJpdmlhbF9k
ZWZhdWx0X2NvbnN0cnVjdG9yCiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCBf
X2hhc190cml2aWFsX2NvbnN0cnVjdG9yKF9UcCk+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcgogICAgOiBw
dWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgX19oYXNfdHJpdmlhbF9jb3B5KF9UcCk+CiAg
ICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaGFzX3RyaXZpYWxf
Y29weV9hc3NpZ24KICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsIF9faGFzX3Ry
aXZpYWxfYXNzaWduKF9UcCk+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBzdHJ1Y3QgaGFzX3ZpcnR1YWxfZGVzdHJ1Y3RvcgogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29u
c3RhbnQ8Ym9vbCwgX19oYXNfdmlydHVhbF9kZXN0cnVjdG9yKF9UcCk+CiAgICB7IH07CgoKCgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgYWxpZ25tZW50X29mCiAgICA6IHB1
YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxzdGQ6OnNpemVfdCwgX19hbGlnbm9mX18oX1RwKT4geyB9
OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWU+CiAgICBzdHJ1Y3QgcmFuawogICAgOiBwdWJsaWMgaW50
ZWdyYWxfY29uc3RhbnQ8c3RkOjpzaXplX3QsIDA+IHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwLCBzdGQ6OnNpemVfdCBfU2l6ZT4KICAgIHN0cnVjdCByYW5rPF9UcFtfU2l6ZV0+CiAgICA6
IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxzdGQ6OnNpemVfdCwgMSArIHJhbms8X1RwPjo6dmFs
dWU+IHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IHJhbms8X1RwW10+
CiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxzdGQ6OnNpemVfdCwgMSArIHJhbms8X1Rw
Pjo6dmFsdWU+IHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lLCB1bnNpZ25lZCBfVWludD4KICAg
IHN0cnVjdCBleHRlbnQKICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PHN0ZDo6c2l6ZV90
LCAwPiB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdW5zaWduZWQgX1VpbnQsIHN0ZDo6
c2l6ZV90IF9TaXplPgogICAgc3RydWN0IGV4dGVudDxfVHBbX1NpemVdLCBfVWludD4KICAgIDog
cHVibGljIGludGVncmFsX2NvbnN0YW50PHN0ZDo6c2l6ZV90LAogICAgICAgICAgX1VpbnQgPT0g
MCA/IF9TaXplIDogZXh0ZW50PF9UcCwKICAgICAgICAgIF9VaW50IC0gMT46OnZhbHVlPgogICAg
eyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHVuc2lnbmVkIF9VaW50PgogICAgc3RydWN0
IGV4dGVudDxfVHBbXSwgX1VpbnQ+CiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxzdGQ6
OnNpemVfdCwKICAgICAgICAgIF9VaW50ID09IDAgPyAwIDogZXh0ZW50PF9UcCwKICAgICAgICAg
ICAgIF9VaW50IC0gMT46OnZhbHVlPgogICAgeyB9OwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUs
IHR5cGVuYW1lPgogICAgc3RydWN0IGlzX3NhbWUKICAgIDogcHVibGljIGZhbHNlX3R5cGUgeyB9
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNfc2FtZTxfVHAsIF9UcD4K
ICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmFzZSwg
dHlwZW5hbWUgX0Rlcml2ZWQ+CiAgICBzdHJ1Y3QgaXNfYmFzZV9vZgogICAgOiBwdWJsaWMgaW50
ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgX19pc19iYXNlX29mKF9CYXNlLCBfRGVyaXZlZCk+CiAgICB7
IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gcm9tLCB0eXBlbmFtZSBfVG8sCiAgICAgICAgICAg
Ym9vbCA9IF9fb3JfPGlzX3ZvaWQ8X0Zyb20+LCBpc19mdW5jdGlvbjxfVG8+LAogICAgICAgICAg
ICAgICAgICAgICAgICBpc19hcnJheTxfVG8+Pjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19pc19jb252
ZXJ0aWJsZV9oZWxwZXIKICAgIHsgdHlwZWRlZiB0eXBlbmFtZSBpc192b2lkPF9Ubz46OnR5cGUg
dHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zyb20sIHR5cGVuYW1lIF9Ubz4KICAgIGNs
YXNzIF9faXNfY29udmVydGlibGVfaGVscGVyPF9Gcm9tLCBfVG8sIGZhbHNlPgogICAgewogICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RvMT4KIHN0YXRpYyB2b2lkIF9fdGVzdF9hdXgoX1RvMSk7
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnJvbTEsIHR5cGVuYW1lIF9UbzEsCiAgICAgICAg
dHlwZW5hbWUgPSBkZWNsdHlwZShfX3Rlc3RfYXV4PF9UbzE+KHN0ZDo6ZGVjbHZhbDxfRnJvbTE+
KCkpKT4KIHN0YXRpYyB0cnVlX3R5cGUKIF9fdGVzdChpbnQpOwoKICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUsIHR5cGVuYW1lPgogc3RhdGljIGZhbHNlX3R5cGUKIF9fdGVzdCguLi4pOwoKICAgIHB1
YmxpYzoKICAgICAgdHlwZWRlZiBkZWNsdHlwZShfX3Rlc3Q8X0Zyb20sIF9Ubz4oMCkpIHR5cGU7
CiAgICB9OwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gcm9tLCB0eXBlbmFtZSBfVG8+CiAgICBz
dHJ1Y3QgaXNfY29udmVydGlibGUKICAgIDogcHVibGljIF9faXNfY29udmVydGlibGVfaGVscGVy
PF9Gcm9tLCBfVG8+Ojp0eXBlCiAgICB7IH07CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICBzdHJ1Y3QgcmVtb3ZlX2NvbnN0CiAgICB7IHR5cGVkZWYgX1RwIHR5cGU7IH07CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCByZW1vdmVfY29uc3Q8X1RwIGNvbnN0Pgog
ICAgeyB0eXBlZGVmIF9UcCB0eXBlOyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg
c3RydWN0IHJlbW92ZV92b2xhdGlsZQogICAgeyB0eXBlZGVmIF9UcCB0eXBlOyB9OwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlPF9UcCB2b2xhdGls
ZT4KICAgIHsgdHlwZWRlZiBfVHAgdHlwZTsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICAgIHN0cnVjdCByZW1vdmVfY3YKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZQogICAgICBy
ZW1vdmVfY29uc3Q8dHlwZW5hbWUgcmVtb3ZlX3ZvbGF0aWxlPF9UcD46OnR5cGU+Ojp0eXBlIHR5
cGU7CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGFkZF9jb25z
dAogICAgeyB0eXBlZGVmIF9UcCBjb25zdCB0eXBlOyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgc3RydWN0IGFkZF92b2xhdGlsZQogICAgeyB0eXBlZGVmIF9UcCB2b2xhdGlsZSB0
eXBlOyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGFkZF9jdgogICAg
ewogICAgICB0eXBlZGVmIHR5cGVuYW1lCiAgICAgIGFkZF9jb25zdDx0eXBlbmFtZSBhZGRfdm9s
YXRpbGU8X1RwPjo6dHlwZT46OnR5cGUgdHlwZTsKICAgIH07CiMgMTQ5OSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy90eXBlX3RyYWl0cyIg
MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCByZW1vdmVfcmVmZXJlbmNlCiAg
ICB7IHR5cGVkZWYgX1RwIHR5cGU7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0
cnVjdCByZW1vdmVfcmVmZXJlbmNlPF9UcCY+CiAgICB7IHR5cGVkZWYgX1RwIHR5cGU7IH07Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCByZW1vdmVfcmVmZXJlbmNlPF9UcCYm
PgogICAgeyB0eXBlZGVmIF9UcCB0eXBlOyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGJv
b2wgPSBfX2lzX3JlZmVyZW5jZWFibGU8X1RwPjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19hZGRfbHZh
bHVlX3JlZmVyZW5jZV9oZWxwZXIKICAgIHsgdHlwZWRlZiBfVHAgdHlwZTsgfTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fYWRkX2x2YWx1ZV9yZWZlcmVuY2VfaGVscGVy
PF9UcCwgdHJ1ZT4KICAgIHsgdHlwZWRlZiBfVHAmIHR5cGU7IH07CgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBzdHJ1Y3QgYWRkX2x2YWx1ZV9yZWZlcmVuY2UKICAgIDogcHVibGljIF9f
YWRkX2x2YWx1ZV9yZWZlcmVuY2VfaGVscGVyPF9UcD4KICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwLCBib29sID0gX19pc19yZWZlcmVuY2VhYmxlPF9UcD46OnZhbHVlPgogICAgc3Ry
dWN0IF9fYWRkX3J2YWx1ZV9yZWZlcmVuY2VfaGVscGVyCiAgICB7IHR5cGVkZWYgX1RwIHR5cGU7
IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2FkZF9ydmFsdWVfcmVm
ZXJlbmNlX2hlbHBlcjxfVHAsIHRydWU+CiAgICB7IHR5cGVkZWYgX1RwJiYgdHlwZTsgfTsKCgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBhZGRfcnZhbHVlX3JlZmVyZW5jZQog
ICAgOiBwdWJsaWMgX19hZGRfcnZhbHVlX3JlZmVyZW5jZV9oZWxwZXI8X1RwPgogICAgeyB9Owoj
IDE1NTYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvdHlwZV90cmFpdHMiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5xdWFsaWZpZWQsIGJv
b2wgX0lzQ29uc3QsIGJvb2wgX0lzVm9sPgogICAgc3RydWN0IF9fY3Zfc2VsZWN0b3I7CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9VbnF1YWxpZmllZD4KICAgIHN0cnVjdCBfX2N2X3NlbGVjdG9yPF9V
bnF1YWxpZmllZCwgZmFsc2UsIGZhbHNlPgogICAgeyB0eXBlZGVmIF9VbnF1YWxpZmllZCBfX3R5
cGU7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VbnF1YWxpZmllZD4KICAgIHN0cnVjdCBfX2N2
X3NlbGVjdG9yPF9VbnF1YWxpZmllZCwgZmFsc2UsIHRydWU+CiAgICB7IHR5cGVkZWYgdm9sYXRp
bGUgX1VucXVhbGlmaWVkIF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VucXVhbGlm
aWVkPgogICAgc3RydWN0IF9fY3Zfc2VsZWN0b3I8X1VucXVhbGlmaWVkLCB0cnVlLCBmYWxzZT4K
ICAgIHsgdHlwZWRlZiBjb25zdCBfVW5xdWFsaWZpZWQgX190eXBlOyB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVW5xdWFsaWZpZWQ+CiAgICBzdHJ1Y3QgX19jdl9zZWxlY3RvcjxfVW5xdWFsaWZp
ZWQsIHRydWUsIHRydWU+CiAgICB7IHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgX1VucXVhbGlmaWVk
IF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1F1YWxpZmllZCwgdHlwZW5hbWUgX1Vu
cXVhbGlmaWVkLAogICAgYm9vbCBfSXNDb25zdCA9IGlzX2NvbnN0PF9RdWFsaWZpZWQ+Ojp2YWx1
ZSwKICAgIGJvb2wgX0lzVm9sID0gaXNfdm9sYXRpbGU8X1F1YWxpZmllZD46OnZhbHVlPgogICAg
Y2xhc3MgX19tYXRjaF9jdl9xdWFsaWZpZXJzCiAgICB7CiAgICAgIHR5cGVkZWYgX19jdl9zZWxl
Y3RvcjxfVW5xdWFsaWZpZWQsIF9Jc0NvbnN0LCBfSXNWb2w+IF9fbWF0Y2g7CgogICAgcHVibGlj
OgogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fbWF0Y2g6Ol9fdHlwZSBfX3R5cGU7CiAgICB9OwoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fbWFrZV91bnNpZ25lZAogICAg
eyB0eXBlZGVmIF9UcCBfX3R5cGU7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX21ha2Vf
dW5zaWduZWQ8Y2hhcj4KICAgIHsgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdHlwZTsgfTsKCiAg
dGVtcGxhdGU8PgogICAgc3RydWN0IF9fbWFrZV91bnNpZ25lZDxzaWduZWQgY2hhcj4KICAgIHsg
dHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0
IF9fbWFrZV91bnNpZ25lZDxzaG9ydD4KICAgIHsgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3R5
cGU7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX21ha2VfdW5zaWduZWQ8aW50PgogICAg
eyB0eXBlZGVmIHVuc2lnbmVkIGludCBfX3R5cGU7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVj
dCBfX21ha2VfdW5zaWduZWQ8bG9uZz4KICAgIHsgdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdHlw
ZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fbWFrZV91bnNpZ25lZDxsb25nIGxvbmc+
CiAgICB7IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdHlwZTsgfTsKIyAxNjI4ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3R5cGVf
dHJhaXRzIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLAogICAgYm9vbCBfSXNJbnQgPSBpc19p
bnRlZ3JhbDxfVHA+Ojp2YWx1ZSwKICAgIGJvb2wgX0lzRW51bSA9IGlzX2VudW08X1RwPjo6dmFs
dWU+CiAgICBjbGFzcyBfX21ha2VfdW5zaWduZWRfc2VsZWN0b3I7CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIGNsYXNzIF9fbWFrZV91bnNpZ25lZF9zZWxlY3RvcjxfVHAsIHRydWUsIGZh
bHNlPgogICAgewogICAgICB0eXBlZGVmIF9fbWFrZV91bnNpZ25lZDx0eXBlbmFtZSByZW1vdmVf
Y3Y8X1RwPjo6dHlwZT4gX191bnNpZ25lZHQ7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX191bnNp
Z25lZHQ6Ol9fdHlwZSBfX3Vuc2lnbmVkX3R5cGU7CiAgICAgIHR5cGVkZWYgX19tYXRjaF9jdl9x
dWFsaWZpZXJzPF9UcCwgX191bnNpZ25lZF90eXBlPiBfX2N2X3Vuc2lnbmVkOwoKICAgIHB1Ymxp
YzoKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2N2X3Vuc2lnbmVkOjpfX3R5cGUgX190eXBlOwog
ICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY2xhc3MgX19tYWtlX3Vuc2lnbmVk
X3NlbGVjdG9yPF9UcCwgZmFsc2UsIHRydWU+CiAgICB7CgogICAgICB0eXBlZGVmIHVuc2lnbmVk
IGNoYXIgX19zbWFsbGVzdDsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgX19iMCA9IHNpemVvZihf
VHApIDw9IHNpemVvZihfX3NtYWxsZXN0KTsKICAgICAgc3RhdGljIGNvbnN0IGJvb2wgX19iMSA9
IHNpemVvZihfVHApIDw9IHNpemVvZih1bnNpZ25lZCBzaG9ydCk7CiAgICAgIHN0YXRpYyBjb25z
dCBib29sIF9fYjIgPSBzaXplb2YoX1RwKSA8PSBzaXplb2YodW5zaWduZWQgaW50KTsKICAgICAg
dHlwZWRlZiBjb25kaXRpb25hbDxfX2IyLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGxvbmc+IF9f
Y29uZDI7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19jb25kMjo6dHlwZSBfX2NvbmQyX3R5cGU7
CiAgICAgIHR5cGVkZWYgY29uZGl0aW9uYWw8X19iMSwgdW5zaWduZWQgc2hvcnQsIF9fY29uZDJf
dHlwZT4gX19jb25kMTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2NvbmQxOjp0eXBlIF9fY29u
ZDFfdHlwZTsKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY29uZGl0aW9uYWw8
X19iMCwgX19zbWFsbGVzdCwgX19jb25kMV90eXBlPjo6dHlwZSBfX3R5cGU7CiAgICB9OwoKCgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IG1ha2VfdW5zaWduZWQKICAgIHsg
dHlwZWRlZiB0eXBlbmFtZSBfX21ha2VfdW5zaWduZWRfc2VsZWN0b3I8X1RwPjo6X190eXBlIHR5
cGU7IH07CgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgbWFrZV91bnNpZ25lZDxib29sPjsKCgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19tYWtlX3NpZ25lZAogICAgeyB0
eXBlZGVmIF9UcCBfX3R5cGU7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX21ha2Vfc2ln
bmVkPGNoYXI+CiAgICB7IHR5cGVkZWYgc2lnbmVkIGNoYXIgX190eXBlOyB9OwoKICB0ZW1wbGF0
ZTw+CiAgICBzdHJ1Y3QgX19tYWtlX3NpZ25lZDx1bnNpZ25lZCBjaGFyPgogICAgeyB0eXBlZGVm
IHNpZ25lZCBjaGFyIF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fbWFrZV9z
aWduZWQ8dW5zaWduZWQgc2hvcnQ+CiAgICB7IHR5cGVkZWYgc2lnbmVkIHNob3J0IF9fdHlwZTsg
fTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fbWFrZV9zaWduZWQ8dW5zaWduZWQgaW50Pgog
ICAgeyB0eXBlZGVmIHNpZ25lZCBpbnQgX190eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1
Y3QgX19tYWtlX3NpZ25lZDx1bnNpZ25lZCBsb25nPgogICAgeyB0eXBlZGVmIHNpZ25lZCBsb25n
IF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fbWFrZV9zaWduZWQ8dW5zaWdu
ZWQgbG9uZyBsb25nPgogICAgeyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgX190eXBlOyB9OwoK
CiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fbWFrZV9zaWduZWQ8d2NoYXJfdD4gOiBfX21ha2Vf
c2lnbmVkPHVuc2lnbmVkIGludD4KICAgIHsgfTsKCgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3Qg
X19tYWtlX3NpZ25lZDxjaGFyMTZfdD4gOiBfX21ha2Vfc2lnbmVkPHVpbnRfbGVhc3QxNl90Pgog
ICAgeyB9OwogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX21ha2Vfc2lnbmVkPGNoYXIzMl90PiA6
IF9fbWFrZV9zaWduZWQ8dWludF9sZWFzdDMyX3Q+CiAgICB7IH07CiMgMTcyNSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy90eXBlX3RyYWl0
cyIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwKICAgIGJvb2wgX0lzSW50ID0gaXNfaW50ZWdy
YWw8X1RwPjo6dmFsdWUsCiAgICBib29sIF9Jc0VudW0gPSBpc19lbnVtPF9UcD46OnZhbHVlPgog
ICAgY2xhc3MgX19tYWtlX3NpZ25lZF9zZWxlY3RvcjsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgY2xhc3MgX19tYWtlX3NpZ25lZF9zZWxlY3RvcjxfVHAsIHRydWUsIGZhbHNlPgogICAg
ewogICAgICB0eXBlZGVmIF9fbWFrZV9zaWduZWQ8dHlwZW5hbWUgcmVtb3ZlX2N2PF9UcD46OnR5
cGU+IF9fc2lnbmVkdDsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX3NpZ25lZHQ6Ol9fdHlwZSBf
X3NpZ25lZF90eXBlOwogICAgICB0eXBlZGVmIF9fbWF0Y2hfY3ZfcXVhbGlmaWVyczxfVHAsIF9f
c2lnbmVkX3R5cGU+IF9fY3Zfc2lnbmVkOwoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBfX2N2X3NpZ25lZDo6X190eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIGNsYXNzIF9fbWFrZV9zaWduZWRfc2VsZWN0b3I8X1RwLCBmYWxzZSwgdHJ1
ZT4KICAgIHsKCiAgICAgIHR5cGVkZWYgc2lnbmVkIGNoYXIgX19zbWFsbGVzdDsKICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgX19iMCA9IHNpemVvZihfVHApIDw9IHNpemVvZihfX3NtYWxsZXN0KTsK
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgX19iMSA9IHNpemVvZihfVHApIDw9IHNpemVvZihzaWdu
ZWQgc2hvcnQpOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBfX2IyID0gc2l6ZW9mKF9UcCkgPD0g
c2l6ZW9mKHNpZ25lZCBpbnQpOwogICAgICB0eXBlZGVmIGNvbmRpdGlvbmFsPF9fYjIsIHNpZ25l
ZCBpbnQsIHNpZ25lZCBsb25nPiBfX2NvbmQyOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fY29u
ZDI6OnR5cGUgX19jb25kMl90eXBlOwogICAgICB0eXBlZGVmIGNvbmRpdGlvbmFsPF9fYjEsIHNp
Z25lZCBzaG9ydCwgX19jb25kMl90eXBlPiBfX2NvbmQxOwogICAgICB0eXBlZGVmIHR5cGVuYW1l
IF9fY29uZDE6OnR5cGUgX19jb25kMV90eXBlOwoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBjb25kaXRpb25hbDxfX2IwLCBfX3NtYWxsZXN0LCBfX2NvbmQxX3R5cGU+Ojp0eXBl
IF9fdHlwZTsKICAgIH07CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3Qg
bWFrZV9zaWduZWQKICAgIHsgdHlwZWRlZiB0eXBlbmFtZSBfX21ha2Vfc2lnbmVkX3NlbGVjdG9y
PF9UcD46Ol9fdHlwZSB0eXBlOyB9OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IG1ha2Vfc2ln
bmVkPGJvb2w+OwojIDE3ODMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvdHlwZV90cmFpdHMiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICBzdHJ1Y3QgcmVtb3ZlX2V4dGVudAogICAgeyB0eXBlZGVmIF9UcCB0eXBlOyB9OwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHN0ZDo6c2l6ZV90IF9TaXplPgogICAgc3RydWN0IHJlbW92
ZV9leHRlbnQ8X1RwW19TaXplXT4KICAgIHsgdHlwZWRlZiBfVHAgdHlwZTsgfTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IHJlbW92ZV9leHRlbnQ8X1RwW10+CiAgICB7IHR5
cGVkZWYgX1RwIHR5cGU7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3Qg
cmVtb3ZlX2FsbF9leHRlbnRzCiAgICB7IHR5cGVkZWYgX1RwIHR5cGU7IH07CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcCwgc3RkOjpzaXplX3QgX1NpemU+CiAgICBzdHJ1Y3QgcmVtb3ZlX2FsbF9l
eHRlbnRzPF9UcFtfU2l6ZV0+CiAgICB7IHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2FsbF9leHRl
bnRzPF9UcD46OnR5cGUgdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3Ry
dWN0IHJlbW92ZV9hbGxfZXh0ZW50czxfVHBbXT4KICAgIHsgdHlwZWRlZiB0eXBlbmFtZSByZW1v
dmVfYWxsX2V4dGVudHM8X1RwPjo6dHlwZSB0eXBlOyB9OwojIDE4MjAgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvdHlwZV90cmFpdHMiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lPgogICAgc3RydWN0IF9fcmVtb3ZlX3Bv
aW50ZXJfaGVscGVyCiAgICB7IHR5cGVkZWYgX1RwIHR5cGU7IH07CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUgX1VwPgogICAgc3RydWN0IF9fcmVtb3ZlX3BvaW50ZXJfaGVscGVy
PF9UcCwgX1VwKj4KICAgIHsgdHlwZWRlZiBfVXAgdHlwZTsgfTsKCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIHN0cnVjdCByZW1vdmVfcG9pbnRlcgogICAgOiBwdWJsaWMgX19yZW1vdmVf
cG9pbnRlcl9oZWxwZXI8X1RwLCB0eXBlbmFtZSByZW1vdmVfY3Y8X1RwPjo6dHlwZT4KICAgIHsg
fTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgYm9vbCA9IF9fb3JfPF9faXNfcmVmZXJlbmNl
YWJsZTxfVHA+LAogICAgICAgICAgaXNfdm9pZDxfVHA+Pjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19h
ZGRfcG9pbnRlcl9oZWxwZXIKICAgIHsgdHlwZWRlZiBfVHAgdHlwZTsgfTsKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fYWRkX3BvaW50ZXJfaGVscGVyPF9UcCwgdHJ1ZT4K
ICAgIHsgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPF9UcD46OnR5cGUqIHR5cGU7
IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBhZGRfcG9pbnRlcgogICAg
OiBwdWJsaWMgX19hZGRfcG9pbnRlcl9oZWxwZXI8X1RwPgogICAgeyB9OwojIDE4NTkgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvdHlwZV90
cmFpdHMiIDMKICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBfTGVuPgogICAgc3RydWN0IF9fYWxpZ25l
ZF9zdG9yYWdlX21zYQogICAgewogICAgICB1bmlvbiBfX3R5cGUKICAgICAgewogdW5zaWduZWQg
Y2hhciBfX2RhdGFbX0xlbl07CiBzdHJ1Y3QgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18pKSB7
IH0gX19hbGlnbjsKICAgICAgfTsKICAgIH07CiMgMTg3OSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy90eXBlX3RyYWl0cyIgMwogIHRlbXBs
YXRlPHN0ZDo6c2l6ZV90IF9MZW4sIHN0ZDo6c2l6ZV90IF9BbGlnbiA9CiAgICBfX2FsaWdub2Zf
Xyh0eXBlbmFtZSBfX2FsaWduZWRfc3RvcmFnZV9tc2E8X0xlbj46Ol9fdHlwZSk+CiAgICBzdHJ1
Y3QgYWxpZ25lZF9zdG9yYWdlCiAgICB7CiAgICAgIHVuaW9uIHR5cGUKICAgICAgewogdW5zaWdu
ZWQgY2hhciBfX2RhdGFbX0xlbl07CiBzdHJ1Y3QgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18o
KF9BbGlnbikpKSkgeyB9IF9fYWxpZ247CiAgICAgIH07CiAgICB9OwoKCgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVXAsCiAgICBib29sIF9Jc0FycmF5ID0gaXNfYXJyYXk8X1VwPjo6dmFsdWUsCiAg
ICBib29sIF9Jc0Z1bmN0aW9uID0gaXNfZnVuY3Rpb248X1VwPjo6dmFsdWU+CiAgICBzdHJ1Y3Qg
X19kZWNheV9zZWxlY3RvcjsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4KICAgIHN0cnVjdCBf
X2RlY2F5X3NlbGVjdG9yPF9VcCwgZmFsc2UsIGZhbHNlPgogICAgeyB0eXBlZGVmIHR5cGVuYW1l
IHJlbW92ZV9jdjxfVXA+Ojp0eXBlIF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Vw
PgogICAgc3RydWN0IF9fZGVjYXlfc2VsZWN0b3I8X1VwLCB0cnVlLCBmYWxzZT4KICAgIHsgdHlw
ZWRlZiB0eXBlbmFtZSByZW1vdmVfZXh0ZW50PF9VcD46OnR5cGUqIF9fdHlwZTsgfTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1VwPgogICAgc3RydWN0IF9fZGVjYXlfc2VsZWN0b3I8X1VwLCBmYWxz
ZSwgdHJ1ZT4KICAgIHsgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcG9pbnRlcjxfVXA+Ojp0eXBlIF9f
dHlwZTsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGNsYXNzIGRlY2F5CiAgICB7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxfVHA+Ojp0eXBlIF9fcmVt
b3ZlX3R5cGU7CgogICAgcHVibGljOgogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fZGVjYXlfc2Vs
ZWN0b3I8X19yZW1vdmVfdHlwZT46Ol9fdHlwZSB0eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPgogICAgY2xhc3MgcmVmZXJlbmNlX3dyYXBwZXI7CgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19zdHJpcF9yZWZlcmVuY2Vfd3JhcHBlcgogICAgewogICAg
ICB0eXBlZGVmIF9UcCBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBzdHJ1Y3QgX19zdHJpcF9yZWZlcmVuY2Vfd3JhcHBlcjxyZWZlcmVuY2Vfd3JhcHBlcjxfVHA+
ID4KICAgIHsKICAgICAgdHlwZWRlZiBfVHAmIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2RlY2F5X2FuZF9zdHJpcAogICAgewogICAgICB0eXBl
ZGVmIHR5cGVuYW1lIF9fc3RyaXBfcmVmZXJlbmNlX3dyYXBwZXI8CiB0eXBlbmFtZSBkZWNheTxf
VHA+Ojp0eXBlPjo6X190eXBlIF9fdHlwZTsKICAgIH07CgoKCgogIHRlbXBsYXRlPGJvb2wsIHR5
cGVuYW1lIF9UcCA9IHZvaWQ+CiAgICBzdHJ1Y3QgZW5hYmxlX2lmCiAgICB7IH07CgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgZW5hYmxlX2lmPHRydWUsIF9UcD4KICAgIHsg
dHlwZWRlZiBfVHAgdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0NvbmQ+CiAgICB1
c2luZyBfUmVxdWlyZSA9IHR5cGVuYW1lIGVuYWJsZV9pZjxfX2FuZF88X0NvbmQuLi4+Ojp2YWx1
ZT46OnR5cGU7CgoKCiAgdGVtcGxhdGU8Ym9vbCBfQ29uZCwgdHlwZW5hbWUgX0lmdHJ1ZSwgdHlw
ZW5hbWUgX0lmZmFsc2U+CiAgICBzdHJ1Y3QgY29uZGl0aW9uYWwKICAgIHsgdHlwZWRlZiBfSWZ0
cnVlIHR5cGU7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSWZ0cnVlLCB0eXBlbmFtZSBfSWZm
YWxzZT4KICAgIHN0cnVjdCBjb25kaXRpb25hbDxmYWxzZSwgX0lmdHJ1ZSwgX0lmZmFsc2U+CiAg
ICB7IHR5cGVkZWYgX0lmZmFsc2UgdHlwZTsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9U
cD4KICAgIHN0cnVjdCBjb21tb25fdHlwZTsKCgoKICBzdHJ1Y3QgX19kb19jb21tb25fdHlwZV9p
bXBsCiAgewogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+CiAgICAgIHN0
YXRpYyBfX3N1Y2Nlc3NfdHlwZTx0eXBlbmFtZSBkZWNheTxkZWNsdHlwZQogICAgICAgKHRydWUg
PyBzdGQ6OmRlY2x2YWw8X1RwPigpCiAgICAgICAgOiBzdGQ6OmRlY2x2YWw8X1VwPigpKT46OnR5
cGU+IF9TX3Rlc3QoaW50KTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+CiAgICAg
IHN0YXRpYyBfX2ZhaWx1cmVfdHlwZSBfU190ZXN0KC4uLik7CiAgfTsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+CiAgICBzdHJ1Y3QgX19jb21tb25fdHlwZV9pbXBsCiAg
ICA6IHByaXZhdGUgX19kb19jb21tb25fdHlwZV9pbXBsCiAgICB7CiAgICAgIHR5cGVkZWYgZGVj
bHR5cGUoX1NfdGVzdDxfVHAsIF9VcD4oMCkpIHR5cGU7CiAgICB9OwoKICBzdHJ1Y3QgX19kb19t
ZW1iZXJfdHlwZV93cmFwcGVyCiAgewogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgICBz
dGF0aWMgX19zdWNjZXNzX3R5cGU8dHlwZW5hbWUgX1RwOjp0eXBlPiBfU190ZXN0KGludCk7Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWU+CiAgICAgIHN0YXRpYyBfX2ZhaWx1cmVfdHlwZSBfU190ZXN0
KC4uLik7CiAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fbWVtYmVy
X3R5cGVfd3JhcHBlcgogICAgOiBwcml2YXRlIF9fZG9fbWVtYmVyX3R5cGVfd3JhcHBlcgogICAg
ewogICAgICB0eXBlZGVmIGRlY2x0eXBlKF9TX3Rlc3Q8X1RwPigwKSkgdHlwZTsKICAgIH07Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DVHAsIHR5cGVuYW1lLi4uIF9BcmdzPgogICAgc3RydWN0IF9f
ZXhwYW5kZWRfY29tbW9uX3R5cGVfd3JhcHBlcgogICAgewogICAgICB0eXBlZGVmIGNvbW1vbl90
eXBlPHR5cGVuYW1lIF9DVHA6OnR5cGUsIF9BcmdzLi4uPiB0eXBlOwogICAgfTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUuLi4gX0FyZ3M+CiAgICBzdHJ1Y3QgX19leHBhbmRlZF9jb21tb25fdHlwZV93
cmFwcGVyPF9fZmFpbHVyZV90eXBlLCBfQXJncy4uLj4KICAgIHsgdHlwZWRlZiBfX2ZhaWx1cmVf
dHlwZSB0eXBlOyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgY29tbW9u
X3R5cGU8X1RwPgogICAgeyB0eXBlZGVmIHR5cGVuYW1lIGRlY2F5PF9UcD46OnR5cGUgdHlwZTsg
fTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+CiAgICBzdHJ1Y3QgY29t
bW9uX3R5cGU8X1RwLCBfVXA+CiAgICA6IHB1YmxpYyBfX2NvbW1vbl90eXBlX2ltcGw8X1RwLCBf
VXA+Ojp0eXBlCiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1Vw
LCB0eXBlbmFtZS4uLiBfVnA+CiAgICBzdHJ1Y3QgY29tbW9uX3R5cGU8X1RwLCBfVXAsIF9WcC4u
Lj4KICAgIDogcHVibGljIF9fZXhwYW5kZWRfY29tbW9uX3R5cGVfd3JhcHBlcjx0eXBlbmFtZSBf
X21lbWJlcl90eXBlX3dyYXBwZXI8CiAgICAgICAgICAgICAgIGNvbW1vbl90eXBlPF9UcCwgX1Vw
Pj46OnR5cGUsIF9WcC4uLj46OnR5cGUKICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICAgIHN0cnVjdCB1bmRlcmx5aW5nX3R5cGUKICAgIHsKICAgICAgdHlwZWRlZiBfX3VuZGVy
bHlpbmdfdHlwZShfVHApIHR5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBzdHJ1Y3QgX19kZWNsdmFsX3Byb3RlY3RvcgogICAgewogICAgICBzdGF0aWMgY29uc3QgYm9v
bCBfX3N0b3AgPSBmYWxzZTsKICAgICAgc3RhdGljIHR5cGVuYW1lIGFkZF9ydmFsdWVfcmVmZXJl
bmNlPF9UcD46OnR5cGUgX19kZWxlZ2F0ZSgpOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgaW5saW5lIHR5cGVuYW1lIGFkZF9ydmFsdWVfcmVmZXJlbmNlPF9UcD46OnR5cGUK
ICAgIGRlY2x2YWwoKSBub2V4Y2VwdAogICAgewogICAgICBzdGF0aWNfYXNzZXJ0KF9fZGVjbHZh
bF9wcm90ZWN0b3I8X1RwPjo6X19zdG9wLAogICAgICAiZGVjbHZhbCgpIG11c3Qgbm90IGJlIHVz
ZWQhIik7CiAgICAgIHJldHVybiBfX2RlY2x2YWxfcHJvdGVjdG9yPF9UcD46Ol9fZGVsZWdhdGUo
KTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9TaWduYXR1cmU+CiAgICBjbGFzcyByZXN1
bHRfb2Y7CgoKCiNkZWZpbmUgX19jcHBfbGliX3Jlc3VsdF9vZl9zZmluYWUgMjAxMjEwCgoKICBz
dHJ1Y3QgX19yZXN1bHRfb2ZfbWVtZnVuX3JlZl9pbXBsCiAgewogICAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZwLCB0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZS4uLiBfQXJncz4KICAgICAgc3RhdGljIF9f
c3VjY2Vzc190eXBlPGRlY2x0eXBlKAogICAgICAoc3RkOjpkZWNsdmFsPF9UcDE+KCkuKnN0ZDo6
ZGVjbHZhbDxfRnA+KCkpKHN0ZDo6ZGVjbHZhbDxfQXJncz4oKS4uLikKICAgICAgKT4gX1NfdGVz
dChpbnQpOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uPgogICAgICBzdGF0aWMgX19mYWlsdXJl
X3R5cGUgX1NfdGVzdCguLi4pOwogIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9NZW1QdHIsIHR5
cGVuYW1lIF9BcmcsIHR5cGVuYW1lLi4uIF9BcmdzPgogICAgc3RydWN0IF9fcmVzdWx0X29mX21l
bWZ1bl9yZWYKICAgIDogcHJpdmF0ZSBfX3Jlc3VsdF9vZl9tZW1mdW5fcmVmX2ltcGwKICAgIHsK
ICAgICAgdHlwZWRlZiBkZWNsdHlwZShfU190ZXN0PF9NZW1QdHIsIF9BcmcsIF9BcmdzLi4uPigw
KSkgdHlwZTsKICAgIH07CgoKICBzdHJ1Y3QgX19yZXN1bHRfb2ZfbWVtZnVuX2RlcmVmX2ltcGwK
ICB7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnAsIHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1lLi4u
IF9BcmdzPgogICAgICBzdGF0aWMgX19zdWNjZXNzX3R5cGU8ZGVjbHR5cGUoCiAgICAgICgoKnN0
ZDo6ZGVjbHZhbDxfVHAxPigpKS4qc3RkOjpkZWNsdmFsPF9GcD4oKSkoc3RkOjpkZWNsdmFsPF9B
cmdzPigpLi4uKQogICAgICApPiBfU190ZXN0KGludCk7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4+CiAgICAgIHN0YXRpYyBfX2ZhaWx1cmVfdHlwZSBfU190ZXN0KC4uLik7CiAgfTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX01lbVB0ciwgdHlwZW5hbWUgX0FyZywgdHlwZW5hbWUuLi4gX0FyZ3M+
CiAgICBzdHJ1Y3QgX19yZXN1bHRfb2ZfbWVtZnVuX2RlcmVmCiAgICA6IHByaXZhdGUgX19yZXN1
bHRfb2ZfbWVtZnVuX2RlcmVmX2ltcGwKICAgIHsKICAgICAgdHlwZWRlZiBkZWNsdHlwZShfU190
ZXN0PF9NZW1QdHIsIF9BcmcsIF9BcmdzLi4uPigwKSkgdHlwZTsKICAgIH07CgoKICBzdHJ1Y3Qg
X19yZXN1bHRfb2ZfbWVtb2JqX3JlZl9pbXBsCiAgewogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zw
LCB0eXBlbmFtZSBfVHAxPgogICAgICBzdGF0aWMgX19zdWNjZXNzX3R5cGU8ZGVjbHR5cGUoCiAg
ICAgIHN0ZDo6ZGVjbHZhbDxfVHAxPigpLipzdGQ6OmRlY2x2YWw8X0ZwPigpCiAgICAgICk+IF9T
X3Rlc3QoaW50KTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+CiAgICAgIHN0YXRp
YyBfX2ZhaWx1cmVfdHlwZSBfU190ZXN0KC4uLik7CiAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X01lbVB0ciwgdHlwZW5hbWUgX0FyZz4KICAgIHN0cnVjdCBfX3Jlc3VsdF9vZl9tZW1vYmpfcmVm
CiAgICA6IHByaXZhdGUgX19yZXN1bHRfb2ZfbWVtb2JqX3JlZl9pbXBsCiAgICB7CiAgICAgIHR5
cGVkZWYgZGVjbHR5cGUoX1NfdGVzdDxfTWVtUHRyLCBfQXJnPigwKSkgdHlwZTsKICAgIH07CgoK
ICBzdHJ1Y3QgX19yZXN1bHRfb2ZfbWVtb2JqX2RlcmVmX2ltcGwKICB7CiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfRnAsIHR5cGVuYW1lIF9UcDE+CiAgICAgIHN0YXRpYyBfX3N1Y2Nlc3NfdHlwZTxk
ZWNsdHlwZSgKICAgICAgKCpzdGQ6OmRlY2x2YWw8X1RwMT4oKSkuKnN0ZDo6ZGVjbHZhbDxfRnA+
KCkKICAgICAgKT4gX1NfdGVzdChpbnQpOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFt
ZT4KICAgICAgc3RhdGljIF9fZmFpbHVyZV90eXBlIF9TX3Rlc3QoLi4uKTsKICB9OwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfTWVtUHRyLCB0eXBlbmFtZSBfQXJnPgogICAgc3RydWN0IF9fcmVzdWx0
X29mX21lbW9ial9kZXJlZgogICAgOiBwcml2YXRlIF9fcmVzdWx0X29mX21lbW9ial9kZXJlZl9p
bXBsCiAgICB7CiAgICAgIHR5cGVkZWYgZGVjbHR5cGUoX1NfdGVzdDxfTWVtUHRyLCBfQXJnPigw
KSkgdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9NZW1QdHIsIHR5cGVuYW1lIF9B
cmc+CiAgICBzdHJ1Y3QgX19yZXN1bHRfb2ZfbWVtb2JqOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
UmVzLCB0eXBlbmFtZSBfQ2xhc3MsIHR5cGVuYW1lIF9Bcmc+CiAgICBzdHJ1Y3QgX19yZXN1bHRf
b2ZfbWVtb2JqPF9SZXMgX0NsYXNzOjoqLCBfQXJnPgogICAgewogICAgICB0eXBlZGVmIHR5cGVu
YW1lIHJlbW92ZV9jdjx0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPAogICAgICAgIF9Bcmc+Ojp0
eXBlPjo6dHlwZSBfQXJndmFsOwogICAgICB0eXBlZGVmIF9SZXMgX0NsYXNzOjoqIF9NZW1QdHI7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY29uZGl0aW9uYWw8X19vcl88aXNfc2FtZTxfQXJndmFs
LCBfQ2xhc3M+LAogICAgICAgIGlzX2Jhc2Vfb2Y8X0NsYXNzLCBfQXJndmFsPj46OnZhbHVlLAog
ICAgICAgIF9fcmVzdWx0X29mX21lbW9ial9yZWY8X01lbVB0ciwgX0FyZz4sCiAgICAgICAgX19y
ZXN1bHRfb2ZfbWVtb2JqX2RlcmVmPF9NZW1QdHIsIF9Bcmc+CiAgICAgID46OnR5cGU6OnR5cGUg
dHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9NZW1QdHIsIHR5cGVuYW1lIF9Bcmcs
IHR5cGVuYW1lLi4uIF9BcmdzPgogICAgc3RydWN0IF9fcmVzdWx0X29mX21lbWZ1bjsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUgX0NsYXNzLCB0eXBlbmFtZSBfQXJnLCB0eXBl
bmFtZS4uLiBfQXJncz4KICAgIHN0cnVjdCBfX3Jlc3VsdF9vZl9tZW1mdW48X1JlcyBfQ2xhc3M6
OiosIF9BcmcsIF9BcmdzLi4uPgogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9j
djx0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPAogICAgICAgIF9Bcmc+Ojp0eXBlPjo6dHlwZSBf
QXJndmFsOwogICAgICB0eXBlZGVmIF9SZXMgX0NsYXNzOjoqIF9NZW1QdHI7CiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgY29uZGl0aW9uYWw8X19vcl88aXNfc2FtZTxfQXJndmFsLCBfQ2xhc3M+LAog
ICAgICAgIGlzX2Jhc2Vfb2Y8X0NsYXNzLCBfQXJndmFsPj46OnZhbHVlLAogICAgICAgIF9fcmVz
dWx0X29mX21lbWZ1bl9yZWY8X01lbVB0ciwgX0FyZywgX0FyZ3MuLi4+LAogICAgICAgIF9fcmVz
dWx0X29mX21lbWZ1bl9kZXJlZjxfTWVtUHRyLCBfQXJnLCBfQXJncy4uLj4KICAgICAgPjo6dHlw
ZTo6dHlwZSB0eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8Ym9vbCwgYm9vbCwgdHlwZW5hbWUgX0Z1
bmN0b3IsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAgIHN0cnVjdCBfX3Jlc3VsdF9vZl9pbXBs
CiAgICB7CiAgICAgIHR5cGVkZWYgX19mYWlsdXJlX3R5cGUgdHlwZTsKICAgIH07CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9NZW1QdHIsIHR5cGVuYW1lIF9Bcmc+CiAgICBzdHJ1Y3QgX19yZXN1bHRf
b2ZfaW1wbDx0cnVlLCBmYWxzZSwgX01lbVB0ciwgX0FyZz4KICAgIDogcHVibGljIF9fcmVzdWx0
X29mX21lbW9iajx0eXBlbmFtZSBkZWNheTxfTWVtUHRyPjo6dHlwZSwgX0FyZz4KICAgIHsgfTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX01lbVB0ciwgdHlwZW5hbWUgX0FyZywgdHlwZW5hbWUuLi4g
X0FyZ3M+CiAgICBzdHJ1Y3QgX19yZXN1bHRfb2ZfaW1wbDxmYWxzZSwgdHJ1ZSwgX01lbVB0ciwg
X0FyZywgX0FyZ3MuLi4+CiAgICA6IHB1YmxpYyBfX3Jlc3VsdF9vZl9tZW1mdW48dHlwZW5hbWUg
ZGVjYXk8X01lbVB0cj46OnR5cGUsIF9BcmcsIF9BcmdzLi4uPgogICAgeyB9OwoKCiAgc3RydWN0
IF9fcmVzdWx0X29mX290aGVyX2ltcGwKICB7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm4sIHR5
cGVuYW1lLi4uIF9BcmdzPgogICAgICBzdGF0aWMgX19zdWNjZXNzX3R5cGU8ZGVjbHR5cGUoCiAg
ICAgIHN0ZDo6ZGVjbHZhbDxfRm4+KCkoc3RkOjpkZWNsdmFsPF9BcmdzPigpLi4uKQogICAgICAp
PiBfU190ZXN0KGludCk7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4+CiAgICAgIHN0YXRpYyBf
X2ZhaWx1cmVfdHlwZSBfU190ZXN0KC4uLik7CiAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1
bmN0b3IsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAgIHN0cnVjdCBfX3Jlc3VsdF9vZl9pbXBs
PGZhbHNlLCBmYWxzZSwgX0Z1bmN0b3IsIF9BcmdUeXBlcy4uLj4KICAgIDogcHJpdmF0ZSBfX3Jl
c3VsdF9vZl9vdGhlcl9pbXBsCiAgICB7CiAgICAgIHR5cGVkZWYgZGVjbHR5cGUoX1NfdGVzdDxf
RnVuY3RvciwgX0FyZ1R5cGVzLi4uPigwKSkgdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9GdW5jdG9yLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgcmVzdWx0X29m
PF9GdW5jdG9yKF9BcmdUeXBlcy4uLik+CiAgICA6IHB1YmxpYyBfX3Jlc3VsdF9vZl9pbXBsPAog
ICAgICAgIGlzX21lbWJlcl9vYmplY3RfcG9pbnRlcjwKICAgICAgICAgIHR5cGVuYW1lIHJlbW92
ZV9yZWZlcmVuY2U8X0Z1bmN0b3I+Ojp0eXBlCiAgICAgICAgPjo6dmFsdWUsCiAgICAgICAgaXNf
bWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXI8CiAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfcmVmZXJl
bmNlPF9GdW5jdG9yPjo6dHlwZQogICAgICAgID46OnZhbHVlLAogICAgIF9GdW5jdG9yLCBfQXJn
VHlwZXMuLi4KICAgICAgPjo6dHlwZQogICAgeyB9OwojIDIyNTkgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvdHlwZV90cmFpdHMiIDMKI2Rl
ZmluZSBfR0xJQkNYWF9IQVNfTkVTVEVEX1RZUEUoX05UWVBFKSB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+IGNsYXNzIF9faGFzXyAjI19OVFlQRSAjI19oZWxwZXIgeyB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VXA+IHN0cnVjdCBfV3JhcF90eXBlIHsgfTsgdGVtcGxhdGU8dHlwZW5hbWUgX1VwPiBzdGF0aWMg
dHJ1ZV90eXBlIF9fdGVzdChfV3JhcF90eXBlPHR5cGVuYW1lIF9VcDo6X05UWVBFPiopOyB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVXA+IHN0YXRpYyBmYWxzZV90eXBlIF9fdGVzdCguLi4pOyBwdWJsaWM6
IHR5cGVkZWYgZGVjbHR5cGUoX190ZXN0PF9UcD4oMCkpIHR5cGU7IH07IHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4gc3RydWN0IF9faGFzXyAjI19OVFlQRSA6IHB1YmxpYyBfX2hhc18gIyNfTlRZUEUg
IyNfaGVscGVyIDx0eXBlbmFtZSByZW1vdmVfY3Y8X1RwPjo6dHlwZT46OnR5cGUgeyB9OwojIDIy
ODMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvdHlwZV90cmFpdHMiIDMKCn0KIyAzOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9yYXRpbyIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9jc3RkaW50IiAxIDMKIyAz
MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9jc3RkaW50IiAzCiNkZWZpbmUgX0dMSUJDWFhfQ1NURElOVCAxCgogICAgICAgCiMgMzMgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvY3N0
ZGludCIgMwojIDQxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2NzdGRpbnQiIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRpbnQuaCIgMSAzIDQKCgoKI3VuZGVm
IF9fU1REQ19MSU1JVF9NQUNST1MKI2RlZmluZSBfX1NURENfTElNSVRfTUFDUk9TIAojdW5kZWYg
X19TVERDX0NPTlNUQU5UX01BQ1JPUwojZGVmaW5lIF9fU1REQ19DT05TVEFOVF9NQUNST1MgCgoj
IDEgIi91c3IvaW5jbHVkZS9zdGRpbnQuaCIgMSAzIDQKIyAyMyAiL3Vzci9pbmNsdWRlL3N0ZGlu
dC5oIiAzIDQKI2RlZmluZSBfU1RESU5UX0ggMQoKCiMgMSAiL3Vzci9pbmNsdWRlL2FybS1saW51
eC1nbnVlYWJpaGYvYml0cy93Y2hhci5oIiAxIDMgNAojIDIwICIvdXNyL2luY2x1ZGUvYXJtLWxp
bnV4LWdudWVhYmloZi9iaXRzL3djaGFyLmgiIDMgNAojZGVmaW5lIF9CSVRTX1dDSEFSX0ggMQoj
IDM0ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3djaGFyLmgiIDMgNAoj
ZGVmaW5lIF9fV0NIQVJfTUFYIF9fV0NIQVJfTUFYX18KCgoKCgoKCiNkZWZpbmUgX19XQ0hBUl9N
SU4gX19XQ0hBUl9NSU5fXwojIDI3ICIvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDIgMyA0CiMgMSAi
L3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy93b3Jkc2l6ZS5oIiAxIDMgNAoj
IDE4ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3dvcmRzaXplLmgiIDMg
NAojZGVmaW5lIF9fV09SRFNJWkUgMzIKIyAyOCAiL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAyIDMg
NAojIDQ4ICIvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg
dWludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdWludDE2X3Q7Cgp0eXBlZGVmIHVu
c2lnbmVkIGludCB1aW50MzJfdDsKI2RlZmluZSBfX3VpbnQzMl90X2RlZmluZWQgCgoKCgpfX2V4
dGVuc2lvbl9fCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCB1aW50NjRfdDsKCgoKCgoK
dHlwZWRlZiBzaWduZWQgY2hhciBpbnRfbGVhc3Q4X3Q7CnR5cGVkZWYgc2hvcnQgaW50IGludF9s
ZWFzdDE2X3Q7CnR5cGVkZWYgaW50IGludF9sZWFzdDMyX3Q7CgoKCl9fZXh0ZW5zaW9uX18KdHlw
ZWRlZiBsb25nIGxvbmcgaW50IGludF9sZWFzdDY0X3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgY2hh
ciB1aW50X2xlYXN0OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1aW50X2xlYXN0MTZf
dDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9sZWFzdDMyX3Q7CgoKCl9fZXh0ZW5zaW9uX18K
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnRfbGVhc3Q2NF90OwoKCgoKCgp0eXBl
ZGVmIHNpZ25lZCBjaGFyIGludF9mYXN0OF90OwoKCgoKCnR5cGVkZWYgaW50IGludF9mYXN0MTZf
dDsKdHlwZWRlZiBpbnQgaW50X2Zhc3QzMl90OwpfX2V4dGVuc2lvbl9fCnR5cGVkZWYgbG9uZyBs
b25nIGludCBpbnRfZmFzdDY0X3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50X2Zhc3Q4
X3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9mYXN0MTZfdDsKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgdWludF9mYXN0MzJfdDsKX19leHRlbnNpb25fXwp0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgdWludF9mYXN0NjRfdDsKIyAxMjUgIi91c3IvaW5jbHVkZS9zdGRpbnQuaCIg
MyA0CnR5cGVkZWYgaW50IGludHB0cl90OwojZGVmaW5lIF9faW50cHRyX3RfZGVmaW5lZCAKCnR5
cGVkZWYgdW5zaWduZWQgaW50IHVpbnRwdHJfdDsKIyAxMzcgIi91c3IvaW5jbHVkZS9zdGRpbnQu
aCIgMyA0Cl9fZXh0ZW5zaW9uX18KdHlwZWRlZiBsb25nIGxvbmcgaW50IGludG1heF90OwpfX2V4
dGVuc2lvbl9fCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCB1aW50bWF4X3Q7CgoKCgoK
CgojZGVmaW5lIF9fSU5UNjRfQyhjKSBjICMjIExMCiNkZWZpbmUgX19VSU5UNjRfQyhjKSBjICMj
IFVMTAoKCgoKCiNkZWZpbmUgSU5UOF9NSU4gKC0xMjgpCiNkZWZpbmUgSU5UMTZfTUlOICgtMzI3
NjctMSkKI2RlZmluZSBJTlQzMl9NSU4gKC0yMTQ3NDgzNjQ3LTEpCiNkZWZpbmUgSU5UNjRfTUlO
ICgtX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpLTEpCgojZGVmaW5lIElOVDhfTUFYICgx
MjcpCiNkZWZpbmUgSU5UMTZfTUFYICgzMjc2NykKI2RlZmluZSBJTlQzMl9NQVggKDIxNDc0ODM2
NDcpCiNkZWZpbmUgSU5UNjRfTUFYIChfX0lOVDY0X0MoOTIyMzM3MjAzNjg1NDc3NTgwNykpCgoK
I2RlZmluZSBVSU5UOF9NQVggKDI1NSkKI2RlZmluZSBVSU5UMTZfTUFYICg2NTUzNSkKI2RlZmlu
ZSBVSU5UMzJfTUFYICg0Mjk0OTY3Mjk1VSkKI2RlZmluZSBVSU5UNjRfTUFYIChfX1VJTlQ2NF9D
KDE4NDQ2NzQ0MDczNzA5NTUxNjE1KSkKCgoKI2RlZmluZSBJTlRfTEVBU1Q4X01JTiAoLTEyOCkK
I2RlZmluZSBJTlRfTEVBU1QxNl9NSU4gKC0zMjc2Ny0xKQojZGVmaW5lIElOVF9MRUFTVDMyX01J
TiAoLTIxNDc0ODM2NDctMSkKI2RlZmluZSBJTlRfTEVBU1Q2NF9NSU4gKC1fX0lOVDY0X0MoOTIy
MzM3MjAzNjg1NDc3NTgwNyktMSkKCiNkZWZpbmUgSU5UX0xFQVNUOF9NQVggKDEyNykKI2RlZmlu
ZSBJTlRfTEVBU1QxNl9NQVggKDMyNzY3KQojZGVmaW5lIElOVF9MRUFTVDMyX01BWCAoMjE0NzQ4
MzY0NykKI2RlZmluZSBJTlRfTEVBU1Q2NF9NQVggKF9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1
ODA3KSkKCgojZGVmaW5lIFVJTlRfTEVBU1Q4X01BWCAoMjU1KQojZGVmaW5lIFVJTlRfTEVBU1Qx
Nl9NQVggKDY1NTM1KQojZGVmaW5lIFVJTlRfTEVBU1QzMl9NQVggKDQyOTQ5NjcyOTVVKQojZGVm
aW5lIFVJTlRfTEVBU1Q2NF9NQVggKF9fVUlOVDY0X0MoMTg0NDY3NDQwNzM3MDk1NTE2MTUpKQoK
CgojZGVmaW5lIElOVF9GQVNUOF9NSU4gKC0xMjgpCgoKCgojZGVmaW5lIElOVF9GQVNUMTZfTUlO
ICgtMjE0NzQ4MzY0Ny0xKQojZGVmaW5lIElOVF9GQVNUMzJfTUlOICgtMjE0NzQ4MzY0Ny0xKQoK
I2RlZmluZSBJTlRfRkFTVDY0X01JTiAoLV9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KS0x
KQoKI2RlZmluZSBJTlRfRkFTVDhfTUFYICgxMjcpCgoKCgojZGVmaW5lIElOVF9GQVNUMTZfTUFY
ICgyMTQ3NDgzNjQ3KQojZGVmaW5lIElOVF9GQVNUMzJfTUFYICgyMTQ3NDgzNjQ3KQoKI2RlZmlu
ZSBJTlRfRkFTVDY0X01BWCAoX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpKQoKCiNkZWZp
bmUgVUlOVF9GQVNUOF9NQVggKDI1NSkKCgoKCiNkZWZpbmUgVUlOVF9GQVNUMTZfTUFYICg0Mjk0
OTY3Mjk1VSkKI2RlZmluZSBVSU5UX0ZBU1QzMl9NQVggKDQyOTQ5NjcyOTVVKQoKI2RlZmluZSBV
SU5UX0ZBU1Q2NF9NQVggKF9fVUlOVDY0X0MoMTg0NDY3NDQwNzM3MDk1NTE2MTUpKQojIDIyOSAi
L3Vzci9pbmNsdWRlL3N0ZGludC5oIiAzIDQKI2RlZmluZSBJTlRQVFJfTUlOICgtMjE0NzQ4MzY0
Ny0xKQojZGVmaW5lIElOVFBUUl9NQVggKDIxNDc0ODM2NDcpCiNkZWZpbmUgVUlOVFBUUl9NQVgg
KDQyOTQ5NjcyOTVVKQoKCgoKI2RlZmluZSBJTlRNQVhfTUlOICgtX19JTlQ2NF9DKDkyMjMzNzIw
MzY4NTQ3NzU4MDcpLTEpCgojZGVmaW5lIElOVE1BWF9NQVggKF9fSU5UNjRfQyg5MjIzMzcyMDM2
ODU0Nzc1ODA3KSkKCgojZGVmaW5lIFVJTlRNQVhfTUFYIChfX1VJTlQ2NF9DKDE4NDQ2NzQ0MDcz
NzA5NTUxNjE1KSkKIyAyNTEgIi91c3IvaW5jbHVkZS9zdGRpbnQuaCIgMyA0CiNkZWZpbmUgUFRS
RElGRl9NSU4gKC0yMTQ3NDgzNjQ3LTEpCiNkZWZpbmUgUFRSRElGRl9NQVggKDIxNDc0ODM2NDcp
CgoKCiNkZWZpbmUgU0lHX0FUT01JQ19NSU4gKC0yMTQ3NDgzNjQ3LTEpCiNkZWZpbmUgU0lHX0FU
T01JQ19NQVggKDIxNDc0ODM2NDcpCgoKCgoKI2RlZmluZSBTSVpFX01BWCAoNDI5NDk2NzI5NVUp
CgoKCgoKI2RlZmluZSBXQ0hBUl9NSU4gX19XQ0hBUl9NSU4KI2RlZmluZSBXQ0hBUl9NQVggX19X
Q0hBUl9NQVgKCgoKI2RlZmluZSBXSU5UX01JTiAoMHUpCiNkZWZpbmUgV0lOVF9NQVggKDQyOTQ5
NjcyOTV1KQoKCiNkZWZpbmUgSU5UOF9DKGMpIGMKI2RlZmluZSBJTlQxNl9DKGMpIGMKI2RlZmlu
ZSBJTlQzMl9DKGMpIGMKCgoKI2RlZmluZSBJTlQ2NF9DKGMpIGMgIyMgTEwKCgoKI2RlZmluZSBV
SU5UOF9DKGMpIGMKI2RlZmluZSBVSU5UMTZfQyhjKSBjCiNkZWZpbmUgVUlOVDMyX0MoYykgYyAj
IyBVCgoKCiNkZWZpbmUgVUlOVDY0X0MoYykgYyAjIyBVTEwKCgoKCgoKCiNkZWZpbmUgSU5UTUFY
X0MoYykgYyAjIyBMTAojZGVmaW5lIFVJTlRNQVhfQyhjKSBjICMjIFVMTAojIDEwICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRp
bnQuaCIgMiAzIDQKCgoKI2RlZmluZSBfR0NDX1dSQVBfU1RESU5UX0ggCiMgNDIgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvY3N0ZGludCIg
MiAzCgoKCgpuYW1lc3BhY2Ugc3RkCnsKICB1c2luZyA6OmludDhfdDsKICB1c2luZyA6OmludDE2
X3Q7CiAgdXNpbmcgOjppbnQzMl90OwogIHVzaW5nIDo6aW50NjRfdDsKCiAgdXNpbmcgOjppbnRf
ZmFzdDhfdDsKICB1c2luZyA6OmludF9mYXN0MTZfdDsKICB1c2luZyA6OmludF9mYXN0MzJfdDsK
ICB1c2luZyA6OmludF9mYXN0NjRfdDsKCiAgdXNpbmcgOjppbnRfbGVhc3Q4X3Q7CiAgdXNpbmcg
OjppbnRfbGVhc3QxNl90OwogIHVzaW5nIDo6aW50X2xlYXN0MzJfdDsKICB1c2luZyA6OmludF9s
ZWFzdDY0X3Q7CgogIHVzaW5nIDo6aW50bWF4X3Q7CiAgdXNpbmcgOjppbnRwdHJfdDsKCiAgdXNp
bmcgOjp1aW50OF90OwogIHVzaW5nIDo6dWludDE2X3Q7CiAgdXNpbmcgOjp1aW50MzJfdDsKICB1
c2luZyA6OnVpbnQ2NF90OwoKICB1c2luZyA6OnVpbnRfZmFzdDhfdDsKICB1c2luZyA6OnVpbnRf
ZmFzdDE2X3Q7CiAgdXNpbmcgOjp1aW50X2Zhc3QzMl90OwogIHVzaW5nIDo6dWludF9mYXN0NjRf
dDsKCiAgdXNpbmcgOjp1aW50X2xlYXN0OF90OwogIHVzaW5nIDo6dWludF9sZWFzdDE2X3Q7CiAg
dXNpbmcgOjp1aW50X2xlYXN0MzJfdDsKICB1c2luZyA6OnVpbnRfbGVhc3Q2NF90OwoKICB1c2lu
ZyA6OnVpbnRtYXhfdDsKICB1c2luZyA6OnVpbnRwdHJfdDsKfQojIDQwICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3JhdGlvIiAyIDMKCgoK
bmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0Iikp
KQp7CgojIDU1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL3JhdGlvIiAzCiAgdGVtcGxhdGU8aW50bWF4X3QgX1BuPgogICAgc3RydWN0IF9f
c3RhdGljX3NpZ24KICAgIDogaW50ZWdyYWxfY29uc3RhbnQ8aW50bWF4X3QsIChfUG4gPCAwKSA/
IC0xIDogMT4KICAgIHsgfTsKCiAgdGVtcGxhdGU8aW50bWF4X3QgX1BuPgogICAgc3RydWN0IF9f
c3RhdGljX2FicwogICAgOiBpbnRlZ3JhbF9jb25zdGFudDxpbnRtYXhfdCwgX1BuICogX19zdGF0
aWNfc2lnbjxfUG4+Ojp2YWx1ZT4KICAgIHsgfTsKCiAgdGVtcGxhdGU8aW50bWF4X3QgX1BuLCBp
bnRtYXhfdCBfUW4+CiAgICBzdHJ1Y3QgX19zdGF0aWNfZ2NkCiAgICA6IF9fc3RhdGljX2djZDxf
UW4sIChfUG4gJSBfUW4pPgogICAgeyB9OwoKICB0ZW1wbGF0ZTxpbnRtYXhfdCBfUG4+CiAgICBz
dHJ1Y3QgX19zdGF0aWNfZ2NkPF9QbiwgMD4KICAgIDogaW50ZWdyYWxfY29uc3RhbnQ8aW50bWF4
X3QsIF9fc3RhdGljX2FiczxfUG4+Ojp2YWx1ZT4KICAgIHsgfTsKCiAgdGVtcGxhdGU8aW50bWF4
X3QgX1FuPgogICAgc3RydWN0IF9fc3RhdGljX2djZDwwLCBfUW4+CiAgICA6IGludGVncmFsX2Nv
bnN0YW50PGludG1heF90LCBfX3N0YXRpY19hYnM8X1FuPjo6dmFsdWU+CiAgICB7IH07CgoKCgoK
CgogIHRlbXBsYXRlPGludG1heF90IF9QbiwgaW50bWF4X3QgX1FuPgogICAgc3RydWN0IF9fc2Fm
ZV9tdWx0aXBseQogICAgewogICAgcHJpdmF0ZToKICAgICAgc3RhdGljIGNvbnN0IHVpbnRtYXhf
dCBfX2MgPSB1aW50bWF4X3QoMSkgPDwgKHNpemVvZihpbnRtYXhfdCkgKiA0KTsKCiAgICAgIHN0
YXRpYyBjb25zdCB1aW50bWF4X3QgX19hMCA9IF9fc3RhdGljX2FiczxfUG4+Ojp2YWx1ZSAlIF9f
YzsKICAgICAgc3RhdGljIGNvbnN0IHVpbnRtYXhfdCBfX2ExID0gX19zdGF0aWNfYWJzPF9Qbj46
OnZhbHVlIC8gX19jOwogICAgICBzdGF0aWMgY29uc3QgdWludG1heF90IF9fYjAgPSBfX3N0YXRp
Y19hYnM8X1FuPjo6dmFsdWUgJSBfX2M7CiAgICAgIHN0YXRpYyBjb25zdCB1aW50bWF4X3QgX19i
MSA9IF9fc3RhdGljX2FiczxfUW4+Ojp2YWx1ZSAvIF9fYzsKCiAgICAgIHN0YXRpY19hc3NlcnQo
X19hMSA9PSAwIHx8IF9fYjEgPT0gMCwKICAgICAgIm92ZXJmbG93IGluIG11bHRpcGxpY2F0aW9u
Iik7CiAgICAgIHN0YXRpY19hc3NlcnQoX19hMCAqIF9fYjEgKyBfX2IwICogX19hMSA8IChfX2Mg
Pj4gMSksCiAgICAgICJvdmVyZmxvdyBpbiBtdWx0aXBsaWNhdGlvbiIpOwogICAgICBzdGF0aWNf
YXNzZXJ0KF9fYjAgKiBfX2EwIDw9IDkyMjMzNzIwMzY4NTQ3NzU4MDdMTCwKICAgICAgIm92ZXJm
bG93IGluIG11bHRpcGxpY2F0aW9uIik7CiAgICAgIHN0YXRpY19hc3NlcnQoKF9fYTAgKiBfX2Ix
ICsgX19iMCAqIF9fYTEpICogX19jCiAgICAgIDw9IDkyMjMzNzIwMzY4NTQ3NzU4MDdMTCAtIF9f
YjAgKiBfX2EwLAogICAgICAib3ZlcmZsb3cgaW4gbXVsdGlwbGljYXRpb24iKTsKCiAgICBwdWJs
aWM6CiAgICAgIHN0YXRpYyBjb25zdCBpbnRtYXhfdCB2YWx1ZSA9IF9QbiAqIF9RbjsKICAgIH07
CgoKCiAgdGVtcGxhdGU8dWludG1heF90IF9faGkxLCB1aW50bWF4X3QgX19sbzEsIHVpbnRtYXhf
dCBfX2hpMiwgdWludG1heF90IF9fbG8yPgogICAgc3RydWN0IF9fYmlnX2xlc3MKICAgIDogaW50
ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgKF9faGkxIDwgX19oaTIKICAgICAgICAgIHx8IChfX2hpMSA9
PSBfX2hpMiAmJiBfX2xvMSA8IF9fbG8yKSk+CiAgICB7IH07CgogIHRlbXBsYXRlPHVpbnRtYXhf
dCBfX2hpMSwgdWludG1heF90IF9fbG8xLCB1aW50bWF4X3QgX19oaTIsIHVpbnRtYXhfdCBfX2xv
Mj4KICAgIHN0cnVjdCBfX2JpZ19hZGQKICAgIHsKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
bWF4X3QgX19sbyA9IF9fbG8xICsgX19sbzI7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1h
eF90IF9faGkgPSAoX19oaTEgKyBfX2hpMiArCiAgICAgIChfX2xvMSArIF9fbG8yIDwgX19sbzEp
KTsKICAgIH07CgoKICB0ZW1wbGF0ZTx1aW50bWF4X3QgX19oaTEsIHVpbnRtYXhfdCBfX2xvMSwg
dWludG1heF90IF9faGkyLCB1aW50bWF4X3QgX19sbzI+CiAgICBzdHJ1Y3QgX19iaWdfc3ViCiAg
ICB7CiAgICAgIHN0YXRpY19hc3NlcnQoIV9fYmlnX2xlc3M8X19oaTEsIF9fbG8xLCBfX2hpMiwg
X19sbzI+Ojp2YWx1ZSwKICAgICAgIkludGVybmFsIGxpYnJhcnkgZXJyb3IiKTsKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50bWF4X3QgX19sbyA9IF9fbG8xIC0gX19sbzI7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludG1heF90IF9faGkgPSAoX19oaTEgLSBfX2hpMiAtCiAgICAgIChfX2xv
MSA8IF9fbG8yKSk7CiAgICB9OwoKCiAgdGVtcGxhdGU8dWludG1heF90IF9feCwgdWludG1heF90
IF9feT4KICAgIHN0cnVjdCBfX2JpZ19tdWwKICAgIHsKICAgIHByaXZhdGU6CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludG1heF90IF9fYyA9IHVpbnRtYXhfdCgxKSA8PCAoc2l6ZW9mKGludG1h
eF90KSAqIDQpOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3gwID0gX194ICUg
X19jOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3gxID0gX194IC8gX19jOwog
ICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3kwID0gX195ICUgX19jOwogICAgICBz
dGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3kxID0gX195IC8gX19jOwogICAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnRtYXhfdCBfX3gweTAgPSBfX3gwICogX195MDsKICAgICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50bWF4X3QgX194MHkxID0gX194MCAqIF9feTE7CiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludG1heF90IF9feDF5MCA9IF9feDEgKiBfX3kwOwogICAgICBzdGF0aWMgY29uc3Rl
eHByIHVpbnRtYXhfdCBfX3gxeTEgPSBfX3gxICogX195MTsKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50bWF4X3QgX19taXggPSBfX3gweTEgKyBfX3gxeTA7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgdWludG1heF90IF9fbWl4X2xvID0gX19taXggKiBfX2M7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgdWludG1heF90IF9fbWl4X2hpCiAgICAgID0gX19taXggLyBfX2MgKyAoKF9fbWl4IDwgX194
MHkxKSA/IF9fYyA6IDApOwogICAgICB0eXBlZGVmIF9fYmlnX2FkZDxfX21peF9oaSwgX19taXhf
bG8sIF9feDF5MSwgX194MHkwPiBfUmVzOwogICAgcHVibGljOgogICAgICBzdGF0aWMgY29uc3Rl
eHByIHVpbnRtYXhfdCBfX2hpID0gX1Jlczo6X19oaTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50bWF4X3QgX19sbyA9IF9SZXM6Ol9fbG87CiAgICB9OwoKCgogIHRlbXBsYXRlPHVpbnRtYXhf
dCBfX24xLCB1aW50bWF4X3QgX19uMCwgdWludG1heF90IF9fZD4KICAgIHN0cnVjdCBfX2JpZ19k
aXZfaW1wbAogICAgewogICAgcHJpdmF0ZToKICAgICAgc3RhdGljX2Fzc2VydChfX2QgPj0gKHVp
bnRtYXhfdCgxKSA8PCAoc2l6ZW9mKGludG1heF90KSAqIDggLSAxKSksCiAgICAgICJJbnRlcm5h
bCBsaWJyYXJ5IGVycm9yIik7CiAgICAgIHN0YXRpY19hc3NlcnQoX19uMSA8IF9fZCwgIkludGVy
bmFsIGxpYnJhcnkgZXJyb3IiKTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50bWF4X3QgX19j
ID0gdWludG1heF90KDEpIDw8IChzaXplb2YoaW50bWF4X3QpICogNCk7CiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludG1heF90IF9fZDEgPSBfX2QgLyBfX2M7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgdWludG1heF90IF9fZDAgPSBfX2QgJSBfX2M7CgogICAgICBzdGF0aWMgY29uc3RleHByIHVp
bnRtYXhfdCBfX3ExeCA9IF9fbjEgLyBfX2QxOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRt
YXhfdCBfX3IxeCA9IF9fbjEgJSBfX2QxOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhf
dCBfX20gPSBfX3ExeCAqIF9fZDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9f
cjF5ID0gX19yMXggKiBfX2MgKyBfX24wIC8gX19jOwogICAgICBzdGF0aWMgY29uc3RleHByIHVp
bnRtYXhfdCBfX3IxeiA9IF9fcjF5ICsgX19kOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRt
YXhfdCBfX3IxCiAgICAgID0gKChfX3IxeSA8IF9fbSkgPyAoKF9fcjF6ID49IF9fZCkgJiYgKF9f
cjF6IDwgX19tKSkKICA/IChfX3IxeiArIF9fZCkgOiBfX3IxeiA6IF9fcjF5KSAtIF9fbTsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50bWF4X3QgX19xMQogICAgICA9IF9fcTF4IC0gKChfX3Ix
eSA8IF9fbSkKICAgPyAoKF9fcjF6ID49IF9fZCkgJiYgKF9fcjF6IDwgX19tKSkgPyAyIDogMSA6
IDApOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3EweCA9IF9fcjEgLyBfX2Qx
OwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3IweCA9IF9fcjEgJSBfX2QxOwog
ICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX24gPSBfX3EweCAqIF9fZDA7CiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9fcjB5ID0gX19yMHggKiBfX2MgKyBfX24wICUg
X19jOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3IweiA9IF9fcjB5ICsgX19k
OwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3IwCiAgICAgID0gKChfX3IweSA8
IF9fbikgPyAoKF9fcjB6ID49IF9fZCkgJiYgKF9fcjB6IDwgX19uKSkKICA/IChfX3IweiArIF9f
ZCkgOiBfX3IweiA6IF9fcjB5KSAtIF9fbjsKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50bWF4
X3QgX19xMAogICAgICA9IF9fcTB4IC0gKChfX3IweSA8IF9fbikgPyAoKF9fcjB6ID49IF9fZCkK
ICAgICAgJiYgKF9fcjB6IDwgX19uKSkgPyAyIDogMSA6IDApOwoKICAgIHB1YmxpYzoKICAgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50bWF4X3QgX19xdW90ID0gX19xMSAqIF9fYyArIF9fcTA7CiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9fcmVtID0gX19yMDsKCiAgICBwcml2YXRl
OgogICAgICB0eXBlZGVmIF9fYmlnX211bDxfX3F1b3QsIF9fZD4gX1Byb2Q7CiAgICAgIHR5cGVk
ZWYgX19iaWdfYWRkPF9Qcm9kOjpfX2hpLCBfUHJvZDo6X19sbywgMCwgX19yZW0+IF9TdW07CiAg
ICAgIHN0YXRpY19hc3NlcnQoX1N1bTo6X19oaSA9PSBfX24xICYmIF9TdW06Ol9fbG8gPT0gX19u
MCwKICAgICAgIkludGVybmFsIGxpYnJhcnkgZXJyb3IiKTsKICB9OwoKICB0ZW1wbGF0ZTx1aW50
bWF4X3QgX19uMSwgdWludG1heF90IF9fbjAsIHVpbnRtYXhfdCBfX2Q+CiAgICBzdHJ1Y3QgX19i
aWdfZGl2CiAgICB7CiAgICBwcml2YXRlOgogICAgICBzdGF0aWNfYXNzZXJ0KF9fZCAhPSAwLCAi
SW50ZXJuYWwgbGlicmFyeSBlcnJvciIpOwogICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZiAodWlu
dG1heF90KSA9PSBzaXplb2YgKHVuc2lnbmVkIGxvbmcgbG9uZyksCiAgICAgICJUaGlzIGxpYnJh
cnkgY2FsbHMgX19idWlsdGluX2NsemxsIG9uIHVpbnRtYXhfdCwgd2hpY2ggIgogICAgICAiaXMg
dW5zYWZlIG9uIHlvdXIgcGxhdGZvcm0uIFBsZWFzZSBjb21wbGFpbiB0byAiCiAgICAgICJodHRw
Oi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvIik7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IF9f
c2hpZnQgPSBfX2J1aWx0aW5fY2x6bGwoX19kKTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQg
X19jb3NoaWZ0XyA9IHNpemVvZih1aW50bWF4X3QpICogOCAtIF9fc2hpZnQ7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IF9fY29zaGlmdCA9IChfX3NoaWZ0ICE9IDApID8gX19jb3NoaWZ0XyA6
IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9fYzEgPSB1aW50bWF4X3QoMSkg
PDwgX19zaGlmdDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50bWF4X3QgX19jMiA9IHVpbnRt
YXhfdCgxKSA8PCBfX2Nvc2hpZnQ7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9f
bmV3X2QgPSBfX2QgKiBfX2MxOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX25l
d19uMCA9IF9fbjAgKiBfX2MxOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX24x
X3NoaWZ0ZWQgPSAoX19uMSAlIF9fZCkgKiBfX2MxOwogICAgICBzdGF0aWMgY29uc3RleHByIHVp
bnRtYXhfdCBfX24wX3RvcCA9IChfX3NoaWZ0ICE9IDApID8gKF9fbjAgLyBfX2MyKSA6IDA7CiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9fbmV3X24xID0gX19uMV9zaGlmdGVkICsg
X19uMF90b3A7CiAgICAgIHR5cGVkZWYgX19iaWdfZGl2X2ltcGw8X19uZXdfbjEsIF9fbmV3X24w
LCBfX25ld19kPiBfUmVzOwoKICAgIHB1YmxpYzoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
bWF4X3QgX19xdW90X2hpID0gX19uMSAvIF9fZDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
bWF4X3QgX19xdW90X2xvID0gX1Jlczo6X19xdW90OwogICAgICBzdGF0aWMgY29uc3RleHByIHVp
bnRtYXhfdCBfX3JlbSA9IF9SZXM6Ol9fcmVtIC8gX19jMTsKCiAgICBwcml2YXRlOgogICAgICB0
eXBlZGVmIF9fYmlnX211bDxfX3F1b3RfbG8sIF9fZD4gX1AwOwogICAgICB0eXBlZGVmIF9fYmln
X211bDxfX3F1b3RfaGksIF9fZD4gX1AxOwogICAgICB0eXBlZGVmIF9fYmlnX2FkZDxfUDA6Ol9f
aGksIF9QMDo6X19sbywgX1AxOjpfX2xvLCBfX3JlbT4gX1N1bTsKCiAgICAgIHN0YXRpY19hc3Nl
cnQoX1AxOjpfX2hpID09IDAsICJJbnRlcm5hbCBsaWJyYXJ5IGVycm9yIik7CiAgICAgIHN0YXRp
Y19hc3NlcnQoX1N1bTo6X19oaSA+PSBfUDA6Ol9faGksICJJbnRlcm5hbCBsaWJyYXJ5IGVycm9y
Iik7CgogICAgICBzdGF0aWNfYXNzZXJ0KF9TdW06Ol9faGkgPT0gX19uMSAmJiBfU3VtOjpfX2xv
ID09IF9fbjAsCiAgICAgICJJbnRlcm5hbCBsaWJyYXJ5IGVycm9yIik7CiAgICAgIHN0YXRpY19h
c3NlcnQoX19yZW0gPCBfX2QsICJJbnRlcm5hbCBsaWJyYXJ5IGVycm9yIik7CiAgICB9OwojIDI2
MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9yYXRpbyIgMwogIHRlbXBsYXRlPGludG1heF90IF9OdW0sIGludG1heF90IF9EZW4gPSAxPgog
ICAgc3RydWN0IHJhdGlvCiAgICB7CiAgICAgIHN0YXRpY19hc3NlcnQoX0RlbiAhPSAwLCAiZGVu
b21pbmF0b3IgY2Fubm90IGJlIHplcm8iKTsKICAgICAgc3RhdGljX2Fzc2VydChfTnVtID49IC05
MjIzMzcyMDM2ODU0Nzc1ODA3TEwgJiYgX0RlbiA+PSAtOTIyMzM3MjAzNjg1NDc3NTgwN0xMLAog
ICAgICAib3V0IG9mIHJhbmdlIik7CgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnRtYXhfdCBu
dW0gPQogICAgICAgIF9OdW0gKiBfX3N0YXRpY19zaWduPF9EZW4+Ojp2YWx1ZSAvIF9fc3RhdGlj
X2djZDxfTnVtLCBfRGVuPjo6dmFsdWU7CgogICAgICBzdGF0aWMgY29uc3RleHByIGludG1heF90
IGRlbiA9CiAgICAgICAgX19zdGF0aWNfYWJzPF9EZW4+Ojp2YWx1ZSAvIF9fc3RhdGljX2djZDxf
TnVtLCBfRGVuPjo6dmFsdWU7CgogICAgICB0eXBlZGVmIHJhdGlvPG51bSwgZGVuPiB0eXBlOwog
ICAgfTsKCiAgdGVtcGxhdGU8aW50bWF4X3QgX051bSwgaW50bWF4X3QgX0Rlbj4KICAgIGNvbnN0
ZXhwciBpbnRtYXhfdCByYXRpbzxfTnVtLCBfRGVuPjo6bnVtOwoKICB0ZW1wbGF0ZTxpbnRtYXhf
dCBfTnVtLCBpbnRtYXhfdCBfRGVuPgogICAgY29uc3RleHByIGludG1heF90IHJhdGlvPF9OdW0s
IF9EZW4+OjpkZW47CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SMSwgdHlwZW5hbWUgX1IyPgogICAg
c3RydWN0IF9fcmF0aW9fbXVsdGlwbHkKICAgIHsKICAgIHByaXZhdGU6CiAgICAgIHN0YXRpYyBj
b25zdCBpbnRtYXhfdCBfX2djZDEgPQogICAgICAgIF9fc3RhdGljX2djZDxfUjE6Om51bSwgX1Iy
OjpkZW4+Ojp2YWx1ZTsKICAgICAgc3RhdGljIGNvbnN0IGludG1heF90IF9fZ2NkMiA9CiAgICAg
ICAgX19zdGF0aWNfZ2NkPF9SMjo6bnVtLCBfUjE6OmRlbj46OnZhbHVlOwoKICAgIHB1YmxpYzoK
ICAgICAgdHlwZWRlZiByYXRpbzwKICAgICAgICBfX3NhZmVfbXVsdGlwbHk8KF9SMTo6bnVtIC8g
X19nY2QxKSwKICAgICAgICAgICAgICAgICAgICAgICAgKF9SMjo6bnVtIC8gX19nY2QyKT46OnZh
bHVlLAogICAgICAgIF9fc2FmZV9tdWx0aXBseTwoX1IxOjpkZW4gLyBfX2djZDIpLAogICAgICAg
ICAgICAgICAgICAgICAgICAoX1IyOjpkZW4gLyBfX2djZDEpPjo6dmFsdWU+IHR5cGU7CgogICAg
ICBzdGF0aWMgY29uc3RleHByIGludG1heF90IG51bSA9IHR5cGU6Om51bTsKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnRtYXhfdCBkZW4gPSB0eXBlOjpkZW47CiAgICB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9SMj4KICAgIGNvbnN0ZXhwciBpbnRtYXhfdCBfX3JhdGlv
X211bHRpcGx5PF9SMSwgX1IyPjo6bnVtOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUjEsIHR5cGVu
YW1lIF9SMj4KICAgIGNvbnN0ZXhwciBpbnRtYXhfdCBfX3JhdGlvX211bHRpcGx5PF9SMSwgX1Iy
Pjo6ZGVuOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1IxLCB0eXBlbmFtZSBfUjI+CiAgICB1c2lu
ZyByYXRpb19tdWx0aXBseSA9IHR5cGVuYW1lIF9fcmF0aW9fbXVsdGlwbHk8X1IxLCBfUjI+Ojp0
eXBlOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9SMj4KICAgIHN0cnVjdCBf
X3JhdGlvX2RpdmlkZQogICAgewogICAgICBzdGF0aWNfYXNzZXJ0KF9SMjo6bnVtICE9IDAsICJk
aXZpc2lvbiBieSAwIik7CgogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fcmF0aW9fbXVsdGlwbHk8
CiAgICAgICAgX1IxLAogICAgICAgIHJhdGlvPF9SMjo6ZGVuLCBfUjI6Om51bT4+Ojp0eXBlIHR5
cGU7CgogICAgICBzdGF0aWMgY29uc3RleHByIGludG1heF90IG51bSA9IHR5cGU6Om51bTsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnRtYXhfdCBkZW4gPSB0eXBlOjpkZW47CiAgICB9OwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9SMj4KICAgIGNvbnN0ZXhwciBpbnRtYXhf
dCBfX3JhdGlvX2RpdmlkZTxfUjEsIF9SMj46Om51bTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Ix
LCB0eXBlbmFtZSBfUjI+CiAgICBjb25zdGV4cHIgaW50bWF4X3QgX19yYXRpb19kaXZpZGU8X1Ix
LCBfUjI+OjpkZW47CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9SMj4KICAg
IHVzaW5nIHJhdGlvX2RpdmlkZSA9IHR5cGVuYW1lIF9fcmF0aW9fZGl2aWRlPF9SMSwgX1IyPjo6
dHlwZTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SMSwgdHlwZW5hbWUgX1IyPgogICAgc3RydWN0
IHJhdGlvX2VxdWFsCiAgICA6IGludGVncmFsX2NvbnN0YW50PGJvb2wsIF9SMTo6bnVtID09IF9S
Mjo6bnVtICYmIF9SMTo6ZGVuID09IF9SMjo6ZGVuPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1IxLCB0eXBlbmFtZSBfUjI+CiAgICBzdHJ1Y3QgcmF0aW9fbm90X2VxdWFsCiAgICA6
IGludGVncmFsX2NvbnN0YW50PGJvb2wsICFyYXRpb19lcXVhbDxfUjEsIF9SMj46OnZhbHVlPgog
ICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1IxLCB0eXBlbmFtZSBfUjIsCiAgICAgICAg
ICAgdHlwZW5hbWUgX0xlZnQgPSBfX2JpZ19tdWw8X1IxOjpudW0sX1IyOjpkZW4+LAogICAgICAg
ICAgIHR5cGVuYW1lIF9SaWdodCA9IF9fYmlnX211bDxfUjI6Om51bSxfUjE6OmRlbj4gPgogICAg
c3RydWN0IF9fcmF0aW9fbGVzc19pbXBsXzEKICAgIDogaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwg
X19iaWdfbGVzczxfTGVmdDo6X19oaSwgX0xlZnQ6Ol9fbG8sCiAgICAgICAgICAgX1JpZ2h0Ojpf
X2hpLCBfUmlnaHQ6Ol9fbG8+Ojp2YWx1ZT4KICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1IxLCB0eXBlbmFtZSBfUjIsCiAgICBib29sID0gKF9SMTo6bnVtID09IDAgfHwgX1IyOjpudW0g
PT0gMAogICAgIHx8IChfX3N0YXRpY19zaWduPF9SMTo6bnVtPjo6dmFsdWUKICAgICAgICAgIT0g
X19zdGF0aWNfc2lnbjxfUjI6Om51bT46OnZhbHVlKSksCiAgICBib29sID0gKF9fc3RhdGljX3Np
Z248X1IxOjpudW0+Ojp2YWx1ZSA9PSAtMQogICAgICYmIF9fc3RhdGljX3NpZ248X1IyOjpudW0+
Ojp2YWx1ZSA9PSAtMSk+CiAgICBzdHJ1Y3QgX19yYXRpb19sZXNzX2ltcGwKICAgIDogX19yYXRp
b19sZXNzX2ltcGxfMTxfUjEsIF9SMj46OnR5cGUKICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1IxLCB0eXBlbmFtZSBfUjI+CiAgICBzdHJ1Y3QgX19yYXRpb19sZXNzX2ltcGw8X1IxLCBf
UjIsIHRydWUsIGZhbHNlPgogICAgOiBpbnRlZ3JhbF9jb25zdGFudDxib29sLCBfUjE6Om51bSA8
IF9SMjo6bnVtPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9S
Mj4KICAgIHN0cnVjdCBfX3JhdGlvX2xlc3NfaW1wbDxfUjEsIF9SMiwgZmFsc2UsIHRydWU+CiAg
ICA6IF9fcmF0aW9fbGVzc19pbXBsXzE8cmF0aW88LV9SMjo6bnVtLCBfUjI6OmRlbj4sCiAgICAg
ICAgICAgcmF0aW88LV9SMTo6bnVtLCBfUjE6OmRlbj4gPjo6dHlwZQogICAgeyB9OwoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1IxLCB0eXBlbmFtZSBfUjI+CiAgICBzdHJ1Y3QgcmF0aW9fbGVzcwog
ICAgOiBfX3JhdGlvX2xlc3NfaW1wbDxfUjEsIF9SMj46OnR5cGUKICAgIHsgfTsKCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9SMSwgdHlwZW5hbWUgX1IyPgogICAgc3RydWN0IHJhdGlvX2xlc3NfZXF1
YWwKICAgIDogaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgIXJhdGlvX2xlc3M8X1IyLCBfUjE+Ojp2
YWx1ZT4KICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SMSwgdHlwZW5hbWUgX1IyPgog
ICAgc3RydWN0IHJhdGlvX2dyZWF0ZXIKICAgIDogaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgcmF0
aW9fbGVzczxfUjIsIF9SMT46OnZhbHVlPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1IxLCB0eXBlbmFtZSBfUjI+CiAgICBzdHJ1Y3QgcmF0aW9fZ3JlYXRlcl9lcXVhbAogICAgOiBp
bnRlZ3JhbF9jb25zdGFudDxib29sLCAhcmF0aW9fbGVzczxfUjEsIF9SMj46OnZhbHVlPgogICAg
eyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9SMiwKICAgICAgYm9vbCA9
IChfUjE6Om51bSA+PSAwKSwKICAgICAgYm9vbCA9IChfUjI6Om51bSA+PSAwKSwKICAgICAgYm9v
bCA9IHJhdGlvX2xlc3M8cmF0aW88X19zdGF0aWNfYWJzPF9SMTo6bnVtPjo6dmFsdWUsIF9SMTo6
ZGVuPiwKICAgICAgICByYXRpbzxfX3N0YXRpY19hYnM8X1IyOjpudW0+Ojp2YWx1ZSwgX1IyOjpk
ZW4+ID46OnZhbHVlPgogICAgc3RydWN0IF9fcmF0aW9fYWRkX2ltcGwKICAgIHsKICAgIHByaXZh
dGU6CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19yYXRpb19hZGRfaW1wbDwKICAgICAgICByYXRp
bzwtX1IxOjpudW0sIF9SMTo6ZGVuPiwKICAgICAgICByYXRpbzwtX1IyOjpudW0sIF9SMjo6ZGVu
PiA+Ojp0eXBlIF9fdDsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiByYXRpbzwtX190OjpudW0s
IF9fdDo6ZGVuPiB0eXBlOwogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SMSwgdHlwZW5h
bWUgX1IyLCBib29sIF9fYj4KICAgIHN0cnVjdCBfX3JhdGlvX2FkZF9pbXBsPF9SMSwgX1IyLCB0
cnVlLCB0cnVlLCBfX2I+CiAgICB7CiAgICBwcml2YXRlOgogICAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnRtYXhfdCBfX2cgPSBfX3N0YXRpY19nY2Q8X1IxOjpkZW4sIF9SMjo6ZGVuPjo6dmFsdWU7
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9fZDIgPSBfUjI6OmRlbiAvIF9fZzsK
ICAgICAgdHlwZWRlZiBfX2JpZ19tdWw8X1IxOjpkZW4sIF9fZDI+IF9fZDsKICAgICAgdHlwZWRl
ZiBfX2JpZ19tdWw8X1IxOjpudW0sIF9SMjo6ZGVuIC8gX19nPiBfX3g7CiAgICAgIHR5cGVkZWYg
X19iaWdfbXVsPF9SMjo6bnVtLCBfUjE6OmRlbiAvIF9fZz4gX195OwogICAgICB0eXBlZGVmIF9f
YmlnX2FkZDxfX3g6Ol9faGksIF9feDo6X19sbywgX195OjpfX2hpLCBfX3k6Ol9fbG8+IF9fbjsK
ICAgICAgc3RhdGljX2Fzc2VydChfX246Ol9faGkgPj0gX194OjpfX2hpLCAiSW50ZXJuYWwgbGli
cmFyeSBlcnJvciIpOwogICAgICB0eXBlZGVmIF9fYmlnX2RpdjxfX246Ol9faGksIF9fbjo6X19s
bywgX19nPiBfX25nOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX2cyID0gX19z
dGF0aWNfZ2NkPF9fbmc6Ol9fcmVtLCBfX2c+Ojp2YWx1ZTsKICAgICAgdHlwZWRlZiBfX2JpZ19k
aXY8X19uOjpfX2hpLCBfX246Ol9fbG8sIF9fZzI+IF9fbl9maW5hbDsKICAgICAgc3RhdGljX2Fz
c2VydChfX25fZmluYWw6Ol9fcmVtID09IDAsICJJbnRlcm5hbCBsaWJyYXJ5IGVycm9yIik7CiAg
ICAgIHN0YXRpY19hc3NlcnQoX19uX2ZpbmFsOjpfX3F1b3RfaGkgPT0gMCAmJgogICAgICAgIF9f
bl9maW5hbDo6X19xdW90X2xvIDw9IDkyMjMzNzIwMzY4NTQ3NzU4MDdMTCwgIm92ZXJmbG93IGlu
IGFkZGl0aW9uIik7CiAgICAgIHR5cGVkZWYgX19iaWdfbXVsPF9SMTo6ZGVuIC8gX19nMiwgX19k
Mj4gX19kX2ZpbmFsOwogICAgICBzdGF0aWNfYXNzZXJ0KF9fZF9maW5hbDo6X19oaSA9PSAwICYm
CiAgICAgICAgX19kX2ZpbmFsOjpfX2xvIDw9IDkyMjMzNzIwMzY4NTQ3NzU4MDdMTCwgIm92ZXJm
bG93IGluIGFkZGl0aW9uIik7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgcmF0aW88X19uX2Zp
bmFsOjpfX3F1b3RfbG8sIF9fZF9maW5hbDo6X19sbz4gdHlwZTsKICAgIH07CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9SMSwgdHlwZW5hbWUgX1IyPgogICAgc3RydWN0IF9fcmF0aW9fYWRkX2ltcGw8
X1IxLCBfUjIsIGZhbHNlLCB0cnVlLCB0cnVlPgogICAgOiBfX3JhdGlvX2FkZF9pbXBsPF9SMiwg
X1IxPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1IxLCB0eXBlbmFtZSBfUjI+CiAg
ICBzdHJ1Y3QgX19yYXRpb19hZGRfaW1wbDxfUjEsIF9SMiwgdHJ1ZSwgZmFsc2UsIGZhbHNlPgog
ICAgewogICAgcHJpdmF0ZToKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50bWF4X3QgX19nID0g
X19zdGF0aWNfZ2NkPF9SMTo6ZGVuLCBfUjI6OmRlbj46OnZhbHVlOwogICAgICBzdGF0aWMgY29u
c3RleHByIHVpbnRtYXhfdCBfX2QyID0gX1IyOjpkZW4gLyBfX2c7CiAgICAgIHR5cGVkZWYgX19i
aWdfbXVsPF9SMTo6ZGVuLCBfX2QyPiBfX2Q7CiAgICAgIHR5cGVkZWYgX19iaWdfbXVsPF9SMTo6
bnVtLCBfUjI6OmRlbiAvIF9fZz4gX194OwogICAgICB0eXBlZGVmIF9fYmlnX211bDwtX1IyOjpu
dW0sIF9SMTo6ZGVuIC8gX19nPiBfX3k7CiAgICAgIHR5cGVkZWYgX19iaWdfc3ViPF9feDo6X19o
aSwgX194OjpfX2xvLCBfX3k6Ol9faGksIF9feTo6X19sbz4gX19uOwogICAgICB0eXBlZGVmIF9f
YmlnX2RpdjxfX246Ol9faGksIF9fbjo6X19sbywgX19nPiBfX25nOwogICAgICBzdGF0aWMgY29u
c3RleHByIHVpbnRtYXhfdCBfX2cyID0gX19zdGF0aWNfZ2NkPF9fbmc6Ol9fcmVtLCBfX2c+Ojp2
YWx1ZTsKICAgICAgdHlwZWRlZiBfX2JpZ19kaXY8X19uOjpfX2hpLCBfX246Ol9fbG8sIF9fZzI+
IF9fbl9maW5hbDsKICAgICAgc3RhdGljX2Fzc2VydChfX25fZmluYWw6Ol9fcmVtID09IDAsICJJ
bnRlcm5hbCBsaWJyYXJ5IGVycm9yIik7CiAgICAgIHN0YXRpY19hc3NlcnQoX19uX2ZpbmFsOjpf
X3F1b3RfaGkgPT0gMCAmJgogICAgICAgIF9fbl9maW5hbDo6X19xdW90X2xvIDw9IDkyMjMzNzIw
MzY4NTQ3NzU4MDdMTCwgIm92ZXJmbG93IGluIGFkZGl0aW9uIik7CiAgICAgIHR5cGVkZWYgX19i
aWdfbXVsPF9SMTo6ZGVuIC8gX19nMiwgX19kMj4gX19kX2ZpbmFsOwogICAgICBzdGF0aWNfYXNz
ZXJ0KF9fZF9maW5hbDo6X19oaSA9PSAwICYmCiAgICAgICAgX19kX2ZpbmFsOjpfX2xvIDw9IDky
MjMzNzIwMzY4NTQ3NzU4MDdMTCwgIm92ZXJmbG93IGluIGFkZGl0aW9uIik7CiAgICBwdWJsaWM6
CiAgICAgIHR5cGVkZWYgcmF0aW88X19uX2ZpbmFsOjpfX3F1b3RfbG8sIF9fZF9maW5hbDo6X19s
bz4gdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SMSwgdHlwZW5hbWUgX1IyPgog
ICAgc3RydWN0IF9fcmF0aW9fYWRkCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19yYXRp
b19hZGRfaW1wbDxfUjEsIF9SMj46OnR5cGUgdHlwZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnRtYXhfdCBudW0gPSB0eXBlOjpudW07CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50bWF4X3Qg
ZGVuID0gdHlwZTo6ZGVuOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1IxLCB0eXBlbmFt
ZSBfUjI+CiAgICBjb25zdGV4cHIgaW50bWF4X3QgX19yYXRpb19hZGQ8X1IxLCBfUjI+OjpudW07
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SMSwgdHlwZW5hbWUgX1IyPgogICAgY29uc3RleHByIGlu
dG1heF90IF9fcmF0aW9fYWRkPF9SMSwgX1IyPjo6ZGVuOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1IxLCB0eXBlbmFtZSBfUjI+CiAgICB1c2luZyByYXRpb19hZGQgPSB0eXBlbmFtZSBfX3JhdGlv
X2FkZDxfUjEsIF9SMj46OnR5cGU7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SMSwgdHlwZW5hbWUg
X1IyPgogICAgc3RydWN0IF9fcmF0aW9fc3VidHJhY3QKICAgIHsKICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBfX3JhdGlvX2FkZDwKICAgICAgICBfUjEsCiAgICAgICAgcmF0aW88LV9SMjo6bnVtLCBf
UjI6OmRlbj4+Ojp0eXBlIHR5cGU7CgogICAgICBzdGF0aWMgY29uc3RleHByIGludG1heF90IG51
bSA9IHR5cGU6Om51bTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnRtYXhfdCBkZW4gPSB0eXBl
OjpkZW47CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9SMj4KICAg
IGNvbnN0ZXhwciBpbnRtYXhfdCBfX3JhdGlvX3N1YnRyYWN0PF9SMSwgX1IyPjo6bnVtOwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9SMj4KICAgIGNvbnN0ZXhwciBpbnRtYXhf
dCBfX3JhdGlvX3N1YnRyYWN0PF9SMSwgX1IyPjo6ZGVuOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1IxLCB0eXBlbmFtZSBfUjI+CiAgICB1c2luZyByYXRpb19zdWJ0cmFjdCA9IHR5cGVuYW1lIF9f
cmF0aW9fc3VidHJhY3Q8X1IxLCBfUjI+Ojp0eXBlOwoKCiAgdHlwZWRlZiByYXRpbzwxLCAxMDAw
MDAwMDAwMDAwMDAwMDAwPiBhdHRvOwogIHR5cGVkZWYgcmF0aW88MSwgMTAwMDAwMDAwMDAwMDAw
MD4gZmVtdG87CiAgdHlwZWRlZiByYXRpbzwxLCAxMDAwMDAwMDAwMDAwPiBwaWNvOwogIHR5cGVk
ZWYgcmF0aW88MSwgMTAwMDAwMDAwMD4gbmFubzsKICB0eXBlZGVmIHJhdGlvPDEsIDEwMDAwMDA+
IG1pY3JvOwogIHR5cGVkZWYgcmF0aW88MSwgMTAwMD4gbWlsbGk7CiAgdHlwZWRlZiByYXRpbzwx
LCAxMDA+IGNlbnRpOwogIHR5cGVkZWYgcmF0aW88MSwgMTA+IGRlY2k7CiAgdHlwZWRlZiByYXRp
bzwgMTAsIDE+IGRlY2E7CiAgdHlwZWRlZiByYXRpbzwgMTAwLCAxPiBoZWN0bzsKICB0eXBlZGVm
IHJhdGlvPCAxMDAwLCAxPiBraWxvOwogIHR5cGVkZWYgcmF0aW88IDEwMDAwMDAsIDE+IG1lZ2E7
CiAgdHlwZWRlZiByYXRpbzwgMTAwMDAwMDAwMCwgMT4gZ2lnYTsKICB0eXBlZGVmIHJhdGlvPCAx
MDAwMDAwMDAwMDAwLCAxPiB0ZXJhOwogIHR5cGVkZWYgcmF0aW88IDEwMDAwMDAwMDAwMDAwMDAs
IDE+IHBldGE7CiAgdHlwZWRlZiByYXRpbzwgMTAwMDAwMDAwMDAwMDAwMDAwMCwgMT4gZXhhOwoK
Cgp9CiMgMzkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvY2hyb25vIiAyIDMKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9saW1pdHMiIDEgMwojIDM4ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2xpbWl0cyIgMwojZGVm
aW5lIF9HTElCQ1hYX05VTUVSSUNfTElNSVRTIDEKCiAgICAgICAKIyA0MSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9saW1pdHMiIDMKIyA4
MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9saW1pdHMiIDMKI2RlZmluZSBfX2dsaWJjeHhfaW50ZWdyYWxfdHJhcHMgdHJ1ZQojIDg5ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2xp
bWl0cyIgMwojZGVmaW5lIF9fZ2xpYmN4eF9mbG9hdF9oYXNfZGVub3JtX2xvc3MgZmFsc2UKCgoj
ZGVmaW5lIF9fZ2xpYmN4eF9mbG9hdF90cmFwcyBmYWxzZQoKCiNkZWZpbmUgX19nbGliY3h4X2Zs
b2F0X3RpbnluZXNzX2JlZm9yZSBmYWxzZQoKCgoKCgoKI2RlZmluZSBfX2dsaWJjeHhfZG91Ymxl
X2hhc19kZW5vcm1fbG9zcyBmYWxzZQoKCiNkZWZpbmUgX19nbGliY3h4X2RvdWJsZV90cmFwcyBm
YWxzZQoKCiNkZWZpbmUgX19nbGliY3h4X2RvdWJsZV90aW55bmVzc19iZWZvcmUgZmFsc2UKCgoK
CgoKCiNkZWZpbmUgX19nbGliY3h4X2xvbmdfZG91YmxlX2hhc19kZW5vcm1fbG9zcyBmYWxzZQoK
CiNkZWZpbmUgX19nbGliY3h4X2xvbmdfZG91YmxlX3RyYXBzIGZhbHNlCgoKI2RlZmluZSBfX2ds
aWJjeHhfbG9uZ19kb3VibGVfdGlueW5lc3NfYmVmb3JlIGZhbHNlCgoKCgojZGVmaW5lIF9fZ2xp
YmN4eF9zaWduZWQoVCkgKChUKSgtMSkgPCAwKQoKI2RlZmluZSBfX2dsaWJjeHhfbWluKFQpIChf
X2dsaWJjeHhfc2lnbmVkIChUKSA/IC1fX2dsaWJjeHhfbWF4IChUKSAtIDEgOiAoVCkwKQoKCiNk
ZWZpbmUgX19nbGliY3h4X21heChUKSAoX19nbGliY3h4X3NpZ25lZCAoVCkgPyAoKCgoKFQpMSA8
PCAoX19nbGliY3h4X2RpZ2l0cyAoVCkgLSAxKSkgLSAxKSA8PCAxKSArIDEpIDogfihUKTApCgoK
CiNkZWZpbmUgX19nbGliY3h4X2RpZ2l0cyhUKSAoc2l6ZW9mKFQpICogX19DSEFSX0JJVF9fIC0g
X19nbGliY3h4X3NpZ25lZCAoVCkpCgoKCiNkZWZpbmUgX19nbGliY3h4X2RpZ2l0czEwKFQpIChf
X2dsaWJjeHhfZGlnaXRzIChUKSAqIDY0M0wgLyAyMTM2KQoKCiNkZWZpbmUgX19nbGliY3h4X21h
eF9kaWdpdHMxMChUKSAoMiArIChUKSAqIDY0M0wgLyAyMTM2KQoKCm5hbWVzcGFjZSBzdGQgX19h
dHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCgoKCgoKICBlbnVt
IGZsb2F0X3JvdW5kX3N0eWxlCiAgewogICAgcm91bmRfaW5kZXRlcm1pbmF0ZSA9IC0xLAogICAg
cm91bmRfdG93YXJkX3plcm8gPSAwLAogICAgcm91bmRfdG9fbmVhcmVzdCA9IDEsCiAgICByb3Vu
ZF90b3dhcmRfaW5maW5pdHkgPSAyLAogICAgcm91bmRfdG93YXJkX25lZ19pbmZpbml0eSA9IDMK
ICB9OwoKCgoKCgoKICBlbnVtIGZsb2F0X2Rlbm9ybV9zdHlsZQogIHsKCiAgICBkZW5vcm1faW5k
ZXRlcm1pbmF0ZSA9IC0xLAoKICAgIGRlbm9ybV9hYnNlbnQgPSAwLAoKICAgIGRlbm9ybV9wcmVz
ZW50ID0gMQogIH07CiMgMTkxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2xpbWl0cyIgMwogIHN0cnVjdCBfX251bWVyaWNfbGltaXRzX2Jh
c2UKICB7CgoKICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zcGVjaWFsaXplZCA9IGZhbHNl
OwoKCgoKICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0cyA9IDA7CgoKICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50IGRpZ2l0czEwID0gMDsKCgoKCiAgICBzdGF0aWMgY29uc3RleHByIGludCBt
YXhfZGlnaXRzMTAgPSAwOwoKCgogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NpZ25lZCA9
IGZhbHNlOwoKCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfaW50ZWdlciA9IGZhbHNlOwoK
CgoKICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19leGFjdCA9IGZhbHNlOwoKCgogICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQgcmFkaXggPSAwOwoKCgogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQg
bWluX2V4cG9uZW50ID0gMDsKCgoKICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVu
dDEwID0gMDsKCgoKCiAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZXhwb25lbnQgPSAwOwoK
CgogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2V4cG9uZW50MTAgPSAwOwoKCiAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaGFzX2luZmluaXR5ID0gZmFsc2U7CgoKCiAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaGFzX3F1aWV0X05hTiA9IGZhbHNlOwoKCgogICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFsc2U7CgoKICAgIHN0YXRpYyBjb25zdGV4cHIg
ZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5vcm0gPSBkZW5vcm1fYWJzZW50OwoKCgogICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOwoKCgogICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzX2llYzU1OSA9IGZhbHNlOwoKCgoKICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc19ib3VuZGVkID0gZmFsc2U7CiMgMjc3ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2xpbWl0cyIgMwogICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzX21vZHVsbyA9IGZhbHNlOwoKCiAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgdHJhcHMgPSBmYWxzZTsKCgogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHRpbnluZXNzX2Jl
Zm9yZSA9IGZhbHNlOwoKCgoKICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfcm91bmRfc3R5bGUg
cm91bmRfc3R5bGUgPQogICAgICAgICAgcm91bmRfdG93YXJkX3plcm87CiAgfTsKIyAzMDMgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvbGlt
aXRzIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IG51bWVyaWNfbGltaXRz
IDogcHVibGljIF9fbnVtZXJpY19saW1pdHNfYmFzZQogICAgewoKCiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgX1RwCiAgICAgIG1pbigpIG5vZXhjZXB0IHsgcmV0dXJuIF9UcCgpOyB9CgoKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBfVHAKICAgICAgbWF4KCkgbm9leGNlcHQgeyByZXR1cm4gX1RwKCk7
IH0KCgoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgX1RwCiAgICAgIGxvd2VzdCgpIG5vZXhjZXB0
IHsgcmV0dXJuIF9UcCgpOyB9CgoKCgogICAgICBzdGF0aWMgY29uc3RleHByIF9UcAogICAgICBl
cHNpbG9uKCkgbm9leGNlcHQgeyByZXR1cm4gX1RwKCk7IH0KCgogICAgICBzdGF0aWMgY29uc3Rl
eHByIF9UcAogICAgICByb3VuZF9lcnJvcigpIG5vZXhjZXB0IHsgcmV0dXJuIF9UcCgpOyB9CgoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBfVHAKICAgICAgaW5maW5pdHkoKSBub2V4Y2VwdCB7IHJl
dHVybiBfVHAoKTsgfQoKCgogICAgICBzdGF0aWMgY29uc3RleHByIF9UcAogICAgICBxdWlldF9O
YU4oKSBub2V4Y2VwdCB7IHJldHVybiBfVHAoKTsgfQoKCgogICAgICBzdGF0aWMgY29uc3RleHBy
IF9UcAogICAgICBzaWduYWxpbmdfTmFOKCkgbm9leGNlcHQgeyByZXR1cm4gX1RwKCk7IH0KCgoK
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgX1RwCiAgICAgIGRlbm9ybV9taW4oKSBub2V4Y2VwdCB7
IHJldHVybiBfVHAoKTsgfQogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0
cnVjdCBudW1lcmljX2xpbWl0czxjb25zdCBfVHA+CiAgICA6IHB1YmxpYyBudW1lcmljX2xpbWl0
czxfVHA+IHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IG51bWVyaWNf
bGltaXRzPHZvbGF0aWxlIF9UcD4KICAgIDogcHVibGljIG51bWVyaWNfbGltaXRzPF9UcD4geyB9
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgbnVtZXJpY19saW1pdHM8Y29u
c3Qgdm9sYXRpbGUgX1RwPgogICAgOiBwdWJsaWMgbnVtZXJpY19saW1pdHM8X1RwPiB7IH07CgoK
CgoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IG51bWVyaWNfbGltaXRzPGJvb2w+CiAgICB7CiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zcGVjaWFsaXplZCA9IHRydWU7CgogICAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wKICAgICAgbWluKCkgbm9leGNlcHQgeyByZXR1cm4gZmFsc2U7
IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbAogICAgICBtYXgoKSBub2V4Y2VwdCB7IHJl
dHVybiB0cnVlOyB9CgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sCiAgICAgIGxvd2VzdCgp
IG5vZXhjZXB0IHsgcmV0dXJuIG1pbigpOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGludCBk
aWdpdHMgPSAxOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMxMCA9IDA7CgogICAg
ICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZGlnaXRzMTAgPSAwOwoKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzX3NpZ25lZCA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNfaW50ZWdlciA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19leGFj
dCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHJhZGl4ID0gMjsKCiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbAogICAgICBlcHNpbG9uKCkgbm9leGNlcHQgeyByZXR1cm4gZmFs
c2U7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbAogICAgICByb3VuZF9lcnJvcigpIG5v
ZXhjZXB0IHsgcmV0dXJuIGZhbHNlOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtaW5f
ZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtaW5fZXhwb25lbnQxMCA9
IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVudCA9IDA7CiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVudDEwID0gMDsKCiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBoYXNfaW5maW5pdHkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGhhc19xdWlldF9OYU4gPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhh
c19zaWduYWxpbmdfTmFOID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfZGVu
b3JtX3N0eWxlIGhhc19kZW5vcm0KICAgICAgID0gZGVub3JtX2Fic2VudDsKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOwoKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sCiAgICAgIGluZmluaXR5KCkgbm9leGNlcHQgeyByZXR1cm4gZmFsc2U7IH0K
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbAogICAgICBxdWlldF9OYU4oKSBub2V4Y2VwdCB7
IHJldHVybiBmYWxzZTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sCiAgICAgIHNpZ25h
bGluZ19OYU4oKSBub2V4Y2VwdCB7IHJldHVybiBmYWxzZTsgfQoKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sCiAgICAgIGRlbm9ybV9taW4oKSBub2V4Y2VwdCB7IHJldHVybiBmYWxzZTsgfQoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2llYzU1OSA9IGZhbHNlOwogICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNfYm91bmRlZCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc19tb2R1bG8gPSBmYWxzZTsKCgoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCB0cmFwcyA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0aW55bmVzc19iZWZv
cmUgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdF9yb3VuZF9zdHlsZSByb3Vu
ZF9zdHlsZQogICAgICAgPSByb3VuZF90b3dhcmRfemVybzsKICAgIH07CgoKICB0ZW1wbGF0ZTw+
CiAgICBzdHJ1Y3QgbnVtZXJpY19saW1pdHM8Y2hhcj4KICAgIHsKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Y2hhcgogICAgICBtaW4oKSBub2V4Y2VwdCB7IHJldHVybiAoKChjaGFyKSgtMSkgPCAwKSA/IC0o
KChjaGFyKSgtMSkgPCAwKSA/ICgoKCgoY2hhcikxIDw8ICgoc2l6ZW9mKGNoYXIpICogOCAtICgo
Y2hhcikoLTEpIDwgMCkpIC0gMSkpIC0gMSkgPDwgMSkgKyAxKSA6IH4oY2hhcikwKSAtIDEgOiAo
Y2hhcikwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyCiAgICAgIG1heCgpIG5vZXhj
ZXB0IHsgcmV0dXJuICgoKGNoYXIpKC0xKSA8IDApID8gKCgoKChjaGFyKTEgPDwgKChzaXplb2Yo
Y2hhcikgKiA4IC0gKChjaGFyKSgtMSkgPCAwKSkgLSAxKSkgLSAxKSA8PCAxKSArIDEpIDogfihj
aGFyKTApOyB9CgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyCiAgICAgIGxvd2VzdCgpIG5v
ZXhjZXB0IHsgcmV0dXJuIG1pbigpOyB9CgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGln
aXRzID0gKHNpemVvZihjaGFyKSAqIDggLSAoKGNoYXIpKC0xKSA8IDApKTsKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgZGlnaXRzMTAgPSAoKHNpemVvZihjaGFyKSAqIDggLSAoKGNoYXIpKC0x
KSA8IDApKSAqIDY0M0wgLyAyMTM2KTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9k
aWdpdHMxMCA9IDA7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfc2lnbmVkID0gKChj
aGFyKSgtMSkgPCAwKTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2ludGVnZXIgPSB0
cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfZXhhY3QgPSB0cnVlOwogICAgICBz
dGF0aWMgY29uc3RleHByIGludCByYWRpeCA9IDI7CgogICAgICBzdGF0aWMgY29uc3RleHByIGNo
YXIKICAgICAgZXBzaWxvbigpIG5vZXhjZXB0IHsgcmV0dXJuIDA7IH0KCiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgY2hhcgogICAgICByb3VuZF9lcnJvcigpIG5vZXhjZXB0IHsgcmV0dXJuIDA7IH0K
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudCA9IDA7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudDEwID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQgbWF4X2V4cG9uZW50ID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2V4
cG9uZW50MTAgPSAwOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19pbmZpbml0eSA9
IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3F1aWV0X05hTiA9IGZhbHNl
OwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3NpZ25hbGluZ19OYU4gPSBmYWxzZTsK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdF9kZW5vcm1fc3R5bGUgaGFzX2Rlbm9ybQogICAg
ICAgPSBkZW5vcm1fYWJzZW50OwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX2Rlbm9y
bV9sb3NzID0gZmFsc2U7CgogICAgICBzdGF0aWMgY29uc3RleHByCiAgICAgIGNoYXIgaW5maW5p
dHkoKSBub2V4Y2VwdCB7IHJldHVybiBjaGFyKCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Y2hhcgogICAgICBxdWlldF9OYU4oKSBub2V4Y2VwdCB7IHJldHVybiBjaGFyKCk7IH0KCiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgY2hhcgogICAgICBzaWduYWxpbmdfTmFOKCkgbm9leGNlcHQgeyBy
ZXR1cm4gY2hhcigpOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGNoYXIKICAgICAgZGVub3Jt
X21pbigpIG5vZXhjZXB0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXI+KDApOyB9CgogICAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNfaWVjNTU5ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc19ib3VuZGVkID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzX21vZHVsbyA9ICFpc19zaWduZWQ7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdHJh
cHMgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGlueW5lc3NfYmVmb3JlID0g
ZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfcm91bmRfc3R5bGUgcm91bmRfc3R5
bGUKICAgICAgID0gcm91bmRfdG93YXJkX3plcm87CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAg
c3RydWN0IG51bWVyaWNfbGltaXRzPHNpZ25lZCBjaGFyPgogICAgewogICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBzaWduZWQgY2hhcgogICAgICBtaW4oKSBub2V4Y2VwdCB7IHJldHVybiAtMTI3IC0gMTsgfQoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaWduZWQgY2hhcgogICAgICBtYXgoKSBub2V4Y2VwdCB7
IHJldHVybiAxMjc7IH0KCgogICAgICBzdGF0aWMgY29uc3RleHByIHNpZ25lZCBjaGFyCiAgICAg
IGxvd2VzdCgpIG5vZXhjZXB0IHsgcmV0dXJuIG1pbigpOyB9CgoKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQgZGlnaXRzID0gKHNpemVvZihzaWduZWQgY2hhcikgKiA4IC0gKChzaWduZWQgY2hh
cikoLTEpIDwgMCkpOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMxMAogICAgICAg
PSAoKHNpemVvZihzaWduZWQgY2hhcikgKiA4IC0gKChzaWduZWQgY2hhcikoLTEpIDwgMCkpICog
NjQzTCAvIDIxMzYpOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2RpZ2l0czEwID0g
MDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zaWduZWQgPSB0cnVlOwogICAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNfaW50ZWdlciA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc19leGFjdCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHJh
ZGl4ID0gMjsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2lnbmVkIGNoYXIKICAgICAgZXBzaWxv
bigpIG5vZXhjZXB0IHsgcmV0dXJuIDA7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2lnbmVk
IGNoYXIKICAgICAgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBz
dGF0aWMgY29uc3RleHByIGludCBtaW5fZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBtaW5fZXhwb25lbnQxMCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1h
eF9leHBvbmVudCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVudDEw
ID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfaW5maW5pdHkgPSBmYWxzZTsK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19xdWlldF9OYU4gPSBmYWxzZTsKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFsc2U7CiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5vcm0KICAgICAgID0gZGVu
b3JtX2Fic2VudDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19kZW5vcm1fbG9zcyA9
IGZhbHNlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaWduZWQgY2hhcgogICAgICBpbmZpbml0
eSgpIG5vZXhjZXB0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHNpZ25lZCBjaGFyPigwKTsgfQoKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBzaWduZWQgY2hhcgogICAgICBxdWlldF9OYU4oKSBub2V4Y2Vw
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4oMCk7IH0KCiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgc2lnbmVkIGNoYXIKICAgICAgc2lnbmFsaW5nX05hTigpIG5vZXhjZXB0CiAgICAg
IHsgcmV0dXJuIHN0YXRpY19jYXN0PHNpZ25lZCBjaGFyPigwKTsgfQoKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBzaWduZWQgY2hhcgogICAgICBkZW5vcm1fbWluKCkgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KDApOyB9CgogICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNfaWVjNTU5ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c19ib3VuZGVkID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX21vZHVsbyA9
IGZhbHNlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHRyYXBzID0gdHJ1ZTsKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIHRpbnluZXNzX2JlZm9yZSA9IGZhbHNlOwogICAgICBzdGF0
aWMgY29uc3RleHByIGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxlCiAgICAgICA9IHJvdW5k
X3Rvd2FyZF96ZXJvOwogICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBudW1lcmljX2xp
bWl0czx1bnNpZ25lZCBjaGFyPgogICAgewogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNf
c3BlY2lhbGl6ZWQgPSB0cnVlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBjaGFy
CiAgICAgIG1pbigpIG5vZXhjZXB0IHsgcmV0dXJuIDA7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgY2hhcgogICAgICBtYXgoKSBub2V4Y2VwdCB7IHJldHVybiAxMjcgKiAyVSAr
IDE7IH0KCgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNoYXIKICAgICAgbG93ZXN0
KCkgbm9leGNlcHQgeyByZXR1cm4gbWluKCk7IH0KCgogICAgICBzdGF0aWMgY29uc3RleHByIGlu
dCBkaWdpdHMKICAgICAgID0gKHNpemVvZih1bnNpZ25lZCBjaGFyKSAqIDggLSAoKHVuc2lnbmVk
IGNoYXIpKC0xKSA8IDApKTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzMTAKICAg
ICAgID0gKChzaXplb2YodW5zaWduZWQgY2hhcikgKiA4IC0gKCh1bnNpZ25lZCBjaGFyKSgtMSkg
PCAwKSkgKiA2NDNMIC8gMjEzNik7CgogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZGln
aXRzMTAgPSAwOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NpZ25lZCA9IGZhbHNl
OwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfaW50ZWdlciA9IHRydWU7CiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc19leGFjdCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IHJhZGl4ID0gMjsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgY2hhcgog
ICAgICBlcHNpbG9uKCkgbm9leGNlcHQgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBjaGFyCiAgICAgIHJvdW5kX2Vycm9yKCkgbm9leGNlcHQgeyByZXR1cm4g
MDsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWluX2V4cG9uZW50ID0gMDsKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQgbWluX2V4cG9uZW50MTAgPSAwOwogICAgICBzdGF0aWMgY29u
c3RleHByIGludCBtYXhfZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBt
YXhfZXhwb25lbnQxMCA9IDA7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX2luZmlu
aXR5ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfcXVpZXRfTmFOID0g
ZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfc2lnbmFsaW5nX05hTiA9IGZh
bHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3Jt
CiAgICAgICA9IGRlbm9ybV9hYnNlbnQ7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNf
ZGVub3JtX2xvc3MgPSBmYWxzZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgY2hh
cgogICAgICBpbmZpbml0eSgpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KDApOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNoYXIK
ICAgICAgcXVpZXRfTmFOKCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgY2hhcgog
ICAgICBzaWduYWxpbmdfTmFOKCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgY2hh
cgogICAgICBkZW5vcm1fbWluKCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19pZWM1
NTkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2JvdW5kZWQgPSB0cnVl
OwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfbW9kdWxvID0gdHJ1ZTsKCiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCB0cmFwcyA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCB0aW55bmVzc19iZWZvcmUgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9h
dF9yb3VuZF9zdHlsZSByb3VuZF9zdHlsZQogICAgICAgPSByb3VuZF90b3dhcmRfemVybzsKICAg
IH07CgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgbnVtZXJpY19saW1pdHM8d2NoYXJfdD4KICAg
IHsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgd2NoYXJfdAogICAgICBtaW4oKSBub2V4Y2VwdCB7IHJldHVy
biAoKCh3Y2hhcl90KSgtMSkgPCAwKSA/IC0oKCh3Y2hhcl90KSgtMSkgPCAwKSA/ICgoKCgod2No
YXJfdCkxIDw8ICgoc2l6ZW9mKHdjaGFyX3QpICogOCAtICgod2NoYXJfdCkoLTEpIDwgMCkpIC0g
MSkpIC0gMSkgPDwgMSkgKyAxKSA6IH4od2NoYXJfdCkwKSAtIDEgOiAod2NoYXJfdCkwKTsgfQoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciB3Y2hhcl90CiAgICAgIG1heCgpIG5vZXhjZXB0IHsgcmV0
dXJuICgoKHdjaGFyX3QpKC0xKSA8IDApID8gKCgoKCh3Y2hhcl90KTEgPDwgKChzaXplb2Yod2No
YXJfdCkgKiA4IC0gKCh3Y2hhcl90KSgtMSkgPCAwKSkgLSAxKSkgLSAxKSA8PCAxKSArIDEpIDog
fih3Y2hhcl90KTApOyB9CgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB3Y2hhcl90CiAgICAgIGxv
d2VzdCgpIG5vZXhjZXB0IHsgcmV0dXJuIG1pbigpOyB9CgoKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQgZGlnaXRzID0gKHNpemVvZih3Y2hhcl90KSAqIDggLSAoKHdjaGFyX3QpKC0xKSA8IDAp
KTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzMTAKICAgICAgID0gKChzaXplb2Yo
d2NoYXJfdCkgKiA4IC0gKCh3Y2hhcl90KSgtMSkgPCAwKSkgKiA2NDNMIC8gMjEzNik7CgogICAg
ICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZGlnaXRzMTAgPSAwOwoKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzX3NpZ25lZCA9ICgod2NoYXJfdCkoLTEpIDwgMCk7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc19pbnRlZ2VyID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzX2V4YWN0ID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgcmFkaXgg
PSAyOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB3Y2hhcl90CiAgICAgIGVwc2lsb24oKSBub2V4
Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHdjaGFyX3QKICAgICAg
cm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBtaW5fZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtaW5f
ZXhwb25lbnQxMCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVudCA9
IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVudDEwID0gMDsKCiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfaW5maW5pdHkgPSBmYWxzZTsKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGhhc19xdWlldF9OYU4gPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5vcm0KICAgICAgID0gZGVub3JtX2Fic2VudDsK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOwoKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciB3Y2hhcl90CiAgICAgIGluZmluaXR5KCkgbm9leGNlcHQgeyBy
ZXR1cm4gd2NoYXJfdCgpOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHdjaGFyX3QKICAgICAg
cXVpZXRfTmFOKCkgbm9leGNlcHQgeyByZXR1cm4gd2NoYXJfdCgpOyB9CgogICAgICBzdGF0aWMg
Y29uc3RleHByIHdjaGFyX3QKICAgICAgc2lnbmFsaW5nX05hTigpIG5vZXhjZXB0IHsgcmV0dXJu
IHdjaGFyX3QoKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB3Y2hhcl90CiAgICAgIGRlbm9y
bV9taW4oKSBub2V4Y2VwdCB7IHJldHVybiB3Y2hhcl90KCk7IH0KCiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc19pZWM1NTkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzX2JvdW5kZWQgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfbW9kdWxv
ID0gIWlzX3NpZ25lZDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0cmFwcyA9IHRydWU7
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0aW55bmVzc19iZWZvcmUgPSBmYWxzZTsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdF9yb3VuZF9zdHlsZSByb3VuZF9zdHlsZQogICAgICAg
PSByb3VuZF90b3dhcmRfemVybzsKICAgIH07CgoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IG51
bWVyaWNfbGltaXRzPGNoYXIxNl90PgogICAgewogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNfc3BlY2lhbGl6ZWQgPSB0cnVlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyMTZfdAog
ICAgICBtaW4oKSBub2V4Y2VwdCB7IHJldHVybiAoKChjaGFyMTZfdCkoLTEpIDwgMCkgPyAtKCgo
Y2hhcjE2X3QpKC0xKSA8IDApID8gKCgoKChjaGFyMTZfdCkxIDw8ICgoc2l6ZW9mKGNoYXIxNl90
KSAqIDggLSAoKGNoYXIxNl90KSgtMSkgPCAwKSkgLSAxKSkgLSAxKSA8PCAxKSArIDEpIDogfihj
aGFyMTZfdCkwKSAtIDEgOiAoY2hhcjE2X3QpMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Y2hhcjE2X3QKICAgICAgbWF4KCkgbm9leGNlcHQgeyByZXR1cm4gKCgoY2hhcjE2X3QpKC0xKSA8
IDApID8gKCgoKChjaGFyMTZfdCkxIDw8ICgoc2l6ZW9mKGNoYXIxNl90KSAqIDggLSAoKGNoYXIx
Nl90KSgtMSkgPCAwKSkgLSAxKSkgLSAxKSA8PCAxKSArIDEpIDogfihjaGFyMTZfdCkwKTsgfQoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyMTZfdAogICAgICBsb3dlc3QoKSBub2V4Y2VwdCB7
IHJldHVybiBtaW4oKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzID0gKHNp
emVvZihjaGFyMTZfdCkgKiA4IC0gKChjaGFyMTZfdCkoLTEpIDwgMCkpOwogICAgICBzdGF0aWMg
Y29uc3RleHByIGludCBkaWdpdHMxMCA9ICgoc2l6ZW9mKGNoYXIxNl90KSAqIDggLSAoKGNoYXIx
Nl90KSgtMSkgPCAwKSkgKiA2NDNMIC8gMjEzNik7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
IG1heF9kaWdpdHMxMCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zaWduZWQg
PSAoKGNoYXIxNl90KSgtMSkgPCAwKTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2lu
dGVnZXIgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfZXhhY3QgPSB0cnVl
OwogICAgICBzdGF0aWMgY29uc3RleHByIGludCByYWRpeCA9IDI7CgogICAgICBzdGF0aWMgY29u
c3RleHByIGNoYXIxNl90CiAgICAgIGVwc2lsb24oKSBub2V4Y2VwdCB7IHJldHVybiAwOyB9Cgog
ICAgICBzdGF0aWMgY29uc3RleHByIGNoYXIxNl90CiAgICAgIHJvdW5kX2Vycm9yKCkgbm9leGNl
cHQgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWluX2V4cG9uZW50
ID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWluX2V4cG9uZW50MTAgPSAwOwogICAg
ICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29u
c3RleHByIGludCBtYXhfZXhwb25lbnQxMCA9IDA7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaGFzX2luZmluaXR5ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNf
cXVpZXRfTmFOID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfc2lnbmFs
aW5nX05hTiA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0X2Rlbm9ybV9zdHls
ZSBoYXNfZGVub3JtID0gZGVub3JtX2Fic2VudDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyMTZf
dAogICAgICBpbmZpbml0eSgpIG5vZXhjZXB0IHsgcmV0dXJuIGNoYXIxNl90KCk7IH0KCiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgY2hhcjE2X3QKICAgICAgcXVpZXRfTmFOKCkgbm9leGNlcHQgeyBy
ZXR1cm4gY2hhcjE2X3QoKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyMTZfdAogICAg
ICBzaWduYWxpbmdfTmFOKCkgbm9leGNlcHQgeyByZXR1cm4gY2hhcjE2X3QoKTsgfQoKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBjaGFyMTZfdAogICAgICBkZW5vcm1fbWluKCkgbm9leGNlcHQgeyBy
ZXR1cm4gY2hhcjE2X3QoKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2llYzU1
OSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfYm91bmRlZCA9IHRydWU7
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19tb2R1bG8gPSAhaXNfc2lnbmVkOwoKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHRyYXBzID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIHRpbnluZXNzX2JlZm9yZSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHBy
IGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxlID0gcm91bmRfdG93YXJkX3plcm87CiAgICB9
OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IG51bWVyaWNfbGltaXRzPGNoYXIzMl90PgogICAg
ewogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlOwoKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyMzJfdAogICAgICBtaW4oKSBub2V4Y2VwdCB7IHJldHVy
biAoKChjaGFyMzJfdCkoLTEpIDwgMCkgPyAtKCgoY2hhcjMyX3QpKC0xKSA8IDApID8gKCgoKChj
aGFyMzJfdCkxIDw8ICgoc2l6ZW9mKGNoYXIzMl90KSAqIDggLSAoKGNoYXIzMl90KSgtMSkgPCAw
KSkgLSAxKSkgLSAxKSA8PCAxKSArIDEpIDogfihjaGFyMzJfdCkwKSAtIDEgOiAoY2hhcjMyX3Qp
MCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhcjMyX3QKICAgICAgbWF4KCkgbm9leGNl
cHQgeyByZXR1cm4gKCgoY2hhcjMyX3QpKC0xKSA8IDApID8gKCgoKChjaGFyMzJfdCkxIDw8ICgo
c2l6ZW9mKGNoYXIzMl90KSAqIDggLSAoKGNoYXIzMl90KSgtMSkgPCAwKSkgLSAxKSkgLSAxKSA8
PCAxKSArIDEpIDogfihjaGFyMzJfdCkwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFy
MzJfdAogICAgICBsb3dlc3QoKSBub2V4Y2VwdCB7IHJldHVybiBtaW4oKTsgfQoKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzID0gKHNpemVvZihjaGFyMzJfdCkgKiA4IC0gKChjaGFy
MzJfdCkoLTEpIDwgMCkpOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMxMCA9ICgo
c2l6ZW9mKGNoYXIzMl90KSAqIDggLSAoKGNoYXIzMl90KSgtMSkgPCAwKSkgKiA2NDNMIC8gMjEz
Nik7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9kaWdpdHMxMCA9IDA7CiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zaWduZWQgPSAoKGNoYXIzMl90KSgtMSkgPCAwKTsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2ludGVnZXIgPSB0cnVlOwogICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNfZXhhY3QgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGlu
dCByYWRpeCA9IDI7CgogICAgICBzdGF0aWMgY29uc3RleHByIGNoYXIzMl90CiAgICAgIGVwc2ls
b24oKSBub2V4Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGNoYXIz
Ml90CiAgICAgIHJvdW5kX2Vycm9yKCkgbm9leGNlcHQgeyByZXR1cm4gMDsgfQoKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQgbWluX2V4cG9uZW50ID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQgbWluX2V4cG9uZW50MTAgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhf
ZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZXhwb25lbnQxMCA9
IDA7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX2luZmluaXR5ID0gZmFsc2U7CiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7CiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfc2lnbmFsaW5nX05hTiA9IGZhbHNlOwogICAgICBzdGF0
aWMgY29uc3RleHByIGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtID0gZGVub3JtX2Fic2Vu
dDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOwoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyMzJfdAogICAgICBpbmZpbml0eSgpIG5vZXhjZXB0
IHsgcmV0dXJuIGNoYXIzMl90KCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhcjMyX3QK
ICAgICAgcXVpZXRfTmFOKCkgbm9leGNlcHQgeyByZXR1cm4gY2hhcjMyX3QoKTsgfQoKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBjaGFyMzJfdAogICAgICBzaWduYWxpbmdfTmFOKCkgbm9leGNlcHQg
eyByZXR1cm4gY2hhcjMyX3QoKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyMzJfdAog
ICAgICBkZW5vcm1fbWluKCkgbm9leGNlcHQgeyByZXR1cm4gY2hhcjMyX3QoKTsgfQoKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2llYzU1OSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNfYm91bmRlZCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc19tb2R1bG8gPSAhaXNfc2lnbmVkOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHRy
YXBzID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHRpbnluZXNzX2JlZm9yZSA9
IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0
eWxlID0gcm91bmRfdG93YXJkX3plcm87CiAgICB9OwoKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVj
dCBudW1lcmljX2xpbWl0czxzaG9ydD4KICAgIHsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2hvcnQKICAg
ICAgbWluKCkgbm9leGNlcHQgeyByZXR1cm4gLTMyNzY3IC0gMTsgfQoKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBzaG9ydAogICAgICBtYXgoKSBub2V4Y2VwdCB7IHJldHVybiAzMjc2NzsgfQoKCiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgc2hvcnQKICAgICAgbG93ZXN0KCkgbm9leGNlcHQgeyByZXR1
cm4gbWluKCk7IH0KCgogICAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMgPSAoc2l6ZW9m
KHNob3J0KSAqIDggLSAoKHNob3J0KSgtMSkgPCAwKSk7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IGRpZ2l0czEwID0gKChzaXplb2Yoc2hvcnQpICogOCAtICgoc2hvcnQpKC0xKSA8IDApKSAq
IDY0M0wgLyAyMTM2KTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9kaWdpdHMxMCA9
IDA7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfc2lnbmVkID0gdHJ1ZTsKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2ludGVnZXIgPSB0cnVlOwogICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNfZXhhY3QgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBy
YWRpeCA9IDI7CgogICAgICBzdGF0aWMgY29uc3RleHByIHNob3J0CiAgICAgIGVwc2lsb24oKSBu
b2V4Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHNob3J0CiAgICAg
IHJvdW5kX2Vycm9yKCkgbm9leGNlcHQgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQgbWluX2V4cG9uZW50ID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWlu
X2V4cG9uZW50MTAgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZXhwb25lbnQg
PSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZXhwb25lbnQxMCA9IDA7CgogICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX2luZmluaXR5ID0gZmFsc2U7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBoYXNfc2lnbmFsaW5nX05hTiA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3Rl
eHByIGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtCiAgICAgICA9IGRlbm9ybV9hYnNlbnQ7
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfZGVub3JtX2xvc3MgPSBmYWxzZTsKCiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgc2hvcnQKICAgICAgaW5maW5pdHkoKSBub2V4Y2VwdCB7IHJl
dHVybiBzaG9ydCgpOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHNob3J0CiAgICAgIHF1aWV0
X05hTigpIG5vZXhjZXB0IHsgcmV0dXJuIHNob3J0KCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgc2hvcnQKICAgICAgc2lnbmFsaW5nX05hTigpIG5vZXhjZXB0IHsgcmV0dXJuIHNob3J0KCk7
IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2hvcnQKICAgICAgZGVub3JtX21pbigpIG5vZXhj
ZXB0IHsgcmV0dXJuIHNob3J0KCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19p
ZWM1NTkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2JvdW5kZWQgPSB0
cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfbW9kdWxvID0gZmFsc2U7CgogICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgdHJhcHMgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgdGlueW5lc3NfYmVmb3JlID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
ZmxvYXRfcm91bmRfc3R5bGUgcm91bmRfc3R5bGUKICAgICAgID0gcm91bmRfdG93YXJkX3plcm87
CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IG51bWVyaWNfbGltaXRzPHVuc2lnbmVk
IHNob3J0PgogICAgewogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfc3BlY2lhbGl6ZWQg
PSB0cnVlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzaG9ydAogICAgICBtaW4o
KSBub2V4Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHNob3J0CiAgICAgIG1heCgpIG5vZXhjZXB0IHsgcmV0dXJuIDMyNzY3ICogMlUgKyAxOyB9CgoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzaG9ydAogICAgICBsb3dlc3QoKSBub2V4
Y2VwdCB7IHJldHVybiBtaW4oKTsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0
cwogICAgICAgPSAoc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSAqIDggLSAoKHVuc2lnbmVkIHNob3J0
KSgtMSkgPCAwKSk7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0czEwCiAgICAgICA9
ICgoc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSAqIDggLSAoKHVuc2lnbmVkIHNob3J0KSgtMSkgPCAw
KSkgKiA2NDNMIC8gMjEzNik7CgogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZGlnaXRz
MTAgPSAwOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NpZ25lZCA9IGZhbHNlOwog
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfaW50ZWdlciA9IHRydWU7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc19leGFjdCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHJhZGl4ID0gMjsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc2hvcnQKICAg
ICAgZXBzaWxvbigpIG5vZXhjZXB0IHsgcmV0dXJuIDA7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgc2hvcnQKICAgICAgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7IHJldHVybiAw
OyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtaW5fZXhwb25lbnQgPSAwOwogICAgICBz
dGF0aWMgY29uc3RleHByIGludCBtaW5fZXhwb25lbnQxMCA9IDA7CiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50IG1heF9leHBvbmVudCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1h
eF9leHBvbmVudDEwID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfaW5maW5p
dHkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19xdWlldF9OYU4gPSBm
YWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFs
c2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5vcm0K
ICAgICAgID0gZGVub3JtX2Fic2VudDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19k
ZW5vcm1fbG9zcyA9IGZhbHNlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzaG9y
dAogICAgICBpbmZpbml0eSgpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVu
c2lnbmVkIHNob3J0PigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzaG9y
dAogICAgICBxdWlldF9OYU4oKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBzaG9ydD4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc2hv
cnQKICAgICAgc2lnbmFsaW5nX05hTigpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0YXRpY19j
YXN0PHVuc2lnbmVkIHNob3J0PigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBzaG9ydAogICAgICBkZW5vcm1fbWluKCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KDApOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNfaWVjNTU5ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19ib3VuZGVk
ID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX21vZHVsbyA9IHRydWU7Cgog
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdHJhcHMgPSB0cnVlOwogICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgdGlueW5lc3NfYmVmb3JlID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgZmxvYXRfcm91bmRfc3R5bGUgcm91bmRfc3R5bGUKICAgICAgID0gcm91bmRfdG93YXJkX3pl
cm87CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IG51bWVyaWNfbGltaXRzPGludD4K
ICAgIHsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsK
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50CiAgICAgIG1pbigpIG5vZXhjZXB0IHsgcmV0dXJu
IC0yMTQ3NDgzNjQ3IC0gMTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQKICAgICAgbWF4
KCkgbm9leGNlcHQgeyByZXR1cm4gMjE0NzQ4MzY0NzsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50CiAgICAgIGxvd2VzdCgpIG5vZXhjZXB0IHsgcmV0dXJuIG1pbigpOyB9CgoKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzID0gKHNpemVvZihpbnQpICogOCAtICgoaW50KSgt
MSkgPCAwKSk7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0czEwID0gKChzaXplb2Yo
aW50KSAqIDggLSAoKGludCkoLTEpIDwgMCkpICogNjQzTCAvIDIxMzYpOwoKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgbWF4X2RpZ2l0czEwID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc19zaWduZWQgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfaW50
ZWdlciA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19leGFjdCA9IHRydWU7
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHJhZGl4ID0gMjsKCiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50CiAgICAgIGVwc2lsb24oKSBub2V4Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBz
dGF0aWMgY29uc3RleHByIGludAogICAgICByb3VuZF9lcnJvcigpIG5vZXhjZXB0IHsgcmV0dXJu
IDA7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudCA9IDA7CiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudDEwID0gMDsKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgbWF4X2V4cG9uZW50ID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQg
bWF4X2V4cG9uZW50MTAgPSAwOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19pbmZp
bml0eSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3F1aWV0X05hTiA9
IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3NpZ25hbGluZ19OYU4gPSBm
YWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdF9kZW5vcm1fc3R5bGUgaGFzX2Rlbm9y
bQogICAgICAgPSBkZW5vcm1fYWJzZW50OwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFz
X2Rlbm9ybV9sb3NzID0gZmFsc2U7CgogICAgICBzdGF0aWMgY29uc3RleHByIGludAogICAgICBp
bmZpbml0eSgpIG5vZXhjZXB0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oMCk7IH0KCiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50CiAgICAgIHF1aWV0X05hTigpIG5vZXhjZXB0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50CiAgICAg
IHNpZ25hbGluZ19OYU4oKSBub2V4Y2VwdCB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KDApOyB9
CgogICAgICBzdGF0aWMgY29uc3RleHByIGludAogICAgICBkZW5vcm1fbWluKCkgbm9leGNlcHQg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzX2llYzU1OSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfYm91
bmRlZCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19tb2R1bG8gPSBmYWxz
ZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0cmFwcyA9IHRydWU7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCB0aW55bmVzc19iZWZvcmUgPSBmYWxzZTsKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBmbG9hdF9yb3VuZF9zdHlsZSByb3VuZF9zdHlsZQogICAgICAgPSByb3VuZF90b3dh
cmRfemVybzsKICAgIH07CgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgbnVtZXJpY19saW1pdHM8
dW5zaWduZWQgaW50PgogICAgewogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfc3BlY2lh
bGl6ZWQgPSB0cnVlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbnQKICAgICAg
bWluKCkgbm9leGNlcHQgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBpbnQKICAgICAgbWF4KCkgbm9leGNlcHQgeyByZXR1cm4gMjE0NzQ4MzY0NyAqIDJVICsg
MTsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW50CiAgICAgIGxvd2VzdCgp
IG5vZXhjZXB0IHsgcmV0dXJuIG1pbigpOyB9CgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQg
ZGlnaXRzCiAgICAgICA9IChzaXplb2YodW5zaWduZWQgaW50KSAqIDggLSAoKHVuc2lnbmVkIGlu
dCkoLTEpIDwgMCkpOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMxMAogICAgICAg
PSAoKHNpemVvZih1bnNpZ25lZCBpbnQpICogOCAtICgodW5zaWduZWQgaW50KSgtMSkgPCAwKSkg
KiA2NDNMIC8gMjEzNik7CgogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZGlnaXRzMTAg
PSAwOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NpZ25lZCA9IGZhbHNlOwogICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfaW50ZWdlciA9IHRydWU7CiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc19leGFjdCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
IHJhZGl4ID0gMjsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW50CiAgICAgIGVw
c2lsb24oKSBub2V4Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIGludAogICAgICByb3VuZF9lcnJvcigpIG5vZXhjZXB0IHsgcmV0dXJuIDA7IH0KCiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudCA9IDA7CiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50IG1pbl9leHBvbmVudDEwID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgbWF4X2V4cG9uZW50ID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2V4cG9u
ZW50MTAgPSAwOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19pbmZpbml0eSA9IGZh
bHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3F1aWV0X05hTiA9IGZhbHNlOwog
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3NpZ25hbGluZ19OYU4gPSBmYWxzZTsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdF9kZW5vcm1fc3R5bGUgaGFzX2Rlbm9ybQogICAgICAg
PSBkZW5vcm1fYWJzZW50OwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX2Rlbm9ybV9s
b3NzID0gZmFsc2U7CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGludAogICAgICBp
bmZpbml0eSgpIG5vZXhjZXB0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oMCk7
IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW50CiAgICAgIHF1aWV0X05hTigp
IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oMCk7IH0K
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW50CiAgICAgIHNpZ25hbGluZ19OYU4o
KSBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KDApOyB9
CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGludAogICAgICBkZW5vcm1fbWluKCkg
bm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PigwKTsgfQoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2llYzU1OSA9IGZhbHNlOwogICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNfYm91bmRlZCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc19tb2R1bG8gPSB0cnVlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHRy
YXBzID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHRpbnluZXNzX2JlZm9yZSA9
IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0
eWxlCiAgICAgICA9IHJvdW5kX3Rvd2FyZF96ZXJvOwogICAgfTsKCgogIHRlbXBsYXRlPD4KICAg
IHN0cnVjdCBudW1lcmljX2xpbWl0czxsb25nPgogICAgewogICAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBsb25n
CiAgICAgIG1pbigpIG5vZXhjZXB0IHsgcmV0dXJuIC0yMTQ3NDgzNjQ3TCAtIDE7IH0KCiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgbG9uZwogICAgICBtYXgoKSBub2V4Y2VwdCB7IHJldHVybiAyMTQ3
NDgzNjQ3TDsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgbG9uZwogICAgICBsb3dlc3QoKSBu
b2V4Y2VwdCB7IHJldHVybiBtaW4oKTsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRp
Z2l0cyA9IChzaXplb2YobG9uZykgKiA4IC0gKChsb25nKSgtMSkgPCAwKSk7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IGRpZ2l0czEwID0gKChzaXplb2YobG9uZykgKiA4IC0gKChsb25nKSgt
MSkgPCAwKSkgKiA2NDNMIC8gMjEzNik7CgogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhf
ZGlnaXRzMTAgPSAwOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NpZ25lZCA9IHRy
dWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19pbnRlZ2VyID0gdHJ1ZTsKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2V4YWN0ID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQgcmFkaXggPSAyOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBsb25nCiAgICAgIGVw
c2lsb24oKSBub2V4Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGxv
bmcKICAgICAgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBzdGF0
aWMgY29uc3RleHByIGludCBtaW5fZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHBy
IGludCBtaW5fZXhwb25lbnQxMCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9l
eHBvbmVudCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVudDEwID0g
MDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfaW5maW5pdHkgPSBmYWxzZTsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19xdWlldF9OYU4gPSBmYWxzZTsKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFsc2U7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5vcm0KICAgICAgID0gZGVub3Jt
X2Fic2VudDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZh
bHNlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBsb25nCiAgICAgIGluZmluaXR5KCkgbm9leGNl
cHQgeyByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZz4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgbG9uZwogICAgICBxdWlldF9OYU4oKSBub2V4Y2VwdCB7IHJldHVybiBzdGF0aWNfY2FzdDxs
b25nPigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBsb25nCiAgICAgIHNpZ25hbGluZ19O
YU4oKSBub2V4Y2VwdCB7IHJldHVybiBzdGF0aWNfY2FzdDxsb25nPigwKTsgfQoKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBsb25nCiAgICAgIGRlbm9ybV9taW4oKSBub2V4Y2VwdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxsb25nPigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2ll
YzU1OSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfYm91bmRlZCA9IHRy
dWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19tb2R1bG8gPSBmYWxzZTsKCiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0cmFwcyA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCB0aW55bmVzc19iZWZvcmUgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBm
bG9hdF9yb3VuZF9zdHlsZSByb3VuZF9zdHlsZQogICAgICAgPSByb3VuZF90b3dhcmRfemVybzsK
ICAgIH07CgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgbnVtZXJpY19saW1pdHM8dW5zaWduZWQg
bG9uZz4KICAgIHsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NwZWNpYWxpemVkID0g
dHJ1ZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbG9uZwogICAgICBtaW4oKSBu
b2V4Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGxv
bmcKICAgICAgbWF4KCkgbm9leGNlcHQgeyByZXR1cm4gMjE0NzQ4MzY0N0wgKiAyVUwgKyAxOyB9
CgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBsb25nCiAgICAgIGxvd2VzdCgpIG5v
ZXhjZXB0IHsgcmV0dXJuIG1pbigpOyB9CgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGln
aXRzCiAgICAgICA9IChzaXplb2YodW5zaWduZWQgbG9uZykgKiA4IC0gKCh1bnNpZ25lZCBsb25n
KSgtMSkgPCAwKSk7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0czEwCiAgICAgICA9
ICgoc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogOCAtICgodW5zaWduZWQgbG9uZykoLTEpIDwgMCkp
ICogNjQzTCAvIDIxMzYpOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2RpZ2l0czEw
ID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zaWduZWQgPSBmYWxzZTsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2ludGVnZXIgPSB0cnVlOwogICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNfZXhhY3QgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGlu
dCByYWRpeCA9IDI7CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGxvbmcKICAgICAg
ZXBzaWxvbigpIG5vZXhjZXB0IHsgcmV0dXJuIDA7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgbG9uZwogICAgICByb3VuZF9lcnJvcigpIG5vZXhjZXB0IHsgcmV0dXJuIDA7IH0K
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudCA9IDA7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudDEwID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQgbWF4X2V4cG9uZW50ID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2V4
cG9uZW50MTAgPSAwOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19pbmZpbml0eSA9
IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3F1aWV0X05hTiA9IGZhbHNl
OwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3NpZ25hbGluZ19OYU4gPSBmYWxzZTsK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdF9kZW5vcm1fc3R5bGUgaGFzX2Rlbm9ybQogICAg
ICAgPSBkZW5vcm1fYWJzZW50OwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX2Rlbm9y
bV9sb3NzID0gZmFsc2U7CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGxvbmcKICAg
ICAgaW5maW5pdHkoKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nPigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBsb25nCiAgICAg
IHF1aWV0X05hTigpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVk
IGxvbmc+KDApOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGxvbmcKICAgICAg
c2lnbmFsaW5nX05hTigpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmc+KDApOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGxvbmcKICAg
ICAgZGVub3JtX21pbigpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmc+KDApOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfaWVjNTU5ID0g
ZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19ib3VuZGVkID0gdHJ1ZTsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX21vZHVsbyA9IHRydWU7CgogICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgdHJhcHMgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
dGlueW5lc3NfYmVmb3JlID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfcm91
bmRfc3R5bGUgcm91bmRfc3R5bGUKICAgICAgID0gcm91bmRfdG93YXJkX3plcm87CiAgICB9OwoK
CiAgdGVtcGxhdGU8PgogICAgc3RydWN0IG51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz4KICAgIHsK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgbG9uZyBsb25nCiAgICAgIG1pbigpIG5vZXhjZXB0IHsgcmV0dXJu
IC05MjIzMzcyMDM2ODU0Nzc1ODA3TEwgLSAxOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGxv
bmcgbG9uZwogICAgICBtYXgoKSBub2V4Y2VwdCB7IHJldHVybiA5MjIzMzcyMDM2ODU0Nzc1ODA3
TEw7IH0KCgogICAgICBzdGF0aWMgY29uc3RleHByIGxvbmcgbG9uZwogICAgICBsb3dlc3QoKSBu
b2V4Y2VwdCB7IHJldHVybiBtaW4oKTsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRp
Z2l0cwogICAgICAgPSAoc2l6ZW9mKGxvbmcgbG9uZykgKiA4IC0gKChsb25nIGxvbmcpKC0xKSA8
IDApKTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzMTAKICAgICAgID0gKChzaXpl
b2YobG9uZyBsb25nKSAqIDggLSAoKGxvbmcgbG9uZykoLTEpIDwgMCkpICogNjQzTCAvIDIxMzYp
OwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2RpZ2l0czEwID0gMDsKCiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zaWduZWQgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNfaW50ZWdlciA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c19leGFjdCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHJhZGl4ID0gMjsKCiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgbG9uZyBsb25nCiAgICAgIGVwc2lsb24oKSBub2V4Y2VwdCB7
IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGxvbmcgbG9uZwogICAgICByb3Vu
ZF9lcnJvcigpIG5vZXhjZXB0IHsgcmV0dXJuIDA7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IG1pbl9leHBvbmVudCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9leHBv
bmVudDEwID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2V4cG9uZW50ID0gMDsK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2V4cG9uZW50MTAgPSAwOwoKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGhhc19pbmZpbml0eSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaGFzX3F1aWV0X05hTiA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaGFzX3NpZ25hbGluZ19OYU4gPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBm
bG9hdF9kZW5vcm1fc3R5bGUgaGFzX2Rlbm9ybQogICAgICAgPSBkZW5vcm1fYWJzZW50OwogICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX2Rlbm9ybV9sb3NzID0gZmFsc2U7CgogICAgICBz
dGF0aWMgY29uc3RleHByIGxvbmcgbG9uZwogICAgICBpbmZpbml0eSgpIG5vZXhjZXB0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
bG9uZyBsb25nCiAgICAgIHF1aWV0X05hTigpIG5vZXhjZXB0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgbG9uZyBsb25nCiAgICAg
IHNpZ25hbGluZ19OYU4oKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxsb25n
IGxvbmc+KDApOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGxvbmcgbG9uZwogICAgICBkZW5v
cm1fbWluKCkgbm9leGNlcHQgeyByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigwKTsgfQoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2llYzU1OSA9IGZhbHNlOwogICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNfYm91bmRlZCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc19tb2R1bG8gPSBmYWxzZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0
cmFwcyA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0aW55bmVzc19iZWZvcmUg
PSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdF9yb3VuZF9zdHlsZSByb3VuZF9z
dHlsZQogICAgICAgPSByb3VuZF90b3dhcmRfemVybzsKICAgIH07CgoKICB0ZW1wbGF0ZTw+CiAg
ICBzdHJ1Y3QgbnVtZXJpY19saW1pdHM8dW5zaWduZWQgbG9uZyBsb25nPgogICAgewogICAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlOwoKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBsb25nIGxvbmcKICAgICAgbWluKCkgbm9leGNlcHQgeyByZXR1
cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBsb25nIGxvbmcKICAgICAg
bWF4KCkgbm9leGNlcHQgeyByZXR1cm4gOTIyMzM3MjAzNjg1NDc3NTgwN0xMICogMlVMTCArIDE7
IH0KCgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGxvbmcgbG9uZwogICAgICBsb3dl
c3QoKSBub2V4Y2VwdCB7IHJldHVybiBtaW4oKTsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IGRpZ2l0cwogICAgICAgPSAoc2l6ZW9mKHVuc2lnbmVkIGxvbmcgbG9uZykgKiA4IC0gKCh1
bnNpZ25lZCBsb25nIGxvbmcpKC0xKSA8IDApKTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQg
ZGlnaXRzMTAKICAgICAgID0gKChzaXplb2YodW5zaWduZWQgbG9uZyBsb25nKSAqIDggLSAoKHVu
c2lnbmVkIGxvbmcgbG9uZykoLTEpIDwgMCkpICogNjQzTCAvIDIxMzYpOwoKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgbWF4X2RpZ2l0czEwID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc19zaWduZWQgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2lu
dGVnZXIgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfZXhhY3QgPSB0cnVl
OwogICAgICBzdGF0aWMgY29uc3RleHByIGludCByYWRpeCA9IDI7CgogICAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIGxvbmcgbG9uZwogICAgICBlcHNpbG9uKCkgbm9leGNlcHQgeyByZXR1
cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBsb25nIGxvbmcKICAgICAg
cm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBtaW5fZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtaW5f
ZXhwb25lbnQxMCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVudCA9
IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVudDEwID0gMDsKCiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfaW5maW5pdHkgPSBmYWxzZTsKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGhhc19xdWlldF9OYU4gPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5vcm0KICAgICAgID0gZGVub3JtX2Fic2VudDsK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOwoKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBsb25nIGxvbmcKICAgICAgaW5maW5pdHkoKSBu
b2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KDAp
OyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGxvbmcgbG9uZwogICAgICBxdWll
dF9OYU4oKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
IGxvbmc+KDApOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGxvbmcgbG9uZwog
ICAgICBzaWduYWxpbmdfTmFOKCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZyBsb25nPigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBsb25nIGxvbmcKICAgICAgZGVub3JtX21pbigpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc19pZWM1NTkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
X2JvdW5kZWQgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfbW9kdWxvID0g
dHJ1ZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0cmFwcyA9IHRydWU7CiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCB0aW55bmVzc19iZWZvcmUgPSBmYWxzZTsKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBmbG9hdF9yb3VuZF9zdHlsZSByb3VuZF9zdHlsZQogICAgICAgPSByb3VuZF90
b3dhcmRfemVybzsKICAgIH07CiMgMTU1MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9saW1pdHMiIDMKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1
Y3QgbnVtZXJpY19saW1pdHM8ZmxvYXQ+CiAgICB7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc19zcGVjaWFsaXplZCA9IHRydWU7CgogICAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0CiAg
ICAgIG1pbigpIG5vZXhjZXB0IHsgcmV0dXJuIDEuMTc1NDk0MzUwODIyMjg3NWUtMzhGOyB9Cgog
ICAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0CiAgICAgIG1heCgpIG5vZXhjZXB0IHsgcmV0dXJu
IDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzhGOyB9CgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9h
dAogICAgICBsb3dlc3QoKSBub2V4Y2VwdCB7IHJldHVybiAtMy40MDI4MjM0NjYzODUyODg2ZSsz
OEY7IH0KCgogICAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMgPSAyNDsKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzMTAgPSA2OwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgbWF4X2RpZ2l0czEwCiAgPSAoMiArICgyNCkgKiA2NDNMIC8gMjEzNik7CgogICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNfc2lnbmVkID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzX2ludGVnZXIgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
X2V4YWN0ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHJhZGl4ID0gMjsKCiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQKICAgICAgZXBzaWxvbigpIG5vZXhjZXB0IHsgcmV0
dXJuIDEuMTkyMDkyODk1NTA3ODEyNWUtN0Y7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxv
YXQKICAgICAgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7IHJldHVybiAwLjVGOyB9CgogICAgICBz
dGF0aWMgY29uc3RleHByIGludCBtaW5fZXhwb25lbnQgPSAoLTEyNSk7CiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50IG1pbl9leHBvbmVudDEwID0gKC0zNyk7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IG1heF9leHBvbmVudCA9IDEyODsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4
X2V4cG9uZW50MTAgPSAzODsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfaW5maW5p
dHkgPSAxOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3F1aWV0X05hTiA9IDE7CiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfc2lnbmFsaW5nX05hTiA9IGhhc19xdWlldF9O
YU47CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5vcm0K
ID0gYm9vbCgxKSA/IGRlbm9ybV9wcmVzZW50IDogZGVub3JtX2Fic2VudDsKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGhhc19kZW5vcm1fbG9zcwogICAgICAgPSBmYWxzZTsKCiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgZmxvYXQKICAgICAgaW5maW5pdHkoKSBub2V4Y2VwdCB7IHJldHVybiBf
X2J1aWx0aW5faHVnZV92YWxmKCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQKICAg
ICAgcXVpZXRfTmFOKCkgbm9leGNlcHQgeyByZXR1cm4gX19idWlsdGluX25hbmYoIiIpOyB9Cgog
ICAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0CiAgICAgIHNpZ25hbGluZ19OYU4oKSBub2V4Y2Vw
dCB7IHJldHVybiBfX2J1aWx0aW5fbmFuc2YoIiIpOyB9CgogICAgICBzdGF0aWMgY29uc3RleHBy
IGZsb2F0CiAgICAgIGRlbm9ybV9taW4oKSBub2V4Y2VwdCB7IHJldHVybiAxLjQwMTI5ODQ2NDMy
NDgxNzFlLTQ1RjsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2llYzU1OQogPSBo
YXNfaW5maW5pdHkgJiYgaGFzX3F1aWV0X05hTiAmJiBoYXNfZGVub3JtID09IGRlbm9ybV9wcmVz
ZW50OwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfYm91bmRlZCA9IHRydWU7CiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19tb2R1bG8gPSBmYWxzZTsKCiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCB0cmFwcyA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
dGlueW5lc3NfYmVmb3JlCiAgICAgICA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGZs
b2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxlCiAgICAgICA9IHJvdW5kX3RvX25lYXJlc3Q7CiAg
ICB9OwoKI3VuZGVmIF9fZ2xpYmN4eF9mbG9hdF9oYXNfZGVub3JtX2xvc3MKI3VuZGVmIF9fZ2xp
YmN4eF9mbG9hdF90cmFwcwojdW5kZWYgX19nbGliY3h4X2Zsb2F0X3RpbnluZXNzX2JlZm9yZQoK
CiAgdGVtcGxhdGU8PgogICAgc3RydWN0IG51bWVyaWNfbGltaXRzPGRvdWJsZT4KICAgIHsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgZG91YmxlCiAgICAgIG1pbigpIG5vZXhjZXB0IHsgcmV0dXJuIGRvdWJs
ZSgyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOEwpOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGRv
dWJsZQogICAgICBtYXgoKSBub2V4Y2VwdCB7IHJldHVybiBkb3VibGUoMS43OTc2OTMxMzQ4NjIz
MTU3ZSszMDhMKTsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlCiAgICAgIGxvd2Vz
dCgpIG5vZXhjZXB0IHsgcmV0dXJuIC1kb3VibGUoMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhMKTsg
fQoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0cyA9IDUzOwogICAgICBzdGF0aWMg
Y29uc3RleHByIGludCBkaWdpdHMxMCA9IDE1OwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQg
bWF4X2RpZ2l0czEwCiAgPSAoMiArICg1MykgKiA2NDNMIC8gMjEzNik7CgogICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNfc2lnbmVkID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzX2ludGVnZXIgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2V4
YWN0ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHJhZGl4ID0gMjsKCiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgZG91YmxlCiAgICAgIGVwc2lsb24oKSBub2V4Y2VwdCB7IHJldHVy
biBkb3VibGUoMi4yMjA0NDYwNDkyNTAzMTMxZS0xNkwpOyB9CgogICAgICBzdGF0aWMgY29uc3Rl
eHByIGRvdWJsZQogICAgICByb3VuZF9lcnJvcigpIG5vZXhjZXB0IHsgcmV0dXJuIDAuNTsgfQoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWluX2V4cG9uZW50ID0gKC0xMDIxKTsKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQgbWluX2V4cG9uZW50MTAgPSAoLTMwNyk7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVudCA9IDEwMjQ7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IG1heF9leHBvbmVudDEwID0gMzA4OwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGhhc19pbmZpbml0eSA9IDE7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfcXVpZXRf
TmFOID0gMTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19zaWduYWxpbmdfTmFOID0g
aGFzX3F1aWV0X05hTjsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdF9kZW5vcm1fc3R5bGUg
aGFzX2Rlbm9ybQogPSBib29sKDEpID8gZGVub3JtX3ByZXNlbnQgOiBkZW5vcm1fYWJzZW50Owog
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX2Rlbm9ybV9sb3NzCiAgICAgICAgPSBmYWxz
ZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlCiAgICAgIGluZmluaXR5KCkgbm9leGNl
cHQgeyByZXR1cm4gX19idWlsdGluX2h1Z2VfdmFsKCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgZG91YmxlCiAgICAgIHF1aWV0X05hTigpIG5vZXhjZXB0IHsgcmV0dXJuIF9fYnVpbHRpbl9u
YW4oIiIpOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGRvdWJsZQogICAgICBzaWduYWxpbmdf
TmFOKCkgbm9leGNlcHQgeyByZXR1cm4gX19idWlsdGluX25hbnMoIiIpOyB9CgogICAgICBzdGF0
aWMgY29uc3RleHByIGRvdWJsZQogICAgICBkZW5vcm1fbWluKCkgbm9leGNlcHQgeyByZXR1cm4g
ZG91YmxlKDQuOTQwNjU2NDU4NDEyNDY1NGUtMzI0TCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc19pZWM1NTkKID0gaGFzX2luZmluaXR5ICYmIGhhc19xdWlldF9OYU4gJiYgaGFz
X2Rlbm9ybSA9PSBkZW5vcm1fcHJlc2VudDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
X2JvdW5kZWQgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfbW9kdWxvID0g
ZmFsc2U7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdHJhcHMgPSBmYWxzZTsKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIHRpbnluZXNzX2JlZm9yZQogICAgICAgPSBmYWxzZTsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdF9yb3VuZF9zdHlsZSByb3VuZF9zdHlsZQogICAgICAg
PSByb3VuZF90b19uZWFyZXN0OwogICAgfTsKCiN1bmRlZiBfX2dsaWJjeHhfZG91YmxlX2hhc19k
ZW5vcm1fbG9zcwojdW5kZWYgX19nbGliY3h4X2RvdWJsZV90cmFwcwojdW5kZWYgX19nbGliY3h4
X2RvdWJsZV90aW55bmVzc19iZWZvcmUKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBudW1lcmlj
X2xpbWl0czxsb25nIGRvdWJsZT4KICAgIHsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
X3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgbG9uZyBkb3VibGUK
ICAgICAgbWluKCkgbm9leGNlcHQgeyByZXR1cm4gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDhMOyB9
CgogICAgICBzdGF0aWMgY29uc3RleHByIGxvbmcgZG91YmxlCiAgICAgIG1heCgpIG5vZXhjZXB0
IHsgcmV0dXJuIDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4TDsgfQoKCiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgbG9uZyBkb3VibGUKICAgICAgbG93ZXN0KCkgbm9leGNlcHQgeyByZXR1cm4gLTEuNzk3
NjkzMTM0ODYyMzE1N2UrMzA4TDsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0
cyA9IDUzOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMxMCA9IDE1OwoKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2RpZ2l0czEwCiAgPSAoMiArICg1MykgKiA2NDNMIC8g
MjEzNik7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfc2lnbmVkID0gdHJ1ZTsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2ludGVnZXIgPSBmYWxzZTsKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzX2V4YWN0ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHJhZGl4ID0gMjsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgbG9uZyBkb3VibGUKICAgICAg
ZXBzaWxvbigpIG5vZXhjZXB0IHsgcmV0dXJuIDIuMjIwNDQ2MDQ5MjUwMzEzMWUtMTZMOyB9Cgog
ICAgICBzdGF0aWMgY29uc3RleHByIGxvbmcgZG91YmxlCiAgICAgIHJvdW5kX2Vycm9yKCkgbm9l
eGNlcHQgeyByZXR1cm4gMC41TDsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWluX2V4
cG9uZW50ID0gKC0xMDIxKTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWluX2V4cG9uZW50
MTAgPSAoLTMwNyk7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVudCA9IDEw
MjQ7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVudDEwID0gMzA4OwoKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19pbmZpbml0eSA9IDE7CiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBoYXNfcXVpZXRfTmFOID0gMTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGhhc19zaWduYWxpbmdfTmFOID0gaGFzX3F1aWV0X05hTjsKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBmbG9hdF9kZW5vcm1fc3R5bGUgaGFzX2Rlbm9ybQogPSBib29sKDEpID8gZGVub3JtX3By
ZXNlbnQgOiBkZW5vcm1fYWJzZW50OwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX2Rl
bm9ybV9sb3NzCiA9IGZhbHNlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBsb25nIGRvdWJsZQog
ICAgICBpbmZpbml0eSgpIG5vZXhjZXB0IHsgcmV0dXJuIF9fYnVpbHRpbl9odWdlX3ZhbGwoKTsg
fQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogICAgICBxdWlldF9OYU4oKSBu
b2V4Y2VwdCB7IHJldHVybiBfX2J1aWx0aW5fbmFubCgiIik7IH0KCiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgbG9uZyBkb3VibGUKICAgICAgc2lnbmFsaW5nX05hTigpIG5vZXhjZXB0IHsgcmV0dXJu
IF9fYnVpbHRpbl9uYW5zbCgiIik7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgbG9uZyBkb3Vi
bGUKICAgICAgZGVub3JtX21pbigpIG5vZXhjZXB0IHsgcmV0dXJuIDQuOTQwNjU2NDU4NDEyNDY1
NGUtMzI0TDsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2llYzU1OQogPSBoYXNf
aW5maW5pdHkgJiYgaGFzX3F1aWV0X05hTiAmJiBoYXNfZGVub3JtID09IGRlbm9ybV9wcmVzZW50
OwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfYm91bmRlZCA9IHRydWU7CiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc19tb2R1bG8gPSBmYWxzZTsKCiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCB0cmFwcyA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGlu
eW5lc3NfYmVmb3JlID0KICAgICAgZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRf
cm91bmRfc3R5bGUgcm91bmRfc3R5bGUgPQogICAgICAgICAgICByb3VuZF90b19uZWFyZXN0Owog
ICAgfTsKCiN1bmRlZiBfX2dsaWJjeHhfbG9uZ19kb3VibGVfaGFzX2Rlbm9ybV9sb3NzCiN1bmRl
ZiBfX2dsaWJjeHhfbG9uZ19kb3VibGVfdHJhcHMKI3VuZGVmIF9fZ2xpYmN4eF9sb25nX2RvdWJs
ZV90aW55bmVzc19iZWZvcmUKCgp9CgojdW5kZWYgX19nbGliY3h4X3NpZ25lZAojdW5kZWYgX19n
bGliY3h4X21pbgojdW5kZWYgX19nbGliY3h4X21heAojdW5kZWYgX19nbGliY3h4X2RpZ2l0cwoj
dW5kZWYgX19nbGliY3h4X2RpZ2l0czEwCiN1bmRlZiBfX2dsaWJjeHhfbWF4X2RpZ2l0czEwCiMg
NDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvY2hyb25vIiAyIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2N0aW1lIiAxIDMKIyAzOSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9jdGltZSIgMwogICAgICAgCiMgNDAg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
Y3RpbWUiIDMKCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMyA0CiMgMjYgIi91c3IvaW5j
bHVkZS90aW1lLmgiIDMgNAojZGVmaW5lIF9USU1FX0ggMQoKCmV4dGVybiAiQyIgewoKCgoKCiNk
ZWZpbmUgX19uZWVkX3NpemVfdCAKI2RlZmluZSBfX25lZWRfTlVMTCAKIyAxICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRkZWYu
aCIgMSAzIDQKIyAyMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF9zaXplX3QKIyAz
OTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9p
bmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIE5VTEwKCiNkZWZpbmUgTlVMTCBfX251bGwKIyA0
MDggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9p
bmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF9OVUxMCiMgMzggIi91c3IvaW5jbHVk
ZS90aW1lLmgiIDIgMyA0CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYv
Yml0cy90aW1lLmgiIDEgMyA0CiMgNDAgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L2JpdHMvdGltZS5oIiAzIDQKI2RlZmluZSBfQklUU19USU1FX0ggMQoKCgoKCgoKI2RlZmluZSBD
TE9DS1NfUEVSX1NFQyAxMDAwMDAwbAojIDYxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVh
YmloZi9iaXRzL3RpbWUuaCIgMyA0CiNkZWZpbmUgQ0xPQ0tfUkVBTFRJTUUgMAoKI2RlZmluZSBD
TE9DS19NT05PVE9OSUMgMQoKI2RlZmluZSBDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQgMgoKI2Rl
ZmluZSBDTE9DS19USFJFQURfQ1BVVElNRV9JRCAzCgojZGVmaW5lIENMT0NLX01PTk9UT05JQ19S
QVcgNAoKI2RlZmluZSBDTE9DS19SRUFMVElNRV9DT0FSU0UgNQoKI2RlZmluZSBDTE9DS19NT05P
VE9OSUNfQ09BUlNFIDYKCiNkZWZpbmUgQ0xPQ0tfQk9PVFRJTUUgNwoKI2RlZmluZSBDTE9DS19S
RUFMVElNRV9BTEFSTSA4CgojZGVmaW5lIENMT0NLX0JPT1RUSU1FX0FMQVJNIDkKCgojZGVmaW5l
IFRJTUVSX0FCU1RJTUUgMQoKCgojIDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L2JpdHMvdGltZXguaCIgMSAzIDQKIyAxOSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJp
aGYvYml0cy90aW1leC5oIiAzIDQKI2RlZmluZSBfQklUU19USU1FWF9IIDEKCgoKCgpzdHJ1Y3Qg
dGltZXgKewogIHVuc2lnbmVkIGludCBtb2RlczsKICBfX3N5c2NhbGxfc2xvbmdfdCBvZmZzZXQ7
CiAgX19zeXNjYWxsX3Nsb25nX3QgZnJlcTsKICBfX3N5c2NhbGxfc2xvbmdfdCBtYXhlcnJvcjsK
ICBfX3N5c2NhbGxfc2xvbmdfdCBlc3RlcnJvcjsKICBpbnQgc3RhdHVzOwogIF9fc3lzY2FsbF9z
bG9uZ190IGNvbnN0YW50OwogIF9fc3lzY2FsbF9zbG9uZ190IHByZWNpc2lvbjsKICBfX3N5c2Nh
bGxfc2xvbmdfdCB0b2xlcmFuY2U7CiAgc3RydWN0IHRpbWV2YWwgdGltZTsKICBfX3N5c2NhbGxf
c2xvbmdfdCB0aWNrOwogIF9fc3lzY2FsbF9zbG9uZ190IHBwc2ZyZXE7CiAgX19zeXNjYWxsX3Ns
b25nX3Qgaml0dGVyOwogIGludCBzaGlmdDsKICBfX3N5c2NhbGxfc2xvbmdfdCBzdGFiaWw7CiAg
X19zeXNjYWxsX3Nsb25nX3Qgaml0Y250OwogIF9fc3lzY2FsbF9zbG9uZ190IGNhbGNudDsKICBf
X3N5c2NhbGxfc2xvbmdfdCBlcnJjbnQ7CiAgX19zeXNjYWxsX3Nsb25nX3Qgc3RiY250OwoKICBp
bnQgdGFpOwoKCiAgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKICBpbnQgOjMy
OyBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwogIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7
Cn07CgoKI2RlZmluZSBBREpfT0ZGU0VUIDB4MDAwMQojZGVmaW5lIEFESl9GUkVRVUVOQ1kgMHgw
MDAyCiNkZWZpbmUgQURKX01BWEVSUk9SIDB4MDAwNAojZGVmaW5lIEFESl9FU1RFUlJPUiAweDAw
MDgKI2RlZmluZSBBREpfU1RBVFVTIDB4MDAxMAojZGVmaW5lIEFESl9USU1FQ09OU1QgMHgwMDIw
CiNkZWZpbmUgQURKX1RBSSAweDAwODAKI2RlZmluZSBBREpfTUlDUk8gMHgxMDAwCiNkZWZpbmUg
QURKX05BTk8gMHgyMDAwCiNkZWZpbmUgQURKX1RJQ0sgMHg0MDAwCiNkZWZpbmUgQURKX09GRlNF
VF9TSU5HTEVTSE9UIDB4ODAwMQojZGVmaW5lIEFESl9PRkZTRVRfU1NfUkVBRCAweGEwMDEKCgoj
ZGVmaW5lIE1PRF9PRkZTRVQgQURKX09GRlNFVAojZGVmaW5lIE1PRF9GUkVRVUVOQ1kgQURKX0ZS
RVFVRU5DWQojZGVmaW5lIE1PRF9NQVhFUlJPUiBBREpfTUFYRVJST1IKI2RlZmluZSBNT0RfRVNU
RVJST1IgQURKX0VTVEVSUk9SCiNkZWZpbmUgTU9EX1NUQVRVUyBBREpfU1RBVFVTCiNkZWZpbmUg
TU9EX1RJTUVDT05TVCBBREpfVElNRUNPTlNUCiNkZWZpbmUgTU9EX0NMS0IgQURKX1RJQ0sKI2Rl
ZmluZSBNT0RfQ0xLQSBBREpfT0ZGU0VUX1NJTkdMRVNIT1QKI2RlZmluZSBNT0RfVEFJIEFESl9U
QUkKI2RlZmluZSBNT0RfTUlDUk8gQURKX01JQ1JPCiNkZWZpbmUgTU9EX05BTk8gQURKX05BTk8K
CgoKI2RlZmluZSBTVEFfUExMIDB4MDAwMQojZGVmaW5lIFNUQV9QUFNGUkVRIDB4MDAwMgojZGVm
aW5lIFNUQV9QUFNUSU1FIDB4MDAwNAojZGVmaW5lIFNUQV9GTEwgMHgwMDA4CgojZGVmaW5lIFNU
QV9JTlMgMHgwMDEwCiNkZWZpbmUgU1RBX0RFTCAweDAwMjAKI2RlZmluZSBTVEFfVU5TWU5DIDB4
MDA0MAojZGVmaW5lIFNUQV9GUkVRSE9MRCAweDAwODAKCiNkZWZpbmUgU1RBX1BQU1NJR05BTCAw
eDAxMDAKI2RlZmluZSBTVEFfUFBTSklUVEVSIDB4MDIwMAojZGVmaW5lIFNUQV9QUFNXQU5ERVIg
MHgwNDAwCiNkZWZpbmUgU1RBX1BQU0VSUk9SIDB4MDgwMAoKI2RlZmluZSBTVEFfQ0xPQ0tFUlIg
MHgxMDAwCiNkZWZpbmUgU1RBX05BTk8gMHgyMDAwCiNkZWZpbmUgU1RBX01PREUgMHg0MDAwCiNk
ZWZpbmUgU1RBX0NMSyAweDgwMDAKCgojZGVmaW5lIFNUQV9ST05MWSAoU1RBX1BQU1NJR05BTCB8
IFNUQV9QUFNKSVRURVIgfCBTVEFfUFBTV0FOREVSIHwgU1RBX1BQU0VSUk9SIHwgU1RBX0NMT0NL
RVJSIHwgU1RBX05BTk8gfCBTVEFfTU9ERSB8IFNUQV9DTEspCiMgODcgIi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL2JpdHMvdGltZS5oIiAyIDMgNAoKZXh0ZXJuICJDIiB7CgoKZXh0
ZXJuIGludCBjbG9ja19hZGp0aW1lIChfX2Nsb2NraWRfdCBfX2Nsb2NrX2lkLCBzdHJ1Y3QgdGlt
ZXggKl9fdXR4KSB0aHJvdyAoKTsKCn0KCgoKCgojdW5kZWYgX19uZWVkX3RpbWV2YWwKIyA0MiAi
L3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzIDQKIyA2NiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0
CiN1bmRlZiBfX25lZWRfY2xvY2tfdAojIDgyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKI3Vu
ZGVmIF9fbmVlZF90aW1lX3QKIyA5NCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CiN1bmRlZiBf
X2Nsb2NraWRfdGltZV90CiMgMTA2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKI3VuZGVmIF9f
bmVlZF90aW1lcl90CiMgMTI3ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKI3VuZGVmIF9fbmVl
ZF90aW1lc3BlYwoKCgoKCnN0cnVjdCB0bQp7CiAgaW50IHRtX3NlYzsKICBpbnQgdG1fbWluOwog
IGludCB0bV9ob3VyOwogIGludCB0bV9tZGF5OwogIGludCB0bV9tb247CiAgaW50IHRtX3llYXI7
CiAgaW50IHRtX3dkYXk7CiAgaW50IHRtX3lkYXk7CiAgaW50IHRtX2lzZHN0OwoKCiAgbG9uZyBp
bnQgdG1fZ210b2ZmOwogIGNvbnN0IGNoYXIgKnRtX3pvbmU7CgoKCgp9OwoKCgoKCgoKCnN0cnVj
dCBpdGltZXJzcGVjCiAgewogICAgc3RydWN0IHRpbWVzcGVjIGl0X2ludGVydmFsOwogICAgc3Ry
dWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwogIH07CgoKc3RydWN0IHNpZ2V2ZW50OwojIDE4MiAiL3Vz
ci9pbmNsdWRlL3RpbWUuaCIgMyA0CiNkZWZpbmUgVElNRV9VVEMgMQoKCgoKCgpleHRlcm4gY2xv
Y2tfdCBjbG9jayAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHRpbWVfdCB0aW1lICh0aW1lX3Qg
Kl9fdGltZXIpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgZGlmZnRpbWUgKHRpbWVfdCBfX3Rp
bWUxLCB0aW1lX3QgX190aW1lMCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKZXh0ZXJuIHRpbWVfdCBta3RpbWUgKHN0cnVjdCB0bSAqX190cCkgdGhyb3cgKCk7
CgoKCgoKZXh0ZXJuIHNpemVfdCBzdHJmdGltZSAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVf
dCBfX21heHNpemUsCiAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgIGNvbnN0
IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAq
c3RycHRpbWUgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICBjb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm10LCBzdHJ1Y3QgdG0gKl9fdHApCiAgICAgdGhyb3cgKCk7CgoKCgoK
CgpleHRlcm4gc2l6ZV90IHN0cmZ0aW1lX2wgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3Qg
X19tYXhzaXplLAogICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgY29u
c3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAsCiAgICAgX19sb2NhbGVfdCBfX2xvYykgdGhy
b3cgKCk7CgoKCmV4dGVybiBjaGFyICpzdHJwdGltZV9sIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fcywKICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIHN0cnVjdCB0bSAqX190cCwK
ICAgIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gc3RydWN0IHRtICpn
bXRpbWUgKGNvbnN0IHRpbWVfdCAqX190aW1lcikgdGhyb3cgKCk7CgoKCmV4dGVybiBzdHJ1Y3Qg
dG0gKmxvY2FsdGltZSAoY29uc3QgdGltZV90ICpfX3RpbWVyKSB0aHJvdyAoKTsKCgoKCgpleHRl
cm4gc3RydWN0IHRtICpnbXRpbWVfciAoY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIs
CiAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgdGhyb3cgKCk7CgoKCmV4dGVybiBz
dHJ1Y3QgdG0gKmxvY2FsdGltZV9yIChjb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwK
ICAgICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSB0aHJvdyAoKTsKCgoKCgpleHRl
cm4gY2hhciAqYXNjdGltZSAoY29uc3Qgc3RydWN0IHRtICpfX3RwKSB0aHJvdyAoKTsKCgpleHRl
cm4gY2hhciAqY3RpbWUgKGNvbnN0IHRpbWVfdCAqX190aW1lcikgdGhyb3cgKCk7CgoKCgoKCgpl
eHRlcm4gY2hhciAqYXNjdGltZV9yIChjb25zdCBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCwK
ICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgdGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKmN0aW1l
X3IgKGNvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAogICAgICAgIGNoYXIgKl9fcmVz
dHJpY3QgX19idWYpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKl9fdHpuYW1lWzJdOwpleHRl
cm4gaW50IF9fZGF5bGlnaHQ7CmV4dGVybiBsb25nIGludCBfX3RpbWV6b25lOwoKCgoKZXh0ZXJu
IGNoYXIgKnR6bmFtZVsyXTsKCgoKZXh0ZXJuIHZvaWQgdHpzZXQgKHZvaWQpIHRocm93ICgpOwoK
CgpleHRlcm4gaW50IGRheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgdGltZXpvbmU7CgoKCgoKZXh0
ZXJuIGludCBzdGltZSAoY29uc3QgdGltZV90ICpfX3doZW4pIHRocm93ICgpOwoKCgoKCiNkZWZp
bmUgX19pc2xlYXAoeWVhcikgKCh5ZWFyKSAlIDQgPT0gMCAmJiAoKHllYXIpICUgMTAwICE9IDAg
fHwgKHllYXIpICUgNDAwID09IDApKQojIDMxOSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4
dGVybiB0aW1lX3QgdGltZWdtIChzdHJ1Y3QgdG0gKl9fdHApIHRocm93ICgpOwoKCmV4dGVybiB0
aW1lX3QgdGltZWxvY2FsIChzdHJ1Y3QgdG0gKl9fdHApIHRocm93ICgpOwoKCmV4dGVybiBpbnQg
ZHlzaXplIChpbnQgX195ZWFyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CiMgMzM0ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIGludCBuYW5vc2xlZXAgKGNv
bnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXF1ZXN0ZWRfdGltZSwKICAgICAgICBzdHJ1Y3QgdGlt
ZXNwZWMgKl9fcmVtYWluaW5nKTsKCgoKZXh0ZXJuIGludCBjbG9ja19nZXRyZXMgKGNsb2NraWRf
dCBfX2Nsb2NrX2lkLCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzKSB0aHJvdyAoKTsKCgpleHRlcm4g
aW50IGNsb2NrX2dldHRpbWUgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLCBzdHJ1Y3QgdGltZXNwZWMg
Kl9fdHApIHRocm93ICgpOwoKCmV4dGVybiBpbnQgY2xvY2tfc2V0dGltZSAoY2xvY2tpZF90IF9f
Y2xvY2tfaWQsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX190cCkKICAgICB0aHJvdyAoKTsKCgoK
CgoKZXh0ZXJuIGludCBjbG9ja19uYW5vc2xlZXAgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLCBpbnQg
X19mbGFncywKICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXEsCiAgICAgICBzdHJ1
Y3QgdGltZXNwZWMgKl9fcmVtKTsKCgpleHRlcm4gaW50IGNsb2NrX2dldGNwdWNsb2NraWQgKHBp
ZF90IF9fcGlkLCBjbG9ja2lkX3QgKl9fY2xvY2tfaWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGlu
dCB0aW1lcl9jcmVhdGUgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLAogICAgc3RydWN0IHNpZ2V2ZW50
ICpfX3Jlc3RyaWN0IF9fZXZwLAogICAgdGltZXJfdCAqX19yZXN0cmljdCBfX3RpbWVyaWQpIHRo
cm93ICgpOwoKCmV4dGVybiBpbnQgdGltZXJfZGVsZXRlICh0aW1lcl90IF9fdGltZXJpZCkgdGhy
b3cgKCk7CgoKZXh0ZXJuIGludCB0aW1lcl9zZXR0aW1lICh0aW1lcl90IF9fdGltZXJpZCwgaW50
IF9fZmxhZ3MsCiAgICAgY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKl9fcmVzdHJpY3QgX192YWx1
ZSwKICAgICBzdHJ1Y3QgaXRpbWVyc3BlYyAqX19yZXN0cmljdCBfX292YWx1ZSkgdGhyb3cgKCk7
CgoKZXh0ZXJuIGludCB0aW1lcl9nZXR0aW1lICh0aW1lcl90IF9fdGltZXJpZCwgc3RydWN0IGl0
aW1lcnNwZWMgKl9fdmFsdWUpCiAgICAgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCB0aW1lcl9nZXRv
dmVycnVuICh0aW1lcl90IF9fdGltZXJpZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCB0aW1l
c3BlY19nZXQgKHN0cnVjdCB0aW1lc3BlYyAqX190cywgaW50IF9fYmFzZSkKICAgICB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMgNDAzICIvdXNyL2luY2x1ZGUv
dGltZS5oIiAzIDQKZXh0ZXJuIGludCBnZXRkYXRlX2VycjsKIyA0MTIgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDMgNApleHRlcm4gc3RydWN0IHRtICpnZXRkYXRlIChjb25zdCBjaGFyICpfX3N0cmlu
Zyk7CiMgNDI2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIGludCBnZXRkYXRlX3Ig
KGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zdHJpbmcsCiAgICAgICAgc3RydWN0IHRtICpfX3Jl
c3RyaWN0IF9fcmVzYnVmcCk7CgoKfQojIDQzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2N0aW1lIiAyIDMKCgojZGVmaW5lIF9HTElCQ1hY
X0NUSU1FIDEKCgojdW5kZWYgY2xvY2sKI3VuZGVmIGRpZmZ0aW1lCiN1bmRlZiBta3RpbWUKI3Vu
ZGVmIHRpbWUKI3VuZGVmIGFzY3RpbWUKI3VuZGVmIGN0aW1lCiN1bmRlZiBnbXRpbWUKI3VuZGVm
IGxvY2FsdGltZQojdW5kZWYgc3RyZnRpbWUKCm5hbWVzcGFjZSBzdGQKewogIHVzaW5nIDo6Y2xv
Y2tfdDsKICB1c2luZyA6OnRpbWVfdDsKICB1c2luZyA6OnRtOwoKICB1c2luZyA6OmNsb2NrOwog
IHVzaW5nIDo6ZGlmZnRpbWU7CiAgdXNpbmcgOjpta3RpbWU7CiAgdXNpbmcgOjp0aW1lOwogIHVz
aW5nIDo6YXNjdGltZTsKICB1c2luZyA6OmN0aW1lOwogIHVzaW5nIDo6Z210aW1lOwogIHVzaW5n
IDo6bG9jYWx0aW1lOwogIHVzaW5nIDo6c3RyZnRpbWU7Cn0KIyA0MiAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9jaHJvbm8iIDIgMwojIDEg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
Yml0cy9wYXJzZV9udW1iZXJzLmgiIDEgMwojIDMxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcGFyc2VfbnVtYmVycy5oIiAzCiNk
ZWZpbmUgX1BBUlNFX05VTUJFUlNfSCAxCgogICAgICAgCiMgMzQgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9wYXJzZV9udW1iZXJz
LmgiIDMKIyA0MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9jaHJvbm8iIDIgMwoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChf
X3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKIyA1OSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9jaHJvbm8iIDMKICBuYW1lc3BhY2Ug
Y2hyb25vCiAgewogCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcCwgdHlwZW5hbWUgX1Blcmlv
ZCA9IHJhdGlvPDE+PgogICAgICBzdHJ1Y3QgZHVyYXRpb247CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgX0Nsb2NrLCB0eXBlbmFtZSBfRHVyID0gdHlwZW5hbWUgX0Nsb2NrOjpkdXJhdGlvbj4KICAg
ICAgc3RydWN0IHRpbWVfcG9pbnQ7CgogCiAgfQoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NU
LCB0eXBlbmFtZSBfUGVyaW9kMSwgdHlwZW5hbWUgX1BlcmlvZDI+CiAgICBzdHJ1Y3QgX19kdXJh
dGlvbl9jb21tb25fdHlwZV93cmFwcGVyCiAgICB7CiAgICBwcml2YXRlOgogICAgICB0eXBlZGVm
IF9fc3RhdGljX2djZDxfUGVyaW9kMTo6bnVtLCBfUGVyaW9kMjo6bnVtPiBfX2djZF9udW07CiAg
ICAgIHR5cGVkZWYgX19zdGF0aWNfZ2NkPF9QZXJpb2QxOjpkZW4sIF9QZXJpb2QyOjpkZW4+IF9f
Z2NkX2RlbjsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQ1Q6OnR5cGUgX19jcjsKICAgICAgdHlw
ZWRlZiByYXRpbzxfX2djZF9udW06OnZhbHVlLAogICAgICAgIChfUGVyaW9kMTo6ZGVuIC8gX19n
Y2RfZGVuOjp2YWx1ZSkgKiBfUGVyaW9kMjo6ZGVuPiBfX3I7CiAgICBwdWJsaWM6CiAgICAgIHR5
cGVkZWYgX19zdWNjZXNzX3R5cGU8Y2hyb25vOjpkdXJhdGlvbjxfX2NyLCBfX3I+PiB0eXBlOwog
ICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1BlcmlvZDEsIHR5cGVuYW1lIF9QZXJpb2QyPgog
ICAgc3RydWN0IF9fZHVyYXRpb25fY29tbW9uX3R5cGVfd3JhcHBlcjxfX2ZhaWx1cmVfdHlwZSwg
X1BlcmlvZDEsIF9QZXJpb2QyPgogICAgeyB0eXBlZGVmIF9fZmFpbHVyZV90eXBlIHR5cGU7IH07
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAxLCB0eXBlbmFtZSBfUGVyaW9kMSwgdHlwZW5hbWUg
X1JlcDIsIHR5cGVuYW1lIF9QZXJpb2QyPgogICAgc3RydWN0IGNvbW1vbl90eXBlPGNocm9ubzo6
ZHVyYXRpb248X1JlcDEsIF9QZXJpb2QxPiwKICAgICAgICAgICAgIGNocm9ubzo6ZHVyYXRpb248
X1JlcDIsIF9QZXJpb2QyPj4KICAgIDogcHVibGljIF9fZHVyYXRpb25fY29tbW9uX3R5cGVfd3Jh
cHBlcjx0eXBlbmFtZSBfX21lbWJlcl90eXBlX3dyYXBwZXI8CiAgICAgICAgICAgICBjb21tb25f
dHlwZTxfUmVwMSwgX1JlcDI+Pjo6dHlwZSwgX1BlcmlvZDEsIF9QZXJpb2QyPjo6dHlwZQogICAg
eyB9OwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DVCwgdHlwZW5hbWUgX0Nsb2NrPgogICAgc3Ry
dWN0IF9fdGltZXBvaW50X2NvbW1vbl90eXBlX3dyYXBwZXIKICAgIHsKICAgICAgdHlwZWRlZiBf
X3N1Y2Nlc3NfdHlwZTxjaHJvbm86OnRpbWVfcG9pbnQ8X0Nsb2NrLCB0eXBlbmFtZSBfQ1Q6OnR5
cGU+PgogICAgICAgIHR5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2xvY2s+CiAg
ICBzdHJ1Y3QgX190aW1lcG9pbnRfY29tbW9uX3R5cGVfd3JhcHBlcjxfX2ZhaWx1cmVfdHlwZSwg
X0Nsb2NrPgogICAgeyB0eXBlZGVmIF9fZmFpbHVyZV90eXBlIHR5cGU7IH07CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DbG9jaywgdHlwZW5hbWUgX0R1cmF0aW9uMSwgdHlwZW5hbWUgX0R1cmF0aW9u
Mj4KICAgIHN0cnVjdCBjb21tb25fdHlwZTxjaHJvbm86OnRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVy
YXRpb24xPiwKICAgICAgICAgICAgIGNocm9ubzo6dGltZV9wb2ludDxfQ2xvY2ssIF9EdXJhdGlv
bjI+PgogICAgOiBwdWJsaWMgX190aW1lcG9pbnRfY29tbW9uX3R5cGVfd3JhcHBlcjx0eXBlbmFt
ZSBfX21lbWJlcl90eXBlX3dyYXBwZXI8CiAgICAgICAgICAgICBjb21tb25fdHlwZTxfRHVyYXRp
b24xLCBfRHVyYXRpb24yPj46OnR5cGUsIF9DbG9jaz46OnR5cGUKICAgIHsgfTsKCgoKICBuYW1l
c3BhY2UgY2hyb25vCiAgewogCgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Ub0R1ciwgdHlwZW5h
bWUgX0NGLCB0eXBlbmFtZSBfQ1IsCiAgICAgIGJvb2wgX051bUlzT25lID0gZmFsc2UsIGJvb2wg
X0RlbklzT25lID0gZmFsc2U+CiAgICAgIHN0cnVjdCBfX2R1cmF0aW9uX2Nhc3RfaW1wbAogICAg
ICB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVwLCB0eXBlbmFtZSBfUGVyaW9kPgogICBzdGF0aWMg
Y29uc3RleHByIF9Ub0R1cgogICBfX2Nhc3QoY29uc3QgZHVyYXRpb248X1JlcCwgX1BlcmlvZD4m
IF9fZCkKICAgewogICAgIHR5cGVkZWYgdHlwZW5hbWUgX1RvRHVyOjpyZXAgX190b19yZXA7CiAg
ICAgcmV0dXJuIF9Ub0R1cihzdGF0aWNfY2FzdDxfX3RvX3JlcD4oc3RhdGljX2Nhc3Q8X0NSPihf
X2QuY291bnQoKSkKICAgICAgICogc3RhdGljX2Nhc3Q8X0NSPihfQ0Y6Om51bSkKICAgICAgIC8g
c3RhdGljX2Nhc3Q8X0NSPihfQ0Y6OmRlbikpKTsKICAgfQogICAgICB9OwoKICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9Ub0R1ciwgdHlwZW5hbWUgX0NGLCB0eXBlbmFtZSBfQ1I+CiAgICAgIHN0cnVj
dCBfX2R1cmF0aW9uX2Nhc3RfaW1wbDxfVG9EdXIsIF9DRiwgX0NSLCB0cnVlLCB0cnVlPgogICAg
ICB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVwLCB0eXBlbmFtZSBfUGVyaW9kPgogICBzdGF0aWMg
Y29uc3RleHByIF9Ub0R1cgogICBfX2Nhc3QoY29uc3QgZHVyYXRpb248X1JlcCwgX1BlcmlvZD4m
IF9fZCkKICAgewogICAgIHR5cGVkZWYgdHlwZW5hbWUgX1RvRHVyOjpyZXAgX190b19yZXA7CiAg
ICAgcmV0dXJuIF9Ub0R1cihzdGF0aWNfY2FzdDxfX3RvX3JlcD4oX19kLmNvdW50KCkpKTsKICAg
fQogICAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Ub0R1ciwgdHlwZW5hbWUgX0NGLCB0
eXBlbmFtZSBfQ1I+CiAgICAgIHN0cnVjdCBfX2R1cmF0aW9uX2Nhc3RfaW1wbDxfVG9EdXIsIF9D
RiwgX0NSLCB0cnVlLCBmYWxzZT4KICAgICAgewogdGVtcGxhdGU8dHlwZW5hbWUgX1JlcCwgdHlw
ZW5hbWUgX1BlcmlvZD4KICAgc3RhdGljIGNvbnN0ZXhwciBfVG9EdXIKICAgX19jYXN0KGNvbnN0
IGR1cmF0aW9uPF9SZXAsIF9QZXJpb2Q+JiBfX2QpCiAgIHsKICAgICB0eXBlZGVmIHR5cGVuYW1l
IF9Ub0R1cjo6cmVwIF9fdG9fcmVwOwogICAgIHJldHVybiBfVG9EdXIoc3RhdGljX2Nhc3Q8X190
b19yZXA+KAogICAgICAgc3RhdGljX2Nhc3Q8X0NSPihfX2QuY291bnQoKSkgLyBzdGF0aWNfY2Fz
dDxfQ1I+KF9DRjo6ZGVuKSkpOwogICB9CiAgICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RvRHVyLCB0eXBlbmFtZSBfQ0YsIHR5cGVuYW1lIF9DUj4KICAgICAgc3RydWN0IF9fZHVyYXRp
b25fY2FzdF9pbXBsPF9Ub0R1ciwgX0NGLCBfQ1IsIGZhbHNlLCB0cnVlPgogICAgICB7CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBfUmVwLCB0eXBlbmFtZSBfUGVyaW9kPgogICBzdGF0aWMgY29uc3RleHBy
IF9Ub0R1cgogICBfX2Nhc3QoY29uc3QgZHVyYXRpb248X1JlcCwgX1BlcmlvZD4mIF9fZCkKICAg
ewogICAgIHR5cGVkZWYgdHlwZW5hbWUgX1RvRHVyOjpyZXAgX190b19yZXA7CiAgICAgcmV0dXJu
IF9Ub0R1cihzdGF0aWNfY2FzdDxfX3RvX3JlcD4oCiAgICAgICBzdGF0aWNfY2FzdDxfQ1I+KF9f
ZC5jb3VudCgpKSAqIHN0YXRpY19jYXN0PF9DUj4oX0NGOjpudW0pKSk7CiAgIH0KICAgICAgfTsK
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICAgIHN0cnVjdCBfX2lzX2R1cmF0aW9uCiAg
ICAgIDogc3RkOjpmYWxzZV90eXBlCiAgICAgIHsgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
UmVwLCB0eXBlbmFtZSBfUGVyaW9kPgogICAgICBzdHJ1Y3QgX19pc19kdXJhdGlvbjxkdXJhdGlv
bjxfUmVwLCBfUGVyaW9kPj4KICAgICAgOiBzdGQ6OnRydWVfdHlwZQogICAgICB7IH07CgoKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9Ub0R1ciwgdHlwZW5hbWUgX1JlcCwgdHlwZW5hbWUgX1Blcmlv
ZD4KICAgICAgY29uc3RleHByIHR5cGVuYW1lIGVuYWJsZV9pZjxfX2lzX2R1cmF0aW9uPF9Ub0R1
cj46OnZhbHVlLAogICAgICAgX1RvRHVyPjo6dHlwZQogICAgICBkdXJhdGlvbl9jYXN0KGNvbnN0
IGR1cmF0aW9uPF9SZXAsIF9QZXJpb2Q+JiBfX2QpCiAgICAgIHsKIHR5cGVkZWYgdHlwZW5hbWUg
X1RvRHVyOjpwZXJpb2QgX190b19wZXJpb2Q7CiB0eXBlZGVmIHR5cGVuYW1lIF9Ub0R1cjo6cmVw
IF9fdG9fcmVwOwogdHlwZWRlZiByYXRpb19kaXZpZGU8X1BlcmlvZCwgX190b19wZXJpb2Q+IF9f
Y2Y7CiB0eXBlZGVmIHR5cGVuYW1lIGNvbW1vbl90eXBlPF9fdG9fcmVwLCBfUmVwLCBpbnRtYXhf
dD46OnR5cGUKICAgICAgICAgIF9fY3I7CiB0eXBlZGVmIF9fZHVyYXRpb25fY2FzdF9pbXBsPF9U
b0R1ciwgX19jZiwgX19jciwKICAgICAgICAgIF9fY2Y6Om51bSA9PSAxLCBfX2NmOjpkZW4gPT0g
MT4gX19kYzsKIHJldHVybiBfX2RjOjpfX2Nhc3QoX19kKTsKICAgICAgfQoKCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUmVwPgogICAgICBzdHJ1Y3QgdHJlYXRfYXNfZmxvYXRpbmdfcG9pbnQKICAg
ICAgOiBpc19mbG9hdGluZ19wb2ludDxfUmVwPgogICAgICB7IH07CgoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9SZXA+CiAgICAgIHN0cnVjdCBkdXJhdGlvbl92YWx1ZXMKICAgICAgewogc3RhdGlj
IGNvbnN0ZXhwciBfUmVwCiB6ZXJvKCkKIHsgcmV0dXJuIF9SZXAoMCk7IH0KCiBzdGF0aWMgY29u
c3RleHByIF9SZXAKIG1heCgpCiB7IHJldHVybiBudW1lcmljX2xpbWl0czxfUmVwPjo6bWF4KCk7
IH0KCiBzdGF0aWMgY29uc3RleHByIF9SZXAKIG1pbigpCiB7IHJldHVybiBudW1lcmljX2xpbWl0
czxfUmVwPjo6bG93ZXN0KCk7IH0KICAgICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICAgIHN0cnVjdCBfX2lzX3JhdGlvCiAgICAgIDogc3RkOjpmYWxzZV90eXBlCiAgICAgIHsg
fTsKCiAgICB0ZW1wbGF0ZTxpbnRtYXhfdCBfTnVtLCBpbnRtYXhfdCBfRGVuPgogICAgICBzdHJ1
Y3QgX19pc19yYXRpbzxyYXRpbzxfTnVtLCBfRGVuPj4KICAgICAgOiBzdGQ6OnRydWVfdHlwZQog
ICAgICB7IH07CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAsIHR5cGVuYW1lIF9QZXJpb2Q+
CiAgICAgIHN0cnVjdCBkdXJhdGlvbgogICAgICB7CiB0eXBlZGVmIF9SZXAgcmVwOwogdHlwZWRl
ZiBfUGVyaW9kIHBlcmlvZDsKCiBzdGF0aWNfYXNzZXJ0KCFfX2lzX2R1cmF0aW9uPF9SZXA+Ojp2
YWx1ZSwgInJlcCBjYW5ub3QgYmUgYSBkdXJhdGlvbiIpOwogc3RhdGljX2Fzc2VydChfX2lzX3Jh
dGlvPF9QZXJpb2Q+Ojp2YWx1ZSwKICAgICAgICAicGVyaW9kIG11c3QgYmUgYSBzcGVjaWFsaXph
dGlvbiBvZiByYXRpbyIpOwogc3RhdGljX2Fzc2VydChfUGVyaW9kOjpudW0gPiAwLCAicGVyaW9k
IG11c3QgYmUgcG9zaXRpdmUiKTsKCgogY29uc3RleHByIGR1cmF0aW9uKCkgPSBkZWZhdWx0OwoK
CgoKIGR1cmF0aW9uKGNvbnN0IGR1cmF0aW9uJikgPSBkZWZhdWx0OwoKIHRlbXBsYXRlPHR5cGVu
YW1lIF9SZXAyLCB0eXBlbmFtZSA9IHR5cGVuYW1lCiAgICAgICAgZW5hYmxlX2lmPGlzX2NvbnZl
cnRpYmxlPF9SZXAyLCByZXA+Ojp2YWx1ZQogICAgJiYgKHRyZWF0X2FzX2Zsb2F0aW5nX3BvaW50
PHJlcD46OnZhbHVlCiAgICAgICAgfHwgIXRyZWF0X2FzX2Zsb2F0aW5nX3BvaW50PF9SZXAyPjo6
dmFsdWUpPjo6dHlwZT4KICAgY29uc3RleHByIGV4cGxpY2l0IGR1cmF0aW9uKGNvbnN0IF9SZXAy
JiBfX3JlcCkKICAgOiBfX3Ioc3RhdGljX2Nhc3Q8cmVwPihfX3JlcCkpIHsgfQoKIHRlbXBsYXRl
PHR5cGVuYW1lIF9SZXAyLCB0eXBlbmFtZSBfUGVyaW9kMiwgdHlwZW5hbWUgPSB0eXBlbmFtZQog
ICAgICAgIGVuYWJsZV9pZjx0cmVhdF9hc19mbG9hdGluZ19wb2ludDxyZXA+Ojp2YWx1ZQogICAg
fHwgKHJhdGlvX2RpdmlkZTxfUGVyaW9kMiwgcGVyaW9kPjo6ZGVuID09IDEKICAgICAgICAmJiAh
dHJlYXRfYXNfZmxvYXRpbmdfcG9pbnQ8X1JlcDI+Ojp2YWx1ZSk+Ojp0eXBlPgogICBjb25zdGV4
cHIgZHVyYXRpb24oY29uc3QgZHVyYXRpb248X1JlcDIsIF9QZXJpb2QyPiYgX19kKQogICA6IF9f
cihkdXJhdGlvbl9jYXN0PGR1cmF0aW9uPihfX2QpLmNvdW50KCkpIHsgfQoKIH5kdXJhdGlvbigp
ID0gZGVmYXVsdDsKIGR1cmF0aW9uJiBvcGVyYXRvcj0oY29uc3QgZHVyYXRpb24mKSA9IGRlZmF1
bHQ7CgoKIGNvbnN0ZXhwciByZXAKIGNvdW50KCkgY29uc3QKIHsgcmV0dXJuIF9fcjsgfQoKCiBj
b25zdGV4cHIgZHVyYXRpb24KIG9wZXJhdG9yKygpIGNvbnN0CiB7IHJldHVybiAqdGhpczsgfQoK
IGNvbnN0ZXhwciBkdXJhdGlvbgogb3BlcmF0b3ItKCkgY29uc3QKIHsgcmV0dXJuIGR1cmF0aW9u
KC1fX3IpOyB9CgogZHVyYXRpb24mCiBvcGVyYXRvcisrKCkKIHsKICAgKytfX3I7CiAgIHJldHVy
biAqdGhpczsKIH0KCiBkdXJhdGlvbgogb3BlcmF0b3IrKyhpbnQpCiB7IHJldHVybiBkdXJhdGlv
bihfX3IrKyk7IH0KCiBkdXJhdGlvbiYKIG9wZXJhdG9yLS0oKQogewogICAtLV9fcjsKICAgcmV0
dXJuICp0aGlzOwogfQoKIGR1cmF0aW9uCiBvcGVyYXRvci0tKGludCkKIHsgcmV0dXJuIGR1cmF0
aW9uKF9fci0tKTsgfQoKIGR1cmF0aW9uJgogb3BlcmF0b3IrPShjb25zdCBkdXJhdGlvbiYgX19k
KQogewogICBfX3IgKz0gX19kLmNvdW50KCk7CiAgIHJldHVybiAqdGhpczsKIH0KCiBkdXJhdGlv
biYKIG9wZXJhdG9yLT0oY29uc3QgZHVyYXRpb24mIF9fZCkKIHsKICAgX19yIC09IF9fZC5jb3Vu
dCgpOwogICByZXR1cm4gKnRoaXM7CiB9CgogZHVyYXRpb24mCiBvcGVyYXRvcio9KGNvbnN0IHJl
cCYgX19yaHMpCiB7CiAgIF9fciAqPSBfX3JoczsKICAgcmV0dXJuICp0aGlzOwogfQoKIGR1cmF0
aW9uJgogb3BlcmF0b3IvPShjb25zdCByZXAmIF9fcmhzKQogewogICBfX3IgLz0gX19yaHM7CiAg
IHJldHVybiAqdGhpczsKIH0KCgogdGVtcGxhdGU8dHlwZW5hbWUgX1JlcDIgPSByZXA+CiAgIHR5
cGVuYW1lIGVuYWJsZV9pZjwhdHJlYXRfYXNfZmxvYXRpbmdfcG9pbnQ8X1JlcDI+Ojp2YWx1ZSwK
ICAgICAgICBkdXJhdGlvbiY+Ojp0eXBlCiAgIG9wZXJhdG9yJT0oY29uc3QgcmVwJiBfX3JocykK
ICAgewogICAgIF9fciAlPSBfX3JoczsKICAgICByZXR1cm4gKnRoaXM7CiAgIH0KCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUmVwMiA9IHJlcD4KICAgdHlwZW5hbWUgZW5hYmxlX2lmPCF0cmVhdF9hc19m
bG9hdGluZ19wb2ludDxfUmVwMj46OnZhbHVlLAogICAgICAgIGR1cmF0aW9uJj46OnR5cGUKICAg
b3BlcmF0b3IlPShjb25zdCBkdXJhdGlvbiYgX19kKQogICB7CiAgICAgX19yICU9IF9fZC5jb3Vu
dCgpOwogICAgIHJldHVybiAqdGhpczsKICAgfQoKCiBzdGF0aWMgY29uc3RleHByIGR1cmF0aW9u
CiB6ZXJvKCkKIHsgcmV0dXJuIGR1cmF0aW9uKGR1cmF0aW9uX3ZhbHVlczxyZXA+Ojp6ZXJvKCkp
OyB9Cgogc3RhdGljIGNvbnN0ZXhwciBkdXJhdGlvbgogbWluKCkKIHsgcmV0dXJuIGR1cmF0aW9u
KGR1cmF0aW9uX3ZhbHVlczxyZXA+OjptaW4oKSk7IH0KCiBzdGF0aWMgY29uc3RleHByIGR1cmF0
aW9uCiBtYXgoKQogeyByZXR1cm4gZHVyYXRpb24oZHVyYXRpb25fdmFsdWVzPHJlcD46Om1heCgp
KTsgfQoKICAgICAgcHJpdmF0ZToKIHJlcCBfX3I7CiAgICAgIH07CgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1JlcDEsIHR5cGVuYW1lIF9QZXJpb2QxLAogICAgICB0eXBlbmFtZSBfUmVwMiwgdHlw
ZW5hbWUgX1BlcmlvZDI+CiAgICAgIGNvbnN0ZXhwciB0eXBlbmFtZSBjb21tb25fdHlwZTxkdXJh
dGlvbjxfUmVwMSwgX1BlcmlvZDE+LAogICAgICAgICBkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+
Pjo6dHlwZQogICAgICBvcGVyYXRvcisoY29uc3QgZHVyYXRpb248X1JlcDEsIF9QZXJpb2QxPiYg
X19saHMsCiAgY29uc3QgZHVyYXRpb248X1JlcDIsIF9QZXJpb2QyPiYgX19yaHMpCiAgICAgIHsK
IHR5cGVkZWYgZHVyYXRpb248X1JlcDEsIF9QZXJpb2QxPiBfX2R1cjE7CiB0eXBlZGVmIGR1cmF0
aW9uPF9SZXAyLCBfUGVyaW9kMj4gX19kdXIyOwogdHlwZWRlZiB0eXBlbmFtZSBjb21tb25fdHlw
ZTxfX2R1cjEsX19kdXIyPjo6dHlwZSBfX2NkOwogcmV0dXJuIF9fY2QoX19jZChfX2xocykuY291
bnQoKSArIF9fY2QoX19yaHMpLmNvdW50KCkpOwogICAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1JlcDEsIHR5cGVuYW1lIF9QZXJpb2QxLAogICAgICB0eXBlbmFtZSBfUmVwMiwgdHlwZW5h
bWUgX1BlcmlvZDI+CiAgICAgIGNvbnN0ZXhwciB0eXBlbmFtZSBjb21tb25fdHlwZTxkdXJhdGlv
bjxfUmVwMSwgX1BlcmlvZDE+LAogICAgICAgICBkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+Pjo6
dHlwZQogICAgICBvcGVyYXRvci0oY29uc3QgZHVyYXRpb248X1JlcDEsIF9QZXJpb2QxPiYgX19s
aHMsCiAgY29uc3QgZHVyYXRpb248X1JlcDIsIF9QZXJpb2QyPiYgX19yaHMpCiAgICAgIHsKIHR5
cGVkZWYgZHVyYXRpb248X1JlcDEsIF9QZXJpb2QxPiBfX2R1cjE7CiB0eXBlZGVmIGR1cmF0aW9u
PF9SZXAyLCBfUGVyaW9kMj4gX19kdXIyOwogdHlwZWRlZiB0eXBlbmFtZSBjb21tb25fdHlwZTxf
X2R1cjEsX19kdXIyPjo6dHlwZSBfX2NkOwogcmV0dXJuIF9fY2QoX19jZChfX2xocykuY291bnQo
KSAtIF9fY2QoX19yaHMpLmNvdW50KCkpOwogICAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JlcDEsIHR5cGVuYW1lIF9SZXAyLCBib29sID0KICAgICAgaXNfY29udmVydGlibGU8X1JlcDIs
CiAgICAgICB0eXBlbmFtZSBjb21tb25fdHlwZTxfUmVwMSwgX1JlcDI+Ojp0eXBlPjo6dmFsdWU+
CiAgICAgIHN0cnVjdCBfX2NvbW1vbl9yZXBfdHlwZSB7IH07CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1JlcDEsIHR5cGVuYW1lIF9SZXAyPgogICAgICBzdHJ1Y3QgX19jb21tb25fcmVwX3R5cGU8
X1JlcDEsIF9SZXAyLCB0cnVlPgogICAgICB7IHR5cGVkZWYgdHlwZW5hbWUgY29tbW9uX3R5cGU8
X1JlcDEsIF9SZXAyPjo6dHlwZSB0eXBlOyB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAx
LCB0eXBlbmFtZSBfUGVyaW9kLCB0eXBlbmFtZSBfUmVwMj4KICAgICAgY29uc3RleHByCiAgICAg
IGR1cmF0aW9uPHR5cGVuYW1lIF9fY29tbW9uX3JlcF90eXBlPF9SZXAxLCBfUmVwMj46OnR5cGUs
IF9QZXJpb2Q+CiAgICAgIG9wZXJhdG9yKihjb25zdCBkdXJhdGlvbjxfUmVwMSwgX1BlcmlvZD4m
IF9fZCwgY29uc3QgX1JlcDImIF9fcykKICAgICAgewogdHlwZWRlZiBkdXJhdGlvbjx0eXBlbmFt
ZSBjb21tb25fdHlwZTxfUmVwMSwgX1JlcDI+Ojp0eXBlLCBfUGVyaW9kPgogICBfX2NkOwogcmV0
dXJuIF9fY2QoX19jZChfX2QpLmNvdW50KCkgKiBfX3MpOwogICAgICB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1JlcDEsIHR5cGVuYW1lIF9SZXAyLCB0eXBlbmFtZSBfUGVyaW9kPgogICAgICBj
b25zdGV4cHIKICAgICAgZHVyYXRpb248dHlwZW5hbWUgX19jb21tb25fcmVwX3R5cGU8X1JlcDIs
IF9SZXAxPjo6dHlwZSwgX1BlcmlvZD4KICAgICAgb3BlcmF0b3IqKGNvbnN0IF9SZXAxJiBfX3Ms
IGNvbnN0IGR1cmF0aW9uPF9SZXAyLCBfUGVyaW9kPiYgX19kKQogICAgICB7IHJldHVybiBfX2Qg
KiBfX3M7IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVwMSwgdHlwZW5hbWUgX1BlcmlvZCwg
dHlwZW5hbWUgX1JlcDI+CiAgICAgIGNvbnN0ZXhwciBkdXJhdGlvbjx0eXBlbmFtZSBfX2NvbW1v
bl9yZXBfdHlwZTxfUmVwMSwgdHlwZW5hbWUKIGVuYWJsZV9pZjwhX19pc19kdXJhdGlvbjxfUmVw
Mj46OnZhbHVlLCBfUmVwMj46OnR5cGU+Ojp0eXBlLCBfUGVyaW9kPgogICAgICBvcGVyYXRvci8o
Y29uc3QgZHVyYXRpb248X1JlcDEsIF9QZXJpb2Q+JiBfX2QsIGNvbnN0IF9SZXAyJiBfX3MpCiAg
ICAgIHsKIHR5cGVkZWYgZHVyYXRpb248dHlwZW5hbWUgY29tbW9uX3R5cGU8X1JlcDEsIF9SZXAy
Pjo6dHlwZSwgX1BlcmlvZD4KICAgX19jZDsKIHJldHVybiBfX2NkKF9fY2QoX19kKS5jb3VudCgp
IC8gX19zKTsKICAgICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAxLCB0eXBlbmFtZSBf
UGVyaW9kMSwKICAgICAgdHlwZW5hbWUgX1JlcDIsIHR5cGVuYW1lIF9QZXJpb2QyPgogICAgICBj
b25zdGV4cHIgdHlwZW5hbWUgY29tbW9uX3R5cGU8X1JlcDEsIF9SZXAyPjo6dHlwZQogICAgICBv
cGVyYXRvci8oY29uc3QgZHVyYXRpb248X1JlcDEsIF9QZXJpb2QxPiYgX19saHMsCiAgY29uc3Qg
ZHVyYXRpb248X1JlcDIsIF9QZXJpb2QyPiYgX19yaHMpCiAgICAgIHsKIHR5cGVkZWYgZHVyYXRp
b248X1JlcDEsIF9QZXJpb2QxPiBfX2R1cjE7CiB0eXBlZGVmIGR1cmF0aW9uPF9SZXAyLCBfUGVy
aW9kMj4gX19kdXIyOwogdHlwZWRlZiB0eXBlbmFtZSBjb21tb25fdHlwZTxfX2R1cjEsX19kdXIy
Pjo6dHlwZSBfX2NkOwogcmV0dXJuIF9fY2QoX19saHMpLmNvdW50KCkgLyBfX2NkKF9fcmhzKS5j
b3VudCgpOwogICAgICB9CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAxLCB0eXBlbmFtZSBf
UGVyaW9kLCB0eXBlbmFtZSBfUmVwMj4KICAgICAgY29uc3RleHByIGR1cmF0aW9uPHR5cGVuYW1l
IF9fY29tbW9uX3JlcF90eXBlPF9SZXAxLCB0eXBlbmFtZQogZW5hYmxlX2lmPCFfX2lzX2R1cmF0
aW9uPF9SZXAyPjo6dmFsdWUsIF9SZXAyPjo6dHlwZT46OnR5cGUsIF9QZXJpb2Q+CiAgICAgIG9w
ZXJhdG9yJShjb25zdCBkdXJhdGlvbjxfUmVwMSwgX1BlcmlvZD4mIF9fZCwgY29uc3QgX1JlcDIm
IF9fcykKICAgICAgewogdHlwZWRlZiBkdXJhdGlvbjx0eXBlbmFtZSBjb21tb25fdHlwZTxfUmVw
MSwgX1JlcDI+Ojp0eXBlLCBfUGVyaW9kPgogICBfX2NkOwogcmV0dXJuIF9fY2QoX19jZChfX2Qp
LmNvdW50KCkgJSBfX3MpOwogICAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcDEsIHR5
cGVuYW1lIF9QZXJpb2QxLAogICAgICB0eXBlbmFtZSBfUmVwMiwgdHlwZW5hbWUgX1BlcmlvZDI+
CiAgICAgIGNvbnN0ZXhwciB0eXBlbmFtZSBjb21tb25fdHlwZTxkdXJhdGlvbjxfUmVwMSwgX1Bl
cmlvZDE+LAogICAgICAgICBkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+Pjo6dHlwZQogICAgICBv
cGVyYXRvciUoY29uc3QgZHVyYXRpb248X1JlcDEsIF9QZXJpb2QxPiYgX19saHMsCiAgY29uc3Qg
ZHVyYXRpb248X1JlcDIsIF9QZXJpb2QyPiYgX19yaHMpCiAgICAgIHsKIHR5cGVkZWYgZHVyYXRp
b248X1JlcDEsIF9QZXJpb2QxPiBfX2R1cjE7CiB0eXBlZGVmIGR1cmF0aW9uPF9SZXAyLCBfUGVy
aW9kMj4gX19kdXIyOwogdHlwZWRlZiB0eXBlbmFtZSBjb21tb25fdHlwZTxfX2R1cjEsX19kdXIy
Pjo6dHlwZSBfX2NkOwogcmV0dXJuIF9fY2QoX19jZChfX2xocykuY291bnQoKSAlIF9fY2QoX19y
aHMpLmNvdW50KCkpOwogICAgICB9CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAxLCB0eXBl
bmFtZSBfUGVyaW9kMSwKICAgICAgdHlwZW5hbWUgX1JlcDIsIHR5cGVuYW1lIF9QZXJpb2QyPgog
ICAgICBjb25zdGV4cHIgYm9vbAogICAgICBvcGVyYXRvcj09KGNvbnN0IGR1cmF0aW9uPF9SZXAx
LCBfUGVyaW9kMT4mIF9fbGhzLAogICBjb25zdCBkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+JiBf
X3JocykKICAgICAgewogdHlwZWRlZiBkdXJhdGlvbjxfUmVwMSwgX1BlcmlvZDE+IF9fZHVyMTsK
IHR5cGVkZWYgZHVyYXRpb248X1JlcDIsIF9QZXJpb2QyPiBfX2R1cjI7CiB0eXBlZGVmIHR5cGVu
YW1lIGNvbW1vbl90eXBlPF9fZHVyMSxfX2R1cjI+Ojp0eXBlIF9fY3Q7CiByZXR1cm4gX19jdChf
X2xocykuY291bnQoKSA9PSBfX2N0KF9fcmhzKS5jb3VudCgpOwogICAgICB9CgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1JlcDEsIHR5cGVuYW1lIF9QZXJpb2QxLAogICAgICB0eXBlbmFtZSBfUmVw
MiwgdHlwZW5hbWUgX1BlcmlvZDI+CiAgICAgIGNvbnN0ZXhwciBib29sCiAgICAgIG9wZXJhdG9y
PChjb25zdCBkdXJhdGlvbjxfUmVwMSwgX1BlcmlvZDE+JiBfX2xocywKICBjb25zdCBkdXJhdGlv
bjxfUmVwMiwgX1BlcmlvZDI+JiBfX3JocykKICAgICAgewogdHlwZWRlZiBkdXJhdGlvbjxfUmVw
MSwgX1BlcmlvZDE+IF9fZHVyMTsKIHR5cGVkZWYgZHVyYXRpb248X1JlcDIsIF9QZXJpb2QyPiBf
X2R1cjI7CiB0eXBlZGVmIHR5cGVuYW1lIGNvbW1vbl90eXBlPF9fZHVyMSxfX2R1cjI+Ojp0eXBl
IF9fY3Q7CiByZXR1cm4gX19jdChfX2xocykuY291bnQoKSA8IF9fY3QoX19yaHMpLmNvdW50KCk7
CiAgICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVwMSwgdHlwZW5hbWUgX1BlcmlvZDEs
CiAgICAgIHR5cGVuYW1lIF9SZXAyLCB0eXBlbmFtZSBfUGVyaW9kMj4KICAgICAgY29uc3RleHBy
IGJvb2wKICAgICAgb3BlcmF0b3IhPShjb25zdCBkdXJhdGlvbjxfUmVwMSwgX1BlcmlvZDE+JiBf
X2xocywKICAgY29uc3QgZHVyYXRpb248X1JlcDIsIF9QZXJpb2QyPiYgX19yaHMpCiAgICAgIHsg
cmV0dXJuICEoX19saHMgPT0gX19yaHMpOyB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcDEs
IHR5cGVuYW1lIF9QZXJpb2QxLAogICAgICB0eXBlbmFtZSBfUmVwMiwgdHlwZW5hbWUgX1Blcmlv
ZDI+CiAgICAgIGNvbnN0ZXhwciBib29sCiAgICAgIG9wZXJhdG9yPD0oY29uc3QgZHVyYXRpb248
X1JlcDEsIF9QZXJpb2QxPiYgX19saHMsCiAgIGNvbnN0IGR1cmF0aW9uPF9SZXAyLCBfUGVyaW9k
Mj4mIF9fcmhzKQogICAgICB7IHJldHVybiAhKF9fcmhzIDwgX19saHMpOyB9CgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1JlcDEsIHR5cGVuYW1lIF9QZXJpb2QxLAogICAgICB0eXBlbmFtZSBfUmVw
MiwgdHlwZW5hbWUgX1BlcmlvZDI+CiAgICAgIGNvbnN0ZXhwciBib29sCiAgICAgIG9wZXJhdG9y
Pihjb25zdCBkdXJhdGlvbjxfUmVwMSwgX1BlcmlvZDE+JiBfX2xocywKICBjb25zdCBkdXJhdGlv
bjxfUmVwMiwgX1BlcmlvZDI+JiBfX3JocykKICAgICAgeyByZXR1cm4gX19yaHMgPCBfX2xoczsg
fQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAxLCB0eXBlbmFtZSBfUGVyaW9kMSwKICAgICAg
dHlwZW5hbWUgX1JlcDIsIHR5cGVuYW1lIF9QZXJpb2QyPgogICAgICBjb25zdGV4cHIgYm9vbAog
ICAgICBvcGVyYXRvcj49KGNvbnN0IGR1cmF0aW9uPF9SZXAxLCBfUGVyaW9kMT4mIF9fbGhzLAog
ICBjb25zdCBkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+JiBfX3JocykKICAgICAgeyByZXR1cm4g
IShfX2xocyA8IF9fcmhzKTsgfQoKCiAgICB0eXBlZGVmIGR1cmF0aW9uPGludDY0X3QsIG5hbm8+
IG5hbm9zZWNvbmRzOwoKCiAgICB0eXBlZGVmIGR1cmF0aW9uPGludDY0X3QsIG1pY3JvPiBtaWNy
b3NlY29uZHM7CgoKICAgIHR5cGVkZWYgZHVyYXRpb248aW50NjRfdCwgbWlsbGk+IG1pbGxpc2Vj
b25kczsKCgogICAgdHlwZWRlZiBkdXJhdGlvbjxpbnQ2NF90PiBzZWNvbmRzOwoKCiAgICB0eXBl
ZGVmIGR1cmF0aW9uPGludDY0X3QsIHJhdGlvPCA2MD4+IG1pbnV0ZXM7CgoKICAgIHR5cGVkZWYg
ZHVyYXRpb248aW50NjRfdCwgcmF0aW88MzYwMD4+IGhvdXJzOwoKCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2xvY2ssIHR5cGVuYW1lIF9EdXI+CiAgICAgIHN0cnVjdCB0aW1lX3BvaW50CiAgICAg
IHsKIHR5cGVkZWYgX0Nsb2NrIGNsb2NrOwogdHlwZWRlZiBfRHVyIGR1cmF0aW9uOwogdHlwZWRl
ZiB0eXBlbmFtZSBkdXJhdGlvbjo6cmVwIHJlcDsKIHR5cGVkZWYgdHlwZW5hbWUgZHVyYXRpb246
OnBlcmlvZCBwZXJpb2Q7CgogY29uc3RleHByIHRpbWVfcG9pbnQoKSA6IF9fZChkdXJhdGlvbjo6
emVybygpKQogeyB9CgogY29uc3RleHByIGV4cGxpY2l0IHRpbWVfcG9pbnQoY29uc3QgZHVyYXRp
b24mIF9fZHVyKQogOiBfX2QoX19kdXIpCiB7IH0KCgogdGVtcGxhdGU8dHlwZW5hbWUgX0R1cjI+
CiAgIGNvbnN0ZXhwciB0aW1lX3BvaW50KGNvbnN0IHRpbWVfcG9pbnQ8Y2xvY2ssIF9EdXIyPiYg
X190KQogICA6IF9fZChfX3QudGltZV9zaW5jZV9lcG9jaCgpKQogICB7IH0KCgogY29uc3RleHBy
IGR1cmF0aW9uCiB0aW1lX3NpbmNlX2Vwb2NoKCkgY29uc3QKIHsgcmV0dXJuIF9fZDsgfQoKCiB0
aW1lX3BvaW50Jgogb3BlcmF0b3IrPShjb25zdCBkdXJhdGlvbiYgX19kdXIpCiB7CiAgIF9fZCAr
PSBfX2R1cjsKICAgcmV0dXJuICp0aGlzOwogfQoKIHRpbWVfcG9pbnQmCiBvcGVyYXRvci09KGNv
bnN0IGR1cmF0aW9uJiBfX2R1cikKIHsKICAgX19kIC09IF9fZHVyOwogICByZXR1cm4gKnRoaXM7
CiB9CgoKIHN0YXRpYyBjb25zdGV4cHIgdGltZV9wb2ludAogbWluKCkKIHsgcmV0dXJuIHRpbWVf
cG9pbnQoZHVyYXRpb246Om1pbigpKTsgfQoKIHN0YXRpYyBjb25zdGV4cHIgdGltZV9wb2ludAog
bWF4KCkKIHsgcmV0dXJuIHRpbWVfcG9pbnQoZHVyYXRpb246Om1heCgpKTsgfQoKICAgICAgcHJp
dmF0ZToKIGR1cmF0aW9uIF9fZDsKICAgICAgfTsKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rv
RHVyLCB0eXBlbmFtZSBfQ2xvY2ssIHR5cGVuYW1lIF9EdXI+CiAgICAgIGNvbnN0ZXhwciB0eXBl
bmFtZSBlbmFibGVfaWY8X19pc19kdXJhdGlvbjxfVG9EdXI+Ojp2YWx1ZSwKICAgICAgIHRpbWVf
cG9pbnQ8X0Nsb2NrLCBfVG9EdXI+Pjo6dHlwZQogICAgICB0aW1lX3BvaW50X2Nhc3QoY29uc3Qg
dGltZV9wb2ludDxfQ2xvY2ssIF9EdXI+JiBfX3QpCiAgICAgIHsKIHR5cGVkZWYgdGltZV9wb2lu
dDxfQ2xvY2ssIF9Ub0R1cj4gX190aW1lX3BvaW50OwogcmV0dXJuIF9fdGltZV9wb2ludChkdXJh
dGlvbl9jYXN0PF9Ub0R1cj4oX190LnRpbWVfc2luY2VfZXBvY2goKSkpOwogICAgICB9CgogICAg
dGVtcGxhdGU8dHlwZW5hbWUgX0Nsb2NrLCB0eXBlbmFtZSBfRHVyMSwKICAgICAgdHlwZW5hbWUg
X1JlcDIsIHR5cGVuYW1lIF9QZXJpb2QyPgogICAgICBjb25zdGV4cHIgdGltZV9wb2ludDxfQ2xv
Y2ssCiB0eXBlbmFtZSBjb21tb25fdHlwZTxfRHVyMSwgZHVyYXRpb248X1JlcDIsIF9QZXJpb2Qy
Pj46OnR5cGU+CiAgICAgIG9wZXJhdG9yKyhjb25zdCB0aW1lX3BvaW50PF9DbG9jaywgX0R1cjE+
JiBfX2xocywKICBjb25zdCBkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+JiBfX3JocykKICAgICAg
ewogdHlwZWRlZiBkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+IF9fZHVyMjsKIHR5cGVkZWYgdHlw
ZW5hbWUgY29tbW9uX3R5cGU8X0R1cjEsX19kdXIyPjo6dHlwZSBfX2N0OwogdHlwZWRlZiB0aW1l
X3BvaW50PF9DbG9jaywgX19jdD4gX190aW1lX3BvaW50OwogcmV0dXJuIF9fdGltZV9wb2ludChf
X2xocy50aW1lX3NpbmNlX2Vwb2NoKCkgKyBfX3Jocyk7CiAgICAgIH0KCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmVwMSwgdHlwZW5hbWUgX1BlcmlvZDEsCiAgICAgIHR5cGVuYW1lIF9DbG9jaywg
dHlwZW5hbWUgX0R1cjI+CiAgICAgIGNvbnN0ZXhwciB0aW1lX3BvaW50PF9DbG9jaywKIHR5cGVu
YW1lIGNvbW1vbl90eXBlPGR1cmF0aW9uPF9SZXAxLCBfUGVyaW9kMT4sIF9EdXIyPjo6dHlwZT4K
ICAgICAgb3BlcmF0b3IrKGNvbnN0IGR1cmF0aW9uPF9SZXAxLCBfUGVyaW9kMT4mIF9fbGhzLAog
IGNvbnN0IHRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVyMj4mIF9fcmhzKQogICAgICB7CiB0eXBlZGVm
IGR1cmF0aW9uPF9SZXAxLCBfUGVyaW9kMT4gX19kdXIxOwogdHlwZWRlZiB0eXBlbmFtZSBjb21t
b25fdHlwZTxfX2R1cjEsX0R1cjI+Ojp0eXBlIF9fY3Q7CiB0eXBlZGVmIHRpbWVfcG9pbnQ8X0Ns
b2NrLCBfX2N0PiBfX3RpbWVfcG9pbnQ7CiByZXR1cm4gX190aW1lX3BvaW50KF9fcmhzLnRpbWVf
c2luY2VfZXBvY2goKSArIF9fbGhzKTsKICAgICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9D
bG9jaywgdHlwZW5hbWUgX0R1cjEsCiAgICAgIHR5cGVuYW1lIF9SZXAyLCB0eXBlbmFtZSBfUGVy
aW9kMj4KICAgICAgY29uc3RleHByIHRpbWVfcG9pbnQ8X0Nsb2NrLAogdHlwZW5hbWUgY29tbW9u
X3R5cGU8X0R1cjEsIGR1cmF0aW9uPF9SZXAyLCBfUGVyaW9kMj4+Ojp0eXBlPgogICAgICBvcGVy
YXRvci0oY29uc3QgdGltZV9wb2ludDxfQ2xvY2ssIF9EdXIxPiYgX19saHMsCiAgY29uc3QgZHVy
YXRpb248X1JlcDIsIF9QZXJpb2QyPiYgX19yaHMpCiAgICAgIHsKIHR5cGVkZWYgZHVyYXRpb248
X1JlcDIsIF9QZXJpb2QyPiBfX2R1cjI7CiB0eXBlZGVmIHR5cGVuYW1lIGNvbW1vbl90eXBlPF9E
dXIxLF9fZHVyMj46OnR5cGUgX19jdDsKIHR5cGVkZWYgdGltZV9wb2ludDxfQ2xvY2ssIF9fY3Q+
IF9fdGltZV9wb2ludDsKIHJldHVybiBfX3RpbWVfcG9pbnQoX19saHMudGltZV9zaW5jZV9lcG9j
aCgpIC1fX3Jocyk7CiAgICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2xvY2ssIHR5cGVu
YW1lIF9EdXIxLCB0eXBlbmFtZSBfRHVyMj4KICAgICAgY29uc3RleHByIHR5cGVuYW1lIGNvbW1v
bl90eXBlPF9EdXIxLCBfRHVyMj46OnR5cGUKICAgICAgb3BlcmF0b3ItKGNvbnN0IHRpbWVfcG9p
bnQ8X0Nsb2NrLCBfRHVyMT4mIF9fbGhzLAogIGNvbnN0IHRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVy
Mj4mIF9fcmhzKQogICAgICB7IHJldHVybiBfX2xocy50aW1lX3NpbmNlX2Vwb2NoKCkgLSBfX3Jo
cy50aW1lX3NpbmNlX2Vwb2NoKCk7IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2xvY2ssIHR5
cGVuYW1lIF9EdXIxLCB0eXBlbmFtZSBfRHVyMj4KICAgICAgY29uc3RleHByIGJvb2wKICAgICAg
b3BlcmF0b3I9PShjb25zdCB0aW1lX3BvaW50PF9DbG9jaywgX0R1cjE+JiBfX2xocywKICAgY29u
c3QgdGltZV9wb2ludDxfQ2xvY2ssIF9EdXIyPiYgX19yaHMpCiAgICAgIHsgcmV0dXJuIF9fbGhz
LnRpbWVfc2luY2VfZXBvY2goKSA9PSBfX3Jocy50aW1lX3NpbmNlX2Vwb2NoKCk7IH0KCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2xvY2ssIHR5cGVuYW1lIF9EdXIxLCB0eXBlbmFtZSBfRHVyMj4K
ICAgICAgY29uc3RleHByIGJvb2wKICAgICAgb3BlcmF0b3IhPShjb25zdCB0aW1lX3BvaW50PF9D
bG9jaywgX0R1cjE+JiBfX2xocywKICAgY29uc3QgdGltZV9wb2ludDxfQ2xvY2ssIF9EdXIyPiYg
X19yaHMpCiAgICAgIHsgcmV0dXJuICEoX19saHMgPT0gX19yaHMpOyB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgX0Nsb2NrLCB0eXBlbmFtZSBfRHVyMSwgdHlwZW5hbWUgX0R1cjI+CiAgICAgIGNv
bnN0ZXhwciBib29sCiAgICAgIG9wZXJhdG9yPChjb25zdCB0aW1lX3BvaW50PF9DbG9jaywgX0R1
cjE+JiBfX2xocywKICBjb25zdCB0aW1lX3BvaW50PF9DbG9jaywgX0R1cjI+JiBfX3JocykKICAg
ICAgeyByZXR1cm4gX19saHMudGltZV9zaW5jZV9lcG9jaCgpIDwgX19yaHMudGltZV9zaW5jZV9l
cG9jaCgpOyB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Nsb2NrLCB0eXBlbmFtZSBfRHVyMSwg
dHlwZW5hbWUgX0R1cjI+CiAgICAgIGNvbnN0ZXhwciBib29sCiAgICAgIG9wZXJhdG9yPD0oY29u
c3QgdGltZV9wb2ludDxfQ2xvY2ssIF9EdXIxPiYgX19saHMsCiAgIGNvbnN0IHRpbWVfcG9pbnQ8
X0Nsb2NrLCBfRHVyMj4mIF9fcmhzKQogICAgICB7IHJldHVybiAhKF9fcmhzIDwgX19saHMpOyB9
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Nsb2NrLCB0eXBlbmFtZSBfRHVyMSwgdHlwZW5hbWUg
X0R1cjI+CiAgICAgIGNvbnN0ZXhwciBib29sCiAgICAgIG9wZXJhdG9yPihjb25zdCB0aW1lX3Bv
aW50PF9DbG9jaywgX0R1cjE+JiBfX2xocywKICBjb25zdCB0aW1lX3BvaW50PF9DbG9jaywgX0R1
cjI+JiBfX3JocykKICAgICAgeyByZXR1cm4gX19yaHMgPCBfX2xoczsgfQoKICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9DbG9jaywgdHlwZW5hbWUgX0R1cjEsIHR5cGVuYW1lIF9EdXIyPgogICAgICBj
b25zdGV4cHIgYm9vbAogICAgICBvcGVyYXRvcj49KGNvbnN0IHRpbWVfcG9pbnQ8X0Nsb2NrLCBf
RHVyMT4mIF9fbGhzLAogICBjb25zdCB0aW1lX3BvaW50PF9DbG9jaywgX0R1cjI+JiBfX3JocykK
ICAgICAgeyByZXR1cm4gIShfX2xocyA8IF9fcmhzKTsgfQojIDcwOSAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9jaHJvbm8iIDMKICAgIGlu
bGluZSBuYW1lc3BhY2UgX1YyIHsKCgoKCgoKICAgIHN0cnVjdCBzeXN0ZW1fY2xvY2sKICAgIHsK
ICAgICAgdHlwZWRlZiBjaHJvbm86Om5hbm9zZWNvbmRzIGR1cmF0aW9uOwogICAgICB0eXBlZGVm
IGR1cmF0aW9uOjpyZXAgcmVwOwogICAgICB0eXBlZGVmIGR1cmF0aW9uOjpwZXJpb2QgcGVyaW9k
OwogICAgICB0eXBlZGVmIGNocm9ubzo6dGltZV9wb2ludDxzeXN0ZW1fY2xvY2ssIGR1cmF0aW9u
PiB0aW1lX3BvaW50OwoKICAgICAgc3RhdGljX2Fzc2VydChzeXN0ZW1fY2xvY2s6OmR1cmF0aW9u
OjptaW4oKQogICAgICA8IHN5c3RlbV9jbG9jazo6ZHVyYXRpb246Onplcm8oKSwKICAgICAgImEg
Y2xvY2sncyBtaW5pbXVtIGR1cmF0aW9uIGNhbm5vdCBiZSBsZXNzIHRoYW4gaXRzIGVwb2NoIik7
CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfc3RlYWR5ID0gZmFsc2U7CgogICAgICBz
dGF0aWMgdGltZV9wb2ludAogICAgICBub3coKSBub2V4Y2VwdDsKCgogICAgICBzdGF0aWMgc3Rk
Ojp0aW1lX3QKICAgICAgdG9fdGltZV90KGNvbnN0IHRpbWVfcG9pbnQmIF9fdCkgbm9leGNlcHQK
ICAgICAgewogcmV0dXJuIHN0ZDo6dGltZV90KGR1cmF0aW9uX2Nhc3Q8Y2hyb25vOjpzZWNvbmRz
PgogICAgICAoX190LnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQoKSk7CiAgICAgIH0KCiAgICAg
IHN0YXRpYyB0aW1lX3BvaW50CiAgICAgIGZyb21fdGltZV90KHN0ZDo6dGltZV90IF9fdCkgbm9l
eGNlcHQKICAgICAgewogdHlwZWRlZiBjaHJvbm86OnRpbWVfcG9pbnQ8c3lzdGVtX2Nsb2NrLCBz
ZWNvbmRzPiBfX2Zyb207CiByZXR1cm4gdGltZV9wb2ludF9jYXN0PHN5c3RlbV9jbG9jazo6ZHVy
YXRpb24+CiAgICAgICAgKF9fZnJvbShjaHJvbm86OnNlY29uZHMoX190KSkpOwogICAgICB9CiAg
ICB9OwoKCgoKCgoKICAgIHN0cnVjdCBzdGVhZHlfY2xvY2sKICAgIHsKICAgICAgdHlwZWRlZiBj
aHJvbm86Om5hbm9zZWNvbmRzIGR1cmF0aW9uOwogICAgICB0eXBlZGVmIGR1cmF0aW9uOjpyZXAg
cmVwOwogICAgICB0eXBlZGVmIGR1cmF0aW9uOjpwZXJpb2QgcGVyaW9kOwogICAgICB0eXBlZGVm
IGNocm9ubzo6dGltZV9wb2ludDxzdGVhZHlfY2xvY2ssIGR1cmF0aW9uPiB0aW1lX3BvaW50OwoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3N0ZWFkeSA9IHRydWU7CgogICAgICBzdGF0
aWMgdGltZV9wb2ludAogICAgICBub3coKSBub2V4Y2VwdDsKICAgIH07CiMgNzc2ICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Nocm9ubyIg
MwogICAgdXNpbmcgaGlnaF9yZXNvbHV0aW9uX2Nsb2NrID0gc3lzdGVtX2Nsb2NrOwoKICAgIH0K
CiAKICB9CiMgOTE5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2Nocm9ubyIgMwp9CiMgMzEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1N0ZExp
YkV4dHJhcy5oIiAyCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9tZW1vcnkiIDEgMwojIDQ0ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL21lbW9yeSIgMwojZGVmaW5lIF9HTElC
Q1hYX01FTU9SWSAxCgogICAgICAgCiMgNDcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvbWVtb3J5IiAzCiMgNjIgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvbWVtb3J5IiAzCiMgMSAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9i
aXRzL3N0bF9hbGdvYmFzZS5oIiAxIDMKIyA1NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCiNkZWZp
bmUgX1NUTF9BTEdPQkFTRV9IIDEKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9mdW5jdGV4Y2VwdC5oIiAxIDMKIyAzNyAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9i
aXRzL2Z1bmN0ZXhjZXB0LmgiIDMKI2RlZmluZSBfRlVOQ1RFWENFUFRfSCAxCgoKCgpuYW1lc3Bh
Y2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoK
ICB2b2lkCiAgX190aHJvd19iYWRfZXhjZXB0aW9uKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fbm9y
ZXR1cm5fXykpOwoKCiAgdm9pZAogIF9fdGhyb3dfYmFkX2FsbG9jKHZvaWQpIF9fYXR0cmlidXRl
X18oKF9fbm9yZXR1cm5fXykpOwoKCiAgdm9pZAogIF9fdGhyb3dfYmFkX2Nhc3Qodm9pZCkgX19h
dHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSk7CgogIHZvaWQKICBfX3Rocm93X2JhZF90eXBlaWQo
dm9pZCkgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSk7CgoKICB2b2lkCiAgX190aHJvd19s
b2dpY19lcnJvcihjb25zdCBjaGFyKikgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSk7Cgog
IHZvaWQKICBfX3Rocm93X2RvbWFpbl9lcnJvcihjb25zdCBjaGFyKikgX19hdHRyaWJ1dGVfXygo
X19ub3JldHVybl9fKSk7CgogIHZvaWQKICBfX3Rocm93X2ludmFsaWRfYXJndW1lbnQoY29uc3Qg
Y2hhciopIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpOwoKICB2b2lkCiAgX190aHJvd19s
ZW5ndGhfZXJyb3IoY29uc3QgY2hhciopIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpOwoK
ICB2b2lkCiAgX190aHJvd19vdXRfb2ZfcmFuZ2UoY29uc3QgY2hhciopIF9fYXR0cmlidXRlX18o
KF9fbm9yZXR1cm5fXykpOwoKICB2b2lkCiAgX190aHJvd19vdXRfb2ZfcmFuZ2VfZm10KGNvbnN0
IGNoYXIqLCAuLi4pIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpCiAgICBfX2F0dHJpYnV0
ZV9fKChfX2Zvcm1hdF9fKF9fcHJpbnRmX18sIDEsIDIpKSk7CgogIHZvaWQKICBfX3Rocm93X3J1
bnRpbWVfZXJyb3IoY29uc3QgY2hhciopIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpOwoK
ICB2b2lkCiAgX190aHJvd19yYW5nZV9lcnJvcihjb25zdCBjaGFyKikgX19hdHRyaWJ1dGVfXygo
X19ub3JldHVybl9fKSk7CgogIHZvaWQKICBfX3Rocm93X292ZXJmbG93X2Vycm9yKGNvbnN0IGNo
YXIqKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKCiAgdm9pZAogIF9fdGhyb3dfdW5k
ZXJmbG93X2Vycm9yKGNvbnN0IGNoYXIqKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsK
CgogIHZvaWQKICBfX3Rocm93X2lvc19mYWlsdXJlKGNvbnN0IGNoYXIqKSBfX2F0dHJpYnV0ZV9f
KChfX25vcmV0dXJuX18pKTsKCiAgdm9pZAogIF9fdGhyb3dfc3lzdGVtX2Vycm9yKGludCkgX19h
dHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSk7CgogIHZvaWQKICBfX3Rocm93X2Z1dHVyZV9lcnJv
cihpbnQpIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpOwoKCiAgdm9pZAogIF9fdGhyb3df
YmFkX2Z1bmN0aW9uX2NhbGwoKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKCgp9CiMg
NjEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2NwcF90eXBlX3RyYWl0cy5oIiAx
IDMKIyAzMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL2NwcF90eXBlX3RyYWl0cy5oIiAzCiNkZWZpbmUgX0NQUF9UWVBFX1RSQUlU
U19IIDEKCiAgICAgICAKIyAzNiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2NwcF90eXBlX3RyYWl0cy5oIiAzCiMgNjggIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9j
cHBfdHlwZV90cmFpdHMuaCIgMwpuYW1lc3BhY2UgX19nbnVfY3h4IF9fYXR0cmlidXRlX18gKChf
X3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVy
YXRvciwgdHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgIGNsYXNzIF9fbm9ybWFsX2l0ZXJhdG9yOwoK
Cn0KCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVs
dCIpKSkKewoKCiAgc3RydWN0IF9fdHJ1ZV90eXBlIHsgfTsKICBzdHJ1Y3QgX19mYWxzZV90eXBl
IHsgfTsKCiAgdGVtcGxhdGU8Ym9vbD4KICAgIHN0cnVjdCBfX3RydXRoX3R5cGUKICAgIHsgdHlw
ZWRlZiBfX2ZhbHNlX3R5cGUgX190eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX190
cnV0aF90eXBlPHRydWU+CiAgICB7IHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOyB9OwoKCgog
IHRlbXBsYXRlPGNsYXNzIF9TcCwgY2xhc3MgX1RwPgogICAgc3RydWN0IF9fdHJhaXRvcgogICAg
ewogICAgICBlbnVtIHsgX192YWx1ZSA9IGJvb2woX1NwOjpfX3ZhbHVlKSB8fCBib29sKF9UcDo6
X192YWx1ZSkgfTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX3RydXRoX3R5cGU8X192YWx1ZT46
Ol9fdHlwZSBfX3R5cGU7CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPgog
ICAgc3RydWN0IF9fYXJlX3NhbWUKICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAwIH07CiAg
ICAgIHR5cGVkZWYgX19mYWxzZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIHN0cnVjdCBfX2FyZV9zYW1lPF9UcCwgX1RwPgogICAgewogICAgICBlbnVt
IHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfX3R5cGU7CiAgICB9
OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfdm9pZAogICAgewog
ICAgICBlbnVtIHsgX192YWx1ZSA9IDAgfTsKICAgICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgX190
eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfdm9pZDx2b2lkPgogICAg
ewogICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBf
X3R5cGU7CiAgICB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19p
c19pbnRlZ2VyCiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMCB9OwogICAgICB0eXBlZGVm
IF9fZmFsc2VfdHlwZSBfX3R5cGU7CiAgICB9OwoKCgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3Qg
X19pc19pbnRlZ2VyPGJvb2w+CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAg
ICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0
cnVjdCBfX2lzX2ludGVnZXI8Y2hhcj4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07
CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8Pgog
ICAgc3RydWN0IF9faXNfaW50ZWdlcjxzaWduZWQgY2hhcj4KICAgIHsKICAgICAgZW51bSB7IF9f
dmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCiAg
dGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfaW50ZWdlcjx1bnNpZ25lZCBjaGFyPgogICAgewog
ICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfX3R5
cGU7CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfaW50ZWdlcjx3Y2hhcl90
PgogICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVf
dHlwZSBfX3R5cGU7CiAgICB9OwoKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVn
ZXI8Y2hhcjE2X3Q+CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBl
ZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBf
X2lzX2ludGVnZXI8Y2hhcjMyX3Q+CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9Owog
ICAgICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsKICAgIH07CgoKICB0ZW1wbGF0ZTw+CiAg
ICBzdHJ1Y3QgX19pc19pbnRlZ2VyPHNob3J0PgogICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9
IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0
ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ2VyPHVuc2lnbmVkIHNob3J0PgogICAgewogICAgICBl
bnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfX3R5cGU7CiAg
ICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ2VyPGludD4KICAgIHsKICAg
ICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBl
OwogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfaW50ZWdlcjx1bnNpZ25lZCBp
bnQ+CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9fdHJ1
ZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVn
ZXI8bG9uZz4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYg
X190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNf
aW50ZWdlcjx1bnNpZ25lZCBsb25nPgogICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsK
ICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAg
ICBzdHJ1Y3QgX19pc19pbnRlZ2VyPGxvbmcgbG9uZz4KICAgIHsKICAgICAgZW51bSB7IF9fdmFs
dWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCiAgdGVt
cGxhdGU8PgogICAgc3RydWN0IF9faXNfaW50ZWdlcjx1bnNpZ25lZCBsb25nIGxvbmc+CiAgICB7
CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9f
dHlwZTsKICAgIH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lz
X2Zsb2F0aW5nCiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMCB9OwogICAgICB0eXBlZGVm
IF9fZmFsc2VfdHlwZSBfX3R5cGU7CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9f
aXNfZmxvYXRpbmc8ZmxvYXQ+CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAg
ICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0
cnVjdCBfX2lzX2Zsb2F0aW5nPGRvdWJsZT4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAx
IH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8
PgogICAgc3RydWN0IF9faXNfZmxvYXRpbmc8bG9uZyBkb3VibGU+CiAgICB7CiAgICAgIGVudW0g
eyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsKICAgIH07
CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX3BvaW50ZXIKICAg
IHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAwIH07CiAgICAgIHR5cGVkZWYgX19mYWxzZV90eXBl
IF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lz
X3BvaW50ZXI8X1RwKj4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5
cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgc3RydWN0IF9faXNfbm9ybWFsX2l0ZXJhdG9yCiAgICB7CiAgICAgIGVudW0geyBf
X3ZhbHVlID0gMCB9OwogICAgICB0eXBlZGVmIF9fZmFsc2VfdHlwZSBfX3R5cGU7CiAgICB9OwoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBz
dHJ1Y3QgX19pc19ub3JtYWxfaXRlcmF0b3I8IF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0b3I8
X0l0ZXJhdG9yLAogICAgICAgICAgICAgX0NvbnRhaW5lcj4gPgogICAgewogICAgICBlbnVtIHsg
X192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfX3R5cGU7CiAgICB9OwoK
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19hcml0aG1ldGljCiAg
ICA6IHB1YmxpYyBfX3RyYWl0b3I8X19pc19pbnRlZ2VyPF9UcD4sIF9faXNfZmxvYXRpbmc8X1Rw
PiA+CiAgICB7IH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lz
X3NjYWxhcgogICAgOiBwdWJsaWMgX190cmFpdG9yPF9faXNfYXJpdGhtZXRpYzxfVHA+LCBfX2lz
X3BvaW50ZXI8X1RwPiA+CiAgICB7IH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAg
IHN0cnVjdCBfX2lzX2NoYXIKICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAwIH07CiAgICAg
IHR5cGVkZWYgX19mYWxzZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0
cnVjdCBfX2lzX2NoYXI8Y2hhcj4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAg
ICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgogIHRlbXBsYXRlPD4KICAg
IHN0cnVjdCBfX2lzX2NoYXI8d2NoYXJfdD4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAx
IH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX2J5dGUKICAgIHsKICAgICAgZW51bSB7IF9f
dmFsdWUgPSAwIH07CiAgICAgIHR5cGVkZWYgX19mYWxzZV90eXBlIF9fdHlwZTsKICAgIH07Cgog
IHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2J5dGU8Y2hhcj4KICAgIHsKICAgICAgZW51bSB7
IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsK
CiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfYnl0ZTxzaWduZWQgY2hhcj4KICAgIHsKICAg
ICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBl
OwogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfYnl0ZTx1bnNpZ25lZCBjaGFy
PgogICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVf
dHlwZSBfX3R5cGU7CiAgICB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1
Y3QgX19pc19tb3ZlX2l0ZXJhdG9yCiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMCB9Owog
ICAgICB0eXBlZGVmIF9fZmFsc2VfdHlwZSBfX3R5cGU7CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0l0ZXJhdG9yPgogICAgY2xhc3MgbW92ZV9pdGVyYXRvcjsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0l0ZXJhdG9yPgogICAgc3RydWN0IF9faXNfbW92ZV9pdGVyYXRvcjwgbW92ZV9pdGVy
YXRvcjxfSXRlcmF0b3I+ID4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAg
IHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgoKfQojIDYyICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2Fs
Z29iYXNlLmgiIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvZXh0L3R5cGVfdHJhaXRzLmgiIDEgMwojIDMwICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2V4dC90eXBlX3Ry
YWl0cy5oIiAzCiNkZWZpbmUgX0VYVF9UWVBFX1RSQUlUUyAxCgogICAgICAgCiMgMzMgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvZXh0L3R5
cGVfdHJhaXRzLmgiIDMKCgoKCm5hbWVzcGFjZSBfX2dudV9jeHggX19hdHRyaWJ1dGVfXyAoKF9f
dmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCgogIHRlbXBsYXRlPGJvb2wsIHR5cGVuYW1l
PgogICAgc3RydWN0IF9fZW5hYmxlX2lmCiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICAgIHN0cnVjdCBfX2VuYWJsZV9pZjx0cnVlLCBfVHA+CiAgICB7IHR5cGVkZWYgX1RwIF9f
dHlwZTsgfTsKCgoKICB0ZW1wbGF0ZTxib29sIF9Db25kLCB0eXBlbmFtZSBfSWZ0cnVlLCB0eXBl
bmFtZSBfSWZmYWxzZT4KICAgIHN0cnVjdCBfX2NvbmRpdGlvbmFsX3R5cGUKICAgIHsgdHlwZWRl
ZiBfSWZ0cnVlIF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lmdHJ1ZSwgdHlwZW5h
bWUgX0lmZmFsc2U+CiAgICBzdHJ1Y3QgX19jb25kaXRpb25hbF90eXBlPGZhbHNlLCBfSWZ0cnVl
LCBfSWZmYWxzZT4KICAgIHsgdHlwZWRlZiBfSWZmYWxzZSBfX3R5cGU7IH07CgoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fYWRkX3Vuc2lnbmVkCiAgICB7CiAgICBwcml2
YXRlOgogICAgICB0eXBlZGVmIF9fZW5hYmxlX2lmPHN0ZDo6X19pc19pbnRlZ2VyPF9UcD46Ol9f
dmFsdWUsIF9UcD4gX19pZl90eXBlOwoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBfX2lmX3R5cGU6Ol9fdHlwZSBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1
Y3QgX19hZGRfdW5zaWduZWQ8Y2hhcj4KICAgIHsgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdHlw
ZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fYWRkX3Vuc2lnbmVkPHNpZ25lZCBjaGFy
PgogICAgeyB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX190eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAg
ICBzdHJ1Y3QgX19hZGRfdW5zaWduZWQ8c2hvcnQ+CiAgICB7IHR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgX190eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19hZGRfdW5zaWduZWQ8aW50
PgogICAgeyB0eXBlZGVmIHVuc2lnbmVkIGludCBfX3R5cGU7IH07CgogIHRlbXBsYXRlPD4KICAg
IHN0cnVjdCBfX2FkZF91bnNpZ25lZDxsb25nPgogICAgeyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
X190eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19hZGRfdW5zaWduZWQ8bG9uZyBs
b25nPgogICAgeyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3R5cGU7IH07CgoKICB0ZW1w
bGF0ZTw+CiAgICBzdHJ1Y3QgX19hZGRfdW5zaWduZWQ8Ym9vbD47CgogIHRlbXBsYXRlPD4KICAg
IHN0cnVjdCBfX2FkZF91bnNpZ25lZDx3Y2hhcl90PjsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+CiAgICBzdHJ1Y3QgX19yZW1vdmVfdW5zaWduZWQKICAgIHsKICAgIHByaXZhdGU6CiAgICAg
IHR5cGVkZWYgX19lbmFibGVfaWY8c3RkOjpfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwgX1Rw
PiBfX2lmX3R5cGU7CgogICAgcHVibGljOgogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faWZfdHlw
ZTo6X190eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX3JlbW92
ZV91bnNpZ25lZDxjaGFyPgogICAgeyB0eXBlZGVmIHNpZ25lZCBjaGFyIF9fdHlwZTsgfTsKCiAg
dGVtcGxhdGU8PgogICAgc3RydWN0IF9fcmVtb3ZlX3Vuc2lnbmVkPHVuc2lnbmVkIGNoYXI+CiAg
ICB7IHR5cGVkZWYgc2lnbmVkIGNoYXIgX190eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1
Y3QgX19yZW1vdmVfdW5zaWduZWQ8dW5zaWduZWQgc2hvcnQ+CiAgICB7IHR5cGVkZWYgc2hvcnQg
X190eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19yZW1vdmVfdW5zaWduZWQ8dW5z
aWduZWQgaW50PgogICAgeyB0eXBlZGVmIGludCBfX3R5cGU7IH07CgogIHRlbXBsYXRlPD4KICAg
IHN0cnVjdCBfX3JlbW92ZV91bnNpZ25lZDx1bnNpZ25lZCBsb25nPgogICAgeyB0eXBlZGVmIGxv
bmcgX190eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19yZW1vdmVfdW5zaWduZWQ8
dW5zaWduZWQgbG9uZyBsb25nPgogICAgeyB0eXBlZGVmIGxvbmcgbG9uZyBfX3R5cGU7IH07CgoK
ICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19yZW1vdmVfdW5zaWduZWQ8Ym9vbD47CgogIHRlbXBs
YXRlPD4KICAgIHN0cnVjdCBfX3JlbW92ZV91bnNpZ25lZDx3Y2hhcl90PjsKCgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHlwZT4KICAgIGlubGluZSBib29sCiAgICBfX2lzX251bGxfcG9pbnRlcihf
VHlwZSogX19wdHIpCiAgICB7IHJldHVybiBfX3B0ciA9PSAwOyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UeXBlPgogICAgaW5saW5lIGJvb2wKICAgIF9faXNfbnVsbF9wb2ludGVyKF9UeXBlKQog
ICAgeyByZXR1cm4gZmFsc2U7IH0KCgogIGlubGluZSBib29sCiAgX19pc19udWxsX3BvaW50ZXIo
c3RkOjpudWxscHRyX3QpCiAgeyByZXR1cm4gdHJ1ZTsgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcCwgYm9vbCA9IHN0ZDo6X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWU+CiAgICBzdHJ1Y3Qg
X19wcm9tb3RlCiAgICB7IHR5cGVkZWYgZG91YmxlIF9fdHlwZTsgfTsKCgoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fcHJvbW90ZTxfVHAsIGZhbHNlPgogICAgeyB9OwoK
ICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19wcm9tb3RlPGxvbmcgZG91YmxlPgogICAgeyB0eXBl
ZGVmIGxvbmcgZG91YmxlIF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fcHJv
bW90ZTxkb3VibGU+CiAgICB7IHR5cGVkZWYgZG91YmxlIF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8
PgogICAgc3RydWN0IF9fcHJvbW90ZTxmbG9hdD4KICAgIHsgdHlwZWRlZiBmbG9hdCBfX3R5cGU7
IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwLAogICAgICAgICAgIHR5
cGVuYW1lIF9UcDIgPSB0eXBlbmFtZSBfX3Byb21vdGU8X1RwPjo6X190eXBlLAogICAgICAgICAg
IHR5cGVuYW1lIF9VcDIgPSB0eXBlbmFtZSBfX3Byb21vdGU8X1VwPjo6X190eXBlPgogICAgc3Ry
dWN0IF9fcHJvbW90ZV8yCiAgICB7CiAgICAgIHR5cGVkZWYgX190eXBlb2ZfXyhfVHAyKCkgKyBf
VXAyKCkpIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUg
X1VwLCB0eXBlbmFtZSBfVnAsCiAgICAgICAgICAgdHlwZW5hbWUgX1RwMiA9IHR5cGVuYW1lIF9f
cHJvbW90ZTxfVHA+OjpfX3R5cGUsCiAgICAgICAgICAgdHlwZW5hbWUgX1VwMiA9IHR5cGVuYW1l
IF9fcHJvbW90ZTxfVXA+OjpfX3R5cGUsCiAgICAgICAgICAgdHlwZW5hbWUgX1ZwMiA9IHR5cGVu
YW1lIF9fcHJvbW90ZTxfVnA+OjpfX3R5cGU+CiAgICBzdHJ1Y3QgX19wcm9tb3RlXzMKICAgIHsK
ICAgICAgdHlwZWRlZiBfX3R5cGVvZl9fKF9UcDIoKSArIF9VcDIoKSArIF9WcDIoKSkgX190eXBl
OwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXAsIHR5cGVuYW1l
IF9WcCwgdHlwZW5hbWUgX1dwLAogICAgICAgICAgIHR5cGVuYW1lIF9UcDIgPSB0eXBlbmFtZSBf
X3Byb21vdGU8X1RwPjo6X190eXBlLAogICAgICAgICAgIHR5cGVuYW1lIF9VcDIgPSB0eXBlbmFt
ZSBfX3Byb21vdGU8X1VwPjo6X190eXBlLAogICAgICAgICAgIHR5cGVuYW1lIF9WcDIgPSB0eXBl
bmFtZSBfX3Byb21vdGU8X1ZwPjo6X190eXBlLAogICAgICAgICAgIHR5cGVuYW1lIF9XcDIgPSB0
eXBlbmFtZSBfX3Byb21vdGU8X1dwPjo6X190eXBlPgogICAgc3RydWN0IF9fcHJvbW90ZV80CiAg
ICB7CiAgICAgIHR5cGVkZWYgX190eXBlb2ZfXyhfVHAyKCkgKyBfVXAyKCkgKyBfVnAyKCkgKyBf
V3AyKCkpIF9fdHlwZTsKICAgIH07CgoKfQojIDYzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDIgMwoj
IDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvZXh0L251bWVyaWNfdHJhaXRzLmgiIDEgMwojIDMwICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2V4dC9udW1lcmljX3RyYWl0cy5oIiAz
CiNkZWZpbmUgX0VYVF9OVU1FUklDX1RSQUlUUyAxCgogICAgICAgCiMgMzMgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvZXh0L251bWVyaWNf
dHJhaXRzLmgiIDMKCgoKCm5hbWVzcGFjZSBfX2dudV9jeHggX19hdHRyaWJ1dGVfXyAoKF9fdmlz
aWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCgoKI2RlZmluZSBfX2dsaWJjeHhfc2lnbmVkKF9U
cCkgKChfVHApKC0xKSA8IDApCiNkZWZpbmUgX19nbGliY3h4X2RpZ2l0cyhfVHApIChzaXplb2Yo
X1RwKSAqIF9fQ0hBUl9CSVRfXyAtIF9fZ2xpYmN4eF9zaWduZWQoX1RwKSkKCgojZGVmaW5lIF9f
Z2xpYmN4eF9taW4oX1RwKSAoX19nbGliY3h4X3NpZ25lZChfVHApID8gKF9UcCkxIDw8IF9fZ2xp
YmN4eF9kaWdpdHMoX1RwKSA6IChfVHApMCkKCgojZGVmaW5lIF9fZ2xpYmN4eF9tYXgoX1RwKSAo
X19nbGliY3h4X3NpZ25lZChfVHApID8gKCgoKChfVHApMSA8PCAoX19nbGliY3h4X2RpZ2l0cyhf
VHApIC0gMSkpIC0gMSkgPDwgMSkgKyAxKSA6IH4oX1RwKTApCgoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1ZhbHVlPgogICAgc3RydWN0IF9fbnVtZXJpY190cmFpdHNfaW50ZWdlcgogICAgewoKICAg
ICAgc3RhdGljIGNvbnN0IF9WYWx1ZSBfX21pbiA9ICgoKF9WYWx1ZSkoLTEpIDwgMCkgPyAoX1Zh
bHVlKTEgPDwgKHNpemVvZihfVmFsdWUpICogOCAtICgoX1ZhbHVlKSgtMSkgPCAwKSkgOiAoX1Zh
bHVlKTApOwogICAgICBzdGF0aWMgY29uc3QgX1ZhbHVlIF9fbWF4ID0gKCgoX1ZhbHVlKSgtMSkg
PCAwKSA/ICgoKCgoX1ZhbHVlKTEgPDwgKChzaXplb2YoX1ZhbHVlKSAqIDggLSAoKF9WYWx1ZSko
LTEpIDwgMCkpIC0gMSkpIC0gMSkgPDwgMSkgKyAxKSA6IH4oX1ZhbHVlKTApOwoKCgogICAgICBz
dGF0aWMgY29uc3QgYm9vbCBfX2lzX3NpZ25lZCA9ICgoX1ZhbHVlKSgtMSkgPCAwKTsKICAgICAg
c3RhdGljIGNvbnN0IGludCBfX2RpZ2l0cyA9IChzaXplb2YoX1ZhbHVlKSAqIDggLSAoKF9WYWx1
ZSkoLTEpIDwgMCkpOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlPgogICAgY29u
c3QgX1ZhbHVlIF9fbnVtZXJpY190cmFpdHNfaW50ZWdlcjxfVmFsdWU+OjpfX21pbjsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1ZhbHVlPgogICAgY29uc3QgX1ZhbHVlIF9fbnVtZXJpY190cmFpdHNf
aW50ZWdlcjxfVmFsdWU+OjpfX21heDsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlPgogICAg
Y29uc3QgYm9vbCBfX251bWVyaWNfdHJhaXRzX2ludGVnZXI8X1ZhbHVlPjo6X19pc19zaWduZWQ7
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZT4KICAgIGNvbnN0IGludCBfX251bWVyaWNfdHJh
aXRzX2ludGVnZXI8X1ZhbHVlPjo6X19kaWdpdHM7CgojdW5kZWYgX19nbGliY3h4X3NpZ25lZAoj
dW5kZWYgX19nbGliY3h4X2RpZ2l0cwojdW5kZWYgX19nbGliY3h4X21pbgojdW5kZWYgX19nbGli
Y3h4X21heAoKI2RlZmluZSBfX2dsaWJjeHhfZmxvYXRpbmcoX1RwLF9GdmFsLF9EdmFsLF9MRHZh
bCkgKHN0ZDo6X19hcmVfc2FtZTxfVHAsIGZsb2F0Pjo6X192YWx1ZSA/IF9GdmFsIDogc3RkOjpf
X2FyZV9zYW1lPF9UcCwgZG91YmxlPjo6X192YWx1ZSA/IF9EdmFsIDogX0xEdmFsKQoKCgojZGVm
aW5lIF9fZ2xpYmN4eF9tYXhfZGlnaXRzMTAoX1RwKSAoMiArIF9fZ2xpYmN4eF9mbG9hdGluZyhf
VHAsIF9fRkxUX01BTlRfRElHX18sIF9fREJMX01BTlRfRElHX18sIF9fTERCTF9NQU5UX0RJR19f
KSAqIDY0M0wgLyAyMTM2KQoKCgojZGVmaW5lIF9fZ2xpYmN4eF9kaWdpdHMxMChfVHApIF9fZ2xp
YmN4eF9mbG9hdGluZyhfVHAsIF9fRkxUX0RJR19fLCBfX0RCTF9ESUdfXywgX19MREJMX0RJR19f
KQoKCiNkZWZpbmUgX19nbGliY3h4X21heF9leHBvbmVudDEwKF9UcCkgX19nbGliY3h4X2Zsb2F0
aW5nKF9UcCwgX19GTFRfTUFYXzEwX0VYUF9fLCBfX0RCTF9NQVhfMTBfRVhQX18sIF9fTERCTF9N
QVhfMTBfRVhQX18pCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlPgogICAgc3RydWN0IF9f
bnVtZXJpY190cmFpdHNfZmxvYXRpbmcKICAgIHsKCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgX19t
YXhfZGlnaXRzMTAgPSAoMiArIChzdGQ6Ol9fYXJlX3NhbWU8X1ZhbHVlLCBmbG9hdD46Ol9fdmFs
dWUgPyAyNCA6IHN0ZDo6X19hcmVfc2FtZTxfVmFsdWUsIGRvdWJsZT46Ol9fdmFsdWUgPyA1MyA6
IDUzKSAqIDY0M0wgLyAyMTM2KTsKCgogICAgICBzdGF0aWMgY29uc3QgYm9vbCBfX2lzX3NpZ25l
ZCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgX19kaWdpdHMxMCA9IChzdGQ6Ol9fYXJl
X3NhbWU8X1ZhbHVlLCBmbG9hdD46Ol9fdmFsdWUgPyA2IDogc3RkOjpfX2FyZV9zYW1lPF9WYWx1
ZSwgZG91YmxlPjo6X192YWx1ZSA/IDE1IDogMTUpOwogICAgICBzdGF0aWMgY29uc3QgaW50IF9f
bWF4X2V4cG9uZW50MTAgPSAoc3RkOjpfX2FyZV9zYW1lPF9WYWx1ZSwgZmxvYXQ+OjpfX3ZhbHVl
ID8gMzggOiBzdGQ6Ol9fYXJlX3NhbWU8X1ZhbHVlLCBkb3VibGU+OjpfX3ZhbHVlID8gMzA4IDog
MzA4KTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZT4KICAgIGNvbnN0IGludCBf
X251bWVyaWNfdHJhaXRzX2Zsb2F0aW5nPF9WYWx1ZT46Ol9fbWF4X2RpZ2l0czEwOwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVmFsdWU+CiAgICBjb25zdCBib29sIF9fbnVtZXJpY190cmFpdHNfZmxv
YXRpbmc8X1ZhbHVlPjo6X19pc19zaWduZWQ7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZT4K
ICAgIGNvbnN0IGludCBfX251bWVyaWNfdHJhaXRzX2Zsb2F0aW5nPF9WYWx1ZT46Ol9fZGlnaXRz
MTA7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZT4KICAgIGNvbnN0IGludCBfX251bWVyaWNf
dHJhaXRzX2Zsb2F0aW5nPF9WYWx1ZT46Ol9fbWF4X2V4cG9uZW50MTA7CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9WYWx1ZT4KICAgIHN0cnVjdCBfX251bWVyaWNfdHJhaXRzCiAgICA6IHB1YmxpYyBf
X2NvbmRpdGlvbmFsX3R5cGU8c3RkOjpfX2lzX2ludGVnZXI8X1ZhbHVlPjo6X192YWx1ZSwKICAg
IF9fbnVtZXJpY190cmFpdHNfaW50ZWdlcjxfVmFsdWU+LAogICAgX19udW1lcmljX3RyYWl0c19m
bG9hdGluZzxfVmFsdWU+ID46Ol9fdHlwZQogICAgeyB9OwoKCn0KCiN1bmRlZiBfX2dsaWJjeHhf
ZmxvYXRpbmcKI3VuZGVmIF9fZ2xpYmN4eF9tYXhfZGlnaXRzMTAKI3VuZGVmIF9fZ2xpYmN4eF9k
aWdpdHMxMAojdW5kZWYgX19nbGliY3h4X21heF9leHBvbmVudDEwCiMgNjQgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxn
b2Jhc2UuaCIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9wYWlyLmgiIDEgMwojIDU3ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX3BhaXIu
aCIgMwojZGVmaW5lIF9TVExfUEFJUl9IIDEKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL21vdmUuaCIgMSAzCiMgMzEgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9tb3ZlLmgiIDMKI2RlZmluZSBfTU9WRV9IIDEKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9jb25jZXB0X2NoZWNrLmgi
IDEgMwojIDMxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2JpdHMvY29uY2VwdF9jaGVjay5oIiAzCiNkZWZpbmUgX0NPTkNFUFRfQ0hFQ0tf
SCAxCgogICAgICAgCiMgMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvYml0cy9jb25jZXB0X2NoZWNrLmgiIDMKIyA0NyAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2NvbmNl
cHRfY2hlY2suaCIgMwojZGVmaW5lIF9fZ2xpYmN4eF9mdW5jdGlvbl9yZXF1aXJlcyguLi4pIAoj
ZGVmaW5lIF9fZ2xpYmN4eF9jbGFzc19yZXF1aXJlcyhfYSxfYikgCiNkZWZpbmUgX19nbGliY3h4
X2NsYXNzX3JlcXVpcmVzMihfYSxfYixfYykgCiNkZWZpbmUgX19nbGliY3h4X2NsYXNzX3JlcXVp
cmVzMyhfYSxfYixfYyxfZCkgCiNkZWZpbmUgX19nbGliY3h4X2NsYXNzX3JlcXVpcmVzNChfYSxf
YixfYyxfZCxfZSkgCiMgMzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvYml0cy9tb3ZlLmgiIDIgMwoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJp
YnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCgoKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBfVHAqCiAgICBfX2FkZHJlc3NvZihfVHAmIF9fcikg
bm9leGNlcHQKICAgIHsKICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8X1RwKj4KICgmY29u
c3RfY2FzdDxjaGFyJj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2xhdGlsZSBjaGFyJj4oX19y
KSkpOwogICAgfQoKCn0KCgoKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJp
bGl0eV9fICgiZGVmYXVsdCIpKSkKewoKIyA3NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL21vdmUuaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIGNvbnN0ZXhwciBfVHAmJgogICAgZm9yd2FyZCh0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9yZWZlcmVuY2U8X1RwPjo6dHlwZSYgX190KSBub2V4Y2VwdAogICAgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8X1RwJiY+KF9fdCk7IH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgY29uc3RleHByIF9UcCYmCiAgICBmb3J3YXJkKHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3Jl
ZmVyZW5jZTxfVHA+Ojp0eXBlJiYgX190KSBub2V4Y2VwdAogICAgewogICAgICBzdGF0aWNfYXNz
ZXJ0KCFzdGQ6OmlzX2x2YWx1ZV9yZWZlcmVuY2U8X1RwPjo6dmFsdWUsICJ0ZW1wbGF0ZSBhcmd1
bWVudCIKICAgICAgIiBzdWJzdGl0dXRpbmcgX1RwIGlzIGFuIGx2YWx1ZSByZWZlcmVuY2UgdHlw
ZSIpOwogICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8X1RwJiY+KF9fdCk7CiAgICB9CgoKCgoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X3JlZmVyZW5jZTxfVHA+Ojp0eXBlJiYKICAgIG1vdmUoX1RwJiYgX190KSBub2V4Y2VwdAogICAg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPF9UcD46
OnR5cGUmJj4oX190KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9f
bW92ZV9pZl9ub2V4Y2VwdF9jb25kCiAgICA6IHB1YmxpYyBfX2FuZF88X19ub3RfPGlzX25vdGhy
b3dfbW92ZV9jb25zdHJ1Y3RpYmxlPF9UcD4+LAogICAgICAgICAgICAgICAgICAgIGlzX2NvcHlf
Y29uc3RydWN0aWJsZTxfVHA+Pjo6dHlwZSB7IH07CiMgMTE4ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbW92ZS5oIiAzCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lCiAgICBjb25kaXRpb25h
bDxfX21vdmVfaWZfbm9leGNlcHRfY29uZDxfVHA+Ojp2YWx1ZSwgY29uc3QgX1RwJiwgX1RwJiY+
Ojp0eXBlCiAgICBtb3ZlX2lmX25vZXhjZXB0KF9UcCYgX194KSBub2V4Y2VwdAogICAgeyByZXR1
cm4gc3RkOjptb3ZlKF9feCk7IH0KIyAxMzMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9tb3ZlLmgiIDMKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBpbmxpbmUgX1RwKgogICAgYWRkcmVzc29mKF9UcCYgX19yKSBub2V4Y2Vw
dAogICAgeyByZXR1cm4gc3RkOjpfX2FkZHJlc3NvZihfX3IpOyB9CgoKCn0KCiNkZWZpbmUgX0dM
SUJDWFhfTU9WRShfX3ZhbCkgc3RkOjptb3ZlKF9fdmFsKQojZGVmaW5lIF9HTElCQ1hYX0ZPUldB
UkQoX1RwLF9fdmFsKSBzdGQ6OmZvcndhcmQ8X1RwPihfX3ZhbCkKCgoKCgpuYW1lc3BhY2Ugc3Rk
IF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgMTY0ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Jp
dHMvbW92ZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHZvaWQKICAg
IHN3YXAoX1RwJiBfX2EsIF9UcCYgX19iKQoKICAgIG5vZXhjZXB0KF9fYW5kXzxpc19ub3Rocm93
X21vdmVfY29uc3RydWN0aWJsZTxfVHA+LAogICAgICAgICAgICAgaXNfbm90aHJvd19tb3ZlX2Fz
c2lnbmFibGU8X1RwPj46OnZhbHVlKQoKICAgIHsKCiAgICAgCgogICAgICBfVHAgX190bXAgPSBz
dGQ6Om1vdmUoX19hKTsKICAgICAgX19hID0gc3RkOjptb3ZlKF9fYik7CiAgICAgIF9fYiA9IHN0
ZDo6bW92ZShfX3RtcCk7CiAgICB9CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgc2l6ZV90
IF9ObT4KICAgIGlubGluZSB2b2lkCiAgICBzd2FwKF9UcCAoJl9fYSlbX05tXSwgX1RwICgmX19i
KVtfTm1dKQoKICAgIG5vZXhjZXB0KG5vZXhjZXB0KHN3YXAoKl9fYSwgKl9fYikpKQoKICAgIHsK
ICAgICAgZm9yIChzaXplX3QgX19uID0gMDsgX19uIDwgX05tOyArK19fbikKIHN3YXAoX19hW19f
bl0sIF9fYltfX25dKTsKICAgIH0KCgoKfQojIDYwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX3BhaXIuaCIgMiAzCgoKCgoK
bmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0Iikp
KQp7CgojIDc2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2JpdHMvc3RsX3BhaXIuaCIgMwogIHN0cnVjdCBwaWVjZXdpc2VfY29uc3RydWN0
X3QgeyB9OwoKCiAgY29uc3RleHByIHBpZWNld2lzZV9jb25zdHJ1Y3RfdCBwaWVjZXdpc2VfY29u
c3RydWN0ID0gcGllY2V3aXNlX2NvbnN0cnVjdF90KCk7CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
Lj4KICAgIGNsYXNzIHR1cGxlOwoKICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdC4uLj4KICAgIHN0cnVj
dCBfSW5kZXhfdHVwbGU7CiMgOTUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfcGFpci5oIiAzCiAgdGVtcGxhdGU8Y2xhc3Mg
X1QxLCBjbGFzcyBfVDI+CiAgICBzdHJ1Y3QgcGFpcgogICAgewogICAgICB0eXBlZGVmIF9UMSBm
aXJzdF90eXBlOwogICAgICB0eXBlZGVmIF9UMiBzZWNvbmRfdHlwZTsKCiAgICAgIF9UMSBmaXJz
dDsKICAgICAgX1QyIHNlY29uZDsKCgoKCgogICAgICBjb25zdGV4cHIgcGFpcigpCiAgICAgIDog
Zmlyc3QoKSwgc2Vjb25kKCkgeyB9CgoKICAgICAgY29uc3RleHByIHBhaXIoY29uc3QgX1QxJiBf
X2EsIGNvbnN0IF9UMiYgX19iKQogICAgICA6IGZpcnN0KF9fYSksIHNlY29uZChfX2IpIHsgfQoK
CgoKCgoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX1UxLCBjbGFzcyBfVTIsIGNsYXNzID0gdHlwZW5h
bWUKICAgICAgICBlbmFibGVfaWY8X19hbmRfPGlzX2NvbnZlcnRpYmxlPGNvbnN0IF9VMSYsIF9U
MT4sCiAgICBpc19jb252ZXJ0aWJsZTxjb25zdCBfVTImLCBfVDI+Pjo6dmFsdWU+Ojp0eXBlPgog
Y29uc3RleHByIHBhaXIoY29uc3QgcGFpcjxfVTEsIF9VMj4mIF9fcCkKIDogZmlyc3QoX19wLmZp
cnN0KSwgc2Vjb25kKF9fcC5zZWNvbmQpIHsgfQoKICAgICAgY29uc3RleHByIHBhaXIoY29uc3Qg
cGFpciYpID0gZGVmYXVsdDsKICAgICAgY29uc3RleHByIHBhaXIocGFpciYmKSA9IGRlZmF1bHQ7
CgoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX1UxLCBjbGFzcyA9IHR5cGVuYW1lCiAgICAgICAgZW5h
YmxlX2lmPGlzX2NvbnZlcnRpYmxlPF9VMSwgX1QxPjo6dmFsdWU+Ojp0eXBlPgogY29uc3RleHBy
IHBhaXIoX1UxJiYgX194LCBjb25zdCBfVDImIF9feSkKIDogZmlyc3Qoc3RkOjpmb3J3YXJkPF9V
MT4oX194KSksIHNlY29uZChfX3kpIHsgfQoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX1UyLCBjbGFz
cyA9IHR5cGVuYW1lCiAgICAgICAgZW5hYmxlX2lmPGlzX2NvbnZlcnRpYmxlPF9VMiwgX1QyPjo6
dmFsdWU+Ojp0eXBlPgogY29uc3RleHByIHBhaXIoY29uc3QgX1QxJiBfX3gsIF9VMiYmIF9feSkK
IDogZmlyc3QoX194KSwgc2Vjb25kKHN0ZDo6Zm9yd2FyZDxfVTI+KF9feSkpIHsgfQoKICAgICAg
dGVtcGxhdGU8Y2xhc3MgX1UxLCBjbGFzcyBfVTIsIGNsYXNzID0gdHlwZW5hbWUKICAgICAgICBl
bmFibGVfaWY8X19hbmRfPGlzX2NvbnZlcnRpYmxlPF9VMSwgX1QxPiwKICAgIGlzX2NvbnZlcnRp
YmxlPF9VMiwgX1QyPj46OnZhbHVlPjo6dHlwZT4KIGNvbnN0ZXhwciBwYWlyKF9VMSYmIF9feCwg
X1UyJiYgX195KQogOiBmaXJzdChzdGQ6OmZvcndhcmQ8X1UxPihfX3gpKSwgc2Vjb25kKHN0ZDo6
Zm9yd2FyZDxfVTI+KF9feSkpIHsgfQoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX1UxLCBjbGFzcyBf
VTIsIGNsYXNzID0gdHlwZW5hbWUKICAgICAgICBlbmFibGVfaWY8X19hbmRfPGlzX2NvbnZlcnRp
YmxlPF9VMSwgX1QxPiwKICAgIGlzX2NvbnZlcnRpYmxlPF9VMiwgX1QyPj46OnZhbHVlPjo6dHlw
ZT4KIGNvbnN0ZXhwciBwYWlyKHBhaXI8X1UxLCBfVTI+JiYgX19wKQogOiBmaXJzdChzdGQ6OmZv
cndhcmQ8X1UxPihfX3AuZmlyc3QpKSwKICAgc2Vjb25kKHN0ZDo6Zm9yd2FyZDxfVTI+KF9fcC5z
ZWNvbmQpKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9BcmdzMSwgdHlwZW5hbWUu
Li4gX0FyZ3MyPgogICAgICAgIHBhaXIocGllY2V3aXNlX2NvbnN0cnVjdF90LCB0dXBsZTxfQXJn
czEuLi4+LCB0dXBsZTxfQXJnczIuLi4+KTsKCiAgICAgIHBhaXImCiAgICAgIG9wZXJhdG9yPShj
b25zdCBwYWlyJiBfX3ApCiAgICAgIHsKIGZpcnN0ID0gX19wLmZpcnN0Owogc2Vjb25kID0gX19w
LnNlY29uZDsKIHJldHVybiAqdGhpczsKICAgICAgfQoKICAgICAgcGFpciYKICAgICAgb3BlcmF0
b3I9KHBhaXImJiBfX3ApCiAgICAgIG5vZXhjZXB0KF9fYW5kXzxpc19ub3Rocm93X21vdmVfYXNz
aWduYWJsZTxfVDE+LAogICAgICAgICAgICAgICBpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZTxf
VDI+Pjo6dmFsdWUpCiAgICAgIHsKIGZpcnN0ID0gc3RkOjpmb3J3YXJkPGZpcnN0X3R5cGU+KF9f
cC5maXJzdCk7CiBzZWNvbmQgPSBzdGQ6OmZvcndhcmQ8c2Vjb25kX3R5cGU+KF9fcC5zZWNvbmQp
OwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICB0ZW1wbGF0ZTxjbGFzcyBfVTEsIGNsYXNz
IF9VMj4KIHBhaXImCiBvcGVyYXRvcj0oY29uc3QgcGFpcjxfVTEsIF9VMj4mIF9fcCkKIHsKICAg
Zmlyc3QgPSBfX3AuZmlyc3Q7CiAgIHNlY29uZCA9IF9fcC5zZWNvbmQ7CiAgIHJldHVybiAqdGhp
czsKIH0KCiAgICAgIHRlbXBsYXRlPGNsYXNzIF9VMSwgY2xhc3MgX1UyPgogcGFpciYKIG9wZXJh
dG9yPShwYWlyPF9VMSwgX1UyPiYmIF9fcCkKIHsKICAgZmlyc3QgPSBzdGQ6OmZvcndhcmQ8X1Ux
PihfX3AuZmlyc3QpOwogICBzZWNvbmQgPSBzdGQ6OmZvcndhcmQ8X1UyPihfX3Auc2Vjb25kKTsK
ICAgcmV0dXJuICp0aGlzOwogfQoKICAgICAgdm9pZAogICAgICBzd2FwKHBhaXImIF9fcCkKICAg
ICAgbm9leGNlcHQobm9leGNlcHQoc3dhcChmaXJzdCwgX19wLmZpcnN0KSkKICAgICAgICAmJiBu
b2V4Y2VwdChzd2FwKHNlY29uZCwgX19wLnNlY29uZCkpKQogICAgICB7CiB1c2luZyBzdGQ6OnN3
YXA7CiBzd2FwKGZpcnN0LCBfX3AuZmlyc3QpOwogc3dhcChzZWNvbmQsIF9fcC5zZWNvbmQpOwog
ICAgICB9CgogICAgcHJpdmF0ZToKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3MxLCBz
dGQ6OnNpemVfdC4uLiBfSW5kZXhlczEsCiAgICAgICAgICAgICAgIHR5cGVuYW1lLi4uIF9Bcmdz
Miwgc3RkOjpzaXplX3QuLi4gX0luZGV4ZXMyPgogICAgICAgIHBhaXIodHVwbGU8X0FyZ3MxLi4u
PiYsIHR1cGxlPF9BcmdzMi4uLj4mLAogICAgICAgICAgICAgX0luZGV4X3R1cGxlPF9JbmRleGVz
MS4uLj4sIF9JbmRleF90dXBsZTxfSW5kZXhlczIuLi4+KTsKCiAgICB9OwoKCiAgdGVtcGxhdGU8
Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CiAgICBpbmxpbmUgY29uc3RleHByIGJvb2wKICAgIG9wZXJh
dG9yPT0oY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feCwgY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9f
eSkKICAgIHsgcmV0dXJuIF9feC5maXJzdCA9PSBfX3kuZmlyc3QgJiYgX194LnNlY29uZCA9PSBf
X3kuc2Vjb25kOyB9CgoKICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KICAgIGlubGlu
ZSBjb25zdGV4cHIgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gs
IGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpCiAgICB7IHJldHVybiBfX3guZmlyc3QgPCBfX3ku
Zmlyc3QKICAgICAgfHwgKCEoX195LmZpcnN0IDwgX194LmZpcnN0KSAmJiBfX3guc2Vjb25kIDwg
X195LnNlY29uZCk7IH0KCgogIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgogICAgaW5s
aW5lIGNvbnN0ZXhwciBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBf
X3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpCiAgICB7IHJldHVybiAhKF9feCA9PSBfX3kp
OyB9CgoKICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KICAgIGlubGluZSBjb25zdGV4
cHIgYm9vbAogICAgb3BlcmF0b3I+KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBh
aXI8X1QxLCBfVDI+JiBfX3kpCiAgICB7IHJldHVybiBfX3kgPCBfX3g7IH0KCgogIHRlbXBsYXRl
PGNsYXNzIF9UMSwgY2xhc3MgX1QyPgogICAgaW5saW5lIGNvbnN0ZXhwciBib29sCiAgICBvcGVy
YXRvcjw9KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBf
X3kpCiAgICB7IHJldHVybiAhKF9feSA8IF9feCk7IH0KCgogIHRlbXBsYXRlPGNsYXNzIF9UMSwg
Y2xhc3MgX1QyPgogICAgaW5saW5lIGNvbnN0ZXhwciBib29sCiAgICBvcGVyYXRvcj49KGNvbnN0
IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpCiAgICB7IHJl
dHVybiAhKF9feCA8IF9feSk7IH0KCgoKCgogIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1Qy
PgogICAgaW5saW5lIHZvaWQKICAgIHN3YXAocGFpcjxfVDEsIF9UMj4mIF9feCwgcGFpcjxfVDEs
IF9UMj4mIF9feSkKICAgIG5vZXhjZXB0KG5vZXhjZXB0KF9feC5zd2FwKF9feSkpKQogICAgeyBf
X3guc3dhcChfX3kpOyB9CiMgMjczICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX3BhaXIuaCIgMwogIHRlbXBsYXRlPGNsYXNz
IF9UMSwgY2xhc3MgX1QyPgogICAgY29uc3RleHByIHBhaXI8dHlwZW5hbWUgX19kZWNheV9hbmRf
c3RyaXA8X1QxPjo6X190eXBlLAogICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgX19kZWNheV9h
bmRfc3RyaXA8X1QyPjo6X190eXBlPgogICAgbWFrZV9wYWlyKF9UMSYmIF9feCwgX1QyJiYgX195
KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fZGVjYXlfYW5kX3N0cmlwPF9UMT46Ol9f
dHlwZSBfX2RzX3R5cGUxOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fZGVjYXlfYW5kX3N0cmlw
PF9UMj46Ol9fdHlwZSBfX2RzX3R5cGUyOwogICAgICB0eXBlZGVmIHBhaXI8X19kc190eXBlMSwg
X19kc190eXBlMj4gX19wYWlyX3R5cGU7CiAgICAgIHJldHVybiBfX3BhaXJfdHlwZShzdGQ6OmZv
cndhcmQ8X1QxPihfX3gpLCBzdGQ6OmZvcndhcmQ8X1QyPihfX3kpKTsKICAgIH0KIyAyOTIgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9zdGxfcGFpci5oIiAzCgp9CiMgNjUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMiAzCiMgMSAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L3N0bF9pdGVyYXRvcl9iYXNlX3R5cGVzLmgiIDEgMwojIDYwICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2l0ZXJhdG9yX2Jh
c2VfdHlwZXMuaCIgMwojZGVmaW5lIF9TVExfSVRFUkFUT1JfQkFTRV9UWVBFU19IIDEKCiAgICAg
ICAKIyA2MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX3R5cGVzLmgiIDMKCgoKCgoKCm5hbWVzcGFj
ZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKIyA4
OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX3R5cGVzLmgiIDMKICBzdHJ1Y3QgaW5wdXRfaXRlcmF0
b3JfdGFnIHsgfTsKCgogIHN0cnVjdCBvdXRwdXRfaXRlcmF0b3JfdGFnIHsgfTsKCgogIHN0cnVj
dCBmb3J3YXJkX2l0ZXJhdG9yX3RhZyA6IHB1YmxpYyBpbnB1dF9pdGVyYXRvcl90YWcgeyB9OwoK
CgogIHN0cnVjdCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyA6IHB1YmxpYyBmb3J3YXJkX2l0
ZXJhdG9yX3RhZyB7IH07CgoKCiAgc3RydWN0IHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIDog
cHVibGljIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnIHsgfTsKIyAxMTYgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfaXRl
cmF0b3JfYmFzZV90eXBlcy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NhdGVnb3J5LCB0eXBl
bmFtZSBfVHAsIHR5cGVuYW1lIF9EaXN0YW5jZSA9IHB0cmRpZmZfdCwKICAgICAgICAgICB0eXBl
bmFtZSBfUG9pbnRlciA9IF9UcCosIHR5cGVuYW1lIF9SZWZlcmVuY2UgPSBfVHAmPgogICAgc3Ry
dWN0IGl0ZXJhdG9yCiAgICB7CgogICAgICB0eXBlZGVmIF9DYXRlZ29yeSBpdGVyYXRvcl9jYXRl
Z29yeTsKCiAgICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CgogICAgICB0eXBlZGVmIF9EaXN0
YW5jZSBkaWZmZXJlbmNlX3R5cGU7CgogICAgICB0eXBlZGVmIF9Qb2ludGVyIHBvaW50ZXI7Cgog
ICAgICB0eXBlZGVmIF9SZWZlcmVuY2UgcmVmZXJlbmNlOwogICAgfTsKIyAxNDIgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxf
aXRlcmF0b3JfYmFzZV90eXBlcy5oIiAzCnRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gY2xhc3MgX19o
YXNfaXRlcmF0b3JfY2F0ZWdvcnlfaGVscGVyIHsgdGVtcGxhdGU8dHlwZW5hbWUgX1VwPiBzdHJ1
Y3QgX1dyYXBfdHlwZSB7IH07IHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4gc3RhdGljIHRydWVfdHlw
ZSBfX3Rlc3QoX1dyYXBfdHlwZTx0eXBlbmFtZSBfVXA6Oml0ZXJhdG9yX2NhdGVnb3J5PiopOyB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+IHN0YXRpYyBmYWxzZV90eXBlIF9fdGVzdCguLi4pOyBwdWJs
aWM6IHR5cGVkZWYgZGVjbHR5cGUoX190ZXN0PF9UcD4oMCkpIHR5cGU7IH07IHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4gc3RydWN0IF9faGFzX2l0ZXJhdG9yX2NhdGVnb3J5IDogcHVibGljIF9faGFz
X2l0ZXJhdG9yX2NhdGVnb3J5X2hlbHBlciA8dHlwZW5hbWUgcmVtb3ZlX2N2PF9UcD46OnR5cGU+
Ojp0eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLAogICAgYm9vbCA9IF9f
aGFzX2l0ZXJhdG9yX2NhdGVnb3J5PF9JdGVyYXRvcj46OnZhbHVlPgogICAgc3RydWN0IF9faXRl
cmF0b3JfdHJhaXRzIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogICAgc3Ry
dWN0IF9faXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvciwgdHJ1ZT4KICAgIHsKICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBfSXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5
OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBl
OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6ZGlmZmVyZW5jZV90eXBlIGRpZmZl
cmVuY2VfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnBvaW50ZXIgcG9p
bnRlcjsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnJlZmVyZW5jZSByZWZlcmVu
Y2U7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBzdHJ1Y3QgaXRl
cmF0b3JfdHJhaXRzCiAgICA6IHB1YmxpYyBfX2l0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+IHsg
fTsKIyAxNzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvYml0cy9zdGxfaXRlcmF0b3JfYmFzZV90eXBlcy5oIiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPgogICAgc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxfVHAqPgogICAgewogICAgICB0
eXBlZGVmIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogICAg
ICB0eXBlZGVmIF9UcCB2YWx1ZV90eXBlOwogICAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJl
bmNlX3R5cGU7CiAgICAgIHR5cGVkZWYgX1RwKiBwb2ludGVyOwogICAgICB0eXBlZGVmIF9UcCYg
cmVmZXJlbmNlOwogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBp
dGVyYXRvcl90cmFpdHM8Y29uc3QgX1RwKj4KICAgIHsKICAgICAgdHlwZWRlZiByYW5kb21fYWNj
ZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICAgICAgdHlwZWRlZiBfVHAgdmFs
dWVfdHlwZTsKICAgICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwogICAgICB0
eXBlZGVmIGNvbnN0IF9UcCogcG9pbnRlcjsKICAgICAgdHlwZWRlZiBjb25zdCBfVHAmIHJlZmVy
ZW5jZTsKICAgIH07CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcj4KICAgIGlubGluZSB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjppdGVyYXRvcl9jYXRlZ29yeQogICAgX19p
dGVyYXRvcl9jYXRlZ29yeShjb25zdCBfSXRlciYpCiAgICB7IHJldHVybiB0eXBlbmFtZSBpdGVy
YXRvcl90cmFpdHM8X0l0ZXI+OjppdGVyYXRvcl9jYXRlZ29yeSgpOyB9CgoKCgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSXRlcmF0b3IsIGJvb2wgX0hhc0Jhc2U+CiAgICBzdHJ1Y3QgX0l0ZXJfYmFz
ZQogICAgewogICAgICB0eXBlZGVmIF9JdGVyYXRvciBpdGVyYXRvcl90eXBlOwogICAgICBzdGF0
aWMgaXRlcmF0b3JfdHlwZSBfU19iYXNlKF9JdGVyYXRvciBfX2l0KQogICAgICB7IHJldHVybiBf
X2l0OyB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBzdHJ1Y3Qg
X0l0ZXJfYmFzZTxfSXRlcmF0b3IsIHRydWU+CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
X0l0ZXJhdG9yOjppdGVyYXRvcl90eXBlIGl0ZXJhdG9yX3R5cGU7CiAgICAgIHN0YXRpYyBpdGVy
YXRvcl90eXBlIF9TX2Jhc2UoX0l0ZXJhdG9yIF9faXQpCiAgICAgIHsgcmV0dXJuIF9faXQuYmFz
ZSgpOyB9CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0luSXRlcj4KICAgIHVzaW5nIF9S
ZXF1aXJlSW5wdXRJdGVyID0gdHlwZW5hbWUKICAgICAgZW5hYmxlX2lmPGlzX2NvbnZlcnRpYmxl
PHR5cGVuYW1lCiAgaXRlcmF0b3JfdHJhaXRzPF9Jbkl0ZXI+OjppdGVyYXRvcl9jYXRlZ29yeSwK
ICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3RhZz46OnZhbHVlPjo6dHlwZTsKCgoKfQojIDY2ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Jp
dHMvc3RsX2FsZ29iYXNlLmgiIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfaXRlcmF0b3JfYmFzZV9mdW5jcy5o
IiAxIDMKIyA2MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX2Z1bmNzLmgiIDMKI2RlZmluZSBfU1RM
X0lURVJBVE9SX0JBU0VfRlVOQ1NfSCAxCgogICAgICAgCiMgNjMgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfaXRlcmF0b3Jf
YmFzZV9mdW5jcy5oIiAzCgoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2RlYnVnL2RlYnVnLmgiIDEgMwojIDMwICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2RlYnVnL2RlYnVn
LmgiIDMKI2RlZmluZSBfR0xJQkNYWF9ERUJVR19NQUNST19TV0lUQ0hfSCAxCiMgNDYgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvZGVidWcv
ZGVidWcuaCIgMwpuYW1lc3BhY2Ugc3RkCnsKICBuYW1lc3BhY2UgX19kZWJ1ZyB7IH0KfQoKCgoK
bmFtZXNwYWNlIF9fZ251X2RlYnVnCnsKICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpfX2RlYnVnOwp9
CgoKCiNkZWZpbmUgX0dMSUJDWFhfREVCVUdfQVNTRVJUKF9Db25kaXRpb24pIAojZGVmaW5lIF9H
TElCQ1hYX0RFQlVHX1BFREFTU0VSVChfQ29uZGl0aW9uKSAKI2RlZmluZSBfR0xJQkNYWF9ERUJV
R19PTkxZKF9TdGF0ZW1lbnQpIDsKI2RlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNfY29uZChfQ29u
ZCxfTXNnKSAKI2RlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNfdmFsaWRfcmFuZ2UoX0ZpcnN0LF9M
YXN0KSAKI2RlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNfbm9uX2VtcHR5X3JhbmdlKF9GaXJzdCxf
TGFzdCkgCiNkZWZpbmUgX19nbGliY3h4X3JlcXVpcmVzX3NvcnRlZChfRmlyc3QsX0xhc3QpIAoj
ZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc19zb3J0ZWRfcHJlZChfRmlyc3QsX0xhc3QsX1ByZWQp
IAojZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc19zb3J0ZWRfc2V0KF9GaXJzdDEsX0xhc3QxLF9G
aXJzdDIpIAojZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc19zb3J0ZWRfc2V0X3ByZWQoX0ZpcnN0
MSxfTGFzdDEsX0ZpcnN0MixfUHJlZCkgCiNkZWZpbmUgX19nbGliY3h4X3JlcXVpcmVzX3BhcnRp
dGlvbmVkX2xvd2VyKF9GaXJzdCxfTGFzdCxfVmFsdWUpIAojZGVmaW5lIF9fZ2xpYmN4eF9yZXF1
aXJlc19wYXJ0aXRpb25lZF91cHBlcihfRmlyc3QsX0xhc3QsX1ZhbHVlKSAKI2RlZmluZSBfX2ds
aWJjeHhfcmVxdWlyZXNfcGFydGl0aW9uZWRfbG93ZXJfcHJlZChfRmlyc3QsX0xhc3QsX1ZhbHVl
LF9QcmVkKSAKI2RlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNfcGFydGl0aW9uZWRfdXBwZXJfcHJl
ZChfRmlyc3QsX0xhc3QsX1ZhbHVlLF9QcmVkKSAKI2RlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNf
aGVhcChfRmlyc3QsX0xhc3QpIAojZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc19oZWFwX3ByZWQo
X0ZpcnN0LF9MYXN0LF9QcmVkKSAKI2RlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNfbm9uZW1wdHko
KSAKI2RlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNfc3RyaW5nKF9TdHJpbmcpIAojZGVmaW5lIF9f
Z2xpYmN4eF9yZXF1aXJlc19zdHJpbmdfbGVuKF9TdHJpbmcsX0xlbikgCiNkZWZpbmUgX19nbGli
Y3h4X3JlcXVpcmVzX3N1YnNjcmlwdChfTikgCiMgNjYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfaXRlcmF0b3JfYmFzZV9m
dW5jcy5oIiAyIDMKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9f
ICgiZGVmYXVsdCIpKSkKewoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiAg
ICBpbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlmZmVy
ZW5jZV90eXBlCiAgICBfX2Rpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0
ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnKQogICAgewoK
ICAgICAKCiAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OmRp
ZmZlcmVuY2VfdHlwZSBfX24gPSAwOwogICAgICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpCiB7
CiAgICsrX19maXJzdDsKICAgKytfX247CiB9CiAgICAgIHJldHVybiBfX247CiAgICB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAgIGlubGluZSB0eXBlbmFt
ZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBl
CiAgICBfX2Rpc3RhbmNlKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9y
X3RhZykKICAgIHsKCiAgICAgCgogICAgICByZXR1cm4gX19sYXN0IC0gX19maXJzdDsKICAgIH0K
IyAxMTIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvYml0cy9zdGxfaXRlcmF0b3JfYmFzZV9mdW5jcy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0lucHV0SXRlcmF0b3I+CiAgICBpbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9J
bnB1dEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiAgICBkaXN0YW5jZShfSW5wdXRJdGVyYXRv
ciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpCiAgICB7CgogICAgICByZXR1cm4gc3Rk
OjpfX2Rpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCwKICAgICAgICBzdGQ6Ol9faXRlcmF0b3JfY2F0
ZWdvcnkoX19maXJzdCkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRv
ciwgdHlwZW5hbWUgX0Rpc3RhbmNlPgogICAgaW5saW5lIHZvaWQKICAgIF9fYWR2YW5jZShfSW5w
dXRJdGVyYXRvciYgX19pLCBfRGlzdGFuY2UgX19uLCBpbnB1dF9pdGVyYXRvcl90YWcpCiAgICB7
CgogICAgIAogICAgICA7CiAgICAgIHdoaWxlIChfX24tLSkKICsrX19pOwogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2U+
CiAgICBpbmxpbmUgdm9pZAogICAgX19hZHZhbmNlKF9CaWRpcmVjdGlvbmFsSXRlcmF0b3ImIF9f
aSwgX0Rpc3RhbmNlIF9fbiwKICAgICAgIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKQogICAg
ewoKICAgICAKCiAgICAgIGlmIChfX24gPiAwKQogICAgICAgIHdoaWxlIChfX24tLSkKICAgKytf
X2k7CiAgICAgIGVsc2UKICAgICAgICB3aGlsZSAoX19uKyspCiAgIC0tX19pOwogICAgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5j
ZT4KICAgIGlubGluZSB2b2lkCiAgICBfX2FkdmFuY2UoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yJiBf
X2ksIF9EaXN0YW5jZSBfX24sCiAgICAgICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90
YWcpCiAgICB7CgogICAgIAoKICAgICAgX19pICs9IF9fbjsKICAgIH0KIyAxNzEgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxf
aXRlcmF0b3JfYmFzZV9mdW5jcy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0
b3IsIHR5cGVuYW1lIF9EaXN0YW5jZT4KICAgIGlubGluZSB2b2lkCiAgICBhZHZhbmNlKF9JbnB1
dEl0ZXJhdG9yJiBfX2ksIF9EaXN0YW5jZSBfX24pCiAgICB7CgogICAgICB0eXBlbmFtZSBpdGVy
YXRvcl90cmFpdHM8X0lucHV0SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgX19kID0gX19uOwog
ICAgICBzdGQ6Ol9fYWR2YW5jZShfX2ksIF9fZCwgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9f
aSkpOwogICAgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICBp
bmxpbmUgX0ZvcndhcmRJdGVyYXRvcgogICAgbmV4dChfRm9yd2FyZEl0ZXJhdG9yIF9feCwgdHlw
ZW5hbWUKICBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlw
ZSBfX24gPSAxKQogICAgewogICAgICBzdGQ6OmFkdmFuY2UoX194LCBfX24pOwogICAgICByZXR1
cm4gX194OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9y
PgogICAgaW5saW5lIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IKICAgIHByZXYoX0JpZGlyZWN0aW9u
YWxJdGVyYXRvciBfX3gsIHR5cGVuYW1lCiAgaXRlcmF0b3JfdHJhaXRzPF9CaWRpcmVjdGlvbmFs
SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgX19uID0gMSkKICAgIHsKICAgICAgc3RkOjphZHZh
bmNlKF9feCwgLV9fbik7CiAgICAgIHJldHVybiBfX3g7CiAgICB9CgoKCgp9CiMgNjcgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9z
dGxfYWxnb2Jhc2UuaCIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9pdGVyYXRvci5oIiAxIDMKIyA2MSAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L3N0bF9pdGVyYXRvci5oIiAzCiNkZWZpbmUgX1NUTF9JVEVSQVRPUl9IIDEKCgoKCiMgMSAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L3B0cl90cmFpdHMuaCIgMSAzCiMgMzEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9wdHJfdHJhaXRzLmgiIDMKI2RlZmluZSBfUFRS
X1RSQUlUU19IIDEKCgoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxp
dHlfXyAoImRlZmF1bHQiKSkpCnsKCgp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGNsYXNzIF9faGFz
X2VsZW1lbnRfdHlwZV9oZWxwZXIgeyB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+IHN0cnVjdCBfV3Jh
cF90eXBlIHsgfTsgdGVtcGxhdGU8dHlwZW5hbWUgX1VwPiBzdGF0aWMgdHJ1ZV90eXBlIF9fdGVz
dChfV3JhcF90eXBlPHR5cGVuYW1lIF9VcDo6ZWxlbWVudF90eXBlPiopOyB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVXA+IHN0YXRpYyBmYWxzZV90eXBlIF9fdGVzdCguLi4pOyBwdWJsaWM6IHR5cGVkZWYg
ZGVjbHR5cGUoX190ZXN0PF9UcD4oMCkpIHR5cGU7IH07IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4g
c3RydWN0IF9faGFzX2VsZW1lbnRfdHlwZSA6IHB1YmxpYyBfX2hhc19lbGVtZW50X3R5cGVfaGVs
cGVyIDx0eXBlbmFtZSByZW1vdmVfY3Y8X1RwPjo6dHlwZT46OnR5cGUgeyB9Owp0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+IGNsYXNzIF9faGFzX2RpZmZlcmVuY2VfdHlwZV9oZWxwZXIgeyB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVXA+IHN0cnVjdCBfV3JhcF90eXBlIHsgfTsgdGVtcGxhdGU8dHlwZW5hbWUg
X1VwPiBzdGF0aWMgdHJ1ZV90eXBlIF9fdGVzdChfV3JhcF90eXBlPHR5cGVuYW1lIF9VcDo6ZGlm
ZmVyZW5jZV90eXBlPiopOyB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+IHN0YXRpYyBmYWxzZV90eXBl
IF9fdGVzdCguLi4pOyBwdWJsaWM6IHR5cGVkZWYgZGVjbHR5cGUoX190ZXN0PF9UcD4oMCkpIHR5
cGU7IH07IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gc3RydWN0IF9faGFzX2RpZmZlcmVuY2VfdHlw
ZSA6IHB1YmxpYyBfX2hhc19kaWZmZXJlbmNlX3R5cGVfaGVscGVyIDx0eXBlbmFtZSByZW1vdmVf
Y3Y8X1RwPjo6dHlwZT46OnR5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGJvb2wg
PSBfX2hhc19lbGVtZW50X3R5cGU8X1RwPjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19wdHJ0cl9lbHRf
dHlwZTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fcHRydHJfZWx0X3R5
cGU8X1RwLCB0cnVlPgogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9UcDo6ZWxlbWVudF90
eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFt
ZS4uLj4gY2xhc3MgX1NvbWVQdHIsIHR5cGVuYW1lIF9UcCwKICAgICAgICAgICAgdHlwZW5hbWUu
Li4gX0FyZ3M+CiAgICBzdHJ1Y3QgX19wdHJ0cl9lbHRfdHlwZTxfU29tZVB0cjxfVHAsIF9Bcmdz
Li4uPiwgZmFsc2U+CiAgICB7CiAgICAgIHR5cGVkZWYgX1RwIF9fdHlwZTsKICAgIH07CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcCwgYm9vbCA9IF9faGFzX2RpZmZlcmVuY2VfdHlwZTxfVHA+Ojp2
YWx1ZT4KICAgIHN0cnVjdCBfX3B0cnRyX2RpZmZfdHlwZQogICAgewogICAgICB0eXBlZGVmIHR5
cGVuYW1lIF9UcDo6ZGlmZmVyZW5jZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX3B0cnRyX2RpZmZfdHlwZTxfVHAsIGZhbHNlPgogICAg
ewogICAgICB0eXBlZGVmIHB0cmRpZmZfdCBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUHRyLCB0eXBlbmFtZSBfVXA+CiAgICBjbGFzcyBfX3B0cnRyX3JlYmluZF9oZWxwZXIK
ICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1B0cjIsIHR5cGVuYW1lIF9VcDI+CiBzdGF0
aWMgY29uc3RleHByIHRydWVfdHlwZQogX1NfY2hrKHR5cGVuYW1lIF9QdHIyOjp0ZW1wbGF0ZSBy
ZWJpbmQ8X1VwMj4qKTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4KIHN0YXRp
YyBjb25zdGV4cHIgZmFsc2VfdHlwZQogX1NfY2hrKC4uLik7CgogICAgcHVibGljOgogICAgICB1
c2luZyBfX3R5cGUgPSBkZWNsdHlwZShfU19jaGs8X1B0ciwgX1VwPihudWxscHRyKSk7CiAgICB9
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9VcCwKICAgICAgICAgICBib29s
ID0gX19wdHJ0cl9yZWJpbmRfaGVscGVyPF9UcCwgX1VwPjo6X190eXBlOjp2YWx1ZT4KICAgIHN0
cnVjdCBfX3B0cnRyX3JlYmluZDsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBf
VXA+CiAgICBzdHJ1Y3QgX19wdHJ0cl9yZWJpbmQ8X1RwLCBfVXAsIHRydWU+CiAgICB7CiAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgX1RwOjp0ZW1wbGF0ZSByZWJpbmQ8X1VwPiBfX3R5cGU7CiAgICB9
OwoKICB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUuLi4+IGNsYXNzIF9Tb21l
UHRyLCB0eXBlbmFtZSBfVXAsCiAgICAgICAgICAgIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUuLi4g
X0FyZ3M+CiAgICBzdHJ1Y3QgX19wdHJ0cl9yZWJpbmQ8X1NvbWVQdHI8X1RwLCBfQXJncy4uLj4s
IF9VcCwgZmFsc2U+CiAgICB7CiAgICAgIHR5cGVkZWYgX1NvbWVQdHI8X1VwLCBfQXJncy4uLj4g
X190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSA9IHR5cGVu
YW1lIHJlbW92ZV9jdjxfVHA+Ojp0eXBlPgogICAgc3RydWN0IF9fcHRydHJfbm90X3ZvaWQKICAg
IHsKICAgICAgdHlwZWRlZiBfVHAgX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgc3RydWN0IF9fcHRydHJfbm90X3ZvaWQ8X1RwLCB2b2lkPgogICAgewogICAgICBz
dHJ1Y3QgX190eXBlIHsgfTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9QdHI+CiAgICBj
bGFzcyBfX3B0cnRyX3BvaW50ZXJfdG8KICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX3B0
cnRyX2VsdF90eXBlPF9QdHI+OjpfX3R5cGUgX19vcmlnX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX19wdHJ0cl9ub3Rfdm9pZDxfX29yaWdfdHlwZT46Ol9fdHlwZSBfX2VsZW1lbnRfdHlw
ZTsKCiAgICBwdWJsaWM6CiAgICAgIHN0YXRpYyBfUHRyIHBvaW50ZXJfdG8oX19lbGVtZW50X3R5
cGUmIF9fZSkKICAgICAgeyByZXR1cm4gX1B0cjo6cG9pbnRlcl90byhfX2UpOyB9CiAgICB9OwoK
CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1B0cj4KICAgIHN0cnVjdCBwb2ludGVyX3RyYWl0cyA6
IF9fcHRydHJfcG9pbnRlcl90bzxfUHRyPgogICAgewoKICAgICAgdHlwZWRlZiBfUHRyIHBvaW50
ZXI7CgogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fcHRydHJfZWx0X3R5cGU8X1B0cj46Ol9fdHlw
ZSBlbGVtZW50X3R5cGU7CgogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fcHRydHJfZGlmZl90eXBl
PF9QdHI+OjpfX3R5cGUgZGlmZmVyZW5jZV90eXBlOwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1VwPgogICAgICAgIHVzaW5nIHJlYmluZCA9IHR5cGVuYW1lIF9fcHRydHJfcmViaW5kPF9QdHIs
IF9VcD46Ol9fdHlwZTsKICAgIH07CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBz
dHJ1Y3QgcG9pbnRlcl90cmFpdHM8X1RwKj4KICAgIHsKCiAgICAgIHR5cGVkZWYgX1RwKiBwb2lu
dGVyOwoKICAgICAgdHlwZWRlZiBfVHAgZWxlbWVudF90eXBlOwoKICAgICAgdHlwZWRlZiBwdHJk
aWZmX3QgZGlmZmVyZW5jZV90eXBlOwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VwPgogICAg
ICAgIHVzaW5nIHJlYmluZCA9IF9VcCo7CgoKCgoKCiAgICAgIHN0YXRpYyBwb2ludGVyCiAgICAg
IHBvaW50ZXJfdG8odHlwZW5hbWUgX19wdHJ0cl9ub3Rfdm9pZDxlbGVtZW50X3R5cGU+OjpfX3R5
cGUmIF9fcikgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RkOjphZGRyZXNzb2YoX19yKTsgfQog
ICAgfTsKCgp9CiMgNjcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9zdGxfaXRlcmF0b3IuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkIF9f
YXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgOTYgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9z
dGxfaXRlcmF0b3IuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgIGNsYXNz
IHJldmVyc2VfaXRlcmF0b3IKICAgIDogcHVibGljIGl0ZXJhdG9yPHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfSXRlcmF0b3I+OjppdGVyYXRvcl9jYXRlZ29yeSwKICAgICAgICB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwKICAgICAgICB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlLAogICAgICAgIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+Ojpwb2ludGVyLAogICAgICAgICAgICAgICAg
ICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OnJlZmVyZW5jZT4KICAg
IHsKICAgIHByb3RlY3RlZDoKICAgICAgX0l0ZXJhdG9yIGN1cnJlbnQ7CgogICAgICB0eXBlZGVm
IGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+IF9fdHJhaXRzX3R5cGU7CgogICAgcHVibGljOgog
ICAgICB0eXBlZGVmIF9JdGVyYXRvciBpdGVyYXRvcl90eXBlOwogICAgICB0eXBlZGVmIHR5cGVu
YW1lIF9fdHJhaXRzX3R5cGU6OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7CiAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgX190cmFpdHNfdHlwZTo6cG9pbnRlciBwb2ludGVyOwogICAgICB0
eXBlZGVmIHR5cGVuYW1lIF9fdHJhaXRzX3R5cGU6OnJlZmVyZW5jZSByZWZlcmVuY2U7CgoKCgoK
CgogICAgICByZXZlcnNlX2l0ZXJhdG9yKCkgOiBjdXJyZW50KCkgeyB9CgoKCgogICAgICBleHBs
aWNpdAogICAgICByZXZlcnNlX2l0ZXJhdG9yKGl0ZXJhdG9yX3R5cGUgX194KSA6IGN1cnJlbnQo
X194KSB7IH0KCgoKCiAgICAgIHJldmVyc2VfaXRlcmF0b3IoY29uc3QgcmV2ZXJzZV9pdGVyYXRv
ciYgX194KQogICAgICA6IGN1cnJlbnQoX194LmN1cnJlbnQpIHsgfQoKCgoKCiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9JdGVyPgogICAgICAgIHJldmVyc2VfaXRlcmF0b3IoY29uc3QgcmV2ZXJz
ZV9pdGVyYXRvcjxfSXRlcj4mIF9feCkKIDogY3VycmVudChfX3guYmFzZSgpKSB7IH0KCgoKCiAg
ICAgIGl0ZXJhdG9yX3R5cGUKICAgICAgYmFzZSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIGN1cnJl
bnQ7IH0KIyAxNjAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwogICAgICByZWZlcmVuY2UKICAgICAg
b3BlcmF0b3IqKCkgY29uc3QKICAgICAgewogX0l0ZXJhdG9yIF9fdG1wID0gY3VycmVudDsKIHJl
dHVybiAqLS1fX3RtcDsKICAgICAgfQoKCgoKCgogICAgICBwb2ludGVyCiAgICAgIG9wZXJhdG9y
LT4oKSBjb25zdAogICAgICB7IHJldHVybiAmKG9wZXJhdG9yKigpKTsgfQoKCgoKCgogICAgICBy
ZXZlcnNlX2l0ZXJhdG9yJgogICAgICBvcGVyYXRvcisrKCkKICAgICAgewogLS1jdXJyZW50Owog
cmV0dXJuICp0aGlzOwogICAgICB9CgoKCgoKCiAgICAgIHJldmVyc2VfaXRlcmF0b3IKICAgICAg
b3BlcmF0b3IrKyhpbnQpCiAgICAgIHsKIHJldmVyc2VfaXRlcmF0b3IgX190bXAgPSAqdGhpczsK
IC0tY3VycmVudDsKIHJldHVybiBfX3RtcDsKICAgICAgfQoKCgoKCgogICAgICByZXZlcnNlX2l0
ZXJhdG9yJgogICAgICBvcGVyYXRvci0tKCkKICAgICAgewogKytjdXJyZW50OwogcmV0dXJuICp0
aGlzOwogICAgICB9CgoKCgoKCiAgICAgIHJldmVyc2VfaXRlcmF0b3IKICAgICAgb3BlcmF0b3It
LShpbnQpCiAgICAgIHsKIHJldmVyc2VfaXRlcmF0b3IgX190bXAgPSAqdGhpczsKICsrY3VycmVu
dDsKIHJldHVybiBfX3RtcDsKICAgICAgfQoKCgoKCgogICAgICByZXZlcnNlX2l0ZXJhdG9yCiAg
ICAgIG9wZXJhdG9yKyhkaWZmZXJlbmNlX3R5cGUgX19uKSBjb25zdAogICAgICB7IHJldHVybiBy
ZXZlcnNlX2l0ZXJhdG9yKGN1cnJlbnQgLSBfX24pOyB9CgoKCgoKCgogICAgICByZXZlcnNlX2l0
ZXJhdG9yJgogICAgICBvcGVyYXRvcis9KGRpZmZlcmVuY2VfdHlwZSBfX24pCiAgICAgIHsKIGN1
cnJlbnQgLT0gX19uOwogcmV0dXJuICp0aGlzOwogICAgICB9CgoKCgoKCiAgICAgIHJldmVyc2Vf
aXRlcmF0b3IKICAgICAgb3BlcmF0b3ItKGRpZmZlcmVuY2VfdHlwZSBfX24pIGNvbnN0CiAgICAg
IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoY3VycmVudCArIF9fbik7IH0KCgoKCgoKCiAgICAg
IHJldmVyc2VfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yLT0oZGlmZmVyZW5jZV90eXBlIF9fbikK
ICAgICAgewogY3VycmVudCArPSBfX247CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCgoKCgoKICAg
ICAgcmVmZXJlbmNlCiAgICAgIG9wZXJhdG9yW10oZGlmZmVyZW5jZV90eXBlIF9fbikgY29uc3QK
ICAgICAgeyByZXR1cm4gKigqdGhpcyArIF9fbik7IH0KICAgIH07CiMgMjkwICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2l0
ZXJhdG9yLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBpbmxpbmUgYm9v
bAogICAgb3BlcmF0b3I9PShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwK
ICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkKICAgIHsgcmV0
dXJuIF9feC5iYXNlKCkgPT0gX195LmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRl
cmF0b3I+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IHJldmVyc2VfaXRlcmF0
b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0
b3I+JiBfX3kpCiAgICB7IHJldHVybiBfX3kuYmFzZSgpIDwgX194LmJhc2UoKTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShj
b25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwKICAgICAgICBjb25zdCByZXZl
cnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkKICAgIHsgcmV0dXJuICEoX194ID09IF9feSk7
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogICAgaW5saW5lIGJvb2wKICAgIG9w
ZXJhdG9yPihjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwKICAgICAgIGNv
bnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX195KQogICAgeyByZXR1cm4gX195IDwg
X194OyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgIGlubGluZSBib29sCiAg
ICBvcGVyYXRvcjw9KGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAg
ICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX195KQogICAgeyByZXR1cm4g
IShfX3kgPCBfX3gpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgIGlubGlu
ZSBib29sCiAgICBvcGVyYXRvcj49KGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYg
X194LAogICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX195KQogICAg
eyByZXR1cm4gIShfX3ggPCBfX3kpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4K
ICAgIGlubGluZSB0eXBlbmFtZSByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj46OmRpZmZlcmVu
Y2VfdHlwZQogICAgb3BlcmF0b3ItKGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYg
X194LAogICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kpCiAgICB7
IHJldHVybiBfX3kuYmFzZSgpIC0gX194LmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
SXRlcmF0b3I+CiAgICBpbmxpbmUgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+CiAgICBvcGVy
YXRvcisodHlwZW5hbWUgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5
cGUgX19uLAogICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gpCiAg
ICB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4oX194LmJhc2UoKSAtIF9fbik7
IH0KCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JS
PgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxf
SXRlcmF0b3JMPiYgX194LAogICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9y
Uj4mIF9feSkKICAgIHsgcmV0dXJuIF9feC5iYXNlKCkgPT0gX195LmJhc2UoKTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSPgogICAgaW5saW5l
IGJvb2wKICAgIG9wZXJhdG9yPChjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvckw+JiBf
X3gsCiAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvclI+JiBfX3kpCiAgICB7
IHJldHVybiBfX3kuYmFzZSgpIDwgX194LmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
SXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJh
dG9yIT0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3JMPiYgX194LAogICAgICAgIGNv
bnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yUj4mIF9feSkKICAgIHsgcmV0dXJuICEoX194
ID09IF9feSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0
ZXJhdG9yUj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj4oY29uc3QgcmV2ZXJzZV9pdGVy
YXRvcjxfSXRlcmF0b3JMPiYgX194LAogICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRl
cmF0b3JSPiYgX195KQogICAgeyByZXR1cm4gX195IDwgX194OyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9JdGVyYXRvckwsIHR5cGVuYW1lIF9JdGVyYXRvclI+CiAgICBpbmxpbmUgYm9vbAogICAg
b3BlcmF0b3I8PShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvckw+JiBfX3gsCiAgICAg
ICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3JSPiYgX195KQogICAgeyByZXR1cm4g
IShfX3kgPCBfX3gpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVuYW1l
IF9JdGVyYXRvclI+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+PShjb25zdCByZXZlcnNl
X2l0ZXJhdG9yPF9JdGVyYXRvckw+JiBfX3gsCiAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRv
cjxfSXRlcmF0b3JSPiYgX195KQogICAgeyByZXR1cm4gIShfX3ggPCBfX3kpOyB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVuYW1lIF9JdGVyYXRvclI+CgoKICAgIGlubGlu
ZSBhdXRvCiAgICBvcGVyYXRvci0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3JMPiYg
X194LAogICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3JSPiYgX195KQogICAg
LT4gZGVjbHR5cGUoX195LmJhc2UoKSAtIF9feC5iYXNlKCkpCgoKCgoKICAgIHsgcmV0dXJuIF9f
eS5iYXNlKCkgLSBfX3guYmFzZSgpOyB9CiMgNDAyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ29udGFpbmVyPgogICAgY2xhc3MgYmFja19pbnNlcnRfaXRlcmF0
b3IKICAgIDogcHVibGljIGl0ZXJhdG9yPG91dHB1dF9pdGVyYXRvcl90YWcsIHZvaWQsIHZvaWQs
IHZvaWQsIHZvaWQ+CiAgICB7CiAgICBwcm90ZWN0ZWQ6CiAgICAgIF9Db250YWluZXIqIGNvbnRh
aW5lcjsKCiAgICBwdWJsaWM6CgogICAgICB0eXBlZGVmIF9Db250YWluZXIgY29udGFpbmVyX3R5
cGU7CgoKICAgICAgZXhwbGljaXQKICAgICAgYmFja19pbnNlcnRfaXRlcmF0b3IoX0NvbnRhaW5l
ciYgX194KSA6IGNvbnRhaW5lcigmX194KSB7IH0KIyA0MzYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfaXRlcmF0b3IuaCIg
MwogICAgICBiYWNrX2luc2VydF9pdGVyYXRvciYKICAgICAgb3BlcmF0b3I9KGNvbnN0IHR5cGVu
YW1lIF9Db250YWluZXI6OnZhbHVlX3R5cGUmIF9fdmFsdWUpCiAgICAgIHsKIGNvbnRhaW5lci0+
cHVzaF9iYWNrKF9fdmFsdWUpOwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICBiYWNrX2lu
c2VydF9pdGVyYXRvciYKICAgICAgb3BlcmF0b3I9KHR5cGVuYW1lIF9Db250YWluZXI6OnZhbHVl
X3R5cGUmJiBfX3ZhbHVlKQogICAgICB7CiBjb250YWluZXItPnB1c2hfYmFjayhzdGQ6Om1vdmUo
X192YWx1ZSkpOwogcmV0dXJuICp0aGlzOwogICAgICB9CgoKCiAgICAgIGJhY2tfaW5zZXJ0X2l0
ZXJhdG9yJgogICAgICBvcGVyYXRvciooKQogICAgICB7IHJldHVybiAqdGhpczsgfQoKCiAgICAg
IGJhY2tfaW5zZXJ0X2l0ZXJhdG9yJgogICAgICBvcGVyYXRvcisrKCkKICAgICAgeyByZXR1cm4g
KnRoaXM7IH0KCgogICAgICBiYWNrX2luc2VydF9pdGVyYXRvcgogICAgICBvcGVyYXRvcisrKGlu
dCkKICAgICAgeyByZXR1cm4gKnRoaXM7IH0KICAgIH07CiMgNDc4ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2l0ZXJhdG9y
LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ29udGFpbmVyPgogICAgaW5saW5lIGJhY2tfaW5z
ZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+CiAgICBiYWNrX2luc2VydGVyKF9Db250YWluZXImIF9f
eCkKICAgIHsgcmV0dXJuIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+KF9feCk7IH0K
IyA0OTMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Db250YWlu
ZXI+CiAgICBjbGFzcyBmcm9udF9pbnNlcnRfaXRlcmF0b3IKICAgIDogcHVibGljIGl0ZXJhdG9y
PG91dHB1dF9pdGVyYXRvcl90YWcsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQ+CiAgICB7CiAgICBw
cm90ZWN0ZWQ6CiAgICAgIF9Db250YWluZXIqIGNvbnRhaW5lcjsKCiAgICBwdWJsaWM6CgogICAg
ICB0eXBlZGVmIF9Db250YWluZXIgY29udGFpbmVyX3R5cGU7CgoKICAgICAgZXhwbGljaXQgZnJv
bnRfaW5zZXJ0X2l0ZXJhdG9yKF9Db250YWluZXImIF9feCkgOiBjb250YWluZXIoJl9feCkgeyB9
CiMgNTI2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMKICAgICAgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9y
JgogICAgICBvcGVyYXRvcj0oY29uc3QgdHlwZW5hbWUgX0NvbnRhaW5lcjo6dmFsdWVfdHlwZSYg
X192YWx1ZSkKICAgICAgewogY29udGFpbmVyLT5wdXNoX2Zyb250KF9fdmFsdWUpOwogcmV0dXJu
ICp0aGlzOwogICAgICB9CgogICAgICBmcm9udF9pbnNlcnRfaXRlcmF0b3ImCiAgICAgIG9wZXJh
dG9yPSh0eXBlbmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90eXBlJiYgX192YWx1ZSkKICAgICAgewog
Y29udGFpbmVyLT5wdXNoX2Zyb250KHN0ZDo6bW92ZShfX3ZhbHVlKSk7CiByZXR1cm4gKnRoaXM7
CiAgICAgIH0KCgoKICAgICAgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yJgogICAgICBvcGVyYXRvcioo
KQogICAgICB7IHJldHVybiAqdGhpczsgfQoKCiAgICAgIGZyb250X2luc2VydF9pdGVyYXRvciYK
ICAgICAgb3BlcmF0b3IrKygpCiAgICAgIHsgcmV0dXJuICp0aGlzOyB9CgoKICAgICAgZnJvbnRf
aW5zZXJ0X2l0ZXJhdG9yCiAgICAgIG9wZXJhdG9yKysoaW50KQogICAgICB7IHJldHVybiAqdGhp
czsgfQogICAgfTsKIyA1NjggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9Db250YWluZXI+CiAgICBpbmxpbmUgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWlu
ZXI+CiAgICBmcm9udF9pbnNlcnRlcihfQ29udGFpbmVyJiBfX3gpCiAgICB7IHJldHVybiBmcm9u
dF9pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4oX194KTsgfQojIDU4NyAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9pdGVy
YXRvci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgIGNsYXNzIGluc2Vy
dF9pdGVyYXRvcgogICAgOiBwdWJsaWMgaXRlcmF0b3I8b3V0cHV0X2l0ZXJhdG9yX3RhZywgdm9p
ZCwgdm9pZCwgdm9pZCwgdm9pZD4KICAgIHsKICAgIHByb3RlY3RlZDoKICAgICAgX0NvbnRhaW5l
ciogY29udGFpbmVyOwogICAgICB0eXBlbmFtZSBfQ29udGFpbmVyOjppdGVyYXRvciBpdGVyOwoK
ICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgX0NvbnRhaW5lciBjb250YWluZXJfdHlwZTsKCgoK
CgogICAgICBpbnNlcnRfaXRlcmF0b3IoX0NvbnRhaW5lciYgX194LCB0eXBlbmFtZSBfQ29udGFp
bmVyOjppdGVyYXRvciBfX2kpCiAgICAgIDogY29udGFpbmVyKCZfX3gpLCBpdGVyKF9faSkge30K
IyA2MzggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwogICAgICBpbnNlcnRfaXRlcmF0b3ImCiAgICAg
IG9wZXJhdG9yPShjb25zdCB0eXBlbmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90eXBlJiBfX3ZhbHVl
KQogICAgICB7CiBpdGVyID0gY29udGFpbmVyLT5pbnNlcnQoaXRlciwgX192YWx1ZSk7CiArK2l0
ZXI7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgICAgIGluc2VydF9pdGVyYXRvciYKICAgICAg
b3BlcmF0b3I9KHR5cGVuYW1lIF9Db250YWluZXI6OnZhbHVlX3R5cGUmJiBfX3ZhbHVlKQogICAg
ICB7CiBpdGVyID0gY29udGFpbmVyLT5pbnNlcnQoaXRlciwgc3RkOjptb3ZlKF9fdmFsdWUpKTsK
ICsraXRlcjsKIHJldHVybiAqdGhpczsKICAgICAgfQoKCgogICAgICBpbnNlcnRfaXRlcmF0b3Im
CiAgICAgIG9wZXJhdG9yKigpCiAgICAgIHsgcmV0dXJuICp0aGlzOyB9CgoKICAgICAgaW5zZXJ0
X2l0ZXJhdG9yJgogICAgICBvcGVyYXRvcisrKCkKICAgICAgeyByZXR1cm4gKnRoaXM7IH0KCgog
ICAgICBpbnNlcnRfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKysoaW50KQogICAgICB7IHJldHVy
biAqdGhpczsgfQogICAgfTsKIyA2ODIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9Db250YWluZXIsIHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgIGlubGluZSBpbnNl
cnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4KICAgIGluc2VydGVyKF9Db250YWluZXImIF9feCwgX0l0
ZXJhdG9yIF9faSkKICAgIHsKICAgICAgcmV0dXJuIGluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVy
PihfX3gsCiAgICAgIHR5cGVuYW1lIF9Db250YWluZXI6Oml0ZXJhdG9yKF9faSkpOwogICAgfQoK
CgoKfQoKbmFtZXNwYWNlIF9fZ251X2N4eCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18g
KCJkZWZhdWx0IikpKQp7CgojIDcwNiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCiAgdXNpbmcgc3Rk
OjppdGVyYXRvcl90cmFpdHM7CiAgdXNpbmcgc3RkOjppdGVyYXRvcjsKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBjbGFzcyBfX25vcm1hbF9p
dGVyYXRvcgogICAgewogICAgcHJvdGVjdGVkOgogICAgICBfSXRlcmF0b3IgX01fY3VycmVudDsK
CiAgICAgIHR5cGVkZWYgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj4gX190cmFpdHNfdHlwZTsK
CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX0l0ZXJhdG9yIGl0ZXJhdG9yX3R5cGU7CiAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgX190cmFpdHNfdHlwZTo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0
b3JfY2F0ZWdvcnk7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX190cmFpdHNfdHlwZTo6dmFsdWVf
dHlwZSB2YWx1ZV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fdHJhaXRzX3R5cGU6OmRp
ZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX190
cmFpdHNfdHlwZTo6cmVmZXJlbmNlIHJlZmVyZW5jZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBf
X3RyYWl0c190eXBlOjpwb2ludGVyIHBvaW50ZXI7CgogICAgICBjb25zdGV4cHIgX19ub3JtYWxf
aXRlcmF0b3IoKSBub2V4Y2VwdAogICAgICA6IF9NX2N1cnJlbnQoX0l0ZXJhdG9yKCkpIHsgfQoK
ICAgICAgZXhwbGljaXQKICAgICAgX19ub3JtYWxfaXRlcmF0b3IoY29uc3QgX0l0ZXJhdG9yJiBf
X2kpIG5vZXhjZXB0CiAgICAgIDogX01fY3VycmVudChfX2kpIHsgfQoKCiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9JdGVyPgogICAgICAgIF9fbm9ybWFsX2l0ZXJhdG9yKGNvbnN0IF9fbm9ybWFs
X2l0ZXJhdG9yPF9JdGVyLAogICAgIHR5cGVuYW1lIF9fZW5hYmxlX2lmPAogICAgICAgICAgICAg
IChzdGQ6Ol9fYXJlX3NhbWU8X0l0ZXIsIHR5cGVuYW1lIF9Db250YWluZXI6OnBvaW50ZXI+Ojpf
X3ZhbHVlKSwKICAgICAgICBfQ29udGFpbmVyPjo6X190eXBlPiYgX19pKSBub2V4Y2VwdAogICAg
ICAgIDogX01fY3VycmVudChfX2kuYmFzZSgpKSB7IH0KCgogICAgICByZWZlcmVuY2UKICAgICAg
b3BlcmF0b3IqKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gKl9NX2N1cnJlbnQ7IH0K
CiAgICAgIHBvaW50ZXIKICAgICAgb3BlcmF0b3ItPigpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsg
cmV0dXJuIF9NX2N1cnJlbnQ7IH0KCiAgICAgIF9fbm9ybWFsX2l0ZXJhdG9yJgogICAgICBvcGVy
YXRvcisrKCkgbm9leGNlcHQKICAgICAgewogKytfTV9jdXJyZW50OwogcmV0dXJuICp0aGlzOwog
ICAgICB9CgogICAgICBfX25vcm1hbF9pdGVyYXRvcgogICAgICBvcGVyYXRvcisrKGludCkgbm9l
eGNlcHQKICAgICAgeyByZXR1cm4gX19ub3JtYWxfaXRlcmF0b3IoX01fY3VycmVudCsrKTsgfQoK
CiAgICAgIF9fbm9ybWFsX2l0ZXJhdG9yJgogICAgICBvcGVyYXRvci0tKCkgbm9leGNlcHQKICAg
ICAgewogLS1fTV9jdXJyZW50OwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICBfX25vcm1h
bF9pdGVyYXRvcgogICAgICBvcGVyYXRvci0tKGludCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4g
X19ub3JtYWxfaXRlcmF0b3IoX01fY3VycmVudC0tKTsgfQoKCiAgICAgIHJlZmVyZW5jZQogICAg
ICBvcGVyYXRvcltdKGRpZmZlcmVuY2VfdHlwZSBfX24pIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsg
cmV0dXJuIF9NX2N1cnJlbnRbX19uXTsgfQoKICAgICAgX19ub3JtYWxfaXRlcmF0b3ImCiAgICAg
IG9wZXJhdG9yKz0oZGlmZmVyZW5jZV90eXBlIF9fbikgbm9leGNlcHQKICAgICAgeyBfTV9jdXJy
ZW50ICs9IF9fbjsgcmV0dXJuICp0aGlzOyB9CgogICAgICBfX25vcm1hbF9pdGVyYXRvcgogICAg
ICBvcGVyYXRvcisoZGlmZmVyZW5jZV90eXBlIF9fbikgY29uc3Qgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gX19ub3JtYWxfaXRlcmF0b3IoX01fY3VycmVudCArIF9fbik7IH0KCiAgICAgIF9fbm9y
bWFsX2l0ZXJhdG9yJgogICAgICBvcGVyYXRvci09KGRpZmZlcmVuY2VfdHlwZSBfX24pIG5vZXhj
ZXB0CiAgICAgIHsgX01fY3VycmVudCAtPSBfX247IHJldHVybiAqdGhpczsgfQoKICAgICAgX19u
b3JtYWxfaXRlcmF0b3IKICAgICAgb3BlcmF0b3ItKGRpZmZlcmVuY2VfdHlwZSBfX24pIGNvbnN0
IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fbm9ybWFsX2l0ZXJhdG9yKF9NX2N1cnJlbnQgLSBf
X24pOyB9CgogICAgICBjb25zdCBfSXRlcmF0b3ImCiAgICAgIGJhc2UoKSBjb25zdCBub2V4Y2Vw
dAogICAgICB7IHJldHVybiBfTV9jdXJyZW50OyB9CiAgICB9OwojIDgwNiAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9pdGVy
YXRvci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJh
dG9yUiwgdHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09
KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvckwsIF9Db250YWluZXI+JiBfX2xocywK
ICAgICAgICBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3JSLCBfQ29udGFpbmVyPiYg
X19yaHMpCiAgICBub2V4Y2VwdAogICAgeyByZXR1cm4gX19saHMuYmFzZSgpID09IF9fcmhzLmJh
c2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9Db250YWlu
ZXI+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I9PShjb25zdCBfX25vcm1hbF9pdGVyYXRv
cjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX2xocywKICAgICAgICBjb25zdCBfX25vcm1hbF9p
dGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX3JocykKICAgIG5vZXhjZXB0CiAgICB7
IHJldHVybiBfX2xocy5iYXNlKCkgPT0gX19yaHMuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9JdGVyYXRvckwsIHR5cGVuYW1lIF9JdGVyYXRvclIsIHR5cGVuYW1lIF9Db250YWluZXI+
CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxf
SXRlcmF0b3JMLCBfQ29udGFpbmVyPiYgX19saHMsCiAgICAgICAgY29uc3QgX19ub3JtYWxfaXRl
cmF0b3I8X0l0ZXJhdG9yUiwgX0NvbnRhaW5lcj4mIF9fcmhzKQogICAgbm9leGNlcHQKICAgIHsg
cmV0dXJuIF9fbGhzLmJhc2UoKSAhPSBfX3Jocy5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29udGFpbmVyPgogICAgaW5saW5lIGJvb2wKICAgIG9w
ZXJhdG9yIT0oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPiYg
X19saHMsCiAgICAgICAgY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFp
bmVyPiYgX19yaHMpCiAgICBub2V4Y2VwdAogICAgeyByZXR1cm4gX19saHMuYmFzZSgpICE9IF9f
cmhzLmJhc2UoKTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUg
X0l0ZXJhdG9yUiwgdHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgIGlubGluZSBib29sCiAgICBvcGVy
YXRvcjwoY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yTCwgX0NvbnRhaW5lcj4mIF9f
bGhzLAogICAgICAgY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yUiwgX0NvbnRhaW5l
cj4mIF9fcmhzKQogICAgbm9leGNlcHQKICAgIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSA8IF9fcmhz
LmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9Db250
YWluZXI+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IF9fbm9ybWFsX2l0ZXJh
dG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgY29uc3QgX19ub3JtYWxf
aXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPiYgX19yaHMpCiAgICBub2V4Y2VwdAogICAg
eyByZXR1cm4gX19saHMuYmFzZSgpIDwgX19yaHMuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9JdGVyYXRvckwsIHR5cGVuYW1lIF9JdGVyYXRvclIsIHR5cGVuYW1lIF9Db250YWluZXI+
CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9J
dGVyYXRvckwsIF9Db250YWluZXI+JiBfX2xocywKICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJh
dG9yPF9JdGVyYXRvclIsIF9Db250YWluZXI+JiBfX3JocykKICAgIG5vZXhjZXB0CiAgICB7IHJl
dHVybiBfX2xocy5iYXNlKCkgPiBfX3Jocy5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29udGFpbmVyPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJh
dG9yPihjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX2xo
cywKICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4m
IF9fcmhzKQogICAgbm9leGNlcHQKICAgIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSA+IF9fcmhzLmJh
c2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0
b3JSLCB0eXBlbmFtZSBfQ29udGFpbmVyPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPD0o
Y29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yTCwgX0NvbnRhaW5lcj4mIF9fbGhzLAog
ICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvclIsIF9Db250YWluZXI+JiBf
X3JocykKICAgIG5vZXhjZXB0CiAgICB7IHJldHVybiBfX2xocy5iYXNlKCkgPD0gX19yaHMuYmFz
ZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX0NvbnRhaW5l
cj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjw9KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9y
PF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0
ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fcmhzKQogICAgbm9leGNlcHQKICAgIHsg
cmV0dXJuIF9fbGhzLmJhc2UoKSA8PSBfX3Jocy5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJhdG9yUiwgdHlwZW5hbWUgX0NvbnRhaW5lcj4K
ICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj49KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9J
dGVyYXRvckwsIF9Db250YWluZXI+JiBfX2xocywKICAgICAgICBjb25zdCBfX25vcm1hbF9pdGVy
YXRvcjxfSXRlcmF0b3JSLCBfQ29udGFpbmVyPiYgX19yaHMpCiAgICBub2V4Y2VwdAogICAgeyBy
ZXR1cm4gX19saHMuYmFzZSgpID49IF9fcmhzLmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBpbmxpbmUgYm9vbAogICAgb3Bl
cmF0b3I+PShjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBf
X2xocywKICAgICAgICBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWlu
ZXI+JiBfX3JocykKICAgIG5vZXhjZXB0CiAgICB7IHJldHVybiBfX2xocy5iYXNlKCkgPj0gX19y
aHMuYmFzZSgpOyB9CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFt
ZSBfSXRlcmF0b3JSLCB0eXBlbmFtZSBfQ29udGFpbmVyPgoKCiAgICBpbmxpbmUgYXV0bwogICAg
b3BlcmF0b3ItKGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvckwsIF9Db250YWluZXI+
JiBfX2xocywKICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvclIsIF9Db250
YWluZXI+JiBfX3Jocykgbm9leGNlcHQKICAgIC0+IGRlY2x0eXBlKF9fbGhzLmJhc2UoKSAtIF9f
cmhzLmJhc2UoKSkKCgoKCgogICAgeyByZXR1cm4gX19saHMuYmFzZSgpIC0gX19yaHMuYmFzZSgp
OyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX0NvbnRhaW5lcj4K
ICAgIGlubGluZSB0eXBlbmFtZSBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWlu
ZXI+OjpkaWZmZXJlbmNlX3R5cGUKICAgIG9wZXJhdG9yLShjb25zdCBfX25vcm1hbF9pdGVyYXRv
cjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX2xocywKICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0
ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fcmhzKQogICAgbm9leGNlcHQKICAgIHsg
cmV0dXJuIF9fbGhzLmJhc2UoKSAtIF9fcmhzLmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBpbmxpbmUgX19ub3JtYWxfaXRl
cmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPgogICAgb3BlcmF0b3IrKHR5cGVuYW1lIF9fbm9y
bWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj46OmRpZmZlcmVuY2VfdHlwZQogICAg
ICAgX19uLCBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBf
X2kpCiAgICBub2V4Y2VwdAogICAgeyByZXR1cm4gX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9y
LCBfQ29udGFpbmVyPihfX2kuYmFzZSgpICsgX19uKTsgfQoKCn0KCgoKbmFtZXNwYWNlIHN0ZCBf
X2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgojIDk0NiAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L3N0bF9pdGVyYXRvci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogICAgY2xh
c3MgbW92ZV9pdGVyYXRvcgogICAgewogICAgcHJvdGVjdGVkOgogICAgICBfSXRlcmF0b3IgX01f
Y3VycmVudDsKCiAgICAgIHR5cGVkZWYgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj4gX190cmFp
dHNfdHlwZTsKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX0l0ZXJhdG9yIGl0ZXJhdG9yX3R5
cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX190cmFpdHNfdHlwZTo6aXRlcmF0b3JfY2F0ZWdv
cnkgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX190cmFpdHNfdHlw
ZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fdHJhaXRz
X3R5cGU6OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7CgogICAgICB0eXBlZGVmIF9J
dGVyYXRvciBwb2ludGVyOwogICAgICB0eXBlZGVmIHZhbHVlX3R5cGUmJiByZWZlcmVuY2U7Cgog
ICAgICBtb3ZlX2l0ZXJhdG9yKCkKICAgICAgOiBfTV9jdXJyZW50KCkgeyB9CgogICAgICBleHBs
aWNpdAogICAgICBtb3ZlX2l0ZXJhdG9yKGl0ZXJhdG9yX3R5cGUgX19pKQogICAgICA6IF9NX2N1
cnJlbnQoX19pKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyPgogbW92ZV9pdGVy
YXRvcihjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyPiYgX19pKQogOiBfTV9jdXJyZW50KF9faS5i
YXNlKCkpIHsgfQoKICAgICAgaXRlcmF0b3JfdHlwZQogICAgICBiYXNlKCkgY29uc3QKICAgICAg
eyByZXR1cm4gX01fY3VycmVudDsgfQoKICAgICAgcmVmZXJlbmNlCiAgICAgIG9wZXJhdG9yKigp
IGNvbnN0CiAgICAgIHsgcmV0dXJuIHN0ZDo6bW92ZSgqX01fY3VycmVudCk7IH0KCiAgICAgIHBv
aW50ZXIKICAgICAgb3BlcmF0b3ItPigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2N1cnJlbnQ7
IH0KCiAgICAgIG1vdmVfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKysoKQogICAgICB7CiArK19N
X2N1cnJlbnQ7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgICAgIG1vdmVfaXRlcmF0b3IKICAg
ICAgb3BlcmF0b3IrKyhpbnQpCiAgICAgIHsKIG1vdmVfaXRlcmF0b3IgX190bXAgPSAqdGhpczsK
ICsrX01fY3VycmVudDsKIHJldHVybiBfX3RtcDsKICAgICAgfQoKICAgICAgbW92ZV9pdGVyYXRv
ciYKICAgICAgb3BlcmF0b3ItLSgpCiAgICAgIHsKIC0tX01fY3VycmVudDsKIHJldHVybiAqdGhp
czsKICAgICAgfQoKICAgICAgbW92ZV9pdGVyYXRvcgogICAgICBvcGVyYXRvci0tKGludCkKICAg
ICAgewogbW92ZV9pdGVyYXRvciBfX3RtcCA9ICp0aGlzOwogLS1fTV9jdXJyZW50OwogcmV0dXJu
IF9fdG1wOwogICAgICB9CgogICAgICBtb3ZlX2l0ZXJhdG9yCiAgICAgIG9wZXJhdG9yKyhkaWZm
ZXJlbmNlX3R5cGUgX19uKSBjb25zdAogICAgICB7IHJldHVybiBtb3ZlX2l0ZXJhdG9yKF9NX2N1
cnJlbnQgKyBfX24pOyB9CgogICAgICBtb3ZlX2l0ZXJhdG9yJgogICAgICBvcGVyYXRvcis9KGRp
ZmZlcmVuY2VfdHlwZSBfX24pCiAgICAgIHsKIF9NX2N1cnJlbnQgKz0gX19uOwogcmV0dXJuICp0
aGlzOwogICAgICB9CgogICAgICBtb3ZlX2l0ZXJhdG9yCiAgICAgIG9wZXJhdG9yLShkaWZmZXJl
bmNlX3R5cGUgX19uKSBjb25zdAogICAgICB7IHJldHVybiBtb3ZlX2l0ZXJhdG9yKF9NX2N1cnJl
bnQgLSBfX24pOyB9CgogICAgICBtb3ZlX2l0ZXJhdG9yJgogICAgICBvcGVyYXRvci09KGRpZmZl
cmVuY2VfdHlwZSBfX24pCiAgICAgIHsKIF9NX2N1cnJlbnQgLT0gX19uOwogcmV0dXJuICp0aGlz
OwogICAgICB9CgogICAgICByZWZlcmVuY2UKICAgICAgb3BlcmF0b3JbXShkaWZmZXJlbmNlX3R5
cGUgX19uKSBjb25zdAogICAgICB7IHJldHVybiBzdGQ6Om1vdmUoX01fY3VycmVudFtfX25dKTsg
fQogICAgfTsKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0
ZXJhdG9yUj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0IG1vdmVfaXRlcmF0
b3I8X0l0ZXJhdG9yTD4mIF9feCwKICAgICAgICBjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRv
clI+JiBfX3kpCiAgICB7IHJldHVybiBfX3guYmFzZSgpID09IF9feS5iYXNlKCk7IH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0o
Y29uc3QgbW92ZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gsCiAgICAgICAgY29uc3QgbW92ZV9p
dGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kpCiAgICB7IHJldHVybiBfX3guYmFzZSgpID09IF9feS5i
YXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJh
dG9yUj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IG1vdmVfaXRlcmF0b3I8
X0l0ZXJhdG9yTD4mIF9feCwKICAgICAgICBjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvclI+
JiBfX3kpCiAgICB7IHJldHVybiAhKF9feCA9PSBfX3kpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9JdGVyYXRvcj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IG1vdmVfaXRl
cmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAgIGNvbnN0IG1vdmVfaXRlcmF0b3I8X0l0ZXJh
dG9yPiYgX195KQogICAgeyByZXR1cm4gIShfX3ggPT0gX195KTsgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSPgogICAgaW5saW5lIGJvb2wKICAg
IG9wZXJhdG9yPChjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvckw+JiBfX3gsCiAgICAgICBj
b25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvclI+JiBfX3kpCiAgICB7IHJldHVybiBfX3guYmFz
ZSgpIDwgX195LmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBp
bmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IG1vdmVfaXRlcmF0b3I8X0l0ZXJhdG9yPiYg
X194LAogICAgICAgY29uc3QgbW92ZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kpCiAgICB7IHJl
dHVybiBfX3guYmFzZSgpIDwgX195LmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRl
cmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9y
PD0oY29uc3QgbW92ZV9pdGVyYXRvcjxfSXRlcmF0b3JMPiYgX194LAogICAgICAgIGNvbnN0IG1v
dmVfaXRlcmF0b3I8X0l0ZXJhdG9yUj4mIF9feSkKICAgIHsgcmV0dXJuICEoX195IDwgX194KTsg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBpbmxpbmUgYm9vbAogICAgb3Bl
cmF0b3I8PShjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwKICAgICAgICBjb25z
dCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkKICAgIHsgcmV0dXJuICEoX195IDwgX194
KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JS
PgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPihjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVy
YXRvckw+JiBfX3gsCiAgICAgICBjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvclI+JiBfX3kp
CiAgICB7IHJldHVybiBfX3kgPCBfX3g7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9y
PgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPihjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVy
YXRvcj4mIF9feCwKICAgICAgIGNvbnN0IG1vdmVfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX195KQog
ICAgeyByZXR1cm4gX195IDwgX194OyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvckws
IHR5cGVuYW1lIF9JdGVyYXRvclI+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+PShjb25z
dCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvckw+JiBfX3gsCiAgICAgICAgY29uc3QgbW92ZV9pdGVy
YXRvcjxfSXRlcmF0b3JSPiYgX195KQogICAgeyByZXR1cm4gIShfX3ggPCBfX3kpOyB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj49
KGNvbnN0IG1vdmVfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAgIGNvbnN0IG1vdmVf
aXRlcmF0b3I8X0l0ZXJhdG9yPiYgX195KQogICAgeyByZXR1cm4gIShfX3ggPCBfX3kpOyB9CgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSPgogICAg
aW5saW5lIGF1dG8KICAgIG9wZXJhdG9yLShjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvckw+
JiBfX3gsCiAgICAgICBjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvclI+JiBfX3kpCiAgICAt
PiBkZWNsdHlwZShfX3guYmFzZSgpIC0gX195LmJhc2UoKSkKICAgIHsgcmV0dXJuIF9feC5iYXNl
KCkgLSBfX3kuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgIGlu
bGluZSBhdXRvCiAgICBvcGVyYXRvci0oY29uc3QgbW92ZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBf
X3gsCiAgICAgICBjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkKICAgIC0+IGRl
Y2x0eXBlKF9feC5iYXNlKCkgLSBfX3kuYmFzZSgpKQogICAgeyByZXR1cm4gX194LmJhc2UoKSAt
IF9feS5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogICAgaW5saW5l
IG1vdmVfaXRlcmF0b3I8X0l0ZXJhdG9yPgogICAgb3BlcmF0b3IrKHR5cGVuYW1lIG1vdmVfaXRl
cmF0b3I8X0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIF9fbiwKICAgICAgIGNvbnN0IG1vdmVf
aXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194KQogICAgeyByZXR1cm4gX194ICsgX19uOyB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgIGlubGluZSBtb3ZlX2l0ZXJhdG9yPF9JdGVy
YXRvcj4KICAgIG1ha2VfbW92ZV9pdGVyYXRvcihfSXRlcmF0b3IgX19pKQogICAgeyByZXR1cm4g
bW92ZV9pdGVyYXRvcjxfSXRlcmF0b3I+KF9faSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0
ZXJhdG9yLCB0eXBlbmFtZSBfUmV0dXJuVHlwZQogICAgPSB0eXBlbmFtZSBjb25kaXRpb25hbDxf
X21vdmVfaWZfbm9leGNlcHRfY29uZAogICAgICA8dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9J
dGVyYXRvcj46OnZhbHVlX3R5cGU+Ojp2YWx1ZSwKICAgICAgICAgICAgICAgIF9JdGVyYXRvciwg
bW92ZV9pdGVyYXRvcjxfSXRlcmF0b3I+Pjo6dHlwZT4KICAgIGlubGluZSBfUmV0dXJuVHlwZQog
ICAgX19tYWtlX21vdmVfaWZfbm9leGNlcHRfaXRlcmF0b3IoX0l0ZXJhdG9yIF9faSkKICAgIHsg
cmV0dXJuIF9SZXR1cm5UeXBlKF9faSk7IH0KCgoKCn0KCiNkZWZpbmUgX0dMSUJDWFhfTUFLRV9N
T1ZFX0lURVJBVE9SKF9JdGVyKSBzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcihfSXRlcikKI2RlZmlu
ZSBfR0xJQkNYWF9NQUtFX01PVkVfSUZfTk9FWENFUFRfSVRFUkFUT1IoX0l0ZXIpIHN0ZDo6X19t
YWtlX21vdmVfaWZfbm9leGNlcHRfaXRlcmF0b3IoX0l0ZXIpCiMgNjggIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnb2Jh
c2UuaCIgMiAzCgoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL3ByZWRlZmluZWRfb3BzLmgiIDEgMwojIDMxICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcHJl
ZGVmaW5lZF9vcHMuaCIgMwojZGVmaW5lIF9HTElCQ1hYX1BSRURFRklORURfT1BTX0ggMQoKbmFt
ZXNwYWNlIF9fZ251X2N4eAp7Cm5hbWVzcGFjZSBfX29wcwp7CiAgc3RydWN0IF9JdGVyX2xlc3Nf
aXRlcgogIHsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcjEsIHR5cGVuYW1lIF9JdGVy
YXRvcjI+CiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3IoKShfSXRlcmF0b3IxIF9faXQxLCBfSXRl
cmF0b3IyIF9faXQyKSBjb25zdAogICAgICB7IHJldHVybiAqX19pdDEgPCAqX19pdDI7IH0KICB9
OwoKICBpbmxpbmUgX0l0ZXJfbGVzc19pdGVyCiAgX19pdGVyX2xlc3NfaXRlcigpCiAgeyByZXR1
cm4gX0l0ZXJfbGVzc19pdGVyKCk7IH0KCiAgc3RydWN0IF9JdGVyX2xlc3NfdmFsCiAgewogICAg
dGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLCB0eXBlbmFtZSBfVmFsdWU+CiAgICAgIGJvb2wK
ICAgICAgb3BlcmF0b3IoKShfSXRlcmF0b3IgX19pdCwgX1ZhbHVlJiBfX3ZhbCkgY29uc3QKICAg
ICAgeyByZXR1cm4gKl9faXQgPCBfX3ZhbDsgfQogICAgfTsKCiAgaW5saW5lIF9JdGVyX2xlc3Nf
dmFsCiAgX19pdGVyX2xlc3NfdmFsKCkKICB7IHJldHVybiBfSXRlcl9sZXNzX3ZhbCgpOyB9Cgog
IGlubGluZSBfSXRlcl9sZXNzX3ZhbAogIF9faXRlcl9jb21wX3ZhbChfSXRlcl9sZXNzX2l0ZXIp
CiAgeyByZXR1cm4gX0l0ZXJfbGVzc192YWwoKTsgfQoKICBzdHJ1Y3QgX1ZhbF9sZXNzX2l0ZXIK
ICB7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFsdWUsIHR5cGVuYW1lIF9JdGVyYXRvcj4KICAg
ICAgYm9vbAogICAgICBvcGVyYXRvcigpKF9WYWx1ZSYgX192YWwsIF9JdGVyYXRvciBfX2l0KSBj
b25zdAogICAgICB7IHJldHVybiBfX3ZhbCA8ICpfX2l0OyB9CiAgICB9OwoKICBpbmxpbmUgX1Zh
bF9sZXNzX2l0ZXIKICBfX3ZhbF9sZXNzX2l0ZXIoKQogIHsgcmV0dXJuIF9WYWxfbGVzc19pdGVy
KCk7IH0KCiAgaW5saW5lIF9WYWxfbGVzc19pdGVyCiAgX192YWxfY29tcF9pdGVyKF9JdGVyX2xl
c3NfaXRlcikKICB7IHJldHVybiBfVmFsX2xlc3NfaXRlcigpOyB9CgogIHN0cnVjdCBfSXRlcl9l
cXVhbF90b19pdGVyCiAgewogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yMSwgdHlwZW5h
bWUgX0l0ZXJhdG9yMj4KICAgICAgYm9vbAogICAgICBvcGVyYXRvcigpKF9JdGVyYXRvcjEgX19p
dDEsIF9JdGVyYXRvcjIgX19pdDIpIGNvbnN0CiAgICAgIHsgcmV0dXJuICpfX2l0MSA9PSAqX19p
dDI7IH0KICAgIH07CgogIGlubGluZSBfSXRlcl9lcXVhbF90b19pdGVyCiAgX19pdGVyX2VxdWFs
X3RvX2l0ZXIoKQogIHsgcmV0dXJuIF9JdGVyX2VxdWFsX3RvX2l0ZXIoKTsgfQoKICBzdHJ1Y3Qg
X0l0ZXJfZXF1YWxfdG9fdmFsCiAgewogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLCB0
eXBlbmFtZSBfVmFsdWU+CiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3IoKShfSXRlcmF0b3IgX19p
dCwgX1ZhbHVlJiBfX3ZhbCkgY29uc3QKICAgICAgeyByZXR1cm4gKl9faXQgPT0gX192YWw7IH0K
ICAgIH07CgogIGlubGluZSBfSXRlcl9lcXVhbF90b192YWwKICBfX2l0ZXJfZXF1YWxfdG9fdmFs
KCkKICB7IHJldHVybiBfSXRlcl9lcXVhbF90b192YWwoKTsgfQoKICBpbmxpbmUgX0l0ZXJfZXF1
YWxfdG9fdmFsCiAgX19pdGVyX2NvbXBfdmFsKF9JdGVyX2VxdWFsX3RvX2l0ZXIpCiAgeyByZXR1
cm4gX0l0ZXJfZXF1YWxfdG9fdmFsKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NvbXBhcmU+
CiAgICBzdHJ1Y3QgX0l0ZXJfY29tcF9pdGVyCiAgICB7CiAgICAgIF9Db21wYXJlIF9NX2NvbXA7
CgogICAgICBfSXRlcl9jb21wX2l0ZXIoX0NvbXBhcmUgX19jb21wKQogOiBfTV9jb21wKF9fY29t
cCkKICAgICAgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3IxLCB0eXBlbmFt
ZSBfSXRlcmF0b3IyPgogICAgICAgIGJvb2wKICAgICAgICBvcGVyYXRvcigpKF9JdGVyYXRvcjEg
X19pdDEsIF9JdGVyYXRvcjIgX19pdDIpCiAgICAgICAgeyByZXR1cm4gYm9vbChfTV9jb21wKCpf
X2l0MSwgKl9faXQyKSk7IH0KICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Db21wYXJlPgog
ICAgaW5saW5lIF9JdGVyX2NvbXBfaXRlcjxfQ29tcGFyZT4KICAgIF9faXRlcl9jb21wX2l0ZXIo
X0NvbXBhcmUgX19jb21wKQogICAgeyByZXR1cm4gX0l0ZXJfY29tcF9pdGVyPF9Db21wYXJlPihf
X2NvbXApOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Db21wYXJlPgogICAgc3RydWN0IF9JdGVy
X2NvbXBfdmFsCiAgICB7CiAgICAgIF9Db21wYXJlIF9NX2NvbXA7CgogICAgICBfSXRlcl9jb21w
X3ZhbChfQ29tcGFyZSBfX2NvbXApCiA6IF9NX2NvbXAoX19jb21wKQogICAgICB7IH0KCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX1ZhbHVlPgogYm9vbAogb3Bl
cmF0b3IoKShfSXRlcmF0b3IgX19pdCwgX1ZhbHVlJiBfX3ZhbCkKIHsgcmV0dXJuIGJvb2woX01f
Y29tcCgqX19pdCwgX192YWwpKTsgfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NvbXBh
cmU+CiAgIGlubGluZSBfSXRlcl9jb21wX3ZhbDxfQ29tcGFyZT4KICAgIF9faXRlcl9jb21wX3Zh
bChfQ29tcGFyZSBfX2NvbXApCiAgICB7IHJldHVybiBfSXRlcl9jb21wX3ZhbDxfQ29tcGFyZT4o
X19jb21wKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlubGluZSBfSXRl
cl9jb21wX3ZhbDxfQ29tcGFyZT4KICAgIF9faXRlcl9jb21wX3ZhbChfSXRlcl9jb21wX2l0ZXI8
X0NvbXBhcmU+IF9fY29tcCkKICAgIHsgcmV0dXJuIF9JdGVyX2NvbXBfdmFsPF9Db21wYXJlPihf
X2NvbXAuX01fY29tcCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NvbXBhcmU+CiAgICBzdHJ1
Y3QgX1ZhbF9jb21wX2l0ZXIKICAgIHsKICAgICAgX0NvbXBhcmUgX01fY29tcDsKCiAgICAgIF9W
YWxfY29tcF9pdGVyKF9Db21wYXJlIF9fY29tcCkKIDogX01fY29tcChfX2NvbXApCiAgICAgIHsg
fQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlLCB0eXBlbmFtZSBfSXRlcmF0b3I+CiBi
b29sCiBvcGVyYXRvcigpKF9WYWx1ZSYgX192YWwsIF9JdGVyYXRvciBfX2l0KQogeyByZXR1cm4g
Ym9vbChfTV9jb21wKF9fdmFsLCAqX19pdCkpOyB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ29tcGFyZT4KICAgIGlubGluZSBfVmFsX2NvbXBfaXRlcjxfQ29tcGFyZT4KICAgIF9fdmFs
X2NvbXBfaXRlcihfQ29tcGFyZSBfX2NvbXApCiAgICB7IHJldHVybiBfVmFsX2NvbXBfaXRlcjxf
Q29tcGFyZT4oX19jb21wKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlu
bGluZSBfVmFsX2NvbXBfaXRlcjxfQ29tcGFyZT4KICAgIF9fdmFsX2NvbXBfaXRlcihfSXRlcl9j
b21wX2l0ZXI8X0NvbXBhcmU+IF9fY29tcCkKICAgIHsgcmV0dXJuIF9WYWxfY29tcF9pdGVyPF9D
b21wYXJlPihfX2NvbXAuX01fY29tcCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlPgog
ICAgc3RydWN0IF9JdGVyX2VxdWFsc192YWwKICAgIHsKICAgICAgX1ZhbHVlJiBfTV92YWx1ZTsK
CiAgICAgIF9JdGVyX2VxdWFsc192YWwoX1ZhbHVlJiBfX3ZhbHVlKQogOiBfTV92YWx1ZShfX3Zh
bHVlKQogICAgICB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KIGJvb2wK
IG9wZXJhdG9yKCkoX0l0ZXJhdG9yIF9faXQpCiB7IHJldHVybiAqX19pdCA9PSBfTV92YWx1ZTsg
fQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlPgogICAgaW5saW5lIF9JdGVyX2Vx
dWFsc192YWw8X1ZhbHVlPgogICAgX19pdGVyX2VxdWFsc192YWwoX1ZhbHVlJiBfX3ZhbCkKICAg
IHsgcmV0dXJuIF9JdGVyX2VxdWFsc192YWw8X1ZhbHVlPihfX3ZhbCk7IH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0l0ZXJhdG9yMT4KICAgIHN0cnVjdCBfSXRlcl9lcXVhbHNfaXRlcgogICAgewog
ICAgICB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3IxPjo6cmVmZXJlbmNl
IF9NX3JlZjsKCiAgICAgIF9JdGVyX2VxdWFsc19pdGVyKF9JdGVyYXRvcjEgX19pdDEpCiA6IF9N
X3JlZigqX19pdDEpCiAgICAgIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9y
Mj4KIGJvb2wKIG9wZXJhdG9yKCkoX0l0ZXJhdG9yMiBfX2l0MikKIHsgcmV0dXJuICpfX2l0MiA9
PSBfTV9yZWY7IH0KICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgIGlu
bGluZSBfSXRlcl9lcXVhbHNfaXRlcjxfSXRlcmF0b3I+CiAgICBfX2l0ZXJfY29tcF9pdGVyKF9J
dGVyX2VxdWFsX3RvX2l0ZXIsIF9JdGVyYXRvciBfX2l0KQogICAgeyByZXR1cm4gX0l0ZXJfZXF1
YWxzX2l0ZXI8X0l0ZXJhdG9yPihfX2l0KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUHJlZGlj
YXRlPgogICAgc3RydWN0IF9JdGVyX3ByZWQKICAgIHsKICAgICAgX1ByZWRpY2F0ZSBfTV9wcmVk
OwoKICAgICAgX0l0ZXJfcHJlZChfUHJlZGljYXRlIF9fcHJlZCkKIDogX01fcHJlZChfX3ByZWQp
CiAgICAgIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogYm9vbAogb3Bl
cmF0b3IoKShfSXRlcmF0b3IgX19pdCkKIHsgcmV0dXJuIGJvb2woX01fcHJlZCgqX19pdCkpOyB9
CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgaW5saW5lIF9JdGVy
X3ByZWQ8X1ByZWRpY2F0ZT4KICAgIF9fcHJlZF9pdGVyKF9QcmVkaWNhdGUgX19wcmVkKQogICAg
eyByZXR1cm4gX0l0ZXJfcHJlZDxfUHJlZGljYXRlPihfX3ByZWQpOyB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9Db21wYXJlLCB0eXBlbmFtZSBfVmFsdWU+CiAgICBzdHJ1Y3QgX0l0ZXJfY29tcF90
b192YWwKICAgIHsKICAgICAgX0NvbXBhcmUgX01fY29tcDsKICAgICAgX1ZhbHVlJiBfTV92YWx1
ZTsKCiAgICAgIF9JdGVyX2NvbXBfdG9fdmFsKF9Db21wYXJlIF9fY29tcCwgX1ZhbHVlJiBfX3Zh
bHVlKQogOiBfTV9jb21wKF9fY29tcCksIF9NX3ZhbHVlKF9fdmFsdWUpCiAgICAgIHsgfQoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogYm9vbAogb3BlcmF0b3IoKShfSXRlcmF0
b3IgX19pdCkKIHsgcmV0dXJuIGJvb2woX01fY29tcCgqX19pdCwgX01fdmFsdWUpKTsgfQogICAg
fTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NvbXBhcmUsIHR5cGVuYW1lIF9WYWx1ZT4KICAgIF9J
dGVyX2NvbXBfdG9fdmFsPF9Db21wYXJlLCBfVmFsdWU+CiAgICBfX2l0ZXJfY29tcF92YWwoX0Nv
bXBhcmUgX19jb21wLCBfVmFsdWUgJl9fdmFsKQogICAgeyByZXR1cm4gX0l0ZXJfY29tcF90b192
YWw8X0NvbXBhcmUsIF9WYWx1ZT4oX19jb21wLCBfX3ZhbCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NvbXBhcmUsIHR5cGVuYW1lIF9JdGVyYXRvcjE+CiAgICBzdHJ1Y3QgX0l0ZXJfY29tcF90
b19pdGVyCiAgICB7CiAgICAgIF9Db21wYXJlIF9NX2NvbXA7CiAgICAgIHR5cGVuYW1lIHN0ZDo6
aXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcjE+OjpyZWZlcmVuY2UgX01fcmVmOwoKICAgICAgX0l0
ZXJfY29tcF90b19pdGVyKF9Db21wYXJlIF9fY29tcCwgX0l0ZXJhdG9yMSBfX2l0MSkKIDogX01f
Y29tcChfX2NvbXApLCBfTV9yZWYoKl9faXQxKQogICAgICB7IH0KCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9JdGVyYXRvcjI+CiBib29sCiBvcGVyYXRvcigpKF9JdGVyYXRvcjIgX19pdDIpCiB7
IHJldHVybiBib29sKF9NX2NvbXAoKl9faXQyLCBfTV9yZWYpKTsgfQogICAgfTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NvbXBhcmUsIHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgIGlubGluZSBfSXRl
cl9jb21wX3RvX2l0ZXI8X0NvbXBhcmUsIF9JdGVyYXRvcj4KICAgIF9faXRlcl9jb21wX2l0ZXIo
X0l0ZXJfY29tcF9pdGVyPF9Db21wYXJlPiBfX2NvbXAsIF9JdGVyYXRvciBfX2l0KQogICAgeyBy
ZXR1cm4gX0l0ZXJfY29tcF90b19pdGVyPF9Db21wYXJlLCBfSXRlcmF0b3I+KF9fY29tcC5fTV9j
b21wLCBfX2l0KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgc3RydWN0
IF9JdGVyX25lZ2F0ZQogICAgewogICAgICBfUHJlZGljYXRlIF9NX3ByZWQ7CgogICAgICBfSXRl
cl9uZWdhdGUoX1ByZWRpY2F0ZSBfX3ByZWQpCiA6IF9NX3ByZWQoX19wcmVkKQogICAgICB7IH0K
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KIGJvb2wKIG9wZXJhdG9yKCkoX0l0
ZXJhdG9yIF9faXQpCiB7IHJldHVybiAhYm9vbChfTV9wcmVkKCpfX2l0KSk7IH0KICAgIH07Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBpbmxpbmUgX0l0ZXJfbmVnYXRlPF9Q
cmVkaWNhdGU+CiAgICBfX25lZ2F0ZShfSXRlcl9wcmVkPF9QcmVkaWNhdGU+IF9fcHJlZCkKICAg
IHsgcmV0dXJuIF9JdGVyX25lZ2F0ZTxfUHJlZGljYXRlPihfX3ByZWQuX01fcHJlZCk7IH0KCn0K
fQojIDcyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDIgMwoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0
ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgojIDExOCAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdv
YmFzZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcjEsIHR5cGVuYW1l
IF9Gb3J3YXJkSXRlcmF0b3IyPgogICAgaW5saW5lIHZvaWQKICAgIGl0ZXJfc3dhcChfRm9yd2Fy
ZEl0ZXJhdG9yMSBfX2EsIF9Gb3J3YXJkSXRlcmF0b3IyIF9fYikKICAgIHsKCiAgICAgCgogICAg
IAojIDE0OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAgICAgIHN3YXAoKl9fYSwgKl9fYik7Cgog
ICAgfQojIDE2NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zv
cndhcmRJdGVyYXRvcjEsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IyPgogICAgX0ZvcndhcmRJ
dGVyYXRvcjIKICAgIHN3YXBfcmFuZ2VzKF9Gb3J3YXJkSXRlcmF0b3IxIF9fZmlyc3QxLCBfRm9y
d2FyZEl0ZXJhdG9yMSBfX2xhc3QxLAogIF9Gb3J3YXJkSXRlcmF0b3IyIF9fZmlyc3QyKQogICAg
ewoKICAgICAKCiAgICAgCgogICAgICA7CgogICAgICBmb3IgKDsgX19maXJzdDEgIT0gX19sYXN0
MTsgKytfX2ZpcnN0MSwgKytfX2ZpcnN0MikKIHN0ZDo6aXRlcl9zd2FwKF9fZmlyc3QxLCBfX2Zp
cnN0Mik7CiAgICAgIHJldHVybiBfX2ZpcnN0MjsKICAgIH0KIyAxOTIgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnb2Jh
c2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBjb25zdCBfVHAmCiAg
ICBtaW4oY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iKQogICAgewoKICAgICAKCiAgICAg
IGlmIChfX2IgPCBfX2EpCiByZXR1cm4gX19iOwogICAgICByZXR1cm4gX19hOwogICAgfQojIDIx
NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5s
aW5lIGNvbnN0IF9UcCYKICAgIG1heChjb25zdCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IpCiAg
ICB7CgogICAgIAoKICAgICAgaWYgKF9fYSA8IF9fYikKIHJldHVybiBfX2I7CiAgICAgIHJldHVy
biBfX2E7CiAgICB9CiMgMjM4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHAsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgaW5saW5lIGNvbnN0IF9UcCYKICAgIG1p
bihjb25zdCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IsIF9Db21wYXJlIF9fY29tcCkKICAgIHsK
CiAgICAgIGlmIChfX2NvbXAoX19iLCBfX2EpKQogcmV0dXJuIF9fYjsKICAgICAgcmV0dXJuIF9f
YTsKICAgIH0KIyAyNTkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgY29uc3QgX1RwJgogICAgbWF4KGNv
bnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYiwgX0NvbXBhcmUgX19jb21wKQogICAgewoKICAg
ICAgaWYgKF9fY29tcChfX2EsIF9fYikpCiByZXR1cm4gX19iOwogICAgICByZXR1cm4gX19hOwog
ICAgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgIHN0cnVjdCBfTml0ZXJf
YmFzZQogICAgOiBfSXRlcl9iYXNlPF9JdGVyYXRvciwgX19pc19ub3JtYWxfaXRlcmF0b3I8X0l0
ZXJhdG9yPjo6X192YWx1ZT4KICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9y
PgogICAgaW5saW5lIHR5cGVuYW1lIF9OaXRlcl9iYXNlPF9JdGVyYXRvcj46Oml0ZXJhdG9yX3R5
cGUKICAgIF9fbml0ZXJfYmFzZShfSXRlcmF0b3IgX19pdCkKICAgIHsgcmV0dXJuIHN0ZDo6X05p
dGVyX2Jhc2U8X0l0ZXJhdG9yPjo6X1NfYmFzZShfX2l0KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0l0ZXJhdG9yPgogICAgc3RydWN0IF9NaXRlcl9iYXNlCiAgICA6IF9JdGVyX2Jhc2U8X0l0
ZXJhdG9yLCBfX2lzX21vdmVfaXRlcmF0b3I8X0l0ZXJhdG9yPjo6X192YWx1ZT4KICAgIHsgfTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogICAgaW5saW5lIHR5cGVuYW1lIF9NaXRl
cl9iYXNlPF9JdGVyYXRvcj46Oml0ZXJhdG9yX3R5cGUKICAgIF9fbWl0ZXJfYmFzZShfSXRlcmF0
b3IgX19pdCkKICAgIHsgcmV0dXJuIHN0ZDo6X01pdGVyX2Jhc2U8X0l0ZXJhdG9yPjo6X1NfYmFz
ZShfX2l0KTsgfQoKCgoKCgoKICB0ZW1wbGF0ZTxib29sLCBib29sLCB0eXBlbmFtZT4KICAgIHN0
cnVjdCBfX2NvcHlfbW92ZQogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUksIHR5cGVu
YW1lIF9PST4KICAgICAgICBzdGF0aWMgX09JCiAgICAgICAgX19jb3B5X20oX0lJIF9fZmlyc3Qs
IF9JSSBfX2xhc3QsIF9PSSBfX3Jlc3VsdCkKICAgICAgICB7CiAgIGZvciAoOyBfX2ZpcnN0ICE9
IF9fbGFzdDsgKytfX3Jlc3VsdCwgKytfX2ZpcnN0KQogICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0
OwogICByZXR1cm4gX19yZXN1bHQ7CiB9CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Nh
dGVnb3J5PgogICAgc3RydWN0IF9fY29weV9tb3ZlPHRydWUsIGZhbHNlLCBfQ2F0ZWdvcnk+CiAg
ICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JSSwgdHlwZW5hbWUgX09JPgogICAgICAgIHN0
YXRpYyBfT0kKICAgICAgICBfX2NvcHlfbShfSUkgX19maXJzdCwgX0lJIF9fbGFzdCwgX09JIF9f
cmVzdWx0KQogICAgICAgIHsKICAgZm9yICg7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fcmVzdWx0
LCArK19fZmlyc3QpCiAgICAgKl9fcmVzdWx0ID0gc3RkOjptb3ZlKCpfX2ZpcnN0KTsKICAgcmV0
dXJuIF9fcmVzdWx0OwogfQogICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2NvcHlf
bW92ZTxmYWxzZSwgZmFsc2UsIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnPgogICAgewogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUksIHR5cGVuYW1lIF9PST4KICAgICAgICBzdGF0aWMgX09J
CiAgICAgICAgX19jb3B5X20oX0lJIF9fZmlyc3QsIF9JSSBfX2xhc3QsIF9PSSBfX3Jlc3VsdCkK
ICAgICAgICB7CiAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JST46OmRpZmZl
cmVuY2VfdHlwZSBfRGlzdGFuY2U7CiAgIGZvcihfRGlzdGFuY2UgX19uID0gX19sYXN0IC0gX19m
aXJzdDsgX19uID4gMDsgLS1fX24pCiAgICAgewogICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Q7
CiAgICAgICArK19fZmlyc3Q7CiAgICAgICArK19fcmVzdWx0OwogICAgIH0KICAgcmV0dXJuIF9f
cmVzdWx0OwogfQogICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2NvcHlfbW92ZTx0
cnVlLCBmYWxzZSwgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWc+CiAgICB7CiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9JSSwgdHlwZW5hbWUgX09JPgogICAgICAgIHN0YXRpYyBfT0kKICAgICAg
ICBfX2NvcHlfbShfSUkgX19maXJzdCwgX0lJIF9fbGFzdCwgX09JIF9fcmVzdWx0KQogICAgICAg
IHsKICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lJPjo6ZGlmZmVyZW5jZV90
eXBlIF9EaXN0YW5jZTsKICAgZm9yKF9EaXN0YW5jZSBfX24gPSBfX2xhc3QgLSBfX2ZpcnN0OyBf
X24gPiAwOyAtLV9fbikKICAgICB7CiAgICAgICAqX19yZXN1bHQgPSBzdGQ6Om1vdmUoKl9fZmly
c3QpOwogICAgICAgKytfX2ZpcnN0OwogICAgICAgKytfX3Jlc3VsdDsKICAgICB9CiAgIHJldHVy
biBfX3Jlc3VsdDsKIH0KICAgIH07CgoKICB0ZW1wbGF0ZTxib29sIF9Jc01vdmU+CiAgICBzdHJ1
Y3QgX19jb3B5X21vdmU8X0lzTW92ZSwgdHJ1ZSwgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWc+
CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICAgICBzdGF0aWMgX1RwKgog
ICAgICAgIF9fY29weV9tKGNvbnN0IF9UcCogX19maXJzdCwgY29uc3QgX1RwKiBfX2xhc3QsIF9U
cCogX19yZXN1bHQpCiAgICAgICAgewoKCiAgIHN0YXRpY19hc3NlcnQoIGlzX2NvcHlfYXNzaWdu
YWJsZTxfVHA+Ojp2YWx1ZSwKICAgICAgICAgICAgICAgICAgInR5cGUgaXMgbm90IGFzc2lnbmFi
bGUiICk7CgogICBjb25zdCBwdHJkaWZmX3QgX051bSA9IF9fbGFzdCAtIF9fZmlyc3Q7CiAgIGlm
IChfTnVtKQogICAgIF9fYnVpbHRpbl9tZW1tb3ZlKF9fcmVzdWx0LCBfX2ZpcnN0LCBzaXplb2Yo
X1RwKSAqIF9OdW0pOwogICByZXR1cm4gX19yZXN1bHQgKyBfTnVtOwogfQogICAgfTsKCiAgdGVt
cGxhdGU8Ym9vbCBfSXNNb3ZlLCB0eXBlbmFtZSBfSUksIHR5cGVuYW1lIF9PST4KICAgIGlubGlu
ZSBfT0kKICAgIF9fY29weV9tb3ZlX2EoX0lJIF9fZmlyc3QsIF9JSSBfX2xhc3QsIF9PSSBfX3Jl
c3VsdCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lJPjo6
dmFsdWVfdHlwZSBfVmFsdWVUeXBlSTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90
cmFpdHM8X09JPjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlTzsKICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBpdGVyYXRvcl90cmFpdHM8X0lJPjo6aXRlcmF0b3JfY2F0ZWdvcnkgX0NhdGVnb3J5OwogICAg
ICBjb25zdCBib29sIF9fc2ltcGxlID0gKF9faXNfdHJpdmlhbChfVmFsdWVUeXBlSSkKICAgICAg
ICAgICAgICAgICAgICAgICYmIF9faXNfcG9pbnRlcjxfSUk+OjpfX3ZhbHVlCiAgICAgICAgICAg
ICAgICAgICAgICAmJiBfX2lzX3BvaW50ZXI8X09JPjo6X192YWx1ZQogICAgICAgICYmIF9fYXJl
X3NhbWU8X1ZhbHVlVHlwZUksIF9WYWx1ZVR5cGVPPjo6X192YWx1ZSk7CgogICAgICByZXR1cm4g
c3RkOjpfX2NvcHlfbW92ZTxfSXNNb3ZlLCBfX3NpbXBsZSwKICAgICAgICAgICAgICAgICAgICAg
ICBfQ2F0ZWdvcnk+OjpfX2NvcHlfbShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0KTsKICAgIH0K
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBzdHJ1Y3QgY2hhcl90cmFpdHM7Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGNsYXNzIGlz
dHJlYW1idWZfaXRlcmF0b3I7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg
X1RyYWl0cz4KICAgIGNsYXNzIG9zdHJlYW1idWZfaXRlcmF0b3I7CgogIHRlbXBsYXRlPGJvb2wg
X0lzTW92ZSwgdHlwZW5hbWUgX0NoYXJUPgogICAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJs
ZV9pZjxfX2lzX2NoYXI8X0NoYXJUPjo6X192YWx1ZSwKICAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRv
cjxfQ2hhclQsIGNoYXJfdHJhaXRzPF9DaGFyVD4gPiA+OjpfX3R5cGUKICAgIF9fY29weV9tb3Zl
X2EyKF9DaGFyVCosIF9DaGFyVCosCiAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQsIGNo
YXJfdHJhaXRzPF9DaGFyVD4gPik7CgogIHRlbXBsYXRlPGJvb2wgX0lzTW92ZSwgdHlwZW5hbWUg
X0NoYXJUPgogICAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2NoYXI8X0No
YXJUPjo6X192YWx1ZSwKICAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQsIGNoYXJfdHJh
aXRzPF9DaGFyVD4gPiA+OjpfX3R5cGUKICAgIF9fY29weV9tb3ZlX2EyKGNvbnN0IF9DaGFyVCos
IGNvbnN0IF9DaGFyVCosCiAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQsIGNoYXJfdHJh
aXRzPF9DaGFyVD4gPik7CgogIHRlbXBsYXRlPGJvb2wgX0lzTW92ZSwgdHlwZW5hbWUgX0NoYXJU
PgogICAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2NoYXI8X0NoYXJUPjo6
X192YWx1ZSwKICAgICAgICBfQ2hhclQqPjo6X190eXBlCiAgICBfX2NvcHlfbW92ZV9hMihpc3Ry
ZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVCwgY2hhcl90cmFpdHM8X0NoYXJUPiA+LAogICAgIGlzdHJl
YW1idWZfaXRlcmF0b3I8X0NoYXJULCBjaGFyX3RyYWl0czxfQ2hhclQ+ID4sIF9DaGFyVCopOwoK
ICB0ZW1wbGF0ZTxib29sIF9Jc01vdmUsIHR5cGVuYW1lIF9JSSwgdHlwZW5hbWUgX09JPgogICAg
aW5saW5lIF9PSQogICAgX19jb3B5X21vdmVfYTIoX0lJIF9fZmlyc3QsIF9JSSBfX2xhc3QsIF9P
SSBfX3Jlc3VsdCkKICAgIHsKICAgICAgcmV0dXJuIF9PSShzdGQ6Ol9fY29weV9tb3ZlX2E8X0lz
TW92ZT4oc3RkOjpfX25pdGVyX2Jhc2UoX19maXJzdCksCiAgICAgICAgICBzdGQ6Ol9fbml0ZXJf
YmFzZShfX2xhc3QpLAogICAgICAgICAgc3RkOjpfX25pdGVyX2Jhc2UoX19yZXN1bHQpKSk7CiAg
ICB9CiMgNDU0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUks
IHR5cGVuYW1lIF9PST4KICAgIGlubGluZSBfT0kKICAgIGNvcHkoX0lJIF9fZmlyc3QsIF9JSSBf
X2xhc3QsIF9PSSBfX3Jlc3VsdCkKICAgIHsKCiAgICAgCiAgICAgCgogICAgICA7CgogICAgICBy
ZXR1cm4gKHN0ZDo6X19jb3B5X21vdmVfYTI8X19pc19tb3ZlX2l0ZXJhdG9yPF9JST46Ol9fdmFs
dWU+CiAgICAgICAoc3RkOjpfX21pdGVyX2Jhc2UoX19maXJzdCksIHN0ZDo6X19taXRlcl9iYXNl
KF9fbGFzdCksCiAgICAgICAgX19yZXN1bHQpKTsKICAgIH0KIyA0ODcgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnb2Jh
c2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSSwgdHlwZW5hbWUgX09JPgogICAgaW5saW5l
IF9PSQogICAgbW92ZShfSUkgX19maXJzdCwgX0lJIF9fbGFzdCwgX09JIF9fcmVzdWx0KQogICAg
ewoKICAgICAKICAgICAKCiAgICAgIDsKCiAgICAgIHJldHVybiBzdGQ6Ol9fY29weV9tb3ZlX2Ey
PHRydWU+KHN0ZDo6X19taXRlcl9iYXNlKF9fZmlyc3QpLAogICAgICAgICAgIHN0ZDo6X19taXRl
cl9iYXNlKF9fbGFzdCksIF9fcmVzdWx0KTsKICAgIH0KCiNkZWZpbmUgX0dMSUJDWFhfTU9WRTMo
X1RwLF9VcCxfVnApIHN0ZDo6bW92ZShfVHAsIF9VcCwgX1ZwKQoKCgoKICB0ZW1wbGF0ZTxib29s
LCBib29sLCB0eXBlbmFtZT4KICAgIHN0cnVjdCBfX2NvcHlfbW92ZV9iYWNrd2FyZAogICAgewog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQkkxLCB0eXBlbmFtZSBfQkkyPgogICAgICAgIHN0YXRp
YyBfQkkyCiAgICAgICAgX19jb3B5X21vdmVfYihfQkkxIF9fZmlyc3QsIF9CSTEgX19sYXN0LCBf
QkkyIF9fcmVzdWx0KQogICAgICAgIHsKICAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KQogICAg
ICotLV9fcmVzdWx0ID0gKi0tX19sYXN0OwogICByZXR1cm4gX19yZXN1bHQ7CiB9CiAgICB9OwoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NhdGVnb3J5PgogICAgc3RydWN0IF9fY29weV9tb3ZlX2Jh
Y2t3YXJkPHRydWUsIGZhbHNlLCBfQ2F0ZWdvcnk+CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9CSTEsIHR5cGVuYW1lIF9CSTI+CiAgICAgICAgc3RhdGljIF9CSTIKICAgICAgICBfX2Nv
cHlfbW92ZV9iKF9CSTEgX19maXJzdCwgX0JJMSBfX2xhc3QsIF9CSTIgX19yZXN1bHQpCiAgICAg
ICAgewogICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpCiAgICAgKi0tX19yZXN1bHQgPSBzdGQ6
Om1vdmUoKi0tX19sYXN0KTsKICAgcmV0dXJuIF9fcmVzdWx0OwogfQogICAgfTsKCgogIHRlbXBs
YXRlPD4KICAgIHN0cnVjdCBfX2NvcHlfbW92ZV9iYWNrd2FyZDxmYWxzZSwgZmFsc2UsIHJhbmRv
bV9hY2Nlc3NfaXRlcmF0b3JfdGFnPgogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQkkx
LCB0eXBlbmFtZSBfQkkyPgogICAgICAgIHN0YXRpYyBfQkkyCiAgICAgICAgX19jb3B5X21vdmVf
YihfQkkxIF9fZmlyc3QsIF9CSTEgX19sYXN0LCBfQkkyIF9fcmVzdWx0KQogICAgICAgIHsKICAg
dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9CSTE+OjpkaWZmZXJlbmNlX3R5cGUgX19uOwogICBm
b3IgKF9fbiA9IF9fbGFzdCAtIF9fZmlyc3Q7IF9fbiA+IDA7IC0tX19uKQogICAgICotLV9fcmVz
dWx0ID0gKi0tX19sYXN0OwogICByZXR1cm4gX19yZXN1bHQ7CiB9CiAgICB9OwoKCiAgdGVtcGxh
dGU8PgogICAgc3RydWN0IF9fY29weV9tb3ZlX2JhY2t3YXJkPHRydWUsIGZhbHNlLCByYW5kb21f
YWNjZXNzX2l0ZXJhdG9yX3RhZz4KICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0JJMSwg
dHlwZW5hbWUgX0JJMj4KICAgICAgICBzdGF0aWMgX0JJMgogICAgICAgIF9fY29weV9tb3ZlX2Io
X0JJMSBfX2ZpcnN0LCBfQkkxIF9fbGFzdCwgX0JJMiBfX3Jlc3VsdCkKICAgICAgICB7CiAgIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfQkkxPjo6ZGlmZmVyZW5jZV90eXBlIF9fbjsKICAgZm9y
IChfX24gPSBfX2xhc3QgLSBfX2ZpcnN0OyBfX24gPiAwOyAtLV9fbikKICAgICAqLS1fX3Jlc3Vs
dCA9IHN0ZDo6bW92ZSgqLS1fX2xhc3QpOwogICByZXR1cm4gX19yZXN1bHQ7CiB9CiAgICB9OwoK
CiAgdGVtcGxhdGU8Ym9vbCBfSXNNb3ZlPgogICAgc3RydWN0IF9fY29weV9tb3ZlX2JhY2t3YXJk
PF9Jc01vdmUsIHRydWUsIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnPgogICAgewogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICAgICAgc3RhdGljIF9UcCoKICAgICAgICBfX2NvcHlf
bW92ZV9iKGNvbnN0IF9UcCogX19maXJzdCwgY29uc3QgX1RwKiBfX2xhc3QsIF9UcCogX19yZXN1
bHQpCiAgICAgICAgewoKCiAgIHN0YXRpY19hc3NlcnQoIGlzX2NvcHlfYXNzaWduYWJsZTxfVHA+
Ojp2YWx1ZSwKICAgICAgICAgICAgICAgICAgInR5cGUgaXMgbm90IGFzc2lnbmFibGUiICk7Cgog
ICBjb25zdCBwdHJkaWZmX3QgX051bSA9IF9fbGFzdCAtIF9fZmlyc3Q7CiAgIGlmIChfTnVtKQog
ICAgIF9fYnVpbHRpbl9tZW1tb3ZlKF9fcmVzdWx0IC0gX051bSwgX19maXJzdCwgc2l6ZW9mKF9U
cCkgKiBfTnVtKTsKICAgcmV0dXJuIF9fcmVzdWx0IC0gX051bTsKIH0KICAgIH07CgogIHRlbXBs
YXRlPGJvb2wgX0lzTW92ZSwgdHlwZW5hbWUgX0JJMSwgdHlwZW5hbWUgX0JJMj4KICAgIGlubGlu
ZSBfQkkyCiAgICBfX2NvcHlfbW92ZV9iYWNrd2FyZF9hKF9CSTEgX19maXJzdCwgX0JJMSBfX2xh
c3QsIF9CSTIgX19yZXN1bHQpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9CSTE+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGUxOwogICAgICB0eXBlZGVmIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfQkkyPjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlMjsKICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0JJMT46Oml0ZXJhdG9yX2NhdGVnb3J5
IF9DYXRlZ29yeTsKICAgICAgY29uc3QgYm9vbCBfX3NpbXBsZSA9IChfX2lzX3RyaXZpYWwoX1Zh
bHVlVHlwZTEpCiAgICAgICAgICAgICAgICAgICAgICAmJiBfX2lzX3BvaW50ZXI8X0JJMT46Ol9f
dmFsdWUKICAgICAgICAgICAgICAgICAgICAgICYmIF9faXNfcG9pbnRlcjxfQkkyPjo6X192YWx1
ZQogICAgICAgICYmIF9fYXJlX3NhbWU8X1ZhbHVlVHlwZTEsIF9WYWx1ZVR5cGUyPjo6X192YWx1
ZSk7CgogICAgICByZXR1cm4gc3RkOjpfX2NvcHlfbW92ZV9iYWNrd2FyZDxfSXNNb3ZlLCBfX3Np
bXBsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQ2F0ZWdvcnk+OjpfX2NvcHlf
bW92ZV9iKF9fZmlyc3QsCiAgICAgICAgIF9fbGFzdCwKICAgICAgICAgX19yZXN1bHQpOwogICAg
fQoKICB0ZW1wbGF0ZTxib29sIF9Jc01vdmUsIHR5cGVuYW1lIF9CSTEsIHR5cGVuYW1lIF9CSTI+
CiAgICBpbmxpbmUgX0JJMgogICAgX19jb3B5X21vdmVfYmFja3dhcmRfYTIoX0JJMSBfX2ZpcnN0
LCBfQkkxIF9fbGFzdCwgX0JJMiBfX3Jlc3VsdCkKICAgIHsKICAgICAgcmV0dXJuIF9CSTIoc3Rk
OjpfX2NvcHlfbW92ZV9iYWNrd2FyZF9hPF9Jc01vdmU+CiAgICAoc3RkOjpfX25pdGVyX2Jhc2Uo
X19maXJzdCksIHN0ZDo6X19uaXRlcl9iYXNlKF9fbGFzdCksCiAgICAgc3RkOjpfX25pdGVyX2Jh
c2UoX19yZXN1bHQpKSk7CiAgICB9CiMgNjI4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQkkxLCB0eXBlbmFtZSBfQkkyPgogICAgaW5saW5lIF9CSTIKICAgIGNv
cHlfYmFja3dhcmQoX0JJMSBfX2ZpcnN0LCBfQkkxIF9fbGFzdCwgX0JJMiBfX3Jlc3VsdCkKICAg
IHsKCiAgICAgCiAgICAgCiAgICAgCgoKICAgICAgOwoKICAgICAgcmV0dXJuIChzdGQ6Ol9fY29w
eV9tb3ZlX2JhY2t3YXJkX2EyPF9faXNfbW92ZV9pdGVyYXRvcjxfQkkxPjo6X192YWx1ZT4KICAg
ICAgIChzdGQ6Ol9fbWl0ZXJfYmFzZShfX2ZpcnN0KSwgc3RkOjpfX21pdGVyX2Jhc2UoX19sYXN0
KSwKICAgICAgICBfX3Jlc3VsdCkpOwogICAgfQojIDY2NCAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvYmFzZS5oIiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JJMSwgdHlwZW5hbWUgX0JJMj4KICAgIGlubGluZSBfQkky
CiAgICBtb3ZlX2JhY2t3YXJkKF9CSTEgX19maXJzdCwgX0JJMSBfX2xhc3QsIF9CSTIgX19yZXN1
bHQpCiAgICB7CgogICAgIAogICAgIAogICAgIAoKCiAgICAgIDsKCiAgICAgIHJldHVybiBzdGQ6
Ol9fY29weV9tb3ZlX2JhY2t3YXJkX2EyPHRydWU+KHN0ZDo6X19taXRlcl9iYXNlKF9fZmlyc3Qp
LAogICAgICBzdGQ6Ol9fbWl0ZXJfYmFzZShfX2xhc3QpLAogICAgICBfX3Jlc3VsdCk7CiAgICB9
CgojZGVmaW5lIF9HTElCQ1hYX01PVkVfQkFDS1dBUkQzKF9UcCxfVXAsX1ZwKSBzdGQ6Om1vdmVf
YmFja3dhcmQoX1RwLCBfVXAsIF9WcCkKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJ
dGVyYXRvciwgdHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHR5cGVuYW1lCiAgICBfX2dudV9jeHg6
Ol9fZW5hYmxlX2lmPCFfX2lzX3NjYWxhcjxfVHA+OjpfX3ZhbHVlLCB2b2lkPjo6X190eXBlCiAg
ICBfX2ZpbGxfYShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19s
YXN0LAogICAgICAgY29uc3QgX1RwJiBfX3ZhbHVlKQogICAgewogICAgICBmb3IgKDsgX19maXJz
dCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICpfX2ZpcnN0ID0gX192YWx1ZTsKICAgIH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgogICAgaW5saW5l
IHR5cGVuYW1lCiAgICBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfc2NhbGFyPF9UcD46Ol9f
dmFsdWUsIHZvaWQ+OjpfX3R5cGUKICAgIF9fZmlsbF9hKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJz
dCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgIGNvbnN0IF9UcCYgX192YWx1ZSkKICAg
IHsKICAgICAgY29uc3QgX1RwIF9fdG1wID0gX192YWx1ZTsKICAgICAgZm9yICg7IF9fZmlyc3Qg
IT0gX19sYXN0OyArK19fZmlyc3QpCiAqX19maXJzdCA9IF9fdG1wOwogICAgfQoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHR5cGVuYW1lCiAgICBfX2dudV9jeHg6Ol9fZW5h
YmxlX2lmPF9faXNfYnl0ZTxfVHA+OjpfX3ZhbHVlLCB2b2lkPjo6X190eXBlCiAgICBfX2ZpbGxf
YShfVHAqIF9fZmlyc3QsIF9UcCogX19sYXN0LCBjb25zdCBfVHAmIF9fYykKICAgIHsKICAgICAg
Y29uc3QgX1RwIF9fdG1wID0gX19jOwogICAgICBpZiAoY29uc3Qgc2l6ZV90IF9fbGVuID0gX19s
YXN0IC0gX19maXJzdCkKIF9fYnVpbHRpbl9tZW1zZXQoX19maXJzdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oX190bXApLCBfX2xlbik7CiAgICB9CiMgNzMwICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ29iYXNl
LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+
CiAgICBpbmxpbmUgdm9pZAogICAgZmlsbChfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3
YXJkSXRlcmF0b3IgX19sYXN0LCBjb25zdCBfVHAmIF9fdmFsdWUpCiAgICB7CgogICAgIAoKICAg
ICAgOwoKICAgICAgc3RkOjpfX2ZpbGxfYShzdGQ6Ol9fbml0ZXJfYmFzZShfX2ZpcnN0KSwgc3Rk
OjpfX25pdGVyX2Jhc2UoX19sYXN0KSwKICAgICAgX192YWx1ZSk7CiAgICB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgX1NpemUsIHR5cGVuYW1lIF9UcD4K
ICAgIGlubGluZSB0eXBlbmFtZQogICAgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjwhX19pc19zY2Fs
YXI8X1RwPjo6X192YWx1ZSwgX091dHB1dEl0ZXJhdG9yPjo6X190eXBlCiAgICBfX2ZpbGxfbl9h
KF9PdXRwdXRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6ZSBfX24sIGNvbnN0IF9UcCYgX192YWx1ZSkK
ICAgIHsKICAgICAgZm9yIChfX2RlY2x0eXBlKF9fbiArIDApIF9fbml0ZXIgPSBfX247CiAgICBf
X25pdGVyID4gMDsgLS1fX25pdGVyLCArK19fZmlyc3QpCiAqX19maXJzdCA9IF9fdmFsdWU7CiAg
ICAgIHJldHVybiBfX2ZpcnN0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfT3V0cHV0SXRl
cmF0b3IsIHR5cGVuYW1lIF9TaXplLCB0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdHlwZW5hbWUK
ICAgIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19zY2FsYXI8X1RwPjo6X192YWx1ZSwgX091
dHB1dEl0ZXJhdG9yPjo6X190eXBlCiAgICBfX2ZpbGxfbl9hKF9PdXRwdXRJdGVyYXRvciBfX2Zp
cnN0LCBfU2l6ZSBfX24sIGNvbnN0IF9UcCYgX192YWx1ZSkKICAgIHsKICAgICAgY29uc3QgX1Rw
IF9fdG1wID0gX192YWx1ZTsKICAgICAgZm9yIChfX2RlY2x0eXBlKF9fbiArIDApIF9fbml0ZXIg
PSBfX247CiAgICBfX25pdGVyID4gMDsgLS1fX25pdGVyLCArK19fZmlyc3QpCiAqX19maXJzdCA9
IF9fdG1wOwogICAgICByZXR1cm4gX19maXJzdDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1NpemUsIHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSB0eXBlbmFtZQogICAgX19nbnVfY3h4Ojpf
X2VuYWJsZV9pZjxfX2lzX2J5dGU8X1RwPjo6X192YWx1ZSwgX1RwKj46Ol9fdHlwZQogICAgX19m
aWxsX25fYShfVHAqIF9fZmlyc3QsIF9TaXplIF9fbiwgY29uc3QgX1RwJiBfX2MpCiAgICB7CiAg
ICAgIHN0ZDo6X19maWxsX2EoX19maXJzdCwgX19maXJzdCArIF9fbiwgX19jKTsKICAgICAgcmV0
dXJuIF9fZmlyc3QgKyBfX247CiAgICB9CiMgNzkwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfT0ksIHR5cGVuYW1lIF9TaXplLCB0eXBlbmFtZSBfVHA+CiAgICBp
bmxpbmUgX09JCiAgICBmaWxsX24oX09JIF9fZmlyc3QsIF9TaXplIF9fbiwgY29uc3QgX1RwJiBf
X3ZhbHVlKQogICAgewoKICAgICAKCiAgICAgIHJldHVybiBfT0koc3RkOjpfX2ZpbGxfbl9hKHN0
ZDo6X19uaXRlcl9iYXNlKF9fZmlyc3QpLCBfX24sIF9fdmFsdWUpKTsKICAgIH0KCiAgdGVtcGxh
dGU8Ym9vbCBfQm9vbFR5cGU+CiAgICBzdHJ1Y3QgX19lcXVhbAogICAgewogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSUkxLCB0eXBlbmFtZSBfSUkyPgogICAgICAgIHN0YXRpYyBib29sCiAgICAg
ICAgZXF1YWwoX0lJMSBfX2ZpcnN0MSwgX0lJMSBfX2xhc3QxLCBfSUkyIF9fZmlyc3QyKQogICAg
ICAgIHsKICAgZm9yICg7IF9fZmlyc3QxICE9IF9fbGFzdDE7ICsrX19maXJzdDEsICsrX19maXJz
dDIpCiAgICAgaWYgKCEoKl9fZmlyc3QxID09ICpfX2ZpcnN0MikpCiAgICAgICByZXR1cm4gZmFs
c2U7CiAgIHJldHVybiB0cnVlOwogfQogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9f
ZXF1YWw8dHJ1ZT4KICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgICAgIHN0
YXRpYyBib29sCiAgICAgICAgZXF1YWwoY29uc3QgX1RwKiBfX2ZpcnN0MSwgY29uc3QgX1RwKiBf
X2xhc3QxLCBjb25zdCBfVHAqIF9fZmlyc3QyKQogICAgICAgIHsKICAgaWYgKGNvbnN0IHNpemVf
dCBfX2xlbiA9IChfX2xhc3QxIC0gX19maXJzdDEpKQogICAgIHJldHVybiAhX19idWlsdGluX21l
bWNtcChfX2ZpcnN0MSwgX19maXJzdDIsIHNpemVvZihfVHApICogX19sZW4pOwogICByZXR1cm4g
dHJ1ZTsKIH0KICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSTEsIHR5cGVuYW1lIF9JSTI+
CiAgICBpbmxpbmUgYm9vbAogICAgX19lcXVhbF9hdXgoX0lJMSBfX2ZpcnN0MSwgX0lJMSBfX2xh
c3QxLCBfSUkyIF9fZmlyc3QyKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfSUkxPjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlMTsKICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBpdGVyYXRvcl90cmFpdHM8X0lJMj46OnZhbHVlX3R5cGUgX1ZhbHVlVHlwZTI7CiAgICAg
IGNvbnN0IGJvb2wgX19zaW1wbGUgPSAoKF9faXNfaW50ZWdlcjxfVmFsdWVUeXBlMT46Ol9fdmFs
dWUKICAgICAgICAgfHwgX19pc19wb2ludGVyPF9WYWx1ZVR5cGUxPjo6X192YWx1ZSkKICAgICAg
ICAgICAgICAgICAgICAgICYmIF9faXNfcG9pbnRlcjxfSUkxPjo6X192YWx1ZQogICAgICAgICAg
ICAgICAgICAgICAgJiYgX19pc19wb2ludGVyPF9JSTI+OjpfX3ZhbHVlCiAgICAgICAgJiYgX19h
cmVfc2FtZTxfVmFsdWVUeXBlMSwgX1ZhbHVlVHlwZTI+OjpfX3ZhbHVlKTsKCiAgICAgIHJldHVy
biBzdGQ6Ol9fZXF1YWw8X19zaW1wbGU+OjplcXVhbChfX2ZpcnN0MSwgX19sYXN0MSwgX19maXJz
dDIpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+CiAgICBzdHJ1Y3QgX19s
Y19yYWkKICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJMSwgdHlwZW5hbWUgX0lJMj4K
ICAgICAgICBzdGF0aWMgX0lJMQogICAgICAgIF9fbmV3bGFzdDEoX0lJMSwgX0lJMSBfX2xhc3Qx
LCBfSUkyLCBfSUkyKQogICAgICAgIHsgcmV0dXJuIF9fbGFzdDE7IH0KCiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9JST4KICAgICAgICBzdGF0aWMgYm9vbAogICAgICAgIF9fY25kMihfSUkgX19m
aXJzdCwgX0lJIF9fbGFzdCkKICAgICAgICB7IHJldHVybiBfX2ZpcnN0ICE9IF9fbGFzdDsgfQog
ICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fbGNfcmFpPHJhbmRvbV9hY2Nlc3NfaXRl
cmF0b3JfdGFnLCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZz4KICAgIHsKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1JBSTEsIHR5cGVuYW1lIF9SQUkyPgogICAgICAgIHN0YXRpYyBfUkFJMQog
ICAgICAgIF9fbmV3bGFzdDEoX1JBSTEgX19maXJzdDEsIF9SQUkxIF9fbGFzdDEsCiAgICAgX1JB
STIgX19maXJzdDIsIF9SQUkyIF9fbGFzdDIpCiAgICAgICAgewogICBjb25zdCB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X1JBSTE+OjpkaWZmZXJlbmNlX3R5cGUKICAgICBfX2RpZmYxID0gX19s
YXN0MSAtIF9fZmlyc3QxOwogICBjb25zdCB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JBSTI+
OjpkaWZmZXJlbmNlX3R5cGUKICAgICBfX2RpZmYyID0gX19sYXN0MiAtIF9fZmlyc3QyOwogICBy
ZXR1cm4gX19kaWZmMiA8IF9fZGlmZjEgPyBfX2ZpcnN0MSArIF9fZGlmZjIgOiBfX2xhc3QxOwog
fQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JBST4KICAgICAgICBzdGF0aWMgYm9vbAogICAg
ICAgIF9fY25kMihfUkFJLCBfUkFJKQogICAgICAgIHsgcmV0dXJuIHRydWU7IH0KICAgIH07Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9JSTEsIHR5cGVuYW1lIF9JSTIsIHR5cGVuYW1lIF9Db21wYXJl
PgogICAgYm9vbAogICAgX19sZXhpY29ncmFwaGljYWxfY29tcGFyZV9pbXBsKF9JSTEgX19maXJz
dDEsIF9JSTEgX19sYXN0MSwKICAgICAgIF9JSTIgX19maXJzdDIsIF9JSTIgX19sYXN0MiwKICAg
ICAgIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRv
cl90cmFpdHM8X0lJMT46Oml0ZXJhdG9yX2NhdGVnb3J5IF9DYXRlZ29yeTE7CiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JSTI+OjppdGVyYXRvcl9jYXRlZ29yeSBfQ2F0
ZWdvcnkyOwogICAgICB0eXBlZGVmIHN0ZDo6X19sY19yYWk8X0NhdGVnb3J5MSwgX0NhdGVnb3J5
Mj4gX19yYWlfdHlwZTsKCiAgICAgIF9fbGFzdDEgPSBfX3JhaV90eXBlOjpfX25ld2xhc3QxKF9f
Zmlyc3QxLCBfX2xhc3QxLCBfX2ZpcnN0MiwgX19sYXN0Mik7CiAgICAgIGZvciAoOyBfX2ZpcnN0
MSAhPSBfX2xhc3QxICYmIF9fcmFpX3R5cGU6Ol9fY25kMihfX2ZpcnN0MiwgX19sYXN0Mik7CiAg
ICArK19fZmlyc3QxLCArK19fZmlyc3QyKQogewogICBpZiAoX19jb21wKF9fZmlyc3QxLCBfX2Zp
cnN0MikpCiAgICAgcmV0dXJuIHRydWU7CiAgIGlmIChfX2NvbXAoX19maXJzdDIsIF9fZmlyc3Qx
KSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAgIHJldHVybiBfX2ZpcnN0MSA9PSBfX2xhc3Qx
ICYmIF9fZmlyc3QyICE9IF9fbGFzdDI7CiAgICB9CgogIHRlbXBsYXRlPGJvb2wgX0Jvb2xUeXBl
PgogICAgc3RydWN0IF9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUKICAgIHsKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX0lJMSwgdHlwZW5hbWUgX0lJMj4KICAgICAgICBzdGF0aWMgYm9vbCBfX2xj
KF9JSTEsIF9JSTEsIF9JSTIsIF9JSTIpOwogICAgfTsKCiAgdGVtcGxhdGU8Ym9vbCBfQm9vbFR5
cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUkxLCB0eXBlbmFtZSBfSUkyPgogICAgICBib29s
CiAgICAgIF9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmU8X0Jvb2xUeXBlPjo6CiAgICAgIF9fbGMo
X0lJMSBfX2ZpcnN0MSwgX0lJMSBfX2xhc3QxLCBfSUkyIF9fZmlyc3QyLCBfSUkyIF9fbGFzdDIp
CiAgICAgIHsKIHJldHVybiBzdGQ6Ol9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfaW1wbChfX2Zp
cnN0MSwgX19sYXN0MSwKICAgICAgICAgX19maXJzdDIsIF9fbGFzdDIsCiAgICAgX19nbnVfY3h4
OjpfX29wczo6X19pdGVyX2xlc3NfaXRlcigpKTsKICAgICAgfQoKICB0ZW1wbGF0ZTw+CiAgICBz
dHJ1Y3QgX19sZXhpY29ncmFwaGljYWxfY29tcGFyZTx0cnVlPgogICAgewogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9VcD4KICAgICAgICBzdGF0aWMgYm9vbAogICAgICAg
IF9fbGMoY29uc3QgX1RwKiBfX2ZpcnN0MSwgY29uc3QgX1RwKiBfX2xhc3QxLAogICAgICBjb25z
dCBfVXAqIF9fZmlyc3QyLCBjb25zdCBfVXAqIF9fbGFzdDIpCiB7CiAgIGNvbnN0IHNpemVfdCBf
X2xlbjEgPSBfX2xhc3QxIC0gX19maXJzdDE7CiAgIGNvbnN0IHNpemVfdCBfX2xlbjIgPSBfX2xh
c3QyIC0gX19maXJzdDI7CiAgIGlmIChjb25zdCBzaXplX3QgX19sZW4gPSBzdGQ6Om1pbihfX2xl
bjEsIF9fbGVuMikpCiAgICAgaWYgKGludCBfX3Jlc3VsdCA9IF9fYnVpbHRpbl9tZW1jbXAoX19m
aXJzdDEsIF9fZmlyc3QyLCBfX2xlbikpCiAgICAgICByZXR1cm4gX19yZXN1bHQgPCAwOwogICBy
ZXR1cm4gX19sZW4xIDwgX19sZW4yOwogfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJ
MSwgdHlwZW5hbWUgX0lJMj4KICAgIGlubGluZSBib29sCiAgICBfX2xleGljb2dyYXBoaWNhbF9j
b21wYXJlX2F1eChfSUkxIF9fZmlyc3QxLCBfSUkxIF9fbGFzdDEsCiAgICAgIF9JSTIgX19maXJz
dDIsIF9JSTIgX19sYXN0MikKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90
cmFpdHM8X0lJMT46OnZhbHVlX3R5cGUgX1ZhbHVlVHlwZTE7CiAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgaXRlcmF0b3JfdHJhaXRzPF9JSTI+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGUyOwogICAgICBj
b25zdCBib29sIF9fc2ltcGxlID0KIChfX2lzX2J5dGU8X1ZhbHVlVHlwZTE+OjpfX3ZhbHVlICYm
IF9faXNfYnl0ZTxfVmFsdWVUeXBlMj46Ol9fdmFsdWUKICAmJiAhX19nbnVfY3h4OjpfX251bWVy
aWNfdHJhaXRzPF9WYWx1ZVR5cGUxPjo6X19pc19zaWduZWQKICAmJiAhX19nbnVfY3h4OjpfX251
bWVyaWNfdHJhaXRzPF9WYWx1ZVR5cGUyPjo6X19pc19zaWduZWQKICAmJiBfX2lzX3BvaW50ZXI8
X0lJMT46Ol9fdmFsdWUKICAmJiBfX2lzX3BvaW50ZXI8X0lJMj46Ol9fdmFsdWUpOwoKICAgICAg
cmV0dXJuIHN0ZDo6X19sZXhpY29ncmFwaGljYWxfY29tcGFyZTxfX3NpbXBsZT46Ol9fbGMoX19m
aXJzdDEsIF9fbGFzdDEsCiAgICAgICAgICAgX19maXJzdDIsIF9fbGFzdDIpOwogICAgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1l
IF9Db21wYXJlPgogICAgX0ZvcndhcmRJdGVyYXRvcgogICAgX19sb3dlcl9ib3VuZChfRm9yd2Fy
ZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgY29uc3QgX1Rw
JiBfX3ZhbCwgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiBfRGlzdGFu
Y2VUeXBlOwoKICAgICAgX0Rpc3RhbmNlVHlwZSBfX2xlbiA9IHN0ZDo6ZGlzdGFuY2UoX19maXJz
dCwgX19sYXN0KTsKCiAgICAgIHdoaWxlIChfX2xlbiA+IDApCiB7CiAgIF9EaXN0YW5jZVR5cGUg
X19oYWxmID0gX19sZW4gPj4gMTsKICAgX0ZvcndhcmRJdGVyYXRvciBfX21pZGRsZSA9IF9fZmly
c3Q7CiAgIHN0ZDo6YWR2YW5jZShfX21pZGRsZSwgX19oYWxmKTsKICAgaWYgKF9fY29tcChfX21p
ZGRsZSwgX192YWwpKQogICAgIHsKICAgICAgIF9fZmlyc3QgPSBfX21pZGRsZTsKICAgICAgICsr
X19maXJzdDsKICAgICAgIF9fbGVuID0gX19sZW4gLSBfX2hhbGYgLSAxOwogICAgIH0KICAgZWxz
ZQogICAgIF9fbGVuID0gX19oYWxmOwogfQogICAgICByZXR1cm4gX19maXJzdDsKICAgIH0KIyA5
OTAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRl
cmF0b3IsIHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBfRm9yd2FyZEl0ZXJhdG9yCiAgICBsb3dl
cl9ib3VuZChfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0
LAogIGNvbnN0IF9UcCYgX192YWwpCiAgICB7CgogICAgIAogICAgIAoKICAgICAgOwoKICAgICAg
cmV0dXJuIHN0ZDo6X19sb3dlcl9ib3VuZChfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsLAogICAgX19n
bnVfY3h4OjpfX29wczo6X19pdGVyX2xlc3NfdmFsKCkpOwogICAgfQoKCgogIGlubGluZSBjb25z
dGV4cHIgaW50CiAgX19sZyhpbnQgX19uKQogIHsgcmV0dXJuIHNpemVvZihpbnQpICogOCAtIDEg
LSBfX2J1aWx0aW5fY2x6KF9fbik7IH0KCiAgaW5saW5lIGNvbnN0ZXhwciB1bnNpZ25lZAogIF9f
bGcodW5zaWduZWQgX19uKQogIHsgcmV0dXJuIHNpemVvZihpbnQpICogOCAtIDEgLSBfX2J1aWx0
aW5fY2x6KF9fbik7IH0KCiAgaW5saW5lIGNvbnN0ZXhwciBsb25nCiAgX19sZyhsb25nIF9fbikK
ICB7IHJldHVybiBzaXplb2YobG9uZykgKiA4IC0gMSAtIF9fYnVpbHRpbl9jbHpsKF9fbik7IH0K
CiAgaW5saW5lIGNvbnN0ZXhwciB1bnNpZ25lZCBsb25nCiAgX19sZyh1bnNpZ25lZCBsb25nIF9f
bikKICB7IHJldHVybiBzaXplb2YobG9uZykgKiA4IC0gMSAtIF9fYnVpbHRpbl9jbHpsKF9fbik7
IH0KCiAgaW5saW5lIGNvbnN0ZXhwciBsb25nIGxvbmcKICBfX2xnKGxvbmcgbG9uZyBfX24pCiAg
eyByZXR1cm4gc2l6ZW9mKGxvbmcgbG9uZykgKiA4IC0gMSAtIF9fYnVpbHRpbl9jbHpsbChfX24p
OyB9CgogIGlubGluZSBjb25zdGV4cHIgdW5zaWduZWQgbG9uZyBsb25nCiAgX19sZyh1bnNpZ25l
ZCBsb25nIGxvbmcgX19uKQogIHsgcmV0dXJuIHNpemVvZihsb25nIGxvbmcpICogOCAtIDEgLSBf
X2J1aWx0aW5fY2x6bGwoX19uKTsgfQoKCgoKIyAxMDQ3ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUkxLCB0eXBlbmFtZSBfSUkyPgogICAgaW5saW5lIGJvb2wK
ICAgIGVxdWFsKF9JSTEgX19maXJzdDEsIF9JSTEgX19sYXN0MSwgX0lJMiBfX2ZpcnN0MikKICAg
IHsKCiAgICAgCiAgICAgCiAgICAgCgoKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19lcXVh
bF9hdXgoc3RkOjpfX25pdGVyX2Jhc2UoX19maXJzdDEpLAogICAgICAgICBzdGQ6Ol9fbml0ZXJf
YmFzZShfX2xhc3QxKSwKICAgICAgICAgc3RkOjpfX25pdGVyX2Jhc2UoX19maXJzdDIpKTsKICAg
IH0KIyAxMDc5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0
ZXIxLCB0eXBlbmFtZSBfSUl0ZXIyLCB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAgaW5s
aW5lIGJvb2wKICAgIGVxdWFsKF9JSXRlcjEgX19maXJzdDEsIF9JSXRlcjEgX19sYXN0MSwKICAg
X0lJdGVyMiBfX2ZpcnN0MiwgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkKQogICAgewoK
ICAgICAKICAgICAKICAgICAgOwoKICAgICAgZm9yICg7IF9fZmlyc3QxICE9IF9fbGFzdDE7ICsr
X19maXJzdDEsICsrX19maXJzdDIpCiBpZiAoIWJvb2woX19iaW5hcnlfcHJlZCgqX19maXJzdDEs
ICpfX2ZpcnN0MikpKQogICByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoj
IDEyMDcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSTEsIHR5
cGVuYW1lIF9JSTI+CiAgICBpbmxpbmUgYm9vbAogICAgbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUo
X0lJMSBfX2ZpcnN0MSwgX0lJMSBfX2xhc3QxLAogICAgICAgX0lJMiBfX2ZpcnN0MiwgX0lJMiBf
X2xhc3QyKQogICAgewoKCgoKCiAgICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAgIDsKICAgICAg
OwoKICAgICAgcmV0dXJuIHN0ZDo6X19sZXhpY29ncmFwaGljYWxfY29tcGFyZV9hdXgoc3RkOjpf
X25pdGVyX2Jhc2UoX19maXJzdDEpLAogICAgICBzdGQ6Ol9fbml0ZXJfYmFzZShfX2xhc3QxKSwK
ICAgICAgc3RkOjpfX25pdGVyX2Jhc2UoX19maXJzdDIpLAogICAgICBzdGQ6Ol9fbml0ZXJfYmFz
ZShfX2xhc3QyKSk7CiAgICB9CiMgMTI0MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0lJMSwgdHlwZW5hbWUgX0lJMiwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBp
bmxpbmUgYm9vbAogICAgbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUoX0lJMSBfX2ZpcnN0MSwgX0lJ
MSBfX2xhc3QxLAogICAgICAgX0lJMiBfX2ZpcnN0MiwgX0lJMiBfX2xhc3QyLCBfQ29tcGFyZSBf
X2NvbXApCiAgICB7CgogICAgIAogICAgIAogICAgICA7CiAgICAgIDsKCiAgICAgIHJldHVybiBz
dGQ6Ol9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfaW1wbAogKF9fZmlyc3QxLCBfX2xhc3QxLCBf
X2ZpcnN0MiwgX19sYXN0MiwKICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfY29tcF9pdGVyKF9f
Y29tcCkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVu
YW1lIF9JbnB1dEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+CiAgICBw
YWlyPF9JbnB1dEl0ZXJhdG9yMSwgX0lucHV0SXRlcmF0b3IyPgogICAgX19taXNtYXRjaChfSW5w
dXRJdGVyYXRvcjEgX19maXJzdDEsIF9JbnB1dEl0ZXJhdG9yMSBfX2xhc3QxLAogICAgICAgIF9J
bnB1dEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkKQog
ICAgewogICAgICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2JpbmFyeV9wcmVkKF9f
Zmlyc3QxLCBfX2ZpcnN0MikpCiAgICAgICAgewogICArK19fZmlyc3QxOwogICArK19fZmlyc3Qy
OwogICAgICAgIH0KICAgICAgcmV0dXJuIHBhaXI8X0lucHV0SXRlcmF0b3IxLCBfSW5wdXRJdGVy
YXRvcjI+KF9fZmlyc3QxLCBfX2ZpcnN0Mik7CiAgICB9CiMgMTI4NiAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvYmFz
ZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5w
dXRJdGVyYXRvcjI+CiAgICBpbmxpbmUgcGFpcjxfSW5wdXRJdGVyYXRvcjEsIF9JbnB1dEl0ZXJh
dG9yMj4KICAgIG1pc21hdGNoKF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0
b3IxIF9fbGFzdDEsCiAgICAgIF9JbnB1dEl0ZXJhdG9yMiBfX2ZpcnN0MikKICAgIHsKCiAgICAg
CiAgICAgCiAgICAgCgoKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19taXNtYXRjaChfX2Zp
cnN0MSwgX19sYXN0MSwgX19maXJzdDIsCiAgICAgICAgX19nbnVfY3h4OjpfX29wczo6X19pdGVy
X2VxdWFsX3RvX2l0ZXIoKSk7CiAgICB9CiMgMTMxOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRv
cjIsCiAgICB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAgaW5saW5lIHBhaXI8X0lucHV0
SXRlcmF0b3IxLCBfSW5wdXRJdGVyYXRvcjI+CiAgICBtaXNtYXRjaChfSW5wdXRJdGVyYXRvcjEg
X19maXJzdDEsIF9JbnB1dEl0ZXJhdG9yMSBfX2xhc3QxLAogICAgICBfSW5wdXRJdGVyYXRvcjIg
X19maXJzdDIsIF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCkKICAgIHsKCiAgICAgCiAg
ICAgCiAgICAgIDsKCiAgICAgIHJldHVybiBzdGQ6Ol9fbWlzbWF0Y2goX19maXJzdDEsIF9fbGFz
dDEsIF9fZmlyc3QyLAogX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2NvbXBfaXRlcihfX2JpbmFy
eV9wcmVkKSk7CiAgICB9CiMgMTQxOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCgp9CiMgNjMgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvbWVt
b3J5IiAyIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2JpdHMvYWxsb2NhdG9yLmgiIDEgMwojIDQ0ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYWxsb2NhdG9yLmgi
IDMKI2RlZmluZSBfQUxMT0NBVE9SX0ggMQoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9i
aXRzL2MrK2FsbG9jYXRvci5oIiAxIDMKIyAzMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvYml0
cy9jKythbGxvY2F0b3IuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0NYWF9BTExPQ0FUT1JfSCAxCgoj
IDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvZXh0L25ld19hbGxvY2F0b3IuaCIgMSAzCiMgMzAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvZXh0L25ld19hbGxvY2F0b3IuaCIgMwoj
ZGVmaW5lIF9ORVdfQUxMT0NBVE9SX0ggMQojIDQwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2V4dC9uZXdfYWxsb2NhdG9yLmgiIDMKbmFt
ZXNwYWNlIF9fZ251X2N4eCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0
IikpKQp7CgoKICB1c2luZyBzdGQ6OnNpemVfdDsKICB1c2luZyBzdGQ6OnB0cmRpZmZfdDsKIyA1
NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9leHQvbmV3X2FsbG9jYXRvci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY2xh
c3MgbmV3X2FsbG9jYXRvcgogICAgewogICAgcHVibGljOgogICAgICB0eXBlZGVmIHNpemVfdCBz
aXplX3R5cGU7CiAgICAgIHR5cGVkZWYgcHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKICAgICAg
dHlwZWRlZiBfVHAqIHBvaW50ZXI7CiAgICAgIHR5cGVkZWYgY29uc3QgX1RwKiBjb25zdF9wb2lu
dGVyOwogICAgICB0eXBlZGVmIF9UcCYgcmVmZXJlbmNlOwogICAgICB0eXBlZGVmIGNvbnN0IF9U
cCYgY29uc3RfcmVmZXJlbmNlOwogICAgICB0eXBlZGVmIF9UcCB2YWx1ZV90eXBlOwoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KICAgICAgICBzdHJ1Y3QgcmViaW5kCiAgICAgICAgeyB0
eXBlZGVmIG5ld19hbGxvY2F0b3I8X1RwMT4gb3RoZXI7IH07CgoKCgogICAgICB0eXBlZGVmIHN0
ZDo6dHJ1ZV90eXBlIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfbW92ZV9hc3NpZ25tZW50OwoKCiAg
ICAgIG5ld19hbGxvY2F0b3IoKSBub2V4Y2VwdCB7IH0KCiAgICAgIG5ld19hbGxvY2F0b3IoY29u
c3QgbmV3X2FsbG9jYXRvciYpIG5vZXhjZXB0IHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwMT4KICAgICAgICBuZXdfYWxsb2NhdG9yKGNvbnN0IG5ld19hbGxvY2F0b3I8X1RwMT4mKSBu
b2V4Y2VwdCB7IH0KCiAgICAgIH5uZXdfYWxsb2NhdG9yKCkgbm9leGNlcHQgeyB9CgogICAgICBw
b2ludGVyCiAgICAgIGFkZHJlc3MocmVmZXJlbmNlIF9feCkgY29uc3Qgbm9leGNlcHQKICAgICAg
eyByZXR1cm4gc3RkOjpfX2FkZHJlc3NvZihfX3gpOyB9CgogICAgICBjb25zdF9wb2ludGVyCiAg
ICAgIGFkZHJlc3MoY29uc3RfcmVmZXJlbmNlIF9feCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gc3RkOjpfX2FkZHJlc3NvZihfX3gpOyB9CgoKCiAgICAgIHBvaW50ZXIKICAgICAgYWxs
b2NhdGUoc2l6ZV90eXBlIF9fbiwgY29uc3Qgdm9pZCogPSAwKQogICAgICB7CiBpZiAoX19uID4g
dGhpcy0+bWF4X3NpemUoKSkKICAgc3RkOjpfX3Rocm93X2JhZF9hbGxvYygpOwoKIHJldHVybiBz
dGF0aWNfY2FzdDxfVHAqPig6Om9wZXJhdG9yIG5ldyhfX24gKiBzaXplb2YoX1RwKSkpOwogICAg
ICB9CgoKICAgICAgdm9pZAogICAgICBkZWFsbG9jYXRlKHBvaW50ZXIgX19wLCBzaXplX3R5cGUp
CiAgICAgIHsgOjpvcGVyYXRvciBkZWxldGUoX19wKTsgfQoKICAgICAgc2l6ZV90eXBlCiAgICAg
IG1heF9zaXplKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc2l6ZV90KC0xKSAvIHNp
emVvZihfVHApOyB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VwLCB0eXBlbmFtZS4uLiBf
QXJncz4KICAgICAgICB2b2lkCiAgICAgICAgY29uc3RydWN0KF9VcCogX19wLCBfQXJncyYmLi4u
IF9fYXJncykKIHsgOjpuZXcoKHZvaWQgKilfX3ApIF9VcChzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9f
YXJncykuLi4pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+CiAgICAgICAgdm9pZAog
ICAgICAgIGRlc3Ryb3koX1VwKiBfX3ApIHsgX19wLT5+X1VwKCk7IH0KIyAxMzUgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvZXh0L25ld19h
bGxvY2F0b3IuaCIgMwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5l
IGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgbmV3X2FsbG9jYXRvcjxfVHA+JiwgY29uc3QgbmV3
X2FsbG9jYXRvcjxfVHA+JikKICAgIHsgcmV0dXJuIHRydWU7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgbmV3X2FsbG9jYXRv
cjxfVHA+JiwgY29uc3QgbmV3X2FsbG9jYXRvcjxfVHA+JikKICAgIHsgcmV0dXJuIGZhbHNlOyB9
CgoKfQojIDM0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL2MrK2FsbG9jYXRvci5oIiAy
IDMKCgpuYW1lc3BhY2Ugc3RkCnsKIyA0NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvYml0cy9j
KythbGxvY2F0b3IuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHVzaW5nIF9fYWxs
b2NhdG9yX2Jhc2UgPSBfX2dudV9jeHg6Om5ld19hbGxvY2F0b3I8X1RwPjsKfQojIDQ3ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMv
YWxsb2NhdG9yLmgiIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9tZW1vcnlmd2QuaCIgMSAzCiMgNDQgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9tZW1v
cnlmd2QuaCIgMwojZGVmaW5lIF9NRU1PUllGV0RfSCAxCgogICAgICAgCiMgNDcgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9tZW1v
cnlmd2QuaCIgMwoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlf
XyAoImRlZmF1bHQiKSkpCnsKCiMgNjMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9tZW1vcnlmd2QuaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lPgogICAgY2xhc3MgYWxsb2NhdG9yOwoKICB0ZW1wbGF0ZTw+CiAgICBjbGFzcyBhbGxv
Y2F0b3I8dm9pZD47CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+CiAgICBzdHJ1Y3Qg
dXNlc19hbGxvY2F0b3I7CgoKCgp9CiMgNDggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9hbGxvY2F0b3IuaCIgMiAzCgoKCgpuYW1l
c3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsK
CgoKCgoKCgogIHRlbXBsYXRlPD4KICAgIGNsYXNzIGFsbG9jYXRvcjx2b2lkPgogICAgewogICAg
cHVibGljOgogICAgICB0eXBlZGVmIHNpemVfdCBzaXplX3R5cGU7CiAgICAgIHR5cGVkZWYgcHRy
ZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKICAgICAgdHlwZWRlZiB2b2lkKiBwb2ludGVyOwogICAg
ICB0eXBlZGVmIGNvbnN0IHZvaWQqIGNvbnN0X3BvaW50ZXI7CiAgICAgIHR5cGVkZWYgdm9pZCB2
YWx1ZV90eXBlOwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KICAgICAgICBzdHJ1Y3Qg
cmViaW5kCiAgICAgICAgeyB0eXBlZGVmIGFsbG9jYXRvcjxfVHAxPiBvdGhlcjsgfTsKCgoKCiAg
ICAgIHR5cGVkZWYgdHJ1ZV90eXBlIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfbW92ZV9hc3NpZ25t
ZW50OwoKICAgIH07CiMgOTEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvYml0cy9hbGxvY2F0b3IuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4KICAgIGNsYXNzIGFsbG9jYXRvcjogcHVibGljIF9fYWxsb2NhdG9yX2Jhc2U8X1RwPgog
ICAgewogICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgc2l6ZV90IHNpemVfdHlwZTsKICAgICAgdHlw
ZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwogICAgICB0eXBlZGVmIF9UcCogcG9pbnRl
cjsKICAgICAgdHlwZWRlZiBjb25zdCBfVHAqIGNvbnN0X3BvaW50ZXI7CiAgICAgIHR5cGVkZWYg
X1RwJiByZWZlcmVuY2U7CiAgICAgIHR5cGVkZWYgY29uc3QgX1RwJiBjb25zdF9yZWZlcmVuY2U7
CiAgICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHAxPgogICAgICAgIHN0cnVjdCByZWJpbmQKICAgICAgICB7IHR5cGVkZWYgYWxsb2NhdG9yPF9U
cDE+IG90aGVyOyB9OwoKCgoKICAgICAgdHlwZWRlZiB0cnVlX3R5cGUgcHJvcGFnYXRlX29uX2Nv
bnRhaW5lcl9tb3ZlX2Fzc2lnbm1lbnQ7CgoKICAgICAgYWxsb2NhdG9yKCkgdGhyb3coKSB7IH0K
CiAgICAgIGFsbG9jYXRvcihjb25zdCBhbGxvY2F0b3ImIF9fYSkgdGhyb3coKQogICAgICA6IF9f
YWxsb2NhdG9yX2Jhc2U8X1RwPihfX2EpIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
MT4KICAgICAgICBhbGxvY2F0b3IoY29uc3QgYWxsb2NhdG9yPF9UcDE+JikgdGhyb3coKSB7IH0K
CiAgICAgIH5hbGxvY2F0b3IoKSB0aHJvdygpIHsgfQoKCiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVDEsIHR5cGVuYW1lIF9UMj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KGNv
bnN0IGFsbG9jYXRvcjxfVDE+JiwgY29uc3QgYWxsb2NhdG9yPF9UMj4mKQogICAgeyByZXR1cm4g
dHJ1ZTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgYm9vbAogICAgb3Bl
cmF0b3I9PShjb25zdCBhbGxvY2F0b3I8X1RwPiYsIGNvbnN0IGFsbG9jYXRvcjxfVHA+JikKICAg
IHsgcmV0dXJuIHRydWU7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1QxLCB0eXBlbmFtZSBfVDI+
CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCBhbGxvY2F0b3I8X1QxPiYsIGNv
bnN0IGFsbG9jYXRvcjxfVDI+JikKICAgIHsgcmV0dXJuIGZhbHNlOyB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IGFsbG9jYXRv
cjxfVHA+JiwgY29uc3QgYWxsb2NhdG9yPF9UcD4mKQogICAgeyByZXR1cm4gZmFsc2U7IH0KCgoK
CgoKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgYWxsb2NhdG9yPGNoYXI+OwogIGV4dGVybiB0ZW1w
bGF0ZSBjbGFzcyBhbGxvY2F0b3I8d2NoYXJfdD47CgoKCiN1bmRlZiBfX2FsbG9jYXRvcl9iYXNl
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2MsIGJvb2wgPSBfX2lzX2VtcHR5KF9BbGxvYyk+
CiAgICBzdHJ1Y3QgX19hbGxvY19zd2FwCiAgICB7IHN0YXRpYyB2b2lkIF9TX2RvX2l0KF9BbGxv
YyYsIF9BbGxvYyYpIG5vZXhjZXB0IHsgfSB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+
CiAgICBzdHJ1Y3QgX19hbGxvY19zd2FwPF9BbGxvYywgZmFsc2U+CiAgICB7CiAgICAgIHN0YXRp
YyB2b2lkCiAgICAgIF9TX2RvX2l0KF9BbGxvYyYgX19vbmUsIF9BbGxvYyYgX190d28pIG5vZXhj
ZXB0CiAgICAgIHsKCiBpZiAoX19vbmUgIT0gX190d28pCiAgIHN3YXAoX19vbmUsIF9fdHdvKTsK
ICAgICAgfQogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYywgYm9vbCA9IF9faXNf
ZW1wdHkoX0FsbG9jKT4KICAgIHN0cnVjdCBfX2FsbG9jX25lcQogICAgewogICAgICBzdGF0aWMg
Ym9vbAogICAgICBfU19kb19pdChjb25zdCBfQWxsb2MmLCBjb25zdCBfQWxsb2MmKQogICAgICB7
IHJldHVybiBmYWxzZTsgfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogICAg
c3RydWN0IF9fYWxsb2NfbmVxPF9BbGxvYywgZmFsc2U+CiAgICB7CiAgICAgIHN0YXRpYyBib29s
CiAgICAgIF9TX2RvX2l0KGNvbnN0IF9BbGxvYyYgX19vbmUsIGNvbnN0IF9BbGxvYyYgX190d28p
CiAgICAgIHsgcmV0dXJuIF9fb25lICE9IF9fdHdvOyB9CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwLCBib29sCiAgICA9IF9fb3JfPGlzX2NvcHlfY29uc3RydWN0aWJsZTx0eXBlbmFt
ZSBfVHA6OnZhbHVlX3R5cGU+LAogICAgICAgICAgICBpc19ub3Rocm93X21vdmVfY29uc3RydWN0
aWJsZTx0eXBlbmFtZSBfVHA6OnZhbHVlX3R5cGU+Pjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19zaHJp
bmtfdG9fZml0X2F1eAogICAgeyBzdGF0aWMgYm9vbCBfU19kb19pdChfVHAmKSBub2V4Y2VwdCB7
IHJldHVybiBmYWxzZTsgfSB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3Qg
X19zaHJpbmtfdG9fZml0X2F1eDxfVHAsIHRydWU+CiAgICB7CiAgICAgIHN0YXRpYyBib29sCiAg
ICAgIF9TX2RvX2l0KF9UcCYgX19jKSBub2V4Y2VwdAogICAgICB7CiBpZiAodHJ1ZSkKICAgewog
ICAgIF9UcChfX21ha2VfbW92ZV9pZl9ub2V4Y2VwdF9pdGVyYXRvcihfX2MuYmVnaW4oKSksCiAg
X19tYWtlX21vdmVfaWZfbm9leGNlcHRfaXRlcmF0b3IoX19jLmVuZCgpKSwKICBfX2MuZ2V0X2Fs
bG9jYXRvcigpKS5zd2FwKF9fYyk7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIGlmIChmYWxzZSkK
ICAgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgfQogICAgfTsKCgoKfQojIDY0ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL21lbW9yeSIgMiAz
CiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL3N0bF9jb25zdHJ1Y3QuaCIgMSAzCiMgNTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfY29uc3RydWN0Lmgi
IDMKI2RlZmluZSBfU1RMX0NPTlNUUlVDVF9IIDEKCgoKIyAxICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2V4dC9hbGxvY190cmFpdHMuaCIg
MSAzCiMgMzAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvZXh0L2FsbG9jX3RyYWl0cy5oIiAzCiNkZWZpbmUgX0VYVF9BTExPQ19UUkFJVFNf
SCAxCgogICAgICAgCiMgMzMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvZXh0L2FsbG9jX3RyYWl0cy5oIiAzCgoKCiMgMSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2FsbG9j
X3RyYWl0cy5oIiAxIDMKIyAzMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2FsbG9jX3RyYWl0cy5oIiAzCiNkZWZpbmUgX0FMTE9D
X1RSQUlUU19IIDEKCgoKCgoKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJp
bGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jLCB0eXBl
bmFtZSBfVHA+CiAgICBjbGFzcyBfX2FsbG9jdHJfcmViaW5kX2hlbHBlcgogICAgewogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2MyLCB0eXBlbmFtZSBfVHAyPgogc3RhdGljIGNvbnN0ZXhw
ciB0cnVlX3R5cGUKIF9TX2Noayh0eXBlbmFtZSBfQWxsb2MyOjp0ZW1wbGF0ZSByZWJpbmQ8X1Rw
Mj46Om90aGVyKik7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+CiBzdGF0aWMg
Y29uc3RleHByIGZhbHNlX3R5cGUKIF9TX2NoayguLi4pOwoKICAgIHB1YmxpYzoKICAgICAgdXNp
bmcgX190eXBlID0gZGVjbHR5cGUoX1NfY2hrPF9BbGxvYywgX1RwPihudWxscHRyKSk7CiAgICB9
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9UcCwKICAgIGJvb2wgPSBf
X2FsbG9jdHJfcmViaW5kX2hlbHBlcjxfQWxsb2MsIF9UcD46Ol9fdHlwZTo6dmFsdWU+CiAgICBz
dHJ1Y3QgX19hbGxvY3RyX3JlYmluZDsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jLCB0eXBl
bmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19hbGxvY3RyX3JlYmluZDxfQWxsb2MsIF9UcCwgdHJ1ZT4K
ICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2M6OnRlbXBsYXRlIHJlYmluZDxfVHA+
OjpvdGhlciBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlw
ZW5hbWUuLi4+IGNsYXNzIF9BbGxvYywgdHlwZW5hbWUgX1RwLAogICAgdHlwZW5hbWUgX1VwLCB0
eXBlbmFtZS4uLiBfQXJncz4KICAgIHN0cnVjdCBfX2FsbG9jdHJfcmViaW5kPF9BbGxvYzxfVXAs
IF9BcmdzLi4uPiwgX1RwLCBmYWxzZT4KICAgIHsKICAgICAgdHlwZWRlZiBfQWxsb2M8X1RwLCBf
QXJncy4uLj4gX190eXBlOwogICAgfTsKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4K
ICAgIHN0cnVjdCBhbGxvY2F0b3JfdHJhaXRzCiAgICB7CgogICAgICB0eXBlZGVmIF9BbGxvYyBh
bGxvY2F0b3JfdHlwZTsKCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jOjp2YWx1ZV90eXBl
IHZhbHVlX3R5cGU7CgojZGVmaW5lIF9HTElCQ1hYX0FMTE9DX1RSX05FU1RFRF9UWVBFKF9OVFlQ
RSxfQUxUKSBwcml2YXRlOiB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHN0YXRpYyB0eXBlbmFtZSBf
VHA6Ol9OVFlQRSBfU18gIyNfTlRZUEUgIyNfaGVscGVyKF9UcCopOyBzdGF0aWMgX0FMVCBfU18g
IyNfTlRZUEUgIyNfaGVscGVyKC4uLik7IHR5cGVkZWYgZGVjbHR5cGUoX1NfICMjX05UWVBFICMj
X2hlbHBlcigoX0FsbG9jKikwKSkgX18gIyNfTlRZUEU7IHB1YmxpYzoKCgoKCgoKCnByaXZhdGU6
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gc3RhdGljIHR5cGVuYW1lIF9UcDo6cG9pbnRlciBfU19w
b2ludGVyX2hlbHBlcihfVHAqKTsgc3RhdGljIHZhbHVlX3R5cGUqIF9TX3BvaW50ZXJfaGVscGVy
KC4uLik7IHR5cGVkZWYgZGVjbHR5cGUoX1NfcG9pbnRlcl9oZWxwZXIoKF9BbGxvYyopMCkpIF9f
cG9pbnRlcjsgcHVibGljOgoKCgoKCgogICAgICB0eXBlZGVmIF9fcG9pbnRlciBwb2ludGVyOwoK
cHJpdmF0ZTogdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBzdGF0aWMgdHlwZW5hbWUgX1RwOjpjb25z
dF9wb2ludGVyIF9TX2NvbnN0X3BvaW50ZXJfaGVscGVyKF9UcCopOyBzdGF0aWMgdHlwZW5hbWUg
cG9pbnRlcl90cmFpdHM8cG9pbnRlcj46OnRlbXBsYXRlIHJlYmluZDxjb25zdCB2YWx1ZV90eXBl
PiBfU19jb25zdF9wb2ludGVyX2hlbHBlciguLi4pOyB0eXBlZGVmIGRlY2x0eXBlKF9TX2NvbnN0
X3BvaW50ZXJfaGVscGVyKChfQWxsb2MqKTApKSBfX2NvbnN0X3BvaW50ZXI7IHB1YmxpYzoKIyAx
MTMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvYml0cy9hbGxvY190cmFpdHMuaCIgMwogICAgICB0eXBlZGVmIF9fY29uc3RfcG9pbnRlciBj
b25zdF9wb2ludGVyOwoKcHJpdmF0ZTogdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBzdGF0aWMgdHlw
ZW5hbWUgX1RwOjp2b2lkX3BvaW50ZXIgX1Nfdm9pZF9wb2ludGVyX2hlbHBlcihfVHAqKTsgc3Rh
dGljIHR5cGVuYW1lIHBvaW50ZXJfdHJhaXRzPHBvaW50ZXI+Ojp0ZW1wbGF0ZSByZWJpbmQ8dm9p
ZD4gX1Nfdm9pZF9wb2ludGVyX2hlbHBlciguLi4pOyB0eXBlZGVmIGRlY2x0eXBlKF9TX3ZvaWRf
cG9pbnRlcl9oZWxwZXIoKF9BbGxvYyopMCkpIF9fdm9pZF9wb2ludGVyOyBwdWJsaWM6CiMgMTI0
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvYWxsb2NfdHJhaXRzLmgiIDMKICAgICAgdHlwZWRlZiBfX3ZvaWRfcG9pbnRlciB2b2lk
X3BvaW50ZXI7Cgpwcml2YXRlOiB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHN0YXRpYyB0eXBlbmFt
ZSBfVHA6OmNvbnN0X3ZvaWRfcG9pbnRlciBfU19jb25zdF92b2lkX3BvaW50ZXJfaGVscGVyKF9U
cCopOyBzdGF0aWMgdHlwZW5hbWUgcG9pbnRlcl90cmFpdHM8cG9pbnRlcj46OnRlbXBsYXRlIHJl
YmluZDxjb25zdCB2b2lkPiBfU19jb25zdF92b2lkX3BvaW50ZXJfaGVscGVyKC4uLik7IHR5cGVk
ZWYgZGVjbHR5cGUoX1NfY29uc3Rfdm9pZF9wb2ludGVyX2hlbHBlcigoX0FsbG9jKikwKSkgX19j
b25zdF92b2lkX3BvaW50ZXI7IHB1YmxpYzoKIyAxMzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9hbGxvY190cmFpdHMuaCIgMwog
ICAgICB0eXBlZGVmIF9fY29uc3Rfdm9pZF9wb2ludGVyIGNvbnN0X3ZvaWRfcG9pbnRlcjsKCnBy
aXZhdGU6IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gc3RhdGljIHR5cGVuYW1lIF9UcDo6ZGlmZmVy
ZW5jZV90eXBlIF9TX2RpZmZlcmVuY2VfdHlwZV9oZWxwZXIoX1RwKik7IHN0YXRpYyB0eXBlbmFt
ZSBwb2ludGVyX3RyYWl0czxwb2ludGVyPjo6ZGlmZmVyZW5jZV90eXBlIF9TX2RpZmZlcmVuY2Vf
dHlwZV9oZWxwZXIoLi4uKTsgdHlwZWRlZiBkZWNsdHlwZShfU19kaWZmZXJlbmNlX3R5cGVfaGVs
cGVyKChfQWxsb2MqKTApKSBfX2RpZmZlcmVuY2VfdHlwZTsgcHVibGljOgojIDE0NiAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Fs
bG9jX3RyYWl0cy5oIiAzCiAgICAgIHR5cGVkZWYgX19kaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5j
ZV90eXBlOwoKcHJpdmF0ZTogdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBzdGF0aWMgdHlwZW5hbWUg
X1RwOjpzaXplX3R5cGUgX1Nfc2l6ZV90eXBlX2hlbHBlcihfVHAqKTsgc3RhdGljIHR5cGVuYW1l
IG1ha2VfdW5zaWduZWQ8ZGlmZmVyZW5jZV90eXBlPjo6dHlwZSBfU19zaXplX3R5cGVfaGVscGVy
KC4uLik7IHR5cGVkZWYgZGVjbHR5cGUoX1Nfc2l6ZV90eXBlX2hlbHBlcigoX0FsbG9jKikwKSkg
X19zaXplX3R5cGU7IHB1YmxpYzoKIyAxNTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9hbGxvY190cmFpdHMuaCIgMwogICAgICB0
eXBlZGVmIF9fc2l6ZV90eXBlIHNpemVfdHlwZTsKCnByaXZhdGU6IHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4gc3RhdGljIHR5cGVuYW1lIF9UcDo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fz
c2lnbm1lbnQgX1NfcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fzc2lnbm1lbnRfaGVscGVy
KF9UcCopOyBzdGF0aWMgZmFsc2VfdHlwZSBfU19wcm9wYWdhdGVfb25fY29udGFpbmVyX2NvcHlf
YXNzaWdubWVudF9oZWxwZXIoLi4uKTsgdHlwZWRlZiBkZWNsdHlwZShfU19wcm9wYWdhdGVfb25f
Y29udGFpbmVyX2NvcHlfYXNzaWdubWVudF9oZWxwZXIoKF9BbGxvYyopMCkpIF9fcHJvcGFnYXRl
X29uX2NvbnRhaW5lcl9jb3B5X2Fzc2lnbm1lbnQ7IHB1YmxpYzoKIyAxNjggIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9hbGxvY190
cmFpdHMuaCIgMwogICAgICB0eXBlZGVmIF9fcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fz
c2lnbm1lbnQKIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29weV9hc3NpZ25tZW50OwoKcHJpdmF0
ZTogdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBzdGF0aWMgdHlwZW5hbWUgX1RwOjpwcm9wYWdhdGVf
b25fY29udGFpbmVyX21vdmVfYXNzaWdubWVudCBfU19wcm9wYWdhdGVfb25fY29udGFpbmVyX21v
dmVfYXNzaWdubWVudF9oZWxwZXIoX1RwKik7IHN0YXRpYyBmYWxzZV90eXBlIF9TX3Byb3BhZ2F0
ZV9vbl9jb250YWluZXJfbW92ZV9hc3NpZ25tZW50X2hlbHBlciguLi4pOyB0eXBlZGVmIGRlY2x0
eXBlKF9TX3Byb3BhZ2F0ZV9vbl9jb250YWluZXJfbW92ZV9hc3NpZ25tZW50X2hlbHBlcigoX0Fs
bG9jKikwKSkgX19wcm9wYWdhdGVfb25fY29udGFpbmVyX21vdmVfYXNzaWdubWVudDsgcHVibGlj
OgojIDE4MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL2FsbG9jX3RyYWl0cy5oIiAzCiAgICAgIHR5cGVkZWYgX19wcm9wYWdhdGVf
b25fY29udGFpbmVyX21vdmVfYXNzaWdubWVudAogcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9tb3Zl
X2Fzc2lnbm1lbnQ7Cgpwcml2YXRlOiB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHN0YXRpYyB0eXBl
bmFtZSBfVHA6OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcCBfU19wcm9wYWdhdGVfb25fY29u
dGFpbmVyX3N3YXBfaGVscGVyKF9UcCopOyBzdGF0aWMgZmFsc2VfdHlwZSBfU19wcm9wYWdhdGVf
b25fY29udGFpbmVyX3N3YXBfaGVscGVyKC4uLik7IHR5cGVkZWYgZGVjbHR5cGUoX1NfcHJvcGFn
YXRlX29uX2NvbnRhaW5lcl9zd2FwX2hlbHBlcigoX0FsbG9jKikwKSkgX19wcm9wYWdhdGVfb25f
Y29udGFpbmVyX3N3YXA7IHB1YmxpYzoKIyAxOTIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9hbGxvY190cmFpdHMuaCIgMwogICAg
ICB0eXBlZGVmIF9fcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwIHByb3BhZ2F0ZV9vbl9jb250
YWluZXJfc3dhcDsKCiN1bmRlZiBfR0xJQkNYWF9BTExPQ19UUl9ORVNURURfVFlQRQoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogdXNpbmcgcmViaW5kX2FsbG9jID0gdHlwZW5hbWUgX19h
bGxvY3RyX3JlYmluZDxfQWxsb2MsIF9UcD46Ol9fdHlwZTsKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogdXNpbmcgcmViaW5kX3RyYWl0cyA9IGFsbG9jYXRvcl90cmFpdHM8cmViaW5kX2Fs
bG9jPF9UcD4+OwoKICAgIHByaXZhdGU6CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYzI+
CiBzdHJ1Y3QgX19hbGxvY2F0ZV9oZWxwZXIKIHsKICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9j
MywKICAgICB0eXBlbmFtZSA9IGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxfQWxsb2MzKj4oKS0+YWxs
b2NhdGUoCiAgICBzdGQ6OmRlY2x2YWw8c2l6ZV90eXBlPigpLAogICAgc3RkOjpkZWNsdmFsPGNv
bnN0X3ZvaWRfcG9pbnRlcj4oKSkpPgogICAgIHN0YXRpYyB0cnVlX3R5cGUgX190ZXN0KGludCk7
CgogICB0ZW1wbGF0ZTx0eXBlbmFtZT4KICAgICBzdGF0aWMgZmFsc2VfdHlwZSBfX3Rlc3QoLi4u
KTsKCiAgIHVzaW5nIHR5cGUgPSBkZWNsdHlwZShfX3Rlc3Q8X0FsbG9jPigwKSk7CiB9OwoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jMj4KIHVzaW5nIF9faGFzX2FsbG9jYXRlID0gdHlw
ZW5hbWUgX19hbGxvY2F0ZV9oZWxwZXI8X0FsbG9jMj46OnR5cGU7CgogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQWxsb2MyLAogICAgICAgIHR5cGVuYW1lID0gX1JlcXVpcmU8X19oYXNfYWxsb2Nh
dGU8X0FsbG9jMj4+Pgogc3RhdGljIHBvaW50ZXIKIF9TX2FsbG9jYXRlKF9BbGxvYzImIF9fYSwg
c2l6ZV90eXBlIF9fbiwgY29uc3Rfdm9pZF9wb2ludGVyIF9faGludCkKIHsgcmV0dXJuIF9fYS5h
bGxvY2F0ZShfX24sIF9faGludCk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYzIs
IHR5cGVuYW1lIF9VbnVzZWRIaW50LAogICAgICAgIHR5cGVuYW1lID0gX1JlcXVpcmU8X19ub3Rf
PF9faGFzX2FsbG9jYXRlPF9BbGxvYzI+Pj4+CiBzdGF0aWMgcG9pbnRlcgogX1NfYWxsb2NhdGUo
X0FsbG9jMiYgX19hLCBzaXplX3R5cGUgX19uLCBfVW51c2VkSGludCkKIHsgcmV0dXJuIF9fYS5h
bGxvY2F0ZShfX24pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4u
IF9BcmdzPgogc3RydWN0IF9fY29uc3RydWN0X2hlbHBlcgogewogICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQWxsb2MyLAogICAgIHR5cGVuYW1lID0gZGVjbHR5cGUoc3RkOjpkZWNsdmFsPF9BbGxvYzIq
PigpLT5jb25zdHJ1Y3QoCiAgICBzdGQ6OmRlY2x2YWw8X1RwKj4oKSwgc3RkOjpkZWNsdmFsPF9B
cmdzPigpLi4uKSk+CiAgICAgc3RhdGljIHRydWVfdHlwZSBfX3Rlc3QoaW50KTsKCiAgIHRlbXBs
YXRlPHR5cGVuYW1lPgogICAgIHN0YXRpYyBmYWxzZV90eXBlIF9fdGVzdCguLi4pOwoKICAgdXNp
bmcgdHlwZSA9IGRlY2x0eXBlKF9fdGVzdDxfQWxsb2M+KDApKTsKIH07CgogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4uIF9BcmdzPgogdXNpbmcgX19oYXNfY29uc3RydWN0
CiAgID0gdHlwZW5hbWUgX19jb25zdHJ1Y3RfaGVscGVyPF9UcCwgX0FyZ3MuLi4+Ojp0eXBlOwoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZS4uLiBfQXJncz4KIHN0YXRpYyBf
UmVxdWlyZTxfX2hhc19jb25zdHJ1Y3Q8X1RwLCBfQXJncy4uLj4+CiBfU19jb25zdHJ1Y3QoX0Fs
bG9jJiBfX2EsIF9UcCogX19wLCBfQXJncyYmLi4uIF9fYXJncykKIHsgX19hLmNvbnN0cnVjdChf
X3AsIHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7IH0KCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3M+CiBzdGF0aWMKIF9SZXF1aXJlPF9fYW5kXzxf
X25vdF88X19oYXNfY29uc3RydWN0PF9UcCwgX0FyZ3MuLi4+PiwKICAgICAgICAgIGlzX2NvbnN0
cnVjdGlibGU8X1RwLCBfQXJncy4uLj4+PgogX1NfY29uc3RydWN0KF9BbGxvYyYsIF9UcCogX19w
LCBfQXJncyYmLi4uIF9fYXJncykKIHsgOjpuZXcoKHZvaWQqKV9fcCkgX1RwKHN0ZDo6Zm9yd2Fy
ZDxfQXJncz4oX19hcmdzKS4uLik7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KIHN0
cnVjdCBfX2Rlc3Ryb3lfaGVscGVyCiB7CiAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYzIsCiAg
ICAgdHlwZW5hbWUgPSBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8X0FsbG9jMio+KCktPmRlc3Ryb3ko
CiAgICBzdGQ6OmRlY2x2YWw8X1RwKj4oKSkpPgogICAgIHN0YXRpYyB0cnVlX3R5cGUgX190ZXN0
KGludCk7CgogICB0ZW1wbGF0ZTx0eXBlbmFtZT4KICAgICBzdGF0aWMgZmFsc2VfdHlwZSBfX3Rl
c3QoLi4uKTsKCiAgIHVzaW5nIHR5cGUgPSBkZWNsdHlwZShfX3Rlc3Q8X0FsbG9jPigwKSk7CiB9
OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogdXNpbmcgX19oYXNfZGVzdHJveSA9IHR5
cGVuYW1lIF9fZGVzdHJveV9oZWxwZXI8X1RwPjo6dHlwZTsKCiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KIHN0YXRpYyBfUmVxdWlyZTxfX2hhc19kZXN0cm95PF9UcD4+CiBfU19kZXN0cm95
KF9BbGxvYyYgX19hLCBfVHAqIF9fcCkKIHsgX19hLmRlc3Ryb3koX19wKTsgfQoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPgogc3RhdGljIF9SZXF1aXJlPF9fbm90XzxfX2hhc19kZXN0cm95
PF9UcD4+PgogX1NfZGVzdHJveShfQWxsb2MmLCBfVHAqIF9fcCkKIHsgX19wLT5+X1RwKCk7IH0K
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYzI+CiBzdHJ1Y3QgX19tYXhzaXplX2hlbHBl
cgogewogICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2MzLAogICAgIHR5cGVuYW1lID0gZGVjbHR5
cGUoc3RkOjpkZWNsdmFsPF9BbGxvYzMqPigpLT5tYXhfc2l6ZSgpKT4KICAgICBzdGF0aWMgdHJ1
ZV90eXBlIF9fdGVzdChpbnQpOwoKICAgdGVtcGxhdGU8dHlwZW5hbWU+CiAgICAgc3RhdGljIGZh
bHNlX3R5cGUgX190ZXN0KC4uLik7CgogICB1c2luZyB0eXBlID0gZGVjbHR5cGUoX190ZXN0PF9B
bGxvYzI+KDApKTsKIH07CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2MyPgogdXNpbmcg
X19oYXNfbWF4X3NpemUgPSB0eXBlbmFtZSBfX21heHNpemVfaGVscGVyPF9BbGxvYzI+Ojp0eXBl
OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jMiwKICAgICAgICB0eXBlbmFtZSA9IF9S
ZXF1aXJlPF9faGFzX21heF9zaXplPF9BbGxvYzI+Pj4KIHN0YXRpYyBzaXplX3R5cGUKIF9TX21h
eF9zaXplKF9BbGxvYzImIF9fYSwgaW50KQogeyByZXR1cm4gX19hLm1heF9zaXplKCk7IH0KCiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYzIsCiAgICAgICAgdHlwZW5hbWUgPSBfUmVxdWly
ZTxfX25vdF88X19oYXNfbWF4X3NpemU8X0FsbG9jMj4+Pj4KIHN0YXRpYyBzaXplX3R5cGUKIF9T
X21heF9zaXplKF9BbGxvYzImLCAuLi4pCiB7IHJldHVybiBfX2dudV9jeHg6Ol9fbnVtZXJpY190
cmFpdHM8c2l6ZV90eXBlPjo6X19tYXg7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxv
YzI+CiBzdHJ1Y3QgX19zZWxlY3RfaGVscGVyCiB7CiAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxv
YzMsIHR5cGVuYW1lCiAgICAgPSBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8X0FsbG9jMyo+KCkKICAt
PnNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oKSk+CiAgICAgc3RhdGljIHRy
dWVfdHlwZSBfX3Rlc3QoaW50KTsKCiAgIHRlbXBsYXRlPHR5cGVuYW1lPgogICAgIHN0YXRpYyBm
YWxzZV90eXBlIF9fdGVzdCguLi4pOwoKICAgdXNpbmcgdHlwZSA9IGRlY2x0eXBlKF9fdGVzdDxf
QWxsb2MyPigwKSk7CiB9OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jMj4KIHVzaW5n
IF9faGFzX3NvY2NjID0gdHlwZW5hbWUgX19zZWxlY3RfaGVscGVyPF9BbGxvYzI+Ojp0eXBlOwoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jMiwKICAgICAgICB0eXBlbmFtZSA9IF9SZXF1
aXJlPF9faGFzX3NvY2NjPF9BbGxvYzI+Pj4KIHN0YXRpYyBfQWxsb2MyCiBfU19zZWxlY3QoX0Fs
bG9jMiYgX19hLCBpbnQpCiB7IHJldHVybiBfX2Euc2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2Nv
bnN0cnVjdGlvbigpOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2MyLAogICAgICAg
IHR5cGVuYW1lID0gX1JlcXVpcmU8X19ub3RfPF9faGFzX3NvY2NjPF9BbGxvYzI+Pj4+CiBzdGF0
aWMgX0FsbG9jMgogX1Nfc2VsZWN0KF9BbGxvYzImIF9fYSwgLi4uKQogeyByZXR1cm4gX19hOyB9
CgogICAgcHVibGljOgojIDM1NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2FsbG9jX3RyYWl0cy5oIiAzCiAgICAgIHN0YXRpYyBw
b2ludGVyCiAgICAgIGFsbG9jYXRlKF9BbGxvYyYgX19hLCBzaXplX3R5cGUgX19uKQogICAgICB7
IHJldHVybiBfX2EuYWxsb2NhdGUoX19uKTsgfQojIDM3MCAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2FsbG9jX3RyYWl0cy5oIiAz
CiAgICAgIHN0YXRpYyBwb2ludGVyCiAgICAgIGFsbG9jYXRlKF9BbGxvYyYgX19hLCBzaXplX3R5
cGUgX19uLCBjb25zdF92b2lkX3BvaW50ZXIgX19oaW50KQogICAgICB7IHJldHVybiBfU19hbGxv
Y2F0ZShfX2EsIF9fbiwgX19oaW50KTsgfQojIDM4MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2FsbG9jX3RyYWl0cy5oIiAzCiAg
ICAgIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGUoX0FsbG9jJiBfX2EsIHBvaW50ZXIgX19wLCBzaXpl
X3R5cGUgX19uKQogICAgICB7IF9fYS5kZWFsbG9jYXRlKF9fcCwgX19uKTsgfQojIDM5NiAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L2FsbG9jX3RyYWl0cy5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUu
Li4gX0FyZ3M+CiBzdGF0aWMgYXV0byBjb25zdHJ1Y3QoX0FsbG9jJiBfX2EsIF9UcCogX19wLCBf
QXJncyYmLi4uIF9fYXJncykKIC0+IGRlY2x0eXBlKF9TX2NvbnN0cnVjdChfX2EsIF9fcCwgc3Rk
Ojpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKSkKIHsgX1NfY29uc3RydWN0KF9fYSwgX19wLCBz
dGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOyB9CiMgNDA5ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYWxsb2NfdHJhaXRz
LmgiIDMKICAgICAgdGVtcGxhdGUgPGNsYXNzIF9UcD4KIHN0YXRpYyB2b2lkIGRlc3Ryb3koX0Fs
bG9jJiBfX2EsIF9UcCogX19wKQogeyBfU19kZXN0cm95KF9fYSwgX19wKTsgfQojIDQyMSAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L2FsbG9jX3RyYWl0cy5oIiAzCiAgICAgIHN0YXRpYyBzaXplX3R5cGUgbWF4X3NpemUoY29uc3Qg
X0FsbG9jJiBfX2EpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9TX21heF9zaXplKF9fYSwgMCk7
IH0KIyA0MzIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvYml0cy9hbGxvY190cmFpdHMuaCIgMwogICAgICBzdGF0aWMgX0FsbG9jCiAgICAg
IHNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oY29uc3QgX0FsbG9jJiBfX3Jo
cykKICAgICAgeyByZXR1cm4gX1Nfc2VsZWN0KF9fcmhzLCAwKTsgfQogICAgfTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIHZvaWQKICAgIF9fZG9fYWxsb2Nfb25fY29w
eShfQWxsb2MmIF9fb25lLCBjb25zdCBfQWxsb2MmIF9fdHdvLCB0cnVlX3R5cGUpCiAgICB7IF9f
b25lID0gX190d287IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIHZv
aWQKICAgIF9fZG9fYWxsb2Nfb25fY29weShfQWxsb2MmLCBjb25zdCBfQWxsb2MmLCBmYWxzZV90
eXBlKQogICAgeyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSB2b2lk
IF9fYWxsb2Nfb25fY29weShfQWxsb2MmIF9fb25lLCBjb25zdCBfQWxsb2MmIF9fdHdvKQogICAg
ewogICAgICB0eXBlZGVmIGFsbG9jYXRvcl90cmFpdHM8X0FsbG9jPiBfX3RyYWl0czsKICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBfX3RyYWl0czo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fz
c2lnbm1lbnQgX19wb2NjYTsKICAgICAgX19kb19hbGxvY19vbl9jb3B5KF9fb25lLCBfX3R3bywg
X19wb2NjYSgpKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5l
IF9BbGxvYyBfX2FsbG9jX29uX2NvcHkoY29uc3QgX0FsbG9jJiBfX2EpCiAgICB7CiAgICAgIHR5
cGVkZWYgYWxsb2NhdG9yX3RyYWl0czxfQWxsb2M+IF9fdHJhaXRzOwogICAgICByZXR1cm4gX190
cmFpdHM6OnNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oX19hKTsKICAgIH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIHZvaWQgX19kb19hbGxvY19v
bl9tb3ZlKF9BbGxvYyYgX19vbmUsIF9BbGxvYyYgX190d28sIHRydWVfdHlwZSkKICAgIHsgX19v
bmUgPSBzdGQ6Om1vdmUoX190d28pOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KICAg
IGlubGluZSB2b2lkIF9fZG9fYWxsb2Nfb25fbW92ZShfQWxsb2MmLCBfQWxsb2MmLCBmYWxzZV90
eXBlKQogICAgeyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSB2b2lk
IF9fYWxsb2Nfb25fbW92ZShfQWxsb2MmIF9fb25lLCBfQWxsb2MmIF9fdHdvKQogICAgewogICAg
ICB0eXBlZGVmIGFsbG9jYXRvcl90cmFpdHM8X0FsbG9jPiBfX3RyYWl0czsKICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBfX3RyYWl0czo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9tb3ZlX2Fzc2lnbm1l
bnQgX19wb2NtYTsKICAgICAgX19kb19hbGxvY19vbl9tb3ZlKF9fb25lLCBfX3R3bywgX19wb2Nt
YSgpKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIHZvaWQg
X19kb19hbGxvY19vbl9zd2FwKF9BbGxvYyYgX19vbmUsIF9BbGxvYyYgX190d28sIHRydWVfdHlw
ZSkKICAgIHsKICAgICAgdXNpbmcgc3RkOjpzd2FwOwogICAgICBzd2FwKF9fb25lLCBfX3R3byk7
CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSB2b2lkIF9fZG9f
YWxsb2Nfb25fc3dhcChfQWxsb2MmLCBfQWxsb2MmLCBmYWxzZV90eXBlKQogICAgeyB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSB2b2lkIF9fYWxsb2Nfb25fc3dhcChf
QWxsb2MmIF9fb25lLCBfQWxsb2MmIF9fdHdvKQogICAgewogICAgICB0eXBlZGVmIGFsbG9jYXRv
cl90cmFpdHM8X0FsbG9jPiBfX3RyYWl0czsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX3RyYWl0
czo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwIF9fcG9jczsKICAgICAgX19kb19hbGxvY19v
bl9zd2FwKF9fb25lLCBfX3R3bywgX19wb2NzKCkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQWxsb2M+CiAgICBjbGFzcyBfX2lzX2NvcHlfaW5zZXJ0YWJsZV9pbXBsCiAgICB7CiAgICAg
IHR5cGVkZWYgYWxsb2NhdG9yX3RyYWl0czxfQWxsb2M+IF9UcmFpdHM7CgogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVXAsIHR5cGVuYW1lCiAgICAgICAgPSBkZWNsdHlwZShfVHJhaXRzOjpjb25z
dHJ1Y3Qoc3RkOjpkZWNsdmFsPF9BbGxvYyY+KCksCiAgICAgICAgICBzdGQ6OmRlY2x2YWw8X1Vw
Kj4oKSwKICAgICAgICAgIHN0ZDo6ZGVjbHZhbDxjb25zdCBfVXAmPigpKSk+CiBzdGF0aWMgdHJ1
ZV90eXBlCiBfTV9zZWxlY3QoaW50KTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4KIHN0
YXRpYyBmYWxzZV90eXBlCiBfTV9zZWxlY3QoLi4uKTsKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVk
ZWYgZGVjbHR5cGUoX01fc2VsZWN0PHR5cGVuYW1lIF9BbGxvYzo6dmFsdWVfdHlwZT4oMCkpIHR5
cGU7CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogICAgc3RydWN0IF9faXNf
Y29weV9pbnNlcnRhYmxlCiAgICA6IF9faXNfY29weV9pbnNlcnRhYmxlX2ltcGw8X0FsbG9jPjo6
dHlwZQogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNf
Y29weV9pbnNlcnRhYmxlPGFsbG9jYXRvcjxfVHA+PgogICAgOiBpc19jb3B5X2NvbnN0cnVjdGli
bGU8X1RwPgogICAgeyB9OwoKCn0KIyAzNyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9leHQvYWxsb2NfdHJhaXRzLmgiIDIgMwoKCgoKbmFt
ZXNwYWNlIF9fZ251X2N4eCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0
IikpKQp7CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogICAgc3RydWN0IF9fYWxsb2Nh
dG9yX2Fsd2F5c19jb21wYXJlc19lcXVhbCA6IHN0ZDo6ZmFsc2VfdHlwZSB7IH07CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2FsbG9jYXRvcl9hbHdheXNfY29tcGFyZXNf
ZXF1YWw8c3RkOjphbGxvY2F0b3I8X1RwPj4KICAgIDogc3RkOjp0cnVlX3R5cGUgeyB9OwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+IHN0cnVjdCBhcnJheV9hbGxvY2F0b3I7CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FycmF5PgogICAgc3RydWN0IF9fYWxsb2Nh
dG9yX2Fsd2F5c19jb21wYXJlc19lcXVhbDxhcnJheV9hbGxvY2F0b3I8X1RwLCBfQXJyYXk+Pgog
ICAgOiBzdGQ6OnRydWVfdHlwZSB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgYml0
bWFwX2FsbG9jYXRvcjsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fYWxs
b2NhdG9yX2Fsd2F5c19jb21wYXJlc19lcXVhbDxiaXRtYXBfYWxsb2NhdG9yPF9UcD4+CiAgICA6
IHN0ZDo6dHJ1ZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBtYWxsb2Nf
YWxsb2NhdG9yOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19hbGxvY2F0
b3JfYWx3YXlzX2NvbXBhcmVzX2VxdWFsPG1hbGxvY19hbGxvY2F0b3I8X1RwPj4KICAgIDogc3Rk
Ojp0cnVlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IG10X2FsbG9jYXRv
cjsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fYWxsb2NhdG9yX2Fsd2F5
c19jb21wYXJlc19lcXVhbDxtdF9hbGxvY2F0b3I8X1RwPj4KICAgIDogc3RkOjp0cnVlX3R5cGUg
eyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IG5ld19hbGxvY2F0b3I7CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2FsbG9jYXRvcl9hbHdheXNfY29tcGFyZXNf
ZXF1YWw8bmV3X2FsbG9jYXRvcjxfVHA+PgogICAgOiBzdGQ6OnRydWVfdHlwZSB7IH07CgogIHRl
bXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgcG9vbF9hbGxvY2F0b3I7CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIHN0cnVjdCBfX2FsbG9jYXRvcl9hbHdheXNfY29tcGFyZXNfZXF1YWw8cG9v
bF9hbGxvY2F0b3I8X1RwPj4KICAgIDogc3RkOjp0cnVlX3R5cGUgeyB9OwoKCgoKCgp0ZW1wbGF0
ZTx0eXBlbmFtZSBfQWxsb2M+CiAgc3RydWN0IF9fYWxsb2NfdHJhaXRzCgogIDogc3RkOjphbGxv
Y2F0b3JfdHJhaXRzPF9BbGxvYz4KCiAgewogICAgdHlwZWRlZiBfQWxsb2MgYWxsb2NhdG9yX3R5
cGU7CgogICAgdHlwZWRlZiBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8X0FsbG9jPiBfQmFzZV90eXBl
OwogICAgdHlwZWRlZiB0eXBlbmFtZSBfQmFzZV90eXBlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7
CiAgICB0eXBlZGVmIHR5cGVuYW1lIF9CYXNlX3R5cGU6OnBvaW50ZXIgcG9pbnRlcjsKICAgIHR5
cGVkZWYgdHlwZW5hbWUgX0Jhc2VfdHlwZTo6Y29uc3RfcG9pbnRlciBjb25zdF9wb2ludGVyOwog
ICAgdHlwZWRlZiB0eXBlbmFtZSBfQmFzZV90eXBlOjpzaXplX3R5cGUgc2l6ZV90eXBlOwogICAg
dHlwZWRlZiB0eXBlbmFtZSBfQmFzZV90eXBlOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90
eXBlOwoKICAgIHR5cGVkZWYgdmFsdWVfdHlwZSYgcmVmZXJlbmNlOwogICAgdHlwZWRlZiBjb25z
dCB2YWx1ZV90eXBlJiBjb25zdF9yZWZlcmVuY2U7CiAgICB1c2luZyBfQmFzZV90eXBlOjphbGxv
Y2F0ZTsKICAgIHVzaW5nIF9CYXNlX3R5cGU6OmRlYWxsb2NhdGU7CiAgICB1c2luZyBfQmFzZV90
eXBlOjpjb25zdHJ1Y3Q7CiAgICB1c2luZyBfQmFzZV90eXBlOjpkZXN0cm95OwogICAgdXNpbmcg
X0Jhc2VfdHlwZTo6bWF4X3NpemU7CgogIHByaXZhdGU6CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
UHRyPgogICAgICB1c2luZyBfX2lzX2N1c3RvbV9wb2ludGVyCiA9IHN0ZDo6X19hbmRfPHN0ZDo6
aXNfc2FtZTxwb2ludGVyLCBfUHRyPiwKICAgICAgICBzdGQ6Ol9fbm90XzxzdGQ6OmlzX3BvaW50
ZXI8X1B0cj4+PjsKCiAgcHVibGljOgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9QdHIsIHR5cGVu
YW1lLi4uIF9BcmdzPgogICAgICBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8X19pc19j
dXN0b21fcG9pbnRlcjxfUHRyPjo6dmFsdWU+Ojp0eXBlCiAgICAgIGNvbnN0cnVjdChfQWxsb2Mm
IF9fYSwgX1B0ciBfX3AsIF9BcmdzJiYuLi4gX19hcmdzKQogICAgICB7CiBfQmFzZV90eXBlOjpj
b25zdHJ1Y3QoX19hLCBzdGQ6OmFkZHJlc3NvZigqX19wKSwKICAgICAgICAgc3RkOjpmb3J3YXJk
PF9BcmdzPihfX2FyZ3MpLi4uKTsKICAgICAgfQoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUHRy
PgogICAgICBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8X19pc19jdXN0b21fcG9pbnRl
cjxfUHRyPjo6dmFsdWU+Ojp0eXBlCiAgICAgIGRlc3Ryb3koX0FsbG9jJiBfX2EsIF9QdHIgX19w
KQogICAgICB7IF9CYXNlX3R5cGU6OmRlc3Ryb3koX19hLCBzdGQ6OmFkZHJlc3NvZigqX19wKSk7
IH0KCiAgICBzdGF0aWMgX0FsbG9jIF9TX3NlbGVjdF9vbl9jb3B5KGNvbnN0IF9BbGxvYyYgX19h
KQogICAgeyByZXR1cm4gX0Jhc2VfdHlwZTo6c2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0
cnVjdGlvbihfX2EpOyB9CgogICAgc3RhdGljIHZvaWQgX1Nfb25fc3dhcChfQWxsb2MmIF9fYSwg
X0FsbG9jJiBfX2IpCiAgICB7IHN0ZDo6X19hbGxvY19vbl9zd2FwKF9fYSwgX19iKTsgfQoKICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBfU19wcm9wYWdhdGVfb25fY29weV9hc3NpZ24oKQogICAg
eyByZXR1cm4gX0Jhc2VfdHlwZTo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fzc2lnbm1l
bnQ6OnZhbHVlOyB9CgogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIF9TX3Byb3BhZ2F0ZV9vbl9t
b3ZlX2Fzc2lnbigpCiAgICB7IHJldHVybiBfQmFzZV90eXBlOjpwcm9wYWdhdGVfb25fY29udGFp
bmVyX21vdmVfYXNzaWdubWVudDo6dmFsdWU7IH0KCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
X1NfcHJvcGFnYXRlX29uX3N3YXAoKQogICAgeyByZXR1cm4gX0Jhc2VfdHlwZTo6cHJvcGFnYXRl
X29uX2NvbnRhaW5lcl9zd2FwOjp2YWx1ZTsgfQoKICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBf
U19hbHdheXNfZXF1YWwoKQogICAgeyByZXR1cm4gX19hbGxvY2F0b3JfYWx3YXlzX2NvbXBhcmVz
X2VxdWFsPF9BbGxvYz46OnZhbHVlOyB9CgogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIF9TX25v
dGhyb3dfbW92ZSgpCiAgICB7IHJldHVybiBfU19wcm9wYWdhdGVfb25fbW92ZV9hc3NpZ24oKSB8
fCBfU19hbHdheXNfZXF1YWwoKTsgfQoKICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBfU19ub3Ro
cm93X3N3YXAoKQogICAgewogICAgICB1c2luZyBzdGQ6OnN3YXA7CiAgICAgIHJldHVybiAhX1Nf
cHJvcGFnYXRlX29uX3N3YXAoKQogICAgICAgIHx8IG5vZXhjZXB0KHN3YXAoc3RkOjpkZWNsdmFs
PF9BbGxvYyY+KCksIHN0ZDo6ZGVjbHZhbDxfQWxsb2MmPigpKSk7CiAgICB9CgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgICBzdHJ1Y3QgcmViaW5kCiAgICAgIHsgdHlwZWRlZiB0eXBl
bmFtZSBfQmFzZV90eXBlOjp0ZW1wbGF0ZSByZWJpbmRfYWxsb2M8X1RwPiBvdGhlcjsgfTsKIyAy
MTAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvZXh0L2FsbG9jX3RyYWl0cy5oIiAzCiAgfTsKCgp9CiMgNjIgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfY29uc3RydWN0
LmgiIDIgMwoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJk
ZWZhdWx0IikpKQp7CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UMSwgdHlwZW5hbWUuLi4g
X0FyZ3M+CiAgICBpbmxpbmUgdm9pZAogICAgX0NvbnN0cnVjdChfVDEqIF9fcCwgX0FyZ3MmJi4u
LiBfX2FyZ3MpCiAgICB7IDo6bmV3KHN0YXRpY19jYXN0PHZvaWQqPihfX3ApKSBfVDEoc3RkOjpm
b3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsgfQojIDkwICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2NvbnN0cnVjdC5oIiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHZvaWQKICAgIF9EZXN0cm95KF9U
cCogX19wb2ludGVyKQogICAgeyBfX3BvaW50ZXItPn5fVHAoKTsgfQoKICB0ZW1wbGF0ZTxib29s
PgogICAgc3RydWN0IF9EZXN0cm95X2F1eAogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Rm9yd2FyZEl0ZXJhdG9yPgogICAgICAgIHN0YXRpYyB2b2lkCiAgICAgICAgX19kZXN0cm95KF9G
b3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpCiB7CiAgIGZv
ciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgIHN0ZDo6X0Rlc3Ryb3koc3Rk
OjpfX2FkZHJlc3NvZigqX19maXJzdCkpOwogfQogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3Ry
dWN0IF9EZXN0cm95X2F1eDx0cnVlPgogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9y
d2FyZEl0ZXJhdG9yPgogICAgICAgIHN0YXRpYyB2b2lkCiAgICAgICAgX19kZXN0cm95KF9Gb3J3
YXJkSXRlcmF0b3IsIF9Gb3J3YXJkSXRlcmF0b3IpIHsgfQogICAgfTsKCgoKCgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgaW5saW5lIHZvaWQKICAgIF9EZXN0cm95
KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpCiAgICB7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+
Ojp2YWx1ZV90eXBlCiAgICAgICAgICAgICAgICAgICAgICAgX1ZhbHVlX3R5cGU7CiAgICAgIHN0
ZDo6X0Rlc3Ryb3lfYXV4PF9faGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcihfVmFsdWVfdHlwZSk+OjoK
IF9fZGVzdHJveShfX2ZpcnN0LCBfX2xhc3QpOwogICAgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfQWxsb2NhdG9yPgogICAgdm9pZAogICAg
X0Rlc3Ryb3koX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFz
dCwKICAgICAgX0FsbG9jYXRvciYgX19hbGxvYykKICAgIHsKICAgICAgdHlwZWRlZiBfX2dudV9j
eHg6Ol9fYWxsb2NfdHJhaXRzPF9BbGxvY2F0b3I+IF9fdHJhaXRzOwogICAgICBmb3IgKDsgX19m
aXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKIF9fdHJhaXRzOjpkZXN0cm95KF9fYWxsb2MsIHN0
ZDo6X19hZGRyZXNzb2YoKl9fZmlyc3QpKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zv
cndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHZvaWQKICAgIF9EZXN0cm95
KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAg
IGFsbG9jYXRvcjxfVHA+JikKICAgIHsKICAgICAgX0Rlc3Ryb3koX19maXJzdCwgX19sYXN0KTsK
ICAgIH0KCgp9CiMgNjUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvbWVtb3J5IiAyIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX3VuaW5pdGlhbGl6ZWQuaCIg
MSAzCiMgNTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvYml0cy9zdGxfdW5pbml0aWFsaXplZC5oIiAzCiNkZWZpbmUgX1NUTF9VTklOSVRJ
QUxJWkVEX0ggMQoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18g
KCJkZWZhdWx0IikpKQp7CgoKICB0ZW1wbGF0ZTxib29sIF9Ucml2aWFsVmFsdWVUeXBlcz4KICAg
IHN0cnVjdCBfX3VuaW5pdGlhbGl6ZWRfY29weQogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcj4KICAgICAgICBzdGF0
aWMgX0ZvcndhcmRJdGVyYXRvcgogICAgICAgIF9fdW5pbml0X2NvcHkoX0lucHV0SXRlcmF0b3Ig
X19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgIF9Gb3J3YXJkSXRlcmF0b3Ig
X19yZXN1bHQpCiAgICAgICAgewogICBfRm9yd2FyZEl0ZXJhdG9yIF9fY3VyID0gX19yZXN1bHQ7
CiAgIGlmICh0cnVlKQogICAgIHsKICAgICAgIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytf
X2ZpcnN0LCArK19fY3VyKQogIHN0ZDo6X0NvbnN0cnVjdChzdGQ6Ol9fYWRkcmVzc29mKCpfX2N1
ciksICpfX2ZpcnN0KTsKICAgICAgIHJldHVybiBfX2N1cjsKICAgICB9CiAgIGlmIChmYWxzZSkK
ICAgICB7CiAgICAgICBzdGQ6Ol9EZXN0cm95KF9fcmVzdWx0LCBfX2N1cik7CiAgICAgICA7CiAg
ICAgfQogfQogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fdW5pbml0aWFsaXplZF9j
b3B5PHRydWU+CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0
eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgICAgIHN0YXRpYyBfRm9yd2FyZEl0ZXJhdG9y
CiAgICAgICAgX191bmluaXRfY29weShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVy
YXRvciBfX2xhc3QsCiAgICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX3Jlc3VsdCkKICAgICAgICB7
IHJldHVybiBzdGQ6OmNvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCk7IH0KICAgIH07CiMg
MTA1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OS4zL2JpdHMvc3RsX3VuaW5pdGlhbGl6ZWQuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1
dEl0ZXJhdG9yLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgaW5saW5lIF9Gb3J3YXJk
SXRlcmF0b3IKICAgIHVuaW5pdGlhbGl6ZWRfY29weShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBf
SW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19yZXN1bHQp
CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJh
dG9yPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTE7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRl
cmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlMjsK
CgoKCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9y
Pjo6cmVmZXJlbmNlIF9SZWZUeXBlMTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90
cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OnJlZmVyZW5jZSBfUmVmVHlwZTI7CiAgICAgIGNvbnN0
IGJvb2wgX19hc3NpZ25hYmxlID0gaXNfYXNzaWduYWJsZTxfUmVmVHlwZTIsIF9SZWZUeXBlMT46
OnZhbHVlOwoKCiAgICAgIHJldHVybiBzdGQ6Ol9fdW5pbml0aWFsaXplZF9jb3B5PF9faXNfdHJp
dmlhbChfVmFsdWVUeXBlMSkKICAgICAgICAgICAmJiBfX2lzX3RyaXZpYWwoX1ZhbHVlVHlwZTIp
CiAgICAgICAgICAgJiYgX19hc3NpZ25hYmxlPjo6CiBfX3VuaW5pdF9jb3B5KF9fZmlyc3QsIF9f
bGFzdCwgX19yZXN1bHQpOwogICAgfQoKCiAgdGVtcGxhdGU8Ym9vbCBfVHJpdmlhbFZhbHVlVHlw
ZT4KICAgIHN0cnVjdCBfX3VuaW5pdGlhbGl6ZWRfZmlsbAogICAgewogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+CiAgICAgICAgc3RhdGljIHZv
aWQKICAgICAgICBfX3VuaW5pdF9maWxsKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0Zvcndh
cmRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgY29uc3QgX1RwJiBfX3gpCiAgICAgICAgewogICBf
Rm9yd2FyZEl0ZXJhdG9yIF9fY3VyID0gX19maXJzdDsKICAgaWYgKHRydWUpCiAgICAgewogICAg
ICAgZm9yICg7IF9fY3VyICE9IF9fbGFzdDsgKytfX2N1cikKICBzdGQ6Ol9Db25zdHJ1Y3Qoc3Rk
OjpfX2FkZHJlc3NvZigqX19jdXIpLCBfX3gpOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsK
ICAgICAgIHN0ZDo6X0Rlc3Ryb3koX19maXJzdCwgX19jdXIpOwogICAgICAgOwogICAgIH0KIH0K
ICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX3VuaW5pdGlhbGl6ZWRfZmlsbDx0cnVl
PgogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFt
ZSBfVHA+CiAgICAgICAgc3RhdGljIHZvaWQKICAgICAgICBfX3VuaW5pdF9maWxsKF9Gb3J3YXJk
SXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgY29uc3Qg
X1RwJiBfX3gpCiAgICAgICAgeyBzdGQ6OmZpbGwoX19maXJzdCwgX19sYXN0LCBfX3gpOyB9CiAg
ICB9OwojIDE3MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL3N0bF91bmluaXRpYWxpemVkLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdm9pZAogICAgdW5p
bml0aWFsaXplZF9maWxsKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRv
ciBfX2xhc3QsCiAgICAgICAgIGNvbnN0IF9UcCYgX194KQogICAgewogICAgICB0eXBlZGVmIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQogX1Zh
bHVlVHlwZTsKCgoKCiAgICAgIGNvbnN0IGJvb2wgX19hc3NpZ25hYmxlID0gaXNfY29weV9hc3Np
Z25hYmxlPF9WYWx1ZVR5cGU+Ojp2YWx1ZTsKCgogICAgICBzdGQ6Ol9fdW5pbml0aWFsaXplZF9m
aWxsPF9faXNfdHJpdmlhbChfVmFsdWVUeXBlKSAmJiBfX2Fzc2lnbmFibGU+OjoKIF9fdW5pbml0
X2ZpbGwoX19maXJzdCwgX19sYXN0LCBfX3gpOwogICAgfQoKCiAgdGVtcGxhdGU8Ym9vbCBfVHJp
dmlhbFZhbHVlVHlwZT4KICAgIHN0cnVjdCBfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uCiAgICB7CiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9TaXplLCB0
eXBlbmFtZSBfVHA+CiAgICAgICAgc3RhdGljIHZvaWQKICAgICAgICBfX3VuaW5pdF9maWxsX24o
X0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6ZSBfX24sCiAgIGNvbnN0IF9UcCYgX194KQog
ICAgICAgIHsKICAgX0ZvcndhcmRJdGVyYXRvciBfX2N1ciA9IF9fZmlyc3Q7CiAgIGlmICh0cnVl
KQogICAgIHsKICAgICAgIGZvciAoOyBfX24gPiAwOyAtLV9fbiwgKytfX2N1cikKICBzdGQ6Ol9D
b25zdHJ1Y3Qoc3RkOjpfX2FkZHJlc3NvZigqX19jdXIpLCBfX3gpOwogICAgIH0KICAgaWYgKGZh
bHNlKQogICAgIHsKICAgICAgIHN0ZDo6X0Rlc3Ryb3koX19maXJzdCwgX19jdXIpOwogICAgICAg
OwogICAgIH0KIH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX3VuaW5pdGlhbGl6
ZWRfZmlsbF9uPHRydWU+CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRl
cmF0b3IsIHR5cGVuYW1lIF9TaXplLCB0eXBlbmFtZSBfVHA+CiAgICAgICAgc3RhdGljIHZvaWQK
ICAgICAgICBfX3VuaW5pdF9maWxsX24oX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6ZSBf
X24sCiAgIGNvbnN0IF9UcCYgX194KQogICAgICAgIHsgc3RkOjpmaWxsX24oX19maXJzdCwgX19u
LCBfX3gpOyB9CiAgICB9OwojIDIzMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF91bmluaXRpYWxpemVkLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfU2l6ZSwgdHlwZW5hbWUg
X1RwPgogICAgaW5saW5lIHZvaWQKICAgIHVuaW5pdGlhbGl6ZWRfZmlsbF9uKF9Gb3J3YXJkSXRl
cmF0b3IgX19maXJzdCwgX1NpemUgX19uLCBjb25zdCBfVHAmIF9feCkKICAgIHsKICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5
cGUKIF9WYWx1ZVR5cGU7CgoKCgogICAgICBjb25zdCBib29sIF9fYXNzaWduYWJsZSA9IGlzX2Nv
cHlfYXNzaWduYWJsZTxfVmFsdWVUeXBlPjo6dmFsdWU7CgoKICAgICAgc3RkOjpfX3VuaW5pdGlh
bGl6ZWRfZmlsbF9uPF9faXNfdHJpdmlhbChfVmFsdWVUeXBlKSAmJiBfX2Fzc2lnbmFibGU+OjoK
IF9fdW5pbml0X2ZpbGxfbihfX2ZpcnN0LCBfX24sIF9feCk7CiAgICB9CgoKCgoKCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAog
ICAgdHlwZW5hbWUgX0FsbG9jYXRvcj4KICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIF9fdW5pbml0
aWFsaXplZF9jb3B5X2EoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19s
YXN0LAogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fcmVzdWx0LCBfQWxsb2NhdG9yJiBfX2FsbG9j
KQogICAgewogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fY3VyID0gX19yZXN1bHQ7CiAgICAgIGlm
ICh0cnVlKQogewogICB0eXBlZGVmIF9fZ251X2N4eDo6X19hbGxvY190cmFpdHM8X0FsbG9jYXRv
cj4gX190cmFpdHM7CiAgIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0LCArK19f
Y3VyKQogICAgIF9fdHJhaXRzOjpjb25zdHJ1Y3QoX19hbGxvYywgc3RkOjpfX2FkZHJlc3NvZigq
X19jdXIpLCAqX19maXJzdCk7CiAgIHJldHVybiBfX2N1cjsKIH0KICAgICAgaWYgKGZhbHNlKQog
ewogICBzdGQ6Ol9EZXN0cm95KF9fcmVzdWx0LCBfX2N1ciwgX19hbGxvYyk7CiAgIDsKIH0KICAg
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9Gb3J3YXJk
SXRlcmF0b3IsIHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBfRm9yd2FyZEl0ZXJhdG9yCiAgICBf
X3VuaW5pdGlhbGl6ZWRfY29weV9hKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJh
dG9yIF9fbGFzdCwKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX3Jlc3VsdCwgYWxsb2NhdG9yPF9U
cD4mKQogICAgeyByZXR1cm4gc3RkOjp1bmluaXRpYWxpemVkX2NvcHkoX19maXJzdCwgX19sYXN0
LCBfX3Jlc3VsdCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVu
YW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICB0eXBlbmFtZSBfQWxsb2NhdG9yPgogICAgaW5saW5l
IF9Gb3J3YXJkSXRlcmF0b3IKICAgIF9fdW5pbml0aWFsaXplZF9tb3ZlX2EoX0lucHV0SXRlcmF0
b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICBfRm9yd2FyZEl0ZXJhdG9y
IF9fcmVzdWx0LCBfQWxsb2NhdG9yJiBfX2FsbG9jKQogICAgewogICAgICByZXR1cm4gc3RkOjpf
X3VuaW5pdGlhbGl6ZWRfY29weV9hKHN0ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9yKF9fZmlyc3QpLAog
ICAgICBzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcihfX2xhc3QpLAogICAgICBfX3Jlc3VsdCwgX19h
bGxvYyk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgdHlwZW5hbWUgX0FsbG9jYXRvcj4KICAgIGlubGluZSBf
Rm9yd2FyZEl0ZXJhdG9yCiAgICBfX3VuaW5pdGlhbGl6ZWRfbW92ZV9pZl9ub2V4Y2VwdF9hKF9J
bnB1dEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgICAgX0lucHV0SXRlcmF0b3IgX19sYXN0LAog
ICAgICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19yZXN1bHQsCiAgICAgICAgICAgX0FsbG9jYXRv
ciYgX19hbGxvYykKICAgIHsKICAgICAgcmV0dXJuIHN0ZDo6X191bmluaXRpYWxpemVkX2NvcHlf
YQogKHN0ZDo6X19tYWtlX21vdmVfaWZfbm9leGNlcHRfaXRlcmF0b3IoX19maXJzdCksCiAgc3Rk
OjpfX21ha2VfbW92ZV9pZl9ub2V4Y2VwdF9pdGVyYXRvcihfX2xhc3QpLCBfX3Jlc3VsdCwgX19h
bGxvYyk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jYXRvcj4KICAgIHZvaWQKICAgIF9fdW5pbml0aWFsaXpl
ZF9maWxsX2EoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFz
dCwKICAgICAgY29uc3QgX1RwJiBfX3gsIF9BbGxvY2F0b3ImIF9fYWxsb2MpCiAgICB7CiAgICAg
IF9Gb3J3YXJkSXRlcmF0b3IgX19jdXIgPSBfX2ZpcnN0OwogICAgICBpZiAodHJ1ZSkKIHsKICAg
dHlwZWRlZiBfX2dudV9jeHg6Ol9fYWxsb2NfdHJhaXRzPF9BbGxvY2F0b3I+IF9fdHJhaXRzOwog
ICBmb3IgKDsgX19jdXIgIT0gX19sYXN0OyArK19fY3VyKQogICAgIF9fdHJhaXRzOjpjb25zdHJ1
Y3QoX19hbGxvYywgc3RkOjpfX2FkZHJlc3NvZigqX19jdXIpLCBfX3gpOwogfQogICAgICBpZiAo
ZmFsc2UpCiB7CiAgIHN0ZDo6X0Rlc3Ryb3koX19maXJzdCwgX19jdXIsIF9fYWxsb2MpOwogICA7
CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1l
IF9UcCwgdHlwZW5hbWUgX1RwMj4KICAgIGlubGluZSB2b2lkCiAgICBfX3VuaW5pdGlhbGl6ZWRf
ZmlsbF9hKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3Qs
CiAgICAgIGNvbnN0IF9UcCYgX194LCBhbGxvY2F0b3I8X1RwMj4mKQogICAgeyBzdGQ6OnVuaW5p
dGlhbGl6ZWRfZmlsbChfX2ZpcnN0LCBfX2xhc3QsIF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1NpemUsIHR5cGVuYW1lIF9UcCwKICAgIHR5
cGVuYW1lIF9BbGxvY2F0b3I+CiAgICB2b2lkCiAgICBfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uX2Eo
X0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6ZSBfX24sCiAgICAgICAgY29uc3QgX1RwJiBf
X3gsIF9BbGxvY2F0b3ImIF9fYWxsb2MpCiAgICB7CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19j
dXIgPSBfX2ZpcnN0OwogICAgICBpZiAodHJ1ZSkKIHsKICAgdHlwZWRlZiBfX2dudV9jeHg6Ol9f
YWxsb2NfdHJhaXRzPF9BbGxvY2F0b3I+IF9fdHJhaXRzOwogICBmb3IgKDsgX19uID4gMDsgLS1f
X24sICsrX19jdXIpCiAgICAgX190cmFpdHM6OmNvbnN0cnVjdChfX2FsbG9jLCBzdGQ6Ol9fYWRk
cmVzc29mKCpfX2N1ciksIF9feCk7CiB9CiAgICAgIGlmIChmYWxzZSkKIHsKICAgc3RkOjpfRGVz
dHJveShfX2ZpcnN0LCBfX2N1ciwgX19hbGxvYyk7CiAgIDsKIH0KICAgIH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1NpemUsIHR5cGVuYW1lIF9UcCwK
ICAgIHR5cGVuYW1lIF9UcDI+CiAgICBpbmxpbmUgdm9pZAogICAgX191bmluaXRpYWxpemVkX2Zp
bGxfbl9hKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX1NpemUgX19uLAogICAgICAgIGNvbnN0
IF9UcCYgX194LCBhbGxvY2F0b3I8X1RwMj4mKQogICAgeyBzdGQ6OnVuaW5pdGlhbGl6ZWRfZmls
bF9uKF9fZmlyc3QsIF9fbiwgX194KTsgfQojIDM2NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF91bmluaXRpYWxpemVkLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0
ZXJhdG9yMiwKICAgIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9BbGxvY2F0
b3I+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyYXRvcgogICAgX191bmluaXRpYWxpemVkX2NvcHlf
bW92ZShfSW5wdXRJdGVyYXRvcjEgX19maXJzdDEsCiAgICAgICAgIF9JbnB1dEl0ZXJhdG9yMSBf
X2xhc3QxLAogICAgICAgICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIsCiAgICAgICAgIF9JbnB1
dEl0ZXJhdG9yMiBfX2xhc3QyLAogICAgICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fcmVzdWx0LAog
ICAgICAgICBfQWxsb2NhdG9yJiBfX2FsbG9jKQogICAgewogICAgICBfRm9yd2FyZEl0ZXJhdG9y
IF9fbWlkID0gc3RkOjpfX3VuaW5pdGlhbGl6ZWRfY29weV9hKF9fZmlyc3QxLCBfX2xhc3QxLAog
ICAgICAgICAgX19yZXN1bHQsCiAgICAgICAgICBfX2FsbG9jKTsKICAgICAgaWYgKHRydWUpCiB7
CiAgIHJldHVybiBzdGQ6Ol9fdW5pbml0aWFsaXplZF9tb3ZlX2EoX19maXJzdDIsIF9fbGFzdDIs
IF9fbWlkLCBfX2FsbG9jKTsKIH0KICAgICAgaWYgKGZhbHNlKQogewogICBzdGQ6Ol9EZXN0cm95
KF9fcmVzdWx0LCBfX21pZCwgX19hbGxvYyk7CiAgIDsKIH0KICAgIH0KCgoKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0lucHV0SXRlcmF0b3IyLAogICAg
dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX0FsbG9jYXRvcj4KICAgIGlubGlu
ZSBfRm9yd2FyZEl0ZXJhdG9yCiAgICBfX3VuaW5pdGlhbGl6ZWRfbW92ZV9jb3B5KF9JbnB1dEl0
ZXJhdG9yMSBfX2ZpcnN0MSwKICAgICAgICAgX0lucHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAgICAg
ICAgIF9JbnB1dEl0ZXJhdG9yMiBfX2ZpcnN0MiwKICAgICAgICAgX0lucHV0SXRlcmF0b3IyIF9f
bGFzdDIsCiAgICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19yZXN1bHQsCiAgICAgICAgIF9BbGxv
Y2F0b3ImIF9fYWxsb2MpCiAgICB7CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19taWQgPSBzdGQ6
Ol9fdW5pbml0aWFsaXplZF9tb3ZlX2EoX19maXJzdDEsIF9fbGFzdDEsCiAgICAgICAgICBfX3Jl
c3VsdCwKICAgICAgICAgIF9fYWxsb2MpOwogICAgICBpZiAodHJ1ZSkKIHsKICAgcmV0dXJuIHN0
ZDo6X191bmluaXRpYWxpemVkX2NvcHlfYShfX2ZpcnN0MiwgX19sYXN0MiwgX19taWQsIF9fYWxs
b2MpOwogfQogICAgICBpZiAoZmFsc2UpCiB7CiAgIHN0ZDo6X0Rlc3Ryb3koX19yZXN1bHQsIF9f
bWlkLCBfX2FsbG9jKTsKICAgOwogfQogICAgfQoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9y
d2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLAogICAg
dHlwZW5hbWUgX0FsbG9jYXRvcj4KICAgIGlubGluZSBfRm9yd2FyZEl0ZXJhdG9yCiAgICBfX3Vu
aW5pdGlhbGl6ZWRfZmlsbF9tb3ZlKF9Gb3J3YXJkSXRlcmF0b3IgX19yZXN1bHQsIF9Gb3J3YXJk
SXRlcmF0b3IgX19taWQsCiAgICAgICAgIGNvbnN0IF9UcCYgX194LCBfSW5wdXRJdGVyYXRvciBf
X2ZpcnN0LAogICAgICAgICBfSW5wdXRJdGVyYXRvciBfX2xhc3QsIF9BbGxvY2F0b3ImIF9fYWxs
b2MpCiAgICB7CiAgICAgIHN0ZDo6X191bmluaXRpYWxpemVkX2ZpbGxfYShfX3Jlc3VsdCwgX19t
aWQsIF9feCwgX19hbGxvYyk7CiAgICAgIGlmICh0cnVlKQogewogICByZXR1cm4gc3RkOjpfX3Vu
aW5pdGlhbGl6ZWRfbW92ZV9hKF9fZmlyc3QsIF9fbGFzdCwgX19taWQsIF9fYWxsb2MpOwogfQog
ICAgICBpZiAoZmFsc2UpCiB7CiAgIHN0ZDo6X0Rlc3Ryb3koX19yZXN1bHQsIF9fbWlkLCBfX2Fs
bG9jKTsKICAgOwogfQogICAgfQoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRv
ciwgdHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1RwLAogICAgdHlwZW5hbWUg
X0FsbG9jYXRvcj4KICAgIGlubGluZSB2b2lkCiAgICBfX3VuaW5pdGlhbGl6ZWRfbW92ZV9maWxs
KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QxLCBfSW5wdXRJdGVyYXRvciBfX2xhc3QxLAogICAgICAg
ICBfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QyLAogICAgICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9f
bGFzdDIsIGNvbnN0IF9UcCYgX194LAogICAgICAgICBfQWxsb2NhdG9yJiBfX2FsbG9jKQogICAg
ewogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbWlkMiA9IHN0ZDo6X191bmluaXRpYWxpemVkX21v
dmVfYShfX2ZpcnN0MSwgX19sYXN0MSwKICAgICAgICAgICBfX2ZpcnN0MiwKICAgICAgICAgICBf
X2FsbG9jKTsKICAgICAgaWYgKHRydWUpCiB7CiAgIHN0ZDo6X191bmluaXRpYWxpemVkX2ZpbGxf
YShfX21pZDIsIF9fbGFzdDIsIF9feCwgX19hbGxvYyk7CiB9CiAgICAgIGlmIChmYWxzZSkKIHsK
ICAgc3RkOjpfRGVzdHJveShfX2ZpcnN0MiwgX19taWQyLCBfX2FsbG9jKTsKICAgOwogfQogICAg
fQoKCgoKCiAgdGVtcGxhdGU8Ym9vbCBfVHJpdmlhbFZhbHVlVHlwZT4KICAgIHN0cnVjdCBfX3Vu
aW5pdGlhbGl6ZWRfZGVmYXVsdF8xCiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3
YXJkSXRlcmF0b3I+CiAgICAgICAgc3RhdGljIHZvaWQKICAgICAgICBfX3VuaW5pdF9kZWZhdWx0
KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpCiAgICAg
ICAgewogICBfRm9yd2FyZEl0ZXJhdG9yIF9fY3VyID0gX19maXJzdDsKICAgaWYgKHRydWUpCiAg
ICAgewogICAgICAgZm9yICg7IF9fY3VyICE9IF9fbGFzdDsgKytfX2N1cikKICBzdGQ6Ol9Db25z
dHJ1Y3Qoc3RkOjpfX2FkZHJlc3NvZigqX19jdXIpKTsKICAgICB9CiAgIGlmIChmYWxzZSkKICAg
ICB7CiAgICAgICBzdGQ6Ol9EZXN0cm95KF9fZmlyc3QsIF9fY3VyKTsKICAgICAgIDsKICAgICB9
CiB9CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX191bmluaXRpYWxpemVkX2RlZmF1
bHRfMTx0cnVlPgogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9y
PgogICAgICAgIHN0YXRpYyB2b2lkCiAgICAgICAgX191bmluaXRfZGVmYXVsdChfRm9yd2FyZEl0
ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0KQogICAgICAgIHsKICAgdHlw
ZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5
cGUKICAgICBfVmFsdWVUeXBlOwoKICAgc3RkOjpmaWxsKF9fZmlyc3QsIF9fbGFzdCwgX1ZhbHVl
VHlwZSgpKTsKIH0KICAgIH07CgogIHRlbXBsYXRlPGJvb2wgX1RyaXZpYWxWYWx1ZVR5cGU+CiAg
ICBzdHJ1Y3QgX191bmluaXRpYWxpemVkX2RlZmF1bHRfbl8xCiAgICB7CiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9TaXplPgogICAgICAgIHN0YXRp
YyB2b2lkCiAgICAgICAgX191bmluaXRfZGVmYXVsdF9uKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJz
dCwgX1NpemUgX19uKQogICAgICAgIHsKICAgX0ZvcndhcmRJdGVyYXRvciBfX2N1ciA9IF9fZmly
c3Q7CiAgIGlmICh0cnVlKQogICAgIHsKICAgICAgIGZvciAoOyBfX24gPiAwOyAtLV9fbiwgKytf
X2N1cikKICBzdGQ6Ol9Db25zdHJ1Y3Qoc3RkOjpfX2FkZHJlc3NvZigqX19jdXIpKTsKICAgICB9
CiAgIGlmIChmYWxzZSkKICAgICB7CiAgICAgICBzdGQ6Ol9EZXN0cm95KF9fZmlyc3QsIF9fY3Vy
KTsKICAgICAgIDsKICAgICB9CiB9CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX191
bmluaXRpYWxpemVkX2RlZmF1bHRfbl8xPHRydWU+CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9TaXplPgogICAgICAgIHN0YXRpYyB2b2lk
CiAgICAgICAgX191bmluaXRfZGVmYXVsdF9uKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX1Np
emUgX19uKQogICAgICAgIHsKICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0Zv
cndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGUKICAgICBfVmFsdWVUeXBlOwoKICAgc3RkOjpmaWxs
X24oX19maXJzdCwgX19uLCBfVmFsdWVUeXBlKCkpOwogfQogICAgfTsKCgoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcj4KICAgIGlubGluZSB2b2lkCiAgICBfX3VuaW5pdGlh
bGl6ZWRfZGVmYXVsdChfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICBfRm9yd2FyZEl0
ZXJhdG9yIF9fbGFzdCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFp
dHM8X0ZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGU7CgogICAgICBjb25z
dCBib29sIF9fYXNzaWduYWJsZSA9IGlzX2NvcHlfYXNzaWduYWJsZTxfVmFsdWVUeXBlPjo6dmFs
dWU7CgogICAgICBzdGQ6Ol9fdW5pbml0aWFsaXplZF9kZWZhdWx0XzE8X19pc190cml2aWFsKF9W
YWx1ZVR5cGUpCiAgICAgICAgICYmIF9fYXNzaWduYWJsZT46OgogX191bmluaXRfZGVmYXVsdChf
X2ZpcnN0LCBfX2xhc3QpOwogICAgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRl
cmF0b3IsIHR5cGVuYW1lIF9TaXplPgogICAgaW5saW5lIHZvaWQKICAgIF9fdW5pbml0aWFsaXpl
ZF9kZWZhdWx0X24oX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6ZSBfX24pCiAgICB7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+Ojp2
YWx1ZV90eXBlCiBfVmFsdWVUeXBlOwoKICAgICAgY29uc3QgYm9vbCBfX2Fzc2lnbmFibGUgPSBp
c19jb3B5X2Fzc2lnbmFibGU8X1ZhbHVlVHlwZT46OnZhbHVlOwoKICAgICAgc3RkOjpfX3VuaW5p
dGlhbGl6ZWRfZGVmYXVsdF9uXzE8X19pc190cml2aWFsKF9WYWx1ZVR5cGUpCiAgICAgICAgICAg
JiYgX19hc3NpZ25hYmxlPjo6CiBfX3VuaW5pdF9kZWZhdWx0X24oX19maXJzdCwgX19uKTsKICAg
IH0KCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9B
bGxvY2F0b3I+CiAgICB2b2lkCiAgICBfX3VuaW5pdGlhbGl6ZWRfZGVmYXVsdF9hKF9Gb3J3YXJk
SXRlcmF0b3IgX19maXJzdCwKICAgICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAg
ICAgIF9BbGxvY2F0b3ImIF9fYWxsb2MpCiAgICB7CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19j
dXIgPSBfX2ZpcnN0OwogICAgICBpZiAodHJ1ZSkKIHsKICAgdHlwZWRlZiBfX2dudV9jeHg6Ol9f
YWxsb2NfdHJhaXRzPF9BbGxvY2F0b3I+IF9fdHJhaXRzOwogICBmb3IgKDsgX19jdXIgIT0gX19s
YXN0OyArK19fY3VyKQogICAgIF9fdHJhaXRzOjpjb25zdHJ1Y3QoX19hbGxvYywgc3RkOjpfX2Fk
ZHJlc3NvZigqX19jdXIpKTsKIH0KICAgICAgaWYgKGZhbHNlKQogewogICBzdGQ6Ol9EZXN0cm95
KF9fZmlyc3QsIF9fY3VyLCBfX2FsbG9jKTsKICAgOwogfQogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdm9pZAogICAg
X191bmluaXRpYWxpemVkX2RlZmF1bHRfYShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAg
ICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICAgICBhbGxvY2F0b3I8X1RwPiYpCiAg
ICB7IHN0ZDo6X191bmluaXRpYWxpemVkX2RlZmF1bHQoX19maXJzdCwgX19sYXN0KTsgfQoKCgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1NpemUsIHR5
cGVuYW1lIF9BbGxvY2F0b3I+CiAgICB2b2lkCiAgICBfX3VuaW5pdGlhbGl6ZWRfZGVmYXVsdF9u
X2EoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6ZSBfX24sCiAgICBfQWxsb2NhdG9yJiBf
X2FsbG9jKQogICAgewogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fY3VyID0gX19maXJzdDsKICAg
ICAgaWYgKHRydWUpCiB7CiAgIHR5cGVkZWYgX19nbnVfY3h4OjpfX2FsbG9jX3RyYWl0czxfQWxs
b2NhdG9yPiBfX3RyYWl0czsKICAgZm9yICg7IF9fbiA+IDA7IC0tX19uLCArK19fY3VyKQogICAg
IF9fdHJhaXRzOjpjb25zdHJ1Y3QoX19hbGxvYywgc3RkOjpfX2FkZHJlc3NvZigqX19jdXIpKTsK
IH0KICAgICAgaWYgKGZhbHNlKQogewogICBzdGQ6Ol9EZXN0cm95KF9fZmlyc3QsIF9fY3VyLCBf
X2FsbG9jKTsKICAgOwogfQogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJh
dG9yLCB0eXBlbmFtZSBfU2l6ZSwgdHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHZvaWQKICAgIF9f
dW5pbml0aWFsaXplZF9kZWZhdWx0X25fYShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9TaXpl
IF9fbiwKICAgIGFsbG9jYXRvcjxfVHA+JikKICAgIHsgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfZGVm
YXVsdF9uKF9fZmlyc3QsIF9fbik7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJh
dG9yLCB0eXBlbmFtZSBfU2l6ZSwKICAgIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICBf
Rm9yd2FyZEl0ZXJhdG9yCiAgICBfX3VuaW5pdGlhbGl6ZWRfY29weV9uKF9JbnB1dEl0ZXJhdG9y
IF9fZmlyc3QsIF9TaXplIF9fbiwKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX3Jlc3VsdCwgaW5w
dXRfaXRlcmF0b3JfdGFnKQogICAgewogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fY3VyID0gX19y
ZXN1bHQ7CiAgICAgIGlmICh0cnVlKQogewogICBmb3IgKDsgX19uID4gMDsgLS1fX24sICsrX19m
aXJzdCwgKytfX2N1cikKICAgICBzdGQ6Ol9Db25zdHJ1Y3Qoc3RkOjpfX2FkZHJlc3NvZigqX19j
dXIpLCAqX19maXJzdCk7CiAgIHJldHVybiBfX2N1cjsKIH0KICAgICAgaWYgKGZhbHNlKQogewog
ICBzdGQ6Ol9EZXN0cm95KF9fcmVzdWx0LCBfX2N1cik7CiAgIDsKIH0KICAgIH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfU2l6ZSwKICAgIHR5
cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyYXRvcgogICAg
X191bmluaXRpYWxpemVkX2NvcHlfbihfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1Np
emUgX19uLAogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fcmVzdWx0LAogICAgICByYW5kb21fYWNj
ZXNzX2l0ZXJhdG9yX3RhZykKICAgIHsgcmV0dXJuIHN0ZDo6dW5pbml0aWFsaXplZF9jb3B5KF9f
Zmlyc3QsIF9fZmlyc3QgKyBfX24sIF9fcmVzdWx0KTsgfQojIDY3MiAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF91bmluaXRp
YWxpemVkLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUg
X1NpemUsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVy
YXRvcgogICAgdW5pbml0aWFsaXplZF9jb3B5X24oX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX1Np
emUgX19uLAogICAgX0ZvcndhcmRJdGVyYXRvciBfX3Jlc3VsdCkKICAgIHsgcmV0dXJuIHN0ZDo6
X191bmluaXRpYWxpemVkX2NvcHlfbihfX2ZpcnN0LCBfX24sIF9fcmVzdWx0LAogICAgICBzdGQ6
Ol9faXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdCkpOyB9CgoKCn0KIyA2NiAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9tZW1vcnkiIDIgMwoj
IDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvYml0cy9zdGxfdGVtcGJ1Zi5oIiAxIDMKIyA1NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF90ZW1wYnVmLmgiIDMKI2Rl
ZmluZSBfU1RMX1RFTVBCVUZfSCAxCgoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChf
X3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgODMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfdGVtcGJ1Zi5oIiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgcGFpcjxfVHAqLCBwdHJkaWZmX3Q+CiAgICBn
ZXRfdGVtcG9yYXJ5X2J1ZmZlcihwdHJkaWZmX3QgX19sZW4pIG5vZXhjZXB0CiAgICB7CiAgICAg
IGNvbnN0IHB0cmRpZmZfdCBfX21heCA9CiBfX2dudV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8cHRy
ZGlmZl90Pjo6X19tYXggLyBzaXplb2YoX1RwKTsKICAgICAgaWYgKF9fbGVuID4gX19tYXgpCiBf
X2xlbiA9IF9fbWF4OwoKICAgICAgd2hpbGUgKF9fbGVuID4gMCkKIHsKICAgX1RwKiBfX3RtcCA9
IHN0YXRpY19jYXN0PF9UcCo+KDo6b3BlcmF0b3IgbmV3KF9fbGVuICogc2l6ZW9mKF9UcCksCiAg
ICAgICBzdGQ6Om5vdGhyb3cpKTsKICAgaWYgKF9fdG1wICE9IDApCiAgICAgcmV0dXJuIHN0ZDo6
cGFpcjxfVHAqLCBwdHJkaWZmX3Q+KF9fdG1wLCBfX2xlbik7CiAgIF9fbGVuIC89IDI7CiB9CiAg
ICAgIHJldHVybiBzdGQ6OnBhaXI8X1RwKiwgcHRyZGlmZl90PihzdGF0aWNfY2FzdDxfVHAqPigw
KSwgMCk7CiAgICB9CiMgMTEwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX3RlbXBidWYuaCIgMwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIGlubGluZSB2b2lkCiAgICByZXR1cm5fdGVtcG9yYXJ5X2J1ZmZlcihfVHAq
IF9fcCkKICAgIHsgOjpvcGVyYXRvciBkZWxldGUoX19wLCBzdGQ6Om5vdGhyb3cpOyB9CgoKCgoK
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9UcD4KICAg
IGNsYXNzIF9UZW1wb3JhcnlfYnVmZmVyCiAgICB7CgogICAgIAoKICAgIHB1YmxpYzoKICAgICAg
dHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKICAgICAgdHlwZWRlZiB2YWx1ZV90eXBlKiBwb2ludGVy
OwogICAgICB0eXBlZGVmIHBvaW50ZXIgaXRlcmF0b3I7CiAgICAgIHR5cGVkZWYgcHRyZGlmZl90
IHNpemVfdHlwZTsKCiAgICBwcm90ZWN0ZWQ6CiAgICAgIHNpemVfdHlwZSBfTV9vcmlnaW5hbF9s
ZW47CiAgICAgIHNpemVfdHlwZSBfTV9sZW47CiAgICAgIHBvaW50ZXIgX01fYnVmZmVyOwoKICAg
IHB1YmxpYzoKCiAgICAgIHNpemVfdHlwZQogICAgICBzaXplKCkgY29uc3QKICAgICAgeyByZXR1
cm4gX01fbGVuOyB9CgoKICAgICAgc2l6ZV90eXBlCiAgICAgIHJlcXVlc3RlZF9zaXplKCkgY29u
c3QKICAgICAgeyByZXR1cm4gX01fb3JpZ2luYWxfbGVuOyB9CgoKICAgICAgaXRlcmF0b3IKICAg
ICAgYmVnaW4oKQogICAgICB7IHJldHVybiBfTV9idWZmZXI7IH0KCgogICAgICBpdGVyYXRvcgog
ICAgICBlbmQoKQogICAgICB7IHJldHVybiBfTV9idWZmZXIgKyBfTV9sZW47IH0KCgoKCgogICAg
ICBfVGVtcG9yYXJ5X2J1ZmZlcihfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRl
cmF0b3IgX19sYXN0KTsKCiAgICAgIH5fVGVtcG9yYXJ5X2J1ZmZlcigpCiAgICAgIHsKIHN0ZDo6
X0Rlc3Ryb3koX01fYnVmZmVyLCBfTV9idWZmZXIgKyBfTV9sZW4pOwogc3RkOjpyZXR1cm5fdGVt
cG9yYXJ5X2J1ZmZlcihfTV9idWZmZXIpOwogICAgICB9CgogICAgcHJpdmF0ZToKCiAgICAgIF9U
ZW1wb3JhcnlfYnVmZmVyKGNvbnN0IF9UZW1wb3JhcnlfYnVmZmVyJik7CgogICAgICB2b2lkCiAg
ICAgIG9wZXJhdG9yPShjb25zdCBfVGVtcG9yYXJ5X2J1ZmZlciYpOwogICAgfTsKCgogIHRlbXBs
YXRlPGJvb2w+CiAgICBzdHJ1Y3QgX191bmluaXRpYWxpemVkX2NvbnN0cnVjdF9idWZfZGlzcGF0
Y2gKICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1BvaW50ZXIsIHR5cGVuYW1lIF9Gb3J3
YXJkSXRlcmF0b3I+CiAgICAgICAgc3RhdGljIHZvaWQKICAgICAgICBfX3VjcihfUG9pbnRlciBf
X2ZpcnN0LCBfUG9pbnRlciBfX2xhc3QsCiAgICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fc2VlZCkK
ICAgICAgICB7CiAgIGlmKF9fZmlyc3QgPT0gX19sYXN0KQogICAgIHJldHVybjsKCiAgIF9Qb2lu
dGVyIF9fY3VyID0gX19maXJzdDsKICAgaWYgKHRydWUpCiAgICAgewogICAgICAgc3RkOjpfQ29u
c3RydWN0KHN0ZDo6X19hZGRyZXNzb2YoKl9fZmlyc3QpLAogICAgICAgICBzdGQ6Om1vdmUoKl9f
c2VlZCkpOwogICAgICAgX1BvaW50ZXIgX19wcmV2ID0gX19jdXI7CiAgICAgICArK19fY3VyOwog
ICAgICAgZm9yKDsgX19jdXIgIT0gX19sYXN0OyArK19fY3VyLCArK19fcHJldikKICBzdGQ6Ol9D
b25zdHJ1Y3Qoc3RkOjpfX2FkZHJlc3NvZigqX19jdXIpLAogICAgc3RkOjptb3ZlKCpfX3ByZXYp
KTsKICAgICAgICpfX3NlZWQgPSBzdGQ6Om1vdmUoKl9fcHJldik7CiAgICAgfQogICBpZiAoZmFs
c2UpCiAgICAgewogICAgICAgc3RkOjpfRGVzdHJveShfX2ZpcnN0LCBfX2N1cik7CiAgICAgICA7
CiAgICAgfQogfQogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fdW5pbml0aWFsaXpl
ZF9jb25zdHJ1Y3RfYnVmX2Rpc3BhdGNoPHRydWU+CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9Qb2ludGVyLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgICAgIHN0YXRpYyB2
b2lkCiAgICAgICAgX191Y3IoX1BvaW50ZXIsIF9Qb2ludGVyLCBfRm9yd2FyZEl0ZXJhdG9yKSB7
IH0KICAgIH07CiMgMjI5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX3RlbXBidWYuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9Qb2ludGVyLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgaW5saW5lIHZvaWQKICAg
IF9fdW5pbml0aWFsaXplZF9jb25zdHJ1Y3RfYnVmKF9Qb2ludGVyIF9fZmlyc3QsIF9Qb2ludGVy
IF9fbGFzdCwKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX3NlZWQpCiAgICB7CiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8X1BvaW50ZXI+Ojp2YWx1ZV90eXBlCiBf
VmFsdWVUeXBlOwoKICAgICAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfY29uc3RydWN0X2J1Zl9kaXNw
YXRjaDwKICAgICAgICBfX2hhc190cml2aWFsX2NvbnN0cnVjdG9yKF9WYWx1ZVR5cGUpPjo6CiAg
IF9fdWNyKF9fZmlyc3QsIF9fbGFzdCwgX19zZWVkKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgogICAgX1RlbXBvcmFyeV9idWZmZXI8
X0ZvcndhcmRJdGVyYXRvciwgX1RwPjo6CiAgICBfVGVtcG9yYXJ5X2J1ZmZlcihfRm9yd2FyZEl0
ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0KQogICAgOiBfTV9vcmlnaW5h
bF9sZW4oc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QpKSwKICAgICAgX01fbGVuKDApLCBf
TV9idWZmZXIoMCkKICAgIHsKICAgICAgaWYgKHRydWUpCiB7CiAgIHN0ZDo6cGFpcjxwb2ludGVy
LCBzaXplX3R5cGU+IF9fcChzdGQ6OmdldF90ZW1wb3JhcnlfYnVmZmVyPAogICAgICAgICB2YWx1
ZV90eXBlPihfTV9vcmlnaW5hbF9sZW4pKTsKICAgX01fYnVmZmVyID0gX19wLmZpcnN0OwogICBf
TV9sZW4gPSBfX3Auc2Vjb25kOwogICBpZiAoX01fYnVmZmVyKQogICAgIHN0ZDo6X191bmluaXRp
YWxpemVkX2NvbnN0cnVjdF9idWYoX01fYnVmZmVyLCBfTV9idWZmZXIgKyBfTV9sZW4sCiAgICAg
ICAgICAgIF9fZmlyc3QpOwogfQogICAgICBpZiAoZmFsc2UpCiB7CiAgIHN0ZDo6cmV0dXJuX3Rl
bXBvcmFyeV9idWZmZXIoX01fYnVmZmVyKTsKICAgX01fYnVmZmVyID0gMDsKICAgX01fbGVuID0g
MDsKICAgOwogfQogICAgfQoKCn0KIyA2NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9tZW1vcnkiIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfcmF3X3N0
b3JhZ2VfaXRlci5oIiAxIDMKIyA1NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9yYXdfc3RvcmFnZV9pdGVyLmgiIDMKI2Rl
ZmluZSBfU1RMX1JBV19TVE9SQUdFX0lURVJBVE9SX0ggMQoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJp
YnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCgoKCiAgdGVtcGxhdGUg
PGNsYXNzIF9PdXRwdXRJdGVyYXRvciwgY2xhc3MgX1RwPgogICAgY2xhc3MgcmF3X3N0b3JhZ2Vf
aXRlcmF0b3IKICAgIDogcHVibGljIGl0ZXJhdG9yPG91dHB1dF9pdGVyYXRvcl90YWcsIHZvaWQs
IHZvaWQsIHZvaWQsIHZvaWQ+CiAgICB7CiAgICBwcm90ZWN0ZWQ6CiAgICAgIF9PdXRwdXRJdGVy
YXRvciBfTV9pdGVyOwoKICAgIHB1YmxpYzoKICAgICAgZXhwbGljaXQKICAgICAgcmF3X3N0b3Jh
Z2VfaXRlcmF0b3IoX091dHB1dEl0ZXJhdG9yIF9feCkKICAgICAgOiBfTV9pdGVyKF9feCkge30K
CiAgICAgIHJhd19zdG9yYWdlX2l0ZXJhdG9yJgogICAgICBvcGVyYXRvciooKSB7IHJldHVybiAq
dGhpczsgfQoKICAgICAgcmF3X3N0b3JhZ2VfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yPShjb25z
dCBfVHAmIF9fZWxlbWVudCkKICAgICAgewogc3RkOjpfQ29uc3RydWN0KHN0ZDo6X19hZGRyZXNz
b2YoKl9NX2l0ZXIpLCBfX2VsZW1lbnQpOwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICBy
YXdfc3RvcmFnZV9pdGVyYXRvcjxfT3V0cHV0SXRlcmF0b3IsIF9UcD4mCiAgICAgIG9wZXJhdG9y
KysoKQogICAgICB7CiArK19NX2l0ZXI7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgICAgIHJh
d19zdG9yYWdlX2l0ZXJhdG9yPF9PdXRwdXRJdGVyYXRvciwgX1RwPgogICAgICBvcGVyYXRvcisr
KGludCkKICAgICAgewogcmF3X3N0b3JhZ2VfaXRlcmF0b3I8X091dHB1dEl0ZXJhdG9yLCBfVHA+
IF9fdG1wID0gKnRoaXM7CiArK19NX2l0ZXI7CiByZXR1cm4gX190bXA7CiAgICAgIH0KICAgIH07
CgoKfQojIDY4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL21lbW9yeSIgMiAzCgoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy90eXBlaW5mbyIgMSAzCiMgMzAgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvdHlwZWluZm8i
IDMKI2RlZmluZSBfVFlQRUlORk8gCgogICAgICAgCiMgMzMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvdHlwZWluZm8iIDMKCgoKIyAxICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Jp
dHMvaGFzaF9ieXRlcy5oIiAxIDMKIyAzMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2hhc2hfYnl0ZXMuaCIgMwojZGVmaW5lIF9I
QVNIX0JZVEVTX0ggMQoKICAgICAgIAojIDM0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvaGFzaF9ieXRlcy5oIiAzCgoKCm5hbWVz
cGFjZSBzdGQKewoKCgoKCgoKICBzaXplX3QKICBfSGFzaF9ieXRlcyhjb25zdCB2b2lkKiBfX3B0
ciwgc2l6ZV90IF9fbGVuLCBzaXplX3QgX19zZWVkKTsKCgoKCgogIHNpemVfdAogIF9GbnZfaGFz
aF9ieXRlcyhjb25zdCB2b2lkKiBfX3B0ciwgc2l6ZV90IF9fbGVuLCBzaXplX3QgX19zZWVkKTsK
Cgp9CiMgMzcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvdHlwZWluZm8iIDIgMwoKCiNwcmFnbWEgR0NDIHZpc2liaWxpdHkgcHVzaChkZWZh
dWx0KQoKZXh0ZXJuICJDKysiIHsKCm5hbWVzcGFjZSBfX2N4eGFiaXYxCnsKICBjbGFzcyBfX2Ns
YXNzX3R5cGVfaW5mbzsKfQojIDY4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL3R5cGVpbmZvIiAzCiNkZWZpbmUgX19HWFhfTUVSR0VEX1RZ
UEVJTkZPX05BTUVTIDAKIyA4MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy90eXBlaW5mbyIgMwpuYW1lc3BhY2Ugc3RkCnsKCgoKCgoKICBj
bGFzcyB0eXBlX2luZm8KICB7CiAgcHVibGljOgoKCgoKICAgIHZpcnR1YWwgfnR5cGVfaW5mbygp
OwoKCgogICAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IG5vZXhjZXB0CiAgICB7IHJldHVybiBf
X25hbWVbMF0gPT0gJyonID8gX19uYW1lICsgMSA6IF9fbmFtZTsgfQoKCgoKCiAgICBib29sIGJl
Zm9yZShjb25zdCB0eXBlX2luZm8mIF9fYXJnKSBjb25zdCBub2V4Y2VwdDsKICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCB0eXBlX2luZm8mIF9fYXJnKSBjb25zdCBub2V4Y2VwdDsKIyAxMzYgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvdHlw
ZWluZm8iIDMKICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCB0eXBlX2luZm8mIF9fYXJnKSBjb25z
dCBub2V4Y2VwdAogICAgeyByZXR1cm4gIW9wZXJhdG9yPT0oX19hcmcpOyB9CgoKICAgIHNpemVf
dCBoYXNoX2NvZGUoKSBjb25zdCBub2V4Y2VwdAogICAgewoKICAgICAgcmV0dXJuIF9IYXNoX2J5
dGVzKG5hbWUoKSwgX19idWlsdGluX3N0cmxlbihuYW1lKCkpLAogICAgc3RhdGljX2Nhc3Q8c2l6
ZV90PigweGM3MGY2OTA3VUwpKTsKCgoKICAgIH0KCgoKICAgIHZpcnR1YWwgYm9vbCBfX2lzX3Bv
aW50ZXJfcCgpIGNvbnN0OwoKCiAgICB2aXJ0dWFsIGJvb2wgX19pc19mdW5jdGlvbl9wKCkgY29u
c3Q7CgoKCgoKCgogICAgdmlydHVhbCBib29sIF9fZG9fY2F0Y2goY29uc3QgdHlwZV9pbmZvICpf
X3Rocl90eXBlLCB2b2lkICoqX190aHJfb2JqLAogICAgICAgdW5zaWduZWQgX19vdXRlcikgY29u
c3Q7CgoKICAgIHZpcnR1YWwgYm9vbCBfX2RvX3VwY2FzdChjb25zdCBfX2N4eGFiaXYxOjpfX2Ns
YXNzX3R5cGVfaW5mbyAqX190YXJnZXQsCiAgICAgICAgdm9pZCAqKl9fb2JqX3B0cikgY29uc3Q7
CgogIHByb3RlY3RlZDoKICAgIGNvbnN0IGNoYXIgKl9fbmFtZTsKCiAgICBleHBsaWNpdCB0eXBl
X2luZm8oY29uc3QgY2hhciAqX19uKTogX19uYW1lKF9fbikgeyB9CgogIHByaXZhdGU6CgogICAg
dHlwZV9pbmZvJiBvcGVyYXRvcj0oY29uc3QgdHlwZV9pbmZvJik7CiAgICB0eXBlX2luZm8oY29u
c3QgdHlwZV9pbmZvJik7CiAgfTsKCgoKCgoKCiAgY2xhc3MgYmFkX2Nhc3QgOiBwdWJsaWMgZXhj
ZXB0aW9uCiAgewogIHB1YmxpYzoKICAgIGJhZF9jYXN0KCkgbm9leGNlcHQgeyB9CgoKCiAgICB2
aXJ0dWFsIH5iYWRfY2FzdCgpIG5vZXhjZXB0OwoKCiAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHdo
YXQoKSBjb25zdCBub2V4Y2VwdDsKICB9OwoKCgoKCiAgY2xhc3MgYmFkX3R5cGVpZCA6IHB1Ymxp
YyBleGNlcHRpb24KICB7CiAgcHVibGljOgogICAgYmFkX3R5cGVpZCAoKSBub2V4Y2VwdCB7IH0K
CgoKICAgIHZpcnR1YWwgfmJhZF90eXBlaWQoKSBub2V4Y2VwdDsKCgogICAgdmlydHVhbCBjb25z
dCBjaGFyKiB3aGF0KCkgY29uc3Qgbm9leGNlcHQ7CiAgfTsKfQoKfQoKI3ByYWdtYSBHQ0Mgdmlz
aWJpbGl0eSBwb3AKIyA3MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9tZW1vcnkiIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvaW9zZndkIiAxIDMKIyAzNCAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9pb3Nmd2Qi
IDMKI2RlZmluZSBfR0xJQkNYWF9JT1NGV0QgMQoKICAgICAgIAojIDM3ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2lvc2Z3ZCIgMwoKCiMg
MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9iaXRzL3N0cmluZ2Z3ZC5oIiAxIDMKIyAzNSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0cmluZ2Z3ZC5oIiAzCiNkZWZpbmUg
X1NUUklOR0ZXRF9IIDEKCiAgICAgICAKIyAzOCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0cmluZ2Z3ZC5oIiAzCgoKCgpuYW1l
c3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsK
CgoKCgoKCgogIHRlbXBsYXRlPGNsYXNzIF9DaGFyVD4KICAgIHN0cnVjdCBjaGFyX3RyYWl0czsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFp
dHM8X0NoYXJUPiwKICAgICAgICAgICB0eXBlbmFtZSBfQWxsb2MgPSBhbGxvY2F0b3I8X0NoYXJU
PiA+CiAgICBjbGFzcyBiYXNpY19zdHJpbmc7CgogIHRlbXBsYXRlPD4gc3RydWN0IGNoYXJfdHJh
aXRzPGNoYXI+OwoKCiAgdHlwZWRlZiBiYXNpY19zdHJpbmc8Y2hhcj4gc3RyaW5nOwoKCiAgdGVt
cGxhdGU8PiBzdHJ1Y3QgY2hhcl90cmFpdHM8d2NoYXJfdD47CgoKICB0eXBlZGVmIGJhc2ljX3N0
cmluZzx3Y2hhcl90PiB3c3RyaW5nOwoKCgoKCiAgdGVtcGxhdGU8PiBzdHJ1Y3QgY2hhcl90cmFp
dHM8Y2hhcjE2X3Q+OwogIHRlbXBsYXRlPD4gc3RydWN0IGNoYXJfdHJhaXRzPGNoYXIzMl90PjsK
CgogIHR5cGVkZWYgYmFzaWNfc3RyaW5nPGNoYXIxNl90PiB1MTZzdHJpbmc7CgoKICB0eXBlZGVm
IGJhc2ljX3N0cmluZzxjaGFyMzJfdD4gdTMyc3RyaW5nOwoKCgoKCn0KIyA0MCAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9pb3Nmd2QiIDIg
MwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvYml0cy9wb3N0eXBlcy5oIiAxIDMKIyAzNiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3Bvc3R5cGVzLmgiIDMKI2RlZmlu
ZSBfR0xJQkNYWF9QT1NUWVBFU19IIDEKCiAgICAgICAKIyAzOSAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3Bvc3R5cGVzLmgiIDMK
CiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9jd2NoYXIiIDEgMwojIDM5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2N3Y2hhciIgMwogICAgICAgCiMgNDAgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvY3djaGFyIiAzCgoK
CgojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMgNAojIDI2ICIvdXNyL2luY2x1ZGUvd2No
YXIuaCIgMyA0CiNkZWZpbmUgX1dDSEFSX0ggMQoKCgoKCiNkZWZpbmUgX19uZWVkX19fRklMRSAK
CiNkZWZpbmUgX19uZWVkX0ZJTEUgCgojIDEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAxIDMgNAoj
IDQ0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CnN0cnVjdCBfSU9fRklMRTsKCgoKdHlwZWRl
ZiBzdHJ1Y3QgX0lPX0ZJTEUgRklMRTsKCgoKCgoKCiNkZWZpbmUgX19GSUxFX2RlZmluZWQgMQoK
I3VuZGVmIF9fbmVlZF9GSUxFCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX19GSUxFOwoK
I2RlZmluZSBfX19fRklMRV9kZWZpbmVkIDEKCiN1bmRlZiBfX25lZWRfX19GSUxFCiMgMzcgIi91
c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMgNAoKI2RlZmluZSBfX25lZWRfX192YV9saXN0IAojIDEg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNs
dWRlL3N0ZGFyZy5oIiAxIDMgNAojIDM0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CiN1bmRlZiBfX25lZWRf
X192YV9saXN0CgoKCgojZGVmaW5lIF9fR05VQ19WQV9MSVNUIAp0eXBlZGVmIF9fYnVpbHRpbl92
YV9saXN0IF9fZ251Y192YV9saXN0OwojIDQwICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzIDQK
CgoKCiNkZWZpbmUgX19uZWVkX3NpemVfdCAKI2RlZmluZSBfX25lZWRfd2NoYXJfdCAKI2RlZmlu
ZSBfX25lZWRfTlVMTCAKCgojdW5kZWYgX19uZWVkX3dpbnRfdAojZGVmaW5lIF9fbmVlZF93aW50
X3QgCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQu
OS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMjM0ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRl
ZiBfX25lZWRfc2l6ZV90CiMgMzQzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfd2No
YXJfdAoKCgoKI2RlZmluZSBfV0lOVF9UIAoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90
OwoKI3VuZGVmIF9fbmVlZF93aW50X3QKIyAzOTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIE5V
TEwKCiNkZWZpbmUgTlVMTCBfX251bGwKIyA0MDggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9f
bmVlZF9OVUxMCiMgNTIgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMgNAojIDc1ICIvdXNyL2lu
Y2x1ZGUvd2NoYXIuaCIgMyA0CiNkZWZpbmUgX19DT1JSRUNUX0lTT19DUFBfV0NIQVJfSF9QUk9U
TyAKCgoKCiNkZWZpbmUgX19fX21ic3RhdGVfdF9kZWZpbmVkIDEKCnR5cGVkZWYgc3RydWN0CnsK
ICBpbnQgX19jb3VudDsKICB1bmlvbgogIHsKCiAgICB1bnNpZ25lZCBpbnQgX193Y2g7CgoKCiAg
ICBjaGFyIF9fd2NoYls0XTsKICB9IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CgojdW5kZWYgX19u
ZWVkX21ic3RhdGVfdAoKCgoKCgoKCgp0eXBlZGVmIF9fbWJzdGF0ZV90IG1ic3RhdGVfdDsKCiNk
ZWZpbmUgX19tYnN0YXRlX3RfZGVmaW5lZCAxCgoKCgojIDEyMiAiL3Vzci9pbmNsdWRlL3djaGFy
LmgiIDMgNAojZGVmaW5lIFdFT0YgKDB4ZmZmZmZmZmZ1KQojIDEzMiAiL3Vzci9pbmNsdWRlL3dj
aGFyLmgiIDMgNApleHRlcm4gIkMiIHsKCgoKCnN0cnVjdCB0bTsKCgoKCgoKCgoKZXh0ZXJuIHdj
aGFyX3QgKndjc2NweSAod2NoYXJfdCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgIGNvbnN0IHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19zcmMpIHRocm93ICgpOwoKZXh0ZXJuIHdjaGFyX3QgKndjc25jcHkg
KHdjaGFyX3QgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgY29uc3Qgd2NoYXJfdCAqX19yZXN0cmlj
dCBfX3NyYywgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgpleHRlcm4gd2NoYXJfdCAqd2Nz
Y2F0ICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgY29uc3Qgd2NoYXJfdCAqX19yZXN0
cmljdCBfX3NyYykgdGhyb3cgKCk7CgpleHRlcm4gd2NoYXJfdCAqd2NzbmNhdCAod2NoYXJfdCAq
X19yZXN0cmljdCBfX2Rlc3QsCiAgICBjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fc3JjLCBz
aXplX3QgX19uKQogICAgIHRocm93ICgpOwoKCmV4dGVybiBpbnQgd2NzY21wIChjb25zdCB3Y2hh
cl90ICpfX3MxLCBjb25zdCB3Y2hhcl90ICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCB3Y3NuY21wIChjb25zdCB3Y2hhcl90ICpfX3Mx
LCBjb25zdCB3Y2hhcl90ICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIGludCB3Y3NjYXNlY21wIChjb25zdCB3Y2hh
cl90ICpfX3MxLCBjb25zdCB3Y2hhcl90ICpfX3MyKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHdj
c25jYXNlY21wIChjb25zdCB3Y2hhcl90ICpfX3MxLCBjb25zdCB3Y2hhcl90ICpfX3MyLAogICBz
aXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHdjc2Nhc2VjbXBfbCAoY29uc3Qg
d2NoYXJfdCAqX19zMSwgY29uc3Qgd2NoYXJfdCAqX19zMiwKICAgIF9fbG9jYWxlX3QgX19sb2Mp
IHRocm93ICgpOwoKZXh0ZXJuIGludCB3Y3NuY2FzZWNtcF9sIChjb25zdCB3Y2hhcl90ICpfX3Mx
LCBjb25zdCB3Y2hhcl90ICpfX3MyLAogICAgIHNpemVfdCBfX24sIF9fbG9jYWxlX3QgX19sb2Mp
IHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgd2NzY29sbCAoY29uc3Qgd2NoYXJfdCAqX19zMSwg
Y29uc3Qgd2NoYXJfdCAqX19zMikgdGhyb3cgKCk7CgoKCmV4dGVybiBzaXplX3Qgd2NzeGZybSAo
d2NoYXJfdCAqX19yZXN0cmljdCBfX3MxLAogICAgICAgICBjb25zdCB3Y2hhcl90ICpfX3Jlc3Ry
aWN0IF9fczIsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCgoKCmV4dGVybiBpbnQgd2NzY29s
bF9sIChjb25zdCB3Y2hhcl90ICpfX3MxLCBjb25zdCB3Y2hhcl90ICpfX3MyLAogICAgICAgIF9f
bG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgoKZXh0ZXJuIHNpemVfdCB3Y3N4ZnJtX2wgKHdj
aGFyX3QgKl9fczEsIGNvbnN0IHdjaGFyX3QgKl9fczIsCiAgICBzaXplX3QgX19uLCBfX2xvY2Fs
ZV90IF9fbG9jKSB0aHJvdyAoKTsKCgpleHRlcm4gd2NoYXJfdCAqd2NzZHVwIChjb25zdCB3Y2hh
cl90ICpfX3MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgoKZXh0
ZXJuICJDKysiIHdjaGFyX3QgKndjc2NociAod2NoYXJfdCAqX193Y3MsIHdjaGFyX3QgX193YykK
ICAgICB0aHJvdyAoKSBfX2FzbSAoIndjc2NociIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwpleHRlcm4gIkMrKyIgY29uc3Qgd2NoYXJfdCAqd2NzY2hyIChjb25zdCB3Y2hhcl90ICpfX3dj
cywgd2NoYXJfdCBfX3djKQogICAgIHRocm93ICgpIF9fYXNtICgid2NzY2hyIikgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKCmV4dGVybiAiQysrIiB3Y2hhcl90ICp3Y3NyY2hyICh3
Y2hhcl90ICpfX3djcywgd2NoYXJfdCBfX3djKQogICAgIHRocm93ICgpIF9fYXNtICgid2NzcmNo
ciIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwpleHRlcm4gIkMrKyIgY29uc3Qgd2NoYXJf
dCAqd2NzcmNociAoY29uc3Qgd2NoYXJfdCAqX193Y3MsIHdjaGFyX3QgX193YykKICAgICB0aHJv
dyAoKSBfX2FzbSAoIndjc3JjaHIiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgoK
CgoKZXh0ZXJuIHdjaGFyX3QgKndjc2Nocm51bCAoY29uc3Qgd2NoYXJfdCAqX19zLCB3Y2hhcl90
IF9fd2MpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0
ZXJuIHNpemVfdCB3Y3Njc3BuIChjb25zdCB3Y2hhcl90ICpfX3djcywgY29uc3Qgd2NoYXJfdCAq
X19yZWplY3QpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0
ZXJuIHNpemVfdCB3Y3NzcG4gKGNvbnN0IHdjaGFyX3QgKl9fd2NzLCBjb25zdCB3Y2hhcl90ICpf
X2FjY2VwdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRl
cm4gIkMrKyIgd2NoYXJfdCAqd2NzcGJyayAod2NoYXJfdCAqX193Y3MsIGNvbnN0IHdjaGFyX3Qg
Kl9fYWNjZXB0KQogICAgIHRocm93ICgpIF9fYXNtICgid2NzcGJyayIpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwpleHRlcm4gIkMrKyIgY29uc3Qgd2NoYXJfdCAqd2NzcGJyayAoY29uc3Qg
d2NoYXJfdCAqX193Y3MsCiAgICAgICAgIGNvbnN0IHdjaGFyX3QgKl9fYWNjZXB0KQogICAgIHRo
cm93ICgpIF9fYXNtICgid2NzcGJyayIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoK
CgpleHRlcm4gIkMrKyIgd2NoYXJfdCAqd2Nzc3RyICh3Y2hhcl90ICpfX2hheXN0YWNrLCBjb25z
dCB3Y2hhcl90ICpfX25lZWRsZSkKICAgICB0aHJvdyAoKSBfX2FzbSAoIndjc3N0ciIpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwpleHRlcm4gIkMrKyIgY29uc3Qgd2NoYXJfdCAqd2Nzc3Ry
IChjb25zdCB3Y2hhcl90ICpfX2hheXN0YWNrLAogICAgICAgIGNvbnN0IHdjaGFyX3QgKl9fbmVl
ZGxlKQogICAgIHRocm93ICgpIF9fYXNtICgid2Nzc3RyIikgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgoKCgoKCmV4dGVybiB3Y2hhcl90ICp3Y3N0b2sgKHdjaGFyX3QgKl9fcmVzdHJpY3Qg
X19zLAogICBjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgIHdjaGFyX3QgKipf
X3Jlc3RyaWN0IF9fcHRyKSB0aHJvdyAoKTsKCgpleHRlcm4gc2l6ZV90IHdjc2xlbiAoY29uc3Qg
d2NoYXJfdCAqX19zKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpl
eHRlcm4gIkMrKyIgd2NoYXJfdCAqd2Nzd2NzICh3Y2hhcl90ICpfX2hheXN0YWNrLCBjb25zdCB3
Y2hhcl90ICpfX25lZWRsZSkKICAgICB0aHJvdyAoKSBfX2FzbSAoIndjc3djcyIpIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwpleHRlcm4gIkMrKyIgY29uc3Qgd2NoYXJfdCAqd2Nzd2NzIChj
b25zdCB3Y2hhcl90ICpfX2hheXN0YWNrLAogICAgICAgIGNvbnN0IHdjaGFyX3QgKl9fbmVlZGxl
KQogICAgIHRocm93ICgpIF9fYXNtICgid2Nzd2NzIikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CiMgMzA2ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0CmV4dGVybiBzaXplX3Qgd2Nzbmxl
biAoY29uc3Qgd2NoYXJfdCAqX19zLCBzaXplX3QgX19tYXhsZW4pCiAgICAgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKCmV4dGVybiAiQysrIiB3Y2hhcl90ICp3bWVt
Y2hyICh3Y2hhcl90ICpfX3MsIHdjaGFyX3QgX19jLCBzaXplX3QgX19uKQogICAgIHRocm93ICgp
IF9fYXNtICgid21lbWNociIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwpleHRlcm4gIkMr
KyIgY29uc3Qgd2NoYXJfdCAqd21lbWNociAoY29uc3Qgd2NoYXJfdCAqX19zLCB3Y2hhcl90IF9f
YywKICAgICAgICAgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2FzbSAoIndtZW1jaHIiKSBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgoKZXh0ZXJuIGludCB3bWVtY21wIChjb25z
dCB3Y2hhcl90ICpfX3MxLCBjb25zdCB3Y2hhcl90ICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB3Y2hhcl90ICp3bWVt
Y3B5ICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fczEsCiAgICBjb25zdCB3Y2hhcl90ICpfX3Jlc3Ry
aWN0IF9fczIsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gd2NoYXJfdCAqd21lbW1v
dmUgKHdjaGFyX3QgKl9fczEsIGNvbnN0IHdjaGFyX3QgKl9fczIsIHNpemVfdCBfX24pCiAgICAg
dGhyb3cgKCk7CgoKZXh0ZXJuIHdjaGFyX3QgKndtZW1zZXQgKHdjaGFyX3QgKl9fcywgd2NoYXJf
dCBfX2MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCmV4dGVybiB3Y2hhcl90ICp3bWVtcGNw
eSAod2NoYXJfdCAqX19yZXN0cmljdCBfX3MxLAogICAgIGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJp
Y3QgX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIHdpbnRfdCBi
dG93YyAoaW50IF9fYykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgd2N0b2IgKHdpbnRfdCBfX2Mp
IHRocm93ICgpOwoKCgpleHRlcm4gaW50IG1ic2luaXQgKGNvbnN0IG1ic3RhdGVfdCAqX19wcykg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBzaXplX3QgbWJy
dG93YyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3YywKICAgICAgICAgY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3MsIHNpemVfdCBfX24sCiAgICAgICAgIG1ic3RhdGVfdCAqX19yZXN0cmljdCBf
X3ApIHRocm93ICgpOwoKCmV4dGVybiBzaXplX3Qgd2NydG9tYiAoY2hhciAqX19yZXN0cmljdCBf
X3MsIHdjaGFyX3QgX193YywKICAgICAgICAgbWJzdGF0ZV90ICpfX3Jlc3RyaWN0IF9fcHMpIHRo
cm93ICgpOwoKCmV4dGVybiBzaXplX3QgX19tYnJsZW4gKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19zLCBzaXplX3QgX19uLAogICBtYnN0YXRlX3QgKl9fcmVzdHJpY3QgX19wcykgdGhyb3cgKCk7
CmV4dGVybiBzaXplX3QgbWJybGVuIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90
IF9fbiwKICAgICAgICBtYnN0YXRlX3QgKl9fcmVzdHJpY3QgX19wcykgdGhyb3cgKCk7CgoKCgoK
CgoKZXh0ZXJuIHdpbnRfdCBfX2J0b3djX2FsaWFzIChpbnQgX19jKSBfX2FzbSAoImJ0b3djIik7
CmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSB3aW50X3QK
X19hdHRyaWJ1dGVfXyAoKF9fbGVhZl9fKSkgYnRvd2MgKGludCBfX2MpIHRocm93ICgpCnsgcmV0
dXJuIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19jKSAmJiBfX2MgPj0gJ1wwJyAmJiBfX2MgPD0g
J1x4N2YnCiAgID8gKHdpbnRfdCkgX19jIDogX19idG93Y19hbGlhcyAoX19jKSk7IH0KCmV4dGVy
biBpbnQgX193Y3RvYl9hbGlhcyAod2ludF90IF9fYykgX19hc20gKCJ3Y3RvYiIpOwpleHRlcm4g
X19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgaW50Cl9fYXR0cmlidXRl
X18gKChfX2xlYWZfXykpIHdjdG9iICh3aW50X3QgX193YykgdGhyb3cgKCkKeyByZXR1cm4gKF9f
YnVpbHRpbl9jb25zdGFudF9wIChfX3djKSAmJiBfX3djID49IEwnXDAnICYmIF9fd2MgPD0gTCdc
eDdmJwogICA/IChpbnQpIF9fd2MgOiBfX3djdG9iX2FsaWFzIChfX3djKSk7IH0KCmV4dGVybiBf
X2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBzaXplX3QKX19hdHRyaWJ1
dGVfXyAoKF9fbGVhZl9fKSkgbWJybGVuIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6
ZV90IF9fbiwgbWJzdGF0ZV90ICpfX3Jlc3RyaWN0IF9fcHMpIHRocm93ICgpCgp7IHJldHVybiAo
X19wcyAhPSBfX251bGwKICAgPyBtYnJ0b3djIChfX251bGwsIF9fcywgX19uLCBfX3BzKSA6IF9f
bWJybGVuIChfX3MsIF9fbiwgX19udWxsKSk7IH0KCgoKCgpleHRlcm4gc2l6ZV90IG1ic3J0b3dj
cyAod2NoYXJfdCAqX19yZXN0cmljdCBfX2RzdCwKICAgIGNvbnN0IGNoYXIgKipfX3Jlc3RyaWN0
IF9fc3JjLCBzaXplX3QgX19sZW4sCiAgICBtYnN0YXRlX3QgKl9fcmVzdHJpY3QgX19wcykgdGhy
b3cgKCk7CgoKCmV4dGVybiBzaXplX3Qgd2NzcnRvbWJzIChjaGFyICpfX3Jlc3RyaWN0IF9fZHN0
LAogICAgY29uc3Qgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX2xlbiwKICAg
IG1ic3RhdGVfdCAqX19yZXN0cmljdCBfX3BzKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIHNpemVf
dCBtYnNucnRvd2NzICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZHN0LAogICAgIGNvbnN0IGNoYXIg
KipfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19ubWMsCiAgICAgc2l6ZV90IF9fbGVuLCBtYnN0
YXRlX3QgKl9fcmVzdHJpY3QgX19wcykgdGhyb3cgKCk7CgoKCmV4dGVybiBzaXplX3Qgd2NzbnJ0
b21icyAoY2hhciAqX19yZXN0cmljdCBfX2RzdCwKICAgICBjb25zdCB3Y2hhcl90ICoqX19yZXN0
cmljdCBfX3NyYywKICAgICBzaXplX3QgX19ud2MsIHNpemVfdCBfX2xlbiwKICAgICBtYnN0YXRl
X3QgKl9fcmVzdHJpY3QgX19wcykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgd2N3aWR0aCAo
d2NoYXJfdCBfX2MpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHdjc3dpZHRoIChjb25zdCB3Y2hh
cl90ICpfX3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIHdjc3Rv
ZCAoY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgd2NoYXJfdCAqKl9f
cmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgoKCmV4dGVybiBmbG9hdCB3Y3N0b2YgKGNv
bnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgd2NoYXJfdCAqKl9fcmVzdHJp
Y3QgX19lbmRwdHIpIHRocm93ICgpOwpleHRlcm4gbG9uZyBkb3VibGUgd2NzdG9sZCAoY29uc3Qg
d2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBf
X2VuZHB0cikgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gbG9uZyBpbnQgd2NzdG9sIChjb25zdCB3
Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgd2Nz
dG91bCAoY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgIHdjaGFyX3QgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIHRocm93ICgpOwoKCgoKCgpfX2V4
dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHdjc3RvbGwgKGNvbnN0IHdjaGFyX3QgKl9f
cmVzdHJpY3QgX19ucHRyLAogICAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwg
aW50IF9fYmFzZSkKICAgICB0aHJvdyAoKTsKCgoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBsb25nIGludCB3Y3N0b3VsbCAoY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25w
dHIsCiAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgaW50IF9fYmFzZSkg
dGhyb3cgKCk7CgoKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgd2NzdG9x
IChjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICB3Y2hhcl90ICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKTsKCgoKX19leHRlbnNp
b25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCB3Y3N0b3VxIChjb25zdCB3Y2hhcl90
ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwKICAgICAgICAgICBpbnQgX19iYXNlKSB0aHJvdyAoKTsKIyA1MzAgIi91c3IvaW5jbHVk
ZS93Y2hhci5oIiAzIDQKZXh0ZXJuIGxvbmcgaW50IHdjc3RvbF9sIChjb25zdCB3Y2hhcl90ICpf
X3Jlc3RyaWN0IF9fbnB0ciwKICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50
IF9fYmFzZSwKICAgICBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCmV4dGVybiB1bnNpZ25l
ZCBsb25nIGludCB3Y3N0b3VsX2wgKGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAog
ICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgIGludCBfX2Jhc2Us
IF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBs
b25nIGludCB3Y3N0b2xsX2wgKGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg
d2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90
IF9fbG9jKSB0aHJvdyAoKTsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9u
ZyBpbnQgd2NzdG91bGxfbCAoY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgIGludCBfX2Jhc2UsIF9fbG9j
YWxlX3QgX19sb2MpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIHdjc3RvZF9sIChjb25z
dCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgd2Nz
dG9mX2wgKGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICB3Y2hhcl90
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAoKTsK
CmV4dGVybiBsb25nIGRvdWJsZSB3Y3N0b2xkX2wgKGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3Qg
X19ucHRyLAogICAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAg
X19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiB3Y2hhcl90ICp3Y3BjcHkg
KHdjaGFyX3QgKl9fcmVzdHJpY3QgX19kZXN0LAogICBjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0
IF9fc3JjKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHdjaGFyX3QgKndjcG5jcHkgKHdjaGFyX3QgKl9f
cmVzdHJpY3QgX19kZXN0LAogICAgY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3NyYywgc2l6
ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIF9fRklMRSAqb3Blbl93bWVtc3Ry
ZWFtICh3Y2hhcl90ICoqX19idWZsb2MsIHNpemVfdCAqX19zaXplbG9jKSB0aHJvdyAoKTsKCgoK
CgoKZXh0ZXJuIGludCBmd2lkZSAoX19GSUxFICpfX2ZwLCBpbnQgX19tb2RlKSB0aHJvdyAoKTsK
CgoKCgoKZXh0ZXJuIGludCBmd3ByaW50ZiAoX19GSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAog
ICAgICAgY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKCmV4
dGVybiBpbnQgd3ByaW50ZiAoY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4u
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDsKCmV4dGVybiBpbnQgc3dwcmludGYgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zLCBzaXpl
X3QgX19uLAogICAgICAgY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQog
ICAgIHRocm93ICgpIDsKCgoKCgpleHRlcm4gaW50IHZmd3ByaW50ZiAoX19GSUxFICpfX3Jlc3Ry
aWN0IF9fcywKICAgICAgICBjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAg
ICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKCmV4dGVybiBpbnQgdndwcmludGYgKGNv
bnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICBfX2dudWNfdmFfbGlzdCBf
X2FyZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA7CgoKZXh0ZXJuIGludCB2c3dwcmludGYgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19z
LCBzaXplX3QgX19uLAogICAgICAgIGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQs
CiAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgOwoKCgoKCgpleHRl
cm4gaW50IGZ3c2NhbmYgKF9fRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgY29uc3Qg
d2NoYXJfdCAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoKZXh0ZXJuIGludCB3c2Nh
bmYgKGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCmV4dGVybiBp
bnQgc3dzY2FuZiAoY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3MsCiAgICAgIGNvbnN0IHdj
aGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICB0aHJvdyAoKSA7CiMgNjgwICIv
dXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0CgoKCgoKCgoKCmV4dGVybiBpbnQgdmZ3c2NhbmYgKF9f
RklMRSAqX19yZXN0cmljdCBfX3MsCiAgICAgICBjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9f
Zm9ybWF0LAogICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKCgpleHRlcm4gaW50IHZ3
c2NhbmYgKGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgIF9fZ251Y192
YV9saXN0IF9fYXJnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOwoKZXh0ZXJuIGludCB2c3dzY2FuZiAoY29uc3Qgd2NoYXJfdCAqX19y
ZXN0cmljdCBfX3MsCiAgICAgICBjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAog
ICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgOwojIDczNiAiL3Vzci9p
bmNsdWRlL3djaGFyLmgiIDMgNAoKCgoKCgoKCgpleHRlcm4gd2ludF90IGZnZXR3YyAoX19GSUxF
ICpfX3N0cmVhbSk7CmV4dGVybiB3aW50X3QgZ2V0d2MgKF9fRklMRSAqX19zdHJlYW0pOwoKCgoK
CmV4dGVybiB3aW50X3QgZ2V0d2NoYXIgKHZvaWQpOwoKCgoKCgpleHRlcm4gd2ludF90IGZwdXR3
YyAod2NoYXJfdCBfX3djLCBfX0ZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJuIHdpbnRfdCBwdXR3YyAo
d2NoYXJfdCBfX3djLCBfX0ZJTEUgKl9fc3RyZWFtKTsKCgoKCgpleHRlcm4gd2ludF90IHB1dHdj
aGFyICh3Y2hhcl90IF9fd2MpOwoKCgoKCgoKZXh0ZXJuIHdjaGFyX3QgKmZnZXR3cyAod2NoYXJf
dCAqX19yZXN0cmljdCBfX3dzLCBpbnQgX19uLAogICBfX0ZJTEUgKl9fcmVzdHJpY3QgX19zdHJl
YW0pOwoKCgoKCmV4dGVybiBpbnQgZnB1dHdzIChjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9f
d3MsCiAgICAgX19GSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsKCgoKCgoKZXh0ZXJuIHdpbnRf
dCB1bmdldHdjICh3aW50X3QgX193YywgX19GSUxFICpfX3N0cmVhbSk7CgojIDgwMSAiL3Vzci9p
bmNsdWRlL3djaGFyLmgiIDMgNApleHRlcm4gd2ludF90IGdldHdjX3VubG9ja2VkIChfX0ZJTEUg
Kl9fc3RyZWFtKTsKZXh0ZXJuIHdpbnRfdCBnZXR3Y2hhcl91bmxvY2tlZCAodm9pZCk7CgoKCgoK
CgpleHRlcm4gd2ludF90IGZnZXR3Y191bmxvY2tlZCAoX19GSUxFICpfX3N0cmVhbSk7CgoKCgoK
CgpleHRlcm4gd2ludF90IGZwdXR3Y191bmxvY2tlZCAod2NoYXJfdCBfX3djLCBfX0ZJTEUgKl9f
c3RyZWFtKTsKIyA4MjcgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzIDQKZXh0ZXJuIHdpbnRfdCBw
dXR3Y191bmxvY2tlZCAod2NoYXJfdCBfX3djLCBfX0ZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJuIHdp
bnRfdCBwdXR3Y2hhcl91bmxvY2tlZCAod2NoYXJfdCBfX3djKTsKIyA4MzcgIi91c3IvaW5jbHVk
ZS93Y2hhci5oIiAzIDQKZXh0ZXJuIHdjaGFyX3QgKmZnZXR3c191bmxvY2tlZCAod2NoYXJfdCAq
X19yZXN0cmljdCBfX3dzLCBpbnQgX19uLAogICAgIF9fRklMRSAqX19yZXN0cmljdCBfX3N0cmVh
bSk7CgoKCgoKCgpleHRlcm4gaW50IGZwdXR3c191bmxvY2tlZCAoY29uc3Qgd2NoYXJfdCAqX19y
ZXN0cmljdCBfX3dzLAogICAgICAgX19GSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsKCgoKCgoK
CmV4dGVybiBzaXplX3Qgd2NzZnRpbWUgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zLCBzaXplX3Qg
X19tYXhzaXplLAogICBjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICBjb25z
dCBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gc2l6
ZV90IHdjc2Z0aW1lX2wgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXpl
LAogICAgIGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgY29uc3Qgc3Ry
dWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAsCiAgICAgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7
CiMgODkxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0Cn0KCgoKCgoKCiN1bmRlZiBfX25lZWRf
bWJzdGF0ZV90CiN1bmRlZiBfX25lZWRfd2ludF90CiMgNDUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvY3djaGFyIiAyIDMKCgoKI2RlZmlu
ZSBfR0xJQkNYWF9DV0NIQVIgMQojIDYyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2N3Y2hhciIgMwpuYW1lc3BhY2Ugc3RkCnsKICB1c2lu
ZyA6Om1ic3RhdGVfdDsKfQoKCiN1bmRlZiBidG93YwojdW5kZWYgZmdldHdjCiN1bmRlZiBmZ2V0
d3MKI3VuZGVmIGZwdXR3YwojdW5kZWYgZnB1dHdzCiN1bmRlZiBmd2lkZQojdW5kZWYgZndwcmlu
dGYKI3VuZGVmIGZ3c2NhbmYKI3VuZGVmIGdldHdjCiN1bmRlZiBnZXR3Y2hhcgojdW5kZWYgbWJy
bGVuCiN1bmRlZiBtYnJ0b3djCiN1bmRlZiBtYnNpbml0CiN1bmRlZiBtYnNydG93Y3MKI3VuZGVm
IHB1dHdjCiN1bmRlZiBwdXR3Y2hhcgojdW5kZWYgc3dwcmludGYKI3VuZGVmIHN3c2NhbmYKI3Vu
ZGVmIHVuZ2V0d2MKI3VuZGVmIHZmd3ByaW50ZgoKI3VuZGVmIHZmd3NjYW5mCgojdW5kZWYgdnN3
cHJpbnRmCgojdW5kZWYgdnN3c2NhbmYKCiN1bmRlZiB2d3ByaW50ZgoKI3VuZGVmIHZ3c2NhbmYK
CiN1bmRlZiB3Y3J0b21iCiN1bmRlZiB3Y3NjYXQKI3VuZGVmIHdjc2NocgojdW5kZWYgd2NzY21w
CiN1bmRlZiB3Y3Njb2xsCiN1bmRlZiB3Y3NjcHkKI3VuZGVmIHdjc2NzcG4KI3VuZGVmIHdjc2Z0
aW1lCiN1bmRlZiB3Y3NsZW4KI3VuZGVmIHdjc25jYXQKI3VuZGVmIHdjc25jbXAKI3VuZGVmIHdj
c25jcHkKI3VuZGVmIHdjc3BicmsKI3VuZGVmIHdjc3JjaHIKI3VuZGVmIHdjc3J0b21icwojdW5k
ZWYgd2Nzc3BuCiN1bmRlZiB3Y3NzdHIKI3VuZGVmIHdjc3RvZAoKI3VuZGVmIHdjc3RvZgoKI3Vu
ZGVmIHdjc3RvawojdW5kZWYgd2NzdG9sCiN1bmRlZiB3Y3N0b3VsCiN1bmRlZiB3Y3N4ZnJtCiN1
bmRlZiB3Y3RvYgojdW5kZWYgd21lbWNocgojdW5kZWYgd21lbWNtcAojdW5kZWYgd21lbWNweQoj
dW5kZWYgd21lbW1vdmUKI3VuZGVmIHdtZW1zZXQKI3VuZGVmIHdwcmludGYKI3VuZGVmIHdzY2Fu
ZgoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1
bHQiKSkpCnsKCgogIHVzaW5nIDo6d2ludF90OwoKICB1c2luZyA6OmJ0b3djOwogIHVzaW5nIDo6
ZmdldHdjOwogIHVzaW5nIDo6ZmdldHdzOwogIHVzaW5nIDo6ZnB1dHdjOwogIHVzaW5nIDo6ZnB1
dHdzOwogIHVzaW5nIDo6ZndpZGU7CiAgdXNpbmcgOjpmd3ByaW50ZjsKICB1c2luZyA6OmZ3c2Nh
bmY7CiAgdXNpbmcgOjpnZXR3YzsKICB1c2luZyA6OmdldHdjaGFyOwogIHVzaW5nIDo6bWJybGVu
OwogIHVzaW5nIDo6bWJydG93YzsKICB1c2luZyA6Om1ic2luaXQ7CiAgdXNpbmcgOjptYnNydG93
Y3M7CiAgdXNpbmcgOjpwdXR3YzsKICB1c2luZyA6OnB1dHdjaGFyOwoKICB1c2luZyA6OnN3cHJp
bnRmOwoKICB1c2luZyA6OnN3c2NhbmY7CiAgdXNpbmcgOjp1bmdldHdjOwogIHVzaW5nIDo6dmZ3
cHJpbnRmOwoKICB1c2luZyA6OnZmd3NjYW5mOwoKCiAgdXNpbmcgOjp2c3dwcmludGY7CgoKICB1
c2luZyA6OnZzd3NjYW5mOwoKICB1c2luZyA6OnZ3cHJpbnRmOwoKICB1c2luZyA6OnZ3c2NhbmY7
CgogIHVzaW5nIDo6d2NydG9tYjsKICB1c2luZyA6Ondjc2NhdDsKICB1c2luZyA6Ondjc2NtcDsK
ICB1c2luZyA6Ondjc2NvbGw7CiAgdXNpbmcgOjp3Y3NjcHk7CiAgdXNpbmcgOjp3Y3Njc3BuOwog
IHVzaW5nIDo6d2NzZnRpbWU7CiAgdXNpbmcgOjp3Y3NsZW47CiAgdXNpbmcgOjp3Y3NuY2F0Owog
IHVzaW5nIDo6d2NzbmNtcDsKICB1c2luZyA6Ondjc25jcHk7CiAgdXNpbmcgOjp3Y3NydG9tYnM7
CiAgdXNpbmcgOjp3Y3NzcG47CiAgdXNpbmcgOjp3Y3N0b2Q7CgogIHVzaW5nIDo6d2NzdG9mOwoK
ICB1c2luZyA6Ondjc3RvazsKICB1c2luZyA6Ondjc3RvbDsKICB1c2luZyA6Ondjc3RvdWw7CiAg
dXNpbmcgOjp3Y3N4ZnJtOwogIHVzaW5nIDo6d2N0b2I7CiAgdXNpbmcgOjp3bWVtY21wOwogIHVz
aW5nIDo6d21lbWNweTsKICB1c2luZyA6OndtZW1tb3ZlOwogIHVzaW5nIDo6d21lbXNldDsKICB1
c2luZyA6OndwcmludGY7CiAgdXNpbmcgOjp3c2NhbmY7CiAgdXNpbmcgOjp3Y3NjaHI7CiAgdXNp
bmcgOjp3Y3NwYnJrOwogIHVzaW5nIDo6d2NzcmNocjsKICB1c2luZyA6Ondjc3N0cjsKICB1c2lu
ZyA6OndtZW1jaHI7CiMgMjMyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2N3Y2hhciIgMwoKfQoKCgojdW5kZWYgd2NzdG9sZAojdW5kZWYg
d2NzdG9sbAojdW5kZWYgd2NzdG91bGwKCm5hbWVzcGFjZSBfX2dudV9jeHgKewoKCgoKCiAgdXNp
bmcgOjp3Y3N0b2xkOwojIDI1NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9jd2NoYXIiIDMKICB1c2luZyA6Ondjc3RvbGw7CiAgdXNpbmcg
Ojp3Y3N0b3VsbDsKCn0KCm5hbWVzcGFjZSBzdGQKewogIHVzaW5nIDo6X19nbnVfY3h4Ojp3Y3N0
b2xkOwogIHVzaW5nIDo6X19nbnVfY3h4Ojp3Y3N0b2xsOwogIHVzaW5nIDo6X19nbnVfY3h4Ojp3
Y3N0b3VsbDsKfQojIDI3NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9jd2NoYXIiIDMKbmFtZXNwYWNlIHN0ZAp7CgogIHVzaW5nIHN0ZDo6
d2NzdG9mOwoKCiAgdXNpbmcgc3RkOjp2ZndzY2FuZjsKCgogIHVzaW5nIHN0ZDo6dnN3c2NhbmY7
CgoKICB1c2luZyBzdGQ6OnZ3c2NhbmY7CgoKCiAgdXNpbmcgc3RkOjp3Y3N0b2xkOwogIHVzaW5n
IHN0ZDo6d2NzdG9sbDsKICB1c2luZyBzdGQ6Ondjc3RvdWxsOwoKfQojIDQxICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcG9zdHlw
ZXMuaCIgMiAzCiMgNjggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9wb3N0eXBlcy5oIiAzCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1
dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKIyA5MCAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3Bvc3R5cGVz
LmgiIDMKICB0eXBlZGVmIGxvbmcgbG9uZyBzdHJlYW1vZmY7CgoKCgoKCgogIHR5cGVkZWYgcHRy
ZGlmZl90IHN0cmVhbXNpemU7CiMgMTExICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcG9zdHlwZXMuaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9TdGF0ZVQ+CiAgICBjbGFzcyBmcG9zCiAgICB7CiAgICBwcml2YXRlOgogICAgICBz
dHJlYW1vZmYgX01fb2ZmOwogICAgICBfU3RhdGVUIF9NX3N0YXRlOwoKICAgIHB1YmxpYzoKCgoK
CiAgICAgIGZwb3MoKQogICAgICA6IF9NX29mZigwKSwgX01fc3RhdGUoKSB7IH0KIyAxMzMgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9wb3N0eXBlcy5oIiAzCiAgICAgIGZwb3Moc3RyZWFtb2ZmIF9fb2ZmKQogICAgICA6IF9NX29m
ZihfX29mZiksIF9NX3N0YXRlKCkgeyB9CgoKICAgICAgb3BlcmF0b3Igc3RyZWFtb2ZmKCkgY29u
c3QgeyByZXR1cm4gX01fb2ZmOyB9CgoKICAgICAgdm9pZAogICAgICBzdGF0ZShfU3RhdGVUIF9f
c3QpCiAgICAgIHsgX01fc3RhdGUgPSBfX3N0OyB9CgoKICAgICAgX1N0YXRlVAogICAgICBzdGF0
ZSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3N0YXRlOyB9CgoKCgoKICAgICAgZnBvcyYKICAg
ICAgb3BlcmF0b3IrPShzdHJlYW1vZmYgX19vZmYpCiAgICAgIHsKIF9NX29mZiArPSBfX29mZjsK
IHJldHVybiAqdGhpczsKICAgICAgfQoKCgoKCiAgICAgIGZwb3MmCiAgICAgIG9wZXJhdG9yLT0o
c3RyZWFtb2ZmIF9fb2ZmKQogICAgICB7CiBfTV9vZmYgLT0gX19vZmY7CiByZXR1cm4gKnRoaXM7
CiAgICAgIH0KCgoKCgoKCiAgICAgIGZwb3MKICAgICAgb3BlcmF0b3IrKHN0cmVhbW9mZiBfX29m
ZikgY29uc3QKICAgICAgewogZnBvcyBfX3BvcygqdGhpcyk7CiBfX3BvcyArPSBfX29mZjsKIHJl
dHVybiBfX3BvczsKICAgICAgfQoKCgoKCgoKICAgICAgZnBvcwogICAgICBvcGVyYXRvci0oc3Ry
ZWFtb2ZmIF9fb2ZmKSBjb25zdAogICAgICB7CiBmcG9zIF9fcG9zKCp0aGlzKTsKIF9fcG9zIC09
IF9fb2ZmOwogcmV0dXJuIF9fcG9zOwogICAgICB9CgoKCgoKCiAgICAgIHN0cmVhbW9mZgogICAg
ICBvcGVyYXRvci0oY29uc3QgZnBvcyYgX19vdGhlcikgY29uc3QKICAgICAgeyByZXR1cm4gX01f
b2ZmIC0gX19vdGhlci5fTV9vZmY7IH0KICAgIH07CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1N0YXRlVD4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0IGZwb3M8X1N0YXRl
VD4mIF9fbGhzLCBjb25zdCBmcG9zPF9TdGF0ZVQ+JiBfX3JocykKICAgIHsgcmV0dXJuIHN0cmVh
bW9mZihfX2xocykgPT0gc3RyZWFtb2ZmKF9fcmhzKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
U3RhdGVUPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgZnBvczxfU3RhdGVU
PiYgX19saHMsIGNvbnN0IGZwb3M8X1N0YXRlVD4mIF9fcmhzKQogICAgeyByZXR1cm4gc3RyZWFt
b2ZmKF9fbGhzKSAhPSBzdHJlYW1vZmYoX19yaHMpOyB9CgoKCgoKICB0eXBlZGVmIGZwb3M8bWJz
dGF0ZV90PiBzdHJlYW1wb3M7CgogIHR5cGVkZWYgZnBvczxtYnN0YXRlX3Q+IHdzdHJlYW1wb3M7
CgoKCiAgdHlwZWRlZiBmcG9zPG1ic3RhdGVfdD4gdTE2c3RyZWFtcG9zOwoKICB0eXBlZGVmIGZw
b3M8bWJzdGF0ZV90PiB1MzJzdHJlYW1wb3M7CgoKCn0KIyA0MSAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9pb3Nmd2QiIDIgMwoKbmFtZXNw
YWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7Cgoj
IDc0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OS4zL2lvc2Z3ZCIgMwogIGNsYXNzIGlvc19iYXNlOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJh
c2ljX2lvczsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0g
Y2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19zdHJlYW1idWY7CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFy
VD4gPgogICAgY2xhc3MgYmFzaWNfaXN0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNp
Y19vc3RyZWFtOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMg
PSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX2lvc3RyZWFtOwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hh
clQ+LAogICAgIHR5cGVuYW1lIF9BbGxvYyA9IGFsbG9jYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNz
IGJhc2ljX3N0cmluZ2J1ZjsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiwKICAgIHR5cGVuYW1lIF9BbGxvYyA9IGFsbG9j
YXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX2lzdHJpbmdzdHJlYW07CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4s
CiAgICB0eXBlbmFtZSBfQWxsb2MgPSBhbGxvY2F0b3I8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNp
Y19vc3RyaW5nc3RyZWFtOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+LAogICAgdHlwZW5hbWUgX0FsbG9jID0gYWxsb2Nh
dG9yPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfc3RyaW5nc3RyZWFtOwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4K
ICAgIGNsYXNzIGJhc2ljX2ZpbGVidWY7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw
ZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfaWZz
dHJlYW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNo
YXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfb2ZzdHJlYW07CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4g
PgogICAgY2xhc3MgYmFzaWNfZnN0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBpc3RyZWFt
YnVmX2l0ZXJhdG9yOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIG9zdHJlYW1idWZfaXRlcmF0b3I7
CgoKCiAgdHlwZWRlZiBiYXNpY19pb3M8Y2hhcj4gaW9zOwoKCiAgdHlwZWRlZiBiYXNpY19zdHJl
YW1idWY8Y2hhcj4gc3RyZWFtYnVmOwoKCiAgdHlwZWRlZiBiYXNpY19pc3RyZWFtPGNoYXI+IGlz
dHJlYW07CgoKICB0eXBlZGVmIGJhc2ljX29zdHJlYW08Y2hhcj4gb3N0cmVhbTsKCgogIHR5cGVk
ZWYgYmFzaWNfaW9zdHJlYW08Y2hhcj4gaW9zdHJlYW07CgoKICB0eXBlZGVmIGJhc2ljX3N0cmlu
Z2J1ZjxjaGFyPiBzdHJpbmdidWY7CgoKICB0eXBlZGVmIGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hh
cj4gaXN0cmluZ3N0cmVhbTsKCgogIHR5cGVkZWYgYmFzaWNfb3N0cmluZ3N0cmVhbTxjaGFyPiBv
c3RyaW5nc3RyZWFtOwoKCiAgdHlwZWRlZiBiYXNpY19zdHJpbmdzdHJlYW08Y2hhcj4gc3RyaW5n
c3RyZWFtOwoKCiAgdHlwZWRlZiBiYXNpY19maWxlYnVmPGNoYXI+IGZpbGVidWY7CgoKICB0eXBl
ZGVmIGJhc2ljX2lmc3RyZWFtPGNoYXI+IGlmc3RyZWFtOwoKCiAgdHlwZWRlZiBiYXNpY19vZnN0
cmVhbTxjaGFyPiBvZnN0cmVhbTsKCgogIHR5cGVkZWYgYmFzaWNfZnN0cmVhbTxjaGFyPiBmc3Ry
ZWFtOwoKCgogIHR5cGVkZWYgYmFzaWNfaW9zPHdjaGFyX3Q+IHdpb3M7CgoKICB0eXBlZGVmIGJh
c2ljX3N0cmVhbWJ1Zjx3Y2hhcl90PiB3c3RyZWFtYnVmOwoKCiAgdHlwZWRlZiBiYXNpY19pc3Ry
ZWFtPHdjaGFyX3Q+IHdpc3RyZWFtOwoKCiAgdHlwZWRlZiBiYXNpY19vc3RyZWFtPHdjaGFyX3Q+
IHdvc3RyZWFtOwoKCiAgdHlwZWRlZiBiYXNpY19pb3N0cmVhbTx3Y2hhcl90PiB3aW9zdHJlYW07
CgoKICB0eXBlZGVmIGJhc2ljX3N0cmluZ2J1Zjx3Y2hhcl90PiB3c3RyaW5nYnVmOwoKCiAgdHlw
ZWRlZiBiYXNpY19pc3RyaW5nc3RyZWFtPHdjaGFyX3Q+IHdpc3RyaW5nc3RyZWFtOwoKCiAgdHlw
ZWRlZiBiYXNpY19vc3RyaW5nc3RyZWFtPHdjaGFyX3Q+IHdvc3RyaW5nc3RyZWFtOwoKCiAgdHlw
ZWRlZiBiYXNpY19zdHJpbmdzdHJlYW08d2NoYXJfdD4gd3N0cmluZ3N0cmVhbTsKCgogIHR5cGVk
ZWYgYmFzaWNfZmlsZWJ1Zjx3Y2hhcl90PiB3ZmlsZWJ1ZjsKCgogIHR5cGVkZWYgYmFzaWNfaWZz
dHJlYW08d2NoYXJfdD4gd2lmc3RyZWFtOwoKCiAgdHlwZWRlZiBiYXNpY19vZnN0cmVhbTx3Y2hh
cl90PiB3b2ZzdHJlYW07CgoKICB0eXBlZGVmIGJhc2ljX2ZzdHJlYW08d2NoYXJfdD4gd2ZzdHJl
YW07CgoKCgp9CiMgNzMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvbWVtb3J5IiAyIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2V4dC9hdG9taWNpdHkuaCIgMSAzCiMgMzAg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
ZXh0L2F0b21pY2l0eS5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfQVRPTUlDSVRZX0ggMQoKICAgICAg
IAojIDMzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2V4dC9hdG9taWNpdHkuaCIgMwoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
Yml0cy9ndGhyLmgiIDEgMwojIDI3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL2d0aHIu
aCIgMwojZGVmaW5lIF9HTElCQ1hYX0dDQ19HVEhSX0ggCgoKI3ByYWdtYSBHQ0MgdmlzaWJpbGl0
eSBwdXNoKGRlZmF1bHQpCiMgMTQ1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL2d0aHIu
aCIgMwojZGVmaW5lIF9HTElCQ1hYX0dUSFJFQURfVVNFX1dFQUsgMQoKCiMgMSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvYml0cy9ndGhyLWRlZmF1bHQuaCIgMSAzCiMgMjcgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2JpdHMvZ3Roci1kZWZhdWx0LmgiIDMKI2RlZmluZSBfR0xJQkNYWF9HQ0Nf
R1RIUl9QT1NJWF9IIAoKCgoKI2RlZmluZSBfX0dUSFJFQURTIDEKI2RlZmluZSBfX0dUSFJFQURT
X0NYWDBYIDEKCiMgMSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMSAzIDQKIyAxOSAiL3Vzci9p
bmNsdWRlL3B0aHJlYWQuaCIgMyA0CiNkZWZpbmUgX1BUSFJFQURfSCAxCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL3NjaGVkLmgiIDEgMyA0CiMgMjAgIi91c3IvaW5jbHVkZS9zY2hlZC5oIiAzIDQKI2Rl
ZmluZSBfU0NIRURfSCAxCgoKCgoKCiNkZWZpbmUgX19uZWVkX3NpemVfdCAKIyAxICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRk
ZWYuaCIgMSAzIDQKIyAyMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF9zaXplX3QK
IyA0MDggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80Ljku
My9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF9OVUxMCiMgMjkgIi91c3IvaW5j
bHVkZS9zY2hlZC5oIiAyIDMgNAoKI2RlZmluZSBfX25lZWRfdGltZV90IAojZGVmaW5lIF9fbmVl
ZF90aW1lc3BlYyAKIyA0MSAiL3Vzci9pbmNsdWRlL3NjaGVkLmgiIDMgNAojIDEgIi91c3IvaW5j
bHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc2NoZWQuaCIgMSAzIDQKIyAyOCAiL3Vzci9p
bmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9zY2hlZC5oIiAzIDQKI2RlZmluZSBTQ0hF
RF9PVEhFUiAwCiNkZWZpbmUgU0NIRURfRklGTyAxCiNkZWZpbmUgU0NIRURfUlIgMgoKI2RlZmlu
ZSBTQ0hFRF9CQVRDSCAzCiNkZWZpbmUgU0NIRURfSURMRSA1CgojZGVmaW5lIFNDSEVEX1JFU0VU
X09OX0ZPUksgMHg0MDAwMDAwMAoKCgoKI2RlZmluZSBDU0lHTkFMIDB4MDAwMDAwZmYKI2RlZmlu
ZSBDTE9ORV9WTSAweDAwMDAwMTAwCiNkZWZpbmUgQ0xPTkVfRlMgMHgwMDAwMDIwMAojZGVmaW5l
IENMT05FX0ZJTEVTIDB4MDAwMDA0MDAKI2RlZmluZSBDTE9ORV9TSUdIQU5EIDB4MDAwMDA4MDAK
I2RlZmluZSBDTE9ORV9QVFJBQ0UgMHgwMDAwMjAwMAojZGVmaW5lIENMT05FX1ZGT1JLIDB4MDAw
MDQwMDAKCiNkZWZpbmUgQ0xPTkVfUEFSRU5UIDB4MDAwMDgwMDAKCiNkZWZpbmUgQ0xPTkVfVEhS
RUFEIDB4MDAwMTAwMDAKI2RlZmluZSBDTE9ORV9ORVdOUyAweDAwMDIwMDAwCiNkZWZpbmUgQ0xP
TkVfU1lTVlNFTSAweDAwMDQwMDAwCiNkZWZpbmUgQ0xPTkVfU0VUVExTIDB4MDAwODAwMDAKI2Rl
ZmluZSBDTE9ORV9QQVJFTlRfU0VUVElEIDB4MDAxMDAwMDAKCiNkZWZpbmUgQ0xPTkVfQ0hJTERf
Q0xFQVJUSUQgMHgwMDIwMDAwMAoKI2RlZmluZSBDTE9ORV9ERVRBQ0hFRCAweDAwNDAwMDAwCiNk
ZWZpbmUgQ0xPTkVfVU5UUkFDRUQgMHgwMDgwMDAwMAoKI2RlZmluZSBDTE9ORV9DSElMRF9TRVRU
SUQgMHgwMTAwMDAwMAoKI2RlZmluZSBDTE9ORV9ORVdVVFMgMHgwNDAwMDAwMAojZGVmaW5lIENM
T05FX05FV0lQQyAweDA4MDAwMDAwCiNkZWZpbmUgQ0xPTkVfTkVXVVNFUiAweDEwMDAwMDAwCiNk
ZWZpbmUgQ0xPTkVfTkVXUElEIDB4MjAwMDAwMDAKI2RlZmluZSBDTE9ORV9ORVdORVQgMHg0MDAw
MDAwMAojZGVmaW5lIENMT05FX0lPIDB4ODAwMDAwMDAKCgoKc3RydWN0IHNjaGVkX3BhcmFtCiAg
ewogICAgaW50IF9fc2NoZWRfcHJpb3JpdHk7CiAgfTsKCmV4dGVybiAiQyIgewoKCgpleHRlcm4g
aW50IGNsb25lIChpbnQgKCpfX2ZuKSAodm9pZCAqX19hcmcpLCB2b2lkICpfX2NoaWxkX3N0YWNr
LAogICAgaW50IF9fZmxhZ3MsIHZvaWQgKl9fYXJnLCAuLi4pIHRocm93ICgpOwoKCmV4dGVybiBp
bnQgdW5zaGFyZSAoaW50IF9fZmxhZ3MpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgc2NoZWRfZ2V0
Y3B1ICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNldG5zIChpbnQgX19mZCwgaW50IF9f
bnN0eXBlKSB0aHJvdyAoKTsKCgoKfQoKCgoKCiNkZWZpbmUgX19kZWZpbmVkX3NjaGVkcGFyYW0g
MQoKc3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQgX19zY2hlZF9wcmlvcml0eTsKICB9
OwojdW5kZWYgX19uZWVkX3NjaGVkcGFyYW0KCgoKCiNkZWZpbmUgX19jcHVfc2V0X3RfZGVmaW5l
ZCAKCiNkZWZpbmUgX19DUFVfU0VUU0laRSAxMDI0CiNkZWZpbmUgX19OQ1BVQklUUyAoOCAqIHNp
emVvZiAoX19jcHVfbWFzaykpCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX2NwdV9tYXNr
OwoKCiNkZWZpbmUgX19DUFVFTFQoY3B1KSAoKGNwdSkgLyBfX05DUFVCSVRTKQojZGVmaW5lIF9f
Q1BVTUFTSyhjcHUpICgoX19jcHVfbWFzaykgMSA8PCAoKGNwdSkgJSBfX05DUFVCSVRTKSkKCgp0
eXBlZGVmIHN0cnVjdAp7CiAgX19jcHVfbWFzayBfX2JpdHNbMTAyNCAvICg4ICogc2l6ZW9mIChf
X2NwdV9tYXNrKSldOwp9IGNwdV9zZXRfdDsKCgoKI2RlZmluZSBfX0NQVV9aRVJPX1Moc2V0c2l6
ZSxjcHVzZXRwKSBkbyBfX2J1aWx0aW5fbWVtc2V0IChjcHVzZXRwLCAnXDAnLCBzZXRzaXplKTsg
d2hpbGUgKDApCiMgMTQ0ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3Nj
aGVkLmgiIDMgNAojZGVmaW5lIF9fQ1BVX1NFVF9TKGNwdSxzZXRzaXplLGNwdXNldHApIChfX2V4
dGVuc2lvbl9fICh7IHNpemVfdCBfX2NwdSA9IChjcHUpOyBfX2NwdSAvIDggPCAoc2V0c2l6ZSkg
PyAoKChfX2NwdV9tYXNrICopICgoY3B1c2V0cCktPl9fYml0cykpW19fQ1BVRUxUIChfX2NwdSld
IHw9IF9fQ1BVTUFTSyAoX19jcHUpKSA6IDA7IH0pKQoKCgoKCgojZGVmaW5lIF9fQ1BVX0NMUl9T
KGNwdSxzZXRzaXplLGNwdXNldHApIChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX2NwdSA9IChj
cHUpOyBfX2NwdSAvIDggPCAoc2V0c2l6ZSkgPyAoKChfX2NwdV9tYXNrICopICgoY3B1c2V0cCkt
Pl9fYml0cykpW19fQ1BVRUxUIChfX2NwdSldICY9IH5fX0NQVU1BU0sgKF9fY3B1KSkgOiAwOyB9
KSkKCgoKCgoKI2RlZmluZSBfX0NQVV9JU1NFVF9TKGNwdSxzZXRzaXplLGNwdXNldHApIChfX2V4
dGVuc2lvbl9fICh7IHNpemVfdCBfX2NwdSA9IChjcHUpOyBfX2NwdSAvIDggPCAoc2V0c2l6ZSkg
PyAoKCgoY29uc3QgX19jcHVfbWFzayAqKSAoKGNwdXNldHApLT5fX2JpdHMpKVtfX0NQVUVMVCAo
X19jcHUpXSAmIF9fQ1BVTUFTSyAoX19jcHUpKSkgIT0gMCA6IDA7IH0pKQoKCgoKCgoKI2RlZmlu
ZSBfX0NQVV9DT1VOVF9TKHNldHNpemUsY3B1c2V0cCkgX19zY2hlZF9jcHVjb3VudCAoc2V0c2l6
ZSwgY3B1c2V0cCkKCgoKI2RlZmluZSBfX0NQVV9FUVVBTF9TKHNldHNpemUsY3B1c2V0cDEsY3B1
c2V0cDIpIChfX2J1aWx0aW5fbWVtY21wIChjcHVzZXRwMSwgY3B1c2V0cDIsIHNldHNpemUpID09
IDApCiMgMTg1ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3NjaGVkLmgi
IDMgNAojZGVmaW5lIF9fQ1BVX09QX1Moc2V0c2l6ZSxkZXN0c2V0LHNyY3NldDEsc3Jjc2V0Mixv
cCkgKF9fZXh0ZW5zaW9uX18gKHsgY3B1X3NldF90ICpfX2Rlc3QgPSAoZGVzdHNldCk7IGNvbnN0
IF9fY3B1X21hc2sgKl9fYXJyMSA9IChzcmNzZXQxKS0+X19iaXRzOyBjb25zdCBfX2NwdV9tYXNr
ICpfX2FycjIgPSAoc3Jjc2V0MiktPl9fYml0czsgc2l6ZV90IF9faW1heCA9IChzZXRzaXplKSAv
IHNpemVvZiAoX19jcHVfbWFzayk7IHNpemVfdCBfX2k7IGZvciAoX19pID0gMDsgX19pIDwgX19p
bWF4OyArK19faSkgKChfX2NwdV9tYXNrICopIF9fZGVzdC0+X19iaXRzKVtfX2ldID0gX19hcnIx
W19faV0gb3AgX19hcnIyW19faV07IF9fZGVzdDsgfSkpCiMgMTk2ICIvdXNyL2luY2x1ZGUvYXJt
LWxpbnV4LWdudWVhYmloZi9iaXRzL3NjaGVkLmgiIDMgNAojZGVmaW5lIF9fQ1BVX0FMTE9DX1NJ
WkUoY291bnQpICgoKChjb3VudCkgKyBfX05DUFVCSVRTIC0gMSkgLyBfX05DUFVCSVRTKSAqIHNp
emVvZiAoX19jcHVfbWFzaykpCgojZGVmaW5lIF9fQ1BVX0FMTE9DKGNvdW50KSBfX3NjaGVkX2Nw
dWFsbG9jIChjb3VudCkKI2RlZmluZSBfX0NQVV9GUkVFKGNwdXNldCkgX19zY2hlZF9jcHVmcmVl
IChjcHVzZXQpCgpleHRlcm4gIkMiIHsKCmV4dGVybiBpbnQgX19zY2hlZF9jcHVjb3VudCAoc2l6
ZV90IF9fc2V0c2l6ZSwgY29uc3QgY3B1X3NldF90ICpfX3NldHApCiAgdGhyb3cgKCk7CmV4dGVy
biBjcHVfc2V0X3QgKl9fc2NoZWRfY3B1YWxsb2MgKHNpemVfdCBfX2NvdW50KSB0aHJvdyAoKSA7
CmV4dGVybiB2b2lkIF9fc2NoZWRfY3B1ZnJlZSAoY3B1X3NldF90ICpfX3NldCkgdGhyb3cgKCk7
Cgp9CiMgNDIgIi91c3IvaW5jbHVkZS9zY2hlZC5oIiAyIDMgNAoKI2RlZmluZSBzY2hlZF9wcmlv
cml0eSBfX3NjaGVkX3ByaW9yaXR5CgoKZXh0ZXJuICJDIiB7CgoKZXh0ZXJuIGludCBzY2hlZF9z
ZXRwYXJhbSAoX19waWRfdCBfX3BpZCwgY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFt
KQogICAgIHRocm93ICgpOwoKCmV4dGVybiBpbnQgc2NoZWRfZ2V0cGFyYW0gKF9fcGlkX3QgX19w
aWQsIHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBz
Y2hlZF9zZXRzY2hlZHVsZXIgKF9fcGlkX3QgX19waWQsIGludCBfX3BvbGljeSwKICAgICAgICAg
IGNvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGlu
dCBzY2hlZF9nZXRzY2hlZHVsZXIgKF9fcGlkX3QgX19waWQpIHRocm93ICgpOwoKCmV4dGVybiBp
bnQgc2NoZWRfeWllbGQgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgc2NoZWRfZ2V0X3By
aW9yaXR5X21heCAoaW50IF9fYWxnb3JpdGhtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNjaGVk
X2dldF9wcmlvcml0eV9taW4gKGludCBfX2FsZ29yaXRobSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGlu
dCBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwgKF9fcGlkX3QgX19waWQsIHN0cnVjdCB0aW1lc3BlYyAq
X190KSB0aHJvdyAoKTsKCgoKCiNkZWZpbmUgQ1BVX1NFVFNJWkUgX19DUFVfU0VUU0laRQojZGVm
aW5lIENQVV9TRVQoY3B1LGNwdXNldHApIF9fQ1BVX1NFVF9TIChjcHUsIHNpemVvZiAoY3B1X3Nl
dF90KSwgY3B1c2V0cCkKI2RlZmluZSBDUFVfQ0xSKGNwdSxjcHVzZXRwKSBfX0NQVV9DTFJfUyAo
Y3B1LCBzaXplb2YgKGNwdV9zZXRfdCksIGNwdXNldHApCiNkZWZpbmUgQ1BVX0lTU0VUKGNwdSxj
cHVzZXRwKSBfX0NQVV9JU1NFVF9TIChjcHUsIHNpemVvZiAoY3B1X3NldF90KSwgY3B1c2V0cCkK
CiNkZWZpbmUgQ1BVX1pFUk8oY3B1c2V0cCkgX19DUFVfWkVST19TIChzaXplb2YgKGNwdV9zZXRf
dCksIGNwdXNldHApCiNkZWZpbmUgQ1BVX0NPVU5UKGNwdXNldHApIF9fQ1BVX0NPVU5UX1MgKHNp
emVvZiAoY3B1X3NldF90KSwgY3B1c2V0cCkKCiNkZWZpbmUgQ1BVX1NFVF9TKGNwdSxzZXRzaXpl
LGNwdXNldHApIF9fQ1BVX1NFVF9TIChjcHUsIHNldHNpemUsIGNwdXNldHApCiNkZWZpbmUgQ1BV
X0NMUl9TKGNwdSxzZXRzaXplLGNwdXNldHApIF9fQ1BVX0NMUl9TIChjcHUsIHNldHNpemUsIGNw
dXNldHApCiNkZWZpbmUgQ1BVX0lTU0VUX1MoY3B1LHNldHNpemUsY3B1c2V0cCkgX19DUFVfSVNT
RVRfUyAoY3B1LCBzZXRzaXplLCBjcHVzZXRwKQoKI2RlZmluZSBDUFVfWkVST19TKHNldHNpemUs
Y3B1c2V0cCkgX19DUFVfWkVST19TIChzZXRzaXplLCBjcHVzZXRwKQojZGVmaW5lIENQVV9DT1VO
VF9TKHNldHNpemUsY3B1c2V0cCkgX19DUFVfQ09VTlRfUyAoc2V0c2l6ZSwgY3B1c2V0cCkKCiNk
ZWZpbmUgQ1BVX0VRVUFMKGNwdXNldHAxLGNwdXNldHAyKSBfX0NQVV9FUVVBTF9TIChzaXplb2Yg
KGNwdV9zZXRfdCksIGNwdXNldHAxLCBjcHVzZXRwMikKCiNkZWZpbmUgQ1BVX0VRVUFMX1Moc2V0
c2l6ZSxjcHVzZXRwMSxjcHVzZXRwMikgX19DUFVfRVFVQUxfUyAoc2V0c2l6ZSwgY3B1c2V0cDEs
IGNwdXNldHAyKQoKCiNkZWZpbmUgQ1BVX0FORChkZXN0c2V0LHNyY3NldDEsc3Jjc2V0MikgX19D
UFVfT1BfUyAoc2l6ZW9mIChjcHVfc2V0X3QpLCBkZXN0c2V0LCBzcmNzZXQxLCBzcmNzZXQyLCAm
KQoKI2RlZmluZSBDUFVfT1IoZGVzdHNldCxzcmNzZXQxLHNyY3NldDIpIF9fQ1BVX09QX1MgKHNp
emVvZiAoY3B1X3NldF90KSwgZGVzdHNldCwgc3Jjc2V0MSwgc3Jjc2V0MiwgfCkKCiNkZWZpbmUg
Q1BVX1hPUihkZXN0c2V0LHNyY3NldDEsc3Jjc2V0MikgX19DUFVfT1BfUyAoc2l6ZW9mIChjcHVf
c2V0X3QpLCBkZXN0c2V0LCBzcmNzZXQxLCBzcmNzZXQyLCBeKQoKI2RlZmluZSBDUFVfQU5EX1Mo
c2V0c2l6ZSxkZXN0c2V0LHNyY3NldDEsc3Jjc2V0MikgX19DUFVfT1BfUyAoc2V0c2l6ZSwgZGVz
dHNldCwgc3Jjc2V0MSwgc3Jjc2V0MiwgJikKCiNkZWZpbmUgQ1BVX09SX1Moc2V0c2l6ZSxkZXN0
c2V0LHNyY3NldDEsc3Jjc2V0MikgX19DUFVfT1BfUyAoc2V0c2l6ZSwgZGVzdHNldCwgc3Jjc2V0
MSwgc3Jjc2V0MiwgfCkKCiNkZWZpbmUgQ1BVX1hPUl9TKHNldHNpemUsZGVzdHNldCxzcmNzZXQx
LHNyY3NldDIpIF9fQ1BVX09QX1MgKHNldHNpemUsIGRlc3RzZXQsIHNyY3NldDEsIHNyY3NldDIs
IF4pCgoKI2RlZmluZSBDUFVfQUxMT0NfU0laRShjb3VudCkgX19DUFVfQUxMT0NfU0laRSAoY291
bnQpCiNkZWZpbmUgQ1BVX0FMTE9DKGNvdW50KSBfX0NQVV9BTExPQyAoY291bnQpCiNkZWZpbmUg
Q1BVX0ZSRUUoY3B1c2V0KSBfX0NQVV9GUkVFIChjcHVzZXQpCgoKCmV4dGVybiBpbnQgc2NoZWRf
c2V0YWZmaW5pdHkgKF9fcGlkX3QgX19waWQsIHNpemVfdCBfX2NwdXNldHNpemUsCiAgICAgICAg
IGNvbnN0IGNwdV9zZXRfdCAqX19jcHVzZXQpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgc2NoZWRf
Z2V0YWZmaW5pdHkgKF9fcGlkX3QgX19waWQsIHNpemVfdCBfX2NwdXNldHNpemUsCiAgICAgICAg
IGNwdV9zZXRfdCAqX19jcHVzZXQpIHRocm93ICgpOwoKCn0KIyAyNCAiL3Vzci9pbmNsdWRlL3B0
aHJlYWQuaCIgMiAzIDQKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9i
aXRzL3NldGptcC5oIiAxIDMgNAojIDIxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmlo
Zi9iaXRzL3NldGptcC5oIiAzIDQKI2RlZmluZSBfQklUU19TRVRKTVBfSCAxCiMgMzQgIi91c3Iv
aW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc2V0am1wLmgiIDMgNAp0eXBlZGVmIGlu
dCBfX2ptcF9idWZbNjRdIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fICg4KSkpOwojIDI4ICIv
dXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgt
Z251ZWFiaWhmL2JpdHMvd29yZHNpemUuaCIgMSAzIDQKIyAxOCAiL3Vzci9pbmNsdWRlL2FybS1s
aW51eC1nbnVlYWJpaGYvYml0cy93b3Jkc2l6ZS5oIiAzIDQKI2RlZmluZSBfX1dPUkRTSVpFIDMy
CiMgMjkgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDIgMyA0CgoKCmVudW0KewogIFBUSFJFQURf
Q1JFQVRFX0pPSU5BQkxFLAojZGVmaW5lIFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFIFBUSFJFQURf
Q1JFQVRFX0pPSU5BQkxFCiAgUFRIUkVBRF9DUkVBVEVfREVUQUNIRUQKI2RlZmluZSBQVEhSRUFE
X0NSRUFURV9ERVRBQ0hFRCBQVEhSRUFEX0NSRUFURV9ERVRBQ0hFRAp9OwoKCgplbnVtCnsKICBQ
VEhSRUFEX01VVEVYX1RJTUVEX05QLAogIFBUSFJFQURfTVVURVhfUkVDVVJTSVZFX05QLAogIFBU
SFJFQURfTVVURVhfRVJST1JDSEVDS19OUCwKICBQVEhSRUFEX01VVEVYX0FEQVBUSVZFX05QCgog
ICwKICBQVEhSRUFEX01VVEVYX05PUk1BTCA9IFBUSFJFQURfTVVURVhfVElNRURfTlAsCiAgUFRI
UkVBRF9NVVRFWF9SRUNVUlNJVkUgPSBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRV9OUCwKICBQVEhS
RUFEX01VVEVYX0VSUk9SQ0hFQ0sgPSBQVEhSRUFEX01VVEVYX0VSUk9SQ0hFQ0tfTlAsCiAgUFRI
UkVBRF9NVVRFWF9ERUZBVUxUID0gUFRIUkVBRF9NVVRFWF9OT1JNQUwKCgoKICAsIFBUSFJFQURf
TVVURVhfRkFTVF9OUCA9IFBUSFJFQURfTVVURVhfVElNRURfTlAKCn07CgoKCgplbnVtCnsKICBQ
VEhSRUFEX01VVEVYX1NUQUxMRUQsCiAgUFRIUkVBRF9NVVRFWF9TVEFMTEVEX05QID0gUFRIUkVB
RF9NVVRFWF9TVEFMTEVELAogIFBUSFJFQURfTVVURVhfUk9CVVNULAogIFBUSFJFQURfTVVURVhf
Uk9CVVNUX05QID0gUFRIUkVBRF9NVVRFWF9ST0JVU1QKfTsKCgoKCgplbnVtCnsKICBQVEhSRUFE
X1BSSU9fTk9ORSwKICBQVEhSRUFEX1BSSU9fSU5IRVJJVCwKICBQVEhSRUFEX1BSSU9fUFJPVEVD
VAp9OwojIDkxICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzIDQKI2RlZmluZSBfX1BUSFJFQURf
U1BJTlMgMAojIDEwOSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMyA0CiNkZWZpbmUgUFRIUkVB
RF9NVVRFWF9JTklUSUFMSVpFUiB7IHsgMCwgMCwgMCwgMCwgMCwgeyBfX1BUSFJFQURfU1BJTlMg
fSB9IH0KCgojZGVmaW5lIFBUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkVSX05QIHsg
eyAwLCAwLCAwLCBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRV9OUCwgMCwgeyBfX1BUSFJFQURfU1BJ
TlMgfSB9IH0KCiNkZWZpbmUgUFRIUkVBRF9FUlJPUkNIRUNLX01VVEVYX0lOSVRJQUxJWkVSX05Q
IHsgeyAwLCAwLCAwLCBQVEhSRUFEX01VVEVYX0VSUk9SQ0hFQ0tfTlAsIDAsIHsgX19QVEhSRUFE
X1NQSU5TIH0gfSB9CgojZGVmaW5lIFBUSFJFQURfQURBUFRJVkVfTVVURVhfSU5JVElBTElaRVJf
TlAgeyB7IDAsIDAsIDAsIFBUSFJFQURfTVVURVhfQURBUFRJVkVfTlAsIDAsIHsgX19QVEhSRUFE
X1NQSU5TIH0gfSB9CiMgMTI1ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzIDQKZW51bQp7CiAg
UFRIUkVBRF9SV0xPQ0tfUFJFRkVSX1JFQURFUl9OUCwKICBQVEhSRUFEX1JXTE9DS19QUkVGRVJf
V1JJVEVSX05QLAogIFBUSFJFQURfUldMT0NLX1BSRUZFUl9XUklURVJfTk9OUkVDVVJTSVZFX05Q
LAogIFBUSFJFQURfUldMT0NLX0RFRkFVTFRfTlAgPSBQVEhSRUFEX1JXTE9DS19QUkVGRVJfUkVB
REVSX05QCn07CiMgMTQzICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzIDQKI2RlZmluZSBQVEhS
RUFEX1JXTE9DS19JTklUSUFMSVpFUiB7IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCB9IH0KIyAxNTIgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMgNAojZGVmaW5lIFBUSFJFQURf
UldMT0NLX1dSSVRFUl9OT05SRUNVUlNJVkVfSU5JVElBTElaRVJfTlAgeyB7IDAsIDAsIDAsIDAs
IDAsIDAsIFBUSFJFQURfUldMT0NLX1BSRUZFUl9XUklURVJfTk9OUkVDVVJTSVZFX05QLCAwLCAw
LCAwLCAwIH0gfQojIDE2NiAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMyA0CmVudW0KewogIFBU
SFJFQURfSU5IRVJJVF9TQ0hFRCwKI2RlZmluZSBQVEhSRUFEX0lOSEVSSVRfU0NIRUQgUFRIUkVB
RF9JTkhFUklUX1NDSEVECiAgUFRIUkVBRF9FWFBMSUNJVF9TQ0hFRAojZGVmaW5lIFBUSFJFQURf
RVhQTElDSVRfU0NIRUQgUFRIUkVBRF9FWFBMSUNJVF9TQ0hFRAp9OwoKCgplbnVtCnsKICBQVEhS
RUFEX1NDT1BFX1NZU1RFTSwKI2RlZmluZSBQVEhSRUFEX1NDT1BFX1NZU1RFTSBQVEhSRUFEX1ND
T1BFX1NZU1RFTQogIFBUSFJFQURfU0NPUEVfUFJPQ0VTUwojZGVmaW5lIFBUSFJFQURfU0NPUEVf
UFJPQ0VTUyBQVEhSRUFEX1NDT1BFX1BST0NFU1MKfTsKCgoKZW51bQp7CiAgUFRIUkVBRF9QUk9D
RVNTX1BSSVZBVEUsCiNkZWZpbmUgUFRIUkVBRF9QUk9DRVNTX1BSSVZBVEUgUFRIUkVBRF9QUk9D
RVNTX1BSSVZBVEUKICBQVEhSRUFEX1BST0NFU1NfU0hBUkVECiNkZWZpbmUgUFRIUkVBRF9QUk9D
RVNTX1NIQVJFRCBQVEhSRUFEX1BST0NFU1NfU0hBUkVECn07CgoKCgojZGVmaW5lIFBUSFJFQURf
Q09ORF9JTklUSUFMSVpFUiB7IHsgMCwgMCwgMCwgMCwgMCwgKHZvaWQgKikgMCwgMCwgMCB9IH0K
CgoKc3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVyCnsKICB2b2lkICgqX19yb3V0aW5lKSAo
dm9pZCAqKTsKICB2b2lkICpfX2FyZzsKICBpbnQgX19jYW5jZWx0eXBlOwogIHN0cnVjdCBfcHRo
cmVhZF9jbGVhbnVwX2J1ZmZlciAqX19wcmV2Owp9OwoKCmVudW0KewogIFBUSFJFQURfQ0FOQ0VM
X0VOQUJMRSwKI2RlZmluZSBQVEhSRUFEX0NBTkNFTF9FTkFCTEUgUFRIUkVBRF9DQU5DRUxfRU5B
QkxFCiAgUFRIUkVBRF9DQU5DRUxfRElTQUJMRQojZGVmaW5lIFBUSFJFQURfQ0FOQ0VMX0RJU0FC
TEUgUFRIUkVBRF9DQU5DRUxfRElTQUJMRQp9OwplbnVtCnsKICBQVEhSRUFEX0NBTkNFTF9ERUZF
UlJFRCwKI2RlZmluZSBQVEhSRUFEX0NBTkNFTF9ERUZFUlJFRCBQVEhSRUFEX0NBTkNFTF9ERUZF
UlJFRAogIFBUSFJFQURfQ0FOQ0VMX0FTWU5DSFJPTk9VUwojZGVmaW5lIFBUSFJFQURfQ0FOQ0VM
X0FTWU5DSFJPTk9VUyBQVEhSRUFEX0NBTkNFTF9BU1lOQ0hST05PVVMKfTsKI2RlZmluZSBQVEhS
RUFEX0NBTkNFTEVEICgodm9pZCAqKSAtMSkKCgoKI2RlZmluZSBQVEhSRUFEX09OQ0VfSU5JVCAw
CgoKCgoKCiNkZWZpbmUgUFRIUkVBRF9CQVJSSUVSX1NFUklBTF9USFJFQUQgLTEKCgoKZXh0ZXJu
ICJDIiB7CgoKCgpleHRlcm4gaW50IHB0aHJlYWRfY3JlYXRlIChwdGhyZWFkX3QgKl9fcmVzdHJp
Y3QgX19uZXd0aHJlYWQsCiAgICAgIGNvbnN0IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0IF9f
YXR0ciwKICAgICAgdm9pZCAqKCpfX3N0YXJ0X3JvdXRpbmUpICh2b2lkICopLAogICAgICB2b2lk
ICpfX3Jlc3RyaWN0IF9fYXJnKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g
KDEsIDMpKSk7CgoKCgoKZXh0ZXJuIHZvaWQgcHRocmVhZF9leGl0ICh2b2lkICpfX3JldHZhbCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCgoKZXh0ZXJuIGludCBwdGhyZWFk
X2pvaW4gKHB0aHJlYWRfdCBfX3RoLCB2b2lkICoqX190aHJlYWRfcmV0dXJuKTsKCgoKCmV4dGVy
biBpbnQgcHRocmVhZF90cnlqb2luX25wIChwdGhyZWFkX3QgX190aCwgdm9pZCAqKl9fdGhyZWFk
X3JldHVybikgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfdGltZWRqb2luX25w
IChwdGhyZWFkX3QgX190aCwgdm9pZCAqKl9fdGhyZWFkX3JldHVybiwKICAgICBjb25zdCBzdHJ1
Y3QgdGltZXNwZWMgKl9fYWJzdGltZSk7CgoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9kZXRhY2gg
KHB0aHJlYWRfdCBfX3RoKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHB0aHJlYWRfdCBwdGhyZWFkX3Nl
bGYgKHZvaWQpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4g
aW50IHB0aHJlYWRfZXF1YWwgKHB0aHJlYWRfdCBfX3RocmVhZDEsIHB0aHJlYWRfdCBfX3RocmVh
ZDIpCiAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCgoKZXh0ZXJu
IGludCBwdGhyZWFkX2F0dHJfaW5pdCAocHRocmVhZF9hdHRyX3QgKl9fYXR0cikgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9h
dHRyX2Rlc3Ryb3kgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIpCiAgICAgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dl
dGRldGFjaHN0YXRlIChjb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgIGludCAqX19k
ZXRhY2hzdGF0ZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs
IDIpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0ZGV0YWNoc3RhdGUgKHB0aHJlYWRf
YXR0cl90ICpfX2F0dHIsCiAgICAgaW50IF9fZGV0YWNoc3RhdGUpCiAgICAgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0
cl9nZXRndWFyZHNpemUgKGNvbnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCiAgICAgICAgICBz
aXplX3QgKl9fZ3VhcmRzaXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51
bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRndWFyZHNpemUgKHB0
aHJlYWRfYXR0cl90ICpfX2F0dHIsCiAgICAgICAgICBzaXplX3QgX19ndWFyZHNpemUpCiAgICAg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgpleHRlcm4gaW50
IHB0aHJlYWRfYXR0cl9nZXRzY2hlZHBhcmFtIChjb25zdCBwdGhyZWFkX2F0dHJfdCAqX19yZXN0
cmljdCBfX2F0dHIsCiAgICAgICAgICAgc3RydWN0IHNjaGVkX3BhcmFtICpfX3Jlc3RyaWN0IF9f
cGFyYW0pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkp
OwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldHNjaGVkcGFyYW0gKHB0aHJlYWRfYXR0cl90
ICpfX3Jlc3RyaWN0IF9fYXR0ciwKICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0g
Kl9fcmVzdHJpY3QKICAgICAgICAgICBfX3BhcmFtKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0c2NoZWRw
b2xpY3kgKGNvbnN0IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0CiAgICAgX19hdHRyLCBpbnQg
Kl9fcmVzdHJpY3QgX19wb2xpY3kpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u
bnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldHNjaGVkcG9saWN5
IChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLCBpbnQgX19wb2xpY3kpCiAgICAgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRy
X2dldGluaGVyaXRzY2hlZCAoY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fcmVzdHJpY3QKICAgICAg
X19hdHRyLCBpbnQgKl9fcmVzdHJpY3QgX19pbmhlcml0KQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9z
ZXRpbmhlcml0c2NoZWQgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCiAgICAgIGludCBfX2luaGVy
aXQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgpl
eHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRzY29wZSAoY29uc3QgcHRocmVhZF9hdHRyX3QgKl9f
cmVzdHJpY3QgX19hdHRyLAogICAgICBpbnQgKl9fcmVzdHJpY3QgX19zY29wZSkKICAgICB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIGludCBw
dGhyZWFkX2F0dHJfc2V0c2NvcGUgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsIGludCBfX3Njb3Bl
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRl
cm4gaW50IHB0aHJlYWRfYXR0cl9nZXRzdGFja2FkZHIgKGNvbnN0IHB0aHJlYWRfYXR0cl90ICpf
X3Jlc3RyaWN0CiAgICAgICAgICBfX2F0dHIsIHZvaWQgKipfX3Jlc3RyaWN0IF9fc3RhY2thZGRy
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKSBfX2F0
dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKTsKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0
cl9zZXRzdGFja2FkZHIgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCiAgICAgICAgICB2b2lkICpf
X3N0YWNrYWRkcikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEp
KSkgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFk
X2F0dHJfZ2V0c3RhY2tzaXplIChjb25zdCBwdGhyZWFkX2F0dHJfdCAqX19yZXN0cmljdAogICAg
ICAgICAgX19hdHRyLCBzaXplX3QgKl9fcmVzdHJpY3QgX19zdGFja3NpemUpCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKZXh0ZXJuIGludCBw
dGhyZWFkX2F0dHJfc2V0c3RhY2tzaXplIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgICAg
ICAgc2l6ZV90IF9fc3RhY2tzaXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25v
bm51bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0c3RhY2sgKGNvbnN0
IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0IF9fYXR0ciwKICAgICAgdm9pZCAqKl9fcmVzdHJp
Y3QgX19zdGFja2FkZHIsCiAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX3N0YWNrc2l6ZSkKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIsIDMpKSk7CgoKCgpl
eHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRzdGFjayAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwg
dm9pZCAqX19zdGFja2FkZHIsCiAgICAgIHNpemVfdCBfX3N0YWNrc2l6ZSkgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9h
dHRyX3NldGFmZmluaXR5X25wIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgIHNpemVfdCBf
X2NwdXNldHNpemUsCiAgICAgY29uc3QgY3B1X3NldF90ICpfX2NwdXNldCkKICAgICB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDMpKSk7CgoKCmV4dGVybiBpbnQgcHRo
cmVhZF9hdHRyX2dldGFmZmluaXR5X25wIChjb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAog
ICAgIHNpemVfdCBfX2NwdXNldHNpemUsCiAgICAgY3B1X3NldF90ICpfX2NwdXNldCkKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDMpKSk7CgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX2dldGF0dHJfZGVmYXVsdF9ucCAocHRocmVhZF9hdHRyX3QgKl9fYXR0cikKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCmV4dGVybiBp
bnQgcHRocmVhZF9zZXRhdHRyX2RlZmF1bHRfbnAgKGNvbnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0
dHIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoK
ZXh0ZXJuIGludCBwdGhyZWFkX2dldGF0dHJfbnAgKHB0aHJlYWRfdCBfX3RoLCBwdGhyZWFkX2F0
dHJfdCAqX19hdHRyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo
MikpKTsKCgoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9zZXRzY2hlZHBhcmFtIChwdGhyZWFkX3Qg
X190YXJnZXRfdGhyZWFkLCBpbnQgX19wb2xpY3ksCiAgICAgIGNvbnN0IHN0cnVjdCBzY2hlZF9w
YXJhbSAqX19wYXJhbSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g
KDMpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2dldHNjaGVkcGFyYW0gKHB0aHJlYWRfdCBfX3Rh
cmdldF90aHJlYWQsCiAgICAgIGludCAqX19yZXN0cmljdCBfX3BvbGljeSwKICAgICAgc3RydWN0
IHNjaGVkX3BhcmFtICpfX3Jlc3RyaWN0IF9fcGFyYW0pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm9ubnVsbF9fICgyLCAzKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9zZXRzY2hl
ZHByaW8gKHB0aHJlYWRfdCBfX3RhcmdldF90aHJlYWQsIGludCBfX3ByaW8pCiAgICAgdGhyb3cg
KCk7CgoKCgpleHRlcm4gaW50IHB0aHJlYWRfZ2V0bmFtZV9ucCAocHRocmVhZF90IF9fdGFyZ2V0
X3RocmVhZCwgY2hhciAqX19idWYsCiAgICAgICAgICBzaXplX3QgX19idWZsZW4pCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwoKCmV4dGVybiBpbnQgcHRo
cmVhZF9zZXRuYW1lX25wIChwdGhyZWFkX3QgX190YXJnZXRfdGhyZWFkLCBjb25zdCBjaGFyICpf
X25hbWUpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwoK
CgoKCmV4dGVybiBpbnQgcHRocmVhZF9nZXRjb25jdXJyZW5jeSAodm9pZCkgdGhyb3cgKCk7CgoK
ZXh0ZXJuIGludCBwdGhyZWFkX3NldGNvbmN1cnJlbmN5IChpbnQgX19sZXZlbCkgdGhyb3cgKCk7
CgoKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfeWllbGQgKHZvaWQpIHRocm93ICgpOwoKCgoKZXh0
ZXJuIGludCBwdGhyZWFkX3NldGFmZmluaXR5X25wIChwdGhyZWFkX3QgX190aCwgc2l6ZV90IF9f
Y3B1c2V0c2l6ZSwKICAgICAgIGNvbnN0IGNwdV9zZXRfdCAqX19jcHVzZXQpCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkpOwoKCmV4dGVybiBpbnQgcHRocmVh
ZF9nZXRhZmZpbml0eV9ucCAocHRocmVhZF90IF9fdGgsIHNpemVfdCBfX2NwdXNldHNpemUsCiAg
ICAgICBjcHVfc2V0X3QgKl9fY3B1c2V0KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X25vbm51bGxfXyAoMykpKTsKIyA1MDUgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMgNApleHRl
cm4gaW50IHB0aHJlYWRfb25jZSAocHRocmVhZF9vbmNlX3QgKl9fb25jZV9jb250cm9sLAogICAg
dm9pZCAoKl9faW5pdF9yb3V0aW5lKSAodm9pZCkpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSwgMikpKTsKIyA1MTcgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMgNApleHRlcm4gaW50
IHB0aHJlYWRfc2V0Y2FuY2Vsc3RhdGUgKGludCBfX3N0YXRlLCBpbnQgKl9fb2xkc3RhdGUpOwoK
CgpleHRlcm4gaW50IHB0aHJlYWRfc2V0Y2FuY2VsdHlwZSAoaW50IF9fdHlwZSwgaW50ICpfX29s
ZHR5cGUpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9jYW5jZWwgKHB0aHJlYWRfdCBfX3RoKTsKCgoK
CmV4dGVybiB2b2lkIHB0aHJlYWRfdGVzdGNhbmNlbCAodm9pZCk7CgoKCgp0eXBlZGVmIHN0cnVj
dAp7CiAgc3RydWN0CiAgewogICAgX19qbXBfYnVmIF9fY2FuY2VsX2ptcF9idWY7CiAgICBpbnQg
X19tYXNrX3dhc19zYXZlZDsKICB9IF9fY2FuY2VsX2ptcF9idWZbMV07CiAgdm9pZCAqX19wYWRb
NF07Cn0gX19wdGhyZWFkX3Vud2luZF9idWZfdCBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18p
KTsKCgoKI2RlZmluZSBfX2NsZWFudXBfZmN0X2F0dHJpYnV0ZSAKCgoKCnN0cnVjdCBfX3B0aHJl
YWRfY2xlYW51cF9mcmFtZQp7CiAgdm9pZCAoKl9fY2FuY2VsX3JvdXRpbmUpICh2b2lkICopOwog
IHZvaWQgKl9fY2FuY2VsX2FyZzsKICBpbnQgX19kb19pdDsKICBpbnQgX19jYW5jZWxfdHlwZTsK
fTsKIyA2NzUgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMgNAojZGVmaW5lIHB0aHJlYWRfY2xl
YW51cF9wdXNoKHJvdXRpbmUsYXJnKSBkbyB7IF9fcHRocmVhZF91bndpbmRfYnVmX3QgX19jYW5j
ZWxfYnVmOyB2b2lkICgqX19jYW5jZWxfcm91dGluZSkgKHZvaWQgKikgPSAocm91dGluZSk7IHZv
aWQgKl9fY2FuY2VsX2FyZyA9IChhcmcpOyBpbnQgX19ub3RfZmlyc3RfY2FsbCA9IF9fc2lnc2V0
am1wICgoc3RydWN0IF9fam1wX2J1Zl90YWcgKikgKHZvaWQgKikgX19jYW5jZWxfYnVmLl9fY2Fu
Y2VsX2ptcF9idWYsIDApOyBpZiAoX19nbGliY191bmxpa2VseSAoX19ub3RfZmlyc3RfY2FsbCkp
IHsgX19jYW5jZWxfcm91dGluZSAoX19jYW5jZWxfYXJnKTsgX19wdGhyZWFkX3Vud2luZF9uZXh0
ICgmX19jYW5jZWxfYnVmKTsgfSBfX3B0aHJlYWRfcmVnaXN0ZXJfY2FuY2VsICgmX19jYW5jZWxf
YnVmKTsgZG8gewojIDY5MSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMyA0CmV4dGVybiB2b2lk
IF9fcHRocmVhZF9yZWdpc3Rlcl9jYW5jZWwgKF9fcHRocmVhZF91bndpbmRfYnVmX3QgKl9fYnVm
KQogICAgIDsKCgoKI2RlZmluZSBwdGhyZWFkX2NsZWFudXBfcG9wKGV4ZWN1dGUpIGRvIHsgfSB3
aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBfX3B0aHJlYWRfdW5yZWdpc3Rlcl9jYW5jZWwgKCZfX2Nh
bmNlbF9idWYpOyBpZiAoZXhlY3V0ZSkgX19jYW5jZWxfcm91dGluZSAoX19jYW5jZWxfYXJnKTsg
fSB3aGlsZSAoMCkKCgoKCgoKZXh0ZXJuIHZvaWQgX19wdGhyZWFkX3VucmVnaXN0ZXJfY2FuY2Vs
IChfX3B0aHJlYWRfdW53aW5kX2J1Zl90ICpfX2J1ZikKICA7CgoKCgoKI2RlZmluZSBwdGhyZWFk
X2NsZWFudXBfcHVzaF9kZWZlcl9ucChyb3V0aW5lLGFyZykgZG8geyBfX3B0aHJlYWRfdW53aW5k
X2J1Zl90IF9fY2FuY2VsX2J1Zjsgdm9pZCAoKl9fY2FuY2VsX3JvdXRpbmUpICh2b2lkICopID0g
KHJvdXRpbmUpOyB2b2lkICpfX2NhbmNlbF9hcmcgPSAoYXJnKTsgaW50IF9fbm90X2ZpcnN0X2Nh
bGwgPSBfX3NpZ3NldGptcCAoKHN0cnVjdCBfX2ptcF9idWZfdGFnICopICh2b2lkICopIF9fY2Fu
Y2VsX2J1Zi5fX2NhbmNlbF9qbXBfYnVmLCAwKTsgaWYgKF9fZ2xpYmNfdW5saWtlbHkgKF9fbm90
X2ZpcnN0X2NhbGwpKSB7IF9fY2FuY2VsX3JvdXRpbmUgKF9fY2FuY2VsX2FyZyk7IF9fcHRocmVh
ZF91bndpbmRfbmV4dCAoJl9fY2FuY2VsX2J1Zik7IH0gX19wdGhyZWFkX3JlZ2lzdGVyX2NhbmNl
bF9kZWZlciAoJl9fY2FuY2VsX2J1Zik7IGRvIHsKIyA3MjYgIi91c3IvaW5jbHVkZS9wdGhyZWFk
LmgiIDMgNApleHRlcm4gdm9pZCBfX3B0aHJlYWRfcmVnaXN0ZXJfY2FuY2VsX2RlZmVyIChfX3B0
aHJlYWRfdW53aW5kX2J1Zl90ICpfX2J1ZikKICAgICA7CgoKCgojZGVmaW5lIHB0aHJlYWRfY2xl
YW51cF9wb3BfcmVzdG9yZV9ucChleGVjdXRlKSBkbyB7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgw
KTsgX19wdGhyZWFkX3VucmVnaXN0ZXJfY2FuY2VsX3Jlc3RvcmUgKCZfX2NhbmNlbF9idWYpOyBp
ZiAoZXhlY3V0ZSkgX19jYW5jZWxfcm91dGluZSAoX19jYW5jZWxfYXJnKTsgfSB3aGlsZSAoMCkK
CgoKCgoKZXh0ZXJuIHZvaWQgX19wdGhyZWFkX3VucmVnaXN0ZXJfY2FuY2VsX3Jlc3RvcmUgKF9f
cHRocmVhZF91bndpbmRfYnVmX3QgKl9fYnVmKQogIDsKCgoKZXh0ZXJuIHZvaWQgX19wdGhyZWFk
X3Vud2luZF9uZXh0IChfX3B0aHJlYWRfdW53aW5kX2J1Zl90ICpfX2J1ZikKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19ub3JldHVybl9fKSkKCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fd2Vha19fKSkK
CiAgICAgOwoKCgpzdHJ1Y3QgX19qbXBfYnVmX3RhZzsKZXh0ZXJuIGludCBfX3NpZ3NldGptcCAo
c3RydWN0IF9fam1wX2J1Zl90YWcgKl9fZW52LCBpbnQgX19zYXZlbWFzaykgdGhyb3cgKCk7CgoK
CgoKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X2luaXQgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRl
eCwKICAgICAgICAgIGNvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fbXV0ZXhhdHRyKQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50
IHB0aHJlYWRfbXV0ZXhfZGVzdHJveSAocHRocmVhZF9tdXRleF90ICpfX211dGV4KQogICAgIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0
aHJlYWRfbXV0ZXhfdHJ5bG9jayAocHRocmVhZF9tdXRleF90ICpfX211dGV4KQogICAgIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJl
YWRfbXV0ZXhfbG9jayAocHRocmVhZF9tdXRleF90ICpfX211dGV4KQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX211
dGV4X3RpbWVkbG9jayAocHRocmVhZF9tdXRleF90ICpfX3Jlc3RyaWN0IF9fbXV0ZXgsCiAgICAg
ICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0CiAgICAgICAgX19hYnN0aW1lKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCmV4dGVybiBp
bnQgcHRocmVhZF9tdXRleF91bmxvY2sgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCmV4dGVybiBpbnQg
cHRocmVhZF9tdXRleF9nZXRwcmlvY2VpbGluZyAoY29uc3QgcHRocmVhZF9tdXRleF90ICoKICAg
ICAgX19yZXN0cmljdCBfX211dGV4LAogICAgICBpbnQgKl9fcmVzdHJpY3QgX19wcmlvY2VpbGlu
ZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoK
CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF9zZXRwcmlvY2VpbGluZyAocHRocmVhZF9tdXRleF90
ICpfX3Jlc3RyaWN0IF9fbXV0ZXgsCiAgICAgIGludCBfX3ByaW9jZWlsaW5nLAogICAgICBpbnQg
Kl9fcmVzdHJpY3QgX19vbGRfY2VpbGluZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19ub25udWxsX18gKDEsIDMpKSk7CgoKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfY29uc2lz
dGVudCAocHRocmVhZF9tdXRleF90ICpfX211dGV4KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX25vbm51bGxfXyAoMSkpKTsKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF9jb25zaXN0
ZW50X25wIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwojIDgxNyAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIg
MyA0CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfaW5pdCAocHRocmVhZF9tdXRleGF0dHJf
dCAqX19hdHRyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp
KTsKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3kgKHB0aHJlYWRfbXV0ZXhh
dHRyX3QgKl9fYXR0cikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g
KDEpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9nZXRwc2hhcmVkIChjb25zdCBw
dGhyZWFkX211dGV4YXR0cl90ICoKICAgICAgX19yZXN0cmljdCBfX2F0dHIsCiAgICAgIGludCAq
X19yZXN0cmljdCBfX3BzaGFyZWQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u
bnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfc2V0cHNoYXJl
ZCAocHRocmVhZF9tdXRleGF0dHJfdCAqX19hdHRyLAogICAgICBpbnQgX19wc2hhcmVkKQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX211dGV4YXR0cl9nZXR0eXBlIChjb25zdCBwdGhyZWFkX211dGV4YXR0cl90ICpf
X3Jlc3RyaWN0CiAgICAgICAgICBfX2F0dHIsIGludCAqX19yZXN0cmljdCBfX2tpbmQpCiAgICAg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKZXh0ZXJu
IGludCBwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlIChwdGhyZWFkX211dGV4YXR0cl90ICpfX2F0
dHIsIGludCBfX2tpbmQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f
ICgxKSkpOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2dldHByb3RvY29sIChjb25z
dCBwdGhyZWFkX211dGV4YXR0cl90ICoKICAgICAgIF9fcmVzdHJpY3QgX19hdHRyLAogICAgICAg
aW50ICpfX3Jlc3RyaWN0IF9fcHJvdG9jb2wpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX3Nl
dHByb3RvY29sIChwdGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIsCiAgICAgICBpbnQgX19wcm90
b2NvbCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoK
ZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9nZXRwcmlvY2VpbGluZyAoY29uc3QgcHRocmVh
ZF9tdXRleGF0dHJfdCAqCiAgICAgICAgICBfX3Jlc3RyaWN0IF9fYXR0ciwKICAgICAgICAgIGlu
dCAqX19yZXN0cmljdCBfX3ByaW9jZWlsaW5nKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX3Nl
dHByaW9jZWlsaW5nIChwdGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIsCiAgICAgICAgICBpbnQg
X19wcmlvY2VpbGluZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g
KDEpKSk7CgoKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfZ2V0cm9idXN0IChjb25zdCBw
dGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIsCiAgICAgaW50ICpfX3JvYnVzdG5lc3MpCiAgICAg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKZXh0ZXJuIGlu
dCBwdGhyZWFkX211dGV4YXR0cl9nZXRyb2J1c3RfbnAgKGNvbnN0IHB0aHJlYWRfbXV0ZXhhdHRy
X3QgKl9fYXR0ciwKICAgICAgICBpbnQgKl9fcm9idXN0bmVzcykKICAgICB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCmV4dGVybiBpbnQgcHRocmVhZF9t
dXRleGF0dHJfc2V0cm9idXN0IChwdGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIsCiAgICAgaW50
IF9fcm9idXN0bmVzcykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g
KDEpKSk7CgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX3NldHJvYnVzdF9ucCAocHRocmVh
ZF9tdXRleGF0dHJfdCAqX19hdHRyLAogICAgICAgIGludCBfX3JvYnVzdG5lc3MpCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwojIDg5OSAiL3Vzci9pbmNs
dWRlL3B0aHJlYWQuaCIgMyA0CmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfaW5pdCAocHRocmVh
ZF9yd2xvY2tfdCAqX19yZXN0cmljdCBfX3J3bG9jaywKICAgIGNvbnN0IHB0aHJlYWRfcndsb2Nr
YXR0cl90ICpfX3Jlc3RyaWN0CiAgICBfX2F0dHIpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrX2Rlc3Ryb3kgKHB0
aHJlYWRfcndsb2NrX3QgKl9fcndsb2NrKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrX3JkbG9jayAocHRo
cmVhZF9yd2xvY2tfdCAqX19yd2xvY2spCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfdHJ5cmRsb2NrIChw
dGhyZWFkX3J3bG9ja190ICpfX3J3bG9jaykKICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19u
b25udWxsX18gKDEpKSk7CgoKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfdGltZWRyZGxvY2sg
KHB0aHJlYWRfcndsb2NrX3QgKl9fcmVzdHJpY3QgX19yd2xvY2ssCiAgICAgICAgICAgY29uc3Qg
c3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0CiAgICAgICAgICAgX19hYnN0aW1lKSB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCmV4dGVybiBpbnQgcHRo
cmVhZF9yd2xvY2tfd3Jsb2NrIChwdGhyZWFkX3J3bG9ja190ICpfX3J3bG9jaykKICAgICB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBwdGhy
ZWFkX3J3bG9ja190cnl3cmxvY2sgKHB0aHJlYWRfcndsb2NrX3QgKl9fcndsb2NrKQogICAgIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIGludCBw
dGhyZWFkX3J3bG9ja190aW1lZHdybG9jayAocHRocmVhZF9yd2xvY2tfdCAqX19yZXN0cmljdCBf
X3J3bG9jaywKICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QKICAg
ICAgICAgICBfX2Fic3RpbWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo
MSwgMikpKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja191bmxvY2sgKHB0aHJlYWRfcnds
b2NrX3QgKl9fcndsb2NrKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSkpKTsKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9pbml0IChwdGhyZWFk
X3J3bG9ja2F0dHJfdCAqX19hdHRyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25v
bm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9kZXN0cm95IChw
dGhyZWFkX3J3bG9ja2F0dHJfdCAqX19hdHRyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9nZXRw
c2hhcmVkIChjb25zdCBwdGhyZWFkX3J3bG9ja2F0dHJfdCAqCiAgICAgICBfX3Jlc3RyaWN0IF9f
YXR0ciwKICAgICAgIGludCAqX19yZXN0cmljdCBfX3BzaGFyZWQpCiAgICAgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9y
d2xvY2thdHRyX3NldHBzaGFyZWQgKHB0aHJlYWRfcndsb2NrYXR0cl90ICpfX2F0dHIsCiAgICAg
ICBpbnQgX19wc2hhcmVkKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9nZXRraW5kX25wIChjb25z
dCBwdGhyZWFkX3J3bG9ja2F0dHJfdCAqCiAgICAgICBfX3Jlc3RyaWN0IF9fYXR0ciwKICAgICAg
IGludCAqX19yZXN0cmljdCBfX3ByZWYpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2thdHRyX3NldGtp
bmRfbnAgKHB0aHJlYWRfcndsb2NrYXR0cl90ICpfX2F0dHIsCiAgICAgICBpbnQgX19wcmVmKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKCgpleHRlcm4g
aW50IHB0aHJlYWRfY29uZF9pbml0IChwdGhyZWFkX2NvbmRfdCAqX19yZXN0cmljdCBfX2NvbmQs
CiAgICAgICAgIGNvbnN0IHB0aHJlYWRfY29uZGF0dHJfdCAqX19yZXN0cmljdCBfX2NvbmRfYXR0
cikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0
ZXJuIGludCBwdGhyZWFkX2NvbmRfZGVzdHJveSAocHRocmVhZF9jb25kX3QgKl9fY29uZCkKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX2NvbmRfc2lnbmFsIChwdGhyZWFkX2NvbmRfdCAqX19jb25kKQogICAgIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJl
YWRfY29uZF9icm9hZGNhc3QgKHB0aHJlYWRfY29uZF90ICpfX2NvbmQpCiAgICAgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCgpleHRlcm4gaW50IHB0aHJl
YWRfY29uZF93YWl0IChwdGhyZWFkX2NvbmRfdCAqX19yZXN0cmljdCBfX2NvbmQsCiAgICAgICAg
IHB0aHJlYWRfbXV0ZXhfdCAqX19yZXN0cmljdCBfX211dGV4KQogICAgIF9fYXR0cmlidXRlX18g
KChfX25vbm51bGxfXyAoMSwgMikpKTsKIyAxMDExICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAz
IDQKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfdGltZWR3YWl0IChwdGhyZWFkX2NvbmRfdCAqX19y
ZXN0cmljdCBfX2NvbmQsCiAgICAgICBwdGhyZWFkX211dGV4X3QgKl9fcmVzdHJpY3QgX19tdXRl
eCwKICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdCBfX2Fic3RpbWUpCiAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyLCAzKSkpOwoKCgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX2NvbmRhdHRyX2luaXQgKHB0aHJlYWRfY29uZGF0dHJfdCAqX19hdHRyKQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50
IHB0aHJlYWRfY29uZGF0dHJfZGVzdHJveSAocHRocmVhZF9jb25kYXR0cl90ICpfX2F0dHIpCiAg
ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBp
bnQgcHRocmVhZF9jb25kYXR0cl9nZXRwc2hhcmVkIChjb25zdCBwdGhyZWFkX2NvbmRhdHRyX3Qg
KgogICAgIF9fcmVzdHJpY3QgX19hdHRyLAogICAgIGludCAqX19yZXN0cmljdCBfX3BzaGFyZWQp
CiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4
dGVybiBpbnQgcHRocmVhZF9jb25kYXR0cl9zZXRwc2hhcmVkIChwdGhyZWFkX2NvbmRhdHRyX3Qg
Kl9fYXR0ciwKICAgICBpbnQgX19wc2hhcmVkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19u
b25udWxsX18gKDEpKSk7CgoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kYXR0cl9nZXRjbG9jayAo
Y29uc3QgcHRocmVhZF9jb25kYXR0cl90ICoKICAgICAgICAgIF9fcmVzdHJpY3QgX19hdHRyLAog
ICAgICAgICAgX19jbG9ja2lkX3QgKl9fcmVzdHJpY3QgX19jbG9ja19pZCkKICAgICB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIGludCBwdGhy
ZWFkX2NvbmRhdHRyX3NldGNsb2NrIChwdGhyZWFkX2NvbmRhdHRyX3QgKl9fYXR0ciwKICAgICAg
ICAgIF9fY2xvY2tpZF90IF9fY2xvY2tfaWQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fbm9ubnVsbF9fICgxKSkpOwojIDEwNTUgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMgNApl
eHRlcm4gaW50IHB0aHJlYWRfc3Bpbl9pbml0IChwdGhyZWFkX3NwaW5sb2NrX3QgKl9fbG9jaywg
aW50IF9fcHNoYXJlZCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g
KDEpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX3NwaW5fZGVzdHJveSAocHRocmVhZF9zcGlubG9j
a190ICpfX2xvY2spCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx
KSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9zcGluX2xvY2sgKHB0aHJlYWRfc3BpbmxvY2tfdCAq
X19sb2NrKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsK
CgpleHRlcm4gaW50IHB0aHJlYWRfc3Bpbl90cnlsb2NrIChwdGhyZWFkX3NwaW5sb2NrX3QgKl9f
bG9jaykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoK
ZXh0ZXJuIGludCBwdGhyZWFkX3NwaW5fdW5sb2NrIChwdGhyZWFkX3NwaW5sb2NrX3QgKl9fbG9j
aykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoK
CmV4dGVybiBpbnQgcHRocmVhZF9iYXJyaWVyX2luaXQgKHB0aHJlYWRfYmFycmllcl90ICpfX3Jl
c3RyaWN0IF9fYmFycmllciwKICAgICBjb25zdCBwdGhyZWFkX2JhcnJpZXJhdHRyX3QgKl9fcmVz
dHJpY3QKICAgICBfX2F0dHIsIHVuc2lnbmVkIGludCBfX2NvdW50KQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfYmFy
cmllcl9kZXN0cm95IChwdGhyZWFkX2JhcnJpZXJfdCAqX19iYXJyaWVyKQogICAgIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRf
YmFycmllcl93YWl0IChwdGhyZWFkX2JhcnJpZXJfdCAqX19iYXJyaWVyKQogICAgIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFk
X2JhcnJpZXJhdHRyX2luaXQgKHB0aHJlYWRfYmFycmllcmF0dHJfdCAqX19hdHRyKQogICAgIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0
aHJlYWRfYmFycmllcmF0dHJfZGVzdHJveSAocHRocmVhZF9iYXJyaWVyYXR0cl90ICpfX2F0dHIp
CiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVy
biBpbnQgcHRocmVhZF9iYXJyaWVyYXR0cl9nZXRwc2hhcmVkIChjb25zdCBwdGhyZWFkX2JhcnJp
ZXJhdHRyX3QgKgogICAgICAgIF9fcmVzdHJpY3QgX19hdHRyLAogICAgICAgIGludCAqX19yZXN0
cmljdCBfX3BzaGFyZWQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f
ICgxLCAyKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9iYXJyaWVyYXR0cl9zZXRwc2hhcmVkIChw
dGhyZWFkX2JhcnJpZXJhdHRyX3QgKl9fYXR0ciwKICAgICAgICBpbnQgX19wc2hhcmVkKQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKIyAxMTIyICIvdXNy
L2luY2x1ZGUvcHRocmVhZC5oIiAzIDQKZXh0ZXJuIGludCBwdGhyZWFkX2tleV9jcmVhdGUgKHB0
aHJlYWRfa2V5X3QgKl9fa2V5LAogICAgICAgICAgdm9pZCAoKl9fZGVzdHJfZnVuY3Rpb24pICh2
b2lkICopKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsK
CgpleHRlcm4gaW50IHB0aHJlYWRfa2V5X2RlbGV0ZSAocHRocmVhZF9rZXlfdCBfX2tleSkgdGhy
b3cgKCk7CgoKZXh0ZXJuIHZvaWQgKnB0aHJlYWRfZ2V0c3BlY2lmaWMgKHB0aHJlYWRfa2V5X3Qg
X19rZXkpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9zZXRzcGVjaWZpYyAocHRocmVh
ZF9rZXlfdCBfX2tleSwKICAgIGNvbnN0IHZvaWQgKl9fcG9pbnRlcikgdGhyb3cgKCkgOwoKCgoK
ZXh0ZXJuIGludCBwdGhyZWFkX2dldGNwdWNsb2NraWQgKHB0aHJlYWRfdCBfX3RocmVhZF9pZCwK
ICAgICAgX19jbG9ja2lkX3QgKl9fY2xvY2tfaWQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9ubnVsbF9fICgyKSkpOwojIDExNTYgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMg
NApleHRlcm4gaW50IHB0aHJlYWRfYXRmb3JrICh2b2lkICgqX19wcmVwYXJlKSAodm9pZCksCiAg
ICAgIHZvaWQgKCpfX3BhcmVudCkgKHZvaWQpLAogICAgICB2b2lkICgqX19jaGlsZCkgKHZvaWQp
KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5s
aW5lX18pKSBpbnQKX19hdHRyaWJ1dGVfXyAoKF9fbGVhZl9fKSkgcHRocmVhZF9lcXVhbCAocHRo
cmVhZF90IF9fdGhyZWFkMSwgcHRocmVhZF90IF9fdGhyZWFkMikgdGhyb3cgKCkKewogIHJldHVy
biBfX3RocmVhZDEgPT0gX190aHJlYWQyOwp9CgoKfQojIDM2ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9iaXRzL2d0aHItZGVmYXVsdC5oIiAyIDMKIyA0NyAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvYml0cy9ndGhyLWRlZmF1bHQuaCIgMwp0eXBlZGVmIHB0aHJlYWRfdCBfX2d0aHJlYWRfdDsK
dHlwZWRlZiBwdGhyZWFkX2tleV90IF9fZ3RocmVhZF9rZXlfdDsKdHlwZWRlZiBwdGhyZWFkX29u
Y2VfdCBfX2d0aHJlYWRfb25jZV90Owp0eXBlZGVmIHB0aHJlYWRfbXV0ZXhfdCBfX2d0aHJlYWRf
bXV0ZXhfdDsKdHlwZWRlZiBwdGhyZWFkX211dGV4X3QgX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRl
eF90Owp0eXBlZGVmIHB0aHJlYWRfY29uZF90IF9fZ3RocmVhZF9jb25kX3Q7CnR5cGVkZWYgc3Ry
dWN0IHRpbWVzcGVjIF9fZ3RocmVhZF90aW1lX3Q7CgoKCiNkZWZpbmUgX19HVEhSRUFEX0hBU19D
T05EIDEKCiNkZWZpbmUgX19HVEhSRUFEX01VVEVYX0lOSVQgUFRIUkVBRF9NVVRFWF9JTklUSUFM
SVpFUgojZGVmaW5lIF9fR1RIUkVBRF9NVVRFWF9JTklUX0ZVTkNUSU9OIF9fZ3RocmVhZF9tdXRl
eF9pbml0X2Z1bmN0aW9uCiNkZWZpbmUgX19HVEhSRUFEX09OQ0VfSU5JVCBQVEhSRUFEX09OQ0Vf
SU5JVAoKCgojZGVmaW5lIF9fR1RIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVCBQVEhSRUFEX1JF
Q1VSU0lWRV9NVVRFWF9JTklUSUFMSVpFUl9OUAoKCgojZGVmaW5lIF9fR1RIUkVBRF9DT05EX0lO
SVQgUFRIUkVBRF9DT05EX0lOSVRJQUxJWkVSCiNkZWZpbmUgX19HVEhSRUFEX1RJTUVfSU5JVCB7
MCwwfQojIDg3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL2d0aHItZGVmYXVsdC5oIiAz
CiNkZWZpbmUgX19ndGhyd19wcmFnbWEocHJhZ21hKSAKCiNkZWZpbmUgX19ndGhydzIobmFtZSxu
YW1lMix0eXBlKSBzdGF0aWMgX190eXBlb2YodHlwZSkgbmFtZSBfX2F0dHJpYnV0ZV9fICgoX193
ZWFrcmVmX18oI25hbWUyKSkpOyBfX2d0aHJ3X3ByYWdtYSh3ZWFrIHR5cGUpCgoKI2RlZmluZSBf
X2d0aHJ3XyhuYW1lKSBfX2d0aHJ3XyAjIyBuYW1lCgoKCgoKCiNkZWZpbmUgX19ndGhydyhuYW1l
KSBfX2d0aHJ3MihfX2d0aHJ3XyAjIyBuYW1lLG5hbWUsbmFtZSkKCnN0YXRpYyBfX3R5cGVvZihw
dGhyZWFkX29uY2UpIF9fZ3RocndfcHRocmVhZF9vbmNlIF9fYXR0cmlidXRlX18gKChfX3dlYWty
ZWZfXygicHRocmVhZF9vbmNlIikpKTsKc3RhdGljIF9fdHlwZW9mKHB0aHJlYWRfZ2V0c3BlY2lm
aWMpIF9fZ3RocndfcHRocmVhZF9nZXRzcGVjaWZpYyBfX2F0dHJpYnV0ZV9fICgoX193ZWFrcmVm
X18oInB0aHJlYWRfZ2V0c3BlY2lmaWMiKSkpOwpzdGF0aWMgX190eXBlb2YocHRocmVhZF9zZXRz
cGVjaWZpYykgX19ndGhyd19wdGhyZWFkX3NldHNwZWNpZmljIF9fYXR0cmlidXRlX18gKChfX3dl
YWtyZWZfXygicHRocmVhZF9zZXRzcGVjaWZpYyIpKSk7CgpzdGF0aWMgX190eXBlb2YocHRocmVh
ZF9jcmVhdGUpIF9fZ3RocndfcHRocmVhZF9jcmVhdGUgX19hdHRyaWJ1dGVfXyAoKF9fd2Vha3Jl
Zl9fKCJwdGhyZWFkX2NyZWF0ZSIpKSk7CnN0YXRpYyBfX3R5cGVvZihwdGhyZWFkX2pvaW4pIF9f
Z3RocndfcHRocmVhZF9qb2luIF9fYXR0cmlidXRlX18gKChfX3dlYWtyZWZfXygicHRocmVhZF9q
b2luIikpKTsKc3RhdGljIF9fdHlwZW9mKHB0aHJlYWRfZXF1YWwpIF9fZ3RocndfcHRocmVhZF9l
cXVhbCBfX2F0dHJpYnV0ZV9fICgoX193ZWFrcmVmX18oInB0aHJlYWRfZXF1YWwiKSkpOwpzdGF0
aWMgX190eXBlb2YocHRocmVhZF9zZWxmKSBfX2d0aHJ3X3B0aHJlYWRfc2VsZiBfX2F0dHJpYnV0
ZV9fICgoX193ZWFrcmVmX18oInB0aHJlYWRfc2VsZiIpKSk7CnN0YXRpYyBfX3R5cGVvZihwdGhy
ZWFkX2RldGFjaCkgX19ndGhyd19wdGhyZWFkX2RldGFjaCBfX2F0dHJpYnV0ZV9fICgoX193ZWFr
cmVmX18oInB0aHJlYWRfZGV0YWNoIikpKTsKCnN0YXRpYyBfX3R5cGVvZihwdGhyZWFkX2NhbmNl
bCkgX19ndGhyd19wdGhyZWFkX2NhbmNlbCBfX2F0dHJpYnV0ZV9fICgoX193ZWFrcmVmX18oInB0
aHJlYWRfY2FuY2VsIikpKTsKCnN0YXRpYyBfX3R5cGVvZihzY2hlZF95aWVsZCkgX19ndGhyd19z
Y2hlZF95aWVsZCBfX2F0dHJpYnV0ZV9fICgoX193ZWFrcmVmX18oInNjaGVkX3lpZWxkIikpKTsK
CnN0YXRpYyBfX3R5cGVvZihwdGhyZWFkX211dGV4X2xvY2spIF9fZ3RocndfcHRocmVhZF9tdXRl
eF9sb2NrIF9fYXR0cmlidXRlX18gKChfX3dlYWtyZWZfXygicHRocmVhZF9tdXRleF9sb2NrIikp
KTsKc3RhdGljIF9fdHlwZW9mKHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaykgX19ndGhyd19wdGhyZWFk
X211dGV4X3RyeWxvY2sgX19hdHRyaWJ1dGVfXyAoKF9fd2Vha3JlZl9fKCJwdGhyZWFkX211dGV4
X3RyeWxvY2siKSkpOwoKc3RhdGljIF9fdHlwZW9mKHB0aHJlYWRfbXV0ZXhfdGltZWRsb2NrKSBf
X2d0aHJ3X3B0aHJlYWRfbXV0ZXhfdGltZWRsb2NrIF9fYXR0cmlidXRlX18gKChfX3dlYWtyZWZf
XygicHRocmVhZF9tdXRleF90aW1lZGxvY2siKSkpOwoKc3RhdGljIF9fdHlwZW9mKHB0aHJlYWRf
bXV0ZXhfdW5sb2NrKSBfX2d0aHJ3X3B0aHJlYWRfbXV0ZXhfdW5sb2NrIF9fYXR0cmlidXRlX18g
KChfX3dlYWtyZWZfXygicHRocmVhZF9tdXRleF91bmxvY2siKSkpOwpzdGF0aWMgX190eXBlb2Yo
cHRocmVhZF9tdXRleF9pbml0KSBfX2d0aHJ3X3B0aHJlYWRfbXV0ZXhfaW5pdCBfX2F0dHJpYnV0
ZV9fICgoX193ZWFrcmVmX18oInB0aHJlYWRfbXV0ZXhfaW5pdCIpKSk7CnN0YXRpYyBfX3R5cGVv
ZihwdGhyZWFkX211dGV4X2Rlc3Ryb3kpIF9fZ3RocndfcHRocmVhZF9tdXRleF9kZXN0cm95IF9f
YXR0cmlidXRlX18gKChfX3dlYWtyZWZfXygicHRocmVhZF9tdXRleF9kZXN0cm95IikpKTsKCnN0
YXRpYyBfX3R5cGVvZihwdGhyZWFkX2NvbmRfaW5pdCkgX19ndGhyd19wdGhyZWFkX2NvbmRfaW5p
dCBfX2F0dHJpYnV0ZV9fICgoX193ZWFrcmVmX18oInB0aHJlYWRfY29uZF9pbml0IikpKTsKc3Rh
dGljIF9fdHlwZW9mKHB0aHJlYWRfY29uZF9icm9hZGNhc3QpIF9fZ3RocndfcHRocmVhZF9jb25k
X2Jyb2FkY2FzdCBfX2F0dHJpYnV0ZV9fICgoX193ZWFrcmVmX18oInB0aHJlYWRfY29uZF9icm9h
ZGNhc3QiKSkpOwpzdGF0aWMgX190eXBlb2YocHRocmVhZF9jb25kX3NpZ25hbCkgX19ndGhyd19w
dGhyZWFkX2NvbmRfc2lnbmFsIF9fYXR0cmlidXRlX18gKChfX3dlYWtyZWZfXygicHRocmVhZF9j
b25kX3NpZ25hbCIpKSk7CnN0YXRpYyBfX3R5cGVvZihwdGhyZWFkX2NvbmRfd2FpdCkgX19ndGhy
d19wdGhyZWFkX2NvbmRfd2FpdCBfX2F0dHJpYnV0ZV9fICgoX193ZWFrcmVmX18oInB0aHJlYWRf
Y29uZF93YWl0IikpKTsKc3RhdGljIF9fdHlwZW9mKHB0aHJlYWRfY29uZF90aW1lZHdhaXQpIF9f
Z3RocndfcHRocmVhZF9jb25kX3RpbWVkd2FpdCBfX2F0dHJpYnV0ZV9fICgoX193ZWFrcmVmX18o
InB0aHJlYWRfY29uZF90aW1lZHdhaXQiKSkpOwpzdGF0aWMgX190eXBlb2YocHRocmVhZF9jb25k
X2Rlc3Ryb3kpIF9fZ3RocndfcHRocmVhZF9jb25kX2Rlc3Ryb3kgX19hdHRyaWJ1dGVfXyAoKF9f
d2Vha3JlZl9fKCJwdGhyZWFkX2NvbmRfZGVzdHJveSIpKSk7CgpzdGF0aWMgX190eXBlb2YocHRo
cmVhZF9rZXlfY3JlYXRlKSBfX2d0aHJ3X3B0aHJlYWRfa2V5X2NyZWF0ZSBfX2F0dHJpYnV0ZV9f
ICgoX193ZWFrcmVmX18oInB0aHJlYWRfa2V5X2NyZWF0ZSIpKSk7CnN0YXRpYyBfX3R5cGVvZihw
dGhyZWFkX2tleV9kZWxldGUpIF9fZ3RocndfcHRocmVhZF9rZXlfZGVsZXRlIF9fYXR0cmlidXRl
X18gKChfX3dlYWtyZWZfXygicHRocmVhZF9rZXlfZGVsZXRlIikpKTsKc3RhdGljIF9fdHlwZW9m
KHB0aHJlYWRfbXV0ZXhhdHRyX2luaXQpIF9fZ3RocndfcHRocmVhZF9tdXRleGF0dHJfaW5pdCBf
X2F0dHJpYnV0ZV9fICgoX193ZWFrcmVmX18oInB0aHJlYWRfbXV0ZXhhdHRyX2luaXQiKSkpOwpz
dGF0aWMgX190eXBlb2YocHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSkgX19ndGhyd19wdGhyZWFk
X211dGV4YXR0cl9zZXR0eXBlIF9fYXR0cmlidXRlX18gKChfX3dlYWtyZWZfXygicHRocmVhZF9t
dXRleGF0dHJfc2V0dHlwZSIpKSk7CnN0YXRpYyBfX3R5cGVvZihwdGhyZWFkX211dGV4YXR0cl9k
ZXN0cm95KSBfX2d0aHJ3X3B0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3kgX19hdHRyaWJ1dGVfXyAo
KF9fd2Vha3JlZl9fKCJwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95IikpKTsKIyAyMzYgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvZ3Roci1kZWZhdWx0LmgiIDMKc3RhdGljIF9fdHlwZW9m
KHB0aHJlYWRfa2V5X2NyZWF0ZSkgX19ndGhyd19fX3B0aHJlYWRfa2V5X2NyZWF0ZSBfX2F0dHJp
YnV0ZV9fICgoX193ZWFrcmVmX18oIl9fcHRocmVhZF9rZXlfY3JlYXRlIikpKTsKCgojZGVmaW5l
IEdUSFJfQUNUSVZFX1BST1hZIF9fZ3RocndfKF9fcHRocmVhZF9rZXlfY3JlYXRlKQoKCgoKCgpz
dGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRfYWN0aXZlX3AgKHZvaWQpCnsKICBzdGF0aWMgdm9p
ZCAqY29uc3QgX19ndGhyZWFkX2FjdGl2ZV9wdHIKICAgID0gX19leHRlbnNpb25fXyAodm9pZCAq
KSAmX19ndGhyd19fX3B0aHJlYWRfa2V5X2NyZWF0ZTsKICByZXR1cm4gX19ndGhyZWFkX2FjdGl2
ZV9wdHIgIT0gMDsKfQojIDY1OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvYml0cy9ndGhyLWRl
ZmF1bHQuaCIgMwpzdGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRfY3JlYXRlIChfX2d0aHJlYWRf
dCAqX190aHJlYWRpZCwgdm9pZCAqKCpfX2Z1bmMpICh2b2lkKiksCiAgICB2b2lkICpfX2FyZ3Mp
CnsKICByZXR1cm4gX19ndGhyd19wdGhyZWFkX2NyZWF0ZSAoX190aHJlYWRpZCwgX19udWxsLCBf
X2Z1bmMsIF9fYXJncyk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9qb2luIChfX2d0
aHJlYWRfdCBfX3RocmVhZGlkLCB2b2lkICoqX192YWx1ZV9wdHIpCnsKICByZXR1cm4gX19ndGhy
d19wdGhyZWFkX2pvaW4gKF9fdGhyZWFkaWQsIF9fdmFsdWVfcHRyKTsKfQoKc3RhdGljIGlubGlu
ZSBpbnQKX19ndGhyZWFkX2RldGFjaCAoX19ndGhyZWFkX3QgX190aHJlYWRpZCkKewogIHJldHVy
biBfX2d0aHJ3X3B0aHJlYWRfZGV0YWNoIChfX3RocmVhZGlkKTsKfQoKc3RhdGljIGlubGluZSBp
bnQKX19ndGhyZWFkX2VxdWFsIChfX2d0aHJlYWRfdCBfX3QxLCBfX2d0aHJlYWRfdCBfX3QyKQp7
CiAgcmV0dXJuIF9fZ3RocndfcHRocmVhZF9lcXVhbCAoX190MSwgX190Mik7Cn0KCnN0YXRpYyBp
bmxpbmUgX19ndGhyZWFkX3QKX19ndGhyZWFkX3NlbGYgKHZvaWQpCnsKICByZXR1cm4gX19ndGhy
d19wdGhyZWFkX3NlbGYgKCk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF95aWVsZCAo
dm9pZCkKewogIHJldHVybiBfX2d0aHJ3X3NjaGVkX3lpZWxkICgpOwp9CgpzdGF0aWMgaW5saW5l
IGludApfX2d0aHJlYWRfb25jZSAoX19ndGhyZWFkX29uY2VfdCAqX19vbmNlLCB2b2lkICgqX19m
dW5jKSAodm9pZCkpCnsKICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wICgpKQogICAgcmV0dXJuIF9f
Z3RocndfcHRocmVhZF9vbmNlIChfX29uY2UsIF9fZnVuYyk7CiAgZWxzZQogICAgcmV0dXJuIC0x
Owp9CgpzdGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRfa2V5X2NyZWF0ZSAoX19ndGhyZWFkX2tl
eV90ICpfX2tleSwgdm9pZCAoKl9fZHRvcikgKHZvaWQgKikpCnsKICByZXR1cm4gX19ndGhyd19w
dGhyZWFkX2tleV9jcmVhdGUgKF9fa2V5LCBfX2R0b3IpOwp9CgpzdGF0aWMgaW5saW5lIGludApf
X2d0aHJlYWRfa2V5X2RlbGV0ZSAoX19ndGhyZWFkX2tleV90IF9fa2V5KQp7CiAgcmV0dXJuIF9f
Z3RocndfcHRocmVhZF9rZXlfZGVsZXRlIChfX2tleSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCAq
Cl9fZ3RocmVhZF9nZXRzcGVjaWZpYyAoX19ndGhyZWFkX2tleV90IF9fa2V5KQp7CiAgcmV0dXJu
IF9fZ3RocndfcHRocmVhZF9nZXRzcGVjaWZpYyAoX19rZXkpOwp9CgpzdGF0aWMgaW5saW5lIGlu
dApfX2d0aHJlYWRfc2V0c3BlY2lmaWMgKF9fZ3RocmVhZF9rZXlfdCBfX2tleSwgY29uc3Qgdm9p
ZCAqX19wdHIpCnsKICByZXR1cm4gX19ndGhyd19wdGhyZWFkX3NldHNwZWNpZmljIChfX2tleSwg
X19wdHIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQKX19ndGhyZWFkX211dGV4X2luaXRfZnVuY3Rp
b24gKF9fZ3RocmVhZF9tdXRleF90ICpfX211dGV4KQp7CiAgaWYgKF9fZ3RocmVhZF9hY3RpdmVf
cCAoKSkKICAgIF9fZ3RocndfcHRocmVhZF9tdXRleF9pbml0IChfX211dGV4LCBfX251bGwpOwp9
CgpzdGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRfbXV0ZXhfZGVzdHJveSAoX19ndGhyZWFkX211
dGV4X3QgKl9fbXV0ZXgpCnsKICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wICgpKQogICAgcmV0dXJu
IF9fZ3RocndfcHRocmVhZF9tdXRleF9kZXN0cm95IChfX211dGV4KTsKICBlbHNlCiAgICByZXR1
cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFkX211dGV4X2xvY2sgKF9fZ3RocmVh
ZF9tdXRleF90ICpfX211dGV4KQp7CiAgaWYgKF9fZ3RocmVhZF9hY3RpdmVfcCAoKSkKICAgIHJl
dHVybiBfX2d0aHJ3X3B0aHJlYWRfbXV0ZXhfbG9jayAoX19tdXRleCk7CiAgZWxzZQogICAgcmV0
dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9tdXRleF90cnlsb2NrIChfX2d0
aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkKewogIGlmIChfX2d0aHJlYWRfYWN0aXZlX3AgKCkpCiAg
ICByZXR1cm4gX19ndGhyd19wdGhyZWFkX211dGV4X3RyeWxvY2sgKF9fbXV0ZXgpOwogIGVsc2UK
ICAgIHJldHVybiAwOwp9CgoKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFkX211dGV4X3RpbWVk
bG9jayAoX19ndGhyZWFkX211dGV4X3QgKl9fbXV0ZXgsCiAgICAgIGNvbnN0IF9fZ3RocmVhZF90
aW1lX3QgKl9fYWJzX3RpbWVvdXQpCnsKICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wICgpKQogICAg
cmV0dXJuIF9fZ3RocndfcHRocmVhZF9tdXRleF90aW1lZGxvY2sgKF9fbXV0ZXgsIF9fYWJzX3Rp
bWVvdXQpOwogIGVsc2UKICAgIHJldHVybiAwOwp9CgoKc3RhdGljIGlubGluZSBpbnQKX19ndGhy
ZWFkX211dGV4X3VubG9jayAoX19ndGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpCnsKICBpZiAoX19n
dGhyZWFkX2FjdGl2ZV9wICgpKQogICAgcmV0dXJuIF9fZ3RocndfcHRocmVhZF9tdXRleF91bmxv
Y2sgKF9fbXV0ZXgpOwogIGVsc2UKICAgIHJldHVybiAwOwp9CiMgODA3ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9iaXRzL2d0aHItZGVmYXVsdC5oIiAzCnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3Ro
cmVhZF9yZWN1cnNpdmVfbXV0ZXhfbG9jayAoX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF90ICpf
X211dGV4KQp7CiAgcmV0dXJuIF9fZ3RocmVhZF9tdXRleF9sb2NrIChfX211dGV4KTsKfQoKc3Rh
dGljIGlubGluZSBpbnQKX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF90cnlsb2NrIChfX2d0aHJl
YWRfcmVjdXJzaXZlX211dGV4X3QgKl9fbXV0ZXgpCnsKICByZXR1cm4gX19ndGhyZWFkX211dGV4
X3RyeWxvY2sgKF9fbXV0ZXgpOwp9CgoKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFkX3JlY3Vy
c2l2ZV9tdXRleF90aW1lZGxvY2sgKF9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfdCAqX19tdXRl
eCwKICAgICAgICAgY29uc3QgX19ndGhyZWFkX3RpbWVfdCAqX19hYnNfdGltZW91dCkKewogIHJl
dHVybiBfX2d0aHJlYWRfbXV0ZXhfdGltZWRsb2NrIChfX211dGV4LCBfX2Fic190aW1lb3V0KTsK
fQoKCnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfdW5sb2NrIChf
X2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X3QgKl9fbXV0ZXgpCnsKICByZXR1cm4gX19ndGhyZWFk
X211dGV4X3VubG9jayAoX19tdXRleCk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9y
ZWN1cnNpdmVfbXV0ZXhfZGVzdHJveSAoX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF90ICpfX211
dGV4KQp7CiAgcmV0dXJuIF9fZ3RocmVhZF9tdXRleF9kZXN0cm95IChfX211dGV4KTsKfQojIDg0
OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvYml0cy9ndGhyLWRlZmF1bHQuaCIgMwpzdGF0aWMg
aW5saW5lIGludApfX2d0aHJlYWRfY29uZF9icm9hZGNhc3QgKF9fZ3RocmVhZF9jb25kX3QgKl9f
Y29uZCkKewogIHJldHVybiBfX2d0aHJ3X3B0aHJlYWRfY29uZF9icm9hZGNhc3QgKF9fY29uZCk7
Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9jb25kX3NpZ25hbCAoX19ndGhyZWFkX2Nv
bmRfdCAqX19jb25kKQp7CiAgcmV0dXJuIF9fZ3RocndfcHRocmVhZF9jb25kX3NpZ25hbCAoX19j
b25kKTsKfQoKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFkX2NvbmRfd2FpdCAoX19ndGhyZWFk
X2NvbmRfdCAqX19jb25kLCBfX2d0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkKewogIHJldHVybiBf
X2d0aHJ3X3B0aHJlYWRfY29uZF93YWl0IChfX2NvbmQsIF9fbXV0ZXgpOwp9CgpzdGF0aWMgaW5s
aW5lIGludApfX2d0aHJlYWRfY29uZF90aW1lZHdhaXQgKF9fZ3RocmVhZF9jb25kX3QgKl9fY29u
ZCwgX19ndGhyZWFkX211dGV4X3QgKl9fbXV0ZXgsCiAgICAgY29uc3QgX19ndGhyZWFkX3RpbWVf
dCAqX19hYnNfdGltZW91dCkKewogIHJldHVybiBfX2d0aHJ3X3B0aHJlYWRfY29uZF90aW1lZHdh
aXQgKF9fY29uZCwgX19tdXRleCwgX19hYnNfdGltZW91dCk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50
Cl9fZ3RocmVhZF9jb25kX3dhaXRfcmVjdXJzaXZlIChfX2d0aHJlYWRfY29uZF90ICpfX2NvbmQs
CiAgICAgICAgICBfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X3QgKl9fbXV0ZXgpCnsKICByZXR1
cm4gX19ndGhyZWFkX2NvbmRfd2FpdCAoX19jb25kLCBfX211dGV4KTsKfQoKc3RhdGljIGlubGlu
ZSBpbnQKX19ndGhyZWFkX2NvbmRfZGVzdHJveSAoX19ndGhyZWFkX2NvbmRfdCogX19jb25kKQp7
CiAgcmV0dXJuIF9fZ3RocndfcHRocmVhZF9jb25kX2Rlc3Ryb3kgKF9fY29uZCk7Cn0KIyAxNDkg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvZ3Roci5oIiAyIDMKCgojcHJhZ21hIEdDQyB2
aXNpYmlsaXR5IHBvcAojIDM2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2V4dC9hdG9taWNpdHkuaCIgMiAzCiMgMSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvYml0cy9hdG9taWNfd29yZC5oIiAxIDMKIyAzMCAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvYml0cy9hdG9taWNfd29yZC5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfQVRPTUlDX1dP
UkRfSCAxCgp0eXBlZGVmIGludCBfQXRvbWljX3dvcmQ7CiMgMzcgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvZXh0L2F0b21pY2l0eS5oIiAy
IDMKCm5hbWVzcGFjZSBfX2dudV9jeHggX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgi
ZGVmYXVsdCIpKSkKewoKCgoKCgoKICBzdGF0aWMgaW5saW5lIF9BdG9taWNfd29yZAogIF9fZXhj
aGFuZ2VfYW5kX2FkZCh2b2xhdGlsZSBfQXRvbWljX3dvcmQqIF9fbWVtLCBpbnQgX192YWwpCiAg
eyByZXR1cm4gX19hdG9taWNfZmV0Y2hfYWRkKF9fbWVtLCBfX3ZhbCwgNCk7IH0KCiAgc3RhdGlj
IGlubGluZSB2b2lkCiAgX19hdG9taWNfYWRkKHZvbGF0aWxlIF9BdG9taWNfd29yZCogX19tZW0s
IGludCBfX3ZhbCkKICB7IF9fYXRvbWljX2ZldGNoX2FkZChfX21lbSwgX192YWwsIDQpOyB9CiMg
NjQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvZXh0L2F0b21pY2l0eS5oIiAzCiAgc3RhdGljIGlubGluZSBfQXRvbWljX3dvcmQKICBfX2V4
Y2hhbmdlX2FuZF9hZGRfc2luZ2xlKF9BdG9taWNfd29yZCogX19tZW0sIGludCBfX3ZhbCkKICB7
CiAgICBfQXRvbWljX3dvcmQgX19yZXN1bHQgPSAqX19tZW07CiAgICAqX19tZW0gKz0gX192YWw7
CiAgICByZXR1cm4gX19yZXN1bHQ7CiAgfQoKICBzdGF0aWMgaW5saW5lIHZvaWQKICBfX2F0b21p
Y19hZGRfc2luZ2xlKF9BdG9taWNfd29yZCogX19tZW0sIGludCBfX3ZhbCkKICB7ICpfX21lbSAr
PSBfX3ZhbDsgfQoKICBzdGF0aWMgaW5saW5lIF9BdG9taWNfd29yZAogIF9fYXR0cmlidXRlX18g
KChfX3VudXNlZF9fKSkKICBfX2V4Y2hhbmdlX2FuZF9hZGRfZGlzcGF0Y2goX0F0b21pY193b3Jk
KiBfX21lbSwgaW50IF9fdmFsKQogIHsKCiAgICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wKCkpCiAg
ICAgIHJldHVybiBfX2V4Y2hhbmdlX2FuZF9hZGQoX19tZW0sIF9fdmFsKTsKICAgIGVsc2UKICAg
ICAgcmV0dXJuIF9fZXhjaGFuZ2VfYW5kX2FkZF9zaW5nbGUoX19tZW0sIF9fdmFsKTsKCgoKICB9
CgogIHN0YXRpYyBpbmxpbmUgdm9pZAogIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSkKICBf
X2F0b21pY19hZGRfZGlzcGF0Y2goX0F0b21pY193b3JkKiBfX21lbSwgaW50IF9fdmFsKQogIHsK
CiAgICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wKCkpCiAgICAgIF9fYXRvbWljX2FkZChfX21lbSwg
X192YWwpOwogICAgZWxzZQogICAgICBfX2F0b21pY19hZGRfc2luZ2xlKF9fbWVtLCBfX3ZhbCk7
CgoKCiAgfQoKCn0KCgoKCgojZGVmaW5lIF9HTElCQ1hYX1JFQURfTUVNX0JBUlJJRVIgX19hc20g
X192b2xhdGlsZSAoIiI6OjoibWVtb3J5IikKCgojZGVmaW5lIF9HTElCQ1hYX1dSSVRFX01FTV9C
QVJSSUVSIF9fYXNtIF9fdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIpCiMgNzQgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvbWVtb3J5IiAyIDMK
IyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OS4zL2V4dC9jb25jdXJyZW5jZS5oIiAxIDMKIyAzMCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9leHQvY29uY3VycmVuY2UuaCIgMwojZGVm
aW5lIF9DT05DVVJSRU5DRV9IIDEKCiAgICAgICAKIyAzMyAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9leHQvY29uY3VycmVuY2UuaCIgMwoK
CgoKCgoKbmFtZXNwYWNlIF9fZ251X2N4eCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18g
KCJkZWZhdWx0IikpKQp7CgoKCgoKCgogIGVudW0gX0xvY2tfcG9saWN5IHsgX1Nfc2luZ2xlLCBf
U19tdXRleCwgX1NfYXRvbWljIH07CgoKCiAgc3RhdGljIGNvbnN0IF9Mb2NrX3BvbGljeSBfX2Rl
ZmF1bHRfbG9ja19wb2xpY3kgPQoKCgogIF9TX2F0b21pYzsKIyA2NyAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9leHQvY29uY3VycmVuY2Uu
aCIgMwogIGNsYXNzIF9fY29uY3VycmVuY2VfbG9ja19lcnJvciA6IHB1YmxpYyBzdGQ6OmV4Y2Vw
dGlvbgogIHsKICBwdWJsaWM6CiAgICB2aXJ0dWFsIGNoYXIgY29uc3QqCiAgICB3aGF0KCkgY29u
c3QgdGhyb3coKQogICAgeyByZXR1cm4gIl9fZ251X2N4eDo6X19jb25jdXJyZW5jZV9sb2NrX2Vy
cm9yIjsgfQogIH07CgogIGNsYXNzIF9fY29uY3VycmVuY2VfdW5sb2NrX2Vycm9yIDogcHVibGlj
IHN0ZDo6ZXhjZXB0aW9uCiAgewogIHB1YmxpYzoKICAgIHZpcnR1YWwgY2hhciBjb25zdCoKICAg
IHdoYXQoKSBjb25zdCB0aHJvdygpCiAgICB7IHJldHVybiAiX19nbnVfY3h4OjpfX2NvbmN1cnJl
bmNlX3VubG9ja19lcnJvciI7IH0KICB9OwoKICBjbGFzcyBfX2NvbmN1cnJlbmNlX2Jyb2FkY2Fz
dF9lcnJvciA6IHB1YmxpYyBzdGQ6OmV4Y2VwdGlvbgogIHsKICBwdWJsaWM6CiAgICB2aXJ0dWFs
IGNoYXIgY29uc3QqCiAgICB3aGF0KCkgY29uc3QgdGhyb3coKQogICAgeyByZXR1cm4gIl9fZ251
X2N4eDo6X19jb25jdXJyZW5jZV9icm9hZGNhc3RfZXJyb3IiOyB9CiAgfTsKCiAgY2xhc3MgX19j
b25jdXJyZW5jZV93YWl0X2Vycm9yIDogcHVibGljIHN0ZDo6ZXhjZXB0aW9uCiAgewogIHB1Ymxp
YzoKICAgIHZpcnR1YWwgY2hhciBjb25zdCoKICAgIHdoYXQoKSBjb25zdCB0aHJvdygpCiAgICB7
IHJldHVybiAiX19nbnVfY3h4OjpfX2NvbmN1cnJlbmNlX3dhaXRfZXJyb3IiOyB9CiAgfTsKCgog
IGlubGluZSB2b2lkCiAgX190aHJvd19jb25jdXJyZW5jZV9sb2NrX2Vycm9yKCkKICB7IChfX2J1
aWx0aW5fYWJvcnQoKSk7IH0KCiAgaW5saW5lIHZvaWQKICBfX3Rocm93X2NvbmN1cnJlbmNlX3Vu
bG9ja19lcnJvcigpCiAgeyAoX19idWlsdGluX2Fib3J0KCkpOyB9CgoKICBpbmxpbmUgdm9pZAog
IF9fdGhyb3dfY29uY3VycmVuY2VfYnJvYWRjYXN0X2Vycm9yKCkKICB7IChfX2J1aWx0aW5fYWJv
cnQoKSk7IH0KCiAgaW5saW5lIHZvaWQKICBfX3Rocm93X2NvbmN1cnJlbmNlX3dhaXRfZXJyb3Io
KQogIHsgKF9fYnVpbHRpbl9hYm9ydCgpKTsgfQoKCiAgY2xhc3MgX19tdXRleAogIHsKICBwcml2
YXRlOgoKICAgIF9fZ3RocmVhZF9tdXRleF90IF9NX211dGV4ID0geyB7IDAsIDAsIDAsIDAsIDAs
IHsgMCB9IH0gfTsKCgoKCiAgICBfX211dGV4KGNvbnN0IF9fbXV0ZXgmKTsKICAgIF9fbXV0ZXgm
IG9wZXJhdG9yPShjb25zdCBfX211dGV4Jik7CgogIHB1YmxpYzoKICAgIF9fbXV0ZXgoKQogICAg
ewoKCgoKICAgIH0KIyAxNDcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvZXh0L2NvbmN1cnJlbmNlLmgiIDMKICAgIHZvaWQgbG9jaygpCiAg
ICB7CgogICAgICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wKCkpCiB7CiAgIGlmIChfX2d0aHJlYWRf
bXV0ZXhfbG9jaygmX01fbXV0ZXgpICE9IDApCiAgICAgX190aHJvd19jb25jdXJyZW5jZV9sb2Nr
X2Vycm9yKCk7CiB9CgogICAgfQoKICAgIHZvaWQgdW5sb2NrKCkKICAgIHsKCiAgICAgIGlmIChf
X2d0aHJlYWRfYWN0aXZlX3AoKSkKIHsKICAgaWYgKF9fZ3RocmVhZF9tdXRleF91bmxvY2soJl9N
X211dGV4KSAhPSAwKQogICAgIF9fdGhyb3dfY29uY3VycmVuY2VfdW5sb2NrX2Vycm9yKCk7CiB9
CgogICAgfQoKICAgIF9fZ3RocmVhZF9tdXRleF90KiBndGhyZWFkX211dGV4KHZvaWQpCiAgICAg
IHsgcmV0dXJuICZfTV9tdXRleDsgfQogIH07CgogIGNsYXNzIF9fcmVjdXJzaXZlX211dGV4CiAg
ewogIHByaXZhdGU6CgogICAgX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF90IF9NX211dGV4ID0g
eyB7IDAsIDAsIDAsIFBUSFJFQURfTVVURVhfUkVDVVJTSVZFX05QLCAwLCB7IDAgfSB9IH07CgoK
CgogICAgX19yZWN1cnNpdmVfbXV0ZXgoY29uc3QgX19yZWN1cnNpdmVfbXV0ZXgmKTsKICAgIF9f
cmVjdXJzaXZlX211dGV4JiBvcGVyYXRvcj0oY29uc3QgX19yZWN1cnNpdmVfbXV0ZXgmKTsKCiAg
cHVibGljOgogICAgX19yZWN1cnNpdmVfbXV0ZXgoKQogICAgewoKCgoKICAgIH0KIyAyMDIgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvZXh0
L2NvbmN1cnJlbmNlLmgiIDMKICAgIHZvaWQgbG9jaygpCiAgICB7CgogICAgICBpZiAoX19ndGhy
ZWFkX2FjdGl2ZV9wKCkpCiB7CiAgIGlmIChfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X2xvY2so
Jl9NX211dGV4KSAhPSAwKQogICAgIF9fdGhyb3dfY29uY3VycmVuY2VfbG9ja19lcnJvcigpOwog
fQoKICAgIH0KCiAgICB2b2lkIHVubG9jaygpCiAgICB7CgogICAgICBpZiAoX19ndGhyZWFkX2Fj
dGl2ZV9wKCkpCiB7CiAgIGlmIChfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X3VubG9jaygmX01f
bXV0ZXgpICE9IDApCiAgICAgX190aHJvd19jb25jdXJyZW5jZV91bmxvY2tfZXJyb3IoKTsKIH0K
CiAgICB9CgogICAgX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF90KiBndGhyZWFkX3JlY3Vyc2l2
ZV9tdXRleCh2b2lkKQogICAgeyByZXR1cm4gJl9NX211dGV4OyB9CiAgfTsKCgoKCiAgY2xhc3Mg
X19zY29wZWRfbG9jawogIHsKICBwdWJsaWM6CiAgICB0eXBlZGVmIF9fbXV0ZXggX19tdXRleF90
eXBlOwoKICBwcml2YXRlOgogICAgX19tdXRleF90eXBlJiBfTV9kZXZpY2U7CgogICAgX19zY29w
ZWRfbG9jayhjb25zdCBfX3Njb3BlZF9sb2NrJik7CiAgICBfX3Njb3BlZF9sb2NrJiBvcGVyYXRv
cj0oY29uc3QgX19zY29wZWRfbG9jayYpOwoKICBwdWJsaWM6CiAgICBleHBsaWNpdCBfX3Njb3Bl
ZF9sb2NrKF9fbXV0ZXhfdHlwZSYgX19uYW1lKSA6IF9NX2RldmljZShfX25hbWUpCiAgICB7IF9N
X2RldmljZS5sb2NrKCk7IH0KCiAgICB+X19zY29wZWRfbG9jaygpIHRocm93KCkKICAgIHsgX01f
ZGV2aWNlLnVubG9jaygpOyB9CiAgfTsKCgogIGNsYXNzIF9fY29uZAogIHsKICBwcml2YXRlOgoK
ICAgIF9fZ3RocmVhZF9jb25kX3QgX01fY29uZCA9IHsgeyAwLCAwLCAwLCAwLCAwLCAodm9pZCAq
KSAwLCAwLCAwIH0gfTsKCgoKCiAgICBfX2NvbmQoY29uc3QgX19jb25kJik7CiAgICBfX2NvbmQm
IG9wZXJhdG9yPShjb25zdCBfX2NvbmQmKTsKCiAgcHVibGljOgogICAgX19jb25kKCkKICAgIHsK
CgoKCiAgICB9CiMgMjgwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2V4dC9jb25jdXJyZW5jZS5oIiAzCiAgICB2b2lkIGJyb2FkY2FzdCgp
CiAgICB7CgogICAgICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wKCkpCiB7CiAgIGlmIChfX2d0aHJl
YWRfY29uZF9icm9hZGNhc3QoJl9NX2NvbmQpICE9IDApCiAgICAgX190aHJvd19jb25jdXJyZW5j
ZV9icm9hZGNhc3RfZXJyb3IoKTsKIH0KCiAgICB9CgogICAgdm9pZCB3YWl0KF9fbXV0ZXggKm11
dGV4KQogICAgewoKICAgICAgewogICBpZiAoX19ndGhyZWFkX2NvbmRfd2FpdCgmX01fY29uZCwg
bXV0ZXgtPmd0aHJlYWRfbXV0ZXgoKSkgIT0gMCkKICAgICBfX3Rocm93X2NvbmN1cnJlbmNlX3dh
aXRfZXJyb3IoKTsKICAgICAgfQoKICAgIH0KCiAgICB2b2lkIHdhaXRfcmVjdXJzaXZlKF9fcmVj
dXJzaXZlX211dGV4ICptdXRleCkKICAgIHsKCiAgICAgIHsKICAgaWYgKF9fZ3RocmVhZF9jb25k
X3dhaXRfcmVjdXJzaXZlKCZfTV9jb25kLAogICAgICAgICBtdXRleC0+Z3RocmVhZF9yZWN1cnNp
dmVfbXV0ZXgoKSkKICAgICAgICE9IDApCiAgICAgX190aHJvd19jb25jdXJyZW5jZV93YWl0X2Vy
cm9yKCk7CiAgICAgIH0KCiAgICB9CiAgfTsKCgoKfQojIDc1ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL21lbW9yeSIgMiAzCgojIDEgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9zdGxfZnVuY3Rpb24uaCIgMSAzCiMgNTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfZnVuY3Rpb24uaCIgMwojZGVmaW5l
IF9TVExfRlVOQ1RJT05fSCAxCgoKCgoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192
aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgojIDEwNCAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9mdW5jdGlvbi5oIiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FyZywgdHlwZW5hbWUgX1Jlc3VsdD4KICAgIHN0cnVjdCB1
bmFyeV9mdW5jdGlvbgogICAgewoKICAgICAgdHlwZWRlZiBfQXJnIGFyZ3VtZW50X3R5cGU7CgoK
ICAgICAgdHlwZWRlZiBfUmVzdWx0IHJlc3VsdF90eXBlOwogICAgfTsKCgoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0FyZzEsIHR5cGVuYW1lIF9BcmcyLCB0eXBlbmFtZSBfUmVzdWx0PgogICAgc3Ry
dWN0IGJpbmFyeV9mdW5jdGlvbgogICAgewoKICAgICAgdHlwZWRlZiBfQXJnMSBmaXJzdF9hcmd1
bWVudF90eXBlOwoKCiAgICAgIHR5cGVkZWYgX0FyZzIgc2Vjb25kX2FyZ3VtZW50X3R5cGU7CgoK
ICAgICAgdHlwZWRlZiBfUmVzdWx0IHJlc3VsdF90eXBlOwogICAgfTsKIyAxNjYgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxf
ZnVuY3Rpb24uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBwbHVzIDog
cHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsIF9UcCwgX1RwPgogICAgewogICAgICBfVHAKICAg
ICAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0CiAgICAg
IHsgcmV0dXJuIF9feCArIF9feTsgfQogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICAgIHN0cnVjdCBtaW51cyA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBfVHAsIF9UcD4K
ICAgIHsKICAgICAgX1RwCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9U
cCYgX195KSBjb25zdAogICAgICB7IHJldHVybiBfX3ggLSBfX3k7IH0KICAgIH07CgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgbXVsdGlwbGllcyA6IHB1YmxpYyBiaW5hcnlf
ZnVuY3Rpb248X1RwLCBfVHAsIF9UcD4KICAgIHsKICAgICAgX1RwCiAgICAgIG9wZXJhdG9yKCko
Y29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdAogICAgICB7IHJldHVybiBfX3gg
KiBfX3k7IH0KICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgZGl2
aWRlcyA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBfVHAsIF9UcD4KICAgIHsKICAgICAg
X1RwCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25z
dAogICAgICB7IHJldHVybiBfX3ggLyBfX3k7IH0KICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+CiAgICBzdHJ1Y3QgbW9kdWx1cyA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBf
VHAsIF9UcD4KICAgIHsKICAgICAgX1RwCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gs
IGNvbnN0IF9UcCYgX195KSBjb25zdAogICAgICB7IHJldHVybiBfX3ggJSBfX3k7IH0KICAgIH07
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgbmVnYXRlIDogcHVibGljIHVu
YXJ5X2Z1bmN0aW9uPF9UcCwgX1RwPgogICAgewogICAgICBfVHAKICAgICAgb3BlcmF0b3IoKShj
b25zdCBfVHAmIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gLV9feDsgfQogICAgfTsKIyAzMzkg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
Yml0cy9zdGxfZnVuY3Rpb24uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVj
dCBlcXVhbF90byA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBfVHAsIGJvb2w+CiAgICB7
CiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBf
X3kpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9feCA9PSBfX3k7IH0KICAgIH07CgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3Qgbm90X2VxdWFsX3RvIDogcHVibGljIGJpbmFyeV9m
dW5jdGlvbjxfVHAsIF9UcCwgYm9vbD4KICAgIHsKICAgICAgYm9vbAogICAgICBvcGVyYXRvcigp
KGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QKICAgICAgeyByZXR1cm4gX194
ICE9IF9feTsgfQogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBn
cmVhdGVyIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsIF9UcCwgYm9vbD4KICAgIHsKICAg
ICAgYm9vbAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkg
Y29uc3QKICAgICAgeyByZXR1cm4gX194ID4gX195OyB9CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPgogICAgc3RydWN0IGxlc3MgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwg
X1RwLCBib29sPgogICAgewogICAgICBib29sCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBf
X3gsIGNvbnN0IF9UcCYgX195KSBjb25zdAogICAgICB7IHJldHVybiBfX3ggPCBfX3k7IH0KICAg
IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbCA6
IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBfVHAsIGJvb2w+CiAgICB7CiAgICAgIGJvb2wK
ICAgICAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0CiAg
ICAgIHsgcmV0dXJuIF9feCA+PSBfX3k7IH0KICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+CiAgICBzdHJ1Y3QgbGVzc19lcXVhbCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBf
VHAsIGJvb2w+CiAgICB7CiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9f
eCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9feCA8PSBfX3k7IH0KICAg
IH07CiMgNTAwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICBzdHJ1Y3QgbG9naWNhbF9hbmQgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwgX1Rw
LCBib29sPgogICAgewogICAgICBib29sCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gs
IGNvbnN0IF9UcCYgX195KSBjb25zdAogICAgICB7IHJldHVybiBfX3ggJiYgX195OyB9CiAgICB9
OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGxvZ2ljYWxfb3IgOiBwdWJs
aWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwgX1RwLCBib29sPgogICAgewogICAgICBib29sCiAgICAg
IG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdAogICAgICB7
IHJldHVybiBfX3ggfHwgX195OyB9CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgc3RydWN0IGxvZ2ljYWxfbm90IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCwgYm9vbD4K
ICAgIHsKICAgICAgYm9vbAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194KSBjb25zdAog
ICAgICB7IHJldHVybiAhX194OyB9CiAgICB9OwojIDU4NyAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9mdW5jdGlvbi5oIiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGJpdF9hbmQgOiBwdWJsaWMgYmlu
YXJ5X2Z1bmN0aW9uPF9UcCwgX1RwLCBfVHA+CiAgICB7CiAgICAgIF9UcAogICAgICBvcGVyYXRv
cigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QKICAgICAgeyByZXR1cm4g
X194ICYgX195OyB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3Qg
Yml0X29yIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsIF9UcCwgX1RwPgogICAgewogICAg
ICBfVHAKICAgICAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNv
bnN0CiAgICAgIHsgcmV0dXJuIF9feCB8IF9feTsgfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgc3RydWN0IGJpdF94b3IgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwg
X1RwLCBfVHA+CiAgICB7CiAgICAgIF9UcAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194
LCBjb25zdCBfVHAmIF9feSkgY29uc3QKICAgICAgeyByZXR1cm4gX194IF4gX195OyB9CiAgICB9
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgYml0X25vdCA6IHB1YmxpYyB1
bmFyeV9mdW5jdGlvbjxfVHAsIF9UcD4KICAgIHsKICAgICAgX1RwCiAgICAgIG9wZXJhdG9yKCko
Y29uc3QgX1RwJiBfX3gpIGNvbnN0CiAgICAgIHsgcmV0dXJuIH5fX3g7IH0KICAgIH07CiMgNzAz
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUHJlZGljYXRlPgog
ICAgY2xhc3MgdW5hcnlfbmVnYXRlCiAgICA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjx0eXBlbmFt
ZSBfUHJlZGljYXRlOjphcmd1bWVudF90eXBlLCBib29sPgogICAgewogICAgcHJvdGVjdGVkOgog
ICAgICBfUHJlZGljYXRlIF9NX3ByZWQ7CgogICAgcHVibGljOgogICAgICBleHBsaWNpdAogICAg
ICB1bmFyeV9uZWdhdGUoY29uc3QgX1ByZWRpY2F0ZSYgX194KSA6IF9NX3ByZWQoX194KSB7IH0K
CiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3IoKShjb25zdCB0eXBlbmFtZSBfUHJlZGljYXRlOjph
cmd1bWVudF90eXBlJiBfX3gpIGNvbnN0CiAgICAgIHsgcmV0dXJuICFfTV9wcmVkKF9feCk7IH0K
ICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgaW5saW5lIHVuYXJ5
X25lZ2F0ZTxfUHJlZGljYXRlPgogICAgbm90MShjb25zdCBfUHJlZGljYXRlJiBfX3ByZWQpCiAg
ICB7IHJldHVybiB1bmFyeV9uZWdhdGU8X1ByZWRpY2F0ZT4oX19wcmVkKTsgfQoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIGNsYXNzIGJpbmFyeV9uZWdhdGUKICAgIDogcHVi
bGljIGJpbmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBfUHJlZGljYXRlOjpmaXJzdF9hcmd1bWVudF90
eXBlLAogICAgICAgIHR5cGVuYW1lIF9QcmVkaWNhdGU6OnNlY29uZF9hcmd1bWVudF90eXBlLCBi
b29sPgogICAgewogICAgcHJvdGVjdGVkOgogICAgICBfUHJlZGljYXRlIF9NX3ByZWQ7CgogICAg
cHVibGljOgogICAgICBleHBsaWNpdAogICAgICBiaW5hcnlfbmVnYXRlKGNvbnN0IF9QcmVkaWNh
dGUmIF9feCkgOiBfTV9wcmVkKF9feCkgeyB9CgogICAgICBib29sCiAgICAgIG9wZXJhdG9yKCko
Y29uc3QgdHlwZW5hbWUgX1ByZWRpY2F0ZTo6Zmlyc3RfYXJndW1lbnRfdHlwZSYgX194LAogICBj
b25zdCB0eXBlbmFtZSBfUHJlZGljYXRlOjpzZWNvbmRfYXJndW1lbnRfdHlwZSYgX195KSBjb25z
dAogICAgICB7IHJldHVybiAhX01fcHJlZChfX3gsIF9feSk7IH0KICAgIH07CgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgaW5saW5lIGJpbmFyeV9uZWdhdGU8X1ByZWRpY2F0
ZT4KICAgIG5vdDIoY29uc3QgX1ByZWRpY2F0ZSYgX19wcmVkKQogICAgeyByZXR1cm4gYmluYXJ5
X25lZ2F0ZTxfUHJlZGljYXRlPihfX3ByZWQpOyB9CiMgNzc0ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2Z1bmN0aW9uLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQXJnLCB0eXBlbmFtZSBfUmVzdWx0PgogICAgY2xhc3Mg
cG9pbnRlcl90b191bmFyeV9mdW5jdGlvbiA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfQXJnLCBf
UmVzdWx0PgogICAgewogICAgcHJvdGVjdGVkOgogICAgICBfUmVzdWx0ICgqX01fcHRyKShfQXJn
KTsKCiAgICBwdWJsaWM6CiAgICAgIHBvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb24oKSB7IH0KCiAg
ICAgIGV4cGxpY2l0CiAgICAgIHBvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb24oX1Jlc3VsdCAoKl9f
eCkoX0FyZykpCiAgICAgIDogX01fcHRyKF9feCkgeyB9CgogICAgICBfUmVzdWx0CiAgICAgIG9w
ZXJhdG9yKCkoX0FyZyBfX3gpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3B0cihfX3gpOyB9CiAg
ICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FyZywgdHlwZW5hbWUgX1Jlc3VsdD4KICAgIGlu
bGluZSBwb2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uPF9BcmcsIF9SZXN1bHQ+CiAgICBwdHJfZnVu
KF9SZXN1bHQgKCpfX3gpKF9BcmcpKQogICAgeyByZXR1cm4gcG9pbnRlcl90b191bmFyeV9mdW5j
dGlvbjxfQXJnLCBfUmVzdWx0PihfX3gpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQXJnMSwg
dHlwZW5hbWUgX0FyZzIsIHR5cGVuYW1lIF9SZXN1bHQ+CiAgICBjbGFzcyBwb2ludGVyX3RvX2Jp
bmFyeV9mdW5jdGlvbgogICAgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9BcmcxLCBfQXJnMiwg
X1Jlc3VsdD4KICAgIHsKICAgIHByb3RlY3RlZDoKICAgICAgX1Jlc3VsdCAoKl9NX3B0cikoX0Fy
ZzEsIF9BcmcyKTsKCiAgICBwdWJsaWM6CiAgICAgIHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9u
KCkgeyB9CgogICAgICBleHBsaWNpdAogICAgICBwb2ludGVyX3RvX2JpbmFyeV9mdW5jdGlvbihf
UmVzdWx0ICgqX194KShfQXJnMSwgX0FyZzIpKQogICAgICA6IF9NX3B0cihfX3gpIHsgfQoKICAg
ICAgX1Jlc3VsdAogICAgICBvcGVyYXRvcigpKF9BcmcxIF9feCwgX0FyZzIgX195KSBjb25zdAog
ICAgICB7IHJldHVybiBfTV9wdHIoX194LCBfX3kpOyB9CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0FyZzEsIHR5cGVuYW1lIF9BcmcyLCB0eXBlbmFtZSBfUmVzdWx0PgogICAgaW5saW5l
IHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uPF9BcmcxLCBfQXJnMiwgX1Jlc3VsdD4KICAgIHB0
cl9mdW4oX1Jlc3VsdCAoKl9feCkoX0FyZzEsIF9BcmcyKSkKICAgIHsgcmV0dXJuIHBvaW50ZXJf
dG9fYmluYXJ5X2Z1bmN0aW9uPF9BcmcxLCBfQXJnMiwgX1Jlc3VsdD4oX194KTsgfQoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9JZGVudGl0eQogICAgOiBwdWJsaWMgdW5h
cnlfZnVuY3Rpb248X1RwLF9UcD4KICAgIHsKICAgICAgX1RwJgogICAgICBvcGVyYXRvcigpKF9U
cCYgX194KSBjb25zdAogICAgICB7IHJldHVybiBfX3g7IH0KCiAgICAgIGNvbnN0IF9UcCYKICAg
ICAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gX194OyB9
CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUGFpcj4KICAgIHN0cnVjdCBfU2VsZWN0MXN0
CiAgICA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfUGFpciwgdHlwZW5hbWUgX1BhaXI6OmZpcnN0
X3R5cGU+CiAgICB7CiAgICAgIHR5cGVuYW1lIF9QYWlyOjpmaXJzdF90eXBlJgogICAgICBvcGVy
YXRvcigpKF9QYWlyJiBfX3gpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9feC5maXJzdDsgfQoKICAg
ICAgY29uc3QgdHlwZW5hbWUgX1BhaXI6OmZpcnN0X3R5cGUmCiAgICAgIG9wZXJhdG9yKCkoY29u
c3QgX1BhaXImIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gX194LmZpcnN0OyB9CgoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1BhaXIyPgogICAgICAgIHR5cGVuYW1lIF9QYWlyMjo6Zmlyc3Rf
dHlwZSYKICAgICAgICBvcGVyYXRvcigpKF9QYWlyMiYgX194KSBjb25zdAogICAgICAgIHsgcmV0
dXJuIF9feC5maXJzdDsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1BhaXIyPgogICAgICAg
IGNvbnN0IHR5cGVuYW1lIF9QYWlyMjo6Zmlyc3RfdHlwZSYKICAgICAgICBvcGVyYXRvcigpKGNv
bnN0IF9QYWlyMiYgX194KSBjb25zdAogICAgICAgIHsgcmV0dXJuIF9feC5maXJzdDsgfQoKICAg
IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9QYWlyPgogICAgc3RydWN0IF9TZWxlY3QybmQKICAg
IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9QYWlyLCB0eXBlbmFtZSBfUGFpcjo6c2Vjb25kX3R5
cGU+CiAgICB7CiAgICAgIHR5cGVuYW1lIF9QYWlyOjpzZWNvbmRfdHlwZSYKICAgICAgb3BlcmF0
b3IoKShfUGFpciYgX194KSBjb25zdAogICAgICB7IHJldHVybiBfX3guc2Vjb25kOyB9CgogICAg
ICBjb25zdCB0eXBlbmFtZSBfUGFpcjo6c2Vjb25kX3R5cGUmCiAgICAgIG9wZXJhdG9yKCkoY29u
c3QgX1BhaXImIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gX194LnNlY29uZDsgfQogICAgfTsK
IyA4OTQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvYml0cy9zdGxfZnVuY3Rpb24uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXQsIHR5
cGVuYW1lIF9UcD4KICAgIGNsYXNzIG1lbV9mdW5fdCA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxf
VHAqLCBfUmV0PgogICAgewogICAgcHVibGljOgogICAgICBleHBsaWNpdAogICAgICBtZW1fZnVu
X3QoX1JldCAoX1RwOjoqX19wZikoKSkKICAgICAgOiBfTV9mKF9fcGYpIHsgfQoKICAgICAgX1Jl
dAogICAgICBvcGVyYXRvcigpKF9UcCogX19wKSBjb25zdAogICAgICB7IHJldHVybiAoX19wLT4q
X01fZikoKTsgfQoKICAgIHByaXZhdGU6CiAgICAgIF9SZXQgKF9UcDo6Kl9NX2YpKCk7CiAgICB9
OwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXQsIHR5cGVuYW1lIF9UcD4KICAgIGNsYXNzIGNv
bnN0X21lbV9mdW5fdCA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxjb25zdCBfVHAqLCBfUmV0Pgog
ICAgewogICAgcHVibGljOgogICAgICBleHBsaWNpdAogICAgICBjb25zdF9tZW1fZnVuX3QoX1Jl
dCAoX1RwOjoqX19wZikoKSBjb25zdCkKICAgICAgOiBfTV9mKF9fcGYpIHsgfQoKICAgICAgX1Jl
dAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCogX19wKSBjb25zdAogICAgICB7IHJldHVybiAo
X19wLT4qX01fZikoKTsgfQoKICAgIHByaXZhdGU6CiAgICAgIF9SZXQgKF9UcDo6Kl9NX2YpKCkg
Y29uc3Q7CiAgICB9OwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXQsIHR5cGVuYW1lIF9UcD4K
ICAgIGNsYXNzIG1lbV9mdW5fcmVmX3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwLCBfUmV0
PgogICAgewogICAgcHVibGljOgogICAgICBleHBsaWNpdAogICAgICBtZW1fZnVuX3JlZl90KF9S
ZXQgKF9UcDo6Kl9fcGYpKCkpCiAgICAgIDogX01fZihfX3BmKSB7IH0KCiAgICAgIF9SZXQKICAg
ICAgb3BlcmF0b3IoKShfVHAmIF9fcikgY29uc3QKICAgICAgeyByZXR1cm4gKF9fci4qX01fZiko
KTsgfQoKICAgIHByaXZhdGU6CiAgICAgIF9SZXQgKF9UcDo6Kl9NX2YpKCk7CiAgfTsKCgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBfVHA+CiAgICBjbGFzcyBjb25zdF9tZW1f
ZnVuX3JlZl90IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCwgX1JldD4KICAgIHsKICAgIHB1
YmxpYzoKICAgICAgZXhwbGljaXQKICAgICAgY29uc3RfbWVtX2Z1bl9yZWZfdChfUmV0IChfVHA6
OipfX3BmKSgpIGNvbnN0KQogICAgICA6IF9NX2YoX19wZikgeyB9CgogICAgICBfUmV0CiAgICAg
IG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3IpIGNvbnN0CiAgICAgIHsgcmV0dXJuIChfX3IuKl9N
X2YpKCk7IH0KCiAgICBwcml2YXRlOgogICAgICBfUmV0IChfVHA6OipfTV9mKSgpIGNvbnN0Owog
ICAgfTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1l
IF9Bcmc+CiAgICBjbGFzcyBtZW1fZnVuMV90IDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAq
LCBfQXJnLCBfUmV0PgogICAgewogICAgcHVibGljOgogICAgICBleHBsaWNpdAogICAgICBtZW1f
ZnVuMV90KF9SZXQgKF9UcDo6Kl9fcGYpKF9BcmcpKQogICAgICA6IF9NX2YoX19wZikgeyB9Cgog
ICAgICBfUmV0CiAgICAgIG9wZXJhdG9yKCkoX1RwKiBfX3AsIF9BcmcgX194KSBjb25zdAogICAg
ICB7IHJldHVybiAoX19wLT4qX01fZikoX194KTsgfQoKICAgIHByaXZhdGU6CiAgICAgIF9SZXQg
KF9UcDo6Kl9NX2YpKF9BcmcpOwogICAgfTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0
eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Bcmc+CiAgICBjbGFzcyBjb25zdF9tZW1fZnVuMV90IDog
cHVibGljIGJpbmFyeV9mdW5jdGlvbjxjb25zdCBfVHAqLCBfQXJnLCBfUmV0PgogICAgewogICAg
cHVibGljOgogICAgICBleHBsaWNpdAogICAgICBjb25zdF9tZW1fZnVuMV90KF9SZXQgKF9UcDo6
Kl9fcGYpKF9BcmcpIGNvbnN0KQogICAgICA6IF9NX2YoX19wZikgeyB9CgogICAgICBfUmV0CiAg
ICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwKiBfX3AsIF9BcmcgX194KSBjb25zdAogICAgICB7IHJl
dHVybiAoX19wLT4qX01fZikoX194KTsgfQoKICAgIHByaXZhdGU6CiAgICAgIF9SZXQgKF9UcDo6
Kl9NX2YpKF9BcmcpIGNvbnN0OwogICAgfTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0
eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Bcmc+CiAgICBjbGFzcyBtZW1fZnVuMV9yZWZfdCA6IHB1
YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBfQXJnLCBfUmV0PgogICAgewogICAgcHVibGljOgog
ICAgICBleHBsaWNpdAogICAgICBtZW1fZnVuMV9yZWZfdChfUmV0IChfVHA6OipfX3BmKShfQXJn
KSkKICAgICAgOiBfTV9mKF9fcGYpIHsgfQoKICAgICAgX1JldAogICAgICBvcGVyYXRvcigpKF9U
cCYgX19yLCBfQXJnIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gKF9fci4qX01fZikoX194KTsg
fQoKICAgIHByaXZhdGU6CiAgICAgIF9SZXQgKF9UcDo6Kl9NX2YpKF9BcmcpOwogICAgfTsKCgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Bcmc+CiAg
ICBjbGFzcyBjb25zdF9tZW1fZnVuMV9yZWZfdCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1Rw
LCBfQXJnLCBfUmV0PgogICAgewogICAgcHVibGljOgogICAgICBleHBsaWNpdAogICAgICBjb25z
dF9tZW1fZnVuMV9yZWZfdChfUmV0IChfVHA6OipfX3BmKShfQXJnKSBjb25zdCkKICAgICAgOiBf
TV9mKF9fcGYpIHsgfQoKICAgICAgX1JldAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX19y
LCBfQXJnIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gKF9fci4qX01fZikoX194KTsgfQoKICAg
IHByaXZhdGU6CiAgICAgIF9SZXQgKF9UcDo6Kl9NX2YpKF9BcmcpIGNvbnN0OwogICAgfTsKCgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgbWVtX2Z1
bl90PF9SZXQsIF9UcD4KICAgIG1lbV9mdW4oX1JldCAoX1RwOjoqX19mKSgpKQogICAgeyByZXR1
cm4gbWVtX2Z1bl90PF9SZXQsIF9UcD4oX19mKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0
LCB0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgY29uc3RfbWVtX2Z1bl90PF9SZXQsIF9UcD4KICAg
IG1lbV9mdW4oX1JldCAoX1RwOjoqX19mKSgpIGNvbnN0KQogICAgeyByZXR1cm4gY29uc3RfbWVt
X2Z1bl90PF9SZXQsIF9UcD4oX19mKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBl
bmFtZSBfVHA+CiAgICBpbmxpbmUgbWVtX2Z1bl9yZWZfdDxfUmV0LCBfVHA+CiAgICBtZW1fZnVu
X3JlZihfUmV0IChfVHA6OipfX2YpKCkpCiAgICB7IHJldHVybiBtZW1fZnVuX3JlZl90PF9SZXQs
IF9UcD4oX19mKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBfVHA+CiAg
ICBpbmxpbmUgY29uc3RfbWVtX2Z1bl9yZWZfdDxfUmV0LCBfVHA+CiAgICBtZW1fZnVuX3JlZihf
UmV0IChfVHA6OipfX2YpKCkgY29uc3QpCiAgICB7IHJldHVybiBjb25zdF9tZW1fZnVuX3JlZl90
PF9SZXQsIF9UcD4oX19mKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBf
VHAsIHR5cGVuYW1lIF9Bcmc+CiAgICBpbmxpbmUgbWVtX2Z1bjFfdDxfUmV0LCBfVHAsIF9Bcmc+
CiAgICBtZW1fZnVuKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykpCiAgICB7IHJldHVybiBtZW1fZnVu
MV90PF9SZXQsIF9UcCwgX0FyZz4oX19mKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0
eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Bcmc+CiAgICBpbmxpbmUgY29uc3RfbWVtX2Z1bjFfdDxf
UmV0LCBfVHAsIF9Bcmc+CiAgICBtZW1fZnVuKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykgY29uc3Qp
CiAgICB7IHJldHVybiBjb25zdF9tZW1fZnVuMV90PF9SZXQsIF9UcCwgX0FyZz4oX19mKTsgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Bcmc+CiAg
ICBpbmxpbmUgbWVtX2Z1bjFfcmVmX3Q8X1JldCwgX1RwLCBfQXJnPgogICAgbWVtX2Z1bl9yZWYo
X1JldCAoX1RwOjoqX19mKShfQXJnKSkKICAgIHsgcmV0dXJuIG1lbV9mdW4xX3JlZl90PF9SZXQs
IF9UcCwgX0FyZz4oX19mKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBf
VHAsIHR5cGVuYW1lIF9Bcmc+CiAgICBpbmxpbmUgY29uc3RfbWVtX2Z1bjFfcmVmX3Q8X1JldCwg
X1RwLCBfQXJnPgogICAgbWVtX2Z1bl9yZWYoX1JldCAoX1RwOjoqX19mKShfQXJnKSBjb25zdCkK
ICAgIHsgcmV0dXJuIGNvbnN0X21lbV9mdW4xX3JlZl90PF9SZXQsIF9UcCwgX0FyZz4oX19mKTsg
fQoKCgoKfQoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9iYWNrd2FyZC9iaW5kZXJzLmgiIDEgMwojIDU3ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JhY2t3YXJkL2JpbmRl
cnMuaCIgMwojZGVmaW5lIF9CQUNLV0FSRF9CSU5ERVJTX0ggMQoKbmFtZXNwYWNlIHN0ZCBfX2F0
dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgojIDEwMyAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iYWNrd2Fy
ZC9iaW5kZXJzLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfT3BlcmF0aW9uPgogICAgY2xhc3Mg
YmluZGVyMXN0CiAgICA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBfT3BlcmF0aW9u
OjpzZWNvbmRfYXJndW1lbnRfdHlwZSwKICAgICAgIHR5cGVuYW1lIF9PcGVyYXRpb246OnJlc3Vs
dF90eXBlPgogICAgewogICAgcHJvdGVjdGVkOgogICAgICBfT3BlcmF0aW9uIG9wOwogICAgICB0
eXBlbmFtZSBfT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlIHZhbHVlOwoKICAgIHB1Ymxp
YzoKICAgICAgYmluZGVyMXN0KGNvbnN0IF9PcGVyYXRpb24mIF9feCwKICBjb25zdCB0eXBlbmFt
ZSBfT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlJiBfX3kpCiAgICAgIDogb3AoX194KSwg
dmFsdWUoX195KSB7IH0KCiAgICAgIHR5cGVuYW1lIF9PcGVyYXRpb246OnJlc3VsdF90eXBlCiAg
ICAgIG9wZXJhdG9yKCkoY29uc3QgdHlwZW5hbWUgX09wZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50
X3R5cGUmIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gb3AodmFsdWUsIF9feCk7IH0KCgoKICAg
ICAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5cGUKICAgICAgb3BlcmF0b3IoKSh0eXBl
bmFtZSBfT3BlcmF0aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlwZSYgX194KSBjb25zdAogICAgICB7
IHJldHVybiBvcCh2YWx1ZSwgX194KTsgfQogICAgfSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNh
dGVkX18pKTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9PcGVyYXRpb24sIHR5cGVuYW1lIF9UcD4K
ICAgIGlubGluZSBiaW5kZXIxc3Q8X09wZXJhdGlvbj4KICAgIGJpbmQxc3QoY29uc3QgX09wZXJh
dGlvbiYgX19mbiwgY29uc3QgX1RwJiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
X09wZXJhdGlvbjo6Zmlyc3RfYXJndW1lbnRfdHlwZSBfQXJnMV90eXBlOwogICAgICByZXR1cm4g
YmluZGVyMXN0PF9PcGVyYXRpb24+KF9fZm4sIF9BcmcxX3R5cGUoX194KSk7CiAgICB9CgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfT3BlcmF0aW9uPgogICAgY2xhc3MgYmluZGVyMm5kCiAgICA6IHB1
YmxpYyB1bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBfT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90
eXBlLAogICAgICAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5cGU+CiAgICB7CiAgICBw
cm90ZWN0ZWQ6CiAgICAgIF9PcGVyYXRpb24gb3A7CiAgICAgIHR5cGVuYW1lIF9PcGVyYXRpb246
OnNlY29uZF9hcmd1bWVudF90eXBlIHZhbHVlOwoKICAgIHB1YmxpYzoKICAgICAgYmluZGVyMm5k
KGNvbnN0IF9PcGVyYXRpb24mIF9feCwKICBjb25zdCB0eXBlbmFtZSBfT3BlcmF0aW9uOjpzZWNv
bmRfYXJndW1lbnRfdHlwZSYgX195KQogICAgICA6IG9wKF9feCksIHZhbHVlKF9feSkgeyB9Cgog
ICAgICB0eXBlbmFtZSBfT3BlcmF0aW9uOjpyZXN1bHRfdHlwZQogICAgICBvcGVyYXRvcigpKGNv
bnN0IHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUmIF9feCkgY29uc3QK
ICAgICAgeyByZXR1cm4gb3AoX194LCB2YWx1ZSk7IH0KCgoKICAgICAgdHlwZW5hbWUgX09wZXJh
dGlvbjo6cmVzdWx0X3R5cGUKICAgICAgb3BlcmF0b3IoKSh0eXBlbmFtZSBfT3BlcmF0aW9uOjpm
aXJzdF9hcmd1bWVudF90eXBlJiBfX3gpIGNvbnN0CiAgICAgIHsgcmV0dXJuIG9wKF9feCwgdmFs
dWUpOyB9CiAgICB9IF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX09wZXJhdGlvbiwgdHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGJpbmRlcjJu
ZDxfT3BlcmF0aW9uPgogICAgYmluZDJuZChjb25zdCBfT3BlcmF0aW9uJiBfX2ZuLCBjb25zdCBf
VHAmIF9feCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfT3BlcmF0aW9uOjpzZWNvbmRf
YXJndW1lbnRfdHlwZSBfQXJnMl90eXBlOwogICAgICByZXR1cm4gYmluZGVyMm5kPF9PcGVyYXRp
b24+KF9fZm4sIF9BcmcyX3R5cGUoX194KSk7CiAgICB9CgoKCn0KIyAxMDg1ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2Z1
bmN0aW9uLmgiIDIgMwojIDc3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL21lbW9yeSIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3VzZXNfYWxsb2NhdG9yLmgi
IDEgMwojIDI2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2JpdHMvdXNlc19hbGxvY2F0b3IuaCIgMwojZGVmaW5lIF9VU0VTX0FMTE9DQVRP
Ul9IIDEKCgoKCgoKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9f
ICgiZGVmYXVsdCIpKSkKewoKCgogIHN0cnVjdCBhbGxvY2F0b3JfYXJnX3QgeyB9OwoKICBjb25z
dGV4cHIgYWxsb2NhdG9yX2FyZ190IGFsbG9jYXRvcl9hcmcgPSBhbGxvY2F0b3JfYXJnX3QoKTsK
CnRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gY2xhc3MgX19oYXNfYWxsb2NhdG9yX3R5cGVfaGVscGVy
IHsgdGVtcGxhdGU8dHlwZW5hbWUgX1VwPiBzdHJ1Y3QgX1dyYXBfdHlwZSB7IH07IHRlbXBsYXRl
PHR5cGVuYW1lIF9VcD4gc3RhdGljIHRydWVfdHlwZSBfX3Rlc3QoX1dyYXBfdHlwZTx0eXBlbmFt
ZSBfVXA6OmFsbG9jYXRvcl90eXBlPiopOyB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+IHN0YXRpYyBm
YWxzZV90eXBlIF9fdGVzdCguLi4pOyBwdWJsaWM6IHR5cGVkZWYgZGVjbHR5cGUoX190ZXN0PF9U
cD4oMCkpIHR5cGU7IH07IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gc3RydWN0IF9faGFzX2FsbG9j
YXRvcl90eXBlIDogcHVibGljIF9faGFzX2FsbG9jYXRvcl90eXBlX2hlbHBlciA8dHlwZW5hbWUg
cmVtb3ZlX2N2PF9UcD46OnR5cGU+Ojp0eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
LCB0eXBlbmFtZSBfQWxsb2MsCiAgICBib29sID0gX19oYXNfYWxsb2NhdG9yX3R5cGU8X1RwPjo6
dmFsdWU+CiAgICBzdHJ1Y3QgX191c2VzX2FsbG9jYXRvcl9oZWxwZXIKICAgIDogcHVibGljIGZh
bHNlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4K
ICAgIHN0cnVjdCBfX3VzZXNfYWxsb2NhdG9yX2hlbHBlcjxfVHAsIF9BbGxvYywgdHJ1ZT4KICAg
IDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsIGlzX2NvbnZlcnRpYmxlPF9BbGxvYywK
ICAgICAgICAgdHlwZW5hbWUgX1RwOjphbGxvY2F0b3JfdHlwZT46OnZhbHVlPgogICAgeyB9OwoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBzdHJ1Y3QgdXNl
c19hbGxvY2F0b3IKICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsCiAgICAgICAg
ICBfX3VzZXNfYWxsb2NhdG9yX2hlbHBlcjxfVHAsIF9BbGxvYz46OnZhbHVlPgogICAgeyB9OwoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUuLi4gX0Fy
Z3M+CiAgICBzdHJ1Y3QgX191c2VzX2FsbG9jYXRvcl9hcmcKICAgIDogaXNfY29uc3RydWN0aWJs
ZTxfVHAsIF9BbGxvYywgX0FyZ3MuLi4+CiAgICB7IHN0YXRpY19hc3NlcnQoIHVzZXNfYWxsb2Nh
dG9yPF9UcCwgX0FsbG9jPjo6dmFsdWUsICJ1c2VzIGFsbG9jYXRvciIgKTsgfTsKCiAgc3RydWN0
IF9fdXNlc19hbGxvY19iYXNlIHsgfTsKICBzdHJ1Y3QgX191c2VzX2FsbG9jMCA6IF9fdXNlc19h
bGxvY19iYXNlCiAgeyBzdHJ1Y3QgX0FueXRoaW5nIHsgX0FueXRoaW5nKC4uLikgeyB9IH0gX01f
YTsgfTsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAgICBzdHJ1Y3QgX191c2VzX2FsbG9j
MSA6IF9fdXNlc19hbGxvY19iYXNlIHsgY29uc3QgX0FsbG9jKiBfTV9hOyB9OwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9BbGxvYz4KICAgIHN0cnVjdCBfX3VzZXNfYWxsb2MyIDogX191c2VzX2FsbG9j
X2Jhc2UgeyBjb25zdCBfQWxsb2MqIF9NX2E7IH07CgogIHRlbXBsYXRlPGJvb2wsIHR5cGVuYW1l
IF9BbGxvYywgdHlwZW5hbWUuLi4gX0FyZ3M+CiAgICBzdHJ1Y3QgX191c2VzX2FsbG9jOwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUuLi4gX0FyZ3M+
CiAgICBzdHJ1Y3QgX191c2VzX2FsbG9jPHRydWUsIF9UcCwgX0FsbG9jLCBfQXJncy4uLj4KICAg
IDogY29uZGl0aW9uYWw8CiAgICAgICAgaXNfY29uc3RydWN0aWJsZTxfVHAsIGFsbG9jYXRvcl9h
cmdfdCwgX0FsbG9jLCBfQXJncy4uLj46OnZhbHVlLAogICAgICAgIF9fdXNlc19hbGxvYzE8X0Fs
bG9jPiwKICAgICAgICBfX3VzZXNfYWxsb2MyPF9BbGxvYz4+Ojp0eXBlCiAgICB7IH07CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZS4uLiBfQXJncz4K
ICAgIHN0cnVjdCBfX3VzZXNfYWxsb2M8ZmFsc2UsIF9UcCwgX0FsbG9jLCBfQXJncy4uLj4KICAg
IDogX191c2VzX2FsbG9jMCB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUg
X0FsbG9jLCB0eXBlbmFtZS4uLiBfQXJncz4KICAgIHN0cnVjdCBfX3VzZXNfYWxsb2NfaW1wbAog
ICAgOiBfX3VzZXNfYWxsb2M8dXNlc19hbGxvY2F0b3I8X1RwLCBfQWxsb2M+Ojp2YWx1ZSwgX1Rw
LCBfQWxsb2MsIF9BcmdzLi4uPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5
cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUuLi4gX0FyZ3M+CiAgICBfX3VzZXNfYWxsb2NfaW1wbDxf
VHAsIF9BbGxvYywgX0FyZ3MuLi4+CiAgICBfX3VzZV9hbGxvYyhjb25zdCBfQWxsb2MmIF9fYSkK
ICAgIHsKICAgICAgX191c2VzX2FsbG9jX2ltcGw8X1RwLCBfQWxsb2MsIF9BcmdzLi4uPiBfX3Jl
dDsKICAgICAgX19yZXQuX01fYSA9ICZfX2E7CiAgICAgIHJldHVybiBfX3JldDsKICAgIH0KCgp9
CiMgNzggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvbWVtb3J5IiAyIDMKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9mdW5jdGlvbmFsIiAxIDMKIyA0NCAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9mdW5jdGlvbmFsIiAz
CiNkZWZpbmUgX0dMSUJDWFhfRlVOQ1RJT05BTCAxCgogICAgICAgCiMgNDcgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvZnVuY3Rpb25hbCIg
MwojIDU1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2Z1bmN0aW9uYWwiIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3R1cGxlIiAxIDMKIyAzMCAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy90dXBsZSIgMwojZGVmaW5l
IF9HTElCQ1hYX1RVUExFIDEKCiAgICAgICAKIyAzMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy90dXBsZSIgMwoKCgoKCiMgMSAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy91dGlsaXR5
IiAxIDMKIyA1NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy91dGlsaXR5IiAzCiNkZWZpbmUgX0dMSUJDWFhfVVRJTElUWSAxCgogICAgICAg
CiMgNTkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvdXRpbGl0eSIgMwojIDY5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL3V0aWxpdHkiIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX3JlbG9wcy5oIiAx
IDMKIyA2NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL3N0bF9yZWxvcHMuaCIgMwojZGVmaW5lIF9TVExfUkVMT1BTX0ggMQoKbmFt
ZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7
CiAgbmFtZXNwYWNlIHJlbF9vcHMKICB7CiAKIyA4NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9yZWxvcHMuaCIgMwogICAg
dGVtcGxhdGUgPGNsYXNzIF9UcD4KICAgICAgaW5saW5lIGJvb2wKICAgICAgb3BlcmF0b3IhPShj
b25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpCiAgICAgIHsgcmV0dXJuICEoX194ID09IF9f
eSk7IH0KIyA5OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL3N0bF9yZWxvcHMuaCIgMwogICAgdGVtcGxhdGUgPGNsYXNzIF9UcD4K
ICAgICAgaW5saW5lIGJvb2wKICAgICAgb3BlcmF0b3I+KGNvbnN0IF9UcCYgX194LCBjb25zdCBf
VHAmIF9feSkKICAgICAgeyByZXR1cm4gX195IDwgX194OyB9CiMgMTExICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX3JlbG9w
cy5oIiAzCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgogICAgICBpbmxpbmUgYm9vbAogICAgICBv
cGVyYXRvcjw9KGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkKICAgICAgeyByZXR1cm4g
IShfX3kgPCBfX3gpOyB9CiMgMTI0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX3JlbG9wcy5oIiAzCiAgICB0ZW1wbGF0ZSA8
Y2xhc3MgX1RwPgogICAgICBpbmxpbmUgYm9vbAogICAgICBvcGVyYXRvcj49KGNvbnN0IF9UcCYg
X194LCBjb25zdCBfVHAmIF9feSkKICAgICAgeyByZXR1cm4gIShfX3ggPCBfX3kpOyB9CgogCiAg
fQoKfQojIDcwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL3V0aWxpdHkiIDIgMwoKCgoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9pbml0aWFsaXplcl9saXN0IiAxIDMKIyAz
MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9pbml0aWFsaXplcl9saXN0IiAzCiNkZWZpbmUgX0lOSVRJQUxJWkVSX0xJU1QgCgogICAgICAg
CiMgMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvaW5pdGlhbGl6ZXJfbGlzdCIgMwoKCgoKCiNwcmFnbWEgR0NDIHZpc2liaWxpdHkgcHVz
aChkZWZhdWx0KQoKCgpuYW1lc3BhY2Ugc3RkCnsKCiAgdGVtcGxhdGU8Y2xhc3MgX0U+CiAgICBj
bGFzcyBpbml0aWFsaXplcl9saXN0CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX0Ug
dmFsdWVfdHlwZTsKICAgICAgdHlwZWRlZiBjb25zdCBfRSYgcmVmZXJlbmNlOwogICAgICB0eXBl
ZGVmIGNvbnN0IF9FJiBjb25zdF9yZWZlcmVuY2U7CiAgICAgIHR5cGVkZWYgc2l6ZV90IHNpemVf
dHlwZTsKICAgICAgdHlwZWRlZiBjb25zdCBfRSogaXRlcmF0b3I7CiAgICAgIHR5cGVkZWYgY29u
c3QgX0UqIGNvbnN0X2l0ZXJhdG9yOwoKICAgIHByaXZhdGU6CiAgICAgIGl0ZXJhdG9yIF9NX2Fy
cmF5OwogICAgICBzaXplX3R5cGUgX01fbGVuOwoKCiAgICAgIGNvbnN0ZXhwciBpbml0aWFsaXpl
cl9saXN0KGNvbnN0X2l0ZXJhdG9yIF9fYSwgc2l6ZV90eXBlIF9fbCkKICAgICAgOiBfTV9hcnJh
eShfX2EpLCBfTV9sZW4oX19sKSB7IH0KCiAgICBwdWJsaWM6CiAgICAgIGNvbnN0ZXhwciBpbml0
aWFsaXplcl9saXN0KCkgbm9leGNlcHQKICAgICAgOiBfTV9hcnJheSgwKSwgX01fbGVuKDApIHsg
fQoKCiAgICAgIGNvbnN0ZXhwciBzaXplX3R5cGUKICAgICAgc2l6ZSgpIGNvbnN0IG5vZXhjZXB0
IHsgcmV0dXJuIF9NX2xlbjsgfQoKCiAgICAgIGNvbnN0ZXhwciBjb25zdF9pdGVyYXRvcgogICAg
ICBiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9NX2FycmF5OyB9CgoKICAgICAgY29u
c3RleHByIGNvbnN0X2l0ZXJhdG9yCiAgICAgIGVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJu
IGJlZ2luKCkgKyBzaXplKCk7IH0KICAgIH07CgoKCgoKCiAgdGVtcGxhdGU8Y2xhc3MgX1RwPgog
ICAgY29uc3RleHByIGNvbnN0IF9UcCoKICAgIGJlZ2luKGluaXRpYWxpemVyX2xpc3Q8X1RwPiBf
X2lscykgbm9leGNlcHQKICAgIHsgcmV0dXJuIF9faWxzLmJlZ2luKCk7IH0KCgoKCgoKICB0ZW1w
bGF0ZTxjbGFzcyBfVHA+CiAgICBjb25zdGV4cHIgY29uc3QgX1RwKgogICAgZW5kKGluaXRpYWxp
emVyX2xpc3Q8X1RwPiBfX2lscykgbm9leGNlcHQKICAgIHsgcmV0dXJuIF9faWxzLmVuZCgpOyB9
Cn0KCiNwcmFnbWEgR0NDIHZpc2liaWxpdHkgcG9wCiMgNzYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvdXRpbGl0eSIgMiAzCgpuYW1lc3Bh
Y2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgog
IHRlbXBsYXRlPGNsYXNzIF9UcD4KICAgIGNsYXNzIHR1cGxlX3NpemU7CgogIHRlbXBsYXRlPHN0
ZDo6c2l6ZV90IF9JbnQsIGNsYXNzIF9UcD4KICAgIGNsYXNzIHR1cGxlX2VsZW1lbnQ7CgoKICB0
ZW1wbGF0ZTxjbGFzcyBfVHAxLCBjbGFzcyBfVHAyPgogICAgc3RydWN0IHR1cGxlX3NpemU8c3Rk
OjpwYWlyPF9UcDEsIF9UcDI+PgogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8c3RkOjpz
aXplX3QsIDI+IHsgfTsKCiAgdGVtcGxhdGU8Y2xhc3MgX1RwMSwgY2xhc3MgX1RwMj4KICAgIHN0
cnVjdCB0dXBsZV9lbGVtZW50PDAsIHN0ZDo6cGFpcjxfVHAxLCBfVHAyPj4KICAgIHsgdHlwZWRl
ZiBfVHAxIHR5cGU7IH07CgogIHRlbXBsYXRlPGNsYXNzIF9UcDEsIGNsYXNzIF9UcDI+CiAgICBz
dHJ1Y3QgdHVwbGVfZWxlbWVudDwxLCBzdGQ6OnBhaXI8X1RwMSwgX1RwMj4+CiAgICB7IHR5cGVk
ZWYgX1RwMiB0eXBlOyB9OwoKICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBfSW50PgogICAgc3RydWN0
IF9fcGFpcl9nZXQ7CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX3BhaXJfZ2V0PDA+CiAgICB7
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1lIF9UcDI+CiAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBfVHAxJgogICAgICAgIF9fZ2V0KHN0ZDo6cGFpcjxfVHAxLCBfVHAyPiYg
X19wYWlyKSBub2V4Y2VwdAogICAgICAgIHsgcmV0dXJuIF9fcGFpci5maXJzdDsgfQoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgX1RwMj4KICAgICAgICBzdGF0aWMgY29u
c3RleHByIF9UcDEmJgogICAgICAgIF9fbW92ZV9nZXQoc3RkOjpwYWlyPF9UcDEsIF9UcDI+JiYg
X19wYWlyKSBub2V4Y2VwdAogICAgICAgIHsgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxfVHAxPihfX3Bh
aXIuZmlyc3QpOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSBfVHAy
PgogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgX1RwMSYKICAgICAgICBfX2NvbnN0X2dl
dChjb25zdCBzdGQ6OnBhaXI8X1RwMSwgX1RwMj4mIF9fcGFpcikgbm9leGNlcHQKICAgICAgICB7
IHJldHVybiBfX3BhaXIuZmlyc3Q7IH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBf
X3BhaXJfZ2V0PDE+CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1l
IF9UcDI+CiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBfVHAyJgogICAgICAgIF9fZ2V0KHN0ZDo6
cGFpcjxfVHAxLCBfVHAyPiYgX19wYWlyKSBub2V4Y2VwdAogICAgICAgIHsgcmV0dXJuIF9fcGFp
ci5zZWNvbmQ7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1lIF9UcDI+
CiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBfVHAyJiYKICAgICAgICBfX21vdmVfZ2V0KHN0ZDo6
cGFpcjxfVHAxLCBfVHAyPiYmIF9fcGFpcikgbm9leGNlcHQKICAgICAgICB7IHJldHVybiBzdGQ6
OmZvcndhcmQ8X1RwMj4oX19wYWlyLnNlY29uZCk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcDEsIHR5cGVuYW1lIF9UcDI+CiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBfVHAy
JgogICAgICAgIF9fY29uc3RfZ2V0KGNvbnN0IHN0ZDo6cGFpcjxfVHAxLCBfVHAyPiYgX19wYWly
KSBub2V4Y2VwdAogICAgICAgIHsgcmV0dXJuIF9fcGFpci5zZWNvbmQ7IH0KICAgIH07CgogIHRl
bXBsYXRlPHN0ZDo6c2l6ZV90IF9JbnQsIGNsYXNzIF9UcDEsIGNsYXNzIF9UcDI+CiAgICBjb25z
dGV4cHIgdHlwZW5hbWUgdHVwbGVfZWxlbWVudDxfSW50LCBzdGQ6OnBhaXI8X1RwMSwgX1RwMj4+
Ojp0eXBlJgogICAgZ2V0KHN0ZDo6cGFpcjxfVHAxLCBfVHAyPiYgX19pbikgbm9leGNlcHQKICAg
IHsgcmV0dXJuIF9fcGFpcl9nZXQ8X0ludD46Ol9fZ2V0KF9faW4pOyB9CgogIHRlbXBsYXRlPHN0
ZDo6c2l6ZV90IF9JbnQsIGNsYXNzIF9UcDEsIGNsYXNzIF9UcDI+CiAgICBjb25zdGV4cHIgdHlw
ZW5hbWUgdHVwbGVfZWxlbWVudDxfSW50LCBzdGQ6OnBhaXI8X1RwMSwgX1RwMj4+Ojp0eXBlJiYK
ICAgIGdldChzdGQ6OnBhaXI8X1RwMSwgX1RwMj4mJiBfX2luKSBub2V4Y2VwdAogICAgeyByZXR1
cm4gX19wYWlyX2dldDxfSW50Pjo6X19tb3ZlX2dldChzdGQ6Om1vdmUoX19pbikpOyB9CgogIHRl
bXBsYXRlPHN0ZDo6c2l6ZV90IF9JbnQsIGNsYXNzIF9UcDEsIGNsYXNzIF9UcDI+CiAgICBjb25z
dGV4cHIgY29uc3QgdHlwZW5hbWUgdHVwbGVfZWxlbWVudDxfSW50LCBzdGQ6OnBhaXI8X1RwMSwg
X1RwMj4+Ojp0eXBlJgogICAgZ2V0KGNvbnN0IHN0ZDo6cGFpcjxfVHAxLCBfVHAyPiYgX19pbikg
bm9leGNlcHQKICAgIHsgcmV0dXJuIF9fcGFpcl9nZXQ8X0ludD46Ol9fY29uc3RfZ2V0KF9faW4p
OyB9CiMgMjA1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL3V0aWxpdHkiIDMKICB0ZW1wbGF0ZTxzaXplX3QuLi4gX0luZGV4ZXM+CiAgICBz
dHJ1Y3QgX0luZGV4X3R1cGxlCiAgICB7CiAgICAgIHR5cGVkZWYgX0luZGV4X3R1cGxlPF9JbmRl
eGVzLi4uLCBzaXplb2YuLi4oX0luZGV4ZXMpPiBfX25leHQ7CiAgICB9OwoKCiAgdGVtcGxhdGU8
c2l6ZV90IF9OdW0+CiAgICBzdHJ1Y3QgX0J1aWxkX2luZGV4X3R1cGxlCiAgICB7CiAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgX0J1aWxkX2luZGV4X3R1cGxlPF9OdW0gLSAxPjo6X190eXBlOjpfX25l
eHQgX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9CdWlsZF9pbmRleF90
dXBsZTwwPgogICAgewogICAgICB0eXBlZGVmIF9JbmRleF90dXBsZTw+IF9fdHlwZTsKICAgIH07
CiMgMjY3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL3V0aWxpdHkiIDMKCn0KIyAzOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy90dXBsZSIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcnJheSIgMSAzCiMgMzAg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
YXJyYXkiIDMKI2RlZmluZSBfR0xJQkNYWF9BUlJBWSAxCgogICAgICAgCiMgMzMgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYXJyYXkiIDMK
CgoKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvc3RkZXhjZXB0IiAxIDMKIyAzNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9zdGRleGNlcHQiIDMKI2RlZmluZSBfR0xJQkNY
WF9TVERFWENFUFQgMQoKICAgICAgIAojIDM3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3N0ZGV4Y2VwdCIgMwoKCiMgMSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9zdHJpbmciIDEg
MwojIDM0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL3N0cmluZyIgMwojZGVmaW5lIF9HTElCQ1hYX1NUUklORyAxCgogICAgICAgCiMgMzcg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
c3RyaW5nIiAzCgoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL2NoYXJfdHJhaXRzLmgiIDEgMwojIDM1ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvY2hhcl90
cmFpdHMuaCIgMwojZGVmaW5lIF9DSEFSX1RSQUlUU19IIDEKCiAgICAgICAKIyAzOCAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2No
YXJfdHJhaXRzLmgiIDMKCgoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2N3Y2hhciIgMSAzCiMgMzkgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvY3djaGFyIiAzCiAgICAgICAK
IyA0MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9jd2NoYXIiIDMKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMyA0CiMgODk5
ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0CiN1bmRlZiBfX25lZWRfbWJzdGF0ZV90CiN1bmRl
ZiBfX25lZWRfd2ludF90CiMgNDUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvY3djaGFyIiAyIDMKIyA0MiAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2NoYXJfdHJhaXRzLmgi
IDIgMwoKbmFtZXNwYWNlIF9fZ251X2N4eCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18g
KCJkZWZhdWx0IikpKQp7CgojIDU3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvY2hhcl90cmFpdHMuaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVD4KICAgIHN0cnVjdCBfQ2hhcl90eXBlcwogICAgewogICAgICB0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgaW50X3R5cGU7CiAgICAgIHR5cGVkZWYgc3RkOjpzdHJlYW1wb3MgcG9z
X3R5cGU7CiAgICAgIHR5cGVkZWYgc3RkOjpzdHJlYW1vZmYgb2ZmX3R5cGU7CiAgICAgIHR5cGVk
ZWYgc3RkOjptYnN0YXRlX3Qgc3RhdGVfdHlwZTsKICAgIH07CiMgODIgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9jaGFyX3RyYWl0
cy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgc3RydWN0IGNoYXJfdHJhaXRz
CiAgICB7CiAgICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBfQ2hhcl90eXBlczxfQ2hhclQ+OjppbnRfdHlwZSBpbnRfdHlwZTsKICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBfQ2hhcl90eXBlczxfQ2hhclQ+Ojpwb3NfdHlwZSBwb3NfdHlwZTsKICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBfQ2hhcl90eXBlczxfQ2hhclQ+OjpvZmZfdHlwZSBvZmZfdHlwZTsK
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQ2hhcl90eXBlczxfQ2hhclQ+OjpzdGF0ZV90eXBlIHN0
YXRlX3R5cGU7CgogICAgICBzdGF0aWMgdm9pZAogICAgICBhc3NpZ24oY2hhcl90eXBlJiBfX2Mx
LCBjb25zdCBjaGFyX3R5cGUmIF9fYzIpCiAgICAgIHsgX19jMSA9IF9fYzI7IH0KCiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbAogICAgICBlcShjb25zdCBjaGFyX3R5cGUmIF9fYzEsIGNvbnN0
IGNoYXJfdHlwZSYgX19jMikKICAgICAgeyByZXR1cm4gX19jMSA9PSBfX2MyOyB9CgogICAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wKICAgICAgbHQoY29uc3QgY2hhcl90eXBlJiBfX2MxLCBjb25z
dCBjaGFyX3R5cGUmIF9fYzIpCiAgICAgIHsgcmV0dXJuIF9fYzEgPCBfX2MyOyB9CgogICAgICBz
dGF0aWMgaW50CiAgICAgIGNvbXBhcmUoY29uc3QgY2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFy
X3R5cGUqIF9fczIsIHN0ZDo6c2l6ZV90IF9fbik7CgogICAgICBzdGF0aWMgc3RkOjpzaXplX3QK
ICAgICAgbGVuZ3RoKGNvbnN0IGNoYXJfdHlwZSogX19zKTsKCiAgICAgIHN0YXRpYyBjb25zdCBj
aGFyX3R5cGUqCiAgICAgIGZpbmQoY29uc3QgY2hhcl90eXBlKiBfX3MsIHN0ZDo6c2l6ZV90IF9f
biwgY29uc3QgY2hhcl90eXBlJiBfX2EpOwoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAg
bW92ZShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc3RkOjpzaXplX3Qg
X19uKTsKCiAgICAgIHN0YXRpYyBjaGFyX3R5cGUqCiAgICAgIGNvcHkoY2hhcl90eXBlKiBfX3Mx
LCBjb25zdCBjaGFyX3R5cGUqIF9fczIsIHN0ZDo6c2l6ZV90IF9fbik7CgogICAgICBzdGF0aWMg
Y2hhcl90eXBlKgogICAgICBhc3NpZ24oY2hhcl90eXBlKiBfX3MsIHN0ZDo6c2l6ZV90IF9fbiwg
Y2hhcl90eXBlIF9fYSk7CgogICAgICBzdGF0aWMgY29uc3RleHByIGNoYXJfdHlwZQogICAgICB0
b19jaGFyX3R5cGUoY29uc3QgaW50X3R5cGUmIF9fYykKICAgICAgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Y2hhcl90eXBlPihfX2MpOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGludF90eXBlCiAg
ICAgIHRvX2ludF90eXBlKGNvbnN0IGNoYXJfdHlwZSYgX19jKQogICAgICB7IHJldHVybiBzdGF0
aWNfY2FzdDxpbnRfdHlwZT4oX19jKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sCiAg
ICAgIGVxX2ludF90eXBlKGNvbnN0IGludF90eXBlJiBfX2MxLCBjb25zdCBpbnRfdHlwZSYgX19j
MikKICAgICAgeyByZXR1cm4gX19jMSA9PSBfX2MyOyB9CgogICAgICBzdGF0aWMgY29uc3RleHBy
IGludF90eXBlCiAgICAgIGVvZigpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludF90eXBl
PigtMSk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50X3R5cGUKICAgICAgbm90X2VvZihj
b25zdCBpbnRfdHlwZSYgX19jKQogICAgICB7IHJldHVybiAhZXFfaW50X3R5cGUoX19jLCBlb2Yo
KSkgPyBfX2MgOiB0b19pbnRfdHlwZShjaGFyX3R5cGUoKSk7IH0KICAgIH07CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DaGFyVD4KICAgIGludAogICAgY2hhcl90cmFpdHM8X0NoYXJUPjo6CiAgICBj
b21wYXJlKGNvbnN0IGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBzdGQ6
OnNpemVfdCBfX24pCiAgICB7CiAgICAgIGZvciAoc3RkOjpzaXplX3QgX19pID0gMDsgX19pIDwg
X19uOyArK19faSkKIGlmIChsdChfX3MxW19faV0sIF9fczJbX19pXSkpCiAgIHJldHVybiAtMTsK
IGVsc2UgaWYgKGx0KF9fczJbX19pXSwgX19zMVtfX2ldKSkKICAgcmV0dXJuIDE7CiAgICAgIHJl
dHVybiAwOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBzdGQ6OnNpemVf
dAogICAgY2hhcl90cmFpdHM8X0NoYXJUPjo6CiAgICBsZW5ndGgoY29uc3QgY2hhcl90eXBlKiBf
X3ApCiAgICB7CiAgICAgIHN0ZDo6c2l6ZV90IF9faSA9IDA7CiAgICAgIHdoaWxlICghZXEoX19w
W19faV0sIGNoYXJfdHlwZSgpKSkKICAgICAgICArK19faTsKICAgICAgcmV0dXJuIF9faTsKICAg
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgY29uc3QgdHlwZW5hbWUgY2hhcl90
cmFpdHM8X0NoYXJUPjo6Y2hhcl90eXBlKgogICAgY2hhcl90cmFpdHM8X0NoYXJUPjo6CiAgICBm
aW5kKGNvbnN0IGNoYXJfdHlwZSogX19zLCBzdGQ6OnNpemVfdCBfX24sIGNvbnN0IGNoYXJfdHlw
ZSYgX19hKQogICAgewogICAgICBmb3IgKHN0ZDo6c2l6ZV90IF9faSA9IDA7IF9faSA8IF9fbjsg
KytfX2kpCiAgICAgICAgaWYgKGVxKF9fc1tfX2ldLCBfX2EpKQogICAgICAgICAgcmV0dXJuIF9f
cyArIF9faTsKICAgICAgcmV0dXJuIDA7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VD4KICAgIHR5cGVuYW1lIGNoYXJfdHJhaXRzPF9DaGFyVD46OmNoYXJfdHlwZSoKICAgIGNoYXJf
dHJhaXRzPF9DaGFyVD46OgogICAgbW92ZShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlw
ZSogX19zMiwgc3RkOjpzaXplX3QgX19uKQogICAgewogICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
X0NoYXJUKj4oX19idWlsdGluX21lbW1vdmUoX19zMSwgX19zMiwKICAgICAgICAgIF9fbiAqIHNp
emVvZihjaGFyX3R5cGUpKSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAg
IHR5cGVuYW1lIGNoYXJfdHJhaXRzPF9DaGFyVD46OmNoYXJfdHlwZSoKICAgIGNoYXJfdHJhaXRz
PF9DaGFyVD46OgogICAgY29weShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19z
Miwgc3RkOjpzaXplX3QgX19uKQogICAgewoKICAgICAgc3RkOjpjb3B5KF9fczIsIF9fczIgKyBf
X24sIF9fczEpOwogICAgICByZXR1cm4gX19zMTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJUPgogICAgdHlwZW5hbWUgY2hhcl90cmFpdHM8X0NoYXJUPjo6Y2hhcl90eXBlKgogICAg
Y2hhcl90cmFpdHM8X0NoYXJUPjo6CiAgICBhc3NpZ24oY2hhcl90eXBlKiBfX3MsIHN0ZDo6c2l6
ZV90IF9fbiwgY2hhcl90eXBlIF9fYSkKICAgIHsKCiAgICAgIHN0ZDo6ZmlsbF9uKF9fcywgX19u
LCBfX2EpOwogICAgICByZXR1cm4gX19zOwogICAgfQoKCn0KCm5hbWVzcGFjZSBzdGQgX19hdHRy
aWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKIyAyMjYgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9jaGFy
X3RyYWl0cy5oIiAzCiAgdGVtcGxhdGU8Y2xhc3MgX0NoYXJUPgogICAgc3RydWN0IGNoYXJfdHJh
aXRzIDogcHVibGljIF9fZ251X2N4eDo6Y2hhcl90cmFpdHM8X0NoYXJUPgogICAgeyB9OwoKCgog
IHRlbXBsYXRlPD4KICAgIHN0cnVjdCBjaGFyX3RyYWl0czxjaGFyPgogICAgewogICAgICB0eXBl
ZGVmIGNoYXIgY2hhcl90eXBlOwogICAgICB0eXBlZGVmIGludCBpbnRfdHlwZTsKICAgICAgdHlw
ZWRlZiBzdHJlYW1wb3MgcG9zX3R5cGU7CiAgICAgIHR5cGVkZWYgc3RyZWFtb2ZmIG9mZl90eXBl
OwogICAgICB0eXBlZGVmIG1ic3RhdGVfdCBzdGF0ZV90eXBlOwoKICAgICAgc3RhdGljIHZvaWQK
ICAgICAgYXNzaWduKGNoYXJfdHlwZSYgX19jMSwgY29uc3QgY2hhcl90eXBlJiBfX2MyKSBub2V4
Y2VwdAogICAgICB7IF9fYzEgPSBfX2MyOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wK
ICAgICAgZXEoY29uc3QgY2hhcl90eXBlJiBfX2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIpIG5v
ZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fYzEgPT0gX19jMjsgfQoKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sCiAgICAgIGx0KGNvbnN0IGNoYXJfdHlwZSYgX19jMSwgY29uc3QgY2hhcl90eXBl
JiBfX2MyKSBub2V4Y2VwdAogICAgICB7CgogcmV0dXJuIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihfX2MxKQogIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oX19jMikpOwogICAgICB9
CgogICAgICBzdGF0aWMgaW50CiAgICAgIGNvbXBhcmUoY29uc3QgY2hhcl90eXBlKiBfX3MxLCBj
b25zdCBjaGFyX3R5cGUqIF9fczIsIHNpemVfdCBfX24pCiAgICAgIHsgcmV0dXJuIF9fYnVpbHRp
bl9tZW1jbXAoX19zMSwgX19zMiwgX19uKTsgfQoKICAgICAgc3RhdGljIHNpemVfdAogICAgICBs
ZW5ndGgoY29uc3QgY2hhcl90eXBlKiBfX3MpCiAgICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9zdHJs
ZW4oX19zKTsgfQoKICAgICAgc3RhdGljIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZmluZChjb25z
dCBjaGFyX3R5cGUqIF9fcywgc2l6ZV90IF9fbiwgY29uc3QgY2hhcl90eXBlJiBfX2EpCiAgICAg
IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IGNoYXJfdHlwZSo+KF9fYnVpbHRpbl9tZW1jaHIo
X19zLCBfX2EsIF9fbikpOyB9CgogICAgICBzdGF0aWMgY2hhcl90eXBlKgogICAgICBtb3ZlKGNo
YXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBzaXplX3QgX19uKQogICAgICB7
IHJldHVybiBzdGF0aWNfY2FzdDxjaGFyX3R5cGUqPihfX2J1aWx0aW5fbWVtbW92ZShfX3MxLCBf
X3MyLCBfX24pKTsgfQoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgY29weShjaGFyX3R5
cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbikKICAgICAgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlKj4oX19idWlsdGluX21lbWNweShfX3MxLCBfX3MyLCBf
X24pKTsgfQoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgYXNzaWduKGNoYXJfdHlwZSog
X19zLCBzaXplX3QgX19uLCBjaGFyX3R5cGUgX19hKQogICAgICB7IHJldHVybiBzdGF0aWNfY2Fz
dDxjaGFyX3R5cGUqPihfX2J1aWx0aW5fbWVtc2V0KF9fcywgX19hLCBfX24pKTsgfQoKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBjaGFyX3R5cGUKICAgICAgdG9fY2hhcl90eXBlKGNvbnN0IGludF90
eXBlJiBfX2MpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXJfdHlwZT4o
X19jKTsgfQoKCgogICAgICBzdGF0aWMgY29uc3RleHByIGludF90eXBlCiAgICAgIHRvX2ludF90
eXBlKGNvbnN0IGNoYXJfdHlwZSYgX19jKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNf
Y2FzdDxpbnRfdHlwZT4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oX19jKSk7IH0KCiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbAogICAgICBlcV9pbnRfdHlwZShjb25zdCBpbnRfdHlwZSYg
X19jMSwgY29uc3QgaW50X3R5cGUmIF9fYzIpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fYzEg
PT0gX19jMjsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnRfdHlwZQogICAgICBlb2YoKSBu
b2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnRfdHlwZT4oLTEpOyB9CgogICAg
ICBzdGF0aWMgY29uc3RleHByIGludF90eXBlCiAgICAgIG5vdF9lb2YoY29uc3QgaW50X3R5cGUm
IF9fYykgbm9leGNlcHQKICAgICAgeyByZXR1cm4gKF9fYyA9PSBlb2YoKSkgPyAwIDogX19jOyB9
CiAgfTsKCgoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IGNoYXJfdHJhaXRzPHdjaGFyX3Q+CiAg
ICB7CiAgICAgIHR5cGVkZWYgd2NoYXJfdCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgd2ludF90
IGludF90eXBlOwogICAgICB0eXBlZGVmIHN0cmVhbW9mZiBvZmZfdHlwZTsKICAgICAgdHlwZWRl
ZiB3c3RyZWFtcG9zIHBvc190eXBlOwogICAgICB0eXBlZGVmIG1ic3RhdGVfdCBzdGF0ZV90eXBl
OwoKICAgICAgc3RhdGljIHZvaWQKICAgICAgYXNzaWduKGNoYXJfdHlwZSYgX19jMSwgY29uc3Qg
Y2hhcl90eXBlJiBfX2MyKSBub2V4Y2VwdAogICAgICB7IF9fYzEgPSBfX2MyOyB9CgogICAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wKICAgICAgZXEoY29uc3QgY2hhcl90eXBlJiBfX2MxLCBjb25z
dCBjaGFyX3R5cGUmIF9fYzIpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fYzEgPT0gX19jMjsg
fQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sCiAgICAgIGx0KGNvbnN0IGNoYXJfdHlwZSYg
X19jMSwgY29uc3QgY2hhcl90eXBlJiBfX2MyKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfX2Mx
IDwgX19jMjsgfQoKICAgICAgc3RhdGljIGludAogICAgICBjb21wYXJlKGNvbnN0IGNoYXJfdHlw
ZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBzaXplX3QgX19uKQogICAgICB7IHJldHVy
biB3bWVtY21wKF9fczEsIF9fczIsIF9fbik7IH0KCiAgICAgIHN0YXRpYyBzaXplX3QKICAgICAg
bGVuZ3RoKGNvbnN0IGNoYXJfdHlwZSogX19zKQogICAgICB7IHJldHVybiB3Y3NsZW4oX19zKTsg
fQoKICAgICAgc3RhdGljIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZmluZChjb25zdCBjaGFyX3R5
cGUqIF9fcywgc2l6ZV90IF9fbiwgY29uc3QgY2hhcl90eXBlJiBfX2EpCiAgICAgIHsgcmV0dXJu
IHdtZW1jaHIoX19zLCBfX2EsIF9fbik7IH0KCiAgICAgIHN0YXRpYyBjaGFyX3R5cGUqCiAgICAg
IG1vdmUoY2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5cGUqIF9fczIsIHNpemVfdCBfX24p
CiAgICAgIHsgcmV0dXJuIHdtZW1tb3ZlKF9fczEsIF9fczIsIF9fbik7IH0KCiAgICAgIHN0YXRp
YyBjaGFyX3R5cGUqCiAgICAgIGNvcHkoY2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5cGUq
IF9fczIsIHNpemVfdCBfX24pCiAgICAgIHsgcmV0dXJuIHdtZW1jcHkoX19zMSwgX19zMiwgX19u
KTsgfQoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgYXNzaWduKGNoYXJfdHlwZSogX19z
LCBzaXplX3QgX19uLCBjaGFyX3R5cGUgX19hKQogICAgICB7IHJldHVybiB3bWVtc2V0KF9fcywg
X19hLCBfX24pOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGNoYXJfdHlwZQogICAgICB0b19j
aGFyX3R5cGUoY29uc3QgaW50X3R5cGUmIF9fYykgbm9leGNlcHQKICAgICAgeyByZXR1cm4gY2hh
cl90eXBlKF9fYyk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50X3R5cGUKICAgICAgdG9f
aW50X3R5cGUoY29uc3QgY2hhcl90eXBlJiBfX2MpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGlu
dF90eXBlKF9fYyk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbAogICAgICBlcV9pbnRf
dHlwZShjb25zdCBpbnRfdHlwZSYgX19jMSwgY29uc3QgaW50X3R5cGUmIF9fYzIpIG5vZXhjZXB0
CiAgICAgIHsgcmV0dXJuIF9fYzEgPT0gX19jMjsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnRfdHlwZQogICAgICBlb2YoKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxp
bnRfdHlwZT4oKDB4ZmZmZmZmZmZ1KSk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50X3R5
cGUKICAgICAgbm90X2VvZihjb25zdCBpbnRfdHlwZSYgX19jKSBub2V4Y2VwdAogICAgICB7IHJl
dHVybiBlcV9pbnRfdHlwZShfX2MsIGVvZigpKSA/IDAgOiBfX2M7IH0KICB9OwoKCgp9CgoKCgoK
Cm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIp
KSkKewoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IGNoYXJfdHJhaXRzPGNoYXIxNl90PgogICAg
ewogICAgICB0eXBlZGVmIGNoYXIxNl90IGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiB1aW50X2xl
YXN0MTZfdCBpbnRfdHlwZTsKICAgICAgdHlwZWRlZiBzdHJlYW1vZmYgb2ZmX3R5cGU7CiAgICAg
IHR5cGVkZWYgdTE2c3RyZWFtcG9zIHBvc190eXBlOwogICAgICB0eXBlZGVmIG1ic3RhdGVfdCBz
dGF0ZV90eXBlOwoKICAgICAgc3RhdGljIHZvaWQKICAgICAgYXNzaWduKGNoYXJfdHlwZSYgX19j
MSwgY29uc3QgY2hhcl90eXBlJiBfX2MyKSBub2V4Y2VwdAogICAgICB7IF9fYzEgPSBfX2MyOyB9
CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wKICAgICAgZXEoY29uc3QgY2hhcl90eXBlJiBf
X2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fYzEg
PT0gX19jMjsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sCiAgICAgIGx0KGNvbnN0IGNo
YXJfdHlwZSYgX19jMSwgY29uc3QgY2hhcl90eXBlJiBfX2MyKSBub2V4Y2VwdAogICAgICB7IHJl
dHVybiBfX2MxIDwgX19jMjsgfQoKICAgICAgc3RhdGljIGludAogICAgICBjb21wYXJlKGNvbnN0
IGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBzaXplX3QgX19uKQogICAg
ICB7CiBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBfX247ICsrX19pKQogICBpZiAobHQoX19z
MVtfX2ldLCBfX3MyW19faV0pKQogICAgIHJldHVybiAtMTsKICAgZWxzZSBpZiAobHQoX19zMltf
X2ldLCBfX3MxW19faV0pKQogICAgIHJldHVybiAxOwogcmV0dXJuIDA7CiAgICAgIH0KCiAgICAg
IHN0YXRpYyBzaXplX3QKICAgICAgbGVuZ3RoKGNvbnN0IGNoYXJfdHlwZSogX19zKQogICAgICB7
CiBzaXplX3QgX19pID0gMDsKIHdoaWxlICghZXEoX19zW19faV0sIGNoYXJfdHlwZSgpKSkKICAg
KytfX2k7CiByZXR1cm4gX19pOwogICAgICB9CgogICAgICBzdGF0aWMgY29uc3QgY2hhcl90eXBl
KgogICAgICBmaW5kKGNvbnN0IGNoYXJfdHlwZSogX19zLCBzaXplX3QgX19uLCBjb25zdCBjaGFy
X3R5cGUmIF9fYSkKICAgICAgewogZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgX19uOyArK19f
aSkKICAgaWYgKGVxKF9fc1tfX2ldLCBfX2EpKQogICAgIHJldHVybiBfX3MgKyBfX2k7CiByZXR1
cm4gMDsKICAgICAgfQoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgbW92ZShjaGFyX3R5
cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbikKICAgICAgewogcmV0
dXJuIChzdGF0aWNfY2FzdDxjaGFyX3R5cGUqPgogIChfX2J1aWx0aW5fbWVtbW92ZShfX3MxLCBf
X3MyLCBfX24gKiBzaXplb2YoY2hhcl90eXBlKSkpKTsKICAgICAgfQoKICAgICAgc3RhdGljIGNo
YXJfdHlwZSoKICAgICAgY29weShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19z
Miwgc2l6ZV90IF9fbikKICAgICAgewogcmV0dXJuIChzdGF0aWNfY2FzdDxjaGFyX3R5cGUqPgog
IChfX2J1aWx0aW5fbWVtY3B5KF9fczEsIF9fczIsIF9fbiAqIHNpemVvZihjaGFyX3R5cGUpKSkp
OwogICAgICB9CgogICAgICBzdGF0aWMgY2hhcl90eXBlKgogICAgICBhc3NpZ24oY2hhcl90eXBl
KiBfX3MsIHNpemVfdCBfX24sIGNoYXJfdHlwZSBfX2EpCiAgICAgIHsKIGZvciAoc2l6ZV90IF9f
aSA9IDA7IF9faSA8IF9fbjsgKytfX2kpCiAgIGFzc2lnbihfX3NbX19pXSwgX19hKTsKIHJldHVy
biBfX3M7CiAgICAgIH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhcl90eXBlCiAgICAgIHRv
X2NoYXJfdHlwZShjb25zdCBpbnRfdHlwZSYgX19jKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBj
aGFyX3R5cGUoX19jKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnRfdHlwZQogICAgICB0
b19pbnRfdHlwZShjb25zdCBjaGFyX3R5cGUmIF9fYykgbm9leGNlcHQKICAgICAgeyByZXR1cm4g
aW50X3R5cGUoX19jKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sCiAgICAgIGVxX2lu
dF90eXBlKGNvbnN0IGludF90eXBlJiBfX2MxLCBjb25zdCBpbnRfdHlwZSYgX19jMikgbm9leGNl
cHQKICAgICAgeyByZXR1cm4gX19jMSA9PSBfX2MyOyB9CgogICAgICBzdGF0aWMgY29uc3RleHBy
IGludF90eXBlCiAgICAgIGVvZigpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0
PGludF90eXBlPigtMSk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50X3R5cGUKICAgICAg
bm90X2VvZihjb25zdCBpbnRfdHlwZSYgX19jKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBlcV9p
bnRfdHlwZShfX2MsIGVvZigpKSA/IDAgOiBfX2M7IH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAg
IHN0cnVjdCBjaGFyX3RyYWl0czxjaGFyMzJfdD4KICAgIHsKICAgICAgdHlwZWRlZiBjaGFyMzJf
dCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgdWludF9sZWFzdDMyX3QgaW50X3R5cGU7CiAgICAg
IHR5cGVkZWYgc3RyZWFtb2ZmIG9mZl90eXBlOwogICAgICB0eXBlZGVmIHUzMnN0cmVhbXBvcyBw
b3NfdHlwZTsKICAgICAgdHlwZWRlZiBtYnN0YXRlX3Qgc3RhdGVfdHlwZTsKCiAgICAgIHN0YXRp
YyB2b2lkCiAgICAgIGFzc2lnbihjaGFyX3R5cGUmIF9fYzEsIGNvbnN0IGNoYXJfdHlwZSYgX19j
Mikgbm9leGNlcHQKICAgICAgeyBfX2MxID0gX19jMjsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sCiAgICAgIGVxKGNvbnN0IGNoYXJfdHlwZSYgX19jMSwgY29uc3QgY2hhcl90eXBlJiBf
X2MyKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfX2MxID09IF9fYzI7IH0KCiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbAogICAgICBsdChjb25zdCBjaGFyX3R5cGUmIF9fYzEsIGNvbnN0IGNo
YXJfdHlwZSYgX19jMikgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX19jMSA8IF9fYzI7IH0KCiAg
ICAgIHN0YXRpYyBpbnQKICAgICAgY29tcGFyZShjb25zdCBjaGFyX3R5cGUqIF9fczEsIGNvbnN0
IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbikKICAgICAgewogZm9yIChzaXplX3QgX19pID0g
MDsgX19pIDwgX19uOyArK19faSkKICAgaWYgKGx0KF9fczFbX19pXSwgX19zMltfX2ldKSkKICAg
ICByZXR1cm4gLTE7CiAgIGVsc2UgaWYgKGx0KF9fczJbX19pXSwgX19zMVtfX2ldKSkKICAgICBy
ZXR1cm4gMTsKIHJldHVybiAwOwogICAgICB9CgogICAgICBzdGF0aWMgc2l6ZV90CiAgICAgIGxl
bmd0aChjb25zdCBjaGFyX3R5cGUqIF9fcykKICAgICAgewogc2l6ZV90IF9faSA9IDA7CiB3aGls
ZSAoIWVxKF9fc1tfX2ldLCBjaGFyX3R5cGUoKSkpCiAgICsrX19pOwogcmV0dXJuIF9faTsKICAg
ICAgfQoKICAgICAgc3RhdGljIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZmluZChjb25zdCBjaGFy
X3R5cGUqIF9fcywgc2l6ZV90IF9fbiwgY29uc3QgY2hhcl90eXBlJiBfX2EpCiAgICAgIHsKIGZv
ciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IF9fbjsgKytfX2kpCiAgIGlmIChlcShfX3NbX19pXSwg
X19hKSkKICAgICByZXR1cm4gX19zICsgX19pOwogcmV0dXJuIDA7CiAgICAgIH0KCiAgICAgIHN0
YXRpYyBjaGFyX3R5cGUqCiAgICAgIG1vdmUoY2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5
cGUqIF9fczIsIHNpemVfdCBfX24pCiAgICAgIHsKIHJldHVybiAoc3RhdGljX2Nhc3Q8Y2hhcl90
eXBlKj4KICAoX19idWlsdGluX21lbW1vdmUoX19zMSwgX19zMiwgX19uICogc2l6ZW9mKGNoYXJf
dHlwZSkpKSk7CiAgICAgIH0KCiAgICAgIHN0YXRpYyBjaGFyX3R5cGUqCiAgICAgIGNvcHkoY2hh
cl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5cGUqIF9fczIsIHNpemVfdCBfX24pCiAgICAgIHsK
IHJldHVybiAoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlKj4KICAoX19idWlsdGluX21lbWNweShfX3Mx
LCBfX3MyLCBfX24gKiBzaXplb2YoY2hhcl90eXBlKSkpKTsKICAgICAgfQoKICAgICAgc3RhdGlj
IGNoYXJfdHlwZSoKICAgICAgYXNzaWduKGNoYXJfdHlwZSogX19zLCBzaXplX3QgX19uLCBjaGFy
X3R5cGUgX19hKQogICAgICB7CiBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBfX247ICsrX19p
KQogICBhc3NpZ24oX19zW19faV0sIF9fYSk7CiByZXR1cm4gX19zOwogICAgICB9CgogICAgICBz
dGF0aWMgY29uc3RleHByIGNoYXJfdHlwZQogICAgICB0b19jaGFyX3R5cGUoY29uc3QgaW50X3R5
cGUmIF9fYykgbm9leGNlcHQKICAgICAgeyByZXR1cm4gY2hhcl90eXBlKF9fYyk7IH0KCiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50X3R5cGUKICAgICAgdG9faW50X3R5cGUoY29uc3QgY2hhcl90
eXBlJiBfX2MpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGludF90eXBlKF9fYyk7IH0KCiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbAogICAgICBlcV9pbnRfdHlwZShjb25zdCBpbnRfdHlwZSYg
X19jMSwgY29uc3QgaW50X3R5cGUmIF9fYzIpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fYzEg
PT0gX19jMjsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnRfdHlwZQogICAgICBlb2YoKSBu
b2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnRfdHlwZT4oLTEpOyB9CgogICAg
ICBzdGF0aWMgY29uc3RleHByIGludF90eXBlCiAgICAgIG5vdF9lb2YoY29uc3QgaW50X3R5cGUm
IF9fYykgbm9leGNlcHQKICAgICAgeyByZXR1cm4gZXFfaW50X3R5cGUoX19jLCBlb2YoKSkgPyAw
IDogX19jOyB9CiAgICB9OwoKCn0KIyA0MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9zdHJpbmciIDIgMwoKCiMgMSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZWZ3
ZC5oIiAxIDMKIyAzNSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZWZ3ZC5oIiAzCiNkZWZpbmUgX0xPQ0FMRV9GV0RfSCAx
CgogICAgICAgCiMgMzggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVmd2QuaCIgMwoKCiMgMSAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvYml0cy9jKytsb2NhbGUuaCIgMSAzCiMgMzcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2JpdHMvYysrbG9jYWxlLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9DWFhfTE9DQUxFX0ggMQoK
ICAgICAgIAojIDQwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL2MrK2xvY2FsZS5oIiAz
CgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvY2xvY2FsZSIgMSAzCiMgMzkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvY2xvY2FsZSIgMwogICAgICAgCiMgNDAgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvY2xvY2FsZSIg
MwoKCiMgMSAiL3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAxIDMgNAojIDIzICIvdXNyL2luY2x1ZGUv
bG9jYWxlLmgiIDMgNAojZGVmaW5lIF9MT0NBTEVfSCAxCgoKCiNkZWZpbmUgX19uZWVkX05VTEwg
CiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4z
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMzk3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBO
VUxMCgojZGVmaW5lIE5VTEwgX19udWxsCiMgNDA4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBf
X25lZWRfTlVMTAojIDI5ICIvdXNyL2luY2x1ZGUvbG9jYWxlLmgiIDIgMyA0CiMgMSAiL3Vzci9p
bmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9sb2NhbGUuaCIgMSAzIDQKIyAyNCAiL3Vz
ci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9sb2NhbGUuaCIgMyA0CiNkZWZpbmUg
X0JJVFNfTE9DQUxFX0ggMQoKI2RlZmluZSBfX0xDX0NUWVBFIDAKI2RlZmluZSBfX0xDX05VTUVS
SUMgMQojZGVmaW5lIF9fTENfVElNRSAyCiNkZWZpbmUgX19MQ19DT0xMQVRFIDMKI2RlZmluZSBf
X0xDX01PTkVUQVJZIDQKI2RlZmluZSBfX0xDX01FU1NBR0VTIDUKI2RlZmluZSBfX0xDX0FMTCA2
CiNkZWZpbmUgX19MQ19QQVBFUiA3CiNkZWZpbmUgX19MQ19OQU1FIDgKI2RlZmluZSBfX0xDX0FE
RFJFU1MgOQojZGVmaW5lIF9fTENfVEVMRVBIT05FIDEwCiNkZWZpbmUgX19MQ19NRUFTVVJFTUVO
VCAxMQojZGVmaW5lIF9fTENfSURFTlRJRklDQVRJT04gMTIKIyAzMCAiL3Vzci9pbmNsdWRlL2xv
Y2FsZS5oIiAyIDMgNAoKZXh0ZXJuICJDIiB7CgoKCiNkZWZpbmUgTENfQ1RZUEUgX19MQ19DVFlQ
RQojZGVmaW5lIExDX05VTUVSSUMgX19MQ19OVU1FUklDCiNkZWZpbmUgTENfVElNRSBfX0xDX1RJ
TUUKI2RlZmluZSBMQ19DT0xMQVRFIF9fTENfQ09MTEFURQojZGVmaW5lIExDX01PTkVUQVJZIF9f
TENfTU9ORVRBUlkKI2RlZmluZSBMQ19NRVNTQUdFUyBfX0xDX01FU1NBR0VTCiNkZWZpbmUgTENf
QUxMIF9fTENfQUxMCiNkZWZpbmUgTENfUEFQRVIgX19MQ19QQVBFUgojZGVmaW5lIExDX05BTUUg
X19MQ19OQU1FCiNkZWZpbmUgTENfQUREUkVTUyBfX0xDX0FERFJFU1MKI2RlZmluZSBMQ19URUxF
UEhPTkUgX19MQ19URUxFUEhPTkUKI2RlZmluZSBMQ19NRUFTVVJFTUVOVCBfX0xDX01FQVNVUkVN
RU5UCiNkZWZpbmUgTENfSURFTlRJRklDQVRJT04gX19MQ19JREVOVElGSUNBVElPTgoKCgoKCnN0
cnVjdCBsY29udgp7CgoKICBjaGFyICpkZWNpbWFsX3BvaW50OwogIGNoYXIgKnRob3VzYW5kc19z
ZXA7CgoKCgoKICBjaGFyICpncm91cGluZzsKCgoKCgogIGNoYXIgKmludF9jdXJyX3N5bWJvbDsK
ICBjaGFyICpjdXJyZW5jeV9zeW1ib2w7CiAgY2hhciAqbW9uX2RlY2ltYWxfcG9pbnQ7CiAgY2hh
ciAqbW9uX3Rob3VzYW5kc19zZXA7CiAgY2hhciAqbW9uX2dyb3VwaW5nOwogIGNoYXIgKnBvc2l0
aXZlX3NpZ247CiAgY2hhciAqbmVnYXRpdmVfc2lnbjsKICBjaGFyIGludF9mcmFjX2RpZ2l0czsK
ICBjaGFyIGZyYWNfZGlnaXRzOwoKICBjaGFyIHBfY3NfcHJlY2VkZXM7CgogIGNoYXIgcF9zZXBf
Ynlfc3BhY2U7CgogIGNoYXIgbl9jc19wcmVjZWRlczsKCiAgY2hhciBuX3NlcF9ieV9zcGFjZTsK
CgoKCgoKICBjaGFyIHBfc2lnbl9wb3NuOwogIGNoYXIgbl9zaWduX3Bvc247CgoKICBjaGFyIGlu
dF9wX2NzX3ByZWNlZGVzOwoKICBjaGFyIGludF9wX3NlcF9ieV9zcGFjZTsKCiAgY2hhciBpbnRf
bl9jc19wcmVjZWRlczsKCiAgY2hhciBpbnRfbl9zZXBfYnlfc3BhY2U7CgoKCgoKCiAgY2hhciBp
bnRfcF9zaWduX3Bvc247CiAgY2hhciBpbnRfbl9zaWduX3Bvc247CiMgMTIwICIvdXNyL2luY2x1
ZGUvbG9jYWxlLmgiIDMgNAp9OwoKCgpleHRlcm4gY2hhciAqc2V0bG9jYWxlIChpbnQgX19jYXRl
Z29yeSwgY29uc3QgY2hhciAqX19sb2NhbGUpIHRocm93ICgpOwoKCmV4dGVybiBzdHJ1Y3QgbGNv
bnYgKmxvY2FsZWNvbnYgKHZvaWQpIHRocm93ICgpOwoKCiMgMTUxICIvdXNyL2luY2x1ZGUvbG9j
YWxlLmgiIDMgNApleHRlcm4gX19sb2NhbGVfdCBuZXdsb2NhbGUgKGludCBfX2NhdGVnb3J5X21h
c2ssIGNvbnN0IGNoYXIgKl9fbG9jYWxlLAogICAgICAgIF9fbG9jYWxlX3QgX19iYXNlKSB0aHJv
dyAoKTsKCgoKCgojZGVmaW5lIExDX0NUWVBFX01BU0sgKDEgPDwgX19MQ19DVFlQRSkKI2RlZmlu
ZSBMQ19OVU1FUklDX01BU0sgKDEgPDwgX19MQ19OVU1FUklDKQojZGVmaW5lIExDX1RJTUVfTUFT
SyAoMSA8PCBfX0xDX1RJTUUpCiNkZWZpbmUgTENfQ09MTEFURV9NQVNLICgxIDw8IF9fTENfQ09M
TEFURSkKI2RlZmluZSBMQ19NT05FVEFSWV9NQVNLICgxIDw8IF9fTENfTU9ORVRBUlkpCiNkZWZp
bmUgTENfTUVTU0FHRVNfTUFTSyAoMSA8PCBfX0xDX01FU1NBR0VTKQojZGVmaW5lIExDX1BBUEVS
X01BU0sgKDEgPDwgX19MQ19QQVBFUikKI2RlZmluZSBMQ19OQU1FX01BU0sgKDEgPDwgX19MQ19O
QU1FKQojZGVmaW5lIExDX0FERFJFU1NfTUFTSyAoMSA8PCBfX0xDX0FERFJFU1MpCiNkZWZpbmUg
TENfVEVMRVBIT05FX01BU0sgKDEgPDwgX19MQ19URUxFUEhPTkUpCiNkZWZpbmUgTENfTUVBU1VS
RU1FTlRfTUFTSyAoMSA8PCBfX0xDX01FQVNVUkVNRU5UKQojZGVmaW5lIExDX0lERU5USUZJQ0FU
SU9OX01BU0sgKDEgPDwgX19MQ19JREVOVElGSUNBVElPTikKI2RlZmluZSBMQ19BTExfTUFTSyAo
TENfQ1RZUEVfTUFTSyB8IExDX05VTUVSSUNfTUFTSyB8IExDX1RJTUVfTUFTSyB8IExDX0NPTExB
VEVfTUFTSyB8IExDX01PTkVUQVJZX01BU0sgfCBMQ19NRVNTQUdFU19NQVNLIHwgTENfUEFQRVJf
TUFTSyB8IExDX05BTUVfTUFTSyB8IExDX0FERFJFU1NfTUFTSyB8IExDX1RFTEVQSE9ORV9NQVNL
IHwgTENfTUVBU1VSRU1FTlRfTUFTSyB8IExDX0lERU5USUZJQ0FUSU9OX01BU0sgKQojIDE4NiAi
L3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAzIDQKZXh0ZXJuIF9fbG9jYWxlX3QgZHVwbG9jYWxlIChf
X2xvY2FsZV90IF9fZGF0YXNldCkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGZyZWVsb2NhbGUg
KF9fbG9jYWxlX3QgX19kYXRhc2V0KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIF9fbG9jYWxlX3Qg
dXNlbG9jYWxlIChfX2xvY2FsZV90IF9fZGF0YXNldCkgdGhyb3cgKCk7CgoKCiNkZWZpbmUgTENf
R0xPQkFMX0xPQ0FMRSAoKF9fbG9jYWxlX3QpIC0xTCkKCgoKfQojIDQzICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Nsb2NhbGUiIDIgMwoK
CiNkZWZpbmUgX0dMSUJDWFhfQ0xPQ0FMRSAxCgoKI3VuZGVmIHNldGxvY2FsZQojdW5kZWYgbG9j
YWxlY29udgoKbmFtZXNwYWNlIHN0ZAp7CiAgdXNpbmcgOjpsY29udjsKICB1c2luZyA6OnNldGxv
Y2FsZTsKICB1c2luZyA6OmxvY2FsZWNvbnY7Cn0KIyA0MiAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvYml0cy9jKytsb2NhbGUuaCIgMiAzCgojZGVmaW5lIF9HTElCQ1hYX0NfTE9DQUxFX0dOVSAx
CgojZGVmaW5lIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTIDYKCgpuYW1lc3BhY2UgX19nbnVfY3h4
IF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgogIGV4dGVy
biAiQyIgX190eXBlb2YodXNlbG9jYWxlKSBfX3VzZWxvY2FsZTsKCgp9CgoKbmFtZXNwYWNlIHN0
ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKICB0eXBl
ZGVmIF9fbG9jYWxlX3QgX19jX2xvY2FsZTsKCgoKCgogIGlubGluZSBpbnQKICBfX2NvbnZlcnRf
ZnJvbV92KGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf
XykpLAogICAgIGNoYXIqIF9fb3V0LAogICAgIGNvbnN0IGludCBfX3NpemUgX19hdHRyaWJ1dGVf
XyAoKF9fdW51c2VkX18pKSwKICAgICBjb25zdCBjaGFyKiBfX2ZtdCwgLi4uKQogIHsKCiAgICBf
X2NfbG9jYWxlIF9fb2xkID0gX19nbnVfY3h4OjpfX3VzZWxvY2FsZShfX2Nsb2MpOwojIDg4ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL2MrK2xvY2FsZS5oIiAzCiAgICBfX2J1aWx0aW5f
dmFfbGlzdCBfX2FyZ3M7CiAgICBfX2J1aWx0aW5fdmFfc3RhcnQoX19hcmdzLCBfX2ZtdCk7CgoK
ICAgIGNvbnN0IGludCBfX3JldCA9IF9fYnVpbHRpbl92c25wcmludGYoX19vdXQsIF9fc2l6ZSwg
X19mbXQsIF9fYXJncyk7CgoKCgogICAgX19idWlsdGluX3ZhX2VuZChfX2FyZ3MpOwoKCiAgICBf
X2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fb2xkKTsKCgoKCgoKCiAgICByZXR1cm4gX19yZXQ7CiAg
fQoKCn0KIyA0MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL2xvY2FsZWZ3ZC5oIiAyIDMKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9jY3R5cGUiIDEgMwojIDM5ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Nj
dHlwZSIgMwogICAgICAgCiMgNDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvY2N0eXBlIiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvY3R5cGUu
aCIgMSAzIDQKIyAyMyAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMgNAojZGVmaW5lIF9DVFlQRV9I
IDEKCgoKCmV4dGVybiAiQyIgewojIDQzICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMyA0CiNkZWZp
bmUgX0lTYml0KGJpdCkgKChiaXQpIDwgOCA/ICgoMSA8PCAoYml0KSkgPDwgOCkgOiAoKDEgPDwg
KGJpdCkpID4+IDgpKQoKCmVudW0KewogIF9JU3VwcGVyID0gKCgwKSA8IDggPyAoKDEgPDwgKDAp
KSA8PCA4KSA6ICgoMSA8PCAoMCkpID4+IDgpKSwKICBfSVNsb3dlciA9ICgoMSkgPCA4ID8gKCgx
IDw8ICgxKSkgPDwgOCkgOiAoKDEgPDwgKDEpKSA+PiA4KSksCiAgX0lTYWxwaGEgPSAoKDIpIDwg
OCA/ICgoMSA8PCAoMikpIDw8IDgpIDogKCgxIDw8ICgyKSkgPj4gOCkpLAogIF9JU2RpZ2l0ID0g
KCgzKSA8IDggPyAoKDEgPDwgKDMpKSA8PCA4KSA6ICgoMSA8PCAoMykpID4+IDgpKSwKICBfSVN4
ZGlnaXQgPSAoKDQpIDwgOCA/ICgoMSA8PCAoNCkpIDw8IDgpIDogKCgxIDw8ICg0KSkgPj4gOCkp
LAogIF9JU3NwYWNlID0gKCg1KSA8IDggPyAoKDEgPDwgKDUpKSA8PCA4KSA6ICgoMSA8PCAoNSkp
ID4+IDgpKSwKICBfSVNwcmludCA9ICgoNikgPCA4ID8gKCgxIDw8ICg2KSkgPDwgOCkgOiAoKDEg
PDwgKDYpKSA+PiA4KSksCiAgX0lTZ3JhcGggPSAoKDcpIDwgOCA/ICgoMSA8PCAoNykpIDw8IDgp
IDogKCgxIDw8ICg3KSkgPj4gOCkpLAogIF9JU2JsYW5rID0gKCg4KSA8IDggPyAoKDEgPDwgKDgp
KSA8PCA4KSA6ICgoMSA8PCAoOCkpID4+IDgpKSwKICBfSVNjbnRybCA9ICgoOSkgPCA4ID8gKCgx
IDw8ICg5KSkgPDwgOCkgOiAoKDEgPDwgKDkpKSA+PiA4KSksCiAgX0lTcHVuY3QgPSAoKDEwKSA8
IDggPyAoKDEgPDwgKDEwKSkgPDwgOCkgOiAoKDEgPDwgKDEwKSkgPj4gOCkpLAogIF9JU2FsbnVt
ID0gKCgxMSkgPCA4ID8gKCgxIDw8ICgxMSkpIDw8IDgpIDogKCgxIDw8ICgxMSkpID4+IDgpKQp9
OwojIDc5ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMyA0CmV4dGVybiBjb25zdCB1bnNpZ25lZCBz
aG9ydCBpbnQgKipfX2N0eXBlX2JfbG9jICh2b2lkKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGNvbnN0IF9faW50MzJfdCAqKl9fY3R5cGVfdG9sb3dl
cl9sb2MgKHZvaWQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpl
eHRlcm4gY29uc3QgX19pbnQzMl90ICoqX19jdHlwZV90b3VwcGVyX2xvYyAodm9pZCkKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCiNkZWZpbmUgX19pc2N0
eXBlX2YodHlwZSkgX19leHRlcm5faW5saW5lIGludCBpcyAjI3R5cGUgKGludCBfX2MpIF9fVEhS
T1cgeyByZXR1cm4gKCpfX2N0eXBlX2JfbG9jICgpKVsoaW50KSAoX19jKV0gJiAodW5zaWduZWQg
c2hvcnQgaW50KSBfSVMgIyN0eXBlOyB9CgoKCgoKCgojZGVmaW5lIF9faXNhc2NpaShjKSAoKChj
KSAmIH4weDdmKSA9PSAwKQojZGVmaW5lIF9fdG9hc2NpaShjKSAoKGMpICYgMHg3ZikKCiNkZWZp
bmUgX19leGN0eXBlKG5hbWUpIGV4dGVybiBpbnQgbmFtZSAoaW50KSBfX1RIUk9XCgoKCgoKCgpl
eHRlcm4gaW50IGlzYWxudW0gKGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXNhbHBoYSAoaW50
KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc2NudHJsIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50
IGlzZGlnaXQgKGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXNsb3dlciAoaW50KSB0aHJvdyAo
KTsKZXh0ZXJuIGludCBpc2dyYXBoIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzcHJpbnQg
KGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXNwdW5jdCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJu
IGludCBpc3NwYWNlIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzdXBwZXIgKGludCkgdGhy
b3cgKCk7CmV4dGVybiBpbnQgaXN4ZGlnaXQgKGludCkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQg
dG9sb3dlciAoaW50IF9fYykgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCB0b3VwcGVyIChpbnQgX19j
KSB0aHJvdyAoKTsKCgoKCgoKCgpleHRlcm4gaW50IGlzYmxhbmsgKGludCkgdGhyb3cgKCk7CgoK
CgoKCmV4dGVybiBpbnQgaXNjdHlwZSAoaW50IF9fYywgaW50IF9fbWFzaykgdGhyb3cgKCk7CgoK
CgoKCmV4dGVybiBpbnQgaXNhc2NpaSAoaW50IF9fYykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQg
dG9hc2NpaSAoaW50IF9fYykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgX3RvdXBwZXIgKGludCkg
dGhyb3cgKCk7CmV4dGVybiBpbnQgX3RvbG93ZXIgKGludCkgdGhyb3cgKCk7CgoKCiNkZWZpbmUg
X190b2JvZHkoYyxmLGEsYXJncykgKF9fZXh0ZW5zaW9uX18gKHsgaW50IF9fcmVzOyBpZiAoc2l6
ZW9mIChjKSA+IDEpIHsgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wIChjKSkgeyBpbnQgX19jID0g
KGMpOyBfX3JlcyA9IF9fYyA8IC0xMjggfHwgX19jID4gMjU1ID8gX19jIDogKGEpW19fY107IH0g
ZWxzZSBfX3JlcyA9IGYgYXJnczsgfSBlbHNlIF9fcmVzID0gKGEpWyhpbnQpIChjKV07IF9fcmVz
OyB9KSkKIyAyNjEgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQKI2RlZmluZSBfX2lzY3R5cGVf
bChjLHR5cGUsbG9jYWxlKSAoKGxvY2FsZSktPl9fY3R5cGVfYlsoaW50KSAoYyldICYgKHVuc2ln
bmVkIHNob3J0IGludCkgdHlwZSkKCgojZGVmaW5lIF9fZXhjdHlwZV9sKG5hbWUpIGV4dGVybiBp
bnQgbmFtZSAoaW50LCBfX2xvY2FsZV90KSBfX1RIUk9XCgoKCgoKCmV4dGVybiBpbnQgaXNhbG51
bV9sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwpleHRlcm4gaW50IGlzYWxwaGFfbCAoaW50
LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc2NudHJsX2wgKGludCwgX19sb2Nh
bGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXNkaWdpdF9sIChpbnQsIF9fbG9jYWxlX3QpIHRo
cm93ICgpOwpleHRlcm4gaW50IGlzbG93ZXJfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsK
ZXh0ZXJuIGludCBpc2dyYXBoX2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBp
bnQgaXNwcmludF9sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwpleHRlcm4gaW50IGlzcHVu
Y3RfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3NwYWNlX2wgKGlu
dCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXN1cHBlcl9sIChpbnQsIF9fbG9j
YWxlX3QpIHRocm93ICgpOwpleHRlcm4gaW50IGlzeGRpZ2l0X2wgKGludCwgX19sb2NhbGVfdCkg
dGhyb3cgKCk7CgpleHRlcm4gaW50IGlzYmxhbmtfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGludCBfX3RvbG93ZXJfbCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIHRo
cm93ICgpOwpleHRlcm4gaW50IHRvbG93ZXJfbCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIHRo
cm93ICgpOwoKCmV4dGVybiBpbnQgX190b3VwcGVyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19s
KSB0aHJvdyAoKTsKZXh0ZXJuIGludCB0b3VwcGVyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19s
KSB0aHJvdyAoKTsKIyAzNDcgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQKfQojIDQzICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2NjdHlw
ZSIgMiAzCgoKI2RlZmluZSBfR0xJQkNYWF9DQ1RZUEUgMQoKCiN1bmRlZiBpc2FsbnVtCiN1bmRl
ZiBpc2FscGhhCiN1bmRlZiBpc2NudHJsCiN1bmRlZiBpc2RpZ2l0CiN1bmRlZiBpc2dyYXBoCiN1
bmRlZiBpc2xvd2VyCiN1bmRlZiBpc3ByaW50CiN1bmRlZiBpc3B1bmN0CiN1bmRlZiBpc3NwYWNl
CiN1bmRlZiBpc3VwcGVyCiN1bmRlZiBpc3hkaWdpdAojdW5kZWYgdG9sb3dlcgojdW5kZWYgdG91
cHBlcgoKbmFtZXNwYWNlIHN0ZAp7CiAgdXNpbmcgOjppc2FsbnVtOwogIHVzaW5nIDo6aXNhbHBo
YTsKICB1c2luZyA6OmlzY250cmw7CiAgdXNpbmcgOjppc2RpZ2l0OwogIHVzaW5nIDo6aXNncmFw
aDsKICB1c2luZyA6OmlzbG93ZXI7CiAgdXNpbmcgOjppc3ByaW50OwogIHVzaW5nIDo6aXNwdW5j
dDsKICB1c2luZyA6Omlzc3BhY2U7CiAgdXNpbmcgOjppc3VwcGVyOwogIHVzaW5nIDo6aXN4ZGln
aXQ7CiAgdXNpbmcgOjp0b2xvd2VyOwogIHVzaW5nIDo6dG91cHBlcjsKfQoKCgoKCiN1bmRlZiBp
c2JsYW5rCgpuYW1lc3BhY2Ugc3RkCnsKICB1c2luZyA6OmlzYmxhbms7Cn0KIyA0MyAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xv
Y2FsZWZ3ZC5oIiAyIDMKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0
eV9fICgiZGVmYXVsdCIpKSkKewoKIyA1NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZWZ3ZC5oIiAzCiAgY2xhc3MgbG9j
YWxlOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRmFjZXQ+CiAgICBib29sCiAgICBoYXNfZmFjZXQo
Y29uc3QgbG9jYWxlJikgdGhyb3coKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZhY2V0PgogICAg
Y29uc3QgX0ZhY2V0JgogICAgdXNlX2ZhY2V0KGNvbnN0IGxvY2FsZSYpOwoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJUPgogICAgYm9vbAogICAgaXNzcGFjZShfQ2hhclQsIGNvbnN0IGxvY2Fs
ZSYpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBib29sCiAgICBpc3ByaW50KF9D
aGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGJv
b2wKICAgIGlzY250cmwoX0NoYXJULCBjb25zdCBsb2NhbGUmKTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJUPgogICAgYm9vbAogICAgaXN1cHBlcihfQ2hhclQsIGNvbnN0IGxvY2FsZSYpOwoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBib29sCiAgICBpc2xvd2VyKF9DaGFyVCwg
Y29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGJvb2wKICAg
IGlzYWxwaGEoX0NoYXJULCBjb25zdCBsb2NhbGUmKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJUPgogICAgYm9vbAogICAgaXNkaWdpdChfQ2hhclQsIGNvbnN0IGxvY2FsZSYpOwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBib29sCiAgICBpc3B1bmN0KF9DaGFyVCwgY29uc3Qg
bG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGJvb2wKICAgIGlzeGRp
Z2l0KF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4K
ICAgIGJvb2wKICAgIGlzYWxudW0oX0NoYXJULCBjb25zdCBsb2NhbGUmKTsKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJUPgogICAgYm9vbAogICAgaXNncmFwaChfQ2hhclQsIGNvbnN0IGxvY2Fs
ZSYpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBfQ2hhclQKICAgIHRvdXBwZXIo
X0NoYXJULCBjb25zdCBsb2NhbGUmKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAg
X0NoYXJUCiAgICB0b2xvd2VyKF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgoKICBjbGFzcyBjdHlw
ZV9iYXNlOwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGNsYXNzIGN0eXBlOwogIHRl
bXBsYXRlPD4gY2xhc3MgY3R5cGU8Y2hhcj47CgogIHRlbXBsYXRlPD4gY2xhc3MgY3R5cGU8d2No
YXJfdD47CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGNsYXNzIGN0eXBlX2J5bmFt
ZTsKCgogIGNsYXNzIGNvZGVjdnRfYmFzZTsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50ZXJuVCwg
dHlwZW5hbWUgX0V4dGVyblQsIHR5cGVuYW1lIF9TdGF0ZVQ+CiAgICBjbGFzcyBjb2RlY3Z0Owog
IHRlbXBsYXRlPD4gY2xhc3MgY29kZWN2dDxjaGFyLCBjaGFyLCBtYnN0YXRlX3Q+OwoKICB0ZW1w
bGF0ZTw+IGNsYXNzIGNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgbWJzdGF0ZV90PjsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0ludGVyblQsIHR5cGVuYW1lIF9FeHRlcm5ULCB0eXBlbmFtZSBfU3RhdGVU
PgogICAgY2xhc3MgY29kZWN2dF9ieW5hbWU7CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfSW5JdGVyID0gaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNs
YXNzIG51bV9nZXQ7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRl
ciA9IG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiA+CiAgICBjbGFzcyBudW1fcHV0OwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+IGNsYXNzIG51bXB1bmN0OwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVD4gY2xhc3MgbnVtcHVuY3RfYnluYW1lOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJUPgogICAgY2xhc3MgY29sbGF0ZTsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+IGNs
YXNzCiAgICBjb2xsYXRlX2J5bmFtZTsKCgogIGNsYXNzIHRpbWVfYmFzZTsKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXIgPSBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9D
aGFyVD4gPgogICAgY2xhc3MgdGltZV9nZXQ7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfSW5JdGVyID0gaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNz
IHRpbWVfZ2V0X2J5bmFtZTsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9P
dXRJdGVyID0gb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIHRpbWVfcHV0
OwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX091dEl0ZXIgPSBvc3RyZWFt
YnVmX2l0ZXJhdG9yPF9DaGFyVD4gPgogICAgY2xhc3MgdGltZV9wdXRfYnluYW1lOwoKCiAgY2xh
c3MgbW9uZXlfYmFzZTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5J
dGVyID0gaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIG1vbmV5X2dldDsK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyID0gb3N0cmVhbWJ1
Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIG1vbmV5X3B1dDsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCBib29sIF9JbnRsID0gZmFsc2U+CiAgICBjbGFzcyBtb25leXB1bmN0Owog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgYm9vbCBfSW50bCA9IGZhbHNlPgogICAgY2xhc3Mg
bW9uZXlwdW5jdF9ieW5hbWU7CgoKICBjbGFzcyBtZXNzYWdlc19iYXNlOwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVD4KICAgIGNsYXNzIG1lc3NhZ2VzOwogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVD4KICAgIGNsYXNzIG1lc3NhZ2VzX2J5bmFtZTsKCgp9CiMgNDQgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvc3RyaW5nIiAyIDMKIyAx
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvb3N0cmVhbV9pbnNlcnQuaCIgMSAzCiMgMzEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9vc3RyZWFtX2luc2VydC5oIiAz
CiNkZWZpbmUgX09TVFJFQU1fSU5TRVJUX0ggMQoKICAgICAgIAojIDM0ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvb3N0cmVhbV9p
bnNlcnQuaCIgMwoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL2N4eGFiaV9mb3JjZWQuaCIgMSAzCiMgMzIgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9jeHhh
YmlfZm9yY2VkLmgiIDMKI2RlZmluZSBfQ1hYQUJJX0ZPUkNFRF9IIDEKCiAgICAgICAKIyAzNSAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9i
aXRzL2N4eGFiaV9mb3JjZWQuaCIgMwoKI3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwdXNoKGRlZmF1
bHQpCgoKbmFtZXNwYWNlIF9fY3h4YWJpdjEKewoKCgoKCgoKICBjbGFzcyBfX2ZvcmNlZF91bndp
bmQKICB7CiAgICB2aXJ0dWFsIH5fX2ZvcmNlZF91bndpbmQoKSB0aHJvdygpOwoKCiAgICB2aXJ0
dWFsIHZvaWQgX19wdXJlX2R1bW15KCkgPSAwOwogIH07Cn0KCgojcHJhZ21hIEdDQyB2aXNpYmls
aXR5IHBvcAojIDM3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2JpdHMvb3N0cmVhbV9pbnNlcnQuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkIF9f
YXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGlubGluZSB2b2lkCiAgICBf
X29zdHJlYW1fd3JpdGUoYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX291dCwKICAg
ICAgY29uc3QgX0NoYXJUKiBfX3MsIHN0cmVhbXNpemUgX19uKQogICAgewogICAgICB0eXBlZGVm
IGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsKICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAg
IGNvbnN0IHN0cmVhbXNpemUgX19wdXQgPSBfX291dC5yZGJ1ZigpLT5zcHV0bihfX3MsIF9fbik7
CiAgICAgIGlmIChfX3B1dCAhPSBfX24pCiBfX291dC5zZXRzdGF0ZShfX2lvc19iYXNlOjpiYWRi
aXQpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+
CiAgICBpbmxpbmUgdm9pZAogICAgX19vc3RyZWFtX2ZpbGwoYmFzaWNfb3N0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+JiBfX291dCwgc3RyZWFtc2l6ZSBfX24pCiAgICB7CiAgICAgIHR5cGVkZWYgYmFz
aWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9fb3N0cmVhbV90eXBlOwogICAgICB0eXBlZGVm
IHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAgICAgY29u
c3QgX0NoYXJUIF9fYyA9IF9fb3V0LmZpbGwoKTsKICAgICAgZm9yICg7IF9fbiA+IDA7IC0tX19u
KQogewogICBjb25zdCB0eXBlbmFtZSBfVHJhaXRzOjppbnRfdHlwZSBfX3B1dCA9IF9fb3V0LnJk
YnVmKCktPnNwdXRjKF9fYyk7CiAgIGlmIChfVHJhaXRzOjplcV9pbnRfdHlwZShfX3B1dCwgX1Ry
YWl0czo6ZW9mKCkpKQogICAgIHsKICAgICAgIF9fb3V0LnNldHN0YXRlKF9faW9zX2Jhc2U6OmJh
ZGJpdCk7CiAgICAgICBicmVhazsKICAgICB9CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJh
aXRzPiYKICAgIF9fb3N0cmVhbV9pbnNlcnQoYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
JiBfX291dCwKICAgICAgIGNvbnN0IF9DaGFyVCogX19zLCBzdHJlYW1zaXplIF9fbikKICAgIHsK
ICAgICAgdHlwZWRlZiBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5
cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9z
X2Jhc2U7CgogICAgICB0eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6c2VudHJ5IF9fY2VyYihfX291
dCk7CiAgICAgIGlmIChfX2NlcmIpCiB7CiAgIGlmICh0cnVlKQogICAgIHsKICAgICAgIGNvbnN0
IHN0cmVhbXNpemUgX193ID0gX19vdXQud2lkdGgoKTsKICAgICAgIGlmIChfX3cgPiBfX24pCiAg
ewogICAgY29uc3QgYm9vbCBfX2xlZnQgPSAoKF9fb3V0LmZsYWdzKCkKICAgICAmIF9faW9zX2Jh
c2U6OmFkanVzdGZpZWxkKQogICAgICAgICAgID09IF9faW9zX2Jhc2U6OmxlZnQpOwogICAgaWYg
KCFfX2xlZnQpCiAgICAgIF9fb3N0cmVhbV9maWxsKF9fb3V0LCBfX3cgLSBfX24pOwogICAgaWYg
KF9fb3V0Lmdvb2QoKSkKICAgICAgX19vc3RyZWFtX3dyaXRlKF9fb3V0LCBfX3MsIF9fbik7CiAg
ICBpZiAoX19sZWZ0ICYmIF9fb3V0Lmdvb2QoKSkKICAgICAgX19vc3RyZWFtX2ZpbGwoX19vdXQs
IF9fdyAtIF9fbik7CiAgfQogICAgICAgZWxzZQogIF9fb3N0cmVhbV93cml0ZShfX291dCwgX19z
LCBfX24pOwogICAgICAgX19vdXQud2lkdGgoMCk7CiAgICAgfQogICBpZiAoZmFsc2UpCiAgICAg
ewogICAgICAgX19vdXQuX01fc2V0c3RhdGUoX19pb3NfYmFzZTo6YmFkYml0KTsKICAgICAgIDsK
ICAgICB9CiAgIGlmIChmYWxzZSkKICAgICB7IF9fb3V0Ll9NX3NldHN0YXRlKF9faW9zX2Jhc2U6
OmJhZGJpdCk7IH0KIH0KICAgICAgcmV0dXJuIF9fb3V0OwogICAgfQoKCgoKICBleHRlcm4gdGVt
cGxhdGUgb3N0cmVhbSYgX19vc3RyZWFtX2luc2VydChvc3RyZWFtJiwgY29uc3QgY2hhciosIHN0
cmVhbXNpemUpOwoKCiAgZXh0ZXJuIHRlbXBsYXRlIHdvc3RyZWFtJiBfX29zdHJlYW1faW5zZXJ0
KHdvc3RyZWFtJiwgY29uc3Qgd2NoYXJfdCosCiAgICAgICAgICBzdHJlYW1zaXplKTsKCgoKCn0K
IyA0NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9zdHJpbmciIDIgMwoKCgoKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5nZV9hY2Nlc3MuaCIgMSAzCiMgMzEg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
Yml0cy9yYW5nZV9hY2Nlc3MuaCIgMwojZGVmaW5lIF9HTElCQ1hYX1JBTkdFX0FDQ0VTU19IIDEK
CiAgICAgICAKIyAzNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9iaXRzL3JhbmdlX2FjY2Vzcy5oIiAzCgoKCm5hbWVzcGFjZSBzdGQgX19h
dHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCgoKCgoKICB0ZW1w
bGF0ZTxjbGFzcyBfQ29udGFpbmVyPgogICAgaW5saW5lIGF1dG8KICAgIGJlZ2luKF9Db250YWlu
ZXImIF9fY29udCkgLT4gZGVjbHR5cGUoX19jb250LmJlZ2luKCkpCiAgICB7IHJldHVybiBfX2Nv
bnQuYmVnaW4oKTsgfQoKCgoKCgogIHRlbXBsYXRlPGNsYXNzIF9Db250YWluZXI+CiAgICBpbmxp
bmUgYXV0bwogICAgYmVnaW4oY29uc3QgX0NvbnRhaW5lciYgX19jb250KSAtPiBkZWNsdHlwZShf
X2NvbnQuYmVnaW4oKSkKICAgIHsgcmV0dXJuIF9fY29udC5iZWdpbigpOyB9CgoKCgoKCiAgdGVt
cGxhdGU8Y2xhc3MgX0NvbnRhaW5lcj4KICAgIGlubGluZSBhdXRvCiAgICBlbmQoX0NvbnRhaW5l
ciYgX19jb250KSAtPiBkZWNsdHlwZShfX2NvbnQuZW5kKCkpCiAgICB7IHJldHVybiBfX2NvbnQu
ZW5kKCk7IH0KCgoKCgoKICB0ZW1wbGF0ZTxjbGFzcyBfQ29udGFpbmVyPgogICAgaW5saW5lIGF1
dG8KICAgIGVuZChjb25zdCBfQ29udGFpbmVyJiBfX2NvbnQpIC0+IGRlY2x0eXBlKF9fY29udC5l
bmQoKSkKICAgIHsgcmV0dXJuIF9fY29udC5lbmQoKTsgfQoKCgoKCiAgdGVtcGxhdGU8Y2xhc3Mg
X1RwLCBzaXplX3QgX05tPgogICAgaW5saW5lIF9UcCoKICAgIGJlZ2luKF9UcCAoJl9fYXJyKVtf
Tm1dKQogICAgeyByZXR1cm4gX19hcnI7IH0KCgoKCgoKICB0ZW1wbGF0ZTxjbGFzcyBfVHAsIHNp
emVfdCBfTm0+CiAgICBpbmxpbmUgX1RwKgogICAgZW5kKF9UcCAoJl9fYXJyKVtfTm1dKQogICAg
eyByZXR1cm4gX19hcnIgKyBfTm07IH0KCgp9CiMgNTIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvc3RyaW5nIiAyIDMKIyAxICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFz
aWNfc3RyaW5nLmgiIDEgMwojIDM1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKI2RlZmluZSBfQkFT
SUNfU1RSSU5HX0ggMQoKICAgICAgIAojIDM4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKCgoKCgoK
Cm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIp
KSkKewoKIyAxMTEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgY2xhc3MgYmFzaWNf
c3RyaW5nCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jOjp0ZW1wbGF0ZSByZWJp
bmQ8X0NoYXJUPjo6b3RoZXIgX0NoYXJUX2FsbG9jX3R5cGU7CgoKICAgIHB1YmxpYzoKICAgICAg
dHlwZWRlZiBfVHJhaXRzIHRyYWl0c190eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9UcmFp
dHM6OmNoYXJfdHlwZSB2YWx1ZV90eXBlOwogICAgICB0eXBlZGVmIF9BbGxvYyBhbGxvY2F0b3Jf
dHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQ2hhclRfYWxsb2NfdHlwZTo6c2l6ZV90eXBl
IHNpemVfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQ2hhclRfYWxsb2NfdHlwZTo6ZGlm
ZmVyZW5jZV90eXBlIGRpZmZlcmVuY2VfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQ2hh
clRfYWxsb2NfdHlwZTo6cmVmZXJlbmNlIHJlZmVyZW5jZTsKICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBfQ2hhclRfYWxsb2NfdHlwZTo6Y29uc3RfcmVmZXJlbmNlIGNvbnN0X3JlZmVyZW5jZTsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBfQ2hhclRfYWxsb2NfdHlwZTo6cG9pbnRlciBwb2ludGVyOwog
ICAgICB0eXBlZGVmIHR5cGVuYW1lIF9DaGFyVF9hbGxvY190eXBlOjpjb25zdF9wb2ludGVyIGNv
bnN0X3BvaW50ZXI7CiAgICAgIHR5cGVkZWYgX19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxw
b2ludGVyLCBiYXNpY19zdHJpbmc+IGl0ZXJhdG9yOwogICAgICB0eXBlZGVmIF9fZ251X2N4eDo6
X19ub3JtYWxfaXRlcmF0b3I8Y29uc3RfcG9pbnRlciwgYmFzaWNfc3RyaW5nPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9p
dGVyYXRvcjsKICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0
b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0
ZXJhdG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9yOwoKICAgIHByaXZhdGU6CiMgMTQ4ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Jp
dHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgc3RydWN0IF9SZXBfYmFzZQogICAgICB7CiBzaXpl
X3R5cGUgX01fbGVuZ3RoOwogc2l6ZV90eXBlIF9NX2NhcGFjaXR5OwogX0F0b21pY193b3JkIF9N
X3JlZmNvdW50OwogICAgICB9OwoKICAgICAgc3RydWN0IF9SZXAgOiBfUmVwX2Jhc2UKICAgICAg
ewoKIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jOjp0ZW1wbGF0ZSByZWJpbmQ8Y2hhcj46Om90aGVy
IF9SYXdfYnl0ZXNfYWxsb2M7CiMgMTczICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKIHN0YXRpYyBj
b25zdCBzaXplX3R5cGUgX1NfbWF4X3NpemU7CiBzdGF0aWMgY29uc3QgX0NoYXJUIF9TX3Rlcm1p
bmFsOwoKCgogICAgICAgIHN0YXRpYyBzaXplX3R5cGUgX1NfZW1wdHlfcmVwX3N0b3JhZ2VbXTsK
CiAgICAgICAgc3RhdGljIF9SZXAmCiAgICAgICAgX1NfZW1wdHlfcmVwKCkgbm9leGNlcHQKICAg
ICAgICB7CgoKCiAgIHZvaWQqIF9fcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCZfU19lbXB0
eV9yZXBfc3RvcmFnZSk7CiAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxfUmVwKj4oX19wKTsK
IH0KCiAgICAgICAgYm9vbAogX01faXNfbGVha2VkKCkgY29uc3Qgbm9leGNlcHQKICAgICAgICB7
IHJldHVybiB0aGlzLT5fTV9yZWZjb3VudCA8IDA7IH0KCiAgICAgICAgYm9vbAogX01faXNfc2hh
cmVkKCkgY29uc3Qgbm9leGNlcHQKICAgICAgICB7IHJldHVybiB0aGlzLT5fTV9yZWZjb3VudCA+
IDA7IH0KCiAgICAgICAgdm9pZAogX01fc2V0X2xlYWtlZCgpIG5vZXhjZXB0CiAgICAgICAgeyB0
aGlzLT5fTV9yZWZjb3VudCA9IC0xOyB9CgogICAgICAgIHZvaWQKIF9NX3NldF9zaGFyYWJsZSgp
IG5vZXhjZXB0CiAgICAgICAgeyB0aGlzLT5fTV9yZWZjb3VudCA9IDA7IH0KCiB2b2lkCiBfTV9z
ZXRfbGVuZ3RoX2FuZF9zaGFyYWJsZShzaXplX3R5cGUgX19uKSBub2V4Y2VwdAogewoKICAgaWYg
KF9fYnVpbHRpbl9leHBlY3QodGhpcyAhPSAmX1NfZW1wdHlfcmVwKCksIGZhbHNlKSkKCiAgICAg
ewogICAgICAgdGhpcy0+X01fc2V0X3NoYXJhYmxlKCk7CiAgICAgICB0aGlzLT5fTV9sZW5ndGgg
PSBfX247CiAgICAgICB0cmFpdHNfdHlwZTo6YXNzaWduKHRoaXMtPl9NX3JlZmRhdGEoKVtfX25d
LCBfU190ZXJtaW5hbCk7CgoKICAgICB9CiB9CgogX0NoYXJUKgogX01fcmVmZGF0YSgpIHRocm93
KCkKIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8X0NoYXJUKj4odGhpcyArIDEpOyB9CgogX0No
YXJUKgogX01fZ3JhYihjb25zdCBfQWxsb2MmIF9fYWxsb2MxLCBjb25zdCBfQWxsb2MmIF9fYWxs
b2MyKQogewogICByZXR1cm4gKCFfTV9pc19sZWFrZWQoKSAmJiBfX2FsbG9jMSA9PSBfX2FsbG9j
MikKICAgICAgICAgICA/IF9NX3JlZmNvcHkoKSA6IF9NX2Nsb25lKF9fYWxsb2MxKTsKIH0KCgog
c3RhdGljIF9SZXAqCiBfU19jcmVhdGUoc2l6ZV90eXBlLCBzaXplX3R5cGUsIGNvbnN0IF9BbGxv
YyYpOwoKIHZvaWQKIF9NX2Rpc3Bvc2UoY29uc3QgX0FsbG9jJiBfX2EpIG5vZXhjZXB0CiB7Cgog
ICBpZiAoX19idWlsdGluX2V4cGVjdCh0aGlzICE9ICZfU19lbXB0eV9yZXAoKSwgZmFsc2UpKQoK
ICAgICB7CgogICAgICAgOwogICAgICAgaWYgKF9fZ251X2N4eDo6X19leGNoYW5nZV9hbmRfYWRk
X2Rpc3BhdGNoKCZ0aGlzLT5fTV9yZWZjb3VudCwKICAgICAgICAtMSkgPD0gMCkKICB7CiAgICA7
CiAgICBfTV9kZXN0cm95KF9fYSk7CiAgfQogICAgIH0KIH0KCiB2b2lkCiBfTV9kZXN0cm95KGNv
bnN0IF9BbGxvYyYpIHRocm93KCk7CgogX0NoYXJUKgogX01fcmVmY29weSgpIHRocm93KCkKIHsK
CiAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KHRoaXMgIT0gJl9TX2VtcHR5X3JlcCgpLCBmYWxzZSkp
CgogICAgICAgICAgICBfX2dudV9jeHg6Ol9fYXRvbWljX2FkZF9kaXNwYXRjaCgmdGhpcy0+X01f
cmVmY291bnQsIDEpOwogICByZXR1cm4gX01fcmVmZGF0YSgpOwogfQoKIF9DaGFyVCoKIF9NX2Ns
b25lKGNvbnN0IF9BbGxvYyYsIHNpemVfdHlwZSBfX3JlcyA9IDApOwogICAgICB9OwoKCiAgICAg
IHN0cnVjdCBfQWxsb2NfaGlkZXIgOiBfQWxsb2MKICAgICAgewogX0FsbG9jX2hpZGVyKF9DaGFy
VCogX19kYXQsIGNvbnN0IF9BbGxvYyYgX19hKSBub2V4Y2VwdAogOiBfQWxsb2MoX19hKSwgX01f
cChfX2RhdCkgeyB9CgogX0NoYXJUKiBfTV9wOwogICAgICB9OwoKICAgIHB1YmxpYzoKCgoKCiAg
ICAgIHN0YXRpYyBjb25zdCBzaXplX3R5cGUgbnBvcyA9IHN0YXRpY19jYXN0PHNpemVfdHlwZT4o
LTEpOwoKICAgIHByaXZhdGU6CgogICAgICBtdXRhYmxlIF9BbGxvY19oaWRlciBfTV9kYXRhcGx1
czsKCiAgICAgIF9DaGFyVCoKICAgICAgX01fZGF0YSgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsg
cmV0dXJuIF9NX2RhdGFwbHVzLl9NX3A7IH0KCiAgICAgIF9DaGFyVCoKICAgICAgX01fZGF0YShf
Q2hhclQqIF9fcCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gKF9NX2RhdGFwbHVzLl9NX3AgPSBf
X3ApOyB9CgogICAgICBfUmVwKgogICAgICBfTV9yZXAoKSBjb25zdCBub2V4Y2VwdAogICAgICB7
IHJldHVybiAmKChyZWludGVycHJldF9jYXN0PF9SZXAqPiAoX01fZGF0YSgpKSlbLTFdKTsgfQoK
CgogICAgICBpdGVyYXRvcgogICAgICBfTV9pYmVnaW4oKSBjb25zdCBub2V4Y2VwdAogICAgICB7
IHJldHVybiBpdGVyYXRvcihfTV9kYXRhKCkpOyB9CgogICAgICBpdGVyYXRvcgogICAgICBfTV9p
ZW5kKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gaXRlcmF0b3IoX01fZGF0YSgpICsg
dGhpcy0+c2l6ZSgpKTsgfQoKICAgICAgdm9pZAogICAgICBfTV9sZWFrKCkKICAgICAgewogaWYg
KCFfTV9yZXAoKS0+X01faXNfbGVha2VkKCkpCiAgIF9NX2xlYWtfaGFyZCgpOwogICAgICB9Cgog
ICAgICBzaXplX3R5cGUKICAgICAgX01fY2hlY2soc2l6ZV90eXBlIF9fcG9zLCBjb25zdCBjaGFy
KiBfX3MpIGNvbnN0CiAgICAgIHsKIGlmIChfX3BvcyA+IHRoaXMtPnNpemUoKSkKICAgX190aHJv
d19vdXRfb2ZfcmFuZ2VfZm10KCgiJXM6IF9fcG9zICh3aGljaCBpcyAlenUpID4gIiAidGhpcy0+
c2l6ZSgpICh3aGljaCBpcyAlenUpIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAsCiAgICAgICBfX3MsIF9fcG9zLCB0aGlzLT5zaXplKCkpOwogcmV0dXJuIF9fcG9z
OwogICAgICB9CgogICAgICB2b2lkCiAgICAgIF9NX2NoZWNrX2xlbmd0aChzaXplX3R5cGUgX19u
MSwgc2l6ZV90eXBlIF9fbjIsIGNvbnN0IGNoYXIqIF9fcykgY29uc3QKICAgICAgewogaWYgKHRo
aXMtPm1heF9zaXplKCkgLSAodGhpcy0+c2l6ZSgpIC0gX19uMSkgPCBfX24yKQogICBfX3Rocm93
X2xlbmd0aF9lcnJvcigoX19zKSk7CiAgICAgIH0KCgogICAgICBzaXplX3R5cGUKICAgICAgX01f
bGltaXQoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19vZmYpIGNvbnN0IG5vZXhjZXB0CiAg
ICAgIHsKIGNvbnN0IGJvb2wgX190ZXN0b2ZmID0gX19vZmYgPCB0aGlzLT5zaXplKCkgLSBfX3Bv
czsKIHJldHVybiBfX3Rlc3RvZmYgPyBfX29mZiA6IHRoaXMtPnNpemUoKSAtIF9fcG9zOwogICAg
ICB9CgoKICAgICAgYm9vbAogICAgICBfTV9kaXNqdW5jdChjb25zdCBfQ2hhclQqIF9fcykgY29u
c3Qgbm9leGNlcHQKICAgICAgewogcmV0dXJuIChsZXNzPGNvbnN0IF9DaGFyVCo+KCkoX19zLCBf
TV9kYXRhKCkpCiAgfHwgbGVzczxjb25zdCBfQ2hhclQqPigpKF9NX2RhdGEoKSArIHRoaXMtPnNp
emUoKSwgX19zKSk7CiAgICAgIH0KCgoKICAgICAgc3RhdGljIHZvaWQKICAgICAgX01fY29weShf
Q2hhclQqIF9fZCwgY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX24pIG5vZXhjZXB0CiAg
ICAgIHsKIGlmIChfX24gPT0gMSkKICAgdHJhaXRzX3R5cGU6OmFzc2lnbigqX19kLCAqX19zKTsK
IGVsc2UKICAgdHJhaXRzX3R5cGU6OmNvcHkoX19kLCBfX3MsIF9fbik7CiAgICAgIH0KCiAgICAg
IHN0YXRpYyB2b2lkCiAgICAgIF9NX21vdmUoX0NoYXJUKiBfX2QsIGNvbnN0IF9DaGFyVCogX19z
LCBzaXplX3R5cGUgX19uKSBub2V4Y2VwdAogICAgICB7CiBpZiAoX19uID09IDEpCiAgIHRyYWl0
c190eXBlOjphc3NpZ24oKl9fZCwgKl9fcyk7CiBlbHNlCiAgIHRyYWl0c190eXBlOjptb3ZlKF9f
ZCwgX19zLCBfX24pOwogICAgICB9CgogICAgICBzdGF0aWMgdm9pZAogICAgICBfTV9hc3NpZ24o
X0NoYXJUKiBfX2QsIHNpemVfdHlwZSBfX24sIF9DaGFyVCBfX2MpIG5vZXhjZXB0CiAgICAgIHsK
IGlmIChfX24gPT0gMSkKICAgdHJhaXRzX3R5cGU6OmFzc2lnbigqX19kLCBfX2MpOwogZWxzZQog
ICB0cmFpdHNfdHlwZTo6YXNzaWduKF9fZCwgX19uLCBfX2MpOwogICAgICB9CgoKCiAgICAgIHRl
bXBsYXRlPGNsYXNzIF9JdGVyYXRvcj4KICAgICAgICBzdGF0aWMgdm9pZAogICAgICAgIF9TX2Nv
cHlfY2hhcnMoX0NoYXJUKiBfX3AsIF9JdGVyYXRvciBfX2sxLCBfSXRlcmF0b3IgX19rMikKIG5v
ZXhjZXB0CiAgICAgICAgewogICBmb3IgKDsgX19rMSAhPSBfX2syOyArK19fazEsICsrX19wKQog
ICAgIHRyYWl0c190eXBlOjphc3NpZ24oKl9fcCwgKl9fazEpOwogfQoKICAgICAgc3RhdGljIHZv
aWQKICAgICAgX1NfY29weV9jaGFycyhfQ2hhclQqIF9fcCwgaXRlcmF0b3IgX19rMSwgaXRlcmF0
b3IgX19rMikgbm9leGNlcHQKICAgICAgeyBfU19jb3B5X2NoYXJzKF9fcCwgX19rMS5iYXNlKCks
IF9fazIuYmFzZSgpKTsgfQoKICAgICAgc3RhdGljIHZvaWQKICAgICAgX1NfY29weV9jaGFycyhf
Q2hhclQqIF9fcCwgY29uc3RfaXRlcmF0b3IgX19rMSwgY29uc3RfaXRlcmF0b3IgX19rMikKICAg
ICAgbm9leGNlcHQKICAgICAgeyBfU19jb3B5X2NoYXJzKF9fcCwgX19rMS5iYXNlKCksIF9fazIu
YmFzZSgpKTsgfQoKICAgICAgc3RhdGljIHZvaWQKICAgICAgX1NfY29weV9jaGFycyhfQ2hhclQq
IF9fcCwgX0NoYXJUKiBfX2sxLCBfQ2hhclQqIF9fazIpIG5vZXhjZXB0CiAgICAgIHsgX01fY29w
eShfX3AsIF9fazEsIF9fazIgLSBfX2sxKTsgfQoKICAgICAgc3RhdGljIHZvaWQKICAgICAgX1Nf
Y29weV9jaGFycyhfQ2hhclQqIF9fcCwgY29uc3QgX0NoYXJUKiBfX2sxLCBjb25zdCBfQ2hhclQq
IF9fazIpCiAgICAgIG5vZXhjZXB0CiAgICAgIHsgX01fY29weShfX3AsIF9fazEsIF9fazIgLSBf
X2sxKTsgfQoKICAgICAgc3RhdGljIGludAogICAgICBfU19jb21wYXJlKHNpemVfdHlwZSBfX24x
LCBzaXplX3R5cGUgX19uMikgbm9leGNlcHQKICAgICAgewogY29uc3QgZGlmZmVyZW5jZV90eXBl
IF9fZCA9IGRpZmZlcmVuY2VfdHlwZShfX24xIC0gX19uMik7CgogaWYgKF9fZCA+IF9fZ251X2N4
eDo6X19udW1lcmljX3RyYWl0czxpbnQ+OjpfX21heCkKICAgcmV0dXJuIF9fZ251X2N4eDo6X19u
dW1lcmljX3RyYWl0czxpbnQ+OjpfX21heDsKIGVsc2UgaWYgKF9fZCA8IF9fZ251X2N4eDo6X19u
dW1lcmljX3RyYWl0czxpbnQ+OjpfX21pbikKICAgcmV0dXJuIF9fZ251X2N4eDo6X19udW1lcmlj
X3RyYWl0czxpbnQ+OjpfX21pbjsKIGVsc2UKICAgcmV0dXJuIGludChfX2QpOwogICAgICB9Cgog
ICAgICB2b2lkCiAgICAgIF9NX211dGF0ZShzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX2xl
bjEsIHNpemVfdHlwZSBfX2xlbjIpOwoKICAgICAgdm9pZAogICAgICBfTV9sZWFrX2hhcmQoKTsK
CiAgICAgIHN0YXRpYyBfUmVwJgogICAgICBfU19lbXB0eV9yZXAoKSBub2V4Y2VwdAogICAgICB7
IHJldHVybiBfUmVwOjpfU19lbXB0eV9yZXAoKTsgfQoKICAgIHB1YmxpYzoKCgoKCgoKCiAgICAg
IGJhc2ljX3N0cmluZygpCgogICAgICA6IF9NX2RhdGFwbHVzKF9TX2VtcHR5X3JlcCgpLl9NX3Jl
ZmRhdGEoKSwgX0FsbG9jKCkpIHsgfQoKCgoKCgoKICAgICAgZXhwbGljaXQKICAgICAgYmFzaWNf
c3RyaW5nKGNvbnN0IF9BbGxvYyYgX19hKTsKCgoKCgoKICAgICAgYmFzaWNfc3RyaW5nKGNvbnN0
IGJhc2ljX3N0cmluZyYgX19zdHIpOwoKCgoKCgogICAgICBiYXNpY19zdHJpbmcoY29uc3QgYmFz
aWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zLAogICAgIHNpemVfdHlwZSBfX24gPSBu
cG9zKTsKCgoKCgoKCiAgICAgIGJhc2ljX3N0cmluZyhjb25zdCBiYXNpY19zdHJpbmcmIF9fc3Ry
LCBzaXplX3R5cGUgX19wb3MsCiAgICAgc2l6ZV90eXBlIF9fbiwgY29uc3QgX0FsbG9jJiBfX2Ep
OwojIDQ4OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmluZyhjb25zdCBf
Q2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbiwKICAgICBjb25zdCBfQWxsb2MmIF9fYSA9IF9BbGxv
YygpKTsKCgoKCgogICAgICBiYXNpY19zdHJpbmcoY29uc3QgX0NoYXJUKiBfX3MsIGNvbnN0IF9B
bGxvYyYgX19hID0gX0FsbG9jKCkpOwoKCgoKCgogICAgICBiYXNpY19zdHJpbmcoc2l6ZV90eXBl
IF9fbiwgX0NoYXJUIF9fYywgY29uc3QgX0FsbG9jJiBfX2EgPSBfQWxsb2MoKSk7CiMgNTEyICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Jp
dHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgYmFzaWNfc3RyaW5nKGJhc2ljX3N0cmluZyYmIF9f
c3RyKQoKICAgICAgbm9leGNlcHQKCiAgICAgIDogX01fZGF0YXBsdXMoX19zdHIuX01fZGF0YXBs
dXMpCiAgICAgIHsKCiBfX3N0ci5fTV9kYXRhKF9TX2VtcHR5X3JlcCgpLl9NX3JlZmRhdGEoKSk7
CgoKCiAgICAgIH0KCgoKCgoKICAgICAgYmFzaWNfc3RyaW5nKGluaXRpYWxpemVyX2xpc3Q8X0No
YXJUPiBfX2wsIGNvbnN0IF9BbGxvYyYgX19hID0gX0FsbG9jKCkpOwojIDUzOSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2lj
X3N0cmluZy5oIiAzCiAgICAgIHRlbXBsYXRlPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgogICAgICAg
IGJhc2ljX3N0cmluZyhfSW5wdXRJdGVyYXRvciBfX2JlZywgX0lucHV0SXRlcmF0b3IgX19lbmQs
CiAgICAgICBjb25zdCBfQWxsb2MmIF9fYSA9IF9BbGxvYygpKTsKCgoKCiAgICAgIH5iYXNpY19z
dHJpbmcoKSBub2V4Y2VwdAogICAgICB7IF9NX3JlcCgpLT5fTV9kaXNwb3NlKHRoaXMtPmdldF9h
bGxvY2F0b3IoKSk7IH0KCgoKCgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIG9wZXJhdG9yPShj
b25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKQogICAgICB7IHJldHVybiB0aGlzLT5hc3NpZ24oX19z
dHIpOyB9CgoKCgoKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBvcGVyYXRvcj0oY29uc3QgX0No
YXJUKiBfX3MpCiAgICAgIHsgcmV0dXJuIHRoaXMtPmFzc2lnbihfX3MpOyB9CiMgNTcyICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMv
YmFzaWNfc3RyaW5nLmgiIDMKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBvcGVyYXRvcj0oX0No
YXJUIF9fYykKICAgICAgewogdGhpcy0+YXNzaWduKDEsIF9fYyk7CiByZXR1cm4gKnRoaXM7CiAg
ICAgIH0KIyA1ODggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBiYXNpY19zdHJpbmcmCiAg
ICAgIG9wZXJhdG9yPShiYXNpY19zdHJpbmcmJiBfX3N0cikKICAgICAgewoKIHRoaXMtPnN3YXAo
X19zdHIpOwogcmV0dXJuICp0aGlzOwogICAgICB9CgoKCgoKICAgICAgYmFzaWNfc3RyaW5nJgog
ICAgICBvcGVyYXRvcj0oaW5pdGlhbGl6ZXJfbGlzdDxfQ2hhclQ+IF9fbCkKICAgICAgewogdGhp
cy0+YXNzaWduKF9fbC5iZWdpbigpLCBfX2wuc2l6ZSgpKTsKIHJldHVybiAqdGhpczsKICAgICAg
fQoKCgoKCgoKICAgICAgaXRlcmF0b3IKICAgICAgYmVnaW4oKQogICAgICB7CiBfTV9sZWFrKCk7
CiByZXR1cm4gaXRlcmF0b3IoX01fZGF0YSgpKTsKICAgICAgfQoKCgoKCiAgICAgIGNvbnN0X2l0
ZXJhdG9yCiAgICAgIGJlZ2luKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gY29uc3Rf
aXRlcmF0b3IoX01fZGF0YSgpKTsgfQoKCgoKCiAgICAgIGl0ZXJhdG9yCiAgICAgIGVuZCgpCiAg
ICAgIHsKIF9NX2xlYWsoKTsKIHJldHVybiBpdGVyYXRvcihfTV9kYXRhKCkgKyB0aGlzLT5zaXpl
KCkpOwogICAgICB9CgoKCgoKICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAgZW5kKCkgY29uc3Qg
bm9leGNlcHQKICAgICAgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IoX01fZGF0YSgpICsgdGhpcy0+
c2l6ZSgpKTsgfQoKCgoKCgogICAgICByZXZlcnNlX2l0ZXJhdG9yCiAgICAgIHJiZWdpbigpCiAg
ICAgIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IodGhpcy0+ZW5kKCkpOyB9CgoKCgoKCiAgICAg
IGNvbnN0X3JldmVyc2VfaXRlcmF0b3IKICAgICAgcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQKICAg
ICAgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcih0aGlzLT5lbmQoKSk7IH0KCgoKCgoK
ICAgICAgcmV2ZXJzZV9pdGVyYXRvcgogICAgICByZW5kKCkKICAgICAgeyByZXR1cm4gcmV2ZXJz
ZV9pdGVyYXRvcih0aGlzLT5iZWdpbigpKTsgfQoKCgoKCgogICAgICBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yCiAgICAgIHJlbmQoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yKHRoaXMtPmJlZ2luKCkpOyB9CgoKCgoKCiAgICAgIGNvbnN0X2l0ZXJh
dG9yCiAgICAgIGNiZWdpbigpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGNvbnN0X2l0
ZXJhdG9yKHRoaXMtPl9NX2RhdGEoKSk7IH0KCgoKCgogICAgICBjb25zdF9pdGVyYXRvcgogICAg
ICBjZW5kKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhp
cy0+X01fZGF0YSgpICsgdGhpcy0+c2l6ZSgpKTsgfQoKCgoKCgogICAgICBjb25zdF9yZXZlcnNl
X2l0ZXJhdG9yCiAgICAgIGNyYmVnaW4oKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yKHRoaXMtPmVuZCgpKTsgfQoKCgoKCgogICAgICBjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yCiAgICAgIGNyZW5kKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1
cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcih0aGlzLT5iZWdpbigpKTsgfQoKCiAgICBwdWJsaWM6
CgoKCiAgICAgIHNpemVfdHlwZQogICAgICBzaXplKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gX01fcmVwKCktPl9NX2xlbmd0aDsgfQoKCgogICAgICBzaXplX3R5cGUKICAgICAgbGVu
Z3RoKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01fcmVwKCktPl9NX2xlbmd0aDsg
fQoKCiAgICAgIHNpemVfdHlwZQogICAgICBtYXhfc2l6ZSgpIGNvbnN0IG5vZXhjZXB0CiAgICAg
IHsgcmV0dXJuIF9SZXA6Ol9TX21heF9zaXplOyB9CiMgNzQ4ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgi
IDMKICAgICAgdm9pZAogICAgICByZXNpemUoc2l6ZV90eXBlIF9fbiwgX0NoYXJUIF9fYyk7CiMg
NzYxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgdm9pZAogICAgICByZXNpemUoc2l6ZV90
eXBlIF9fbikKICAgICAgeyB0aGlzLT5yZXNpemUoX19uLCBfQ2hhclQoKSk7IH0KCgoKICAgICAg
dm9pZAogICAgICBzaHJpbmtfdG9fZml0KCkgbm9leGNlcHQKICAgICAgewogaWYgKGNhcGFjaXR5
KCkgPiBzaXplKCkpCiAgIHsKICAgICBpZiAodHJ1ZSkKICAgICAgIHsgcmVzZXJ2ZSgwKTsgfQog
ICAgIGlmIChmYWxzZSkKICAgICAgIHsgfQogICB9CiAgICAgIH0KCgoKCgoKICAgICAgc2l6ZV90
eXBlCiAgICAgIGNhcGFjaXR5KCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01fcmVw
KCktPl9NX2NhcGFjaXR5OyB9CiMgODA1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgdm9p
ZAogICAgICByZXNlcnZlKHNpemVfdHlwZSBfX3Jlc19hcmcgPSAwKTsKCgoKCgogICAgICB2b2lk
CiAgICAgIGNsZWFyKCkKICAgICAgeyBfTV9tdXRhdGUoMCwgdGhpcy0+c2l6ZSgpLCAwKTsgfQoK
CgoKCiAgICAgIGJvb2wKICAgICAgZW1wdHkoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVy
biB0aGlzLT5zaXplKCkgPT0gMDsgfQojIDgzNSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAg
IGNvbnN0X3JlZmVyZW5jZQogICAgICBvcGVyYXRvcltdIChzaXplX3R5cGUgX19wb3MpIGNvbnN0
IG5vZXhjZXB0CiAgICAgIHsKIDsKIHJldHVybiBfTV9kYXRhKClbX19wb3NdOwogICAgICB9CiMg
ODUyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgcmVmZXJlbmNlCiAgICAgIG9wZXJhdG9y
W10oc2l6ZV90eXBlIF9fcG9zKQogICAgICB7CgoKIDsKCiA7CiBfTV9sZWFrKCk7CiByZXR1cm4g
X01fZGF0YSgpW19fcG9zXTsKICAgICAgfQojIDg3NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAg
ICAgIGNvbnN0X3JlZmVyZW5jZQogICAgICBhdChzaXplX3R5cGUgX19uKSBjb25zdAogICAgICB7
CiBpZiAoX19uID49IHRoaXMtPnNpemUoKSkKICAgX190aHJvd19vdXRfb2ZfcmFuZ2VfZm10KCgi
YmFzaWNfc3RyaW5nOjphdDogX19uICIgIih3aGljaCBpcyAlenUpID49IHRoaXMtPnNpemUoKSAi
ICIod2hpY2ggaXMgJXp1KSIpCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLAogICAgICAg
X19uLCB0aGlzLT5zaXplKCkpOwogcmV0dXJuIF9NX2RhdGEoKVtfX25dOwogICAgICB9CiMgODk2
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgcmVmZXJlbmNlCiAgICAgIGF0KHNpemVfdHlw
ZSBfX24pCiAgICAgIHsKIGlmIChfX24gPj0gc2l6ZSgpKQogICBfX3Rocm93X291dF9vZl9yYW5n
ZV9mbXQoKCJiYXNpY19zdHJpbmc6OmF0OiBfX24gIiAiKHdoaWNoIGlzICV6dSkgPj0gdGhpcy0+
c2l6ZSgpICIgIih3aGljaCBpcyAlenUpIikKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAs
CiAgICAgICBfX24sIHRoaXMtPnNpemUoKSk7CiBfTV9sZWFrKCk7CiByZXR1cm4gX01fZGF0YSgp
W19fbl07CiAgICAgIH0KCgoKCgoKICAgICAgcmVmZXJlbmNlCiAgICAgIGZyb250KCkKICAgICAg
eyByZXR1cm4gb3BlcmF0b3JbXSgwKTsgfQoKCgoKCiAgICAgIGNvbnN0X3JlZmVyZW5jZQogICAg
ICBmcm9udCgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIG9wZXJhdG9yW10oMCk7IH0K
CgoKCgogICAgICByZWZlcmVuY2UKICAgICAgYmFjaygpCiAgICAgIHsgcmV0dXJuIG9wZXJhdG9y
W10odGhpcy0+c2l6ZSgpIC0gMSk7IH0KCgoKCgogICAgICBjb25zdF9yZWZlcmVuY2UKICAgICAg
YmFjaygpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIG9wZXJhdG9yW10odGhpcy0+c2l6
ZSgpIC0gMSk7IH0KIyA5NDggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBiYXNpY19zdHJp
bmcmCiAgICAgIG9wZXJhdG9yKz0oY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0cikKICAgICAgeyBy
ZXR1cm4gdGhpcy0+YXBwZW5kKF9fc3RyKTsgfQoKCgoKCgogICAgICBiYXNpY19zdHJpbmcmCiAg
ICAgIG9wZXJhdG9yKz0oY29uc3QgX0NoYXJUKiBfX3MpCiAgICAgIHsgcmV0dXJuIHRoaXMtPmFw
cGVuZChfX3MpOyB9CgoKCgoKCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgb3BlcmF0b3IrPShf
Q2hhclQgX19jKQogICAgICB7CiB0aGlzLT5wdXNoX2JhY2soX19jKTsKIHJldHVybiAqdGhpczsK
ICAgICAgfQoKCgoKCgoKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBvcGVyYXRvcis9KGluaXRp
YWxpemVyX2xpc3Q8X0NoYXJUPiBfX2wpCiAgICAgIHsgcmV0dXJuIHRoaXMtPmFwcGVuZChfX2wu
YmVnaW4oKSwgX19sLnNpemUoKSk7IH0KCgoKCgoKCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAg
YXBwZW5kKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIpOwojIDEwMDUgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJp
bmcuaCIgMwogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGFwcGVuZChjb25zdCBiYXNpY19zdHJp
bmcmIF9fc3RyLCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pOwoKCgoKCgoKICAgICAg
YmFzaWNfc3RyaW5nJgogICAgICBhcHBlbmQoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBf
X24pOwoKCgoKCgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGFwcGVuZChjb25zdCBfQ2hhclQq
IF9fcykKICAgICAgewogOwogcmV0dXJuIHRoaXMtPmFwcGVuZChfX3MsIHRyYWl0c190eXBlOjps
ZW5ndGgoX19zKSk7CiAgICAgIH0KIyAxMDM3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAg
YmFzaWNfc3RyaW5nJgogICAgICBhcHBlbmQoc2l6ZV90eXBlIF9fbiwgX0NoYXJUIF9fYyk7CgoK
CgoKCgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGFwcGVuZChpbml0aWFsaXplcl9saXN0PF9D
aGFyVD4gX19sKQogICAgICB7IHJldHVybiB0aGlzLT5hcHBlbmQoX19sLmJlZ2luKCksIF9fbC5z
aXplKCkpOyB9CiMgMTA1OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHRlbXBsYXRlPGNs
YXNzIF9JbnB1dEl0ZXJhdG9yPgogICAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgICBhcHBlbmQo
X0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0KQogICAgICAgIHsg
cmV0dXJuIHRoaXMtPnJlcGxhY2UoX01faWVuZCgpLCBfTV9pZW5kKCksIF9fZmlyc3QsIF9fbGFz
dCk7IH0KCgoKCgogICAgICB2b2lkCiAgICAgIHB1c2hfYmFjayhfQ2hhclQgX19jKQogICAgICB7
CiBjb25zdCBzaXplX3R5cGUgX19sZW4gPSAxICsgdGhpcy0+c2l6ZSgpOwogaWYgKF9fbGVuID4g
dGhpcy0+Y2FwYWNpdHkoKSB8fCBfTV9yZXAoKS0+X01faXNfc2hhcmVkKCkpCiAgIHRoaXMtPnJl
c2VydmUoX19sZW4pOwogdHJhaXRzX3R5cGU6OmFzc2lnbihfTV9kYXRhKClbdGhpcy0+c2l6ZSgp
XSwgX19jKTsKIF9NX3JlcCgpLT5fTV9zZXRfbGVuZ3RoX2FuZF9zaGFyYWJsZShfX2xlbik7CiAg
ICAgIH0KCgoKCgoKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBhc3NpZ24oY29uc3QgYmFzaWNf
c3RyaW5nJiBfX3N0cik7CiMgMTA5NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2lj
X3N0cmluZyYKICAgICAgYXNzaWduKGJhc2ljX3N0cmluZyYmIF9fc3RyKQogICAgICB7CiB0aGlz
LT5zd2FwKF9fc3RyKTsKIHJldHVybiAqdGhpczsKICAgICAgfQojIDExMTcgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9iYXNpY19z
dHJpbmcuaCIgMwogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGFzc2lnbihjb25zdCBiYXNpY19z
dHJpbmcmIF9fc3RyLCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pCiAgICAgIHsgcmV0
dXJuIHRoaXMtPmFzc2lnbihfX3N0ci5fTV9kYXRhKCkKICAgICAgICsgX19zdHIuX01fY2hlY2so
X19wb3MsICJiYXNpY19zdHJpbmc6OmFzc2lnbiIpLAogICAgICAgX19zdHIuX01fbGltaXQoX19w
b3MsIF9fbikpOyB9CiMgMTEzMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0
cmluZyYKICAgICAgYXNzaWduKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19uKTsKIyAx
MTQ1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBhc3Np
Z24oY29uc3QgX0NoYXJUKiBfX3MpCiAgICAgIHsKIDsKIHJldHVybiB0aGlzLT5hc3NpZ24oX19z
LCB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcykpOwogICAgICB9CiMgMTE2MSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0
cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgYXNzaWduKHNpemVfdHlwZSBfX24s
IF9DaGFyVCBfX2MpCiAgICAgIHsgcmV0dXJuIF9NX3JlcGxhY2VfYXV4KHNpemVfdHlwZSgwKSwg
dGhpcy0+c2l6ZSgpLCBfX24sIF9fYyk7IH0KIyAxMTczICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMK
ICAgICAgdGVtcGxhdGU8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgICAgICAgYmFzaWNfc3RyaW5n
JgogICAgICAgIGFzc2lnbihfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBf
X2xhc3QpCiAgICAgICAgeyByZXR1cm4gdGhpcy0+cmVwbGFjZShfTV9pYmVnaW4oKSwgX01faWVu
ZCgpLCBfX2ZpcnN0LCBfX2xhc3QpOyB9CgoKCgoKCgogICAgICBiYXNpY19zdHJpbmcmCiAgICAg
IGFzc2lnbihpbml0aWFsaXplcl9saXN0PF9DaGFyVD4gX19sKQogICAgICB7IHJldHVybiB0aGlz
LT5hc3NpZ24oX19sLmJlZ2luKCksIF9fbC5zaXplKCkpOyB9CiMgMTIwMiAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0
cmluZy5oIiAzCiAgICAgIHZvaWQKICAgICAgaW5zZXJ0KGl0ZXJhdG9yIF9fcCwgc2l6ZV90eXBl
IF9fbiwgX0NoYXJUIF9fYykKICAgICAgeyB0aGlzLT5yZXBsYWNlKF9fcCwgX19wLCBfX24sIF9f
Yyk7IH0KIyAxMjE4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgdGVtcGxhdGU8Y2xhc3Mg
X0lucHV0SXRlcmF0b3I+CiAgICAgICAgdm9pZAogICAgICAgIGluc2VydChpdGVyYXRvciBfX3As
IF9JbnB1dEl0ZXJhdG9yIF9fYmVnLCBfSW5wdXRJdGVyYXRvciBfX2VuZCkKICAgICAgICB7IHRo
aXMtPnJlcGxhY2UoX19wLCBfX3AsIF9fYmVnLCBfX2VuZCk7IH0KIyAxMjMwICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNf
c3RyaW5nLmgiIDMKICAgICAgdm9pZAogICAgICBpbnNlcnQoaXRlcmF0b3IgX19wLCBpbml0aWFs
aXplcl9saXN0PF9DaGFyVD4gX19sKQogICAgICB7CiA7CiB0aGlzLT5pbnNlcnQoX19wIC0gX01f
aWJlZ2luKCksIF9fbC5iZWdpbigpLCBfX2wuc2l6ZSgpKTsKICAgICAgfQojIDEyNTAgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9i
YXNpY19zdHJpbmcuaCIgMwogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGluc2VydChzaXplX3R5
cGUgX19wb3MxLCBjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKQogICAgICB7IHJldHVybiB0aGlz
LT5pbnNlcnQoX19wb3MxLCBfX3N0ciwgc2l6ZV90eXBlKDApLCBfX3N0ci5zaXplKCkpOyB9CiMg
MTI3MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgaW5z
ZXJ0KHNpemVfdHlwZSBfX3BvczEsIGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIsCiAgICAgIHNp
emVfdHlwZSBfX3BvczIsIHNpemVfdHlwZSBfX24pCiAgICAgIHsgcmV0dXJuIHRoaXMtPmluc2Vy
dChfX3BvczEsIF9fc3RyLl9NX2RhdGEoKQogICAgICAgKyBfX3N0ci5fTV9jaGVjayhfX3BvczIs
ICJiYXNpY19zdHJpbmc6Omluc2VydCIpLAogICAgICAgX19zdHIuX01fbGltaXQoX19wb3MyLCBf
X24pKTsgfQojIDEyOTUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBiYXNpY19zdHJpbmcm
CiAgICAgIGluc2VydChzaXplX3R5cGUgX19wb3MsIGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5
cGUgX19uKTsKIyAxMzEzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgYmFzaWNfc3RyaW5n
JgogICAgICBpbnNlcnQoc2l6ZV90eXBlIF9fcG9zLCBjb25zdCBfQ2hhclQqIF9fcykKICAgICAg
ewogOwogcmV0dXJuIHRoaXMtPmluc2VydChfX3BvcywgX19zLCB0cmFpdHNfdHlwZTo6bGVuZ3Ro
KF9fcykpOwogICAgICB9CiMgMTMzNiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2lj
X3N0cmluZyYKICAgICAgaW5zZXJ0KHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbiwgX0No
YXJUIF9fYykKICAgICAgeyByZXR1cm4gX01fcmVwbGFjZV9hdXgoX01fY2hlY2soX19wb3MsICJi
YXNpY19zdHJpbmc6Omluc2VydCIpLAogICAgICAgICBzaXplX3R5cGUoMCksIF9fbiwgX19jKTsg
fQojIDEzNTQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBpdGVyYXRvcgogICAgICBpbnNl
cnQoaXRlcmF0b3IgX19wLCBfQ2hhclQgX19jKQogICAgICB7CiA7CiBjb25zdCBzaXplX3R5cGUg
X19wb3MgPSBfX3AgLSBfTV9pYmVnaW4oKTsKIF9NX3JlcGxhY2VfYXV4KF9fcG9zLCBzaXplX3R5
cGUoMCksIHNpemVfdHlwZSgxKSwgX19jKTsKIF9NX3JlcCgpLT5fTV9zZXRfbGVha2VkKCk7CiBy
ZXR1cm4gaXRlcmF0b3IoX01fZGF0YSgpICsgX19wb3MpOwogICAgICB9CiMgMTM3OSAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jh
c2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgZXJhc2Uoc2l6ZV90eXBl
IF9fcG9zID0gMCwgc2l6ZV90eXBlIF9fbiA9IG5wb3MpCiAgICAgIHsKIF9NX211dGF0ZShfTV9j
aGVjayhfX3BvcywgImJhc2ljX3N0cmluZzo6ZXJhc2UiKSwKICAgIF9NX2xpbWl0KF9fcG9zLCBf
X24pLCBzaXplX3R5cGUoMCkpOwogcmV0dXJuICp0aGlzOwogICAgICB9CiMgMTM5NSAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jh
c2ljX3N0cmluZy5oIiAzCiAgICAgIGl0ZXJhdG9yCiAgICAgIGVyYXNlKGl0ZXJhdG9yIF9fcG9z
aXRpb24pCiAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiBjb25zdCBz
aXplX3R5cGUgX19wb3MgPSBfX3Bvc2l0aW9uIC0gX01faWJlZ2luKCk7CiBfTV9tdXRhdGUoX19w
b3MsIHNpemVfdHlwZSgxKSwgc2l6ZV90eXBlKDApKTsKIF9NX3JlcCgpLT5fTV9zZXRfbGVha2Vk
KCk7CiByZXR1cm4gaXRlcmF0b3IoX01fZGF0YSgpICsgX19wb3MpOwogICAgICB9CiMgMTQxNSAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9i
aXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGl0ZXJhdG9yCiAgICAgIGVyYXNlKGl0ZXJhdG9y
IF9fZmlyc3QsIGl0ZXJhdG9yIF9fbGFzdCk7CgoKCgoKCgogICAgICB2b2lkCiAgICAgIHBvcF9i
YWNrKCkKICAgICAgeyBlcmFzZShzaXplKCktMSwgMSk7IH0KIyAxNDQ2ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3Ry
aW5nLmgiIDMKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICByZXBsYWNlKHNpemVfdHlwZSBfX3Bv
cywgc2l6ZV90eXBlIF9fbiwgY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0cikKICAgICAgeyByZXR1
cm4gdGhpcy0+cmVwbGFjZShfX3BvcywgX19uLCBfX3N0ci5fTV9kYXRhKCksIF9fc3RyLnNpemUo
KSk7IH0KIyAxNDY4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgYmFzaWNfc3RyaW5nJgog
ICAgICByZXBsYWNlKHNpemVfdHlwZSBfX3BvczEsIHNpemVfdHlwZSBfX24xLCBjb25zdCBiYXNp
Y19zdHJpbmcmIF9fc3RyLAogICAgICAgc2l6ZV90eXBlIF9fcG9zMiwgc2l6ZV90eXBlIF9fbjIp
CiAgICAgIHsgcmV0dXJuIHRoaXMtPnJlcGxhY2UoX19wb3MxLCBfX24xLCBfX3N0ci5fTV9kYXRh
KCkKICAgICAgICArIF9fc3RyLl9NX2NoZWNrKF9fcG9zMiwgImJhc2ljX3N0cmluZzo6cmVwbGFj
ZSIpLAogICAgICAgIF9fc3RyLl9NX2xpbWl0KF9fcG9zMiwgX19uMikpOyB9CiMgMTQ5MyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgcmVwbGFjZShzaXpl
X3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24xLCBjb25zdCBfQ2hhclQqIF9fcywKICAgICAgIHNp
emVfdHlwZSBfX24yKTsKIyAxNTEzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgYmFzaWNf
c3RyaW5nJgogICAgICByZXBsYWNlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbjEsIGNv
bnN0IF9DaGFyVCogX19zKQogICAgICB7CiA7CiByZXR1cm4gdGhpcy0+cmVwbGFjZShfX3Bvcywg
X19uMSwgX19zLCB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcykpOwogICAgICB9CiMgMTUzNyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgcmVwbGFjZShzaXpl
X3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24xLCBzaXplX3R5cGUgX19uMiwgX0NoYXJUIF9fYykK
ICAgICAgeyByZXR1cm4gX01fcmVwbGFjZV9hdXgoX01fY2hlY2soX19wb3MsICJiYXNpY19zdHJp
bmc6OnJlcGxhY2UiKSwKICAgICAgICAgX01fbGltaXQoX19wb3MsIF9fbjEpLCBfX24yLCBfX2Mp
OyB9CiMgMTU1NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmluZyYKICAg
ICAgcmVwbGFjZShpdGVyYXRvciBfX2kxLCBpdGVyYXRvciBfX2kyLCBjb25zdCBiYXNpY19zdHJp
bmcmIF9fc3RyKQogICAgICB7IHJldHVybiB0aGlzLT5yZXBsYWNlKF9faTEsIF9faTIsIF9fc3Ry
Ll9NX2RhdGEoKSwgX19zdHIuc2l6ZSgpKTsgfQojIDE1NzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcuaCIg
MwogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIHJlcGxhY2UoaXRlcmF0b3IgX19pMSwgaXRlcmF0
b3IgX19pMiwgY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX24pCiAgICAgIHsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgOwogcmV0dXJuIHRoaXMtPnJlcGxhY2UoX19pMSAtIF9NX2li
ZWdpbigpLCBfX2kyIC0gX19pMSwgX19zLCBfX24pOwogICAgICB9CiMgMTU5NSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2lj
X3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgcmVwbGFjZShpdGVyYXRvciBf
X2kxLCBpdGVyYXRvciBfX2kyLCBjb25zdCBfQ2hhclQqIF9fcykKICAgICAgewogOwogcmV0dXJu
IHRoaXMtPnJlcGxhY2UoX19pMSwgX19pMiwgX19zLCB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcykp
OwogICAgICB9CiMgMTYxNiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmlu
ZyYKICAgICAgcmVwbGFjZShpdGVyYXRvciBfX2kxLCBpdGVyYXRvciBfX2kyLCBzaXplX3R5cGUg
X19uLCBfQ2hhclQgX19jKQogICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAgIDsKIHJl
dHVybiBfTV9yZXBsYWNlX2F1eChfX2kxIC0gX01faWJlZ2luKCksIF9faTIgLSBfX2kxLCBfX24s
IF9fYyk7CiAgICAgIH0KIyAxNjM5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgdGVtcGxh
dGU8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgICAgICAgYmFzaWNfc3RyaW5nJgogICAgICAgIHJl
cGxhY2UoaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwKICBfSW5wdXRJdGVyYXRvciBfX2sx
LCBfSW5wdXRJdGVyYXRvciBfX2syKQogICAgICAgIHsKICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsKICAgOwogICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6X19pc19pbnRlZ2VyPF9JbnB1
dEl0ZXJhdG9yPjo6X190eXBlIF9JbnRlZ3JhbDsKICAgcmV0dXJuIF9NX3JlcGxhY2VfZGlzcGF0
Y2goX19pMSwgX19pMiwgX19rMSwgX19rMiwgX0ludGVncmFsKCkpOwogfQoKCgogICAgICBiYXNp
Y19zdHJpbmcmCiAgICAgIHJlcGxhY2UoaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwgX0No
YXJUKiBfX2sxLCBfQ2hhclQqIF9fazIpCiAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwogOwogcmV0dXJuIHRoaXMtPnJlcGxhY2UoX19pMSAtIF9NX2liZWdpbigpLCBfX2kyIC0g
X19pMSwKICAgICAgICBfX2sxLCBfX2syIC0gX19rMSk7CiAgICAgIH0KCiAgICAgIGJhc2ljX3N0
cmluZyYKICAgICAgcmVwbGFjZShpdGVyYXRvciBfX2kxLCBpdGVyYXRvciBfX2kyLAogICAgICAg
Y29uc3QgX0NoYXJUKiBfX2sxLCBjb25zdCBfQ2hhclQqIF9fazIpCiAgICAgIHsKCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwogOwogcmV0dXJuIHRoaXMtPnJlcGxhY2UoX19pMSAtIF9NX2li
ZWdpbigpLCBfX2kyIC0gX19pMSwKICAgICAgICBfX2sxLCBfX2syIC0gX19rMSk7CiAgICAgIH0K
CiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgcmVwbGFjZShpdGVyYXRvciBfX2kxLCBpdGVyYXRv
ciBfX2kyLCBpdGVyYXRvciBfX2sxLCBpdGVyYXRvciBfX2syKQogICAgICB7CgogICAgICAgICAg
ICAgICAgICAgICAgICAgIDsKIDsKIHJldHVybiB0aGlzLT5yZXBsYWNlKF9faTEgLSBfTV9pYmVn
aW4oKSwgX19pMiAtIF9faTEsCiAgICAgICAgX19rMS5iYXNlKCksIF9fazIgLSBfX2sxKTsKICAg
ICAgfQoKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICByZXBsYWNlKGl0ZXJhdG9yIF9faTEsIGl0
ZXJhdG9yIF9faTIsCiAgICAgICBjb25zdF9pdGVyYXRvciBfX2sxLCBjb25zdF9pdGVyYXRvciBf
X2syKQogICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAgIDsKIDsKIHJldHVybiB0aGlz
LT5yZXBsYWNlKF9faTEgLSBfTV9pYmVnaW4oKSwgX19pMiAtIF9faTEsCiAgICAgICAgX19rMS5i
YXNlKCksIF9fazIgLSBfX2sxKTsKICAgICAgfQojIDE3MTAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcuaCIg
MwogICAgICBiYXNpY19zdHJpbmcmIHJlcGxhY2UoaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19p
MiwKICAgICAgIGluaXRpYWxpemVyX2xpc3Q8X0NoYXJUPiBfX2wpCiAgICAgIHsgcmV0dXJuIHRo
aXMtPnJlcGxhY2UoX19pMSwgX19pMiwgX19sLmJlZ2luKCksIF9fbC5lbmQoKSk7IH0KCgogICAg
cHJpdmF0ZToKICAgICAgdGVtcGxhdGU8Y2xhc3MgX0ludGVnZXI+CiBiYXNpY19zdHJpbmcmCiBf
TV9yZXBsYWNlX2Rpc3BhdGNoKGl0ZXJhdG9yIF9faTEsIGl0ZXJhdG9yIF9faTIsIF9JbnRlZ2Vy
IF9fbiwKICAgICAgIF9JbnRlZ2VyIF9fdmFsLCBfX3RydWVfdHlwZSkKICAgICAgICB7IHJldHVy
biBfTV9yZXBsYWNlX2F1eChfX2kxIC0gX01faWJlZ2luKCksIF9faTIgLSBfX2kxLCBfX24sIF9f
dmFsKTsgfQoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiBiYXNpY19zdHJp
bmcmCiBfTV9yZXBsYWNlX2Rpc3BhdGNoKGl0ZXJhdG9yIF9faTEsIGl0ZXJhdG9yIF9faTIsIF9J
bnB1dEl0ZXJhdG9yIF9fazEsCiAgICAgICBfSW5wdXRJdGVyYXRvciBfX2syLCBfX2ZhbHNlX3R5
cGUpOwoKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBfTV9yZXBsYWNlX2F1eChzaXplX3R5cGUg
X19wb3MxLCBzaXplX3R5cGUgX19uMSwgc2l6ZV90eXBlIF9fbjIsCiAgICAgICBfQ2hhclQgX19j
KTsKCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgX01fcmVwbGFjZV9zYWZlKHNpemVfdHlwZSBf
X3BvczEsIHNpemVfdHlwZSBfX24xLCBjb25zdCBfQ2hhclQqIF9fcywKICAgICAgICBzaXplX3R5
cGUgX19uMik7CgoKCiAgICAgIHRlbXBsYXRlPGNsYXNzIF9Jbkl0ZXJhdG9yPgogICAgICAgIHN0
YXRpYyBfQ2hhclQqCiAgICAgICAgX1NfY29uc3RydWN0X2F1eChfSW5JdGVyYXRvciBfX2JlZywg
X0luSXRlcmF0b3IgX19lbmQsCiAgICBjb25zdCBfQWxsb2MmIF9fYSwgX19mYWxzZV90eXBlKQog
ewogICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0luSXRlcmF0b3I+
OjppdGVyYXRvcl9jYXRlZ29yeSBfVGFnOwogICAgICAgICAgcmV0dXJuIF9TX2NvbnN0cnVjdChf
X2JlZywgX19lbmQsIF9fYSwgX1RhZygpKTsKIH0KCgoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX0lu
dGVnZXI+CiAgICAgICAgc3RhdGljIF9DaGFyVCoKICAgICAgICBfU19jb25zdHJ1Y3RfYXV4KF9J
bnRlZ2VyIF9fYmVnLCBfSW50ZWdlciBfX2VuZCwKICAgIGNvbnN0IF9BbGxvYyYgX19hLCBfX3Ry
dWVfdHlwZSkKICAgICAgICB7IHJldHVybiBfU19jb25zdHJ1Y3RfYXV4XzIoc3RhdGljX2Nhc3Q8
c2l6ZV90eXBlPihfX2JlZyksCiAgICAgICAgX19lbmQsIF9fYSk7IH0KCiAgICAgIHN0YXRpYyBf
Q2hhclQqCiAgICAgIF9TX2NvbnN0cnVjdF9hdXhfMihzaXplX3R5cGUgX19yZXEsIF9DaGFyVCBf
X2MsIGNvbnN0IF9BbGxvYyYgX19hKQogICAgICB7IHJldHVybiBfU19jb25zdHJ1Y3QoX19yZXEs
IF9fYywgX19hKTsgfQoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX0luSXRlcmF0b3I+CiAgICAgICAg
c3RhdGljIF9DaGFyVCoKICAgICAgICBfU19jb25zdHJ1Y3QoX0luSXRlcmF0b3IgX19iZWcsIF9J
bkl0ZXJhdG9yIF9fZW5kLCBjb25zdCBfQWxsb2MmIF9fYSkKIHsKICAgdHlwZWRlZiB0eXBlbmFt
ZSBzdGQ6Ol9faXNfaW50ZWdlcjxfSW5JdGVyYXRvcj46Ol9fdHlwZSBfSW50ZWdyYWw7CiAgIHJl
dHVybiBfU19jb25zdHJ1Y3RfYXV4KF9fYmVnLCBfX2VuZCwgX19hLCBfSW50ZWdyYWwoKSk7CiAg
ICAgICAgfQoKCiAgICAgIHRlbXBsYXRlPGNsYXNzIF9Jbkl0ZXJhdG9yPgogICAgICAgIHN0YXRp
YyBfQ2hhclQqCiAgICAgICAgIF9TX2NvbnN0cnVjdChfSW5JdGVyYXRvciBfX2JlZywgX0luSXRl
cmF0b3IgX19lbmQsIGNvbnN0IF9BbGxvYyYgX19hLAogICAgICAgIGlucHV0X2l0ZXJhdG9yX3Rh
Zyk7CgoKCiAgICAgIHRlbXBsYXRlPGNsYXNzIF9Gd2RJdGVyYXRvcj4KICAgICAgICBzdGF0aWMg
X0NoYXJUKgogICAgICAgIF9TX2NvbnN0cnVjdChfRndkSXRlcmF0b3IgX19iZWcsIF9Gd2RJdGVy
YXRvciBfX2VuZCwgY29uc3QgX0FsbG9jJiBfX2EsCiAgICAgICBmb3J3YXJkX2l0ZXJhdG9yX3Rh
Zyk7CgogICAgICBzdGF0aWMgX0NoYXJUKgogICAgICBfU19jb25zdHJ1Y3Qoc2l6ZV90eXBlIF9f
cmVxLCBfQ2hhclQgX19jLCBjb25zdCBfQWxsb2MmIF9fYSk7CgogICAgcHVibGljOgojIDE3OTcg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
Yml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgY29weShfQ2hhclQq
IF9fcywgc2l6ZV90eXBlIF9fbiwgc2l6ZV90eXBlIF9fcG9zID0gMCkgY29uc3Q7CiMgMTgwOCAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9i
aXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHZvaWQKICAgICAgc3dhcChiYXNpY19zdHJpbmcm
IF9fcyk7CiMgMTgxOCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGNvbnN0IF9DaGFyVCoK
ICAgICAgY19zdHIoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9kYXRhKCk7IH0K
CgoKCgoKCiAgICAgIGNvbnN0IF9DaGFyVCoKICAgICAgZGF0YSgpIGNvbnN0IG5vZXhjZXB0CiAg
ICAgIHsgcmV0dXJuIF9NX2RhdGEoKTsgfQoKCgoKICAgICAgYWxsb2NhdG9yX3R5cGUKICAgICAg
Z2V0X2FsbG9jYXRvcigpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX2RhdGFwbHVz
OyB9CiMgMTg1MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHNpemVfdHlwZQogICAgICBm
aW5kKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNv
bnN0OwojIDE4NjQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAg
ZmluZChjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLCBzaXplX3R5cGUgX19wb3MgPSAwKSBjb25z
dAogbm9leGNlcHQKICAgICAgeyByZXR1cm4gdGhpcy0+ZmluZChfX3N0ci5kYXRhKCksIF9fcG9z
LCBfX3N0ci5zaXplKCkpOyB9CiMgMTg3OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHNp
emVfdHlwZQogICAgICBmaW5kKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MgPSAw
KSBjb25zdAogICAgICB7CiA7CiByZXR1cm4gdGhpcy0+ZmluZChfX3MsIF9fcG9zLCB0cmFpdHNf
dHlwZTo6bGVuZ3RoKF9fcykpOwogICAgICB9CiMgMTg5NiAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAz
CiAgICAgIHNpemVfdHlwZQogICAgICBmaW5kKF9DaGFyVCBfX2MsIHNpemVfdHlwZSBfX3BvcyA9
IDApIGNvbnN0IG5vZXhjZXB0OwojIDE5MDkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBz
aXplX3R5cGUKICAgICAgcmZpbmQoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBl
IF9fcG9zID0gbnBvcykgY29uc3QKIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHRoaXMtPnJmaW5k
KF9fc3RyLmRhdGEoKSwgX19wb3MsIF9fc3RyLnNpemUoKSk7IH0KIyAxOTI2ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNf
c3RyaW5nLmgiIDMKICAgICAgc2l6ZV90eXBlCiAgICAgIHJmaW5kKGNvbnN0IF9DaGFyVCogX19z
LCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNvbnN0OwojIDE5MzkgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9iYXNp
Y19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgcmZpbmQoY29uc3QgX0NoYXJUKiBf
X3MsIHNpemVfdHlwZSBfX3BvcyA9IG5wb3MpIGNvbnN0CiAgICAgIHsKIDsKIHJldHVybiB0aGlz
LT5yZmluZChfX3MsIF9fcG9zLCB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcykpOwogICAgICB9CiMg
MTk1NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHNpemVfdHlwZQogICAgICByZmluZChf
Q2hhclQgX19jLCBzaXplX3R5cGUgX19wb3MgPSBucG9zKSBjb25zdCBub2V4Y2VwdDsKIyAxOTcw
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgc2l6ZV90eXBlCiAgICAgIGZpbmRfZmlyc3Rf
b2YoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zID0gMCkgY29uc3QK
IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmZpbmRfZmlyc3Rfb2YoX19zdHIuZGF0YSgp
LCBfX3BvcywgX19zdHIuc2l6ZSgpKTsgfQojIDE5ODcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcuaCIgMwog
ICAgICBzaXplX3R5cGUKICAgICAgZmluZF9maXJzdF9vZihjb25zdCBfQ2hhclQqIF9fcywgc2l6
ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uKSBjb25zdDsKIyAyMDAwICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3Ry
aW5nLmgiIDMKICAgICAgc2l6ZV90eXBlCiAgICAgIGZpbmRfZmlyc3Rfb2YoY29uc3QgX0NoYXJU
KiBfX3MsIHNpemVfdHlwZSBfX3BvcyA9IDApIGNvbnN0CiAgICAgIHsKIDsKIHJldHVybiB0aGlz
LT5maW5kX2ZpcnN0X29mKF9fcywgX19wb3MsIHRyYWl0c190eXBlOjpsZW5ndGgoX19zKSk7CiAg
ICAgIH0KIyAyMDE5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgc2l6ZV90eXBlCiAgICAg
IGZpbmRfZmlyc3Rfb2YoX0NoYXJUIF9fYywgc2l6ZV90eXBlIF9fcG9zID0gMCkgY29uc3Qgbm9l
eGNlcHQKICAgICAgeyByZXR1cm4gdGhpcy0+ZmluZChfX2MsIF9fcG9zKTsgfQojIDIwMzQgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgZmluZF9sYXN0X29mKGNv
bnN0IGJhc2ljX3N0cmluZyYgX19zdHIsIHNpemVfdHlwZSBfX3BvcyA9IG5wb3MpIGNvbnN0CiBu
b2V4Y2VwdAogICAgICB7IHJldHVybiB0aGlzLT5maW5kX2xhc3Rfb2YoX19zdHIuZGF0YSgpLCBf
X3BvcywgX19zdHIuc2l6ZSgpKTsgfQojIDIwNTEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAg
ICBzaXplX3R5cGUKICAgICAgZmluZF9sYXN0X29mKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5
cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNvbnN0OwojIDIwNjQgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcu
aCIgMwogICAgICBzaXplX3R5cGUKICAgICAgZmluZF9sYXN0X29mKGNvbnN0IF9DaGFyVCogX19z
LCBzaXplX3R5cGUgX19wb3MgPSBucG9zKSBjb25zdAogICAgICB7CiA7CiByZXR1cm4gdGhpcy0+
ZmluZF9sYXN0X29mKF9fcywgX19wb3MsIHRyYWl0c190eXBlOjpsZW5ndGgoX19zKSk7CiAgICAg
IH0KIyAyMDgzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgc2l6ZV90eXBlCiAgICAgIGZp
bmRfbGFzdF9vZihfQ2hhclQgX19jLCBzaXplX3R5cGUgX19wb3MgPSBucG9zKSBjb25zdCBub2V4
Y2VwdAogICAgICB7IHJldHVybiB0aGlzLT5yZmluZChfX2MsIF9fcG9zKTsgfQojIDIwOTcgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgZmluZF9maXJzdF9ub3Rf
b2YoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zID0gMCkgY29uc3QK
IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmZpbmRfZmlyc3Rfbm90X29mKF9fc3RyLmRh
dGEoKSwgX19wb3MsIF9fc3RyLnNpemUoKSk7IH0KIyAyMTE0ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgi
IDMKICAgICAgc2l6ZV90eXBlCiAgICAgIGZpbmRfZmlyc3Rfbm90X29mKGNvbnN0IF9DaGFyVCog
X19zLCBzaXplX3R5cGUgX19wb3MsCiAgIHNpemVfdHlwZSBfX24pIGNvbnN0OwojIDIxMjggIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgZmluZF9maXJzdF9ub3Rf
b2YoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3BvcyA9IDApIGNvbnN0CiAgICAgIHsK
IDsKIHJldHVybiB0aGlzLT5maW5kX2ZpcnN0X25vdF9vZihfX3MsIF9fcG9zLCB0cmFpdHNfdHlw
ZTo6bGVuZ3RoKF9fcykpOwogICAgICB9CiMgMjE0NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAg
ICAgIHNpemVfdHlwZQogICAgICBmaW5kX2ZpcnN0X25vdF9vZihfQ2hhclQgX19jLCBzaXplX3R5
cGUgX19wb3MgPSAwKSBjb25zdAogbm9leGNlcHQ7CiMgMjE2MCAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5o
IiAzCiAgICAgIHNpemVfdHlwZQogICAgICBmaW5kX2xhc3Rfbm90X29mKGNvbnN0IGJhc2ljX3N0
cmluZyYgX19zdHIsIHNpemVfdHlwZSBfX3BvcyA9IG5wb3MpIGNvbnN0CiBub2V4Y2VwdAogICAg
ICB7IHJldHVybiB0aGlzLT5maW5kX2xhc3Rfbm90X29mKF9fc3RyLmRhdGEoKSwgX19wb3MsIF9f
c3RyLnNpemUoKSk7IH0KIyAyMTc3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgc2l6ZV90
eXBlCiAgICAgIGZpbmRfbGFzdF9ub3Rfb2YoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBf
X3BvcywKICAgICAgICAgc2l6ZV90eXBlIF9fbikgY29uc3Q7CiMgMjE5MSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0
cmluZy5oIiAzCiAgICAgIHNpemVfdHlwZQogICAgICBmaW5kX2xhc3Rfbm90X29mKGNvbnN0IF9D
aGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MgPSBucG9zKSBjb25zdAogICAgICB7CiA7CiByZXR1
cm4gdGhpcy0+ZmluZF9sYXN0X25vdF9vZihfX3MsIF9fcG9zLCB0cmFpdHNfdHlwZTo6bGVuZ3Ro
KF9fcykpOwogICAgICB9CiMgMjIwOCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHNpemVf
dHlwZQogICAgICBmaW5kX2xhc3Rfbm90X29mKF9DaGFyVCBfX2MsIHNpemVfdHlwZSBfX3BvcyA9
IG5wb3MpIGNvbnN0CiBub2V4Y2VwdDsKIyAyMjI0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAg
ICAgYmFzaWNfc3RyaW5nCiAgICAgIHN1YnN0cihzaXplX3R5cGUgX19wb3MgPSAwLCBzaXplX3R5
cGUgX19uID0gbnBvcykgY29uc3QKICAgICAgeyByZXR1cm4gYmFzaWNfc3RyaW5nKCp0aGlzLAog
ICAgICAgX01fY2hlY2soX19wb3MsICJiYXNpY19zdHJpbmc6OnN1YnN0ciIpLCBfX24pOyB9CiMg
MjI0MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGludAogICAgICBjb21wYXJlKGNvbnN0
IGJhc2ljX3N0cmluZyYgX19zdHIpIGNvbnN0CiAgICAgIHsKIGNvbnN0IHNpemVfdHlwZSBfX3Np
emUgPSB0aGlzLT5zaXplKCk7CiBjb25zdCBzaXplX3R5cGUgX19vc2l6ZSA9IF9fc3RyLnNpemUo
KTsKIGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9IHN0ZDo6bWluKF9fc2l6ZSwgX19vc2l6ZSk7Cgog
aW50IF9fciA9IHRyYWl0c190eXBlOjpjb21wYXJlKF9NX2RhdGEoKSwgX19zdHIuZGF0YSgpLCBf
X2xlbik7CiBpZiAoIV9fcikKICAgX19yID0gX1NfY29tcGFyZShfX3NpemUsIF9fb3NpemUpOwog
cmV0dXJuIF9fcjsKICAgICAgfQojIDIyNzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBp
bnQKICAgICAgY29tcGFyZShzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24sIGNvbnN0IGJh
c2ljX3N0cmluZyYgX19zdHIpIGNvbnN0OwojIDIzMDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcuaCIgMwog
ICAgICBpbnQKICAgICAgY29tcGFyZShzaXplX3R5cGUgX19wb3MxLCBzaXplX3R5cGUgX19uMSwg
Y29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwKICAgICAgIHNpemVfdHlwZSBfX3BvczIsIHNpemVf
dHlwZSBfX24yKSBjb25zdDsKIyAyMzE5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgaW50
CiAgICAgIGNvbXBhcmUoY29uc3QgX0NoYXJUKiBfX3MpIGNvbnN0OwojIDIzNDMgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9iYXNp
Y19zdHJpbmcuaCIgMwogICAgICBpbnQKICAgICAgY29tcGFyZShzaXplX3R5cGUgX19wb3MsIHNp
emVfdHlwZSBfX24xLCBjb25zdCBfQ2hhclQqIF9fcykgY29uc3Q7CiMgMjM3MCAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2lj
X3N0cmluZy5oIiAzCiAgICAgIGludAogICAgICBjb21wYXJlKHNpemVfdHlwZSBfX3Bvcywgc2l6
ZV90eXBlIF9fbjEsIGNvbnN0IF9DaGFyVCogX19zLAogICAgICAgc2l6ZV90eXBlIF9fbjIpIGNv
bnN0OwogIH07CiMgMjM4MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19z
dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+CiAgICBvcGVyYXRvcisoY29uc3QgYmFzaWNf
c3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAgICBjb25zdCBiYXNp
Y19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsKICAgICAgYmFz
aWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiBfX3N0cihfX2xocyk7CiAgICAgIF9f
c3RyLmFwcGVuZChfX3Jocyk7CiAgICAgIHJldHVybiBfX3N0cjsKICAgIH0KCgoKCgoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+
CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULF9UcmFpdHMsX0FsbG9jPgogICAgb3BlcmF0b3IrKGNv
bnN0IF9DaGFyVCogX19saHMsCiAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULF9UcmFp
dHMsX0FsbG9jPiYgX19yaHMpOwoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5
cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQs
X1RyYWl0cyxfQWxsb2M+CiAgICBvcGVyYXRvcisoX0NoYXJUIF9fbGhzLCBjb25zdCBiYXNpY19z
dHJpbmc8X0NoYXJULF9UcmFpdHMsX0FsbG9jPiYgX19yaHMpOwoKCgoKCgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlu
bGluZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+CiAgICBvcGVyYXRvciso
Y29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAg
IGNvbnN0IF9DaGFyVCogX19yaHMpCiAgICB7CiAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U
cmFpdHMsIF9BbGxvYz4gX19zdHIoX19saHMpOwogICAgICBfX3N0ci5hcHBlbmQoX19yaHMpOwog
ICAgICByZXR1cm4gX19zdHI7CiAgICB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJhc2ljX3N0
cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4KICAgIG9wZXJhdG9yKyhjb25zdCBiYXNpY19z
dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX2xocywgX0NoYXJUIF9fcmhzKQogICAg
ewogICAgICB0eXBlZGVmIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4gX19z
dHJpbmdfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX3N0cmluZ190eXBlOjpzaXplX3R5
cGUgX19zaXplX3R5cGU7CiAgICAgIF9fc3RyaW5nX3R5cGUgX19zdHIoX19saHMpOwogICAgICBf
X3N0ci5hcHBlbmQoX19zaXplX3R5cGUoMSksIF9fcmhzKTsKICAgICAgcmV0dXJuIF9fc3RyOwog
ICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBl
bmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs
bG9jPgogICAgb3BlcmF0b3IrKGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4m
JiBfX2xocywKICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxv
Yz4mIF9fcmhzKQogICAgeyByZXR1cm4gc3RkOjptb3ZlKF9fbGhzLmFwcGVuZChfX3JocykpOyB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUg
X0FsbG9jPgogICAgaW5saW5lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4K
ICAgIG9wZXJhdG9yKyhjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+
JiBfX2xocywKICAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mJiBf
X3JocykKICAgIHsgcmV0dXJuIHN0ZDo6bW92ZShfX3Jocy5pbnNlcnQoMCwgX19saHMpKTsgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9B
bGxvYz4KICAgIGlubGluZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+CiAg
ICBvcGVyYXRvcisoYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYmIF9fbGhz
LAogICAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYmIF9fcmhzKQog
ICAgewogICAgICBjb25zdCBhdXRvIF9fc2l6ZSA9IF9fbGhzLnNpemUoKSArIF9fcmhzLnNpemUo
KTsKICAgICAgY29uc3QgYm9vbCBfX2NvbmQgPSAoX19zaXplID4gX19saHMuY2FwYWNpdHkoKQog
ICAgICAmJiBfX3NpemUgPD0gX19yaHMuY2FwYWNpdHkoKSk7CiAgICAgIHJldHVybiBfX2NvbmQg
PyBzdGQ6Om1vdmUoX19yaHMuaW5zZXJ0KDAsIF9fbGhzKSkKICAgICAgICAgICAgIDogc3RkOjpt
b3ZlKF9fbGhzLmFwcGVuZChfX3JocykpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBiYXNpY19z
dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+CiAgICBvcGVyYXRvcisoY29uc3QgX0NoYXJU
KiBfX2xocywKICAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mJiBf
X3JocykKICAgIHsgcmV0dXJuIHN0ZDo6bW92ZShfX3Jocy5pbnNlcnQoMCwgX19saHMpKTsgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9B
bGxvYz4KICAgIGlubGluZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+CiAg
ICBvcGVyYXRvcisoX0NoYXJUIF9fbGhzLAogICAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry
YWl0cywgX0FsbG9jPiYmIF9fcmhzKQogICAgeyByZXR1cm4gc3RkOjptb3ZlKF9fcmhzLmluc2Vy
dCgwLCAxLCBfX2xocykpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg
X1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJhc2ljX3N0cmluZzxfQ2hhclQs
IF9UcmFpdHMsIF9BbGxvYz4KICAgIG9wZXJhdG9yKyhiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJh
aXRzLCBfQWxsb2M+JiYgX19saHMsCiAgICAgICBjb25zdCBfQ2hhclQqIF9fcmhzKQogICAgeyBy
ZXR1cm4gc3RkOjptb3ZlKF9fbGhzLmFwcGVuZChfX3JocykpOyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5l
IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4KICAgIG9wZXJhdG9yKyhiYXNp
Y19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiYgX19saHMsCiAgICAgICBfQ2hhclQg
X19yaHMpCiAgICB7IHJldHVybiBzdGQ6Om1vdmUoX19saHMuYXBwZW5kKDEsIF9fcmhzKSk7IH0K
IyAyNTAzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBv
cGVyYXRvcj09KGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9f
bGhzLAogICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4m
IF9fcmhzKQogICAgeyByZXR1cm4gX19saHMuY29tcGFyZShfX3JocykgPT0gMDsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUKICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6
X19lbmFibGVfaWY8X19pc19jaGFyPF9DaGFyVD46Ol9fdmFsdWUsIGJvb2w+OjpfX3R5cGUKICAg
IG9wZXJhdG9yPT0oY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVD4mIF9fbGhzLAogICAgICAgIGNv
bnN0IGJhc2ljX3N0cmluZzxfQ2hhclQ+JiBfX3JocykKICAgIHsgcmV0dXJuIChfX2xocy5zaXpl
KCkgPT0gX19yaHMuc2l6ZSgpCiAgICAgICAmJiAhc3RkOjpjaGFyX3RyYWl0czxfQ2hhclQ+Ojpj
b21wYXJlKF9fbGhzLmRhdGEoKSwgX19yaHMuZGF0YSgpLAogICAgICAgICAgX19saHMuc2l6ZSgp
KSk7IH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
LCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I9PShjb25zdCBf
Q2hhclQqIF9fbGhzLAogICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMs
IF9BbGxvYz4mIF9fcmhzKQogICAgeyByZXR1cm4gX19yaHMuY29tcGFyZShfX2xocykgPT0gMDsg
fQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5
cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0IGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhzLAogICAgICAgIGNvbnN0IF9D
aGFyVCogX19yaHMpCiAgICB7IHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSA9PSAwOyB9CiMg
MjU0OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3Bl
cmF0b3IhPShjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX2xo
cywKICAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBf
X3JocykKICAgIHsgcmV0dXJuICEoX19saHMgPT0gX19yaHMpOyB9CgoKCgoKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAg
aW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgX0NoYXJUKiBfX2xocywKICAgICAgICBj
b25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsg
cmV0dXJuICEoX19saHMgPT0gX19yaHMpOyB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wK
ICAgIG9wZXJhdG9yIT0oY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j
PiYgX19saHMsCiAgICAgICAgY29uc3QgX0NoYXJUKiBfX3JocykKICAgIHsgcmV0dXJuICEoX19s
aHMgPT0gX19yaHMpOyB9CiMgMjU4NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBp
bmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFp
dHMsIF9BbGxvYz4mIF9fbGhzLAogICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry
YWl0cywgX0FsbG9jPiYgX19yaHMpCiAgICB7IHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSA8
IDA7IH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
LCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IGJh
c2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhzLAogICAgICAgY29uc3Qg
X0NoYXJUKiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmNvbXBhcmUoX19yaHMpIDwgMDsgfQoK
CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVu
YW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjwoY29uc3QgX0NoYXJUKiBf
X2xocywKICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4m
IF9fcmhzKQogICAgeyByZXR1cm4gX19yaHMuY29tcGFyZShfX2xocykgPiAwOyB9CiMgMjYyMyAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9i
aXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+
KGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhzLAogICAg
ICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19yaHMpCiAg
ICB7IHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSA+IDA7IH0KCgoKCgoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBp
bmxpbmUgYm9vbAogICAgb3BlcmF0b3I+KGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFp
dHMsIF9BbGxvYz4mIF9fbGhzLAogICAgICAgY29uc3QgX0NoYXJUKiBfX3JocykKICAgIHsgcmV0
dXJuIF9fbGhzLmNvbXBhcmUoX19yaHMpID4gMDsgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBi
b29sCiAgICBvcGVyYXRvcj4oY29uc3QgX0NoYXJUKiBfX2xocywKICAgICAgIGNvbnN0IGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fcmhzKQogICAgeyByZXR1cm4gX19y
aHMuY29tcGFyZShfX2xocykgPCAwOyB9CiMgMjY2MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxs
b2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8PShjb25zdCBiYXNpY19zdHJpbmc8X0No
YXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX2xocywKICAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmNvbXBh
cmUoX19yaHMpIDw9IDA7IH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0
b3I8PShjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX2xocywK
ICAgICAgICBjb25zdCBfQ2hhclQqIF9fcmhzKQogICAgeyByZXR1cm4gX19saHMuY29tcGFyZShf
X3JocykgPD0gMDsgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjw9
KGNvbnN0IF9DaGFyVCogX19saHMsCiAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwg
X1RyYWl0cywgX0FsbG9jPiYgX19yaHMpCiAgICB7IHJldHVybiBfX3Jocy5jb21wYXJlKF9fbGhz
KSA+PSAwOyB9CiMgMjY5NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUg
Ym9vbAogICAgb3BlcmF0b3I+PShjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBf
QWxsb2M+JiBfX2xocywKICAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRz
LCBfQWxsb2M+JiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmNvbXBhcmUoX19yaHMpID49IDA7
IH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0
eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+PShjb25zdCBiYXNp
Y19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX2xocywKICAgICAgICBjb25zdCBf
Q2hhclQqIF9fcmhzKQogICAgeyByZXR1cm4gX19saHMuY29tcGFyZShfX3JocykgPj0gMDsgfQoK
CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVu
YW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj49KGNvbnN0IF9DaGFyVCog
X19saHMsCiAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4m
IF9fcmhzKQogICAgeyByZXR1cm4gX19yaHMuY29tcGFyZShfX2xocykgPD0gMDsgfQojIDI3MzQg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
Yml0cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIHZvaWQKICAgIHN3YXAoYmFz
aWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgYmFzaWNfc3RyaW5n
PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19yaHMpCiAgICB7IF9fbGhzLnN3YXAoX19yaHMp
OyB9CiMgMjc1MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19pc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08X0NoYXJULCBf
VHJhaXRzPiYgX19pcywKICAgICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxs
b2M+JiBfX3N0cik7CgogIHRlbXBsYXRlPD4KICAgIGJhc2ljX2lzdHJlYW08Y2hhcj4mCiAgICBv
cGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08Y2hhcj4mIF9faXMsIGJhc2ljX3N0cmluZzxjaGFyPiYg
X19zdHIpOwojIDI3NzAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJh
c2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoYmFzaWNfb3N0cmVh
bTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hh
clQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fc3RyKQogICAgewoKCiAgICAgIHJldHVybiBfX29zdHJl
YW1faW5zZXJ0KF9fb3MsIF9fc3RyLmRhdGEoKSwgX19zdHIuc2l6ZSgpKTsKICAgIH0KIyAyNzkz
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVu
YW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBf
VHJhaXRzPiYKICAgIGdldGxpbmUoYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lz
LAogICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fc3RyLCBfQ2hh
clQgX19kZWxpbSk7CiMgMjgxMCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxp
bmUgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgZ2V0bGluZShiYXNpY19pc3Ry
ZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry
YWl0cywgX0FsbG9jPiYgX19zdHIpCiAgICB7IHJldHVybiBzdGQ6OmdldGxpbmUoX19pcywgX19z
dHIsIF9faXMud2lkZW4oJ1xuJykpOyB9CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYmFzaWNfaXN0cmVh
bTxfQ2hhclQsIF9UcmFpdHM+JgogICAgZ2V0bGluZShiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1Ry
YWl0cz4mJiBfX2lzLAogICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4m
IF9fc3RyLCBfQ2hhclQgX19kZWxpbSkKICAgIHsgcmV0dXJuIHN0ZDo6Z2V0bGluZShfX2lzLCBf
X3N0ciwgX19kZWxpbSk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg
X1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJhc2ljX2lzdHJlYW08X0NoYXJU
LCBfVHJhaXRzPiYKICAgIGdldGxpbmUoYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiYg
X19pcywKICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3N0cikK
ICAgIHsgcmV0dXJuIHN0ZDo6Z2V0bGluZShfX2lzLCBfX3N0cik7IH0KCgogIHRlbXBsYXRlPD4K
ICAgIGJhc2ljX2lzdHJlYW08Y2hhcj4mCiAgICBnZXRsaW5lKGJhc2ljX2lzdHJlYW08Y2hhcj4m
IF9faW4sIGJhc2ljX3N0cmluZzxjaGFyPiYgX19zdHIsCiAgICAgY2hhciBfX2RlbGltKTsKCgog
IHRlbXBsYXRlPD4KICAgIGJhc2ljX2lzdHJlYW08d2NoYXJfdD4mCiAgICBnZXRsaW5lKGJhc2lj
X2lzdHJlYW08d2NoYXJfdD4mIF9faW4sIGJhc2ljX3N0cmluZzx3Y2hhcl90PiYgX19zdHIsCiAg
ICAgd2NoYXJfdCBfX2RlbGltKTsKCgoKfQoKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvZXh0L3N0cmluZ19jb252ZXJzaW9ucy5o
IiAxIDMKIyAzMCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9leHQvc3RyaW5nX2NvbnZlcnNpb25zLmgiIDMKI2RlZmluZSBfU1RSSU5HX0NP
TlZFUlNJT05TX0ggMQoKICAgICAgIAojIDMzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2V4dC9zdHJpbmdfY29udmVyc2lvbnMuaCIgMwoj
IDQxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OS4zL2V4dC9zdHJpbmdfY29udmVyc2lvbnMuaCIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvY3N0ZGxpYiIgMSAzCiMgMzkgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvY3N0
ZGxpYiIgMwogICAgICAgCiMgNDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvY3N0ZGxpYiIgMwoKCgoKI2RlZmluZSBfR0xJQkNYWF9DU1RE
TElCIDEKIyA3NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9jc3RkbGliIiAzCiN1bmRlZiBhYm9ydAojdW5kZWYgYWJzCiN1bmRlZiBhdGV4
aXQKCgojdW5kZWYgYXRfcXVpY2tfZXhpdAoKCiN1bmRlZiBhdG9mCiN1bmRlZiBhdG9pCiN1bmRl
ZiBhdG9sCiN1bmRlZiBic2VhcmNoCiN1bmRlZiBjYWxsb2MKI3VuZGVmIGRpdgojdW5kZWYgZXhp
dAojdW5kZWYgZnJlZQojdW5kZWYgZ2V0ZW52CiN1bmRlZiBsYWJzCiN1bmRlZiBsZGl2CiN1bmRl
ZiBtYWxsb2MKI3VuZGVmIG1ibGVuCiN1bmRlZiBtYnN0b3djcwojdW5kZWYgbWJ0b3djCiN1bmRl
ZiBxc29ydAoKCiN1bmRlZiBxdWlja19leGl0CgoKI3VuZGVmIHJhbmQKI3VuZGVmIHJlYWxsb2MK
I3VuZGVmIHNyYW5kCiN1bmRlZiBzdHJ0b2QKI3VuZGVmIHN0cnRvbAojdW5kZWYgc3RydG91bAoj
dW5kZWYgc3lzdGVtCiN1bmRlZiB3Y3N0b21icwojdW5kZWYgd2N0b21iCgpuYW1lc3BhY2Ugc3Rk
IF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgogIHVzaW5n
IDo6ZGl2X3Q7CiAgdXNpbmcgOjpsZGl2X3Q7CgogIHVzaW5nIDo6YWJvcnQ7CiAgdXNpbmcgOjph
YnM7CiAgdXNpbmcgOjphdGV4aXQ7CgoKICB1c2luZyA6OmF0X3F1aWNrX2V4aXQ7CgoKICB1c2lu
ZyA6OmF0b2Y7CiAgdXNpbmcgOjphdG9pOwogIHVzaW5nIDo6YXRvbDsKICB1c2luZyA6OmJzZWFy
Y2g7CiAgdXNpbmcgOjpjYWxsb2M7CiAgdXNpbmcgOjpkaXY7CiAgdXNpbmcgOjpleGl0OwogIHVz
aW5nIDo6ZnJlZTsKICB1c2luZyA6OmdldGVudjsKICB1c2luZyA6OmxhYnM7CiAgdXNpbmcgOjps
ZGl2OwogIHVzaW5nIDo6bWFsbG9jOwoKICB1c2luZyA6Om1ibGVuOwogIHVzaW5nIDo6bWJzdG93
Y3M7CiAgdXNpbmcgOjptYnRvd2M7CgogIHVzaW5nIDo6cXNvcnQ7CgoKICB1c2luZyA6OnF1aWNr
X2V4aXQ7CgoKICB1c2luZyA6OnJhbmQ7CiAgdXNpbmcgOjpyZWFsbG9jOwogIHVzaW5nIDo6c3Jh
bmQ7CiAgdXNpbmcgOjpzdHJ0b2Q7CiAgdXNpbmcgOjpzdHJ0b2w7CiAgdXNpbmcgOjpzdHJ0b3Vs
OwogIHVzaW5nIDo6c3lzdGVtOwoKICB1c2luZyA6Ondjc3RvbWJzOwogIHVzaW5nIDo6d2N0b21i
OwoKCgogIGlubGluZSBsb25nCiAgYWJzKGxvbmcgX19pKSB7IHJldHVybiBfX2J1aWx0aW5fbGFi
cyhfX2kpOyB9CgogIGlubGluZSBsZGl2X3QKICBkaXYobG9uZyBfX2ksIGxvbmcgX19qKSB7IHJl
dHVybiBsZGl2KF9faSwgX19qKTsgfQoKCgogIGlubGluZSBsb25nIGxvbmcKICBhYnMobG9uZyBs
b25nIF9feCkgeyByZXR1cm4gX19idWlsdGluX2xsYWJzIChfX3gpOyB9CgoKCgoKCgoKfQoKCgoj
dW5kZWYgX0V4aXQKI3VuZGVmIGxsYWJzCiN1bmRlZiBsbGRpdgojdW5kZWYgYXRvbGwKI3VuZGVm
IHN0cnRvbGwKI3VuZGVmIHN0cnRvdWxsCiN1bmRlZiBzdHJ0b2YKI3VuZGVmIHN0cnRvbGQKCm5h
bWVzcGFjZSBfX2dudV9jeHggX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVs
dCIpKSkKewoKCgogIHVzaW5nIDo6bGxkaXZfdDsKCgoKCgogIHVzaW5nIDo6X0V4aXQ7CgoKCiAg
dXNpbmcgOjpsbGFiczsKCiAgaW5saW5lIGxsZGl2X3QKICBkaXYobG9uZyBsb25nIF9fbiwgbG9u
ZyBsb25nIF9fZCkKICB7IGxsZGl2X3QgX19xOyBfX3EucXVvdCA9IF9fbiAvIF9fZDsgX19xLnJl
bSA9IF9fbiAlIF9fZDsgcmV0dXJuIF9fcTsgfQoKICB1c2luZyA6OmxsZGl2OwojIDIyOCAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9jc3Rk
bGliIiAzCiAgdXNpbmcgOjphdG9sbDsKICB1c2luZyA6OnN0cnRvbGw7CiAgdXNpbmcgOjpzdHJ0
b3VsbDsKCiAgdXNpbmcgOjpzdHJ0b2Y7CiAgdXNpbmcgOjpzdHJ0b2xkOwoKCn0KCm5hbWVzcGFj
ZSBzdGQKewoKICB1c2luZyA6Ol9fZ251X2N4eDo6bGxkaXZfdDsKCiAgdXNpbmcgOjpfX2dudV9j
eHg6Ol9FeGl0OwoKICB1c2luZyA6Ol9fZ251X2N4eDo6bGxhYnM7CiAgdXNpbmcgOjpfX2dudV9j
eHg6OmRpdjsKICB1c2luZyA6Ol9fZ251X2N4eDo6bGxkaXY7CgogIHVzaW5nIDo6X19nbnVfY3h4
OjphdG9sbDsKICB1c2luZyA6Ol9fZ251X2N4eDo6c3RydG9mOwogIHVzaW5nIDo6X19nbnVfY3h4
OjpzdHJ0b2xsOwogIHVzaW5nIDo6X19nbnVfY3h4OjpzdHJ0b3VsbDsKICB1c2luZyA6Ol9fZ251
X2N4eDo6c3RydG9sZDsKfQojIDQyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2V4dC9zdHJpbmdfY29udmVyc2lvbnMuaCIgMiAzCiMgMSAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9j
d2NoYXIiIDEgMwojIDM5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2N3Y2hhciIgMwogICAgICAgCiMgNDAgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvY3djaGFyIiAzCgoKCgojIDEg
Ii91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMgNAojIDg5OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgi
IDMgNAojdW5kZWYgX19uZWVkX21ic3RhdGVfdAojdW5kZWYgX19uZWVkX3dpbnRfdAojIDQ1ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2N3
Y2hhciIgMiAzCiMgNDMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvZXh0L3N0cmluZ19jb252ZXJzaW9ucy5oIiAyIDMKIyAxICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2NzdGRpbyIg
MSAzCiMgMzkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvY3N0ZGlvIiAzCiAgICAgICAKIyA0MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9jc3RkaW8iIDMKCgojIDEgIi91c3IvaW5j
bHVkZS9zdGRpby5oIiAxIDMgNAojIDI2ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CiNkZWZp
bmUgX1NURElPX0ggMQoKCmV4dGVybiAiQyIgewoKI2RlZmluZSBfX25lZWRfc2l6ZV90IAojZGVm
aW5lIF9fbmVlZF9OVUxMIAojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDIzNCAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUvc3RkZGVm
LmgiIDMgNAojdW5kZWYgX19uZWVkX3NpemVfdAojIDM5NyAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2Mv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5k
ZWYgTlVMTAoKI2RlZmluZSBOVUxMIF9fbnVsbAojIDQwOCAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2Mv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5k
ZWYgX19uZWVkX05VTEwKIyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CgoKI2RlZmlu
ZSBfX25lZWRfRklMRSAKI2RlZmluZSBfX25lZWRfX19GSUxFIAojIDU4ICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMyA0CiN1bmRlZiBfX25lZWRfRklMRQojIDY4ICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMyA0CiN1bmRlZiBfX25lZWRfX19GSUxFCgoKCiNkZWZpbmUgX1NURElPX1VTRVNfSU9TVFJF
QU0gCgojIDEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAxIDMgNAojIDI5ICIvdXNyL2luY2x1ZGUv
bGliaW8uaCIgMyA0CiNkZWZpbmUgX0lPX1NURElPX0ggCgojIDEgIi91c3IvaW5jbHVkZS9fR19j
b25maWcuaCIgMSAzIDQKCgoKCiNkZWZpbmUgX0dfY29uZmlnX2ggMQoKCgoKI2RlZmluZSBfX25l
ZWRfc2l6ZV90IAoKCgojZGVmaW5lIF9fbmVlZF9OVUxMIAojIDEgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIv
Z2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMg
NAojIDIzNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQu
OS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgX19uZWVkX3NpemVfdAojIDM5NyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUv
c3RkZGVmLmgiIDMgNAojdW5kZWYgTlVMTAoKI2RlZmluZSBOVUxMIF9fbnVsbAojIDQwOCAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUv
c3RkZGVmLmgiIDMgNAojdW5kZWYgX19uZWVkX05VTEwKIyAxNiAiL3Vzci9pbmNsdWRlL19HX2Nv
bmZpZy5oIiAyIDMgNAojZGVmaW5lIF9fbmVlZF9tYnN0YXRlX3QgCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL3djaGFyLmgiIDEgMyA0CiMgODk5ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0CiN1bmRl
ZiBfX25lZWRfbWJzdGF0ZV90CiN1bmRlZiBfX25lZWRfd2ludF90CiMgMjEgIi91c3IvaW5jbHVk
ZS9fR19jb25maWcuaCIgMiAzIDQKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmX3QgX19wb3M7CiAg
X19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zX3Q7CnR5cGVkZWYgc3RydWN0CnsKICBfX29m
ZjY0X3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zNjRfdDsKIyA0NiAi
L3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzIDQKI2RlZmluZSBfR192YV9saXN0IF9fZ251Y192
YV9saXN0CgojZGVmaW5lIF9HX0hBVkVfTU1BUCAxCiNkZWZpbmUgX0dfSEFWRV9NUkVNQVAgMQoK
I2RlZmluZSBfR19JT19JT19GSUxFX1ZFUlNJT04gMHgyMDAwMQoKCiNkZWZpbmUgX0dfSEFWRV9T
VF9CTEtTSVpFIGRlZmluZWQgKF9TVEFUQlVGX1NUX0JMS1NJWkUpCgojZGVmaW5lIF9HX0JVRlNJ
WiA4MTkyCiMgMzIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMgNAoKI2RlZmluZSBfSU9fZnBv
c190IF9HX2Zwb3NfdAojZGVmaW5lIF9JT19mcG9zNjRfdCBfR19mcG9zNjRfdAojZGVmaW5lIF9J
T19zaXplX3Qgc2l6ZV90CiNkZWZpbmUgX0lPX3NzaXplX3QgX19zc2l6ZV90CiNkZWZpbmUgX0lP
X29mZl90IF9fb2ZmX3QKI2RlZmluZSBfSU9fb2ZmNjRfdCBfX29mZjY0X3QKI2RlZmluZSBfSU9f
cGlkX3QgX19waWRfdAojZGVmaW5lIF9JT191aWRfdCBfX3VpZF90CiNkZWZpbmUgX0lPX2ljb252
X3QgX0dfaWNvbnZfdAojZGVmaW5lIF9JT19IQVZFX1NUX0JMS1NJWkUgX0dfSEFWRV9TVF9CTEtT
SVpFCiNkZWZpbmUgX0lPX0JVRlNJWiBfR19CVUZTSVoKI2RlZmluZSBfSU9fdmFfbGlzdCBfR192
YV9saXN0CiNkZWZpbmUgX0lPX3dpbnRfdCB3aW50X3QKCgojZGVmaW5lIF9fbmVlZF9fX3ZhX2xp
c3QgCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQu
OS4zL2luY2x1ZGUvc3RkYXJnLmgiIDEgMyA0CiMgMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGFyZy5oIiAzIDQKI3VuZGVm
IF9fbmVlZF9fX3ZhX2xpc3QKIyA1MCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMyA0CgojdW5k
ZWYgX0lPX3ZhX2xpc3QKI2RlZmluZSBfSU9fdmFfbGlzdCBfX2dudWNfdmFfbGlzdAoKCgoKCgoj
ZGVmaW5lIF9JT19VTklGSUVEX0pVTVBUQUJMRVMgMQoKCiNkZWZpbmUgRU9GICgtMSkKIyA3NyAi
L3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAojZGVmaW5lIF9JT1NfSU5QVVQgMQojZGVmaW5lIF9J
T1NfT1VUUFVUIDIKI2RlZmluZSBfSU9TX0FURU5EIDQKI2RlZmluZSBfSU9TX0FQUEVORCA4CiNk
ZWZpbmUgX0lPU19UUlVOQyAxNgojZGVmaW5lIF9JT1NfTk9DUkVBVEUgMzIKI2RlZmluZSBfSU9T
X05PUkVQTEFDRSA2NAojZGVmaW5lIF9JT1NfQklOIDEyOAoKCgoKCgoKI2RlZmluZSBfSU9fTUFH
SUMgMHhGQkFEMDAwMAojZGVmaW5lIF9PTERfU1RESU9fTUFHSUMgMHhGQUJDMDAwMAojZGVmaW5l
IF9JT19NQUdJQ19NQVNLIDB4RkZGRjAwMDAKI2RlZmluZSBfSU9fVVNFUl9CVUYgMQojZGVmaW5l
IF9JT19VTkJVRkZFUkVEIDIKI2RlZmluZSBfSU9fTk9fUkVBRFMgNAojZGVmaW5lIF9JT19OT19X
UklURVMgOAojZGVmaW5lIF9JT19FT0ZfU0VFTiAweDEwCiNkZWZpbmUgX0lPX0VSUl9TRUVOIDB4
MjAKI2RlZmluZSBfSU9fREVMRVRFX0RPTlRfQ0xPU0UgMHg0MAojZGVmaW5lIF9JT19MSU5LRUQg
MHg4MAojZGVmaW5lIF9JT19JTl9CQUNLVVAgMHgxMDAKI2RlZmluZSBfSU9fTElORV9CVUYgMHgy
MDAKI2RlZmluZSBfSU9fVElFRF9QVVRfR0VUIDB4NDAwCiNkZWZpbmUgX0lPX0NVUlJFTlRMWV9Q
VVRUSU5HIDB4ODAwCiNkZWZpbmUgX0lPX0lTX0FQUEVORElORyAweDEwMDAKI2RlZmluZSBfSU9f
SVNfRklMRUJVRiAweDIwMDAKI2RlZmluZSBfSU9fQkFEX1NFRU4gMHg0MDAwCiNkZWZpbmUgX0lP
X1VTRVJfTE9DSyAweDgwMDAKCiNkZWZpbmUgX0lPX0ZMQUdTMl9NTUFQIDEKI2RlZmluZSBfSU9f
RkxBR1MyX05PVENBTkNFTCAyCgoKCiNkZWZpbmUgX0lPX0ZMQUdTMl9VU0VSX1dCVUYgOAoKCgoK
CgoKI2RlZmluZSBfSU9fU0tJUFdTIDAxCiNkZWZpbmUgX0lPX0xFRlQgMDIKI2RlZmluZSBfSU9f
UklHSFQgMDQKI2RlZmluZSBfSU9fSU5URVJOQUwgMDEwCiNkZWZpbmUgX0lPX0RFQyAwMjAKI2Rl
ZmluZSBfSU9fT0NUIDA0MAojZGVmaW5lIF9JT19IRVggMDEwMAojZGVmaW5lIF9JT19TSE9XQkFT
RSAwMjAwCiNkZWZpbmUgX0lPX1NIT1dQT0lOVCAwNDAwCiNkZWZpbmUgX0lPX1VQUEVSQ0FTRSAw
MTAwMAojZGVmaW5lIF9JT19TSE9XUE9TIDAyMDAwCiNkZWZpbmUgX0lPX1NDSUVOVElGSUMgMDQw
MDAKI2RlZmluZSBfSU9fRklYRUQgMDEwMDAwCiNkZWZpbmUgX0lPX1VOSVRCVUYgMDIwMDAwCiNk
ZWZpbmUgX0lPX1NURElPIDA0MDAwMAojZGVmaW5lIF9JT19ET05UX0NMT1NFIDAxMDAwMDAKI2Rl
ZmluZSBfSU9fQk9PTEFMUEhBIDAyMDAwMDAKCgpzdHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9J
T19GSUxFOwojIDE1NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAp0eXBlZGVmIHZvaWQgX0lP
X2xvY2tfdDsKCgoKCgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9u
ZXh0OwogIHN0cnVjdCBfSU9fRklMRSAqX3NidWY7CgoKCiAgaW50IF9wb3M7CiMgMTc3ICIvdXNy
L2luY2x1ZGUvbGliaW8uaCIgMyA0Cn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsKICBfX2Nv
ZGVjdnRfb2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAogIF9fY29k
ZWN2dF9ub2NvbnYKfTsKIyAyNDUgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKc3RydWN0IF9J
T19GSUxFIHsKICBpbnQgX2ZsYWdzOwojZGVmaW5lIF9JT19maWxlX2ZsYWdzIF9mbGFncwoKCgog
IGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBfSU9fcmVhZF9lbmQ7CiAgY2hhciogX0lPX3Jl
YWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfcHRyOwog
IGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciogX0lPX2J1Zl9iYXNlOwogIGNoYXIqIF9JT19i
dWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNlOwogIGNoYXIgKl9JT19iYWNrdXBfYmFzZTsK
ICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAg
c3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGludCBfZmlsZW5vOwoKCgogIGludCBfZmxhZ3My
OwoKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKI2RlZmluZSBfX0hBVkVfQ09MVU1OIAoKICB1bnNp
Z25lZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBzaWduZWQgY2hhciBfdnRhYmxlX29mZnNldDsKICBj
aGFyIF9zaG9ydGJ1ZlsxXTsKCgoKICBfSU9fbG9ja190ICpfbG9jazsKIyAyOTMgIi91c3IvaW5j
bHVkZS9saWJpby5oIiAzIDQKICBfX29mZjY0X3QgX29mZnNldDsKIyAzMDIgIi91c3IvaW5jbHVk
ZS9saWJpby5oIiAzIDQKICB2b2lkICpfX3BhZDE7CiAgdm9pZCAqX19wYWQyOwogIHZvaWQgKl9f
cGFkMzsKICB2b2lkICpfX3BhZDQ7CiAgc2l6ZV90IF9fcGFkNTsKCiAgaW50IF9tb2RlOwoKICBj
aGFyIF91bnVzZWQyWzE1ICogc2l6ZW9mIChpbnQpIC0gNCAqIHNpemVvZiAodm9pZCAqKSAtIHNp
emVvZiAoc2l6ZV90KV07Cgp9OwoKCgoKCnN0cnVjdCBfSU9fRklMRV9wbHVzOwoKZXh0ZXJuIHN0
cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0IF9JT19GSUxF
X3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJf
MV9zdGRlcnJfOwoKI2RlZmluZSBfSU9fc3RkaW4gKChfSU9fRklMRSopKCZfSU9fMl8xX3N0ZGlu
XykpCiNkZWZpbmUgX0lPX3N0ZG91dCAoKF9JT19GSUxFKikoJl9JT18yXzFfc3Rkb3V0XykpCiNk
ZWZpbmUgX0lPX3N0ZGVyciAoKF9JT19GSUxFKikoJl9JT18yXzFfc3RkZXJyXykpCiMgMzM4ICIv
dXNyL2luY2x1ZGUvbGliaW8uaCIgMyA0CnR5cGVkZWYgX19zc2l6ZV90IF9faW9fcmVhZF9mbiAo
dm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMpOwoKCgoKCgoKdHlw
ZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9pZCAqX19jb29raWUsIGNvbnN0IGNoYXIg
Kl9fYnVmLAogICAgIHNpemVfdCBfX24pOwoKCgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2Zu
ICh2b2lkICpfX2Nvb2tpZSwgX19vZmY2NF90ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBp
bnQgX19pb19jbG9zZV9mbiAodm9pZCAqX19jb29raWUpOwoKCgoKdHlwZWRlZiBfX2lvX3JlYWRf
Zm4gY29va2llX3JlYWRfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3dyaXRlX2ZuIGNvb2tpZV93
cml0ZV9mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fc2Vla19mbiBjb29raWVfc2Vla19mdW5jdGlv
bl90Owp0eXBlZGVmIF9faW9fY2xvc2VfZm4gY29va2llX2Nsb3NlX2Z1bmN0aW9uX3Q7CgoKdHlw
ZWRlZiBzdHJ1Y3QKewogIF9faW9fcmVhZF9mbiAqcmVhZDsKICBfX2lvX3dyaXRlX2ZuICp3cml0
ZTsKICBfX2lvX3NlZWtfZm4gKnNlZWs7CiAgX19pb19jbG9zZV9mbiAqY2xvc2U7Cn0gX0lPX2Nv
b2tpZV9pb19mdW5jdGlvbnNfdDsKdHlwZWRlZiBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IGNv
b2tpZV9pb19mdW5jdGlvbnNfdDsKCnN0cnVjdCBfSU9fY29va2llX2ZpbGU7CgoKZXh0ZXJuIHZv
aWQgX0lPX2Nvb2tpZV9pbml0IChzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxlICpfX2NmaWxlLCBpbnQg
X19yZWFkX3dyaXRlLAogICAgICAgIHZvaWQgKl9fY29va2llLCBfSU9fY29va2llX2lvX2Z1bmN0
aW9uc190IF9fZm5zKTsKCgoKCmV4dGVybiAiQyIgewoKCmV4dGVybiBpbnQgX191bmRlcmZsb3cg
KF9JT19GSUxFICopOwpleHRlcm4gaW50IF9fdWZsb3cgKF9JT19GSUxFICopOwpleHRlcm4gaW50
IF9fb3ZlcmZsb3cgKF9JT19GSUxFICosIGludCk7CgoKCgoKCgojZGVmaW5lIF9JT19CRShleHBy
LHJlcykgX19idWlsdGluX2V4cGVjdCAoKGV4cHIpLCByZXMpCgoKCgojZGVmaW5lIF9JT19nZXRj
X3VubG9ja2VkKF9mcCkgKF9JT19CRSAoKF9mcCktPl9JT19yZWFkX3B0ciA+PSAoX2ZwKS0+X0lP
X3JlYWRfZW5kLCAwKSA/IF9fdWZsb3cgKF9mcCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9mcCkt
Pl9JT19yZWFkX3B0cisrKQoKCiNkZWZpbmUgX0lPX3BlZWtjX3VubG9ja2VkKF9mcCkgKF9JT19C
RSAoKF9mcCktPl9JT19yZWFkX3B0ciA+PSAoX2ZwKS0+X0lPX3JlYWRfZW5kLCAwKSAmJiBfX3Vu
ZGVyZmxvdyAoX2ZwKSA9PSBFT0YgPyBFT0YgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9mcCktPl9J
T19yZWFkX3B0cikKCgoKI2RlZmluZSBfSU9fcHV0Y191bmxvY2tlZChfY2gsX2ZwKSAoX0lPX0JF
ICgoX2ZwKS0+X0lPX3dyaXRlX3B0ciA+PSAoX2ZwKS0+X0lPX3dyaXRlX2VuZCwgMCkgPyBfX292
ZXJmbG93IChfZnAsICh1bnNpZ25lZCBjaGFyKSAoX2NoKSkgOiAodW5zaWduZWQgY2hhcikgKCoo
X2ZwKS0+X0lPX3dyaXRlX3B0cisrID0gKF9jaCkpKQojIDQzMSAiL3Vzci9pbmNsdWRlL2xpYmlv
LmgiIDMgNAojZGVmaW5lIF9JT19mZW9mX3VubG9ja2VkKF9fZnApICgoKF9fZnApLT5fZmxhZ3Mg
JiBfSU9fRU9GX1NFRU4pICE9IDApCiNkZWZpbmUgX0lPX2ZlcnJvcl91bmxvY2tlZChfX2ZwKSAo
KChfX2ZwKS0+X2ZsYWdzICYgX0lPX0VSUl9TRUVOKSAhPSAwKQoKZXh0ZXJuIGludCBfSU9fZ2V0
YyAoX0lPX0ZJTEUgKl9fZnApOwpleHRlcm4gaW50IF9JT19wdXRjIChpbnQgX19jLCBfSU9fRklM
RSAqX19mcCk7CmV4dGVybiBpbnQgX0lPX2Zlb2YgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKTsK
ZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CgpleHRlcm4g
aW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpfX2ZwKTsKCgojZGVmaW5lIF9JT19QRU5E
SU5HX09VVFBVVF9DT1VOVChfZnApICgoX2ZwKS0+X0lPX3dyaXRlX3B0ciAtIChfZnApLT5fSU9f
d3JpdGVfYmFzZSkKCgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJv
dyAoKTsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJvdyAoKTsK
ZXh0ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJvdyAoKTsKIyA0NTYg
Ii91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKI2RlZmluZSBfSU9fcGVla2MoX2ZwKSBfSU9fcGVl
a2NfdW5sb2NrZWQgKF9mcCkKI2RlZmluZSBfSU9fZmxvY2tmaWxlKF9mcCkgCiNkZWZpbmUgX0lP
X2Z1bmxvY2tmaWxlKF9mcCkgCiNkZWZpbmUgX0lPX2Z0cnlsb2NrZmlsZShfZnApIAojZGVmaW5l
IF9JT19jbGVhbnVwX3JlZ2lvbl9zdGFydChfZmN0LF9mcCkgCiNkZWZpbmUgX0lPX2NsZWFudXBf
cmVnaW9uX2VuZChfRG9pdCkgCgoKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBf
X3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwKICAgX19nbnVjX3ZhX2xpc3QsIGlu
dCAqX19yZXN0cmljdCk7CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmIChfSU9fRklMRSAqX19yZXN0
cmljdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwKICAgIF9fZ251Y192YV9saXN0KTsKZXh0ZXJu
IF9fc3NpemVfdCBfSU9fcGFkbiAoX0lPX0ZJTEUgKiwgaW50LCBfX3NzaXplX3QpOwpleHRlcm4g
c2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QpOwoKZXh0ZXJuIF9f
b2ZmNjRfdCBfSU9fc2Vla29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQsIGludCk7CmV4
dGVybiBfX29mZjY0X3QgX0lPX3NlZWtwb3MgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50KTsK
CmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhIChfSU9fRklMRSAqKSB0aHJvdyAoKTsK
IyA1MjYgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKfQojIDc1ICIvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMiAzIDQKCgoKCnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFfbGlzdDsKI2RlZmluZSBf
VkFfTElTVF9ERUZJTkVEIAojIDEwOCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKCnR5cGVk
ZWYgX0dfZnBvc190IGZwb3NfdDsKCgoKCgp0eXBlZGVmIF9HX2Zwb3M2NF90IGZwb3M2NF90OwoK
CgojZGVmaW5lIF9JT0ZCRiAwCiNkZWZpbmUgX0lPTEJGIDEKI2RlZmluZSBfSU9OQkYgMgoKCgoK
I2RlZmluZSBCVUZTSVogX0lPX0JVRlNJWgojIDE0MCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMg
NAojZGVmaW5lIFNFRUtfU0VUIDAKI2RlZmluZSBTRUVLX0NVUiAxCiNkZWZpbmUgU0VFS19FTkQg
MgoKI2RlZmluZSBTRUVLX0RBVEEgMwojZGVmaW5lIFNFRUtfSE9MRSA0CgoKCgoKI2RlZmluZSBQ
X3RtcGRpciAiL3RtcCIKIyAxNjQgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKIyAxICIvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3N0ZGlvX2xpbS5oIiAxIDMgNAojIDIz
ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3N0ZGlvX2xpbS5oIiAzIDQK
I2RlZmluZSBMX3RtcG5hbSAyMAojZGVmaW5lIFRNUF9NQVggMjM4MzI4CiNkZWZpbmUgRklMRU5B
TUVfTUFYIDQwOTYKCgojZGVmaW5lIExfY3Rlcm1pZCA5CgojZGVmaW5lIExfY3VzZXJpZCA5CgoK
CgoKI3VuZGVmIEZPUEVOX01BWAojZGVmaW5lIEZPUEVOX01BWCAxNgojIDE2NSAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDIgMyA0CgoKCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEUgKnN0ZGluOwpleHRl
cm4gc3RydWN0IF9JT19GSUxFICpzdGRvdXQ7CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEUgKnN0ZGVy
cjsKCiNkZWZpbmUgc3RkaW4gc3RkaW4KI2RlZmluZSBzdGRvdXQgc3Rkb3V0CiNkZWZpbmUgc3Rk
ZXJyIHN0ZGVycgoKCgpleHRlcm4gaW50IHJlbW92ZSAoY29uc3QgY2hhciAqX19maWxlbmFtZSkg
dGhyb3cgKCk7CgpleHRlcm4gaW50IHJlbmFtZSAoY29uc3QgY2hhciAqX19vbGQsIGNvbnN0IGNo
YXIgKl9fbmV3KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgcmVuYW1lYXQgKGludCBfX29sZGZk
LCBjb25zdCBjaGFyICpfX29sZCwgaW50IF9fbmV3ZmQsCiAgICAgICBjb25zdCBjaGFyICpfX25l
dykgdGhyb3cgKCk7CgoKCgoKCgoKZXh0ZXJuIEZJTEUgKnRtcGZpbGUgKHZvaWQpIDsKIyAyMDUg
Ii91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCAodm9pZCkg
OwoKCgpleHRlcm4gY2hhciAqdG1wbmFtIChjaGFyICpfX3MpIHRocm93ICgpIDsKCgoKCgpleHRl
cm4gY2hhciAqdG1wbmFtX3IgKGNoYXIgKl9fcykgdGhyb3cgKCkgOwojIDIyNyAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gY2hhciAqdGVtcG5hbSAoY29uc3QgY2hhciAqX19kaXIs
IGNvbnN0IGNoYXIgKl9fcGZ4KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxv
Y19fKSkgOwoKCgoKCgoKCmV4dGVybiBpbnQgZmNsb3NlIChGSUxFICpfX3N0cmVhbSk7CgoKCgpl
eHRlcm4gaW50IGZmbHVzaCAoRklMRSAqX19zdHJlYW0pOwoKIyAyNTIgIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzIDQKZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsK
IyAyNjIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGludCBmY2xvc2VhbGwgKHZv
aWQpOwoKCgoKCgoKCgpleHRlcm4gRklMRSAqZm9wZW4gKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19maWxlbmFtZSwKICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzKSA7CgoKCgpl
eHRlcm4gRklMRSAqZnJlb3BlbiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAog
ICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICBGSUxFICpfX3Jl
c3RyaWN0IF9fc3RyZWFtKSA7CiMgMjk1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgoKZXh0
ZXJuIEZJTEUgKmZvcGVuNjQgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAg
ICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpIDsKZXh0ZXJuIEZJTEUgKmZyZW9w
ZW42NCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICBjb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbW9kZXMsCiAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4
dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBjb25zdCBjaGFyICpfX21vZGVzKSB0aHJvdyAo
KSA7CgoKCgoKZXh0ZXJuIEZJTEUgKmZvcGVuY29va2llICh2b2lkICpfX3Jlc3RyaWN0IF9fbWFn
aWNfY29va2llLAogICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICBfSU9f
Y29va2llX2lvX2Z1bmN0aW9uc190IF9faW9fZnVuY3MpIHRocm93ICgpIDsKCgoKCmV4dGVybiBG
SUxFICpmbWVtb3BlbiAodm9pZCAqX19zLCBzaXplX3QgX19sZW4sIGNvbnN0IGNoYXIgKl9fbW9k
ZXMpCiAgdGhyb3cgKCkgOwoKCgoKZXh0ZXJuIEZJTEUgKm9wZW5fbWVtc3RyZWFtIChjaGFyICoq
X19idWZsb2MsIHNpemVfdCAqX19zaXplbG9jKSB0aHJvdyAoKSA7CgoKCgoKCmV4dGVybiB2b2lk
IHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1
ZikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgaW50IF9fbW9kZXMsIHNpemVfdCBf
X24pIHRocm93ICgpOwoKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAoRklMRSAqX19yZXN0cmlj
dCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgc2l6ZV90IF9fc2l6
ZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAoRklMRSAqX19zdHJlYW0pIHRo
cm93ICgpOwoKCgoKCgoKCmV4dGVybiBpbnQgZnByaW50ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSwKICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKTsKCgoKCmV4
dGVybiBpbnQgcHJpbnRmIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoK
ZXh0ZXJuIGludCBzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHZm
cHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwKICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKTsKCgoKCmV4dGVybiBpbnQgdnByaW50
ZiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcp
OwoKZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIGNvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgdGhyb3cg
KCk7CgoKCgoKZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVf
dCBfX21heGxlbiwKICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikK
ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywg
NCkpKTsKCmV4dGVybiBpbnQgdnNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90
IF9fbWF4bGVuLAogICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251
Y192YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9f
IChfX3ByaW50Zl9fLCAzLCAwKSkpOwoKCgoKCgpleHRlcm4gaW50IHZhc3ByaW50ZiAoY2hhciAq
Kl9fcmVzdHJpY3QgX19wdHIsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mLAogICAgICAgIF9f
Z251Y192YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1h
dF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpIDsKZXh0ZXJuIGludCBfX2FzcHJpbnRmIChjaGFyICoq
X19yZXN0cmljdCBfX3B0ciwKICAgICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwg
Li4uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9f
LCAyLCAzKSkpIDsKZXh0ZXJuIGludCBhc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIs
CiAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSkgOwoKCgoKZXh0
ZXJuIGludCB2ZHByaW50ZiAoaW50IF9fZmQsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQs
CiAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJuIGludCBkcHJpbnRmIChpbnQgX19mZCwg
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgIF9fYXR0cmlidXRlX18gKChf
X2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwoKCgoKCgoKCmV4dGVybiBpbnQgZnNjYW5m
IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsIC4uLikgOwoKCgoKZXh0ZXJuIGludCBzY2FuZiAoY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNzY2FuZiAoY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3MsCiAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0
aHJvdyAoKTsKIyA0NjMgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKCgoKCgoKCgpleHRlcm4g
aW50IHZmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm9ybWF0LAogICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpIDsKCgoKCgpleHRlcm4gaW50IHZzY2Fu
ZiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwgMCkpKSA7CgoK
ZXh0ZXJuIGludCB2c3NjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsK
IyA1MjIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKCgoKCgoKCgoKZXh0ZXJuIGludCBmZ2V0
YyAoRklMRSAqX19zdHJlYW0pOwpleHRlcm4gaW50IGdldGMgKEZJTEUgKl9fc3RyZWFtKTsKCgoK
CgpleHRlcm4gaW50IGdldGNoYXIgKHZvaWQpOwoKCgoKI2RlZmluZSBnZXRjKF9mcCkgX0lPX2dl
dGMgKF9mcCkKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7
CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCk7CiMgNTYxICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgZmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsK
CgoKCgoKCgoKCgpleHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSk7CmV4
dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pOwoKCgoKCmV4dGVybiBpbnQg
cHV0Y2hhciAoaW50IF9fYyk7CgoKCgojZGVmaW5lIHB1dGMoX2NoLF9mcCkgX0lPX3B1dGMgKF9j
aCwgX2ZwKQojIDU5NCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGZwdXRj
X3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSk7CgoKCgoKCgpleHRlcm4gaW50IHB1
dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJuIGludCBwdXRjaGFy
X3VubG9ja2VkIChpbnQgX19jKTsKCgoKCgoKZXh0ZXJuIGludCBnZXR3IChGSUxFICpfX3N0cmVh
bSk7CgoKZXh0ZXJuIGludCBwdXR3IChpbnQgX193LCBGSUxFICpfX3N0cmVhbSk7CgoKCgoKCgoK
ZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwgRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSkKICAgICA7CiMgNjM4ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MyA0CmV4dGVybiBjaGFyICpnZXRzIChjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX2RlcHJl
Y2F0ZWRfXykpOwoKCiMgNjQ5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBjaGFy
ICpmZ2V0c191bmxvY2tlZCAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24sCiAgICAgICAg
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwojIDY2NSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDMgNApleHRlcm4gX19zc2l6ZV90IF9fZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGlu
ZXB0ciwKICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwK
ICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKZXh0ZXJuIF9fc3NpemVfdCBn
ZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgIHNpemVfdCAqX19y
ZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwKICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtKSA7CgoKCgoKCgpleHRlcm4gX19zc2l6ZV90IGdldGxpbmUgKGNoYXIgKipfX3Jlc3Ry
aWN0IF9fbGluZXB0ciwKICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sCiAgICAgICBGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgoKCgoKZXh0ZXJuIGludCBmcHV0cyAoY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pOwoKCgoKCmV4
dGVybiBpbnQgcHV0cyAoY29uc3QgY2hhciAqX19zKTsKCgoKCgoKZXh0ZXJuIGludCB1bmdldGMg
KGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKCgoKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9p
ZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgIHNpemVfdCBfX24sIEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBzaXplX3QgZndyaXRlIChjb25z
dCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgIHNpemVfdCBf
X24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKTsKCiMgNzI2ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MyA0CmV4dGVybiBpbnQgZnB1dHNfdW5sb2NrZWQgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19z
LAogICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsKIyA3MzcgIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzIDQKZXh0ZXJuIHNpemVfdCBmcmVhZF91bmxvY2tlZCAodm9pZCAqX19yZXN0cmlj
dCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSkgOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoY29uc3Qgdm9p
ZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgIHNpemVfdCBfX24s
IEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pOwoKCgoKCgoKCmV4dGVybiBpbnQgZnNlZWsgKEZJ
TEUgKl9fc3RyZWFtLCBsb25nIGludCBfX29mZiwgaW50IF9fd2hlbmNlKTsKCgoKCmV4dGVybiBs
b25nIGludCBmdGVsbCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiB2b2lkIHJld2luZCAo
RklMRSAqX19zdHJlYW0pOwoKIyA3NzMgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJu
IGludCBmc2Vla28gKEZJTEUgKl9fc3RyZWFtLCBfX29mZl90IF9fb2ZmLCBpbnQgX193aGVuY2Up
OwoKCgoKZXh0ZXJuIF9fb2ZmX3QgZnRlbGxvIChGSUxFICpfX3N0cmVhbSkgOwojIDc5MiAiL3Vz
ci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKCgoKCgpleHRlcm4gaW50IGZnZXRwb3MgKEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3Bvcyk7CgoKCgpleHRlcm4g
aW50IGZzZXRwb3MgKEZJTEUgKl9fc3RyZWFtLCBjb25zdCBmcG9zX3QgKl9fcG9zKTsKIyA4MTUg
Ii91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKCgoKZXh0ZXJuIGludCBmc2Vla282NCAoRklMRSAq
X19zdHJlYW0sIF9fb2ZmNjRfdCBfX29mZiwgaW50IF9fd2hlbmNlKTsKZXh0ZXJuIF9fb2ZmNjRf
dCBmdGVsbG82NCAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBmZ2V0cG9zNjQgKEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3M2NF90ICpfX3Jlc3RyaWN0IF9fcG9zKTsKZXh0ZXJu
IGludCBmc2V0cG9zNjQgKEZJTEUgKl9fc3RyZWFtLCBjb25zdCBmcG9zNjRfdCAqX19wb3MpOwoK
CgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnIgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVy
biBpbnQgZmVvZiAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpIDsKCmV4dGVybiBpbnQgZmVycm9y
IChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkgOwoKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5s
b2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBmZW9mX3VubG9ja2Vk
IChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkgOwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAo
RklMRSAqX19zdHJlYW0pIHRocm93ICgpIDsKCgoKCgoKCgpleHRlcm4gdm9pZCBwZXJyb3IgKGNv
bnN0IGNoYXIgKl9fcyk7CgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJp
aGYvYml0cy9zeXNfZXJybGlzdC5oIiAxIDMgNAojIDI2ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4
LWdudWVhYmloZi9iaXRzL3N5c19lcnJsaXN0LmgiIDMgNApleHRlcm4gaW50IHN5c19uZXJyOwpl
eHRlcm4gY29uc3QgY2hhciAqY29uc3Qgc3lzX2Vycmxpc3RbXTsKCgpleHRlcm4gaW50IF9zeXNf
bmVycjsKZXh0ZXJuIGNvbnN0IGNoYXIgKmNvbnN0IF9zeXNfZXJybGlzdFtdOwojIDg1NCAiL3Vz
ci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CgoKCgpleHRlcm4gaW50IGZpbGVubyAoRklMRSAqX19z
dHJlYW0pIHRocm93ICgpIDsKCgoKCmV4dGVybiBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxFICpf
X3N0cmVhbSkgdGhyb3cgKCkgOwojIDg3MyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRl
cm4gRklMRSAqcG9wZW4gKGNvbnN0IGNoYXIgKl9fY29tbWFuZCwgY29uc3QgY2hhciAqX19tb2Rl
cykgOwoKCgoKCmV4dGVybiBpbnQgcGNsb3NlIChGSUxFICpfX3N0cmVhbSk7CgoKCgoKZXh0ZXJu
IGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGNoYXIgKmN1
c2VyaWQgKGNoYXIgKl9fcyk7CgoKCgpzdHJ1Y3Qgb2JzdGFjazsKCgpleHRlcm4gaW50IG9ic3Rh
Y2tfcHJpbnRmIChzdHJ1Y3Qgb2JzdGFjayAqX19yZXN0cmljdCBfX29ic3RhY2ssCiAgICAgIGNv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKZXh0ZXJuIGludCBvYnN0
YWNrX3ZwcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAg
IGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICBfX2dudWNfdmFfbGlzdCBf
X2FyZ3MpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRm
X18sIDIsIDApKSk7CgoKCgoKCgpleHRlcm4gdm9pZCBmbG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFt
KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKSA7CgoKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSB0aHJv
dyAoKTsKIyA5MzQgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUv
YXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3N0ZGlvLmgiIDEgMyA0CiMgMjYgIi91c3IvaW5jbHVk
ZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc3RkaW8uaCIgMyA0CiNkZWZpbmUgX19TVERJT19J
TkxJTkUgX19leHRlcm5faW5saW5lCiMgMzUgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFi
aWhmL2JpdHMvc3RkaW8uaCIgMyA0CmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19n
bnVfaW5saW5lX18pKSBpbnQKdnByaW50ZiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwg
X19nbnVjX3ZhX2xpc3QgX19hcmcpCnsKICByZXR1cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQs
IF9fYXJnKTsKfQoKCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGlu
ZV9fKSkgaW50CmdldGNoYXIgKHZvaWQpCnsKICByZXR1cm4gX0lPX2dldGMgKHN0ZGluKTsKfQoK
CgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGludApm
Z2V0Y191bmxvY2tlZCAoRklMRSAqX19mcCkKewogIHJldHVybiAoX19idWlsdGluX2V4cGVjdCAo
KChfX2ZwKS0+X0lPX3JlYWRfcHRyID49IChfX2ZwKS0+X0lPX3JlYWRfZW5kKSwgMCkgPyBfX3Vm
bG93IChfX2ZwKSA6ICoodW5zaWduZWQgY2hhciAqKSAoX19mcCktPl9JT19yZWFkX3B0cisrKTsK
fQoKCgoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBp
bnQKZ2V0Y191bmxvY2tlZCAoRklMRSAqX19mcCkKewogIHJldHVybiAoX19idWlsdGluX2V4cGVj
dCAoKChfX2ZwKS0+X0lPX3JlYWRfcHRyID49IChfX2ZwKS0+X0lPX3JlYWRfZW5kKSwgMCkgPyBf
X3VmbG93IChfX2ZwKSA6ICoodW5zaWduZWQgY2hhciAqKSAoX19mcCktPl9JT19yZWFkX3B0cisr
KTsKfQoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBp
bnQKZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkKewogIHJldHVybiAoX19idWlsdGluX2V4cGVjdCAo
KChzdGRpbiktPl9JT19yZWFkX3B0ciA+PSAoc3RkaW4pLT5fSU9fcmVhZF9lbmQpLCAwKSA/IF9f
dWZsb3cgKHN0ZGluKSA6ICoodW5zaWduZWQgY2hhciAqKSAoc3RkaW4pLT5fSU9fcmVhZF9wdHIr
Kyk7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18p
KSBpbnQKcHV0Y2hhciAoaW50IF9fYykKewogIHJldHVybiBfSU9fcHV0YyAoX19jLCBzdGRvdXQp
Owp9CgoKCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkg
aW50CmZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAo
X19idWlsdGluX2V4cGVjdCAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9fc3RyZWFt
KS0+X0lPX3dyaXRlX2VuZCksIDApID8gX19vdmVyZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBj
aGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRy
KysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2du
dV9pbmxpbmVfXykpIGludApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkK
ewogIHJldHVybiAoX19idWlsdGluX2V4cGVjdCAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIg
Pj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCksIDApID8gX19vdmVyZmxvdyAoX19zdHJlYW0s
ICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5f
SU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRl
X18gKChfX2dudV9pbmxpbmVfXykpIGludApwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKQp7CiAg
cmV0dXJuIChfX2J1aWx0aW5fZXhwZWN0ICgoKHN0ZG91dCktPl9JT193cml0ZV9wdHIgPj0gKHN0
ZG91dCktPl9JT193cml0ZV9lbmQpLCAwKSA/IF9fb3ZlcmZsb3cgKHN0ZG91dCwgKHVuc2lnbmVk
IGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzdGRvdXQpLT5fSU9fd3JpdGVfcHRy
KysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2du
dV9pbmxpbmVfXykpIF9fc3NpemVfdApnZXRsaW5lIChjaGFyICoqX19saW5lcHRyLCBzaXplX3Qg
Kl9fbiwgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gX19nZXRkZWxpbSAoX19saW5lcHRyLCBf
X24sICdcbicsIF9fc3RyZWFtKTsKfQoKCgoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9f
ICgoX19nbnVfaW5saW5lX18pKSBpbnQKX19hdHRyaWJ1dGVfXyAoKF9fbGVhZl9fKSkgZmVvZl91
bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpCnsKICByZXR1cm4gKCgoX19zdHJlYW0p
LT5fZmxhZ3MgJiAweDEwKSAhPSAwKTsKfQoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9f
ICgoX19nbnVfaW5saW5lX18pKSBpbnQKX19hdHRyaWJ1dGVfXyAoKF9fbGVhZl9fKSkgZmVycm9y
X3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkKewogIHJldHVybiAoKChfX3N0cmVh
bSktPl9mbGFncyAmIDB4MjApICE9IDApOwp9CiMgMTkwICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4
LWdudWVhYmloZi9iaXRzL3N0ZGlvLmgiIDMgNAojdW5kZWYgX19TVERJT19JTkxJTkUKIyA5MzUg
Ii91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAojIDk0MyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDMgNAp9CiMgNDMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvY3N0ZGlvIiAyIDMKCgojZGVmaW5lIF9HTElCQ1hYX0NTVERJTyAxCgoKCgoK
CiN1bmRlZiBjbGVhcmVycgojdW5kZWYgZmNsb3NlCiN1bmRlZiBmZW9mCiN1bmRlZiBmZXJyb3IK
I3VuZGVmIGZmbHVzaAojdW5kZWYgZmdldGMKI3VuZGVmIGZnZXRwb3MKI3VuZGVmIGZnZXRzCiN1
bmRlZiBmb3BlbgojdW5kZWYgZnByaW50ZgojdW5kZWYgZnB1dGMKI3VuZGVmIGZwdXRzCiN1bmRl
ZiBmcmVhZAojdW5kZWYgZnJlb3BlbgojdW5kZWYgZnNjYW5mCiN1bmRlZiBmc2VlawojdW5kZWYg
ZnNldHBvcwojdW5kZWYgZnRlbGwKI3VuZGVmIGZ3cml0ZQojdW5kZWYgZ2V0YwojdW5kZWYgZ2V0
Y2hhcgoKI3VuZGVmIGdldHMKCiN1bmRlZiBwZXJyb3IKI3VuZGVmIHByaW50ZgojdW5kZWYgcHV0
YwojdW5kZWYgcHV0Y2hhcgojdW5kZWYgcHV0cwojdW5kZWYgcmVtb3ZlCiN1bmRlZiByZW5hbWUK
I3VuZGVmIHJld2luZAojdW5kZWYgc2NhbmYKI3VuZGVmIHNldGJ1ZgojdW5kZWYgc2V0dmJ1Zgoj
dW5kZWYgc3ByaW50ZgojdW5kZWYgc3NjYW5mCiN1bmRlZiB0bXBmaWxlCiN1bmRlZiB0bXBuYW0K
I3VuZGVmIHVuZ2V0YwojdW5kZWYgdmZwcmludGYKI3VuZGVmIHZwcmludGYKI3VuZGVmIHZzcHJp
bnRmCgpuYW1lc3BhY2Ugc3RkCnsKICB1c2luZyA6OkZJTEU7CiAgdXNpbmcgOjpmcG9zX3Q7Cgog
IHVzaW5nIDo6Y2xlYXJlcnI7CiAgdXNpbmcgOjpmY2xvc2U7CiAgdXNpbmcgOjpmZW9mOwogIHVz
aW5nIDo6ZmVycm9yOwogIHVzaW5nIDo6ZmZsdXNoOwogIHVzaW5nIDo6ZmdldGM7CiAgdXNpbmcg
OjpmZ2V0cG9zOwogIHVzaW5nIDo6ZmdldHM7CiAgdXNpbmcgOjpmb3BlbjsKICB1c2luZyA6OmZw
cmludGY7CiAgdXNpbmcgOjpmcHV0YzsKICB1c2luZyA6OmZwdXRzOwogIHVzaW5nIDo6ZnJlYWQ7
CiAgdXNpbmcgOjpmcmVvcGVuOwogIHVzaW5nIDo6ZnNjYW5mOwogIHVzaW5nIDo6ZnNlZWs7CiAg
dXNpbmcgOjpmc2V0cG9zOwogIHVzaW5nIDo6ZnRlbGw7CiAgdXNpbmcgOjpmd3JpdGU7CiAgdXNp
bmcgOjpnZXRjOwogIHVzaW5nIDo6Z2V0Y2hhcjsKCgogIHVzaW5nIDo6Z2V0czsKCiAgdXNpbmcg
OjpwZXJyb3I7CiAgdXNpbmcgOjpwcmludGY7CiAgdXNpbmcgOjpwdXRjOwogIHVzaW5nIDo6cHV0
Y2hhcjsKICB1c2luZyA6OnB1dHM7CiAgdXNpbmcgOjpyZW1vdmU7CiAgdXNpbmcgOjpyZW5hbWU7
CiAgdXNpbmcgOjpyZXdpbmQ7CiAgdXNpbmcgOjpzY2FuZjsKICB1c2luZyA6OnNldGJ1ZjsKICB1
c2luZyA6OnNldHZidWY7CiAgdXNpbmcgOjpzcHJpbnRmOwogIHVzaW5nIDo6c3NjYW5mOwogIHVz
aW5nIDo6dG1wZmlsZTsKCiAgdXNpbmcgOjp0bXBuYW07CgogIHVzaW5nIDo6dW5nZXRjOwogIHVz
aW5nIDo6dmZwcmludGY7CiAgdXNpbmcgOjp2cHJpbnRmOwogIHVzaW5nIDo6dnNwcmludGY7Cn0K
CgoKI3VuZGVmIHNucHJpbnRmCiN1bmRlZiB2ZnNjYW5mCiN1bmRlZiB2c2NhbmYKI3VuZGVmIHZz
bnByaW50ZgojdW5kZWYgdnNzY2FuZgoKbmFtZXNwYWNlIF9fZ251X2N4eAp7CiMgMTc1ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2NzdGRp
byIgMwogIHVzaW5nIDo6c25wcmludGY7CiAgdXNpbmcgOjp2ZnNjYW5mOwogIHVzaW5nIDo6dnNj
YW5mOwogIHVzaW5nIDo6dnNucHJpbnRmOwogIHVzaW5nIDo6dnNzY2FuZjsKCn0KCm5hbWVzcGFj
ZSBzdGQKewogIHVzaW5nIDo6X19nbnVfY3h4OjpzbnByaW50ZjsKICB1c2luZyA6Ol9fZ251X2N4
eDo6dmZzY2FuZjsKICB1c2luZyA6Ol9fZ251X2N4eDo6dnNjYW5mOwogIHVzaW5nIDo6X19nbnVf
Y3h4Ojp2c25wcmludGY7CiAgdXNpbmcgOjpfX2dudV9jeHg6OnZzc2NhbmY7Cn0KIyA0NCAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9leHQv
c3RyaW5nX2NvbnZlcnNpb25zLmgiIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvY2Vycm5vIiAxIDMKIyAzOSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9jZXJybm8iIDMK
ICAgICAgIAojIDQwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2NlcnJubyIgMwoKIyAxICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMSAzIDQK
IyAyNyAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMgNAojZGVmaW5lIF9FUlJOT19IIDEKCgoKZXh0
ZXJuICJDIiB7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9l
cnJuby5oIiAxIDMgNAojIDIxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRz
L2Vycm5vLmgiIDMgNAojdW5kZWYgRURPTQojdW5kZWYgRUlMU0VRCiN1bmRlZiBFUkFOR0UKIyAx
ICIvdXNyL2luY2x1ZGUvbGludXgvZXJybm8uaCIgMSAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYXJt
LWxpbnV4LWdudWVhYmloZi9hc20vZXJybm8uaCIgMSAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYXNt
LWdlbmVyaWMvZXJybm8uaCIgMSAzIDQKCiNkZWZpbmUgX0FTTV9HRU5FUklDX0VSUk5PX0ggCgoj
IDEgIi91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby1iYXNlLmgiIDEgMyA0CgojZGVmaW5l
IF9BU01fR0VORVJJQ19FUlJOT19CQVNFX0ggCgojZGVmaW5lIEVQRVJNIDEKI2RlZmluZSBFTk9F
TlQgMgojZGVmaW5lIEVTUkNIIDMKI2RlZmluZSBFSU5UUiA0CiNkZWZpbmUgRUlPIDUKI2RlZmlu
ZSBFTlhJTyA2CiNkZWZpbmUgRTJCSUcgNwojZGVmaW5lIEVOT0VYRUMgOAojZGVmaW5lIEVCQURG
IDkKI2RlZmluZSBFQ0hJTEQgMTAKI2RlZmluZSBFQUdBSU4gMTEKI2RlZmluZSBFTk9NRU0gMTIK
I2RlZmluZSBFQUNDRVMgMTMKI2RlZmluZSBFRkFVTFQgMTQKI2RlZmluZSBFTk9UQkxLIDE1CiNk
ZWZpbmUgRUJVU1kgMTYKI2RlZmluZSBFRVhJU1QgMTcKI2RlZmluZSBFWERFViAxOAojZGVmaW5l
IEVOT0RFViAxOQojZGVmaW5lIEVOT1RESVIgMjAKI2RlZmluZSBFSVNESVIgMjEKI2RlZmluZSBF
SU5WQUwgMjIKI2RlZmluZSBFTkZJTEUgMjMKI2RlZmluZSBFTUZJTEUgMjQKI2RlZmluZSBFTk9U
VFkgMjUKI2RlZmluZSBFVFhUQlNZIDI2CiNkZWZpbmUgRUZCSUcgMjcKI2RlZmluZSBFTk9TUEMg
MjgKI2RlZmluZSBFU1BJUEUgMjkKI2RlZmluZSBFUk9GUyAzMAojZGVmaW5lIEVNTElOSyAzMQoj
ZGVmaW5lIEVQSVBFIDMyCiNkZWZpbmUgRURPTSAzMwojZGVmaW5lIEVSQU5HRSAzNAojIDUgIi91
c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby5oIiAyIDMgNAoKI2RlZmluZSBFREVBRExLIDM1
CiNkZWZpbmUgRU5BTUVUT09MT05HIDM2CiNkZWZpbmUgRU5PTENLIDM3CiNkZWZpbmUgRU5PU1lT
IDM4CiNkZWZpbmUgRU5PVEVNUFRZIDM5CiNkZWZpbmUgRUxPT1AgNDAKI2RlZmluZSBFV09VTERC
TE9DSyBFQUdBSU4KI2RlZmluZSBFTk9NU0cgNDIKI2RlZmluZSBFSURSTSA0MwojZGVmaW5lIEVD
SFJORyA0NAojZGVmaW5lIEVMMk5TWU5DIDQ1CiNkZWZpbmUgRUwzSExUIDQ2CiNkZWZpbmUgRUwz
UlNUIDQ3CiNkZWZpbmUgRUxOUk5HIDQ4CiNkZWZpbmUgRVVOQVRDSCA0OQojZGVmaW5lIEVOT0NT
SSA1MAojZGVmaW5lIEVMMkhMVCA1MQojZGVmaW5lIEVCQURFIDUyCiNkZWZpbmUgRUJBRFIgNTMK
I2RlZmluZSBFWEZVTEwgNTQKI2RlZmluZSBFTk9BTk8gNTUKI2RlZmluZSBFQkFEUlFDIDU2CiNk
ZWZpbmUgRUJBRFNMVCA1NwoKI2RlZmluZSBFREVBRExPQ0sgRURFQURMSwoKI2RlZmluZSBFQkZP
TlQgNTkKI2RlZmluZSBFTk9TVFIgNjAKI2RlZmluZSBFTk9EQVRBIDYxCiNkZWZpbmUgRVRJTUUg
NjIKI2RlZmluZSBFTk9TUiA2MwojZGVmaW5lIEVOT05FVCA2NAojZGVmaW5lIEVOT1BLRyA2NQoj
ZGVmaW5lIEVSRU1PVEUgNjYKI2RlZmluZSBFTk9MSU5LIDY3CiNkZWZpbmUgRUFEViA2OAojZGVm
aW5lIEVTUk1OVCA2OQojZGVmaW5lIEVDT01NIDcwCiNkZWZpbmUgRVBST1RPIDcxCiNkZWZpbmUg
RU1VTFRJSE9QIDcyCiNkZWZpbmUgRURPVERPVCA3MwojZGVmaW5lIEVCQURNU0cgNzQKI2RlZmlu
ZSBFT1ZFUkZMT1cgNzUKI2RlZmluZSBFTk9UVU5JUSA3NgojZGVmaW5lIEVCQURGRCA3NwojZGVm
aW5lIEVSRU1DSEcgNzgKI2RlZmluZSBFTElCQUNDIDc5CiNkZWZpbmUgRUxJQkJBRCA4MAojZGVm
aW5lIEVMSUJTQ04gODEKI2RlZmluZSBFTElCTUFYIDgyCiNkZWZpbmUgRUxJQkVYRUMgODMKI2Rl
ZmluZSBFSUxTRVEgODQKI2RlZmluZSBFUkVTVEFSVCA4NQojZGVmaW5lIEVTVFJQSVBFIDg2CiNk
ZWZpbmUgRVVTRVJTIDg3CiNkZWZpbmUgRU5PVFNPQ0sgODgKI2RlZmluZSBFREVTVEFERFJSRVEg
ODkKI2RlZmluZSBFTVNHU0laRSA5MAojZGVmaW5lIEVQUk9UT1RZUEUgOTEKI2RlZmluZSBFTk9Q
Uk9UT09QVCA5MgojZGVmaW5lIEVQUk9UT05PU1VQUE9SVCA5MwojZGVmaW5lIEVTT0NLVE5PU1VQ
UE9SVCA5NAojZGVmaW5lIEVPUE5PVFNVUFAgOTUKI2RlZmluZSBFUEZOT1NVUFBPUlQgOTYKI2Rl
ZmluZSBFQUZOT1NVUFBPUlQgOTcKI2RlZmluZSBFQUREUklOVVNFIDk4CiNkZWZpbmUgRUFERFJO
T1RBVkFJTCA5OQojZGVmaW5lIEVORVRET1dOIDEwMAojZGVmaW5lIEVORVRVTlJFQUNIIDEwMQoj
ZGVmaW5lIEVORVRSRVNFVCAxMDIKI2RlZmluZSBFQ09OTkFCT1JURUQgMTAzCiNkZWZpbmUgRUNP
Tk5SRVNFVCAxMDQKI2RlZmluZSBFTk9CVUZTIDEwNQojZGVmaW5lIEVJU0NPTk4gMTA2CiNkZWZp
bmUgRU5PVENPTk4gMTA3CiNkZWZpbmUgRVNIVVRET1dOIDEwOAojZGVmaW5lIEVUT09NQU5ZUkVG
UyAxMDkKI2RlZmluZSBFVElNRURPVVQgMTEwCiNkZWZpbmUgRUNPTk5SRUZVU0VEIDExMQojZGVm
aW5lIEVIT1NURE9XTiAxMTIKI2RlZmluZSBFSE9TVFVOUkVBQ0ggMTEzCiNkZWZpbmUgRUFMUkVB
RFkgMTE0CiNkZWZpbmUgRUlOUFJPR1JFU1MgMTE1CiNkZWZpbmUgRVNUQUxFIDExNgojZGVmaW5l
IEVVQ0xFQU4gMTE3CiNkZWZpbmUgRU5PVE5BTSAxMTgKI2RlZmluZSBFTkFWQUlMIDExOQojZGVm
aW5lIEVJU05BTSAxMjAKI2RlZmluZSBFUkVNT1RFSU8gMTIxCiNkZWZpbmUgRURRVU9UIDEyMgoK
I2RlZmluZSBFTk9NRURJVU0gMTIzCiNkZWZpbmUgRU1FRElVTVRZUEUgMTI0CiNkZWZpbmUgRUNB
TkNFTEVEIDEyNQojZGVmaW5lIEVOT0tFWSAxMjYKI2RlZmluZSBFS0VZRVhQSVJFRCAxMjcKI2Rl
ZmluZSBFS0VZUkVWT0tFRCAxMjgKI2RlZmluZSBFS0VZUkVKRUNURUQgMTI5CgoKI2RlZmluZSBF
T1dORVJERUFEIDEzMAojZGVmaW5lIEVOT1RSRUNPVkVSQUJMRSAxMzEKCiNkZWZpbmUgRVJGS0lM
TCAxMzIKCiNkZWZpbmUgRUhXUE9JU09OIDEzMwojIDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgt
Z251ZWFiaWhmL2FzbS9lcnJuby5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9saW51eC9lcnJu
by5oIiAyIDMgNAojIDI1ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL2Vy
cm5vLmgiIDIgMyA0CgoKI2RlZmluZSBFTk9UU1VQIEVPUE5PVFNVUFAKIyA1MCAiL3Vzci9pbmNs
dWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9lcnJuby5oIiAzIDQKZXh0ZXJuIGludCAqX19l
cnJub19sb2NhdGlvbiAodm9pZCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCgojZGVmaW5lIGVycm5vICgqX19lcnJub19sb2NhdGlvbiAoKSkKIyAzNiAiL3Vzci9pbmNs
dWRlL2Vycm5vLmgiIDIgMyA0CiN1bmRlZiBfX25lZWRfRW1hdGgKIyA1NCAiL3Vzci9pbmNsdWRl
L2Vycm5vLmgiIDMgNApleHRlcm4gY2hhciAqcHJvZ3JhbV9pbnZvY2F0aW9uX25hbWUsICpwcm9n
cmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZTsKCgoKfQojIDY4ICIvdXNyL2luY2x1ZGUvZXJybm8u
aCIgMyA0CnR5cGVkZWYgaW50IGVycm9yX3Q7CiNkZWZpbmUgX19lcnJvcl90X2RlZmluZWQgMQoK
I3VuZGVmIF9fbmVlZF9lcnJvcl90CiMgNDIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvY2Vycm5vIiAyIDMKCgojZGVmaW5lIF9HTElCQ1hY
X0NFUlJOTyAxCiMgNDUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvZXh0L3N0cmluZ19jb252ZXJzaW9ucy5oIiAyIDMKCm5hbWVzcGFjZSBf
X2dudV9jeHggX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoK
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UUmV0LCB0eXBlbmFtZSBfUmV0ID0gX1RSZXQsIHR5cGVu
YW1lIF9DaGFyVCwKICAgIHR5cGVuYW1lLi4uIF9CYXNlPgogICAgX1JldAogICAgX19zdG9hKF9U
UmV0ICgqX19jb252ZikgKGNvbnN0IF9DaGFyVCosIF9DaGFyVCoqLCBfQmFzZS4uLiksCiAgICBj
b25zdCBjaGFyKiBfX25hbWUsIGNvbnN0IF9DaGFyVCogX19zdHIsIHN0ZDo6c2l6ZV90KiBfX2lk
eCwKICAgIF9CYXNlLi4uIF9fYmFzZSkKICAgIHsKICAgICAgX1JldCBfX3JldDsKCiAgICAgIF9D
aGFyVCogX19lbmRwdHI7CiAgICAgICgqX19lcnJub19sb2NhdGlvbiAoKSkgPSAwOwogICAgICBj
b25zdCBfVFJldCBfX3RtcCA9IF9fY29udmYoX19zdHIsICZfX2VuZHB0ciwgX19iYXNlLi4uKTsK
CiAgICAgIGlmIChfX2VuZHB0ciA9PSBfX3N0cikKIHN0ZDo6X190aHJvd19pbnZhbGlkX2FyZ3Vt
ZW50KF9fbmFtZSk7CiAgICAgIGVsc2UgaWYgKCgqX19lcnJub19sb2NhdGlvbiAoKSkgPT0gMzQK
ICAgICAgICB8fCAoc3RkOjpfX2FyZV9zYW1lPF9SZXQsIGludD46Ol9fdmFsdWUKICAgICAmJiAo
X190bXAgPCBfX251bWVyaWNfdHJhaXRzPGludD46Ol9fbWluCiAgICAgICAgIHx8IF9fdG1wID4g
X19udW1lcmljX3RyYWl0czxpbnQ+OjpfX21heCkpKQogc3RkOjpfX3Rocm93X291dF9vZl9yYW5n
ZShfX25hbWUpOwogICAgICBlbHNlCiBfX3JldCA9IF9fdG1wOwoKICAgICAgaWYgKF9faWR4KQog
Kl9faWR4ID0gX19lbmRwdHIgLSBfX3N0cjsKCiAgICAgIHJldHVybiBfX3JldDsKICAgIH0KCgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9TdHJpbmcsIHR5cGVuYW1lIF9DaGFyVCA9IHR5cGVuYW1lIF9T
dHJpbmc6OnZhbHVlX3R5cGU+CiAgICBfU3RyaW5nCiAgICBfX3RvX3hzdHJpbmcoaW50ICgqX19j
b252ZikgKF9DaGFyVCosIHN0ZDo6c2l6ZV90LCBjb25zdCBfQ2hhclQqLAogICAgIF9fYnVpbHRp
bl92YV9saXN0KSwgc3RkOjpzaXplX3QgX19uLAogICBjb25zdCBfQ2hhclQqIF9fZm10LCAuLi4p
CiAgICB7CgoKICAgICAgX0NoYXJUKiBfX3MgPSBzdGF0aWNfY2FzdDxfQ2hhclQqPihfX2J1aWx0
aW5fYWxsb2NhKHNpemVvZihfQ2hhclQpCiAgICAgICAgICogX19uKSk7CgogICAgICBfX2J1aWx0
aW5fdmFfbGlzdCBfX2FyZ3M7CiAgICAgIF9fYnVpbHRpbl92YV9zdGFydChfX2FyZ3MsIF9fZm10
KTsKCiAgICAgIGNvbnN0IGludCBfX2xlbiA9IF9fY29udmYoX19zLCBfX24sIF9fZm10LCBfX2Fy
Z3MpOwoKICAgICAgX19idWlsdGluX3ZhX2VuZChfX2FyZ3MpOwoKICAgICAgcmV0dXJuIF9TdHJp
bmcoX19zLCBfX3MgKyBfX2xlbik7CiAgICB9CgoKfQojIDI4NTAgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcu
aCIgMiAzCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRl
ZmF1bHQiKSkpCnsKCgoKICBpbmxpbmUgaW50CiAgc3RvaShjb25zdCBzdHJpbmcmIF9fc3RyLCBz
aXplX3QqIF9faWR4ID0gMCwgaW50IF9fYmFzZSA9IDEwKQogIHsgcmV0dXJuIF9fZ251X2N4eDo6
X19zdG9hPGxvbmcsIGludD4oJnN0ZDo6c3RydG9sLCAic3RvaSIsIF9fc3RyLmNfc3RyKCksCiAg
ICAgX19pZHgsIF9fYmFzZSk7IH0KCiAgaW5saW5lIGxvbmcKICBzdG9sKGNvbnN0IHN0cmluZyYg
X19zdHIsIHNpemVfdCogX19pZHggPSAwLCBpbnQgX19iYXNlID0gMTApCiAgeyByZXR1cm4gX19n
bnVfY3h4OjpfX3N0b2EoJnN0ZDo6c3RydG9sLCAic3RvbCIsIF9fc3RyLmNfc3RyKCksCiAgICAg
ICAgX19pZHgsIF9fYmFzZSk7IH0KCiAgaW5saW5lIHVuc2lnbmVkIGxvbmcKICBzdG91bChjb25z
dCBzdHJpbmcmIF9fc3RyLCBzaXplX3QqIF9faWR4ID0gMCwgaW50IF9fYmFzZSA9IDEwKQogIHsg
cmV0dXJuIF9fZ251X2N4eDo6X19zdG9hKCZzdGQ6OnN0cnRvdWwsICJzdG91bCIsIF9fc3RyLmNf
c3RyKCksCiAgICAgICAgX19pZHgsIF9fYmFzZSk7IH0KCiAgaW5saW5lIGxvbmcgbG9uZwogIHN0
b2xsKGNvbnN0IHN0cmluZyYgX19zdHIsIHNpemVfdCogX19pZHggPSAwLCBpbnQgX19iYXNlID0g
MTApCiAgeyByZXR1cm4gX19nbnVfY3h4OjpfX3N0b2EoJnN0ZDo6c3RydG9sbCwgInN0b2xsIiwg
X19zdHIuY19zdHIoKSwKICAgICAgICBfX2lkeCwgX19iYXNlKTsgfQoKICBpbmxpbmUgdW5zaWdu
ZWQgbG9uZyBsb25nCiAgc3RvdWxsKGNvbnN0IHN0cmluZyYgX19zdHIsIHNpemVfdCogX19pZHgg
PSAwLCBpbnQgX19iYXNlID0gMTApCiAgeyByZXR1cm4gX19nbnVfY3h4OjpfX3N0b2EoJnN0ZDo6
c3RydG91bGwsICJzdG91bGwiLCBfX3N0ci5jX3N0cigpLAogICAgICAgIF9faWR4LCBfX2Jhc2Up
OyB9CgoKICBpbmxpbmUgZmxvYXQKICBzdG9mKGNvbnN0IHN0cmluZyYgX19zdHIsIHNpemVfdCog
X19pZHggPSAwKQogIHsgcmV0dXJuIF9fZ251X2N4eDo6X19zdG9hKCZzdGQ6OnN0cnRvZiwgInN0
b2YiLCBfX3N0ci5jX3N0cigpLCBfX2lkeCk7IH0KCiAgaW5saW5lIGRvdWJsZQogIHN0b2QoY29u
c3Qgc3RyaW5nJiBfX3N0ciwgc2l6ZV90KiBfX2lkeCA9IDApCiAgeyByZXR1cm4gX19nbnVfY3h4
OjpfX3N0b2EoJnN0ZDo6c3RydG9kLCAic3RvZCIsIF9fc3RyLmNfc3RyKCksIF9faWR4KTsgfQoK
ICBpbmxpbmUgbG9uZyBkb3VibGUKICBzdG9sZChjb25zdCBzdHJpbmcmIF9fc3RyLCBzaXplX3Qq
IF9faWR4ID0gMCkKICB7IHJldHVybiBfX2dudV9jeHg6Ol9fc3RvYSgmc3RkOjpzdHJ0b2xkLCAi
c3RvbGQiLCBfX3N0ci5jX3N0cigpLCBfX2lkeCk7IH0KCgoKCiAgaW5saW5lIHN0cmluZwogIHRv
X3N0cmluZyhpbnQgX192YWwpCiAgeyByZXR1cm4gX19nbnVfY3h4OjpfX3RvX3hzdHJpbmc8c3Ry
aW5nPigmc3RkOjp2c25wcmludGYsIDQgKiBzaXplb2YoaW50KSwKICAgICAgICAiJWQiLCBfX3Zh
bCk7IH0KCiAgaW5saW5lIHN0cmluZwogIHRvX3N0cmluZyh1bnNpZ25lZCBfX3ZhbCkKICB7IHJl
dHVybiBfX2dudV9jeHg6Ol9fdG9feHN0cmluZzxzdHJpbmc+KCZzdGQ6OnZzbnByaW50ZiwKICAg
ICAgICA0ICogc2l6ZW9mKHVuc2lnbmVkKSwKICAgICAgICAiJXUiLCBfX3ZhbCk7IH0KCiAgaW5s
aW5lIHN0cmluZwogIHRvX3N0cmluZyhsb25nIF9fdmFsKQogIHsgcmV0dXJuIF9fZ251X2N4eDo6
X190b194c3RyaW5nPHN0cmluZz4oJnN0ZDo6dnNucHJpbnRmLCA0ICogc2l6ZW9mKGxvbmcpLAog
ICAgICAgICIlbGQiLCBfX3ZhbCk7IH0KCiAgaW5saW5lIHN0cmluZwogIHRvX3N0cmluZyh1bnNp
Z25lZCBsb25nIF9fdmFsKQogIHsgcmV0dXJuIF9fZ251X2N4eDo6X190b194c3RyaW5nPHN0cmlu
Zz4oJnN0ZDo6dnNucHJpbnRmLAogICAgICAgIDQgKiBzaXplb2YodW5zaWduZWQgbG9uZyksCiAg
ICAgICAgIiVsdSIsIF9fdmFsKTsgfQoKICBpbmxpbmUgc3RyaW5nCiAgdG9fc3RyaW5nKGxvbmcg
bG9uZyBfX3ZhbCkKICB7IHJldHVybiBfX2dudV9jeHg6Ol9fdG9feHN0cmluZzxzdHJpbmc+KCZz
dGQ6OnZzbnByaW50ZiwKICAgICAgICA0ICogc2l6ZW9mKGxvbmcgbG9uZyksCiAgICAgICAgIiVs
bGQiLCBfX3ZhbCk7IH0KCiAgaW5saW5lIHN0cmluZwogIHRvX3N0cmluZyh1bnNpZ25lZCBsb25n
IGxvbmcgX192YWwpCiAgeyByZXR1cm4gX19nbnVfY3h4OjpfX3RvX3hzdHJpbmc8c3RyaW5nPigm
c3RkOjp2c25wcmludGYsCiAgICAgICAgNCAqIHNpemVvZih1bnNpZ25lZCBsb25nIGxvbmcpLAog
ICAgICAgICIlbGx1IiwgX192YWwpOyB9CgogIGlubGluZSBzdHJpbmcKICB0b19zdHJpbmcoZmxv
YXQgX192YWwpCiAgewogICAgY29uc3QgaW50IF9fbiA9CiAgICAgIF9fZ251X2N4eDo6X19udW1l
cmljX3RyYWl0czxmbG9hdD46Ol9fbWF4X2V4cG9uZW50MTAgKyAyMDsKICAgIHJldHVybiBfX2du
dV9jeHg6Ol9fdG9feHN0cmluZzxzdHJpbmc+KCZzdGQ6OnZzbnByaW50ZiwgX19uLAogICAgICAg
ICIlZiIsIF9fdmFsKTsKICB9CgogIGlubGluZSBzdHJpbmcKICB0b19zdHJpbmcoZG91YmxlIF9f
dmFsKQogIHsKICAgIGNvbnN0IGludCBfX24gPQogICAgICBfX2dudV9jeHg6Ol9fbnVtZXJpY190
cmFpdHM8ZG91YmxlPjo6X19tYXhfZXhwb25lbnQxMCArIDIwOwogICAgcmV0dXJuIF9fZ251X2N4
eDo6X190b194c3RyaW5nPHN0cmluZz4oJnN0ZDo6dnNucHJpbnRmLCBfX24sCiAgICAgICAgIiVm
IiwgX192YWwpOwogIH0KCiAgaW5saW5lIHN0cmluZwogIHRvX3N0cmluZyhsb25nIGRvdWJsZSBf
X3ZhbCkKICB7CiAgICBjb25zdCBpbnQgX19uID0KICAgICAgX19nbnVfY3h4OjpfX251bWVyaWNf
dHJhaXRzPGxvbmcgZG91YmxlPjo6X19tYXhfZXhwb25lbnQxMCArIDIwOwogICAgcmV0dXJuIF9f
Z251X2N4eDo6X190b194c3RyaW5nPHN0cmluZz4oJnN0ZDo6dnNucHJpbnRmLCBfX24sCiAgICAg
ICAgIiVMZiIsIF9fdmFsKTsKICB9CgoKICBpbmxpbmUgaW50CiAgc3RvaShjb25zdCB3c3RyaW5n
JiBfX3N0ciwgc2l6ZV90KiBfX2lkeCA9IDAsIGludCBfX2Jhc2UgPSAxMCkKICB7IHJldHVybiBf
X2dudV9jeHg6Ol9fc3RvYTxsb25nLCBpbnQ+KCZzdGQ6Ondjc3RvbCwgInN0b2kiLCBfX3N0ci5j
X3N0cigpLAogICAgIF9faWR4LCBfX2Jhc2UpOyB9CgogIGlubGluZSBsb25nCiAgc3RvbChjb25z
dCB3c3RyaW5nJiBfX3N0ciwgc2l6ZV90KiBfX2lkeCA9IDAsIGludCBfX2Jhc2UgPSAxMCkKICB7
IHJldHVybiBfX2dudV9jeHg6Ol9fc3RvYSgmc3RkOjp3Y3N0b2wsICJzdG9sIiwgX19zdHIuY19z
dHIoKSwKICAgICAgICBfX2lkeCwgX19iYXNlKTsgfQoKICBpbmxpbmUgdW5zaWduZWQgbG9uZwog
IHN0b3VsKGNvbnN0IHdzdHJpbmcmIF9fc3RyLCBzaXplX3QqIF9faWR4ID0gMCwgaW50IF9fYmFz
ZSA9IDEwKQogIHsgcmV0dXJuIF9fZ251X2N4eDo6X19zdG9hKCZzdGQ6Ondjc3RvdWwsICJzdG91
bCIsIF9fc3RyLmNfc3RyKCksCiAgICAgICAgX19pZHgsIF9fYmFzZSk7IH0KCiAgaW5saW5lIGxv
bmcgbG9uZwogIHN0b2xsKGNvbnN0IHdzdHJpbmcmIF9fc3RyLCBzaXplX3QqIF9faWR4ID0gMCwg
aW50IF9fYmFzZSA9IDEwKQogIHsgcmV0dXJuIF9fZ251X2N4eDo6X19zdG9hKCZzdGQ6Ondjc3Rv
bGwsICJzdG9sbCIsIF9fc3RyLmNfc3RyKCksCiAgICAgICAgX19pZHgsIF9fYmFzZSk7IH0KCiAg
aW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZwogIHN0b3VsbChjb25zdCB3c3RyaW5nJiBfX3N0ciwg
c2l6ZV90KiBfX2lkeCA9IDAsIGludCBfX2Jhc2UgPSAxMCkKICB7IHJldHVybiBfX2dudV9jeHg6
Ol9fc3RvYSgmc3RkOjp3Y3N0b3VsbCwgInN0b3VsbCIsIF9fc3RyLmNfc3RyKCksCiAgICAgICAg
X19pZHgsIF9fYmFzZSk7IH0KCgogIGlubGluZSBmbG9hdAogIHN0b2YoY29uc3Qgd3N0cmluZyYg
X19zdHIsIHNpemVfdCogX19pZHggPSAwKQogIHsgcmV0dXJuIF9fZ251X2N4eDo6X19zdG9hKCZz
dGQ6Ondjc3RvZiwgInN0b2YiLCBfX3N0ci5jX3N0cigpLCBfX2lkeCk7IH0KCiAgaW5saW5lIGRv
dWJsZQogIHN0b2QoY29uc3Qgd3N0cmluZyYgX19zdHIsIHNpemVfdCogX19pZHggPSAwKQogIHsg
cmV0dXJuIF9fZ251X2N4eDo6X19zdG9hKCZzdGQ6Ondjc3RvZCwgInN0b2QiLCBfX3N0ci5jX3N0
cigpLCBfX2lkeCk7IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgc3RvbGQoY29uc3Qgd3N0cmlu
ZyYgX19zdHIsIHNpemVfdCogX19pZHggPSAwKQogIHsgcmV0dXJuIF9fZ251X2N4eDo6X19zdG9h
KCZzdGQ6Ondjc3RvbGQsICJzdG9sZCIsIF9fc3RyLmNfc3RyKCksIF9faWR4KTsgfQoKCgogIGlu
bGluZSB3c3RyaW5nCiAgdG9fd3N0cmluZyhpbnQgX192YWwpCiAgeyByZXR1cm4gX19nbnVfY3h4
OjpfX3RvX3hzdHJpbmc8d3N0cmluZz4oJnN0ZDo6dnN3cHJpbnRmLCA0ICogc2l6ZW9mKGludCks
CiAgICAgICAgIEwiJWQiLCBfX3ZhbCk7IH0KCiAgaW5saW5lIHdzdHJpbmcKICB0b193c3RyaW5n
KHVuc2lnbmVkIF9fdmFsKQogIHsgcmV0dXJuIF9fZ251X2N4eDo6X190b194c3RyaW5nPHdzdHJp
bmc+KCZzdGQ6OnZzd3ByaW50ZiwKICAgICAgICAgNCAqIHNpemVvZih1bnNpZ25lZCksCiAgICAg
ICAgIEwiJXUiLCBfX3ZhbCk7IH0KCiAgaW5saW5lIHdzdHJpbmcKICB0b193c3RyaW5nKGxvbmcg
X192YWwpCiAgeyByZXR1cm4gX19nbnVfY3h4OjpfX3RvX3hzdHJpbmc8d3N0cmluZz4oJnN0ZDo6
dnN3cHJpbnRmLCA0ICogc2l6ZW9mKGxvbmcpLAogICAgICAgICBMIiVsZCIsIF9fdmFsKTsgfQoK
ICBpbmxpbmUgd3N0cmluZwogIHRvX3dzdHJpbmcodW5zaWduZWQgbG9uZyBfX3ZhbCkKICB7IHJl
dHVybiBfX2dudV9jeHg6Ol9fdG9feHN0cmluZzx3c3RyaW5nPigmc3RkOjp2c3dwcmludGYsCiAg
ICAgICAgIDQgKiBzaXplb2YodW5zaWduZWQgbG9uZyksCiAgICAgICAgIEwiJWx1IiwgX192YWwp
OyB9CgogIGlubGluZSB3c3RyaW5nCiAgdG9fd3N0cmluZyhsb25nIGxvbmcgX192YWwpCiAgeyBy
ZXR1cm4gX19nbnVfY3h4OjpfX3RvX3hzdHJpbmc8d3N0cmluZz4oJnN0ZDo6dnN3cHJpbnRmLAog
ICAgICAgICA0ICogc2l6ZW9mKGxvbmcgbG9uZyksCiAgICAgICAgIEwiJWxsZCIsIF9fdmFsKTsg
fQoKICBpbmxpbmUgd3N0cmluZwogIHRvX3dzdHJpbmcodW5zaWduZWQgbG9uZyBsb25nIF9fdmFs
KQogIHsgcmV0dXJuIF9fZ251X2N4eDo6X190b194c3RyaW5nPHdzdHJpbmc+KCZzdGQ6OnZzd3By
aW50ZiwKICAgICAgICAgNCAqIHNpemVvZih1bnNpZ25lZCBsb25nIGxvbmcpLAogICAgICAgICBM
IiVsbHUiLCBfX3ZhbCk7IH0KCiAgaW5saW5lIHdzdHJpbmcKICB0b193c3RyaW5nKGZsb2F0IF9f
dmFsKQogIHsKICAgIGNvbnN0IGludCBfX24gPQogICAgICBfX2dudV9jeHg6Ol9fbnVtZXJpY190
cmFpdHM8ZmxvYXQ+OjpfX21heF9leHBvbmVudDEwICsgMjA7CiAgICByZXR1cm4gX19nbnVfY3h4
OjpfX3RvX3hzdHJpbmc8d3N0cmluZz4oJnN0ZDo6dnN3cHJpbnRmLCBfX24sCiAgICAgICAgIEwi
JWYiLCBfX3ZhbCk7CiAgfQoKICBpbmxpbmUgd3N0cmluZwogIHRvX3dzdHJpbmcoZG91YmxlIF9f
dmFsKQogIHsKICAgIGNvbnN0IGludCBfX24gPQogICAgICBfX2dudV9jeHg6Ol9fbnVtZXJpY190
cmFpdHM8ZG91YmxlPjo6X19tYXhfZXhwb25lbnQxMCArIDIwOwogICAgcmV0dXJuIF9fZ251X2N4
eDo6X190b194c3RyaW5nPHdzdHJpbmc+KCZzdGQ6OnZzd3ByaW50ZiwgX19uLAogICAgICAgICBM
IiVmIiwgX192YWwpOwogIH0KCiAgaW5saW5lIHdzdHJpbmcKICB0b193c3RyaW5nKGxvbmcgZG91
YmxlIF9fdmFsKQogIHsKICAgIGNvbnN0IGludCBfX24gPQogICAgICBfX2dudV9jeHg6Ol9fbnVt
ZXJpY190cmFpdHM8bG9uZyBkb3VibGU+OjpfX21heF9leHBvbmVudDEwICsgMjA7CiAgICByZXR1
cm4gX19nbnVfY3h4OjpfX3RvX3hzdHJpbmc8d3N0cmluZz4oJnN0ZDo6dnN3cHJpbnRmLCBfX24s
CiAgICAgICAgIEwiJUxmIiwgX192YWwpOwogIH0KCgoKCn0KCgoKCgojIDEgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9mdW5jdGlv
bmFsX2hhc2guaCIgMSAzCiMgMzEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9mdW5jdGlvbmFsX2hhc2guaCIgMwojZGVmaW5lIF9G
VU5DVElPTkFMX0hBU0hfSCAxCgogICAgICAgCiMgMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9mdW5jdGlvbmFsX2hhc2guaCIg
MwoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1
bHQiKSkpCnsKCiMgNDkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9mdW5jdGlvbmFsX2hhc2guaCIgMwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9SZXN1bHQsIHR5cGVuYW1lIF9Bcmc+CiAgICBzdHJ1Y3QgX19oYXNoX2Jhc2UKICAgIHsK
ICAgICAgdHlwZWRlZiBfUmVzdWx0IHJlc3VsdF90eXBlOwogICAgICB0eXBlZGVmIF9BcmcgYXJn
dW1lbnRfdHlwZTsKICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3Qg
aGFzaDsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBoYXNoPF9UcCo+IDog
cHVibGljIF9faGFzaF9iYXNlPHNpemVfdCwgX1RwKj4KICAgIHsKICAgICAgc2l6ZV90CiAgICAg
IG9wZXJhdG9yKCkoX1RwKiBfX3ApIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8c2l6ZV90PihfX3ApOyB9CiAgICB9OwoKCiNkZWZpbmUgX0N4eF9oYXNodGFi
bGVfZGVmaW5lX3RyaXZpYWxfaGFzaChfVHApIHRlbXBsYXRlPD4gc3RydWN0IGhhc2g8X1RwPiA6
IHB1YmxpYyBfX2hhc2hfYmFzZTxzaXplX3QsIF9UcD4geyBzaXplX3Qgb3BlcmF0b3IoKShfVHAg
X192YWwpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oX192YWwp
OyB9IH07CiMgODAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvYml0cy9mdW5jdGlvbmFsX2hhc2guaCIgMwogIHRlbXBsYXRlPD4gc3RydWN0
IGhhc2g8Ym9vbD4gOiBwdWJsaWMgX19oYXNoX2Jhc2U8c2l6ZV90LCBib29sPiB7IHNpemVfdCBv
cGVyYXRvcigpKGJvb2wgX192YWwpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PHNpemVfdD4oX192YWwpOyB9IH07CgoKICB0ZW1wbGF0ZTw+IHN0cnVjdCBoYXNoPGNoYXI+IDog
cHVibGljIF9faGFzaF9iYXNlPHNpemVfdCwgY2hhcj4geyBzaXplX3Qgb3BlcmF0b3IoKShjaGFy
IF9fdmFsKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KF9fdmFs
KTsgfSB9OwoKCiAgdGVtcGxhdGU8PiBzdHJ1Y3QgaGFzaDxzaWduZWQgY2hhcj4gOiBwdWJsaWMg
X19oYXNoX2Jhc2U8c2l6ZV90LCBzaWduZWQgY2hhcj4geyBzaXplX3Qgb3BlcmF0b3IoKShzaWdu
ZWQgY2hhciBfX3ZhbCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90
PihfX3ZhbCk7IH0gfTsKCgogIHRlbXBsYXRlPD4gc3RydWN0IGhhc2g8dW5zaWduZWQgY2hhcj4g
OiBwdWJsaWMgX19oYXNoX2Jhc2U8c2l6ZV90LCB1bnNpZ25lZCBjaGFyPiB7IHNpemVfdCBvcGVy
YXRvcigpKHVuc2lnbmVkIGNoYXIgX192YWwpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PHNpemVfdD4oX192YWwpOyB9IH07CgoKICB0ZW1wbGF0ZTw+IHN0cnVjdCBoYXNoPHdj
aGFyX3Q+IDogcHVibGljIF9faGFzaF9iYXNlPHNpemVfdCwgd2NoYXJfdD4geyBzaXplX3Qgb3Bl
cmF0b3IoKSh3Y2hhcl90IF9fdmFsKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxzaXplX3Q+KF9fdmFsKTsgfSB9OwoKCiAgdGVtcGxhdGU8PiBzdHJ1Y3QgaGFzaDxjaGFyMTZf
dD4gOiBwdWJsaWMgX19oYXNoX2Jhc2U8c2l6ZV90LCBjaGFyMTZfdD4geyBzaXplX3Qgb3BlcmF0
b3IoKShjaGFyMTZfdCBfX3ZhbCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
c2l6ZV90PihfX3ZhbCk7IH0gfTsKCgogIHRlbXBsYXRlPD4gc3RydWN0IGhhc2g8Y2hhcjMyX3Q+
IDogcHVibGljIF9faGFzaF9iYXNlPHNpemVfdCwgY2hhcjMyX3Q+IHsgc2l6ZV90IG9wZXJhdG9y
KCkoY2hhcjMyX3QgX192YWwpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHNp
emVfdD4oX192YWwpOyB9IH07CgoKICB0ZW1wbGF0ZTw+IHN0cnVjdCBoYXNoPHNob3J0PiA6IHB1
YmxpYyBfX2hhc2hfYmFzZTxzaXplX3QsIHNob3J0PiB7IHNpemVfdCBvcGVyYXRvcigpKHNob3J0
IF9fdmFsKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KF9fdmFs
KTsgfSB9OwoKCiAgdGVtcGxhdGU8PiBzdHJ1Y3QgaGFzaDxpbnQ+IDogcHVibGljIF9faGFzaF9i
YXNlPHNpemVfdCwgaW50PiB7IHNpemVfdCBvcGVyYXRvcigpKGludCBfX3ZhbCkgY29uc3Qgbm9l
eGNlcHQgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihfX3ZhbCk7IH0gfTsKCgogIHRlbXBs
YXRlPD4gc3RydWN0IGhhc2g8bG9uZz4gOiBwdWJsaWMgX19oYXNoX2Jhc2U8c2l6ZV90LCBsb25n
PiB7IHNpemVfdCBvcGVyYXRvcigpKGxvbmcgX192YWwpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PHNpemVfdD4oX192YWwpOyB9IH07CgoKICB0ZW1wbGF0ZTw+IHN0cnVjdCBo
YXNoPGxvbmcgbG9uZz4gOiBwdWJsaWMgX19oYXNoX2Jhc2U8c2l6ZV90LCBsb25nIGxvbmc+IHsg
c2l6ZV90IG9wZXJhdG9yKCkobG9uZyBsb25nIF9fdmFsKSBjb25zdCBub2V4Y2VwdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxzaXplX3Q+KF9fdmFsKTsgfSB9OwoKCiAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
aGFzaDx1bnNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgX19oYXNoX2Jhc2U8c2l6ZV90LCB1bnNpZ25l
ZCBzaG9ydD4geyBzaXplX3Qgb3BlcmF0b3IoKSh1bnNpZ25lZCBzaG9ydCBfX3ZhbCkgY29uc3Qg
bm9leGNlcHQgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihfX3ZhbCk7IH0gfTsKCgogIHRl
bXBsYXRlPD4gc3RydWN0IGhhc2g8dW5zaWduZWQgaW50PiA6IHB1YmxpYyBfX2hhc2hfYmFzZTxz
aXplX3QsIHVuc2lnbmVkIGludD4geyBzaXplX3Qgb3BlcmF0b3IoKSh1bnNpZ25lZCBpbnQgX192
YWwpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oX192YWwpOyB9
IH07CgoKICB0ZW1wbGF0ZTw+IHN0cnVjdCBoYXNoPHVuc2lnbmVkIGxvbmc+IDogcHVibGljIF9f
aGFzaF9iYXNlPHNpemVfdCwgdW5zaWduZWQgbG9uZz4geyBzaXplX3Qgb3BlcmF0b3IoKSh1bnNp
Z25lZCBsb25nIF9fdmFsKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KF9fdmFsKTsgfSB9OwoKCiAgdGVtcGxhdGU8PiBzdHJ1Y3QgaGFzaDx1bnNpZ25lZCBsb25n
IGxvbmc+IDogcHVibGljIF9faGFzaF9iYXNlPHNpemVfdCwgdW5zaWduZWQgbG9uZyBsb25nPiB7
IHNpemVfdCBvcGVyYXRvcigpKHVuc2lnbmVkIGxvbmcgbG9uZyBfX3ZhbCkgY29uc3Qgbm9leGNl
cHQgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihfX3ZhbCk7IH0gfTsKCiN1bmRlZiBfQ3h4
X2hhc2h0YWJsZV9kZWZpbmVfdHJpdmlhbF9oYXNoCgogIHN0cnVjdCBfSGFzaF9pbXBsCiAgewog
ICAgc3RhdGljIHNpemVfdAogICAgaGFzaChjb25zdCB2b2lkKiBfX3B0ciwgc2l6ZV90IF9fY2xl
bmd0aCwKICBzaXplX3QgX19zZWVkID0gc3RhdGljX2Nhc3Q8c2l6ZV90PigweGM3MGY2OTA3VUwp
KQogICAgeyByZXR1cm4gX0hhc2hfYnl0ZXMoX19wdHIsIF9fY2xlbmd0aCwgX19zZWVkKTsgfQoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICAgc3RhdGljIHNpemVfdAogICAgICBoYXNo
KGNvbnN0IF9UcCYgX192YWwpCiAgICAgIHsgcmV0dXJuIGhhc2goJl9fdmFsLCBzaXplb2YoX192
YWwpKTsgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICAgc3RhdGljIHNpemVfdAog
ICAgICBfX2hhc2hfY29tYmluZShjb25zdCBfVHAmIF9fdmFsLCBzaXplX3QgX19oYXNoKQogICAg
ICB7IHJldHVybiBoYXNoKCZfX3ZhbCwgc2l6ZW9mKF9fdmFsKSwgX19oYXNoKTsgfQogIH07Cgog
IHN0cnVjdCBfRm52X2hhc2hfaW1wbAogIHsKICAgIHN0YXRpYyBzaXplX3QKICAgIGhhc2goY29u
c3Qgdm9pZCogX19wdHIsIHNpemVfdCBfX2NsZW5ndGgsCiAgc2l6ZV90IF9fc2VlZCA9IHN0YXRp
Y19jYXN0PHNpemVfdD4oMjE2NjEzNjI2MVVMKSkKICAgIHsgcmV0dXJuIF9GbnZfaGFzaF9ieXRl
cyhfX3B0ciwgX19jbGVuZ3RoLCBfX3NlZWQpOyB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgICBzdGF0aWMgc2l6ZV90CiAgICAgIGhhc2goY29uc3QgX1RwJiBfX3ZhbCkKICAgICAg
eyByZXR1cm4gaGFzaCgmX192YWwsIHNpemVvZihfX3ZhbCkpOyB9CgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPgogICAgICBzdGF0aWMgc2l6ZV90CiAgICAgIF9faGFzaF9jb21iaW5lKGNvbnN0
IF9UcCYgX192YWwsIHNpemVfdCBfX2hhc2gpCiAgICAgIHsgcmV0dXJuIGhhc2goJl9fdmFsLCBz
aXplb2YoX192YWwpLCBfX2hhc2gpOyB9CiAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBo
YXNoPGZsb2F0PiA6IHB1YmxpYyBfX2hhc2hfYmFzZTxzaXplX3QsIGZsb2F0PgogICAgewogICAg
ICBzaXplX3QKICAgICAgb3BlcmF0b3IoKShmbG9hdCBfX3ZhbCkgY29uc3Qgbm9leGNlcHQKICAg
ICAgewoKIHJldHVybiBfX3ZhbCAhPSAwLjBmID8gc3RkOjpfSGFzaF9pbXBsOjpoYXNoKF9fdmFs
KSA6IDA7CiAgICAgIH0KICAgIH07CgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgaGFzaDxkb3Vi
bGU+IDogcHVibGljIF9faGFzaF9iYXNlPHNpemVfdCwgZG91YmxlPgogICAgewogICAgICBzaXpl
X3QKICAgICAgb3BlcmF0b3IoKShkb3VibGUgX192YWwpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsK
CiByZXR1cm4gX192YWwgIT0gMC4wID8gc3RkOjpfSGFzaF9pbXBsOjpoYXNoKF9fdmFsKSA6IDA7
CiAgICAgIH0KICAgIH07CgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgaGFzaDxsb25nIGRvdWJs
ZT4KICAgIDogcHVibGljIF9faGFzaF9iYXNlPHNpemVfdCwgbG9uZyBkb3VibGU+CiAgICB7CiAg
ICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIHNpemVfdAogICAgICBvcGVyYXRvcigpKGxv
bmcgZG91YmxlIF9fdmFsKSBjb25zdCBub2V4Y2VwdDsKICAgIH07CgoKCgoKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9IYXNoPgogICAgc3RydWN0IF9faXNfZmFzdF9oYXNoIDogcHVibGljIHN0ZDo6
dHJ1ZV90eXBlCiAgICB7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2Zhc3RfaGFz
aDxoYXNoPGxvbmcgZG91YmxlPj4gOiBwdWJsaWMgc3RkOjpmYWxzZV90eXBlCiAgICB7IH07CgoK
fQojIDMwNzAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmli
dXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKCgoKICB0ZW1wbGF0ZTw+
CiAgICBzdHJ1Y3QgaGFzaDxzdHJpbmc+CiAgICA6IHB1YmxpYyBfX2hhc2hfYmFzZTxzaXplX3Qs
IHN0cmluZz4KICAgIHsKICAgICAgc2l6ZV90CiAgICAgIG9wZXJhdG9yKCkoY29uc3Qgc3RyaW5n
JiBfX3MpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0ZDo6X0hhc2hfaW1wbDo6aGFz
aChfX3MuZGF0YSgpLCBfX3MubGVuZ3RoKCkpOyB9CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBz
dHJ1Y3QgX19pc19mYXN0X2hhc2g8aGFzaDxzdHJpbmc+PiA6IHN0ZDo6ZmFsc2VfdHlwZQogICAg
eyB9OwoKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBoYXNoPHdzdHJpbmc+CiAgICA6IHB1Ymxp
YyBfX2hhc2hfYmFzZTxzaXplX3QsIHdzdHJpbmc+CiAgICB7CiAgICAgIHNpemVfdAogICAgICBv
cGVyYXRvcigpKGNvbnN0IHdzdHJpbmcmIF9fcykgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1
cm4gc3RkOjpfSGFzaF9pbXBsOjpoYXNoKF9fcy5kYXRhKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX3MubGVuZ3RoKCkgKiBzaXplb2Yod2NoYXJfdCkpOyB9CiAgICB9
OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19mYXN0X2hhc2g8aGFzaDx3c3RyaW5nPj4g
OiBzdGQ6OmZhbHNlX3R5cGUKICAgIHsgfTsKCgoKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBo
YXNoPHUxNnN0cmluZz4KICAgIDogcHVibGljIF9faGFzaF9iYXNlPHNpemVfdCwgdTE2c3RyaW5n
PgogICAgewogICAgICBzaXplX3QKICAgICAgb3BlcmF0b3IoKShjb25zdCB1MTZzdHJpbmcmIF9f
cykgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RkOjpfSGFzaF9pbXBsOjpoYXNoKF9f
cy5kYXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3MubGVuZ3Ro
KCkgKiBzaXplb2YoY2hhcjE2X3QpKTsgfQogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0
IF9faXNfZmFzdF9oYXNoPGhhc2g8dTE2c3RyaW5nPj4gOiBzdGQ6OmZhbHNlX3R5cGUKICAgIHsg
fTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBoYXNoPHUzMnN0cmluZz4KICAgIDogcHVibGlj
IF9faGFzaF9iYXNlPHNpemVfdCwgdTMyc3RyaW5nPgogICAgewogICAgICBzaXplX3QKICAgICAg
b3BlcmF0b3IoKShjb25zdCB1MzJzdHJpbmcmIF9fcykgY29uc3Qgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gc3RkOjpfSGFzaF9pbXBsOjpoYXNoKF9fcy5kYXRhKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX3MubGVuZ3RoKCkgKiBzaXplb2YoY2hhcjMyX3QpKTsgfQog
ICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfZmFzdF9oYXNoPGhhc2g8dTMyc3Ry
aW5nPj4gOiBzdGQ6OmZhbHNlX3R5cGUKICAgIHsgfTsKIyAzMTc2ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfc3RyaW5n
LmgiIDMKCn0KIyA1MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9zdHJpbmciIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcudGNjIiAxIDMK
IyAzOCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL2Jhc2ljX3N0cmluZy50Y2MiIDMKI2RlZmluZSBfQkFTSUNfU1RSSU5HX1RDQyAx
CgogICAgICAgCiMgNDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9iYXNpY19zdHJpbmcudGNjIiAzCgoKCm5hbWVzcGFjZSBzdGQg
X19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAg
ICBjb25zdCB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+Ojpz
aXplX3R5cGUKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAg
X1JlcDo6X1NfbWF4X3NpemUgPSAoKChucG9zIC0gc2l6ZW9mKF9SZXBfYmFzZSkpL3NpemVvZihf
Q2hhclQpKSAtIDEpIC8gNDsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBjb25zdCBfQ2hhclQKICAgIGJhc2ljX3N0cmlu
ZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgX1JlcDo6X1NfdGVybWluYWwgPSBfQ2hh
clQoKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBl
bmFtZSBfQWxsb2M+CiAgICBjb25zdCB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJh
aXRzLCBfQWxsb2M+OjpzaXplX3R5cGUKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMs
IF9BbGxvYz46Om5wb3M7CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJU
LCBfVHJhaXRzLCBfQWxsb2M+OjpzaXplX3R5cGUKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U
cmFpdHMsIF9BbGxvYz46Ol9SZXA6Ol9TX2VtcHR5X3JlcF9zdG9yYWdlWwogICAgKHNpemVvZihf
UmVwX2Jhc2UpICsgc2l6ZW9mKF9DaGFyVCkgKyBzaXplb2Yoc2l6ZV90eXBlKSAtIDEpIC8KICAg
ICAgc2l6ZW9mKHNpemVfdHlwZSldOwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
SW5JdGVyYXRvcj4KICAgICAgX0NoYXJUKgogICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJh
aXRzLCBfQWxsb2M+OjoKICAgICAgX1NfY29uc3RydWN0KF9Jbkl0ZXJhdG9yIF9fYmVnLCBfSW5J
dGVyYXRvciBfX2VuZCwgY29uc3QgX0FsbG9jJiBfX2EsCiAgICAgaW5wdXRfaXRlcmF0b3JfdGFn
KQogICAgICB7CgogaWYgKF9fYmVnID09IF9fZW5kICYmIF9fYSA9PSBfQWxsb2MoKSkKICAgcmV0
dXJuIF9TX2VtcHR5X3JlcCgpLl9NX3JlZmRhdGEoKTsKCgogX0NoYXJUIF9fYnVmWzEyOF07CiBz
aXplX3R5cGUgX19sZW4gPSAwOwogd2hpbGUgKF9fYmVnICE9IF9fZW5kICYmIF9fbGVuIDwgc2l6
ZW9mKF9fYnVmKSAvIHNpemVvZihfQ2hhclQpKQogICB7CiAgICAgX19idWZbX19sZW4rK10gPSAq
X19iZWc7CiAgICAgKytfX2JlZzsKICAgfQogX1JlcCogX19yID0gX1JlcDo6X1NfY3JlYXRlKF9f
bGVuLCBzaXplX3R5cGUoMCksIF9fYSk7CiBfTV9jb3B5KF9fci0+X01fcmVmZGF0YSgpLCBfX2J1
ZiwgX19sZW4pOwogaWYgKHRydWUpCiAgIHsKICAgICB3aGlsZSAoX19iZWcgIT0gX19lbmQpCiAg
ICAgICB7CiAgaWYgKF9fbGVuID09IF9fci0+X01fY2FwYWNpdHkpCiAgICB7CgogICAgICBfUmVw
KiBfX2Fub3RoZXIgPSBfUmVwOjpfU19jcmVhdGUoX19sZW4gKyAxLCBfX2xlbiwgX19hKTsKICAg
ICAgX01fY29weShfX2Fub3RoZXItPl9NX3JlZmRhdGEoKSwgX19yLT5fTV9yZWZkYXRhKCksIF9f
bGVuKTsKICAgICAgX19yLT5fTV9kZXN0cm95KF9fYSk7CiAgICAgIF9fciA9IF9fYW5vdGhlcjsK
ICAgIH0KICBfX3ItPl9NX3JlZmRhdGEoKVtfX2xlbisrXSA9ICpfX2JlZzsKICArK19fYmVnOwog
ICAgICAgfQogICB9CiBpZiAoZmFsc2UpCiAgIHsKICAgICBfX3ItPl9NX2Rlc3Ryb3koX19hKTsK
ICAgICA7CiAgIH0KIF9fci0+X01fc2V0X2xlbmd0aF9hbmRfc2hhcmFibGUoX19sZW4pOwogcmV0
dXJuIF9fci0+X01fcmVmZGF0YSgpOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdGVtcGxhdGUgPHR5cGVu
YW1lIF9Jbkl0ZXJhdG9yPgogICAgICBfQ2hhclQqCiAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQs
IF9UcmFpdHMsIF9BbGxvYz46OgogICAgICBfU19jb25zdHJ1Y3QoX0luSXRlcmF0b3IgX19iZWcs
IF9Jbkl0ZXJhdG9yIF9fZW5kLCBjb25zdCBfQWxsb2MmIF9fYSwKICAgICBmb3J3YXJkX2l0ZXJh
dG9yX3RhZykKICAgICAgewoKIGlmIChfX2JlZyA9PSBfX2VuZCAmJiBfX2EgPT0gX0FsbG9jKCkp
CiAgIHJldHVybiBfU19lbXB0eV9yZXAoKS5fTV9yZWZkYXRhKCk7CgoKIGlmIChfX2dudV9jeHg6
Ol9faXNfbnVsbF9wb2ludGVyKF9fYmVnKSAmJiBfX2JlZyAhPSBfX2VuZCkKICAgX190aHJvd19s
b2dpY19lcnJvcigoImJhc2ljX3N0cmluZzo6X1NfY29uc3RydWN0IG51bGwgbm90IHZhbGlkIikp
OwoKIGNvbnN0IHNpemVfdHlwZSBfX2RuZXcgPSBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KHN0ZDo6
ZGlzdGFuY2UoX19iZWcsCiAgICAgICAgICAgICAgX19lbmQpKTsKCiBfUmVwKiBfX3IgPSBfUmVw
OjpfU19jcmVhdGUoX19kbmV3LCBzaXplX3R5cGUoMCksIF9fYSk7CiBpZiAodHJ1ZSkKICAgeyBf
U19jb3B5X2NoYXJzKF9fci0+X01fcmVmZGF0YSgpLCBfX2JlZywgX19lbmQpOyB9CiBpZiAoZmFs
c2UpCiAgIHsKICAgICBfX3ItPl9NX2Rlc3Ryb3koX19hKTsKICAgICA7CiAgIH0KIF9fci0+X01f
c2V0X2xlbmd0aF9hbmRfc2hhcmFibGUoX19kbmV3KTsKIHJldHVybiBfX3ItPl9NX3JlZmRhdGEo
KTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMs
IHR5cGVuYW1lIF9BbGxvYz4KICAgIF9DaGFyVCoKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U
cmFpdHMsIF9BbGxvYz46OgogICAgX1NfY29uc3RydWN0KHNpemVfdHlwZSBfX24sIF9DaGFyVCBf
X2MsIGNvbnN0IF9BbGxvYyYgX19hKQogICAgewoKICAgICAgaWYgKF9fbiA9PSAwICYmIF9fYSA9
PSBfQWxsb2MoKSkKIHJldHVybiBfU19lbXB0eV9yZXAoKS5fTV9yZWZkYXRhKCk7CgoKICAgICAg
X1JlcCogX19yID0gX1JlcDo6X1NfY3JlYXRlKF9fbiwgc2l6ZV90eXBlKDApLCBfX2EpOwogICAg
ICBpZiAoX19uKQogX01fYXNzaWduKF9fci0+X01fcmVmZGF0YSgpLCBfX24sIF9fYyk7CgogICAg
ICBfX3ItPl9NX3NldF9sZW5ndGhfYW5kX3NoYXJhYmxlKF9fbik7CiAgICAgIHJldHVybiBfX3It
Pl9NX3JlZmRhdGEoKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJh
aXRzLCBfQWxsb2M+OjoKICAgIGJhc2ljX3N0cmluZyhjb25zdCBiYXNpY19zdHJpbmcmIF9fc3Ry
KQogICAgOiBfTV9kYXRhcGx1cyhfX3N0ci5fTV9yZXAoKS0+X01fZ3JhYihfQWxsb2MoX19zdHIu
Z2V0X2FsbG9jYXRvcigpKSwKICAgICAgIF9fc3RyLmdldF9hbGxvY2F0b3IoKSksCiAgICBfX3N0
ci5nZXRfYWxsb2NhdG9yKCkpCiAgICB7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8X0NoYXJU
LCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGJhc2ljX3N0cmluZyhjb25zdCBfQWxsb2MmIF9fYSkK
ICAgIDogX01fZGF0YXBsdXMoX1NfY29uc3RydWN0KHNpemVfdHlwZSgpLCBfQ2hhclQoKSwgX19h
KSwgX19hKQogICAgeyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1Ry
YWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywg
X0FsbG9jPjo6CiAgICBiYXNpY19zdHJpbmcoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwgc2l6
ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uKQogICAgOiBfTV9kYXRhcGx1cyhfU19jb25zdHJ1
Y3QoX19zdHIuX01fZGF0YSgpCiAgICAgICAgICArIF9fc3RyLl9NX2NoZWNrKF9fcG9zLAogICAg
ICAiYmFzaWNfc3RyaW5nOjpiYXNpY19zdHJpbmciKSwKICAgICAgICAgIF9fc3RyLl9NX2RhdGEo
KSArIF9fc3RyLl9NX2xpbWl0KF9fcG9zLCBfX24pCiAgICAgICAgICArIF9fcG9zLCBfQWxsb2Mo
KSksIF9BbGxvYygpKQogICAgeyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry
YWl0cywgX0FsbG9jPjo6CiAgICBiYXNpY19zdHJpbmcoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0
ciwgc2l6ZV90eXBlIF9fcG9zLAogICBzaXplX3R5cGUgX19uLCBjb25zdCBfQWxsb2MmIF9fYSkK
ICAgIDogX01fZGF0YXBsdXMoX1NfY29uc3RydWN0KF9fc3RyLl9NX2RhdGEoKQogICAgICAgICAg
KyBfX3N0ci5fTV9jaGVjayhfX3BvcywKICAgICAgImJhc2ljX3N0cmluZzo6YmFzaWNfc3RyaW5n
IiksCiAgICAgICAgICBfX3N0ci5fTV9kYXRhKCkgKyBfX3N0ci5fTV9saW1pdChfX3BvcywgX19u
KQogICAgICAgICAgKyBfX3BvcywgX19hKSwgX19hKQogICAgeyB9CgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgYmFzaWNfc3RyaW5nKGNvbnN0
IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19uLCBjb25zdCBfQWxsb2MmIF9fYSkKICAgIDogX01f
ZGF0YXBsdXMoX1NfY29uc3RydWN0KF9fcywgX19zICsgX19uLCBfX2EpLCBfX2EpCiAgICB7IH0K
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUg
X0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBi
YXNpY19zdHJpbmcoY29uc3QgX0NoYXJUKiBfX3MsIGNvbnN0IF9BbGxvYyYgX19hKQogICAgOiBf
TV9kYXRhcGx1cyhfU19jb25zdHJ1Y3QoX19zLCBfX3MgPyBfX3MgKyB0cmFpdHNfdHlwZTo6bGVu
Z3RoKF9fcykgOgogICAgICAgICAgX19zICsgbnBvcywgX19hKSwgX19hKQogICAgeyB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9j
PgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBiYXNpY19z
dHJpbmcoc2l6ZV90eXBlIF9fbiwgX0NoYXJUIF9fYywgY29uc3QgX0FsbG9jJiBfX2EpCiAgICA6
IF9NX2RhdGFwbHVzKF9TX2NvbnN0cnVjdChfX24sIF9fYywgX19hKSwgX19hKQogICAgeyB9CgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9B
bGxvYz4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yPgogICAgYmFzaWNfc3Ry
aW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBiYXNpY19zdHJpbmcoX0lucHV0SXRl
cmF0b3IgX19iZWcsIF9JbnB1dEl0ZXJhdG9yIF9fZW5kLCBjb25zdCBfQWxsb2MmIF9fYSkKICAg
IDogX01fZGF0YXBsdXMoX1NfY29uc3RydWN0KF9fYmVnLCBfX2VuZCwgX19hKSwgX19hKQogICAg
eyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVu
YW1lIF9BbGxvYz4KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Ogog
ICAgYmFzaWNfc3RyaW5nKGluaXRpYWxpemVyX2xpc3Q8X0NoYXJUPiBfX2wsIGNvbnN0IF9BbGxv
YyYgX19hKQogICAgOiBfTV9kYXRhcGx1cyhfU19jb25zdHJ1Y3QoX19sLmJlZ2luKCksIF9fbC5l
bmQoKSwgX19hKSwgX19hKQogICAgeyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5
cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQs
IF9UcmFpdHMsIF9BbGxvYz4mCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxs
b2M+OjoKICAgIGFzc2lnbihjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKQogICAgewogICAgICBp
ZiAoX01fcmVwKCkgIT0gX19zdHIuX01fcmVwKCkpCiB7CgogICBjb25zdCBhbGxvY2F0b3JfdHlw
ZSBfX2EgPSB0aGlzLT5nZXRfYWxsb2NhdG9yKCk7CiAgIF9DaGFyVCogX190bXAgPSBfX3N0ci5f
TV9yZXAoKS0+X01fZ3JhYihfX2EsIF9fc3RyLmdldF9hbGxvY2F0b3IoKSk7CiAgIF9NX3JlcCgp
LT5fTV9kaXNwb3NlKF9fYSk7CiAgIF9NX2RhdGEoX190bXApOwogfQogICAgICByZXR1cm4gKnRo
aXM7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywg
dHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j
PiYKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgYXNzaWdu
KGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19uKQogICAgewogICAgICA7CiAgICAgIF9N
X2NoZWNrX2xlbmd0aCh0aGlzLT5zaXplKCksIF9fbiwgImJhc2ljX3N0cmluZzo6YXNzaWduIik7
CiAgICAgIGlmIChfTV9kaXNqdW5jdChfX3MpIHx8IF9NX3JlcCgpLT5fTV9pc19zaGFyZWQoKSkK
IHJldHVybiBfTV9yZXBsYWNlX3NhZmUoc2l6ZV90eXBlKDApLCB0aGlzLT5zaXplKCksIF9fcywg
X19uKTsKICAgICAgZWxzZQogewoKICAgY29uc3Qgc2l6ZV90eXBlIF9fcG9zID0gX19zIC0gX01f
ZGF0YSgpOwogICBpZiAoX19wb3MgPj0gX19uKQogICAgIF9NX2NvcHkoX01fZGF0YSgpLCBfX3Ms
IF9fbik7CiAgIGVsc2UgaWYgKF9fcG9zKQogICAgIF9NX21vdmUoX01fZGF0YSgpLCBfX3MsIF9f
bik7CiAgIF9NX3JlcCgpLT5fTV9zZXRfbGVuZ3RoX2FuZF9zaGFyYWJsZShfX24pOwogICByZXR1
cm4gKnRoaXM7CiB9CiAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFp
dHMsIF9BbGxvYz4mCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoK
ICAgIGFwcGVuZChzaXplX3R5cGUgX19uLCBfQ2hhclQgX19jKQogICAgewogICAgICBpZiAoX19u
KQogewogICBfTV9jaGVja19sZW5ndGgoc2l6ZV90eXBlKDApLCBfX24sICJiYXNpY19zdHJpbmc6
OmFwcGVuZCIpOwogICBjb25zdCBzaXplX3R5cGUgX19sZW4gPSBfX24gKyB0aGlzLT5zaXplKCk7
CiAgIGlmIChfX2xlbiA+IHRoaXMtPmNhcGFjaXR5KCkgfHwgX01fcmVwKCktPl9NX2lzX3NoYXJl
ZCgpKQogICAgIHRoaXMtPnJlc2VydmUoX19sZW4pOwogICBfTV9hc3NpZ24oX01fZGF0YSgpICsg
dGhpcy0+c2l6ZSgpLCBfX24sIF9fYyk7CiAgIF9NX3JlcCgpLT5fTV9zZXRfbGVuZ3RoX2FuZF9z
aGFyYWJsZShfX2xlbik7CiB9CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBi
YXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JgogICAgYmFzaWNfc3RyaW5nPF9D
aGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBhcHBlbmQoY29uc3QgX0NoYXJUKiBfX3MsIHNp
emVfdHlwZSBfX24pCiAgICB7CiAgICAgIDsKICAgICAgaWYgKF9fbikKIHsKICAgX01fY2hlY2tf
bGVuZ3RoKHNpemVfdHlwZSgwKSwgX19uLCAiYmFzaWNfc3RyaW5nOjphcHBlbmQiKTsKICAgY29u
c3Qgc2l6ZV90eXBlIF9fbGVuID0gX19uICsgdGhpcy0+c2l6ZSgpOwogICBpZiAoX19sZW4gPiB0
aGlzLT5jYXBhY2l0eSgpIHx8IF9NX3JlcCgpLT5fTV9pc19zaGFyZWQoKSkKICAgICB7CiAgICAg
ICBpZiAoX01fZGlzanVuY3QoX19zKSkKICB0aGlzLT5yZXNlcnZlKF9fbGVuKTsKICAgICAgIGVs
c2UKICB7CiAgICBjb25zdCBzaXplX3R5cGUgX19vZmYgPSBfX3MgLSBfTV9kYXRhKCk7CiAgICB0
aGlzLT5yZXNlcnZlKF9fbGVuKTsKICAgIF9fcyA9IF9NX2RhdGEoKSArIF9fb2ZmOwogIH0KICAg
ICB9CiAgIF9NX2NvcHkoX01fZGF0YSgpICsgdGhpcy0+c2l6ZSgpLCBfX3MsIF9fbik7CiAgIF9N
X3JlcCgpLT5fTV9zZXRfbGVuZ3RoX2FuZF9zaGFyYWJsZShfX2xlbik7CiB9CiAgICAgIHJldHVy
biAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJh
aXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBf
QWxsb2M+JgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBh
cHBlbmQoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0cikKICAgIHsKICAgICAgY29uc3Qgc2l6ZV90
eXBlIF9fc2l6ZSA9IF9fc3RyLnNpemUoKTsKICAgICAgaWYgKF9fc2l6ZSkKIHsKICAgY29uc3Qg
c2l6ZV90eXBlIF9fbGVuID0gX19zaXplICsgdGhpcy0+c2l6ZSgpOwogICBpZiAoX19sZW4gPiB0
aGlzLT5jYXBhY2l0eSgpIHx8IF9NX3JlcCgpLT5fTV9pc19zaGFyZWQoKSkKICAgICB0aGlzLT5y
ZXNlcnZlKF9fbGVuKTsKICAgX01fY29weShfTV9kYXRhKCkgKyB0aGlzLT5zaXplKCksIF9fc3Ry
Ll9NX2RhdGEoKSwgX19zaXplKTsKICAgX01fcmVwKCktPl9NX3NldF9sZW5ndGhfYW5kX3NoYXJh
YmxlKF9fbGVuKTsKIH0KICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mCiAgICBiYXNpY19zdHJpbmc8X0NoYXJU
LCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGFwcGVuZChjb25zdCBiYXNpY19zdHJpbmcmIF9fc3Ry
LCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pCiAgICB7CiAgICAgIF9fc3RyLl9NX2No
ZWNrKF9fcG9zLCAiYmFzaWNfc3RyaW5nOjphcHBlbmQiKTsKICAgICAgX19uID0gX19zdHIuX01f
bGltaXQoX19wb3MsIF9fbik7CiAgICAgIGlmIChfX24pCiB7CiAgIGNvbnN0IHNpemVfdHlwZSBf
X2xlbiA9IF9fbiArIHRoaXMtPnNpemUoKTsKICAgaWYgKF9fbGVuID4gdGhpcy0+Y2FwYWNpdHko
KSB8fCBfTV9yZXAoKS0+X01faXNfc2hhcmVkKCkpCiAgICAgdGhpcy0+cmVzZXJ2ZShfX2xlbik7
CiAgIF9NX2NvcHkoX01fZGF0YSgpICsgdGhpcy0+c2l6ZSgpLCBfX3N0ci5fTV9kYXRhKCkgKyBf
X3BvcywgX19uKTsKICAgX01fcmVwKCktPl9NX3NldF9sZW5ndGhfYW5kX3NoYXJhYmxlKF9fbGVu
KTsKIH0KICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICAgYmFzaWNfc3RyaW5n
PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYKICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJh
aXRzLCBfQWxsb2M+OjoKICAgICBpbnNlcnQoc2l6ZV90eXBlIF9fcG9zLCBjb25zdCBfQ2hhclQq
IF9fcywgc2l6ZV90eXBlIF9fbikKICAgICB7CiAgICAgICA7CiAgICAgICBfTV9jaGVjayhfX3Bv
cywgImJhc2ljX3N0cmluZzo6aW5zZXJ0Iik7CiAgICAgICBfTV9jaGVja19sZW5ndGgoc2l6ZV90
eXBlKDApLCBfX24sICJiYXNpY19zdHJpbmc6Omluc2VydCIpOwogICAgICAgaWYgKF9NX2Rpc2p1
bmN0KF9fcykgfHwgX01fcmVwKCktPl9NX2lzX3NoYXJlZCgpKQogICAgICAgICByZXR1cm4gX01f
cmVwbGFjZV9zYWZlKF9fcG9zLCBzaXplX3R5cGUoMCksIF9fcywgX19uKTsKICAgICAgIGVsc2UK
ICAgICAgICAgewoKICAgICAgICAgICBjb25zdCBzaXplX3R5cGUgX19vZmYgPSBfX3MgLSBfTV9k
YXRhKCk7CiAgICAgICAgICAgX01fbXV0YXRlKF9fcG9zLCAwLCBfX24pOwogICAgICAgICAgIF9f
cyA9IF9NX2RhdGEoKSArIF9fb2ZmOwogICAgICAgICAgIF9DaGFyVCogX19wID0gX01fZGF0YSgp
ICsgX19wb3M7CiAgICAgICAgICAgaWYgKF9fcyArIF9fbiA8PSBfX3ApCiAgICAgICAgICAgICBf
TV9jb3B5KF9fcCwgX19zLCBfX24pOwogICAgICAgICAgIGVsc2UgaWYgKF9fcyA+PSBfX3ApCiAg
ICAgICAgICAgICBfTV9jb3B5KF9fcCwgX19zICsgX19uLCBfX24pOwogICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHsKICAgICAgICBjb25zdCBzaXplX3R5cGUgX19ubGVmdCA9IF9fcCAtIF9f
czsKICAgICAgICAgICAgICAgX01fY29weShfX3AsIF9fcywgX19ubGVmdCk7CiAgICAgICAgICAg
ICAgIF9NX2NvcHkoX19wICsgX19ubGVmdCwgX19wICsgX19uLCBfX24gLSBfX25sZWZ0KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIH0KICAgICB9Cgog
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9B
bGxvYz4KICAgICB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+
OjppdGVyYXRvcgogICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Ogog
ICAgIGVyYXNlKGl0ZXJhdG9yIF9fZmlyc3QsIGl0ZXJhdG9yIF9fbGFzdCkKICAgICB7CiAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKCgogICAgICAgY29uc3Qgc2l6ZV90eXBl
IF9fc2l6ZSA9IF9fbGFzdCAtIF9fZmlyc3Q7CiAgICAgICBpZiAoX19zaXplKQogIHsKICAgIGNv
bnN0IHNpemVfdHlwZSBfX3BvcyA9IF9fZmlyc3QgLSBfTV9pYmVnaW4oKTsKICAgIF9NX211dGF0
ZShfX3BvcywgX19zaXplLCBzaXplX3R5cGUoMCkpOwogICAgX01fcmVwKCktPl9NX3NldF9sZWFr
ZWQoKTsKICAgIHJldHVybiBpdGVyYXRvcihfTV9kYXRhKCkgKyBfX3Bvcyk7CiAgfQogICAgICAg
ZWxzZQogIHJldHVybiBfX2ZpcnN0OwogICAgIH0KCiAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgIGJhc2ljX3N0cmluZzxf
Q2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mCiAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0
cywgX0FsbG9jPjo6CiAgICAgcmVwbGFjZShzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24x
LCBjb25zdCBfQ2hhclQqIF9fcywKICAgICAgc2l6ZV90eXBlIF9fbjIpCiAgICAgewogICAgICAg
OwogICAgICAgX01fY2hlY2soX19wb3MsICJiYXNpY19zdHJpbmc6OnJlcGxhY2UiKTsKICAgICAg
IF9fbjEgPSBfTV9saW1pdChfX3BvcywgX19uMSk7CiAgICAgICBfTV9jaGVja19sZW5ndGgoX19u
MSwgX19uMiwgImJhc2ljX3N0cmluZzo6cmVwbGFjZSIpOwogICAgICAgYm9vbCBfX2xlZnQ7CiAg
ICAgICBpZiAoX01fZGlzanVuY3QoX19zKSB8fCBfTV9yZXAoKS0+X01faXNfc2hhcmVkKCkpCiAg
ICAgICAgIHJldHVybiBfTV9yZXBsYWNlX3NhZmUoX19wb3MsIF9fbjEsIF9fcywgX19uMik7CiAg
ICAgICBlbHNlIGlmICgoX19sZWZ0ID0gX19zICsgX19uMiA8PSBfTV9kYXRhKCkgKyBfX3BvcykK
ICB8fCBfTV9kYXRhKCkgKyBfX3BvcyArIF9fbjEgPD0gX19zKQogIHsKCiAgICBzaXplX3R5cGUg
X19vZmYgPSBfX3MgLSBfTV9kYXRhKCk7CiAgICBfX2xlZnQgPyBfX29mZiA6IChfX29mZiArPSBf
X24yIC0gX19uMSk7CiAgICBfTV9tdXRhdGUoX19wb3MsIF9fbjEsIF9fbjIpOwogICAgX01fY29w
eShfTV9kYXRhKCkgKyBfX3BvcywgX01fZGF0YSgpICsgX19vZmYsIF9fbjIpOwogICAgcmV0dXJu
ICp0aGlzOwogIH0KICAgICAgIGVsc2UKICB7CgogICAgY29uc3QgYmFzaWNfc3RyaW5nIF9fdG1w
KF9fcywgX19uMik7CiAgICByZXR1cm4gX01fcmVwbGFjZV9zYWZlKF9fcG9zLCBfX24xLCBfX3Rt
cC5fTV9kYXRhKCksIF9fbjIpOwogIH0KICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdm9pZAogICAgYmFzaWNf
c3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6X1JlcDo6CiAgICBfTV9kZXN0cm95KGNv
bnN0IF9BbGxvYyYgX19hKSB0aHJvdyAoKQogICAgewogICAgICBjb25zdCBzaXplX3R5cGUgX19z
aXplID0gc2l6ZW9mKF9SZXBfYmFzZSkgKwogICAgICAgICAgICAgICAgICAgICAgICAodGhpcy0+
X01fY2FwYWNpdHkgKyAxKSAqIHNpemVvZihfQ2hhclQpOwogICAgICBfUmF3X2J5dGVzX2FsbG9j
KF9fYSkuZGVhbGxvY2F0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKSwgX19zaXplKTsK
ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBl
bmFtZSBfQWxsb2M+CiAgICB2b2lkCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBf
QWxsb2M+OjoKICAgIF9NX2xlYWtfaGFyZCgpCiAgICB7CgogICAgICBpZiAoX01fcmVwKCkgPT0g
Jl9TX2VtcHR5X3JlcCgpKQogcmV0dXJuOwoKICAgICAgaWYgKF9NX3JlcCgpLT5fTV9pc19zaGFy
ZWQoKSkKIF9NX211dGF0ZSgwLCAwLCAwKTsKICAgICAgX01fcmVwKCktPl9NX3NldF9sZWFrZWQo
KTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0
eXBlbmFtZSBfQWxsb2M+CiAgICB2b2lkCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRz
LCBfQWxsb2M+OjoKICAgIF9NX211dGF0ZShzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX2xl
bjEsIHNpemVfdHlwZSBfX2xlbjIpCiAgICB7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX29sZF9z
aXplID0gdGhpcy0+c2l6ZSgpOwogICAgICBjb25zdCBzaXplX3R5cGUgX19uZXdfc2l6ZSA9IF9f
b2xkX3NpemUgKyBfX2xlbjIgLSBfX2xlbjE7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX2hvd19t
dWNoID0gX19vbGRfc2l6ZSAtIF9fcG9zIC0gX19sZW4xOwoKICAgICAgaWYgKF9fbmV3X3NpemUg
PiB0aGlzLT5jYXBhY2l0eSgpIHx8IF9NX3JlcCgpLT5fTV9pc19zaGFyZWQoKSkKIHsKCiAgIGNv
bnN0IGFsbG9jYXRvcl90eXBlIF9fYSA9IGdldF9hbGxvY2F0b3IoKTsKICAgX1JlcCogX19yID0g
X1JlcDo6X1NfY3JlYXRlKF9fbmV3X3NpemUsIHRoaXMtPmNhcGFjaXR5KCksIF9fYSk7CgogICBp
ZiAoX19wb3MpCiAgICAgX01fY29weShfX3ItPl9NX3JlZmRhdGEoKSwgX01fZGF0YSgpLCBfX3Bv
cyk7CiAgIGlmIChfX2hvd19tdWNoKQogICAgIF9NX2NvcHkoX19yLT5fTV9yZWZkYXRhKCkgKyBf
X3BvcyArIF9fbGVuMiwKICAgICAgX01fZGF0YSgpICsgX19wb3MgKyBfX2xlbjEsIF9faG93X211
Y2gpOwoKICAgX01fcmVwKCktPl9NX2Rpc3Bvc2UoX19hKTsKICAgX01fZGF0YShfX3ItPl9NX3Jl
ZmRhdGEoKSk7CiB9CiAgICAgIGVsc2UgaWYgKF9faG93X211Y2ggJiYgX19sZW4xICE9IF9fbGVu
MikKIHsKCiAgIF9NX21vdmUoX01fZGF0YSgpICsgX19wb3MgKyBfX2xlbjIsCiAgICBfTV9kYXRh
KCkgKyBfX3BvcyArIF9fbGVuMSwgX19ob3dfbXVjaCk7CiB9CiAgICAgIF9NX3JlcCgpLT5fTV9z
ZXRfbGVuZ3RoX2FuZF9zaGFyYWJsZShfX25ld19zaXplKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB2b2lk
CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIHJlc2VydmUo
c2l6ZV90eXBlIF9fcmVzKQogICAgewogICAgICBpZiAoX19yZXMgIT0gdGhpcy0+Y2FwYWNpdHko
KSB8fCBfTV9yZXAoKS0+X01faXNfc2hhcmVkKCkpCiAgICAgICAgewoKICAgaWYgKF9fcmVzIDwg
dGhpcy0+c2l6ZSgpKQogICAgIF9fcmVzID0gdGhpcy0+c2l6ZSgpOwogICBjb25zdCBhbGxvY2F0
b3JfdHlwZSBfX2EgPSBnZXRfYWxsb2NhdG9yKCk7CiAgIF9DaGFyVCogX190bXAgPSBfTV9yZXAo
KS0+X01fY2xvbmUoX19hLCBfX3JlcyAtIHRoaXMtPnNpemUoKSk7CiAgIF9NX3JlcCgpLT5fTV9k
aXNwb3NlKF9fYSk7CiAgIF9NX2RhdGEoX190bXApOwogICAgICAgIH0KICAgIH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAg
ICB2b2lkCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIHN3
YXAoYmFzaWNfc3RyaW5nJiBfX3MpCiAgICB7CiAgICAgIGlmIChfTV9yZXAoKS0+X01faXNfbGVh
a2VkKCkpCiBfTV9yZXAoKS0+X01fc2V0X3NoYXJhYmxlKCk7CiAgICAgIGlmIChfX3MuX01fcmVw
KCktPl9NX2lzX2xlYWtlZCgpKQogX19zLl9NX3JlcCgpLT5fTV9zZXRfc2hhcmFibGUoKTsKICAg
ICAgaWYgKHRoaXMtPmdldF9hbGxvY2F0b3IoKSA9PSBfX3MuZ2V0X2FsbG9jYXRvcigpKQogewog
ICBfQ2hhclQqIF9fdG1wID0gX01fZGF0YSgpOwogICBfTV9kYXRhKF9fcy5fTV9kYXRhKCkpOwog
ICBfX3MuX01fZGF0YShfX3RtcCk7CiB9CgogICAgICBlbHNlCiB7CiAgIGNvbnN0IGJhc2ljX3N0
cmluZyBfX3RtcDEoX01faWJlZ2luKCksIF9NX2llbmQoKSwKICAgICAgICBfX3MuZ2V0X2FsbG9j
YXRvcigpKTsKICAgY29uc3QgYmFzaWNfc3RyaW5nIF9fdG1wMihfX3MuX01faWJlZ2luKCksIF9f
cy5fTV9pZW5kKCksCiAgICAgICAgdGhpcy0+Z2V0X2FsbG9jYXRvcigpKTsKICAgKnRoaXMgPSBf
X3RtcDI7CiAgIF9fcyA9IF9fdG1wMTsKIH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0eXBlbmFtZSBiYXNp
Y19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjpfUmVwKgogICAgYmFzaWNfc3RyaW5n
PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6X1JlcDo6CiAgICBfU19jcmVhdGUoc2l6ZV90eXBl
IF9fY2FwYWNpdHksIHNpemVfdHlwZSBfX29sZF9jYXBhY2l0eSwKICAgICAgIGNvbnN0IF9BbGxv
YyYgX19hbGxvYykKICAgIHsKCgogICAgICBpZiAoX19jYXBhY2l0eSA+IF9TX21heF9zaXplKQog
X190aHJvd19sZW5ndGhfZXJyb3IoKCJiYXNpY19zdHJpbmc6Ol9TX2NyZWF0ZSIpKTsKIyA1Nzcg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
Yml0cy9iYXNpY19zdHJpbmcudGNjIiAzCiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX3BhZ2VzaXpl
ID0gNDA5NjsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbWFsbG9jX2hlYWRlcl9zaXplID0gNCAq
IHNpemVvZih2b2lkKik7CgoKCgoKCgogICAgICBpZiAoX19jYXBhY2l0eSA+IF9fb2xkX2NhcGFj
aXR5ICYmIF9fY2FwYWNpdHkgPCAyICogX19vbGRfY2FwYWNpdHkpCiBfX2NhcGFjaXR5ID0gMiAq
IF9fb2xkX2NhcGFjaXR5OwoKCgoKICAgICAgc2l6ZV90eXBlIF9fc2l6ZSA9IChfX2NhcGFjaXR5
ICsgMSkgKiBzaXplb2YoX0NoYXJUKSArIHNpemVvZihfUmVwKTsKCiAgICAgIGNvbnN0IHNpemVf
dHlwZSBfX2Fkal9zaXplID0gX19zaXplICsgX19tYWxsb2NfaGVhZGVyX3NpemU7CiAgICAgIGlm
IChfX2Fkal9zaXplID4gX19wYWdlc2l6ZSAmJiBfX2NhcGFjaXR5ID4gX19vbGRfY2FwYWNpdHkp
CiB7CiAgIGNvbnN0IHNpemVfdHlwZSBfX2V4dHJhID0gX19wYWdlc2l6ZSAtIF9fYWRqX3NpemUg
JSBfX3BhZ2VzaXplOwogICBfX2NhcGFjaXR5ICs9IF9fZXh0cmEgLyBzaXplb2YoX0NoYXJUKTsK
CiAgIGlmIChfX2NhcGFjaXR5ID4gX1NfbWF4X3NpemUpCiAgICAgX19jYXBhY2l0eSA9IF9TX21h
eF9zaXplOwogICBfX3NpemUgPSAoX19jYXBhY2l0eSArIDEpICogc2l6ZW9mKF9DaGFyVCkgKyBz
aXplb2YoX1JlcCk7CiB9CgoKCiAgICAgIHZvaWQqIF9fcGxhY2UgPSBfUmF3X2J5dGVzX2FsbG9j
KF9fYWxsb2MpLmFsbG9jYXRlKF9fc2l6ZSk7CiAgICAgIF9SZXAgKl9fcCA9IG5ldyAoX19wbGFj
ZSkgX1JlcDsKICAgICAgX19wLT5fTV9jYXBhY2l0eSA9IF9fY2FwYWNpdHk7CgoKCgoKCgogICAg
ICBfX3AtPl9NX3NldF9zaGFyYWJsZSgpOwogICAgICByZXR1cm4gX19wOwogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4K
ICAgIF9DaGFyVCoKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Ol9S
ZXA6OgogICAgX01fY2xvbmUoY29uc3QgX0FsbG9jJiBfX2FsbG9jLCBzaXplX3R5cGUgX19yZXMp
CiAgICB7CgogICAgICBjb25zdCBzaXplX3R5cGUgX19yZXF1ZXN0ZWRfY2FwID0gdGhpcy0+X01f
bGVuZ3RoICsgX19yZXM7CiAgICAgIF9SZXAqIF9fciA9IF9SZXA6Ol9TX2NyZWF0ZShfX3JlcXVl
c3RlZF9jYXAsIHRoaXMtPl9NX2NhcGFjaXR5LAogICAgICBfX2FsbG9jKTsKICAgICAgaWYgKHRo
aXMtPl9NX2xlbmd0aCkKIF9NX2NvcHkoX19yLT5fTV9yZWZkYXRhKCksIF9NX3JlZmRhdGEoKSwg
dGhpcy0+X01fbGVuZ3RoKTsKCiAgICAgIF9fci0+X01fc2V0X2xlbmd0aF9hbmRfc2hhcmFibGUo
dGhpcy0+X01fbGVuZ3RoKTsKICAgICAgcmV0dXJuIF9fci0+X01fcmVmZGF0YSgpOwogICAgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9B
bGxvYz4KICAgIHZvaWQKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46
OgogICAgcmVzaXplKHNpemVfdHlwZSBfX24sIF9DaGFyVCBfX2MpCiAgICB7CiAgICAgIGNvbnN0
IHNpemVfdHlwZSBfX3NpemUgPSB0aGlzLT5zaXplKCk7CiAgICAgIF9NX2NoZWNrX2xlbmd0aChf
X3NpemUsIF9fbiwgImJhc2ljX3N0cmluZzo6cmVzaXplIik7CiAgICAgIGlmIChfX3NpemUgPCBf
X24pCiB0aGlzLT5hcHBlbmQoX19uIC0gX19zaXplLCBfX2MpOwogICAgICBlbHNlIGlmIChfX24g
PCBfX3NpemUpCiB0aGlzLT5lcmFzZShfX24pOwoKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSW5wdXRJdGVyYXRvcj4KICAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0
cywgX0FsbG9jPiYKICAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6
CiAgICAgIF9NX3JlcGxhY2VfZGlzcGF0Y2goaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwg
X0lucHV0SXRlcmF0b3IgX19rMSwKICAgICBfSW5wdXRJdGVyYXRvciBfX2syLCBfX2ZhbHNlX3R5
cGUpCiAgICAgIHsKIGNvbnN0IGJhc2ljX3N0cmluZyBfX3MoX19rMSwgX19rMik7CiBjb25zdCBz
aXplX3R5cGUgX19uMSA9IF9faTIgLSBfX2kxOwogX01fY2hlY2tfbGVuZ3RoKF9fbjEsIF9fcy5z
aXplKCksICJiYXNpY19zdHJpbmc6Ol9NX3JlcGxhY2VfZGlzcGF0Y2giKTsKIHJldHVybiBfTV9y
ZXBsYWNlX3NhZmUoX19pMSAtIF9NX2liZWdpbigpLCBfX24xLCBfX3MuX01fZGF0YSgpLAogICAg
ICAgICAgX19zLnNpemUoKSk7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8X0NoYXJU
LCBfVHJhaXRzLCBfQWxsb2M+JgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs
bG9jPjo6CiAgICBfTV9yZXBsYWNlX2F1eChzaXplX3R5cGUgX19wb3MxLCBzaXplX3R5cGUgX19u
MSwgc2l6ZV90eXBlIF9fbjIsCiAgICAgX0NoYXJUIF9fYykKICAgIHsKICAgICAgX01fY2hlY2tf
bGVuZ3RoKF9fbjEsIF9fbjIsICJiYXNpY19zdHJpbmc6Ol9NX3JlcGxhY2VfYXV4Iik7CiAgICAg
IF9NX211dGF0ZShfX3BvczEsIF9fbjEsIF9fbjIpOwogICAgICBpZiAoX19uMikKIF9NX2Fzc2ln
bihfTV9kYXRhKCkgKyBfX3BvczEsIF9fbjIsIF9fYyk7CiAgICAgIHJldHVybiAqdGhpczsKICAg
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFt
ZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JgogICAg
YmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBfTV9yZXBsYWNlX3Nh
ZmUoc2l6ZV90eXBlIF9fcG9zMSwgc2l6ZV90eXBlIF9fbjEsIGNvbnN0IF9DaGFyVCogX19zLAog
ICAgICBzaXplX3R5cGUgX19uMikKICAgIHsKICAgICAgX01fbXV0YXRlKF9fcG9zMSwgX19uMSwg
X19uMik7CiAgICAgIGlmIChfX24yKQogX01fY29weShfTV9kYXRhKCkgKyBfX3BvczEsIF9fcywg
X19uMik7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+CiAgICBvcGVyYXRvcisoY29uc3QgX0NoYXJUKiBfX2xo
cywKICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9f
cmhzKQogICAgewogICAgICA7CiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry
YWl0cywgX0FsbG9jPiBfX3N0cmluZ190eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fc3Ry
aW5nX3R5cGU6OnNpemVfdHlwZSBfX3NpemVfdHlwZTsKICAgICAgY29uc3QgX19zaXplX3R5cGUg
X19sZW4gPSBfVHJhaXRzOjpsZW5ndGgoX19saHMpOwogICAgICBfX3N0cmluZ190eXBlIF9fc3Ry
OwogICAgICBfX3N0ci5yZXNlcnZlKF9fbGVuICsgX19yaHMuc2l6ZSgpKTsKICAgICAgX19zdHIu
YXBwZW5kKF9fbGhzLCBfX2xlbik7CiAgICAgIF9fc3RyLmFwcGVuZChfX3Jocyk7CiAgICAgIHJl
dHVybiBfX3N0cjsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRz
LCBfQWxsb2M+CiAgICBvcGVyYXRvcisoX0NoYXJUIF9fbGhzLCBjb25zdCBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsKICAgICAgdHlwZWRlZiBiYXNp
Y19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+IF9fc3RyaW5nX3R5cGU7CiAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgX19zdHJpbmdfdHlwZTo6c2l6ZV90eXBlIF9fc2l6ZV90eXBlOwogICAg
ICBfX3N0cmluZ190eXBlIF9fc3RyOwogICAgICBjb25zdCBfX3NpemVfdHlwZSBfX2xlbiA9IF9f
cmhzLnNpemUoKTsKICAgICAgX19zdHIucmVzZXJ2ZShfX2xlbiArIDEpOwogICAgICBfX3N0ci5h
cHBlbmQoX19zaXplX3R5cGUoMSksIF9fbGhzKTsKICAgICAgX19zdHIuYXBwZW5kKF9fcmhzKTsK
ICAgICAgcmV0dXJuIF9fc3RyOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5
cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVuYW1lIGJhc2ljX3N0cmlu
ZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5nPF9D
aGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBjb3B5KF9DaGFyVCogX19zLCBzaXplX3R5cGUg
X19uLCBzaXplX3R5cGUgX19wb3MpIGNvbnN0CiAgICB7CiAgICAgIF9NX2NoZWNrKF9fcG9zLCAi
YmFzaWNfc3RyaW5nOjpjb3B5Iik7CiAgICAgIF9fbiA9IF9NX2xpbWl0KF9fcG9zLCBfX24pOwog
ICAgICA7CiAgICAgIGlmIChfX24pCiBfTV9jb3B5KF9fcywgX01fZGF0YSgpICsgX19wb3MsIF9f
bik7CgogICAgICByZXR1cm4gX19uOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVuYW1lIGJhc2ljX3N0
cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5n
PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBmaW5kKGNvbnN0IF9DaGFyVCogX19zLCBz
aXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNvbnN0CiAgICB7CiAgICAgIDsKICAgICAg
Y29uc3Qgc2l6ZV90eXBlIF9fc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICAgY29uc3QgX0NoYXJU
KiBfX2RhdGEgPSBfTV9kYXRhKCk7CgogICAgICBpZiAoX19uID09IDApCiByZXR1cm4gX19wb3Mg
PD0gX19zaXplID8gX19wb3MgOiBucG9zOwoKICAgICAgaWYgKF9fbiA8PSBfX3NpemUpCiB7CiAg
IGZvciAoOyBfX3BvcyA8PSBfX3NpemUgLSBfX247ICsrX19wb3MpCiAgICAgaWYgKHRyYWl0c190
eXBlOjplcShfX2RhdGFbX19wb3NdLCBfX3NbMF0pCiAgJiYgdHJhaXRzX3R5cGU6OmNvbXBhcmUo
X19kYXRhICsgX19wb3MgKyAxLAogICAgIF9fcyArIDEsIF9fbiAtIDEpID09IDApCiAgICAgICBy
ZXR1cm4gX19wb3M7CiB9CiAgICAgIHJldHVybiBucG9zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVu
YW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAg
YmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBmaW5kKF9DaGFyVCBf
X2MsIHNpemVfdHlwZSBfX3BvcykgY29uc3Qgbm9leGNlcHQKICAgIHsKICAgICAgc2l6ZV90eXBl
IF9fcmV0ID0gbnBvczsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fc2l6ZSA9IHRoaXMtPnNpemUo
KTsKICAgICAgaWYgKF9fcG9zIDwgX19zaXplKQogewogICBjb25zdCBfQ2hhclQqIF9fZGF0YSA9
IF9NX2RhdGEoKTsKICAgY29uc3Qgc2l6ZV90eXBlIF9fbiA9IF9fc2l6ZSAtIF9fcG9zOwogICBj
b25zdCBfQ2hhclQqIF9fcCA9IHRyYWl0c190eXBlOjpmaW5kKF9fZGF0YSArIF9fcG9zLCBfX24s
IF9fYyk7CiAgIGlmIChfX3ApCiAgICAgX19yZXQgPSBfX3AgLSBfX2RhdGE7CiB9CiAgICAgIHJl
dHVybiBfX3JldDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJU
LCBfVHJhaXRzLCBfQWxsb2M+OjpzaXplX3R5cGUKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U
cmFpdHMsIF9BbGxvYz46OgogICAgcmZpbmQoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBf
X3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3QKICAgIHsKICAgICAgOwogICAgICBjb25zdCBzaXpl
X3R5cGUgX19zaXplID0gdGhpcy0+c2l6ZSgpOwogICAgICBpZiAoX19uIDw9IF9fc2l6ZSkKIHsK
ICAgX19wb3MgPSBzdGQ6Om1pbihzaXplX3R5cGUoX19zaXplIC0gX19uKSwgX19wb3MpOwogICBj
b25zdCBfQ2hhclQqIF9fZGF0YSA9IF9NX2RhdGEoKTsKICAgZG8KICAgICB7CiAgICAgICBpZiAo
dHJhaXRzX3R5cGU6OmNvbXBhcmUoX19kYXRhICsgX19wb3MsIF9fcywgX19uKSA9PSAwKQogIHJl
dHVybiBfX3BvczsKICAgICB9CiAgIHdoaWxlIChfX3Bvcy0tID4gMCk7CiB9CiAgICAgIHJldHVy
biBucG9zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U
cmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0
cywgX0FsbG9jPjo6CiAgICByZmluZChfQ2hhclQgX19jLCBzaXplX3R5cGUgX19wb3MpIGNvbnN0
IG5vZXhjZXB0CiAgICB7CiAgICAgIHNpemVfdHlwZSBfX3NpemUgPSB0aGlzLT5zaXplKCk7CiAg
ICAgIGlmIChfX3NpemUpCiB7CiAgIGlmICgtLV9fc2l6ZSA+IF9fcG9zKQogICAgIF9fc2l6ZSA9
IF9fcG9zOwogICBmb3IgKCsrX19zaXplOyBfX3NpemUtLSA+IDA7ICkKICAgICBpZiAodHJhaXRz
X3R5cGU6OmVxKF9NX2RhdGEoKVtfX3NpemVdLCBfX2MpKQogICAgICAgcmV0dXJuIF9fc2l6ZTsK
IH0KICAgICAgcmV0dXJuIG5wb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdHlwZW5hbWUgYmFzaWNfc3Ry
aW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGZpbmRfZmlyc3Rfb2YoY29uc3QgX0NoYXJU
KiBfX3MsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3QKICAgIHsKICAgICAg
OwogICAgICBmb3IgKDsgX19uICYmIF9fcG9zIDwgdGhpcy0+c2l6ZSgpOyArK19fcG9zKQogewog
ICBjb25zdCBfQ2hhclQqIF9fcCA9IHRyYWl0c190eXBlOjpmaW5kKF9fcywgX19uLCBfTV9kYXRh
KClbX19wb3NdKTsKICAgaWYgKF9fcCkKICAgICByZXR1cm4gX19wb3M7CiB9CiAgICAgIHJldHVy
biBucG9zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U
cmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0
cywgX0FsbG9jPjo6CiAgICBmaW5kX2xhc3Rfb2YoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlw
ZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3QKICAgIHsKICAgICAgOwogICAgICBzaXplX3R5
cGUgX19zaXplID0gdGhpcy0+c2l6ZSgpOwogICAgICBpZiAoX19zaXplICYmIF9fbikKIHsKICAg
aWYgKC0tX19zaXplID4gX19wb3MpCiAgICAgX19zaXplID0gX19wb3M7CiAgIGRvCiAgICAgewog
ICAgICAgaWYgKHRyYWl0c190eXBlOjpmaW5kKF9fcywgX19uLCBfTV9kYXRhKClbX19zaXplXSkp
CiAgcmV0dXJuIF9fc2l6ZTsKICAgICB9CiAgIHdoaWxlIChfX3NpemUtLSAhPSAwKTsKIH0KICAg
ICAgcmV0dXJuIG5wb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9D
aGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8X0NoYXJU
LCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGZpbmRfZmlyc3Rfbm90X29mKGNvbnN0IF9DaGFyVCog
X19zLCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNvbnN0CiAgICB7CiAgICAgIDsK
ICAgICAgZm9yICg7IF9fcG9zIDwgdGhpcy0+c2l6ZSgpOyArK19fcG9zKQogaWYgKCF0cmFpdHNf
dHlwZTo6ZmluZChfX3MsIF9fbiwgX01fZGF0YSgpW19fcG9zXSkpCiAgIHJldHVybiBfX3BvczsK
ICAgICAgcmV0dXJuIG5wb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw
ZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5n
PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8X0No
YXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGZpbmRfZmlyc3Rfbm90X29mKF9DaGFyVCBfX2Ms
IHNpemVfdHlwZSBfX3BvcykgY29uc3Qgbm9leGNlcHQKICAgIHsKICAgICAgZm9yICg7IF9fcG9z
IDwgdGhpcy0+c2l6ZSgpOyArK19fcG9zKQogaWYgKCF0cmFpdHNfdHlwZTo6ZXEoX01fZGF0YSgp
W19fcG9zXSwgX19jKSkKICAgcmV0dXJuIF9fcG9zOwogICAgICByZXR1cm4gbnBvczsKICAgIH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBf
QWxsb2M+CiAgICB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+
OjpzaXplX3R5cGUKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Ogog
ICAgZmluZF9sYXN0X25vdF9vZihjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zLCBz
aXplX3R5cGUgX19uKSBjb25zdAogICAgewogICAgICA7CiAgICAgIHNpemVfdHlwZSBfX3NpemUg
PSB0aGlzLT5zaXplKCk7CiAgICAgIGlmIChfX3NpemUpCiB7CiAgIGlmICgtLV9fc2l6ZSA+IF9f
cG9zKQogICAgIF9fc2l6ZSA9IF9fcG9zOwogICBkbwogICAgIHsKICAgICAgIGlmICghdHJhaXRz
X3R5cGU6OmZpbmQoX19zLCBfX24sIF9NX2RhdGEoKVtfX3NpemVdKSkKICByZXR1cm4gX19zaXpl
OwogICAgIH0KICAgd2hpbGUgKF9fc2l6ZS0tKTsKIH0KICAgICAgcmV0dXJuIG5wb3M7CiAgICB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUg
X0FsbG9jPgogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j
Pjo6c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoK
ICAgIGZpbmRfbGFzdF9ub3Rfb2YoX0NoYXJUIF9fYywgc2l6ZV90eXBlIF9fcG9zKSBjb25zdCBu
b2V4Y2VwdAogICAgewogICAgICBzaXplX3R5cGUgX19zaXplID0gdGhpcy0+c2l6ZSgpOwogICAg
ICBpZiAoX19zaXplKQogewogICBpZiAoLS1fX3NpemUgPiBfX3BvcykKICAgICBfX3NpemUgPSBf
X3BvczsKICAgZG8KICAgICB7CiAgICAgICBpZiAoIXRyYWl0c190eXBlOjplcShfTV9kYXRhKClb
X19zaXplXSwgX19jKSkKICByZXR1cm4gX19zaXplOwogICAgIH0KICAgd2hpbGUgKF9fc2l6ZS0t
KTsKIH0KICAgICAgcmV0dXJuIG5wb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW50CiAgICBiYXNpY19z
dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGNvbXBhcmUoc2l6ZV90eXBlIF9f
cG9zLCBzaXplX3R5cGUgX19uLCBjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKSBjb25zdAogICAg
ewogICAgICBfTV9jaGVjayhfX3BvcywgImJhc2ljX3N0cmluZzo6Y29tcGFyZSIpOwogICAgICBf
X24gPSBfTV9saW1pdChfX3BvcywgX19uKTsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fb3NpemUg
PSBfX3N0ci5zaXplKCk7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9IHN0ZDo6bWluKF9f
biwgX19vc2l6ZSk7CiAgICAgIGludCBfX3IgPSB0cmFpdHNfdHlwZTo6Y29tcGFyZShfTV9kYXRh
KCkgKyBfX3BvcywgX19zdHIuZGF0YSgpLCBfX2xlbik7CiAgICAgIGlmICghX19yKQogX19yID0g
X1NfY29tcGFyZShfX24sIF9fb3NpemUpOwogICAgICByZXR1cm4gX19yOwogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4K
ICAgIGludAogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBj
b21wYXJlKHNpemVfdHlwZSBfX3BvczEsIHNpemVfdHlwZSBfX24xLCBjb25zdCBiYXNpY19zdHJp
bmcmIF9fc3RyLAogICAgIHNpemVfdHlwZSBfX3BvczIsIHNpemVfdHlwZSBfX24yKSBjb25zdAog
ICAgewogICAgICBfTV9jaGVjayhfX3BvczEsICJiYXNpY19zdHJpbmc6OmNvbXBhcmUiKTsKICAg
ICAgX19zdHIuX01fY2hlY2soX19wb3MyLCAiYmFzaWNfc3RyaW5nOjpjb21wYXJlIik7CiAgICAg
IF9fbjEgPSBfTV9saW1pdChfX3BvczEsIF9fbjEpOwogICAgICBfX24yID0gX19zdHIuX01fbGlt
aXQoX19wb3MyLCBfX24yKTsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gc3RkOjptaW4o
X19uMSwgX19uMik7CiAgICAgIGludCBfX3IgPSB0cmFpdHNfdHlwZTo6Y29tcGFyZShfTV9kYXRh
KCkgKyBfX3BvczEsCiAgICAgICAgIF9fc3RyLmRhdGEoKSArIF9fcG9zMiwgX19sZW4pOwogICAg
ICBpZiAoIV9fcikKIF9fciA9IF9TX2NvbXBhcmUoX19uMSwgX19uMik7CiAgICAgIHJldHVybiBf
X3I7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywg
dHlwZW5hbWUgX0FsbG9jPgogICAgaW50CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRz
LCBfQWxsb2M+OjoKICAgIGNvbXBhcmUoY29uc3QgX0NoYXJUKiBfX3MpIGNvbnN0CiAgICB7CiAg
ICAgIDsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICAg
Y29uc3Qgc2l6ZV90eXBlIF9fb3NpemUgPSB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcyk7CiAgICAg
IGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9IHN0ZDo6bWluKF9fc2l6ZSwgX19vc2l6ZSk7CiAgICAg
IGludCBfX3IgPSB0cmFpdHNfdHlwZTo6Y29tcGFyZShfTV9kYXRhKCksIF9fcywgX19sZW4pOwog
ICAgICBpZiAoIV9fcikKIF9fciA9IF9TX2NvbXBhcmUoX19zaXplLCBfX29zaXplKTsKICAgICAg
cmV0dXJuIF9fcjsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbnQKICAgIGJhc2ljX3N0cmluZyA8X0NoYXJU
LCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGNvbXBhcmUoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5
cGUgX19uMSwgY29uc3QgX0NoYXJUKiBfX3MpIGNvbnN0CiAgICB7CiAgICAgIDsKICAgICAgX01f
Y2hlY2soX19wb3MsICJiYXNpY19zdHJpbmc6OmNvbXBhcmUiKTsKICAgICAgX19uMSA9IF9NX2xp
bWl0KF9fcG9zLCBfX24xKTsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fb3NpemUgPSB0cmFpdHNf
dHlwZTo6bGVuZ3RoKF9fcyk7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9IHN0ZDo6bWlu
KF9fbjEsIF9fb3NpemUpOwogICAgICBpbnQgX19yID0gdHJhaXRzX3R5cGU6OmNvbXBhcmUoX01f
ZGF0YSgpICsgX19wb3MsIF9fcywgX19sZW4pOwogICAgICBpZiAoIV9fcikKIF9fciA9IF9TX2Nv
bXBhcmUoX19uMSwgX19vc2l6ZSk7CiAgICAgIHJldHVybiBfX3I7CiAgICB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAg
aW50CiAgICBiYXNpY19zdHJpbmcgPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBjb21w
YXJlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbjEsIGNvbnN0IF9DaGFyVCogX19zLAog
ICAgIHNpemVfdHlwZSBfX24yKSBjb25zdAogICAgewogICAgICA7CiAgICAgIF9NX2NoZWNrKF9f
cG9zLCAiYmFzaWNfc3RyaW5nOjpjb21wYXJlIik7CiAgICAgIF9fbjEgPSBfTV9saW1pdChfX3Bv
cywgX19uMSk7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9IHN0ZDo6bWluKF9fbjEsIF9f
bjIpOwogICAgICBpbnQgX19yID0gdHJhaXRzX3R5cGU6OmNvbXBhcmUoX01fZGF0YSgpICsgX19w
b3MsIF9fcywgX19sZW4pOwogICAgICBpZiAoIV9fcikKIF9fciA9IF9TX2NvbXBhcmUoX19uMSwg
X19uMik7CiAgICAgIHJldHVybiBfX3I7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX2lzdHJlYW08
X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9U
cmFpdHM+JiBfX2luLAogICAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxv
Yz4mIF9fc3RyKQogICAgewogICAgICB0eXBlZGVmIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJh
aXRzPiBfX2lzdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19zdHJpbmc8X0NoYXJULCBf
VHJhaXRzLCBfQWxsb2M+IF9fc3RyaW5nX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19p
c3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
X19pc3RyZWFtX3R5cGU6OmludF90eXBlIF9faW50X3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgX19zdHJpbmdfdHlwZTo6c2l6ZV90eXBlIF9fc2l6ZV90eXBlOwogICAgICB0eXBlZGVmIGN0
eXBlPF9DaGFyVD4gX19jdHlwZV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fY3R5cGVf
dHlwZTo6Y3R5cGVfYmFzZSBfX2N0eXBlX2Jhc2U7CgogICAgICBfX3NpemVfdHlwZSBfX2V4dHJh
Y3RlZCA9IDA7CiAgICAgIHR5cGVuYW1lIF9faW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBfX2lv
c19iYXNlOjpnb29kYml0OwogICAgICB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6c2VudHJ5IF9f
Y2VyYihfX2luLCBmYWxzZSk7CiAgICAgIGlmIChfX2NlcmIpCiB7CiAgIGlmICh0cnVlKQogICAg
IHsKCiAgICAgICBfX3N0ci5lcmFzZSgpOwogICAgICAgX0NoYXJUIF9fYnVmWzEyOF07CiAgICAg
ICBfX3NpemVfdHlwZSBfX2xlbiA9IDA7CiAgICAgICBjb25zdCBzdHJlYW1zaXplIF9fdyA9IF9f
aW4ud2lkdGgoKTsKICAgICAgIGNvbnN0IF9fc2l6ZV90eXBlIF9fbiA9IF9fdyA+IDAgPyBzdGF0
aWNfY2FzdDxfX3NpemVfdHlwZT4oX193KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogX19zdHIubWF4X3NpemUoKTsKICAgICAgIGNvbnN0IF9fY3R5cGVfdHlwZSYgX19jdCA9IHVz
ZV9mYWNldDxfX2N0eXBlX3R5cGU+KF9faW4uZ2V0bG9jKCkpOwogICAgICAgY29uc3QgX19pbnRf
dHlwZSBfX2VvZiA9IF9UcmFpdHM6OmVvZigpOwogICAgICAgX19pbnRfdHlwZSBfX2MgPSBfX2lu
LnJkYnVmKCktPnNnZXRjKCk7CgogICAgICAgd2hpbGUgKF9fZXh0cmFjdGVkIDwgX19uCiAgICAg
ICAmJiAhX1RyYWl0czo6ZXFfaW50X3R5cGUoX19jLCBfX2VvZikKICAgICAgICYmICFfX2N0Lmlz
KF9fY3R5cGVfYmFzZTo6c3BhY2UsCiAgICAgX1RyYWl0czo6dG9fY2hhcl90eXBlKF9fYykpKQog
IHsKICAgIGlmIChfX2xlbiA9PSBzaXplb2YoX19idWYpIC8gc2l6ZW9mKF9DaGFyVCkpCiAgICAg
IHsKICAgICAgICBfX3N0ci5hcHBlbmQoX19idWYsIHNpemVvZihfX2J1ZikgLyBzaXplb2YoX0No
YXJUKSk7CiAgICAgICAgX19sZW4gPSAwOwogICAgICB9CiAgICBfX2J1ZltfX2xlbisrXSA9IF9U
cmFpdHM6OnRvX2NoYXJfdHlwZShfX2MpOwogICAgKytfX2V4dHJhY3RlZDsKICAgIF9fYyA9IF9f
aW4ucmRidWYoKS0+c25leHRjKCk7CiAgfQogICAgICAgX19zdHIuYXBwZW5kKF9fYnVmLCBfX2xl
bik7CgogICAgICAgaWYgKF9UcmFpdHM6OmVxX2ludF90eXBlKF9fYywgX19lb2YpKQogIF9fZXJy
IHw9IF9faW9zX2Jhc2U6OmVvZmJpdDsKICAgICAgIF9faW4ud2lkdGgoMCk7CiAgICAgfQogICBp
ZiAoZmFsc2UpCiAgICAgewogICAgICAgX19pbi5fTV9zZXRzdGF0ZShfX2lvc19iYXNlOjpiYWRi
aXQpOwogICAgICAgOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsKCgoKICAgICAgIF9faW4u
X01fc2V0c3RhdGUoX19pb3NfYmFzZTo6YmFkYml0KTsKICAgICB9CiB9CgogICAgICBpZiAoIV9f
ZXh0cmFjdGVkKQogX19lcnIgfD0gX19pb3NfYmFzZTo6ZmFpbGJpdDsKICAgICAgaWYgKF9fZXJy
KQogX19pbi5zZXRzdGF0ZShfX2Vycik7CiAgICAgIHJldHVybiBfX2luOwogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4K
ICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIGdldGxpbmUoYmFzaWNfaXN0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2luLAogICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U
cmFpdHMsIF9BbGxvYz4mIF9fc3RyLCBfQ2hhclQgX19kZWxpbSkKICAgIHsKICAgICAgdHlwZWRl
ZiBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7CiAgICAgIHR5
cGVkZWYgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiBfX3N0cmluZ190eXBl
OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19i
YXNlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppbnRfdHlwZSBfX2lu
dF90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fc3RyaW5nX3R5cGU6OnNpemVfdHlwZSBf
X3NpemVfdHlwZTsKCiAgICAgIF9fc2l6ZV90eXBlIF9fZXh0cmFjdGVkID0gMDsKICAgICAgY29u
c3QgX19zaXplX3R5cGUgX19uID0gX19zdHIubWF4X3NpemUoKTsKICAgICAgdHlwZW5hbWUgX19p
b3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IF9faW9zX2Jhc2U6Omdvb2RiaXQ7CiAgICAgIHR5cGVu
YW1lIF9faXN0cmVhbV90eXBlOjpzZW50cnkgX19jZXJiKF9faW4sIHRydWUpOwogICAgICBpZiAo
X19jZXJiKQogewogICBpZiAodHJ1ZSkKICAgICB7CiAgICAgICBfX3N0ci5lcmFzZSgpOwogICAg
ICAgY29uc3QgX19pbnRfdHlwZSBfX2lkZWxpbSA9IF9UcmFpdHM6OnRvX2ludF90eXBlKF9fZGVs
aW0pOwogICAgICAgY29uc3QgX19pbnRfdHlwZSBfX2VvZiA9IF9UcmFpdHM6OmVvZigpOwogICAg
ICAgX19pbnRfdHlwZSBfX2MgPSBfX2luLnJkYnVmKCktPnNnZXRjKCk7CgogICAgICAgd2hpbGUg
KF9fZXh0cmFjdGVkIDwgX19uCiAgICAgICAmJiAhX1RyYWl0czo6ZXFfaW50X3R5cGUoX19jLCBf
X2VvZikKICAgICAgICYmICFfVHJhaXRzOjplcV9pbnRfdHlwZShfX2MsIF9faWRlbGltKSkKICB7
CiAgICBfX3N0ciArPSBfVHJhaXRzOjp0b19jaGFyX3R5cGUoX19jKTsKICAgICsrX19leHRyYWN0
ZWQ7CiAgICBfX2MgPSBfX2luLnJkYnVmKCktPnNuZXh0YygpOwogIH0KCiAgICAgICBpZiAoX1Ry
YWl0czo6ZXFfaW50X3R5cGUoX19jLCBfX2VvZikpCiAgX19lcnIgfD0gX19pb3NfYmFzZTo6ZW9m
Yml0OwogICAgICAgZWxzZSBpZiAoX1RyYWl0czo6ZXFfaW50X3R5cGUoX19jLCBfX2lkZWxpbSkp
CiAgewogICAgKytfX2V4dHJhY3RlZDsKICAgIF9faW4ucmRidWYoKS0+c2J1bXBjKCk7CiAgfQog
ICAgICAgZWxzZQogIF9fZXJyIHw9IF9faW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICAgfQogICBpZiAo
ZmFsc2UpCiAgICAgewogICAgICAgX19pbi5fTV9zZXRzdGF0ZShfX2lvc19iYXNlOjpiYWRiaXQp
OwogICAgICAgOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsKCgoKICAgICAgIF9faW4uX01f
c2V0c3RhdGUoX19pb3NfYmFzZTo6YmFkYml0KTsKICAgICB9CiB9CiAgICAgIGlmICghX19leHRy
YWN0ZWQpCiBfX2VyciB8PSBfX2lvc19iYXNlOjpmYWlsYml0OwogICAgICBpZiAoX19lcnIpCiBf
X2luLnNldHN0YXRlKF9fZXJyKTsKICAgICAgcmV0dXJuIF9faW47CiAgICB9CgoKCgogIGV4dGVy
biB0ZW1wbGF0ZSBjbGFzcyBiYXNpY19zdHJpbmc8Y2hhcj47CiAgZXh0ZXJuIHRlbXBsYXRlCiAg
ICBiYXNpY19pc3RyZWFtPGNoYXI+JgogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPGNoYXI+
Jiwgc3RyaW5nJik7CiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBiYXNpY19vc3RyZWFtPGNoYXI+Jgog
ICAgb3BlcmF0b3I8PChiYXNpY19vc3RyZWFtPGNoYXI+JiwgY29uc3Qgc3RyaW5nJik7CiAgZXh0
ZXJuIHRlbXBsYXRlCiAgICBiYXNpY19pc3RyZWFtPGNoYXI+JgogICAgZ2V0bGluZShiYXNpY19p
c3RyZWFtPGNoYXI+Jiwgc3RyaW5nJiwgY2hhcik7CiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBiYXNp
Y19pc3RyZWFtPGNoYXI+JgogICAgZ2V0bGluZShiYXNpY19pc3RyZWFtPGNoYXI+Jiwgc3RyaW5n
Jik7CgoKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgYmFzaWNfc3RyaW5nPHdjaGFyX3Q+OwogIGV4
dGVybiB0ZW1wbGF0ZQogICAgYmFzaWNfaXN0cmVhbTx3Y2hhcl90PiYKICAgIG9wZXJhdG9yPj4o
YmFzaWNfaXN0cmVhbTx3Y2hhcl90PiYsIHdzdHJpbmcmKTsKICBleHRlcm4gdGVtcGxhdGUKICAg
IGJhc2ljX29zdHJlYW08d2NoYXJfdD4mCiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08d2No
YXJfdD4mLCBjb25zdCB3c3RyaW5nJik7CiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBiYXNpY19pc3Ry
ZWFtPHdjaGFyX3Q+JgogICAgZ2V0bGluZShiYXNpY19pc3RyZWFtPHdjaGFyX3Q+Jiwgd3N0cmlu
ZyYsIHdjaGFyX3QpOwogIGV4dGVybiB0ZW1wbGF0ZQogICAgYmFzaWNfaXN0cmVhbTx3Y2hhcl90
PiYKICAgIGdldGxpbmUoYmFzaWNfaXN0cmVhbTx3Y2hhcl90PiYsIHdzdHJpbmcmKTsKCgoKCn0K
IyA1NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9zdHJpbmciIDIgMwojIDQwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL3N0ZGV4Y2VwdCIgMiAzCgpuYW1lc3BhY2Ugc3RkIF9fYXR0
cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgNTUgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvc3RkZXhjZXB0
IiAzCiAgY2xhc3MgbG9naWNfZXJyb3IgOiBwdWJsaWMgZXhjZXB0aW9uCiAgewogICAgc3RyaW5n
IF9NX21zZzsKCiAgcHVibGljOgoKICAgIGV4cGxpY2l0CiAgICBsb2dpY19lcnJvcihjb25zdCBz
dHJpbmcmIF9fYXJnKTsKCiAgICB2aXJ0dWFsIH5sb2dpY19lcnJvcigpIG5vZXhjZXB0OwoKCgog
ICAgdmlydHVhbCBjb25zdCBjaGFyKgogICAgd2hhdCgpIGNvbnN0IG5vZXhjZXB0OwogIH07CgoK
CiAgY2xhc3MgZG9tYWluX2Vycm9yIDogcHVibGljIGxvZ2ljX2Vycm9yCiAgewogIHB1YmxpYzoK
ICAgIGV4cGxpY2l0IGRvbWFpbl9lcnJvcihjb25zdCBzdHJpbmcmIF9fYXJnKTsKICAgIHZpcnR1
YWwgfmRvbWFpbl9lcnJvcigpIG5vZXhjZXB0OwogIH07CgoKICBjbGFzcyBpbnZhbGlkX2FyZ3Vt
ZW50IDogcHVibGljIGxvZ2ljX2Vycm9yCiAgewogIHB1YmxpYzoKICAgIGV4cGxpY2l0IGludmFs
aWRfYXJndW1lbnQoY29uc3Qgc3RyaW5nJiBfX2FyZyk7CiAgICB2aXJ0dWFsIH5pbnZhbGlkX2Fy
Z3VtZW50KCkgbm9leGNlcHQ7CiAgfTsKCgoKICBjbGFzcyBsZW5ndGhfZXJyb3IgOiBwdWJsaWMg
bG9naWNfZXJyb3IKICB7CiAgcHVibGljOgogICAgZXhwbGljaXQgbGVuZ3RoX2Vycm9yKGNvbnN0
IHN0cmluZyYgX19hcmcpOwogICAgdmlydHVhbCB+bGVuZ3RoX2Vycm9yKCkgbm9leGNlcHQ7CiAg
fTsKCgoKICBjbGFzcyBvdXRfb2ZfcmFuZ2UgOiBwdWJsaWMgbG9naWNfZXJyb3IKICB7CiAgcHVi
bGljOgogICAgZXhwbGljaXQgb3V0X29mX3JhbmdlKGNvbnN0IHN0cmluZyYgX19hcmcpOwogICAg
dmlydHVhbCB+b3V0X29mX3JhbmdlKCkgbm9leGNlcHQ7CiAgfTsKCgoKCgoKICBjbGFzcyBydW50
aW1lX2Vycm9yIDogcHVibGljIGV4Y2VwdGlvbgogIHsKICAgIHN0cmluZyBfTV9tc2c7CgogIHB1
YmxpYzoKCiAgICBleHBsaWNpdAogICAgcnVudGltZV9lcnJvcihjb25zdCBzdHJpbmcmIF9fYXJn
KTsKCiAgICB2aXJ0dWFsIH5ydW50aW1lX2Vycm9yKCkgbm9leGNlcHQ7CgoKCiAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqCiAgICB3aGF0KCkgY29uc3Qgbm9leGNlcHQ7CiAgfTsKCgogIGNsYXNzIHJh
bmdlX2Vycm9yIDogcHVibGljIHJ1bnRpbWVfZXJyb3IKICB7CiAgcHVibGljOgogICAgZXhwbGlj
aXQgcmFuZ2VfZXJyb3IoY29uc3Qgc3RyaW5nJiBfX2FyZyk7CiAgICB2aXJ0dWFsIH5yYW5nZV9l
cnJvcigpIG5vZXhjZXB0OwogIH07CgoKICBjbGFzcyBvdmVyZmxvd19lcnJvciA6IHB1YmxpYyBy
dW50aW1lX2Vycm9yCiAgewogIHB1YmxpYzoKICAgIGV4cGxpY2l0IG92ZXJmbG93X2Vycm9yKGNv
bnN0IHN0cmluZyYgX19hcmcpOwogICAgdmlydHVhbCB+b3ZlcmZsb3dfZXJyb3IoKSBub2V4Y2Vw
dDsKICB9OwoKCiAgY2xhc3MgdW5kZXJmbG93X2Vycm9yIDogcHVibGljIHJ1bnRpbWVfZXJyb3IK
ICB7CiAgcHVibGljOgogICAgZXhwbGljaXQgdW5kZXJmbG93X2Vycm9yKGNvbnN0IHN0cmluZyYg
X19hcmcpOwogICAgdmlydHVhbCB+dW5kZXJmbG93X2Vycm9yKCkgbm9leGNlcHQ7CiAgfTsKCgoK
Cn0KIyAzOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9hcnJheSIgMiAzCgoKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlz
aWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBzdGQ6
OnNpemVfdCBfTm0+CiAgICBzdHJ1Y3QgX19hcnJheV90cmFpdHMKICAgIHsKICAgICAgdHlwZWRl
ZiBfVHAgX1R5cGVbX05tXTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgX1RwJgogICAgICBfU19y
ZWYoY29uc3QgX1R5cGUmIF9fdCwgc3RkOjpzaXplX3QgX19uKSBub2V4Y2VwdAogICAgICB7IHJl
dHVybiBjb25zdF9jYXN0PF9UcCY+KF9fdFtfX25dKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBfVHAqCiAgICAgIF9TX3B0cihjb25zdCBfVHlwZSYgX190KSBub2V4Y2VwdAogICAgICB7IHJl
dHVybiBjb25zdF9jYXN0PF9UcCo+KF9fdCk7IH0KICAgIH07CgogdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICBzdHJ1Y3QgX19hcnJheV90cmFpdHM8X1RwLCAwPgogICB7CiAgICAgc3RydWN0IF9U
eXBlIHsgfTsKCiAgICAgc3RhdGljIGNvbnN0ZXhwciBfVHAmCiAgICAgX1NfcmVmKGNvbnN0IF9U
eXBlJiwgc3RkOjpzaXplX3QpIG5vZXhjZXB0CiAgICAgeyByZXR1cm4gKnN0YXRpY19jYXN0PF9U
cCo+KG51bGxwdHIpOyB9CgogICAgIHN0YXRpYyBjb25zdGV4cHIgX1RwKgogICAgIF9TX3B0cihj
b25zdCBfVHlwZSYpIG5vZXhjZXB0CiAgICAgeyByZXR1cm4gbnVsbHB0cjsgfQogICB9OwojIDg4
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2FycmF5IiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBzdGQ6OnNpemVfdCBfTm0+CiAgICBz
dHJ1Y3QgYXJyYXkKICAgIHsKICAgICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKICAgICAgdHlw
ZWRlZiB2YWx1ZV90eXBlKiBwb2ludGVyOwogICAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUq
IGNvbnN0X3BvaW50ZXI7CiAgICAgIHR5cGVkZWYgdmFsdWVfdHlwZSYgcmVmZXJlbmNlOwogICAg
ICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUmIGNvbnN0X3JlZmVyZW5jZTsKICAgICAgdHlwZWRl
ZiB2YWx1ZV90eXBlKiBpdGVyYXRvcjsKICAgICAgdHlwZWRlZiBjb25zdCB2YWx1ZV90eXBlKiBj
b25zdF9pdGVyYXRvcjsKICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCBzaXplX3R5cGU7CiAgICAg
IHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwogICAgICB0eXBlZGVmIHN0
ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj4gcmV2ZXJzZV9pdGVyYXRvcjsKICAgICAgdHlw
ZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+IGNvbnN0X3JldmVyc2Vf
aXRlcmF0b3I7CgoKICAgICAgdHlwZWRlZiBzdGQ6Ol9fYXJyYXlfdHJhaXRzPF9UcCwgX05tPiBf
QVRfVHlwZTsKICAgICAgdHlwZW5hbWUgX0FUX1R5cGU6Ol9UeXBlIF9NX2VsZW1zOwoKCgoKICAg
ICAgdm9pZAogICAgICBmaWxsKGNvbnN0IHZhbHVlX3R5cGUmIF9fdSkKICAgICAgeyBzdGQ6OmZp
bGxfbihiZWdpbigpLCBzaXplKCksIF9fdSk7IH0KCiAgICAgIHZvaWQKICAgICAgc3dhcChhcnJh
eSYgX19vdGhlcikKICAgICAgbm9leGNlcHQobm9leGNlcHQoc3dhcChzdGQ6OmRlY2x2YWw8X1Rw
Jj4oKSwgc3RkOjpkZWNsdmFsPF9UcCY+KCkpKSkKICAgICAgeyBzdGQ6OnN3YXBfcmFuZ2VzKGJl
Z2luKCksIGVuZCgpLCBfX290aGVyLmJlZ2luKCkpOyB9CgoKICAgICAgaXRlcmF0b3IKICAgICAg
YmVnaW4oKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBpdGVyYXRvcihkYXRhKCkpOyB9CgogICAg
ICBjb25zdF9pdGVyYXRvcgogICAgICBiZWdpbigpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0
dXJuIGNvbnN0X2l0ZXJhdG9yKGRhdGEoKSk7IH0KCiAgICAgIGl0ZXJhdG9yCiAgICAgIGVuZCgp
IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGl0ZXJhdG9yKGRhdGEoKSArIF9ObSk7IH0KCiAgICAg
IGNvbnN0X2l0ZXJhdG9yCiAgICAgIGVuZCgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJu
IGNvbnN0X2l0ZXJhdG9yKGRhdGEoKSArIF9ObSk7IH0KCiAgICAgIHJldmVyc2VfaXRlcmF0b3IK
ICAgICAgcmJlZ2luKCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihl
bmQoKSk7IH0KCiAgICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IKICAgICAgcmJlZ2luKCkgY29u
c3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7
IH0KCiAgICAgIHJldmVyc2VfaXRlcmF0b3IKICAgICAgcmVuZCgpIG5vZXhjZXB0CiAgICAgIHsg
cmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KCiAgICAgIGNvbnN0X3JldmVyc2Vf
aXRlcmF0b3IKICAgICAgcmVuZCgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGNvbnN0
X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KCiAgICAgIGNvbnN0X2l0ZXJhdG9yCiAgICAg
IGNiZWdpbigpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKGRh
dGEoKSk7IH0KCiAgICAgIGNvbnN0X2l0ZXJhdG9yCiAgICAgIGNlbmQoKSBjb25zdCBub2V4Y2Vw
dAogICAgICB7IHJldHVybiBjb25zdF9pdGVyYXRvcihkYXRhKCkgKyBfTm0pOyB9CgogICAgICBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yCiAgICAgIGNyYmVnaW4oKSBjb25zdCBub2V4Y2VwdAogICAg
ICB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQoKICAgICAgY29uc3Rf
cmV2ZXJzZV9pdGVyYXRvcgogICAgICBjcmVuZCgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0
dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KCgogICAgICBjb25zdGV4cHIg
c2l6ZV90eXBlCiAgICAgIHNpemUoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfTm07IH0KCiAg
ICAgIGNvbnN0ZXhwciBzaXplX3R5cGUKICAgICAgbWF4X3NpemUoKSBjb25zdCBub2V4Y2VwdCB7
IHJldHVybiBfTm07IH0KCiAgICAgIGNvbnN0ZXhwciBib29sCiAgICAgIGVtcHR5KCkgY29uc3Qg
bm9leGNlcHQgeyByZXR1cm4gc2l6ZSgpID09IDA7IH0KCgogICAgICByZWZlcmVuY2UKICAgICAg
b3BlcmF0b3JbXShzaXplX3R5cGUgX19uKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfQVRfVHlw
ZTo6X1NfcmVmKF9NX2VsZW1zLCBfX24pOyB9CgogICAgICBjb25zdGV4cHIgY29uc3RfcmVmZXJl
bmNlCiAgICAgIG9wZXJhdG9yW10oc2l6ZV90eXBlIF9fbikgY29uc3Qgbm9leGNlcHQKICAgICAg
eyByZXR1cm4gX0FUX1R5cGU6Ol9TX3JlZihfTV9lbGVtcywgX19uKTsgfQoKICAgICAgcmVmZXJl
bmNlCiAgICAgIGF0KHNpemVfdHlwZSBfX24pCiAgICAgIHsKIGlmIChfX24gPj0gX05tKQogICBz
dGQ6Ol9fdGhyb3dfb3V0X29mX3JhbmdlX2ZtdCgoImFycmF5OjphdDogX19uICh3aGljaCBpcyAl
enUpICIgIj49IF9ObSAod2hpY2ggaXMgJXp1KSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICwKICAgICBfX24sIF9ObSk7CiByZXR1cm4gX0FUX1R5cGU6Ol9TX3JlZihfTV9lbGVt
cywgX19uKTsKICAgICAgfQoKICAgICAgY29uc3RleHByIGNvbnN0X3JlZmVyZW5jZQogICAgICBh
dChzaXplX3R5cGUgX19uKSBjb25zdAogICAgICB7CgoKIHJldHVybiBfX24gPCBfTm0gPyBfQVRf
VHlwZTo6X1NfcmVmKF9NX2VsZW1zLCBfX24pCiAgIDogKHN0ZDo6X190aHJvd19vdXRfb2ZfcmFu
Z2VfZm10KCgiYXJyYXk6OmF0OiBfX24gKHdoaWNoIGlzICV6dSkgIiAiPj0gX05tICh3aGljaCBp
cyAlenUpIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLAogICAgICAgIF9f
biwgX05tKSwKICAgICAgX0FUX1R5cGU6Ol9TX3JlZihfTV9lbGVtcywgMCkpOwogICAgICB9Cgog
ICAgICByZWZlcmVuY2UKICAgICAgZnJvbnQoKSBub2V4Y2VwdAogICAgICB7IHJldHVybiAqYmVn
aW4oKTsgfQoKICAgICAgY29uc3RleHByIGNvbnN0X3JlZmVyZW5jZQogICAgICBmcm9udCgpIGNv
bnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9BVF9UeXBlOjpfU19yZWYoX01fZWxlbXMsIDAp
OyB9CgogICAgICByZWZlcmVuY2UKICAgICAgYmFjaygpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJu
IF9ObSA/ICooZW5kKCkgLSAxKSA6ICplbmQoKTsgfQoKICAgICAgY29uc3RleHByIGNvbnN0X3Jl
ZmVyZW5jZQogICAgICBiYWNrKCkgY29uc3Qgbm9leGNlcHQKICAgICAgewogcmV0dXJuIF9ObSA/
IF9BVF9UeXBlOjpfU19yZWYoX01fZWxlbXMsIF9ObSAtIDEpCiAgICAgICAgICAgICA6IF9BVF9U
eXBlOjpfU19yZWYoX01fZWxlbXMsIDApOwogICAgICB9CgogICAgICBwb2ludGVyCiAgICAgIGRh
dGEoKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfQVRfVHlwZTo6X1NfcHRyKF9NX2VsZW1zKTsg
fQoKICAgICAgY29uc3RfcG9pbnRlcgogICAgICBkYXRhKCkgY29uc3Qgbm9leGNlcHQKICAgICAg
eyByZXR1cm4gX0FUX1R5cGU6Ol9TX3B0cihfTV9lbGVtcyk7IH0KICAgIH07CgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHAsIHN0ZDo6c2l6ZV90IF9ObT4KICAgIGlubGluZSBib29sCiAgICBvcGVy
YXRvcj09KGNvbnN0IGFycmF5PF9UcCwgX05tPiYgX19vbmUsIGNvbnN0IGFycmF5PF9UcCwgX05t
PiYgX190d28pCiAgICB7IHJldHVybiBzdGQ6OmVxdWFsKF9fb25lLmJlZ2luKCksIF9fb25lLmVu
ZCgpLCBfX3R3by5iZWdpbigpKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHN0ZDo6c2l6
ZV90IF9ObT4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IGFycmF5PF9UcCwg
X05tPiYgX19vbmUsIGNvbnN0IGFycmF5PF9UcCwgX05tPiYgX190d28pCiAgICB7IHJldHVybiAh
KF9fb25lID09IF9fdHdvKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHN0ZDo6c2l6ZV90
IF9ObT4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjwoY29uc3QgYXJyYXk8X1RwLCBfTm0+
JiBfX2EsIGNvbnN0IGFycmF5PF9UcCwgX05tPiYgX19iKQogICAgewogICAgICByZXR1cm4gc3Rk
OjpsZXhpY29ncmFwaGljYWxfY29tcGFyZShfX2EuYmVnaW4oKSwgX19hLmVuZCgpLAogICAgICAg
X19iLmJlZ2luKCksIF9fYi5lbmQoKSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwg
c3RkOjpzaXplX3QgX05tPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPihjb25zdCBhcnJh
eTxfVHAsIF9ObT4mIF9fb25lLCBjb25zdCBhcnJheTxfVHAsIF9ObT4mIF9fdHdvKQogICAgeyBy
ZXR1cm4gX190d28gPCBfX29uZTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHN0ZDo6c2l6
ZV90IF9ObT4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjw9KGNvbnN0IGFycmF5PF9UcCwg
X05tPiYgX19vbmUsIGNvbnN0IGFycmF5PF9UcCwgX05tPiYgX190d28pCiAgICB7IHJldHVybiAh
KF9fb25lID4gX190d28pOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgc3RkOjpzaXplX3Qg
X05tPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPj0oY29uc3QgYXJyYXk8X1RwLCBfTm0+
JiBfX29uZSwgY29uc3QgYXJyYXk8X1RwLCBfTm0+JiBfX3R3bykKICAgIHsgcmV0dXJuICEoX19v
bmUgPCBfX3R3byk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgc3RkOjpzaXplX3QgX05t
PgogICAgaW5saW5lIHZvaWQKICAgIHN3YXAoYXJyYXk8X1RwLCBfTm0+JiBfX29uZSwgYXJyYXk8
X1RwLCBfTm0+JiBfX3R3bykKICAgIG5vZXhjZXB0KG5vZXhjZXB0KF9fb25lLnN3YXAoX190d28p
KSkKICAgIHsgX19vbmUuc3dhcChfX3R3byk7IH0KCiAgdGVtcGxhdGU8c3RkOjpzaXplX3QgX0lu
dCwgdHlwZW5hbWUgX1RwLCBzdGQ6OnNpemVfdCBfTm0+CiAgICBjb25zdGV4cHIgX1RwJgogICAg
Z2V0KGFycmF5PF9UcCwgX05tPiYgX19hcnIpIG5vZXhjZXB0CiAgICB7CiAgICAgIHN0YXRpY19h
c3NlcnQoX0ludCA8IF9ObSwgImluZGV4IGlzIG91dCBvZiBib3VuZHMiKTsKICAgICAgcmV0dXJu
IHN0ZDo6X19hcnJheV90cmFpdHM8X1RwLCBfTm0+OjoKIF9TX3JlZihfX2Fyci5fTV9lbGVtcywg
X0ludCk7CiAgICB9CgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9JbnQsIHR5cGVuYW1lIF9UcCwg
c3RkOjpzaXplX3QgX05tPgogICAgY29uc3RleHByIF9UcCYmCiAgICBnZXQoYXJyYXk8X1RwLCBf
Tm0+JiYgX19hcnIpIG5vZXhjZXB0CiAgICB7CiAgICAgIHN0YXRpY19hc3NlcnQoX0ludCA8IF9O
bSwgImluZGV4IGlzIG91dCBvZiBib3VuZHMiKTsKICAgICAgcmV0dXJuIHN0ZDo6bW92ZShnZXQ8
X0ludD4oX19hcnIpKTsKICAgIH0KCiAgdGVtcGxhdGU8c3RkOjpzaXplX3QgX0ludCwgdHlwZW5h
bWUgX1RwLCBzdGQ6OnNpemVfdCBfTm0+CiAgICBjb25zdGV4cHIgY29uc3QgX1RwJgogICAgZ2V0
KGNvbnN0IGFycmF5PF9UcCwgX05tPiYgX19hcnIpIG5vZXhjZXB0CiAgICB7CiAgICAgIHN0YXRp
Y19hc3NlcnQoX0ludCA8IF9ObSwgImluZGV4IGlzIG91dCBvZiBib3VuZHMiKTsKICAgICAgcmV0
dXJuIHN0ZDo6X19hcnJheV90cmFpdHM8X1RwLCBfTm0+OjoKIF9TX3JlZihfX2Fyci5fTV9lbGVt
cywgX0ludCk7CiAgICB9CgoKfQoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNp
YmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBjbGFzcyB0dXBsZV9zaXplOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHN0ZDo6c2l6ZV90
IF9ObT4KICAgIHN0cnVjdCB0dXBsZV9zaXplPHN0ZDo6YXJyYXk8X1RwLCBfTm0+PgogICAgOiBw
dWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8c3RkOjpzaXplX3QsIF9ObT4geyB9OwoKCiAgdGVtcGxh
dGU8c3RkOjpzaXplX3QgX0ludCwgdHlwZW5hbWUgX1RwPgogICAgY2xhc3MgdHVwbGVfZWxlbWVu
dDsKCiAgdGVtcGxhdGU8c3RkOjpzaXplX3QgX0ludCwgdHlwZW5hbWUgX1RwLCBzdGQ6OnNpemVf
dCBfTm0+CiAgICBzdHJ1Y3QgdHVwbGVfZWxlbWVudDxfSW50LCBzdGQ6OmFycmF5PF9UcCwgX05t
Pj4KICAgIHsKICAgICAgc3RhdGljX2Fzc2VydChfSW50IDwgX05tLCAiaW5kZXggaXMgb3V0IG9m
IGJvdW5kcyIpOwogICAgICB0eXBlZGVmIF9UcCB0eXBlOwogICAgfTsKCgp9CiMgNDAgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvdHVwbGUi
IDIgMwoKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVm
YXVsdCIpKSkKewoKCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9f
YWRkX2NfcmVmCiAgICB7IHR5cGVkZWYgY29uc3QgX1RwJiB0eXBlOyB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19hZGRfY19yZWY8X1RwJj4KICAgIHsgdHlwZWRlZiBf
VHAmIHR5cGU7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19hZGRf
cmVmCiAgICB7IHR5cGVkZWYgX1RwJiB0eXBlOyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICBzdHJ1Y3QgX19hZGRfcmVmPF9UcCY+CiAgICB7IHR5cGVkZWYgX1RwJiB0eXBlOyB9OwoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fYWRkX3JfcmVmCiAgICB7IHR5
cGVkZWYgX1RwJiYgdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0
IF9fYWRkX3JfcmVmPF9UcCY+CiAgICB7IHR5cGVkZWYgX1RwJiB0eXBlOyB9OwoKICB0ZW1wbGF0
ZTxzdGQ6OnNpemVfdCBfSWR4LCB0eXBlbmFtZSBfSGVhZCwgYm9vbCBfSXNFbXB0eU5vdEZpbmFs
PgogICAgc3RydWN0IF9IZWFkX2Jhc2U7CgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9JZHgsIHR5
cGVuYW1lIF9IZWFkPgogICAgc3RydWN0IF9IZWFkX2Jhc2U8X0lkeCwgX0hlYWQsIHRydWU+CiAg
ICA6IHB1YmxpYyBfSGVhZAogICAgewogICAgICBjb25zdGV4cHIgX0hlYWRfYmFzZSgpCiAgICAg
IDogX0hlYWQoKSB7IH0KCiAgICAgIGNvbnN0ZXhwciBfSGVhZF9iYXNlKGNvbnN0IF9IZWFkJiBf
X2gpCiAgICAgIDogX0hlYWQoX19oKSB7IH0KCiAgICAgIGNvbnN0ZXhwciBfSGVhZF9iYXNlKGNv
bnN0IF9IZWFkX2Jhc2UmKSA9IGRlZmF1bHQ7CiAgICAgIGNvbnN0ZXhwciBfSGVhZF9iYXNlKF9I
ZWFkX2Jhc2UmJikgPSBkZWZhdWx0OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VIZWFkPgog
ICAgICAgIGNvbnN0ZXhwciBfSGVhZF9iYXNlKF9VSGVhZCYmIF9faCkKIDogX0hlYWQoc3RkOjpm
b3J3YXJkPF9VSGVhZD4oX19oKSkgeyB9CgogICAgICBfSGVhZF9iYXNlKGFsbG9jYXRvcl9hcmdf
dCwgX191c2VzX2FsbG9jMCkKICAgICAgOiBfSGVhZCgpIHsgfQoKICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0FsbG9jPgogX0hlYWRfYmFzZShhbGxvY2F0b3JfYXJnX3QsIF9fdXNlc19hbGxvYzE8
X0FsbG9jPiBfX2EpCiA6IF9IZWFkKGFsbG9jYXRvcl9hcmcsICpfX2EuX01fYSkgeyB9CgogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiBfSGVhZF9iYXNlKGFsbG9jYXRvcl9hcmdfdCwg
X191c2VzX2FsbG9jMjxfQWxsb2M+IF9fYSkKIDogX0hlYWQoKl9fYS5fTV9hKSB7IH0KCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9VSGVhZD4KIF9IZWFkX2Jhc2UoX191c2VzX2FsbG9jMCwgX1VI
ZWFkJiYgX191aGVhZCkKIDogX0hlYWQoc3RkOjpmb3J3YXJkPF9VSGVhZD4oX191aGVhZCkpIHsg
fQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZSBfVUhlYWQ+CiBfSGVh
ZF9iYXNlKF9fdXNlc19hbGxvYzE8X0FsbG9jPiBfX2EsIF9VSGVhZCYmIF9fdWhlYWQpCiA6IF9I
ZWFkKGFsbG9jYXRvcl9hcmcsICpfX2EuX01fYSwgc3RkOjpmb3J3YXJkPF9VSGVhZD4oX191aGVh
ZCkpIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZSBfVUhlYWQ+
CiBfSGVhZF9iYXNlKF9fdXNlc19hbGxvYzI8X0FsbG9jPiBfX2EsIF9VSGVhZCYmIF9fdWhlYWQp
CiA6IF9IZWFkKHN0ZDo6Zm9yd2FyZDxfVUhlYWQ+KF9fdWhlYWQpLCAqX19hLl9NX2EpIHsgfQoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBfSGVhZCYKICAgICAgX01faGVhZChfSGVhZF9iYXNlJiBf
X2IpIG5vZXhjZXB0IHsgcmV0dXJuIF9fYjsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25z
dCBfSGVhZCYKICAgICAgX01faGVhZChjb25zdCBfSGVhZF9iYXNlJiBfX2IpIG5vZXhjZXB0IHsg
cmV0dXJuIF9fYjsgfQogICAgfTsKCiAgdGVtcGxhdGU8c3RkOjpzaXplX3QgX0lkeCwgdHlwZW5h
bWUgX0hlYWQ+CiAgICBzdHJ1Y3QgX0hlYWRfYmFzZTxfSWR4LCBfSGVhZCwgZmFsc2U+CiAgICB7
CiAgICAgIGNvbnN0ZXhwciBfSGVhZF9iYXNlKCkKICAgICAgOiBfTV9oZWFkX2ltcGwoKSB7IH0K
CiAgICAgIGNvbnN0ZXhwciBfSGVhZF9iYXNlKGNvbnN0IF9IZWFkJiBfX2gpCiAgICAgIDogX01f
aGVhZF9pbXBsKF9faCkgeyB9CgogICAgICBjb25zdGV4cHIgX0hlYWRfYmFzZShjb25zdCBfSGVh
ZF9iYXNlJikgPSBkZWZhdWx0OwogICAgICBjb25zdGV4cHIgX0hlYWRfYmFzZShfSGVhZF9iYXNl
JiYpID0gZGVmYXVsdDsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VSGVhZD4KICAgICAgICBj
b25zdGV4cHIgX0hlYWRfYmFzZShfVUhlYWQmJiBfX2gpCiA6IF9NX2hlYWRfaW1wbChzdGQ6OmZv
cndhcmQ8X1VIZWFkPihfX2gpKSB7IH0KCiAgICAgIF9IZWFkX2Jhc2UoYWxsb2NhdG9yX2FyZ190
LCBfX3VzZXNfYWxsb2MwKQogICAgICA6IF9NX2hlYWRfaW1wbCgpIHsgfQoKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX0FsbG9jPgogX0hlYWRfYmFzZShhbGxvY2F0b3JfYXJnX3QsIF9fdXNlc19h
bGxvYzE8X0FsbG9jPiBfX2EpCiA6IF9NX2hlYWRfaW1wbChhbGxvY2F0b3JfYXJnLCAqX19hLl9N
X2EpIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogX0hlYWRfYmFzZShhbGxv
Y2F0b3JfYXJnX3QsIF9fdXNlc19hbGxvYzI8X0FsbG9jPiBfX2EpCiA6IF9NX2hlYWRfaW1wbCgq
X19hLl9NX2EpIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VIZWFkPgogX0hlYWRfYmFz
ZShfX3VzZXNfYWxsb2MwLCBfVUhlYWQmJiBfX3VoZWFkKQogOiBfTV9oZWFkX2ltcGwoc3RkOjpm
b3J3YXJkPF9VSGVhZD4oX191aGVhZCkpIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Fs
bG9jLCB0eXBlbmFtZSBfVUhlYWQ+CiBfSGVhZF9iYXNlKF9fdXNlc19hbGxvYzE8X0FsbG9jPiBf
X2EsIF9VSGVhZCYmIF9fdWhlYWQpCiA6IF9NX2hlYWRfaW1wbChhbGxvY2F0b3JfYXJnLCAqX19h
Ll9NX2EsIHN0ZDo6Zm9yd2FyZDxfVUhlYWQ+KF9fdWhlYWQpKQogeyB9CgogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9VSGVhZD4KIF9IZWFkX2Jhc2UoX191c2VzX2Fs
bG9jMjxfQWxsb2M+IF9fYSwgX1VIZWFkJiYgX191aGVhZCkKIDogX01faGVhZF9pbXBsKHN0ZDo6
Zm9yd2FyZDxfVUhlYWQ+KF9fdWhlYWQpLCAqX19hLl9NX2EpIHsgfQoKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBfSGVhZCYKICAgICAgX01faGVhZChfSGVhZF9iYXNlJiBfX2IpIG5vZXhjZXB0IHsg
cmV0dXJuIF9fYi5fTV9oZWFkX2ltcGw7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3Qg
X0hlYWQmCiAgICAgIF9NX2hlYWQoY29uc3QgX0hlYWRfYmFzZSYgX19iKSBub2V4Y2VwdCB7IHJl
dHVybiBfX2IuX01faGVhZF9pbXBsOyB9CgogICAgICBfSGVhZCBfTV9oZWFkX2ltcGw7CiAgICB9
OwojIDE4NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy90dXBsZSIgMwogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9JZHgsIHR5cGVuYW1lLi4u
IF9FbGVtZW50cz4KICAgIHN0cnVjdCBfVHVwbGVfaW1wbDsKCgoKCgogIHRlbXBsYXRlPHN0ZDo6
c2l6ZV90IF9JZHg+CiAgICBzdHJ1Y3QgX1R1cGxlX2ltcGw8X0lkeD4KICAgIHsKICAgICAgdGVt
cGxhdGU8c3RkOjpzaXplX3QsIHR5cGVuYW1lLi4uPiBmcmllbmQgY2xhc3MgX1R1cGxlX2ltcGw7
CgogICAgICBfVHVwbGVfaW1wbCgpID0gZGVmYXVsdDsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IF9BbGxvYz4KICAgICAgICBfVHVwbGVfaW1wbChhbGxvY2F0b3JfYXJnX3QsIGNvbnN0IF9BbGxv
YyYpIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogICAgICAgIF9UdXBsZV9p
bXBsKGFsbG9jYXRvcl9hcmdfdCwgY29uc3QgX0FsbG9jJiwgY29uc3QgX1R1cGxlX2ltcGwmKSB7
IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KICAgICAgICBfVHVwbGVfaW1wbChh
bGxvY2F0b3JfYXJnX3QsIGNvbnN0IF9BbGxvYyYsIF9UdXBsZV9pbXBsJiYpIHsgfQoKICAgIHBy
b3RlY3RlZDoKICAgICAgdm9pZCBfTV9zd2FwKF9UdXBsZV9pbXBsJikgbm9leGNlcHQgeyB9CiAg
ICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19lbXB0eV9ub25f
dHVwbGUgOiBpc19lbXB0eTxfVHA+IHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9FbDAsIHR5
cGVuYW1lLi4uIF9FbD4KICAgIHN0cnVjdCBfX2lzX2VtcHR5X25vbl90dXBsZTx0dXBsZTxfRWww
LCBfRWwuLi4+PiA6IGZhbHNlX3R5cGUgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgdXNpbmcgX19lbXB0eV9ub3RfZmluYWwKICAgID0gdHlwZW5hbWUgY29uZGl0aW9uYWw8X19p
c19maW5hbChfVHApLCBmYWxzZV90eXBlLAogICAgICBfX2lzX2VtcHR5X25vbl90dXBsZTxfVHA+
Pjo6dHlwZTsKCgoKCgoKICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBfSWR4LCB0eXBlbmFtZSBfSGVh
ZCwgdHlwZW5hbWUuLi4gX1RhaWw+CiAgICBzdHJ1Y3QgX1R1cGxlX2ltcGw8X0lkeCwgX0hlYWQs
IF9UYWlsLi4uPgogICAgOiBwdWJsaWMgX1R1cGxlX2ltcGw8X0lkeCArIDEsIF9UYWlsLi4uPiwK
ICAgICAgcHJpdmF0ZSBfSGVhZF9iYXNlPF9JZHgsIF9IZWFkLCBfX2VtcHR5X25vdF9maW5hbDxf
SGVhZD46OnZhbHVlPgogICAgewogICAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCwgdHlwZW5hbWUu
Li4+IGZyaWVuZCBjbGFzcyBfVHVwbGVfaW1wbDsKCiAgICAgIHR5cGVkZWYgX1R1cGxlX2ltcGw8
X0lkeCArIDEsIF9UYWlsLi4uPiBfSW5oZXJpdGVkOwogICAgICB0eXBlZGVmIF9IZWFkX2Jhc2U8
X0lkeCwgX0hlYWQsIF9fZW1wdHlfbm90X2ZpbmFsPF9IZWFkPjo6dmFsdWU+IF9CYXNlOwoKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBfSGVhZCYKICAgICAgX01faGVhZChfVHVwbGVfaW1wbCYgX190
KSBub2V4Y2VwdCB7IHJldHVybiBfQmFzZTo6X01faGVhZChfX3QpOyB9CgogICAgICBzdGF0aWMg
Y29uc3RleHByIGNvbnN0IF9IZWFkJgogICAgICBfTV9oZWFkKGNvbnN0IF9UdXBsZV9pbXBsJiBf
X3QpIG5vZXhjZXB0IHsgcmV0dXJuIF9CYXNlOjpfTV9oZWFkKF9fdCk7IH0KCiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgX0luaGVyaXRlZCYKICAgICAgX01fdGFpbChfVHVwbGVfaW1wbCYgX190KSBu
b2V4Y2VwdCB7IHJldHVybiBfX3Q7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgX0lu
aGVyaXRlZCYKICAgICAgX01fdGFpbChjb25zdCBfVHVwbGVfaW1wbCYgX190KSBub2V4Y2VwdCB7
IHJldHVybiBfX3Q7IH0KCiAgICAgIGNvbnN0ZXhwciBfVHVwbGVfaW1wbCgpCiAgICAgIDogX0lu
aGVyaXRlZCgpLCBfQmFzZSgpIHsgfQoKICAgICAgZXhwbGljaXQKICAgICAgY29uc3RleHByIF9U
dXBsZV9pbXBsKGNvbnN0IF9IZWFkJiBfX2hlYWQsIGNvbnN0IF9UYWlsJi4uLiBfX3RhaWwpCiAg
ICAgIDogX0luaGVyaXRlZChfX3RhaWwuLi4pLCBfQmFzZShfX2hlYWQpIHsgfQoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX1VIZWFkLCB0eXBlbmFtZS4uLiBfVVRhaWwsIHR5cGVuYW1lID0gdHlw
ZW5hbWUKICAgICAgICAgICAgICAgZW5hYmxlX2lmPHNpemVvZi4uLihfVGFpbCkgPT0gc2l6ZW9m
Li4uKF9VVGFpbCk+Ojp0eXBlPgogICAgICAgIGV4cGxpY2l0CiAgICAgICAgY29uc3RleHByIF9U
dXBsZV9pbXBsKF9VSGVhZCYmIF9faGVhZCwgX1VUYWlsJiYuLi4gX190YWlsKQogOiBfSW5oZXJp
dGVkKHN0ZDo6Zm9yd2FyZDxfVVRhaWw+KF9fdGFpbCkuLi4pLAogICBfQmFzZShzdGQ6OmZvcndh
cmQ8X1VIZWFkPihfX2hlYWQpKSB7IH0KCiAgICAgIGNvbnN0ZXhwciBfVHVwbGVfaW1wbChjb25z
dCBfVHVwbGVfaW1wbCYpID0gZGVmYXVsdDsKCiAgICAgIGNvbnN0ZXhwcgogICAgICBfVHVwbGVf
aW1wbChfVHVwbGVfaW1wbCYmIF9faW4pCiAgICAgIG5vZXhjZXB0KF9fYW5kXzxpc19ub3Rocm93
X21vdmVfY29uc3RydWN0aWJsZTxfSGVhZD4sCiAgICAgICAgICAgICAgIGlzX25vdGhyb3dfbW92
ZV9jb25zdHJ1Y3RpYmxlPF9Jbmhlcml0ZWQ+Pjo6dmFsdWUpCiAgICAgIDogX0luaGVyaXRlZChz
dGQ6Om1vdmUoX01fdGFpbChfX2luKSkpLAogX0Jhc2Uoc3RkOjpmb3J3YXJkPF9IZWFkPihfTV9o
ZWFkKF9faW4pKSkgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfVUVsZW1lbnRzPgog
ICAgICAgIGNvbnN0ZXhwciBfVHVwbGVfaW1wbChjb25zdCBfVHVwbGVfaW1wbDxfSWR4LCBfVUVs
ZW1lbnRzLi4uPiYgX19pbikKIDogX0luaGVyaXRlZChfVHVwbGVfaW1wbDxfSWR4LCBfVUVsZW1l
bnRzLi4uPjo6X01fdGFpbChfX2luKSksCiAgIF9CYXNlKF9UdXBsZV9pbXBsPF9JZHgsIF9VRWxl
bWVudHMuLi4+OjpfTV9oZWFkKF9faW4pKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9V
SGVhZCwgdHlwZW5hbWUuLi4gX1VUYWlscz4KICAgICAgICBjb25zdGV4cHIgX1R1cGxlX2ltcGwo
X1R1cGxlX2ltcGw8X0lkeCwgX1VIZWFkLCBfVVRhaWxzLi4uPiYmIF9faW4pCiA6IF9Jbmhlcml0
ZWQoc3RkOjptb3ZlCiAgICAgICAoX1R1cGxlX2ltcGw8X0lkeCwgX1VIZWFkLCBfVVRhaWxzLi4u
Pjo6X01fdGFpbChfX2luKSkpLAogICBfQmFzZShzdGQ6OmZvcndhcmQ8X1VIZWFkPgogIChfVHVw
bGVfaW1wbDxfSWR4LCBfVUhlYWQsIF9VVGFpbHMuLi4+OjpfTV9oZWFkKF9faW4pKSkgeyB9Cgog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiBfVHVwbGVfaW1wbChhbGxvY2F0b3JfYXJn
X3QgX190YWcsIGNvbnN0IF9BbGxvYyYgX19hKQogOiBfSW5oZXJpdGVkKF9fdGFnLCBfX2EpLAog
ICAgICAgICAgX0Jhc2UoX190YWcsIF9fdXNlX2FsbG9jPF9IZWFkPihfX2EpKSB7IH0KCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KIF9UdXBsZV9pbXBsKGFsbG9jYXRvcl9hcmdfdCBf
X3RhZywgY29uc3QgX0FsbG9jJiBfX2EsCiAgICAgIGNvbnN0IF9IZWFkJiBfX2hlYWQsIGNvbnN0
IF9UYWlsJi4uLiBfX3RhaWwpCiA6IF9Jbmhlcml0ZWQoX190YWcsIF9fYSwgX190YWlsLi4uKSwK
ICAgICAgICAgIF9CYXNlKF9fdXNlX2FsbG9jPF9IZWFkLCBfQWxsb2MsIF9IZWFkPihfX2EpLCBf
X2hlYWQpIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZSBfVUhl
YWQsIHR5cGVuYW1lLi4uIF9VVGFpbCwKICAgICAgICAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFt
ZSBlbmFibGVfaWY8c2l6ZW9mLi4uKF9UYWlsKQogICAgICAgICAgPT0gc2l6ZW9mLi4uKF9VVGFp
bCk+Ojp0eXBlPgogX1R1cGxlX2ltcGwoYWxsb2NhdG9yX2FyZ190IF9fdGFnLCBjb25zdCBfQWxs
b2MmIF9fYSwKICAgICAgICAgICAgIF9VSGVhZCYmIF9faGVhZCwgX1VUYWlsJiYuLi4gX190YWls
KQogOiBfSW5oZXJpdGVkKF9fdGFnLCBfX2EsIHN0ZDo6Zm9yd2FyZDxfVVRhaWw+KF9fdGFpbCku
Li4pLAogICAgICAgICAgX0Jhc2UoX191c2VfYWxsb2M8X0hlYWQsIF9BbGxvYywgX1VIZWFkPihf
X2EpLAogICAgICAgICBzdGQ6OmZvcndhcmQ8X1VIZWFkPihfX2hlYWQpKSB7IH0KCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KICAgICAgICBfVHVwbGVfaW1wbChhbGxvY2F0b3JfYXJn
X3QgX190YWcsIGNvbnN0IF9BbGxvYyYgX19hLAogICAgICAgICAgICAgY29uc3QgX1R1cGxlX2lt
cGwmIF9faW4pCiA6IF9Jbmhlcml0ZWQoX190YWcsIF9fYSwgX01fdGFpbChfX2luKSksCiAgICAg
ICAgICBfQmFzZShfX3VzZV9hbGxvYzxfSGVhZCwgX0FsbG9jLCBfSGVhZD4oX19hKSwgX01faGVh
ZChfX2luKSkgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiBfVHVwbGVfaW1w
bChhbGxvY2F0b3JfYXJnX3QgX190YWcsIGNvbnN0IF9BbGxvYyYgX19hLAogICAgICAgICAgICAg
X1R1cGxlX2ltcGwmJiBfX2luKQogOiBfSW5oZXJpdGVkKF9fdGFnLCBfX2EsIHN0ZDo6bW92ZShf
TV90YWlsKF9faW4pKSksCiAgIF9CYXNlKF9fdXNlX2FsbG9jPF9IZWFkLCBfQWxsb2MsIF9IZWFk
PihfX2EpLAogICAgICAgICBzdGQ6OmZvcndhcmQ8X0hlYWQ+KF9NX2hlYWQoX19pbikpKSB7IH0K
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUuLi4gX1VFbGVtZW50cz4K
IF9UdXBsZV9pbXBsKGFsbG9jYXRvcl9hcmdfdCBfX3RhZywgY29uc3QgX0FsbG9jJiBfX2EsCiAg
ICAgICAgICAgICBjb25zdCBfVHVwbGVfaW1wbDxfSWR4LCBfVUVsZW1lbnRzLi4uPiYgX19pbikK
IDogX0luaGVyaXRlZChfX3RhZywgX19hLAogICAgICAgX1R1cGxlX2ltcGw8X0lkeCwgX1VFbGVt
ZW50cy4uLj46Ol9NX3RhaWwoX19pbikpLAogICBfQmFzZShfX3VzZV9hbGxvYzxfSGVhZCwgX0Fs
bG9jLCBfSGVhZD4oX19hKSwKICBfVHVwbGVfaW1wbDxfSWR4LCBfVUVsZW1lbnRzLi4uPjo6X01f
aGVhZChfX2luKSkgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1l
IF9VSGVhZCwgdHlwZW5hbWUuLi4gX1VUYWlscz4KIF9UdXBsZV9pbXBsKGFsbG9jYXRvcl9hcmdf
dCBfX3RhZywgY29uc3QgX0FsbG9jJiBfX2EsCiAgICAgICAgICAgICBfVHVwbGVfaW1wbDxfSWR4
LCBfVUhlYWQsIF9VVGFpbHMuLi4+JiYgX19pbikKIDogX0luaGVyaXRlZChfX3RhZywgX19hLCBz
dGQ6Om1vdmUKICAgICAgIChfVHVwbGVfaW1wbDxfSWR4LCBfVUhlYWQsIF9VVGFpbHMuLi4+Ojpf
TV90YWlsKF9faW4pKSksCiAgIF9CYXNlKF9fdXNlX2FsbG9jPF9IZWFkLCBfQWxsb2MsIF9VSGVh
ZD4oX19hKSwKICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZDxfVUhlYWQ+CiAgKF9UdXBsZV9p
bXBsPF9JZHgsIF9VSGVhZCwgX1VUYWlscy4uLj46Ol9NX2hlYWQoX19pbikpKSB7IH0KCiAgICAg
IF9UdXBsZV9pbXBsJgogICAgICBvcGVyYXRvcj0oY29uc3QgX1R1cGxlX2ltcGwmIF9faW4pCiAg
ICAgIHsKIF9NX2hlYWQoKnRoaXMpID0gX01faGVhZChfX2luKTsKIF9NX3RhaWwoKnRoaXMpID0g
X01fdGFpbChfX2luKTsKIHJldHVybiAqdGhpczsKICAgICAgfQoKICAgICAgX1R1cGxlX2ltcGwm
CiAgICAgIG9wZXJhdG9yPShfVHVwbGVfaW1wbCYmIF9faW4pCiAgICAgIG5vZXhjZXB0KF9fYW5k
Xzxpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZTxfSGVhZD4sCiAgICAgICAgICAgICAgIGlzX25v
dGhyb3dfbW92ZV9hc3NpZ25hYmxlPF9Jbmhlcml0ZWQ+Pjo6dmFsdWUpCiAgICAgIHsKIF9NX2hl
YWQoKnRoaXMpID0gc3RkOjpmb3J3YXJkPF9IZWFkPihfTV9oZWFkKF9faW4pKTsKIF9NX3RhaWwo
KnRoaXMpID0gc3RkOjptb3ZlKF9NX3RhaWwoX19pbikpOwogcmV0dXJuICp0aGlzOwogICAgICB9
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfVUVsZW1lbnRzPgogICAgICAgIF9UdXBsZV9p
bXBsJgogICAgICAgIG9wZXJhdG9yPShjb25zdCBfVHVwbGVfaW1wbDxfSWR4LCBfVUVsZW1lbnRz
Li4uPiYgX19pbikKICAgICAgICB7CiAgIF9NX2hlYWQoKnRoaXMpID0gX1R1cGxlX2ltcGw8X0lk
eCwgX1VFbGVtZW50cy4uLj46Ol9NX2hlYWQoX19pbik7CiAgIF9NX3RhaWwoKnRoaXMpID0gX1R1
cGxlX2ltcGw8X0lkeCwgX1VFbGVtZW50cy4uLj46Ol9NX3RhaWwoX19pbik7CiAgIHJldHVybiAq
dGhpczsKIH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VSGVhZCwgdHlwZW5hbWUuLi4gX1VU
YWlscz4KICAgICAgICBfVHVwbGVfaW1wbCYKICAgICAgICBvcGVyYXRvcj0oX1R1cGxlX2ltcGw8
X0lkeCwgX1VIZWFkLCBfVVRhaWxzLi4uPiYmIF9faW4pCiAgICAgICAgewogICBfTV9oZWFkKCp0
aGlzKSA9IHN0ZDo6Zm9yd2FyZDxfVUhlYWQ+CiAgICAgKF9UdXBsZV9pbXBsPF9JZHgsIF9VSGVh
ZCwgX1VUYWlscy4uLj46Ol9NX2hlYWQoX19pbikpOwogICBfTV90YWlsKCp0aGlzKSA9IHN0ZDo6
bW92ZQogICAgIChfVHVwbGVfaW1wbDxfSWR4LCBfVUhlYWQsIF9VVGFpbHMuLi4+OjpfTV90YWls
KF9faW4pKTsKICAgcmV0dXJuICp0aGlzOwogfQoKICAgIHByb3RlY3RlZDoKICAgICAgdm9pZAog
ICAgICBfTV9zd2FwKF9UdXBsZV9pbXBsJiBfX2luKQogICAgICBub2V4Y2VwdChub2V4Y2VwdChz
d2FwKHN0ZDo6ZGVjbHZhbDxfSGVhZCY+KCksCiAgICAgICAgc3RkOjpkZWNsdmFsPF9IZWFkJj4o
KSkpCiAgICAgICAgJiYgbm9leGNlcHQoX01fdGFpbChfX2luKS5fTV9zd2FwKF9NX3RhaWwoX19p
bikpKSkKICAgICAgewogdXNpbmcgc3RkOjpzd2FwOwogc3dhcChfTV9oZWFkKCp0aGlzKSwgX01f
aGVhZChfX2luKSk7CiBfSW5oZXJpdGVkOjpfTV9zd2FwKF9NX3RhaWwoX19pbikpOwogICAgICB9
CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0VsZW1lbnRzPgogICAgY2xhc3MgdHVw
bGUgOiBwdWJsaWMgX1R1cGxlX2ltcGw8MCwgX0VsZW1lbnRzLi4uPgogICAgewogICAgICB0eXBl
ZGVmIF9UdXBsZV9pbXBsPDAsIF9FbGVtZW50cy4uLj4gX0luaGVyaXRlZDsKCiAgICBwdWJsaWM6
CiAgICAgIGNvbnN0ZXhwciB0dXBsZSgpCiAgICAgIDogX0luaGVyaXRlZCgpIHsgfQoKICAgICAg
ZXhwbGljaXQKICAgICAgY29uc3RleHByIHR1cGxlKGNvbnN0IF9FbGVtZW50cyYuLi4gX19lbGVt
ZW50cykKICAgICAgOiBfSW5oZXJpdGVkKF9fZWxlbWVudHMuLi4pIHsgfQoKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUuLi4gX1VFbGVtZW50cywgdHlwZW5hbWUgPSB0eXBlbmFtZQogICAgICAgIGVu
YWJsZV9pZjxfX2FuZF88aXNfY29udmVydGlibGU8X1VFbGVtZW50cywKICAgICBfRWxlbWVudHM+
Li4uPjo6dmFsdWU+Ojp0eXBlPgogZXhwbGljaXQKICAgICAgICBjb25zdGV4cHIgdHVwbGUoX1VF
bGVtZW50cyYmLi4uIF9fZWxlbWVudHMpCiA6IF9Jbmhlcml0ZWQoc3RkOjpmb3J3YXJkPF9VRWxl
bWVudHM+KF9fZWxlbWVudHMpLi4uKSB7IH0KCiAgICAgIGNvbnN0ZXhwciB0dXBsZShjb25zdCB0
dXBsZSYpID0gZGVmYXVsdDsKCiAgICAgIGNvbnN0ZXhwciB0dXBsZSh0dXBsZSYmKSA9IGRlZmF1
bHQ7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfVUVsZW1lbnRzLCB0eXBlbmFtZSA9IHR5
cGVuYW1lCiAgICAgICAgZW5hYmxlX2lmPF9fYW5kXzxpc19jb252ZXJ0aWJsZTxjb25zdCBfVUVs
ZW1lbnRzJiwKICAgICBfRWxlbWVudHM+Li4uPjo6dmFsdWU+Ojp0eXBlPgogICAgICAgIGNvbnN0
ZXhwciB0dXBsZShjb25zdCB0dXBsZTxfVUVsZW1lbnRzLi4uPiYgX19pbikKICAgICAgICA6IF9J
bmhlcml0ZWQoc3RhdGljX2Nhc3Q8Y29uc3QgX1R1cGxlX2ltcGw8MCwgX1VFbGVtZW50cy4uLj4m
PihfX2luKSkKICAgICAgICB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9VRWxlbWVu
dHMsIHR5cGVuYW1lID0gdHlwZW5hbWUKICAgICAgICBlbmFibGVfaWY8X19hbmRfPGlzX2NvbnZl
cnRpYmxlPF9VRWxlbWVudHMsCiAgICAgX0VsZW1lbnRzPi4uLj46OnZhbHVlPjo6dHlwZT4KICAg
ICAgICBjb25zdGV4cHIgdHVwbGUodHVwbGU8X1VFbGVtZW50cy4uLj4mJiBfX2luKQogICAgICAg
IDogX0luaGVyaXRlZChzdGF0aWNfY2FzdDxfVHVwbGVfaW1wbDwwLCBfVUVsZW1lbnRzLi4uPiYm
PihfX2luKSkgeyB9CgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KIHR1cGxlKGFs
bG9jYXRvcl9hcmdfdCBfX3RhZywgY29uc3QgX0FsbG9jJiBfX2EpCiA6IF9Jbmhlcml0ZWQoX190
YWcsIF9fYSkgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiB0dXBsZShhbGxv
Y2F0b3JfYXJnX3QgX190YWcsIGNvbnN0IF9BbGxvYyYgX19hLAogICAgICAgY29uc3QgX0VsZW1l
bnRzJi4uLiBfX2VsZW1lbnRzKQogOiBfSW5oZXJpdGVkKF9fdGFnLCBfX2EsIF9fZWxlbWVudHMu
Li4pIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZS4uLiBfVUVs
ZW1lbnRzLCB0eXBlbmFtZSA9IHR5cGVuYW1lCiAgICAgICAgZW5hYmxlX2lmPHNpemVvZi4uLihf
VUVsZW1lbnRzKQogICAgPT0gc2l6ZW9mLi4uKF9FbGVtZW50cyk+Ojp0eXBlPgogdHVwbGUoYWxs
b2NhdG9yX2FyZ190IF9fdGFnLCBjb25zdCBfQWxsb2MmIF9fYSwKICAgICAgIF9VRWxlbWVudHMm
Ji4uLiBfX2VsZW1lbnRzKQogOiBfSW5oZXJpdGVkKF9fdGFnLCBfX2EsIHN0ZDo6Zm9yd2FyZDxf
VUVsZW1lbnRzPihfX2VsZW1lbnRzKS4uLikKICAgICAgICB7IH0KCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9BbGxvYz4KIHR1cGxlKGFsbG9jYXRvcl9hcmdfdCBfX3RhZywgY29uc3QgX0FsbG9j
JiBfX2EsIGNvbnN0IHR1cGxlJiBfX2luKQogOiBfSW5oZXJpdGVkKF9fdGFnLCBfX2EsIHN0YXRp
Y19jYXN0PGNvbnN0IF9Jbmhlcml0ZWQmPihfX2luKSkgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQWxsb2M+CiB0dXBsZShhbGxvY2F0b3JfYXJnX3QgX190YWcsIGNvbnN0IF9BbGxvYyYg
X19hLCB0dXBsZSYmIF9faW4pCiA6IF9Jbmhlcml0ZWQoX190YWcsIF9fYSwgc3RhdGljX2Nhc3Q8
X0luaGVyaXRlZCYmPihfX2luKSkgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2Ms
IHR5cGVuYW1lLi4uIF9VRWxlbWVudHMsIHR5cGVuYW1lID0gdHlwZW5hbWUKICAgICAgICBlbmFi
bGVfaWY8c2l6ZW9mLi4uKF9VRWxlbWVudHMpCiAgICA9PSBzaXplb2YuLi4oX0VsZW1lbnRzKT46
OnR5cGU+CiB0dXBsZShhbGxvY2F0b3JfYXJnX3QgX190YWcsIGNvbnN0IF9BbGxvYyYgX19hLAog
ICAgICAgY29uc3QgdHVwbGU8X1VFbGVtZW50cy4uLj4mIF9faW4pCiA6IF9Jbmhlcml0ZWQoX190
YWcsIF9fYSwKICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBfVHVwbGVfaW1wbDwwLCBf
VUVsZW1lbnRzLi4uPiY+KF9faW4pKQogeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxs
b2MsIHR5cGVuYW1lLi4uIF9VRWxlbWVudHMsIHR5cGVuYW1lID0gdHlwZW5hbWUKICAgICAgICBl
bmFibGVfaWY8c2l6ZW9mLi4uKF9VRWxlbWVudHMpCiAgICA9PSBzaXplb2YuLi4oX0VsZW1lbnRz
KT46OnR5cGU+CiB0dXBsZShhbGxvY2F0b3JfYXJnX3QgX190YWcsIGNvbnN0IF9BbGxvYyYgX19h
LAogICAgICAgdHVwbGU8X1VFbGVtZW50cy4uLj4mJiBfX2luKQogOiBfSW5oZXJpdGVkKF9fdGFn
LCBfX2EsCiAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8X1R1cGxlX2ltcGw8MCwgX1VFbGVtZW50
cy4uLj4mJj4oX19pbikpCiB7IH0KCiAgICAgIHR1cGxlJgogICAgICBvcGVyYXRvcj0oY29uc3Qg
dHVwbGUmIF9faW4pCiAgICAgIHsKIHN0YXRpY19jYXN0PF9Jbmhlcml0ZWQmPigqdGhpcykgPSBf
X2luOwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICB0dXBsZSYKICAgICAgb3BlcmF0b3I9
KHR1cGxlJiYgX19pbikKICAgICAgbm9leGNlcHQoaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU8
X0luaGVyaXRlZD46OnZhbHVlKQogICAgICB7CiBzdGF0aWNfY2FzdDxfSW5oZXJpdGVkJj4oKnRo
aXMpID0gc3RkOjptb3ZlKF9faW4pOwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBfVUVsZW1lbnRzLCB0eXBlbmFtZSA9IHR5cGVuYW1lCiAgICAgICAg
ZW5hYmxlX2lmPHNpemVvZi4uLihfVUVsZW1lbnRzKQogICAgPT0gc2l6ZW9mLi4uKF9FbGVtZW50
cyk+Ojp0eXBlPgogICAgICAgIHR1cGxlJgogICAgICAgIG9wZXJhdG9yPShjb25zdCB0dXBsZTxf
VUVsZW1lbnRzLi4uPiYgX19pbikKICAgICAgICB7CiAgIHN0YXRpY19jYXN0PF9Jbmhlcml0ZWQm
PigqdGhpcykgPSBfX2luOwogICByZXR1cm4gKnRoaXM7CiB9CgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBfVUVsZW1lbnRzLCB0eXBlbmFtZSA9IHR5cGVuYW1lCiAgICAgICAgZW5hYmxlX2lm
PHNpemVvZi4uLihfVUVsZW1lbnRzKQogICAgPT0gc2l6ZW9mLi4uKF9FbGVtZW50cyk+Ojp0eXBl
PgogICAgICAgIHR1cGxlJgogICAgICAgIG9wZXJhdG9yPSh0dXBsZTxfVUVsZW1lbnRzLi4uPiYm
IF9faW4pCiAgICAgICAgewogICBzdGF0aWNfY2FzdDxfSW5oZXJpdGVkJj4oKnRoaXMpID0gc3Rk
Ojptb3ZlKF9faW4pOwogICByZXR1cm4gKnRoaXM7CiB9CgogICAgICB2b2lkCiAgICAgIHN3YXAo
dHVwbGUmIF9faW4pCiAgICAgIG5vZXhjZXB0KG5vZXhjZXB0KF9faW4uX01fc3dhcChfX2luKSkp
CiAgICAgIHsgX0luaGVyaXRlZDo6X01fc3dhcChfX2luKTsgfQogICAgfTsKCgogIHRlbXBsYXRl
PD4KICAgIGNsYXNzIHR1cGxlPD4KICAgIHsKICAgIHB1YmxpYzoKICAgICAgdm9pZCBzd2FwKHR1
cGxlJikgbm9leGNlcHQgeyB9CiAgICB9OwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UMSwgdHlw
ZW5hbWUgX1QyPgogICAgY2xhc3MgdHVwbGU8X1QxLCBfVDI+IDogcHVibGljIF9UdXBsZV9pbXBs
PDAsIF9UMSwgX1QyPgogICAgewogICAgICB0eXBlZGVmIF9UdXBsZV9pbXBsPDAsIF9UMSwgX1Qy
PiBfSW5oZXJpdGVkOwoKICAgIHB1YmxpYzoKICAgICAgY29uc3RleHByIHR1cGxlKCkKICAgICAg
OiBfSW5oZXJpdGVkKCkgeyB9CgogICAgICBleHBsaWNpdAogICAgICBjb25zdGV4cHIgdHVwbGUo
Y29uc3QgX1QxJiBfX2ExLCBjb25zdCBfVDImIF9fYTIpCiAgICAgIDogX0luaGVyaXRlZChfX2Ex
LCBfX2EyKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VMSwgdHlwZW5hbWUgX1UyLCB0
eXBlbmFtZSA9IHR5cGVuYW1lCiAgICAgICAgZW5hYmxlX2lmPF9fYW5kXzxpc19jb252ZXJ0aWJs
ZTxfVTEsIF9UMT4sCiAgICBpc19jb252ZXJ0aWJsZTxfVTIsIF9UMj4+Ojp2YWx1ZT46OnR5cGU+
CiAgICAgICAgZXhwbGljaXQKICAgICAgICBjb25zdGV4cHIgdHVwbGUoX1UxJiYgX19hMSwgX1Uy
JiYgX19hMikKIDogX0luaGVyaXRlZChzdGQ6OmZvcndhcmQ8X1UxPihfX2ExKSwgc3RkOjpmb3J3
YXJkPF9VMj4oX19hMikpIHsgfQoKICAgICAgY29uc3RleHByIHR1cGxlKGNvbnN0IHR1cGxlJikg
PSBkZWZhdWx0OwoKICAgICAgY29uc3RleHByIHR1cGxlKHR1cGxlJiYpID0gZGVmYXVsdDsKCiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VMSwgdHlwZW5hbWUgX1UyLCB0eXBlbmFtZSA9IHR5cGVu
YW1lCiBlbmFibGVfaWY8X19hbmRfPGlzX2NvbnZlcnRpYmxlPGNvbnN0IF9VMSYsIF9UMT4sCiAg
ICBpc19jb252ZXJ0aWJsZTxjb25zdCBfVTImLCBfVDI+Pjo6dmFsdWU+Ojp0eXBlPgogICAgICAg
IGNvbnN0ZXhwciB0dXBsZShjb25zdCB0dXBsZTxfVTEsIF9VMj4mIF9faW4pCiA6IF9Jbmhlcml0
ZWQoc3RhdGljX2Nhc3Q8Y29uc3QgX1R1cGxlX2ltcGw8MCwgX1UxLCBfVTI+Jj4oX19pbikpIHsg
fQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1UxLCB0eXBlbmFtZSBfVTIsIHR5cGVuYW1lID0g
dHlwZW5hbWUKICAgICAgICBlbmFibGVfaWY8X19hbmRfPGlzX2NvbnZlcnRpYmxlPF9VMSwgX1Qx
PiwKICAgIGlzX2NvbnZlcnRpYmxlPF9VMiwgX1QyPj46OnZhbHVlPjo6dHlwZT4KICAgICAgICBj
b25zdGV4cHIgdHVwbGUodHVwbGU8X1UxLCBfVTI+JiYgX19pbikKIDogX0luaGVyaXRlZChzdGF0
aWNfY2FzdDxfVHVwbGVfaW1wbDwwLCBfVTEsIF9VMj4mJj4oX19pbikpIHsgfQoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX1UxLCB0eXBlbmFtZSBfVTIsIHR5cGVuYW1lID0gdHlwZW5hbWUKIGVu
YWJsZV9pZjxfX2FuZF88aXNfY29udmVydGlibGU8Y29uc3QgX1UxJiwgX1QxPiwKICAgIGlzX2Nv
bnZlcnRpYmxlPGNvbnN0IF9VMiYsIF9UMj4+Ojp2YWx1ZT46OnR5cGU+CiAgICAgICAgY29uc3Rl
eHByIHR1cGxlKGNvbnN0IHBhaXI8X1UxLCBfVTI+JiBfX2luKQogOiBfSW5oZXJpdGVkKF9faW4u
Zmlyc3QsIF9faW4uc2Vjb25kKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VMSwgdHlw
ZW5hbWUgX1UyLCB0eXBlbmFtZSA9IHR5cGVuYW1lCiAgICAgICAgZW5hYmxlX2lmPF9fYW5kXzxp
c19jb252ZXJ0aWJsZTxfVTEsIF9UMT4sCiAgICBpc19jb252ZXJ0aWJsZTxfVTIsIF9UMj4+Ojp2
YWx1ZT46OnR5cGU+CiAgICAgICAgY29uc3RleHByIHR1cGxlKHBhaXI8X1UxLCBfVTI+JiYgX19p
bikKIDogX0luaGVyaXRlZChzdGQ6OmZvcndhcmQ8X1UxPihfX2luLmZpcnN0KSwKICAgICAgIHN0
ZDo6Zm9yd2FyZDxfVTI+KF9faW4uc2Vjb25kKSkgeyB9CgoKCiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9BbGxvYz4KIHR1cGxlKGFsbG9jYXRvcl9hcmdfdCBfX3RhZywgY29uc3QgX0FsbG9jJiBf
X2EpCiA6IF9Jbmhlcml0ZWQoX190YWcsIF9fYSkgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQWxsb2M+CiB0dXBsZShhbGxvY2F0b3JfYXJnX3QgX190YWcsIGNvbnN0IF9BbGxvYyYgX19h
LAogICAgICAgY29uc3QgX1QxJiBfX2ExLCBjb25zdCBfVDImIF9fYTIpCiA6IF9Jbmhlcml0ZWQo
X190YWcsIF9fYSwgX19hMSwgX19hMikgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxs
b2MsIHR5cGVuYW1lIF9VMSwgdHlwZW5hbWUgX1UyPgogdHVwbGUoYWxsb2NhdG9yX2FyZ190IF9f
dGFnLCBjb25zdCBfQWxsb2MmIF9fYSwgX1UxJiYgX19hMSwgX1UyJiYgX19hMikKIDogX0luaGVy
aXRlZChfX3RhZywgX19hLCBzdGQ6OmZvcndhcmQ8X1UxPihfX2ExKSwKICAgICAgICAgICAgICBz
dGQ6OmZvcndhcmQ8X1UyPihfX2EyKSkgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxs
b2M+CiB0dXBsZShhbGxvY2F0b3JfYXJnX3QgX190YWcsIGNvbnN0IF9BbGxvYyYgX19hLCBjb25z
dCB0dXBsZSYgX19pbikKIDogX0luaGVyaXRlZChfX3RhZywgX19hLCBzdGF0aWNfY2FzdDxjb25z
dCBfSW5oZXJpdGVkJj4oX19pbikpIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9j
PgogdHVwbGUoYWxsb2NhdG9yX2FyZ190IF9fdGFnLCBjb25zdCBfQWxsb2MmIF9fYSwgdHVwbGUm
JiBfX2luKQogOiBfSW5oZXJpdGVkKF9fdGFnLCBfX2EsIHN0YXRpY19jYXN0PF9Jbmhlcml0ZWQm
Jj4oX19pbikpIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZSBf
VTEsIHR5cGVuYW1lIF9VMj4KIHR1cGxlKGFsbG9jYXRvcl9hcmdfdCBfX3RhZywgY29uc3QgX0Fs
bG9jJiBfX2EsCiAgICAgICBjb25zdCB0dXBsZTxfVTEsIF9VMj4mIF9faW4pCiA6IF9Jbmhlcml0
ZWQoX190YWcsIF9fYSwKICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBfVHVwbGVfaW1w
bDwwLCBfVTEsIF9VMj4mPihfX2luKSkKIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Fs
bG9jLCB0eXBlbmFtZSBfVTEsIHR5cGVuYW1lIF9VMj4KIHR1cGxlKGFsbG9jYXRvcl9hcmdfdCBf
X3RhZywgY29uc3QgX0FsbG9jJiBfX2EsIHR1cGxlPF9VMSwgX1UyPiYmIF9faW4pCiA6IF9Jbmhl
cml0ZWQoX190YWcsIF9fYSwgc3RhdGljX2Nhc3Q8X1R1cGxlX2ltcGw8MCwgX1UxLCBfVTI+JiY+
KF9faW4pKQogeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9V
MSwgdHlwZW5hbWUgX1UyPgogICAgICAgIHR1cGxlKGFsbG9jYXRvcl9hcmdfdCBfX3RhZywgY29u
c3QgX0FsbG9jJiBfX2EsCiAgICAgICBjb25zdCBwYWlyPF9VMSwgX1UyPiYgX19pbikKIDogX0lu
aGVyaXRlZChfX3RhZywgX19hLCBfX2luLmZpcnN0LCBfX2luLnNlY29uZCkgeyB9CgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9VMSwgdHlwZW5hbWUgX1UyPgogICAg
ICAgIHR1cGxlKGFsbG9jYXRvcl9hcmdfdCBfX3RhZywgY29uc3QgX0FsbG9jJiBfX2EsIHBhaXI8
X1UxLCBfVTI+JiYgX19pbikKIDogX0luaGVyaXRlZChfX3RhZywgX19hLCBzdGQ6OmZvcndhcmQ8
X1UxPihfX2luLmZpcnN0KSwKICAgICAgIHN0ZDo6Zm9yd2FyZDxfVTI+KF9faW4uc2Vjb25kKSkg
eyB9CgogICAgICB0dXBsZSYKICAgICAgb3BlcmF0b3I9KGNvbnN0IHR1cGxlJiBfX2luKQogICAg
ICB7CiBzdGF0aWNfY2FzdDxfSW5oZXJpdGVkJj4oKnRoaXMpID0gX19pbjsKIHJldHVybiAqdGhp
czsKICAgICAgfQoKICAgICAgdHVwbGUmCiAgICAgIG9wZXJhdG9yPSh0dXBsZSYmIF9faW4pCiAg
ICAgIG5vZXhjZXB0KGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPF9Jbmhlcml0ZWQ+Ojp2YWx1
ZSkKICAgICAgewogc3RhdGljX2Nhc3Q8X0luaGVyaXRlZCY+KCp0aGlzKSA9IHN0ZDo6bW92ZShf
X2luKTsKIHJldHVybiAqdGhpczsKICAgICAgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Ux
LCB0eXBlbmFtZSBfVTI+CiAgICAgICAgdHVwbGUmCiAgICAgICAgb3BlcmF0b3I9KGNvbnN0IHR1
cGxlPF9VMSwgX1UyPiYgX19pbikKICAgICAgICB7CiAgIHN0YXRpY19jYXN0PF9Jbmhlcml0ZWQm
PigqdGhpcykgPSBfX2luOwogICByZXR1cm4gKnRoaXM7CiB9CgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVTEsIHR5cGVuYW1lIF9VMj4KICAgICAgICB0dXBsZSYKICAgICAgICBvcGVyYXRvcj0o
dHVwbGU8X1UxLCBfVTI+JiYgX19pbikKICAgICAgICB7CiAgIHN0YXRpY19jYXN0PF9Jbmhlcml0
ZWQmPigqdGhpcykgPSBzdGQ6Om1vdmUoX19pbik7CiAgIHJldHVybiAqdGhpczsKIH0KCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9VMSwgdHlwZW5hbWUgX1UyPgogICAgICAgIHR1cGxlJgogICAg
ICAgIG9wZXJhdG9yPShjb25zdCBwYWlyPF9VMSwgX1UyPiYgX19pbikKICAgICAgICB7CiAgIHRo
aXMtPl9NX2hlYWQoKnRoaXMpID0gX19pbi5maXJzdDsKICAgdGhpcy0+X01fdGFpbCgqdGhpcyku
X01faGVhZCgqdGhpcykgPSBfX2luLnNlY29uZDsKICAgcmV0dXJuICp0aGlzOwogfQoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1UxLCB0eXBlbmFtZSBfVTI+CiAgICAgICAgdHVwbGUmCiAgICAg
ICAgb3BlcmF0b3I9KHBhaXI8X1UxLCBfVTI+JiYgX19pbikKICAgICAgICB7CiAgIHRoaXMtPl9N
X2hlYWQoKnRoaXMpID0gc3RkOjpmb3J3YXJkPF9VMT4oX19pbi5maXJzdCk7CiAgIHRoaXMtPl9N
X3RhaWwoKnRoaXMpLl9NX2hlYWQoKnRoaXMpID0gc3RkOjpmb3J3YXJkPF9VMj4oX19pbi5zZWNv
bmQpOwogICByZXR1cm4gKnRoaXM7CiB9CgogICAgICB2b2lkCiAgICAgIHN3YXAodHVwbGUmIF9f
aW4pCiAgICAgIG5vZXhjZXB0KG5vZXhjZXB0KF9faW4uX01fc3dhcChfX2luKSkpCiAgICAgIHsg
X0luaGVyaXRlZDo6X01fc3dhcChfX2luKTsgfQogICAgfTsKCgoKICB0ZW1wbGF0ZTxzdGQ6OnNp
emVfdCBfX2ksIHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCB0dXBsZV9lbGVtZW50OwoKCgoKCiAg
dGVtcGxhdGU8c3RkOjpzaXplX3QgX19pLCB0eXBlbmFtZSBfSGVhZCwgdHlwZW5hbWUuLi4gX1Rh
aWw+CiAgICBzdHJ1Y3QgdHVwbGVfZWxlbWVudDxfX2ksIHR1cGxlPF9IZWFkLCBfVGFpbC4uLj4g
PgogICAgOiB0dXBsZV9lbGVtZW50PF9faSAtIDEsIHR1cGxlPF9UYWlsLi4uPiA+IHsgfTsKCgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0hlYWQsIHR5cGVuYW1lLi4uIF9UYWlsPgogICAgc3RydWN0
IHR1cGxlX2VsZW1lbnQ8MCwgdHVwbGU8X0hlYWQsIF9UYWlsLi4uPiA+CiAgICB7CiAgICAgIHR5
cGVkZWYgX0hlYWQgdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9faSwgdHlw
ZW5hbWUgX1RwPgogICAgc3RydWN0IHR1cGxlX2VsZW1lbnQ8X19pLCBjb25zdCBfVHA+CiAgICB7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUKICAgICAgYWRkX2NvbnN0PHR5cGVuYW1lIHR1cGxlX2Vs
ZW1lbnQ8X19pLCBfVHA+Ojp0eXBlPjo6dHlwZSB0eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8c3Rk
OjpzaXplX3QgX19pLCB0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgdHVwbGVfZWxlbWVudDxfX2ks
IHZvbGF0aWxlIF9UcD4KICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZQogICAgICBhZGRfdm9s
YXRpbGU8dHlwZW5hbWUgdHVwbGVfZWxlbWVudDxfX2ksIF9UcD46OnR5cGU+Ojp0eXBlIHR5cGU7
CiAgICB9OwoKICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBfX2ksIHR5cGVuYW1lIF9UcD4KICAgIHN0
cnVjdCB0dXBsZV9lbGVtZW50PF9faSwgY29uc3Qgdm9sYXRpbGUgX1RwPgogICAgewogICAgICB0
eXBlZGVmIHR5cGVuYW1lCiAgICAgIGFkZF9jdjx0eXBlbmFtZSB0dXBsZV9lbGVtZW50PF9faSwg
X1RwPjo6dHlwZT46OnR5cGUgdHlwZTsKICAgIH07CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4KICAgIHN0cnVjdCB0dXBsZV9zaXplOwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICAgIHN0cnVjdCB0dXBsZV9zaXplPGNvbnN0IF9UcD4KICAgIDogcHVibGljIGludGVncmFsX2Nv
bnN0YW50PHNpemVfdCwgdHVwbGVfc2l6ZTxfVHA+Ojp2YWx1ZT4geyB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgdHVwbGVfc2l6ZTx2b2xhdGlsZSBfVHA+CiAgICA6IHB1
YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxzaXplX3QsIHR1cGxlX3NpemU8X1RwPjo6dmFsdWU+IHsg
fTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IHR1cGxlX3NpemU8Y29uc3Qg
dm9sYXRpbGUgX1RwPgogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCB0dXBs
ZV9zaXplPF9UcD46OnZhbHVlPiB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfRWxlbWVu
dHM+CiAgICBzdHJ1Y3QgdHVwbGVfc2l6ZTx0dXBsZTxfRWxlbWVudHMuLi4+PgogICAgOiBwdWJs
aWMgaW50ZWdyYWxfY29uc3RhbnQ8c3RkOjpzaXplX3QsIHNpemVvZi4uLihfRWxlbWVudHMpPiB7
IH07CgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9faSwgdHlwZW5hbWUgX0hlYWQsIHR5cGVuYW1l
Li4uIF9UYWlsPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fYWRkX3JlZjxfSGVhZD46OnR5cGUK
ICAgIF9fZ2V0X2hlbHBlcihfVHVwbGVfaW1wbDxfX2ksIF9IZWFkLCBfVGFpbC4uLj4mIF9fdCkg
bm9leGNlcHQKICAgIHsgcmV0dXJuIF9UdXBsZV9pbXBsPF9faSwgX0hlYWQsIF9UYWlsLi4uPjo6
X01faGVhZChfX3QpOyB9CgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9faSwgdHlwZW5hbWUgX0hl
YWQsIHR5cGVuYW1lLi4uIF9UYWlsPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fYWRkX2NfcmVm
PF9IZWFkPjo6dHlwZQogICAgX19nZXRfaGVscGVyKGNvbnN0IF9UdXBsZV9pbXBsPF9faSwgX0hl
YWQsIF9UYWlsLi4uPiYgX190KSBub2V4Y2VwdAogICAgeyByZXR1cm4gX1R1cGxlX2ltcGw8X19p
LCBfSGVhZCwgX1RhaWwuLi4+OjpfTV9oZWFkKF9fdCk7IH0KCgogIHRlbXBsYXRlPHN0ZDo6c2l6
ZV90IF9faSwgdHlwZW5hbWUuLi4gX0VsZW1lbnRzPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9f
YWRkX3JlZjwKICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHR1cGxlX2VsZW1lbnQ8X19p
LCB0dXBsZTxfRWxlbWVudHMuLi4+Pjo6dHlwZQogICAgICAgICAgICAgICAgICAgID46OnR5cGUK
ICAgIGdldCh0dXBsZTxfRWxlbWVudHMuLi4+JiBfX3QpIG5vZXhjZXB0CiAgICB7IHJldHVybiBz
dGQ6Ol9fZ2V0X2hlbHBlcjxfX2k+KF9fdCk7IH0KCgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9f
aSwgdHlwZW5hbWUuLi4gX0VsZW1lbnRzPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fYWRkX2Nf
cmVmPAogICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgdHVwbGVfZWxlbWVudDxfX2ksIHR1
cGxlPF9FbGVtZW50cy4uLj4+Ojp0eXBlCiAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQogICAg
Z2V0KGNvbnN0IHR1cGxlPF9FbGVtZW50cy4uLj4mIF9fdCkgbm9leGNlcHQKICAgIHsgcmV0dXJu
IHN0ZDo6X19nZXRfaGVscGVyPF9faT4oX190KTsgfQoKCiAgdGVtcGxhdGU8c3RkOjpzaXplX3Qg
X19pLCB0eXBlbmFtZS4uLiBfRWxlbWVudHM+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19hZGRf
cl9yZWY8CiAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSB0dXBsZV9lbGVtZW50PF9faSwg
dHVwbGU8X0VsZW1lbnRzLi4uPj46OnR5cGUKICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCiAg
ICBnZXQodHVwbGU8X0VsZW1lbnRzLi4uPiYmIF9fdCkgbm9leGNlcHQKICAgIHsgcmV0dXJuIHN0
ZDo6Zm9yd2FyZDx0eXBlbmFtZSB0dXBsZV9lbGVtZW50PF9faSwKIHR1cGxlPF9FbGVtZW50cy4u
Lj4+Ojp0eXBlJiY+KGdldDxfX2k+KF9fdCkpOyB9CiMgODEzICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3R1cGxlIiAzCiAgdGVtcGxhdGU8
c3RkOjpzaXplX3QgX19jaGVja19lcXVhbF9zaXplLCBzdGQ6OnNpemVfdCBfX2ksIHN0ZDo6c2l6
ZV90IF9faiwKICAgIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwPgogICAgc3RydWN0IF9fdHVw
bGVfY29tcGFyZTsKCiAgdGVtcGxhdGU8c3RkOjpzaXplX3QgX19pLCBzdGQ6OnNpemVfdCBfX2os
IHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwPgogICAgc3RydWN0IF9fdHVwbGVfY29tcGFyZTww
LCBfX2ksIF9faiwgX1RwLCBfVXA+CiAgICB7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbAog
ICAgICBfX2VxKGNvbnN0IF9UcCYgX190LCBjb25zdCBfVXAmIF9fdSkKICAgICAgewogcmV0dXJu
IChnZXQ8X19pPihfX3QpID09IGdldDxfX2k+KF9fdSkgJiYKICBfX3R1cGxlX2NvbXBhcmU8MCwg
X19pICsgMSwgX19qLCBfVHAsIF9VcD46Ol9fZXEoX190LCBfX3UpKTsKICAgICAgfQoKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sCiAgICAgIF9fbGVzcyhjb25zdCBfVHAmIF9fdCwgY29uc3Qg
X1VwJiBfX3UpCiAgICAgIHsKIHJldHVybiAoKGdldDxfX2k+KF9fdCkgPCBnZXQ8X19pPihfX3Up
KQogIHx8ICEoZ2V0PF9faT4oX191KSA8IGdldDxfX2k+KF9fdCkpICYmCiAgX190dXBsZV9jb21w
YXJlPDAsIF9faSArIDEsIF9faiwgX1RwLCBfVXA+OjpfX2xlc3MoX190LCBfX3UpKTsKICAgICAg
fQogICAgfTsKCiAgdGVtcGxhdGU8c3RkOjpzaXplX3QgX19pLCB0eXBlbmFtZSBfVHAsIHR5cGVu
YW1lIF9VcD4KICAgIHN0cnVjdCBfX3R1cGxlX2NvbXBhcmU8MCwgX19pLCBfX2ksIF9UcCwgX1Vw
PgogICAgewogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wKICAgICAgX19lcShjb25zdCBfVHAm
LCBjb25zdCBfVXAmKSB7IHJldHVybiB0cnVlOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wKICAgICAgX19sZXNzKGNvbnN0IF9UcCYsIGNvbnN0IF9VcCYpIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfVEVsZW1lbnRzLCB0eXBlbmFtZS4uLiBf
VUVsZW1lbnRzPgogICAgY29uc3RleHByIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgdHVwbGU8
X1RFbGVtZW50cy4uLj4mIF9fdCwKICAgICAgICBjb25zdCB0dXBsZTxfVUVsZW1lbnRzLi4uPiYg
X191KQogICAgewogICAgICB0eXBlZGVmIHR1cGxlPF9URWxlbWVudHMuLi4+IF9UcDsKICAgICAg
dHlwZWRlZiB0dXBsZTxfVUVsZW1lbnRzLi4uPiBfVXA7CiAgICAgIHJldHVybiBib29sKF9fdHVw
bGVfY29tcGFyZTx0dXBsZV9zaXplPF9UcD46OnZhbHVlIC0gdHVwbGVfc2l6ZTxfVXA+Ojp2YWx1
ZSwKICAgICAgIDAsIHR1cGxlX3NpemU8X1RwPjo6dmFsdWUsIF9UcCwgX1VwPjo6X19lcShfX3Qs
IF9fdSkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfVEVsZW1lbnRzLCB0eXBlbmFt
ZS4uLiBfVUVsZW1lbnRzPgogICAgY29uc3RleHByIGJvb2wKICAgIG9wZXJhdG9yPChjb25zdCB0
dXBsZTxfVEVsZW1lbnRzLi4uPiYgX190LAogICAgICAgY29uc3QgdHVwbGU8X1VFbGVtZW50cy4u
Lj4mIF9fdSkKICAgIHsKICAgICAgdHlwZWRlZiB0dXBsZTxfVEVsZW1lbnRzLi4uPiBfVHA7CiAg
ICAgIHR5cGVkZWYgdHVwbGU8X1VFbGVtZW50cy4uLj4gX1VwOwogICAgICByZXR1cm4gYm9vbChf
X3R1cGxlX2NvbXBhcmU8dHVwbGVfc2l6ZTxfVHA+Ojp2YWx1ZSAtIHR1cGxlX3NpemU8X1VwPjo6
dmFsdWUsCiAgICAgICAwLCB0dXBsZV9zaXplPF9UcD46OnZhbHVlLCBfVHAsIF9VcD46Ol9fbGVz
cyhfX3QsIF9fdSkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfVEVsZW1lbnRzLCB0
eXBlbmFtZS4uLiBfVUVsZW1lbnRzPgogICAgY29uc3RleHByIGJvb2wKICAgIG9wZXJhdG9yIT0o
Y29uc3QgdHVwbGU8X1RFbGVtZW50cy4uLj4mIF9fdCwKICAgICAgICBjb25zdCB0dXBsZTxfVUVs
ZW1lbnRzLi4uPiYgX191KQogICAgeyByZXR1cm4gIShfX3QgPT0gX191KTsgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBfVEVsZW1lbnRzLCB0eXBlbmFtZS4uLiBfVUVsZW1lbnRzPgogICAgY29u
c3RleHByIGJvb2wKICAgIG9wZXJhdG9yPihjb25zdCB0dXBsZTxfVEVsZW1lbnRzLi4uPiYgX190
LAogICAgICAgY29uc3QgdHVwbGU8X1VFbGVtZW50cy4uLj4mIF9fdSkKICAgIHsgcmV0dXJuIF9f
dSA8IF9fdDsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfVEVsZW1lbnRzLCB0eXBlbmFtZS4u
LiBfVUVsZW1lbnRzPgogICAgY29uc3RleHByIGJvb2wKICAgIG9wZXJhdG9yPD0oY29uc3QgdHVw
bGU8X1RFbGVtZW50cy4uLj4mIF9fdCwKICAgICAgICBjb25zdCB0dXBsZTxfVUVsZW1lbnRzLi4u
PiYgX191KQogICAgeyByZXR1cm4gIShfX3UgPCBfX3QpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIF9URWxlbWVudHMsIHR5cGVuYW1lLi4uIF9VRWxlbWVudHM+CiAgICBjb25zdGV4cHIgYm9v
bAogICAgb3BlcmF0b3I+PShjb25zdCB0dXBsZTxfVEVsZW1lbnRzLi4uPiYgX190LAogICAgICAg
IGNvbnN0IHR1cGxlPF9VRWxlbWVudHMuLi4+JiBfX3UpCiAgICB7IHJldHVybiAhKF9fdCA8IF9f
dSk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9FbGVtZW50cz4KICAgIGNvbnN0ZXhwciB0
dXBsZTx0eXBlbmFtZSBfX2RlY2F5X2FuZF9zdHJpcDxfRWxlbWVudHM+OjpfX3R5cGUuLi4+CiAg
ICBtYWtlX3R1cGxlKF9FbGVtZW50cyYmLi4uIF9fYXJncykKICAgIHsKICAgICAgdHlwZWRlZiB0
dXBsZTx0eXBlbmFtZSBfX2RlY2F5X2FuZF9zdHJpcDxfRWxlbWVudHM+OjpfX3R5cGUuLi4+CiBf
X3Jlc3VsdF90eXBlOwogICAgICByZXR1cm4gX19yZXN1bHRfdHlwZShzdGQ6OmZvcndhcmQ8X0Vs
ZW1lbnRzPihfX2FyZ3MpLi4uKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0VsZW1l
bnRzPgogICAgdHVwbGU8X0VsZW1lbnRzJiYuLi4+CiAgICBmb3J3YXJkX2FzX3R1cGxlKF9FbGVt
ZW50cyYmLi4uIF9fYXJncykgbm9leGNlcHQKICAgIHsgcmV0dXJuIHR1cGxlPF9FbGVtZW50cyYm
Li4uPihzdGQ6OmZvcndhcmQ8X0VsZW1lbnRzPihfX2FyZ3MpLi4uKTsgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZT4KICAgIHN0cnVjdCBfX2lzX3R1cGxlX2xpa2VfaW1wbCA6IGZhbHNlX3R5cGUKICAg
IHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX1Rwcz4KICAgIHN0cnVjdCBfX2lzX3R1cGxl
X2xpa2VfaW1wbDx0dXBsZTxfVHBzLi4uPj4gOiB0cnVlX3R5cGUKICAgIHsgfTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1QxLCB0eXBlbmFtZSBfVDI+CiAgICBzdHJ1Y3QgX19pc190dXBsZV9saWtl
X2ltcGw8cGFpcjxfVDEsIF9UMj4+IDogdHJ1ZV90eXBlCiAgICB7IH07CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcCwgc3RkOjpzaXplX3QgX05tPgogICAgc3RydWN0IF9faXNfdHVwbGVfbGlrZV9p
bXBsPGFycmF5PF9UcCwgX05tPj4gOiB0cnVlX3R5cGUKICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX3R1cGxlX2xpa2UKICAgIDogcHVibGljIF9faXNf
dHVwbGVfbGlrZV9pbXBsPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2CiAgICAgICAgICAgIDx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8X1RwPjo6dHlwZT46OnR5cGU+Ojp0eXBlCiAgICB7
IH07CgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90LCB0eXBlbmFtZSwgdHlwZW5hbWUsIHN0ZDo6c2l6
ZV90PgogICAgc3RydWN0IF9fbWFrZV90dXBsZV9pbXBsOwoKICB0ZW1wbGF0ZTxzdGQ6OnNpemVf
dCBfSWR4LCB0eXBlbmFtZSBfVHVwbGUsIHR5cGVuYW1lLi4uIF9UcCwKICAgICAgICAgICBzdGQ6
OnNpemVfdCBfTm0+CiAgICBzdHJ1Y3QgX19tYWtlX3R1cGxlX2ltcGw8X0lkeCwgdHVwbGU8X1Rw
Li4uPiwgX1R1cGxlLCBfTm0+CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19tYWtlX3R1
cGxlX2ltcGw8X0lkeCArIDEsIHR1cGxlPF9UcC4uLiwKIHR5cGVuYW1lIHN0ZDo6dHVwbGVfZWxl
bWVudDxfSWR4LCBfVHVwbGU+Ojp0eXBlPiwgX1R1cGxlLCBfTm0+OjpfX3R5cGUKICAgICAgX190
eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8c3RkOjpzaXplX3QgX05tLCB0eXBlbmFtZSBfVHVwbGUs
IHR5cGVuYW1lLi4uIF9UcD4KICAgIHN0cnVjdCBfX21ha2VfdHVwbGVfaW1wbDxfTm0sIHR1cGxl
PF9UcC4uLj4sIF9UdXBsZSwgX05tPgogICAgewogICAgICB0eXBlZGVmIHR1cGxlPF9UcC4uLj4g
X190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1R1cGxlPgogICAgc3RydWN0IF9f
ZG9fbWFrZV90dXBsZQogICAgOiBwdWJsaWMgX19tYWtlX3R1cGxlX2ltcGw8MCwgdHVwbGU8Piwg
X1R1cGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp0dXBsZV9zaXplPF9U
dXBsZT46OnZhbHVlPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1R1cGxlPgogICAg
c3RydWN0IF9fbWFrZV90dXBsZQogICAgOiBwdWJsaWMgX19kb19tYWtlX3R1cGxlPHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX2N2CiAgICAgICAgICAgIDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVu
Y2U8X1R1cGxlPjo6dHlwZT46OnR5cGU+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
Lj4KICAgIHN0cnVjdCBfX2NvbWJpbmVfdHVwbGVzOwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3Qg
X19jb21iaW5lX3R1cGxlczw+CiAgICB7CiAgICAgIHR5cGVkZWYgdHVwbGU8PiBfX3R5cGU7CiAg
ICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfVHM+CiAgICBzdHJ1Y3QgX19jb21iaW5lX3R1
cGxlczx0dXBsZTxfVHMuLi4+PgogICAgewogICAgICB0eXBlZGVmIHR1cGxlPF9Ucy4uLj4gX190
eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX1QxcywgdHlwZW5hbWUuLi4gX1Qy
cywgdHlwZW5hbWUuLi4gX1JlbT4KICAgIHN0cnVjdCBfX2NvbWJpbmVfdHVwbGVzPHR1cGxlPF9U
MXMuLi4+LCB0dXBsZTxfVDJzLi4uPiwgX1JlbS4uLj4KICAgIHsKICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBfX2NvbWJpbmVfdHVwbGVzPHR1cGxlPF9UMXMuLi4sIF9UMnMuLi4+LAogICAgIF9SZW0u
Li4+OjpfX3R5cGUgX190eXBlOwogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9UcGxz
PgogICAgc3RydWN0IF9fdHVwbGVfY2F0X3Jlc3VsdAogICAgewogICAgICB0eXBlZGVmIHR5cGVu
YW1lIF9fY29tYmluZV90dXBsZXMKICAgICAgICA8dHlwZW5hbWUgX19tYWtlX3R1cGxlPF9UcGxz
Pjo6X190eXBlLi4uPjo6X190eXBlIF9fdHlwZTsKICAgIH07CgoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUuLi4+CiAgICBzdHJ1Y3QgX19tYWtlXzFzdF9pbmRpY2VzOwoKICB0ZW1wbGF0ZTw+CiAgICBz
dHJ1Y3QgX19tYWtlXzFzdF9pbmRpY2VzPD4KICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6Ol9JbmRl
eF90dXBsZTw+IF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5h
bWUuLi4gX1RwbHM+CiAgICBzdHJ1Y3QgX19tYWtlXzFzdF9pbmRpY2VzPF9UcCwgX1RwbHMuLi4+
CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpfQnVpbGRfaW5kZXhfdHVwbGU8c3Rk
Ojp0dXBsZV9zaXplPAogdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPF9UcD46OnR5cGU+
Ojp2YWx1ZT46Ol9fdHlwZSBfX3R5cGU7CiAgICB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
UmV0LCB0eXBlbmFtZSBfSW5kaWNlcywgdHlwZW5hbWUuLi4gX1RwbHM+CiAgICBzdHJ1Y3QgX190
dXBsZV9jb25jYXRlcjsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JldCwgc3RkOjpzaXplX3QuLi4g
X0lzLCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4uIF9UcGxzPgogICAgc3RydWN0IF9fdHVwbGVf
Y29uY2F0ZXI8X1JldCwgc3RkOjpfSW5kZXhfdHVwbGU8X0lzLi4uPiwgX1RwLCBfVHBscy4uLj4K
ICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX1VzPgogICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgX1JldAogICAgICAgIF9TX2RvKF9UcCYmIF9fdHAsIF9UcGxzJiYuLi4gX190cHMsIF9V
cyYmLi4uIF9fdXMpCiAgICAgICAgewogICB0eXBlZGVmIHR5cGVuYW1lIF9fbWFrZV8xc3RfaW5k
aWNlczxfVHBscy4uLj46Ol9fdHlwZSBfX2lkeDsKICAgdHlwZWRlZiBfX3R1cGxlX2NvbmNhdGVy
PF9SZXQsIF9faWR4LCBfVHBscy4uLj4gX19uZXh0OwogICByZXR1cm4gX19uZXh0OjpfU19kbyhz
dGQ6OmZvcndhcmQ8X1RwbHM+KF9fdHBzKS4uLiwKICAgICAgICAgIHN0ZDo6Zm9yd2FyZDxfVXM+
KF9fdXMpLi4uLAogICAgICAgICAgc3RkOjpnZXQ8X0lzPihzdGQ6OmZvcndhcmQ8X1RwPihfX3Rw
KSkuLi4pOwogfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JldD4KICAgIHN0cnVjdCBf
X3R1cGxlX2NvbmNhdGVyPF9SZXQsIHN0ZDo6X0luZGV4X3R1cGxlPD4+CiAgICB7CiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIF9Vcz4KIHN0YXRpYyBjb25zdGV4cHIgX1JldAogX1NfZG8oX1Vz
JiYuLi4gX191cykKICAgICAgICB7CiAgIHJldHVybiBfUmV0KHN0ZDo6Zm9yd2FyZDxfVXM+KF9f
dXMpLi4uKTsKIH0KICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfVHBscywgdHlwZW5h
bWUgPSB0eXBlbmFtZQogICAgICAgICAgIGVuYWJsZV9pZjxfX2FuZF88X19pc190dXBsZV9saWtl
PF9UcGxzPi4uLj46OnZhbHVlPjo6dHlwZT4KICAgIGNvbnN0ZXhwciBhdXRvCiAgICB0dXBsZV9j
YXQoX1RwbHMmJi4uLiBfX3RwbHMpCiAgICAtPiB0eXBlbmFtZSBfX3R1cGxlX2NhdF9yZXN1bHQ8
X1RwbHMuLi4+OjpfX3R5cGUKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX3R1cGxlX2Nh
dF9yZXN1bHQ8X1RwbHMuLi4+OjpfX3R5cGUgX19yZXQ7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
X19tYWtlXzFzdF9pbmRpY2VzPF9UcGxzLi4uPjo6X190eXBlIF9faWR4OwogICAgICB0eXBlZGVm
IF9fdHVwbGVfY29uY2F0ZXI8X19yZXQsIF9faWR4LCBfVHBscy4uLj4gX19jb25jYXRlcjsKICAg
ICAgcmV0dXJuIF9fY29uY2F0ZXI6Ol9TX2RvKHN0ZDo6Zm9yd2FyZDxfVHBscz4oX190cGxzKS4u
Lik7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfRWxlbWVudHM+CiAgICBpbmxpbmUg
dHVwbGU8X0VsZW1lbnRzJi4uLj4KICAgIHRpZShfRWxlbWVudHMmLi4uIF9fYXJncykgbm9leGNl
cHQKICAgIHsgcmV0dXJuIHR1cGxlPF9FbGVtZW50cyYuLi4+KF9fYXJncy4uLik7IH0KCgogIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIF9FbGVtZW50cz4KICAgIGlubGluZSB2b2lkCiAgICBzd2FwKHR1
cGxlPF9FbGVtZW50cy4uLj4mIF9feCwgdHVwbGU8X0VsZW1lbnRzLi4uPiYgX195KQogICAgbm9l
eGNlcHQobm9leGNlcHQoX194LnN3YXAoX195KSkpCiAgICB7IF9feC5zd2FwKF9feSk7IH0KCgoK
ICBzdHJ1Y3QgX1N3YWxsb3dfYXNzaWduCiAgewogICAgdGVtcGxhdGU8Y2xhc3MgX1RwPgogICAg
ICBjb25zdCBfU3dhbGxvd19hc3NpZ24mCiAgICAgIG9wZXJhdG9yPShjb25zdCBfVHAmKSBjb25z
dAogICAgICB7IHJldHVybiAqdGhpczsgfQogIH07CgogIGNvbnN0IF9Td2FsbG93X2Fzc2lnbiBp
Z25vcmV7fTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9UeXBlcywgdHlwZW5hbWUgX0FsbG9j
PgogICAgc3RydWN0IHVzZXNfYWxsb2NhdG9yPHR1cGxlPF9UeXBlcy4uLj4sIF9BbGxvYz4gOiB0
cnVlX3R5cGUgeyB9OwoKCiAgdGVtcGxhdGU8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBfQXJnczEsIHR5cGVuYW1lLi4uIF9BcmdzMj4KICAgICAgaW5saW5l
CiAgICAgIHBhaXI8X1QxLCBfVDI+OjoKICAgICAgcGFpcihwaWVjZXdpc2VfY29uc3RydWN0X3Qs
CiAgICB0dXBsZTxfQXJnczEuLi4+IF9fZmlyc3QsIHR1cGxlPF9BcmdzMi4uLj4gX19zZWNvbmQp
CiAgICAgIDogcGFpcihfX2ZpcnN0LCBfX3NlY29uZCwKICAgICAgdHlwZW5hbWUgX0J1aWxkX2lu
ZGV4X3R1cGxlPHNpemVvZi4uLihfQXJnczEpPjo6X190eXBlKCksCiAgICAgIHR5cGVuYW1lIF9C
dWlsZF9pbmRleF90dXBsZTxzaXplb2YuLi4oX0FyZ3MyKT46Ol9fdHlwZSgpKQogICAgICB7IH0K
CiAgdGVtcGxhdGU8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBfQXJnczEsIHN0ZDo6c2l6ZV90Li4uIF9JbmRleGVzMSwKICAgICAgICAgICAgIHR5cGVuYW1l
Li4uIF9BcmdzMiwgc3RkOjpzaXplX3QuLi4gX0luZGV4ZXMyPgogICAgICBpbmxpbmUKICAgICAg
cGFpcjxfVDEsIF9UMj46OgogICAgICBwYWlyKHR1cGxlPF9BcmdzMS4uLj4mIF9fdHVwbGUxLCB0
dXBsZTxfQXJnczIuLi4+JiBfX3R1cGxlMiwKICAgIF9JbmRleF90dXBsZTxfSW5kZXhlczEuLi4+
LCBfSW5kZXhfdHVwbGU8X0luZGV4ZXMyLi4uPikKICAgICAgOiBmaXJzdChzdGQ6OmZvcndhcmQ8
X0FyZ3MxPihzdGQ6OmdldDxfSW5kZXhlczE+KF9fdHVwbGUxKSkuLi4pLAogICAgICAgIHNlY29u
ZChzdGQ6OmZvcndhcmQ8X0FyZ3MyPihzdGQ6OmdldDxfSW5kZXhlczI+KF9fdHVwbGUyKSkuLi4p
CiAgICAgIHsgfQoKCgoKfQojIDU2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2Z1bmN0aW9uYWwiIDIgMwoKCgoKbmFtZXNwYWNlIHN0ZCBf
X2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfTWVtYmVyUG9pbnRlcj4KICAgIGNsYXNzIF9NZW1fZm47CiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ2xhc3M+CiAgICBfTWVtX2ZuPF9UcCBfQ2xhc3M6Oio+
CiAgICBtZW1fZm4oX1RwIF9DbGFzczo6Kikgbm9leGNlcHQ7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+IGNsYXNzIF9faGFzX3Jlc3VsdF90eXBlX2hlbHBlciB7IHRlbXBsYXRlPHR5cGVuYW1lIF9V
cD4gc3RydWN0IF9XcmFwX3R5cGUgeyB9OyB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+IHN0YXRpYyB0
cnVlX3R5cGUgX190ZXN0KF9XcmFwX3R5cGU8dHlwZW5hbWUgX1VwOjpyZXN1bHRfdHlwZT4qKTsg
dGVtcGxhdGU8dHlwZW5hbWUgX1VwPiBzdGF0aWMgZmFsc2VfdHlwZSBfX3Rlc3QoLi4uKTsgcHVi
bGljOiB0eXBlZGVmIGRlY2x0eXBlKF9fdGVzdDxfVHA+KDApKSB0eXBlOyB9OyB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+IHN0cnVjdCBfX2hhc19yZXN1bHRfdHlwZSA6IHB1YmxpYyBfX2hhc19yZXN1
bHRfdHlwZV9oZWxwZXIgPHR5cGVuYW1lIHJlbW92ZV9jdjxfVHA+Ojp0eXBlPjo6dHlwZSB7IH07
CgoKICB0ZW1wbGF0ZTxib29sIF9IYXNfcmVzdWx0X3R5cGUsIHR5cGVuYW1lIF9GdW5jdG9yPgog
ICAgc3RydWN0IF9NYXliZV9nZXRfcmVzdWx0X3R5cGUKICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0Z1bmN0b3I+CiAgICBzdHJ1Y3QgX01heWJlX2dldF9yZXN1bHRfdHlwZTx0cnVlLCBf
RnVuY3Rvcj4KICAgIHsgdHlwZWRlZiB0eXBlbmFtZSBfRnVuY3Rvcjo6cmVzdWx0X3R5cGUgcmVz
dWx0X3R5cGU7IH07CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnVuY3Rvcj4KICAgIHN0cnVj
dCBfV2Vha19yZXN1bHRfdHlwZV9pbXBsCiAgICA6IF9NYXliZV9nZXRfcmVzdWx0X3R5cGU8X19o
YXNfcmVzdWx0X3R5cGU8X0Z1bmN0b3I+Ojp2YWx1ZSwgX0Z1bmN0b3I+CiAgICB7IH07CgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3Qg
X1dlYWtfcmVzdWx0X3R5cGVfaW1wbDxfUmVzKF9BcmdUeXBlcy4uLik+CiAgICB7IHR5cGVkZWYg
X1JlcyByZXN1bHRfdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUu
Li4gX0FyZ1R5cGVzPgogICAgc3RydWN0IF9XZWFrX3Jlc3VsdF90eXBlX2ltcGw8X1JlcyhfQXJn
VHlwZXMuLi4uLi4pPgogICAgeyB0eXBlZGVmIF9SZXMgcmVzdWx0X3R5cGU7IH07CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAgIHN0cnVjdCBfV2Vh
a19yZXN1bHRfdHlwZV9pbXBsPF9SZXMoX0FyZ1R5cGVzLi4uKSBjb25zdD4KICAgIHsgdHlwZWRl
ZiBfUmVzIHJlc3VsdF90eXBlOyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFt
ZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgX1dlYWtfcmVzdWx0X3R5cGVfaW1wbDxfUmVzKF9B
cmdUeXBlcy4uLi4uLikgY29uc3Q+CiAgICB7IHR5cGVkZWYgX1JlcyByZXN1bHRfdHlwZTsgfTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3Ry
dWN0IF9XZWFrX3Jlc3VsdF90eXBlX2ltcGw8X1JlcyhfQXJnVHlwZXMuLi4pIHZvbGF0aWxlPgog
ICAgeyB0eXBlZGVmIF9SZXMgcmVzdWx0X3R5cGU7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
ZXMsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAgIHN0cnVjdCBfV2Vha19yZXN1bHRfdHlwZV9p
bXBsPF9SZXMoX0FyZ1R5cGVzLi4uLi4uKSB2b2xhdGlsZT4KICAgIHsgdHlwZWRlZiBfUmVzIHJl
c3VsdF90eXBlOyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJn
VHlwZXM+CiAgICBzdHJ1Y3QgX1dlYWtfcmVzdWx0X3R5cGVfaW1wbDxfUmVzKF9BcmdUeXBlcy4u
LikgY29uc3Qgdm9sYXRpbGU+CiAgICB7IHR5cGVkZWYgX1JlcyByZXN1bHRfdHlwZTsgfTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3RydWN0
IF9XZWFrX3Jlc3VsdF90eXBlX2ltcGw8X1JlcyhfQXJnVHlwZXMuLi4uLi4pIGNvbnN0IHZvbGF0
aWxlPgogICAgeyB0eXBlZGVmIF9SZXMgcmVzdWx0X3R5cGU7IH07CgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgX1dlYWtfcmVzdWx0
X3R5cGVfaW1wbDxfUmVzKCYpKF9BcmdUeXBlcy4uLik+CiAgICB7IHR5cGVkZWYgX1JlcyByZXN1
bHRfdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0FyZ1R5
cGVzPgogICAgc3RydWN0IF9XZWFrX3Jlc3VsdF90eXBlX2ltcGw8X1JlcygmKShfQXJnVHlwZXMu
Li4uLi4pPgogICAgeyB0eXBlZGVmIF9SZXMgcmVzdWx0X3R5cGU7IH07CgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgX1dlYWtfcmVz
dWx0X3R5cGVfaW1wbDxfUmVzKCopKF9BcmdUeXBlcy4uLik+CiAgICB7IHR5cGVkZWYgX1JlcyBy
ZXN1bHRfdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0Fy
Z1R5cGVzPgogICAgc3RydWN0IF9XZWFrX3Jlc3VsdF90eXBlX2ltcGw8X1JlcygqKShfQXJnVHlw
ZXMuLi4uLi4pPgogICAgeyB0eXBlZGVmIF9SZXMgcmVzdWx0X3R5cGU7IH07CgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBfQ2xhc3MsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4K
ICAgIHN0cnVjdCBfV2Vha19yZXN1bHRfdHlwZV9pbXBsPF9SZXMgKF9DbGFzczo6KikoX0FyZ1R5
cGVzLi4uKT4KICAgIHsgdHlwZWRlZiBfUmVzIHJlc3VsdF90eXBlOyB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBfQ2xhc3MsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAg
IHN0cnVjdCBfV2Vha19yZXN1bHRfdHlwZV9pbXBsPF9SZXMgKF9DbGFzczo6KikoX0FyZ1R5cGVz
Li4uLi4uKT4KICAgIHsgdHlwZWRlZiBfUmVzIHJlc3VsdF90eXBlOyB9OwoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUgX0NsYXNzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAg
ICBzdHJ1Y3QgX1dlYWtfcmVzdWx0X3R5cGVfaW1wbDxfUmVzIChfQ2xhc3M6OiopKF9BcmdUeXBl
cy4uLikgY29uc3Q+CiAgICB7IHR5cGVkZWYgX1JlcyByZXN1bHRfdHlwZTsgfTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUgX0NsYXNzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+
CiAgICBzdHJ1Y3QgX1dlYWtfcmVzdWx0X3R5cGVfaW1wbDxfUmVzIChfQ2xhc3M6OiopKF9BcmdU
eXBlcy4uLi4uLikgY29uc3Q+CiAgICB7IHR5cGVkZWYgX1JlcyByZXN1bHRfdHlwZTsgfTsKCgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lIF9DbGFzcywgdHlwZW5hbWUuLi4gX0Fy
Z1R5cGVzPgogICAgc3RydWN0IF9XZWFrX3Jlc3VsdF90eXBlX2ltcGw8X1JlcyAoX0NsYXNzOjoq
KShfQXJnVHlwZXMuLi4pIHZvbGF0aWxlPgogICAgeyB0eXBlZGVmIF9SZXMgcmVzdWx0X3R5cGU7
IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lIF9DbGFzcywgdHlwZW5hbWUu
Li4gX0FyZ1R5cGVzPgogICAgc3RydWN0IF9XZWFrX3Jlc3VsdF90eXBlX2ltcGw8X1JlcyAoX0Ns
YXNzOjoqKShfQXJnVHlwZXMuLi4uLi4pIHZvbGF0aWxlPgogICAgeyB0eXBlZGVmIF9SZXMgcmVz
dWx0X3R5cGU7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBfQ2xhc3Ms
IHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAgIHN0cnVjdCBfV2Vha19yZXN1bHRfdHlwZV9pbXBs
PF9SZXMgKF9DbGFzczo6KikoX0FyZ1R5cGVzLi4uKQogICAgICBjb25zdCB2b2xhdGlsZT4KICAg
IHsgdHlwZWRlZiBfUmVzIHJlc3VsdF90eXBlOyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVz
LCB0eXBlbmFtZSBfQ2xhc3MsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAgIHN0cnVjdCBfV2Vh
a19yZXN1bHRfdHlwZV9pbXBsPF9SZXMgKF9DbGFzczo6KikoX0FyZ1R5cGVzLi4uLi4uKQogICAg
ICBjb25zdCB2b2xhdGlsZT4KICAgIHsgdHlwZWRlZiBfUmVzIHJlc3VsdF90eXBlOyB9OwoKCgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmN0b3I+CiAgICBzdHJ1Y3QgX1dlYWtfcmVzdWx0X3R5
cGUKICAgIDogX1dlYWtfcmVzdWx0X3R5cGVfaW1wbDx0eXBlbmFtZSByZW1vdmVfY3Y8X0Z1bmN0
b3I+Ojp0eXBlPgogICAgeyB9OwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmN0b3IsIHR5
cGVuYW1lLi4uIF9BcmdzPgogICAgaW5saW5lCiAgICB0eXBlbmFtZSBlbmFibGVfaWY8CiAgICAg
ICghaXNfbWVtYmVyX3BvaW50ZXI8X0Z1bmN0b3I+Ojp2YWx1ZQogICAgICAgJiYgIWlzX2Z1bmN0
aW9uPF9GdW5jdG9yPjo6dmFsdWUKICAgICAgICYmICFpc19mdW5jdGlvbjx0eXBlbmFtZSByZW1v
dmVfcG9pbnRlcjxfRnVuY3Rvcj46OnR5cGU+Ojp2YWx1ZSksCiAgICAgIHR5cGVuYW1lIHJlc3Vs
dF9vZjxfRnVuY3RvciYoX0FyZ3MmJi4uLik+Ojp0eXBlCiAgICA+Ojp0eXBlCiAgICBfX2ludm9r
ZShfRnVuY3RvciYgX19mLCBfQXJncyYmLi4uIF9fYXJncykKICAgIHsKICAgICAgcmV0dXJuIF9f
ZihzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfRnVuY3RvciwgdHlwZW5hbWUuLi4gX0FyZ3M+CiAgICBpbmxpbmUKICAgIHR5cGVuYW1l
IGVuYWJsZV9pZjwKICAgICAgICAgICAgIChpc19tZW1iZXJfcG9pbnRlcjxfRnVuY3Rvcj46OnZh
bHVlCiAgICAgICAgICAgICAgJiYgIWlzX2Z1bmN0aW9uPF9GdW5jdG9yPjo6dmFsdWUKICAgICAg
ICAgICAgICAmJiAhaXNfZnVuY3Rpb248dHlwZW5hbWUgcmVtb3ZlX3BvaW50ZXI8X0Z1bmN0b3I+
Ojp0eXBlPjo6dmFsdWUpLAogICAgICAgICAgICAgdHlwZW5hbWUgcmVzdWx0X29mPF9GdW5jdG9y
KF9BcmdzJiYuLi4pPjo6dHlwZQogICAgICAgICAgID46OnR5cGUKICAgIF9faW52b2tlKF9GdW5j
dG9yJiBfX2YsIF9BcmdzJiYuLi4gX19hcmdzKQogICAgewogICAgICByZXR1cm4gc3RkOjptZW1f
Zm4oX19mKShzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOwogICAgfQoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0Z1bmN0b3IsIHR5cGVuYW1lLi4uIF9BcmdzPgogICAgaW5saW5lCiAgICB0
eXBlbmFtZSBlbmFibGVfaWY8CiAgICAgIChpc19wb2ludGVyPF9GdW5jdG9yPjo6dmFsdWUKICAg
ICAgICYmIGlzX2Z1bmN0aW9uPHR5cGVuYW1lIHJlbW92ZV9wb2ludGVyPF9GdW5jdG9yPjo6dHlw
ZT46OnZhbHVlKSwKICAgICAgdHlwZW5hbWUgcmVzdWx0X29mPF9GdW5jdG9yKF9BcmdzJiYuLi4p
Pjo6dHlwZQogICAgPjo6dHlwZQogICAgX19pbnZva2UoX0Z1bmN0b3IgX19mLCBfQXJncyYmLi4u
IF9fYXJncykKICAgIHsKICAgICAgcmV0dXJuIF9fZihzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJn
cykuLi4pOwogICAgfQoKCgoKCgogIHRlbXBsYXRlPGJvb2wgX1VuYXJ5LCBib29sIF9CaW5hcnks
IHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfUmVmZXJlbmNlX3dyYXBwZXJfYmFzZV9pbXBsOwoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9SZWZlcmVuY2Vfd3JhcHBlcl9i
YXNlX2ltcGw8ZmFsc2UsIGZhbHNlLCBfVHA+CiAgICA6IF9XZWFrX3Jlc3VsdF90eXBlPF9UcD4K
ICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfUmVmZXJlbmNl
X3dyYXBwZXJfYmFzZV9pbXBsPHRydWUsIGZhbHNlLCBfVHA+CiAgICA6IF9XZWFrX3Jlc3VsdF90
eXBlPF9UcD4KICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHA6OmFyZ3VtZW50X3R5cGUg
YXJndW1lbnRfdHlwZTsKICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1
Y3QgX1JlZmVyZW5jZV93cmFwcGVyX2Jhc2VfaW1wbDxmYWxzZSwgdHJ1ZSwgX1RwPgogICAgOiBf
V2Vha19yZXN1bHRfdHlwZTxfVHA+CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1RwOjpm
aXJzdF9hcmd1bWVudF90eXBlIGZpcnN0X2FyZ3VtZW50X3R5cGU7CiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX1RwOjpzZWNvbmRfYXJndW1lbnRfdHlwZSBzZWNvbmRfYXJndW1lbnRfdHlwZTsKICAg
IH07CgoKICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9SZWZlcmVuY2Vfd3Jh
cHBlcl9iYXNlX2ltcGw8dHJ1ZSwgdHJ1ZSwgX1RwPgogICAgOiBfV2Vha19yZXN1bHRfdHlwZTxf
VHA+CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1RwOjphcmd1bWVudF90eXBlIGFyZ3Vt
ZW50X3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1RwOjpmaXJzdF9hcmd1bWVudF90eXBl
IGZpcnN0X2FyZ3VtZW50X3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1RwOjpzZWNvbmRf
YXJndW1lbnRfdHlwZSBzZWNvbmRfYXJndW1lbnRfdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4gY2xhc3MgX19oYXNfYXJndW1lbnRfdHlwZV9oZWxwZXIgeyB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVXA+IHN0cnVjdCBfV3JhcF90eXBlIHsgfTsgdGVtcGxhdGU8dHlwZW5hbWUgX1Vw
PiBzdGF0aWMgdHJ1ZV90eXBlIF9fdGVzdChfV3JhcF90eXBlPHR5cGVuYW1lIF9VcDo6YXJndW1l
bnRfdHlwZT4qKTsgdGVtcGxhdGU8dHlwZW5hbWUgX1VwPiBzdGF0aWMgZmFsc2VfdHlwZSBfX3Rl
c3QoLi4uKTsgcHVibGljOiB0eXBlZGVmIGRlY2x0eXBlKF9fdGVzdDxfVHA+KDApKSB0eXBlOyB9
OyB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHN0cnVjdCBfX2hhc19hcmd1bWVudF90eXBlIDogcHVi
bGljIF9faGFzX2FyZ3VtZW50X3R5cGVfaGVscGVyIDx0eXBlbmFtZSByZW1vdmVfY3Y8X1RwPjo6
dHlwZT46OnR5cGUgeyB9OwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gY2xhc3MgX19oYXNfZmly
c3RfYXJndW1lbnRfdHlwZV9oZWxwZXIgeyB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+IHN0cnVjdCBf
V3JhcF90eXBlIHsgfTsgdGVtcGxhdGU8dHlwZW5hbWUgX1VwPiBzdGF0aWMgdHJ1ZV90eXBlIF9f
dGVzdChfV3JhcF90eXBlPHR5cGVuYW1lIF9VcDo6Zmlyc3RfYXJndW1lbnRfdHlwZT4qKTsgdGVt
cGxhdGU8dHlwZW5hbWUgX1VwPiBzdGF0aWMgZmFsc2VfdHlwZSBfX3Rlc3QoLi4uKTsgcHVibGlj
OiB0eXBlZGVmIGRlY2x0eXBlKF9fdGVzdDxfVHA+KDApKSB0eXBlOyB9OyB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+IHN0cnVjdCBfX2hhc19maXJzdF9hcmd1bWVudF90eXBlIDogcHVibGljIF9faGFz
X2ZpcnN0X2FyZ3VtZW50X3R5cGVfaGVscGVyIDx0eXBlbmFtZSByZW1vdmVfY3Y8X1RwPjo6dHlw
ZT46OnR5cGUgeyB9OwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gY2xhc3MgX19oYXNfc2Vjb25k
X2FyZ3VtZW50X3R5cGVfaGVscGVyIHsgdGVtcGxhdGU8dHlwZW5hbWUgX1VwPiBzdHJ1Y3QgX1dy
YXBfdHlwZSB7IH07IHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4gc3RhdGljIHRydWVfdHlwZSBfX3Rl
c3QoX1dyYXBfdHlwZTx0eXBlbmFtZSBfVXA6OnNlY29uZF9hcmd1bWVudF90eXBlPiopOyB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVXA+IHN0YXRpYyBmYWxzZV90eXBlIF9fdGVzdCguLi4pOyBwdWJsaWM6
IHR5cGVkZWYgZGVjbHR5cGUoX190ZXN0PF9UcD4oMCkpIHR5cGU7IH07IHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4gc3RydWN0IF9faGFzX3NlY29uZF9hcmd1bWVudF90eXBlIDogcHVibGljIF9faGFz
X3NlY29uZF9hcmd1bWVudF90eXBlX2hlbHBlciA8dHlwZW5hbWUgcmVtb3ZlX2N2PF9UcD46OnR5
cGU+Ojp0eXBlIHsgfTsKCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0
IF9SZWZlcmVuY2Vfd3JhcHBlcl9iYXNlCiAgICA6IF9SZWZlcmVuY2Vfd3JhcHBlcl9iYXNlX2lt
cGw8CiAgICAgIF9faGFzX2FyZ3VtZW50X3R5cGU8X1RwPjo6dmFsdWUsCiAgICAgIF9faGFzX2Zp
cnN0X2FyZ3VtZW50X3R5cGU8X1RwPjo6dmFsdWUKICAgICAgJiYgX19oYXNfc2Vjb25kX2FyZ3Vt
ZW50X3R5cGU8X1RwPjo6dmFsdWUsCiAgICAgIF9UcD4KICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9SZXMsIHR5cGVuYW1lIF9UMT4KICAgIHN0cnVjdCBfUmVmZXJlbmNlX3dyYXBwZXJf
YmFzZTxfUmVzKF9UMSk+CiAgICA6IHVuYXJ5X2Z1bmN0aW9uPF9UMSwgX1Jlcz4KICAgIHsgfTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUgX1QxPgogICAgc3RydWN0IF9SZWZl
cmVuY2Vfd3JhcHBlcl9iYXNlPF9SZXMoX1QxKSBjb25zdD4KICAgIDogdW5hcnlfZnVuY3Rpb248
X1QxLCBfUmVzPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBf
VDE+CiAgICBzdHJ1Y3QgX1JlZmVyZW5jZV93cmFwcGVyX2Jhc2U8X1JlcyhfVDEpIHZvbGF0aWxl
PgogICAgOiB1bmFyeV9mdW5jdGlvbjxfVDEsIF9SZXM+CiAgICB7IH07CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9SZXMsIHR5cGVuYW1lIF9UMT4KICAgIHN0cnVjdCBfUmVmZXJlbmNlX3dyYXBwZXJf
YmFzZTxfUmVzKF9UMSkgY29uc3Qgdm9sYXRpbGU+CiAgICA6IHVuYXJ5X2Z1bmN0aW9uPF9UMSwg
X1Jlcz4KICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lIF9UMSwg
dHlwZW5hbWUgX1QyPgogICAgc3RydWN0IF9SZWZlcmVuY2Vfd3JhcHBlcl9iYXNlPF9SZXMoX1Qx
LCBfVDIpPgogICAgOiBiaW5hcnlfZnVuY3Rpb248X1QxLCBfVDIsIF9SZXM+CiAgICB7IH07Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lIF9UMSwgdHlwZW5hbWUgX1QyPgogICAg
c3RydWN0IF9SZWZlcmVuY2Vfd3JhcHBlcl9iYXNlPF9SZXMoX1QxLCBfVDIpIGNvbnN0PgogICAg
OiBiaW5hcnlfZnVuY3Rpb248X1QxLCBfVDIsIF9SZXM+CiAgICB7IH07CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9SZXMsIHR5cGVuYW1lIF9UMSwgdHlwZW5hbWUgX1QyPgogICAgc3RydWN0IF9SZWZl
cmVuY2Vfd3JhcHBlcl9iYXNlPF9SZXMoX1QxLCBfVDIpIHZvbGF0aWxlPgogICAgOiBiaW5hcnlf
ZnVuY3Rpb248X1QxLCBfVDIsIF9SZXM+CiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
ZXMsIHR5cGVuYW1lIF9UMSwgdHlwZW5hbWUgX1QyPgogICAgc3RydWN0IF9SZWZlcmVuY2Vfd3Jh
cHBlcl9iYXNlPF9SZXMoX1QxLCBfVDIpIGNvbnN0IHZvbGF0aWxlPgogICAgOiBiaW5hcnlfZnVu
Y3Rpb248X1QxLCBfVDIsIF9SZXM+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVz
LCB0eXBlbmFtZSBfVDE+CiAgICBzdHJ1Y3QgX1JlZmVyZW5jZV93cmFwcGVyX2Jhc2U8X1Jlcygq
KShfVDEpPgogICAgOiB1bmFyeV9mdW5jdGlvbjxfVDEsIF9SZXM+CiAgICB7IH07CgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBfVDEsIHR5cGVuYW1lIF9UMj4KICAgIHN0cnVj
dCBfUmVmZXJlbmNlX3dyYXBwZXJfYmFzZTxfUmVzKCopKF9UMSwgX1QyKT4KICAgIDogYmluYXJ5
X2Z1bmN0aW9uPF9UMSwgX1QyLCBfUmVzPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JlcywgdHlwZW5hbWUgX1QxPgogICAgc3RydWN0IF9SZWZlcmVuY2Vfd3JhcHBlcl9iYXNlPF9S
ZXMgKF9UMTo6KikoKT4KICAgIDogdW5hcnlfZnVuY3Rpb248X1QxKiwgX1Jlcz4KICAgIHsgfTsK
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lIF9UMSwgdHlwZW5hbWUgX1QyPgog
ICAgc3RydWN0IF9SZWZlcmVuY2Vfd3JhcHBlcl9iYXNlPF9SZXMgKF9UMTo6KikoX1QyKT4KICAg
IDogYmluYXJ5X2Z1bmN0aW9uPF9UMSosIF9UMiwgX1Jlcz4KICAgIHsgfTsKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lIF9UMT4KICAgIHN0cnVjdCBfUmVmZXJlbmNlX3dyYXBw
ZXJfYmFzZTxfUmVzIChfVDE6OiopKCkgY29uc3Q+CiAgICA6IHVuYXJ5X2Z1bmN0aW9uPGNvbnN0
IF9UMSosIF9SZXM+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFt
ZSBfVDEsIHR5cGVuYW1lIF9UMj4KICAgIHN0cnVjdCBfUmVmZXJlbmNlX3dyYXBwZXJfYmFzZTxf
UmVzIChfVDE6OiopKF9UMikgY29uc3Q+CiAgICA6IGJpbmFyeV9mdW5jdGlvbjxjb25zdCBfVDEq
LCBfVDIsIF9SZXM+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFt
ZSBfVDE+CiAgICBzdHJ1Y3QgX1JlZmVyZW5jZV93cmFwcGVyX2Jhc2U8X1JlcyAoX1QxOjoqKSgp
IHZvbGF0aWxlPgogICAgOiB1bmFyeV9mdW5jdGlvbjx2b2xhdGlsZSBfVDEqLCBfUmVzPgogICAg
eyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUgX1QxLCB0eXBlbmFtZSBf
VDI+CiAgICBzdHJ1Y3QgX1JlZmVyZW5jZV93cmFwcGVyX2Jhc2U8X1JlcyAoX1QxOjoqKShfVDIp
IHZvbGF0aWxlPgogICAgOiBiaW5hcnlfZnVuY3Rpb248dm9sYXRpbGUgX1QxKiwgX1QyLCBfUmVz
PgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUgX1QxPgogICAg
c3RydWN0IF9SZWZlcmVuY2Vfd3JhcHBlcl9iYXNlPF9SZXMgKF9UMTo6KikoKSBjb25zdCB2b2xh
dGlsZT4KICAgIDogdW5hcnlfZnVuY3Rpb248Y29uc3Qgdm9sYXRpbGUgX1QxKiwgX1Jlcz4KICAg
IHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lIF9UMSwgdHlwZW5hbWUg
X1QyPgogICAgc3RydWN0IF9SZWZlcmVuY2Vfd3JhcHBlcl9iYXNlPF9SZXMgKF9UMTo6KikoX1Qy
KSBjb25zdCB2b2xhdGlsZT4KICAgIDogYmluYXJ5X2Z1bmN0aW9uPGNvbnN0IHZvbGF0aWxlIF9U
MSosIF9UMiwgX1Jlcz4KICAgIHsgfTsKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBjbGFzcyByZWZlcmVuY2Vfd3JhcHBlcgogICAgOiBwdWJsaWMgX1JlZmVyZW5jZV93cmFwcGVy
X2Jhc2U8dHlwZW5hbWUgcmVtb3ZlX2N2PF9UcD46OnR5cGU+CiAgICB7CiAgICAgIF9UcCogX01f
ZGF0YTsKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX1RwIHR5cGU7CgogICAgICByZWZlcmVu
Y2Vfd3JhcHBlcihfVHAmIF9faW5kYXRhKSBub2V4Y2VwdAogICAgICA6IF9NX2RhdGEoc3RkOjpf
X2FkZHJlc3NvZihfX2luZGF0YSkpCiAgICAgIHsgfQoKICAgICAgcmVmZXJlbmNlX3dyYXBwZXIo
X1RwJiYpID0gZGVsZXRlOwoKICAgICAgcmVmZXJlbmNlX3dyYXBwZXIoY29uc3QgcmVmZXJlbmNl
X3dyYXBwZXI8X1RwPiYgX19pbnJlZikgbm9leGNlcHQKICAgICAgOiBfTV9kYXRhKF9faW5yZWYu
X01fZGF0YSkKICAgICAgeyB9CgogICAgICByZWZlcmVuY2Vfd3JhcHBlciYKICAgICAgb3BlcmF0
b3I9KGNvbnN0IHJlZmVyZW5jZV93cmFwcGVyPF9UcD4mIF9faW5yZWYpIG5vZXhjZXB0CiAgICAg
IHsKIF9NX2RhdGEgPSBfX2lucmVmLl9NX2RhdGE7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAg
ICAgIG9wZXJhdG9yIF9UcCYoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiB0aGlzLT5n
ZXQoKTsgfQoKICAgICAgX1RwJgogICAgICBnZXQoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJl
dHVybiAqX01fZGF0YTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+CiB0eXBl
bmFtZSByZXN1bHRfb2Y8X1RwJihfQXJncyYmLi4uKT46OnR5cGUKIG9wZXJhdG9yKCkoX0FyZ3Mm
Ji4uLiBfX2FyZ3MpIGNvbnN0CiB7CiAgIHJldHVybiBfX2ludm9rZShnZXQoKSwgc3RkOjpmb3J3
YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKIH0KICAgIH07CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgaW5saW5lIHJlZmVyZW5jZV93cmFwcGVyPF9UcD4KICAgIHJlZihfVHAmIF9fdCkg
bm9leGNlcHQKICAgIHsgcmV0dXJuIHJlZmVyZW5jZV93cmFwcGVyPF9UcD4oX190KTsgfQoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHJlZmVyZW5jZV93cmFwcGVyPGNvbnN0
IF9UcD4KICAgIGNyZWYoY29uc3QgX1RwJiBfX3QpIG5vZXhjZXB0CiAgICB7IHJldHVybiByZWZl
cmVuY2Vfd3JhcHBlcjxjb25zdCBfVHA+KF9fdCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgdm9pZCByZWYoY29uc3QgX1RwJiYpID0gZGVsZXRlOwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+CiAgICB2b2lkIGNyZWYoY29uc3QgX1RwJiYpID0gZGVsZXRlOwoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHJlZmVyZW5jZV93cmFwcGVyPF9UcD4KICAgIHJlZihy
ZWZlcmVuY2Vfd3JhcHBlcjxfVHA+IF9fdCkgbm9leGNlcHQKICAgIHsgcmV0dXJuIHJlZihfX3Qu
Z2V0KCkpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgcmVmZXJlbmNl
X3dyYXBwZXI8Y29uc3QgX1RwPgogICAgY3JlZihyZWZlcmVuY2Vfd3JhcHBlcjxfVHA+IF9fdCkg
bm9leGNlcHQKICAgIHsgcmV0dXJuIGNyZWYoX190LmdldCgpKTsgfQoKCgogIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIF9UeXBlcz4KICAgIHN0cnVjdCBfUGFjayA6IGludGVncmFsX2NvbnN0YW50PHNp
emVfdCwgc2l6ZW9mLi4uKF9UeXBlcyk+CiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9G
cm9tLCB0eXBlbmFtZSBfVG8sIGJvb2wgPSBfRnJvbTo6dmFsdWUgPT0gX1RvOjp2YWx1ZT4KICAg
IHN0cnVjdCBfQWxsQ29udmVydGlibGUgOiBmYWxzZV90eXBlCiAgICB7IH07CgogIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIF9Gcm9tLCB0eXBlbmFtZS4uLiBfVG8+CiAgICBzdHJ1Y3QgX0FsbENvbnZl
cnRpYmxlPF9QYWNrPF9Gcm9tLi4uPiwgX1BhY2s8X1RvLi4uPiwgdHJ1ZT4KICAgIDogX19hbmRf
PGlzX2NvbnZlcnRpYmxlPF9Gcm9tLCBfVG8+Li4uPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHAxLCB0eXBlbmFtZSBfVHAyPgogICAgdXNpbmcgX05vdFNhbWUgPSBfX25vdF88aXNf
c2FtZTx0eXBlbmFtZSBzdGQ6OmRlY2F5PF9UcDE+Ojp0eXBlLAogICAgICAgIHR5cGVuYW1lIHN0
ZDo6ZGVjYXk8X1RwMj46OnR5cGU+PjsKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0
eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgX01heWJlX3VuYXJ5X29yX2JpbmFyeV9m
dW5jdGlvbiB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBfVDE+CiAg
ICBzdHJ1Y3QgX01heWJlX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbjxfUmVzLCBfVDE+CiAgICA6
IHN0ZDo6dW5hcnlfZnVuY3Rpb248X1QxLCBfUmVzPiB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfUmVzLCB0eXBlbmFtZSBfVDEsIHR5cGVuYW1lIF9UMj4KICAgIHN0cnVjdCBfTWF5YmVfdW5h
cnlfb3JfYmluYXJ5X2Z1bmN0aW9uPF9SZXMsIF9UMSwgX1QyPgogICAgOiBzdGQ6OmJpbmFyeV9m
dW5jdGlvbjxfVDEsIF9UMiwgX1Jlcz4geyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jlcywg
dHlwZW5hbWUgX0NsYXNzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBjbGFzcyBfTWVtX2Zu
PF9SZXMgKF9DbGFzczo6KikoX0FyZ1R5cGVzLi4uKT4KICAgIDogcHVibGljIF9NYXliZV91bmFy
eV9vcl9iaW5hcnlfZnVuY3Rpb248X1JlcywgX0NsYXNzKiwgX0FyZ1R5cGVzLi4uPgogICAgewog
ICAgICB0eXBlZGVmIF9SZXMgKF9DbGFzczo6Kl9GdW5jdG9yKShfQXJnVHlwZXMuLi4pOwoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZS4uLiBfQXJncz4KIF9SZXMKIF9NX2Nh
bGwoX1RwJiYgX19vYmplY3QsIGNvbnN0IHZvbGF0aWxlIF9DbGFzcyAqLAogIF9BcmdzJiYuLi4g
X19hcmdzKSBjb25zdAogewogICByZXR1cm4gKHN0ZDo6Zm9yd2FyZDxfVHA+KF9fb2JqZWN0KS4q
X19wbWYpCiAgICAgKHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7CiB9CgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4uIF9BcmdzPgogX1JlcwogX01fY2FsbChf
VHAmJiBfX3B0ciwgY29uc3Qgdm9sYXRpbGUgdm9pZCAqLCBfQXJncyYmLi4uIF9fYXJncykgY29u
c3QKIHsgcmV0dXJuICgoKl9fcHRyKS4qX19wbWYpKHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdz
KS4uLik7IH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncz4KIHVzaW5nIF9SZXF1
aXJlVmFsaWRBcmdzCiAgID0gX1JlcXVpcmU8X0FsbENvbnZlcnRpYmxlPF9QYWNrPF9BcmdzLi4u
PiwgX1BhY2s8X0FyZ1R5cGVzLi4uPj4+OwoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAs
IHR5cGVuYW1lLi4uIF9BcmdzPgogdXNpbmcgX1JlcXVpcmVWYWxpZEFyZ3MyCiAgID0gX1JlcXVp
cmU8X05vdFNhbWU8X0NsYXNzLCBfVHA+LCBfTm90U2FtZTxfQ2xhc3MqLCBfVHA+LAogICAgICAg
X0FsbENvbnZlcnRpYmxlPF9QYWNrPF9BcmdzLi4uPiwgX1BhY2s8X0FyZ1R5cGVzLi4uPj4+OwoK
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4uIF9BcmdzPgogdXNpbmcg
X1JlcXVpcmVWYWxpZEFyZ3MzCiAgID0gX1JlcXVpcmU8aXNfYmFzZV9vZjxfQ2xhc3MsIF9UcD4s
CiAgICAgICBfQWxsQ29udmVydGlibGU8X1BhY2s8X0FyZ3MuLi4+LCBfUGFjazxfQXJnVHlwZXMu
Li4+Pj47CgogICAgcHVibGljOgogICAgICB0eXBlZGVmIF9SZXMgcmVzdWx0X3R5cGU7CgogICAg
ICBleHBsaWNpdCBfTWVtX2ZuKF9GdW5jdG9yIF9fcG1mKSA6IF9fcG1mKF9fcG1mKSB7IH0KCgog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncywgdHlwZW5hbWUgX1JlcSA9IF9SZXF1aXJl
VmFsaWRBcmdzPF9BcmdzLi4uPj4KIF9SZXMKIG9wZXJhdG9yKCkoX0NsYXNzJiBfX29iamVjdCwg
X0FyZ3MmJi4uLiBfX2FyZ3MpIGNvbnN0CiB7IHJldHVybiAoX19vYmplY3QuKl9fcG1mKShzdGQ6
OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBfQXJncywgdHlwZW5hbWUgX1JlcSA9IF9SZXF1aXJlVmFsaWRBcmdzPF9BcmdzLi4uPj4KIF9S
ZXMKIG9wZXJhdG9yKCkoX0NsYXNzJiYgX19vYmplY3QsIF9BcmdzJiYuLi4gX19hcmdzKSBjb25z
dAogewogICByZXR1cm4gKHN0ZDo6bW92ZShfX29iamVjdCkuKl9fcG1mKShzdGQ6OmZvcndhcmQ8
X0FyZ3M+KF9fYXJncykuLi4pOwogfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9Bcmdz
LCB0eXBlbmFtZSBfUmVxID0gX1JlcXVpcmVWYWxpZEFyZ3M8X0FyZ3MuLi4+PgogX1Jlcwogb3Bl
cmF0b3IoKShfQ2xhc3MqIF9fb2JqZWN0LCBfQXJncyYmLi4uIF9fYXJncykgY29uc3QKIHsgcmV0
dXJuIChfX29iamVjdC0+Kl9fcG1mKShzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOyB9
CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZS4uLiBfQXJncywKICAgICAg
ICB0eXBlbmFtZSBfUmVxID0gX1JlcXVpcmVWYWxpZEFyZ3MyPF9UcCwgX0FyZ3MuLi4+PgogX1Jl
cwogb3BlcmF0b3IoKShfVHAmJiBfX29iamVjdCwgX0FyZ3MmJi4uLiBfX2FyZ3MpIGNvbnN0CiB7
CiAgIHJldHVybiBfTV9jYWxsKHN0ZDo6Zm9yd2FyZDxfVHA+KF9fb2JqZWN0KSwgJl9fb2JqZWN0
LAogICAgICAgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKIH0KCiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3MsCiAgICAgICAgdHlwZW5hbWUgX1Jl
cSA9IF9SZXF1aXJlVmFsaWRBcmdzMzxfVHAsIF9BcmdzLi4uPj4KIF9SZXMKIG9wZXJhdG9yKCko
cmVmZXJlbmNlX3dyYXBwZXI8X1RwPiBfX3JlZiwgX0FyZ3MmJi4uLiBfX2FyZ3MpIGNvbnN0CiB7
IHJldHVybiBvcGVyYXRvcigpKF9fcmVmLmdldCgpLCBzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJn
cykuLi4pOyB9CgogICAgcHJpdmF0ZToKICAgICAgX0Z1bmN0b3IgX19wbWY7CiAgICB9OwoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUgX0NsYXNzLCB0eXBlbmFtZS4uLiBfQXJn
VHlwZXM+CiAgICBjbGFzcyBfTWVtX2ZuPF9SZXMgKF9DbGFzczo6KikoX0FyZ1R5cGVzLi4uKSBj
b25zdD4KICAgIDogcHVibGljIF9NYXliZV91bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb248X1Jlcywg
Y29uc3QgX0NsYXNzKiwKICAgICAgICAgIF9BcmdUeXBlcy4uLj4KICAgIHsKICAgICAgdHlwZWRl
ZiBfUmVzIChfQ2xhc3M6OipfRnVuY3RvcikoX0FyZ1R5cGVzLi4uKSBjb25zdDsKCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3M+CiBfUmVzCiBfTV9jYWxsKF9U
cCYmIF9fb2JqZWN0LCBjb25zdCB2b2xhdGlsZSBfQ2xhc3MgKiwKICBfQXJncyYmLi4uIF9fYXJn
cykgY29uc3QKIHsKICAgcmV0dXJuIChzdGQ6OmZvcndhcmQ8X1RwPihfX29iamVjdCkuKl9fcG1m
KQogICAgIChzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOwogfQoKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZS4uLiBfQXJncz4KIF9SZXMKIF9NX2NhbGwoX1RwJiYg
X19wdHIsIGNvbnN0IHZvbGF0aWxlIHZvaWQgKiwgX0FyZ3MmJi4uLiBfX2FyZ3MpIGNvbnN0CiB7
IHJldHVybiAoKCpfX3B0cikuKl9fcG1mKShzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4p
OyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncz4KIHVzaW5nIF9SZXF1aXJlVmFs
aWRBcmdzCiAgID0gX1JlcXVpcmU8X0FsbENvbnZlcnRpYmxlPF9QYWNrPF9BcmdzLi4uPiwgX1Bh
Y2s8X0FyZ1R5cGVzLi4uPj4+OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFt
ZS4uLiBfQXJncz4KIHVzaW5nIF9SZXF1aXJlVmFsaWRBcmdzMgogICA9IF9SZXF1aXJlPF9Ob3RT
YW1lPF9DbGFzcywgX1RwPiwgX05vdFNhbWU8Y29uc3QgX0NsYXNzKiwgX1RwPiwKICAgICAgIF9B
bGxDb252ZXJ0aWJsZTxfUGFjazxfQXJncy4uLj4sIF9QYWNrPF9BcmdUeXBlcy4uLj4+PjsKCiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3M+CiB1c2luZyBfUmVx
dWlyZVZhbGlkQXJnczMKICAgPSBfUmVxdWlyZTxpc19iYXNlX29mPF9DbGFzcywgX1RwPiwKICAg
ICAgIF9BbGxDb252ZXJ0aWJsZTxfUGFjazxfQXJncy4uLj4sIF9QYWNrPF9BcmdUeXBlcy4uLj4+
PjsKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX1JlcyByZXN1bHRfdHlwZTsKCiAgICAgIGV4
cGxpY2l0IF9NZW1fZm4oX0Z1bmN0b3IgX19wbWYpIDogX19wbWYoX19wbWYpIHsgfQoKCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9BcmdzLCB0eXBlbmFtZSBfUmVxID0gX1JlcXVpcmVWYWxp
ZEFyZ3M8X0FyZ3MuLi4+PgogX1Jlcwogb3BlcmF0b3IoKShjb25zdCBfQ2xhc3MmIF9fb2JqZWN0
LCBfQXJncyYmLi4uIF9fYXJncykgY29uc3QKIHsgcmV0dXJuIChfX29iamVjdC4qX19wbWYpKHN0
ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIF9BcmdzLCB0eXBlbmFtZSBfUmVxID0gX1JlcXVpcmVWYWxpZEFyZ3M8X0FyZ3MuLi4+Pgog
X1Jlcwogb3BlcmF0b3IoKShjb25zdCBfQ2xhc3MmJiBfX29iamVjdCwgX0FyZ3MmJi4uLiBfX2Fy
Z3MpIGNvbnN0CiB7CiAgIHJldHVybiAoc3RkOjptb3ZlKF9fb2JqZWN0KS4qX19wbWYpKHN0ZDo6
Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7CiB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gX0FyZ3MsIHR5cGVuYW1lIF9SZXEgPSBfUmVxdWlyZVZhbGlkQXJnczxfQXJncy4uLj4+CiBf
UmVzCiBvcGVyYXRvcigpKGNvbnN0IF9DbGFzcyogX19vYmplY3QsIF9BcmdzJiYuLi4gX19hcmdz
KSBjb25zdAogeyByZXR1cm4gKF9fb2JqZWN0LT4qX19wbWYpKHN0ZDo6Zm9yd2FyZDxfQXJncz4o
X19hcmdzKS4uLik7IH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4u
IF9BcmdzLAogICAgICAgIHR5cGVuYW1lIF9SZXEgPSBfUmVxdWlyZVZhbGlkQXJnczI8X1RwLCBf
QXJncy4uLj4+CiBfUmVzIG9wZXJhdG9yKCkoX1RwJiYgX19vYmplY3QsIF9BcmdzJiYuLi4gX19h
cmdzKSBjb25zdAogewogICByZXR1cm4gX01fY2FsbChzdGQ6OmZvcndhcmQ8X1RwPihfX29iamVj
dCksICZfX29iamVjdCwKICAgICAgIHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7CiB9
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4uIF9BcmdzLAogICAgICAg
IHR5cGVuYW1lIF9SZXEgPSBfUmVxdWlyZVZhbGlkQXJnczM8X1RwLCBfQXJncy4uLj4+CiBfUmVz
CiBvcGVyYXRvcigpKHJlZmVyZW5jZV93cmFwcGVyPF9UcD4gX19yZWYsIF9BcmdzJiYuLi4gX19h
cmdzKSBjb25zdAogeyByZXR1cm4gb3BlcmF0b3IoKShfX3JlZi5nZXQoKSwgc3RkOjpmb3J3YXJk
PF9BcmdzPihfX2FyZ3MpLi4uKTsgfQoKICAgIHByaXZhdGU6CiAgICAgIF9GdW5jdG9yIF9fcG1m
OwogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lIF9DbGFzcywgdHlw
ZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgY2xhc3MgX01lbV9mbjxfUmVzIChfQ2xhc3M6OiopKF9B
cmdUeXBlcy4uLikgdm9sYXRpbGU+CiAgICA6IHB1YmxpYyBfTWF5YmVfdW5hcnlfb3JfYmluYXJ5
X2Z1bmN0aW9uPF9SZXMsIHZvbGF0aWxlIF9DbGFzcyosCiAgICAgICAgICBfQXJnVHlwZXMuLi4+
CiAgICB7CiAgICAgIHR5cGVkZWYgX1JlcyAoX0NsYXNzOjoqX0Z1bmN0b3IpKF9BcmdUeXBlcy4u
Likgdm9sYXRpbGU7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4uIF9B
cmdzPgogX1JlcwogX01fY2FsbChfVHAmJiBfX29iamVjdCwgY29uc3Qgdm9sYXRpbGUgX0NsYXNz
ICosCiAgX0FyZ3MmJi4uLiBfX2FyZ3MpIGNvbnN0CiB7CiAgIHJldHVybiAoc3RkOjpmb3J3YXJk
PF9UcD4oX19vYmplY3QpLipfX3BtZikKICAgICAoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3Mp
Li4uKTsKIH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3M+
CiBfUmVzCiBfTV9jYWxsKF9UcCYmIF9fcHRyLCBjb25zdCB2b2xhdGlsZSB2b2lkICosIF9Bcmdz
JiYuLi4gX19hcmdzKSBjb25zdAogeyByZXR1cm4gKCgqX19wdHIpLipfX3BtZikoc3RkOjpmb3J3
YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0Fy
Z3M+CiB1c2luZyBfUmVxdWlyZVZhbGlkQXJncwogICA9IF9SZXF1aXJlPF9BbGxDb252ZXJ0aWJs
ZTxfUGFjazxfQXJncy4uLj4sIF9QYWNrPF9BcmdUeXBlcy4uLj4+PjsKCiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3M+CiB1c2luZyBfUmVxdWlyZVZhbGlkQXJn
czIKICAgPSBfUmVxdWlyZTxfTm90U2FtZTxfQ2xhc3MsIF9UcD4sIF9Ob3RTYW1lPHZvbGF0aWxl
IF9DbGFzcyosIF9UcD4sCiAgICAgICBfQWxsQ29udmVydGlibGU8X1BhY2s8X0FyZ3MuLi4+LCBf
UGFjazxfQXJnVHlwZXMuLi4+Pj47CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVu
YW1lLi4uIF9BcmdzPgogdXNpbmcgX1JlcXVpcmVWYWxpZEFyZ3MzCiAgID0gX1JlcXVpcmU8aXNf
YmFzZV9vZjxfQ2xhc3MsIF9UcD4sCiAgICAgICBfQWxsQ29udmVydGlibGU8X1BhY2s8X0FyZ3Mu
Li4+LCBfUGFjazxfQXJnVHlwZXMuLi4+Pj47CgogICAgcHVibGljOgogICAgICB0eXBlZGVmIF9S
ZXMgcmVzdWx0X3R5cGU7CgogICAgICBleHBsaWNpdCBfTWVtX2ZuKF9GdW5jdG9yIF9fcG1mKSA6
IF9fcG1mKF9fcG1mKSB7IH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncywgdHlw
ZW5hbWUgX1JlcSA9IF9SZXF1aXJlVmFsaWRBcmdzPF9BcmdzLi4uPj4KIF9SZXMKIG9wZXJhdG9y
KCkodm9sYXRpbGUgX0NsYXNzJiBfX29iamVjdCwgX0FyZ3MmJi4uLiBfX2FyZ3MpIGNvbnN0CiB7
IHJldHVybiAoX19vYmplY3QuKl9fcG1mKShzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4p
OyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncywgdHlwZW5hbWUgX1JlcSA9IF9S
ZXF1aXJlVmFsaWRBcmdzPF9BcmdzLi4uPj4KIF9SZXMKIG9wZXJhdG9yKCkodm9sYXRpbGUgX0Ns
YXNzJiYgX19vYmplY3QsIF9BcmdzJiYuLi4gX19hcmdzKSBjb25zdAogewogICByZXR1cm4gKHN0
ZDo6bW92ZShfX29iamVjdCkuKl9fcG1mKShzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4p
OwogfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9BcmdzLCB0eXBlbmFtZSBfUmVxID0g
X1JlcXVpcmVWYWxpZEFyZ3M8X0FyZ3MuLi4+PgogX1Jlcwogb3BlcmF0b3IoKSh2b2xhdGlsZSBf
Q2xhc3MqIF9fb2JqZWN0LCBfQXJncyYmLi4uIF9fYXJncykgY29uc3QKIHsgcmV0dXJuIChfX29i
amVjdC0+Kl9fcG1mKShzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOyB9CgoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZS4uLiBfQXJncywKICAgICAgICB0eXBlbmFt
ZSBfUmVxID0gX1JlcXVpcmVWYWxpZEFyZ3MyPF9UcCwgX0FyZ3MuLi4+PgogX1Jlcwogb3BlcmF0
b3IoKShfVHAmJiBfX29iamVjdCwgX0FyZ3MmJi4uLiBfX2FyZ3MpIGNvbnN0CiB7CiAgIHJldHVy
biBfTV9jYWxsKHN0ZDo6Zm9yd2FyZDxfVHA+KF9fb2JqZWN0KSwgJl9fb2JqZWN0LAogICAgICAg
c3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKIH0KCiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3MsCiAgICAgICAgdHlwZW5hbWUgX1JlcSA9IF9SZXF1
aXJlVmFsaWRBcmdzMzxfVHAsIF9BcmdzLi4uPj4KIF9SZXMKIG9wZXJhdG9yKCkocmVmZXJlbmNl
X3dyYXBwZXI8X1RwPiBfX3JlZiwgX0FyZ3MmJi4uLiBfX2FyZ3MpIGNvbnN0CiB7IHJldHVybiBv
cGVyYXRvcigpKF9fcmVmLmdldCgpLCBzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOyB9
CgogICAgcHJpdmF0ZToKICAgICAgX0Z1bmN0b3IgX19wbWY7CiAgICB9OwoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUgX0NsYXNzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAg
ICBjbGFzcyBfTWVtX2ZuPF9SZXMgKF9DbGFzczo6KikoX0FyZ1R5cGVzLi4uKSBjb25zdCB2b2xh
dGlsZT4KICAgIDogcHVibGljIF9NYXliZV91bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb248X1Jlcywg
Y29uc3Qgdm9sYXRpbGUgX0NsYXNzKiwKICAgICAgICAgIF9BcmdUeXBlcy4uLj4KICAgIHsKICAg
ICAgdHlwZWRlZiBfUmVzIChfQ2xhc3M6OipfRnVuY3RvcikoX0FyZ1R5cGVzLi4uKSBjb25zdCB2
b2xhdGlsZTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3M+
CiBfUmVzCiBfTV9jYWxsKF9UcCYmIF9fb2JqZWN0LCBjb25zdCB2b2xhdGlsZSBfQ2xhc3MgKiwK
ICBfQXJncyYmLi4uIF9fYXJncykgY29uc3QKIHsKICAgcmV0dXJuIChzdGQ6OmZvcndhcmQ8X1Rw
PihfX29iamVjdCkuKl9fcG1mKQogICAgIChzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4p
OwogfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZS4uLiBfQXJncz4KIF9S
ZXMKIF9NX2NhbGwoX1RwJiYgX19wdHIsIGNvbnN0IHZvbGF0aWxlIHZvaWQgKiwgX0FyZ3MmJi4u
LiBfX2FyZ3MpIGNvbnN0CiB7IHJldHVybiAoKCpfX3B0cikuKl9fcG1mKShzdGQ6OmZvcndhcmQ8
X0FyZ3M+KF9fYXJncykuLi4pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncz4K
IHVzaW5nIF9SZXF1aXJlVmFsaWRBcmdzCiAgID0gX1JlcXVpcmU8X0FsbENvbnZlcnRpYmxlPF9Q
YWNrPF9BcmdzLi4uPiwgX1BhY2s8X0FyZ1R5cGVzLi4uPj4+OwoKICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwLCB0eXBlbmFtZS4uLiBfQXJncz4KIHVzaW5nIF9SZXF1aXJlVmFsaWRBcmdzMgog
ICA9IF9SZXF1aXJlPF9Ob3RTYW1lPF9DbGFzcywgX1RwPiwKICAgICAgIF9Ob3RTYW1lPGNvbnN0
IHZvbGF0aWxlIF9DbGFzcyosIF9UcD4sCiAgICAgICBfQWxsQ29udmVydGlibGU8X1BhY2s8X0Fy
Z3MuLi4+LCBfUGFjazxfQXJnVHlwZXMuLi4+Pj47CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHAsIHR5cGVuYW1lLi4uIF9BcmdzPgogdXNpbmcgX1JlcXVpcmVWYWxpZEFyZ3MzCiAgID0gX1Jl
cXVpcmU8aXNfYmFzZV9vZjxfQ2xhc3MsIF9UcD4sCiAgICAgICBfQWxsQ29udmVydGlibGU8X1Bh
Y2s8X0FyZ3MuLi4+LCBfUGFjazxfQXJnVHlwZXMuLi4+Pj47CgogICAgcHVibGljOgogICAgICB0
eXBlZGVmIF9SZXMgcmVzdWx0X3R5cGU7CgogICAgICBleHBsaWNpdCBfTWVtX2ZuKF9GdW5jdG9y
IF9fcG1mKSA6IF9fcG1mKF9fcG1mKSB7IH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBf
QXJncywgdHlwZW5hbWUgX1JlcSA9IF9SZXF1aXJlVmFsaWRBcmdzPF9BcmdzLi4uPj4KIF9SZXMK
IG9wZXJhdG9yKCkoY29uc3Qgdm9sYXRpbGUgX0NsYXNzJiBfX29iamVjdCwgX0FyZ3MmJi4uLiBf
X2FyZ3MpIGNvbnN0CiB7IHJldHVybiAoX19vYmplY3QuKl9fcG1mKShzdGQ6OmZvcndhcmQ8X0Fy
Z3M+KF9fYXJncykuLi4pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncywgdHlw
ZW5hbWUgX1JlcSA9IF9SZXF1aXJlVmFsaWRBcmdzPF9BcmdzLi4uPj4KIF9SZXMKIG9wZXJhdG9y
KCkoY29uc3Qgdm9sYXRpbGUgX0NsYXNzJiYgX19vYmplY3QsIF9BcmdzJiYuLi4gX19hcmdzKSBj
b25zdAogewogICByZXR1cm4gKHN0ZDo6bW92ZShfX29iamVjdCkuKl9fcG1mKShzdGQ6OmZvcndh
cmQ8X0FyZ3M+KF9fYXJncykuLi4pOwogfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9B
cmdzLCB0eXBlbmFtZSBfUmVxID0gX1JlcXVpcmVWYWxpZEFyZ3M8X0FyZ3MuLi4+PgogX1Jlcwog
b3BlcmF0b3IoKShjb25zdCB2b2xhdGlsZSBfQ2xhc3MqIF9fb2JqZWN0LCBfQXJncyYmLi4uIF9f
YXJncykgY29uc3QKIHsgcmV0dXJuIChfX29iamVjdC0+Kl9fcG1mKShzdGQ6OmZvcndhcmQ8X0Fy
Z3M+KF9fYXJncykuLi4pOyB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFt
ZS4uLiBfQXJncywKICAgICAgICB0eXBlbmFtZSBfUmVxID0gX1JlcXVpcmVWYWxpZEFyZ3MyPF9U
cCwgX0FyZ3MuLi4+PgogX1JlcyBvcGVyYXRvcigpKF9UcCYmIF9fb2JqZWN0LCBfQXJncyYmLi4u
IF9fYXJncykgY29uc3QKIHsKICAgcmV0dXJuIF9NX2NhbGwoc3RkOjpmb3J3YXJkPF9UcD4oX19v
YmplY3QpLCAmX19vYmplY3QsCiAgICAgICBzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4p
OwogfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZS4uLiBfQXJncywKICAg
ICAgICB0eXBlbmFtZSBfUmVxID0gX1JlcXVpcmVWYWxpZEFyZ3MzPF9UcCwgX0FyZ3MuLi4+Pgog
X1Jlcwogb3BlcmF0b3IoKShyZWZlcmVuY2Vfd3JhcHBlcjxfVHA+IF9fcmVmLCBfQXJncyYmLi4u
IF9fYXJncykgY29uc3QKIHsgcmV0dXJuIG9wZXJhdG9yKCkoX19yZWYuZ2V0KCksIHN0ZDo6Zm9y
d2FyZDxfQXJncz4oX19hcmdzKS4uLik7IH0KCiAgICBwcml2YXRlOgogICAgICBfRnVuY3RvciBf
X3BtZjsKICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGJvb2w+CiAgICBzdHJ1Y3Qg
X01lbV9mbl9jb25zdF9vcl9ub24KICAgIHsKICAgICAgdHlwZWRlZiBjb25zdCBfVHAmIHR5cGU7
CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX01lbV9mbl9jb25z
dF9vcl9ub248X1RwLCBmYWxzZT4KICAgIHsKICAgICAgdHlwZWRlZiBfVHAmIHR5cGU7CiAgICB9
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBfQ2xhc3M+CiAgICBjbGFzcyBf
TWVtX2ZuPF9SZXMgX0NsYXNzOjoqPgogICAgewogICAgICB1c2luZyBfX3BtX3R5cGUgPSBfUmVz
IF9DbGFzczo6KjsKCgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KIGF1dG8KIF9NX2Nh
bGwoX1RwJiYgX19vYmplY3QsIGNvbnN0IF9DbGFzcyAqKSBjb25zdCBub2V4Y2VwdAogLT4gZGVj
bHR5cGUoc3RkOjpmb3J3YXJkPF9UcD4oX19vYmplY3QpLipzdGQ6OmRlY2x2YWw8X19wbV90eXBl
Jj4oKSkKIHsgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxfVHA+KF9fb2JqZWN0KS4qX19wbTsgfQoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+CiBhdXRvCiBfTV9jYWxsKF9U
cCYmIF9fb2JqZWN0LCBfVXAgKiBjb25zdCAqKSBjb25zdCBub2V4Y2VwdAogLT4gZGVjbHR5cGUo
KCpzdGQ6OmZvcndhcmQ8X1RwPihfX29iamVjdCkpLipzdGQ6OmRlY2x2YWw8X19wbV90eXBlJj4o
KSkKIHsgcmV0dXJuICgqc3RkOjpmb3J3YXJkPF9UcD4oX19vYmplY3QpKS4qX19wbTsgfQoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogYXV0bwogX01fY2FsbChfVHAmJiBfX3B0ciwgY29u
c3Qgdm9sYXRpbGUgdm9pZCopIGNvbnN0CiBub2V4Y2VwdChub2V4Y2VwdCgoKl9fcHRyKS4qc3Rk
OjpkZWNsdmFsPF9fcG1fdHlwZSY+KCkpKQogLT4gZGVjbHR5cGUoKCpfX3B0cikuKnN0ZDo6ZGVj
bHZhbDxfX3BtX3R5cGUmPigpKQogeyByZXR1cm4gKCpfX3B0cikuKl9fcG07IH0KCiAgICBwdWJs
aWM6CiAgICAgIGV4cGxpY2l0CiAgICAgIF9NZW1fZm4oX1JlcyBfQ2xhc3M6OipfX3BtKSBub2V4
Y2VwdCA6IF9fcG0oX19wbSkgeyB9CgoKICAgICAgX1JlcyYKICAgICAgb3BlcmF0b3IoKShfQ2xh
c3MmIF9fb2JqZWN0KSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfX29iamVjdC4qX19w
bTsgfQoKICAgICAgY29uc3QgX1JlcyYKICAgICAgb3BlcmF0b3IoKShjb25zdCBfQ2xhc3MmIF9f
b2JqZWN0KSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfX29iamVjdC4qX19wbTsgfQoK
ICAgICAgX1JlcyYmCiAgICAgIG9wZXJhdG9yKCkoX0NsYXNzJiYgX19vYmplY3QpIGNvbnN0IG5v
ZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxfQ2xhc3M+KF9fb2JqZWN0KS4qX19w
bTsgfQoKICAgICAgY29uc3QgX1JlcyYmCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX0NsYXNzJiYg
X19vYmplY3QpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxjb25z
dCBfQ2xhc3M+KF9fb2JqZWN0KS4qX19wbTsgfQoKCiAgICAgIF9SZXMmCiAgICAgIG9wZXJhdG9y
KCkoX0NsYXNzKiBfX29iamVjdCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX19vYmpl
Y3QtPipfX3BtOyB9CgogICAgICBjb25zdCBfUmVzJgogICAgICBvcGVyYXRvcigpKGNvbnN0IF9D
bGFzcyogX19vYmplY3QpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fb2JqZWN0LT4q
X19wbTsgfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1JlcSA9IF9S
ZXF1aXJlPF9Ob3RTYW1lPF9DbGFzcyosIF9UcD4+PgogYXV0bwogb3BlcmF0b3IoKShfVHAmJiBf
X3Vua25vd24pIGNvbnN0CiBub2V4Y2VwdChub2V4Y2VwdChzdGQ6OmRlY2x2YWw8X01lbV9mbio+
KCktPl9NX2NhbGwKICAgICAoc3RkOjpmb3J3YXJkPF9UcD4oX191bmtub3duKSwgJl9fdW5rbm93
bikpKQogLT4gZGVjbHR5cGUodGhpcy0+X01fY2FsbChzdGQ6OmZvcndhcmQ8X1RwPihfX3Vua25v
d24pLCAmX191bmtub3duKSkKIHsgcmV0dXJuIF9NX2NhbGwoc3RkOjpmb3J3YXJkPF9UcD4oX191
bmtub3duKSwgJl9fdW5rbm93bik7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlw
ZW5hbWUgX1JlcSA9IF9SZXF1aXJlPGlzX2Jhc2Vfb2Y8X0NsYXNzLCBfVHA+Pj4KIGF1dG8KIG9w
ZXJhdG9yKCkocmVmZXJlbmNlX3dyYXBwZXI8X1RwPiBfX3JlZikgY29uc3QKIG5vZXhjZXB0KG5v
ZXhjZXB0KHN0ZDo6ZGVjbHZhbDxfTWVtX2ZuJj4oKShfX3JlZi5nZXQoKSkpKQogLT4gZGVjbHR5
cGUoKCp0aGlzKShfX3JlZi5nZXQoKSkpCiB7IHJldHVybiAoKnRoaXMpKF9fcmVmLmdldCgpKTsg
fQoKICAgIHByaXZhdGU6CiAgICAgIF9SZXMgX0NsYXNzOjoqX19wbTsKICAgIH07CiMgOTI3ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Z1
bmN0aW9uYWwiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9DbGFzcz4KICAg
IGlubGluZSBfTWVtX2ZuPF9UcCBfQ2xhc3M6Oio+CiAgICBtZW1fZm4oX1RwIF9DbGFzczo6KiBf
X3BtKSBub2V4Y2VwdAogICAgewogICAgICByZXR1cm4gX01lbV9mbjxfVHAgX0NsYXNzOjoqPihf
X3BtKTsKICAgIH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlz
X2JpbmRfZXhwcmVzc2lvbgogICAgOiBwdWJsaWMgZmFsc2VfdHlwZSB7IH07CgoKCgoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX3BsYWNlaG9sZGVyCiAgICA6IHB1Ymxp
YyBpbnRlZ3JhbF9jb25zdGFudDxpbnQsIDA+CiAgICB7IH07CgoKCgogIHRlbXBsYXRlPGludCBf
TnVtPiBzdHJ1Y3QgX1BsYWNlaG9sZGVyIHsgfTsKCiAKCgoKCgogIG5hbWVzcGFjZSBwbGFjZWhv
bGRlcnMKICB7CiAKCgoKCiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDE+IF8xOwogICAg
ZXh0ZXJuIGNvbnN0IF9QbGFjZWhvbGRlcjwyPiBfMjsKICAgIGV4dGVybiBjb25zdCBfUGxhY2Vo
b2xkZXI8Mz4gXzM7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDQ+IF80OwogICAgZXh0
ZXJuIGNvbnN0IF9QbGFjZWhvbGRlcjw1PiBfNTsKICAgIGV4dGVybiBjb25zdCBfUGxhY2Vob2xk
ZXI8Nj4gXzY7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDc+IF83OwogICAgZXh0ZXJu
IGNvbnN0IF9QbGFjZWhvbGRlcjw4PiBfODsKICAgIGV4dGVybiBjb25zdCBfUGxhY2Vob2xkZXI8
OT4gXzk7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDEwPiBfMTA7CiAgICBleHRlcm4g
Y29uc3QgX1BsYWNlaG9sZGVyPDExPiBfMTE7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVy
PDEyPiBfMTI7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDEzPiBfMTM7CiAgICBleHRl
cm4gY29uc3QgX1BsYWNlaG9sZGVyPDE0PiBfMTQ7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9s
ZGVyPDE1PiBfMTU7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDE2PiBfMTY7CiAgICBl
eHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDE3PiBfMTc7CiAgICBleHRlcm4gY29uc3QgX1BsYWNl
aG9sZGVyPDE4PiBfMTg7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDE5PiBfMTk7CiAg
ICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDIwPiBfMjA7CiAgICBleHRlcm4gY29uc3QgX1Bs
YWNlaG9sZGVyPDIxPiBfMjE7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDIyPiBfMjI7
CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDIzPiBfMjM7CiAgICBleHRlcm4gY29uc3Qg
X1BsYWNlaG9sZGVyPDI0PiBfMjQ7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDI1PiBf
MjU7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDI2PiBfMjY7CiAgICBleHRlcm4gY29u
c3QgX1BsYWNlaG9sZGVyPDI3PiBfMjc7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDI4
PiBfMjg7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDI5PiBfMjk7CiAKICB9CgogCgoK
CgoKCiAgdGVtcGxhdGU8aW50IF9OdW0+CiAgICBzdHJ1Y3QgaXNfcGxhY2Vob2xkZXI8X1BsYWNl
aG9sZGVyPF9OdW0+ID4KICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGludCwgX051bT4K
ICAgIHsgfTsKCiAgdGVtcGxhdGU8aW50IF9OdW0+CiAgICBzdHJ1Y3QgaXNfcGxhY2Vob2xkZXI8
Y29uc3QgX1BsYWNlaG9sZGVyPF9OdW0+ID4KICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50
PGludCwgX051bT4KICAgIHsgfTsKCgoKCgogIHN0cnVjdCBfTm9fdHVwbGVfZWxlbWVudDsKCgoK
CgoKICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBfX2ksIHR5cGVuYW1lIF9UdXBsZSwgYm9vbCBfSXNT
YWZlPgogICAgc3RydWN0IF9TYWZlX3R1cGxlX2VsZW1lbnRfaW1wbAogICAgOiB0dXBsZV9lbGVt
ZW50PF9faSwgX1R1cGxlPiB7IH07CgoKCgoKCiAgdGVtcGxhdGU8c3RkOjpzaXplX3QgX19pLCB0
eXBlbmFtZSBfVHVwbGU+CiAgICBzdHJ1Y3QgX1NhZmVfdHVwbGVfZWxlbWVudF9pbXBsPF9faSwg
X1R1cGxlLCBmYWxzZT4KICAgIHsKICAgICAgdHlwZWRlZiBfTm9fdHVwbGVfZWxlbWVudCB0eXBl
OwogICAgfTsKCgoKCgogdGVtcGxhdGU8c3RkOjpzaXplX3QgX19pLCB0eXBlbmFtZSBfVHVwbGU+
CiAgIHN0cnVjdCBfU2FmZV90dXBsZV9lbGVtZW50CiAgIDogX1NhZmVfdHVwbGVfZWxlbWVudF9p
bXBsPF9faSwgX1R1cGxlLAogICAgICAgICAoX19pIDwgdHVwbGVfc2l6ZTxfVHVwbGU+Ojp2YWx1
ZSk+CiAgIHsgfTsKIyAxMDY4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2Z1bmN0aW9uYWwiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQXJn
LAogICAgYm9vbCBfSXNCaW5kRXhwID0gaXNfYmluZF9leHByZXNzaW9uPF9Bcmc+Ojp2YWx1ZSwK
ICAgIGJvb2wgX0lzUGxhY2Vob2xkZXIgPSAoaXNfcGxhY2Vob2xkZXI8X0FyZz46OnZhbHVlID4g
MCk+CiAgICBjbGFzcyBfTXU7CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjbGFz
cyBfTXU8cmVmZXJlbmNlX3dyYXBwZXI8X1RwPiwgZmFsc2UsIGZhbHNlPgogICAgewogICAgcHVi
bGljOgogICAgICB0eXBlZGVmIF9UcCYgcmVzdWx0X3R5cGU7CgoKCgoKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NWUmVmLCB0eXBlbmFtZSBfVHVwbGU+CiByZXN1bHRfdHlwZQogb3BlcmF0b3Io
KShfQ1ZSZWYmIF9fYXJnLCBfVHVwbGUmKSBjb25zdCB2b2xhdGlsZQogeyByZXR1cm4gX19hcmcu
Z2V0KCk7IH0KICAgIH07CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FyZz4KICAgIGNsYXNz
IF9NdTxfQXJnLCB0cnVlLCBmYWxzZT4KICAgIHsKICAgIHB1YmxpYzoKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NWQXJnLCB0eXBlbmFtZS4uLiBfQXJncz4KIGF1dG8KIG9wZXJhdG9yKCkoX0NW
QXJnJiBfX2FyZywKICAgICB0dXBsZTxfQXJncy4uLj4mIF9fdHVwbGUpIGNvbnN0IHZvbGF0aWxl
CiAtPiBkZWNsdHlwZShfX2FyZyhkZWNsdmFsPF9BcmdzPigpLi4uKSkKIHsKCiAgIHR5cGVkZWYg
dHlwZW5hbWUgX0J1aWxkX2luZGV4X3R1cGxlPHNpemVvZi4uLihfQXJncyk+OjpfX3R5cGUKICAg
ICBfSW5kZXhlczsKICAgcmV0dXJuIHRoaXMtPl9fY2FsbChfX2FyZywgX190dXBsZSwgX0luZGV4
ZXMoKSk7CiB9CgogICAgcHJpdmF0ZToKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ1ZBcmcs
IHR5cGVuYW1lLi4uIF9BcmdzLCBzdGQ6OnNpemVfdC4uLiBfSW5kZXhlcz4KIGF1dG8KIF9fY2Fs
bChfQ1ZBcmcmIF9fYXJnLCB0dXBsZTxfQXJncy4uLj4mIF9fdHVwbGUsCiAgICAgICAgY29uc3Qg
X0luZGV4X3R1cGxlPF9JbmRleGVzLi4uPiYpIGNvbnN0IHZvbGF0aWxlCiAtPiBkZWNsdHlwZShf
X2FyZyhkZWNsdmFsPF9BcmdzPigpLi4uKSkKIHsKICAgcmV0dXJuIF9fYXJnKHN0ZDo6Zm9yd2Fy
ZDxfQXJncz4oZ2V0PF9JbmRleGVzPihfX3R1cGxlKSkuLi4pOwogfQogICAgfTsKCgoKCgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQXJnPgogICAgY2xhc3MgX011PF9BcmcsIGZhbHNlLCB0cnVlPgog
ICAgewogICAgcHVibGljOgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU2lnbmF0dXJlPiBjbGFz
cyByZXN1bHQ7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ1ZNdSwgdHlwZW5hbWUgX0NWQXJn
LCB0eXBlbmFtZSBfVHVwbGU+CiBjbGFzcyByZXN1bHQ8X0NWTXUoX0NWQXJnLCBfVHVwbGUpPgog
ewoKCgogICB0eXBlZGVmIHR5cGVuYW1lIF9TYWZlX3R1cGxlX2VsZW1lbnQ8KGlzX3BsYWNlaG9s
ZGVyPF9Bcmc+Ojp2YWx1ZQogICAgICAtIDEpLCBfVHVwbGU+Ojp0eXBlCiAgICAgX19iYXNlX3R5
cGU7CgogcHVibGljOgogICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9ydmFsdWVfcmVmZXJlbmNlPF9f
YmFzZV90eXBlPjo6dHlwZSB0eXBlOwogfTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UdXBs
ZT4KIHR5cGVuYW1lIHJlc3VsdDxfTXUoX0FyZywgX1R1cGxlKT46OnR5cGUKIG9wZXJhdG9yKCko
Y29uc3Qgdm9sYXRpbGUgX0FyZyYsIF9UdXBsZSYgX190dXBsZSkgY29uc3Qgdm9sYXRpbGUKIHsK
ICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDx0eXBlbmFtZSByZXN1bHQ8X011KF9BcmcsIF9UdXBsZSk+
Ojp0eXBlPigKICAgICAgIDo6c3RkOjpnZXQ8KGlzX3BsYWNlaG9sZGVyPF9Bcmc+Ojp2YWx1ZSAt
IDEpPihfX3R1cGxlKSk7CiB9CiAgICB9OwoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Bcmc+
CiAgICBjbGFzcyBfTXU8X0FyZywgZmFsc2UsIGZhbHNlPgogICAgewogICAgcHVibGljOgogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU2lnbmF0dXJlPiBzdHJ1Y3QgcmVzdWx0OwoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NWTXUsIHR5cGVuYW1lIF9DVkFyZywgdHlwZW5hbWUgX1R1cGxlPgog
c3RydWN0IHJlc3VsdDxfQ1ZNdShfQ1ZBcmcsIF9UdXBsZSk+CiB7CiAgIHR5cGVkZWYgdHlwZW5h
bWUgYWRkX2x2YWx1ZV9yZWZlcmVuY2U8X0NWQXJnPjo6dHlwZSB0eXBlOwogfTsKCgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ1ZBcmcsIHR5cGVuYW1lIF9UdXBsZT4KIF9DVkFyZyYmCiBvcGVy
YXRvcigpKF9DVkFyZyYmIF9fYXJnLCBfVHVwbGUmKSBjb25zdCB2b2xhdGlsZQogeyByZXR1cm4g
c3RkOjpmb3J3YXJkPF9DVkFyZz4oX19hcmcpOyB9CiAgICB9OwoKCgoKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfTWF5YmVfd3JhcF9tZW1iZXJfcG9pbnRlcgogICAgewog
ICAgICB0eXBlZGVmIF9UcCB0eXBlOwoKICAgICAgc3RhdGljIGNvbnN0IF9UcCYKICAgICAgX19k
b193cmFwKGNvbnN0IF9UcCYgX194KQogICAgICB7IHJldHVybiBfX3g7IH0KCiAgICAgIHN0YXRp
YyBfVHAmJgogICAgICBfX2RvX3dyYXAoX1RwJiYgX194KQogICAgICB7IHJldHVybiBzdGF0aWNf
Y2FzdDxfVHAmJj4oX194KTsgfQogICAgfTsKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAs
IHR5cGVuYW1lIF9DbGFzcz4KICAgIHN0cnVjdCBfTWF5YmVfd3JhcF9tZW1iZXJfcG9pbnRlcjxf
VHAgX0NsYXNzOjoqPgogICAgewogICAgICB0eXBlZGVmIF9NZW1fZm48X1RwIF9DbGFzczo6Kj4g
dHlwZTsKCiAgICAgIHN0YXRpYyB0eXBlCiAgICAgIF9fZG9fd3JhcChfVHAgX0NsYXNzOjoqIF9f
cG0pCiAgICAgIHsgcmV0dXJuIHR5cGUoX19wbSk7IH0KICAgIH07CgoKCgoKICB0ZW1wbGF0ZTw+
CiAgICBzdHJ1Y3QgX01heWJlX3dyYXBfbWVtYmVyX3BvaW50ZXI8dm9pZD4KICAgIHsKICAgICAg
dHlwZWRlZiB2b2lkIHR5cGU7CiAgICB9OwoKCiAgdGVtcGxhdGU8c3RkOjpzaXplX3QgX0luZCwg
dHlwZW5hbWUuLi4gX1RwPgogICAgaW5saW5lIGF1dG8KICAgIF9fdm9sZ2V0KHZvbGF0aWxlIHR1
cGxlPF9UcC4uLj4mIF9fdHVwbGUpCiAgICAtPiB0eXBlbmFtZSB0dXBsZV9lbGVtZW50PF9JbmQs
IHR1cGxlPF9UcC4uLj4+Ojp0eXBlIHZvbGF0aWxlJgogICAgeyByZXR1cm4gc3RkOjpnZXQ8X0lu
ZD4oY29uc3RfY2FzdDx0dXBsZTxfVHAuLi4+Jj4oX190dXBsZSkpOyB9CgoKICB0ZW1wbGF0ZTxz
dGQ6OnNpemVfdCBfSW5kLCB0eXBlbmFtZS4uLiBfVHA+CiAgICBpbmxpbmUgYXV0bwogICAgX192
b2xnZXQoY29uc3Qgdm9sYXRpbGUgdHVwbGU8X1RwLi4uPiYgX190dXBsZSkKICAgIC0+IHR5cGVu
YW1lIHR1cGxlX2VsZW1lbnQ8X0luZCwgdHVwbGU8X1RwLi4uPj46OnR5cGUgY29uc3Qgdm9sYXRp
bGUmCiAgICB7IHJldHVybiBzdGQ6OmdldDxfSW5kPihjb25zdF9jYXN0PGNvbnN0IHR1cGxlPF9U
cC4uLj4mPihfX3R1cGxlKSk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9TaWduYXR1cmU+CiAg
ICBzdHJ1Y3QgX0JpbmQ7CgogICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnVuY3RvciwgdHlwZW5hbWUu
Li4gX0JvdW5kX2FyZ3M+CiAgICBjbGFzcyBfQmluZDxfRnVuY3RvcihfQm91bmRfYXJncy4uLik+
CiAgICA6IHB1YmxpYyBfV2Vha19yZXN1bHRfdHlwZTxfRnVuY3Rvcj4KICAgIHsKICAgICAgdHlw
ZWRlZiBfQmluZCBfX3NlbGZfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQnVpbGRfaW5k
ZXhfdHVwbGU8c2l6ZW9mLi4uKF9Cb3VuZF9hcmdzKT46Ol9fdHlwZQogX0JvdW5kX2luZGV4ZXM7
CgogICAgICBfRnVuY3RvciBfTV9mOwogICAgICB0dXBsZTxfQm91bmRfYXJncy4uLj4gX01fYm91
bmRfYXJnczsKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzdWx0LCB0eXBlbmFtZS4uLiBf
QXJncywgc3RkOjpzaXplX3QuLi4gX0luZGV4ZXM+CiBfUmVzdWx0CiBfX2NhbGwodHVwbGU8X0Fy
Z3MuLi4+JiYgX19hcmdzLCBfSW5kZXhfdHVwbGU8X0luZGV4ZXMuLi4+KQogewogICByZXR1cm4g
X01fZihfTXU8X0JvdW5kX2FyZ3M+KCkKICAgICAgICAoZ2V0PF9JbmRleGVzPihfTV9ib3VuZF9h
cmdzKSwgX19hcmdzKS4uLik7CiB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jlc3VsdCwg
dHlwZW5hbWUuLi4gX0FyZ3MsIHN0ZDo6c2l6ZV90Li4uIF9JbmRleGVzPgogX1Jlc3VsdAogX19j
YWxsX2ModHVwbGU8X0FyZ3MuLi4+JiYgX19hcmdzLCBfSW5kZXhfdHVwbGU8X0luZGV4ZXMuLi4+
KSBjb25zdAogewogICByZXR1cm4gX01fZihfTXU8X0JvdW5kX2FyZ3M+KCkKICAgICAgICAoZ2V0
PF9JbmRleGVzPihfTV9ib3VuZF9hcmdzKSwgX19hcmdzKS4uLik7CiB9CgoKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1Jlc3VsdCwgdHlwZW5hbWUuLi4gX0FyZ3MsIHN0ZDo6c2l6ZV90Li4uIF9J
bmRleGVzPgogX1Jlc3VsdAogX19jYWxsX3YodHVwbGU8X0FyZ3MuLi4+JiYgX19hcmdzLAogICBf
SW5kZXhfdHVwbGU8X0luZGV4ZXMuLi4+KSB2b2xhdGlsZQogewogICByZXR1cm4gX01fZihfTXU8
X0JvdW5kX2FyZ3M+KCkKICAgICAgICAoX192b2xnZXQ8X0luZGV4ZXM+KF9NX2JvdW5kX2FyZ3Mp
LCBfX2FyZ3MpLi4uKTsKIH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzdWx0LCB0eXBl
bmFtZS4uLiBfQXJncywgc3RkOjpzaXplX3QuLi4gX0luZGV4ZXM+CiBfUmVzdWx0CiBfX2NhbGxf
Y192KHR1cGxlPF9BcmdzLi4uPiYmIF9fYXJncywKICAgICBfSW5kZXhfdHVwbGU8X0luZGV4ZXMu
Li4+KSBjb25zdCB2b2xhdGlsZQogewogICByZXR1cm4gX01fZihfTXU8X0JvdW5kX2FyZ3M+KCkK
ICAgICAgICAoX192b2xnZXQ8X0luZGV4ZXM+KF9NX2JvdW5kX2FyZ3MpLCBfX2FyZ3MpLi4uKTsK
IH0KCiAgICAgcHVibGljOgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncz4KIGV4cGxp
Y2l0IF9CaW5kKGNvbnN0IF9GdW5jdG9yJiBfX2YsIF9BcmdzJiYuLi4gX19hcmdzKQogOiBfTV9m
KF9fZiksIF9NX2JvdW5kX2FyZ3Moc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKQogeyB9
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncz4KIGV4cGxpY2l0IF9CaW5kKF9GdW5j
dG9yJiYgX19mLCBfQXJncyYmLi4uIF9fYXJncykKIDogX01fZihzdGQ6Om1vdmUoX19mKSksIF9N
X2JvdW5kX2FyZ3Moc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKQogeyB9CgogICAgICBf
QmluZChjb25zdCBfQmluZCYpID0gZGVmYXVsdDsKCiAgICAgIF9CaW5kKF9CaW5kJiYgX19iKQog
ICAgICA6IF9NX2Yoc3RkOjptb3ZlKF9fYi5fTV9mKSksIF9NX2JvdW5kX2FyZ3Moc3RkOjptb3Zl
KF9fYi5fTV9ib3VuZF9hcmdzKSkKICAgICAgeyB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gX0FyZ3MsIHR5cGVuYW1lIF9SZXN1bHQKID0gZGVjbHR5cGUoIHN0ZDo6ZGVjbHZhbDxfRnVu
Y3Rvcj4oKSgKICAgICAgIF9NdTxfQm91bmRfYXJncz4oKSggc3RkOjpkZWNsdmFsPF9Cb3VuZF9h
cmdzJj4oKSwKICAgICAgc3RkOjpkZWNsdmFsPHR1cGxlPF9BcmdzLi4uPiY+KCkgKS4uLiApICk+
CiBfUmVzdWx0CiBvcGVyYXRvcigpKF9BcmdzJiYuLi4gX19hcmdzKQogewogICByZXR1cm4gdGhp
cy0+X19jYWxsPF9SZXN1bHQ+KAogICAgICAgc3RkOjpmb3J3YXJkX2FzX3R1cGxlKHN0ZDo6Zm9y
d2FyZDxfQXJncz4oX19hcmdzKS4uLiksCiAgICAgICBfQm91bmRfaW5kZXhlcygpKTsKIH0KCgog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncywgdHlwZW5hbWUgX1Jlc3VsdAogPSBkZWNs
dHlwZSggc3RkOjpkZWNsdmFsPHR5cGVuYW1lIGVuYWJsZV9pZjwoc2l6ZW9mLi4uKF9BcmdzKSA+
PSAwKSwKICAgICAgICAgdHlwZW5hbWUgYWRkX2NvbnN0PF9GdW5jdG9yPjo6dHlwZT46OnR5cGU+
KCkoCiAgICAgICBfTXU8X0JvdW5kX2FyZ3M+KCkoIHN0ZDo6ZGVjbHZhbDxjb25zdCBfQm91bmRf
YXJncyY+KCksCiAgICAgIHN0ZDo6ZGVjbHZhbDx0dXBsZTxfQXJncy4uLj4mPigpICkuLi4gKSAp
PgogX1Jlc3VsdAogb3BlcmF0b3IoKShfQXJncyYmLi4uIF9fYXJncykgY29uc3QKIHsKICAgcmV0
dXJuIHRoaXMtPl9fY2FsbF9jPF9SZXN1bHQ+KAogICAgICAgc3RkOjpmb3J3YXJkX2FzX3R1cGxl
KHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLiksCiAgICAgICBfQm91bmRfaW5kZXhlcygp
KTsKIH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncywgdHlwZW5hbWUgX1Jlc3Vs
dAogPSBkZWNsdHlwZSggc3RkOjpkZWNsdmFsPHR5cGVuYW1lIGVuYWJsZV9pZjwoc2l6ZW9mLi4u
KF9BcmdzKSA+PSAwKSwKICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBhZGRfdm9sYXRp
bGU8X0Z1bmN0b3I+Ojp0eXBlPjo6dHlwZT4oKSgKICAgICAgIF9NdTxfQm91bmRfYXJncz4oKSgg
c3RkOjpkZWNsdmFsPHZvbGF0aWxlIF9Cb3VuZF9hcmdzJj4oKSwKICAgICAgc3RkOjpkZWNsdmFs
PHR1cGxlPF9BcmdzLi4uPiY+KCkgKS4uLiApICk+CiBfUmVzdWx0CiBvcGVyYXRvcigpKF9Bcmdz
JiYuLi4gX19hcmdzKSB2b2xhdGlsZQogewogICByZXR1cm4gdGhpcy0+X19jYWxsX3Y8X1Jlc3Vs
dD4oCiAgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2Fy
Z3MpLi4uKSwKICAgICAgIF9Cb3VuZF9pbmRleGVzKCkpOwogfQoKCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIF9BcmdzLCB0eXBlbmFtZSBfUmVzdWx0CiA9IGRlY2x0eXBlKCBzdGQ6OmRlY2x2
YWw8dHlwZW5hbWUgZW5hYmxlX2lmPChzaXplb2YuLi4oX0FyZ3MpID49IDApLAogICAgICAgICAg
ICAgICAgICAgICAgIHR5cGVuYW1lIGFkZF9jdjxfRnVuY3Rvcj46OnR5cGU+Ojp0eXBlPigpKAog
ICAgICAgX011PF9Cb3VuZF9hcmdzPigpKCBzdGQ6OmRlY2x2YWw8Y29uc3Qgdm9sYXRpbGUgX0Jv
dW5kX2FyZ3MmPigpLAogICAgICBzdGQ6OmRlY2x2YWw8dHVwbGU8X0FyZ3MuLi4+Jj4oKSApLi4u
ICkgKT4KIF9SZXN1bHQKIG9wZXJhdG9yKCkoX0FyZ3MmJi4uLiBfX2FyZ3MpIGNvbnN0IHZvbGF0
aWxlCiB7CiAgIHJldHVybiB0aGlzLT5fX2NhbGxfY192PF9SZXN1bHQ+KAogICAgICAgc3RkOjpm
b3J3YXJkX2FzX3R1cGxlKHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLiksCiAgICAgICBf
Qm91bmRfaW5kZXhlcygpKTsKIH0KICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzdWx0
LCB0eXBlbmFtZSBfU2lnbmF0dXJlPgogICAgc3RydWN0IF9CaW5kX3Jlc3VsdDsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1Jlc3VsdCwgdHlwZW5hbWUgX0Z1bmN0b3IsIHR5cGVuYW1lLi4uIF9Cb3Vu
ZF9hcmdzPgogICAgY2xhc3MgX0JpbmRfcmVzdWx0PF9SZXN1bHQsIF9GdW5jdG9yKF9Cb3VuZF9h
cmdzLi4uKT4KICAgIHsKICAgICAgdHlwZWRlZiBfQmluZF9yZXN1bHQgX19zZWxmX3R5cGU7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgX0J1aWxkX2luZGV4X3R1cGxlPHNpemVvZi4uLihfQm91bmRf
YXJncyk+OjpfX3R5cGUKIF9Cb3VuZF9pbmRleGVzOwoKICAgICAgX0Z1bmN0b3IgX01fZjsKICAg
ICAgdHVwbGU8X0JvdW5kX2FyZ3MuLi4+IF9NX2JvdW5kX2FyZ3M7CgoKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1Jlcz4KIHN0cnVjdCBfX2VuYWJsZV9pZl92b2lkIDogZW5hYmxlX2lmPGlzX3Zv
aWQ8X1Jlcz46OnZhbHVlLCBpbnQ+IHsgfTsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jlcz4K
IHN0cnVjdCBfX2Rpc2FibGVfaWZfdm9pZCA6IGVuYWJsZV9pZjwhaXNfdm9pZDxfUmVzPjo6dmFs
dWUsIGludD4geyB9OwoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lLi4u
IF9BcmdzLCBzdGQ6OnNpemVfdC4uLiBfSW5kZXhlcz4KIF9SZXN1bHQKIF9fY2FsbCh0dXBsZTxf
QXJncy4uLj4mJiBfX2FyZ3MsIF9JbmRleF90dXBsZTxfSW5kZXhlcy4uLj4sCiAgICAgdHlwZW5h
bWUgX19kaXNhYmxlX2lmX3ZvaWQ8X1Jlcz46OnR5cGUgPSAwKQogewogICByZXR1cm4gX01fZihf
TXU8X0JvdW5kX2FyZ3M+KCkKICAgICAgICAoZ2V0PF9JbmRleGVzPihfTV9ib3VuZF9hcmdzKSwg
X19hcmdzKS4uLik7CiB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUu
Li4gX0FyZ3MsIHN0ZDo6c2l6ZV90Li4uIF9JbmRleGVzPgogdm9pZAogX19jYWxsKHR1cGxlPF9B
cmdzLi4uPiYmIF9fYXJncywgX0luZGV4X3R1cGxlPF9JbmRleGVzLi4uPiwKICAgICB0eXBlbmFt
ZSBfX2VuYWJsZV9pZl92b2lkPF9SZXM+Ojp0eXBlID0gMCkKIHsKICAgX01fZihfTXU8X0JvdW5k
X2FyZ3M+KCkKICAgICAgICAoZ2V0PF9JbmRleGVzPihfTV9ib3VuZF9hcmdzKSwgX19hcmdzKS4u
Lik7CiB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0FyZ3Ms
IHN0ZDo6c2l6ZV90Li4uIF9JbmRleGVzPgogX1Jlc3VsdAogX19jYWxsKHR1cGxlPF9BcmdzLi4u
PiYmIF9fYXJncywgX0luZGV4X3R1cGxlPF9JbmRleGVzLi4uPiwKICAgICB0eXBlbmFtZSBfX2Rp
c2FibGVfaWZfdm9pZDxfUmVzPjo6dHlwZSA9IDApIGNvbnN0CiB7CiAgIHJldHVybiBfTV9mKF9N
dTxfQm91bmRfYXJncz4oKQogICAgICAgIChnZXQ8X0luZGV4ZXM+KF9NX2JvdW5kX2FyZ3MpLCBf
X2FyZ3MpLi4uKTsKIH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4u
LiBfQXJncywgc3RkOjpzaXplX3QuLi4gX0luZGV4ZXM+CiB2b2lkCiBfX2NhbGwodHVwbGU8X0Fy
Z3MuLi4+JiYgX19hcmdzLCBfSW5kZXhfdHVwbGU8X0luZGV4ZXMuLi4+LAogICAgIHR5cGVuYW1l
IF9fZW5hYmxlX2lmX3ZvaWQ8X1Jlcz46OnR5cGUgPSAwKSBjb25zdAogewogICBfTV9mKF9NdTxf
Qm91bmRfYXJncz4oKQogICAgICAgIChnZXQ8X0luZGV4ZXM+KF9NX2JvdW5kX2FyZ3MpLCBfX2Fy
Z3MpLi4uKTsKIH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBf
QXJncywgc3RkOjpzaXplX3QuLi4gX0luZGV4ZXM+CiBfUmVzdWx0CiBfX2NhbGwodHVwbGU8X0Fy
Z3MuLi4+JiYgX19hcmdzLCBfSW5kZXhfdHVwbGU8X0luZGV4ZXMuLi4+LAogICAgIHR5cGVuYW1l
IF9fZGlzYWJsZV9pZl92b2lkPF9SZXM+Ojp0eXBlID0gMCkgdm9sYXRpbGUKIHsKICAgcmV0dXJu
IF9NX2YoX011PF9Cb3VuZF9hcmdzPigpCiAgICAgICAgKF9fdm9sZ2V0PF9JbmRleGVzPihfTV9i
b3VuZF9hcmdzKSwgX19hcmdzKS4uLik7CiB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jl
cywgdHlwZW5hbWUuLi4gX0FyZ3MsIHN0ZDo6c2l6ZV90Li4uIF9JbmRleGVzPgogdm9pZAogX19j
YWxsKHR1cGxlPF9BcmdzLi4uPiYmIF9fYXJncywgX0luZGV4X3R1cGxlPF9JbmRleGVzLi4uPiwK
ICAgICB0eXBlbmFtZSBfX2VuYWJsZV9pZl92b2lkPF9SZXM+Ojp0eXBlID0gMCkgdm9sYXRpbGUK
IHsKICAgX01fZihfTXU8X0JvdW5kX2FyZ3M+KCkKICAgICAgICAoX192b2xnZXQ8X0luZGV4ZXM+
KF9NX2JvdW5kX2FyZ3MpLCBfX2FyZ3MpLi4uKTsKIH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJncywgc3RkOjpzaXplX3QuLi4gX0luZGV4ZXM+CiBfUmVz
dWx0CiBfX2NhbGwodHVwbGU8X0FyZ3MuLi4+JiYgX19hcmdzLCBfSW5kZXhfdHVwbGU8X0luZGV4
ZXMuLi4+LAogICAgIHR5cGVuYW1lIF9fZGlzYWJsZV9pZl92b2lkPF9SZXM+Ojp0eXBlID0gMCkg
Y29uc3Qgdm9sYXRpbGUKIHsKICAgcmV0dXJuIF9NX2YoX011PF9Cb3VuZF9hcmdzPigpCiAgICAg
ICAgKF9fdm9sZ2V0PF9JbmRleGVzPihfTV9ib3VuZF9hcmdzKSwgX19hcmdzKS4uLik7CiB9CgoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0FyZ3MsIHN0ZDo6c2l6
ZV90Li4uIF9JbmRleGVzPgogdm9pZAogX19jYWxsKHR1cGxlPF9BcmdzLi4uPiYmIF9fYXJncywK
ICAgICAgICBfSW5kZXhfdHVwbGU8X0luZGV4ZXMuLi4+LAogICAgIHR5cGVuYW1lIF9fZW5hYmxl
X2lmX3ZvaWQ8X1Jlcz46OnR5cGUgPSAwKSBjb25zdCB2b2xhdGlsZQogewogICBfTV9mKF9NdTxf
Qm91bmRfYXJncz4oKQogICAgICAgIChfX3ZvbGdldDxfSW5kZXhlcz4oX01fYm91bmRfYXJncyks
IF9fYXJncykuLi4pOwogfQoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBfUmVzdWx0IHJlc3Vs
dF90eXBlOwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+CiBleHBsaWNpdCBfQmlu
ZF9yZXN1bHQoY29uc3QgX0Z1bmN0b3ImIF9fZiwgX0FyZ3MmJi4uLiBfX2FyZ3MpCiA6IF9NX2Yo
X19mKSwgX01fYm91bmRfYXJncyhzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pCiB7IH0K
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9BcmdzPgogZXhwbGljaXQgX0JpbmRfcmVzdWx0
KF9GdW5jdG9yJiYgX19mLCBfQXJncyYmLi4uIF9fYXJncykKIDogX01fZihzdGQ6Om1vdmUoX19m
KSksIF9NX2JvdW5kX2FyZ3Moc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKQogeyB9Cgog
ICAgICBfQmluZF9yZXN1bHQoY29uc3QgX0JpbmRfcmVzdWx0JikgPSBkZWZhdWx0OwoKICAgICAg
X0JpbmRfcmVzdWx0KF9CaW5kX3Jlc3VsdCYmIF9fYikKICAgICAgOiBfTV9mKHN0ZDo6bW92ZShf
X2IuX01fZikpLCBfTV9ib3VuZF9hcmdzKHN0ZDo6bW92ZShfX2IuX01fYm91bmRfYXJncykpCiAg
ICAgIHsgfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9BcmdzPgogcmVzdWx0X3R5cGUK
IG9wZXJhdG9yKCkoX0FyZ3MmJi4uLiBfX2FyZ3MpCiB7CiAgIHJldHVybiB0aGlzLT5fX2NhbGw8
X1Jlc3VsdD4oCiAgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoc3RkOjpmb3J3YXJkPF9Bcmdz
PihfX2FyZ3MpLi4uKSwKICAgICAgIF9Cb3VuZF9pbmRleGVzKCkpOwogfQoKCiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIF9BcmdzPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX0FyZ3MmJi4u
LiBfX2FyZ3MpIGNvbnN0CiB7CiAgIHJldHVybiB0aGlzLT5fX2NhbGw8X1Jlc3VsdD4oCiAgICAg
ICBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKSwK
ICAgICAgIF9Cb3VuZF9pbmRleGVzKCkpOwogfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IF9BcmdzPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX0FyZ3MmJi4uLiBfX2FyZ3MpIHZvbGF0
aWxlCiB7CiAgIHJldHVybiB0aGlzLT5fX2NhbGw8X1Jlc3VsdD4oCiAgICAgICBzdGQ6OmZvcndh
cmRfYXNfdHVwbGUoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKSwKICAgICAgIF9Cb3Vu
ZF9pbmRleGVzKCkpOwogfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9BcmdzPgogcmVz
dWx0X3R5cGUKIG9wZXJhdG9yKCkoX0FyZ3MmJi4uLiBfX2FyZ3MpIGNvbnN0IHZvbGF0aWxlCiB7
CiAgIHJldHVybiB0aGlzLT5fX2NhbGw8X1Jlc3VsdD4oCiAgICAgICBzdGQ6OmZvcndhcmRfYXNf
dHVwbGUoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKSwKICAgICAgIF9Cb3VuZF9pbmRl
eGVzKCkpOwogfQogICAgfTsKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9TaWduYXR1cmU+CiAg
ICBzdHJ1Y3QgaXNfYmluZF9leHByZXNzaW9uPF9CaW5kPF9TaWduYXR1cmU+ID4KICAgIDogcHVi
bGljIHRydWVfdHlwZSB7IH07CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU2lnbmF0dXJlPgog
ICAgc3RydWN0IGlzX2JpbmRfZXhwcmVzc2lvbjxjb25zdCBfQmluZDxfU2lnbmF0dXJlPiA+CiAg
ICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1NpZ25h
dHVyZT4KICAgIHN0cnVjdCBpc19iaW5kX2V4cHJlc3Npb248dm9sYXRpbGUgX0JpbmQ8X1NpZ25h
dHVyZT4gPgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKCgoKCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9TaWduYXR1cmU+CiAgICBzdHJ1Y3QgaXNfYmluZF9leHByZXNzaW9uPGNvbnN0IHZvbGF0
aWxlIF9CaW5kPF9TaWduYXR1cmU+PgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKCgoKCgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9SZXN1bHQsIHR5cGVuYW1lIF9TaWduYXR1cmU+CiAgICBzdHJ1
Y3QgaXNfYmluZF9leHByZXNzaW9uPF9CaW5kX3Jlc3VsdDxfUmVzdWx0LCBfU2lnbmF0dXJlPj4K
ICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVz
dWx0LCB0eXBlbmFtZSBfU2lnbmF0dXJlPgogICAgc3RydWN0IGlzX2JpbmRfZXhwcmVzc2lvbjxj
b25zdCBfQmluZF9yZXN1bHQ8X1Jlc3VsdCwgX1NpZ25hdHVyZT4+CiAgICA6IHB1YmxpYyB0cnVl
X3R5cGUgeyB9OwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jlc3VsdCwgdHlwZW5hbWUgX1Np
Z25hdHVyZT4KICAgIHN0cnVjdCBpc19iaW5kX2V4cHJlc3Npb248dm9sYXRpbGUgX0JpbmRfcmVz
dWx0PF9SZXN1bHQsIF9TaWduYXR1cmU+PgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKCgoK
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXN1bHQsIHR5cGVuYW1lIF9TaWduYXR1cmU+CiAgICBz
dHJ1Y3QgaXNfYmluZF9leHByZXNzaW9uPGNvbnN0IHZvbGF0aWxlIF9CaW5kX3Jlc3VsdDxfUmVz
dWx0LCBfU2lnbmF0dXJlPj4KICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CgoKCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1RwMiA9IHR5cGVuYW1lIGRlY2F5PF9UcD46OnR5
cGU+CiAgICB1c2luZyBfX2lzX3NvY2tldGxpa2UgPSBfX29yXzxpc19pbnRlZ3JhbDxfVHAyPiwg
aXNfZW51bTxfVHAyPj47CgogIHRlbXBsYXRlPGJvb2wgX1NvY2tldExpa2UsIHR5cGVuYW1lIF9G
dW5jLCB0eXBlbmFtZS4uLiBfQm91bmRBcmdzPgogICAgc3RydWN0IF9CaW5kX2hlbHBlcgogICAg
ewogICAgICB0eXBlZGVmIF9NYXliZV93cmFwX21lbWJlcl9wb2ludGVyPHR5cGVuYW1lIGRlY2F5
PF9GdW5jPjo6dHlwZT4KIF9fbWF5YmVfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX21h
eWJlX3R5cGU6OnR5cGUgX19mdW5jX3R5cGU7CiAgICAgIHR5cGVkZWYgX0JpbmQ8X19mdW5jX3R5
cGUodHlwZW5hbWUgZGVjYXk8X0JvdW5kQXJncz46OnR5cGUuLi4pPiB0eXBlOwogICAgfTsKCgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmMsIHR5cGVuYW1lLi4uIF9Cb3VuZEFyZ3M+CiAgICBz
dHJ1Y3QgX0JpbmRfaGVscGVyPHRydWUsIF9GdW5jLCBfQm91bmRBcmdzLi4uPgogICAgeyB9OwoK
CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmMsIHR5cGVuYW1lLi4uIF9Cb3VuZEFyZ3M+CiAg
ICBpbmxpbmUgdHlwZW5hbWUKICAgIF9CaW5kX2hlbHBlcjxfX2lzX3NvY2tldGxpa2U8X0Z1bmM+
Ojp2YWx1ZSwgX0Z1bmMsIF9Cb3VuZEFyZ3MuLi4+Ojp0eXBlCiAgICBiaW5kKF9GdW5jJiYgX19m
LCBfQm91bmRBcmdzJiYuLi4gX19hcmdzKQogICAgewogICAgICB0eXBlZGVmIF9CaW5kX2hlbHBl
cjxmYWxzZSwgX0Z1bmMsIF9Cb3VuZEFyZ3MuLi4+IF9faGVscGVyX3R5cGU7CiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgX19oZWxwZXJfdHlwZTo6X19tYXliZV90eXBlIF9fbWF5YmVfdHlwZTsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBfX2hlbHBlcl90eXBlOjp0eXBlIF9fcmVzdWx0X3R5cGU7CiAg
ICAgIHJldHVybiBfX3Jlc3VsdF90eXBlKF9fbWF5YmVfdHlwZTo6X19kb193cmFwKHN0ZDo6Zm9y
d2FyZDxfRnVuYz4oX19mKSksCiAgICAgIHN0ZDo6Zm9yd2FyZDxfQm91bmRBcmdzPihfX2FyZ3Mp
Li4uKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jlc3VsdCwgdHlwZW5hbWUgX0Z1bmMs
IHR5cGVuYW1lLi4uIF9Cb3VuZEFyZ3M+CiAgICBzdHJ1Y3QgX0JpbmRyZXNfaGVscGVyCiAgICB7
CiAgICAgIHR5cGVkZWYgX01heWJlX3dyYXBfbWVtYmVyX3BvaW50ZXI8dHlwZW5hbWUgZGVjYXk8
X0Z1bmM+Ojp0eXBlPgogX19tYXliZV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fbWF5
YmVfdHlwZTo6dHlwZSBfX2Z1bmN0b3JfdHlwZTsKICAgICAgdHlwZWRlZiBfQmluZF9yZXN1bHQ8
X1Jlc3VsdCwKICAgICAgX19mdW5jdG9yX3R5cGUodHlwZW5hbWUgZGVjYXk8X0JvdW5kQXJncz46
OnR5cGUuLi4pPgogdHlwZTsKICAgIH07CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzdWx0
LCB0eXBlbmFtZSBfRnVuYywgdHlwZW5hbWUuLi4gX0JvdW5kQXJncz4KICAgIGlubGluZQogICAg
dHlwZW5hbWUgX0JpbmRyZXNfaGVscGVyPF9SZXN1bHQsIF9GdW5jLCBfQm91bmRBcmdzLi4uPjo6
dHlwZQogICAgYmluZChfRnVuYyYmIF9fZiwgX0JvdW5kQXJncyYmLi4uIF9fYXJncykKICAgIHsK
ICAgICAgdHlwZWRlZiBfQmluZHJlc19oZWxwZXI8X1Jlc3VsdCwgX0Z1bmMsIF9Cb3VuZEFyZ3Mu
Li4+IF9faGVscGVyX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19oZWxwZXJfdHlwZTo6
X19tYXliZV90eXBlIF9fbWF5YmVfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2hlbHBl
cl90eXBlOjp0eXBlIF9fcmVzdWx0X3R5cGU7CiAgICAgIHJldHVybiBfX3Jlc3VsdF90eXBlKF9f
bWF5YmVfdHlwZTo6X19kb193cmFwKHN0ZDo6Zm9yd2FyZDxfRnVuYz4oX19mKSksCiAgICAgIHN0
ZDo6Zm9yd2FyZDxfQm91bmRBcmdzPihfX2FyZ3MpLi4uKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1NpZ25hdHVyZT4KICAgIHN0cnVjdCBfQmluZF9zaW1wbGU7CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DYWxsYWJsZSwgdHlwZW5hbWUuLi4gX0FyZ3M+CiAgICBzdHJ1Y3QgX0JpbmRfc2lt
cGxlPF9DYWxsYWJsZShfQXJncy4uLik+CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVz
dWx0X29mPF9DYWxsYWJsZShfQXJncy4uLik+Ojp0eXBlIHJlc3VsdF90eXBlOwoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3MyLCB0eXBlbmFtZSA9IHR5cGVuYW1lCiAgICAgICAgICAg
ICAgIGVuYWJsZV9pZjwgc2l6ZW9mLi4uKF9BcmdzKSA9PSBzaXplb2YuLi4oX0FyZ3MyKT46OnR5
cGU+CiAgICAgICAgZXhwbGljaXQKICAgICAgICBfQmluZF9zaW1wbGUoY29uc3QgX0NhbGxhYmxl
JiBfX2NhbGxhYmxlLCBfQXJnczImJi4uLiBfX2FyZ3MpCiAgICAgICAgOiBfTV9ib3VuZChfX2Nh
bGxhYmxlLCBzdGQ6OmZvcndhcmQ8X0FyZ3MyPihfX2FyZ3MpLi4uKQogICAgICAgIHsgfQoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3MyLCB0eXBlbmFtZSA9IHR5cGVuYW1lCiAgICAg
ICAgICAgICAgIGVuYWJsZV9pZjwgc2l6ZW9mLi4uKF9BcmdzKSA9PSBzaXplb2YuLi4oX0FyZ3My
KT46OnR5cGU+CiAgICAgICAgZXhwbGljaXQKICAgICAgICBfQmluZF9zaW1wbGUoX0NhbGxhYmxl
JiYgX19jYWxsYWJsZSwgX0FyZ3MyJiYuLi4gX19hcmdzKQogICAgICAgIDogX01fYm91bmQoc3Rk
Ojptb3ZlKF9fY2FsbGFibGUpLCBzdGQ6OmZvcndhcmQ8X0FyZ3MyPihfX2FyZ3MpLi4uKQogICAg
ICAgIHsgfQoKICAgICAgX0JpbmRfc2ltcGxlKGNvbnN0IF9CaW5kX3NpbXBsZSYpID0gZGVmYXVs
dDsKICAgICAgX0JpbmRfc2ltcGxlKF9CaW5kX3NpbXBsZSYmKSA9IGRlZmF1bHQ7CgogICAgICBy
ZXN1bHRfdHlwZQogICAgICBvcGVyYXRvcigpKCkKICAgICAgewogICAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX0J1aWxkX2luZGV4X3R1cGxlPHNpemVvZi4uLihfQXJncyk+OjpfX3R5cGUgX0luZGlj
ZXM7CiAgICAgICAgcmV0dXJuIF9NX2ludm9rZShfSW5kaWNlcygpKTsKICAgICAgfQoKICAgIHBy
aXZhdGU6CgogICAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdC4uLiBfSW5kaWNlcz4KICAgICAgICB0
eXBlbmFtZSByZXN1bHRfb2Y8X0NhbGxhYmxlKF9BcmdzLi4uKT46OnR5cGUKICAgICAgICBfTV9p
bnZva2UoX0luZGV4X3R1cGxlPF9JbmRpY2VzLi4uPikKICAgICAgICB7CgoKICAgICAgICAgIHJl
dHVybiBzdGQ6OmZvcndhcmQ8X0NhbGxhYmxlPihzdGQ6OmdldDwwPihfTV9ib3VuZCkpKAogICAg
ICAgICAgICAgIHN0ZDo6Zm9yd2FyZDxfQXJncz4oc3RkOjpnZXQ8X0luZGljZXMrMT4oX01fYm91
bmQpKS4uLik7CiAgICAgICAgfQoKICAgICAgc3RkOjp0dXBsZTxfQ2FsbGFibGUsIF9BcmdzLi4u
PiBfTV9ib3VuZDsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9GdW5jLCB0eXBlbmFtZS4u
LiBfQm91bmRBcmdzPgogICAgc3RydWN0IF9CaW5kX3NpbXBsZV9oZWxwZXIKICAgIHsKICAgICAg
dHlwZWRlZiBfTWF5YmVfd3JhcF9tZW1iZXJfcG9pbnRlcjx0eXBlbmFtZSBkZWNheTxfRnVuYz46
OnR5cGU+CiAgICAgICAgX19tYXliZV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fbWF5
YmVfdHlwZTo6dHlwZSBfX2Z1bmNfdHlwZTsKICAgICAgdHlwZWRlZiBfQmluZF9zaW1wbGU8X19m
dW5jX3R5cGUodHlwZW5hbWUgZGVjYXk8X0JvdW5kQXJncz46OnR5cGUuLi4pPgogICAgICAgIF9f
dHlwZTsKICAgIH07CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NhbGxhYmxlLCB0eXBlbmFtZS4u
LiBfQXJncz4KICAgIHR5cGVuYW1lIF9CaW5kX3NpbXBsZV9oZWxwZXI8X0NhbGxhYmxlLCBfQXJn
cy4uLj46Ol9fdHlwZQogICAgX19iaW5kX3NpbXBsZShfQ2FsbGFibGUmJiBfX2NhbGxhYmxlLCBf
QXJncyYmLi4uIF9fYXJncykKICAgIHsKICAgICAgdHlwZWRlZiBfQmluZF9zaW1wbGVfaGVscGVy
PF9DYWxsYWJsZSwgX0FyZ3MuLi4+IF9faGVscGVyX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgX19oZWxwZXJfdHlwZTo6X19tYXliZV90eXBlIF9fbWF5YmVfdHlwZTsKICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBfX2hlbHBlcl90eXBlOjpfX3R5cGUgX19yZXN1bHRfdHlwZTsKICAgICAgcmV0
dXJuIF9fcmVzdWx0X3R5cGUoCiAgICAgICAgICBfX21heWJlX3R5cGU6Ol9fZG9fd3JhcCggc3Rk
Ojpmb3J3YXJkPF9DYWxsYWJsZT4oX19jYWxsYWJsZSkpLAogICAgICAgICAgc3RkOjpmb3J3YXJk
PF9BcmdzPihfX2FyZ3MpLi4uKTsKICAgIH0KCgoKCgoKICBjbGFzcyBiYWRfZnVuY3Rpb25fY2Fs
bCA6IHB1YmxpYyBzdGQ6OmV4Y2VwdGlvbgogIHsKICBwdWJsaWM6CiAgICB2aXJ0dWFsIH5iYWRf
ZnVuY3Rpb25fY2FsbCgpIG5vZXhjZXB0OwoKICAgIGNvbnN0IGNoYXIqIHdoYXQoKSBjb25zdCBu
b2V4Y2VwdDsKICB9OwoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBf
X2lzX2xvY2F0aW9uX2ludmFyaWFudAogICAgOiBpbnRlZ3JhbF9jb25zdGFudDxib29sLCAoaXNf
cG9pbnRlcjxfVHA+Ojp2YWx1ZQogICAgICAgICAgfHwgaXNfbWVtYmVyX3BvaW50ZXI8X1RwPjo6
dmFsdWUpPgogICAgeyB9OwoKICBjbGFzcyBfVW5kZWZpbmVkX2NsYXNzOwoKICB1bmlvbiBfTm9j
b3B5X3R5cGVzCiAgewogICAgdm9pZCogX01fb2JqZWN0OwogICAgY29uc3Qgdm9pZCogX01fY29u
c3Rfb2JqZWN0OwogICAgdm9pZCAoKl9NX2Z1bmN0aW9uX3BvaW50ZXIpKCk7CiAgICB2b2lkIChf
VW5kZWZpbmVkX2NsYXNzOjoqX01fbWVtYmVyX3BvaW50ZXIpKCk7CiAgfTsKCiAgdW5pb24gX0Fu
eV9kYXRhCiAgewogICAgdm9pZCogX01fYWNjZXNzKCkgeyByZXR1cm4gJl9NX3BvZF9kYXRhWzBd
OyB9CiAgICBjb25zdCB2b2lkKiBfTV9hY2Nlc3MoKSBjb25zdCB7IHJldHVybiAmX01fcG9kX2Rh
dGFbMF07IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICAgIF9UcCYKICAgICAgX01f
YWNjZXNzKCkKICAgICAgeyByZXR1cm4gKnN0YXRpY19jYXN0PF9UcCo+KF9NX2FjY2VzcygpKTsg
fQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICAgY29uc3QgX1RwJgogICAgICBfTV9h
Y2Nlc3MoKSBjb25zdAogICAgICB7IHJldHVybiAqc3RhdGljX2Nhc3Q8Y29uc3QgX1RwKj4oX01f
YWNjZXNzKCkpOyB9CgogICAgX05vY29weV90eXBlcyBfTV91bnVzZWQ7CiAgICBjaGFyIF9NX3Bv
ZF9kYXRhW3NpemVvZihfTm9jb3B5X3R5cGVzKV07CiAgfTsKCiAgZW51bSBfTWFuYWdlcl9vcGVy
YXRpb24KICB7CiAgICBfX2dldF90eXBlX2luZm8sCiAgICBfX2dldF9mdW5jdG9yX3B0ciwKICAg
IF9fY2xvbmVfZnVuY3RvciwKICAgIF9fZGVzdHJveV9mdW5jdG9yCiAgfTsKCgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX1NpbXBsZV90eXBlX3dyYXBwZXIKICAgIHsKICAg
ICAgX1NpbXBsZV90eXBlX3dyYXBwZXIoX1RwIF9fdmFsdWUpIDogX192YWx1ZShfX3ZhbHVlKSB7
IH0KCiAgICAgIF9UcCBfX3ZhbHVlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgc3RydWN0IF9faXNfbG9jYXRpb25faW52YXJpYW50PF9TaW1wbGVfdHlwZV93cmFwcGVyPF9U
cD4gPgogICAgOiBfX2lzX2xvY2F0aW9uX2ludmFyaWFudDxfVHA+CiAgICB7IH07CgoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0Z1bmN0b3I+CiAgICBpbmxpbmUgX0Z1bmN0b3ImCiAgICBfX2NhbGxh
YmxlX2Z1bmN0b3IoX0Z1bmN0b3ImIF9fZikKICAgIHsgcmV0dXJuIF9fZjsgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfTWVtYmVyLCB0eXBlbmFtZSBfQ2xhc3M+CiAgICBpbmxpbmUgX01lbV9mbjxf
TWVtYmVyIF9DbGFzczo6Kj4KICAgIF9fY2FsbGFibGVfZnVuY3RvcihfTWVtYmVyIF9DbGFzczo6
KiAmX19wKQogICAgeyByZXR1cm4gc3RkOjptZW1fZm4oX19wKTsgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfTWVtYmVyLCB0eXBlbmFtZSBfQ2xhc3M+CiAgICBpbmxpbmUgX01lbV9mbjxfTWVtYmVy
IF9DbGFzczo6Kj4KICAgIF9fY2FsbGFibGVfZnVuY3RvcihfTWVtYmVyIF9DbGFzczo6KiBjb25z
dCAmX19wKQogICAgeyByZXR1cm4gc3RkOjptZW1fZm4oX19wKTsgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfTWVtYmVyLCB0eXBlbmFtZSBfQ2xhc3M+CiAgICBpbmxpbmUgX01lbV9mbjxfTWVtYmVy
IF9DbGFzczo6Kj4KICAgIF9fY2FsbGFibGVfZnVuY3RvcihfTWVtYmVyIF9DbGFzczo6KiB2b2xh
dGlsZSAmX19wKQogICAgeyByZXR1cm4gc3RkOjptZW1fZm4oX19wKTsgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfTWVtYmVyLCB0eXBlbmFtZSBfQ2xhc3M+CiAgICBpbmxpbmUgX01lbV9mbjxfTWVt
YmVyIF9DbGFzczo6Kj4KICAgIF9fY2FsbGFibGVfZnVuY3RvcihfTWVtYmVyIF9DbGFzczo6KiBj
b25zdCB2b2xhdGlsZSAmX19wKQogICAgeyByZXR1cm4gc3RkOjptZW1fZm4oX19wKTsgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfU2lnbmF0dXJlPgogICAgY2xhc3MgZnVuY3Rpb247CgoKICBjbGFz
cyBfRnVuY3Rpb25fYmFzZQogIHsKICBwdWJsaWM6CiAgICBzdGF0aWMgY29uc3Qgc3RkOjpzaXpl
X3QgX01fbWF4X3NpemUgPSBzaXplb2YoX05vY29weV90eXBlcyk7CiAgICBzdGF0aWMgY29uc3Qg
c3RkOjpzaXplX3QgX01fbWF4X2FsaWduID0gX19hbGlnbm9mX18oX05vY29weV90eXBlcyk7Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmN0b3I+CiAgICAgIGNsYXNzIF9CYXNlX21hbmFnZXIK
ICAgICAgewogICAgICBwcm90ZWN0ZWQ6CiBzdGF0aWMgY29uc3QgYm9vbCBfX3N0b3JlZF9sb2Nh
bGx5ID0KIChfX2lzX2xvY2F0aW9uX2ludmFyaWFudDxfRnVuY3Rvcj46OnZhbHVlCiAgJiYgc2l6
ZW9mKF9GdW5jdG9yKSA8PSBfTV9tYXhfc2l6ZQogICYmIF9fYWxpZ25vZl9fKF9GdW5jdG9yKSA8
PSBfTV9tYXhfYWxpZ24KICAmJiAoX01fbWF4X2FsaWduICUgX19hbGlnbm9mX18oX0Z1bmN0b3Ip
ID09IDApKTsKCiB0eXBlZGVmIGludGVncmFsX2NvbnN0YW50PGJvb2wsIF9fc3RvcmVkX2xvY2Fs
bHk+IF9Mb2NhbF9zdG9yYWdlOwoKCiBzdGF0aWMgX0Z1bmN0b3IqCiBfTV9nZXRfcG9pbnRlcihj
b25zdCBfQW55X2RhdGEmIF9fc291cmNlKQogewogICBjb25zdCBfRnVuY3RvciogX19wdHIgPQog
ICAgIF9fc3RvcmVkX2xvY2FsbHk/IHN0ZDo6X19hZGRyZXNzb2YoX19zb3VyY2UuX01fYWNjZXNz
PF9GdW5jdG9yPigpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9fc291cmNl
Ll9NX2FjY2VzczxfRnVuY3Rvcio+KCk7CiAgIHJldHVybiBjb25zdF9jYXN0PF9GdW5jdG9yKj4o
X19wdHIpOwogfQoKCgogc3RhdGljIHZvaWQKIF9NX2Nsb25lKF9BbnlfZGF0YSYgX19kZXN0LCBj
b25zdCBfQW55X2RhdGEmIF9fc291cmNlLCB0cnVlX3R5cGUpCiB7CiAgIG5ldyAoX19kZXN0Ll9N
X2FjY2VzcygpKSBfRnVuY3RvcihfX3NvdXJjZS5fTV9hY2Nlc3M8X0Z1bmN0b3I+KCkpOwogfQoK
Cgogc3RhdGljIHZvaWQKIF9NX2Nsb25lKF9BbnlfZGF0YSYgX19kZXN0LCBjb25zdCBfQW55X2Rh
dGEmIF9fc291cmNlLCBmYWxzZV90eXBlKQogewogICBfX2Rlc3QuX01fYWNjZXNzPF9GdW5jdG9y
Kj4oKSA9CiAgICAgbmV3IF9GdW5jdG9yKCpfX3NvdXJjZS5fTV9hY2Nlc3M8X0Z1bmN0b3IqPigp
KTsKIH0KCgoKIHN0YXRpYyB2b2lkCiBfTV9kZXN0cm95KF9BbnlfZGF0YSYgX192aWN0aW0sIHRy
dWVfdHlwZSkKIHsKICAgX192aWN0aW0uX01fYWNjZXNzPF9GdW5jdG9yPigpLn5fRnVuY3Rvcigp
OwogfQoKCiBzdGF0aWMgdm9pZAogX01fZGVzdHJveShfQW55X2RhdGEmIF9fdmljdGltLCBmYWxz
ZV90eXBlKQogewogICBkZWxldGUgX192aWN0aW0uX01fYWNjZXNzPF9GdW5jdG9yKj4oKTsKIH0K
CiAgICAgIHB1YmxpYzoKIHN0YXRpYyBib29sCiBfTV9tYW5hZ2VyKF9BbnlfZGF0YSYgX19kZXN0
LCBjb25zdCBfQW55X2RhdGEmIF9fc291cmNlLAogICAgIF9NYW5hZ2VyX29wZXJhdGlvbiBfX29w
KQogewogICBzd2l0Y2ggKF9fb3ApCiAgICAgewoKCgoKCiAgICAgY2FzZSBfX2dldF9mdW5jdG9y
X3B0cjoKICAgICAgIF9fZGVzdC5fTV9hY2Nlc3M8X0Z1bmN0b3IqPigpID0gX01fZ2V0X3BvaW50
ZXIoX19zb3VyY2UpOwogICAgICAgYnJlYWs7CgogICAgIGNhc2UgX19jbG9uZV9mdW5jdG9yOgog
ICAgICAgX01fY2xvbmUoX19kZXN0LCBfX3NvdXJjZSwgX0xvY2FsX3N0b3JhZ2UoKSk7CiAgICAg
ICBicmVhazsKCiAgICAgY2FzZSBfX2Rlc3Ryb3lfZnVuY3RvcjoKICAgICAgIF9NX2Rlc3Ryb3ko
X19kZXN0LCBfTG9jYWxfc3RvcmFnZSgpKTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgcmV0dXJu
IGZhbHNlOwogfQoKIHN0YXRpYyB2b2lkCiBfTV9pbml0X2Z1bmN0b3IoX0FueV9kYXRhJiBfX2Z1
bmN0b3IsIF9GdW5jdG9yJiYgX19mKQogeyBfTV9pbml0X2Z1bmN0b3IoX19mdW5jdG9yLCBzdGQ6
Om1vdmUoX19mKSwgX0xvY2FsX3N0b3JhZ2UoKSk7IH0KCiB0ZW1wbGF0ZTx0eXBlbmFtZSBfU2ln
bmF0dXJlPgogICBzdGF0aWMgYm9vbAogICBfTV9ub3RfZW1wdHlfZnVuY3Rpb24oY29uc3QgZnVu
Y3Rpb248X1NpZ25hdHVyZT4mIF9fZikKICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oX19m
KTsgfQoKIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgc3RhdGljIGJvb2wKICAgX01fbm90X2Vt
cHR5X2Z1bmN0aW9uKF9UcCogY29uc3QmIF9fZnApCiAgIHsgcmV0dXJuIF9fZnA7IH0KCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2xhc3MsIHR5cGVuYW1lIF9UcD4KICAgc3RhdGljIGJvb2wKICAgX01f
bm90X2VtcHR5X2Z1bmN0aW9uKF9UcCBfQ2xhc3M6OiogY29uc3QmIF9fbXApCiAgIHsgcmV0dXJu
IF9fbXA7IH0KCiB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgIHN0YXRpYyBib29sCiAgIF9NX25v
dF9lbXB0eV9mdW5jdGlvbihjb25zdCBfVHAmKQogICB7IHJldHVybiB0cnVlOyB9CgogICAgICBw
cml2YXRlOgogc3RhdGljIHZvaWQKIF9NX2luaXRfZnVuY3RvcihfQW55X2RhdGEmIF9fZnVuY3Rv
ciwgX0Z1bmN0b3ImJiBfX2YsIHRydWVfdHlwZSkKIHsgbmV3IChfX2Z1bmN0b3IuX01fYWNjZXNz
KCkpIF9GdW5jdG9yKHN0ZDo6bW92ZShfX2YpKTsgfQoKIHN0YXRpYyB2b2lkCiBfTV9pbml0X2Z1
bmN0b3IoX0FueV9kYXRhJiBfX2Z1bmN0b3IsIF9GdW5jdG9yJiYgX19mLCBmYWxzZV90eXBlKQog
eyBfX2Z1bmN0b3IuX01fYWNjZXNzPF9GdW5jdG9yKj4oKSA9IG5ldyBfRnVuY3RvcihzdGQ6Om1v
dmUoX19mKSk7IH0KICAgICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnVuY3Rvcj4KICAg
ICAgY2xhc3MgX1JlZl9tYW5hZ2VyIDogcHVibGljIF9CYXNlX21hbmFnZXI8X0Z1bmN0b3IqPgog
ICAgICB7CiB0eXBlZGVmIF9GdW5jdGlvbl9iYXNlOjpfQmFzZV9tYW5hZ2VyPF9GdW5jdG9yKj4g
X0Jhc2U7CgogICAgICBwdWJsaWM6CiBzdGF0aWMgYm9vbAogX01fbWFuYWdlcihfQW55X2RhdGEm
IF9fZGVzdCwgY29uc3QgX0FueV9kYXRhJiBfX3NvdXJjZSwKICAgICBfTWFuYWdlcl9vcGVyYXRp
b24gX19vcCkKIHsKICAgc3dpdGNoIChfX29wKQogICAgIHsKCgoKCgogICAgIGNhc2UgX19nZXRf
ZnVuY3Rvcl9wdHI6CiAgICAgICBfX2Rlc3QuX01fYWNjZXNzPF9GdW5jdG9yKj4oKSA9ICpfQmFz
ZTo6X01fZ2V0X3BvaW50ZXIoX19zb3VyY2UpOwogICAgICAgcmV0dXJuIGlzX2NvbnN0PF9GdW5j
dG9yPjo6dmFsdWU7CiAgICAgICBicmVhazsKCiAgICAgZGVmYXVsdDoKICAgICAgIF9CYXNlOjpf
TV9tYW5hZ2VyKF9fZGVzdCwgX19zb3VyY2UsIF9fb3ApOwogICAgIH0KICAgcmV0dXJuIGZhbHNl
OwogfQoKIHN0YXRpYyB2b2lkCiBfTV9pbml0X2Z1bmN0b3IoX0FueV9kYXRhJiBfX2Z1bmN0b3Is
IHJlZmVyZW5jZV93cmFwcGVyPF9GdW5jdG9yPiBfX2YpCiB7CiAgIF9CYXNlOjpfTV9pbml0X2Z1
bmN0b3IoX19mdW5jdG9yLCBzdGQ6Ol9fYWRkcmVzc29mKF9fZi5nZXQoKSkpOwogfQogICAgICB9
OwoKICAgIF9GdW5jdGlvbl9iYXNlKCkgOiBfTV9tYW5hZ2VyKDApIHsgfQoKICAgIH5fRnVuY3Rp
b25fYmFzZSgpCiAgICB7CiAgICAgIGlmIChfTV9tYW5hZ2VyKQogX01fbWFuYWdlcihfTV9mdW5j
dG9yLCBfTV9mdW5jdG9yLCBfX2Rlc3Ryb3lfZnVuY3Rvcik7CiAgICB9CgoKICAgIGJvb2wgX01f
ZW1wdHkoKSBjb25zdCB7IHJldHVybiAhX01fbWFuYWdlcjsgfQoKICAgIHR5cGVkZWYgYm9vbCAo
Kl9NYW5hZ2VyX3R5cGUpKF9BbnlfZGF0YSYsIGNvbnN0IF9BbnlfZGF0YSYsCiAgICAgIF9NYW5h
Z2VyX29wZXJhdGlvbik7CgogICAgX0FueV9kYXRhIF9NX2Z1bmN0b3I7CiAgICBfTWFuYWdlcl90
eXBlIF9NX21hbmFnZXI7CiAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1NpZ25hdHVyZSwgdHlw
ZW5hbWUgX0Z1bmN0b3I+CiAgICBjbGFzcyBfRnVuY3Rpb25faGFuZGxlcjsKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUgX0Z1bmN0b3IsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4K
ICAgIGNsYXNzIF9GdW5jdGlvbl9oYW5kbGVyPF9SZXMoX0FyZ1R5cGVzLi4uKSwgX0Z1bmN0b3I+
CiAgICA6IHB1YmxpYyBfRnVuY3Rpb25fYmFzZTo6X0Jhc2VfbWFuYWdlcjxfRnVuY3Rvcj4KICAg
IHsKICAgICAgdHlwZWRlZiBfRnVuY3Rpb25fYmFzZTo6X0Jhc2VfbWFuYWdlcjxfRnVuY3Rvcj4g
X0Jhc2U7CgogICAgcHVibGljOgogICAgICBzdGF0aWMgX1JlcwogICAgICBfTV9pbnZva2UoY29u
c3QgX0FueV9kYXRhJiBfX2Z1bmN0b3IsIF9BcmdUeXBlcy4uLiBfX2FyZ3MpCiAgICAgIHsKIHJl
dHVybiAoKl9CYXNlOjpfTV9nZXRfcG9pbnRlcihfX2Z1bmN0b3IpKSgKICAgICBzdGQ6OmZvcndh
cmQ8X0FyZ1R5cGVzPihfX2FyZ3MpLi4uKTsKICAgICAgfQogICAgfTsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0Z1bmN0b3IsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAgIGNsYXNzIF9GdW5jdGlv
bl9oYW5kbGVyPHZvaWQoX0FyZ1R5cGVzLi4uKSwgX0Z1bmN0b3I+CiAgICA6IHB1YmxpYyBfRnVu
Y3Rpb25fYmFzZTo6X0Jhc2VfbWFuYWdlcjxfRnVuY3Rvcj4KICAgIHsKICAgICAgdHlwZWRlZiBf
RnVuY3Rpb25fYmFzZTo6X0Jhc2VfbWFuYWdlcjxfRnVuY3Rvcj4gX0Jhc2U7CgogICAgIHB1Ymxp
YzoKICAgICAgc3RhdGljIHZvaWQKICAgICAgX01faW52b2tlKGNvbnN0IF9BbnlfZGF0YSYgX19m
dW5jdG9yLCBfQXJnVHlwZXMuLi4gX19hcmdzKQogICAgICB7CiAoKl9CYXNlOjpfTV9nZXRfcG9p
bnRlcihfX2Z1bmN0b3IpKSgKICAgICBzdGQ6OmZvcndhcmQ8X0FyZ1R5cGVzPihfX2FyZ3MpLi4u
KTsKICAgICAgfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUgX0Z1
bmN0b3IsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAgIGNsYXNzIF9GdW5jdGlvbl9oYW5kbGVy
PF9SZXMoX0FyZ1R5cGVzLi4uKSwgcmVmZXJlbmNlX3dyYXBwZXI8X0Z1bmN0b3I+ID4KICAgIDog
cHVibGljIF9GdW5jdGlvbl9iYXNlOjpfUmVmX21hbmFnZXI8X0Z1bmN0b3I+CiAgICB7CiAgICAg
IHR5cGVkZWYgX0Z1bmN0aW9uX2Jhc2U6Ol9SZWZfbWFuYWdlcjxfRnVuY3Rvcj4gX0Jhc2U7Cgog
ICAgIHB1YmxpYzoKICAgICAgc3RhdGljIF9SZXMKICAgICAgX01faW52b2tlKGNvbnN0IF9Bbnlf
ZGF0YSYgX19mdW5jdG9yLCBfQXJnVHlwZXMuLi4gX19hcmdzKQogICAgICB7CiByZXR1cm4gX19j
YWxsYWJsZV9mdW5jdG9yKCoqX0Jhc2U6Ol9NX2dldF9wb2ludGVyKF9fZnVuY3RvcikpKAogICAg
ICAgc3RkOjpmb3J3YXJkPF9BcmdUeXBlcz4oX19hcmdzKS4uLik7CiAgICAgIH0KICAgIH07Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9GdW5jdG9yLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBj
bGFzcyBfRnVuY3Rpb25faGFuZGxlcjx2b2lkKF9BcmdUeXBlcy4uLiksIHJlZmVyZW5jZV93cmFw
cGVyPF9GdW5jdG9yPiA+CiAgICA6IHB1YmxpYyBfRnVuY3Rpb25fYmFzZTo6X1JlZl9tYW5hZ2Vy
PF9GdW5jdG9yPgogICAgewogICAgICB0eXBlZGVmIF9GdW5jdGlvbl9iYXNlOjpfUmVmX21hbmFn
ZXI8X0Z1bmN0b3I+IF9CYXNlOwoKICAgICBwdWJsaWM6CiAgICAgIHN0YXRpYyB2b2lkCiAgICAg
IF9NX2ludm9rZShjb25zdCBfQW55X2RhdGEmIF9fZnVuY3RvciwgX0FyZ1R5cGVzLi4uIF9fYXJn
cykKICAgICAgewogX19jYWxsYWJsZV9mdW5jdG9yKCoqX0Jhc2U6Ol9NX2dldF9wb2ludGVyKF9f
ZnVuY3RvcikpKAogICAgIHN0ZDo6Zm9yd2FyZDxfQXJnVHlwZXM+KF9fYXJncykuLi4pOwogICAg
ICB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2xhc3MsIHR5cGVuYW1lIF9NZW1iZXIs
IHR5cGVuYW1lIF9SZXMsCiAgICB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBjbGFzcyBfRnVu
Y3Rpb25faGFuZGxlcjxfUmVzKF9BcmdUeXBlcy4uLiksIF9NZW1iZXIgX0NsYXNzOjoqPgogICAg
OiBwdWJsaWMgX0Z1bmN0aW9uX2hhbmRsZXI8dm9pZChfQXJnVHlwZXMuLi4pLCBfTWVtYmVyIF9D
bGFzczo6Kj4KICAgIHsKICAgICAgdHlwZWRlZiBfRnVuY3Rpb25faGFuZGxlcjx2b2lkKF9BcmdU
eXBlcy4uLiksIF9NZW1iZXIgX0NsYXNzOjoqPgogX0Jhc2U7CgogICAgIHB1YmxpYzoKICAgICAg
c3RhdGljIF9SZXMKICAgICAgX01faW52b2tlKGNvbnN0IF9BbnlfZGF0YSYgX19mdW5jdG9yLCBf
QXJnVHlwZXMuLi4gX19hcmdzKQogICAgICB7CiByZXR1cm4gc3RkOjptZW1fZm4oX0Jhc2U6Ol9N
X2dldF9wb2ludGVyKF9fZnVuY3RvciktPl9fdmFsdWUpKAogICAgIHN0ZDo6Zm9yd2FyZDxfQXJn
VHlwZXM+KF9fYXJncykuLi4pOwogICAgICB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2xhc3MsIHR5cGVuYW1lIF9NZW1iZXIsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAgIGNsYXNz
IF9GdW5jdGlvbl9oYW5kbGVyPHZvaWQoX0FyZ1R5cGVzLi4uKSwgX01lbWJlciBfQ2xhc3M6Oio+
CiAgICA6IHB1YmxpYyBfRnVuY3Rpb25fYmFzZTo6X0Jhc2VfbWFuYWdlcjwKICAgX1NpbXBsZV90
eXBlX3dyYXBwZXI8IF9NZW1iZXIgX0NsYXNzOjoqID4gPgogICAgewogICAgICB0eXBlZGVmIF9N
ZW1iZXIgX0NsYXNzOjoqIF9GdW5jdG9yOwogICAgICB0eXBlZGVmIF9TaW1wbGVfdHlwZV93cmFw
cGVyPF9GdW5jdG9yPiBfV3JhcHBlcjsKICAgICAgdHlwZWRlZiBfRnVuY3Rpb25fYmFzZTo6X0Jh
c2VfbWFuYWdlcjxfV3JhcHBlcj4gX0Jhc2U7CgogICAgcHVibGljOgogICAgICBzdGF0aWMgYm9v
bAogICAgICBfTV9tYW5hZ2VyKF9BbnlfZGF0YSYgX19kZXN0LCBjb25zdCBfQW55X2RhdGEmIF9f
c291cmNlLAogICBfTWFuYWdlcl9vcGVyYXRpb24gX19vcCkKICAgICAgewogc3dpdGNoIChfX29w
KQogICB7CgoKCgoKICAgY2FzZSBfX2dldF9mdW5jdG9yX3B0cjoKICAgICBfX2Rlc3QuX01fYWNj
ZXNzPF9GdW5jdG9yKj4oKSA9CiAgICAgICAmX0Jhc2U6Ol9NX2dldF9wb2ludGVyKF9fc291cmNl
KS0+X192YWx1ZTsKICAgICBicmVhazsKCiAgIGRlZmF1bHQ6CiAgICAgX0Jhc2U6Ol9NX21hbmFn
ZXIoX19kZXN0LCBfX3NvdXJjZSwgX19vcCk7CiAgIH0KIHJldHVybiBmYWxzZTsKICAgICAgfQoK
ICAgICAgc3RhdGljIHZvaWQKICAgICAgX01faW52b2tlKGNvbnN0IF9BbnlfZGF0YSYgX19mdW5j
dG9yLCBfQXJnVHlwZXMuLi4gX19hcmdzKQogICAgICB7CiBzdGQ6Om1lbV9mbihfQmFzZTo6X01f
Z2V0X3BvaW50ZXIoX19mdW5jdG9yKS0+X192YWx1ZSkoCiAgICAgc3RkOjpmb3J3YXJkPF9BcmdU
eXBlcz4oX19hcmdzKS4uLik7CiAgICAgIH0KICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9G
cm9tLCB0eXBlbmFtZSBfVG8+CiAgICB1c2luZyBfX2NoZWNrX2Z1bmNfcmV0dXJuX3R5cGUKICAg
ICAgPSBfX29yXzxpc192b2lkPF9Ubz4sIGlzX2NvbnZlcnRpYmxlPF9Gcm9tLCBfVG8+PjsKCgoK
CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAg
Y2xhc3MgZnVuY3Rpb248X1JlcyhfQXJnVHlwZXMuLi4pPgogICAgOiBwdWJsaWMgX01heWJlX3Vu
YXJ5X29yX2JpbmFyeV9mdW5jdGlvbjxfUmVzLCBfQXJnVHlwZXMuLi4+LAogICAgICBwcml2YXRl
IF9GdW5jdGlvbl9iYXNlCiAgICB7CiAgICAgIHR5cGVkZWYgX1JlcyBfU2lnbmF0dXJlX3R5cGUo
X0FyZ1R5cGVzLi4uKTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GdW5jdG9yPgogdXNpbmcg
X0ludm9rZSA9IGRlY2x0eXBlKF9fY2FsbGFibGVfZnVuY3RvcihzdGQ6OmRlY2x2YWw8X0Z1bmN0
b3ImPigpKQogICAgIChzdGQ6OmRlY2x2YWw8X0FyZ1R5cGVzPigpLi4uKSApOwoKCgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiB1c2luZyBfTm90U2VsZiA9IF9fbm90Xzxpc19zYW1lPF9U
cCwgZnVuY3Rpb24+PjsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GdW5jdG9yPgogdXNpbmcg
X0NhbGxhYmxlCiAgID0gX19hbmRfPF9Ob3RTZWxmPF9GdW5jdG9yPiwKICAgICBfX2NoZWNrX2Z1
bmNfcmV0dXJuX3R5cGU8X0ludm9rZTxfRnVuY3Rvcj4sIF9SZXM+PjsKCiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9Db25kLCB0eXBlbmFtZSBfVHA+CiB1c2luZyBfUmVxdWlyZXMgPSB0eXBlbmFt
ZSBlbmFibGVfaWY8X0NvbmQ6OnZhbHVlLCBfVHA+Ojp0eXBlOwoKICAgIHB1YmxpYzoKICAgICAg
dHlwZWRlZiBfUmVzIHJlc3VsdF90eXBlOwoKCgoKCgoKICAgICAgZnVuY3Rpb24oKSBub2V4Y2Vw
dAogICAgICA6IF9GdW5jdGlvbl9iYXNlKCkgeyB9CgoKCgoKICAgICAgZnVuY3Rpb24obnVsbHB0
cl90KSBub2V4Y2VwdAogICAgICA6IF9GdW5jdGlvbl9iYXNlKCkgeyB9CiMgMjE5MiAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9mdW5jdGlv
bmFsIiAzCiAgICAgIGZ1bmN0aW9uKGNvbnN0IGZ1bmN0aW9uJiBfX3gpOwojIDIyMDEgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvZnVuY3Rp
b25hbCIgMwogICAgICBmdW5jdGlvbihmdW5jdGlvbiYmIF9feCkgOiBfRnVuY3Rpb25fYmFzZSgp
CiAgICAgIHsKIF9feC5zd2FwKCp0aGlzKTsKICAgICAgfQojIDIyMjQgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvZnVuY3Rpb25hbCIgMwog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnVuY3RvciwKICAgICAgICB0eXBlbmFtZSA9IF9SZXF1
aXJlczxfQ2FsbGFibGU8X0Z1bmN0b3I+LCB2b2lkPj4KIGZ1bmN0aW9uKF9GdW5jdG9yKTsKIyAy
MjQwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OS4zL2Z1bmN0aW9uYWwiIDMKICAgICAgZnVuY3Rpb24mCiAgICAgIG9wZXJhdG9yPShjb25zdCBm
dW5jdGlvbiYgX194KQogICAgICB7CiBmdW5jdGlvbihfX3gpLnN3YXAoKnRoaXMpOwogcmV0dXJu
ICp0aGlzOwogICAgICB9CiMgMjI1OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9mdW5jdGlvbmFsIiAzCiAgICAgIGZ1bmN0aW9uJgogICAg
ICBvcGVyYXRvcj0oZnVuY3Rpb24mJiBfX3gpCiAgICAgIHsKIGZ1bmN0aW9uKHN0ZDo6bW92ZShf
X3gpKS5zd2FwKCp0aGlzKTsKIHJldHVybiAqdGhpczsKICAgICAgfQojIDIyNzIgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvZnVuY3Rpb25h
bCIgMwogICAgICBmdW5jdGlvbiYKICAgICAgb3BlcmF0b3I9KG51bGxwdHJfdCkKICAgICAgewog
aWYgKF9NX21hbmFnZXIpCiAgIHsKICAgICBfTV9tYW5hZ2VyKF9NX2Z1bmN0b3IsIF9NX2Z1bmN0
b3IsIF9fZGVzdHJveV9mdW5jdG9yKTsKICAgICBfTV9tYW5hZ2VyID0gMDsKICAgICBfTV9pbnZv
a2VyID0gMDsKICAgfQogcmV0dXJuICp0aGlzOwogICAgICB9CiMgMjMwMCAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9mdW5jdGlvbmFsIiAz
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GdW5jdG9yPgogX1JlcXVpcmVzPF9DYWxsYWJsZTx0
eXBlbmFtZSBkZWNheTxfRnVuY3Rvcj46OnR5cGU+LCBmdW5jdGlvbiY+CiBvcGVyYXRvcj0oX0Z1
bmN0b3ImJiBfX2YpCiB7CiAgIGZ1bmN0aW9uKHN0ZDo6Zm9yd2FyZDxfRnVuY3Rvcj4oX19mKSku
c3dhcCgqdGhpcyk7CiAgIHJldHVybiAqdGhpczsKIH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRnVuY3Rvcj4KIGZ1bmN0aW9uJgogb3BlcmF0b3I9KHJlZmVyZW5jZV93cmFwcGVyPF9GdW5j
dG9yPiBfX2YpIG5vZXhjZXB0CiB7CiAgIGZ1bmN0aW9uKF9fZikuc3dhcCgqdGhpcyk7CiAgIHJl
dHVybiAqdGhpczsKIH0KIyAyMzI2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2Z1bmN0aW9uYWwiIDMKICAgICAgdm9pZCBzd2FwKGZ1bmN0
aW9uJiBfX3gpCiAgICAgIHsKIHN0ZDo6c3dhcChfTV9mdW5jdG9yLCBfX3guX01fZnVuY3Rvcik7
CiBzdGQ6OnN3YXAoX01fbWFuYWdlciwgX194Ll9NX21hbmFnZXIpOwogc3RkOjpzd2FwKF9NX2lu
dm9rZXIsIF9feC5fTV9pbnZva2VyKTsKICAgICAgfQojIDIzNTQgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvZnVuY3Rpb25hbCIgMwogICAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4g
IV9NX2VtcHR5KCk7IH0KIyAyMzY3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2Z1bmN0aW9uYWwiIDMKICAgICAgX1JlcyBvcGVyYXRvcigp
KF9BcmdUeXBlcy4uLiBfX2FyZ3MpIGNvbnN0OwojIDIzOTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvZnVuY3Rpb25hbCIgMwogICAgcHJp
dmF0ZToKICAgICAgdHlwZWRlZiBfUmVzICgqX0ludm9rZXJfdHlwZSkoY29uc3QgX0FueV9kYXRh
JiwgX0FyZ1R5cGVzLi4uKTsKICAgICAgX0ludm9rZXJfdHlwZSBfTV9pbnZva2VyOwogIH07CgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBmdW5j
dGlvbjxfUmVzKF9BcmdUeXBlcy4uLik+OjoKICAgIGZ1bmN0aW9uKGNvbnN0IGZ1bmN0aW9uJiBf
X3gpCiAgICA6IF9GdW5jdGlvbl9iYXNlKCkKICAgIHsKICAgICAgaWYgKHN0YXRpY19jYXN0PGJv
b2w+KF9feCkpCiB7CiAgIF9feC5fTV9tYW5hZ2VyKF9NX2Z1bmN0b3IsIF9feC5fTV9mdW5jdG9y
LCBfX2Nsb25lX2Z1bmN0b3IpOwogICBfTV9pbnZva2VyID0gX194Ll9NX2ludm9rZXI7CiAgIF9N
X21hbmFnZXIgPSBfX3guX01fbWFuYWdlcjsKIH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JlcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmN0
b3IsIHR5cGVuYW1lPgogICAgICBmdW5jdGlvbjxfUmVzKF9BcmdUeXBlcy4uLik+OjoKICAgICAg
ZnVuY3Rpb24oX0Z1bmN0b3IgX19mKQogICAgICA6IF9GdW5jdGlvbl9iYXNlKCkKICAgICAgewog
dHlwZWRlZiBfRnVuY3Rpb25faGFuZGxlcjxfU2lnbmF0dXJlX3R5cGUsIF9GdW5jdG9yPiBfTXlf
aGFuZGxlcjsKCiBpZiAoX015X2hhbmRsZXI6Ol9NX25vdF9lbXB0eV9mdW5jdGlvbihfX2YpKQog
ICB7CiAgICAgX015X2hhbmRsZXI6Ol9NX2luaXRfZnVuY3RvcihfTV9mdW5jdG9yLCBzdGQ6Om1v
dmUoX19mKSk7CiAgICAgX01faW52b2tlciA9ICZfTXlfaGFuZGxlcjo6X01faW52b2tlOwogICAg
IF9NX21hbmFnZXIgPSAmX015X2hhbmRsZXI6Ol9NX21hbmFnZXI7CiAgIH0KICAgICAgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBfUmVzCiAg
ICBmdW5jdGlvbjxfUmVzKF9BcmdUeXBlcy4uLik+OjoKICAgIG9wZXJhdG9yKCkoX0FyZ1R5cGVz
Li4uIF9fYXJncykgY29uc3QKICAgIHsKICAgICAgaWYgKF9NX2VtcHR5KCkpCiBfX3Rocm93X2Jh
ZF9mdW5jdGlvbl9jYWxsKCk7CiAgICAgIHJldHVybiBfTV9pbnZva2VyKF9NX2Z1bmN0b3IsIHN0
ZDo6Zm9yd2FyZDxfQXJnVHlwZXM+KF9fYXJncykuLi4pOwogICAgfQojIDI1MDMgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvZnVuY3Rpb25h
bCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lLi4uIF9BcmdzPgogICAgaW5s
aW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgZnVuY3Rpb248X1JlcyhfQXJncy4uLik+JiBf
X2YsIG51bGxwdHJfdCkgbm9leGNlcHQKICAgIHsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPihf
X2YpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJncz4KICAg
IGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KG51bGxwdHJfdCwgY29uc3QgZnVuY3Rpb248X1Jl
cyhfQXJncy4uLik+JiBfX2YpIG5vZXhjZXB0CiAgICB7IHJldHVybiAhc3RhdGljX2Nhc3Q8Ym9v
bD4oX19mKTsgfQojIDI1MjEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvZnVuY3Rpb25hbCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMs
IHR5cGVuYW1lLi4uIF9BcmdzPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3Qg
ZnVuY3Rpb248X1JlcyhfQXJncy4uLik+JiBfX2YsIG51bGxwdHJfdCkgbm9leGNlcHQKICAgIHsg
cmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9fZik7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
ZXMsIHR5cGVuYW1lLi4uIF9BcmdzPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0obnVs
bHB0cl90LCBjb25zdCBmdW5jdGlvbjxfUmVzKF9BcmdzLi4uKT4mIF9fZikgbm9leGNlcHQKICAg
IHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9fZik7IH0KIyAyNTM5ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Z1bmN0aW9uYWwiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJncz4KICAgIGlubGluZSB2
b2lkCiAgICBzd2FwKGZ1bmN0aW9uPF9SZXMoX0FyZ3MuLi4pPiYgX194LCBmdW5jdGlvbjxfUmVz
KF9BcmdzLi4uKT4mIF9feSkKICAgIHsgX194LnN3YXAoX195KTsgfQoKCn0KIyA4MCAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9tZW1vcnki
IDIgMwoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2JpdHMvdW5pcXVlX3B0ci5oIiAxIDMKIyAzMSAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3VuaXF1ZV9wdHIuaCIg
MwojZGVmaW5lIF9VTklRVUVfUFRSX0ggMQoKCgoKCgoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0
ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCgoKCgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZT4gY2xhc3MgYXV0b19wdHI7CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg
c3RydWN0IGRlZmF1bHRfZGVsZXRlCiAgICB7CgogICAgICBjb25zdGV4cHIgZGVmYXVsdF9kZWxl
dGUoKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CgoKCgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9V
cCwgdHlwZW5hbWUgPSB0eXBlbmFtZQogICAgICAgIGVuYWJsZV9pZjxpc19jb252ZXJ0aWJsZTxf
VXAqLCBfVHAqPjo6dmFsdWU+Ojp0eXBlPgogICAgICAgIGRlZmF1bHRfZGVsZXRlKGNvbnN0IGRl
ZmF1bHRfZGVsZXRlPF9VcD4mKSBub2V4Y2VwdCB7IH0KCgogICAgICB2b2lkCiAgICAgIG9wZXJh
dG9yKCkoX1RwKiBfX3B0cikgY29uc3QKICAgICAgewogc3RhdGljX2Fzc2VydCghaXNfdm9pZDxf
VHA+Ojp2YWx1ZSwKICAgICAgICAiY2FuJ3QgZGVsZXRlIHBvaW50ZXIgdG8gaW5jb21wbGV0ZSB0
eXBlIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihfVHApPjAsCiAgICAgICAgImNhbid0IGRlbGV0
ZSBwb2ludGVyIHRvIGluY29tcGxldGUgdHlwZSIpOwogZGVsZXRlIF9fcHRyOwogICAgICB9CiAg
ICB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgZGVmYXVsdF9kZWxl
dGU8X1RwW10+CiAgICB7CiAgICBwcml2YXRlOgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+
CiB1c2luZyBfX3JlbW92ZV9jdiA9IHR5cGVuYW1lIHJlbW92ZV9jdjxfVXA+Ojp0eXBlOwoKCiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4KIHVzaW5nIF9faXNfZGVyaXZlZF9UcAogICA9IF9f
YW5kXzwgaXNfYmFzZV9vZjxfVHAsIF9VcD4sCiAgICAgIF9fbm90Xzxpc19zYW1lPF9fcmVtb3Zl
X2N2PF9UcD4sIF9fcmVtb3ZlX2N2PF9VcD4+PiA+OwoKICAgIHB1YmxpYzoKCiAgICAgIGNvbnN0
ZXhwciBkZWZhdWx0X2RlbGV0ZSgpIG5vZXhjZXB0ID0gZGVmYXVsdDsKIyAxMDkgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy91bmlx
dWVfcHRyLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VwLCB0eXBlbmFtZSA9IHR5cGVu
YW1lCiAgICAgICAgZW5hYmxlX2lmPCFfX2lzX2Rlcml2ZWRfVHA8X1VwPjo6dmFsdWU+Ojp0eXBl
PgogICAgICAgIGRlZmF1bHRfZGVsZXRlKGNvbnN0IGRlZmF1bHRfZGVsZXRlPF9VcFtdPiYpIG5v
ZXhjZXB0IHsgfQoKCiAgICAgIHZvaWQKICAgICAgb3BlcmF0b3IoKShfVHAqIF9fcHRyKSBjb25z
dAogICAgICB7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihfVHApPjAsCiAgICAgICAgImNhbid0IGRl
bGV0ZSBwb2ludGVyIHRvIGluY29tcGxldGUgdHlwZSIpOwogZGVsZXRlIFtdIF9fcHRyOwogICAg
ICB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+CiB0eXBlbmFtZSBlbmFibGVfaWY8X19p
c19kZXJpdmVkX1RwPF9VcD46OnZhbHVlPjo6dHlwZQogb3BlcmF0b3IoKShfVXAqKSBjb25zdCA9
IGRlbGV0ZTsKICAgIH07CgoKICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfRHAg
PSBkZWZhdWx0X2RlbGV0ZTxfVHA+ID4KICAgIGNsYXNzIHVuaXF1ZV9wdHIKICAgIHsKCiAgICAg
IGNsYXNzIF9Qb2ludGVyCiAgICAgIHsKIHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4KICAgc3RhdGlj
IHR5cGVuYW1lIF9VcDo6cG9pbnRlciBfX3Rlc3QodHlwZW5hbWUgX1VwOjpwb2ludGVyKik7Cgog
dGVtcGxhdGU8dHlwZW5hbWUgX1VwPgogICBzdGF0aWMgX1RwKiBfX3Rlc3QoLi4uKTsKCiB0eXBl
ZGVmIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8X0RwPjo6dHlwZSBfRGVsOwoKICAgICAgcHVi
bGljOgogdHlwZWRlZiBkZWNsdHlwZShfX3Rlc3Q8X0RlbD4oMCkpIHR5cGU7CiAgICAgIH07Cgog
ICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dHlwZW5hbWUgX1BvaW50ZXI6OnR5cGUsIF9EcD4gX190
dXBsZV90eXBlOwogICAgICBfX3R1cGxlX3R5cGUgX01fdDsKCiAgICBwdWJsaWM6CiAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgX1BvaW50ZXI6OnR5cGUgcG9pbnRlcjsKICAgICAgdHlwZWRlZiBfVHAg
ZWxlbWVudF90eXBlOwogICAgICB0eXBlZGVmIF9EcCBkZWxldGVyX3R5cGU7CgoKCgogICAgICBj
b25zdGV4cHIgdW5pcXVlX3B0cigpIG5vZXhjZXB0CiAgICAgIDogX01fdCgpCiAgICAgIHsgc3Rh
dGljX2Fzc2VydCghaXNfcG9pbnRlcjxkZWxldGVyX3R5cGU+Ojp2YWx1ZSwKICAgICAgICJjb25z
dHJ1Y3RlZCB3aXRoIG51bGwgZnVuY3Rpb24gcG9pbnRlciBkZWxldGVyIik7IH0KCgoKCgoKCiAg
ICAgIGV4cGxpY2l0CiAgICAgIHVuaXF1ZV9wdHIocG9pbnRlciBfX3ApIG5vZXhjZXB0CiAgICAg
IDogX01fdChfX3AsIGRlbGV0ZXJfdHlwZSgpKQogICAgICB7IHN0YXRpY19hc3NlcnQoIWlzX3Bv
aW50ZXI8ZGVsZXRlcl90eXBlPjo6dmFsdWUsCiAgICAgICAiY29uc3RydWN0ZWQgd2l0aCBudWxs
IGZ1bmN0aW9uIHBvaW50ZXIgZGVsZXRlciIpOyB9CiMgMTgxICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvdW5pcXVlX3B0ci5oIiAz
CiAgICAgIHVuaXF1ZV9wdHIocG9pbnRlciBfX3AsCiAgIHR5cGVuYW1lIGNvbmRpdGlvbmFsPGlz
X3JlZmVyZW5jZTxkZWxldGVyX3R5cGU+Ojp2YWx1ZSwKICAgICBkZWxldGVyX3R5cGUsIGNvbnN0
IGRlbGV0ZXJfdHlwZSY+Ojp0eXBlIF9fZCkgbm9leGNlcHQKICAgICAgOiBfTV90KF9fcCwgX19k
KSB7IH0KIyAxOTMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvYml0cy91bmlxdWVfcHRyLmgiIDMKICAgICAgdW5pcXVlX3B0cihwb2ludGVy
IF9fcCwKICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxkZWxldGVyX3R5cGU+Ojp0eXBlJiYg
X19kKSBub2V4Y2VwdAogICAgICA6IF9NX3Qoc3RkOjptb3ZlKF9fcCksIHN0ZDo6bW92ZShfX2Qp
KQogICAgICB7IHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfcmVmZXJlbmNlPGRlbGV0ZXJfdHlwZT46
OnZhbHVlLAogICAgICAgICJydmFsdWUgZGVsZXRlciBib3VuZCB0byByZWZlcmVuY2UiKTsgfQoK
CiAgICAgIGNvbnN0ZXhwciB1bmlxdWVfcHRyKG51bGxwdHJfdCkgbm9leGNlcHQgOiB1bmlxdWVf
cHRyKCkgeyB9CgoKCgogICAgICB1bmlxdWVfcHRyKHVuaXF1ZV9wdHImJiBfX3UpIG5vZXhjZXB0
CiAgICAgIDogX01fdChfX3UucmVsZWFzZSgpLCBzdGQ6OmZvcndhcmQ8ZGVsZXRlcl90eXBlPihf
X3UuZ2V0X2RlbGV0ZXIoKSkpIHsgfQoKCgoKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Vw
LCB0eXBlbmFtZSBfRXAsIHR5cGVuYW1lID0gX1JlcXVpcmU8CiAgICAgICAgaXNfY29udmVydGli
bGU8dHlwZW5hbWUgdW5pcXVlX3B0cjxfVXAsIF9FcD46OnBvaW50ZXIsIHBvaW50ZXI+LAogICAg
ICAgIF9fbm90Xzxpc19hcnJheTxfVXA+PiwKICAgICAgICB0eXBlbmFtZSBjb25kaXRpb25hbDxp
c19yZWZlcmVuY2U8X0RwPjo6dmFsdWUsCiAgICAgICAgaXNfc2FtZTxfRXAsIF9EcD4sCiAgICAg
ICAgaXNfY29udmVydGlibGU8X0VwLCBfRHA+Pjo6dHlwZT4+CiB1bmlxdWVfcHRyKHVuaXF1ZV9w
dHI8X1VwLCBfRXA+JiYgX191KSBub2V4Y2VwdAogOiBfTV90KF9fdS5yZWxlYXNlKCksIHN0ZDo6
Zm9yd2FyZDxfRXA+KF9fdS5nZXRfZGVsZXRlcigpKSkKIHsgfQoKCgogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVXAsIHR5cGVuYW1lID0gX1JlcXVpcmU8CiAgICAgICAgaXNfY29udmVydGlibGU8
X1VwKiwgX1RwKj4sIGlzX3NhbWU8X0RwLCBkZWZhdWx0X2RlbGV0ZTxfVHA+Pj4+CiB1bmlxdWVf
cHRyKGF1dG9fcHRyPF9VcD4mJiBfX3UpIG5vZXhjZXB0OwoKCgogICAgICB+dW5pcXVlX3B0cigp
IG5vZXhjZXB0CiAgICAgIHsKIGF1dG8mIF9fcHRyID0gc3RkOjpnZXQ8MD4oX01fdCk7CiBpZiAo
X19wdHIgIT0gbnVsbHB0cikKICAgZ2V0X2RlbGV0ZXIoKShfX3B0cik7CiBfX3B0ciA9IHBvaW50
ZXIoKTsKICAgICAgfQojIDI0OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3VuaXF1ZV9wdHIuaCIgMwogICAgICB1bmlxdWVfcHRy
JgogICAgICBvcGVyYXRvcj0odW5pcXVlX3B0ciYmIF9fdSkgbm9leGNlcHQKICAgICAgewogcmVz
ZXQoX191LnJlbGVhc2UoKSk7CiBnZXRfZGVsZXRlcigpID0gc3RkOjpmb3J3YXJkPGRlbGV0ZXJf
dHlwZT4oX191LmdldF9kZWxldGVyKCkpOwogcmV0dXJuICp0aGlzOwogICAgICB9CiMgMjYzICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Jp
dHMvdW5pcXVlX3B0ci5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VcCwgdHlwZW5hbWUg
X0VwPgogdHlwZW5hbWUgZW5hYmxlX2lmPCBfX2FuZF88CiAgIGlzX2NvbnZlcnRpYmxlPHR5cGVu
YW1lIHVuaXF1ZV9wdHI8X1VwLCBfRXA+Ojpwb2ludGVyLCBwb2ludGVyPiwKICAgX19ub3RfPGlz
X2FycmF5PF9VcD4+CiAgID46OnZhbHVlLAogICB1bmlxdWVfcHRyJj46OnR5cGUKIG9wZXJhdG9y
PSh1bmlxdWVfcHRyPF9VcCwgX0VwPiYmIF9fdSkgbm9leGNlcHQKIHsKICAgcmVzZXQoX191LnJl
bGVhc2UoKSk7CiAgIGdldF9kZWxldGVyKCkgPSBzdGQ6OmZvcndhcmQ8X0VwPihfX3UuZ2V0X2Rl
bGV0ZXIoKSk7CiAgIHJldHVybiAqdGhpczsKIH0KCgogICAgICB1bmlxdWVfcHRyJgogICAgICBv
cGVyYXRvcj0obnVsbHB0cl90KSBub2V4Y2VwdAogICAgICB7CiByZXNldCgpOwogcmV0dXJuICp0
aGlzOwogICAgICB9CgoKCgogICAgICB0eXBlbmFtZSBhZGRfbHZhbHVlX3JlZmVyZW5jZTxlbGVt
ZW50X3R5cGU+Ojp0eXBlCiAgICAgIG9wZXJhdG9yKigpIGNvbnN0CiAgICAgIHsKIDsKIHJldHVy
biAqZ2V0KCk7CiAgICAgIH0KCgogICAgICBwb2ludGVyCiAgICAgIG9wZXJhdG9yLT4oKSBjb25z
dCBub2V4Y2VwdAogICAgICB7CiA7CiByZXR1cm4gZ2V0KCk7CiAgICAgIH0KCgogICAgICBwb2lu
dGVyCiAgICAgIGdldCgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0ZDo6Z2V0PDA+
KF9NX3QpOyB9CgoKICAgICAgZGVsZXRlcl90eXBlJgogICAgICBnZXRfZGVsZXRlcigpIG5vZXhj
ZXB0CiAgICAgIHsgcmV0dXJuIHN0ZDo6Z2V0PDE+KF9NX3QpOyB9CgoKICAgICAgY29uc3QgZGVs
ZXRlcl90eXBlJgogICAgICBnZXRfZGVsZXRlcigpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0
dXJuIHN0ZDo6Z2V0PDE+KF9NX3QpOyB9CgoKICAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGdldCgpID09IHBvaW50ZXIoKSA/IGZhbHNl
IDogdHJ1ZTsgfQoKCgoKICAgICAgcG9pbnRlcgogICAgICByZWxlYXNlKCkgbm9leGNlcHQKICAg
ICAgewogcG9pbnRlciBfX3AgPSBnZXQoKTsKIHN0ZDo6Z2V0PDA+KF9NX3QpID0gcG9pbnRlcigp
OwogcmV0dXJuIF9fcDsKICAgICAgfQoKCgoKCgoKICAgICAgdm9pZAogICAgICByZXNldChwb2lu
dGVyIF9fcCA9IHBvaW50ZXIoKSkgbm9leGNlcHQKICAgICAgewogdXNpbmcgc3RkOjpzd2FwOwog
c3dhcChzdGQ6OmdldDwwPihfTV90KSwgX19wKTsKIGlmIChfX3AgIT0gcG9pbnRlcigpKQogICBn
ZXRfZGVsZXRlcigpKF9fcCk7CiAgICAgIH0KCgogICAgICB2b2lkCiAgICAgIHN3YXAodW5pcXVl
X3B0ciYgX191KSBub2V4Y2VwdAogICAgICB7CiB1c2luZyBzdGQ6OnN3YXA7CiBzd2FwKF9NX3Qs
IF9fdS5fTV90KTsKICAgICAgfQoKCiAgICAgIHVuaXF1ZV9wdHIoY29uc3QgdW5pcXVlX3B0ciYp
ID0gZGVsZXRlOwogICAgICB1bmlxdWVfcHRyJiBvcGVyYXRvcj0oY29uc3QgdW5pcXVlX3B0ciYp
ID0gZGVsZXRlOwogIH07CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9E
cD4KICAgIGNsYXNzIHVuaXF1ZV9wdHI8X1RwW10sIF9EcD4KICAgIHsKCiAgICAgIGNsYXNzIF9Q
b2ludGVyCiAgICAgIHsKIHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4KICAgc3RhdGljIHR5cGVuYW1l
IF9VcDo6cG9pbnRlciBfX3Rlc3QodHlwZW5hbWUgX1VwOjpwb2ludGVyKik7CgogdGVtcGxhdGU8
dHlwZW5hbWUgX1VwPgogICBzdGF0aWMgX1RwKiBfX3Rlc3QoLi4uKTsKCiB0eXBlZGVmIHR5cGVu
YW1lIHJlbW92ZV9yZWZlcmVuY2U8X0RwPjo6dHlwZSBfRGVsOwoKICAgICAgcHVibGljOgogdHlw
ZWRlZiBkZWNsdHlwZShfX3Rlc3Q8X0RlbD4oMCkpIHR5cGU7CiAgICAgIH07CgogICAgICB0eXBl
ZGVmIHN0ZDo6dHVwbGU8dHlwZW5hbWUgX1BvaW50ZXI6OnR5cGUsIF9EcD4gX190dXBsZV90eXBl
OwogICAgICBfX3R1cGxlX3R5cGUgX01fdDsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4K
IHVzaW5nIF9fcmVtb3ZlX2N2ID0gdHlwZW5hbWUgcmVtb3ZlX2N2PF9VcD46OnR5cGU7CgoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VwPgogdXNpbmcgX19pc19kZXJpdmVkX1RwCiAgID0gX19h
bmRfPCBpc19iYXNlX29mPF9UcCwgX1VwPiwKICAgICAgX19ub3RfPGlzX3NhbWU8X19yZW1vdmVf
Y3Y8X1RwPiwgX19yZW1vdmVfY3Y8X1VwPj4+ID47CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VXAsIHR5cGVuYW1lIF9FcCwKICAgICAgICB0eXBlbmFtZSBfVHBfcG9pbnRlciA9IHR5cGVuYW1l
IF9Qb2ludGVyOjp0eXBlLAogICAgICAgIHR5cGVuYW1lIF9VcF9wb2ludGVyID0gdHlwZW5hbWUg
dW5pcXVlX3B0cjxfVXAsIF9FcD46OnBvaW50ZXI+CiB1c2luZyBfX3NhZmVfY29udmVyc2lvbiA9
IF9fYW5kXzwKICAgICBpc19jb252ZXJ0aWJsZTxfVXBfcG9pbnRlciwgX1RwX3BvaW50ZXI+LAog
ICAgIGlzX2FycmF5PF9VcD4sCiAgICAgX19vcl88X19ub3RfPGlzX3BvaW50ZXI8X1VwX3BvaW50
ZXI+PiwKICAgIF9fbm90Xzxpc19wb2ludGVyPF9UcF9wb2ludGVyPj4sCiAgICBfX25vdF88X19p
c19kZXJpdmVkX1RwPHR5cGVuYW1lIHJlbW92ZV9leHRlbnQ8X1VwPjo6dHlwZT4+CiAgICAgPgog
ICA+OwoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfUG9pbnRlcjo6dHlwZSBw
b2ludGVyOwogICAgICB0eXBlZGVmIF9UcCBlbGVtZW50X3R5cGU7CiAgICAgIHR5cGVkZWYgX0Rw
IGRlbGV0ZXJfdHlwZTsKCgoKCiAgICAgIGNvbnN0ZXhwciB1bmlxdWVfcHRyKCkgbm9leGNlcHQK
ICAgICAgOiBfTV90KCkKICAgICAgeyBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3BvaW50ZXI8ZGVs
ZXRlcl90eXBlPjo6dmFsdWUsCiAgICAgICAgImNvbnN0cnVjdGVkIHdpdGggbnVsbCBmdW5jdGlv
biBwb2ludGVyIGRlbGV0ZXIiKTsgfQoKCgoKCgoKICAgICAgZXhwbGljaXQKICAgICAgdW5pcXVl
X3B0cihwb2ludGVyIF9fcCkgbm9leGNlcHQKICAgICAgOiBfTV90KF9fcCwgZGVsZXRlcl90eXBl
KCkpCiAgICAgIHsgc3RhdGljX2Fzc2VydCghaXNfcG9pbnRlcjxkZWxldGVyX3R5cGU+Ojp2YWx1
ZSwKICAgICAgICAiY29uc3RydWN0ZWQgd2l0aCBudWxsIGZ1bmN0aW9uIHBvaW50ZXIgZGVsZXRl
ciIpOyB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VwLCB0eXBlbmFtZSA9IF9SZXF1aXJl
PGlzX3BvaW50ZXI8cG9pbnRlcj4sCiAgICAgICAgaXNfY29udmVydGlibGU8X1VwKiwgcG9pbnRl
cj4sIF9faXNfZGVyaXZlZF9UcDxfVXA+Pj4KIGV4cGxpY2l0CiB1bmlxdWVfcHRyKF9VcCogX19w
KSA9IGRlbGV0ZTsKIyA0NDQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvYml0cy91bmlxdWVfcHRyLmgiIDMKICAgICAgdW5pcXVlX3B0cihw
b2ludGVyIF9fcCwKICAgdHlwZW5hbWUgY29uZGl0aW9uYWw8aXNfcmVmZXJlbmNlPGRlbGV0ZXJf
dHlwZT46OnZhbHVlLAogICAgICAgZGVsZXRlcl90eXBlLCBjb25zdCBkZWxldGVyX3R5cGUmPjo6
dHlwZSBfX2QpIG5vZXhjZXB0CiAgICAgIDogX01fdChfX3AsIF9fZCkgeyB9CiMgNDU2ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMv
dW5pcXVlX3B0ci5oIiAzCiAgICAgIHVuaXF1ZV9wdHIocG9pbnRlciBfX3AsIHR5cGVuYW1lCiAg
IHJlbW92ZV9yZWZlcmVuY2U8ZGVsZXRlcl90eXBlPjo6dHlwZSYmIF9fZCkgbm9leGNlcHQKICAg
ICAgOiBfTV90KHN0ZDo6bW92ZShfX3ApLCBzdGQ6Om1vdmUoX19kKSkKICAgICAgeyBzdGF0aWNf
YXNzZXJ0KCFpc19yZWZlcmVuY2U8ZGVsZXRlcl90eXBlPjo6dmFsdWUsCiAgICAgICAgInJ2YWx1
ZSBkZWxldGVyIGJvdW5kIHRvIHJlZmVyZW5jZSIpOyB9CgoKICAgICAgdW5pcXVlX3B0cih1bmlx
dWVfcHRyJiYgX191KSBub2V4Y2VwdAogICAgICA6IF9NX3QoX191LnJlbGVhc2UoKSwgc3RkOjpm
b3J3YXJkPGRlbGV0ZXJfdHlwZT4oX191LmdldF9kZWxldGVyKCkpKSB7IH0KCgogICAgICBjb25z
dGV4cHIgdW5pcXVlX3B0cihudWxscHRyX3QpIG5vZXhjZXB0IDogdW5pcXVlX3B0cigpIHsgfQoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VwLCB0eXBlbmFtZSBfRXAsCiAgICAgICAgdHlwZW5h
bWUgPSBfUmVxdWlyZTxfX3NhZmVfY29udmVyc2lvbjxfVXAsIF9FcD4sCiAgIHR5cGVuYW1lIGNv
bmRpdGlvbmFsPGlzX3JlZmVyZW5jZTxfRHA+Ojp2YWx1ZSwKICAgICAgICAgIGlzX3NhbWU8X0Vw
LCBfRHA+LAogICAgICAgICAgaXNfY29udmVydGlibGU8X0VwLCBfRHA+Pjo6dHlwZQogICAgICAg
ID4+CiB1bmlxdWVfcHRyKHVuaXF1ZV9wdHI8X1VwLCBfRXA+JiYgX191KSBub2V4Y2VwdAogOiBf
TV90KF9fdS5yZWxlYXNlKCksIHN0ZDo6Zm9yd2FyZDxfRXA+KF9fdS5nZXRfZGVsZXRlcigpKSkK
IHsgfQoKCiAgICAgIH51bmlxdWVfcHRyKCkKICAgICAgewogYXV0byYgX19wdHIgPSBzdGQ6Omdl
dDwwPihfTV90KTsKIGlmIChfX3B0ciAhPSBudWxscHRyKQogICBnZXRfZGVsZXRlcigpKF9fcHRy
KTsKIF9fcHRyID0gcG9pbnRlcigpOwogICAgICB9CiMgNDk2ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvdW5pcXVlX3B0ci5oIiAz
CiAgICAgIHVuaXF1ZV9wdHImCiAgICAgIG9wZXJhdG9yPSh1bmlxdWVfcHRyJiYgX191KSBub2V4
Y2VwdAogICAgICB7CiByZXNldChfX3UucmVsZWFzZSgpKTsKIGdldF9kZWxldGVyKCkgPSBzdGQ6
OmZvcndhcmQ8ZGVsZXRlcl90eXBlPihfX3UuZ2V0X2RlbGV0ZXIoKSk7CiByZXR1cm4gKnRoaXM7
CiAgICAgIH0KIyA1MTEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy91bmlxdWVfcHRyLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1VwLCB0eXBlbmFtZSBfRXA+CiB0eXBlbmFtZQogZW5hYmxlX2lmPF9fc2FmZV9jb252ZXJz
aW9uPF9VcCwgX0VwPjo6dmFsdWUsIHVuaXF1ZV9wdHImPjo6dHlwZQogb3BlcmF0b3I9KHVuaXF1
ZV9wdHI8X1VwLCBfRXA+JiYgX191KSBub2V4Y2VwdAogewogICByZXNldChfX3UucmVsZWFzZSgp
KTsKICAgZ2V0X2RlbGV0ZXIoKSA9IHN0ZDo6Zm9yd2FyZDxfRXA+KF9fdS5nZXRfZGVsZXRlcigp
KTsKICAgcmV0dXJuICp0aGlzOwogfQoKCiAgICAgIHVuaXF1ZV9wdHImCiAgICAgIG9wZXJhdG9y
PShudWxscHRyX3QpIG5vZXhjZXB0CiAgICAgIHsKIHJlc2V0KCk7CiByZXR1cm4gKnRoaXM7CiAg
ICAgIH0KCgoKCiAgICAgIHR5cGVuYW1lIHN0ZDo6YWRkX2x2YWx1ZV9yZWZlcmVuY2U8ZWxlbWVu
dF90eXBlPjo6dHlwZQogICAgICBvcGVyYXRvcltdKHNpemVfdCBfX2kpIGNvbnN0CiAgICAgIHsK
IDsKIHJldHVybiBnZXQoKVtfX2ldOwogICAgICB9CgoKICAgICAgcG9pbnRlcgogICAgICBnZXQo
KSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGQ6OmdldDwwPihfTV90KTsgfQoKCiAg
ICAgIGRlbGV0ZXJfdHlwZSYKICAgICAgZ2V0X2RlbGV0ZXIoKSBub2V4Y2VwdAogICAgICB7IHJl
dHVybiBzdGQ6OmdldDwxPihfTV90KTsgfQoKCiAgICAgIGNvbnN0IGRlbGV0ZXJfdHlwZSYKICAg
ICAgZ2V0X2RlbGV0ZXIoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGQ6OmdldDwx
PihfTV90KTsgfQoKCiAgICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCBub2V4Y2Vw
dAogICAgICB7IHJldHVybiBnZXQoKSA9PSBwb2ludGVyKCkgPyBmYWxzZSA6IHRydWU7IH0KCgoK
CiAgICAgIHBvaW50ZXIKICAgICAgcmVsZWFzZSgpIG5vZXhjZXB0CiAgICAgIHsKIHBvaW50ZXIg
X19wID0gZ2V0KCk7CiBzdGQ6OmdldDwwPihfTV90KSA9IHBvaW50ZXIoKTsKIHJldHVybiBfX3A7
CiAgICAgIH0KCgoKCgoKCiAgICAgIHZvaWQKICAgICAgcmVzZXQocG9pbnRlciBfX3AgPSBwb2lu
dGVyKCkpIG5vZXhjZXB0CiAgICAgIHsKIHVzaW5nIHN0ZDo6c3dhcDsKIHN3YXAoc3RkOjpnZXQ8
MD4oX01fdCksIF9fcCk7CiBpZiAoX19wICE9IG51bGxwdHIpCiAgIGdldF9kZWxldGVyKCkoX19w
KTsKICAgICAgfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VcCwgdHlwZW5hbWUgPSBfUmVx
dWlyZTxpc19wb2ludGVyPHBvaW50ZXI+LAogICAgICAgIGlzX2NvbnZlcnRpYmxlPF9VcCosIHBv
aW50ZXI+LCBfX2lzX2Rlcml2ZWRfVHA8X1VwPj4+CiB2b2lkIHJlc2V0KF9VcCopID0gZGVsZXRl
OwoKCiAgICAgIHZvaWQKICAgICAgc3dhcCh1bmlxdWVfcHRyJiBfX3UpIG5vZXhjZXB0CiAgICAg
IHsKIHVzaW5nIHN0ZDo6c3dhcDsKIHN3YXAoX01fdCwgX191Ll9NX3QpOwogICAgICB9CgoKICAg
ICAgdW5pcXVlX3B0cihjb25zdCB1bmlxdWVfcHRyJikgPSBkZWxldGU7CiAgICAgIHVuaXF1ZV9w
dHImIG9wZXJhdG9yPShjb25zdCB1bmlxdWVfcHRyJikgPSBkZWxldGU7CgoKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1VwLCB0eXBlbmFtZSA9IF9SZXF1aXJlPGlzX3BvaW50ZXI8cG9pbnRlcj4s
CiAgICAgICAgaXNfY29udmVydGlibGU8X1VwKiwgcG9pbnRlcj4sIF9faXNfZGVyaXZlZF9UcDxf
VXA+Pj4KIHVuaXF1ZV9wdHIoX1VwKiwgdHlwZW5hbWUKICAgICBjb25kaXRpb25hbDxpc19yZWZl
cmVuY2U8ZGVsZXRlcl90eXBlPjo6dmFsdWUsCiAgICAgZGVsZXRlcl90eXBlLCBjb25zdCBkZWxl
dGVyX3R5cGUmPjo6dHlwZSkgPSBkZWxldGU7CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Vw
LCB0eXBlbmFtZSA9IF9SZXF1aXJlPGlzX3BvaW50ZXI8cG9pbnRlcj4sCiAgICAgICAgaXNfY29u
dmVydGlibGU8X1VwKiwgcG9pbnRlcj4sIF9faXNfZGVyaXZlZF9UcDxfVXA+Pj4KIHVuaXF1ZV9w
dHIoX1VwKiwgdHlwZW5hbWUKICAgICByZW1vdmVfcmVmZXJlbmNlPGRlbGV0ZXJfdHlwZT46OnR5
cGUmJikgPSBkZWxldGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1l
IF9EcD4KICAgIGlubGluZSB2b2lkCiAgICBzd2FwKHVuaXF1ZV9wdHI8X1RwLCBfRHA+JiBfX3gs
CiAgdW5pcXVlX3B0cjxfVHAsIF9EcD4mIF9feSkgbm9leGNlcHQKICAgIHsgX194LnN3YXAoX195
KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9EcCwKICAgIHR5cGVuYW1l
IF9VcCwgdHlwZW5hbWUgX0VwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3Qg
dW5pcXVlX3B0cjxfVHAsIF9EcD4mIF9feCwKICAgICAgICBjb25zdCB1bmlxdWVfcHRyPF9VcCwg
X0VwPiYgX195KQogICAgeyByZXR1cm4gX194LmdldCgpID09IF9feS5nZXQoKTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9EcD4KICAgIGlubGluZSBib29sCiAgICBvcGVy
YXRvcj09KGNvbnN0IHVuaXF1ZV9wdHI8X1RwLCBfRHA+JiBfX3gsIG51bGxwdHJfdCkgbm9leGNl
cHQKICAgIHsgcmV0dXJuICFfX3g7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFt
ZSBfRHA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I9PShudWxscHRyX3QsIGNvbnN0IHVu
aXF1ZV9wdHI8X1RwLCBfRHA+JiBfX3gpIG5vZXhjZXB0CiAgICB7IHJldHVybiAhX194OyB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0RwLAogICAgdHlwZW5hbWUgX1VwLCB0
eXBlbmFtZSBfRXA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCB1bmlxdWVf
cHRyPF9UcCwgX0RwPiYgX194LAogICAgICAgIGNvbnN0IHVuaXF1ZV9wdHI8X1VwLCBfRXA+JiBf
X3kpCiAgICB7IHJldHVybiBfX3guZ2V0KCkgIT0gX195LmdldCgpOyB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0RwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0o
Y29uc3QgdW5pcXVlX3B0cjxfVHAsIF9EcD4mIF9feCwgbnVsbHB0cl90KSBub2V4Y2VwdAogICAg
eyByZXR1cm4gKGJvb2wpX194OyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUg
X0RwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0obnVsbHB0cl90LCBjb25zdCB1bmlx
dWVfcHRyPF9UcCwgX0RwPiYgX194KSBub2V4Y2VwdAogICAgeyByZXR1cm4gKGJvb2wpX194OyB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0RwLAogICAgdHlwZW5hbWUgX1Vw
LCB0eXBlbmFtZSBfRXA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IHVuaXF1
ZV9wdHI8X1RwLCBfRHA+JiBfX3gsCiAgICAgICBjb25zdCB1bmlxdWVfcHRyPF9VcCwgX0VwPiYg
X195KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lCiBzdGQ6OmNvbW1vbl90eXBlPHR5cGVu
YW1lIHVuaXF1ZV9wdHI8X1RwLCBfRHA+Ojpwb2ludGVyLAogICAgICAgICAgICAgICAgICB0eXBl
bmFtZSB1bmlxdWVfcHRyPF9VcCwgX0VwPjo6cG9pbnRlcj46OnR5cGUgX0NUOwogICAgICByZXR1
cm4gc3RkOjpsZXNzPF9DVD4oKShfX3guZ2V0KCksIF9feS5nZXQoKSk7CiAgICB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0RwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJh
dG9yPChjb25zdCB1bmlxdWVfcHRyPF9UcCwgX0RwPiYgX194LCBudWxscHRyX3QpCiAgICB7IHJl
dHVybiBzdGQ6Omxlc3M8dHlwZW5hbWUgdW5pcXVlX3B0cjxfVHAsIF9EcD46OnBvaW50ZXI+KCko
X194LmdldCgpLAogICAgICAgICBudWxscHRyKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAs
IHR5cGVuYW1lIF9EcD4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjwobnVsbHB0cl90LCBj
b25zdCB1bmlxdWVfcHRyPF9UcCwgX0RwPiYgX194KQogICAgeyByZXR1cm4gc3RkOjpsZXNzPHR5
cGVuYW1lIHVuaXF1ZV9wdHI8X1RwLCBfRHA+Ojpwb2ludGVyPigpKG51bGxwdHIsCiAgICAgICAg
IF9feC5nZXQoKSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfRHAsCiAg
ICB0eXBlbmFtZSBfVXAsIHR5cGVuYW1lIF9FcD4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRv
cjw9KGNvbnN0IHVuaXF1ZV9wdHI8X1RwLCBfRHA+JiBfX3gsCiAgICAgICAgY29uc3QgdW5pcXVl
X3B0cjxfVXAsIF9FcD4mIF9feSkKICAgIHsgcmV0dXJuICEoX195IDwgX194KTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9EcD4KICAgIGlubGluZSBib29sCiAgICBvcGVy
YXRvcjw9KGNvbnN0IHVuaXF1ZV9wdHI8X1RwLCBfRHA+JiBfX3gsIG51bGxwdHJfdCkKICAgIHsg
cmV0dXJuICEobnVsbHB0ciA8IF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBl
bmFtZSBfRHA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8PShudWxscHRyX3QsIGNvbnN0
IHVuaXF1ZV9wdHI8X1RwLCBfRHA+JiBfX3gpCiAgICB7IHJldHVybiAhKF9feCA8IG51bGxwdHIp
OyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0RwLAogICAgdHlwZW5hbWUg
X1VwLCB0eXBlbmFtZSBfRXA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+KGNvbnN0IHVu
aXF1ZV9wdHI8X1RwLCBfRHA+JiBfX3gsCiAgICAgICBjb25zdCB1bmlxdWVfcHRyPF9VcCwgX0Vw
PiYgX195KQogICAgeyByZXR1cm4gKF9feSA8IF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwLCB0eXBlbmFtZSBfRHA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+KGNvbnN0IHVu
aXF1ZV9wdHI8X1RwLCBfRHA+JiBfX3gsIG51bGxwdHJfdCkKICAgIHsgcmV0dXJuIHN0ZDo6bGVz
czx0eXBlbmFtZSB1bmlxdWVfcHRyPF9UcCwgX0RwPjo6cG9pbnRlcj4oKShudWxscHRyLAogICAg
ICAgICBfX3guZ2V0KCkpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0Rw
PgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPihudWxscHRyX3QsIGNvbnN0IHVuaXF1ZV9w
dHI8X1RwLCBfRHA+JiBfX3gpCiAgICB7IHJldHVybiBzdGQ6Omxlc3M8dHlwZW5hbWUgdW5pcXVl
X3B0cjxfVHAsIF9EcD46OnBvaW50ZXI+KCkoX194LmdldCgpLAogICAgICAgICBudWxscHRyKTsg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9EcCwKICAgIHR5cGVuYW1lIF9V
cCwgdHlwZW5hbWUgX0VwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPj0oY29uc3QgdW5p
cXVlX3B0cjxfVHAsIF9EcD4mIF9feCwKICAgICAgICBjb25zdCB1bmlxdWVfcHRyPF9VcCwgX0Vw
PiYgX195KQogICAgeyByZXR1cm4gIShfX3ggPCBfX3kpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcCwgdHlwZW5hbWUgX0RwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPj0oY29uc3Qg
dW5pcXVlX3B0cjxfVHAsIF9EcD4mIF9feCwgbnVsbHB0cl90KQogICAgeyByZXR1cm4gIShfX3gg
PCBudWxscHRyKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9EcD4KICAg
IGlubGluZSBib29sCiAgICBvcGVyYXRvcj49KG51bGxwdHJfdCwgY29uc3QgdW5pcXVlX3B0cjxf
VHAsIF9EcD4mIF9feCkKICAgIHsgcmV0dXJuICEobnVsbHB0ciA8IF9feCk7IH0KCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0RwPgogICAgc3RydWN0IGhhc2g8dW5pcXVlX3B0
cjxfVHAsIF9EcD4+CiAgICA6IHB1YmxpYyBfX2hhc2hfYmFzZTxzaXplX3QsIHVuaXF1ZV9wdHI8
X1RwLCBfRHA+PgogICAgewogICAgICBzaXplX3QKICAgICAgb3BlcmF0b3IoKShjb25zdCB1bmlx
dWVfcHRyPF9UcCwgX0RwPiYgX191KSBjb25zdCBub2V4Y2VwdAogICAgICB7CiB0eXBlZGVmIHVu
aXF1ZV9wdHI8X1RwLCBfRHA+IF9VUDsKIHJldHVybiBzdGQ6Omhhc2g8dHlwZW5hbWUgX1VQOjpw
b2ludGVyPigpKF9fdS5nZXQoKSk7CiAgICAgIH0KICAgIH07CiMgNzgxICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvdW5pcXVlX3B0
ci5oIiAzCgp9CiMgODIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvbWVtb3J5IiAyIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc2hhcmVkX3B0ci5oIiAxIDMKIyA1
MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9iaXRzL3NoYXJlZF9wdHIuaCIgMwojZGVmaW5lIF9TSEFSRURfUFRSX0ggMQoKIyAxICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMv
c2hhcmVkX3B0cl9iYXNlLmgiIDEgMwojIDUwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc2hhcmVkX3B0cl9iYXNlLmgiIDMKI2Rl
ZmluZSBfU0hBUkVEX1BUUl9CQVNFX0ggMQoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2V4dC9hbGlnbmVkX2J1ZmZlci5oIiAxIDMK
IyAzMCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9leHQvYWxpZ25lZF9idWZmZXIuaCIgMwojZGVmaW5lIF9BTElHTkVEX0JVRkZFUl9IIDEK
CiAgICAgICAKIyAzMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9leHQvYWxpZ25lZF9idWZmZXIuaCIgMwoKCgoKCgoKbmFtZXNwYWNlIF9f
Z251X2N4eAp7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fYWxpZ25lZF9i
dWZmZXIKICAgIDogc3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKF9UcCksIHN0ZDo6YWxpZ25t
ZW50X29mPF9UcD46OnZhbHVlPgogICAgewogICAgICB0eXBlbmFtZQogc3RkOjphbGlnbmVkX3N0
b3JhZ2U8c2l6ZW9mKF9UcCksIHN0ZDo6YWxpZ25tZW50X29mPF9UcD46OnZhbHVlPjo6dHlwZQog
X01fc3RvcmFnZTsKCiAgICAgIHZvaWQqCiAgICAgIF9NX2FkZHIoKSBub2V4Y2VwdAogICAgICB7
CiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHZvaWQqPigmX01fc3RvcmFnZSk7CiAgICAgIH0K
CiAgICAgIGNvbnN0IHZvaWQqCiAgICAgIF9NX2FkZHIoKSBjb25zdCBub2V4Y2VwdAogICAgICB7
CiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPigmX01fc3RvcmFnZSk7CiAg
ICAgIH0KCiAgICAgIF9UcCoKICAgICAgX01fcHRyKCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8X1RwKj4oX01fYWRkcigpKTsgfQoKICAgICAgY29uc3QgX1RwKgogICAgICBf
TV9wdHIoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBf
VHAqPihfTV9hZGRyKCkpOyB9CiAgICB9OwoKfQojIDUzICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc2hhcmVkX3B0cl9iYXNlLmgi
IDIgMwoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZh
dWx0IikpKQp7CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIGF1dG9fcHRyOwoKCgoKCgog
IGNsYXNzIGJhZF93ZWFrX3B0ciA6IHB1YmxpYyBzdGQ6OmV4Y2VwdGlvbgogIHsKICBwdWJsaWM6
CiAgICB2aXJ0dWFsIGNoYXIgY29uc3QqCiAgICB3aGF0KCkgY29uc3Qgbm9leGNlcHQ7CgogICAg
dmlydHVhbCB+YmFkX3dlYWtfcHRyKCkgbm9leGNlcHQ7CiAgfTsKCgogIGlubGluZSB2b2lkCiAg
X190aHJvd19iYWRfd2Vha19wdHIoKQogIHsgKF9fYnVpbHRpbl9hYm9ydCgpKTsgfQoKICB1c2lu
ZyBfX2dudV9jeHg6Ol9Mb2NrX3BvbGljeTsKICB1c2luZyBfX2dudV9jeHg6Ol9fZGVmYXVsdF9s
b2NrX3BvbGljeTsKICB1c2luZyBfX2dudV9jeHg6Ol9TX3NpbmdsZTsKICB1c2luZyBfX2dudV9j
eHg6Ol9TX211dGV4OwogIHVzaW5nIF9fZ251X2N4eDo6X1NfYXRvbWljOwoKCiAgdGVtcGxhdGU8
X0xvY2tfcG9saWN5IF9McD4KICAgIGNsYXNzIF9NdXRleF9iYXNlCiAgICB7CiAgICBwcm90ZWN0
ZWQ6CgogICAgICBlbnVtIHsgX1NfbmVlZF9iYXJyaWVycyA9IDAgfTsKICAgIH07CgogIHRlbXBs
YXRlPD4KICAgIGNsYXNzIF9NdXRleF9iYXNlPF9TX211dGV4PgogICAgOiBwdWJsaWMgX19nbnVf
Y3h4OjpfX211dGV4CiAgICB7CiAgICBwcm90ZWN0ZWQ6CgoKCiAgICAgIGVudW0geyBfU19uZWVk
X2JhcnJpZXJzID0gMSB9OwogICAgfTsKCiAgdGVtcGxhdGU8X0xvY2tfcG9saWN5IF9McCA9IF9f
ZGVmYXVsdF9sb2NrX3BvbGljeT4KICAgIGNsYXNzIF9TcF9jb3VudGVkX2Jhc2UKICAgIDogcHVi
bGljIF9NdXRleF9iYXNlPF9McD4KICAgIHsKICAgIHB1YmxpYzoKICAgICAgX1NwX2NvdW50ZWRf
YmFzZSgpIG5vZXhjZXB0CiAgICAgIDogX01fdXNlX2NvdW50KDEpLCBfTV93ZWFrX2NvdW50KDEp
IHsgfQoKICAgICAgdmlydHVhbAogICAgICB+X1NwX2NvdW50ZWRfYmFzZSgpIG5vZXhjZXB0CiAg
ICAgIHsgfQoKCgogICAgICB2aXJ0dWFsIHZvaWQKICAgICAgX01fZGlzcG9zZSgpIG5vZXhjZXB0
ID0gMDsKCgogICAgICB2aXJ0dWFsIHZvaWQKICAgICAgX01fZGVzdHJveSgpIG5vZXhjZXB0CiAg
ICAgIHsgZGVsZXRlIHRoaXM7IH0KCiAgICAgIHZpcnR1YWwgdm9pZCoKICAgICAgX01fZ2V0X2Rl
bGV0ZXIoY29uc3Qgc3RkOjp0eXBlX2luZm8mKSBub2V4Y2VwdCA9IDA7CgogICAgICB2b2lkCiAg
ICAgIF9NX2FkZF9yZWZfY29weSgpCiAgICAgIHsgX19nbnVfY3h4OjpfX2F0b21pY19hZGRfZGlz
cGF0Y2goJl9NX3VzZV9jb3VudCwgMSk7IH0KCiAgICAgIHZvaWQKICAgICAgX01fYWRkX3JlZl9s
b2NrKCk7CgogICAgICBib29sCiAgICAgIF9NX2FkZF9yZWZfbG9ja19ub3Rocm93KCk7CgogICAg
ICB2b2lkCiAgICAgIF9NX3JlbGVhc2UoKSBub2V4Y2VwdAogICAgICB7CgogICAgICAgIDsKIGlm
IChfX2dudV9jeHg6Ol9fZXhjaGFuZ2VfYW5kX2FkZF9kaXNwYXRjaCgmX01fdXNlX2NvdW50LCAt
MSkgPT0gMSkKICAgewogICAgICAgICAgICA7CiAgICAgX01fZGlzcG9zZSgpOwoKCgoKICAgICBp
ZiAoX011dGV4X2Jhc2U8X0xwPjo6X1NfbmVlZF9iYXJyaWVycykKICAgICAgIHsKICAgICAgICAg
X19hc20gX192b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CiAgICAgICAgIF9fYXNtIF9fdm9sYXRp
bGUgKCIiOjo6Im1lbW9yeSIpOwogICAgICAgfQoKCiAgICAgICAgICAgIDsKICAgICBpZiAoX19n
bnVfY3h4OjpfX2V4Y2hhbmdlX2FuZF9hZGRfZGlzcGF0Y2goJl9NX3dlYWtfY291bnQsCiAgICAg
ICAgICAgICAtMSkgPT0gMSkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICA7CiAgICAg
ICAgIF9NX2Rlc3Ryb3koKTsKICAgICAgICAgICAgICB9CiAgIH0KICAgICAgfQoKICAgICAgdm9p
ZAogICAgICBfTV93ZWFrX2FkZF9yZWYoKSBub2V4Y2VwdAogICAgICB7IF9fZ251X2N4eDo6X19h
dG9taWNfYWRkX2Rpc3BhdGNoKCZfTV93ZWFrX2NvdW50LCAxKTsgfQoKICAgICAgdm9pZAogICAg
ICBfTV93ZWFrX3JlbGVhc2UoKSBub2V4Y2VwdAogICAgICB7CgogICAgICAgIDsKIGlmIChfX2du
dV9jeHg6Ol9fZXhjaGFuZ2VfYW5kX2FkZF9kaXNwYXRjaCgmX01fd2Vha19jb3VudCwgLTEpID09
IDEpCiAgIHsKICAgICAgICAgICAgOwogICAgIGlmIChfTXV0ZXhfYmFzZTxfTHA+OjpfU19uZWVk
X2JhcnJpZXJzKQogICAgICAgewoKCiAgICAgICAgIF9fYXNtIF9fdm9sYXRpbGUgKCIiOjo6Im1l
bW9yeSIpOwogICAgICAgICBfX2FzbSBfX3ZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKTsKICAgICAg
IH0KICAgICBfTV9kZXN0cm95KCk7CiAgIH0KICAgICAgfQoKICAgICAgbG9uZwogICAgICBfTV9n
ZXRfdXNlX2NvdW50KCkgY29uc3Qgbm9leGNlcHQKICAgICAgewoKCiAgICAgICAgcmV0dXJuIF9f
YXRvbWljX2xvYWRfbigmX01fdXNlX2NvdW50LCAwKTsKICAgICAgfQoKICAgIHByaXZhdGU6CiAg
ICAgIF9TcF9jb3VudGVkX2Jhc2UoX1NwX2NvdW50ZWRfYmFzZSBjb25zdCYpID0gZGVsZXRlOwog
ICAgICBfU3BfY291bnRlZF9iYXNlJiBvcGVyYXRvcj0oX1NwX2NvdW50ZWRfYmFzZSBjb25zdCYp
ID0gZGVsZXRlOwoKICAgICAgX0F0b21pY193b3JkIF9NX3VzZV9jb3VudDsKICAgICAgX0F0b21p
Y193b3JkIF9NX3dlYWtfY291bnQ7CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBpbmxpbmUgdm9p
ZAogICAgX1NwX2NvdW50ZWRfYmFzZTxfU19zaW5nbGU+OjoKICAgIF9NX2FkZF9yZWZfbG9jaygp
CiAgICB7CiAgICAgIGlmIChfTV91c2VfY291bnQgPT0gMCkKIF9fdGhyb3dfYmFkX3dlYWtfcHRy
KCk7CiAgICAgICsrX01fdXNlX2NvdW50OwogICAgfQoKICB0ZW1wbGF0ZTw+CiAgICBpbmxpbmUg
dm9pZAogICAgX1NwX2NvdW50ZWRfYmFzZTxfU19tdXRleD46OgogICAgX01fYWRkX3JlZl9sb2Nr
KCkKICAgIHsKICAgICAgX19nbnVfY3h4OjpfX3Njb3BlZF9sb2NrIHNlbnRyeSgqdGhpcyk7CiAg
ICAgIGlmIChfX2dudV9jeHg6Ol9fZXhjaGFuZ2VfYW5kX2FkZF9kaXNwYXRjaCgmX01fdXNlX2Nv
dW50LCAxKSA9PSAwKQogewogICBfTV91c2VfY291bnQgPSAwOwogICBfX3Rocm93X2JhZF93ZWFr
X3B0cigpOwogfQogICAgfQoKICB0ZW1wbGF0ZTw+CiAgICBpbmxpbmUgdm9pZAogICAgX1NwX2Nv
dW50ZWRfYmFzZTxfU19hdG9taWM+OjoKICAgIF9NX2FkZF9yZWZfbG9jaygpCiAgICB7CgogICAg
ICBfQXRvbWljX3dvcmQgX19jb3VudCA9IF9NX2dldF91c2VfY291bnQoKTsKICAgICAgZG8KIHsK
ICAgaWYgKF9fY291bnQgPT0gMCkKICAgICBfX3Rocm93X2JhZF93ZWFrX3B0cigpOwoKCiB9CiAg
ICAgIHdoaWxlICghX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV9uKCZfTV91c2VfY291bnQsICZf
X2NvdW50LCBfX2NvdW50ICsgMSwKICAgICAgIHRydWUsIDQsCiAgICAgICAwKSk7CiAgICB9Cgog
IHRlbXBsYXRlPD4KICAgIGlubGluZSBib29sCiAgICBfU3BfY291bnRlZF9iYXNlPF9TX3Npbmds
ZT46OgogICAgX01fYWRkX3JlZl9sb2NrX25vdGhyb3coKQogICAgewogICAgICBpZiAoX01fdXNl
X2NvdW50ID09IDApCiByZXR1cm4gZmFsc2U7CiAgICAgICsrX01fdXNlX2NvdW50OwogICAgICBy
ZXR1cm4gdHJ1ZTsKICAgIH0KCiAgdGVtcGxhdGU8PgogICAgaW5saW5lIGJvb2wKICAgIF9TcF9j
b3VudGVkX2Jhc2U8X1NfbXV0ZXg+OjoKICAgIF9NX2FkZF9yZWZfbG9ja19ub3Rocm93KCkKICAg
IHsKICAgICAgX19nbnVfY3h4OjpfX3Njb3BlZF9sb2NrIHNlbnRyeSgqdGhpcyk7CiAgICAgIGlm
IChfX2dudV9jeHg6Ol9fZXhjaGFuZ2VfYW5kX2FkZF9kaXNwYXRjaCgmX01fdXNlX2NvdW50LCAx
KSA9PSAwKQogewogICBfTV91c2VfY291bnQgPSAwOwogICByZXR1cm4gZmFsc2U7CiB9CiAgICAg
IHJldHVybiB0cnVlOwogICAgfQoKICB0ZW1wbGF0ZTw+CiAgICBpbmxpbmUgYm9vbAogICAgX1Nw
X2NvdW50ZWRfYmFzZTxfU19hdG9taWM+OjoKICAgIF9NX2FkZF9yZWZfbG9ja19ub3Rocm93KCkK
ICAgIHsKCiAgICAgIF9BdG9taWNfd29yZCBfX2NvdW50ID0gX01fZ2V0X3VzZV9jb3VudCgpOwog
ICAgICBkbwogewogICBpZiAoX19jb3VudCA9PSAwKQogICAgIHJldHVybiBmYWxzZTsKCgogfQog
ICAgICB3aGlsZSAoIV9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigmX01fdXNlX2NvdW50LCAm
X19jb3VudCwgX19jb3VudCArIDEsCiAgICAgICB0cnVlLCA0LAogICAgICAgMCkpOwogICAgICBy
ZXR1cm4gdHJ1ZTsKICAgIH0KCiAgdGVtcGxhdGU8PgogICAgaW5saW5lIHZvaWQKICAgIF9TcF9j
b3VudGVkX2Jhc2U8X1Nfc2luZ2xlPjo6X01fYWRkX3JlZl9jb3B5KCkKICAgIHsgKytfTV91c2Vf
Y291bnQ7IH0KCiAgdGVtcGxhdGU8PgogICAgaW5saW5lIHZvaWQKICAgIF9TcF9jb3VudGVkX2Jh
c2U8X1Nfc2luZ2xlPjo6X01fcmVsZWFzZSgpIG5vZXhjZXB0CiAgICB7CiAgICAgIGlmICgtLV9N
X3VzZV9jb3VudCA9PSAwKQogICAgICAgIHsKICAgICAgICAgIF9NX2Rpc3Bvc2UoKTsKICAgICAg
ICAgIGlmICgtLV9NX3dlYWtfY291bnQgPT0gMCkKICAgICAgICAgICAgX01fZGVzdHJveSgpOwog
ICAgICAgIH0KICAgIH0KCiAgdGVtcGxhdGU8PgogICAgaW5saW5lIHZvaWQKICAgIF9TcF9jb3Vu
dGVkX2Jhc2U8X1Nfc2luZ2xlPjo6X01fd2Vha19hZGRfcmVmKCkgbm9leGNlcHQKICAgIHsgKytf
TV93ZWFrX2NvdW50OyB9CgogIHRlbXBsYXRlPD4KICAgIGlubGluZSB2b2lkCiAgICBfU3BfY291
bnRlZF9iYXNlPF9TX3NpbmdsZT46Ol9NX3dlYWtfcmVsZWFzZSgpIG5vZXhjZXB0CiAgICB7CiAg
ICAgIGlmICgtLV9NX3dlYWtfY291bnQgPT0gMCkKICAgICAgICBfTV9kZXN0cm95KCk7CiAgICB9
CgogIHRlbXBsYXRlPD4KICAgIGlubGluZSBsb25nCiAgICBfU3BfY291bnRlZF9iYXNlPF9TX3Np
bmdsZT46Ol9NX2dldF91c2VfY291bnQoKSBjb25zdCBub2V4Y2VwdAogICAgeyByZXR1cm4gX01f
dXNlX2NvdW50OyB9CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBfTG9ja19wb2xpY3kgX0xw
ID0gX19kZWZhdWx0X2xvY2tfcG9saWN5PgogICAgY2xhc3MgX19zaGFyZWRfcHRyOwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAsIF9Mb2NrX3BvbGljeSBfTHAgPSBfX2RlZmF1bHRfbG9ja19wb2xp
Y3k+CiAgICBjbGFzcyBfX3dlYWtfcHRyOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIF9Mb2Nr
X3BvbGljeSBfTHAgPSBfX2RlZmF1bHRfbG9ja19wb2xpY3k+CiAgICBjbGFzcyBfX2VuYWJsZV9z
aGFyZWRfZnJvbV90aGlzOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjbGFzcyBzaGFy
ZWRfcHRyOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjbGFzcyB3ZWFrX3B0cjsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IG93bmVyX2xlc3M7CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4KICAgIGNsYXNzIGVuYWJsZV9zaGFyZWRfZnJvbV90aGlzOwoKICB0ZW1w
bGF0ZTxfTG9ja19wb2xpY3kgX0xwID0gX19kZWZhdWx0X2xvY2tfcG9saWN5PgogICAgY2xhc3Mg
X193ZWFrX2NvdW50OwoKICB0ZW1wbGF0ZTxfTG9ja19wb2xpY3kgX0xwID0gX19kZWZhdWx0X2xv
Y2tfcG9saWN5PgogICAgY2xhc3MgX19zaGFyZWRfY291bnQ7CgoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1B0ciwgX0xvY2tfcG9saWN5IF9McD4KICAgIGNsYXNzIF9TcF9jb3VudGVkX3B0ciBmaW5h
bCA6IHB1YmxpYyBfU3BfY291bnRlZF9iYXNlPF9McD4KICAgIHsKICAgIHB1YmxpYzoKICAgICAg
ZXhwbGljaXQKICAgICAgX1NwX2NvdW50ZWRfcHRyKF9QdHIgX19wKSBub2V4Y2VwdAogICAgICA6
IF9NX3B0cihfX3ApIHsgfQoKICAgICAgdmlydHVhbCB2b2lkCiAgICAgIF9NX2Rpc3Bvc2UoKSBu
b2V4Y2VwdAogICAgICB7IGRlbGV0ZSBfTV9wdHI7IH0KCiAgICAgIHZpcnR1YWwgdm9pZAogICAg
ICBfTV9kZXN0cm95KCkgbm9leGNlcHQKICAgICAgeyBkZWxldGUgdGhpczsgfQoKICAgICAgdmly
dHVhbCB2b2lkKgogICAgICBfTV9nZXRfZGVsZXRlcihjb25zdCBzdGQ6OnR5cGVfaW5mbyYpIG5v
ZXhjZXB0CiAgICAgIHsgcmV0dXJuIG51bGxwdHI7IH0KCiAgICAgIF9TcF9jb3VudGVkX3B0cihj
b25zdCBfU3BfY291bnRlZF9wdHImKSA9IGRlbGV0ZTsKICAgICAgX1NwX2NvdW50ZWRfcHRyJiBv
cGVyYXRvcj0oY29uc3QgX1NwX2NvdW50ZWRfcHRyJikgPSBkZWxldGU7CgogICAgcHJpdmF0ZToK
ICAgICAgX1B0ciBfTV9wdHI7CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBpbmxpbmUgdm9pZAog
ICAgX1NwX2NvdW50ZWRfcHRyPG51bGxwdHJfdCwgX1Nfc2luZ2xlPjo6X01fZGlzcG9zZSgpIG5v
ZXhjZXB0IHsgfQoKICB0ZW1wbGF0ZTw+CiAgICBpbmxpbmUgdm9pZAogICAgX1NwX2NvdW50ZWRf
cHRyPG51bGxwdHJfdCwgX1NfbXV0ZXg+OjpfTV9kaXNwb3NlKCkgbm9leGNlcHQgeyB9CgogIHRl
bXBsYXRlPD4KICAgIGlubGluZSB2b2lkCiAgICBfU3BfY291bnRlZF9wdHI8bnVsbHB0cl90LCBf
U19hdG9taWM+OjpfTV9kaXNwb3NlKCkgbm9leGNlcHQgeyB9CgogIHRlbXBsYXRlPGludCBfTm0s
IHR5cGVuYW1lIF9UcCwKICAgIGJvb2wgX191c2VfZWJvID0gIV9faXNfZmluYWwoX1RwKSAmJiBf
X2lzX2VtcHR5KF9UcCk+CiAgICBzdHJ1Y3QgX1NwX2Vib19oZWxwZXI7CgoKICB0ZW1wbGF0ZTxp
bnQgX05tLCB0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX1NwX2Vib19oZWxwZXI8X05tLCBfVHAs
IHRydWU+IDogcHJpdmF0ZSBfVHAKICAgIHsKICAgICAgZXhwbGljaXQgX1NwX2Vib19oZWxwZXIo
Y29uc3QgX1RwJiBfX3RwKSA6IF9UcChfX3RwKSB7IH0KCiAgICAgIHN0YXRpYyBfVHAmCiAgICAg
IF9TX2dldChfU3BfZWJvX2hlbHBlciYgX19lYm9oKSB7IHJldHVybiBzdGF0aWNfY2FzdDxfVHAm
PihfX2Vib2gpOyB9CiAgICB9OwoKCiAgdGVtcGxhdGU8aW50IF9ObSwgdHlwZW5hbWUgX1RwPgog
ICAgc3RydWN0IF9TcF9lYm9faGVscGVyPF9ObSwgX1RwLCBmYWxzZT4KICAgIHsKICAgICAgZXhw
bGljaXQgX1NwX2Vib19oZWxwZXIoY29uc3QgX1RwJiBfX3RwKSA6IF9NX3RwKF9fdHApIHsgfQoK
ICAgICAgc3RhdGljIF9UcCYKICAgICAgX1NfZ2V0KF9TcF9lYm9faGVscGVyJiBfX2Vib2gpCiAg
ICAgIHsgcmV0dXJuIF9fZWJvaC5fTV90cDsgfQoKICAgIHByaXZhdGU6CiAgICAgIF9UcCBfTV90
cDsKICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUHRyLCB0eXBlbmFtZSBfRGVsZXRlciwg
dHlwZW5hbWUgX0FsbG9jLCBfTG9ja19wb2xpY3kgX0xwPgogICAgY2xhc3MgX1NwX2NvdW50ZWRf
ZGVsZXRlciBmaW5hbCA6IHB1YmxpYyBfU3BfY291bnRlZF9iYXNlPF9McD4KICAgIHsKICAgICAg
Y2xhc3MgX0ltcGwgOiBfU3BfZWJvX2hlbHBlcjwwLCBfRGVsZXRlcj4sIF9TcF9lYm9faGVscGVy
PDEsIF9BbGxvYz4KICAgICAgewogdHlwZWRlZiBfU3BfZWJvX2hlbHBlcjwwLCBfRGVsZXRlcj4g
X0RlbF9iYXNlOwogdHlwZWRlZiBfU3BfZWJvX2hlbHBlcjwxLCBfQWxsb2M+IF9BbGxvY19iYXNl
OwoKICAgICAgcHVibGljOgogX0ltcGwoX1B0ciBfX3AsIF9EZWxldGVyIF9fZCwgY29uc3QgX0Fs
bG9jJiBfX2EpIG5vZXhjZXB0CiA6IF9NX3B0cihfX3ApLCBfRGVsX2Jhc2UoX19kKSwgX0FsbG9j
X2Jhc2UoX19hKQogeyB9CgogX0RlbGV0ZXImIF9NX2RlbCgpIG5vZXhjZXB0IHsgcmV0dXJuIF9E
ZWxfYmFzZTo6X1NfZ2V0KCp0aGlzKTsgfQogX0FsbG9jJiBfTV9hbGxvYygpIG5vZXhjZXB0IHsg
cmV0dXJuIF9BbGxvY19iYXNlOjpfU19nZXQoKnRoaXMpOyB9CgogX1B0ciBfTV9wdHI7CiAgICAg
IH07CgogICAgcHVibGljOgoKICAgICAgX1NwX2NvdW50ZWRfZGVsZXRlcihfUHRyIF9fcCwgX0Rl
bGV0ZXIgX19kKSBub2V4Y2VwdAogICAgICA6IF9NX2ltcGwoX19wLCBfX2QsIF9BbGxvYygpKSB7
IH0KCgogICAgICBfU3BfY291bnRlZF9kZWxldGVyKF9QdHIgX19wLCBfRGVsZXRlciBfX2QsIGNv
bnN0IF9BbGxvYyYgX19hKSBub2V4Y2VwdAogICAgICA6IF9NX2ltcGwoX19wLCBfX2QsIF9fYSkg
eyB9CgogICAgICB+X1NwX2NvdW50ZWRfZGVsZXRlcigpIG5vZXhjZXB0IHsgfQoKICAgICAgdmly
dHVhbCB2b2lkCiAgICAgIF9NX2Rpc3Bvc2UoKSBub2V4Y2VwdAogICAgICB7IF9NX2ltcGwuX01f
ZGVsKCkoX01faW1wbC5fTV9wdHIpOyB9CgogICAgICB2aXJ0dWFsIHZvaWQKICAgICAgX01fZGVz
dHJveSgpIG5vZXhjZXB0CiAgICAgIHsKIHR5cGVkZWYgdHlwZW5hbWUgYWxsb2NhdG9yX3RyYWl0
czxfQWxsb2M+Ojp0ZW1wbGF0ZQogICByZWJpbmRfdHJhaXRzPF9TcF9jb3VudGVkX2RlbGV0ZXI+
IF9BbGxvY190cmFpdHM7CiB0eXBlbmFtZSBfQWxsb2NfdHJhaXRzOjphbGxvY2F0b3JfdHlwZSBf
X2EoX01faW1wbC5fTV9hbGxvYygpKTsKIF9BbGxvY190cmFpdHM6OmRlc3Ryb3koX19hLCB0aGlz
KTsKIF9BbGxvY190cmFpdHM6OmRlYWxsb2NhdGUoX19hLCB0aGlzLCAxKTsKICAgICAgfQoKICAg
ICAgdmlydHVhbCB2b2lkKgogICAgICBfTV9nZXRfZGVsZXRlcihjb25zdCBzdGQ6OnR5cGVfaW5m
byYgX190aSkgbm9leGNlcHQKICAgICAgewoKCgogICAgICAgIHJldHVybiBudWxscHRyOwoKICAg
ICAgfQoKICAgIHByaXZhdGU6CiAgICAgIF9JbXBsIF9NX2ltcGw7CiAgICB9OwoKCgogIHN0cnVj
dCBfU3BfbWFrZV9zaGFyZWRfdGFnIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBl
bmFtZSBfQWxsb2MsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBjbGFzcyBfU3BfY291bnRlZF9wdHJf
aW5wbGFjZSBmaW5hbCA6IHB1YmxpYyBfU3BfY291bnRlZF9iYXNlPF9McD4KICAgIHsKICAgICAg
Y2xhc3MgX0ltcGwgOiBfU3BfZWJvX2hlbHBlcjwwLCBfQWxsb2M+CiAgICAgIHsKIHR5cGVkZWYg
X1NwX2Vib19oZWxwZXI8MCwgX0FsbG9jPiBfQV9iYXNlOwoKICAgICAgcHVibGljOgogZXhwbGlj
aXQgX0ltcGwoX0FsbG9jIF9fYSkgbm9leGNlcHQgOiBfQV9iYXNlKF9fYSkgeyB9CgogX0FsbG9j
JiBfTV9hbGxvYygpIG5vZXhjZXB0IHsgcmV0dXJuIF9BX2Jhc2U6Ol9TX2dldCgqdGhpcyk7IH0K
CiBfX2dudV9jeHg6Ol9fYWxpZ25lZF9idWZmZXI8X1RwPiBfTV9zdG9yYWdlOwogICAgICB9OwoK
ICAgIHB1YmxpYzoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+CiBfU3BfY291bnRl
ZF9wdHJfaW5wbGFjZShfQWxsb2MgX19hLCBfQXJncyYmLi4uIF9fYXJncykKIDogX01faW1wbChf
X2EpCiB7CgoKICAgYWxsb2NhdG9yX3RyYWl0czxfQWxsb2M+Ojpjb25zdHJ1Y3QoX19hLCBfTV9w
dHIoKSwKICAgICAgIHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7CiB9CgogICAgICB+
X1NwX2NvdW50ZWRfcHRyX2lucGxhY2UoKSBub2V4Y2VwdCB7IH0KCiAgICAgIHZpcnR1YWwgdm9p
ZAogICAgICBfTV9kaXNwb3NlKCkgbm9leGNlcHQKICAgICAgewogYWxsb2NhdG9yX3RyYWl0czxf
QWxsb2M+OjpkZXN0cm95KF9NX2ltcGwuX01fYWxsb2MoKSwgX01fcHRyKCkpOwogICAgICB9CgoK
ICAgICAgdmlydHVhbCB2b2lkCiAgICAgIF9NX2Rlc3Ryb3koKSBub2V4Y2VwdAogICAgICB7CiB0
eXBlZGVmIHR5cGVuYW1lIGFsbG9jYXRvcl90cmFpdHM8X0FsbG9jPjo6dGVtcGxhdGUKICAgcmVi
aW5kX3RyYWl0czxfU3BfY291bnRlZF9wdHJfaW5wbGFjZT4gX0FsbG9jX3RyYWl0czsKIHR5cGVu
YW1lIF9BbGxvY190cmFpdHM6OmFsbG9jYXRvcl90eXBlIF9fYShfTV9pbXBsLl9NX2FsbG9jKCkp
OwogX0FsbG9jX3RyYWl0czo6ZGVzdHJveShfX2EsIHRoaXMpOwogX0FsbG9jX3RyYWl0czo6ZGVh
bGxvY2F0ZShfX2EsIHRoaXMsIDEpOwogICAgICB9CgoKICAgICAgdmlydHVhbCB2b2lkKgogICAg
ICBfTV9nZXRfZGVsZXRlcihjb25zdCBzdGQ6OnR5cGVfaW5mbyYgX190aSkgbm9leGNlcHQKICAg
ICAgewoKCgoKIHJldHVybiBudWxscHRyOwogICAgICB9CgogICAgcHJpdmF0ZToKICAgICAgX1Rw
KiBfTV9wdHIoKSBub2V4Y2VwdCB7IHJldHVybiBfTV9pbXBsLl9NX3N0b3JhZ2UuX01fcHRyKCk7
IH0KCiAgICAgIF9JbXBsIF9NX2ltcGw7CiAgICB9OwoKCiAgdGVtcGxhdGU8X0xvY2tfcG9saWN5
IF9McD4KICAgIGNsYXNzIF9fc2hhcmVkX2NvdW50CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIGNv
bnN0ZXhwciBfX3NoYXJlZF9jb3VudCgpIG5vZXhjZXB0IDogX01fcGkoMCkKICAgICAgeyB9Cgog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUHRyPgogICAgICAgIGV4cGxpY2l0CiBfX3NoYXJlZF9j
b3VudChfUHRyIF9fcCkgOiBfTV9waSgwKQogewogICBpZiAodHJ1ZSkKICAgICB7CiAgICAgICBf
TV9waSA9IG5ldyBfU3BfY291bnRlZF9wdHI8X1B0ciwgX0xwPihfX3ApOwogICAgIH0KICAgaWYg
KGZhbHNlKQogICAgIHsKICAgICAgIGRlbGV0ZSBfX3A7CiAgICAgICA7CiAgICAgfQogfQoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX1B0ciwgdHlwZW5hbWUgX0RlbGV0ZXI+CiBfX3NoYXJlZF9j
b3VudChfUHRyIF9fcCwgX0RlbGV0ZXIgX19kKQogOiBfX3NoYXJlZF9jb3VudChfX3AsIHN0ZDo6
bW92ZShfX2QpLCBhbGxvY2F0b3I8dm9pZD4oKSkKIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1B0ciwgdHlwZW5hbWUgX0RlbGV0ZXIsIHR5cGVuYW1lIF9BbGxvYz4KIF9fc2hhcmVkX2Nv
dW50KF9QdHIgX19wLCBfRGVsZXRlciBfX2QsIF9BbGxvYyBfX2EpIDogX01fcGkoMCkKIHsKICAg
dHlwZWRlZiBfU3BfY291bnRlZF9kZWxldGVyPF9QdHIsIF9EZWxldGVyLCBfQWxsb2MsIF9McD4g
X1NwX2NkX3R5cGU7CiAgIHR5cGVkZWYgdHlwZW5hbWUgYWxsb2NhdG9yX3RyYWl0czxfQWxsb2M+
Ojp0ZW1wbGF0ZQogICAgIHJlYmluZF90cmFpdHM8X1NwX2NkX3R5cGU+IF9BbGxvY190cmFpdHM7
CiAgIHR5cGVuYW1lIF9BbGxvY190cmFpdHM6OmFsbG9jYXRvcl90eXBlIF9fYTIoX19hKTsKICAg
X1NwX2NkX3R5cGUqIF9fbWVtID0gMDsKICAgaWYgKHRydWUpCiAgICAgewogICAgICAgX19tZW0g
PSBfQWxsb2NfdHJhaXRzOjphbGxvY2F0ZShfX2EyLCAxKTsKICAgICAgIF9BbGxvY190cmFpdHM6
OmNvbnN0cnVjdChfX2EyLCBfX21lbSwKICAgIF9fcCwgc3RkOjptb3ZlKF9fZCksIHN0ZDo6bW92
ZShfX2EpKTsKICAgICAgIF9NX3BpID0gX19tZW07CiAgICAgfQogICBpZiAoZmFsc2UpCiAgICAg
ewogICAgICAgX19kKF9fcCk7CiAgICAgICBpZiAoX19tZW0pCiAgICAgICAgIF9BbGxvY190cmFp
dHM6OmRlYWxsb2NhdGUoX19hMiwgX19tZW0sIDEpOwogICAgICAgOwogICAgIH0KIH0KCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZS4uLiBfQXJn
cz4KIF9fc2hhcmVkX2NvdW50KF9TcF9tYWtlX3NoYXJlZF90YWcsIF9UcCosIGNvbnN0IF9BbGxv
YyYgX19hLAogICAgICAgICBfQXJncyYmLi4uIF9fYXJncykKIDogX01fcGkoMCkKIHsKICAgdHlw
ZWRlZiBfU3BfY291bnRlZF9wdHJfaW5wbGFjZTxfVHAsIF9BbGxvYywgX0xwPiBfU3BfY3BfdHlw
ZTsKICAgdHlwZWRlZiB0eXBlbmFtZSBhbGxvY2F0b3JfdHJhaXRzPF9BbGxvYz46OnRlbXBsYXRl
CiAgICAgcmViaW5kX3RyYWl0czxfU3BfY3BfdHlwZT4gX0FsbG9jX3RyYWl0czsKICAgdHlwZW5h
bWUgX0FsbG9jX3RyYWl0czo6YWxsb2NhdG9yX3R5cGUgX19hMihfX2EpOwogICBfU3BfY3BfdHlw
ZSogX19tZW0gPSBfQWxsb2NfdHJhaXRzOjphbGxvY2F0ZShfX2EyLCAxKTsKICAgaWYgKHRydWUp
CiAgICAgewogICAgICAgX0FsbG9jX3RyYWl0czo6Y29uc3RydWN0KF9fYTIsIF9fbWVtLCBzdGQ6
Om1vdmUoX19hKSwKICAgICAgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKICAgICAg
IF9NX3BpID0gX19tZW07CiAgICAgfQogICBpZiAoZmFsc2UpCiAgICAgewogICAgICAgX0FsbG9j
X3RyYWl0czo6ZGVhbGxvY2F0ZShfX2EyLCBfX21lbSwgMSk7CiAgICAgICA7CiAgICAgfQogfQoK
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICAgICAgZXhwbGljaXQKIF9fc2hhcmVk
X2NvdW50KHN0ZDo6YXV0b19wdHI8X1RwPiYmIF9fcik7CgoKCiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUgX0RlbD4KICAgICAgICBleHBsaWNpdAogX19zaGFyZWRfY291bnQo
c3RkOjp1bmlxdWVfcHRyPF9UcCwgX0RlbD4mJiBfX3IpIDogX01fcGkoMCkKIHsKICAgdXNpbmcg
X1B0ciA9IHR5cGVuYW1lIHVuaXF1ZV9wdHI8X1RwLCBfRGVsPjo6cG9pbnRlcjsKICAgdXNpbmcg
X0RlbDIgPSB0eXBlbmFtZSBjb25kaXRpb25hbDxpc19yZWZlcmVuY2U8X0RlbD46OnZhbHVlLAog
ICAgICAgcmVmZXJlbmNlX3dyYXBwZXI8dHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxfRGVsPjo6
dHlwZT4sCiAgICAgICBfRGVsPjo6dHlwZTsKICAgdXNpbmcgX1NwX2NkX3R5cGUKICAgICA9IF9T
cF9jb3VudGVkX2RlbGV0ZXI8X1B0ciwgX0RlbDIsIGFsbG9jYXRvcjx2b2lkPiwgX0xwPjsKICAg
dXNpbmcgX0FsbG9jID0gYWxsb2NhdG9yPF9TcF9jZF90eXBlPjsKICAgdXNpbmcgX0FsbG9jX3Ry
YWl0cyA9IGFsbG9jYXRvcl90cmFpdHM8X0FsbG9jPjsKICAgX0FsbG9jIF9fYTsKICAgX1NwX2Nk
X3R5cGUqIF9fbWVtID0gX0FsbG9jX3RyYWl0czo6YWxsb2NhdGUoX19hLCAxKTsKICAgX0FsbG9j
X3RyYWl0czo6Y29uc3RydWN0KF9fYSwgX19tZW0sIF9fci5yZWxlYXNlKCksCiAgICAgICBfX3Iu
Z2V0X2RlbGV0ZXIoKSk7CiAgIF9NX3BpID0gX19tZW07CiB9CgoKICAgICAgZXhwbGljaXQgX19z
aGFyZWRfY291bnQoY29uc3QgX193ZWFrX2NvdW50PF9McD4mIF9fcik7CgoKICAgICAgZXhwbGlj
aXQgX19zaGFyZWRfY291bnQoY29uc3QgX193ZWFrX2NvdW50PF9McD4mIF9fciwgc3RkOjpub3Ro
cm93X3QpOwoKICAgICAgfl9fc2hhcmVkX2NvdW50KCkgbm9leGNlcHQKICAgICAgewogaWYgKF9N
X3BpICE9IG51bGxwdHIpCiAgIF9NX3BpLT5fTV9yZWxlYXNlKCk7CiAgICAgIH0KCiAgICAgIF9f
c2hhcmVkX2NvdW50KGNvbnN0IF9fc2hhcmVkX2NvdW50JiBfX3IpIG5vZXhjZXB0CiAgICAgIDog
X01fcGkoX19yLl9NX3BpKQogICAgICB7CiBpZiAoX01fcGkgIT0gMCkKICAgX01fcGktPl9NX2Fk
ZF9yZWZfY29weSgpOwogICAgICB9CgogICAgICBfX3NoYXJlZF9jb3VudCYKICAgICAgb3BlcmF0
b3I9KGNvbnN0IF9fc2hhcmVkX2NvdW50JiBfX3IpIG5vZXhjZXB0CiAgICAgIHsKIF9TcF9jb3Vu
dGVkX2Jhc2U8X0xwPiogX190bXAgPSBfX3IuX01fcGk7CiBpZiAoX190bXAgIT0gX01fcGkpCiAg
IHsKICAgICBpZiAoX190bXAgIT0gMCkKICAgICAgIF9fdG1wLT5fTV9hZGRfcmVmX2NvcHkoKTsK
ICAgICBpZiAoX01fcGkgIT0gMCkKICAgICAgIF9NX3BpLT5fTV9yZWxlYXNlKCk7CiAgICAgX01f
cGkgPSBfX3RtcDsKICAgfQogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICB2b2lkCiAgICAg
IF9NX3N3YXAoX19zaGFyZWRfY291bnQmIF9fcikgbm9leGNlcHQKICAgICAgewogX1NwX2NvdW50
ZWRfYmFzZTxfTHA+KiBfX3RtcCA9IF9fci5fTV9waTsKIF9fci5fTV9waSA9IF9NX3BpOwogX01f
cGkgPSBfX3RtcDsKICAgICAgfQoKICAgICAgbG9uZwogICAgICBfTV9nZXRfdXNlX2NvdW50KCkg
Y29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01fcGkgIT0gMCA/IF9NX3BpLT5fTV9nZXRf
dXNlX2NvdW50KCkgOiAwOyB9CgogICAgICBib29sCiAgICAgIF9NX3VuaXF1ZSgpIGNvbnN0IG5v
ZXhjZXB0CiAgICAgIHsgcmV0dXJuIHRoaXMtPl9NX2dldF91c2VfY291bnQoKSA9PSAxOyB9Cgog
ICAgICB2b2lkKgogICAgICBfTV9nZXRfZGVsZXRlcihjb25zdCBzdGQ6OnR5cGVfaW5mbyYgX190
aSkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01fcGkgPyBfTV9waS0+X01fZ2V0X2Rl
bGV0ZXIoX190aSkgOiBudWxscHRyOyB9CgogICAgICBib29sCiAgICAgIF9NX2xlc3MoY29uc3Qg
X19zaGFyZWRfY291bnQmIF9fcmhzKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGQ6
Omxlc3M8X1NwX2NvdW50ZWRfYmFzZTxfTHA+Kj4oKSh0aGlzLT5fTV9waSwgX19yaHMuX01fcGkp
OyB9CgogICAgICBib29sCiAgICAgIF9NX2xlc3MoY29uc3QgX193ZWFrX2NvdW50PF9McD4mIF9f
cmhzKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGQ6Omxlc3M8X1NwX2NvdW50ZWRf
YmFzZTxfTHA+Kj4oKSh0aGlzLT5fTV9waSwgX19yaHMuX01fcGkpOyB9CgoKICAgICAgZnJpZW5k
IGlubGluZSBib29sCiAgICAgIG9wZXJhdG9yPT0oY29uc3QgX19zaGFyZWRfY291bnQmIF9fYSwg
Y29uc3QgX19zaGFyZWRfY291bnQmIF9fYikgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX19hLl9N
X3BpID09IF9fYi5fTV9waTsgfQoKICAgIHByaXZhdGU6CiAgICAgIGZyaWVuZCBjbGFzcyBfX3dl
YWtfY291bnQ8X0xwPjsKCiAgICAgIF9TcF9jb3VudGVkX2Jhc2U8X0xwPiogX01fcGk7CiAgICB9
OwoKCiAgdGVtcGxhdGU8X0xvY2tfcG9saWN5IF9McD4KICAgIGNsYXNzIF9fd2Vha19jb3VudAog
ICAgewogICAgcHVibGljOgogICAgICBjb25zdGV4cHIgX193ZWFrX2NvdW50KCkgbm9leGNlcHQg
OiBfTV9waSgwKQogICAgICB7IH0KCiAgICAgIF9fd2Vha19jb3VudChjb25zdCBfX3NoYXJlZF9j
b3VudDxfTHA+JiBfX3IpIG5vZXhjZXB0CiAgICAgIDogX01fcGkoX19yLl9NX3BpKQogICAgICB7
CiBpZiAoX01fcGkgIT0gMCkKICAgX01fcGktPl9NX3dlYWtfYWRkX3JlZigpOwogICAgICB9Cgog
ICAgICBfX3dlYWtfY291bnQoY29uc3QgX193ZWFrX2NvdW50PF9McD4mIF9fcikgbm9leGNlcHQK
ICAgICAgOiBfTV9waShfX3IuX01fcGkpCiAgICAgIHsKIGlmIChfTV9waSAhPSAwKQogICBfTV9w
aS0+X01fd2Vha19hZGRfcmVmKCk7CiAgICAgIH0KCiAgICAgIH5fX3dlYWtfY291bnQoKSBub2V4
Y2VwdAogICAgICB7CiBpZiAoX01fcGkgIT0gMCkKICAgX01fcGktPl9NX3dlYWtfcmVsZWFzZSgp
OwogICAgICB9CgogICAgICBfX3dlYWtfY291bnQ8X0xwPiYKICAgICAgb3BlcmF0b3I9KGNvbnN0
IF9fc2hhcmVkX2NvdW50PF9McD4mIF9fcikgbm9leGNlcHQKICAgICAgewogX1NwX2NvdW50ZWRf
YmFzZTxfTHA+KiBfX3RtcCA9IF9fci5fTV9waTsKIGlmIChfX3RtcCAhPSAwKQogICBfX3RtcC0+
X01fd2Vha19hZGRfcmVmKCk7CiBpZiAoX01fcGkgIT0gMCkKICAgX01fcGktPl9NX3dlYWtfcmVs
ZWFzZSgpOwogX01fcGkgPSBfX3RtcDsKIHJldHVybiAqdGhpczsKICAgICAgfQoKICAgICAgX193
ZWFrX2NvdW50PF9McD4mCiAgICAgIG9wZXJhdG9yPShjb25zdCBfX3dlYWtfY291bnQ8X0xwPiYg
X19yKSBub2V4Y2VwdAogICAgICB7CiBfU3BfY291bnRlZF9iYXNlPF9McD4qIF9fdG1wID0gX19y
Ll9NX3BpOwogaWYgKF9fdG1wICE9IDApCiAgIF9fdG1wLT5fTV93ZWFrX2FkZF9yZWYoKTsKIGlm
IChfTV9waSAhPSAwKQogICBfTV9waS0+X01fd2Vha19yZWxlYXNlKCk7CiBfTV9waSA9IF9fdG1w
OwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICB2b2lkCiAgICAgIF9NX3N3YXAoX193ZWFr
X2NvdW50PF9McD4mIF9fcikgbm9leGNlcHQKICAgICAgewogX1NwX2NvdW50ZWRfYmFzZTxfTHA+
KiBfX3RtcCA9IF9fci5fTV9waTsKIF9fci5fTV9waSA9IF9NX3BpOwogX01fcGkgPSBfX3RtcDsK
ICAgICAgfQoKICAgICAgbG9uZwogICAgICBfTV9nZXRfdXNlX2NvdW50KCkgY29uc3Qgbm9leGNl
cHQKICAgICAgeyByZXR1cm4gX01fcGkgIT0gMCA/IF9NX3BpLT5fTV9nZXRfdXNlX2NvdW50KCkg
OiAwOyB9CgogICAgICBib29sCiAgICAgIF9NX2xlc3MoY29uc3QgX193ZWFrX2NvdW50JiBfX3Jo
cykgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RkOjpsZXNzPF9TcF9jb3VudGVkX2Jh
c2U8X0xwPio+KCkodGhpcy0+X01fcGksIF9fcmhzLl9NX3BpKTsgfQoKICAgICAgYm9vbAogICAg
ICBfTV9sZXNzKGNvbnN0IF9fc2hhcmVkX2NvdW50PF9McD4mIF9fcmhzKSBjb25zdCBub2V4Y2Vw
dAogICAgICB7IHJldHVybiBzdGQ6Omxlc3M8X1NwX2NvdW50ZWRfYmFzZTxfTHA+Kj4oKSh0aGlz
LT5fTV9waSwgX19yaHMuX01fcGkpOyB9CgoKICAgICAgZnJpZW5kIGlubGluZSBib29sCiAgICAg
IG9wZXJhdG9yPT0oY29uc3QgX193ZWFrX2NvdW50JiBfX2EsIGNvbnN0IF9fd2Vha19jb3VudCYg
X19iKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfX2EuX01fcGkgPT0gX19iLl9NX3BpOyB9Cgog
ICAgcHJpdmF0ZToKICAgICAgZnJpZW5kIGNsYXNzIF9fc2hhcmVkX2NvdW50PF9McD47CgogICAg
ICBfU3BfY291bnRlZF9iYXNlPF9McD4qIF9NX3BpOwogICAgfTsKCgogIHRlbXBsYXRlPF9Mb2Nr
X3BvbGljeSBfTHA+CiAgICBpbmxpbmUKICAgIF9fc2hhcmVkX2NvdW50PF9McD46Ol9fc2hhcmVk
X2NvdW50KGNvbnN0IF9fd2Vha19jb3VudDxfTHA+JiBfX3IpCiAgICA6IF9NX3BpKF9fci5fTV9w
aSkKICAgIHsKICAgICAgaWYgKF9NX3BpICE9IG51bGxwdHIpCiBfTV9waS0+X01fYWRkX3JlZl9s
b2NrKCk7CiAgICAgIGVsc2UKIF9fdGhyb3dfYmFkX3dlYWtfcHRyKCk7CiAgICB9CgoKICB0ZW1w
bGF0ZTxfTG9ja19wb2xpY3kgX0xwPgogICAgaW5saW5lCiAgICBfX3NoYXJlZF9jb3VudDxfTHA+
OjoKICAgIF9fc2hhcmVkX2NvdW50KGNvbnN0IF9fd2Vha19jb3VudDxfTHA+JiBfX3IsIHN0ZDo6
bm90aHJvd190KQogICAgOiBfTV9waShfX3IuX01fcGkpCiAgICB7CiAgICAgIGlmIChfTV9waSAh
PSBudWxscHRyKQogaWYgKCFfTV9waS0+X01fYWRkX3JlZl9sb2NrX25vdGhyb3coKSkKICAgX01f
cGkgPSBudWxscHRyOwogICAgfQoKCgoKICB0ZW1wbGF0ZTxfTG9ja19wb2xpY3kgX0xwLCB0eXBl
bmFtZSBfVHAxLCB0eXBlbmFtZSBfVHAyPgogICAgdm9pZAogICAgX19lbmFibGVfc2hhcmVkX2Zy
b21fdGhpc19oZWxwZXIoY29uc3QgX19zaGFyZWRfY291bnQ8X0xwPiYsCiAgICAgICAgIGNvbnN0
IF9fZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXM8X1RwMSwKICAgICAgICAgX0xwPiosIGNvbnN0IF9U
cDIqKSBub2V4Y2VwdDsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1lIF9UcDI+
CiAgICB2b2lkCiAgICBfX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzX2hlbHBlcihjb25zdCBfX3No
YXJlZF9jb3VudDw+JiwKICAgICAgICAgY29uc3QgZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXM8X1Rw
MT4qLAogICAgICAgICBjb25zdCBfVHAyKikgbm9leGNlcHQ7CgogIHRlbXBsYXRlPF9Mb2NrX3Bv
bGljeSBfTHA+CiAgICBpbmxpbmUgdm9pZAogICAgX19lbmFibGVfc2hhcmVkX2Zyb21fdGhpc19o
ZWxwZXIoY29uc3QgX19zaGFyZWRfY291bnQ8X0xwPiYsIC4uLikgbm9leGNlcHQKICAgIHsgfQoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBfTG9ja19wb2xpY3kgX0xwPgogICAgY2xhc3MgX19z
aGFyZWRfcHRyCiAgICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX1RwIGVsZW1lbnRfdHlw
ZTsKCiAgICAgIGNvbnN0ZXhwciBfX3NoYXJlZF9wdHIoKSBub2V4Y2VwdAogICAgICA6IF9NX3B0
cigwKSwgX01fcmVmY291bnQoKQogICAgICB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cDE+CiBleHBsaWNpdCBfX3NoYXJlZF9wdHIoX1RwMSogX19wKQogICAgICAgIDogX01fcHRyKF9f
cCksIF9NX3JlZmNvdW50KF9fcCkKIHsKICAKICAgc3RhdGljX2Fzc2VydCggIWlzX3ZvaWQ8X1Rw
MT46OnZhbHVlLCAiaW5jb21wbGV0ZSB0eXBlIiApOwogICBzdGF0aWNfYXNzZXJ0KCBzaXplb2Yo
X1RwMSkgPiAwLCAiaW5jb21wbGV0ZSB0eXBlIiApOwogICBfX2VuYWJsZV9zaGFyZWRfZnJvbV90
aGlzX2hlbHBlcihfTV9yZWZjb3VudCwgX19wLCBfX3ApOwogfQoKICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwMSwgdHlwZW5hbWUgX0RlbGV0ZXI+CiBfX3NoYXJlZF9wdHIoX1RwMSogX19wLCBf
RGVsZXRlciBfX2QpCiA6IF9NX3B0cihfX3ApLCBfTV9yZWZjb3VudChfX3AsIF9fZCkKIHsKICAK
CiAgIF9fZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXNfaGVscGVyKF9NX3JlZmNvdW50LCBfX3AsIF9f
cCk7CiB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSBfRGVsZXRlciwg
dHlwZW5hbWUgX0FsbG9jPgogX19zaGFyZWRfcHRyKF9UcDEqIF9fcCwgX0RlbGV0ZXIgX19kLCBf
QWxsb2MgX19hKQogOiBfTV9wdHIoX19wKSwgX01fcmVmY291bnQoX19wLCBfX2QsIHN0ZDo6bW92
ZShfX2EpKQogewogIAoKICAgX19lbmFibGVfc2hhcmVkX2Zyb21fdGhpc19oZWxwZXIoX01fcmVm
Y291bnQsIF9fcCwgX19wKTsKIH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9EZWxldGVyPgog
X19zaGFyZWRfcHRyKG51bGxwdHJfdCBfX3AsIF9EZWxldGVyIF9fZCkKIDogX01fcHRyKDApLCBf
TV9yZWZjb3VudChfX3AsIF9fZCkKIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0RlbGV0
ZXIsIHR5cGVuYW1lIF9BbGxvYz4KICAgICAgICBfX3NoYXJlZF9wdHIobnVsbHB0cl90IF9fcCwg
X0RlbGV0ZXIgX19kLCBfQWxsb2MgX19hKQogOiBfTV9wdHIoMCksIF9NX3JlZmNvdW50KF9fcCwg
X19kLCBzdGQ6Om1vdmUoX19hKSkKIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4K
IF9fc2hhcmVkX3B0cihjb25zdCBfX3NoYXJlZF9wdHI8X1RwMSwgX0xwPiYgX19yLCBfVHAqIF9f
cCkgbm9leGNlcHQKIDogX01fcHRyKF9fcCksIF9NX3JlZmNvdW50KF9fci5fTV9yZWZjb3VudCkK
IHsgfQoKICAgICAgX19zaGFyZWRfcHRyKGNvbnN0IF9fc2hhcmVkX3B0ciYpIG5vZXhjZXB0ID0g
ZGVmYXVsdDsKICAgICAgX19zaGFyZWRfcHRyJiBvcGVyYXRvcj0oY29uc3QgX19zaGFyZWRfcHRy
Jikgbm9leGNlcHQgPSBkZWZhdWx0OwogICAgICB+X19zaGFyZWRfcHRyKCkgPSBkZWZhdWx0OwoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgPSB0eXBlbmFtZQogICAgICAg
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY29udmVydGlibGU8X1RwMSosIF9UcCo+Ojp2YWx1ZT46
OnR5cGU+CiBfX3NoYXJlZF9wdHIoY29uc3QgX19zaGFyZWRfcHRyPF9UcDEsIF9McD4mIF9fcikg
bm9leGNlcHQKIDogX01fcHRyKF9fci5fTV9wdHIpLCBfTV9yZWZjb3VudChfX3IuX01fcmVmY291
bnQpCiB7IH0KCiAgICAgIF9fc2hhcmVkX3B0cihfX3NoYXJlZF9wdHImJiBfX3IpIG5vZXhjZXB0
CiAgICAgIDogX01fcHRyKF9fci5fTV9wdHIpLCBfTV9yZWZjb3VudCgpCiAgICAgIHsKIF9NX3Jl
ZmNvdW50Ll9NX3N3YXAoX19yLl9NX3JlZmNvdW50KTsKIF9fci5fTV9wdHIgPSAwOwogICAgICB9
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSA9IHR5cGVuYW1lCiAgICAg
ICAgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTxfVHAxKiwgX1RwKj46OnZhbHVl
Pjo6dHlwZT4KIF9fc2hhcmVkX3B0cihfX3NoYXJlZF9wdHI8X1RwMSwgX0xwPiYmIF9fcikgbm9l
eGNlcHQKIDogX01fcHRyKF9fci5fTV9wdHIpLCBfTV9yZWZjb3VudCgpCiB7CiAgIF9NX3JlZmNv
dW50Ll9NX3N3YXAoX19yLl9NX3JlZmNvdW50KTsKICAgX19yLl9NX3B0ciA9IDA7CiB9CgogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxPgogZXhwbGljaXQgX19zaGFyZWRfcHRyKGNvbnN0IF9f
d2Vha19wdHI8X1RwMSwgX0xwPiYgX19yKQogOiBfTV9yZWZjb3VudChfX3IuX01fcmVmY291bnQp
CiB7CiAgCgoKCiAgIF9NX3B0ciA9IF9fci5fTV9wdHI7CiB9CgoKICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwMSwgdHlwZW5hbWUgX0RlbD4KIF9fc2hhcmVkX3B0cihzdGQ6OnVuaXF1ZV9wdHI8
X1RwMSwgX0RlbD4mJiBfX3IpCiA6IF9NX3B0cihfX3IuZ2V0KCkpLCBfTV9yZWZjb3VudCgpCiB7
CiAgCiAgIGF1dG8gX19yYXcgPSBfU19yYXdfcHRyKF9fci5nZXQoKSk7CiAgIF9NX3JlZmNvdW50
ID0gX19zaGFyZWRfY291bnQ8X0xwPihzdGQ6Om1vdmUoX19yKSk7CiAgIF9fZW5hYmxlX3NoYXJl
ZF9mcm9tX3RoaXNfaGVscGVyKF9NX3JlZmNvdW50LCBfX3JhdywgX19yYXcpOwogfQoKCgogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxPgogX19zaGFyZWRfcHRyKHN0ZDo6YXV0b19wdHI8X1Rw
MT4mJiBfX3IpOwoKCgogICAgICBjb25zdGV4cHIgX19zaGFyZWRfcHRyKG51bGxwdHJfdCkgbm9l
eGNlcHQKICAgICAgOiBfTV9wdHIoMCksIF9NX3JlZmNvdW50KCkKICAgICAgeyB9CgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxPgogX19zaGFyZWRfcHRyJgogb3BlcmF0b3I9KGNvbnN0IF9f
c2hhcmVkX3B0cjxfVHAxLCBfTHA+JiBfX3IpIG5vZXhjZXB0CiB7CiAgIF9NX3B0ciA9IF9fci5f
TV9wdHI7CiAgIF9NX3JlZmNvdW50ID0gX19yLl9NX3JlZmNvdW50OwogICByZXR1cm4gKnRoaXM7
CiB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KIF9fc2hhcmVkX3B0ciYKIG9wZXJh
dG9yPShzdGQ6OmF1dG9fcHRyPF9UcDE+JiYgX19yKQogewogICBfX3NoYXJlZF9wdHIoc3RkOjpt
b3ZlKF9fcikpLnN3YXAoKnRoaXMpOwogICByZXR1cm4gKnRoaXM7CiB9CgoKICAgICAgX19zaGFy
ZWRfcHRyJgogICAgICBvcGVyYXRvcj0oX19zaGFyZWRfcHRyJiYgX19yKSBub2V4Y2VwdAogICAg
ICB7CiBfX3NoYXJlZF9wdHIoc3RkOjptb3ZlKF9fcikpLnN3YXAoKnRoaXMpOwogcmV0dXJuICp0
aGlzOwogICAgICB9CgogICAgICB0ZW1wbGF0ZTxjbGFzcyBfVHAxPgogX19zaGFyZWRfcHRyJgog
b3BlcmF0b3I9KF9fc2hhcmVkX3B0cjxfVHAxLCBfTHA+JiYgX19yKSBub2V4Y2VwdAogewogICBf
X3NoYXJlZF9wdHIoc3RkOjptb3ZlKF9fcikpLnN3YXAoKnRoaXMpOwogICByZXR1cm4gKnRoaXM7
CiB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSBfRGVsPgogX19zaGFy
ZWRfcHRyJgogb3BlcmF0b3I9KHN0ZDo6dW5pcXVlX3B0cjxfVHAxLCBfRGVsPiYmIF9fcikKIHsK
ICAgX19zaGFyZWRfcHRyKHN0ZDo6bW92ZShfX3IpKS5zd2FwKCp0aGlzKTsKICAgcmV0dXJuICp0
aGlzOwogfQoKICAgICAgdm9pZAogICAgICByZXNldCgpIG5vZXhjZXB0CiAgICAgIHsgX19zaGFy
ZWRfcHRyKCkuc3dhcCgqdGhpcyk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiB2
b2lkCiByZXNldChfVHAxKiBfX3ApCiB7CgogICA7CiAgIF9fc2hhcmVkX3B0cihfX3ApLnN3YXAo
KnRoaXMpOwogfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgX0RlbGV0
ZXI+CiB2b2lkCiByZXNldChfVHAxKiBfX3AsIF9EZWxldGVyIF9fZCkKIHsgX19zaGFyZWRfcHRy
KF9fcCwgX19kKS5zd2FwKCp0aGlzKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwg
dHlwZW5hbWUgX0RlbGV0ZXIsIHR5cGVuYW1lIF9BbGxvYz4KIHZvaWQKICAgICAgICByZXNldChf
VHAxKiBfX3AsIF9EZWxldGVyIF9fZCwgX0FsbG9jIF9fYSkKICAgICAgICB7IF9fc2hhcmVkX3B0
cihfX3AsIF9fZCwgc3RkOjptb3ZlKF9fYSkpLnN3YXAoKnRoaXMpOyB9CgoKICAgICAgdHlwZW5h
bWUgc3RkOjphZGRfbHZhbHVlX3JlZmVyZW5jZTxfVHA+Ojp0eXBlCiAgICAgIG9wZXJhdG9yKigp
IGNvbnN0IG5vZXhjZXB0CiAgICAgIHsKIDsKIHJldHVybiAqX01fcHRyOwogICAgICB9CgogICAg
ICBfVHAqCiAgICAgIG9wZXJhdG9yLT4oKSBjb25zdCBub2V4Y2VwdAogICAgICB7CiA7CiByZXR1
cm4gX01fcHRyOwogICAgICB9CgogICAgICBfVHAqCiAgICAgIGdldCgpIGNvbnN0IG5vZXhjZXB0
CiAgICAgIHsgcmV0dXJuIF9NX3B0cjsgfQoKICAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3B0ciA9PSAwID8gZmFsc2UgOiB0cnVlOyB9CgogICAg
ICBib29sCiAgICAgIHVuaXF1ZSgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX3Jl
ZmNvdW50Ll9NX3VuaXF1ZSgpOyB9CgogICAgICBsb25nCiAgICAgIHVzZV9jb3VudCgpIGNvbnN0
IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX3JlZmNvdW50Ll9NX2dldF91c2VfY291bnQoKTsg
fQoKICAgICAgdm9pZAogICAgICBzd2FwKF9fc2hhcmVkX3B0cjxfVHAsIF9McD4mIF9fb3RoZXIp
IG5vZXhjZXB0CiAgICAgIHsKIHN0ZDo6c3dhcChfTV9wdHIsIF9fb3RoZXIuX01fcHRyKTsKIF9N
X3JlZmNvdW50Ll9NX3N3YXAoX19vdGhlci5fTV9yZWZjb3VudCk7CiAgICAgIH0KCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcDE+CiBib29sCiBvd25lcl9iZWZvcmUoX19zaGFyZWRfcHRyPF9U
cDEsIF9McD4gY29uc3QmIF9fcmhzKSBjb25zdAogeyByZXR1cm4gX01fcmVmY291bnQuX01fbGVz
cyhfX3Jocy5fTV9yZWZjb3VudCk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiBi
b29sCiBvd25lcl9iZWZvcmUoX193ZWFrX3B0cjxfVHAxLCBfTHA+IGNvbnN0JiBfX3JocykgY29u
c3QKIHsgcmV0dXJuIF9NX3JlZmNvdW50Ll9NX2xlc3MoX19yaHMuX01fcmVmY291bnQpOyB9CiMg
MTA5OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL3NoYXJlZF9wdHJfYmFzZS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9B
bGxvYz4KICAgICAgICBzdHJ1Y3QgX0RlbGV0ZXIKICAgICAgICB7CiAgICAgICAgICB2b2lkIG9w
ZXJhdG9yKCkoX1RwKiBfX3B0cikKICAgICAgICAgIHsKICAgICB0eXBlZGVmIGFsbG9jYXRvcl90
cmFpdHM8X0FsbG9jPiBfQWxsb2NfdHJhaXRzOwogICAgIF9BbGxvY190cmFpdHM6OmRlc3Ryb3ko
X01fYWxsb2MsIF9fcHRyKTsKICAgICBfQWxsb2NfdHJhaXRzOjpkZWFsbG9jYXRlKF9NX2FsbG9j
LCBfX3B0ciwgMSk7CiAgICAgICAgICB9CiAgICAgICAgICBfQWxsb2MgX01fYWxsb2M7CiAgICAg
ICAgfTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUuLi4gX0FyZ3M+
CiBfX3NoYXJlZF9wdHIoX1NwX21ha2Vfc2hhcmVkX3RhZyBfX3RhZywgY29uc3QgX0FsbG9jJiBf
X2EsCiAgICAgICBfQXJncyYmLi4uIF9fYXJncykKIDogX01fcHRyKCksIF9NX3JlZmNvdW50KCkK
ICAgICAgICB7CiAgIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jOjp0ZW1wbGF0ZSByZWJpbmQ8X1Rw
Pjo6b3RoZXIgX0FsbG9jMjsKICAgICAgICAgIF9EZWxldGVyPF9BbGxvYzI+IF9fZGVsID0geyBf
QWxsb2MyKF9fYSkgfTsKICAgdHlwZWRlZiBhbGxvY2F0b3JfdHJhaXRzPF9BbGxvYzI+IF9fdHJh
aXRzOwogICAgICAgICAgX01fcHRyID0gX190cmFpdHM6OmFsbG9jYXRlKF9fZGVsLl9NX2FsbG9j
LCAxKTsKICAgaWYgKHRydWUpCiAgICAgewoKCiAgICAgICBfX3RyYWl0czo6Y29uc3RydWN0KF9f
ZGVsLl9NX2FsbG9jLCBfTV9wdHIsCiAgICAgICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkPF9B
cmdzPihfX2FyZ3MpLi4uKTsKICAgICB9CiAgIGlmIChmYWxzZSkKICAgICB7CiAgICAgICBfX3Ry
YWl0czo6ZGVhbGxvY2F0ZShfX2RlbC5fTV9hbGxvYywgX01fcHRyLCAxKTsKICAgICAgIDsKICAg
ICB9CiAgICAgICAgICBfX3NoYXJlZF9jb3VudDxfTHA+IF9fY291bnQoX01fcHRyLCBfX2RlbCwg
X19kZWwuX01fYWxsb2MpOwogICAgICAgICAgX01fcmVmY291bnQuX01fc3dhcChfX2NvdW50KTsK
ICAgX19lbmFibGVfc2hhcmVkX2Zyb21fdGhpc19oZWxwZXIoX01fcmVmY291bnQsIF9NX3B0ciwg
X01fcHRyKTsKICAgICAgICB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgX0xvY2tf
cG9saWN5IF9McDEsIHR5cGVuYW1lIF9BbGxvYywKICAgICAgICB0eXBlbmFtZS4uLiBfQXJncz4K
IGZyaWVuZCBfX3NoYXJlZF9wdHI8X1RwMSwgX0xwMT4KIF9fYWxsb2NhdGVfc2hhcmVkKGNvbnN0
IF9BbGxvYyYgX19hLCBfQXJncyYmLi4uIF9fYXJncyk7CgoKCiAgICAgIF9fc2hhcmVkX3B0cihj
b25zdCBfX3dlYWtfcHRyPF9UcCwgX0xwPiYgX19yLCBzdGQ6Om5vdGhyb3dfdCkKICAgICAgOiBf
TV9yZWZjb3VudChfX3IuX01fcmVmY291bnQsIHN0ZDo6bm90aHJvdykKICAgICAgewogX01fcHRy
ID0gX01fcmVmY291bnQuX01fZ2V0X3VzZV9jb3VudCgpID8gX19yLl9NX3B0ciA6IG51bGxwdHI7
CiAgICAgIH0KCiAgICAgIGZyaWVuZCBjbGFzcyBfX3dlYWtfcHRyPF9UcCwgX0xwPjsKCiAgICBw
cml2YXRlOgogICAgICB2b2lkKgogICAgICBfTV9nZXRfZGVsZXRlcihjb25zdCBzdGQ6OnR5cGVf
aW5mbyYgX190aSkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01fcmVmY291bnQuX01f
Z2V0X2RlbGV0ZXIoX190aSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiBzdGF0
aWMgX1RwMSoKIF9TX3Jhd19wdHIoX1RwMSogX19wdHIpCiB7IHJldHVybiBfX3B0cjsgfQoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KIHN0YXRpYyBhdXRvCiBfU19yYXdfcHRyKF9UcDEg
X19wdHIpIC0+IGRlY2x0eXBlKHN0ZDo6X19hZGRyZXNzb2YoKl9fcHRyKSkKIHsgcmV0dXJuIHN0
ZDo6X19hZGRyZXNzb2YoKl9fcHRyKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwg
X0xvY2tfcG9saWN5IF9McDE+IGZyaWVuZCBjbGFzcyBfX3NoYXJlZF9wdHI7CiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcDEsIF9Mb2NrX3BvbGljeSBfTHAxPiBmcmllbmQgY2xhc3MgX193ZWFr
X3B0cjsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9EZWwsIHR5cGVuYW1lIF9UcDEsIF9Mb2Nr
X3BvbGljeSBfTHAxPgogZnJpZW5kIF9EZWwqIGdldF9kZWxldGVyKGNvbnN0IF9fc2hhcmVkX3B0
cjxfVHAxLCBfTHAxPiYpIG5vZXhjZXB0OwoKICAgICAgX1RwKiBfTV9wdHI7CiAgICAgIF9fc2hh
cmVkX2NvdW50PF9McD4gX01fcmVmY291bnQ7CiAgICB9OwoKCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcDEsIHR5cGVuYW1lIF9UcDIsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBpbmxpbmUgYm9vbAog
ICAgb3BlcmF0b3I9PShjb25zdCBfX3NoYXJlZF9wdHI8X1RwMSwgX0xwPiYgX19hLAogICAgICAg
IGNvbnN0IF9fc2hhcmVkX3B0cjxfVHAyLCBfTHA+JiBfX2IpIG5vZXhjZXB0CiAgICB7IHJldHVy
biBfX2EuZ2V0KCkgPT0gX19iLmdldCgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgX0xv
Y2tfcG9saWN5IF9McD4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0IF9fc2hh
cmVkX3B0cjxfVHAsIF9McD4mIF9fYSwgbnVsbHB0cl90KSBub2V4Y2VwdAogICAgeyByZXR1cm4g
IV9fYTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBp
bmxpbmUgYm9vbAogICAgb3BlcmF0b3I9PShudWxscHRyX3QsIGNvbnN0IF9fc2hhcmVkX3B0cjxf
VHAsIF9McD4mIF9fYSkgbm9leGNlcHQKICAgIHsgcmV0dXJuICFfX2E7IH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgX1RwMiwgX0xvY2tfcG9saWN5IF9McD4KICAgIGlubGlu
ZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IF9fc2hhcmVkX3B0cjxfVHAxLCBfTHA+JiBfX2Es
CiAgICAgICAgY29uc3QgX19zaGFyZWRfcHRyPF9UcDIsIF9McD4mIF9fYikgbm9leGNlcHQKICAg
IHsgcmV0dXJuIF9fYS5nZXQoKSAhPSBfX2IuZ2V0KCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwLCBfTG9ja19wb2xpY3kgX0xwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29u
c3QgX19zaGFyZWRfcHRyPF9UcCwgX0xwPiYgX19hLCBudWxscHRyX3QpIG5vZXhjZXB0CiAgICB7
IHJldHVybiAoYm9vbClfX2E7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBfTG9ja19wb2xp
Y3kgX0xwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0obnVsbHB0cl90LCBjb25zdCBf
X3NoYXJlZF9wdHI8X1RwLCBfTHA+JiBfX2EpIG5vZXhjZXB0CiAgICB7IHJldHVybiAoYm9vbClf
X2E7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgX1RwMiwgX0xvY2tfcG9s
aWN5IF9McD4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjwoY29uc3QgX19zaGFyZWRfcHRy
PF9UcDEsIF9McD4mIF9fYSwKICAgICAgIGNvbnN0IF9fc2hhcmVkX3B0cjxfVHAyLCBfTHA+JiBf
X2IpIG5vZXhjZXB0CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpjb21tb25fdHlw
ZTxfVHAxKiwgX1RwMio+Ojp0eXBlIF9DVDsKICAgICAgcmV0dXJuIHN0ZDo6bGVzczxfQ1Q+KCko
X19hLmdldCgpLCBfX2IuZ2V0KCkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIF9M
b2NrX3BvbGljeSBfTHA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IF9fc2hh
cmVkX3B0cjxfVHAsIF9McD4mIF9fYSwgbnVsbHB0cl90KSBub2V4Y2VwdAogICAgeyByZXR1cm4g
c3RkOjpsZXNzPF9UcCo+KCkoX19hLmdldCgpLCBudWxscHRyKTsgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHAsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8
KG51bGxwdHJfdCwgY29uc3QgX19zaGFyZWRfcHRyPF9UcCwgX0xwPiYgX19hKSBub2V4Y2VwdAog
ICAgeyByZXR1cm4gc3RkOjpsZXNzPF9UcCo+KCkobnVsbHB0ciwgX19hLmdldCgpKTsgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSBfVHAyLCBfTG9ja19wb2xpY3kgX0xwPgog
ICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPD0oY29uc3QgX19zaGFyZWRfcHRyPF9UcDEsIF9M
cD4mIF9fYSwKICAgICAgICBjb25zdCBfX3NoYXJlZF9wdHI8X1RwMiwgX0xwPiYgX19iKSBub2V4
Y2VwdAogICAgeyByZXR1cm4gIShfX2IgPCBfX2EpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cCwgX0xvY2tfcG9saWN5IF9McD4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjw9KGNvbnN0
IF9fc2hhcmVkX3B0cjxfVHAsIF9McD4mIF9fYSwgbnVsbHB0cl90KSBub2V4Y2VwdAogICAgeyBy
ZXR1cm4gIShudWxscHRyIDwgX19hKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIF9Mb2Nr
X3BvbGljeSBfTHA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8PShudWxscHRyX3QsIGNv
bnN0IF9fc2hhcmVkX3B0cjxfVHAsIF9McD4mIF9fYSkgbm9leGNlcHQKICAgIHsgcmV0dXJuICEo
X19hIDwgbnVsbHB0cik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgX1Rw
MiwgX0xvY2tfcG9saWN5IF9McD4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj4oY29uc3Qg
X19zaGFyZWRfcHRyPF9UcDEsIF9McD4mIF9fYSwKICAgICAgIGNvbnN0IF9fc2hhcmVkX3B0cjxf
VHAyLCBfTHA+JiBfX2IpIG5vZXhjZXB0CiAgICB7IHJldHVybiAoX19iIDwgX19hKTsgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBpbmxpbmUgYm9vbAog
ICAgb3BlcmF0b3I+KGNvbnN0IF9fc2hhcmVkX3B0cjxfVHAsIF9McD4mIF9fYSwgbnVsbHB0cl90
KSBub2V4Y2VwdAogICAgeyByZXR1cm4gc3RkOjpsZXNzPF9UcCo+KCkobnVsbHB0ciwgX19hLmdl
dCgpKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBp
bmxpbmUgYm9vbAogICAgb3BlcmF0b3I+KG51bGxwdHJfdCwgY29uc3QgX19zaGFyZWRfcHRyPF9U
cCwgX0xwPiYgX19hKSBub2V4Y2VwdAogICAgeyByZXR1cm4gc3RkOjpsZXNzPF9UcCo+KCkoX19h
LmdldCgpLCBudWxscHRyKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSBf
VHAyLCBfTG9ja19wb2xpY3kgX0xwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPj0oY29u
c3QgX19zaGFyZWRfcHRyPF9UcDEsIF9McD4mIF9fYSwKICAgICAgICBjb25zdCBfX3NoYXJlZF9w
dHI8X1RwMiwgX0xwPiYgX19iKSBub2V4Y2VwdAogICAgeyByZXR1cm4gIShfX2EgPCBfX2IpOyB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgX0xvY2tfcG9saWN5IF9McD4KICAgIGlubGluZSBi
b29sCiAgICBvcGVyYXRvcj49KGNvbnN0IF9fc2hhcmVkX3B0cjxfVHAsIF9McD4mIF9fYSwgbnVs
bHB0cl90KSBub2V4Y2VwdAogICAgeyByZXR1cm4gIShfX2EgPCBudWxscHRyKTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBpbmxpbmUgYm9vbAogICAg
b3BlcmF0b3I+PShudWxscHRyX3QsIGNvbnN0IF9fc2hhcmVkX3B0cjxfVHAsIF9McD4mIF9fYSkg
bm9leGNlcHQKICAgIHsgcmV0dXJuICEobnVsbHB0ciA8IF9fYSk7IH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1NwPgogICAgc3RydWN0IF9TcF9sZXNzIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxf
U3AsIF9TcCwgYm9vbD4KICAgIHsKICAgICAgYm9vbAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9T
cCYgX19saHMsIGNvbnN0IF9TcCYgX19yaHMpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsKIHR5cGVk
ZWYgdHlwZW5hbWUgX1NwOjplbGVtZW50X3R5cGUgZWxlbWVudF90eXBlOwogcmV0dXJuIHN0ZDo6
bGVzczxlbGVtZW50X3R5cGUqPigpKF9fbGhzLmdldCgpLCBfX3Jocy5nZXQoKSk7CiAgICAgIH0K
ICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgX0xvY2tfcG9saWN5IF9McD4KICAgIHN0
cnVjdCBsZXNzPF9fc2hhcmVkX3B0cjxfVHAsIF9McD4+CiAgICA6IHB1YmxpYyBfU3BfbGVzczxf
X3NoYXJlZF9wdHI8X1RwLCBfTHA+PgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
LCBfTG9ja19wb2xpY3kgX0xwPgogICAgaW5saW5lIHZvaWQKICAgIHN3YXAoX19zaGFyZWRfcHRy
PF9UcCwgX0xwPiYgX19hLCBfX3NoYXJlZF9wdHI8X1RwLCBfTHA+JiBfX2IpIG5vZXhjZXB0CiAg
ICB7IF9fYS5zd2FwKF9fYik7IH0KIyAxMzA4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc2hhcmVkX3B0cl9iYXNlLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9UcDEsIF9Mb2NrX3BvbGljeSBfTHA+CiAg
ICBpbmxpbmUgX19zaGFyZWRfcHRyPF9UcCwgX0xwPgogICAgc3RhdGljX3BvaW50ZXJfY2FzdChj
b25zdCBfX3NoYXJlZF9wdHI8X1RwMSwgX0xwPiYgX19yKSBub2V4Y2VwdAogICAgeyByZXR1cm4g
X19zaGFyZWRfcHRyPF9UcCwgX0xwPihfX3IsIHN0YXRpY19jYXN0PF9UcCo+KF9fci5nZXQoKSkp
OyB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVHAxLCBfTG9ja19w
b2xpY3kgX0xwPgogICAgaW5saW5lIF9fc2hhcmVkX3B0cjxfVHAsIF9McD4KICAgIGNvbnN0X3Bv
aW50ZXJfY2FzdChjb25zdCBfX3NoYXJlZF9wdHI8X1RwMSwgX0xwPiYgX19yKSBub2V4Y2VwdAog
ICAgeyByZXR1cm4gX19zaGFyZWRfcHRyPF9UcCwgX0xwPihfX3IsIGNvbnN0X2Nhc3Q8X1RwKj4o
X19yLmdldCgpKSk7IH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9U
cDEsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBpbmxpbmUgX19zaGFyZWRfcHRyPF9UcCwgX0xwPgog
ICAgZHluYW1pY19wb2ludGVyX2Nhc3QoY29uc3QgX19zaGFyZWRfcHRyPF9UcDEsIF9McD4mIF9f
cikgbm9leGNlcHQKICAgIHsKICAgICAgaWYgKF9UcCogX19wID0gZHluYW1pY19jYXN0PF9UcCo+
KF9fci5nZXQoKSkpCiByZXR1cm4gX19zaGFyZWRfcHRyPF9UcCwgX0xwPihfX3IsIF9fcCk7CiAg
ICAgIHJldHVybiBfX3NoYXJlZF9wdHI8X1RwLCBfTHA+KCk7CiAgICB9CgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHAsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBjbGFzcyBfX3dlYWtfcHRyCiAgICB7
CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX1RwIGVsZW1lbnRfdHlwZTsKCiAgICAgIGNvbnN0
ZXhwciBfX3dlYWtfcHRyKCkgbm9leGNlcHQKICAgICAgOiBfTV9wdHIoMCksIF9NX3JlZmNvdW50
KCkKICAgICAgeyB9CgogICAgICBfX3dlYWtfcHRyKGNvbnN0IF9fd2Vha19wdHImKSBub2V4Y2Vw
dCA9IGRlZmF1bHQ7CiAgICAgIF9fd2Vha19wdHImIG9wZXJhdG9yPShjb25zdCBfX3dlYWtfcHRy
Jikgbm9leGNlcHQgPSBkZWZhdWx0OwogICAgICB+X193ZWFrX3B0cigpID0gZGVmYXVsdDsKIyAx
MzY2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OS4zL2JpdHMvc2hhcmVkX3B0cl9iYXNlLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
MSwgdHlwZW5hbWUgPSB0eXBlbmFtZQogICAgICAgIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY29u
dmVydGlibGU8X1RwMSosIF9UcCo+Ojp2YWx1ZT46OnR5cGU+CiBfX3dlYWtfcHRyKGNvbnN0IF9f
d2Vha19wdHI8X1RwMSwgX0xwPiYgX19yKSBub2V4Y2VwdAogOiBfTV9yZWZjb3VudChfX3IuX01f
cmVmY291bnQpCiAgICAgICAgeyBfTV9wdHIgPSBfX3IubG9jaygpLmdldCgpOyB9CgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSA9IHR5cGVuYW1lCiAgICAgICAgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTxfVHAxKiwgX1RwKj46OnZhbHVlPjo6dHlwZT4K
IF9fd2Vha19wdHIoY29uc3QgX19zaGFyZWRfcHRyPF9UcDEsIF9McD4mIF9fcikgbm9leGNlcHQK
IDogX01fcHRyKF9fci5fTV9wdHIpLCBfTV9yZWZjb3VudChfX3IuX01fcmVmY291bnQpCiB7IH0K
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiBfX3dlYWtfcHRyJgogb3BlcmF0b3I9KGNv
bnN0IF9fd2Vha19wdHI8X1RwMSwgX0xwPiYgX19yKSBub2V4Y2VwdAogewogICBfTV9wdHIgPSBf
X3IubG9jaygpLmdldCgpOwogICBfTV9yZWZjb3VudCA9IF9fci5fTV9yZWZjb3VudDsKICAgcmV0
dXJuICp0aGlzOwogfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KIF9fd2Vha19wdHIm
CiBvcGVyYXRvcj0oY29uc3QgX19zaGFyZWRfcHRyPF9UcDEsIF9McD4mIF9fcikgbm9leGNlcHQK
IHsKICAgX01fcHRyID0gX19yLl9NX3B0cjsKICAgX01fcmVmY291bnQgPSBfX3IuX01fcmVmY291
bnQ7CiAgIHJldHVybiAqdGhpczsKIH0KCiAgICAgIF9fc2hhcmVkX3B0cjxfVHAsIF9McD4KICAg
ICAgbG9jaygpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fc2hhcmVkX3B0cjxlbGVt
ZW50X3R5cGUsIF9McD4oKnRoaXMsIHN0ZDo6bm90aHJvdyk7IH0KCiAgICAgIGxvbmcKICAgICAg
dXNlX2NvdW50KCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01fcmVmY291bnQuX01f
Z2V0X3VzZV9jb3VudCgpOyB9CgogICAgICBib29sCiAgICAgIGV4cGlyZWQoKSBjb25zdCBub2V4
Y2VwdAogICAgICB7IHJldHVybiBfTV9yZWZjb3VudC5fTV9nZXRfdXNlX2NvdW50KCkgPT0gMDsg
fQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KIGJvb2wKIG93bmVyX2JlZm9yZShjb25z
dCBfX3NoYXJlZF9wdHI8X1RwMSwgX0xwPiYgX19yaHMpIGNvbnN0CiB7IHJldHVybiBfTV9yZWZj
b3VudC5fTV9sZXNzKF9fcmhzLl9NX3JlZmNvdW50KTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwMT4KIGJvb2wKIG93bmVyX2JlZm9yZShjb25zdCBfX3dlYWtfcHRyPF9UcDEsIF9McD4m
IF9fcmhzKSBjb25zdAogeyByZXR1cm4gX01fcmVmY291bnQuX01fbGVzcyhfX3Jocy5fTV9yZWZj
b3VudCk7IH0KCiAgICAgIHZvaWQKICAgICAgcmVzZXQoKSBub2V4Y2VwdAogICAgICB7IF9fd2Vh
a19wdHIoKS5zd2FwKCp0aGlzKTsgfQoKICAgICAgdm9pZAogICAgICBzd2FwKF9fd2Vha19wdHIm
IF9fcykgbm9leGNlcHQKICAgICAgewogc3RkOjpzd2FwKF9NX3B0ciwgX19zLl9NX3B0cik7CiBf
TV9yZWZjb3VudC5fTV9zd2FwKF9fcy5fTV9yZWZjb3VudCk7CiAgICAgIH0KCiAgICBwcml2YXRl
OgoKICAgICAgdm9pZAogICAgICBfTV9hc3NpZ24oX1RwKiBfX3B0ciwgY29uc3QgX19zaGFyZWRf
Y291bnQ8X0xwPiYgX19yZWZjb3VudCkgbm9leGNlcHQKICAgICAgewogX01fcHRyID0gX19wdHI7
CiBfTV9yZWZjb3VudCA9IF9fcmVmY291bnQ7CiAgICAgIH0KCiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcDEsIF9Mb2NrX3BvbGljeSBfTHAxPiBmcmllbmQgY2xhc3MgX19zaGFyZWRfcHRyOwog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCBfTG9ja19wb2xpY3kgX0xwMT4gZnJpZW5kIGNs
YXNzIF9fd2Vha19wdHI7CiAgICAgIGZyaWVuZCBjbGFzcyBfX2VuYWJsZV9zaGFyZWRfZnJvbV90
aGlzPF9UcCwgX0xwPjsKICAgICAgZnJpZW5kIGNsYXNzIGVuYWJsZV9zaGFyZWRfZnJvbV90aGlz
PF9UcD47CgogICAgICBfVHAqIF9NX3B0cjsKICAgICAgX193ZWFrX2NvdW50PF9McD4gX01fcmVm
Y291bnQ7CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBfTG9ja19wb2xpY3kgX0xw
PgogICAgaW5saW5lIHZvaWQKICAgIHN3YXAoX193ZWFrX3B0cjxfVHAsIF9McD4mIF9fYSwgX193
ZWFrX3B0cjxfVHAsIF9McD4mIF9fYikgbm9leGNlcHQKICAgIHsgX19hLnN3YXAoX19iKTsgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9UcDE+CiAgICBzdHJ1Y3QgX1NwX293
bmVyX2xlc3MgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwgX1RwLCBib29sPgogICAgewog
ICAgICBib29sCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX2xocywgY29uc3QgX1RwJiBf
X3JocykgY29uc3QKICAgICAgeyByZXR1cm4gX19saHMub3duZXJfYmVmb3JlKF9fcmhzKTsgfQoK
ICAgICAgYm9vbAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX19saHMsIGNvbnN0IF9UcDEm
IF9fcmhzKSBjb25zdAogICAgICB7IHJldHVybiBfX2xocy5vd25lcl9iZWZvcmUoX19yaHMpOyB9
CgogICAgICBib29sCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwMSYgX19saHMsIGNvbnN0IF9U
cCYgX19yaHMpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9fbGhzLm93bmVyX2JlZm9yZShfX3Jocyk7
IH0KICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgX0xvY2tfcG9saWN5IF9McD4KICAg
IHN0cnVjdCBvd25lcl9sZXNzPF9fc2hhcmVkX3B0cjxfVHAsIF9McD4+CiAgICA6IHB1YmxpYyBf
U3Bfb3duZXJfbGVzczxfX3NoYXJlZF9wdHI8X1RwLCBfTHA+LCBfX3dlYWtfcHRyPF9UcCwgX0xw
Pj4KICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBfTG9ja19wb2xpY3kgX0xwPgog
ICAgc3RydWN0IG93bmVyX2xlc3M8X193ZWFrX3B0cjxfVHAsIF9McD4+CiAgICA6IHB1YmxpYyBf
U3Bfb3duZXJfbGVzczxfX3dlYWtfcHRyPF9UcCwgX0xwPiwgX19zaGFyZWRfcHRyPF9UcCwgX0xw
Pj4KICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgX0xvY2tfcG9saWN5IF9McD4K
ICAgIGNsYXNzIF9fZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMKICAgIHsKICAgIHByb3RlY3RlZDoK
ICAgICAgY29uc3RleHByIF9fZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoKSBub2V4Y2VwdCB7IH0K
CiAgICAgIF9fZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoY29uc3QgX19lbmFibGVfc2hhcmVkX2Zy
b21fdGhpcyYpIG5vZXhjZXB0IHsgfQoKICAgICAgX19lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyYK
ICAgICAgb3BlcmF0b3I9KGNvbnN0IF9fZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMmKSBub2V4Y2Vw
dAogICAgICB7IHJldHVybiAqdGhpczsgfQoKICAgICAgfl9fZW5hYmxlX3NoYXJlZF9mcm9tX3Ro
aXMoKSB7IH0KCiAgICBwdWJsaWM6CiAgICAgIF9fc2hhcmVkX3B0cjxfVHAsIF9McD4KICAgICAg
c2hhcmVkX2Zyb21fdGhpcygpCiAgICAgIHsgcmV0dXJuIF9fc2hhcmVkX3B0cjxfVHAsIF9McD4o
dGhpcy0+X01fd2Vha190aGlzKTsgfQoKICAgICAgX19zaGFyZWRfcHRyPGNvbnN0IF9UcCwgX0xw
PgogICAgICBzaGFyZWRfZnJvbV90aGlzKCkgY29uc3QKICAgICAgeyByZXR1cm4gX19zaGFyZWRf
cHRyPGNvbnN0IF9UcCwgX0xwPih0aGlzLT5fTV93ZWFrX3RoaXMpOyB9CgogICAgcHJpdmF0ZToK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KIHZvaWQKIF9NX3dlYWtfYXNzaWduKF9UcDEq
IF9fcCwgY29uc3QgX19zaGFyZWRfY291bnQ8X0xwPiYgX19uKSBjb25zdCBub2V4Y2VwdAogeyBf
TV93ZWFrX3RoaXMuX01fYXNzaWduKF9fcCwgX19uKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwMT4KIGZyaWVuZCB2b2lkCiBfX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzX2hlbHBlcihj
b25zdCBfX3NoYXJlZF9jb3VudDxfTHA+JiBfX3BuLAogICAgICBjb25zdCBfX2VuYWJsZV9zaGFy
ZWRfZnJvbV90aGlzKiBfX3BlLAogICAgICBjb25zdCBfVHAxKiBfX3B4KSBub2V4Y2VwdAogewog
ICBpZiAoX19wZSAhPSAwKQogICAgIF9fcGUtPl9NX3dlYWtfYXNzaWduKGNvbnN0X2Nhc3Q8X1Rw
MSo+KF9fcHgpLCBfX3BuKTsKIH0KCiAgICAgIG11dGFibGUgX193ZWFrX3B0cjxfVHAsIF9McD4g
X01fd2Vha190aGlzOwogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgX0xvY2tfcG9s
aWN5IF9McCwgdHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZS4uLiBfQXJncz4KICAgIGlubGluZSBf
X3NoYXJlZF9wdHI8X1RwLCBfTHA+CiAgICBfX2FsbG9jYXRlX3NoYXJlZChjb25zdCBfQWxsb2Mm
IF9fYSwgX0FyZ3MmJi4uLiBfX2FyZ3MpCiAgICB7CiAgICAgIHJldHVybiBfX3NoYXJlZF9wdHI8
X1RwLCBfTHA+KF9TcF9tYWtlX3NoYXJlZF90YWcoKSwgX19hLAogICAgICAgIHN0ZDo6Zm9yd2Fy
ZDxfQXJncz4oX19hcmdzKS4uLik7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgX0xv
Y2tfcG9saWN5IF9McCwgdHlwZW5hbWUuLi4gX0FyZ3M+CiAgICBpbmxpbmUgX19zaGFyZWRfcHRy
PF9UcCwgX0xwPgogICAgX19tYWtlX3NoYXJlZChfQXJncyYmLi4uIF9fYXJncykKICAgIHsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxfVHA+Ojp0eXBlIF9UcF9uYzsK
ICAgICAgcmV0dXJuIHN0ZDo6X19hbGxvY2F0ZV9zaGFyZWQ8X1RwLCBfTHA+KHN0ZDo6YWxsb2Nh
dG9yPF9UcF9uYz4oKSwKICAgICAgICAgICBzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4p
OwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBfTG9ja19wb2xpY3kgX0xwPgogICAg
c3RydWN0IGhhc2g8X19zaGFyZWRfcHRyPF9UcCwgX0xwPj4KICAgIDogcHVibGljIF9faGFzaF9i
YXNlPHNpemVfdCwgX19zaGFyZWRfcHRyPF9UcCwgX0xwPj4KICAgIHsKICAgICAgc2l6ZV90CiAg
ICAgIG9wZXJhdG9yKCkoY29uc3QgX19zaGFyZWRfcHRyPF9UcCwgX0xwPiYgX19zKSBjb25zdCBu
b2V4Y2VwdAogICAgICB7IHJldHVybiBzdGQ6Omhhc2g8X1RwKj4oKShfX3MuZ2V0KCkpOyB9CiAg
ICB9OwoKCn0KIyA1MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9iaXRzL3NoYXJlZF9wdHIuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkIF9fYXR0
cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKCgoKCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaCwgdHlwZW5hbWUgX1RyLCB0eXBlbmFtZSBfVHAsIF9Mb2NrX3BvbGlj
eSBfTHA+CiAgICBpbmxpbmUgc3RkOjpiYXNpY19vc3RyZWFtPF9DaCwgX1RyPiYKICAgIG9wZXJh
dG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaCwgX1RyPiYgX19vcywKICAgICAgICBjb25zdCBf
X3NoYXJlZF9wdHI8X1RwLCBfTHA+JiBfX3ApCiAgICB7CiAgICAgIF9fb3MgPDwgX19wLmdldCgp
OwogICAgICByZXR1cm4gX19vczsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9EZWwsIHR5
cGVuYW1lIF9UcCwgX0xvY2tfcG9saWN5IF9McD4KICAgIGlubGluZSBfRGVsKgogICAgZ2V0X2Rl
bGV0ZXIoY29uc3QgX19zaGFyZWRfcHRyPF9UcCwgX0xwPiYgX19wKSBub2V4Y2VwdAogICAgewoK
CgogICAgICByZXR1cm4gMDsKCiAgICB9CiMgOTIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zaGFyZWRfcHRyLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjbGFzcyBzaGFyZWRfcHRyIDogcHVibGljIF9fc2hhcmVk
X3B0cjxfVHA+CiAgICB7CiAgICBwdWJsaWM6CgoKCgogICAgICBjb25zdGV4cHIgc2hhcmVkX3B0
cigpIG5vZXhjZXB0CiAgICAgIDogX19zaGFyZWRfcHRyPF9UcD4oKSB7IH0KCiAgICAgIHNoYXJl
ZF9wdHIoY29uc3Qgc2hhcmVkX3B0ciYpIG5vZXhjZXB0ID0gZGVmYXVsdDsKCgoKCgoKCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiBleHBsaWNpdCBzaGFyZWRfcHRyKF9UcDEqIF9fcCkK
ICAgICAgICA6IF9fc2hhcmVkX3B0cjxfVHA+KF9fcCkgeyB9CiMgMTI4ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc2hhcmVkX3B0
ci5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1lIF9EZWxldGVyPgog
c2hhcmVkX3B0cihfVHAxKiBfX3AsIF9EZWxldGVyIF9fZCkKICAgICAgICA6IF9fc2hhcmVkX3B0
cjxfVHA+KF9fcCwgX19kKSB7IH0KIyAxNDUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zaGFyZWRfcHRyLmgiIDMKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX0RlbGV0ZXI+CiBzaGFyZWRfcHRyKG51bGxwdHJfdCBfX3AsIF9EZWxl
dGVyIF9fZCkKICAgICAgICA6IF9fc2hhcmVkX3B0cjxfVHA+KF9fcCwgX19kKSB7IH0KIyAxNjQg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
Yml0cy9zaGFyZWRfcHRyLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5h
bWUgX0RlbGV0ZXIsIHR5cGVuYW1lIF9BbGxvYz4KIHNoYXJlZF9wdHIoX1RwMSogX19wLCBfRGVs
ZXRlciBfX2QsIF9BbGxvYyBfX2EpCiA6IF9fc2hhcmVkX3B0cjxfVHA+KF9fcCwgX19kLCBzdGQ6
Om1vdmUoX19hKSkgeyB9CiMgMTgzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc2hhcmVkX3B0ci5oIiAzCiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9EZWxldGVyLCB0eXBlbmFtZSBfQWxsb2M+CiBzaGFyZWRfcHRyKG51bGxwdHJf
dCBfX3AsIF9EZWxldGVyIF9fZCwgX0FsbG9jIF9fYSkKIDogX19zaGFyZWRfcHRyPF9UcD4oX19w
LCBfX2QsIHN0ZDo6bW92ZShfX2EpKSB7IH0KIyAyMDUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zaGFyZWRfcHRyLmgiIDMKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KIHNoYXJlZF9wdHIoY29uc3Qgc2hhcmVkX3B0cjxf
VHAxPiYgX19yLCBfVHAqIF9fcCkgbm9leGNlcHQKIDogX19zaGFyZWRfcHRyPF9UcD4oX19yLCBf
X3ApIHsgfQojIDIxNiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9iaXRzL3NoYXJlZF9wdHIuaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHAxLCB0eXBlbmFtZSA9IHR5cGVuYW1lCiAgICAgICAgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19jb252ZXJ0aWJsZTxfVHAxKiwgX1RwKj46OnZhbHVlPjo6dHlwZT4KIHNoYXJlZF9wdHIoY29u
c3Qgc2hhcmVkX3B0cjxfVHAxPiYgX19yKSBub2V4Y2VwdAogICAgICAgIDogX19zaGFyZWRfcHRy
PF9UcD4oX19yKSB7IH0KCgoKCgoKICAgICAgc2hhcmVkX3B0cihzaGFyZWRfcHRyJiYgX19yKSBu
b2V4Y2VwdAogICAgICA6IF9fc2hhcmVkX3B0cjxfVHA+KHN0ZDo6bW92ZShfX3IpKSB7IH0KCgoK
CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgPSB0eXBlbmFtZQogICAg
ICAgIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY29udmVydGlibGU8X1RwMSosIF9UcCo+Ojp2YWx1
ZT46OnR5cGU+CiBzaGFyZWRfcHRyKHNoYXJlZF9wdHI8X1RwMT4mJiBfX3IpIG5vZXhjZXB0CiA6
IF9fc2hhcmVkX3B0cjxfVHA+KHN0ZDo6bW92ZShfX3IpKSB7IH0KIyAyNDcgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zaGFyZWRf
cHRyLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KIGV4cGxpY2l0IHNoYXJlZF9w
dHIoY29uc3Qgd2Vha19wdHI8X1RwMT4mIF9fcikKIDogX19zaGFyZWRfcHRyPF9UcD4oX19yKSB7
IH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxPgogc2hhcmVkX3B0cihzdGQ6OmF1dG9f
cHRyPF9UcDE+JiYgX19yKTsKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFt
ZSBfRGVsPgogc2hhcmVkX3B0cihzdGQ6OnVuaXF1ZV9wdHI8X1RwMSwgX0RlbD4mJiBfX3IpCiA6
IF9fc2hhcmVkX3B0cjxfVHA+KHN0ZDo6bW92ZShfX3IpKSB7IH0KCgoKCgoKICAgICAgY29uc3Rl
eHByIHNoYXJlZF9wdHIobnVsbHB0cl90IF9fcCkgbm9leGNlcHQKICAgICAgOiBfX3NoYXJlZF9w
dHI8X1RwPihfX3ApIHsgfQoKICAgICAgc2hhcmVkX3B0ciYgb3BlcmF0b3I9KGNvbnN0IHNoYXJl
ZF9wdHImKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAx
Pgogc2hhcmVkX3B0ciYKIG9wZXJhdG9yPShjb25zdCBzaGFyZWRfcHRyPF9UcDE+JiBfX3IpIG5v
ZXhjZXB0CiB7CiAgIHRoaXMtPl9fc2hhcmVkX3B0cjxfVHA+OjpvcGVyYXRvcj0oX19yKTsKICAg
cmV0dXJuICp0aGlzOwogfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiBzaGFyZWRf
cHRyJgogb3BlcmF0b3I9KHN0ZDo6YXV0b19wdHI8X1RwMT4mJiBfX3IpCiB7CiAgIHRoaXMtPl9f
c2hhcmVkX3B0cjxfVHA+OjpvcGVyYXRvcj0oc3RkOjptb3ZlKF9fcikpOwogICByZXR1cm4gKnRo
aXM7CiB9CgoKICAgICAgc2hhcmVkX3B0ciYKICAgICAgb3BlcmF0b3I9KHNoYXJlZF9wdHImJiBf
X3IpIG5vZXhjZXB0CiAgICAgIHsKIHRoaXMtPl9fc2hhcmVkX3B0cjxfVHA+OjpvcGVyYXRvcj0o
c3RkOjptb3ZlKF9fcikpOwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICB0ZW1wbGF0ZTxj
bGFzcyBfVHAxPgogc2hhcmVkX3B0ciYKIG9wZXJhdG9yPShzaGFyZWRfcHRyPF9UcDE+JiYgX19y
KSBub2V4Y2VwdAogewogICB0aGlzLT5fX3NoYXJlZF9wdHI8X1RwPjo6b3BlcmF0b3I9KHN0ZDo6
bW92ZShfX3IpKTsKICAgcmV0dXJuICp0aGlzOwogfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwMSwgdHlwZW5hbWUgX0RlbD4KIHNoYXJlZF9wdHImCiBvcGVyYXRvcj0oc3RkOjp1bmlxdWVf
cHRyPF9UcDEsIF9EZWw+JiYgX19yKQogewogICB0aGlzLT5fX3NoYXJlZF9wdHI8X1RwPjo6b3Bl
cmF0b3I9KHN0ZDo6bW92ZShfX3IpKTsKICAgcmV0dXJuICp0aGlzOwogfQoKICAgIHByaXZhdGU6
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lLi4uIF9BcmdzPgogc2hh
cmVkX3B0cihfU3BfbWFrZV9zaGFyZWRfdGFnIF9fdGFnLCBjb25zdCBfQWxsb2MmIF9fYSwKICAg
ICBfQXJncyYmLi4uIF9fYXJncykKIDogX19zaGFyZWRfcHRyPF9UcD4oX190YWcsIF9fYSwgc3Rk
Ojpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKQogeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHAxLCB0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lLi4uIF9BcmdzPgogZnJpZW5kIHNoYXJl
ZF9wdHI8X1RwMT4KIGFsbG9jYXRlX3NoYXJlZChjb25zdCBfQWxsb2MmIF9fYSwgX0FyZ3MmJi4u
LiBfX2FyZ3MpOwoKCiAgICAgIHNoYXJlZF9wdHIoY29uc3Qgd2Vha19wdHI8X1RwPiYgX19yLCBz
dGQ6Om5vdGhyb3dfdCkKICAgICAgOiBfX3NoYXJlZF9wdHI8X1RwPihfX3IsIHN0ZDo6bm90aHJv
dykgeyB9CgogICAgICBmcmllbmQgY2xhc3Mgd2Vha19wdHI8X1RwPjsKICAgIH07CgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSBfVHAyPgogICAgaW5saW5lIGJvb2wKICAgIG9w
ZXJhdG9yPT0oY29uc3Qgc2hhcmVkX3B0cjxfVHAxPiYgX19hLAogICAgICAgIGNvbnN0IHNoYXJl
ZF9wdHI8X1RwMj4mIF9fYikgbm9leGNlcHQKICAgIHsgcmV0dXJuIF9fYS5nZXQoKSA9PSBfX2Iu
Z2V0KCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGJvb2wKICAgIG9w
ZXJhdG9yPT0oY29uc3Qgc2hhcmVkX3B0cjxfVHA+JiBfX2EsIG51bGxwdHJfdCkgbm9leGNlcHQK
ICAgIHsgcmV0dXJuICFfX2E7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5l
IGJvb2wKICAgIG9wZXJhdG9yPT0obnVsbHB0cl90LCBjb25zdCBzaGFyZWRfcHRyPF9UcD4mIF9f
YSkgbm9leGNlcHQKICAgIHsgcmV0dXJuICFfX2E7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
MSwgdHlwZW5hbWUgX1RwMj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHNo
YXJlZF9wdHI8X1RwMT4mIF9fYSwKICAgICAgICBjb25zdCBzaGFyZWRfcHRyPF9UcDI+JiBfX2Ip
IG5vZXhjZXB0CiAgICB7IHJldHVybiBfX2EuZ2V0KCkgIT0gX19iLmdldCgpOyB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHNo
YXJlZF9wdHI8X1RwPiYgX19hLCBudWxscHRyX3QpIG5vZXhjZXB0CiAgICB7IHJldHVybiAoYm9v
bClfX2E7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGJvb2wKICAgIG9w
ZXJhdG9yIT0obnVsbHB0cl90LCBjb25zdCBzaGFyZWRfcHRyPF9UcD4mIF9fYSkgbm9leGNlcHQK
ICAgIHsgcmV0dXJuIChib29sKV9fYTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBl
bmFtZSBfVHAyPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPChjb25zdCBzaGFyZWRfcHRy
PF9UcDE+JiBfX2EsCiAgICAgICBjb25zdCBzaGFyZWRfcHRyPF9UcDI+JiBfX2IpIG5vZXhjZXB0
CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpjb21tb25fdHlwZTxfVHAxKiwgX1Rw
Mio+Ojp0eXBlIF9DVDsKICAgICAgcmV0dXJuIHN0ZDo6bGVzczxfQ1Q+KCkoX19hLmdldCgpLCBf
X2IuZ2V0KCkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgYm9v
bAogICAgb3BlcmF0b3I8KGNvbnN0IHNoYXJlZF9wdHI8X1RwPiYgX19hLCBudWxscHRyX3QpIG5v
ZXhjZXB0CiAgICB7IHJldHVybiBzdGQ6Omxlc3M8X1RwKj4oKShfX2EuZ2V0KCksIG51bGxwdHIp
OyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRv
cjwobnVsbHB0cl90LCBjb25zdCBzaGFyZWRfcHRyPF9UcD4mIF9fYSkgbm9leGNlcHQKICAgIHsg
cmV0dXJuIHN0ZDo6bGVzczxfVHAqPigpKG51bGxwdHIsIF9fYS5nZXQoKSk7IH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgX1RwMj4KICAgIGlubGluZSBib29sCiAgICBvcGVy
YXRvcjw9KGNvbnN0IHNoYXJlZF9wdHI8X1RwMT4mIF9fYSwKICAgICAgICBjb25zdCBzaGFyZWRf
cHRyPF9UcDI+JiBfX2IpIG5vZXhjZXB0CiAgICB7IHJldHVybiAhKF9fYiA8IF9fYSk7IH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPD0oY29u
c3Qgc2hhcmVkX3B0cjxfVHA+JiBfX2EsIG51bGxwdHJfdCkgbm9leGNlcHQKICAgIHsgcmV0dXJu
ICEobnVsbHB0ciA8IF9fYSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5l
IGJvb2wKICAgIG9wZXJhdG9yPD0obnVsbHB0cl90LCBjb25zdCBzaGFyZWRfcHRyPF9UcD4mIF9f
YSkgbm9leGNlcHQKICAgIHsgcmV0dXJuICEoX19hIDwgbnVsbHB0cik7IH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgX1RwMj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRv
cj4oY29uc3Qgc2hhcmVkX3B0cjxfVHAxPiYgX19hLAogICAgICAgY29uc3Qgc2hhcmVkX3B0cjxf
VHAyPiYgX19iKSBub2V4Y2VwdAogICAgeyByZXR1cm4gKF9fYiA8IF9fYSk7IH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPihjb25zdCBzaGFy
ZWRfcHRyPF9UcD4mIF9fYSwgbnVsbHB0cl90KSBub2V4Y2VwdAogICAgeyByZXR1cm4gc3RkOjps
ZXNzPF9UcCo+KCkobnVsbHB0ciwgX19hLmdldCgpKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+KG51bGxwdHJfdCwgY29uc3Qgc2hhcmVk
X3B0cjxfVHA+JiBfX2EpIG5vZXhjZXB0CiAgICB7IHJldHVybiBzdGQ6Omxlc3M8X1RwKj4oKShf
X2EuZ2V0KCksIG51bGxwdHIpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1l
IF9UcDI+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+PShjb25zdCBzaGFyZWRfcHRyPF9U
cDE+JiBfX2EsCiAgICAgICAgY29uc3Qgc2hhcmVkX3B0cjxfVHAyPiYgX19iKSBub2V4Y2VwdAog
ICAgeyByZXR1cm4gIShfX2EgPCBfX2IpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAg
IGlubGluZSBib29sCiAgICBvcGVyYXRvcj49KGNvbnN0IHNoYXJlZF9wdHI8X1RwPiYgX19hLCBu
dWxscHRyX3QpIG5vZXhjZXB0CiAgICB7IHJldHVybiAhKF9fYSA8IG51bGxwdHIpOyB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj49KG51bGxw
dHJfdCwgY29uc3Qgc2hhcmVkX3B0cjxfVHA+JiBfX2EpIG5vZXhjZXB0CiAgICB7IHJldHVybiAh
KG51bGxwdHIgPCBfX2EpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBs
ZXNzPHNoYXJlZF9wdHI8X1RwPj4gOiBwdWJsaWMgX1NwX2xlc3M8c2hhcmVkX3B0cjxfVHA+Pgog
ICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHZvaWQKICAgIHN3
YXAoc2hhcmVkX3B0cjxfVHA+JiBfX2EsIHNoYXJlZF9wdHI8X1RwPiYgX19iKSBub2V4Y2VwdAog
ICAgeyBfX2Euc3dhcChfX2IpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1l
IF9UcDE+CiAgICBpbmxpbmUgc2hhcmVkX3B0cjxfVHA+CiAgICBzdGF0aWNfcG9pbnRlcl9jYXN0
KGNvbnN0IHNoYXJlZF9wdHI8X1RwMT4mIF9fcikgbm9leGNlcHQKICAgIHsgcmV0dXJuIHNoYXJl
ZF9wdHI8X1RwPihfX3IsIHN0YXRpY19jYXN0PF9UcCo+KF9fci5nZXQoKSkpOyB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1RwMT4KICAgIGlubGluZSBzaGFyZWRfcHRyPF9U
cD4KICAgIGNvbnN0X3BvaW50ZXJfY2FzdChjb25zdCBzaGFyZWRfcHRyPF9UcDE+JiBfX3IpIG5v
ZXhjZXB0CiAgICB7IHJldHVybiBzaGFyZWRfcHRyPF9UcD4oX19yLCBjb25zdF9jYXN0PF9UcCo+
KF9fci5nZXQoKSkpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1RwMT4K
ICAgIGlubGluZSBzaGFyZWRfcHRyPF9UcD4KICAgIGR5bmFtaWNfcG9pbnRlcl9jYXN0KGNvbnN0
IHNoYXJlZF9wdHI8X1RwMT4mIF9fcikgbm9leGNlcHQKICAgIHsKICAgICAgaWYgKF9UcCogX19w
ID0gZHluYW1pY19jYXN0PF9UcCo+KF9fci5nZXQoKSkpCiByZXR1cm4gc2hhcmVkX3B0cjxfVHA+
KF9fciwgX19wKTsKICAgICAgcmV0dXJuIHNoYXJlZF9wdHI8X1RwPigpOwogICAgfQoKCgoKCgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjbGFzcyB3ZWFrX3B0ciA6IHB1YmxpYyBfX3dl
YWtfcHRyPF9UcD4KICAgIHsKICAgIHB1YmxpYzoKICAgICAgY29uc3RleHByIHdlYWtfcHRyKCkg
bm9leGNlcHQKICAgICAgOiBfX3dlYWtfcHRyPF9UcD4oKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcDEsIHR5cGVuYW1lID0gdHlwZW5hbWUKICAgICAgICBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX2NvbnZlcnRpYmxlPF9UcDEqLCBfVHAqPjo6dmFsdWU+Ojp0eXBlPgogd2Vha19wdHIo
Y29uc3Qgd2Vha19wdHI8X1RwMT4mIF9fcikgbm9leGNlcHQKIDogX193ZWFrX3B0cjxfVHA+KF9f
cikgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSA9IHR5cGVuYW1l
CiAgICAgICAgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTxfVHAxKiwgX1RwKj46
OnZhbHVlPjo6dHlwZT4KIHdlYWtfcHRyKGNvbnN0IHNoYXJlZF9wdHI8X1RwMT4mIF9fcikgbm9l
eGNlcHQKIDogX193ZWFrX3B0cjxfVHA+KF9fcikgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHAxPgogd2Vha19wdHImCiBvcGVyYXRvcj0oY29uc3Qgd2Vha19wdHI8X1RwMT4mIF9fcikg
bm9leGNlcHQKIHsKICAgdGhpcy0+X193ZWFrX3B0cjxfVHA+OjpvcGVyYXRvcj0oX19yKTsKICAg
cmV0dXJuICp0aGlzOwogfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KIHdlYWtfcHRy
Jgogb3BlcmF0b3I9KGNvbnN0IHNoYXJlZF9wdHI8X1RwMT4mIF9fcikgbm9leGNlcHQKIHsKICAg
dGhpcy0+X193ZWFrX3B0cjxfVHA+OjpvcGVyYXRvcj0oX19yKTsKICAgcmV0dXJuICp0aGlzOwog
fQoKICAgICAgc2hhcmVkX3B0cjxfVHA+CiAgICAgIGxvY2soKSBjb25zdCBub2V4Y2VwdAogICAg
ICB7IHJldHVybiBzaGFyZWRfcHRyPF9UcD4oKnRoaXMsIHN0ZDo6bm90aHJvdyk7IH0KICAgIH07
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdm9pZAogICAgc3dhcCh3ZWFr
X3B0cjxfVHA+JiBfX2EsIHdlYWtfcHRyPF9UcD4mIF9fYikgbm9leGNlcHQKICAgIHsgX19hLnN3
YXAoX19iKTsgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBvd25lcl9s
ZXNzOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IG93bmVyX2xlc3M8c2hh
cmVkX3B0cjxfVHA+PgogICAgOiBwdWJsaWMgX1NwX293bmVyX2xlc3M8c2hhcmVkX3B0cjxfVHA+
LCB3ZWFrX3B0cjxfVHA+PgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg
c3RydWN0IG93bmVyX2xlc3M8d2Vha19wdHI8X1RwPj4KICAgIDogcHVibGljIF9TcF9vd25lcl9s
ZXNzPHdlYWtfcHRyPF9UcD4sIHNoYXJlZF9wdHI8X1RwPj4KICAgIHsgfTsKCgoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgY2xhc3MgZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMKICAgIHsK
ICAgIHByb3RlY3RlZDoKICAgICAgY29uc3RleHByIGVuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCkg
bm9leGNlcHQgeyB9CgogICAgICBlbmFibGVfc2hhcmVkX2Zyb21fdGhpcyhjb25zdCBlbmFibGVf
c2hhcmVkX2Zyb21fdGhpcyYpIG5vZXhjZXB0IHsgfQoKICAgICAgZW5hYmxlX3NoYXJlZF9mcm9t
X3RoaXMmCiAgICAgIG9wZXJhdG9yPShjb25zdCBlbmFibGVfc2hhcmVkX2Zyb21fdGhpcyYpIG5v
ZXhjZXB0CiAgICAgIHsgcmV0dXJuICp0aGlzOyB9CgogICAgICB+ZW5hYmxlX3NoYXJlZF9mcm9t
X3RoaXMoKSB7IH0KCiAgICBwdWJsaWM6CiAgICAgIHNoYXJlZF9wdHI8X1RwPgogICAgICBzaGFy
ZWRfZnJvbV90aGlzKCkKICAgICAgeyByZXR1cm4gc2hhcmVkX3B0cjxfVHA+KHRoaXMtPl9NX3dl
YWtfdGhpcyk7IH0KCiAgICAgIHNoYXJlZF9wdHI8Y29uc3QgX1RwPgogICAgICBzaGFyZWRfZnJv
bV90aGlzKCkgY29uc3QKICAgICAgeyByZXR1cm4gc2hhcmVkX3B0cjxjb25zdCBfVHA+KHRoaXMt
Pl9NX3dlYWtfdGhpcyk7IH0KCiAgICBwcml2YXRlOgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHAxPgogdm9pZAogX01fd2Vha19hc3NpZ24oX1RwMSogX19wLCBjb25zdCBfX3NoYXJlZF9jb3Vu
dDw+JiBfX24pIGNvbnN0IG5vZXhjZXB0CiB7IF9NX3dlYWtfdGhpcy5fTV9hc3NpZ24oX19wLCBf
X24pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxPgogZnJpZW5kIHZvaWQKIF9fZW5h
YmxlX3NoYXJlZF9mcm9tX3RoaXNfaGVscGVyKGNvbnN0IF9fc2hhcmVkX2NvdW50PD4mIF9fcG4s
CiAgICAgIGNvbnN0IGVuYWJsZV9zaGFyZWRfZnJvbV90aGlzKiBfX3BlLAogICAgICBjb25zdCBf
VHAxKiBfX3B4KSBub2V4Y2VwdAogewogICBpZiAoX19wZSAhPSAwKQogICAgIF9fcGUtPl9NX3dl
YWtfYXNzaWduKGNvbnN0X2Nhc3Q8X1RwMSo+KF9fcHgpLCBfX3BuKTsKIH0KCiAgICAgIG11dGFi
bGUgd2Vha19wdHI8X1RwPiBfTV93ZWFrX3RoaXM7CiAgICB9OwojIDU4MyAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3NoYXJlZF9w
dHIuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFt
ZS4uLiBfQXJncz4KICAgIGlubGluZSBzaGFyZWRfcHRyPF9UcD4KICAgIGFsbG9jYXRlX3NoYXJl
ZChjb25zdCBfQWxsb2MmIF9fYSwgX0FyZ3MmJi4uLiBfX2FyZ3MpCiAgICB7CiAgICAgIHJldHVy
biBzaGFyZWRfcHRyPF9UcD4oX1NwX21ha2Vfc2hhcmVkX3RhZygpLCBfX2EsCiAgICAgICAgc3Rk
Ojpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKICAgIH0KIyA1OTggIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zaGFyZWRfcHRy
LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4uIF9BcmdzPgogICAgaW5s
aW5lIHNoYXJlZF9wdHI8X1RwPgogICAgbWFrZV9zaGFyZWQoX0FyZ3MmJi4uLiBfX2FyZ3MpCiAg
ICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8X1RwPjo6dHlwZSBf
VHBfbmM7CiAgICAgIHJldHVybiBzdGQ6OmFsbG9jYXRlX3NoYXJlZDxfVHA+KHN0ZDo6YWxsb2Nh
dG9yPF9UcF9uYz4oKSwKICAgICAgICAgICBzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4p
OwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGhhc2g8c2hhcmVk
X3B0cjxfVHA+PgogICAgOiBwdWJsaWMgX19oYXNoX2Jhc2U8c2l6ZV90LCBzaGFyZWRfcHRyPF9U
cD4+CiAgICB7CiAgICAgIHNpemVfdAogICAgICBvcGVyYXRvcigpKGNvbnN0IHNoYXJlZF9wdHI8
X1RwPiYgX19zKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGQ6Omhhc2g8X1RwKj4o
KShfX3MuZ2V0KCkpOyB9CiAgICB9OwoKCgoKfQojIDgzICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL21lbW9yeSIgMiAzCgojIDEgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYmFja3dh
cmQvYXV0b19wdHIuaCIgMSAzCiMgMzEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYmFja3dhcmQvYXV0b19wdHIuaCIgMwojZGVmaW5lIF9C
QUNLV0FSRF9BVVRPX1BUUl9IIDEKCgoKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9f
dmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKIyA0NyAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iYWNrd2FyZC9hdXRvX3B0ci5oIiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KICAgIHN0cnVjdCBhdXRvX3B0cl9yZWYKICAgIHsK
ICAgICAgX1RwMSogX01fcHRyOwoKICAgICAgZXhwbGljaXQKICAgICAgYXV0b19wdHJfcmVmKF9U
cDEqIF9fcCk6IF9NX3B0cihfX3ApIHsgfQogICAgfSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNh
dGVkX18pKTsKIyA4NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9iYWNrd2FyZC9hdXRvX3B0ci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgY2xhc3MgYXV0b19wdHIKICAgIHsKICAgIHByaXZhdGU6CiAgICAgIF9UcCogX01f
cHRyOwoKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgX1RwIGVsZW1lbnRfdHlwZTsKCgoKCgoK
CiAgICAgIGV4cGxpY2l0CiAgICAgIGF1dG9fcHRyKGVsZW1lbnRfdHlwZSogX19wID0gMCkgdGhy
b3coKSA6IF9NX3B0cihfX3ApIHsgfQojIDExMiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iYWNrd2FyZC9hdXRvX3B0ci5oIiAzCiAgICAg
IGF1dG9fcHRyKGF1dG9fcHRyJiBfX2EpIHRocm93KCkgOiBfTV9wdHIoX19hLnJlbGVhc2UoKSkg
eyB9CiMgMTI0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2JhY2t3YXJkL2F1dG9fcHRyLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwMT4KICAgICAgICBhdXRvX3B0cihhdXRvX3B0cjxfVHAxPiYgX19hKSB0aHJvdygpIDogX01f
cHRyKF9fYS5yZWxlYXNlKCkpIHsgfQojIDEzNSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iYWNrd2FyZC9hdXRvX3B0ci5oIiAzCiAgICAg
IGF1dG9fcHRyJgogICAgICBvcGVyYXRvcj0oYXV0b19wdHImIF9fYSkgdGhyb3coKQogICAgICB7
CiByZXNldChfX2EucmVsZWFzZSgpKTsKIHJldHVybiAqdGhpczsKICAgICAgfQojIDE1MiAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iYWNr
d2FyZC9hdXRvX3B0ci5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiAgICAgICAg
YXV0b19wdHImCiAgICAgICAgb3BlcmF0b3I9KGF1dG9fcHRyPF9UcDE+JiBfX2EpIHRocm93KCkK
ICAgICAgICB7CiAgIHJlc2V0KF9fYS5yZWxlYXNlKCkpOwogICByZXR1cm4gKnRoaXM7CiB9CiMg
MTcwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OS4zL2JhY2t3YXJkL2F1dG9fcHRyLmgiIDMKICAgICAgfmF1dG9fcHRyKCkgeyBkZWxldGUgX01f
cHRyOyB9CiMgMTgwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2JhY2t3YXJkL2F1dG9fcHRyLmgiIDMKICAgICAgZWxlbWVudF90eXBlJgog
ICAgICBvcGVyYXRvciooKSBjb25zdCB0aHJvdygpCiAgICAgIHsKIDsKIHJldHVybiAqX01fcHRy
OwogICAgICB9CgoKCgoKCgogICAgICBlbGVtZW50X3R5cGUqCiAgICAgIG9wZXJhdG9yLT4oKSBj
b25zdCB0aHJvdygpCiAgICAgIHsKIDsKIHJldHVybiBfTV9wdHI7CiAgICAgIH0KIyAyMTAgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYmFj
a3dhcmQvYXV0b19wdHIuaCIgMwogICAgICBlbGVtZW50X3R5cGUqCiAgICAgIGdldCgpIGNvbnN0
IHRocm93KCkgeyByZXR1cm4gX01fcHRyOyB9CiMgMjI0ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JhY2t3YXJkL2F1dG9fcHRyLmgiIDMK
ICAgICAgZWxlbWVudF90eXBlKgogICAgICByZWxlYXNlKCkgdGhyb3coKQogICAgICB7CiBlbGVt
ZW50X3R5cGUqIF9fdG1wID0gX01fcHRyOwogX01fcHRyID0gMDsKIHJldHVybiBfX3RtcDsKICAg
ICAgfQojIDIzOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iYWNrd2FyZC9hdXRvX3B0ci5oIiAzCiAgICAgIHZvaWQKICAgICAgcmVzZXQo
ZWxlbWVudF90eXBlKiBfX3AgPSAwKSB0aHJvdygpCiAgICAgIHsKIGlmIChfX3AgIT0gX01fcHRy
KQogICB7CiAgICAgZGVsZXRlIF9NX3B0cjsKICAgICBfTV9wdHIgPSBfX3A7CiAgIH0KICAgICAg
fQojIDI2MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iYWNrd2FyZC9hdXRvX3B0ci5oIiAzCiAgICAgIGF1dG9fcHRyKGF1dG9fcHRyX3Jl
ZjxlbGVtZW50X3R5cGU+IF9fcmVmKSB0aHJvdygpCiAgICAgIDogX01fcHRyKF9fcmVmLl9NX3B0
cikgeyB9CgogICAgICBhdXRvX3B0ciYKICAgICAgb3BlcmF0b3I9KGF1dG9fcHRyX3JlZjxlbGVt
ZW50X3R5cGU+IF9fcmVmKSB0aHJvdygpCiAgICAgIHsKIGlmIChfX3JlZi5fTV9wdHIgIT0gdGhp
cy0+Z2V0KCkpCiAgIHsKICAgICBkZWxldGUgX01fcHRyOwogICAgIF9NX3B0ciA9IF9fcmVmLl9N
X3B0cjsKICAgfQogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHAxPgogICAgICAgIG9wZXJhdG9yIGF1dG9fcHRyX3JlZjxfVHAxPigpIHRocm93KCkKICAg
ICAgICB7IHJldHVybiBhdXRvX3B0cl9yZWY8X1RwMT4odGhpcy0+cmVsZWFzZSgpKTsgfQoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KICAgICAgICBvcGVyYXRvciBhdXRvX3B0cjxfVHAx
PigpIHRocm93KCkKICAgICAgICB7IHJldHVybiBhdXRvX3B0cjxfVHAxPih0aGlzLT5yZWxlYXNl
KCkpOyB9CiAgICB9IF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwoKCgogIHRlbXBs
YXRlPD4KICAgIGNsYXNzIGF1dG9fcHRyPHZvaWQ+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIHR5
cGVkZWYgdm9pZCBlbGVtZW50X3R5cGU7CiAgICB9IF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0
ZWRfXykpOwoKCiAgdGVtcGxhdGU8X0xvY2tfcG9saWN5IF9McD4KICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+CiAgICBpbmxpbmUKICAgIF9fc2hhcmVkX2NvdW50PF9McD46Ol9fc2hhcmVkX2NvdW50
KHN0ZDo6YXV0b19wdHI8X1RwPiYmIF9fcikKICAgIDogX01fcGkobmV3IF9TcF9jb3VudGVkX3B0
cjxfVHAqLCBfTHA+KF9fci5nZXQoKSkpCiAgICB7IF9fci5yZWxlYXNlKCk7IH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwLCBfTG9ja19wb2xpY3kgX0xwPgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cDE+CiAgICBpbmxpbmUKICAgIF9fc2hhcmVkX3B0cjxfVHAsIF9McD46Ol9fc2hhcmVkX3B0cihz
dGQ6OmF1dG9fcHRyPF9UcDE+JiYgX19yKQogICAgOiBfTV9wdHIoX19yLmdldCgpKSwgX01fcmVm
Y291bnQoKQogICAgewogICAgIAogICAgICBzdGF0aWNfYXNzZXJ0KCBzaXplb2YoX1RwMSkgPiAw
LCAiaW5jb21wbGV0ZSB0eXBlIiApOwogICAgICBfVHAxKiBfX3RtcCA9IF9fci5nZXQoKTsKICAg
ICAgX01fcmVmY291bnQgPSBfX3NoYXJlZF9jb3VudDxfTHA+KHN0ZDo6bW92ZShfX3IpKTsKICAg
ICAgX19lbmFibGVfc2hhcmVkX2Zyb21fdGhpc19oZWxwZXIoX01fcmVmY291bnQsIF9fdG1wLCBf
X3RtcCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHAxPgogICAgaW5saW5lCiAgICBzaGFyZWRfcHRyPF9UcD46OnNoYXJlZF9wdHIoc3RkOjph
dXRvX3B0cjxfVHAxPiYmIF9fcikKICAgIDogX19zaGFyZWRfcHRyPF9UcD4oc3RkOjptb3ZlKF9f
cikpIHsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9EcD4KICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVXAsIHR5cGVuYW1lPgogICAgaW5saW5lCiAgICB1bmlxdWVfcHRyPF9UcCwg
X0RwPjo6dW5pcXVlX3B0cihhdXRvX3B0cjxfVXA+JiYgX191KSBub2V4Y2VwdAogICAgOiBfTV90
KF9fdS5yZWxlYXNlKCksIGRlbGV0ZXJfdHlwZSgpKSB7IH0KCgoKfQojIDg1ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL21lbW9yeSIgMiAz
CiMgMzIgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oIiAyCiMgMSAiLi4vLi4v
U291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3Rm
L0Fzc2VydGlvbnMuaCIKI2RlZmluZSBXVEZfQXNzZXJ0aW9uc19oIAojIDQyICIuLi8uLi9Tb3Vy
Y2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgiCiMgMSAiL3Vzci9pbmNsdWRlL2ludHR5cGVzLmgiIDEg
MyA0CiMgMjMgIi91c3IvaW5jbHVkZS9pbnR0eXBlcy5oIiAzIDQKI2RlZmluZSBfSU5UVFlQRVNf
SCAxCiMgMzIgIi91c3IvaW5jbHVkZS9pbnR0eXBlcy5oIiAzIDQKI2RlZmluZSBfX2d3Y2hhcl90
IHdjaGFyX3QKCgoKCgoKCiNkZWZpbmUgX19fX2d3Y2hhcl90X2RlZmluZWQgMQoKCgoKCgojZGVm
aW5lIF9fUFJJNjRfUFJFRklYICJsbCIKI2RlZmluZSBfX1BSSVBUUl9QUkVGSVggCgoKCgoKI2Rl
ZmluZSBQUklkOCAiZCIKI2RlZmluZSBQUklkMTYgImQiCiNkZWZpbmUgUFJJZDMyICJkIgojZGVm
aW5lIFBSSWQ2NCBfX1BSSTY0X1BSRUZJWCAiZCIKCiNkZWZpbmUgUFJJZExFQVNUOCAiZCIKI2Rl
ZmluZSBQUklkTEVBU1QxNiAiZCIKI2RlZmluZSBQUklkTEVBU1QzMiAiZCIKI2RlZmluZSBQUklk
TEVBU1Q2NCBfX1BSSTY0X1BSRUZJWCAiZCIKCiNkZWZpbmUgUFJJZEZBU1Q4ICJkIgojZGVmaW5l
IFBSSWRGQVNUMTYgX19QUklQVFJfUFJFRklYICJkIgojZGVmaW5lIFBSSWRGQVNUMzIgX19QUklQ
VFJfUFJFRklYICJkIgojZGVmaW5lIFBSSWRGQVNUNjQgX19QUkk2NF9QUkVGSVggImQiCgoKI2Rl
ZmluZSBQUklpOCAiaSIKI2RlZmluZSBQUklpMTYgImkiCiNkZWZpbmUgUFJJaTMyICJpIgojZGVm
aW5lIFBSSWk2NCBfX1BSSTY0X1BSRUZJWCAiaSIKCiNkZWZpbmUgUFJJaUxFQVNUOCAiaSIKI2Rl
ZmluZSBQUklpTEVBU1QxNiAiaSIKI2RlZmluZSBQUklpTEVBU1QzMiAiaSIKI2RlZmluZSBQUklp
TEVBU1Q2NCBfX1BSSTY0X1BSRUZJWCAiaSIKCiNkZWZpbmUgUFJJaUZBU1Q4ICJpIgojZGVmaW5l
IFBSSWlGQVNUMTYgX19QUklQVFJfUFJFRklYICJpIgojZGVmaW5lIFBSSWlGQVNUMzIgX19QUklQ
VFJfUFJFRklYICJpIgojZGVmaW5lIFBSSWlGQVNUNjQgX19QUkk2NF9QUkVGSVggImkiCgoKI2Rl
ZmluZSBQUklvOCAibyIKI2RlZmluZSBQUklvMTYgIm8iCiNkZWZpbmUgUFJJbzMyICJvIgojZGVm
aW5lIFBSSW82NCBfX1BSSTY0X1BSRUZJWCAibyIKCiNkZWZpbmUgUFJJb0xFQVNUOCAibyIKI2Rl
ZmluZSBQUklvTEVBU1QxNiAibyIKI2RlZmluZSBQUklvTEVBU1QzMiAibyIKI2RlZmluZSBQUklv
TEVBU1Q2NCBfX1BSSTY0X1BSRUZJWCAibyIKCiNkZWZpbmUgUFJJb0ZBU1Q4ICJvIgojZGVmaW5l
IFBSSW9GQVNUMTYgX19QUklQVFJfUFJFRklYICJvIgojZGVmaW5lIFBSSW9GQVNUMzIgX19QUklQ
VFJfUFJFRklYICJvIgojZGVmaW5lIFBSSW9GQVNUNjQgX19QUkk2NF9QUkVGSVggIm8iCgoKI2Rl
ZmluZSBQUkl1OCAidSIKI2RlZmluZSBQUkl1MTYgInUiCiNkZWZpbmUgUFJJdTMyICJ1IgojZGVm
aW5lIFBSSXU2NCBfX1BSSTY0X1BSRUZJWCAidSIKCiNkZWZpbmUgUFJJdUxFQVNUOCAidSIKI2Rl
ZmluZSBQUkl1TEVBU1QxNiAidSIKI2RlZmluZSBQUkl1TEVBU1QzMiAidSIKI2RlZmluZSBQUkl1
TEVBU1Q2NCBfX1BSSTY0X1BSRUZJWCAidSIKCiNkZWZpbmUgUFJJdUZBU1Q4ICJ1IgojZGVmaW5l
IFBSSXVGQVNUMTYgX19QUklQVFJfUFJFRklYICJ1IgojZGVmaW5lIFBSSXVGQVNUMzIgX19QUklQ
VFJfUFJFRklYICJ1IgojZGVmaW5lIFBSSXVGQVNUNjQgX19QUkk2NF9QUkVGSVggInUiCgoKI2Rl
ZmluZSBQUkl4OCAieCIKI2RlZmluZSBQUkl4MTYgIngiCiNkZWZpbmUgUFJJeDMyICJ4IgojZGVm
aW5lIFBSSXg2NCBfX1BSSTY0X1BSRUZJWCAieCIKCiNkZWZpbmUgUFJJeExFQVNUOCAieCIKI2Rl
ZmluZSBQUkl4TEVBU1QxNiAieCIKI2RlZmluZSBQUkl4TEVBU1QzMiAieCIKI2RlZmluZSBQUkl4
TEVBU1Q2NCBfX1BSSTY0X1BSRUZJWCAieCIKCiNkZWZpbmUgUFJJeEZBU1Q4ICJ4IgojZGVmaW5l
IFBSSXhGQVNUMTYgX19QUklQVFJfUFJFRklYICJ4IgojZGVmaW5lIFBSSXhGQVNUMzIgX19QUklQ
VFJfUFJFRklYICJ4IgojZGVmaW5lIFBSSXhGQVNUNjQgX19QUkk2NF9QUkVGSVggIngiCgoKI2Rl
ZmluZSBQUklYOCAiWCIKI2RlZmluZSBQUklYMTYgIlgiCiNkZWZpbmUgUFJJWDMyICJYIgojZGVm
aW5lIFBSSVg2NCBfX1BSSTY0X1BSRUZJWCAiWCIKCiNkZWZpbmUgUFJJWExFQVNUOCAiWCIKI2Rl
ZmluZSBQUklYTEVBU1QxNiAiWCIKI2RlZmluZSBQUklYTEVBU1QzMiAiWCIKI2RlZmluZSBQUklY
TEVBU1Q2NCBfX1BSSTY0X1BSRUZJWCAiWCIKCiNkZWZpbmUgUFJJWEZBU1Q4ICJYIgojZGVmaW5l
IFBSSVhGQVNUMTYgX19QUklQVFJfUFJFRklYICJYIgojZGVmaW5lIFBSSVhGQVNUMzIgX19QUklQ
VFJfUFJFRklYICJYIgojZGVmaW5lIFBSSVhGQVNUNjQgX19QUkk2NF9QUkVGSVggIlgiCgoKCiNk
ZWZpbmUgUFJJZE1BWCBfX1BSSTY0X1BSRUZJWCAiZCIKI2RlZmluZSBQUklpTUFYIF9fUFJJNjRf
UFJFRklYICJpIgojZGVmaW5lIFBSSW9NQVggX19QUkk2NF9QUkVGSVggIm8iCiNkZWZpbmUgUFJJ
dU1BWCBfX1BSSTY0X1BSRUZJWCAidSIKI2RlZmluZSBQUkl4TUFYIF9fUFJJNjRfUFJFRklYICJ4
IgojZGVmaW5lIFBSSVhNQVggX19QUkk2NF9QUkVGSVggIlgiCgoKCiNkZWZpbmUgUFJJZFBUUiBf
X1BSSVBUUl9QUkVGSVggImQiCiNkZWZpbmUgUFJJaVBUUiBfX1BSSVBUUl9QUkVGSVggImkiCiNk
ZWZpbmUgUFJJb1BUUiBfX1BSSVBUUl9QUkVGSVggIm8iCiNkZWZpbmUgUFJJdVBUUiBfX1BSSVBU
Ul9QUkVGSVggInUiCiNkZWZpbmUgUFJJeFBUUiBfX1BSSVBUUl9QUkVGSVggIngiCiNkZWZpbmUg
UFJJWFBUUiBfX1BSSVBUUl9QUkVGSVggIlgiCgoKCgoKI2RlZmluZSBTQ05kOCAiaGhkIgojZGVm
aW5lIFNDTmQxNiAiaGQiCiNkZWZpbmUgU0NOZDMyICJkIgojZGVmaW5lIFNDTmQ2NCBfX1BSSTY0
X1BSRUZJWCAiZCIKCiNkZWZpbmUgU0NOZExFQVNUOCAiaGhkIgojZGVmaW5lIFNDTmRMRUFTVDE2
ICJoZCIKI2RlZmluZSBTQ05kTEVBU1QzMiAiZCIKI2RlZmluZSBTQ05kTEVBU1Q2NCBfX1BSSTY0
X1BSRUZJWCAiZCIKCiNkZWZpbmUgU0NOZEZBU1Q4ICJoaGQiCiNkZWZpbmUgU0NOZEZBU1QxNiBf
X1BSSVBUUl9QUkVGSVggImQiCiNkZWZpbmUgU0NOZEZBU1QzMiBfX1BSSVBUUl9QUkVGSVggImQi
CiNkZWZpbmUgU0NOZEZBU1Q2NCBfX1BSSTY0X1BSRUZJWCAiZCIKCgojZGVmaW5lIFNDTmk4ICJo
aGkiCiNkZWZpbmUgU0NOaTE2ICJoaSIKI2RlZmluZSBTQ05pMzIgImkiCiNkZWZpbmUgU0NOaTY0
IF9fUFJJNjRfUFJFRklYICJpIgoKI2RlZmluZSBTQ05pTEVBU1Q4ICJoaGkiCiNkZWZpbmUgU0NO
aUxFQVNUMTYgImhpIgojZGVmaW5lIFNDTmlMRUFTVDMyICJpIgojZGVmaW5lIFNDTmlMRUFTVDY0
IF9fUFJJNjRfUFJFRklYICJpIgoKI2RlZmluZSBTQ05pRkFTVDggImhoaSIKI2RlZmluZSBTQ05p
RkFTVDE2IF9fUFJJUFRSX1BSRUZJWCAiaSIKI2RlZmluZSBTQ05pRkFTVDMyIF9fUFJJUFRSX1BS
RUZJWCAiaSIKI2RlZmluZSBTQ05pRkFTVDY0IF9fUFJJNjRfUFJFRklYICJpIgoKCiNkZWZpbmUg
U0NOdTggImhodSIKI2RlZmluZSBTQ051MTYgImh1IgojZGVmaW5lIFNDTnUzMiAidSIKI2RlZmlu
ZSBTQ051NjQgX19QUkk2NF9QUkVGSVggInUiCgojZGVmaW5lIFNDTnVMRUFTVDggImhodSIKI2Rl
ZmluZSBTQ051TEVBU1QxNiAiaHUiCiNkZWZpbmUgU0NOdUxFQVNUMzIgInUiCiNkZWZpbmUgU0NO
dUxFQVNUNjQgX19QUkk2NF9QUkVGSVggInUiCgojZGVmaW5lIFNDTnVGQVNUOCAiaGh1IgojZGVm
aW5lIFNDTnVGQVNUMTYgX19QUklQVFJfUFJFRklYICJ1IgojZGVmaW5lIFNDTnVGQVNUMzIgX19Q
UklQVFJfUFJFRklYICJ1IgojZGVmaW5lIFNDTnVGQVNUNjQgX19QUkk2NF9QUkVGSVggInUiCgoK
I2RlZmluZSBTQ05vOCAiaGhvIgojZGVmaW5lIFNDTm8xNiAiaG8iCiNkZWZpbmUgU0NObzMyICJv
IgojZGVmaW5lIFNDTm82NCBfX1BSSTY0X1BSRUZJWCAibyIKCiNkZWZpbmUgU0NOb0xFQVNUOCAi
aGhvIgojZGVmaW5lIFNDTm9MRUFTVDE2ICJobyIKI2RlZmluZSBTQ05vTEVBU1QzMiAibyIKI2Rl
ZmluZSBTQ05vTEVBU1Q2NCBfX1BSSTY0X1BSRUZJWCAibyIKCiNkZWZpbmUgU0NOb0ZBU1Q4ICJo
aG8iCiNkZWZpbmUgU0NOb0ZBU1QxNiBfX1BSSVBUUl9QUkVGSVggIm8iCiNkZWZpbmUgU0NOb0ZB
U1QzMiBfX1BSSVBUUl9QUkVGSVggIm8iCiNkZWZpbmUgU0NOb0ZBU1Q2NCBfX1BSSTY0X1BSRUZJ
WCAibyIKCgojZGVmaW5lIFNDTng4ICJoaHgiCiNkZWZpbmUgU0NOeDE2ICJoeCIKI2RlZmluZSBT
Q054MzIgIngiCiNkZWZpbmUgU0NOeDY0IF9fUFJJNjRfUFJFRklYICJ4IgoKI2RlZmluZSBTQ054
TEVBU1Q4ICJoaHgiCiNkZWZpbmUgU0NOeExFQVNUMTYgImh4IgojZGVmaW5lIFNDTnhMRUFTVDMy
ICJ4IgojZGVmaW5lIFNDTnhMRUFTVDY0IF9fUFJJNjRfUFJFRklYICJ4IgoKI2RlZmluZSBTQ054
RkFTVDggImhoeCIKI2RlZmluZSBTQ054RkFTVDE2IF9fUFJJUFRSX1BSRUZJWCAieCIKI2RlZmlu
ZSBTQ054RkFTVDMyIF9fUFJJUFRSX1BSRUZJWCAieCIKI2RlZmluZSBTQ054RkFTVDY0IF9fUFJJ
NjRfUFJFRklYICJ4IgoKCgojZGVmaW5lIFNDTmRNQVggX19QUkk2NF9QUkVGSVggImQiCiNkZWZp
bmUgU0NOaU1BWCBfX1BSSTY0X1BSRUZJWCAiaSIKI2RlZmluZSBTQ05vTUFYIF9fUFJJNjRfUFJF
RklYICJvIgojZGVmaW5lIFNDTnVNQVggX19QUkk2NF9QUkVGSVggInUiCiNkZWZpbmUgU0NOeE1B
WCBfX1BSSTY0X1BSRUZJWCAieCIKCgojZGVmaW5lIFNDTmRQVFIgX19QUklQVFJfUFJFRklYICJk
IgojZGVmaW5lIFNDTmlQVFIgX19QUklQVFJfUFJFRklYICJpIgojZGVmaW5lIFNDTm9QVFIgX19Q
UklQVFJfUFJFRklYICJvIgojZGVmaW5lIFNDTnVQVFIgX19QUklQVFJfUFJFRklYICJ1IgojZGVm
aW5lIFNDTnhQVFIgX19QUklQVFJfUFJFRklYICJ4IgoKCmV4dGVybiAiQyIgewojIDI4MCAiL3Vz
ci9pbmNsdWRlL2ludHR5cGVzLmgiIDMgNAp0eXBlZGVmIHN0cnVjdAogIHsKICAgIF9fZXh0ZW5z
aW9uX18gbG9uZyBsb25nIGludCBxdW90OwogICAgX19leHRlbnNpb25fXyBsb25nIGxvbmcgaW50
IHJlbTsKICB9IGltYXhkaXZfdDsKCgoKCgpleHRlcm4gaW50bWF4X3QgaW1heGFicyAoaW50bWF4
X3QgX19uKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGlt
YXhkaXZfdCBpbWF4ZGl2IChpbnRtYXhfdCBfX251bWVyLCBpbnRtYXhfdCBfX2Rlbm9tKQogICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludG1heF90
IHN0cnRvaW1heCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSB0aHJvdyAoKTsKCgpleHRlcm4gdWludG1h
eF90IHN0cnRvdW1heCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICBjaGFy
ICoqIF9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwoKCmV4dGVybiBp
bnRtYXhfdCB3Y3N0b2ltYXggKGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg
ICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAo
KTsKCgpleHRlcm4gdWludG1heF90IHdjc3RvdW1heCAoY29uc3Qgd2NoYXJfdCAqX19yZXN0cmlj
dCBfX25wdHIsCiAgICAgICB3Y2hhcl90ICoqIF9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jh
c2UpCiAgICAgdGhyb3cgKCk7CiMgMzcwICIvdXNyL2luY2x1ZGUvaW50dHlwZXMuaCIgMyA0Cl9f
ZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2ludGVybmFsIChjb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsCiAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKQogIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX25vbm51bGxfXyAoMSkpKSA7CgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAo
KF9fZ251X2lubGluZV9fKSkgaW50bWF4X3QKX19hdHRyaWJ1dGVfXyAoKF9fbGVhZl9fKSkgc3Ry
dG9pbWF4IChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IG5wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IGVu
ZHB0ciwgaW50IGJhc2UpIHRocm93ICgpCgp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAo
bnB0ciwgZW5kcHRyLCBiYXNlLCAwKTsKfQoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQg
bG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2ludGVybmFsIChjb25zdCBjaGFyICoKICAgICAgICAg
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgIGNoYXIgKioKICAgICAgICAgX19yZXN0cmljdCBf
X2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSwKICAgICAgICAgaW50IF9fZ3JvdXApCiAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCmV4dGVybiBfX2lubGlu
ZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSB1aW50bWF4X3QKX19hdHRyaWJ1dGVf
XyAoKF9fbGVhZl9fKSkgc3RydG91bWF4IChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IG5wdHIsIGNo
YXIgKipfX3Jlc3RyaWN0IGVuZHB0ciwgaW50IGJhc2UpIHRocm93ICgpCgp7CiAgcmV0dXJuIF9f
c3RydG91bGxfaW50ZXJuYWwgKG5wdHIsIGVuZHB0ciwgYmFzZSwgMCk7Cn0KCl9fZXh0ZW5zaW9u
X18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX193Y3N0b2xsX2ludGVybmFsIChjb25zdCB3Y2hhcl90
ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
CiAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKQogIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX25vbm51bGxfXyAoMSkpKSA7CgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9f
Z251X2lubGluZV9fKSkgaW50bWF4X3QKX19hdHRyaWJ1dGVfXyAoKF9fbGVhZl9fKSkgd2NzdG9p
bWF4IChjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IG5wdHIsIHdjaGFyX3QgKipfX3Jlc3RyaWN0
IGVuZHB0ciwgaW50IGJhc2UpIHRocm93ICgpCgp7CiAgcmV0dXJuIF9fd2NzdG9sbF9pbnRlcm5h
bCAobnB0ciwgZW5kcHRyLCBiYXNlLCAwKTsKfQoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2ln
bmVkIGxvbmcgbG9uZyBpbnQgX193Y3N0b3VsbF9pbnRlcm5hbCAoY29uc3Qgd2NoYXJfdCAqCiAg
ICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICB3Y2hhcl90ICoqCiAgICAgICAgIF9f
cmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2UsCiAgICAgICAgIGludCBfX2dy
b3VwKQogIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CgpleHRl
cm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgdWludG1heF90Cl9f
YXR0cmlidXRlX18gKChfX2xlYWZfXykpIHdjc3RvdW1heCAoY29uc3Qgd2NoYXJfdCAqX19yZXN0
cmljdCBucHRyLCB3Y2hhcl90ICoqX19yZXN0cmljdCBlbmRwdHIsIGludCBiYXNlKSB0aHJvdyAo
KQoKewogIHJldHVybiBfX3djc3RvdWxsX2ludGVybmFsIChucHRyLCBlbmRwdHIsIGJhc2UsIDAp
Owp9CgoKCgp9CiMgNDMgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaCIgMgojIDEg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNs
dWRlL3N0ZGFyZy5oIiAxIDMgNAojIDMxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CiNkZWZpbmUgX1NUREFS
R19IIAojZGVmaW5lIF9BTlNJX1NUREFSR19IXyAKCiN1bmRlZiBfX25lZWRfX192YV9saXN0CiMg
NDcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9p
bmNsdWRlL3N0ZGFyZy5oIiAzIDQKI2RlZmluZSB2YV9zdGFydCh2LGwpIF9fYnVpbHRpbl92YV9z
dGFydCh2LGwpCiNkZWZpbmUgdmFfZW5kKHYpIF9fYnVpbHRpbl92YV9lbmQodikKI2RlZmluZSB2
YV9hcmcodixsKSBfX2J1aWx0aW5fdmFfYXJnKHYsbCkKCiNkZWZpbmUgdmFfY29weShkLHMpIF9f
YnVpbHRpbl92YV9jb3B5KGQscykKCiNkZWZpbmUgX192YV9jb3B5KGQscykgX19idWlsdGluX3Zh
X2NvcHkoZCxzKQojIDEwNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLzQuOS4zL2luY2x1ZGUvc3RkYXJnLmgiIDMgNAojZGVmaW5lIF9WQV9MSVNUXyAKCgoj
ZGVmaW5lIF9WQV9MSVNUIAoKCgoKCiNkZWZpbmUgX1ZBX0xJU1RfVF9IIAoKCiNkZWZpbmUgX192
YV9saXN0X18gCiMgNDQgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaCIgMgojIDEg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNs
dWRlL3N0ZGJvb2wuaCIgMSAzIDQKIyAyOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUvc3RkYm9vbC5oIiAzIDQKI2RlZmluZSBfU1RE
Qk9PTF9IIAojIDQwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvNC45LjMvaW5jbHVkZS9zdGRib29sLmgiIDMgNAojZGVmaW5lIF9Cb29sIGJvb2wKI2RlZmlu
ZSBib29sIGJvb2wKI2RlZmluZSBmYWxzZSBmYWxzZQojZGVmaW5lIHRydWUgdHJ1ZQoKCgoKI2Rl
ZmluZSBfX2Jvb2xfdHJ1ZV9mYWxzZV9hcmVfZGVmaW5lZCAxCiMgNDUgIi4uLy4uL1NvdXJjZS9X
VEYvd3RmL0Fzc2VydGlvbnMuaCIgMgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDM5ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9z
dGRkZWYuaCIgMyA0CiNkZWZpbmUgX1NURERFRl9IIAojZGVmaW5lIF9TVERERUZfSF8gCgojZGVm
aW5lIF9BTlNJX1NURERFRl9IIAojIDEzNiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojZGVmaW5lIF9QVFJE
SUZGX1QgCiNkZWZpbmUgX1RfUFRSRElGRl8gCiNkZWZpbmUgX1RfUFRSRElGRiAKI2RlZmluZSBf
X1BUUkRJRkZfVCAKI2RlZmluZSBfUFRSRElGRl9UXyAKI2RlZmluZSBfQlNEX1BUUkRJRkZfVF8g
CiNkZWZpbmUgX19faW50X3B0cmRpZmZfdF9oIAojZGVmaW5lIF9HQ0NfUFRSRElGRl9UIAoKCgp0
eXBlZGVmIGludCBwdHJkaWZmX3Q7CiMgMTU4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25l
ZWRfcHRyZGlmZl90CiMgMjM0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfc2l6ZV90
CiMgMzQzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45
LjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfd2NoYXJfdAojIDM5NyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUv
c3RkZGVmLmgiIDMgNAojdW5kZWYgTlVMTAoKI2RlZmluZSBOVUxMIF9fbnVsbAojIDQwOCAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUv
c3RkZGVmLmgiIDMgNAojdW5kZWYgX19uZWVkX05VTEwKCgoKCiNkZWZpbmUgb2Zmc2V0b2YoVFlQ
RSxNRU1CRVIpIF9fYnVpbHRpbl9vZmZzZXRvZiAoVFlQRSwgTUVNQkVSKQoKCgoKI2RlZmluZSBf
R0NDX01BWF9BTElHTl9UIAoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgbG9uZyBsb25nIF9fbWF4X2Fs
aWduX2xsIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKF9fYWxpZ25vZl9fKGxvbmcgbG9uZykp
KSk7CiAgbG9uZyBkb3VibGUgX19tYXhfYWxpZ25fbGQgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVk
X18oX19hbGlnbm9mX18obG9uZyBkb3VibGUpKSkpOwp9IG1heF9hbGlnbl90OwoKCgoKCiNkZWZp
bmUgX0dYWF9OVUxMUFRSX1QgCiAgdHlwZWRlZiBkZWNsdHlwZShudWxscHRyKSBudWxscHRyX3Q7
CiMgNDYgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaCIgMgojIDU0ICIuLi8uLi9T
b3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgiCiNkZWZpbmUgQVNTRVJUSU9OU19ESVNBQkxFRF9E
RUZBVUxUIDEKCgoKCgojZGVmaW5lIEJBQ0tUUkFDRV9ESVNBQkxFRCBBU1NFUlRJT05TX0RJU0FC
TEVEX0RFRkFVTFQKCgoKI2RlZmluZSBBU1NFUlRfRElTQUJMRUQgQVNTRVJUSU9OU19ESVNBQkxF
RF9ERUZBVUxUCgoKCiNkZWZpbmUgQVNTRVJUX01TR19ESVNBQkxFRCBBU1NFUlRJT05TX0RJU0FC
TEVEX0RFRkFVTFQKCgoKI2RlZmluZSBBU1NFUlRfQVJHX0RJU0FCTEVEIEFTU0VSVElPTlNfRElT
QUJMRURfREVGQVVMVAoKCgojZGVmaW5lIEZBVEFMX0RJU0FCTEVEIEFTU0VSVElPTlNfRElTQUJM
RURfREVGQVVMVAoKCgojZGVmaW5lIEVSUk9SX0RJU0FCTEVEIEFTU0VSVElPTlNfRElTQUJMRURf
REVGQVVMVAoKCgojZGVmaW5lIExPR19ESVNBQkxFRCBBU1NFUlRJT05TX0RJU0FCTEVEX0RFRkFV
TFQKCgoKI2RlZmluZSBMT0dfQUxXQVlTX0RJU0FCTEVEICEoVVNFKE9TX0xPRykpCgoKCiNkZWZp
bmUgV1RGX1BSRVRUWV9GVU5DVElPTiBfX1BSRVRUWV9GVU5DVElPTl9fCiMgMTAxICIuLi8uLi9T
b3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgiCiNkZWZpbmUgV1RGX0FUVFJJQlVURV9QUklOVEYo
Zm9ybWF0U3RyaW5nQXJndW1lbnQsZXh0cmFBcmd1bWVudHMpIF9fYXR0cmlidXRlX18oKF9fZm9y
bWF0X18ocHJpbnRmLCBmb3JtYXRTdHJpbmdBcmd1bWVudCwgZXh0cmFBcmd1bWVudHMpKSkKIyAx
MTYgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaCIKZXh0ZXJuICJDIiB7CiMgMTI4
ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgiCiNkZWZpbmUgTk9fUkVUVVJOX0RV
RV9UT19DUkFTSCBOT19SRVRVUk4KCgoKCnR5cGVkZWYgZW51bSB7IFdURkxvZ0NoYW5uZWxPZmYs
IFdURkxvZ0NoYW5uZWxPbiB9IFdURkxvZ0NoYW5uZWxTdGF0ZTsKCnR5cGVkZWYgc3RydWN0IHsK
ICAgIFdURkxvZ0NoYW5uZWxTdGF0ZSBzdGF0ZTsKICAgIGNvbnN0IGNoYXIqIG5hbWU7Cn0gV1RG
TG9nQ2hhbm5lbDsKCiB2b2lkIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3NlcnRp
b24pOwogdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlV2l0aE1lc3NhZ2UoY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3Nl
cnRpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9f
KHByaW50ZiwgNSwgNikpKTsKIHZvaWQgV1RGUmVwb3J0QXJndW1lbnRBc3NlcnRpb25GYWlsdXJl
KGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3Qg
Y2hhciogYXJnTmFtZSwgY29uc3QgY2hhciogYXNzZXJ0aW9uKTsKIHZvaWQgV1RGUmVwb3J0RmF0
YWxFcnJvcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24s
IGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50
ZiwgNCwgNSkpKTsKIHZvaWQgV1RGUmVwb3J0RXJyb3IoY29uc3QgY2hhciogZmlsZSwgaW50IGxp
bmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgX19hdHRy
aWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDQsIDUpKSk7CiB2b2lkIFdURkxvZyhXVEZMb2dD
aGFubmVsKiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0
X18ocHJpbnRmLCAyLCAzKSkpOwogdm9pZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNoYXIqIGZpbGUs
IGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgV1RGTG9nQ2hhbm5lbCosIGNvbnN0IGNo
YXIqIGZvcm1hdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgNSwgNikp
KTsKIHZvaWQgV1RGTG9nQWx3YXlzVihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QpOwogdm9p
ZCBXVEZMb2dBbHdheXMoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIF9fYXR0cmlidXRlX18oKF9f
Zm9ybWF0X18ocHJpbnRmLCAxLCAyKSkpOwogX19hdHRyaWJ1dGUoKF9fbm9yZXR1cm5fXykpIHZv
aWQgV1RGTG9nQWx3YXlzQW5kQ3Jhc2goY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIF9fYXR0cmli
dXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAxLCAyKSkpOwogV1RGTG9nQ2hhbm5lbCogV1RGTG9n
Q2hhbm5lbEJ5TmFtZShXVEZMb2dDaGFubmVsKltdLCBzaXplX3QgY291bnQsIGNvbnN0IGNoYXIq
KTsKIHZvaWQgV1RGSW5pdGlhbGl6ZUxvZ0NoYW5uZWxTdGF0ZXNGcm9tU3RyaW5nKFdURkxvZ0No
YW5uZWwqW10sIHNpemVfdCBjb3VudCwgY29uc3QgY2hhciopOwoKIHZvaWQgV1RGR2V0QmFja3Ry
YWNlKHZvaWQqKiBzdGFjaywgaW50KiBzaXplKTsKIHZvaWQgV1RGUmVwb3J0QmFja3RyYWNlKCk7
CiB2b2lkIFdURlByaW50QmFja3RyYWNlKHZvaWQqKiBzdGFjaywgaW50IHNpemUpOwoKdHlwZWRl
ZiB2b2lkICgqV1RGQ3Jhc2hIb29rRnVuY3Rpb24pKCk7CiB2b2lkIFdURlNldENyYXNoSG9vayhX
VEZDcmFzaEhvb2tGdW5jdGlvbik7CiB2b2lkIFdURkluc3RhbGxSZXBvcnRCYWNrdHJhY2VPbkNy
YXNoSG9vaygpOwoKIGJvb2wgV1RGSXNEZWJ1Z2dlckF0dGFjaGVkKCk7CiMgMTg0ICIuLi8uLi9T
b3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgiCiNkZWZpbmUgQ1JBU0goKSBXVEZDcmFzaCgpCgoK
CgogX19hdHRyaWJ1dGUoKF9fbm9yZXR1cm5fXykpIHZvaWQgV1RGQ3Jhc2goKTsKCgojZGVmaW5l
IENSQVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oKSBXVEZDcmFzaFdpdGhTZWN1cml0eUlt
cGxpY2F0aW9uKCkKCgogX19hdHRyaWJ1dGUoKF9fbm9yZXR1cm5fXykpIHZvaWQgV1RGQ3Jhc2hX
aXRoU2VjdXJpdHlJbXBsaWNhdGlvbigpOwoKCn0KIyAyMDggIi4uLy4uL1NvdXJjZS9XVEYvd3Rm
L0Fzc2VydGlvbnMuaCIKI2RlZmluZSBCQUNLVFJBQ0UoKSAoKHZvaWQpMCkKIyAyMzEgIi4uLy4u
L1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaCIKI2RlZmluZSBBU1NFUlQoYXNzZXJ0aW9uKSAo
KHZvaWQpMCkKI2RlZmluZSBBU1NFUlRfQVQoYXNzZXJ0aW9uLGZpbGUsbGluZSxmdW5jdGlvbikg
KCh2b2lkKTApCiNkZWZpbmUgQVNTRVJUX05PVF9SRUFDSEVEKCkgKCh2b2lkKTApCiNkZWZpbmUg
Tk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgCgojZGVmaW5lIEFTU0VSVF9VTlVTRUQodmFyaWFibGUs
YXNzZXJ0aW9uKSAoKHZvaWQpdmFyaWFibGUpCiMgMjQ3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9B
c3NlcnRpb25zLmgiCiNkZWZpbmUgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oYXNz
ZXJ0aW9uKSAoKHZvaWQpMCkKI2RlZmluZSBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
Tl9ESVNBQkxFRCAxCiMgMjk1ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgiCiNk
ZWZpbmUgQVNTRVJUX1dJVEhfTUVTU0FHRShhc3NlcnRpb24sLi4uKSAoKHZvaWQpMCkKIyAzMDgg
Ii4uLy4uL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaCIKI2RlZmluZSBBU1NFUlRfV0lUSF9N
RVNTQUdFX1VOVVNFRCh2YXJpYWJsZSxhc3NlcnRpb24sLi4uKSAoKHZvaWQpdmFyaWFibGUpCiMg
MzIzICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgiCiNkZWZpbmUgQVNTRVJUX0FS
RyhhcmdOYW1lLGFzc2VydGlvbikgKCh2b2lkKTApCiMgMzQyICIuLi8uLi9Tb3VyY2UvV1RGL3d0
Zi9Bc3NlcnRpb25zLmgiCiNkZWZpbmUgQ09NUElMRV9BU1NFUlQoZXhwLG5hbWUpIHN0YXRpY19h
c3NlcnQoKGV4cCksICNuYW1lKQoKCgoKCgojZGVmaW5lIEZBVEFMKC4uLikgKCh2b2lkKTApCiMg
MzYwICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgiCiNkZWZpbmUgTE9HX0VSUk9S
KC4uLikgKCh2b2lkKTApCgoKCgoKCgojZGVmaW5lIExPRyhjaGFubmVsLC4uLikgKCh2b2lkKTAp
CiMgMzc4ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgiCiNkZWZpbmUgTE9HX1ZF
UkJPU0UoY2hhbm5lbCwuLi4pICgodm9pZCkwKQoKCgoKCgojZGVmaW5lIFdURl9MT0dHSU5HX1BS
RUZJWCAiI1dLOiAiCgojZGVmaW5lIExPR19BTFdBWVMoaXNBbGxvd2VkLGZvcm1hdCwuLi4pICgo
dm9pZCkwKQojZGVmaW5lIExPR19BTFdBWVNfRVJST1IoaXNBbGxvd2VkLGZvcm1hdCwuLi4pIFdU
RlJlcG9ydEVycm9yKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwgZm9y
bWF0LCAjI19fVkFfQVJHU19fKQojIDM5OCAiLi4vLi4vU291cmNlL1dURi93dGYvQXNzZXJ0aW9u
cy5oIgojZGVmaW5lIFJFTEVBU0VfQVNTRVJUKGFzc2VydGlvbikgZG8geyBpZiAoVU5MSUtFTFko
IShhc3NlcnRpb24pKSkgQ1JBU0goKTsgfSB3aGlsZSAoMCkKCgoKI2RlZmluZSBSRUxFQVNFX0FT
U0VSVF9XSVRIX01FU1NBR0UoYXNzZXJ0aW9uLC4uLikgUkVMRUFTRV9BU1NFUlQoYXNzZXJ0aW9u
KQojZGVmaW5lIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCkgQ1JBU0goKQojIDQyMyAiLi4v
Li4vU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oIgojZGVmaW5lIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCkKIyAzMyAiLi4vLi4vU291cmNl
L1dURi93dGYvU3RkTGliRXh0cmFzLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9DaGVj
a2VkQXJpdGhtZXRpYy5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0
aG1ldGljLmgiCiNkZWZpbmUgQ2hlY2tlZEFyaXRobWV0aWNfaCAKIyA2NyAiLi4vLi4vU291cmNl
L1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaCIKbmFtZXNwYWNlIFdURiB7CgplbnVtIGNsYXNz
IENoZWNrZWRTdGF0ZSB7CiAgICBEaWRPdmVyZmxvdywKICAgIERpZE5vdE92ZXJmbG93Cn07Cgpj
bGFzcyBDcmFzaE9uT3ZlcmZsb3cgewpwdWJsaWM6CiAgICBzdGF0aWMgX19hdHRyaWJ1dGUoKF9f
bm9yZXR1cm5fXykpIHZvaWQgb3ZlcmZsb3dlZCgpCiAgICB7CiAgICAgICAgY3Jhc2goKTsKICAg
IH0KCiAgICB2b2lkIGNsZWFyT3ZlcmZsb3coKSB7IH0KCiAgICBzdGF0aWMgX19hdHRyaWJ1dGUo
KF9fbm9yZXR1cm5fXykpIHZvaWQgY3Jhc2goKQogICAgewogICAgICAgIFdURkNyYXNoKCk7CiAg
ICB9CgpwdWJsaWM6CiAgICBib29sIGhhc092ZXJmbG93ZWQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQp9OwoKY2xhc3MgUmVjb3JkT3ZlcmZsb3cgewpwcm90ZWN0ZWQ6CiAgICBSZWNvcmRPdmVy
ZmxvdygpCiAgICAgICAgOiBtX292ZXJmbG93ZWQoZmFsc2UpCiAgICB7CiAgICB9CgogICAgdm9p
ZCBvdmVyZmxvd2VkKCkKICAgIHsKICAgICAgICBtX292ZXJmbG93ZWQgPSB0cnVlOwogICAgfQoK
ICAgIHZvaWQgY2xlYXJPdmVyZmxvdygpCiAgICB7CiAgICAgICAgbV9vdmVyZmxvd2VkID0gZmFs
c2U7CiAgICB9CgogICAgc3RhdGljIF9fYXR0cmlidXRlKChfX25vcmV0dXJuX18pKSB2b2lkIGNy
YXNoKCkKICAgIHsKICAgICAgICBXVEZDcmFzaCgpOwogICAgfQoKcHVibGljOgogICAgYm9vbCBo
YXNPdmVyZmxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvd2VkOyB9Cgpwcml2YXRlOgog
ICAgdW5zaWduZWQgY2hhciBtX292ZXJmbG93ZWQ7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
Y2xhc3MgT3ZlcmZsb3dIYW5kbGVyID0gQ3Jhc2hPbk92ZXJmbG93PiBjbGFzcyBDaGVja2VkOwp0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZUNoZWNrZWQ7CnRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZDxDaGVja2VkPFQ+PjsKCnRlbXBsYXRlIDx0eXBl
bmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZSwgYm9vbCBpc1RhcmdldEJpZ2dlciA9IHNpemVv
ZihUYXJnZXQpID49IHNpemVvZihTb3VyY2UpLCBib29sIHRhcmdldFNpZ25lZCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8VGFyZ2V0Pjo6aXNfc2lnbmVkLCBib29sIHNvdXJjZVNpZ25lZCA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8U291cmNlPjo6aXNfc2lnbmVkPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjsK
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRz
Q2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIGZhbHNlLCBmYWxzZT4gewogICAgc3RhdGlj
IGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgewoKICAgICAgICByZXR1cm4gdmFsdWUg
PD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKICAgIH0KfTsKdGVtcGxhdGUg
PHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxU
YXJnZXQsIFNvdXJjZSwgZmFsc2UsIHRydWUsIHRydWU+IHsKICAgIHN0YXRpYyBib29sIGluQm91
bmRzKFNvdXJjZSB2YWx1ZSkKICAgIHsKCiAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1p
dHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUgJiYgdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0
czxUYXJnZXQ+OjptYXgoKTsKICAgIH0KfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5
cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNl
LCBmYWxzZSwgdHJ1ZT4gewogICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQog
ICAgewoKCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNp
Z25lZDxTb3VyY2U+Ojp0eXBlPih2YWx1ZSkgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+
OjptYXgoKTsKICAgIH0KfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNv
dXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlLCB0cnVlLCBm
YWxzZT4gewogICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgewoKICAg
ICAgICByZXR1cm4gdmFsdWUgPD0gc3RhdGljX2Nhc3Q8U291cmNlPihzdGQ6Om51bWVyaWNfbGlt
aXRzPFRhcmdldD46Om1heCgpKTsKICAgIH0KfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQs
IHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRy
dWUsIGZhbHNlLCBmYWxzZT4gewogICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlKQogICAg
ewoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUYXJn
ZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2Us
IHRydWUsIHRydWUsIHRydWU+IHsKICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSkKICAg
IHsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFy
Z2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNl
LCB0cnVlLCB0cnVlLCBmYWxzZT4gewogICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZh
bHVlKQogICAgewoKICAgICAgICBpZiAoc2l6ZW9mKFRhcmdldCkgPiBzaXplb2YoU291cmNlKSkK
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0YXRpY19j
YXN0PFNvdXJjZT4oc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKSk7CiAgICB9Cn07
Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3Vu
ZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVlLCBmYWxzZSwgdHJ1ZT4gewogICAgc3RhdGlj
IGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgewoKICAgICAgICByZXR1cm4gdmFsdWUg
Pj0gMDsKICAgIH0KfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJj
ZT4gc3RhdGljIGlubGluZSBib29sIGlzSW5Cb3VuZHMoU291cmNlIHZhbHVlKQp7CiAgICByZXR1
cm4gQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZT46OmluQm91bmRzKHZhbHVlKTsKfQoKdGVt
cGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJv
b2wgY29udmVydFNhZmVseShTb3VyY2UgaW5wdXQsIFRhcmdldCYgb3V0cHV0KQp7CiAgICBpZiAo
IWlzSW5Cb3VuZHM8VGFyZ2V0PihpbnB1dCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgb3V0
cHV0ID0gc3RhdGljX2Nhc3Q8VGFyZ2V0PihpbnB1dCk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVDaGVja2VkIHsKICAgIHR5cGVkZWYgVCBD
bGVhblR5cGU7CiAgICBzdGF0aWMgY29uc3QgQ2xlYW5UeXBlIERlZmF1bHRWYWx1ZSA9IDA7Cn07
Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZUNoZWNrZWQ8Q2hlY2tlZDxULCBD
cmFzaE9uT3ZlcmZsb3c+PiB7CiAgICB0eXBlZGVmIHR5cGVuYW1lIFJlbW92ZUNoZWNrZWQ8VD46
OkNsZWFuVHlwZSBDbGVhblR5cGU7CiAgICBzdGF0aWMgY29uc3QgQ2xlYW5UeXBlIERlZmF1bHRW
YWx1ZSA9IDA7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZUNoZWNrZWQ8
Q2hlY2tlZDxULCBSZWNvcmRPdmVyZmxvdz4+IHsKICAgIHR5cGVkZWYgdHlwZW5hbWUgUmVtb3Zl
Q2hlY2tlZDxUPjo6Q2xlYW5UeXBlIENsZWFuVHlwZTsKICAgIHN0YXRpYyBjb25zdCBDbGVhblR5
cGUgRGVmYXVsdFZhbHVlID0gMDsKfTsKCgoKdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1l
IFYsIGJvb2wgdUlzQmlnZ2VyID0gKHNpemVvZihVKSA+IHNpemVvZihWKSksIGJvb2wgc2FtZVNp
emUgPSAoc2l6ZW9mKFUpID09IHNpemVvZihWKSk+IHN0cnVjdCBSZXN1bHRCYXNlOwp0ZW1wbGF0
ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RydWN0IFJlc3VsdEJhc2U8VSwgViwgdHJ1ZSwg
ZmFsc2U+IHsKICAgIHR5cGVkZWYgVSBSZXN1bHRUeXBlOwp9OwoKdGVtcGxhdGUgPHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFY+IHN0cnVjdCBSZXN1bHRCYXNlPFUsIFYsIGZhbHNlLCBmYWxzZT4gewog
ICAgdHlwZWRlZiBWIFJlc3VsdFR5cGU7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gc3RydWN0
IFJlc3VsdEJhc2U8VSwgVSwgZmFsc2UsIHRydWU+IHsKICAgIHR5cGVkZWYgVSBSZXN1bHRUeXBl
Owp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIGJvb2wgdUlzU2lnbmVkID0g
c3RkOjpudW1lcmljX2xpbWl0czxVPjo6aXNfc2lnbmVkLCBib29sIHZJc1NpZ25lZCA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8Vj46OmlzX3NpZ25lZD4gc3RydWN0IFNpZ25lZG5lc3NTZWxlY3RvcjsK
dGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0cnVjdCBTaWduZWRuZXNzU2VsZWN0
b3I8VSwgViwgdHJ1ZSwgdHJ1ZT4gewogICAgdHlwZWRlZiBVIFJlc3VsdFR5cGU7Cn07Cgp0ZW1w
bGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RydWN0IFNpZ25lZG5lc3NTZWxlY3RvcjxV
LCBWLCBmYWxzZSwgZmFsc2U+IHsKICAgIHR5cGVkZWYgVSBSZXN1bHRUeXBlOwp9OwoKdGVtcGxh
dGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0cnVjdCBTaWduZWRuZXNzU2VsZWN0b3I8VSwg
ViwgdHJ1ZSwgZmFsc2U+IHsKICAgIHR5cGVkZWYgViBSZXN1bHRUeXBlOwp9OwoKdGVtcGxhdGUg
PHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0cnVjdCBTaWduZWRuZXNzU2VsZWN0b3I8VSwgViwg
ZmFsc2UsIHRydWU+IHsKICAgIHR5cGVkZWYgVSBSZXN1bHRUeXBlOwp9OwoKdGVtcGxhdGUgPHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0cnVjdCBSZXN1bHRCYXNlPFUsIFYsIGZhbHNlLCB0cnVl
PiB7CiAgICB0eXBlZGVmIHR5cGVuYW1lIFNpZ25lZG5lc3NTZWxlY3RvcjxVLCBWPjo6UmVzdWx0
VHlwZSBSZXN1bHRUeXBlOwp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0
cnVjdCBSZXN1bHQgOiBSZXN1bHRCYXNlPHR5cGVuYW1lIFJlbW92ZUNoZWNrZWQ8VT46OkNsZWFu
VHlwZSwgdHlwZW5hbWUgUmVtb3ZlQ2hlY2tlZDxWPjo6Q2xlYW5UeXBlPiB7Cn07Cgp0ZW1wbGF0
ZSA8dHlwZW5hbWUgTEhTLCB0eXBlbmFtZSBSSFMsIHR5cGVuYW1lIFJlc3VsdFR5cGUgPSB0eXBl
bmFtZSBSZXN1bHQ8TEhTLCBSSFM+OjpSZXN1bHRUeXBlLAogICAgYm9vbCBsaHNTaWduZWQgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPExIUz46OmlzX3NpZ25lZCwgYm9vbCByaHNTaWduZWQgPSBzdGQ6
Om51bWVyaWNfbGltaXRzPFJIUz46OmlzX3NpZ25lZD4gc3RydWN0IEFyaXRobWV0aWNPcGVyYXRp
b25zOwoKdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5hbWUgUkhTLCB0eXBlbmFtZSBSZXN1
bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXJhdGlvbnM8TEhTLCBSSFMsIFJlc3VsdFR5cGUs
IHRydWUsIHRydWU+IHsKCgoKICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBzaWduc01hdGNoKExIUyBs
aHMsIFJIUyByaHMpCiAgICB7CiAgICAgICAgcmV0dXJuIChsaHMgXiByaHMpID49IDA7CiAgICB9
CgogICAgc3RhdGljIGlubGluZSBib29sIGFkZChMSFMgbGhzLCBSSFMgcmhzLCBSZXN1bHRUeXBl
JiByZXN1bHQpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKQogICAgewog
ICAgICAgIGlmIChzaWduc01hdGNoKGxocywgcmhzKSkgewogICAgICAgICAgICBpZiAobGhzID49
IDApIHsKICAgICAgICAgICAgICAgIGlmICgoc3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBl
Pjo6bWF4KCkgLSByaHMpIDwgbGhzKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIFJlc3VsdFR5cGUgdGVtcCA9IGxo
cyAtIHN0ZDo6bnVtZXJpY19saW1pdHM8UmVzdWx0VHlwZT46Om1pbigpOwogICAgICAgICAgICAg
ICAgaWYgKHJocyA8IC10ZW1wKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXN1bHQgPSBsaHMgKyByaHM7CiAgICAgICAg
cmV0dXJuIHRydWU7CiAgICB9CgogICAgc3RhdGljIGlubGluZSBib29sIHN1YihMSFMgbGhzLCBS
SFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf
cmVzdWx0X18pKQogICAgewogICAgICAgIGlmICghc2lnbnNNYXRjaChsaHMsIHJocykpIHsKICAg
ICAgICAgICAgaWYgKGxocyA+PSAwKSB7CiAgICAgICAgICAgICAgICBpZiAobGhzID4gc3RkOjpu
dW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWF4KCkgKyByaHMpCiAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYg
KHJocyA+IHN0ZDo6bnVtZXJpY19saW1pdHM8UmVzdWx0VHlwZT46Om1heCgpICsgbGhzKQogICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAg
ICAgICByZXN1bHQgPSBsaHMgLSByaHM7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAg
c3RhdGljIGlubGluZSBib29sIG11bHRpcGx5KExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5cGUm
IHJlc3VsdCkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpCiAgICB7CiAg
ICAgICAgaWYgKHNpZ25zTWF0Y2gobGhzLCByaHMpKSB7CiAgICAgICAgICAgIGlmIChsaHMgPj0g
MCkgewogICAgICAgICAgICAgICAgaWYgKGxocyAmJiAoc3RkOjpudW1lcmljX2xpbWl0czxSZXN1
bHRUeXBlPjo6bWF4KCkgLyBsaHMpIDwgcmhzKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2Fz
dDxSZXN1bHRUeXBlPihsaHMpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8UmVzdWx0VHlwZT46Om1p
bigpIHx8IHN0YXRpY19jYXN0PFJlc3VsdFR5cGU+KHJocykgPT0gc3RkOjpudW1lcmljX2xpbWl0
czxSZXN1bHRUeXBlPjo6bWluKCkpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgICAgaWYgKChzdGQ6Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5cGU+OjptYXgo
KSAvIC1saHMpIDwgLXJocykKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAobGhzIDwgMCkgewogICAg
ICAgICAgICAgICAgaWYgKHJocyAmJiBsaHMgPCAoc3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRU
eXBlPjo6bWluKCkgLyByaHMpKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChsaHMgJiYgcmhzIDwgKHN0ZDo6
bnVtZXJpY19saW1pdHM8UmVzdWx0VHlwZT46Om1pbigpIC8gbGhzKSkKICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmVzdWx0
ID0gbGhzICogcmhzOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHN0YXRpYyBpbmxp
bmUgYm9vbCBlcXVhbHMoTEhTIGxocywgUkhTIHJocykgeyByZXR1cm4gbGhzID09IHJoczsgfQoK
fTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0
VHlwZT4gc3RydWN0IEFyaXRobWV0aWNPcGVyYXRpb25zPExIUywgUkhTLCBSZXN1bHRUeXBlLCBm
YWxzZSwgZmFsc2U+IHsKCiAgICBzdGF0aWMgaW5saW5lIGJvb2wgYWRkKExIUyBsaHMsIFJIUyBy
aHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1
bHRfXykpCiAgICB7CiAgICAgICAgUmVzdWx0VHlwZSB0ZW1wID0gbGhzICsgcmhzOwogICAgICAg
IGlmICh0ZW1wIDwgbGhzKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgcmVzdWx0
ID0gdGVtcDsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBzdGF0aWMgaW5saW5lIGJv
b2wgc3ViKExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkgX19hdHRyaWJ1dGVf
XygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpCiAgICB7CiAgICAgICAgUmVzdWx0VHlwZSB0ZW1w
ID0gbGhzIC0gcmhzOwogICAgICAgIGlmICh0ZW1wID4gbGhzKQogICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgcmVzdWx0ID0gdGVtcDsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0K
CiAgICBzdGF0aWMgaW5saW5lIGJvb2wgbXVsdGlwbHkoTEhTIGxocywgUkhTIHJocywgUmVzdWx0
VHlwZSYgcmVzdWx0KSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkKICAg
IHsKICAgICAgICBpZiAoIWxocyB8fCAhcmhzKSB7CiAgICAgICAgICAgIHJlc3VsdCA9IDA7CiAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICBpZiAoc3RkOjpudW1lcmlj
X2xpbWl0czxSZXN1bHRUeXBlPjo6bWF4KCkgLyBsaHMgPCByaHMpCiAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICByZXN1bHQgPSBsaHMgKiByaHM7CiAgICAgICAgcmV0dXJuIHRydWU7
CiAgICB9CgogICAgc3RhdGljIGlubGluZSBib29sIGVxdWFscyhMSFMgbGhzLCBSSFMgcmhzKSB7
IHJldHVybiBsaHMgPT0gcmhzOyB9Cgp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdFR5cGU+
IHN0cnVjdCBBcml0aG1ldGljT3BlcmF0aW9uczxpbnQsIHVuc2lnbmVkLCBSZXN1bHRUeXBlLCB0
cnVlLCBmYWxzZT4gewogICAgc3RhdGljIGlubGluZSBib29sIGFkZChpbnQ2NF90IGxocywgaW50
NjRfdCByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkKICAgIHsKICAgICAgICBpbnQ2NF90IHRlbXAg
PSBsaHMgKyByaHM7CiAgICAgICAgaWYgKHRlbXAgPCBzdGQ6Om51bWVyaWNfbGltaXRzPFJlc3Vs
dFR5cGU+OjptaW4oKSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIGlmICh0ZW1w
ID4gc3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWF4KCkpCiAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxSZXN1bHRUeXBlPih0ZW1w
KTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBzdGF0aWMgaW5saW5lIGJvb2wgc3Vi
KGludDY0X3QgbGhzLCBpbnQ2NF90IHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KQogICAgewogICAg
ICAgIGludDY0X3QgdGVtcCA9IGxocyAtIHJoczsKICAgICAgICBpZiAodGVtcCA8IHN0ZDo6bnVt
ZXJpY19saW1pdHM8UmVzdWx0VHlwZT46Om1pbigpKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgaWYgKHRlbXAgPiBzdGQ6Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5cGU+OjptYXgo
KSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0
PFJlc3VsdFR5cGU+KHRlbXApOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHN0YXRp
YyBpbmxpbmUgYm9vbCBtdWx0aXBseShpbnQ2NF90IGxocywgaW50NjRfdCByaHMsIFJlc3VsdFR5
cGUmIHJlc3VsdCkKICAgIHsKICAgICAgICBpbnQ2NF90IHRlbXAgPSBsaHMgKiByaHM7CiAgICAg
ICAgaWYgKHRlbXAgPCBzdGQ6Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5cGU+OjptaW4oKSkKICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIGlmICh0ZW1wID4gc3RkOjpudW1lcmljX2xp
bWl0czxSZXN1bHRUeXBlPjo6bWF4KCkpCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICByZXN1bHQgPSBzdGF0aWNfY2FzdDxSZXN1bHRUeXBlPih0ZW1wKTsKICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgIH0KCiAgICBzdGF0aWMgaW5saW5lIGJvb2wgZXF1YWxzKGludCBsaHMsIHVuc2ln
bmVkIHJocykKICAgIHsKICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4obGhzKSA9
PSBzdGF0aWNfY2FzdDxpbnQ2NF90PihyaHMpOwogICAgfQp9OwoKdGVtcGxhdGUgPHR5cGVuYW1l
IFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0aG1ldGljT3BlcmF0aW9uczx1bnNpZ25lZCwgaW50LCBS
ZXN1bHRUeXBlLCBmYWxzZSwgdHJ1ZT4gewogICAgc3RhdGljIGlubGluZSBib29sIGFkZChpbnQ2
NF90IGxocywgaW50NjRfdCByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkKICAgIHsKICAgICAgICBy
ZXR1cm4gQXJpdGhtZXRpY09wZXJhdGlvbnM8aW50LCB1bnNpZ25lZCwgUmVzdWx0VHlwZT46OmFk
ZChyaHMsIGxocywgcmVzdWx0KTsKICAgIH0KCiAgICBzdGF0aWMgaW5saW5lIGJvb2wgc3ViKGlu
dDY0X3QgbGhzLCBpbnQ2NF90IHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KQogICAgewogICAgICAg
IHJldHVybiBBcml0aG1ldGljT3BlcmF0aW9uczxpbnQsIHVuc2lnbmVkLCBSZXN1bHRUeXBlPjo6
c3ViKGxocywgcmhzLCByZXN1bHQpOwogICAgfQoKICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBtdWx0
aXBseShpbnQ2NF90IGxocywgaW50NjRfdCByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkKICAgIHsK
ICAgICAgICByZXR1cm4gQXJpdGhtZXRpY09wZXJhdGlvbnM8aW50LCB1bnNpZ25lZCwgUmVzdWx0
VHlwZT46Om11bHRpcGx5KHJocywgbGhzLCByZXN1bHQpOwogICAgfQoKICAgIHN0YXRpYyBpbmxp
bmUgYm9vbCBlcXVhbHModW5zaWduZWQgbGhzLCBpbnQgcmhzKQogICAgewogICAgICAgIHJldHVy
biBBcml0aG1ldGljT3BlcmF0aW9uczxpbnQsIHVuc2lnbmVkLCBSZXN1bHRUeXBlPjo6ZXF1YWxz
KHJocywgbGhzKTsKICAgIH0KfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBSPiBzdGF0aWMgaW5saW5lIGJvb2wgc2FmZUFkZChVIGxocywgViByaHMsIFImIHJl
c3VsdCkKewogICAgcmV0dXJuIEFyaXRobWV0aWNPcGVyYXRpb25zPFUsIFYsIFI+OjphZGQobGhz
LCByaHMsIHJlc3VsdCk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBl
bmFtZSBSPiBzdGF0aWMgaW5saW5lIGJvb2wgc2FmZVN1YihVIGxocywgViByaHMsIFImIHJlc3Vs
dCkKewogICAgcmV0dXJuIEFyaXRobWV0aWNPcGVyYXRpb25zPFUsIFYsIFI+OjpzdWIobGhzLCBy
aHMsIHJlc3VsdCk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFt
ZSBSPiBzdGF0aWMgaW5saW5lIGJvb2wgc2FmZU11bHRpcGx5KFUgbGhzLCBWIHJocywgUiYgcmVz
dWx0KQp7CiAgICByZXR1cm4gQXJpdGhtZXRpY09wZXJhdGlvbnM8VSwgViwgUj46Om11bHRpcGx5
KGxocywgcmhzLCByZXN1bHQpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4g
c3RhdGljIGlubGluZSBib29sIHNhZmVFcXVhbHMoVSBsaHMsIFYgcmhzKQp7CiAgICByZXR1cm4g
QXJpdGhtZXRpY09wZXJhdGlvbnM8VSwgVj46OmVxdWFscyhsaHMsIHJocyk7Cn0KCmVudW0gUmVz
dWx0T3ZlcmZsb3dlZFRhZyB7IFJlc3VsdE92ZXJmbG93ZWQgfTsKCnRlbXBsYXRlIDx0eXBlbmFt
ZSBULCBjbGFzcyBPdmVyZmxvd0hhbmRsZXI+IGNsYXNzIENoZWNrZWQgOiBwdWJsaWMgT3ZlcmZs
b3dIYW5kbGVyIHsKcHVibGljOgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIF9ULCBjbGFzcyBfT3Zl
cmZsb3dIYW5kbGVyPiBmcmllbmQgY2xhc3MgQ2hlY2tlZDsKICAgIENoZWNrZWQoKQogICAgICAg
IDogbV92YWx1ZSgwKQogICAgewogICAgfQoKICAgIENoZWNrZWQoUmVzdWx0T3ZlcmZsb3dlZFRh
ZykKICAgICAgICA6IG1fdmFsdWUoMCkKICAgIHsKICAgICAgICB0aGlzLT5vdmVyZmxvd2VkKCk7
CiAgICB9CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IENoZWNrZWQoVSB2YWx1ZSkKICAgIHsK
ICAgICAgICBpZiAoIWlzSW5Cb3VuZHM8VD4odmFsdWUpKQogICAgICAgICAgICB0aGlzLT5vdmVy
Zmxvd2VkKCk7CiAgICAgICAgbV92YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KHZhbHVlKTsKICAgIH0K
CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVj4gQ2hlY2tlZChjb25zdCBDaGVja2VkPFQsIFY+JiBy
aHMpCiAgICAgICAgOiBtX3ZhbHVlKHJocy5tX3ZhbHVlKQogICAgewogICAgICAgIGlmIChyaHMu
aGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICAgICB0aGlzLT5vdmVyZmxvd2VkKCk7CiAgICB9Cgog
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IENoZWNrZWQoY29uc3QgQ2hlY2tlZDxVLCBPdmVyZmxv
d0hhbmRsZXI+JiByaHMpCiAgICAgICAgOiBPdmVyZmxvd0hhbmRsZXIocmhzKQogICAgewogICAg
ICAgIGlmICghaXNJbkJvdW5kczxUPihyaHMubV92YWx1ZSkpCiAgICAgICAgICAgIHRoaXMtPm92
ZXJmbG93ZWQoKTsKICAgICAgICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8VD4ocmhzLm1fdmFsdWUp
OwogICAgfQoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBDaGVja2VkKGNv
bnN0IENoZWNrZWQ8VSwgVj4mIHJocykKICAgIHsKICAgICAgICBpZiAocmhzLmhhc092ZXJmbG93
ZWQoKSkKICAgICAgICAgICAgdGhpcy0+b3ZlcmZsb3dlZCgpOwogICAgICAgIGlmICghaXNJbkJv
dW5kczxUPihyaHMubV92YWx1ZSkpCiAgICAgICAgICAgIHRoaXMtPm92ZXJmbG93ZWQoKTsKICAg
ICAgICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8VD4ocmhzLm1fdmFsdWUpOwogICAgfQoKICAgIGNv
bnN0IENoZWNrZWQmIG9wZXJhdG9yPShDaGVja2VkIHJocykKICAgIHsKICAgICAgICB0aGlzLT5j
bGVhck92ZXJmbG93KCk7CiAgICAgICAgaWYgKHJocy5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAg
ICAgIHRoaXMtPm92ZXJmbG93ZWQoKTsKICAgICAgICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8VD4o
cmhzLm1fdmFsdWUpOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVT4gY29uc3QgQ2hlY2tlZCYgb3BlcmF0b3I9KFUgdmFsdWUpCiAgICB7CiAgICAg
ICAgcmV0dXJuICp0aGlzID0gQ2hlY2tlZCh2YWx1ZSk7CiAgICB9CgogICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFY+IGNvbnN0IENoZWNrZWQmIG9wZXJhdG9yPShjb25zdCBDaGVj
a2VkPFUsIFY+JiByaHMpCiAgICB7CiAgICAgICAgcmV0dXJuICp0aGlzID0gQ2hlY2tlZChyaHMp
OwogICAgfQoKCiAgICBjb25zdCBDaGVja2VkJiBvcGVyYXRvcisrKCkKICAgIHsKICAgICAgICBp
ZiAobV92YWx1ZSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSkKICAgICAgICAgICAg
dGhpcy0+b3ZlcmZsb3dlZCgpOwogICAgICAgIG1fdmFsdWUrKzsKICAgICAgICByZXR1cm4gKnRo
aXM7CiAgICB9CgogICAgY29uc3QgQ2hlY2tlZCYgb3BlcmF0b3ItLSgpCiAgICB7CiAgICAgICAg
aWYgKG1fdmFsdWUgPT0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWluKCkpCiAgICAgICAgICAg
IHRoaXMtPm92ZXJmbG93ZWQoKTsKICAgICAgICBtX3ZhbHVlLS07CiAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgfQoKCiAgICBjb25zdCBDaGVja2VkIG9wZXJhdG9yKysoaW50KQogICAgewogICAg
ICAgIGlmIChtX3ZhbHVlID09IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpKQogICAgICAg
ICAgICB0aGlzLT5vdmVyZmxvd2VkKCk7CiAgICAgICAgcmV0dXJuIENoZWNrZWQobV92YWx1ZSsr
KTsKICAgIH0KCiAgICBjb25zdCBDaGVja2VkIG9wZXJhdG9yLS0oaW50KQogICAgewogICAgICAg
IGlmIChtX3ZhbHVlID09IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1pbigpKQogICAgICAgICAg
ICB0aGlzLT5vdmVyZmxvd2VkKCk7CiAgICAgICAgcmV0dXJuIENoZWNrZWQobV92YWx1ZS0tKTsK
ICAgIH0KCgogICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAogICAgewogICAgICAgIGlmICh0aGlz
LT5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgICAgIHRoaXMtPmNyYXNoKCk7CiAgICAgICAgcmV0
dXJuICFtX3ZhbHVlOwogICAgfQoKICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAog
ICAgewogICAgICAgIGlmICh0aGlzLT5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgICAgIHRoaXMt
PmNyYXNoKCk7CiAgICAgICAgcmV0dXJuIG1fdmFsdWU7CiAgICB9CgoKICAgIFQgdW5zYWZlR2V0
KCkgY29uc3QKICAgIHsKICAgICAgICBpZiAodGhpcy0+aGFzT3ZlcmZsb3dlZCgpKQogICAgICAg
ICAgICB0aGlzLT5jcmFzaCgpOwogICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAgfQoKICAgIGlu
bGluZSBDaGVja2VkU3RhdGUgc2FmZUdldChUJiB2YWx1ZSkgY29uc3QgX19hdHRyaWJ1dGVfXygo
X193YXJuX3VudXNlZF9yZXN1bHRfXykpCiAgICB7CiAgICAgICAgdmFsdWUgPSBtX3ZhbHVlOwog
ICAgICAgIGlmICh0aGlzLT5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgICAgIHJldHVybiBDaGVj
a2VkU3RhdGU6OkRpZE92ZXJmbG93OwogICAgICAgIHJldHVybiBDaGVja2VkU3RhdGU6OkRpZE5v
dE92ZXJmbG93OwogICAgfQoKCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gY29uc3QgQ2hlY2tl
ZCBvcGVyYXRvcis9KFUgcmhzKQogICAgewogICAgICAgIGlmICghc2FmZUFkZChtX3ZhbHVlLCBy
aHMsIG1fdmFsdWUpKQogICAgICAgICAgICB0aGlzLT5vdmVyZmxvd2VkKCk7CiAgICAgICAgcmV0
dXJuICp0aGlzOwogICAgfQoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBjb25zdCBDaGVja2Vk
IG9wZXJhdG9yLT0oVSByaHMpCiAgICB7CiAgICAgICAgaWYgKCFzYWZlU3ViKG1fdmFsdWUsIHJo
cywgbV92YWx1ZSkpCiAgICAgICAgICAgIHRoaXMtPm92ZXJmbG93ZWQoKTsKICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICB9CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IGNvbnN0IENoZWNrZWQg
b3BlcmF0b3IqPShVIHJocykKICAgIHsKICAgICAgICBpZiAoIXNhZmVNdWx0aXBseShtX3ZhbHVl
LCByaHMsIG1fdmFsdWUpKQogICAgICAgICAgICB0aGlzLT5vdmVyZmxvd2VkKCk7CiAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgfQoKICAgIGNvbnN0IENoZWNrZWQgb3BlcmF0b3IqPShkb3VibGUg
cmhzKQogICAgewogICAgICAgIGRvdWJsZSByZXN1bHQgPSByaHMgKiBtX3ZhbHVlOwoKICAgICAg
ICBpZiAoIShzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSA8PSByZXN1bHQgJiYgc3RkOjpu
dW1lcmljX2xpbWl0czxUPjo6bWF4KCkgPj0gcmVzdWx0KSkKICAgICAgICAgICAgdGhpcy0+b3Zl
cmZsb3dlZCgpOwogICAgICAgIG1fdmFsdWUgPSAoVClyZXN1bHQ7CiAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgfQoKICAgIGNvbnN0IENoZWNrZWQgb3BlcmF0b3IqPShmbG9hdCByaHMpCiAgICB7
CiAgICAgICAgcmV0dXJuICp0aGlzICo9IChkb3VibGUpcmhzOwogICAgfQoKICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBjb25zdCBDaGVja2VkIG9wZXJhdG9yKz0oQ2hlY2tl
ZDxVLCBWPiByaHMpCiAgICB7CiAgICAgICAgaWYgKHJocy5oYXNPdmVyZmxvd2VkKCkpCiAgICAg
ICAgICAgIHRoaXMtPm92ZXJmbG93ZWQoKTsKICAgICAgICByZXR1cm4gKnRoaXMgKz0gcmhzLm1f
dmFsdWU7CiAgICB9CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IGNvbnN0
IENoZWNrZWQgb3BlcmF0b3ItPShDaGVja2VkPFUsIFY+IHJocykKICAgIHsKICAgICAgICBpZiAo
cmhzLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgICAgdGhpcy0+b3ZlcmZsb3dlZCgpOwogICAg
ICAgIHJldHVybiAqdGhpcyAtPSByaHMubV92YWx1ZTsKICAgIH0KCiAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVSwgdHlwZW5hbWUgVj4gY29uc3QgQ2hlY2tlZCBvcGVyYXRvcio9KENoZWNrZWQ8VSwg
Vj4gcmhzKQogICAgewogICAgICAgIGlmIChyaHMuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICAg
ICB0aGlzLT5vdmVyZmxvd2VkKCk7CiAgICAgICAgcmV0dXJuICp0aGlzICo9IHJocy5tX3ZhbHVl
OwogICAgfQoKCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVj4gYm9vbCBvcGVyYXRvcj09KENoZWNr
ZWQ8VCwgVj4gcmhzKQogICAgewogICAgICAgIHJldHVybiB1bnNhZmVHZXQoKSA9PSByaHMudW5z
YWZlR2V0KCk7CiAgICB9CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I9
PShVIHJocykKICAgIHsKICAgICAgICBpZiAodGhpcy0+aGFzT3ZlcmZsb3dlZCgpKQogICAgICAg
ICAgICB0aGlzLT5jcmFzaCgpOwogICAgICAgIHJldHVybiBzYWZlRXF1YWxzKG1fdmFsdWUsIHJo
cyk7CiAgICB9CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IGNvbnN0IENo
ZWNrZWQgb3BlcmF0b3I9PShDaGVja2VkPFUsIFY+IHJocykKICAgIHsKICAgICAgICByZXR1cm4g
dW5zYWZlR2V0KCkgPT0gQ2hlY2tlZChyaHMudW5zYWZlR2V0KCkpOwogICAgfQoKICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yIT0oVSByaHMpCiAgICB7CiAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gcmhzKTsKICAgIH0KCgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFY+IGJv
b2wgb3BlcmF0b3I8KENoZWNrZWQ8VCwgVj4gcmhzKSBjb25zdAogICAgewogICAgICAgIHJldHVy
biB1bnNhZmVHZXQoKSA8IHJocy51bnNhZmVHZXQoKTsKICAgIH0KCiAgICBib29sIG9wZXJhdG9y
PChUIHJocykgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPCByaHM7CiAg
ICB9CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFY+IGJvb2wgb3BlcmF0b3I8PShDaGVja2VkPFQs
IFY+IHJocykgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPD0gcmhzLnVu
c2FmZUdldCgpOwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3I8PShUIHJocykgY29uc3QKICAgIHsK
ICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPD0gcmhzOwogICAgfQoKICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBWPiBib29sIG9wZXJhdG9yPihDaGVja2VkPFQsIFY+IHJocykgY29uc3QKICAgIHsK
ICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPiByaHMudW5zYWZlR2V0KCk7CiAgICB9CgogICAg
Ym9vbCBvcGVyYXRvcj4oVCByaHMpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHVuc2FmZUdl
dCgpID4gcmhzOwogICAgfQoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWPiBib29sIG9wZXJhdG9y
Pj0oQ2hlY2tlZDxULCBWPiByaHMpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHVuc2FmZUdl
dCgpID49IHJocy51bnNhZmVHZXQoKTsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yPj0oVCByaHMp
IGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHVuc2FmZUdldCgpID49IHJoczsKICAgIH0KCnBy
aXZhdGU6CgogICAgQ2hlY2tlZChmbG9hdCk7CiAgICBDaGVja2VkKGRvdWJsZSk7CiAgICB2b2lk
IG9wZXJhdG9yPShmbG9hdCk7CiAgICB2b2lkIG9wZXJhdG9yPShkb3VibGUpOwogICAgdm9pZCBv
cGVyYXRvcis9KGZsb2F0KTsKICAgIHZvaWQgb3BlcmF0b3IrPShkb3VibGUpOwogICAgdm9pZCBv
cGVyYXRvci09KGZsb2F0KTsKICAgIHZvaWQgb3BlcmF0b3ItPShkb3VibGUpOwogICAgVCBtX3Zh
bHVlOwp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIE92ZXJm
bG93SGFuZGxlcj4gc3RhdGljIGlubGluZSBDaGVja2VkPHR5cGVuYW1lIFJlc3VsdDxVLCBWPjo6
UmVzdWx0VHlwZSwgT3ZlcmZsb3dIYW5kbGVyPiBvcGVyYXRvcisoQ2hlY2tlZDxVLCBPdmVyZmxv
d0hhbmRsZXI+IGxocywgQ2hlY2tlZDxWLCBPdmVyZmxvd0hhbmRsZXI+IHJocykKewogICAgVSB4
ID0gMDsKICAgIFYgeSA9IDA7CiAgICBib29sIG92ZXJmbG93ZWQgPSBsaHMuc2FmZUdldCh4KSA9
PSBDaGVja2VkU3RhdGU6OkRpZE92ZXJmbG93IHx8IHJocy5zYWZlR2V0KHkpID09IENoZWNrZWRT
dGF0ZTo6RGlkT3ZlcmZsb3c7CiAgICB0eXBlbmFtZSBSZXN1bHQ8VSwgVj46OlJlc3VsdFR5cGUg
cmVzdWx0ID0gMDsKICAgIG92ZXJmbG93ZWQgfD0gIXNhZmVBZGQoeCwgeSwgcmVzdWx0KTsKICAg
IGlmIChvdmVyZmxvd2VkKQogICAgICAgIHJldHVybiBSZXN1bHRPdmVyZmxvd2VkOwogICAgcmV0
dXJuIHJlc3VsdDsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlcj4gc3RhdGljIGlubGluZSBDaGVja2VkPHR5cGVuYW1lIFJlc3VsdDxV
LCBWPjo6UmVzdWx0VHlwZSwgT3ZlcmZsb3dIYW5kbGVyPiBvcGVyYXRvci0oQ2hlY2tlZDxVLCBP
dmVyZmxvd0hhbmRsZXI+IGxocywgQ2hlY2tlZDxWLCBPdmVyZmxvd0hhbmRsZXI+IHJocykKewog
ICAgVSB4ID0gMDsKICAgIFYgeSA9IDA7CiAgICBib29sIG92ZXJmbG93ZWQgPSBsaHMuc2FmZUdl
dCh4KSA9PSBDaGVja2VkU3RhdGU6OkRpZE92ZXJmbG93IHx8IHJocy5zYWZlR2V0KHkpID09IENo
ZWNrZWRTdGF0ZTo6RGlkT3ZlcmZsb3c7CiAgICB0eXBlbmFtZSBSZXN1bHQ8VSwgVj46OlJlc3Vs
dFR5cGUgcmVzdWx0ID0gMDsKICAgIG92ZXJmbG93ZWQgfD0gIXNhZmVTdWIoeCwgeSwgcmVzdWx0
KTsKICAgIGlmIChvdmVyZmxvd2VkKQogICAgICAgIHJldHVybiBSZXN1bHRPdmVyZmxvd2VkOwog
ICAgcmV0dXJuIHJlc3VsdDsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gc3RhdGljIGlubGluZSBDaGVja2VkPHR5cGVuYW1lIFJl
c3VsdDxVLCBWPjo6UmVzdWx0VHlwZSwgT3ZlcmZsb3dIYW5kbGVyPiBvcGVyYXRvciooQ2hlY2tl
ZDxVLCBPdmVyZmxvd0hhbmRsZXI+IGxocywgQ2hlY2tlZDxWLCBPdmVyZmxvd0hhbmRsZXI+IHJo
cykKewogICAgVSB4ID0gMDsKICAgIFYgeSA9IDA7CiAgICBib29sIG92ZXJmbG93ZWQgPSBsaHMu
c2FmZUdldCh4KSA9PSBDaGVja2VkU3RhdGU6OkRpZE92ZXJmbG93IHx8IHJocy5zYWZlR2V0KHkp
ID09IENoZWNrZWRTdGF0ZTo6RGlkT3ZlcmZsb3c7CiAgICB0eXBlbmFtZSBSZXN1bHQ8VSwgVj46
OlJlc3VsdFR5cGUgcmVzdWx0ID0gMDsKICAgIG92ZXJmbG93ZWQgfD0gIXNhZmVNdWx0aXBseSh4
LCB5LCByZXN1bHQpOwogICAgaWYgKG92ZXJmbG93ZWQpCiAgICAgICAgcmV0dXJuIFJlc3VsdE92
ZXJmbG93ZWQ7CiAgICByZXR1cm4gcmVzdWx0Owp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlw
ZW5hbWUgViwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiBzdGF0aWMgaW5saW5lIENoZWNrZWQ8
dHlwZW5hbWUgUmVzdWx0PFUsIFY+OjpSZXN1bHRUeXBlLCBPdmVyZmxvd0hhbmRsZXI+IG9wZXJh
dG9yKyhDaGVja2VkPFUsIE92ZXJmbG93SGFuZGxlcj4gbGhzLCBWIHJocykKewogICAgcmV0dXJu
IGxocyArIENoZWNrZWQ8ViwgT3ZlcmZsb3dIYW5kbGVyPihyaHMpOwp9Cgp0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiBzdGF0aWMgaW5s
aW5lIENoZWNrZWQ8dHlwZW5hbWUgUmVzdWx0PFUsIFY+OjpSZXN1bHRUeXBlLCBPdmVyZmxvd0hh
bmRsZXI+IG9wZXJhdG9yLShDaGVja2VkPFUsIE92ZXJmbG93SGFuZGxlcj4gbGhzLCBWIHJocykK
ewogICAgcmV0dXJuIGxocyAtIENoZWNrZWQ8ViwgT3ZlcmZsb3dIYW5kbGVyPihyaHMpOwp9Cgp0
ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
PiBzdGF0aWMgaW5saW5lIENoZWNrZWQ8dHlwZW5hbWUgUmVzdWx0PFUsIFY+OjpSZXN1bHRUeXBl
LCBPdmVyZmxvd0hhbmRsZXI+IG9wZXJhdG9yKihDaGVja2VkPFUsIE92ZXJmbG93SGFuZGxlcj4g
bGhzLCBWIHJocykKewogICAgcmV0dXJuIGxocyAqIENoZWNrZWQ8ViwgT3ZlcmZsb3dIYW5kbGVy
PihyaHMpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyPiBzdGF0aWMgaW5saW5lIENoZWNrZWQ8dHlwZW5hbWUgUmVzdWx0PFUsIFY+
OjpSZXN1bHRUeXBlLCBPdmVyZmxvd0hhbmRsZXI+IG9wZXJhdG9yKyhVIGxocywgQ2hlY2tlZDxW
LCBPdmVyZmxvd0hhbmRsZXI+IHJocykKewogICAgcmV0dXJuIENoZWNrZWQ8VSwgT3ZlcmZsb3dI
YW5kbGVyPihsaHMpICsgcmhzOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
dHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiBzdGF0aWMgaW5saW5lIENoZWNrZWQ8dHlwZW5hbWUg
UmVzdWx0PFUsIFY+OjpSZXN1bHRUeXBlLCBPdmVyZmxvd0hhbmRsZXI+IG9wZXJhdG9yLShVIGxo
cywgQ2hlY2tlZDxWLCBPdmVyZmxvd0hhbmRsZXI+IHJocykKewogICAgcmV0dXJuIENoZWNrZWQ8
VSwgT3ZlcmZsb3dIYW5kbGVyPihsaHMpIC0gcmhzOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiBzdGF0aWMgaW5saW5lIENoZWNr
ZWQ8dHlwZW5hbWUgUmVzdWx0PFUsIFY+OjpSZXN1bHRUeXBlLCBPdmVyZmxvd0hhbmRsZXI+IG9w
ZXJhdG9yKihVIGxocywgQ2hlY2tlZDxWLCBPdmVyZmxvd0hhbmRsZXI+IHJocykKewogICAgcmV0
dXJuIENoZWNrZWQ8VSwgT3ZlcmZsb3dIYW5kbGVyPihsaHMpICogcmhzOwp9CgoKdHlwZWRlZiBD
aGVja2VkPGludDhfdCwgUmVjb3JkT3ZlcmZsb3c+IENoZWNrZWRJbnQ4Owp0eXBlZGVmIENoZWNr
ZWQ8dWludDhfdCwgUmVjb3JkT3ZlcmZsb3c+IENoZWNrZWRVaW50ODsKdHlwZWRlZiBDaGVja2Vk
PGludDE2X3QsIFJlY29yZE92ZXJmbG93PiBDaGVja2VkSW50MTY7CnR5cGVkZWYgQ2hlY2tlZDx1
aW50MTZfdCwgUmVjb3JkT3ZlcmZsb3c+IENoZWNrZWRVaW50MTY7CnR5cGVkZWYgQ2hlY2tlZDxp
bnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gQ2hlY2tlZEludDMyOwp0eXBlZGVmIENoZWNrZWQ8dWlu
dDMyX3QsIFJlY29yZE92ZXJmbG93PiBDaGVja2VkVWludDMyOwp0eXBlZGVmIENoZWNrZWQ8aW50
NjRfdCwgUmVjb3JkT3ZlcmZsb3c+IENoZWNrZWRJbnQ2NDsKdHlwZWRlZiBDaGVja2VkPHVpbnQ2
NF90LCBSZWNvcmRPdmVyZmxvdz4gQ2hlY2tlZFVpbnQ2NDsKdHlwZWRlZiBDaGVja2VkPHNpemVf
dCwgUmVjb3JkT3ZlcmZsb3c+IENoZWNrZWRTaXplOwoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KQ2hlY2tlZDxULCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFN1bShVIHZhbHVlKQp7
CiAgICByZXR1cm4gQ2hlY2tlZDxULCBSZWNvcmRPdmVyZmxvdz4odmFsdWUpOwp9CnRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lLi4uIEFyZ3M+CkNoZWNrZWQ8VCwgUmVj
b3JkT3ZlcmZsb3c+IGNoZWNrZWRTdW0oVSB2YWx1ZSwgQXJncy4uLiBhcmdzKQp7CiAgICByZXR1
cm4gQ2hlY2tlZDxULCBSZWNvcmRPdmVyZmxvdz4odmFsdWUpICsgY2hlY2tlZFN1bTxUPihhcmdz
Li4uKTsKfQoKCgoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gYm9vbCBz
dW1PdmVyZmxvd3MoQXJncy4uLiBhcmdzKQp7CiAgICByZXR1cm4gY2hlY2tlZFN1bTxUPihhcmdz
Li4uKS5oYXNPdmVyZmxvd2VkKCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IGJvb2wgZGlmZmVyZW5jZU92ZXJmbG93cyhVIGxlZnQsIFUgcmlnaHQpCnsKICAgIHJldHVybiAo
Q2hlY2tlZDxULCBSZWNvcmRPdmVyZmxvdz4obGVmdCkgLSBDaGVja2VkPFQsIFJlY29yZE92ZXJm
bG93PihyaWdodCkpLmhhc092ZXJmbG93ZWQoKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KQ2hlY2tlZDxULCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFByb2R1Y3QoVSB2YWx1
ZSkKewogICAgcmV0dXJuIENoZWNrZWQ8VCwgUmVjb3JkT3ZlcmZsb3c+KHZhbHVlKTsKfQp0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZS4uLiBBcmdzPgpDaGVja2VkPFQs
IFJlY29yZE92ZXJmbG93PiBjaGVja2VkUHJvZHVjdChVIHZhbHVlLCBBcmdzLi4uIGFyZ3MpCnsK
ICAgIHJldHVybiBDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93Pih2YWx1ZSkgKiBjaGVja2VkUHJv
ZHVjdDxUPihhcmdzLi4uKTsKfQoKCgoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4g
QXJncz4gYm9vbCBwcm9kdWN0T3ZlcmZsb3dzKEFyZ3MuLi4gYXJncykKewogICAgcmV0dXJuIGNo
ZWNrZWRQcm9kdWN0PFQ+KGFyZ3MuLi4pLmhhc092ZXJmbG93ZWQoKTsKfQoKfQoKdXNpbmcgV1RG
OjpDaGVja2VkOwp1c2luZyBXVEY6OkNoZWNrZWRTdGF0ZTsKdXNpbmcgV1RGOjpSZWNvcmRPdmVy
ZmxvdzsKdXNpbmcgV1RGOjpDaGVja2VkSW50ODsKdXNpbmcgV1RGOjpDaGVja2VkVWludDg7CnVz
aW5nIFdURjo6Q2hlY2tlZEludDE2Owp1c2luZyBXVEY6OkNoZWNrZWRVaW50MTY7CnVzaW5nIFdU
Rjo6Q2hlY2tlZEludDMyOwp1c2luZyBXVEY6OkNoZWNrZWRVaW50MzI7CnVzaW5nIFdURjo6Q2hl
Y2tlZEludDY0Owp1c2luZyBXVEY6OkNoZWNrZWRVaW50NjQ7CnVzaW5nIFdURjo6Q2hlY2tlZFNp
emU7CnVzaW5nIFdURjo6Y2hlY2tlZFN1bTsKdXNpbmcgV1RGOjpkaWZmZXJlbmNlT3ZlcmZsb3dz
Owp1c2luZyBXVEY6OnByb2R1Y3RPdmVyZmxvd3M7CnVzaW5nIFdURjo6c3VtT3ZlcmZsb3dzOwoj
IDM0ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaCIgMgoKCgoKCiNkZWZpbmUg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKHR5cGUsbmFtZSxhcmd1bWVudHMpIHN0YXRp
YyB0eXBlJiBuYW1lID0gKm5ldyB0eXBlIGFyZ3VtZW50cwoKCgoKCgojZGVmaW5lIERFRklORV9H
TE9CQUxfRk9SX0xPR0dJTkcodHlwZSxuYW1lLGFyZ3VtZW50cykgX1ByYWdtYSgiY2xhbmcgZGlh
Z25vc3RpYyBwdXNoIikgX1ByYWdtYSgiY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdnbG9i
YWwtY29uc3RydWN0b3JzXCIiKSBfUHJhZ21hKCJjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgXCIt
V2V4aXQtdGltZS1kZXN0cnVjdG9yc1wiIikgc3RhdGljIHR5cGUgbmFtZSBhcmd1bWVudHM7IF9Q
cmFnbWEoImNsYW5nIGRpYWdub3N0aWMgcG9wIikKIyA2MSAiLi4vLi4vU291cmNlL1dURi93dGYv
U3RkTGliRXh0cmFzLmgiCiNkZWZpbmUgREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKHR5cGUsbmFt
ZSxhcmd1bWVudHMpIAoKCgoKCiNkZWZpbmUgT0JKRUNUX09GRlNFVE9GKGNsYXNzLGZpZWxkKSAo
cmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxjbGFzcyo+KDB4
NDAwMCktPmZpZWxkKSkgLSAweDQwMDApCgoKI2RlZmluZSBTVFJJTkdJWkUoZXhwKSAjZXhwCiNk
ZWZpbmUgU1RSSU5HSVpFX1ZBTFVFX09GKGV4cCkgU1RSSU5HSVpFKGV4cCkKIyA4OSAiLi4vLi4v
U291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgiCnRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Cmlu
bGluZSBib29sIGlzUG9pbnRlclR5cGVBbGlnbm1lbnRPa2F5KFR5cGUqIHB0cikKewogICAgcmV0
dXJuICEocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocHRyKSAlIF9fYWxpZ25vZl9fKFR5cGUp
KTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVHlwZVB0cj4KaW5saW5lIFR5cGVQdHIgcmVpbnRlcnBy
ZXRfY2FzdF9wdHIodm9pZCogcHRyKQp7CiAgICAoKHZvaWQpMCk7CiAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxUeXBlUHRyPihwdHIpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlUHRyPgpp
bmxpbmUgVHlwZVB0ciByZWludGVycHJldF9jYXN0X3B0cihjb25zdCB2b2lkKiBwdHIpCnsKICAg
ICgodm9pZCkwKTsKICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFR5cGVQdHI+KHB0cik7Cn0K
IyAxMTcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oIgpuYW1lc3BhY2UgV1RG
IHsKCmVudW0gQ2hlY2tNb3ZlUGFyYW1ldGVyVGFnIHsgQ2hlY2tNb3ZlUGFyYW1ldGVyIH07Cgpz
dGF0aWMgY29uc3Qgc2l6ZV90IEtCID0gMTAyNDsKc3RhdGljIGNvbnN0IHNpemVfdCBNQiA9IDEw
MjQgKiAxMDI0OwoKaW5saW5lIGJvb2wgaXNQb2ludGVyQWxpZ25lZCh2b2lkKiBwKQp7CiAgICBy
ZXR1cm4gISgoaW50cHRyX3QpKHApICYgKHNpemVvZihjaGFyKikgLSAxKSk7Cn0KCmlubGluZSBi
b29sIGlzOEJ5dGVBbGlnbmVkKHZvaWQqIHApCnsKICAgIHJldHVybiAhKCh1aW50cHRyX3QpKHAp
ICYgKHNpemVvZihkb3VibGUpIC0gMSkpOwp9CgoKCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUb1R5cGUs
IHR5cGVuYW1lIEZyb21UeXBlPgppbmxpbmUgVG9UeXBlIGJpdHdpc2VfY2FzdChGcm9tVHlwZSBm
cm9tKQp7CiAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihGcm9tVHlwZSkgPT0gc2l6ZW9mKFRvVHlw
ZSksICJiaXR3aXNlX2Nhc3Qgc2l6ZSBvZiBGcm9tVHlwZSBhbmQgVG9UeXBlIG11c3QgYmUgZXF1
YWwhIik7CiAgICB1bmlvbiB7CiAgICAgICAgRnJvbVR5cGUgZnJvbTsKICAgICAgICBUb1R5cGUg
dG87CiAgICB9IHU7CiAgICB1LmZyb20gPSBmcm9tOwogICAgcmV0dXJuIHUudG87Cn0KCnRlbXBs
YXRlPHR5cGVuYW1lIFRvVHlwZSwgdHlwZW5hbWUgRnJvbVR5cGU+CmlubGluZSBUb1R5cGUgc2Fm
ZUNhc3QoRnJvbVR5cGUgdmFsdWUpCnsKICAgICgodm9pZCkwKTsKICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxUb1R5cGU+KHZhbHVlKTsKfQoKCmlubGluZSBzaXplX3QgYml0Q291bnQodW5zaWduZWQg
Yml0cykKewogICAgYml0cyA9IGJpdHMgLSAoKGJpdHMgPj4gMSkgJiAweDU1NTU1NTU1KTsKICAg
IGJpdHMgPSAoYml0cyAmIDB4MzMzMzMzMzMpICsgKChiaXRzID4+IDIpICYgMHgzMzMzMzMzMyk7
CiAgICByZXR1cm4gKCgoYml0cyArIChiaXRzID4+IDQpKSAmIDB4RjBGMEYwRikgKiAweDEwMTAx
MDEpID4+IDI0Owp9CgppbmxpbmUgc2l6ZV90IGJpdENvdW50KHVpbnQ2NF90IGJpdHMpCnsKICAg
IHJldHVybiBiaXRDb3VudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYml0cykpICsgYml0Q291bnQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJpdHMgPj4gMzIpKTsKfQoKCnRlbXBsYXRlPHR5cGVuYW1l
IFQsIHNpemVfdCBTaXplPiBjaGFyICgmQXJyYXlMZW5ndGhIZWxwZXJGdW5jdGlvbihUICgmKVtT
aXplXSkpW1NpemVdOwoKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNoYXIgKCZBcnJheUxlbmd0aEhl
bHBlckZ1bmN0aW9uKFQgKCYpWzBdKSlbMF07CgojZGVmaW5lIFdURl9BUlJBWV9MRU5HVEgoYXJy
YXkpIHNpemVvZig6OldURjo6QXJyYXlMZW5ndGhIZWxwZXJGdW5jdGlvbihhcnJheSkpCgoKaW5s
aW5lIHNpemVfdCByb3VuZFVwVG9NdWx0aXBsZU9mKHNpemVfdCBkaXZpc29yLCBzaXplX3QgeCkK
ewogICAgKCh2b2lkKTApOwogICAgc2l6ZV90IHJlbWFpbmRlck1hc2sgPSBkaXZpc29yIC0gMTsK
ICAgIHJldHVybiAoeCArIHJlbWFpbmRlck1hc2spICYgfnJlbWFpbmRlck1hc2s7Cn0KCnRlbXBs
YXRlPHNpemVfdCBkaXZpc29yPiBpbmxpbmUgc2l6ZV90IHJvdW5kVXBUb011bHRpcGxlT2Yoc2l6
ZV90IHgpCnsKICAgIHN0YXRpY19hc3NlcnQoZGl2aXNvciAmJiAhKGRpdmlzb3IgJiAoZGl2aXNv
ciAtIDEpKSwgImRpdmlzb3IgbXVzdCBiZSBhIHBvd2VyIG9mIHR3byEiKTsKICAgIHJldHVybiBy
b3VuZFVwVG9NdWx0aXBsZU9mKGRpdmlzb3IsIHgpOwp9CgplbnVtIEJpbmFyeVNlYXJjaE1vZGUg
ewogICAgS2V5TXVzdEJlUHJlc2VudEluQXJyYXksCiAgICBLZXlNaWdodE5vdEJlUHJlc2VudElu
QXJyYXksCiAgICBSZXR1cm5BZGphY2VudEVsZW1lbnRJZktleUlzTm90UHJlc2VudAp9OwoKdGVt
cGxhdGU8dHlwZW5hbWUgQXJyYXlFbGVtZW50VHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5h
bWUgQXJyYXlUeXBlLCB0eXBlbmFtZSBFeHRyYWN0S2V5LCBCaW5hcnlTZWFyY2hNb2RlIG1vZGU+
CmlubGluZSBBcnJheUVsZW1lbnRUeXBlKiBiaW5hcnlTZWFyY2hJbXBsKEFycmF5VHlwZSYgYXJy
YXksIHNpemVfdCBzaXplLCBLZXlUeXBlIGtleSwgY29uc3QgRXh0cmFjdEtleSYgZXh0cmFjdEtl
eSA9IEV4dHJhY3RLZXkoKSkKewogICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICB3aGlsZSAoc2l6
ZSA+IDEpIHsKICAgICAgICBzaXplX3QgcG9zID0gKHNpemUgLSAxKSA+PiAxOwogICAgICAgIEtl
eVR5cGUgdmFsID0gZXh0cmFjdEtleSgmYXJyYXlbb2Zmc2V0ICsgcG9zXSk7CgogICAgICAgIGlm
ICh2YWwgPT0ga2V5KQogICAgICAgICAgICByZXR1cm4gJmFycmF5W29mZnNldCArIHBvc107CgoK
ICAgICAgICBpZiAoa2V5IDwgdmFsKQogICAgICAgICAgICBzaXplID0gcG9zOwoKICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgc2l6ZSAtPSAocG9zICsgMSk7CiAgICAgICAgICAgIG9mZnNldCAr
PSAocG9zICsgMSk7CiAgICAgICAgfQoKICAgICAgICAoKHZvaWQpMCk7CiAgICB9CgogICAgaWYg
KG1vZGUgPT0gS2V5TWlnaHROb3RCZVByZXNlbnRJbkFycmF5ICYmICFzaXplKQogICAgICAgIHJl
dHVybiAwOwoKICAgIEFycmF5RWxlbWVudFR5cGUqIHJlc3VsdCA9ICZhcnJheVtvZmZzZXRdOwoK
ICAgIGlmIChtb2RlID09IEtleU1pZ2h0Tm90QmVQcmVzZW50SW5BcnJheSAmJiBrZXkgIT0gZXh0
cmFjdEtleShyZXN1bHQpKQogICAgICAgIHJldHVybiAwOwoKICAgIGlmIChtb2RlID09IEtleU11
c3RCZVByZXNlbnRJbkFycmF5KSB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkw
KTsKICAgIH0KCiAgICByZXR1cm4gcmVzdWx0Owp9CgoKdGVtcGxhdGU8dHlwZW5hbWUgQXJyYXlF
bGVtZW50VHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgQXJyYXlUeXBlLCB0eXBlbmFt
ZSBFeHRyYWN0S2V5PgppbmxpbmUgQXJyYXlFbGVtZW50VHlwZSogYmluYXJ5U2VhcmNoKEFycmF5
VHlwZSYgYXJyYXksIHNpemVfdCBzaXplLCBLZXlUeXBlIGtleSwgRXh0cmFjdEtleSBleHRyYWN0
S2V5ID0gRXh0cmFjdEtleSgpKQp7CiAgICByZXR1cm4gYmluYXJ5U2VhcmNoSW1wbDxBcnJheUVs
ZW1lbnRUeXBlLCBLZXlUeXBlLCBBcnJheVR5cGUsIEV4dHJhY3RLZXksIEtleU11c3RCZVByZXNl
bnRJbkFycmF5PihhcnJheSwgc2l6ZSwga2V5LCBleHRyYWN0S2V5KTsKfQoKCnRlbXBsYXRlPHR5
cGVuYW1lIEFycmF5RWxlbWVudFR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIEFycmF5
VHlwZSwgdHlwZW5hbWUgRXh0cmFjdEtleT4KaW5saW5lIEFycmF5RWxlbWVudFR5cGUqIHRyeUJp
bmFyeVNlYXJjaChBcnJheVR5cGUmIGFycmF5LCBzaXplX3Qgc2l6ZSwgS2V5VHlwZSBrZXksIEV4
dHJhY3RLZXkgZXh0cmFjdEtleSA9IEV4dHJhY3RLZXkoKSkKewogICAgcmV0dXJuIGJpbmFyeVNl
YXJjaEltcGw8QXJyYXlFbGVtZW50VHlwZSwgS2V5VHlwZSwgQXJyYXlUeXBlLCBFeHRyYWN0S2V5
LCBLZXlNaWdodE5vdEJlUHJlc2VudEluQXJyYXk+KGFycmF5LCBzaXplLCBrZXksIGV4dHJhY3RL
ZXkpOwp9CgoKdGVtcGxhdGU8dHlwZW5hbWUgQXJyYXlFbGVtZW50VHlwZSwgdHlwZW5hbWUgS2V5
VHlwZSwgdHlwZW5hbWUgQXJyYXlUeXBlLCB0eXBlbmFtZSBFeHRyYWN0S2V5PgppbmxpbmUgQXJy
YXlFbGVtZW50VHlwZSogYXBwcm94aW1hdGVCaW5hcnlTZWFyY2goQXJyYXlUeXBlJiBhcnJheSwg
c2l6ZV90IHNpemUsIEtleVR5cGUga2V5LCBFeHRyYWN0S2V5IGV4dHJhY3RLZXkgPSBFeHRyYWN0
S2V5KCkpCnsKICAgIHJldHVybiBiaW5hcnlTZWFyY2hJbXBsPEFycmF5RWxlbWVudFR5cGUsIEtl
eVR5cGUsIEFycmF5VHlwZSwgRXh0cmFjdEtleSwgUmV0dXJuQWRqYWNlbnRFbGVtZW50SWZLZXlJ
c05vdFByZXNlbnQ+KGFycmF5LCBzaXplLCBrZXksIGV4dHJhY3RLZXkpOwp9CgoKdGVtcGxhdGU8
dHlwZW5hbWUgQXJyYXlFbGVtZW50VHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgQXJy
YXlUeXBlLCB0eXBlbmFtZSBFeHRyYWN0S2V5PgppbmxpbmUgQXJyYXlFbGVtZW50VHlwZSogYmlu
YXJ5U2VhcmNoKGNvbnN0IEFycmF5VHlwZSYgYXJyYXksIHNpemVfdCBzaXplLCBLZXlUeXBlIGtl
eSwgRXh0cmFjdEtleSBleHRyYWN0S2V5ID0gRXh0cmFjdEtleSgpKQp7CiAgICByZXR1cm4gYmlu
YXJ5U2VhcmNoSW1wbDxBcnJheUVsZW1lbnRUeXBlLCBLZXlUeXBlLCBBcnJheVR5cGUsIEV4dHJh
Y3RLZXksIEtleU11c3RCZVByZXNlbnRJbkFycmF5Pihjb25zdF9jYXN0PEFycmF5VHlwZSY+KGFy
cmF5KSwgc2l6ZSwga2V5LCBleHRyYWN0S2V5KTsKfQp0ZW1wbGF0ZTx0eXBlbmFtZSBBcnJheUVs
ZW1lbnRUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBBcnJheVR5cGUsIHR5cGVuYW1l
IEV4dHJhY3RLZXk+CmlubGluZSBBcnJheUVsZW1lbnRUeXBlKiB0cnlCaW5hcnlTZWFyY2goY29u
c3QgQXJyYXlUeXBlJiBhcnJheSwgc2l6ZV90IHNpemUsIEtleVR5cGUga2V5LCBFeHRyYWN0S2V5
IGV4dHJhY3RLZXkgPSBFeHRyYWN0S2V5KCkpCnsKICAgIHJldHVybiBiaW5hcnlTZWFyY2hJbXBs
PEFycmF5RWxlbWVudFR5cGUsIEtleVR5cGUsIEFycmF5VHlwZSwgRXh0cmFjdEtleSwgS2V5TWln
aHROb3RCZVByZXNlbnRJbkFycmF5Pihjb25zdF9jYXN0PEFycmF5VHlwZSY+KGFycmF5KSwgc2l6
ZSwga2V5LCBleHRyYWN0S2V5KTsKfQp0ZW1wbGF0ZTx0eXBlbmFtZSBBcnJheUVsZW1lbnRUeXBl
LCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBBcnJheVR5cGUsIHR5cGVuYW1lIEV4dHJhY3RL
ZXk+CmlubGluZSBBcnJheUVsZW1lbnRUeXBlKiBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaChjb25z
dCBBcnJheVR5cGUmIGFycmF5LCBzaXplX3Qgc2l6ZSwgS2V5VHlwZSBrZXksIEV4dHJhY3RLZXkg
ZXh0cmFjdEtleSA9IEV4dHJhY3RLZXkoKSkKewogICAgcmV0dXJuIGJpbmFyeVNlYXJjaEltcGw8
QXJyYXlFbGVtZW50VHlwZSwgS2V5VHlwZSwgQXJyYXlUeXBlLCBFeHRyYWN0S2V5LCBSZXR1cm5B
ZGphY2VudEVsZW1lbnRJZktleUlzTm90UHJlc2VudD4oY29uc3RfY2FzdDxBcnJheVR5cGUmPihh
cnJheSksIHNpemUsIGtleSwgZXh0cmFjdEtleSk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFZlY3Rv
clR5cGUsIHR5cGVuYW1lIEVsZW1lbnRUeXBlPgppbmxpbmUgdm9pZCBpbnNlcnRJbnRvQm91bmRl
ZFZlY3RvcihWZWN0b3JUeXBlJiB2ZWN0b3IsIHNpemVfdCBzaXplLCBjb25zdCBFbGVtZW50VHlw
ZSYgZWxlbWVudCwgc2l6ZV90IGluZGV4KQp7CiAgICBmb3IgKHNpemVfdCBpID0gc2l6ZTsgaS0t
ID4gaW5kZXggKyAxOykKICAgICAgICB2ZWN0b3JbaV0gPSB2ZWN0b3JbaSAtIDFdOwogICAgdmVj
dG9yW2luZGV4XSA9IGVsZW1lbnQ7Cn0KCgoKCiBib29sIGlzQ29tcGlsYXRpb25UaHJlYWQoKTsK
Cn0KCgplbnVtIE5vdE51bGxUYWcgeyBOb3ROdWxsIH07CmlubGluZSB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikKewogICAgKCh2b2lkKTApOwog
ICAgcmV0dXJuIGxvY2F0aW9uOwp9CgoKbmFtZXNwYWNlIHN0ZCB7CgoKdGVtcGxhdGU8Y2xhc3Mg
VD4gc3RydWN0IF9VbmlxdWVfaWYgewogICAgdHlwZWRlZiB1bmlxdWVfcHRyPFQ+IF9TaW5nbGVf
b2JqZWN0Owp9OwoKdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IF9VbmlxdWVfaWY8VFtdPiB7CiAg
ICB0eXBlZGVmIHVuaXF1ZV9wdHI8VFtdPiBfVW5rbm93bl9ib3VuZDsKfTsKCnRlbXBsYXRlPGNs
YXNzIFQsIHNpemVfdCBOPiBzdHJ1Y3QgX1VuaXF1ZV9pZjxUW05dPiB7CiAgICB0eXBlZGVmIHZv
aWQgX0tub3duX2JvdW5kOwp9OwoKdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4gQXJncz4gaW5s
aW5lIHR5cGVuYW1lIF9VbmlxdWVfaWY8VD46Ol9TaW5nbGVfb2JqZWN0Cm1ha2VfdW5pcXVlKEFy
Z3MmJi4uLiBhcmdzKQp7CiAgICByZXR1cm4gdW5pcXVlX3B0cjxUPihuZXcgVChzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1l
IF9VbmlxdWVfaWY8VD46Ol9Vbmtub3duX2JvdW5kCm1ha2VfdW5pcXVlKHNpemVfdCBuKQp7CiAg
ICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9leHRlbnQ8VD46OnR5cGUgVTsKICAgIHJldHVybiB1
bmlxdWVfcHRyPFQ+KG5ldyBVW25dKCkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4uLiBB
cmdzPiB0eXBlbmFtZSBfVW5pcXVlX2lmPFQ+OjpfS25vd25fYm91bmQKbWFrZV91bmlxdWUoQXJn
cyYmLi4uKSA9IGRlbGV0ZTsKCgoKCgoKCnRlbXBsYXRlPHNpemVfdC4uLiBpbmRleGVzPiBzdHJ1
Y3QgaW5kZXhfc2VxdWVuY2UgewogICAgc3RhdGljIHNpemVfdCBzaXplKCkgeyByZXR1cm4gc2l6
ZW9mLi4uKGluZGV4ZXMpOyB9Cn07Cgp0ZW1wbGF0ZTxzaXplX3QgY3VycmVudEluZGV4LCBzaXpl
X3QuLi5pbmRleGVzPiBzdHJ1Y3QgbWFrZV9pbmRleF9zZXF1ZW5jZV9oZWxwZXI7Cgp0ZW1wbGF0
ZTxzaXplX3QuLi5pbmRleGVzPiBzdHJ1Y3QgbWFrZV9pbmRleF9zZXF1ZW5jZV9oZWxwZXI8MCwg
aW5kZXhlcy4uLj4gewogICAgdHlwZWRlZiBzdGQ6OmluZGV4X3NlcXVlbmNlPGluZGV4ZXMuLi4+
IHR5cGU7Cn07Cgp0ZW1wbGF0ZTxzaXplX3QgY3VycmVudEluZGV4LCBzaXplX3QuLi5pbmRleGVz
PiBzdHJ1Y3QgbWFrZV9pbmRleF9zZXF1ZW5jZV9oZWxwZXIgewogICAgdHlwZWRlZiB0eXBlbmFt
ZSBtYWtlX2luZGV4X3NlcXVlbmNlX2hlbHBlcjxjdXJyZW50SW5kZXggLSAxLCBjdXJyZW50SW5k
ZXggLSAxLCBpbmRleGVzLi4uPjo6dHlwZSB0eXBlOwp9OwoKdGVtcGxhdGU8c2l6ZV90IGxlbmd0
aD4gc3RydWN0IG1ha2VfaW5kZXhfc2VxdWVuY2UgOiBwdWJsaWMgbWFrZV9pbmRleF9zZXF1ZW5j
ZV9oZWxwZXI8bGVuZ3RoPjo6dHlwZSB7IH07CgoKdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSA9
IFQ+ClQgZXhjaGFuZ2UoVCYgdCwgVSYmIG5ld1ZhbHVlKQp7CiAgICBUIG9sZFZhbHVlID0gc3Rk
Ojptb3ZlKHQpOwogICAgdCA9IHN0ZDo6Zm9yd2FyZDxVPihuZXdWYWx1ZSk7CgogICAgcmV0dXJu
IG9sZFZhbHVlOwp9CgoKCgoKbmFtZXNwYWNlIGxpdGVyYWxzIHsKbmFtZXNwYWNlIGNocm9ub19s
aXRlcmFscyB7CiAgICBjb25zdGV4cHIgaW5saW5lIGNocm9ubzo6c2Vjb25kcyBvcGVyYXRvciIi
IF9zKHVuc2lnbmVkIGxvbmcgbG9uZyBzKQogICAgewogICAgICAgIHJldHVybiBjaHJvbm86OnNl
Y29uZHMoc3RhdGljX2Nhc3Q8Y2hyb25vOjpzZWNvbmRzOjpyZXA+KHMpKTsKICAgIH0KCiAgICBj
b25zdGV4cHIgY2hyb25vOjptaWxsaXNlY29uZHMgb3BlcmF0b3IiIiBfbXModW5zaWduZWQgbG9u
ZyBsb25nIG1zKQogICAgewogICAgICAgIHJldHVybiBjaHJvbm86Om1pbGxpc2Vjb25kcyhzdGF0
aWNfY2FzdDxjaHJvbm86Om1pbGxpc2Vjb25kczo6cmVwPihtcykpOwogICAgfQp9Cn0KCgp0ZW1w
bGF0ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlclRhZywgdHlwZW5hbWUgVD4KaW5saW5lIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgY29uc3RleHByIHR5cGVuYW1lIHJlbW92ZV9y
ZWZlcmVuY2U8VD46OnR5cGUmJiBtb3ZlKFQmJiB2YWx1ZSkKewogICAgc3RhdGljX2Fzc2VydChp
c19sdmFsdWVfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgIlQgaXMgbm90IGFuIGx2YWx1ZSByZWZlcmVu
Y2U7IG1vdmUoKSBpcyB1bm5lY2Vzc2FyeS4iKTsKCiAgICB1c2luZyBOb25SZWZRdWFsaWZpZWRU
eXBlID0gdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZTsKICAgIHN0YXRpY19hc3Nl
cnQoIWlzX2NvbnN0PE5vblJlZlF1YWxpZmllZFR5cGU+Ojp2YWx1ZSwgIlQgaXMgY29uc3QgcXVh
bGlmaWVkLiIpOwoKICAgIHJldHVybiBtb3ZlKGZvcndhcmQ8VD4odmFsdWUpKTsKfQoKfQoKI2Rl
ZmluZSBXVEZNb3ZlKHZhbHVlKSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHZh
bHVlKQoKdXNpbmcgV1RGOjpLQjsKdXNpbmcgV1RGOjpNQjsKdXNpbmcgV1RGOjppc0NvbXBpbGF0
aW9uVGhyZWFkOwp1c2luZyBXVEY6Omluc2VydEludG9Cb3VuZGVkVmVjdG9yOwp1c2luZyBXVEY6
OmlzUG9pbnRlckFsaWduZWQ7CnVzaW5nIFdURjo6aXM4Qnl0ZUFsaWduZWQ7CnVzaW5nIFdURjo6
YmluYXJ5U2VhcmNoOwp1c2luZyBXVEY6OnRyeUJpbmFyeVNlYXJjaDsKdXNpbmcgV1RGOjphcHBy
b3hpbWF0ZUJpbmFyeVNlYXJjaDsKdXNpbmcgV1RGOjpiaXR3aXNlX2Nhc3Q7CnVzaW5nIFdURjo6
c2FmZUNhc3Q7CgoKCnVzaW5nIG5hbWVzcGFjZSBzdGQ6OmxpdGVyYWxzOjpjaHJvbm9fbGl0ZXJh
bHM7CiMgMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaCIgMgoKbmFtZXNwYWNl
IFdURiB7CgpjbGFzcyBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB7CnB1YmxpYzoKICAgIFRyeU1hbGxv
Y1JldHVyblZhbHVlKHZvaWQqKTsKICAgIFRyeU1hbGxvY1JldHVyblZhbHVlKFRyeU1hbGxvY1Jl
dHVyblZhbHVlJiYpOwogICAgflRyeU1hbGxvY1JldHVyblZhbHVlKCk7CiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBib29sIGdldFZhbHVlKFQqJikgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNl
ZF9yZXN1bHRfXykpOwpwcml2YXRlOgogICAgdm9pZCBvcGVyYXRvcj0oVHJ5TWFsbG9jUmV0dXJu
VmFsdWUmJikgPSBkZWxldGU7CiAgICBtdXRhYmxlIHZvaWQqIG1fZGF0YTsKfTsKCgogdm9pZCog
ZmFzdE1hbGxvYyhzaXplX3QpOwogdm9pZCogZmFzdFplcm9lZE1hbGxvYyhzaXplX3QpOwogdm9p
ZCogZmFzdENhbGxvYyhzaXplX3QgbnVtRWxlbWVudHMsIHNpemVfdCBlbGVtZW50U2l6ZSk7CiB2
b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiwgc2l6ZV90KTsKIGNoYXIqIGZhc3RTdHJEdXAoY29uc3Qg
Y2hhciopOwoKIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RNYWxsb2Moc2l6ZV90KTsKVHJ5
TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFplcm9lZE1hbGxvYyhzaXplX3QpOwogVHJ5TWFsbG9j
UmV0dXJuVmFsdWUgdHJ5RmFzdENhbGxvYyhzaXplX3QgbnVtRWxlbWVudHMsIHNpemVfdCBlbGVt
ZW50U2l6ZSk7Cgogdm9pZCBmYXN0RnJlZSh2b2lkKik7CgoKIHZvaWQqIGZhc3RBbGlnbmVkTWFs
bG9jKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCk7CiB2b2lkIGZhc3RBbGlnbmVkRnJlZSh2b2lk
Kik7Cgogc2l6ZV90IGZhc3RNYWxsb2NTaXplKGNvbnN0IHZvaWQqKTsKCgogc2l6ZV90IGZhc3RN
YWxsb2NHb29kU2l6ZShzaXplX3QpOwoKIHZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5
KCk7CiB2b2lkIHJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUZvclRoaXNUaHJlYWQoKTsKCnN0
cnVjdCBGYXN0TWFsbG9jU3RhdGlzdGljcyB7CiAgICBzaXplX3QgcmVzZXJ2ZWRWTUJ5dGVzOwog
ICAgc2l6ZV90IGNvbW1pdHRlZFZNQnl0ZXM7CiAgICBzaXplX3QgZnJlZUxpc3RCeXRlczsKfTsK
IEZhc3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7CgoKCnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBsb25nIEFsbG9jQWxpZ25tZW50SW50ZWdlcjsKCmlubGluZSBUcnlNYWxs
b2NSZXR1cm5WYWx1ZTo6VHJ5TWFsbG9jUmV0dXJuVmFsdWUodm9pZCogZGF0YSkKICAgIDogbV9k
YXRhKGRhdGEpCnsKfQoKaW5saW5lIFRyeU1hbGxvY1JldHVyblZhbHVlOjpUcnlNYWxsb2NSZXR1
cm5WYWx1ZShUcnlNYWxsb2NSZXR1cm5WYWx1ZSYmIHNvdXJjZSkKICAgIDogbV9kYXRhKHNvdXJj
ZS5tX2RhdGEpCnsKICAgIHNvdXJjZS5tX2RhdGEgPSBudWxscHRyOwp9CgppbmxpbmUgVHJ5TWFs
bG9jUmV0dXJuVmFsdWU6On5UcnlNYWxsb2NSZXR1cm5WYWx1ZSgpCnsKICAgICgodm9pZCkwKTsK
fQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgVHJ5TWFsbG9jUmV0dXJuVmFsdWU6
OmdldFZhbHVlKFQqJiBkYXRhKQp7CiAgICBkYXRhID0gc3RhdGljX2Nhc3Q8VCo+KG1fZGF0YSk7
CiAgICBtX2RhdGEgPSBudWxscHRyOwogICAgcmV0dXJuIGRhdGE7Cn0KCn0KCnVzaW5nIFdURjo6
ZmFzdENhbGxvYzsKdXNpbmcgV1RGOjpmYXN0RnJlZTsKdXNpbmcgV1RGOjpmYXN0TWFsbG9jOwp1
c2luZyBXVEY6OmZhc3RNYWxsb2NHb29kU2l6ZTsKdXNpbmcgV1RGOjpmYXN0TWFsbG9jU2l6ZTsK
dXNpbmcgV1RGOjpmYXN0UmVhbGxvYzsKdXNpbmcgV1RGOjpmYXN0U3RyRHVwOwp1c2luZyBXVEY6
OmZhc3RaZXJvZWRNYWxsb2M7CnVzaW5nIFdURjo6dHJ5RmFzdENhbGxvYzsKdXNpbmcgV1RGOjp0
cnlGYXN0TWFsbG9jOwp1c2luZyBXVEY6OnRyeUZhc3RaZXJvZWRNYWxsb2M7CnVzaW5nIFdURjo6
ZmFzdEFsaWduZWRNYWxsb2M7CnVzaW5nIFdURjo6ZmFzdEFsaWduZWRGcmVlOwoKCgoKI2RlZmlu
ZSBXVEZfUFJJVkFURV9JTkxJTkUgaW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUp
KQoKCgoKCgojZGVmaW5lIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIHB1YmxpYzogdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBu
ZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJh
dG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0g
dm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyBB
U1NFUlQobG9jYXRpb24pOyByZXR1cm4gbG9jYXRpb247IH0gcHJpdmF0ZTogdHlwZWRlZiBpbnQg
X190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybwojIDU1ICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgiIDIKCgojIDEgIi4uLy4uL1NvdXJjZS9XVEYv
d3RmL0Rpc2FsbG93Q1R5cGUuaCIgMQojIDMwICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9EaXNhbGxv
d0NUeXBlLmgiCiNkZWZpbmUgV1RGX0Rpc2FsbG93Q1R5cGVfaCAKIyA0NyAiLi4vLi4vU291cmNl
L1dURi93dGYvRGlzYWxsb3dDVHlwZS5oIgojdW5kZWYgaXNhbG51bQojdW5kZWYgaXNhbHBoYQoj
dW5kZWYgaXNhc2NpaQojdW5kZWYgaXNibGFuawojdW5kZWYgaXNjbnRybAojdW5kZWYgaXNkaWdp
dAojdW5kZWYgaXNncmFwaAojdW5kZWYgaXNsb3dlcgojdW5kZWYgaXNwcmludAojdW5kZWYgaXNw
dW5jdAojdW5kZWYgaXNzcGFjZQojdW5kZWYgaXN1cHBlcgojdW5kZWYgaXN4ZGlnaXQKI3VuZGVm
IHRvYXNjaWkKI3VuZGVmIHRvbG93ZXIKI3VuZGVmIHRvdXBwZXIKCiNkZWZpbmUgaXNhbG51bSBp
c2FsbnVtX1dURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29t
bWVudF9pbl9BU0NJSUNUeXBlX2gKI2RlZmluZSBpc2FscGhhIGlzYWxwaGFfV1RGX1BsZWFzZV91
c2VfQVNDSUlDVHlwZV9pbnN0ZWFkX29mX2N0eXBlX3NlZV9jb21tZW50X2luX0FTQ0lJQ1R5cGVf
aAojZGVmaW5lIGlzYXNjaWkgaXNhc2NpaV9XVEZfUGxlYXNlX3VzZV9BU0NJSUNUeXBlX2luc3Rl
YWRfb2ZfY3R5cGVfc2VlX2NvbW1lbnRfaW5fQVNDSUlDVHlwZV9oCiNkZWZpbmUgaXNibGFuayBp
c2JsYW5rX1dURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29t
bWVudF9pbl9BU0NJSUNUeXBlX2gKI2RlZmluZSBpc2NudHJsIGlzY250cmxfV1RGX1BsZWFzZV91
c2VfQVNDSUlDVHlwZV9pbnN0ZWFkX29mX2N0eXBlX3NlZV9jb21tZW50X2luX0FTQ0lJQ1R5cGVf
aAojZGVmaW5lIGlzZGlnaXQgaXNkaWdpdF9XVEZfUGxlYXNlX3VzZV9BU0NJSUNUeXBlX2luc3Rl
YWRfb2ZfY3R5cGVfc2VlX2NvbW1lbnRfaW5fQVNDSUlDVHlwZV9oCiNkZWZpbmUgaXNncmFwaCBp
c2dyYXBoX1dURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29t
bWVudF9pbl9BU0NJSUNUeXBlX2gKI2RlZmluZSBpc2xvd2VyIGlzbG93ZXJfV1RGX1BsZWFzZV91
c2VfQVNDSUlDVHlwZV9pbnN0ZWFkX29mX2N0eXBlX3NlZV9jb21tZW50X2luX0FTQ0lJQ1R5cGVf
aAojZGVmaW5lIGlzcHJpbnQgaXNwcmludF9XVEZfUGxlYXNlX3VzZV9BU0NJSUNUeXBlX2luc3Rl
YWRfb2ZfY3R5cGVfc2VlX2NvbW1lbnRfaW5fQVNDSUlDVHlwZV9oCiNkZWZpbmUgaXNwdW5jdCBp
c3B1bmN0X1dURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29t
bWVudF9pbl9BU0NJSUNUeXBlX2gKI2RlZmluZSBpc3NwYWNlIGlzc3BhY2VfV1RGX1BsZWFzZV91
c2VfQVNDSUlDVHlwZV9pbnN0ZWFkX29mX2N0eXBlX3NlZV9jb21tZW50X2luX0FTQ0lJQ1R5cGVf
aAojZGVmaW5lIGlzdXBwZXIgaXN1cHBlcl9XVEZfUGxlYXNlX3VzZV9BU0NJSUNUeXBlX2luc3Rl
YWRfb2ZfY3R5cGVfc2VlX2NvbW1lbnRfaW5fQVNDSUlDVHlwZV9oCiNkZWZpbmUgaXN4ZGlnaXQg
aXN4ZGlnaXRfV1RGX1BsZWFzZV91c2VfQVNDSUlDVHlwZV9pbnN0ZWFkX29mX2N0eXBlX3NlZV9j
b21tZW50X2luX0FTQ0lJQ1R5cGVfaAojZGVmaW5lIHRvYXNjaWkgdG9hc2NpaV9XVEZfUGxlYXNl
X3VzZV9BU0NJSUNUeXBlX2luc3RlYWRfb2ZfY3R5cGVfc2VlX2NvbW1lbnRfaW5fQVNDSUlDVHlw
ZV9oCiNkZWZpbmUgdG9sb3dlciB0b2xvd2VyX1dURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5z
dGVhZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNUeXBlX2gKI2RlZmluZSB0b3VwcGVy
IHRvdXBwZXJfV1RGX1BsZWFzZV91c2VfQVNDSUlDVHlwZV9pbnN0ZWFkX29mX2N0eXBlX3NlZV9j
b21tZW50X2luX0FTQ0lJQ1R5cGVfaAojIDU4ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Y29uZmlnLmgiIDIKCgoKCiNkZWZpbmUgU0tJUF9TVEFUSUNfQ09OU1RSVUNUT1JTX09OX0dDQyAx
CiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVy
cmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCIgMgojIDEgIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCIKI2RlZmluZSBB
ZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlX2ggCgojIDEgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5o
IiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbi5oIgojZGVmaW5lIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uX2ggCgojIDEg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgiIDEKIyAyNCAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCIKI2RlZmluZSBK
U09iamVjdF9oIAoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdM
aXN0LmgiIDEKIyAyMyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlz
dC5oIgojZGVmaW5lIEFyZ0xpc3RfaCAKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5oIiAxCiMgMjQgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaCIKI2RlZmluZSBDYWxsRnJhbWVfaCAKCiMgMSAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuaCIgMQoj
IDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5o
IgojZGVmaW5lIEFic3RyYWN0UENfaCAKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgojZGVmaW5l
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZl9oIAoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmgiCiNkZWZpbmUgRGlzYXNzZW1i
bGVyX2ggCgoKCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaCIgMQojIDI3
ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oIgojZGVmaW5lIFByaW50U3RyZWFt
X2ggCgoKCgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL05vbmNvcHlhYmxlLmgiIDEKIyAyMiAi
Li4vLi4vU291cmNlL1dURi93dGYvTm9uY29weWFibGUuaCIKI2RlZmluZSBXVEZfTm9uY29weWFi
bGVfaCAKCiNkZWZpbmUgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2xhc3NOYW1lKSBwcml2YXRlOiBD
bGFzc05hbWUoY29uc3QgQ2xhc3NOYW1lJikgPSBkZWxldGU7IENsYXNzTmFtZSYgb3BlcmF0b3I9
KGNvbnN0IENsYXNzTmFtZSYpID0gZGVsZXRlOwojIDMzICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9Q
cmludFN0cmVhbS5oIiAyCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvUmF3UG9pbnRlci5oIiAx
CiMgMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1Jhd1BvaW50ZXIuaCIKI2RlZmluZSBSYXdQb2lu
dGVyX2ggCgpuYW1lc3BhY2UgV1RGIHsKCmNsYXNzIFJhd1BvaW50ZXIgewpwdWJsaWM6CiAgICBS
YXdQb2ludGVyKCkKICAgICAgICA6IG1fdmFsdWUoMCkKICAgIHsKICAgIH0KCiAgICBleHBsaWNp
dCBSYXdQb2ludGVyKHZvaWQqIHZhbHVlKQogICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgIHsK
ICAgIH0KCiAgICBleHBsaWNpdCBSYXdQb2ludGVyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAg
IDogbV92YWx1ZSh2YWx1ZSkKICAgIHsKICAgIH0KCiAgICBjb25zdCB2b2lkKiB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KCnByaXZhdGU6CiAgICBjb25zdCB2b2lkKiBtX3ZhbHVl
Owp9OwoKfQoKdXNpbmcgV1RGOjpSYXdQb2ludGVyOwojIDM0ICIuLi8uLi9Tb3VyY2UvV1RGL3d0
Zi9QcmludFN0cmVhbS5oIiAyCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvUmVmUHRyLmgiIDEK
IyAyNCAiLi4vLi4vU291cmNlL1dURi93dGYvUmVmUHRyLmgiCiNkZWZpbmUgV1RGX1JlZlB0cl9o
IAoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2FsZ29yaXRobSIgMSAzCiMgNTYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYWxnb3JpdGhtIiAzCiNkZWZpbmUgX0dMSUJDWFhf
QUxHT1JJVEhNIDEKCiAgICAgICAKIyA1OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hbGdvcml0aG0iIDMKCgoKIyAxICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2Fs
Z28uaCIgMSAzCiMgNTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnby5oIiAzCiNkZWZpbmUgX1NUTF9BTEdPX0ggMQoK
IyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OS4zL2NzdGRsaWIiIDEgMwojIDM5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2NzdGRsaWIiIDMKICAgICAgIAojIDQwICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2NzdGRsaWIiIDMK
IyA2MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9hbGdvcml0aG1md2QuaCIgMSAzCiMg
MzEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvYml0cy9hbGdvcml0aG1md2QuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0FMR09SSVRITUZXRF9I
IDEKCiAgICAgICAKIyAzNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL2FsZ29yaXRobWZ3ZC5oIiAzCiMgNDIgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9hbGdvcml0
aG1md2QuaCIgMwpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAo
ImRlZmF1bHQiKSkpCnsKCiMgMTk0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYWxnb3JpdGhtZndkLmgiIDMKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSUl0ZXIsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBib29sCiAgICBhbGxfb2Yo
X0lJdGVyLCBfSUl0ZXIsIF9QcmVkaWNhdGUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIs
IHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBib29sCiAgICBhbnlfb2YoX0lJdGVyLCBfSUl0ZXIs
IF9QcmVkaWNhdGUpOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVyLCB0eXBlbmFtZSBfVHA+
CiAgICBib29sCiAgICBiaW5hcnlfc2VhcmNoKF9GSXRlciwgX0ZJdGVyLCBjb25zdCBfVHAmKTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVyLCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21w
YXJlPgogICAgYm9vbAogICAgYmluYXJ5X3NlYXJjaChfRkl0ZXIsIF9GSXRlciwgY29uc3QgX1Rw
JiwgX0NvbXBhcmUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIsIHR5cGVuYW1lIF9PSXRl
cj4KICAgIF9PSXRlcgogICAgY29weShfSUl0ZXIsIF9JSXRlciwgX09JdGVyKTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0JJdGVyMSwgdHlwZW5hbWUgX0JJdGVyMj4KICAgIF9CSXRlcjIKICAgIGNv
cHlfYmFja3dhcmQoX0JJdGVyMSwgX0JJdGVyMSwgX0JJdGVyMik7CgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfSUl0ZXIsIHR5cGVuYW1lIF9PSXRlciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIF9P
SXRlcgogICAgY29weV9pZihfSUl0ZXIsIF9JSXRlciwgX09JdGVyLCBfUHJlZGljYXRlKTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyLCB0eXBlbmFtZSBfU2l6ZSwgdHlwZW5hbWUgX09JdGVy
PgogICAgX09JdGVyCiAgICBjb3B5X24oX0lJdGVyLCBfU2l6ZSwgX09JdGVyKTsKCgoKCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9GSXRlciwgdHlwZW5hbWUgX1RwPgogICAgcGFpcjxfRkl0ZXIsIF9G
SXRlcj4KICAgIGVxdWFsX3JhbmdlKF9GSXRlciwgX0ZJdGVyLCBjb25zdCBfVHAmKTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0ZJdGVyLCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21wYXJlPgog
ICAgcGFpcjxfRkl0ZXIsIF9GSXRlcj4KICAgIGVxdWFsX3JhbmdlKF9GSXRlciwgX0ZJdGVyLCBj
b25zdCBfVHAmLCBfQ29tcGFyZSk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9GSXRlciwgdHlwZW5h
bWUgX1RwPgogICAgdm9pZAogICAgZmlsbChfRkl0ZXIsIF9GSXRlciwgY29uc3QgX1RwJik7Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9PSXRlciwgdHlwZW5hbWUgX1NpemUsIHR5cGVuYW1lIF9UcD4K
ICAgIF9PSXRlcgogICAgZmlsbF9uKF9PSXRlciwgX1NpemUsIGNvbnN0IF9UcCYpOwoKCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9GSXRlcjEsIHR5cGVuYW1lIF9GSXRlcjI+CiAgICBfRkl0ZXIxCiAg
ICBmaW5kX2VuZChfRkl0ZXIxLCBfRkl0ZXIxLCBfRkl0ZXIyLCBfRkl0ZXIyKTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0ZJdGVyMSwgdHlwZW5hbWUgX0ZJdGVyMiwgdHlwZW5hbWUgX0JpbmFyeVBy
ZWRpY2F0ZT4KICAgIF9GSXRlcjEKICAgIGZpbmRfZW5kKF9GSXRlcjEsIF9GSXRlcjEsIF9GSXRl
cjIsIF9GSXRlcjIsIF9CaW5hcnlQcmVkaWNhdGUpOwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0lJdGVyLCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgX0lJdGVyCiAgICBmaW5kX2lmX25vdChf
SUl0ZXIsIF9JSXRlciwgX1ByZWRpY2F0ZSk7CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJ
dGVyMSwgdHlwZW5hbWUgX0lJdGVyMj4KICAgIGJvb2wKICAgIGluY2x1ZGVzKF9JSXRlcjEsIF9J
SXRlcjEsIF9JSXRlcjIsIF9JSXRlcjIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIxLCB0
eXBlbmFtZSBfSUl0ZXIyLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGJvb2wKICAgIGluY2x1ZGVz
KF9JSXRlcjEsIF9JSXRlcjEsIF9JSXRlcjIsIF9JSXRlcjIsIF9Db21wYXJlKTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0JJdGVyPgogICAgdm9pZAogICAgaW5wbGFjZV9tZXJnZShfQkl0ZXIsIF9C
SXRlciwgX0JJdGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JJdGVyLCB0eXBlbmFtZSBfQ29t
cGFyZT4KICAgIHZvaWQKICAgIGlucGxhY2VfbWVyZ2UoX0JJdGVyLCBfQkl0ZXIsIF9CSXRlciwg
X0NvbXBhcmUpOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JBSXRlcj4KICAgIGJvb2wKICAgIGlz
X2hlYXAoX1JBSXRlciwgX1JBSXRlcik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SQUl0ZXIsIHR5
cGVuYW1lIF9Db21wYXJlPgogICAgYm9vbAogICAgaXNfaGVhcChfUkFJdGVyLCBfUkFJdGVyLCBf
Q29tcGFyZSk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SQUl0ZXI+CiAgICBfUkFJdGVyCiAgICBp
c19oZWFwX3VudGlsKF9SQUl0ZXIsIF9SQUl0ZXIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUkFJ
dGVyLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIF9SQUl0ZXIKICAgIGlzX2hlYXBfdW50aWwoX1JB
SXRlciwgX1JBSXRlciwgX0NvbXBhcmUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIsIHR5
cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBib29sCiAgICBpc19wYXJ0aXRpb25lZChfSUl0ZXIsIF9J
SXRlciwgX1ByZWRpY2F0ZSk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9GSXRlcjEsIHR5cGVuYW1l
IF9GSXRlcjI+CiAgICBib29sCiAgICBpc19wZXJtdXRhdGlvbihfRkl0ZXIxLCBfRkl0ZXIxLCBf
Rkl0ZXIyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVyMSwgdHlwZW5hbWUgX0ZJdGVyMiwK
ICAgIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+CiAgICBib29sCiAgICBpc19wZXJtdXRhdGlv
bihfRkl0ZXIxLCBfRkl0ZXIxLCBfRkl0ZXIyLCBfQmluYXJ5UHJlZGljYXRlKTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0ZJdGVyPgogICAgYm9vbAogICAgaXNfc29ydGVkKF9GSXRlciwgX0ZJdGVy
KTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVyLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGJv
b2wKICAgIGlzX3NvcnRlZChfRkl0ZXIsIF9GSXRlciwgX0NvbXBhcmUpOwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfRkl0ZXI+CiAgICBfRkl0ZXIKICAgIGlzX3NvcnRlZF91bnRpbChfRkl0ZXIsIF9G
SXRlcik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9GSXRlciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAg
ICBfRkl0ZXIKICAgIGlzX3NvcnRlZF91bnRpbChfRkl0ZXIsIF9GSXRlciwgX0NvbXBhcmUpOwoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVyMSwgdHlwZW5hbWUgX0ZJdGVyMj4KICAgIHZvaWQK
ICAgIGl0ZXJfc3dhcChfRkl0ZXIxLCBfRkl0ZXIyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJ
dGVyLCB0eXBlbmFtZSBfVHA+CiAgICBfRkl0ZXIKICAgIGxvd2VyX2JvdW5kKF9GSXRlciwgX0ZJ
dGVyLCBjb25zdCBfVHAmKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVyLCB0eXBlbmFtZSBf
VHAsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgX0ZJdGVyCiAgICBsb3dlcl9ib3VuZChfRkl0ZXIs
IF9GSXRlciwgY29uc3QgX1RwJiwgX0NvbXBhcmUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUkFJ
dGVyPgogICAgdm9pZAogICAgbWFrZV9oZWFwKF9SQUl0ZXIsIF9SQUl0ZXIpOwoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUkFJdGVyLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIHZvaWQKICAgIG1ha2Vf
aGVhcChfUkFJdGVyLCBfUkFJdGVyLCBfQ29tcGFyZSk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICAgIGNvbnN0IF9UcCYKICAgIG1heChjb25zdCBfVHAmLCBjb25zdCBfVHAmKTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGNvbnN0IF9UcCYKICAg
IG1heChjb25zdCBfVHAmLCBjb25zdCBfVHAmLCBfQ29tcGFyZSk7CgoKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIGNvbnN0IF9UcCYKICAgIG1pbihjb25zdCBfVHAmLCBjb25zdCBfVHAm
KTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGNvbnN0
IF9UcCYKICAgIG1pbihjb25zdCBfVHAmLCBjb25zdCBfVHAmLCBfQ29tcGFyZSk7CgoKCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHBhaXI8Y29uc3QgX1RwJiwgY29uc3QgX1RwJj4KICAg
IG1pbm1heChjb25zdCBfVHAmLCBjb25zdCBfVHAmKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
LCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIHBhaXI8Y29uc3QgX1RwJiwgY29uc3QgX1RwJj4KICAg
IG1pbm1heChjb25zdCBfVHAmLCBjb25zdCBfVHAmLCBfQ29tcGFyZSk7CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9GSXRlcj4KICAgIHBhaXI8X0ZJdGVyLCBfRkl0ZXI+CiAgICBtaW5tYXhfZWxlbWVu
dChfRkl0ZXIsIF9GSXRlcik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9GSXRlciwgdHlwZW5hbWUg
X0NvbXBhcmU+CiAgICBwYWlyPF9GSXRlciwgX0ZJdGVyPgogICAgbWlubWF4X2VsZW1lbnQoX0ZJ
dGVyLCBfRkl0ZXIsIF9Db21wYXJlKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgX1Rw
CiAgICBtaW4oaW5pdGlhbGl6ZXJfbGlzdDxfVHA+KTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
LCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIF9UcAogICAgbWluKGluaXRpYWxpemVyX2xpc3Q8X1Rw
PiwgX0NvbXBhcmUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBfVHAKICAgIG1heChp
bml0aWFsaXplcl9saXN0PF9UcD4pOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1l
IF9Db21wYXJlPgogICAgX1RwCiAgICBtYXgoaW5pdGlhbGl6ZXJfbGlzdDxfVHA+LCBfQ29tcGFy
ZSk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHBhaXI8X1RwLCBfVHA+CiAgICBtaW5t
YXgoaW5pdGlhbGl6ZXJfbGlzdDxfVHA+KTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBl
bmFtZSBfQ29tcGFyZT4KICAgIHBhaXI8X1RwLCBfVHA+CiAgICBtaW5tYXgoaW5pdGlhbGl6ZXJf
bGlzdDxfVHA+LCBfQ29tcGFyZSk7CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9CSXRlcj4KICAg
IGJvb2wKICAgIG5leHRfcGVybXV0YXRpb24oX0JJdGVyLCBfQkl0ZXIpOwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQkl0ZXIsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgYm9vbAogICAgbmV4dF9wZXJt
dXRhdGlvbihfQkl0ZXIsIF9CSXRlciwgX0NvbXBhcmUpOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0lJdGVyLCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgYm9vbAogICAgbm9uZV9vZihfSUl0ZXIs
IF9JSXRlciwgX1ByZWRpY2F0ZSk7CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIsIHR5
cGVuYW1lIF9SQUl0ZXI+CiAgICBfUkFJdGVyCiAgICBwYXJ0aWFsX3NvcnRfY29weShfSUl0ZXIs
IF9JSXRlciwgX1JBSXRlciwgX1JBSXRlcik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSXRlciwg
dHlwZW5hbWUgX1JBSXRlciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfUkFJdGVyCiAgICBwYXJ0
aWFsX3NvcnRfY29weShfSUl0ZXIsIF9JSXRlciwgX1JBSXRlciwgX1JBSXRlciwgX0NvbXBhcmUp
OwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIsIHR5cGVuYW1lIF9PSXRlcjEsCiAgICB0
eXBlbmFtZSBfT0l0ZXIyLCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgcGFpcjxfT0l0ZXIxLCBf
T0l0ZXIyPgogICAgcGFydGl0aW9uX2NvcHkoX0lJdGVyLCBfSUl0ZXIsIF9PSXRlcjEsIF9PSXRl
cjIsIF9QcmVkaWNhdGUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXIsIHR5cGVuYW1lIF9Q
cmVkaWNhdGU+CiAgICBfRkl0ZXIKICAgIHBhcnRpdGlvbl9wb2ludChfRkl0ZXIsIF9GSXRlciwg
X1ByZWRpY2F0ZSk7CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUkFJdGVyPgogICAgdm9pZAogICAg
cG9wX2hlYXAoX1JBSXRlciwgX1JBSXRlcik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SQUl0ZXIs
IHR5cGVuYW1lIF9Db21wYXJlPgogICAgdm9pZAogICAgcG9wX2hlYXAoX1JBSXRlciwgX1JBSXRl
ciwgX0NvbXBhcmUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQkl0ZXI+CiAgICBib29sCiAgICBw
cmV2X3Blcm11dGF0aW9uKF9CSXRlciwgX0JJdGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JJ
dGVyLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGJvb2wKICAgIHByZXZfcGVybXV0YXRpb24oX0JJ
dGVyLCBfQkl0ZXIsIF9Db21wYXJlKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JBSXRlcj4KICAg
IHZvaWQKICAgIHB1c2hfaGVhcChfUkFJdGVyLCBfUkFJdGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1JBSXRlciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBwdXNoX2hlYXAoX1JB
SXRlciwgX1JBSXRlciwgX0NvbXBhcmUpOwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9GSXRlciwg
dHlwZW5hbWUgX1RwPgogICAgX0ZJdGVyCiAgICByZW1vdmUoX0ZJdGVyLCBfRkl0ZXIsIGNvbnN0
IF9UcCYpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXIsIHR5cGVuYW1lIF9QcmVkaWNhdGU+
CiAgICBfRkl0ZXIKICAgIHJlbW92ZV9pZihfRkl0ZXIsIF9GSXRlciwgX1ByZWRpY2F0ZSk7Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9JSXRlciwgdHlwZW5hbWUgX09JdGVyLCB0eXBlbmFtZSBfVHA+
CiAgICBfT0l0ZXIKICAgIHJlbW92ZV9jb3B5KF9JSXRlciwgX0lJdGVyLCBfT0l0ZXIsIGNvbnN0
IF9UcCYpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIsIHR5cGVuYW1lIF9PSXRlciwgdHlw
ZW5hbWUgX1ByZWRpY2F0ZT4KICAgIF9PSXRlcgogICAgcmVtb3ZlX2NvcHlfaWYoX0lJdGVyLCBf
SUl0ZXIsIF9PSXRlciwgX1ByZWRpY2F0ZSk7CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVy
LCB0eXBlbmFtZSBfT0l0ZXIsIHR5cGVuYW1lIF9UcD4KICAgIF9PSXRlcgogICAgcmVwbGFjZV9j
b3B5KF9JSXRlciwgX0lJdGVyLCBfT0l0ZXIsIGNvbnN0IF9UcCYsIGNvbnN0IF9UcCYpOwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlciwgdHlwZW5hbWUgX09JdGVyLCB0eXBlbmFtZSBfUHJlZGlj
YXRlLCB0eXBlbmFtZSBfVHA+CiAgICBfT0l0ZXIKICAgIHJlcGxhY2VfY29weV9pZihfSXRlciwg
X0l0ZXIsIF9PSXRlciwgX1ByZWRpY2F0ZSwgY29uc3QgX1RwJik7CgoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0JJdGVyPgogICAgdm9pZAogICAgcmV2ZXJzZShfQkl0ZXIsIF9CSXRlcik7CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9CSXRlciwgdHlwZW5hbWUgX09JdGVyPgogICAgX09JdGVyCiAgICBy
ZXZlcnNlX2NvcHkoX0JJdGVyLCBfQkl0ZXIsIF9PSXRlcik7CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9GSXRlcj4KICAgIHZvaWQKICAgIHJvdGF0ZShfRkl0ZXIsIF9GSXRlciwgX0ZJdGVyKTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVyLCB0eXBlbmFtZSBfT0l0ZXI+CiAgICBfT0l0ZXIKICAg
IHJvdGF0ZV9jb3B5KF9GSXRlciwgX0ZJdGVyLCBfRkl0ZXIsIF9PSXRlcik7CiMgNTM1ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMv
YWxnb3JpdGhtZndkLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUkFJdGVyLCB0eXBlbmFtZSBf
VUdlbmVyYXRvcj4KICAgIHZvaWQKICAgIHNodWZmbGUoX1JBSXRlciwgX1JBSXRlciwgX1VHZW5l
cmF0b3ImJik7CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUkFJdGVyPgogICAgdm9pZAogICAgc29y
dF9oZWFwKF9SQUl0ZXIsIF9SQUl0ZXIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUkFJdGVyLCB0
eXBlbmFtZSBfQ29tcGFyZT4KICAgIHZvaWQKICAgIHNvcnRfaGVhcChfUkFJdGVyLCBfUkFJdGVy
LCBfQ29tcGFyZSk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9CSXRlciwgdHlwZW5hbWUgX1ByZWRp
Y2F0ZT4KICAgIF9CSXRlcgogICAgc3RhYmxlX3BhcnRpdGlvbihfQkl0ZXIsIF9CSXRlciwgX1By
ZWRpY2F0ZSk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHZvaWQKICAgIHN3YXAoX1Rw
JiwgX1RwJikKCiAgICBub2V4Y2VwdChfX2FuZF88aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGli
bGU8X1RwPiwKICAgICAgICAgICAgIGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPF9UcD4+Ojp2
YWx1ZSkKCiAgICA7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgc2l6ZV90IF9ObT4KICAgIHZv
aWQKICAgIHN3YXAoX1RwICgmX19hKVtfTm1dLCBfVHAgKCZfX2IpW19ObV0pCgogICAgbm9leGNl
cHQobm9leGNlcHQoc3dhcCgqX19hLCAqX19iKSkpCgogICAgOwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRkl0ZXIxLCB0eXBlbmFtZSBfRkl0ZXIyPgogICAgX0ZJdGVyMgogICAgc3dhcF9yYW5nZXMo
X0ZJdGVyMSwgX0ZJdGVyMSwgX0ZJdGVyMik7CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVy
PgogICAgX0ZJdGVyCiAgICB1bmlxdWUoX0ZJdGVyLCBfRkl0ZXIpOwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfRkl0ZXIsIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+CiAgICBfRkl0ZXIKICAgIHVu
aXF1ZShfRkl0ZXIsIF9GSXRlciwgX0JpbmFyeVByZWRpY2F0ZSk7CgoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0ZJdGVyLCB0eXBlbmFtZSBfVHA+CiAgICBfRkl0ZXIKICAgIHVwcGVyX2JvdW5kKF9G
SXRlciwgX0ZJdGVyLCBjb25zdCBfVHAmKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVyLCB0
eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgX0ZJdGVyCiAgICB1cHBlcl9ib3Vu
ZChfRkl0ZXIsIF9GSXRlciwgY29uc3QgX1RwJiwgX0NvbXBhcmUpOwoKCgoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ZJdGVyPgogICAgX0ZJdGVyCiAgICBhZGphY2VudF9maW5kKF9GSXRlciwgX0ZJ
dGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVyLCB0eXBlbmFtZSBfQmluYXJ5UHJlZGlj
YXRlPgogICAgX0ZJdGVyCiAgICBhZGphY2VudF9maW5kKF9GSXRlciwgX0ZJdGVyLCBfQmluYXJ5
UHJlZGljYXRlKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyLCB0eXBlbmFtZSBfVHA+CiAg
ICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lJdGVyPjo6ZGlmZmVyZW5jZV90eXBlCiAgICBj
b3VudChfSUl0ZXIsIF9JSXRlciwgY29uc3QgX1RwJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9J
SXRlciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxf
SUl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUKICAgIGNvdW50X2lmKF9JSXRlciwgX0lJdGVyLCBfUHJl
ZGljYXRlKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyMSwgdHlwZW5hbWUgX0lJdGVyMj4K
ICAgIGJvb2wKICAgIGVxdWFsKF9JSXRlcjEsIF9JSXRlcjEsIF9JSXRlcjIpOwoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSUl0ZXIxLCB0eXBlbmFtZSBfSUl0ZXIyLCB0eXBlbmFtZSBfQmluYXJ5UHJl
ZGljYXRlPgogICAgYm9vbAogICAgZXF1YWwoX0lJdGVyMSwgX0lJdGVyMSwgX0lJdGVyMiwgX0Jp
bmFyeVByZWRpY2F0ZSk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSXRlciwgdHlwZW5hbWUgX1Rw
PgogICAgX0lJdGVyCiAgICBmaW5kKF9JSXRlciwgX0lJdGVyLCBjb25zdCBfVHAmKTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0ZJdGVyMSwgdHlwZW5hbWUgX0ZJdGVyMj4KICAgIF9GSXRlcjEKICAg
IGZpbmRfZmlyc3Rfb2YoX0ZJdGVyMSwgX0ZJdGVyMSwgX0ZJdGVyMiwgX0ZJdGVyMik7CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9GSXRlcjEsIHR5cGVuYW1lIF9GSXRlcjIsIHR5cGVuYW1lIF9CaW5h
cnlQcmVkaWNhdGU+CiAgICBfRkl0ZXIxCiAgICBmaW5kX2ZpcnN0X29mKF9GSXRlcjEsIF9GSXRl
cjEsIF9GSXRlcjIsIF9GSXRlcjIsIF9CaW5hcnlQcmVkaWNhdGUpOwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfSUl0ZXIsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBfSUl0ZXIKICAgIGZpbmRfaWYo
X0lJdGVyLCBfSUl0ZXIsIF9QcmVkaWNhdGUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIs
IHR5cGVuYW1lIF9GdW5jdD4KICAgIF9GdW5jdAogICAgZm9yX2VhY2goX0lJdGVyLCBfSUl0ZXIs
IF9GdW5jdCk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9GSXRlciwgdHlwZW5hbWUgX0dlbmVyYXRv
cj4KICAgIHZvaWQKICAgIGdlbmVyYXRlKF9GSXRlciwgX0ZJdGVyLCBfR2VuZXJhdG9yKTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX09JdGVyLCB0eXBlbmFtZSBfU2l6ZSwgdHlwZW5hbWUgX0dlbmVy
YXRvcj4KICAgIF9PSXRlcgogICAgZ2VuZXJhdGVfbihfT0l0ZXIsIF9TaXplLCBfR2VuZXJhdG9y
KTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyMSwgdHlwZW5hbWUgX0lJdGVyMj4KICAgIGJv
b2wKICAgIGxleGljb2dyYXBoaWNhbF9jb21wYXJlKF9JSXRlcjEsIF9JSXRlcjEsIF9JSXRlcjIs
IF9JSXRlcjIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIxLCB0eXBlbmFtZSBfSUl0ZXIy
LCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGJvb2wKICAgIGxleGljb2dyYXBoaWNhbF9jb21wYXJl
KF9JSXRlcjEsIF9JSXRlcjEsIF9JSXRlcjIsIF9JSXRlcjIsIF9Db21wYXJlKTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0ZJdGVyPgogICAgX0ZJdGVyCiAgICBtYXhfZWxlbWVudChfRkl0ZXIsIF9G
SXRlcik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9GSXRlciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAg
ICBfRkl0ZXIKICAgIG1heF9lbGVtZW50KF9GSXRlciwgX0ZJdGVyLCBfQ29tcGFyZSk7CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9JSXRlcjEsIHR5cGVuYW1lIF9JSXRlcjIsIHR5cGVuYW1lIF9PSXRl
cj4KICAgIF9PSXRlcgogICAgbWVyZ2UoX0lJdGVyMSwgX0lJdGVyMSwgX0lJdGVyMiwgX0lJdGVy
MiwgX09JdGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyMSwgdHlwZW5hbWUgX0lJdGVy
MiwgdHlwZW5hbWUgX09JdGVyLAogICAgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfT0l0ZXIKICAg
IG1lcmdlKF9JSXRlcjEsIF9JSXRlcjEsIF9JSXRlcjIsIF9JSXRlcjIsIF9PSXRlciwgX0NvbXBh
cmUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXI+CiAgICBfRkl0ZXIKICAgIG1pbl9lbGVt
ZW50KF9GSXRlciwgX0ZJdGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVyLCB0eXBlbmFt
ZSBfQ29tcGFyZT4KICAgIF9GSXRlcgogICAgbWluX2VsZW1lbnQoX0ZJdGVyLCBfRkl0ZXIsIF9D
b21wYXJlKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyMSwgdHlwZW5hbWUgX0lJdGVyMj4K
ICAgIHBhaXI8X0lJdGVyMSwgX0lJdGVyMj4KICAgIG1pc21hdGNoKF9JSXRlcjEsIF9JSXRlcjEs
IF9JSXRlcjIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIxLCB0eXBlbmFtZSBfSUl0ZXIy
LCB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAgcGFpcjxfSUl0ZXIxLCBfSUl0ZXIyPgog
ICAgbWlzbWF0Y2goX0lJdGVyMSwgX0lJdGVyMSwgX0lJdGVyMiwgX0JpbmFyeVByZWRpY2F0ZSk7
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SQUl0ZXI+CiAgICB2b2lkCiAgICBudGhfZWxlbWVudChf
UkFJdGVyLCBfUkFJdGVyLCBfUkFJdGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JBSXRlciwg
dHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBudGhfZWxlbWVudChfUkFJdGVyLCBfUkFJ
dGVyLCBfUkFJdGVyLCBfQ29tcGFyZSk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SQUl0ZXI+CiAg
ICB2b2lkCiAgICBwYXJ0aWFsX3NvcnQoX1JBSXRlciwgX1JBSXRlciwgX1JBSXRlcik7CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9SQUl0ZXIsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgdm9pZAogICAg
cGFydGlhbF9zb3J0KF9SQUl0ZXIsIF9SQUl0ZXIsIF9SQUl0ZXIsIF9Db21wYXJlKTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0JJdGVyLCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgX0JJdGVyCiAg
ICBwYXJ0aXRpb24oX0JJdGVyLCBfQkl0ZXIsIF9QcmVkaWNhdGUpOwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUkFJdGVyPgogICAgdm9pZAogICAgcmFuZG9tX3NodWZmbGUoX1JBSXRlciwgX1JBSXRl
cik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SQUl0ZXIsIHR5cGVuYW1lIF9HZW5lcmF0b3I+CiAg
ICB2b2lkCiAgICByYW5kb21fc2h1ZmZsZShfUkFJdGVyLCBfUkFJdGVyLAoKICAgICBfR2VuZXJh
dG9yJiYpOwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXIsIHR5cGVuYW1lIF9UcD4KICAg
IHZvaWQKICAgIHJlcGxhY2UoX0ZJdGVyLCBfRkl0ZXIsIGNvbnN0IF9UcCYsIGNvbnN0IF9UcCYp
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXIsIHR5cGVuYW1lIF9QcmVkaWNhdGUsIHR5cGVu
YW1lIF9UcD4KICAgIHZvaWQKICAgIHJlcGxhY2VfaWYoX0ZJdGVyLCBfRkl0ZXIsIF9QcmVkaWNh
dGUsIGNvbnN0IF9UcCYpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXIxLCB0eXBlbmFtZSBf
Rkl0ZXIyPgogICAgX0ZJdGVyMQogICAgc2VhcmNoKF9GSXRlcjEsIF9GSXRlcjEsIF9GSXRlcjIs
IF9GSXRlcjIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXIxLCB0eXBlbmFtZSBfRkl0ZXIy
LCB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAgX0ZJdGVyMQogICAgc2VhcmNoKF9GSXRl
cjEsIF9GSXRlcjEsIF9GSXRlcjIsIF9GSXRlcjIsIF9CaW5hcnlQcmVkaWNhdGUpOwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfRkl0ZXIsIHR5cGVuYW1lIF9TaXplLCB0eXBlbmFtZSBfVHA+CiAgICBf
Rkl0ZXIKICAgIHNlYXJjaF9uKF9GSXRlciwgX0ZJdGVyLCBfU2l6ZSwgY29uc3QgX1RwJik7Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9GSXRlciwgdHlwZW5hbWUgX1NpemUsIHR5cGVuYW1lIF9UcCwK
ICAgIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+CiAgICBfRkl0ZXIKICAgIHNlYXJjaF9uKF9G
SXRlciwgX0ZJdGVyLCBfU2l6ZSwgY29uc3QgX1RwJiwgX0JpbmFyeVByZWRpY2F0ZSk7CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9JSXRlcjEsIHR5cGVuYW1lIF9JSXRlcjIsIHR5cGVuYW1lIF9PSXRl
cj4KICAgIF9PSXRlcgogICAgc2V0X2RpZmZlcmVuY2UoX0lJdGVyMSwgX0lJdGVyMSwgX0lJdGVy
MiwgX0lJdGVyMiwgX09JdGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyMSwgdHlwZW5h
bWUgX0lJdGVyMiwgdHlwZW5hbWUgX09JdGVyLAogICAgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBf
T0l0ZXIKICAgIHNldF9kaWZmZXJlbmNlKF9JSXRlcjEsIF9JSXRlcjEsIF9JSXRlcjIsIF9JSXRl
cjIsIF9PSXRlciwgX0NvbXBhcmUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIxLCB0eXBl
bmFtZSBfSUl0ZXIyLCB0eXBlbmFtZSBfT0l0ZXI+CiAgICBfT0l0ZXIKICAgIHNldF9pbnRlcnNl
Y3Rpb24oX0lJdGVyMSwgX0lJdGVyMSwgX0lJdGVyMiwgX0lJdGVyMiwgX09JdGVyKTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0lJdGVyMSwgdHlwZW5hbWUgX0lJdGVyMiwgdHlwZW5hbWUgX09JdGVy
LAogICAgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfT0l0ZXIKICAgIHNldF9pbnRlcnNlY3Rpb24o
X0lJdGVyMSwgX0lJdGVyMSwgX0lJdGVyMiwgX0lJdGVyMiwgX09JdGVyLCBfQ29tcGFyZSk7Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9JSXRlcjEsIHR5cGVuYW1lIF9JSXRlcjIsIHR5cGVuYW1lIF9P
SXRlcj4KICAgIF9PSXRlcgogICAgc2V0X3N5bW1ldHJpY19kaWZmZXJlbmNlKF9JSXRlcjEsIF9J
SXRlcjEsIF9JSXRlcjIsIF9JSXRlcjIsIF9PSXRlcik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9J
SXRlcjEsIHR5cGVuYW1lIF9JSXRlcjIsIHR5cGVuYW1lIF9PSXRlciwKICAgIHR5cGVuYW1lIF9D
b21wYXJlPgogICAgX09JdGVyCiAgICBzZXRfc3ltbWV0cmljX2RpZmZlcmVuY2UoX0lJdGVyMSwg
X0lJdGVyMSwgX0lJdGVyMiwgX0lJdGVyMiwKICAgICAgICBfT0l0ZXIsIF9Db21wYXJlKTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyMSwgdHlwZW5hbWUgX0lJdGVyMiwgdHlwZW5hbWUgX09J
dGVyPgogICAgX09JdGVyCiAgICBzZXRfdW5pb24oX0lJdGVyMSwgX0lJdGVyMSwgX0lJdGVyMiwg
X0lJdGVyMiwgX09JdGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyMSwgdHlwZW5hbWUg
X0lJdGVyMiwgdHlwZW5hbWUgX09JdGVyLAogICAgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfT0l0
ZXIKICAgIHNldF91bmlvbihfSUl0ZXIxLCBfSUl0ZXIxLCBfSUl0ZXIyLCBfSUl0ZXIyLCBfT0l0
ZXIsIF9Db21wYXJlKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JBSXRlcj4KICAgIHZvaWQKICAg
IHNvcnQoX1JBSXRlciwgX1JBSXRlcik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SQUl0ZXIsIHR5
cGVuYW1lIF9Db21wYXJlPgogICAgdm9pZAogICAgc29ydChfUkFJdGVyLCBfUkFJdGVyLCBfQ29t
cGFyZSk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SQUl0ZXI+CiAgICB2b2lkCiAgICBzdGFibGVf
c29ydChfUkFJdGVyLCBfUkFJdGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JBSXRlciwgdHlw
ZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBzdGFibGVfc29ydChfUkFJdGVyLCBfUkFJdGVy
LCBfQ29tcGFyZSk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSXRlciwgdHlwZW5hbWUgX09JdGVy
LCB0eXBlbmFtZSBfVW5hcnlPcGVyYXRpb24+CiAgICBfT0l0ZXIKICAgIHRyYW5zZm9ybShfSUl0
ZXIsIF9JSXRlciwgX09JdGVyLCBfVW5hcnlPcGVyYXRpb24pOwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSUl0ZXIxLCB0eXBlbmFtZSBfSUl0ZXIyLCB0eXBlbmFtZSBfT0l0ZXIsCiAgICB0eXBlbmFt
ZSBfQmluYXJ5T3BlcmF0aW9uPgogICAgX09JdGVyCiAgICB0cmFuc2Zvcm0oX0lJdGVyMSwgX0lJ
dGVyMSwgX0lJdGVyMiwgX09JdGVyLCBfQmluYXJ5T3BlcmF0aW9uKTsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0lJdGVyLCB0eXBlbmFtZSBfT0l0ZXI+CiAgICBfT0l0ZXIKICAgIHVuaXF1ZV9jb3B5
KF9JSXRlciwgX0lJdGVyLCBfT0l0ZXIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIsIHR5
cGVuYW1lIF9PSXRlciwgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAgIF9PSXRlcgogICAg
dW5pcXVlX2NvcHkoX0lJdGVyLCBfSUl0ZXIsIF9PSXRlciwgX0JpbmFyeVByZWRpY2F0ZSk7CgoK
fQojIDYxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9oZWFwLmgiIDEgMwojIDU2
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvc3RsX2hlYXAuaCIgMwojZGVmaW5lIF9TVExfSEVBUF9IIDEKCgoKCgpuYW1lc3BhY2Ug
c3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKCgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlz
dGFuY2UsCiAgICB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIF9EaXN0YW5jZQogICAgX19pc19oZWFw
X3VudGlsKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfRGlzdGFuY2UgX19uLAogICAg
ICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIF9EaXN0YW5jZSBfX3BhcmVudCA9IDA7CiAg
ICAgIGZvciAoX0Rpc3RhbmNlIF9fY2hpbGQgPSAxOyBfX2NoaWxkIDwgX19uOyArK19fY2hpbGQp
CiB7CiAgIGlmIChfX2NvbXAoX19maXJzdCArIF9fcGFyZW50LCBfX2ZpcnN0ICsgX19jaGlsZCkp
CiAgICAgcmV0dXJuIF9fY2hpbGQ7CiAgIGlmICgoX19jaGlsZCAmIDEpID09IDApCiAgICAgKytf
X3BhcmVudDsKIH0KICAgICAgcmV0dXJuIF9fbjsKICAgIH0KCgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5jZT4KICAgIGlubGluZSBi
b29sCiAgICBfX2lzX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9EaXN0YW5j
ZSBfX24pCiAgICB7CiAgICAgIHJldHVybiBzdGQ6Ol9faXNfaGVhcF91bnRpbChfX2ZpcnN0LCBf
X24sCiAgIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9sZXNzX2l0ZXIoKSkgPT0gX19uOwogICAg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9D
b21wYXJlLAogICAgdHlwZW5hbWUgX0Rpc3RhbmNlPgogICAgaW5saW5lIGJvb2wKICAgIF9faXNf
aGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX0NvbXBhcmUgX19jb21wLCBfRGlz
dGFuY2UgX19uKQogICAgewogICAgICByZXR1cm4gc3RkOjpfX2lzX2hlYXBfdW50aWwoX19maXJz
dCwgX19uLAogX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2NvbXBfaXRlcihfX2NvbXApKSA9PSBf
X247CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAg
IGlubGluZSBib29sCiAgICBfX2lzX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3Qs
IF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QpCiAgICB7IHJldHVybiBzdGQ6Ol9faXNfaGVh
cChfX2ZpcnN0LCBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCkpOyB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBp
bmxpbmUgYm9vbAogICAgX19pc19oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgX0NvbXBhcmUgX19jb21wKQogICAg
eyByZXR1cm4gc3RkOjpfX2lzX2hlYXAoX19maXJzdCwgX19jb21wLCBzdGQ6OmRpc3RhbmNlKF9f
Zmlyc3QsIF9fbGFzdCkpOyB9CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciwgdHlwZW5hbWUgX0Rpc3RhbmNlLCB0eXBlbmFtZSBfVHAsCiAgICB0eXBlbmFtZSBf
Q29tcGFyZT4KICAgIHZvaWQKICAgIF9fcHVzaF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2ZpcnN0LAogIF9EaXN0YW5jZSBfX2hvbGVJbmRleCwgX0Rpc3RhbmNlIF9fdG9wSW5kZXgsIF9U
cCBfX3ZhbHVlLAogIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAgX0Rpc3RhbmNlIF9fcGFy
ZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOwogICAgICB3aGlsZSAoX19ob2xlSW5kZXggPiBf
X3RvcEluZGV4ICYmIF9fY29tcChfX2ZpcnN0ICsgX19wYXJlbnQsIF9fdmFsdWUpKQogewogICAq
KF9fZmlyc3QgKyBfX2hvbGVJbmRleCkgPSBzdGQ6Om1vdmUoKihfX2ZpcnN0ICsgX19wYXJlbnQp
KTsKICAgX19ob2xlSW5kZXggPSBfX3BhcmVudDsKICAgX19wYXJlbnQgPSAoX19ob2xlSW5kZXgg
LSAxKSAvIDI7CiB9CiAgICAgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9IHN0ZDo6bW92ZShf
X3ZhbHVlKTsKICAgIH0KIyAxNDggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfaGVhcC5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgogICAgaW5saW5lIHZvaWQKICAgIHB1c2hfaGVhcChf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFz
dCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQogICBfVmFsdWVUeXBlOwogICAgICB0eXBlZGVmIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNl
X3R5cGUKICAgX0Rpc3RhbmNlVHlwZTsKCgogICAgIAoKICAgICAKICAgICAgOwogICAgICA7Cgog
ICAgICBfVmFsdWVUeXBlIF9fdmFsdWUgPSBzdGQ6Om1vdmUoKihfX2xhc3QgLSAxKSk7CiAgICAg
IHN0ZDo6X19wdXNoX2hlYXAoX19maXJzdCwgX0Rpc3RhbmNlVHlwZSgoX19sYXN0IC0gX19maXJz
dCkgLSAxKSwKICAgICAgICAgX0Rpc3RhbmNlVHlwZSgwKSwgc3RkOjptb3ZlKF9fdmFsdWUpLAog
ICAgICAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfbGVzc192YWwoKSk7CiAgICB9CiMgMTgy
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvc3RsX2hlYXAuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVy
YXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgdm9pZAogICAgcHVzaF9oZWFwKF9S
YW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0
LAogICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiAgIF9WYWx1
ZVR5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nl
c3NJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogICBfRGlzdGFuY2VUeXBlOwoKCiAgICAgCgog
ICAgICA7CiAgICAgIDsKCiAgICAgIF9WYWx1ZVR5cGUgX192YWx1ZSA9IHN0ZDo6bW92ZSgqKF9f
bGFzdCAtIDEpKTsKICAgICAgc3RkOjpfX3B1c2hfaGVhcChfX2ZpcnN0LCBfRGlzdGFuY2VUeXBl
KChfX2xhc3QgLSBfX2ZpcnN0KSAtIDEpLAogICAgICAgICBfRGlzdGFuY2VUeXBlKDApLCBzdGQ6
Om1vdmUoX192YWx1ZSksCiAgICAgICAgIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9jb21wX3Zh
bChfX2NvbXApKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yLCB0eXBlbmFtZSBfRGlzdGFuY2UsCiAgICB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21w
YXJlPgogICAgdm9pZAogICAgX19hZGp1c3RfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19m
aXJzdCwgX0Rpc3RhbmNlIF9faG9sZUluZGV4LAogICAgX0Rpc3RhbmNlIF9fbGVuLCBfVHAgX192
YWx1ZSwgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICBjb25zdCBfRGlzdGFuY2UgX190b3BJ
bmRleCA9IF9faG9sZUluZGV4OwogICAgICBfRGlzdGFuY2UgX19zZWNvbmRDaGlsZCA9IF9faG9s
ZUluZGV4OwogICAgICB3aGlsZSAoX19zZWNvbmRDaGlsZCA8IChfX2xlbiAtIDEpIC8gMikKIHsK
ICAgX19zZWNvbmRDaGlsZCA9IDIgKiAoX19zZWNvbmRDaGlsZCArIDEpOwogICBpZiAoX19jb21w
KF9fZmlyc3QgKyBfX3NlY29uZENoaWxkLAogICAgICAgX19maXJzdCArIChfX3NlY29uZENoaWxk
IC0gMSkpKQogICAgIF9fc2Vjb25kQ2hpbGQtLTsKICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgp
ID0gc3RkOjptb3ZlKCooX19maXJzdCArIF9fc2Vjb25kQ2hpbGQpKTsKICAgX19ob2xlSW5kZXgg
PSBfX3NlY29uZENoaWxkOwogfQogICAgICBpZiAoKF9fbGVuICYgMSkgPT0gMCAmJiBfX3NlY29u
ZENoaWxkID09IChfX2xlbiAtIDIpIC8gMikKIHsKICAgX19zZWNvbmRDaGlsZCA9IDIgKiAoX19z
ZWNvbmRDaGlsZCArIDEpOwogICAqKF9fZmlyc3QgKyBfX2hvbGVJbmRleCkgPSBzdGQ6Om1vdmUo
KihfX2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQgLSAxKSkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA7CiAgIF9faG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZCAtIDE7CiB9CiAgICAg
IHN0ZDo6X19wdXNoX2hlYXAoX19maXJzdCwgX19ob2xlSW5kZXgsIF9fdG9wSW5kZXgsCiAgICAg
ICAgIHN0ZDo6bW92ZShfX3ZhbHVlKSwKICAgICAgICAgX19nbnVfY3h4OjpfX29wczo6X19pdGVy
X2NvbXBfdmFsKF9fY29tcCkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgaW5saW5lIHZvaWQKICAgIF9fcG9w
X2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX2xhc3QsCiAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fcmVzdWx0LCBfQ29tcGFy
ZSBfX2NvbXApCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9S
YW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGU7CiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OmRpZmZl
cmVuY2VfdHlwZQogX0Rpc3RhbmNlVHlwZTsKCiAgICAgIF9WYWx1ZVR5cGUgX192YWx1ZSA9IHN0
ZDo6bW92ZSgqX19yZXN1bHQpOwogICAgICAqX19yZXN1bHQgPSBzdGQ6Om1vdmUoKl9fZmlyc3Qp
OwogICAgICBzdGQ6Ol9fYWRqdXN0X2hlYXAoX19maXJzdCwgX0Rpc3RhbmNlVHlwZSgwKSwKICAg
IF9EaXN0YW5jZVR5cGUoX19sYXN0IC0gX19maXJzdCksCiAgICBzdGQ6Om1vdmUoX192YWx1ZSks
IF9fY29tcCk7CiAgICB9CiMgMjYxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2hlYXAuaCIgMwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAgIGlubGluZSB2b2lkCiAgICBwb3BfaGVhcChf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFz
dCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsKCgogICAgIAoKICAgICAKICAg
ICAgOwogICAgICA7CiAgICAgIDsKCiAgICAgIGlmIChfX2xhc3QgLSBfX2ZpcnN0ID4gMSkKIHsK
ICAgLS1fX2xhc3Q7CiAgIHN0ZDo6X19wb3BfaGVhcChfX2ZpcnN0LCBfX2xhc3QsIF9fbGFzdCwK
ICAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfbGVzc19pdGVyKCkpOwogfQogICAgfQojIDI5
NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9iaXRzL3N0bF9oZWFwLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgaW5saW5lIHZvaWQKICAgIHBvcF9oZWFwKF9S
YW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3Ig
X19sYXN0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CgogICAgIAoKICAgICAgOwogICAgICA7CiAg
ICAgIDsKCiAgICAgIGlmIChfX2xhc3QgLSBfX2ZpcnN0ID4gMSkKIHsKICAgLS1fX2xhc3Q7CiAg
IHN0ZDo6X19wb3BfaGVhcChfX2ZpcnN0LCBfX2xhc3QsIF9fbGFzdCwKICAgICBfX2dudV9jeHg6
Ol9fb3BzOjpfX2l0ZXJfY29tcF9pdGVyKF9fY29tcCkpOwogfQogICAgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgdm9p
ZAogICAgX19tYWtlX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB0eXBl
ZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1
ZV90eXBlCiAgIF9WYWx1ZVR5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJh
aXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogICBfRGlzdGFuY2VU
eXBlOwoKICAgICAgaWYgKF9fbGFzdCAtIF9fZmlyc3QgPCAyKQogcmV0dXJuOwoKICAgICAgY29u
c3QgX0Rpc3RhbmNlVHlwZSBfX2xlbiA9IF9fbGFzdCAtIF9fZmlyc3Q7CiAgICAgIF9EaXN0YW5j
ZVR5cGUgX19wYXJlbnQgPSAoX19sZW4gLSAyKSAvIDI7CiAgICAgIHdoaWxlICh0cnVlKQogewog
ICBfVmFsdWVUeXBlIF9fdmFsdWUgPSBzdGQ6Om1vdmUoKihfX2ZpcnN0ICsgX19wYXJlbnQpKTsK
ICAgc3RkOjpfX2FkanVzdF9oZWFwKF9fZmlyc3QsIF9fcGFyZW50LCBfX2xlbiwgc3RkOjptb3Zl
KF9fdmFsdWUpLAogICAgICAgIF9fY29tcCk7CiAgIGlmIChfX3BhcmVudCA9PSAwKQogICAgIHJl
dHVybjsKICAgX19wYXJlbnQtLTsKIH0KICAgIH0KIyAzNDkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfaGVhcC5oIiAzCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgogICAgaW5saW5lIHZvaWQK
ICAgIG1ha2VfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsKCiAgICAgCgogICAgIAoKICAgICAgOwoKICAgICAgc3Rk
OjpfX21ha2VfaGVhcChfX2ZpcnN0LCBfX2xhc3QsCiAgICAgICAgIF9fZ251X2N4eDo6X19vcHM6
Ol9faXRlcl9sZXNzX2l0ZXIoKSk7CiAgICB9CiMgMzc0ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2hlYXAuaCIgMwogIHRl
bXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+
CiAgICBpbmxpbmUgdm9pZAogICAgbWFrZV9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2Zp
cnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgX0NvbXBhcmUgX19jb21w
KQogICAgewoKICAgICAKCiAgICAgIDsKCiAgICAgIHN0ZDo6X19tYWtlX2hlYXAoX19maXJzdCwg
X19sYXN0LAogICAgICAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfY29tcF9pdGVyKF9fY29t
cCkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5
cGVuYW1lIF9Db21wYXJlPgogICAgdm9pZAogICAgX19zb3J0X2hlYXAoX1JhbmRvbUFjY2Vzc0l0
ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgX0NvbXBhcmUg
X19jb21wKQogICAgewogICAgICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+IDEpCiB7CiAgIC0t
X19sYXN0OwogICBzdGQ6Ol9fcG9wX2hlYXAoX19maXJzdCwgX19sYXN0LCBfX2xhc3QsIF9fY29t
cCk7CiB9CiAgICB9CiMgNDA4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2hlYXAuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAgIGlubGluZSB2b2lkCiAgICBzb3J0X2hlYXAoX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3Qp
CiAgICB7CgogICAgIAoKICAgICAKCiAgICAgIDsKICAgICAgOwoKICAgICAgc3RkOjpfX3NvcnRf
aGVhcChfX2ZpcnN0LCBfX2xhc3QsCiAgICAgICAgIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9s
ZXNzX2l0ZXIoKSk7CiAgICB9CiMgNDM0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2hlYXAuaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxp
bmUgdm9pZAogICAgc29ydF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewoK
ICAgICAKCiAgICAgIDsKICAgICAgOwoKICAgICAgc3RkOjpfX3NvcnRfaGVhcChfX2ZpcnN0LCBf
X2xhc3QsCiAgICAgICAgIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9jb21wX2l0ZXIoX19jb21w
KSk7CiAgICB9CiMgNDYwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2hlYXAuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
YW5kb21BY2Nlc3NJdGVyYXRvcj4KICAgIGlubGluZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IKICAg
IGlzX2hlYXBfdW50aWwoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nl
c3NJdGVyYXRvciBfX2xhc3QpCiAgICB7CgogICAgIAoKICAgICAKCiAgICAgIDsKCiAgICAgIHJl
dHVybiBfX2ZpcnN0ICsKIHN0ZDo6X19pc19oZWFwX3VudGlsKF9fZmlyc3QsIHN0ZDo6ZGlzdGFu
Y2UoX19maXJzdCwgX19sYXN0KSwKICAgICAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfbGVz
c19pdGVyKCkpOwogICAgfQojIDQ4NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9oZWFwLmgiIDMKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgaW5saW5l
IF9SYW5kb21BY2Nlc3NJdGVyYXRvcgogICAgaXNfaGVhcF91bnRpbChfUmFuZG9tQWNjZXNzSXRl
cmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgIF9Db21wYXJl
IF9fY29tcCkKICAgIHsKCiAgICAgCgogICAgICA7CgogICAgICByZXR1cm4gX19maXJzdAogKyBz
dGQ6Ol9faXNfaGVhcF91bnRpbChfX2ZpcnN0LCBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9fbGFz
dCksCiAgICAgICAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfY29tcF9pdGVyKF9fY29tcCkp
OwogICAgfQojIDUwOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9iaXRzL3N0bF9oZWFwLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFu
ZG9tQWNjZXNzSXRlcmF0b3I+CiAgICBpbmxpbmUgYm9vbAogICAgaXNfaGVhcChfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsg
cmV0dXJuIHN0ZDo6aXNfaGVhcF91bnRpbChfX2ZpcnN0LCBfX2xhc3QpID09IF9fbGFzdDsgfQoj
IDUyMiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL3N0bF9oZWFwLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNz
SXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgaW5saW5lIGJvb2wKICAgIGlzX2hlYXAo
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xh
c3QsCiAgICAgX0NvbXBhcmUgX19jb21wKQogICAgeyByZXR1cm4gc3RkOjppc19oZWFwX3VudGls
KF9fZmlyc3QsIF9fbGFzdCwgX19jb21wKSA9PSBfX2xhc3Q7IH0KCgoKfQojIDYyICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3Rs
X2FsZ28uaCIgMiAzCgoKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvcmFuZG9tIiAxIDMKIyAzMCAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9yYW5kb20iIDMKI2RlZmluZSBf
R0xJQkNYWF9SQU5ET00gMQoKICAgICAgIAojIDMzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3JhbmRvbSIgMwoKCgoKCiMgMSAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9jbWF0aCIg
MSAzCiMgMzkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvY21hdGgiIDMKICAgICAgIAojIDQwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2NtYXRoIiAzCgoKCgojIDEgIi91c3IvaW5j
bHVkZS9tYXRoLmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMgNAojZGVmaW5l
IF9NQVRIX0ggMQoKCgpleHRlcm4gIkMiIHsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4
LWdudWVhYmloZi9iaXRzL2h1Z2VfdmFsLmgiIDEgMyA0CiMgMjcgIi91c3IvaW5jbHVkZS9hcm0t
bGludXgtZ251ZWFiaWhmL2JpdHMvaHVnZV92YWwuaCIgMyA0CiNkZWZpbmUgSFVHRV9WQUwgKF9f
YnVpbHRpbl9odWdlX3ZhbCgpKQojIDMzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMgNAoKIyAx
ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL2h1Z2VfdmFsZi5oIiAxIDMg
NAojIDI3ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL2h1Z2VfdmFsZi5o
IiAzIDQKI2RlZmluZSBIVUdFX1ZBTEYgKF9fYnVpbHRpbl9odWdlX3ZhbGYoKSkKIyAzNSAiL3Vz
ci9pbmNsdWRlL21hdGguaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVh
YmloZi9iaXRzL2h1Z2VfdmFsbC5oIiAxIDMgNAojIDI1ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4
LWdudWVhYmloZi9iaXRzL2h1Z2VfdmFsbC5oIiAzIDQKI2RlZmluZSBIVUdFX1ZBTEwgKF9fYnVp
bHRpbl9odWdlX3ZhbGwoKSkKIyAzNiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzIDQKCgojIDEg
Ii91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvaW5mLmgiIDEgMyA0CiMgMjYg
Ii91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvaW5mLmgiIDMgNAojZGVmaW5l
IElORklOSVRZIChfX2J1aWx0aW5faW5mZigpKQojIDM5ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAy
IDMgNAoKCiMgMSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9uYW4uaCIg
MSAzIDQKIyAyOCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9uYW4uaCIg
MyA0CiNkZWZpbmUgTkFOIChfX2J1aWx0aW5fbmFuZiAoIiIpKQojIDQyICIvdXNyL2luY2x1ZGUv
bWF0aC5oIiAyIDMgNAoKCgojIDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2Jp
dHMvbWF0aGRlZi5oIiAxIDMgNAojIDIzICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmlo
Zi9iaXRzL21hdGhkZWYuaCIgMyA0CiNkZWZpbmUgX01BVEhfSF9NQVRIREVGIDEKCgp0eXBlZGVm
IGZsb2F0IGZsb2F0X3Q7Cgp0eXBlZGVmIGRvdWJsZSBkb3VibGVfdDsKCgoKI2RlZmluZSBGUF9J
TE9HQjAgKC0yMTQ3NDgzNjQ3KQojZGVmaW5lIEZQX0lMT0dCTkFOICgyMTQ3NDgzNjQ3KQoKCgoK
I2RlZmluZSBGUF9GQVNUX0ZNQSAxCgoKCiNkZWZpbmUgRlBfRkFTVF9GTUFGIDEKCgoKI2RlZmlu
ZSBGUF9GQVNUX0ZNQUwgMQoKCgoKCgoKI2RlZmluZSBfX05PX0xPTkdfRE9VQkxFX01BVEggMQoj
IDQ2ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMgNAoKCgoKCgojZGVmaW5lIF9fTUFUSENBTEwo
ZnVuY3Rpb24sc3VmZml4LGFyZ3MpIF9fTUFUSERFQ0wgKF9NZG91YmxlXyxmdW5jdGlvbixzdWZm
aXgsIGFyZ3MpCgojZGVmaW5lIF9fTUFUSERFQ0wodHlwZSxmdW5jdGlvbixzdWZmaXgsYXJncykg
X19NQVRIREVDTF8xKHR5cGUsIGZ1bmN0aW9uLHN1ZmZpeCwgYXJncyk7IF9fTUFUSERFQ0xfMSh0
eXBlLCBfX0NPTkNBVChfXyxmdW5jdGlvbiksc3VmZml4LCBhcmdzKQoKCiNkZWZpbmUgX19NQVRI
Q0FMTFgoZnVuY3Rpb24sc3VmZml4LGFyZ3MsYXR0cmliKSBfX01BVEhERUNMWCAoX01kb3VibGVf
LGZ1bmN0aW9uLHN1ZmZpeCwgYXJncywgYXR0cmliKQoKI2RlZmluZSBfX01BVEhERUNMWCh0eXBl
LGZ1bmN0aW9uLHN1ZmZpeCxhcmdzLGF0dHJpYikgX19NQVRIREVDTF8xKHR5cGUsIGZ1bmN0aW9u
LHN1ZmZpeCwgYXJncykgX19hdHRyaWJ1dGVfXyAoYXR0cmliKTsgX19NQVRIREVDTF8xKHR5cGUs
IF9fQ09OQ0FUKF9fLGZ1bmN0aW9uKSxzdWZmaXgsIGFyZ3MpIF9fYXR0cmlidXRlX18gKGF0dHJp
YikKCgojZGVmaW5lIF9fTUFUSERFQ0xfMSh0eXBlLGZ1bmN0aW9uLHN1ZmZpeCxhcmdzKSBleHRl
cm4gdHlwZSBfX01BVEhfUFJFQ05BTUUoZnVuY3Rpb24sc3VmZml4KSBhcmdzIF9fVEhST1cKCgoj
ZGVmaW5lIF9NZG91YmxlXyBkb3VibGUKI2RlZmluZSBfX01BVEhfUFJFQ05BTUUobmFtZSxyKSBf
X0NPTkNBVChuYW1lLHIpCiNkZWZpbmUgX01kb3VibGVfQkVHSU5fTkFNRVNQQUNFIF9fQkVHSU5f
TkFNRVNQQUNFX1NURAojZGVmaW5lIF9NZG91YmxlX0VORF9OQU1FU1BBQ0UgX19FTkRfTkFNRVNQ
QUNFX1NURAojIDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvbWF0aGNh
bGxzLmgiIDEgMyA0CiMgNTIgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMv
bWF0aGNhbGxzLmgiIDMgNAoKCmV4dGVybiBkb3VibGUgYWNvcyAoZG91YmxlIF9feCkgdGhyb3cg
KCk7IGV4dGVybiBkb3VibGUgX19hY29zIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBk
b3VibGUgYXNpbiAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19hc2luIChk
b3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBkb3VibGUgYXRhbiAoZG91YmxlIF9feCkgdGhy
b3cgKCk7IGV4dGVybiBkb3VibGUgX19hdGFuIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVy
biBkb3VibGUgYXRhbjIgKGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g
ZG91YmxlIF9fYXRhbjIgKGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVy
biBkb3VibGUgY29zIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2NvcyAo
ZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIHNpbiAoZG91YmxlIF9feCkgdGhy
b3cgKCk7IGV4dGVybiBkb3VibGUgX19zaW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJu
IGRvdWJsZSB0YW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fdGFuIChk
b3VibGUgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBkb3VibGUgY29zaCAoZG91YmxlIF9feCkg
dGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19jb3NoIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4
dGVybiBkb3VibGUgc2luaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19z
aW5oIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBkb3VibGUgdGFuaCAoZG91YmxlIF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX190YW5oIChkb3VibGUgX194KSB0aHJvdyAoKTsK
CgoKCmV4dGVybiB2b2lkIHNpbmNvcyAoZG91YmxlIF9feCwgZG91YmxlICpfX3NpbngsIGRvdWJs
ZSAqX19jb3N4KSB0aHJvdyAoKTsgZXh0ZXJuIHZvaWQgX19zaW5jb3MgKGRvdWJsZSBfX3gsIGRv
dWJsZSAqX19zaW54LCBkb3VibGUgKl9fY29zeCkgdGhyb3cgKCkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKCgoKZXh0ZXJuIGRv
dWJsZSBhY29zaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19hY29zaCAo
ZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIGFzaW5oIChkb3VibGUgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2FzaW5oIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4
dGVybiBkb3VibGUgYXRhbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9f
YXRhbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGRvdWJsZSBleHAgKGRv
dWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZXhwIChkb3VibGUgX194KSB0aHJv
dyAoKTsKCgpleHRlcm4gZG91YmxlIGZyZXhwIChkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQp
IHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBv
bmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBsZGV4cCAoZG91YmxlIF9feCwgaW50IF9f
ZXhwb25lbnQpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbGRleHAgKGRvdWJsZSBfX3gsIGlu
dCBfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGxvZyAoZG91YmxlIF9feCkg
dGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19sb2cgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4
dGVybiBkb3VibGUgbG9nMTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9f
bG9nMTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbW9kZiAoZG91Ymxl
IF9feCwgZG91YmxlICpfX2lwdHIpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbW9kZiAoZG91
YmxlIF9feCwgZG91YmxlICpfX2lwdHIpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51
bGxfXyAoMikpKTsKCgoKCmV4dGVybiBkb3VibGUgZXhwMTAgKGRvdWJsZSBfX3gpIHRocm93ICgp
OyBleHRlcm4gZG91YmxlIF9fZXhwMTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRv
dWJsZSBwb3cxMCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19wb3cxMCAo
ZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGRvdWJsZSBleHBtMSAoZG91YmxlIF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19leHBtMSAoZG91YmxlIF9feCkgdGhyb3cgKCk7
CgoKZXh0ZXJuIGRvdWJsZSBsb2cxcCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3Vi
bGUgX19sb2cxcCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBsb2diIChk
b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xvZ2IgKGRvdWJsZSBfX3gpIHRo
cm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIGV4cDIgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBl
eHRlcm4gZG91YmxlIF9fZXhwMiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJs
ZSBsb2cyIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xvZzIgKGRvdWJs
ZSBfX3gpIHRocm93ICgpOwoKCgoKCgoKCmV4dGVybiBkb3VibGUgcG93IChkb3VibGUgX194LCBk
b3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3BvdyAoZG91YmxlIF9feCwgZG91
YmxlIF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBzcXJ0IChkb3VibGUgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3NxcnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCmV4
dGVybiBkb3VibGUgaHlwb3QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRl
cm4gZG91YmxlIF9faHlwb3QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgoK
CgpleHRlcm4gZG91YmxlIGNicnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl
IF9fY2JydCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKCgoKZXh0ZXJuIGRvdWJsZSBjZWls
IChkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVy
biBkb3VibGUgX19jZWlsIChkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBmYWJzIChkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19mYWJzIChkb3VibGUgX194
KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBm
bG9vciAoZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBl
eHRlcm4gZG91YmxlIF9fZmxvb3IgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGZtb2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBf
X3kpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZm1vZCAoZG91YmxlIF9feCwgZG91YmxlIF9f
eSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IF9faXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZSAo
ZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK
CgpleHRlcm4gaW50IGlzaW5mIChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgZmluaXRlIChkb3VibGUgX192YWx1ZSkgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgZHJlbSAo
ZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19kcmVtIChk
b3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBzaWduaWZp
Y2FuZCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zaWduaWZpY2FuZCAo
ZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGRvdWJsZSBjb3B5c2lnbiAoZG91Ymxl
IF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBl
eHRlcm4gZG91YmxlIF9fY29weXNpZ24gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBuYW4gKGNv
bnN0IGNoYXIgKl9fdGFnYikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBl
eHRlcm4gZG91YmxlIF9fbmFuIChjb25zdCBjaGFyICpfX3RhZ2IpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gaW50IF9faXNuYW4gKGRvdWJsZSBfX3Zh
bHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQg
aXNuYW4gKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKZXh0ZXJuIGRvdWJsZSBqMCAoZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBf
X2owIChkb3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIGoxIChkb3VibGUpIHRocm93ICgp
OyBleHRlcm4gZG91YmxlIF9fajEgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUgam4g
KGludCwgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2puIChpbnQsIGRvdWJsZSkg
dGhyb3cgKCk7CmV4dGVybiBkb3VibGUgeTAgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3Vi
bGUgX195MCAoZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSB5MSAoZG91YmxlKSB0aHJv
dyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3kxIChkb3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91Ymxl
IHluIChpbnQsIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX195biAoaW50LCBkb3Vi
bGUpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIGVyZiAoZG91YmxlKSB0aHJvdyAoKTsg
ZXh0ZXJuIGRvdWJsZSBfX2VyZiAoZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSBlcmZj
IChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZXJmYyAoZG91YmxlKSB0aHJvdyAo
KTsKZXh0ZXJuIGRvdWJsZSBsZ2FtbWEgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUg
X19sZ2FtbWEgKGRvdWJsZSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBkb3VibGUgdGdhbW1hIChk
b3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fdGdhbW1hIChkb3VibGUpIHRocm93ICgp
OwoKCgoKCmV4dGVybiBkb3VibGUgZ2FtbWEgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3Vi
bGUgX19nYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBsZ2FtbWFf
ciAoZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbGdh
bW1hX3IgKGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBk
b3VibGUgcmludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19yaW50IChk
b3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIG5leHRhZnRlciAoZG91YmxlIF9f
eCwgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRl
cm4gZG91YmxlIF9fbmV4dGFmdGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpleHRlcm4gZG91YmxlIG5leHR0b3dhcmQgKGRv
dWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOyBleHRlcm4gZG91YmxlIF9fbmV4dHRvd2FyZCAoZG91YmxlIF9feCwgbG9uZyBkb3Vi
bGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBk
b3VibGUgcmVtYWluZGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJu
IGRvdWJsZSBfX3JlbWFpbmRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoK
CmV4dGVybiBkb3VibGUgc2NhbGJuIChkb3VibGUgX194LCBpbnQgX19uKSB0aHJvdyAoKTsgZXh0
ZXJuIGRvdWJsZSBfX3NjYWxibiAoZG91YmxlIF9feCwgaW50IF9fbikgdGhyb3cgKCk7CgoKCmV4
dGVybiBpbnQgaWxvZ2IgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gaW50IF9faWxvZ2Ig
KGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYmxuIChkb3VibGUg
X194LCBsb25nIGludCBfX24pIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2NhbGJsbiAoZG91
YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBuZWFyYnlp
bnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbmVhcmJ5aW50IChkb3Vi
bGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSByb3VuZCAoZG91YmxlIF9feCkgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fcm91bmQg
KGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0
ZXJuIGRvdWJsZSB0cnVuYyAoZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fdHJ1bmMgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBkb3VibGUgcmVtcXVvIChkb3Vi
bGUgX194LCBkb3VibGUgX195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBf
X3JlbXF1byAoZG91YmxlIF9feCwgZG91YmxlIF9feSwgaW50ICpfX3F1bykgdGhyb3cgKCk7CgoK
CgoKCmV4dGVybiBsb25nIGludCBscmludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBs
b25nIGludCBfX2xyaW50IChkb3VibGUgX194KSB0aHJvdyAoKTsKX19leHRlbnNpb25fXwpleHRl
cm4gbG9uZyBsb25nIGludCBsbHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9u
ZyBsb25nIGludCBfX2xscmludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25n
IGludCBscm91bmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBpbnQgX19scm91
bmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcg
aW50IGxscm91bmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBsb25nIGludCBf
X2xscm91bmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGZkaW0gKGRv
dWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZmRpbSAoZG91
YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBmbWF4IChkb3Vi
bGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
IGV4dGVybiBkb3VibGUgX19mbWF4IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBmbWluIChkb3VibGUg
X194LCBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4
dGVybiBkb3VibGUgX19mbWluIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgX19mcGNsYXNzaWZ5IChkb3Vi
bGUgX192YWx1ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
ZXh0ZXJuIGludCBfX3NpZ25iaXQgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKQogICAgIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGRvdWJsZSBmbWEgKGRvdWJsZSBfX3gs
IGRvdWJsZSBfX3ksIGRvdWJsZSBfX3opIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZm1hIChk
b3VibGUgX194LCBkb3VibGUgX195LCBkb3VibGUgX196KSB0aHJvdyAoKTsKCgoKCgoKCgpleHRl
cm4gaW50IF9faXNzaWduYWxpbmcgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKQogICAgIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBkb3VibGUgc2NhbGIgKGRvdWJsZSBf
X3gsIGRvdWJsZSBfX24pIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2NhbGIgKGRvdWJsZSBf
X3gsIGRvdWJsZSBfX24pIHRocm93ICgpOwojIDcwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMg
NAojdW5kZWYgX01kb3VibGVfCiN1bmRlZiBfTWRvdWJsZV9CRUdJTl9OQU1FU1BBQ0UKI3VuZGVm
IF9NZG91YmxlX0VORF9OQU1FU1BBQ0UKI3VuZGVmIF9fTUFUSF9QUkVDTkFNRQojIDgyICIvdXNy
L2luY2x1ZGUvbWF0aC5oIiAzIDQKI2RlZmluZSBfTWZsb2F0XyBmbG9hdAoKI2RlZmluZSBfTWRv
dWJsZV8gX01mbG9hdF8KI2RlZmluZSBfX01BVEhfUFJFQ05BTUUobmFtZSxyKSBuYW1lICMjZiAj
I3IKI2RlZmluZSBfTWRvdWJsZV9CRUdJTl9OQU1FU1BBQ0UgX19CRUdJTl9OQU1FU1BBQ0VfQzk5
CiNkZWZpbmUgX01kb3VibGVfRU5EX05BTUVTUEFDRSBfX0VORF9OQU1FU1BBQ0VfQzk5CiMgMSAi
L3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9tYXRoY2FsbHMuaCIgMSAzIDQK
IyA1MiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9tYXRoY2FsbHMuaCIg
MyA0CgoKZXh0ZXJuIGZsb2F0IGFjb3NmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxv
YXQgX19hY29zZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBhc2luZiAoZmxv
YXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmYgKGZsb2F0IF9feCkgdGhyb3cg
KCk7CgpleHRlcm4gZmxvYXQgYXRhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9h
dCBfX2F0YW5mIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IGF0YW4yZiAoZmxv
YXQgX195LCBmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19hdGFuMmYgKGZsb2F0
IF9feSwgZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgY29zZiAoZmxvYXQgX194
KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fY29zZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4
dGVybiBmbG9hdCBzaW5mIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19zaW5m
IChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IHRhbmYgKGZsb2F0IF9feCkgdGhy
b3cgKCk7IGV4dGVybiBmbG9hdCBfX3RhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgpleHRl
cm4gZmxvYXQgY29zaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2Nvc2hm
IChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IHNpbmhmIChmbG9hdCBfX3gpIHRo
cm93ICgpOyBleHRlcm4gZmxvYXQgX19zaW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVy
biBmbG9hdCB0YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fdGFuaGYg
KGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBzaW5jb3NmIChmbG9hdCBfX3gs
IGZsb2F0ICpfX3NpbngsIGZsb2F0ICpfX2Nvc3gpIHRocm93ICgpOyBleHRlcm4gdm9pZCBfX3Np
bmNvc2YgKGZsb2F0IF9feCwgZmxvYXQgKl9fc2lueCwgZmxvYXQgKl9fY29zeCkgdGhyb3cgKCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA7CgoKCgoKZXh0ZXJuIGZsb2F0IGFjb3NoZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJu
IGZsb2F0IF9fYWNvc2hmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IGFzaW5o
ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmhmIChmbG9hdCBfX3gp
IHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IGF0YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGZsb2F0IF9fYXRhbmhmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGZs
b2F0IGV4cGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2V4cGYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGZyZXhwZiAoZmxvYXQgX194LCBpbnQgKl9f
ZXhwb25lbnQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19mcmV4cGYgKGZsb2F0IF9feCwgaW50
ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbGRleHBmIChmbG9hdCBfX3gs
IGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbGRleHBmIChmbG9hdCBf
X3gsIGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbG9nZiAoZmxvYXQg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbG9nZiAoZmxvYXQgX194KSB0aHJvdyAoKTsK
CgpleHRlcm4gZmxvYXQgbG9nMTBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQg
X19sb2cxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IG1vZGZmIChmbG9h
dCBfX3gsIGZsb2F0ICpfX2lwdHIpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19tb2RmZiAoZmxv
YXQgX194LCBmbG9hdCAqX19pcHRyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs
X18gKDIpKSk7CgoKCgpleHRlcm4gZmxvYXQgZXhwMTBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBl
eHRlcm4gZmxvYXQgX19leHAxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQg
cG93MTBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19wb3cxMGYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGZsb2F0IGV4cG0xZiAoZmxvYXQgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXhwbTFmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVy
biBmbG9hdCBsb2cxcGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xvZzFw
ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbG9nYmYgKGZsb2F0IF9feCkg
dGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xvZ2JmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgoK
CgpleHRlcm4gZmxvYXQgZXhwMmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf
X2V4cDJmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBsb2cyZiAoZmxvYXQg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbG9nMmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7
CgoKCgoKCgoKZXh0ZXJuIGZsb2F0IHBvd2YgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAo
KTsgZXh0ZXJuIGZsb2F0IF9fcG93ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoK
CmV4dGVybiBmbG9hdCBzcXJ0ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9f
c3FydGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGZsb2F0IGh5cG90ZiAoZmxv
YXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19oeXBvdGYgKGZsb2F0
IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZsb2F0IGNicnRmIChmbG9h
dCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19jYnJ0ZiAoZmxvYXQgX194KSB0aHJvdyAo
KTsKCgoKCgoKCgpleHRlcm4gZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19jZWlsZiAoZmxvYXQgX194KSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGZhYnNm
IChmbG9hdCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJu
IGZsb2F0IF9fZmFic2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCmV4dGVybiBmbG9hdCBmbG9vcmYgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19mbG9vcmYgKGZsb2F0IF9feCkg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBmbW9k
ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19mbW9kZiAo
ZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBfX2lzaW5mZiAo
ZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4
dGVybiBpbnQgX19maW5pdGVmIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJuIGludCBpc2luZmYgKGZsb2F0IF9fdmFsdWUpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZWYg
KGZsb2F0IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpl
eHRlcm4gZmxvYXQgZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJu
IGZsb2F0IF9fZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJu
IGZsb2F0IHNpZ25pZmljYW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9f
c2lnbmlmaWNhbmRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgoKCmV4dGVybiBmbG9hdCBjb3B5
c2lnbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2NvcHlzaWduZiAoZmxvYXQgX194LCBmbG9hdCBfX3kp
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKZXh0ZXJuIGZsb2F0
IG5hbmYgKGNvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOyBleHRlcm4gZmxvYXQgX19uYW5mIChjb25zdCBjaGFyICpfX3RhZ2IpIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gaW50IF9faXNuYW5mIChm
bG9hdCBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4
dGVybiBpbnQgaXNuYW5mIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGowZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4g
ZmxvYXQgX19qMGYgKGZsb2F0KSB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IGoxZiAoZmxvYXQpIHRo
cm93ICgpOyBleHRlcm4gZmxvYXQgX19qMWYgKGZsb2F0KSB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0
IGpuZiAoaW50LCBmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2puZiAoaW50LCBmbG9h
dCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCB5MGYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZs
b2F0IF9feTBmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCB5MWYgKGZsb2F0KSB0aHJv
dyAoKTsgZXh0ZXJuIGZsb2F0IF9feTFmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCB5
bmYgKGludCwgZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX195bmYgKGludCwgZmxvYXQp
IHRocm93ICgpOwoKCgoKCgpleHRlcm4gZmxvYXQgZXJmZiAoZmxvYXQpIHRocm93ICgpOyBleHRl
cm4gZmxvYXQgX19lcmZmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCBlcmZjZiAoZmxv
YXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19lcmZjZiAoZmxvYXQpIHRocm93ICgpOwpleHRl
cm4gZmxvYXQgbGdhbW1hZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19sZ2FtbWFm
IChmbG9hdCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBmbG9hdCB0Z2FtbWFmIChmbG9hdCkgdGhy
b3cgKCk7IGV4dGVybiBmbG9hdCBfX3RnYW1tYWYgKGZsb2F0KSB0aHJvdyAoKTsKCgoKCgpleHRl
cm4gZmxvYXQgZ2FtbWFmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2dhbW1hZiAo
ZmxvYXQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZmxvYXQgbGdhbW1hZl9yIChmbG9hdCwgaW50
ICpfX3NpZ25nYW1wKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbGdhbW1hZl9yIChmbG9hdCwg
aW50ICpfX3NpZ25nYW1wKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBmbG9hdCByaW50ZiAoZmxv
YXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fcmludGYgKGZsb2F0IF9feCkgdGhyb3cg
KCk7CgoKZXh0ZXJuIGZsb2F0IG5leHRhZnRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX25leHRhZnRl
cmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgpleHRlcm4gZmxvYXQgbmV4dHRvd2FyZGYgKGZsb2F0IF9feCwgbG9uZyBkb3VibGUg
X195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBf
X25leHR0b3dhcmRmIChmbG9hdCBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gZmxvYXQgcmVtYWluZGVyZiAoZmxvYXQg
X194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19yZW1haW5kZXJmIChmbG9h
dCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBzY2FsYm5mIChmbG9h
dCBfX3gsIGludCBfX24pIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19zY2FsYm5mIChmbG9hdCBf
X3gsIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGlsb2diZiAoZmxvYXQgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGludCBfX2lsb2diZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKCmV4
dGVybiBmbG9hdCBzY2FsYmxuZiAoZmxvYXQgX194LCBsb25nIGludCBfX24pIHRocm93ICgpOyBl
eHRlcm4gZmxvYXQgX19zY2FsYmxuZiAoZmxvYXQgX194LCBsb25nIGludCBfX24pIHRocm93ICgp
OwoKCgpleHRlcm4gZmxvYXQgbmVhcmJ5aW50ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJu
IGZsb2F0IF9fbmVhcmJ5aW50ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0
IHJvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
IGV4dGVybiBmbG9hdCBfX3JvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBmbG9hdCB0cnVuY2YgKGZsb2F0IF9feCkgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX190cnVuY2YgKGZs
b2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJu
IGZsb2F0IHJlbXF1b2YgKGZsb2F0IF9feCwgZmxvYXQgX195LCBpbnQgKl9fcXVvKSB0aHJvdyAo
KTsgZXh0ZXJuIGZsb2F0IF9fcmVtcXVvZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGludCAqX19x
dW8pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgbHJpbnRmIChmbG9hdCBfX3gpIHRo
cm93ICgpOyBleHRlcm4gbG9uZyBpbnQgX19scmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7Cl9f
ZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50ZiAoZmxvYXQgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRmIChmbG9hdCBfX3gpIHRocm93ICgp
OwoKCgpleHRlcm4gbG9uZyBpbnQgbHJvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJu
IGxvbmcgaW50IF9fbHJvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKX19leHRlbnNpb25fXwpl
eHRlcm4gbG9uZyBsb25nIGludCBsbHJvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJu
IGxvbmcgbG9uZyBpbnQgX19sbHJvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJu
IGZsb2F0IGZkaW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBmbG9h
dCBfX2ZkaW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0
IGZtYXhmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19mbWF4ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZm1pbmYg
KGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7IGV4dGVybiBmbG9hdCBfX2ZtaW5mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50IF9fZnBjbGFzc2lmeWYg
KGZsb2F0IF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCmV4dGVybiBpbnQgX19zaWduYml0ZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBmbG9hdCBmbWFmIChmbG9hdCBf
X3gsIGZsb2F0IF9feSwgZmxvYXQgX196KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZm1hZiAo
ZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgdGhyb3cgKCk7CgoKCgoKCgoKZXh0ZXJu
IGludCBfX2lzc2lnbmFsaW5nZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gZmxvYXQgc2NhbGJmIChmbG9hdCBfX3gs
IGZsb2F0IF9fbikgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3NjYWxiZiAoZmxvYXQgX194LCBm
bG9hdCBfX24pIHRocm93ICgpOwojIDg5ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMgNAojdW5k
ZWYgX01kb3VibGVfCiN1bmRlZiBfTWRvdWJsZV9CRUdJTl9OQU1FU1BBQ0UKI3VuZGVmIF9NZG91
YmxlX0VORF9OQU1FU1BBQ0UKI3VuZGVmIF9fTUFUSF9QUkVDTkFNRQojIDEyNSAiL3Vzci9pbmNs
dWRlL21hdGguaCIgMyA0CiNkZWZpbmUgX01sb25nX2RvdWJsZV8gbG9uZyBkb3VibGUKCiNkZWZp
bmUgX01kb3VibGVfIF9NbG9uZ19kb3VibGVfCiNkZWZpbmUgX19NQVRIX1BSRUNOQU1FKG5hbWUs
cikgbmFtZSAjI2wgIyNyCiNkZWZpbmUgX01kb3VibGVfQkVHSU5fTkFNRVNQQUNFIF9fQkVHSU5f
TkFNRVNQQUNFX0M5OQojZGVmaW5lIF9NZG91YmxlX0VORF9OQU1FU1BBQ0UgX19FTkRfTkFNRVNQ
QUNFX0M5OQojZGVmaW5lIF9fTUFUSF9ERUNMQVJFX0xET1VCTEUgMQojIDEgIi91c3IvaW5jbHVk
ZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvbWF0aGNhbGxzLmgiIDEgMyA0CiMgNTIgIi91c3Iv
aW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvbWF0aGNhbGxzLmgiIDMgNAoKCmV4dGVy
biBsb25nIGRvdWJsZSBhY29zbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fYWNvc2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9u
ZyBkb3VibGUgYXNpbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2FzaW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91
YmxlIGF0YW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUg
X19hdGFubCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBh
dGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fYXRhbjJsIChsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNvc2wgKGxvbmcgZG91YmxlIF9feCkgdGhy
b3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nvc2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg
KCk7CgpleHRlcm4gbG9uZyBkb3VibGUgc2lubCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2lubCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4
dGVybiBsb25nIGRvdWJsZSB0YW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g
bG9uZyBkb3VibGUgX190YW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGNvc2hsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19jb3NobCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25n
IGRvdWJsZSBzaW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fc2luaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3Vi
bGUgdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBf
X3RhbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgc2luY29z
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19zaW54LCBsb25nIGRvdWJsZSAqX19j
b3N4KSB0aHJvdyAoKTsgZXh0ZXJuIHZvaWQgX19zaW5jb3NsIChsb25nIGRvdWJsZSBfX3gsIGxv
bmcgZG91YmxlICpfX3NpbngsIGxvbmcgZG91YmxlICpfX2Nvc3gpIHRocm93ICgpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoK
CmV4dGVybiBsb25nIGRvdWJsZSBhY29zaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NobCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4
dGVybiBsb25nIGRvdWJsZSBhc2luaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVy
biBsb25nIGRvdWJsZSBfX2FzaW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVy
biBsb25nIGRvdWJsZSBhdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2F0YW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCgoKCmV4
dGVybiBsb25nIGRvdWJsZSBleHBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g
bG9uZyBkb3VibGUgX19leHBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBs
b25nIGRvdWJsZSBmcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSB0aHJv
dyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZnJleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCAq
X19leHBvbmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxkZXhwbCAobG9uZyBk
b3VibGUgX194LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBf
X2xkZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7CgoKZXh0
ZXJuIGxvbmcgZG91YmxlIGxvZ2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2xvZ2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxv
bmcgZG91YmxlIGxvZzEwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fbG9nMTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25n
IGRvdWJsZSBtb2RmbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRyKSB0aHJv
dyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbW9kZmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBk
b3VibGUgKl9faXB0cikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkp
OwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cDEwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwMTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
OwoKZXh0ZXJuIGxvbmcgZG91YmxlIHBvdzEwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fcG93MTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoK
CgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHBtMWwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cG0xbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsK
CgpleHRlcm4gbG9uZyBkb3VibGUgbG9nMXBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19sb2cxcGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGxvZ2JsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19sb2dibCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGV4cDJsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19leHAybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRl
cm4gbG9uZyBkb3VibGUgbG9nMmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2xvZzJsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCgoKCmV4
dGVybiBsb25nIGRvdWJsZSBwb3dsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg
dGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Bvd2wgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgc3FydGwgKGxvbmcg
ZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NxcnRsIChsb25nIGRv
dWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBoeXBvdGwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9faHlwb3RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoK
CgoKCmV4dGVybiBsb25nIGRvdWJsZSBjYnJ0bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fY2JydGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoK
CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNlaWxsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY2VpbGwg
KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CmV4dGVybiBsb25nIGRvdWJsZSBmYWJzbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZhYnNsIChsb25n
IGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRl
cm4gbG9uZyBkb3VibGUgZmxvb3JsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmxvb3JsIChsb25nIGRv
dWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4g
bG9uZyBkb3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJv
dyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBk
b3VibGUgX195KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgX19pc2luZmwgKGxvbmcgZG91Ymxl
IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4g
aW50IF9fZmluaXRlbCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCgoKCmV4dGVybiBpbnQgaXNpbmZsIChsb25nIGRvdWJsZSBfX3Zh
bHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBm
aW5pdGVsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGRyZW1sIChsb25nIGRvdWJsZSBfX3gsIGxv
bmcgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2RyZW1sIChsb25n
IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRv
dWJsZSBzaWduaWZpY2FuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX3NpZ25pZmljYW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCgpl
eHRlcm4gbG9uZyBkb3VibGUgY29weXNpZ25sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91Ymxl
IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19jb3B5c2lnbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJs
ZSBuYW5sIChjb25zdCBjaGFyICpfX3RhZ2IpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbmFubCAoY29uc3QgY2hhciAqX190YWdiKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJuIGludCBfX2lz
bmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBqMGwg
KGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajBsIChsb25nIGRv
dWJsZSkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSBqMWwgKGxvbmcgZG91YmxlKSB0aHJv
dyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4
dGVybiBsb25nIGRvdWJsZSBqbmwgKGludCwgbG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4g
bG9uZyBkb3VibGUgX19qbmwgKGludCwgbG9uZyBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gbG9u
ZyBkb3VibGUgeTBsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBf
X3kwbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gbG9uZyBkb3VibGUgeTFsIChsb25n
IGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3kxbCAobG9uZyBkb3VibGUp
IHRocm93ICgpOwpleHRlcm4gbG9uZyBkb3VibGUgeW5sIChpbnQsIGxvbmcgZG91YmxlKSB0aHJv
dyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feW5sIChpbnQsIGxvbmcgZG91YmxlKSB0aHJvdyAo
KTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGVyZmwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXJmbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwpleHRlcm4g
bG9uZyBkb3VibGUgZXJmY2wgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fZXJmY2wgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGxn
YW1tYWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGdhbW1h
bCAobG9uZyBkb3VibGUpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgdGdhbW1h
bCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX190Z2FtbWFsIChs
b25nIGRvdWJsZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGdhbW1hbCAobG9u
ZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19nYW1tYWwgKGxvbmcgZG91
YmxlKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWxfciAobG9uZyBk
b3VibGUsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xn
YW1tYWxfciAobG9uZyBkb3VibGUsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7CgoKCgoKCgpl
eHRlcm4gbG9uZyBkb3VibGUgcmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVy
biBsb25nIGRvdWJsZSBfX3JpbnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVy
biBsb25nIGRvdWJsZSBuZXh0YWZ0ZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9f
eSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19uZXh0YWZ0ZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIG5leHR0
b3dhcmRsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19uZXh0dG93YXJkbCAo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJlbWFpbmRlcmwgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
cmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoK
CgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJubCAobG9uZyBkb3VibGUgX194LCBpbnQgX19uKSB0
aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJubCAobG9uZyBkb3VibGUgX194LCBp
bnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBpbG9nYmwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCk7IGV4dGVybiBpbnQgX19pbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJsbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBp
bnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJsbmwgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5l
YXJieWludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBf
X25lYXJieWludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRv
dWJsZSByb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19yb3VuZGwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgdHJ1bmNsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdHJ1bmNsIChsb25nIGRvdWJsZSBfX3gpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBsb25nIGRvdWJs
ZSByZW1xdW9sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgaW50ICpfX3F1bykg
dGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JlbXF1b2wgKGxvbmcgZG91YmxlIF9feCwg
bG9uZyBkb3VibGUgX195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcg
aW50IGxyaW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9f
bHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwpfX2V4dGVuc2lvbl9fCmV4dGVybiBs
b25nIGxvbmcgaW50IGxscmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBs
b25nIGxvbmcgaW50IF9fbGxyaW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0
ZXJuIGxvbmcgaW50IGxyb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBs
b25nIGludCBfX2xyb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7Cl9fZXh0ZW5zaW9u
X18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg
KCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhy
b3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmZGltbCAobG9uZyBkb3VibGUgX194LCBsb25n
IGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mZGltbCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJs
ZSBmbWF4bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1heGwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZtaW5sIChsb25nIGRvdWJsZSBfX3gsIGxv
bmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19mbWlubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kp
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBfX2Zw
Y2xhc3NpZnlsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKQogICAgIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fc2lnbmJpdGwgKGxvbmcgZG91YmxlIF9f
dmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRl
cm4gbG9uZyBkb3VibGUgZm1hbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGxv
bmcgZG91YmxlIF9feikgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZtYWwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3opIHRocm93ICgpOwoK
CgoKCgoKCmV4dGVybiBpbnQgX19pc3NpZ25hbGluZ2wgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRo
cm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIHNjYWxibCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX24pIHRocm93ICgp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3Vi
bGUgX19uKSB0aHJvdyAoKTsKIyAxMzMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMyA0CiN1bmRl
ZiBfTWRvdWJsZV8KI3VuZGVmIF9NZG91YmxlX0JFR0lOX05BTUVTUEFDRQojdW5kZWYgX01kb3Vi
bGVfRU5EX05BTUVTUEFDRQojdW5kZWYgX19NQVRIX1BSRUNOQU1FCgoKCgojdW5kZWYgX19NQVRI
REVDTF8xCiN1bmRlZiBfX01BVEhERUNMCiN1bmRlZiBfX01BVEhDQUxMCgoKCgpleHRlcm4gaW50
IHNpZ25nYW07CiMgMTg5ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKZW51bQogIHsKICAgIEZQ
X05BTiA9CiNkZWZpbmUgRlBfTkFOIDAKICAgICAgMCwKICAgIEZQX0lORklOSVRFID0KI2RlZmlu
ZSBGUF9JTkZJTklURSAxCiAgICAgIDEsCiAgICBGUF9aRVJPID0KI2RlZmluZSBGUF9aRVJPIDIK
ICAgICAgMiwKICAgIEZQX1NVQk5PUk1BTCA9CiNkZWZpbmUgRlBfU1VCTk9STUFMIDMKICAgICAg
MywKICAgIEZQX05PUk1BTCA9CiNkZWZpbmUgRlBfTk9STUFMIDQKICAgICAgNAogIH07CgoKCiNk
ZWZpbmUgZnBjbGFzc2lmeSh4KSAoc2l6ZW9mICh4KSA9PSBzaXplb2YgKGZsb2F0KSA/IF9fZnBj
bGFzc2lmeWYgKHgpIDogX19mcGNsYXNzaWZ5ICh4KSkKIyAyMjIgIi91c3IvaW5jbHVkZS9tYXRo
LmgiIDMgNAojZGVmaW5lIHNpZ25iaXQoeCkgKHNpemVvZiAoeCkgPT0gc2l6ZW9mIChmbG9hdCkg
PyBfX3NpZ25iaXRmICh4KSA6IF9fc2lnbmJpdCAoeCkpCiMgMjM0ICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAzIDQKI2RlZmluZSBpc2Zpbml0ZSh4KSAoc2l6ZW9mICh4KSA9PSBzaXplb2YgKGZsb2F0
KSA/IF9fZmluaXRlZiAoeCkgOiBfX2Zpbml0ZSAoeCkpCiMgMjQ1ICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAzIDQKI2RlZmluZSBpc25vcm1hbCh4KSAoZnBjbGFzc2lmeSAoeCkgPT0gRlBfTk9STUFM
KQoKCgoKI2RlZmluZSBpc25hbih4KSAoc2l6ZW9mICh4KSA9PSBzaXplb2YgKGZsb2F0KSA/IF9f
aXNuYW5mICh4KSA6IF9faXNuYW4gKHgpKQojIDI2MiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMyA0
CiNkZWZpbmUgaXNpbmYoeCkgKHNpemVvZiAoeCkgPT0gc2l6ZW9mIChmbG9hdCkgPyBfX2lzaW5m
ZiAoeCkgOiBfX2lzaW5mICh4KSkKIyAyNzMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMgNAojZGVm
aW5lIE1BVEhfRVJSTk8gMQojZGVmaW5lIE1BVEhfRVJSRVhDRVBUIDIKCgoKCgojZGVmaW5lIG1h
dGhfZXJyaGFuZGxpbmcgKE1BVEhfRVJSTk8gfCBNQVRIX0VSUkVYQ0VQVCkKCgoKCgoKCiNkZWZp
bmUgaXNzaWduYWxpbmcoeCkgKHNpemVvZiAoeCkgPT0gc2l6ZW9mIChmbG9hdCkgPyBfX2lzc2ln
bmFsaW5nZiAoeCkgOiBfX2lzc2lnbmFsaW5nICh4KSkKIyAzMDEgIi91c3IvaW5jbHVkZS9tYXRo
LmgiIDMgNAp0eXBlZGVmIGVudW0KewogIF9JRUVFXyA9IC0xLAogIF9TVklEXywKICBfWE9QRU5f
LAogIF9QT1NJWF8sCiAgX0lTT0NfCn0gX0xJQl9WRVJTSU9OX1RZUEU7CgoKCgpleHRlcm4gX0xJ
Ql9WRVJTSU9OX1RZUEUgX0xJQl9WRVJTSU9OOwojIDMyNCAiL3Vzci9pbmNsdWRlL21hdGguaCIg
MyA0CnN0cnVjdCBfX2V4Y2VwdGlvbgoKCgogIHsKICAgIGludCB0eXBlOwogICAgY2hhciAqbmFt
ZTsKICAgIGRvdWJsZSBhcmcxOwogICAgZG91YmxlIGFyZzI7CiAgICBkb3VibGUgcmV0dmFsOwog
IH07CgoKZXh0ZXJuIGludCBtYXRoZXJyIChzdHJ1Y3QgX19leGNlcHRpb24gKl9fZXhjKSB0aHJv
dyAoKTsKCgoKCiNkZWZpbmUgWF9UTE9TUyAxLjQxNDg0NzU1MDQwNTY4ODAwMDAwZSsxNgoKCiNk
ZWZpbmUgRE9NQUlOIDEKI2RlZmluZSBTSU5HIDIKI2RlZmluZSBPVkVSRkxPVyAzCiNkZWZpbmUg
VU5ERVJGTE9XIDQKI2RlZmluZSBUTE9TUyA1CiNkZWZpbmUgUExPU1MgNgoKCiNkZWZpbmUgSFVH
RSAzLjQwMjgyMzQ3ZSszOEYKIyAzNjcgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMgNAojZGVmaW5l
IE1fRSAyLjcxODI4MTgyODQ1OTA0NTIzNTQKI2RlZmluZSBNX0xPRzJFIDEuNDQyNjk1MDQwODg4
OTYzNDA3NAojZGVmaW5lIE1fTE9HMTBFIDAuNDM0Mjk0NDgxOTAzMjUxODI3NjUKI2RlZmluZSBN
X0xOMiAwLjY5MzE0NzE4MDU1OTk0NTMwOTQyCiNkZWZpbmUgTV9MTjEwIDIuMzAyNTg1MDkyOTk0
MDQ1Njg0MDIKI2RlZmluZSBNX1BJIDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYKI2RlZmluZSBNX1BJ
XzIgMS41NzA3OTYzMjY3OTQ4OTY2MTkyMwojZGVmaW5lIE1fUElfNCAwLjc4NTM5ODE2MzM5NzQ0
ODMwOTYyCiNkZWZpbmUgTV8xX1BJIDAuMzE4MzA5ODg2MTgzNzkwNjcxNTQKI2RlZmluZSBNXzJf
UEkgMC42MzY2MTk3NzIzNjc1ODEzNDMwOAojZGVmaW5lIE1fMl9TUVJUUEkgMS4xMjgzNzkxNjcw
OTU1MTI1NzM5MAojZGVmaW5lIE1fU1FSVDIgMS40MTQyMTM1NjIzNzMwOTUwNDg4MAojZGVmaW5l
IE1fU1FSVDFfMiAwLjcwNzEwNjc4MTE4NjU0NzUyNDQwCgoKCgoKCiNkZWZpbmUgTV9FbCAyLjcx
ODI4MTgyODQ1OTA0NTIzNTM2MDI4NzQ3MTM1MjY2MjQ5OEwKI2RlZmluZSBNX0xPRzJFbCAxLjQ0
MjY5NTA0MDg4ODk2MzQwNzM1OTkyNDY4MTAwMTg5MjEzN0wKI2RlZmluZSBNX0xPRzEwRWwgMC40
MzQyOTQ0ODE5MDMyNTE4Mjc2NTExMjg5MTg5MTY2MDUwODJMCiNkZWZpbmUgTV9MTjJsIDAuNjkz
MTQ3MTgwNTU5OTQ1MzA5NDE3MjMyMTIxNDU4MTc2NTY4TAojZGVmaW5lIE1fTE4xMGwgMi4zMDI1
ODUwOTI5OTQwNDU2ODQwMTc5OTE0NTQ2ODQzNjQyMDhMCiNkZWZpbmUgTV9QSWwgMy4xNDE1OTI2
NTM1ODk3OTMyMzg0NjI2NDMzODMyNzk1MDI4ODRMCiNkZWZpbmUgTV9QSV8ybCAxLjU3MDc5NjMy
Njc5NDg5NjYxOTIzMTMyMTY5MTYzOTc1MTQ0MkwKI2RlZmluZSBNX1BJXzRsIDAuNzg1Mzk4MTYz
Mzk3NDQ4MzA5NjE1NjYwODQ1ODE5ODc1NzIxTAojZGVmaW5lIE1fMV9QSWwgMC4zMTgzMDk4ODYx
ODM3OTA2NzE1Mzc3Njc1MjY3NDUwMjg3MjRMCiNkZWZpbmUgTV8yX1BJbCAwLjYzNjYxOTc3MjM2
NzU4MTM0MzA3NTUzNTA1MzQ5MDA1NzQ0OEwKI2RlZmluZSBNXzJfU1FSVFBJbCAxLjEyODM3OTE2
NzA5NTUxMjU3Mzg5NjE1ODkwMzEyMTU0NTE3MkwKI2RlZmluZSBNX1NRUlQybCAxLjQxNDIxMzU2
MjM3MzA5NTA0ODgwMTY4ODcyNDIwOTY5ODA3OUwKI2RlZmluZSBNX1NRUlQxXzJsIDAuNzA3MTA2
NzgxMTg2NTQ3NTI0NDAwODQ0MzYyMTA0ODQ5MDM5TAoKCgoKCgoKI2RlZmluZSBfX05PX01BVEhf
SU5MSU5FUyAxCiMgNDE2ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKI2RlZmluZSBpc2dyZWF0
ZXIoeCx5KSBfX2J1aWx0aW5faXNncmVhdGVyKHgsIHkpCiNkZWZpbmUgaXNncmVhdGVyZXF1YWwo
eCx5KSBfX2J1aWx0aW5faXNncmVhdGVyZXF1YWwoeCwgeSkKI2RlZmluZSBpc2xlc3MoeCx5KSBf
X2J1aWx0aW5faXNsZXNzKHgsIHkpCiNkZWZpbmUgaXNsZXNzZXF1YWwoeCx5KSBfX2J1aWx0aW5f
aXNsZXNzZXF1YWwoeCwgeSkKI2RlZmluZSBpc2xlc3NncmVhdGVyKHgseSkgX19idWlsdGluX2lz
bGVzc2dyZWF0ZXIoeCwgeSkKI2RlZmluZSBpc3Vub3JkZXJlZCh1LHYpIF9fYnVpbHRpbl9pc3Vu
b3JkZXJlZCh1LCB2KQoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9i
aXRzL21hdGhpbmxpbmUuaCIgMSAzIDQKIyA0MjcgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMyA0
CiMgNDg4ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKfQojIDQ1ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2NtYXRoIiAyIDMKCgojZGVm
aW5lIF9HTElCQ1hYX0NNQVRIIDEKCgojdW5kZWYgYWJzCiN1bmRlZiBkaXYKI3VuZGVmIGFjb3MK
I3VuZGVmIGFzaW4KI3VuZGVmIGF0YW4KI3VuZGVmIGF0YW4yCiN1bmRlZiBjZWlsCiN1bmRlZiBj
b3MKI3VuZGVmIGNvc2gKI3VuZGVmIGV4cAojdW5kZWYgZmFicwojdW5kZWYgZmxvb3IKI3VuZGVm
IGZtb2QKI3VuZGVmIGZyZXhwCiN1bmRlZiBsZGV4cAojdW5kZWYgbG9nCiN1bmRlZiBsb2cxMAoj
dW5kZWYgbW9kZgojdW5kZWYgcG93CiN1bmRlZiBzaW4KI3VuZGVmIHNpbmgKI3VuZGVmIHNxcnQK
I3VuZGVmIHRhbgojdW5kZWYgdGFuaAoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192
aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCiAgaW5saW5lIGNvbnN0ZXhwciBkb3VibGUK
ICBhYnMoZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fZmFicyhfX3gpOyB9CgoKCiAg
aW5saW5lIGNvbnN0ZXhwciBmbG9hdAogIGFicyhmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWls
dGluX2ZhYnNmKF9feCk7IH0KCiAgaW5saW5lIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIGFicyhs
b25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2ZhYnNsKF9feCk7IH0KCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBjb25zdGV4cHIKICAgIHR5cGVuYW1lIF9f
Z251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgYWJzKF9UcCBf
X3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fZmFicyhfX3gpOyB9CgogIHVzaW5nIDo6YWNvczsK
CgogIGlubGluZSBjb25zdGV4cHIgZmxvYXQKICBhY29zKGZsb2F0IF9feCkKICB7IHJldHVybiBf
X2J1aWx0aW5fYWNvc2YoX194KTsgfQoKICBpbmxpbmUgY29uc3RleHByIGxvbmcgZG91YmxlCiAg
YWNvcyhsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2Fjb3NsKF9feCk7IH0K
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBjb25zdGV4cHIKICAgIHR5cGVu
YW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgYWNv
cyhfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGluX2Fjb3MoX194KTsgfQoKICB1c2luZyA6
OmFzaW47CgoKICBpbmxpbmUgY29uc3RleHByIGZsb2F0CiAgYXNpbihmbG9hdCBfX3gpCiAgeyBy
ZXR1cm4gX19idWlsdGluX2FzaW5mKF9feCk7IH0KCiAgaW5saW5lIGNvbnN0ZXhwciBsb25nIGRv
dWJsZQogIGFzaW4obG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9hc2lubChf
X3gpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgY29uc3RleHByCiAg
ICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3Zh
bHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUK
ICAgIGFzaW4oX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9hc2luKF9feCk7IH0KCiAg
dXNpbmcgOjphdGFuOwoKCiAgaW5saW5lIGNvbnN0ZXhwciBmbG9hdAogIGF0YW4oZmxvYXQgX194
KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9hdGFuZihfX3gpOyB9CgogIGlubGluZSBjb25zdGV4cHIg
bG9uZyBkb3VibGUKICBhdGFuKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5f
YXRhbmwoX194KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbnN0
ZXhwcgogICAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1Rw
Pjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlPjo6
X190eXBlCiAgICBhdGFuKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fYXRhbihfX3gp
OyB9CgogIHVzaW5nIDo6YXRhbjI7CgoKICBpbmxpbmUgY29uc3RleHByIGZsb2F0CiAgYXRhbjIo
ZmxvYXQgX195LCBmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2F0YW4yZihfX3ksIF9f
eCk7IH0KCiAgaW5saW5lIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIGF0YW4yKGxvbmcgZG91Ymxl
IF9feSwgbG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9hdGFuMmwoX195LCBf
X3gpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9VcD4KICAgIGlubGlu
ZSBjb25zdGV4cHIKICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19wcm9tb3RlXzI8X1RwLCBfVXA+
OjpfX3R5cGUKICAgIGF0YW4yKF9UcCBfX3ksIF9VcCBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgX19nbnVfY3h4OjpfX3Byb21vdGVfMjxfVHAsIF9VcD46Ol9fdHlwZSBfX3R5cGU7
CiAgICAgIHJldHVybiBhdGFuMihfX3R5cGUoX195KSwgX190eXBlKF9feCkpOwogICAgfQoKICB1
c2luZyA6OmNlaWw7CgoKICBpbmxpbmUgY29uc3RleHByIGZsb2F0CiAgY2VpbChmbG9hdCBfX3gp
CiAgeyByZXR1cm4gX19idWlsdGluX2NlaWxmKF9feCk7IH0KCiAgaW5saW5lIGNvbnN0ZXhwciBs
b25nIGRvdWJsZQogIGNlaWwobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9j
ZWlsbChfX3gpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgY29uc3Rl
eHByCiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+
OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+Ojpf
X3R5cGUKICAgIGNlaWwoX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9jZWlsKF9feCk7
IH0KCiAgdXNpbmcgOjpjb3M7CgoKICBpbmxpbmUgY29uc3RleHByIGZsb2F0CiAgY29zKGZsb2F0
IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fY29zZihfX3gpOyB9CgogIGlubGluZSBjb25zdGV4
cHIgbG9uZyBkb3VibGUKICBjb3MobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRp
bl9jb3NsKF9feCk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBjb25z
dGV4cHIKICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9U
cD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46
Ol9fdHlwZQogICAgY29zKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fY29zKF9feCk7
IH0KCiAgdXNpbmcgOjpjb3NoOwoKCiAgaW5saW5lIGNvbnN0ZXhwciBmbG9hdAogIGNvc2goZmxv
YXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9jb3NoZihfX3gpOyB9CgogIGlubGluZSBjb25z
dGV4cHIgbG9uZyBkb3VibGUKICBjb3NoKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1
aWx0aW5fY29zaGwoX194KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5l
IGNvbnN0ZXhwcgogICAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVn
ZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91
YmxlPjo6X190eXBlCiAgICBjb3NoKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fY29z
aChfX3gpOyB9CgogIHVzaW5nIDo6ZXhwOwoKCiAgaW5saW5lIGNvbnN0ZXhwciBmbG9hdAogIGV4
cChmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2V4cGYoX194KTsgfQoKICBpbmxpbmUg
Y29uc3RleHByIGxvbmcgZG91YmxlCiAgZXhwKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBf
X2J1aWx0aW5fZXhwbChfX3gpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxp
bmUgY29uc3RleHByCiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50
ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGU+OjpfX3R5cGUKICAgIGV4cChfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGluX2V4
cChfX3gpOyB9CgogIHVzaW5nIDo6ZmFiczsKCgogIGlubGluZSBjb25zdGV4cHIgZmxvYXQKICBm
YWJzKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fZmFic2YoX194KTsgfQoKICBpbmxp
bmUgY29uc3RleHByIGxvbmcgZG91YmxlCiAgZmFicyhsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1
cm4gX19idWlsdGluX2ZhYnNsKF9feCk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAg
IGlubGluZSBjb25zdGV4cHIKICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19p
c19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvdWJsZT46Ol9fdHlwZQogICAgZmFicyhfVHAgX194KQogICAgeyByZXR1cm4gX19idWls
dGluX2ZhYnMoX194KTsgfQoKICB1c2luZyA6OmZsb29yOwoKCiAgaW5saW5lIGNvbnN0ZXhwciBm
bG9hdAogIGZsb29yKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fZmxvb3JmKF9feCk7
IH0KCiAgaW5saW5lIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIGZsb29yKGxvbmcgZG91YmxlIF9f
eCkKICB7IHJldHVybiBfX2J1aWx0aW5fZmxvb3JsKF9feCk7IH0KCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIGlubGluZSBjb25zdGV4cHIKICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19l
bmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgZmxvb3IoX1RwIF9feCkKICAgIHsg
cmV0dXJuIF9fYnVpbHRpbl9mbG9vcihfX3gpOyB9CgogIHVzaW5nIDo6Zm1vZDsKCgogIGlubGlu
ZSBjb25zdGV4cHIgZmxvYXQKICBmbW9kKGZsb2F0IF9feCwgZmxvYXQgX195KQogIHsgcmV0dXJu
IF9fYnVpbHRpbl9mbW9kZihfX3gsIF9feSk7IH0KCiAgaW5saW5lIGNvbnN0ZXhwciBsb25nIGRv
dWJsZQogIGZtb2QobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpCiAgeyByZXR1cm4g
X19idWlsdGluX2Ztb2RsKF9feCwgX195KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0
eXBlbmFtZSBfVXA+CiAgICBpbmxpbmUgY29uc3RleHByCiAgICB0eXBlbmFtZSBfX2dudV9jeHg6
Ol9fcHJvbW90ZV8yPF9UcCwgX1VwPjo6X190eXBlCiAgICBmbW9kKF9UcCBfX3gsIF9VcCBfX3kp
CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19nbnVfY3h4OjpfX3Byb21vdGVfMjxfVHAs
IF9VcD46Ol9fdHlwZSBfX3R5cGU7CiAgICAgIHJldHVybiBmbW9kKF9fdHlwZShfX3gpLCBfX3R5
cGUoX195KSk7CiAgICB9CgogIHVzaW5nIDo6ZnJleHA7CgoKICBpbmxpbmUgZmxvYXQKICBmcmV4
cChmbG9hdCBfX3gsIGludCogX19leHApCiAgeyByZXR1cm4gX19idWlsdGluX2ZyZXhwZihfX3gs
IF9fZXhwKTsgfQoKICBpbmxpbmUgbG9uZyBkb3VibGUKICBmcmV4cChsb25nIGRvdWJsZSBfX3gs
IGludCogX19leHApCiAgeyByZXR1cm4gX19idWlsdGluX2ZyZXhwbChfX3gsIF9fZXhwKTsgfQoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbnN0ZXhwcgogICAgdHlwZW5h
bWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlPjo6X190eXBlCiAgICBmcmV4
cChfVHAgX194LCBpbnQqIF9fZXhwKQogICAgeyByZXR1cm4gX19idWlsdGluX2ZyZXhwKF9feCwg
X19leHApOyB9CgogIHVzaW5nIDo6bGRleHA7CgoKICBpbmxpbmUgY29uc3RleHByIGZsb2F0CiAg
bGRleHAoZmxvYXQgX194LCBpbnQgX19leHApCiAgeyByZXR1cm4gX19idWlsdGluX2xkZXhwZihf
X3gsIF9fZXhwKTsgfQoKICBpbmxpbmUgY29uc3RleHByIGxvbmcgZG91YmxlCiAgbGRleHAobG9u
ZyBkb3VibGUgX194LCBpbnQgX19leHApCiAgeyByZXR1cm4gX19idWlsdGluX2xkZXhwbChfX3gs
IF9fZXhwKTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbnN0ZXhw
cgogICAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6
X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlPjo6X190
eXBlCiAgICBsZGV4cChfVHAgX194LCBpbnQgX19leHApCiAgICB7IHJldHVybiBfX2J1aWx0aW5f
bGRleHAoX194LCBfX2V4cCk7IH0KCiAgdXNpbmcgOjpsb2c7CgoKICBpbmxpbmUgY29uc3RleHBy
IGZsb2F0CiAgbG9nKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fbG9nZihfX3gpOyB9
CgogIGlubGluZSBjb25zdGV4cHIgbG9uZyBkb3VibGUKICBsb2cobG9uZyBkb3VibGUgX194KQog
IHsgcmV0dXJuIF9fYnVpbHRpbl9sb2dsKF9feCk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICAgIGlubGluZSBjb25zdGV4cHIKICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVf
aWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgbG9nKF9UcCBfX3gpCiAgICB7IHJldHVybiBf
X2J1aWx0aW5fbG9nKF9feCk7IH0KCiAgdXNpbmcgOjpsb2cxMDsKCgogIGlubGluZSBjb25zdGV4
cHIgZmxvYXQKICBsb2cxMChmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2xvZzEwZihf
X3gpOyB9CgogIGlubGluZSBjb25zdGV4cHIgbG9uZyBkb3VibGUKICBsb2cxMChsb25nIGRvdWJs
ZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2xvZzEwbChfX3gpOyB9CgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgY29uc3RleHByCiAgICB0eXBlbmFtZSBfX2dudV9jeHg6
Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGxvZzEwKF9UcCBfX3gpCiAg
ICB7IHJldHVybiBfX2J1aWx0aW5fbG9nMTAoX194KTsgfQoKICB1c2luZyA6Om1vZGY7CgoKICBp
bmxpbmUgZmxvYXQKICBtb2RmKGZsb2F0IF9feCwgZmxvYXQqIF9faXB0cikKICB7IHJldHVybiBf
X2J1aWx0aW5fbW9kZmYoX194LCBfX2lwdHIpOyB9CgogIGlubGluZSBsb25nIGRvdWJsZQogIG1v
ZGYobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSogX19pcHRyKQogIHsgcmV0dXJuIF9fYnVp
bHRpbl9tb2RmbChfX3gsIF9faXB0cik7IH0KCgogIHVzaW5nIDo6cG93OwoKCiAgaW5saW5lIGNv
bnN0ZXhwciBmbG9hdAogIHBvdyhmbG9hdCBfX3gsIGZsb2F0IF9feSkKICB7IHJldHVybiBfX2J1
aWx0aW5fcG93ZihfX3gsIF9feSk7IH0KCiAgaW5saW5lIGNvbnN0ZXhwciBsb25nIGRvdWJsZQog
IHBvdyhsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkKICB7IHJldHVybiBfX2J1aWx0
aW5fcG93bChfX3gsIF9feSk7IH0KIyA0MzEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvY21hdGgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHAsIHR5cGVuYW1lIF9VcD4KICAgIGlubGluZSBjb25zdGV4cHIKICAgIHR5cGVuYW1lIF9fZ251
X2N4eDo6X19wcm9tb3RlXzI8X1RwLCBfVXA+OjpfX3R5cGUKICAgIHBvdyhfVHAgX194LCBfVXAg
X195KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fZ251X2N4eDo6X19wcm9tb3RlXzI8
X1RwLCBfVXA+OjpfX3R5cGUgX190eXBlOwogICAgICByZXR1cm4gcG93KF9fdHlwZShfX3gpLCBf
X3R5cGUoX195KSk7CiAgICB9CgogIHVzaW5nIDo6c2luOwoKCiAgaW5saW5lIGNvbnN0ZXhwciBm
bG9hdAogIHNpbihmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX3NpbmYoX194KTsgfQoK
ICBpbmxpbmUgY29uc3RleHByIGxvbmcgZG91YmxlCiAgc2luKGxvbmcgZG91YmxlIF9feCkKICB7
IHJldHVybiBfX2J1aWx0aW5fc2lubChfX3gpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICBpbmxpbmUgY29uc3RleHByCiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lm
PF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIHNpbihfVHAgX194KQogICAgeyByZXR1cm4gX19i
dWlsdGluX3NpbihfX3gpOyB9CgogIHVzaW5nIDo6c2luaDsKCgogIGlubGluZSBjb25zdGV4cHIg
ZmxvYXQKICBzaW5oKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fc2luaGYoX194KTsg
fQoKICBpbmxpbmUgY29uc3RleHByIGxvbmcgZG91YmxlCiAgc2luaChsb25nIGRvdWJsZSBfX3gp
CiAgeyByZXR1cm4gX19idWlsdGluX3NpbmhsKF9feCk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4KICAgIGlubGluZSBjb25zdGV4cHIKICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFi
bGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgc2luaChfVHAgX194KQogICAgeyByZXR1
cm4gX19idWlsdGluX3NpbmgoX194KTsgfQoKICB1c2luZyA6OnNxcnQ7CgoKICBpbmxpbmUgY29u
c3RleHByIGZsb2F0CiAgc3FydChmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX3NxcnRm
KF9feCk7IH0KCiAgaW5saW5lIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIHNxcnQobG9uZyBkb3Vi
bGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9zcXJ0bChfX3gpOyB9CgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgY29uc3RleHByCiAgICB0eXBlbmFtZSBfX2dudV9jeHg6
Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIHNxcnQoX1RwIF9feCkKICAg
IHsgcmV0dXJuIF9fYnVpbHRpbl9zcXJ0KF9feCk7IH0KCiAgdXNpbmcgOjp0YW47CgoKICBpbmxp
bmUgY29uc3RleHByIGZsb2F0CiAgdGFuKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5f
dGFuZihfX3gpOyB9CgogIGlubGluZSBjb25zdGV4cHIgbG9uZyBkb3VibGUKICB0YW4obG9uZyBk
b3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl90YW5sKF9feCk7IH0KCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBjb25zdGV4cHIKICAgIHR5cGVuYW1lIF9fZ251X2N4
eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgdGFuKF9UcCBfX3gpCiAg
ICB7IHJldHVybiBfX2J1aWx0aW5fdGFuKF9feCk7IH0KCiAgdXNpbmcgOjp0YW5oOwoKCiAgaW5s
aW5lIGNvbnN0ZXhwciBmbG9hdAogIHRhbmgoZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRp
bl90YW5oZihfX3gpOyB9CgogIGlubGluZSBjb25zdGV4cHIgbG9uZyBkb3VibGUKICB0YW5oKGxv
bmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fdGFuaGwoX194KTsgfQoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbnN0ZXhwcgogICAgdHlwZW5hbWUgX19n
bnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlPjo6X190eXBlCiAgICB0YW5oKF9UcCBf
X3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fdGFuaChfX3gpOyB9CgoKfQoKCgoKCiN1bmRlZiBm
cGNsYXNzaWZ5CiN1bmRlZiBpc2Zpbml0ZQojdW5kZWYgaXNpbmYKI3VuZGVmIGlzbmFuCiN1bmRl
ZiBpc25vcm1hbAojdW5kZWYgc2lnbmJpdAojdW5kZWYgaXNncmVhdGVyCiN1bmRlZiBpc2dyZWF0
ZXJlcXVhbAojdW5kZWYgaXNsZXNzCiN1bmRlZiBpc2xlc3NlcXVhbAojdW5kZWYgaXNsZXNzZ3Jl
YXRlcgojdW5kZWYgaXN1bm9yZGVyZWQKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9f
dmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCgogIGNvbnN0ZXhwciBpbnQKICBmcGNsYXNz
aWZ5KGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fZnBjbGFzc2lmeSgwLCAxLCA0LAog
ICAgMywgMiwgX194KTsgfQoKICBjb25zdGV4cHIgaW50CiAgZnBjbGFzc2lmeShkb3VibGUgX194
KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mcGNsYXNzaWZ5KDAsIDEsIDQsCiAgICAzLCAyLCBfX3gp
OyB9CgogIGNvbnN0ZXhwciBpbnQKICBmcGNsYXNzaWZ5KGxvbmcgZG91YmxlIF9feCkKICB7IHJl
dHVybiBfX2J1aWx0aW5fZnBjbGFzc2lmeSgwLCAxLCA0LAogICAgMywgMiwgX194KTsgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19nbnVfY3h4Ojpf
X2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludD46Ol9fdHlwZQogICAgZnBjbGFzc2lmeShf
VHAgX194KQogICAgeyByZXR1cm4gX194ICE9IDAgPyA0IDogMjsgfQoKICBjb25zdGV4cHIgYm9v
bAogIGlzZmluaXRlKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5faXNmaW5pdGUoX194
KTsgfQoKICBjb25zdGV4cHIgYm9vbAogIGlzZmluaXRlKGRvdWJsZSBfX3gpCiAgeyByZXR1cm4g
X19idWlsdGluX2lzZmluaXRlKF9feCk7IH0KCiAgY29uc3RleHByIGJvb2wKICBpc2Zpbml0ZShs
b25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2lzZmluaXRlKF9feCk7IH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6
X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sPjo6X190eXBlCiAgICBpc2Zpbml0ZShf
VHAgX194KQogICAgeyByZXR1cm4gdHJ1ZTsgfQoKICBjb25zdGV4cHIgYm9vbAogIGlzaW5mKGZs
b2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5faXNpbmYoX194KTsgfQoKICBjb25zdGV4cHIg
Ym9vbAogIGlzaW5mKGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2lzaW5mKF9feCk7
IH0KCiAgY29uc3RleHByIGJvb2wKICBpc2luZihsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4g
X19idWlsdGluX2lzaW5mKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29u
c3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46
Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sPjo6X190eXBlCiAgICBpc2luZihfVHAgX194KQogICAgeyByZXR1cm4gZmFsc2U7IH0KCiAg
Y29uc3RleHByIGJvb2wKICBpc25hbihmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2lz
bmFuKF9feCk7IH0KCiAgY29uc3RleHByIGJvb2wKICBpc25hbihkb3VibGUgX194KQogIHsgcmV0
dXJuIF9fYnVpbHRpbl9pc25hbihfX3gpOyB9CgogIGNvbnN0ZXhwciBib29sCiAgaXNuYW4obG9u
ZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9pc25hbihfX3gpOyB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICAgIGNvbnN0ZXhwciB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5h
YmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbD46Ol9fdHlwZQogICAgaXNuYW4oX1RwIF9feCkK
ICAgIHsgcmV0dXJuIGZhbHNlOyB9CgogIGNvbnN0ZXhwciBib29sCiAgaXNub3JtYWwoZmxvYXQg
X194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9pc25vcm1hbChfX3gpOyB9CgogIGNvbnN0ZXhwciBi
b29sCiAgaXNub3JtYWwoZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5faXNub3JtYWwo
X194KTsgfQoKICBjb25zdGV4cHIgYm9vbAogIGlzbm9ybWFsKGxvbmcgZG91YmxlIF9feCkKICB7
IHJldHVybiBfX2J1aWx0aW5faXNub3JtYWwoX194KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2lu
dGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2w+OjpfX3R5cGUKICAgIGlzbm9ybWFsKF9UcCBfX3gpCiAgICB7IHJldHVy
biBfX3ggIT0gMCA/IHRydWUgOiBmYWxzZTsgfQoKCiAgY29uc3RleHByIGJvb2wKICBzaWduYml0
KGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fc2lnbmJpdGYoX194KTsgfQoKICBjb25z
dGV4cHIgYm9vbAogIHNpZ25iaXQoZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fc2ln
bmJpdChfX3gpOyB9CgogIGNvbnN0ZXhwciBib29sCiAgc2lnbmJpdChsb25nIGRvdWJsZSBfX3gp
CiAgeyByZXR1cm4gX19idWlsdGluX3NpZ25iaXRsKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19p
c19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sPjo6X190eXBlCiAgICBzaWduYml0KF9UcCBfX3gpCiAgICB7IHJl
dHVybiBfX3ggPCAwID8gdHJ1ZSA6IGZhbHNlOyB9CgogIGNvbnN0ZXhwciBib29sCiAgaXNncmVh
dGVyKGZsb2F0IF9feCwgZmxvYXQgX195KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9pc2dyZWF0ZXIo
X194LCBfX3kpOyB9CgogIGNvbnN0ZXhwciBib29sCiAgaXNncmVhdGVyKGRvdWJsZSBfX3gsIGRv
dWJsZSBfX3kpCiAgeyByZXR1cm4gX19idWlsdGluX2lzZ3JlYXRlcihfX3gsIF9feSk7IH0KCiAg
Y29uc3RleHByIGJvb2wKICBpc2dyZWF0ZXIobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBf
X3kpCiAgeyByZXR1cm4gX19idWlsdGluX2lzZ3JlYXRlcihfX3gsIF9feSk7IH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUKICAg
IF9fZ251X2N4eDo6X19lbmFibGVfaWY8KF9faXNfYXJpdGhtZXRpYzxfVHA+OjpfX3ZhbHVlCiAg
ICAgICAmJiBfX2lzX2FyaXRobWV0aWM8X1VwPjo6X192YWx1ZSksIGJvb2w+OjpfX3R5cGUKICAg
IGlzZ3JlYXRlcihfVHAgX194LCBfVXAgX195KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1l
IF9fZ251X2N4eDo6X19wcm9tb3RlXzI8X1RwLCBfVXA+OjpfX3R5cGUgX190eXBlOwogICAgICBy
ZXR1cm4gX19idWlsdGluX2lzZ3JlYXRlcihfX3R5cGUoX194KSwgX190eXBlKF9feSkpOwogICAg
fQoKICBjb25zdGV4cHIgYm9vbAogIGlzZ3JlYXRlcmVxdWFsKGZsb2F0IF9feCwgZmxvYXQgX195
KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9pc2dyZWF0ZXJlcXVhbChfX3gsIF9feSk7IH0KCiAgY29u
c3RleHByIGJvb2wKICBpc2dyZWF0ZXJlcXVhbChkb3VibGUgX194LCBkb3VibGUgX195KQogIHsg
cmV0dXJuIF9fYnVpbHRpbl9pc2dyZWF0ZXJlcXVhbChfX3gsIF9feSk7IH0KCiAgY29uc3RleHBy
IGJvb2wKICBpc2dyZWF0ZXJlcXVhbChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkK
ICB7IHJldHVybiBfX2J1aWx0aW5faXNncmVhdGVyZXF1YWwoX194LCBfX3kpOyB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwPgogICAgY29uc3RleHByIHR5cGVuYW1lCiAg
ICBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPChfX2lzX2FyaXRobWV0aWM8X1RwPjo6X192YWx1ZQog
ICAgICAgJiYgX19pc19hcml0aG1ldGljPF9VcD46Ol9fdmFsdWUpLCBib29sPjo6X190eXBlCiAg
ICBpc2dyZWF0ZXJlcXVhbChfVHAgX194LCBfVXAgX195KQogICAgewogICAgICB0eXBlZGVmIHR5
cGVuYW1lIF9fZ251X2N4eDo6X19wcm9tb3RlXzI8X1RwLCBfVXA+OjpfX3R5cGUgX190eXBlOwog
ICAgICByZXR1cm4gX19idWlsdGluX2lzZ3JlYXRlcmVxdWFsKF9fdHlwZShfX3gpLCBfX3R5cGUo
X195KSk7CiAgICB9CgogIGNvbnN0ZXhwciBib29sCiAgaXNsZXNzKGZsb2F0IF9feCwgZmxvYXQg
X195KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9pc2xlc3MoX194LCBfX3kpOyB9CgogIGNvbnN0ZXhw
ciBib29sCiAgaXNsZXNzKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpCiAgeyByZXR1cm4gX19idWls
dGluX2lzbGVzcyhfX3gsIF9feSk7IH0KCiAgY29uc3RleHByIGJvb2wKICBpc2xlc3MobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpCiAgeyByZXR1cm4gX19idWlsdGluX2lzbGVzcyhf
X3gsIF9feSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+CiAgICBj
b25zdGV4cHIgdHlwZW5hbWUKICAgIF9fZ251X2N4eDo6X19lbmFibGVfaWY8KF9faXNfYXJpdGht
ZXRpYzxfVHA+OjpfX3ZhbHVlCiAgICAgICAmJiBfX2lzX2FyaXRobWV0aWM8X1VwPjo6X192YWx1
ZSksIGJvb2w+OjpfX3R5cGUKICAgIGlzbGVzcyhfVHAgX194LCBfVXAgX195KQogICAgewogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIF9fZ251X2N4eDo6X19wcm9tb3RlXzI8X1RwLCBfVXA+OjpfX3R5
cGUgX190eXBlOwogICAgICByZXR1cm4gX19idWlsdGluX2lzbGVzcyhfX3R5cGUoX194KSwgX190
eXBlKF9feSkpOwogICAgfQoKICBjb25zdGV4cHIgYm9vbAogIGlzbGVzc2VxdWFsKGZsb2F0IF9f
eCwgZmxvYXQgX195KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9pc2xlc3NlcXVhbChfX3gsIF9feSk7
IH0KCiAgY29uc3RleHByIGJvb2wKICBpc2xlc3NlcXVhbChkb3VibGUgX194LCBkb3VibGUgX195
KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9pc2xlc3NlcXVhbChfX3gsIF9feSk7IH0KCiAgY29uc3Rl
eHByIGJvb2wKICBpc2xlc3NlcXVhbChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkK
ICB7IHJldHVybiBfX2J1aWx0aW5faXNsZXNzZXF1YWwoX194LCBfX3kpOyB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwPgogICAgY29uc3RleHByIHR5cGVuYW1lCiAgICBf
X2dudV9jeHg6Ol9fZW5hYmxlX2lmPChfX2lzX2FyaXRobWV0aWM8X1RwPjo6X192YWx1ZQogICAg
ICAgJiYgX19pc19hcml0aG1ldGljPF9VcD46Ol9fdmFsdWUpLCBib29sPjo6X190eXBlCiAgICBp
c2xlc3NlcXVhbChfVHAgX194LCBfVXAgX195KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1l
IF9fZ251X2N4eDo6X19wcm9tb3RlXzI8X1RwLCBfVXA+OjpfX3R5cGUgX190eXBlOwogICAgICBy
ZXR1cm4gX19idWlsdGluX2lzbGVzc2VxdWFsKF9fdHlwZShfX3gpLCBfX3R5cGUoX195KSk7CiAg
ICB9CgogIGNvbnN0ZXhwciBib29sCiAgaXNsZXNzZ3JlYXRlcihmbG9hdCBfX3gsIGZsb2F0IF9f
eSkKICB7IHJldHVybiBfX2J1aWx0aW5faXNsZXNzZ3JlYXRlcihfX3gsIF9feSk7IH0KCiAgY29u
c3RleHByIGJvb2wKICBpc2xlc3NncmVhdGVyKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpCiAgeyBy
ZXR1cm4gX19idWlsdGluX2lzbGVzc2dyZWF0ZXIoX194LCBfX3kpOyB9CgogIGNvbnN0ZXhwciBi
b29sCiAgaXNsZXNzZ3JlYXRlcihsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkKICB7
IHJldHVybiBfX2J1aWx0aW5faXNsZXNzZ3JlYXRlcihfX3gsIF9feSk7IH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUKICAgIF9f
Z251X2N4eDo6X19lbmFibGVfaWY8KF9faXNfYXJpdGhtZXRpYzxfVHA+OjpfX3ZhbHVlCiAgICAg
ICAmJiBfX2lzX2FyaXRobWV0aWM8X1VwPjo6X192YWx1ZSksIGJvb2w+OjpfX3R5cGUKICAgIGlz
bGVzc2dyZWF0ZXIoX1RwIF9feCwgX1VwIF9feSkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBfX2dudV9jeHg6Ol9fcHJvbW90ZV8yPF9UcCwgX1VwPjo6X190eXBlIF9fdHlwZTsKICAgICAg
cmV0dXJuIF9fYnVpbHRpbl9pc2xlc3NncmVhdGVyKF9fdHlwZShfX3gpLCBfX3R5cGUoX195KSk7
CiAgICB9CgogIGNvbnN0ZXhwciBib29sCiAgaXN1bm9yZGVyZWQoZmxvYXQgX194LCBmbG9hdCBf
X3kpCiAgeyByZXR1cm4gX19idWlsdGluX2lzdW5vcmRlcmVkKF9feCwgX195KTsgfQoKICBjb25z
dGV4cHIgYm9vbAogIGlzdW5vcmRlcmVkKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpCiAgeyByZXR1
cm4gX19idWlsdGluX2lzdW5vcmRlcmVkKF9feCwgX195KTsgfQoKICBjb25zdGV4cHIgYm9vbAog
IGlzdW5vcmRlcmVkKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KQogIHsgcmV0dXJu
IF9fYnVpbHRpbl9pc3Vub3JkZXJlZChfX3gsIF9feSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwLCB0eXBlbmFtZSBfVXA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUKICAgIF9fZ251X2N4eDo6
X19lbmFibGVfaWY8KF9faXNfYXJpdGhtZXRpYzxfVHA+OjpfX3ZhbHVlCiAgICAgICAmJiBfX2lz
X2FyaXRobWV0aWM8X1VwPjo6X192YWx1ZSksIGJvb2w+OjpfX3R5cGUKICAgIGlzdW5vcmRlcmVk
KF9UcCBfX3gsIF9VcCBfX3kpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19nbnVfY3h4
OjpfX3Byb21vdGVfMjxfVHAsIF9VcD46Ol9fdHlwZSBfX3R5cGU7CiAgICAgIHJldHVybiBfX2J1
aWx0aW5faXN1bm9yZGVyZWQoX190eXBlKF9feCksIF9fdHlwZShfX3kpKTsKICAgIH0KIyA5MTcg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
Y21hdGgiIDMKCn0KIyA5MjcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvY21hdGgiIDMKI3VuZGVmIGFjb3NoCiN1bmRlZiBhY29zaGYKI3Vu
ZGVmIGFjb3NobAojdW5kZWYgYXNpbmgKI3VuZGVmIGFzaW5oZgojdW5kZWYgYXNpbmhsCiN1bmRl
ZiBhdGFuaAojdW5kZWYgYXRhbmhmCiN1bmRlZiBhdGFuaGwKI3VuZGVmIGNicnQKI3VuZGVmIGNi
cnRmCiN1bmRlZiBjYnJ0bAojdW5kZWYgY29weXNpZ24KI3VuZGVmIGNvcHlzaWduZgojdW5kZWYg
Y29weXNpZ25sCiN1bmRlZiBlcmYKI3VuZGVmIGVyZmYKI3VuZGVmIGVyZmwKI3VuZGVmIGVyZmMK
I3VuZGVmIGVyZmNmCiN1bmRlZiBlcmZjbAojdW5kZWYgZXhwMgojdW5kZWYgZXhwMmYKI3VuZGVm
IGV4cDJsCiN1bmRlZiBleHBtMQojdW5kZWYgZXhwbTFmCiN1bmRlZiBleHBtMWwKI3VuZGVmIGZk
aW0KI3VuZGVmIGZkaW1mCiN1bmRlZiBmZGltbAojdW5kZWYgZm1hCiN1bmRlZiBmbWFmCiN1bmRl
ZiBmbWFsCiN1bmRlZiBmbWF4CiN1bmRlZiBmbWF4ZgojdW5kZWYgZm1heGwKI3VuZGVmIGZtaW4K
I3VuZGVmIGZtaW5mCiN1bmRlZiBmbWlubAojdW5kZWYgaHlwb3QKI3VuZGVmIGh5cG90ZgojdW5k
ZWYgaHlwb3RsCiN1bmRlZiBpbG9nYgojdW5kZWYgaWxvZ2JmCiN1bmRlZiBpbG9nYmwKI3VuZGVm
IGxnYW1tYQojdW5kZWYgbGdhbW1hZgojdW5kZWYgbGdhbW1hbAojdW5kZWYgbGxyaW50CiN1bmRl
ZiBsbHJpbnRmCiN1bmRlZiBsbHJpbnRsCiN1bmRlZiBsbHJvdW5kCiN1bmRlZiBsbHJvdW5kZgoj
dW5kZWYgbGxyb3VuZGwKI3VuZGVmIGxvZzFwCiN1bmRlZiBsb2cxcGYKI3VuZGVmIGxvZzFwbAoj
dW5kZWYgbG9nMgojdW5kZWYgbG9nMmYKI3VuZGVmIGxvZzJsCiN1bmRlZiBsb2diCiN1bmRlZiBs
b2diZgojdW5kZWYgbG9nYmwKI3VuZGVmIGxyaW50CiN1bmRlZiBscmludGYKI3VuZGVmIGxyaW50
bAojdW5kZWYgbHJvdW5kCiN1bmRlZiBscm91bmRmCiN1bmRlZiBscm91bmRsCiN1bmRlZiBuYW4K
I3VuZGVmIG5hbmYKI3VuZGVmIG5hbmwKI3VuZGVmIG5lYXJieWludAojdW5kZWYgbmVhcmJ5aW50
ZgojdW5kZWYgbmVhcmJ5aW50bAojdW5kZWYgbmV4dGFmdGVyCiN1bmRlZiBuZXh0YWZ0ZXJmCiN1
bmRlZiBuZXh0YWZ0ZXJsCiN1bmRlZiBuZXh0dG93YXJkCiN1bmRlZiBuZXh0dG93YXJkZgojdW5k
ZWYgbmV4dHRvd2FyZGwKI3VuZGVmIHJlbWFpbmRlcgojdW5kZWYgcmVtYWluZGVyZgojdW5kZWYg
cmVtYWluZGVybAojdW5kZWYgcmVtcXVvCiN1bmRlZiByZW1xdW9mCiN1bmRlZiByZW1xdW9sCiN1
bmRlZiByaW50CiN1bmRlZiByaW50ZgojdW5kZWYgcmludGwKI3VuZGVmIHJvdW5kCiN1bmRlZiBy
b3VuZGYKI3VuZGVmIHJvdW5kbAojdW5kZWYgc2NhbGJsbgojdW5kZWYgc2NhbGJsbmYKI3VuZGVm
IHNjYWxibG5sCiN1bmRlZiBzY2FsYm4KI3VuZGVmIHNjYWxibmYKI3VuZGVmIHNjYWxibmwKI3Vu
ZGVmIHRnYW1tYQojdW5kZWYgdGdhbW1hZgojdW5kZWYgdGdhbW1hbAojdW5kZWYgdHJ1bmMKI3Vu
ZGVmIHRydW5jZgojdW5kZWYgdHJ1bmNsCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChf
X3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKICB1c2luZyA6OmRvdWJsZV90OwogIHVz
aW5nIDo6ZmxvYXRfdDsKCgogIHVzaW5nIDo6YWNvc2g7CiAgdXNpbmcgOjphY29zaGY7CiAgdXNp
bmcgOjphY29zaGw7CgogIHVzaW5nIDo6YXNpbmg7CiAgdXNpbmcgOjphc2luaGY7CiAgdXNpbmcg
Ojphc2luaGw7CgogIHVzaW5nIDo6YXRhbmg7CiAgdXNpbmcgOjphdGFuaGY7CiAgdXNpbmcgOjph
dGFuaGw7CgogIHVzaW5nIDo6Y2JydDsKICB1c2luZyA6OmNicnRmOwogIHVzaW5nIDo6Y2JydGw7
CgogIHVzaW5nIDo6Y29weXNpZ247CiAgdXNpbmcgOjpjb3B5c2lnbmY7CiAgdXNpbmcgOjpjb3B5
c2lnbmw7CgogIHVzaW5nIDo6ZXJmOwogIHVzaW5nIDo6ZXJmZjsKICB1c2luZyA6OmVyZmw7Cgog
IHVzaW5nIDo6ZXJmYzsKICB1c2luZyA6OmVyZmNmOwogIHVzaW5nIDo6ZXJmY2w7CgogIHVzaW5n
IDo6ZXhwMjsKICB1c2luZyA6OmV4cDJmOwogIHVzaW5nIDo6ZXhwMmw7CgogIHVzaW5nIDo6ZXhw
bTE7CiAgdXNpbmcgOjpleHBtMWY7CiAgdXNpbmcgOjpleHBtMWw7CgogIHVzaW5nIDo6ZmRpbTsK
ICB1c2luZyA6OmZkaW1mOwogIHVzaW5nIDo6ZmRpbWw7CgogIHVzaW5nIDo6Zm1hOwogIHVzaW5n
IDo6Zm1hZjsKICB1c2luZyA6OmZtYWw7CgogIHVzaW5nIDo6Zm1heDsKICB1c2luZyA6OmZtYXhm
OwogIHVzaW5nIDo6Zm1heGw7CgogIHVzaW5nIDo6Zm1pbjsKICB1c2luZyA6OmZtaW5mOwogIHVz
aW5nIDo6Zm1pbmw7CgogIHVzaW5nIDo6aHlwb3Q7CiAgdXNpbmcgOjpoeXBvdGY7CiAgdXNpbmcg
OjpoeXBvdGw7CgogIHVzaW5nIDo6aWxvZ2I7CiAgdXNpbmcgOjppbG9nYmY7CiAgdXNpbmcgOjpp
bG9nYmw7CgogIHVzaW5nIDo6bGdhbW1hOwogIHVzaW5nIDo6bGdhbW1hZjsKICB1c2luZyA6Omxn
YW1tYWw7CgogIHVzaW5nIDo6bGxyaW50OwogIHVzaW5nIDo6bGxyaW50ZjsKICB1c2luZyA6Omxs
cmludGw7CgogIHVzaW5nIDo6bGxyb3VuZDsKICB1c2luZyA6Omxscm91bmRmOwogIHVzaW5nIDo6
bGxyb3VuZGw7CgogIHVzaW5nIDo6bG9nMXA7CiAgdXNpbmcgOjpsb2cxcGY7CiAgdXNpbmcgOjps
b2cxcGw7CgogIHVzaW5nIDo6bG9nMjsKICB1c2luZyA6OmxvZzJmOwogIHVzaW5nIDo6bG9nMmw7
CgogIHVzaW5nIDo6bG9nYjsKICB1c2luZyA6OmxvZ2JmOwogIHVzaW5nIDo6bG9nYmw7CgogIHVz
aW5nIDo6bHJpbnQ7CiAgdXNpbmcgOjpscmludGY7CiAgdXNpbmcgOjpscmludGw7CgogIHVzaW5n
IDo6bHJvdW5kOwogIHVzaW5nIDo6bHJvdW5kZjsKICB1c2luZyA6Omxyb3VuZGw7CgogIHVzaW5n
IDo6bmFuOwogIHVzaW5nIDo6bmFuZjsKICB1c2luZyA6Om5hbmw7CgogIHVzaW5nIDo6bmVhcmJ5
aW50OwogIHVzaW5nIDo6bmVhcmJ5aW50ZjsKICB1c2luZyA6Om5lYXJieWludGw7CgogIHVzaW5n
IDo6bmV4dGFmdGVyOwogIHVzaW5nIDo6bmV4dGFmdGVyZjsKICB1c2luZyA6Om5leHRhZnRlcmw7
CgogIHVzaW5nIDo6bmV4dHRvd2FyZDsKICB1c2luZyA6Om5leHR0b3dhcmRmOwogIHVzaW5nIDo6
bmV4dHRvd2FyZGw7CgogIHVzaW5nIDo6cmVtYWluZGVyOwogIHVzaW5nIDo6cmVtYWluZGVyZjsK
ICB1c2luZyA6OnJlbWFpbmRlcmw7CgogIHVzaW5nIDo6cmVtcXVvOwogIHVzaW5nIDo6cmVtcXVv
ZjsKICB1c2luZyA6OnJlbXF1b2w7CgogIHVzaW5nIDo6cmludDsKICB1c2luZyA6OnJpbnRmOwog
IHVzaW5nIDo6cmludGw7CgogIHVzaW5nIDo6cm91bmQ7CiAgdXNpbmcgOjpyb3VuZGY7CiAgdXNp
bmcgOjpyb3VuZGw7CgogIHVzaW5nIDo6c2NhbGJsbjsKICB1c2luZyA6OnNjYWxibG5mOwogIHVz
aW5nIDo6c2NhbGJsbmw7CgogIHVzaW5nIDo6c2NhbGJuOwogIHVzaW5nIDo6c2NhbGJuZjsKICB1
c2luZyA6OnNjYWxibmw7CgogIHVzaW5nIDo6dGdhbW1hOwogIHVzaW5nIDo6dGdhbW1hZjsKICB1
c2luZyA6OnRnYW1tYWw7CgogIHVzaW5nIDo6dHJ1bmM7CiAgdXNpbmcgOjp0cnVuY2Y7CiAgdXNp
bmcgOjp0cnVuY2w7CgoKICBjb25zdGV4cHIgZmxvYXQKICBhY29zaChmbG9hdCBfX3gpCiAgeyBy
ZXR1cm4gX19idWlsdGluX2Fjb3NoZihfX3gpOyB9CgogIGNvbnN0ZXhwciBsb25nIGRvdWJsZQog
IGFjb3NoKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fYWNvc2hsKF9feCk7
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251
X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGFj
b3NoKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fYWNvc2goX194KTsgfQoKICBjb25z
dGV4cHIgZmxvYXQKICBhc2luaChmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2FzaW5o
ZihfX3gpOyB9CgogIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIGFzaW5oKGxvbmcgZG91YmxlIF9f
eCkKICB7IHJldHVybiBfX2J1aWx0aW5fYXNpbmhsKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19p
c19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGFzaW5oKF9UcCBfX3gpCiAgICB7IHJl
dHVybiBfX2J1aWx0aW5fYXNpbmgoX194KTsgfQoKICBjb25zdGV4cHIgZmxvYXQKICBhdGFuaChm
bG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2F0YW5oZihfX3gpOyB9CgogIGNvbnN0ZXhw
ciBsb25nIGRvdWJsZQogIGF0YW5oKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0
aW5fYXRhbmhsKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHBy
IHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFs
dWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+
OjpfX3R5cGUKICAgIGF0YW5oKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fYXRhbmgo
X194KTsgfQoKICBjb25zdGV4cHIgZmxvYXQKICBjYnJ0KGZsb2F0IF9feCkKICB7IHJldHVybiBf
X2J1aWx0aW5fY2JydGYoX194KTsgfQoKICBjb25zdGV4cHIgbG9uZyBkb3VibGUKICBjYnJ0KGxv
bmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fY2JydGwoX194KTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2Vu
YWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgY2JydChfVHAgX194
KQogICAgeyByZXR1cm4gX19idWlsdGluX2NicnQoX194KTsgfQoKICBjb25zdGV4cHIgZmxvYXQK
ICBjb3B5c2lnbihmbG9hdCBfX3gsIGZsb2F0IF9feSkKICB7IHJldHVybiBfX2J1aWx0aW5fY29w
eXNpZ25mKF9feCwgX195KTsgfQoKICBjb25zdGV4cHIgbG9uZyBkb3VibGUKICBjb3B5c2lnbihs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkKICB7IHJldHVybiBfX2J1aWx0aW5fY29w
eXNpZ25sKF9feCwgX195KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9V
cD4KICAgIGNvbnN0ZXhwciB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90ZV8yPF9UcCwgX1Vw
Pjo6X190eXBlCiAgICBjb3B5c2lnbihfVHAgX194LCBfVXAgX195KQogICAgewogICAgICB0eXBl
ZGVmIHR5cGVuYW1lIF9fZ251X2N4eDo6X19wcm9tb3RlXzI8X1RwLCBfVXA+OjpfX3R5cGUgX190
eXBlOwogICAgICByZXR1cm4gY29weXNpZ24oX190eXBlKF9feCksIF9fdHlwZShfX3kpKTsKICAg
IH0KCiAgY29uc3RleHByIGZsb2F0CiAgZXJmKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0
aW5fZXJmZihfX3gpOyB9CgogIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIGVyZihsb25nIGRvdWJs
ZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2VyZmwoX194KTsgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxf
X2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgZXJmKF9UcCBfX3gpCiAgICB7IHJl
dHVybiBfX2J1aWx0aW5fZXJmKF9feCk7IH0KCiAgY29uc3RleHByIGZsb2F0CiAgZXJmYyhmbG9h
dCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2VyZmNmKF9feCk7IH0KCiAgY29uc3RleHByIGxv
bmcgZG91YmxlCiAgZXJmYyhsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2Vy
ZmNsKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHByIHR5cGVu
YW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5
cGUKICAgIGVyZmMoX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9lcmZjKF9feCk7IH0K
CiAgY29uc3RleHByIGZsb2F0CiAgZXhwMihmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGlu
X2V4cDJmKF9feCk7IH0KCiAgY29uc3RleHByIGxvbmcgZG91YmxlCiAgZXhwMihsb25nIGRvdWJs
ZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2V4cDJsKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8
X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGV4cDIoX1RwIF9feCkKICAgIHsg
cmV0dXJuIF9fYnVpbHRpbl9leHAyKF9feCk7IH0KCiAgY29uc3RleHByIGZsb2F0CiAgZXhwbTEo
ZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9leHBtMWYoX194KTsgfQoKICBjb25zdGV4
cHIgbG9uZyBkb3VibGUKICBleHBtMShsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWls
dGluX2V4cG0xbChfX3gpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGNvbnN0ZXhw
ciB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3Zh
bHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91Ymxl
Pjo6X190eXBlCiAgICBleHBtMShfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGluX2V4cG0x
KF9feCk7IH0KCiAgY29uc3RleHByIGZsb2F0CiAgZmRpbShmbG9hdCBfX3gsIGZsb2F0IF9feSkK
ICB7IHJldHVybiBfX2J1aWx0aW5fZmRpbWYoX194LCBfX3kpOyB9CgogIGNvbnN0ZXhwciBsb25n
IGRvdWJsZQogIGZkaW0obG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpCiAgeyByZXR1
cm4gX19idWlsdGluX2ZkaW1sKF9feCwgX195KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAs
IHR5cGVuYW1lIF9VcD4KICAgIGNvbnN0ZXhwciB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90
ZV8yPF9UcCwgX1VwPjo6X190eXBlCiAgICBmZGltKF9UcCBfX3gsIF9VcCBfX3kpCiAgICB7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgX19nbnVfY3h4OjpfX3Byb21vdGVfMjxfVHAsIF9VcD46Ol9f
dHlwZSBfX3R5cGU7CiAgICAgIHJldHVybiBmZGltKF9fdHlwZShfX3gpLCBfX3R5cGUoX195KSk7
CiAgICB9CgogIGNvbnN0ZXhwciBmbG9hdAogIGZtYShmbG9hdCBfX3gsIGZsb2F0IF9feSwgZmxv
YXQgX196KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mbWFmKF9feCwgX195LCBfX3opOyB9CgogIGNv
bnN0ZXhwciBsb25nIGRvdWJsZQogIGZtYShsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9f
eSwgbG9uZyBkb3VibGUgX196KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mbWFsKF9feCwgX195LCBf
X3opOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwLCB0eXBlbmFtZSBf
VnA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19nbnVfY3h4OjpfX3Byb21vdGVfMzxfVHAsIF9V
cCwgX1ZwPjo6X190eXBlCiAgICBmbWEoX1RwIF9feCwgX1VwIF9feSwgX1ZwIF9feikKICAgIHsK
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90ZV8zPF9UcCwgX1VwLCBf
VnA+OjpfX3R5cGUgX190eXBlOwogICAgICByZXR1cm4gZm1hKF9fdHlwZShfX3gpLCBfX3R5cGUo
X195KSwgX190eXBlKF9feikpOwogICAgfQoKICBjb25zdGV4cHIgZmxvYXQKICBmbWF4KGZsb2F0
IF9feCwgZmxvYXQgX195KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mbWF4ZihfX3gsIF9feSk7IH0K
CiAgY29uc3RleHByIGxvbmcgZG91YmxlCiAgZm1heChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91
YmxlIF9feSkKICB7IHJldHVybiBfX2J1aWx0aW5fZm1heGwoX194LCBfX3kpOyB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9f
Z251X2N4eDo6X19wcm9tb3RlXzI8X1RwLCBfVXA+OjpfX3R5cGUKICAgIGZtYXgoX1RwIF9feCwg
X1VwIF9feSkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90
ZV8yPF9UcCwgX1VwPjo6X190eXBlIF9fdHlwZTsKICAgICAgcmV0dXJuIGZtYXgoX190eXBlKF9f
eCksIF9fdHlwZShfX3kpKTsKICAgIH0KCiAgY29uc3RleHByIGZsb2F0CiAgZm1pbihmbG9hdCBf
X3gsIGZsb2F0IF9feSkKICB7IHJldHVybiBfX2J1aWx0aW5fZm1pbmYoX194LCBfX3kpOyB9Cgog
IGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIGZtaW4obG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs
ZSBfX3kpCiAgeyByZXR1cm4gX19idWlsdGluX2ZtaW5sKF9feCwgX195KTsgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9VcD4KICAgIGNvbnN0ZXhwciB0eXBlbmFtZSBfX2du
dV9jeHg6Ol9fcHJvbW90ZV8yPF9UcCwgX1VwPjo6X190eXBlCiAgICBmbWluKF9UcCBfX3gsIF9V
cCBfX3kpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19nbnVfY3h4OjpfX3Byb21vdGVf
MjxfVHAsIF9VcD46Ol9fdHlwZSBfX3R5cGU7CiAgICAgIHJldHVybiBmbWluKF9fdHlwZShfX3gp
LCBfX3R5cGUoX195KSk7CiAgICB9CgogIGNvbnN0ZXhwciBmbG9hdAogIGh5cG90KGZsb2F0IF9f
eCwgZmxvYXQgX195KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9oeXBvdGYoX194LCBfX3kpOyB9Cgog
IGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIGh5cG90KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3Vi
bGUgX195KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9oeXBvdGwoX194LCBfX3kpOyB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9f
Z251X2N4eDo6X19wcm9tb3RlXzI8X1RwLCBfVXA+OjpfX3R5cGUKICAgIGh5cG90KF9UcCBfX3gs
IF9VcCBfX3kpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19nbnVfY3h4OjpfX3Byb21v
dGVfMjxfVHAsIF9VcD46Ol9fdHlwZSBfX3R5cGU7CiAgICAgIHJldHVybiBoeXBvdChfX3R5cGUo
X194KSwgX190eXBlKF9feSkpOwogICAgfQoKICBjb25zdGV4cHIgaW50CiAgaWxvZ2IoZmxvYXQg
X194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9pbG9nYmYoX194KTsgfQoKICBjb25zdGV4cHIgaW50
CiAgaWxvZ2IobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9pbG9nYmwoX194
KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4cHIKICAgIHR5cGVuYW1l
IF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludD46Ol9fdHlwZQogICAgaWxvZ2IoX1Rw
IF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9pbG9nYihfX3gpOyB9CgogIGNvbnN0ZXhwciBm
bG9hdAogIGxnYW1tYShmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2xnYW1tYWYoX194
KTsgfQoKICBjb25zdGV4cHIgbG9uZyBkb3VibGUKICBsZ2FtbWEobG9uZyBkb3VibGUgX194KQog
IHsgcmV0dXJuIF9fYnVpbHRpbl9sZ2FtbWFsKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19p
bnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGxnYW1tYShfVHAgX194KQogICAgeyByZXR1
cm4gX19idWlsdGluX2xnYW1tYShfX3gpOyB9CgogIGNvbnN0ZXhwciBsb25nIGxvbmcKICBsbHJp
bnQoZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9sbHJpbnRmKF9feCk7IH0KCiAgY29u
c3RleHByIGxvbmcgbG9uZwogIGxscmludChsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19i
dWlsdGluX2xscmludGwoX194KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25z
dGV4cHIgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6
X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv
bmcgbG9uZz46Ol9fdHlwZQogICAgbGxyaW50KF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0
aW5fbGxyaW50KF9feCk7IH0KCiAgY29uc3RleHByIGxvbmcgbG9uZwogIGxscm91bmQoZmxvYXQg
X194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9sbHJvdW5kZihfX3gpOyB9CgogIGNvbnN0ZXhwciBs
b25nIGxvbmcKICBsbHJvdW5kKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5f
bGxyb3VuZGwoX194KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4cHIg
dHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9u
Zz46Ol9fdHlwZQogICAgbGxyb3VuZChfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGluX2xs
cm91bmQoX194KTsgfQoKICBjb25zdGV4cHIgZmxvYXQKICBsb2cxcChmbG9hdCBfX3gpCiAgeyBy
ZXR1cm4gX19idWlsdGluX2xvZzFwZihfX3gpOyB9CgogIGNvbnN0ZXhwciBsb25nIGRvdWJsZQog
IGxvZzFwKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fbG9nMXBsKF9feCk7
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251
X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGxv
ZzFwKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fbG9nMXAoX194KTsgfQoKCiAgY29u
c3RleHByIGZsb2F0CiAgbG9nMihmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2xvZzJm
KF9feCk7IH0KCiAgY29uc3RleHByIGxvbmcgZG91YmxlCiAgbG9nMihsb25nIGRvdWJsZSBfX3gp
CiAgeyByZXR1cm4gX19idWlsdGluX2xvZzJsKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19p
bnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGxvZzIoX1RwIF9feCkKICAgIHsgcmV0dXJu
IF9fYnVpbHRpbl9sb2cyKF9feCk7IH0KCiAgY29uc3RleHByIGZsb2F0CiAgbG9nYihmbG9hdCBf
X3gpCiAgeyByZXR1cm4gX19idWlsdGluX2xvZ2JmKF9feCk7IH0KCiAgY29uc3RleHByIGxvbmcg
ZG91YmxlCiAgbG9nYihsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2xvZ2Js
KF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1l
IF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUK
ICAgIGxvZ2IoX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9sb2diKF9feCk7IH0KCiAg
Y29uc3RleHByIGxvbmcKICBscmludChmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2xy
aW50ZihfX3gpOyB9CgogIGNvbnN0ZXhwciBsb25nCiAgbHJpbnQobG9uZyBkb3VibGUgX194KQog
IHsgcmV0dXJuIF9fYnVpbHRpbl9scmludGwoX194KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2lu
dGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvbmc+OjpfX3R5cGUKICAgIGxyaW50KF9UcCBfX3gpCiAgICB7IHJldHVybiBf
X2J1aWx0aW5fbHJpbnQoX194KTsgfQoKICBjb25zdGV4cHIgbG9uZwogIGxyb3VuZChmbG9hdCBf
X3gpCiAgeyByZXR1cm4gX19idWlsdGluX2xyb3VuZGYoX194KTsgfQoKICBjb25zdGV4cHIgbG9u
ZwogIGxyb3VuZChsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2xyb3VuZGwo
X194KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUg
X19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmc+OjpfX3R5cGUKICAg
IGxyb3VuZChfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGluX2xyb3VuZChfX3gpOyB9Cgog
IGNvbnN0ZXhwciBmbG9hdAogIG5lYXJieWludChmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWls
dGluX25lYXJieWludGYoX194KTsgfQoKICBjb25zdGV4cHIgbG9uZyBkb3VibGUKICBuZWFyYnlp
bnQobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9uZWFyYnlpbnRsKF9feCk7
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251
X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIG5l
YXJieWludChfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGluX25lYXJieWludChfX3gpOyB9
CgogIGNvbnN0ZXhwciBmbG9hdAogIG5leHRhZnRlcihmbG9hdCBfX3gsIGZsb2F0IF9feSkKICB7
IHJldHVybiBfX2J1aWx0aW5fbmV4dGFmdGVyZihfX3gsIF9feSk7IH0KCiAgY29uc3RleHByIGxv
bmcgZG91YmxlCiAgbmV4dGFmdGVyKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KQog
IHsgcmV0dXJuIF9fYnVpbHRpbl9uZXh0YWZ0ZXJsKF9feCwgX195KTsgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9VcD4KICAgIGNvbnN0ZXhwciB0eXBlbmFtZSBfX2dudV9j
eHg6Ol9fcHJvbW90ZV8yPF9UcCwgX1VwPjo6X190eXBlCiAgICBuZXh0YWZ0ZXIoX1RwIF9feCwg
X1VwIF9feSkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90
ZV8yPF9UcCwgX1VwPjo6X190eXBlIF9fdHlwZTsKICAgICAgcmV0dXJuIG5leHRhZnRlcihfX3R5
cGUoX194KSwgX190eXBlKF9feSkpOwogICAgfQoKICBjb25zdGV4cHIgZmxvYXQKICBuZXh0dG93
YXJkKGZsb2F0IF9feCwgbG9uZyBkb3VibGUgX195KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9uZXh0
dG93YXJkZihfX3gsIF9feSk7IH0KCiAgY29uc3RleHByIGxvbmcgZG91YmxlCiAgbmV4dHRvd2Fy
ZChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkKICB7IHJldHVybiBfX2J1aWx0aW5f
bmV4dHRvd2FyZGwoX194LCBfX3kpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGNv
bnN0ZXhwciB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+
OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG91YmxlPjo6X190eXBlCiAgICBuZXh0dG93YXJkKF9UcCBfX3gsIGxvbmcgZG91YmxlIF9feSkK
ICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9uZXh0dG93YXJkKF9feCwgX195KTsgfQoKICBjb25zdGV4
cHIgZmxvYXQKICByZW1haW5kZXIoZmxvYXQgX194LCBmbG9hdCBfX3kpCiAgeyByZXR1cm4gX19i
dWlsdGluX3JlbWFpbmRlcmYoX194LCBfX3kpOyB9CgogIGNvbnN0ZXhwciBsb25nIGRvdWJsZQog
IHJlbWFpbmRlcihsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkKICB7IHJldHVybiBf
X2J1aWx0aW5fcmVtYWluZGVybChfX3gsIF9feSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
LCB0eXBlbmFtZSBfVXA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19nbnVfY3h4OjpfX3Byb21v
dGVfMjxfVHAsIF9VcD46Ol9fdHlwZQogICAgcmVtYWluZGVyKF9UcCBfX3gsIF9VcCBfX3kpCiAg
ICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19nbnVfY3h4OjpfX3Byb21vdGVfMjxfVHAsIF9V
cD46Ol9fdHlwZSBfX3R5cGU7CiAgICAgIHJldHVybiByZW1haW5kZXIoX190eXBlKF9feCksIF9f
dHlwZShfX3kpKTsKICAgIH0KCiAgaW5saW5lIGZsb2F0CiAgcmVtcXVvKGZsb2F0IF9feCwgZmxv
YXQgX195LCBpbnQqIF9fcHF1bykKICB7IHJldHVybiBfX2J1aWx0aW5fcmVtcXVvZihfX3gsIF9f
eSwgX19wcXVvKTsgfQoKICBpbmxpbmUgbG9uZyBkb3VibGUKICByZW1xdW8obG9uZyBkb3VibGUg
X194LCBsb25nIGRvdWJsZSBfX3ksIGludCogX19wcXVvKQogIHsgcmV0dXJuIF9fYnVpbHRpbl9y
ZW1xdW9sKF9feCwgX195LCBfX3BxdW8pOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlw
ZW5hbWUgX1VwPgogICAgaW5saW5lIHR5cGVuYW1lIF9fZ251X2N4eDo6X19wcm9tb3RlXzI8X1Rw
LCBfVXA+OjpfX3R5cGUKICAgIHJlbXF1byhfVHAgX194LCBfVXAgX195LCBpbnQqIF9fcHF1bykK
ICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90ZV8yPF9UcCwg
X1VwPjo6X190eXBlIF9fdHlwZTsKICAgICAgcmV0dXJuIHJlbXF1byhfX3R5cGUoX194KSwgX190
eXBlKF9feSksIF9fcHF1byk7CiAgICB9CgogIGNvbnN0ZXhwciBmbG9hdAogIHJpbnQoZmxvYXQg
X194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9yaW50ZihfX3gpOyB9CgogIGNvbnN0ZXhwciBsb25n
IGRvdWJsZQogIHJpbnQobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9yaW50
bChfX3gpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGNvbnN0ZXhwciB0eXBlbmFt
ZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlPjo6X190eXBl
CiAgICByaW50KF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fcmludChfX3gpOyB9Cgog
IGNvbnN0ZXhwciBmbG9hdAogIHJvdW5kKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5f
cm91bmRmKF9feCk7IH0KCiAgY29uc3RleHByIGxvbmcgZG91YmxlCiAgcm91bmQobG9uZyBkb3Vi
bGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9yb3VuZGwoX194KTsgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9p
ZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgcm91bmQoX1RwIF9feCkKICAg
IHsgcmV0dXJuIF9fYnVpbHRpbl9yb3VuZChfX3gpOyB9CgogIGNvbnN0ZXhwciBmbG9hdAogIHNj
YWxibG4oZmxvYXQgX194LCBsb25nIF9fZXgpCiAgeyByZXR1cm4gX19idWlsdGluX3NjYWxibG5m
KF9feCwgX19leCk7IH0KCiAgY29uc3RleHByIGxvbmcgZG91YmxlCiAgc2NhbGJsbihsb25nIGRv
dWJsZSBfX3gsIGxvbmcgX19leCkKICB7IHJldHVybiBfX2J1aWx0aW5fc2NhbGJsbmwoX194LCBf
X2V4KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUg
X19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQog
ICAgc2NhbGJsbihfVHAgX194LCBsb25nIF9fZXgpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fc2Nh
bGJsbihfX3gsIF9fZXgpOyB9CgogIGNvbnN0ZXhwciBmbG9hdAogIHNjYWxibihmbG9hdCBfX3gs
IGludCBfX2V4KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9zY2FsYm5mKF9feCwgX19leCk7IH0KCiAg
Y29uc3RleHByIGxvbmcgZG91YmxlCiAgc2NhbGJuKGxvbmcgZG91YmxlIF9feCwgaW50IF9fZXgp
CiAgeyByZXR1cm4gX19idWlsdGluX3NjYWxibmwoX194LCBfX2V4KTsgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9p
ZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgc2NhbGJuKF9UcCBfX3gsIGlu
dCBfX2V4KQogICAgeyByZXR1cm4gX19idWlsdGluX3NjYWxibihfX3gsIF9fZXgpOyB9CgogIGNv
bnN0ZXhwciBmbG9hdAogIHRnYW1tYShmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX3Rn
YW1tYWYoX194KTsgfQoKICBjb25zdGV4cHIgbG9uZyBkb3VibGUKICB0Z2FtbWEobG9uZyBkb3Vi
bGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl90Z2FtbWFsKF9feCk7IH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVf
aWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIHRnYW1tYShfVHAgX194KQog
ICAgeyByZXR1cm4gX19idWlsdGluX3RnYW1tYShfX3gpOyB9CgogIGNvbnN0ZXhwciBmbG9hdAog
IHRydW5jKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fdHJ1bmNmKF9feCk7IH0KCiAg
Y29uc3RleHByIGxvbmcgZG91YmxlCiAgdHJ1bmMobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJu
IF9fYnVpbHRpbl90cnVuY2woX194KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBj
b25zdGV4cHIgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1Rw
Pjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRvdWJsZT46Ol9fdHlwZQogICAgdHJ1bmMoX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRp
bl90cnVuYyhfX3gpOyB9CgoKfQojIDM5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3JhbmRvbSIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9jc3RkbGliIiAxIDMKIyAz
OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9jc3RkbGliIiAzCiAgICAgICAKIyA0MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9jc3RkbGliIiAzCiMgNDAgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvcmFuZG9tIiAyIDMKIyA0
OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9yYW5kb20iIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDEgMwojIDMyICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMK
I2RlZmluZSBfUkFORE9NX0ggMQoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3ZlY3RvciIgMSAzCiMgNTYgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvdmVjdG9yIiAzCiNkZWZp
bmUgX0dMSUJDWFhfVkVDVE9SIDEKCiAgICAgICAKIyA1OSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy92ZWN0b3IiIDMKCgoKCgojIDEgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9zdGxfdmVjdG9yLmgiIDEgMwojIDU3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiNkZWZpbmUgX1NU
TF9WRUNUT1JfSCAxCiMgNjYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfdmVjdG9yLmgiIDMKbmFtZXNwYWNlIHN0ZCBfX2F0
dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBzdHJ1Y3QgX1ZlY3Rvcl9iYXNlCiAg
ICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2FsbG9jX3RyYWl0czxfQWxs
b2M+Ojp0ZW1wbGF0ZQogICAgICAgIHJlYmluZDxfVHA+OjpvdGhlciBfVHBfYWxsb2NfdHlwZTsK
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fYWxsb2NfdHJhaXRzPF9UcF9hbGxv
Y190eXBlPjo6cG9pbnRlcgogICAgICAgIHBvaW50ZXI7CgogICAgICBzdHJ1Y3QgX1ZlY3Rvcl9p
bXBsCiAgICAgIDogcHVibGljIF9UcF9hbGxvY190eXBlCiAgICAgIHsKIHBvaW50ZXIgX01fc3Rh
cnQ7CiBwb2ludGVyIF9NX2ZpbmlzaDsKIHBvaW50ZXIgX01fZW5kX29mX3N0b3JhZ2U7CgogX1Zl
Y3Rvcl9pbXBsKCkKIDogX1RwX2FsbG9jX3R5cGUoKSwgX01fc3RhcnQoMCksIF9NX2ZpbmlzaCgw
KSwgX01fZW5kX29mX3N0b3JhZ2UoMCkKIHsgfQoKIF9WZWN0b3JfaW1wbChfVHBfYWxsb2NfdHlw
ZSBjb25zdCYgX19hKSBub2V4Y2VwdAogOiBfVHBfYWxsb2NfdHlwZShfX2EpLCBfTV9zdGFydCgw
KSwgX01fZmluaXNoKDApLCBfTV9lbmRfb2Zfc3RvcmFnZSgwKQogeyB9CgoKIF9WZWN0b3JfaW1w
bChfVHBfYWxsb2NfdHlwZSYmIF9fYSkgbm9leGNlcHQKIDogX1RwX2FsbG9jX3R5cGUoc3RkOjpt
b3ZlKF9fYSkpLAogICBfTV9zdGFydCgwKSwgX01fZmluaXNoKDApLCBfTV9lbmRfb2Zfc3RvcmFn
ZSgwKQogeyB9CgoKIHZvaWQgX01fc3dhcF9kYXRhKF9WZWN0b3JfaW1wbCYgX194KSBub2V4Y2Vw
dAogewogICBzdGQ6OnN3YXAoX01fc3RhcnQsIF9feC5fTV9zdGFydCk7CiAgIHN0ZDo6c3dhcChf
TV9maW5pc2gsIF9feC5fTV9maW5pc2gpOwogICBzdGQ6OnN3YXAoX01fZW5kX29mX3N0b3JhZ2Us
IF9feC5fTV9lbmRfb2Zfc3RvcmFnZSk7CiB9CiAgICAgIH07CgogICAgcHVibGljOgogICAgICB0
eXBlZGVmIF9BbGxvYyBhbGxvY2F0b3JfdHlwZTsKCiAgICAgIF9UcF9hbGxvY190eXBlJgogICAg
ICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gKnN0YXRpY19j
YXN0PF9UcF9hbGxvY190eXBlKj4oJnRoaXMtPl9NX2ltcGwpOyB9CgogICAgICBjb25zdCBfVHBf
YWxsb2NfdHlwZSYKICAgICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpIGNvbnN0IG5vZXhjZXB0CiAg
ICAgIHsgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCBfVHBfYWxsb2NfdHlwZSo+KCZ0aGlzLT5f
TV9pbXBsKTsgfQoKICAgICAgYWxsb2NhdG9yX3R5cGUKICAgICAgZ2V0X2FsbG9jYXRvcigpIGNv
bnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGFsbG9jYXRvcl90eXBlKF9NX2dldF9UcF9hbGxv
Y2F0b3IoKSk7IH0KCiAgICAgIF9WZWN0b3JfYmFzZSgpCiAgICAgIDogX01faW1wbCgpIHsgfQoK
ICAgICAgX1ZlY3Rvcl9iYXNlKGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EpIG5vZXhjZXB0CiAg
ICAgIDogX01faW1wbChfX2EpIHsgfQoKICAgICAgX1ZlY3Rvcl9iYXNlKHNpemVfdCBfX24pCiAg
ICAgIDogX01faW1wbCgpCiAgICAgIHsgX01fY3JlYXRlX3N0b3JhZ2UoX19uKTsgfQoKICAgICAg
X1ZlY3Rvcl9iYXNlKHNpemVfdCBfX24sIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EpCiAgICAg
IDogX01faW1wbChfX2EpCiAgICAgIHsgX01fY3JlYXRlX3N0b3JhZ2UoX19uKTsgfQoKCiAgICAg
IF9WZWN0b3JfYmFzZShfVHBfYWxsb2NfdHlwZSYmIF9fYSkgbm9leGNlcHQKICAgICAgOiBfTV9p
bXBsKHN0ZDo6bW92ZShfX2EpKSB7IH0KCiAgICAgIF9WZWN0b3JfYmFzZShfVmVjdG9yX2Jhc2Um
JiBfX3gpIG5vZXhjZXB0CiAgICAgIDogX01faW1wbChzdGQ6Om1vdmUoX194Ll9NX2dldF9UcF9h
bGxvY2F0b3IoKSkpCiAgICAgIHsgdGhpcy0+X01faW1wbC5fTV9zd2FwX2RhdGEoX194Ll9NX2lt
cGwpOyB9CgogICAgICBfVmVjdG9yX2Jhc2UoX1ZlY3Rvcl9iYXNlJiYgX194LCBjb25zdCBhbGxv
Y2F0b3JfdHlwZSYgX19hKQogICAgICA6IF9NX2ltcGwoX19hKQogICAgICB7CiBpZiAoX194Lmdl
dF9hbGxvY2F0b3IoKSA9PSBfX2EpCiAgIHRoaXMtPl9NX2ltcGwuX01fc3dhcF9kYXRhKF9feC5f
TV9pbXBsKTsKIGVsc2UKICAgewogICAgIHNpemVfdCBfX24gPSBfX3guX01faW1wbC5fTV9maW5p
c2ggLSBfX3guX01faW1wbC5fTV9zdGFydDsKICAgICBfTV9jcmVhdGVfc3RvcmFnZShfX24pOwog
ICB9CiAgICAgIH0KCgogICAgICB+X1ZlY3Rvcl9iYXNlKCkgbm9leGNlcHQKICAgICAgeyBfTV9k
ZWFsbG9jYXRlKHRoaXMtPl9NX2ltcGwuX01fc3RhcnQsIHRoaXMtPl9NX2ltcGwuX01fZW5kX29m
X3N0b3JhZ2UKICAgICAgICAtIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQpOyB9CgogICAgcHVibGlj
OgogICAgICBfVmVjdG9yX2ltcGwgX01faW1wbDsKCiAgICAgIHBvaW50ZXIKICAgICAgX01fYWxs
b2NhdGUoc2l6ZV90IF9fbikKICAgICAgewogdHlwZWRlZiBfX2dudV9jeHg6Ol9fYWxsb2NfdHJh
aXRzPF9UcF9hbGxvY190eXBlPiBfVHI7CiByZXR1cm4gX19uICE9IDAgPyBfVHI6OmFsbG9jYXRl
KF9NX2ltcGwsIF9fbikgOiAwOwogICAgICB9CgogICAgICB2b2lkCiAgICAgIF9NX2RlYWxsb2Nh
dGUocG9pbnRlciBfX3AsIHNpemVfdCBfX24pCiAgICAgIHsKIHR5cGVkZWYgX19nbnVfY3h4Ojpf
X2FsbG9jX3RyYWl0czxfVHBfYWxsb2NfdHlwZT4gX1RyOwogaWYgKF9fcCkKICAgX1RyOjpkZWFs
bG9jYXRlKF9NX2ltcGwsIF9fcCwgX19uKTsKICAgICAgfQoKICAgIHByaXZhdGU6CiAgICAgIHZv
aWQKICAgICAgX01fY3JlYXRlX3N0b3JhZ2Uoc2l6ZV90IF9fbikKICAgICAgewogdGhpcy0+X01f
aW1wbC5fTV9zdGFydCA9IHRoaXMtPl9NX2FsbG9jYXRlKF9fbik7CiB0aGlzLT5fTV9pbXBsLl9N
X2ZpbmlzaCA9IHRoaXMtPl9NX2ltcGwuX01fc3RhcnQ7CiB0aGlzLT5fTV9pbXBsLl9NX2VuZF9v
Zl9zdG9yYWdlID0gdGhpcy0+X01faW1wbC5fTV9zdGFydCArIF9fbjsKICAgICAgfQogICAgfTsK
IyAyMTMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvYml0cy9zdGxfdmVjdG9yLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVu
YW1lIF9BbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPF9UcD4gPgogICAgY2xhc3MgdmVjdG9yIDogcHJv
dGVjdGVkIF9WZWN0b3JfYmFzZTxfVHAsIF9BbGxvYz4KICAgIHsKCiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX0FsbG9jOjp2YWx1ZV90eXBlIF9BbGxvY192YWx1ZV90eXBlOwogICAgIAogICAgIAoK
ICAgICAgdHlwZWRlZiBfVmVjdG9yX2Jhc2U8X1RwLCBfQWxsb2M+IF9CYXNlOwogICAgICB0eXBl
ZGVmIHR5cGVuYW1lIF9CYXNlOjpfVHBfYWxsb2NfdHlwZSBfVHBfYWxsb2NfdHlwZTsKICAgICAg
dHlwZWRlZiBfX2dudV9jeHg6Ol9fYWxsb2NfdHJhaXRzPF9UcF9hbGxvY190eXBlPiBfQWxsb2Nf
dHJhaXRzOwoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBfQmFzZTo6cG9pbnRlciBwb2ludGVyOwogICAgICB0eXBlZGVmIHR5
cGVuYW1lIF9BbGxvY190cmFpdHM6OmNvbnN0X3BvaW50ZXIgY29uc3RfcG9pbnRlcjsKICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBfQWxsb2NfdHJhaXRzOjpyZWZlcmVuY2UgcmVmZXJlbmNlOwogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIF9BbGxvY190cmFpdHM6OmNvbnN0X3JlZmVyZW5jZSBjb25zdF9y
ZWZlcmVuY2U7CiAgICAgIHR5cGVkZWYgX19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxwb2lu
dGVyLCB2ZWN0b3I+IGl0ZXJhdG9yOwogICAgICB0eXBlZGVmIF9fZ251X2N4eDo6X19ub3JtYWxf
aXRlcmF0b3I8Y29uc3RfcG9pbnRlciwgdmVjdG9yPgogICAgICBjb25zdF9pdGVyYXRvcjsKICAg
ICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+IGNvbnN0X3Jl
dmVyc2VfaXRlcmF0b3I7CiAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJh
dG9yPiByZXZlcnNlX2l0ZXJhdG9yOwogICAgICB0eXBlZGVmIHNpemVfdCBzaXplX3R5cGU7CiAg
ICAgIHR5cGVkZWYgcHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKICAgICAgdHlwZWRlZiBfQWxs
b2MgYWxsb2NhdG9yX3R5cGU7CgogICAgcHJvdGVjdGVkOgogICAgICB1c2luZyBfQmFzZTo6X01f
YWxsb2NhdGU7CiAgICAgIHVzaW5nIF9CYXNlOjpfTV9kZWFsbG9jYXRlOwogICAgICB1c2luZyBf
QmFzZTo6X01faW1wbDsKICAgICAgdXNpbmcgX0Jhc2U6Ol9NX2dldF9UcF9hbGxvY2F0b3I7Cgog
ICAgcHVibGljOgoKCgoKCgogICAgICB2ZWN0b3IoKQoKICAgICAgbm9leGNlcHQoaXNfbm90aHJv
d19kZWZhdWx0X2NvbnN0cnVjdGlibGU8X0FsbG9jPjo6dmFsdWUpCgogICAgICA6IF9CYXNlKCkg
eyB9CgoKCgoKICAgICAgZXhwbGljaXQKICAgICAgdmVjdG9yKGNvbnN0IGFsbG9jYXRvcl90eXBl
JiBfX2EpIG5vZXhjZXB0CiAgICAgIDogX0Jhc2UoX19hKSB7IH0KIyAyNzYgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfdmVj
dG9yLmgiIDMKICAgICAgZXhwbGljaXQKICAgICAgdmVjdG9yKHNpemVfdHlwZSBfX24sIGNvbnN0
IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKQogICAgICA6IF9CYXNlKF9f
biwgX19hKQogICAgICB7IF9NX2RlZmF1bHRfaW5pdGlhbGl6ZShfX24pOyB9CiMgMjg5ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMv
c3RsX3ZlY3Rvci5oIiAzCiAgICAgIHZlY3RvcihzaXplX3R5cGUgX19uLCBjb25zdCB2YWx1ZV90
eXBlJiBfX3ZhbHVlLAogICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9y
X3R5cGUoKSkKICAgICAgOiBfQmFzZShfX24sIF9fYSkKICAgICAgeyBfTV9maWxsX2luaXRpYWxp
emUoX19uLCBfX3ZhbHVlKTsgfQojIDMxOCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF92ZWN0b3IuaCIgMwogICAgICB2ZWN0
b3IoY29uc3QgdmVjdG9yJiBfX3gpCiAgICAgIDogX0Jhc2UoX194LnNpemUoKSwKICAgICAgICBf
QWxsb2NfdHJhaXRzOjpfU19zZWxlY3Rfb25fY29weShfX3guX01fZ2V0X1RwX2FsbG9jYXRvcigp
KSkKICAgICAgeyB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCA9CiAgIHN0ZDo6X191bmluaXRpYWxp
emVkX2NvcHlfYShfX3guYmVnaW4oKSwgX194LmVuZCgpLAogICAgICAgICAgdGhpcy0+X01faW1w
bC5fTV9zdGFydCwKICAgICAgICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgICAgIH0KIyAz
MzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAgICAgdmVjdG9yKHZlY3RvciYmIF9feCkgbm9leGNl
cHQKICAgICAgOiBfQmFzZShzdGQ6Om1vdmUoX194KSkgeyB9CgoKICAgICAgdmVjdG9yKGNvbnN0
IHZlY3RvciYgX194LCBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hKQogICAgICA6IF9CYXNlKF9f
eC5zaXplKCksIF9fYSkKICAgICAgeyB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCA9CiAgIHN0ZDo6
X191bmluaXRpYWxpemVkX2NvcHlfYShfX3guYmVnaW4oKSwgX194LmVuZCgpLAogICAgICAgICAg
dGhpcy0+X01faW1wbC5fTV9zdGFydCwKICAgICAgICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7
CiAgICAgIH0KCgogICAgICB2ZWN0b3IodmVjdG9yJiYgX19ydiwgY29uc3QgYWxsb2NhdG9yX3R5
cGUmIF9fbSkKICAgICAgbm9leGNlcHQoX0FsbG9jX3RyYWl0czo6X1NfYWx3YXlzX2VxdWFsKCkp
CiAgICAgIDogX0Jhc2Uoc3RkOjptb3ZlKF9fcnYpLCBfX20pCiAgICAgIHsKIGlmIChfX3J2Lmdl
dF9hbGxvY2F0b3IoKSAhPSBfX20pCiAgIHsKICAgICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCA9
CiAgICAgICBzdGQ6Ol9fdW5pbml0aWFsaXplZF9tb3ZlX2EoX19ydi5iZWdpbigpLCBfX3J2LmVu
ZCgpLAogICAgICAgdGhpcy0+X01faW1wbC5fTV9zdGFydCwKICAgICAgIF9NX2dldF9UcF9hbGxv
Y2F0b3IoKSk7CiAgICAgX19ydi5jbGVhcigpOwogICB9CiAgICAgIH0KIyAzNzMgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxf
dmVjdG9yLmgiIDMKICAgICAgdmVjdG9yKGluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gX19s
LAogICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUoKSkKICAg
ICAgOiBfQmFzZShfX2EpCiAgICAgIHsKIF9NX3JhbmdlX2luaXRpYWxpemUoX19sLmJlZ2luKCks
IF9fbC5lbmQoKSwKICAgICAgIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKCkpOwogICAgICB9
CiMgMzk5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1
dEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lID0gc3RkOjpfUmVxdWlyZUlucHV0SXRlcjxfSW5w
dXRJdGVyYXRvcj4+CiAgICAgICAgdmVjdG9yKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1
dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxs
b2NhdG9yX3R5cGUoKSkKIDogX0Jhc2UoX19hKQogICAgICAgIHsgX01faW5pdGlhbGl6ZV9kaXNw
YXRjaChfX2ZpcnN0LCBfX2xhc3QsIF9fZmFsc2VfdHlwZSgpKTsgfQojIDQyMyAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF92
ZWN0b3IuaCIgMwogICAgICB+dmVjdG9yKCkgbm9leGNlcHQKICAgICAgeyBzdGQ6Ol9EZXN0cm95
KHRoaXMtPl9NX2ltcGwuX01fc3RhcnQsIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAgICAg
IF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7IH0KIyA0MzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAg
ICAgdmVjdG9yJgogICAgICBvcGVyYXRvcj0oY29uc3QgdmVjdG9yJiBfX3gpOwojIDQ0NyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L3N0bF92ZWN0b3IuaCIgMwogICAgICB2ZWN0b3ImCiAgICAgIG9wZXJhdG9yPSh2ZWN0b3ImJiBf
X3gpIG5vZXhjZXB0KF9BbGxvY190cmFpdHM6Ol9TX25vdGhyb3dfbW92ZSgpKQogICAgICB7CiAg
ICAgICAgY29uc3RleHByIGJvb2wgX19tb3ZlX3N0b3JhZ2UgPQogICAgICAgICAgX0FsbG9jX3Ry
YWl0czo6X1NfcHJvcGFnYXRlX29uX21vdmVfYXNzaWduKCkKICAgICAgICAgIHx8IF9BbGxvY190
cmFpdHM6Ol9TX2Fsd2F5c19lcXVhbCgpOwogICAgICAgIF9NX21vdmVfYXNzaWduKHN0ZDo6bW92
ZShfX3gpLAogICAgICAgICAgICAgICAgICAgICAgIGludGVncmFsX2NvbnN0YW50PGJvb2wsIF9f
bW92ZV9zdG9yYWdlPigpKTsKIHJldHVybiAqdGhpczsKICAgICAgfQojIDQ2OSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF92
ZWN0b3IuaCIgMwogICAgICB2ZWN0b3ImCiAgICAgIG9wZXJhdG9yPShpbml0aWFsaXplcl9saXN0
PHZhbHVlX3R5cGU+IF9fbCkKICAgICAgewogdGhpcy0+YXNzaWduKF9fbC5iZWdpbigpLCBfX2wu
ZW5kKCkpOwogcmV0dXJuICp0aGlzOwogICAgICB9CiMgNDg3ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX3ZlY3Rvci5oIiAz
CiAgICAgIHZvaWQKICAgICAgYXNzaWduKHNpemVfdHlwZSBfX24sIGNvbnN0IHZhbHVlX3R5cGUm
IF9fdmFsKQogICAgICB7IF9NX2ZpbGxfYXNzaWduKF9fbiwgX192YWwpOyB9CiMgNTA0ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMv
c3RsX3ZlY3Rvci5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLAog
ICAgICAgIHR5cGVuYW1lID0gc3RkOjpfUmVxdWlyZUlucHV0SXRlcjxfSW5wdXRJdGVyYXRvcj4+
CiAgICAgICAgdm9pZAogICAgICAgIGFzc2lnbihfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5w
dXRJdGVyYXRvciBfX2xhc3QpCiAgICAgICAgeyBfTV9hc3NpZ25fZGlzcGF0Y2goX19maXJzdCwg
X19sYXN0LCBfX2ZhbHNlX3R5cGUoKSk7IH0KIyA1MzIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAg
ICAgdm9pZAogICAgICBhc3NpZ24oaW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBfX2wpCiAg
ICAgIHsgdGhpcy0+YXNzaWduKF9fbC5iZWdpbigpLCBfX2wuZW5kKCkpOyB9CgoKCiAgICAgIHVz
aW5nIF9CYXNlOjpnZXRfYWxsb2NhdG9yOwoKCgoKCgoKICAgICAgaXRlcmF0b3IKICAgICAgYmVn
aW4oKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBpdGVyYXRvcih0aGlzLT5fTV9pbXBsLl9NX3N0
YXJ0KTsgfQoKCgoKCgogICAgICBjb25zdF9pdGVyYXRvcgogICAgICBiZWdpbigpIGNvbnN0IG5v
ZXhjZXB0CiAgICAgIHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRoaXMtPl9NX2ltcGwuX01fc3Rh
cnQpOyB9CgoKCgoKCiAgICAgIGl0ZXJhdG9yCiAgICAgIGVuZCgpIG5vZXhjZXB0CiAgICAgIHsg
cmV0dXJuIGl0ZXJhdG9yKHRoaXMtPl9NX2ltcGwuX01fZmluaXNoKTsgfQoKCgoKCgogICAgICBj
b25zdF9pdGVyYXRvcgogICAgICBlbmQoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBj
b25zdF9pdGVyYXRvcih0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCk7IH0KCgoKCgoKICAgICAgcmV2
ZXJzZV9pdGVyYXRvcgogICAgICByYmVnaW4oKSBub2V4Y2VwdAogICAgICB7IHJldHVybiByZXZl
cnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQoKCgoKCgogICAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9y
CiAgICAgIHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGNvbnN0X3JldmVy
c2VfaXRlcmF0b3IoZW5kKCkpOyB9CgoKCgoKCiAgICAgIHJldmVyc2VfaXRlcmF0b3IKICAgICAg
cmVuZCgpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7
IH0KCgoKCgoKICAgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvcgogICAgICByZW5kKCkgY29uc3Qg
bm9leGNlcHQKICAgICAgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsg
fQoKCgoKCgoKICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAgY2JlZ2luKCkgY29uc3Qgbm9leGNl
cHQKICAgICAgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcy0+X01faW1wbC5fTV9zdGFydCk7
IH0KCgoKCgoKICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAgY2VuZCgpIGNvbnN0IG5vZXhjZXB0
CiAgICAgIHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRoaXMtPl9NX2ltcGwuX01fZmluaXNoKTsg
fQoKCgoKCgogICAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yCiAgICAgIGNyYmVnaW4oKSBjb25z
dCBub2V4Y2VwdAogICAgICB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsg
fQoKCgoKCgogICAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yCiAgICAgIGNyZW5kKCkgY29uc3Qg
bm9leGNlcHQKICAgICAgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsg
fQoKCgoKICAgICAgc2l6ZV90eXBlCiAgICAgIHNpemUoKSBjb25zdCBub2V4Y2VwdAogICAgICB7
IHJldHVybiBzaXplX3R5cGUodGhpcy0+X01faW1wbC5fTV9maW5pc2ggLSB0aGlzLT5fTV9pbXBs
Ll9NX3N0YXJ0KTsgfQoKCiAgICAgIHNpemVfdHlwZQogICAgICBtYXhfc2l6ZSgpIGNvbnN0IG5v
ZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9BbGxvY190cmFpdHM6Om1heF9zaXplKF9NX2dldF9UcF9h
bGxvY2F0b3IoKSk7IH0KIyA2NzIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAgICAgdm9pZAogICAg
ICByZXNpemUoc2l6ZV90eXBlIF9fbmV3X3NpemUpCiAgICAgIHsKIGlmIChfX25ld19zaXplID4g
c2l6ZSgpKQogICBfTV9kZWZhdWx0X2FwcGVuZChfX25ld19zaXplIC0gc2l6ZSgpKTsKIGVsc2Ug
aWYgKF9fbmV3X3NpemUgPCBzaXplKCkpCiAgIF9NX2VyYXNlX2F0X2VuZCh0aGlzLT5fTV9pbXBs
Ll9NX3N0YXJ0ICsgX19uZXdfc2l6ZSk7CiAgICAgIH0KIyA2OTIgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfdmVjdG9yLmgi
IDMKICAgICAgdm9pZAogICAgICByZXNpemUoc2l6ZV90eXBlIF9fbmV3X3NpemUsIGNvbnN0IHZh
bHVlX3R5cGUmIF9feCkKICAgICAgewogaWYgKF9fbmV3X3NpemUgPiBzaXplKCkpCiAgIGluc2Vy
dChlbmQoKSwgX19uZXdfc2l6ZSAtIHNpemUoKSwgX194KTsKIGVsc2UgaWYgKF9fbmV3X3NpemUg
PCBzaXplKCkpCiAgIF9NX2VyYXNlX2F0X2VuZCh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ICsgX19u
ZXdfc2l6ZSk7CiAgICAgIH0KIyA3MjQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAgICAgdm9pZAog
ICAgICBzaHJpbmtfdG9fZml0KCkKICAgICAgeyBfTV9zaHJpbmtfdG9fZml0KCk7IH0KCgoKCgoK
ICAgICAgc2l6ZV90eXBlCiAgICAgIGNhcGFjaXR5KCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gc2l6ZV90eXBlKHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UKICAgIC0gdGhp
cy0+X01faW1wbC5fTV9zdGFydCk7IH0KCgoKCgogICAgICBib29sCiAgICAgIGVtcHR5KCkgY29u
c3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gYmVnaW4oKSA9PSBlbmQoKTsgfQojIDc2MyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L3N0bF92ZWN0b3IuaCIgMwogICAgICB2b2lkCiAgICAgIHJlc2VydmUoc2l6ZV90eXBlIF9fbik7
CiMgNzc4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIHJlZmVyZW5jZQogICAgICBvcGVyYXRv
cltdKHNpemVfdHlwZSBfX24pIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuICoodGhpcy0+X01faW1w
bC5fTV9zdGFydCArIF9fbik7IH0KIyA3OTMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAgICAgY29u
c3RfcmVmZXJlbmNlCiAgICAgIG9wZXJhdG9yW10oc2l6ZV90eXBlIF9fbikgY29uc3Qgbm9leGNl
cHQKICAgICAgeyByZXR1cm4gKih0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ICsgX19uKTsgfQoKICAg
IHByb3RlY3RlZDoKCiAgICAgIHZvaWQKICAgICAgX01fcmFuZ2VfY2hlY2soc2l6ZV90eXBlIF9f
bikgY29uc3QKICAgICAgewogaWYgKF9fbiA+PSB0aGlzLT5zaXplKCkpCiAgIF9fdGhyb3dfb3V0
X29mX3JhbmdlX2ZtdCgoInZlY3Rvcjo6X01fcmFuZ2VfY2hlY2s6IF9fbiAiICIod2hpY2ggaXMg
JXp1KSA+PSB0aGlzLT5zaXplKCkgIiAiKHdoaWNoIGlzICV6dSkiKQoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICwKICAgICAgIF9fbiwgdGhpcy0+c2l6ZSgpKTsKICAgICAgfQoKICAgIHB1
YmxpYzoKIyA4MjEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAgICAgcmVmZXJlbmNlCiAgICAgIGF0
KHNpemVfdHlwZSBfX24pCiAgICAgIHsKIF9NX3JhbmdlX2NoZWNrKF9fbik7CiByZXR1cm4gKCp0
aGlzKVtfX25dOwogICAgICB9CiMgODM5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIGNvbnN0
X3JlZmVyZW5jZQogICAgICBhdChzaXplX3R5cGUgX19uKSBjb25zdAogICAgICB7CiBfTV9yYW5n
ZV9jaGVjayhfX24pOwogcmV0dXJuICgqdGhpcylbX19uXTsKICAgICAgfQoKCgoKCiAgICAgIHJl
ZmVyZW5jZQogICAgICBmcm9udCgpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuICpiZWdpbigpOyB9
CgoKCgoKICAgICAgY29uc3RfcmVmZXJlbmNlCiAgICAgIGZyb250KCkgY29uc3Qgbm9leGNlcHQK
ICAgICAgeyByZXR1cm4gKmJlZ2luKCk7IH0KCgoKCgogICAgICByZWZlcmVuY2UKICAgICAgYmFj
aygpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuICooZW5kKCkgLSAxKTsgfQoKCgoKCiAgICAgIGNv
bnN0X3JlZmVyZW5jZQogICAgICBiYWNrKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4g
KihlbmQoKSAtIDEpOyB9CiMgODg2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIF9UcCoKCgoK
ICAgICAgZGF0YSgpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX2RhdGFfcHRyKHRoaXMtPl9N
X2ltcGwuX01fc3RhcnQpOyB9CgoKICAgICAgY29uc3QgX1RwKgoKCgogICAgICBkYXRhKCkgY29u
c3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01fZGF0YV9wdHIodGhpcy0+X01faW1wbC5fTV9z
dGFydCk7IH0KIyA5MTIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAgICAgdm9pZAogICAgICBwdXNo
X2JhY2soY29uc3QgdmFsdWVfdHlwZSYgX194KQogICAgICB7CiBpZiAodGhpcy0+X01faW1wbC5f
TV9maW5pc2ggIT0gdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZSkKICAgewogICAgIF9B
bGxvY190cmFpdHM6OmNvbnN0cnVjdCh0aGlzLT5fTV9pbXBsLCB0aGlzLT5fTV9pbXBsLl9NX2Zp
bmlzaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX194KTsKICAgICArK3RoaXMtPl9N
X2ltcGwuX01fZmluaXNoOwogICB9CiBlbHNlCgogICBfTV9lbXBsYWNlX2JhY2tfYXV4KF9feCk7
CgoKCiAgICAgIH0KCgogICAgICB2b2lkCiAgICAgIHB1c2hfYmFjayh2YWx1ZV90eXBlJiYgX194
KQogICAgICB7IGVtcGxhY2VfYmFjayhzdGQ6Om1vdmUoX194KSk7IH0KCiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIF9BcmdzPgogICAgICAgIHZvaWQKICAgICAgICBlbXBsYWNlX2JhY2soX0Fy
Z3MmJi4uLiBfX2FyZ3MpOwojIDk0OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF92ZWN0b3IuaCIgMwogICAgICB2b2lkCiAg
ICAgIHBvcF9iYWNrKCkgbm9leGNlcHQKICAgICAgewogLS10aGlzLT5fTV9pbXBsLl9NX2Zpbmlz
aDsKIF9BbGxvY190cmFpdHM6OmRlc3Ryb3kodGhpcy0+X01faW1wbCwgdGhpcy0+X01faW1wbC5f
TV9maW5pc2gpOwogICAgICB9CiMgOTY4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIF9BcmdzPgogICAgICAgIGl0ZXJhdG9yCiAgICAgICAgZW1wbGFjZShj
b25zdF9pdGVyYXRvciBfX3Bvc2l0aW9uLCBfQXJncyYmLi4uIF9fYXJncyk7CiMgOTgzICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMv
c3RsX3ZlY3Rvci5oIiAzCiAgICAgIGl0ZXJhdG9yCiAgICAgIGluc2VydChjb25zdF9pdGVyYXRv
ciBfX3Bvc2l0aW9uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gpOwojIDEwMTMgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfdmVj
dG9yLmgiIDMKICAgICAgaXRlcmF0b3IKICAgICAgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIF9fcG9z
aXRpb24sIHZhbHVlX3R5cGUmJiBfX3gpCiAgICAgIHsgcmV0dXJuIGVtcGxhY2UoX19wb3NpdGlv
biwgc3RkOjptb3ZlKF9feCkpOyB9CiMgMTAzMCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF92ZWN0b3IuaCIgMwogICAgICBp
dGVyYXRvcgogICAgICBpbnNlcnQoY29uc3RfaXRlcmF0b3IgX19wb3NpdGlvbiwgaW5pdGlhbGl6
ZXJfbGlzdDx2YWx1ZV90eXBlPiBfX2wpCiAgICAgIHsgcmV0dXJuIHRoaXMtPmluc2VydChfX3Bv
c2l0aW9uLCBfX2wuYmVnaW4oKSwgX19sLmVuZCgpKTsgfQojIDEwNTAgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfdmVjdG9y
LmgiIDMKICAgICAgaXRlcmF0b3IKICAgICAgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIF9fcG9zaXRp
b24sIHNpemVfdHlwZSBfX24sIGNvbnN0IHZhbHVlX3R5cGUmIF9feCkKICAgICAgewogZGlmZmVy
ZW5jZV90eXBlIF9fb2Zmc2V0ID0gX19wb3NpdGlvbiAtIGNiZWdpbigpOwogX01fZmlsbF9pbnNl
cnQoYmVnaW4oKSArIF9fb2Zmc2V0LCBfX24sIF9feCk7CiByZXR1cm4gYmVnaW4oKSArIF9fb2Zm
c2V0OwogICAgICB9CiMgMTA5MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF92ZWN0b3IuaCIgMwogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSA9IHN0ZDo6X1JlcXVpcmVJ
bnB1dEl0ZXI8X0lucHV0SXRlcmF0b3I+PgogICAgICAgIGl0ZXJhdG9yCiAgICAgICAgaW5zZXJ0
KGNvbnN0X2l0ZXJhdG9yIF9fcG9zaXRpb24sIF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAg
ICAgX0lucHV0SXRlcmF0b3IgX19sYXN0KQogICAgICAgIHsKICAgZGlmZmVyZW5jZV90eXBlIF9f
b2Zmc2V0ID0gX19wb3NpdGlvbiAtIGNiZWdpbigpOwogICBfTV9pbnNlcnRfZGlzcGF0Y2goYmVn
aW4oKSArIF9fb2Zmc2V0LAogICAgICAgIF9fZmlyc3QsIF9fbGFzdCwgX19mYWxzZV90eXBlKCkp
OwogICByZXR1cm4gYmVnaW4oKSArIF9fb2Zmc2V0OwogfQojIDExNDQgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfdmVjdG9y
LmgiIDMKICAgICAgaXRlcmF0b3IKCiAgICAgIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIF9fcG9zaXRp
b24pCiAgICAgIHsgcmV0dXJuIF9NX2VyYXNlKGJlZ2luKCkgKyAoX19wb3NpdGlvbiAtIGNiZWdp
bigpKSk7IH0KIyAxMTcxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIGl0ZXJhdG9yCgogICAg
ICBlcmFzZShjb25zdF9pdGVyYXRvciBfX2ZpcnN0LCBjb25zdF9pdGVyYXRvciBfX2xhc3QpCiAg
ICAgIHsKIGNvbnN0IGF1dG8gX19iZWcgPSBiZWdpbigpOwogY29uc3QgYXV0byBfX2NiZWcgPSBj
YmVnaW4oKTsKIHJldHVybiBfTV9lcmFzZShfX2JlZyArIChfX2ZpcnN0IC0gX19jYmVnKSwgX19i
ZWcgKyAoX19sYXN0IC0gX19jYmVnKSk7CiAgICAgIH0KIyAxMTkzICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX3ZlY3Rvci5o
IiAzCiAgICAgIHZvaWQKICAgICAgc3dhcCh2ZWN0b3ImIF9feCkKCiAgICAgIG5vZXhjZXB0KF9B
bGxvY190cmFpdHM6Ol9TX25vdGhyb3dfc3dhcCgpKQoKICAgICAgewogdGhpcy0+X01faW1wbC5f
TV9zd2FwX2RhdGEoX194Ll9NX2ltcGwpOwogX0FsbG9jX3RyYWl0czo6X1Nfb25fc3dhcChfTV9n
ZXRfVHBfYWxsb2NhdG9yKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9feC5fTV9nZXRf
VHBfYWxsb2NhdG9yKCkpOwogICAgICB9CgoKCgoKCgogICAgICB2b2lkCiAgICAgIGNsZWFyKCkg
bm9leGNlcHQKICAgICAgeyBfTV9lcmFzZV9hdF9lbmQodGhpcy0+X01faW1wbC5fTV9zdGFydCk7
IH0KCiAgICBwcm90ZWN0ZWQ6CgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0
ZXJhdG9yPgogICAgICAgIHBvaW50ZXIKICAgICAgICBfTV9hbGxvY2F0ZV9hbmRfY29weShzaXpl
X3R5cGUgX19uLAogICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVy
YXRvciBfX2xhc3QpCiAgICAgICAgewogICBwb2ludGVyIF9fcmVzdWx0ID0gdGhpcy0+X01fYWxs
b2NhdGUoX19uKTsKICAgaWYgKHRydWUpCiAgICAgewogICAgICAgc3RkOjpfX3VuaW5pdGlhbGl6
ZWRfY29weV9hKF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsCiAgICAgICBfTV9nZXRfVHBfYWxs
b2NhdG9yKCkpOwogICAgICAgcmV0dXJuIF9fcmVzdWx0OwogICAgIH0KICAgaWYgKGZhbHNlKQog
ICAgIHsKICAgICAgIF9NX2RlYWxsb2NhdGUoX19yZXN1bHQsIF9fbik7CiAgICAgICA7CiAgICAg
fQogfQojIDEyNDUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X0ludGVnZXI+CiAgICAgICAgdm9pZAogICAgICAgIF9NX2luaXRpYWxpemVfZGlzcGF0Y2goX0lu
dGVnZXIgX19uLCBfSW50ZWdlciBfX3ZhbHVlLCBfX3RydWVfdHlwZSkKICAgICAgICB7CiAgIHRo
aXMtPl9NX2ltcGwuX01fc3RhcnQgPSBfTV9hbGxvY2F0ZShzdGF0aWNfY2FzdDxzaXplX3R5cGU+
KF9fbikpOwogICB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlID0KICAgICB0aGlzLT5f
TV9pbXBsLl9NX3N0YXJ0ICsgc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfX24pOwogICBfTV9maWxs
X2luaXRpYWxpemUoc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfX24pLCBfX3ZhbHVlKTsKIH0KCgog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcj4KICAgICAgICB2b2lkCiAgICAg
ICAgX01faW5pdGlhbGl6ZV9kaXNwYXRjaChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyYXRvciBfX2xhc3QsCiAgICAgICAgICBfX2ZhbHNlX3R5cGUpCiAgICAgICAgewogICB0eXBl
ZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6CiAgICAg
aXRlcmF0b3JfY2F0ZWdvcnkgX0l0ZXJDYXRlZ29yeTsKICAgX01fcmFuZ2VfaW5pdGlhbGl6ZShf
X2ZpcnN0LCBfX2xhc3QsIF9JdGVyQ2F0ZWdvcnkoKSk7CiB9CgoKICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0lucHV0SXRlcmF0b3I+CiAgICAgICAgdm9pZAogICAgICAgIF9NX3JhbmdlX2luaXRp
YWxpemUoX0lucHV0SXRlcmF0b3IgX19maXJzdCwKICAgICAgIF9JbnB1dEl0ZXJhdG9yIF9fbGFz
dCwgc3RkOjppbnB1dF9pdGVyYXRvcl90YWcpCiAgICAgICAgewogICBmb3IgKDsgX19maXJzdCAh
PSBfX2xhc3Q7ICsrX19maXJzdCkKCiAgICAgZW1wbGFjZV9iYWNrKCpfX2ZpcnN0KTsKCgoKIH0K
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgICAgIHZvaWQK
ICAgICAgICBfTV9yYW5nZV9pbml0aWFsaXplKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwKICAg
ICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LCBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnKQog
ICAgICAgIHsKICAgY29uc3Qgc2l6ZV90eXBlIF9fbiA9IHN0ZDo6ZGlzdGFuY2UoX19maXJzdCwg
X19sYXN0KTsKICAgdGhpcy0+X01faW1wbC5fTV9zdGFydCA9IHRoaXMtPl9NX2FsbG9jYXRlKF9f
bik7CiAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UgPSB0aGlzLT5fTV9pbXBsLl9N
X3N0YXJ0ICsgX19uOwogICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCA9CiAgICAgc3RkOjpfX3Vu
aW5pdGlhbGl6ZWRfY29weV9hKF9fZmlyc3QsIF9fbGFzdCwKICAgICB0aGlzLT5fTV9pbXBsLl9N
X3N0YXJ0LAogICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiB9CgoKCiAgICAgIHZvaWQKICAg
ICAgX01fZmlsbF9pbml0aWFsaXplKHNpemVfdHlwZSBfX24sIGNvbnN0IHZhbHVlX3R5cGUmIF9f
dmFsdWUpCiAgICAgIHsKIHN0ZDo6X191bmluaXRpYWxpemVkX2ZpbGxfbl9hKHRoaXMtPl9NX2lt
cGwuX01fc3RhcnQsIF9fbiwgX192YWx1ZSwKICAgICAgICAgIF9NX2dldF9UcF9hbGxvY2F0b3Io
KSk7CiB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCA9IHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0
b3JhZ2U7CiAgICAgIH0KCgoKICAgICAgdm9pZAogICAgICBfTV9kZWZhdWx0X2luaXRpYWxpemUo
c2l6ZV90eXBlIF9fbikKICAgICAgewogc3RkOjpfX3VuaW5pdGlhbGl6ZWRfZGVmYXVsdF9uX2Eo
dGhpcy0+X01faW1wbC5fTV9zdGFydCwgX19uLAogICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkp
OwogdGhpcy0+X01faW1wbC5fTV9maW5pc2ggPSB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9y
YWdlOwogICAgICB9CiMgMTMyMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF92ZWN0b3IuaCIgMwogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSW50ZWdlcj4KICAgICAgICB2b2lkCiAgICAgICAgX01fYXNzaWduX2Rpc3BhdGNo
KF9JbnRlZ2VyIF9fbiwgX0ludGVnZXIgX192YWwsIF9fdHJ1ZV90eXBlKQogICAgICAgIHsgX01f
ZmlsbF9hc3NpZ24oX19uLCBfX3ZhbCk7IH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5w
dXRJdGVyYXRvcj4KICAgICAgICB2b2lkCiAgICAgICAgX01fYXNzaWduX2Rpc3BhdGNoKF9JbnB1
dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgX19mYWxzZV90
eXBlKQogICAgICAgIHsKICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxf
SW5wdXRJdGVyYXRvcj46OgogICAgIGl0ZXJhdG9yX2NhdGVnb3J5IF9JdGVyQ2F0ZWdvcnk7CiAg
IF9NX2Fzc2lnbl9hdXgoX19maXJzdCwgX19sYXN0LCBfSXRlckNhdGVnb3J5KCkpOwogfQoKCiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yPgogICAgICAgIHZvaWQKICAgICAg
ICBfTV9hc3NpZ25fYXV4KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9f
bGFzdCwKICAgICAgICBzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZyk7CgoKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcj4KICAgICAgICB2b2lkCiAgICAgICAgX01fYXNzaWdu
X2F1eChfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAog
ICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcpOwoKCgogICAgICB2b2lkCiAgICAgIF9N
X2ZpbGxfYXNzaWduKHNpemVfdHlwZSBfX24sIGNvbnN0IHZhbHVlX3R5cGUmIF9fdmFsKTsKIyAx
MzYzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OS4zL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRlZ2Vy
PgogICAgICAgIHZvaWQKICAgICAgICBfTV9pbnNlcnRfZGlzcGF0Y2goaXRlcmF0b3IgX19wb3Ms
IF9JbnRlZ2VyIF9fbiwgX0ludGVnZXIgX192YWwsCiAgICAgIF9fdHJ1ZV90eXBlKQogICAgICAg
IHsgX01fZmlsbF9pbnNlcnQoX19wb3MsIF9fbiwgX192YWwpOyB9CgoKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiAgICAgICAgdm9pZAogICAgICAgIF9NX2luc2VydF9k
aXNwYXRjaChpdGVyYXRvciBfX3BvcywgX0lucHV0SXRlcmF0b3IgX19maXJzdCwKICAgICAgX0lu
cHV0SXRlcmF0b3IgX19sYXN0LCBfX2ZhbHNlX3R5cGUpCiAgICAgICAgewogICB0eXBlZGVmIHR5
cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6CiAgICAgaXRlcmF0
b3JfY2F0ZWdvcnkgX0l0ZXJDYXRlZ29yeTsKICAgX01fcmFuZ2VfaW5zZXJ0KF9fcG9zLCBfX2Zp
cnN0LCBfX2xhc3QsIF9JdGVyQ2F0ZWdvcnkoKSk7CiB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX0lucHV0SXRlcmF0b3I+CiAgICAgICAgdm9pZAogICAgICAgIF9NX3JhbmdlX2luc2VydChp
dGVyYXRvciBfX3BvcywgX0lucHV0SXRlcmF0b3IgX19maXJzdCwKICAgX0lucHV0SXRlcmF0b3Ig
X19sYXN0LCBzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZyk7CgoKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZvcndhcmRJdGVyYXRvcj4KICAgICAgICB2b2lkCiAgICAgICAgX01fcmFuZ2VfaW5zZXJ0
KGl0ZXJhdG9yIF9fcG9zLCBfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsCiAgIF9Gb3J3YXJkSXRl
cmF0b3IgX19sYXN0LCBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnKTsKCgoKICAgICAgdm9pZAog
ICAgICBfTV9maWxsX2luc2VydChpdGVyYXRvciBfX3Bvcywgc2l6ZV90eXBlIF9fbiwgY29uc3Qg
dmFsdWVfdHlwZSYgX194KTsKCgoKICAgICAgdm9pZAogICAgICBfTV9kZWZhdWx0X2FwcGVuZChz
aXplX3R5cGUgX19uKTsKCiAgICAgIGJvb2wKICAgICAgX01fc2hyaW5rX3RvX2ZpdCgpOwoKCgoK
CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+CiAgICAgICAgdm9pZAogICAgICAg
IF9NX2luc2VydF9hdXgoaXRlcmF0b3IgX19wb3NpdGlvbiwgX0FyZ3MmJi4uLiBfX2FyZ3MpOwoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+CiAgICAgICAgdm9pZAogICAgICAgIF9N
X2VtcGxhY2VfYmFja19hdXgoX0FyZ3MmJi4uLiBfX2FyZ3MpOwoKCgogICAgICBzaXplX3R5cGUK
ICAgICAgX01fY2hlY2tfbGVuKHNpemVfdHlwZSBfX24sIGNvbnN0IGNoYXIqIF9fcykgY29uc3QK
ICAgICAgewogaWYgKG1heF9zaXplKCkgLSBzaXplKCkgPCBfX24pCiAgIF9fdGhyb3dfbGVuZ3Ro
X2Vycm9yKChfX3MpKTsKCiBjb25zdCBzaXplX3R5cGUgX19sZW4gPSBzaXplKCkgKyBzdGQ6Om1h
eChzaXplKCksIF9fbik7CiByZXR1cm4gKF9fbGVuIDwgc2l6ZSgpIHx8IF9fbGVuID4gbWF4X3Np
emUoKSkgPyBtYXhfc2l6ZSgpIDogX19sZW47CiAgICAgIH0KCgoKCgogICAgICB2b2lkCiAgICAg
IF9NX2VyYXNlX2F0X2VuZChwb2ludGVyIF9fcG9zKSBub2V4Y2VwdAogICAgICB7CiBzdGQ6Ol9E
ZXN0cm95KF9fcG9zLCB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwgX01fZ2V0X1RwX2FsbG9jYXRv
cigpKTsKIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoID0gX19wb3M7CiAgICAgIH0KCiAgICAgIGl0
ZXJhdG9yCiAgICAgIF9NX2VyYXNlKGl0ZXJhdG9yIF9fcG9zaXRpb24pOwoKICAgICAgaXRlcmF0
b3IKICAgICAgX01fZXJhc2UoaXRlcmF0b3IgX19maXJzdCwgaXRlcmF0b3IgX19sYXN0KTsKCgog
ICAgcHJpdmF0ZToKCgoKICAgICAgdm9pZAogICAgICBfTV9tb3ZlX2Fzc2lnbih2ZWN0b3ImJiBf
X3gsIHN0ZDo6dHJ1ZV90eXBlKSBub2V4Y2VwdAogICAgICB7CiB2ZWN0b3IgX190bXAoZ2V0X2Fs
bG9jYXRvcigpKTsKIHRoaXMtPl9NX2ltcGwuX01fc3dhcF9kYXRhKF9fdG1wLl9NX2ltcGwpOwog
dGhpcy0+X01faW1wbC5fTV9zd2FwX2RhdGEoX194Ll9NX2ltcGwpOwogc3RkOjpfX2FsbG9jX29u
X21vdmUoX01fZ2V0X1RwX2FsbG9jYXRvcigpLCBfX3guX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsK
ICAgICAgfQoKCgogICAgICB2b2lkCiAgICAgIF9NX21vdmVfYXNzaWduKHZlY3RvciYmIF9feCwg
c3RkOjpmYWxzZV90eXBlKQogICAgICB7CiBpZiAoX194Ll9NX2dldF9UcF9hbGxvY2F0b3IoKSA9
PSB0aGlzLT5fTV9nZXRfVHBfYWxsb2NhdG9yKCkpCiAgIF9NX21vdmVfYXNzaWduKHN0ZDo6bW92
ZShfX3gpLCBzdGQ6OnRydWVfdHlwZSgpKTsKIGVsc2UKICAgewoKCiAgICAgdGhpcy0+YXNzaWdu
KHN0ZDo6X19tYWtlX21vdmVfaWZfbm9leGNlcHRfaXRlcmF0b3IoX194LmJlZ2luKCkpLAogICAg
c3RkOjpfX21ha2VfbW92ZV9pZl9ub2V4Y2VwdF9pdGVyYXRvcihfX3guZW5kKCkpKTsKICAgICBf
X3guY2xlYXIoKTsKICAgfQogICAgICB9CgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4K
IF9VcCoKIF9NX2RhdGFfcHRyKF9VcCogX19wdHIpIGNvbnN0CiB7IHJldHVybiBfX3B0cjsgfQoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1B0cj4KIHR5cGVuYW1lIHN0ZDo6cG9pbnRlcl90cmFp
dHM8X1B0cj46OmVsZW1lbnRfdHlwZSoKIF9NX2RhdGFfcHRyKF9QdHIgX19wdHIpIGNvbnN0CiB7
IHJldHVybiBlbXB0eSgpID8gbnVsbHB0ciA6IHN0ZDo6X19hZGRyZXNzb2YoKl9fcHRyKTsgfQoK
CgoKCgogICAgfTsKIyAxNTA5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I9PShj
b25zdCB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3gsIGNvbnN0IHZlY3RvcjxfVHAsIF9BbGxvYz4m
IF9feSkKICAgIHsgcmV0dXJuIChfX3guc2l6ZSgpID09IF9feS5zaXplKCkKICAgICAgICYmIHN0
ZDo6ZXF1YWwoX194LmJlZ2luKCksIF9feC5lbmQoKSwgX195LmJlZ2luKCkpKTsgfQojIDE1MjYg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
Yml0cy9zdGxfdmVjdG9yLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9B
bGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjwoY29uc3QgdmVjdG9yPF9UcCwgX0Fs
bG9jPiYgX194LCBjb25zdCB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3kpCiAgICB7IHJldHVybiBz
dGQ6OmxleGljb2dyYXBoaWNhbF9jb21wYXJlKF9feC5iZWdpbigpLCBfX3guZW5kKCksCiAgICAg
ICBfX3kuYmVnaW4oKSwgX195LmVuZCgpKTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0
eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCB2ZWN0
b3I8X1RwLCBfQWxsb2M+JiBfX3gsIGNvbnN0IHZlY3RvcjxfVHAsIF9BbGxvYz4mIF9feSkKICAg
IHsgcmV0dXJuICEoX194ID09IF9feSk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlw
ZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPihjb25zdCB2ZWN0b3I8
X1RwLCBfQWxsb2M+JiBfX3gsIGNvbnN0IHZlY3RvcjxfVHAsIF9BbGxvYz4mIF9feSkKICAgIHsg
cmV0dXJuIF9feSA8IF9feDsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBf
QWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8PShjb25zdCB2ZWN0b3I8X1RwLCBf
QWxsb2M+JiBfX3gsIGNvbnN0IHZlY3RvcjxfVHAsIF9BbGxvYz4mIF9feSkKICAgIHsgcmV0dXJu
ICEoX195IDwgX194KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxs
b2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+PShjb25zdCB2ZWN0b3I8X1RwLCBfQWxs
b2M+JiBfX3gsIGNvbnN0IHZlY3RvcjxfVHAsIF9BbGxvYz4mIF9feSkKICAgIHsgcmV0dXJuICEo
X194IDwgX195KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxsb2M+
CiAgICBpbmxpbmUgdm9pZAogICAgc3dhcCh2ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3gsIHZlY3Rv
cjxfVHAsIF9BbGxvYz4mIF9feSkKICAgIHsgX194LnN3YXAoX195KTsgfQoKCn0KIyA2NSAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy92ZWN0
b3IiIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvYml0cy9zdGxfYnZlY3Rvci5oIiAxIDMKIyA1NyAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9idmVjdG9y
LmgiIDMKI2RlZmluZSBfU1RMX0JWRUNUT1JfSCAxCgoKCgoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJp
YnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKICB0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgX0JpdF90eXBlOwogIGVudW0geyBfU193b3JkX2JpdCA9IGludCg4ICogc2l6ZW9m
KF9CaXRfdHlwZSkpIH07CgogIHN0cnVjdCBfQml0X3JlZmVyZW5jZQogIHsKICAgIF9CaXRfdHlw
ZSAqIF9NX3A7CiAgICBfQml0X3R5cGUgX01fbWFzazsKCiAgICBfQml0X3JlZmVyZW5jZShfQml0
X3R5cGUgKiBfX3gsIF9CaXRfdHlwZSBfX3kpCiAgICA6IF9NX3AoX194KSwgX01fbWFzayhfX3kp
IHsgfQoKICAgIF9CaXRfcmVmZXJlbmNlKCkgbm9leGNlcHQgOiBfTV9wKDApLCBfTV9tYXNrKDAp
IHsgfQoKICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCBub2V4Y2VwdAogICAgeyByZXR1cm4gISEo
Kl9NX3AgJiBfTV9tYXNrKTsgfQoKICAgIF9CaXRfcmVmZXJlbmNlJgogICAgb3BlcmF0b3I9KGJv
b2wgX194KSBub2V4Y2VwdAogICAgewogICAgICBpZiAoX194KQogKl9NX3AgfD0gX01fbWFzazsK
ICAgICAgZWxzZQogKl9NX3AgJj0gfl9NX21hc2s7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0K
CiAgICBfQml0X3JlZmVyZW5jZSYKICAgIG9wZXJhdG9yPShjb25zdCBfQml0X3JlZmVyZW5jZSYg
X194KSBub2V4Y2VwdAogICAgeyByZXR1cm4gKnRoaXMgPSBib29sKF9feCk7IH0KCiAgICBib29s
CiAgICBvcGVyYXRvcj09KGNvbnN0IF9CaXRfcmVmZXJlbmNlJiBfX3gpIGNvbnN0CiAgICB7IHJl
dHVybiBib29sKCp0aGlzKSA9PSBib29sKF9feCk7IH0KCiAgICBib29sCiAgICBvcGVyYXRvcjwo
Y29uc3QgX0JpdF9yZWZlcmVuY2UmIF9feCkgY29uc3QKICAgIHsgcmV0dXJuICFib29sKCp0aGlz
KSAmJiBib29sKF9feCk7IH0KCiAgICB2b2lkCiAgICBmbGlwKCkgbm9leGNlcHQKICAgIHsgKl9N
X3AgXj0gX01fbWFzazsgfQogIH07CgoKICBpbmxpbmUgdm9pZAogIHN3YXAoX0JpdF9yZWZlcmVu
Y2UgX194LCBfQml0X3JlZmVyZW5jZSBfX3kpIG5vZXhjZXB0CiAgewogICAgYm9vbCBfX3RtcCA9
IF9feDsKICAgIF9feCA9IF9feTsKICAgIF9feSA9IF9fdG1wOwogIH0KCiAgaW5saW5lIHZvaWQK
ICBzd2FwKF9CaXRfcmVmZXJlbmNlIF9feCwgYm9vbCYgX195KSBub2V4Y2VwdAogIHsKICAgIGJv
b2wgX190bXAgPSBfX3g7CiAgICBfX3ggPSBfX3k7CiAgICBfX3kgPSBfX3RtcDsKICB9CgogIGlu
bGluZSB2b2lkCiAgc3dhcChib29sJiBfX3gsIF9CaXRfcmVmZXJlbmNlIF9feSkgbm9leGNlcHQK
ICB7CiAgICBib29sIF9fdG1wID0gX194OwogICAgX194ID0gX195OwogICAgX195ID0gX190bXA7
CiAgfQoKCiAgc3RydWN0IF9CaXRfaXRlcmF0b3JfYmFzZQogIDogcHVibGljIHN0ZDo6aXRlcmF0
b3I8c3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZywgYm9vbD4KICB7CiAgICBfQml0X3R5
cGUgKiBfTV9wOwogICAgdW5zaWduZWQgaW50IF9NX29mZnNldDsKCiAgICBfQml0X2l0ZXJhdG9y
X2Jhc2UoX0JpdF90eXBlICogX194LCB1bnNpZ25lZCBpbnQgX195KQogICAgOiBfTV9wKF9feCks
IF9NX29mZnNldChfX3kpIHsgfQoKICAgIHZvaWQKICAgIF9NX2J1bXBfdXAoKQogICAgewogICAg
ICBpZiAoX01fb2Zmc2V0KysgPT0gaW50KF9TX3dvcmRfYml0KSAtIDEpCiB7CiAgIF9NX29mZnNl
dCA9IDA7CiAgICsrX01fcDsKIH0KICAgIH0KCiAgICB2b2lkCiAgICBfTV9idW1wX2Rvd24oKQog
ICAgewogICAgICBpZiAoX01fb2Zmc2V0LS0gPT0gMCkKIHsKICAgX01fb2Zmc2V0ID0gaW50KF9T
X3dvcmRfYml0KSAtIDE7CiAgIC0tX01fcDsKIH0KICAgIH0KCiAgICB2b2lkCiAgICBfTV9pbmNy
KHB0cmRpZmZfdCBfX2kpCiAgICB7CiAgICAgIGRpZmZlcmVuY2VfdHlwZSBfX24gPSBfX2kgKyBf
TV9vZmZzZXQ7CiAgICAgIF9NX3AgKz0gX19uIC8gaW50KF9TX3dvcmRfYml0KTsKICAgICAgX19u
ID0gX19uICUgaW50KF9TX3dvcmRfYml0KTsKICAgICAgaWYgKF9fbiA8IDApCiB7CiAgIF9fbiAr
PSBpbnQoX1Nfd29yZF9iaXQpOwogICAtLV9NX3A7CiB9CiAgICAgIF9NX29mZnNldCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGludD4oX19uKTsKICAgIH0KCiAgICBib29sCiAgICBvcGVyYXRvcj09
KGNvbnN0IF9CaXRfaXRlcmF0b3JfYmFzZSYgX19pKSBjb25zdAogICAgeyByZXR1cm4gX01fcCA9
PSBfX2kuX01fcCAmJiBfTV9vZmZzZXQgPT0gX19pLl9NX29mZnNldDsgfQoKICAgIGJvb2wKICAg
IG9wZXJhdG9yPChjb25zdCBfQml0X2l0ZXJhdG9yX2Jhc2UmIF9faSkgY29uc3QKICAgIHsKICAg
ICAgcmV0dXJuIF9NX3AgPCBfX2kuX01fcAogICAgICB8fCAoX01fcCA9PSBfX2kuX01fcCAmJiBf
TV9vZmZzZXQgPCBfX2kuX01fb2Zmc2V0KTsKICAgIH0KCiAgICBib29sCiAgICBvcGVyYXRvciE9
KGNvbnN0IF9CaXRfaXRlcmF0b3JfYmFzZSYgX19pKSBjb25zdAogICAgeyByZXR1cm4gISgqdGhp
cyA9PSBfX2kpOyB9CgogICAgYm9vbAogICAgb3BlcmF0b3I+KGNvbnN0IF9CaXRfaXRlcmF0b3Jf
YmFzZSYgX19pKSBjb25zdAogICAgeyByZXR1cm4gX19pIDwgKnRoaXM7IH0KCiAgICBib29sCiAg
ICBvcGVyYXRvcjw9KGNvbnN0IF9CaXRfaXRlcmF0b3JfYmFzZSYgX19pKSBjb25zdAogICAgeyBy
ZXR1cm4gIShfX2kgPCAqdGhpcyk7IH0KCiAgICBib29sCiAgICBvcGVyYXRvcj49KGNvbnN0IF9C
aXRfaXRlcmF0b3JfYmFzZSYgX19pKSBjb25zdAogICAgeyByZXR1cm4gISgqdGhpcyA8IF9faSk7
IH0KICB9OwoKICBpbmxpbmUgcHRyZGlmZl90CiAgb3BlcmF0b3ItKGNvbnN0IF9CaXRfaXRlcmF0
b3JfYmFzZSYgX194LCBjb25zdCBfQml0X2l0ZXJhdG9yX2Jhc2UmIF9feSkKICB7CiAgICByZXR1
cm4gKGludChfU193b3JkX2JpdCkgKiAoX194Ll9NX3AgLSBfX3kuX01fcCkKICAgICArIF9feC5f
TV9vZmZzZXQgLSBfX3kuX01fb2Zmc2V0KTsKICB9CgogIHN0cnVjdCBfQml0X2l0ZXJhdG9yIDog
cHVibGljIF9CaXRfaXRlcmF0b3JfYmFzZQogIHsKICAgIHR5cGVkZWYgX0JpdF9yZWZlcmVuY2Ug
cmVmZXJlbmNlOwogICAgdHlwZWRlZiBfQml0X3JlZmVyZW5jZSogcG9pbnRlcjsKICAgIHR5cGVk
ZWYgX0JpdF9pdGVyYXRvciBpdGVyYXRvcjsKCiAgICBfQml0X2l0ZXJhdG9yKCkgOiBfQml0X2l0
ZXJhdG9yX2Jhc2UoMCwgMCkgeyB9CgogICAgX0JpdF9pdGVyYXRvcihfQml0X3R5cGUgKiBfX3gs
IHVuc2lnbmVkIGludCBfX3kpCiAgICA6IF9CaXRfaXRlcmF0b3JfYmFzZShfX3gsIF9feSkgeyB9
CgogICAgaXRlcmF0b3IKICAgIF9NX2NvbnN0X2Nhc3QoKSBjb25zdAogICAgeyByZXR1cm4gKnRo
aXM7IH0KCiAgICByZWZlcmVuY2UKICAgIG9wZXJhdG9yKigpIGNvbnN0CiAgICB7IHJldHVybiBy
ZWZlcmVuY2UoX01fcCwgMVVMIDw8IF9NX29mZnNldCk7IH0KCiAgICBpdGVyYXRvciYKICAgIG9w
ZXJhdG9yKysoKQogICAgewogICAgICBfTV9idW1wX3VwKCk7CiAgICAgIHJldHVybiAqdGhpczsK
ICAgIH0KCiAgICBpdGVyYXRvcgogICAgb3BlcmF0b3IrKyhpbnQpCiAgICB7CiAgICAgIGl0ZXJh
dG9yIF9fdG1wID0gKnRoaXM7CiAgICAgIF9NX2J1bXBfdXAoKTsKICAgICAgcmV0dXJuIF9fdG1w
OwogICAgfQoKICAgIGl0ZXJhdG9yJgogICAgb3BlcmF0b3ItLSgpCiAgICB7CiAgICAgIF9NX2J1
bXBfZG93bigpOwogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgaXRlcmF0b3IKICAgIG9w
ZXJhdG9yLS0oaW50KQogICAgewogICAgICBpdGVyYXRvciBfX3RtcCA9ICp0aGlzOwogICAgICBf
TV9idW1wX2Rvd24oKTsKICAgICAgcmV0dXJuIF9fdG1wOwogICAgfQoKICAgIGl0ZXJhdG9yJgog
ICAgb3BlcmF0b3IrPShkaWZmZXJlbmNlX3R5cGUgX19pKQogICAgewogICAgICBfTV9pbmNyKF9f
aSk7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICBpdGVyYXRvciYKICAgIG9wZXJhdG9y
LT0oZGlmZmVyZW5jZV90eXBlIF9faSkKICAgIHsKICAgICAgKnRoaXMgKz0gLV9faTsKICAgICAg
cmV0dXJuICp0aGlzOwogICAgfQoKICAgIGl0ZXJhdG9yCiAgICBvcGVyYXRvcisoZGlmZmVyZW5j
ZV90eXBlIF9faSkgY29uc3QKICAgIHsKICAgICAgaXRlcmF0b3IgX190bXAgPSAqdGhpczsKICAg
ICAgcmV0dXJuIF9fdG1wICs9IF9faTsKICAgIH0KCiAgICBpdGVyYXRvcgogICAgb3BlcmF0b3It
KGRpZmZlcmVuY2VfdHlwZSBfX2kpIGNvbnN0CiAgICB7CiAgICAgIGl0ZXJhdG9yIF9fdG1wID0g
KnRoaXM7CiAgICAgIHJldHVybiBfX3RtcCAtPSBfX2k7CiAgICB9CgogICAgcmVmZXJlbmNlCiAg
ICBvcGVyYXRvcltdKGRpZmZlcmVuY2VfdHlwZSBfX2kpIGNvbnN0CiAgICB7IHJldHVybiAqKCp0
aGlzICsgX19pKTsgfQogIH07CgogIGlubGluZSBfQml0X2l0ZXJhdG9yCiAgb3BlcmF0b3IrKHB0
cmRpZmZfdCBfX24sIGNvbnN0IF9CaXRfaXRlcmF0b3ImIF9feCkKICB7IHJldHVybiBfX3ggKyBf
X247IH0KCiAgc3RydWN0IF9CaXRfY29uc3RfaXRlcmF0b3IgOiBwdWJsaWMgX0JpdF9pdGVyYXRv
cl9iYXNlCiAgewogICAgdHlwZWRlZiBib29sIHJlZmVyZW5jZTsKICAgIHR5cGVkZWYgYm9vbCBj
b25zdF9yZWZlcmVuY2U7CiAgICB0eXBlZGVmIGNvbnN0IGJvb2wqIHBvaW50ZXI7CiAgICB0eXBl
ZGVmIF9CaXRfY29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CgogICAgX0JpdF9jb25zdF9p
dGVyYXRvcigpIDogX0JpdF9pdGVyYXRvcl9iYXNlKDAsIDApIHsgfQoKICAgIF9CaXRfY29uc3Rf
aXRlcmF0b3IoX0JpdF90eXBlICogX194LCB1bnNpZ25lZCBpbnQgX195KQogICAgOiBfQml0X2l0
ZXJhdG9yX2Jhc2UoX194LCBfX3kpIHsgfQoKICAgIF9CaXRfY29uc3RfaXRlcmF0b3IoY29uc3Qg
X0JpdF9pdGVyYXRvciYgX194KQogICAgOiBfQml0X2l0ZXJhdG9yX2Jhc2UoX194Ll9NX3AsIF9f
eC5fTV9vZmZzZXQpIHsgfQoKICAgIF9CaXRfaXRlcmF0b3IKICAgIF9NX2NvbnN0X2Nhc3QoKSBj
b25zdAogICAgeyByZXR1cm4gX0JpdF9pdGVyYXRvcihfTV9wLCBfTV9vZmZzZXQpOyB9CgogICAg
Y29uc3RfcmVmZXJlbmNlCiAgICBvcGVyYXRvciooKSBjb25zdAogICAgeyByZXR1cm4gX0JpdF9y
ZWZlcmVuY2UoX01fcCwgMVVMIDw8IF9NX29mZnNldCk7IH0KCiAgICBjb25zdF9pdGVyYXRvciYK
ICAgIG9wZXJhdG9yKysoKQogICAgewogICAgICBfTV9idW1wX3VwKCk7CiAgICAgIHJldHVybiAq
dGhpczsKICAgIH0KCiAgICBjb25zdF9pdGVyYXRvcgogICAgb3BlcmF0b3IrKyhpbnQpCiAgICB7
CiAgICAgIGNvbnN0X2l0ZXJhdG9yIF9fdG1wID0gKnRoaXM7CiAgICAgIF9NX2J1bXBfdXAoKTsK
ICAgICAgcmV0dXJuIF9fdG1wOwogICAgfQoKICAgIGNvbnN0X2l0ZXJhdG9yJgogICAgb3BlcmF0
b3ItLSgpCiAgICB7CiAgICAgIF9NX2J1bXBfZG93bigpOwogICAgICByZXR1cm4gKnRoaXM7CiAg
ICB9CgogICAgY29uc3RfaXRlcmF0b3IKICAgIG9wZXJhdG9yLS0oaW50KQogICAgewogICAgICBj
b25zdF9pdGVyYXRvciBfX3RtcCA9ICp0aGlzOwogICAgICBfTV9idW1wX2Rvd24oKTsKICAgICAg
cmV0dXJuIF9fdG1wOwogICAgfQoKICAgIGNvbnN0X2l0ZXJhdG9yJgogICAgb3BlcmF0b3IrPShk
aWZmZXJlbmNlX3R5cGUgX19pKQogICAgewogICAgICBfTV9pbmNyKF9faSk7CiAgICAgIHJldHVy
biAqdGhpczsKICAgIH0KCiAgICBjb25zdF9pdGVyYXRvciYKICAgIG9wZXJhdG9yLT0oZGlmZmVy
ZW5jZV90eXBlIF9faSkKICAgIHsKICAgICAgKnRoaXMgKz0gLV9faTsKICAgICAgcmV0dXJuICp0
aGlzOwogICAgfQoKICAgIGNvbnN0X2l0ZXJhdG9yCiAgICBvcGVyYXRvcisoZGlmZmVyZW5jZV90
eXBlIF9faSkgY29uc3QKICAgIHsKICAgICAgY29uc3RfaXRlcmF0b3IgX190bXAgPSAqdGhpczsK
ICAgICAgcmV0dXJuIF9fdG1wICs9IF9faTsKICAgIH0KCiAgICBjb25zdF9pdGVyYXRvcgogICAg
b3BlcmF0b3ItKGRpZmZlcmVuY2VfdHlwZSBfX2kpIGNvbnN0CiAgICB7CiAgICAgIGNvbnN0X2l0
ZXJhdG9yIF9fdG1wID0gKnRoaXM7CiAgICAgIHJldHVybiBfX3RtcCAtPSBfX2k7CiAgICB9Cgog
ICAgY29uc3RfcmVmZXJlbmNlCiAgICBvcGVyYXRvcltdKGRpZmZlcmVuY2VfdHlwZSBfX2kpIGNv
bnN0CiAgICB7IHJldHVybiAqKCp0aGlzICsgX19pKTsgfQogIH07CgogIGlubGluZSBfQml0X2Nv
bnN0X2l0ZXJhdG9yCiAgb3BlcmF0b3IrKHB0cmRpZmZfdCBfX24sIGNvbnN0IF9CaXRfY29uc3Rf
aXRlcmF0b3ImIF9feCkKICB7IHJldHVybiBfX3ggKyBfX247IH0KCiAgaW5saW5lIHZvaWQKICBf
X2ZpbGxfYnZlY3RvcihfQml0X2l0ZXJhdG9yIF9fZmlyc3QsIF9CaXRfaXRlcmF0b3IgX19sYXN0
LCBib29sIF9feCkKICB7CiAgICBmb3IgKDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkK
ICAgICAgKl9fZmlyc3QgPSBfX3g7CiAgfQoKICBpbmxpbmUgdm9pZAogIGZpbGwoX0JpdF9pdGVy
YXRvciBfX2ZpcnN0LCBfQml0X2l0ZXJhdG9yIF9fbGFzdCwgY29uc3QgYm9vbCYgX194KQogIHsK
ICAgIGlmIChfX2ZpcnN0Ll9NX3AgIT0gX19sYXN0Ll9NX3ApCiAgICAgIHsKIHN0ZDo6ZmlsbChf
X2ZpcnN0Ll9NX3AgKyAxLCBfX2xhc3QuX01fcCwgX194ID8gfjAgOiAwKTsKIF9fZmlsbF9idmVj
dG9yKF9fZmlyc3QsIF9CaXRfaXRlcmF0b3IoX19maXJzdC5fTV9wICsgMSwgMCksIF9feCk7CiBf
X2ZpbGxfYnZlY3RvcihfQml0X2l0ZXJhdG9yKF9fbGFzdC5fTV9wLCAwKSwgX19sYXN0LCBfX3gp
OwogICAgICB9CiAgICBlbHNlCiAgICAgIF9fZmlsbF9idmVjdG9yKF9fZmlyc3QsIF9fbGFzdCwg
X194KTsKICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KICAgIHN0cnVjdCBfQnZlY3Rv
cl9iYXNlCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jOjp0ZW1wbGF0ZSByZWJp
bmQ8X0JpdF90eXBlPjo6b3RoZXIKICAgICAgICBfQml0X2FsbG9jX3R5cGU7CgogICAgICBzdHJ1
Y3QgX0J2ZWN0b3JfaW1wbAogICAgICA6IHB1YmxpYyBfQml0X2FsbG9jX3R5cGUKICAgICAgewog
X0JpdF9pdGVyYXRvciBfTV9zdGFydDsKIF9CaXRfaXRlcmF0b3IgX01fZmluaXNoOwogX0JpdF90
eXBlKiBfTV9lbmRfb2Zfc3RvcmFnZTsKCiBfQnZlY3Rvcl9pbXBsKCkKIDogX0JpdF9hbGxvY190
eXBlKCksIF9NX3N0YXJ0KCksIF9NX2ZpbmlzaCgpLCBfTV9lbmRfb2Zfc3RvcmFnZSgwKQogeyB9
CgogX0J2ZWN0b3JfaW1wbChjb25zdCBfQml0X2FsbG9jX3R5cGUmIF9fYSkKIDogX0JpdF9hbGxv
Y190eXBlKF9fYSksIF9NX3N0YXJ0KCksIF9NX2ZpbmlzaCgpLCBfTV9lbmRfb2Zfc3RvcmFnZSgw
KQogeyB9CgoKIF9CdmVjdG9yX2ltcGwoX0JpdF9hbGxvY190eXBlJiYgX19hKQogOiBfQml0X2Fs
bG9jX3R5cGUoc3RkOjptb3ZlKF9fYSkpLCBfTV9zdGFydCgpLCBfTV9maW5pc2goKSwKICAgX01f
ZW5kX29mX3N0b3JhZ2UoMCkKIHsgfQoKICAgICAgfTsKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVk
ZWYgX0FsbG9jIGFsbG9jYXRvcl90eXBlOwoKICAgICAgX0JpdF9hbGxvY190eXBlJgogICAgICBf
TV9nZXRfQml0X2FsbG9jYXRvcigpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuICpzdGF0aWNfY2Fz
dDxfQml0X2FsbG9jX3R5cGUqPigmdGhpcy0+X01faW1wbCk7IH0KCiAgICAgIGNvbnN0IF9CaXRf
YWxsb2NfdHlwZSYKICAgICAgX01fZ2V0X0JpdF9hbGxvY2F0b3IoKSBjb25zdCBub2V4Y2VwdAog
ICAgICB7IHJldHVybiAqc3RhdGljX2Nhc3Q8Y29uc3QgX0JpdF9hbGxvY190eXBlKj4oJnRoaXMt
Pl9NX2ltcGwpOyB9CgogICAgICBhbGxvY2F0b3JfdHlwZQogICAgICBnZXRfYWxsb2NhdG9yKCkg
Y29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gYWxsb2NhdG9yX3R5cGUoX01fZ2V0X0JpdF9h
bGxvY2F0b3IoKSk7IH0KCiAgICAgIF9CdmVjdG9yX2Jhc2UoKQogICAgICA6IF9NX2ltcGwoKSB7
IH0KCiAgICAgIF9CdmVjdG9yX2Jhc2UoY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSkKICAgICAg
OiBfTV9pbXBsKF9fYSkgeyB9CgoKICAgICAgX0J2ZWN0b3JfYmFzZShfQnZlY3Rvcl9iYXNlJiYg
X194KSBub2V4Y2VwdAogICAgICA6IF9NX2ltcGwoc3RkOjptb3ZlKF9feC5fTV9nZXRfQml0X2Fs
bG9jYXRvcigpKSkKICAgICAgewogdGhpcy0+X01faW1wbC5fTV9zdGFydCA9IF9feC5fTV9pbXBs
Ll9NX3N0YXJ0OwogdGhpcy0+X01faW1wbC5fTV9maW5pc2ggPSBfX3guX01faW1wbC5fTV9maW5p
c2g7CiB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlID0gX194Ll9NX2ltcGwuX01fZW5k
X29mX3N0b3JhZ2U7CiBfX3guX01faW1wbC5fTV9zdGFydCA9IF9CaXRfaXRlcmF0b3IoKTsKIF9f
eC5fTV9pbXBsLl9NX2ZpbmlzaCA9IF9CaXRfaXRlcmF0b3IoKTsKIF9feC5fTV9pbXBsLl9NX2Vu
ZF9vZl9zdG9yYWdlID0gMDsKICAgICAgfQoKCiAgICAgIH5fQnZlY3Rvcl9iYXNlKCkKICAgICAg
eyB0aGlzLT5fTV9kZWFsbG9jYXRlKCk7IH0KCiAgICBwcm90ZWN0ZWQ6CiAgICAgIF9CdmVjdG9y
X2ltcGwgX01faW1wbDsKCiAgICAgIF9CaXRfdHlwZSoKICAgICAgX01fYWxsb2NhdGUoc2l6ZV90
IF9fbikKICAgICAgeyByZXR1cm4gX01faW1wbC5hbGxvY2F0ZShfU19ud29yZChfX24pKTsgfQoK
ICAgICAgdm9pZAogICAgICBfTV9kZWFsbG9jYXRlKCkKICAgICAgewogaWYgKF9NX2ltcGwuX01f
c3RhcnQuX01fcCkKICAgX01faW1wbC5kZWFsbG9jYXRlKF9NX2ltcGwuX01fc3RhcnQuX01fcCwK
ICAgICAgICBfTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlIC0gX01faW1wbC5fTV9zdGFydC5fTV9w
KTsKICAgICAgfQoKICAgICAgc3RhdGljIHNpemVfdAogICAgICBfU19ud29yZChzaXplX3QgX19u
KQogICAgICB7IHJldHVybiAoX19uICsgaW50KF9TX3dvcmRfYml0KSAtIDEpIC8gaW50KF9TX3dv
cmRfYml0KTsgfQogICAgfTsKCgp9CgoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChf
X3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgNTI1ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2J2ZWN0b3IuaCIg
Mwp0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAgY2xhc3MgdmVjdG9yPGJvb2wsIF9BbGxvYz4g
OiBwcm90ZWN0ZWQgX0J2ZWN0b3JfYmFzZTxfQWxsb2M+CiAgewogICAgdHlwZWRlZiBfQnZlY3Rv
cl9iYXNlPF9BbGxvYz4gX0Jhc2U7CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBmcmllbmQgc3Ry
dWN0IGhhc2g7CgoKICBwdWJsaWM6CiAgICB0eXBlZGVmIGJvb2wgdmFsdWVfdHlwZTsKICAgIHR5
cGVkZWYgc2l6ZV90IHNpemVfdHlwZTsKICAgIHR5cGVkZWYgcHRyZGlmZl90IGRpZmZlcmVuY2Vf
dHlwZTsKICAgIHR5cGVkZWYgX0JpdF9yZWZlcmVuY2UgcmVmZXJlbmNlOwogICAgdHlwZWRlZiBi
b29sIGNvbnN0X3JlZmVyZW5jZTsKICAgIHR5cGVkZWYgX0JpdF9yZWZlcmVuY2UqIHBvaW50ZXI7
CiAgICB0eXBlZGVmIGNvbnN0IGJvb2wqIGNvbnN0X3BvaW50ZXI7CiAgICB0eXBlZGVmIF9CaXRf
aXRlcmF0b3IgaXRlcmF0b3I7CiAgICB0eXBlZGVmIF9CaXRfY29uc3RfaXRlcmF0b3IgY29uc3Rf
aXRlcmF0b3I7CiAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRv
cj4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJh
dG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9yOwogICAgdHlwZWRlZiBfQWxsb2MgYWxsb2Nh
dG9yX3R5cGU7CgogICAgYWxsb2NhdG9yX3R5cGUgZ2V0X2FsbG9jYXRvcigpIGNvbnN0CiAgICB7
IHJldHVybiBfQmFzZTo6Z2V0X2FsbG9jYXRvcigpOyB9CgogIHByb3RlY3RlZDoKICAgIHVzaW5n
IF9CYXNlOjpfTV9hbGxvY2F0ZTsKICAgIHVzaW5nIF9CYXNlOjpfTV9kZWFsbG9jYXRlOwogICAg
dXNpbmcgX0Jhc2U6Ol9TX253b3JkOwogICAgdXNpbmcgX0Jhc2U6Ol9NX2dldF9CaXRfYWxsb2Nh
dG9yOwoKICBwdWJsaWM6CiAgICB2ZWN0b3IoKQogICAgOiBfQmFzZSgpIHsgfQoKICAgIGV4cGxp
Y2l0CiAgICB2ZWN0b3IoY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSkKICAgIDogX0Jhc2UoX19h
KSB7IH0KCgogICAgZXhwbGljaXQKICAgIHZlY3RvcihzaXplX3R5cGUgX19uLCBjb25zdCBhbGxv
Y2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUoKSkKICAgIDogdmVjdG9yKF9fbiwgZmFs
c2UsIF9fYSkKICAgIHsgfQoKICAgIHZlY3RvcihzaXplX3R5cGUgX19uLCBjb25zdCBib29sJiBf
X3ZhbHVlLAogICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9IGFsbG9jYXRvcl90eXBlKCkp
CiAgICA6IF9CYXNlKF9fYSkKICAgIHsKICAgICAgX01faW5pdGlhbGl6ZShfX24pOwogICAgICBz
dGQ6OmZpbGwodGhpcy0+X01faW1wbC5fTV9zdGFydC5fTV9wLCB0aGlzLT5fTV9pbXBsLl9NX2Vu
ZF9vZl9zdG9yYWdlLAogIF9fdmFsdWUgPyB+MCA6IDApOwogICAgfQojIDU5MSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9i
dmVjdG9yLmgiIDMKICAgIHZlY3Rvcihjb25zdCB2ZWN0b3ImIF9feCkKICAgIDogX0Jhc2UoX194
Ll9NX2dldF9CaXRfYWxsb2NhdG9yKCkpCiAgICB7CiAgICAgIF9NX2luaXRpYWxpemUoX194LnNp
emUoKSk7CiAgICAgIF9NX2NvcHlfYWxpZ25lZChfX3guYmVnaW4oKSwgX194LmVuZCgpLCB0aGlz
LT5fTV9pbXBsLl9NX3N0YXJ0KTsKICAgIH0KCgogICAgdmVjdG9yKHZlY3RvciYmIF9feCkgbm9l
eGNlcHQKICAgIDogX0Jhc2Uoc3RkOjptb3ZlKF9feCkpIHsgfQoKICAgIHZlY3Rvcihpbml0aWFs
aXplcl9saXN0PGJvb2w+IF9fbCwKICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBhbGxv
Y2F0b3JfdHlwZSgpKQogICAgOiBfQmFzZShfX2EpCiAgICB7CiAgICAgIF9NX2luaXRpYWxpemVf
cmFuZ2UoX19sLmJlZ2luKCksIF9fbC5lbmQoKSwKICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9y
X3RhZygpKTsKICAgIH0KCgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLAog
ICAgICB0eXBlbmFtZSA9IHN0ZDo6X1JlcXVpcmVJbnB1dEl0ZXI8X0lucHV0SXRlcmF0b3I+Pgog
ICAgICB2ZWN0b3IoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0
LAogICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUoKSkKICAg
ICAgOiBfQmFzZShfX2EpCiAgICAgIHsgX01faW5pdGlhbGl6ZV9kaXNwYXRjaChfX2ZpcnN0LCBf
X2xhc3QsIF9fZmFsc2VfdHlwZSgpKTsgfQojIDYyOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9idmVjdG9yLmgiIDMKICAg
IH52ZWN0b3IoKSBub2V4Y2VwdCB7IH0KCiAgICB2ZWN0b3ImCiAgICBvcGVyYXRvcj0oY29uc3Qg
dmVjdG9yJiBfX3gpCiAgICB7CiAgICAgIGlmICgmX194ID09IHRoaXMpCiByZXR1cm4gKnRoaXM7
CiAgICAgIGlmIChfX3guc2l6ZSgpID4gY2FwYWNpdHkoKSkKIHsKICAgdGhpcy0+X01fZGVhbGxv
Y2F0ZSgpOwogICBfTV9pbml0aWFsaXplKF9feC5zaXplKCkpOwogfQogICAgICB0aGlzLT5fTV9p
bXBsLl9NX2ZpbmlzaCA9IF9NX2NvcHlfYWxpZ25lZChfX3guYmVnaW4oKSwgX194LmVuZCgpLAog
ICAgICBiZWdpbigpKTsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKCiAgICB2ZWN0b3ImCiAg
ICBvcGVyYXRvcj0odmVjdG9yJiYgX194KQogICAgewoKCiAgICAgIHRoaXMtPmNsZWFyKCk7CiAg
ICAgIHRoaXMtPnN3YXAoX194KTsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIHZlY3Rv
ciYKICAgIG9wZXJhdG9yPShpbml0aWFsaXplcl9saXN0PGJvb2w+IF9fbCkKICAgIHsKICAgICAg
dGhpcy0+YXNzaWduIChfX2wuYmVnaW4oKSwgX19sLmVuZCgpKTsKICAgICAgcmV0dXJuICp0aGlz
OwogICAgfQoKCgoKCgogICAgdm9pZAogICAgYXNzaWduKHNpemVfdHlwZSBfX24sIGNvbnN0IGJv
b2wmIF9feCkKICAgIHsgX01fZmlsbF9hc3NpZ24oX19uLCBfX3gpOyB9CgoKICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLAogICAgICB0eXBlbmFtZSA9IHN0ZDo6X1JlcXVpcmVJ
bnB1dEl0ZXI8X0lucHV0SXRlcmF0b3I+PgogICAgICB2b2lkCiAgICAgIGFzc2lnbihfSW5wdXRJ
dGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpCiAgICAgIHsgX01fYXNzaWdu
X2Rpc3BhdGNoKF9fZmlyc3QsIF9fbGFzdCwgX19mYWxzZV90eXBlKCkpOyB9CiMgNjkwICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMv
c3RsX2J2ZWN0b3IuaCIgMwogICAgdm9pZAogICAgYXNzaWduKGluaXRpYWxpemVyX2xpc3Q8Ym9v
bD4gX19sKQogICAgeyB0aGlzLT5hc3NpZ24oX19sLmJlZ2luKCksIF9fbC5lbmQoKSk7IH0KCgog
ICAgaXRlcmF0b3IKICAgIGJlZ2luKCkgbm9leGNlcHQKICAgIHsgcmV0dXJuIHRoaXMtPl9NX2lt
cGwuX01fc3RhcnQ7IH0KCiAgICBjb25zdF9pdGVyYXRvcgogICAgYmVnaW4oKSBjb25zdCBub2V4
Y2VwdAogICAgeyByZXR1cm4gdGhpcy0+X01faW1wbC5fTV9zdGFydDsgfQoKICAgIGl0ZXJhdG9y
CiAgICBlbmQoKSBub2V4Y2VwdAogICAgeyByZXR1cm4gdGhpcy0+X01faW1wbC5fTV9maW5pc2g7
IH0KCiAgICBjb25zdF9pdGVyYXRvcgogICAgZW5kKCkgY29uc3Qgbm9leGNlcHQKICAgIHsgcmV0
dXJuIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoOyB9CgogICAgcmV2ZXJzZV9pdGVyYXRvcgogICAg
cmJlZ2luKCkgbm9leGNlcHQKICAgIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9
CgogICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvcgogICAgcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQK
ICAgIHsgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CgogICAgcmV2ZXJz
ZV9pdGVyYXRvcgogICAgcmVuZCgpIG5vZXhjZXB0CiAgICB7IHJldHVybiByZXZlcnNlX2l0ZXJh
dG9yKGJlZ2luKCkpOyB9CgogICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvcgogICAgcmVuZCgpIGNv
bnN0IG5vZXhjZXB0CiAgICB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkp
OyB9CgoKICAgIGNvbnN0X2l0ZXJhdG9yCiAgICBjYmVnaW4oKSBjb25zdCBub2V4Y2VwdAogICAg
eyByZXR1cm4gdGhpcy0+X01faW1wbC5fTV9zdGFydDsgfQoKICAgIGNvbnN0X2l0ZXJhdG9yCiAg
ICBjZW5kKCkgY29uc3Qgbm9leGNlcHQKICAgIHsgcmV0dXJuIHRoaXMtPl9NX2ltcGwuX01fZmlu
aXNoOyB9CgogICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvcgogICAgY3JiZWdpbigpIGNvbnN0IG5v
ZXhjZXB0CiAgICB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQoKICAg
IGNvbnN0X3JldmVyc2VfaXRlcmF0b3IKICAgIGNyZW5kKCkgY29uc3Qgbm9leGNlcHQKICAgIHsg
cmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KCgogICAgc2l6ZV90eXBl
CiAgICBzaXplKCkgY29uc3Qgbm9leGNlcHQKICAgIHsgcmV0dXJuIHNpemVfdHlwZShlbmQoKSAt
IGJlZ2luKCkpOyB9CgogICAgc2l6ZV90eXBlCiAgICBtYXhfc2l6ZSgpIGNvbnN0IG5vZXhjZXB0
CiAgICB7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX2lzaXplID0KIF9fZ251X2N4eDo6X19udW1l
cmljX3RyYWl0czxkaWZmZXJlbmNlX3R5cGU+OjpfX21heAogLSBpbnQoX1Nfd29yZF9iaXQpICsg
MTsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fYXNpemUgPSBfTV9nZXRfQml0X2FsbG9jYXRvcigp
Lm1heF9zaXplKCk7CiAgICAgIHJldHVybiAoX19hc2l6ZSA8PSBfX2lzaXplIC8gaW50KF9TX3dv
cmRfYml0KQogICAgICAgPyBfX2FzaXplICogaW50KF9TX3dvcmRfYml0KSA6IF9faXNpemUpOwog
ICAgfQoKICAgIHNpemVfdHlwZQogICAgY2FwYWNpdHkoKSBjb25zdCBub2V4Y2VwdAogICAgeyBy
ZXR1cm4gc2l6ZV90eXBlKGNvbnN0X2l0ZXJhdG9yKHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0
b3JhZ2UsIDApCiAgICAgICAgIC0gYmVnaW4oKSk7IH0KCiAgICBib29sCiAgICBlbXB0eSgpIGNv
bnN0IG5vZXhjZXB0CiAgICB7IHJldHVybiBiZWdpbigpID09IGVuZCgpOyB9CgogICAgcmVmZXJl
bmNlCiAgICBvcGVyYXRvcltdKHNpemVfdHlwZSBfX24pCiAgICB7CiAgICAgIHJldHVybiAqaXRl
cmF0b3IodGhpcy0+X01faW1wbC5fTV9zdGFydC5fTV9wCiAgICAgICAgICsgX19uIC8gaW50KF9T
X3dvcmRfYml0KSwgX19uICUgaW50KF9TX3dvcmRfYml0KSk7CiAgICB9CgogICAgY29uc3RfcmVm
ZXJlbmNlCiAgICBvcGVyYXRvcltdKHNpemVfdHlwZSBfX24pIGNvbnN0CiAgICB7CiAgICAgIHJl
dHVybiAqY29uc3RfaXRlcmF0b3IodGhpcy0+X01faW1wbC5fTV9zdGFydC5fTV9wCiAgICAgICAg
KyBfX24gLyBpbnQoX1Nfd29yZF9iaXQpLCBfX24gJSBpbnQoX1Nfd29yZF9iaXQpKTsKICAgIH0K
CiAgcHJvdGVjdGVkOgogICAgdm9pZAogICAgX01fcmFuZ2VfY2hlY2soc2l6ZV90eXBlIF9fbikg
Y29uc3QKICAgIHsKICAgICAgaWYgKF9fbiA+PSB0aGlzLT5zaXplKCkpCiBfX3Rocm93X291dF9v
Zl9yYW5nZV9mbXQoKCJ2ZWN0b3I8Ym9vbD46Ol9NX3JhbmdlX2NoZWNrOiBfX24gIiAiKHdoaWNo
IGlzICV6dSkgPj0gdGhpcy0+c2l6ZSgpICIgIih3aGljaCBpcyAlenUpIikKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgLAogICAgIF9fbiwgdGhpcy0+c2l6ZSgpKTsKICAgIH0KCiAgcHVibGlj
OgogICAgcmVmZXJlbmNlCiAgICBhdChzaXplX3R5cGUgX19uKQogICAgeyBfTV9yYW5nZV9jaGVj
ayhfX24pOyByZXR1cm4gKCp0aGlzKVtfX25dOyB9CgogICAgY29uc3RfcmVmZXJlbmNlCiAgICBh
dChzaXplX3R5cGUgX19uKSBjb25zdAogICAgeyBfTV9yYW5nZV9jaGVjayhfX24pOyByZXR1cm4g
KCp0aGlzKVtfX25dOyB9CgogICAgdm9pZAogICAgcmVzZXJ2ZShzaXplX3R5cGUgX19uKQogICAg
ewogICAgICBpZiAoX19uID4gbWF4X3NpemUoKSkKIF9fdGhyb3dfbGVuZ3RoX2Vycm9yKCgidmVj
dG9yOjpyZXNlcnZlIikpOwogICAgICBpZiAoY2FwYWNpdHkoKSA8IF9fbikKIF9NX3JlYWxsb2Nh
dGUoX19uKTsKICAgIH0KCiAgICByZWZlcmVuY2UKICAgIGZyb250KCkKICAgIHsgcmV0dXJuICpi
ZWdpbigpOyB9CgogICAgY29uc3RfcmVmZXJlbmNlCiAgICBmcm9udCgpIGNvbnN0CiAgICB7IHJl
dHVybiAqYmVnaW4oKTsgfQoKICAgIHJlZmVyZW5jZQogICAgYmFjaygpCiAgICB7IHJldHVybiAq
KGVuZCgpIC0gMSk7IH0KCiAgICBjb25zdF9yZWZlcmVuY2UKICAgIGJhY2soKSBjb25zdAogICAg
eyByZXR1cm4gKihlbmQoKSAtIDEpOyB9CgoKCgoKCiAgICB2b2lkCiAgICBkYXRhKCkgbm9leGNl
cHQgeyB9CgogICAgdm9pZAogICAgcHVzaF9iYWNrKGJvb2wgX194KQogICAgewogICAgICBpZiAo
dGhpcy0+X01faW1wbC5fTV9maW5pc2guX01fcCAhPSB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9z
dG9yYWdlKQogICAgICAgICp0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCsrID0gX194OwogICAgICBl
bHNlCiAgICAgICAgX01faW5zZXJ0X2F1eChlbmQoKSwgX194KTsKICAgIH0KCiAgICB2b2lkCiAg
ICBzd2FwKHZlY3RvciYgX194KQogICAgewogICAgICBzdGQ6OnN3YXAodGhpcy0+X01faW1wbC5f
TV9zdGFydCwgX194Ll9NX2ltcGwuX01fc3RhcnQpOwogICAgICBzdGQ6OnN3YXAodGhpcy0+X01f
aW1wbC5fTV9maW5pc2gsIF9feC5fTV9pbXBsLl9NX2ZpbmlzaCk7CiAgICAgIHN0ZDo6c3dhcCh0
aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlLAogIF9feC5fTV9pbXBsLl9NX2VuZF9vZl9z
dG9yYWdlKTsKCgoKICAgICAgc3RkOjpfX2FsbG9jX3N3YXA8dHlwZW5hbWUgX0Jhc2U6Ol9CaXRf
YWxsb2NfdHlwZT46OgogX1NfZG9faXQoX01fZ2V0X0JpdF9hbGxvY2F0b3IoKSwgX194Ll9NX2dl
dF9CaXRfYWxsb2NhdG9yKCkpOwogICAgfQoKCiAgICBzdGF0aWMgdm9pZAogICAgc3dhcChyZWZl
cmVuY2UgX194LCByZWZlcmVuY2UgX195KSBub2V4Y2VwdAogICAgewogICAgICBib29sIF9fdG1w
ID0gX194OwogICAgICBfX3ggPSBfX3k7CiAgICAgIF9feSA9IF9fdG1wOwogICAgfQoKICAgIGl0
ZXJhdG9yCgogICAgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIF9fcG9zaXRpb24sIGNvbnN0IGJvb2wm
IF9feCA9IGJvb2woKSkKCgoKICAgIHsKICAgICAgY29uc3QgZGlmZmVyZW5jZV90eXBlIF9fbiA9
IF9fcG9zaXRpb24gLSBiZWdpbigpOwogICAgICBpZiAodGhpcy0+X01faW1wbC5fTV9maW5pc2gu
X01fcCAhPSB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlCiAgICYmIF9fcG9zaXRpb24g
PT0gZW5kKCkpCiAgICAgICAgKnRoaXMtPl9NX2ltcGwuX01fZmluaXNoKysgPSBfX3g7CiAgICAg
IGVsc2UKICAgICAgICBfTV9pbnNlcnRfYXV4KF9fcG9zaXRpb24uX01fY29uc3RfY2FzdCgpLCBf
X3gpOwogICAgICByZXR1cm4gYmVnaW4oKSArIF9fbjsKICAgIH0KCgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0lucHV0SXRlcmF0b3IsCiAgICAgIHR5cGVuYW1lID0gc3RkOjpfUmVxdWlyZUlucHV0
SXRlcjxfSW5wdXRJdGVyYXRvcj4+CiAgICAgIGl0ZXJhdG9yCiAgICAgIGluc2VydChjb25zdF9p
dGVyYXRvciBfX3Bvc2l0aW9uLAogICAgICBfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyYXRvciBfX2xhc3QpCiAgICAgIHsKIGRpZmZlcmVuY2VfdHlwZSBfX29mZnNldCA9IF9fcG9z
aXRpb24gLSBjYmVnaW4oKTsKIF9NX2luc2VydF9kaXNwYXRjaChfX3Bvc2l0aW9uLl9NX2NvbnN0
X2Nhc3QoKSwKICAgICAgX19maXJzdCwgX19sYXN0LCBfX2ZhbHNlX3R5cGUoKSk7CiByZXR1cm4g
YmVnaW4oKSArIF9fb2Zmc2V0OwogICAgICB9CiMgOTA4ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2J2ZWN0b3IuaCIgMwog
ICAgaXRlcmF0b3IKICAgIGluc2VydChjb25zdF9pdGVyYXRvciBfX3Bvc2l0aW9uLCBzaXplX3R5
cGUgX19uLCBjb25zdCBib29sJiBfX3gpCiAgICB7CiAgICAgIGRpZmZlcmVuY2VfdHlwZSBfX29m
ZnNldCA9IF9fcG9zaXRpb24gLSBjYmVnaW4oKTsKICAgICAgX01fZmlsbF9pbnNlcnQoX19wb3Np
dGlvbi5fTV9jb25zdF9jYXN0KCksIF9fbiwgX194KTsKICAgICAgcmV0dXJuIGJlZ2luKCkgKyBf
X29mZnNldDsKICAgIH0KCgoKCgoKCiAgICBpdGVyYXRvcgogICAgaW5zZXJ0KGNvbnN0X2l0ZXJh
dG9yIF9fcCwgaW5pdGlhbGl6ZXJfbGlzdDxib29sPiBfX2wpCiAgICB7IHJldHVybiB0aGlzLT5p
bnNlcnQoX19wLCBfX2wuYmVnaW4oKSwgX19sLmVuZCgpKTsgfQoKCiAgICB2b2lkCiAgICBwb3Bf
YmFjaygpCiAgICB7IC0tdGhpcy0+X01faW1wbC5fTV9maW5pc2g7IH0KCiAgICBpdGVyYXRvcgoK
ICAgIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIF9fcG9zaXRpb24pCgoKCiAgICB7IHJldHVybiBfTV9l
cmFzZShfX3Bvc2l0aW9uLl9NX2NvbnN0X2Nhc3QoKSk7IH0KCiAgICBpdGVyYXRvcgoKICAgIGVy
YXNlKGNvbnN0X2l0ZXJhdG9yIF9fZmlyc3QsIGNvbnN0X2l0ZXJhdG9yIF9fbGFzdCkKCgoKICAg
IHsgcmV0dXJuIF9NX2VyYXNlKF9fZmlyc3QuX01fY29uc3RfY2FzdCgpLCBfX2xhc3QuX01fY29u
c3RfY2FzdCgpKTsgfQoKICAgIHZvaWQKICAgIHJlc2l6ZShzaXplX3R5cGUgX19uZXdfc2l6ZSwg
Ym9vbCBfX3ggPSBib29sKCkpCiAgICB7CiAgICAgIGlmIChfX25ld19zaXplIDwgc2l6ZSgpKQog
ICAgICAgIF9NX2VyYXNlX2F0X2VuZChiZWdpbigpICsgZGlmZmVyZW5jZV90eXBlKF9fbmV3X3Np
emUpKTsKICAgICAgZWxzZQogICAgICAgIGluc2VydChlbmQoKSwgX19uZXdfc2l6ZSAtIHNpemUo
KSwgX194KTsKICAgIH0KCgogICAgdm9pZAogICAgc2hyaW5rX3RvX2ZpdCgpCiAgICB7IF9NX3No
cmlua190b19maXQoKTsgfQoKCiAgICB2b2lkCiAgICBmbGlwKCkgbm9leGNlcHQKICAgIHsKICAg
ICAgZm9yIChfQml0X3R5cGUgKiBfX3AgPSB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0Ll9NX3A7CiAg
ICBfX3AgIT0gdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZTsgKytfX3ApCiAgICAgICAg
Kl9fcCA9IH4qX19wOwogICAgfQoKICAgIHZvaWQKICAgIGNsZWFyKCkgbm9leGNlcHQKICAgIHsg
X01fZXJhc2VfYXRfZW5kKGJlZ2luKCkpOyB9CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9B
cmdzPgogICAgICB2b2lkCiAgICAgIGVtcGxhY2VfYmFjayhfQXJncyYmLi4uIF9fYXJncykKICAg
ICAgeyBwdXNoX2JhY2soYm9vbChfX2FyZ3MuLi4pKTsgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIF9BcmdzPgogICAgICBpdGVyYXRvcgogICAgICBlbXBsYWNlKGNvbnN0X2l0ZXJhdG9yIF9f
cG9zLCBfQXJncyYmLi4uIF9fYXJncykKICAgICAgeyByZXR1cm4gaW5zZXJ0KF9fcG9zLCBib29s
KF9fYXJncy4uLikpOyB9CgoKICBwcm90ZWN0ZWQ6CgogICAgaXRlcmF0b3IKICAgIF9NX2NvcHlf
YWxpZ25lZChjb25zdF9pdGVyYXRvciBfX2ZpcnN0LCBjb25zdF9pdGVyYXRvciBfX2xhc3QsCiAg
ICAgIGl0ZXJhdG9yIF9fcmVzdWx0KQogICAgewogICAgICBfQml0X3R5cGUqIF9fcSA9IHN0ZDo6
Y29weShfX2ZpcnN0Ll9NX3AsIF9fbGFzdC5fTV9wLCBfX3Jlc3VsdC5fTV9wKTsKICAgICAgcmV0
dXJuIHN0ZDo6Y29weShjb25zdF9pdGVyYXRvcihfX2xhc3QuX01fcCwgMCksIF9fbGFzdCwKICAg
ICAgICAgaXRlcmF0b3IoX19xLCAwKSk7CiAgICB9CgogICAgdm9pZAogICAgX01faW5pdGlhbGl6
ZShzaXplX3R5cGUgX19uKQogICAgewogICAgICBfQml0X3R5cGUqIF9fcSA9IHRoaXMtPl9NX2Fs
bG9jYXRlKF9fbik7CiAgICAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UgPSBfX3Eg
KyBfU19ud29yZChfX24pOwogICAgICB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ID0gaXRlcmF0b3Io
X19xLCAwKTsKICAgICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggPSB0aGlzLT5fTV9pbXBsLl9N
X3N0YXJ0ICsgZGlmZmVyZW5jZV90eXBlKF9fbik7CiAgICB9CgogICAgdm9pZAogICAgX01fcmVh
bGxvY2F0ZShzaXplX3R5cGUgX19uKTsKCgogICAgYm9vbAogICAgX01fc2hyaW5rX3RvX2ZpdCgp
OwoKCgoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludGVnZXI+CiAgICAgIHZvaWQKICAgICAg
X01faW5pdGlhbGl6ZV9kaXNwYXRjaChfSW50ZWdlciBfX24sIF9JbnRlZ2VyIF9feCwgX190cnVl
X3R5cGUpCiAgICAgIHsKIF9NX2luaXRpYWxpemUoc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfX24p
KTsKIHN0ZDo6ZmlsbCh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0Ll9NX3AsCiAgICB0aGlzLT5fTV9p
bXBsLl9NX2VuZF9vZl9zdG9yYWdlLCBfX3ggPyB+MCA6IDApOwogICAgICB9CgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiAgICAgIHZvaWQKICAgICAgX01faW5pdGlhbGl6
ZV9kaXNwYXRjaChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3Qs
CiAgICAgICAgX19mYWxzZV90eXBlKQogICAgICB7IF9NX2luaXRpYWxpemVfcmFuZ2UoX19maXJz
dCwgX19sYXN0LAogICAgICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsgfQoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yPgogICAgICB2b2lkCiAgICAgIF9N
X2luaXRpYWxpemVfcmFuZ2UoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3Ig
X19sYXN0LAogICAgIHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnKQogICAgICB7CiBmb3IgKDsgX19m
aXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgcHVzaF9iYWNrKCpfX2ZpcnN0KTsKICAgICAg
fQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICAgIHZvaWQKICAg
ICAgX01faW5pdGlhbGl6ZV9yYW5nZShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJk
SXRlcmF0b3IgX19sYXN0LAogICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcpCiAgICAgIHsK
IGNvbnN0IHNpemVfdHlwZSBfX24gPSBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCk7CiBf
TV9pbml0aWFsaXplKF9fbik7CiBzdGQ6OmNvcHkoX19maXJzdCwgX19sYXN0LCB0aGlzLT5fTV9p
bXBsLl9NX3N0YXJ0KTsKICAgICAgfQoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludGVnZXI+
CiAgICAgIHZvaWQKICAgICAgX01fYXNzaWduX2Rpc3BhdGNoKF9JbnRlZ2VyIF9fbiwgX0ludGVn
ZXIgX192YWwsIF9fdHJ1ZV90eXBlKQogICAgICB7IF9NX2ZpbGxfYXNzaWduKF9fbiwgX192YWwp
OyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgICAgIHZvaWQKICAgICAg
X01fYXNzaWduX2Rpc3BhdGNoKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9y
IF9fbGFzdCwKICAgIF9fZmFsc2VfdHlwZSkKICAgICAgeyBfTV9hc3NpZ25fYXV4KF9fZmlyc3Qs
IF9fbGFzdCwgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsgfQoKICAgIHZvaWQK
ICAgIF9NX2ZpbGxfYXNzaWduKHNpemVfdCBfX24sIGJvb2wgX194KQogICAgewogICAgICBpZiAo
X19uID4gc2l6ZSgpKQogewogICBzdGQ6OmZpbGwodGhpcy0+X01faW1wbC5fTV9zdGFydC5fTV9w
LAogICAgICB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlLCBfX3ggPyB+MCA6IDApOwog
ICBpbnNlcnQoZW5kKCksIF9fbiAtIHNpemUoKSwgX194KTsKIH0KICAgICAgZWxzZQogewogICBf
TV9lcmFzZV9hdF9lbmQoYmVnaW4oKSArIF9fbik7CiAgIHN0ZDo6ZmlsbCh0aGlzLT5fTV9pbXBs
Ll9NX3N0YXJ0Ll9NX3AsCiAgICAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UsIF9f
eCA/IH4wIDogMCk7CiB9CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0
b3I+CiAgICAgIHZvaWQKICAgICAgX01fYXNzaWduX2F1eChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0
LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgIHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnKQog
ICAgICB7CiBpdGVyYXRvciBfX2N1ciA9IGJlZ2luKCk7CiBmb3IgKDsgX19maXJzdCAhPSBfX2xh
c3QgJiYgX19jdXIgIT0gZW5kKCk7ICsrX19jdXIsICsrX19maXJzdCkKICAgKl9fY3VyID0gKl9f
Zmlyc3Q7CiBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiAgIF9NX2VyYXNlX2F0X2VuZChfX2N1cik7
CiBlbHNlCiAgIGluc2VydChlbmQoKSwgX19maXJzdCwgX19sYXN0KTsKICAgICAgfQoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICAgIHZvaWQKICAgICAgX01fYXNz
aWduX2F1eChfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0
LAogICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnKQogICAgICB7CiBjb25zdCBzaXplX3R5
cGUgX19sZW4gPSBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCk7CiBpZiAoX19sZW4gPCBz
aXplKCkpCiAgIF9NX2VyYXNlX2F0X2VuZChzdGQ6OmNvcHkoX19maXJzdCwgX19sYXN0LCBiZWdp
bigpKSk7CiBlbHNlCiAgIHsKICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbWlkID0gX19maXJzdDsK
ICAgICBzdGQ6OmFkdmFuY2UoX19taWQsIHNpemUoKSk7CiAgICAgc3RkOjpjb3B5KF9fZmlyc3Qs
IF9fbWlkLCBiZWdpbigpKTsKICAgICBpbnNlcnQoZW5kKCksIF9fbWlkLCBfX2xhc3QpOwogICB9
CiAgICAgIH0KCgoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludGVnZXI+CiAgICAgIHZvaWQK
ICAgICAgX01faW5zZXJ0X2Rpc3BhdGNoKGl0ZXJhdG9yIF9fcG9zLCBfSW50ZWdlciBfX24sIF9J
bnRlZ2VyIF9feCwKICAgIF9fdHJ1ZV90eXBlKQogICAgICB7IF9NX2ZpbGxfaW5zZXJ0KF9fcG9z
LCBfX24sIF9feCk7IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcj4KICAg
ICAgdm9pZAogICAgICBfTV9pbnNlcnRfZGlzcGF0Y2goaXRlcmF0b3IgX19wb3MsCiAgICBfSW5w
dXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICBfX2ZhbHNlX3R5
cGUpCiAgICAgIHsgX01faW5zZXJ0X3JhbmdlKF9fcG9zLCBfX2ZpcnN0LCBfX2xhc3QsCiAgIHN0
ZDo6X19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7IH0KCiAgICB2b2lkCiAgICBfTV9maWxs
X2luc2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLCBzaXplX3R5cGUgX19uLCBib29sIF9feCk7Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiAgICAgIHZvaWQKICAgICAgX01f
aW5zZXJ0X3JhbmdlKGl0ZXJhdG9yIF9fcG9zLCBfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LAogICAg
ICAgIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgc3RkOjppbnB1dF9pdGVyYXRvcl90YWcpCiAgICAg
IHsKIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICB7CiAgICAgX19wb3Mg
PSBpbnNlcnQoX19wb3MsICpfX2ZpcnN0KTsKICAgICArK19fcG9zOwogICB9CiAgICAgIH0KCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgICB2b2lkCiAgICAgIF9N
X2luc2VydF9yYW5nZShpdGVyYXRvciBfX3Bvc2l0aW9uLCBfRm9yd2FyZEl0ZXJhdG9yIF9fZmly
c3QsCiAgICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsIHN0ZDo6Zm9yd2FyZF9pdGVyYXRv
cl90YWcpOwoKICAgIHZvaWQKICAgIF9NX2luc2VydF9hdXgoaXRlcmF0b3IgX19wb3NpdGlvbiwg
Ym9vbCBfX3gpOwoKICAgIHNpemVfdHlwZQogICAgX01fY2hlY2tfbGVuKHNpemVfdHlwZSBfX24s
IGNvbnN0IGNoYXIqIF9fcykgY29uc3QKICAgIHsKICAgICAgaWYgKG1heF9zaXplKCkgLSBzaXpl
KCkgPCBfX24pCiBfX3Rocm93X2xlbmd0aF9lcnJvcigoX19zKSk7CgogICAgICBjb25zdCBzaXpl
X3R5cGUgX19sZW4gPSBzaXplKCkgKyBzdGQ6Om1heChzaXplKCksIF9fbik7CiAgICAgIHJldHVy
biAoX19sZW4gPCBzaXplKCkgfHwgX19sZW4gPiBtYXhfc2l6ZSgpKSA/IG1heF9zaXplKCkgOiBf
X2xlbjsKICAgIH0KCiAgICB2b2lkCiAgICBfTV9lcmFzZV9hdF9lbmQoaXRlcmF0b3IgX19wb3Mp
CiAgICB7IHRoaXMtPl9NX2ltcGwuX01fZmluaXNoID0gX19wb3M7IH0KCiAgICBpdGVyYXRvcgog
ICAgX01fZXJhc2UoaXRlcmF0b3IgX19wb3MpOwoKICAgIGl0ZXJhdG9yCiAgICBfTV9lcmFzZShp
dGVyYXRvciBfX2ZpcnN0LCBpdGVyYXRvciBfX2xhc3QpOwogIH07CgoKfQoKCgoKCm5hbWVzcGFj
ZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAgICBzdHJ1Y3QgaGFzaDxzdGQ6OnZlY3Rvcjxi
b29sLCBfQWxsb2M+PgogICAgOiBwdWJsaWMgX19oYXNoX2Jhc2U8c2l6ZV90LCBzdGQ6OnZlY3Rv
cjxib29sLCBfQWxsb2M+PgogICAgewogICAgICBzaXplX3QKICAgICAgb3BlcmF0b3IoKShjb25z
dCBzdGQ6OnZlY3Rvcjxib29sLCBfQWxsb2M+JikgY29uc3Qgbm9leGNlcHQ7CiAgICB9OwoKCn0K
IyA2NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy92ZWN0b3IiIDIgMwoKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy92ZWN0b3IudGNjIiAxIDMKIyA1NyAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3Zl
Y3Rvci50Y2MiIDMKI2RlZmluZSBfVkVDVE9SX1RDQyAxCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmli
dXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jPgogICAgdm9pZAogICAgdmVjdG9yPF9UcCwgX0FsbG9j
Pjo6CiAgICByZXNlcnZlKHNpemVfdHlwZSBfX24pCiAgICB7CiAgICAgIGlmIChfX24gPiB0aGlz
LT5tYXhfc2l6ZSgpKQogX190aHJvd19sZW5ndGhfZXJyb3IoKCJ2ZWN0b3I6OnJlc2VydmUiKSk7
CiAgICAgIGlmICh0aGlzLT5jYXBhY2l0eSgpIDwgX19uKQogewogICBjb25zdCBzaXplX3R5cGUg
X19vbGRfc2l6ZSA9IHNpemUoKTsKICAgcG9pbnRlciBfX3RtcCA9IF9NX2FsbG9jYXRlX2FuZF9j
b3B5KF9fbiwKICAgICBzdGQ6Ol9fbWFrZV9tb3ZlX2lmX25vZXhjZXB0X2l0ZXJhdG9yKHRoaXMt
Pl9NX2ltcGwuX01fc3RhcnQpLAogICAgIHN0ZDo6X19tYWtlX21vdmVfaWZfbm9leGNlcHRfaXRl
cmF0b3IodGhpcy0+X01faW1wbC5fTV9maW5pc2gpKTsKICAgc3RkOjpfRGVzdHJveSh0aGlzLT5f
TV9pbXBsLl9NX3N0YXJ0LCB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwKICAgX01fZ2V0X1RwX2Fs
bG9jYXRvcigpKTsKICAgX01fZGVhbGxvY2F0ZSh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LAogICB0
aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlCiAgIC0gdGhpcy0+X01faW1wbC5fTV9zdGFy
dCk7CiAgIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQgPSBfX3RtcDsKICAgdGhpcy0+X01faW1wbC5f
TV9maW5pc2ggPSBfX3RtcCArIF9fb2xkX3NpemU7CiAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29m
X3N0b3JhZ2UgPSB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ICsgX19uOwogfQogICAgfQoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBfQXJncz4KICAgICAgdm9pZAogICAgICB2ZWN0b3I8X1RwLCBfQWxsb2M+OjoKICAgICAg
ZW1wbGFjZV9iYWNrKF9BcmdzJiYuLi4gX19hcmdzKQogICAgICB7CiBpZiAodGhpcy0+X01faW1w
bC5fTV9maW5pc2ggIT0gdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZSkKICAgewogICAg
IF9BbGxvY190cmFpdHM6OmNvbnN0cnVjdCh0aGlzLT5fTV9pbXBsLCB0aGlzLT5fTV9pbXBsLl9N
X2ZpbmlzaCwKICAgICAgICAgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKICAgICAr
K3RoaXMtPl9NX2ltcGwuX01fZmluaXNoOwogICB9CiBlbHNlCiAgIF9NX2VtcGxhY2VfYmFja19h
dXgoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKICAgICAgfQoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0eXBlbmFtZSB2ZWN0b3I8X1RwLCBf
QWxsb2M+OjppdGVyYXRvcgogICAgdmVjdG9yPF9UcCwgX0FsbG9jPjo6CgogICAgaW5zZXJ0KGNv
bnN0X2l0ZXJhdG9yIF9fcG9zaXRpb24sIGNvbnN0IHZhbHVlX3R5cGUmIF9feCkKCgoKICAgIHsK
ICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbiA9IF9fcG9zaXRpb24gLSBiZWdpbigpOwogICAgICBp
ZiAodGhpcy0+X01faW1wbC5fTV9maW5pc2ggIT0gdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3Rv
cmFnZQogICAmJiBfX3Bvc2l0aW9uID09IGVuZCgpKQogewogICBfQWxsb2NfdHJhaXRzOjpjb25z
dHJ1Y3QodGhpcy0+X01faW1wbCwgdGhpcy0+X01faW1wbC5fTV9maW5pc2gsIF9feCk7CiAgICsr
dGhpcy0+X01faW1wbC5fTV9maW5pc2g7CiB9CiAgICAgIGVsc2UKIHsKCiAgIGNvbnN0IGF1dG8g
X19wb3MgPSBiZWdpbigpICsgKF9fcG9zaXRpb24gLSBjYmVnaW4oKSk7CiAgIGlmICh0aGlzLT5f
TV9pbXBsLl9NX2ZpbmlzaCAhPSB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlKQogICAg
IHsKICAgICAgIF9UcCBfX3hfY29weSA9IF9feDsKICAgICAgIF9NX2luc2VydF9hdXgoX19wb3Ms
IHN0ZDo6bW92ZShfX3hfY29weSkpOwogICAgIH0KICAgZWxzZQogICAgIF9NX2luc2VydF9hdXgo
X19wb3MsIF9feCk7CgoKCiB9CiAgICAgIHJldHVybiBpdGVyYXRvcih0aGlzLT5fTV9pbXBsLl9N
X3N0YXJ0ICsgX19uKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBf
QWxsb2M+CiAgICB0eXBlbmFtZSB2ZWN0b3I8X1RwLCBfQWxsb2M+OjppdGVyYXRvcgogICAgdmVj
dG9yPF9UcCwgX0FsbG9jPjo6CiAgICBfTV9lcmFzZShpdGVyYXRvciBfX3Bvc2l0aW9uKQogICAg
ewogICAgICBpZiAoX19wb3NpdGlvbiArIDEgIT0gZW5kKCkpCiBzdGQ6Om1vdmUoX19wb3NpdGlv
biArIDEsIGVuZCgpLCBfX3Bvc2l0aW9uKTsKICAgICAgLS10aGlzLT5fTV9pbXBsLl9NX2Zpbmlz
aDsKICAgICAgX0FsbG9jX3RyYWl0czo6ZGVzdHJveSh0aGlzLT5fTV9pbXBsLCB0aGlzLT5fTV9p
bXBsLl9NX2ZpbmlzaCk7CiAgICAgIHJldHVybiBfX3Bvc2l0aW9uOwogICAgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVuYW1lIHZlY3RvcjxfVHAs
IF9BbGxvYz46Oml0ZXJhdG9yCiAgICB2ZWN0b3I8X1RwLCBfQWxsb2M+OjoKICAgIF9NX2VyYXNl
KGl0ZXJhdG9yIF9fZmlyc3QsIGl0ZXJhdG9yIF9fbGFzdCkKICAgIHsKICAgICAgaWYgKF9fZmly
c3QgIT0gX19sYXN0KQogewogICBpZiAoX19sYXN0ICE9IGVuZCgpKQogICAgIHN0ZDo6bW92ZShf
X2xhc3QsIGVuZCgpLCBfX2ZpcnN0KTsKICAgX01fZXJhc2VfYXRfZW5kKF9fZmlyc3QuYmFzZSgp
ICsgKGVuZCgpIC0gX19sYXN0KSk7CiB9CiAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHZlY3RvcjxfVHAsIF9B
bGxvYz4mCiAgICB2ZWN0b3I8X1RwLCBfQWxsb2M+OjoKICAgIG9wZXJhdG9yPShjb25zdCB2ZWN0
b3I8X1RwLCBfQWxsb2M+JiBfX3gpCiAgICB7CiAgICAgIGlmICgmX194ICE9IHRoaXMpCiB7Cgog
ICBpZiAoX0FsbG9jX3RyYWl0czo6X1NfcHJvcGFnYXRlX29uX2NvcHlfYXNzaWduKCkpCiAgICAg
ewogICAgICAgaWYgKCFfQWxsb2NfdHJhaXRzOjpfU19hbHdheXNfZXF1YWwoKQogICAgICAgICAg
ICYmIF9NX2dldF9UcF9hbGxvY2F0b3IoKSAhPSBfX3guX01fZ2V0X1RwX2FsbG9jYXRvcigpKQog
ICAgICAgICB7CgogICAgdGhpcy0+Y2xlYXIoKTsKICAgIF9NX2RlYWxsb2NhdGUodGhpcy0+X01f
aW1wbC5fTV9zdGFydCwKICAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UKICAgIC0g
dGhpcy0+X01faW1wbC5fTV9zdGFydCk7CiAgICB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ID0gbnVs
bHB0cjsKICAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoID0gbnVsbHB0cjsKICAgIHRoaXMtPl9N
X2ltcGwuX01fZW5kX29mX3N0b3JhZ2UgPSBudWxscHRyOwogIH0KICAgICAgIHN0ZDo6X19hbGxv
Y19vbl9jb3B5KF9NX2dldF9UcF9hbGxvY2F0b3IoKSwKICAgICAgIF9feC5fTV9nZXRfVHBfYWxs
b2NhdG9yKCkpOwogICAgIH0KCiAgIGNvbnN0IHNpemVfdHlwZSBfX3hsZW4gPSBfX3guc2l6ZSgp
OwogICBpZiAoX194bGVuID4gY2FwYWNpdHkoKSkKICAgICB7CiAgICAgICBwb2ludGVyIF9fdG1w
ID0gX01fYWxsb2NhdGVfYW5kX2NvcHkoX194bGVuLCBfX3guYmVnaW4oKSwKICAgICAgICAgX194
LmVuZCgpKTsKICAgICAgIHN0ZDo6X0Rlc3Ryb3kodGhpcy0+X01faW1wbC5fTV9zdGFydCwgdGhp
cy0+X01faW1wbC5fTV9maW5pc2gsCiAgICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAg
ICAgX01fZGVhbGxvY2F0ZSh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LAogICAgICAgdGhpcy0+X01f
aW1wbC5fTV9lbmRfb2Zfc3RvcmFnZQogICAgICAgLSB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0KTsK
ICAgICAgIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQgPSBfX3RtcDsKICAgICAgIHRoaXMtPl9NX2lt
cGwuX01fZW5kX29mX3N0b3JhZ2UgPSB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ICsgX194bGVuOwog
ICAgIH0KICAgZWxzZSBpZiAoc2l6ZSgpID49IF9feGxlbikKICAgICB7CiAgICAgICBzdGQ6Ol9E
ZXN0cm95KHN0ZDo6Y29weShfX3guYmVnaW4oKSwgX194LmVuZCgpLCBiZWdpbigpKSwKICAgICAg
IGVuZCgpLCBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgIH0KICAgZWxzZQogICAgIHsKICAg
ICAgIHN0ZDo6Y29weShfX3guX01faW1wbC5fTV9zdGFydCwgX194Ll9NX2ltcGwuX01fc3RhcnQg
KyBzaXplKCksCiAgIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQpOwogICAgICAgc3RkOjpfX3VuaW5p
dGlhbGl6ZWRfY29weV9hKF9feC5fTV9pbXBsLl9NX3N0YXJ0ICsgc2l6ZSgpLAogICAgICAgX194
Ll9NX2ltcGwuX01fZmluaXNoLAogICAgICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2gsCiAgICAg
ICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgIH0KICAgdGhpcy0+X01faW1wbC5fTV9maW5p
c2ggPSB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ICsgX194bGVuOwogfQogICAgICByZXR1cm4gKnRo
aXM7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jPgogICAg
dm9pZAogICAgdmVjdG9yPF9UcCwgX0FsbG9jPjo6CiAgICBfTV9maWxsX2Fzc2lnbihzaXplX3Qg
X19uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3ZhbCkKICAgIHsKICAgICAgaWYgKF9fbiA+IGNhcGFj
aXR5KCkpCiB7CiAgIHZlY3RvciBfX3RtcChfX24sIF9fdmFsLCBfTV9nZXRfVHBfYWxsb2NhdG9y
KCkpOwogICBfX3RtcC5fTV9pbXBsLl9NX3N3YXBfZGF0YSh0aGlzLT5fTV9pbXBsKTsKIH0KICAg
ICAgZWxzZSBpZiAoX19uID4gc2l6ZSgpKQogewogICBzdGQ6OmZpbGwoYmVnaW4oKSwgZW5kKCks
IF9fdmFsKTsKICAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uX2EodGhpcy0+X01faW1wbC5f
TV9maW5pc2gsCiAgICAgX19uIC0gc2l6ZSgpLCBfX3ZhbCwKICAgICBfTV9nZXRfVHBfYWxsb2Nh
dG9yKCkpOwogICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCArPSBfX24gLSBzaXplKCk7CiB9CiAg
ICAgIGVsc2UKICAgICAgICBfTV9lcmFzZV9hdF9lbmQoc3RkOjpmaWxsX24odGhpcy0+X01faW1w
bC5fTV9zdGFydCwgX19uLCBfX3ZhbCkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAs
IHR5cGVuYW1lIF9BbGxvYz4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yPgog
ICAgICB2b2lkCiAgICAgIHZlY3RvcjxfVHAsIF9BbGxvYz46OgogICAgICBfTV9hc3NpZ25fYXV4
KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgc3Rk
OjppbnB1dF9pdGVyYXRvcl90YWcpCiAgICAgIHsKIHBvaW50ZXIgX19jdXIodGhpcy0+X01faW1w
bC5fTV9zdGFydCk7CiBmb3IgKDsgX19maXJzdCAhPSBfX2xhc3QgJiYgX19jdXIgIT0gdGhpcy0+
X01faW1wbC5fTV9maW5pc2g7CiAgICAgICsrX19jdXIsICsrX19maXJzdCkKICAgKl9fY3VyID0g
Kl9fZmlyc3Q7CiBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiAgIF9NX2VyYXNlX2F0X2VuZChfX2N1
cik7CiBlbHNlCiAgIGluc2VydChlbmQoKSwgX19maXJzdCwgX19sYXN0KTsKICAgICAgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICAgIHZvaWQKICAgICAgdmVjdG9yPF9UcCwgX0FsbG9j
Pjo6CiAgICAgIF9NX2Fzc2lnbl9hdXgoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2Fy
ZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZykKICAgICAg
ewogY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3Qp
OwoKIGlmIChfX2xlbiA+IGNhcGFjaXR5KCkpCiAgIHsKICAgICBwb2ludGVyIF9fdG1wKF9NX2Fs
bG9jYXRlX2FuZF9jb3B5KF9fbGVuLCBfX2ZpcnN0LCBfX2xhc3QpKTsKICAgICBzdGQ6Ol9EZXN0
cm95KHRoaXMtPl9NX2ltcGwuX01fc3RhcnQsIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAg
IF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgICAgX01fZGVhbGxvY2F0ZSh0aGlzLT5fTV9pbXBs
Ll9NX3N0YXJ0LAogICAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UKICAgICAtIHRo
aXMtPl9NX2ltcGwuX01fc3RhcnQpOwogICAgIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQgPSBfX3Rt
cDsKICAgICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCA9IHRoaXMtPl9NX2ltcGwuX01fc3RhcnQg
KyBfX2xlbjsKICAgICB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlID0gdGhpcy0+X01f
aW1wbC5fTV9maW5pc2g7CiAgIH0KIGVsc2UgaWYgKHNpemUoKSA+PSBfX2xlbikKICAgX01fZXJh
c2VfYXRfZW5kKHN0ZDo6Y29weShfX2ZpcnN0LCBfX2xhc3QsIHRoaXMtPl9NX2ltcGwuX01fc3Rh
cnQpKTsKIGVsc2UKICAgewogICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19taWQgPSBfX2ZpcnN0Owog
ICAgIHN0ZDo6YWR2YW5jZShfX21pZCwgc2l6ZSgpKTsKICAgICBzdGQ6OmNvcHkoX19maXJzdCwg
X19taWQsIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQpOwogICAgIHRoaXMtPl9NX2ltcGwuX01fZmlu
aXNoID0KICAgICAgIHN0ZDo6X191bmluaXRpYWxpemVkX2NvcHlfYShfX21pZCwgX19sYXN0LAog
ICAgICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2gsCiAgICAgICBfTV9nZXRfVHBfYWxsb2NhdG9y
KCkpOwogICB9CiAgICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0Fs
bG9jPgogICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+CiAgICAgIHR5cGVuYW1lIHZlY3Rv
cjxfVHAsIF9BbGxvYz46Oml0ZXJhdG9yCiAgICAgIHZlY3RvcjxfVHAsIF9BbGxvYz46OgogICAg
ICBlbXBsYWNlKGNvbnN0X2l0ZXJhdG9yIF9fcG9zaXRpb24sIF9BcmdzJiYuLi4gX19hcmdzKQog
ICAgICB7CiBjb25zdCBzaXplX3R5cGUgX19uID0gX19wb3NpdGlvbiAtIGJlZ2luKCk7CiBpZiAo
dGhpcy0+X01faW1wbC5fTV9maW5pc2ggIT0gdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFn
ZQogICAgICYmIF9fcG9zaXRpb24gPT0gZW5kKCkpCiAgIHsKICAgICBfQWxsb2NfdHJhaXRzOjpj
b25zdHJ1Y3QodGhpcy0+X01faW1wbCwgdGhpcy0+X01faW1wbC5fTV9maW5pc2gsCiAgICAgICAg
IHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7CiAgICAgKyt0aGlzLT5fTV9pbXBsLl9N
X2ZpbmlzaDsKICAgfQogZWxzZQogICBfTV9pbnNlcnRfYXV4KGJlZ2luKCkgKyAoX19wb3NpdGlv
biAtIGNiZWdpbigpKSwKICAgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKIHJldHVy
biBpdGVyYXRvcih0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ICsgX19uKTsKICAgICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIF9BcmdzPgogICAgICB2b2lkCiAgICAgIHZlY3RvcjxfVHAsIF9BbGxvYz46OgogICAgICBf
TV9pbnNlcnRfYXV4KGl0ZXJhdG9yIF9fcG9zaXRpb24sIF9BcmdzJiYuLi4gX19hcmdzKQoKCgoK
CgogICAgewogICAgICBpZiAodGhpcy0+X01faW1wbC5fTV9maW5pc2ggIT0gdGhpcy0+X01faW1w
bC5fTV9lbmRfb2Zfc3RvcmFnZSkKIHsKICAgX0FsbG9jX3RyYWl0czo6Y29uc3RydWN0KHRoaXMt
Pl9NX2ltcGwsIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAgICAgICAgICAgIHN0ZDo6bW92
ZSgqKHRoaXMtPl9NX2ltcGwuX01fZmluaXNoIC0gMSkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApOwogICArK3RoaXMtPl9NX2ltcGwuX01fZmluaXNoOwoKCgogICBzdGQ6Om1vdmVfYmFj
a3dhcmQoX19wb3NpdGlvbi5iYXNlKCksIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoIC0gMiwgdGhp
cy0+X01faW1wbC5fTV9maW5pc2ggLSAxKQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDsKCgoKICAgKl9fcG9zaXRpb24gPSBfVHAoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3Mp
Li4uKTsKCiB9CiAgICAgIGVsc2UKIHsKICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0KICAgICBf
TV9jaGVja19sZW4oc2l6ZV90eXBlKDEpLCAidmVjdG9yOjpfTV9pbnNlcnRfYXV4Iik7CiAgIGNv
bnN0IHNpemVfdHlwZSBfX2VsZW1zX2JlZm9yZSA9IF9fcG9zaXRpb24gLSBiZWdpbigpOwogICBw
b2ludGVyIF9fbmV3X3N0YXJ0KHRoaXMtPl9NX2FsbG9jYXRlKF9fbGVuKSk7CiAgIHBvaW50ZXIg
X19uZXdfZmluaXNoKF9fbmV3X3N0YXJ0KTsKICAgaWYgKHRydWUpCiAgICAgewoKCgoKICAgICAg
IF9BbGxvY190cmFpdHM6OmNvbnN0cnVjdCh0aGlzLT5fTV9pbXBsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgX19uZXdfc3RhcnQgKyBfX2VsZW1zX2JlZm9yZSwKCiAgICAgICAgICAgc3RkOjpm
b3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKCgoKICAgICAgIF9fbmV3X2ZpbmlzaCA9IDA7Cgog
ICAgICAgX19uZXdfZmluaXNoCiAgPSBzdGQ6Ol9fdW5pbml0aWFsaXplZF9tb3ZlX2lmX25vZXhj
ZXB0X2EKICAodGhpcy0+X01faW1wbC5fTV9zdGFydCwgX19wb3NpdGlvbi5iYXNlKCksCiAgIF9f
bmV3X3N0YXJ0LCBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwoKICAgICAgICsrX19uZXdfZmluaXNo
OwoKICAgICAgIF9fbmV3X2ZpbmlzaAogID0gc3RkOjpfX3VuaW5pdGlhbGl6ZWRfbW92ZV9pZl9u
b2V4Y2VwdF9hCiAgKF9fcG9zaXRpb24uYmFzZSgpLCB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwK
ICAgX19uZXdfZmluaXNoLCBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgIH0KICAgICAgICAg
IGlmIChmYWxzZSkKICAgICB7CiAgICAgICBpZiAoIV9fbmV3X2ZpbmlzaCkKICBfQWxsb2NfdHJh
aXRzOjpkZXN0cm95KHRoaXMtPl9NX2ltcGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX25l
d19zdGFydCArIF9fZWxlbXNfYmVmb3JlKTsKICAgICAgIGVsc2UKICBzdGQ6Ol9EZXN0cm95KF9f
bmV3X3N0YXJ0LCBfX25ld19maW5pc2gsIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgICAgICBf
TV9kZWFsbG9jYXRlKF9fbmV3X3N0YXJ0LCBfX2xlbik7CiAgICAgICA7CiAgICAgfQogICBzdGQ6
Ol9EZXN0cm95KHRoaXMtPl9NX2ltcGwuX01fc3RhcnQsIHRoaXMtPl9NX2ltcGwuX01fZmluaXNo
LAogICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICBfTV9kZWFsbG9jYXRlKHRoaXMtPl9NX2lt
cGwuX01fc3RhcnQsCiAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UKICAgLSB0aGlz
LT5fTV9pbXBsLl9NX3N0YXJ0KTsKICAgdGhpcy0+X01faW1wbC5fTV9zdGFydCA9IF9fbmV3X3N0
YXJ0OwogICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCA9IF9fbmV3X2ZpbmlzaDsKICAgdGhpcy0+
X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZSA9IF9fbmV3X3N0YXJ0ICsgX19sZW47CiB9CiAgICB9
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIF9BcmdzPgogICAgICB2b2lkCiAgICAgIHZlY3RvcjxfVHAsIF9BbGxvYz46
OgogICAgICBfTV9lbXBsYWNlX2JhY2tfYXV4KF9BcmdzJiYuLi4gX19hcmdzKQogICAgICB7CiBj
b25zdCBzaXplX3R5cGUgX19sZW4gPQogICBfTV9jaGVja19sZW4oc2l6ZV90eXBlKDEpLCAidmVj
dG9yOjpfTV9lbXBsYWNlX2JhY2tfYXV4Iik7CiBwb2ludGVyIF9fbmV3X3N0YXJ0KHRoaXMtPl9N
X2FsbG9jYXRlKF9fbGVuKSk7CiBwb2ludGVyIF9fbmV3X2ZpbmlzaChfX25ld19zdGFydCk7CiBp
ZiAodHJ1ZSkKICAgewogICAgIF9BbGxvY190cmFpdHM6OmNvbnN0cnVjdCh0aGlzLT5fTV9pbXBs
LCBfX25ld19zdGFydCArIHNpemUoKSwKICAgICAgICAgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2Fy
Z3MpLi4uKTsKICAgICBfX25ld19maW5pc2ggPSAwOwoKICAgICBfX25ld19maW5pc2gKICAgICAg
ID0gc3RkOjpfX3VuaW5pdGlhbGl6ZWRfbW92ZV9pZl9ub2V4Y2VwdF9hCiAgICAgICAodGhpcy0+
X01faW1wbC5fTV9zdGFydCwgdGhpcy0+X01faW1wbC5fTV9maW5pc2gsCiAgICAgICAgX19uZXdf
c3RhcnQsIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CgogICAgICsrX19uZXdfZmluaXNoOwogICB9
CiBpZiAoZmFsc2UpCiAgIHsKICAgICBpZiAoIV9fbmV3X2ZpbmlzaCkKICAgICAgIF9BbGxvY190
cmFpdHM6OmRlc3Ryb3kodGhpcy0+X01faW1wbCwgX19uZXdfc3RhcnQgKyBzaXplKCkpOwogICAg
IGVsc2UKICAgICAgIHN0ZDo6X0Rlc3Ryb3koX19uZXdfc3RhcnQsIF9fbmV3X2ZpbmlzaCwgX01f
Z2V0X1RwX2FsbG9jYXRvcigpKTsKICAgICBfTV9kZWFsbG9jYXRlKF9fbmV3X3N0YXJ0LCBfX2xl
bik7CiAgICAgOwogICB9CiBzdGQ6Ol9EZXN0cm95KHRoaXMtPl9NX2ltcGwuX01fc3RhcnQsIHRo
aXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAgICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiBf
TV9kZWFsbG9jYXRlKHRoaXMtPl9NX2ltcGwuX01fc3RhcnQsCiAgICAgICAgdGhpcy0+X01faW1w
bC5fTV9lbmRfb2Zfc3RvcmFnZQogICAgICAgIC0gdGhpcy0+X01faW1wbC5fTV9zdGFydCk7CiB0
aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ID0gX19uZXdfc3RhcnQ7CiB0aGlzLT5fTV9pbXBsLl9NX2Zp
bmlzaCA9IF9fbmV3X2ZpbmlzaDsKIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UgPSBf
X25ld19zdGFydCArIF9fbGVuOwogICAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5
cGVuYW1lIF9BbGxvYz4KICAgIHZvaWQKICAgIHZlY3RvcjxfVHAsIF9BbGxvYz46OgogICAgX01f
ZmlsbF9pbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbiwgc2l6ZV90eXBlIF9fbiwgY29uc3QgdmFs
dWVfdHlwZSYgX194KQogICAgewogICAgICBpZiAoX19uICE9IDApCiB7CiAgIGlmIChzaXplX3R5
cGUodGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZQogICAtIHRoaXMtPl9NX2ltcGwuX01f
ZmluaXNoKSA+PSBfX24pCiAgICAgewogICAgICAgdmFsdWVfdHlwZSBfX3hfY29weSA9IF9feDsK
ICAgICAgIGNvbnN0IHNpemVfdHlwZSBfX2VsZW1zX2FmdGVyID0gZW5kKCkgLSBfX3Bvc2l0aW9u
OwogICAgICAgcG9pbnRlciBfX29sZF9maW5pc2godGhpcy0+X01faW1wbC5fTV9maW5pc2gpOwog
ICAgICAgaWYgKF9fZWxlbXNfYWZ0ZXIgPiBfX24pCiAgewogICAgc3RkOjpfX3VuaW5pdGlhbGl6
ZWRfbW92ZV9hKHRoaXMtPl9NX2ltcGwuX01fZmluaXNoIC0gX19uLAogICAgICAgICAgIHRoaXMt
Pl9NX2ltcGwuX01fZmluaXNoLAogICAgICAgICAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLAog
ICAgICAgICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgICB0aGlzLT5fTV9pbXBsLl9NX2Zp
bmlzaCArPSBfX247CiAgICBzdGQ6Om1vdmVfYmFja3dhcmQoX19wb3NpdGlvbi5iYXNlKCksIF9f
b2xkX2ZpbmlzaCAtIF9fbiwgX19vbGRfZmluaXNoKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOwogICAgc3RkOjpmaWxsKF9fcG9zaXRpb24uYmFzZSgpLCBfX3Bvc2l0
aW9uLmJhc2UoKSArIF9fbiwKICAgICAgIF9feF9jb3B5KTsKICB9CiAgICAgICBlbHNlCiAgewog
ICAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uX2EodGhpcy0+X01faW1wbC5fTV9maW5pc2gs
CiAgICAgIF9fbiAtIF9fZWxlbXNfYWZ0ZXIsCiAgICAgIF9feF9jb3B5LAogICAgICBfTV9nZXRf
VHBfYWxsb2NhdG9yKCkpOwogICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggKz0gX19uIC0gX19l
bGVtc19hZnRlcjsKICAgIHN0ZDo6X191bmluaXRpYWxpemVkX21vdmVfYShfX3Bvc2l0aW9uLmJh
c2UoKSwgX19vbGRfZmluaXNoLAogICAgICAgICAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLAog
ICAgICAgICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgICB0aGlzLT5fTV9pbXBsLl9NX2Zp
bmlzaCArPSBfX2VsZW1zX2FmdGVyOwogICAgc3RkOjpmaWxsKF9fcG9zaXRpb24uYmFzZSgpLCBf
X29sZF9maW5pc2gsIF9feF9jb3B5KTsKICB9CiAgICAgfQogICBlbHNlCiAgICAgewogICAgICAg
Y29uc3Qgc2l6ZV90eXBlIF9fbGVuID0KICBfTV9jaGVja19sZW4oX19uLCAidmVjdG9yOjpfTV9m
aWxsX2luc2VydCIpOwogICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fZWxlbXNfYmVmb3JlID0gX19w
b3NpdGlvbiAtIGJlZ2luKCk7CiAgICAgICBwb2ludGVyIF9fbmV3X3N0YXJ0KHRoaXMtPl9NX2Fs
bG9jYXRlKF9fbGVuKSk7CiAgICAgICBwb2ludGVyIF9fbmV3X2ZpbmlzaChfX25ld19zdGFydCk7
CiAgICAgICBpZiAodHJ1ZSkKICB7CgogICAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uX2Eo
X19uZXdfc3RhcnQgKyBfX2VsZW1zX2JlZm9yZSwKICAgICAgX19uLCBfX3gsCiAgICAgIF9NX2dl
dF9UcF9hbGxvY2F0b3IoKSk7CiAgICBfX25ld19maW5pc2ggPSAwOwoKICAgIF9fbmV3X2Zpbmlz
aAogICAgICA9IHN0ZDo6X191bmluaXRpYWxpemVkX21vdmVfaWZfbm9leGNlcHRfYQogICAgICAo
dGhpcy0+X01faW1wbC5fTV9zdGFydCwgX19wb3NpdGlvbi5iYXNlKCksCiAgICAgICBfX25ld19z
dGFydCwgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKCiAgICBfX25ld19maW5pc2ggKz0gX19uOwoK
ICAgIF9fbmV3X2ZpbmlzaAogICAgICA9IHN0ZDo6X191bmluaXRpYWxpemVkX21vdmVfaWZfbm9l
eGNlcHRfYQogICAgICAoX19wb3NpdGlvbi5iYXNlKCksIHRoaXMtPl9NX2ltcGwuX01fZmluaXNo
LAogICAgICAgX19uZXdfZmluaXNoLCBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogIH0KICAgICAg
IGlmIChmYWxzZSkKICB7CiAgICBpZiAoIV9fbmV3X2ZpbmlzaCkKICAgICAgc3RkOjpfRGVzdHJv
eShfX25ld19zdGFydCArIF9fZWxlbXNfYmVmb3JlLAogICAgICBfX25ld19zdGFydCArIF9fZWxl
bXNfYmVmb3JlICsgX19uLAogICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgZWxzZQog
ICAgICBzdGQ6Ol9EZXN0cm95KF9fbmV3X3N0YXJ0LCBfX25ld19maW5pc2gsCiAgICAgIF9NX2dl
dF9UcF9hbGxvY2F0b3IoKSk7CiAgICBfTV9kZWFsbG9jYXRlKF9fbmV3X3N0YXJ0LCBfX2xlbik7
CiAgICA7CiAgfQogICAgICAgc3RkOjpfRGVzdHJveSh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LCB0
aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwKICAgICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAg
ICAgICBfTV9kZWFsbG9jYXRlKHRoaXMtPl9NX2ltcGwuX01fc3RhcnQsCiAgICAgICB0aGlzLT5f
TV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlCiAgICAgICAtIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQp
OwogICAgICAgdGhpcy0+X01faW1wbC5fTV9zdGFydCA9IF9fbmV3X3N0YXJ0OwogICAgICAgdGhp
cy0+X01faW1wbC5fTV9maW5pc2ggPSBfX25ld19maW5pc2g7CiAgICAgICB0aGlzLT5fTV9pbXBs
Ll9NX2VuZF9vZl9zdG9yYWdlID0gX19uZXdfc3RhcnQgKyBfX2xlbjsKICAgICB9CiB9CiAgICB9
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHZvaWQKICAg
IHZlY3RvcjxfVHAsIF9BbGxvYz46OgogICAgX01fZGVmYXVsdF9hcHBlbmQoc2l6ZV90eXBlIF9f
bikKICAgIHsKICAgICAgaWYgKF9fbiAhPSAwKQogewogICBpZiAoc2l6ZV90eXBlKHRoaXMtPl9N
X2ltcGwuX01fZW5kX29mX3N0b3JhZ2UKICAgLSB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCkgPj0g
X19uKQogICAgIHsKICAgICAgIHN0ZDo6X191bmluaXRpYWxpemVkX2RlZmF1bHRfbl9hKHRoaXMt
Pl9NX2ltcGwuX01fZmluaXNoLAogICAgICAgICAgICBfX24sIF9NX2dldF9UcF9hbGxvY2F0b3Io
KSk7CiAgICAgICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCArPSBfX247CiAgICAgfQogICBlbHNl
CiAgICAgewogICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0KICBfTV9jaGVja19sZW4oX19u
LCAidmVjdG9yOjpfTV9kZWZhdWx0X2FwcGVuZCIpOwogICAgICAgY29uc3Qgc2l6ZV90eXBlIF9f
b2xkX3NpemUgPSB0aGlzLT5zaXplKCk7CiAgICAgICBwb2ludGVyIF9fbmV3X3N0YXJ0KHRoaXMt
Pl9NX2FsbG9jYXRlKF9fbGVuKSk7CiAgICAgICBwb2ludGVyIF9fbmV3X2ZpbmlzaChfX25ld19z
dGFydCk7CiAgICAgICBpZiAodHJ1ZSkKICB7CiAgICBfX25ld19maW5pc2gKICAgICAgPSBzdGQ6
Ol9fdW5pbml0aWFsaXplZF9tb3ZlX2lmX25vZXhjZXB0X2EKICAgICAgKHRoaXMtPl9NX2ltcGwu
X01fc3RhcnQsIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAgICAgX19uZXdfc3RhcnQsIF9N
X2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgICBzdGQ6Ol9fdW5pbml0aWFsaXplZF9kZWZhdWx0X25f
YShfX25ld19maW5pc2gsIF9fbiwKICAgICAgICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAg
IF9fbmV3X2ZpbmlzaCArPSBfX247CiAgfQogICAgICAgaWYgKGZhbHNlKQogIHsKICAgIHN0ZDo6
X0Rlc3Ryb3koX19uZXdfc3RhcnQsIF9fbmV3X2ZpbmlzaCwKICAgIF9NX2dldF9UcF9hbGxvY2F0
b3IoKSk7CiAgICBfTV9kZWFsbG9jYXRlKF9fbmV3X3N0YXJ0LCBfX2xlbik7CiAgICA7CiAgfQog
ICAgICAgc3RkOjpfRGVzdHJveSh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LCB0aGlzLT5fTV9pbXBs
Ll9NX2ZpbmlzaCwKICAgICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgICAgICBfTV9kZWFs
bG9jYXRlKHRoaXMtPl9NX2ltcGwuX01fc3RhcnQsCiAgICAgICB0aGlzLT5fTV9pbXBsLl9NX2Vu
ZF9vZl9zdG9yYWdlCiAgICAgICAtIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQpOwogICAgICAgdGhp
cy0+X01faW1wbC5fTV9zdGFydCA9IF9fbmV3X3N0YXJ0OwogICAgICAgdGhpcy0+X01faW1wbC5f
TV9maW5pc2ggPSBfX25ld19maW5pc2g7CiAgICAgICB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9z
dG9yYWdlID0gX19uZXdfc3RhcnQgKyBfX2xlbjsKICAgICB9CiB9CiAgICB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jPgogICAgYm9vbAogICAgdmVjdG9yPF9UcCwg
X0FsbG9jPjo6CiAgICBfTV9zaHJpbmtfdG9fZml0KCkKICAgIHsKICAgICAgaWYgKGNhcGFjaXR5
KCkgPT0gc2l6ZSgpKQogcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gc3RkOjpfX3Nocmlua190
b19maXRfYXV4PHZlY3Rvcj46Ol9TX2RvX2l0KCp0aGlzKTsKICAgIH0KCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0
SXRlcmF0b3I+CiAgICAgIHZvaWQKICAgICAgdmVjdG9yPF9UcCwgX0FsbG9jPjo6CiAgICAgIF9N
X3JhbmdlX2luc2VydChpdGVyYXRvciBfX3BvcywgX0lucHV0SXRlcmF0b3IgX19maXJzdCwKICAg
ICAgICBfSW5wdXRJdGVyYXRvciBfX2xhc3QsIHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnKQogICAg
ICB7CiBmb3IgKDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgewogICAgIF9fcG9z
ID0gaW5zZXJ0KF9fcG9zLCAqX19maXJzdCk7CiAgICAgKytfX3BvczsKICAgfQogICAgICB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jPgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0ZvcndhcmRJdGVyYXRvcj4KICAgICAgdm9pZAogICAgICB2ZWN0b3I8X1RwLCBfQWxs
b2M+OjoKICAgICAgX01fcmFuZ2VfaW5zZXJ0KGl0ZXJhdG9yIF9fcG9zaXRpb24sIF9Gb3J3YXJk
SXRlcmF0b3IgX19maXJzdCwKICAgICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwgc3RkOjpm
b3J3YXJkX2l0ZXJhdG9yX3RhZykKICAgICAgewogaWYgKF9fZmlyc3QgIT0gX19sYXN0KQogICB7
CiAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbiA9IHN0ZDo6ZGlzdGFuY2UoX19maXJzdCwgX19sYXN0
KTsKICAgICBpZiAoc2l6ZV90eXBlKHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UKICAg
ICAtIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoKSA+PSBfX24pCiAgICAgICB7CiAgY29uc3Qgc2l6
ZV90eXBlIF9fZWxlbXNfYWZ0ZXIgPSBlbmQoKSAtIF9fcG9zaXRpb247CiAgcG9pbnRlciBfX29s
ZF9maW5pc2godGhpcy0+X01faW1wbC5fTV9maW5pc2gpOwogIGlmIChfX2VsZW1zX2FmdGVyID4g
X19uKQogICAgewogICAgICBzdGQ6Ol9fdW5pbml0aWFsaXplZF9tb3ZlX2EodGhpcy0+X01faW1w
bC5fTV9maW5pc2ggLSBfX24sCiAgICAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAgICB0
aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwKICAgICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAg
ICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggKz0gX19uOwogICAgICBzdGQ6Om1vdmVfYmFja3dh
cmQoX19wb3NpdGlvbi5iYXNlKCksIF9fb2xkX2ZpbmlzaCAtIF9fbiwgX19vbGRfZmluaXNoKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgIHN0ZDo6Y29w
eShfX2ZpcnN0LCBfX2xhc3QsIF9fcG9zaXRpb24pOwogICAgfQogIGVsc2UKICAgIHsKICAgICAg
X0ZvcndhcmRJdGVyYXRvciBfX21pZCA9IF9fZmlyc3Q7CiAgICAgIHN0ZDo6YWR2YW5jZShfX21p
ZCwgX19lbGVtc19hZnRlcik7CiAgICAgIHN0ZDo6X191bmluaXRpYWxpemVkX2NvcHlfYShfX21p
ZCwgX19sYXN0LAogICAgICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwKICAgICAgX01fZ2V0X1Rw
X2FsbG9jYXRvcigpKTsKICAgICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggKz0gX19uIC0gX19l
bGVtc19hZnRlcjsKICAgICAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfbW92ZV9hKF9fcG9zaXRpb24u
YmFzZSgpLAogICAgICBfX29sZF9maW5pc2gsCiAgICAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNo
LAogICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgICB0aGlzLT5fTV9pbXBsLl9NX2Zp
bmlzaCArPSBfX2VsZW1zX2FmdGVyOwogICAgICBzdGQ6OmNvcHkoX19maXJzdCwgX19taWQsIF9f
cG9zaXRpb24pOwogICAgfQogICAgICAgfQogICAgIGVsc2UKICAgICAgIHsKICBjb25zdCBzaXpl
X3R5cGUgX19sZW4gPQogICAgX01fY2hlY2tfbGVuKF9fbiwgInZlY3Rvcjo6X01fcmFuZ2VfaW5z
ZXJ0Iik7CiAgcG9pbnRlciBfX25ld19zdGFydCh0aGlzLT5fTV9hbGxvY2F0ZShfX2xlbikpOwog
IHBvaW50ZXIgX19uZXdfZmluaXNoKF9fbmV3X3N0YXJ0KTsKICBpZiAodHJ1ZSkKICAgIHsKICAg
ICAgX19uZXdfZmluaXNoCiAgICAgICAgPSBzdGQ6Ol9fdW5pbml0aWFsaXplZF9tb3ZlX2lmX25v
ZXhjZXB0X2EKICAgICAgICAodGhpcy0+X01faW1wbC5fTV9zdGFydCwgX19wb3NpdGlvbi5iYXNl
KCksCiAgICAgICAgIF9fbmV3X3N0YXJ0LCBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgICBf
X25ld19maW5pc2gKICAgICAgICA9IHN0ZDo6X191bmluaXRpYWxpemVkX2NvcHlfYShfX2ZpcnN0
LCBfX2xhc3QsCiAgICAgICAgICBfX25ld19maW5pc2gsCiAgICAgICAgICBfTV9nZXRfVHBfYWxs
b2NhdG9yKCkpOwogICAgICBfX25ld19maW5pc2gKICAgICAgICA9IHN0ZDo6X191bmluaXRpYWxp
emVkX21vdmVfaWZfbm9leGNlcHRfYQogICAgICAgIChfX3Bvc2l0aW9uLmJhc2UoKSwgdGhpcy0+
X01faW1wbC5fTV9maW5pc2gsCiAgICAgICAgIF9fbmV3X2ZpbmlzaCwgX01fZ2V0X1RwX2FsbG9j
YXRvcigpKTsKICAgIH0KICBpZiAoZmFsc2UpCiAgICB7CiAgICAgIHN0ZDo6X0Rlc3Ryb3koX19u
ZXdfc3RhcnQsIF9fbmV3X2ZpbmlzaCwKICAgICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAg
ICAgX01fZGVhbGxvY2F0ZShfX25ld19zdGFydCwgX19sZW4pOwogICAgICA7CiAgICB9CiAgc3Rk
OjpfRGVzdHJveSh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LCB0aGlzLT5fTV9pbXBsLl9NX2Zpbmlz
aCwKICAgICAgICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICBfTV9kZWFsbG9jYXRlKHRoaXMt
Pl9NX2ltcGwuX01fc3RhcnQsCiAgICAgICAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3Jh
Z2UKICAgICAgICAgLSB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0KTsKICB0aGlzLT5fTV9pbXBsLl9N
X3N0YXJ0ID0gX19uZXdfc3RhcnQ7CiAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggPSBfX25ld19m
aW5pc2g7CiAgdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZSA9IF9fbmV3X3N0YXJ0ICsg
X19sZW47CiAgICAgICB9CiAgIH0KICAgICAgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxv
Yz4KICAgIHZvaWQKICAgIHZlY3Rvcjxib29sLCBfQWxsb2M+OjoKICAgIF9NX3JlYWxsb2NhdGUo
c2l6ZV90eXBlIF9fbikKICAgIHsKICAgICAgX0JpdF90eXBlKiBfX3EgPSB0aGlzLT5fTV9hbGxv
Y2F0ZShfX24pOwogICAgICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCA9IF9NX2NvcHlfYWxpZ25l
ZChiZWdpbigpLCBlbmQoKSwKICAgICAgaXRlcmF0b3IoX19xLCAwKSk7CiAgICAgIHRoaXMtPl9N
X2RlYWxsb2NhdGUoKTsKICAgICAgdGhpcy0+X01faW1wbC5fTV9zdGFydCA9IGl0ZXJhdG9yKF9f
cSwgMCk7CiAgICAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UgPSBfX3EgKyBfU19u
d29yZChfX24pOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAgICB2b2lkCiAg
ICB2ZWN0b3I8Ym9vbCwgX0FsbG9jPjo6CiAgICBfTV9maWxsX2luc2VydChpdGVyYXRvciBfX3Bv
c2l0aW9uLCBzaXplX3R5cGUgX19uLCBib29sIF9feCkKICAgIHsKICAgICAgaWYgKF9fbiA9PSAw
KQogcmV0dXJuOwogICAgICBpZiAoY2FwYWNpdHkoKSAtIHNpemUoKSA+PSBfX24pCiB7CiAgIHN0
ZDo6Y29weV9iYWNrd2FyZChfX3Bvc2l0aW9uLCBlbmQoKSwKICAgICAgICB0aGlzLT5fTV9pbXBs
Ll9NX2ZpbmlzaCArIGRpZmZlcmVuY2VfdHlwZShfX24pKTsKICAgc3RkOjpmaWxsKF9fcG9zaXRp
b24sIF9fcG9zaXRpb24gKyBkaWZmZXJlbmNlX3R5cGUoX19uKSwgX194KTsKICAgdGhpcy0+X01f
aW1wbC5fTV9maW5pc2ggKz0gZGlmZmVyZW5jZV90eXBlKF9fbik7CiB9CiAgICAgIGVsc2UKIHsK
ICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0KICAgICBfTV9jaGVja19sZW4oX19uLCAidmVjdG9y
PGJvb2w+OjpfTV9maWxsX2luc2VydCIpOwogICBfQml0X3R5cGUgKiBfX3EgPSB0aGlzLT5fTV9h
bGxvY2F0ZShfX2xlbik7CiAgIGl0ZXJhdG9yIF9faSA9IF9NX2NvcHlfYWxpZ25lZChiZWdpbigp
LCBfX3Bvc2l0aW9uLAogICAgICBpdGVyYXRvcihfX3EsIDApKTsKICAgc3RkOjpmaWxsKF9faSwg
X19pICsgZGlmZmVyZW5jZV90eXBlKF9fbiksIF9feCk7CiAgIHRoaXMtPl9NX2ltcGwuX01fZmlu
aXNoID0gc3RkOjpjb3B5KF9fcG9zaXRpb24sIGVuZCgpLAogICAgICAgICAgIF9faSArIGRpZmZl
cmVuY2VfdHlwZShfX24pKTsKICAgdGhpcy0+X01fZGVhbGxvY2F0ZSgpOwogICB0aGlzLT5fTV9p
bXBsLl9NX2VuZF9vZl9zdG9yYWdlID0gX19xICsgX1NfbndvcmQoX19sZW4pOwogICB0aGlzLT5f
TV9pbXBsLl9NX3N0YXJ0ID0gaXRlcmF0b3IoX19xLCAwKTsKIH0KICAgIH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0FsbG9jPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcj4K
ICAgICAgdm9pZAogICAgICB2ZWN0b3I8Ym9vbCwgX0FsbG9jPjo6CiAgICAgIF9NX2luc2VydF9y
YW5nZShpdGVyYXRvciBfX3Bvc2l0aW9uLCBfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAg
ICAgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcpCiAg
ICAgIHsKIGlmIChfX2ZpcnN0ICE9IF9fbGFzdCkKICAgewogICAgIHNpemVfdHlwZSBfX24gPSBz
dGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCk7CiAgICAgaWYgKGNhcGFjaXR5KCkgLSBzaXpl
KCkgPj0gX19uKQogICAgICAgewogIHN0ZDo6Y29weV9iYWNrd2FyZChfX3Bvc2l0aW9uLCBlbmQo
KSwKICAgICAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoCiAgICAgICArIGRpZmZlcmVuY2VfdHlw
ZShfX24pKTsKICBzdGQ6OmNvcHkoX19maXJzdCwgX19sYXN0LCBfX3Bvc2l0aW9uKTsKICB0aGlz
LT5fTV9pbXBsLl9NX2ZpbmlzaCArPSBkaWZmZXJlbmNlX3R5cGUoX19uKTsKICAgICAgIH0KICAg
ICBlbHNlCiAgICAgICB7CiAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0KICAgIF9NX2NoZWNrX2xl
bihfX24sICJ2ZWN0b3I8Ym9vbD46Ol9NX2luc2VydF9yYW5nZSIpOwogIF9CaXRfdHlwZSAqIF9f
cSA9IHRoaXMtPl9NX2FsbG9jYXRlKF9fbGVuKTsKICBpdGVyYXRvciBfX2kgPSBfTV9jb3B5X2Fs
aWduZWQoYmVnaW4oKSwgX19wb3NpdGlvbiwKICAgICAgICAgICAgaXRlcmF0b3IoX19xLCAwKSk7
CiAgX19pID0gc3RkOjpjb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19pKTsKICB0aGlzLT5fTV9pbXBs
Ll9NX2ZpbmlzaCA9IHN0ZDo6Y29weShfX3Bvc2l0aW9uLCBlbmQoKSwgX19pKTsKICB0aGlzLT5f
TV9kZWFsbG9jYXRlKCk7CiAgdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZSA9IF9fcSAr
IF9TX253b3JkKF9fbGVuKTsKICB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ID0gaXRlcmF0b3IoX19x
LCAwKTsKICAgICAgIH0KICAgfQogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4K
ICAgIHZvaWQKICAgIHZlY3Rvcjxib29sLCBfQWxsb2M+OjoKICAgIF9NX2luc2VydF9hdXgoaXRl
cmF0b3IgX19wb3NpdGlvbiwgYm9vbCBfX3gpCiAgICB7CiAgICAgIGlmICh0aGlzLT5fTV9pbXBs
Ll9NX2ZpbmlzaC5fTV9wICE9IHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UpCiB7CiAg
IHN0ZDo6Y29weV9iYWNrd2FyZChfX3Bvc2l0aW9uLCB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwK
ICAgICAgICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCArIDEpOwogICAqX19wb3NpdGlvbiA9IF9f
eDsKICAgKyt0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaDsKIH0KICAgICAgZWxzZQogewogICBjb25z
dCBzaXplX3R5cGUgX19sZW4gPQogICAgIF9NX2NoZWNrX2xlbihzaXplX3R5cGUoMSksICJ2ZWN0
b3I8Ym9vbD46Ol9NX2luc2VydF9hdXgiKTsKICAgX0JpdF90eXBlICogX19xID0gdGhpcy0+X01f
YWxsb2NhdGUoX19sZW4pOwogICBpdGVyYXRvciBfX2kgPSBfTV9jb3B5X2FsaWduZWQoYmVnaW4o
KSwgX19wb3NpdGlvbiwKICAgICAgaXRlcmF0b3IoX19xLCAwKSk7CiAgICpfX2krKyA9IF9feDsK
ICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggPSBzdGQ6OmNvcHkoX19wb3NpdGlvbiwgZW5kKCks
IF9faSk7CiAgIHRoaXMtPl9NX2RlYWxsb2NhdGUoKTsKICAgdGhpcy0+X01faW1wbC5fTV9lbmRf
b2Zfc3RvcmFnZSA9IF9fcSArIF9TX253b3JkKF9fbGVuKTsKICAgdGhpcy0+X01faW1wbC5fTV9z
dGFydCA9IGl0ZXJhdG9yKF9fcSwgMCk7CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9B
bGxvYz4KICAgIHR5cGVuYW1lIHZlY3Rvcjxib29sLCBfQWxsb2M+OjppdGVyYXRvcgogICAgdmVj
dG9yPGJvb2wsIF9BbGxvYz46OgogICAgX01fZXJhc2UoaXRlcmF0b3IgX19wb3NpdGlvbikKICAg
IHsKICAgICAgaWYgKF9fcG9zaXRpb24gKyAxICE9IGVuZCgpKQogICAgICAgIHN0ZDo6Y29weShf
X3Bvc2l0aW9uICsgMSwgZW5kKCksIF9fcG9zaXRpb24pOwogICAgICAtLXRoaXMtPl9NX2ltcGwu
X01fZmluaXNoOwogICAgICByZXR1cm4gX19wb3NpdGlvbjsKICAgIH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0FsbG9jPgogICAgdHlwZW5hbWUgdmVjdG9yPGJvb2wsIF9BbGxvYz46Oml0ZXJhdG9y
CiAgICB2ZWN0b3I8Ym9vbCwgX0FsbG9jPjo6CiAgICBfTV9lcmFzZShpdGVyYXRvciBfX2ZpcnN0
LCBpdGVyYXRvciBfX2xhc3QpCiAgICB7CiAgICAgIGlmIChfX2ZpcnN0ICE9IF9fbGFzdCkKIF9N
X2VyYXNlX2F0X2VuZChzdGQ6OmNvcHkoX19sYXN0LCBlbmQoKSwgX19maXJzdCkpOwogICAgICBy
ZXR1cm4gX19maXJzdDsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KICAgIGJv
b2wKICAgIHZlY3Rvcjxib29sLCBfQWxsb2M+OjoKICAgIF9NX3Nocmlua190b19maXQoKQogICAg
ewogICAgICBpZiAoY2FwYWNpdHkoKSAtIHNpemUoKSA8IGludChfU193b3JkX2JpdCkpCiByZXR1
cm4gZmFsc2U7CiAgICAgIGlmICh0cnVlKQogewogICBfTV9yZWFsbG9jYXRlKHNpemUoKSk7CiAg
IHJldHVybiB0cnVlOwogfQogICAgICBpZiAoZmFsc2UpCiB7IHJldHVybiBmYWxzZTsgfQogICAg
fQoKCgp9CgoKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgi
ZGVmYXVsdCIpKSkKewoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogICAgc2l6ZV90CiAg
ICBoYXNoPHN0ZDo6dmVjdG9yPGJvb2wsIF9BbGxvYz4+OjoKICAgIG9wZXJhdG9yKCkoY29uc3Qg
c3RkOjp2ZWN0b3I8Ym9vbCwgX0FsbG9jPiYgX19iKSBjb25zdCBub2V4Y2VwdAogICAgewogICAg
ICBzaXplX3QgX19oYXNoID0gMDsKICAgICAgdXNpbmcgc3RkOjpfU193b3JkX2JpdDsKICAgICAg
dXNpbmcgc3RkOjpfQml0X3R5cGU7CgogICAgICBjb25zdCBzaXplX3QgX193b3JkcyA9IF9fYi5z
aXplKCkgLyBfU193b3JkX2JpdDsKICAgICAgaWYgKF9fd29yZHMpCiB7CiAgIGNvbnN0IHNpemVf
dCBfX2NsZW5ndGggPSBfX3dvcmRzICogc2l6ZW9mKF9CaXRfdHlwZSk7CiAgIF9faGFzaCA9IHN0
ZDo6X0hhc2hfaW1wbDo6aGFzaChfX2IuX01faW1wbC5fTV9zdGFydC5fTV9wLCBfX2NsZW5ndGgp
OwogfQoKICAgICAgY29uc3Qgc2l6ZV90IF9fZXh0cmFiaXRzID0gX19iLnNpemUoKSAlIF9TX3dv
cmRfYml0OwogICAgICBpZiAoX19leHRyYWJpdHMpCiB7CiAgIF9CaXRfdHlwZSBfX2hpd29yZCA9
ICpfX2IuX01faW1wbC5fTV9maW5pc2guX01fcDsKICAgX19oaXdvcmQgJj0gfigofnN0YXRpY19j
YXN0PF9CaXRfdHlwZT4oMCkpIDw8IF9fZXh0cmFiaXRzKTsKCiAgIGNvbnN0IHNpemVfdCBfX2Ns
ZW5ndGgKICAgICA9IChfX2V4dHJhYml0cyArIDggLSAxKSAvIDg7CiAgIGlmIChfX3dvcmRzKQog
ICAgIF9faGFzaCA9IHN0ZDo6X0hhc2hfaW1wbDo6aGFzaCgmX19oaXdvcmQsIF9fY2xlbmd0aCwg
X19oYXNoKTsKICAgZWxzZQogICAgIF9faGFzaCA9IHN0ZDo6X0hhc2hfaW1wbDo6aGFzaCgmX19o
aXdvcmQsIF9fY2xlbmd0aCk7CiB9CgogICAgICByZXR1cm4gX19oYXNoOwogICAgfQoKCn0KIyA3
MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My92ZWN0b3IiIDIgMwojIDM1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDIgMwoKbmFtZXNwYWNlIHN0ZCBfX2F0
dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgojIDU1ICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFu
ZG9tLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUsIHNpemVfdCBfX2JpdHMsCiAg
ICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgIF9SZWFsVHlwZQog
ICAgZ2VuZXJhdGVfY2Fub25pY2FsKF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX2cp
OwoKCgoKCgogIG5hbWVzcGFjZSBfX2RldGFpbAogIHsKIAoKICAgIHRlbXBsYXRlPHR5cGVuYW1l
IF9VSW50VHlwZSwgc2l6ZV90IF9fdywKICAgICAgYm9vbCA9IF9fdyA8IHN0YXRpY19jYXN0PHNp
emVfdD4KICAgICAoc3RkOjpudW1lcmljX2xpbWl0czxfVUludFR5cGU+OjpkaWdpdHMpPgogICAg
ICBzdHJ1Y3QgX1NoaWZ0CiAgICAgIHsgc3RhdGljIGNvbnN0IF9VSW50VHlwZSBfX3ZhbHVlID0g
MDsgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5cGUsIHNpemVfdCBfX3c+CiAgICAg
IHN0cnVjdCBfU2hpZnQ8X1VJbnRUeXBlLCBfX3csIHRydWU+CiAgICAgIHsgc3RhdGljIGNvbnN0
IF9VSW50VHlwZSBfX3ZhbHVlID0gX1VJbnRUeXBlKDEpIDw8IF9fdzsgfTsKCiAgICB0ZW1wbGF0
ZTxpbnQgX19zLAogICAgICBpbnQgX193aGljaCA9ICgoX19zIDw9IDggKiBzaXplb2YgKGludCkp
CiAgICAgICArIChfX3MgPD0gOCAqIHNpemVvZiAobG9uZykpCiAgICAgICArIChfX3MgPD0gOCAq
IHNpemVvZiAobG9uZyBsb25nKSkKCiAgICAgICArIChfX3MgPD0gMTI4KSk+CiAgICAgIHN0cnVj
dCBfU2VsZWN0X3VpbnRfbGVhc3RfdAogICAgICB7CiBzdGF0aWNfYXNzZXJ0KF9fd2hpY2ggPCAw
LAogICAgICAgICJzb3JyeSwgd291bGQgYmUgdG9vIG11Y2ggdHJvdWJsZSBmb3IgYSBzbG93IHJl
c3VsdCIpOwogICAgICB9OwoKICAgIHRlbXBsYXRlPGludCBfX3M+CiAgICAgIHN0cnVjdCBfU2Vs
ZWN0X3VpbnRfbGVhc3RfdDxfX3MsIDQ+CiAgICAgIHsgdHlwZWRlZiB1bnNpZ25lZCBpbnQgdHlw
ZTsgfTsKCiAgICB0ZW1wbGF0ZTxpbnQgX19zPgogICAgICBzdHJ1Y3QgX1NlbGVjdF91aW50X2xl
YXN0X3Q8X19zLCAzPgogICAgICB7IHR5cGVkZWYgdW5zaWduZWQgbG9uZyB0eXBlOyB9OwoKICAg
IHRlbXBsYXRlPGludCBfX3M+CiAgICAgIHN0cnVjdCBfU2VsZWN0X3VpbnRfbGVhc3RfdDxfX3Ms
IDI+CiAgICAgIHsgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdHlwZTsgfTsKIyAxMTAgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9yYW5kb20uaCIgMwogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBfVHAgX19tLCBfVHAgX19h
LCBfVHAgX19jLAogICAgICBib29sIF9fYmlnX2Vub3VnaCA9ICghKF9fbSAmIChfX20gLSAxKSkK
ICAgICAgfHwgKF9UcCgtMSkgLSBfX2MpIC8gX19hID49IF9fbSAtIDEpLAogICAgICAgICAgICAg
Ym9vbCBfX3NjaHJhZ2Vfb2sgPSBfX20gJSBfX2EgPCBfX20gLyBfX2E+CiAgICAgIHN0cnVjdCBf
TW9kCiAgICAgIHsKIHR5cGVkZWYgdHlwZW5hbWUgX1NlbGVjdF91aW50X2xlYXN0X3Q8c3RkOjpf
X2xnKF9fYSkKICAgICAgICAgICArIHN0ZDo6X19sZyhfX20pICsgMj46OnR5cGUgX1RwMjsKIHN0
YXRpYyBfVHAKIF9fY2FsYyhfVHAgX194KQogeyByZXR1cm4gc3RhdGljX2Nhc3Q8X1RwPigoX1Rw
MihfX2EpICogX194ICsgX19jKSAlIF9fbSk7IH0KICAgICAgfTsKCgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwLCBfVHAgX19tLCBfVHAgX19hLCBfVHAgX19jPgogICAgICBzdHJ1Y3QgX01vZDxf
VHAsIF9fbSwgX19hLCBfX2MsIGZhbHNlLCB0cnVlPgogICAgICB7CiBzdGF0aWMgX1RwCiBfX2Nh
bGMoX1RwIF9feCk7CiAgICAgIH07CgoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBfVHAg
X19tLCBfVHAgX19hLCBfVHAgX19jLCBib29sIF9fcz4KICAgICAgc3RydWN0IF9Nb2Q8X1RwLCBf
X20sIF9fYSwgX19jLCB0cnVlLCBfX3M+CiAgICAgIHsKIHN0YXRpYyBfVHAKIF9fY2FsYyhfVHAg
X194KQogewogICBfVHAgX19yZXMgPSBfX2EgKiBfX3ggKyBfX2M7CiAgIGlmIChfX20pCiAgICAg
X19yZXMgJT0gX19tOwogICByZXR1cm4gX19yZXM7CiB9CiAgICAgIH07CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwLCBfVHAgX19tLCBfVHAgX19hID0gMSwgX1RwIF9fYyA9IDA+CiAgICAgIGlu
bGluZSBfVHAKICAgICAgX19tb2QoX1RwIF9feCkKICAgICAgeyByZXR1cm4gX01vZDxfVHAsIF9f
bSwgX19hLCBfX2M+OjpfX2NhbGMoX194KTsgfQoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICAgIGlubGluZSBib29sCiAgICAgIF9Qb3dlcl9vZl8yKF9UcCBfX3gpCiAgICAgIHsKIHJl
dHVybiAoKF9feCAtIDEpICYgX194KSA9PSAwOwogICAgICB9OwoKCgoKCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfRW5naW5lLCB0eXBlbmFtZSBfRElucHV0VHlwZT4KICAgICAgc3RydWN0IF9BZGFw
dG9yCiAgICAgIHsKIHN0YXRpY19hc3NlcnQoc3RkOjppc19mbG9hdGluZ19wb2ludDxfRElucHV0
VHlwZT46OnZhbHVlLAogICAgICAgICJ0ZW1wbGF0ZSBhcmd1bWVudCBub3QgYSBmbG9hdGluZyBw
b2ludCB0eXBlIik7CgogICAgICBwdWJsaWM6CiBfQWRhcHRvcihfRW5naW5lJiBfX2cpCiA6IF9N
X2coX19nKSB7IH0KCiBfRElucHV0VHlwZQogbWluKCkgY29uc3QKIHsgcmV0dXJuIF9ESW5wdXRU
eXBlKDApOyB9CgogX0RJbnB1dFR5cGUKIG1heCgpIGNvbnN0CiB7IHJldHVybiBfRElucHV0VHlw
ZSgxKTsgfQoKCgoKCgogX0RJbnB1dFR5cGUKIG9wZXJhdG9yKCkoKQogewogICByZXR1cm4gc3Rk
OjpnZW5lcmF0ZV9jYW5vbmljYWw8X0RJbnB1dFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxfRElucHV0VHlwZT46OmRpZ2l0cywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfRW5naW5lPihfTV9nKTsKIH0KCiAgICAgIHByaXZhdGU6CiBf
RW5naW5lJiBfTV9nOwogICAgICB9OwoKIAogIH0KCgojIDI0MiAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlLCBfVUludFR5cGUgX19hLCBfVUludFR5cGUgX19j
LCBfVUludFR5cGUgX19tPgogICAgY2xhc3MgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUKICAg
IHsKICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Vuc2lnbmVkPF9VSW50VHlwZT46OnZhbHVl
LCAidGVtcGxhdGUgYXJndW1lbnQgIgogICAgICAic3Vic3RpdHV0aW5nIF9VSW50VHlwZSBub3Qg
YW4gdW5zaWduZWQgaW50ZWdyYWwgdHlwZSIpOwogICAgICBzdGF0aWNfYXNzZXJ0KF9fbSA9PSAw
dSB8fCAoX19hIDwgX19tICYmIF9fYyA8IF9fbSksCiAgICAgICJ0ZW1wbGF0ZSBhcmd1bWVudCBz
dWJzdGl0dXRpbmcgX19tIG91dCBvZiBib3VuZHMiKTsKCiAgICBwdWJsaWM6CgogICAgICB0eXBl
ZGVmIF9VSW50VHlwZSByZXN1bHRfdHlwZTsKCgogICAgICBzdGF0aWMgY29uc3RleHByIHJlc3Vs
dF90eXBlIG11bHRpcGxpZXIgPSBfX2E7CgogICAgICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90
eXBlIGluY3JlbWVudCA9IF9fYzsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUg
bW9kdWx1cyA9IF9fbTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZSBkZWZhdWx0
X3NlZWQgPSAxdTsKIyAyNjkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogICAgICBleHBsaWNpdAogICAgICBs
aW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZShyZXN1bHRfdHlwZSBfX3MgPSBkZWZhdWx0X3NlZWQp
CiAgICAgIHsgc2VlZChfX3MpOyB9CgoKCgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU3Nl
cSwgdHlwZW5hbWUgPSB0eXBlbmFtZQogc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxfU3Nl
cSwgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU+Ojp2YWx1ZT4KICAgICAgICA6OnR5cGU+CiAg
ICAgICAgZXhwbGljaXQKICAgICAgICBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZShfU3NlcSYg
X19xKQogICAgICAgIHsgc2VlZChfX3EpOyB9CgoKCgoKCgogICAgICB2b2lkCiAgICAgIHNlZWQo
cmVzdWx0X3R5cGUgX19zID0gZGVmYXVsdF9zZWVkKTsKIyAzMDIgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU3NlcT4KICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6OmlzX2NsYXNzPF9Tc2VxPjo6dmFsdWU+Ojp0eXBlCiAgICAgICAgc2VlZChfU3Nl
cSYgX19xKTsKCgoKCgoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUKICAgICAg
bWluKCkKICAgICAgeyByZXR1cm4gX19jID09IDB1ID8gMXUgOiAwdTsgfQoKCgoKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZQogICAgICBtYXgoKQogICAgICB7IHJldHVybiBfX20g
LSAxdTsgfQoKCgoKICAgICAgdm9pZAogICAgICBkaXNjYXJkKHVuc2lnbmVkIGxvbmcgbG9uZyBf
X3opCiAgICAgIHsKIGZvciAoOyBfX3ogIT0gMFVMTDsgLS1fX3opCiAgICgqdGhpcykoKTsKICAg
ICAgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgb3BlcmF0b3IoKSgpCiAgICAgIHsKIF9N
X3ggPSBfX2RldGFpbDo6X19tb2Q8X1VJbnRUeXBlLCBfX20sIF9fYSwgX19jPihfTV94KTsKIHJl
dHVybiBfTV94OwogICAgICB9CiMgMzU0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMKICAgICAgZnJpZW5kIGJv
b2wKICAgICAgb3BlcmF0b3I9PShjb25zdCBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSYgX19s
aHMsCiAgIGNvbnN0IGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lJiBfX3JocykKICAgICAgeyBy
ZXR1cm4gX19saHMuX01feCA9PSBfX3Jocy5fTV94OyB9CiMgMzY3ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlMSwgX1VJbnRUeXBlMSBfX2ExLCBfVUlu
dFR5cGUxIF9fYzEsCiAgICAgICAgX1VJbnRUeXBlMSBfX20xLCB0eXBlbmFtZSBfQ2hhclQsIHR5
cGVuYW1lIF9UcmFpdHM+CiBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0
cz4mCiBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29z
LAogICAgIGNvbnN0IHN0ZDo6bGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8X1VJbnRUeXBlMSwK
ICAgICBfX2ExLCBfX2MxLCBfX20xPiYgX19sY3IpOwojIDM4NyAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZTEsIF9VSW50VHlwZTEgX19hMSwgX1VJbnRU
eXBlMSBfX2MxLAogICAgICAgIF9VSW50VHlwZTEgX19tMSwgdHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
Jgogb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywK
ICAgICBzdGQ6OmxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPF9VSW50VHlwZTEsIF9fYTEsCiAg
ICAgX19jMSwgX19tMT4mIF9fbGNyKTsKCiAgICBwcml2YXRlOgogICAgICBfVUludFR5cGUgX01f
eDsKICAgIH07CiMgNDA5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUlu
dFR5cGUsIF9VSW50VHlwZSBfX2EsIF9VSW50VHlwZSBfX2MsIF9VSW50VHlwZSBfX20+CiAgICBp
bmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCBzdGQ6OmxpbmVhcl9jb25ncnVlbnRpYWxf
ZW5naW5lPF9VSW50VHlwZSwgX19hLAogICAgICAgIF9fYywgX19tPiYgX19saHMsCiAgICAgICAg
Y29uc3Qgc3RkOjpsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTxfVUludFR5cGUsIF9fYSwKICAg
ICAgICBfX2MsIF9fbT4mIF9fcmhzKQogICAgeyByZXR1cm4gIShfX2xocyA9PSBfX3Jocyk7IH0K
IyA0NDYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZSwgc2l6
ZV90IF9fdywKICAgIHNpemVfdCBfX24sIHNpemVfdCBfX20sIHNpemVfdCBfX3IsCiAgICBfVUlu
dFR5cGUgX19hLCBzaXplX3QgX191LCBfVUludFR5cGUgX19kLCBzaXplX3QgX19zLAogICAgX1VJ
bnRUeXBlIF9fYiwgc2l6ZV90IF9fdCwKICAgIF9VSW50VHlwZSBfX2MsIHNpemVfdCBfX2wsIF9V
SW50VHlwZSBfX2Y+CiAgICBjbGFzcyBtZXJzZW5uZV90d2lzdGVyX2VuZ2luZQogICAgewogICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdW5zaWduZWQ8X1VJbnRUeXBlPjo6dmFsdWUsICJ0ZW1w
bGF0ZSBhcmd1bWVudCAiCiAgICAgICJzdWJzdGl0dXRpbmcgX1VJbnRUeXBlIG5vdCBhbiB1bnNp
Z25lZCBpbnRlZ3JhbCB0eXBlIik7CiAgICAgIHN0YXRpY19hc3NlcnQoMXUgPD0gX19tICYmIF9f
bSA8PSBfX24sCiAgICAgICJ0ZW1wbGF0ZSBhcmd1bWVudCBzdWJzdGl0dXRpbmcgX19tIG91dCBv
ZiBib3VuZHMiKTsKICAgICAgc3RhdGljX2Fzc2VydChfX3IgPD0gX193LCAidGVtcGxhdGUgYXJn
dW1lbnQgc3Vic3RpdHV0aW5nICIKICAgICAgIl9fciBvdXQgb2YgYm91bmQiKTsKICAgICAgc3Rh
dGljX2Fzc2VydChfX3UgPD0gX193LCAidGVtcGxhdGUgYXJndW1lbnQgc3Vic3RpdHV0aW5nICIK
ICAgICAgIl9fdSBvdXQgb2YgYm91bmQiKTsKICAgICAgc3RhdGljX2Fzc2VydChfX3MgPD0gX193
LCAidGVtcGxhdGUgYXJndW1lbnQgc3Vic3RpdHV0aW5nICIKICAgICAgIl9fcyBvdXQgb2YgYm91
bmQiKTsKICAgICAgc3RhdGljX2Fzc2VydChfX3QgPD0gX193LCAidGVtcGxhdGUgYXJndW1lbnQg
c3Vic3RpdHV0aW5nICIKICAgICAgIl9fdCBvdXQgb2YgYm91bmQiKTsKICAgICAgc3RhdGljX2Fz
c2VydChfX2wgPD0gX193LCAidGVtcGxhdGUgYXJndW1lbnQgc3Vic3RpdHV0aW5nICIKICAgICAg
Il9fbCBvdXQgb2YgYm91bmQiKTsKICAgICAgc3RhdGljX2Fzc2VydChfX3cgPD0gc3RkOjpudW1l
cmljX2xpbWl0czxfVUludFR5cGU+OjpkaWdpdHMsCiAgICAgICJ0ZW1wbGF0ZSBhcmd1bWVudCBz
dWJzdGl0dXRpbmcgX193IG91dCBvZiBib3VuZCIpOwogICAgICBzdGF0aWNfYXNzZXJ0KF9fYSA8
PSAoX19kZXRhaWw6Ol9TaGlmdDxfVUludFR5cGUsIF9fdz46Ol9fdmFsdWUgLSAxKSwKICAgICAg
InRlbXBsYXRlIGFyZ3VtZW50IHN1YnN0aXR1dGluZyBfX2Egb3V0IG9mIGJvdW5kIik7CiAgICAg
IHN0YXRpY19hc3NlcnQoX19iIDw9IChfX2RldGFpbDo6X1NoaWZ0PF9VSW50VHlwZSwgX193Pjo6
X192YWx1ZSAtIDEpLAogICAgICAidGVtcGxhdGUgYXJndW1lbnQgc3Vic3RpdHV0aW5nIF9fYiBv
dXQgb2YgYm91bmQiKTsKICAgICAgc3RhdGljX2Fzc2VydChfX2MgPD0gKF9fZGV0YWlsOjpfU2hp
ZnQ8X1VJbnRUeXBlLCBfX3c+OjpfX3ZhbHVlIC0gMSksCiAgICAgICJ0ZW1wbGF0ZSBhcmd1bWVu
dCBzdWJzdGl0dXRpbmcgX19jIG91dCBvZiBib3VuZCIpOwogICAgICBzdGF0aWNfYXNzZXJ0KF9f
ZCA8PSAoX19kZXRhaWw6Ol9TaGlmdDxfVUludFR5cGUsIF9fdz46Ol9fdmFsdWUgLSAxKSwKICAg
ICAgInRlbXBsYXRlIGFyZ3VtZW50IHN1YnN0aXR1dGluZyBfX2Qgb3V0IG9mIGJvdW5kIik7CiAg
ICAgIHN0YXRpY19hc3NlcnQoX19mIDw9IChfX2RldGFpbDo6X1NoaWZ0PF9VSW50VHlwZSwgX193
Pjo6X192YWx1ZSAtIDEpLAogICAgICAidGVtcGxhdGUgYXJndW1lbnQgc3Vic3RpdHV0aW5nIF9f
ZiBvdXQgb2YgYm91bmQiKTsKCiAgICBwdWJsaWM6CgogICAgICB0eXBlZGVmIF9VSW50VHlwZSBy
ZXN1bHRfdHlwZTsKCgogICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCB3b3JkX3NpemUgPSBf
X3c7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHN0YXRlX3NpemUgPSBfX247CiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNoaWZ0X3NpemUgPSBfX207CiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IG1hc2tfYml0cyA9IF9fcjsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBy
ZXN1bHRfdHlwZSB4b3JfbWFzayA9IF9fYTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
dGVtcGVyaW5nX3UgPSBfX3U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUgdGVt
cGVyaW5nX2QgPSBfX2Q7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHRlbXBlcmluZ19z
ID0gX19zOwogICAgICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlIHRlbXBlcmluZ19iID0g
X19iOwogICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCB0ZW1wZXJpbmdfdCA9IF9fdDsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZSB0ZW1wZXJpbmdfYyA9IF9fYzsKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgdGVtcGVyaW5nX2wgPSBfX2w7CiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgcmVzdWx0X3R5cGUgaW5pdGlhbGl6YXRpb25fbXVsdGlwbGllciA9IF9fZjsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZSBkZWZhdWx0X3NlZWQgPSA1NDg5dTsKCgog
ICAgICBleHBsaWNpdAogICAgICBtZXJzZW5uZV90d2lzdGVyX2VuZ2luZShyZXN1bHRfdHlwZSBf
X3NkID0gZGVmYXVsdF9zZWVkKQogICAgICB7IHNlZWQoX19zZCk7IH0KCgoKCgoKCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9Tc2VxLCB0eXBlbmFtZSA9IHR5cGVuYW1lCiAgICAgICAgc3RkOjpl
bmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxfU3NlcSwgbWVyc2VubmVfdHdpc3Rlcl9lbmdpbmU+Ojp2
YWx1ZT4KICAgICAgICA6OnR5cGU+CiAgICAgICAgZXhwbGljaXQKICAgICAgICBtZXJzZW5uZV90
d2lzdGVyX2VuZ2luZShfU3NlcSYgX19xKQogICAgICAgIHsgc2VlZChfX3EpOyB9CgogICAgICB2
b2lkCiAgICAgIHNlZWQocmVzdWx0X3R5cGUgX19zZCA9IGRlZmF1bHRfc2VlZCk7CgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfU3NlcT4KIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
Y2xhc3M8X1NzZXE+Ojp2YWx1ZT46OnR5cGUKICAgICAgICBzZWVkKF9Tc2VxJiBfX3EpOwoKCgoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZQogICAgICBtaW4oKQogICAgICB7IHJl
dHVybiAwOyB9OwoKCgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZQogICAgICBt
YXgoKQogICAgICB7IHJldHVybiBfX2RldGFpbDo6X1NoaWZ0PF9VSW50VHlwZSwgX193Pjo6X192
YWx1ZSAtIDE7IH0KCgoKCiAgICAgIHZvaWQKICAgICAgZGlzY2FyZCh1bnNpZ25lZCBsb25nIGxv
bmcgX196KTsKCiAgICAgIHJlc3VsdF90eXBlCiAgICAgIG9wZXJhdG9yKCkoKTsKIyA1NjAgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9yYW5kb20uaCIgMwogICAgICBmcmllbmQgYm9vbAogICAgICBvcGVyYXRvcj09KGNvbnN0IG1l
cnNlbm5lX3R3aXN0ZXJfZW5naW5lJiBfX2xocywKICAgY29uc3QgbWVyc2VubmVfdHdpc3Rlcl9l
bmdpbmUmIF9fcmhzKQogICAgICB7IHJldHVybiAoc3RkOjplcXVhbChfX2xocy5fTV94LCBfX2xo
cy5fTV94ICsgc3RhdGVfc2l6ZSwgX19yaHMuX01feCkKICAmJiBfX2xocy5fTV9wID09IF9fcmhz
Ll9NX3ApOyB9CiMgNTc4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1VJbnRUeXBlMSwKICAgICAgICBzaXplX3QgX193MSwgc2l6ZV90IF9fbjEsCiAgICAgICAgc2l6
ZV90IF9fbTEsIHNpemVfdCBfX3IxLAogICAgICAgIF9VSW50VHlwZTEgX19hMSwgc2l6ZV90IF9f
dTEsCiAgICAgICAgX1VJbnRUeXBlMSBfX2QxLCBzaXplX3QgX19zMSwKICAgICAgICBfVUludFR5
cGUxIF9fYjEsIHNpemVfdCBfX3QxLAogICAgICAgIF9VSW50VHlwZTEgX19jMSwgc2l6ZV90IF9f
bDEsIF9VSW50VHlwZTEgX19mMSwKICAgICAgICB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHM+CiBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiBvcGVy
YXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgIGNv
bnN0IHN0ZDo6bWVyc2VubmVfdHdpc3Rlcl9lbmdpbmU8X1VJbnRUeXBlMSwgX193MSwgX19uMSwK
ICAgICBfX20xLCBfX3IxLCBfX2ExLCBfX3UxLCBfX2QxLCBfX3MxLCBfX2IxLCBfX3QxLCBfX2Mx
LAogICAgIF9fbDEsIF9fZjE+JiBfX3gpOwojIDYwNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZTEsCiAgICAgICAgc2l6ZV90IF9fdzEsIHNpemVfdCBf
X24xLAogICAgICAgIHNpemVfdCBfX20xLCBzaXplX3QgX19yMSwKICAgICAgICBfVUludFR5cGUx
IF9fYTEsIHNpemVfdCBfX3UxLAogICAgICAgIF9VSW50VHlwZTEgX19kMSwgc2l6ZV90IF9fczEs
CiAgICAgICAgX1VJbnRUeXBlMSBfX2IxLCBzaXplX3QgX190MSwKICAgICAgICBfVUludFR5cGUx
IF9fYzEsIHNpemVfdCBfX2wxLCBfVUludFR5cGUxIF9fZjEsCiAgICAgICAgdHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+Jgogb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRz
PiYgX19pcywKICAgICBzdGQ6Om1lcnNlbm5lX3R3aXN0ZXJfZW5naW5lPF9VSW50VHlwZTEsIF9f
dzEsIF9fbjEsIF9fbTEsCiAgICAgX19yMSwgX19hMSwgX191MSwgX19kMSwgX19zMSwgX19iMSwg
X190MSwgX19jMSwKICAgICBfX2wxLCBfX2YxPiYgX194KTsKCiAgICBwcml2YXRlOgogICAgICB2
b2lkIF9NX2dlbl9yYW5kKCk7CgogICAgICBfVUludFR5cGUgX01feFtzdGF0ZV9zaXplXTsKICAg
ICAgc2l6ZV90IF9NX3A7CiAgICB9OwojIDYzNyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1VJbnRUeXBlLCBzaXplX3QgX193LAogICAgc2l6ZV90IF9fbiwgc2l6ZV90IF9f
bSwgc2l6ZV90IF9fciwKICAgIF9VSW50VHlwZSBfX2EsIHNpemVfdCBfX3UsIF9VSW50VHlwZSBf
X2QsIHNpemVfdCBfX3MsCiAgICBfVUludFR5cGUgX19iLCBzaXplX3QgX190LAogICAgX1VJbnRU
eXBlIF9fYywgc2l6ZV90IF9fbCwgX1VJbnRUeXBlIF9fZj4KICAgIGlubGluZSBib29sCiAgICBv
cGVyYXRvciE9KGNvbnN0IHN0ZDo6bWVyc2VubmVfdHdpc3Rlcl9lbmdpbmU8X1VJbnRUeXBlLCBf
X3csIF9fbiwgX19tLAogICAgICAgIF9fciwgX19hLCBfX3UsIF9fZCwgX19zLCBfX2IsIF9fdCwg
X19jLCBfX2wsIF9fZj4mIF9fbGhzLAogICAgICAgIGNvbnN0IHN0ZDo6bWVyc2VubmVfdHdpc3Rl
cl9lbmdpbmU8X1VJbnRUeXBlLCBfX3csIF9fbiwgX19tLAogICAgICAgIF9fciwgX19hLCBfX3Us
IF9fZCwgX19zLCBfX2IsIF9fdCwgX19jLCBfX2wsIF9fZj4mIF9fcmhzKQogICAgeyByZXR1cm4g
IShfX2xocyA9PSBfX3Jocyk7IH0KIyA2NjkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9VSW50VHlwZSwgc2l6ZV90IF9fdywgc2l6ZV90IF9fcywgc2l6ZV90IF9fcj4KICAg
IGNsYXNzIHN1YnRyYWN0X3dpdGhfY2FycnlfZW5naW5lCiAgICB7CiAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc191bnNpZ25lZDxfVUludFR5cGU+Ojp2YWx1ZSwgInRlbXBsYXRlIGFyZ3VtZW50
ICIKICAgICAgInN1YnN0aXR1dGluZyBfVUludFR5cGUgbm90IGFuIHVuc2lnbmVkIGludGVncmFs
IHR5cGUiKTsKICAgICAgc3RhdGljX2Fzc2VydCgwdSA8IF9fcyAmJiBfX3MgPCBfX3IsCiAgICAg
ICJ0ZW1wbGF0ZSBhcmd1bWVudCBzdWJzdGl0dXRpbmcgX19zIG91dCBvZiBib3VuZHMiKTsKICAg
ICAgc3RhdGljX2Fzc2VydCgwdSA8IF9fdyAmJiBfX3cgPD0gc3RkOjpudW1lcmljX2xpbWl0czxf
VUludFR5cGU+OjpkaWdpdHMsCiAgICAgICJ0ZW1wbGF0ZSBhcmd1bWVudCBzdWJzdGl0dXRpbmcg
X193IG91dCBvZiBib3VuZHMiKTsKCiAgICBwdWJsaWM6CgogICAgICB0eXBlZGVmIF9VSW50VHlw
ZSByZXN1bHRfdHlwZTsKCgogICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCB3b3JkX3NpemUg
PSBfX3c7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNob3J0X2xhZyA9IF9fczsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbG9uZ19sYWcgPSBfX3I7CiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgcmVzdWx0X3R5cGUgZGVmYXVsdF9zZWVkID0gMTk3ODA1MDN1OwoKCgoKCiAgICAg
IGV4cGxpY2l0CiAgICAgIHN1YnRyYWN0X3dpdGhfY2FycnlfZW5naW5lKHJlc3VsdF90eXBlIF9f
c2QgPSBkZWZhdWx0X3NlZWQpCiAgICAgIHsgc2VlZChfX3NkKTsgfQoKCgoKCgoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX1NzZXEsIHR5cGVuYW1lID0gdHlwZW5hbWUKICAgICAgICBzdGQ6OmVu
YWJsZV9pZjwhc3RkOjppc19zYW1lPF9Tc2VxLCBzdWJ0cmFjdF93aXRoX2NhcnJ5X2VuZ2luZT46
OnZhbHVlPgogICAgICAgIDo6dHlwZT4KICAgICAgICBleHBsaWNpdAogICAgICAgIHN1YnRyYWN0
X3dpdGhfY2FycnlfZW5naW5lKF9Tc2VxJiBfX3EpCiAgICAgICAgeyBzZWVkKF9fcSk7IH0KIyA3
MjIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvYml0cy9yYW5kb20uaCIgMwogICAgICB2b2lkCiAgICAgIHNlZWQocmVzdWx0X3R5cGUgX19z
ZCA9IGRlZmF1bHRfc2VlZCk7CgoKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1NzZXE+CiB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NsYXNzPF9Tc2VxPjo6dmFsdWU+Ojp0eXBl
CiAgICAgICAgc2VlZChfU3NlcSYgX19xKTsKCgoKCgogICAgICBzdGF0aWMgY29uc3RleHByIHJl
c3VsdF90eXBlCiAgICAgIG1pbigpCiAgICAgIHsgcmV0dXJuIDA7IH0KCgoKCgogICAgICBzdGF0
aWMgY29uc3RleHByIHJlc3VsdF90eXBlCiAgICAgIG1heCgpCiAgICAgIHsgcmV0dXJuIF9fZGV0
YWlsOjpfU2hpZnQ8X1VJbnRUeXBlLCBfX3c+OjpfX3ZhbHVlIC0gMTsgfQoKCgoKICAgICAgdm9p
ZAogICAgICBkaXNjYXJkKHVuc2lnbmVkIGxvbmcgbG9uZyBfX3opCiAgICAgIHsKIGZvciAoOyBf
X3ogIT0gMFVMTDsgLS1fX3opCiAgICgqdGhpcykoKTsKICAgICAgfQoKCgoKICAgICAgcmVzdWx0
X3R5cGUKICAgICAgb3BlcmF0b3IoKSgpOwojIDc3NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAgICAgIGZy
aWVuZCBib29sCiAgICAgIG9wZXJhdG9yPT0oY29uc3Qgc3VidHJhY3Rfd2l0aF9jYXJyeV9lbmdp
bmUmIF9fbGhzLAogICBjb25zdCBzdWJ0cmFjdF93aXRoX2NhcnJ5X2VuZ2luZSYgX19yaHMpCiAg
ICAgIHsgcmV0dXJuIChzdGQ6OmVxdWFsKF9fbGhzLl9NX3gsIF9fbGhzLl9NX3ggKyBsb25nX2xh
ZywgX19yaHMuX01feCkKICAmJiBfX2xocy5fTV9jYXJyeSA9PSBfX3Jocy5fTV9jYXJyeQogICYm
IF9fbGhzLl9NX3AgPT0gX19yaHMuX01fcCk7IH0KIyA3OTYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5cGUxLCBzaXplX3QgX193MSwgc2l6ZV90IF9fczEs
IHNpemVfdCBfX3IxLAogICAgICAgIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4K
IGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKIG9wZXJhdG9yPDwo
c3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mLAogICAgIGNvbnN0IHN0ZDo6c3Vi
dHJhY3Rfd2l0aF9jYXJyeV9lbmdpbmU8X1VJbnRUeXBlMSwgX193MSwKICAgICBfX3MxLCBfX3Ix
PiYpOwojIDgxNSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50
VHlwZTEsIHNpemVfdCBfX3cxLCBzaXplX3QgX19zMSwgc2l6ZV90IF9fcjEsCiAgICAgICAgdHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVh
bTxfQ2hhclQsIF9UcmFpdHM+Jgogb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJU
LCBfVHJhaXRzPiYsCiAgICAgc3RkOjpzdWJ0cmFjdF93aXRoX2NhcnJ5X2VuZ2luZTxfVUludFR5
cGUxLCBfX3cxLAogICAgIF9fczEsIF9fcjE+Jik7CgogICAgcHJpdmF0ZToKICAgICAgX1VJbnRU
eXBlIF9NX3hbbG9uZ19sYWddOwogICAgICBfVUludFR5cGUgX01fY2Fycnk7CiAgICAgIHNpemVf
dCBfTV9wOwogICAgfTsKIyA4NDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9VSW50VHlwZSwgc2l6ZV90IF9fdywgc2l6ZV90IF9fcywgc2l6ZV90IF9fcj4KICAgIGlubGlu
ZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHN0ZDo6c3VidHJhY3Rfd2l0aF9jYXJyeV9lbmdp
bmU8X1VJbnRUeXBlLCBfX3csCiAgICAgICAgX19zLCBfX3I+JiBfX2xocywKICAgICAgICBjb25z
dCBzdGQ6OnN1YnRyYWN0X3dpdGhfY2FycnlfZW5naW5lPF9VSW50VHlwZSwgX193LAogICAgICAg
IF9fcywgX19yPiYgX19yaHMpCiAgICB7IHJldHVybiAhKF9fbGhzID09IF9fcmhzKTsgfQojIDg1
NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbU51bWJlckVuZ2lu
ZSwgc2l6ZV90IF9fcCwgc2l6ZV90IF9fcj4KICAgIGNsYXNzIGRpc2NhcmRfYmxvY2tfZW5naW5l
CiAgICB7CiAgICAgIHN0YXRpY19hc3NlcnQoMSA8PSBfX3IgJiYgX19yIDw9IF9fcCwKICAgICAg
InRlbXBsYXRlIGFyZ3VtZW50IHN1YnN0aXR1dGluZyBfX3Igb3V0IG9mIGJvdW5kcyIpOwoKICAg
IHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1JhbmRvbU51bWJlckVuZ2luZTo6cmVz
dWx0X3R5cGUgcmVzdWx0X3R5cGU7CgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgYmxv
Y2tfc2l6ZSA9IF9fcDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgdXNlZF9ibG9jayA9
IF9fcjsKCgoKCgoKICAgICAgZGlzY2FyZF9ibG9ja19lbmdpbmUoKQogICAgICA6IF9NX2IoKSwg
X01fbigwKSB7IH0KCgoKCgoKCiAgICAgIGV4cGxpY2l0CiAgICAgIGRpc2NhcmRfYmxvY2tfZW5n
aW5lKGNvbnN0IF9SYW5kb21OdW1iZXJFbmdpbmUmIF9fcm5nKQogICAgICA6IF9NX2IoX19ybmcp
LCBfTV9uKDApIHsgfQoKCgoKCgoKICAgICAgZXhwbGljaXQKICAgICAgZGlzY2FyZF9ibG9ja19l
bmdpbmUoX1JhbmRvbU51bWJlckVuZ2luZSYmIF9fcm5nKQogICAgICA6IF9NX2Ioc3RkOjptb3Zl
KF9fcm5nKSksIF9NX24oMCkgeyB9CgoKCgoKCgogICAgICBleHBsaWNpdAogICAgICBkaXNjYXJk
X2Jsb2NrX2VuZ2luZShyZXN1bHRfdHlwZSBfX3MpCiAgICAgIDogX01fYihfX3MpLCBfTV9uKDAp
IHsgfQoKCgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU3NlcSwgdHlwZW5hbWUgPSB0eXBl
bmFtZQogc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxfU3NlcSwgZGlzY2FyZF9ibG9ja19l
bmdpbmU+Ojp2YWx1ZQogICAgICAgICAmJiAhc3RkOjppc19zYW1lPF9Tc2VxLCBfUmFuZG9tTnVt
YmVyRW5naW5lPjo6dmFsdWU+CiAgICAgICAgOjp0eXBlPgogICAgICAgIGV4cGxpY2l0CiAgICAg
ICAgZGlzY2FyZF9ibG9ja19lbmdpbmUoX1NzZXEmIF9fcSkKIDogX01fYihfX3EpLCBfTV9uKDAp
CiAgICAgICAgeyB9CgoKCgoKICAgICAgdm9pZAogICAgICBzZWVkKCkKICAgICAgewogX01fYi5z
ZWVkKCk7CiBfTV9uID0gMDsKICAgICAgfQoKCgoKCiAgICAgIHZvaWQKICAgICAgc2VlZChyZXN1
bHRfdHlwZSBfX3MpCiAgICAgIHsKIF9NX2Iuc2VlZChfX3MpOwogX01fbiA9IDA7CiAgICAgIH0K
CgoKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1NzZXE+CiAgICAgICAgdm9pZAogICAgICAg
IHNlZWQoX1NzZXEmIF9fcSkKICAgICAgICB7CiAgIF9NX2Iuc2VlZChfX3EpOwogICBfTV9uID0g
MDsKIH0KCgoKCgogICAgICBjb25zdCBfUmFuZG9tTnVtYmVyRW5naW5lJgogICAgICBiYXNlKCkg
Y29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01fYjsgfQoKCgoKICAgICAgc3RhdGljIGNv
bnN0ZXhwciByZXN1bHRfdHlwZQogICAgICBtaW4oKQogICAgICB7IHJldHVybiBfUmFuZG9tTnVt
YmVyRW5naW5lOjptaW4oKTsgfQoKCgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlw
ZQogICAgICBtYXgoKQogICAgICB7IHJldHVybiBfUmFuZG9tTnVtYmVyRW5naW5lOjptYXgoKTsg
fQoKCgoKICAgICAgdm9pZAogICAgICBkaXNjYXJkKHVuc2lnbmVkIGxvbmcgbG9uZyBfX3opCiAg
ICAgIHsKIGZvciAoOyBfX3ogIT0gMFVMTDsgLS1fX3opCiAgICgqdGhpcykoKTsKICAgICAgfQoK
CgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgb3BlcmF0b3IoKSgpOwojIDEwMDUgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5k
b20uaCIgMwogICAgICBmcmllbmQgYm9vbAogICAgICBvcGVyYXRvcj09KGNvbnN0IGRpc2NhcmRf
YmxvY2tfZW5naW5lJiBfX2xocywKICAgY29uc3QgZGlzY2FyZF9ibG9ja19lbmdpbmUmIF9fcmhz
KQogICAgICB7IHJldHVybiBfX2xocy5fTV9iID09IF9fcmhzLl9NX2IgJiYgX19saHMuX01fbiA9
PSBfX3Jocy5fTV9uOyB9CiMgMTAyMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9SYW5kb21OdW1iZXJFbmdpbmUxLCBzaXplX3QgX19wMSwgc2l6ZV90IF9fcjEsCiAg
ICAgICAgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6YmFz
aWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgogb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJl
YW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAgICBjb25zdCBzdGQ6OmRpc2NhcmRfYmxvY2tf
ZW5naW5lPF9SYW5kb21OdW1iZXJFbmdpbmUxLAogICAgIF9fcDEsIF9fcjE+JiBfX3gpOwojIDEw
MzkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvYml0cy9yYW5kb20uaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tTnVtYmVy
RW5naW5lMSwgc2l6ZV90IF9fcDEsIHNpemVfdCBfX3IxLAogICAgICAgIHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBf
VHJhaXRzPiYKIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
IF9faXMsCiAgICAgc3RkOjpkaXNjYXJkX2Jsb2NrX2VuZ2luZTxfUmFuZG9tTnVtYmVyRW5naW5l
MSwKICAgICBfX3AxLCBfX3IxPiYgX194KTsKCiAgICBwcml2YXRlOgogICAgICBfUmFuZG9tTnVt
YmVyRW5naW5lIF9NX2I7CiAgICAgIHNpemVfdCBfTV9uOwogICAgfTsKIyAxMDYyICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFu
ZG9tLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tTnVtYmVyRW5naW5lLCBzaXplX3Qg
X19wLCBzaXplX3QgX19yPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3Qgc3Rk
OjpkaXNjYXJkX2Jsb2NrX2VuZ2luZTxfUmFuZG9tTnVtYmVyRW5naW5lLCBfX3AsCiAgICAgICAg
X19yPiYgX19saHMsCiAgICAgICAgY29uc3Qgc3RkOjpkaXNjYXJkX2Jsb2NrX2VuZ2luZTxfUmFu
ZG9tTnVtYmVyRW5naW5lLCBfX3AsCiAgICAgICAgX19yPiYgX19yaHMpCiAgICB7IHJldHVybiAh
KF9fbGhzID09IF9fcmhzKTsgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21OdW1i
ZXJFbmdpbmUsIHNpemVfdCBfX3csIHR5cGVuYW1lIF9VSW50VHlwZT4KICAgIGNsYXNzIGluZGVw
ZW5kZW50X2JpdHNfZW5naW5lCiAgICB7CiAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc191bnNp
Z25lZDxfVUludFR5cGU+Ojp2YWx1ZSwgInRlbXBsYXRlIGFyZ3VtZW50ICIKICAgICAgInN1YnN0
aXR1dGluZyBfVUludFR5cGUgbm90IGFuIHVuc2lnbmVkIGludGVncmFsIHR5cGUiKTsKICAgICAg
c3RhdGljX2Fzc2VydCgwdSA8IF9fdyAmJiBfX3cgPD0gc3RkOjpudW1lcmljX2xpbWl0czxfVUlu
dFR5cGU+OjpkaWdpdHMsCiAgICAgICJ0ZW1wbGF0ZSBhcmd1bWVudCBzdWJzdGl0dXRpbmcgX193
IG91dCBvZiBib3VuZHMiKTsKCiAgICBwdWJsaWM6CgogICAgICB0eXBlZGVmIF9VSW50VHlwZSBy
ZXN1bHRfdHlwZTsKCgoKCgoKICAgICAgaW5kZXBlbmRlbnRfYml0c19lbmdpbmUoKQogICAgICA6
IF9NX2IoKSB7IH0KCgoKCgoKCiAgICAgIGV4cGxpY2l0CiAgICAgIGluZGVwZW5kZW50X2JpdHNf
ZW5naW5lKGNvbnN0IF9SYW5kb21OdW1iZXJFbmdpbmUmIF9fcm5nKQogICAgICA6IF9NX2IoX19y
bmcpIHsgfQoKCgoKCgoKICAgICAgZXhwbGljaXQKICAgICAgaW5kZXBlbmRlbnRfYml0c19lbmdp
bmUoX1JhbmRvbU51bWJlckVuZ2luZSYmIF9fcm5nKQogICAgICA6IF9NX2Ioc3RkOjptb3ZlKF9f
cm5nKSkgeyB9CgoKCgoKCgogICAgICBleHBsaWNpdAogICAgICBpbmRlcGVuZGVudF9iaXRzX2Vu
Z2luZShyZXN1bHRfdHlwZSBfX3MpCiAgICAgIDogX01fYihfX3MpIHsgfQoKCgoKCgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfU3NlcSwgdHlwZW5hbWUgPSB0eXBlbmFtZQogc3RkOjplbmFibGVf
aWY8IXN0ZDo6aXNfc2FtZTxfU3NlcSwgaW5kZXBlbmRlbnRfYml0c19lbmdpbmU+Ojp2YWx1ZQog
ICAgICAgICAmJiAhc3RkOjppc19zYW1lPF9Tc2VxLCBfUmFuZG9tTnVtYmVyRW5naW5lPjo6dmFs
dWU+CiAgICAgICAgICAgICAgIDo6dHlwZT4KICAgICAgICBleHBsaWNpdAogICAgICAgIGluZGVw
ZW5kZW50X2JpdHNfZW5naW5lKF9Tc2VxJiBfX3EpCiAgICAgICAgOiBfTV9iKF9fcSkKICAgICAg
ICB7IH0KCgoKCgogICAgICB2b2lkCiAgICAgIHNlZWQoKQogICAgICB7IF9NX2Iuc2VlZCgpOyB9
CgoKCgoKICAgICAgdm9pZAogICAgICBzZWVkKHJlc3VsdF90eXBlIF9fcykKICAgICAgeyBfTV9i
LnNlZWQoX19zKTsgfQoKCgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU3NlcT4KICAgICAg
ICB2b2lkCiAgICAgICAgc2VlZChfU3NlcSYgX19xKQogICAgICAgIHsgX01fYi5zZWVkKF9fcSk7
IH0KCgoKCgogICAgICBjb25zdCBfUmFuZG9tTnVtYmVyRW5naW5lJgogICAgICBiYXNlKCkgY29u
c3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01fYjsgfQoKCgoKICAgICAgc3RhdGljIGNvbnN0
ZXhwciByZXN1bHRfdHlwZQogICAgICBtaW4oKQogICAgICB7IHJldHVybiAwVTsgfQoKCgoKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZQogICAgICBtYXgoKQogICAgICB7IHJldHVy
biBfX2RldGFpbDo6X1NoaWZ0PF9VSW50VHlwZSwgX193Pjo6X192YWx1ZSAtIDE7IH0KCgoKCiAg
ICAgIHZvaWQKICAgICAgZGlzY2FyZCh1bnNpZ25lZCBsb25nIGxvbmcgX196KQogICAgICB7CiBm
b3IgKDsgX196ICE9IDBVTEw7IC0tX196KQogICAoKnRoaXMpKCk7CiAgICAgIH0KCgoKCiAgICAg
IHJlc3VsdF90eXBlCiAgICAgIG9wZXJhdG9yKCkoKTsKIyAxMjE1ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMK
ICAgICAgZnJpZW5kIGJvb2wKICAgICAgb3BlcmF0b3I9PShjb25zdCBpbmRlcGVuZGVudF9iaXRz
X2VuZ2luZSYgX19saHMsCiAgIGNvbnN0IGluZGVwZW5kZW50X2JpdHNfZW5naW5lJiBfX3JocykK
ICAgICAgeyByZXR1cm4gX19saHMuX01fYiA9PSBfX3Jocy5fTV9iOyB9CiMgMTIzMiAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3Jh
bmRvbS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKIG9wZXJhdG9y
Pj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAgc3RkOjpp
bmRlcGVuZGVudF9iaXRzX2VuZ2luZTxfUmFuZG9tTnVtYmVyRW5naW5lLAogICAgIF9fdywgX1VJ
bnRUeXBlPiYgX194KQogewogICBfX2lzID4+IF9feC5fTV9iOwogICByZXR1cm4gX19pczsKIH0K
CiAgICBwcml2YXRlOgogICAgICBfUmFuZG9tTnVtYmVyRW5naW5lIF9NX2I7CiAgICB9OwojIDEy
NTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21OdW1iZXJFbmdp
bmUsIHNpemVfdCBfX3csIHR5cGVuYW1lIF9VSW50VHlwZT4KICAgIGlubGluZSBib29sCiAgICBv
cGVyYXRvciE9KGNvbnN0IHN0ZDo6aW5kZXBlbmRlbnRfYml0c19lbmdpbmU8X1JhbmRvbU51bWJl
ckVuZ2luZSwgX193LAogICAgICAgIF9VSW50VHlwZT4mIF9fbGhzLAogICAgICAgIGNvbnN0IHN0
ZDo6aW5kZXBlbmRlbnRfYml0c19lbmdpbmU8X1JhbmRvbU51bWJlckVuZ2luZSwgX193LAogICAg
ICAgIF9VSW50VHlwZT4mIF9fcmhzKQogICAgeyByZXR1cm4gIShfX2xocyA9PSBfX3Jocyk7IH0K
IyAxMjc2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tTnVtYmVy
RW5naW5lLCBzaXplX3QgX193LCB0eXBlbmFtZSBfVUludFR5cGUsCiAgICB0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJh
aXRzPiYKICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
IF9fb3MsCiAgICAgICAgY29uc3Qgc3RkOjppbmRlcGVuZGVudF9iaXRzX2VuZ2luZTxfUmFuZG9t
TnVtYmVyRW5naW5lLAogICAgICAgIF9fdywgX1VJbnRUeXBlPiYgX194KQogICAgewogICAgICBf
X29zIDw8IF9feC5iYXNlKCk7CiAgICAgIHJldHVybiBfX29zOwogICAgfQoKCgoKCgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfUmFuZG9tTnVtYmVyRW5naW5lLCBzaXplX3QgX19rPgogICAgY2xhc3Mg
c2h1ZmZsZV9vcmRlcl9lbmdpbmUKICAgIHsKICAgICAgc3RhdGljX2Fzc2VydCgxdSA8PSBfX2ss
ICJ0ZW1wbGF0ZSBhcmd1bWVudCBzdWJzdGl0dXRpbmcgIgogICAgICAiX19rIG91dCBvZiBib3Vu
ZCIpOwoKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1JhbmRvbU51bWJlckVu
Z2luZTo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7CgogICAgICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCB0YWJsZV9zaXplID0gX19rOwoKCgoKCgogICAgICBzaHVmZmxlX29yZGVyX2VuZ2luZSgp
CiAgICAgIDogX01fYigpCiAgICAgIHsgX01faW5pdGlhbGl6ZSgpOyB9CgoKCgoKCgogICAgICBl
eHBsaWNpdAogICAgICBzaHVmZmxlX29yZGVyX2VuZ2luZShjb25zdCBfUmFuZG9tTnVtYmVyRW5n
aW5lJiBfX3JuZykKICAgICAgOiBfTV9iKF9fcm5nKQogICAgICB7IF9NX2luaXRpYWxpemUoKTsg
fQoKCgoKCgoKICAgICAgZXhwbGljaXQKICAgICAgc2h1ZmZsZV9vcmRlcl9lbmdpbmUoX1JhbmRv
bU51bWJlckVuZ2luZSYmIF9fcm5nKQogICAgICA6IF9NX2Ioc3RkOjptb3ZlKF9fcm5nKSkKICAg
ICAgeyBfTV9pbml0aWFsaXplKCk7IH0KCgoKCgoKCiAgICAgIGV4cGxpY2l0CiAgICAgIHNodWZm
bGVfb3JkZXJfZW5naW5lKHJlc3VsdF90eXBlIF9fcykKICAgICAgOiBfTV9iKF9fcykKICAgICAg
eyBfTV9pbml0aWFsaXplKCk7IH0KCgoKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1NzZXEs
IHR5cGVuYW1lID0gdHlwZW5hbWUKIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8X1NzZXEs
IHNodWZmbGVfb3JkZXJfZW5naW5lPjo6dmFsdWUKICAgICAgICAgJiYgIXN0ZDo6aXNfc2FtZTxf
U3NlcSwgX1JhbmRvbU51bWJlckVuZ2luZT46OnZhbHVlPgogICAgICAgIDo6dHlwZT4KICAgICAg
ICBleHBsaWNpdAogICAgICAgIHNodWZmbGVfb3JkZXJfZW5naW5lKF9Tc2VxJiBfX3EpCiAgICAg
ICAgOiBfTV9iKF9fcSkKICAgICAgICB7IF9NX2luaXRpYWxpemUoKTsgfQoKCgoKCiAgICAgIHZv
aWQKICAgICAgc2VlZCgpCiAgICAgIHsKIF9NX2Iuc2VlZCgpOwogX01faW5pdGlhbGl6ZSgpOwog
ICAgICB9CgoKCgoKICAgICAgdm9pZAogICAgICBzZWVkKHJlc3VsdF90eXBlIF9fcykKICAgICAg
ewogX01fYi5zZWVkKF9fcyk7CiBfTV9pbml0aWFsaXplKCk7CiAgICAgIH0KCgoKCgoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1NzZXE+CiAgICAgICAgdm9pZAogICAgICAgIHNlZWQoX1NzZXEm
IF9fcSkKICAgICAgICB7CiAgIF9NX2Iuc2VlZChfX3EpOwogICBfTV9pbml0aWFsaXplKCk7CiB9
CgoKCgogICAgICBjb25zdCBfUmFuZG9tTnVtYmVyRW5naW5lJgogICAgICBiYXNlKCkgY29uc3Qg
bm9leGNlcHQKICAgICAgeyByZXR1cm4gX01fYjsgfQoKCgoKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciByZXN1bHRfdHlwZQogICAgICBtaW4oKQogICAgICB7IHJldHVybiBfUmFuZG9tTnVtYmVyRW5n
aW5lOjptaW4oKTsgfQoKCgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZQogICAg
ICBtYXgoKQogICAgICB7IHJldHVybiBfUmFuZG9tTnVtYmVyRW5naW5lOjptYXgoKTsgfQoKCgoK
ICAgICAgdm9pZAogICAgICBkaXNjYXJkKHVuc2lnbmVkIGxvbmcgbG9uZyBfX3opCiAgICAgIHsK
IGZvciAoOyBfX3ogIT0gMFVMTDsgLS1fX3opCiAgICgqdGhpcykoKTsKICAgICAgfQoKCgoKICAg
ICAgcmVzdWx0X3R5cGUKICAgICAgb3BlcmF0b3IoKSgpOwojIDE0NDQgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIg
MwogICAgICBmcmllbmQgYm9vbAogICAgICBvcGVyYXRvcj09KGNvbnN0IHNodWZmbGVfb3JkZXJf
ZW5naW5lJiBfX2xocywKICAgY29uc3Qgc2h1ZmZsZV9vcmRlcl9lbmdpbmUmIF9fcmhzKQogICAg
ICB7IHJldHVybiAoX19saHMuX01fYiA9PSBfX3Jocy5fTV9iCiAgJiYgc3RkOjplcXVhbChfX2xo
cy5fTV92LCBfX2xocy5fTV92ICsgX19rLCBfX3Jocy5fTV92KQogICYmIF9fbGhzLl9NX3kgPT0g
X19yaHMuX01feSk7IH0KIyAxNDYyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMKICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1JhbmRvbU51bWJlckVuZ2luZTEsIHNpemVfdCBfX2sxLAogICAgICAgIHR5cGVuYW1l
IF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08X0No
YXJULCBfVHJhaXRzPiYKIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1Ry
YWl0cz4mIF9fb3MsCiAgICAgY29uc3Qgc3RkOjpzaHVmZmxlX29yZGVyX2VuZ2luZTxfUmFuZG9t
TnVtYmVyRW5naW5lMSwKICAgICBfX2sxPiYgX194KTsKIyAxNDgwICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbU51bWJlckVuZ2luZTEsIHNpemVfdCBfX2sx
LAogICAgICAgIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KIGZyaWVuZCBzdGQ6
OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19p
c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAgc3RkOjpzaHVmZmxlX29yZGVyX2Vu
Z2luZTxfUmFuZG9tTnVtYmVyRW5naW5lMSwgX19rMT4mIF9feCk7CgogICAgcHJpdmF0ZToKICAg
ICAgdm9pZCBfTV9pbml0aWFsaXplKCkKICAgICAgewogZm9yIChzaXplX3QgX19pID0gMDsgX19p
IDwgX19rOyArK19faSkKICAgX01fdltfX2ldID0gX01fYigpOwogX01feSA9IF9NX2IoKTsKICAg
ICAgfQoKICAgICAgX1JhbmRvbU51bWJlckVuZ2luZSBfTV9iOwogICAgICByZXN1bHRfdHlwZSBf
TV92W19fa107CiAgICAgIHJlc3VsdF90eXBlIF9NX3k7CiAgICB9OwojIDE1MTAgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5k
b20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21OdW1iZXJFbmdpbmUsIHNpemVfdCBf
X2s+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCBzdGQ6OnNodWZmbGVfb3Jk
ZXJfZW5naW5lPF9SYW5kb21OdW1iZXJFbmdpbmUsCiAgICAgICAgX19rPiYgX19saHMsCiAgICAg
ICAgY29uc3Qgc3RkOjpzaHVmZmxlX29yZGVyX2VuZ2luZTxfUmFuZG9tTnVtYmVyRW5naW5lLAog
ICAgICAgIF9faz4mIF9fcmhzKQogICAgeyByZXR1cm4gIShfX2xocyA9PSBfX3Jocyk7IH0KCgoK
CgogIHR5cGVkZWYgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8dWludF9mYXN0MzJfdCwgMTY4
MDdVTCwgMFVMLCAyMTQ3NDgzNjQ3VUw+CiAgbWluc3RkX3JhbmQwOwoKCgoKICB0eXBlZGVmIGxp
bmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPHVpbnRfZmFzdDMyX3QsIDQ4MjcxVUwsIDBVTCwgMjE0
NzQ4MzY0N1VMPgogIG1pbnN0ZF9yYW5kOwojIDE1MzkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogIHR5cGVk
ZWYgbWVyc2VubmVfdHdpc3Rlcl9lbmdpbmU8CiAgICB1aW50X2Zhc3QzMl90LAogICAgMzIsIDYy
NCwgMzk3LCAzMSwKICAgIDB4OTkwOGIwZGZVTCwgMTEsCiAgICAweGZmZmZmZmZmVUwsIDcsCiAg
ICAweDlkMmM1NjgwVUwsIDE1LAogICAgMHhlZmM2MDAwMFVMLCAxOCwgMTgxMjQzMzI1M1VMPiBt
dDE5OTM3OwoKCgoKICB0eXBlZGVmIG1lcnNlbm5lX3R3aXN0ZXJfZW5naW5lPAogICAgdWludF9m
YXN0NjRfdCwKICAgIDY0LCAzMTIsIDE1NiwgMzEsCiAgICAweGI1MDI2ZjVhYTk2NjE5ZTlVTEws
IDI5LAogICAgMHg1NTU1NTU1NTU1NTU1NTU1VUxMLCAxNywKICAgIDB4NzFkNjdmZmZlZGE2MDAw
MFVMTCwgMzcsCiAgICAweGZmZjdlZWUwMDAwMDAwMDBVTEwsIDQzLAogICAgNjM2NDEzNjIyMzg0
Njc5MzAwNVVMTD4gbXQxOTkzN182NDsKCiAgdHlwZWRlZiBzdWJ0cmFjdF93aXRoX2NhcnJ5X2Vu
Z2luZTx1aW50X2Zhc3QzMl90LCAyNCwgMTAsIDI0PgogICAgcmFubHV4MjRfYmFzZTsKCiAgdHlw
ZWRlZiBzdWJ0cmFjdF93aXRoX2NhcnJ5X2VuZ2luZTx1aW50X2Zhc3Q2NF90LCA0OCwgNSwgMTI+
CiAgICByYW5sdXg0OF9iYXNlOwoKICB0eXBlZGVmIGRpc2NhcmRfYmxvY2tfZW5naW5lPHJhbmx1
eDI0X2Jhc2UsIDIyMywgMjM+IHJhbmx1eDI0OwoKICB0eXBlZGVmIGRpc2NhcmRfYmxvY2tfZW5n
aW5lPHJhbmx1eDQ4X2Jhc2UsIDM4OSwgMTE+IHJhbmx1eDQ4OwoKICB0eXBlZGVmIHNodWZmbGVf
b3JkZXJfZW5naW5lPG1pbnN0ZF9yYW5kMCwgMjU2PiBrbnV0aF9iOwoKICB0eXBlZGVmIG1pbnN0
ZF9yYW5kMCBkZWZhdWx0X3JhbmRvbV9lbmdpbmU7CgoKCgoKICBjbGFzcyByYW5kb21fZGV2aWNl
CiAgewogIHB1YmxpYzoKCiAgICB0eXBlZGVmIHVuc2lnbmVkIGludCByZXN1bHRfdHlwZTsKCgoK
CgogICAgZXhwbGljaXQKICAgIHJhbmRvbV9kZXZpY2UoY29uc3Qgc3RkOjpzdHJpbmcmIF9fdG9r
ZW4gPSAiZGVmYXVsdCIpCiAgICB7CiAgICAgIF9NX2luaXQoX190b2tlbik7CiAgICB9CgogICAg
fnJhbmRvbV9kZXZpY2UoKQogICAgeyBfTV9maW5pKCk7IH0KIyAxNjA2ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgi
IDMKICAgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUKICAgIG1pbigpCiAgICB7IHJldHVy
biBzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWluKCk7IH0KCiAgICBzdGF0aWMg
Y29uc3RleHByIHJlc3VsdF90eXBlCiAgICBtYXgoKQogICAgeyByZXR1cm4gc3RkOjpudW1lcmlj
X2xpbWl0czxyZXN1bHRfdHlwZT46Om1heCgpOyB9CgogICAgZG91YmxlCiAgICBlbnRyb3B5KCkg
Y29uc3Qgbm9leGNlcHQKICAgIHsgcmV0dXJuIDAuMDsgfQoKICAgIHJlc3VsdF90eXBlCiAgICBv
cGVyYXRvcigpKCkKICAgIHsKCiAgICAgIHJldHVybiB0aGlzLT5fTV9nZXR2YWwoKTsKCgoKICAg
IH0KCgogICAgcmFuZG9tX2RldmljZShjb25zdCByYW5kb21fZGV2aWNlJikgPSBkZWxldGU7CiAg
ICB2b2lkIG9wZXJhdG9yPShjb25zdCByYW5kb21fZGV2aWNlJikgPSBkZWxldGU7CgogIHByaXZh
dGU6CgogICAgdm9pZCBfTV9pbml0KGNvbnN0IHN0ZDo6c3RyaW5nJiBfX3Rva2VuKTsKICAgIHZv
aWQgX01faW5pdF9wcmV0cjEoY29uc3Qgc3RkOjpzdHJpbmcmIF9fdG9rZW4pOwogICAgdm9pZCBf
TV9maW5pKCk7CgogICAgcmVzdWx0X3R5cGUgX01fZ2V0dmFsKCk7CiAgICByZXN1bHRfdHlwZSBf
TV9nZXR2YWxfcHJldHIxKCk7CgogICAgdW5pb24KICAgIHsKICAgICAgdm9pZCogX01fZmlsZTsK
ICAgICAgbXQxOTkzNyBfTV9tdDsKICAgIH07CiAgfTsKIyAxNjY3ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlwZSA9IGludD4KICAgIGNsYXNzIHVuaWZvcm1faW50
X2Rpc3RyaWJ1dGlvbgogICAgewogICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8
X0ludFR5cGU+Ojp2YWx1ZSwKICAgICAgInRlbXBsYXRlIGFyZ3VtZW50IG5vdCBhbiBpbnRlZ3Jh
bCB0eXBlIik7CgogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBfSW50VHlwZSByZXN1bHRfdHlw
ZTsKCiAgICAgIHN0cnVjdCBwYXJhbV90eXBlCiAgICAgIHsKIHR5cGVkZWYgdW5pZm9ybV9pbnRf
ZGlzdHJpYnV0aW9uPF9JbnRUeXBlPiBkaXN0cmlidXRpb25fdHlwZTsKCiBleHBsaWNpdAogcGFy
YW1fdHlwZShfSW50VHlwZSBfX2EgPSAwLAogICAgIF9JbnRUeXBlIF9fYiA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8X0ludFR5cGU+OjptYXgoKSkKIDogX01fYShfX2EpLCBfTV9iKF9fYikKIHsKICAg
OwogfQoKIHJlc3VsdF90eXBlCiBhKCkgY29uc3QKIHsgcmV0dXJuIF9NX2E7IH0KCiByZXN1bHRf
dHlwZQogYigpIGNvbnN0CiB7IHJldHVybiBfTV9iOyB9CgogZnJpZW5kIGJvb2wKIG9wZXJhdG9y
PT0oY29uc3QgcGFyYW1fdHlwZSYgX19wMSwgY29uc3QgcGFyYW1fdHlwZSYgX19wMikKIHsgcmV0
dXJuIF9fcDEuX01fYSA9PSBfX3AyLl9NX2EgJiYgX19wMS5fTV9iID09IF9fcDIuX01fYjsgfQoK
ICAgICAgcHJpdmF0ZToKIF9JbnRUeXBlIF9NX2E7CiBfSW50VHlwZSBfTV9iOwogICAgICB9OwoK
ICAgIHB1YmxpYzoKCgoKICAgICAgZXhwbGljaXQKICAgICAgdW5pZm9ybV9pbnRfZGlzdHJpYnV0
aW9uKF9JbnRUeXBlIF9fYSA9IDAsCiAgICAgIF9JbnRUeXBlIF9fYiA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8X0ludFR5cGU+OjptYXgoKSkKICAgICAgOiBfTV9wYXJhbShfX2EsIF9fYikKICAgICAg
eyB9CgogICAgICBleHBsaWNpdAogICAgICB1bmlmb3JtX2ludF9kaXN0cmlidXRpb24oY29uc3Qg
cGFyYW1fdHlwZSYgX19wKQogICAgICA6IF9NX3BhcmFtKF9fcCkKICAgICAgeyB9CgoKCgoKCiAg
ICAgIHZvaWQKICAgICAgcmVzZXQoKSB7IH0KCiAgICAgIHJlc3VsdF90eXBlCiAgICAgIGEoKSBj
b25zdAogICAgICB7IHJldHVybiBfTV9wYXJhbS5hKCk7IH0KCiAgICAgIHJlc3VsdF90eXBlCiAg
ICAgIGIoKSBjb25zdAogICAgICB7IHJldHVybiBfTV9wYXJhbS5iKCk7IH0KCgoKCiAgICAgIHBh
cmFtX3R5cGUKICAgICAgcGFyYW0oKSBjb25zdAogICAgICB7IHJldHVybiBfTV9wYXJhbTsgfQoK
CgoKCiAgICAgIHZvaWQKICAgICAgcGFyYW0oY29uc3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAg
ICAgeyBfTV9wYXJhbSA9IF9fcGFyYW07IH0KCgoKCiAgICAgIHJlc3VsdF90eXBlCiAgICAgIG1p
bigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmEoKTsgfQoKCgoKICAgICAgcmVzdWx0X3R5
cGUKICAgICAgbWF4KCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+YigpOyB9CgoKCgogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHJlc3Vs
dF90eXBlCiBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3Vybmcp
CiAgICAgICAgeyByZXR1cm4gdGhpcy0+b3BlcmF0b3IoKShfX3VybmcsIF9NX3BhcmFtKTsgfQoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiBy
ZXN1bHRfdHlwZQogb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191
cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCk7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVy
R2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0Zvcndh
cmRJdGVyYXRvciBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJu
ZykKIHsgdGhpcy0+X19nZW5lcmF0ZShfX2YsIF9fdCwgX191cm5nLCBfTV9wYXJhbSk7IH0KCiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUg
X1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKF9Gb3J3YXJk
SXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51
bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKIHsgdGhp
cy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcsIF9fcCk7IH0KCiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5l
cmF0ZShyZXN1bHRfdHlwZSogX19mLCByZXN1bHRfdHlwZSogX190LAogICAgIF9Vbmlmb3JtUmFu
ZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQog
eyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9fdXJuZywgX19wKTsgfQoKCgoKCiAg
ICAgIGZyaWVuZCBib29sCiAgICAgIG9wZXJhdG9yPT0oY29uc3QgdW5pZm9ybV9pbnRfZGlzdHJp
YnV0aW9uJiBfX2QxLAogICBjb25zdCB1bmlmb3JtX2ludF9kaXN0cmlidXRpb24mIF9fZDIpCiAg
ICAgIHsgcmV0dXJuIF9fZDEuX01fcGFyYW0gPT0gX19kMi5fTV9wYXJhbTsgfQoKICAgIHByaXZh
dGU6CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAgdHlw
ZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlX2lt
cGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICBfVW5pZm9y
bVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICBjb25zdCBwYXJhbV90eXBlJiBfX3Ap
OwoKICAgICAgcGFyYW1fdHlwZSBfTV9wYXJhbTsKICAgIH07CgoKCgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfSW50VHlwZT4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHN0ZDo6
dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPiYgX19kMSwKICAgICAgICBjb25zdCBz
dGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4mIF9fZDIpCiAgICB7IHJldHVy
biAhKF9fZDEgPT0gX19kMik7IH0KIyAxODQxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSW50VHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAg
c3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KHN0ZDo6
YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiwKICAgICAgICBjb25zdCBzdGQ6OnVuaWZv
cm1faW50X2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4mKTsKIyAxODU1ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVy
YXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiwKICAgICAgICBzdGQ6
OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4mKTsKIyAxODY4ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9t
LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUgPSBkb3VibGU+CiAgICBjbGFzcyB1
bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uCiAgICB7CiAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19mbG9hdGluZ19wb2ludDxfUmVhbFR5cGU+Ojp2YWx1ZSwKICAgICAgInRlbXBsYXRlIGFyZ3Vt
ZW50IG5vdCBhIGZsb2F0aW5nIHBvaW50IHR5cGUiKTsKCiAgICBwdWJsaWM6CgogICAgICB0eXBl
ZGVmIF9SZWFsVHlwZSByZXN1bHRfdHlwZTsKCiAgICAgIHN0cnVjdCBwYXJhbV90eXBlCiAgICAg
IHsKIHR5cGVkZWYgdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+IGRpc3RyaWJ1
dGlvbl90eXBlOwoKIGV4cGxpY2l0CiBwYXJhbV90eXBlKF9SZWFsVHlwZSBfX2EgPSBfUmVhbFR5
cGUoMCksCiAgICAgX1JlYWxUeXBlIF9fYiA9IF9SZWFsVHlwZSgxKSkKIDogX01fYShfX2EpLCBf
TV9iKF9fYikKIHsKICAgOwogfQoKIHJlc3VsdF90eXBlCiBhKCkgY29uc3QKIHsgcmV0dXJuIF9N
X2E7IH0KCiByZXN1bHRfdHlwZQogYigpIGNvbnN0CiB7IHJldHVybiBfTV9iOyB9CgogZnJpZW5k
IGJvb2wKIG9wZXJhdG9yPT0oY29uc3QgcGFyYW1fdHlwZSYgX19wMSwgY29uc3QgcGFyYW1fdHlw
ZSYgX19wMikKIHsgcmV0dXJuIF9fcDEuX01fYSA9PSBfX3AyLl9NX2EgJiYgX19wMS5fTV9iID09
IF9fcDIuX01fYjsgfQoKICAgICAgcHJpdmF0ZToKIF9SZWFsVHlwZSBfTV9hOwogX1JlYWxUeXBl
IF9NX2I7CiAgICAgIH07CgogICAgcHVibGljOgoKCgoKCgogICAgICBleHBsaWNpdAogICAgICB1
bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uKF9SZWFsVHlwZSBfX2EgPSBfUmVhbFR5cGUoMCksCiAg
ICBfUmVhbFR5cGUgX19iID0gX1JlYWxUeXBlKDEpKQogICAgICA6IF9NX3BhcmFtKF9fYSwgX19i
KQogICAgICB7IH0KCiAgICAgIGV4cGxpY2l0CiAgICAgIHVuaWZvcm1fcmVhbF9kaXN0cmlidXRp
b24oY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAgICA6IF9NX3BhcmFtKF9fcCkKICAgICAgeyB9
CgoKCgoKCiAgICAgIHZvaWQKICAgICAgcmVzZXQoKSB7IH0KCiAgICAgIHJlc3VsdF90eXBlCiAg
ICAgIGEoKSBjb25zdAogICAgICB7IHJldHVybiBfTV9wYXJhbS5hKCk7IH0KCiAgICAgIHJlc3Vs
dF90eXBlCiAgICAgIGIoKSBjb25zdAogICAgICB7IHJldHVybiBfTV9wYXJhbS5iKCk7IH0KCgoK
CiAgICAgIHBhcmFtX3R5cGUKICAgICAgcGFyYW0oKSBjb25zdAogICAgICB7IHJldHVybiBfTV9w
YXJhbTsgfQoKCgoKCiAgICAgIHZvaWQKICAgICAgcGFyYW0oY29uc3QgcGFyYW1fdHlwZSYgX19w
YXJhbSkKICAgICAgeyBfTV9wYXJhbSA9IF9fcGFyYW07IH0KCgoKCiAgICAgIHJlc3VsdF90eXBl
CiAgICAgIG1pbigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmEoKTsgfQoKCgoKICAgICAg
cmVzdWx0X3R5cGUKICAgICAgbWF4KCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+YigpOyB9
CgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRv
cj4KIHJlc3VsdF90eXBlCiBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9y
JiBfX3VybmcpCiAgICAgICAgeyByZXR1cm4gdGhpcy0+b3BlcmF0b3IoKShfX3VybmcsIF9NX3Bh
cmFtKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5l
cmF0b3I+CiByZXN1bHRfdHlwZQogb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVy
YXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKIHsKICAgX19kZXRhaWw6
Ol9BZGFwdG9yPF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCByZXN1bHRfdHlwZT4KICAg
ICBfX2F1cm5nKF9fdXJuZyk7CiAgIHJldHVybiAoX19hdXJuZygpICogKF9fcC5iKCkgLSBfX3Au
YSgpKSkgKyBfX3AuYSgpOwogfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVy
YXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZv
aWQKIF9fZ2VuZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190
LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHRoaXMtPl9f
Z2VuZXJhdGUoX19mLCBfX3QsIF9fdXJuZywgX01fcGFyYW0pOyB9CgogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9t
TnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZiwg
X0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3Im
IF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7IHRoaXMtPl9fZ2VuZXJhdGVf
aW1wbChfX2YsIF9fdCwgX191cm5nLCBfX3ApOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUocmVzdWx0X3R5
cGUqIF9fZiwgcmVzdWx0X3R5cGUqIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVy
YXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKIHsgdGhpcy0+X19nZW5l
cmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcsIF9fcCk7IH0KCgoKCgogICAgICBmcmllbmQgYm9v
bAogICAgICBvcGVyYXRvcj09KGNvbnN0IHVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24mIF9fZDEs
CiAgIGNvbnN0IHVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24mIF9fZDIpCiAgICAgIHsgcmV0dXJu
IF9fZDEuX01fcGFyYW0gPT0gX19kMi5fTV9wYXJhbTsgfQoKICAgIHByaXZhdGU6CiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZv
cm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlX2ltcGwoX0ZvcndhcmRJ
dGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICBfVW5pZm9ybVJhbmRvbU51bWJl
ckdlbmVyYXRvciYgX191cm5nLAogICBjb25zdCBwYXJhbV90eXBlJiBfX3ApOwoKICAgICAgcGFy
YW1fdHlwZSBfTV9wYXJhbTsKICAgIH07CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlw
ZT4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHN0ZDo6dW5pZm9ybV9yZWFs
X2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4mIF9fZDEsCiAgICAgICAgY29uc3Qgc3RkOjp1bmlmb3Jt
X3JlYWxfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPiYgX19kMikKICAgIHsgcmV0dXJuICEoX19kMSA9
PSBfX2QyKTsgfQojIDIwNTAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
ZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNp
Y19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiwKICAgICAgICBjb25zdCBzdGQ6OnVuaWZvcm1fcmVhbF9k
aXN0cmlidXRpb248X1JlYWxUeXBlPiYpOwojIDIwNjQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogIHRlbXBs
YXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
PgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+
KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiwKICAgICAgICBzdGQ6OnVuaWZv
cm1fcmVhbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYpOwojIDIwODYgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIg
MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSA9IGRvdWJsZT4KICAgIGNsYXNzIG5vcm1h
bF9kaXN0cmlidXRpb24KICAgIHsKICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Zsb2F0aW5n
X3BvaW50PF9SZWFsVHlwZT46OnZhbHVlLAogICAgICAidGVtcGxhdGUgYXJndW1lbnQgbm90IGEg
ZmxvYXRpbmcgcG9pbnQgdHlwZSIpOwoKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgX1JlYWxU
eXBlIHJlc3VsdF90eXBlOwoKICAgICAgc3RydWN0IHBhcmFtX3R5cGUKICAgICAgewogdHlwZWRl
ZiBub3JtYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4gZGlzdHJpYnV0aW9uX3R5cGU7CgogZXhw
bGljaXQKIHBhcmFtX3R5cGUoX1JlYWxUeXBlIF9fbWVhbiA9IF9SZWFsVHlwZSgwKSwKICAgICBf
UmVhbFR5cGUgX19zdGRkZXYgPSBfUmVhbFR5cGUoMSkpCiA6IF9NX21lYW4oX19tZWFuKSwgX01f
c3RkZGV2KF9fc3RkZGV2KQogewogICA7CiB9CgogX1JlYWxUeXBlCiBtZWFuKCkgY29uc3QKIHsg
cmV0dXJuIF9NX21lYW47IH0KCiBfUmVhbFR5cGUKIHN0ZGRldigpIGNvbnN0CiB7IHJldHVybiBf
TV9zdGRkZXY7IH0KCiBmcmllbmQgYm9vbAogb3BlcmF0b3I9PShjb25zdCBwYXJhbV90eXBlJiBf
X3AxLCBjb25zdCBwYXJhbV90eXBlJiBfX3AyKQogeyByZXR1cm4gKF9fcDEuX01fbWVhbiA9PSBf
X3AyLl9NX21lYW4KICAgICYmIF9fcDEuX01fc3RkZGV2ID09IF9fcDIuX01fc3RkZGV2KTsgfQoK
ICAgICAgcHJpdmF0ZToKIF9SZWFsVHlwZSBfTV9tZWFuOwogX1JlYWxUeXBlIF9NX3N0ZGRldjsK
ICAgICAgfTsKCiAgICBwdWJsaWM6CgoKCgogICAgICBleHBsaWNpdAogICAgICBub3JtYWxfZGlz
dHJpYnV0aW9uKHJlc3VsdF90eXBlIF9fbWVhbiA9IHJlc3VsdF90eXBlKDApLAogICAgIHJlc3Vs
dF90eXBlIF9fc3RkZGV2ID0gcmVzdWx0X3R5cGUoMSkpCiAgICAgIDogX01fcGFyYW0oX19tZWFu
LCBfX3N0ZGRldiksIF9NX3NhdmVkX2F2YWlsYWJsZShmYWxzZSkKICAgICAgeyB9CgogICAgICBl
eHBsaWNpdAogICAgICBub3JtYWxfZGlzdHJpYnV0aW9uKGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkK
ICAgICAgOiBfTV9wYXJhbShfX3ApLCBfTV9zYXZlZF9hdmFpbGFibGUoZmFsc2UpCiAgICAgIHsg
fQoKCgoKICAgICAgdm9pZAogICAgICByZXNldCgpCiAgICAgIHsgX01fc2F2ZWRfYXZhaWxhYmxl
ID0gZmFsc2U7IH0KCgoKCiAgICAgIF9SZWFsVHlwZQogICAgICBtZWFuKCkgY29uc3QKICAgICAg
eyByZXR1cm4gX01fcGFyYW0ubWVhbigpOyB9CgoKCgogICAgICBfUmVhbFR5cGUKICAgICAgc3Rk
ZGV2KCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW0uc3RkZGV2KCk7IH0KCgoKCiAgICAg
IHBhcmFtX3R5cGUKICAgICAgcGFyYW0oKSBjb25zdAogICAgICB7IHJldHVybiBfTV9wYXJhbTsg
fQoKCgoKCiAgICAgIHZvaWQKICAgICAgcGFyYW0oY29uc3QgcGFyYW1fdHlwZSYgX19wYXJhbSkK
ICAgICAgeyBfTV9wYXJhbSA9IF9fcGFyYW07IH0KCgoKCiAgICAgIHJlc3VsdF90eXBlCiAgICAg
IG1pbigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5
cGU+Ojpsb3dlc3QoKTsgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgbWF4KCkgY29uc3QK
ICAgICAgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46Om1heCgpOyB9
CgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRv
cj4KIHJlc3VsdF90eXBlCiBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9y
JiBfX3VybmcpCiB7IHJldHVybiB0aGlzLT5vcGVyYXRvcigpKF9fdXJuZywgX01fcGFyYW0pOyB9
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4K
IHJlc3VsdF90eXBlCiBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBf
X3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKTsKCiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1i
ZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9y
d2FyZEl0ZXJhdG9yIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191
cm5nKQogeyB0aGlzLT5fX2dlbmVyYXRlKF9fZiwgX190LCBfX3VybmcsIF9NX3BhcmFtKTsgfQoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFt
ZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUoX0Zvcndh
cmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3JtUmFuZG9t
TnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogeyB0
aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9fdXJuZywgX19wKTsgfQoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dl
bmVyYXRlKHJlc3VsdF90eXBlKiBfX2YsIHJlc3VsdF90eXBlKiBfX3QsCiAgICAgX1VuaWZvcm1S
YW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3Ap
CiB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBfX3ApOyB9CgoKCgoK
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZTE+CiBmcmllbmQgYm9vbAogICAgICAg
IG9wZXJhdG9yPT0oY29uc3Qgc3RkOjpub3JtYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZTE+JiBf
X2QxLAogICAgIGNvbnN0IHN0ZDo6bm9ybWFsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGUxPiYgX19k
Mik7CiMgMjI0NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFs
VHlwZTEsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJh
c2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3Ry
ZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAgICAgY29uc3Qgc3RkOjpub3JtYWxfZGlzdHJp
YnV0aW9uPF9SZWFsVHlwZTE+JiBfX3gpOwojIDIyNjIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUxLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHM+CiBmcmllbmQgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiBvcGVy
YXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgIHN0
ZDo6bm9ybWFsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGUxPiYgX194KTsKCiAgICBwcml2YXRlOgog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1l
IF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZV9pbXBsKF9G
b3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZvcm1SYW5k
b21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKTsKCiAg
ICAgIHBhcmFtX3R5cGUgX01fcGFyYW07CiAgICAgIHJlc3VsdF90eXBlIF9NX3NhdmVkOwogICAg
ICBib29sIF9NX3NhdmVkX2F2YWlsYWJsZTsKICAgIH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9SZWFsVHlwZT4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHN0ZDo6bm9y
bWFsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX2QxLAogICAgICAgIGNvbnN0IHN0ZDo6bm9y
bWFsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX2QyKQogICAgeyByZXR1cm4gIShfX2QxID09
IF9fZDIpOyB9CiMgMjI5OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jl
YWxUeXBlID0gZG91YmxlPgogICAgY2xhc3MgbG9nbm9ybWFsX2Rpc3RyaWJ1dGlvbgogICAgewog
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8X1JlYWxUeXBlPjo6dmFs
dWUsCiAgICAgICJ0ZW1wbGF0ZSBhcmd1bWVudCBub3QgYSBmbG9hdGluZyBwb2ludCB0eXBlIik7
CgogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBfUmVhbFR5cGUgcmVzdWx0X3R5cGU7CgogICAg
ICBzdHJ1Y3QgcGFyYW1fdHlwZQogICAgICB7CiB0eXBlZGVmIGxvZ25vcm1hbF9kaXN0cmlidXRp
b248X1JlYWxUeXBlPiBkaXN0cmlidXRpb25fdHlwZTsKCiBleHBsaWNpdAogcGFyYW1fdHlwZShf
UmVhbFR5cGUgX19tID0gX1JlYWxUeXBlKDApLAogICAgIF9SZWFsVHlwZSBfX3MgPSBfUmVhbFR5
cGUoMSkpCiA6IF9NX20oX19tKSwgX01fcyhfX3MpCiB7IH0KCiBfUmVhbFR5cGUKIG0oKSBjb25z
dAogeyByZXR1cm4gX01fbTsgfQoKIF9SZWFsVHlwZQogcygpIGNvbnN0CiB7IHJldHVybiBfTV9z
OyB9CgogZnJpZW5kIGJvb2wKIG9wZXJhdG9yPT0oY29uc3QgcGFyYW1fdHlwZSYgX19wMSwgY29u
c3QgcGFyYW1fdHlwZSYgX19wMikKIHsgcmV0dXJuIF9fcDEuX01fbSA9PSBfX3AyLl9NX20gJiYg
X19wMS5fTV9zID09IF9fcDIuX01fczsgfQoKICAgICAgcHJpdmF0ZToKIF9SZWFsVHlwZSBfTV9t
OwogX1JlYWxUeXBlIF9NX3M7CiAgICAgIH07CgogICAgICBleHBsaWNpdAogICAgICBsb2dub3Jt
YWxfZGlzdHJpYnV0aW9uKF9SZWFsVHlwZSBfX20gPSBfUmVhbFR5cGUoMCksCiAgICAgICAgX1Jl
YWxUeXBlIF9fcyA9IF9SZWFsVHlwZSgxKSkKICAgICAgOiBfTV9wYXJhbShfX20sIF9fcyksIF9N
X25kKCkKICAgICAgeyB9CgogICAgICBleHBsaWNpdAogICAgICBsb2dub3JtYWxfZGlzdHJpYnV0
aW9uKGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKICAgICAgOiBfTV9wYXJhbShfX3ApLCBfTV9uZCgp
CiAgICAgIHsgfQoKCgoKICAgICAgdm9pZAogICAgICByZXNldCgpCiAgICAgIHsgX01fbmQucmVz
ZXQoKTsgfQoKCgoKICAgICAgX1JlYWxUeXBlCiAgICAgIG0oKSBjb25zdAogICAgICB7IHJldHVy
biBfTV9wYXJhbS5tKCk7IH0KCiAgICAgIF9SZWFsVHlwZQogICAgICBzKCkgY29uc3QKICAgICAg
eyByZXR1cm4gX01fcGFyYW0ucygpOyB9CgoKCgogICAgICBwYXJhbV90eXBlCiAgICAgIHBhcmFt
KCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW07IH0KCgoKCgogICAgICB2b2lkCiAgICAg
IHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIF9fcGFyYW0pCiAgICAgIHsgX01fcGFyYW0gPSBfX3Bh
cmFtOyB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBtaW4oKSBjb25zdAogICAgICB7IHJl
dHVybiByZXN1bHRfdHlwZSgwKTsgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgbWF4KCkg
Y29uc3QKICAgICAgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46Om1h
eCgpOyB9CgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdl
bmVyYXRvcj4KIHJlc3VsdF90eXBlCiBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2Vu
ZXJhdG9yJiBfX3VybmcpCiAgICAgICAgeyByZXR1cm4gdGhpcy0+b3BlcmF0b3IoKShfX3Vybmcs
IF9NX3BhcmFtKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1i
ZXJHZW5lcmF0b3I+CiByZXN1bHRfdHlwZQogb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJl
ckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKICAgICAgICB7
IHJldHVybiBzdGQ6OmV4cChfX3AucygpICogX01fbmQoX191cm5nKSArIF9fcC5tKCkpOyB9Cgog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1l
IF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShfRm9yd2Fy
ZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21O
dW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKIHsgdGhpcy0+X19nZW5lcmF0ZShfX2YsIF9fdCwgX191
cm5nLCBfTV9wYXJhbSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0
b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lk
CiBfX2dlbmVyYXRlKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwK
ICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBh
cmFtX3R5cGUmIF9fcCkKIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3Vybmcs
IF9fcCk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2Vu
ZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShyZXN1bHRfdHlwZSogX19mLCByZXN1bHRfdHlwZSog
X190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29u
c3QgcGFyYW1fdHlwZSYgX19wKQogeyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9f
dXJuZywgX19wKTsgfQoKCgoKCgogICAgICBmcmllbmQgYm9vbAogICAgICBvcGVyYXRvcj09KGNv
bnN0IGxvZ25vcm1hbF9kaXN0cmlidXRpb24mIF9fZDEsCiAgIGNvbnN0IGxvZ25vcm1hbF9kaXN0
cmlidXRpb24mIF9fZDIpCiAgICAgIHsgcmV0dXJuIChfX2QxLl9NX3BhcmFtID09IF9fZDIuX01f
cGFyYW0KICAmJiBfX2QxLl9NX25kID09IF9fZDIuX01fbmQpOyB9CiMgMjQ1MSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRv
bS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZTEsIHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBf
VHJhaXRzPiYKIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
IF9fb3MsCiAgICAgY29uc3Qgc3RkOjpsb2dub3JtYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZTE+
JiBfX3gpOwojIDI0NjYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
UmVhbFR5cGUxLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiBmcmllbmQgc3Rk
OjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNf
aXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgIHN0ZDo6bG9nbm9ybWFsX2Rpc3Ry
aWJ1dGlvbjxfUmVhbFR5cGUxPiYgX194KTsKCiAgICBwcml2YXRlOgogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9t
TnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3Ig
X19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0
b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKTsKCiAgICAgIHBhcmFtX3R5cGUg
X01fcGFyYW07CgogICAgICBzdGQ6Om5vcm1hbF9kaXN0cmlidXRpb248cmVzdWx0X3R5cGU+IF9N
X25kOwogICAgfTsKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgaW5saW5l
IGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3Qgc3RkOjpsb2dub3JtYWxfZGlzdHJpYnV0aW9uPF9S
ZWFsVHlwZT4mIF9fZDEsCiAgICAgICAgY29uc3Qgc3RkOjpsb2dub3JtYWxfZGlzdHJpYnV0aW9u
PF9SZWFsVHlwZT4mIF9fZDIpCiAgICB7IHJldHVybiAhKF9fZDEgPT0gX19kMik7IH0KIyAyNTAz
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvcmFuZG9tLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUgPSBkb3VibGU+
CiAgICBjbGFzcyBnYW1tYV9kaXN0cmlidXRpb24KICAgIHsKICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Zsb2F0aW5nX3BvaW50PF9SZWFsVHlwZT46OnZhbHVlLAogICAgICAidGVtcGxhdGUg
YXJndW1lbnQgbm90IGEgZmxvYXRpbmcgcG9pbnQgdHlwZSIpOwoKICAgIHB1YmxpYzoKCiAgICAg
IHR5cGVkZWYgX1JlYWxUeXBlIHJlc3VsdF90eXBlOwoKICAgICAgc3RydWN0IHBhcmFtX3R5cGUK
ICAgICAgewogdHlwZWRlZiBnYW1tYV9kaXN0cmlidXRpb248X1JlYWxUeXBlPiBkaXN0cmlidXRp
b25fdHlwZTsKIGZyaWVuZCBjbGFzcyBnYW1tYV9kaXN0cmlidXRpb248X1JlYWxUeXBlPjsKCiBl
eHBsaWNpdAogcGFyYW1fdHlwZShfUmVhbFR5cGUgX19hbHBoYV92YWwgPSBfUmVhbFR5cGUoMSks
CiAgICAgX1JlYWxUeXBlIF9fYmV0YV92YWwgPSBfUmVhbFR5cGUoMSkpCiA6IF9NX2FscGhhKF9f
YWxwaGFfdmFsKSwgX01fYmV0YShfX2JldGFfdmFsKQogewogICA7CiAgIF9NX2luaXRpYWxpemUo
KTsKIH0KCiBfUmVhbFR5cGUKIGFscGhhKCkgY29uc3QKIHsgcmV0dXJuIF9NX2FscGhhOyB9Cgog
X1JlYWxUeXBlCiBiZXRhKCkgY29uc3QKIHsgcmV0dXJuIF9NX2JldGE7IH0KCiBmcmllbmQgYm9v
bAogb3BlcmF0b3I9PShjb25zdCBwYXJhbV90eXBlJiBfX3AxLCBjb25zdCBwYXJhbV90eXBlJiBf
X3AyKQogeyByZXR1cm4gKF9fcDEuX01fYWxwaGEgPT0gX19wMi5fTV9hbHBoYQogICAgJiYgX19w
MS5fTV9iZXRhID09IF9fcDIuX01fYmV0YSk7IH0KCiAgICAgIHByaXZhdGU6CiB2b2lkCiBfTV9p
bml0aWFsaXplKCk7CgogX1JlYWxUeXBlIF9NX2FscGhhOwogX1JlYWxUeXBlIF9NX2JldGE7Cgog
X1JlYWxUeXBlIF9NX21hbHBoYSwgX01fYTI7CiAgICAgIH07CgogICAgcHVibGljOgoKCgoKICAg
ICAgZXhwbGljaXQKICAgICAgZ2FtbWFfZGlzdHJpYnV0aW9uKF9SZWFsVHlwZSBfX2FscGhhX3Zh
bCA9IF9SZWFsVHlwZSgxKSwKICAgIF9SZWFsVHlwZSBfX2JldGFfdmFsID0gX1JlYWxUeXBlKDEp
KQogICAgICA6IF9NX3BhcmFtKF9fYWxwaGFfdmFsLCBfX2JldGFfdmFsKSwgX01fbmQoKQogICAg
ICB7IH0KCiAgICAgIGV4cGxpY2l0CiAgICAgIGdhbW1hX2Rpc3RyaWJ1dGlvbihjb25zdCBwYXJh
bV90eXBlJiBfX3ApCiAgICAgIDogX01fcGFyYW0oX19wKSwgX01fbmQoKQogICAgICB7IH0KCgoK
CiAgICAgIHZvaWQKICAgICAgcmVzZXQoKQogICAgICB7IF9NX25kLnJlc2V0KCk7IH0KCgoKCiAg
ICAgIF9SZWFsVHlwZQogICAgICBhbHBoYSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFt
LmFscGhhKCk7IH0KCgoKCiAgICAgIF9SZWFsVHlwZQogICAgICBiZXRhKCkgY29uc3QKICAgICAg
eyByZXR1cm4gX01fcGFyYW0uYmV0YSgpOyB9CgoKCgogICAgICBwYXJhbV90eXBlCiAgICAgIHBh
cmFtKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW07IH0KCgoKCgogICAgICB2b2lkCiAg
ICAgIHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIF9fcGFyYW0pCiAgICAgIHsgX01fcGFyYW0gPSBf
X3BhcmFtOyB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBtaW4oKSBjb25zdAogICAgICB7
IHJldHVybiByZXN1bHRfdHlwZSgwKTsgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgbWF4
KCkgY29uc3QKICAgICAgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46
Om1heCgpOyB9CgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJl
ckdlbmVyYXRvcj4KIHJlc3VsdF90eXBlCiBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVy
R2VuZXJhdG9yJiBfX3VybmcpCiB7IHJldHVybiB0aGlzLT5vcGVyYXRvcigpKF9fdXJuZywgX01f
cGFyYW0pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdl
bmVyYXRvcj4KIHJlc3VsdF90eXBlCiBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2Vu
ZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKTsKCiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZvcm1S
YW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKF9Gb3J3YXJkSXRlcmF0b3Ig
X19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVy
YXRvciYgX191cm5nKQogeyB0aGlzLT5fX2dlbmVyYXRlKF9fZiwgX190LCBfX3VybmcsIF9NX3Bh
cmFtKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAg
ICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJh
dGUoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlm
b3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYg
X19wKQogeyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9fdXJuZywgX19wKTsgfQoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2
b2lkCiBfX2dlbmVyYXRlKHJlc3VsdF90eXBlKiBfX2YsIHJlc3VsdF90eXBlKiBfX3QsCiAgICAg
X1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90
eXBlJiBfX3ApCiB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBfX3Ap
OyB9CgoKCgoKCiAgICAgIGZyaWVuZCBib29sCiAgICAgIG9wZXJhdG9yPT0oY29uc3QgZ2FtbWFf
ZGlzdHJpYnV0aW9uJiBfX2QxLAogICBjb25zdCBnYW1tYV9kaXN0cmlidXRpb24mIF9fZDIpCiAg
ICAgIHsgcmV0dXJuIChfX2QxLl9NX3BhcmFtID09IF9fZDIuX01fcGFyYW0KICAmJiBfX2QxLl9N
X25kID09IF9fZDIuX01fbmQpOyB9CiMgMjY3MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9SZWFsVHlwZTEsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKIG9wZXJhdG9y
PDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAgICAgY29uc3Qg
c3RkOjpnYW1tYV9kaXN0cmlidXRpb248X1JlYWxUeXBlMT4mIF9feCk7CiMgMjY4NiAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3Jh
bmRvbS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZTEsIHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJU
LCBfVHJhaXRzPiYKIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0
cz4mIF9faXMsCiAgICAgc3RkOjpnYW1tYV9kaXN0cmlidXRpb248X1JlYWxUeXBlMT4mIF9feCk7
CgogICAgcHJpdmF0ZToKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwK
ICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9f
Z2VuZXJhdGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3Qs
CiAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgIGNvbnN0IHBhcmFt
X3R5cGUmIF9fcCk7CgogICAgICBwYXJhbV90eXBlIF9NX3BhcmFtOwoKICAgICAgc3RkOjpub3Jt
YWxfZGlzdHJpYnV0aW9uPHJlc3VsdF90eXBlPiBfTV9uZDsKICAgIH07CgoKCgogICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICAgaW5saW5lIGJvb2wKICAgICBvcGVyYXRvciE9KGNv
bnN0IHN0ZDo6Z2FtbWFfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9fZDEsCiAgY29uc3Qgc3Rk
OjpnYW1tYV9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX19kMikKICAgIHsgcmV0dXJuICEoX19k
MSA9PSBfX2QyKTsgfQojIDI3MjAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9SZWFsVHlwZSA9IGRvdWJsZT4KICAgIGNsYXNzIGNoaV9zcXVhcmVkX2Rpc3RyaWJ1dGlvbgog
ICAgewogICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8X1JlYWxUeXBl
Pjo6dmFsdWUsCiAgICAgICJ0ZW1wbGF0ZSBhcmd1bWVudCBub3QgYSBmbG9hdGluZyBwb2ludCB0
eXBlIik7CgogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBfUmVhbFR5cGUgcmVzdWx0X3R5cGU7
CgogICAgICBzdHJ1Y3QgcGFyYW1fdHlwZQogICAgICB7CiB0eXBlZGVmIGNoaV9zcXVhcmVkX2Rp
c3RyaWJ1dGlvbjxfUmVhbFR5cGU+IGRpc3RyaWJ1dGlvbl90eXBlOwoKIGV4cGxpY2l0CiBwYXJh
bV90eXBlKF9SZWFsVHlwZSBfX24gPSBfUmVhbFR5cGUoMSkpCiA6IF9NX24oX19uKQogeyB9Cgog
X1JlYWxUeXBlCiBuKCkgY29uc3QKIHsgcmV0dXJuIF9NX247IH0KCiBmcmllbmQgYm9vbAogb3Bl
cmF0b3I9PShjb25zdCBwYXJhbV90eXBlJiBfX3AxLCBjb25zdCBwYXJhbV90eXBlJiBfX3AyKQog
eyByZXR1cm4gX19wMS5fTV9uID09IF9fcDIuX01fbjsgfQoKICAgICAgcHJpdmF0ZToKIF9SZWFs
VHlwZSBfTV9uOwogICAgICB9OwoKICAgICAgZXhwbGljaXQKICAgICAgY2hpX3NxdWFyZWRfZGlz
dHJpYnV0aW9uKF9SZWFsVHlwZSBfX24gPSBfUmVhbFR5cGUoMSkpCiAgICAgIDogX01fcGFyYW0o
X19uKSwgX01fZ2QoX19uIC8gMikKICAgICAgeyB9CgogICAgICBleHBsaWNpdAogICAgICBjaGlf
c3F1YXJlZF9kaXN0cmlidXRpb24oY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAgICA6IF9NX3Bh
cmFtKF9fcCksIF9NX2dkKF9fcC5uKCkgLyAyKQogICAgICB7IH0KCgoKCiAgICAgIHZvaWQKICAg
ICAgcmVzZXQoKQogICAgICB7IF9NX2dkLnJlc2V0KCk7IH0KCgoKCiAgICAgIF9SZWFsVHlwZQog
ICAgICBuKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW0ubigpOyB9CgoKCgogICAgICBw
YXJhbV90eXBlCiAgICAgIHBhcmFtKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW07IH0K
CgoKCgogICAgICB2b2lkCiAgICAgIHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIF9fcGFyYW0pCiAg
ICAgIHsgX01fcGFyYW0gPSBfX3BhcmFtOyB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBt
aW4oKSBjb25zdAogICAgICB7IHJldHVybiByZXN1bHRfdHlwZSgwKTsgfQoKCgoKICAgICAgcmVz
dWx0X3R5cGUKICAgICAgbWF4KCkgY29uc3QKICAgICAgeyByZXR1cm4gc3RkOjpudW1lcmljX2xp
bWl0czxyZXN1bHRfdHlwZT46Om1heCgpOyB9CgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHJlc3VsdF90eXBlCiBvcGVyYXRvcigpKF9V
bmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHJldHVybiAyICogX01fZ2Qo
X191cm5nKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJH
ZW5lcmF0b3I+CiByZXN1bHRfdHlwZQogb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdl
bmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKICAgICAgICB7CiAg
IHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpnYW1tYV9kaXN0cmlidXRpb248cmVzdWx0X3R5cGU+Ojpw
YXJhbV90eXBlCiAgICAgcGFyYW1fdHlwZTsKICAgcmV0dXJuIDIgKiBfTV9nZChfX3VybmcsIHBh
cmFtX3R5cGUoX19wLm4oKSAvIDIpKTsKIH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3
YXJkSXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0
b3I+CiB2b2lkCiBfX2dlbmVyYXRlKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJh
dG9yIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nKQogICAg
ICAgIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcpOyB9CgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlm
b3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShfRm9yd2FyZEl0ZXJh
dG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJH
ZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7IHR5cGVuYW1l
IHN0ZDo6Z2FtbWFfZGlzdHJpYnV0aW9uPHJlc3VsdF90eXBlPjo6cGFyYW1fdHlwZQogICAgIF9f
cDIoX19wLm4oKSAvIDIpOwogICB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9fdXJu
ZywgX19wMik7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVy
R2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShyZXN1bHRfdHlwZSogX19mLCByZXN1bHRfdHlw
ZSogX190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiAgICAg
ICAgeyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9fdXJuZyk7IH0KCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19n
ZW5lcmF0ZShyZXN1bHRfdHlwZSogX19mLCByZXN1bHRfdHlwZSogX190LAogICAgIF9Vbmlmb3Jt
UmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19w
KQogeyB0eXBlbmFtZSBzdGQ6OmdhbW1hX2Rpc3RyaWJ1dGlvbjxyZXN1bHRfdHlwZT46OnBhcmFt
X3R5cGUKICAgICBfX3AyKF9fcC5uKCkgLyAyKTsKICAgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9f
ZiwgX190LCBfX3VybmcsIF9fcDIpOyB9CgoKCgoKCiAgICAgIGZyaWVuZCBib29sCiAgICAgIG9w
ZXJhdG9yPT0oY29uc3QgY2hpX3NxdWFyZWRfZGlzdHJpYnV0aW9uJiBfX2QxLAogICBjb25zdCBj
aGlfc3F1YXJlZF9kaXN0cmlidXRpb24mIF9fZDIpCiAgICAgIHsgcmV0dXJuIF9fZDEuX01fcGFy
YW0gPT0gX19kMi5fTV9wYXJhbSAmJiBfX2QxLl9NX2dkID09IF9fZDIuX01fZ2Q7IH0KIyAyODc0
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvcmFuZG9tLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlMSwgdHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6YmFzaWNfb3N0cmVh
bTxfQ2hhclQsIF9UcmFpdHM+Jgogb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJU
LCBfVHJhaXRzPiYgX19vcywKICAgICBjb25zdCBzdGQ6OmNoaV9zcXVhcmVkX2Rpc3RyaWJ1dGlv
bjxfUmVhbFR5cGUxPiYgX194KTsKIyAyODg5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1JlYWxUeXBlMSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
PgogZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgogb3BlcmF0b3I+
PihzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywKICAgICBzdGQ6OmNo
aV9zcXVhcmVkX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGUxPiYgX194KTsKCiAgICBwcml2YXRlOgog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1l
IF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZV9pbXBsKF9G
b3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZvcm1SYW5k
b21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZyk7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9y
d2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJh
dG9yPgogdm9pZAogX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2Fy
ZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywK
ICAgY29uc3QgdHlwZW5hbWUKICAgc3RkOjpnYW1tYV9kaXN0cmlidXRpb248cmVzdWx0X3R5cGU+
OjpwYXJhbV90eXBlJiBfX3ApOwoKICAgICAgcGFyYW1fdHlwZSBfTV9wYXJhbTsKCiAgICAgIHN0
ZDo6Z2FtbWFfZGlzdHJpYnV0aW9uPHJlc3VsdF90eXBlPiBfTV9nZDsKICAgIH07CgoKCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9
KGNvbnN0IHN0ZDo6Y2hpX3NxdWFyZWRfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9fZDEsCiAg
ICAgICAgY29uc3Qgc3RkOjpjaGlfc3F1YXJlZF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX19k
MikKICAgIHsgcmV0dXJuICEoX19kMSA9PSBfX2QyKTsgfQojIDI5MzAgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIg
MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSA9IGRvdWJsZT4KICAgIGNsYXNzIGNhdWNo
eV9kaXN0cmlidXRpb24KICAgIHsKICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Zsb2F0aW5n
X3BvaW50PF9SZWFsVHlwZT46OnZhbHVlLAogICAgICAidGVtcGxhdGUgYXJndW1lbnQgbm90IGEg
ZmxvYXRpbmcgcG9pbnQgdHlwZSIpOwoKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgX1JlYWxU
eXBlIHJlc3VsdF90eXBlOwoKICAgICAgc3RydWN0IHBhcmFtX3R5cGUKICAgICAgewogdHlwZWRl
ZiBjYXVjaHlfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4gZGlzdHJpYnV0aW9uX3R5cGU7CgogZXhw
bGljaXQKIHBhcmFtX3R5cGUoX1JlYWxUeXBlIF9fYSA9IF9SZWFsVHlwZSgwKSwKICAgICBfUmVh
bFR5cGUgX19iID0gX1JlYWxUeXBlKDEpKQogOiBfTV9hKF9fYSksIF9NX2IoX19iKQogeyB9Cgog
X1JlYWxUeXBlCiBhKCkgY29uc3QKIHsgcmV0dXJuIF9NX2E7IH0KCiBfUmVhbFR5cGUKIGIoKSBj
b25zdAogeyByZXR1cm4gX01fYjsgfQoKIGZyaWVuZCBib29sCiBvcGVyYXRvcj09KGNvbnN0IHBh
cmFtX3R5cGUmIF9fcDEsIGNvbnN0IHBhcmFtX3R5cGUmIF9fcDIpCiB7IHJldHVybiBfX3AxLl9N
X2EgPT0gX19wMi5fTV9hICYmIF9fcDEuX01fYiA9PSBfX3AyLl9NX2I7IH0KCiAgICAgIHByaXZh
dGU6CiBfUmVhbFR5cGUgX01fYTsKIF9SZWFsVHlwZSBfTV9iOwogICAgICB9OwoKICAgICAgZXhw
bGljaXQKICAgICAgY2F1Y2h5X2Rpc3RyaWJ1dGlvbihfUmVhbFR5cGUgX19hID0gX1JlYWxUeXBl
KDApLAogICAgIF9SZWFsVHlwZSBfX2IgPSBfUmVhbFR5cGUoMSkpCiAgICAgIDogX01fcGFyYW0o
X19hLCBfX2IpCiAgICAgIHsgfQoKICAgICAgZXhwbGljaXQKICAgICAgY2F1Y2h5X2Rpc3RyaWJ1
dGlvbihjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgIDogX01fcGFyYW0oX19wKQogICAgICB7
IH0KCgoKCiAgICAgIHZvaWQKICAgICAgcmVzZXQoKQogICAgICB7IH0KCgoKCiAgICAgIF9SZWFs
VHlwZQogICAgICBhKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW0uYSgpOyB9CgogICAg
ICBfUmVhbFR5cGUKICAgICAgYigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFtLmIoKTsg
fQoKCgoKICAgICAgcGFyYW1fdHlwZQogICAgICBwYXJhbSgpIGNvbnN0CiAgICAgIHsgcmV0dXJu
IF9NX3BhcmFtOyB9CgoKCgoKICAgICAgdm9pZAogICAgICBwYXJhbShjb25zdCBwYXJhbV90eXBl
JiBfX3BhcmFtKQogICAgICB7IF9NX3BhcmFtID0gX19wYXJhbTsgfQoKCgoKICAgICAgcmVzdWx0
X3R5cGUKICAgICAgbWluKCkgY29uc3QKICAgICAgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0
czxyZXN1bHRfdHlwZT46Omxvd2VzdCgpOyB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBt
YXgoKSBjb25zdAogICAgICB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBl
Pjo6bWF4KCk7IH0KCgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVt
YmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1i
ZXJHZW5lcmF0b3ImIF9fdXJuZykKIHsgcmV0dXJuIHRoaXMtPm9wZXJhdG9yKCkoX191cm5nLCBf
TV9wYXJhbSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVy
R2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJH
ZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApOwoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9y
bVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUoX0ZvcndhcmRJdGVyYXRv
ciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2Vu
ZXJhdG9yJiBfX3VybmcpCiB7IHRoaXMtPl9fZ2VuZXJhdGUoX19mLCBfX3QsIF9fdXJuZywgX01f
cGFyYW0pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAg
ICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5l
cmF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgX1Vu
aWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBl
JiBfX3ApCiB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBfX3ApOyB9
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4K
IHZvaWQKIF9fZ2VuZXJhdGUocmVzdWx0X3R5cGUqIF9fZiwgcmVzdWx0X3R5cGUqIF9fdCwKICAg
ICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFt
X3R5cGUmIF9fcCkKIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcsIF9f
cCk7IH0KCgoKCgogICAgICBmcmllbmQgYm9vbAogICAgICBvcGVyYXRvcj09KGNvbnN0IGNhdWNo
eV9kaXN0cmlidXRpb24mIF9fZDEsCiAgIGNvbnN0IGNhdWNoeV9kaXN0cmlidXRpb24mIF9fZDIp
CiAgICAgIHsgcmV0dXJuIF9fZDEuX01fcGFyYW0gPT0gX19kMi5fTV9wYXJhbTsgfQoKICAgIHBy
aXZhdGU6CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAg
dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRl
X2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICBfVW5p
Zm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICBjb25zdCBwYXJhbV90eXBlJiBf
X3ApOwoKICAgICAgcGFyYW1fdHlwZSBfTV9wYXJhbTsKICAgIH07CgoKCgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmVhbFR5cGU+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCBz
dGQ6OmNhdWNoeV9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX19kMSwKICAgICAgICBjb25zdCBz
dGQ6OmNhdWNoeV9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX19kMikKICAgIHsgcmV0dXJuICEo
X19kMSA9PSBfX2QyKTsgfQojIDMxMDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3Rk
OjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KHN0ZDo6YmFz
aWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgICAgIGNvbnN0IHN0ZDo6Y2F1
Y2h5X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX3gpOwojIDMxMTUgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIg
MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBv
cGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAg
ICAgIHN0ZDo6Y2F1Y2h5X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX3gpOwojIDMxMzEgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSA9IGRvdWJsZT4KICAg
IGNsYXNzIGZpc2hlcl9mX2Rpc3RyaWJ1dGlvbgogICAgewogICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8X1JlYWxUeXBlPjo6dmFsdWUsCiAgICAgICJ0ZW1wbGF0ZSBh
cmd1bWVudCBub3QgYSBmbG9hdGluZyBwb2ludCB0eXBlIik7CgogICAgcHVibGljOgoKICAgICAg
dHlwZWRlZiBfUmVhbFR5cGUgcmVzdWx0X3R5cGU7CgogICAgICBzdHJ1Y3QgcGFyYW1fdHlwZQog
ICAgICB7CiB0eXBlZGVmIGZpc2hlcl9mX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+IGRpc3RyaWJ1
dGlvbl90eXBlOwoKIGV4cGxpY2l0CiBwYXJhbV90eXBlKF9SZWFsVHlwZSBfX20gPSBfUmVhbFR5
cGUoMSksCiAgICAgX1JlYWxUeXBlIF9fbiA9IF9SZWFsVHlwZSgxKSkKIDogX01fbShfX20pLCBf
TV9uKF9fbikKIHsgfQoKIF9SZWFsVHlwZQogbSgpIGNvbnN0CiB7IHJldHVybiBfTV9tOyB9Cgog
X1JlYWxUeXBlCiBuKCkgY29uc3QKIHsgcmV0dXJuIF9NX247IH0KCiBmcmllbmQgYm9vbAogb3Bl
cmF0b3I9PShjb25zdCBwYXJhbV90eXBlJiBfX3AxLCBjb25zdCBwYXJhbV90eXBlJiBfX3AyKQog
eyByZXR1cm4gX19wMS5fTV9tID09IF9fcDIuX01fbSAmJiBfX3AxLl9NX24gPT0gX19wMi5fTV9u
OyB9CgogICAgICBwcml2YXRlOgogX1JlYWxUeXBlIF9NX207CiBfUmVhbFR5cGUgX01fbjsKICAg
ICAgfTsKCiAgICAgIGV4cGxpY2l0CiAgICAgIGZpc2hlcl9mX2Rpc3RyaWJ1dGlvbihfUmVhbFR5
cGUgX19tID0gX1JlYWxUeXBlKDEpLAogICAgICAgX1JlYWxUeXBlIF9fbiA9IF9SZWFsVHlwZSgx
KSkKICAgICAgOiBfTV9wYXJhbShfX20sIF9fbiksIF9NX2dkX3goX19tIC8gMiksIF9NX2dkX3ko
X19uIC8gMikKICAgICAgeyB9CgogICAgICBleHBsaWNpdAogICAgICBmaXNoZXJfZl9kaXN0cmli
dXRpb24oY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAgICA6IF9NX3BhcmFtKF9fcCksIF9NX2dk
X3goX19wLm0oKSAvIDIpLCBfTV9nZF95KF9fcC5uKCkgLyAyKQogICAgICB7IH0KCgoKCiAgICAg
IHZvaWQKICAgICAgcmVzZXQoKQogICAgICB7CiBfTV9nZF94LnJlc2V0KCk7CiBfTV9nZF95LnJl
c2V0KCk7CiAgICAgIH0KCgoKCiAgICAgIF9SZWFsVHlwZQogICAgICBtKCkgY29uc3QKICAgICAg
eyByZXR1cm4gX01fcGFyYW0ubSgpOyB9CgogICAgICBfUmVhbFR5cGUKICAgICAgbigpIGNvbnN0
CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFtLm4oKTsgfQoKCgoKICAgICAgcGFyYW1fdHlwZQogICAg
ICBwYXJhbSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFtOyB9CgoKCgoKICAgICAgdm9p
ZAogICAgICBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBfX3BhcmFtKQogICAgICB7IF9NX3BhcmFt
ID0gX19wYXJhbTsgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgbWluKCkgY29uc3QKICAg
ICAgeyByZXR1cm4gcmVzdWx0X3R5cGUoMCk7IH0KCgoKCiAgICAgIHJlc3VsdF90eXBlCiAgICAg
IG1heCgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5
cGU+OjptYXgoKTsgfQoKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21O
dW1iZXJHZW5lcmF0b3I+CiByZXN1bHRfdHlwZQogb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51
bWJlckdlbmVyYXRvciYgX191cm5nKQogeyByZXR1cm4gKF9NX2dkX3goX191cm5nKSAqIG4oKSkg
LyAoX01fZ2RfeShfX3VybmcpICogbSgpKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Vu
aWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiByZXN1bHRfdHlwZQogb3BlcmF0b3IoKShfVW5p
Zm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUm
IF9fcCkKICAgICAgICB7CiAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpnYW1tYV9kaXN0cmlidXRp
b248cmVzdWx0X3R5cGU+OjpwYXJhbV90eXBlCiAgICAgcGFyYW1fdHlwZTsKICAgcmV0dXJuICgo
X01fZ2RfeChfX3VybmcsIHBhcmFtX3R5cGUoX19wLm0oKSAvIDIpKSAqIG4oKSkKICAgIC8gKF9N
X2dkX3koX191cm5nLCBwYXJhbV90eXBlKF9fcC5uKCkgLyAyKSkgKiBtKCkpKTsKIH0KCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUgX1Vu
aWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKF9Gb3J3YXJkSXRl
cmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJl
ckdlbmVyYXRvciYgX191cm5nKQogeyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9f
dXJuZyk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAg
ICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVy
YXRlKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICBfVW5p
Zm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUm
IF9fcCkKIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcsIF9fcCk7IH0K
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgog
dm9pZAogX19nZW5lcmF0ZShyZXN1bHRfdHlwZSogX19mLCByZXN1bHRfdHlwZSogX190LAogICAg
IF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHRoaXMtPl9fZ2VuZXJh
dGVfaW1wbChfX2YsIF9fdCwgX191cm5nKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Vu
aWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKHJlc3VsdF90eXBl
KiBfX2YsIHJlc3VsdF90eXBlKiBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0
b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7IHRoaXMtPl9fZ2VuZXJh
dGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBfX3ApOyB9CgoKCgoKCiAgICAgIGZyaWVuZCBib29s
CiAgICAgIG9wZXJhdG9yPT0oY29uc3QgZmlzaGVyX2ZfZGlzdHJpYnV0aW9uJiBfX2QxLAogICBj
b25zdCBmaXNoZXJfZl9kaXN0cmlidXRpb24mIF9fZDIpCiAgICAgIHsgcmV0dXJuIChfX2QxLl9N
X3BhcmFtID09IF9fZDIuX01fcGFyYW0KICAmJiBfX2QxLl9NX2dkX3ggPT0gX19kMi5fTV9nZF94
CiAgJiYgX19kMS5fTV9nZF95ID09IF9fZDIuX01fZ2RfeSk7IH0KIyAzMjk4ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9t
LmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlMSwgdHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9U
cmFpdHM+Jgogb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYg
X19vcywKICAgICBjb25zdCBzdGQ6OmZpc2hlcl9mX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGUxPiYg
X194KTsKIyAzMzEzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jl
YWxUeXBlMSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6
YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgogb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lz
dHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywKICAgICBzdGQ6OmZpc2hlcl9mX2Rpc3RyaWJ1
dGlvbjxfUmVhbFR5cGUxPiYgX194KTsKCiAgICBwcml2YXRlOgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVt
YmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19m
LCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3Im
IF9fdXJuZyk7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAg
ICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5l
cmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAg
X1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1fdHlw
ZSYgX19wKTsKCiAgICAgIHBhcmFtX3R5cGUgX01fcGFyYW07CgogICAgICBzdGQ6OmdhbW1hX2Rp
c3RyaWJ1dGlvbjxyZXN1bHRfdHlwZT4gX01fZ2RfeCwgX01fZ2RfeTsKICAgIH07CgoKCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9
KGNvbnN0IHN0ZDo6ZmlzaGVyX2ZfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9fZDEsCiAgICAg
ICAgY29uc3Qgc3RkOjpmaXNoZXJfZl9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX19kMikKICAg
IHsgcmV0dXJuICEoX19kMSA9PSBfX2QyKTsgfQojIDMzNTUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogIHRl
bXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSA9IGRvdWJsZT4KICAgIGNsYXNzIHN0dWRlbnRfdF9k
aXN0cmlidXRpb24KICAgIHsKICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Zsb2F0aW5nX3Bv
aW50PF9SZWFsVHlwZT46OnZhbHVlLAogICAgICAidGVtcGxhdGUgYXJndW1lbnQgbm90IGEgZmxv
YXRpbmcgcG9pbnQgdHlwZSIpOwoKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgX1JlYWxUeXBl
IHJlc3VsdF90eXBlOwoKICAgICAgc3RydWN0IHBhcmFtX3R5cGUKICAgICAgewogdHlwZWRlZiBz
dHVkZW50X3RfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4gZGlzdHJpYnV0aW9uX3R5cGU7CgogZXhw
bGljaXQKIHBhcmFtX3R5cGUoX1JlYWxUeXBlIF9fbiA9IF9SZWFsVHlwZSgxKSkKIDogX01fbihf
X24pCiB7IH0KCiBfUmVhbFR5cGUKIG4oKSBjb25zdAogeyByZXR1cm4gX01fbjsgfQoKIGZyaWVu
ZCBib29sCiBvcGVyYXRvcj09KGNvbnN0IHBhcmFtX3R5cGUmIF9fcDEsIGNvbnN0IHBhcmFtX3R5
cGUmIF9fcDIpCiB7IHJldHVybiBfX3AxLl9NX24gPT0gX19wMi5fTV9uOyB9CgogICAgICBwcml2
YXRlOgogX1JlYWxUeXBlIF9NX247CiAgICAgIH07CgogICAgICBleHBsaWNpdAogICAgICBzdHVk
ZW50X3RfZGlzdHJpYnV0aW9uKF9SZWFsVHlwZSBfX24gPSBfUmVhbFR5cGUoMSkpCiAgICAgIDog
X01fcGFyYW0oX19uKSwgX01fbmQoKSwgX01fZ2QoX19uIC8gMiwgMikKICAgICAgeyB9CgogICAg
ICBleHBsaWNpdAogICAgICBzdHVkZW50X3RfZGlzdHJpYnV0aW9uKGNvbnN0IHBhcmFtX3R5cGUm
IF9fcCkKICAgICAgOiBfTV9wYXJhbShfX3ApLCBfTV9uZCgpLCBfTV9nZChfX3AubigpIC8gMiwg
MikKICAgICAgeyB9CgoKCgogICAgICB2b2lkCiAgICAgIHJlc2V0KCkKICAgICAgewogX01fbmQu
cmVzZXQoKTsKIF9NX2dkLnJlc2V0KCk7CiAgICAgIH0KCgoKCiAgICAgIF9SZWFsVHlwZQogICAg
ICBuKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW0ubigpOyB9CgoKCgogICAgICBwYXJh
bV90eXBlCiAgICAgIHBhcmFtKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW07IH0KCgoK
CgogICAgICB2b2lkCiAgICAgIHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIF9fcGFyYW0pCiAgICAg
IHsgX01fcGFyYW0gPSBfX3BhcmFtOyB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBtaW4o
KSBjb25zdAogICAgICB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6
bG93ZXN0KCk7IH0KCgoKCiAgICAgIHJlc3VsdF90eXBlCiAgICAgIG1heCgpIGNvbnN0CiAgICAg
IHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptYXgoKTsgfQoKCgoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiBy
ZXN1bHRfdHlwZQogICAgICAgIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0
b3ImIF9fdXJuZykKICAgICAgICB7IHJldHVybiBfTV9uZChfX3VybmcpICogc3RkOjpzcXJ0KG4o
KSAvIF9NX2dkKF9fdXJuZykpOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJh
bmRvbU51bWJlckdlbmVyYXRvcj4KIHJlc3VsdF90eXBlCiBvcGVyYXRvcigpKF9Vbmlmb3JtUmFu
ZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQog
ICAgICAgIHsKICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmdhbW1hX2Rpc3RyaWJ1dGlvbjxyZXN1
bHRfdHlwZT46OnBhcmFtX3R5cGUKICAgICBwYXJhbV90eXBlOwoKICAgY29uc3QgcmVzdWx0X3R5
cGUgX19nID0gX01fZ2QoX191cm5nLCBwYXJhbV90eXBlKF9fcC5uKCkgLyAyLCAyKSk7CiAgIHJl
dHVybiBfTV9uZChfX3VybmcpICogc3RkOjpzcXJ0KF9fcC5uKCkgLyBfX2cpOwogICAgICAgIH0K
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAgdHlwZW5h
bWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKF9Gb3J3
YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICBfVW5pZm9ybVJhbmRv
bU51bWJlckdlbmVyYXRvciYgX191cm5nKQogeyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBf
X3QsIF9fdXJuZyk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3Is
CiAgICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBf
X2dlbmVyYXRlKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAg
ICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFt
X3R5cGUmIF9fcCkKIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcsIF9f
cCk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJh
dG9yPgogdm9pZAogX19nZW5lcmF0ZShyZXN1bHRfdHlwZSogX19mLCByZXN1bHRfdHlwZSogX190
LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHRoaXMtPl9f
Z2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKHJlc3Vs
dF90eXBlKiBfX2YsIHJlc3VsdF90eXBlKiBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJH
ZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7IHRoaXMtPl9f
Z2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBfX3ApOyB9CgoKCgoKCiAgICAgIGZyaWVu
ZCBib29sCiAgICAgIG9wZXJhdG9yPT0oY29uc3Qgc3R1ZGVudF90X2Rpc3RyaWJ1dGlvbiYgX19k
MSwKICAgY29uc3Qgc3R1ZGVudF90X2Rpc3RyaWJ1dGlvbiYgX19kMikKICAgICAgeyByZXR1cm4g
KF9fZDEuX01fcGFyYW0gPT0gX19kMi5fTV9wYXJhbQogICYmIF9fZDEuX01fbmQgPT0gX19kMi5f
TV9uZCAmJiBfX2QxLl9NX2dkID09IF9fZDIuX01fZ2QpOyB9CiMgMzUxMSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRvbS5o
IiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZTEsIHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJh
aXRzPiYKIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9f
b3MsCiAgICAgY29uc3Qgc3RkOjpzdHVkZW50X3RfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZTE+JiBf
X3gpOwojIDM1MjYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVh
bFR5cGUxLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiBmcmllbmQgc3RkOjpi
YXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgIHN0ZDo6c3R1ZGVudF90X2Rpc3RyaWJ1
dGlvbjxfUmVhbFR5cGUxPiYgX194KTsKCiAgICBwcml2YXRlOgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVt
YmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19m
LCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3Im
IF9fdXJuZyk7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAg
ICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVy
YXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICBf
VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICBjb25zdCBwYXJhbV90eXBl
JiBfX3ApOwoKICAgICAgcGFyYW1fdHlwZSBfTV9wYXJhbTsKCiAgICAgIHN0ZDo6bm9ybWFsX2Rp
c3RyaWJ1dGlvbjxyZXN1bHRfdHlwZT4gX01fbmQ7CiAgICAgIHN0ZDo6Z2FtbWFfZGlzdHJpYnV0
aW9uPHJlc3VsdF90eXBlPiBfTV9nZDsKICAgIH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
ZWFsVHlwZT4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHN0ZDo6c3R1ZGVu
dF90X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX2QxLAogICAgICAgIGNvbnN0IHN0ZDo6c3R1
ZGVudF90X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX2QyKQogICAgeyByZXR1cm4gIShfX2Qx
ID09IF9fZDIpOyB9CiMgMzU3NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAgY2xhc3MgYmVybm91bGxpX2Rp
c3RyaWJ1dGlvbgogIHsKICBwdWJsaWM6CgogICAgdHlwZWRlZiBib29sIHJlc3VsdF90eXBlOwoK
ICAgIHN0cnVjdCBwYXJhbV90eXBlCiAgICB7CiAgICAgIHR5cGVkZWYgYmVybm91bGxpX2Rpc3Ry
aWJ1dGlvbiBkaXN0cmlidXRpb25fdHlwZTsKCiAgICAgIGV4cGxpY2l0CiAgICAgIHBhcmFtX3R5
cGUoZG91YmxlIF9fcCA9IDAuNSkKICAgICAgOiBfTV9wKF9fcCkKICAgICAgewogOwogICAgICB9
CgogICAgICBkb3VibGUKICAgICAgcCgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3A7IH0KCiAg
ICAgIGZyaWVuZCBib29sCiAgICAgIG9wZXJhdG9yPT0oY29uc3QgcGFyYW1fdHlwZSYgX19wMSwg
Y29uc3QgcGFyYW1fdHlwZSYgX19wMikKICAgICAgeyByZXR1cm4gX19wMS5fTV9wID09IF9fcDIu
X01fcDsgfQoKICAgIHByaXZhdGU6CiAgICAgIGRvdWJsZSBfTV9wOwogICAgfTsKCiAgcHVibGlj
OgoKCgoKCgogICAgZXhwbGljaXQKICAgIGJlcm5vdWxsaV9kaXN0cmlidXRpb24oZG91YmxlIF9f
cCA9IDAuNSkKICAgIDogX01fcGFyYW0oX19wKQogICAgeyB9CgogICAgZXhwbGljaXQKICAgIGJl
cm5vdWxsaV9kaXN0cmlidXRpb24oY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAgOiBfTV9wYXJh
bShfX3ApCiAgICB7IH0KCgoKCgoKICAgIHZvaWQKICAgIHJlc2V0KCkgeyB9CgoKCgogICAgZG91
YmxlCiAgICBwKCkgY29uc3QKICAgIHsgcmV0dXJuIF9NX3BhcmFtLnAoKTsgfQoKCgoKICAgIHBh
cmFtX3R5cGUKICAgIHBhcmFtKCkgY29uc3QKICAgIHsgcmV0dXJuIF9NX3BhcmFtOyB9CgoKCgoK
ICAgIHZvaWQKICAgIHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIF9fcGFyYW0pCiAgICB7IF9NX3Bh
cmFtID0gX19wYXJhbTsgfQoKCgoKICAgIHJlc3VsdF90eXBlCiAgICBtaW4oKSBjb25zdAogICAg
eyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46Om1pbigpOyB9CgoKCgog
ICAgcmVzdWx0X3R5cGUKICAgIG1heCgpIGNvbnN0CiAgICB7IHJldHVybiBzdGQ6Om51bWVyaWNf
bGltaXRzPHJlc3VsdF90eXBlPjo6bWF4KCk7IH0KCgoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgcmVzdWx0X3R5cGUKICAgICAgb3Bl
cmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nKQogICAgICB7IHJl
dHVybiB0aGlzLT5vcGVyYXRvcigpKF9fdXJuZywgX01fcGFyYW0pOyB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAgICAgIHJlc3VsdF90eXBl
CiAgICAgIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywK
ICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAgICB7CiBfX2RldGFpbDo6X0FkYXB0b3I8X1Vu
aWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3IsIGRvdWJsZT4KICAgX19hdXJuZyhfX3VybmcpOwog
aWYgKChfX2F1cm5nKCkgLSBfX2F1cm5nLm1pbigpKQogICAgICA8IF9fcC5wKCkgKiAoX19hdXJu
Zy5tYXgoKSAtIF9fYXVybmcubWluKCkpKQogICByZXR1cm4gdHJ1ZTsKIHJldHVybiBmYWxzZTsK
ICAgICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgIHR5
cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgICB2b2lkCiAgICAgIF9f
Z2VuZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICBf
VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nKQogICAgICB7IHRoaXMtPl9fZ2Vu
ZXJhdGUoX19mLCBfX3QsIF9fdXJuZywgX01fcGFyYW0pOyB9CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJH
ZW5lcmF0b3I+CiAgICAgIHZvaWQKICAgICAgX19nZW5lcmF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9f
ZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9y
JiBfX3VybmcsIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKICAgICAgeyB0aGlzLT5fX2dlbmVyYXRl
X2ltcGwoX19mLCBfX3QsIF9fdXJuZywgX19wKTsgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9V
bmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgICB2b2lkCiAgICAgIF9fZ2VuZXJhdGUo
cmVzdWx0X3R5cGUqIF9fZiwgcmVzdWx0X3R5cGUqIF9fdCwKICAgX1VuaWZvcm1SYW5kb21OdW1i
ZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAgICB7IHRo
aXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBfX3ApOyB9CgoKCgoKICAgIGZy
aWVuZCBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0IGJlcm5vdWxsaV9kaXN0cmlidXRpb24mIF9f
ZDEsCiAgICAgICAgY29uc3QgYmVybm91bGxpX2Rpc3RyaWJ1dGlvbiYgX19kMikKICAgIHsgcmV0
dXJuIF9fZDEuX01fcGFyYW0gPT0gX19kMi5fTV9wYXJhbTsgfQoKICBwcml2YXRlOgogICAgdGVt
cGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgdHlwZW5hbWUgX1VuaWZvcm1S
YW5kb21OdW1iZXJHZW5lcmF0b3I+CiAgICAgIHZvaWQKICAgICAgX19nZW5lcmF0ZV9pbXBsKF9G
b3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICAgICBfVW5pZm9y
bVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgICAgIGNvbnN0IHBhcmFtX3R5cGUm
IF9fcCk7CgogICAgcGFyYW1fdHlwZSBfTV9wYXJhbTsKICB9OwoKCgoKCiAgaW5saW5lIGJvb2wK
ICBvcGVyYXRvciE9KGNvbnN0IHN0ZDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbiYgX19kMSwKICAg
ICAgY29uc3Qgc3RkOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uJiBfX2QyKQogIHsgcmV0dXJuICEo
X19kMSA9PSBfX2QyKTsgfQojIDM3NDUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBf
VHJhaXRzPiYgX19vcywKICAgICAgICBjb25zdCBzdGQ6OmJlcm5vdWxsaV9kaXN0cmlidXRpb24m
IF9feCk7CiMgMzc1OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0
cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBf
X2lzLAogICAgICAgIHN0ZDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbiYgX194KQogICAgewogICAg
ICBkb3VibGUgX19wOwogICAgICBfX2lzID4+IF9fcDsKICAgICAgX194LnBhcmFtKGJlcm5vdWxs
aV9kaXN0cmlidXRpb246OnBhcmFtX3R5cGUoX19wKSk7CiAgICAgIHJldHVybiBfX2lzOwogICAg
fQojIDM3NzggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlID0g
aW50PgogICAgY2xhc3MgYmlub21pYWxfZGlzdHJpYnV0aW9uCiAgICB7CiAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19pbnRlZ3JhbDxfSW50VHlwZT46OnZhbHVlLAogICAgICAidGVtcGxhdGUg
YXJndW1lbnQgbm90IGFuIGludGVncmFsIHR5cGUiKTsKCiAgICBwdWJsaWM6CgogICAgICB0eXBl
ZGVmIF9JbnRUeXBlIHJlc3VsdF90eXBlOwoKICAgICAgc3RydWN0IHBhcmFtX3R5cGUKICAgICAg
ewogdHlwZWRlZiBiaW5vbWlhbF9kaXN0cmlidXRpb248X0ludFR5cGU+IGRpc3RyaWJ1dGlvbl90
eXBlOwogZnJpZW5kIGNsYXNzIGJpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT47CgogZXhw
bGljaXQKIHBhcmFtX3R5cGUoX0ludFR5cGUgX190ID0gX0ludFR5cGUoMSksIGRvdWJsZSBfX3Ag
PSAwLjUpCiA6IF9NX3QoX190KSwgX01fcChfX3ApCiB7CiAgCgogICAgICAgICAgICAgICAgICAg
ICA7CiAgIF9NX2luaXRpYWxpemUoKTsKIH0KCiBfSW50VHlwZQogdCgpIGNvbnN0CiB7IHJldHVy
biBfTV90OyB9CgogZG91YmxlCiBwKCkgY29uc3QKIHsgcmV0dXJuIF9NX3A7IH0KCiBmcmllbmQg
Ym9vbAogb3BlcmF0b3I9PShjb25zdCBwYXJhbV90eXBlJiBfX3AxLCBjb25zdCBwYXJhbV90eXBl
JiBfX3AyKQogeyByZXR1cm4gX19wMS5fTV90ID09IF9fcDIuX01fdCAmJiBfX3AxLl9NX3AgPT0g
X19wMi5fTV9wOyB9CgogICAgICBwcml2YXRlOgogdm9pZAogX01faW5pdGlhbGl6ZSgpOwoKIF9J
bnRUeXBlIF9NX3Q7CiBkb3VibGUgX01fcDsKCiBkb3VibGUgX01fcTsKCiBkb3VibGUgX01fZDEs
IF9NX2QyLCBfTV9zMSwgX01fczIsIF9NX2MsCiAgICAgICAgX01fYTEsIF9NX2ExMjMsIF9NX3Ms
IF9NX2xmLCBfTV9scDFwOwoKIGJvb2wgX01fZWFzeTsKICAgICAgfTsKCgogICAgICBleHBsaWNp
dAogICAgICBiaW5vbWlhbF9kaXN0cmlidXRpb24oX0ludFR5cGUgX190ID0gX0ludFR5cGUoMSks
CiAgICAgICBkb3VibGUgX19wID0gMC41KQogICAgICA6IF9NX3BhcmFtKF9fdCwgX19wKSwgX01f
bmQoKQogICAgICB7IH0KCiAgICAgIGV4cGxpY2l0CiAgICAgIGJpbm9taWFsX2Rpc3RyaWJ1dGlv
bihjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgIDogX01fcGFyYW0oX19wKSwgX01fbmQoKQog
ICAgICB7IH0KCgoKCiAgICAgIHZvaWQKICAgICAgcmVzZXQoKQogICAgICB7IF9NX25kLnJlc2V0
KCk7IH0KCgoKCiAgICAgIF9JbnRUeXBlCiAgICAgIHQoKSBjb25zdAogICAgICB7IHJldHVybiBf
TV9wYXJhbS50KCk7IH0KCgoKCiAgICAgIGRvdWJsZQogICAgICBwKCkgY29uc3QKICAgICAgeyBy
ZXR1cm4gX01fcGFyYW0ucCgpOyB9CgoKCgogICAgICBwYXJhbV90eXBlCiAgICAgIHBhcmFtKCkg
Y29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW07IH0KCgoKCgogICAgICB2b2lkCiAgICAgIHBh
cmFtKGNvbnN0IHBhcmFtX3R5cGUmIF9fcGFyYW0pCiAgICAgIHsgX01fcGFyYW0gPSBfX3BhcmFt
OyB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBtaW4oKSBjb25zdAogICAgICB7IHJldHVy
biAwOyB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBtYXgoKSBjb25zdAogICAgICB7IHJl
dHVybiBfTV9wYXJhbS50KCk7IH0KCgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3Jt
UmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZvcm1S
YW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKIHsgcmV0dXJuIHRoaXMtPm9wZXJhdG9yKCko
X191cm5nLCBfTV9wYXJhbSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFu
ZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5k
b21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApOwoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFt
ZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUoX0Zvcndh
cmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3JtUmFuZG9t
TnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHRoaXMtPl9fZ2VuZXJhdGUoX19mLCBfX3QsIF9f
dXJuZywgX01fcGFyYW0pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJh
dG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9p
ZAogX19nZW5lcmF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3Qs
CiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBw
YXJhbV90eXBlJiBfX3ApCiB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5n
LCBfX3ApOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdl
bmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUocmVzdWx0X3R5cGUqIF9fZiwgcmVzdWx0X3R5cGUq
IF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNv
bnN0IHBhcmFtX3R5cGUmIF9fcCkKIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBf
X3VybmcsIF9fcCk7IH0KCgoKCgoKIGZyaWVuZCBib29sCiAgICAgICAgb3BlcmF0b3I9PShjb25z
dCBiaW5vbWlhbF9kaXN0cmlidXRpb24mIF9fZDEsCiAgICAgY29uc3QgYmlub21pYWxfZGlzdHJp
YnV0aW9uJiBfX2QyKQoKIHsgcmV0dXJuIF9fZDEuX01fcGFyYW0gPT0gX19kMi5fTV9wYXJhbSAm
JiBfX2QxLl9NX25kID09IF9fZDIuX01fbmQ7IH0KIyAzOTUxICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGUxLAogICAgICAgIHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJh
aXRzPiYKIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9f
b3MsCiAgICAgY29uc3Qgc3RkOjpiaW5vbWlhbF9kaXN0cmlidXRpb248X0ludFR5cGUxPiYgX194
KTsKIyAzOTY3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5
cGUxLAogICAgICAgIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KIGZyaWVuZCBz
dGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKIG9wZXJhdG9yPj4oc3RkOjpiYXNp
Y19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAgc3RkOjpiaW5vbWlhbF9kaXN0
cmlidXRpb248X0ludFR5cGUxPiYgX194KTsKCiAgICBwcml2YXRlOgogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9t
TnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3Ig
X19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0
b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKTsKCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIF9NX3dh
aXRpbmcoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBfSW50VHlw
ZSBfX3QsIGRvdWJsZSBfX3EpOwoKICAgICAgcGFyYW1fdHlwZSBfTV9wYXJhbTsKCgogICAgICBz
dGQ6Om5vcm1hbF9kaXN0cmlidXRpb248ZG91YmxlPiBfTV9uZDsKICAgIH07CgoKCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9JbnRUeXBlPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29u
c3Qgc3RkOjpiaW5vbWlhbF9kaXN0cmlidXRpb248X0ludFR5cGU+JiBfX2QxLAogICAgICAgIGNv
bnN0IHN0ZDo6Ymlub21pYWxfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPiYgX19kMikKICAgIHsgcmV0
dXJuICEoX19kMSA9PSBfX2QyKTsgfQojIDQwMDkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JbnRUeXBlID0gaW50PgogICAgY2xhc3MgZ2VvbWV0cmljX2Rpc3RyaWJ1dGlv
bgogICAgewogICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8X0ludFR5cGU+Ojp2
YWx1ZSwKICAgICAgInRlbXBsYXRlIGFyZ3VtZW50IG5vdCBhbiBpbnRlZ3JhbCB0eXBlIik7Cgog
ICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBfSW50VHlwZSByZXN1bHRfdHlwZTsKCiAgICAgIHN0
cnVjdCBwYXJhbV90eXBlCiAgICAgIHsKIHR5cGVkZWYgZ2VvbWV0cmljX2Rpc3RyaWJ1dGlvbjxf
SW50VHlwZT4gZGlzdHJpYnV0aW9uX3R5cGU7CiBmcmllbmQgY2xhc3MgZ2VvbWV0cmljX2Rpc3Ry
aWJ1dGlvbjxfSW50VHlwZT47CgogZXhwbGljaXQKIHBhcmFtX3R5cGUoZG91YmxlIF9fcCA9IDAu
NSkKIDogX01fcChfX3ApCiB7CiAgIDsKICAgX01faW5pdGlhbGl6ZSgpOwogfQoKIGRvdWJsZQog
cCgpIGNvbnN0CiB7IHJldHVybiBfTV9wOyB9CgogZnJpZW5kIGJvb2wKIG9wZXJhdG9yPT0oY29u
c3QgcGFyYW1fdHlwZSYgX19wMSwgY29uc3QgcGFyYW1fdHlwZSYgX19wMikKIHsgcmV0dXJuIF9f
cDEuX01fcCA9PSBfX3AyLl9NX3A7IH0KCiAgICAgIHByaXZhdGU6CiB2b2lkCiBfTV9pbml0aWFs
aXplKCkKIHsgX01fbG9nXzFfcCA9IHN0ZDo6bG9nKDEuMCAtIF9NX3ApOyB9CgogZG91YmxlIF9N
X3A7CgogZG91YmxlIF9NX2xvZ18xX3A7CiAgICAgIH07CgoKICAgICAgZXhwbGljaXQKICAgICAg
Z2VvbWV0cmljX2Rpc3RyaWJ1dGlvbihkb3VibGUgX19wID0gMC41KQogICAgICA6IF9NX3BhcmFt
KF9fcCkKICAgICAgeyB9CgogICAgICBleHBsaWNpdAogICAgICBnZW9tZXRyaWNfZGlzdHJpYnV0
aW9uKGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKICAgICAgOiBfTV9wYXJhbShfX3ApCiAgICAgIHsg
fQoKCgoKCgogICAgICB2b2lkCiAgICAgIHJlc2V0KCkgeyB9CgoKCgogICAgICBkb3VibGUKICAg
ICAgcCgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFtLnAoKTsgfQoKCgoKICAgICAgcGFy
YW1fdHlwZQogICAgICBwYXJhbSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFtOyB9CgoK
CgoKICAgICAgdm9pZAogICAgICBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBfX3BhcmFtKQogICAg
ICB7IF9NX3BhcmFtID0gX19wYXJhbTsgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgbWlu
KCkgY29uc3QKICAgICAgeyByZXR1cm4gMDsgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAg
bWF4KCkgY29uc3QKICAgICAgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlw
ZT46Om1heCgpOyB9CgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51
bWJlckdlbmVyYXRvcj4KIHJlc3VsdF90eXBlCiBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVt
YmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHJldHVybiB0aGlzLT5vcGVyYXRvcigpKF9fdXJuZywg
X01fcGFyYW0pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJl
ckdlbmVyYXRvcj4KIHJlc3VsdF90eXBlCiBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVy
R2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKTsKCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZv
cm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKF9Gb3J3YXJkSXRlcmF0
b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdl
bmVyYXRvciYgX191cm5nKQogeyB0aGlzLT5fX2dlbmVyYXRlKF9fZiwgX190LCBfX3VybmcsIF9N
X3BhcmFtKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAg
ICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2Vu
ZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9V
bmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlw
ZSYgX19wKQogeyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9fdXJuZywgX19wKTsg
fQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+
CiB2b2lkCiBfX2dlbmVyYXRlKHJlc3VsdF90eXBlKiBfX2YsIHJlc3VsdF90eXBlKiBfX3QsCiAg
ICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJh
bV90eXBlJiBfX3ApCiB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBf
X3ApOyB9CgoKCgoKICAgICAgZnJpZW5kIGJvb2wKICAgICAgb3BlcmF0b3I9PShjb25zdCBnZW9t
ZXRyaWNfZGlzdHJpYnV0aW9uJiBfX2QxLAogICBjb25zdCBnZW9tZXRyaWNfZGlzdHJpYnV0aW9u
JiBfX2QyKQogICAgICB7IHJldHVybiBfX2QxLl9NX3BhcmFtID09IF9fZDIuX01fcGFyYW07IH0K
CiAgICBwcml2YXRlOgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAog
ICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19n
ZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwK
ICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1f
dHlwZSYgX19wKTsKCiAgICAgIHBhcmFtX3R5cGUgX01fcGFyYW07CiAgICB9OwoKCgoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0ludFR5cGU+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShj
b25zdCBzdGQ6Omdlb21ldHJpY19kaXN0cmlidXRpb248X0ludFR5cGU+JiBfX2QxLAogICAgICAg
IGNvbnN0IHN0ZDo6Z2VvbWV0cmljX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4mIF9fZDIpCiAgICB7
IHJldHVybiAhKF9fZDEgPT0gX19kMik7IH0KIyA0MTgwICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSW50VHlwZSwKICAgIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1Ry
YWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0
b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAgICAgICBj
b25zdCBzdGQ6Omdlb21ldHJpY19kaXN0cmlidXRpb248X0ludFR5cGU+JiBfX3gpOwojIDQxOTUg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
Yml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlLAogICAgdHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9U
cmFpdHM+JiBfX2lzLAogICAgICAgIHN0ZDo6Z2VvbWV0cmljX2Rpc3RyaWJ1dGlvbjxfSW50VHlw
ZT4mIF9feCk7CiMgNDIwOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lu
dFR5cGUgPSBpbnQ+CiAgICBjbGFzcyBuZWdhdGl2ZV9iaW5vbWlhbF9kaXN0cmlidXRpb24KICAg
IHsKICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPF9JbnRUeXBlPjo6dmFsdWUs
CiAgICAgICJ0ZW1wbGF0ZSBhcmd1bWVudCBub3QgYW4gaW50ZWdyYWwgdHlwZSIpOwoKICAgIHB1
YmxpYzoKCiAgICAgIHR5cGVkZWYgX0ludFR5cGUgcmVzdWx0X3R5cGU7CgogICAgICBzdHJ1Y3Qg
cGFyYW1fdHlwZQogICAgICB7CiB0eXBlZGVmIG5lZ2F0aXZlX2Jpbm9taWFsX2Rpc3RyaWJ1dGlv
bjxfSW50VHlwZT4gZGlzdHJpYnV0aW9uX3R5cGU7CgogZXhwbGljaXQKIHBhcmFtX3R5cGUoX0lu
dFR5cGUgX19rID0gMSwgZG91YmxlIF9fcCA9IDAuNSkKIDogX01fayhfX2spLCBfTV9wKF9fcCkK
IHsKICAgOwogfQoKIF9JbnRUeXBlCiBrKCkgY29uc3QKIHsgcmV0dXJuIF9NX2s7IH0KCiBkb3Vi
bGUKIHAoKSBjb25zdAogeyByZXR1cm4gX01fcDsgfQoKIGZyaWVuZCBib29sCiBvcGVyYXRvcj09
KGNvbnN0IHBhcmFtX3R5cGUmIF9fcDEsIGNvbnN0IHBhcmFtX3R5cGUmIF9fcDIpCiB7IHJldHVy
biBfX3AxLl9NX2sgPT0gX19wMi5fTV9rICYmIF9fcDEuX01fcCA9PSBfX3AyLl9NX3A7IH0KCiAg
ICAgIHByaXZhdGU6CiBfSW50VHlwZSBfTV9rOwogZG91YmxlIF9NX3A7CiAgICAgIH07CgogICAg
ICBleHBsaWNpdAogICAgICBuZWdhdGl2ZV9iaW5vbWlhbF9kaXN0cmlidXRpb24oX0ludFR5cGUg
X19rID0gMSwgZG91YmxlIF9fcCA9IDAuNSkKICAgICAgOiBfTV9wYXJhbShfX2ssIF9fcCksIF9N
X2dkKF9faywgKDEuMCAtIF9fcCkgLyBfX3ApCiAgICAgIHsgfQoKICAgICAgZXhwbGljaXQKICAg
ICAgbmVnYXRpdmVfYmlub21pYWxfZGlzdHJpYnV0aW9uKGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkK
ICAgICAgOiBfTV9wYXJhbShfX3ApLCBfTV9nZChfX3AuaygpLCAoMS4wIC0gX19wLnAoKSkgLyBf
X3AucCgpKQogICAgICB7IH0KCgoKCiAgICAgIHZvaWQKICAgICAgcmVzZXQoKQogICAgICB7IF9N
X2dkLnJlc2V0KCk7IH0KCgoKCiAgICAgIF9JbnRUeXBlCiAgICAgIGsoKSBjb25zdAogICAgICB7
IHJldHVybiBfTV9wYXJhbS5rKCk7IH0KCgoKCiAgICAgIGRvdWJsZQogICAgICBwKCkgY29uc3QK
ICAgICAgeyByZXR1cm4gX01fcGFyYW0ucCgpOyB9CgoKCgogICAgICBwYXJhbV90eXBlCiAgICAg
IHBhcmFtKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW07IH0KCgoKCgogICAgICB2b2lk
CiAgICAgIHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIF9fcGFyYW0pCiAgICAgIHsgX01fcGFyYW0g
PSBfX3BhcmFtOyB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBtaW4oKSBjb25zdAogICAg
ICB7IHJldHVybiByZXN1bHRfdHlwZSgwKTsgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAg
bWF4KCkgY29uc3QKICAgICAgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlw
ZT46Om1heCgpOyB9CgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51
bWJlckdlbmVyYXRvcj4KIHJlc3VsdF90eXBlCiAgICAgICAgb3BlcmF0b3IoKShfVW5pZm9ybVJh
bmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nKTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9V
bmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1Vu
aWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBl
JiBfX3ApOwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAg
ICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJh
dGUoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlm
b3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1w
bChfX2YsIF9fdCwgX191cm5nKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJ
dGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4K
IHZvaWQKIF9fZ2VuZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3Ig
X190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29u
c3QgcGFyYW1fdHlwZSYgX19wKQogeyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9f
dXJuZywgX19wKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1i
ZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKHJlc3VsdF90eXBlKiBfX2YsIHJlc3VsdF90
eXBlKiBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKIHsg
dGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcpOyB9CgogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJh
dGUocmVzdWx0X3R5cGUqIF9fZiwgcmVzdWx0X3R5cGUqIF9fdCwKICAgICBfVW5pZm9ybVJhbmRv
bU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKIHsg
dGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcsIF9fcCk7IH0KCgoKCgoKICAg
ICAgZnJpZW5kIGJvb2wKICAgICAgb3BlcmF0b3I9PShjb25zdCBuZWdhdGl2ZV9iaW5vbWlhbF9k
aXN0cmlidXRpb24mIF9fZDEsCiAgIGNvbnN0IG5lZ2F0aXZlX2Jpbm9taWFsX2Rpc3RyaWJ1dGlv
biYgX19kMikKICAgICAgeyByZXR1cm4gX19kMS5fTV9wYXJhbSA9PSBfX2QyLl9NX3BhcmFtICYm
IF9fZDEuX01fZ2QgPT0gX19kMi5fTV9nZDsgfQojIDQzNjggIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlwZTEsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg
X1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKIG9w
ZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAgICAg
Y29uc3Qgc3RkOjpuZWdhdGl2ZV9iaW5vbWlhbF9kaXN0cmlidXRpb248X0ludFR5cGUxPiYgX194
KTsKIyA0MzgzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5
cGUxLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiBmcmllbmQgc3RkOjpiYXNp
Y19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVh
bTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgIHN0ZDo6bmVnYXRpdmVfYmlub21pYWxfZGlz
dHJpYnV0aW9uPF9JbnRUeXBlMT4mIF9feCk7CgogICAgcHJpdmF0ZToKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRv
bU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9y
IF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJh
dG9yJiBfX3VybmcpOwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAog
ICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19n
ZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwK
ICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1f
dHlwZSYgX19wKTsKCiAgICAgIHBhcmFtX3R5cGUgX01fcGFyYW07CgogICAgICBzdGQ6OmdhbW1h
X2Rpc3RyaWJ1dGlvbjxkb3VibGU+IF9NX2dkOwogICAgfTsKCgoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ludFR5cGU+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCBzdGQ6Om5l
Z2F0aXZlX2Jpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4mIF9fZDEsCiAgICAgICAgY29u
c3Qgc3RkOjpuZWdhdGl2ZV9iaW5vbWlhbF9kaXN0cmlidXRpb248X0ludFR5cGU+JiBfX2QyKQog
ICAgeyByZXR1cm4gIShfX2QxID09IF9fZDIpOyB9CiMgNDQzMSAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGUgPSBpbnQ+CiAgICBjbGFzcyBwb2lzc29uX2Rpc3Ry
aWJ1dGlvbgogICAgewogICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8X0ludFR5
cGU+Ojp2YWx1ZSwKICAgICAgInRlbXBsYXRlIGFyZ3VtZW50IG5vdCBhbiBpbnRlZ3JhbCB0eXBl
Iik7CgogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBfSW50VHlwZSByZXN1bHRfdHlwZTsKCiAg
ICAgIHN0cnVjdCBwYXJhbV90eXBlCiAgICAgIHsKIHR5cGVkZWYgcG9pc3Nvbl9kaXN0cmlidXRp
b248X0ludFR5cGU+IGRpc3RyaWJ1dGlvbl90eXBlOwogZnJpZW5kIGNsYXNzIHBvaXNzb25fZGlz
dHJpYnV0aW9uPF9JbnRUeXBlPjsKCiBleHBsaWNpdAogcGFyYW1fdHlwZShkb3VibGUgX19tZWFu
ID0gMS4wKQogOiBfTV9tZWFuKF9fbWVhbikKIHsKICAgOwogICBfTV9pbml0aWFsaXplKCk7CiB9
CgogZG91YmxlCiBtZWFuKCkgY29uc3QKIHsgcmV0dXJuIF9NX21lYW47IH0KCiBmcmllbmQgYm9v
bAogb3BlcmF0b3I9PShjb25zdCBwYXJhbV90eXBlJiBfX3AxLCBjb25zdCBwYXJhbV90eXBlJiBf
X3AyKQogeyByZXR1cm4gX19wMS5fTV9tZWFuID09IF9fcDIuX01fbWVhbjsgfQoKICAgICAgcHJp
dmF0ZToKCiB2b2lkCiBfTV9pbml0aWFsaXplKCk7CgogZG91YmxlIF9NX21lYW47CgogZG91Ymxl
IF9NX2xtX3RocjsKCiBkb3VibGUgX01fbGZtLCBfTV9zbSwgX01fZCwgX01fc2N4LCBfTV8xY3gs
IF9NX2MyYiwgX01fY2I7CgogICAgICB9OwoKCiAgICAgIGV4cGxpY2l0CiAgICAgIHBvaXNzb25f
ZGlzdHJpYnV0aW9uKGRvdWJsZSBfX21lYW4gPSAxLjApCiAgICAgIDogX01fcGFyYW0oX19tZWFu
KSwgX01fbmQoKQogICAgICB7IH0KCiAgICAgIGV4cGxpY2l0CiAgICAgIHBvaXNzb25fZGlzdHJp
YnV0aW9uKGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKICAgICAgOiBfTV9wYXJhbShfX3ApLCBfTV9u
ZCgpCiAgICAgIHsgfQoKCgoKICAgICAgdm9pZAogICAgICByZXNldCgpCiAgICAgIHsgX01fbmQu
cmVzZXQoKTsgfQoKCgoKICAgICAgZG91YmxlCiAgICAgIG1lYW4oKSBjb25zdAogICAgICB7IHJl
dHVybiBfTV9wYXJhbS5tZWFuKCk7IH0KCgoKCiAgICAgIHBhcmFtX3R5cGUKICAgICAgcGFyYW0o
KSBjb25zdAogICAgICB7IHJldHVybiBfTV9wYXJhbTsgfQoKCgoKCiAgICAgIHZvaWQKICAgICAg
cGFyYW0oY29uc3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAgICAgeyBfTV9wYXJhbSA9IF9fcGFy
YW07IH0KCgoKCiAgICAgIHJlc3VsdF90eXBlCiAgICAgIG1pbigpIGNvbnN0CiAgICAgIHsgcmV0
dXJuIDA7IH0KCgoKCiAgICAgIHJlc3VsdF90eXBlCiAgICAgIG1heCgpIGNvbnN0CiAgICAgIHsg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptYXgoKTsgfQoKCgoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiByZXN1
bHRfdHlwZQogb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5n
KQogeyByZXR1cm4gdGhpcy0+b3BlcmF0b3IoKShfX3VybmcsIF9NX3BhcmFtKTsgfQoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiByZXN1bHRf
dHlwZQogb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAog
ICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCk7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9y
d2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJh
dG9yPgogdm9pZAogX19nZW5lcmF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVy
YXRvciBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKIHsg
dGhpcy0+X19nZW5lcmF0ZShfX2YsIF9fdCwgX191cm5nLCBfTV9wYXJhbSk7IH0KCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZv
cm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKF9Gb3J3YXJkSXRlcmF0
b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdl
bmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKIHsgdGhpcy0+X19n
ZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcsIF9fcCk7IH0KCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShy
ZXN1bHRfdHlwZSogX19mLCByZXN1bHRfdHlwZSogX190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVt
YmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogeyB0aGlz
LT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9fdXJuZywgX19wKTsgfQoKCgoKCgogICAgICBm
cmllbmQgYm9vbAogICAgICBvcGVyYXRvcj09KGNvbnN0IHBvaXNzb25fZGlzdHJpYnV0aW9uJiBf
X2QxLAogICBjb25zdCBwb2lzc29uX2Rpc3RyaWJ1dGlvbiYgX19kMikKCiAgICAgIHsgcmV0dXJu
IF9fZDEuX01fcGFyYW0gPT0gX19kMi5fTV9wYXJhbSAmJiBfX2QxLl9NX25kID09IF9fZDIuX01f
bmQ7IH0KIyA0NTg4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lu
dFR5cGUxLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiBmcmllbmQgc3RkOjpi
YXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgIGNvbnN0IHN0ZDo6cG9pc3Nvbl9kaXN0
cmlidXRpb248X0ludFR5cGUxPiYgX194KTsKIyA0NjAzICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGUxLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHM+CiBmcmllbmQgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiBvcGVy
YXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgIHN0
ZDo6cG9pc3Nvbl9kaXN0cmlidXRpb248X0ludFR5cGUxPiYgX194KTsKCiAgICBwcml2YXRlOgog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1l
IF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZV9pbXBsKF9G
b3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZvcm1SYW5k
b21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKTsKCiAg
ICAgIHBhcmFtX3R5cGUgX01fcGFyYW07CgoKICAgICAgc3RkOjpub3JtYWxfZGlzdHJpYnV0aW9u
PGRvdWJsZT4gX01fbmQ7CiAgICB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlwZT4K
ICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHN0ZDo6cG9pc3Nvbl9kaXN0cmli
dXRpb248X0ludFR5cGU+JiBfX2QxLAogICAgICAgIGNvbnN0IHN0ZDo6cG9pc3Nvbl9kaXN0cmli
dXRpb248X0ludFR5cGU+JiBfX2QyKQogICAgeyByZXR1cm4gIShfX2QxID09IF9fZDIpOyB9CiMg
NDY0NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlID0gZG91
YmxlPgogICAgY2xhc3MgZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uCiAgICB7CiAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19mbG9hdGluZ19wb2ludDxfUmVhbFR5cGU+Ojp2YWx1ZSwKICAgICAg
InRlbXBsYXRlIGFyZ3VtZW50IG5vdCBhIGZsb2F0aW5nIHBvaW50IHR5cGUiKTsKCiAgICBwdWJs
aWM6CgogICAgICB0eXBlZGVmIF9SZWFsVHlwZSByZXN1bHRfdHlwZTsKCiAgICAgIHN0cnVjdCBw
YXJhbV90eXBlCiAgICAgIHsKIHR5cGVkZWYgZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uPF9SZWFs
VHlwZT4gZGlzdHJpYnV0aW9uX3R5cGU7CgogZXhwbGljaXQKIHBhcmFtX3R5cGUoX1JlYWxUeXBl
IF9fbGFtYmRhID0gX1JlYWxUeXBlKDEpKQogOiBfTV9sYW1iZGEoX19sYW1iZGEpCiB7CiAgIDsK
IH0KCiBfUmVhbFR5cGUKIGxhbWJkYSgpIGNvbnN0CiB7IHJldHVybiBfTV9sYW1iZGE7IH0KCiBm
cmllbmQgYm9vbAogb3BlcmF0b3I9PShjb25zdCBwYXJhbV90eXBlJiBfX3AxLCBjb25zdCBwYXJh
bV90eXBlJiBfX3AyKQogeyByZXR1cm4gX19wMS5fTV9sYW1iZGEgPT0gX19wMi5fTV9sYW1iZGE7
IH0KCiAgICAgIHByaXZhdGU6CiBfUmVhbFR5cGUgX01fbGFtYmRhOwogICAgICB9OwoKICAgIHB1
YmxpYzoKCgoKCiAgICAgIGV4cGxpY2l0CiAgICAgIGV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbihj
b25zdCByZXN1bHRfdHlwZSYgX19sYW1iZGEgPSByZXN1bHRfdHlwZSgxKSkKICAgICAgOiBfTV9w
YXJhbShfX2xhbWJkYSkKICAgICAgeyB9CgogICAgICBleHBsaWNpdAogICAgICBleHBvbmVudGlh
bF9kaXN0cmlidXRpb24oY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAgICA6IF9NX3BhcmFtKF9f
cCkKICAgICAgeyB9CgoKCgoKCiAgICAgIHZvaWQKICAgICAgcmVzZXQoKSB7IH0KCgoKCiAgICAg
IF9SZWFsVHlwZQogICAgICBsYW1iZGEoKSBjb25zdAogICAgICB7IHJldHVybiBfTV9wYXJhbS5s
YW1iZGEoKTsgfQoKCgoKICAgICAgcGFyYW1fdHlwZQogICAgICBwYXJhbSgpIGNvbnN0CiAgICAg
IHsgcmV0dXJuIF9NX3BhcmFtOyB9CgoKCgoKICAgICAgdm9pZAogICAgICBwYXJhbShjb25zdCBw
YXJhbV90eXBlJiBfX3BhcmFtKQogICAgICB7IF9NX3BhcmFtID0gX19wYXJhbTsgfQoKCgoKICAg
ICAgcmVzdWx0X3R5cGUKICAgICAgbWluKCkgY29uc3QKICAgICAgeyByZXR1cm4gcmVzdWx0X3R5
cGUoMCk7IH0KCgoKCiAgICAgIHJlc3VsdF90eXBlCiAgICAgIG1heCgpIGNvbnN0CiAgICAgIHsg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptYXgoKTsgfQoKCgoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiByZXN1
bHRfdHlwZQogb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5n
KQogICAgICAgIHsgcmV0dXJuIHRoaXMtPm9wZXJhdG9yKCkoX191cm5nLCBfTV9wYXJhbSk7IH0K
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgog
cmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9f
dXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7CiAgIF9fZGV0YWlsOjpfQWRhcHRv
cjxfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgcmVzdWx0X3R5cGU+CiAgICAgX19hdXJu
ZyhfX3VybmcpOwogICByZXR1cm4gLXN0ZDo6bG9nKHJlc3VsdF90eXBlKDEpIC0gX19hdXJuZygp
KSAvIF9fcC5sYW1iZGEoKTsKIH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRl
cmF0b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2
b2lkCiBfX2dlbmVyYXRlKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9f
dCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nKQogeyB0aGlzLT5f
X2dlbmVyYXRlKF9fZiwgX190LCBfX3VybmcsIF9NX3BhcmFtKTsgfQoKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRv
bU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2Ys
IF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9y
JiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogeyB0aGlzLT5fX2dlbmVyYXRl
X2ltcGwoX19mLCBfX3QsIF9fdXJuZywgX19wKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKHJlc3VsdF90
eXBlKiBfX2YsIHJlc3VsdF90eXBlKiBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5l
cmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7IHRoaXMtPl9fZ2Vu
ZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBfX3ApOyB9CgoKCgoKICAgICAgZnJpZW5kIGJv
b2wKICAgICAgb3BlcmF0b3I9PShjb25zdCBleHBvbmVudGlhbF9kaXN0cmlidXRpb24mIF9fZDEs
CiAgIGNvbnN0IGV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbiYgX19kMikKICAgICAgeyByZXR1cm4g
X19kMS5fTV9wYXJhbSA9PSBfX2QyLl9NX3BhcmFtOyB9CgogICAgcHJpdmF0ZToKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9y
bVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGVfaW1wbChfRm9yd2FyZEl0
ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVy
R2VuZXJhdG9yJiBfX3VybmcsCiAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCk7CgogICAgICBwYXJh
bV90eXBlIF9NX3BhcmFtOwogICAgfTsKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlw
ZT4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHN0ZDo6ZXhwb25lbnRpYWxf
ZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9fZDEsCiAgICAgICAgY29uc3Qgc3RkOjpleHBvbmVu
dGlhbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX19kMikKICAgIHsgcmV0dXJuICEoX19kMSA9
PSBfX2QyKTsgfQojIDQ4MTkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
ZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNp
Y19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgICAgIGNvbnN0IHN0ZDo6ZXhwb25lbnRp
YWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9feCk7CiMgNDgzNCAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRvbS5oIiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9w
ZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAg
ICAgc3RkOjpleHBvbmVudGlhbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194KTsKIyA0ODQ5
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvcmFuZG9tLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUgPSBkb3VibGU+
CiAgICBjbGFzcyB3ZWlidWxsX2Rpc3RyaWJ1dGlvbgogICAgewogICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8X1JlYWxUeXBlPjo6dmFsdWUsCiAgICAgICJ0ZW1wbGF0
ZSBhcmd1bWVudCBub3QgYSBmbG9hdGluZyBwb2ludCB0eXBlIik7CgogICAgcHVibGljOgoKICAg
ICAgdHlwZWRlZiBfUmVhbFR5cGUgcmVzdWx0X3R5cGU7CgogICAgICBzdHJ1Y3QgcGFyYW1fdHlw
ZQogICAgICB7CiB0eXBlZGVmIHdlaWJ1bGxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4gZGlzdHJp
YnV0aW9uX3R5cGU7CgogZXhwbGljaXQKIHBhcmFtX3R5cGUoX1JlYWxUeXBlIF9fYSA9IF9SZWFs
VHlwZSgxKSwKICAgICBfUmVhbFR5cGUgX19iID0gX1JlYWxUeXBlKDEpKQogOiBfTV9hKF9fYSks
IF9NX2IoX19iKQogeyB9CgogX1JlYWxUeXBlCiBhKCkgY29uc3QKIHsgcmV0dXJuIF9NX2E7IH0K
CiBfUmVhbFR5cGUKIGIoKSBjb25zdAogeyByZXR1cm4gX01fYjsgfQoKIGZyaWVuZCBib29sCiBv
cGVyYXRvcj09KGNvbnN0IHBhcmFtX3R5cGUmIF9fcDEsIGNvbnN0IHBhcmFtX3R5cGUmIF9fcDIp
CiB7IHJldHVybiBfX3AxLl9NX2EgPT0gX19wMi5fTV9hICYmIF9fcDEuX01fYiA9PSBfX3AyLl9N
X2I7IH0KCiAgICAgIHByaXZhdGU6CiBfUmVhbFR5cGUgX01fYTsKIF9SZWFsVHlwZSBfTV9iOwog
ICAgICB9OwoKICAgICAgZXhwbGljaXQKICAgICAgd2VpYnVsbF9kaXN0cmlidXRpb24oX1JlYWxU
eXBlIF9fYSA9IF9SZWFsVHlwZSgxKSwKICAgICAgX1JlYWxUeXBlIF9fYiA9IF9SZWFsVHlwZSgx
KSkKICAgICAgOiBfTV9wYXJhbShfX2EsIF9fYikKICAgICAgeyB9CgogICAgICBleHBsaWNpdAog
ICAgICB3ZWlidWxsX2Rpc3RyaWJ1dGlvbihjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgIDog
X01fcGFyYW0oX19wKQogICAgICB7IH0KCgoKCiAgICAgIHZvaWQKICAgICAgcmVzZXQoKQogICAg
ICB7IH0KCgoKCiAgICAgIF9SZWFsVHlwZQogICAgICBhKCkgY29uc3QKICAgICAgeyByZXR1cm4g
X01fcGFyYW0uYSgpOyB9CgoKCgogICAgICBfUmVhbFR5cGUKICAgICAgYigpIGNvbnN0CiAgICAg
IHsgcmV0dXJuIF9NX3BhcmFtLmIoKTsgfQoKCgoKICAgICAgcGFyYW1fdHlwZQogICAgICBwYXJh
bSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFtOyB9CgoKCgoKICAgICAgdm9pZAogICAg
ICBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBfX3BhcmFtKQogICAgICB7IF9NX3BhcmFtID0gX19w
YXJhbTsgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgbWluKCkgY29uc3QKICAgICAgeyBy
ZXR1cm4gcmVzdWx0X3R5cGUoMCk7IH0KCgoKCiAgICAgIHJlc3VsdF90eXBlCiAgICAgIG1heCgp
IGNvbnN0CiAgICAgIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+Ojpt
YXgoKTsgfQoKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJH
ZW5lcmF0b3I+CiByZXN1bHRfdHlwZQogb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdl
bmVyYXRvciYgX191cm5nKQogeyByZXR1cm4gdGhpcy0+b3BlcmF0b3IoKShfX3VybmcsIF9NX3Bh
cmFtKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5l
cmF0b3I+CiByZXN1bHRfdHlwZQogb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVy
YXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCk7CgogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFu
ZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9f
ZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0
b3ImIF9fdXJuZykKIHsgdGhpcy0+X19nZW5lcmF0ZShfX2YsIF9fdCwgX191cm5nLCBfTV9wYXJh
bSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAg
dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRl
KF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICBfVW5pZm9y
bVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9f
cCkKIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcsIF9fcCk7IH0KCiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9p
ZAogX19nZW5lcmF0ZShyZXN1bHRfdHlwZSogX19mLCByZXN1bHRfdHlwZSogX190LAogICAgIF9V
bmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlw
ZSYgX19wKQogeyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9fdXJuZywgX19wKTsg
fQoKCgoKCiAgICAgIGZyaWVuZCBib29sCiAgICAgIG9wZXJhdG9yPT0oY29uc3Qgd2VpYnVsbF9k
aXN0cmlidXRpb24mIF9fZDEsCiAgIGNvbnN0IHdlaWJ1bGxfZGlzdHJpYnV0aW9uJiBfX2QyKQog
ICAgICB7IHJldHVybiBfX2QxLl9NX3BhcmFtID09IF9fZDIuX01fcGFyYW07IH0KCiAgICBwcml2
YXRlOgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5
cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZV9p
bXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZv
cm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1fdHlwZSYgX19w
KTsKCiAgICAgIHBhcmFtX3R5cGUgX01fcGFyYW07CiAgICB9OwoKCgoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1JlYWxUeXBlPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3Qgc3Rk
Ojp3ZWlidWxsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX2QxLAogICAgICAgIGNvbnN0IHN0
ZDo6d2VpYnVsbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX19kMikKICAgIHsgcmV0dXJuICEo
X19kMSA9PSBfX2QyKTsgfQojIDUwMjIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3Rk
OjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KHN0ZDo6YmFz
aWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgICAgIGNvbnN0IHN0ZDo6d2Vp
YnVsbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194KTsKIyA1MDM3ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAg
b3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywKICAg
ICAgICBzdGQ6OndlaWJ1bGxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9feCk7CiMgNTA1MiAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9i
aXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlID0gZG91YmxlPgog
ICAgY2xhc3MgZXh0cmVtZV92YWx1ZV9kaXN0cmlidXRpb24KICAgIHsKICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PF9SZWFsVHlwZT46OnZhbHVlLAogICAgICAidGVt
cGxhdGUgYXJndW1lbnQgbm90IGEgZmxvYXRpbmcgcG9pbnQgdHlwZSIpOwoKICAgIHB1YmxpYzoK
CiAgICAgIHR5cGVkZWYgX1JlYWxUeXBlIHJlc3VsdF90eXBlOwoKICAgICAgc3RydWN0IHBhcmFt
X3R5cGUKICAgICAgewogdHlwZWRlZiBleHRyZW1lX3ZhbHVlX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5
cGU+IGRpc3RyaWJ1dGlvbl90eXBlOwoKIGV4cGxpY2l0CiBwYXJhbV90eXBlKF9SZWFsVHlwZSBf
X2EgPSBfUmVhbFR5cGUoMCksCiAgICAgX1JlYWxUeXBlIF9fYiA9IF9SZWFsVHlwZSgxKSkKIDog
X01fYShfX2EpLCBfTV9iKF9fYikKIHsgfQoKIF9SZWFsVHlwZQogYSgpIGNvbnN0CiB7IHJldHVy
biBfTV9hOyB9CgogX1JlYWxUeXBlCiBiKCkgY29uc3QKIHsgcmV0dXJuIF9NX2I7IH0KCiBmcmll
bmQgYm9vbAogb3BlcmF0b3I9PShjb25zdCBwYXJhbV90eXBlJiBfX3AxLCBjb25zdCBwYXJhbV90
eXBlJiBfX3AyKQogeyByZXR1cm4gX19wMS5fTV9hID09IF9fcDIuX01fYSAmJiBfX3AxLl9NX2Ig
PT0gX19wMi5fTV9iOyB9CgogICAgICBwcml2YXRlOgogX1JlYWxUeXBlIF9NX2E7CiBfUmVhbFR5
cGUgX01fYjsKICAgICAgfTsKCiAgICAgIGV4cGxpY2l0CiAgICAgIGV4dHJlbWVfdmFsdWVfZGlz
dHJpYnV0aW9uKF9SZWFsVHlwZSBfX2EgPSBfUmVhbFR5cGUoMCksCiAgICAgX1JlYWxUeXBlIF9f
YiA9IF9SZWFsVHlwZSgxKSkKICAgICAgOiBfTV9wYXJhbShfX2EsIF9fYikKICAgICAgeyB9Cgog
ICAgICBleHBsaWNpdAogICAgICBleHRyZW1lX3ZhbHVlX2Rpc3RyaWJ1dGlvbihjb25zdCBwYXJh
bV90eXBlJiBfX3ApCiAgICAgIDogX01fcGFyYW0oX19wKQogICAgICB7IH0KCgoKCiAgICAgIHZv
aWQKICAgICAgcmVzZXQoKQogICAgICB7IH0KCgoKCiAgICAgIF9SZWFsVHlwZQogICAgICBhKCkg
Y29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW0uYSgpOyB9CgoKCgogICAgICBfUmVhbFR5cGUK
ICAgICAgYigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFtLmIoKTsgfQoKCgoKICAgICAg
cGFyYW1fdHlwZQogICAgICBwYXJhbSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFtOyB9
CgoKCgoKICAgICAgdm9pZAogICAgICBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBfX3BhcmFtKQog
ICAgICB7IF9NX3BhcmFtID0gX19wYXJhbTsgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAg
bWluKCkgY29uc3QKICAgICAgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlw
ZT46Omxvd2VzdCgpOyB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBtYXgoKSBjb25zdAog
ICAgICB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWF4KCk7IH0K
CgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9y
PgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3Im
IF9fdXJuZykKIHsgcmV0dXJuIHRoaXMtPm9wZXJhdG9yKCkoX191cm5nLCBfTV9wYXJhbSk7IH0K
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgog
cmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9f
dXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApOwoKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJl
ckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3
YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3Vy
bmcpCiB7IHRoaXMtPl9fZ2VuZXJhdGUoX19mLCBfX3QsIF9fdXJuZywgX01fcGFyYW0pOyB9Cgog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1l
IF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShfRm9yd2Fy
ZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21O
dW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7IHRo
aXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBfX3ApOyB9CgogICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2Vu
ZXJhdGUocmVzdWx0X3R5cGUqIF9fZiwgcmVzdWx0X3R5cGUqIF9fdCwKICAgICBfVW5pZm9ybVJh
bmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkK
IHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcsIF9fcCk7IH0KCgoKCgog
ICAgICBmcmllbmQgYm9vbAogICAgICBvcGVyYXRvcj09KGNvbnN0IGV4dHJlbWVfdmFsdWVfZGlz
dHJpYnV0aW9uJiBfX2QxLAogICBjb25zdCBleHRyZW1lX3ZhbHVlX2Rpc3RyaWJ1dGlvbiYgX19k
MikKICAgICAgeyByZXR1cm4gX19kMS5fTV9wYXJhbSA9PSBfX2QyLl9NX3BhcmFtOyB9CgogICAg
cHJpdmF0ZToKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAg
ICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJh
dGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgIF9V
bmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgIGNvbnN0IHBhcmFtX3R5cGUm
IF9fcCk7CgogICAgICBwYXJhbV90eXBlIF9NX3BhcmFtOwogICAgfTsKCgoKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0
IHN0ZDo6ZXh0cmVtZV92YWx1ZV9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX19kMSwKICAgICAg
ICBjb25zdCBzdGQ6OmV4dHJlbWVfdmFsdWVfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9fZDIp
CiAgICB7IHJldHVybiAhKF9fZDEgPT0gX19kMik7IH0KIyA1MjI1ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg
X1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3Bl
cmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAgICAg
ICBjb25zdCBzdGQ6OmV4dHJlbWVfdmFsdWVfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9feCk7
CiMgNTI0MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlLCB0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX2lzdHJlYW08
X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz4mIF9faXMsCiAgICAgICAgc3RkOjpleHRyZW1lX3ZhbHVlX2Rpc3RyaWJ1dGlv
bjxfUmVhbFR5cGU+JiBfX3gpOwojIDUyNTIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9JbnRUeXBlID0gaW50PgogICAgY2xhc3MgZGlzY3JldGVfZGlzdHJpYnV0aW9uCiAg
ICB7CiAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxfSW50VHlwZT46OnZhbHVl
LAogICAgICAidGVtcGxhdGUgYXJndW1lbnQgbm90IGFuIGludGVncmFsIHR5cGUiKTsKCiAgICBw
dWJsaWM6CgogICAgICB0eXBlZGVmIF9JbnRUeXBlIHJlc3VsdF90eXBlOwoKICAgICAgc3RydWN0
IHBhcmFtX3R5cGUKICAgICAgewogdHlwZWRlZiBkaXNjcmV0ZV9kaXN0cmlidXRpb248X0ludFR5
cGU+IGRpc3RyaWJ1dGlvbl90eXBlOwogZnJpZW5kIGNsYXNzIGRpc2NyZXRlX2Rpc3RyaWJ1dGlv
bjxfSW50VHlwZT47CgogcGFyYW1fdHlwZSgpCiA6IF9NX3Byb2IoKSwgX01fY3AoKQogeyB9Cgog
dGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiAgIHBhcmFtX3R5cGUoX0lucHV0SXRl
cmF0b3IgX193YmVnaW4sCiAgICAgICBfSW5wdXRJdGVyYXRvciBfX3dlbmQpCiAgIDogX01fcHJv
YihfX3diZWdpbiwgX193ZW5kKSwgX01fY3AoKQogICB7IF9NX2luaXRpYWxpemUoKTsgfQoKIHBh
cmFtX3R5cGUoaW5pdGlhbGl6ZXJfbGlzdDxkb3VibGU+IF9fd2lsKQogOiBfTV9wcm9iKF9fd2ls
LmJlZ2luKCksIF9fd2lsLmVuZCgpKSwgX01fY3AoKQogeyBfTV9pbml0aWFsaXplKCk7IH0KCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBfRnVuYz4KICAgcGFyYW1fdHlwZShzaXplX3QgX19udywgZG91Ymxl
IF9feG1pbiwgZG91YmxlIF9feG1heCwKICAgICAgIF9GdW5jIF9fZncpOwoKCiBwYXJhbV90eXBl
KGNvbnN0IHBhcmFtX3R5cGUmKSA9IGRlZmF1bHQ7CiBwYXJhbV90eXBlJiBvcGVyYXRvcj0oY29u
c3QgcGFyYW1fdHlwZSYpID0gZGVmYXVsdDsKCiBzdGQ6OnZlY3Rvcjxkb3VibGU+CiBwcm9iYWJp
bGl0aWVzKCkgY29uc3QKIHsgcmV0dXJuIF9NX3Byb2IuZW1wdHkoKSA/IHN0ZDo6dmVjdG9yPGRv
dWJsZT4oMSwgMS4wKSA6IF9NX3Byb2I7IH0KCiBmcmllbmQgYm9vbAogb3BlcmF0b3I9PShjb25z
dCBwYXJhbV90eXBlJiBfX3AxLCBjb25zdCBwYXJhbV90eXBlJiBfX3AyKQogeyByZXR1cm4gX19w
MS5fTV9wcm9iID09IF9fcDIuX01fcHJvYjsgfQoKICAgICAgcHJpdmF0ZToKIHZvaWQKIF9NX2lu
aXRpYWxpemUoKTsKCiBzdGQ6OnZlY3Rvcjxkb3VibGU+IF9NX3Byb2I7CiBzdGQ6OnZlY3Rvcjxk
b3VibGU+IF9NX2NwOwogICAgICB9OwoKICAgICAgZGlzY3JldGVfZGlzdHJpYnV0aW9uKCkKICAg
ICAgOiBfTV9wYXJhbSgpCiAgICAgIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0
SXRlcmF0b3I+CiBkaXNjcmV0ZV9kaXN0cmlidXRpb24oX0lucHV0SXRlcmF0b3IgX193YmVnaW4s
CiAgICAgICAgIF9JbnB1dEl0ZXJhdG9yIF9fd2VuZCkKIDogX01fcGFyYW0oX193YmVnaW4sIF9f
d2VuZCkKIHsgfQoKICAgICAgZGlzY3JldGVfZGlzdHJpYnV0aW9uKGluaXRpYWxpemVyX2xpc3Q8
ZG91YmxlPiBfX3dsKQogICAgICA6IF9NX3BhcmFtKF9fd2wpCiAgICAgIHsgfQoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX0Z1bmM+CiBkaXNjcmV0ZV9kaXN0cmlidXRpb24oc2l6ZV90IF9fbncs
IGRvdWJsZSBfX3htaW4sIGRvdWJsZSBfX3htYXgsCiAgICAgICAgIF9GdW5jIF9fZncpCiA6IF9N
X3BhcmFtKF9fbncsIF9feG1pbiwgX194bWF4LCBfX2Z3KQogeyB9CgogICAgICBleHBsaWNpdAog
ICAgICBkaXNjcmV0ZV9kaXN0cmlidXRpb24oY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAgICA6
IF9NX3BhcmFtKF9fcCkKICAgICAgeyB9CgoKCgogICAgICB2b2lkCiAgICAgIHJlc2V0KCkKICAg
ICAgeyB9CgoKCgogICAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+CiAgICAgIHByb2JhYmlsaXRpZXMo
KSBjb25zdAogICAgICB7CiByZXR1cm4gX01fcGFyYW0uX01fcHJvYi5lbXB0eSgpCiAgID8gc3Rk
Ojp2ZWN0b3I8ZG91YmxlPigxLCAxLjApIDogX01fcGFyYW0uX01fcHJvYjsKICAgICAgfQoKCgoK
ICAgICAgcGFyYW1fdHlwZQogICAgICBwYXJhbSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3Bh
cmFtOyB9CgoKCgoKICAgICAgdm9pZAogICAgICBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBfX3Bh
cmFtKQogICAgICB7IF9NX3BhcmFtID0gX19wYXJhbTsgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUK
ICAgICAgbWluKCkgY29uc3QKICAgICAgeyByZXR1cm4gcmVzdWx0X3R5cGUoMCk7IH0KCgoKCiAg
ICAgIHJlc3VsdF90eXBlCiAgICAgIG1heCgpIGNvbnN0CiAgICAgIHsKIHJldHVybiBfTV9wYXJh
bS5fTV9wcm9iLmVtcHR5KCkKICAgPyByZXN1bHRfdHlwZSgwKSA6IHJlc3VsdF90eXBlKF9NX3Bh
cmFtLl9NX3Byb2Iuc2l6ZSgpIC0gMSk7CiAgICAgIH0KCgoKCiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9y
KCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKIHsgcmV0dXJuIHRoaXMt
Pm9wZXJhdG9yKCkoX191cm5nLCBfTV9wYXJhbSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCko
X1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90
eXBlJiBfX3ApOwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAg
ICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2Vu
ZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9V
bmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHRoaXMtPl9fZ2VuZXJhdGUo
X19mLCBfX3QsIF9fdXJuZywgX01fcGFyYW0pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Rm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2Vu
ZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJ
dGVyYXRvciBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywK
ICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2Ys
IF9fdCwgX191cm5nLCBfX3ApOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJh
bmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUocmVzdWx0X3R5cGUqIF9fZiwg
cmVzdWx0X3R5cGUqIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191
cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBs
KF9fZiwgX190LCBfX3VybmcsIF9fcCk7IH0KCgoKCgogICAgICBmcmllbmQgYm9vbAogICAgICBv
cGVyYXRvcj09KGNvbnN0IGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbiYgX19kMSwKICAgY29uc3QgZGlz
Y3JldGVfZGlzdHJpYnV0aW9uJiBfX2QyKQogICAgICB7IHJldHVybiBfX2QxLl9NX3BhcmFtID09
IF9fZDIuX01fcGFyYW07IH0KIyA1NDMzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ludFR5cGUxLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiBm
cmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiBvcGVyYXRvcjw8KHN0
ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgIGNvbnN0IHN0ZDo6
ZGlzY3JldGVfZGlzdHJpYnV0aW9uPF9JbnRUeXBlMT4mIF9feCk7CiMgNTQ0OSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRv
bS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlMSwgdHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9U
cmFpdHM+Jgogb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYg
X19pcywKICAgICBzdGQ6OmRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZTE+JiBfX3gpOwoK
ICAgIHByaXZhdGU6CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAg
ICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dl
bmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAog
ICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICBjb25zdCBwYXJhbV90
eXBlJiBfX3ApOwoKICAgICAgcGFyYW1fdHlwZSBfTV9wYXJhbTsKICAgIH07CgoKCgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSW50VHlwZT4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNv
bnN0IHN0ZDo6ZGlzY3JldGVfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPiYgX19kMSwKICAgICAgICBj
b25zdCBzdGQ6OmRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4mIF9fZDIpCiAgICB7IHJl
dHVybiAhKF9fZDEgPT0gX19kMik7IH0KIyA1NDgyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUmVhbFR5cGUgPSBkb3VibGU+CiAgICBjbGFzcyBwaWVjZXdpc2VfY29uc3Rh
bnRfZGlzdHJpYnV0aW9uCiAgICB7CiAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19mbG9hdGlu
Z19wb2ludDxfUmVhbFR5cGU+Ojp2YWx1ZSwKICAgICAgInRlbXBsYXRlIGFyZ3VtZW50IG5vdCBh
IGZsb2F0aW5nIHBvaW50IHR5cGUiKTsKCiAgICBwdWJsaWM6CgogICAgICB0eXBlZGVmIF9SZWFs
VHlwZSByZXN1bHRfdHlwZTsKCiAgICAgIHN0cnVjdCBwYXJhbV90eXBlCiAgICAgIHsKIHR5cGVk
ZWYgcGllY2V3aXNlX2NvbnN0YW50X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+IGRpc3RyaWJ1dGlv
bl90eXBlOwogZnJpZW5kIGNsYXNzIHBpZWNld2lzZV9jb25zdGFudF9kaXN0cmlidXRpb248X1Jl
YWxUeXBlPjsKCiBwYXJhbV90eXBlKCkKIDogX01faW50KCksIF9NX2RlbigpLCBfTV9jcCgpCiB7
IH0KCiB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvckIsIHR5cGVuYW1lIF9JbnB1dEl0
ZXJhdG9yVz4KICAgcGFyYW1fdHlwZShfSW5wdXRJdGVyYXRvckIgX19iZmlyc3QsCiAgICAgICBf
SW5wdXRJdGVyYXRvckIgX19iZW5kLAogICAgICAgX0lucHV0SXRlcmF0b3JXIF9fd2JlZ2luKTsK
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnVuYz4KICAgcGFyYW1fdHlwZShpbml0aWFsaXplcl9saXN0
PF9SZWFsVHlwZT4gX19iaSwgX0Z1bmMgX19mdyk7CgogdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmM+
CiAgIHBhcmFtX3R5cGUoc2l6ZV90IF9fbncsIF9SZWFsVHlwZSBfX3htaW4sIF9SZWFsVHlwZSBf
X3htYXgsCiAgICAgICBfRnVuYyBfX2Z3KTsKCgogcGFyYW1fdHlwZShjb25zdCBwYXJhbV90eXBl
JikgPSBkZWZhdWx0OwogcGFyYW1fdHlwZSYgb3BlcmF0b3I9KGNvbnN0IHBhcmFtX3R5cGUmKSA9
IGRlZmF1bHQ7Cgogc3RkOjp2ZWN0b3I8X1JlYWxUeXBlPgogaW50ZXJ2YWxzKCkgY29uc3QKIHsK
ICAgaWYgKF9NX2ludC5lbXB0eSgpKQogICAgIHsKICAgICAgIHN0ZDo6dmVjdG9yPF9SZWFsVHlw
ZT4gX190bXAoMik7CiAgICAgICBfX3RtcFsxXSA9IF9SZWFsVHlwZSgxKTsKICAgICAgIHJldHVy
biBfX3RtcDsKICAgICB9CiAgIGVsc2UKICAgICByZXR1cm4gX01faW50OwogfQoKIHN0ZDo6dmVj
dG9yPGRvdWJsZT4KIGRlbnNpdGllcygpIGNvbnN0CiB7IHJldHVybiBfTV9kZW4uZW1wdHkoKSA/
IHN0ZDo6dmVjdG9yPGRvdWJsZT4oMSwgMS4wKSA6IF9NX2RlbjsgfQoKIGZyaWVuZCBib29sCiBv
cGVyYXRvcj09KGNvbnN0IHBhcmFtX3R5cGUmIF9fcDEsIGNvbnN0IHBhcmFtX3R5cGUmIF9fcDIp
CiB7IHJldHVybiBfX3AxLl9NX2ludCA9PSBfX3AyLl9NX2ludCAmJiBfX3AxLl9NX2RlbiA9PSBf
X3AyLl9NX2RlbjsgfQoKICAgICAgcHJpdmF0ZToKIHZvaWQKIF9NX2luaXRpYWxpemUoKTsKCiBz
dGQ6OnZlY3RvcjxfUmVhbFR5cGU+IF9NX2ludDsKIHN0ZDo6dmVjdG9yPGRvdWJsZT4gX01fZGVu
Owogc3RkOjp2ZWN0b3I8ZG91YmxlPiBfTV9jcDsKICAgICAgfTsKCiAgICAgIGV4cGxpY2l0CiAg
ICAgIHBpZWNld2lzZV9jb25zdGFudF9kaXN0cmlidXRpb24oKQogICAgICA6IF9NX3BhcmFtKCkK
ICAgICAgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvckIsIHR5cGVu
YW1lIF9JbnB1dEl0ZXJhdG9yVz4KIHBpZWNld2lzZV9jb25zdGFudF9kaXN0cmlidXRpb24oX0lu
cHV0SXRlcmF0b3JCIF9fYmZpcnN0LAogICAgIF9JbnB1dEl0ZXJhdG9yQiBfX2JlbmQsCiAgICAg
X0lucHV0SXRlcmF0b3JXIF9fd2JlZ2luKQogOiBfTV9wYXJhbShfX2JmaXJzdCwgX19iZW5kLCBf
X3diZWdpbikKIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmM+CiBwaWVjZXdpc2Vf
Y29uc3RhbnRfZGlzdHJpYnV0aW9uKGluaXRpYWxpemVyX2xpc3Q8X1JlYWxUeXBlPiBfX2JsLAog
ICAgIF9GdW5jIF9fZncpCiA6IF9NX3BhcmFtKF9fYmwsIF9fZncpCiB7IH0KCiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9GdW5jPgogcGllY2V3aXNlX2NvbnN0YW50X2Rpc3RyaWJ1dGlvbihzaXpl
X3QgX19udywKICAgICBfUmVhbFR5cGUgX194bWluLCBfUmVhbFR5cGUgX194bWF4LAogICAgIF9G
dW5jIF9fZncpCiA6IF9NX3BhcmFtKF9fbncsIF9feG1pbiwgX194bWF4LCBfX2Z3KQogeyB9Cgog
ICAgICBleHBsaWNpdAogICAgICBwaWVjZXdpc2VfY29uc3RhbnRfZGlzdHJpYnV0aW9uKGNvbnN0
IHBhcmFtX3R5cGUmIF9fcCkKICAgICAgOiBfTV9wYXJhbShfX3ApCiAgICAgIHsgfQoKCgoKICAg
ICAgdm9pZAogICAgICByZXNldCgpCiAgICAgIHsgfQoKCgoKICAgICAgc3RkOjp2ZWN0b3I8X1Jl
YWxUeXBlPgogICAgICBpbnRlcnZhbHMoKSBjb25zdAogICAgICB7CiBpZiAoX01fcGFyYW0uX01f
aW50LmVtcHR5KCkpCiAgIHsKICAgICBzdGQ6OnZlY3RvcjxfUmVhbFR5cGU+IF9fdG1wKDIpOwog
ICAgIF9fdG1wWzFdID0gX1JlYWxUeXBlKDEpOwogICAgIHJldHVybiBfX3RtcDsKICAgfQogZWxz
ZQogICByZXR1cm4gX01fcGFyYW0uX01faW50OwogICAgICB9CgoKCgogICAgICBzdGQ6OnZlY3Rv
cjxkb3VibGU+CiAgICAgIGRlbnNpdGllcygpIGNvbnN0CiAgICAgIHsKIHJldHVybiBfTV9wYXJh
bS5fTV9kZW4uZW1wdHkoKQogICA/IHN0ZDo6dmVjdG9yPGRvdWJsZT4oMSwgMS4wKSA6IF9NX3Bh
cmFtLl9NX2RlbjsKICAgICAgfQoKCgoKICAgICAgcGFyYW1fdHlwZQogICAgICBwYXJhbSgpIGNv
bnN0CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFtOyB9CgoKCgoKICAgICAgdm9pZAogICAgICBwYXJh
bShjb25zdCBwYXJhbV90eXBlJiBfX3BhcmFtKQogICAgICB7IF9NX3BhcmFtID0gX19wYXJhbTsg
fQoKCgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgbWluKCkgY29uc3QKICAgICAgewogcmV0dXJu
IF9NX3BhcmFtLl9NX2ludC5lbXB0eSgpCiAgID8gcmVzdWx0X3R5cGUoMCkgOiBfTV9wYXJhbS5f
TV9pbnQuZnJvbnQoKTsKICAgICAgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgbWF4KCkg
Y29uc3QKICAgICAgewogcmV0dXJuIF9NX3BhcmFtLl9NX2ludC5lbXB0eSgpCiAgID8gcmVzdWx0
X3R5cGUoMSkgOiBfTV9wYXJhbS5fTV9pbnQuYmFjaygpOwogICAgICB9CgoKCgogICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHJlc3VsdF90eXBl
CiBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHJl
dHVybiB0aGlzLT5vcGVyYXRvcigpKF9fdXJuZywgX01fcGFyYW0pOyB9CgogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHJlc3VsdF90eXBlCiBv
cGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29u
c3QgcGFyYW1fdHlwZSYgX19wKTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRl
cmF0b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2
b2lkCiBfX2dlbmVyYXRlKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9f
dCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nKQogeyB0aGlzLT5f
X2dlbmVyYXRlKF9fZiwgX190LCBfX3VybmcsIF9NX3BhcmFtKTsgfQoKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRv
bU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2Ys
IF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9y
JiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogeyB0aGlzLT5fX2dlbmVyYXRl
X2ltcGwoX19mLCBfX3QsIF9fdXJuZywgX19wKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKHJlc3VsdF90
eXBlKiBfX2YsIHJlc3VsdF90eXBlKiBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5l
cmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7IHRoaXMtPl9fZ2Vu
ZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBfX3ApOyB9CgoKCgoKICAgICAgZnJpZW5kIGJv
b2wKICAgICAgb3BlcmF0b3I9PShjb25zdCBwaWVjZXdpc2VfY29uc3RhbnRfZGlzdHJpYnV0aW9u
JiBfX2QxLAogICBjb25zdCBwaWVjZXdpc2VfY29uc3RhbnRfZGlzdHJpYnV0aW9uJiBfX2QyKQog
ICAgICB7IHJldHVybiBfX2QxLl9NX3BhcmFtID09IF9fZDIuX01fcGFyYW07IH0KIyA1NzAwICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Jp
dHMvcmFuZG9tLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlMSwgdHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6YmFzaWNfb3N0cmVhbTxf
Q2hhclQsIF9UcmFpdHM+Jgogb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBf
VHJhaXRzPiYgX19vcywKICAgICBjb25zdCBzdGQ6OnBpZWNld2lzZV9jb25zdGFudF9kaXN0cmli
dXRpb248X1JlYWxUeXBlMT4mIF9feCk7CiMgNTcxNiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZTEsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1Ry
YWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKIG9wZXJh
dG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAgc3Rk
OjpwaWVjZXdpc2VfY29uc3RhbnRfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZTE+JiBfX3gpOwoKICAg
IHByaXZhdGU6CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAg
ICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVy
YXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICBf
VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICBjb25zdCBwYXJhbV90eXBl
JiBfX3ApOwoKICAgICAgcGFyYW1fdHlwZSBfTV9wYXJhbTsKICAgIH07CgoKCgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25z
dCBzdGQ6OnBpZWNld2lzZV9jb25zdGFudF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX19kMSwK
ICAgICAgICBjb25zdCBzdGQ6OnBpZWNld2lzZV9jb25zdGFudF9kaXN0cmlidXRpb248X1JlYWxU
eXBlPiYgX19kMikKICAgIHsgcmV0dXJuICEoX19kMSA9PSBfX2QyKTsgfQojIDU3NDkgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9y
YW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSA9IGRvdWJsZT4KICAgIGNs
YXNzIHBpZWNld2lzZV9saW5lYXJfZGlzdHJpYnV0aW9uCiAgICB7CiAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19mbG9hdGluZ19wb2ludDxfUmVhbFR5cGU+Ojp2YWx1ZSwKICAgICAgInRlbXBs
YXRlIGFyZ3VtZW50IG5vdCBhIGZsb2F0aW5nIHBvaW50IHR5cGUiKTsKCiAgICBwdWJsaWM6Cgog
ICAgICB0eXBlZGVmIF9SZWFsVHlwZSByZXN1bHRfdHlwZTsKCiAgICAgIHN0cnVjdCBwYXJhbV90
eXBlCiAgICAgIHsKIHR5cGVkZWYgcGllY2V3aXNlX2xpbmVhcl9kaXN0cmlidXRpb248X1JlYWxU
eXBlPiBkaXN0cmlidXRpb25fdHlwZTsKIGZyaWVuZCBjbGFzcyBwaWVjZXdpc2VfbGluZWFyX2Rp
c3RyaWJ1dGlvbjxfUmVhbFR5cGU+OwoKIHBhcmFtX3R5cGUoKQogOiBfTV9pbnQoKSwgX01fZGVu
KCksIF9NX2NwKCksIF9NX20oKQogeyB9CgogdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0
b3JCLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRvclc+CiAgIHBhcmFtX3R5cGUoX0lucHV0SXRlcmF0
b3JCIF9fYmZpcnN0LAogICAgICAgX0lucHV0SXRlcmF0b3JCIF9fYmVuZCwKICAgICAgIF9JbnB1
dEl0ZXJhdG9yVyBfX3diZWdpbik7CgogdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmM+CiAgIHBhcmFt
X3R5cGUoaW5pdGlhbGl6ZXJfbGlzdDxfUmVhbFR5cGU+IF9fYmwsIF9GdW5jIF9fZncpOwoKIHRl
bXBsYXRlPHR5cGVuYW1lIF9GdW5jPgogICBwYXJhbV90eXBlKHNpemVfdCBfX253LCBfUmVhbFR5
cGUgX194bWluLCBfUmVhbFR5cGUgX194bWF4LAogICAgICAgX0Z1bmMgX19mdyk7CgoKIHBhcmFt
X3R5cGUoY29uc3QgcGFyYW1fdHlwZSYpID0gZGVmYXVsdDsKIHBhcmFtX3R5cGUmIG9wZXJhdG9y
PShjb25zdCBwYXJhbV90eXBlJikgPSBkZWZhdWx0OwoKIHN0ZDo6dmVjdG9yPF9SZWFsVHlwZT4K
IGludGVydmFscygpIGNvbnN0CiB7CiAgIGlmIChfTV9pbnQuZW1wdHkoKSkKICAgICB7CiAgICAg
ICBzdGQ6OnZlY3RvcjxfUmVhbFR5cGU+IF9fdG1wKDIpOwogICAgICAgX190bXBbMV0gPSBfUmVh
bFR5cGUoMSk7CiAgICAgICByZXR1cm4gX190bXA7CiAgICAgfQogICBlbHNlCiAgICAgcmV0dXJu
IF9NX2ludDsKIH0KCiBzdGQ6OnZlY3Rvcjxkb3VibGU+CiBkZW5zaXRpZXMoKSBjb25zdAogeyBy
ZXR1cm4gX01fZGVuLmVtcHR5KCkgPyBzdGQ6OnZlY3Rvcjxkb3VibGU+KDIsIDEuMCkgOiBfTV9k
ZW47IH0KCiBmcmllbmQgYm9vbAogb3BlcmF0b3I9PShjb25zdCBwYXJhbV90eXBlJiBfX3AxLCBj
b25zdCBwYXJhbV90eXBlJiBfX3AyKQogeyByZXR1cm4gKF9fcDEuX01faW50ID09IF9fcDIuX01f
aW50CiAgICAmJiBfX3AxLl9NX2RlbiA9PSBfX3AyLl9NX2Rlbik7IH0KCiAgICAgIHByaXZhdGU6
CiB2b2lkCiBfTV9pbml0aWFsaXplKCk7Cgogc3RkOjp2ZWN0b3I8X1JlYWxUeXBlPiBfTV9pbnQ7
CiBzdGQ6OnZlY3Rvcjxkb3VibGU+IF9NX2RlbjsKIHN0ZDo6dmVjdG9yPGRvdWJsZT4gX01fY3A7
CiBzdGQ6OnZlY3Rvcjxkb3VibGU+IF9NX207CiAgICAgIH07CgogICAgICBleHBsaWNpdAogICAg
ICBwaWVjZXdpc2VfbGluZWFyX2Rpc3RyaWJ1dGlvbigpCiAgICAgIDogX01fcGFyYW0oKQogICAg
ICB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yQiwgdHlwZW5hbWUg
X0lucHV0SXRlcmF0b3JXPgogcGllY2V3aXNlX2xpbmVhcl9kaXN0cmlidXRpb24oX0lucHV0SXRl
cmF0b3JCIF9fYmZpcnN0LAogICAgICAgICAgX0lucHV0SXRlcmF0b3JCIF9fYmVuZCwKICAgICAg
ICAgIF9JbnB1dEl0ZXJhdG9yVyBfX3diZWdpbikKIDogX01fcGFyYW0oX19iZmlyc3QsIF9fYmVu
ZCwgX193YmVnaW4pCiB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GdW5jPgogcGllY2V3
aXNlX2xpbmVhcl9kaXN0cmlidXRpb24oaW5pdGlhbGl6ZXJfbGlzdDxfUmVhbFR5cGU+IF9fYmws
CiAgICAgICAgICBfRnVuYyBfX2Z3KQogOiBfTV9wYXJhbShfX2JsLCBfX2Z3KQogeyB9CgogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnVuYz4KIHBpZWNld2lzZV9saW5lYXJfZGlzdHJpYnV0aW9u
KHNpemVfdCBfX253LAogICAgICAgICAgX1JlYWxUeXBlIF9feG1pbiwgX1JlYWxUeXBlIF9feG1h
eCwKICAgICAgICAgIF9GdW5jIF9fZncpCiA6IF9NX3BhcmFtKF9fbncsIF9feG1pbiwgX194bWF4
LCBfX2Z3KQogeyB9CgogICAgICBleHBsaWNpdAogICAgICBwaWVjZXdpc2VfbGluZWFyX2Rpc3Ry
aWJ1dGlvbihjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgIDogX01fcGFyYW0oX19wKQogICAg
ICB7IH0KCgoKCiAgICAgIHZvaWQKICAgICAgcmVzZXQoKQogICAgICB7IH0KCgoKCiAgICAgIHN0
ZDo6dmVjdG9yPF9SZWFsVHlwZT4KICAgICAgaW50ZXJ2YWxzKCkgY29uc3QKICAgICAgewogaWYg
KF9NX3BhcmFtLl9NX2ludC5lbXB0eSgpKQogICB7CiAgICAgc3RkOjp2ZWN0b3I8X1JlYWxUeXBl
PiBfX3RtcCgyKTsKICAgICBfX3RtcFsxXSA9IF9SZWFsVHlwZSgxKTsKICAgICByZXR1cm4gX190
bXA7CiAgIH0KIGVsc2UKICAgcmV0dXJuIF9NX3BhcmFtLl9NX2ludDsKICAgICAgfQoKCgoKCiAg
ICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4KICAgICAgZGVuc2l0aWVzKCkgY29uc3QKICAgICAgewog
cmV0dXJuIF9NX3BhcmFtLl9NX2Rlbi5lbXB0eSgpCiAgID8gc3RkOjp2ZWN0b3I8ZG91YmxlPigy
LCAxLjApIDogX01fcGFyYW0uX01fZGVuOwogICAgICB9CgoKCgogICAgICBwYXJhbV90eXBlCiAg
ICAgIHBhcmFtKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW07IH0KCgoKCgogICAgICB2
b2lkCiAgICAgIHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIF9fcGFyYW0pCiAgICAgIHsgX01fcGFy
YW0gPSBfX3BhcmFtOyB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBtaW4oKSBjb25zdAog
ICAgICB7CiByZXR1cm4gX01fcGFyYW0uX01faW50LmVtcHR5KCkKICAgPyByZXN1bHRfdHlwZSgw
KSA6IF9NX3BhcmFtLl9NX2ludC5mcm9udCgpOwogICAgICB9CgoKCgogICAgICByZXN1bHRfdHlw
ZQogICAgICBtYXgoKSBjb25zdAogICAgICB7CiByZXR1cm4gX01fcGFyYW0uX01faW50LmVtcHR5
KCkKICAgPyByZXN1bHRfdHlwZSgxKSA6IF9NX3BhcmFtLl9NX2ludC5iYWNrKCk7CiAgICAgIH0K
CgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9y
PgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3Im
IF9fdXJuZykKIHsgcmV0dXJuIHRoaXMtPm9wZXJhdG9yKCkoX191cm5nLCBfTV9wYXJhbSk7IH0K
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgog
cmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9f
dXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApOwoKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJl
ckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3
YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3Vy
bmcpCiB7IHRoaXMtPl9fZ2VuZXJhdGUoX19mLCBfX3QsIF9fdXJuZywgX01fcGFyYW0pOyB9Cgog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1l
IF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShfRm9yd2Fy
ZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21O
dW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7IHRo
aXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBfX3ApOyB9CgogICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2Vu
ZXJhdGUocmVzdWx0X3R5cGUqIF9fZiwgcmVzdWx0X3R5cGUqIF9fdCwKICAgICBfVW5pZm9ybVJh
bmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkK
IHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcsIF9fcCk7IH0KCgoKCgog
ICAgICBmcmllbmQgYm9vbAogICAgICBvcGVyYXRvcj09KGNvbnN0IHBpZWNld2lzZV9saW5lYXJf
ZGlzdHJpYnV0aW9uJiBfX2QxLAogICBjb25zdCBwaWVjZXdpc2VfbGluZWFyX2Rpc3RyaWJ1dGlv
biYgX19kMikKICAgICAgeyByZXR1cm4gX19kMS5fTV9wYXJhbSA9PSBfX2QyLl9NX3BhcmFtOyB9
CiMgNTk3MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL3JhbmRvbS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlw
ZTEsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2lj
X29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAgICAgY29uc3Qgc3RkOjpwaWVjZXdpc2VfbGluZWFy
X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGUxPiYgX194KTsKIyA1OTg2ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLmgiIDMK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlMSwgdHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
Jgogb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywK
ICAgICBzdGQ6OnBpZWNld2lzZV9saW5lYXJfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZTE+JiBfX3gp
OwoKICAgIHByaXZhdGU6CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3Is
CiAgICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBf
X2dlbmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190
LAogICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICBjb25zdCBwYXJh
bV90eXBlJiBfX3ApOwoKICAgICAgcGFyYW1fdHlwZSBfTV9wYXJhbTsKICAgIH07CgoKCgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3Ih
PShjb25zdCBzdGQ6OnBpZWNld2lzZV9saW5lYXJfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9f
ZDEsCiAgICAgICAgY29uc3Qgc3RkOjpwaWVjZXdpc2VfbGluZWFyX2Rpc3RyaWJ1dGlvbjxfUmVh
bFR5cGU+JiBfX2QyKQogICAgeyByZXR1cm4gIShfX2QxID09IF9fZDIpOyB9CiMgNjAyNyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L3JhbmRvbS5oIiAzCiAgY2xhc3Mgc2VlZF9zZXEKICB7CgogIHB1YmxpYzoKCiAgICB0eXBlZGVm
IHVpbnRfbGVhc3QzMl90IHJlc3VsdF90eXBlOwoKCiAgICBzZWVkX3NlcSgpCiAgICA6IF9NX3Yo
KQogICAgeyB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGU+CiAgICAgIHNlZWRfc2Vx
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxfSW50VHlwZT4gaWwpOwoKICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9JbnB1dEl0ZXJhdG9yPgogICAgICBzZWVkX3NlcShfSW5wdXRJdGVyYXRvciBfX2JlZ2lu
LCBfSW5wdXRJdGVyYXRvciBfX2VuZCk7CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvcj4KICAgICAgdm9pZAogICAgICBnZW5lcmF0ZShfUmFuZG9tQWNjZXNzSXRl
cmF0b3IgX19iZWdpbiwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZW5kKTsKCgogICAgc2l6ZV90
IHNpemUoKSBjb25zdAogICAgeyByZXR1cm4gX01fdi5zaXplKCk7IH0KCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPdXRwdXRJdGVyYXRvcj4KICAgICAgdm9pZAogICAgICBwYXJhbShPdXRwdXRJdGVy
YXRvciBfX2Rlc3QpIGNvbnN0CiAgICAgIHsgc3RkOjpjb3B5KF9NX3YuYmVnaW4oKSwgX01fdi5l
bmQoKSwgX19kZXN0KTsgfQoKICBwcml2YXRlOgoKICAgIHN0ZDo6dmVjdG9yPHJlc3VsdF90eXBl
PiBfTV92OwogIH07CgoKCgoKCn0KIyA1MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9yYW5kb20iIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2JpdHMvb3B0X3JhbmRvbS5oIiAxIDMKIyAzMSAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvYml0cy9vcHRfcmFuZG9tLmgiIDMKI2RlZmluZSBfQklUU19PUFRfUkFORE9NX0ggMQoK
ICAgICAgIAojIDM0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL29wdF9yYW5kb20uaCIg
MwojIDUxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL3JhbmRvbSIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRvbS50Y2MiIDEgMwojIDMxICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFu
ZG9tLnRjYyIgMwojZGVmaW5lIF9SQU5ET01fVENDIDEKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9udW1lcmljIiAxIDMKIyA1NiAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9u
dW1lcmljIiAzCiNkZWZpbmUgX0dMSUJDWFhfTlVNRVJJQyAxCgogICAgICAgCiMgNTkgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvbnVtZXJp
YyIgMwoKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvYml0cy9zdGxfbnVtZXJpYy5oIiAxIDMKIyA1NyAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9udW1lcmlj
LmgiIDMKI2RlZmluZSBfU1RMX05VTUVSSUNfSCAxCgoKCgoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0
cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgODAgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxf
bnVtZXJpYy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5h
bWUgX1RwPgogICAgdm9pZAogICAgaW90YShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3
YXJkSXRlcmF0b3IgX19sYXN0LCBfVHAgX192YWx1ZSkKICAgIHsKCiAgICAgCgogICAgIAoKICAg
ICAgOwoKICAgICAgZm9yICg7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiB7CiAgICpf
X2ZpcnN0ID0gX192YWx1ZTsKICAgKytfX3ZhbHVlOwogfQogICAgfQoKCn0KCgoKbmFtZXNwYWNl
IHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgojIDEx
OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9iaXRzL3N0bF9udW1lcmljLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRv
ciwgdHlwZW5hbWUgX1RwPgogICAgaW5saW5lIF9UcAogICAgYWNjdW11bGF0ZShfSW5wdXRJdGVy
YXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsIF9UcCBfX2luaXQpCiAgICB7Cgog
ICAgIAogICAgICA7CgogICAgICBmb3IgKDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkK
IF9faW5pdCA9IF9faW5pdCArICpfX2ZpcnN0OwogICAgICByZXR1cm4gX19pbml0OwogICAgfQoj
IDE0NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL3N0bF9udW1lcmljLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVy
YXRvciwgdHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQmluYXJ5T3BlcmF0aW9uPgogICAgaW5saW5l
IF9UcAogICAgYWNjdW11bGF0ZShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRv
ciBfX2xhc3QsIF9UcCBfX2luaXQsCiAgICAgICAgX0JpbmFyeU9wZXJhdGlvbiBfX2JpbmFyeV9v
cCkKICAgIHsKCiAgICAgCiAgICAgIDsKCiAgICAgIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsg
KytfX2ZpcnN0KQogX19pbml0ID0gX19iaW5hcnlfb3AoX19pbml0LCAqX19maXJzdCk7CiAgICAg
IHJldHVybiBfX2luaXQ7CiAgICB9CiMgMTcyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX251bWVyaWMuaCIgMwogIHRlbXBs
YXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0lucHV0SXRlcmF0b3IyLCB0
eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgX1RwCiAgICBpbm5lcl9wcm9kdWN0KF9JbnB1dEl0ZXJh
dG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAgICBfSW5wdXRJdGVyYXRv
cjIgX19maXJzdDIsIF9UcCBfX2luaXQpCiAgICB7CgogICAgIAogICAgIAogICAgICA7CgogICAg
ICBmb3IgKDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0MSwgKytfX2ZpcnN0MikKIF9f
aW5pdCA9IF9faW5pdCArICgqX19maXJzdDEgKiAqX19maXJzdDIpOwogICAgICByZXR1cm4gX19p
bml0OwogICAgfQojIDIwMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9udW1lcmljLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwgdHlwZW5hbWUgX1Rw
LAogICAgdHlwZW5hbWUgX0JpbmFyeU9wZXJhdGlvbjEsIHR5cGVuYW1lIF9CaW5hcnlPcGVyYXRp
b24yPgogICAgaW5saW5lIF9UcAogICAgaW5uZXJfcHJvZHVjdChfSW5wdXRJdGVyYXRvcjEgX19m
aXJzdDEsIF9JbnB1dEl0ZXJhdG9yMSBfX2xhc3QxLAogICAgX0lucHV0SXRlcmF0b3IyIF9fZmly
c3QyLCBfVHAgX19pbml0LAogICAgX0JpbmFyeU9wZXJhdGlvbjEgX19iaW5hcnlfb3AxLAogICAg
X0JpbmFyeU9wZXJhdGlvbjIgX19iaW5hcnlfb3AyKQogICAgewoKICAgICAKICAgICAKICAgICAg
OwoKICAgICAgZm9yICg7IF9fZmlyc3QxICE9IF9fbGFzdDE7ICsrX19maXJzdDEsICsrX19maXJz
dDIpCiBfX2luaXQgPSBfX2JpbmFyeV9vcDEoX19pbml0LCBfX2JpbmFyeV9vcDIoKl9fZmlyc3Qx
LCAqX19maXJzdDIpKTsKICAgICAgcmV0dXJuIF9faW5pdDsKICAgIH0KIyAyMzUgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxf
bnVtZXJpYy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1l
IF9PdXRwdXRJdGVyYXRvcj4KICAgIF9PdXRwdXRJdGVyYXRvcgogICAgcGFydGlhbF9zdW0oX0lu
cHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogIF9PdXRwdXRJdGVy
YXRvciBfX3Jlc3VsdCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFp
dHM8X0lucHV0SXRlcmF0b3I+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGU7CgoKICAgICAKICAgICAK
CiAgICAgIDsKCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKIHJldHVybiBfX3Jlc3VsdDsK
ICAgICAgX1ZhbHVlVHlwZSBfX3ZhbHVlID0gKl9fZmlyc3Q7CiAgICAgICpfX3Jlc3VsdCA9IF9f
dmFsdWU7CiAgICAgIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0KQogewogICBfX3ZhbHVlID0g
X192YWx1ZSArICpfX2ZpcnN0OwogICAqKytfX3Jlc3VsdCA9IF9fdmFsdWU7CiB9CiAgICAgIHJl
dHVybiArK19fcmVzdWx0OwogICAgfQojIDI3NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9udW1lcmljLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX091dHB1dEl0ZXJhdG9yLAog
ICAgdHlwZW5hbWUgX0JpbmFyeU9wZXJhdGlvbj4KICAgIF9PdXRwdXRJdGVyYXRvcgogICAgcGFy
dGlhbF9zdW0oX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAog
IF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCwgX0JpbmFyeU9wZXJhdGlvbiBfX2JpbmFyeV9vcCkK
ICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcmF0
b3I+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGU7CgoKICAgICAKICAgICAKCiAgICAgIDsKCiAgICAg
IGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKIHJldHVybiBfX3Jlc3VsdDsKICAgICAgX1ZhbHVlVHlw
ZSBfX3ZhbHVlID0gKl9fZmlyc3Q7CiAgICAgICpfX3Jlc3VsdCA9IF9fdmFsdWU7CiAgICAgIHdo
aWxlICgrK19fZmlyc3QgIT0gX19sYXN0KQogewogICBfX3ZhbHVlID0gX19iaW5hcnlfb3AoX192
YWx1ZSwgKl9fZmlyc3QpOwogICAqKytfX3Jlc3VsdCA9IF9fdmFsdWU7CiB9CiAgICAgIHJldHVy
biArK19fcmVzdWx0OwogICAgfQojIDMxNSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9udW1lcmljLmgiIDMKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX091dHB1dEl0ZXJhdG9yPgogICAg
X091dHB1dEl0ZXJhdG9yCiAgICBhZGphY2VudF9kaWZmZXJlbmNlKF9JbnB1dEl0ZXJhdG9yIF9f
Zmlyc3QsCiAgIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0
KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVy
YXRvcj46OnZhbHVlX3R5cGUgX1ZhbHVlVHlwZTsKCgogICAgIAogICAgIAoKICAgICAgOwoKICAg
ICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQogcmV0dXJuIF9fcmVzdWx0OwogICAgICBfVmFsdWVU
eXBlIF9fdmFsdWUgPSAqX19maXJzdDsKICAgICAgKl9fcmVzdWx0ID0gX192YWx1ZTsKICAgICAg
d2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpCiB7CiAgIF9WYWx1ZVR5cGUgX190bXAgPSAqX19m
aXJzdDsKICAgKisrX19yZXN1bHQgPSBfX3RtcCAtIF9fdmFsdWU7CiAgIF9fdmFsdWUgPSBzdGQ6
Om1vdmUoX190bXApOwogfQogICAgICByZXR1cm4gKytfX3Jlc3VsdDsKICAgIH0KIyAzNTcgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9zdGxfbnVtZXJpYy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5
cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwKICAgIHR5cGVuYW1lIF9CaW5hcnlPcGVyYXRpb24+CiAg
ICBfT3V0cHV0SXRlcmF0b3IKICAgIGFkamFjZW50X2RpZmZlcmVuY2UoX0lucHV0SXRlcmF0b3Ig
X19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1
bHQsIF9CaW5hcnlPcGVyYXRpb24gX19iaW5hcnlfb3ApCiAgICB7CiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSBfVmFsdWVU
eXBlOwoKCiAgICAgCiAgICAgCgogICAgICA7CgogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3Qp
CiByZXR1cm4gX19yZXN1bHQ7CiAgICAgIF9WYWx1ZVR5cGUgX192YWx1ZSA9ICpfX2ZpcnN0Owog
ICAgICAqX19yZXN1bHQgPSBfX3ZhbHVlOwogICAgICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFz
dCkKIHsKICAgX1ZhbHVlVHlwZSBfX3RtcCA9ICpfX2ZpcnN0OwogICAqKytfX3Jlc3VsdCA9IF9f
YmluYXJ5X29wKF9fdG1wLCBfX3ZhbHVlKTsKICAgX192YWx1ZSA9IHN0ZDo6bW92ZShfX3RtcCk7
CiB9CiAgICAgIHJldHVybiArK19fcmVzdWx0OwogICAgfQoKCn0KIyA2MyAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9udW1lcmljIiAyIDMK
IyAzNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL3JhbmRvbS50Y2MiIDIgMwoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgo
X192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCiAgbmFtZXNwYWNlIF9fZGV0YWlsCiAg
ewogCgoKCgoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBfVHAgX19tLCBfVHAgX19hLCBf
VHAgX19jPgogICAgICBfVHAKICAgICAgX01vZDxfVHAsIF9fbSwgX19hLCBfX2MsIGZhbHNlLCB0
cnVlPjo6CiAgICAgIF9fY2FsYyhfVHAgX194KQogICAgICB7CiBpZiAoX19hID09IDEpCiAgIF9f
eCAlPSBfX207CiBlbHNlCiAgIHsKICAgICBzdGF0aWMgY29uc3QgX1RwIF9fcSA9IF9fbSAvIF9f
YTsKICAgICBzdGF0aWMgY29uc3QgX1RwIF9fciA9IF9fbSAlIF9fYTsKCiAgICAgX1RwIF9fdDEg
PSBfX2EgKiAoX194ICUgX19xKTsKICAgICBfVHAgX190MiA9IF9fciAqIChfX3ggLyBfX3EpOwog
ICAgIGlmIChfX3QxID49IF9fdDIpCiAgICAgICBfX3ggPSBfX3QxIC0gX190MjsKICAgICBlbHNl
CiAgICAgICBfX3ggPSBfX20gLSBfX3QyICsgX190MTsKICAgfQoKIGlmIChfX2MgIT0gMCkKICAg
ewogICAgIGNvbnN0IF9UcCBfX2QgPSBfX20gLSBfX3g7CiAgICAgaWYgKF9fZCA+IF9fYykKICAg
ICAgIF9feCArPSBfX2M7CiAgICAgZWxzZQogICAgICAgX194ID0gX19jIC0gX19kOwogICB9CiBy
ZXR1cm4gX194OwogICAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3Is
IHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwKICAgICAgdHlwZW5hbWUgX1RwPgogICAgICBfT3V0
cHV0SXRlcmF0b3IKICAgICAgX19ub3JtYWxpemUoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lu
cHV0SXRlcmF0b3IgX19sYXN0LAogICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LCBjb25zdCBf
VHAmIF9fZmFjdG9yKQogICAgICB7CiBmb3IgKDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJz
dCwgKytfX3Jlc3VsdCkKICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QgLyBfX2ZhY3RvcjsKIHJldHVy
biBfX3Jlc3VsdDsKICAgICAgfQoKIAogIH0KCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5
cGUsIF9VSW50VHlwZSBfX2EsIF9VSW50VHlwZSBfX2MsIF9VSW50VHlwZSBfX20+CiAgICBjb25z
dGV4cHIgX1VJbnRUeXBlCiAgICBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTxfVUludFR5cGUs
IF9fYSwgX19jLCBfX20+OjptdWx0aXBsaWVyOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5
cGUsIF9VSW50VHlwZSBfX2EsIF9VSW50VHlwZSBfX2MsIF9VSW50VHlwZSBfX20+CiAgICBjb25z
dGV4cHIgX1VJbnRUeXBlCiAgICBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTxfVUludFR5cGUs
IF9fYSwgX19jLCBfX20+OjppbmNyZW1lbnQ7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlw
ZSwgX1VJbnRUeXBlIF9fYSwgX1VJbnRUeXBlIF9fYywgX1VJbnRUeXBlIF9fbT4KICAgIGNvbnN0
ZXhwciBfVUludFR5cGUKICAgIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPF9VSW50VHlwZSwg
X19hLCBfX2MsIF9fbT46Om1vZHVsdXM7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZSwg
X1VJbnRUeXBlIF9fYSwgX1VJbnRUeXBlIF9fYywgX1VJbnRUeXBlIF9fbT4KICAgIGNvbnN0ZXhw
ciBfVUludFR5cGUKICAgIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPF9VSW50VHlwZSwgX19h
LCBfX2MsIF9fbT46OmRlZmF1bHRfc2VlZDsKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50
VHlwZSwgX1VJbnRUeXBlIF9fYSwgX1VJbnRUeXBlIF9fYywgX1VJbnRUeXBlIF9fbT4KICAgIHZv
aWQKICAgIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPF9VSW50VHlwZSwgX19hLCBfX2MsIF9f
bT46OgogICAgc2VlZChyZXN1bHRfdHlwZSBfX3MpCiAgICB7CiAgICAgIGlmICgoX19kZXRhaWw6
Ol9fbW9kPF9VSW50VHlwZSwgX19tPihfX2MpID09IDApCiAgICYmIChfX2RldGFpbDo6X19tb2Q8
X1VJbnRUeXBlLCBfX20+KF9fcykgPT0gMCkpCiBfTV94ID0gMTsKICAgICAgZWxzZQogX01feCA9
IF9fZGV0YWlsOjpfX21vZDxfVUludFR5cGUsIF9fbT4oX19zKTsKICAgIH0KCgoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1VJbnRUeXBlLCBfVUludFR5cGUgX19hLCBfVUludFR5cGUgX19jLCBfVUlu
dFR5cGUgX19tPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1NzZXE+CiAgICAgIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY2xhc3M8X1NzZXE+Ojp2YWx1ZT46OnR5cGUKICAgICAgbGlu
ZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8X1VJbnRUeXBlLCBfX2EsIF9fYywgX19tPjo6CiAgICAg
IHNlZWQoX1NzZXEmIF9fcSkKICAgICAgewogY29uc3QgX1VJbnRUeXBlIF9fazAgPSBfX20gPT0g
MCA/IHN0ZDo6bnVtZXJpY19saW1pdHM8X1VJbnRUeXBlPjo6ZGlnaXRzCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogc3RkOjpfX2xnKF9fbSk7CiBjb25zdCBfVUludFR5cGUgX19r
ID0gKF9fazAgKyAzMSkgLyAzMjsKIHVpbnRfbGVhc3QzMl90IF9fYXJyW19fayArIDNdOwogX19x
LmdlbmVyYXRlKF9fYXJyICsgMCwgX19hcnIgKyBfX2sgKyAzKTsKIF9VSW50VHlwZSBfX2ZhY3Rv
ciA9IDF1OwogX1VJbnRUeXBlIF9fc3VtID0gMHU7CiBmb3IgKHNpemVfdCBfX2ogPSAwOyBfX2og
PCBfX2s7ICsrX19qKQogICB7CiAgICAgX19zdW0gKz0gX19hcnJbX19qICsgM10gKiBfX2ZhY3Rv
cjsKICAgICBfX2ZhY3RvciAqPSBfX2RldGFpbDo6X1NoaWZ0PF9VSW50VHlwZSwgMzI+OjpfX3Zh
bHVlOwogICB9CiBzZWVkKF9fc3VtKTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUlu
dFR5cGUsIF9VSW50VHlwZSBfX2EsIF9VSW50VHlwZSBfX2MsIF9VSW50VHlwZSBfX20sCiAgICB0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX29zdHJlYW08
X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz4mIF9fb3MsCiAgICAgICAgY29uc3QgbGluZWFyX2NvbmdydWVudGlhbF9lbmdp
bmU8X1VJbnRUeXBlLAogICAgICBfX2EsIF9fYywgX19tPiYgX19sY3IpCiAgICB7CiAgICAgIHR5
cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jh
c2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0g
X19vcy5mbGFncygpOwogICAgICBjb25zdCBfQ2hhclQgX19maWxsID0gX19vcy5maWxsKCk7CiAg
ICAgIF9fb3MuZmxhZ3MoX19pb3NfYmFzZTo6ZGVjIHwgX19pb3NfYmFzZTo6Zml4ZWQgfCBfX2lv
c19iYXNlOjpsZWZ0KTsKICAgICAgX19vcy5maWxsKF9fb3Mud2lkZW4oJyAnKSk7CgogICAgICBf
X29zIDw8IF9fbGNyLl9NX3g7CgogICAgICBfX29zLmZsYWdzKF9fZmxhZ3MpOwogICAgICBfX29z
LmZpbGwoX19maWxsKTsKICAgICAgcmV0dXJuIF9fb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9VSW50VHlwZSwgX1VJbnRUeXBlIF9fYSwgX1VJbnRUeXBlIF9fYywgX1VJbnRUeXBlIF9f
bSwKICAgIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNf
aXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJl
YW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywKICAgICAgICBsaW5lYXJfY29uZ3J1ZW50aWFsX2Vu
Z2luZTxfVUludFR5cGUsIF9fYSwgX19jLCBfX20+JiBfX2xjcikKICAgIHsKICAgICAgdHlwZWRl
ZiBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX2lzdHJlYW1fdHlwZTsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsK
CiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX2lz
LmZsYWdzKCk7CiAgICAgIF9faXMuZmxhZ3MoX19pb3NfYmFzZTo6ZGVjKTsKCiAgICAgIF9faXMg
Pj4gX19sY3IuX01feDsKCiAgICAgIF9faXMuZmxhZ3MoX19mbGFncyk7CiAgICAgIHJldHVybiBf
X2lzOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlLAogICAgc2l6ZV90IF9f
dywgc2l6ZV90IF9fbiwgc2l6ZV90IF9fbSwgc2l6ZV90IF9fciwKICAgIF9VSW50VHlwZSBfX2Es
IHNpemVfdCBfX3UsIF9VSW50VHlwZSBfX2QsIHNpemVfdCBfX3MsCiAgICBfVUludFR5cGUgX19i
LCBzaXplX3QgX190LCBfVUludFR5cGUgX19jLCBzaXplX3QgX19sLAogICAgX1VJbnRUeXBlIF9f
Zj4KICAgIGNvbnN0ZXhwciBzaXplX3QKICAgIG1lcnNlbm5lX3R3aXN0ZXJfZW5naW5lPF9VSW50
VHlwZSwgX193LCBfX24sIF9fbSwgX19yLCBfX2EsIF9fdSwgX19kLAogICAgICAgX19zLCBfX2Is
IF9fdCwgX19jLCBfX2wsIF9fZj46OndvcmRfc2l6ZTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJ
bnRUeXBlLAogICAgc2l6ZV90IF9fdywgc2l6ZV90IF9fbiwgc2l6ZV90IF9fbSwgc2l6ZV90IF9f
ciwKICAgIF9VSW50VHlwZSBfX2EsIHNpemVfdCBfX3UsIF9VSW50VHlwZSBfX2QsIHNpemVfdCBf
X3MsCiAgICBfVUludFR5cGUgX19iLCBzaXplX3QgX190LCBfVUludFR5cGUgX19jLCBzaXplX3Qg
X19sLAogICAgX1VJbnRUeXBlIF9fZj4KICAgIGNvbnN0ZXhwciBzaXplX3QKICAgIG1lcnNlbm5l
X3R3aXN0ZXJfZW5naW5lPF9VSW50VHlwZSwgX193LCBfX24sIF9fbSwgX19yLCBfX2EsIF9fdSwg
X19kLAogICAgICAgX19zLCBfX2IsIF9fdCwgX19jLCBfX2wsIF9fZj46OnN0YXRlX3NpemU7Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZSwKICAgIHNpemVfdCBfX3csIHNpemVfdCBfX24s
IHNpemVfdCBfX20sIHNpemVfdCBfX3IsCiAgICBfVUludFR5cGUgX19hLCBzaXplX3QgX191LCBf
VUludFR5cGUgX19kLCBzaXplX3QgX19zLAogICAgX1VJbnRUeXBlIF9fYiwgc2l6ZV90IF9fdCwg
X1VJbnRUeXBlIF9fYywgc2l6ZV90IF9fbCwKICAgIF9VSW50VHlwZSBfX2Y+CiAgICBjb25zdGV4
cHIgc2l6ZV90CiAgICBtZXJzZW5uZV90d2lzdGVyX2VuZ2luZTxfVUludFR5cGUsIF9fdywgX19u
LCBfX20sIF9fciwgX19hLCBfX3UsIF9fZCwKICAgICAgIF9fcywgX19iLCBfX3QsIF9fYywgX19s
LCBfX2Y+OjpzaGlmdF9zaXplOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5cGUsCiAgICBz
aXplX3QgX193LCBzaXplX3QgX19uLCBzaXplX3QgX19tLCBzaXplX3QgX19yLAogICAgX1VJbnRU
eXBlIF9fYSwgc2l6ZV90IF9fdSwgX1VJbnRUeXBlIF9fZCwgc2l6ZV90IF9fcywKICAgIF9VSW50
VHlwZSBfX2IsIHNpemVfdCBfX3QsIF9VSW50VHlwZSBfX2MsIHNpemVfdCBfX2wsCiAgICBfVUlu
dFR5cGUgX19mPgogICAgY29uc3RleHByIHNpemVfdAogICAgbWVyc2VubmVfdHdpc3Rlcl9lbmdp
bmU8X1VJbnRUeXBlLCBfX3csIF9fbiwgX19tLCBfX3IsIF9fYSwgX191LCBfX2QsCiAgICAgICBf
X3MsIF9fYiwgX190LCBfX2MsIF9fbCwgX19mPjo6bWFza19iaXRzOwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVUludFR5cGUsCiAgICBzaXplX3QgX193LCBzaXplX3QgX19uLCBzaXplX3QgX19tLCBz
aXplX3QgX19yLAogICAgX1VJbnRUeXBlIF9fYSwgc2l6ZV90IF9fdSwgX1VJbnRUeXBlIF9fZCwg
c2l6ZV90IF9fcywKICAgIF9VSW50VHlwZSBfX2IsIHNpemVfdCBfX3QsIF9VSW50VHlwZSBfX2Ms
IHNpemVfdCBfX2wsCiAgICBfVUludFR5cGUgX19mPgogICAgY29uc3RleHByIF9VSW50VHlwZQog
ICAgbWVyc2VubmVfdHdpc3Rlcl9lbmdpbmU8X1VJbnRUeXBlLCBfX3csIF9fbiwgX19tLCBfX3Is
IF9fYSwgX191LCBfX2QsCiAgICAgICBfX3MsIF9fYiwgX190LCBfX2MsIF9fbCwgX19mPjo6eG9y
X21hc2s7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZSwKICAgIHNpemVfdCBfX3csIHNp
emVfdCBfX24sIHNpemVfdCBfX20sIHNpemVfdCBfX3IsCiAgICBfVUludFR5cGUgX19hLCBzaXpl
X3QgX191LCBfVUludFR5cGUgX19kLCBzaXplX3QgX19zLAogICAgX1VJbnRUeXBlIF9fYiwgc2l6
ZV90IF9fdCwgX1VJbnRUeXBlIF9fYywgc2l6ZV90IF9fbCwKICAgIF9VSW50VHlwZSBfX2Y+CiAg
ICBjb25zdGV4cHIgc2l6ZV90CiAgICBtZXJzZW5uZV90d2lzdGVyX2VuZ2luZTxfVUludFR5cGUs
IF9fdywgX19uLCBfX20sIF9fciwgX19hLCBfX3UsIF9fZCwKICAgICAgIF9fcywgX19iLCBfX3Qs
IF9fYywgX19sLCBfX2Y+Ojp0ZW1wZXJpbmdfdTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRU
eXBlLAogICAgc2l6ZV90IF9fdywgc2l6ZV90IF9fbiwgc2l6ZV90IF9fbSwgc2l6ZV90IF9fciwK
ICAgIF9VSW50VHlwZSBfX2EsIHNpemVfdCBfX3UsIF9VSW50VHlwZSBfX2QsIHNpemVfdCBfX3Ms
CiAgICBfVUludFR5cGUgX19iLCBzaXplX3QgX190LCBfVUludFR5cGUgX19jLCBzaXplX3QgX19s
LAogICAgX1VJbnRUeXBlIF9fZj4KICAgIGNvbnN0ZXhwciBfVUludFR5cGUKICAgIG1lcnNlbm5l
X3R3aXN0ZXJfZW5naW5lPF9VSW50VHlwZSwgX193LCBfX24sIF9fbSwgX19yLCBfX2EsIF9fdSwg
X19kLAogICAgICAgX19zLCBfX2IsIF9fdCwgX19jLCBfX2wsIF9fZj46OnRlbXBlcmluZ19kOwoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5cGUsCiAgICBzaXplX3QgX193LCBzaXplX3QgX19u
LCBzaXplX3QgX19tLCBzaXplX3QgX19yLAogICAgX1VJbnRUeXBlIF9fYSwgc2l6ZV90IF9fdSwg
X1VJbnRUeXBlIF9fZCwgc2l6ZV90IF9fcywKICAgIF9VSW50VHlwZSBfX2IsIHNpemVfdCBfX3Qs
IF9VSW50VHlwZSBfX2MsIHNpemVfdCBfX2wsCiAgICBfVUludFR5cGUgX19mPgogICAgY29uc3Rl
eHByIHNpemVfdAogICAgbWVyc2VubmVfdHdpc3Rlcl9lbmdpbmU8X1VJbnRUeXBlLCBfX3csIF9f
biwgX19tLCBfX3IsIF9fYSwgX191LCBfX2QsCiAgICAgICBfX3MsIF9fYiwgX190LCBfX2MsIF9f
bCwgX19mPjo6dGVtcGVyaW5nX3M7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZSwKICAg
IHNpemVfdCBfX3csIHNpemVfdCBfX24sIHNpemVfdCBfX20sIHNpemVfdCBfX3IsCiAgICBfVUlu
dFR5cGUgX19hLCBzaXplX3QgX191LCBfVUludFR5cGUgX19kLCBzaXplX3QgX19zLAogICAgX1VJ
bnRUeXBlIF9fYiwgc2l6ZV90IF9fdCwgX1VJbnRUeXBlIF9fYywgc2l6ZV90IF9fbCwKICAgIF9V
SW50VHlwZSBfX2Y+CiAgICBjb25zdGV4cHIgX1VJbnRUeXBlCiAgICBtZXJzZW5uZV90d2lzdGVy
X2VuZ2luZTxfVUludFR5cGUsIF9fdywgX19uLCBfX20sIF9fciwgX19hLCBfX3UsIF9fZCwKICAg
ICAgIF9fcywgX19iLCBfX3QsIF9fYywgX19sLCBfX2Y+Ojp0ZW1wZXJpbmdfYjsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1VJbnRUeXBlLAogICAgc2l6ZV90IF9fdywgc2l6ZV90IF9fbiwgc2l6ZV90
IF9fbSwgc2l6ZV90IF9fciwKICAgIF9VSW50VHlwZSBfX2EsIHNpemVfdCBfX3UsIF9VSW50VHlw
ZSBfX2QsIHNpemVfdCBfX3MsCiAgICBfVUludFR5cGUgX19iLCBzaXplX3QgX190LCBfVUludFR5
cGUgX19jLCBzaXplX3QgX19sLAogICAgX1VJbnRUeXBlIF9fZj4KICAgIGNvbnN0ZXhwciBzaXpl
X3QKICAgIG1lcnNlbm5lX3R3aXN0ZXJfZW5naW5lPF9VSW50VHlwZSwgX193LCBfX24sIF9fbSwg
X19yLCBfX2EsIF9fdSwgX19kLAogICAgICAgX19zLCBfX2IsIF9fdCwgX19jLCBfX2wsIF9fZj46
OnRlbXBlcmluZ190OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5cGUsCiAgICBzaXplX3Qg
X193LCBzaXplX3QgX19uLCBzaXplX3QgX19tLCBzaXplX3QgX19yLAogICAgX1VJbnRUeXBlIF9f
YSwgc2l6ZV90IF9fdSwgX1VJbnRUeXBlIF9fZCwgc2l6ZV90IF9fcywKICAgIF9VSW50VHlwZSBf
X2IsIHNpemVfdCBfX3QsIF9VSW50VHlwZSBfX2MsIHNpemVfdCBfX2wsCiAgICBfVUludFR5cGUg
X19mPgogICAgY29uc3RleHByIF9VSW50VHlwZQogICAgbWVyc2VubmVfdHdpc3Rlcl9lbmdpbmU8
X1VJbnRUeXBlLCBfX3csIF9fbiwgX19tLCBfX3IsIF9fYSwgX191LCBfX2QsCiAgICAgICBfX3Ms
IF9fYiwgX190LCBfX2MsIF9fbCwgX19mPjo6dGVtcGVyaW5nX2M7CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9VSW50VHlwZSwKICAgIHNpemVfdCBfX3csIHNpemVfdCBfX24sIHNpemVfdCBfX20sIHNp
emVfdCBfX3IsCiAgICBfVUludFR5cGUgX19hLCBzaXplX3QgX191LCBfVUludFR5cGUgX19kLCBz
aXplX3QgX19zLAogICAgX1VJbnRUeXBlIF9fYiwgc2l6ZV90IF9fdCwgX1VJbnRUeXBlIF9fYywg
c2l6ZV90IF9fbCwKICAgIF9VSW50VHlwZSBfX2Y+CiAgICBjb25zdGV4cHIgc2l6ZV90CiAgICBt
ZXJzZW5uZV90d2lzdGVyX2VuZ2luZTxfVUludFR5cGUsIF9fdywgX19uLCBfX20sIF9fciwgX19h
LCBfX3UsIF9fZCwKICAgICAgIF9fcywgX19iLCBfX3QsIF9fYywgX19sLCBfX2Y+Ojp0ZW1wZXJp
bmdfbDsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlLAogICAgc2l6ZV90IF9fdywgc2l6
ZV90IF9fbiwgc2l6ZV90IF9fbSwgc2l6ZV90IF9fciwKICAgIF9VSW50VHlwZSBfX2EsIHNpemVf
dCBfX3UsIF9VSW50VHlwZSBfX2QsIHNpemVfdCBfX3MsCiAgICBfVUludFR5cGUgX19iLCBzaXpl
X3QgX190LCBfVUludFR5cGUgX19jLCBzaXplX3QgX19sLAogICAgX1VJbnRUeXBlIF9fZj4KICAg
IGNvbnN0ZXhwciBfVUludFR5cGUKICAgIG1lcnNlbm5lX3R3aXN0ZXJfZW5naW5lPF9VSW50VHlw
ZSwgX193LCBfX24sIF9fbSwgX19yLCBfX2EsIF9fdSwgX19kLAogICAgICAgX19zLCBfX2IsIF9f
dCwgX19jLCBfX2wsIF9fZj46OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5pdGlhbGl6YXRpb25fbXVsdGlwbGllcjsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1VJbnRUeXBlLAogICAgc2l6ZV90IF9fdywgc2l6ZV90IF9fbiwgc2l6ZV90IF9fbSwgc2l6ZV90
IF9fciwKICAgIF9VSW50VHlwZSBfX2EsIHNpemVfdCBfX3UsIF9VSW50VHlwZSBfX2QsIHNpemVf
dCBfX3MsCiAgICBfVUludFR5cGUgX19iLCBzaXplX3QgX190LCBfVUludFR5cGUgX19jLCBzaXpl
X3QgX19sLAogICAgX1VJbnRUeXBlIF9fZj4KICAgIGNvbnN0ZXhwciBfVUludFR5cGUKICAgIG1l
cnNlbm5lX3R3aXN0ZXJfZW5naW5lPF9VSW50VHlwZSwgX193LCBfX24sIF9fbSwgX19yLCBfX2Es
IF9fdSwgX19kLAogICAgICAgX19zLCBfX2IsIF9fdCwgX19jLCBfX2wsIF9fZj46OmRlZmF1bHRf
c2VlZDsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlLAogICAgc2l6ZV90IF9fdywgc2l6
ZV90IF9fbiwgc2l6ZV90IF9fbSwgc2l6ZV90IF9fciwKICAgIF9VSW50VHlwZSBfX2EsIHNpemVf
dCBfX3UsIF9VSW50VHlwZSBfX2QsIHNpemVfdCBfX3MsCiAgICBfVUludFR5cGUgX19iLCBzaXpl
X3QgX190LCBfVUludFR5cGUgX19jLCBzaXplX3QgX19sLAogICAgX1VJbnRUeXBlIF9fZj4KICAg
IHZvaWQKICAgIG1lcnNlbm5lX3R3aXN0ZXJfZW5naW5lPF9VSW50VHlwZSwgX193LCBfX24sIF9f
bSwgX19yLCBfX2EsIF9fdSwgX19kLAogICAgICAgX19zLCBfX2IsIF9fdCwgX19jLCBfX2wsIF9f
Zj46OgogICAgc2VlZChyZXN1bHRfdHlwZSBfX3NkKQogICAgewogICAgICBfTV94WzBdID0gX19k
ZXRhaWw6Ol9fbW9kPF9VSW50VHlwZSwKIF9fZGV0YWlsOjpfU2hpZnQ8X1VJbnRUeXBlLCBfX3c+
OjpfX3ZhbHVlPihfX3NkKTsKCiAgICAgIGZvciAoc2l6ZV90IF9faSA9IDE7IF9faSA8IHN0YXRl
X3NpemU7ICsrX19pKQogewogICBfVUludFR5cGUgX194ID0gX01feFtfX2kgLSAxXTsKICAgX194
IF49IF9feCA+PiAoX193IC0gMik7CiAgIF9feCAqPSBfX2Y7CiAgIF9feCArPSBfX2RldGFpbDo6
X19tb2Q8X1VJbnRUeXBlLCBfX24+KF9faSk7CiAgIF9NX3hbX19pXSA9IF9fZGV0YWlsOjpfX21v
ZDxfVUludFR5cGUsCiAgICAgX19kZXRhaWw6Ol9TaGlmdDxfVUludFR5cGUsIF9fdz46Ol9fdmFs
dWU+KF9feCk7CiB9CiAgICAgIF9NX3AgPSBzdGF0ZV9zaXplOwogICAgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVUludFR5cGUsCiAgICBzaXplX3QgX193LCBzaXplX3QgX19uLCBzaXplX3QgX19t
LCBzaXplX3QgX19yLAogICAgX1VJbnRUeXBlIF9fYSwgc2l6ZV90IF9fdSwgX1VJbnRUeXBlIF9f
ZCwgc2l6ZV90IF9fcywKICAgIF9VSW50VHlwZSBfX2IsIHNpemVfdCBfX3QsIF9VSW50VHlwZSBf
X2MsIHNpemVfdCBfX2wsCiAgICBfVUludFR5cGUgX19mPgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1NzZXE+CiAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY2xhc3M8X1NzZXE+
Ojp2YWx1ZT46OnR5cGUKICAgICAgbWVyc2VubmVfdHdpc3Rlcl9lbmdpbmU8X1VJbnRUeXBlLCBf
X3csIF9fbiwgX19tLCBfX3IsIF9fYSwgX191LCBfX2QsCiAgICAgICAgIF9fcywgX19iLCBfX3Qs
IF9fYywgX19sLCBfX2Y+OjoKICAgICAgc2VlZChfU3NlcSYgX19xKQogICAgICB7CiBjb25zdCBf
VUludFR5cGUgX191cHBlcl9tYXNrID0gKH5fVUludFR5cGUoKSkgPDwgX19yOwogY29uc3Qgc2l6
ZV90IF9fayA9IChfX3cgKyAzMSkgLyAzMjsKIHVpbnRfbGVhc3QzMl90IF9fYXJyW19fbiAqIF9f
a107CiBfX3EuZ2VuZXJhdGUoX19hcnIgKyAwLCBfX2FyciArIF9fbiAqIF9fayk7CgogYm9vbCBf
X3plcm8gPSB0cnVlOwogZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgc3RhdGVfc2l6ZTsgKytf
X2kpCiAgIHsKICAgICBfVUludFR5cGUgX19mYWN0b3IgPSAxdTsKICAgICBfVUludFR5cGUgX19z
dW0gPSAwdTsKICAgICBmb3IgKHNpemVfdCBfX2ogPSAwOyBfX2ogPCBfX2s7ICsrX19qKQogICAg
ICAgewogIF9fc3VtICs9IF9fYXJyW19fayAqIF9faSArIF9fal0gKiBfX2ZhY3RvcjsKICBfX2Zh
Y3RvciAqPSBfX2RldGFpbDo6X1NoaWZ0PF9VSW50VHlwZSwgMzI+OjpfX3ZhbHVlOwogICAgICAg
fQogICAgIF9NX3hbX19pXSA9IF9fZGV0YWlsOjpfX21vZDxfVUludFR5cGUsCiAgICAgICBfX2Rl
dGFpbDo6X1NoaWZ0PF9VSW50VHlwZSwgX193Pjo6X192YWx1ZT4oX19zdW0pOwoKICAgICBpZiAo
X196ZXJvKQogICAgICAgewogIGlmIChfX2kgPT0gMCkKICAgIHsKICAgICAgaWYgKChfTV94WzBd
ICYgX191cHBlcl9tYXNrKSAhPSAwdSkKICAgICAgICBfX3plcm8gPSBmYWxzZTsKICAgIH0KICBl
bHNlIGlmIChfTV94W19faV0gIT0gMHUpCiAgICBfX3plcm8gPSBmYWxzZTsKICAgICAgIH0KICAg
fQogICAgICAgIGlmIChfX3plcm8pCiAgICAgICAgICBfTV94WzBdID0gX19kZXRhaWw6Ol9TaGlm
dDxfVUludFR5cGUsIF9fdyAtIDE+OjpfX3ZhbHVlOwogX01fcCA9IHN0YXRlX3NpemU7CiAgICAg
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlLCBzaXplX3QgX193LAogICAgc2l6ZV90
IF9fbiwgc2l6ZV90IF9fbSwgc2l6ZV90IF9fciwKICAgIF9VSW50VHlwZSBfX2EsIHNpemVfdCBf
X3UsIF9VSW50VHlwZSBfX2QsIHNpemVfdCBfX3MsCiAgICBfVUludFR5cGUgX19iLCBzaXplX3Qg
X190LCBfVUludFR5cGUgX19jLCBzaXplX3QgX19sLAogICAgX1VJbnRUeXBlIF9fZj4KICAgIHZv
aWQKICAgIG1lcnNlbm5lX3R3aXN0ZXJfZW5naW5lPF9VSW50VHlwZSwgX193LCBfX24sIF9fbSwg
X19yLCBfX2EsIF9fdSwgX19kLAogICAgICAgX19zLCBfX2IsIF9fdCwgX19jLCBfX2wsIF9fZj46
OgogICAgX01fZ2VuX3JhbmQodm9pZCkKICAgIHsKICAgICAgY29uc3QgX1VJbnRUeXBlIF9fdXBw
ZXJfbWFzayA9ICh+X1VJbnRUeXBlKCkpIDw8IF9fcjsKICAgICAgY29uc3QgX1VJbnRUeXBlIF9f
bG93ZXJfbWFzayA9IH5fX3VwcGVyX21hc2s7CgogICAgICBmb3IgKHNpemVfdCBfX2sgPSAwOyBf
X2sgPCAoX19uIC0gX19tKTsgKytfX2spCiAgICAgICAgewogICBfVUludFR5cGUgX195ID0gKChf
TV94W19fa10gJiBfX3VwcGVyX21hc2spCiAgICAgIHwgKF9NX3hbX19rICsgMV0gJiBfX2xvd2Vy
X21hc2spKTsKICAgX01feFtfX2tdID0gKF9NX3hbX19rICsgX19tXSBeIChfX3kgPj4gMSkKICAg
ICAgICAgXiAoKF9feSAmIDB4MDEpID8gX19hIDogMCkpOwogICAgICAgIH0KCiAgICAgIGZvciAo
c2l6ZV90IF9fayA9IChfX24gLSBfX20pOyBfX2sgPCAoX19uIC0gMSk7ICsrX19rKQogewogICBf
VUludFR5cGUgX195ID0gKChfTV94W19fa10gJiBfX3VwcGVyX21hc2spCiAgICAgIHwgKF9NX3hb
X19rICsgMV0gJiBfX2xvd2VyX21hc2spKTsKICAgX01feFtfX2tdID0gKF9NX3hbX19rICsgKF9f
bSAtIF9fbildIF4gKF9feSA+PiAxKQogICAgICAgICBeICgoX195ICYgMHgwMSkgPyBfX2EgOiAw
KSk7CiB9CgogICAgICBfVUludFR5cGUgX195ID0gKChfTV94W19fbiAtIDFdICYgX191cHBlcl9t
YXNrKQogICAgICAgICB8IChfTV94WzBdICYgX19sb3dlcl9tYXNrKSk7CiAgICAgIF9NX3hbX19u
IC0gMV0gPSAoX01feFtfX20gLSAxXSBeIChfX3kgPj4gMSkKICAgICAgICAgXiAoKF9feSAmIDB4
MDEpID8gX19hIDogMCkpOwogICAgICBfTV9wID0gMDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1VJbnRUeXBlLCBzaXplX3QgX193LAogICAgc2l6ZV90IF9fbiwgc2l6ZV90IF9fbSwgc2l6
ZV90IF9fciwKICAgIF9VSW50VHlwZSBfX2EsIHNpemVfdCBfX3UsIF9VSW50VHlwZSBfX2QsIHNp
emVfdCBfX3MsCiAgICBfVUludFR5cGUgX19iLCBzaXplX3QgX190LCBfVUludFR5cGUgX19jLCBz
aXplX3QgX19sLAogICAgX1VJbnRUeXBlIF9fZj4KICAgIHZvaWQKICAgIG1lcnNlbm5lX3R3aXN0
ZXJfZW5naW5lPF9VSW50VHlwZSwgX193LCBfX24sIF9fbSwgX19yLCBfX2EsIF9fdSwgX19kLAog
ICAgICAgX19zLCBfX2IsIF9fdCwgX19jLCBfX2wsIF9fZj46OgogICAgZGlzY2FyZCh1bnNpZ25l
ZCBsb25nIGxvbmcgX196KQogICAgewogICAgICB3aGlsZSAoX196ID4gc3RhdGVfc2l6ZSAtIF9N
X3ApCiB7CiAgIF9feiAtPSBzdGF0ZV9zaXplIC0gX01fcDsKICAgX01fZ2VuX3JhbmQoKTsKIH0K
ICAgICAgX01fcCArPSBfX3o7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZSwg
c2l6ZV90IF9fdywKICAgIHNpemVfdCBfX24sIHNpemVfdCBfX20sIHNpemVfdCBfX3IsCiAgICBf
VUludFR5cGUgX19hLCBzaXplX3QgX191LCBfVUludFR5cGUgX19kLCBzaXplX3QgX19zLAogICAg
X1VJbnRUeXBlIF9fYiwgc2l6ZV90IF9fdCwgX1VJbnRUeXBlIF9fYywgc2l6ZV90IF9fbCwKICAg
IF9VSW50VHlwZSBfX2Y+CiAgICB0eXBlbmFtZQogICAgbWVyc2VubmVfdHdpc3Rlcl9lbmdpbmU8
X1VJbnRUeXBlLCBfX3csIF9fbiwgX19tLCBfX3IsIF9fYSwgX191LCBfX2QsCiAgICAgICBfX3Ms
IF9fYiwgX190LCBfX2MsIF9fbCwgX19mPjo6cmVzdWx0X3R5cGUKICAgIG1lcnNlbm5lX3R3aXN0
ZXJfZW5naW5lPF9VSW50VHlwZSwgX193LCBfX24sIF9fbSwgX19yLCBfX2EsIF9fdSwgX19kLAog
ICAgICAgX19zLCBfX2IsIF9fdCwgX19jLCBfX2wsIF9fZj46OgogICAgb3BlcmF0b3IoKSgpCiAg
ICB7CgogICAgICBpZiAoX01fcCA+PSBzdGF0ZV9zaXplKQogX01fZ2VuX3JhbmQoKTsKCgogICAg
ICByZXN1bHRfdHlwZSBfX3ogPSBfTV94W19NX3ArK107CiAgICAgIF9feiBePSAoX196ID4+IF9f
dSkgJiBfX2Q7CiAgICAgIF9feiBePSAoX196IDw8IF9fcykgJiBfX2I7CiAgICAgIF9feiBePSAo
X196IDw8IF9fdCkgJiBfX2M7CiAgICAgIF9feiBePSAoX196ID4+IF9fbCk7CgogICAgICByZXR1
cm4gX196OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5cGUsIHNpemVfdCBfX3cs
CiAgICBzaXplX3QgX19uLCBzaXplX3QgX19tLCBzaXplX3QgX19yLAogICAgX1VJbnRUeXBlIF9f
YSwgc2l6ZV90IF9fdSwgX1VJbnRUeXBlIF9fZCwgc2l6ZV90IF9fcywKICAgIF9VSW50VHlwZSBf
X2IsIHNpemVfdCBfX3QsIF9VSW50VHlwZSBfX2MsIHNpemVfdCBfX2wsCiAgICBfVUludFR5cGUg
X19mLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX29z
dHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAgICAgICAgY29uc3QgbWVyc2VubmVfdHdpc3Rlcl9l
bmdpbmU8X1VJbnRUeXBlLCBfX3csIF9fbiwgX19tLAogICAgICAgIF9fciwgX19hLCBfX3UsIF9f
ZCwgX19zLCBfX2IsIF9fdCwgX19jLCBfX2wsIF9fZj4mIF9feCkKICAgIHsKICAgICAgdHlwZWRl
ZiBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsK
CiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX29z
LmZsYWdzKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX2ZpbGwgPSBfX29zLmZpbGwoKTsKICAgICAg
Y29uc3QgX0NoYXJUIF9fc3BhY2UgPSBfX29zLndpZGVuKCcgJyk7CiAgICAgIF9fb3MuZmxhZ3Mo
X19pb3NfYmFzZTo6ZGVjIHwgX19pb3NfYmFzZTo6Zml4ZWQgfCBfX2lvc19iYXNlOjpsZWZ0KTsK
ICAgICAgX19vcy5maWxsKF9fc3BhY2UpOwoKICAgICAgZm9yIChzaXplX3QgX19pID0gMDsgX19p
IDwgX19uOyArK19faSkKIF9fb3MgPDwgX194Ll9NX3hbX19pXSA8PCBfX3NwYWNlOwogICAgICBf
X29zIDw8IF9feC5fTV9wOwoKICAgICAgX19vcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgX19vcy5m
aWxsKF9fZmlsbCk7CiAgICAgIHJldHVybiBfX29zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVUludFR5cGUsIHNpemVfdCBfX3csCiAgICBzaXplX3QgX19uLCBzaXplX3QgX19tLCBzaXpl
X3QgX19yLAogICAgX1VJbnRUeXBlIF9fYSwgc2l6ZV90IF9fdSwgX1VJbnRUeXBlIF9fZCwgc2l6
ZV90IF9fcywKICAgIF9VSW50VHlwZSBfX2IsIHNpemVfdCBfX3QsIF9VSW50VHlwZSBfX2MsIHNp
emVfdCBfX2wsCiAgICBfVUludFR5cGUgX19mLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHM+CiAgICBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJh
dG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAgICAg
bWVyc2VubmVfdHdpc3Rlcl9lbmdpbmU8X1VJbnRUeXBlLCBfX3csIF9fbiwgX19tLAogICAgICAg
IF9fciwgX19hLCBfX3UsIF9fZCwgX19zLCBfX2IsIF9fdCwgX19jLCBfX2wsIF9fZj4mIF9feCkK
ICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiBf
X2lzdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6aW9z
X2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZs
YWdzIF9fZmxhZ3MgPSBfX2lzLmZsYWdzKCk7CiAgICAgIF9faXMuZmxhZ3MoX19pb3NfYmFzZTo6
ZGVjIHwgX19pb3NfYmFzZTo6c2tpcHdzKTsKCiAgICAgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9f
aSA8IF9fbjsgKytfX2kpCiBfX2lzID4+IF9feC5fTV94W19faV07CiAgICAgIF9faXMgPj4gX194
Ll9NX3A7CgogICAgICBfX2lzLmZsYWdzKF9fZmxhZ3MpOwogICAgICByZXR1cm4gX19pczsKICAg
IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZSwgc2l6ZV90IF9fdywgc2l6ZV90IF9f
cywgc2l6ZV90IF9fcj4KICAgIGNvbnN0ZXhwciBzaXplX3QKICAgIHN1YnRyYWN0X3dpdGhfY2Fy
cnlfZW5naW5lPF9VSW50VHlwZSwgX193LCBfX3MsIF9fcj46OndvcmRfc2l6ZTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1VJbnRUeXBlLCBzaXplX3QgX193LCBzaXplX3QgX19zLCBzaXplX3QgX19y
PgogICAgY29uc3RleHByIHNpemVfdAogICAgc3VidHJhY3Rfd2l0aF9jYXJyeV9lbmdpbmU8X1VJ
bnRUeXBlLCBfX3csIF9fcywgX19yPjo6c2hvcnRfbGFnOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VUludFR5cGUsIHNpemVfdCBfX3csIHNpemVfdCBfX3MsIHNpemVfdCBfX3I+CiAgICBjb25zdGV4
cHIgc2l6ZV90CiAgICBzdWJ0cmFjdF93aXRoX2NhcnJ5X2VuZ2luZTxfVUludFR5cGUsIF9fdywg
X19zLCBfX3I+Ojpsb25nX2xhZzsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlLCBzaXpl
X3QgX193LCBzaXplX3QgX19zLCBzaXplX3QgX19yPgogICAgY29uc3RleHByIF9VSW50VHlwZQog
ICAgc3VidHJhY3Rfd2l0aF9jYXJyeV9lbmdpbmU8X1VJbnRUeXBlLCBfX3csIF9fcywgX19yPjo6
ZGVmYXVsdF9zZWVkOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5cGUsIHNpemVfdCBfX3cs
IHNpemVfdCBfX3MsIHNpemVfdCBfX3I+CiAgICB2b2lkCiAgICBzdWJ0cmFjdF93aXRoX2NhcnJ5
X2VuZ2luZTxfVUludFR5cGUsIF9fdywgX19zLCBfX3I+OjoKICAgIHNlZWQocmVzdWx0X3R5cGUg
X192YWx1ZSkKICAgIHsKICAgICAgc3RkOjpsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTxyZXN1
bHRfdHlwZSwgNDAwMTR1LCAwdSwgMjE0NzQ4MzU2M3U+CiBfX2xjZyhfX3ZhbHVlID09IDB1ID8g
ZGVmYXVsdF9zZWVkIDogX192YWx1ZSk7CgogICAgICBjb25zdCBzaXplX3QgX19uID0gKF9fdyAr
IDMxKSAvIDMyOwoKICAgICAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgbG9uZ19sYWc7ICsr
X19pKQogewogICBfVUludFR5cGUgX19zdW0gPSAwdTsKICAgX1VJbnRUeXBlIF9fZmFjdG9yID0g
MXU7CiAgIGZvciAoc2l6ZV90IF9faiA9IDA7IF9faiA8IF9fbjsgKytfX2opCiAgICAgewogICAg
ICAgX19zdW0gKz0gX19kZXRhaWw6Ol9fbW9kPHVpbnRfbGVhc3QzMl90LAogICAgICAgICBfX2Rl
dGFpbDo6X1NoaWZ0PHVpbnRfbGVhc3QzMl90LCAzMj46Ol9fdmFsdWU+CiAgICAoX19sY2coKSkg
KiBfX2ZhY3RvcjsKICAgICAgIF9fZmFjdG9yICo9IF9fZGV0YWlsOjpfU2hpZnQ8X1VJbnRUeXBl
LCAzMj46Ol9fdmFsdWU7CiAgICAgfQogICBfTV94W19faV0gPSBfX2RldGFpbDo6X19tb2Q8X1VJ
bnRUeXBlLAogICAgIF9fZGV0YWlsOjpfU2hpZnQ8X1VJbnRUeXBlLCBfX3c+OjpfX3ZhbHVlPihf
X3N1bSk7CiB9CiAgICAgIF9NX2NhcnJ5ID0gKF9NX3hbbG9uZ19sYWcgLSAxXSA9PSAwKSA/IDEg
OiAwOwogICAgICBfTV9wID0gMDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBl
LCBzaXplX3QgX193LCBzaXplX3QgX19zLCBzaXplX3QgX19yPgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1NzZXE+CiAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY2xhc3M8X1Nz
ZXE+Ojp2YWx1ZT46OnR5cGUKICAgICAgc3VidHJhY3Rfd2l0aF9jYXJyeV9lbmdpbmU8X1VJbnRU
eXBlLCBfX3csIF9fcywgX19yPjo6CiAgICAgIHNlZWQoX1NzZXEmIF9fcSkKICAgICAgewogY29u
c3Qgc2l6ZV90IF9fayA9IChfX3cgKyAzMSkgLyAzMjsKIHVpbnRfbGVhc3QzMl90IF9fYXJyW19f
ciAqIF9fa107CiBfX3EuZ2VuZXJhdGUoX19hcnIgKyAwLCBfX2FyciArIF9fciAqIF9fayk7Cgog
Zm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgbG9uZ19sYWc7ICsrX19pKQogICB7CiAgICAgX1VJ
bnRUeXBlIF9fc3VtID0gMHU7CiAgICAgX1VJbnRUeXBlIF9fZmFjdG9yID0gMXU7CiAgICAgZm9y
IChzaXplX3QgX19qID0gMDsgX19qIDwgX19rOyArK19faikKICAgICAgIHsKICBfX3N1bSArPSBf
X2FycltfX2sgKiBfX2kgKyBfX2pdICogX19mYWN0b3I7CiAgX19mYWN0b3IgKj0gX19kZXRhaWw6
Ol9TaGlmdDxfVUludFR5cGUsIDMyPjo6X192YWx1ZTsKICAgICAgIH0KICAgICBfTV94W19faV0g
PSBfX2RldGFpbDo6X19tb2Q8X1VJbnRUeXBlLAogICAgICAgX19kZXRhaWw6Ol9TaGlmdDxfVUlu
dFR5cGUsIF9fdz46Ol9fdmFsdWU+KF9fc3VtKTsKICAgfQogX01fY2FycnkgPSAoX01feFtsb25n
X2xhZyAtIDFdID09IDApID8gMSA6IDA7CiBfTV9wID0gMDsKICAgICAgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVUludFR5cGUsIHNpemVfdCBfX3csIHNpemVfdCBfX3MsIHNpemVfdCBfX3I+CiAg
ICB0eXBlbmFtZSBzdWJ0cmFjdF93aXRoX2NhcnJ5X2VuZ2luZTxfVUludFR5cGUsIF9fdywgX19z
LCBfX3I+OjoKICAgICAgcmVzdWx0X3R5cGUKICAgIHN1YnRyYWN0X3dpdGhfY2FycnlfZW5naW5l
PF9VSW50VHlwZSwgX193LCBfX3MsIF9fcj46OgogICAgb3BlcmF0b3IoKSgpCiAgICB7CgogICAg
ICBsb25nIF9fcHMgPSBfTV9wIC0gc2hvcnRfbGFnOwogICAgICBpZiAoX19wcyA8IDApCiBfX3Bz
ICs9IGxvbmdfbGFnOwoKCgoKICAgICAgX1VJbnRUeXBlIF9feGk7CiAgICAgIGlmIChfTV94W19f
cHNdID49IF9NX3hbX01fcF0gKyBfTV9jYXJyeSkKIHsKICAgX194aSA9IF9NX3hbX19wc10gLSBf
TV94W19NX3BdIC0gX01fY2Fycnk7CiAgIF9NX2NhcnJ5ID0gMDsKIH0KICAgICAgZWxzZQogewog
ICBfX3hpID0gKF9fZGV0YWlsOjpfU2hpZnQ8X1VJbnRUeXBlLCBfX3c+OjpfX3ZhbHVlCiAgICAt
IF9NX3hbX01fcF0gLSBfTV9jYXJyeSArIF9NX3hbX19wc10pOwogICBfTV9jYXJyeSA9IDE7CiB9
CiAgICAgIF9NX3hbX01fcF0gPSBfX3hpOwoKCiAgICAgIGlmICgrK19NX3AgPj0gbG9uZ19sYWcp
CiBfTV9wID0gMDsKCiAgICAgIHJldHVybiBfX3hpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVUludFR5cGUsIHNpemVfdCBfX3csIHNpemVfdCBfX3MsIHNpemVfdCBfX3IsCiAgICB0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX29zdHJlYW08X0No
YXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4mIF9fb3MsCiAgICAgICAgY29uc3Qgc3VidHJhY3Rfd2l0aF9jYXJyeV9lbmdpbmU8
X1VJbnRUeXBlLAogICAgICBfX3csIF9fcywgX19yPiYgX194KQogICAgewogICAgICB0eXBlZGVm
IHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9fb3N0cmVhbV90eXBlOwogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoK
ICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9fb3Mu
ZmxhZ3MoKTsKICAgICAgY29uc3QgX0NoYXJUIF9fZmlsbCA9IF9fb3MuZmlsbCgpOwogICAgICBj
b25zdCBfQ2hhclQgX19zcGFjZSA9IF9fb3Mud2lkZW4oJyAnKTsKICAgICAgX19vcy5mbGFncyhf
X2lvc19iYXNlOjpkZWMgfCBfX2lvc19iYXNlOjpmaXhlZCB8IF9faW9zX2Jhc2U6OmxlZnQpOwog
ICAgICBfX29zLmZpbGwoX19zcGFjZSk7CgogICAgICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kg
PCBfX3I7ICsrX19pKQogX19vcyA8PCBfX3guX01feFtfX2ldIDw8IF9fc3BhY2U7CiAgICAgIF9f
b3MgPDwgX194Ll9NX2NhcnJ5IDw8IF9fc3BhY2UgPDwgX194Ll9NX3A7CgogICAgICBfX29zLmZs
YWdzKF9fZmxhZ3MpOwogICAgICBfX29zLmZpbGwoX19maWxsKTsKICAgICAgcmV0dXJuIF9fb3M7
CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZSwgc2l6ZV90IF9fdywgc2l6ZV90
IF9fcywgc2l6ZV90IF9fciwKICAgIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4K
ICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+Pihz
dGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywKICAgICAgICBzdWJ0cmFj
dF93aXRoX2NhcnJ5X2VuZ2luZTxfVUludFR5cGUsIF9fdywgX19zLCBfX3I+JiBfX3gpCiAgICB7
CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3Ry
ZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6Omlvc19iYXNl
IF9faW9zX2Jhc2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBf
X2ZsYWdzID0gX19pcy5mbGFncygpOwogICAgICBfX2lzLmZsYWdzKF9faW9zX2Jhc2U6OmRlYyB8
IF9faW9zX2Jhc2U6OnNraXB3cyk7CgogICAgICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBf
X3I7ICsrX19pKQogX19pcyA+PiBfX3guX01feFtfX2ldOwogICAgICBfX2lzID4+IF9feC5fTV9j
YXJyeTsKICAgICAgX19pcyA+PiBfX3guX01fcDsKCiAgICAgIF9faXMuZmxhZ3MoX19mbGFncyk7
CiAgICAgIHJldHVybiBfX2lzOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbU51
bWJlckVuZ2luZSwgc2l6ZV90IF9fcCwgc2l6ZV90IF9fcj4KICAgIGNvbnN0ZXhwciBzaXplX3QK
ICAgIGRpc2NhcmRfYmxvY2tfZW5naW5lPF9SYW5kb21OdW1iZXJFbmdpbmUsIF9fcCwgX19yPjo6
YmxvY2tfc2l6ZTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbU51bWJlckVuZ2luZSwgc2l6
ZV90IF9fcCwgc2l6ZV90IF9fcj4KICAgIGNvbnN0ZXhwciBzaXplX3QKICAgIGRpc2NhcmRfYmxv
Y2tfZW5naW5lPF9SYW5kb21OdW1iZXJFbmdpbmUsIF9fcCwgX19yPjo6dXNlZF9ibG9jazsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbU51bWJlckVuZ2luZSwgc2l6ZV90IF9fcCwgc2l6ZV90
IF9fcj4KICAgIHR5cGVuYW1lIGRpc2NhcmRfYmxvY2tfZW5naW5lPF9SYW5kb21OdW1iZXJFbmdp
bmUsCiAgICAgIF9fcCwgX19yPjo6cmVzdWx0X3R5cGUKICAgIGRpc2NhcmRfYmxvY2tfZW5naW5l
PF9SYW5kb21OdW1iZXJFbmdpbmUsIF9fcCwgX19yPjo6CiAgICBvcGVyYXRvcigpKCkKICAgIHsK
ICAgICAgaWYgKF9NX24gPj0gdXNlZF9ibG9jaykKIHsKICAgX01fYi5kaXNjYXJkKGJsb2NrX3Np
emUgLSBfTV9uKTsKICAgX01fbiA9IDA7CiB9CiAgICAgICsrX01fbjsKICAgICAgcmV0dXJuIF9N
X2IoKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbU51bWJlckVuZ2luZSwgc2l6
ZV90IF9fcCwgc2l6ZV90IF9fciwKICAgIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I8
PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAgICAgICBjb25z
dCBkaXNjYXJkX2Jsb2NrX2VuZ2luZTxfUmFuZG9tTnVtYmVyRW5naW5lLAogICAgICAgIF9fcCwg
X19yPiYgX194KQogICAgewogICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+IF9fb3N0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fb3N0cmVh
bV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3Nf
YmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9fb3MuZmxhZ3MoKTsKICAgICAgY29uc3QgX0NoYXJU
IF9fZmlsbCA9IF9fb3MuZmlsbCgpOwogICAgICBjb25zdCBfQ2hhclQgX19zcGFjZSA9IF9fb3Mu
d2lkZW4oJyAnKTsKICAgICAgX19vcy5mbGFncyhfX2lvc19iYXNlOjpkZWMgfCBfX2lvc19iYXNl
OjpmaXhlZCB8IF9faW9zX2Jhc2U6OmxlZnQpOwogICAgICBfX29zLmZpbGwoX19zcGFjZSk7Cgog
ICAgICBfX29zIDw8IF9feC5iYXNlKCkgPDwgX19zcGFjZSA8PCBfX3guX01fbjsKCiAgICAgIF9f
b3MuZmxhZ3MoX19mbGFncyk7CiAgICAgIF9fb3MuZmlsbChfX2ZpbGwpOwogICAgICByZXR1cm4g
X19vczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbU51bWJlckVuZ2luZSwgc2l6
ZV90IF9fcCwgc2l6ZV90IF9fciwKICAgIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cz4KICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+
PihzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywKICAgICAgICBkaXNj
YXJkX2Jsb2NrX2VuZ2luZTxfUmFuZG9tTnVtYmVyRW5naW5lLCBfX3AsIF9fcj4mIF9feCkKICAg
IHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX2lz
dHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6aW9zX2Jh
c2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdz
IF9fZmxhZ3MgPSBfX2lzLmZsYWdzKCk7CiAgICAgIF9faXMuZmxhZ3MoX19pb3NfYmFzZTo6ZGVj
IHwgX19pb3NfYmFzZTo6c2tpcHdzKTsKCiAgICAgIF9faXMgPj4gX194Ll9NX2IgPj4gX194Ll9N
X247CgogICAgICBfX2lzLmZsYWdzKF9fZmxhZ3MpOwogICAgICByZXR1cm4gX19pczsKICAgIH0K
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21OdW1iZXJFbmdpbmUsIHNpemVfdCBfX3csIHR5
cGVuYW1lIF9VSW50VHlwZT4KICAgIHR5cGVuYW1lIGluZGVwZW5kZW50X2JpdHNfZW5naW5lPF9S
YW5kb21OdW1iZXJFbmdpbmUsIF9fdywgX1VJbnRUeXBlPjo6CiAgICAgIHJlc3VsdF90eXBlCiAg
ICBpbmRlcGVuZGVudF9iaXRzX2VuZ2luZTxfUmFuZG9tTnVtYmVyRW5naW5lLCBfX3csIF9VSW50
VHlwZT46OgogICAgb3BlcmF0b3IoKSgpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1Jh
bmRvbU51bWJlckVuZ2luZTo6cmVzdWx0X3R5cGUgX0VyZXN1bHRfdHlwZTsKICAgICAgY29uc3Qg
X0VyZXN1bHRfdHlwZSBfX3IKID0gKF9NX2IubWF4KCkgLSBfTV9iLm1pbigpIDwgc3RkOjpudW1l
cmljX2xpbWl0czxfRXJlc3VsdF90eXBlPjo6bWF4KCkKICAgID8gX01fYi5tYXgoKSAtIF9NX2Iu
bWluKCkgKyAxIDogMCk7CiAgICAgIGNvbnN0IHVuc2lnbmVkIF9fZWRpZyA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8X0VyZXN1bHRfdHlwZT46OmRpZ2l0czsKICAgICAgY29uc3QgdW5zaWduZWQgX19t
ID0gX19yID8gc3RkOjpfX2xnKF9fcikgOiBfX2VkaWc7CgogICAgICB0eXBlZGVmIHR5cGVuYW1l
IHN0ZDo6Y29tbW9uX3R5cGU8X0VyZXN1bHRfdHlwZSwgcmVzdWx0X3R5cGU+Ojp0eXBlCiBfX2N0
eXBlOwogICAgICBjb25zdCB1bnNpZ25lZCBfX2NkaWcgPSBzdGQ6Om51bWVyaWNfbGltaXRzPF9f
Y3R5cGU+OjpkaWdpdHM7CgogICAgICB1bnNpZ25lZCBfX24sIF9fbjA7CiAgICAgIF9fY3R5cGUg
X19zMCwgX19zMSwgX195MCwgX195MTsKCiAgICAgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8
IDI7ICsrX19pKQogewogICBfX24gPSAoX193ICsgX19tIC0gMSkgLyBfX20gKyBfX2k7CiAgIF9f
bjAgPSBfX24gLSBfX3cgJSBfX247CiAgIGNvbnN0IHVuc2lnbmVkIF9fdzAgPSBfX3cgLyBfX247
CgogICBfX3MwID0gMDsKICAgX19zMSA9IDA7CiAgIGlmIChfX3cwIDwgX19jZGlnKQogICAgIHsK
ICAgICAgIF9fczAgPSBfX2N0eXBlKDEpIDw8IF9fdzA7CiAgICAgICBfX3MxID0gX19zMCA8PCAx
OwogICAgIH0KCiAgIF9feTAgPSAwOwogICBfX3kxID0gMDsKICAgaWYgKF9fcikKICAgICB7CiAg
ICAgICBfX3kwID0gX19zMCAqIChfX3IgLyBfX3MwKTsKICAgICAgIGlmIChfX3MxKQogIF9feTEg
PSBfX3MxICogKF9fciAvIF9fczEpOwoKICAgICAgIGlmIChfX3IgLSBfX3kwIDw9IF9feTAgLyBf
X24pCiAgYnJlYWs7CiAgICAgfQogICBlbHNlCiAgICAgYnJlYWs7CiB9CgogICAgICByZXN1bHRf
dHlwZSBfX3N1bSA9IDA7CiAgICAgIGZvciAoc2l6ZV90IF9fayA9IDA7IF9fayA8IF9fbjA7ICsr
X19rKQogewogICBfX2N0eXBlIF9fdTsKICAgZG8KICAgICBfX3UgPSBfTV9iKCkgLSBfTV9iLm1p
bigpOwogICB3aGlsZSAoX195MCAmJiBfX3UgPj0gX195MCk7CiAgIF9fc3VtID0gX19zMCAqIF9f
c3VtICsgKF9fczAgPyBfX3UgJSBfX3MwIDogX191KTsKIH0KICAgICAgZm9yIChzaXplX3QgX19r
ID0gX19uMDsgX19rIDwgX19uOyArK19faykKIHsKICAgX19jdHlwZSBfX3U7CiAgIGRvCiAgICAg
X191ID0gX01fYigpIC0gX01fYi5taW4oKTsKICAgd2hpbGUgKF9feTEgJiYgX191ID49IF9feTEp
OwogICBfX3N1bSA9IF9fczEgKiBfX3N1bSArIChfX3MxID8gX191ICUgX19zMSA6IF9fdSk7CiB9
CiAgICAgIHJldHVybiBfX3N1bTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21O
dW1iZXJFbmdpbmUsIHNpemVfdCBfX2s+CiAgICBjb25zdGV4cHIgc2l6ZV90CiAgICBzaHVmZmxl
X29yZGVyX2VuZ2luZTxfUmFuZG9tTnVtYmVyRW5naW5lLCBfX2s+Ojp0YWJsZV9zaXplOwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tTnVtYmVyRW5naW5lLCBzaXplX3QgX19rPgogICAgdHlw
ZW5hbWUgc2h1ZmZsZV9vcmRlcl9lbmdpbmU8X1JhbmRvbU51bWJlckVuZ2luZSwgX19rPjo6cmVz
dWx0X3R5cGUKICAgIHNodWZmbGVfb3JkZXJfZW5naW5lPF9SYW5kb21OdW1iZXJFbmdpbmUsIF9f
az46OgogICAgb3BlcmF0b3IoKSgpCiAgICB7CiAgICAgIHNpemVfdCBfX2ogPSBfX2sgKiAoKF9N
X3kgLSBfTV9iLm1pbigpKQogICAgIC8gKF9NX2IubWF4KCkgLSBfTV9iLm1pbigpICsgMS4wTCkp
OwogICAgICBfTV95ID0gX01fdltfX2pdOwogICAgICBfTV92W19fal0gPSBfTV9iKCk7CgogICAg
ICByZXR1cm4gX01feTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbU51bWJlckVu
Z2luZSwgc2l6ZV90IF9faywKICAgIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4K
ICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChz
dGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAgICAgICBjb25zdCBz
aHVmZmxlX29yZGVyX2VuZ2luZTxfUmFuZG9tTnVtYmVyRW5naW5lLCBfX2s+JiBfX3gpCiAgICB7
CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3Ry
ZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlvc19iYXNl
IF9faW9zX2Jhc2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBf
X2ZsYWdzID0gX19vcy5mbGFncygpOwogICAgICBjb25zdCBfQ2hhclQgX19maWxsID0gX19vcy5m
aWxsKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX3NwYWNlID0gX19vcy53aWRlbignICcpOwogICAg
ICBfX29zLmZsYWdzKF9faW9zX2Jhc2U6OmRlYyB8IF9faW9zX2Jhc2U6OmZpeGVkIHwgX19pb3Nf
YmFzZTo6bGVmdCk7CiAgICAgIF9fb3MuZmlsbChfX3NwYWNlKTsKCiAgICAgIF9fb3MgPDwgX194
LmJhc2UoKTsKICAgICAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgX19rOyArK19faSkKIF9f
b3MgPDwgX19zcGFjZSA8PCBfX3guX01fdltfX2ldOwogICAgICBfX29zIDw8IF9fc3BhY2UgPDwg
X194Ll9NX3k7CgogICAgICBfX29zLmZsYWdzKF9fZmxhZ3MpOwogICAgICBfX29zLmZpbGwoX19m
aWxsKTsKICAgICAgcmV0dXJuIF9fb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5k
b21OdW1iZXJFbmdpbmUsIHNpemVfdCBfX2ssCiAgICB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9w
ZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAg
ICAgc2h1ZmZsZV9vcmRlcl9lbmdpbmU8X1JhbmRvbU51bWJlckVuZ2luZSwgX19rPiYgX194KQog
ICAgewogICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9f
aXN0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppb3Nf
YmFzZSBfX2lvc19iYXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10Zmxh
Z3MgX19mbGFncyA9IF9faXMuZmxhZ3MoKTsKICAgICAgX19pcy5mbGFncyhfX2lvc19iYXNlOjpk
ZWMgfCBfX2lvc19iYXNlOjpza2lwd3MpOwoKICAgICAgX19pcyA+PiBfX3guX01fYjsKICAgICAg
Zm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgX19rOyArK19faSkKIF9faXMgPj4gX194Ll9NX3Zb
X19pXTsKICAgICAgX19pcyA+PiBfX3guX01feTsKCiAgICAgIF9faXMuZmxhZ3MoX19mbGFncyk7
CiAgICAgIHJldHVybiBfX2lzOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGU+
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAg
ICAgdHlwZW5hbWUgdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPjo6cmVzdWx0X3R5
cGUKICAgICAgdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPjo6CiAgICAgIG9wZXJh
dG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29uc3QgcGFy
YW1fdHlwZSYgX19wYXJhbSkKICAgICAgewogdHlwZWRlZiB0eXBlbmFtZSBfVW5pZm9ybVJhbmRv
bU51bWJlckdlbmVyYXRvcjo6cmVzdWx0X3R5cGUKICAgX0dyZXN1bHRfdHlwZTsKIHR5cGVkZWYg
dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPHJlc3VsdF90eXBlPjo6dHlwZSBfX3V0eXBlOwog
dHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmNvbW1vbl90eXBlPF9HcmVzdWx0X3R5cGUsIF9fdXR5cGU+
Ojp0eXBlCiAgIF9fdWN0eXBlOwoKIGNvbnN0IF9fdWN0eXBlIF9fdXJuZ21pbiA9IF9fdXJuZy5t
aW4oKTsKIGNvbnN0IF9fdWN0eXBlIF9fdXJuZ21heCA9IF9fdXJuZy5tYXgoKTsKIGNvbnN0IF9f
dWN0eXBlIF9fdXJuZ3JhbmdlID0gX191cm5nbWF4IC0gX191cm5nbWluOwogY29uc3QgX191Y3R5
cGUgX191cmFuZ2UKICAgPSBfX3VjdHlwZShfX3BhcmFtLmIoKSkgLSBfX3VjdHlwZShfX3BhcmFt
LmEoKSk7CgogX191Y3R5cGUgX19yZXQ7CgogaWYgKF9fdXJuZ3JhbmdlID4gX191cmFuZ2UpCiAg
IHsKCiAgICAgY29uc3QgX191Y3R5cGUgX191ZXJhbmdlID0gX191cmFuZ2UgKyAxOwogICAgIGNv
bnN0IF9fdWN0eXBlIF9fc2NhbGluZyA9IF9fdXJuZ3JhbmdlIC8gX191ZXJhbmdlOwogICAgIGNv
bnN0IF9fdWN0eXBlIF9fcGFzdCA9IF9fdWVyYW5nZSAqIF9fc2NhbGluZzsKICAgICBkbwogICAg
ICAgX19yZXQgPSBfX3VjdHlwZShfX3VybmcoKSkgLSBfX3VybmdtaW47CiAgICAgd2hpbGUgKF9f
cmV0ID49IF9fcGFzdCk7CiAgICAgX19yZXQgLz0gX19zY2FsaW5nOwogICB9CiBlbHNlIGlmIChf
X3VybmdyYW5nZSA8IF9fdXJhbmdlKQogICB7CiMgOTI0ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvcmFuZG9tLnRjYyIgMwogICAg
IF9fdWN0eXBlIF9fdG1wOwogICAgIGRvCiAgICAgICB7CiAgY29uc3QgX191Y3R5cGUgX191ZXJu
Z3JhbmdlID0gX191cm5ncmFuZ2UgKyAxOwogIF9fdG1wID0gKF9fdWVybmdyYW5nZSAqIG9wZXJh
dG9yKCkKICAgIChfX3VybmcsIHBhcmFtX3R5cGUoMCwgX191cmFuZ2UgLyBfX3Vlcm5ncmFuZ2Up
KSk7CiAgX19yZXQgPSBfX3RtcCArIChfX3VjdHlwZShfX3VybmcoKSkgLSBfX3VybmdtaW4pOwog
ICAgICAgfQogICAgIHdoaWxlIChfX3JldCA+IF9fdXJhbmdlIHx8IF9fcmV0IDwgX190bXApOwog
ICB9CiBlbHNlCiAgIF9fcmV0ID0gX191Y3R5cGUoX191cm5nKCkpIC0gX191cm5nbWluOwoKIHJl
dHVybiBfX3JldCArIF9fcGFyYW0uYSgpOwogICAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
SW50VHlwZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgIHR5
cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgICB2b2lkCiAgICAgIHVu
aWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OgogICAgICBfX2dlbmVyYXRlX2ltcGwo
X0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgICAgIF9Vbmlm
b3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgICAgY29uc3QgcGFyYW1fdHlw
ZSYgX19wYXJhbSkKICAgICAgewoKIHR5cGVkZWYgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1i
ZXJHZW5lcmF0b3I6OnJlc3VsdF90eXBlCiAgIF9HcmVzdWx0X3R5cGU7CiB0eXBlZGVmIHR5cGVu
YW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxyZXN1bHRfdHlwZT46OnR5cGUgX191dHlwZTsKIHR5cGVk
ZWYgdHlwZW5hbWUgc3RkOjpjb21tb25fdHlwZTxfR3Jlc3VsdF90eXBlLCBfX3V0eXBlPjo6dHlw
ZQogICBfX3VjdHlwZTsKCiBjb25zdCBfX3VjdHlwZSBfX3VybmdtaW4gPSBfX3VybmcubWluKCk7
CiBjb25zdCBfX3VjdHlwZSBfX3VybmdtYXggPSBfX3VybmcubWF4KCk7CiBjb25zdCBfX3VjdHlw
ZSBfX3VybmdyYW5nZSA9IF9fdXJuZ21heCAtIF9fdXJuZ21pbjsKIGNvbnN0IF9fdWN0eXBlIF9f
dXJhbmdlCiAgID0gX191Y3R5cGUoX19wYXJhbS5iKCkpIC0gX191Y3R5cGUoX19wYXJhbS5hKCkp
OwoKIF9fdWN0eXBlIF9fcmV0OwoKIGlmIChfX3VybmdyYW5nZSA+IF9fdXJhbmdlKQogICB7CiAg
ICAgaWYgKF9fZGV0YWlsOjpfUG93ZXJfb2ZfMihfX3VybmdyYW5nZSArIDEpCiAgJiYgX19kZXRh
aWw6Ol9Qb3dlcl9vZl8yKF9fdXJhbmdlICsgMSkpCiAgICAgICB7CiAgd2hpbGUgKF9fZiAhPSBf
X3QpCiAgICB7CiAgICAgIF9fcmV0ID0gX191Y3R5cGUoX191cm5nKCkpIC0gX191cm5nbWluOwog
ICAgICAqX19mKysgPSAoX19yZXQgJiBfX3VyYW5nZSkgKyBfX3BhcmFtLmEoKTsKICAgIH0KICAg
ICAgIH0KICAgICBlbHNlCiAgICAgICB7CgogIGNvbnN0IF9fdWN0eXBlIF9fdWVyYW5nZSA9IF9f
dXJhbmdlICsgMTsKICBjb25zdCBfX3VjdHlwZSBfX3NjYWxpbmcgPSBfX3VybmdyYW5nZSAvIF9f
dWVyYW5nZTsKICBjb25zdCBfX3VjdHlwZSBfX3Bhc3QgPSBfX3VlcmFuZ2UgKiBfX3NjYWxpbmc7
CiAgd2hpbGUgKF9fZiAhPSBfX3QpCiAgICB7CiAgICAgIGRvCiAgICAgICAgX19yZXQgPSBfX3Vj
dHlwZShfX3VybmcoKSkgLSBfX3VybmdtaW47CiAgICAgIHdoaWxlIChfX3JldCA+PSBfX3Bhc3Qp
OwogICAgICAqX19mKysgPSBfX3JldCAvIF9fc2NhbGluZyArIF9fcGFyYW0uYSgpOwogICAgfQog
ICAgICAgfQogICB9CiBlbHNlIGlmIChfX3VybmdyYW5nZSA8IF9fdXJhbmdlKQogICB7CiMgMTAw
OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9iaXRzL3JhbmRvbS50Y2MiIDMKICAgICBfX3VjdHlwZSBfX3RtcDsKICAgICB3aGlsZSAoX19m
ICE9IF9fdCkKICAgICAgIHsKICBkbwogICAgewogICAgICBjb25zdCBfX3VjdHlwZSBfX3Vlcm5n
cmFuZ2UgPSBfX3VybmdyYW5nZSArIDE7CiAgICAgIF9fdG1wID0gKF9fdWVybmdyYW5nZSAqIG9w
ZXJhdG9yKCkKICAgICAgICAoX191cm5nLCBwYXJhbV90eXBlKDAsIF9fdXJhbmdlIC8gX191ZXJu
Z3JhbmdlKSkpOwogICAgICBfX3JldCA9IF9fdG1wICsgKF9fdWN0eXBlKF9fdXJuZygpKSAtIF9f
dXJuZ21pbik7CiAgICB9CiAgd2hpbGUgKF9fcmV0ID4gX191cmFuZ2UgfHwgX19yZXQgPCBfX3Rt
cCk7CiAgKl9fZisrID0gX19yZXQ7CiAgICAgICB9CiAgIH0KIGVsc2UKICAgd2hpbGUgKF9fZiAh
PSBfX3QpCiAgICAgKl9fZisrID0gX191Y3R5cGUoX191cm5nKCkpIC0gX191cm5nbWluICsgX19w
YXJhbS5hKCk7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGUsIHR5cGVuYW1l
IF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJh
aXRzPiYgX19vcywKICAgICAgICBjb25zdCB1bmlmb3JtX2ludF9kaXN0cmlidXRpb248X0ludFR5
cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19vc3RyZWFt
X3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19i
YXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19vcy5mbGFncygpOwogICAgICBjb25zdCBfQ2hhclQg
X19maWxsID0gX19vcy5maWxsKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX3NwYWNlID0gX19vcy53
aWRlbignICcpOwogICAgICBfX29zLmZsYWdzKF9faW9zX2Jhc2U6OnNjaWVudGlmaWMgfCBfX2lv
c19iYXNlOjpsZWZ0KTsKICAgICAgX19vcy5maWxsKF9fc3BhY2UpOwoKICAgICAgX19vcyA8PCBf
X3guYSgpIDw8IF9fc3BhY2UgPDwgX194LmIoKTsKCiAgICAgIF9fb3MuZmxhZ3MoX19mbGFncyk7
CiAgICAgIF9fb3MuZmlsbChfX2ZpbGwpOwogICAgICByZXR1cm4gX19vczsKICAgIH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0ludFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cz4KICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+
PihzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywKICAgICAgICB1bmlm
b3JtX2ludF9kaXN0cmlidXRpb248X0ludFR5cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYg
c3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7CiAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7Cgog
ICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19pcy5m
bGFncygpOwogICAgICBfX2lzLmZsYWdzKF9faW9zX2Jhc2U6OmRlYyB8IF9faW9zX2Jhc2U6OnNr
aXB3cyk7CgogICAgICBfSW50VHlwZSBfX2EsIF9fYjsKICAgICAgX19pcyA+PiBfX2EgPj4gX19i
OwogICAgICBfX3gucGFyYW0odHlwZW5hbWUgdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPF9JbnRU
eXBlPjo6CiAgcGFyYW1fdHlwZShfX2EsIF9fYikpOwoKICAgICAgX19pcy5mbGFncyhfX2ZsYWdz
KTsKICAgICAgcmV0dXJuIF9faXM7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5
cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICB0eXBlbmFt
ZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdm9pZAogICAgICB1bmlmb3Jt
X3JlYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OgogICAgICBfX2dlbmVyYXRlX2ltcGwoX0Zv
cndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgICAgIF9Vbmlmb3Jt
UmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgICAgY29uc3QgcGFyYW1fdHlwZSYg
X19wKQogICAgICB7CgogX19kZXRhaWw6Ol9BZGFwdG9yPF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2Vu
ZXJhdG9yLCByZXN1bHRfdHlwZT4KICAgX19hdXJuZyhfX3VybmcpOwogYXV0byBfX3JhbmdlID0g
X19wLmIoKSAtIF9fcC5hKCk7CiB3aGlsZSAoX19mICE9IF9fdCkKICAgKl9fZisrID0gX19hdXJu
ZygpICogX19yYW5nZSArIF9fcC5hKCk7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jl
YWxUeXBlLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2lj
X29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3Ry
ZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAgICAgICAgY29uc3QgdW5pZm9ybV9yZWFsX2Rp
c3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNp
Y19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAgICBjb25z
dCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19vcy5mbGFncygpOwog
ICAgICBjb25zdCBfQ2hhclQgX19maWxsID0gX19vcy5maWxsKCk7CiAgICAgIGNvbnN0IHN0ZDo6
c3RyZWFtc2l6ZSBfX3ByZWNpc2lvbiA9IF9fb3MucHJlY2lzaW9uKCk7CiAgICAgIGNvbnN0IF9D
aGFyVCBfX3NwYWNlID0gX19vcy53aWRlbignICcpOwogICAgICBfX29zLmZsYWdzKF9faW9zX2Jh
c2U6OnNjaWVudGlmaWMgfCBfX2lvc19iYXNlOjpsZWZ0KTsKICAgICAgX19vcy5maWxsKF9fc3Bh
Y2UpOwogICAgICBfX29zLnByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPF9SZWFsVHlwZT46
Om1heF9kaWdpdHMxMCk7CgogICAgICBfX29zIDw8IF9feC5hKCkgPDwgX19zcGFjZSA8PCBfX3gu
YigpOwoKICAgICAgX19vcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgX19vcy5maWxsKF9fZmlsbCk7
CiAgICAgIF9fb3MucHJlY2lzaW9uKF9fcHJlY2lzaW9uKTsKICAgICAgcmV0dXJuIF9fb3M7CiAg
ICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAg
ICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAog
ICAgICAgIHVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194KQogICAgewog
ICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVh
bV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppb3NfYmFzZSBf
X2lvc19iYXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19m
bGFncyA9IF9faXMuZmxhZ3MoKTsKICAgICAgX19pcy5mbGFncyhfX2lvc19iYXNlOjpza2lwd3Mp
OwoKICAgICAgX1JlYWxUeXBlIF9fYSwgX19iOwogICAgICBfX2lzID4+IF9fYSA+PiBfX2I7CiAg
ICAgIF9feC5wYXJhbSh0eXBlbmFtZSB1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlw
ZT46OgogIHBhcmFtX3R5cGUoX19hLCBfX2IpKTsKCiAgICAgIF9faXMuZmxhZ3MoX19mbGFncyk7
CiAgICAgIHJldHVybiBfX2lzOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJ
dGVyYXRvciwKICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAg
dm9pZAogICAgc3RkOjpiZXJub3VsbGlfZGlzdHJpYnV0aW9uOjoKICAgIF9fZ2VuZXJhdGVfaW1w
bChfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgIF9Vbmlm
b3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgIGNvbnN0IHBhcmFtX3R5cGUm
IF9fcCkKICAgIHsKICAgICAKICAgICAgX19kZXRhaWw6Ol9BZGFwdG9yPF9Vbmlmb3JtUmFuZG9t
TnVtYmVyR2VuZXJhdG9yLCBkb3VibGU+CiBfX2F1cm5nKF9fdXJuZyk7CiAgICAgIGF1dG8gX19s
aW1pdCA9IF9fcC5wKCkgKiAoX19hdXJuZy5tYXgoKSAtIF9fYXVybmcubWluKCkpOwoKICAgICAg
d2hpbGUgKF9fZiAhPSBfX3QpCiAqX19mKysgPSAoX19hdXJuZygpIC0gX19hdXJuZy5taW4oKSkg
PCBfX2xpbWl0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHM+CiAgICBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJh
dG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAgICAgICAg
Y29uc3QgYmVybm91bGxpX2Rpc3RyaWJ1dGlvbiYgX194KQogICAgewogICAgICB0eXBlZGVmIHN0
ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9fb3N0cmVhbV90eXBlOwogICAgICB0
eXBlZGVmIHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAg
ICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9fb3MuZmxh
Z3MoKTsKICAgICAgY29uc3QgX0NoYXJUIF9fZmlsbCA9IF9fb3MuZmlsbCgpOwogICAgICBjb25z
dCBzdGQ6OnN0cmVhbXNpemUgX19wcmVjaXNpb24gPSBfX29zLnByZWNpc2lvbigpOwogICAgICBf
X29zLmZsYWdzKF9faW9zX2Jhc2U6OnNjaWVudGlmaWMgfCBfX2lvc19iYXNlOjpsZWZ0KTsKICAg
ICAgX19vcy5maWxsKF9fb3Mud2lkZW4oJyAnKSk7CiAgICAgIF9fb3MucHJlY2lzaW9uKHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4X2RpZ2l0czEwKTsKCiAgICAgIF9fb3MgPDwgX194
LnAoKTsKCiAgICAgIF9fb3MuZmxhZ3MoX19mbGFncyk7CiAgICAgIF9fb3MuZmlsbChfX2ZpbGwp
OwogICAgICBfX29zLnByZWNpc2lvbihfX3ByZWNpc2lvbik7CiAgICAgIHJldHVybiBfX29zOwog
ICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdHlwZW5hbWUgZ2VvbWV0cmlj
X2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OnJlc3VsdF90eXBlCiAgICAgIGdlb21ldHJpY19kaXN0
cmlidXRpb248X0ludFR5cGU+OjoKICAgICAgb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJl
ckdlbmVyYXRvciYgX191cm5nLAogICBjb25zdCBwYXJhbV90eXBlJiBfX3BhcmFtKQogICAgICB7
CgoKIGNvbnN0IGRvdWJsZSBfX25hZiA9CiAgICgxIC0gc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjplcHNpbG9uKCkpIC8gMjsKCiBjb25zdCBkb3VibGUgX190aHIgPQogICBzdGQ6Om51bWVy
aWNfbGltaXRzPF9JbnRUeXBlPjo6bWF4KCkgKyBfX25hZjsKIF9fZGV0YWlsOjpfQWRhcHRvcjxf
VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgZG91YmxlPgogICBfX2F1cm5nKF9fdXJuZyk7
CgogZG91YmxlIF9fY2FuZDsKIGRvCiAgIF9fY2FuZCA9IHN0ZDo6Zmxvb3Ioc3RkOjpsb2coMS4w
IC0gX19hdXJuZygpKSAvIF9fcGFyYW0uX01fbG9nXzFfcCk7CiB3aGlsZSAoX19jYW5kID49IF9f
dGhyKTsKCiByZXR1cm4gcmVzdWx0X3R5cGUoX19jYW5kICsgX19uYWYpOwogICAgICB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJ
dGVyYXRvciwKICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAg
ICAgIHZvaWQKICAgICAgZ2VvbWV0cmljX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OgogICAgICBf
X2dlbmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190
LAogICAgICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgICAg
Y29uc3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAgICAgewoKCgogY29uc3QgZG91YmxlIF9fbmFm
ID0KICAgKDEgLSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmVwc2lsb24oKSkgLyAyOwoK
IGNvbnN0IGRvdWJsZSBfX3RociA9CiAgIHN0ZDo6bnVtZXJpY19saW1pdHM8X0ludFR5cGU+Ojpt
YXgoKSArIF9fbmFmOwogX19kZXRhaWw6Ol9BZGFwdG9yPF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2Vu
ZXJhdG9yLCBkb3VibGU+CiAgIF9fYXVybmcoX191cm5nKTsKCiB3aGlsZSAoX19mICE9IF9fdCkK
ICAgewogICAgIGRvdWJsZSBfX2NhbmQ7CiAgICAgZG8KICAgICAgIF9fY2FuZCA9IHN0ZDo6Zmxv
b3Ioc3RkOjpsb2coMS4wIC0gX19hdXJuZygpKQogICAgICAvIF9fcGFyYW0uX01fbG9nXzFfcCk7
CiAgICAgd2hpbGUgKF9fY2FuZCA+PSBfX3Rocik7CgogICAgICpfX2YrKyA9IF9fY2FuZCArIF9f
bmFmOwogICB9CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGUsCiAgICB0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX29zdHJlYW08X0No
YXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4mIF9fb3MsCiAgICAgICAgY29uc3QgZ2VvbWV0cmljX2Rpc3RyaWJ1dGlvbjxfSW50
VHlwZT4mIF9feCkKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJU
LCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX29zdHJl
YW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9z
X2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX29zLmZsYWdzKCk7CiAgICAgIGNvbnN0IF9DaGFy
VCBfX2ZpbGwgPSBfX29zLmZpbGwoKTsKICAgICAgY29uc3Qgc3RkOjpzdHJlYW1zaXplIF9fcHJl
Y2lzaW9uID0gX19vcy5wcmVjaXNpb24oKTsKICAgICAgX19vcy5mbGFncyhfX2lvc19iYXNlOjpz
Y2llbnRpZmljIHwgX19pb3NfYmFzZTo6bGVmdCk7CiAgICAgIF9fb3MuZmlsbChfX29zLndpZGVu
KCcgJykpOwogICAgICBfX29zLnByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
Om1heF9kaWdpdHMxMCk7CgogICAgICBfX29zIDw8IF9feC5wKCk7CgogICAgICBfX29zLmZsYWdz
KF9fZmxhZ3MpOwogICAgICBfX29zLmZpbGwoX19maWxsKTsKICAgICAgX19vcy5wcmVjaXNpb24o
X19wcmVjaXNpb24pOwogICAgICByZXR1cm4gX19vczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ludFR5cGUsCiAgICB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBz
dGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oc3RkOjpi
YXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAgICAgZ2VvbWV0cmljX2Rp
c3RyaWJ1dGlvbjxfSW50VHlwZT4mIF9feCkKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2lj
X2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX2lzdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0
IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX2lzLmZsYWdzKCk7CiAg
ICAgIF9faXMuZmxhZ3MoX19pb3NfYmFzZTo6c2tpcHdzKTsKCiAgICAgIGRvdWJsZSBfX3A7CiAg
ICAgIF9faXMgPj4gX19wOwogICAgICBfX3gucGFyYW0odHlwZW5hbWUgZ2VvbWV0cmljX2Rpc3Ry
aWJ1dGlvbjxfSW50VHlwZT46OnBhcmFtX3R5cGUoX19wKSk7CgogICAgICBfX2lzLmZsYWdzKF9f
ZmxhZ3MpOwogICAgICByZXR1cm4gX19pczsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9J
bnRUeXBlPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0
b3I+CiAgICAgIHR5cGVuYW1lIG5lZ2F0aXZlX2Jpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlw
ZT46OnJlc3VsdF90eXBlCiAgICAgIG5lZ2F0aXZlX2Jpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50
VHlwZT46OgogICAgICBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBf
X3VybmcpCiAgICAgIHsKIGNvbnN0IGRvdWJsZSBfX3kgPSBfTV9nZChfX3VybmcpOwoKCiBzdGQ6
OnBvaXNzb25fZGlzdHJpYnV0aW9uPHJlc3VsdF90eXBlPiBfX3BvaXNzb24oX195KTsKIHJldHVy
biBfX3BvaXNzb24oX191cm5nKTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlw
ZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgog
ICAgICB0eXBlbmFtZSBuZWdhdGl2ZV9iaW5vbWlhbF9kaXN0cmlidXRpb248X0ludFR5cGU+Ojpy
ZXN1bHRfdHlwZQogICAgICBuZWdhdGl2ZV9iaW5vbWlhbF9kaXN0cmlidXRpb248X0ludFR5cGU+
OjoKICAgICAgb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5n
LAogICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgIHsKIHR5cGVkZWYgdHlwZW5hbWUgc3Rk
OjpnYW1tYV9kaXN0cmlidXRpb248ZG91YmxlPjo6cGFyYW1fdHlwZQogICBwYXJhbV90eXBlOwoK
IGNvbnN0IGRvdWJsZSBfX3kgPQogICBfTV9nZChfX3VybmcsIHBhcmFtX3R5cGUoX19wLmsoKSwg
KDEuMCAtIF9fcC5wKCkpIC8gX19wLnAoKSkpOwoKIHN0ZDo6cG9pc3Nvbl9kaXN0cmlidXRpb248
cmVzdWx0X3R5cGU+IF9fcG9pc3NvbihfX3kpOwogcmV0dXJuIF9fcG9pc3NvbihfX3VybmcpOwog
ICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlPgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJH
ZW5lcmF0b3I+CiAgICAgIHZvaWQKICAgICAgbmVnYXRpdmVfYmlub21pYWxfZGlzdHJpYnV0aW9u
PF9JbnRUeXBlPjo6CiAgICAgIF9fZ2VuZXJhdGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9yIF9fZiwg
X0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0
b3ImIF9fdXJuZykKICAgICAgewoKIHdoaWxlIChfX2YgIT0gX190KQogICB7CiAgICAgY29uc3Qg
ZG91YmxlIF9feSA9IF9NX2dkKF9fdXJuZyk7CgoKICAgICBzdGQ6OnBvaXNzb25fZGlzdHJpYnV0
aW9uPHJlc3VsdF90eXBlPiBfX3BvaXNzb24oX195KTsKICAgICAqX19mKysgPSBfX3BvaXNzb24o
X191cm5nKTsKICAgfQogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlPgogICAg
dGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgdHlwZW5hbWUgX1VuaWZv
cm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAgICAgIHZvaWQKICAgICAgbmVnYXRpdmVfYmlub21p
YWxfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPjo6CiAgICAgIF9fZ2VuZXJhdGVfaW1wbChfRm9yd2Fy
ZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgICAgX1VuaWZvcm1SYW5k
b21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3Ap
CiAgICAgIHsKCiB0eXBlbmFtZSBzdGQ6OmdhbW1hX2Rpc3RyaWJ1dGlvbjxyZXN1bHRfdHlwZT46
OnBhcmFtX3R5cGUKICAgX19wMihfX3AuaygpLCAoMS4wIC0gX19wLnAoKSkgLyBfX3AucCgpKTsK
CiB3aGlsZSAoX19mICE9IF9fdCkKICAgewogICAgIGNvbnN0IGRvdWJsZSBfX3kgPSBfTV9nZChf
X3VybmcsIF9fcDIpOwoKICAgICBzdGQ6OnBvaXNzb25fZGlzdHJpYnV0aW9uPHJlc3VsdF90eXBl
PiBfX3BvaXNzb24oX195KTsKICAgICAqX19mKysgPSBfX3BvaXNzb24oX191cm5nKTsKICAgfQog
ICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlLCB0eXBlbmFtZSBfQ2hhclQsIHR5
cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYK
ICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3Ms
CiAgICAgICAgY29uc3QgbmVnYXRpdmVfYmlub21pYWxfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPiYg
X194KQogICAgewogICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+IF9fb3N0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fb3N0cmVhbV90eXBl
Ojppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6
Zm10ZmxhZ3MgX19mbGFncyA9IF9fb3MuZmxhZ3MoKTsKICAgICAgY29uc3QgX0NoYXJUIF9fZmls
bCA9IF9fb3MuZmlsbCgpOwogICAgICBjb25zdCBzdGQ6OnN0cmVhbXNpemUgX19wcmVjaXNpb24g
PSBfX29zLnByZWNpc2lvbigpOwogICAgICBjb25zdCBfQ2hhclQgX19zcGFjZSA9IF9fb3Mud2lk
ZW4oJyAnKTsKICAgICAgX19vcy5mbGFncyhfX2lvc19iYXNlOjpzY2llbnRpZmljIHwgX19pb3Nf
YmFzZTo6bGVmdCk7CiAgICAgIF9fb3MuZmlsbChfX29zLndpZGVuKCcgJykpOwogICAgICBfX29z
LnByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heF9kaWdpdHMxMCk7Cgog
ICAgICBfX29zIDw8IF9feC5rKCkgPDwgX19zcGFjZSA8PCBfX3gucCgpCiAgICA8PCBfX3NwYWNl
IDw8IF9feC5fTV9nZDsKCiAgICAgIF9fb3MuZmxhZ3MoX19mbGFncyk7CiAgICAgIF9fb3MuZmls
bChfX2ZpbGwpOwogICAgICBfX29zLnByZWNpc2lvbihfX3ByZWNpc2lvbik7CiAgICAgIHJldHVy
biBfX29zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlwZSwgdHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1Ry
YWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
JiBfX2lzLAogICAgICAgIG5lZ2F0aXZlX2Jpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4m
IF9feCkKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJh
aXRzPiBfX2lzdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlw
ZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6
OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX2lzLmZsYWdzKCk7CiAgICAgIF9faXMuZmxhZ3MoX19pb3Nf
YmFzZTo6c2tpcHdzKTsKCiAgICAgIF9JbnRUeXBlIF9fazsKICAgICAgZG91YmxlIF9fcDsKICAg
ICAgX19pcyA+PiBfX2sgPj4gX19wID4+IF9feC5fTV9nZDsKICAgICAgX194LnBhcmFtKHR5cGVu
YW1lIG5lZ2F0aXZlX2Jpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OgogIHBhcmFtX3R5
cGUoX19rLCBfX3ApKTsKCiAgICAgIF9faXMuZmxhZ3MoX19mbGFncyk7CiAgICAgIHJldHVybiBf
X2lzOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGU+CiAgICB2b2lkCiAgICBw
b2lzc29uX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OnBhcmFtX3R5cGU6OgogICAgX01faW5pdGlh
bGl6ZSgpCiAgICB7CgogICAgICBpZiAoX01fbWVhbiA+PSAxMikKIHsKICAgY29uc3QgZG91Ymxl
IF9fbSA9IHN0ZDo6Zmxvb3IoX01fbWVhbik7CiAgIF9NX2xtX3RociA9IHN0ZDo6bG9nKF9NX21l
YW4pOwogICBfTV9sZm0gPSBzdGQ6OmxnYW1tYShfX20gKyAxKTsKICAgX01fc20gPSBzdGQ6OnNx
cnQoX19tKTsKCiAgIGNvbnN0IGRvdWJsZSBfX3BpXzQgPSAwLjc4NTM5ODE2MzM5NzQ0ODMwOTYx
NTY2MDg0NTgxOTg3NTdMOwogICBjb25zdCBkb3VibGUgX19keCA9IHN0ZDo6c3FydCgyICogX19t
ICogc3RkOjpsb2coMzIgKiBfX20KICAgICAgICAgICAgIC8gX19waV80KSk7CiAgIF9NX2QgPSBz
dGQ6OnJvdW5kKHN0ZDo6bWF4KDYuMCwgc3RkOjptaW4oX19tLCBfX2R4KSkpOwogICBjb25zdCBk
b3VibGUgX19jeCA9IDIgKiBfX20gKyBfTV9kOwogICBfTV9zY3ggPSBzdGQ6OnNxcnQoX19jeCAv
IDIpOwogICBfTV8xY3ggPSAxIC8gX19jeDsKCiAgIF9NX2MyYiA9IHN0ZDo6c3FydChfX3BpXzQg
KiBfX2N4KSAqIHN0ZDo6ZXhwKF9NXzFjeCk7CiAgIF9NX2NiID0gMiAqIF9fY3ggKiBzdGQ6OmV4
cCgtX01fZCAqIF9NXzFjeCAqICgxICsgX01fZCAvIDIpKQogIC8gX01fZDsKIH0KICAgICAgZWxz
ZQoKIF9NX2xtX3RociA9IHN0ZDo6ZXhwKC1fTV9tZWFuKTsKICAgICAgfQojIDE0MzIgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9y
YW5kb20udGNjIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGU+CiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdHlwZW5hbWUgcG9p
c3Nvbl9kaXN0cmlidXRpb248X0ludFR5cGU+OjpyZXN1bHRfdHlwZQogICAgICBwb2lzc29uX2Rp
c3RyaWJ1dGlvbjxfSW50VHlwZT46OgogICAgICBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVt
YmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcGFyYW0pCiAgICAg
IHsKIF9fZGV0YWlsOjpfQWRhcHRvcjxfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgZG91
YmxlPgogICBfX2F1cm5nKF9fdXJuZyk7CgogaWYgKF9fcGFyYW0ubWVhbigpID49IDEyKQogICB7
CiAgICAgZG91YmxlIF9feDsKCgogICAgIGNvbnN0IGRvdWJsZSBfX25hZiA9CiAgICAgICAoMSAt
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZXBzaWxvbigpKSAvIDI7CiAgICAgY29uc3Qg
ZG91YmxlIF9fdGhyID0KICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8X0ludFR5cGU+OjptYXgo
KSArIF9fbmFmOwoKICAgICBjb25zdCBkb3VibGUgX19tID0gc3RkOjpmbG9vcihfX3BhcmFtLm1l
YW4oKSk7CgogICAgIGNvbnN0IGRvdWJsZSBfX3NwaV8yID0gMS4yNTMzMTQxMzczMTU1MDAyNTEy
MDc4ODI2NDI0MDU1MjI2TDsKICAgICBjb25zdCBkb3VibGUgX19jMSA9IF9fcGFyYW0uX01fc20g
KiBfX3NwaV8yOwogICAgIGNvbnN0IGRvdWJsZSBfX2MyID0gX19wYXJhbS5fTV9jMmIgKyBfX2Mx
OwogICAgIGNvbnN0IGRvdWJsZSBfX2MzID0gX19jMiArIDE7CiAgICAgY29uc3QgZG91YmxlIF9f
YzQgPSBfX2MzICsgMTsKCiAgICAgY29uc3QgZG91YmxlIF9fZTE3OCA9IDEuMDEyOTAzMDQ3OTMy
MDAxODU4MzE4NTUxNDc3NzUxMjk4M0w7CiAgICAgY29uc3QgZG91YmxlIF9fYzUgPSBfX2M0ICsg
X19lMTc4OwogICAgIGNvbnN0IGRvdWJsZSBfX2MgPSBfX3BhcmFtLl9NX2NiICsgX19jNTsKICAg
ICBjb25zdCBkb3VibGUgX18yY3ggPSAyICogKDIgKiBfX20gKyBfX3BhcmFtLl9NX2QpOwoKICAg
ICBib29sIF9fcmVqZWN0ID0gdHJ1ZTsKICAgICBkbwogICAgICAgewogIGNvbnN0IGRvdWJsZSBf
X3UgPSBfX2MgKiBfX2F1cm5nKCk7CiAgY29uc3QgZG91YmxlIF9fZSA9IC1zdGQ6OmxvZygxLjAg
LSBfX2F1cm5nKCkpOwoKICBkb3VibGUgX193ID0gMC4wOwoKICBpZiAoX191IDw9IF9fYzEpCiAg
ICB7CiAgICAgIGNvbnN0IGRvdWJsZSBfX24gPSBfTV9uZChfX3VybmcpOwogICAgICBjb25zdCBk
b3VibGUgX195ID0gLXN0ZDo6YWJzKF9fbikgKiBfX3BhcmFtLl9NX3NtIC0gMTsKICAgICAgX194
ID0gc3RkOjpmbG9vcihfX3kpOwogICAgICBfX3cgPSAtX19uICogX19uIC8gMjsKICAgICAgaWYg
KF9feCA8IC1fX20pCiAgICAgICAgY29udGludWU7CiAgICB9CiAgZWxzZSBpZiAoX191IDw9IF9f
YzIpCiAgICB7CiAgICAgIGNvbnN0IGRvdWJsZSBfX24gPSBfTV9uZChfX3VybmcpOwogICAgICBj
b25zdCBkb3VibGUgX195ID0gMSArIHN0ZDo6YWJzKF9fbikgKiBfX3BhcmFtLl9NX3NjeDsKICAg
ICAgX194ID0gc3RkOjpjZWlsKF9feSk7CiAgICAgIF9fdyA9IF9feSAqICgyIC0gX195KSAqIF9f
cGFyYW0uX01fMWN4OwogICAgICBpZiAoX194ID4gX19wYXJhbS5fTV9kKQogICAgICAgIGNvbnRp
bnVlOwogICAgfQogIGVsc2UgaWYgKF9fdSA8PSBfX2MzKQoKCiAgICBfX3ggPSAtMTsKICBlbHNl
IGlmIChfX3UgPD0gX19jNCkKICAgIF9feCA9IDA7CiAgZWxzZSBpZiAoX191IDw9IF9fYzUpCiAg
ICBfX3ggPSAxOwogIGVsc2UKICAgIHsKICAgICAgY29uc3QgZG91YmxlIF9fdiA9IC1zdGQ6Omxv
ZygxLjAgLSBfX2F1cm5nKCkpOwogICAgICBjb25zdCBkb3VibGUgX195ID0gX19wYXJhbS5fTV9k
CiAgICAgICAgICsgX192ICogX18yY3ggLyBfX3BhcmFtLl9NX2Q7CiAgICAgIF9feCA9IHN0ZDo6
Y2VpbChfX3kpOwogICAgICBfX3cgPSAtX19wYXJhbS5fTV9kICogX19wYXJhbS5fTV8xY3ggKiAo
MSArIF9feSAvIDIpOwogICAgfQoKICBfX3JlamVjdCA9IChfX3cgLSBfX2UgLSBfX3ggKiBfX3Bh
cmFtLl9NX2xtX3RocgogICAgICAgPiBfX3BhcmFtLl9NX2xmbSAtIHN0ZDo6bGdhbW1hKF9feCAr
IF9fbSArIDEpKTsKCiAgX19yZWplY3QgfD0gX194ICsgX19tID49IF9fdGhyOwoKICAgICAgIH0g
d2hpbGUgKF9fcmVqZWN0KTsKCiAgICAgcmV0dXJuIHJlc3VsdF90eXBlKF9feCArIF9fbSArIF9f
bmFmKTsKICAgfQogZWxzZQoKICAgewogICAgIF9JbnRUeXBlIF9feCA9IDA7CiAgICAgZG91Ymxl
IF9fcHJvZCA9IDEuMDsKCiAgICAgZG8KICAgICAgIHsKICBfX3Byb2QgKj0gX19hdXJuZygpOwog
IF9feCArPSAxOwogICAgICAgfQogICAgIHdoaWxlIChfX3Byb2QgPiBfX3BhcmFtLl9NX2xtX3Ro
cik7CgogICAgIHJldHVybiBfX3ggLSAxOwogICB9CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ludFR5cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAg
ICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdm9pZAogICAg
ICBwb2lzc29uX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OgogICAgICBfX2dlbmVyYXRlX2ltcGwo
X0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgICAgIF9Vbmlm
b3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgICAgY29uc3QgcGFyYW1fdHlw
ZSYgX19wYXJhbSkKICAgICAgewoKCiB3aGlsZSAoX19mICE9IF9fdCkKICAgKl9fZisrID0gdGhp
cy0+b3BlcmF0b3IoKShfX3VybmcsIF9fcGFyYW0pOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9JbnRUeXBlLAogICAgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAg
c3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KHN0ZDo6
YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgICAgIGNvbnN0IHBvaXNz
b25fZGlzdHJpYnV0aW9uPF9JbnRUeXBlPiYgX194KQogICAgewogICAgICB0eXBlZGVmIHN0ZDo6
YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9fb3N0cmVhbV90eXBlOwogICAgICB0eXBl
ZGVmIHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAgICAg
Y29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9fb3MuZmxhZ3Mo
KTsKICAgICAgY29uc3QgX0NoYXJUIF9fZmlsbCA9IF9fb3MuZmlsbCgpOwogICAgICBjb25zdCBz
dGQ6OnN0cmVhbXNpemUgX19wcmVjaXNpb24gPSBfX29zLnByZWNpc2lvbigpOwogICAgICBjb25z
dCBfQ2hhclQgX19zcGFjZSA9IF9fb3Mud2lkZW4oJyAnKTsKICAgICAgX19vcy5mbGFncyhfX2lv
c19iYXNlOjpzY2llbnRpZmljIHwgX19pb3NfYmFzZTo6bGVmdCk7CiAgICAgIF9fb3MuZmlsbChf
X3NwYWNlKTsKICAgICAgX19vcy5wcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjptYXhfZGlnaXRzMTApOwoKICAgICAgX19vcyA8PCBfX3gubWVhbigpIDw8IF9fc3BhY2UgPDwg
X194Ll9NX25kOwoKICAgICAgX19vcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgX19vcy5maWxsKF9f
ZmlsbCk7CiAgICAgIF9fb3MucHJlY2lzaW9uKF9fcHJlY2lzaW9uKTsKICAgICAgcmV0dXJuIF9f
b3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlLAogICAgdHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1Ry
YWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
JiBfX2lzLAogICAgICAgIHBvaXNzb25fZGlzdHJpYnV0aW9uPF9JbnRUeXBlPiYgX194KQogICAg
ewogICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0
cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppb3NfYmFz
ZSBfX2lvc19iYXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3Mg
X19mbGFncyA9IF9faXMuZmxhZ3MoKTsKICAgICAgX19pcy5mbGFncyhfX2lvc19iYXNlOjpza2lw
d3MpOwoKICAgICAgZG91YmxlIF9fbWVhbjsKICAgICAgX19pcyA+PiBfX21lYW4gPj4gX194Ll9N
X25kOwogICAgICBfX3gucGFyYW0odHlwZW5hbWUgcG9pc3Nvbl9kaXN0cmlidXRpb248X0ludFR5
cGU+OjpwYXJhbV90eXBlKF9fbWVhbikpOwoKICAgICAgX19pcy5mbGFncyhfX2ZsYWdzKTsKICAg
ICAgcmV0dXJuIF9faXM7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlwZT4KICAg
IHZvaWQKICAgIGJpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OnBhcmFtX3R5cGU6Ogog
ICAgX01faW5pdGlhbGl6ZSgpCiAgICB7CiAgICAgIGNvbnN0IGRvdWJsZSBfX3AxMiA9IF9NX3Ag
PD0gMC41ID8gX01fcCA6IDEuMCAtIF9NX3A7CgogICAgICBfTV9lYXN5ID0gdHJ1ZTsKCgogICAg
ICBpZiAoX01fdCAqIF9fcDEyID49IDgpCiB7CiAgIF9NX2Vhc3kgPSBmYWxzZTsKICAgY29uc3Qg
ZG91YmxlIF9fbnAgPSBzdGQ6OmZsb29yKF9NX3QgKiBfX3AxMik7CiAgIGNvbnN0IGRvdWJsZSBf
X3BhID0gX19ucCAvIF9NX3Q7CiAgIGNvbnN0IGRvdWJsZSBfXzFwID0gMSAtIF9fcGE7CgogICBj
b25zdCBkb3VibGUgX19waV80ID0gMC43ODUzOTgxNjMzOTc0NDgzMDk2MTU2NjA4NDU4MTk4NzU3
TDsKICAgY29uc3QgZG91YmxlIF9fZDF4ID0KICAgICBzdGQ6OnNxcnQoX19ucCAqIF9fMXAgKiBz
dGQ6OmxvZygzMiAqIF9fbnAKICAgICAgICAgIC8gKDgxICogX19waV80ICogX18xcCkpKTsKICAg
X01fZDEgPSBzdGQ6OnJvdW5kKHN0ZDo6bWF4KDEuMCwgX19kMXgpKTsKICAgY29uc3QgZG91Ymxl
IF9fZDJ4ID0KICAgICBzdGQ6OnNxcnQoX19ucCAqIF9fMXAgKiBzdGQ6OmxvZygzMiAqIF9NX3Qg
KiBfXzFwCiAgICAgICAgICAvIChfX3BpXzQgKiBfX3BhKSkpOwogICBfTV9kMiA9IHN0ZDo6cm91
bmQoc3RkOjptYXgoMS4wLCBfX2QyeCkpOwoKCiAgIGNvbnN0IGRvdWJsZSBfX3NwaV8yID0gMS4y
NTMzMTQxMzczMTU1MDAyNTEyMDc4ODI2NDI0MDU1MjI2TDsKICAgX01fczEgPSBzdGQ6OnNxcnQo
X19ucCAqIF9fMXApICogKDEgKyBfTV9kMSAvICg0ICogX19ucCkpOwogICBfTV9zMiA9IHN0ZDo6
c3FydChfX25wICogX18xcCkgKiAoMSArIF9NX2QyIC8gKDQgKiBfTV90ICogX18xcCkpOwogICBf
TV9jID0gMiAqIF9NX2QxIC8gX19ucDsKICAgX01fYTEgPSBzdGQ6OmV4cChfTV9jKSAqIF9NX3Mx
ICogX19zcGlfMjsKICAgY29uc3QgZG91YmxlIF9fYTEyID0gX01fYTEgKyBfTV9zMiAqIF9fc3Bp
XzI7CiAgIGNvbnN0IGRvdWJsZSBfX3MxcyA9IF9NX3MxICogX01fczE7CiAgIF9NX2ExMjMgPSBf
X2ExMiArIChzdGQ6OmV4cChfTV9kMSAvIChfTV90ICogX18xcCkpCiAgICAgICAgKiAyICogX19z
MXMgLyBfTV9kMQogICAgICAgICogc3RkOjpleHAoLV9NX2QxICogX01fZDEgLyAoMiAqIF9fczFz
KSkpOwogICBjb25zdCBkb3VibGUgX19zMnMgPSBfTV9zMiAqIF9NX3MyOwogICBfTV9zID0gKF9N
X2ExMjMgKyAyICogX19zMnMgLyBfTV9kMgogICAgKiBzdGQ6OmV4cCgtX01fZDIgKiBfTV9kMiAv
ICgyICogX19zMnMpKSk7CiAgIF9NX2xmID0gKHN0ZDo6bGdhbW1hKF9fbnAgKyAxKQogICAgICsg
c3RkOjpsZ2FtbWEoX01fdCAtIF9fbnAgKyAxKSk7CiAgIF9NX2xwMXAgPSBzdGQ6OmxvZyhfX3Bh
IC8gX18xcCk7CgogICBfTV9xID0gLXN0ZDo6bG9nKDEgLSAoX19wMTIgLSBfX3BhKSAvIF9fMXAp
OwogfQogICAgICBlbHNlCgogX01fcSA9IC1zdGQ6OmxvZygxIC0gX19wMTIpOwogICAgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlwZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3Jt
UmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgICB0eXBlbmFtZSBiaW5vbWlhbF9kaXN0cmlidXRp
b248X0ludFR5cGU+OjpyZXN1bHRfdHlwZQogICAgICBiaW5vbWlhbF9kaXN0cmlidXRpb248X0lu
dFR5cGU+OjoKICAgICAgX01fd2FpdGluZyhfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYg
X191cm5nLAogICBfSW50VHlwZSBfX3QsIGRvdWJsZSBfX3EpCiAgICAgIHsKIF9JbnRUeXBlIF9f
eCA9IDA7CiBkb3VibGUgX19zdW0gPSAwLjA7CiBfX2RldGFpbDo6X0FkYXB0b3I8X1VuaWZvcm1S
YW5kb21OdW1iZXJHZW5lcmF0b3IsIGRvdWJsZT4KICAgX19hdXJuZyhfX3VybmcpOwoKIGRvCiAg
IHsKICAgICBpZiAoX190ID09IF9feCkKICAgICAgIHJldHVybiBfX3g7CiAgICAgY29uc3QgZG91
YmxlIF9fZSA9IC1zdGQ6OmxvZygxLjAgLSBfX2F1cm5nKCkpOwogICAgIF9fc3VtICs9IF9fZSAv
IChfX3QgLSBfX3gpOwogICAgIF9feCArPSAxOwogICB9CiB3aGlsZSAoX19zdW0gPD0gX19xKTsK
CiByZXR1cm4gX194IC0gMTsKICAgICAgfQojIDE2ODIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9yYW5kb20udGNjIiAzCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0ludFR5cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJh
bmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdHlwZW5hbWUgYmlub21pYWxfZGlzdHJpYnV0aW9u
PF9JbnRUeXBlPjo6cmVzdWx0X3R5cGUKICAgICAgYmlub21pYWxfZGlzdHJpYnV0aW9uPF9JbnRU
eXBlPjo6CiAgICAgIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9f
dXJuZywKICAgY29uc3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAgICAgewogcmVzdWx0X3R5cGUg
X19yZXQ7CiBjb25zdCBfSW50VHlwZSBfX3QgPSBfX3BhcmFtLnQoKTsKIGNvbnN0IGRvdWJsZSBf
X3AgPSBfX3BhcmFtLnAoKTsKIGNvbnN0IGRvdWJsZSBfX3AxMiA9IF9fcCA8PSAwLjUgPyBfX3Ag
OiAxLjAgLSBfX3A7CiBfX2RldGFpbDo6X0FkYXB0b3I8X1VuaWZvcm1SYW5kb21OdW1iZXJHZW5l
cmF0b3IsIGRvdWJsZT4KICAgX19hdXJuZyhfX3VybmcpOwoKCiBpZiAoIV9fcGFyYW0uX01fZWFz
eSkKICAgewogICAgIGRvdWJsZSBfX3g7CgoKICAgICBjb25zdCBkb3VibGUgX19uYWYgPQogICAg
ICAgKDEgLSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmVwc2lsb24oKSkgLyAyOwogICAg
IGNvbnN0IGRvdWJsZSBfX3RociA9CiAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPF9JbnRUeXBl
Pjo6bWF4KCkgKyBfX25hZjsKCiAgICAgY29uc3QgZG91YmxlIF9fbnAgPSBzdGQ6OmZsb29yKF9f
dCAqIF9fcDEyKTsKCgogICAgIGNvbnN0IGRvdWJsZSBfX3NwaV8yID0gMS4yNTMzMTQxMzczMTU1
MDAyNTEyMDc4ODI2NDI0MDU1MjI2TDsKICAgICBjb25zdCBkb3VibGUgX19hMSA9IF9fcGFyYW0u
X01fYTE7CiAgICAgY29uc3QgZG91YmxlIF9fYTEyID0gX19hMSArIF9fcGFyYW0uX01fczIgKiBf
X3NwaV8yOwogICAgIGNvbnN0IGRvdWJsZSBfX2ExMjMgPSBfX3BhcmFtLl9NX2ExMjM7CiAgICAg
Y29uc3QgZG91YmxlIF9fczFzID0gX19wYXJhbS5fTV9zMSAqIF9fcGFyYW0uX01fczE7CiAgICAg
Y29uc3QgZG91YmxlIF9fczJzID0gX19wYXJhbS5fTV9zMiAqIF9fcGFyYW0uX01fczI7CgogICAg
IGJvb2wgX19yZWplY3Q7CiAgICAgZG8KICAgICAgIHsKICBjb25zdCBkb3VibGUgX191ID0gX19w
YXJhbS5fTV9zICogX19hdXJuZygpOwoKICBkb3VibGUgX192OwoKICBpZiAoX191IDw9IF9fYTEp
CiAgICB7CiAgICAgIGNvbnN0IGRvdWJsZSBfX24gPSBfTV9uZChfX3VybmcpOwogICAgICBjb25z
dCBkb3VibGUgX195ID0gX19wYXJhbS5fTV9zMSAqIHN0ZDo6YWJzKF9fbik7CiAgICAgIF9fcmVq
ZWN0ID0gX195ID49IF9fcGFyYW0uX01fZDE7CiAgICAgIGlmICghX19yZWplY3QpCiAgICAgICAg
ewogICBjb25zdCBkb3VibGUgX19lID0gLXN0ZDo6bG9nKDEuMCAtIF9fYXVybmcoKSk7CiAgIF9f
eCA9IHN0ZDo6Zmxvb3IoX195KTsKICAgX192ID0gLV9fZSAtIF9fbiAqIF9fbiAvIDIgKyBfX3Bh
cmFtLl9NX2M7CiAgICAgICAgfQogICAgfQogIGVsc2UgaWYgKF9fdSA8PSBfX2ExMikKICAgIHsK
ICAgICAgY29uc3QgZG91YmxlIF9fbiA9IF9NX25kKF9fdXJuZyk7CiAgICAgIGNvbnN0IGRvdWJs
ZSBfX3kgPSBfX3BhcmFtLl9NX3MyICogc3RkOjphYnMoX19uKTsKICAgICAgX19yZWplY3QgPSBf
X3kgPj0gX19wYXJhbS5fTV9kMjsKICAgICAgaWYgKCFfX3JlamVjdCkKICAgICAgICB7CiAgIGNv
bnN0IGRvdWJsZSBfX2UgPSAtc3RkOjpsb2coMS4wIC0gX19hdXJuZygpKTsKICAgX194ID0gc3Rk
OjpmbG9vcigtX195KTsKICAgX192ID0gLV9fZSAtIF9fbiAqIF9fbiAvIDI7CiAgICAgICAgfQog
ICAgfQogIGVsc2UgaWYgKF9fdSA8PSBfX2ExMjMpCiAgICB7CiAgICAgIGNvbnN0IGRvdWJsZSBf
X2UxID0gLXN0ZDo6bG9nKDEuMCAtIF9fYXVybmcoKSk7CiAgICAgIGNvbnN0IGRvdWJsZSBfX2Uy
ID0gLXN0ZDo6bG9nKDEuMCAtIF9fYXVybmcoKSk7CgogICAgICBjb25zdCBkb3VibGUgX195ID0g
X19wYXJhbS5fTV9kMQogICAgICAgICArIDIgKiBfX3MxcyAqIF9fZTEgLyBfX3BhcmFtLl9NX2Qx
OwogICAgICBfX3ggPSBzdGQ6OmZsb29yKF9feSk7CiAgICAgIF9fdiA9ICgtX19lMiArIF9fcGFy
YW0uX01fZDEgKiAoMSAvIChfX3QgLSBfX25wKQogICAgICAgICAgLV9feSAvICgyICogX19zMXMp
KSk7CiAgICAgIF9fcmVqZWN0ID0gZmFsc2U7CiAgICB9CiAgZWxzZQogICAgewogICAgICBjb25z
dCBkb3VibGUgX19lMSA9IC1zdGQ6OmxvZygxLjAgLSBfX2F1cm5nKCkpOwogICAgICBjb25zdCBk
b3VibGUgX19lMiA9IC1zdGQ6OmxvZygxLjAgLSBfX2F1cm5nKCkpOwoKICAgICAgY29uc3QgZG91
YmxlIF9feSA9IF9fcGFyYW0uX01fZDIKICAgICAgICAgKyAyICogX19zMnMgKiBfX2UxIC8gX19w
YXJhbS5fTV9kMjsKICAgICAgX194ID0gc3RkOjpmbG9vcigtX195KTsKICAgICAgX192ID0gLV9f
ZTIgLSBfX3BhcmFtLl9NX2QyICogX195IC8gKDIgKiBfX3Mycyk7CiAgICAgIF9fcmVqZWN0ID0g
ZmFsc2U7CiAgICB9CgogIF9fcmVqZWN0ID0gX19yZWplY3QgfHwgX194IDwgLV9fbnAgfHwgX194
ID4gX190IC0gX19ucDsKICBpZiAoIV9fcmVqZWN0KQogICAgewogICAgICBjb25zdCBkb3VibGUg
X19sZnggPQogICAgICAgIHN0ZDo6bGdhbW1hKF9fbnAgKyBfX3ggKyAxKQogICAgICAgICsgc3Rk
OjpsZ2FtbWEoX190IC0gKF9fbnAgKyBfX3gpICsgMSk7CiAgICAgIF9fcmVqZWN0ID0gX192ID4g
X19wYXJhbS5fTV9sZiAtIF9fbGZ4CiAgICAgICAgKyBfX3ggKiBfX3BhcmFtLl9NX2xwMXA7CiAg
ICB9CgogIF9fcmVqZWN0IHw9IF9feCArIF9fbnAgPj0gX190aHI7CiAgICAgICB9CiAgICAgd2hp
bGUgKF9fcmVqZWN0KTsKCiAgICAgX194ICs9IF9fbnAgKyBfX25hZjsKCiAgICAgY29uc3QgX0lu
dFR5cGUgX196ID0gX01fd2FpdGluZyhfX3VybmcsIF9fdCAtIF9JbnRUeXBlKF9feCksCiAgICAg
ICAgIF9fcGFyYW0uX01fcSk7CiAgICAgX19yZXQgPSBfSW50VHlwZShfX3gpICsgX196OwogICB9
CiBlbHNlCgogICBfX3JldCA9IF9NX3dhaXRpbmcoX191cm5nLCBfX3QsIF9fcGFyYW0uX01fcSk7
CgogaWYgKF9fcDEyICE9IF9fcCkKICAgX19yZXQgPSBfX3QgLSBfX3JldDsKIHJldHVybiBfX3Jl
dDsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlwZT4KICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVt
YmVyR2VuZXJhdG9yPgogICAgICB2b2lkCiAgICAgIGJpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50
VHlwZT46OgogICAgICBfX2dlbmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3
YXJkSXRlcmF0b3IgX190LAogICAgICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBf
X3VybmcsCiAgICAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAgICAgewoKCiB3aGls
ZSAoX19mICE9IF9fdCkKICAgKl9fZisrID0gdGhpcy0+b3BlcmF0b3IoKShfX3VybmcsIF9fcGFy
YW0pOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlLAogICAgdHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+JiBfX29zLAogICAgICAgIGNvbnN0IGJpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4m
IF9feCkKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJh
aXRzPiBfX29zdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX29zdHJlYW1fdHlw
ZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6
OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX29zLmZsYWdzKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX2Zp
bGwgPSBfX29zLmZpbGwoKTsKICAgICAgY29uc3Qgc3RkOjpzdHJlYW1zaXplIF9fcHJlY2lzaW9u
ID0gX19vcy5wcmVjaXNpb24oKTsKICAgICAgY29uc3QgX0NoYXJUIF9fc3BhY2UgPSBfX29zLndp
ZGVuKCcgJyk7CiAgICAgIF9fb3MuZmxhZ3MoX19pb3NfYmFzZTo6c2NpZW50aWZpYyB8IF9faW9z
X2Jhc2U6OmxlZnQpOwogICAgICBfX29zLmZpbGwoX19zcGFjZSk7CiAgICAgIF9fb3MucHJlY2lz
aW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4X2RpZ2l0czEwKTsKCiAgICAgIF9f
b3MgPDwgX194LnQoKSA8PCBfX3NwYWNlIDw8IF9feC5wKCkKICAgIDw8IF9fc3BhY2UgPDwgX194
Ll9NX25kOwoKICAgICAgX19vcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgX19vcy5maWxsKF9fZmls
bCk7CiAgICAgIF9fb3MucHJlY2lzaW9uKF9fcHJlY2lzaW9uKTsKICAgICAgcmV0dXJuIF9fb3M7
CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlLAogICAgdHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0
cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBf
X2lzLAogICAgICAgIGJpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4mIF9feCkKICAgIHsK
ICAgICAgdHlwZWRlZiBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX2lzdHJl
YW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6aW9zX2Jhc2Ug
X19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdzIF9f
ZmxhZ3MgPSBfX2lzLmZsYWdzKCk7CiAgICAgIF9faXMuZmxhZ3MoX19pb3NfYmFzZTo6ZGVjIHwg
X19pb3NfYmFzZTo6c2tpcHdzKTsKCiAgICAgIF9JbnRUeXBlIF9fdDsKICAgICAgZG91YmxlIF9f
cDsKICAgICAgX19pcyA+PiBfX3QgPj4gX19wID4+IF9feC5fTV9uZDsKICAgICAgX194LnBhcmFt
KHR5cGVuYW1lIGJpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OgogIHBhcmFtX3R5cGUo
X190LCBfX3ApKTsKCiAgICAgIF9faXMuZmxhZ3MoX19mbGFncyk7CiAgICAgIHJldHVybiBfX2lz
OwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1i
ZXJHZW5lcmF0b3I+CiAgICAgIHZvaWQKICAgICAgc3RkOjpleHBvbmVudGlhbF9kaXN0cmlidXRp
b248X1JlYWxUeXBlPjo6CiAgICAgIF9fZ2VuZXJhdGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9yIF9f
ZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5l
cmF0b3ImIF9fdXJuZywKICAgICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgIHsKCiBf
X2RldGFpbDo6X0FkYXB0b3I8X1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3IsIHJlc3VsdF90
eXBlPgogICBfX2F1cm5nKF9fdXJuZyk7CiB3aGlsZSAoX19mICE9IF9fdCkKICAgKl9fZisrID0g
LXN0ZDo6bG9nKHJlc3VsdF90eXBlKDEpIC0gX19hdXJuZygpKSAvIF9fcC5sYW1iZGEoKTsKICAg
ICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlw
ZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgog
ICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywK
ICAgICAgICBjb25zdCBleHBvbmVudGlhbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194KQog
ICAgewogICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9f
b3N0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjppb3Nf
YmFzZSBfX2lvc19iYXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10Zmxh
Z3MgX19mbGFncyA9IF9fb3MuZmxhZ3MoKTsKICAgICAgY29uc3QgX0NoYXJUIF9fZmlsbCA9IF9f
b3MuZmlsbCgpOwogICAgICBjb25zdCBzdGQ6OnN0cmVhbXNpemUgX19wcmVjaXNpb24gPSBfX29z
LnByZWNpc2lvbigpOwogICAgICBfX29zLmZsYWdzKF9faW9zX2Jhc2U6OnNjaWVudGlmaWMgfCBf
X2lvc19iYXNlOjpsZWZ0KTsKICAgICAgX19vcy5maWxsKF9fb3Mud2lkZW4oJyAnKSk7CiAgICAg
IF9fb3MucHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8X1JlYWxUeXBlPjo6bWF4X2RpZ2l0
czEwKTsKCiAgICAgIF9fb3MgPDwgX194LmxhbWJkYSgpOwoKICAgICAgX19vcy5mbGFncyhfX2Zs
YWdzKTsKICAgICAgX19vcy5maWxsKF9fZmlsbCk7CiAgICAgIF9fb3MucHJlY2lzaW9uKF9fcHJl
Y2lzaW9uKTsKICAgICAgcmV0dXJuIF9fb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
ZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNp
Y19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgICAgIGV4cG9uZW50aWFsX2Rpc3RyaWJ1
dGlvbjxfUmVhbFR5cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19pc3Ry
ZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgX19pc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAgICBjb25zdCB0eXBl
bmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19pcy5mbGFncygpOwogICAgICBf
X2lzLmZsYWdzKF9faW9zX2Jhc2U6OmRlYyB8IF9faW9zX2Jhc2U6OnNraXB3cyk7CgogICAgICBf
UmVhbFR5cGUgX19sYW1iZGE7CiAgICAgIF9faXMgPj4gX19sYW1iZGE7CiAgICAgIF9feC5wYXJh
bSh0eXBlbmFtZSBleHBvbmVudGlhbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6CiAgcGFyYW1f
dHlwZShfX2xhbWJkYSkpOwoKICAgICAgX19pcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgcmV0dXJu
IF9faXM7CiAgICB9CiMgMTkzMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3JhbmRvbS50Y2MiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfUmVhbFR5cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdl
bmVyYXRvcj4KICAgICAgdHlwZW5hbWUgbm9ybWFsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+Ojpy
ZXN1bHRfdHlwZQogICAgICBub3JtYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OgogICAgICBv
cGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgIGNvbnN0
IHBhcmFtX3R5cGUmIF9fcGFyYW0pCiAgICAgIHsKIHJlc3VsdF90eXBlIF9fcmV0OwogX19kZXRh
aWw6Ol9BZGFwdG9yPF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCByZXN1bHRfdHlwZT4K
ICAgX19hdXJuZyhfX3VybmcpOwoKIGlmIChfTV9zYXZlZF9hdmFpbGFibGUpCiAgIHsKICAgICBf
TV9zYXZlZF9hdmFpbGFibGUgPSBmYWxzZTsKICAgICBfX3JldCA9IF9NX3NhdmVkOwogICB9CiBl
bHNlCiAgIHsKICAgICByZXN1bHRfdHlwZSBfX3gsIF9feSwgX19yMjsKICAgICBkbwogICAgICAg
ewogIF9feCA9IHJlc3VsdF90eXBlKDIuMCkgKiBfX2F1cm5nKCkgLSAxLjA7CiAgX195ID0gcmVz
dWx0X3R5cGUoMi4wKSAqIF9fYXVybmcoKSAtIDEuMDsKICBfX3IyID0gX194ICogX194ICsgX195
ICogX195OwogICAgICAgfQogICAgIHdoaWxlIChfX3IyID4gMS4wIHx8IF9fcjIgPT0gMC4wKTsK
CiAgICAgY29uc3QgcmVzdWx0X3R5cGUgX19tdWx0ID0gc3RkOjpzcXJ0KC0yICogc3RkOjpsb2co
X19yMikgLyBfX3IyKTsKICAgICBfTV9zYXZlZCA9IF9feCAqIF9fbXVsdDsKICAgICBfTV9zYXZl
ZF9hdmFpbGFibGUgPSB0cnVlOwogICAgIF9fcmV0ID0gX195ICogX19tdWx0OwogICB9CgogX19y
ZXQgPSBfX3JldCAqIF9fcGFyYW0uc3RkZGV2KCkgKyBfX3BhcmFtLm1lYW4oKTsKIHJldHVybiBf
X3JldDsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRv
bU51bWJlckdlbmVyYXRvcj4KICAgICAgdm9pZAogICAgICBub3JtYWxfZGlzdHJpYnV0aW9uPF9S
ZWFsVHlwZT46OgogICAgICBfX2dlbmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9G
b3J3YXJkSXRlcmF0b3IgX190LAogICAgICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9y
JiBfX3VybmcsCiAgICAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAgICAgewoKCiBp
ZiAoX19mID09IF9fdCkKICAgcmV0dXJuOwoKIGlmIChfTV9zYXZlZF9hdmFpbGFibGUpCiAgIHsK
ICAgICBfTV9zYXZlZF9hdmFpbGFibGUgPSBmYWxzZTsKICAgICAqX19mKysgPSBfTV9zYXZlZCAq
IF9fcGFyYW0uc3RkZGV2KCkgKyBfX3BhcmFtLm1lYW4oKTsKCiAgICAgaWYgKF9fZiA9PSBfX3Qp
CiAgICAgICByZXR1cm47CiAgIH0KCiBfX2RldGFpbDo6X0FkYXB0b3I8X1VuaWZvcm1SYW5kb21O
dW1iZXJHZW5lcmF0b3IsIHJlc3VsdF90eXBlPgogICBfX2F1cm5nKF9fdXJuZyk7Cgogd2hpbGUg
KF9fZiArIDEgPCBfX3QpCiAgIHsKICAgICByZXN1bHRfdHlwZSBfX3gsIF9feSwgX19yMjsKICAg
ICBkbwogICAgICAgewogIF9feCA9IHJlc3VsdF90eXBlKDIuMCkgKiBfX2F1cm5nKCkgLSAxLjA7
CiAgX195ID0gcmVzdWx0X3R5cGUoMi4wKSAqIF9fYXVybmcoKSAtIDEuMDsKICBfX3IyID0gX194
ICogX194ICsgX195ICogX195OwogICAgICAgfQogICAgIHdoaWxlIChfX3IyID4gMS4wIHx8IF9f
cjIgPT0gMC4wKTsKCiAgICAgY29uc3QgcmVzdWx0X3R5cGUgX19tdWx0ID0gc3RkOjpzcXJ0KC0y
ICogc3RkOjpsb2coX19yMikgLyBfX3IyKTsKICAgICAqX19mKysgPSBfX3kgKiBfX211bHQgKiBf
X3BhcmFtLnN0ZGRldigpICsgX19wYXJhbS5tZWFuKCk7CiAgICAgKl9fZisrID0gX194ICogX19t
dWx0ICogX19wYXJhbS5zdGRkZXYoKSArIF9fcGFyYW0ubWVhbigpOwogICB9CgogaWYgKF9fZiAh
PSBfX3QpCiAgIHsKICAgICByZXN1bHRfdHlwZSBfX3gsIF9feSwgX19yMjsKICAgICBkbwogICAg
ICAgewogIF9feCA9IHJlc3VsdF90eXBlKDIuMCkgKiBfX2F1cm5nKCkgLSAxLjA7CiAgX195ID0g
cmVzdWx0X3R5cGUoMi4wKSAqIF9fYXVybmcoKSAtIDEuMDsKICBfX3IyID0gX194ICogX194ICsg
X195ICogX195OwogICAgICAgfQogICAgIHdoaWxlIChfX3IyID4gMS4wIHx8IF9fcjIgPT0gMC4w
KTsKCiAgICAgY29uc3QgcmVzdWx0X3R5cGUgX19tdWx0ID0gc3RkOjpzcXJ0KC0yICogc3RkOjps
b2coX19yMikgLyBfX3IyKTsKICAgICBfTV9zYXZlZCA9IF9feCAqIF9fbXVsdDsKICAgICBfTV9z
YXZlZF9hdmFpbGFibGUgPSB0cnVlOwogICAgICpfX2YgPSBfX3kgKiBfX211bHQgKiBfX3BhcmFt
LnN0ZGRldigpICsgX19wYXJhbS5tZWFuKCk7CiAgIH0KICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmVhbFR5cGU+CiAgICBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0IHN0ZDo6bm9ybWFs
X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX2QxLAogICAgICAgIGNvbnN0IHN0ZDo6bm9ybWFs
X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX2QyKQogICAgewogICAgICBpZiAoX19kMS5fTV9w
YXJhbSA9PSBfX2QyLl9NX3BhcmFtCiAgICYmIF9fZDEuX01fc2F2ZWRfYXZhaWxhYmxlID09IF9f
ZDIuX01fc2F2ZWRfYXZhaWxhYmxlKQogewogICBpZiAoX19kMS5fTV9zYXZlZF9hdmFpbGFibGUK
ICAgICAgICYmIF9fZDEuX01fc2F2ZWQgPT0gX19kMi5fTV9zYXZlZCkKICAgICByZXR1cm4gdHJ1
ZTsKICAgZWxzZSBpZighX19kMS5fTV9zYXZlZF9hdmFpbGFibGUpCiAgICAgcmV0dXJuIHRydWU7
CiAgIGVsc2UKICAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAgIGVsc2UKIHJldHVybiBmYWxzZTsK
ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlLCB0eXBlbmFtZSBfQ2hhclQsIHR5
cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYK
ICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3Ms
CiAgICAgICAgY29uc3Qgbm9ybWFsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX3gpCiAgICB7
CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3Ry
ZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlvc19iYXNl
IF9faW9zX2Jhc2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBf
X2ZsYWdzID0gX19vcy5mbGFncygpOwogICAgICBjb25zdCBfQ2hhclQgX19maWxsID0gX19vcy5m
aWxsKCk7CiAgICAgIGNvbnN0IHN0ZDo6c3RyZWFtc2l6ZSBfX3ByZWNpc2lvbiA9IF9fb3MucHJl
Y2lzaW9uKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX3NwYWNlID0gX19vcy53aWRlbignICcpOwog
ICAgICBfX29zLmZsYWdzKF9faW9zX2Jhc2U6OnNjaWVudGlmaWMgfCBfX2lvc19iYXNlOjpsZWZ0
KTsKICAgICAgX19vcy5maWxsKF9fc3BhY2UpOwogICAgICBfX29zLnByZWNpc2lvbihzdGQ6Om51
bWVyaWNfbGltaXRzPF9SZWFsVHlwZT46Om1heF9kaWdpdHMxMCk7CgogICAgICBfX29zIDw8IF9f
eC5tZWFuKCkgPDwgX19zcGFjZSA8PCBfX3guc3RkZGV2KCkKICAgIDw8IF9fc3BhY2UgPDwgX194
Ll9NX3NhdmVkX2F2YWlsYWJsZTsKICAgICAgaWYgKF9feC5fTV9zYXZlZF9hdmFpbGFibGUpCiBf
X29zIDw8IF9fc3BhY2UgPDwgX194Ll9NX3NhdmVkOwoKICAgICAgX19vcy5mbGFncyhfX2ZsYWdz
KTsKICAgICAgX19vcy5maWxsKF9fZmlsbCk7CiAgICAgIF9fb3MucHJlY2lzaW9uKF9fcHJlY2lz
aW9uKTsKICAgICAgcmV0dXJuIF9fb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFs
VHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19p
c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVh
bTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgICAgIG5vcm1hbF9kaXN0cmlidXRpb248X1Jl
YWxUeXBlPiYgX194KQogICAgewogICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0
cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19p
b3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9faXMuZmxhZ3MoKTsKICAgICAgX19pcy5mbGFn
cyhfX2lvc19iYXNlOjpkZWMgfCBfX2lvc19iYXNlOjpza2lwd3MpOwoKICAgICAgZG91YmxlIF9f
bWVhbiwgX19zdGRkZXY7CiAgICAgIF9faXMgPj4gX19tZWFuID4+IF9fc3RkZGV2CiAgICA+PiBf
X3guX01fc2F2ZWRfYXZhaWxhYmxlOwogICAgICBpZiAoX194Ll9NX3NhdmVkX2F2YWlsYWJsZSkK
IF9faXMgPj4gX194Ll9NX3NhdmVkOwogICAgICBfX3gucGFyYW0odHlwZW5hbWUgbm9ybWFsX2Rp
c3RyaWJ1dGlvbjxfUmVhbFR5cGU+OjoKICBwYXJhbV90eXBlKF9fbWVhbiwgX19zdGRkZXYpKTsK
CiAgICAgIF9faXMuZmxhZ3MoX19mbGFncyk7CiAgICAgIHJldHVybiBfX2lzOwogICAgfQoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zvcndh
cmRJdGVyYXRvciwKICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+
CiAgICAgIHZvaWQKICAgICAgbG9nbm9ybWFsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+OjoKICAg
ICAgX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9y
IF9fdCwKICAgICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAg
ICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKICAgICAgewoKICAgd2hpbGUgKF9fZiAhPSBfX3Qp
CiAgICAgKl9fZisrID0gc3RkOjpleHAoX19wLnMoKSAqIF9NX25kKF9fdXJuZykgKyBfX3AubSgp
KTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUsIHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+JgogICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYg
X19vcywKICAgICAgICBjb25zdCBsb2dub3JtYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9f
eCkKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRz
PiBfX29zdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6
aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZt
dGZsYWdzIF9fZmxhZ3MgPSBfX29zLmZsYWdzKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX2ZpbGwg
PSBfX29zLmZpbGwoKTsKICAgICAgY29uc3Qgc3RkOjpzdHJlYW1zaXplIF9fcHJlY2lzaW9uID0g
X19vcy5wcmVjaXNpb24oKTsKICAgICAgY29uc3QgX0NoYXJUIF9fc3BhY2UgPSBfX29zLndpZGVu
KCcgJyk7CiAgICAgIF9fb3MuZmxhZ3MoX19pb3NfYmFzZTo6c2NpZW50aWZpYyB8IF9faW9zX2Jh
c2U6OmxlZnQpOwogICAgICBfX29zLmZpbGwoX19zcGFjZSk7CiAgICAgIF9fb3MucHJlY2lzaW9u
KHN0ZDo6bnVtZXJpY19saW1pdHM8X1JlYWxUeXBlPjo6bWF4X2RpZ2l0czEwKTsKCiAgICAgIF9f
b3MgPDwgX194Lm0oKSA8PCBfX3NwYWNlIDw8IF9feC5zKCkKICAgIDw8IF9fc3BhY2UgPDwgX194
Ll9NX25kOwoKICAgICAgX19vcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgX19vcy5maWxsKF9fZmls
bCk7CiAgICAgIF9fb3MucHJlY2lzaW9uKF9fcHJlY2lzaW9uKTsKICAgICAgcmV0dXJuIF9fb3M7
CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
CiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lz
LAogICAgICAgIGxvZ25vcm1hbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194KQogICAgewog
ICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVh
bV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppb3NfYmFzZSBf
X2lvc19iYXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19m
bGFncyA9IF9faXMuZmxhZ3MoKTsKICAgICAgX19pcy5mbGFncyhfX2lvc19iYXNlOjpkZWMgfCBf
X2lvc19iYXNlOjpza2lwd3MpOwoKICAgICAgX1JlYWxUeXBlIF9fbSwgX19zOwogICAgICBfX2lz
ID4+IF9fbSA+PiBfX3MgPj4gX194Ll9NX25kOwogICAgICBfX3gucGFyYW0odHlwZW5hbWUgbG9n
bm9ybWFsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+OjoKICBwYXJhbV90eXBlKF9fbSwgX19zKSk7
CgogICAgICBfX2lzLmZsYWdzKF9fZmxhZ3MpOwogICAgICByZXR1cm4gX19pczsKICAgIH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zvcndh
cmRJdGVyYXRvciwKICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+
CiAgICAgIHZvaWQKICAgICAgc3RkOjpjaGlfc3F1YXJlZF9kaXN0cmlidXRpb248X1JlYWxUeXBl
Pjo6CiAgICAgIF9fZ2VuZXJhdGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJ
dGVyYXRvciBfX3QsCiAgICAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJu
ZykKICAgICAgewoKIHdoaWxlIChfX2YgIT0gX190KQogICAqX19mKysgPSAyICogX01fZ2QoX191
cm5nKTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRv
bU51bWJlckdlbmVyYXRvcj4KICAgICAgdm9pZAogICAgICBzdGQ6OmNoaV9zcXVhcmVkX2Rpc3Ry
aWJ1dGlvbjxfUmVhbFR5cGU+OjoKICAgICAgX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0
b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICAgICBfVW5pZm9ybVJhbmRvbU51bWJl
ckdlbmVyYXRvciYgX191cm5nLAogICAgICAgIGNvbnN0IHR5cGVuYW1lCiAgICAgICAgc3RkOjpn
YW1tYV9kaXN0cmlidXRpb248cmVzdWx0X3R5cGU+OjpwYXJhbV90eXBlJiBfX3ApCiAgICAgIHsK
CiB3aGlsZSAoX19mICE9IF9fdCkKICAgKl9fZisrID0gMiAqIF9NX2dkKF9fdXJuZywgX19wKTsK
ICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
JgogICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19v
cywKICAgICAgICBjb25zdCBjaGlfc3F1YXJlZF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194
KQogICAgewogICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
IF9fb3N0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjpp
b3NfYmFzZSBfX2lvc19iYXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10
ZmxhZ3MgX19mbGFncyA9IF9fb3MuZmxhZ3MoKTsKICAgICAgY29uc3QgX0NoYXJUIF9fZmlsbCA9
IF9fb3MuZmlsbCgpOwogICAgICBjb25zdCBzdGQ6OnN0cmVhbXNpemUgX19wcmVjaXNpb24gPSBf
X29zLnByZWNpc2lvbigpOwogICAgICBjb25zdCBfQ2hhclQgX19zcGFjZSA9IF9fb3Mud2lkZW4o
JyAnKTsKICAgICAgX19vcy5mbGFncyhfX2lvc19iYXNlOjpzY2llbnRpZmljIHwgX19pb3NfYmFz
ZTo6bGVmdCk7CiAgICAgIF9fb3MuZmlsbChfX3NwYWNlKTsKICAgICAgX19vcy5wcmVjaXNpb24o
c3RkOjpudW1lcmljX2xpbWl0czxfUmVhbFR5cGU+OjptYXhfZGlnaXRzMTApOwoKICAgICAgX19v
cyA8PCBfX3gubigpIDw8IF9fc3BhY2UgPDwgX194Ll9NX2dkOwoKICAgICAgX19vcy5mbGFncyhf
X2ZsYWdzKTsKICAgICAgX19vcy5maWxsKF9fZmlsbCk7CiAgICAgIF9fb3MucHJlY2lzaW9uKF9f
cHJlY2lzaW9uKTsKICAgICAgcmV0dXJuIF9fb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpi
YXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNf
aXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgICAgIGNoaV9zcXVhcmVkX2Rpc3Ry
aWJ1dGlvbjxfUmVhbFR5cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19p
c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX19pc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAgICBjb25zdCB0
eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19pcy5mbGFncygpOwogICAg
ICBfX2lzLmZsYWdzKF9faW9zX2Jhc2U6OmRlYyB8IF9faW9zX2Jhc2U6OnNraXB3cyk7CgogICAg
ICBfUmVhbFR5cGUgX19uOwogICAgICBfX2lzID4+IF9fbiA+PiBfX3guX01fZ2Q7CiAgICAgIF9f
eC5wYXJhbSh0eXBlbmFtZSBjaGlfc3F1YXJlZF9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6CiAg
cGFyYW1fdHlwZShfX24pKTsKCiAgICAgIF9faXMuZmxhZ3MoX19mbGFncyk7CiAgICAgIHJldHVy
biBfX2lzOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAgICAgIHR5cGVuYW1l
IGNhdWNoeV9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6cmVzdWx0X3R5cGUKICAgICAgY2F1Y2h5
X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+OjoKICAgICAgb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRv
bU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAg
IHsKIF9fZGV0YWlsOjpfQWRhcHRvcjxfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgcmVz
dWx0X3R5cGU+CiAgIF9fYXVybmcoX191cm5nKTsKIF9SZWFsVHlwZSBfX3U7CiBkbwogICBfX3Ug
PSBfX2F1cm5nKCk7CiB3aGlsZSAoX191ID09IDAuNSk7CgogY29uc3QgX1JlYWxUeXBlIF9fcGkg
PSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTUwMjlMOwogcmV0dXJuIF9fcC5hKCkg
KyBfX3AuYigpICogc3RkOjp0YW4oX19waSAqIF9fdSk7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1JlYWxUeXBlPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwK
ICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAgICAgIHZvaWQK
ICAgICAgY2F1Y2h5X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+OjoKICAgICAgX19nZW5lcmF0ZV9p
bXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICAgICBf
VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgICAgIGNvbnN0IHBhcmFt
X3R5cGUmIF9fcCkKICAgICAgewoKIGNvbnN0IF9SZWFsVHlwZSBfX3BpID0gMy4xNDE1OTI2NTM1
ODk3OTMyMzg0NjI2NDMzODMyNzk1MDI5TDsKIF9fZGV0YWlsOjpfQWRhcHRvcjxfVW5pZm9ybVJh
bmRvbU51bWJlckdlbmVyYXRvciwgcmVzdWx0X3R5cGU+CiAgIF9fYXVybmcoX191cm5nKTsKIHdo
aWxlIChfX2YgIT0gX190KQogICB7CiAgICAgX1JlYWxUeXBlIF9fdTsKICAgICBkbwogICAgICAg
X191ID0gX19hdXJuZygpOwogICAgIHdoaWxlIChfX3UgPT0gMC41KTsKCiAgICAgKl9fZisrID0g
X19wLmEoKSArIF9fcC5iKCkgKiBzdGQ6OnRhbihfX3BpICogX191KTsKICAgfQogICAgICB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzPgogICAgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVy
YXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgICAg
IGNvbnN0IGNhdWNoeV9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194KQogICAgewogICAgICB0
eXBlZGVmIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9fb3N0cmVhbV90eXBl
OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19i
YXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9
IF9fb3MuZmxhZ3MoKTsKICAgICAgY29uc3QgX0NoYXJUIF9fZmlsbCA9IF9fb3MuZmlsbCgpOwog
ICAgICBjb25zdCBzdGQ6OnN0cmVhbXNpemUgX19wcmVjaXNpb24gPSBfX29zLnByZWNpc2lvbigp
OwogICAgICBjb25zdCBfQ2hhclQgX19zcGFjZSA9IF9fb3Mud2lkZW4oJyAnKTsKICAgICAgX19v
cy5mbGFncyhfX2lvc19iYXNlOjpzY2llbnRpZmljIHwgX19pb3NfYmFzZTo6bGVmdCk7CiAgICAg
IF9fb3MuZmlsbChfX3NwYWNlKTsKICAgICAgX19vcy5wcmVjaXNpb24oc3RkOjpudW1lcmljX2xp
bWl0czxfUmVhbFR5cGU+OjptYXhfZGlnaXRzMTApOwoKICAgICAgX19vcyA8PCBfX3guYSgpIDw8
IF9fc3BhY2UgPDwgX194LmIoKTsKCiAgICAgIF9fb3MuZmxhZ3MoX19mbGFncyk7CiAgICAgIF9f
b3MuZmlsbChfX2ZpbGwpOwogICAgICBfX29zLnByZWNpc2lvbihfX3ByZWNpc2lvbik7CiAgICAg
IHJldHVybiBfX29zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUsIHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBf
VHJhaXRzPiYgX19pcywKICAgICAgICBjYXVjaHlfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9f
eCkKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRz
PiBfX2lzdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6
aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZt
dGZsYWdzIF9fZmxhZ3MgPSBfX2lzLmZsYWdzKCk7CiAgICAgIF9faXMuZmxhZ3MoX19pb3NfYmFz
ZTo6ZGVjIHwgX19pb3NfYmFzZTo6c2tpcHdzKTsKCiAgICAgIF9SZWFsVHlwZSBfX2EsIF9fYjsK
ICAgICAgX19pcyA+PiBfX2EgPj4gX19iOwogICAgICBfX3gucGFyYW0odHlwZW5hbWUgY2F1Y2h5
X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+OjoKICBwYXJhbV90eXBlKF9fYSwgX19iKSk7CgogICAg
ICBfX2lzLmZsYWdzKF9fZmxhZ3MpOwogICAgICByZXR1cm4gX19pczsKICAgIH0KCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRl
cmF0b3IsCiAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAg
ICB2b2lkCiAgICAgIHN0ZDo6ZmlzaGVyX2ZfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OgogICAg
ICBfX2dlbmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3Ig
X190LAogICAgICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiAgICAg
IHsKCiB3aGlsZSAoX19mICE9IF9fdCkKICAgKl9fZisrID0gKChfTV9nZF94KF9fdXJuZykgKiBu
KCkpIC8gKF9NX2dkX3koX191cm5nKSAqIG0oKSkpOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9SZWFsVHlwZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAg
ICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgICB2b2lkCiAg
ICAgIHN0ZDo6ZmlzaGVyX2ZfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OgogICAgICBfX2dlbmVy
YXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAg
ICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgICAgY29uc3Qg
cGFyYW1fdHlwZSYgX19wKQogICAgICB7CgogdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmdhbW1hX2Rp
c3RyaWJ1dGlvbjxyZXN1bHRfdHlwZT46OnBhcmFtX3R5cGUKICAgcGFyYW1fdHlwZTsKIHBhcmFt
X3R5cGUgX19wMShfX3AubSgpIC8gMik7CiBwYXJhbV90eXBlIF9fcDIoX19wLm4oKSAvIDIpOwog
d2hpbGUgKF9fZiAhPSBfX3QpCiAgICpfX2YrKyA9ICgoX01fZ2RfeChfX3VybmcsIF9fcDEpICog
bigpKQogICAgICAvIChfTV9nZF95KF9fdXJuZywgX19wMikgKiBtKCkpKTsKICAgICAgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1Ry
YWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0
b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAgICAgICBj
b25zdCBmaXNoZXJfZl9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194KQogICAgewogICAgICB0
eXBlZGVmIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9fb3N0cmVhbV90eXBl
OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19i
YXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9
IF9fb3MuZmxhZ3MoKTsKICAgICAgY29uc3QgX0NoYXJUIF9fZmlsbCA9IF9fb3MuZmlsbCgpOwog
ICAgICBjb25zdCBzdGQ6OnN0cmVhbXNpemUgX19wcmVjaXNpb24gPSBfX29zLnByZWNpc2lvbigp
OwogICAgICBjb25zdCBfQ2hhclQgX19zcGFjZSA9IF9fb3Mud2lkZW4oJyAnKTsKICAgICAgX19v
cy5mbGFncyhfX2lvc19iYXNlOjpzY2llbnRpZmljIHwgX19pb3NfYmFzZTo6bGVmdCk7CiAgICAg
IF9fb3MuZmlsbChfX3NwYWNlKTsKICAgICAgX19vcy5wcmVjaXNpb24oc3RkOjpudW1lcmljX2xp
bWl0czxfUmVhbFR5cGU+OjptYXhfZGlnaXRzMTApOwoKICAgICAgX19vcyA8PCBfX3gubSgpIDw8
IF9fc3BhY2UgPDwgX194Lm4oKQogICAgPDwgX19zcGFjZSA8PCBfX3guX01fZ2RfeCA8PCBfX3Nw
YWNlIDw8IF9feC5fTV9nZF95OwoKICAgICAgX19vcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgX19v
cy5maWxsKF9fZmlsbCk7CiAgICAgIF9fb3MucHJlY2lzaW9uKF9fcHJlY2lzaW9uKTsKICAgICAg
cmV0dXJuIF9fb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9U
cmFpdHM+JiBfX2lzLAogICAgICAgIGZpc2hlcl9mX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBf
X3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0
cz4gX19pc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6
Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpm
bXRmbGFncyBfX2ZsYWdzID0gX19pcy5mbGFncygpOwogICAgICBfX2lzLmZsYWdzKF9faW9zX2Jh
c2U6OmRlYyB8IF9faW9zX2Jhc2U6OnNraXB3cyk7CgogICAgICBfUmVhbFR5cGUgX19tLCBfX247
CiAgICAgIF9faXMgPj4gX19tID4+IF9fbiA+PiBfX3guX01fZ2RfeCA+PiBfX3guX01fZ2RfeTsK
ICAgICAgX194LnBhcmFtKHR5cGVuYW1lIGZpc2hlcl9mX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+
OjoKICBwYXJhbV90eXBlKF9fbSwgX19uKSk7CgogICAgICBfX2lzLmZsYWdzKF9fZmxhZ3MpOwog
ICAgICByZXR1cm4gX19pczsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZT4K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgIHR5cGVuYW1lIF9V
bmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgICB2b2lkCiAgICAgIHN0ZDo6c3R1ZGVu
dF90X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+OjoKICAgICAgX19nZW5lcmF0ZV9pbXBsKF9Gb3J3
YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICAgICBfVW5pZm9ybVJh
bmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nKQogICAgICB7Cgogd2hpbGUgKF9fZiAhPSBfX3Qp
CiAgICpfX2YrKyA9IF9NX25kKF9fdXJuZykgKiBzdGQ6OnNxcnQobigpIC8gX01fZ2QoX191cm5n
KSk7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21O
dW1iZXJHZW5lcmF0b3I+CiAgICAgIHZvaWQKICAgICAgc3RkOjpzdHVkZW50X3RfZGlzdHJpYnV0
aW9uPF9SZWFsVHlwZT46OgogICAgICBfX2dlbmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBf
X2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2Vu
ZXJhdG9yJiBfX3VybmcsCiAgICAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAgICB7Cgog
dHlwZW5hbWUgc3RkOjpnYW1tYV9kaXN0cmlidXRpb248cmVzdWx0X3R5cGU+OjpwYXJhbV90eXBl
CiAgIF9fcDIoX19wLm4oKSAvIDIsIDIpOwogd2hpbGUgKF9fZiAhPSBfX3QpCiAgICpfX2YrKyA9
IF9NX25kKF9fdXJuZykgKiBzdGQ6OnNxcnQoX19wLm4oKSAvIF9NX2dkKF9fdXJuZywgX19wMikp
OwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0
cz4mCiAgICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBf
X29zLAogICAgICAgIGNvbnN0IHN0dWRlbnRfdF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194
KQogICAgewogICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
IF9fb3N0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjpp
b3NfYmFzZSBfX2lvc19iYXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10
ZmxhZ3MgX19mbGFncyA9IF9fb3MuZmxhZ3MoKTsKICAgICAgY29uc3QgX0NoYXJUIF9fZmlsbCA9
IF9fb3MuZmlsbCgpOwogICAgICBjb25zdCBzdGQ6OnN0cmVhbXNpemUgX19wcmVjaXNpb24gPSBf
X29zLnByZWNpc2lvbigpOwogICAgICBjb25zdCBfQ2hhclQgX19zcGFjZSA9IF9fb3Mud2lkZW4o
JyAnKTsKICAgICAgX19vcy5mbGFncyhfX2lvc19iYXNlOjpzY2llbnRpZmljIHwgX19pb3NfYmFz
ZTo6bGVmdCk7CiAgICAgIF9fb3MuZmlsbChfX3NwYWNlKTsKICAgICAgX19vcy5wcmVjaXNpb24o
c3RkOjpudW1lcmljX2xpbWl0czxfUmVhbFR5cGU+OjptYXhfZGlnaXRzMTApOwoKICAgICAgX19v
cyA8PCBfX3gubigpIDw8IF9fc3BhY2UgPDwgX194Ll9NX25kIDw8IF9fc3BhY2UgPDwgX194Ll9N
X2dkOwoKICAgICAgX19vcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgX19vcy5maWxsKF9fZmlsbCk7
CiAgICAgIF9fb3MucHJlY2lzaW9uKF9fcHJlY2lzaW9uKTsKICAgICAgcmV0dXJuIF9fb3M7CiAg
ICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAg
ICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAog
ICAgICAgIHN0dWRlbnRfdF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194KQogICAgewogICAg
ICB0eXBlZGVmIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90
eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lv
c19iYXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFn
cyA9IF9faXMuZmxhZ3MoKTsKICAgICAgX19pcy5mbGFncyhfX2lvc19iYXNlOjpkZWMgfCBfX2lv
c19iYXNlOjpza2lwd3MpOwoKICAgICAgX1JlYWxUeXBlIF9fbjsKICAgICAgX19pcyA+PiBfX24g
Pj4gX194Ll9NX25kID4+IF9feC5fTV9nZDsKICAgICAgX194LnBhcmFtKHR5cGVuYW1lIHN0dWRl
bnRfdF9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6cGFyYW1fdHlwZShfX24pKTsKCiAgICAgIF9f
aXMuZmxhZ3MoX19mbGFncyk7CiAgICAgIHJldHVybiBfX2lzOwogICAgfQoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgdm9pZAogICAgZ2FtbWFfZGlzdHJpYnV0aW9uPF9SZWFs
VHlwZT46OnBhcmFtX3R5cGU6OgogICAgX01faW5pdGlhbGl6ZSgpCiAgICB7CiAgICAgIF9NX21h
bHBoYSA9IF9NX2FscGhhIDwgMS4wID8gX01fYWxwaGEgKyBfUmVhbFR5cGUoMS4wKSA6IF9NX2Fs
cGhhOwoKICAgICAgY29uc3QgX1JlYWxUeXBlIF9fYTEgPSBfTV9tYWxwaGEgLSBfUmVhbFR5cGUo
MS4wKSAvIF9SZWFsVHlwZSgzLjApOwogICAgICBfTV9hMiA9IF9SZWFsVHlwZSgxLjApIC8gc3Rk
OjpzcXJ0KF9SZWFsVHlwZSg5LjApICogX19hMSk7CiAgICB9CgoKCgoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1JlYWxUeXBlPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1i
ZXJHZW5lcmF0b3I+CiAgICAgIHR5cGVuYW1lIGdhbW1hX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+
OjpyZXN1bHRfdHlwZQogICAgICBnYW1tYV9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6CiAgICAg
IG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29u
c3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAgICAgewogX19kZXRhaWw6Ol9BZGFwdG9yPF9Vbmlm
b3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCByZXN1bHRfdHlwZT4KICAgX19hdXJuZyhfX3Vybmcp
OwoKIHJlc3VsdF90eXBlIF9fdSwgX192LCBfX247CiBjb25zdCByZXN1bHRfdHlwZSBfX2ExID0g
KF9fcGFyYW0uX01fbWFscGhhCiAgICAgIC0gX1JlYWxUeXBlKDEuMCkgLyBfUmVhbFR5cGUoMy4w
KSk7CgogZG8KICAgewogICAgIGRvCiAgICAgICB7CiAgX19uID0gX01fbmQoX191cm5nKTsKICBf
X3YgPSByZXN1bHRfdHlwZSgxLjApICsgX19wYXJhbS5fTV9hMiAqIF9fbjsKICAgICAgIH0KICAg
ICB3aGlsZSAoX192IDw9IDAuMCk7CgogICAgIF9fdiA9IF9fdiAqIF9fdiAqIF9fdjsKICAgICBf
X3UgPSBfX2F1cm5nKCk7CiAgIH0KIHdoaWxlIChfX3UgPiByZXN1bHRfdHlwZSgxLjApIC0gMC4z
MzEgKiBfX24gKiBfX24gKiBfX24gKiBfX24KICAgICAgICAmJiAoc3RkOjpsb2coX191KSA+ICgw
LjUgKiBfX24gKiBfX24gKyBfX2ExCiAgICAgICAgKiAoMS4wIC0gX192ICsgc3RkOjpsb2coX192
KSkpKSk7CgogaWYgKF9fcGFyYW0uYWxwaGEoKSA9PSBfX3BhcmFtLl9NX21hbHBoYSkKICAgcmV0
dXJuIF9fYTEgKiBfX3YgKiBfX3BhcmFtLmJldGEoKTsKIGVsc2UKICAgewogICAgIGRvCiAgICAg
ICBfX3UgPSBfX2F1cm5nKCk7CiAgICAgd2hpbGUgKF9fdSA9PSAwLjApOwoKICAgICByZXR1cm4g
KHN0ZDo6cG93KF9fdSwgcmVzdWx0X3R5cGUoMS4wKSAvIF9fcGFyYW0uYWxwaGEoKSkKICAgICAg
KiBfX2ExICogX192ICogX19wYXJhbS5iZXRhKCkpOwogICB9CiAgICAgIH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRv
ciwKICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAgICAgIHZv
aWQKICAgICAgZ2FtbWFfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OgogICAgICBfX2dlbmVyYXRl
X2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgICAg
IF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgICAgY29uc3QgcGFy
YW1fdHlwZSYgX19wYXJhbSkKICAgICAgewoKIF9fZGV0YWlsOjpfQWRhcHRvcjxfVW5pZm9ybVJh
bmRvbU51bWJlckdlbmVyYXRvciwgcmVzdWx0X3R5cGU+CiAgIF9fYXVybmcoX191cm5nKTsKCiBy
ZXN1bHRfdHlwZSBfX3UsIF9fdiwgX19uOwogY29uc3QgcmVzdWx0X3R5cGUgX19hMSA9IChfX3Bh
cmFtLl9NX21hbHBoYQogICAgICAtIF9SZWFsVHlwZSgxLjApIC8gX1JlYWxUeXBlKDMuMCkpOwoK
IGlmIChfX3BhcmFtLmFscGhhKCkgPT0gX19wYXJhbS5fTV9tYWxwaGEpCiAgIHdoaWxlIChfX2Yg
IT0gX190KQogICAgIHsKICAgICAgIGRvCiAgewogICAgZG8KICAgICAgewogICAgICAgIF9fbiA9
IF9NX25kKF9fdXJuZyk7CiAgICAgICAgX192ID0gcmVzdWx0X3R5cGUoMS4wKSArIF9fcGFyYW0u
X01fYTIgKiBfX247CiAgICAgIH0KICAgIHdoaWxlIChfX3YgPD0gMC4wKTsKCiAgICBfX3YgPSBf
X3YgKiBfX3YgKiBfX3Y7CiAgICBfX3UgPSBfX2F1cm5nKCk7CiAgfQogICAgICAgd2hpbGUgKF9f
dSA+IHJlc3VsdF90eXBlKDEuMCkgLSAwLjMzMSAqIF9fbiAqIF9fbiAqIF9fbiAqIF9fbgogICAg
ICAgJiYgKHN0ZDo6bG9nKF9fdSkgPiAoMC41ICogX19uICogX19uICsgX19hMQogICAgICAgKiAo
MS4wIC0gX192ICsgc3RkOjpsb2coX192KSkpKSk7CgogICAgICAgKl9fZisrID0gX19hMSAqIF9f
diAqIF9fcGFyYW0uYmV0YSgpOwogICAgIH0KIGVsc2UKICAgd2hpbGUgKF9fZiAhPSBfX3QpCiAg
ICAgewogICAgICAgZG8KICB7CiAgICBkbwogICAgICB7CiAgICAgICAgX19uID0gX01fbmQoX191
cm5nKTsKICAgICAgICBfX3YgPSByZXN1bHRfdHlwZSgxLjApICsgX19wYXJhbS5fTV9hMiAqIF9f
bjsKICAgICAgfQogICAgd2hpbGUgKF9fdiA8PSAwLjApOwoKICAgIF9fdiA9IF9fdiAqIF9fdiAq
IF9fdjsKICAgIF9fdSA9IF9fYXVybmcoKTsKICB9CiAgICAgICB3aGlsZSAoX191ID4gcmVzdWx0
X3R5cGUoMS4wKSAtIDAuMzMxICogX19uICogX19uICogX19uICogX19uCiAgICAgICAmJiAoc3Rk
Ojpsb2coX191KSA+ICgwLjUgKiBfX24gKiBfX24gKyBfX2ExCiAgICAgICAqICgxLjAgLSBfX3Yg
KyBzdGQ6OmxvZyhfX3YpKSkpKTsKCiAgICAgICBkbwogIF9fdSA9IF9fYXVybmcoKTsKICAgICAg
IHdoaWxlIChfX3UgPT0gMC4wKTsKCiAgICAgICAqX19mKysgPSAoc3RkOjpwb3coX191LCByZXN1
bHRfdHlwZSgxLjApIC8gX19wYXJhbS5hbHBoYSgpKQogICAqIF9fYTEgKiBfX3YgKiBfX3BhcmFt
LmJldGEoKSk7CiAgICAgfQogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwg
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19vc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+JiBfX29zLAogICAgICAgIGNvbnN0IGdhbW1hX2Rpc3RyaWJ1dGlvbjxfUmVh
bFR5cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19vc3Ry
ZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lv
c19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19vcy5mbGFncygpOwogICAgICBjb25zdCBfQ2hh
clQgX19maWxsID0gX19vcy5maWxsKCk7CiAgICAgIGNvbnN0IHN0ZDo6c3RyZWFtc2l6ZSBfX3By
ZWNpc2lvbiA9IF9fb3MucHJlY2lzaW9uKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX3NwYWNlID0g
X19vcy53aWRlbignICcpOwogICAgICBfX29zLmZsYWdzKF9faW9zX2Jhc2U6OnNjaWVudGlmaWMg
fCBfX2lvc19iYXNlOjpsZWZ0KTsKICAgICAgX19vcy5maWxsKF9fc3BhY2UpOwogICAgICBfX29z
LnByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPF9SZWFsVHlwZT46Om1heF9kaWdpdHMxMCk7
CgogICAgICBfX29zIDw8IF9feC5hbHBoYSgpIDw8IF9fc3BhY2UgPDwgX194LmJldGEoKQogICAg
PDwgX19zcGFjZSA8PCBfX3guX01fbmQ7CgogICAgICBfX29zLmZsYWdzKF9fZmxhZ3MpOwogICAg
ICBfX29zLmZpbGwoX19maWxsKTsKICAgICAgX19vcy5wcmVjaXNpb24oX19wcmVjaXNpb24pOwog
ICAgICByZXR1cm4gX19vczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlLCB0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX2lzdHJlYW08
X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz4mIF9faXMsCiAgICAgICAgZ2FtbWFfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4m
IF9feCkKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJh
aXRzPiBfX2lzdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlw
ZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6
OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX2lzLmZsYWdzKCk7CiAgICAgIF9faXMuZmxhZ3MoX19pb3Nf
YmFzZTo6ZGVjIHwgX19pb3NfYmFzZTo6c2tpcHdzKTsKCiAgICAgIF9SZWFsVHlwZSBfX2FscGhh
X3ZhbCwgX19iZXRhX3ZhbDsKICAgICAgX19pcyA+PiBfX2FscGhhX3ZhbCA+PiBfX2JldGFfdmFs
ID4+IF9feC5fTV9uZDsKICAgICAgX194LnBhcmFtKHR5cGVuYW1lIGdhbW1hX2Rpc3RyaWJ1dGlv
bjxfUmVhbFR5cGU+OjoKICBwYXJhbV90eXBlKF9fYWxwaGFfdmFsLCBfX2JldGFfdmFsKSk7Cgog
ICAgICBfX2lzLmZsYWdzKF9fZmxhZ3MpOwogICAgICByZXR1cm4gX19pczsKICAgIH0KCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3Jt
UmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgICB0eXBlbmFtZSB3ZWlidWxsX2Rpc3RyaWJ1dGlv
bjxfUmVhbFR5cGU+OjpyZXN1bHRfdHlwZQogICAgICB3ZWlidWxsX2Rpc3RyaWJ1dGlvbjxfUmVh
bFR5cGU+OjoKICAgICAgb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYg
X191cm5nLAogICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgIHsKIF9fZGV0YWlsOjpfQWRh
cHRvcjxfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgcmVzdWx0X3R5cGU+CiAgIF9fYXVy
bmcoX191cm5nKTsKIHJldHVybiBfX3AuYigpICogc3RkOjpwb3coLXN0ZDo6bG9nKHJlc3VsdF90
eXBlKDEpIC0gX19hdXJuZygpKSwKICAgICAgcmVzdWx0X3R5cGUoMSkgLyBfX3AuYSgpKTsKICAg
ICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdl
bmVyYXRvcj4KICAgICAgdm9pZAogICAgICB3ZWlidWxsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+
OjoKICAgICAgX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0
ZXJhdG9yIF9fdCwKICAgICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5n
LAogICAgICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKICAgICAgewoKIF9fZGV0YWlsOjpfQWRh
cHRvcjxfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgcmVzdWx0X3R5cGU+CiAgIF9fYXVy
bmcoX191cm5nKTsKIGF1dG8gX19pbnZfYSA9IHJlc3VsdF90eXBlKDEpIC8gX19wLmEoKTsKCiB3
aGlsZSAoX19mICE9IF9fdCkKICAgKl9fZisrID0gX19wLmIoKSAqIHN0ZDo6cG93KC1zdGQ6Omxv
ZyhyZXN1bHRfdHlwZSgxKSAtIF9fYXVybmcoKSksCiAgICAgICAgICBfX2ludl9hKTsKICAgICAg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAg
b3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAg
ICAgICBjb25zdCB3ZWlidWxsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX3gpCiAgICB7CiAg
ICAgIHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFt
X3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9f
aW9zX2Jhc2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2Zs
YWdzID0gX19vcy5mbGFncygpOwogICAgICBjb25zdCBfQ2hhclQgX19maWxsID0gX19vcy5maWxs
KCk7CiAgICAgIGNvbnN0IHN0ZDo6c3RyZWFtc2l6ZSBfX3ByZWNpc2lvbiA9IF9fb3MucHJlY2lz
aW9uKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX3NwYWNlID0gX19vcy53aWRlbignICcpOwogICAg
ICBfX29zLmZsYWdzKF9faW9zX2Jhc2U6OnNjaWVudGlmaWMgfCBfX2lvc19iYXNlOjpsZWZ0KTsK
ICAgICAgX19vcy5maWxsKF9fc3BhY2UpOwogICAgICBfX29zLnByZWNpc2lvbihzdGQ6Om51bWVy
aWNfbGltaXRzPF9SZWFsVHlwZT46Om1heF9kaWdpdHMxMCk7CgogICAgICBfX29zIDw8IF9feC5h
KCkgPDwgX19zcGFjZSA8PCBfX3guYigpOwoKICAgICAgX19vcy5mbGFncyhfX2ZsYWdzKTsKICAg
ICAgX19vcy5maWxsKF9fZmlsbCk7CiAgICAgIF9fb3MucHJlY2lzaW9uKF9fcHJlY2lzaW9uKTsK
ICAgICAgcmV0dXJuIF9fb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwg
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+JiBfX2lzLAogICAgICAgIHdlaWJ1bGxfZGlzdHJpYnV0aW9uPF9SZWFsVHlw
ZT4mIF9feCkKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBf
VHJhaXRzPiBfX2lzdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1f
dHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jh
c2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX2lzLmZsYWdzKCk7CiAgICAgIF9faXMuZmxhZ3MoX19p
b3NfYmFzZTo6ZGVjIHwgX19pb3NfYmFzZTo6c2tpcHdzKTsKCiAgICAgIF9SZWFsVHlwZSBfX2Es
IF9fYjsKICAgICAgX19pcyA+PiBfX2EgPj4gX19iOwogICAgICBfX3gucGFyYW0odHlwZW5hbWUg
d2VpYnVsbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6CiAgcGFyYW1fdHlwZShfX2EsIF9fYikp
OwoKICAgICAgX19pcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgcmV0dXJuIF9faXM7CiAgICB9CgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5p
Zm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdHlwZW5hbWUgZXh0cmVtZV92YWx1ZV9k
aXN0cmlidXRpb248X1JlYWxUeXBlPjo6cmVzdWx0X3R5cGUKICAgICAgZXh0cmVtZV92YWx1ZV9k
aXN0cmlidXRpb248X1JlYWxUeXBlPjo6CiAgICAgIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21O
dW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAgICB7
CiBfX2RldGFpbDo6X0FkYXB0b3I8X1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3IsIHJlc3Vs
dF90eXBlPgogICBfX2F1cm5nKF9fdXJuZyk7CiByZXR1cm4gX19wLmEoKSAtIF9fcC5iKCkgKiBz
dGQ6OmxvZygtc3RkOjpsb2cocmVzdWx0X3R5cGUoMSkKICAgICAgICAgICAgLSBfX2F1cm5nKCkp
KTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51
bWJlckdlbmVyYXRvcj4KICAgICAgdm9pZAogICAgICBleHRyZW1lX3ZhbHVlX2Rpc3RyaWJ1dGlv
bjxfUmVhbFR5cGU+OjoKICAgICAgX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19m
LCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVy
YXRvciYgX191cm5nLAogICAgICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKICAgICAgewoKIF9f
ZGV0YWlsOjpfQWRhcHRvcjxfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgcmVzdWx0X3R5
cGU+CiAgIF9fYXVybmcoX191cm5nKTsKCiB3aGlsZSAoX19mICE9IF9fdCkKICAgKl9fZisrID0g
X19wLmEoKSAtIF9fcC5iKCkgKiBzdGQ6OmxvZygtc3RkOjpsb2cocmVzdWx0X3R5cGUoMSkKICAg
ICAgICAgLSBfX2F1cm5nKCkpKTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5
cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08
X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAgICAgICBjb25zdCBleHRyZW1lX3ZhbHVlX2Rpc3Ry
aWJ1dGlvbjxfUmVhbFR5cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19v
c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAgICBjb25zdCB0
eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19vcy5mbGFncygpOwogICAg
ICBjb25zdCBfQ2hhclQgX19maWxsID0gX19vcy5maWxsKCk7CiAgICAgIGNvbnN0IHN0ZDo6c3Ry
ZWFtc2l6ZSBfX3ByZWNpc2lvbiA9IF9fb3MucHJlY2lzaW9uKCk7CiAgICAgIGNvbnN0IF9DaGFy
VCBfX3NwYWNlID0gX19vcy53aWRlbignICcpOwogICAgICBfX29zLmZsYWdzKF9faW9zX2Jhc2U6
OnNjaWVudGlmaWMgfCBfX2lvc19iYXNlOjpsZWZ0KTsKICAgICAgX19vcy5maWxsKF9fc3BhY2Up
OwogICAgICBfX29zLnByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPF9SZWFsVHlwZT46Om1h
eF9kaWdpdHMxMCk7CgogICAgICBfX29zIDw8IF9feC5hKCkgPDwgX19zcGFjZSA8PCBfX3guYigp
OwoKICAgICAgX19vcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgX19vcy5maWxsKF9fZmlsbCk7CiAg
ICAgIF9fb3MucHJlY2lzaW9uKF9fcHJlY2lzaW9uKTsKICAgICAgcmV0dXJuIF9fb3M7CiAgICB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBv
cGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAg
ICAgIGV4dHJlbWVfdmFsdWVfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9feCkKICAgIHsKICAg
ICAgdHlwZWRlZiBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX2lzdHJlYW1f
dHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19p
b3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxh
Z3MgPSBfX2lzLmZsYWdzKCk7CiAgICAgIF9faXMuZmxhZ3MoX19pb3NfYmFzZTo6ZGVjIHwgX19p
b3NfYmFzZTo6c2tpcHdzKTsKCiAgICAgIF9SZWFsVHlwZSBfX2EsIF9fYjsKICAgICAgX19pcyA+
PiBfX2EgPj4gX19iOwogICAgICBfX3gucGFyYW0odHlwZW5hbWUgZXh0cmVtZV92YWx1ZV9kaXN0
cmlidXRpb248X1JlYWxUeXBlPjo6CiAgcGFyYW1fdHlwZShfX2EsIF9fYikpOwoKICAgICAgX19p
cy5mbGFncyhfX2ZsYWdzKTsKICAgICAgcmV0dXJuIF9faXM7CiAgICB9CgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSW50VHlwZT4KICAgIHZvaWQKICAgIGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxfSW50
VHlwZT46OnBhcmFtX3R5cGU6OgogICAgX01faW5pdGlhbGl6ZSgpCiAgICB7CiAgICAgIGlmIChf
TV9wcm9iLnNpemUoKSA8IDIpCiB7CiAgIF9NX3Byb2IuY2xlYXIoKTsKICAgcmV0dXJuOwogfQoK
ICAgICAgY29uc3QgZG91YmxlIF9fc3VtID0gc3RkOjphY2N1bXVsYXRlKF9NX3Byb2IuYmVnaW4o
KSwKICAgICAgICBfTV9wcm9iLmVuZCgpLCAwLjApOwoKICAgICAgX19kZXRhaWw6Ol9fbm9ybWFs
aXplKF9NX3Byb2IuYmVnaW4oKSwgX01fcHJvYi5lbmQoKSwgX01fcHJvYi5iZWdpbigpLAogICAg
ICAgX19zdW0pOwoKICAgICAgX01fY3AucmVzZXJ2ZShfTV9wcm9iLnNpemUoKSk7CiAgICAgIHN0
ZDo6cGFydGlhbF9zdW0oX01fcHJvYi5iZWdpbigpLCBfTV9wcm9iLmVuZCgpLAogICAgICAgICBz
dGQ6OmJhY2tfaW5zZXJ0ZXIoX01fY3ApKTsKCiAgICAgIF9NX2NwW19NX2NwLnNpemUoKSAtIDFd
ID0gMS4wOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlwZT4KICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9GdW5jPgogICAgICBkaXNjcmV0ZV9kaXN0cmlidXRpb248X0ludFR5cGU+Ojpw
YXJhbV90eXBlOjoKICAgICAgcGFyYW1fdHlwZShzaXplX3QgX19udywgZG91YmxlIF9feG1pbiwg
ZG91YmxlIF9feG1heCwgX0Z1bmMgX19mdykKICAgICAgOiBfTV9wcm9iKCksIF9NX2NwKCkKICAg
ICAgewogY29uc3Qgc2l6ZV90IF9fbiA9IF9fbncgPT0gMCA/IDEgOiBfX253OwogY29uc3QgZG91
YmxlIF9fZGVsdGEgPSAoX194bWF4IC0gX194bWluKSAvIF9fbjsKCiBfTV9wcm9iLnJlc2VydmUo
X19uKTsKIGZvciAoc2l6ZV90IF9fayA9IDA7IF9fayA8IF9fbnc7ICsrX19rKQogICBfTV9wcm9i
LnB1c2hfYmFjayhfX2Z3KF9feG1pbiArIF9fayAqIF9fZGVsdGEgKyAwLjUgKiBfX2RlbHRhKSk7
CgogX01faW5pdGlhbGl6ZSgpOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBl
PgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAg
ICAgIHR5cGVuYW1lIGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OnJlc3VsdF90eXBl
CiAgICAgIGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OgogICAgICBvcGVyYXRvcigp
KF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgIGNvbnN0IHBhcmFtX3R5
cGUmIF9fcGFyYW0pCiAgICAgIHsKIGlmIChfX3BhcmFtLl9NX2NwLmVtcHR5KCkpCiAgIHJldHVy
biByZXN1bHRfdHlwZSgwKTsKCiBfX2RldGFpbDo6X0FkYXB0b3I8X1VuaWZvcm1SYW5kb21OdW1i
ZXJHZW5lcmF0b3IsIGRvdWJsZT4KICAgX19hdXJuZyhfX3VybmcpOwoKIGNvbnN0IGRvdWJsZSBf
X3AgPSBfX2F1cm5nKCk7CiBhdXRvIF9fcG9zID0gc3RkOjpsb3dlcl9ib3VuZChfX3BhcmFtLl9N
X2NwLmJlZ2luKCksCiAgICAgICAgICBfX3BhcmFtLl9NX2NwLmVuZCgpLCBfX3ApOwoKIHJldHVy
biBfX3BvcyAtIF9fcGFyYW0uX01fY3AuYmVnaW4oKTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfSW50VHlwZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAg
ICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgICB2b2lkCiAg
ICAgIGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OgogICAgICBfX2dlbmVyYXRlX2lt
cGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgICAgIF9V
bmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgICAgY29uc3QgcGFyYW1f
dHlwZSYgX19wYXJhbSkKICAgICAgewoKCiBpZiAoX19wYXJhbS5fTV9jcC5lbXB0eSgpKQogICB7
CiAgICAgd2hpbGUgKF9fZiAhPSBfX3QpCiAgICAgICAqX19mKysgPSByZXN1bHRfdHlwZSgwKTsK
ICAgICByZXR1cm47CiAgIH0KCiBfX2RldGFpbDo6X0FkYXB0b3I8X1VuaWZvcm1SYW5kb21OdW1i
ZXJHZW5lcmF0b3IsIGRvdWJsZT4KICAgX19hdXJuZyhfX3VybmcpOwoKIHdoaWxlIChfX2YgIT0g
X190KQogICB7CiAgICAgY29uc3QgZG91YmxlIF9fcCA9IF9fYXVybmcoKTsKICAgICBhdXRvIF9f
cG9zID0gc3RkOjpsb3dlcl9ib3VuZChfX3BhcmFtLl9NX2NwLmJlZ2luKCksCiAgICAgICBfX3Bh
cmFtLl9NX2NwLmVuZCgpLCBfX3ApOwoKICAgICAqX19mKysgPSBfX3BvcyAtIF9fcGFyYW0uX01f
Y3AuYmVnaW4oKTsKICAgfQogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlLCB0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX29zdHJlYW08
X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz4mIF9fb3MsCiAgICAgICAgY29uc3QgZGlzY3JldGVfZGlzdHJpYnV0aW9uPF9J
bnRUeXBlPiYgX194KQogICAgewogICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+IF9fb3N0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fb3N0
cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19p
b3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9fb3MuZmxhZ3MoKTsKICAgICAgY29uc3QgX0No
YXJUIF9fZmlsbCA9IF9fb3MuZmlsbCgpOwogICAgICBjb25zdCBzdGQ6OnN0cmVhbXNpemUgX19w
cmVjaXNpb24gPSBfX29zLnByZWNpc2lvbigpOwogICAgICBjb25zdCBfQ2hhclQgX19zcGFjZSA9
IF9fb3Mud2lkZW4oJyAnKTsKICAgICAgX19vcy5mbGFncyhfX2lvc19iYXNlOjpzY2llbnRpZmlj
IHwgX19pb3NfYmFzZTo6bGVmdCk7CiAgICAgIF9fb3MuZmlsbChfX3NwYWNlKTsKICAgICAgX19v
cy5wcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXhfZGlnaXRzMTApOwoK
ICAgICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBfX3Byb2IgPSBfX3gucHJvYmFiaWxpdGllcygpOwog
ICAgICBfX29zIDw8IF9fcHJvYi5zaXplKCk7CiAgICAgIGZvciAoYXV0byBfX2RpdCA9IF9fcHJv
Yi5iZWdpbigpOyBfX2RpdCAhPSBfX3Byb2IuZW5kKCk7ICsrX19kaXQpCiBfX29zIDw8IF9fc3Bh
Y2UgPDwgKl9fZGl0OwoKICAgICAgX19vcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgX19vcy5maWxs
KF9fZmlsbCk7CiAgICAgIF9fb3MucHJlY2lzaW9uKF9fcHJlY2lzaW9uKTsKICAgICAgcmV0dXJu
IF9fb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlLCB0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJh
aXRzPiYKICAgIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
IF9faXMsCiAgICAgICAgZGlzY3JldGVfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPiYgX194KQogICAg
ewogICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0
cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppb3NfYmFz
ZSBfX2lvc19iYXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3Mg
X19mbGFncyA9IF9faXMuZmxhZ3MoKTsKICAgICAgX19pcy5mbGFncyhfX2lvc19iYXNlOjpkZWMg
fCBfX2lvc19iYXNlOjpza2lwd3MpOwoKICAgICAgc2l6ZV90IF9fbjsKICAgICAgX19pcyA+PiBf
X247CgogICAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+IF9fcHJvYl92ZWM7CiAgICAgIF9fcHJvYl92
ZWMucmVzZXJ2ZShfX24pOwogICAgICBmb3IgKDsgX19uICE9IDA7IC0tX19uKQogewogICBkb3Vi
bGUgX19wcm9iOwogICBfX2lzID4+IF9fcHJvYjsKICAgX19wcm9iX3ZlYy5wdXNoX2JhY2soX19w
cm9iKTsKIH0KCiAgICAgIF9feC5wYXJhbSh0eXBlbmFtZSBkaXNjcmV0ZV9kaXN0cmlidXRpb248
X0ludFR5cGU+OjoKICBwYXJhbV90eXBlKF9fcHJvYl92ZWMuYmVnaW4oKSwgX19wcm9iX3ZlYy5l
bmQoKSkpOwoKICAgICAgX19pcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgcmV0dXJuIF9faXM7CiAg
ICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICB2b2lkCiAgICBwaWVjZXdp
c2VfY29uc3RhbnRfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OnBhcmFtX3R5cGU6OgogICAgX01f
aW5pdGlhbGl6ZSgpCiAgICB7CiAgICAgIGlmIChfTV9pbnQuc2l6ZSgpIDwgMgogICB8fCAoX01f
aW50LnNpemUoKSA9PSAyCiAgICAgICAmJiBfTV9pbnRbMF0gPT0gX1JlYWxUeXBlKDApCiAgICAg
ICAmJiBfTV9pbnRbMV0gPT0gX1JlYWxUeXBlKDEpKSkKIHsKICAgX01faW50LmNsZWFyKCk7CiAg
IF9NX2Rlbi5jbGVhcigpOwogICByZXR1cm47CiB9CgogICAgICBjb25zdCBkb3VibGUgX19zdW0g
PSBzdGQ6OmFjY3VtdWxhdGUoX01fZGVuLmJlZ2luKCksCiAgICAgICAgX01fZGVuLmVuZCgpLCAw
LjApOwoKICAgICAgX19kZXRhaWw6Ol9fbm9ybWFsaXplKF9NX2Rlbi5iZWdpbigpLCBfTV9kZW4u
ZW5kKCksIF9NX2Rlbi5iZWdpbigpLAogICAgICAgX19zdW0pOwoKICAgICAgX01fY3AucmVzZXJ2
ZShfTV9kZW4uc2l6ZSgpKTsKICAgICAgc3RkOjpwYXJ0aWFsX3N1bShfTV9kZW4uYmVnaW4oKSwg
X01fZGVuLmVuZCgpLAogICAgICAgICBzdGQ6OmJhY2tfaW5zZXJ0ZXIoX01fY3ApKTsKCgogICAg
ICBfTV9jcFtfTV9jcC5zaXplKCkgLSAxXSA9IDEuMDsKCiAgICAgIGZvciAoc2l6ZV90IF9fayA9
IDA7IF9fayA8IF9NX2Rlbi5zaXplKCk7ICsrX19rKQogX01fZGVuW19fa10gLz0gX01faW50W19f
ayArIDFdIC0gX01faW50W19fa107CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlw
ZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yQiwgdHlwZW5hbWUgX0lucHV0
SXRlcmF0b3JXPgogICAgICBwaWVjZXdpc2VfY29uc3RhbnRfZGlzdHJpYnV0aW9uPF9SZWFsVHlw
ZT46OnBhcmFtX3R5cGU6OgogICAgICBwYXJhbV90eXBlKF9JbnB1dEl0ZXJhdG9yQiBfX2JiZWdp
biwKICAgX0lucHV0SXRlcmF0b3JCIF9fYmVuZCwKICAgX0lucHV0SXRlcmF0b3JXIF9fd2JlZ2lu
KQogICAgICA6IF9NX2ludCgpLCBfTV9kZW4oKSwgX01fY3AoKQogICAgICB7CiBpZiAoX19iYmVn
aW4gIT0gX19iZW5kKQogICB7CiAgICAgZm9yICg7OykKICAgICAgIHsKICBfTV9pbnQucHVzaF9i
YWNrKCpfX2JiZWdpbik7CiAgKytfX2JiZWdpbjsKICBpZiAoX19iYmVnaW4gPT0gX19iZW5kKQog
ICAgYnJlYWs7CgogIF9NX2Rlbi5wdXNoX2JhY2soKl9fd2JlZ2luKTsKICArK19fd2JlZ2luOwog
ICAgICAgfQogICB9CgogX01faW5pdGlhbGl6ZSgpOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9SZWFsVHlwZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GdW5jPgogICAgICBwaWVjZXdp
c2VfY29uc3RhbnRfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OnBhcmFtX3R5cGU6OgogICAgICBw
YXJhbV90eXBlKGluaXRpYWxpemVyX2xpc3Q8X1JlYWxUeXBlPiBfX2JsLCBfRnVuYyBfX2Z3KQog
ICAgICA6IF9NX2ludCgpLCBfTV9kZW4oKSwgX01fY3AoKQogICAgICB7CiBfTV9pbnQucmVzZXJ2
ZShfX2JsLnNpemUoKSk7CiBmb3IgKGF1dG8gX19iaXRlciA9IF9fYmwuYmVnaW4oKTsgX19iaXRl
ciAhPSBfX2JsLmVuZCgpOyArK19fYml0ZXIpCiAgIF9NX2ludC5wdXNoX2JhY2soKl9fYml0ZXIp
OwoKIF9NX2Rlbi5yZXNlcnZlKF9NX2ludC5zaXplKCkgLSAxKTsKIGZvciAoc2l6ZV90IF9fayA9
IDA7IF9fayA8IF9NX2ludC5zaXplKCkgLSAxOyArK19faykKICAgX01fZGVuLnB1c2hfYmFjayhf
X2Z3KDAuNSAqIChfTV9pbnRbX19rICsgMV0gKyBfTV9pbnRbX19rXSkpKTsKCiBfTV9pbml0aWFs
aXplKCk7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgX0Z1bmM+CiAgICAgIHBpZWNld2lzZV9jb25zdGFudF9kaXN0cmlidXRpb248
X1JlYWxUeXBlPjo6cGFyYW1fdHlwZTo6CiAgICAgIHBhcmFtX3R5cGUoc2l6ZV90IF9fbncsIF9S
ZWFsVHlwZSBfX3htaW4sIF9SZWFsVHlwZSBfX3htYXgsIF9GdW5jIF9fZncpCiAgICAgIDogX01f
aW50KCksIF9NX2RlbigpLCBfTV9jcCgpCiAgICAgIHsKIGNvbnN0IHNpemVfdCBfX24gPSBfX253
ID09IDAgPyAxIDogX19udzsKIGNvbnN0IF9SZWFsVHlwZSBfX2RlbHRhID0gKF9feG1heCAtIF9f
eG1pbikgLyBfX247CgogX01faW50LnJlc2VydmUoX19uICsgMSk7CiBmb3IgKHNpemVfdCBfX2sg
PSAwOyBfX2sgPD0gX19udzsgKytfX2spCiAgIF9NX2ludC5wdXNoX2JhY2soX194bWluICsgX19r
ICogX19kZWx0YSk7CgogX01fZGVuLnJlc2VydmUoX19uKTsKIGZvciAoc2l6ZV90IF9fayA9IDA7
IF9fayA8IF9fbnc7ICsrX19rKQogICBfTV9kZW4ucHVzaF9iYWNrKF9fZncoX01faW50W19fa10g
KyAwLjUgKiBfX2RlbHRhKSk7CgogX01faW5pdGlhbGl6ZSgpOwogICAgICB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9t
TnVtYmVyR2VuZXJhdG9yPgogICAgICB0eXBlbmFtZSBwaWVjZXdpc2VfY29uc3RhbnRfZGlzdHJp
YnV0aW9uPF9SZWFsVHlwZT46OnJlc3VsdF90eXBlCiAgICAgIHBpZWNld2lzZV9jb25zdGFudF9k
aXN0cmlidXRpb248X1JlYWxUeXBlPjo6CiAgICAgIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21O
dW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAg
ICAgewogX19kZXRhaWw6Ol9BZGFwdG9yPF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCBk
b3VibGU+CiAgIF9fYXVybmcoX191cm5nKTsKCiBjb25zdCBkb3VibGUgX19wID0gX19hdXJuZygp
OwogaWYgKF9fcGFyYW0uX01fY3AuZW1wdHkoKSkKICAgcmV0dXJuIF9fcDsKCiBhdXRvIF9fcG9z
ID0gc3RkOjpsb3dlcl9ib3VuZChfX3BhcmFtLl9NX2NwLmJlZ2luKCksCiAgICAgICAgICBfX3Bh
cmFtLl9NX2NwLmVuZCgpLCBfX3ApOwogY29uc3Qgc2l6ZV90IF9faSA9IF9fcG9zIC0gX19wYXJh
bS5fTV9jcC5iZWdpbigpOwoKIGNvbnN0IGRvdWJsZSBfX3ByZWYgPSBfX2kgPiAwID8gX19wYXJh
bS5fTV9jcFtfX2kgLSAxXSA6IDAuMDsKCiByZXR1cm4gX19wYXJhbS5fTV9pbnRbX19pXSArIChf
X3AgLSBfX3ByZWYpIC8gX19wYXJhbS5fTV9kZW5bX19pXTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmVhbFR5cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9y
LAogICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdm9p
ZAogICAgICBwaWVjZXdpc2VfY29uc3RhbnRfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OgogICAg
ICBfX2dlbmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3Ig
X190LAogICAgICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAg
ICAgY29uc3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAgICAgewoKIF9fZGV0YWlsOjpfQWRhcHRv
cjxfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgZG91YmxlPgogICBfX2F1cm5nKF9fdXJu
Zyk7CgogaWYgKF9fcGFyYW0uX01fY3AuZW1wdHkoKSkKICAgewogICAgIHdoaWxlIChfX2YgIT0g
X190KQogICAgICAgKl9fZisrID0gX19hdXJuZygpOwogICAgIHJldHVybjsKICAgfQoKIHdoaWxl
IChfX2YgIT0gX190KQogICB7CiAgICAgY29uc3QgZG91YmxlIF9fcCA9IF9fYXVybmcoKTsKCiAg
ICAgYXV0byBfX3BvcyA9IHN0ZDo6bG93ZXJfYm91bmQoX19wYXJhbS5fTV9jcC5iZWdpbigpLAog
ICAgICAgX19wYXJhbS5fTV9jcC5lbmQoKSwgX19wKTsKICAgICBjb25zdCBzaXplX3QgX19pID0g
X19wb3MgLSBfX3BhcmFtLl9NX2NwLmJlZ2luKCk7CgogICAgIGNvbnN0IGRvdWJsZSBfX3ByZWYg
PSBfX2kgPiAwID8gX19wYXJhbS5fTV9jcFtfX2kgLSAxXSA6IDAuMDsKCiAgICAgKl9fZisrID0g
KF9fcGFyYW0uX01faW50W19faV0KICAgICAgICArIChfX3AgLSBfX3ByZWYpIC8gX19wYXJhbS5f
TV9kZW5bX19pXSk7CiAgIH0KICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUs
IHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVh
bTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0No
YXJULCBfVHJhaXRzPiYgX19vcywKICAgICAgICBjb25zdCBwaWVjZXdpc2VfY29uc3RhbnRfZGlz
dHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9feCkKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2lj
X29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0
IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX29zLmZsYWdzKCk7CiAg
ICAgIGNvbnN0IF9DaGFyVCBfX2ZpbGwgPSBfX29zLmZpbGwoKTsKICAgICAgY29uc3Qgc3RkOjpz
dHJlYW1zaXplIF9fcHJlY2lzaW9uID0gX19vcy5wcmVjaXNpb24oKTsKICAgICAgY29uc3QgX0No
YXJUIF9fc3BhY2UgPSBfX29zLndpZGVuKCcgJyk7CiAgICAgIF9fb3MuZmxhZ3MoX19pb3NfYmFz
ZTo6c2NpZW50aWZpYyB8IF9faW9zX2Jhc2U6OmxlZnQpOwogICAgICBfX29zLmZpbGwoX19zcGFj
ZSk7CiAgICAgIF9fb3MucHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8X1JlYWxUeXBlPjo6
bWF4X2RpZ2l0czEwKTsKCiAgICAgIHN0ZDo6dmVjdG9yPF9SZWFsVHlwZT4gX19pbnQgPSBfX3gu
aW50ZXJ2YWxzKCk7CiAgICAgIF9fb3MgPDwgX19pbnQuc2l6ZSgpIC0gMTsKCiAgICAgIGZvciAo
YXV0byBfX3hpdCA9IF9faW50LmJlZ2luKCk7IF9feGl0ICE9IF9faW50LmVuZCgpOyArK19feGl0
KQogX19vcyA8PCBfX3NwYWNlIDw8ICpfX3hpdDsKCiAgICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4g
X19kZW4gPSBfX3guZGVuc2l0aWVzKCk7CiAgICAgIGZvciAoYXV0byBfX2RpdCA9IF9fZGVuLmJl
Z2luKCk7IF9fZGl0ICE9IF9fZGVuLmVuZCgpOyArK19fZGl0KQogX19vcyA8PCBfX3NwYWNlIDw8
ICpfX2RpdDsKCiAgICAgIF9fb3MuZmxhZ3MoX19mbGFncyk7CiAgICAgIF9fb3MuZmlsbChfX2Zp
bGwpOwogICAgICBfX29zLnByZWNpc2lvbihfX3ByZWNpc2lvbik7CiAgICAgIHJldHVybiBfX29z
OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
JgogICAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19p
cywKICAgICAgICBwaWVjZXdpc2VfY29uc3RhbnRfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9f
eCkKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRz
PiBfX2lzdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6
aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZt
dGZsYWdzIF9fZmxhZ3MgPSBfX2lzLmZsYWdzKCk7CiAgICAgIF9faXMuZmxhZ3MoX19pb3NfYmFz
ZTo6ZGVjIHwgX19pb3NfYmFzZTo6c2tpcHdzKTsKCiAgICAgIHNpemVfdCBfX247CiAgICAgIF9f
aXMgPj4gX19uOwoKICAgICAgc3RkOjp2ZWN0b3I8X1JlYWxUeXBlPiBfX2ludF92ZWM7CiAgICAg
IF9faW50X3ZlYy5yZXNlcnZlKF9fbiArIDEpOwogICAgICBmb3IgKHNpemVfdCBfX2kgPSAwOyBf
X2kgPD0gX19uOyArK19faSkKIHsKICAgX1JlYWxUeXBlIF9faW50OwogICBfX2lzID4+IF9faW50
OwogICBfX2ludF92ZWMucHVzaF9iYWNrKF9faW50KTsKIH0KCiAgICAgIHN0ZDo6dmVjdG9yPGRv
dWJsZT4gX19kZW5fdmVjOwogICAgICBfX2Rlbl92ZWMucmVzZXJ2ZShfX24pOwogICAgICBmb3Ig
KHNpemVfdCBfX2kgPSAwOyBfX2kgPCBfX247ICsrX19pKQogewogICBkb3VibGUgX19kZW47CiAg
IF9faXMgPj4gX19kZW47CiAgIF9fZGVuX3ZlYy5wdXNoX2JhY2soX19kZW4pOwogfQoKICAgICAg
X194LnBhcmFtKHR5cGVuYW1lIHBpZWNld2lzZV9jb25zdGFudF9kaXN0cmlidXRpb248X1JlYWxU
eXBlPjo6CiAgIHBhcmFtX3R5cGUoX19pbnRfdmVjLmJlZ2luKCksIF9faW50X3ZlYy5lbmQoKSwg
X19kZW5fdmVjLmJlZ2luKCkpKTsKCiAgICAgIF9faXMuZmxhZ3MoX19mbGFncyk7CiAgICAgIHJl
dHVybiBfX2lzOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgdm9p
ZAogICAgcGllY2V3aXNlX2xpbmVhcl9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6cGFyYW1fdHlw
ZTo6CiAgICBfTV9pbml0aWFsaXplKCkKICAgIHsKICAgICAgaWYgKF9NX2ludC5zaXplKCkgPCAy
CiAgIHx8IChfTV9pbnQuc2l6ZSgpID09IDIKICAgICAgICYmIF9NX2ludFswXSA9PSBfUmVhbFR5
cGUoMCkKICAgICAgICYmIF9NX2ludFsxXSA9PSBfUmVhbFR5cGUoMSkKICAgICAgICYmIF9NX2Rl
blswXSA9PSBfTV9kZW5bMV0pKQogewogICBfTV9pbnQuY2xlYXIoKTsKICAgX01fZGVuLmNsZWFy
KCk7CiAgIHJldHVybjsKIH0KCiAgICAgIGRvdWJsZSBfX3N1bSA9IDAuMDsKICAgICAgX01fY3Au
cmVzZXJ2ZShfTV9pbnQuc2l6ZSgpIC0gMSk7CiAgICAgIF9NX20ucmVzZXJ2ZShfTV9pbnQuc2l6
ZSgpIC0gMSk7CiAgICAgIGZvciAoc2l6ZV90IF9fayA9IDA7IF9fayA8IF9NX2ludC5zaXplKCkg
LSAxOyArK19faykKIHsKICAgY29uc3QgX1JlYWxUeXBlIF9fZGVsdGEgPSBfTV9pbnRbX19rICsg
MV0gLSBfTV9pbnRbX19rXTsKICAgX19zdW0gKz0gMC41ICogKF9NX2RlbltfX2sgKyAxXSArIF9N
X2RlbltfX2tdKSAqIF9fZGVsdGE7CiAgIF9NX2NwLnB1c2hfYmFjayhfX3N1bSk7CiAgIF9NX20u
cHVzaF9iYWNrKChfTV9kZW5bX19rICsgMV0gLSBfTV9kZW5bX19rXSkgLyBfX2RlbHRhKTsKIH0K
CgogICAgICBfX2RldGFpbDo6X19ub3JtYWxpemUoX01fZGVuLmJlZ2luKCksIF9NX2Rlbi5lbmQo
KSwgX01fZGVuLmJlZ2luKCksCiAgICAgICBfX3N1bSk7CgogICAgICBfX2RldGFpbDo6X19ub3Jt
YWxpemUoX01fY3AuYmVnaW4oKSwgX01fY3AuZW5kKCksIF9NX2NwLmJlZ2luKCksIF9fc3VtKTsK
CiAgICAgIF9fZGV0YWlsOjpfX25vcm1hbGl6ZShfTV9tLmJlZ2luKCksIF9NX20uZW5kKCksIF9N
X20uYmVnaW4oKSwgX19zdW0pOwoKCiAgICAgIF9NX2NwW19NX2NwLnNpemUoKSAtIDFdID0gMS4w
OwogICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0lucHV0SXRlcmF0b3JCLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRvclc+CiAgICAgIHBp
ZWNld2lzZV9saW5lYXJfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OnBhcmFtX3R5cGU6OgogICAg
ICBwYXJhbV90eXBlKF9JbnB1dEl0ZXJhdG9yQiBfX2JiZWdpbiwKICAgX0lucHV0SXRlcmF0b3JC
IF9fYmVuZCwKICAgX0lucHV0SXRlcmF0b3JXIF9fd2JlZ2luKQogICAgICA6IF9NX2ludCgpLCBf
TV9kZW4oKSwgX01fY3AoKSwgX01fbSgpCiAgICAgIHsKIGZvciAoOyBfX2JiZWdpbiAhPSBfX2Jl
bmQ7ICsrX19iYmVnaW4sICsrX193YmVnaW4pCiAgIHsKICAgICBfTV9pbnQucHVzaF9iYWNrKCpf
X2JiZWdpbik7CiAgICAgX01fZGVuLnB1c2hfYmFjaygqX193YmVnaW4pOwogICB9CgogX01faW5p
dGlhbGl6ZSgpOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9GdW5jPgogICAgICBwaWVjZXdpc2VfbGluZWFyX2Rpc3RyaWJ1dGlv
bjxfUmVhbFR5cGU+OjpwYXJhbV90eXBlOjoKICAgICAgcGFyYW1fdHlwZShpbml0aWFsaXplcl9s
aXN0PF9SZWFsVHlwZT4gX19ibCwgX0Z1bmMgX19mdykKICAgICAgOiBfTV9pbnQoKSwgX01fZGVu
KCksIF9NX2NwKCksIF9NX20oKQogICAgICB7CiBfTV9pbnQucmVzZXJ2ZShfX2JsLnNpemUoKSk7
CiBfTV9kZW4ucmVzZXJ2ZShfX2JsLnNpemUoKSk7CiBmb3IgKGF1dG8gX19iaXRlciA9IF9fYmwu
YmVnaW4oKTsgX19iaXRlciAhPSBfX2JsLmVuZCgpOyArK19fYml0ZXIpCiAgIHsKICAgICBfTV9p
bnQucHVzaF9iYWNrKCpfX2JpdGVyKTsKICAgICBfTV9kZW4ucHVzaF9iYWNrKF9fZncoKl9fYml0
ZXIpKTsKICAgfQoKIF9NX2luaXRpYWxpemUoKTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfUmVhbFR5cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnVuYz4KICAgICAgcGllY2V3aXNl
X2xpbmVhcl9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6cGFyYW1fdHlwZTo6CiAgICAgIHBhcmFt
X3R5cGUoc2l6ZV90IF9fbncsIF9SZWFsVHlwZSBfX3htaW4sIF9SZWFsVHlwZSBfX3htYXgsIF9G
dW5jIF9fZncpCiAgICAgIDogX01faW50KCksIF9NX2RlbigpLCBfTV9jcCgpLCBfTV9tKCkKICAg
ICAgewogY29uc3Qgc2l6ZV90IF9fbiA9IF9fbncgPT0gMCA/IDEgOiBfX253OwogY29uc3QgX1Jl
YWxUeXBlIF9fZGVsdGEgPSAoX194bWF4IC0gX194bWluKSAvIF9fbjsKCiBfTV9pbnQucmVzZXJ2
ZShfX24gKyAxKTsKIF9NX2Rlbi5yZXNlcnZlKF9fbiArIDEpOwogZm9yIChzaXplX3QgX19rID0g
MDsgX19rIDw9IF9fbnc7ICsrX19rKQogICB7CiAgICAgX01faW50LnB1c2hfYmFjayhfX3htaW4g
KyBfX2sgKiBfX2RlbHRhKTsKICAgICBfTV9kZW4ucHVzaF9iYWNrKF9fZncoX01faW50W19fa10g
KyBfX2RlbHRhKSk7CiAgIH0KCiBfTV9pbml0aWFsaXplKCk7CiAgICAgIH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21O
dW1iZXJHZW5lcmF0b3I+CiAgICAgIHR5cGVuYW1lIHBpZWNld2lzZV9saW5lYXJfZGlzdHJpYnV0
aW9uPF9SZWFsVHlwZT46OnJlc3VsdF90eXBlCiAgICAgIHBpZWNld2lzZV9saW5lYXJfZGlzdHJp
YnV0aW9uPF9SZWFsVHlwZT46OgogICAgICBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVy
R2VuZXJhdG9yJiBfX3VybmcsCiAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcGFyYW0pCiAgICAgIHsK
IF9fZGV0YWlsOjpfQWRhcHRvcjxfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgZG91Ymxl
PgogICBfX2F1cm5nKF9fdXJuZyk7CgogY29uc3QgZG91YmxlIF9fcCA9IF9fYXVybmcoKTsKIGlm
IChfX3BhcmFtLl9NX2NwLmVtcHR5KCkpCiAgIHJldHVybiBfX3A7CgogYXV0byBfX3BvcyA9IHN0
ZDo6bG93ZXJfYm91bmQoX19wYXJhbS5fTV9jcC5iZWdpbigpLAogICAgICAgICAgX19wYXJhbS5f
TV9jcC5lbmQoKSwgX19wKTsKIGNvbnN0IHNpemVfdCBfX2kgPSBfX3BvcyAtIF9fcGFyYW0uX01f
Y3AuYmVnaW4oKTsKCiBjb25zdCBkb3VibGUgX19wcmVmID0gX19pID4gMCA/IF9fcGFyYW0uX01f
Y3BbX19pIC0gMV0gOiAwLjA7CgogY29uc3QgZG91YmxlIF9fYSA9IDAuNSAqIF9fcGFyYW0uX01f
bVtfX2ldOwogY29uc3QgZG91YmxlIF9fYiA9IF9fcGFyYW0uX01fZGVuW19faV07CiBjb25zdCBk
b3VibGUgX19jbSA9IF9fcCAtIF9fcHJlZjsKCiBfUmVhbFR5cGUgX194ID0gX19wYXJhbS5fTV9p
bnRbX19pXTsKIGlmIChfX2EgPT0gMCkKICAgX194ICs9IF9fY20gLyBfX2I7CiBlbHNlCiAgIHsK
ICAgICBjb25zdCBkb3VibGUgX19kID0gX19iICogX19iICsgNC4wICogX19hICogX19jbTsKICAg
ICBfX3ggKz0gMC41ICogKHN0ZDo6c3FydChfX2QpIC0gX19iKSAvIF9fYTsKICAgICAgICAgIH0K
CiAgICAgICAgcmV0dXJuIF9feDsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5
cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICB0eXBlbmFt
ZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdm9pZAogICAgICBwaWVjZXdp
c2VfbGluZWFyX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+OjoKICAgICAgX19nZW5lcmF0ZV9pbXBs
KF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICAgICBfVW5p
Zm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgICAgIGNvbnN0IHBhcmFtX3R5
cGUmIF9fcGFyYW0pCiAgICAgIHsKCgogd2hpbGUgKF9fZiAhPSBfX3QpCiAgICpfX2YrKyA9IHRo
aXMtPm9wZXJhdG9yKCkoX191cm5nLCBfX3BhcmFtKTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmVhbFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0
ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChzdGQ6OmJh
c2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAgICAgICBjb25zdCBwaWVjZXdp
c2VfbGluZWFyX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5cGVk
ZWYgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7
CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19v
cy5mbGFncygpOwogICAgICBjb25zdCBfQ2hhclQgX19maWxsID0gX19vcy5maWxsKCk7CiAgICAg
IGNvbnN0IHN0ZDo6c3RyZWFtc2l6ZSBfX3ByZWNpc2lvbiA9IF9fb3MucHJlY2lzaW9uKCk7CiAg
ICAgIGNvbnN0IF9DaGFyVCBfX3NwYWNlID0gX19vcy53aWRlbignICcpOwogICAgICBfX29zLmZs
YWdzKF9faW9zX2Jhc2U6OnNjaWVudGlmaWMgfCBfX2lvc19iYXNlOjpsZWZ0KTsKICAgICAgX19v
cy5maWxsKF9fc3BhY2UpOwogICAgICBfX29zLnByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRz
PF9SZWFsVHlwZT46Om1heF9kaWdpdHMxMCk7CgogICAgICBzdGQ6OnZlY3RvcjxfUmVhbFR5cGU+
IF9faW50ID0gX194LmludGVydmFscygpOwogICAgICBfX29zIDw8IF9faW50LnNpemUoKSAtIDE7
CgogICAgICBmb3IgKGF1dG8gX194aXQgPSBfX2ludC5iZWdpbigpOyBfX3hpdCAhPSBfX2ludC5l
bmQoKTsgKytfX3hpdCkKIF9fb3MgPDwgX19zcGFjZSA8PCAqX194aXQ7CgogICAgICBzdGQ6OnZl
Y3Rvcjxkb3VibGU+IF9fZGVuID0gX194LmRlbnNpdGllcygpOwogICAgICBmb3IgKGF1dG8gX19k
aXQgPSBfX2Rlbi5iZWdpbigpOyBfX2RpdCAhPSBfX2Rlbi5lbmQoKTsgKytfX2RpdCkKIF9fb3Mg
PDwgX19zcGFjZSA8PCAqX19kaXQ7CgogICAgICBfX29zLmZsYWdzKF9fZmxhZ3MpOwogICAgICBf
X29zLmZpbGwoX19maWxsKTsKICAgICAgX19vcy5wcmVjaXNpb24oX19wcmVjaXNpb24pOwogICAg
ICByZXR1cm4gX19vczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlLCB0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX2lzdHJlYW08X0No
YXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4mIF9faXMsCiAgICAgICAgcGllY2V3aXNlX2xpbmVhcl9kaXN0cmlidXRpb248X1Jl
YWxUeXBlPiYgX194KQogICAgewogICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0
cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19p
b3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9faXMuZmxhZ3MoKTsKICAgICAgX19pcy5mbGFn
cyhfX2lvc19iYXNlOjpkZWMgfCBfX2lvc19iYXNlOjpza2lwd3MpOwoKICAgICAgc2l6ZV90IF9f
bjsKICAgICAgX19pcyA+PiBfX247CgogICAgICBzdGQ6OnZlY3RvcjxfUmVhbFR5cGU+IF9faW50
X3ZlYzsKICAgICAgX19pbnRfdmVjLnJlc2VydmUoX19uICsgMSk7CiAgICAgIGZvciAoc2l6ZV90
IF9faSA9IDA7IF9faSA8PSBfX247ICsrX19pKQogewogICBfUmVhbFR5cGUgX19pbnQ7CiAgIF9f
aXMgPj4gX19pbnQ7CiAgIF9faW50X3ZlYy5wdXNoX2JhY2soX19pbnQpOwogfQoKICAgICAgc3Rk
Ojp2ZWN0b3I8ZG91YmxlPiBfX2Rlbl92ZWM7CiAgICAgIF9fZGVuX3ZlYy5yZXNlcnZlKF9fbiAr
IDEpOwogICAgICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPD0gX19uOyArK19faSkKIHsKICAg
ZG91YmxlIF9fZGVuOwogICBfX2lzID4+IF9fZGVuOwogICBfX2Rlbl92ZWMucHVzaF9iYWNrKF9f
ZGVuKTsKIH0KCiAgICAgIF9feC5wYXJhbSh0eXBlbmFtZSBwaWVjZXdpc2VfbGluZWFyX2Rpc3Ry
aWJ1dGlvbjxfUmVhbFR5cGU+OjoKICAgcGFyYW1fdHlwZShfX2ludF92ZWMuYmVnaW4oKSwgX19p
bnRfdmVjLmVuZCgpLCBfX2Rlbl92ZWMuYmVnaW4oKSkpOwoKICAgICAgX19pcy5mbGFncyhfX2Zs
YWdzKTsKICAgICAgcmV0dXJuIF9faXM7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50
VHlwZT4KICAgIHNlZWRfc2VxOjpzZWVkX3NlcShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8X0ludFR5
cGU+IF9faWwpCiAgICB7CiAgICAgIGZvciAoYXV0byBfX2l0ZXIgPSBfX2lsLmJlZ2luKCk7IF9f
aXRlciAhPSBfX2lsLmVuZCgpOyArK19faXRlcikKIF9NX3YucHVzaF9iYWNrKF9fZGV0YWlsOjpf
X21vZDxyZXN1bHRfdHlwZSwKICAgICAgICAgX19kZXRhaWw6Ol9TaGlmdDxyZXN1bHRfdHlwZSwg
MzI+OjpfX3ZhbHVlPigqX19pdGVyKSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1
dEl0ZXJhdG9yPgogICAgc2VlZF9zZXE6OnNlZWRfc2VxKF9JbnB1dEl0ZXJhdG9yIF9fYmVnaW4s
IF9JbnB1dEl0ZXJhdG9yIF9fZW5kKQogICAgewogICAgICBmb3IgKF9JbnB1dEl0ZXJhdG9yIF9f
aXRlciA9IF9fYmVnaW47IF9faXRlciAhPSBfX2VuZDsgKytfX2l0ZXIpCiBfTV92LnB1c2hfYmFj
ayhfX2RldGFpbDo6X19tb2Q8cmVzdWx0X3R5cGUsCiAgICAgICAgIF9fZGV0YWlsOjpfU2hpZnQ8
cmVzdWx0X3R5cGUsIDMyPjo6X192YWx1ZT4oKl9faXRlcikpOwogICAgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+CiAgICB2b2lkCiAgICBzZWVkX3NlcTo6Z2Vu
ZXJhdGUoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fYmVnaW4sCiAgICAgICAgIF9SYW5kb21BY2Nl
c3NJdGVyYXRvciBfX2VuZCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90
cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQogICAgICAgIF9UeXBlOwoK
ICAgICAgaWYgKF9fYmVnaW4gPT0gX19lbmQpCiByZXR1cm47CgogICAgICBzdGQ6OmZpbGwoX19i
ZWdpbiwgX19lbmQsIF9UeXBlKDB4OGI4YjhiOGJ1KSk7CgogICAgICBjb25zdCBzaXplX3QgX19u
ID0gX19lbmQgLSBfX2JlZ2luOwogICAgICBjb25zdCBzaXplX3QgX19zID0gX01fdi5zaXplKCk7
CiAgICAgIGNvbnN0IHNpemVfdCBfX3QgPSAoX19uID49IDYyMykgPyAxMQogICAgICAgICA6IChf
X24gPj0gNjgpID8gNwogICAgICAgICA6IChfX24gPj0gMzkpID8gNQogICAgICAgICA6IChfX24g
Pj0gNykgPyAzCiAgICAgICAgIDogKF9fbiAtIDEpIC8gMjsKICAgICAgY29uc3Qgc2l6ZV90IF9f
cCA9IChfX24gLSBfX3QpIC8gMjsKICAgICAgY29uc3Qgc2l6ZV90IF9fcSA9IF9fcCArIF9fdDsK
ICAgICAgY29uc3Qgc2l6ZV90IF9fbSA9IHN0ZDo6bWF4KHNpemVfdChfX3MgKyAxKSwgX19uKTsK
CiAgICAgIGZvciAoc2l6ZV90IF9fayA9IDA7IF9fayA8IF9fbTsgKytfX2spCiB7CiAgIF9UeXBl
IF9fYXJnID0gKF9fYmVnaW5bX19rICUgX19uXQogICAgXiBfX2JlZ2luWyhfX2sgKyBfX3ApICUg
X19uXQogICAgXiBfX2JlZ2luWyhfX2sgLSAxKSAlIF9fbl0pOwogICBfVHlwZSBfX3IxID0gX19h
cmcgXiAoX19hcmcgPj4gMjcpOwogICBfX3IxID0gX19kZXRhaWw6Ol9fbW9kPF9UeXBlLAogICAg
ICBfX2RldGFpbDo6X1NoaWZ0PF9UeXBlLCAzMj46Ol9fdmFsdWU+KDE2NjQ1MjV1ICogX19yMSk7
CiAgIF9UeXBlIF9fcjIgPSBfX3IxOwogICBpZiAoX19rID09IDApCiAgICAgX19yMiArPSBfX3M7
CiAgIGVsc2UgaWYgKF9fayA8PSBfX3MpCiAgICAgX19yMiArPSBfX2sgJSBfX24gKyBfTV92W19f
ayAtIDFdOwogICBlbHNlCiAgICAgX19yMiArPSBfX2sgJSBfX247CiAgIF9fcjIgPSBfX2RldGFp
bDo6X19tb2Q8X1R5cGUsCiAgICAgICAgICAgIF9fZGV0YWlsOjpfU2hpZnQ8X1R5cGUsIDMyPjo6
X192YWx1ZT4oX19yMik7CiAgIF9fYmVnaW5bKF9fayArIF9fcCkgJSBfX25dICs9IF9fcjE7CiAg
IF9fYmVnaW5bKF9fayArIF9fcSkgJSBfX25dICs9IF9fcjI7CiAgIF9fYmVnaW5bX19rICUgX19u
XSA9IF9fcjI7CiB9CgogICAgICBmb3IgKHNpemVfdCBfX2sgPSBfX207IF9fayA8IF9fbSArIF9f
bjsgKytfX2spCiB7CiAgIF9UeXBlIF9fYXJnID0gKF9fYmVnaW5bX19rICUgX19uXQogICAgKyBf
X2JlZ2luWyhfX2sgKyBfX3ApICUgX19uXQogICAgKyBfX2JlZ2luWyhfX2sgLSAxKSAlIF9fbl0p
OwogICBfVHlwZSBfX3IzID0gX19hcmcgXiAoX19hcmcgPj4gMjcpOwogICBfX3IzID0gX19kZXRh
aWw6Ol9fbW9kPF9UeXBlLAogICAgIF9fZGV0YWlsOjpfU2hpZnQ8X1R5cGUsIDMyPjo6X192YWx1
ZT4oMTU2NjA4Mzk0MXUgKiBfX3IzKTsKICAgX1R5cGUgX19yNCA9IF9fcjMgLSBfX2sgJSBfX247
CiAgIF9fcjQgPSBfX2RldGFpbDo6X19tb2Q8X1R5cGUsCiAgICAgICAgICAgIF9fZGV0YWlsOjpf
U2hpZnQ8X1R5cGUsIDMyPjo6X192YWx1ZT4oX19yNCk7CiAgIF9fYmVnaW5bKF9fayArIF9fcCkg
JSBfX25dIF49IF9fcjM7CiAgIF9fYmVnaW5bKF9fayArIF9fcSkgJSBfX25dIF49IF9fcjQ7CiAg
IF9fYmVnaW5bX19rICUgX19uXSA9IF9fcjQ7CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9SZWFsVHlwZSwgc2l6ZV90IF9fYml0cywKICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVt
YmVyR2VuZXJhdG9yPgogICAgX1JlYWxUeXBlCiAgICBnZW5lcmF0ZV9jYW5vbmljYWwoX1VuaWZv
cm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKICAgIHsKICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PF9SZWFsVHlwZT46OnZhbHVlLAogICAgICAidGVtcGxh
dGUgYXJndW1lbnQgbm90IGEgZmxvYXRpbmcgcG9pbnQgdHlwZSIpOwoKICAgICAgY29uc3Qgc2l6
ZV90IF9fYgogPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxzaXplX3Q+KHN0ZDo6bnVtZXJpY19saW1p
dHM8X1JlYWxUeXBlPjo6ZGlnaXRzKSwKICAgICAgICAgICAgICAgICAgIF9fYml0cyk7CiAgICAg
IGNvbnN0IGxvbmcgZG91YmxlIF9fciA9IHN0YXRpY19jYXN0PGxvbmcgZG91YmxlPihfX3Vybmcu
bWF4KCkpCiAgICAgICAtIHN0YXRpY19jYXN0PGxvbmcgZG91YmxlPihfX3VybmcubWluKCkpICsg
MS4wTDsKICAgICAgY29uc3Qgc2l6ZV90IF9fbG9nMnIgPSBzdGQ6OmxvZyhfX3IpIC8gc3RkOjps
b2coMi4wTCk7CiAgICAgIHNpemVfdCBfX2sgPSBzdGQ6Om1heDxzaXplX3Q+KDFVTCwgKF9fYiAr
IF9fbG9nMnIgLSAxVUwpIC8gX19sb2cycik7CiAgICAgIF9SZWFsVHlwZSBfX3N1bSA9IF9SZWFs
VHlwZSgwKTsKICAgICAgX1JlYWxUeXBlIF9fdG1wID0gX1JlYWxUeXBlKDEpOwogICAgICBmb3Ig
KDsgX19rICE9IDA7IC0tX19rKQogewogICBfX3N1bSArPSBfUmVhbFR5cGUoX191cm5nKCkgLSBf
X3VybmcubWluKCkpICogX190bXA7CiAgIF9fdG1wICo9IF9fcjsKIH0KICAgICAgcmV0dXJuIF9f
c3VtIC8gX190bXA7CiAgICB9CgoKfQojIDUyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3JhbmRvbSIgMiAzCiMgNjcgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxn
by5oIiAyIDMKCgoKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9f
ICgiZGVmYXVsdCIpKSkKewoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5h
bWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX21vdmVfbWVkaWFuX3RvX2ZpcnN0KF9JdGVyYXRv
ciBfX3Jlc3VsdCxfSXRlcmF0b3IgX19hLCBfSXRlcmF0b3IgX19iLAogICAgICBfSXRlcmF0b3Ig
X19jLCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIGlmIChfX2NvbXAoX19hLCBfX2IpKQog
ewogICBpZiAoX19jb21wKF9fYiwgX19jKSkKICAgICBzdGQ6Oml0ZXJfc3dhcChfX3Jlc3VsdCwg
X19iKTsKICAgZWxzZSBpZiAoX19jb21wKF9fYSwgX19jKSkKICAgICBzdGQ6Oml0ZXJfc3dhcChf
X3Jlc3VsdCwgX19jKTsKICAgZWxzZQogICAgIHN0ZDo6aXRlcl9zd2FwKF9fcmVzdWx0LCBfX2Ep
OwogfQogICAgICBlbHNlIGlmIChfX2NvbXAoX19hLCBfX2MpKQogc3RkOjppdGVyX3N3YXAoX19y
ZXN1bHQsIF9fYSk7CiAgICAgIGVsc2UgaWYgKF9fY29tcChfX2IsIF9fYykpCiBzdGQ6Oml0ZXJf
c3dhcChfX3Jlc3VsdCwgX19jKTsKICAgICAgZWxzZQogc3RkOjppdGVyX3N3YXAoX19yZXN1bHQs
IF9fYik7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5h
bWUgX1ByZWRpY2F0ZT4KICAgIGlubGluZSBfSW5wdXRJdGVyYXRvcgogICAgX19maW5kX2lmKF9J
bnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgIF9QcmVk
aWNhdGUgX19wcmVkLCBpbnB1dF9pdGVyYXRvcl90YWcpCiAgICB7CiAgICAgIHdoaWxlIChfX2Zp
cnN0ICE9IF9fbGFzdCAmJiAhX19wcmVkKF9fZmlyc3QpKQogKytfX2ZpcnN0OwogICAgICByZXR1
cm4gX19maXJzdDsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVy
YXRvciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvcgogICAg
X19maW5kX2lmKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IgX19sYXN0LAogICAgICAgX1ByZWRpY2F0ZSBfX3ByZWQsIHJhbmRvbV9hY2Nlc3NfaXRl
cmF0b3JfdGFnKQogICAgewogICAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiBfX3RyaXBfY291bnQgPSAoX19sYXN0IC0g
X19maXJzdCkgPj4gMjsKCiAgICAgIGZvciAoOyBfX3RyaXBfY291bnQgPiAwOyAtLV9fdHJpcF9j
b3VudCkKIHsKICAgaWYgKF9fcHJlZChfX2ZpcnN0KSkKICAgICByZXR1cm4gX19maXJzdDsKICAg
KytfX2ZpcnN0OwoKICAgaWYgKF9fcHJlZChfX2ZpcnN0KSkKICAgICByZXR1cm4gX19maXJzdDsK
ICAgKytfX2ZpcnN0OwoKICAgaWYgKF9fcHJlZChfX2ZpcnN0KSkKICAgICByZXR1cm4gX19maXJz
dDsKICAgKytfX2ZpcnN0OwoKICAgaWYgKF9fcHJlZChfX2ZpcnN0KSkKICAgICByZXR1cm4gX19m
aXJzdDsKICAgKytfX2ZpcnN0OwogfQoKICAgICAgc3dpdGNoIChfX2xhc3QgLSBfX2ZpcnN0KQog
ewogY2FzZSAzOgogICBpZiAoX19wcmVkKF9fZmlyc3QpKQogICAgIHJldHVybiBfX2ZpcnN0Owog
ICArK19fZmlyc3Q7CiBjYXNlIDI6CiAgIGlmIChfX3ByZWQoX19maXJzdCkpCiAgICAgcmV0dXJu
IF9fZmlyc3Q7CiAgICsrX19maXJzdDsKIGNhc2UgMToKICAgaWYgKF9fcHJlZChfX2ZpcnN0KSkK
ICAgICByZXR1cm4gX19maXJzdDsKICAgKytfX2ZpcnN0OwogY2FzZSAwOgogZGVmYXVsdDoKICAg
cmV0dXJuIF9fbGFzdDsKIH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLCB0
eXBlbmFtZSBfUHJlZGljYXRlPgogICAgaW5saW5lIF9JdGVyYXRvcgogICAgX19maW5kX2lmKF9J
dGVyYXRvciBfX2ZpcnN0LCBfSXRlcmF0b3IgX19sYXN0LCBfUHJlZGljYXRlIF9fcHJlZCkKICAg
IHsKICAgICAgcmV0dXJuIF9fZmluZF9pZihfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCwKICAgICAg
ICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKICAgIH0KCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgaW5saW5l
IF9JbnB1dEl0ZXJhdG9yCiAgICBfX2ZpbmRfaWZfbm90KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3Qs
IF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgIF9QcmVkaWNhdGUgX19wcmVkKQogICAgewogICAg
ICByZXR1cm4gc3RkOjpfX2ZpbmRfaWYoX19maXJzdCwgX19sYXN0LAogICAgICAgX19nbnVfY3h4
OjpfX29wczo6X19uZWdhdGUoX19wcmVkKSwKICAgICAgIHN0ZDo6X19pdGVyYXRvcl9jYXRlZ29y
eShfX2ZpcnN0KSk7CiAgICB9CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9y
LCB0eXBlbmFtZSBfUHJlZGljYXRlLCB0eXBlbmFtZSBfRGlzdGFuY2U+CiAgICBfSW5wdXRJdGVy
YXRvcgogICAgX19maW5kX2lmX25vdF9uKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9EaXN0YW5j
ZSYgX19sZW4sIF9QcmVkaWNhdGUgX19wcmVkKQogICAgewogICAgICBmb3IgKDsgX19sZW47IC0t
X19sZW4sICsrX19maXJzdCkKIGlmICghX19wcmVkKF9fZmlyc3QpKQogICBicmVhazsKICAgICAg
cmV0dXJuIF9fZmlyc3Q7CiAgICB9CiMgMjAyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IxLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMiwK
ICAgIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+CiAgICBfRm9yd2FyZEl0ZXJhdG9yMQogICAg
X19zZWFyY2goX0ZvcndhcmRJdGVyYXRvcjEgX19maXJzdDEsIF9Gb3J3YXJkSXRlcmF0b3IxIF9f
bGFzdDEsCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IyIF9fZmlyc3QyLCBfRm9yd2FyZEl0ZXJhdG9y
MiBfX2xhc3QyLAogICAgICBfQmluYXJ5UHJlZGljYXRlIF9fcHJlZGljYXRlKQogICAgewoKICAg
ICAgaWYgKF9fZmlyc3QxID09IF9fbGFzdDEgfHwgX19maXJzdDIgPT0gX19sYXN0MikKIHJldHVy
biBfX2ZpcnN0MTsKCgogICAgICBfRm9yd2FyZEl0ZXJhdG9yMiBfX3AxKF9fZmlyc3QyKTsKICAg
ICAgaWYgKCsrX19wMSA9PSBfX2xhc3QyKQogcmV0dXJuIHN0ZDo6X19maW5kX2lmKF9fZmlyc3Qx
LCBfX2xhc3QxLAogIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9jb21wX2l0ZXIoX19wcmVkaWNh
dGUsIF9fZmlyc3QyKSk7CgoKICAgICAgX0ZvcndhcmRJdGVyYXRvcjIgX19wOwogICAgICBfRm9y
d2FyZEl0ZXJhdG9yMSBfX2N1cnJlbnQgPSBfX2ZpcnN0MTsKCiAgICAgIGZvciAoOzspCiB7CiAg
IF9fZmlyc3QxID0KICAgICBzdGQ6Ol9fZmluZF9pZihfX2ZpcnN0MSwgX19sYXN0MSwKICBfX2du
dV9jeHg6Ol9fb3BzOjpfX2l0ZXJfY29tcF9pdGVyKF9fcHJlZGljYXRlLCBfX2ZpcnN0MikpOwoK
ICAgaWYgKF9fZmlyc3QxID09IF9fbGFzdDEpCiAgICAgcmV0dXJuIF9fbGFzdDE7CgogICBfX3Ag
PSBfX3AxOwogICBfX2N1cnJlbnQgPSBfX2ZpcnN0MTsKICAgaWYgKCsrX19jdXJyZW50ID09IF9f
bGFzdDEpCiAgICAgcmV0dXJuIF9fbGFzdDE7CgogICB3aGlsZSAoX19wcmVkaWNhdGUoX19jdXJy
ZW50LCBfX3ApKQogICAgIHsKICAgICAgIGlmICgrK19fcCA9PSBfX2xhc3QyKQogIHJldHVybiBf
X2ZpcnN0MTsKICAgICAgIGlmICgrK19fY3VycmVudCA9PSBfX2xhc3QxKQogIHJldHVybiBfX2xh
c3QxOwogICAgIH0KICAgKytfX2ZpcnN0MTsKIH0KICAgICAgcmV0dXJuIF9fZmlyc3QxOwogICAg
fQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9J
bnRlZ2VyLAogICAgdHlwZW5hbWUgX1VuYXJ5UHJlZGljYXRlPgogICAgX0ZvcndhcmRJdGVyYXRv
cgogICAgX19zZWFyY2hfbl9hdXgoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0
ZXJhdG9yIF9fbGFzdCwKICAgICBfSW50ZWdlciBfX2NvdW50LCBfVW5hcnlQcmVkaWNhdGUgX191
bmFyeV9wcmVkLAogICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcpCiAgICB7CiAgICAgIF9f
Zmlyc3QgPSBzdGQ6Ol9fZmluZF9pZihfX2ZpcnN0LCBfX2xhc3QsIF9fdW5hcnlfcHJlZCk7CiAg
ICAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkKIHsKICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJh
aXRzPF9Gb3J3YXJkSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKICAgICBfX24gPSBfX2NvdW50
OwogICBfRm9yd2FyZEl0ZXJhdG9yIF9faSA9IF9fZmlyc3Q7CiAgICsrX19pOwogICB3aGlsZSAo
X19pICE9IF9fbGFzdCAmJiBfX24gIT0gMSAmJiBfX3VuYXJ5X3ByZWQoX19pKSkKICAgICB7CiAg
ICAgICArK19faTsKICAgICAgIC0tX19uOwogICAgIH0KICAgaWYgKF9fbiA9PSAxKQogICAgIHJl
dHVybiBfX2ZpcnN0OwogICBpZiAoX19pID09IF9fbGFzdCkKICAgICByZXR1cm4gX19sYXN0Owog
ICBfX2ZpcnN0ID0gc3RkOjpfX2ZpbmRfaWYoKytfX2ksIF9fbGFzdCwgX191bmFyeV9wcmVkKTsK
IH0KICAgICAgcmV0dXJuIF9fbGFzdDsKICAgIH0KCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
YW5kb21BY2Nlc3NJdGVyLCB0eXBlbmFtZSBfSW50ZWdlciwKICAgIHR5cGVuYW1lIF9VbmFyeVBy
ZWRpY2F0ZT4KICAgIF9SYW5kb21BY2Nlc3NJdGVyCiAgICBfX3NlYXJjaF9uX2F1eChfUmFuZG9t
QWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAgICAgX0ludGVn
ZXIgX19jb3VudCwgX1VuYXJ5UHJlZGljYXRlIF9fdW5hcnlfcHJlZCwKICAgICBzdGQ6OnJhbmRv
bV9hY2Nlc3NfaXRlcmF0b3JfdGFnKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6
aXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyPjo6ZGlmZmVyZW5jZV90eXBlCiBfRGlz
dGFuY2VUeXBlOwoKICAgICAgX0Rpc3RhbmNlVHlwZSBfX3RhaWxTaXplID0gX19sYXN0IC0gX19m
aXJzdDsKICAgICAgX0Rpc3RhbmNlVHlwZSBfX3JlbWFpbmRlciA9IF9fY291bnQ7CgogICAgICB3
aGlsZSAoX19yZW1haW5kZXIgPD0gX190YWlsU2l6ZSkKIHsKICAgX19maXJzdCArPSBfX3JlbWFp
bmRlcjsKICAgX190YWlsU2l6ZSAtPSBfX3JlbWFpbmRlcjsKCgogICBfUmFuZG9tQWNjZXNzSXRl
ciBfX2JhY2tUcmFjayA9IF9fZmlyc3Q7CiAgIHdoaWxlIChfX3VuYXJ5X3ByZWQoLS1fX2JhY2tU
cmFjaykpCiAgICAgewogICAgICAgaWYgKC0tX19yZW1haW5kZXIgPT0gMCkKICAgICAgICAgcmV0
dXJuIChfX2ZpcnN0IC0gX19jb3VudCk7CiAgICAgfQogICBfX3JlbWFpbmRlciA9IF9fY291bnQg
KyAxIC0gKF9fZmlyc3QgLSBfX2JhY2tUcmFjayk7CiB9CiAgICAgIHJldHVybiBfX2xhc3Q7CiAg
ICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9JbnRl
Z2VyLAogICAgICAgICAgIHR5cGVuYW1lIF9VbmFyeVByZWRpY2F0ZT4KICAgIF9Gb3J3YXJkSXRl
cmF0b3IKICAgIF9fc2VhcmNoX24oX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0
ZXJhdG9yIF9fbGFzdCwKICAgICAgICBfSW50ZWdlciBfX2NvdW50LAogICAgICAgIF9VbmFyeVBy
ZWRpY2F0ZSBfX3VuYXJ5X3ByZWQpCiAgICB7CiAgICAgIGlmIChfX2NvdW50IDw9IDApCiByZXR1
cm4gX19maXJzdDsKCiAgICAgIGlmIChfX2NvdW50ID09IDEpCiByZXR1cm4gc3RkOjpfX2ZpbmRf
aWYoX19maXJzdCwgX19sYXN0LCBfX3VuYXJ5X3ByZWQpOwoKICAgICAgcmV0dXJuIHN0ZDo6X19z
ZWFyY2hfbl9hdXgoX19maXJzdCwgX19sYXN0LCBfX2NvdW50LCBfX3VuYXJ5X3ByZWQsCiAgICAg
c3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKICAgIH0KCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IxLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMiwKICAg
IHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+CiAgICBfRm9yd2FyZEl0ZXJhdG9yMQogICAgX19m
aW5kX2VuZChfRm9yd2FyZEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyYXRvcjEgX19s
YXN0MSwKICAgICAgICBfRm9yd2FyZEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0ZvcndhcmRJdGVyYXRv
cjIgX19sYXN0MiwKICAgICAgICBmb3J3YXJkX2l0ZXJhdG9yX3RhZywgZm9yd2FyZF9pdGVyYXRv
cl90YWcsCiAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2NvbXApCiAgICB7CiAgICAgIGlmIChf
X2ZpcnN0MiA9PSBfX2xhc3QyKQogcmV0dXJuIF9fbGFzdDE7CgogICAgICBfRm9yd2FyZEl0ZXJh
dG9yMSBfX3Jlc3VsdCA9IF9fbGFzdDE7CiAgICAgIHdoaWxlICgxKQogewogICBfRm9yd2FyZEl0
ZXJhdG9yMSBfX25ld19yZXN1bHQKICAgICA9IHN0ZDo6X19zZWFyY2goX19maXJzdDEsIF9fbGFz
dDEsIF9fZmlyc3QyLCBfX2xhc3QyLCBfX2NvbXApOwogICBpZiAoX19uZXdfcmVzdWx0ID09IF9f
bGFzdDEpCiAgICAgcmV0dXJuIF9fcmVzdWx0OwogICBlbHNlCiAgICAgewogICAgICAgX19yZXN1
bHQgPSBfX25ld19yZXN1bHQ7CiAgICAgICBfX2ZpcnN0MSA9IF9fbmV3X3Jlc3VsdDsKICAgICAg
ICsrX19maXJzdDE7CiAgICAgfQogfQogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGly
ZWN0aW9uYWxJdGVyYXRvcjEsIHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IyLAogICAg
dHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IxCiAg
ICBfX2ZpbmRfZW5kKF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IxIF9fZmlyc3QxLAogICAgICAgIF9C
aWRpcmVjdGlvbmFsSXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVy
YXRvcjIgX19maXJzdDIsCiAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjIgX19sYXN0MiwK
ICAgICAgICBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgYmlkaXJlY3Rpb25hbF9pdGVyYXRv
cl90YWcsCiAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2NvbXApCiAgICB7CgogICAgIAoKICAg
ICAKCgogICAgICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8X0JpZGlyZWN0aW9uYWxJdGVyYXRv
cjE+IF9SZXZJdGVyYXRvcjE7CiAgICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyYXRvcjxfQmlkaXJl
Y3Rpb25hbEl0ZXJhdG9yMj4gX1Jldkl0ZXJhdG9yMjsKCiAgICAgIF9SZXZJdGVyYXRvcjEgX19y
bGFzdDEoX19maXJzdDEpOwogICAgICBfUmV2SXRlcmF0b3IyIF9fcmxhc3QyKF9fZmlyc3QyKTsK
ICAgICAgX1Jldkl0ZXJhdG9yMSBfX3JyZXN1bHQgPSBzdGQ6Ol9fc2VhcmNoKF9SZXZJdGVyYXRv
cjEoX19sYXN0MSksIF9fcmxhc3QxLAogICAgICAgICAgIF9SZXZJdGVyYXRvcjIoX19sYXN0Miks
IF9fcmxhc3QyLAogICAgICAgICAgIF9fY29tcCk7CgogICAgICBpZiAoX19ycmVzdWx0ID09IF9f
cmxhc3QxKQogcmV0dXJuIF9fbGFzdDE7CiAgICAgIGVsc2UKIHsKICAgX0JpZGlyZWN0aW9uYWxJ
dGVyYXRvcjEgX19yZXN1bHQgPSBfX3JyZXN1bHQuYmFzZSgpOwogICBzdGQ6OmFkdmFuY2UoX19y
ZXN1bHQsIC1zdGQ6OmRpc3RhbmNlKF9fZmlyc3QyLCBfX2xhc3QyKSk7CiAgIHJldHVybiBfX3Jl
c3VsdDsKIH0KICAgIH0KIyA0MjMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZvcndhcmRJdGVyYXRvcjEsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IyPgogICAgaW5s
aW5lIF9Gb3J3YXJkSXRlcmF0b3IxCiAgICBmaW5kX2VuZChfRm9yd2FyZEl0ZXJhdG9yMSBfX2Zp
cnN0MSwgX0ZvcndhcmRJdGVyYXRvcjEgX19sYXN0MSwKICAgICAgX0ZvcndhcmRJdGVyYXRvcjIg
X19maXJzdDIsIF9Gb3J3YXJkSXRlcmF0b3IyIF9fbGFzdDIpCiAgICB7CgogICAgIAogICAgIAog
ICAgIAoKCiAgICAgIDsKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19maW5kX2VuZChfX2Zp
cnN0MSwgX19sYXN0MSwgX19maXJzdDIsIF9fbGFzdDIsCiAgICAgICAgc3RkOjpfX2l0ZXJhdG9y
X2NhdGVnb3J5KF9fZmlyc3QxKSwKICAgICAgICBzdGQ6Ol9faXRlcmF0b3JfY2F0ZWdvcnkoX19m
aXJzdDIpLAogICAgICAgIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9lcXVhbF90b19pdGVyKCkp
OwogICAgfQojIDQ3MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9y
d2FyZEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcjIsCiAgICB0eXBlbmFtZSBf
QmluYXJ5UHJlZGljYXRlPgogICAgaW5saW5lIF9Gb3J3YXJkSXRlcmF0b3IxCiAgICBmaW5kX2Vu
ZChfRm9yd2FyZEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyYXRvcjEgX19sYXN0MSwK
ICAgICAgX0ZvcndhcmRJdGVyYXRvcjIgX19maXJzdDIsIF9Gb3J3YXJkSXRlcmF0b3IyIF9fbGFz
dDIsCiAgICAgIF9CaW5hcnlQcmVkaWNhdGUgX19jb21wKQogICAgewoKICAgICAKICAgICAKICAg
ICAKCgogICAgICA7CiAgICAgIDsKCiAgICAgIHJldHVybiBzdGQ6Ol9fZmluZF9lbmQoX19maXJz
dDEsIF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xhc3QyLAogICAgICAgIHN0ZDo6X19pdGVyYXRvcl9j
YXRlZ29yeShfX2ZpcnN0MSksCiAgICAgICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmly
c3QyKSwKICAgICAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfY29tcF9pdGVyKF9fY29tcCkp
OwogICAgfQojIDUwNiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5w
dXRJdGVyYXRvciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIGlubGluZSBib29sCiAgICBhbGxf
b2YoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LCBfUHJlZGlj
YXRlIF9fcHJlZCkKICAgIHsgcmV0dXJuIF9fbGFzdCA9PSBzdGQ6OmZpbmRfaWZfbm90KF9fZmly
c3QsIF9fbGFzdCwgX19wcmVkKTsgfQojIDUyMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIGlubGlu
ZSBib29sCiAgICBub25lX29mKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9y
IF9fbGFzdCwgX1ByZWRpY2F0ZSBfX3ByZWQpCiAgICB7IHJldHVybiBfX2xhc3QgPT0gc3RkOjpm
aW5kX2lmKF9fZmlyc3QsIF9fbGFzdCwgX19wcmVkKTsgfQojIDU0MSAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX1ByZWRpY2F0
ZT4KICAgIGlubGluZSBib29sCiAgICBhbnlfb2YoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lu
cHV0SXRlcmF0b3IgX19sYXN0LCBfUHJlZGljYXRlIF9fcHJlZCkKICAgIHsgcmV0dXJuICFzdGQ6
Om5vbmVfb2YoX19maXJzdCwgX19sYXN0LCBfX3ByZWQpOyB9CiMgNTU2ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28u
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfUHJlZGlj
YXRlPgogICAgaW5saW5lIF9JbnB1dEl0ZXJhdG9yCiAgICBmaW5kX2lmX25vdChfSW5wdXRJdGVy
YXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgX1ByZWRpY2F0ZSBfX3ByZWQp
CiAgICB7CgogICAgIAogICAgIAoKICAgICAgOwogICAgICByZXR1cm4gc3RkOjpfX2ZpbmRfaWZf
bm90KF9fZmlyc3QsIF9fbGFzdCwKICAgIF9fZ251X2N4eDo6X19vcHM6Ol9fcHJlZF9pdGVyKF9f
cHJlZCkpOwogICAgfQojIDU4MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIGlubGluZSBib29sCiAg
ICBpc19wYXJ0aXRpb25lZChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBf
X2xhc3QsCiAgICAgX1ByZWRpY2F0ZSBfX3ByZWQpCiAgICB7CiAgICAgIF9fZmlyc3QgPSBzdGQ6
OmZpbmRfaWZfbm90KF9fZmlyc3QsIF9fbGFzdCwgX19wcmVkKTsKICAgICAgcmV0dXJuIHN0ZDo6
bm9uZV9vZihfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCk7CiAgICB9CiMgNTk4ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2Fs
Z28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9Q
cmVkaWNhdGU+CiAgICBfRm9yd2FyZEl0ZXJhdG9yCiAgICBwYXJ0aXRpb25fcG9pbnQoX0Zvcndh
cmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgX1ByZWRp
Y2F0ZSBfX3ByZWQpCiAgICB7CgogICAgIAogICAgIAoKCgogICAgICA7CgogICAgICB0eXBlZGVm
IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90
eXBlCiBfRGlzdGFuY2VUeXBlOwoKICAgICAgX0Rpc3RhbmNlVHlwZSBfX2xlbiA9IHN0ZDo6ZGlz
dGFuY2UoX19maXJzdCwgX19sYXN0KTsKICAgICAgX0Rpc3RhbmNlVHlwZSBfX2hhbGY7CiAgICAg
IF9Gb3J3YXJkSXRlcmF0b3IgX19taWRkbGU7CgogICAgICB3aGlsZSAoX19sZW4gPiAwKQogewog
ICBfX2hhbGYgPSBfX2xlbiA+PiAxOwogICBfX21pZGRsZSA9IF9fZmlyc3Q7CiAgIHN0ZDo6YWR2
YW5jZShfX21pZGRsZSwgX19oYWxmKTsKICAgaWYgKF9fcHJlZCgqX19taWRkbGUpKQogICAgIHsK
ICAgICAgIF9fZmlyc3QgPSBfX21pZGRsZTsKICAgICAgICsrX19maXJzdDsKICAgICAgIF9fbGVu
ID0gX19sZW4gLSBfX2hhbGYgLSAxOwogICAgIH0KICAgZWxzZQogICAgIF9fbGVuID0gX19oYWxm
OwogfQogICAgICByZXR1cm4gX19maXJzdDsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9J
bnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IsCiAgICB0eXBlbmFtZSBfUHJl
ZGljYXRlPgogICAgX091dHB1dEl0ZXJhdG9yCiAgICBfX3JlbW92ZV9jb3B5X2lmKF9JbnB1dEl0
ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgIF9PdXRwdXRJdGVy
YXRvciBfX3Jlc3VsdCwgX1ByZWRpY2F0ZSBfX3ByZWQpCiAgICB7CiAgICAgIGZvciAoOyBfX2Zp
cnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogaWYgKCFfX3ByZWQoX19maXJzdCkpCiAgIHsKICAg
ICAqX19yZXN1bHQgPSAqX19maXJzdDsKICAgICArK19fcmVzdWx0OwogICB9CiAgICAgIHJldHVy
biBfX3Jlc3VsdDsKICAgIH0KIyA2NjUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUg
X1RwPgogICAgaW5saW5lIF9PdXRwdXRJdGVyYXRvcgogICAgcmVtb3ZlX2NvcHkoX0lucHV0SXRl
cmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogIF9PdXRwdXRJdGVyYXRvciBf
X3Jlc3VsdCwgY29uc3QgX1RwJiBfX3ZhbHVlKQogICAgewoKICAgICAKICAgICAKCiAgICAgCgog
ICAgICA7CgogICAgICByZXR1cm4gc3RkOjpfX3JlbW92ZV9jb3B5X2lmKF9fZmlyc3QsIF9fbGFz
dCwgX19yZXN1bHQsCiBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfZXF1YWxzX3ZhbChfX3ZhbHVl
KSk7CiAgICB9CiMgNjk3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9J
bnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IsCiAgICB0eXBlbmFtZSBfUHJl
ZGljYXRlPgogICAgaW5saW5lIF9PdXRwdXRJdGVyYXRvcgogICAgcmVtb3ZlX2NvcHlfaWYoX0lu
cHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgIF9PdXRwdXRJ
dGVyYXRvciBfX3Jlc3VsdCwgX1ByZWRpY2F0ZSBfX3ByZWQpCiAgICB7CgogICAgIAogICAgIAoK
ICAgICAKCiAgICAgIDsKCiAgICAgIHJldHVybiBzdGQ6Ol9fcmVtb3ZlX2NvcHlfaWYoX19maXJz
dCwgX19sYXN0LCBfX3Jlc3VsdCwKICAgICAgIF9fZ251X2N4eDo6X19vcHM6Ol9fcHJlZF9pdGVy
KF9fcHJlZCkpOwogICAgfQojIDczMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX091dHB1dEl0ZXJhdG9yLAogICAgdHlwZW5h
bWUgX1ByZWRpY2F0ZT4KICAgIF9PdXRwdXRJdGVyYXRvcgogICAgY29weV9pZihfSW5wdXRJdGVy
YXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgX091dHB1dEl0ZXJhdG9y
IF9fcmVzdWx0LCBfUHJlZGljYXRlIF9fcHJlZCkKICAgIHsKCiAgICAgCiAgICAgCgogICAgIAoK
ICAgICAgOwoKICAgICAgZm9yICg7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiBpZiAo
X19wcmVkKCpfX2ZpcnN0KSkKICAgewogICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogICAgICsr
X19yZXN1bHQ7CiAgIH0KICAgICAgcmV0dXJuIF9fcmVzdWx0OwogICAgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX1NpemUsIHR5cGVuYW1lIF9PdXRwdXRJ
dGVyYXRvcj4KICAgIF9PdXRwdXRJdGVyYXRvcgogICAgX19jb3B5X24oX0lucHV0SXRlcmF0b3Ig
X19maXJzdCwgX1NpemUgX19uLAogICAgICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQsIGlucHV0
X2l0ZXJhdG9yX3RhZykKICAgIHsKICAgICAgaWYgKF9fbiA+IDApCiB7CiAgIHdoaWxlICh0cnVl
KQogICAgIHsKICAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogICAgICAgKytfX3Jlc3VsdDsK
ICAgICAgIGlmICgtLV9fbiA+IDApCiAgKytfX2ZpcnN0OwogICAgICAgZWxzZQogIGJyZWFrOwog
ICAgIH0KIH0KICAgICAgcmV0dXJuIF9fcmVzdWx0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9TaXplLAogICAgdHlwZW5hbWUgX091
dHB1dEl0ZXJhdG9yPgogICAgaW5saW5lIF9PdXRwdXRJdGVyYXRvcgogICAgX19jb3B5X24oX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9TaXplIF9fbiwKICAgICAgX091dHB1dEl0ZXJh
dG9yIF9fcmVzdWx0LCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykKICAgIHsgcmV0dXJuIHN0
ZDo6Y29weShfX2ZpcnN0LCBfX2ZpcnN0ICsgX19uLCBfX3Jlc3VsdCk7IH0KIyA3OTQgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9z
dGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1l
IF9TaXplLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+CiAgICBpbmxpbmUgX091dHB1dEl0ZXJh
dG9yCiAgICBjb3B5X24oX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX1NpemUgX19uLCBfT3V0cHV0
SXRlcmF0b3IgX19yZXN1bHQpCiAgICB7CgogICAgIAogICAgIAoKCiAgICAgIHJldHVybiBzdGQ6
Ol9fY29weV9uKF9fZmlyc3QsIF9fbiwgX19yZXN1bHQsCiAgICAgIHN0ZDo6X19pdGVyYXRvcl9j
YXRlZ29yeShfX2ZpcnN0KSk7CiAgICB9CiMgODIyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBs
YXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IxLAog
ICAgdHlwZW5hbWUgX091dHB1dEl0ZXJhdG9yMiwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIHBh
aXI8X091dHB1dEl0ZXJhdG9yMSwgX091dHB1dEl0ZXJhdG9yMj4KICAgIHBhcnRpdGlvbl9jb3B5
KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICBfT3V0
cHV0SXRlcmF0b3IxIF9fb3V0X3RydWUsIF9PdXRwdXRJdGVyYXRvcjIgX19vdXRfZmFsc2UsCiAg
ICAgX1ByZWRpY2F0ZSBfX3ByZWQpCiAgICB7CgogICAgIAogICAgIAoKICAgICAKCiAgICAgCgog
ICAgICA7CgogICAgICBmb3IgKDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKIGlmIChf
X3ByZWQoKl9fZmlyc3QpKQogICB7CiAgICAgKl9fb3V0X3RydWUgPSAqX19maXJzdDsKICAgICAr
K19fb3V0X3RydWU7CiAgIH0KIGVsc2UKICAgewogICAgICpfX291dF9mYWxzZSA9ICpfX2ZpcnN0
OwogICAgICsrX19vdXRfZmFsc2U7CiAgIH0KCiAgICAgIHJldHVybiBwYWlyPF9PdXRwdXRJdGVy
YXRvcjEsIF9PdXRwdXRJdGVyYXRvcjI+KF9fb3V0X3RydWUsIF9fb3V0X2ZhbHNlKTsKICAgIH0K
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9QcmVkaWNh
dGU+CiAgICBfRm9yd2FyZEl0ZXJhdG9yCiAgICBfX3JlbW92ZV9pZihfRm9yd2FyZEl0ZXJhdG9y
IF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogIF9QcmVkaWNhdGUgX19wcmVkKQog
ICAgewogICAgICBfX2ZpcnN0ID0gc3RkOjpfX2ZpbmRfaWYoX19maXJzdCwgX19sYXN0LCBfX3By
ZWQpOwogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiAgICAgICAgcmV0dXJuIF9fZmlyc3Q7
CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19yZXN1bHQgPSBfX2ZpcnN0OwogICAgICArK19fZmly
c3Q7CiAgICAgIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgICAgIGlm
ICghX19wcmVkKF9fZmlyc3QpKQogICAgICAgICAgewogICAgICAgICAgICAqX19yZXN1bHQgPSBz
dGQ6Om1vdmUoKl9fZmlyc3QpOwogICAgICAgICAgICArK19fcmVzdWx0OwogICAgICAgICAgfQog
ICAgICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CiMgODkxICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRl
bXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9UcD4KICAgIGlubGlu
ZSBfRm9yd2FyZEl0ZXJhdG9yCiAgICByZW1vdmUoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBf
Rm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgIGNvbnN0IF9UcCYgX192YWx1ZSkKICAgIHsKCiAg
ICAgCgogICAgIAoKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19yZW1vdmVfaWYoX19maXJz
dCwgX19sYXN0LAogIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9lcXVhbHNfdmFsKF9fdmFsdWUp
KTsKICAgIH0KIyA5MjQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zv
cndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIGlubGluZSBfRm9yd2FyZEl0
ZXJhdG9yCiAgICByZW1vdmVfaWYoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0
ZXJhdG9yIF9fbGFzdCwKICAgICAgIF9QcmVkaWNhdGUgX19wcmVkKQogICAgewoKICAgICAKCiAg
ICAgCgogICAgICA7CgogICAgICByZXR1cm4gc3RkOjpfX3JlbW92ZV9pZihfX2ZpcnN0LCBfX2xh
c3QsCiAgICAgICAgIF9fZ251X2N4eDo6X19vcHM6Ol9fcHJlZF9pdGVyKF9fcHJlZCkpOwogICAg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfQmluYXJ5
UHJlZGljYXRlPgogICAgX0ZvcndhcmRJdGVyYXRvcgogICAgX19hZGphY2VudF9maW5kKF9Gb3J3
YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgIF9CaW5h
cnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCkKICAgIHsKICAgICAgaWYgKF9fZmlyc3QgPT0gX19s
YXN0KQogcmV0dXJuIF9fbGFzdDsKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX25leHQgPSBfX2Zp
cnN0OwogICAgICB3aGlsZSAoKytfX25leHQgIT0gX19sYXN0KQogewogICBpZiAoX19iaW5hcnlf
cHJlZChfX2ZpcnN0LCBfX25leHQpKQogICAgIHJldHVybiBfX2ZpcnN0OwogICBfX2ZpcnN0ID0g
X19uZXh0OwogfQogICAgICByZXR1cm4gX19sYXN0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAgX0Zvcndh
cmRJdGVyYXRvcgogICAgX191bmlxdWUoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2Fy
ZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkKQog
ICAgewoKICAgICAgX19maXJzdCA9IHN0ZDo6X19hZGphY2VudF9maW5kKF9fZmlyc3QsIF9fbGFz
dCwgX19iaW5hcnlfcHJlZCk7CiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKIHJldHVybiBf
X2xhc3Q7CgoKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2Rlc3QgPSBfX2ZpcnN0OwogICAgICAr
K19fZmlyc3Q7CiAgICAgIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0KQogaWYgKCFfX2JpbmFy
eV9wcmVkKF9fZGVzdCwgX19maXJzdCkpCiAgICorK19fZGVzdCA9IHN0ZDo6bW92ZSgqX19maXJz
dCk7CiAgICAgIHJldHVybiArK19fZGVzdDsKICAgIH0KIyA5OTAgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnby5oIiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcj4KICAgIGlubGluZSBfRm9yd2Fy
ZEl0ZXJhdG9yCiAgICB1bmlxdWUoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0
ZXJhdG9yIF9fbGFzdCkKICAgIHsKCiAgICAgCgogICAgIAoKICAgICAgOwoKICAgICAgcmV0dXJu
IHN0ZDo6X191bmlxdWUoX19maXJzdCwgX19sYXN0LAogICAgICBfX2dudV9jeHg6Ol9fb3BzOjpf
X2l0ZXJfZXF1YWxfdG9faXRlcigpKTsKICAgIH0KIyAxMDIwICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwog
IHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9CaW5hcnlQcmVk
aWNhdGU+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyYXRvcgogICAgdW5pcXVlKF9Gb3J3YXJkSXRl
cmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgX0JpbmFy
eVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkKQogICAgewoKICAgICAKCiAgICAgCgoKICAgICAgOwoK
ICAgICAgcmV0dXJuIHN0ZDo6X191bmlxdWUoX19maXJzdCwgX19sYXN0LAogICAgICBfX2dudV9j
eHg6Ol9fb3BzOjpfX2l0ZXJfY29tcF9pdGVyKF9fYmluYXJ5X3ByZWQpKTsKICAgIH0KCgoKCgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX091dHB1dEl0
ZXJhdG9yLAogICAgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAgIF9PdXRwdXRJdGVyYXRv
cgogICAgX191bmlxdWVfY29weShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRl
cmF0b3IgX19sYXN0LAogICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LCBfQmluYXJ5UHJlZGlj
YXRlIF9fYmluYXJ5X3ByZWQsCiAgICBmb3J3YXJkX2l0ZXJhdG9yX3RhZywgb3V0cHV0X2l0ZXJh
dG9yX3RhZykKICAgIHsKCiAgICAgCgoKCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19uZXh0ID0g
X19maXJzdDsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Q7CiAgICAgIHdoaWxlICgrK19fbmV4
dCAhPSBfX2xhc3QpCiBpZiAoIV9fYmluYXJ5X3ByZWQoX19maXJzdCwgX19uZXh0KSkKICAgewog
ICAgIF9fZmlyc3QgPSBfX25leHQ7CiAgICAgKisrX19yZXN1bHQgPSAqX19maXJzdDsKICAgfQog
ICAgICByZXR1cm4gKytfX3Jlc3VsdDsKICAgIH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwKICAgIHR5cGVuYW1lIF9C
aW5hcnlQcmVkaWNhdGU+CiAgICBfT3V0cHV0SXRlcmF0b3IKICAgIF9fdW5pcXVlX2NvcHkoX0lu
cHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgX091dHB1dEl0
ZXJhdG9yIF9fcmVzdWx0LCBfQmluYXJ5UHJlZGljYXRlIF9fYmluYXJ5X3ByZWQsCiAgICBpbnB1
dF9pdGVyYXRvcl90YWcsIG91dHB1dF9pdGVyYXRvcl90YWcpCiAgICB7CgogICAgIAoKCgogICAg
ICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcmF0b3I+Ojp2YWx1ZV90eXBlIF9f
dmFsdWUgPSAqX19maXJzdDsKICAgICAgX19kZWNsdHlwZShfX2dudV9jeHg6Ol9fb3BzOjpfX2l0
ZXJfY29tcF92YWwoX19iaW5hcnlfcHJlZCkpCiBfX3JlYm91bmRfcHJlZAogPSBfX2dudV9jeHg6
Ol9fb3BzOjpfX2l0ZXJfY29tcF92YWwoX19iaW5hcnlfcHJlZCk7CiAgICAgICpfX3Jlc3VsdCA9
IF9fdmFsdWU7CiAgICAgIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0KQogaWYgKCFfX3JlYm91
bmRfcHJlZChfX2ZpcnN0LCBfX3ZhbHVlKSkKICAgewogICAgIF9fdmFsdWUgPSAqX19maXJzdDsK
ICAgICAqKytfX3Jlc3VsdCA9IF9fdmFsdWU7CiAgIH0KICAgICAgcmV0dXJuICsrX19yZXN1bHQ7
CiAgICB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAgIF9G
b3J3YXJkSXRlcmF0b3IKICAgIF9fdW5pcXVlX2NvcHkoX0lucHV0SXRlcmF0b3IgX19maXJzdCwg
X0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgX0ZvcndhcmRJdGVyYXRvciBfX3Jlc3VsdCwgX0Jp
bmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkLAogICAgaW5wdXRfaXRlcmF0b3JfdGFnLCBmb3J3
YXJkX2l0ZXJhdG9yX3RhZykKICAgIHsKCiAgICAgCgoKICAgICAgKl9fcmVzdWx0ID0gKl9fZmly
c3Q7CiAgICAgIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0KQogaWYgKCFfX2JpbmFyeV9wcmVk
KF9fcmVzdWx0LCBfX2ZpcnN0KSkKICAgKisrX19yZXN1bHQgPSAqX19maXJzdDsKICAgICAgcmV0
dXJuICsrX19yZXN1bHQ7CiAgICB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0
aW9uYWxJdGVyYXRvcj4KICAgIHZvaWQKICAgIF9fcmV2ZXJzZShfQmlkaXJlY3Rpb25hbEl0ZXJh
dG9yIF9fZmlyc3QsIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19sYXN0LAogICAgICAgYmlkaXJl
Y3Rpb25hbF9pdGVyYXRvcl90YWcpCiAgICB7CiAgICAgIHdoaWxlICh0cnVlKQogaWYgKF9fZmly
c3QgPT0gX19sYXN0IHx8IF9fZmlyc3QgPT0gLS1fX2xhc3QpCiAgIHJldHVybjsKIGVsc2UKICAg
ewogICAgIHN0ZDo6aXRlcl9zd2FwKF9fZmlyc3QsIF9fbGFzdCk7CiAgICAgKytfX2ZpcnN0Owog
ICB9CiAgICB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
PgogICAgdm9pZAogICAgX19yZXZlcnNlKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRv
cl90YWcpCiAgICB7CiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKIHJldHVybjsKICAgICAg
LS1fX2xhc3Q7CiAgICAgIHdoaWxlIChfX2ZpcnN0IDwgX19sYXN0KQogewogICBzdGQ6Oml0ZXJf
c3dhcChfX2ZpcnN0LCBfX2xhc3QpOwogICArK19fZmlyc3Q7CiAgIC0tX19sYXN0OwogfQogICAg
fQojIDExNzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0
aW9uYWxJdGVyYXRvcj4KICAgIGlubGluZSB2b2lkCiAgICByZXZlcnNlKF9CaWRpcmVjdGlvbmFs
SXRlcmF0b3IgX19maXJzdCwgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2xhc3QpCiAgICB7Cgog
ICAgIAoKICAgICAgOwogICAgICBzdGQ6Ol9fcmV2ZXJzZShfX2ZpcnN0LCBfX2xhc3QsIHN0ZDo6
X19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7CiAgICB9CiMgMTIwMiAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdv
LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCB0eXBlbmFt
ZSBfT3V0cHV0SXRlcmF0b3I+CiAgICBfT3V0cHV0SXRlcmF0b3IKICAgIHJldmVyc2VfY29weShf
QmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fZmlyc3QsIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19s
YXN0LAogICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQpCiAgICB7CgogICAgIAoKICAgICAKCiAg
ICAgIDsKCiAgICAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkKIHsKICAgLS1fX2xhc3Q7CiAg
ICpfX3Jlc3VsdCA9ICpfX2xhc3Q7CiAgICsrX19yZXN1bHQ7CiB9CiAgICAgIHJldHVybiBfX3Jl
c3VsdDsKICAgIH0KCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9FdWNsaWRlYW5SaW5nRWxlbWVu
dD4KICAgIF9FdWNsaWRlYW5SaW5nRWxlbWVudAogICAgX19nY2QoX0V1Y2xpZGVhblJpbmdFbGVt
ZW50IF9fbSwgX0V1Y2xpZGVhblJpbmdFbGVtZW50IF9fbikKICAgIHsKICAgICAgd2hpbGUgKF9f
biAhPSAwKQogewogICBfRXVjbGlkZWFuUmluZ0VsZW1lbnQgX190ID0gX19tICUgX19uOwogICBf
X20gPSBfX247CiAgIF9fbiA9IF9fdDsKIH0KICAgICAgcmV0dXJuIF9fbTsKICAgIH0KCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICB2b2lkCiAgICBfX3JvdGF0ZShf
Rm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19taWRkbGUs
CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICBmb3J3YXJkX2l0ZXJhdG9yX3Rh
ZykKICAgIHsKICAgICAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUgfHwgX19sYXN0ID09IF9fbWlk
ZGxlKQogcmV0dXJuOwoKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0MiA9IF9fbWlkZGxl
OwogICAgICBkbwogewogICBzdGQ6Oml0ZXJfc3dhcChfX2ZpcnN0LCBfX2ZpcnN0Mik7CiAgICsr
X19maXJzdDsKICAgKytfX2ZpcnN0MjsKICAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUpCiAgICAg
X19taWRkbGUgPSBfX2ZpcnN0MjsKIH0KICAgICAgd2hpbGUgKF9fZmlyc3QyICE9IF9fbGFzdCk7
CgogICAgICBfX2ZpcnN0MiA9IF9fbWlkZGxlOwoKICAgICAgd2hpbGUgKF9fZmlyc3QyICE9IF9f
bGFzdCkKIHsKICAgc3RkOjppdGVyX3N3YXAoX19maXJzdCwgX19maXJzdDIpOwogICArK19fZmly
c3Q7CiAgICsrX19maXJzdDI7CiAgIGlmIChfX2ZpcnN0ID09IF9fbWlkZGxlKQogICAgIF9fbWlk
ZGxlID0gX19maXJzdDI7CiAgIGVsc2UgaWYgKF9fZmlyc3QyID09IF9fbGFzdCkKICAgICBfX2Zp
cnN0MiA9IF9fbWlkZGxlOwogfQogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0
aW9uYWxJdGVyYXRvcj4KICAgIHZvaWQKICAgIF9fcm90YXRlKF9CaWRpcmVjdGlvbmFsSXRlcmF0
b3IgX19maXJzdCwKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX21pZGRsZSwKICAgICAg
X0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2xhc3QsCiAgICAgICBiaWRpcmVjdGlvbmFsX2l0ZXJh
dG9yX3RhZykKICAgIHsKCiAgICAgCgoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUgfHwg
X19sYXN0ID09IF9fbWlkZGxlKQogcmV0dXJuOwoKICAgICAgc3RkOjpfX3JldmVyc2UoX19maXJz
dCwgX19taWRkbGUsIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKCkpOwogICAgICBzdGQ6Ol9f
cmV2ZXJzZShfX21pZGRsZSwgX19sYXN0LCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZygpKTsK
CiAgICAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbWlkZGxlICYmIF9fbWlkZGxlICE9IF9fbGFzdCkK
IHsKICAgc3RkOjppdGVyX3N3YXAoX19maXJzdCwgLS1fX2xhc3QpOwogICArK19fZmlyc3Q7CiB9
CgogICAgICBpZiAoX19maXJzdCA9PSBfX21pZGRsZSkKIHN0ZDo6X19yZXZlcnNlKF9fbWlkZGxl
LCBfX2xhc3QsIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKCkpOwogICAgICBlbHNlCiBzdGQ6
Ol9fcmV2ZXJzZShfX2ZpcnN0LCBfX21pZGRsZSwgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWco
KSk7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+CiAg
ICB2b2lkCiAgICBfX3JvdGF0ZShfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbWlkZGxlLAogICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0
b3IgX19sYXN0LAogICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykKICAgIHsKCiAgICAg
CgoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUgfHwgX19sYXN0ID09IF9fbWlkZGxlKQog
cmV0dXJuOwoKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiBfRGlzdGFuY2U7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5
cGUKIF9WYWx1ZVR5cGU7CgogICAgICBfRGlzdGFuY2UgX19uID0gX19sYXN0IC0gX19maXJzdDsK
ICAgICAgX0Rpc3RhbmNlIF9fayA9IF9fbWlkZGxlIC0gX19maXJzdDsKCiAgICAgIGlmIChfX2sg
PT0gX19uIC0gX19rKQogewogICBzdGQ6OnN3YXBfcmFuZ2VzKF9fZmlyc3QsIF9fbWlkZGxlLCBf
X21pZGRsZSk7CiAgIHJldHVybjsKIH0KCiAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX3Ag
PSBfX2ZpcnN0OwoKICAgICAgZm9yICg7OykKIHsKICAgaWYgKF9fayA8IF9fbiAtIF9faykKICAg
ICB7CiAgICAgICBpZiAoX19pc19wb2QoX1ZhbHVlVHlwZSkgJiYgX19rID09IDEpCiAgewogICAg
X1ZhbHVlVHlwZSBfX3QgPSBzdGQ6Om1vdmUoKl9fcCk7CiAgICBzdGQ6Om1vdmUoX19wICsgMSwg
X19wICsgX19uLCBfX3ApOwogICAgKihfX3AgKyBfX24gLSAxKSA9IHN0ZDo6bW92ZShfX3QpOwog
ICAgcmV0dXJuOwogIH0KICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX3EgPSBfX3AgKyBf
X2s7CiAgICAgICBmb3IgKF9EaXN0YW5jZSBfX2kgPSAwOyBfX2kgPCBfX24gLSBfX2s7ICsrIF9f
aSkKICB7CiAgICBzdGQ6Oml0ZXJfc3dhcChfX3AsIF9fcSk7CiAgICArK19fcDsKICAgICsrX19x
OwogIH0KICAgICAgIF9fbiAlPSBfX2s7CiAgICAgICBpZiAoX19uID09IDApCiAgcmV0dXJuOwog
ICAgICAgc3RkOjpzd2FwKF9fbiwgX19rKTsKICAgICAgIF9fayA9IF9fbiAtIF9fazsKICAgICB9
CiAgIGVsc2UKICAgICB7CiAgICAgICBfX2sgPSBfX24gLSBfX2s7CiAgICAgICBpZiAoX19pc19w
b2QoX1ZhbHVlVHlwZSkgJiYgX19rID09IDEpCiAgewogICAgX1ZhbHVlVHlwZSBfX3QgPSBzdGQ6
Om1vdmUoKihfX3AgKyBfX24gLSAxKSk7CiAgICBzdGQ6Om1vdmVfYmFja3dhcmQoX19wLCBfX3Ag
KyBfX24gLSAxLCBfX3AgKyBfX24pOwogICAgKl9fcCA9IHN0ZDo6bW92ZShfX3QpOwogICAgcmV0
dXJuOwogIH0KICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX3EgPSBfX3AgKyBfX247CiAg
ICAgICBfX3AgPSBfX3EgLSBfX2s7CiAgICAgICBmb3IgKF9EaXN0YW5jZSBfX2kgPSAwOyBfX2kg
PCBfX24gLSBfX2s7ICsrIF9faSkKICB7CiAgICAtLV9fcDsKICAgIC0tX19xOwogICAgc3RkOjpp
dGVyX3N3YXAoX19wLCBfX3EpOwogIH0KICAgICAgIF9fbiAlPSBfX2s7CiAgICAgICBpZiAoX19u
ID09IDApCiAgcmV0dXJuOwogICAgICAgc3RkOjpzd2FwKF9fbiwgX19rKTsKICAgICB9CiB9CiAg
ICB9CiMgMTQwOCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2Fy
ZEl0ZXJhdG9yPgogICAgaW5saW5lIHZvaWQKICAgIHJvdGF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9f
Zmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19taWRkbGUsCiAgICBfRm9yd2FyZEl0ZXJhdG9yIF9f
bGFzdCkKICAgIHsKCiAgICAgCgogICAgICA7CiAgICAgIDsKCiAgICAgIHN0ZDo6X19yb3RhdGUo
X19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwKICAgICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5
KF9fZmlyc3QpKTsKICAgIH0KIyAxNDQzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvcj4KICAgIGlu
bGluZSBfT3V0cHV0SXRlcmF0b3IKICAgIHJvdGF0ZV9jb3B5KF9Gb3J3YXJkSXRlcmF0b3IgX19m
aXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX21pZGRsZSwKICAgICAgICAgICAgICAgIF9Gb3J3YXJk
SXRlcmF0b3IgX19sYXN0LCBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQpCiAgICB7CgogICAgIAog
ICAgIAoKICAgICAgOwogICAgICA7CgogICAgICByZXR1cm4gc3RkOjpjb3B5KF9fZmlyc3QsIF9f
bWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Y29weShfX21pZGRsZSwgX19sYXN0
LCBfX3Jlc3VsdCkpOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRv
ciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIF9fcGFydGl0
aW9uKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAg
X1ByZWRpY2F0ZSBfX3ByZWQsIGZvcndhcmRfaXRlcmF0b3JfdGFnKQogICAgewogICAgICBpZiAo
X19maXJzdCA9PSBfX2xhc3QpCiByZXR1cm4gX19maXJzdDsKCiAgICAgIHdoaWxlIChfX3ByZWQo
Kl9fZmlyc3QpKQogaWYgKCsrX19maXJzdCA9PSBfX2xhc3QpCiAgIHJldHVybiBfX2ZpcnN0OwoK
ICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX25leHQgPSBfX2ZpcnN0OwoKICAgICAgd2hpbGUgKCsr
X19uZXh0ICE9IF9fbGFzdCkKIGlmIChfX3ByZWQoKl9fbmV4dCkpCiAgIHsKICAgICBzdGQ6Oml0
ZXJfc3dhcChfX2ZpcnN0LCBfX25leHQpOwogICAgICsrX19maXJzdDsKICAgfQoKICAgICAgcmV0
dXJuIF9fZmlyc3Q7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0
ZXJhdG9yLCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcgog
ICAgX19wYXJ0aXRpb24oX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2ZpcnN0LCBfQmlkaXJlY3Rp
b25hbEl0ZXJhdG9yIF9fbGFzdCwKICBfUHJlZGljYXRlIF9fcHJlZCwgYmlkaXJlY3Rpb25hbF9p
dGVyYXRvcl90YWcpCiAgICB7CiAgICAgIHdoaWxlICh0cnVlKQogewogICB3aGlsZSAodHJ1ZSkK
ICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiAgICAgICByZXR1cm4gX19maXJzdDsKICAgICBl
bHNlIGlmIChfX3ByZWQoKl9fZmlyc3QpKQogICAgICAgKytfX2ZpcnN0OwogICAgIGVsc2UKICAg
ICAgIGJyZWFrOwogICAtLV9fbGFzdDsKICAgd2hpbGUgKHRydWUpCiAgICAgaWYgKF9fZmlyc3Qg
PT0gX19sYXN0KQogICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICAgZWxzZSBpZiAoIWJvb2woX19w
cmVkKCpfX2xhc3QpKSkKICAgICAgIC0tX19sYXN0OwogICAgIGVsc2UKICAgICAgIGJyZWFrOwog
ICBzdGQ6Oml0ZXJfc3dhcChfX2ZpcnN0LCBfX2xhc3QpOwogICArK19fZmlyc3Q7CiB9CiAgICB9
CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1By
ZWRpY2F0ZSwgdHlwZW5hbWUgX0Rpc3RhbmNlPgogICAgX0ZvcndhcmRJdGVyYXRvcgogICAgX19p
bnBsYWNlX3N0YWJsZV9wYXJ0aXRpb24oX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LAogICAgICAg
ICAgX1ByZWRpY2F0ZSBfX3ByZWQsIF9EaXN0YW5jZSBfX2xlbikKICAgIHsKICAgICAgaWYgKF9f
bGVuID09IDEpCiByZXR1cm4gX19maXJzdDsKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX21pZGRs
ZSA9IF9fZmlyc3Q7CiAgICAgIHN0ZDo6YWR2YW5jZShfX21pZGRsZSwgX19sZW4gLyAyKTsKICAg
ICAgX0ZvcndhcmRJdGVyYXRvciBfX2xlZnRfc3BsaXQgPQogc3RkOjpfX2lucGxhY2Vfc3RhYmxl
X3BhcnRpdGlvbihfX2ZpcnN0LCBfX3ByZWQsIF9fbGVuIC8gMik7CgoKICAgICAgX0Rpc3RhbmNl
IF9fcmlnaHRfbGVuID0gX19sZW4gLSBfX2xlbiAvIDI7CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3Ig
X19yaWdodF9zcGxpdCA9CiBzdGQ6Ol9fZmluZF9pZl9ub3RfbihfX21pZGRsZSwgX19yaWdodF9s
ZW4sIF9fcHJlZCk7CiAgICAgIGlmIChfX3JpZ2h0X2xlbikKIF9fcmlnaHRfc3BsaXQgPSBzdGQ6
Ol9faW5wbGFjZV9zdGFibGVfcGFydGl0aW9uKF9fbWlkZGxlLAogICAgICAgX19wcmVkLAogICAg
ICAgX19yaWdodF9sZW4pOwogICAgICBzdGQ6OnJvdGF0ZShfX2xlZnRfc3BsaXQsIF9fbWlkZGxl
LCBfX3JpZ2h0X3NwbGl0KTsKICAgICAgc3RkOjphZHZhbmNlKF9fbGVmdF9zcGxpdCwgc3RkOjpk
aXN0YW5jZShfX21pZGRsZSwgX19yaWdodF9zcGxpdCkpOwogICAgICByZXR1cm4gX19sZWZ0X3Nw
bGl0OwogICAgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0
eXBlbmFtZSBfUG9pbnRlciwgdHlwZW5hbWUgX1ByZWRpY2F0ZSwKICAgIHR5cGVuYW1lIF9EaXN0
YW5jZT4KICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIF9fc3RhYmxlX3BhcnRpdGlvbl9hZGFwdGl2
ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsCiAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwK
ICAgIF9QcmVkaWNhdGUgX19wcmVkLCBfRGlzdGFuY2UgX19sZW4sCiAgICBfUG9pbnRlciBfX2J1
ZmZlciwKICAgIF9EaXN0YW5jZSBfX2J1ZmZlcl9zaXplKQogICAgewogICAgICBpZiAoX19sZW4g
PD0gX19idWZmZXJfc2l6ZSkKIHsKICAgX0ZvcndhcmRJdGVyYXRvciBfX3Jlc3VsdDEgPSBfX2Zp
cnN0OwogICBfUG9pbnRlciBfX3Jlc3VsdDIgPSBfX2J1ZmZlcjsKCgoKICAgKl9fcmVzdWx0MiA9
IHN0ZDo6bW92ZSgqX19maXJzdCk7CiAgICsrX19yZXN1bHQyOwogICArK19fZmlyc3Q7CiAgIGZv
ciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgIGlmIChfX3ByZWQoX19maXJz
dCkpCiAgICAgICB7CiAgKl9fcmVzdWx0MSA9IHN0ZDo6bW92ZSgqX19maXJzdCk7CiAgKytfX3Jl
c3VsdDE7CiAgICAgICB9CiAgICAgZWxzZQogICAgICAgewogICpfX3Jlc3VsdDIgPSBzdGQ6Om1v
dmUoKl9fZmlyc3QpOwogICsrX19yZXN1bHQyOwogICAgICAgfQogICBzdGQ6Om1vdmUoX19idWZm
ZXIsIF9fcmVzdWx0MiwgX19yZXN1bHQxKTsKICAgcmV0dXJuIF9fcmVzdWx0MTsKIH0KICAgICAg
ZWxzZQogewogICBfRm9yd2FyZEl0ZXJhdG9yIF9fbWlkZGxlID0gX19maXJzdDsKICAgc3RkOjph
ZHZhbmNlKF9fbWlkZGxlLCBfX2xlbiAvIDIpOwogICBfRm9yd2FyZEl0ZXJhdG9yIF9fbGVmdF9z
cGxpdCA9CiAgICAgc3RkOjpfX3N0YWJsZV9wYXJ0aXRpb25fYWRhcHRpdmUoX19maXJzdCwgX19t
aWRkbGUsIF9fcHJlZCwKICAgICAgICAgIF9fbGVuIC8gMiwgX19idWZmZXIsCiAgICAgICAgICBf
X2J1ZmZlcl9zaXplKTsKCgogICBfRGlzdGFuY2UgX19yaWdodF9sZW4gPSBfX2xlbiAtIF9fbGVu
IC8gMjsKICAgX0ZvcndhcmRJdGVyYXRvciBfX3JpZ2h0X3NwbGl0ID0KICAgICBzdGQ6Ol9fZmlu
ZF9pZl9ub3RfbihfX21pZGRsZSwgX19yaWdodF9sZW4sIF9fcHJlZCk7CiAgIGlmIChfX3JpZ2h0
X2xlbikKICAgICBfX3JpZ2h0X3NwbGl0ID0KICAgICAgIHN0ZDo6X19zdGFibGVfcGFydGl0aW9u
X2FkYXB0aXZlKF9fcmlnaHRfc3BsaXQsIF9fbGFzdCwgX19wcmVkLAogICAgICAgICAgICBfX3Jp
Z2h0X2xlbiwKICAgICAgICAgICAgX19idWZmZXIsIF9fYnVmZmVyX3NpemUpOwogICBzdGQ6OnJv
dGF0ZShfX2xlZnRfc3BsaXQsIF9fbWlkZGxlLCBfX3JpZ2h0X3NwbGl0KTsKICAgc3RkOjphZHZh
bmNlKF9fbGVmdF9zcGxpdCwgc3RkOjpkaXN0YW5jZShfX21pZGRsZSwgX19yaWdodF9zcGxpdCkp
OwogICByZXR1cm4gX19sZWZ0X3NwbGl0OwogfQogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Rm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgX0ZvcndhcmRJdGVyYXRv
cgogICAgX19zdGFibGVfcGFydGl0aW9uKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0Zvcndh
cmRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgIF9QcmVkaWNhdGUgX19wcmVkKQogICAgewogICAg
ICBfX2ZpcnN0ID0gc3RkOjpfX2ZpbmRfaWZfbm90KF9fZmlyc3QsIF9fbGFzdCwgX19wcmVkKTsK
CiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKIHJldHVybiBfX2ZpcnN0OwoKICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5
cGUKIF9WYWx1ZVR5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9G
b3J3YXJkSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKIF9EaXN0YW5jZVR5cGU7CgogICAgICBf
VGVtcG9yYXJ5X2J1ZmZlcjxfRm9yd2FyZEl0ZXJhdG9yLCBfVmFsdWVUeXBlPiBfX2J1ZihfX2Zp
cnN0LCBfX2xhc3QpOwogICAgICBpZiAoX19idWYuc2l6ZSgpID4gMCkKIHJldHVybgogICBzdGQ6
Ol9fc3RhYmxlX3BhcnRpdGlvbl9hZGFwdGl2ZShfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCwKICAg
ICAgICBfRGlzdGFuY2VUeXBlKF9fYnVmLnJlcXVlc3RlZF9zaXplKCkpLAogICAgICAgIF9fYnVm
LmJlZ2luKCksCiAgICAgICAgX0Rpc3RhbmNlVHlwZShfX2J1Zi5zaXplKCkpKTsKICAgICAgZWxz
ZQogcmV0dXJuCiAgIHN0ZDo6X19pbnBsYWNlX3N0YWJsZV9wYXJ0aXRpb24oX19maXJzdCwgX19w
cmVkLAogICAgICAgX0Rpc3RhbmNlVHlwZShfX2J1Zi5yZXF1ZXN0ZWRfc2l6ZSgpKSk7CiAgICB9
CiMgMTY1MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0
ZXJhdG9yLCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgaW5saW5lIF9Gb3J3YXJkSXRlcmF0b3IK
ICAgIHN0YWJsZV9wYXJ0aXRpb24oX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0
ZXJhdG9yIF9fbGFzdCwKICAgICAgIF9QcmVkaWNhdGUgX19wcmVkKQogICAgewoKICAgICAKCiAg
ICAgCgogICAgICA7CgogICAgICByZXR1cm4gc3RkOjpfX3N0YWJsZV9wYXJ0aXRpb24oX19maXJz
dCwgX19sYXN0LAogICAgICAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX3ByZWRfaXRlcihfX3ByZWQp
KTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlw
ZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX2hlYXBfc2VsZWN0KF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciBfX2ZpcnN0LAogICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbWlkZGxlLAogICAg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKQogICAgewogICAg
ICBzdGQ6Ol9fbWFrZV9oZWFwKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2NvbXApOwogICAgICBmb3Ig
KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2kgPSBfX21pZGRsZTsgX19pIDwgX19sYXN0OyArK19f
aSkKIGlmIChfX2NvbXAoX19pLCBfX2ZpcnN0KSkKICAgc3RkOjpfX3BvcF9oZWFwKF9fZmlyc3Qs
IF9fbWlkZGxlLCBfX2ksIF9fY29tcCk7CiAgICB9CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lu
cHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwKICAgIHR5cGVuYW1l
IF9Db21wYXJlPgogICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yCiAgICBfX3BhcnRpYWxfc29ydF9j
b3B5KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yIF9fcmVzdWx0X2ZpcnN0LAogICBfUmFuZG9tQWNjZXNzSXRlcmF0
b3IgX19yZXN1bHRfbGFzdCwKICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB0eXBlZGVm
IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9J
bnB1dFZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yPiBfUkl0VHJhaXRzOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9SSXRUcmFpdHM6
OmRpZmZlcmVuY2VfdHlwZSBfRGlzdGFuY2VUeXBlOwoKICAgICAgaWYgKF9fcmVzdWx0X2ZpcnN0
ID09IF9fcmVzdWx0X2xhc3QpCiByZXR1cm4gX19yZXN1bHRfbGFzdDsKICAgICAgX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9fcmVzdWx0X3JlYWxfbGFzdCA9IF9fcmVzdWx0X2ZpcnN0OwogICAgICB3
aGlsZSAoX19maXJzdCAhPSBfX2xhc3QgJiYgX19yZXN1bHRfcmVhbF9sYXN0ICE9IF9fcmVzdWx0
X2xhc3QpCiB7CiAgICpfX3Jlc3VsdF9yZWFsX2xhc3QgPSAqX19maXJzdDsKICAgKytfX3Jlc3Vs
dF9yZWFsX2xhc3Q7CiAgICsrX19maXJzdDsKIH0KCiAgICAgIHN0ZDo6X19tYWtlX2hlYXAoX19y
ZXN1bHRfZmlyc3QsIF9fcmVzdWx0X3JlYWxfbGFzdCwgX19jb21wKTsKICAgICAgd2hpbGUgKF9f
Zmlyc3QgIT0gX19sYXN0KQogewogICBpZiAoX19jb21wKF9fZmlyc3QsIF9fcmVzdWx0X2ZpcnN0
KSkKICAgICBzdGQ6Ol9fYWRqdXN0X2hlYXAoX19yZXN1bHRfZmlyc3QsIF9EaXN0YW5jZVR5cGUo
MCksCiAgICAgICAgICBfRGlzdGFuY2VUeXBlKF9fcmVzdWx0X3JlYWxfbGFzdAogICAgICAgICAg
LSBfX3Jlc3VsdF9maXJzdCksCiAgICAgICAgICBfSW5wdXRWYWx1ZVR5cGUoKl9fZmlyc3QpLCBf
X2NvbXApOwogICArK19fZmlyc3Q7CiB9CiAgICAgIHN0ZDo6X19zb3J0X2hlYXAoX19yZXN1bHRf
Zmlyc3QsIF9fcmVzdWx0X3JlYWxfbGFzdCwgX19jb21wKTsKICAgICAgcmV0dXJuIF9fcmVzdWx0
X3JlYWxfbGFzdDsKICAgIH0KIyAxNzM2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+CiAg
ICBpbmxpbmUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yCiAgICBwYXJ0aWFsX3NvcnRfY29weShfSW5w
dXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yIF9fcmVzdWx0X2ZpcnN0LAogICAgICAgIF9SYW5kb21BY2Nlc3NJdGVy
YXRvciBfX3Jlc3VsdF9sYXN0KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9JbnB1dFZhbHVlVHlwZTsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
Pjo6dmFsdWVfdHlwZQogX091dHB1dFZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiBf
RGlzdGFuY2VUeXBlOwoKCiAgICAgCiAgICAgCgogICAgIAoKICAgICAKICAgICAgOwogICAgICA7
CgogICAgICByZXR1cm4gc3RkOjpfX3BhcnRpYWxfc29ydF9jb3B5KF9fZmlyc3QsIF9fbGFzdCwK
ICAgICAgICAgIF9fcmVzdWx0X2ZpcnN0LCBfX3Jlc3VsdF9sYXN0LAogICAgICAgICAgX19nbnVf
Y3h4OjpfX29wczo6X19pdGVyX2xlc3NfaXRlcigpKTsKICAgIH0KIyAxNzg0ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2Fs
Z28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IsCiAgICB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlubGluZSBfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IKICAgIHBhcnRpYWxfc29ydF9jb3B5KF9JbnB1dEl0ZXJhdG9yIF9f
Zmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0
b3IgX19yZXN1bHRfZmlyc3QsCiAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fcmVzdWx0
X2xhc3QsCiAgICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB0eXBlZGVmIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9JbnB1dFZh
bHVlVHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQogX091dHB1dFZhbHVlVHlwZTsKICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVy
ZW5jZV90eXBlCiBfRGlzdGFuY2VUeXBlOwoKCiAgICAgCiAgICAgCgogICAgIAoKICAgICAKCiAg
ICAgCgogICAgICA7CiAgICAgIDsKCiAgICAgIHJldHVybiBzdGQ6Ol9fcGFydGlhbF9zb3J0X2Nv
cHkoX19maXJzdCwgX19sYXN0LAogICAgICAgICAgX19yZXN1bHRfZmlyc3QsIF9fcmVzdWx0X2xh
c3QsCiAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfY29tcF9pdGVyKF9fY29tcCkpOwogICAg
fQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBf
Q29tcGFyZT4KICAgIHZvaWQKICAgIF9fdW5ndWFyZGVkX2xpbmVhcl9pbnNlcnQoX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAg
ICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVf
dHlwZQogX192YWwgPSBzdGQ6Om1vdmUoKl9fbGFzdCk7CiAgICAgIF9SYW5kb21BY2Nlc3NJdGVy
YXRvciBfX25leHQgPSBfX2xhc3Q7CiAgICAgIC0tX19uZXh0OwogICAgICB3aGlsZSAoX19jb21w
KF9fdmFsLCBfX25leHQpKQogewogICAqX19sYXN0ID0gc3RkOjptb3ZlKCpfX25leHQpOwogICBf
X2xhc3QgPSBfX25leHQ7CiAgIC0tX19uZXh0OwogfQogICAgICAqX19sYXN0ID0gc3RkOjptb3Zl
KF9fdmFsKTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX2luc2VydGlvbl9zb3J0KF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9f
bGFzdCwgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3Qp
IHJldHVybjsKCiAgICAgIGZvciAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9faSA9IF9fZmlyc3Qg
KyAxOyBfX2kgIT0gX19sYXN0OyArK19faSkKIHsKICAgaWYgKF9fY29tcChfX2ksIF9fZmlyc3Qp
KQogICAgIHsKICAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRl
cmF0b3I+Ojp2YWx1ZV90eXBlCiAgX192YWwgPSBzdGQ6Om1vdmUoKl9faSk7CiAgICAgICBzdGQ6
Om1vdmVfYmFja3dhcmQoX19maXJzdCwgX19pLCBfX2kgKyAxKTsKICAgICAgICpfX2ZpcnN0ID0g
c3RkOjptb3ZlKF9fdmFsKTsKICAgICB9CiAgIGVsc2UKICAgICBzdGQ6Ol9fdW5ndWFyZGVkX2xp
bmVhcl9pbnNlcnQoX19pLAogICAgX19nbnVfY3h4OjpfX29wczo6X192YWxfY29tcF9pdGVyKF9f
Y29tcCkpOwogfQogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlubGluZSB2b2lkCiAgICBfX3VuZ3VhcmRlZF9p
bnNlcnRpb25fc29ydChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAgICAgIF9S
YW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAg
Zm9yIChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19pID0gX19maXJzdDsgX19pICE9IF9fbGFzdDsg
KytfX2kpCiBzdGQ6Ol9fdW5ndWFyZGVkX2xpbmVhcl9pbnNlcnQoX19pLAogICAgX19nbnVfY3h4
OjpfX29wczo6X192YWxfY29tcF9pdGVyKF9fY29tcCkpOwogICAgfQoKCgoKCiAgZW51bSB7IF9T
X3RocmVzaG9sZCA9IDE2IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgdm9pZAogICAgX19maW5hbF9pbnNlcnRpb25f
c29ydChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAgX1JhbmRvbUFjY2Vzc0l0
ZXJhdG9yIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICBpZiAoX19sYXN0IC0g
X19maXJzdCA+IGludChfU190aHJlc2hvbGQpKQogewogICBzdGQ6Ol9faW5zZXJ0aW9uX3NvcnQo
X19maXJzdCwgX19maXJzdCArIGludChfU190aHJlc2hvbGQpLCBfX2NvbXApOwogICBzdGQ6Ol9f
dW5ndWFyZGVkX2luc2VydGlvbl9zb3J0KF9fZmlyc3QgKyBpbnQoX1NfdGhyZXNob2xkKSwgX19s
YXN0LAogICAgICAgX19jb21wKTsKIH0KICAgICAgZWxzZQogc3RkOjpfX2luc2VydGlvbl9zb3J0
KF9fZmlyc3QsIF9fbGFzdCwgX19jb21wKTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
YW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfUmFuZG9tQWNjZXNz
SXRlcmF0b3IKICAgIF9fdW5ndWFyZGVkX3BhcnRpdGlvbihfUmFuZG9tQWNjZXNzSXRlcmF0b3Ig
X19maXJzdCwKICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX3Bpdm90LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHdoaWxl
ICh0cnVlKQogewogICB3aGlsZSAoX19jb21wKF9fZmlyc3QsIF9fcGl2b3QpKQogICAgICsrX19m
aXJzdDsKICAgLS1fX2xhc3Q7CiAgIHdoaWxlIChfX2NvbXAoX19waXZvdCwgX19sYXN0KSkKICAg
ICAtLV9fbGFzdDsKICAgaWYgKCEoX19maXJzdCA8IF9fbGFzdCkpCiAgICAgcmV0dXJuIF9fZmly
c3Q7CiAgIHN0ZDo6aXRlcl9zd2FwKF9fZmlyc3QsIF9fbGFzdCk7CiAgICsrX19maXJzdDsKIH0K
ICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5h
bWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yCiAgICBfX3VuZ3Vh
cmRlZF9wYXJ0aXRpb25fcGl2b3QoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAgICBf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAg
IF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX21pZCA9IF9fZmlyc3QgKyAoX19sYXN0IC0gX19maXJz
dCkgLyAyOwogICAgICBzdGQ6Ol9fbW92ZV9tZWRpYW5fdG9fZmlyc3QoX19maXJzdCwgX19maXJz
dCArIDEsIF9fbWlkLCBfX2xhc3QgLSAxLAogICAgICBfX2NvbXApOwogICAgICByZXR1cm4gc3Rk
OjpfX3VuZ3VhcmRlZF9wYXJ0aXRpb24oX19maXJzdCArIDEsIF9fbGFzdCwgX19maXJzdCwgX19j
b21wKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0
eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlubGluZSB2b2lkCiAgICBfX3BhcnRpYWxfc29ydChfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19t
aWRkbGUsCiAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgICBfQ29tcGFyZSBf
X2NvbXApCiAgICB7CiAgICAgIHN0ZDo6X19oZWFwX3NlbGVjdChfX2ZpcnN0LCBfX21pZGRsZSwg
X19sYXN0LCBfX2NvbXApOwogICAgICBzdGQ6Ol9fc29ydF9oZWFwKF9fZmlyc3QsIF9fbWlkZGxl
LCBfX2NvbXApOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yLCB0eXBlbmFtZSBfU2l6ZSwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX2lu
dHJvc29ydF9sb29wKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgICAgIF9TaXplIF9fZGVwdGhfbGltaXQsIF9Db21w
YXJlIF9fY29tcCkKICAgIHsKICAgICAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPiBpbnQoX1Nf
dGhyZXNob2xkKSkKIHsKICAgaWYgKF9fZGVwdGhfbGltaXQgPT0gMCkKICAgICB7CiAgICAgICBz
dGQ6Ol9fcGFydGlhbF9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19sYXN0LCBfX2NvbXApOwogICAg
ICAgcmV0dXJuOwogICAgIH0KICAgLS1fX2RlcHRoX2xpbWl0OwogICBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IgX19jdXQgPQogICAgIHN0ZDo6X191bmd1YXJkZWRfcGFydGl0aW9uX3Bpdm90KF9fZmly
c3QsIF9fbGFzdCwgX19jb21wKTsKICAgc3RkOjpfX2ludHJvc29ydF9sb29wKF9fY3V0LCBfX2xh
c3QsIF9fZGVwdGhfbGltaXQsIF9fY29tcCk7CiAgIF9fbGFzdCA9IF9fY3V0OwogfQogICAgfQoK
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0Nv
bXBhcmU+CiAgICBpbmxpbmUgdm9pZAogICAgX19zb3J0KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgX0NvbXBhcmUgX19jb21w
KQogICAgewogICAgICBpZiAoX19maXJzdCAhPSBfX2xhc3QpCiB7CiAgIHN0ZDo6X19pbnRyb3Nv
cnRfbG9vcChfX2ZpcnN0LCBfX2xhc3QsCiAgICBzdGQ6Ol9fbGcoX19sYXN0IC0gX19maXJzdCkg
KiAyLAogICAgX19jb21wKTsKICAgc3RkOjpfX2ZpbmFsX2luc2VydGlvbl9zb3J0KF9fZmlyc3Qs
IF9fbGFzdCwgX19jb21wKTsKIH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfU2l6ZSwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lk
CiAgICBfX2ludHJvc2VsZWN0KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9t
QWNjZXNzSXRlcmF0b3IgX19udGgsCiAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LCBf
U2l6ZSBfX2RlcHRoX2xpbWl0LAogICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB3aGls
ZSAoX19sYXN0IC0gX19maXJzdCA+IDMpCiB7CiAgIGlmIChfX2RlcHRoX2xpbWl0ID09IDApCiAg
ICAgewogICAgICAgc3RkOjpfX2hlYXBfc2VsZWN0KF9fZmlyc3QsIF9fbnRoICsgMSwgX19sYXN0
LCBfX2NvbXApOwoKICAgICAgIHN0ZDo6aXRlcl9zd2FwKF9fZmlyc3QsIF9fbnRoKTsKICAgICAg
IHJldHVybjsKICAgICB9CiAgIC0tX19kZXB0aF9saW1pdDsKICAgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fY3V0ID0KICAgICBzdGQ6Ol9fdW5ndWFyZGVkX3BhcnRpdGlvbl9waXZvdChfX2ZpcnN0
LCBfX2xhc3QsIF9fY29tcCk7CiAgIGlmIChfX2N1dCA8PSBfX250aCkKICAgICBfX2ZpcnN0ID0g
X19jdXQ7CiAgIGVsc2UKICAgICBfX2xhc3QgPSBfX2N1dDsKIH0KICAgICAgc3RkOjpfX2luc2Vy
dGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19jb21wKTsKICAgIH0KIyAyMDIwICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3Rs
X2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1l
IF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyYXRvcgogICAg
bG93ZXJfYm91bmQoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9f
bGFzdCwKICBjb25zdCBfVHAmIF9fdmFsLCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90
eXBlCiBfVmFsdWVUeXBlOwoKCiAgICAgCiAgICAgCgogICAgIAogICAgICAgICAgICAgICAgICAg
IDsKCiAgICAgIHJldHVybiBzdGQ6Ol9fbG93ZXJfYm91bmQoX19maXJzdCwgX19sYXN0LCBfX3Zh
bCwKICAgIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9jb21wX3ZhbChfX2NvbXApKTsKICAgIH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1RwLCB0eXBl
bmFtZSBfQ29tcGFyZT4KICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIF9fdXBwZXJfYm91bmQoX0Zv
cndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgIGNvbnN0
IF9UcCYgX192YWwsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogX0Rp
c3RhbmNlVHlwZTsKCiAgICAgIF9EaXN0YW5jZVR5cGUgX19sZW4gPSBzdGQ6OmRpc3RhbmNlKF9f
Zmlyc3QsIF9fbGFzdCk7CgogICAgICB3aGlsZSAoX19sZW4gPiAwKQogewogICBfRGlzdGFuY2VU
eXBlIF9faGFsZiA9IF9fbGVuID4+IDE7CiAgIF9Gb3J3YXJkSXRlcmF0b3IgX19taWRkbGUgPSBf
X2ZpcnN0OwogICBzdGQ6OmFkdmFuY2UoX19taWRkbGUsIF9faGFsZik7CiAgIGlmIChfX2NvbXAo
X192YWwsIF9fbWlkZGxlKSkKICAgICBfX2xlbiA9IF9faGFsZjsKICAgZWxzZQogICAgIHsKICAg
ICAgIF9fZmlyc3QgPSBfX21pZGRsZTsKICAgICAgICsrX19maXJzdDsKICAgICAgIF9fbGVuID0g
X19sZW4gLSBfX2hhbGYgLSAxOwogICAgIH0KIH0KICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICB9
CiMgMjA3NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0
ZXJhdG9yLCB0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyYXRvcgogICAgdXBw
ZXJfYm91bmQoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFz
dCwKICBjb25zdCBfVHAmIF9fdmFsKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsKCgog
ICAgIAogICAgIAogICAgICA7CgogICAgICByZXR1cm4gc3RkOjpfX3VwcGVyX2JvdW5kKF9fZmly
c3QsIF9fbGFzdCwgX192YWwsCiAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX3ZhbF9sZXNzX2l0ZXIo
KSk7CiAgICB9CiMgMjEwOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Rm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgaW5s
aW5lIF9Gb3J3YXJkSXRlcmF0b3IKICAgIHVwcGVyX2JvdW5kKF9Gb3J3YXJkSXRlcmF0b3IgX19m
aXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgY29uc3QgX1RwJiBfX3ZhbCwgX0NvbXBh
cmUgX19jb21wKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxf
Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsKCgogICAgIAogICAgIAoK
ICAgICAKICAgICAgICAgICAgICAgICAgICA7CgogICAgICByZXR1cm4gc3RkOjpfX3VwcGVyX2Jv
dW5kKF9fZmlyc3QsIF9fbGFzdCwgX192YWwsCiAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX3ZhbF9j
b21wX2l0ZXIoX19jb21wKSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRl
cmF0b3IsIHR5cGVuYW1lIF9UcCwKICAgIHR5cGVuYW1lIF9Db21wYXJlSXRUcCwgdHlwZW5hbWUg
X0NvbXBhcmVUcEl0PgogICAgcGFpcjxfRm9yd2FyZEl0ZXJhdG9yLCBfRm9yd2FyZEl0ZXJhdG9y
PgogICAgX19lcXVhbF9yYW5nZShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRl
cmF0b3IgX19sYXN0LAogICAgY29uc3QgX1RwJiBfX3ZhbCwKICAgIF9Db21wYXJlSXRUcCBfX2Nv
bXBfaXRfdmFsLCBfQ29tcGFyZVRwSXQgX19jb21wX3ZhbF9pdCkKICAgIHsKICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OmRpZmZlcmVuY2Vf
dHlwZQogX0Rpc3RhbmNlVHlwZTsKCiAgICAgIF9EaXN0YW5jZVR5cGUgX19sZW4gPSBzdGQ6OmRp
c3RhbmNlKF9fZmlyc3QsIF9fbGFzdCk7CgogICAgICB3aGlsZSAoX19sZW4gPiAwKQogewogICBf
RGlzdGFuY2VUeXBlIF9faGFsZiA9IF9fbGVuID4+IDE7CiAgIF9Gb3J3YXJkSXRlcmF0b3IgX19t
aWRkbGUgPSBfX2ZpcnN0OwogICBzdGQ6OmFkdmFuY2UoX19taWRkbGUsIF9faGFsZik7CiAgIGlm
IChfX2NvbXBfaXRfdmFsKF9fbWlkZGxlLCBfX3ZhbCkpCiAgICAgewogICAgICAgX19maXJzdCA9
IF9fbWlkZGxlOwogICAgICAgKytfX2ZpcnN0OwogICAgICAgX19sZW4gPSBfX2xlbiAtIF9faGFs
ZiAtIDE7CiAgICAgfQogICBlbHNlIGlmIChfX2NvbXBfdmFsX2l0KF9fdmFsLCBfX21pZGRsZSkp
CiAgICAgX19sZW4gPSBfX2hhbGY7CiAgIGVsc2UKICAgICB7CiAgICAgICBfRm9yd2FyZEl0ZXJh
dG9yIF9fbGVmdAogID0gc3RkOjpfX2xvd2VyX2JvdW5kKF9fZmlyc3QsIF9fbWlkZGxlLCBfX3Zh
bCwgX19jb21wX2l0X3ZhbCk7CiAgICAgICBzdGQ6OmFkdmFuY2UoX19maXJzdCwgX19sZW4pOwog
ICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX3JpZ2h0CiAgPSBzdGQ6Ol9fdXBwZXJfYm91bmQoKytf
X21pZGRsZSwgX19maXJzdCwgX192YWwsIF9fY29tcF92YWxfaXQpOwogICAgICAgcmV0dXJuIHBh
aXI8X0ZvcndhcmRJdGVyYXRvciwgX0ZvcndhcmRJdGVyYXRvcj4oX19sZWZ0LCBfX3JpZ2h0KTsK
ICAgICB9CiB9CiAgICAgIHJldHVybiBwYWlyPF9Gb3J3YXJkSXRlcmF0b3IsIF9Gb3J3YXJkSXRl
cmF0b3I+KF9fZmlyc3QsIF9fZmlyc3QpOwogICAgfQojIDIxODMgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnby5oIiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgogICAg
aW5saW5lIHBhaXI8X0ZvcndhcmRJdGVyYXRvciwgX0ZvcndhcmRJdGVyYXRvcj4KICAgIGVxdWFs
X3JhbmdlKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3Qs
CiAgY29uc3QgX1RwJiBfX3ZhbCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRv
cl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGU7CgoKICAg
ICAKICAgICAKICAgICAKICAgICAgOwogICAgICA7CgogICAgICByZXR1cm4gc3RkOjpfX2VxdWFs
X3JhbmdlKF9fZmlyc3QsIF9fbGFzdCwgX192YWwsCiAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0
ZXJfbGVzc192YWwoKSwKICAgIF9fZ251X2N4eDo6X19vcHM6Ol9fdmFsX2xlc3NfaXRlcigpKTsK
ICAgIH0KIyAyMjIwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3
YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUg
cGFpcjxfRm9yd2FyZEl0ZXJhdG9yLCBfRm9yd2FyZEl0ZXJhdG9yPgogICAgZXF1YWxfcmFuZ2Uo
X0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICBjb25z
dCBfVHAmIF9fdmFsLCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBfVmFsdWVU
eXBlOwoKCiAgICAgCiAgICAgCgogICAgIAoKICAgICAKICAgICAgICAgICAgICAgICAgICA7CiAg
ICAgCiAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19lcXVhbF9yYW5n
ZShfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsLAogICAgX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2Nv
bXBfdmFsKF9fY29tcCksCiAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX3ZhbF9jb21wX2l0ZXIoX19j
b21wKSk7CiAgICB9CiMgMjI1NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+CiAgICBib29sCiAgICBiaW5hcnlfc2Vh
cmNoKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAg
ICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX192YWwpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBfVmFs
dWVUeXBlOwoKCiAgICAgCiAgICAgCiAgICAgIDsKICAgICAgOwoKICAgICAgX0ZvcndhcmRJdGVy
YXRvciBfX2kKID0gc3RkOjpfX2xvd2VyX2JvdW5kKF9fZmlyc3QsIF9fbGFzdCwgX192YWwsCiAg
ICAgICAgX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2xlc3NfdmFsKCkpOwogICAgICByZXR1cm4g
X19pICE9IF9fbGFzdCAmJiAhKF9fdmFsIDwgKl9faSk7CiAgICB9CiMgMjI5MSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9h
bGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBf
VHAsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgYm9vbAogICAgYmluYXJ5X3NlYXJjaChfRm9yd2Fy
ZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAg
ICAgICBjb25zdCBfVHAmIF9fdmFsLCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBl
CiBfVmFsdWVUeXBlOwoKCiAgICAgCiAgICAgCgogICAgIAogICAgICAgICAgICAgICAgICAgIDsK
ICAgICAKICAgICAgICAgICAgICAgICAgICA7CgogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9faQog
PSBzdGQ6Ol9fbG93ZXJfYm91bmQoX19maXJzdCwgX19sYXN0LCBfX3ZhbCwKICAgICAgICBfX2du
dV9jeHg6Ol9fb3BzOjpfX2l0ZXJfY29tcF92YWwoX19jb21wKSk7CiAgICAgIHJldHVybiBfX2kg
IT0gX19sYXN0ICYmICFib29sKF9fY29tcChfX3ZhbCwgKl9faSkpOwogICAgfQoKCgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwK
ICAgIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lk
CiAgICBfX21vdmVfbWVyZ2VfYWRhcHRpdmUoX0lucHV0SXRlcmF0b3IxIF9fZmlyc3QxLCBfSW5w
dXRJdGVyYXRvcjEgX19sYXN0MSwKICAgICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIsIF9JbnB1
dEl0ZXJhdG9yMiBfX2xhc3QyLAogICAgIF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCwgX0NvbXBh
cmUgX19jb21wKQogICAgewogICAgICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2Zp
cnN0MiAhPSBfX2xhc3QyKQogewogICBpZiAoX19jb21wKF9fZmlyc3QyLCBfX2ZpcnN0MSkpCiAg
ICAgewogICAgICAgKl9fcmVzdWx0ID0gc3RkOjptb3ZlKCpfX2ZpcnN0Mik7CiAgICAgICArK19f
Zmlyc3QyOwogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgICpfX3Jlc3VsdCA9IHN0ZDo6bW92
ZSgqX19maXJzdDEpOwogICAgICAgKytfX2ZpcnN0MTsKICAgICB9CiAgICsrX19yZXN1bHQ7CiB9
CiAgICAgIGlmIChfX2ZpcnN0MSAhPSBfX2xhc3QxKQogc3RkOjptb3ZlKF9fZmlyc3QxLCBfX2xh
c3QxLCBfX3Jlc3VsdCk7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25h
bEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjIsCiAgICB0eXBlbmFt
ZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMywgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAg
ICBfX21vdmVfbWVyZ2VfYWRhcHRpdmVfYmFja3dhcmQoX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjEg
X19maXJzdDEsCiAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBfX2xhc3QxLAogICAgICAg
X0JpZGlyZWN0aW9uYWxJdGVyYXRvcjIgX19maXJzdDIsCiAgICAgICBfQmlkaXJlY3Rpb25hbEl0
ZXJhdG9yMiBfX2xhc3QyLAogICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjMgX19yZXN1bHQs
CiAgICAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIGlmIChfX2ZpcnN0MSA9PSBfX2xh
c3QxKQogewogICBzdGQ6Om1vdmVfYmFja3dhcmQoX19maXJzdDIsIF9fbGFzdDIsIF9fcmVzdWx0
KTsKICAgcmV0dXJuOwogfQogICAgICBlbHNlIGlmIChfX2ZpcnN0MiA9PSBfX2xhc3QyKQogcmV0
dXJuOwoKICAgICAgLS1fX2xhc3QxOwogICAgICAtLV9fbGFzdDI7CiAgICAgIHdoaWxlICh0cnVl
KQogewogICBpZiAoX19jb21wKF9fbGFzdDIsIF9fbGFzdDEpKQogICAgIHsKICAgICAgICotLV9f
cmVzdWx0ID0gc3RkOjptb3ZlKCpfX2xhc3QxKTsKICAgICAgIGlmIChfX2ZpcnN0MSA9PSBfX2xh
c3QxKQogIHsKICAgIHN0ZDo6bW92ZV9iYWNrd2FyZChfX2ZpcnN0MiwgKytfX2xhc3QyLCBfX3Jl
c3VsdCk7CiAgICByZXR1cm47CiAgfQogICAgICAgLS1fX2xhc3QxOwogICAgIH0KICAgZWxzZQog
ICAgIHsKICAgICAgICotLV9fcmVzdWx0ID0gc3RkOjptb3ZlKCpfX2xhc3QyKTsKICAgICAgIGlm
IChfX2ZpcnN0MiA9PSBfX2xhc3QyKQogIHJldHVybjsKICAgICAgIC0tX19sYXN0MjsKICAgICB9
CiB9CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSwg
dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfRGlzdGFuY2U+
CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMQogICAgX19yb3RhdGVfYWRhcHRpdmUoX0JpZGly
ZWN0aW9uYWxJdGVyYXRvcjEgX19maXJzdCwKICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9y
MSBfX21pZGRsZSwKICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBfX2xhc3QsCiAgICAg
ICAgX0Rpc3RhbmNlIF9fbGVuMSwgX0Rpc3RhbmNlIF9fbGVuMiwKICAgICAgICBfQmlkaXJlY3Rp
b25hbEl0ZXJhdG9yMiBfX2J1ZmZlciwKICAgICAgICBfRGlzdGFuY2UgX19idWZmZXJfc2l6ZSkK
ICAgIHsKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjIgX19idWZmZXJfZW5kOwogICAgICBp
ZiAoX19sZW4xID4gX19sZW4yICYmIF9fbGVuMiA8PSBfX2J1ZmZlcl9zaXplKQogewogICBpZiAo
X19sZW4yKQogICAgIHsKICAgICAgIF9fYnVmZmVyX2VuZCA9IHN0ZDo6bW92ZShfX21pZGRsZSwg
X19sYXN0LCBfX2J1ZmZlcik7CiAgICAgICBzdGQ6Om1vdmVfYmFja3dhcmQoX19maXJzdCwgX19t
aWRkbGUsIF9fbGFzdCk7CiAgICAgICByZXR1cm4gc3RkOjptb3ZlKF9fYnVmZmVyLCBfX2J1ZmZl
cl9lbmQsIF9fZmlyc3QpOwogICAgIH0KICAgZWxzZQogICAgIHJldHVybiBfX2ZpcnN0OwogfQog
ICAgICBlbHNlIGlmIChfX2xlbjEgPD0gX19idWZmZXJfc2l6ZSkKIHsKICAgaWYgKF9fbGVuMSkK
ICAgICB7CiAgICAgICBfX2J1ZmZlcl9lbmQgPSBzdGQ6Om1vdmUoX19maXJzdCwgX19taWRkbGUs
IF9fYnVmZmVyKTsKICAgICAgIHN0ZDo6bW92ZShfX21pZGRsZSwgX19sYXN0LCBfX2ZpcnN0KTsK
ICAgICAgIHJldHVybiBzdGQ6Om1vdmVfYmFja3dhcmQoX19idWZmZXIsIF9fYnVmZmVyX2VuZCwg
X19sYXN0KTsKICAgICB9CiAgIGVsc2UKICAgICByZXR1cm4gX19sYXN0OwogfQogICAgICBlbHNl
CiB7CiAgIHN0ZDo6cm90YXRlKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QpOwogICBzdGQ6OmFk
dmFuY2UoX19maXJzdCwgc3RkOjpkaXN0YW5jZShfX21pZGRsZSwgX19sYXN0KSk7CiAgIHJldHVy
biBfX2ZpcnN0OwogfQogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJ
dGVyYXRvciwgdHlwZW5hbWUgX0Rpc3RhbmNlLAogICAgdHlwZW5hbWUgX1BvaW50ZXIsIHR5cGVu
YW1lIF9Db21wYXJlPgogICAgdm9pZAogICAgX19tZXJnZV9hZGFwdGl2ZShfQmlkaXJlY3Rpb25h
bEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRl
cmF0b3IgX19taWRkbGUsCiAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fbGFzdCwKICAg
ICAgIF9EaXN0YW5jZSBfX2xlbjEsIF9EaXN0YW5jZSBfX2xlbjIsCiAgICAgICBfUG9pbnRlciBf
X2J1ZmZlciwgX0Rpc3RhbmNlIF9fYnVmZmVyX3NpemUsCiAgICAgICBfQ29tcGFyZSBfX2NvbXAp
CiAgICB7CiAgICAgIGlmIChfX2xlbjEgPD0gX19sZW4yICYmIF9fbGVuMSA8PSBfX2J1ZmZlcl9z
aXplKQogewogICBfUG9pbnRlciBfX2J1ZmZlcl9lbmQgPSBzdGQ6Om1vdmUoX19maXJzdCwgX19t
aWRkbGUsIF9fYnVmZmVyKTsKICAgc3RkOjpfX21vdmVfbWVyZ2VfYWRhcHRpdmUoX19idWZmZXIs
IF9fYnVmZmVyX2VuZCwgX19taWRkbGUsIF9fbGFzdCwKICAgICAgICAgX19maXJzdCwgX19jb21w
KTsKIH0KICAgICAgZWxzZSBpZiAoX19sZW4yIDw9IF9fYnVmZmVyX3NpemUpCiB7CiAgIF9Qb2lu
dGVyIF9fYnVmZmVyX2VuZCA9IHN0ZDo6bW92ZShfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZlcik7
CiAgIHN0ZDo6X19tb3ZlX21lcmdlX2FkYXB0aXZlX2JhY2t3YXJkKF9fZmlyc3QsIF9fbWlkZGxl
LCBfX2J1ZmZlciwKICAgICAgICAgICBfX2J1ZmZlcl9lbmQsIF9fbGFzdCwgX19jb21wKTsKIH0K
ICAgICAgZWxzZQogewogICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fZmlyc3RfY3V0ID0gX19m
aXJzdDsKICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX3NlY29uZF9jdXQgPSBfX21pZGRsZTsK
ICAgX0Rpc3RhbmNlIF9fbGVuMTEgPSAwOwogICBfRGlzdGFuY2UgX19sZW4yMiA9IDA7CiAgIGlm
IChfX2xlbjEgPiBfX2xlbjIpCiAgICAgewogICAgICAgX19sZW4xMSA9IF9fbGVuMSAvIDI7CiAg
ICAgICBzdGQ6OmFkdmFuY2UoX19maXJzdF9jdXQsIF9fbGVuMTEpOwogICAgICAgX19zZWNvbmRf
Y3V0CiAgPSBzdGQ6Ol9fbG93ZXJfYm91bmQoX19taWRkbGUsIF9fbGFzdCwgKl9fZmlyc3RfY3V0
LAogICAgICAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfY29tcF92YWwoX19jb21wKSk7CiAg
ICAgICBfX2xlbjIyID0gc3RkOjpkaXN0YW5jZShfX21pZGRsZSwgX19zZWNvbmRfY3V0KTsKICAg
ICB9CiAgIGVsc2UKICAgICB7CiAgICAgICBfX2xlbjIyID0gX19sZW4yIC8gMjsKICAgICAgIHN0
ZDo6YWR2YW5jZShfX3NlY29uZF9jdXQsIF9fbGVuMjIpOwogICAgICAgX19maXJzdF9jdXQKICA9
IHN0ZDo6X191cHBlcl9ib3VuZChfX2ZpcnN0LCBfX21pZGRsZSwgKl9fc2Vjb25kX2N1dCwKICAg
ICAgICAgX19nbnVfY3h4OjpfX29wczo6X192YWxfY29tcF9pdGVyKF9fY29tcCkpOwogICAgICAg
X19sZW4xMSA9IHN0ZDo6ZGlzdGFuY2UoX19maXJzdCwgX19maXJzdF9jdXQpOwogICAgIH0KICAg
X0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX25ld19taWRkbGUKICAgICA9IHN0ZDo6X19yb3RhdGVf
YWRhcHRpdmUoX19maXJzdF9jdXQsIF9fbWlkZGxlLCBfX3NlY29uZF9jdXQsCiAgICAgICAgIF9f
bGVuMSAtIF9fbGVuMTEsIF9fbGVuMjIsIF9fYnVmZmVyLAogICAgICAgICBfX2J1ZmZlcl9zaXpl
KTsKICAgc3RkOjpfX21lcmdlX2FkYXB0aXZlKF9fZmlyc3QsIF9fZmlyc3RfY3V0LCBfX25ld19t
aWRkbGUsIF9fbGVuMTEsCiAgICBfX2xlbjIyLCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSwgX19j
b21wKTsKICAgc3RkOjpfX21lcmdlX2FkYXB0aXZlKF9fbmV3X21pZGRsZSwgX19zZWNvbmRfY3V0
LCBfX2xhc3QsCiAgICBfX2xlbjEgLSBfX2xlbjExLAogICAgX19sZW4yIC0gX19sZW4yMiwgX19i
dWZmZXIsCiAgICBfX2J1ZmZlcl9zaXplLCBfX2NvbXApOwogfQogICAgfQoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciwgdHlwZW5hbWUgX0Rpc3RhbmNlLAogICAg
dHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX21lcmdlX3dpdGhvdXRfYnVmZmVyKF9C
aWRpcmVjdGlvbmFsSXRlcmF0b3IgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
X0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX21pZGRsZSwKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVy
YXRvciBfX2xhc3QsCiAgICAgIF9EaXN0YW5jZSBfX2xlbjEsIF9EaXN0YW5jZSBfX2xlbjIsCiAg
ICAgIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAgaWYgKF9fbGVuMSA9PSAwIHx8IF9fbGVu
MiA9PSAwKQogcmV0dXJuOwogICAgICBpZiAoX19sZW4xICsgX19sZW4yID09IDIpCiB7CiAgIGlm
IChfX2NvbXAoX19taWRkbGUsIF9fZmlyc3QpKQogICAgIHN0ZDo6aXRlcl9zd2FwKF9fZmlyc3Qs
IF9fbWlkZGxlKTsKICAgcmV0dXJuOwogfQogICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9f
Zmlyc3RfY3V0ID0gX19maXJzdDsKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX3NlY29u
ZF9jdXQgPSBfX21pZGRsZTsKICAgICAgX0Rpc3RhbmNlIF9fbGVuMTEgPSAwOwogICAgICBfRGlz
dGFuY2UgX19sZW4yMiA9IDA7CiAgICAgIGlmIChfX2xlbjEgPiBfX2xlbjIpCiB7CiAgIF9fbGVu
MTEgPSBfX2xlbjEgLyAyOwogICBzdGQ6OmFkdmFuY2UoX19maXJzdF9jdXQsIF9fbGVuMTEpOwog
ICBfX3NlY29uZF9jdXQKICAgICA9IHN0ZDo6X19sb3dlcl9ib3VuZChfX21pZGRsZSwgX19sYXN0
LCAqX19maXJzdF9jdXQsCiAgICAgX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2NvbXBfdmFsKF9f
Y29tcCkpOwogICBfX2xlbjIyID0gc3RkOjpkaXN0YW5jZShfX21pZGRsZSwgX19zZWNvbmRfY3V0
KTsKIH0KICAgICAgZWxzZQogewogICBfX2xlbjIyID0gX19sZW4yIC8gMjsKICAgc3RkOjphZHZh
bmNlKF9fc2Vjb25kX2N1dCwgX19sZW4yMik7CiAgIF9fZmlyc3RfY3V0CiAgICAgPSBzdGQ6Ol9f
dXBwZXJfYm91bmQoX19maXJzdCwgX19taWRkbGUsICpfX3NlY29uZF9jdXQsCiAgICAgX19nbnVf
Y3h4OjpfX29wczo6X192YWxfY29tcF9pdGVyKF9fY29tcCkpOwogICBfX2xlbjExID0gc3RkOjpk
aXN0YW5jZShfX2ZpcnN0LCBfX2ZpcnN0X2N1dCk7CiB9CiAgICAgIHN0ZDo6cm90YXRlKF9fZmly
c3RfY3V0LCBfX21pZGRsZSwgX19zZWNvbmRfY3V0KTsKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVy
YXRvciBfX25ld19taWRkbGUgPSBfX2ZpcnN0X2N1dDsKICAgICAgc3RkOjphZHZhbmNlKF9fbmV3
X21pZGRsZSwgc3RkOjpkaXN0YW5jZShfX21pZGRsZSwgX19zZWNvbmRfY3V0KSk7CiAgICAgIHN0
ZDo6X19tZXJnZV93aXRob3V0X2J1ZmZlcihfX2ZpcnN0LCBfX2ZpcnN0X2N1dCwgX19uZXdfbWlk
ZGxlLAogICAgICBfX2xlbjExLCBfX2xlbjIyLCBfX2NvbXApOwogICAgICBzdGQ6Ol9fbWVyZ2Vf
d2l0aG91dF9idWZmZXIoX19uZXdfbWlkZGxlLCBfX3NlY29uZF9jdXQsIF9fbGFzdCwKICAgICAg
X19sZW4xIC0gX19sZW4xMSwgX19sZW4yIC0gX19sZW4yMiwgX19jb21wKTsKICAgIH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+
CiAgICB2b2lkCiAgICBfX2lucGxhY2VfbWVyZ2UoX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2Zp
cnN0LAogICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fbWlkZGxlLAogICAgICBfQmlkaXJl
Y3Rpb25hbEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfQmlkaXJlY3Rpb25hbEl0ZXJhdG9y
Pjo6dmFsdWVfdHlwZQogICAgICAgICAgX1ZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBpdGVyYXRvcl90cmFpdHM8X0JpZGlyZWN0aW9uYWxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlw
ZQogICAgICAgICAgX0Rpc3RhbmNlVHlwZTsKCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbWlkZGxl
IHx8IF9fbWlkZGxlID09IF9fbGFzdCkKIHJldHVybjsKCiAgICAgIGNvbnN0IF9EaXN0YW5jZVR5
cGUgX19sZW4xID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX21pZGRsZSk7CiAgICAgIGNvbnN0
IF9EaXN0YW5jZVR5cGUgX19sZW4yID0gc3RkOjpkaXN0YW5jZShfX21pZGRsZSwgX19sYXN0KTsK
CiAgICAgIHR5cGVkZWYgX1RlbXBvcmFyeV9idWZmZXI8X0JpZGlyZWN0aW9uYWxJdGVyYXRvciwg
X1ZhbHVlVHlwZT4gX1RtcEJ1ZjsKICAgICAgX1RtcEJ1ZiBfX2J1ZihfX2ZpcnN0LCBfX2xhc3Qp
OwoKICAgICAgaWYgKF9fYnVmLmJlZ2luKCkgPT0gMCkKIHN0ZDo6X19tZXJnZV93aXRob3V0X2J1
ZmZlcgogICAoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwgX19sZW4xLCBfX2xlbjIsIF9fY29t
cCk7CiAgICAgIGVsc2UKIHN0ZDo6X19tZXJnZV9hZGFwdGl2ZQogICAoX19maXJzdCwgX19taWRk
bGUsIF9fbGFzdCwgX19sZW4xLCBfX2xlbjIsIF9fYnVmLmJlZ2luKCksCiAgICBfRGlzdGFuY2VU
eXBlKF9fYnVmLnNpemUoKSksIF9fY29tcCk7CiAgICB9CiMgMjU4NCAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPgogICAgaW5saW5l
IHZvaWQKICAgIGlucGxhY2VfbWVyZ2UoX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2ZpcnN0LAog
ICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX21pZGRsZSwKICAgIF9CaWRpcmVjdGlvbmFsSXRl
cmF0b3IgX19sYXN0KQogICAgewoKICAgICAKCiAgICAgCgogICAgICA7CiAgICAgIDsKCiAgICAg
IHN0ZDo6X19pbnBsYWNlX21lcmdlKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QsCiAgICAgIF9f
Z251X2N4eDo6X19vcHM6Ol9faXRlcl9sZXNzX2l0ZXIoKSk7CiAgICB9CiMgMjYyNCAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0
bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCB0
eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlubGluZSB2b2lkCiAgICBpbnBsYWNlX21lcmdlKF9CaWRp
cmVjdGlvbmFsSXRlcmF0b3IgX19maXJzdCwKICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19t
aWRkbGUsCiAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fbGFzdCwKICAgIF9Db21wYXJlIF9f
Y29tcCkKICAgIHsKCiAgICAgCgogICAgIAoKCiAgICAgIDsKICAgICAgOwoKICAgICAgc3RkOjpf
X2lucGxhY2VfbWVyZ2UoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwKICAgICAgX19nbnVfY3h4
OjpfX29wczo6X19pdGVyX2NvbXBfaXRlcihfX2NvbXApKTsKICAgIH0KCgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX091dHB1dEl0ZXJhdG9yLAogICAgdHlw
ZW5hbWUgX0NvbXBhcmU+CiAgICBfT3V0cHV0SXRlcmF0b3IKICAgIF9fbW92ZV9tZXJnZShfSW5w
dXRJdGVyYXRvciBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IgX19sYXN0MSwKICAgX0lucHV0SXRl
cmF0b3IgX19maXJzdDIsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdDIsCiAgIF9PdXRwdXRJdGVyYXRv
ciBfX3Jlc3VsdCwgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB3aGlsZSAoX19maXJzdDEg
IT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogewogICBpZiAoX19jb21wKF9fZmly
c3QyLCBfX2ZpcnN0MSkpCiAgICAgewogICAgICAgKl9fcmVzdWx0ID0gc3RkOjptb3ZlKCpfX2Zp
cnN0Mik7CiAgICAgICArK19fZmlyc3QyOwogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgICpf
X3Jlc3VsdCA9IHN0ZDo6bW92ZSgqX19maXJzdDEpOwogICAgICAgKytfX2ZpcnN0MTsKICAgICB9
CiAgICsrX19yZXN1bHQ7CiB9CiAgICAgIHJldHVybiBzdGQ6Om1vdmUoX19maXJzdDIsIF9fbGFz
dDIsIHN0ZDo6bW92ZShfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQpKQoKICAgICAgICAgICAg
ICAgICAgOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3Ix
LCB0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IyLAogICAgdHlwZW5hbWUgX0Rpc3RhbmNl
LCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIHZvaWQKICAgIF9fbWVyZ2Vfc29ydF9sb29wKF9SYW5k
b21BY2Nlc3NJdGVyYXRvcjEgX19maXJzdCwKICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3Ix
IF9fbGFzdCwKICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IyIF9fcmVzdWx0LCBfRGlzdGFu
Y2UgX19zdGVwX3NpemUsCiAgICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICBjb25z
dCBfRGlzdGFuY2UgX190d29fc3RlcCA9IDIgKiBfX3N0ZXBfc2l6ZTsKCiAgICAgIHdoaWxlIChf
X2xhc3QgLSBfX2ZpcnN0ID49IF9fdHdvX3N0ZXApCiB7CiAgIF9fcmVzdWx0ID0gc3RkOjpfX21v
dmVfbWVyZ2UoX19maXJzdCwgX19maXJzdCArIF9fc3RlcF9zaXplLAogICAgICAgICAgIF9fZmly
c3QgKyBfX3N0ZXBfc2l6ZSwKICAgICAgICAgICBfX2ZpcnN0ICsgX190d29fc3RlcCwKICAgICAg
ICAgICBfX3Jlc3VsdCwgX19jb21wKTsKICAgX19maXJzdCArPSBfX3R3b19zdGVwOwogfQogICAg
ICBfX3N0ZXBfc2l6ZSA9IHN0ZDo6bWluKF9EaXN0YW5jZShfX2xhc3QgLSBfX2ZpcnN0KSwgX19z
dGVwX3NpemUpOwoKICAgICAgc3RkOjpfX21vdmVfbWVyZ2UoX19maXJzdCwgX19maXJzdCArIF9f
c3RlcF9zaXplLAogICBfX2ZpcnN0ICsgX19zdGVwX3NpemUsIF9fbGFzdCwgX19yZXN1bHQsIF9f
Y29tcCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwg
dHlwZW5hbWUgX0Rpc3RhbmNlLAogICAgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBf
X2NodW5rX2luc2VydGlvbl9zb3J0KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAg
ICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICBfRGlzdGFuY2UgX19jaHVua19z
aXplLCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0
ID49IF9fY2h1bmtfc2l6ZSkKIHsKICAgc3RkOjpfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9f
Zmlyc3QgKyBfX2NodW5rX3NpemUsIF9fY29tcCk7CiAgIF9fZmlyc3QgKz0gX19jaHVua19zaXpl
OwogfQogICAgICBzdGQ6Ol9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX2NvbXAp
OwogICAgfQoKICBlbnVtIHsgX1NfY2h1bmtfc2l6ZSA9IDcgfTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfUG9pbnRlciwgdHlwZW5hbWUgX0Nv
bXBhcmU+CiAgICB2b2lkCiAgICBfX21lcmdlX3NvcnRfd2l0aF9idWZmZXIoX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUG9pbnRlciBfX2J1ZmZlciwgX0NvbXBhcmUg
X19jb21wKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFu
ZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKIF9EaXN0YW5jZTsKCiAgICAgIGNv
bnN0IF9EaXN0YW5jZSBfX2xlbiA9IF9fbGFzdCAtIF9fZmlyc3Q7CiAgICAgIGNvbnN0IF9Qb2lu
dGVyIF9fYnVmZmVyX2xhc3QgPSBfX2J1ZmZlciArIF9fbGVuOwoKICAgICAgX0Rpc3RhbmNlIF9f
c3RlcF9zaXplID0gX1NfY2h1bmtfc2l6ZTsKICAgICAgc3RkOjpfX2NodW5rX2luc2VydGlvbl9z
b3J0KF9fZmlyc3QsIF9fbGFzdCwgX19zdGVwX3NpemUsIF9fY29tcCk7CgogICAgICB3aGlsZSAo
X19zdGVwX3NpemUgPCBfX2xlbikKIHsKICAgc3RkOjpfX21lcmdlX3NvcnRfbG9vcChfX2ZpcnN0
LCBfX2xhc3QsIF9fYnVmZmVyLAogICAgIF9fc3RlcF9zaXplLCBfX2NvbXApOwogICBfX3N0ZXBf
c2l6ZSAqPSAyOwogICBzdGQ6Ol9fbWVyZ2Vfc29ydF9sb29wKF9fYnVmZmVyLCBfX2J1ZmZlcl9s
YXN0LCBfX2ZpcnN0LAogICAgIF9fc3RlcF9zaXplLCBfX2NvbXApOwogICBfX3N0ZXBfc2l6ZSAq
PSAyOwogfQogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3Is
IHR5cGVuYW1lIF9Qb2ludGVyLAogICAgdHlwZW5hbWUgX0Rpc3RhbmNlLCB0eXBlbmFtZSBfQ29t
cGFyZT4KICAgIHZvaWQKICAgIF9fc3RhYmxlX3NvcnRfYWRhcHRpdmUoX1JhbmRvbUFjY2Vzc0l0
ZXJhdG9yIF9fZmlyc3QsCiAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9Qb2ludGVyIF9fYnVmZmVyLCBfRGlzdGFuY2UgX19idWZm
ZXJfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKQogICAg
ewogICAgICBjb25zdCBfRGlzdGFuY2UgX19sZW4gPSAoX19sYXN0IC0gX19maXJzdCArIDEpIC8g
MjsKICAgICAgY29uc3QgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbWlkZGxlID0gX19maXJzdCAr
IF9fbGVuOwogICAgICBpZiAoX19sZW4gPiBfX2J1ZmZlcl9zaXplKQogewogICBzdGQ6Ol9fc3Rh
YmxlX3NvcnRfYWRhcHRpdmUoX19maXJzdCwgX19taWRkbGUsIF9fYnVmZmVyLAogICAgICAgICAg
X19idWZmZXJfc2l6ZSwgX19jb21wKTsKICAgc3RkOjpfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9f
bWlkZGxlLCBfX2xhc3QsIF9fYnVmZmVyLAogICAgICAgICAgX19idWZmZXJfc2l6ZSwgX19jb21w
KTsKIH0KICAgICAgZWxzZQogewogICBzdGQ6Ol9fbWVyZ2Vfc29ydF93aXRoX2J1ZmZlcihfX2Zp
cnN0LCBfX21pZGRsZSwgX19idWZmZXIsIF9fY29tcCk7CiAgIHN0ZDo6X19tZXJnZV9zb3J0X3dp
dGhfYnVmZmVyKF9fbWlkZGxlLCBfX2xhc3QsIF9fYnVmZmVyLCBfX2NvbXApOwogfQogICAgICBz
dGQ6Ol9fbWVyZ2VfYWRhcHRpdmUoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwKICAgICAgIF9E
aXN0YW5jZShfX21pZGRsZSAtIF9fZmlyc3QpLAogICAgICAgX0Rpc3RhbmNlKF9fbGFzdCAtIF9f
bWlkZGxlKSwKICAgICAgIF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXplLAogICAgICAgX19jb21wKTsK
ICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5h
bWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX2lucGxhY2Vfc3RhYmxlX3NvcnQoX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwg
X0NvbXBhcmUgX19jb21wKQogICAgewogICAgICBpZiAoX19sYXN0IC0gX19maXJzdCA8IDE1KQog
ewogICBzdGQ6Ol9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX2NvbXApOwogICBy
ZXR1cm47CiB9CiAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX21pZGRsZSA9IF9fZmlyc3Qg
KyAoX19sYXN0IC0gX19maXJzdCkgLyAyOwogICAgICBzdGQ6Ol9faW5wbGFjZV9zdGFibGVfc29y
dChfX2ZpcnN0LCBfX21pZGRsZSwgX19jb21wKTsKICAgICAgc3RkOjpfX2lucGxhY2Vfc3RhYmxl
X3NvcnQoX19taWRkbGUsIF9fbGFzdCwgX19jb21wKTsKICAgICAgc3RkOjpfX21lcmdlX3dpdGhv
dXRfYnVmZmVyKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QsCiAgICAgIF9fbWlkZGxlIC0gX19m
aXJzdCwKICAgICAgX19sYXN0IC0gX19taWRkbGUsCiAgICAgIF9fY29tcCk7CiAgICB9CiMgMjc5
NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEs
IHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1lIF9Db21wYXJlPgogICAgYm9v
bAogICAgX19pbmNsdWRlcyhfSW5wdXRJdGVyYXRvcjEgX19maXJzdDEsIF9JbnB1dEl0ZXJhdG9y
MSBfX2xhc3QxLAogICAgICAgIF9JbnB1dEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0lucHV0SXRlcmF0
b3IyIF9fbGFzdDIsCiAgICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB3aGlsZSAo
X19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogaWYgKF9fY29tcChf
X2ZpcnN0MiwgX19maXJzdDEpKQogICByZXR1cm4gZmFsc2U7CiBlbHNlIGlmIChfX2NvbXAoX19m
aXJzdDEsIF9fZmlyc3QyKSkKICAgKytfX2ZpcnN0MTsKIGVsc2UKICAgKytfX2ZpcnN0MSwgKytf
X2ZpcnN0MjsKCiAgICAgIHJldHVybiBfX2ZpcnN0MiA9PSBfX2xhc3QyOwogICAgfQojIDI4MzEg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
Yml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IxLCB0
eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjI+CiAgICBpbmxpbmUgYm9vbAogICAgaW5jbHVkZXMoX0lu
cHV0SXRlcmF0b3IxIF9fZmlyc3QxLCBfSW5wdXRJdGVyYXRvcjEgX19sYXN0MSwKICAgICAgX0lu
cHV0SXRlcmF0b3IyIF9fZmlyc3QyLCBfSW5wdXRJdGVyYXRvcjIgX19sYXN0MikKICAgIHsKCiAg
ICAgCiAgICAgCiAgICAgCgoKICAgICAKCgogICAgICA7CiAgICAgIDsKCiAgICAgIHJldHVybiBz
dGQ6Ol9faW5jbHVkZXMoX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xhc3QyLAogICAg
ICAgIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9sZXNzX2l0ZXIoKSk7CiAgICB9CiMgMjg3MyAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9i
aXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5
cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1lIF9Db21wYXJlPgogICAgaW5saW5l
IGJvb2wKICAgIGluY2x1ZGVzKF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0
b3IxIF9fbGFzdDEsCiAgICAgIF9JbnB1dEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0lucHV0SXRlcmF0
b3IyIF9fbGFzdDIsCiAgICAgIF9Db21wYXJlIF9fY29tcCkKICAgIHsKCiAgICAgCiAgICAgCiAg
ICAgCgoKICAgICAKCgogICAgICA7CiAgICAgIDsKCiAgICAgIHJldHVybiBzdGQ6Ol9faW5jbHVk
ZXMoX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xhc3QyLAogICAgICAgIF9fZ251X2N4
eDo6X19vcHM6Ol9faXRlcl9jb21wX2l0ZXIoX19jb21wKSk7CiAgICB9CiMgMjkwNiAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0
bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCB0
eXBlbmFtZSBfQ29tcGFyZT4KICAgIGJvb2wKICAgIF9fbmV4dF9wZXJtdXRhdGlvbihfQmlkaXJl
Y3Rpb25hbEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3Ig
X19sYXN0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFz
dCkKIHJldHVybiBmYWxzZTsKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2kgPSBfX2Zp
cnN0OwogICAgICArK19faTsKICAgICAgaWYgKF9faSA9PSBfX2xhc3QpCiByZXR1cm4gZmFsc2U7
CiAgICAgIF9faSA9IF9fbGFzdDsKICAgICAgLS1fX2k7CgogICAgICBmb3IoOzspCiB7CiAgIF9C
aWRpcmVjdGlvbmFsSXRlcmF0b3IgX19paSA9IF9faTsKICAgLS1fX2k7CiAgIGlmIChfX2NvbXAo
X19pLCBfX2lpKSkKICAgICB7CiAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9faiA9IF9f
bGFzdDsKICAgICAgIHdoaWxlICghX19jb21wKF9faSwgLS1fX2opKQogIHt9CiAgICAgICBzdGQ6
Oml0ZXJfc3dhcChfX2ksIF9faik7CiAgICAgICBzdGQ6Ol9fcmV2ZXJzZShfX2lpLCBfX2xhc3Qs
CiAgICAgICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICAgaWYgKF9faSA9PSBfX2ZpcnN0KQogICAgIHsKICAgICAgIHN0ZDo6
X19yZXZlcnNlKF9fZmlyc3QsIF9fbGFzdCwKICAgICAgICBzdGQ6Ol9faXRlcmF0b3JfY2F0ZWdv
cnkoX19maXJzdCkpOwogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KICAgIH0KIyAyOTU1
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRl
cmF0b3I+CiAgICBpbmxpbmUgYm9vbAogICAgbmV4dF9wZXJtdXRhdGlvbihfQmlkaXJlY3Rpb25h
bEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fbGFzdCkK
ICAgIHsKCiAgICAgCgogICAgIAoKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19uZXh0X3Bl
cm11dGF0aW9uCiAoX19maXJzdCwgX19sYXN0LCBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfbGVz
c19pdGVyKCkpOwogICAgfQojIDI5ODYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxp
bmUgYm9vbAogICAgbmV4dF9wZXJtdXRhdGlvbihfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fZmly
c3QsCiAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fbGFzdCwgX0NvbXBhcmUgX19jb21w
KQogICAgewoKICAgICAKCiAgICAgCgoKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19uZXh0
X3Blcm11dGF0aW9uCiAoX19maXJzdCwgX19sYXN0LCBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJf
Y29tcF9pdGVyKF9fY29tcCkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rp
b25hbEl0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGJvb2wKICAgIF9fcHJldl9wZXJt
dXRhdGlvbihfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgIF9CaWRpcmVj
dGlvbmFsSXRlcmF0b3IgX19sYXN0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIGlmIChf
X2ZpcnN0ID09IF9fbGFzdCkKIHJldHVybiBmYWxzZTsKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVy
YXRvciBfX2kgPSBfX2ZpcnN0OwogICAgICArK19faTsKICAgICAgaWYgKF9faSA9PSBfX2xhc3Qp
CiByZXR1cm4gZmFsc2U7CiAgICAgIF9faSA9IF9fbGFzdDsKICAgICAgLS1fX2k7CgogICAgICBm
b3IoOzspCiB7CiAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19paSA9IF9faTsKICAgLS1fX2k7
CiAgIGlmIChfX2NvbXAoX19paSwgX19pKSkKICAgICB7CiAgICAgICBfQmlkaXJlY3Rpb25hbEl0
ZXJhdG9yIF9faiA9IF9fbGFzdDsKICAgICAgIHdoaWxlICghX19jb21wKC0tX19qLCBfX2kpKQog
IHt9CiAgICAgICBzdGQ6Oml0ZXJfc3dhcChfX2ksIF9faik7CiAgICAgICBzdGQ6Ol9fcmV2ZXJz
ZShfX2lpLCBfX2xhc3QsCiAgICAgICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3Qp
KTsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgaWYgKF9faSA9PSBfX2ZpcnN0KQogICAg
IHsKICAgICAgIHN0ZDo6X19yZXZlcnNlKF9fZmlyc3QsIF9fbGFzdCwKICAgICAgICBzdGQ6Ol9f
aXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdCkpOwogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IH0KICAgIH0KIyAzMDUzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9C
aWRpcmVjdGlvbmFsSXRlcmF0b3I+CiAgICBpbmxpbmUgYm9vbAogICAgcHJldl9wZXJtdXRhdGlv
bihfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICBfQmlkaXJlY3Rpb25hbEl0
ZXJhdG9yIF9fbGFzdCkKICAgIHsKCiAgICAgCgogICAgIAoKICAgICAgOwoKICAgICAgcmV0dXJu
IHN0ZDo6X19wcmV2X3Blcm11dGF0aW9uKF9fZmlyc3QsIF9fbGFzdCwKICAgICAgICAgX19nbnVf
Y3h4OjpfX29wczo6X19pdGVyX2xlc3NfaXRlcigpKTsKICAgIH0KIyAzMDg0ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2Fs
Z28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IsIHR5cGVu
YW1lIF9Db21wYXJlPgogICAgaW5saW5lIGJvb2wKICAgIHByZXZfcGVybXV0YXRpb24oX0JpZGly
ZWN0aW9uYWxJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBf
X2xhc3QsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKCiAgICAgCgogICAgIAoKCiAgICAgIDsKCiAg
ICAgIHJldHVybiBzdGQ6Ol9fcHJldl9wZXJtdXRhdGlvbihfX2ZpcnN0LCBfX2xhc3QsCiAgICBf
X2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfY29tcF9pdGVyKF9fY29tcCkpOwogICAgfQoKCgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX091dHB1dEl0ZXJhdG9y
LAogICAgdHlwZW5hbWUgX1ByZWRpY2F0ZSwgdHlwZW5hbWUgX1RwPgogICAgX091dHB1dEl0ZXJh
dG9yCiAgICBfX3JlcGxhY2VfY29weV9pZihfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyYXRvciBfX2xhc3QsCiAgICAgICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LAogICAgICAg
IF9QcmVkaWNhdGUgX19wcmVkLCBjb25zdCBfVHAmIF9fbmV3X3ZhbHVlKQogICAgewogICAgICBm
b3IgKDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCwgKytfX3Jlc3VsdCkKIGlmIChfX3By
ZWQoX19maXJzdCkpCiAgICpfX3Jlc3VsdCA9IF9fbmV3X3ZhbHVlOwogZWxzZQogICAqX19yZXN1
bHQgPSAqX19maXJzdDsKICAgICAgcmV0dXJuIF9fcmVzdWx0OwogICAgfQojIDMxMzMgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9z
dGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1l
IF9PdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgogICAgaW5saW5lIF9PdXRwdXRJdGVyYXRv
cgogICAgcmVwbGFjZV9jb3B5KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9y
IF9fbGFzdCwKICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LAogICBjb25zdCBfVHAmIF9fb2xk
X3ZhbHVlLCBjb25zdCBfVHAmIF9fbmV3X3ZhbHVlKQogICAgewoKICAgICAKICAgICAKCiAgICAg
CgogICAgICA7CgogICAgICByZXR1cm4gc3RkOjpfX3JlcGxhY2VfY29weV9pZihfX2ZpcnN0LCBf
X2xhc3QsIF9fcmVzdWx0LAogICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfZXF1YWxzX3ZhbChf
X29sZF92YWx1ZSksCiAgICAgICAgICAgX19uZXdfdmFsdWUpOwogICAgfQojIDMxNjcgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9z
dGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1l
IF9PdXRwdXRJdGVyYXRvciwKICAgIHR5cGVuYW1lIF9QcmVkaWNhdGUsIHR5cGVuYW1lIF9UcD4K
ICAgIGlubGluZSBfT3V0cHV0SXRlcmF0b3IKICAgIHJlcGxhY2VfY29weV9pZihfSW5wdXRJdGVy
YXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgIF9PdXRwdXRJdGVyYXRv
ciBfX3Jlc3VsdCwKICAgICAgX1ByZWRpY2F0ZSBfX3ByZWQsIGNvbnN0IF9UcCYgX19uZXdfdmFs
dWUpCiAgICB7CgogICAgIAogICAgIAoKICAgICAKCiAgICAgIDsKCiAgICAgIHJldHVybiBzdGQ6
Ol9fcmVwbGFjZV9jb3B5X2lmKF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsCiAgICBfX2dudV9j
eHg6Ol9fb3BzOjpfX3ByZWRfaXRlcihfX3ByZWQpLAogICAgICAgICAgIF9fbmV3X3ZhbHVlKTsK
ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9QcmVk
aWNhdGU+CiAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcmF0b3I+OjpkaWZm
ZXJlbmNlX3R5cGUKICAgIF9fY291bnRfaWYoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0
SXRlcmF0b3IgX19sYXN0LCBfUHJlZGljYXRlIF9fcHJlZCkKICAgIHsKICAgICAgdHlwZW5hbWUg
aXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIF9fbiA9IDA7
CiAgICAgIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogaWYgKF9fcHJlZChf
X2ZpcnN0KSkKICAgKytfX247CiAgICAgIHJldHVybiBfX247CiAgICB9CiMgMzIwNiAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0
bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgaW5s
aW5lIGJvb2wKICAgIGlzX3NvcnRlZChfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJk
SXRlcmF0b3IgX19sYXN0KQogICAgeyByZXR1cm4gc3RkOjppc19zb3J0ZWRfdW50aWwoX19maXJz
dCwgX19sYXN0KSA9PSBfX2xhc3Q7IH0KIyAzMjIwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBs
YXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgaW5s
aW5lIGJvb2wKICAgIGlzX3NvcnRlZChfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJk
SXRlcmF0b3IgX19sYXN0LAogICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgeyByZXR1cm4gc3Rk
Ojppc19zb3J0ZWRfdW50aWwoX19maXJzdCwgX19sYXN0LCBfX2NvbXApID09IF9fbGFzdDsgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4K
ICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIF9faXNfc29ydGVkX3VudGlsKF9Gb3J3YXJkSXRlcmF0
b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgX0NvbXBhcmUgX19j
b21wKQogICAgewogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiByZXR1cm4gX19sYXN0OwoK
ICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX25leHQgPSBfX2ZpcnN0OwogICAgICBmb3IgKCsrX19u
ZXh0OyBfX25leHQgIT0gX19sYXN0OyBfX2ZpcnN0ID0gX19uZXh0LCArK19fbmV4dCkKIGlmIChf
X2NvbXAoX19uZXh0LCBfX2ZpcnN0KSkKICAgcmV0dXJuIF9fbmV4dDsKICAgICAgcmV0dXJuIF9f
bmV4dDsKICAgIH0KIyAzMjQ5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9Gb3J3YXJkSXRlcmF0b3I+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyYXRvcgogICAgaXNfc29y
dGVkX3VudGlsKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xh
c3QpCiAgICB7CgogICAgIAogICAgIAoKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19pc19z
b3J0ZWRfdW50aWwoX19maXJzdCwgX19sYXN0LAogICAgICAgIF9fZ251X2N4eDo6X19vcHM6Ol9f
aXRlcl9sZXNzX2l0ZXIoKSk7CiAgICB9CiMgMzI3MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlu
bGluZSBfRm9yd2FyZEl0ZXJhdG9yCiAgICBpc19zb3J0ZWRfdW50aWwoX0ZvcndhcmRJdGVyYXRv
ciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgX0NvbXBhcmUgX19jb21w
KQogICAgewoKICAgICAKICAgICAKCgogICAgICA7CgogICAgICByZXR1cm4gc3RkOjpfX2lzX3Nv
cnRlZF91bnRpbChfX2ZpcnN0LCBfX2xhc3QsCiAgICAgICAgX19nbnVfY3h4OjpfX29wczo6X19p
dGVyX2NvbXBfaXRlcihfX2NvbXApKTsKICAgIH0KIyAzMjk2ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBwYWlyPGNvbnN0IF9UcCYsIGNvbnN0
IF9UcCY+CiAgICBtaW5tYXgoY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iKQogICAgewoK
ICAgICAKCiAgICAgIHJldHVybiBfX2IgPCBfX2EgPyBwYWlyPGNvbnN0IF9UcCYsIGNvbnN0IF9U
cCY+KF9fYiwgX19hKQogICAgICAgICAgICAgICAgOiBwYWlyPGNvbnN0IF9UcCYsIGNvbnN0IF9U
cCY+KF9fYSwgX19iKTsKICAgIH0KIyAzMzE2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgcGFpcjxjb25zdCBf
VHAmLCBjb25zdCBfVHAmPgogICAgbWlubWF4KGNvbnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9f
YiwgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICByZXR1cm4gX19jb21wKF9fYiwgX19hKSA/
IHBhaXI8Y29uc3QgX1RwJiwgY29uc3QgX1RwJj4oX19iLCBfX2EpCiAgICAgICAgICAgICAgICAg
ICAgICAgOiBwYWlyPGNvbnN0IF9UcCYsIGNvbnN0IF9UcCY+KF9fYSwgX19iKTsKICAgIH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAg
ICBwYWlyPF9Gb3J3YXJkSXRlcmF0b3IsIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICBfX21pbm1heF9l
bGVtZW50KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3Qs
CiAgICAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19u
ZXh0ID0gX19maXJzdDsKICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0CiAgIHx8ICsrX19uZXh0
ID09IF9fbGFzdCkKIHJldHVybiBzdGQ6Om1ha2VfcGFpcihfX2ZpcnN0LCBfX2ZpcnN0KTsKCiAg
ICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19taW4sIF9fbWF4OwogICAgICBpZiAoX19jb21wKF9fbmV4
dCwgX19maXJzdCkpCiB7CiAgIF9fbWluID0gX19uZXh0OwogICBfX21heCA9IF9fZmlyc3Q7CiB9
CiAgICAgIGVsc2UKIHsKICAgX19taW4gPSBfX2ZpcnN0OwogICBfX21heCA9IF9fbmV4dDsKIH0K
CiAgICAgIF9fZmlyc3QgPSBfX25leHQ7CiAgICAgICsrX19maXJzdDsKCiAgICAgIHdoaWxlIChf
X2ZpcnN0ICE9IF9fbGFzdCkKIHsKICAgX19uZXh0ID0gX19maXJzdDsKICAgaWYgKCsrX19uZXh0
ID09IF9fbGFzdCkKICAgICB7CiAgICAgICBpZiAoX19jb21wKF9fZmlyc3QsIF9fbWluKSkKICBf
X21pbiA9IF9fZmlyc3Q7CiAgICAgICBlbHNlIGlmICghX19jb21wKF9fZmlyc3QsIF9fbWF4KSkK
ICBfX21heCA9IF9fZmlyc3Q7CiAgICAgICBicmVhazsKICAgICB9CgogICBpZiAoX19jb21wKF9f
bmV4dCwgX19maXJzdCkpCiAgICAgewogICAgICAgaWYgKF9fY29tcChfX25leHQsIF9fbWluKSkK
ICBfX21pbiA9IF9fbmV4dDsKICAgICAgIGlmICghX19jb21wKF9fZmlyc3QsIF9fbWF4KSkKICBf
X21heCA9IF9fZmlyc3Q7CiAgICAgfQogICBlbHNlCiAgICAgewogICAgICAgaWYgKF9fY29tcChf
X2ZpcnN0LCBfX21pbikpCiAgX19taW4gPSBfX2ZpcnN0OwogICAgICAgaWYgKCFfX2NvbXAoX19u
ZXh0LCBfX21heCkpCiAgX19tYXggPSBfX25leHQ7CiAgICAgfQoKICAgX19maXJzdCA9IF9fbmV4
dDsKICAgKytfX2ZpcnN0OwogfQoKICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKF9fbWluLCBf
X21heCk7CiAgICB9CiMgMzM5NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgaW5saW5lIHBhaXI8X0ZvcndhcmRJdGVyYXRvciwgX0Zv
cndhcmRJdGVyYXRvcj4KICAgIG1pbm1heF9lbGVtZW50KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJz
dCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpCiAgICB7CgogICAgIAogICAgIAoKICAgICAgOwoK
ICAgICAgcmV0dXJuIHN0ZDo6X19taW5tYXhfZWxlbWVudChfX2ZpcnN0LCBfX2xhc3QsCiAgICAg
ICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfbGVzc19pdGVyKCkpOwogICAgfQojIDM0MjAgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlw
ZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgcGFpcjxfRm9yd2FyZEl0ZXJhdG9yLCBfRm9yd2Fy
ZEl0ZXJhdG9yPgogICAgbWlubWF4X2VsZW1lbnQoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBf
Rm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CgogICAg
IAogICAgIAoKCiAgICAgIDsKCiAgICAgIHJldHVybiBzdGQ6Ol9fbWlubWF4X2VsZW1lbnQoX19m
aXJzdCwgX19sYXN0LAogICAgICAgX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2NvbXBfaXRlcihf
X2NvbXApKTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBfVHAK
ICAgIG1pbihpbml0aWFsaXplcl9saXN0PF9UcD4gX19sKQogICAgeyByZXR1cm4gKnN0ZDo6bWlu
X2VsZW1lbnQoX19sLmJlZ2luKCksIF9fbC5lbmQoKSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlubGluZSBfVHAKICAgIG1pbihpbml0aWFsaXpl
cl9saXN0PF9UcD4gX19sLCBfQ29tcGFyZSBfX2NvbXApCiAgICB7IHJldHVybiAqc3RkOjptaW5f
ZWxlbWVudChfX2wuYmVnaW4oKSwgX19sLmVuZCgpLCBfX2NvbXApOyB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIGlubGluZSBfVHAKICAgIG1heChpbml0aWFsaXplcl9saXN0PF9UcD4g
X19sKQogICAgeyByZXR1cm4gKnN0ZDo6bWF4X2VsZW1lbnQoX19sLmJlZ2luKCksIF9fbC5lbmQo
KSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlu
bGluZSBfVHAKICAgIG1heChpbml0aWFsaXplcl9saXN0PF9UcD4gX19sLCBfQ29tcGFyZSBfX2Nv
bXApCiAgICB7IHJldHVybiAqc3RkOjptYXhfZWxlbWVudChfX2wuYmVnaW4oKSwgX19sLmVuZCgp
LCBfX2NvbXApOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBwYWlyPF9U
cCwgX1RwPgogICAgbWlubWF4KGluaXRpYWxpemVyX2xpc3Q8X1RwPiBfX2wpCiAgICB7CiAgICAg
IHBhaXI8Y29uc3QgX1RwKiwgY29uc3QgX1RwKj4gX19wID0KIHN0ZDo6bWlubWF4X2VsZW1lbnQo
X19sLmJlZ2luKCksIF9fbC5lbmQoKSk7CiAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigqX19w
LmZpcnN0LCAqX19wLnNlY29uZCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlw
ZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgcGFpcjxfVHAsIF9UcD4KICAgIG1pbm1heChpbml0
aWFsaXplcl9saXN0PF9UcD4gX19sLCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHBhaXI8
Y29uc3QgX1RwKiwgY29uc3QgX1RwKj4gX19wID0KIHN0ZDo6bWlubWF4X2VsZW1lbnQoX19sLmJl
Z2luKCksIF9fbC5lbmQoKSwgX19jb21wKTsKICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKCpf
X3AuZmlyc3QsICpfX3Auc2Vjb25kKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zvcndh
cmRJdGVyYXRvcjEsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IyLAogICAgdHlwZW5hbWUgX0Jp
bmFyeVByZWRpY2F0ZT4KICAgIGJvb2wKICAgIF9faXNfcGVybXV0YXRpb24oX0ZvcndhcmRJdGVy
YXRvcjEgX19maXJzdDEsIF9Gb3J3YXJkSXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgICBfRm9yd2Fy
ZEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0JpbmFyeVByZWRpY2F0ZSBfX3ByZWQpCiAgICB7CgoKICAg
ICAgZm9yICg7IF9fZmlyc3QxICE9IF9fbGFzdDE7ICsrX19maXJzdDEsICsrX19maXJzdDIpCiBp
ZiAoIV9fcHJlZChfX2ZpcnN0MSwgX19maXJzdDIpKQogICBicmVhazsKCiAgICAgIGlmIChfX2Zp
cnN0MSA9PSBfX2xhc3QxKQogcmV0dXJuIHRydWU7CgoKCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3Iy
IF9fbGFzdDIgPSBfX2ZpcnN0MjsKICAgICAgc3RkOjphZHZhbmNlKF9fbGFzdDIsIHN0ZDo6ZGlz
dGFuY2UoX19maXJzdDEsIF9fbGFzdDEpKTsKICAgICAgZm9yIChfRm9yd2FyZEl0ZXJhdG9yMSBf
X3NjYW4gPSBfX2ZpcnN0MTsgX19zY2FuICE9IF9fbGFzdDE7ICsrX19zY2FuKQogewogICBpZiAo
X19zY2FuICE9IHN0ZDo6X19maW5kX2lmKF9fZmlyc3QxLCBfX3NjYW4sCiAgICAgX19nbnVfY3h4
OjpfX29wczo6X19pdGVyX2NvbXBfaXRlcihfX3ByZWQsIF9fc2NhbikpKQogICAgIGNvbnRpbnVl
OwoKICAgYXV0byBfX21hdGNoZXMKICAgICA9IHN0ZDo6X19jb3VudF9pZihfX2ZpcnN0MiwgX19s
YXN0MiwKICAgX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2NvbXBfaXRlcihfX3ByZWQsIF9fc2Nh
bikpOwogICBpZiAoMCA9PSBfX21hdGNoZXMgfHwKICAgICAgIHN0ZDo6X19jb3VudF9pZihfX3Nj
YW4sIF9fbGFzdDEsCiAgIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9jb21wX2l0ZXIoX19wcmVk
LCBfX3NjYW4pKQogICAgICAgIT0gX19tYXRjaGVzKQogICAgIHJldHVybiBmYWxzZTsKIH0KICAg
ICAgcmV0dXJuIHRydWU7CiAgICB9CiMgMzUyNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcjI+
CiAgICBpbmxpbmUgYm9vbAogICAgaXNfcGVybXV0YXRpb24oX0ZvcndhcmRJdGVyYXRvcjEgX19m
aXJzdDEsIF9Gb3J3YXJkSXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgX0ZvcndhcmRJdGVyYXRvcjIg
X19maXJzdDIpCiAgICB7CgogICAgIAogICAgIAogICAgIAoKCiAgICAgIDsKCiAgICAgIHJldHVy
biBzdGQ6Ol9faXNfcGVybXV0YXRpb24oX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyLAogICAg
ICAgX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2VxdWFsX3RvX2l0ZXIoKSk7CiAgICB9CiMgMzU1
NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9y
MSwgdHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfQmluYXJ5UHJlZGlj
YXRlPgogICAgaW5saW5lIGJvb2wKICAgIGlzX3Blcm11dGF0aW9uKF9Gb3J3YXJkSXRlcmF0b3Ix
IF9fZmlyc3QxLCBfRm9yd2FyZEl0ZXJhdG9yMSBfX2xhc3QxLAogICAgIF9Gb3J3YXJkSXRlcmF0
b3IyIF9fZmlyc3QyLCBfQmluYXJ5UHJlZGljYXRlIF9fcHJlZCkKICAgIHsKCiAgICAgCiAgICAg
CiAgICAgCgoKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19pc19wZXJtdXRhdGlvbihfX2Zp
cnN0MSwgX19sYXN0MSwgX19maXJzdDIsCiAgICAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJf
Y29tcF9pdGVyKF9fcHJlZCkpOwogICAgfQojIDM3MDMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLAogICAgdHlwZW5hbWUgX1VuaWZv
cm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAgICB2b2lkCiAgICBzaHVmZmxlKF9SYW5kb21BY2Nl
c3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgIF9V
bmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiYgX19nKQogICAgewoKICAgICAKCiAgICAgIDsK
CiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKIHJldHVybjsKCiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OmRpZmZlcmVuY2Vf
dHlwZQogX0Rpc3RhbmNlVHlwZTsKCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjptYWtlX3Vu
c2lnbmVkPF9EaXN0YW5jZVR5cGU+Ojp0eXBlIF9fdWRfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxfX3VkX3R5cGU+IF9fZGlzdHJfdHlw
ZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2Rpc3RyX3R5cGU6OnBhcmFtX3R5cGUgX19wX3R5
cGU7CiAgICAgIF9fZGlzdHJfdHlwZSBfX2Q7CgogICAgICBmb3IgKF9SYW5kb21BY2Nlc3NJdGVy
YXRvciBfX2kgPSBfX2ZpcnN0ICsgMTsgX19pICE9IF9fbGFzdDsgKytfX2kpCiBzdGQ6Oml0ZXJf
c3dhcChfX2ksIF9fZmlyc3QgKyBfX2QoX19nLCBfX3BfdHlwZSgwLCBfX2kgLSBfX2ZpcnN0KSkp
OwogICAgfQoKCgoKCgoKIyAzNzQ4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfRnVuY3Rpb24+CiAgICBfRnVuY3Rpb24KICAg
IGZvcl9lYWNoKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwg
X0Z1bmN0aW9uIF9fZikKICAgIHsKCiAgICAgCiAgICAgIDsKICAgICAgZm9yICg7IF9fZmlyc3Qg
IT0gX19sYXN0OyArK19fZmlyc3QpCiBfX2YoKl9fZmlyc3QpOwogICAgICByZXR1cm4gc3RkOjpt
b3ZlKF9fZik7CiAgICB9CiMgMzc2OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgogICAgaW5saW5lIF9JbnB1dEl0ZXJh
dG9yCiAgICBmaW5kKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFz
dCwKICBjb25zdCBfVHAmIF9fdmFsKQogICAgewoKICAgICAKICAgICAKCiAgICAgIDsKICAgICAg
cmV0dXJuIHN0ZDo6X19maW5kX2lmKF9fZmlyc3QsIF9fbGFzdCwKICAgICAgIF9fZ251X2N4eDo6
X19vcHM6Ol9faXRlcl9lcXVhbHNfdmFsKF9fdmFsKSk7CiAgICB9CiMgMzc5MyAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9h
bGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX1By
ZWRpY2F0ZT4KICAgIGlubGluZSBfSW5wdXRJdGVyYXRvcgogICAgZmluZF9pZihfSW5wdXRJdGVy
YXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgX1ByZWRpY2F0ZSBfX3By
ZWQpCiAgICB7CgogICAgIAogICAgIAoKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19maW5k
X2lmKF9fZmlyc3QsIF9fbGFzdCwKICAgICAgIF9fZ251X2N4eDo6X19vcHM6Ol9fcHJlZF9pdGVy
KF9fcHJlZCkpOwogICAgfQojIDM4MjQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICBfSW5w
dXRJdGVyYXRvcgogICAgZmluZF9maXJzdF9vZihfSW5wdXRJdGVyYXRvciBfX2ZpcnN0MSwgX0lu
cHV0SXRlcmF0b3IgX19sYXN0MSwKICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdDIsIF9Gb3J3
YXJkSXRlcmF0b3IgX19sYXN0MikKICAgIHsKCiAgICAgCiAgICAgCiAgICAgCgoKICAgICAgOwog
ICAgICA7CgogICAgICBmb3IgKDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0MSkKIGZv
ciAoX0ZvcndhcmRJdGVyYXRvciBfX2l0ZXIgPSBfX2ZpcnN0MjsgX19pdGVyICE9IF9fbGFzdDI7
ICsrX19pdGVyKQogICBpZiAoKl9fZmlyc3QxID09ICpfX2l0ZXIpCiAgICAgcmV0dXJuIF9fZmly
c3QxOwogICAgICByZXR1cm4gX19sYXN0MTsKICAgIH0KIyAzODY0ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIg
MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfRm9yd2FyZEl0
ZXJhdG9yLAogICAgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAgIF9JbnB1dEl0ZXJhdG9y
CiAgICBmaW5kX2ZpcnN0X29mKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QxLCBfSW5wdXRJdGVyYXRv
ciBfX2xhc3QxLAogICAgX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0MiwgX0ZvcndhcmRJdGVyYXRv
ciBfX2xhc3QyLAogICAgX0JpbmFyeVByZWRpY2F0ZSBfX2NvbXApCiAgICB7CgogICAgIAogICAg
IAogICAgIAoKCiAgICAgIDsKICAgICAgOwoKICAgICAgZm9yICg7IF9fZmlyc3QxICE9IF9fbGFz
dDE7ICsrX19maXJzdDEpCiBmb3IgKF9Gb3J3YXJkSXRlcmF0b3IgX19pdGVyID0gX19maXJzdDI7
IF9faXRlciAhPSBfX2xhc3QyOyArK19faXRlcikKICAgaWYgKF9fY29tcCgqX19maXJzdDEsICpf
X2l0ZXIpKQogICAgIHJldHVybiBfX2ZpcnN0MTsKICAgICAgcmV0dXJuIF9fbGFzdDE7CiAgICB9
CiMgMzg5NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0
ZXJhdG9yPgogICAgaW5saW5lIF9Gb3J3YXJkSXRlcmF0b3IKICAgIGFkamFjZW50X2ZpbmQoX0Zv
cndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCkKICAgIHsKCiAg
ICAgCiAgICAgCgogICAgICA7CgogICAgICByZXR1cm4gc3RkOjpfX2FkamFjZW50X2ZpbmQoX19m
aXJzdCwgX19sYXN0LAogICAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfZXF1YWxfdG9faXRl
cigpKTsKICAgIH0KIyAzOTIxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+CiAgICBpbmxpbmUg
X0ZvcndhcmRJdGVyYXRvcgogICAgYWRqYWNlbnRfZmluZChfRm9yd2FyZEl0ZXJhdG9yIF9fZmly
c3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFy
eV9wcmVkKQogICAgewoKICAgICAKICAgICAKCgogICAgICA7CgogICAgICByZXR1cm4gc3RkOjpf
X2FkamFjZW50X2ZpbmQoX19maXJzdCwgX19sYXN0LAogICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0
ZXJfY29tcF9pdGVyKF9fYmluYXJ5X3ByZWQpKTsKICAgIH0KIyAzOTQ2ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28u
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+CiAg
ICBpbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlmZmVy
ZW5jZV90eXBlCiAgICBjb3VudChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRv
ciBfX2xhc3QsIGNvbnN0IF9UcCYgX192YWx1ZSkKICAgIHsKCiAgICAgCiAgICAgCgogICAgICA7
CgogICAgICByZXR1cm4gc3RkOjpfX2NvdW50X2lmKF9fZmlyc3QsIF9fbGFzdCwKICAgICAgICBf
X2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfZXF1YWxzX3ZhbChfX3ZhbHVlKSk7CiAgICB9CiMgMzk2
OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwg
dHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIGlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8
X0lucHV0SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKICAgIGNvdW50X2lmKF9JbnB1dEl0ZXJh
dG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgX1ByZWRpY2F0ZSBfX3ByZWQpCiAg
ICB7CgogICAgIAogICAgIAoKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19jb3VudF9pZihf
X2ZpcnN0LCBfX2xhc3QsCiAgICAgICAgX19nbnVfY3h4OjpfX29wczo6X19wcmVkX2l0ZXIoX19w
cmVkKSk7CiAgICB9CiMgNDAwOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcjI+CiAgICBpbmxp
bmUgX0ZvcndhcmRJdGVyYXRvcjEKICAgIHNlYXJjaChfRm9yd2FyZEl0ZXJhdG9yMSBfX2ZpcnN0
MSwgX0ZvcndhcmRJdGVyYXRvcjEgX19sYXN0MSwKICAgIF9Gb3J3YXJkSXRlcmF0b3IyIF9fZmly
c3QyLCBfRm9yd2FyZEl0ZXJhdG9yMiBfX2xhc3QyKQogICAgewoKICAgICAKICAgICAKICAgICAK
CgogICAgICA7CiAgICAgIDsKCiAgICAgIHJldHVybiBzdGQ6Ol9fc2VhcmNoKF9fZmlyc3QxLCBf
X2xhc3QxLCBfX2ZpcnN0MiwgX19sYXN0MiwKICAgICAgX19nbnVfY3h4OjpfX29wczo6X19pdGVy
X2VxdWFsX3RvX2l0ZXIoKSk7CiAgICB9CiMgNDA0OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRv
cjIsCiAgICB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAgaW5saW5lIF9Gb3J3YXJkSXRl
cmF0b3IxCiAgICBzZWFyY2goX0ZvcndhcmRJdGVyYXRvcjEgX19maXJzdDEsIF9Gb3J3YXJkSXRl
cmF0b3IxIF9fbGFzdDEsCiAgICBfRm9yd2FyZEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0ZvcndhcmRJ
dGVyYXRvcjIgX19sYXN0MiwKICAgIF9CaW5hcnlQcmVkaWNhdGUgX19wcmVkaWNhdGUpCiAgICB7
CgogICAgIAogICAgIAogICAgIAoKCiAgICAgIDsKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6
X19zZWFyY2goX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xhc3QyLAogICAgICBfX2du
dV9jeHg6Ol9fb3BzOjpfX2l0ZXJfY29tcF9pdGVyKF9fcHJlZGljYXRlKSk7CiAgICB9CiMgNDA4
MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9y
LCB0eXBlbmFtZSBfSW50ZWdlciwgdHlwZW5hbWUgX1RwPgogICAgaW5saW5lIF9Gb3J3YXJkSXRl
cmF0b3IKICAgIHNlYXJjaF9uKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVy
YXRvciBfX2xhc3QsCiAgICAgIF9JbnRlZ2VyIF9fY291bnQsIGNvbnN0IF9UcCYgX192YWwpCiAg
ICB7CgogICAgIAogICAgIAoKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19zZWFyY2hfbihf
X2ZpcnN0LCBfX2xhc3QsIF9fY291bnQsCiAgICAgICAgX19nbnVfY3h4OjpfX29wczo6X19pdGVy
X2VxdWFsc192YWwoX192YWwpKTsKICAgIH0KIyA0MTE2ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRl
bXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9JbnRlZ2VyLCB0eXBl
bmFtZSBfVHAsCiAgICAgICAgICAgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAgIGlubGlu
ZSBfRm9yd2FyZEl0ZXJhdG9yCiAgICBzZWFyY2hfbihfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3Qs
IF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICBfSW50ZWdlciBfX2NvdW50LCBjb25zdCBf
VHAmIF9fdmFsLAogICAgICBfQmluYXJ5UHJlZGljYXRlIF9fYmluYXJ5X3ByZWQpCiAgICB7Cgog
ICAgIAogICAgIAoKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19zZWFyY2hfbihfX2ZpcnN0
LCBfX2xhc3QsIF9fY291bnQsCiAgX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2NvbXBfdmFsKF9f
YmluYXJ5X3ByZWQsIF9fdmFsKSk7CiAgICB9CiMgNDE1MCAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX091dHB1dEl0ZXJhdG9y
LAogICAgdHlwZW5hbWUgX1VuYXJ5T3BlcmF0aW9uPgogICAgX091dHB1dEl0ZXJhdG9yCiAgICB0
cmFuc2Zvcm0oX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAog
ICAgICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LCBfVW5hcnlPcGVyYXRpb24gX191bmFyeV9v
cCkKICAgIHsKCiAgICAgCiAgICAgCgoKICAgICAgOwoKICAgICAgZm9yICg7IF9fZmlyc3QgIT0g
X19sYXN0OyArK19fZmlyc3QsICsrX19yZXN1bHQpCiAqX19yZXN1bHQgPSBfX3VuYXJ5X29wKCpf
X2ZpcnN0KTsKICAgICAgcmV0dXJuIF9fcmVzdWx0OwogICAgfQojIDQxODcgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxn
by5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5w
dXRJdGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9CaW5h
cnlPcGVyYXRpb24+CiAgICBfT3V0cHV0SXRlcmF0b3IKICAgIHRyYW5zZm9ybShfSW5wdXRJdGVy
YXRvcjEgX19maXJzdDEsIF9JbnB1dEl0ZXJhdG9yMSBfX2xhc3QxLAogICAgICAgX0lucHV0SXRl
cmF0b3IyIF9fZmlyc3QyLCBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQsCiAgICAgICBfQmluYXJ5
T3BlcmF0aW9uIF9fYmluYXJ5X29wKQogICAgewoKICAgICAKICAgICAKICAgICAKCgogICAgICA7
CgogICAgICBmb3IgKDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0MSwgKytfX2ZpcnN0
MiwgKytfX3Jlc3VsdCkKICpfX3Jlc3VsdCA9IF9fYmluYXJ5X29wKCpfX2ZpcnN0MSwgKl9fZmly
c3QyKTsKICAgICAgcmV0dXJuIF9fcmVzdWx0OwogICAgfQojIDQyMjAgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnby5o
IiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgog
ICAgdm9pZAogICAgcmVwbGFjZShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRl
cmF0b3IgX19sYXN0LAogICAgIGNvbnN0IF9UcCYgX19vbGRfdmFsdWUsIGNvbnN0IF9UcCYgX19u
ZXdfdmFsdWUpCiAgICB7CgogICAgIAoKICAgICAKCiAgICAgCgogICAgICA7CgogICAgICBmb3Ig
KDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKIGlmICgqX19maXJzdCA9PSBfX29sZF92
YWx1ZSkKICAgKl9fZmlyc3QgPSBfX25ld192YWx1ZTsKICAgIH0KIyA0MjUyICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2Fs
Z28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9Q
cmVkaWNhdGUsIHR5cGVuYW1lIF9UcD4KICAgIHZvaWQKICAgIHJlcGxhY2VfaWYoX0ZvcndhcmRJ
dGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICBfUHJlZGlj
YXRlIF9fcHJlZCwgY29uc3QgX1RwJiBfX25ld192YWx1ZSkKICAgIHsKCiAgICAgCgogICAgIAoK
ICAgICAKCiAgICAgIDsKCiAgICAgIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0
KQogaWYgKF9fcHJlZCgqX19maXJzdCkpCiAgICpfX2ZpcnN0ID0gX19uZXdfdmFsdWU7CiAgICB9
CiMgNDI4NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0
ZXJhdG9yLCB0eXBlbmFtZSBfR2VuZXJhdG9yPgogICAgdm9pZAogICAgZ2VuZXJhdGUoX0Zvcndh
cmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgX0dlbmVy
YXRvciBfX2dlbikKICAgIHsKCiAgICAgCiAgICAgCgogICAgICA7CgogICAgICBmb3IgKDsgX19m
aXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICpfX2ZpcnN0ID0gX19nZW4oKTsKICAgIH0KIyA0
MzE1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRv
ciwgdHlwZW5hbWUgX1NpemUsIHR5cGVuYW1lIF9HZW5lcmF0b3I+CiAgICBfT3V0cHV0SXRlcmF0
b3IKICAgIGdlbmVyYXRlX24oX091dHB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9TaXplIF9fbiwgX0dl
bmVyYXRvciBfX2dlbikKICAgIHsKCiAgICAgCgoKCiAgICAgIGZvciAoX19kZWNsdHlwZShfX24g
KyAwKSBfX25pdGVyID0gX19uOwogICAgX19uaXRlciA+IDA7IC0tX19uaXRlciwgKytfX2ZpcnN0
KQogKl9fZmlyc3QgPSBfX2dlbigpOwogICAgICByZXR1cm4gX19maXJzdDsKICAgIH0KIyA0MzUx
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0
eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+CiAgICBpbmxpbmUgX091dHB1dEl0ZXJhdG9yCiAgICB1
bmlxdWVfY29weShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3Qs
CiAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0KQogICAgewoKICAgICAKICAgICAKCiAgICAgCgog
ICAgICA7CgogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiByZXR1cm4gX19yZXN1bHQ7CiAg
ICAgIHJldHVybiBzdGQ6Ol9fdW5pcXVlX2NvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwK
ICAgIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9lcXVhbF90b19pdGVyKCksCiAgICBzdGQ6Ol9f
aXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdCksCiAgICBzdGQ6Ol9faXRlcmF0b3JfY2F0ZWdvcnko
X19yZXN1bHQpKTsKICAgIH0KIyA0MzkxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IsCiAgICB0eXBl
bmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAgaW5saW5lIF9PdXRwdXRJdGVyYXRvcgogICAgdW5p
cXVlX2NvcHkoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAog
IF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCwKICBfQmluYXJ5UHJlZGljYXRlIF9fYmluYXJ5X3By
ZWQpCiAgICB7CgogICAgIAogICAgIAoKICAgICAgOwoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19s
YXN0KQogcmV0dXJuIF9fcmVzdWx0OwogICAgICByZXR1cm4gc3RkOjpfX3VuaXF1ZV9jb3B5KF9f
Zmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsCiAgIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9jb21w
X2l0ZXIoX19iaW5hcnlfcHJlZCksCiAgICBzdGQ6Ol9faXRlcmF0b3JfY2F0ZWdvcnkoX19maXJz
dCksCiAgICBzdGQ6Ol9faXRlcmF0b3JfY2F0ZWdvcnkoX19yZXN1bHQpKTsKICAgIH0KIyA0NDIz
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVy
YXRvcj4KICAgIGlubGluZSB2b2lkCiAgICByYW5kb21fc2h1ZmZsZShfUmFuZG9tQWNjZXNzSXRl
cmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsKCiAgICAg
CgogICAgICA7CgogICAgICBpZiAoX19maXJzdCAhPSBfX2xhc3QpCiBmb3IgKF9SYW5kb21BY2Nl
c3NJdGVyYXRvciBfX2kgPSBfX2ZpcnN0ICsgMTsgX19pICE9IF9fbGFzdDsgKytfX2kpCiAgIHsK
ICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19qID0gX19maXJzdAogICAgICsgc3RkOjpyYW5k
KCkgJSAoKF9faSAtIF9fZmlyc3QpICsgMSk7CiAgICAgaWYgKF9faSAhPSBfX2opCiAgICAgICBz
dGQ6Oml0ZXJfc3dhcChfX2ksIF9faik7CiAgIH0KICAgIH0KIyA0NDU2ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28u
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUg
X1JhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgIHZvaWQKICAgIHJhbmRvbV9zaHVmZmxlKF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAoK
ICAgICBfUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiYgX19yYW5kKQoKCgogICAgewoKICAgICAKCiAg
ICAgIDsKCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKIHJldHVybjsKICAgICAgZm9yIChf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19pID0gX19maXJzdCArIDE7IF9faSAhPSBfX2xhc3Q7ICsr
X19pKQogewogICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19qID0gX19maXJzdCArIF9fcmFuZCgo
X19pIC0gX19maXJzdCkgKyAxKTsKICAgaWYgKF9faSAhPSBfX2opCiAgICAgc3RkOjppdGVyX3N3
YXAoX19pLCBfX2opOwogfQogICAgfQojIDQ0OTYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIGlu
bGluZSBfRm9yd2FyZEl0ZXJhdG9yCiAgICBwYXJ0aXRpb24oX0ZvcndhcmRJdGVyYXRvciBfX2Zp
cnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgIF9QcmVkaWNhdGUgX19wcmVkKQog
ICAgewoKICAgICAKCiAgICAgCgogICAgICA7CgogICAgICByZXR1cm4gc3RkOjpfX3BhcnRpdGlv
bihfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCwKICAgICAgICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVn
b3J5KF9fZmlyc3QpKTsKICAgIH0KIyA0NTI5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAgIGlubGluZSB2b2lkCiAgICBwYXJ0
aWFsX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAgIF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciBfX21pZGRsZSwKICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsK
CiAgICAgCgogICAgIAoKICAgICAgOwogICAgICA7CgogICAgICBzdGQ6Ol9fcGFydGlhbF9zb3J0
KF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QsCiAgICAgX19nbnVfY3h4OjpfX29wczo6X19pdGVy
X2xlc3NfaXRlcigpKTsKICAgIH0KIyA0NTY2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBp
bmxpbmUgdm9pZAogICAgcGFydGlhbF9zb3J0KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0
LAogICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19taWRkbGUsCiAgIF9SYW5kb21BY2Nlc3NJdGVy
YXRvciBfX2xhc3QsCiAgIF9Db21wYXJlIF9fY29tcCkKICAgIHsKCiAgICAgCgogICAgIAoKCiAg
ICAgIDsKICAgICAgOwoKICAgICAgc3RkOjpfX3BhcnRpYWxfc29ydChfX2ZpcnN0LCBfX21pZGRs
ZSwgX19sYXN0LAogICAgIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9jb21wX2l0ZXIoX19jb21w
KSk7CiAgICB9CiMgNDYwMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
UmFuZG9tQWNjZXNzSXRlcmF0b3I+CiAgICBpbmxpbmUgdm9pZAogICAgbnRoX2VsZW1lbnQoX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX250aCwK
ICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQogICAgewoKICAgICAKCiAgICAgCgogICAg
ICA7CiAgICAgIDsKCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCB8fCBfX250aCA9PSBfX2xh
c3QpCiByZXR1cm47CgogICAgICBzdGQ6Ol9faW50cm9zZWxlY3QoX19maXJzdCwgX19udGgsIF9f
bGFzdCwKICAgIHN0ZDo6X19sZyhfX2xhc3QgLSBfX2ZpcnN0KSAqIDIsCiAgICBfX2dudV9jeHg6
Ol9fb3BzOjpfX2l0ZXJfbGVzc19pdGVyKCkpOwogICAgfQojIDQ2MzkgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnby5o
IiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBf
Q29tcGFyZT4KICAgIGlubGluZSB2b2lkCiAgICBudGhfZWxlbWVudChfUmFuZG9tQWNjZXNzSXRl
cmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbnRoLAogIF9SYW5kb21BY2Nl
c3NJdGVyYXRvciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKCiAgICAgCgogICAgIAoK
CiAgICAgIDsKICAgICAgOwoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0IHx8IF9fbnRoID09
IF9fbGFzdCkKIHJldHVybjsKCiAgICAgIHN0ZDo6X19pbnRyb3NlbGVjdChfX2ZpcnN0LCBfX250
aCwgX19sYXN0LAogICAgc3RkOjpfX2xnKF9fbGFzdCAtIF9fZmlyc3QpICogMiwKICAgIF9fZ251
X2N4eDo6X19vcHM6Ol9faXRlcl9jb21wX2l0ZXIoX19jb21wKSk7CiAgICB9CiMgNDY3NSAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+
CiAgICBpbmxpbmUgdm9pZAogICAgc29ydChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsKCiAgICAgCgogICAgIAoKICAgICAg
OwoKICAgICAgc3RkOjpfX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX2dudV9jeHg6Ol9fb3BzOjpf
X2l0ZXJfbGVzc19pdGVyKCkpOwogICAgfQojIDQ3MDQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4K
ICAgIGlubGluZSB2b2lkCiAgICBzb3J0KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogIF9Db21wYXJlIF9fY29tcCkKICAgIHsKCiAg
ICAgCgogICAgIAoKCiAgICAgIDsKCiAgICAgIHN0ZDo6X19zb3J0KF9fZmlyc3QsIF9fbGFzdCwg
X19nbnVfY3h4OjpfX29wczo6X19pdGVyX2NvbXBfaXRlcihfX2NvbXApKTsKICAgIH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjIs
CiAgICB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgX091
dHB1dEl0ZXJhdG9yCiAgICBfX21lcmdlKF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0
SXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgX0lucHV0SXRlcmF0b3IyIF9fZmlyc3QyLCBfSW5wdXRJ
dGVyYXRvcjIgX19sYXN0MiwKICAgICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQsIF9Db21wYXJl
IF9fY29tcCkKICAgIHsKICAgICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJz
dDIgIT0gX19sYXN0MikKIHsKICAgaWYgKF9fY29tcChfX2ZpcnN0MiwgX19maXJzdDEpKQogICAg
IHsKICAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MjsKICAgICAgICsrX19maXJzdDI7CiAgICAg
fQogICBlbHNlCiAgICAgewogICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAgICAgKytf
X2ZpcnN0MTsKICAgICB9CiAgICsrX19yZXN1bHQ7CiB9CiAgICAgIHJldHVybiBzdGQ6OmNvcHko
X19maXJzdDIsIF9fbGFzdDIsCiAgICAgICAgIHN0ZDo6Y29weShfX2ZpcnN0MSwgX19sYXN0MSwg
X19yZXN1bHQpKTsKICAgIH0KIyA0NzY0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0lucHV0SXRlcmF0b3IyLAogICAgdHlw
ZW5hbWUgX091dHB1dEl0ZXJhdG9yPgogICAgaW5saW5lIF9PdXRwdXRJdGVyYXRvcgogICAgbWVy
Z2UoX0lucHV0SXRlcmF0b3IxIF9fZmlyc3QxLCBfSW5wdXRJdGVyYXRvcjEgX19sYXN0MSwKICAg
X0lucHV0SXRlcmF0b3IyIF9fZmlyc3QyLCBfSW5wdXRJdGVyYXRvcjIgX19sYXN0MiwKICAgX091
dHB1dEl0ZXJhdG9yIF9fcmVzdWx0KQogICAgewoKICAgICAKICAgICAKICAgICAKCiAgICAgCgog
ICAgIAoKCiAgICAgIDsKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19tZXJnZShfX2ZpcnN0
MSwgX19sYXN0MSwKICAgICAgICAgX19maXJzdDIsIF9fbGFzdDIsIF9fcmVzdWx0LAogICAgICAg
ICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfbGVzc19pdGVyKCkpOwogICAgfQojIDQ4MTIgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IxLCB0eXBl
bmFtZSBfSW5wdXRJdGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IsIHR5cGVu
YW1lIF9Db21wYXJlPgogICAgaW5saW5lIF9PdXRwdXRJdGVyYXRvcgogICAgbWVyZ2UoX0lucHV0
SXRlcmF0b3IxIF9fZmlyc3QxLCBfSW5wdXRJdGVyYXRvcjEgX19sYXN0MSwKICAgX0lucHV0SXRl
cmF0b3IyIF9fZmlyc3QyLCBfSW5wdXRJdGVyYXRvcjIgX19sYXN0MiwKICAgX091dHB1dEl0ZXJh
dG9yIF9fcmVzdWx0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CgogICAgIAogICAgIAogICAgIAoK
ICAgICAKCiAgICAgCgoKICAgICAgOwogICAgICA7CgogICAgICByZXR1cm4gc3RkOjpfX21lcmdl
KF9fZmlyc3QxLCBfX2xhc3QxLAogICAgX19maXJzdDIsIF9fbGFzdDIsIF9fcmVzdWx0LAogICAg
X19nbnVfY3h4OjpfX29wczo6X19pdGVyX2NvbXBfaXRlcihfX2NvbXApKTsKICAgIH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4K
ICAgIGlubGluZSB2b2lkCiAgICBfX3N0YWJsZV9zb3J0KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgX0NvbXBhcmUgX19jb21w
KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNj
ZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlOwogICAgICB0eXBlZGVmIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5
cGUKIF9EaXN0YW5jZVR5cGU7CgogICAgICB0eXBlZGVmIF9UZW1wb3JhcnlfYnVmZmVyPF9SYW5k
b21BY2Nlc3NJdGVyYXRvciwgX1ZhbHVlVHlwZT4gX1RtcEJ1ZjsKICAgICAgX1RtcEJ1ZiBfX2J1
ZihfX2ZpcnN0LCBfX2xhc3QpOwoKICAgICAgaWYgKF9fYnVmLmJlZ2luKCkgPT0gMCkKIHN0ZDo6
X19pbnBsYWNlX3N0YWJsZV9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19jb21wKTsKICAgICAgZWxz
ZQogc3RkOjpfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9fZmlyc3QsIF9fbGFzdCwgX19idWYuYmVn
aW4oKSwKICAgICAgICBfRGlzdGFuY2VUeXBlKF9fYnVmLnNpemUoKSksIF9fY29tcCk7CiAgICB9
CiMgNDg3NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3I+CiAgICBpbmxpbmUgdm9pZAogICAgc3RhYmxlX3NvcnQoX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QpCiAgICB7Cgog
ICAgIAoKICAgICAKCiAgICAgIDsKCiAgICAgIHN0ZDo6X19zdGFibGVfc29ydChfX2ZpcnN0LCBf
X2xhc3QsCiAgICAgICAgX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2xlc3NfaXRlcigpKTsKICAg
IH0KIyA0OTA3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgdm9pZAogICAgc3Rh
YmxlX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVy
YXRvciBfX2xhc3QsCiAgX0NvbXBhcmUgX19jb21wKQogICAgewoKICAgICAKCiAgICAgCgoKICAg
ICAgOwoKICAgICAgc3RkOjpfX3N0YWJsZV9zb3J0KF9fZmlyc3QsIF9fbGFzdCwKICAgICAgICBf
X2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfY29tcF9pdGVyKF9fY29tcCkpOwogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwK
ICAgIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwKICAgIHR5cGVuYW1lIF9Db21wYXJlPgogICAg
X091dHB1dEl0ZXJhdG9yCiAgICBfX3NldF91bmlvbihfSW5wdXRJdGVyYXRvcjEgX19maXJzdDEs
IF9JbnB1dEl0ZXJhdG9yMSBfX2xhc3QxLAogIF9JbnB1dEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0lu
cHV0SXRlcmF0b3IyIF9fbGFzdDIsCiAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LCBfQ29tcGFy
ZSBfX2NvbXApCiAgICB7CiAgICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmly
c3QyICE9IF9fbGFzdDIpCiB7CiAgIGlmIChfX2NvbXAoX19maXJzdDEsIF9fZmlyc3QyKSkKICAg
ICB7CiAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAgICAgICArK19fZmlyc3QxOwogICAg
IH0KICAgZWxzZSBpZiAoX19jb21wKF9fZmlyc3QyLCBfX2ZpcnN0MSkpCiAgICAgewogICAgICAg
Kl9fcmVzdWx0ID0gKl9fZmlyc3QyOwogICAgICAgKytfX2ZpcnN0MjsKICAgICB9CiAgIGVsc2UK
ICAgICB7CiAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAgICAgICArK19fZmlyc3QxOwog
ICAgICAgKytfX2ZpcnN0MjsKICAgICB9CiAgICsrX19yZXN1bHQ7CiB9CiAgICAgIHJldHVybiBz
dGQ6OmNvcHkoX19maXJzdDIsIF9fbGFzdDIsCiAgICAgICAgIHN0ZDo6Y29weShfX2ZpcnN0MSwg
X19sYXN0MSwgX19yZXN1bHQpKTsKICAgIH0KIyA0OTc0ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRl
bXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0lucHV0SXRlcmF0b3Iy
LAogICAgdHlwZW5hbWUgX091dHB1dEl0ZXJhdG9yPgogICAgaW5saW5lIF9PdXRwdXRJdGVyYXRv
cgogICAgc2V0X3VuaW9uKF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3Ix
IF9fbGFzdDEsCiAgICAgICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIsIF9JbnB1dEl0ZXJhdG9y
MiBfX2xhc3QyLAogICAgICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0KQogICAgewoKICAgICAK
ICAgICAKICAgICAKCiAgICAgCgogICAgIAoKCiAgICAgCgoKICAgICAgOwogICAgICA7CgogICAg
ICByZXR1cm4gc3RkOjpfX3NldF91bmlvbihfX2ZpcnN0MSwgX19sYXN0MSwKICAgIF9fZmlyc3Qy
LCBfX2xhc3QyLCBfX3Jlc3VsdCwKICAgIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9sZXNzX2l0
ZXIoKSk7CiAgICB9CiMgNTAyMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1l
IF9PdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgX091dHB1dEl0
ZXJhdG9yCiAgICBzZXRfdW5pb24oX0lucHV0SXRlcmF0b3IxIF9fZmlyc3QxLCBfSW5wdXRJdGVy
YXRvcjEgX19sYXN0MSwKICAgICAgIF9JbnB1dEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0lucHV0SXRl
cmF0b3IyIF9fbGFzdDIsCiAgICAgICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQsIF9Db21wYXJl
IF9fY29tcCkKICAgIHsKCiAgICAgCiAgICAgCiAgICAgCgogICAgIAoKICAgICAKCgogICAgIAoK
CiAgICAgIDsKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19zZXRfdW5pb24oX19maXJzdDEs
IF9fbGFzdDEsCiAgICBfX2ZpcnN0MiwgX19sYXN0MiwgX19yZXN1bHQsCiAgICBfX2dudV9jeHg6
Ol9fb3BzOjpfX2l0ZXJfY29tcF9pdGVyKF9fY29tcCkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwKICAgIHR5cGVu
YW1lIF9PdXRwdXRJdGVyYXRvciwKICAgIHR5cGVuYW1lIF9Db21wYXJlPgogICAgX091dHB1dEl0
ZXJhdG9yCiAgICBfX3NldF9pbnRlcnNlY3Rpb24oX0lucHV0SXRlcmF0b3IxIF9fZmlyc3QxLCBf
SW5wdXRJdGVyYXRvcjEgX19sYXN0MSwKICAgICAgICAgX0lucHV0SXRlcmF0b3IyIF9fZmlyc3Qy
LCBfSW5wdXRJdGVyYXRvcjIgX19sYXN0MiwKICAgICAgICAgX091dHB1dEl0ZXJhdG9yIF9fcmVz
dWx0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xh
c3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiBpZiAoX19jb21wKF9fZmlyc3QxLCBfX2ZpcnN0
MikpCiAgICsrX19maXJzdDE7CiBlbHNlIGlmIChfX2NvbXAoX19maXJzdDIsIF9fZmlyc3QxKSkK
ICAgKytfX2ZpcnN0MjsKIGVsc2UKICAgewogICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MTsKICAg
ICArK19fZmlyc3QxOwogICAgICsrX19maXJzdDI7CiAgICAgKytfX3Jlc3VsdDsKICAgfQogICAg
ICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CiMgNTA4OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwK
ICAgIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvcj4KICAgIGlubGluZSBfT3V0cHV0SXRlcmF0b3IK
ICAgIHNldF9pbnRlcnNlY3Rpb24oX0lucHV0SXRlcmF0b3IxIF9fZmlyc3QxLCBfSW5wdXRJdGVy
YXRvcjEgX19sYXN0MSwKICAgICAgIF9JbnB1dEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0lucHV0SXRl
cmF0b3IyIF9fbGFzdDIsCiAgICAgICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQpCiAgICB7Cgog
ICAgIAogICAgIAogICAgIAoKICAgICAKCgogICAgIAoKCiAgICAgIDsKICAgICAgOwoKICAgICAg
cmV0dXJuIHN0ZDo6X19zZXRfaW50ZXJzZWN0aW9uKF9fZmlyc3QxLCBfX2xhc3QxLAogICAgICAg
ICBfX2ZpcnN0MiwgX19sYXN0MiwgX19yZXN1bHQsCiAgICAgICAgIF9fZ251X2N4eDo6X19vcHM6
Ol9faXRlcl9sZXNzX2l0ZXIoKSk7CiAgICB9CiMgNTEzNSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9y
MiwKICAgIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBp
bmxpbmUgX091dHB1dEl0ZXJhdG9yCiAgICBzZXRfaW50ZXJzZWN0aW9uKF9JbnB1dEl0ZXJhdG9y
MSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgICBfSW5wdXRJdGVyYXRv
cjIgX19maXJzdDIsIF9JbnB1dEl0ZXJhdG9yMiBfX2xhc3QyLAogICAgICAgX091dHB1dEl0ZXJh
dG9yIF9fcmVzdWx0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CgogICAgIAogICAgIAogICAgIAoK
ICAgICAKCgogICAgIAoKCiAgICAgIDsKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19zZXRf
aW50ZXJzZWN0aW9uKF9fZmlyc3QxLCBfX2xhc3QxLAogICAgX19maXJzdDIsIF9fbGFzdDIsIF9f
cmVzdWx0LAogICAgX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2NvbXBfaXRlcihfX2NvbXApKTsK
ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5w
dXRJdGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IsCiAgICB0eXBlbmFtZSBf
Q29tcGFyZT4KICAgIF9PdXRwdXRJdGVyYXRvcgogICAgX19zZXRfZGlmZmVyZW5jZShfSW5wdXRJ
dGVyYXRvcjEgX19maXJzdDEsIF9JbnB1dEl0ZXJhdG9yMSBfX2xhc3QxLAogICAgICAgX0lucHV0
SXRlcmF0b3IyIF9fZmlyc3QyLCBfSW5wdXRJdGVyYXRvcjIgX19sYXN0MiwKICAgICAgIF9PdXRw
dXRJdGVyYXRvciBfX3Jlc3VsdCwgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB3aGlsZSAo
X19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogaWYgKF9fY29tcChf
X2ZpcnN0MSwgX19maXJzdDIpKQogICB7CiAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAg
ICsrX19maXJzdDE7CiAgICAgKytfX3Jlc3VsdDsKICAgfQogZWxzZSBpZiAoX19jb21wKF9fZmly
c3QyLCBfX2ZpcnN0MSkpCiAgICsrX19maXJzdDI7CiBlbHNlCiAgIHsKICAgICArK19fZmlyc3Qx
OwogICAgICsrX19maXJzdDI7CiAgIH0KICAgICAgcmV0dXJuIHN0ZDo6Y29weShfX2ZpcnN0MSwg
X19sYXN0MSwgX19yZXN1bHQpOwogICAgfQojIDUyMDUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjIs
CiAgICB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+CiAgICBpbmxpbmUgX091dHB1dEl0ZXJhdG9y
CiAgICBzZXRfZGlmZmVyZW5jZShfSW5wdXRJdGVyYXRvcjEgX19maXJzdDEsIF9JbnB1dEl0ZXJh
dG9yMSBfX2xhc3QxLAogICAgIF9JbnB1dEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0lucHV0SXRlcmF0
b3IyIF9fbGFzdDIsCiAgICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0KQogICAgewoKICAgICAK
ICAgICAKICAgICAKCiAgICAgCgoKICAgICAKCgogICAgICA7CiAgICAgIDsKCiAgICAgIHJldHVy
biBzdGQ6Ol9fc2V0X2RpZmZlcmVuY2UoX19maXJzdDEsIF9fbGFzdDEsCiAgICAgICBfX2ZpcnN0
MiwgX19sYXN0MiwgX19yZXN1bHQsCiAgICAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfbGVz
c19pdGVyKCkpOwogICAgfQojIDUyNTMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0lucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjIsCiAgICB0eXBl
bmFtZSBfT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgaW5saW5lIF9PdXRw
dXRJdGVyYXRvcgogICAgc2V0X2RpZmZlcmVuY2UoX0lucHV0SXRlcmF0b3IxIF9fZmlyc3QxLCBf
SW5wdXRJdGVyYXRvcjEgX19sYXN0MSwKICAgICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIsIF9J
bnB1dEl0ZXJhdG9yMiBfX2xhc3QyLAogICAgIF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCwgX0Nv
bXBhcmUgX19jb21wKQogICAgewoKICAgICAKICAgICAKICAgICAKCiAgICAgCgoKICAgICAKCgog
ICAgICA7CiAgICAgIDsKCiAgICAgIHJldHVybiBzdGQ6Ol9fc2V0X2RpZmZlcmVuY2UoX19maXJz
dDEsIF9fbGFzdDEsCiAgICAgICBfX2ZpcnN0MiwgX19sYXN0MiwgX19yZXN1bHQsCiAgICAgICBf
X2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfY29tcF9pdGVyKF9fY29tcCkpOwogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwK
ICAgIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwKICAgIHR5cGVuYW1lIF9Db21wYXJlPgogICAg
X091dHB1dEl0ZXJhdG9yCiAgICBfX3NldF9zeW1tZXRyaWNfZGlmZmVyZW5jZShfSW5wdXRJdGVy
YXRvcjEgX19maXJzdDEsCiAgICAgICAgICBfSW5wdXRJdGVyYXRvcjEgX19sYXN0MSwKICAgICAg
ICAgIF9JbnB1dEl0ZXJhdG9yMiBfX2ZpcnN0MiwKICAgICAgICAgIF9JbnB1dEl0ZXJhdG9yMiBf
X2xhc3QyLAogICAgICAgICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LAogICAgICAgICAgX0Nv
bXBhcmUgX19jb21wKQogICAgewogICAgICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBf
X2ZpcnN0MiAhPSBfX2xhc3QyKQogaWYgKF9fY29tcChfX2ZpcnN0MSwgX19maXJzdDIpKQogICB7
CiAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAgICsrX19maXJzdDE7CiAgICAgKytfX3Jl
c3VsdDsKICAgfQogZWxzZSBpZiAoX19jb21wKF9fZmlyc3QyLCBfX2ZpcnN0MSkpCiAgIHsKICAg
ICAqX19yZXN1bHQgPSAqX19maXJzdDI7CiAgICAgKytfX2ZpcnN0MjsKICAgICArK19fcmVzdWx0
OwogICB9CiBlbHNlCiAgIHsKICAgICArK19fZmlyc3QxOwogICAgICsrX19maXJzdDI7CiAgIH0K
ICAgICAgcmV0dXJuIHN0ZDo6Y29weShfX2ZpcnN0MiwgX19sYXN0MiwKICAgICAgICAgc3RkOjpj
b3B5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX3Jlc3VsdCkpOwogICAgfQojIDUzMjkgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdGxf
YWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBf
SW5wdXRJdGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+CiAgICBpbmxpbmUg
X091dHB1dEl0ZXJhdG9yCiAgICBzZXRfc3ltbWV0cmljX2RpZmZlcmVuY2UoX0lucHV0SXRlcmF0
b3IxIF9fZmlyc3QxLCBfSW5wdXRJdGVyYXRvcjEgX19sYXN0MSwKICAgICAgICBfSW5wdXRJdGVy
YXRvcjIgX19maXJzdDIsIF9JbnB1dEl0ZXJhdG9yMiBfX2xhc3QyLAogICAgICAgIF9PdXRwdXRJ
dGVyYXRvciBfX3Jlc3VsdCkKICAgIHsKCiAgICAgCiAgICAgCiAgICAgCgogICAgIAoKICAgICAK
CgogICAgIAoKCiAgICAgIDsKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19zZXRfc3ltbWV0
cmljX2RpZmZlcmVuY2UoX19maXJzdDEsIF9fbGFzdDEsCiAgICAgX19maXJzdDIsIF9fbGFzdDIs
IF9fcmVzdWx0LAogICAgIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9sZXNzX2l0ZXIoKSk7CiAg
ICB9CiMgNTM3NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJ
dGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1lIF9PdXRwdXRJ
dGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgX091dHB1dEl0ZXJhdG9yCiAg
ICBzZXRfc3ltbWV0cmljX2RpZmZlcmVuY2UoX0lucHV0SXRlcmF0b3IxIF9fZmlyc3QxLCBfSW5w
dXRJdGVyYXRvcjEgX19sYXN0MSwKICAgICAgICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIsIF9J
bnB1dEl0ZXJhdG9yMiBfX2xhc3QyLAogICAgICAgIF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCwK
ICAgICAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CgogICAgIAogICAgIAogICAgIAoKICAgICAK
CiAgICAgCgoKICAgICAKCgogICAgICA7CiAgICAgIDsKCiAgICAgIHJldHVybiBzdGQ6Ol9fc2V0
X3N5bW1ldHJpY19kaWZmZXJlbmNlKF9fZmlyc3QxLCBfX2xhc3QxLAogICAgX19maXJzdDIsIF9f
bGFzdDIsIF9fcmVzdWx0LAogICAgX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2NvbXBfaXRlcihf
X2NvbXApKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlw
ZW5hbWUgX0NvbXBhcmU+CiAgICBfRm9yd2FyZEl0ZXJhdG9yCiAgICBfX21pbl9lbGVtZW50KF9G
b3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICBfQ29t
cGFyZSBfX2NvbXApCiAgICB7CiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKIHJldHVybiBf
X2ZpcnN0OwogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fcmVzdWx0ID0gX19maXJzdDsKICAgICAg
d2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpCiBpZiAoX19jb21wKF9fZmlyc3QsIF9fcmVzdWx0
KSkKICAgX19yZXN1bHQgPSBfX2ZpcnN0OwogICAgICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CiMg
NTQyNyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJh
dG9yPgogICAgX0ZvcndhcmRJdGVyYXRvcgogICAgaW5saW5lIG1pbl9lbGVtZW50KF9Gb3J3YXJk
SXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpCiAgICB7CgogICAgIAog
ICAgIAoKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19taW5fZWxlbWVudChfX2ZpcnN0LCBf
X2xhc3QsCiAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfbGVzc19pdGVyKCkpOwogICAgfQoj
IDU0NTAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVy
YXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyYXRvcgogICAg
bWluX2VsZW1lbnQoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9f
bGFzdCwKICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CgogICAgIAogICAgIAoKCiAgICAgIDsKCiAg
ICAgIHJldHVybiBzdGQ6Ol9fbWluX2VsZW1lbnQoX19maXJzdCwgX19sYXN0LAogICAgX19nbnVf
Y3h4OjpfX29wczo6X19pdGVyX2NvbXBfaXRlcihfX2NvbXApKTsKICAgIH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfRm9yd2Fy
ZEl0ZXJhdG9yCiAgICBfX21heF9lbGVtZW50KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0Zv
cndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIGlm
IChfX2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuIF9fZmlyc3Q7CiAgICAgIF9Gb3J3YXJkSXRlcmF0
b3IgX19yZXN1bHQgPSBfX2ZpcnN0OwogICAgICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkK
IGlmIChfX2NvbXAoX19yZXN1bHQsIF9fZmlyc3QpKQogICBfX3Jlc3VsdCA9IF9fZmlyc3Q7CiAg
ICAgIHJldHVybiBfX3Jlc3VsdDsKICAgIH0KIyA1NDg2ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRl
bXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVy
YXRvcgogICAgbWF4X2VsZW1lbnQoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0
ZXJhdG9yIF9fbGFzdCkKICAgIHsKCiAgICAgCiAgICAgCgogICAgICA7CgogICAgICByZXR1cm4g
c3RkOjpfX21heF9lbGVtZW50KF9fZmlyc3QsIF9fbGFzdCwKICAgIF9fZ251X2N4eDo6X19vcHM6
Ol9faXRlcl9sZXNzX2l0ZXIoKSk7CiAgICB9CiMgNTUwOSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0bF9hbGdvLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAg
IGlubGluZSBfRm9yd2FyZEl0ZXJhdG9yCiAgICBtYXhfZWxlbWVudChfRm9yd2FyZEl0ZXJhdG9y
IF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogIF9Db21wYXJlIF9fY29tcCkKICAg
IHsKCiAgICAgCiAgICAgCgoKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19tYXhfZWxlbWVu
dChfX2ZpcnN0LCBfX2xhc3QsCiAgICBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfY29tcF9pdGVy
KF9fY29tcCkpOwogICAgfQoKCn0KIyA2MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hbGdvcml0aG0iIDIgMwojIDI3ICIuLi8uLi9Tb3Vy
Y2UvV1RGL3d0Zi9SZWZQdHIuaCIgMgoKCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvR2V0UHRy
LmgiIDEKIyAyMiAiLi4vLi4vU291cmNlL1dURi93dGYvR2V0UHRyLmgiCiNkZWZpbmUgV1RGX0dl
dFB0cl9oIAoKCgpuYW1lc3BhY2UgV1RGIHsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
VCogZ2V0UHRyKFQqIHApIHsgcmV0dXJuIHA7IH0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1
Y3QgSXNTbWFydFB0ciB7CiAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOwp9OwoK
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgaXNTbWFydFB0cj4Kc3RydWN0IEdldFB0ckhlbHBl
ckJhc2U7Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kc3RydWN0IEdldFB0ckhlbHBlckJhc2U8VCwg
ZmFsc2UgPiB7CiAgICB0eXBlZGVmIFQqIFB0clR5cGU7CiAgICBzdGF0aWMgVCogZ2V0UHRyKFQm
IHApIHsgcmV0dXJuIHN0ZDo6YWRkcmVzc29mKHApOyB9Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4Kc3RydWN0IEdldFB0ckhlbHBlckJhc2U8VCwgdHJ1ZSA+IHsKICAgIHR5cGVkZWYgdHlwZW5h
bWUgVDo6UHRyVHlwZSBQdHJUeXBlOwogICAgc3RhdGljIFB0clR5cGUgZ2V0UHRyKGNvbnN0IFQm
IHApIHsgcmV0dXJuIHAuZ2V0KCk7IH0KfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpzdHJ1Y3Qg
R2V0UHRySGVscGVyIDogR2V0UHRySGVscGVyQmFzZTxULCBJc1NtYXJ0UHRyPFQ+Ojp2YWx1ZT4g
ewp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZSB0eXBlbmFtZSBHZXRQdHJIZWxwZXI8
VD46OlB0clR5cGUgZ2V0UHRyKFQmIHApCnsKICAgIHJldHVybiBHZXRQdHJIZWxwZXI8VD46Omdl
dFB0cihwKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZSB0eXBlbmFtZSBHZXRQdHJI
ZWxwZXI8VD46OlB0clR5cGUgZ2V0UHRyKGNvbnN0IFQmIHApCnsKICAgIHJldHVybiBHZXRQdHJI
ZWxwZXI8VD46OmdldFB0cihwKTsKfQoKCgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
RGVsZXRlcj4gc3RydWN0IElzU21hcnRQdHI8c3RkOjp1bmlxdWVfcHRyPFQsIERlbGV0ZXI+PiB7
CiAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgRGVsZXRlcj4Kc3RydWN0IEdldFB0ckhlbHBlcjxzdGQ6OnVuaXF1ZV9w
dHI8VCwgRGVsZXRlcj4+IHsKICAgIHR5cGVkZWYgVCogUHRyVHlwZTsKICAgIHN0YXRpYyBUKiBn
ZXRQdHIoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFQsIERlbGV0ZXI+JiBwKSB7IHJldHVybiBwLmdl
dCgpOyB9Cn07Cgp9CiMgMzAgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oIiAyCiMgMSAi
Li4vLi4vU291cmNlL1dURi93dGYvUGFzc1JlZlB0ci5oIiAxCiMgMjIgIi4uLy4uL1NvdXJjZS9X
VEYvd3RmL1Bhc3NSZWZQdHIuaCIKI2RlZmluZSBXVEZfUGFzc1JlZlB0cl9oIAoKCiMgMSAiLi4v
Li4vU291cmNlL1dURi93dGYvUmVmLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL1dURi93dGYvUmVm
LmgiCiNkZWZpbmUgV1RGX1JlZl9oIAojIDQwICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9SZWYuaCIK
bmFtZXNwYWNlIFdURiB7CgppbmxpbmUgdm9pZCBhZG9wdGVkKGNvbnN0IHZvaWQqKSB7IH0KCnRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZjsKdGVtcGxhdGU8dHlwZW5hbWUgVD4gUmVmPFQ+
IGFkb3B0UmVmKFQmKTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZiB7CnB1YmxpYzoK
ICAgIH5SZWYoKQogICAgewoKCgoKICAgICAgICBpZiAobV9wdHIpCiAgICAgICAgICAgIG1fcHRy
LT5kZXJlZigpOwogICAgfQoKICAgIFJlZihUJiBvYmplY3QpCiAgICAgICAgOiBtX3B0cigmb2Jq
ZWN0KQogICAgewogICAgICAgIG1fcHRyLT5yZWYoKTsKICAgIH0KCgogICAgUmVmKGNvbnN0IFJl
ZiYgb3RoZXIpID0gZGVsZXRlOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmKGNvbnN0IFJl
ZjxVPiYgb3RoZXIpID0gZGVsZXRlOwoKICAgIFJlZihSZWYmJiBvdGhlcikKICAgICAgICA6IG1f
cHRyKCZvdGhlci5sZWFrUmVmKCkpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgfQoKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+CiAgICBSZWYoUmVmPFU+JiYgb3RoZXIpCiAgICAgICAgOiBt
X3B0cigmb3RoZXIubGVha1JlZigpKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgIH0KCiAg
ICBSZWYmIG9wZXJhdG9yPShUJiBvYmplY3QpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAg
ICAgIG9iamVjdC5yZWYoKTsKICAgICAgICBtX3B0ci0+ZGVyZWYoKTsKICAgICAgICBtX3B0ciA9
ICZvYmplY3Q7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0K
CgogICAgUmVmJiBvcGVyYXRvcj0oY29uc3QgUmVmJiByZWZlcmVuY2UpID0gZGVsZXRlOwogICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmJiBvcGVyYXRvcj0oY29uc3QgUmVmPFU+JiByZWZlcmVu
Y2UpID0gZGVsZXRlOwoKICAgIFJlZiYgb3BlcmF0b3I9KFJlZiYmIHJlZmVyZW5jZSkKICAgIHsK
ICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9wdHItPmRlcmVmKCk7CiAgICAgICAgbV9wdHIg
PSAmcmVmZXJlbmNlLmxlYWtSZWYoKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZiYgb3BlcmF0b3I9KFJl
ZjxVPiYmIHJlZmVyZW5jZSkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9wdHIt
PmRlcmVmKCk7CiAgICAgICAgbV9wdHIgPSAmcmVmZXJlbmNlLmxlYWtSZWYoKTsKICAgICAgICAo
KHZvaWQpMCk7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIGNvbnN0IFQqIG9wZXJh
dG9yLT4oKSBjb25zdCB7ICgodm9pZCkwKTsgcmV0dXJuIG1fcHRyOyB9CiAgICBUKiBvcGVyYXRv
ci0+KCkgeyAoKHZvaWQpMCk7IHJldHVybiBtX3B0cjsgfQoKICAgIGNvbnN0IFQqIHB0cigpIGNv
bnN0IHsgKCh2b2lkKTApOyByZXR1cm4gbV9wdHI7IH0KICAgIFQqIHB0cigpIHsgKCh2b2lkKTAp
OyByZXR1cm4gbV9wdHI7IH0KCiAgICBjb25zdCBUJiBnZXQoKSBjb25zdCB7ICgodm9pZCkwKTsg
cmV0dXJuICptX3B0cjsgfQogICAgVCYgZ2V0KCkgeyAoKHZvaWQpMCk7IHJldHVybiAqbV9wdHI7
IH0KCiAgICBvcGVyYXRvciBUJigpIHsgKCh2b2lkKTApOyByZXR1cm4gKm1fcHRyOyB9CiAgICBv
cGVyYXRvciBjb25zdCBUJigpIGNvbnN0IHsgKCh2b2lkKTApOyByZXR1cm4gKm1fcHRyOyB9Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmPFQ+IHJlcGxhY2UoUmVmPFU+JiYpIF9fYXR0cmli
dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsKCgogICAgUmVmIGNvcHlSZWYoKSAmJiA9
IGRlbGV0ZTsKICAgIFJlZiBjb3B5UmVmKCkgY29uc3QgJiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f
dW51c2VkX3Jlc3VsdF9fKSkgeyByZXR1cm4gUmVmKCptX3B0cik7IH0KCgoKCiAgICBUJiBsZWFr
UmVmKCkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpCiAgICB7CiAgICAg
ICAgKCh2b2lkKTApOwoKICAgICAgICBUJiByZXN1bHQgPSAqc3RkOjpleGNoYW5nZShtX3B0ciwg
bnVsbHB0cik7CgoKCiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCnByaXZhdGU6CiAgICBm
cmllbmQgUmVmIGFkb3B0UmVmPFQ+KFQmKTsKCiAgICBlbnVtIEFkb3B0VGFnIHsgQWRvcHQgfTsK
ICAgIFJlZihUJiBvYmplY3QsIEFkb3B0VGFnKQogICAgICAgIDogbV9wdHIoJm9iamVjdCkKICAg
IHsKICAgIH0KCiAgICBUKiBtX3B0cjsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRl
PHR5cGVuYW1lIFU+IGlubGluZSBSZWY8VD4gUmVmPFQ+OjpyZXBsYWNlKFJlZjxVPiYmIHJlZmVy
ZW5jZSkKewogICAgYXV0byBvbGRSZWZlcmVuY2UgPSBhZG9wdFJlZigqbV9wdHIpOwogICAgbV9w
dHIgPSAmcmVmZXJlbmNlLmxlYWtSZWYoKTsKICAgIHJldHVybiBvbGRSZWZlcmVuY2U7Cn0KCnRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBSZWY8VD4gc3RhdGljX3JlZmVy
ZW5jZV9jYXN0KFJlZjxVPiYgcmVmZXJlbmNlKQp7CiAgICByZXR1cm4gUmVmPFQ+KHN0YXRpY19j
YXN0PFQmPihyZWZlcmVuY2UuZ2V0KCkpKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIFJlZjxUPiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3QoY29uc3QgUmVmPFU+JiBy
ZWZlcmVuY2UpCnsKICAgIHJldHVybiBSZWY8VD4oc3RhdGljX2Nhc3Q8VCY+KHJlZmVyZW5jZS5j
b3B5UmVmKCkuZ2V0KCkpKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0cnVjdCBHZXRQdHJI
ZWxwZXI8UmVmPFQ+PiB7CiAgICB0eXBlZGVmIFQqIFB0clR5cGU7CiAgICBzdGF0aWMgVCogZ2V0
UHRyKGNvbnN0IFJlZjxUPiYgcCkgeyByZXR1cm4gY29uc3RfY2FzdDxUKj4ocC5wdHIoKSk7IH0K
fTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmlubGluZSBSZWY8VD4gYWRvcHRSZWYoVCYgcmVmZXJl
bmNlKQp7CiAgICBhZG9wdGVkKCZyZWZlcmVuY2UpOwogICAgcmV0dXJuIFJlZjxUPihyZWZlcmVu
Y2UsIFJlZjxUPjo6QWRvcHQpOwoKfQoKfQoKdXNpbmcgV1RGOjpSZWY7CnVzaW5nIFdURjo6YWRv
cHRSZWY7CnVzaW5nIFdURjo6c3RhdGljX3JlZmVyZW5jZV9jYXN0OwojIDI2ICIuLi8uLi9Tb3Vy
Y2UvV1RGL3d0Zi9QYXNzUmVmUHRyLmgiIDIKCm5hbWVzcGFjZSBXVEYgewoKICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNsYXNzIFJlZlB0cjsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNz
IFBhc3NSZWZQdHI7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBQYXNzUmVmUHRyPFQ+IGFkb3B0
UmVmKFQqKTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18pKSB2b2lkIHJlZklmTm90TnVsbChUKiBwdHIpCiAgICB7CiAgICAg
ICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEocHRyICE9IG51bGxwdHIpLCAxKSkKICAgICAgICAg
ICAgcHRyLT5yZWYoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGRlcmVmSWZOb3ROdWxsKFQqIHB0
cikKICAgIHsKICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCghIShwdHIgIT0gbnVsbHB0ciks
IDEpKQogICAgICAgICAgICBwdHItPmRlcmVmKCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gY2xhc3MgUGFzc1JlZlB0ciB7CiAgICBwdWJsaWM6CiAgICAgICAgdHlwZWRlZiBUIFZh
bHVlVHlwZTsKICAgICAgICB0eXBlZGVmIFZhbHVlVHlwZSogUHRyVHlwZTsKCiAgICAgICAgUGFz
c1JlZlB0cigpIDogbV9wdHIobnVsbHB0cikgeyB9CiAgICAgICAgUGFzc1JlZlB0cihUKiBwdHIp
IDogbV9wdHIocHRyKSB7IHJlZklmTm90TnVsbChwdHIpOyB9CgoKCiAgICAgICAgUGFzc1JlZlB0
cihjb25zdCBQYXNzUmVmUHRyJiBvKSA6IG1fcHRyKG8ubGVha1JlZigpKSB7IH0KICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBQYXNzUmVmUHRyKGNvbnN0IFBhc3NSZWZQdHI8VT4mIG8pIDog
bV9wdHIoby5sZWFrUmVmKCkpIHsgfQoKICAgICAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSB+UGFzc1JlZlB0cigpIHsgZGVyZWZJZk5vdE51bGwoc3RkOjpleGNo
YW5nZShtX3B0ciwgbnVsbHB0cikpOyB9CgogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFBh
c3NSZWZQdHIoY29uc3QgUmVmUHRyPFU+Jik7CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
UGFzc1JlZlB0cihSZWY8VT4mJiByZWZlcmVuY2UpIDogbV9wdHIoJnJlZmVyZW5jZS5sZWFrUmVm
KCkpIHsgfQoKICAgICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQoKICAgICAg
ICBUKiBsZWFrUmVmKCkgY29uc3QgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRf
XykpOwoKICAgICAgICBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqbV9wdHI7IH0KICAg
ICAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KCiAgICAgICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KCgogICAgICAgIHR5cGVkZWYg
VCogKFBhc3NSZWZQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKICAgICAgICBvcGVyYXRvciBV
bnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPyAmUGFzc1JlZlB0cjo6
bV9wdHIgOiBudWxscHRyOyB9CgogICAgICAgIGZyaWVuZCBQYXNzUmVmUHRyIGFkb3B0UmVmPFQ+
KFQqKTsKCiAgICBwcml2YXRlOgogICAgICAgIFBhc3NSZWZQdHImIG9wZXJhdG9yPShjb25zdCBQ
YXNzUmVmUHRyJikgPSBkZWxldGU7CgogICAgICAgIGVudW0gQWRvcHRUYWcgeyBBZG9wdCB9Owog
ICAgICAgIFBhc3NSZWZQdHIoVCogcHRyLCBBZG9wdFRhZykgOiBtX3B0cihwdHIpIHsgfQoKICAg
ICAgICBtdXRhYmxlIFQqIG1fcHRyOwogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZlB0cjxUPjo6UGFzc1JlZlB0cihjb25z
dCBSZWZQdHI8VT4mIG8pCiAgICAgICAgOiBtX3B0cihvLmdldCgpKQogICAgewogICAgICAgIFQq
IHB0ciA9IG1fcHRyOwogICAgICAgIHJlZklmTm90TnVsbChwdHIpOwogICAgfQoKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBQYXNzUmVmUHRyPFQ+OjpsZWFrUmVmKCkgY29uc3QK
ICAgIHsKICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX3B0ciwgbnVsbHB0cik7CiAgICB9
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBQYXNzUmVmUHRyPFQ+JiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+JiBiKQogICAg
ewogICAgICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7CiAgICB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXNz
UmVmUHRyPFQ+JiBhLCBjb25zdCBSZWZQdHI8VT4mIGIpCiAgICB7CiAgICAgICAgcmV0dXJuIGEu
Z2V0KCkgPT0gYi5nZXQoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZlB0cjxUPiYgYSwgY29uc3QgUGFz
c1JlZlB0cjxVPiYgYikKICAgIHsKICAgICAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOwog
ICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwgVSogYikKICAgIHsKICAgICAgICByZXR1
cm4gYS5nZXQoKSA9PSBiOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwgY29uc3QgUGFzc1JlZlB0cjxVPiYgYikK
ICAgIHsKICAgICAgICByZXR1cm4gYSA9PSBiLmdldCgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUGFzc1Jl
ZlB0cjxUPiYgYSwgY29uc3QgUGFzc1JlZlB0cjxVPiYgYikKICAgIHsKICAgICAgICByZXR1cm4g
YS5nZXQoKSAhPSBiLmdldCgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUGFzc1JlZlB0cjxUPiYgYSwgY29u
c3QgUmVmUHRyPFU+JiBiKQogICAgewogICAgICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7
CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBSZWZQdHI8VD4mIGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIpCiAg
ICB7CiAgICAgICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsKICAgIH0KCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFBh
c3NSZWZQdHI8VD4mIGEsIFUqIGIpCiAgICB7CiAgICAgICAgcmV0dXJuIGEuZ2V0KCkgIT0gYjsK
ICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KFQqIGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIpCiAgICB7CiAgICAgICAgcmV0
dXJuIGEgIT0gYi5nZXQoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUg
UGFzc1JlZlB0cjxUPiBhZG9wdFJlZihUKiBwKQogICAgewogICAgICAgIGFkb3B0ZWQocCk7CiAg
ICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8VD4ocCwgUGFzc1JlZlB0cjxUPjo6QWRvcHQpOwogICAg
fQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBQYXNzUmVmUHRy
PFQ+IHN0YXRpY19wb2ludGVyX2Nhc3QoY29uc3QgUGFzc1JlZlB0cjxVPiYgcCkKICAgIHsKICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoc3RhdGljX2Nhc3Q8VCo+KHAubGVha1JlZigpKSk7CiAgICB9
CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc1NtYXJ0UHRyPFBhc3NSZWZQdHI8
VD4+IHsKICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7CiAgICB9OwoKfQoK
dXNpbmcgV1RGOjpQYXNzUmVmUHRyOwp1c2luZyBXVEY6OmFkb3B0UmVmOwp1c2luZyBXVEY6OnN0
YXRpY19wb2ludGVyX2Nhc3Q7CiMgMzEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oIiAy
CgpuYW1lc3BhY2UgV1RGIHsKCmVudW0gSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSB7IEhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSB9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUmVmUHRyIHsK
ICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0g
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxv
YyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJl
ZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6
OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6
V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFn
LCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSBwcml2YXRl
OiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3Jv
OwpwdWJsaWM6CiAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOwogICAgdHlwZWRlZiBWYWx1ZVR5cGUq
IFB0clR5cGU7CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
UmVmUHRyKCkgOiBtX3B0cihudWxscHRyKSB7IH0KICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXykpIFJlZlB0cihUKiBwdHIpIDogbV9wdHIocHRyKSB7IHJlZklmTm90
TnVsbChwdHIpOyB9CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p
KSBSZWZQdHIoY29uc3QgUmVmUHRyJiBvKSA6IG1fcHRyKG8ubV9wdHIpIHsgcmVmSWZOb3ROdWxs
KG1fcHRyKTsgfQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRyKGNvbnN0IFJlZlB0cjxV
PiYgbykgOiBtX3B0cihvLmdldCgpKSB7IHJlZklmTm90TnVsbChtX3B0cik7IH0KCiAgICBpbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBSZWZQdHIoUmVmUHRyJiYgbykg
OiBtX3B0cihvLnJlbGVhc2UoKS5sZWFrUmVmKCkpIHsgfQogICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4gUmVmUHRyKFJlZlB0cjxVPiYmIG8pIDogbV9wdHIoby5yZWxlYXNlKCkubGVha1JlZigpKSB7
IH0KCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRyKGNvbnN0IFBhc3NSZWZQdHI8VT4m
KTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHIoUmVmPFU+JiYpOwoKCiAgICBSZWZQ
dHIoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3B0cihoYXNoVGFibGVEZWxldGVkVmFs
dWUoKSkgeyB9CiAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9wdHIgPT0gaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KCiAgICBpbmxpbmUgX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB+UmVmUHRyKCkgeyBkZXJlZklmTm90TnVsbChz
dGQ6OmV4Y2hhbmdlKG1fcHRyLCBudWxscHRyKSk7IH0KCiAgICBUKiBnZXQoKSBjb25zdCB7IHJl
dHVybiBtX3B0cjsgfQoKICAgIFBhc3NSZWZQdHI8VD4gcmVsZWFzZSgpIHsgUGFzc1JlZlB0cjxU
PiB0bXAgPSBhZG9wdFJlZihtX3B0cik7IG1fcHRyID0gbnVsbHB0cjsgcmV0dXJuIHRtcDsgfQog
ICAgUmVmPFQ+IHJlbGVhc2VOb25OdWxsKCkgeyAoKHZvaWQpMCk7IFJlZjxUPiB0bXAoYWRvcHRS
ZWYoKm1fcHRyKSk7IG1fcHRyID0gbnVsbHB0cjsgcmV0dXJuIHRtcDsgfQoKICAgIFQqIGxlYWtS
ZWYoKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7CgogICAgVCYgb3Bl
cmF0b3IqKCkgY29uc3QgeyAoKHZvaWQpMCk7IHJldHVybiAqbV9wdHI7IH0KICAgIGlubGluZSBf
X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7
IHJldHVybiBtX3B0cjsgfQoKICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1f
cHRyOyB9CgoKICAgIHR5cGVkZWYgVCogKFJlZlB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGUpOwog
ICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8g
JlJlZlB0cjo6bV9wdHIgOiBudWxscHRyOyB9CgogICAgUmVmUHRyJiBvcGVyYXRvcj0oY29uc3Qg
UmVmUHRyJik7CiAgICBSZWZQdHImIG9wZXJhdG9yPShUKik7CiAgICBSZWZQdHImIG9wZXJhdG9y
PShzdGQ6Om51bGxwdHJfdCk7CiAgICBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRy
PFQ+Jik7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBS
ZWZQdHI8VT4mKTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KGNv
bnN0IFBhc3NSZWZQdHI8VT4mKTsKICAgIFJlZlB0ciYgb3BlcmF0b3I9KFJlZlB0ciYmKTsKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KFJlZlB0cjxVPiYmKTsKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KFJlZjxVPiYmKTsKCiAgICB2
b2lkIHN3YXAoUmVmUHRyJik7CgogICAgc3RhdGljIFQqIGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KC0xKTsgfQoKCiAgICBSZWZQdHIgY29weVJl
ZigpICYmID0gZGVsZXRlOwogICAgUmVmUHRyIGNvcHlSZWYoKSBjb25zdCAmIF9fYXR0cmlidXRl
X18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSB7IHJldHVybiBSZWZQdHIobV9wdHIpOyB9CgoK
Cgpwcml2YXRlOgogICAgVCogbV9wdHI7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRyPFQ+OjpSZWZQdHIoY29uc3QgUGFzc1JlZlB0cjxV
PiYgbykKICAgIDogbV9wdHIoby5sZWFrUmVmKCkpCnsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4g
dGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIFJlZlB0cjxUPjo6UmVmUHRyKFJlZjxVPiYmIHJl
ZmVyZW5jZSkKICAgIDogbV9wdHIoJnJlZmVyZW5jZS5sZWFrUmVmKCkpCnsKfQoKdGVtcGxhdGU8
dHlwZW5hbWUgVD4KaW5saW5lIFQqIFJlZlB0cjxUPjo6bGVha1JlZigpCnsKICAgIHJldHVybiBz
dGQ6OmV4Y2hhbmdlKG1fcHRyLCBudWxscHRyKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIFJlZlB0cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgUmVmUHRyJiBvKQp7CiAg
ICBSZWZQdHIgcHRyID0gbzsKICAgIHN3YXAocHRyKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVt
cGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIFJlZlB0cjxUPiYg
UmVmUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFU+JiBvKQp7CiAgICBSZWZQdHIgcHRy
ID0gbzsKICAgIHN3YXAocHRyKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIFJlZlB0cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oVCogb3B0cikKewog
ICAgUmVmUHRyIHB0ciA9IG9wdHI7CiAgICBzd2FwKHB0cik7CiAgICByZXR1cm4gKnRoaXM7Cn0K
CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0
b3I9KHN0ZDo6bnVsbHB0cl90KQp7CiAgICBkZXJlZklmTm90TnVsbChzdGQ6OmV4Y2hhbmdlKG1f
cHRyLCBudWxscHRyKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8
VD4mIG8pCnsKICAgIFJlZlB0ciBwdHIgPSBvOwogICAgc3dhcChwdHIpOwogICAgcmV0dXJuICp0
aGlzOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUg
UmVmUHRyPFQ+JiBSZWZQdHI8VD46Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFU+JiBvKQp7
CiAgICBSZWZQdHIgcHRyID0gbzsKICAgIHN3YXAocHRyKTsKICAgIHJldHVybiAqdGhpczsKfQoK
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFJlZlB0cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRv
cj0oUmVmUHRyJiYgbykKewogICAgUmVmUHRyIHB0ciA9IHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92
ZVBhcmFtZXRlcj4obyk7CiAgICBzd2FwKHB0cik7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD4mIFJl
ZlB0cjxUPjo6b3BlcmF0b3I9KFJlZlB0cjxVPiYmIG8pCnsKICAgIFJlZlB0ciBwdHIgPSBzdGQ6
Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KG8pOwogICAgc3dhcChwdHIpOwogICAgcmV0
dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBp
bmxpbmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46Om9wZXJhdG9yPShSZWY8VT4mJiByZWZlcmVuY2Up
CnsKICAgIFJlZlB0ciBwdHIgPSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHJl
ZmVyZW5jZSk7CiAgICBzd2FwKHB0cik7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNs
YXNzIFQ+IGlubGluZSB2b2lkIFJlZlB0cjxUPjo6c3dhcChSZWZQdHImIG8pCnsKICAgIHN0ZDo6
c3dhcChtX3B0ciwgby5tX3B0cik7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIHN3
YXAoUmVmUHRyPFQ+JiBhLCBSZWZQdHI8VD4mIGIpCnsKICAgIGEuc3dhcChiKTsKfQoKdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBS
ZWZQdHI8VD4mIGEsIGNvbnN0IFJlZlB0cjxVPiYgYikKewogICAgcmV0dXJuIGEuZ2V0KCkgPT0g
Yi5nZXQoKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBSZWZQdHI8VD4mIGEsIFUqIGIpCnsKICAgIHJldHVybiBhLmdldCgp
ID09IGI7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9w
ZXJhdG9yPT0oVCogYSwgY29uc3QgUmVmUHRyPFU+JiBiKQp7CiAgICByZXR1cm4gYSA9PSBiLmdl
dCgpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFJlZlB0cjxUPiYgYSwgY29uc3QgUmVmUHRyPFU+JiBiKQp7CiAgICByZXR1
cm4gYS5nZXQoKSAhPSBiLmdldCgpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZlB0cjxUPiYgYSwgVSogYikKewogICAg
cmV0dXJuIGEuZ2V0KCkgIT0gYjsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBSZWZQdHI8VT4mIGIpCnsKICAgIHJl
dHVybiBhICE9IGIuZ2V0KCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlu
bGluZSBSZWZQdHI8VD4gc3RhdGljX3BvaW50ZXJfY2FzdChjb25zdCBSZWZQdHI8VT4mIHApCnsK
ICAgIHJldHVybiBSZWZQdHI8VD4oc3RhdGljX2Nhc3Q8VCo+KHAuZ2V0KCkpKTsKfQoKdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc1NtYXJ0UHRyPFJlZlB0cjxUPj4gewogICAgc3RhdGlj
IGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOwp9OwoKfQoKdXNpbmcgV1RGOjpSZWZQdHI7CnVzaW5n
IFdURjo6c3RhdGljX3BvaW50ZXJfY2FzdDsKIyAzNSAiLi4vLi4vU291cmNlL1dURi93dGYvUHJp
bnRTdHJlYW0uaCIgMgoKCm5hbWVzcGFjZSBXVEYgewoKY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsK
Y2xhc3MgQ1N0cmluZzsKY2xhc3MgU3RyaW5nOwpjbGFzcyBTdHJpbmdJbXBsOwpjbGFzcyBTdHJp
bmdWaWV3OwpjbGFzcyBVbmlxdWVkU3RyaW5nSW1wbDsKCmNsYXNzIFByaW50U3RyZWFtIHsKICAg
IHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsg
fSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhz
aXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShw
KTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZh
c3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RG
OjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2
b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSBwcml2YXRlOiB0
eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvOyBw
cml2YXRlOiBQcmludFN0cmVhbShjb25zdCBQcmludFN0cmVhbSYpID0gZGVsZXRlOyBQcmludFN0
cmVhbSYgb3BlcmF0b3I9KGNvbnN0IFByaW50U3RyZWFtJikgPSBkZWxldGU7OwpwdWJsaWM6CiAg
ICBQcmludFN0cmVhbSgpOwogICAgdmlydHVhbCB+UHJpbnRTdHJlYW0oKTsKCiAgICB2b2lkIHBy
aW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhw
cmludGYsIDIsIDMpKSk7CiAgICB2aXJ0dWFsIHZvaWQgdnByaW50Zihjb25zdCBjaGFyKiBmb3Jt
YXQsIHZhX2xpc3QpIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAwKSkpID0g
MDsKCgoKICAgIHZpcnR1YWwgdm9pZCBmbHVzaCgpOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CiAgICB2b2lkIHByaW50KGNvbnN0IFQmIHZhbHVlKQogICAgewogICAgICAgIHByaW50SW50ZXJu
YWwoKnRoaXMsIHZhbHVlKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZS4uLiBUeXBlcz4KICAgIHZvaWQgcHJpbnQoY29uc3QgVCYgdmFsdWUsIGNvbnN0IFR5cGVzJi4u
LiByZW1haW5pbmdWYWx1ZXMpCiAgICB7CiAgICAgICAgcHJpbnRJbnRlcm5hbCgqdGhpcywgdmFs
dWUpOwogICAgICAgIHByaW50KHJlbWFpbmluZ1ZhbHVlcy4uLik7CiAgICB9Cn07Cgogdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3QgY2hhciopOwogdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiwgY29uc3QgU3RyaW5nVmlldyYpOwogdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiwgY29uc3QgQ1N0cmluZyYpOwogdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiwgY29uc3QgU3RyaW5nJik7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
LCBjb25zdCBTdHJpbmdJbXBsKik7CmlubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QgQXRvbWljU3RyaW5nSW1wbCogdmFsdWUpIHsgcHJpbnRJbnRlcm5hbChv
dXQsIGJpdHdpc2VfY2FzdDxjb25zdCBTdHJpbmdJbXBsKj4odmFsdWUpKTsgfQppbmxpbmUgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBs
KiB2YWx1ZSkgeyBwcmludEludGVybmFsKG91dCwgYml0d2lzZV9jYXN0PGNvbnN0IFN0cmluZ0lt
cGwqPih2YWx1ZSkpOyB9CmlubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgY29uc3QgVW5pcXVlZFN0cmluZ0ltcGwmIHZhbHVlKSB7IHByaW50SW50ZXJuYWwob3V0LCAm
dmFsdWUpOyB9CmlubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY2hh
ciogdmFsdWUpIHsgcHJpbnRJbnRlcm5hbChvdXQsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPih2
YWx1ZSkpOyB9CmlubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQ1N0
cmluZyYgdmFsdWUpIHsgcHJpbnRJbnRlcm5hbChvdXQsIHN0YXRpY19jYXN0PGNvbnN0IENTdHJp
bmcmPih2YWx1ZSkpOyB9CmlubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgU3RyaW5nJiB2YWx1ZSkgeyBwcmludEludGVybmFsKG91dCwgc3RhdGljX2Nhc3Q8Y29uc3Qg
U3RyaW5nJj4odmFsdWUpKTsgfQppbmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIFN0cmluZ0ltcGwqIHZhbHVlKSB7IHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2Fz
dDxjb25zdCBTdHJpbmdJbXBsKj4odmFsdWUpKTsgfQppbmxpbmUgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEF0b21pY1N0cmluZ0ltcGwqIHZhbHVlKSB7IHByaW50SW50ZXJu
YWwob3V0LCBzdGF0aWNfY2FzdDxjb25zdCBBdG9taWNTdHJpbmdJbXBsKj4odmFsdWUpKTsgfQpp
bmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB2YWx1ZSkgeyBwcmludEludGVybmFsKG91dCwgc3RhdGljX2Nhc3Q8Y29uc3QgVW5pcXVl
ZFN0cmluZ0ltcGwqPih2YWx1ZSkpOyB9CmlubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgVW5pcXVlZFN0cmluZ0ltcGwmIHZhbHVlKSB7IHByaW50SW50ZXJuYWwob3V0
LCAmdmFsdWUpOyB9CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBib29sKTsKIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIHNpZ25lZCBjaGFyKTsKIHZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYsIHVuc2lnbmVkIGNoYXIpOwogdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiwgc2hvcnQpOwogdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwg
dW5zaWduZWQgc2hvcnQpOwogdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgaW50KTsK
IHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIHVuc2lnbmVkKTsKIHZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYsIGxvbmcpOwogdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiwgdW5zaWduZWQgbG9uZyk7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBs
b25nIGxvbmcpOwogdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgdW5zaWduZWQgbG9u
ZyBsb25nKTsKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGZsb2F0KTsKIHZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGRvdWJsZSk7CiB2b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mLCBSYXdQb2ludGVyKTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBUJiB2YWx1ZSkKewogICAgdmFsdWUu
ZHVtcChvdXQpOwp9CgojZGVmaW5lIE1BS0VfUFJJTlRfQURBUFRPUihOYW1lLFR5cGUsZnVuY3Rp
b24pIGNsYXNzIE5hbWUgeyBwdWJsaWM6IE5hbWUoY29uc3QgVHlwZSYgdmFsdWUpIDogbV92YWx1
ZSh2YWx1ZSkgeyB9IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdCB7IGZ1bmN0aW9u
KG91dCwgbV92YWx1ZSk7IH0gcHJpdmF0ZTogVHlwZSBtX3ZhbHVlOyB9CiMgMTI0ICIuLi8uLi9T
b3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oIgojZGVmaW5lIE1BS0VfUFJJTlRfTUVUSE9EX0FE
QVBUT1IoTmFtZSxUeXBlLG1ldGhvZCkgY2xhc3MgTmFtZSB7IHB1YmxpYzogTmFtZShjb25zdCBU
eXBlJiB2YWx1ZSkgOiBtX3ZhbHVlKHZhbHVlKSB7IH0gdm9pZCBkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0IHsgbV92YWx1ZS5tZXRob2Qob3V0KTsgfSBwcml2YXRlOiBjb25zdCBUeXBlJiBt
X3ZhbHVlOyB9CiMgMTM5ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oIgojZGVm
aW5lIE1BS0VfUFJJTlRfTUVUSE9EKFR5cGUsZHVtcE1ldGhvZCxtZXRob2QpIE1BS0VfUFJJTlRf
TUVUSE9EX0FEQVBUT1IoRHVtcGVyRm9yXyAjI21ldGhvZCwgVHlwZSwgZHVtcE1ldGhvZCk7IER1
bXBlckZvcl8gIyNtZXRob2QgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gRHVtcGVyRm9yXyAjI21l
dGhvZCgqdGhpcyk7IH0KCgoKCgoKIHZvaWQgZHVtcENoYXJhY3RlcihQcmludFN0cmVhbSYsIGNo
YXIpOwpjbGFzcyBDaGFyYWN0ZXJEdW1wIHsgcHVibGljOiBDaGFyYWN0ZXJEdW1wKGNvbnN0IGNo
YXImIHZhbHVlKSA6IG1fdmFsdWUodmFsdWUpIHsgfSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QgeyBkdW1wQ2hhcmFjdGVyKG91dCwgbV92YWx1ZSk7IH0gcHJpdmF0ZTogY2hhciBt
X3ZhbHVlOyB9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KY2xhc3MgUG9pbnRlckR1bXAgewpwdWJs
aWM6CiAgICBQb2ludGVyRHVtcChjb25zdCBUKiBwdHIpCiAgICAgICAgOiBtX3B0cihwdHIpCiAg
ICB7CiAgICB9CgogICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICB7CiAg
ICAgICAgaWYgKG1fcHRyKQogICAgICAgICAgICBwcmludEludGVybmFsKG91dCwgKm1fcHRyKTsK
ICAgICAgICBlbHNlCiAgICAgICAgICAgIG91dC5wcmludCgiKG51bGwpIik7CiAgICB9CnByaXZh
dGU6CiAgICBjb25zdCBUKiBtX3B0cjsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+ClBvaW50ZXJE
dW1wPFQ+IHBvaW50ZXJEdW1wKGNvbnN0IFQqIHB0cikgeyByZXR1cm4gUG9pbnRlckR1bXA8VD4o
cHRyKTsgfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxUPiYgdmFsdWUpCnsKICAgIG91dC5wcmlu
dChwb2ludGVyRHVtcCh2YWx1ZS5nZXQoKSkpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgUmVmUHRyPFQ+JiB2YWx1ZSkK
ewogICAgb3V0LnByaW50KHBvaW50ZXJEdW1wKHZhbHVlLmdldCgpKSk7Cn0KCnRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+CmNsYXNzIFZhbHVlSW5Db250ZXh0IHsKcHVibGljOgogICAg
VmFsdWVJbkNvbnRleHQoY29uc3QgVCYgdmFsdWUsIFUqIGNvbnRleHQpCiAgICAgICAgOiBtX3Zh
bHVlKCZ2YWx1ZSkKICAgICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgewogICAgfQoKICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgewogICAgICAgIG1fdmFsdWUt
PmR1bXBJbkNvbnRleHQob3V0LCBtX2NvbnRleHQpOwogICAgfQoKcHJpdmF0ZToKICAgIGNvbnN0
IFQqIG1fdmFsdWU7CiAgICBVKiBtX2NvbnRleHQ7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgpWYWx1ZUluQ29udGV4dDxULCBVPiBpbkNvbnRleHQoY29uc3QgVCYgdmFsdWUs
IFUqIGNvbnRleHQpCnsKICAgIHJldHVybiBWYWx1ZUluQ29udGV4dDxULCBVPih2YWx1ZSwgY29u
dGV4dCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CmNsYXNzIFBvaW50ZXJE
dW1wSW5Db250ZXh0IHsKcHVibGljOgogICAgUG9pbnRlckR1bXBJbkNvbnRleHQoY29uc3QgVCog
cHRyLCBVKiBjb250ZXh0KQogICAgICAgIDogbV9wdHIocHRyKQogICAgICAgICwgbV9jb250ZXh0
KGNvbnRleHQpCiAgICB7CiAgICB9CgogICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0CiAgICB7CiAgICAgICAgaWYgKG1fcHRyKQogICAgICAgICAgICBtX3B0ci0+ZHVtcEluQ29u
dGV4dChvdXQsIG1fY29udGV4dCk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBvdXQucHJpbnQo
IihudWxsKSIpOwogICAgfQoKcHJpdmF0ZToKICAgIGNvbnN0IFQqIG1fcHRyOwogICAgVSogbV9j
b250ZXh0Owp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KUG9pbnRlckR1bXBJ
bkNvbnRleHQ8VCwgVT4gcG9pbnRlckR1bXBJbkNvbnRleHQoY29uc3QgVCogcHRyLCBVKiBjb250
ZXh0KQp7CiAgICByZXR1cm4gUG9pbnRlckR1bXBJbkNvbnRleHQ8VCwgVT4ocHRyLCBjb250ZXh0
KTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KY2xhc3MgVmFsdWVJZ25vcmlu
Z0NvbnRleHQgewpwdWJsaWM6CiAgICBWYWx1ZUlnbm9yaW5nQ29udGV4dChjb25zdCBVJiB2YWx1
ZSkKICAgICAgICA6IG1fdmFsdWUoJnZhbHVlKQogICAgewogICAgfQoKICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgewogICAgICAgIFQgY29udGV4dDsKICAgICAgICBt
X3ZhbHVlLT5kdW1wSW5Db250ZXh0KG91dCwgJmNvbnRleHQpOwogICAgfQoKcHJpdmF0ZToKICAg
IGNvbnN0IFUqIG1fdmFsdWU7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgpW
YWx1ZUlnbm9yaW5nQ29udGV4dDxULCBVPiBpZ25vcmluZ0NvbnRleHQoY29uc3QgVSYgdmFsdWUp
CnsKICAgIHJldHVybiBWYWx1ZUlnbm9yaW5nQ29udGV4dDxULCBVPih2YWx1ZSk7Cn0KCn0KCnVz
aW5nIFdURjo6Q2hhcmFjdGVyRHVtcDsKdXNpbmcgV1RGOjpQb2ludGVyRHVtcDsKdXNpbmcgV1RG
OjpQcmludFN0cmVhbTsKdXNpbmcgV1RGOjppZ25vcmluZ0NvbnRleHQ7CnVzaW5nIFdURjo6aW5D
b250ZXh0Owp1c2luZyBXVEY6OnBvaW50ZXJEdW1wOwp1c2luZyBXVEY6OnBvaW50ZXJEdW1wSW5D
b250ZXh0OwojIDMyICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rp
c2Fzc2VtYmxlci5oIiAyCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgi
IDEKIyAyNyAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgiCiNkZWZpbmUgQ1N0
cmluZ19oIAoKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9IYXNoRnVuY3Rpb25zLmgiIDEKIyAy
MiAiLi4vLi4vU291cmNlL1dURi93dGYvSGFzaEZ1bmN0aW9ucy5oIgojZGVmaW5lIFdURl9IYXNo
RnVuY3Rpb25zX2ggCgoKCgoKbmFtZXNwYWNlIFdURiB7CgogICAgdGVtcGxhdGU8c2l6ZV90IHNp
emU+IHN0cnVjdCBJbnRUeXBlczsKICAgIHRlbXBsYXRlPD4gc3RydWN0IEludFR5cGVzPDE+IHsg
dHlwZWRlZiBpbnQ4X3QgU2lnbmVkVHlwZTsgdHlwZWRlZiB1aW50OF90IFVuc2lnbmVkVHlwZTsg
fTsKICAgIHRlbXBsYXRlPD4gc3RydWN0IEludFR5cGVzPDI+IHsgdHlwZWRlZiBpbnQxNl90IFNp
Z25lZFR5cGU7IHR5cGVkZWYgdWludDE2X3QgVW5zaWduZWRUeXBlOyB9OwogICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgSW50VHlwZXM8ND4geyB0eXBlZGVmIGludDMyX3QgU2lnbmVkVHlwZTsgdHlwZWRl
ZiB1aW50MzJfdCBVbnNpZ25lZFR5cGU7IH07CiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRUeXBl
czw4PiB7IHR5cGVkZWYgaW50NjRfdCBTaWduZWRUeXBlOyB0eXBlZGVmIHVpbnQ2NF90IFVuc2ln
bmVkVHlwZTsgfTsKCgoKCiAgICBpbmxpbmUgdW5zaWduZWQgaW50SGFzaCh1aW50OF90IGtleTgp
CiAgICB7CiAgICAgICAgdW5zaWduZWQga2V5ID0ga2V5ODsKICAgICAgICBrZXkgKz0gfihrZXkg
PDwgMTUpOwogICAgICAgIGtleSBePSAoa2V5ID4+IDEwKTsKICAgICAgICBrZXkgKz0gKGtleSA8
PCAzKTsKICAgICAgICBrZXkgXj0gKGtleSA+PiA2KTsKICAgICAgICBrZXkgKz0gfihrZXkgPDwg
MTEpOwogICAgICAgIGtleSBePSAoa2V5ID4+IDE2KTsKICAgICAgICByZXR1cm4ga2V5OwogICAg
fQoKCiAgICBpbmxpbmUgdW5zaWduZWQgaW50SGFzaCh1aW50MTZfdCBrZXkxNikKICAgIHsKICAg
ICAgICB1bnNpZ25lZCBrZXkgPSBrZXkxNjsKICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTUpOwog
ICAgICAgIGtleSBePSAoa2V5ID4+IDEwKTsKICAgICAgICBrZXkgKz0gKGtleSA8PCAzKTsKICAg
ICAgICBrZXkgXj0gKGtleSA+PiA2KTsKICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTEpOwogICAg
ICAgIGtleSBePSAoa2V5ID4+IDE2KTsKICAgICAgICByZXR1cm4ga2V5OwogICAgfQoKCiAgICBp
bmxpbmUgdW5zaWduZWQgaW50SGFzaCh1aW50MzJfdCBrZXkpCiAgICB7CiAgICAgICAga2V5ICs9
IH4oa2V5IDw8IDE1KTsKICAgICAgICBrZXkgXj0gKGtleSA+PiAxMCk7CiAgICAgICAga2V5ICs9
IChrZXkgPDwgMyk7CiAgICAgICAga2V5IF49IChrZXkgPj4gNik7CiAgICAgICAga2V5ICs9IH4o
a2V5IDw8IDExKTsKICAgICAgICBrZXkgXj0gKGtleSA+PiAxNik7CiAgICAgICAgcmV0dXJuIGtl
eTsKICAgIH0KCgogICAgaW5saW5lIHVuc2lnbmVkIGludEhhc2godWludDY0X3Qga2V5KQogICAg
ewogICAgICAgIGtleSArPSB+KGtleSA8PCAzMik7CiAgICAgICAga2V5IF49IChrZXkgPj4gMjIp
OwogICAgICAgIGtleSArPSB+KGtleSA8PCAxMyk7CiAgICAgICAga2V5IF49IChrZXkgPj4gOCk7
CiAgICAgICAga2V5ICs9IChrZXkgPDwgMyk7CiAgICAgICAga2V5IF49IChrZXkgPj4gMTUpOwog
ICAgICAgIGtleSArPSB+KGtleSA8PCAyNyk7CiAgICAgICAga2V5IF49IChrZXkgPj4gMzEpOwog
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2V5KTsKICAgIH0KCgogICAgaW5s
aW5lIHVuc2lnbmVkIHBhaXJJbnRIYXNoKHVuc2lnbmVkIGtleTEsIHVuc2lnbmVkIGtleTIpCiAg
ICB7CiAgICAgICAgdW5zaWduZWQgc2hvcnRSYW5kb20xID0gMjc3OTUxMjI1OwogICAgICAgIHVu
c2lnbmVkIHNob3J0UmFuZG9tMiA9IDk1MTg3OTY2OwogICAgICAgIHVpbnQ2NF90IGxvbmdSYW5k
b20gPSAxOTI0ODY1ODE2NTk1MjYyMkxMOwoKICAgICAgICB1aW50NjRfdCBwcm9kdWN0ID0gbG9u
Z1JhbmRvbSAqIChzaG9ydFJhbmRvbTEgKiBrZXkxICsgc2hvcnRSYW5kb20yICoga2V5Mik7CiAg
ICAgICAgdW5zaWduZWQgaGlnaEJpdHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJvZHVjdCA+
PiAoc2l6ZW9mKHVpbnQ2NF90KSAtIHNpemVvZih1bnNpZ25lZCkpKTsKICAgICAgICByZXR1cm4g
aGlnaEJpdHM7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEludEhhc2gg
ewogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKFQga2V5KSB7IHJldHVybiBpbnRIYXNoKHN0
YXRpY19jYXN0PHR5cGVuYW1lIEludFR5cGVzPHNpemVvZihUKT46OlVuc2lnbmVkVHlwZT4oa2V5
KSk7IH0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChUIGEsIFQgYikgeyByZXR1cm4gYSA9PSBi
OyB9CiAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSB0cnVlOwogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRmxvYXRI
YXNoIHsKICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEludFR5cGVzPHNpemVvZihUKT46OlVuc2ln
bmVkVHlwZSBCaXRzOwogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKFQga2V5KQogICAgICAg
IHsKICAgICAgICAgICAgcmV0dXJuIGludEhhc2goYml0d2lzZV9jYXN0PEJpdHM+KGtleSkpOwog
ICAgICAgIH0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChUIGEsIFQgYikKICAgICAgICB7CiAg
ICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Qml0cz4oYSkgPT0gYml0d2lzZV9jYXN0PEJp
dHM+KGIpOwogICAgICAgIH0KICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJl
VG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CiAgICB9OwoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgYm9vbCBpc1NtYXJ0UG9pbnRlcj4KICAgIHN0cnVjdCBQdHJIYXNoQmFzZTsKCiAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgIHN0cnVjdCBQdHJIYXNoQmFzZTxULCBmYWxzZSA+IHsKICAg
ICAgICB0eXBlZGVmIFQgUHRyVHlwZTsKCiAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goUHRy
VHlwZSBrZXkpIHsgcmV0dXJuIEludEhhc2g8dWludHB0cl90Pjo6aGFzaChyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4oa2V5KSk7IH0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChQdHJUeXBl
IGEsIFB0clR5cGUgYikgeyByZXR1cm4gYSA9PSBiOyB9CiAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwogICAgfTsKCiAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgIHN0cnVjdCBQdHJIYXNoQmFzZTxULCB0cnVlID4gewogICAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgR2V0UHRySGVscGVyPFQ+OjpQdHJUeXBlIFB0clR5cGU7Cgog
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKFB0clR5cGUga2V5KSB7IHJldHVybiBJbnRIYXNo
PHVpbnRwdHJfdD46Omhhc2gocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGtleSkpOyB9CiAg
ICAgICAgc3RhdGljIGJvb2wgZXF1YWwoUHRyVHlwZSBhLCBQdHJUeXBlIGIpIHsgcmV0dXJuIGEg
PT0gYjsgfQogICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JE
ZWxldGVkID0gdHJ1ZTsKCiAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVCYga2V5
KSB7IHJldHVybiBoYXNoKGdldFB0cihrZXkpKTsgfQogICAgICAgIHN0YXRpYyBib29sIGVxdWFs
KGNvbnN0IFQmIGEsIGNvbnN0IFQmIGIpIHsgcmV0dXJuIGdldFB0cihhKSA9PSBnZXRQdHIoYik7
IH0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChQdHJUeXBlIGEsIGNvbnN0IFQmIGIpIHsgcmV0
dXJuIGEgPT0gZ2V0UHRyKGIpOyB9CiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVCYg
YSwgUHRyVHlwZSBiKSB7IHJldHVybiBnZXRQdHIoYSkgPT0gYjsgfQogICAgfTsKCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgUHRySGFzaCA6IFB0ckhhc2hCYXNlPFQsIElzU21hcnRQ
dHI8VD46OnZhbHVlPiB7CiAgICB9OwoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IERlZmF1bHRIYXNoOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVj
dCBQYWlySGFzaCB7CiAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qgc3RkOjpwYWly
PFQsIFU+JiBwKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHBhaXJJbnRIYXNoKERlZmF1
bHRIYXNoPFQ+OjpIYXNoOjpoYXNoKHAuZmlyc3QpLCBEZWZhdWx0SGFzaDxVPjo6SGFzaDo6aGFz
aChwLnNlY29uZCkpOwogICAgICAgIH0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBz
dGQ6OnBhaXI8VCwgVT4mIGEsIGNvbnN0IHN0ZDo6cGFpcjxULCBVPiYgYikKICAgICAgICB7CiAg
ICAgICAgICAgIHJldHVybiBEZWZhdWx0SGFzaDxUPjo6SGFzaDo6ZXF1YWwoYS5maXJzdCwgYi5m
aXJzdCkgJiYgRGVmYXVsdEhhc2g8VT46Okhhc2g6OmVxdWFsKGEuc2Vjb25kLCBiLnNlY29uZCk7
CiAgICAgICAgfQogICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkID0gRGVmYXVsdEhhc2g8VD46Okhhc2g6OnNhZmVUb0NvbXBhcmVUb0VtcHR5T3JE
ZWxldGVkICYmIERlZmF1bHRIYXNoPFU+OjpIYXNoOjpzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVs
ZXRlZDsKICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RydWN0
IEludFBhaXJIYXNoIHsKICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBzdGQ6OnBh
aXI8VCwgVT4mIHApIHsgcmV0dXJuIHBhaXJJbnRIYXNoKHAuZmlyc3QsIHAuc2Vjb25kKTsgfQog
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IHN0ZDo6cGFpcjxULCBVPiYgYSwgY29uc3Qg
c3RkOjpwYWlyPFQsIFU+JiBiKSB7IHJldHVybiBQYWlySGFzaDxULCBUPjo6ZXF1YWwoYSwgYik7
IH0KICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRl
ZCA9IFBhaXJIYXNoPFQsIFU+OjpzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZDsKICAgIH07
CgoKCiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxib29sPiB7IHR5cGVkZWYgSW50
SGFzaDx1aW50OF90PiBIYXNoOyB9OwogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
c2hvcnQ+IHsgdHlwZWRlZiBJbnRIYXNoPHVuc2lnbmVkPiBIYXNoOyB9OwogICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8dW5zaWduZWQgc2hvcnQ+IHsgdHlwZWRlZiBJbnRIYXNoPHVu
c2lnbmVkPiBIYXNoOyB9OwogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8aW50PiB7
IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZD4gSGFzaDsgfTsKICAgIHRlbXBsYXRlPD4gc3RydWN0
IERlZmF1bHRIYXNoPHVuc2lnbmVkPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZD4gSGFzaDsg
fTsKICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPGxvbmc+IHsgdHlwZWRlZiBJbnRI
YXNoPHVuc2lnbmVkIGxvbmc+IEhhc2g7IH07CiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0
SGFzaDx1bnNpZ25lZCBsb25nPiB7IHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZCBsb25nPiBIYXNo
OyB9OwogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8bG9uZyBsb25nPiB7IHR5cGVk
ZWYgSW50SGFzaDx1bnNpZ25lZCBsb25nIGxvbmc+IEhhc2g7IH07CiAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBEZWZhdWx0SGFzaDx1bnNpZ25lZCBsb25nIGxvbmc+IHsgdHlwZWRlZiBJbnRIYXNoPHVu
c2lnbmVkIGxvbmcgbG9uZz4gSGFzaDsgfTsKCgoKCgogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8ZmxvYXQ+IHsgdHlwZWRlZiBGbG9hdEhhc2g8ZmxvYXQ+IEhhc2g7IH07CiAgICB0
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxkb3VibGU+IHsgdHlwZWRlZiBGbG9hdEhhc2g8
ZG91YmxlPiBIYXNoOyB9OwoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IERlZmF1
bHRIYXNoPFAqPiB7IHR5cGVkZWYgUHRySGFzaDxQKj4gSGFzaDsgfTsKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFA+IHN0cnVjdCBEZWZhdWx0SGFzaDxSZWZQdHI8UD4+IHsgdHlwZWRlZiBQdHJIYXNo
PFJlZlB0cjxQPj4gSGFzaDsgfTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFAsIHR5cGVuYW1lIERl
bGV0ZXI+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnVuaXF1ZV9wdHI8UCwgRGVsZXRlcj4+IHsg
dHlwZWRlZiBQdHJIYXNoPHN0ZDo6dW5pcXVlX3B0cjxQLCBEZWxldGVyPj4gSGFzaDsgfTsKCgoK
ICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjxzaG9ydCwgc2hvcnQ+
PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8c2hvcnQsIHNob3J0PiBIYXNoOyB9OwogICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPHNob3J0LCB1bnNpZ25lZCBzaG9ydD4+
IHsgdHlwZWRlZiBJbnRQYWlySGFzaDxzaG9ydCwgdW5zaWduZWQgc2hvcnQ+IEhhc2g7IH07CiAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8c2hvcnQsIGludD4+IHsg
dHlwZWRlZiBJbnRQYWlySGFzaDxzaG9ydCwgaW50PiBIYXNoOyB9OwogICAgdGVtcGxhdGU8PiBz
dHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPHNob3J0LCB1bnNpZ25lZD4+IHsgdHlwZWRlZiBJ
bnRQYWlySGFzaDxzaG9ydCwgdW5zaWduZWQ+IEhhc2g7IH07CiAgICB0ZW1wbGF0ZTw+IHN0cnVj
dCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8dW5zaWduZWQgc2hvcnQsIHNob3J0Pj4geyB0eXBlZGVm
IEludFBhaXJIYXNoPHVuc2lnbmVkIHNob3J0LCBzaG9ydD4gSGFzaDsgfTsKICAgIHRlbXBsYXRl
PD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjx1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQg
c2hvcnQ+PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8dW5zaWduZWQgc2hvcnQsIHVuc2lnbmVkIHNo
b3J0PiBIYXNoOyB9OwogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWly
PHVuc2lnbmVkIHNob3J0LCBpbnQ+PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8dW5zaWduZWQgc2hv
cnQsIGludD4gSGFzaDsgfTsKICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6
cGFpcjx1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQ+PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8dW5z
aWduZWQgc2hvcnQsIHVuc2lnbmVkPiBIYXNoOyB9OwogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8c3RkOjpwYWlyPGludCwgc2hvcnQ+PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8aW50
LCBzaG9ydD4gSGFzaDsgfTsKICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6
cGFpcjxpbnQsIHVuc2lnbmVkIHNob3J0Pj4geyB0eXBlZGVmIEludFBhaXJIYXNoPGludCwgdW5z
aWduZWQgc2hvcnQ+IEhhc2g7IH07CiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxz
dGQ6OnBhaXI8aW50LCBpbnQ+PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8aW50LCBpbnQ+IEhhc2g7
IH07CiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8aW50LCB1bnNp
Z25lZD4+IHsgdHlwZWRlZiBJbnRQYWlySGFzaDx1bnNpZ25lZCwgdW5zaWduZWQ+IEhhc2g7IH07
CiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8dW5zaWduZWQsIHNo
b3J0Pj4geyB0eXBlZGVmIEludFBhaXJIYXNoPHVuc2lnbmVkLCBzaG9ydD4gSGFzaDsgfTsKICAg
IHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQgc2hvcnQ+PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8dW5zaWduZWQsIHVuc2lnbmVkIHNob3J0
PiBIYXNoOyB9OwogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPHVu
c2lnbmVkLCBpbnQ+PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8dW5zaWduZWQsIGludD4gSGFzaDsg
fTsKICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8dW5zaWduZWQsIHVuc2lnbmVkPiBIYXNo
OyB9OwoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RydWN0IERlZmF1
bHRIYXNoPHN0ZDo6cGFpcjxULCBVPj4geyB0eXBlZGVmIFBhaXJIYXNoPFQsIFU+IEhhc2g7IH07
Cgp9Cgp1c2luZyBXVEY6OkRlZmF1bHRIYXNoOwp1c2luZyBXVEY6OkludEhhc2g7CnVzaW5nIFdU
Rjo6UHRySGFzaDsKIyAzMCAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgiIDIK
IyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVHJhaXRzLmgiIDEKIyAyMiAiLi4vLi4vU291
cmNlL1dURi93dGYvSGFzaFRyYWl0cy5oIgojZGVmaW5lIFdURl9IYXNoVHJhaXRzX2ggCgoKCgoK
Cm5hbWVzcGFjZSBXVEYgewoKY2xhc3MgU3RyaW5nOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IEhhc2hUcmFpdHM7Cgp0ZW1wbGF0ZTxib29sIGlzSW50ZWdlciwgdHlwZW5hbWUgVD4gc3Ry
dWN0IEdlbmVyaWNIYXNoVHJhaXRzQmFzZTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBH
ZW5lcmljSGFzaFRyYWl0c0Jhc2U8ZmFsc2UsIFQ+IHsKCiAgICBzdGF0aWMgY29uc3QgYm9vbCBl
bXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CgoKCgogICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNF
bXB0eVZhbHVlRnVuY3Rpb24gPSBmYWxzZTsKCgoKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBt
aW5pbXVtVGFibGVTaXplID0gODsKfTsKCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2Vu
ZXJpY0hhc2hUcmFpdHNCYXNlPHRydWUsIFQ+IDogR2VuZXJpY0hhc2hUcmFpdHNCYXNlPGZhbHNl
LCBUPiB7CiAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKICAg
IHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShUJiBzbG90KSB7IHNsb3QgPSBzdGF0
aWNfY2FzdDxUPigtMSk7IH0KICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKFQgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlID09IHN0YXRpY19jYXN0PFQ+KC0xKTsgfQp9OwoKdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IEdlbmVyaWNIYXNoVHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHNCYXNl
PHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBUPiB7CiAgICB0eXBlZGVmIFQgVHJhaXRUeXBl
OwogICAgdHlwZWRlZiBUIEVtcHR5VmFsdWVUeXBlOwoKICAgIHN0YXRpYyBUIGVtcHR5VmFsdWUo
KSB7IHJldHVybiBUKCk7IH0KCgogICAgdHlwZWRlZiBUIFBlZWtUeXBlOwogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4gc3RhdGljIFUmJiBwZWVrKFUmJiB2YWx1ZSkgeyByZXR1cm4gc3RkOjpmb3J3
YXJkPFU+KHZhbHVlKTsgfQp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFp
dHMgOiBHZW5lcmljSGFzaFRyYWl0czxUPiB7IH07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgRmxvYXRIYXNoVHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHM8VD4gewogICAgc3RhdGljIFQg
ZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCk7
IH0KICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShUJiBzbG90KSB7IHNsb3Qg
PSAtc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKTsgfQogICAgc3RhdGljIGJvb2wg
aXNEZWxldGVkVmFsdWUoVCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gLXN0ZDo6bnVtZXJpY19s
aW1pdHM8VD46OmluZmluaXR5KCk7IH0KfTsKCnRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8
ZmxvYXQ+IDogRmxvYXRIYXNoVHJhaXRzPGZsb2F0PiB7IH07CnRlbXBsYXRlPD4gc3RydWN0IEhh
c2hUcmFpdHM8ZG91YmxlPiA6IEZsb2F0SGFzaFRyYWl0czxkb3VibGU+IHsgfTsKCgp0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHMgOiBHZW5l
cmljSGFzaFRyYWl0czxUPiB7CiAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJv
ID0gZmFsc2U7CiAgICBzdGF0aWMgVCBlbXB0eVZhbHVlKCkgeyByZXR1cm4gc3RkOjpudW1lcmlj
X2xpbWl0czxUPjo6bWF4KCk7IH0KICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1
ZShUJiBzbG90KSB7IHNsb3QgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSAtIDE7IH0K
ICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKFQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09
IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpIC0gMTsgfQp9OwoKdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IFNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0cyA6IEdlbmVyaWNIYXNoVHJh
aXRzPFQ+IHsKICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsK
ICAgIHN0YXRpYyBUIGVtcHR5VmFsdWUoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+
OjptaW4oKTsgfQogICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFQmIHNsb3Qp
IHsgc2xvdCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpOyB9CiAgICBzdGF0aWMgYm9v
bCBpc0RlbGV0ZWRWYWx1ZShUIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSBzdGQ6Om51bWVyaWNf
bGltaXRzPFQ+OjptYXgoKTsgfQp9OwoKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTdHJv
bmdFbnVtSGFzaFRyYWl0cyA6IEdlbmVyaWNIYXNoVHJhaXRzPFQ+IHsKICAgIHVzaW5nIFVuZGVy
bHlpbmdUeXBlID0gdHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8VD46OnR5cGU7CiAgICBz
dGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CiAgICBzdGF0aWMgVCBl
bXB0eVZhbHVlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oc3RkOjpudW1lcmljX2xpbWl0czxV
bmRlcmx5aW5nVHlwZT46Om1heCgpKTsgfQogICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRl
ZFZhbHVlKFQmIHNsb3QpIHsgc2xvdCA9IHN0YXRpY19jYXN0PFQ+KHN0ZDo6bnVtZXJpY19saW1p
dHM8VW5kZXJseWluZ1R5cGU+OjptYXgoKSAtIDEpOyB9CiAgICBzdGF0aWMgYm9vbCBpc0RlbGV0
ZWRWYWx1ZShUIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSBzdGF0aWNfY2FzdDxUPihzdGQ6Om51
bWVyaWNfbGltaXRzPFVuZGVybHlpbmdUeXBlPjo6bWF4KCkgLSAxKTsgfQp9OwoKdGVtcGxhdGU8
dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8UCo+IDogR2VuZXJpY0hhc2hUcmFpdHM8UCo+
IHsKICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOwogICAgc3Rh
dGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFAqJiBzbG90KSB7IHNsb3QgPSByZWludGVy
cHJldF9jYXN0PFAqPigtMSk7IH0KICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKFAqIHZh
bHVlKSB7IHJldHVybiB2YWx1ZSA9PSByZWludGVycHJldF9jYXN0PFAqPigtMSk7IH0KfTsKCnRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTaW1wbGVDbGFzc0hhc2hUcmFpdHMgOiBHZW5lcmlj
SGFzaFRyYWl0czxUPiB7CiAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0g
dHJ1ZTsKICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShUJiBzbG90KSB7IG5l
dyAoTm90TnVsbCwgc3RkOjphZGRyZXNzb2Yoc2xvdCkpIFQoSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KTsgfQogICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgVCYgdmFsdWUpIHsgcmV0
dXJuIHZhbHVlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KfTsKCnRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIERlbGV0ZXI+IHN0cnVjdCBIYXNoVHJhaXRzPHN0ZDo6dW5pcXVlX3B0
cjxULCBEZWxldGVyPj4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8c3RkOjp1bmlxdWVfcHRyPFQs
IERlbGV0ZXI+PiB7CiAgICB0eXBlZGVmIHN0ZDo6bnVsbHB0cl90IEVtcHR5VmFsdWVUeXBlOwog
ICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9
CgogICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKHN0ZDo6dW5pcXVlX3B0cjxU
LCBEZWxldGVyPiYgc2xvdCkgeyBuZXcgKE5vdE51bGwsIHN0ZDo6YWRkcmVzc29mKHNsb3QpKSBz
dGQ6OnVuaXF1ZV9wdHI8VCwgRGVsZXRlcj4geyByZWludGVycHJldF9jYXN0PFQqPigtMSkgfTsg
fQogICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFQs
IERlbGV0ZXI+JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuZ2V0KCkgPT0gcmVpbnRlcnByZXRfY2Fz
dDxUKj4oLTEpOyB9CgogICAgdHlwZWRlZiBUKiBQZWVrVHlwZTsKICAgIHN0YXRpYyBUKiBwZWVr
KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxULCBEZWxldGVyPiYgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
LmdldCgpOyB9CiAgICBzdGF0aWMgVCogcGVlayhzdGQ6Om51bGxwdHJfdCkgeyByZXR1cm4gbnVs
bHB0cjsgfQoKICAgIHN0YXRpYyB2b2lkIGN1c3RvbURlbGV0ZUJ1Y2tldChzdGQ6OnVuaXF1ZV9w
dHI8VCwgRGVsZXRlcj4mIHZhbHVlKQogICAgewojIDE0MSAiLi4vLi4vU291cmNlL1dURi93dGYv
SGFzaFRyYWl0cy5oIgogICAgICAgICgodm9pZCkwKTsKICAgICAgICBUKiBwb2ludGVyID0gdmFs
dWUucmVsZWFzZSgpOwogICAgICAgIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZSh2YWx1ZSk7CgoKCiAg
ICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEocG9pbnRlciksIDEpKQogICAgICAgICAgICBE
ZWxldGVyKCkocG9pbnRlcik7CiAgICB9Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3Qg
SGFzaFRyYWl0czxSZWZQdHI8UD4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFJlZlB0cjxQPj4g
ewogICAgc3RhdGljIFAqIGVtcHR5VmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9CgogICAgdHlw
ZWRlZiBQKiBQZWVrVHlwZTsKICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKGNvbnN0IFJlZlB0cjxQ
PiYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9CiAgICBzdGF0aWMgUGVla1R5cGUgcGVl
ayhQKiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KCiAgICBzdGF0aWMgdm9pZCBjdXN0b21EZWxl
dGVCdWNrZXQoUmVmUHRyPFA+JiB2YWx1ZSkKICAgIHsKCiAgICAgICAgKCh2b2lkKTApOwogICAg
ICAgIGF1dG8gdmFsdWVUb0JlRGVzdHJveWVkID0gc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFy
YW1ldGVyPih2YWx1ZSk7CiAgICAgICAgU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFJlZlB0cjxQPj46
OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSh2YWx1ZSk7CiAgICB9Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVj
dCBIYXNoVHJhaXRzPFN0cmluZz4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U3RyaW5nPiB7CiAg
ICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7CiAgICBz
dGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgU3RyaW5nJik7CgogICAgc3RhdGljIHZvaWQg
Y3VzdG9tRGVsZXRlQnVja2V0KFN0cmluZyYpOwp9OwoKCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFp
dHMsIGJvb2wgaGFzRW1wdHlWYWx1ZUZ1bmN0aW9uPiBzdHJ1Y3QgSGFzaFRyYWl0c0VtcHR5VmFs
dWVDaGVja2VyOwp0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+IHN0cnVjdCBIYXNoVHJhaXRzRW1w
dHlWYWx1ZUNoZWNrZXI8VHJhaXRzLCB0cnVlPiB7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgVCYgdmFsdWUpIHsgcmV0dXJuIFRyYWl0czo6
aXNFbXB0eVZhbHVlKHZhbHVlKTsgfQp9Owp0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+IHN0cnVj
dCBIYXNoVHJhaXRzRW1wdHlWYWx1ZUNoZWNrZXI8VHJhaXRzLCBmYWxzZT4gewogICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFQmIHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA9PSBUcmFpdHM6OmVtcHR5VmFsdWUoKTsgfQp9Owp0ZW1wbGF0ZTx0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIFQ+IGlubGluZSBib29sIGlzSGFzaFRyYWl0c0VtcHR5VmFs
dWUoY29uc3QgVCYgdmFsdWUpCnsKICAgIHJldHVybiBIYXNoVHJhaXRzRW1wdHlWYWx1ZUNoZWNr
ZXI8VHJhaXRzLCBUcmFpdHM6Omhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uPjo6aXNFbXB0eVZhbHVl
KHZhbHVlKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBUPgpzdHJ1Y3Qg
SGFzaFRyYWl0SGFzQ3VzdG9tRGVsZXRlIHsKICAgIHN0YXRpYyBUJiBidWNrZXRBcmc7CiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBYPiBzdGF0aWMgc3RkOjp0cnVlX3R5cGUgVGVzdEhhc0N1c3RvbURl
bGV0ZShYKiwgZGVjbHR5cGUoWDo6Y3VzdG9tRGVsZXRlQnVja2V0KGJ1Y2tldEFyZykpKiA9IG51
bGxwdHIpOwogICAgc3RhdGljIHN0ZDo6ZmFsc2VfdHlwZSBUZXN0SGFzQ3VzdG9tRGVsZXRlKC4u
Lik7CiAgICB0eXBlZGVmIGRlY2x0eXBlKFRlc3RIYXNDdXN0b21EZWxldGUoc3RhdGljX2Nhc3Q8
VHJhaXRzKj4obnVsbHB0cikpKSBSZXN1bHRUeXBlOwogICAgc3RhdGljIGNvbnN0IGJvb2wgdmFs
dWUgPSBSZXN1bHRUeXBlOjp2YWx1ZTsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgVD4KdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SGFzaFRyYWl0SGFzQ3VzdG9tRGVsZXRl
PFRyYWl0cywgVD46OnZhbHVlPjo6dHlwZQpoYXNoVHJhaXRzRGVsZXRlQnVja2V0KFQmIHZhbHVl
KQp7CiAgICBUcmFpdHM6OmN1c3RvbURlbGV0ZUJ1Y2tldCh2YWx1ZSk7Cn0KCnRlbXBsYXRlPHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgVD4KdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IUhhc2hU
cmFpdEhhc0N1c3RvbURlbGV0ZTxUcmFpdHMsIFQ+Ojp2YWx1ZT46OnR5cGUKaGFzaFRyYWl0c0Rl
bGV0ZUJ1Y2tldChUJiB2YWx1ZSkKewogICAgdmFsdWUuflQoKTsKICAgIFRyYWl0czo6Y29uc3Ry
dWN0RGVsZXRlZFZhbHVlKHZhbHVlKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgRmlyc3RUcmFpdHNB
cmcsIHR5cGVuYW1lIFNlY29uZFRyYWl0c0FyZz4Kc3RydWN0IFBhaXJIYXNoVHJhaXRzIDogR2Vu
ZXJpY0hhc2hUcmFpdHM8c3RkOjpwYWlyPHR5cGVuYW1lIEZpcnN0VHJhaXRzQXJnOjpUcmFpdFR5
cGUsIHR5cGVuYW1lIFNlY29uZFRyYWl0c0FyZzo6VHJhaXRUeXBlPj4gewogICAgdHlwZWRlZiBG
aXJzdFRyYWl0c0FyZyBGaXJzdFRyYWl0czsKICAgIHR5cGVkZWYgU2Vjb25kVHJhaXRzQXJnIFNl
Y29uZFRyYWl0czsKICAgIHR5cGVkZWYgc3RkOjpwYWlyPHR5cGVuYW1lIEZpcnN0VHJhaXRzOjpU
cmFpdFR5cGUsIHR5cGVuYW1lIFNlY29uZFRyYWl0czo6VHJhaXRUeXBlPiBUcmFpdFR5cGU7CiAg
ICB0eXBlZGVmIHN0ZDo6cGFpcjx0eXBlbmFtZSBGaXJzdFRyYWl0czo6RW1wdHlWYWx1ZVR5cGUs
IHR5cGVuYW1lIFNlY29uZFRyYWl0czo6RW1wdHlWYWx1ZVR5cGU+IEVtcHR5VmFsdWVUeXBlOwoK
ICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBGaXJzdFRyYWl0czo6ZW1w
dHlWYWx1ZUlzWmVybyAmJiBTZWNvbmRUcmFpdHM6OmVtcHR5VmFsdWVJc1plcm87CiAgICBzdGF0
aWMgRW1wdHlWYWx1ZVR5cGUgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEZp
cnN0VHJhaXRzOjplbXB0eVZhbHVlKCksIFNlY29uZFRyYWl0czo6ZW1wdHlWYWx1ZSgpKTsgfQoK
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtVGFibGVTaXplID0gRmlyc3RUcmFpdHM6
Om1pbmltdW1UYWJsZVNpemU7CgogICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVl
KFRyYWl0VHlwZSYgc2xvdCkgeyBGaXJzdFRyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKHNs
b3QuZmlyc3QpOyB9CiAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBUcmFpdFR5
cGUmIHZhbHVlKSB7IHJldHVybiBGaXJzdFRyYWl0czo6aXNEZWxldGVkVmFsdWUodmFsdWUuZmly
c3QpOyB9Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdCwgdHlwZW5hbWUgU2Vjb25kPgpzdHJ1
Y3QgSGFzaFRyYWl0czxzdGQ6OnBhaXI8Rmlyc3QsIFNlY29uZD4+IDogcHVibGljIFBhaXJIYXNo
VHJhaXRzPEhhc2hUcmFpdHM8Rmlyc3Q+LCBIYXNoVHJhaXRzPFNlY29uZD4+IHsgfTsKCnRlbXBs
YXRlPHR5cGVuYW1lIEtleVR5cGVBcmcsIHR5cGVuYW1lIFZhbHVlVHlwZUFyZz4Kc3RydWN0IEtl
eVZhbHVlUGFpciB7CiAgICB0eXBlZGVmIEtleVR5cGVBcmcgS2V5VHlwZTsKCiAgICBLZXlWYWx1
ZVBhaXIoKQogICAgewogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+
CiAgICBLZXlWYWx1ZVBhaXIoSyYmIGtleSwgViYmIHZhbHVlKQogICAgICAgIDoga2V5KHN0ZDo6
Zm9yd2FyZDxLPihrZXkpKQogICAgICAgICwgdmFsdWUoc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSkK
ICAgIHsKICAgIH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3RoZXJLZXlUeXBlLCB0eXBlbmFt
ZSBPdGhlclZhbHVlVHlwZT4KICAgIEtleVZhbHVlUGFpcihLZXlWYWx1ZVBhaXI8T3RoZXJLZXlU
eXBlLCBPdGhlclZhbHVlVHlwZT4mJiBvdGhlcikKICAgICAgICA6IGtleShzdGQ6OmZvcndhcmQ8
T3RoZXJLZXlUeXBlPihvdGhlci5rZXkpKQogICAgICAgICwgdmFsdWUoc3RkOjpmb3J3YXJkPE90
aGVyVmFsdWVUeXBlPihvdGhlci52YWx1ZSkpCiAgICB7CiAgICB9CgogICAgS2V5VHlwZUFyZyBr
ZXk7CiAgICBWYWx1ZVR5cGVBcmcgdmFsdWU7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUcmFp
dHNBcmcsIHR5cGVuYW1lIFZhbHVlVHJhaXRzQXJnPgpzdHJ1Y3QgS2V5VmFsdWVQYWlySGFzaFRy
YWl0cyA6IEdlbmVyaWNIYXNoVHJhaXRzPEtleVZhbHVlUGFpcjx0eXBlbmFtZSBLZXlUcmFpdHNB
cmc6OlRyYWl0VHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHNBcmc6OlRyYWl0VHlwZT4+IHsKICAg
IHR5cGVkZWYgS2V5VHJhaXRzQXJnIEtleVRyYWl0czsKICAgIHR5cGVkZWYgVmFsdWVUcmFpdHNB
cmcgVmFsdWVUcmFpdHM7CiAgICB0eXBlZGVmIEtleVZhbHVlUGFpcjx0eXBlbmFtZSBLZXlUcmFp
dHM6OlRyYWl0VHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OlRyYWl0VHlwZT4gVHJhaXRUeXBl
OwogICAgdHlwZWRlZiBLZXlWYWx1ZVBhaXI8dHlwZW5hbWUgS2V5VHJhaXRzOjpFbXB0eVZhbHVl
VHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OkVtcHR5VmFsdWVUeXBlPiBFbXB0eVZhbHVlVHlw
ZTsKICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHNBcmc6OlRyYWl0VHlwZSBWYWx1ZVR5
cGU7CgogICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IEtleVRyYWl0czo6
ZW1wdHlWYWx1ZUlzWmVybyAmJiBWYWx1ZVRyYWl0czo6ZW1wdHlWYWx1ZUlzWmVybzsKICAgIHN0
YXRpYyBFbXB0eVZhbHVlVHlwZSBlbXB0eVZhbHVlKCkgeyByZXR1cm4gS2V5VmFsdWVQYWlyPHR5
cGVuYW1lIEtleVRyYWl0czo6RW1wdHlWYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpF
bXB0eVZhbHVlVHlwZT4oS2V5VHJhaXRzOjplbXB0eVZhbHVlKCksIFZhbHVlVHJhaXRzOjplbXB0
eVZhbHVlKCkpOyB9CgogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1UYWJsZVNpemUg
PSBLZXlUcmFpdHM6Om1pbmltdW1UYWJsZVNpemU7CgogICAgc3RhdGljIHZvaWQgY29uc3RydWN0
RGVsZXRlZFZhbHVlKFRyYWl0VHlwZSYgc2xvdCkgeyBLZXlUcmFpdHM6OmNvbnN0cnVjdERlbGV0
ZWRWYWx1ZShzbG90LmtleSk7IH0KICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0
IFRyYWl0VHlwZSYgdmFsdWUpIHsgcmV0dXJuIEtleVRyYWl0czo6aXNEZWxldGVkVmFsdWUodmFs
dWUua2V5KTsgfQoKICAgIHN0YXRpYyB2b2lkIGN1c3RvbURlbGV0ZUJ1Y2tldChUcmFpdFR5cGUm
IHZhbHVlKQogICAgewogICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPEtleVZhbHVlUGFpcjxpbnQsIGludD4+Ojp2YWx1ZSwKICAgICAgICAgICAgIlRo
ZSB3cmFwcGVyIGl0c2VsZiBoYXMgdG8gYmUgdHJpdmlhbGx5IGRlc3RydWN0aWJsZSBmb3IgY3Vz
dG9tRGVsZXRlQnVja2V0KCkgdG8gbWFrZSBzZW5zZSwgc2luY2Ugd2UgZG8gbm90IGRlc3RydWN0
IHRoZSB3cmFwcGVyIGl0c2VsZi4iKTsKCiAgICAgICAgaGFzaFRyYWl0c0RlbGV0ZUJ1Y2tldDxL
ZXlUcmFpdHM+KHZhbHVlLmtleSk7CiAgICAgICAgdmFsdWUudmFsdWUuflZhbHVlVHlwZSgpOwog
ICAgfQp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZT4Kc3RydWN0IEhh
c2hUcmFpdHM8S2V5VmFsdWVQYWlyPEtleSwgVmFsdWU+PiA6IHB1YmxpYyBLZXlWYWx1ZVBhaXJI
YXNoVHJhaXRzPEhhc2hUcmFpdHM8S2V5PiwgSGFzaFRyYWl0czxWYWx1ZT4+IHsgfTsKCnRlbXBs
YXRlPHR5cGVuYW1lIFQ+CnN0cnVjdCBOdWxsYWJsZUhhc2hUcmFpdHMgOiBwdWJsaWMgSGFzaFRy
YWl0czxUPiB7CiAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7
CiAgICBzdGF0aWMgVCBlbXB0eVZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPigx
KTsgfQp9OwoKCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpzdHJ1Y3QgQ3VzdG9tSGFzaFRyYWl0cyA6
IHB1YmxpYyBHZW5lcmljSGFzaFRyYWl0czxUPiB7CiAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0
eVZhbHVlSXNaZXJvID0gZmFsc2U7CiAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFs
dWVGdW5jdGlvbiA9IHRydWU7CgogICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVl
KFQmIHNsb3QpCiAgICB7CiAgICAgICAgbmV3IChOb3ROdWxsLCBzdGQ6OmFkZHJlc3NvZihzbG90
KSkgVChUOjpEZWxldGVkVmFsdWUpOwogICAgfQoKICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZh
bHVlKGNvbnN0IFQmIHZhbHVlKQogICAgewogICAgICAgIHJldHVybiB2YWx1ZS5pc0RlbGV0ZWRW
YWx1ZSgpOwogICAgfQoKICAgIHN0YXRpYyBUIGVtcHR5VmFsdWUoKQogICAgewogICAgICAgIHJl
dHVybiBUKFQ6OkVtcHR5VmFsdWUpOwogICAgfQoKICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1
ZShjb25zdCBUJiB2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gdmFsdWUuaXNFbXB0eVZhbHVl
KCk7CiAgICB9Cn07Cgp9Cgp1c2luZyBXVEY6Okhhc2hUcmFpdHM7CnVzaW5nIFdURjo6UGFpckhh
c2hUcmFpdHM7CnVzaW5nIFdURjo6TnVsbGFibGVIYXNoVHJhaXRzOwp1c2luZyBXVEY6OlNpbXBs
ZUNsYXNzSGFzaFRyYWl0czsKIyAzMSAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5n
LmgiIDIKCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvUmVmQ291bnRlZC5oIiAxCiMgMjIgIi4u
Ly4uL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWQuaCIKI2RlZmluZSBSZWZDb3VudGVkX2ggCgoK
CgoKbmFtZXNwYWNlIFdURiB7CgoKI2RlZmluZSBDSEVDS19SRUZfQ09VTlRFRF9MSUZFQ1lDTEUg
MAoKCgoKCgoKY2xhc3MgUmVmQ291bnRlZEJhc2UgewpwdWJsaWM6CiAgICB2b2lkIHJlZigpCiAg
ICB7CgoKCgogICAgICAgICsrbV9yZWZDb3VudDsKICAgIH0KCiAgICBib29sIGhhc09uZVJlZigp
IGNvbnN0CiAgICB7CgoKCiAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQgPT0gMTsKICAgIH0KCiAg
ICB1bnNpZ25lZCByZWZDb3VudCgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fcmVmQ291
bnQ7CiAgICB9CgogICAgdm9pZCByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKQogICAgewoKCgoK
CiAgICB9Cgpwcm90ZWN0ZWQ6CiAgICBSZWZDb3VudGVkQmFzZSgpCiAgICAgICAgOiBtX3JlZkNv
dW50KDEpCgoKCgogICAgewogICAgfQoKICAgIH5SZWZDb3VudGVkQmFzZSgpCiAgICB7CgoKCgog
ICAgfQoKCiAgICBib29sIGRlcmVmQmFzZSgpCiAgICB7CgoKCgoKICAgICAgICAoKHZvaWQpMCk7
CiAgICAgICAgdW5zaWduZWQgdGVtcFJlZkNvdW50ID0gbV9yZWZDb3VudCAtIDE7CiAgICAgICAg
aWYgKCF0ZW1wUmVmQ291bnQpIHsKCgoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
fQogICAgICAgIG1fcmVmQ291bnQgPSB0ZW1wUmVmQ291bnQ7CiAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgfQojIDExNyAiLi4vLi4vU291cmNlL1dURi93dGYvUmVmQ291bnRlZC5oIgpwcml2YXRl
OgoKCgoKCiAgICB1bnNpZ25lZCBtX3JlZkNvdW50OwoKCgoKfTsKIyAxNDAgIi4uLy4uL1NvdXJj
ZS9XVEYvd3RmL1JlZkNvdW50ZWQuaCIKdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUmVmQ291
bnRlZCA6IHB1YmxpYyBSZWZDb3VudGVkQmFzZSB7CiAgICBwcml2YXRlOiBSZWZDb3VudGVkKGNv
bnN0IFJlZkNvdW50ZWQmKSA9IGRlbGV0ZTsgUmVmQ291bnRlZCYgb3BlcmF0b3I9KGNvbnN0IFJl
ZkNvdW50ZWQmKSA9IGRlbGV0ZTs7IHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwg
dm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQq
IHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVy
biA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBw
KSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6
ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxl
dGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBs
b2NhdGlvbjsgfSBwcml2YXRlOiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWlj
b2xvbkFmdGVyVGhpc01hY3JvOwpwdWJsaWM6CiAgICB2b2lkIGRlcmVmKCkKICAgIHsKICAgICAg
ICBpZiAoZGVyZWZCYXNlKCkpCiAgICAgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxUKj4odGhp
cyk7CiAgICB9Cgpwcm90ZWN0ZWQ6CiAgICBSZWZDb3VudGVkKCkgeyB9CiAgICB+UmVmQ291bnRl
ZCgpCiAgICB7CiAgICB9Cn07Cgp9Cgp1c2luZyBXVEY6OlJlZkNvdW50ZWQ7CiMgMzMgIi4uLy4u
L1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oIiAyCgpuYW1lc3BhY2UgV1RGIHsKCgoKY2xh
c3MgQ1N0cmluZ0J1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPENTdHJpbmdCdWZmZXI+IHsKcHVi
bGljOgogICAgY29uc3QgY2hhciogZGF0YSgpIHsgcmV0dXJuIG11dGFibGVEYXRhKCk7IH0KICAg
IHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQoKcHJpdmF0ZToKICAg
IGZyaWVuZCBjbGFzcyBDU3RyaW5nOwoKICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTdHJpbmdCdWZm
ZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCk7CgogICAgQ1N0cmluZ0J1ZmZl
cihzaXplX3QgbGVuZ3RoKSA6IG1fbGVuZ3RoKGxlbmd0aCkgeyB9CiAgICBjaGFyKiBtdXRhYmxl
RGF0YSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNoYXIqPih0aGlzICsgMSk7IH0K
CiAgICBjb25zdCBzaXplX3QgbV9sZW5ndGg7Cn07CgoKCmNsYXNzIENTdHJpbmcgewpwdWJsaWM6
CiAgICBDU3RyaW5nKCkgeyB9CiAgICBDU3RyaW5nKGNvbnN0IGNoYXIqKTsKICAgIENTdHJpbmco
Y29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgpOwogICAgQ1N0cmluZyhDU3RyaW5nQnVmZmVyKiBi
dWZmZXIpIDogbV9idWZmZXIoYnVmZmVyKSB7IH0KICAgIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5p
dGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CiAgICBDU3Ry
aW5nKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9idWZmZXIoSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKSB7IH0KCiAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3QKICAgIHsKICAgICAgICBy
ZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogMDsKICAgIH0KICAgIGNoYXIqIG11
dGFibGVEYXRhKCk7CiAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1
cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+bGVuZ3RoKCkgOiAwOwogICAgfQoKICAgIGJvb2wgaXNO
dWxsKCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9CiAgICBib29sIGlzU2FmZVRvU2VuZFRv
QW5vdGhlclRocmVhZCgpIGNvbnN0OwoKICAgIENTdHJpbmdCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CgogICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7
IH0KCiAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7Cgpwcml2YXRlOgogICAgdm9pZCBjb3B5QnVm
ZmVySWZOZWVkZWQoKTsKICAgIHZvaWQgaW5pdChjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCk7
CiAgICBSZWZQdHI8Q1N0cmluZ0J1ZmZlcj4gbV9idWZmZXI7Cn07CgogYm9vbCBvcGVyYXRvcj09
KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpOwppbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpIHsgcmV0dXJuICEoYSA9PSBi
KTsgfQogYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpOwpp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsg
cmV0dXJuICEoYSA9PSBiKTsgfQogYm9vbCBvcGVyYXRvcjwoY29uc3QgQ1N0cmluZyYgYSwgY29u
c3QgQ1N0cmluZyYgYik7CgpzdHJ1Y3QgQ1N0cmluZ0hhc2ggewogICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgQ1N0cmluZyYgc3RyaW5nKSB7IHJldHVybiBzdHJpbmcuaGFzaCgpOyB9CiAg
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBDU3RyaW5nJiBiKTsK
ICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1
ZTsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKdGVtcGxhdGU8
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8Q1N0cmluZz4gewogICAgdHlwZWRlZiBDU3RyaW5nSGFzaCBI
YXNoOwp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7CnRlbXBsYXRl
PD4gc3RydWN0IEhhc2hUcmFpdHM8Q1N0cmluZz4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8Q1N0
cmluZz4geyB9OwoKfQoKdXNpbmcgV1RGOjpDU3RyaW5nOwojIDMzICIuLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oIiAyCgpuYW1lc3BhY2UgSlND
IHsKCmNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjsKY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmOwoKCmJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIm
LCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mKTsKIyA1MCAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuaCIKdm9pZCBk
aXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0IGNo
YXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mIG91dCk7CgoKCnZvaWQgZGlzYXNzZW1ibGVBc3luY2hy
b25vdXNseSgKICAgIGNvbnN0IENTdHJpbmcmIGhlYWRlciwgY29uc3QgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmJiwgc2l6ZV90LCBjb25zdCBjaGFyKiBwcmVmaXgpOwoKIHZvaWQgd2FpdEZvckFzeW5j
aHJvbm91c0Rpc2Fzc2VtYmx5KCk7Cgp9CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCIgMQojIDI3ICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCIKI2RlZmluZSBF
eGVjdXRhYmxlQWxsb2NhdG9yX2ggCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDb21waWxhdGlvbkVmZm9ydC5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ29tcGlsYXRpb25FZmZvcnQuaCIKI2RlZmluZSBKSVRDb21waWxhdGlvbkVm
Zm9ydF9oIAoKbmFtZXNwYWNlIEpTQyB7CgplbnVtIEpJVENvbXBpbGF0aW9uRWZmb3J0IHsKICAg
IEpJVENvbXBpbGF0aW9uQ2FuRmFpbCwKICAgIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQKfTsK
Cn0KIyAyOSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2Nh
dG9yLmgiIDIKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvNC45LjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzMCAiLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgiIDIKCgojIDEgIi4uLy4uL1NvdXJj
ZS9XVEYvd3RmL0xvY2suaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmgiCiNk
ZWZpbmUgV1RGX0xvY2tfaCAKCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvQXRvbWljcy5oIiAx
CiMgMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaCIKI2RlZmluZSBBdG9taWNzX2gg
CgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvYXRvbWljIiAxIDMKIyAzMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hdG9taWMiIDMKI2RlZmluZSBfR0xJQkNYWF9BVE9NSUMg
MQoKICAgICAgIAojIDM2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2F0b21pYyIgMwoKCgoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2F0b21pY19iYXNlLmgiIDEg
MwojIDMxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2JpdHMvYXRvbWljX2Jhc2UuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0FUT01JQ19CQVNF
X0ggMQoKICAgICAgIAojIDM0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYXRvbWljX2Jhc2UuaCIgMwoKCgoKCgoKI2RlZmluZSBf
R0xJQkNYWF9BTFdBWVNfSU5MSU5FIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5l
KSkKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1
bHQiKSkpCnsKCiMgNTYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9hdG9taWNfYmFzZS5oIiAzCiAgdHlwZWRlZiBlbnVtIG1lbW9y
eV9vcmRlcgogICAgewogICAgICBtZW1vcnlfb3JkZXJfcmVsYXhlZCwKICAgICAgbWVtb3J5X29y
ZGVyX2NvbnN1bWUsCiAgICAgIG1lbW9yeV9vcmRlcl9hY3F1aXJlLAogICAgICBtZW1vcnlfb3Jk
ZXJfcmVsZWFzZSwKICAgICAgbWVtb3J5X29yZGVyX2FjcV9yZWwsCiAgICAgIG1lbW9yeV9vcmRl
cl9zZXFfY3N0CiAgICB9IG1lbW9yeV9vcmRlcjsKCiAgZW51bSBfX21lbW9yeV9vcmRlcl9tb2Rp
ZmllcgogICAgewogICAgICBfX21lbW9yeV9vcmRlcl9tYXNrID0gMHgwZmZmZiwKICAgICAgX19t
ZW1vcnlfb3JkZXJfbW9kaWZpZXJfbWFzayA9IDB4ZmZmZjAwMDAsCiAgICAgIF9fbWVtb3J5X29y
ZGVyX2hsZV9hY3F1aXJlID0gMHgxMDAwMCwKICAgICAgX19tZW1vcnlfb3JkZXJfaGxlX3JlbGVh
c2UgPSAweDIwMDAwCiAgICB9OwoKICBjb25zdGV4cHIgbWVtb3J5X29yZGVyCiAgb3BlcmF0b3J8
KG1lbW9yeV9vcmRlciBfX20sIF9fbWVtb3J5X29yZGVyX21vZGlmaWVyIF9fbW9kKQogIHsKICAg
IHJldHVybiBtZW1vcnlfb3JkZXIoX19tIHwgaW50KF9fbW9kKSk7CiAgfQoKICBjb25zdGV4cHIg
bWVtb3J5X29yZGVyCiAgb3BlcmF0b3ImKG1lbW9yeV9vcmRlciBfX20sIF9fbWVtb3J5X29yZGVy
X21vZGlmaWVyIF9fbW9kKQogIHsKICAgIHJldHVybiBtZW1vcnlfb3JkZXIoX19tICYgaW50KF9f
bW9kKSk7CiAgfQoKCiAgY29uc3RleHByIG1lbW9yeV9vcmRlcgogIF9fY21wZXhjaF9mYWlsdXJl
X29yZGVyMihtZW1vcnlfb3JkZXIgX19tKSBub2V4Y2VwdAogIHsKICAgIHJldHVybiBfX20gPT0g
bWVtb3J5X29yZGVyX2FjcV9yZWwgPyBtZW1vcnlfb3JkZXJfYWNxdWlyZQogICAgICA6IF9fbSA9
PSBtZW1vcnlfb3JkZXJfcmVsZWFzZSA/IG1lbW9yeV9vcmRlcl9yZWxheGVkIDogX19tOwogIH0K
CiAgY29uc3RleHByIG1lbW9yeV9vcmRlcgogIF9fY21wZXhjaF9mYWlsdXJlX29yZGVyKG1lbW9y
eV9vcmRlciBfX20pIG5vZXhjZXB0CiAgewogICAgcmV0dXJuIG1lbW9yeV9vcmRlcihfX2NtcGV4
Y2hfZmFpbHVyZV9vcmRlcjIoX19tICYgX19tZW1vcnlfb3JkZXJfbWFzaykKICAgICAgfCAoX19t
ICYgX19tZW1vcnlfb3JkZXJfbW9kaWZpZXJfbWFzaykpOwogIH0KCiAgaW5saW5lIF9fYXR0cmli
dXRlX18oKGFsd2F5c19pbmxpbmUpKSB2b2lkCiAgYXRvbWljX3RocmVhZF9mZW5jZShtZW1vcnlf
b3JkZXIgX19tKSBub2V4Y2VwdAogIHsgX19hdG9taWNfdGhyZWFkX2ZlbmNlKF9fbSk7IH0KCiAg
aW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSB2b2lkCiAgYXRvbWljX3NpZ25h
bF9mZW5jZShtZW1vcnlfb3JkZXIgX19tKSBub2V4Y2VwdAogIHsgX19hdG9taWNfc2lnbmFsX2Zl
bmNlKF9fbSk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBfVHAKICAg
IGtpbGxfZGVwZW5kZW5jeShfVHAgX195KSBub2V4Y2VwdAogICAgewogICAgICBfVHAgX19yZXQo
X195KTsKICAgICAgcmV0dXJuIF9fcmV0OwogICAgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9J
bnRUcD4KICAgIHN0cnVjdCBfX2F0b21pY19iYXNlOwoKCiAgdHlwZWRlZiBfX2F0b21pY19iYXNl
PGNoYXI+IGF0b21pY19jaGFyOwoKCiAgdHlwZWRlZiBfX2F0b21pY19iYXNlPHNpZ25lZCBjaGFy
PiBhdG9taWNfc2NoYXI7CgoKICB0eXBlZGVmIF9fYXRvbWljX2Jhc2U8dW5zaWduZWQgY2hhcj4g
YXRvbWljX3VjaGFyOwoKCiAgdHlwZWRlZiBfX2F0b21pY19iYXNlPHNob3J0PiBhdG9taWNfc2hv
cnQ7CgoKICB0eXBlZGVmIF9fYXRvbWljX2Jhc2U8dW5zaWduZWQgc2hvcnQ+IGF0b21pY191c2hv
cnQ7CgoKICB0eXBlZGVmIF9fYXRvbWljX2Jhc2U8aW50PiBhdG9taWNfaW50OwoKCiAgdHlwZWRl
ZiBfX2F0b21pY19iYXNlPHVuc2lnbmVkIGludD4gYXRvbWljX3VpbnQ7CgoKICB0eXBlZGVmIF9f
YXRvbWljX2Jhc2U8bG9uZz4gYXRvbWljX2xvbmc7CgoKICB0eXBlZGVmIF9fYXRvbWljX2Jhc2U8
dW5zaWduZWQgbG9uZz4gYXRvbWljX3Vsb25nOwoKCiAgdHlwZWRlZiBfX2F0b21pY19iYXNlPGxv
bmcgbG9uZz4gYXRvbWljX2xsb25nOwoKCiAgdHlwZWRlZiBfX2F0b21pY19iYXNlPHVuc2lnbmVk
IGxvbmcgbG9uZz4gYXRvbWljX3VsbG9uZzsKCgogIHR5cGVkZWYgX19hdG9taWNfYmFzZTx3Y2hh
cl90PiBhdG9taWNfd2NoYXJfdDsKCgogIHR5cGVkZWYgX19hdG9taWNfYmFzZTxjaGFyMTZfdD4g
YXRvbWljX2NoYXIxNl90OwoKCiAgdHlwZWRlZiBfX2F0b21pY19iYXNlPGNoYXIzMl90PiBhdG9t
aWNfY2hhcjMyX3Q7CgoKICB0eXBlZGVmIF9fYXRvbWljX2Jhc2U8Y2hhcjMyX3Q+IGF0b21pY19j
aGFyMzJfdDsKCgoKICB0eXBlZGVmIF9fYXRvbWljX2Jhc2U8aW50X2xlYXN0OF90PiBhdG9taWNf
aW50X2xlYXN0OF90OwoKCiAgdHlwZWRlZiBfX2F0b21pY19iYXNlPHVpbnRfbGVhc3Q4X3Q+IGF0
b21pY191aW50X2xlYXN0OF90OwoKCiAgdHlwZWRlZiBfX2F0b21pY19iYXNlPGludF9sZWFzdDE2
X3Q+IGF0b21pY19pbnRfbGVhc3QxNl90OwoKCiAgdHlwZWRlZiBfX2F0b21pY19iYXNlPHVpbnRf
bGVhc3QxNl90PiBhdG9taWNfdWludF9sZWFzdDE2X3Q7CgoKICB0eXBlZGVmIF9fYXRvbWljX2Jh
c2U8aW50X2xlYXN0MzJfdD4gYXRvbWljX2ludF9sZWFzdDMyX3Q7CgoKICB0eXBlZGVmIF9fYXRv
bWljX2Jhc2U8dWludF9sZWFzdDMyX3Q+IGF0b21pY191aW50X2xlYXN0MzJfdDsKCgogIHR5cGVk
ZWYgX19hdG9taWNfYmFzZTxpbnRfbGVhc3Q2NF90PiBhdG9taWNfaW50X2xlYXN0NjRfdDsKCgog
IHR5cGVkZWYgX19hdG9taWNfYmFzZTx1aW50X2xlYXN0NjRfdD4gYXRvbWljX3VpbnRfbGVhc3Q2
NF90OwoKCgogIHR5cGVkZWYgX19hdG9taWNfYmFzZTxpbnRfZmFzdDhfdD4gYXRvbWljX2ludF9m
YXN0OF90OwoKCiAgdHlwZWRlZiBfX2F0b21pY19iYXNlPHVpbnRfZmFzdDhfdD4gYXRvbWljX3Vp
bnRfZmFzdDhfdDsKCgogIHR5cGVkZWYgX19hdG9taWNfYmFzZTxpbnRfZmFzdDE2X3Q+IGF0b21p
Y19pbnRfZmFzdDE2X3Q7CgoKICB0eXBlZGVmIF9fYXRvbWljX2Jhc2U8dWludF9mYXN0MTZfdD4g
YXRvbWljX3VpbnRfZmFzdDE2X3Q7CgoKICB0eXBlZGVmIF9fYXRvbWljX2Jhc2U8aW50X2Zhc3Qz
Ml90PiBhdG9taWNfaW50X2Zhc3QzMl90OwoKCiAgdHlwZWRlZiBfX2F0b21pY19iYXNlPHVpbnRf
ZmFzdDMyX3Q+IGF0b21pY191aW50X2Zhc3QzMl90OwoKCiAgdHlwZWRlZiBfX2F0b21pY19iYXNl
PGludF9mYXN0NjRfdD4gYXRvbWljX2ludF9mYXN0NjRfdDsKCgogIHR5cGVkZWYgX19hdG9taWNf
YmFzZTx1aW50X2Zhc3Q2NF90PiBhdG9taWNfdWludF9mYXN0NjRfdDsKCgoKICB0eXBlZGVmIF9f
YXRvbWljX2Jhc2U8aW50cHRyX3Q+IGF0b21pY19pbnRwdHJfdDsKCgogIHR5cGVkZWYgX19hdG9t
aWNfYmFzZTx1aW50cHRyX3Q+IGF0b21pY191aW50cHRyX3Q7CgoKICB0eXBlZGVmIF9fYXRvbWlj
X2Jhc2U8c2l6ZV90PiBhdG9taWNfc2l6ZV90OwoKCiAgdHlwZWRlZiBfX2F0b21pY19iYXNlPGlu
dG1heF90PiBhdG9taWNfaW50bWF4X3Q7CgoKICB0eXBlZGVmIF9fYXRvbWljX2Jhc2U8dWludG1h
eF90PiBhdG9taWNfdWludG1heF90OwoKCiAgdHlwZWRlZiBfX2F0b21pY19iYXNlPHB0cmRpZmZf
dD4gYXRvbWljX3B0cmRpZmZfdDsKCgojZGVmaW5lIEFUT01JQ19WQVJfSU5JVChfVkkpIHsgX1ZJ
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGF0b21pYzsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGF0b21pYzxfVHAqPjsKCgoKICAgIHR5cGVkZWYg
Ym9vbCBfX2F0b21pY19mbGFnX2RhdGFfdHlwZTsKIyAyNjMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9hdG9taWNfYmFzZS5oIiAz
CiAgZXh0ZXJuICJDIiB7CgogIHN0cnVjdCBfX2F0b21pY19mbGFnX2Jhc2UKICB7CiAgICBfX2F0
b21pY19mbGFnX2RhdGFfdHlwZSBfTV9pOwogIH07CgogIH0KCiNkZWZpbmUgQVRPTUlDX0ZMQUdf
SU5JVCB7IDAgfQoKCiAgc3RydWN0IGF0b21pY19mbGFnIDogcHVibGljIF9fYXRvbWljX2ZsYWdf
YmFzZQogIHsKICAgIGF0b21pY19mbGFnKCkgbm9leGNlcHQgPSBkZWZhdWx0OwogICAgfmF0b21p
Y19mbGFnKCkgbm9leGNlcHQgPSBkZWZhdWx0OwogICAgYXRvbWljX2ZsYWcoY29uc3QgYXRvbWlj
X2ZsYWcmKSA9IGRlbGV0ZTsKICAgIGF0b21pY19mbGFnJiBvcGVyYXRvcj0oY29uc3QgYXRvbWlj
X2ZsYWcmKSA9IGRlbGV0ZTsKICAgIGF0b21pY19mbGFnJiBvcGVyYXRvcj0oY29uc3QgYXRvbWlj
X2ZsYWcmKSB2b2xhdGlsZSA9IGRlbGV0ZTsKCgogICAgY29uc3RleHByIGF0b21pY19mbGFnKGJv
b2wgX19pKSBub2V4Y2VwdAogICAgICA6IF9fYXRvbWljX2ZsYWdfYmFzZXsgX1NfaW5pdChfX2kp
IH0KICAgIHsgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgYm9v
bAogICAgdGVzdF9hbmRfc2V0KG1lbW9yeV9vcmRlciBfX20gPSBtZW1vcnlfb3JkZXJfc2VxX2Nz
dCkgbm9leGNlcHQKICAgIHsKICAgICAgcmV0dXJuIF9fYXRvbWljX3Rlc3RfYW5kX3NldCAoJl9N
X2ksIF9fbSk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUp
KSBib29sCiAgICB0ZXN0X2FuZF9zZXQobWVtb3J5X29yZGVyIF9fbSA9IG1lbW9yeV9vcmRlcl9z
ZXFfY3N0KSB2b2xhdGlsZSBub2V4Y2VwdAogICAgewogICAgICByZXR1cm4gX19hdG9taWNfdGVz
dF9hbmRfc2V0ICgmX01faSwgX19tKTsKICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygo
YWx3YXlzX2lubGluZSkpIHZvaWQKICAgIGNsZWFyKG1lbW9yeV9vcmRlciBfX20gPSBtZW1vcnlf
b3JkZXJfc2VxX2NzdCkgbm9leGNlcHQKICAgIHsKICAgICAgbWVtb3J5X29yZGVyIF9fYiA9IF9f
bSAmIF9fbWVtb3J5X29yZGVyX21hc2s7CiAgICAgIDsKICAgICAgOwogICAgICA7CgogICAgICBf
X2F0b21pY19jbGVhciAoJl9NX2ksIF9fbSk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRl
X18oKGFsd2F5c19pbmxpbmUpKSB2b2lkCiAgICBjbGVhcihtZW1vcnlfb3JkZXIgX19tID0gbWVt
b3J5X29yZGVyX3NlcV9jc3QpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICB7CiAgICAgIG1lbW9yeV9v
cmRlciBfX2IgPSBfX20gJiBfX21lbW9yeV9vcmRlcl9tYXNrOwogICAgICA7CiAgICAgIDsKICAg
ICAgOwoKICAgICAgX19hdG9taWNfY2xlYXIgKCZfTV9pLCBfX20pOwogICAgfQoKICBwcml2YXRl
OgogICAgc3RhdGljIGNvbnN0ZXhwciBfX2F0b21pY19mbGFnX2RhdGFfdHlwZQogICAgX1NfaW5p
dChib29sIF9faSkKICAgIHsgcmV0dXJuIF9faSA/IDEgOiAwOyB9CiAgfTsKIyAzNTIgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9h
dG9taWNfYmFzZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4KICAgIHN0cnVjdCBfX2F0
b21pY19iYXNlCiAgICB7CiAgICBwcml2YXRlOgogICAgICB0eXBlZGVmIF9JVHAgX19pbnRfdHlw
ZTsKCiAgICAgIF9faW50X3R5cGUgX01faTsKCiAgICBwdWJsaWM6CiAgICAgIF9fYXRvbWljX2Jh
c2UoKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CiAgICAgIH5fX2F0b21pY19iYXNlKCkgbm9leGNlcHQg
PSBkZWZhdWx0OwogICAgICBfX2F0b21pY19iYXNlKGNvbnN0IF9fYXRvbWljX2Jhc2UmKSA9IGRl
bGV0ZTsKICAgICAgX19hdG9taWNfYmFzZSYgb3BlcmF0b3I9KGNvbnN0IF9fYXRvbWljX2Jhc2Um
KSA9IGRlbGV0ZTsKICAgICAgX19hdG9taWNfYmFzZSYgb3BlcmF0b3I9KGNvbnN0IF9fYXRvbWlj
X2Jhc2UmKSB2b2xhdGlsZSA9IGRlbGV0ZTsKCgogICAgICBjb25zdGV4cHIgX19hdG9taWNfYmFz
ZShfX2ludF90eXBlIF9faSkgbm9leGNlcHQgOiBfTV9pIChfX2kpIHsgfQoKICAgICAgb3BlcmF0
b3IgX19pbnRfdHlwZSgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGxvYWQoKTsgfQoK
ICAgICAgb3BlcmF0b3IgX19pbnRfdHlwZSgpIGNvbnN0IHZvbGF0aWxlIG5vZXhjZXB0CiAgICAg
IHsgcmV0dXJuIGxvYWQoKTsgfQoKICAgICAgX19pbnRfdHlwZQogICAgICBvcGVyYXRvcj0oX19p
bnRfdHlwZSBfX2kpIG5vZXhjZXB0CiAgICAgIHsKIHN0b3JlKF9faSk7CiByZXR1cm4gX19pOwog
ICAgICB9CgogICAgICBfX2ludF90eXBlCiAgICAgIG9wZXJhdG9yPShfX2ludF90eXBlIF9faSkg
dm9sYXRpbGUgbm9leGNlcHQKICAgICAgewogc3RvcmUoX19pKTsKIHJldHVybiBfX2k7CiAgICAg
IH0KCiAgICAgIF9faW50X3R5cGUKICAgICAgb3BlcmF0b3IrKyhpbnQpIG5vZXhjZXB0CiAgICAg
IHsgcmV0dXJuIGZldGNoX2FkZCgxKTsgfQoKICAgICAgX19pbnRfdHlwZQogICAgICBvcGVyYXRv
cisrKGludCkgdm9sYXRpbGUgbm9leGNlcHQKICAgICAgeyByZXR1cm4gZmV0Y2hfYWRkKDEpOyB9
CgogICAgICBfX2ludF90eXBlCiAgICAgIG9wZXJhdG9yLS0oaW50KSBub2V4Y2VwdAogICAgICB7
IHJldHVybiBmZXRjaF9zdWIoMSk7IH0KCiAgICAgIF9faW50X3R5cGUKICAgICAgb3BlcmF0b3It
LShpbnQpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGZldGNoX3N1YigxKTsgfQoK
ICAgICAgX19pbnRfdHlwZQogICAgICBvcGVyYXRvcisrKCkgbm9leGNlcHQKICAgICAgeyByZXR1
cm4gX19hdG9taWNfYWRkX2ZldGNoKCZfTV9pLCAxLCBtZW1vcnlfb3JkZXJfc2VxX2NzdCk7IH0K
CiAgICAgIF9faW50X3R5cGUKICAgICAgb3BlcmF0b3IrKygpIHZvbGF0aWxlIG5vZXhjZXB0CiAg
ICAgIHsgcmV0dXJuIF9fYXRvbWljX2FkZF9mZXRjaCgmX01faSwgMSwgbWVtb3J5X29yZGVyX3Nl
cV9jc3QpOyB9CgogICAgICBfX2ludF90eXBlCiAgICAgIG9wZXJhdG9yLS0oKSBub2V4Y2VwdAog
ICAgICB7IHJldHVybiBfX2F0b21pY19zdWJfZmV0Y2goJl9NX2ksIDEsIG1lbW9yeV9vcmRlcl9z
ZXFfY3N0KTsgfQoKICAgICAgX19pbnRfdHlwZQogICAgICBvcGVyYXRvci0tKCkgdm9sYXRpbGUg
bm9leGNlcHQKICAgICAgeyByZXR1cm4gX19hdG9taWNfc3ViX2ZldGNoKCZfTV9pLCAxLCBtZW1v
cnlfb3JkZXJfc2VxX2NzdCk7IH0KCiAgICAgIF9faW50X3R5cGUKICAgICAgb3BlcmF0b3IrPShf
X2ludF90eXBlIF9faSkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX19hdG9taWNfYWRkX2ZldGNo
KCZfTV9pLCBfX2ksIG1lbW9yeV9vcmRlcl9zZXFfY3N0KTsgfQoKICAgICAgX19pbnRfdHlwZQog
ICAgICBvcGVyYXRvcis9KF9faW50X3R5cGUgX19pKSB2b2xhdGlsZSBub2V4Y2VwdAogICAgICB7
IHJldHVybiBfX2F0b21pY19hZGRfZmV0Y2goJl9NX2ksIF9faSwgbWVtb3J5X29yZGVyX3NlcV9j
c3QpOyB9CgogICAgICBfX2ludF90eXBlCiAgICAgIG9wZXJhdG9yLT0oX19pbnRfdHlwZSBfX2kp
IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fYXRvbWljX3N1Yl9mZXRjaCgmX01faSwgX19pLCBt
ZW1vcnlfb3JkZXJfc2VxX2NzdCk7IH0KCiAgICAgIF9faW50X3R5cGUKICAgICAgb3BlcmF0b3It
PShfX2ludF90eXBlIF9faSkgdm9sYXRpbGUgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX19hdG9t
aWNfc3ViX2ZldGNoKCZfTV9pLCBfX2ksIG1lbW9yeV9vcmRlcl9zZXFfY3N0KTsgfQoKICAgICAg
X19pbnRfdHlwZQogICAgICBvcGVyYXRvciY9KF9faW50X3R5cGUgX19pKSBub2V4Y2VwdAogICAg
ICB7IHJldHVybiBfX2F0b21pY19hbmRfZmV0Y2goJl9NX2ksIF9faSwgbWVtb3J5X29yZGVyX3Nl
cV9jc3QpOyB9CgogICAgICBfX2ludF90eXBlCiAgICAgIG9wZXJhdG9yJj0oX19pbnRfdHlwZSBf
X2kpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fYXRvbWljX2FuZF9mZXRjaCgm
X01faSwgX19pLCBtZW1vcnlfb3JkZXJfc2VxX2NzdCk7IH0KCiAgICAgIF9faW50X3R5cGUKICAg
ICAgb3BlcmF0b3J8PShfX2ludF90eXBlIF9faSkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX19h
dG9taWNfb3JfZmV0Y2goJl9NX2ksIF9faSwgbWVtb3J5X29yZGVyX3NlcV9jc3QpOyB9CgogICAg
ICBfX2ludF90eXBlCiAgICAgIG9wZXJhdG9yfD0oX19pbnRfdHlwZSBfX2kpIHZvbGF0aWxlIG5v
ZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fYXRvbWljX29yX2ZldGNoKCZfTV9pLCBfX2ksIG1lbW9y
eV9vcmRlcl9zZXFfY3N0KTsgfQoKICAgICAgX19pbnRfdHlwZQogICAgICBvcGVyYXRvcl49KF9f
aW50X3R5cGUgX19pKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfX2F0b21pY194b3JfZmV0Y2go
Jl9NX2ksIF9faSwgbWVtb3J5X29yZGVyX3NlcV9jc3QpOyB9CgogICAgICBfX2ludF90eXBlCiAg
ICAgIG9wZXJhdG9yXj0oX19pbnRfdHlwZSBfX2kpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsg
cmV0dXJuIF9fYXRvbWljX3hvcl9mZXRjaCgmX01faSwgX19pLCBtZW1vcnlfb3JkZXJfc2VxX2Nz
dCk7IH0KCiAgICAgIGJvb2wKICAgICAgaXNfbG9ja19mcmVlKCkgY29uc3Qgbm9leGNlcHQKICAg
ICAgeyByZXR1cm4gX19hdG9taWNfaXNfbG9ja19mcmVlKHNpemVvZihfTV9pKSwgbnVsbHB0cik7
IH0KCiAgICAgIGJvb2wKICAgICAgaXNfbG9ja19mcmVlKCkgY29uc3Qgdm9sYXRpbGUgbm9leGNl
cHQKICAgICAgeyByZXR1cm4gX19hdG9taWNfaXNfbG9ja19mcmVlKHNpemVvZihfTV9pKSwgbnVs
bHB0cik7IH0KCiAgICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgdm9p
ZAogICAgICBzdG9yZShfX2ludF90eXBlIF9faSwgbWVtb3J5X29yZGVyIF9fbSA9IG1lbW9yeV9v
cmRlcl9zZXFfY3N0KSBub2V4Y2VwdAogICAgICB7CiAgICAgICAgbWVtb3J5X29yZGVyIF9fYiA9
IF9fbSAmIF9fbWVtb3J5X29yZGVyX21hc2s7CiA7CiA7CiA7CgogX19hdG9taWNfc3RvcmVfbigm
X01faSwgX19pLCBfX20pOwogICAgICB9CgogICAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3
YXlzX2lubGluZSkpIHZvaWQKICAgICAgc3RvcmUoX19pbnRfdHlwZSBfX2ksCiAgICAgbWVtb3J5
X29yZGVyIF9fbSA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSB2b2xhdGlsZSBub2V4Y2VwdAogICAg
ICB7CiAgICAgICAgbWVtb3J5X29yZGVyIF9fYiA9IF9fbSAmIF9fbWVtb3J5X29yZGVyX21hc2s7
CiA7CiA7CiA7CgogX19hdG9taWNfc3RvcmVfbigmX01faSwgX19pLCBfX20pOwogICAgICB9Cgog
ICAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIF9faW50X3R5cGUKICAg
ICAgbG9hZChtZW1vcnlfb3JkZXIgX19tID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIGNvbnN0IG5v
ZXhjZXB0CiAgICAgIHsKICAgICAgIG1lbW9yeV9vcmRlciBfX2IgPSBfX20gJiBfX21lbW9yeV9v
cmRlcl9tYXNrOwogOwogOwoKIHJldHVybiBfX2F0b21pY19sb2FkX24oJl9NX2ksIF9fbSk7CiAg
ICAgIH0KCiAgICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgX19pbnRf
dHlwZQogICAgICBsb2FkKG1lbW9yeV9vcmRlciBfX20gPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkg
Y29uc3Qgdm9sYXRpbGUgbm9leGNlcHQKICAgICAgewogICAgICAgIG1lbW9yeV9vcmRlciBfX2Ig
PSBfX20gJiBfX21lbW9yeV9vcmRlcl9tYXNrOwogOwogOwoKIHJldHVybiBfX2F0b21pY19sb2Fk
X24oJl9NX2ksIF9fbSk7CiAgICAgIH0KCiAgICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdh
eXNfaW5saW5lKSkgX19pbnRfdHlwZQogICAgICBleGNoYW5nZShfX2ludF90eXBlIF9faSwKICAg
ICAgICBtZW1vcnlfb3JkZXIgX19tID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIG5vZXhjZXB0CiAg
ICAgIHsKIHJldHVybiBfX2F0b21pY19leGNoYW5nZV9uKCZfTV9pLCBfX2ksIF9fbSk7CiAgICAg
IH0KCgogICAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIF9faW50X3R5
cGUKICAgICAgZXhjaGFuZ2UoX19pbnRfdHlwZSBfX2ksCiAgICAgICAgbWVtb3J5X29yZGVyIF9f
bSA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSB2b2xhdGlsZSBub2V4Y2VwdAogICAgICB7CiByZXR1
cm4gX19hdG9taWNfZXhjaGFuZ2VfbigmX01faSwgX19pLCBfX20pOwogICAgICB9CgogICAgICBp
bmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIGJvb2wKICAgICAgY29tcGFyZV9l
eGNoYW5nZV93ZWFrKF9faW50X3R5cGUmIF9faTEsIF9faW50X3R5cGUgX19pMiwKICAgICAgIG1l
bW9yeV9vcmRlciBfX20xLCBtZW1vcnlfb3JkZXIgX19tMikgbm9leGNlcHQKICAgICAgewogICAg
ICAgbWVtb3J5X29yZGVyIF9fYjIgPSBfX20yICYgX19tZW1vcnlfb3JkZXJfbWFzazsKICAgICAg
IG1lbW9yeV9vcmRlciBfX2IxID0gX19tMSAmIF9fbWVtb3J5X29yZGVyX21hc2s7CiA7CiA7CiA7
CgogcmV0dXJuIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigmX01faSwgJl9faTEsIF9faTIs
IDEsIF9fbTEsIF9fbTIpOwogICAgICB9CgogICAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3
YXlzX2lubGluZSkpIGJvb2wKICAgICAgY29tcGFyZV9leGNoYW5nZV93ZWFrKF9faW50X3R5cGUm
IF9faTEsIF9faW50X3R5cGUgX19pMiwKICAgICAgIG1lbW9yeV9vcmRlciBfX20xLAogICAgICAg
bWVtb3J5X29yZGVyIF9fbTIpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsKICAgICAgIG1lbW9y
eV9vcmRlciBfX2IyID0gX19tMiAmIF9fbWVtb3J5X29yZGVyX21hc2s7CiAgICAgICBtZW1vcnlf
b3JkZXIgX19iMSA9IF9fbTEgJiBfX21lbW9yeV9vcmRlcl9tYXNrOwogOwogOwogOwoKIHJldHVy
biBfX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX24oJl9NX2ksICZfX2kxLCBfX2kyLCAxLCBfX20x
LCBfX20yKTsKICAgICAgfQoKICAgICAgaW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxp
bmUpKSBib29sCiAgICAgIGNvbXBhcmVfZXhjaGFuZ2Vfd2VhayhfX2ludF90eXBlJiBfX2kxLCBf
X2ludF90eXBlIF9faTIsCiAgICAgICBtZW1vcnlfb3JkZXIgX19tID0gbWVtb3J5X29yZGVyX3Nl
cV9jc3QpIG5vZXhjZXB0CiAgICAgIHsKIHJldHVybiBjb21wYXJlX2V4Y2hhbmdlX3dlYWsoX19p
MSwgX19pMiwgX19tLAogICAgICAgICBfX2NtcGV4Y2hfZmFpbHVyZV9vcmRlcihfX20pKTsKICAg
ICAgfQoKICAgICAgaW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBib29sCiAg
ICAgIGNvbXBhcmVfZXhjaGFuZ2Vfd2VhayhfX2ludF90eXBlJiBfX2kxLCBfX2ludF90eXBlIF9f
aTIsCiAgICAgbWVtb3J5X29yZGVyIF9fbSA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSB2b2xhdGls
ZSBub2V4Y2VwdAogICAgICB7CiByZXR1cm4gY29tcGFyZV9leGNoYW5nZV93ZWFrKF9faTEsIF9f
aTIsIF9fbSwKICAgICAgICAgX19jbXBleGNoX2ZhaWx1cmVfb3JkZXIoX19tKSk7CiAgICAgIH0K
CiAgICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgYm9vbAogICAgICBj
b21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhfX2ludF90eXBlJiBfX2kxLCBfX2ludF90eXBlIF9faTIs
CiAgICAgICAgIG1lbW9yeV9vcmRlciBfX20xLCBtZW1vcnlfb3JkZXIgX19tMikgbm9leGNlcHQK
ICAgICAgewogICAgICAgIG1lbW9yeV9vcmRlciBfX2IyID0gX19tMiAmIF9fbWVtb3J5X29yZGVy
X21hc2s7CiAgICAgICAgbWVtb3J5X29yZGVyIF9fYjEgPSBfX20xICYgX19tZW1vcnlfb3JkZXJf
bWFzazsKIDsKIDsKIDsKCiByZXR1cm4gX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV9uKCZfTV9p
LCAmX19pMSwgX19pMiwgMCwgX19tMSwgX19tMik7CiAgICAgIH0KCiAgICAgIGlubGluZSBfX2F0
dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgYm9vbAogICAgICBjb21wYXJlX2V4Y2hhbmdlX3N0
cm9uZyhfX2ludF90eXBlJiBfX2kxLCBfX2ludF90eXBlIF9faTIsCiAgICAgICAgIG1lbW9yeV9v
cmRlciBfX20xLAogICAgICAgICBtZW1vcnlfb3JkZXIgX19tMikgdm9sYXRpbGUgbm9leGNlcHQK
ICAgICAgewogICAgICAgIG1lbW9yeV9vcmRlciBfX2IyID0gX19tMiAmIF9fbWVtb3J5X29yZGVy
X21hc2s7CiAgICAgICAgbWVtb3J5X29yZGVyIF9fYjEgPSBfX20xICYgX19tZW1vcnlfb3JkZXJf
bWFzazsKCiA7CiA7CiA7CgogcmV0dXJuIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigmX01f
aSwgJl9faTEsIF9faTIsIDAsIF9fbTEsIF9fbTIpOwogICAgICB9CgogICAgICBpbmxpbmUgX19h
dHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIGJvb2wKICAgICAgY29tcGFyZV9leGNoYW5nZV9z
dHJvbmcoX19pbnRfdHlwZSYgX19pMSwgX19pbnRfdHlwZSBfX2kyLAogICAgICAgICBtZW1vcnlf
b3JkZXIgX19tID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIG5vZXhjZXB0CiAgICAgIHsKIHJldHVy
biBjb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhfX2kxLCBfX2kyLCBfX20sCiAgICAgICAgICAgX19j
bXBleGNoX2ZhaWx1cmVfb3JkZXIoX19tKSk7CiAgICAgIH0KCiAgICAgIGlubGluZSBfX2F0dHJp
YnV0ZV9fKChhbHdheXNfaW5saW5lKSkgYm9vbAogICAgICBjb21wYXJlX2V4Y2hhbmdlX3N0cm9u
ZyhfX2ludF90eXBlJiBfX2kxLCBfX2ludF90eXBlIF9faTIsCiAgIG1lbW9yeV9vcmRlciBfX20g
PSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgdm9sYXRpbGUgbm9leGNlcHQKICAgICAgewogcmV0dXJu
IGNvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKF9faTEsIF9faTIsIF9fbSwKICAgICAgICAgICBfX2Nt
cGV4Y2hfZmFpbHVyZV9vcmRlcihfX20pKTsKICAgICAgfQoKICAgICAgaW5saW5lIF9fYXR0cmli
dXRlX18oKGFsd2F5c19pbmxpbmUpKSBfX2ludF90eXBlCiAgICAgIGZldGNoX2FkZChfX2ludF90
eXBlIF9faSwKICBtZW1vcnlfb3JkZXIgX19tID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIG5vZXhj
ZXB0CiAgICAgIHsgcmV0dXJuIF9fYXRvbWljX2ZldGNoX2FkZCgmX01faSwgX19pLCBfX20pOyB9
CgogICAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIF9faW50X3R5cGUK
ICAgICAgZmV0Y2hfYWRkKF9faW50X3R5cGUgX19pLAogIG1lbW9yeV9vcmRlciBfX20gPSBtZW1v
cnlfb3JkZXJfc2VxX2NzdCkgdm9sYXRpbGUgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX19hdG9t
aWNfZmV0Y2hfYWRkKCZfTV9pLCBfX2ksIF9fbSk7IH0KCiAgICAgIGlubGluZSBfX2F0dHJpYnV0
ZV9fKChhbHdheXNfaW5saW5lKSkgX19pbnRfdHlwZQogICAgICBmZXRjaF9zdWIoX19pbnRfdHlw
ZSBfX2ksCiAgbWVtb3J5X29yZGVyIF9fbSA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBub2V4Y2Vw
dAogICAgICB7IHJldHVybiBfX2F0b21pY19mZXRjaF9zdWIoJl9NX2ksIF9faSwgX19tKTsgfQoK
ICAgICAgaW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBfX2ludF90eXBlCiAg
ICAgIGZldGNoX3N1YihfX2ludF90eXBlIF9faSwKICBtZW1vcnlfb3JkZXIgX19tID0gbWVtb3J5
X29yZGVyX3NlcV9jc3QpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fYXRvbWlj
X2ZldGNoX3N1YigmX01faSwgX19pLCBfX20pOyB9CgogICAgICBpbmxpbmUgX19hdHRyaWJ1dGVf
XygoYWx3YXlzX2lubGluZSkpIF9faW50X3R5cGUKICAgICAgZmV0Y2hfYW5kKF9faW50X3R5cGUg
X19pLAogIG1lbW9yeV9vcmRlciBfX20gPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgbm9leGNlcHQK
ICAgICAgeyByZXR1cm4gX19hdG9taWNfZmV0Y2hfYW5kKCZfTV9pLCBfX2ksIF9fbSk7IH0KCiAg
ICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgX19pbnRfdHlwZQogICAg
ICBmZXRjaF9hbmQoX19pbnRfdHlwZSBfX2ksCiAgbWVtb3J5X29yZGVyIF9fbSA9IG1lbW9yeV9v
cmRlcl9zZXFfY3N0KSB2b2xhdGlsZSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfX2F0b21pY19m
ZXRjaF9hbmQoJl9NX2ksIF9faSwgX19tKTsgfQoKICAgICAgaW5saW5lIF9fYXR0cmlidXRlX18o
KGFsd2F5c19pbmxpbmUpKSBfX2ludF90eXBlCiAgICAgIGZldGNoX29yKF9faW50X3R5cGUgX19p
LAogICAgICAgIG1lbW9yeV9vcmRlciBfX20gPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgbm9leGNl
cHQKICAgICAgeyByZXR1cm4gX19hdG9taWNfZmV0Y2hfb3IoJl9NX2ksIF9faSwgX19tKTsgfQoK
ICAgICAgaW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBfX2ludF90eXBlCiAg
ICAgIGZldGNoX29yKF9faW50X3R5cGUgX19pLAogICAgICAgIG1lbW9yeV9vcmRlciBfX20gPSBt
ZW1vcnlfb3JkZXJfc2VxX2NzdCkgdm9sYXRpbGUgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX19h
dG9taWNfZmV0Y2hfb3IoJl9NX2ksIF9faSwgX19tKTsgfQoKICAgICAgaW5saW5lIF9fYXR0cmli
dXRlX18oKGFsd2F5c19pbmxpbmUpKSBfX2ludF90eXBlCiAgICAgIGZldGNoX3hvcihfX2ludF90
eXBlIF9faSwKICBtZW1vcnlfb3JkZXIgX19tID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIG5vZXhj
ZXB0CiAgICAgIHsgcmV0dXJuIF9fYXRvbWljX2ZldGNoX3hvcigmX01faSwgX19pLCBfX20pOyB9
CgogICAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIF9faW50X3R5cGUK
ICAgICAgZmV0Y2hfeG9yKF9faW50X3R5cGUgX19pLAogIG1lbW9yeV9vcmRlciBfX20gPSBtZW1v
cnlfb3JkZXJfc2VxX2NzdCkgdm9sYXRpbGUgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX19hdG9t
aWNfZmV0Y2hfeG9yKCZfTV9pLCBfX2ksIF9fbSk7IH0KICAgIH07CgoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1BUcD4KICAgIHN0cnVjdCBfX2F0b21pY19iYXNlPF9QVHAqPgogICAgewogICAgcHJp
dmF0ZToKICAgICAgdHlwZWRlZiBfUFRwKiBfX3BvaW50ZXJfdHlwZTsKCiAgICAgIF9fcG9pbnRl
cl90eXBlIF9NX3A7CgoKICAgICAgY29uc3RleHByIHB0cmRpZmZfdAogICAgICBfTV90eXBlX3Np
emUocHRyZGlmZl90IF9fZCkgY29uc3QgeyByZXR1cm4gX19kICogc2l6ZW9mKF9QVHApOyB9Cgog
ICAgICBjb25zdGV4cHIgcHRyZGlmZl90CiAgICAgIF9NX3R5cGVfc2l6ZShwdHJkaWZmX3QgX19k
KSBjb25zdCB2b2xhdGlsZSB7IHJldHVybiBfX2QgKiBzaXplb2YoX1BUcCk7IH0KCiAgICBwdWJs
aWM6CiAgICAgIF9fYXRvbWljX2Jhc2UoKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CiAgICAgIH5fX2F0
b21pY19iYXNlKCkgbm9leGNlcHQgPSBkZWZhdWx0OwogICAgICBfX2F0b21pY19iYXNlKGNvbnN0
IF9fYXRvbWljX2Jhc2UmKSA9IGRlbGV0ZTsKICAgICAgX19hdG9taWNfYmFzZSYgb3BlcmF0b3I9
KGNvbnN0IF9fYXRvbWljX2Jhc2UmKSA9IGRlbGV0ZTsKICAgICAgX19hdG9taWNfYmFzZSYgb3Bl
cmF0b3I9KGNvbnN0IF9fYXRvbWljX2Jhc2UmKSB2b2xhdGlsZSA9IGRlbGV0ZTsKCgogICAgICBj
b25zdGV4cHIgX19hdG9taWNfYmFzZShfX3BvaW50ZXJfdHlwZSBfX3ApIG5vZXhjZXB0IDogX01f
cCAoX19wKSB7IH0KCiAgICAgIG9wZXJhdG9yIF9fcG9pbnRlcl90eXBlKCkgY29uc3Qgbm9leGNl
cHQKICAgICAgeyByZXR1cm4gbG9hZCgpOyB9CgogICAgICBvcGVyYXRvciBfX3BvaW50ZXJfdHlw
ZSgpIGNvbnN0IHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGxvYWQoKTsgfQoKICAg
ICAgX19wb2ludGVyX3R5cGUKICAgICAgb3BlcmF0b3I9KF9fcG9pbnRlcl90eXBlIF9fcCkgbm9l
eGNlcHQKICAgICAgewogc3RvcmUoX19wKTsKIHJldHVybiBfX3A7CiAgICAgIH0KCiAgICAgIF9f
cG9pbnRlcl90eXBlCiAgICAgIG9wZXJhdG9yPShfX3BvaW50ZXJfdHlwZSBfX3ApIHZvbGF0aWxl
IG5vZXhjZXB0CiAgICAgIHsKIHN0b3JlKF9fcCk7CiByZXR1cm4gX19wOwogICAgICB9CgogICAg
ICBfX3BvaW50ZXJfdHlwZQogICAgICBvcGVyYXRvcisrKGludCkgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gZmV0Y2hfYWRkKDEpOyB9CgogICAgICBfX3BvaW50ZXJfdHlwZQogICAgICBvcGVyYXRv
cisrKGludCkgdm9sYXRpbGUgbm9leGNlcHQKICAgICAgeyByZXR1cm4gZmV0Y2hfYWRkKDEpOyB9
CgogICAgICBfX3BvaW50ZXJfdHlwZQogICAgICBvcGVyYXRvci0tKGludCkgbm9leGNlcHQKICAg
ICAgeyByZXR1cm4gZmV0Y2hfc3ViKDEpOyB9CgogICAgICBfX3BvaW50ZXJfdHlwZQogICAgICBv
cGVyYXRvci0tKGludCkgdm9sYXRpbGUgbm9leGNlcHQKICAgICAgeyByZXR1cm4gZmV0Y2hfc3Vi
KDEpOyB9CgogICAgICBfX3BvaW50ZXJfdHlwZQogICAgICBvcGVyYXRvcisrKCkgbm9leGNlcHQK
ICAgICAgeyByZXR1cm4gX19hdG9taWNfYWRkX2ZldGNoKCZfTV9wLCBfTV90eXBlX3NpemUoMSks
CiAgICAgIG1lbW9yeV9vcmRlcl9zZXFfY3N0KTsgfQoKICAgICAgX19wb2ludGVyX3R5cGUKICAg
ICAgb3BlcmF0b3IrKygpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fYXRvbWlj
X2FkZF9mZXRjaCgmX01fcCwgX01fdHlwZV9zaXplKDEpLAogICAgICBtZW1vcnlfb3JkZXJfc2Vx
X2NzdCk7IH0KCiAgICAgIF9fcG9pbnRlcl90eXBlCiAgICAgIG9wZXJhdG9yLS0oKSBub2V4Y2Vw
dAogICAgICB7IHJldHVybiBfX2F0b21pY19zdWJfZmV0Y2goJl9NX3AsIF9NX3R5cGVfc2l6ZSgx
KSwKICAgICAgbWVtb3J5X29yZGVyX3NlcV9jc3QpOyB9CgogICAgICBfX3BvaW50ZXJfdHlwZQog
ICAgICBvcGVyYXRvci0tKCkgdm9sYXRpbGUgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX19hdG9t
aWNfc3ViX2ZldGNoKCZfTV9wLCBfTV90eXBlX3NpemUoMSksCiAgICAgIG1lbW9yeV9vcmRlcl9z
ZXFfY3N0KTsgfQoKICAgICAgX19wb2ludGVyX3R5cGUKICAgICAgb3BlcmF0b3IrPShwdHJkaWZm
X3QgX19kKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfX2F0b21pY19hZGRfZmV0Y2goJl9NX3As
IF9NX3R5cGVfc2l6ZShfX2QpLAogICAgICBtZW1vcnlfb3JkZXJfc2VxX2NzdCk7IH0KCiAgICAg
IF9fcG9pbnRlcl90eXBlCiAgICAgIG9wZXJhdG9yKz0ocHRyZGlmZl90IF9fZCkgdm9sYXRpbGUg
bm9leGNlcHQKICAgICAgeyByZXR1cm4gX19hdG9taWNfYWRkX2ZldGNoKCZfTV9wLCBfTV90eXBl
X3NpemUoX19kKSwKICAgICAgbWVtb3J5X29yZGVyX3NlcV9jc3QpOyB9CgogICAgICBfX3BvaW50
ZXJfdHlwZQogICAgICBvcGVyYXRvci09KHB0cmRpZmZfdCBfX2QpIG5vZXhjZXB0CiAgICAgIHsg
cmV0dXJuIF9fYXRvbWljX3N1Yl9mZXRjaCgmX01fcCwgX01fdHlwZV9zaXplKF9fZCksCiAgICAg
IG1lbW9yeV9vcmRlcl9zZXFfY3N0KTsgfQoKICAgICAgX19wb2ludGVyX3R5cGUKICAgICAgb3Bl
cmF0b3ItPShwdHJkaWZmX3QgX19kKSB2b2xhdGlsZSBub2V4Y2VwdAogICAgICB7IHJldHVybiBf
X2F0b21pY19zdWJfZmV0Y2goJl9NX3AsIF9NX3R5cGVfc2l6ZShfX2QpLAogICAgICBtZW1vcnlf
b3JkZXJfc2VxX2NzdCk7IH0KCiAgICAgIGJvb2wKICAgICAgaXNfbG9ja19mcmVlKCkgY29uc3Qg
bm9leGNlcHQKICAgICAgeyByZXR1cm4gX19hdG9taWNfaXNfbG9ja19mcmVlKHNpemVvZihfX3Bv
aW50ZXJfdHlwZSksIG51bGxwdHIpOyB9CgogICAgICBib29sCiAgICAgIGlzX2xvY2tfZnJlZSgp
IGNvbnN0IHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fYXRvbWljX2lzX2xvY2tf
ZnJlZShzaXplb2YoX19wb2ludGVyX3R5cGUpLCBudWxscHRyKTsgfQoKICAgICAgaW5saW5lIF9f
YXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSB2b2lkCiAgICAgIHN0b3JlKF9fcG9pbnRlcl90
eXBlIF9fcCwKICAgICBtZW1vcnlfb3JkZXIgX19tID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIG5v
ZXhjZXB0CiAgICAgIHsKICAgICAgICBtZW1vcnlfb3JkZXIgX19iID0gX19tICYgX19tZW1vcnlf
b3JkZXJfbWFzazsKCiA7CiA7CiA7CgogX19hdG9taWNfc3RvcmVfbigmX01fcCwgX19wLCBfX20p
OwogICAgICB9CgogICAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIHZv
aWQKICAgICAgc3RvcmUoX19wb2ludGVyX3R5cGUgX19wLAogICAgIG1lbW9yeV9vcmRlciBfX20g
PSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgdm9sYXRpbGUgbm9leGNlcHQKICAgICAgewogICAgICAg
IG1lbW9yeV9vcmRlciBfX2IgPSBfX20gJiBfX21lbW9yeV9vcmRlcl9tYXNrOwogOwogOwogOwoK
IF9fYXRvbWljX3N0b3JlX24oJl9NX3AsIF9fcCwgX19tKTsKICAgICAgfQoKICAgICAgaW5saW5l
IF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBfX3BvaW50ZXJfdHlwZQogICAgICBsb2Fk
KG1lbW9yeV9vcmRlciBfX20gPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgY29uc3Qgbm9leGNlcHQK
ICAgICAgewogICAgICAgIG1lbW9yeV9vcmRlciBfX2IgPSBfX20gJiBfX21lbW9yeV9vcmRlcl9t
YXNrOwogOwogOwoKIHJldHVybiBfX2F0b21pY19sb2FkX24oJl9NX3AsIF9fbSk7CiAgICAgIH0K
CiAgICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgX19wb2ludGVyX3R5
cGUKICAgICAgbG9hZChtZW1vcnlfb3JkZXIgX19tID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIGNv
bnN0IHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsKICAgICAgICBtZW1vcnlfb3JkZXIgX19iID0g
X19tICYgX19tZW1vcnlfb3JkZXJfbWFzazsKIDsKIDsKCiByZXR1cm4gX19hdG9taWNfbG9hZF9u
KCZfTV9wLCBfX20pOwogICAgICB9CgogICAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlz
X2lubGluZSkpIF9fcG9pbnRlcl90eXBlCiAgICAgIGV4Y2hhbmdlKF9fcG9pbnRlcl90eXBlIF9f
cCwKICAgICAgICBtZW1vcnlfb3JkZXIgX19tID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIG5vZXhj
ZXB0CiAgICAgIHsKIHJldHVybiBfX2F0b21pY19leGNoYW5nZV9uKCZfTV9wLCBfX3AsIF9fbSk7
CiAgICAgIH0KCgogICAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIF9f
cG9pbnRlcl90eXBlCiAgICAgIGV4Y2hhbmdlKF9fcG9pbnRlcl90eXBlIF9fcCwKICAgICAgICBt
ZW1vcnlfb3JkZXIgX19tID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIHZvbGF0aWxlIG5vZXhjZXB0
CiAgICAgIHsKIHJldHVybiBfX2F0b21pY19leGNoYW5nZV9uKCZfTV9wLCBfX3AsIF9fbSk7CiAg
ICAgIH0KCiAgICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgYm9vbAog
ICAgICBjb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhfX3BvaW50ZXJfdHlwZSYgX19wMSwgX19wb2lu
dGVyX3R5cGUgX19wMiwKICAgICAgICAgbWVtb3J5X29yZGVyIF9fbTEsCiAgICAgICAgIG1lbW9y
eV9vcmRlciBfX20yKSBub2V4Y2VwdAogICAgICB7CiAgICAgICAgbWVtb3J5X29yZGVyIF9fYjIg
PSBfX20yICYgX19tZW1vcnlfb3JkZXJfbWFzazsKICAgICAgICBtZW1vcnlfb3JkZXIgX19iMSA9
IF9fbTEgJiBfX21lbW9yeV9vcmRlcl9tYXNrOwogOwogOwogOwoKIHJldHVybiBfX2F0b21pY19j
b21wYXJlX2V4Y2hhbmdlX24oJl9NX3AsICZfX3AxLCBfX3AyLCAwLCBfX20xLCBfX20yKTsKICAg
ICAgfQoKICAgICAgaW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSBib29sCiAg
ICAgIGNvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKF9fcG9pbnRlcl90eXBlJiBfX3AxLCBfX3BvaW50
ZXJfdHlwZSBfX3AyLAogICAgICAgICBtZW1vcnlfb3JkZXIgX19tMSwKICAgICAgICAgbWVtb3J5
X29yZGVyIF9fbTIpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsKICAgICAgICBtZW1vcnlfb3Jk
ZXIgX19iMiA9IF9fbTIgJiBfX21lbW9yeV9vcmRlcl9tYXNrOwogICAgICAgIG1lbW9yeV9vcmRl
ciBfX2IxID0gX19tMSAmIF9fbWVtb3J5X29yZGVyX21hc2s7CgogOwogOwogOwoKIHJldHVybiBf
X2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX24oJl9NX3AsICZfX3AxLCBfX3AyLCAwLCBfX20xLCBf
X20yKTsKICAgICAgfQoKICAgICAgaW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUp
KSBfX3BvaW50ZXJfdHlwZQogICAgICBmZXRjaF9hZGQocHRyZGlmZl90IF9fZCwKICBtZW1vcnlf
b3JkZXIgX19tID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJu
IF9fYXRvbWljX2ZldGNoX2FkZCgmX01fcCwgX01fdHlwZV9zaXplKF9fZCksIF9fbSk7IH0KCiAg
ICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgX19wb2ludGVyX3R5cGUK
ICAgICAgZmV0Y2hfYWRkKHB0cmRpZmZfdCBfX2QsCiAgbWVtb3J5X29yZGVyIF9fbSA9IG1lbW9y
eV9vcmRlcl9zZXFfY3N0KSB2b2xhdGlsZSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfX2F0b21p
Y19mZXRjaF9hZGQoJl9NX3AsIF9NX3R5cGVfc2l6ZShfX2QpLCBfX20pOyB9CgogICAgICBpbmxp
bmUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIF9fcG9pbnRlcl90eXBlCiAgICAgIGZl
dGNoX3N1YihwdHJkaWZmX3QgX19kLAogIG1lbW9yeV9vcmRlciBfX20gPSBtZW1vcnlfb3JkZXJf
c2VxX2NzdCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX19hdG9taWNfZmV0Y2hfc3ViKCZfTV9w
LCBfTV90eXBlX3NpemUoX19kKSwgX19tKTsgfQoKICAgICAgaW5saW5lIF9fYXR0cmlidXRlX18o
KGFsd2F5c19pbmxpbmUpKSBfX3BvaW50ZXJfdHlwZQogICAgICBmZXRjaF9zdWIocHRyZGlmZl90
IF9fZCwKICBtZW1vcnlfb3JkZXIgX19tID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIHZvbGF0aWxl
IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fYXRvbWljX2ZldGNoX3N1YigmX01fcCwgX01fdHlw
ZV9zaXplKF9fZCksIF9fbSk7IH0KICAgIH07CgoKCgp9CiMgNDIgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYXRvbWljIiAyIDMKCm5hbWVz
cGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoK
IyA1NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9hdG9taWMiIDMKICBzdHJ1Y3QgYXRvbWljX2Jvb2wKICB7CiAgcHJpdmF0ZToKICAgIF9f
YXRvbWljX2Jhc2U8Ym9vbD4gX01fYmFzZTsKCiAgcHVibGljOgogICAgYXRvbWljX2Jvb2woKSBu
b2V4Y2VwdCA9IGRlZmF1bHQ7CiAgICB+YXRvbWljX2Jvb2woKSBub2V4Y2VwdCA9IGRlZmF1bHQ7
CiAgICBhdG9taWNfYm9vbChjb25zdCBhdG9taWNfYm9vbCYpID0gZGVsZXRlOwogICAgYXRvbWlj
X2Jvb2wmIG9wZXJhdG9yPShjb25zdCBhdG9taWNfYm9vbCYpID0gZGVsZXRlOwogICAgYXRvbWlj
X2Jvb2wmIG9wZXJhdG9yPShjb25zdCBhdG9taWNfYm9vbCYpIHZvbGF0aWxlID0gZGVsZXRlOwoK
ICAgIGNvbnN0ZXhwciBhdG9taWNfYm9vbChib29sIF9faSkgbm9leGNlcHQgOiBfTV9iYXNlKF9f
aSkgeyB9CgogICAgYm9vbAogICAgb3BlcmF0b3I9KGJvb2wgX19pKSBub2V4Y2VwdAogICAgeyBy
ZXR1cm4gX01fYmFzZS5vcGVyYXRvcj0oX19pKTsgfQoKICAgIGJvb2wKICAgIG9wZXJhdG9yPShi
b29sIF9faSkgdm9sYXRpbGUgbm9leGNlcHQKICAgIHsgcmV0dXJuIF9NX2Jhc2Uub3BlcmF0b3I9
KF9faSk7IH0KCiAgICBvcGVyYXRvciBib29sKCkgY29uc3Qgbm9leGNlcHQKICAgIHsgcmV0dXJu
IF9NX2Jhc2UubG9hZCgpOyB9CgogICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHZvbGF0aWxlIG5v
ZXhjZXB0CiAgICB7IHJldHVybiBfTV9iYXNlLmxvYWQoKTsgfQoKICAgIGJvb2wKICAgIGlzX2xv
Y2tfZnJlZSgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9NX2Jhc2UuaXNfbG9ja19mcmVlKCk7
IH0KCiAgICBib29sCiAgICBpc19sb2NrX2ZyZWUoKSBjb25zdCB2b2xhdGlsZSBub2V4Y2VwdCB7
IHJldHVybiBfTV9iYXNlLmlzX2xvY2tfZnJlZSgpOyB9CgogICAgdm9pZAogICAgc3RvcmUoYm9v
bCBfX2ksIG1lbW9yeV9vcmRlciBfX20gPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgbm9leGNlcHQK
ICAgIHsgX01fYmFzZS5zdG9yZShfX2ksIF9fbSk7IH0KCiAgICB2b2lkCiAgICBzdG9yZShib29s
IF9faSwgbWVtb3J5X29yZGVyIF9fbSA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSB2b2xhdGlsZSBu
b2V4Y2VwdAogICAgeyBfTV9iYXNlLnN0b3JlKF9faSwgX19tKTsgfQoKICAgIGJvb2wKICAgIGxv
YWQobWVtb3J5X29yZGVyIF9fbSA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBjb25zdCBub2V4Y2Vw
dAogICAgeyByZXR1cm4gX01fYmFzZS5sb2FkKF9fbSk7IH0KCiAgICBib29sCiAgICBsb2FkKG1l
bW9yeV9vcmRlciBfX20gPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgY29uc3Qgdm9sYXRpbGUgbm9l
eGNlcHQKICAgIHsgcmV0dXJuIF9NX2Jhc2UubG9hZChfX20pOyB9CgogICAgYm9vbAogICAgZXhj
aGFuZ2UoYm9vbCBfX2ksIG1lbW9yeV9vcmRlciBfX20gPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkg
bm9leGNlcHQKICAgIHsgcmV0dXJuIF9NX2Jhc2UuZXhjaGFuZ2UoX19pLCBfX20pOyB9CgogICAg
Ym9vbAogICAgZXhjaGFuZ2UoYm9vbCBfX2ksCiAgICAgIG1lbW9yeV9vcmRlciBfX20gPSBtZW1v
cnlfb3JkZXJfc2VxX2NzdCkgdm9sYXRpbGUgbm9leGNlcHQKICAgIHsgcmV0dXJuIF9NX2Jhc2Uu
ZXhjaGFuZ2UoX19pLCBfX20pOyB9CgogICAgYm9vbAogICAgY29tcGFyZV9leGNoYW5nZV93ZWFr
KGJvb2wmIF9faTEsIGJvb2wgX19pMiwgbWVtb3J5X29yZGVyIF9fbTEsCiAgICAgbWVtb3J5X29y
ZGVyIF9fbTIpIG5vZXhjZXB0CiAgICB7IHJldHVybiBfTV9iYXNlLmNvbXBhcmVfZXhjaGFuZ2Vf
d2VhayhfX2kxLCBfX2kyLCBfX20xLCBfX20yKTsgfQoKICAgIGJvb2wKICAgIGNvbXBhcmVfZXhj
aGFuZ2Vfd2Vhayhib29sJiBfX2kxLCBib29sIF9faTIsIG1lbW9yeV9vcmRlciBfX20xLAogICAg
IG1lbW9yeV9vcmRlciBfX20yKSB2b2xhdGlsZSBub2V4Y2VwdAogICAgeyByZXR1cm4gX01fYmFz
ZS5jb21wYXJlX2V4Y2hhbmdlX3dlYWsoX19pMSwgX19pMiwgX19tMSwgX19tMik7IH0KCiAgICBi
b29sCiAgICBjb21wYXJlX2V4Y2hhbmdlX3dlYWsoYm9vbCYgX19pMSwgYm9vbCBfX2kyLAogICAg
IG1lbW9yeV9vcmRlciBfX20gPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgbm9leGNlcHQKICAgIHsg
cmV0dXJuIF9NX2Jhc2UuY29tcGFyZV9leGNoYW5nZV93ZWFrKF9faTEsIF9faTIsIF9fbSk7IH0K
CiAgICBib29sCiAgICBjb21wYXJlX2V4Y2hhbmdlX3dlYWsoYm9vbCYgX19pMSwgYm9vbCBfX2ky
LAogICAgICAgbWVtb3J5X29yZGVyIF9fbSA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSB2b2xhdGls
ZSBub2V4Y2VwdAogICAgeyByZXR1cm4gX01fYmFzZS5jb21wYXJlX2V4Y2hhbmdlX3dlYWsoX19p
MSwgX19pMiwgX19tKTsgfQoKICAgIGJvb2wKICAgIGNvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKGJv
b2wmIF9faTEsIGJvb2wgX19pMiwgbWVtb3J5X29yZGVyIF9fbTEsCiAgICAgICBtZW1vcnlfb3Jk
ZXIgX19tMikgbm9leGNlcHQKICAgIHsgcmV0dXJuIF9NX2Jhc2UuY29tcGFyZV9leGNoYW5nZV9z
dHJvbmcoX19pMSwgX19pMiwgX19tMSwgX19tMik7IH0KCiAgICBib29sCiAgICBjb21wYXJlX2V4
Y2hhbmdlX3N0cm9uZyhib29sJiBfX2kxLCBib29sIF9faTIsIG1lbW9yeV9vcmRlciBfX20xLAog
ICAgICAgbWVtb3J5X29yZGVyIF9fbTIpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICB7IHJldHVybiBf
TV9iYXNlLmNvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKF9faTEsIF9faTIsIF9fbTEsIF9fbTIpOyB9
CgogICAgYm9vbAogICAgY29tcGFyZV9leGNoYW5nZV9zdHJvbmcoYm9vbCYgX19pMSwgYm9vbCBf
X2kyLAogICAgICAgbWVtb3J5X29yZGVyIF9fbSA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBub2V4
Y2VwdAogICAgeyByZXR1cm4gX01fYmFzZS5jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhfX2kxLCBf
X2kyLCBfX20pOyB9CgogICAgYm9vbAogICAgY29tcGFyZV9leGNoYW5nZV9zdHJvbmcoYm9vbCYg
X19pMSwgYm9vbCBfX2kyLAogICAgICBtZW1vcnlfb3JkZXIgX19tID0gbWVtb3J5X29yZGVyX3Nl
cV9jc3QpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICB7IHJldHVybiBfTV9iYXNlLmNvbXBhcmVfZXhj
aGFuZ2Vfc3Ryb25nKF9faTEsIF9faTIsIF9fbSk7IH0KICB9OwoKCgoKCgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgYXRvbWljCiAgICB7CiAgICBwcml2YXRlOgogICAgICBf
VHAgX01faTsKCiAgICBwdWJsaWM6CiAgICAgIGF0b21pYygpIG5vZXhjZXB0ID0gZGVmYXVsdDsK
ICAgICAgfmF0b21pYygpIG5vZXhjZXB0ID0gZGVmYXVsdDsKICAgICAgYXRvbWljKGNvbnN0IGF0
b21pYyYpID0gZGVsZXRlOwogICAgICBhdG9taWMmIG9wZXJhdG9yPShjb25zdCBhdG9taWMmKSA9
IGRlbGV0ZTsKICAgICAgYXRvbWljJiBvcGVyYXRvcj0oY29uc3QgYXRvbWljJikgdm9sYXRpbGUg
PSBkZWxldGU7CgogICAgICBjb25zdGV4cHIgYXRvbWljKF9UcCBfX2kpIG5vZXhjZXB0IDogX01f
aShfX2kpIHsgfQoKICAgICAgb3BlcmF0b3IgX1RwKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gbG9hZCgpOyB9CgogICAgICBvcGVyYXRvciBfVHAoKSBjb25zdCB2b2xhdGlsZSBub2V4
Y2VwdAogICAgICB7IHJldHVybiBsb2FkKCk7IH0KCiAgICAgIF9UcAogICAgICBvcGVyYXRvcj0o
X1RwIF9faSkgbm9leGNlcHQKICAgICAgeyBzdG9yZShfX2kpOyByZXR1cm4gX19pOyB9CgogICAg
ICBfVHAKICAgICAgb3BlcmF0b3I9KF9UcCBfX2kpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsg
c3RvcmUoX19pKTsgcmV0dXJuIF9faTsgfQoKICAgICAgYm9vbAogICAgICBpc19sb2NrX2ZyZWUo
KSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfX2F0b21pY19pc19sb2NrX2ZyZWUoc2l6
ZW9mKF9NX2kpLCBudWxscHRyKTsgfQoKICAgICAgYm9vbAogICAgICBpc19sb2NrX2ZyZWUoKSBj
b25zdCB2b2xhdGlsZSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfX2F0b21pY19pc19sb2NrX2Zy
ZWUoc2l6ZW9mKF9NX2kpLCBudWxscHRyKTsgfQoKICAgICAgdm9pZAogICAgICBzdG9yZShfVHAg
X19pLCBtZW1vcnlfb3JkZXIgX20gPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgbm9leGNlcHQKICAg
ICAgeyBfX2F0b21pY19zdG9yZSgmX01faSwgJl9faSwgX20pOyB9CgogICAgICB2b2lkCiAgICAg
IHN0b3JlKF9UcCBfX2ksIG1lbW9yeV9vcmRlciBfbSA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSB2
b2xhdGlsZSBub2V4Y2VwdAogICAgICB7IF9fYXRvbWljX3N0b3JlKCZfTV9pLCAmX19pLCBfbSk7
IH0KCiAgICAgIF9UcAogICAgICBsb2FkKG1lbW9yeV9vcmRlciBfbSA9IG1lbW9yeV9vcmRlcl9z
ZXFfY3N0KSBjb25zdCBub2V4Y2VwdAogICAgICB7CiAgICAgICAgX1RwIHRtcDsKIF9fYXRvbWlj
X2xvYWQoJl9NX2ksICZ0bXAsIF9tKTsKIHJldHVybiB0bXA7CiAgICAgIH0KCiAgICAgIF9UcAog
ICAgICBsb2FkKG1lbW9yeV9vcmRlciBfbSA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBjb25zdCB2
b2xhdGlsZSBub2V4Y2VwdAogICAgICB7CiAgICAgICAgX1RwIHRtcDsKIF9fYXRvbWljX2xvYWQo
Jl9NX2ksICZ0bXAsIF9tKTsKIHJldHVybiB0bXA7CiAgICAgIH0KCiAgICAgIF9UcAogICAgICBl
eGNoYW5nZShfVHAgX19pLCBtZW1vcnlfb3JkZXIgX20gPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkg
bm9leGNlcHQKICAgICAgewogICAgICAgIF9UcCB0bXA7CiBfX2F0b21pY19leGNoYW5nZSgmX01f
aSwgJl9faSwgJnRtcCwgX20pOwogcmV0dXJuIHRtcDsKICAgICAgfQoKICAgICAgX1RwCiAgICAg
IGV4Y2hhbmdlKF9UcCBfX2ksCiAgICAgICAgbWVtb3J5X29yZGVyIF9tID0gbWVtb3J5X29yZGVy
X3NlcV9jc3QpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsKICAgICAgICBfVHAgdG1wOwogX19h
dG9taWNfZXhjaGFuZ2UoJl9NX2ksICZfX2ksICZ0bXAsIF9tKTsKIHJldHVybiB0bXA7CiAgICAg
IH0KCiAgICAgIGJvb2wKICAgICAgY29tcGFyZV9leGNoYW5nZV93ZWFrKF9UcCYgX19lLCBfVHAg
X19pLCBtZW1vcnlfb3JkZXIgX19zLAogICAgICAgbWVtb3J5X29yZGVyIF9fZikgbm9leGNlcHQK
ICAgICAgewogcmV0dXJuIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2UoJl9NX2ksICZfX2UsICZf
X2ksIHRydWUsIF9fcywgX19mKTsKICAgICAgfQoKICAgICAgYm9vbAogICAgICBjb21wYXJlX2V4
Y2hhbmdlX3dlYWsoX1RwJiBfX2UsIF9UcCBfX2ksIG1lbW9yeV9vcmRlciBfX3MsCiAgICAgICBt
ZW1vcnlfb3JkZXIgX19mKSB2b2xhdGlsZSBub2V4Y2VwdAogICAgICB7CiByZXR1cm4gX19hdG9t
aWNfY29tcGFyZV9leGNoYW5nZSgmX01faSwgJl9fZSwgJl9faSwgdHJ1ZSwgX19zLCBfX2YpOwog
ICAgICB9CgogICAgICBib29sCiAgICAgIGNvbXBhcmVfZXhjaGFuZ2Vfd2VhayhfVHAmIF9fZSwg
X1RwIF9faSwKICAgICAgIG1lbW9yeV9vcmRlciBfX20gPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkg
bm9leGNlcHQKICAgICAgeyByZXR1cm4gY29tcGFyZV9leGNoYW5nZV93ZWFrKF9fZSwgX19pLCBf
X20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NtcGV4Y2hfZmFpbHVy
ZV9vcmRlcihfX20pKTsgfQoKICAgICAgYm9vbAogICAgICBjb21wYXJlX2V4Y2hhbmdlX3dlYWso
X1RwJiBfX2UsIF9UcCBfX2ksCiAgICAgICBtZW1vcnlfb3JkZXIgX19tID0gbWVtb3J5X29yZGVy
X3NlcV9jc3QpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGNvbXBhcmVfZXhjaGFu
Z2Vfd2VhayhfX2UsIF9faSwgX19tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19jbXBleGNoX2ZhaWx1cmVfb3JkZXIoX19tKSk7IH0KCiAgICAgIGJvb2wKICAgICAgY29t
cGFyZV9leGNoYW5nZV9zdHJvbmcoX1RwJiBfX2UsIF9UcCBfX2ksIG1lbW9yeV9vcmRlciBfX3Ms
CiAgICAgICAgIG1lbW9yeV9vcmRlciBfX2YpIG5vZXhjZXB0CiAgICAgIHsKIHJldHVybiBfX2F0
b21pY19jb21wYXJlX2V4Y2hhbmdlKCZfTV9pLCAmX19lLCAmX19pLCBmYWxzZSwgX19zLCBfX2Yp
OwogICAgICB9CgogICAgICBib29sCiAgICAgIGNvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKF9UcCYg
X19lLCBfVHAgX19pLCBtZW1vcnlfb3JkZXIgX19zLAogICAgICAgICBtZW1vcnlfb3JkZXIgX19m
KSB2b2xhdGlsZSBub2V4Y2VwdAogICAgICB7CiByZXR1cm4gX19hdG9taWNfY29tcGFyZV9leGNo
YW5nZSgmX01faSwgJl9fZSwgJl9faSwgZmFsc2UsIF9fcywgX19mKTsKICAgICAgfQoKICAgICAg
Ym9vbAogICAgICBjb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhfVHAmIF9fZSwgX1RwIF9faSwKICAg
ICAgICAgIG1lbW9yeV9vcmRlciBfX20gPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgbm9leGNlcHQK
ICAgICAgeyByZXR1cm4gY29tcGFyZV9leGNoYW5nZV9zdHJvbmcoX19lLCBfX2ksIF9fbSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jbXBleGNoX2ZhaWx1cmVfb3Jk
ZXIoX19tKSk7IH0KCiAgICAgIGJvb2wKICAgICAgY29tcGFyZV9leGNoYW5nZV9zdHJvbmcoX1Rw
JiBfX2UsIF9UcCBfX2ksCiAgICAgICBtZW1vcnlfb3JkZXIgX19tID0gbWVtb3J5X29yZGVyX3Nl
cV9jc3QpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGNvbXBhcmVfZXhjaGFuZ2Vf
c3Ryb25nKF9fZSwgX19pLCBfX20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY21wZXhjaF9mYWlsdXJlX29yZGVyKF9fbSkpOyB9CiAgICB9OwoKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBhdG9taWM8X1RwKj4KICAgIHsKICAgICAgdHlwZWRl
ZiBfVHAqIF9fcG9pbnRlcl90eXBlOwogICAgICB0eXBlZGVmIF9fYXRvbWljX2Jhc2U8X1RwKj4g
X19iYXNlX3R5cGU7CiAgICAgIF9fYmFzZV90eXBlIF9NX2I7CgogICAgICBhdG9taWMoKSBub2V4
Y2VwdCA9IGRlZmF1bHQ7CiAgICAgIH5hdG9taWMoKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CiAgICAg
IGF0b21pYyhjb25zdCBhdG9taWMmKSA9IGRlbGV0ZTsKICAgICAgYXRvbWljJiBvcGVyYXRvcj0o
Y29uc3QgYXRvbWljJikgPSBkZWxldGU7CiAgICAgIGF0b21pYyYgb3BlcmF0b3I9KGNvbnN0IGF0
b21pYyYpIHZvbGF0aWxlID0gZGVsZXRlOwoKICAgICAgY29uc3RleHByIGF0b21pYyhfX3BvaW50
ZXJfdHlwZSBfX3ApIG5vZXhjZXB0IDogX01fYihfX3ApIHsgfQoKICAgICAgb3BlcmF0b3IgX19w
b2ludGVyX3R5cGUoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfX3BvaW50ZXJfdHlw
ZShfTV9iKTsgfQoKICAgICAgb3BlcmF0b3IgX19wb2ludGVyX3R5cGUoKSBjb25zdCB2b2xhdGls
ZSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfX3BvaW50ZXJfdHlwZShfTV9iKTsgfQoKICAgICAg
X19wb2ludGVyX3R5cGUKICAgICAgb3BlcmF0b3I9KF9fcG9pbnRlcl90eXBlIF9fcCkgbm9leGNl
cHQKICAgICAgeyByZXR1cm4gX01fYi5vcGVyYXRvcj0oX19wKTsgfQoKICAgICAgX19wb2ludGVy
X3R5cGUKICAgICAgb3BlcmF0b3I9KF9fcG9pbnRlcl90eXBlIF9fcCkgdm9sYXRpbGUgbm9leGNl
cHQKICAgICAgeyByZXR1cm4gX01fYi5vcGVyYXRvcj0oX19wKTsgfQoKICAgICAgX19wb2ludGVy
X3R5cGUKICAgICAgb3BlcmF0b3IrKyhpbnQpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX2Ir
KzsgfQoKICAgICAgX19wb2ludGVyX3R5cGUKICAgICAgb3BlcmF0b3IrKyhpbnQpIHZvbGF0aWxl
IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX2IrKzsgfQoKICAgICAgX19wb2ludGVyX3R5cGUK
ICAgICAgb3BlcmF0b3ItLShpbnQpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX2ItLTsgfQoK
ICAgICAgX19wb2ludGVyX3R5cGUKICAgICAgb3BlcmF0b3ItLShpbnQpIHZvbGF0aWxlIG5vZXhj
ZXB0CiAgICAgIHsgcmV0dXJuIF9NX2ItLTsgfQoKICAgICAgX19wb2ludGVyX3R5cGUKICAgICAg
b3BlcmF0b3IrKygpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuICsrX01fYjsgfQoKICAgICAgX19w
b2ludGVyX3R5cGUKICAgICAgb3BlcmF0b3IrKygpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsg
cmV0dXJuICsrX01fYjsgfQoKICAgICAgX19wb2ludGVyX3R5cGUKICAgICAgb3BlcmF0b3ItLSgp
IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIC0tX01fYjsgfQoKICAgICAgX19wb2ludGVyX3R5cGUK
ICAgICAgb3BlcmF0b3ItLSgpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIC0tX01f
YjsgfQoKICAgICAgX19wb2ludGVyX3R5cGUKICAgICAgb3BlcmF0b3IrPShwdHJkaWZmX3QgX19k
KSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9iLm9wZXJhdG9yKz0oX19kKTsgfQoKICAgICAg
X19wb2ludGVyX3R5cGUKICAgICAgb3BlcmF0b3IrPShwdHJkaWZmX3QgX19kKSB2b2xhdGlsZSBu
b2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9iLm9wZXJhdG9yKz0oX19kKTsgfQoKICAgICAgX19w
b2ludGVyX3R5cGUKICAgICAgb3BlcmF0b3ItPShwdHJkaWZmX3QgX19kKSBub2V4Y2VwdAogICAg
ICB7IHJldHVybiBfTV9iLm9wZXJhdG9yLT0oX19kKTsgfQoKICAgICAgX19wb2ludGVyX3R5cGUK
ICAgICAgb3BlcmF0b3ItPShwdHJkaWZmX3QgX19kKSB2b2xhdGlsZSBub2V4Y2VwdAogICAgICB7
IHJldHVybiBfTV9iLm9wZXJhdG9yLT0oX19kKTsgfQoKICAgICAgYm9vbAogICAgICBpc19sb2Nr
X2ZyZWUoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9iLmlzX2xvY2tfZnJlZSgp
OyB9CgogICAgICBib29sCiAgICAgIGlzX2xvY2tfZnJlZSgpIGNvbnN0IHZvbGF0aWxlIG5vZXhj
ZXB0CiAgICAgIHsgcmV0dXJuIF9NX2IuaXNfbG9ja19mcmVlKCk7IH0KCiAgICAgIHZvaWQKICAg
ICAgc3RvcmUoX19wb2ludGVyX3R5cGUgX19wLAogICAgIG1lbW9yeV9vcmRlciBfX20gPSBtZW1v
cnlfb3JkZXJfc2VxX2NzdCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01fYi5zdG9yZShfX3As
IF9fbSk7IH0KCiAgICAgIHZvaWQKICAgICAgc3RvcmUoX19wb2ludGVyX3R5cGUgX19wLAogICAg
IG1lbW9yeV9vcmRlciBfX20gPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgdm9sYXRpbGUgbm9leGNl
cHQKICAgICAgeyByZXR1cm4gX01fYi5zdG9yZShfX3AsIF9fbSk7IH0KCiAgICAgIF9fcG9pbnRl
cl90eXBlCiAgICAgIGxvYWQobWVtb3J5X29yZGVyIF9fbSA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0
KSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9iLmxvYWQoX19tKTsgfQoKICAgICAg
X19wb2ludGVyX3R5cGUKICAgICAgbG9hZChtZW1vcnlfb3JkZXIgX19tID0gbWVtb3J5X29yZGVy
X3NlcV9jc3QpIGNvbnN0IHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX2IubG9h
ZChfX20pOyB9CgogICAgICBfX3BvaW50ZXJfdHlwZQogICAgICBleGNoYW5nZShfX3BvaW50ZXJf
dHlwZSBfX3AsCiAgICAgICAgbWVtb3J5X29yZGVyIF9fbSA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0
KSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9iLmV4Y2hhbmdlKF9fcCwgX19tKTsgfQoKICAg
ICAgX19wb2ludGVyX3R5cGUKICAgICAgZXhjaGFuZ2UoX19wb2ludGVyX3R5cGUgX19wLAogICAg
ICAgIG1lbW9yeV9vcmRlciBfX20gPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgdm9sYXRpbGUgbm9l
eGNlcHQKICAgICAgeyByZXR1cm4gX01fYi5leGNoYW5nZShfX3AsIF9fbSk7IH0KCiAgICAgIGJv
b2wKICAgICAgY29tcGFyZV9leGNoYW5nZV93ZWFrKF9fcG9pbnRlcl90eXBlJiBfX3AxLCBfX3Bv
aW50ZXJfdHlwZSBfX3AyLAogICAgICAgbWVtb3J5X29yZGVyIF9fbTEsIG1lbW9yeV9vcmRlciBf
X20yKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9iLmNvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25n
KF9fcDEsIF9fcDIsIF9fbTEsIF9fbTIpOyB9CgogICAgICBib29sCiAgICAgIGNvbXBhcmVfZXhj
aGFuZ2Vfd2VhayhfX3BvaW50ZXJfdHlwZSYgX19wMSwgX19wb2ludGVyX3R5cGUgX19wMiwKICAg
ICAgIG1lbW9yeV9vcmRlciBfX20xLAogICAgICAgbWVtb3J5X29yZGVyIF9fbTIpIHZvbGF0aWxl
IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX2IuY29tcGFyZV9leGNoYW5nZV9zdHJvbmcoX19w
MSwgX19wMiwgX19tMSwgX19tMik7IH0KCiAgICAgIGJvb2wKICAgICAgY29tcGFyZV9leGNoYW5n
ZV93ZWFrKF9fcG9pbnRlcl90eXBlJiBfX3AxLCBfX3BvaW50ZXJfdHlwZSBfX3AyLAogICAgICAg
bWVtb3J5X29yZGVyIF9fbSA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBub2V4Y2VwdAogICAgICB7
CiByZXR1cm4gY29tcGFyZV9leGNoYW5nZV93ZWFrKF9fcDEsIF9fcDIsIF9fbSwKICAgICAgICAg
X19jbXBleGNoX2ZhaWx1cmVfb3JkZXIoX19tKSk7CiAgICAgIH0KCiAgICAgIGJvb2wKICAgICAg
Y29tcGFyZV9leGNoYW5nZV93ZWFrKF9fcG9pbnRlcl90eXBlJiBfX3AxLCBfX3BvaW50ZXJfdHlw
ZSBfX3AyLAogICAgICBtZW1vcnlfb3JkZXIgX19tID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIHZv
bGF0aWxlIG5vZXhjZXB0CiAgICAgIHsKIHJldHVybiBjb21wYXJlX2V4Y2hhbmdlX3dlYWsoX19w
MSwgX19wMiwgX19tLAogICAgICAgICBfX2NtcGV4Y2hfZmFpbHVyZV9vcmRlcihfX20pKTsKICAg
ICAgfQoKICAgICAgYm9vbAogICAgICBjb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhfX3BvaW50ZXJf
dHlwZSYgX19wMSwgX19wb2ludGVyX3R5cGUgX19wMiwKICAgICAgICAgbWVtb3J5X29yZGVyIF9f
bTEsIG1lbW9yeV9vcmRlciBfX20yKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9iLmNvbXBh
cmVfZXhjaGFuZ2Vfc3Ryb25nKF9fcDEsIF9fcDIsIF9fbTEsIF9fbTIpOyB9CgogICAgICBib29s
CiAgICAgIGNvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKF9fcG9pbnRlcl90eXBlJiBfX3AxLCBfX3Bv
aW50ZXJfdHlwZSBfX3AyLAogICAgICAgICBtZW1vcnlfb3JkZXIgX19tMSwKICAgICAgICAgbWVt
b3J5X29yZGVyIF9fbTIpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX2IuY29t
cGFyZV9leGNoYW5nZV9zdHJvbmcoX19wMSwgX19wMiwgX19tMSwgX19tMik7IH0KCiAgICAgIGJv
b2wKICAgICAgY29tcGFyZV9leGNoYW5nZV9zdHJvbmcoX19wb2ludGVyX3R5cGUmIF9fcDEsIF9f
cG9pbnRlcl90eXBlIF9fcDIsCiAgICAgICAgIG1lbW9yeV9vcmRlciBfX20gPSBtZW1vcnlfb3Jk
ZXJfc2VxX2NzdCkgbm9leGNlcHQKICAgICAgewogcmV0dXJuIF9NX2IuY29tcGFyZV9leGNoYW5n
ZV9zdHJvbmcoX19wMSwgX19wMiwgX19tLAogICAgICAgICBfX2NtcGV4Y2hfZmFpbHVyZV9vcmRl
cihfX20pKTsKICAgICAgfQoKICAgICAgYm9vbAogICAgICBjb21wYXJlX2V4Y2hhbmdlX3N0cm9u
ZyhfX3BvaW50ZXJfdHlwZSYgX19wMSwgX19wb2ludGVyX3R5cGUgX19wMiwKICAgICAgbWVtb3J5
X29yZGVyIF9fbSA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSB2b2xhdGlsZSBub2V4Y2VwdAogICAg
ICB7CiByZXR1cm4gX01fYi5jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhfX3AxLCBfX3AyLCBfX20s
CiAgICAgICAgIF9fY21wZXhjaF9mYWlsdXJlX29yZGVyKF9fbSkpOwogICAgICB9CgogICAgICBf
X3BvaW50ZXJfdHlwZQogICAgICBmZXRjaF9hZGQocHRyZGlmZl90IF9fZCwKICBtZW1vcnlfb3Jk
ZXIgX19tID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9N
X2IuZmV0Y2hfYWRkKF9fZCwgX19tKTsgfQoKICAgICAgX19wb2ludGVyX3R5cGUKICAgICAgZmV0
Y2hfYWRkKHB0cmRpZmZfdCBfX2QsCiAgbWVtb3J5X29yZGVyIF9fbSA9IG1lbW9yeV9vcmRlcl9z
ZXFfY3N0KSB2b2xhdGlsZSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9iLmZldGNoX2FkZChf
X2QsIF9fbSk7IH0KCiAgICAgIF9fcG9pbnRlcl90eXBlCiAgICAgIGZldGNoX3N1YihwdHJkaWZm
X3QgX19kLAogIG1lbW9yeV9vcmRlciBfX20gPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgbm9leGNl
cHQKICAgICAgeyByZXR1cm4gX01fYi5mZXRjaF9zdWIoX19kLCBfX20pOyB9CgogICAgICBfX3Bv
aW50ZXJfdHlwZQogICAgICBmZXRjaF9zdWIocHRyZGlmZl90IF9fZCwKICBtZW1vcnlfb3JkZXIg
X19tID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIHZvbGF0aWxlIG5vZXhjZXB0CiAgICAgIHsgcmV0
dXJuIF9NX2IuZmV0Y2hfc3ViKF9fZCwgX19tKTsgfQogICAgfTsKCgoKICB0ZW1wbGF0ZTw+CiAg
ICBzdHJ1Y3QgYXRvbWljPGJvb2w+IDogcHVibGljIGF0b21pY19ib29sCiAgICB7CiAgICAgIHR5
cGVkZWYgYm9vbCBfX2ludGVncmFsX3R5cGU7CiAgICAgIHR5cGVkZWYgYXRvbWljX2Jvb2wgX19i
YXNlX3R5cGU7CgogICAgICBhdG9taWMoKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CiAgICAgIH5hdG9t
aWMoKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CiAgICAgIGF0b21pYyhjb25zdCBhdG9taWMmKSA9IGRl
bGV0ZTsKICAgICAgYXRvbWljJiBvcGVyYXRvcj0oY29uc3QgYXRvbWljJikgPSBkZWxldGU7CiAg
ICAgIGF0b21pYyYgb3BlcmF0b3I9KGNvbnN0IGF0b21pYyYpIHZvbGF0aWxlID0gZGVsZXRlOwoK
ICAgICAgY29uc3RleHByIGF0b21pYyhfX2ludGVncmFsX3R5cGUgX19pKSBub2V4Y2VwdCA6IF9f
YmFzZV90eXBlKF9faSkgeyB9CgogICAgICB1c2luZyBfX2Jhc2VfdHlwZTo6b3BlcmF0b3IgX19p
bnRlZ3JhbF90eXBlOwogICAgICB1c2luZyBfX2Jhc2VfdHlwZTo6b3BlcmF0b3I9OwogICAgfTsK
CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBhdG9taWM8Y2hhcj4gOiBwdWJsaWMgYXRvbWljX2No
YXIKICAgIHsKICAgICAgdHlwZWRlZiBjaGFyIF9faW50ZWdyYWxfdHlwZTsKICAgICAgdHlwZWRl
ZiBhdG9taWNfY2hhciBfX2Jhc2VfdHlwZTsKCiAgICAgIGF0b21pYygpIG5vZXhjZXB0ID0gZGVm
YXVsdDsKICAgICAgfmF0b21pYygpIG5vZXhjZXB0ID0gZGVmYXVsdDsKICAgICAgYXRvbWljKGNv
bnN0IGF0b21pYyYpID0gZGVsZXRlOwogICAgICBhdG9taWMmIG9wZXJhdG9yPShjb25zdCBhdG9t
aWMmKSA9IGRlbGV0ZTsKICAgICAgYXRvbWljJiBvcGVyYXRvcj0oY29uc3QgYXRvbWljJikgdm9s
YXRpbGUgPSBkZWxldGU7CgogICAgICBjb25zdGV4cHIgYXRvbWljKF9faW50ZWdyYWxfdHlwZSBf
X2kpIG5vZXhjZXB0IDogX19iYXNlX3R5cGUoX19pKSB7IH0KCiAgICAgIHVzaW5nIF9fYmFzZV90
eXBlOjpvcGVyYXRvciBfX2ludGVncmFsX3R5cGU7CiAgICAgIHVzaW5nIF9fYmFzZV90eXBlOjpv
cGVyYXRvcj07CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IGF0b21pYzxzaWduZWQg
Y2hhcj4gOiBwdWJsaWMgYXRvbWljX3NjaGFyCiAgICB7CiAgICAgIHR5cGVkZWYgc2lnbmVkIGNo
YXIgX19pbnRlZ3JhbF90eXBlOwogICAgICB0eXBlZGVmIGF0b21pY19zY2hhciBfX2Jhc2VfdHlw
ZTsKCiAgICAgIGF0b21pYygpIG5vZXhjZXB0PSBkZWZhdWx0OwogICAgICB+YXRvbWljKCkgbm9l
eGNlcHQgPSBkZWZhdWx0OwogICAgICBhdG9taWMoY29uc3QgYXRvbWljJikgPSBkZWxldGU7CiAg
ICAgIGF0b21pYyYgb3BlcmF0b3I9KGNvbnN0IGF0b21pYyYpID0gZGVsZXRlOwogICAgICBhdG9t
aWMmIG9wZXJhdG9yPShjb25zdCBhdG9taWMmKSB2b2xhdGlsZSA9IGRlbGV0ZTsKCiAgICAgIGNv
bnN0ZXhwciBhdG9taWMoX19pbnRlZ3JhbF90eXBlIF9faSkgbm9leGNlcHQgOiBfX2Jhc2VfdHlw
ZShfX2kpIHsgfQoKICAgICAgdXNpbmcgX19iYXNlX3R5cGU6Om9wZXJhdG9yIF9faW50ZWdyYWxf
dHlwZTsKICAgICAgdXNpbmcgX19iYXNlX3R5cGU6Om9wZXJhdG9yPTsKICAgIH07CgoKICB0ZW1w
bGF0ZTw+CiAgICBzdHJ1Y3QgYXRvbWljPHVuc2lnbmVkIGNoYXI+IDogcHVibGljIGF0b21pY191
Y2hhcgogICAgewogICAgICB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX19pbnRlZ3JhbF90eXBlOwog
ICAgICB0eXBlZGVmIGF0b21pY191Y2hhciBfX2Jhc2VfdHlwZTsKCiAgICAgIGF0b21pYygpIG5v
ZXhjZXB0PSBkZWZhdWx0OwogICAgICB+YXRvbWljKCkgbm9leGNlcHQgPSBkZWZhdWx0OwogICAg
ICBhdG9taWMoY29uc3QgYXRvbWljJikgPSBkZWxldGU7CiAgICAgIGF0b21pYyYgb3BlcmF0b3I9
KGNvbnN0IGF0b21pYyYpID0gZGVsZXRlOwogICAgICBhdG9taWMmIG9wZXJhdG9yPShjb25zdCBh
dG9taWMmKSB2b2xhdGlsZSA9IGRlbGV0ZTsKCiAgICAgIGNvbnN0ZXhwciBhdG9taWMoX19pbnRl
Z3JhbF90eXBlIF9faSkgbm9leGNlcHQgOiBfX2Jhc2VfdHlwZShfX2kpIHsgfQoKICAgICAgdXNp
bmcgX19iYXNlX3R5cGU6Om9wZXJhdG9yIF9faW50ZWdyYWxfdHlwZTsKICAgICAgdXNpbmcgX19i
YXNlX3R5cGU6Om9wZXJhdG9yPTsKICAgIH07CgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgYXRv
bWljPHNob3J0PiA6IHB1YmxpYyBhdG9taWNfc2hvcnQKICAgIHsKICAgICAgdHlwZWRlZiBzaG9y
dCBfX2ludGVncmFsX3R5cGU7CiAgICAgIHR5cGVkZWYgYXRvbWljX3Nob3J0IF9fYmFzZV90eXBl
OwoKICAgICAgYXRvbWljKCkgbm9leGNlcHQgPSBkZWZhdWx0OwogICAgICB+YXRvbWljKCkgbm9l
eGNlcHQgPSBkZWZhdWx0OwogICAgICBhdG9taWMoY29uc3QgYXRvbWljJikgPSBkZWxldGU7CiAg
ICAgIGF0b21pYyYgb3BlcmF0b3I9KGNvbnN0IGF0b21pYyYpID0gZGVsZXRlOwogICAgICBhdG9t
aWMmIG9wZXJhdG9yPShjb25zdCBhdG9taWMmKSB2b2xhdGlsZSA9IGRlbGV0ZTsKCiAgICAgIGNv
bnN0ZXhwciBhdG9taWMoX19pbnRlZ3JhbF90eXBlIF9faSkgbm9leGNlcHQgOiBfX2Jhc2VfdHlw
ZShfX2kpIHsgfQoKICAgICAgdXNpbmcgX19iYXNlX3R5cGU6Om9wZXJhdG9yIF9faW50ZWdyYWxf
dHlwZTsKICAgICAgdXNpbmcgX19iYXNlX3R5cGU6Om9wZXJhdG9yPTsKICAgIH07CgoKICB0ZW1w
bGF0ZTw+CiAgICBzdHJ1Y3QgYXRvbWljPHVuc2lnbmVkIHNob3J0PiA6IHB1YmxpYyBhdG9taWNf
dXNob3J0CiAgICB7CiAgICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19pbnRlZ3JhbF90eXBl
OwogICAgICB0eXBlZGVmIGF0b21pY191c2hvcnQgX19iYXNlX3R5cGU7CgogICAgICBhdG9taWMo
KSBub2V4Y2VwdCA9IGRlZmF1bHQ7CiAgICAgIH5hdG9taWMoKSBub2V4Y2VwdCA9IGRlZmF1bHQ7
CiAgICAgIGF0b21pYyhjb25zdCBhdG9taWMmKSA9IGRlbGV0ZTsKICAgICAgYXRvbWljJiBvcGVy
YXRvcj0oY29uc3QgYXRvbWljJikgPSBkZWxldGU7CiAgICAgIGF0b21pYyYgb3BlcmF0b3I9KGNv
bnN0IGF0b21pYyYpIHZvbGF0aWxlID0gZGVsZXRlOwoKICAgICAgY29uc3RleHByIGF0b21pYyhf
X2ludGVncmFsX3R5cGUgX19pKSBub2V4Y2VwdCA6IF9fYmFzZV90eXBlKF9faSkgeyB9CgogICAg
ICB1c2luZyBfX2Jhc2VfdHlwZTo6b3BlcmF0b3IgX19pbnRlZ3JhbF90eXBlOwogICAgICB1c2lu
ZyBfX2Jhc2VfdHlwZTo6b3BlcmF0b3I9OwogICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVj
dCBhdG9taWM8aW50PiA6IGF0b21pY19pbnQKICAgIHsKICAgICAgdHlwZWRlZiBpbnQgX19pbnRl
Z3JhbF90eXBlOwogICAgICB0eXBlZGVmIGF0b21pY19pbnQgX19iYXNlX3R5cGU7CgogICAgICBh
dG9taWMoKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CiAgICAgIH5hdG9taWMoKSBub2V4Y2VwdCA9IGRl
ZmF1bHQ7CiAgICAgIGF0b21pYyhjb25zdCBhdG9taWMmKSA9IGRlbGV0ZTsKICAgICAgYXRvbWlj
JiBvcGVyYXRvcj0oY29uc3QgYXRvbWljJikgPSBkZWxldGU7CiAgICAgIGF0b21pYyYgb3BlcmF0
b3I9KGNvbnN0IGF0b21pYyYpIHZvbGF0aWxlID0gZGVsZXRlOwoKICAgICAgY29uc3RleHByIGF0
b21pYyhfX2ludGVncmFsX3R5cGUgX19pKSBub2V4Y2VwdCA6IF9fYmFzZV90eXBlKF9faSkgeyB9
CgogICAgICB1c2luZyBfX2Jhc2VfdHlwZTo6b3BlcmF0b3IgX19pbnRlZ3JhbF90eXBlOwogICAg
ICB1c2luZyBfX2Jhc2VfdHlwZTo6b3BlcmF0b3I9OwogICAgfTsKCgogIHRlbXBsYXRlPD4KICAg
IHN0cnVjdCBhdG9taWM8dW5zaWduZWQgaW50PiA6IHB1YmxpYyBhdG9taWNfdWludAogICAgewog
ICAgICB0eXBlZGVmIHVuc2lnbmVkIGludCBfX2ludGVncmFsX3R5cGU7CiAgICAgIHR5cGVkZWYg
YXRvbWljX3VpbnQgX19iYXNlX3R5cGU7CgogICAgICBhdG9taWMoKSBub2V4Y2VwdCA9IGRlZmF1
bHQ7CiAgICAgIH5hdG9taWMoKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CiAgICAgIGF0b21pYyhjb25z
dCBhdG9taWMmKSA9IGRlbGV0ZTsKICAgICAgYXRvbWljJiBvcGVyYXRvcj0oY29uc3QgYXRvbWlj
JikgPSBkZWxldGU7CiAgICAgIGF0b21pYyYgb3BlcmF0b3I9KGNvbnN0IGF0b21pYyYpIHZvbGF0
aWxlID0gZGVsZXRlOwoKICAgICAgY29uc3RleHByIGF0b21pYyhfX2ludGVncmFsX3R5cGUgX19p
KSBub2V4Y2VwdCA6IF9fYmFzZV90eXBlKF9faSkgeyB9CgogICAgICB1c2luZyBfX2Jhc2VfdHlw
ZTo6b3BlcmF0b3IgX19pbnRlZ3JhbF90eXBlOwogICAgICB1c2luZyBfX2Jhc2VfdHlwZTo6b3Bl
cmF0b3I9OwogICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBhdG9taWM8bG9uZz4gOiBw
dWJsaWMgYXRvbWljX2xvbmcKICAgIHsKICAgICAgdHlwZWRlZiBsb25nIF9faW50ZWdyYWxfdHlw
ZTsKICAgICAgdHlwZWRlZiBhdG9taWNfbG9uZyBfX2Jhc2VfdHlwZTsKCiAgICAgIGF0b21pYygp
IG5vZXhjZXB0ID0gZGVmYXVsdDsKICAgICAgfmF0b21pYygpIG5vZXhjZXB0ID0gZGVmYXVsdDsK
ICAgICAgYXRvbWljKGNvbnN0IGF0b21pYyYpID0gZGVsZXRlOwogICAgICBhdG9taWMmIG9wZXJh
dG9yPShjb25zdCBhdG9taWMmKSA9IGRlbGV0ZTsKICAgICAgYXRvbWljJiBvcGVyYXRvcj0oY29u
c3QgYXRvbWljJikgdm9sYXRpbGUgPSBkZWxldGU7CgogICAgICBjb25zdGV4cHIgYXRvbWljKF9f
aW50ZWdyYWxfdHlwZSBfX2kpIG5vZXhjZXB0IDogX19iYXNlX3R5cGUoX19pKSB7IH0KCiAgICAg
IHVzaW5nIF9fYmFzZV90eXBlOjpvcGVyYXRvciBfX2ludGVncmFsX3R5cGU7CiAgICAgIHVzaW5n
IF9fYmFzZV90eXBlOjpvcGVyYXRvcj07CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0
IGF0b21pYzx1bnNpZ25lZCBsb25nPiA6IHB1YmxpYyBhdG9taWNfdWxvbmcKICAgIHsKICAgICAg
dHlwZWRlZiB1bnNpZ25lZCBsb25nIF9faW50ZWdyYWxfdHlwZTsKICAgICAgdHlwZWRlZiBhdG9t
aWNfdWxvbmcgX19iYXNlX3R5cGU7CgogICAgICBhdG9taWMoKSBub2V4Y2VwdCA9IGRlZmF1bHQ7
CiAgICAgIH5hdG9taWMoKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CiAgICAgIGF0b21pYyhjb25zdCBh
dG9taWMmKSA9IGRlbGV0ZTsKICAgICAgYXRvbWljJiBvcGVyYXRvcj0oY29uc3QgYXRvbWljJikg
PSBkZWxldGU7CiAgICAgIGF0b21pYyYgb3BlcmF0b3I9KGNvbnN0IGF0b21pYyYpIHZvbGF0aWxl
ID0gZGVsZXRlOwoKICAgICAgY29uc3RleHByIGF0b21pYyhfX2ludGVncmFsX3R5cGUgX19pKSBu
b2V4Y2VwdCA6IF9fYmFzZV90eXBlKF9faSkgeyB9CgogICAgICB1c2luZyBfX2Jhc2VfdHlwZTo6
b3BlcmF0b3IgX19pbnRlZ3JhbF90eXBlOwogICAgICB1c2luZyBfX2Jhc2VfdHlwZTo6b3BlcmF0
b3I9OwogICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBhdG9taWM8bG9uZyBsb25nPiA6
IHB1YmxpYyBhdG9taWNfbGxvbmcKICAgIHsKICAgICAgdHlwZWRlZiBsb25nIGxvbmcgX19pbnRl
Z3JhbF90eXBlOwogICAgICB0eXBlZGVmIGF0b21pY19sbG9uZyBfX2Jhc2VfdHlwZTsKCiAgICAg
IGF0b21pYygpIG5vZXhjZXB0ID0gZGVmYXVsdDsKICAgICAgfmF0b21pYygpIG5vZXhjZXB0ID0g
ZGVmYXVsdDsKICAgICAgYXRvbWljKGNvbnN0IGF0b21pYyYpID0gZGVsZXRlOwogICAgICBhdG9t
aWMmIG9wZXJhdG9yPShjb25zdCBhdG9taWMmKSA9IGRlbGV0ZTsKICAgICAgYXRvbWljJiBvcGVy
YXRvcj0oY29uc3QgYXRvbWljJikgdm9sYXRpbGUgPSBkZWxldGU7CgogICAgICBjb25zdGV4cHIg
YXRvbWljKF9faW50ZWdyYWxfdHlwZSBfX2kpIG5vZXhjZXB0IDogX19iYXNlX3R5cGUoX19pKSB7
IH0KCiAgICAgIHVzaW5nIF9fYmFzZV90eXBlOjpvcGVyYXRvciBfX2ludGVncmFsX3R5cGU7CiAg
ICAgIHVzaW5nIF9fYmFzZV90eXBlOjpvcGVyYXRvcj07CiAgICB9OwoKCiAgdGVtcGxhdGU8Pgog
ICAgc3RydWN0IGF0b21pYzx1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIGF0b21pY191bGxv
bmcKICAgIHsKICAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX19pbnRlZ3JhbF90eXBl
OwogICAgICB0eXBlZGVmIGF0b21pY191bGxvbmcgX19iYXNlX3R5cGU7CgogICAgICBhdG9taWMo
KSBub2V4Y2VwdCA9IGRlZmF1bHQ7CiAgICAgIH5hdG9taWMoKSBub2V4Y2VwdCA9IGRlZmF1bHQ7
CiAgICAgIGF0b21pYyhjb25zdCBhdG9taWMmKSA9IGRlbGV0ZTsKICAgICAgYXRvbWljJiBvcGVy
YXRvcj0oY29uc3QgYXRvbWljJikgPSBkZWxldGU7CiAgICAgIGF0b21pYyYgb3BlcmF0b3I9KGNv
bnN0IGF0b21pYyYpIHZvbGF0aWxlID0gZGVsZXRlOwoKICAgICAgY29uc3RleHByIGF0b21pYyhf
X2ludGVncmFsX3R5cGUgX19pKSBub2V4Y2VwdCA6IF9fYmFzZV90eXBlKF9faSkgeyB9CgogICAg
ICB1c2luZyBfX2Jhc2VfdHlwZTo6b3BlcmF0b3IgX19pbnRlZ3JhbF90eXBlOwogICAgICB1c2lu
ZyBfX2Jhc2VfdHlwZTo6b3BlcmF0b3I9OwogICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVj
dCBhdG9taWM8d2NoYXJfdD4gOiBwdWJsaWMgYXRvbWljX3djaGFyX3QKICAgIHsKICAgICAgdHlw
ZWRlZiB3Y2hhcl90IF9faW50ZWdyYWxfdHlwZTsKICAgICAgdHlwZWRlZiBhdG9taWNfd2NoYXJf
dCBfX2Jhc2VfdHlwZTsKCiAgICAgIGF0b21pYygpIG5vZXhjZXB0ID0gZGVmYXVsdDsKICAgICAg
fmF0b21pYygpIG5vZXhjZXB0ID0gZGVmYXVsdDsKICAgICAgYXRvbWljKGNvbnN0IGF0b21pYyYp
ID0gZGVsZXRlOwogICAgICBhdG9taWMmIG9wZXJhdG9yPShjb25zdCBhdG9taWMmKSA9IGRlbGV0
ZTsKICAgICAgYXRvbWljJiBvcGVyYXRvcj0oY29uc3QgYXRvbWljJikgdm9sYXRpbGUgPSBkZWxl
dGU7CgogICAgICBjb25zdGV4cHIgYXRvbWljKF9faW50ZWdyYWxfdHlwZSBfX2kpIG5vZXhjZXB0
IDogX19iYXNlX3R5cGUoX19pKSB7IH0KCiAgICAgIHVzaW5nIF9fYmFzZV90eXBlOjpvcGVyYXRv
ciBfX2ludGVncmFsX3R5cGU7CiAgICAgIHVzaW5nIF9fYmFzZV90eXBlOjpvcGVyYXRvcj07CiAg
ICB9OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IGF0b21pYzxjaGFyMTZfdD4gOiBwdWJsaWMg
YXRvbWljX2NoYXIxNl90CiAgICB7CiAgICAgIHR5cGVkZWYgY2hhcjE2X3QgX19pbnRlZ3JhbF90
eXBlOwogICAgICB0eXBlZGVmIGF0b21pY19jaGFyMTZfdCBfX2Jhc2VfdHlwZTsKCiAgICAgIGF0
b21pYygpIG5vZXhjZXB0ID0gZGVmYXVsdDsKICAgICAgfmF0b21pYygpIG5vZXhjZXB0ID0gZGVm
YXVsdDsKICAgICAgYXRvbWljKGNvbnN0IGF0b21pYyYpID0gZGVsZXRlOwogICAgICBhdG9taWMm
IG9wZXJhdG9yPShjb25zdCBhdG9taWMmKSA9IGRlbGV0ZTsKICAgICAgYXRvbWljJiBvcGVyYXRv
cj0oY29uc3QgYXRvbWljJikgdm9sYXRpbGUgPSBkZWxldGU7CgogICAgICBjb25zdGV4cHIgYXRv
bWljKF9faW50ZWdyYWxfdHlwZSBfX2kpIG5vZXhjZXB0IDogX19iYXNlX3R5cGUoX19pKSB7IH0K
CiAgICAgIHVzaW5nIF9fYmFzZV90eXBlOjpvcGVyYXRvciBfX2ludGVncmFsX3R5cGU7CiAgICAg
IHVzaW5nIF9fYmFzZV90eXBlOjpvcGVyYXRvcj07CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAg
c3RydWN0IGF0b21pYzxjaGFyMzJfdD4gOiBwdWJsaWMgYXRvbWljX2NoYXIzMl90CiAgICB7CiAg
ICAgIHR5cGVkZWYgY2hhcjMyX3QgX19pbnRlZ3JhbF90eXBlOwogICAgICB0eXBlZGVmIGF0b21p
Y19jaGFyMzJfdCBfX2Jhc2VfdHlwZTsKCiAgICAgIGF0b21pYygpIG5vZXhjZXB0ID0gZGVmYXVs
dDsKICAgICAgfmF0b21pYygpIG5vZXhjZXB0ID0gZGVmYXVsdDsKICAgICAgYXRvbWljKGNvbnN0
IGF0b21pYyYpID0gZGVsZXRlOwogICAgICBhdG9taWMmIG9wZXJhdG9yPShjb25zdCBhdG9taWMm
KSA9IGRlbGV0ZTsKICAgICAgYXRvbWljJiBvcGVyYXRvcj0oY29uc3QgYXRvbWljJikgdm9sYXRp
bGUgPSBkZWxldGU7CgogICAgICBjb25zdGV4cHIgYXRvbWljKF9faW50ZWdyYWxfdHlwZSBfX2kp
IG5vZXhjZXB0IDogX19iYXNlX3R5cGUoX19pKSB7IH0KCiAgICAgIHVzaW5nIF9fYmFzZV90eXBl
OjpvcGVyYXRvciBfX2ludGVncmFsX3R5cGU7CiAgICAgIHVzaW5nIF9fYmFzZV90eXBlOjpvcGVy
YXRvcj07CiAgICB9OwoKCgogIGlubGluZSBib29sCiAgYXRvbWljX2ZsYWdfdGVzdF9hbmRfc2V0
X2V4cGxpY2l0KGF0b21pY19mbGFnKiBfX2EsCiAgICAgICAgbWVtb3J5X29yZGVyIF9fbSkgbm9l
eGNlcHQKICB7IHJldHVybiBfX2EtPnRlc3RfYW5kX3NldChfX20pOyB9CgogIGlubGluZSBib29s
CiAgYXRvbWljX2ZsYWdfdGVzdF9hbmRfc2V0X2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pY19mbGFn
KiBfX2EsCiAgICAgICAgbWVtb3J5X29yZGVyIF9fbSkgbm9leGNlcHQKICB7IHJldHVybiBfX2Et
PnRlc3RfYW5kX3NldChfX20pOyB9CgogIGlubGluZSB2b2lkCiAgYXRvbWljX2ZsYWdfY2xlYXJf
ZXhwbGljaXQoYXRvbWljX2ZsYWcqIF9fYSwgbWVtb3J5X29yZGVyIF9fbSkgbm9leGNlcHQKICB7
IF9fYS0+Y2xlYXIoX19tKTsgfQoKICBpbmxpbmUgdm9pZAogIGF0b21pY19mbGFnX2NsZWFyX2V4
cGxpY2l0KHZvbGF0aWxlIGF0b21pY19mbGFnKiBfX2EsCiAgICAgICAgbWVtb3J5X29yZGVyIF9f
bSkgbm9leGNlcHQKICB7IF9fYS0+Y2xlYXIoX19tKTsgfQoKICBpbmxpbmUgYm9vbAogIGF0b21p
Y19mbGFnX3Rlc3RfYW5kX3NldChhdG9taWNfZmxhZyogX19hKSBub2V4Y2VwdAogIHsgcmV0dXJu
IGF0b21pY19mbGFnX3Rlc3RfYW5kX3NldF9leHBsaWNpdChfX2EsIG1lbW9yeV9vcmRlcl9zZXFf
Y3N0KTsgfQoKICBpbmxpbmUgYm9vbAogIGF0b21pY19mbGFnX3Rlc3RfYW5kX3NldCh2b2xhdGls
ZSBhdG9taWNfZmxhZyogX19hKSBub2V4Y2VwdAogIHsgcmV0dXJuIGF0b21pY19mbGFnX3Rlc3Rf
YW5kX3NldF9leHBsaWNpdChfX2EsIG1lbW9yeV9vcmRlcl9zZXFfY3N0KTsgfQoKICBpbmxpbmUg
dm9pZAogIGF0b21pY19mbGFnX2NsZWFyKGF0b21pY19mbGFnKiBfX2EpIG5vZXhjZXB0CiAgeyBh
dG9taWNfZmxhZ19jbGVhcl9leHBsaWNpdChfX2EsIG1lbW9yeV9vcmRlcl9zZXFfY3N0KTsgfQoK
ICBpbmxpbmUgdm9pZAogIGF0b21pY19mbGFnX2NsZWFyKHZvbGF0aWxlIGF0b21pY19mbGFnKiBf
X2EpIG5vZXhjZXB0CiAgeyBhdG9taWNfZmxhZ19jbGVhcl9leHBsaWNpdChfX2EsIG1lbW9yeV9v
cmRlcl9zZXFfY3N0KTsgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JVHA+CiAgICBpbmxpbmUg
Ym9vbAogICAgYXRvbWljX2lzX2xvY2tfZnJlZShjb25zdCBhdG9taWM8X0lUcD4qIF9fYSkgbm9l
eGNlcHQKICAgIHsgcmV0dXJuIF9fYS0+aXNfbG9ja19mcmVlKCk7IH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0lUcD4KICAgIGlubGluZSBib29sCiAgICBhdG9taWNfaXNfbG9ja19mcmVlKGNvbnN0
IHZvbGF0aWxlIGF0b21pYzxfSVRwPiogX19hKSBub2V4Y2VwdAogICAgeyByZXR1cm4gX19hLT5p
c19sb2NrX2ZyZWUoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSVRwPgogICAgaW5saW5lIHZv
aWQKICAgIGF0b21pY19pbml0KGF0b21pYzxfSVRwPiogX19hLCBfSVRwIF9faSkgbm9leGNlcHQK
ICAgIHsgX19hLT5zdG9yZShfX2ksIG1lbW9yeV9vcmRlcl9yZWxheGVkKTsgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSVRwPgogICAgaW5saW5lIHZvaWQKICAgIGF0b21pY19pbml0KHZvbGF0aWxl
IGF0b21pYzxfSVRwPiogX19hLCBfSVRwIF9faSkgbm9leGNlcHQKICAgIHsgX19hLT5zdG9yZShf
X2ksIG1lbW9yeV9vcmRlcl9yZWxheGVkKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSVRwPgog
ICAgaW5saW5lIHZvaWQKICAgIGF0b21pY19zdG9yZV9leHBsaWNpdChhdG9taWM8X0lUcD4qIF9f
YSwgX0lUcCBfX2ksCiAgICAgbWVtb3J5X29yZGVyIF9fbSkgbm9leGNlcHQKICAgIHsgX19hLT5z
dG9yZShfX2ksIF9fbSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGluZSB2
b2lkCiAgICBhdG9taWNfc3RvcmVfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljPF9JVHA+KiBfX2Es
IF9JVHAgX19pLAogICAgIG1lbW9yeV9vcmRlciBfX20pIG5vZXhjZXB0CiAgICB7IF9fYS0+c3Rv
cmUoX19pLCBfX20pOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JVHA+CiAgICBpbmxpbmUgX0lU
cAogICAgYXRvbWljX2xvYWRfZXhwbGljaXQoY29uc3QgYXRvbWljPF9JVHA+KiBfX2EsIG1lbW9y
eV9vcmRlciBfX20pIG5vZXhjZXB0CiAgICB7IHJldHVybiBfX2EtPmxvYWQoX19tKTsgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSVRwPgogICAgaW5saW5lIF9JVHAKICAgIGF0b21pY19sb2FkX2V4
cGxpY2l0KGNvbnN0IHZvbGF0aWxlIGF0b21pYzxfSVRwPiogX19hLAogICAgbWVtb3J5X29yZGVy
IF9fbSkgbm9leGNlcHQKICAgIHsgcmV0dXJuIF9fYS0+bG9hZChfX20pOyB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JVHA+CiAgICBpbmxpbmUgX0lUcAogICAgYXRvbWljX2V4Y2hhbmdlX2V4cGxp
Y2l0KGF0b21pYzxfSVRwPiogX19hLCBfSVRwIF9faSwKICAgICAgICBtZW1vcnlfb3JkZXIgX19t
KSBub2V4Y2VwdAogICAgeyByZXR1cm4gX19hLT5leGNoYW5nZShfX2ksIF9fbSk7IH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGluZSBfSVRwCiAgICBhdG9taWNfZXhjaGFuZ2Vf
ZXhwbGljaXQodm9sYXRpbGUgYXRvbWljPF9JVHA+KiBfX2EsIF9JVHAgX19pLAogICAgICAgIG1l
bW9yeV9vcmRlciBfX20pIG5vZXhjZXB0CiAgICB7IHJldHVybiBfX2EtPmV4Y2hhbmdlKF9faSwg
X19tKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSVRwPgogICAgaW5saW5lIGJvb2wKICAgIGF0
b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQoYXRvbWljPF9JVHA+KiBfX2EsCiAg
ICAgICBfSVRwKiBfX2kxLCBfSVRwIF9faTIsCiAgICAgICBtZW1vcnlfb3JkZXIgX19tMSwKICAg
ICAgIG1lbW9yeV9vcmRlciBfX20yKSBub2V4Y2VwdAogICAgeyByZXR1cm4gX19hLT5jb21wYXJl
X2V4Y2hhbmdlX3dlYWsoKl9faTEsIF9faTIsIF9fbTEsIF9fbTIpOyB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9JVHA+CiAgICBpbmxpbmUgYm9vbAogICAgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vf
d2Vha19leHBsaWNpdCh2b2xhdGlsZSBhdG9taWM8X0lUcD4qIF9fYSwKICAgICAgIF9JVHAqIF9f
aTEsIF9JVHAgX19pMiwKICAgICAgIG1lbW9yeV9vcmRlciBfX20xLAogICAgICAgbWVtb3J5X29y
ZGVyIF9fbTIpIG5vZXhjZXB0CiAgICB7IHJldHVybiBfX2EtPmNvbXBhcmVfZXhjaGFuZ2Vfd2Vh
aygqX19pMSwgX19pMiwgX19tMSwgX19tMik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4K
ICAgIGlubGluZSBib29sCiAgICBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGlj
aXQoYXRvbWljPF9JVHA+KiBfX2EsCiAgICAgICAgIF9JVHAqIF9faTEsIF9JVHAgX19pMiwKICAg
ICAgICAgbWVtb3J5X29yZGVyIF9fbTEsCiAgICAgICAgIG1lbW9yeV9vcmRlciBfX20yKSBub2V4
Y2VwdAogICAgeyByZXR1cm4gX19hLT5jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZygqX19pMSwgX19p
MiwgX19tMSwgX19tMik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGluZSBi
b29sCiAgICBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQodm9sYXRpbGUg
YXRvbWljPF9JVHA+KiBfX2EsCiAgICAgICAgIF9JVHAqIF9faTEsIF9JVHAgX19pMiwKICAgICAg
ICAgbWVtb3J5X29yZGVyIF9fbTEsCiAgICAgICAgIG1lbW9yeV9vcmRlciBfX20yKSBub2V4Y2Vw
dAogICAgeyByZXR1cm4gX19hLT5jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZygqX19pMSwgX19pMiwg
X19tMSwgX19tMik7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JVHA+CiAgICBpbmxpbmUgdm9p
ZAogICAgYXRvbWljX3N0b3JlKGF0b21pYzxfSVRwPiogX19hLCBfSVRwIF9faSkgbm9leGNlcHQK
ICAgIHsgYXRvbWljX3N0b3JlX2V4cGxpY2l0KF9fYSwgX19pLCBtZW1vcnlfb3JkZXJfc2VxX2Nz
dCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGluZSB2b2lkCiAgICBhdG9t
aWNfc3RvcmUodm9sYXRpbGUgYXRvbWljPF9JVHA+KiBfX2EsIF9JVHAgX19pKSBub2V4Y2VwdAog
ICAgeyBhdG9taWNfc3RvcmVfZXhwbGljaXQoX19hLCBfX2ksIG1lbW9yeV9vcmRlcl9zZXFfY3N0
KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSVRwPgogICAgaW5saW5lIF9JVHAKICAgIGF0b21p
Y19sb2FkKGNvbnN0IGF0b21pYzxfSVRwPiogX19hKSBub2V4Y2VwdAogICAgeyByZXR1cm4gYXRv
bWljX2xvYWRfZXhwbGljaXQoX19hLCBtZW1vcnlfb3JkZXJfc2VxX2NzdCk7IH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGluZSBfSVRwCiAgICBhdG9taWNfbG9hZChjb25zdCB2
b2xhdGlsZSBhdG9taWM8X0lUcD4qIF9fYSkgbm9leGNlcHQKICAgIHsgcmV0dXJuIGF0b21pY19s
b2FkX2V4cGxpY2l0KF9fYSwgbWVtb3J5X29yZGVyX3NlcV9jc3QpOyB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9JVHA+CiAgICBpbmxpbmUgX0lUcAogICAgYXRvbWljX2V4Y2hhbmdlKGF0b21pYzxf
SVRwPiogX19hLCBfSVRwIF9faSkgbm9leGNlcHQKICAgIHsgcmV0dXJuIGF0b21pY19leGNoYW5n
ZV9leHBsaWNpdChfX2EsIF9faSwgbWVtb3J5X29yZGVyX3NlcV9jc3QpOyB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JVHA+CiAgICBpbmxpbmUgX0lUcAogICAgYXRvbWljX2V4Y2hhbmdlKHZvbGF0
aWxlIGF0b21pYzxfSVRwPiogX19hLCBfSVRwIF9faSkgbm9leGNlcHQKICAgIHsgcmV0dXJuIGF0
b21pY19leGNoYW5nZV9leHBsaWNpdChfX2EsIF9faSwgbWVtb3J5X29yZGVyX3NlcV9jc3QpOyB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JVHA+CiAgICBpbmxpbmUgYm9vbAogICAgYXRvbWljX2Nv
bXBhcmVfZXhjaGFuZ2Vfd2VhayhhdG9taWM8X0lUcD4qIF9fYSwKICAgICBfSVRwKiBfX2kxLCBf
SVRwIF9faTIpIG5vZXhjZXB0CiAgICB7CiAgICAgIHJldHVybiBhdG9taWNfY29tcGFyZV9leGNo
YW5nZV93ZWFrX2V4cGxpY2l0KF9fYSwgX19pMSwgX19pMiwKICAgICAgICAgbWVtb3J5X29yZGVy
X3NlcV9jc3QsCiAgICAgICAgIG1lbW9yeV9vcmRlcl9zZXFfY3N0KTsKICAgIH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGluZSBib29sCiAgICBhdG9taWNfY29tcGFyZV9leGNo
YW5nZV93ZWFrKHZvbGF0aWxlIGF0b21pYzxfSVRwPiogX19hLAogICAgIF9JVHAqIF9faTEsIF9J
VHAgX19pMikgbm9leGNlcHQKICAgIHsKICAgICAgcmV0dXJuIGF0b21pY19jb21wYXJlX2V4Y2hh
bmdlX3dlYWtfZXhwbGljaXQoX19hLCBfX2kxLCBfX2kyLAogICAgICAgICBtZW1vcnlfb3JkZXJf
c2VxX2NzdCwKICAgICAgICAgbWVtb3J5X29yZGVyX3NlcV9jc3QpOwogICAgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSVRwPgogICAgaW5saW5lIGJvb2wKICAgIGF0b21pY19jb21wYXJlX2V4Y2hh
bmdlX3N0cm9uZyhhdG9taWM8X0lUcD4qIF9fYSwKICAgICAgIF9JVHAqIF9faTEsIF9JVHAgX19p
Mikgbm9leGNlcHQKICAgIHsKICAgICAgcmV0dXJuIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0
cm9uZ19leHBsaWNpdChfX2EsIF9faTEsIF9faTIsCiAgICAgICAgICAgbWVtb3J5X29yZGVyX3Nl
cV9jc3QsCiAgICAgICAgICAgbWVtb3J5X29yZGVyX3NlcV9jc3QpOwogICAgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSVRwPgogICAgaW5saW5lIGJvb2wKICAgIGF0b21pY19jb21wYXJlX2V4Y2hh
bmdlX3N0cm9uZyh2b2xhdGlsZSBhdG9taWM8X0lUcD4qIF9fYSwKICAgICAgIF9JVHAqIF9faTEs
IF9JVHAgX19pMikgbm9leGNlcHQKICAgIHsKICAgICAgcmV0dXJuIGF0b21pY19jb21wYXJlX2V4
Y2hhbmdlX3N0cm9uZ19leHBsaWNpdChfX2EsIF9faTEsIF9faTIsCiAgICAgICAgICAgbWVtb3J5
X29yZGVyX3NlcV9jc3QsCiAgICAgICAgICAgbWVtb3J5X29yZGVyX3NlcV9jc3QpOwogICAgfQoK
CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGluZSBfSVRwCiAgICBhdG9taWNf
ZmV0Y2hfYWRkX2V4cGxpY2l0KF9fYXRvbWljX2Jhc2U8X0lUcD4qIF9fYSwgX0lUcCBfX2ksCiAg
ICAgICAgIG1lbW9yeV9vcmRlciBfX20pIG5vZXhjZXB0CiAgICB7IHJldHVybiBfX2EtPmZldGNo
X2FkZChfX2ksIF9fbSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGluZSBf
SVRwCiAgICBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KHZvbGF0aWxlIF9fYXRvbWljX2Jhc2U8
X0lUcD4qIF9fYSwgX0lUcCBfX2ksCiAgICAgICAgIG1lbW9yeV9vcmRlciBfX20pIG5vZXhjZXB0
CiAgICB7IHJldHVybiBfX2EtPmZldGNoX2FkZChfX2ksIF9fbSk7IH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0lUcD4KICAgIGlubGluZSBfSVRwCiAgICBhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0
KF9fYXRvbWljX2Jhc2U8X0lUcD4qIF9fYSwgX0lUcCBfX2ksCiAgICAgICAgIG1lbW9yeV9vcmRl
ciBfX20pIG5vZXhjZXB0CiAgICB7IHJldHVybiBfX2EtPmZldGNoX3N1YihfX2ksIF9fbSk7IH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGluZSBfSVRwCiAgICBhdG9taWNfZmV0
Y2hfc3ViX2V4cGxpY2l0KHZvbGF0aWxlIF9fYXRvbWljX2Jhc2U8X0lUcD4qIF9fYSwgX0lUcCBf
X2ksCiAgICAgICAgIG1lbW9yeV9vcmRlciBfX20pIG5vZXhjZXB0CiAgICB7IHJldHVybiBfX2Et
PmZldGNoX3N1YihfX2ksIF9fbSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4KICAgIGlu
bGluZSBfSVRwCiAgICBhdG9taWNfZmV0Y2hfYW5kX2V4cGxpY2l0KF9fYXRvbWljX2Jhc2U8X0lU
cD4qIF9fYSwgX0lUcCBfX2ksCiAgICAgICAgIG1lbW9yeV9vcmRlciBfX20pIG5vZXhjZXB0CiAg
ICB7IHJldHVybiBfX2EtPmZldGNoX2FuZChfX2ksIF9fbSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0lUcD4KICAgIGlubGluZSBfSVRwCiAgICBhdG9taWNfZmV0Y2hfYW5kX2V4cGxpY2l0KHZv
bGF0aWxlIF9fYXRvbWljX2Jhc2U8X0lUcD4qIF9fYSwgX0lUcCBfX2ksCiAgICAgICAgIG1lbW9y
eV9vcmRlciBfX20pIG5vZXhjZXB0CiAgICB7IHJldHVybiBfX2EtPmZldGNoX2FuZChfX2ksIF9f
bSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGluZSBfSVRwCiAgICBhdG9t
aWNfZmV0Y2hfb3JfZXhwbGljaXQoX19hdG9taWNfYmFzZTxfSVRwPiogX19hLCBfSVRwIF9faSwK
ICAgICAgICBtZW1vcnlfb3JkZXIgX19tKSBub2V4Y2VwdAogICAgeyByZXR1cm4gX19hLT5mZXRj
aF9vcihfX2ksIF9fbSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGluZSBf
SVRwCiAgICBhdG9taWNfZmV0Y2hfb3JfZXhwbGljaXQodm9sYXRpbGUgX19hdG9taWNfYmFzZTxf
SVRwPiogX19hLCBfSVRwIF9faSwKICAgICAgICBtZW1vcnlfb3JkZXIgX19tKSBub2V4Y2VwdAog
ICAgeyByZXR1cm4gX19hLT5mZXRjaF9vcihfX2ksIF9fbSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0lUcD4KICAgIGlubGluZSBfSVRwCiAgICBhdG9taWNfZmV0Y2hfeG9yX2V4cGxpY2l0KF9f
YXRvbWljX2Jhc2U8X0lUcD4qIF9fYSwgX0lUcCBfX2ksCiAgICAgICAgIG1lbW9yeV9vcmRlciBf
X20pIG5vZXhjZXB0CiAgICB7IHJldHVybiBfX2EtPmZldGNoX3hvcihfX2ksIF9fbSk7IH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGluZSBfSVRwCiAgICBhdG9taWNfZmV0Y2hf
eG9yX2V4cGxpY2l0KHZvbGF0aWxlIF9fYXRvbWljX2Jhc2U8X0lUcD4qIF9fYSwgX0lUcCBfX2ks
CiAgICAgICAgIG1lbW9yeV9vcmRlciBfX20pIG5vZXhjZXB0CiAgICB7IHJldHVybiBfX2EtPmZl
dGNoX3hvcihfX2ksIF9fbSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGlu
ZSBfSVRwCiAgICBhdG9taWNfZmV0Y2hfYWRkKF9fYXRvbWljX2Jhc2U8X0lUcD4qIF9fYSwgX0lU
cCBfX2kpIG5vZXhjZXB0CiAgICB7IHJldHVybiBhdG9taWNfZmV0Y2hfYWRkX2V4cGxpY2l0KF9f
YSwgX19pLCBtZW1vcnlfb3JkZXJfc2VxX2NzdCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lU
cD4KICAgIGlubGluZSBfSVRwCiAgICBhdG9taWNfZmV0Y2hfYWRkKHZvbGF0aWxlIF9fYXRvbWlj
X2Jhc2U8X0lUcD4qIF9fYSwgX0lUcCBfX2kpIG5vZXhjZXB0CiAgICB7IHJldHVybiBhdG9taWNf
ZmV0Y2hfYWRkX2V4cGxpY2l0KF9fYSwgX19pLCBtZW1vcnlfb3JkZXJfc2VxX2NzdCk7IH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGluZSBfSVRwCiAgICBhdG9taWNfZmV0Y2hf
c3ViKF9fYXRvbWljX2Jhc2U8X0lUcD4qIF9fYSwgX0lUcCBfX2kpIG5vZXhjZXB0CiAgICB7IHJl
dHVybiBhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0KF9fYSwgX19pLCBtZW1vcnlfb3JkZXJfc2Vx
X2NzdCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGluZSBfSVRwCiAgICBh
dG9taWNfZmV0Y2hfc3ViKHZvbGF0aWxlIF9fYXRvbWljX2Jhc2U8X0lUcD4qIF9fYSwgX0lUcCBf
X2kpIG5vZXhjZXB0CiAgICB7IHJldHVybiBhdG9taWNfZmV0Y2hfc3ViX2V4cGxpY2l0KF9fYSwg
X19pLCBtZW1vcnlfb3JkZXJfc2VxX2NzdCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4K
ICAgIGlubGluZSBfSVRwCiAgICBhdG9taWNfZmV0Y2hfYW5kKF9fYXRvbWljX2Jhc2U8X0lUcD4q
IF9fYSwgX0lUcCBfX2kpIG5vZXhjZXB0CiAgICB7IHJldHVybiBhdG9taWNfZmV0Y2hfYW5kX2V4
cGxpY2l0KF9fYSwgX19pLCBtZW1vcnlfb3JkZXJfc2VxX2NzdCk7IH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0lUcD4KICAgIGlubGluZSBfSVRwCiAgICBhdG9taWNfZmV0Y2hfYW5kKHZvbGF0aWxl
IF9fYXRvbWljX2Jhc2U8X0lUcD4qIF9fYSwgX0lUcCBfX2kpIG5vZXhjZXB0CiAgICB7IHJldHVy
biBhdG9taWNfZmV0Y2hfYW5kX2V4cGxpY2l0KF9fYSwgX19pLCBtZW1vcnlfb3JkZXJfc2VxX2Nz
dCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGluZSBfSVRwCiAgICBhdG9t
aWNfZmV0Y2hfb3IoX19hdG9taWNfYmFzZTxfSVRwPiogX19hLCBfSVRwIF9faSkgbm9leGNlcHQK
ICAgIHsgcmV0dXJuIGF0b21pY19mZXRjaF9vcl9leHBsaWNpdChfX2EsIF9faSwgbWVtb3J5X29y
ZGVyX3NlcV9jc3QpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JVHA+CiAgICBpbmxpbmUgX0lU
cAogICAgYXRvbWljX2ZldGNoX29yKHZvbGF0aWxlIF9fYXRvbWljX2Jhc2U8X0lUcD4qIF9fYSwg
X0lUcCBfX2kpIG5vZXhjZXB0CiAgICB7IHJldHVybiBhdG9taWNfZmV0Y2hfb3JfZXhwbGljaXQo
X19hLCBfX2ksIG1lbW9yeV9vcmRlcl9zZXFfY3N0KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
SVRwPgogICAgaW5saW5lIF9JVHAKICAgIGF0b21pY19mZXRjaF94b3IoX19hdG9taWNfYmFzZTxf
SVRwPiogX19hLCBfSVRwIF9faSkgbm9leGNlcHQKICAgIHsgcmV0dXJuIGF0b21pY19mZXRjaF94
b3JfZXhwbGljaXQoX19hLCBfX2ksIG1lbW9yeV9vcmRlcl9zZXFfY3N0KTsgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSVRwPgogICAgaW5saW5lIF9JVHAKICAgIGF0b21pY19mZXRjaF94b3Iodm9s
YXRpbGUgX19hdG9taWNfYmFzZTxfSVRwPiogX19hLCBfSVRwIF9faSkgbm9leGNlcHQKICAgIHsg
cmV0dXJuIGF0b21pY19mZXRjaF94b3JfZXhwbGljaXQoX19hLCBfX2ksIG1lbW9yeV9vcmRlcl9z
ZXFfY3N0KTsgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JVHA+CiAgICBpbmxpbmUgX0lUcCoK
ICAgIGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQoYXRvbWljPF9JVHAqPiogX19hLCBwdHJkaWZm
X3QgX19kLAogICAgICAgICBtZW1vcnlfb3JkZXIgX19tKSBub2V4Y2VwdAogICAgeyByZXR1cm4g
X19hLT5mZXRjaF9hZGQoX19kLCBfX20pOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JVHA+CiAg
ICBpbmxpbmUgX0lUcCoKICAgIGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQodm9sYXRpbGUgYXRv
bWljPF9JVHAqPiogX19hLCBwdHJkaWZmX3QgX19kLAogICAgICAgICBtZW1vcnlfb3JkZXIgX19t
KSBub2V4Y2VwdAogICAgeyByZXR1cm4gX19hLT5mZXRjaF9hZGQoX19kLCBfX20pOyB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9JVHA+CiAgICBpbmxpbmUgX0lUcCoKICAgIGF0b21pY19mZXRjaF9h
ZGQodm9sYXRpbGUgYXRvbWljPF9JVHAqPiogX19hLCBwdHJkaWZmX3QgX19kKSBub2V4Y2VwdAog
ICAgeyByZXR1cm4gX19hLT5mZXRjaF9hZGQoX19kKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
SVRwPgogICAgaW5saW5lIF9JVHAqCiAgICBhdG9taWNfZmV0Y2hfYWRkKGF0b21pYzxfSVRwKj4q
IF9fYSwgcHRyZGlmZl90IF9fZCkgbm9leGNlcHQKICAgIHsgcmV0dXJuIF9fYS0+ZmV0Y2hfYWRk
KF9fZCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGluZSBfSVRwKgogICAg
YXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWM8X0lUcCo+KiBfX2EsCiAg
ICAgICAgIHB0cmRpZmZfdCBfX2QsIG1lbW9yeV9vcmRlciBfX20pIG5vZXhjZXB0CiAgICB7IHJl
dHVybiBfX2EtPmZldGNoX3N1YihfX2QsIF9fbSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lU
cD4KICAgIGlubGluZSBfSVRwKgogICAgYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdChhdG9taWM8
X0lUcCo+KiBfX2EsIHB0cmRpZmZfdCBfX2QsCiAgICAgICAgIG1lbW9yeV9vcmRlciBfX20pIG5v
ZXhjZXB0CiAgICB7IHJldHVybiBfX2EtPmZldGNoX3N1YihfX2QsIF9fbSk7IH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0lUcD4KICAgIGlubGluZSBfSVRwKgogICAgYXRvbWljX2ZldGNoX3N1Yih2
b2xhdGlsZSBhdG9taWM8X0lUcCo+KiBfX2EsIHB0cmRpZmZfdCBfX2QpIG5vZXhjZXB0CiAgICB7
IHJldHVybiBfX2EtPmZldGNoX3N1YihfX2QpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JVHA+
CiAgICBpbmxpbmUgX0lUcCoKICAgIGF0b21pY19mZXRjaF9zdWIoYXRvbWljPF9JVHAqPiogX19h
LCBwdHJkaWZmX3QgX19kKSBub2V4Y2VwdAogICAgeyByZXR1cm4gX19hLT5mZXRjaF9zdWIoX19k
KTsgfQoKCgp9CiMgMzAgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaCIgMgojIDQwICIu
Li8uLi9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgiCm5hbWVzcGFjZSBXVEYgewojIDQ5ICIuLi8u
Li9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgiCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0cnVjdCBB
dG9taWMgewoKCgoKICAgIFQgbG9hZChzdGQ6Om1lbW9yeV9vcmRlciBvcmRlciA9IHN0ZDo6bWVt
b3J5X29yZGVyX3NlcV9jc3QpIGNvbnN0IHsgcmV0dXJuIHZhbHVlLmxvYWQob3JkZXIpOyB9Cgog
ICAgdm9pZCBzdG9yZShUIGRlc2lyZWQsIHN0ZDo6bWVtb3J5X29yZGVyIG9yZGVyID0gc3RkOjpt
ZW1vcnlfb3JkZXJfc2VxX2NzdCkgeyB2YWx1ZS5zdG9yZShkZXNpcmVkLCBvcmRlcik7IH0KCiAg
ICBib29sIGNvbXBhcmVFeGNoYW5nZVdlYWsoVCBleHBlY3RlZCwgVCBkZXNpcmVkLCBzdGQ6Om1l
bW9yeV9vcmRlciBvcmRlciA9IHN0ZDo6bWVtb3J5X29yZGVyX3NlcV9jc3QpCiAgICB7CgoKCgoK
ICAgICAgICBUIGV4cGVjdGVkT3JBY3R1YWwgPSBleHBlY3RlZDsKICAgICAgICByZXR1cm4gdmFs
dWUuY29tcGFyZV9leGNoYW5nZV93ZWFrKGV4cGVjdGVkT3JBY3R1YWwsIGRlc2lyZWQsIG9yZGVy
KTsKICAgIH0KCiAgICBib29sIGNvbXBhcmVFeGNoYW5nZVN0cm9uZyhUIGV4cGVjdGVkLCBUIGRl
c2lyZWQsIHN0ZDo6bWVtb3J5X29yZGVyIG9yZGVyID0gc3RkOjptZW1vcnlfb3JkZXJfc2VxX2Nz
dCkKICAgIHsKCgoKCiAgICAgICAgVCBleHBlY3RlZE9yQWN0dWFsID0gZXhwZWN0ZWQ7CiAgICAg
ICAgcmV0dXJuIHZhbHVlLmNvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKGV4cGVjdGVkT3JBY3R1YWws
IGRlc2lyZWQsIG9yZGVyKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgogICAgVCBl
eGNoYW5nZUFuZEFkZChVIGFkZGVuZCwgc3RkOjptZW1vcnlfb3JkZXIgb3JkZXIgPSBzdGQ6Om1l
bW9yeV9vcmRlcl9zZXFfY3N0KQogICAgewoKCgoKICAgICAgICByZXR1cm4gdmFsdWUuZmV0Y2hf
YWRkKGFkZGVuZCwgb3JkZXIpOwogICAgfQoKICAgIFQgZXhjaGFuZ2UoVCBuZXdWYWx1ZSwgc3Rk
OjptZW1vcnlfb3JkZXIgb3JkZXIgPSBzdGQ6Om1lbW9yeV9vcmRlcl9zZXFfY3N0KQogICAgewoK
CgoKICAgICAgICByZXR1cm4gdmFsdWUuZXhjaGFuZ2UobmV3VmFsdWUsIG9yZGVyKTsKICAgIH0K
CiAgICBzdGQ6OmF0b21pYzxUPiB2YWx1ZTsKfTsKCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgppbmxp
bmUgYm9vbCB3ZWFrQ29tcGFyZUFuZFN3YXAodm9sYXRpbGUgVCogbG9jYXRpb24sIFQgZXhwZWN0
ZWQsIFQgbmV3VmFsdWUpCnsKICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8QXRvbWljPFQ+Kj4obG9j
YXRpb24pLT5jb21wYXJlRXhjaGFuZ2VXZWFrKGV4cGVjdGVkLCBuZXdWYWx1ZSwgc3RkOjptZW1v
cnlfb3JkZXJfcmVsYXhlZCk7Cn0KCgoKCmlubGluZSB2b2lkIGNvbXBpbGVyRmVuY2UoKQp7CgoK
CiAgICBhc20gdm9sYXRpbGUoIiIgOjo6ICJtZW1vcnkiKTsKCn0KCgoKCgppbmxpbmUgdm9pZCBh
cm1WN19kbWIoKQp7CiAgICBhc20gdm9sYXRpbGUoImRtYiBzeSIgOjo6ICJtZW1vcnkiKTsKfQoK
CmlubGluZSB2b2lkIGFybVY3X2RtYl9zdCgpCnsKICAgIGFzbSB2b2xhdGlsZSgiZG1iIHN0IiA6
OjogIm1lbW9yeSIpOwp9CgppbmxpbmUgdm9pZCBsb2FkTG9hZEZlbmNlKCkgeyBhcm1WN19kbWIo
KTsgfQppbmxpbmUgdm9pZCBsb2FkU3RvcmVGZW5jZSgpIHsgYXJtVjdfZG1iKCk7IH0KaW5saW5l
IHZvaWQgc3RvcmVMb2FkRmVuY2UoKSB7IGFybVY3X2RtYigpOyB9CmlubGluZSB2b2lkIHN0b3Jl
U3RvcmVGZW5jZSgpIHsgYXJtVjdfZG1iX3N0KCk7IH0KaW5saW5lIHZvaWQgbWVtb3J5QmFycmll
ckFmdGVyTG9jaygpIHsgYXJtVjdfZG1iKCk7IH0KaW5saW5lIHZvaWQgbWVtb3J5QmFycmllckJl
Zm9yZVVubG9jaygpIHsgYXJtVjdfZG1iKCk7IH0KIyAxNzYgIi4uLy4uL1NvdXJjZS9XVEYvd3Rm
L0F0b21pY3MuaCIKfQoKdXNpbmcgV1RGOjpBdG9taWM7CiMgMzAgIi4uLy4uL1NvdXJjZS9XVEYv
d3RmL0xvY2suaCIgMgoKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrZXIuaCIgMQojIDI5
ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrZXIuaCIKI2RlZmluZSBMb2NrZXJfaCAKCgoKbmFt
ZXNwYWNlIFdURiB7Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgTG9ja2VyIHsKICAgIHBy
aXZhdGU6IExvY2tlcihjb25zdCBMb2NrZXImKSA9IGRlbGV0ZTsgTG9ja2VyJiBvcGVyYXRvcj0o
Y29uc3QgTG9ja2VyJikgPSBkZWxldGU7OwpwdWJsaWM6CiAgICBleHBsaWNpdCBMb2NrZXIoVCYg
bG9ja2FibGUpIDogbV9sb2NrYWJsZSgmbG9ja2FibGUpIHsgbG9jaygpOyB9CiAgICBleHBsaWNp
dCBMb2NrZXIoVCogbG9ja2FibGUpIDogbV9sb2NrYWJsZShsb2NrYWJsZSkgeyBsb2NrKCk7IH0K
CiAgICBlbnVtIE5vTG9ja2luZ05lY2Vzc2FyeVRhZyB7IE5vTG9ja2luZ05lY2Vzc2FyeSB9OwoK
CgoKCiAgICBleHBsaWNpdCBMb2NrZXIoTm9Mb2NraW5nTmVjZXNzYXJ5VGFnKSA6IG1fbG9ja2Fi
bGUobnVsbHB0cikgeyB9CgogICAgfkxvY2tlcigpCiAgICB7CiAgICAgICAgaWYgKG1fbG9ja2Fi
bGUpCiAgICAgICAgICAgIG1fbG9ja2FibGUtPnVubG9jaygpOwogICAgfQoKICAgIHZvaWQgdW5s
b2NrRWFybHkoKQogICAgewogICAgICAgIG1fbG9ja2FibGUtPnVubG9jaygpOwogICAgICAgIG1f
bG9ja2FibGUgPSAwOwogICAgfQpwcml2YXRlOgogICAgdm9pZCBsb2NrKCkKICAgIHsKICAgICAg
ICBpZiAobV9sb2NrYWJsZSkKICAgICAgICAgICAgbV9sb2NrYWJsZS0+bG9jaygpOwogICAgfQoK
ICAgIFQqIG1fbG9ja2FibGU7Cn07Cgp9Cgp1c2luZyBXVEY6OkxvY2tlcjsKIyAzMiAiLi4vLi4v
U291cmNlL1dURi93dGYvTG9jay5oIiAyCgoKbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpzdHJ1
Y3QgTG9ja0luc3BlY3RvcjsKfTsKCm5hbWVzcGFjZSBXVEYgewojIDQ4ICIuLi8uLi9Tb3VyY2Uv
V1RGL3d0Zi9Mb2NrLmgiCnN0cnVjdCBMb2NrQmFzZSB7CiAgICB2b2lkIGxvY2soKQogICAgewog
ICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKG1fYnl0ZS5jb21wYXJlRXhjaGFuZ2VXZWFr
KDAsIGlzSGVsZEJpdCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSkpLCAxKSkgewoKICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbG9ja1Nsb3coKTsKICAgIH0KCiAgICBi
b29sIHRyeUxvY2soKQogICAgewogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgdWludDhf
dCBjdXJyZW50Qnl0ZVZhbHVlID0gbV9ieXRlLmxvYWQoKTsKICAgICAgICAgICAgaWYgKGN1cnJl
bnRCeXRlVmFsdWUgJiBpc0hlbGRCaXQpCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgIGlmIChtX2J5dGUuY29tcGFyZUV4Y2hhbmdlV2VhayhjdXJyZW50Qnl0ZVZhbHVl
LCBjdXJyZW50Qnl0ZVZhbHVlIHwgaXNIZWxkQml0KSkKICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgIH0KICAgIH0KCgogICAgYm9vbCB0cnlfbG9jaygpCiAgICB7CiAgICAgICAg
cmV0dXJuIHRyeUxvY2soKTsKICAgIH0KCiAgICB2b2lkIHVubG9jaygpCiAgICB7CiAgICAgICAg
aWYgKF9fYnVpbHRpbl9leHBlY3QoISEobV9ieXRlLmNvbXBhcmVFeGNoYW5nZVdlYWsoaXNIZWxk
Qml0LCAwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKSksIDEpKSB7CgogICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgfQoKICAgICAgICB1bmxvY2tTbG93KCk7CiAgICB9CgogICAgYm9vbCBp
c0hlbGQoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX2J5dGUubG9hZChzdGQ6Om1lbW9y
eV9vcmRlcl9hY3F1aXJlKSAmIGlzSGVsZEJpdDsKICAgIH0KCiAgICBib29sIGlzTG9ja2VkKCkg
Y29uc3QKICAgIHsKICAgICAgICByZXR1cm4gaXNIZWxkKCk7CiAgICB9Cgpwcm90ZWN0ZWQ6CiAg
ICBmcmllbmQgc3RydWN0IFRlc3RXZWJLaXRBUEk6OkxvY2tJbnNwZWN0b3I7CgogICAgc3RhdGlj
IGNvbnN0IHVpbnQ4X3QgaXNIZWxkQml0ID0gMTsKICAgIHN0YXRpYyBjb25zdCB1aW50OF90IGhh
c1BhcmtlZEJpdCA9IDI7CgogICAgdm9pZCBsb2NrU2xvdygpOwogICAgdm9pZCB1bmxvY2tTbG93
KCk7CgoKICAgIGJvb2wgaXNGdWxseVJlc2V0KCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4g
IW1fYnl0ZS5sb2FkKCk7CiAgICB9CgogICAgQXRvbWljPHVpbnQ4X3Q+IG1fYnl0ZTsKfTsKCmNs
YXNzIExvY2sgOiBwdWJsaWMgTG9ja0Jhc2UgewogICAgcHJpdmF0ZTogTG9jayhjb25zdCBMb2Nr
JikgPSBkZWxldGU7IExvY2smIG9wZXJhdG9yPShjb25zdCBMb2NrJikgPSBkZWxldGU7OwogICAg
cHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9
IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNp
emUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHAp
OyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFz
dE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6
OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZv
aWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHByaXZhdGU6IHR5
cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87CnB1
YmxpYzoKICAgIExvY2soKQogICAgewogICAgICAgIG1fYnl0ZS5zdG9yZSgwLCBzdGQ6Om1lbW9y
eV9vcmRlcl9yZWxheGVkKTsKICAgIH0KfTsKCnR5cGVkZWYgTG9ja0Jhc2UgU3RhdGljTG9jazsK
dHlwZWRlZiBMb2NrZXI8TG9ja0Jhc2U+IExvY2tIb2xkZXI7Cgp9Cgp1c2luZyBXVEY6OkxvY2s7
CnVzaW5nIFdURjo6TG9ja0hvbGRlcjsKdXNpbmcgV1RGOjpTdGF0aWNMb2NrOwojIDMzICIuLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCIgMgojIDEg
Ii4uLy4uL1NvdXJjZS9XVEYvd3RmL01ldGFBbGxvY2F0b3JIYW5kbGUuaCIgMQojIDMwICIuLi8u
Li9Tb3VyY2UvV1RGL3d0Zi9NZXRhQWxsb2NhdG9ySGFuZGxlLmgiCiNkZWZpbmUgV1RGX01ldGFB
bGxvY2F0b3JIYW5kbGVfaCAKCgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1JlZEJsYWNrVHJl
ZS5oIiAxCiMgMzAgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1JlZEJsYWNrVHJlZS5oIgojZGVmaW5l
IFJlZEJsYWNrVHJlZV9oIAoKCgoKbmFtZXNwYWNlIFdURiB7CiMgNDQgIi4uLy4uL1NvdXJjZS9X
VEYvd3RmL1JlZEJsYWNrVHJlZS5oIgp0ZW1wbGF0ZTxjbGFzcyBOb2RlVHlwZSwgdHlwZW5hbWUg
S2V5VHlwZT4KY2xhc3MgUmVkQmxhY2tUcmVlIHsKICAgIHByaXZhdGU6IFJlZEJsYWNrVHJlZShj
b25zdCBSZWRCbGFja1RyZWUmKSA9IGRlbGV0ZTsgUmVkQmxhY2tUcmVlJiBvcGVyYXRvcj0oY29u
c3QgUmVkQmxhY2tUcmVlJikgPSBkZWxldGU7Owpwcml2YXRlOgogICAgZW51bSBDb2xvciB7CiAg
ICAgICAgUmVkID0gMSwKICAgICAgICBCbGFjawogICAgfTsKCnB1YmxpYzoKICAgIGNsYXNzIE5v
ZGUgewogICAgICAgIGZyaWVuZCBjbGFzcyBSZWRCbGFja1RyZWU7CgogICAgcHVibGljOgogICAg
ICAgIGNvbnN0IE5vZGVUeXBlKiBzdWNjZXNzb3IoKSBjb25zdAogICAgICAgIHsKICAgICAgICAg
ICAgY29uc3QgTm9kZSogeCA9IHRoaXM7CiAgICAgICAgICAgIGlmICh4LT5yaWdodCgpKQogICAg
ICAgICAgICAgICAgcmV0dXJuIHRyZWVNaW5pbXVtKHgtPnJpZ2h0KCkpOwogICAgICAgICAgICBj
b25zdCBOb2RlVHlwZSogeSA9IHgtPnBhcmVudCgpOwogICAgICAgICAgICB3aGlsZSAoeSAmJiB4
ID09IHktPnJpZ2h0KCkpIHsKICAgICAgICAgICAgICAgIHggPSB5OwogICAgICAgICAgICAgICAg
eSA9IHktPnBhcmVudCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB5OwogICAg
ICAgIH0KCiAgICAgICAgY29uc3QgTm9kZVR5cGUqIHByZWRlY2Vzc29yKCkgY29uc3QKICAgICAg
ICB7CiAgICAgICAgICAgIGNvbnN0IE5vZGUqIHggPSB0aGlzOwogICAgICAgICAgICBpZiAoeC0+
bGVmdCgpKQogICAgICAgICAgICAgICAgcmV0dXJuIHRyZWVNYXhpbXVtKHgtPmxlZnQoKSk7CiAg
ICAgICAgICAgIGNvbnN0IE5vZGVUeXBlKiB5ID0geC0+cGFyZW50KCk7CiAgICAgICAgICAgIHdo
aWxlICh5ICYmIHggPT0geS0+bGVmdCgpKSB7CiAgICAgICAgICAgICAgICB4ID0geTsKICAgICAg
ICAgICAgICAgIHkgPSB5LT5wYXJlbnQoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1
cm4geTsKICAgICAgICB9CgogICAgICAgIE5vZGVUeXBlKiBzdWNjZXNzb3IoKQogICAgICAgIHsK
ICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZVR5cGUqPihjb25zdF9jYXN0PGNvbnN0
IE5vZGUqPih0aGlzKS0+c3VjY2Vzc29yKCkpOwogICAgICAgIH0KCiAgICAgICAgTm9kZVR5cGUq
IHByZWRlY2Vzc29yKCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PE5v
ZGVUeXBlKj4oY29uc3RfY2FzdDxjb25zdCBOb2RlKj4odGhpcyktPnByZWRlY2Vzc29yKCkpOwog
ICAgICAgIH0KCiAgICBwcml2YXRlOgogICAgICAgIHZvaWQgcmVzZXQoKQogICAgICAgIHsKICAg
ICAgICAgICAgbV9sZWZ0ID0gMDsKICAgICAgICAgICAgbV9yaWdodCA9IDA7CiAgICAgICAgICAg
IG1fcGFyZW50QW5kUmVkID0gMTsKICAgICAgICB9CgoKCiAgICAgICAgTm9kZVR5cGUqIHBhcmVu
dCgpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxO
b2RlVHlwZSo+KG1fcGFyZW50QW5kUmVkICYgfnN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOwog
ICAgICAgIH0KCiAgICAgICAgdm9pZCBzZXRQYXJlbnQoTm9kZVR5cGUqIG5ld1BhcmVudCkKICAg
ICAgICB7CiAgICAgICAgICAgIG1fcGFyZW50QW5kUmVkID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KG5ld1BhcmVudCkgfCAobV9wYXJlbnRBbmRSZWQgJiAxKTsKICAgICAgICB9CgogICAg
ICAgIE5vZGVUeXBlKiBsZWZ0KCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBt
X2xlZnQ7CiAgICAgICAgfQoKICAgICAgICB2b2lkIHNldExlZnQoTm9kZVR5cGUqIG5vZGUpCiAg
ICAgICAgewogICAgICAgICAgICBtX2xlZnQgPSBub2RlOwogICAgICAgIH0KCiAgICAgICAgTm9k
ZVR5cGUqIHJpZ2h0KCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBtX3JpZ2h0
OwogICAgICAgIH0KCiAgICAgICAgdm9pZCBzZXRSaWdodChOb2RlVHlwZSogbm9kZSkKICAgICAg
ICB7CiAgICAgICAgICAgIG1fcmlnaHQgPSBub2RlOwogICAgICAgIH0KCiAgICAgICAgQ29sb3Ig
Y29sb3IoKSBjb25zdAogICAgICAgIHsKICAgICAgICAgICAgaWYgKG1fcGFyZW50QW5kUmVkICYg
MSkKICAgICAgICAgICAgICAgIHJldHVybiBSZWQ7CiAgICAgICAgICAgIHJldHVybiBCbGFjazsK
ICAgICAgICB9CgogICAgICAgIHZvaWQgc2V0Q29sb3IoQ29sb3IgdmFsdWUpCiAgICAgICAgewog
ICAgICAgICAgICBpZiAodmFsdWUgPT0gUmVkKQogICAgICAgICAgICAgICAgbV9wYXJlbnRBbmRS
ZWQgfD0gMTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgbV9wYXJlbnRBbmRSZWQg
Jj0gfnN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSk7CiAgICAgICAgfQoKICAgICAgICBOb2RlVHlw
ZSogbV9sZWZ0OwogICAgICAgIE5vZGVUeXBlKiBtX3JpZ2h0OwogICAgICAgIHVpbnRwdHJfdCBt
X3BhcmVudEFuZFJlZDsKICAgIH07CgogICAgUmVkQmxhY2tUcmVlKCkKICAgICAgICA6IG1fcm9v
dCgwKQogICAgewogICAgfQoKICAgIHZvaWQgaW5zZXJ0KE5vZGVUeXBlKiB4KQogICAgewogICAg
ICAgIHgtPnJlc2V0KCk7CiAgICAgICAgdHJlZUluc2VydCh4KTsKICAgICAgICB4LT5zZXRDb2xv
cihSZWQpOwoKICAgICAgICB3aGlsZSAoeCAhPSBtX3Jvb3QgJiYgeC0+cGFyZW50KCktPmNvbG9y
KCkgPT0gUmVkKSB7CiAgICAgICAgICAgIGlmICh4LT5wYXJlbnQoKSA9PSB4LT5wYXJlbnQoKS0+
cGFyZW50KCktPmxlZnQoKSkgewogICAgICAgICAgICAgICAgTm9kZVR5cGUqIHkgPSB4LT5wYXJl
bnQoKS0+cGFyZW50KCktPnJpZ2h0KCk7CiAgICAgICAgICAgICAgICBpZiAoeSAmJiB5LT5jb2xv
cigpID09IFJlZCkgewoKICAgICAgICAgICAgICAgICAgICB4LT5wYXJlbnQoKS0+c2V0Q29sb3Io
QmxhY2spOwogICAgICAgICAgICAgICAgICAgIHktPnNldENvbG9yKEJsYWNrKTsKICAgICAgICAg
ICAgICAgICAgICB4LT5wYXJlbnQoKS0+cGFyZW50KCktPnNldENvbG9yKFJlZCk7CiAgICAgICAg
ICAgICAgICAgICAgeCA9IHgtPnBhcmVudCgpLT5wYXJlbnQoKTsKICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHggPT0geC0+cGFyZW50KCktPnJpZ2h0KCkp
IHsKCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSB4LT5wYXJlbnQoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgbGVmdFJvdGF0ZSh4KTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICAgICAgICAgIHgtPnBhcmVudCgpLT5zZXRDb2xvcihCbGFjayk7CiAgICAgICAgICAgICAg
ICAgICAgeC0+cGFyZW50KCktPnBhcmVudCgpLT5zZXRDb2xvcihSZWQpOwogICAgICAgICAgICAg
ICAgICAgIHJpZ2h0Um90YXRlKHgtPnBhcmVudCgpLT5wYXJlbnQoKSk7CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICAgICAgTm9kZVR5cGUqIHkgPSB4
LT5wYXJlbnQoKS0+cGFyZW50KCktPmxlZnQoKTsKICAgICAgICAgICAgICAgIGlmICh5ICYmIHkt
PmNvbG9yKCkgPT0gUmVkKSB7CgogICAgICAgICAgICAgICAgICAgIHgtPnBhcmVudCgpLT5zZXRD
b2xvcihCbGFjayk7CiAgICAgICAgICAgICAgICAgICAgeS0+c2V0Q29sb3IoQmxhY2spOwogICAg
ICAgICAgICAgICAgICAgIHgtPnBhcmVudCgpLT5wYXJlbnQoKS0+c2V0Q29sb3IoUmVkKTsKICAg
ICAgICAgICAgICAgICAgICB4ID0geC0+cGFyZW50KCktPnBhcmVudCgpOwogICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoeCA9PSB4LT5wYXJlbnQoKS0+bGVm
dCgpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICB4ID0geC0+cGFyZW50KCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJpZ2h0Um90YXRlKHgpOwogICAgICAgICAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgICAgICAgICAgeC0+cGFyZW50KCktPnNldENvbG9yKEJsYWNrKTsKICAgICAgICAg
ICAgICAgICAgICB4LT5wYXJlbnQoKS0+cGFyZW50KCktPnNldENvbG9yKFJlZCk7CiAgICAgICAg
ICAgICAgICAgICAgbGVmdFJvdGF0ZSh4LT5wYXJlbnQoKS0+cGFyZW50KCkpOwogICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBtX3Jvb3QtPnNldENvbG9y
KEJsYWNrKTsKICAgIH0KCiAgICBOb2RlVHlwZSogcmVtb3ZlKE5vZGVUeXBlKiB6KQogICAgewog
ICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CgoKICAgICAgICBOb2RlVHlwZSog
eTsKICAgICAgICBpZiAoIXotPmxlZnQoKSB8fCAhei0+cmlnaHQoKSkKICAgICAgICAgICAgeSA9
IHo7CiAgICAgICAgZWxzZQogICAgICAgICAgICB5ID0gei0+c3VjY2Vzc29yKCk7CgoKICAgICAg
ICBOb2RlVHlwZSogeDsKICAgICAgICBpZiAoeS0+bGVmdCgpKQogICAgICAgICAgICB4ID0geS0+
bGVmdCgpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgeCA9IHktPnJpZ2h0KCk7CgoKCiAgICAg
ICAgTm9kZVR5cGUqIHhQYXJlbnQ7CiAgICAgICAgaWYgKHgpIHsKICAgICAgICAgICAgeC0+c2V0
UGFyZW50KHktPnBhcmVudCgpKTsKICAgICAgICAgICAgeFBhcmVudCA9IHgtPnBhcmVudCgpOwog
ICAgICAgIH0gZWxzZQogICAgICAgICAgICB4UGFyZW50ID0geS0+cGFyZW50KCk7CiAgICAgICAg
aWYgKCF5LT5wYXJlbnQoKSkKICAgICAgICAgICAgbV9yb290ID0geDsKICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgaWYgKHkgPT0geS0+cGFyZW50KCktPmxlZnQoKSkKICAgICAgICAgICAgICAg
IHktPnBhcmVudCgpLT5zZXRMZWZ0KHgpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICB5LT5wYXJlbnQoKS0+c2V0UmlnaHQoeCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoeSAhPSB6
KSB7CiAgICAgICAgICAgIGlmICh5LT5jb2xvcigpID09IEJsYWNrKQogICAgICAgICAgICAgICAg
cmVtb3ZlRml4dXAoeCwgeFBhcmVudCk7CgogICAgICAgICAgICB5LT5zZXRQYXJlbnQoei0+cGFy
ZW50KCkpOwogICAgICAgICAgICB5LT5zZXRDb2xvcih6LT5jb2xvcigpKTsKICAgICAgICAgICAg
eS0+c2V0TGVmdCh6LT5sZWZ0KCkpOwogICAgICAgICAgICB5LT5zZXRSaWdodCh6LT5yaWdodCgp
KTsKCiAgICAgICAgICAgIGlmICh6LT5sZWZ0KCkpCiAgICAgICAgICAgICAgICB6LT5sZWZ0KCkt
PnNldFBhcmVudCh5KTsKICAgICAgICAgICAgaWYgKHotPnJpZ2h0KCkpCiAgICAgICAgICAgICAg
ICB6LT5yaWdodCgpLT5zZXRQYXJlbnQoeSk7CiAgICAgICAgICAgIGlmICh6LT5wYXJlbnQoKSkg
ewogICAgICAgICAgICAgICAgaWYgKHotPnBhcmVudCgpLT5sZWZ0KCkgPT0geikKICAgICAgICAg
ICAgICAgICAgICB6LT5wYXJlbnQoKS0+c2V0TGVmdCh5KTsKICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICB6LT5wYXJlbnQoKS0+c2V0UmlnaHQoeSk7CiAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgICAgICAgICBtX3Jv
b3QgPSB5OwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmICh5LT5jb2xvcigpID09IEJs
YWNrKQogICAgICAgICAgICByZW1vdmVGaXh1cCh4LCB4UGFyZW50KTsKCiAgICAgICAgcmV0dXJu
IHo7CiAgICB9CgogICAgTm9kZVR5cGUqIHJlbW92ZShjb25zdCBLZXlUeXBlJiBrZXkpCiAgICB7
CiAgICAgICAgTm9kZVR5cGUqIHJlc3VsdCA9IGZpbmRFeGFjdChrZXkpOwogICAgICAgIGlmICgh
cmVzdWx0KQogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICByZXR1cm4gcmVtb3ZlKHJlc3Vs
dCk7CiAgICB9CgogICAgTm9kZVR5cGUqIGZpbmRFeGFjdChjb25zdCBLZXlUeXBlJiBrZXkpIGNv
bnN0CiAgICB7CiAgICAgICAgZm9yIChOb2RlVHlwZSogY3VycmVudCA9IG1fcm9vdDsgY3VycmVu
dDspIHsKICAgICAgICAgICAgaWYgKGN1cnJlbnQtPmtleSgpID09IGtleSkKICAgICAgICAgICAg
ICAgIHJldHVybiBjdXJyZW50OwogICAgICAgICAgICBpZiAoa2V5IDwgY3VycmVudC0+a2V5KCkp
CiAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+bGVmdCgpOwogICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+cmlnaHQoKTsKICAgICAgICB9
CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgTm9kZVR5cGUqIGZpbmRMZWFzdEdyZWF0ZXJU
aGFuT3JFcXVhbChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0CiAgICB7CiAgICAgICAgTm9kZVR5
cGUqIGJlc3QgPSAwOwogICAgICAgIGZvciAoTm9kZVR5cGUqIGN1cnJlbnQgPSBtX3Jvb3Q7IGN1
cnJlbnQ7KSB7CiAgICAgICAgICAgIGlmIChjdXJyZW50LT5rZXkoKSA9PSBrZXkpCiAgICAgICAg
ICAgICAgICByZXR1cm4gY3VycmVudDsKICAgICAgICAgICAgaWYgKGN1cnJlbnQtPmtleSgpIDwg
a2V5KQogICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnJpZ2h0KCk7CiAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgYmVzdCA9IGN1cnJlbnQ7CiAgICAgICAgICAgICAg
ICBjdXJyZW50ID0gY3VycmVudC0+bGVmdCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAg
ICAgIHJldHVybiBiZXN0OwogICAgfQoKICAgIE5vZGVUeXBlKiBmaW5kR3JlYXRlc3RMZXNzVGhh
bk9yRXF1YWwoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdAogICAgewogICAgICAgIE5vZGVUeXBl
KiBiZXN0ID0gMDsKICAgICAgICBmb3IgKE5vZGVUeXBlKiBjdXJyZW50ID0gbV9yb290OyBjdXJy
ZW50OykgewogICAgICAgICAgICBpZiAoY3VycmVudC0+a2V5KCkgPT0ga2V5KQogICAgICAgICAg
ICAgICAgcmV0dXJuIGN1cnJlbnQ7CiAgICAgICAgICAgIGlmIChjdXJyZW50LT5rZXkoKSA+IGtl
eSkKICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5sZWZ0KCk7CiAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgYmVzdCA9IGN1cnJlbnQ7CiAgICAgICAgICAgICAgICBj
dXJyZW50ID0gY3VycmVudC0+cmlnaHQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAg
ICByZXR1cm4gYmVzdDsKICAgIH0KCiAgICBOb2RlVHlwZSogZmlyc3QoKSBjb25zdAogICAgewog
ICAgICAgIGlmICghbV9yb290KQogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICByZXR1cm4g
dHJlZU1pbmltdW0obV9yb290KTsKICAgIH0KCiAgICBOb2RlVHlwZSogbGFzdCgpIGNvbnN0CiAg
ICB7CiAgICAgICAgaWYgKCFtX3Jvb3QpCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIHJl
dHVybiB0cmVlTWF4aW11bShtX3Jvb3QpOwogICAgfQoKCiAgICBzaXplX3Qgc2l6ZSgpCiAgICB7
CiAgICAgICAgc2l6ZV90IHJlc3VsdCA9IDA7CiAgICAgICAgZm9yIChOb2RlVHlwZSogY3VycmVu
dCA9IGZpcnN0KCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5zdWNjZXNzb3IoKSkKICAg
ICAgICAgICAgcmVzdWx0Kys7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCgogICAgYm9v
bCBpc0VtcHR5KCkKICAgIHsKICAgICAgICByZXR1cm4gIW1fcm9vdDsKICAgIH0KCnByaXZhdGU6
CgoKICAgIHN0YXRpYyBOb2RlVHlwZSogdHJlZU1pbmltdW0oTm9kZVR5cGUqIHgpCiAgICB7CiAg
ICAgICAgd2hpbGUgKHgtPmxlZnQoKSkKICAgICAgICAgICAgeCA9IHgtPmxlZnQoKTsKICAgICAg
ICByZXR1cm4geDsKICAgIH0KCiAgICBzdGF0aWMgTm9kZVR5cGUqIHRyZWVNYXhpbXVtKE5vZGVU
eXBlKiB4KQogICAgewogICAgICAgIHdoaWxlICh4LT5yaWdodCgpKQogICAgICAgICAgICB4ID0g
eC0+cmlnaHQoKTsKICAgICAgICByZXR1cm4geDsKICAgIH0KCiAgICBzdGF0aWMgY29uc3QgTm9k
ZVR5cGUqIHRyZWVNaW5pbXVtKGNvbnN0IE5vZGVUeXBlKiB4KQogICAgewogICAgICAgIHdoaWxl
ICh4LT5sZWZ0KCkpCiAgICAgICAgICAgIHggPSB4LT5sZWZ0KCk7CiAgICAgICAgcmV0dXJuIHg7
CiAgICB9CgogICAgc3RhdGljIGNvbnN0IE5vZGVUeXBlKiB0cmVlTWF4aW11bShjb25zdCBOb2Rl
VHlwZSogeCkKICAgIHsKICAgICAgICB3aGlsZSAoeC0+cmlnaHQoKSkKICAgICAgICAgICAgeCA9
IHgtPnJpZ2h0KCk7CiAgICAgICAgcmV0dXJuIHg7CiAgICB9CgogICAgdm9pZCB0cmVlSW5zZXJ0
KE5vZGVUeXBlKiB6KQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7
CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgTm9kZVR5cGUq
IHkgPSAwOwogICAgICAgIE5vZGVUeXBlKiB4ID0gbV9yb290OwogICAgICAgIHdoaWxlICh4KSB7
CiAgICAgICAgICAgIHkgPSB4OwogICAgICAgICAgICBpZiAoei0+a2V5KCkgPCB4LT5rZXkoKSkK
ICAgICAgICAgICAgICAgIHggPSB4LT5sZWZ0KCk7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgIHggPSB4LT5yaWdodCgpOwogICAgICAgIH0KICAgICAgICB6LT5zZXRQYXJlbnQoeSk7
CiAgICAgICAgaWYgKCF5KQogICAgICAgICAgICBtX3Jvb3QgPSB6OwogICAgICAgIGVsc2Ugewog
ICAgICAgICAgICBpZiAoei0+a2V5KCkgPCB5LT5rZXkoKSkKICAgICAgICAgICAgICAgIHktPnNl
dExlZnQoeik7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHktPnNldFJpZ2h0KHop
OwogICAgICAgIH0KICAgIH0KCgoKCgoKCiAgICBOb2RlVHlwZSogbGVmdFJvdGF0ZShOb2RlVHlw
ZSogeCkKICAgIHsKCiAgICAgICAgTm9kZVR5cGUqIHkgPSB4LT5yaWdodCgpOwoKCiAgICAgICAg
eC0+c2V0UmlnaHQoeS0+bGVmdCgpKTsKICAgICAgICBpZiAoeS0+bGVmdCgpKQogICAgICAgICAg
ICB5LT5sZWZ0KCktPnNldFBhcmVudCh4KTsKCgogICAgICAgIHktPnNldFBhcmVudCh4LT5wYXJl
bnQoKSk7CiAgICAgICAgaWYgKCF4LT5wYXJlbnQoKSkKICAgICAgICAgICAgbV9yb290ID0geTsK
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKHggPT0geC0+cGFyZW50KCktPmxlZnQoKSkK
ICAgICAgICAgICAgICAgIHgtPnBhcmVudCgpLT5zZXRMZWZ0KHkpOwogICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICB4LT5wYXJlbnQoKS0+c2V0UmlnaHQoeSk7CiAgICAgICAgfQoKCiAg
ICAgICAgeS0+c2V0TGVmdCh4KTsKICAgICAgICB4LT5zZXRQYXJlbnQoeSk7CgogICAgICAgIHJl
dHVybiB5OwogICAgfQoKCgogICAgTm9kZVR5cGUqIHJpZ2h0Um90YXRlKE5vZGVUeXBlKiB5KQog
ICAgewoKICAgICAgICBOb2RlVHlwZSogeCA9IHktPmxlZnQoKTsKCgogICAgICAgIHktPnNldExl
ZnQoeC0+cmlnaHQoKSk7CiAgICAgICAgaWYgKHgtPnJpZ2h0KCkpCiAgICAgICAgICAgIHgtPnJp
Z2h0KCktPnNldFBhcmVudCh5KTsKCgogICAgICAgIHgtPnNldFBhcmVudCh5LT5wYXJlbnQoKSk7
CiAgICAgICAgaWYgKCF5LT5wYXJlbnQoKSkKICAgICAgICAgICAgbV9yb290ID0geDsKICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgaWYgKHkgPT0geS0+cGFyZW50KCktPmxlZnQoKSkKICAgICAg
ICAgICAgICAgIHktPnBhcmVudCgpLT5zZXRMZWZ0KHgpOwogICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICB5LT5wYXJlbnQoKS0+c2V0UmlnaHQoeCk7CiAgICAgICAgfQoKCiAgICAgICAg
eC0+c2V0UmlnaHQoeSk7CiAgICAgICAgeS0+c2V0UGFyZW50KHgpOwoKICAgICAgICByZXR1cm4g
eDsKICAgIH0KCgoKCiAgICB2b2lkIHJlbW92ZUZpeHVwKE5vZGVUeXBlKiB4LCBOb2RlVHlwZSog
eFBhcmVudCkKICAgIHsKICAgICAgICB3aGlsZSAoeCAhPSBtX3Jvb3QgJiYgKCF4IHx8IHgtPmNv
bG9yKCkgPT0gQmxhY2spKSB7CiAgICAgICAgICAgIGlmICh4ID09IHhQYXJlbnQtPmxlZnQoKSkg
ewoKCgoKICAgICAgICAgICAgICAgIE5vZGVUeXBlKiB3ID0geFBhcmVudC0+cmlnaHQoKTsKICAg
ICAgICAgICAgICAgICgodm9pZCkwKTsKICAgICAgICAgICAgICAgIGlmICh3LT5jb2xvcigpID09
IFJlZCkgewoKICAgICAgICAgICAgICAgICAgICB3LT5zZXRDb2xvcihCbGFjayk7CiAgICAgICAg
ICAgICAgICAgICAgeFBhcmVudC0+c2V0Q29sb3IoUmVkKTsKICAgICAgICAgICAgICAgICAgICBs
ZWZ0Um90YXRlKHhQYXJlbnQpOwogICAgICAgICAgICAgICAgICAgIHcgPSB4UGFyZW50LT5yaWdo
dCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCghdy0+bGVmdCgpIHx8
IHctPmxlZnQoKS0+Y29sb3IoKSA9PSBCbGFjaykKICAgICAgICAgICAgICAgICAgICAmJiAoIXct
PnJpZ2h0KCkgfHwgdy0+cmlnaHQoKS0+Y29sb3IoKSA9PSBCbGFjaykpIHsKCiAgICAgICAgICAg
ICAgICAgICAgdy0+c2V0Q29sb3IoUmVkKTsKICAgICAgICAgICAgICAgICAgICB4ID0geFBhcmVu
dDsKICAgICAgICAgICAgICAgICAgICB4UGFyZW50ID0geC0+cGFyZW50KCk7CiAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICghdy0+cmlnaHQoKSB8fCB3LT5y
aWdodCgpLT5jb2xvcigpID09IEJsYWNrKSB7CgogICAgICAgICAgICAgICAgICAgICAgICB3LT5s
ZWZ0KCktPnNldENvbG9yKEJsYWNrKTsKICAgICAgICAgICAgICAgICAgICAgICAgdy0+c2V0Q29s
b3IoUmVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRSb3RhdGUodyk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHcgPSB4UGFyZW50LT5yaWdodCgpOwogICAgICAgICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICAgICAgICAgdy0+c2V0Q29sb3IoeFBhcmVudC0+Y29sb3IoKSk7CiAg
ICAgICAgICAgICAgICAgICAgeFBhcmVudC0+c2V0Q29sb3IoQmxhY2spOwogICAgICAgICAgICAg
ICAgICAgIGlmICh3LT5yaWdodCgpKQogICAgICAgICAgICAgICAgICAgICAgICB3LT5yaWdodCgp
LT5zZXRDb2xvcihCbGFjayk7CiAgICAgICAgICAgICAgICAgICAgbGVmdFJvdGF0ZSh4UGFyZW50
KTsKICAgICAgICAgICAgICAgICAgICB4ID0gbV9yb290OwogICAgICAgICAgICAgICAgICAgIHhQ
YXJlbnQgPSB4LT5wYXJlbnQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNl
IHsKCgoKCgoKCiAgICAgICAgICAgICAgICBOb2RlVHlwZSogdyA9IHhQYXJlbnQtPmxlZnQoKTsK
ICAgICAgICAgICAgICAgICgodm9pZCkwKTsKICAgICAgICAgICAgICAgIGlmICh3LT5jb2xvcigp
ID09IFJlZCkgewoKICAgICAgICAgICAgICAgICAgICB3LT5zZXRDb2xvcihCbGFjayk7CiAgICAg
ICAgICAgICAgICAgICAgeFBhcmVudC0+c2V0Q29sb3IoUmVkKTsKICAgICAgICAgICAgICAgICAg
ICByaWdodFJvdGF0ZSh4UGFyZW50KTsKICAgICAgICAgICAgICAgICAgICB3ID0geFBhcmVudC0+
bGVmdCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCghdy0+cmlnaHQo
KSB8fCB3LT5yaWdodCgpLT5jb2xvcigpID09IEJsYWNrKQogICAgICAgICAgICAgICAgICAgICYm
ICghdy0+bGVmdCgpIHx8IHctPmxlZnQoKS0+Y29sb3IoKSA9PSBCbGFjaykpIHsKCiAgICAgICAg
ICAgICAgICAgICAgdy0+c2V0Q29sb3IoUmVkKTsKICAgICAgICAgICAgICAgICAgICB4ID0geFBh
cmVudDsKICAgICAgICAgICAgICAgICAgICB4UGFyZW50ID0geC0+cGFyZW50KCk7CiAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICghdy0+bGVmdCgpIHx8IHct
PmxlZnQoKS0+Y29sb3IoKSA9PSBCbGFjaykgewoKICAgICAgICAgICAgICAgICAgICAgICAgdy0+
cmlnaHQoKS0+c2V0Q29sb3IoQmxhY2spOwogICAgICAgICAgICAgICAgICAgICAgICB3LT5zZXRD
b2xvcihSZWQpOwogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0Um90YXRlKHcpOwogICAgICAg
ICAgICAgICAgICAgICAgICB3ID0geFBhcmVudC0+bGVmdCgpOwogICAgICAgICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICAgICAgICAgdy0+c2V0Q29sb3IoeFBhcmVudC0+Y29sb3IoKSk7CiAg
ICAgICAgICAgICAgICAgICAgeFBhcmVudC0+c2V0Q29sb3IoQmxhY2spOwogICAgICAgICAgICAg
ICAgICAgIGlmICh3LT5sZWZ0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgIHctPmxlZnQoKS0+
c2V0Q29sb3IoQmxhY2spOwogICAgICAgICAgICAgICAgICAgIHJpZ2h0Um90YXRlKHhQYXJlbnQp
OwogICAgICAgICAgICAgICAgICAgIHggPSBtX3Jvb3Q7CiAgICAgICAgICAgICAgICAgICAgeFBh
cmVudCA9IHgtPnBhcmVudCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAg
ICAgfQogICAgICAgIGlmICh4KQogICAgICAgICAgICB4LT5zZXRDb2xvcihCbGFjayk7CiAgICB9
CgogICAgTm9kZVR5cGUqIG1fcm9vdDsKfTsKCn0KIyAzNCAiLi4vLi4vU291cmNlL1dURi93dGYv
TWV0YUFsbG9jYXRvckhhbmRsZS5oIiAyCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvVGhyZWFk
U2FmZVJlZkNvdW50ZWQuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oIgojZGVmaW5lIFRocmVhZFNhZmVSZWZDb3VudGVkX2ggCgoKCgoKbmFtZXNw
YWNlIFdURiB7CgpjbGFzcyBUaHJlYWRTYWZlUmVmQ291bnRlZEJhc2UgewogICAgcHJpdmF0ZTog
VGhyZWFkU2FmZVJlZkNvdW50ZWRCYXNlKGNvbnN0IFRocmVhZFNhZmVSZWZDb3VudGVkQmFzZSYp
ID0gZGVsZXRlOyBUaHJlYWRTYWZlUmVmQ291bnRlZEJhc2UmIG9wZXJhdG9yPShjb25zdCBUaHJl
YWRTYWZlUmVmQ291bnRlZEJhc2UmKSA9IGRlbGV0ZTs7CiAgICBwdWJsaWM6IHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3
W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRv
ciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZv
aWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2
b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gcHJpdmF0ZTogdHlwZWRlZiBpbnQgX190aGlzSXNI
ZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybzsKcHVibGljOgogICAgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWRCYXNlKGludCBpbml0aWFsUmVmQ291bnQgPSAxKQogICAgICAgIDogbV9yZWZD
b3VudChpbml0aWFsUmVmQ291bnQpCiAgICB7CiAgICB9CgogICAgdm9pZCByZWYoKQogICAgewog
ICAgICAgICsrbV9yZWZDb3VudDsKICAgIH0KCiAgICBib29sIGhhc09uZVJlZigpCiAgICB7CiAg
ICAgICAgcmV0dXJuIHJlZkNvdW50KCkgPT0gMTsKICAgIH0KCiAgICBpbnQgcmVmQ291bnQoKSBj
b25zdAogICAgewogICAgICAgIHJldHVybiBtX3JlZkNvdW50OwogICAgfQoKcHJvdGVjdGVkOgoK
ICAgIGJvb2wgZGVyZWZCYXNlKCkKICAgIHsKICAgICAgICBpZiAoLS1tX3JlZkNvdW50IDw9IDAp
IHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICB9Cgpwcml2YXRlOgogICAgc3RkOjphdG9taWM8aW50PiBtX3JlZkNvdW50Owp9OwoK
dGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgVGhyZWFkU2FmZVJlZkNvdW50ZWQgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWRCYXNlIHsKcHVibGljOgogICAgdm9pZCBkZXJlZigpCiAgICB7CiAg
ICAgICAgaWYgKGRlcmVmQmFzZSgpKQogICAgICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8VCo+
KHRoaXMpOwogICAgfQoKcHJvdGVjdGVkOgogICAgVGhyZWFkU2FmZVJlZkNvdW50ZWQoKQogICAg
ewogICAgfQp9OwoKfQoKdXNpbmcgV1RGOjpUaHJlYWRTYWZlUmVmQ291bnRlZDsKIyAzNSAiLi4v
Li4vU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvckhhbmRsZS5oIiAyCgoKbmFtZXNwYWNlIFdU
RiB7CgpjbGFzcyBNZXRhQWxsb2NhdG9yOwpjbGFzcyBQcmludFN0cmVhbTsKCmNsYXNzIE1ldGFB
bGxvY2F0b3JIYW5kbGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWV0YUFsbG9jYXRv
ckhhbmRsZT4sIHB1YmxpYyBSZWRCbGFja1RyZWU8TWV0YUFsbG9jYXRvckhhbmRsZSwgdm9pZCo+
OjpOb2RlIHsKcHJpdmF0ZToKICAgIE1ldGFBbGxvY2F0b3JIYW5kbGUoTWV0YUFsbG9jYXRvcios
IHZvaWQqIHN0YXJ0LCBzaXplX3Qgc2l6ZUluQnl0ZXMsIHZvaWQqIG93bmVyVUlEKTsKCnB1Ymxp
YzoKICAgIH5NZXRhQWxsb2NhdG9ySGFuZGxlKCk7CgogICAgdm9pZCogc3RhcnQoKSBjb25zdAog
ICAgewogICAgICAgIHJldHVybiBtX3N0YXJ0OwogICAgfQoKICAgIHZvaWQqIGVuZCgpIGNvbnN0
CiAgICB7CiAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGVuZEFzSW50ZWdl
cigpKTsKICAgIH0KCiAgICB1aW50cHRyX3Qgc3RhcnRBc0ludGVnZXIoKSBjb25zdAogICAgewog
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9zdGFydCk7CiAgICB9
CgogICAgdWludHB0cl90IGVuZEFzSW50ZWdlcigpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJu
IHN0YXJ0QXNJbnRlZ2VyKCkgKyBtX3NpemVJbkJ5dGVzOwogICAgfQoKICAgIHNpemVfdCBzaXpl
SW5CeXRlcygpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7CiAgICB9
CgogICAgYm9vbCBjb250YWluc0ludGVnZXJBZGRyZXNzKHVpbnRwdHJfdCBhZGRyZXNzKSBjb25z
dAogICAgewogICAgICAgIHJldHVybiBhZGRyZXNzIC0gc3RhcnRBc0ludGVnZXIoKSA8IHNpemVJ
bkJ5dGVzKCk7CiAgICB9CgogICAgYm9vbCBjb250YWlucyh2b2lkKiBhZGRyZXNzKSBjb25zdAog
ICAgewogICAgICAgIHJldHVybiBjb250YWluc0ludGVnZXJBZGRyZXNzKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihhZGRyZXNzKSk7CiAgICB9CgogICAgdm9pZCBzaHJpbmsoc2l6ZV90IG5l
d1NpemVJbkJ5dGVzKTsKCiAgICBib29sIGlzTWFuYWdlZCgpCiAgICB7CiAgICAgICAgcmV0dXJu
ICEhbV9hbGxvY2F0b3I7CiAgICB9CgogICAgTWV0YUFsbG9jYXRvciogYWxsb2NhdG9yKCkKICAg
IHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIG1fYWxsb2NhdG9yOwogICAgfQoK
ICAgIHZvaWQqIG93bmVyVUlEKCkKICAgIHsKICAgICAgICByZXR1cm4gbV9vd25lclVJRDsKICAg
IH0KCiAgICB2b2lkKiBrZXkoKQogICAgewogICAgICAgIHJldHVybiBtX3N0YXJ0OwogICAgfQoK
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKCnByaXZhdGU6CiAgICBmcmll
bmQgY2xhc3MgTWV0YUFsbG9jYXRvcjsKCiAgICBNZXRhQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsK
ICAgIHZvaWQqIG1fc3RhcnQ7CiAgICBzaXplX3QgbV9zaXplSW5CeXRlczsKICAgIHZvaWQqIG1f
b3duZXJVSUQ7Cn07Cgp9CiMgMzQgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhl
Y3V0YWJsZUFsbG9jYXRvci5oIiAyCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvTWV0YUFsbG9j
YXRvci5oIiAxCiMgMzAgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL01ldGFBbGxvY2F0b3IuaCIKI2Rl
ZmluZSBXVEZfTWV0YUFsbG9jYXRvcl9oIAoKCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvSGFz
aE1hcC5oIiAxCiMgMjIgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaCIKI2RlZmluZSBX
VEZfSGFzaE1hcF9oIAoKCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgiIDEK
IyAyMyAiLi4vLi4vU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgiCiNkZWZpbmUgV1RGX0hhc2hU
YWJsZV9oIAoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9pdGVyYXRvciIgMSAzCiMgNTYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvaXRlcmF0b3IiIDMKI2RlZmluZSBfR0xJ
QkNYWF9JVEVSQVRPUiAxCgogICAgICAgCiMgNTkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvaXRlcmF0b3IiIDMKCgoKCgojIDEgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvb3N0cmVh
bSIgMSAzCiMgMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvb3N0cmVhbSIgMwojZGVmaW5lIF9HTElCQ1hYX09TVFJFQU0gMQoKICAgICAg
IAojIDM3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL29zdHJlYW0iIDMKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9pb3MiIDEgMwojIDM0ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2lvcyIgMwojZGVmaW5lIF9HTElC
Q1hYX0lPUyAxCgogICAgICAgCiMgMzcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvaW9zIiAzCgoKCgoKIyAxICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvaW9zX2Jhc2UuaCIg
MSAzCiMgMzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvYml0cy9pb3NfYmFzZS5oIiAzCiNkZWZpbmUgX0lPU19CQVNFX0ggMQoKICAgICAg
IAojIDM4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2JpdHMvaW9zX2Jhc2UuaCIgMwoKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAx
IDMKIyAzNSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKI2RlZmluZSBfTE9DQUxFX0NMQVNTRVNf
SCAxCgogICAgICAgCiMgMzggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAzCgoKCgoKbmFtZXNwYWNl
IHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgojIDYy
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIgMwogIGNsYXNzIGxvY2FsZQogIHsKICBwdWJsaWM6CgoK
ICAgIHR5cGVkZWYgaW50IGNhdGVnb3J5OwoKCiAgICBjbGFzcyBmYWNldDsKICAgIGNsYXNzIGlk
OwogICAgY2xhc3MgX0ltcGw7CgogICAgZnJpZW5kIGNsYXNzIGZhY2V0OwogICAgZnJpZW5kIGNs
YXNzIF9JbXBsOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GYWNldD4KICAgICAgZnJpZW5kIGJv
b2wKICAgICAgaGFzX2ZhY2V0KGNvbnN0IGxvY2FsZSYpIHRocm93KCk7CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ZhY2V0PgogICAgICBmcmllbmQgY29uc3QgX0ZhY2V0JgogICAgICB1c2VfZmFj
ZXQoY29uc3QgbG9jYWxlJik7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NhY2hlPgogICAgICBm
cmllbmQgc3RydWN0IF9fdXNlX2NhY2hlOwojIDk4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIgMwog
ICAgc3RhdGljIGNvbnN0IGNhdGVnb3J5IG5vbmUgPSAwOwogICAgc3RhdGljIGNvbnN0IGNhdGVn
b3J5IGN0eXBlID0gMUwgPDwgMDsKICAgIHN0YXRpYyBjb25zdCBjYXRlZ29yeSBudW1lcmljID0g
MUwgPDwgMTsKICAgIHN0YXRpYyBjb25zdCBjYXRlZ29yeSBjb2xsYXRlID0gMUwgPDwgMjsKICAg
IHN0YXRpYyBjb25zdCBjYXRlZ29yeSB0aW1lID0gMUwgPDwgMzsKICAgIHN0YXRpYyBjb25zdCBj
YXRlZ29yeSBtb25ldGFyeSA9IDFMIDw8IDQ7CiAgICBzdGF0aWMgY29uc3QgY2F0ZWdvcnkgbWVz
c2FnZXMgPSAxTCA8PCA1OwogICAgc3RhdGljIGNvbnN0IGNhdGVnb3J5IGFsbCA9IChjdHlwZSB8
IG51bWVyaWMgfCBjb2xsYXRlIHwKICAgICAgICB0aW1lIHwgbW9uZXRhcnkgfCBtZXNzYWdlcyk7
CiMgMTE3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIgMwogICAgbG9jYWxlKCkgdGhyb3coKTsKIyAx
MjYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvYml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAzCiAgICBsb2NhbGUoY29uc3QgbG9jYWxlJiBfX290
aGVyKSB0aHJvdygpOwojIDEzNiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKICAgIGV4cGxpY2l0
CiAgICBsb2NhbGUoY29uc3QgY2hhciogX19zKTsKIyAxNTEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfY2xhc3Nlcy5o
IiAzCiAgICBsb2NhbGUoY29uc3QgbG9jYWxlJiBfX2Jhc2UsIGNvbnN0IGNoYXIqIF9fcywgY2F0
ZWdvcnkgX19jYXQpOwojIDE2NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKICAgIGxvY2FsZShj
b25zdCBsb2NhbGUmIF9fYmFzZSwgY29uc3QgbG9jYWxlJiBfX2FkZCwgY2F0ZWdvcnkgX19jYXQp
OwojIDE3NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9G
YWNldD4KICAgICAgbG9jYWxlKGNvbnN0IGxvY2FsZSYgX19vdGhlciwgX0ZhY2V0KiBfX2YpOwoK
CiAgICB+bG9jYWxlKCkgdGhyb3coKTsKIyAxOTEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAzCiAg
ICBjb25zdCBsb2NhbGUmCiAgICBvcGVyYXRvcj0oY29uc3QgbG9jYWxlJiBfX290aGVyKSB0aHJv
dygpOwojIDIwNiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKICAgIHRlbXBsYXRlPHR5cGVuYW1l
IF9GYWNldD4KICAgICAgbG9jYWxlCiAgICAgIGNvbWJpbmUoY29uc3QgbG9jYWxlJiBfX290aGVy
KSBjb25zdDsKCgoKCgoKICAgIHN0cmluZwogICAgbmFtZSgpIGNvbnN0OwojIDIyNSAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xv
Y2FsZV9jbGFzc2VzLmgiIDMKICAgIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgbG9jYWxlJiBf
X290aGVyKSBjb25zdCB0aHJvdygpOwoKCgoKCgoKICAgIGJvb2wKICAgIG9wZXJhdG9yIT0oY29u
c3QgbG9jYWxlJiBfX290aGVyKSBjb25zdCB0aHJvdygpCiAgICB7IHJldHVybiAhKHRoaXMtPm9w
ZXJhdG9yPT0oX19vdGhlcikpOyB9CiMgMjUzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIgMwogICAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXIsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxv
Yz4KICAgICAgYm9vbAogICAgICBvcGVyYXRvcigpKGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhciwg
X1RyYWl0cywgX0FsbG9jPiYgX19zMSwKICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyLCBfVHJh
aXRzLCBfQWxsb2M+JiBfX3MyKSBjb25zdDsKIyAyNjkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAz
CiAgICBzdGF0aWMgbG9jYWxlCiAgICBnbG9iYWwoY29uc3QgbG9jYWxlJiBfX2xvYyk7CgoKCgog
ICAgc3RhdGljIGNvbnN0IGxvY2FsZSYKICAgIGNsYXNzaWMoKTsKCiAgcHJpdmF0ZToKCiAgICBf
SW1wbCogX01faW1wbDsKCgogICAgc3RhdGljIF9JbXBsKiBfU19jbGFzc2ljOwoKCiAgICBzdGF0
aWMgX0ltcGwqIF9TX2dsb2JhbDsKCgoKCgogICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0KiBj
b25zdCBfU19jYXRlZ29yaWVzOwojIDMwNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKICAgIGVu
dW0geyBfU19jYXRlZ29yaWVzX3NpemUgPSA2ICsgNiB9OwoKCiAgICBzdGF0aWMgX19ndGhyZWFk
X29uY2VfdCBfU19vbmNlOwoKCiAgICBleHBsaWNpdAogICAgbG9jYWxlKF9JbXBsKikgdGhyb3co
KTsKCiAgICBzdGF0aWMgdm9pZAogICAgX1NfaW5pdGlhbGl6ZSgpOwoKICAgIHN0YXRpYyB2b2lk
CiAgICBfU19pbml0aWFsaXplX29uY2UoKSB0aHJvdygpOwoKICAgIHN0YXRpYyBjYXRlZ29yeQog
ICAgX1Nfbm9ybWFsaXplX2NhdGVnb3J5KGNhdGVnb3J5KTsKCiAgICB2b2lkCiAgICBfTV9jb2Fs
ZXNjZShjb25zdCBsb2NhbGUmIF9fYmFzZSwgY29uc3QgbG9jYWxlJiBfX2FkZCwgY2F0ZWdvcnkg
X19jYXQpOwogIH07CiMgMzM4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIgMwogIGNsYXNzIGxvY2Fs
ZTo6ZmFjZXQKICB7CiAgcHJpdmF0ZToKICAgIGZyaWVuZCBjbGFzcyBsb2NhbGU7CiAgICBmcmll
bmQgY2xhc3MgbG9jYWxlOjpfSW1wbDsKCiAgICBtdXRhYmxlIF9BdG9taWNfd29yZCBfTV9yZWZj
b3VudDsKCgogICAgc3RhdGljIF9fY19sb2NhbGUgX1NfY19sb2NhbGU7CgoKICAgIHN0YXRpYyBj
b25zdCBjaGFyIF9TX2NfbmFtZVsyXTsKCgogICAgc3RhdGljIF9fZ3RocmVhZF9vbmNlX3QgX1Nf
b25jZTsKCgogICAgc3RhdGljIHZvaWQKICAgIF9TX2luaXRpYWxpemVfb25jZSgpOwoKICBwcm90
ZWN0ZWQ6CiMgMzY5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIgMwogICAgZXhwbGljaXQKICAgIGZh
Y2V0KHNpemVfdCBfX3JlZnMgPSAwKSB0aHJvdygpIDogX01fcmVmY291bnQoX19yZWZzID8gMSA6
IDApCiAgICB7IH0KCgogICAgdmlydHVhbAogICAgfmZhY2V0KCk7CgogICAgc3RhdGljIHZvaWQK
ICAgIF9TX2NyZWF0ZV9jX2xvY2FsZShfX2NfbG9jYWxlJiBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9f
cywKICAgICAgICAgX19jX2xvY2FsZSBfX29sZCA9IDApOwoKICAgIHN0YXRpYyBfX2NfbG9jYWxl
CiAgICBfU19jbG9uZV9jX2xvY2FsZShfX2NfbG9jYWxlJiBfX2Nsb2MpIHRocm93KCk7CgogICAg
c3RhdGljIHZvaWQKICAgIF9TX2Rlc3Ryb3lfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKTsK
CiAgICBzdGF0aWMgX19jX2xvY2FsZQogICAgX1NfbGNfY3R5cGVfY19sb2NhbGUoX19jX2xvY2Fs
ZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcyk7CgoKCiAgICBzdGF0aWMgX19jX2xvY2FsZQogICAg
X1NfZ2V0X2NfbG9jYWxlKCk7CgogICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpIHN0YXRp
YyBjb25zdCBjaGFyKgogICAgX1NfZ2V0X2NfbmFtZSgpIHRocm93KCk7CgogIHByaXZhdGU6CiAg
ICB2b2lkCiAgICBfTV9hZGRfcmVmZXJlbmNlKCkgY29uc3QgdGhyb3coKQogICAgeyBfX2dudV9j
eHg6Ol9fYXRvbWljX2FkZF9kaXNwYXRjaCgmX01fcmVmY291bnQsIDEpOyB9CgogICAgdm9pZAog
ICAgX01fcmVtb3ZlX3JlZmVyZW5jZSgpIGNvbnN0IHRocm93KCkKICAgIHsKCiAgICAgIDsKICAg
ICAgaWYgKF9fZ251X2N4eDo6X19leGNoYW5nZV9hbmRfYWRkX2Rpc3BhdGNoKCZfTV9yZWZjb3Vu
dCwgLTEpID09IDEpCiB7CiAgICAgICAgICA7CiAgIGlmICh0cnVlKQogICAgIHsgZGVsZXRlIHRo
aXM7IH0KICAgaWYgKGZhbHNlKQogICAgIHsgfQogfQogICAgfQoKICAgIGZhY2V0KGNvbnN0IGZh
Y2V0Jik7CgogICAgZmFjZXQmCiAgICBvcGVyYXRvcj0oY29uc3QgZmFjZXQmKTsKICB9OwojIDQz
NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKICBjbGFzcyBsb2NhbGU6OmlkCiAgewogIHByaXZh
dGU6CiAgICBmcmllbmQgY2xhc3MgbG9jYWxlOwogICAgZnJpZW5kIGNsYXNzIGxvY2FsZTo6X0lt
cGw7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZhY2V0PgogICAgICBmcmllbmQgY29uc3QgX0Zh
Y2V0JgogICAgICB1c2VfZmFjZXQoY29uc3QgbG9jYWxlJik7CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZhY2V0PgogICAgICBmcmllbmQgYm9vbAogICAgICBoYXNfZmFjZXQoY29uc3QgbG9jYWxl
JikgdGhyb3coKTsKCgoKCiAgICBtdXRhYmxlIHNpemVfdCBfTV9pbmRleDsKCgogICAgc3RhdGlj
IF9BdG9taWNfd29yZCBfU19yZWZjb3VudDsKCiAgICB2b2lkCiAgICBvcGVyYXRvcj0oY29uc3Qg
aWQmKTsKCiAgICBpZChjb25zdCBpZCYpOwoKICBwdWJsaWM6CgoKCiAgICBpZCgpIHsgfQoKICAg
IHNpemVfdAogICAgX01faWQoKSBjb25zdCB0aHJvdygpOwogIH07CgoKCiAgY2xhc3MgbG9jYWxl
OjpfSW1wbAogIHsKICBwdWJsaWM6CgogICAgZnJpZW5kIGNsYXNzIGxvY2FsZTsKICAgIGZyaWVu
ZCBjbGFzcyBsb2NhbGU6OmZhY2V0OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GYWNldD4KICAg
ICAgZnJpZW5kIGJvb2wKICAgICAgaGFzX2ZhY2V0KGNvbnN0IGxvY2FsZSYpIHRocm93KCk7Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZhY2V0PgogICAgICBmcmllbmQgY29uc3QgX0ZhY2V0Jgog
ICAgICB1c2VfZmFjZXQoY29uc3QgbG9jYWxlJik7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Nh
Y2hlPgogICAgICBmcmllbmQgc3RydWN0IF9fdXNlX2NhY2hlOwoKICBwcml2YXRlOgoKICAgIF9B
dG9taWNfd29yZCBfTV9yZWZjb3VudDsKICAgIGNvbnN0IGZhY2V0KiogX01fZmFjZXRzOwogICAg
c2l6ZV90IF9NX2ZhY2V0c19zaXplOwogICAgY29uc3QgZmFjZXQqKiBfTV9jYWNoZXM7CiAgICBj
aGFyKiogX01fbmFtZXM7CiAgICBzdGF0aWMgY29uc3QgbG9jYWxlOjppZCogY29uc3QgX1NfaWRf
Y3R5cGVbXTsKICAgIHN0YXRpYyBjb25zdCBsb2NhbGU6OmlkKiBjb25zdCBfU19pZF9udW1lcmlj
W107CiAgICBzdGF0aWMgY29uc3QgbG9jYWxlOjppZCogY29uc3QgX1NfaWRfY29sbGF0ZVtdOwog
ICAgc3RhdGljIGNvbnN0IGxvY2FsZTo6aWQqIGNvbnN0IF9TX2lkX3RpbWVbXTsKICAgIHN0YXRp
YyBjb25zdCBsb2NhbGU6OmlkKiBjb25zdCBfU19pZF9tb25ldGFyeVtdOwogICAgc3RhdGljIGNv
bnN0IGxvY2FsZTo6aWQqIGNvbnN0IF9TX2lkX21lc3NhZ2VzW107CiAgICBzdGF0aWMgY29uc3Qg
bG9jYWxlOjppZCogY29uc3QqIGNvbnN0IF9TX2ZhY2V0X2NhdGVnb3JpZXNbXTsKCiAgICB2b2lk
CiAgICBfTV9hZGRfcmVmZXJlbmNlKCkgdGhyb3coKQogICAgeyBfX2dudV9jeHg6Ol9fYXRvbWlj
X2FkZF9kaXNwYXRjaCgmX01fcmVmY291bnQsIDEpOyB9CgogICAgdm9pZAogICAgX01fcmVtb3Zl
X3JlZmVyZW5jZSgpIHRocm93KCkKICAgIHsKCiAgICAgIDsKICAgICAgaWYgKF9fZ251X2N4eDo6
X19leGNoYW5nZV9hbmRfYWRkX2Rpc3BhdGNoKCZfTV9yZWZjb3VudCwgLTEpID09IDEpCiB7CiAg
ICAgICAgICA7CiAgIGlmICh0cnVlKQogICAgIHsgZGVsZXRlIHRoaXM7IH0KICAgaWYgKGZhbHNl
KQogICAgIHsgfQogfQogICAgfQoKICAgIF9JbXBsKGNvbnN0IF9JbXBsJiwgc2l6ZV90KTsKICAg
IF9JbXBsKGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgX0ltcGwoc2l6ZV90KSB0aHJvdygpOwoK
ICAgfl9JbXBsKCkgdGhyb3coKTsKCiAgICBfSW1wbChjb25zdCBfSW1wbCYpOwoKICAgIHZvaWQK
ICAgIG9wZXJhdG9yPShjb25zdCBfSW1wbCYpOwoKICAgIGJvb2wKICAgIF9NX2NoZWNrX3NhbWVf
bmFtZSgpCiAgICB7CiAgICAgIGJvb2wgX19yZXQgPSB0cnVlOwogICAgICBpZiAoX01fbmFtZXNb
MV0pCgogZm9yIChzaXplX3QgX19pID0gMDsgX19yZXQgJiYgX19pIDwgX1NfY2F0ZWdvcmllc19z
aXplIC0gMTsgKytfX2kpCiAgIF9fcmV0ID0gX19idWlsdGluX3N0cmNtcChfTV9uYW1lc1tfX2ld
LCBfTV9uYW1lc1tfX2kgKyAxXSkgPT0gMDsKICAgICAgcmV0dXJuIF9fcmV0OwogICAgfQoKICAg
IHZvaWQKICAgIF9NX3JlcGxhY2VfY2F0ZWdvcmllcyhjb25zdCBfSW1wbCosIGNhdGVnb3J5KTsK
CiAgICB2b2lkCiAgICBfTV9yZXBsYWNlX2NhdGVnb3J5KGNvbnN0IF9JbXBsKiwgY29uc3QgbG9j
YWxlOjppZCogY29uc3QqKTsKCiAgICB2b2lkCiAgICBfTV9yZXBsYWNlX2ZhY2V0KGNvbnN0IF9J
bXBsKiwgY29uc3QgbG9jYWxlOjppZCopOwoKICAgIHZvaWQKICAgIF9NX2luc3RhbGxfZmFjZXQo
Y29uc3QgbG9jYWxlOjppZCosIGNvbnN0IGZhY2V0Kik7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
X0ZhY2V0PgogICAgICB2b2lkCiAgICAgIF9NX2luaXRfZmFjZXQoX0ZhY2V0KiBfX2ZhY2V0KQog
ICAgICB7IF9NX2luc3RhbGxfZmFjZXQoJl9GYWNldDo6aWQsIF9fZmFjZXQpOyB9CgogICAgdm9p
ZAogICAgX01faW5zdGFsbF9jYWNoZShjb25zdCBmYWNldCosIHNpemVfdCk7CiAgfTsKIyA1ODMg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
Yml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAg
Y2xhc3MgY29sbGF0ZSA6IHB1YmxpYyBsb2NhbGU6OmZhY2V0CiAgICB7CiAgICBwdWJsaWM6CgoK
CiAgICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19zdHJp
bmc8X0NoYXJUPiBzdHJpbmdfdHlwZTsKCgogICAgcHJvdGVjdGVkOgoKCiAgICAgIF9fY19sb2Nh
bGUgX01fY19sb2NhbGVfY29sbGF0ZTsKCiAgICBwdWJsaWM6CgogICAgICBzdGF0aWMgbG9jYWxl
OjppZCBpZDsKIyA2MTAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAzCiAgICAgIGV4cGxpY2l0CiAg
ICAgIGNvbGxhdGUoc2l6ZV90IF9fcmVmcyA9IDApCiAgICAgIDogZmFjZXQoX19yZWZzKSwgX01f
Y19sb2NhbGVfY29sbGF0ZShfU19nZXRfY19sb2NhbGUoKSkKICAgICAgeyB9CiMgNjI0ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMv
bG9jYWxlX2NsYXNzZXMuaCIgMwogICAgICBleHBsaWNpdAogICAgICBjb2xsYXRlKF9fY19sb2Nh
bGUgX19jbG9jLCBzaXplX3QgX19yZWZzID0gMCkKICAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9j
X2xvY2FsZV9jb2xsYXRlKF9TX2Nsb25lX2NfbG9jYWxlKF9fY2xvYykpCiAgICAgIHsgfQojIDY0
MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKICAgICAgaW50CiAgICAgIGNvbXBhcmUoY29uc3Qg
X0NoYXJUKiBfX2xvMSwgY29uc3QgX0NoYXJUKiBfX2hpMSwKICAgICAgIGNvbnN0IF9DaGFyVCog
X19sbzIsIGNvbnN0IF9DaGFyVCogX19oaTIpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRv
X2NvbXBhcmUoX19sbzEsIF9faGkxLCBfX2xvMiwgX19oaTIpOyB9CiMgNjYwICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxl
X2NsYXNzZXMuaCIgMwogICAgICBzdHJpbmdfdHlwZQogICAgICB0cmFuc2Zvcm0oY29uc3QgX0No
YXJUKiBfX2xvLCBjb25zdCBfQ2hhclQqIF9faGkpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMt
PmRvX3RyYW5zZm9ybShfX2xvLCBfX2hpKTsgfQojIDY3NCAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9jbGFzc2VzLmgi
IDMKICAgICAgbG9uZwogICAgICBoYXNoKGNvbnN0IF9DaGFyVCogX19sbywgY29uc3QgX0NoYXJU
KiBfX2hpKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19oYXNoKF9fbG8sIF9faGkpOyB9
CgoKICAgICAgaW50CiAgICAgIF9NX2NvbXBhcmUoY29uc3QgX0NoYXJUKiwgY29uc3QgX0NoYXJU
KikgY29uc3QgdGhyb3coKTsKCiAgICAgIHNpemVfdAogICAgICBfTV90cmFuc2Zvcm0oX0NoYXJU
KiwgY29uc3QgX0NoYXJUKiwgc2l6ZV90KSBjb25zdCB0aHJvdygpOwoKICBwcm90ZWN0ZWQ6Cgog
ICAgICB2aXJ0dWFsCiAgICAgIH5jb2xsYXRlKCkKICAgICAgeyBfU19kZXN0cm95X2NfbG9jYWxl
KF9NX2NfbG9jYWxlX2NvbGxhdGUpOyB9CiMgNzAzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIgMwog
ICAgICB2aXJ0dWFsIGludAogICAgICBkb19jb21wYXJlKGNvbnN0IF9DaGFyVCogX19sbzEsIGNv
bnN0IF9DaGFyVCogX19oaTEsCiAgIGNvbnN0IF9DaGFyVCogX19sbzIsIGNvbnN0IF9DaGFyVCog
X19oaTIpIGNvbnN0OwojIDcxNyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKICAgICAgdmlydHVh
bCBzdHJpbmdfdHlwZQogICAgICBkb190cmFuc2Zvcm0oY29uc3QgX0NoYXJUKiBfX2xvLCBjb25z
dCBfQ2hhclQqIF9faGkpIGNvbnN0OwojIDczMCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKICAg
ICAgdmlydHVhbCBsb25nCiAgICAgIGRvX2hhc2goY29uc3QgX0NoYXJUKiBfX2xvLCBjb25zdCBf
Q2hhclQqIF9faGkpIGNvbnN0OwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgog
ICAgbG9jYWxlOjppZCBjb2xsYXRlPF9DaGFyVD46OmlkOwoKCiAgdGVtcGxhdGU8PgogICAgaW50
CiAgICBjb2xsYXRlPGNoYXI+OjpfTV9jb21wYXJlKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikg
Y29uc3QgdGhyb3coKTsKCiAgdGVtcGxhdGU8PgogICAgc2l6ZV90CiAgICBjb2xsYXRlPGNoYXI+
OjpfTV90cmFuc2Zvcm0oY2hhciosIGNvbnN0IGNoYXIqLCBzaXplX3QpIGNvbnN0IHRocm93KCk7
CgoKICB0ZW1wbGF0ZTw+CiAgICBpbnQKICAgIGNvbGxhdGU8d2NoYXJfdD46Ol9NX2NvbXBhcmUo
Y29uc3Qgd2NoYXJfdCosIGNvbnN0IHdjaGFyX3QqKSBjb25zdCB0aHJvdygpOwoKICB0ZW1wbGF0
ZTw+CiAgICBzaXplX3QKICAgIGNvbGxhdGU8d2NoYXJfdD46Ol9NX3RyYW5zZm9ybSh3Y2hhcl90
KiwgY29uc3Qgd2NoYXJfdCosIHNpemVfdCkgY29uc3QgdGhyb3coKTsKCgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQ+CiAgICBjbGFzcyBjb2xsYXRlX2J5bmFtZSA6IHB1YmxpYyBjb2xsYXRl
PF9DaGFyVD4KICAgIHsKICAgIHB1YmxpYzoKCgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5
cGU7CiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPF9DaGFyVD4gc3RyaW5nX3R5cGU7CgoKICAg
ICAgZXhwbGljaXQKICAgICAgY29sbGF0ZV9ieW5hbWUoY29uc3QgY2hhciogX19zLCBzaXplX3Qg
X19yZWZzID0gMCkKICAgICAgOiBjb2xsYXRlPF9DaGFyVD4oX19yZWZzKQogICAgICB7CiBpZiAo
X19idWlsdGluX3N0cmNtcChfX3MsICJDIikgIT0gMAogICAgICYmIF9fYnVpbHRpbl9zdHJjbXAo
X19zLCAiUE9TSVgiKSAhPSAwKQogICB7CiAgICAgdGhpcy0+X1NfZGVzdHJveV9jX2xvY2FsZSh0
aGlzLT5fTV9jX2xvY2FsZV9jb2xsYXRlKTsKICAgICB0aGlzLT5fU19jcmVhdGVfY19sb2NhbGUo
dGhpcy0+X01fY19sb2NhbGVfY29sbGF0ZSwgX19zKTsKICAgfQogICAgICB9CgogICAgcHJvdGVj
dGVkOgogICAgICB2aXJ0dWFsCiAgICAgIH5jb2xsYXRlX2J5bmFtZSgpIHsgfQogICAgfTsKCgp9
CgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvYml0cy9sb2NhbGVfY2xhc3Nlcy50Y2MiIDEgMwojIDM1ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2NsYXNz
ZXMudGNjIiAzCiNkZWZpbmUgX0xPQ0FMRV9DTEFTU0VTX1RDQyAxCgogICAgICAgCiMgMzggIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9sb2NhbGVfY2xhc3Nlcy50Y2MiIDMKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9f
dmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZhY2V0
PgogICAgbG9jYWxlOjoKICAgIGxvY2FsZShjb25zdCBsb2NhbGUmIF9fb3RoZXIsIF9GYWNldCog
X19mKQogICAgewogICAgICBfTV9pbXBsID0gbmV3IF9JbXBsKCpfX290aGVyLl9NX2ltcGwsIDEp
OwoKICAgICAgaWYgKHRydWUpCiB7IF9NX2ltcGwtPl9NX2luc3RhbGxfZmFjZXQoJl9GYWNldDo6
aWQsIF9fZik7IH0KICAgICAgaWYgKGZhbHNlKQogewogICBfTV9pbXBsLT5fTV9yZW1vdmVfcmVm
ZXJlbmNlKCk7CiAgIDsKIH0KICAgICAgZGVsZXRlIFtdIF9NX2ltcGwtPl9NX25hbWVzWzBdOwog
ICAgICBfTV9pbXBsLT5fTV9uYW1lc1swXSA9IDA7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9GYWNldD4KICAgIGxvY2FsZQogICAgbG9jYWxlOjoKICAgIGNvbWJpbmUoY29uc3QgbG9jYWxl
JiBfX290aGVyKSBjb25zdAogICAgewogICAgICBfSW1wbCogX190bXAgPSBuZXcgX0ltcGwoKl9N
X2ltcGwsIDEpOwogICAgICBpZiAodHJ1ZSkKIHsKICAgX190bXAtPl9NX3JlcGxhY2VfZmFjZXQo
X19vdGhlci5fTV9pbXBsLCAmX0ZhY2V0OjppZCk7CiB9CiAgICAgIGlmIChmYWxzZSkKIHsKICAg
X190bXAtPl9NX3JlbW92ZV9yZWZlcmVuY2UoKTsKICAgOwogfQogICAgICByZXR1cm4gbG9jYWxl
KF9fdG1wKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJh
aXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBib29sCiAgICBsb2NhbGU6OgogICAgb3BlcmF0b3Io
KShjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3MxLAogICAg
ICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fczIpIGNv
bnN0CiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpjb2xsYXRlPF9DaGFyVD4gX19jb2xsYXRlX3R5
cGU7CiAgICAgIGNvbnN0IF9fY29sbGF0ZV90eXBlJiBfX2NvbGxhdGUgPSB1c2VfZmFjZXQ8X19j
b2xsYXRlX3R5cGU+KCp0aGlzKTsKICAgICAgcmV0dXJuIChfX2NvbGxhdGUuY29tcGFyZShfX3Mx
LmRhdGEoKSwgX19zMS5kYXRhKCkgKyBfX3MxLmxlbmd0aCgpLAogICAgX19zMi5kYXRhKCksIF9f
czIuZGF0YSgpICsgX19zMi5sZW5ndGgoKSkgPCAwKTsKICAgIH0KIyAxMDIgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVf
Y2xhc3Nlcy50Y2MiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRmFjZXQ+CiAgICBib29sCiAgICBo
YXNfZmFjZXQoY29uc3QgbG9jYWxlJiBfX2xvYykgdGhyb3coKQogICAgewogICAgICBjb25zdCBz
aXplX3QgX19pID0gX0ZhY2V0OjppZC5fTV9pZCgpOwogICAgICBjb25zdCBsb2NhbGU6OmZhY2V0
KiogX19mYWNldHMgPSBfX2xvYy5fTV9pbXBsLT5fTV9mYWNldHM7CiAgICAgIHJldHVybiAoX19p
IDwgX19sb2MuX01faW1wbC0+X01fZmFjZXRzX3NpemUKCgoKICAgICAgICAgICAgICAmJiBzdGF0
aWNfY2FzdDxjb25zdCBfRmFjZXQqPihfX2ZhY2V0c1tfX2ldKSk7CgogICAgfQojIDEzMCAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L2xvY2FsZV9jbGFzc2VzLnRjYyIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9GYWNldD4KICAgIGNv
bnN0IF9GYWNldCYKICAgIHVzZV9mYWNldChjb25zdCBsb2NhbGUmIF9fbG9jKQogICAgewogICAg
ICBjb25zdCBzaXplX3QgX19pID0gX0ZhY2V0OjppZC5fTV9pZCgpOwogICAgICBjb25zdCBsb2Nh
bGU6OmZhY2V0KiogX19mYWNldHMgPSBfX2xvYy5fTV9pbXBsLT5fTV9mYWNldHM7CiAgICAgIGlm
IChfX2kgPj0gX19sb2MuX01faW1wbC0+X01fZmFjZXRzX3NpemUgfHwgIV9fZmFjZXRzW19faV0p
CiAgICAgICAgX190aHJvd19iYWRfY2FzdCgpOwoKCgogICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgX0ZhY2V0Jj4oKl9fZmFjZXRzW19faV0pOwoKICAgIH0KCgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQ+CiAgICBpbnQKICAgIGNvbGxhdGU8X0NoYXJUPjo6X01fY29tcGFyZShjb25z
dCBfQ2hhclQqLCBjb25zdCBfQ2hhclQqKSBjb25zdCB0aHJvdyAoKQogICAgeyByZXR1cm4gMDsg
fQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgc2l6ZV90CiAgICBjb2xsYXRlPF9D
aGFyVD46Ol9NX3RyYW5zZm9ybShfQ2hhclQqLCBjb25zdCBfQ2hhclQqLCBzaXplX3QpIGNvbnN0
IHRocm93ICgpCiAgICB7IHJldHVybiAwOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4K
ICAgIGludAogICAgY29sbGF0ZTxfQ2hhclQ+OjoKICAgIGRvX2NvbXBhcmUoY29uc3QgX0NoYXJU
KiBfX2xvMSwgY29uc3QgX0NoYXJUKiBfX2hpMSwKICAgICAgICBjb25zdCBfQ2hhclQqIF9fbG8y
LCBjb25zdCBfQ2hhclQqIF9faGkyKSBjb25zdAogICAgewoKCiAgICAgIGNvbnN0IHN0cmluZ190
eXBlIF9fb25lKF9fbG8xLCBfX2hpMSk7CiAgICAgIGNvbnN0IHN0cmluZ190eXBlIF9fdHdvKF9f
bG8yLCBfX2hpMik7CgogICAgICBjb25zdCBfQ2hhclQqIF9fcCA9IF9fb25lLmNfc3RyKCk7CiAg
ICAgIGNvbnN0IF9DaGFyVCogX19wZW5kID0gX19vbmUuZGF0YSgpICsgX19vbmUubGVuZ3RoKCk7
CiAgICAgIGNvbnN0IF9DaGFyVCogX19xID0gX190d28uY19zdHIoKTsKICAgICAgY29uc3QgX0No
YXJUKiBfX3FlbmQgPSBfX3R3by5kYXRhKCkgKyBfX3R3by5sZW5ndGgoKTsKCgoKCiAgICAgIGZv
ciAoOzspCiB7CiAgIGNvbnN0IGludCBfX3JlcyA9IF9NX2NvbXBhcmUoX19wLCBfX3EpOwogICBp
ZiAoX19yZXMpCiAgICAgcmV0dXJuIF9fcmVzOwoKICAgX19wICs9IGNoYXJfdHJhaXRzPF9DaGFy
VD46Omxlbmd0aChfX3ApOwogICBfX3EgKz0gY2hhcl90cmFpdHM8X0NoYXJUPjo6bGVuZ3RoKF9f
cSk7CiAgIGlmIChfX3AgPT0gX19wZW5kICYmIF9fcSA9PSBfX3FlbmQpCiAgICAgcmV0dXJuIDA7
CiAgIGVsc2UgaWYgKF9fcCA9PSBfX3BlbmQpCiAgICAgcmV0dXJuIC0xOwogICBlbHNlIGlmIChf
X3EgPT0gX19xZW5kKQogICAgIHJldHVybiAxOwoKICAgX19wKys7CiAgIF9fcSsrOwogfQogICAg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICB0eXBlbmFtZSBjb2xsYXRlPF9DaGFy
VD46OnN0cmluZ190eXBlCiAgICBjb2xsYXRlPF9DaGFyVD46OgogICAgZG9fdHJhbnNmb3JtKGNv
bnN0IF9DaGFyVCogX19sbywgY29uc3QgX0NoYXJUKiBfX2hpKSBjb25zdAogICAgewogICAgICBz
dHJpbmdfdHlwZSBfX3JldDsKCgogICAgICBjb25zdCBzdHJpbmdfdHlwZSBfX3N0cihfX2xvLCBf
X2hpKTsKCiAgICAgIGNvbnN0IF9DaGFyVCogX19wID0gX19zdHIuY19zdHIoKTsKICAgICAgY29u
c3QgX0NoYXJUKiBfX3BlbmQgPSBfX3N0ci5kYXRhKCkgKyBfX3N0ci5sZW5ndGgoKTsKCiAgICAg
IHNpemVfdCBfX2xlbiA9IChfX2hpIC0gX19sbykgKiAyOwoKICAgICAgX0NoYXJUKiBfX2MgPSBu
ZXcgX0NoYXJUW19fbGVuXTsKCiAgICAgIGlmICh0cnVlKQogewoKCgogICBmb3IgKDs7KQogICAg
IHsKCiAgICAgICBzaXplX3QgX19yZXMgPSBfTV90cmFuc2Zvcm0oX19jLCBfX3AsIF9fbGVuKTsK
CgogICAgICAgaWYgKF9fcmVzID49IF9fbGVuKQogIHsKICAgIF9fbGVuID0gX19yZXMgKyAxOwog
ICAgZGVsZXRlIFtdIF9fYywgX19jID0gMDsKICAgIF9fYyA9IG5ldyBfQ2hhclRbX19sZW5dOwog
ICAgX19yZXMgPSBfTV90cmFuc2Zvcm0oX19jLCBfX3AsIF9fbGVuKTsKICB9CgogICAgICAgX19y
ZXQuYXBwZW5kKF9fYywgX19yZXMpOwogICAgICAgX19wICs9IGNoYXJfdHJhaXRzPF9DaGFyVD46
Omxlbmd0aChfX3ApOwogICAgICAgaWYgKF9fcCA9PSBfX3BlbmQpCiAgYnJlYWs7CgogICAgICAg
X19wKys7CiAgICAgICBfX3JldC5wdXNoX2JhY2soX0NoYXJUKCkpOwogICAgIH0KIH0KICAgICAg
aWYgKGZhbHNlKQogewogICBkZWxldGUgW10gX19jOwogICA7CiB9CgogICAgICBkZWxldGUgW10g
X19jOwoKICAgICAgcmV0dXJuIF9fcmV0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQ+CiAgICBsb25nCiAgICBjb2xsYXRlPF9DaGFyVD46OgogICAgZG9faGFzaChjb25zdCBfQ2hh
clQqIF9fbG8sIGNvbnN0IF9DaGFyVCogX19oaSkgY29uc3QKICAgIHsKICAgICAgdW5zaWduZWQg
bG9uZyBfX3ZhbCA9IDA7CiAgICAgIGZvciAoOyBfX2xvIDwgX19oaTsgKytfX2xvKQogX192YWwg
PQogICAqX19sbyArICgoX192YWwgPDwgNykKICAgICB8IChfX3ZhbCA+PiAoX19nbnVfY3h4Ojpf
X251bWVyaWNfdHJhaXRzPHVuc2lnbmVkIGxvbmc+OjoKICAgIF9fZGlnaXRzIC0gNykpKTsKICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmc+KF9fdmFsKTsKICAgIH0KCgoKCiAgZXh0ZXJuIHRl
bXBsYXRlIGNsYXNzIGNvbGxhdGU8Y2hhcj47CiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGNvbGxh
dGVfYnluYW1lPGNoYXI+OwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGNvbnN0IGNvbGxhdGU8Y2hh
cj4mCiAgICB1c2VfZmFjZXQ8Y29sbGF0ZTxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOwoKICBleHRl
cm4gdGVtcGxhdGUKICAgIGJvb2wKICAgIGhhc19mYWNldDxjb2xsYXRlPGNoYXI+ID4oY29uc3Qg
bG9jYWxlJik7CgoKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgY29sbGF0ZTx3Y2hhcl90PjsKICBl
eHRlcm4gdGVtcGxhdGUgY2xhc3MgY29sbGF0ZV9ieW5hbWU8d2NoYXJfdD47CgogIGV4dGVybiB0
ZW1wbGF0ZQogICAgY29uc3QgY29sbGF0ZTx3Y2hhcl90PiYKICAgIHVzZV9mYWNldDxjb2xsYXRl
PHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxlJik7CgogIGV4dGVybiB0ZW1wbGF0ZQogICAgYm9vbAog
ICAgaGFzX2ZhY2V0PGNvbGxhdGU8d2NoYXJfdD4gPihjb25zdCBsb2NhbGUmKTsKCgoKCn0KIyA3
ODggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvYml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAyIDMKIyA0MiAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2lvc19iYXNlLmgiIDIgMwoK
bmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0Iikp
KQp7CgoKCgoKCiAgZW51bSBfSW9zX0ZtdGZsYWdzCiAgICB7CiAgICAgIF9TX2Jvb2xhbHBoYSA9
IDFMIDw8IDAsCiAgICAgIF9TX2RlYyA9IDFMIDw8IDEsCiAgICAgIF9TX2ZpeGVkID0gMUwgPDwg
MiwKICAgICAgX1NfaGV4ID0gMUwgPDwgMywKICAgICAgX1NfaW50ZXJuYWwgPSAxTCA8PCA0LAog
ICAgICBfU19sZWZ0ID0gMUwgPDwgNSwKICAgICAgX1Nfb2N0ID0gMUwgPDwgNiwKICAgICAgX1Nf
cmlnaHQgPSAxTCA8PCA3LAogICAgICBfU19zY2llbnRpZmljID0gMUwgPDwgOCwKICAgICAgX1Nf
c2hvd2Jhc2UgPSAxTCA8PCA5LAogICAgICBfU19zaG93cG9pbnQgPSAxTCA8PCAxMCwKICAgICAg
X1Nfc2hvd3BvcyA9IDFMIDw8IDExLAogICAgICBfU19za2lwd3MgPSAxTCA8PCAxMiwKICAgICAg
X1NfdW5pdGJ1ZiA9IDFMIDw8IDEzLAogICAgICBfU191cHBlcmNhc2UgPSAxTCA8PCAxNCwKICAg
ICAgX1NfYWRqdXN0ZmllbGQgPSBfU19sZWZ0IHwgX1NfcmlnaHQgfCBfU19pbnRlcm5hbCwKICAg
ICAgX1NfYmFzZWZpZWxkID0gX1NfZGVjIHwgX1Nfb2N0IHwgX1NfaGV4LAogICAgICBfU19mbG9h
dGZpZWxkID0gX1Nfc2NpZW50aWZpYyB8IF9TX2ZpeGVkLAogICAgICBfU19pb3NfZm10ZmxhZ3Nf
ZW5kID0gMUwgPDwgMTYKICAgIH07CgogIGlubGluZSBjb25zdGV4cHIgX0lvc19GbXRmbGFncwog
IG9wZXJhdG9yJihfSW9zX0ZtdGZsYWdzIF9fYSwgX0lvc19GbXRmbGFncyBfX2IpCiAgeyByZXR1
cm4gX0lvc19GbXRmbGFncyhzdGF0aWNfY2FzdDxpbnQ+KF9fYSkgJiBzdGF0aWNfY2FzdDxpbnQ+
KF9fYikpOyB9CgogIGlubGluZSBjb25zdGV4cHIgX0lvc19GbXRmbGFncwogIG9wZXJhdG9yfChf
SW9zX0ZtdGZsYWdzIF9fYSwgX0lvc19GbXRmbGFncyBfX2IpCiAgeyByZXR1cm4gX0lvc19GbXRm
bGFncyhzdGF0aWNfY2FzdDxpbnQ+KF9fYSkgfCBzdGF0aWNfY2FzdDxpbnQ+KF9fYikpOyB9Cgog
IGlubGluZSBjb25zdGV4cHIgX0lvc19GbXRmbGFncwogIG9wZXJhdG9yXihfSW9zX0ZtdGZsYWdz
IF9fYSwgX0lvc19GbXRmbGFncyBfX2IpCiAgeyByZXR1cm4gX0lvc19GbXRmbGFncyhzdGF0aWNf
Y2FzdDxpbnQ+KF9fYSkgXiBzdGF0aWNfY2FzdDxpbnQ+KF9fYikpOyB9CgogIGlubGluZSBjb25z
dGV4cHIgX0lvc19GbXRmbGFncwogIG9wZXJhdG9yfihfSW9zX0ZtdGZsYWdzIF9fYSkKICB7IHJl
dHVybiBfSW9zX0ZtdGZsYWdzKH5zdGF0aWNfY2FzdDxpbnQ+KF9fYSkpOyB9CgogIGlubGluZSBj
b25zdCBfSW9zX0ZtdGZsYWdzJgogIG9wZXJhdG9yfD0oX0lvc19GbXRmbGFncyYgX19hLCBfSW9z
X0ZtdGZsYWdzIF9fYikKICB7IHJldHVybiBfX2EgPSBfX2EgfCBfX2I7IH0KCiAgaW5saW5lIGNv
bnN0IF9Jb3NfRm10ZmxhZ3MmCiAgb3BlcmF0b3ImPShfSW9zX0ZtdGZsYWdzJiBfX2EsIF9Jb3Nf
Rm10ZmxhZ3MgX19iKQogIHsgcmV0dXJuIF9fYSA9IF9fYSAmIF9fYjsgfQoKICBpbmxpbmUgY29u
c3QgX0lvc19GbXRmbGFncyYKICBvcGVyYXRvcl49KF9Jb3NfRm10ZmxhZ3MmIF9fYSwgX0lvc19G
bXRmbGFncyBfX2IpCiAgeyByZXR1cm4gX19hID0gX19hIF4gX19iOyB9CgoKICBlbnVtIF9Jb3Nf
T3Blbm1vZGUKICAgIHsKICAgICAgX1NfYXBwID0gMUwgPDwgMCwKICAgICAgX1NfYXRlID0gMUwg
PDwgMSwKICAgICAgX1NfYmluID0gMUwgPDwgMiwKICAgICAgX1NfaW4gPSAxTCA8PCAzLAogICAg
ICBfU19vdXQgPSAxTCA8PCA0LAogICAgICBfU190cnVuYyA9IDFMIDw8IDUsCiAgICAgIF9TX2lv
c19vcGVubW9kZV9lbmQgPSAxTCA8PCAxNgogICAgfTsKCiAgaW5saW5lIGNvbnN0ZXhwciBfSW9z
X09wZW5tb2RlCiAgb3BlcmF0b3ImKF9Jb3NfT3Blbm1vZGUgX19hLCBfSW9zX09wZW5tb2RlIF9f
YikKICB7IHJldHVybiBfSW9zX09wZW5tb2RlKHN0YXRpY19jYXN0PGludD4oX19hKSAmIHN0YXRp
Y19jYXN0PGludD4oX19iKSk7IH0KCiAgaW5saW5lIGNvbnN0ZXhwciBfSW9zX09wZW5tb2RlCiAg
b3BlcmF0b3J8KF9Jb3NfT3Blbm1vZGUgX19hLCBfSW9zX09wZW5tb2RlIF9fYikKICB7IHJldHVy
biBfSW9zX09wZW5tb2RlKHN0YXRpY19jYXN0PGludD4oX19hKSB8IHN0YXRpY19jYXN0PGludD4o
X19iKSk7IH0KCiAgaW5saW5lIGNvbnN0ZXhwciBfSW9zX09wZW5tb2RlCiAgb3BlcmF0b3JeKF9J
b3NfT3Blbm1vZGUgX19hLCBfSW9zX09wZW5tb2RlIF9fYikKICB7IHJldHVybiBfSW9zX09wZW5t
b2RlKHN0YXRpY19jYXN0PGludD4oX19hKSBeIHN0YXRpY19jYXN0PGludD4oX19iKSk7IH0KCiAg
aW5saW5lIGNvbnN0ZXhwciBfSW9zX09wZW5tb2RlCiAgb3BlcmF0b3J+KF9Jb3NfT3Blbm1vZGUg
X19hKQogIHsgcmV0dXJuIF9Jb3NfT3Blbm1vZGUofnN0YXRpY19jYXN0PGludD4oX19hKSk7IH0K
CiAgaW5saW5lIGNvbnN0IF9Jb3NfT3Blbm1vZGUmCiAgb3BlcmF0b3J8PShfSW9zX09wZW5tb2Rl
JiBfX2EsIF9Jb3NfT3Blbm1vZGUgX19iKQogIHsgcmV0dXJuIF9fYSA9IF9fYSB8IF9fYjsgfQoK
ICBpbmxpbmUgY29uc3QgX0lvc19PcGVubW9kZSYKICBvcGVyYXRvciY9KF9Jb3NfT3Blbm1vZGUm
IF9fYSwgX0lvc19PcGVubW9kZSBfX2IpCiAgeyByZXR1cm4gX19hID0gX19hICYgX19iOyB9Cgog
IGlubGluZSBjb25zdCBfSW9zX09wZW5tb2RlJgogIG9wZXJhdG9yXj0oX0lvc19PcGVubW9kZSYg
X19hLCBfSW9zX09wZW5tb2RlIF9fYikKICB7IHJldHVybiBfX2EgPSBfX2EgXiBfX2I7IH0KCgog
IGVudW0gX0lvc19Jb3N0YXRlCiAgICB7CiAgICAgIF9TX2dvb2RiaXQgPSAwLAogICAgICBfU19i
YWRiaXQgPSAxTCA8PCAwLAogICAgICBfU19lb2ZiaXQgPSAxTCA8PCAxLAogICAgICBfU19mYWls
Yml0ID0gMUwgPDwgMiwKICAgICAgX1NfaW9zX2lvc3RhdGVfZW5kID0gMUwgPDwgMTYKICAgIH07
CgogIGlubGluZSBjb25zdGV4cHIgX0lvc19Jb3N0YXRlCiAgb3BlcmF0b3ImKF9Jb3NfSW9zdGF0
ZSBfX2EsIF9Jb3NfSW9zdGF0ZSBfX2IpCiAgeyByZXR1cm4gX0lvc19Jb3N0YXRlKHN0YXRpY19j
YXN0PGludD4oX19hKSAmIHN0YXRpY19jYXN0PGludD4oX19iKSk7IH0KCiAgaW5saW5lIGNvbnN0
ZXhwciBfSW9zX0lvc3RhdGUKICBvcGVyYXRvcnwoX0lvc19Jb3N0YXRlIF9fYSwgX0lvc19Jb3N0
YXRlIF9fYikKICB7IHJldHVybiBfSW9zX0lvc3RhdGUoc3RhdGljX2Nhc3Q8aW50PihfX2EpIHwg
c3RhdGljX2Nhc3Q8aW50PihfX2IpKTsgfQoKICBpbmxpbmUgY29uc3RleHByIF9Jb3NfSW9zdGF0
ZQogIG9wZXJhdG9yXihfSW9zX0lvc3RhdGUgX19hLCBfSW9zX0lvc3RhdGUgX19iKQogIHsgcmV0
dXJuIF9Jb3NfSW9zdGF0ZShzdGF0aWNfY2FzdDxpbnQ+KF9fYSkgXiBzdGF0aWNfY2FzdDxpbnQ+
KF9fYikpOyB9CgogIGlubGluZSBjb25zdGV4cHIgX0lvc19Jb3N0YXRlCiAgb3BlcmF0b3J+KF9J
b3NfSW9zdGF0ZSBfX2EpCiAgeyByZXR1cm4gX0lvc19Jb3N0YXRlKH5zdGF0aWNfY2FzdDxpbnQ+
KF9fYSkpOyB9CgogIGlubGluZSBjb25zdCBfSW9zX0lvc3RhdGUmCiAgb3BlcmF0b3J8PShfSW9z
X0lvc3RhdGUmIF9fYSwgX0lvc19Jb3N0YXRlIF9fYikKICB7IHJldHVybiBfX2EgPSBfX2EgfCBf
X2I7IH0KCiAgaW5saW5lIGNvbnN0IF9Jb3NfSW9zdGF0ZSYKICBvcGVyYXRvciY9KF9Jb3NfSW9z
dGF0ZSYgX19hLCBfSW9zX0lvc3RhdGUgX19iKQogIHsgcmV0dXJuIF9fYSA9IF9fYSAmIF9fYjsg
fQoKICBpbmxpbmUgY29uc3QgX0lvc19Jb3N0YXRlJgogIG9wZXJhdG9yXj0oX0lvc19Jb3N0YXRl
JiBfX2EsIF9Jb3NfSW9zdGF0ZSBfX2IpCiAgeyByZXR1cm4gX19hID0gX19hIF4gX19iOyB9CgoK
ICBlbnVtIF9Jb3NfU2Vla2RpcgogICAgewogICAgICBfU19iZWcgPSAwLAogICAgICBfU19jdXIg
PSAxLAogICAgICBfU19lbmQgPSAyLAogICAgICBfU19pb3Nfc2Vla2Rpcl9lbmQgPSAxTCA8PCAx
NgogICAgfTsKIyAxOTkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9pb3NfYmFzZS5oIiAzCiAgY2xhc3MgaW9zX2Jhc2UKICB7CiAg
cHVibGljOgoKCgoKCgoKICAgIGNsYXNzIGZhaWx1cmUgOiBwdWJsaWMgZXhjZXB0aW9uCiAgICB7
CiAgICBwdWJsaWM6CgoKICAgICAgZXhwbGljaXQKICAgICAgZmFpbHVyZShjb25zdCBzdHJpbmcm
IF9fc3RyKSB0aHJvdygpOwoKCgogICAgICB2aXJ0dWFsCiAgICAgIH5mYWlsdXJlKCkgdGhyb3co
KTsKCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcioKICAgICAgd2hhdCgpIGNvbnN0IHRocm93KCk7
CgogICAgcHJpdmF0ZToKICAgICAgc3RyaW5nIF9NX21zZzsKICAgIH07CiMgMjU1ICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvaW9z
X2Jhc2UuaCIgMwogICAgdHlwZWRlZiBfSW9zX0ZtdGZsYWdzIGZtdGZsYWdzOwoKCiAgICBzdGF0
aWMgY29uc3QgZm10ZmxhZ3MgYm9vbGFscGhhID0gX1NfYm9vbGFscGhhOwoKCiAgICBzdGF0aWMg
Y29uc3QgZm10ZmxhZ3MgZGVjID0gX1NfZGVjOwoKCiAgICBzdGF0aWMgY29uc3QgZm10ZmxhZ3Mg
Zml4ZWQgPSBfU19maXhlZDsKCgogICAgc3RhdGljIGNvbnN0IGZtdGZsYWdzIGhleCA9IF9TX2hl
eDsKCgoKCiAgICBzdGF0aWMgY29uc3QgZm10ZmxhZ3MgaW50ZXJuYWwgPSBfU19pbnRlcm5hbDsK
CgoKICAgIHN0YXRpYyBjb25zdCBmbXRmbGFncyBsZWZ0ID0gX1NfbGVmdDsKCgogICAgc3RhdGlj
IGNvbnN0IGZtdGZsYWdzIG9jdCA9IF9TX29jdDsKCgoKICAgIHN0YXRpYyBjb25zdCBmbXRmbGFn
cyByaWdodCA9IF9TX3JpZ2h0OwoKCiAgICBzdGF0aWMgY29uc3QgZm10ZmxhZ3Mgc2NpZW50aWZp
YyA9IF9TX3NjaWVudGlmaWM7CgoKCiAgICBzdGF0aWMgY29uc3QgZm10ZmxhZ3Mgc2hvd2Jhc2Ug
PSBfU19zaG93YmFzZTsKCgoKICAgIHN0YXRpYyBjb25zdCBmbXRmbGFncyBzaG93cG9pbnQgPSBf
U19zaG93cG9pbnQ7CgoKICAgIHN0YXRpYyBjb25zdCBmbXRmbGFncyBzaG93cG9zID0gX1Nfc2hv
d3BvczsKCgogICAgc3RhdGljIGNvbnN0IGZtdGZsYWdzIHNraXB3cyA9IF9TX3NraXB3czsKCgog
ICAgc3RhdGljIGNvbnN0IGZtdGZsYWdzIHVuaXRidWYgPSBfU191bml0YnVmOwoKCgogICAgc3Rh
dGljIGNvbnN0IGZtdGZsYWdzIHVwcGVyY2FzZSA9IF9TX3VwcGVyY2FzZTsKCgogICAgc3RhdGlj
IGNvbnN0IGZtdGZsYWdzIGFkanVzdGZpZWxkID0gX1NfYWRqdXN0ZmllbGQ7CgoKICAgIHN0YXRp
YyBjb25zdCBmbXRmbGFncyBiYXNlZmllbGQgPSBfU19iYXNlZmllbGQ7CgoKICAgIHN0YXRpYyBj
b25zdCBmbXRmbGFncyBmbG9hdGZpZWxkID0gX1NfZmxvYXRmaWVsZDsKIyAzMzAgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9pb3Nf
YmFzZS5oIiAzCiAgICB0eXBlZGVmIF9Jb3NfSW9zdGF0ZSBpb3N0YXRlOwoKCgogICAgc3RhdGlj
IGNvbnN0IGlvc3RhdGUgYmFkYml0ID0gX1NfYmFkYml0OwoKCiAgICBzdGF0aWMgY29uc3QgaW9z
dGF0ZSBlb2ZiaXQgPSBfU19lb2ZiaXQ7CgoKCgogICAgc3RhdGljIGNvbnN0IGlvc3RhdGUgZmFp
bGJpdCA9IF9TX2ZhaWxiaXQ7CgoKICAgIHN0YXRpYyBjb25zdCBpb3N0YXRlIGdvb2RiaXQgPSBf
U19nb29kYml0OwojIDM2MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL2lvc19iYXNlLmgiIDMKICAgIHR5cGVkZWYgX0lvc19PcGVu
bW9kZSBvcGVubW9kZTsKCgogICAgc3RhdGljIGNvbnN0IG9wZW5tb2RlIGFwcCA9IF9TX2FwcDsK
CgogICAgc3RhdGljIGNvbnN0IG9wZW5tb2RlIGF0ZSA9IF9TX2F0ZTsKCgoKCiAgICBzdGF0aWMg
Y29uc3Qgb3Blbm1vZGUgYmluYXJ5ID0gX1NfYmluOwoKCiAgICBzdGF0aWMgY29uc3Qgb3Blbm1v
ZGUgaW4gPSBfU19pbjsKCgogICAgc3RhdGljIGNvbnN0IG9wZW5tb2RlIG91dCA9IF9TX291dDsK
CgogICAgc3RhdGljIGNvbnN0IG9wZW5tb2RlIHRydW5jID0gX1NfdHJ1bmM7CiMgMzkzICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMv
aW9zX2Jhc2UuaCIgMwogICAgdHlwZWRlZiBfSW9zX1NlZWtkaXIgc2Vla2RpcjsKCgogICAgc3Rh
dGljIGNvbnN0IHNlZWtkaXIgYmVnID0gX1NfYmVnOwoKCiAgICBzdGF0aWMgY29uc3Qgc2Vla2Rp
ciBjdXIgPSBfU19jdXI7CgoKICAgIHN0YXRpYyBjb25zdCBzZWVrZGlyIGVuZCA9IF9TX2VuZDsK
CgogICAgdHlwZWRlZiBpbnQgaW9fc3RhdGU7CiAgICB0eXBlZGVmIGludCBvcGVuX21vZGU7CiAg
ICB0eXBlZGVmIGludCBzZWVrX2RpcjsKCiAgICB0eXBlZGVmIHN0ZDo6c3RyZWFtcG9zIHN0cmVh
bXBvczsKICAgIHR5cGVkZWYgc3RkOjpzdHJlYW1vZmYgc3RyZWFtb2ZmOwojIDQxOSAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2lv
c19iYXNlLmgiIDMKICAgIGVudW0gZXZlbnQKICAgIHsKICAgICAgZXJhc2VfZXZlbnQsCiAgICAg
IGltYnVlX2V2ZW50LAogICAgICBjb3B5Zm10X2V2ZW50CiAgICB9OwojIDQzNiAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2lvc19i
YXNlLmgiIDMKICAgIHR5cGVkZWYgdm9pZCAoKmV2ZW50X2NhbGxiYWNrKSAoZXZlbnQgX19lLCBp
b3NfYmFzZSYgX19iLCBpbnQgX19pKTsKIyA0NDggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9pb3NfYmFzZS5oIiAzCiAgICB2b2lk
CiAgICByZWdpc3Rlcl9jYWxsYmFjayhldmVudF9jYWxsYmFjayBfX2ZuLCBpbnQgX19pbmRleCk7
CgogIHByb3RlY3RlZDoKICAgIHN0cmVhbXNpemUgX01fcHJlY2lzaW9uOwogICAgc3RyZWFtc2l6
ZSBfTV93aWR0aDsKICAgIGZtdGZsYWdzIF9NX2ZsYWdzOwogICAgaW9zdGF0ZSBfTV9leGNlcHRp
b247CiAgICBpb3N0YXRlIF9NX3N0cmVhbWJ1Zl9zdGF0ZTsKCgoKICAgIHN0cnVjdCBfQ2FsbGJh
Y2tfbGlzdAogICAgewoKICAgICAgX0NhbGxiYWNrX2xpc3QqIF9NX25leHQ7CiAgICAgIGlvc19i
YXNlOjpldmVudF9jYWxsYmFjayBfTV9mbjsKICAgICAgaW50IF9NX2luZGV4OwogICAgICBfQXRv
bWljX3dvcmQgX01fcmVmY291bnQ7CgogICAgICBfQ2FsbGJhY2tfbGlzdChpb3NfYmFzZTo6ZXZl
bnRfY2FsbGJhY2sgX19mbiwgaW50IF9faW5kZXgsCiAgICAgICBfQ2FsbGJhY2tfbGlzdCogX19j
YikKICAgICAgOiBfTV9uZXh0KF9fY2IpLCBfTV9mbihfX2ZuKSwgX01faW5kZXgoX19pbmRleCks
IF9NX3JlZmNvdW50KDApIHsgfQoKICAgICAgdm9pZAogICAgICBfTV9hZGRfcmVmZXJlbmNlKCkg
eyBfX2dudV9jeHg6Ol9fYXRvbWljX2FkZF9kaXNwYXRjaCgmX01fcmVmY291bnQsIDEpOyB9CgoK
ICAgICAgaW50CiAgICAgIF9NX3JlbW92ZV9yZWZlcmVuY2UoKQogICAgICB7CgogICAgICAgIDsK
ICAgICAgICBpbnQgX19yZXMgPSBfX2dudV9jeHg6Ol9fZXhjaGFuZ2VfYW5kX2FkZF9kaXNwYXRj
aCgmX01fcmVmY291bnQsIC0xKTsKICAgICAgICBpZiAoX19yZXMgPT0gMCkKICAgICAgICAgIHsK
ICAgICAgICAgICAgOwogICAgICAgICAgfQogICAgICAgIHJldHVybiBfX3JlczsKICAgICAgfQog
ICAgfTsKCiAgICAgX0NhbGxiYWNrX2xpc3QqIF9NX2NhbGxiYWNrczsKCiAgICB2b2lkCiAgICBf
TV9jYWxsX2NhbGxiYWNrcyhldmVudCBfX2V2KSB0aHJvdygpOwoKICAgIHZvaWQKICAgIF9NX2Rp
c3Bvc2VfY2FsbGJhY2tzKHZvaWQpIHRocm93KCk7CgoKICAgIHN0cnVjdCBfV29yZHMKICAgIHsK
ICAgICAgdm9pZCogX01fcHdvcmQ7CiAgICAgIGxvbmcgX01faXdvcmQ7CiAgICAgIF9Xb3Jkcygp
IDogX01fcHdvcmQoMCksIF9NX2l3b3JkKDApIHsgfQogICAgfTsKCgogICAgX1dvcmRzIF9NX3dv
cmRfemVybzsKCgoKICAgIGVudW0geyBfU19sb2NhbF93b3JkX3NpemUgPSA4IH07CiAgICBfV29y
ZHMgX01fbG9jYWxfd29yZFtfU19sb2NhbF93b3JkX3NpemVdOwoKCiAgICBpbnQgX01fd29yZF9z
aXplOwogICAgX1dvcmRzKiBfTV93b3JkOwoKICAgIF9Xb3JkcyYKICAgIF9NX2dyb3dfd29yZHMo
aW50IF9faW5kZXgsIGJvb2wgX19pd29yZCk7CgoKICAgIGxvY2FsZSBfTV9pb3NfbG9jYWxlOwoK
ICAgIHZvaWQKICAgIF9NX2luaXQoKSB0aHJvdygpOwoKICBwdWJsaWM6CgoKCgoKICAgIGNsYXNz
IEluaXQKICAgIHsKICAgICAgZnJpZW5kIGNsYXNzIGlvc19iYXNlOwogICAgcHVibGljOgogICAg
ICBJbml0KCk7CiAgICAgIH5Jbml0KCk7CgogICAgcHJpdmF0ZToKICAgICAgc3RhdGljIF9BdG9t
aWNfd29yZCBfU19yZWZjb3VudDsKICAgICAgc3RhdGljIGJvb2wgX1Nfc3luY2VkX3dpdGhfc3Rk
aW87CiAgICB9OwoKCgoKCgogICAgZm10ZmxhZ3MKICAgIGZsYWdzKCkgY29uc3QKICAgIHsgcmV0
dXJuIF9NX2ZsYWdzOyB9CiMgNTYxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvaW9zX2Jhc2UuaCIgMwogICAgZm10ZmxhZ3MKICAg
IGZsYWdzKGZtdGZsYWdzIF9fZm10ZmwpCiAgICB7CiAgICAgIGZtdGZsYWdzIF9fb2xkID0gX01f
ZmxhZ3M7CiAgICAgIF9NX2ZsYWdzID0gX19mbXRmbDsKICAgICAgcmV0dXJuIF9fb2xkOwogICAg
fQojIDU3NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL2lvc19iYXNlLmgiIDMKICAgIGZtdGZsYWdzCiAgICBzZXRmKGZtdGZsYWdz
IF9fZm10ZmwpCiAgICB7CiAgICAgIGZtdGZsYWdzIF9fb2xkID0gX01fZmxhZ3M7CiAgICAgIF9N
X2ZsYWdzIHw9IF9fZm10Zmw7CiAgICAgIHJldHVybiBfX29sZDsKICAgIH0KIyA1OTQgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9p
b3NfYmFzZS5oIiAzCiAgICBmbXRmbGFncwogICAgc2V0ZihmbXRmbGFncyBfX2ZtdGZsLCBmbXRm
bGFncyBfX21hc2spCiAgICB7CiAgICAgIGZtdGZsYWdzIF9fb2xkID0gX01fZmxhZ3M7CiAgICAg
IF9NX2ZsYWdzICY9IH5fX21hc2s7CiAgICAgIF9NX2ZsYWdzIHw9IChfX2ZtdGZsICYgX19tYXNr
KTsKICAgICAgcmV0dXJuIF9fb2xkOwogICAgfQoKCgoKCgoKICAgIHZvaWQKICAgIHVuc2V0Zihm
bXRmbGFncyBfX21hc2spCiAgICB7IF9NX2ZsYWdzICY9IH5fX21hc2s7IH0KIyA2MjAgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9p
b3NfYmFzZS5oIiAzCiAgICBzdHJlYW1zaXplCiAgICBwcmVjaXNpb24oKSBjb25zdAogICAgeyBy
ZXR1cm4gX01fcHJlY2lzaW9uOyB9CgoKCgoKCiAgICBzdHJlYW1zaXplCiAgICBwcmVjaXNpb24o
c3RyZWFtc2l6ZSBfX3ByZWMpCiAgICB7CiAgICAgIHN0cmVhbXNpemUgX19vbGQgPSBfTV9wcmVj
aXNpb247CiAgICAgIF9NX3ByZWNpc2lvbiA9IF9fcHJlYzsKICAgICAgcmV0dXJuIF9fb2xkOwog
ICAgfQoKCgoKCgoKICAgIHN0cmVhbXNpemUKICAgIHdpZHRoKCkgY29uc3QKICAgIHsgcmV0dXJu
IF9NX3dpZHRoOyB9CgoKCgoKCiAgICBzdHJlYW1zaXplCiAgICB3aWR0aChzdHJlYW1zaXplIF9f
d2lkZSkKICAgIHsKICAgICAgc3RyZWFtc2l6ZSBfX29sZCA9IF9NX3dpZHRoOwogICAgICBfTV93
aWR0aCA9IF9fd2lkZTsKICAgICAgcmV0dXJuIF9fb2xkOwogICAgfQojIDY3MSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2lvc19i
YXNlLmgiIDMKICAgIHN0YXRpYyBib29sCiAgICBzeW5jX3dpdGhfc3RkaW8oYm9vbCBfX3N5bmMg
PSB0cnVlKTsKIyA2ODMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9pb3NfYmFzZS5oIiAzCiAgICBsb2NhbGUKICAgIGltYnVlKGNv
bnN0IGxvY2FsZSYgX19sb2MpIHRocm93KCk7CiMgNjk0ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvaW9zX2Jhc2UuaCIgMwogICAg
bG9jYWxlCiAgICBnZXRsb2MoKSBjb25zdAogICAgeyByZXR1cm4gX01faW9zX2xvY2FsZTsgfQoj
IDcwNSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL2lvc19iYXNlLmgiIDMKICAgIGNvbnN0IGxvY2FsZSYKICAgIF9NX2dldGxvYygp
IGNvbnN0CiAgICB7IHJldHVybiBfTV9pb3NfbG9jYWxlOyB9CiMgNzI0ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvaW9zX2Jhc2Uu
aCIgMwogICAgc3RhdGljIGludAogICAgeGFsbG9jKCkgdGhyb3coKTsKIyA3NDAgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9pb3Nf
YmFzZS5oIiAzCiAgICBsb25nJgogICAgaXdvcmQoaW50IF9faXgpCiAgICB7CiAgICAgIF9Xb3Jk
cyYgX193b3JkID0gKF9faXggPCBfTV93b3JkX3NpemUpCiAgID8gX01fd29yZFtfX2l4XSA6IF9N
X2dyb3dfd29yZHMoX19peCwgdHJ1ZSk7CiAgICAgIHJldHVybiBfX3dvcmQuX01faXdvcmQ7CiAg
ICB9CiMgNzYxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2JpdHMvaW9zX2Jhc2UuaCIgMwogICAgdm9pZComCiAgICBwd29yZChpbnQgX19p
eCkKICAgIHsKICAgICAgX1dvcmRzJiBfX3dvcmQgPSAoX19peCA8IF9NX3dvcmRfc2l6ZSkKICAg
PyBfTV93b3JkW19faXhdIDogX01fZ3Jvd193b3JkcyhfX2l4LCBmYWxzZSk7CiAgICAgIHJldHVy
biBfX3dvcmQuX01fcHdvcmQ7CiAgICB9CiMgNzc4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvaW9zX2Jhc2UuaCIgMwogICAgdmly
dHVhbCB+aW9zX2Jhc2UoKTsKCiAgcHJvdGVjdGVkOgogICAgaW9zX2Jhc2UoKSB0aHJvdyAoKTsK
CgoKICBwcml2YXRlOgogICAgaW9zX2Jhc2UoY29uc3QgaW9zX2Jhc2UmKTsKCiAgICBpb3NfYmFz
ZSYKICAgIG9wZXJhdG9yPShjb25zdCBpb3NfYmFzZSYpOwogIH07CgoKCiAgaW5saW5lIGlvc19i
YXNlJgogIGJvb2xhbHBoYShpb3NfYmFzZSYgX19iYXNlKQogIHsKICAgIF9fYmFzZS5zZXRmKGlv
c19iYXNlOjpib29sYWxwaGEpOwogICAgcmV0dXJuIF9fYmFzZTsKICB9CgoKICBpbmxpbmUgaW9z
X2Jhc2UmCiAgbm9ib29sYWxwaGEoaW9zX2Jhc2UmIF9fYmFzZSkKICB7CiAgICBfX2Jhc2UudW5z
ZXRmKGlvc19iYXNlOjpib29sYWxwaGEpOwogICAgcmV0dXJuIF9fYmFzZTsKICB9CgoKICBpbmxp
bmUgaW9zX2Jhc2UmCiAgc2hvd2Jhc2UoaW9zX2Jhc2UmIF9fYmFzZSkKICB7CiAgICBfX2Jhc2Uu
c2V0Zihpb3NfYmFzZTo6c2hvd2Jhc2UpOwogICAgcmV0dXJuIF9fYmFzZTsKICB9CgoKICBpbmxp
bmUgaW9zX2Jhc2UmCiAgbm9zaG93YmFzZShpb3NfYmFzZSYgX19iYXNlKQogIHsKICAgIF9fYmFz
ZS51bnNldGYoaW9zX2Jhc2U6OnNob3diYXNlKTsKICAgIHJldHVybiBfX2Jhc2U7CiAgfQoKCiAg
aW5saW5lIGlvc19iYXNlJgogIHNob3dwb2ludChpb3NfYmFzZSYgX19iYXNlKQogIHsKICAgIF9f
YmFzZS5zZXRmKGlvc19iYXNlOjpzaG93cG9pbnQpOwogICAgcmV0dXJuIF9fYmFzZTsKICB9CgoK
ICBpbmxpbmUgaW9zX2Jhc2UmCiAgbm9zaG93cG9pbnQoaW9zX2Jhc2UmIF9fYmFzZSkKICB7CiAg
ICBfX2Jhc2UudW5zZXRmKGlvc19iYXNlOjpzaG93cG9pbnQpOwogICAgcmV0dXJuIF9fYmFzZTsK
ICB9CgoKICBpbmxpbmUgaW9zX2Jhc2UmCiAgc2hvd3Bvcyhpb3NfYmFzZSYgX19iYXNlKQogIHsK
ICAgIF9fYmFzZS5zZXRmKGlvc19iYXNlOjpzaG93cG9zKTsKICAgIHJldHVybiBfX2Jhc2U7CiAg
fQoKCiAgaW5saW5lIGlvc19iYXNlJgogIG5vc2hvd3Bvcyhpb3NfYmFzZSYgX19iYXNlKQogIHsK
ICAgIF9fYmFzZS51bnNldGYoaW9zX2Jhc2U6OnNob3dwb3MpOwogICAgcmV0dXJuIF9fYmFzZTsK
ICB9CgoKICBpbmxpbmUgaW9zX2Jhc2UmCiAgc2tpcHdzKGlvc19iYXNlJiBfX2Jhc2UpCiAgewog
ICAgX19iYXNlLnNldGYoaW9zX2Jhc2U6OnNraXB3cyk7CiAgICByZXR1cm4gX19iYXNlOwogIH0K
CgogIGlubGluZSBpb3NfYmFzZSYKICBub3NraXB3cyhpb3NfYmFzZSYgX19iYXNlKQogIHsKICAg
IF9fYmFzZS51bnNldGYoaW9zX2Jhc2U6OnNraXB3cyk7CiAgICByZXR1cm4gX19iYXNlOwogIH0K
CgogIGlubGluZSBpb3NfYmFzZSYKICB1cHBlcmNhc2UoaW9zX2Jhc2UmIF9fYmFzZSkKICB7CiAg
ICBfX2Jhc2Uuc2V0Zihpb3NfYmFzZTo6dXBwZXJjYXNlKTsKICAgIHJldHVybiBfX2Jhc2U7CiAg
fQoKCiAgaW5saW5lIGlvc19iYXNlJgogIG5vdXBwZXJjYXNlKGlvc19iYXNlJiBfX2Jhc2UpCiAg
ewogICAgX19iYXNlLnVuc2V0Zihpb3NfYmFzZTo6dXBwZXJjYXNlKTsKICAgIHJldHVybiBfX2Jh
c2U7CiAgfQoKCiAgaW5saW5lIGlvc19iYXNlJgogIHVuaXRidWYoaW9zX2Jhc2UmIF9fYmFzZSkK
ICB7CiAgICAgX19iYXNlLnNldGYoaW9zX2Jhc2U6OnVuaXRidWYpOwogICAgIHJldHVybiBfX2Jh
c2U7CiAgfQoKCiAgaW5saW5lIGlvc19iYXNlJgogIG5vdW5pdGJ1Zihpb3NfYmFzZSYgX19iYXNl
KQogIHsKICAgICBfX2Jhc2UudW5zZXRmKGlvc19iYXNlOjp1bml0YnVmKTsKICAgICByZXR1cm4g
X19iYXNlOwogIH0KCgoKICBpbmxpbmUgaW9zX2Jhc2UmCiAgaW50ZXJuYWwoaW9zX2Jhc2UmIF9f
YmFzZSkKICB7CiAgICAgX19iYXNlLnNldGYoaW9zX2Jhc2U6OmludGVybmFsLCBpb3NfYmFzZTo6
YWRqdXN0ZmllbGQpOwogICAgIHJldHVybiBfX2Jhc2U7CiAgfQoKCiAgaW5saW5lIGlvc19iYXNl
JgogIGxlZnQoaW9zX2Jhc2UmIF9fYmFzZSkKICB7CiAgICBfX2Jhc2Uuc2V0Zihpb3NfYmFzZTo6
bGVmdCwgaW9zX2Jhc2U6OmFkanVzdGZpZWxkKTsKICAgIHJldHVybiBfX2Jhc2U7CiAgfQoKCiAg
aW5saW5lIGlvc19iYXNlJgogIHJpZ2h0KGlvc19iYXNlJiBfX2Jhc2UpCiAgewogICAgX19iYXNl
LnNldGYoaW9zX2Jhc2U6OnJpZ2h0LCBpb3NfYmFzZTo6YWRqdXN0ZmllbGQpOwogICAgcmV0dXJu
IF9fYmFzZTsKICB9CgoKCiAgaW5saW5lIGlvc19iYXNlJgogIGRlYyhpb3NfYmFzZSYgX19iYXNl
KQogIHsKICAgIF9fYmFzZS5zZXRmKGlvc19iYXNlOjpkZWMsIGlvc19iYXNlOjpiYXNlZmllbGQp
OwogICAgcmV0dXJuIF9fYmFzZTsKICB9CgoKICBpbmxpbmUgaW9zX2Jhc2UmCiAgaGV4KGlvc19i
YXNlJiBfX2Jhc2UpCiAgewogICAgX19iYXNlLnNldGYoaW9zX2Jhc2U6OmhleCwgaW9zX2Jhc2U6
OmJhc2VmaWVsZCk7CiAgICByZXR1cm4gX19iYXNlOwogIH0KCgogIGlubGluZSBpb3NfYmFzZSYK
ICBvY3QoaW9zX2Jhc2UmIF9fYmFzZSkKICB7CiAgICBfX2Jhc2Uuc2V0Zihpb3NfYmFzZTo6b2N0
LCBpb3NfYmFzZTo6YmFzZWZpZWxkKTsKICAgIHJldHVybiBfX2Jhc2U7CiAgfQoKCgogIGlubGlu
ZSBpb3NfYmFzZSYKICBmaXhlZChpb3NfYmFzZSYgX19iYXNlKQogIHsKICAgIF9fYmFzZS5zZXRm
KGlvc19iYXNlOjpmaXhlZCwgaW9zX2Jhc2U6OmZsb2F0ZmllbGQpOwogICAgcmV0dXJuIF9fYmFz
ZTsKICB9CgoKICBpbmxpbmUgaW9zX2Jhc2UmCiAgc2NpZW50aWZpYyhpb3NfYmFzZSYgX19iYXNl
KQogIHsKICAgIF9fYmFzZS5zZXRmKGlvc19iYXNlOjpzY2llbnRpZmljLCBpb3NfYmFzZTo6Zmxv
YXRmaWVsZCk7CiAgICByZXR1cm4gX19iYXNlOwogIH0KCgp9CiMgNDMgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvaW9zIiAyIDMKIyAxICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3N0
cmVhbWJ1ZiIgMSAzCiMgMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvc3RyZWFtYnVmIiAzCiNkZWZpbmUgX0dMSUJYWF9TVFJFQU1CVUYg
MQoKICAgICAgIAojIDM3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL3N0cmVhbWJ1ZiIgMwojIDQ1ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3N0cmVhbWJ1ZiIgMwpuYW1lc3BhY2Ug
c3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0cmVhbXNpemUK
ICAgIF9fY29weV9zdHJlYW1idWZzX2VvZihiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRz
PiosCiAgICAgYmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4qLCBib29sJik7CiMgMTE5
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L3N0cmVhbWJ1ZiIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cz4KICAgIGNsYXNzIGJhc2ljX3N0cmVhbWJ1ZgogICAgewogICAgcHVibGljOgoKCgoKCgogICAg
ICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgX1RyYWl0cyB0cmFpdHNf
dHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6aW50X3R5cGUgaW50X3R5
cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OnBvc190eXBlIHBvc190eXBl
OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBlOjpvZmZfdHlwZSBvZmZfdHlwZTsK
CgoKCiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyZWFtYnVmPGNoYXJfdHlwZSwgdHJhaXRzX3R5cGU+
IF9fc3RyZWFtYnVmX3R5cGU7CgoKICAgICAgZnJpZW5kIGNsYXNzIGJhc2ljX2lvczxjaGFyX3R5
cGUsIHRyYWl0c190eXBlPjsKICAgICAgZnJpZW5kIGNsYXNzIGJhc2ljX2lzdHJlYW08Y2hhcl90
eXBlLCB0cmFpdHNfdHlwZT47CiAgICAgIGZyaWVuZCBjbGFzcyBiYXNpY19vc3RyZWFtPGNoYXJf
dHlwZSwgdHJhaXRzX3R5cGU+OwogICAgICBmcmllbmQgY2xhc3MgaXN0cmVhbWJ1Zl9pdGVyYXRv
cjxjaGFyX3R5cGUsIHRyYWl0c190eXBlPjsKICAgICAgZnJpZW5kIGNsYXNzIG9zdHJlYW1idWZf
aXRlcmF0b3I8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT47CgogICAgICBmcmllbmQgc3RyZWFtc2l6
ZQogICAgICBfX2NvcHlfc3RyZWFtYnVmc19lb2Y8PihiYXNpY19zdHJlYW1idWYqLCBiYXNpY19z
dHJlYW1idWYqLCBib29sJik7CgogICAgICB0ZW1wbGF0ZTxib29sIF9Jc01vdmUsIHR5cGVuYW1l
IF9DaGFyVDI+CiAgICAgICAgZnJpZW5kIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8
X19pc19jaGFyPF9DaGFyVDI+OjpfX3ZhbHVlLAogICAgICAgICAgICBfQ2hhclQyKj46Ol9fdHlw
ZQogICAgICAgIF9fY29weV9tb3ZlX2EyKGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUMj4sCiAg
ICAgICAgIGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUMj4sIF9DaGFyVDIqKTsKCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVDI+CiAgICAgICAgZnJpZW5kIHR5cGVuYW1lIF9fZ251X2N4
eDo6X19lbmFibGVfaWY8X19pc19jaGFyPF9DaGFyVDI+OjpfX3ZhbHVlLAogICAgICBpc3RyZWFt
YnVmX2l0ZXJhdG9yPF9DaGFyVDI+ID46Ol9fdHlwZQogICAgICAgIGZpbmQoaXN0cmVhbWJ1Zl9p
dGVyYXRvcjxfQ2hhclQyPiwgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQyPiwKICAgICAgY29u
c3QgX0NoYXJUMiYpOwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUMiwgdHlwZW5hbWUg
X1RyYWl0czI+CiAgICAgICAgZnJpZW5kIGJhc2ljX2lzdHJlYW08X0NoYXJUMiwgX1RyYWl0czI+
JgogICAgICAgIG9wZXJhdG9yPj4oYmFzaWNfaXN0cmVhbTxfQ2hhclQyLCBfVHJhaXRzMj4mLCBf
Q2hhclQyKik7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQyLCB0eXBlbmFtZSBfVHJh
aXRzMiwgdHlwZW5hbWUgX0FsbG9jPgogICAgICAgIGZyaWVuZCBiYXNpY19pc3RyZWFtPF9DaGFy
VDIsIF9UcmFpdHMyPiYKICAgICAgICBvcGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08X0NoYXJUMiwg
X1RyYWl0czI+JiwKICAgICBiYXNpY19zdHJpbmc8X0NoYXJUMiwgX1RyYWl0czIsIF9BbGxvYz4m
KTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVDIsIHR5cGVuYW1lIF9UcmFpdHMyLCB0
eXBlbmFtZSBfQWxsb2M+CiAgICAgICAgZnJpZW5kIGJhc2ljX2lzdHJlYW08X0NoYXJUMiwgX1Ry
YWl0czI+JgogICAgICAgIGdldGxpbmUoYmFzaWNfaXN0cmVhbTxfQ2hhclQyLCBfVHJhaXRzMj4m
LAogIGJhc2ljX3N0cmluZzxfQ2hhclQyLCBfVHJhaXRzMiwgX0FsbG9jPiYsIF9DaGFyVDIpOwoK
ICAgIHByb3RlY3RlZDoKCgoKCgoKCiAgICAgIGNoYXJfdHlwZSogX01faW5fYmVnOwogICAgICBj
aGFyX3R5cGUqIF9NX2luX2N1cjsKICAgICAgY2hhcl90eXBlKiBfTV9pbl9lbmQ7CiAgICAgIGNo
YXJfdHlwZSogX01fb3V0X2JlZzsKICAgICAgY2hhcl90eXBlKiBfTV9vdXRfY3VyOwogICAgICBj
aGFyX3R5cGUqIF9NX291dF9lbmQ7CgoKICAgICAgbG9jYWxlIF9NX2J1Zl9sb2NhbGU7CgogIHB1
YmxpYzoKCiAgICAgIHZpcnR1YWwKICAgICAgfmJhc2ljX3N0cmVhbWJ1ZigpCiAgICAgIHsgfQoj
IDIwOCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9zdHJlYW1idWYiIDMKICAgICAgbG9jYWxlCiAgICAgIHB1YmltYnVlKGNvbnN0IGxvY2Fs
ZSYgX19sb2MpCiAgICAgIHsKIGxvY2FsZSBfX3RtcCh0aGlzLT5nZXRsb2MoKSk7CiB0aGlzLT5p
bWJ1ZShfX2xvYyk7CiBfTV9idWZfbG9jYWxlID0gX19sb2M7CiByZXR1cm4gX190bXA7CiAgICAg
IH0KIyAyMjUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvc3RyZWFtYnVmIiAzCiAgICAgIGxvY2FsZQogICAgICBnZXRsb2MoKSBjb25zdAog
ICAgICB7IHJldHVybiBfTV9idWZfbG9jYWxlOyB9CiMgMjM4ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3N0cmVhbWJ1ZiIgMwogICAgICBi
YXNpY19zdHJlYW1idWYqCiAgICAgIHB1YnNldGJ1ZihjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6
ZSBfX24pCiAgICAgIHsgcmV0dXJuIHRoaXMtPnNldGJ1ZihfX3MsIF9fbik7IH0KIyAyNTAgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvc3Ry
ZWFtYnVmIiAzCiAgICAgIHBvc190eXBlCiAgICAgIHB1YnNlZWtvZmYob2ZmX3R5cGUgX19vZmYs
IGlvc19iYXNlOjpzZWVrZGlyIF9fd2F5LAogICBpb3NfYmFzZTo6b3Blbm1vZGUgX19tb2RlID0g
aW9zX2Jhc2U6OmluIHwgaW9zX2Jhc2U6Om91dCkKICAgICAgeyByZXR1cm4gdGhpcy0+c2Vla29m
ZihfX29mZiwgX193YXksIF9fbW9kZSk7IH0KIyAyNjIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvc3RyZWFtYnVmIiAzCiAgICAgIHBvc190
eXBlCiAgICAgIHB1YnNlZWtwb3MocG9zX3R5cGUgX19zcCwKICAgaW9zX2Jhc2U6Om9wZW5tb2Rl
IF9fbW9kZSA9IGlvc19iYXNlOjppbiB8IGlvc19iYXNlOjpvdXQpCiAgICAgIHsgcmV0dXJuIHRo
aXMtPnNlZWtwb3MoX19zcCwgX19tb2RlKTsgfQoKCgoKICAgICAgaW50CiAgICAgIHB1YnN5bmMo
KSB7IHJldHVybiB0aGlzLT5zeW5jKCk7IH0KIyAyODMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvc3RyZWFtYnVmIiAzCiAgICAgIHN0cmVh
bXNpemUKICAgICAgaW5fYXZhaWwoKQogICAgICB7CiBjb25zdCBzdHJlYW1zaXplIF9fcmV0ID0g
dGhpcy0+ZWdwdHIoKSAtIHRoaXMtPmdwdHIoKTsKIHJldHVybiBfX3JldCA/IF9fcmV0IDogdGhp
cy0+c2hvd21hbnljKCk7CiAgICAgIH0KIyAyOTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvc3RyZWFtYnVmIiAzCiAgICAgIGludF90eXBl
CiAgICAgIHNuZXh0YygpCiAgICAgIHsKIGludF90eXBlIF9fcmV0ID0gdHJhaXRzX3R5cGU6OmVv
ZigpOwogaWYgKF9fYnVpbHRpbl9leHBlY3QoIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZSh0aGlz
LT5zYnVtcGMoKSwKICAgICAgICAgICAgIF9fcmV0KSwgdHJ1ZSkpCiAgIF9fcmV0ID0gdGhpcy0+
c2dldGMoKTsKIHJldHVybiBfX3JldDsKICAgICAgfQojIDMxNSAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9zdHJlYW1idWYiIDMKICAgICAg
aW50X3R5cGUKICAgICAgc2J1bXBjKCkKICAgICAgewogaW50X3R5cGUgX19yZXQ7CiBpZiAoX19i
dWlsdGluX2V4cGVjdCh0aGlzLT5ncHRyKCkgPCB0aGlzLT5lZ3B0cigpLCB0cnVlKSkKICAgewog
ICAgIF9fcmV0ID0gdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKCp0aGlzLT5ncHRyKCkpOwogICAg
IHRoaXMtPmdidW1wKDEpOwogICB9CiBlbHNlCiAgIF9fcmV0ID0gdGhpcy0+dWZsb3coKTsKIHJl
dHVybiBfX3JldDsKICAgICAgfQojIDMzNyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9zdHJlYW1idWYiIDMKICAgICAgaW50X3R5cGUKICAg
ICAgc2dldGMoKQogICAgICB7CiBpbnRfdHlwZSBfX3JldDsKIGlmIChfX2J1aWx0aW5fZXhwZWN0
KHRoaXMtPmdwdHIoKSA8IHRoaXMtPmVncHRyKCksIHRydWUpKQogICBfX3JldCA9IHRyYWl0c190
eXBlOjp0b19pbnRfdHlwZSgqdGhpcy0+Z3B0cigpKTsKIGVsc2UKICAgX19yZXQgPSB0aGlzLT51
bmRlcmZsb3coKTsKIHJldHVybiBfX3JldDsKICAgICAgfQojIDM1NiAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9zdHJlYW1idWYiIDMKICAg
ICAgc3RyZWFtc2l6ZQogICAgICBzZ2V0bihjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24p
CiAgICAgIHsgcmV0dXJuIHRoaXMtPnhzZ2V0bihfX3MsIF9fbik7IH0KIyAzNzEgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvc3RyZWFtYnVm
IiAzCiAgICAgIGludF90eXBlCiAgICAgIHNwdXRiYWNrYyhjaGFyX3R5cGUgX19jKQogICAgICB7
CiBpbnRfdHlwZSBfX3JldDsKIGNvbnN0IGJvb2wgX190ZXN0cG9zID0gdGhpcy0+ZWJhY2soKSA8
IHRoaXMtPmdwdHIoKTsKIGlmIChfX2J1aWx0aW5fZXhwZWN0KCFfX3Rlc3Rwb3MgfHwKICAgICAg
ICAhdHJhaXRzX3R5cGU6OmVxKF9fYywgdGhpcy0+Z3B0cigpWy0xXSksIGZhbHNlKSkKICAgX19y
ZXQgPSB0aGlzLT5wYmFja2ZhaWwodHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKF9fYykpOwogZWxz
ZQogICB7CiAgICAgdGhpcy0+Z2J1bXAoLTEpOwogICAgIF9fcmV0ID0gdHJhaXRzX3R5cGU6OnRv
X2ludF90eXBlKCp0aGlzLT5ncHRyKCkpOwogICB9CiByZXR1cm4gX19yZXQ7CiAgICAgIH0KIyAz
OTYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvc3RyZWFtYnVmIiAzCiAgICAgIGludF90eXBlCiAgICAgIHN1bmdldGMoKQogICAgICB7CiBp
bnRfdHlwZSBfX3JldDsKIGlmIChfX2J1aWx0aW5fZXhwZWN0KHRoaXMtPmViYWNrKCkgPCB0aGlz
LT5ncHRyKCksIHRydWUpKQogICB7CiAgICAgdGhpcy0+Z2J1bXAoLTEpOwogICAgIF9fcmV0ID0g
dHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKCp0aGlzLT5ncHRyKCkpOwogICB9CiBlbHNlCiAgIF9f
cmV0ID0gdGhpcy0+cGJhY2tmYWlsKCk7CiByZXR1cm4gX19yZXQ7CiAgICAgIH0KIyA0MjMgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvc3Ry
ZWFtYnVmIiAzCiAgICAgIGludF90eXBlCiAgICAgIHNwdXRjKGNoYXJfdHlwZSBfX2MpCiAgICAg
IHsKIGludF90eXBlIF9fcmV0OwogaWYgKF9fYnVpbHRpbl9leHBlY3QodGhpcy0+cHB0cigpIDwg
dGhpcy0+ZXBwdHIoKSwgdHJ1ZSkpCiAgIHsKICAgICAqdGhpcy0+cHB0cigpID0gX19jOwogICAg
IHRoaXMtPnBidW1wKDEpOwogICAgIF9fcmV0ID0gdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKF9f
Yyk7CiAgIH0KIGVsc2UKICAgX19yZXQgPSB0aGlzLT5vdmVyZmxvdyh0cmFpdHNfdHlwZTo6dG9f
aW50X3R5cGUoX19jKSk7CiByZXR1cm4gX19yZXQ7CiAgICAgIH0KIyA0NDkgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvc3RyZWFtYnVmIiAz
CiAgICAgIHN0cmVhbXNpemUKICAgICAgc3B1dG4oY29uc3QgY2hhcl90eXBlKiBfX3MsIHN0cmVh
bXNpemUgX19uKQogICAgICB7IHJldHVybiB0aGlzLT54c3B1dG4oX19zLCBfX24pOyB9CgogICAg
cHJvdGVjdGVkOgojIDQ2MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9zdHJlYW1idWYiIDMKICAgICAgYmFzaWNfc3RyZWFtYnVmKCkKICAg
ICAgOiBfTV9pbl9iZWcoMCksIF9NX2luX2N1cigwKSwgX01faW5fZW5kKDApLAogICAgICBfTV9v
dXRfYmVnKDApLCBfTV9vdXRfY3VyKDApLCBfTV9vdXRfZW5kKDApLAogICAgICBfTV9idWZfbG9j
YWxlKGxvY2FsZSgpKQogICAgICB7IH0KIyA0ODEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvc3RyZWFtYnVmIiAzCiAgICAgIGNoYXJfdHlw
ZSoKICAgICAgZWJhY2soKSBjb25zdCB7IHJldHVybiBfTV9pbl9iZWc7IH0KCiAgICAgIGNoYXJf
dHlwZSoKICAgICAgZ3B0cigpIGNvbnN0IHsgcmV0dXJuIF9NX2luX2N1cjsgfQoKICAgICAgY2hh
cl90eXBlKgogICAgICBlZ3B0cigpIGNvbnN0IHsgcmV0dXJuIF9NX2luX2VuZDsgfQojIDQ5NyAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9z
dHJlYW1idWYiIDMKICAgICAgdm9pZAogICAgICBnYnVtcChpbnQgX19uKSB7IF9NX2luX2N1ciAr
PSBfX247IH0KIyA1MDggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvc3RyZWFtYnVmIiAzCiAgICAgIHZvaWQKICAgICAgc2V0ZyhjaGFyX3R5
cGUqIF9fZ2JlZywgY2hhcl90eXBlKiBfX2duZXh0LCBjaGFyX3R5cGUqIF9fZ2VuZCkKICAgICAg
ewogX01faW5fYmVnID0gX19nYmVnOwogX01faW5fY3VyID0gX19nbmV4dDsKIF9NX2luX2VuZCA9
IF9fZ2VuZDsKICAgICAgfQojIDUyOCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9zdHJlYW1idWYiIDMKICAgICAgY2hhcl90eXBlKgogICAg
ICBwYmFzZSgpIGNvbnN0IHsgcmV0dXJuIF9NX291dF9iZWc7IH0KCiAgICAgIGNoYXJfdHlwZSoK
ICAgICAgcHB0cigpIGNvbnN0IHsgcmV0dXJuIF9NX291dF9jdXI7IH0KCiAgICAgIGNoYXJfdHlw
ZSoKICAgICAgZXBwdHIoKSBjb25zdCB7IHJldHVybiBfTV9vdXRfZW5kOyB9CiMgNTQ0ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3N0cmVh
bWJ1ZiIgMwogICAgICB2b2lkCiAgICAgIHBidW1wKGludCBfX24pIHsgX01fb3V0X2N1ciArPSBf
X247IH0KIyA1NTQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvc3RyZWFtYnVmIiAzCiAgICAgIHZvaWQKICAgICAgc2V0cChjaGFyX3R5cGUq
IF9fcGJlZywgY2hhcl90eXBlKiBfX3BlbmQpCiAgICAgIHsKIF9NX291dF9iZWcgPSBfTV9vdXRf
Y3VyID0gX19wYmVnOwogX01fb3V0X2VuZCA9IF9fcGVuZDsKICAgICAgfQojIDU3NSAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9zdHJlYW1i
dWYiIDMKICAgICAgdmlydHVhbCB2b2lkCiAgICAgIGltYnVlKGNvbnN0IGxvY2FsZSYgX19sb2Mp
CiAgICAgIHsgfQojIDU5MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9zdHJlYW1idWYiIDMKICAgICAgdmlydHVhbCBiYXNpY19zdHJlYW1i
dWY8Y2hhcl90eXBlLF9UcmFpdHM+KgogICAgICBzZXRidWYoY2hhcl90eXBlKiwgc3RyZWFtc2l6
ZSkKICAgICAgeyByZXR1cm4gdGhpczsgfQojIDYwMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9zdHJlYW1idWYiIDMKICAgICAgdmlydHVh
bCBwb3NfdHlwZQogICAgICBzZWVrb2ZmKG9mZl90eXBlLCBpb3NfYmFzZTo6c2Vla2RpciwKICAg
ICAgIGlvc19iYXNlOjpvcGVubW9kZSA9IGlvc19iYXNlOjppbiB8IGlvc19iYXNlOjpvdXQpCiAg
ICAgIHsgcmV0dXJuIHBvc190eXBlKG9mZl90eXBlKC0xKSk7IH0KIyA2MTMgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvc3RyZWFtYnVmIiAz
CiAgICAgIHZpcnR1YWwgcG9zX3R5cGUKICAgICAgc2Vla3Bvcyhwb3NfdHlwZSwKICAgICAgIGlv
c19iYXNlOjpvcGVubW9kZSA9IGlvc19iYXNlOjppbiB8IGlvc19iYXNlOjpvdXQpCiAgICAgIHsg
cmV0dXJuIHBvc190eXBlKG9mZl90eXBlKC0xKSk7IH0KIyA2MjYgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvc3RyZWFtYnVmIiAzCiAgICAg
IHZpcnR1YWwgaW50CiAgICAgIHN5bmMoKSB7IHJldHVybiAwOyB9CiMgNjQ4ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3N0cmVhbWJ1ZiIg
MwogICAgICB2aXJ0dWFsIHN0cmVhbXNpemUKICAgICAgc2hvd21hbnljKCkgeyByZXR1cm4gMDsg
fQojIDY2NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9zdHJlYW1idWYiIDMKICAgICAgdmlydHVhbCBzdHJlYW1zaXplCiAgICAgIHhzZ2V0
bihjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24pOwojIDY4NiAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9zdHJlYW1idWYiIDMKICAg
ICAgdmlydHVhbCBpbnRfdHlwZQogICAgICB1bmRlcmZsb3coKQogICAgICB7IHJldHVybiB0cmFp
dHNfdHlwZTo6ZW9mKCk7IH0KIyA2OTkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvc3RyZWFtYnVmIiAzCiAgICAgIHZpcnR1YWwgaW50X3R5
cGUKICAgICAgdWZsb3coKQogICAgICB7CiBpbnRfdHlwZSBfX3JldCA9IHRyYWl0c190eXBlOjpl
b2YoKTsKIGNvbnN0IGJvb2wgX190ZXN0ZW9mID0gdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKHRo
aXMtPnVuZGVyZmxvdygpLAogICAgICAgX19yZXQpOwogaWYgKCFfX3Rlc3Rlb2YpCiAgIHsKICAg
ICBfX3JldCA9IHRyYWl0c190eXBlOjp0b19pbnRfdHlwZSgqdGhpcy0+Z3B0cigpKTsKICAgICB0
aGlzLT5nYnVtcCgxKTsKICAgfQogcmV0dXJuIF9fcmV0OwogICAgICB9CiMgNzIzICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3N0cmVhbWJ1
ZiIgMwogICAgICB2aXJ0dWFsIGludF90eXBlCiAgICAgIHBiYWNrZmFpbChpbnRfdHlwZSBfX2Mg
PSB0cmFpdHNfdHlwZTo6ZW9mKCkpCiAgICAgIHsgcmV0dXJuIHRyYWl0c190eXBlOjplb2YoKTsg
fQojIDc0MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9zdHJlYW1idWYiIDMKICAgICAgdmlydHVhbCBzdHJlYW1zaXplCiAgICAgIHhzcHV0
bihjb25zdCBjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24pOwojIDc2NyAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9zdHJlYW1idWYi
IDMKICAgICAgdmlydHVhbCBpbnRfdHlwZQogICAgICBvdmVyZmxvdyhpbnRfdHlwZSBfX2MgPSB0
cmFpdHNfdHlwZTo6ZW9mKCkpCiAgICAgIHsgcmV0dXJuIHRyYWl0c190eXBlOjplb2YoKTsgfQoK
CgogICAgcHVibGljOgojIDc4MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9zdHJlYW1idWYiIDMKICAgICAgdm9pZAogICAgICBzdG9zc2Mo
KQogICAgICB7CiBpZiAodGhpcy0+Z3B0cigpIDwgdGhpcy0+ZWdwdHIoKSkKICAgdGhpcy0+Z2J1
bXAoMSk7CiBlbHNlCiAgIHRoaXMtPnVmbG93KCk7CiAgICAgIH0KCgoKICAgICAgdm9pZAogICAg
ICBfX3NhZmVfZ2J1bXAoc3RyZWFtc2l6ZSBfX24pIHsgX01faW5fY3VyICs9IF9fbjsgfQoKICAg
ICAgdm9pZAogICAgICBfX3NhZmVfcGJ1bXAoc3RyZWFtc2l6ZSBfX24pIHsgX01fb3V0X2N1ciAr
PSBfX247IH0KCiAgICBwcml2YXRlOgoKCiAgICAgIGJhc2ljX3N0cmVhbWJ1Zihjb25zdCBiYXNp
Y19zdHJlYW1idWYmIF9fc2IpCiAgICAgIDogX01faW5fYmVnKF9fc2IuX01faW5fYmVnKSwgX01f
aW5fY3VyKF9fc2IuX01faW5fY3VyKSwKICAgICAgX01faW5fZW5kKF9fc2IuX01faW5fZW5kKSwg
X01fb3V0X2JlZyhfX3NiLl9NX291dF9iZWcpLAogICAgICBfTV9vdXRfY3VyKF9fc2IuX01fb3V0
X2N1ciksIF9NX291dF9lbmQoX19zYi5fTV9vdXRfY3VyKSwKICAgICAgX01fYnVmX2xvY2FsZShf
X3NiLl9NX2J1Zl9sb2NhbGUpCiAgICAgIHsgfQoKICAgICAgYmFzaWNfc3RyZWFtYnVmJgogICAg
ICBvcGVyYXRvcj0oY29uc3QgYmFzaWNfc3RyZWFtYnVmJikgeyByZXR1cm4gKnRoaXM7IH07CiAg
ICB9OwoKCiAgdGVtcGxhdGU8PgogICAgc3RyZWFtc2l6ZQogICAgX19jb3B5X3N0cmVhbWJ1ZnNf
ZW9mKGJhc2ljX3N0cmVhbWJ1ZjxjaGFyPiogX19zYmluLAogICAgIGJhc2ljX3N0cmVhbWJ1Zjxj
aGFyPiogX19zYm91dCwgYm9vbCYgX19pbmVvZik7CgogIHRlbXBsYXRlPD4KICAgIHN0cmVhbXNp
emUKICAgIF9fY29weV9zdHJlYW1idWZzX2VvZihiYXNpY19zdHJlYW1idWY8d2NoYXJfdD4qIF9f
c2JpbiwKICAgICBiYXNpY19zdHJlYW1idWY8d2NoYXJfdD4qIF9fc2JvdXQsIGJvb2wmIF9faW5l
b2YpOwoKCgp9CgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9zdHJlYW1idWYudGNjIiAxIDMKIyAzNSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0cmVhbWJ1
Zi50Y2MiIDMKI2RlZmluZSBfU1RSRUFNQlVGX1RDQyAxCgogICAgICAgCiMgMzggIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdHJl
YW1idWYudGNjIiAzCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlf
XyAoImRlZmF1bHQiKSkpCnsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg
X1RyYWl0cz4KICAgIHN0cmVhbXNpemUKICAgIGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFp
dHM+OjoKICAgIHhzZ2V0bihjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24pCiAgICB7CiAg
ICAgIHN0cmVhbXNpemUgX19yZXQgPSAwOwogICAgICB3aGlsZSAoX19yZXQgPCBfX24pCiB7CiAg
IGNvbnN0IHN0cmVhbXNpemUgX19idWZfbGVuID0gdGhpcy0+ZWdwdHIoKSAtIHRoaXMtPmdwdHIo
KTsKICAgaWYgKF9fYnVmX2xlbikKICAgICB7CiAgICAgICBjb25zdCBzdHJlYW1zaXplIF9fcmVt
YWluaW5nID0gX19uIC0gX19yZXQ7CiAgICAgICBjb25zdCBzdHJlYW1zaXplIF9fbGVuID0gc3Rk
OjptaW4oX19idWZfbGVuLCBfX3JlbWFpbmluZyk7CiAgICAgICB0cmFpdHNfdHlwZTo6Y29weShf
X3MsIHRoaXMtPmdwdHIoKSwgX19sZW4pOwogICAgICAgX19yZXQgKz0gX19sZW47CiAgICAgICBf
X3MgKz0gX19sZW47CiAgICAgICB0aGlzLT5fX3NhZmVfZ2J1bXAoX19sZW4pOwogICAgIH0KCiAg
IGlmIChfX3JldCA8IF9fbikKICAgICB7CiAgICAgICBjb25zdCBpbnRfdHlwZSBfX2MgPSB0aGlz
LT51ZmxvdygpOwogICAgICAgaWYgKCF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19jLCB0cmFp
dHNfdHlwZTo6ZW9mKCkpKQogIHsKICAgIHRyYWl0c190eXBlOjphc3NpZ24oKl9fcysrLCB0cmFp
dHNfdHlwZTo6dG9fY2hhcl90eXBlKF9fYykpOwogICAgKytfX3JldDsKICB9CiAgICAgICBlbHNl
CiAgYnJlYWs7CiAgICAgfQogfQogICAgICByZXR1cm4gX19yZXQ7CiAgICB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0cmVhbXNpemUKICAgIGJh
c2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIHhzcHV0bihjb25zdCBjaGFyX3R5
cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24pCiAgICB7CiAgICAgIHN0cmVhbXNpemUgX19yZXQgPSAw
OwogICAgICB3aGlsZSAoX19yZXQgPCBfX24pCiB7CiAgIGNvbnN0IHN0cmVhbXNpemUgX19idWZf
bGVuID0gdGhpcy0+ZXBwdHIoKSAtIHRoaXMtPnBwdHIoKTsKICAgaWYgKF9fYnVmX2xlbikKICAg
ICB7CiAgICAgICBjb25zdCBzdHJlYW1zaXplIF9fcmVtYWluaW5nID0gX19uIC0gX19yZXQ7CiAg
ICAgICBjb25zdCBzdHJlYW1zaXplIF9fbGVuID0gc3RkOjptaW4oX19idWZfbGVuLCBfX3JlbWFp
bmluZyk7CiAgICAgICB0cmFpdHNfdHlwZTo6Y29weSh0aGlzLT5wcHRyKCksIF9fcywgX19sZW4p
OwogICAgICAgX19yZXQgKz0gX19sZW47CiAgICAgICBfX3MgKz0gX19sZW47CiAgICAgICB0aGlz
LT5fX3NhZmVfcGJ1bXAoX19sZW4pOwogICAgIH0KCiAgIGlmIChfX3JldCA8IF9fbikKICAgICB7
CiAgICAgICBpbnRfdHlwZSBfX2MgPSB0aGlzLT5vdmVyZmxvdyh0cmFpdHNfdHlwZTo6dG9faW50
X3R5cGUoKl9fcykpOwogICAgICAgaWYgKCF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19jLCB0
cmFpdHNfdHlwZTo6ZW9mKCkpKQogIHsKICAgICsrX19yZXQ7CiAgICArK19fczsKICB9CiAgICAg
ICBlbHNlCiAgYnJlYWs7CiAgICAgfQogfQogICAgICByZXR1cm4gX19yZXQ7CiAgICB9CgoKCgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0cmVhbXNp
emUKICAgIF9fY29weV9zdHJlYW1idWZzX2VvZihiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJh
aXRzPiogX19zYmluLAogICAgIGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+KiBfX3Ni
b3V0LAogICAgIGJvb2wmIF9faW5lb2YpCiAgICB7CiAgICAgIHN0cmVhbXNpemUgX19yZXQgPSAw
OwogICAgICBfX2luZW9mID0gdHJ1ZTsKICAgICAgdHlwZW5hbWUgX1RyYWl0czo6aW50X3R5cGUg
X19jID0gX19zYmluLT5zZ2V0YygpOwogICAgICB3aGlsZSAoIV9UcmFpdHM6OmVxX2ludF90eXBl
KF9fYywgX1RyYWl0czo6ZW9mKCkpKQogewogICBfX2MgPSBfX3Nib3V0LT5zcHV0YyhfVHJhaXRz
Ojp0b19jaGFyX3R5cGUoX19jKSk7CiAgIGlmIChfVHJhaXRzOjplcV9pbnRfdHlwZShfX2MsIF9U
cmFpdHM6OmVvZigpKSkKICAgICB7CiAgICAgICBfX2luZW9mID0gZmFsc2U7CiAgICAgICBicmVh
azsKICAgICB9CiAgICsrX19yZXQ7CiAgIF9fYyA9IF9fc2Jpbi0+c25leHRjKCk7CiB9CiAgICAg
IHJldHVybiBfX3JldDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfVHJhaXRzPgogICAgaW5saW5lIHN0cmVhbXNpemUKICAgIF9fY29weV9zdHJlYW1idWZzKGJh
c2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+KiBfX3NiaW4sCiAgICAgICAgYmFzaWNfc3Ry
ZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4qIF9fc2JvdXQpCiAgICB7CiAgICAgIGJvb2wgX19pbmVv
ZjsKICAgICAgcmV0dXJuIF9fY29weV9zdHJlYW1idWZzX2VvZihfX3NiaW4sIF9fc2JvdXQsIF9f
aW5lb2YpOwogICAgfQoKCgoKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgYmFzaWNfc3RyZWFtYnVm
PGNoYXI+OwogIGV4dGVybiB0ZW1wbGF0ZQogICAgc3RyZWFtc2l6ZQogICAgX19jb3B5X3N0cmVh
bWJ1ZnMoYmFzaWNfc3RyZWFtYnVmPGNoYXI+KiwKICAgICAgICBiYXNpY19zdHJlYW1idWY8Y2hh
cj4qKTsKICBleHRlcm4gdGVtcGxhdGUKICAgIHN0cmVhbXNpemUKICAgIF9fY29weV9zdHJlYW1i
dWZzX2VvZihiYXNpY19zdHJlYW1idWY8Y2hhcj4qLAogICAgIGJhc2ljX3N0cmVhbWJ1ZjxjaGFy
PiosIGJvb2wmKTsKCgogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBiYXNpY19zdHJlYW1idWY8d2No
YXJfdD47CiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBzdHJlYW1zaXplCiAgICBfX2NvcHlfc3RyZWFt
YnVmcyhiYXNpY19zdHJlYW1idWY8d2NoYXJfdD4qLAogICAgICAgIGJhc2ljX3N0cmVhbWJ1Zjx3
Y2hhcl90PiopOwogIGV4dGVybiB0ZW1wbGF0ZQogICAgc3RyZWFtc2l6ZQogICAgX19jb3B5X3N0
cmVhbWJ1ZnNfZW9mKGJhc2ljX3N0cmVhbWJ1Zjx3Y2hhcl90PiosCiAgICAgYmFzaWNfc3RyZWFt
YnVmPHdjaGFyX3Q+KiwgYm9vbCYpOwoKCgoKfQojIDgyOSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9zdHJlYW1idWYiIDIgMwojIDQ0ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2lv
cyIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL2Jhc2ljX2lvcy5oIiAxIDMKIyAzMSAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX2lvcy5oIiAz
CiNkZWZpbmUgX0JBU0lDX0lPU19IIDEKCiAgICAgICAKIyAzNCAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX2lvcy5oIiAz
CgoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMSAzCiMgMzUgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRz
LmgiIDMKI2RlZmluZSBfTE9DQUxFX0ZBQ0VUU19IIDEKCiAgICAgICAKIyAzOCAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2Fs
ZV9mYWNldHMuaCIgMwoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2N3Y3R5cGUiIDEgMwojIDM5ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2N3Y3R5cGUiIDMKICAgICAgIAoj
IDQwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OS4zL2N3Y3R5cGUiIDMKIyA1MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9jd2N0eXBlIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3djdHlwZS5o
IiAxIDMgNAojIDI5ICIvdXNyL2luY2x1ZGUvd2N0eXBlLmgiIDMgNAojZGVmaW5lIF9XQ1RZUEVf
SCAxCgoKI2RlZmluZSBfX25lZWRfd2ludF90IAojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAx
IDMgNAojIDg5OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNAojdW5kZWYgX19uZWVkX21ic3Rh
dGVfdAojdW5kZWYgX19uZWVkX3dpbnRfdAojIDM0ICIvdXNyL2luY2x1ZGUvd2N0eXBlLmgiIDIg
MyA0CgoKCgoKCgojdW5kZWYgX19uZWVkX2lzd3h4eAoKCgoKCiNkZWZpbmUgX19pc3d4eHhfZGVm
aW5lZCAxCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHdjdHlwZV90OwoKIyA2NCAiL3Vz
ci9pbmNsdWRlL3djdHlwZS5oIiAzIDQKI2RlZmluZSBfSVN3Yml0KGJpdCkgKChiaXQpIDwgOCA/
IChpbnQpICgoMVVMIDw8IChiaXQpKSA8PCAyNCkgOiAoKGJpdCkgPCAxNiA/IChpbnQpICgoMVVM
IDw8IChiaXQpKSA8PCA4KSA6ICgoYml0KSA8IDI0ID8gKGludCkgKCgxVUwgPDwgKGJpdCkpID4+
IDgpIDogKGludCkgKCgxVUwgPDwgKGJpdCkpID4+IDI0KSkpKQoKCgoKCgplbnVtCnsKICBfX0lT
d3VwcGVyID0gMCwKICBfX0lTd2xvd2VyID0gMSwKICBfX0lTd2FscGhhID0gMiwKICBfX0lTd2Rp
Z2l0ID0gMywKICBfX0lTd3hkaWdpdCA9IDQsCiAgX19JU3dzcGFjZSA9IDUsCiAgX19JU3dwcmlu
dCA9IDYsCiAgX19JU3dncmFwaCA9IDcsCiAgX19JU3dibGFuayA9IDgsCiAgX19JU3djbnRybCA9
IDksCiAgX19JU3dwdW5jdCA9IDEwLAogIF9fSVN3YWxudW0gPSAxMSwKCiAgX0lTd3VwcGVyID0g
KChfX0lTd3VwcGVyKSA8IDggPyAoaW50KSAoKDFVTCA8PCAoX19JU3d1cHBlcikpIDw8IDI0KSA6
ICgoX19JU3d1cHBlcikgPCAxNiA/IChpbnQpICgoMVVMIDw8IChfX0lTd3VwcGVyKSkgPDwgOCkg
OiAoKF9fSVN3dXBwZXIpIDwgMjQgPyAoaW50KSAoKDFVTCA8PCAoX19JU3d1cHBlcikpID4+IDgp
IDogKGludCkgKCgxVUwgPDwgKF9fSVN3dXBwZXIpKSA+PiAyNCkpKSksCiAgX0lTd2xvd2VyID0g
KChfX0lTd2xvd2VyKSA8IDggPyAoaW50KSAoKDFVTCA8PCAoX19JU3dsb3dlcikpIDw8IDI0KSA6
ICgoX19JU3dsb3dlcikgPCAxNiA/IChpbnQpICgoMVVMIDw8IChfX0lTd2xvd2VyKSkgPDwgOCkg
OiAoKF9fSVN3bG93ZXIpIDwgMjQgPyAoaW50KSAoKDFVTCA8PCAoX19JU3dsb3dlcikpID4+IDgp
IDogKGludCkgKCgxVUwgPDwgKF9fSVN3bG93ZXIpKSA+PiAyNCkpKSksCiAgX0lTd2FscGhhID0g
KChfX0lTd2FscGhhKSA8IDggPyAoaW50KSAoKDFVTCA8PCAoX19JU3dhbHBoYSkpIDw8IDI0KSA6
ICgoX19JU3dhbHBoYSkgPCAxNiA/IChpbnQpICgoMVVMIDw8IChfX0lTd2FscGhhKSkgPDwgOCkg
OiAoKF9fSVN3YWxwaGEpIDwgMjQgPyAoaW50KSAoKDFVTCA8PCAoX19JU3dhbHBoYSkpID4+IDgp
IDogKGludCkgKCgxVUwgPDwgKF9fSVN3YWxwaGEpKSA+PiAyNCkpKSksCiAgX0lTd2RpZ2l0ID0g
KChfX0lTd2RpZ2l0KSA8IDggPyAoaW50KSAoKDFVTCA8PCAoX19JU3dkaWdpdCkpIDw8IDI0KSA6
ICgoX19JU3dkaWdpdCkgPCAxNiA/IChpbnQpICgoMVVMIDw8IChfX0lTd2RpZ2l0KSkgPDwgOCkg
OiAoKF9fSVN3ZGlnaXQpIDwgMjQgPyAoaW50KSAoKDFVTCA8PCAoX19JU3dkaWdpdCkpID4+IDgp
IDogKGludCkgKCgxVUwgPDwgKF9fSVN3ZGlnaXQpKSA+PiAyNCkpKSksCiAgX0lTd3hkaWdpdCA9
ICgoX19JU3d4ZGlnaXQpIDwgOCA/IChpbnQpICgoMVVMIDw8IChfX0lTd3hkaWdpdCkpIDw8IDI0
KSA6ICgoX19JU3d4ZGlnaXQpIDwgMTYgPyAoaW50KSAoKDFVTCA8PCAoX19JU3d4ZGlnaXQpKSA8
PCA4KSA6ICgoX19JU3d4ZGlnaXQpIDwgMjQgPyAoaW50KSAoKDFVTCA8PCAoX19JU3d4ZGlnaXQp
KSA+PiA4KSA6IChpbnQpICgoMVVMIDw8IChfX0lTd3hkaWdpdCkpID4+IDI0KSkpKSwKICBfSVN3
c3BhY2UgPSAoKF9fSVN3c3BhY2UpIDwgOCA/IChpbnQpICgoMVVMIDw8IChfX0lTd3NwYWNlKSkg
PDwgMjQpIDogKChfX0lTd3NwYWNlKSA8IDE2ID8gKGludCkgKCgxVUwgPDwgKF9fSVN3c3BhY2Up
KSA8PCA4KSA6ICgoX19JU3dzcGFjZSkgPCAyNCA/IChpbnQpICgoMVVMIDw8IChfX0lTd3NwYWNl
KSkgPj4gOCkgOiAoaW50KSAoKDFVTCA8PCAoX19JU3dzcGFjZSkpID4+IDI0KSkpKSwKICBfSVN3
cHJpbnQgPSAoKF9fSVN3cHJpbnQpIDwgOCA/IChpbnQpICgoMVVMIDw8IChfX0lTd3ByaW50KSkg
PDwgMjQpIDogKChfX0lTd3ByaW50KSA8IDE2ID8gKGludCkgKCgxVUwgPDwgKF9fSVN3cHJpbnQp
KSA8PCA4KSA6ICgoX19JU3dwcmludCkgPCAyNCA/IChpbnQpICgoMVVMIDw8IChfX0lTd3ByaW50
KSkgPj4gOCkgOiAoaW50KSAoKDFVTCA8PCAoX19JU3dwcmludCkpID4+IDI0KSkpKSwKICBfSVN3
Z3JhcGggPSAoKF9fSVN3Z3JhcGgpIDwgOCA/IChpbnQpICgoMVVMIDw8IChfX0lTd2dyYXBoKSkg
PDwgMjQpIDogKChfX0lTd2dyYXBoKSA8IDE2ID8gKGludCkgKCgxVUwgPDwgKF9fSVN3Z3JhcGgp
KSA8PCA4KSA6ICgoX19JU3dncmFwaCkgPCAyNCA/IChpbnQpICgoMVVMIDw8IChfX0lTd2dyYXBo
KSkgPj4gOCkgOiAoaW50KSAoKDFVTCA8PCAoX19JU3dncmFwaCkpID4+IDI0KSkpKSwKICBfSVN3
YmxhbmsgPSAoKF9fSVN3YmxhbmspIDwgOCA/IChpbnQpICgoMVVMIDw8IChfX0lTd2JsYW5rKSkg
PDwgMjQpIDogKChfX0lTd2JsYW5rKSA8IDE2ID8gKGludCkgKCgxVUwgPDwgKF9fSVN3Ymxhbmsp
KSA8PCA4KSA6ICgoX19JU3dibGFuaykgPCAyNCA/IChpbnQpICgoMVVMIDw8IChfX0lTd2JsYW5r
KSkgPj4gOCkgOiAoaW50KSAoKDFVTCA8PCAoX19JU3dibGFuaykpID4+IDI0KSkpKSwKICBfSVN3
Y250cmwgPSAoKF9fSVN3Y250cmwpIDwgOCA/IChpbnQpICgoMVVMIDw8IChfX0lTd2NudHJsKSkg
PDwgMjQpIDogKChfX0lTd2NudHJsKSA8IDE2ID8gKGludCkgKCgxVUwgPDwgKF9fSVN3Y250cmwp
KSA8PCA4KSA6ICgoX19JU3djbnRybCkgPCAyNCA/IChpbnQpICgoMVVMIDw8IChfX0lTd2NudHJs
KSkgPj4gOCkgOiAoaW50KSAoKDFVTCA8PCAoX19JU3djbnRybCkpID4+IDI0KSkpKSwKICBfSVN3
cHVuY3QgPSAoKF9fSVN3cHVuY3QpIDwgOCA/IChpbnQpICgoMVVMIDw8IChfX0lTd3B1bmN0KSkg
PDwgMjQpIDogKChfX0lTd3B1bmN0KSA8IDE2ID8gKGludCkgKCgxVUwgPDwgKF9fSVN3cHVuY3Qp
KSA8PCA4KSA6ICgoX19JU3dwdW5jdCkgPCAyNCA/IChpbnQpICgoMVVMIDw8IChfX0lTd3B1bmN0
KSkgPj4gOCkgOiAoaW50KSAoKDFVTCA8PCAoX19JU3dwdW5jdCkpID4+IDI0KSkpKSwKICBfSVN3
YWxudW0gPSAoKF9fSVN3YWxudW0pIDwgOCA/IChpbnQpICgoMVVMIDw8IChfX0lTd2FsbnVtKSkg
PDwgMjQpIDogKChfX0lTd2FsbnVtKSA8IDE2ID8gKGludCkgKCgxVUwgPDwgKF9fSVN3YWxudW0p
KSA8PCA4KSA6ICgoX19JU3dhbG51bSkgPCAyNCA/IChpbnQpICgoMVVMIDw8IChfX0lTd2FsbnVt
KSkgPj4gOCkgOiAoaW50KSAoKDFVTCA8PCAoX19JU3dhbG51bSkpID4+IDI0KSkpKQp9OwoKCgpl
eHRlcm4gIkMiIHsKCgoKCgoKCgpleHRlcm4gaW50IGlzd2FsbnVtICh3aW50X3QgX193YykgdGhy
b3cgKCk7CgoKCgoKZXh0ZXJuIGludCBpc3dhbHBoYSAod2ludF90IF9fd2MpIHRocm93ICgpOwoK
CmV4dGVybiBpbnQgaXN3Y250cmwgKHdpbnRfdCBfX3djKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGlu
dCBpc3dkaWdpdCAod2ludF90IF9fd2MpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGlzd2dyYXBo
ICh3aW50X3QgX193YykgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGlzd2xvd2VyICh3aW50X3Qg
X193YykgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBpc3dwcmludCAod2ludF90IF9fd2MpIHRocm93
ICgpOwoKCgoKZXh0ZXJuIGludCBpc3dwdW5jdCAod2ludF90IF9fd2MpIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGludCBpc3dzcGFjZSAod2ludF90IF9fd2MpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGlu
dCBpc3d1cHBlciAod2ludF90IF9fd2MpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBpc3d4ZGln
aXQgKHdpbnRfdCBfX3djKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IGlzd2JsYW5rICh3aW50
X3QgX193YykgdGhyb3cgKCk7CiMgMTcxICIvdXNyL2luY2x1ZGUvd2N0eXBlLmgiIDMgNApleHRl
cm4gd2N0eXBlX3Qgd2N0eXBlIChjb25zdCBjaGFyICpfX3Byb3BlcnR5KSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGludCBpc3djdHlwZSAod2ludF90IF9fd2MsIHdjdHlwZV90IF9fZGVzYykgdGhyb3cg
KCk7CgoKCgoKCgoKCgp0eXBlZGVmIGNvbnN0IF9faW50MzJfdCAqd2N0cmFuc190OwoKCgoKCgoK
ZXh0ZXJuIHdpbnRfdCB0b3dsb3dlciAod2ludF90IF9fd2MpIHRocm93ICgpOwoKCmV4dGVybiB3
aW50X3QgdG93dXBwZXIgKHdpbnRfdCBfX3djKSB0aHJvdyAoKTsKCgp9CiMgMjEzICIvdXNyL2lu
Y2x1ZGUvd2N0eXBlLmgiIDMgNApleHRlcm4gIkMiIHsKCgoKCmV4dGVybiB3Y3RyYW5zX3Qgd2N0
cmFucyAoY29uc3QgY2hhciAqX19wcm9wZXJ0eSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHdpbnRfdCB0
b3djdHJhbnMgKHdpbnRfdCBfX3djLCB3Y3RyYW5zX3QgX19kZXNjKSB0aHJvdyAoKTsKCgoKCgoK
CgpleHRlcm4gaW50IGlzd2FsbnVtX2wgKHdpbnRfdCBfX3djLCBfX2xvY2FsZV90IF9fbG9jYWxl
KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IGlzd2FscGhhX2wgKHdpbnRfdCBfX3djLCBfX2xv
Y2FsZV90IF9fbG9jYWxlKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGlzd2NudHJsX2wgKHdpbnRf
dCBfX3djLCBfX2xvY2FsZV90IF9fbG9jYWxlKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBpc3dk
aWdpdF9sICh3aW50X3QgX193YywgX19sb2NhbGVfdCBfX2xvY2FsZSkgdGhyb3cgKCk7CgoKCmV4
dGVybiBpbnQgaXN3Z3JhcGhfbCAod2ludF90IF9fd2MsIF9fbG9jYWxlX3QgX19sb2NhbGUpIHRo
cm93ICgpOwoKCgoKZXh0ZXJuIGludCBpc3dsb3dlcl9sICh3aW50X3QgX193YywgX19sb2NhbGVf
dCBfX2xvY2FsZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBpc3dwcmludF9sICh3aW50X3QgX193
YywgX19sb2NhbGVfdCBfX2xvY2FsZSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGlzd3B1bmN0
X2wgKHdpbnRfdCBfX3djLCBfX2xvY2FsZV90IF9fbG9jYWxlKSB0aHJvdyAoKTsKCgoKCmV4dGVy
biBpbnQgaXN3c3BhY2VfbCAod2ludF90IF9fd2MsIF9fbG9jYWxlX3QgX19sb2NhbGUpIHRocm93
ICgpOwoKCgoKZXh0ZXJuIGludCBpc3d1cHBlcl9sICh3aW50X3QgX193YywgX19sb2NhbGVfdCBf
X2xvY2FsZSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGlzd3hkaWdpdF9sICh3aW50X3QgX193
YywgX19sb2NhbGVfdCBfX2xvY2FsZSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGlzd2JsYW5r
X2wgKHdpbnRfdCBfX3djLCBfX2xvY2FsZV90IF9fbG9jYWxlKSB0aHJvdyAoKTsKCgoKZXh0ZXJu
IHdjdHlwZV90IHdjdHlwZV9sIChjb25zdCBjaGFyICpfX3Byb3BlcnR5LCBfX2xvY2FsZV90IF9f
bG9jYWxlKQogICAgIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGlzd2N0eXBlX2wgKHdpbnRfdCBf
X3djLCB3Y3R5cGVfdCBfX2Rlc2MsIF9fbG9jYWxlX3QgX19sb2NhbGUpCiAgICAgdGhyb3cgKCk7
CgoKCgoKCgpleHRlcm4gd2ludF90IHRvd2xvd2VyX2wgKHdpbnRfdCBfX3djLCBfX2xvY2FsZV90
IF9fbG9jYWxlKSB0aHJvdyAoKTsKCgpleHRlcm4gd2ludF90IHRvd3VwcGVyX2wgKHdpbnRfdCBf
X3djLCBfX2xvY2FsZV90IF9fbG9jYWxlKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHdjdHJhbnNfdCB3
Y3RyYW5zX2wgKGNvbnN0IGNoYXIgKl9fcHJvcGVydHksIF9fbG9jYWxlX3QgX19sb2NhbGUpCiAg
ICAgdGhyb3cgKCk7CgoKZXh0ZXJuIHdpbnRfdCB0b3djdHJhbnNfbCAod2ludF90IF9fd2MsIHdj
dHJhbnNfdCBfX2Rlc2MsCiAgICAgIF9fbG9jYWxlX3QgX19sb2NhbGUpIHRocm93ICgpOwoKCgp9
CiMgNTEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvY3djdHlwZSIgMiAzCgoKCiNkZWZpbmUgX0dMSUJDWFhfQ1dDVFlQRSAxCgoKI3VuZGVm
IGlzd2FsbnVtCiN1bmRlZiBpc3dhbHBoYQoKI3VuZGVmIGlzd2JsYW5rCgojdW5kZWYgaXN3Y250
cmwKI3VuZGVmIGlzd2N0eXBlCiN1bmRlZiBpc3dkaWdpdAojdW5kZWYgaXN3Z3JhcGgKI3VuZGVm
IGlzd2xvd2VyCiN1bmRlZiBpc3dwcmludAojdW5kZWYgaXN3cHVuY3QKI3VuZGVmIGlzd3NwYWNl
CiN1bmRlZiBpc3d1cHBlcgojdW5kZWYgaXN3eGRpZ2l0CiN1bmRlZiB0b3djdHJhbnMKI3VuZGVm
IHRvd2xvd2VyCiN1bmRlZiB0b3d1cHBlcgojdW5kZWYgd2N0cmFucwojdW5kZWYgd2N0eXBlCgoK
Cm5hbWVzcGFjZSBzdGQKewogIHVzaW5nIDo6d2N0cmFuc190OwogIHVzaW5nIDo6d2N0eXBlX3Q7
CiAgdXNpbmcgOjp3aW50X3Q7CgogIHVzaW5nIDo6aXN3YWxudW07CiAgdXNpbmcgOjppc3dhbHBo
YTsKCiAgdXNpbmcgOjppc3dibGFuazsKCiAgdXNpbmcgOjppc3djbnRybDsKICB1c2luZyA6Omlz
d2N0eXBlOwogIHVzaW5nIDo6aXN3ZGlnaXQ7CiAgdXNpbmcgOjppc3dncmFwaDsKICB1c2luZyA6
Omlzd2xvd2VyOwogIHVzaW5nIDo6aXN3cHJpbnQ7CiAgdXNpbmcgOjppc3dwdW5jdDsKICB1c2lu
ZyA6Omlzd3NwYWNlOwogIHVzaW5nIDo6aXN3dXBwZXI7CiAgdXNpbmcgOjppc3d4ZGlnaXQ7CiAg
dXNpbmcgOjp0b3djdHJhbnM7CiAgdXNpbmcgOjp0b3dsb3dlcjsKICB1c2luZyA6OnRvd3VwcGVy
OwogIHVzaW5nIDo6d2N0cmFuczsKICB1c2luZyA6OndjdHlwZTsKfQojIDQwICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxl
X2ZhY2V0cy5oIiAyIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2NjdHlwZSIgMSAzCiMgMzkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvY2N0eXBlIiAzCiAgICAgICAKIyA0
MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9jY3R5cGUiIDMKIyA0MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMiAzCiMgMSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvYml0cy9jdHlwZV9iYXNlLmgiIDEgMwojIDM2ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9iaXRzL2N0eXBlX2Jhc2UuaCIgMwpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRl
X18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKICBzdHJ1Y3QgY3R5cGVfYmFz
ZQogIHsKCiAgICB0eXBlZGVmIGNvbnN0IGludCogX190b190eXBlOwoKCgogICAgdHlwZWRlZiB1
bnNpZ25lZCBzaG9ydCBtYXNrOwogICAgc3RhdGljIGNvbnN0IG1hc2sgdXBwZXIgPSBfSVN1cHBl
cjsKICAgIHN0YXRpYyBjb25zdCBtYXNrIGxvd2VyID0gX0lTbG93ZXI7CiAgICBzdGF0aWMgY29u
c3QgbWFzayBhbHBoYSA9IF9JU2FscGhhOwogICAgc3RhdGljIGNvbnN0IG1hc2sgZGlnaXQgPSBf
SVNkaWdpdDsKICAgIHN0YXRpYyBjb25zdCBtYXNrIHhkaWdpdCA9IF9JU3hkaWdpdDsKICAgIHN0
YXRpYyBjb25zdCBtYXNrIHNwYWNlID0gX0lTc3BhY2U7CiAgICBzdGF0aWMgY29uc3QgbWFzayBw
cmludCA9IF9JU3ByaW50OwogICAgc3RhdGljIGNvbnN0IG1hc2sgZ3JhcGggPSBfSVNhbHBoYSB8
IF9JU2RpZ2l0IHwgX0lTcHVuY3Q7CiAgICBzdGF0aWMgY29uc3QgbWFzayBjbnRybCA9IF9JU2Nu
dHJsOwogICAgc3RhdGljIGNvbnN0IG1hc2sgcHVuY3QgPSBfSVNwdW5jdDsKICAgIHN0YXRpYyBj
b25zdCBtYXNrIGFsbnVtID0gX0lTYWxwaGEgfCBfSVNkaWdpdDsKICB9OwoKCn0KIyA0MiAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L2xvY2FsZV9mYWNldHMuaCIgMiAzCgoKCgoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0cmVhbWJ1Zl9pdGVyYXRvci5o
IiAxIDMKIyAzMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL3N0cmVhbWJ1Zl9pdGVyYXRvci5oIiAzCiNkZWZpbmUgX1NUUkVBTUJV
Rl9JVEVSQVRPUl9IIDEKCiAgICAgICAKIyAzNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0cmVhbWJ1Zl9pdGVyYXRvci5oIiAz
CgoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1
bHQiKSkpCnsKCiMgNDkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9zdHJlYW1idWZfaXRlcmF0b3IuaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGNsYXNzIGlzdHJlYW1idWZfaXRl
cmF0b3IKICAgIDogcHVibGljIGl0ZXJhdG9yPGlucHV0X2l0ZXJhdG9yX3RhZywgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzOjpvZmZfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgIF9DaGFyVCos
CgoKICAgICAgICBfQ2hhclQ+CgoKCiAgICB7CiAgICBwdWJsaWM6CgoKCiAgICAgIHR5cGVkZWYg
X0NoYXJUIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiBfVHJhaXRzIHRyYWl0c190eXBlOwogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIF9UcmFpdHM6OmludF90eXBlIGludF90eXBlOwogICAgICB0eXBl
ZGVmIGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+IHN0cmVhbWJ1Zl90eXBlOwogICAg
ICB0eXBlZGVmIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiBpc3RyZWFtX3R5cGU7CgoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUMj4KIGZyaWVuZCB0eXBlbmFtZSBfX2dudV9j
eHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxfQ2hhclQyPjo6X192YWx1ZSwKICAgICAgICAgICAg
ICAgICAgICAgIG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUMj4gPjo6X190eXBlCiBjb3B5KGlz
dHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUMj4sIGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUMj4s
CiAgICAgIG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUMj4pOwoKICAgICAgdGVtcGxhdGU8Ym9v
bCBfSXNNb3ZlLCB0eXBlbmFtZSBfQ2hhclQyPgogZnJpZW5kIHR5cGVuYW1lIF9fZ251X2N4eDo6
X19lbmFibGVfaWY8X19pc19jaGFyPF9DaGFyVDI+OjpfX3ZhbHVlLAogICAgICAgICAgICBfQ2hh
clQyKj46Ol9fdHlwZQogX19jb3B5X21vdmVfYTIoaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQy
PiwKICAgICAgICAgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQyPiwgX0NoYXJUMiopOwoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUMj4KIGZyaWVuZCB0eXBlbmFtZSBfX2dudV9jeHg6
Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxfQ2hhclQyPjo6X192YWx1ZSwKICAgICAgICAgICAgICAg
aXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQyPiA+OjpfX3R5cGUKIGZpbmQoaXN0cmVhbWJ1Zl9p
dGVyYXRvcjxfQ2hhclQyPiwgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQyPiwKICAgICAgY29u
c3QgX0NoYXJUMiYpOwoKICAgIHByaXZhdGU6CgoKCgoKCgogICAgICBtdXRhYmxlIHN0cmVhbWJ1
Zl90eXBlKiBfTV9zYnVmOwogICAgICBtdXRhYmxlIGludF90eXBlIF9NX2M7CgogICAgcHVibGlj
OgoKICAgICAgY29uc3RleHByIGlzdHJlYW1idWZfaXRlcmF0b3IoKSBub2V4Y2VwdAogICAgICA6
IF9NX3NidWYoMCksIF9NX2ModHJhaXRzX3R5cGU6OmVvZigpKSB7IH0KCgogICAgICBpc3RyZWFt
YnVmX2l0ZXJhdG9yKGNvbnN0IGlzdHJlYW1idWZfaXRlcmF0b3ImKSBub2V4Y2VwdCA9IGRlZmF1
bHQ7CgogICAgICB+aXN0cmVhbWJ1Zl9pdGVyYXRvcigpID0gZGVmYXVsdDsKCgoKICAgICAgaXN0
cmVhbWJ1Zl9pdGVyYXRvcihpc3RyZWFtX3R5cGUmIF9fcykgbm9leGNlcHQKICAgICAgOiBfTV9z
YnVmKF9fcy5yZGJ1ZigpKSwgX01fYyh0cmFpdHNfdHlwZTo6ZW9mKCkpIHsgfQoKCiAgICAgIGlz
dHJlYW1idWZfaXRlcmF0b3Ioc3RyZWFtYnVmX3R5cGUqIF9fcykgbm9leGNlcHQKICAgICAgOiBf
TV9zYnVmKF9fcyksIF9NX2ModHJhaXRzX3R5cGU6OmVvZigpKSB7IH0KCgoKCiAgICAgIGNoYXJf
dHlwZQogICAgICBvcGVyYXRvciooKSBjb25zdAogICAgICB7CgoKCgoKCgogcmV0dXJuIHRyYWl0
c190eXBlOjp0b19jaGFyX3R5cGUoX01fZ2V0KCkpOwogICAgICB9CgoKICAgICAgaXN0cmVhbWJ1
Zl9pdGVyYXRvciYKICAgICAgb3BlcmF0b3IrKygpCiAgICAgIHsKCgogICAgICAgICAgICAgICAg
ICAgICAgICA7CiBpZiAoX01fc2J1ZikKICAgewogICAgIF9NX3NidWYtPnNidW1wYygpOwogICAg
IF9NX2MgPSB0cmFpdHNfdHlwZTo6ZW9mKCk7CiAgIH0KIHJldHVybiAqdGhpczsKICAgICAgfQoK
CiAgICAgIGlzdHJlYW1idWZfaXRlcmF0b3IKICAgICAgb3BlcmF0b3IrKyhpbnQpCiAgICAgIHsK
CgogICAgICAgICAgICAgICAgICAgICAgICA7CgogaXN0cmVhbWJ1Zl9pdGVyYXRvciBfX29sZCA9
ICp0aGlzOwogaWYgKF9NX3NidWYpCiAgIHsKICAgICBfX29sZC5fTV9jID0gX01fc2J1Zi0+c2J1
bXBjKCk7CiAgICAgX01fYyA9IHRyYWl0c190eXBlOjplb2YoKTsKICAgfQogcmV0dXJuIF9fb2xk
OwogICAgICB9CgoKCgoKICAgICAgYm9vbAogICAgICBlcXVhbChjb25zdCBpc3RyZWFtYnVmX2l0
ZXJhdG9yJiBfX2IpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2F0X2VvZigpID09IF9fYi5fTV9h
dF9lb2YoKTsgfQoKICAgIHByaXZhdGU6CiAgICAgIGludF90eXBlCiAgICAgIF9NX2dldCgpIGNv
bnN0CiAgICAgIHsKIGNvbnN0IGludF90eXBlIF9fZW9mID0gdHJhaXRzX3R5cGU6OmVvZigpOwog
aW50X3R5cGUgX19yZXQgPSBfX2VvZjsKIGlmIChfTV9zYnVmKQogICB7CiAgICAgaWYgKCF0cmFp
dHNfdHlwZTo6ZXFfaW50X3R5cGUoX01fYywgX19lb2YpKQogICAgICAgX19yZXQgPSBfTV9jOwog
ICAgIGVsc2UgaWYgKCF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoKF9fcmV0ID0gX01fc2J1Zi0+
c2dldGMoKSksCiAgICAgICAgICAgIF9fZW9mKSkKICAgICAgIF9NX2MgPSBfX3JldDsKICAgICBl
bHNlCiAgICAgICBfTV9zYnVmID0gMDsKICAgfQogcmV0dXJuIF9fcmV0OwogICAgICB9CgogICAg
ICBib29sCiAgICAgIF9NX2F0X2VvZigpIGNvbnN0CiAgICAgIHsKIGNvbnN0IGludF90eXBlIF9f
ZW9mID0gdHJhaXRzX3R5cGU6OmVvZigpOwogcmV0dXJuIHRyYWl0c190eXBlOjplcV9pbnRfdHlw
ZShfTV9nZXQoKSwgX19lb2YpOwogICAgICB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I9PShj
b25zdCBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVCwgX1RyYWl0cz4mIF9fYSwKICAgICAgICBj
b25zdCBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVCwgX1RyYWl0cz4mIF9fYikKICAgIHsgcmV0
dXJuIF9fYS5lcXVhbChfX2IpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IGlzdHJlYW1i
dWZfaXRlcmF0b3I8X0NoYXJULCBfVHJhaXRzPiYgX19hLAogICAgICAgIGNvbnN0IGlzdHJlYW1i
dWZfaXRlcmF0b3I8X0NoYXJULCBfVHJhaXRzPiYgX19iKQogICAgeyByZXR1cm4gIV9fYS5lcXVh
bChfX2IpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+
CiAgICBjbGFzcyBvc3RyZWFtYnVmX2l0ZXJhdG9yCiAgICA6IHB1YmxpYyBpdGVyYXRvcjxvdXRw
dXRfaXRlcmF0b3JfdGFnLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkPgogICAgewogICAgcHVibGlj
OgoKCgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgX1RyYWl0
cyB0cmFpdHNfdHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJh
aXRzPiBzdHJlYW1idWZfdHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19vc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4gb3N0cmVhbV90eXBlOwoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVDI+
CiBmcmllbmQgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2NoYXI8X0NoYXJU
Mj46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9D
aGFyVDI+ID46Ol9fdHlwZQogY29weShpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVDI+LCBpc3Ry
ZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVDI+LAogICAgICBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFy
VDI+KTsKCiAgICBwcml2YXRlOgogICAgICBzdHJlYW1idWZfdHlwZSogX01fc2J1ZjsKICAgICAg
Ym9vbCBfTV9mYWlsZWQ7CgogICAgcHVibGljOgoKICAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvcihv
c3RyZWFtX3R5cGUmIF9fcykgbm9leGNlcHQKICAgICAgOiBfTV9zYnVmKF9fcy5yZGJ1ZigpKSwg
X01fZmFpbGVkKCFfTV9zYnVmKSB7IH0KCgogICAgICBvc3RyZWFtYnVmX2l0ZXJhdG9yKHN0cmVh
bWJ1Zl90eXBlKiBfX3MpIG5vZXhjZXB0CiAgICAgIDogX01fc2J1ZihfX3MpLCBfTV9mYWlsZWQo
IV9NX3NidWYpIHsgfQoKCiAgICAgIG9zdHJlYW1idWZfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9y
PShfQ2hhclQgX19jKQogICAgICB7CiBpZiAoIV9NX2ZhaWxlZCAmJgogICAgIF9UcmFpdHM6OmVx
X2ludF90eXBlKF9NX3NidWYtPnNwdXRjKF9fYyksIF9UcmFpdHM6OmVvZigpKSkKICAgX01fZmFp
bGVkID0gdHJ1ZTsKIHJldHVybiAqdGhpczsKICAgICAgfQoKCiAgICAgIG9zdHJlYW1idWZfaXRl
cmF0b3ImCiAgICAgIG9wZXJhdG9yKigpCiAgICAgIHsgcmV0dXJuICp0aGlzOyB9CgoKICAgICAg
b3N0cmVhbWJ1Zl9pdGVyYXRvciYKICAgICAgb3BlcmF0b3IrKyhpbnQpCiAgICAgIHsgcmV0dXJu
ICp0aGlzOyB9CgoKICAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvciYKICAgICAgb3BlcmF0b3IrKygp
CiAgICAgIHsgcmV0dXJuICp0aGlzOyB9CgoKICAgICAgYm9vbAogICAgICBmYWlsZWQoKSBjb25z
dCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9mYWlsZWQ7IH0KCiAgICAgIG9zdHJlYW1idWZf
aXRlcmF0b3ImCiAgICAgIF9NX3B1dChjb25zdCBfQ2hhclQqIF9fd3MsIHN0cmVhbXNpemUgX19s
ZW4pCiAgICAgIHsKIGlmIChfX2J1aWx0aW5fZXhwZWN0KCFfTV9mYWlsZWQsIHRydWUpCiAgICAg
JiYgX19idWlsdGluX2V4cGVjdCh0aGlzLT5fTV9zYnVmLT5zcHV0bihfX3dzLCBfX2xlbikgIT0g
X19sZW4sCiAgICBmYWxzZSkpCiAgIF9NX2ZhaWxlZCA9IHRydWU7CiByZXR1cm4gKnRoaXM7CiAg
ICAgIH0KICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICB0eXBlbmFtZSBf
X2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxfQ2hhclQ+OjpfX3ZhbHVlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4gPjo6X190eXBl
CiAgICBjb3B5KGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiBfX2ZpcnN0LAogIGlzdHJlYW1i
dWZfaXRlcmF0b3I8X0NoYXJUPiBfX2xhc3QsCiAgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+
IF9fcmVzdWx0KQogICAgewogICAgICBpZiAoX19maXJzdC5fTV9zYnVmICYmICFfX2xhc3QuX01f
c2J1ZiAmJiAhX19yZXN1bHQuX01fZmFpbGVkKQogewogICBib29sIF9faW5lb2Y7CiAgIF9fY29w
eV9zdHJlYW1idWZzX2VvZihfX2ZpcnN0Ll9NX3NidWYsIF9fcmVzdWx0Ll9NX3NidWYsIF9faW5l
b2YpOwogICBpZiAoIV9faW5lb2YpCiAgICAgX19yZXN1bHQuX01fZmFpbGVkID0gdHJ1ZTsKIH0K
ICAgICAgcmV0dXJuIF9fcmVzdWx0OwogICAgfQoKICB0ZW1wbGF0ZTxib29sIF9Jc01vdmUsIHR5
cGVuYW1lIF9DaGFyVD4KICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19j
aGFyPF9DaGFyVD46Ol9fdmFsdWUsCiAgICAgICAgICAgIG9zdHJlYW1idWZfaXRlcmF0b3I8X0No
YXJUPiA+OjpfX3R5cGUKICAgIF9fY29weV9tb3ZlX2EyKF9DaGFyVCogX19maXJzdCwgX0NoYXJU
KiBfX2xhc3QsCiAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+IF9fcmVzdWx0KQogICAg
ewogICAgICBjb25zdCBzdHJlYW1zaXplIF9fbnVtID0gX19sYXN0IC0gX19maXJzdDsKICAgICAg
aWYgKF9fbnVtID4gMCkKIF9fcmVzdWx0Ll9NX3B1dChfX2ZpcnN0LCBfX251bSk7CiAgICAgIHJl
dHVybiBfX3Jlc3VsdDsKICAgIH0KCiAgdGVtcGxhdGU8Ym9vbCBfSXNNb3ZlLCB0eXBlbmFtZSBf
Q2hhclQ+CiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxfQ2hh
clQ+OjpfX3ZhbHVlLAogICAgICAgIG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiA+OjpfX3R5
cGUKICAgIF9fY29weV9tb3ZlX2EyKGNvbnN0IF9DaGFyVCogX19maXJzdCwgY29uc3QgX0NoYXJU
KiBfX2xhc3QsCiAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+IF9fcmVzdWx0KQogICAg
ewogICAgICBjb25zdCBzdHJlYW1zaXplIF9fbnVtID0gX19sYXN0IC0gX19maXJzdDsKICAgICAg
aWYgKF9fbnVtID4gMCkKIF9fcmVzdWx0Ll9NX3B1dChfX2ZpcnN0LCBfX251bSk7CiAgICAgIHJl
dHVybiBfX3Jlc3VsdDsKICAgIH0KCiAgdGVtcGxhdGU8Ym9vbCBfSXNNb3ZlLCB0eXBlbmFtZSBf
Q2hhclQ+CiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxfQ2hh
clQ+OjpfX3ZhbHVlLAogICAgICAgICAgICBfQ2hhclQqPjo6X190eXBlCiAgICBfX2NvcHlfbW92
ZV9hMihpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4gX19maXJzdCwKICAgICBpc3RyZWFtYnVm
X2l0ZXJhdG9yPF9DaGFyVD4gX19sYXN0LCBfQ2hhclQqIF9fcmVzdWx0KQogICAgewogICAgICB0
eXBlZGVmIGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiBfX2lzX2l0ZXJhdG9yX3R5cGU7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pc19pdGVyYXRvcl90eXBlOjp0cmFpdHNfdHlwZSB0cmFp
dHNfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzX2l0ZXJhdG9yX3R5cGU6OnN0cmVh
bWJ1Zl90eXBlIHN0cmVhbWJ1Zl90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190
eXBlOjppbnRfdHlwZSBpbnRfdHlwZTsKCiAgICAgIGlmIChfX2ZpcnN0Ll9NX3NidWYgJiYgIV9f
bGFzdC5fTV9zYnVmKQogewogICBzdHJlYW1idWZfdHlwZSogX19zYiA9IF9fZmlyc3QuX01fc2J1
ZjsKICAgaW50X3R5cGUgX19jID0gX19zYi0+c2dldGMoKTsKICAgd2hpbGUgKCF0cmFpdHNfdHlw
ZTo6ZXFfaW50X3R5cGUoX19jLCB0cmFpdHNfdHlwZTo6ZW9mKCkpKQogICAgIHsKICAgICAgIGNv
bnN0IHN0cmVhbXNpemUgX19uID0gX19zYi0+ZWdwdHIoKSAtIF9fc2ItPmdwdHIoKTsKICAgICAg
IGlmIChfX24gPiAxKQogIHsKICAgIHRyYWl0c190eXBlOjpjb3B5KF9fcmVzdWx0LCBfX3NiLT5n
cHRyKCksIF9fbik7CiAgICBfX3NiLT5fX3NhZmVfZ2J1bXAoX19uKTsKICAgIF9fcmVzdWx0ICs9
IF9fbjsKICAgIF9fYyA9IF9fc2ItPnVuZGVyZmxvdygpOwogIH0KICAgICAgIGVsc2UKICB7CiAg
ICAqX19yZXN1bHQrKyA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoX19jKTsKICAgIF9fYyA9
IF9fc2ItPnNuZXh0YygpOwogIH0KICAgICB9CiB9CiAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAg
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgdHlwZW5hbWUgX19nbnVfY3h4Ojpf
X2VuYWJsZV9pZjxfX2lzX2NoYXI8X0NoYXJUPjo6X192YWx1ZSwKICAgICAgICAgIGlzdHJlYW1i
dWZfaXRlcmF0b3I8X0NoYXJUPiA+OjpfX3R5cGUKICAgIGZpbmQoaXN0cmVhbWJ1Zl9pdGVyYXRv
cjxfQ2hhclQ+IF9fZmlyc3QsCiAgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+IF9fbGFzdCwg
Y29uc3QgX0NoYXJUJiBfX3ZhbCkKICAgIHsKICAgICAgdHlwZWRlZiBpc3RyZWFtYnVmX2l0ZXJh
dG9yPF9DaGFyVD4gX19pc19pdGVyYXRvcl90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9f
aXNfaXRlcmF0b3JfdHlwZTo6dHJhaXRzX3R5cGUgdHJhaXRzX3R5cGU7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgX19pc19pdGVyYXRvcl90eXBlOjpzdHJlYW1idWZfdHlwZSBzdHJlYW1idWZfdHlw
ZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6aW50X3R5cGUgaW50X3R5cGU7
CgogICAgICBpZiAoX19maXJzdC5fTV9zYnVmICYmICFfX2xhc3QuX01fc2J1ZikKIHsKICAgY29u
c3QgaW50X3R5cGUgX19pdmFsID0gdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKF9fdmFsKTsKICAg
c3RyZWFtYnVmX3R5cGUqIF9fc2IgPSBfX2ZpcnN0Ll9NX3NidWY7CiAgIGludF90eXBlIF9fYyA9
IF9fc2ItPnNnZXRjKCk7CiAgIHdoaWxlICghdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9fYywg
dHJhaXRzX3R5cGU6OmVvZigpKQogICAmJiAhdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9fYywg
X19pdmFsKSkKICAgICB7CiAgICAgICBzdHJlYW1zaXplIF9fbiA9IF9fc2ItPmVncHRyKCkgLSBf
X3NiLT5ncHRyKCk7CiAgICAgICBpZiAoX19uID4gMSkKICB7CiAgICBjb25zdCBfQ2hhclQqIF9f
cCA9IHRyYWl0c190eXBlOjpmaW5kKF9fc2ItPmdwdHIoKSwKICAgICAgIF9fbiwgX192YWwpOwog
ICAgaWYgKF9fcCkKICAgICAgX19uID0gX19wIC0gX19zYi0+Z3B0cigpOwogICAgX19zYi0+X19z
YWZlX2didW1wKF9fbik7CiAgICBfX2MgPSBfX3NiLT5zZ2V0YygpOwogIH0KICAgICAgIGVsc2UK
ICBfX2MgPSBfX3NiLT5zbmV4dGMoKTsKICAgICB9CgogICBpZiAoIXRyYWl0c190eXBlOjplcV9p
bnRfdHlwZShfX2MsIHRyYWl0c190eXBlOjplb2YoKSkpCiAgICAgX19maXJzdC5fTV9jID0gX19j
OwogICBlbHNlCiAgICAgX19maXJzdC5fTV9zYnVmID0gMDsKIH0KICAgICAgcmV0dXJuIF9fZmly
c3Q7CiAgICB9CgoKCgp9CiMgNDkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDIgMwoKbmFtZXNwYWNl
IHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCgoj
ZGVmaW5lIF9HTElCQ1hYX05VTV9GQUNFVFMgMjgKCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgdm9pZAogICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciosIF9UcCYsIGlvc19i
YXNlOjppb3N0YXRlJiwKICAgICBjb25zdCBfX2NfbG9jYWxlJikgdGhyb3coKTsKCgogIHRlbXBs
YXRlPD4KICAgIHZvaWQKICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqLCBmbG9hdCYsIGlv
c19iYXNlOjppb3N0YXRlJiwKICAgICBjb25zdCBfX2NfbG9jYWxlJikgdGhyb3coKTsKCiAgdGVt
cGxhdGU8PgogICAgdm9pZAogICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciosIGRvdWJsZSYs
IGlvc19iYXNlOjppb3N0YXRlJiwKICAgICBjb25zdCBfX2NfbG9jYWxlJikgdGhyb3coKTsKCiAg
dGVtcGxhdGU8PgogICAgdm9pZAogICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciosIGxvbmcg
ZG91YmxlJiwgaW9zX2Jhc2U6Omlvc3RhdGUmLAogICAgIGNvbnN0IF9fY19sb2NhbGUmKSB0aHJv
dygpOwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAg
IHN0cnVjdCBfX3BhZAogICAgewogICAgICBzdGF0aWMgdm9pZAogICAgICBfU19wYWQoaW9zX2Jh
c2UmIF9faW8sIF9DaGFyVCBfX2ZpbGwsIF9DaGFyVCogX19uZXdzLAogICAgICBjb25zdCBfQ2hh
clQqIF9fb2xkcywgc3RyZWFtc2l6ZSBfX25ld2xlbiwgc3RyZWFtc2l6ZSBfX29sZGxlbik7CiAg
ICB9OwoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIF9DaGFyVCoKICAgIF9f
YWRkX2dyb3VwaW5nKF9DaGFyVCogX19zLCBfQ2hhclQgX19zZXAsCiAgICAgY29uc3QgY2hhciog
X19nYmVnLCBzaXplX3QgX19nc2l6ZSwKICAgICBjb25zdCBfQ2hhclQqIF9fZmlyc3QsIGNvbnN0
IF9DaGFyVCogX19sYXN0KTsKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgaW5s
aW5lCiAgICBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4KICAgIF9fd3JpdGUob3N0cmVhbWJ1
Zl9pdGVyYXRvcjxfQ2hhclQ+IF9fcywgY29uc3QgX0NoYXJUKiBfX3dzLCBpbnQgX19sZW4pCiAg
ICB7CiAgICAgIF9fcy5fTV9wdXQoX193cywgX19sZW4pOwogICAgICByZXR1cm4gX19zOwogICAg
fQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRlcj4KICAgIGlu
bGluZQogICAgX091dEl0ZXIKICAgIF9fd3JpdGUoX091dEl0ZXIgX19zLCBjb25zdCBfQ2hhclQq
IF9fd3MsIGludCBfX2xlbikKICAgIHsKICAgICAgZm9yIChpbnQgX19qID0gMDsgX19qIDwgX19s
ZW47IF9faisrLCArK19fcykKICpfX3MgPSBfX3dzW19fal07CiAgICAgIHJldHVybiBfX3M7CiAg
ICB9CiMgMTQyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJUPgogICAgY2xhc3MgX19jdHlwZV9hYnN0cmFjdF9iYXNlIDogcHVibGljIGxvY2FsZTo6ZmFj
ZXQsIHB1YmxpYyBjdHlwZV9iYXNlCiAgICB7CiAgICBwdWJsaWM6CgoKICAgICAgdHlwZWRlZiBf
Q2hhclQgY2hhcl90eXBlOwojIDE2MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBib29s
CiAgICAgIGlzKG1hc2sgX19tLCBjaGFyX3R5cGUgX19jKSBjb25zdAogICAgICB7IHJldHVybiB0
aGlzLT5kb19pcyhfX20sIF9fYyk7IH0KIyAxNzggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAg
ICAgY29uc3QgY2hhcl90eXBlKgogICAgICBpcyhjb25zdCBjaGFyX3R5cGUgKl9fbG8sIGNvbnN0
IGNoYXJfdHlwZSAqX19oaSwgbWFzayAqX192ZWMpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMt
PmRvX2lzKF9fbG8sIF9faGksIF9fdmVjKTsgfQojIDE5NCAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIg
MwogICAgICBjb25zdCBjaGFyX3R5cGUqCiAgICAgIHNjYW5faXMobWFzayBfX20sIGNvbnN0IGNo
YXJfdHlwZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25zdAogICAgICB7IHJldHVy
biB0aGlzLT5kb19zY2FuX2lzKF9fbSwgX19sbywgX19oaSk7IH0KIyAyMTAgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVf
ZmFjZXRzLmgiIDMKICAgICAgY29uc3QgY2hhcl90eXBlKgogICAgICBzY2FuX25vdChtYXNrIF9f
bSwgY29uc3QgY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9faGkpIGNvbnN0CiAg
ICAgIHsgcmV0dXJuIHRoaXMtPmRvX3NjYW5fbm90KF9fbSwgX19sbywgX19oaSk7IH0KIyAyMjQg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
Yml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgY2hhcl90eXBlCiAgICAgIHRvdXBwZXJfV1RG
X1BsZWFzZV91c2VfQVNDSUlDVHlwZV9pbnN0ZWFkX29mX2N0eXBlX3NlZV9jb21tZW50X2luX0FT
Q0lJQ1R5cGVfaChjaGFyX3R5cGUgX19jKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb190
b3VwcGVyKF9fYyk7IH0KIyAyMzkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgY29uc3Qg
Y2hhcl90eXBlKgogICAgICB0b3VwcGVyX1dURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVh
ZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNUeXBlX2goY2hhcl90eXBlICpfX2xvLCBj
b25zdCBjaGFyX3R5cGUqIF9faGkpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX3RvdXBw
ZXIoX19sbywgX19oaSk7IH0KIyAyNTMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgY2hh
cl90eXBlCiAgICAgIHRvbG93ZXJfV1RGX1BsZWFzZV91c2VfQVNDSUlDVHlwZV9pbnN0ZWFkX29m
X2N0eXBlX3NlZV9jb21tZW50X2luX0FTQ0lJQ1R5cGVfaChjaGFyX3R5cGUgX19jKSBjb25zdAog
ICAgICB7IHJldHVybiB0aGlzLT5kb190b2xvd2VyKF9fYyk7IH0KIyAyNjggIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVf
ZmFjZXRzLmgiIDMKICAgICAgY29uc3QgY2hhcl90eXBlKgogICAgICB0b2xvd2VyX1dURl9QbGVh
c2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNU
eXBlX2goY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9faGkpIGNvbnN0CiAgICAg
IHsgcmV0dXJuIHRoaXMtPmRvX3RvbG93ZXIoX19sbywgX19oaSk7IH0KIyAyODUgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2Nh
bGVfZmFjZXRzLmgiIDMKICAgICAgY2hhcl90eXBlCiAgICAgIHdpZGVuKGNoYXIgX19jKSBjb25z
dAogICAgICB7IHJldHVybiB0aGlzLT5kb193aWRlbihfX2MpOyB9CiMgMzA0ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxl
X2ZhY2V0cy5oIiAzCiAgICAgIGNvbnN0IGNoYXIqCiAgICAgIHdpZGVuKGNvbnN0IGNoYXIqIF9f
bG8sIGNvbnN0IGNoYXIqIF9faGksIGNoYXJfdHlwZSogX190bykgY29uc3QKICAgICAgeyByZXR1
cm4gdGhpcy0+ZG9fd2lkZW4oX19sbywgX19oaSwgX190byk7IH0KIyAzMjMgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVf
ZmFjZXRzLmgiIDMKICAgICAgY2hhcgogICAgICBuYXJyb3coY2hhcl90eXBlIF9fYywgY2hhciBf
X2RmYXVsdCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fbmFycm93KF9fYywgX19kZmF1
bHQpOyB9CiMgMzQ1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGNvbnN0IGNoYXJfdHlw
ZSoKICAgICAgbmFycm93KGNvbnN0IGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBf
X2hpLAogICAgICAgY2hhciBfX2RmYXVsdCwgY2hhciogX190bykgY29uc3QKICAgICAgeyByZXR1
cm4gdGhpcy0+ZG9fbmFycm93KF9fbG8sIF9faGksIF9fZGZhdWx0LCBfX3RvKTsgfQoKICAgIHBy
b3RlY3RlZDoKICAgICAgZXhwbGljaXQKICAgICAgX19jdHlwZV9hYnN0cmFjdF9iYXNlKHNpemVf
dCBfX3JlZnMgPSAwKTogZmFjZXQoX19yZWZzKSB7IH0KCiAgICAgIHZpcnR1YWwKICAgICAgfl9f
Y3R5cGVfYWJzdHJhY3RfYmFzZSgpIHsgfQojIDM3MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwog
ICAgICB2aXJ0dWFsIGJvb2wKICAgICAgZG9faXMobWFzayBfX20sIGNoYXJfdHlwZSBfX2MpIGNv
bnN0ID0gMDsKIyAzODkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBjb25z
dCBjaGFyX3R5cGUqCiAgICAgIGRvX2lzKGNvbnN0IGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hh
cl90eXBlKiBfX2hpLAogICAgIG1hc2sqIF9fdmVjKSBjb25zdCA9IDA7CiMgNDA4ICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9j
YWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKgogICAgICBkb19z
Y2FuX2lzKG1hc2sgX19tLCBjb25zdCBjaGFyX3R5cGUqIF9fbG8sCiAgIGNvbnN0IGNoYXJfdHlw
ZSogX19oaSkgY29uc3QgPSAwOwojIDQyNyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2
aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZG9fc2Nhbl9ub3QobWFzayBfX20sIGNvbnN0
IGNoYXJfdHlwZSogX19sbywKICAgIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3QgPSAwOwoj
IDQ0NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNoYXJfdHlwZQogICAg
ICBkb190b3VwcGVyKGNoYXJfdHlwZSBfX2MpIGNvbnN0ID0gMDsKIyA0NjIgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVf
ZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUqCiAgICAgIGRvX3RvdXBw
ZXIoY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9faGkpIGNvbnN0ID0gMDsKIyA0
NzggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBjaGFyX3R5cGUKICAgICAg
ZG9fdG9sb3dlcihjaGFyX3R5cGUgX19jKSBjb25zdCA9IDA7CiMgNDk1ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2Zh
Y2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKgogICAgICBkb190b2xvd2Vy
KGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25zdCA9IDA7CiMgNTE0
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY2hhcl90eXBlCiAgICAgIGRv
X3dpZGVuKGNoYXIgX19jKSBjb25zdCA9IDA7CiMgNTM1ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAz
CiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcioKICAgICAgZG9fd2lkZW4oY29uc3QgY2hhciogX19s
bywgY29uc3QgY2hhciogX19oaSwgY2hhcl90eXBlKiBfX3RvKSBjb25zdCA9IDA7CiMgNTU2ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Jp
dHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY2hhcgogICAgICBkb19uYXJyb3co
Y2hhcl90eXBlIF9fYywgY2hhciBfX2RmYXVsdCkgY29uc3QgPSAwOwojIDU4MSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2Fs
ZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZG9fbmFy
cm93KGNvbnN0IGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpLAogIGNoYXIg
X19kZmF1bHQsIGNoYXIqIF9fdG8pIGNvbnN0ID0gMDsKICAgIH07CiMgNjA0ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxl
X2ZhY2V0cy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgY2xhc3MgY3R5cGUg
OiBwdWJsaWMgX19jdHlwZV9hYnN0cmFjdF9iYXNlPF9DaGFyVD4KICAgIHsKICAgIHB1YmxpYzoK
CiAgICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBf
X2N0eXBlX2Fic3RyYWN0X2Jhc2U8X0NoYXJUPjo6bWFzayBtYXNrOwoKCiAgICAgIHN0YXRpYyBs
b2NhbGU6OmlkIGlkOwoKICAgICAgZXhwbGljaXQKICAgICAgY3R5cGUoc2l6ZV90IF9fcmVmcyA9
IDApIDogX19jdHlwZV9hYnN0cmFjdF9iYXNlPF9DaGFyVD4oX19yZWZzKSB7IH0KCiAgIHByb3Rl
Y3RlZDoKICAgICAgdmlydHVhbAogICAgICB+Y3R5cGUoKTsKCiAgICAgIHZpcnR1YWwgYm9vbAog
ICAgICBkb19pcyhtYXNrIF9fbSwgY2hhcl90eXBlIF9fYykgY29uc3Q7CgogICAgICB2aXJ0dWFs
IGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZG9faXMoY29uc3QgY2hhcl90eXBlKiBfX2xvLCBjb25z
dCBjaGFyX3R5cGUqIF9faGksIG1hc2sqIF9fdmVjKSBjb25zdDsKCiAgICAgIHZpcnR1YWwgY29u
c3QgY2hhcl90eXBlKgogICAgICBkb19zY2FuX2lzKG1hc2sgX19tLCBjb25zdCBjaGFyX3R5cGUq
IF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3Q7CgogICAgICB2aXJ0dWFsIGNvbnN0
IGNoYXJfdHlwZSoKICAgICAgZG9fc2Nhbl9ub3QobWFzayBfX20sIGNvbnN0IGNoYXJfdHlwZSog
X19sbywKICAgIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3Q7CgogICAgICB2aXJ0dWFsIGNo
YXJfdHlwZQogICAgICBkb190b3VwcGVyKGNoYXJfdHlwZSBfX2MpIGNvbnN0OwoKICAgICAgdmly
dHVhbCBjb25zdCBjaGFyX3R5cGUqCiAgICAgIGRvX3RvdXBwZXIoY2hhcl90eXBlKiBfX2xvLCBj
b25zdCBjaGFyX3R5cGUqIF9faGkpIGNvbnN0OwoKICAgICAgdmlydHVhbCBjaGFyX3R5cGUKICAg
ICAgZG9fdG9sb3dlcihjaGFyX3R5cGUgX19jKSBjb25zdDsKCiAgICAgIHZpcnR1YWwgY29uc3Qg
Y2hhcl90eXBlKgogICAgICBkb190b2xvd2VyKGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hhcl90
eXBlKiBfX2hpKSBjb25zdDsKCiAgICAgIHZpcnR1YWwgY2hhcl90eXBlCiAgICAgIGRvX3dpZGVu
KGNoYXIgX19jKSBjb25zdDsKCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcioKICAgICAgZG9fd2lk
ZW4oY29uc3QgY2hhciogX19sbywgY29uc3QgY2hhciogX19oaSwgY2hhcl90eXBlKiBfX2Rlc3Qp
IGNvbnN0OwoKICAgICAgdmlydHVhbCBjaGFyCiAgICAgIGRvX25hcnJvdyhjaGFyX3R5cGUsIGNo
YXIgX19kZmF1bHQpIGNvbnN0OwoKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUqCiAgICAg
IGRvX25hcnJvdyhjb25zdCBjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSwK
ICBjaGFyIF9fZGZhdWx0LCBjaGFyKiBfX3RvKSBjb25zdDsKICAgIH07CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVD4KICAgIGxvY2FsZTo6aWQgY3R5cGU8X0NoYXJUPjo6aWQ7CiMgNjczICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Jp
dHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgdGVtcGxhdGU8PgogICAgY2xhc3MgY3R5cGU8Y2hhcj4g
OiBwdWJsaWMgbG9jYWxlOjpmYWNldCwgcHVibGljIGN0eXBlX2Jhc2UKICAgIHsKICAgIHB1Ymxp
YzoKCgogICAgICB0eXBlZGVmIGNoYXIgY2hhcl90eXBlOwoKICAgIHByb3RlY3RlZDoKCiAgICAg
IF9fY19sb2NhbGUgX01fY19sb2NhbGVfY3R5cGU7CiAgICAgIGJvb2wgX01fZGVsOwogICAgICBf
X3RvX3R5cGUgX01fdG91cHBlcjsKICAgICAgX190b190eXBlIF9NX3RvbG93ZXI7CiAgICAgIGNv
bnN0IG1hc2sqIF9NX3RhYmxlOwogICAgICBtdXRhYmxlIGNoYXIgX01fd2lkZW5fb2s7CiAgICAg
IG11dGFibGUgY2hhciBfTV93aWRlblsxICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oLTEp
XTsKICAgICAgbXV0YWJsZSBjaGFyIF9NX25hcnJvd1sxICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oLTEpXTsKICAgICAgbXV0YWJsZSBjaGFyIF9NX25hcnJvd19vazsKCgogICAgcHVibGlj
OgoKICAgICAgc3RhdGljIGxvY2FsZTo6aWQgaWQ7CgogICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IHRhYmxlX3NpemUgPSAxICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oLTEpOwojIDcxMCAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9i
aXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBleHBsaWNpdAogICAgICBjdHlwZShjb25zdCBt
YXNrKiBfX3RhYmxlID0gMCwgYm9vbCBfX2RlbCA9IGZhbHNlLCBzaXplX3QgX19yZWZzID0gMCk7
CiMgNzIzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGV4cGxpY2l0CiAgICAgIGN0eXBl
KF9fY19sb2NhbGUgX19jbG9jLCBjb25zdCBtYXNrKiBfX3RhYmxlID0gMCwgYm9vbCBfX2RlbCA9
IGZhbHNlLAogICAgIHNpemVfdCBfX3JlZnMgPSAwKTsKIyA3MzYgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRz
LmgiIDMKICAgICAgaW5saW5lIGJvb2wKICAgICAgaXMobWFzayBfX20sIGNoYXIgX19jKSBjb25z
dDsKIyA3NTEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgaW5saW5lIGNvbnN0IGNoYXIq
CiAgICAgIGlzKGNvbnN0IGNoYXIqIF9fbG8sIGNvbnN0IGNoYXIqIF9faGksIG1hc2sqIF9fdmVj
KSBjb25zdDsKIyA3NjUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgaW5saW5lIGNvbnN0
IGNoYXIqCiAgICAgIHNjYW5faXMobWFzayBfX20sIGNvbnN0IGNoYXIqIF9fbG8sIGNvbnN0IGNo
YXIqIF9faGkpIGNvbnN0OwojIDc3OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBpbmxp
bmUgY29uc3QgY2hhcioKICAgICAgc2Nhbl9ub3QobWFzayBfX20sIGNvbnN0IGNoYXIqIF9fbG8s
IGNvbnN0IGNoYXIqIF9faGkpIGNvbnN0OwojIDc5NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwog
ICAgICBjaGFyX3R5cGUKICAgICAgdG91cHBlcl9XVEZfUGxlYXNlX3VzZV9BU0NJSUNUeXBlX2lu
c3RlYWRfb2ZfY3R5cGVfc2VlX2NvbW1lbnRfaW5fQVNDSUlDVHlwZV9oKGNoYXJfdHlwZSBfX2Mp
IGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX3RvdXBwZXIoX19jKTsgfQojIDgxMSAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBjb25zdCBjaGFyX3R5cGUqCiAgICAgIHRvdXBwZXJf
V1RGX1BsZWFzZV91c2VfQVNDSUlDVHlwZV9pbnN0ZWFkX29mX2N0eXBlX3NlZV9jb21tZW50X2lu
X0FTQ0lJQ1R5cGVfaChjaGFyX3R5cGUgKl9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29u
c3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fdG91cHBlcihfX2xvLCBfX2hpKTsgfQojIDgyNyAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9i
aXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBjaGFyX3R5cGUKICAgICAgdG9sb3dlcl9XVEZf
UGxlYXNlX3VzZV9BU0NJSUNUeXBlX2luc3RlYWRfb2ZfY3R5cGVfc2VlX2NvbW1lbnRfaW5fQVND
SUlDVHlwZV9oKGNoYXJfdHlwZSBfX2MpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX3Rv
bG93ZXIoX19jKTsgfQojIDg0NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBjb25zdCBj
aGFyX3R5cGUqCiAgICAgIHRvbG93ZXJfV1RGX1BsZWFzZV91c2VfQVNDSUlDVHlwZV9pbnN0ZWFk
X29mX2N0eXBlX3NlZV9jb21tZW50X2luX0FTQ0lJQ1R5cGVfaChjaGFyX3R5cGUqIF9fbG8sIGNv
bnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fdG9sb3dl
cihfX2xvLCBfX2hpKTsgfQojIDg2NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBjaGFy
X3R5cGUKICAgICAgd2lkZW4oY2hhciBfX2MpIGNvbnN0CiAgICAgIHsKIGlmIChfTV93aWRlbl9v
aykKICAgcmV0dXJuIF9NX3dpZGVuW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9fYyldOwog
dGhpcy0+X01fd2lkZW5faW5pdCgpOwogcmV0dXJuIHRoaXMtPmRvX3dpZGVuKF9fYyk7CiAgICAg
IH0KIyA4OTEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgY29uc3QgY2hhcioKICAgICAg
d2lkZW4oY29uc3QgY2hhciogX19sbywgY29uc3QgY2hhciogX19oaSwgY2hhcl90eXBlKiBfX3Rv
KSBjb25zdAogICAgICB7CiBpZiAoX01fd2lkZW5fb2sgPT0gMSkKICAgewogICAgIF9fYnVpbHRp
bl9tZW1jcHkoX190bywgX19sbywgX19oaSAtIF9fbG8pOwogICAgIHJldHVybiBfX2hpOwogICB9
CiBpZiAoIV9NX3dpZGVuX29rKQogICBfTV93aWRlbl9pbml0KCk7CiByZXR1cm4gdGhpcy0+ZG9f
d2lkZW4oX19sbywgX19oaSwgX190byk7CiAgICAgIH0KIyA5MjIgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRz
LmgiIDMKICAgICAgY2hhcgogICAgICBuYXJyb3coY2hhcl90eXBlIF9fYywgY2hhciBfX2RmYXVs
dCkgY29uc3QKICAgICAgewogaWYgKF9NX25hcnJvd1tzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PihfX2MpXSkKICAgcmV0dXJuIF9NX25hcnJvd1tzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihf
X2MpXTsKIGNvbnN0IGNoYXIgX190ID0gZG9fbmFycm93KF9fYywgX19kZmF1bHQpOwogaWYgKF9f
dCAhPSBfX2RmYXVsdCkKICAgX01fbmFycm93W3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9f
YyldID0gX190OwogcmV0dXJuIF9fdDsKICAgICAgfQojIDk1NSAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMu
aCIgMwogICAgICBjb25zdCBjaGFyX3R5cGUqCiAgICAgIG5hcnJvdyhjb25zdCBjaGFyX3R5cGUq
IF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSwKICAgICAgY2hhciBfX2RmYXVsdCwgY2hhciog
X190bykgY29uc3QKICAgICAgewogaWYgKF9fYnVpbHRpbl9leHBlY3QoX01fbmFycm93X29rID09
IDEsIHRydWUpKQogICB7CiAgICAgX19idWlsdGluX21lbWNweShfX3RvLCBfX2xvLCBfX2hpIC0g
X19sbyk7CiAgICAgcmV0dXJuIF9faGk7CiAgIH0KIGlmICghX01fbmFycm93X29rKQogICBfTV9u
YXJyb3dfaW5pdCgpOwogcmV0dXJuIHRoaXMtPmRvX25hcnJvdyhfX2xvLCBfX2hpLCBfX2RmYXVs
dCwgX190byk7CiAgICAgIH0KCgoKCgogICAgICBjb25zdCBtYXNrKgogICAgICB0YWJsZSgpIGNv
bnN0IHRocm93KCkKICAgICAgeyByZXR1cm4gX01fdGFibGU7IH0KCgogICAgICBzdGF0aWMgY29u
c3QgbWFzayoKICAgICAgY2xhc3NpY190YWJsZSgpIHRocm93KCk7CiAgICBwcm90ZWN0ZWQ6CgoK
CgoKCgogICAgICB2aXJ0dWFsCiAgICAgIH5jdHlwZSgpOwojIDEwMDQgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFj
ZXRzLmgiIDMKICAgICAgdmlydHVhbCBjaGFyX3R5cGUKICAgICAgZG9fdG91cHBlcihjaGFyX3R5
cGUgX19jKSBjb25zdDsKIyAxMDIxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1
YWwgY29uc3QgY2hhcl90eXBlKgogICAgICBkb190b3VwcGVyKGNoYXJfdHlwZSogX19sbywgY29u
c3QgY2hhcl90eXBlKiBfX2hpKSBjb25zdDsKIyAxMDM3ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAz
CiAgICAgIHZpcnR1YWwgY2hhcl90eXBlCiAgICAgIGRvX3RvbG93ZXIoY2hhcl90eXBlIF9fYykg
Y29uc3Q7CiMgMTA1NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNvbnN0
IGNoYXJfdHlwZSoKICAgICAgZG9fdG9sb3dlcihjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJf
dHlwZSogX19oaSkgY29uc3Q7CiMgMTA3NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2
aXJ0dWFsIGNoYXJfdHlwZQogICAgICBkb193aWRlbihjaGFyIF9fYykgY29uc3QKICAgICAgeyBy
ZXR1cm4gX19jOyB9CiMgMTA5NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqCiAgICAgIGRvX3dpZGVuKGNvbnN0IGNoYXIqIF9fbG8sIGNvbnN0IGNoYXIq
IF9faGksIGNoYXJfdHlwZSogX190bykgY29uc3QKICAgICAgewogX19idWlsdGluX21lbWNweShf
X3RvLCBfX2xvLCBfX2hpIC0gX19sbyk7CiByZXR1cm4gX19oaTsKICAgICAgfQojIDExMjMgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBjaGFyCiAgICAgIGRvX25hcnJvdyhj
aGFyX3R5cGUgX19jLCBjaGFyIF9fZGZhdWx0KSBjb25zdAogICAgICB7IHJldHVybiBfX2M7IH0K
IyAxMTQ5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90
eXBlKgogICAgICBkb19uYXJyb3coY29uc3QgY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5
cGUqIF9faGksCiAgY2hhciBfX2RmYXVsdCwgY2hhciogX190bykgY29uc3QKICAgICAgewogX19i
dWlsdGluX21lbWNweShfX3RvLCBfX2xvLCBfX2hpIC0gX19sbyk7CiByZXR1cm4gX19oaTsKICAg
ICAgfQoKICAgIHByaXZhdGU6CiAgICAgIHZvaWQgX01fbmFycm93X2luaXQoKSBjb25zdDsKICAg
ICAgdm9pZCBfTV93aWRlbl9pbml0KCkgY29uc3Q7CiAgICB9OwojIDExNzQgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVf
ZmFjZXRzLmgiIDMKICB0ZW1wbGF0ZTw+CiAgICBjbGFzcyBjdHlwZTx3Y2hhcl90PiA6IHB1Ymxp
YyBfX2N0eXBlX2Fic3RyYWN0X2Jhc2U8d2NoYXJfdD4KICAgIHsKICAgIHB1YmxpYzoKCgogICAg
ICB0eXBlZGVmIHdjaGFyX3QgY2hhcl90eXBlOwogICAgICB0eXBlZGVmIHdjdHlwZV90IF9fd21h
c2tfdHlwZTsKCiAgICBwcm90ZWN0ZWQ6CiAgICAgIF9fY19sb2NhbGUgX01fY19sb2NhbGVfY3R5
cGU7CgoKICAgICAgYm9vbCBfTV9uYXJyb3dfb2s7CiAgICAgIGNoYXIgX01fbmFycm93WzEyOF07
CiAgICAgIHdpbnRfdCBfTV93aWRlblsxICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oLTEp
XTsKCgogICAgICBtYXNrIF9NX2JpdFsxNl07CiAgICAgIF9fd21hc2tfdHlwZSBfTV93bWFza1sx
Nl07CgogICAgcHVibGljOgoKCiAgICAgIHN0YXRpYyBsb2NhbGU6OmlkIGlkOwojIDEyMDcgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgZXhwbGljaXQKICAgICAgY3R5cGUoc2l6ZV90IF9f
cmVmcyA9IDApOwojIDEyMTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgZXhwbGljaXQK
ICAgICAgY3R5cGUoX19jX2xvY2FsZSBfX2Nsb2MsIHNpemVfdCBfX3JlZnMgPSAwKTsKCiAgICBw
cm90ZWN0ZWQ6CiAgICAgIF9fd21hc2tfdHlwZQogICAgICBfTV9jb252ZXJ0X3RvX3dtYXNrKGNv
bnN0IG1hc2sgX19tKSBjb25zdCB0aHJvdygpOwoKCiAgICAgIHZpcnR1YWwKICAgICAgfmN0eXBl
KCk7CiMgMTI0MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGJvb2wKICAg
ICAgZG9faXMobWFzayBfX20sIGNoYXJfdHlwZSBfX2MpIGNvbnN0OwojIDEyNjEgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2Nh
bGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUqCiAgICAgIGRvX2lz
KGNvbnN0IGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpLCBtYXNrKiBfX3Zl
YykgY29uc3Q7CiMgMTI3OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNv
bnN0IGNoYXJfdHlwZSoKICAgICAgZG9fc2Nhbl9pcyhtYXNrIF9fbSwgY29uc3QgY2hhcl90eXBl
KiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9faGkpIGNvbnN0OwojIDEyOTcgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVf
ZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUqCiAgICAgIGRvX3NjYW5f
bm90KG1hc2sgX19tLCBjb25zdCBjaGFyX3R5cGUqIF9fbG8sCiAgICBjb25zdCBjaGFyX3R5cGUq
IF9faGkpIGNvbnN0OwojIDEzMTQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVh
bCBjaGFyX3R5cGUKICAgICAgZG9fdG91cHBlcihjaGFyX3R5cGUgX19jKSBjb25zdDsKIyAxMzMx
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKgog
ICAgICBkb190b3VwcGVyKGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBj
b25zdDsKIyAxMzQ3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY2hhcl90
eXBlCiAgICAgIGRvX3RvbG93ZXIoY2hhcl90eXBlIF9fYykgY29uc3Q7CiMgMTM2NCAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xv
Y2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZG9f
dG9sb3dlcihjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3Q7CiMg
MTM4NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNoYXJfdHlwZQogICAg
ICBkb193aWRlbihjaGFyIF9fYykgY29uc3Q7CiMgMTQwNiAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIg
MwogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqCiAgICAgIGRvX3dpZGVuKGNvbnN0IGNoYXIqIF9f
bG8sIGNvbnN0IGNoYXIqIF9faGksIGNoYXJfdHlwZSogX190bykgY29uc3Q7CiMgMTQyOSAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNoYXIKICAgICAgZG9fbmFycm93KGNo
YXJfdHlwZSBfX2MsIGNoYXIgX19kZmF1bHQpIGNvbnN0OwojIDE0NTUgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFj
ZXRzLmgiIDMKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUqCiAgICAgIGRvX25hcnJvdyhj
b25zdCBjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSwKICBjaGFyIF9fZGZh
dWx0LCBjaGFyKiBfX3RvKSBjb25zdDsKCgogICAgICB2b2lkCiAgICAgIF9NX2luaXRpYWxpemVf
Y3R5cGUoKSB0aHJvdygpOwogICAgfTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAg
ICBjbGFzcyBjdHlwZV9ieW5hbWUgOiBwdWJsaWMgY3R5cGU8X0NoYXJUPgogICAgewogICAgcHVi
bGljOgogICAgICB0eXBlZGVmIHR5cGVuYW1lIGN0eXBlPF9DaGFyVD46Om1hc2sgbWFzazsKCiAg
ICAgIGV4cGxpY2l0CiAgICAgIGN0eXBlX2J5bmFtZShjb25zdCBjaGFyKiBfX3MsIHNpemVfdCBf
X3JlZnMgPSAwKTsKCiAgICBwcm90ZWN0ZWQ6CiAgICAgIHZpcnR1YWwKICAgICAgfmN0eXBlX2J5
bmFtZSgpIHsgfTsKICAgIH07CgoKICB0ZW1wbGF0ZTw+CiAgICBjbGFzcyBjdHlwZV9ieW5hbWU8
Y2hhcj4gOiBwdWJsaWMgY3R5cGU8Y2hhcj4KICAgIHsKICAgIHB1YmxpYzoKICAgICAgZXhwbGlj
aXQKICAgICAgY3R5cGVfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcyA9IDAp
OwoKICAgIHByb3RlY3RlZDoKICAgICAgdmlydHVhbAogICAgICB+Y3R5cGVfYnluYW1lKCk7CiAg
ICB9OwoKCiAgdGVtcGxhdGU8PgogICAgY2xhc3MgY3R5cGVfYnluYW1lPHdjaGFyX3Q+IDogcHVi
bGljIGN0eXBlPHdjaGFyX3Q+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIGV4cGxpY2l0CiAgICAg
IGN0eXBlX2J5bmFtZShjb25zdCBjaGFyKiBfX3MsIHNpemVfdCBfX3JlZnMgPSAwKTsKCiAgICBw
cm90ZWN0ZWQ6CiAgICAgIHZpcnR1YWwKICAgICAgfmN0eXBlX2J5bmFtZSgpOwogICAgfTsKCgoK
fQoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvYml0cy9jdHlwZV9pbmxpbmUuaCIgMSAz
CiMgMzcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvY3R5cGVfaW5saW5lLmgiIDMKbmFt
ZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7
CgoKICBib29sCiAgY3R5cGU8Y2hhcj46OgogIGlzKG1hc2sgX19tLCBjaGFyIF9fYykgY29uc3QK
ICB7IHJldHVybiBfTV90YWJsZVtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihfX2MpXSAmIF9f
bTsgfQoKICBjb25zdCBjaGFyKgogIGN0eXBlPGNoYXI+OjoKICBpcyhjb25zdCBjaGFyKiBfX2xv
dywgY29uc3QgY2hhciogX19oaWdoLCBtYXNrKiBfX3ZlYykgY29uc3QKICB7CiAgICB3aGlsZSAo
X19sb3cgPCBfX2hpZ2gpCiAgICAgICpfX3ZlYysrID0gX01fdGFibGVbc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oKl9fbG93KyspXTsKICAgIHJldHVybiBfX2hpZ2g7CiAgfQoKICBjb25zdCBj
aGFyKgogIGN0eXBlPGNoYXI+OjoKICBzY2FuX2lzKG1hc2sgX19tLCBjb25zdCBjaGFyKiBfX2xv
dywgY29uc3QgY2hhciogX19oaWdoKSBjb25zdAogIHsKICAgIHdoaWxlIChfX2xvdyA8IF9faGln
aAogICAgJiYgIShfTV90YWJsZVtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqX19sb3cpXSAm
IF9fbSkpCiAgICAgICsrX19sb3c7CiAgICByZXR1cm4gX19sb3c7CiAgfQoKICBjb25zdCBjaGFy
KgogIGN0eXBlPGNoYXI+OjoKICBzY2FuX25vdChtYXNrIF9fbSwgY29uc3QgY2hhciogX19sb3cs
IGNvbnN0IGNoYXIqIF9faGlnaCkgY29uc3QKICB7CiAgICB3aGlsZSAoX19sb3cgPCBfX2hpZ2gK
ICAgICYmIChfTV90YWJsZVtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqX19sb3cpXSAmIF9f
bSkgIT0gMCkKICAgICAgKytfX2xvdzsKICAgIHJldHVybiBfX2xvdzsKICB9CgoKfQojIDE1MTIg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
Yml0cy9sb2NhbGVfZmFjZXRzLmgiIDIgMwoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgo
X192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCiAgY2xhc3MgX19udW1fYmFzZQogIHsK
ICBwdWJsaWM6CgoKICAgIGVudW0KICAgICAgewogX1Nfb21pbnVzLAogX1Nfb3BsdXMsCiBfU19v
eCwKIF9TX29YLAogX1Nfb2RpZ2l0cywKIF9TX29kaWdpdHNfZW5kID0gX1Nfb2RpZ2l0cyArIDE2
LAogX1Nfb3VkaWdpdHMgPSBfU19vZGlnaXRzX2VuZCwKIF9TX291ZGlnaXRzX2VuZCA9IF9TX291
ZGlnaXRzICsgMTYsCiBfU19vZSA9IF9TX29kaWdpdHMgKyAxNCwKIF9TX29FID0gX1Nfb3VkaWdp
dHMgKyAxNCwKIF9TX29lbmQgPSBfU19vdWRpZ2l0c19lbmQKICAgICAgfTsKCgoKCgoKICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBfU19hdG9tc19vdXQ7CgoKCiAgICBzdGF0aWMgY29uc3QgY2hhciog
X1NfYXRvbXNfaW47CgogICAgZW51bQogICAgewogICAgICBfU19pbWludXMsCiAgICAgIF9TX2lw
bHVzLAogICAgICBfU19peCwKICAgICAgX1NfaVgsCiAgICAgIF9TX2l6ZXJvLAogICAgICBfU19p
ZSA9IF9TX2l6ZXJvICsgMTQsCiAgICAgIF9TX2lFID0gX1NfaXplcm8gKyAyMCwKICAgICAgX1Nf
aWVuZCA9IDI2CiAgICB9OwoKCgogICAgc3RhdGljIHZvaWQKICAgIF9TX2Zvcm1hdF9mbG9hdChj
b25zdCBpb3NfYmFzZSYgX19pbywgY2hhciogX19mcHRyLCBjaGFyIF9fbW9kKSB0aHJvdygpOwog
IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIHN0cnVjdCBfX251bXB1bmN0X2Nh
Y2hlIDogcHVibGljIGxvY2FsZTo6ZmFjZXQKICAgIHsKICAgICAgY29uc3QgY2hhciogX01fZ3Jv
dXBpbmc7CiAgICAgIHNpemVfdCBfTV9ncm91cGluZ19zaXplOwogICAgICBib29sIF9NX3VzZV9n
cm91cGluZzsKICAgICAgY29uc3QgX0NoYXJUKiBfTV90cnVlbmFtZTsKICAgICAgc2l6ZV90IF9N
X3RydWVuYW1lX3NpemU7CiAgICAgIGNvbnN0IF9DaGFyVCogX01fZmFsc2VuYW1lOwogICAgICBz
aXplX3QgX01fZmFsc2VuYW1lX3NpemU7CiAgICAgIF9DaGFyVCBfTV9kZWNpbWFsX3BvaW50Owog
ICAgICBfQ2hhclQgX01fdGhvdXNhbmRzX3NlcDsKCgoKCgogICAgICBfQ2hhclQgX01fYXRvbXNf
b3V0W19fbnVtX2Jhc2U6Ol9TX29lbmRdOwoKCgoKCiAgICAgIF9DaGFyVCBfTV9hdG9tc19pbltf
X251bV9iYXNlOjpfU19pZW5kXTsKCiAgICAgIGJvb2wgX01fYWxsb2NhdGVkOwoKICAgICAgX19u
dW1wdW5jdF9jYWNoZShzaXplX3QgX19yZWZzID0gMCkKICAgICAgOiBmYWNldChfX3JlZnMpLCBf
TV9ncm91cGluZygwKSwgX01fZ3JvdXBpbmdfc2l6ZSgwKSwKIF9NX3VzZV9ncm91cGluZyhmYWxz
ZSksCiBfTV90cnVlbmFtZSgwKSwgX01fdHJ1ZW5hbWVfc2l6ZSgwKSwgX01fZmFsc2VuYW1lKDAp
LAogX01fZmFsc2VuYW1lX3NpemUoMCksIF9NX2RlY2ltYWxfcG9pbnQoX0NoYXJUKCkpLAogX01f
dGhvdXNhbmRzX3NlcChfQ2hhclQoKSksIF9NX2FsbG9jYXRlZChmYWxzZSkKIHsgfQoKICAgICAg
fl9fbnVtcHVuY3RfY2FjaGUoKTsKCiAgICAgIHZvaWQKICAgICAgX01fY2FjaGUoY29uc3QgbG9j
YWxlJiBfX2xvYyk7CgogICAgcHJpdmF0ZToKICAgICAgX19udW1wdW5jdF9jYWNoZSYKICAgICAg
b3BlcmF0b3I9KGNvbnN0IF9fbnVtcHVuY3RfY2FjaGUmKTsKCiAgICAgIGV4cGxpY2l0CiAgICAg
IF9fbnVtcHVuY3RfY2FjaGUoY29uc3QgX19udW1wdW5jdF9jYWNoZSYpOwogICAgfTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgX19udW1wdW5jdF9jYWNoZTxfQ2hhclQ+Ojp+X19u
dW1wdW5jdF9jYWNoZSgpCiAgICB7CiAgICAgIGlmIChfTV9hbGxvY2F0ZWQpCiB7CiAgIGRlbGV0
ZSBbXSBfTV9ncm91cGluZzsKICAgZGVsZXRlIFtdIF9NX3RydWVuYW1lOwogICBkZWxldGUgW10g
X01fZmFsc2VuYW1lOwogfQogICAgfQojIDE2NDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBjbGFzcyBudW1wdW5jdCA6IHB1YmxpYyBsb2Nh
bGU6OmZhY2V0CiAgICB7CiAgICBwdWJsaWM6CgoKCiAgICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJf
dHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19zdHJpbmc8X0NoYXJUPiBzdHJpbmdfdHlwZTsKCiAg
ICAgIHR5cGVkZWYgX19udW1wdW5jdF9jYWNoZTxfQ2hhclQ+IF9fY2FjaGVfdHlwZTsKCiAgICBw
cm90ZWN0ZWQ6CiAgICAgIF9fY2FjaGVfdHlwZSogX01fZGF0YTsKCiAgICBwdWJsaWM6CgogICAg
ICBzdGF0aWMgbG9jYWxlOjppZCBpZDsKCgoKCgoKICAgICAgZXhwbGljaXQKICAgICAgbnVtcHVu
Y3Qoc2l6ZV90IF9fcmVmcyA9IDApCiAgICAgIDogZmFjZXQoX19yZWZzKSwgX01fZGF0YSgwKQog
ICAgICB7IF9NX2luaXRpYWxpemVfbnVtcHVuY3QoKTsgfQojIDE2NzggIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFj
ZXRzLmgiIDMKICAgICAgZXhwbGljaXQKICAgICAgbnVtcHVuY3QoX19jYWNoZV90eXBlKiBfX2Nh
Y2hlLCBzaXplX3QgX19yZWZzID0gMCkKICAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9kYXRhKF9f
Y2FjaGUpCiAgICAgIHsgX01faW5pdGlhbGl6ZV9udW1wdW5jdCgpOyB9CiMgMTY5MiAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xv
Y2FsZV9mYWNldHMuaCIgMwogICAgICBleHBsaWNpdAogICAgICBudW1wdW5jdChfX2NfbG9jYWxl
IF9fY2xvYywgc2l6ZV90IF9fcmVmcyA9IDApCiAgICAgIDogZmFjZXQoX19yZWZzKSwgX01fZGF0
YSgwKQogICAgICB7IF9NX2luaXRpYWxpemVfbnVtcHVuY3QoX19jbG9jKTsgfQojIDE3MDYgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgY2hhcl90eXBlCiAgICAgIGRlY2ltYWxfcG9pbnQo
KSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19kZWNpbWFsX3BvaW50KCk7IH0KIyAxNzE5
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGNoYXJfdHlwZQogICAgICB0aG91c2FuZHNf
c2VwKCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fdGhvdXNhbmRzX3NlcCgpOyB9CiMg
MTc1MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBzdHJpbmcKICAgICAgZ3JvdXBpbmco
KSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19ncm91cGluZygpOyB9CiMgMTc2MyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBzdHJpbmdfdHlwZQogICAgICB0cnVlbmFtZSgpIGNv
bnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX3RydWVuYW1lKCk7IH0KIyAxNzc2ICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9j
YWxlX2ZhY2V0cy5oIiAzCiAgICAgIHN0cmluZ190eXBlCiAgICAgIGZhbHNlbmFtZSgpIGNvbnN0
CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2ZhbHNlbmFtZSgpOyB9CgogICAgcHJvdGVjdGVkOgoK
ICAgICAgdmlydHVhbAogICAgICB+bnVtcHVuY3QoKTsKIyAxNzkzICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2ZhY2V0
cy5oIiAzCiAgICAgIHZpcnR1YWwgY2hhcl90eXBlCiAgICAgIGRvX2RlY2ltYWxfcG9pbnQoKSBj
b25zdAogICAgICB7IHJldHVybiBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50OyB9CiMgMTgwNSAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9i
aXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNoYXJfdHlwZQogICAgICBkb190
aG91c2FuZHNfc2VwKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fZGF0YS0+X01fdGhvdXNhbmRz
X3NlcDsgfQojIDE4MTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBzdHJp
bmcKICAgICAgZG9fZ3JvdXBpbmcoKSBjb25zdAogICAgICB7IHJldHVybiBfTV9kYXRhLT5fTV9n
cm91cGluZzsgfQojIDE4MzEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBz
dHJpbmdfdHlwZQogICAgICBkb190cnVlbmFtZSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2Rh
dGEtPl9NX3RydWVuYW1lOyB9CiMgMTg0NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2
aXJ0dWFsIHN0cmluZ190eXBlCiAgICAgIGRvX2ZhbHNlbmFtZSgpIGNvbnN0CiAgICAgIHsgcmV0
dXJuIF9NX2RhdGEtPl9NX2ZhbHNlbmFtZTsgfQoKCiAgICAgIHZvaWQKICAgICAgX01faW5pdGlh
bGl6ZV9udW1wdW5jdChfX2NfbG9jYWxlIF9fY2xvYyA9IDApOwogICAgfTsKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJUPgogICAgbG9jYWxlOjppZCBudW1wdW5jdDxfQ2hhclQ+OjppZDsKCiAg
dGVtcGxhdGU8PgogICAgbnVtcHVuY3Q8Y2hhcj46On5udW1wdW5jdCgpOwoKICB0ZW1wbGF0ZTw+
CiAgICB2b2lkCiAgICBudW1wdW5jdDxjaGFyPjo6X01faW5pdGlhbGl6ZV9udW1wdW5jdChfX2Nf
bG9jYWxlIF9fY2xvYyk7CgoKICB0ZW1wbGF0ZTw+CiAgICBudW1wdW5jdDx3Y2hhcl90Pjo6fm51
bXB1bmN0KCk7CgogIHRlbXBsYXRlPD4KICAgIHZvaWQKICAgIG51bXB1bmN0PHdjaGFyX3Q+Ojpf
TV9pbml0aWFsaXplX251bXB1bmN0KF9fY19sb2NhbGUgX19jbG9jKTsKCgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQ+CiAgICBjbGFzcyBudW1wdW5jdF9ieW5hbWUgOiBwdWJsaWMgbnVtcHVu
Y3Q8X0NoYXJUPgogICAgewogICAgcHVibGljOgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5
cGU7CiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPF9DaGFyVD4gc3RyaW5nX3R5cGU7CgogICAg
ICBleHBsaWNpdAogICAgICBudW1wdW5jdF9ieW5hbWUoY29uc3QgY2hhciogX19zLCBzaXplX3Qg
X19yZWZzID0gMCkKICAgICAgOiBudW1wdW5jdDxfQ2hhclQ+KF9fcmVmcykKICAgICAgewogaWYg
KF9fYnVpbHRpbl9zdHJjbXAoX19zLCAiQyIpICE9IDAKICAgICAmJiBfX2J1aWx0aW5fc3RyY21w
KF9fcywgIlBPU0lYIikgIT0gMCkKICAgewogICAgIF9fY19sb2NhbGUgX190bXA7CiAgICAgdGhp
cy0+X1NfY3JlYXRlX2NfbG9jYWxlKF9fdG1wLCBfX3MpOwogICAgIHRoaXMtPl9NX2luaXRpYWxp
emVfbnVtcHVuY3QoX190bXApOwogICAgIHRoaXMtPl9TX2Rlc3Ryb3lfY19sb2NhbGUoX190bXAp
OwogICB9CiAgICAgIH0KCiAgICBwcm90ZWN0ZWQ6CiAgICAgIHZpcnR1YWwKICAgICAgfm51bXB1
bmN0X2J5bmFtZSgpIHsgfQogICAgfTsKCgojIDE5MTQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXI+CiAgICBjbGFzcyBu
dW1fZ2V0IDogcHVibGljIGxvY2FsZTo6ZmFjZXQKICAgIHsKICAgIHB1YmxpYzoKCgoKICAgICAg
dHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOwogICAgICB0eXBlZGVmIF9Jbkl0ZXIgaXRlcl90eXBl
OwoKCgogICAgICBzdGF0aWMgbG9jYWxlOjppZCBpZDsKIyAxOTM1ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2ZhY2V0
cy5oIiAzCiAgICAgIGV4cGxpY2l0CiAgICAgIG51bV9nZXQoc2l6ZV90IF9fcmVmcyA9IDApIDog
ZmFjZXQoX19yZWZzKSB7IH0KIyAxOTYxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGl0
ZXJfdHlwZQogICAgICBnZXQoaXRlcl90eXBlIF9faW4sIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jh
c2UmIF9faW8sCiAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgYm9vbCYgX192KSBjb25zdAog
ICAgICB7IHJldHVybiB0aGlzLT5kb19nZXQoX19pbiwgX19lbmQsIF9faW8sIF9fZXJyLCBfX3Yp
OyB9CiMgMTk5OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBpdGVyX3R5cGUKICAgICAg
Z2V0KGl0ZXJfdHlwZSBfX2luLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLAogICBp
b3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIGxvbmcmIF9fdikgY29uc3QKICAgICAgeyByZXR1cm4g
dGhpcy0+ZG9fZ2V0KF9faW4sIF9fZW5kLCBfX2lvLCBfX2VyciwgX192KTsgfQoKICAgICAgaXRl
cl90eXBlCiAgICAgIGdldChpdGVyX3R5cGUgX19pbiwgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFz
ZSYgX19pbywKICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCB1bnNpZ25lZCBzaG9ydCYgX192
KSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19nZXQoX19pbiwgX19lbmQsIF9faW8sIF9f
ZXJyLCBfX3YpOyB9CgogICAgICBpdGVyX3R5cGUKICAgICAgZ2V0KGl0ZXJfdHlwZSBfX2luLCBp
dGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLAogICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19l
cnIsIHVuc2lnbmVkIGludCYgX192KSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19nZXQo
X19pbiwgX19lbmQsIF9faW8sIF9fZXJyLCBfX3YpOyB9CgogICAgICBpdGVyX3R5cGUKICAgICAg
Z2V0KGl0ZXJfdHlwZSBfX2luLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLAogICBp
b3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHVuc2lnbmVkIGxvbmcmIF9fdikgY29uc3QKICAgICAg
eyByZXR1cm4gdGhpcy0+ZG9fZ2V0KF9faW4sIF9fZW5kLCBfX2lvLCBfX2VyciwgX192KTsgfQoK
CiAgICAgIGl0ZXJfdHlwZQogICAgICBnZXQoaXRlcl90eXBlIF9faW4sIGl0ZXJfdHlwZSBfX2Vu
ZCwgaW9zX2Jhc2UmIF9faW8sCiAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgbG9uZyBsb25n
JiBfX3YpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2dldChfX2luLCBfX2VuZCwgX19p
bywgX19lcnIsIF9fdik7IH0KCiAgICAgIGl0ZXJfdHlwZQogICAgICBnZXQoaXRlcl90eXBlIF9f
aW4sIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgIGlvc19iYXNlOjppb3N0YXRl
JiBfX2VyciwgdW5zaWduZWQgbG9uZyBsb25nJiBfX3YpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRo
aXMtPmRvX2dldChfX2luLCBfX2VuZCwgX19pbywgX19lcnIsIF9fdik7IH0KIyAyMDU4ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMv
bG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGl0ZXJfdHlwZQogICAgICBnZXQoaXRlcl90eXBlIF9f
aW4sIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgIGlvc19iYXNlOjppb3N0YXRl
JiBfX2VyciwgZmxvYXQmIF9fdikgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fZ2V0KF9f
aW4sIF9fZW5kLCBfX2lvLCBfX2VyciwgX192KTsgfQoKICAgICAgaXRlcl90eXBlCiAgICAgIGdl
dChpdGVyX3R5cGUgX19pbiwgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywKICAgaW9z
X2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCBkb3VibGUmIF9fdikgY29uc3QKICAgICAgeyByZXR1cm4g
dGhpcy0+ZG9fZ2V0KF9faW4sIF9fZW5kLCBfX2lvLCBfX2VyciwgX192KTsgfQoKICAgICAgaXRl
cl90eXBlCiAgICAgIGdldChpdGVyX3R5cGUgX19pbiwgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFz
ZSYgX19pbywKICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCBsb25nIGRvdWJsZSYgX192KSBj
b25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19nZXQoX19pbiwgX19lbmQsIF9faW8sIF9fZXJy
LCBfX3YpOyB9CiMgMjEwMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBpdGVyX3R5cGUK
ICAgICAgZ2V0KGl0ZXJfdHlwZSBfX2luLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lv
LAogICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHZvaWQqJiBfX3YpIGNvbnN0CiAgICAgIHsg
cmV0dXJuIHRoaXMtPmRvX2dldChfX2luLCBfX2VuZCwgX19pbywgX19lcnIsIF9fdik7IH0KCiAg
ICBwcm90ZWN0ZWQ6CgogICAgICB2aXJ0dWFsIH5udW1fZ2V0KCkgeyB9CgogICAgICBpdGVyX3R5
cGUKICAgICAgX01fZXh0cmFjdF9mbG9hdChpdGVyX3R5cGUsIGl0ZXJfdHlwZSwgaW9zX2Jhc2Um
LCBpb3NfYmFzZTo6aW9zdGF0ZSYsCiAgICAgICAgIHN0cmluZyYpIGNvbnN0OwoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX1ZhbHVlVD4KIGl0ZXJfdHlwZQogX01fZXh0cmFjdF9pbnQoaXRlcl90
eXBlLCBpdGVyX3R5cGUsIGlvc19iYXNlJiwgaW9zX2Jhc2U6Omlvc3RhdGUmLAogICAgICAgICBf
VmFsdWVUJikgY29uc3Q7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQyPgogICAgICB0
eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxfQ2hhclQyPjo6X192YWx1
ZSwgaW50Pjo6X190eXBlCiBfTV9maW5kKGNvbnN0IF9DaGFyVDIqLCBzaXplX3QgX19sZW4sIF9D
aGFyVDIgX19jKSBjb25zdAogewogICBpbnQgX19yZXQgPSAtMTsKICAgaWYgKF9fbGVuIDw9IDEw
KQogICAgIHsKICAgICAgIGlmIChfX2MgPj0gX0NoYXJUMignMCcpICYmIF9fYyA8IF9DaGFyVDIo
X0NoYXJUMignMCcpICsgX19sZW4pKQogIF9fcmV0ID0gX19jIC0gX0NoYXJUMignMCcpOwogICAg
IH0KICAgZWxzZQogICAgIHsKICAgICAgIGlmIChfX2MgPj0gX0NoYXJUMignMCcpICYmIF9fYyA8
PSBfQ2hhclQyKCc5JykpCiAgX19yZXQgPSBfX2MgLSBfQ2hhclQyKCcwJyk7CiAgICAgICBlbHNl
IGlmIChfX2MgPj0gX0NoYXJUMignYScpICYmIF9fYyA8PSBfQ2hhclQyKCdmJykpCiAgX19yZXQg
PSAxMCArIChfX2MgLSBfQ2hhclQyKCdhJykpOwogICAgICAgZWxzZSBpZiAoX19jID49IF9DaGFy
VDIoJ0EnKSAmJiBfX2MgPD0gX0NoYXJUMignRicpKQogIF9fcmV0ID0gMTAgKyAoX19jIC0gX0No
YXJUMignQScpKTsKICAgICB9CiAgIHJldHVybiBfX3JldDsKIH0KCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVDI+CiAgICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8IV9f
aXNfY2hhcjxfQ2hhclQyPjo6X192YWx1ZSwKICAgICAgICAgIGludD46Ol9fdHlwZQogX01fZmlu
ZChjb25zdCBfQ2hhclQyKiBfX3plcm8sIHNpemVfdCBfX2xlbiwgX0NoYXJUMiBfX2MpIGNvbnN0
CiB7CiAgIGludCBfX3JldCA9IC0xOwogICBjb25zdCBjaGFyX3R5cGUqIF9fcSA9IGNoYXJfdHJh
aXRzPF9DaGFyVDI+OjpmaW5kKF9femVybywgX19sZW4sIF9fYyk7CiAgIGlmIChfX3EpCiAgICAg
ewogICAgICAgX19yZXQgPSBfX3EgLSBfX3plcm87CiAgICAgICBpZiAoX19yZXQgPiAxNSkKICBf
X3JldCAtPSA2OwogICAgIH0KICAgcmV0dXJuIF9fcmV0OwogfQojIDIxNzIgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVf
ZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAgICAgZG9fZ2V0KGl0ZXJfdHlw
ZSwgaXRlcl90eXBlLCBpb3NfYmFzZSYsIGlvc19iYXNlOjppb3N0YXRlJiwgYm9vbCYpIGNvbnN0
OwoKICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAgICAgZG9fZ2V0KGl0ZXJfdHlwZSBfX2JlZywg
aXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywKICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUm
IF9fZXJyLCBsb25nJiBfX3YpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2V4dHJhY3RfaW50KF9f
YmVnLCBfX2VuZCwgX19pbywgX19lcnIsIF9fdik7IH0KCiAgICAgIHZpcnR1YWwgaXRlcl90eXBl
CiAgICAgIGRvX2dldChpdGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2Um
IF9faW8sCiAgICAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgdW5zaWduZWQgc2hvcnQmIF9f
dikgY29uc3QKICAgICAgeyByZXR1cm4gX01fZXh0cmFjdF9pbnQoX19iZWcsIF9fZW5kLCBfX2lv
LCBfX2VyciwgX192KTsgfQoKICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAgICAgZG9fZ2V0KGl0
ZXJfdHlwZSBfX2JlZywgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywKICAgICAgaW9z
X2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCB1bnNpZ25lZCBpbnQmIF9fdikgY29uc3QKICAgICAgeyBy
ZXR1cm4gX01fZXh0cmFjdF9pbnQoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2VyciwgX192KTsgfQoK
ICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAgICAgZG9fZ2V0KGl0ZXJfdHlwZSBfX2JlZywgaXRl
cl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywKICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9f
ZXJyLCB1bnNpZ25lZCBsb25nJiBfX3YpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2V4dHJhY3Rf
aW50KF9fYmVnLCBfX2VuZCwgX19pbywgX19lcnIsIF9fdik7IH0KCgogICAgICB2aXJ0dWFsIGl0
ZXJfdHlwZQogICAgICBkb19nZXQoaXRlcl90eXBlIF9fYmVnLCBpdGVyX3R5cGUgX19lbmQsIGlv
c19iYXNlJiBfX2lvLAogICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIGxvbmcgbG9uZyYg
X192KSBjb25zdAogICAgICB7IHJldHVybiBfTV9leHRyYWN0X2ludChfX2JlZywgX19lbmQsIF9f
aW8sIF9fZXJyLCBfX3YpOyB9CgogICAgICB2aXJ0dWFsIGl0ZXJfdHlwZQogICAgICBkb19nZXQo
aXRlcl90eXBlIF9fYmVnLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLAogICAgICBp
b3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHVuc2lnbmVkIGxvbmcgbG9uZyYgX192KSBjb25zdAog
ICAgICB7IHJldHVybiBfTV9leHRyYWN0X2ludChfX2JlZywgX19lbmQsIF9faW8sIF9fZXJyLCBf
X3YpOyB9CgoKICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAgICAgZG9fZ2V0KGl0ZXJfdHlwZSwg
aXRlcl90eXBlLCBpb3NfYmFzZSYsIGlvc19iYXNlOjppb3N0YXRlJiwgZmxvYXQmKSBjb25zdDsK
CiAgICAgIHZpcnR1YWwgaXRlcl90eXBlCiAgICAgIGRvX2dldChpdGVyX3R5cGUsIGl0ZXJfdHlw
ZSwgaW9zX2Jhc2UmLCBpb3NfYmFzZTo6aW9zdGF0ZSYsCiAgICAgIGRvdWJsZSYpIGNvbnN0OwoK
CgoKCgoKICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAgICAgZG9fZ2V0KGl0ZXJfdHlwZSwgaXRl
cl90eXBlLCBpb3NfYmFzZSYsIGlvc19iYXNlOjppb3N0YXRlJiwKICAgICAgbG9uZyBkb3VibGUm
KSBjb25zdDsKCgogICAgICB2aXJ0dWFsIGl0ZXJfdHlwZQogICAgICBkb19nZXQoaXRlcl90eXBl
LCBpdGVyX3R5cGUsIGlvc19iYXNlJiwgaW9zX2Jhc2U6Omlvc3RhdGUmLCB2b2lkKiYpIGNvbnN0
OwojIDIyMzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgIH07CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4KICAgIGxvY2FsZTo6aWQgbnVtX2dldDxfQ2hh
clQsIF9Jbkl0ZXI+OjppZDsKIyAyMjUzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRlcj4KICAgIGNsYXNzIG51bV9wdXQg
OiBwdWJsaWMgbG9jYWxlOjpmYWNldAogICAgewogICAgcHVibGljOgoKCgogICAgICB0eXBlZGVm
IF9DaGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgX091dEl0ZXIgaXRlcl90eXBlOwoKCgog
ICAgICBzdGF0aWMgbG9jYWxlOjppZCBpZDsKIyAyMjc0ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAz
CiAgICAgIGV4cGxpY2l0CiAgICAgIG51bV9wdXQoc2l6ZV90IF9fcmVmcyA9IDApIDogZmFjZXQo
X19yZWZzKSB7IH0KIyAyMjkyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGl0ZXJfdHlw
ZQogICAgICBwdXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSBfX2Zp
bGwsIGJvb2wgX192KSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19wdXQoX19zLCBfX2lv
LCBfX2ZpbGwsIF9fdik7IH0KIyAyMzM0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGl0
ZXJfdHlwZQogICAgICBwdXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlw
ZSBfX2ZpbGwsIGxvbmcgX192KSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19wdXQoX19z
LCBfX2lvLCBfX2ZpbGwsIF9fdik7IH0KCiAgICAgIGl0ZXJfdHlwZQogICAgICBwdXQoaXRlcl90
eXBlIF9fcywgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSBfX2ZpbGwsCiAgIHVuc2lnbmVkIGxv
bmcgX192KSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19wdXQoX19zLCBfX2lvLCBfX2Zp
bGwsIF9fdik7IH0KCgogICAgICBpdGVyX3R5cGUKICAgICAgcHV0KGl0ZXJfdHlwZSBfX3MsIGlv
c19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxsLCBsb25nIGxvbmcgX192KSBjb25zdAogICAg
ICB7IHJldHVybiB0aGlzLT5kb19wdXQoX19zLCBfX2lvLCBfX2ZpbGwsIF9fdik7IH0KCiAgICAg
IGl0ZXJfdHlwZQogICAgICBwdXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2UmIF9faW8sIGNoYXJf
dHlwZSBfX2ZpbGwsCiAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3YpIGNvbnN0CiAgICAgIHsgcmV0
dXJuIHRoaXMtPmRvX3B1dChfX3MsIF9faW8sIF9fZmlsbCwgX192KTsgfQojIDIzOTcgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9s
b2NhbGVfZmFjZXRzLmgiIDMKICAgICAgaXRlcl90eXBlCiAgICAgIHB1dChpdGVyX3R5cGUgX19z
LCBpb3NfYmFzZSYgX19pbywgY2hhcl90eXBlIF9fZmlsbCwgZG91YmxlIF9fdikgY29uc3QKICAg
ICAgeyByZXR1cm4gdGhpcy0+ZG9fcHV0KF9fcywgX19pbywgX19maWxsLCBfX3YpOyB9CgogICAg
ICBpdGVyX3R5cGUKICAgICAgcHV0KGl0ZXJfdHlwZSBfX3MsIGlvc19iYXNlJiBfX2lvLCBjaGFy
X3R5cGUgX19maWxsLAogICBsb25nIGRvdWJsZSBfX3YpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRo
aXMtPmRvX3B1dChfX3MsIF9faW8sIF9fZmlsbCwgX192KTsgfQojIDI0MjIgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVf
ZmFjZXRzLmgiIDMKICAgICAgaXRlcl90eXBlCiAgICAgIHB1dChpdGVyX3R5cGUgX19zLCBpb3Nf
YmFzZSYgX19pbywgY2hhcl90eXBlIF9fZmlsbCwKICAgY29uc3Qgdm9pZCogX192KSBjb25zdAog
ICAgICB7IHJldHVybiB0aGlzLT5kb19wdXQoX19zLCBfX2lvLCBfX2ZpbGwsIF9fdik7IH0KCiAg
ICBwcm90ZWN0ZWQ6CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZVQ+CiBpdGVyX3R5cGUK
IF9NX2luc2VydF9mbG9hdChpdGVyX3R5cGUsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19m
aWxsLAogICBjaGFyIF9fbW9kLCBfVmFsdWVUIF9fdikgY29uc3Q7CgogICAgICB2b2lkCiAgICAg
IF9NX2dyb3VwX2Zsb2F0KGNvbnN0IGNoYXIqIF9fZ3JvdXBpbmcsIHNpemVfdCBfX2dyb3VwaW5n
X3NpemUsCiAgICAgICBjaGFyX3R5cGUgX19zZXAsIGNvbnN0IGNoYXJfdHlwZSogX19wLCBjaGFy
X3R5cGUqIF9fbmV3LAogICAgICAgY2hhcl90eXBlKiBfX2NzLCBpbnQmIF9fbGVuKSBjb25zdDsK
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZVQ+CiBpdGVyX3R5cGUKIF9NX2luc2VydF9p
bnQoaXRlcl90eXBlLCBpb3NfYmFzZSYgX19pbywgY2hhcl90eXBlIF9fZmlsbCwKICAgICAgICBf
VmFsdWVUIF9fdikgY29uc3Q7CgogICAgICB2b2lkCiAgICAgIF9NX2dyb3VwX2ludChjb25zdCBj
aGFyKiBfX2dyb3VwaW5nLCBzaXplX3QgX19ncm91cGluZ19zaXplLAogICAgIGNoYXJfdHlwZSBf
X3NlcCwgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSogX19uZXcsCiAgICAgY2hhcl90eXBlKiBf
X2NzLCBpbnQmIF9fbGVuKSBjb25zdDsKCiAgICAgIHZvaWQKICAgICAgX01fcGFkKGNoYXJfdHlw
ZSBfX2ZpbGwsIHN0cmVhbXNpemUgX193LCBpb3NfYmFzZSYgX19pbywKICAgICAgY2hhcl90eXBl
KiBfX25ldywgY29uc3QgY2hhcl90eXBlKiBfX2NzLCBpbnQmIF9fbGVuKSBjb25zdDsKCgogICAg
ICB2aXJ0dWFsCiAgICAgIH5udW1fcHV0KCkgeyB9OwojIDI0NzAgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRz
LmgiIDMKICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAgICAgZG9fcHV0KGl0ZXJfdHlwZSBfX3Ms
IGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxsLCBib29sIF9fdikgY29uc3Q7CgogICAg
ICB2aXJ0dWFsIGl0ZXJfdHlwZQogICAgICBkb19wdXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2Um
IF9faW8sIGNoYXJfdHlwZSBfX2ZpbGwsIGxvbmcgX192KSBjb25zdAogICAgICB7IHJldHVybiBf
TV9pbnNlcnRfaW50KF9fcywgX19pbywgX19maWxsLCBfX3YpOyB9CgogICAgICB2aXJ0dWFsIGl0
ZXJfdHlwZQogICAgICBkb19wdXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2UmIF9faW8sIGNoYXJf
dHlwZSBfX2ZpbGwsCiAgICAgIHVuc2lnbmVkIGxvbmcgX192KSBjb25zdAogICAgICB7IHJldHVy
biBfTV9pbnNlcnRfaW50KF9fcywgX19pbywgX19maWxsLCBfX3YpOyB9CgoKICAgICAgdmlydHVh
bCBpdGVyX3R5cGUKICAgICAgZG9fcHV0KGl0ZXJfdHlwZSBfX3MsIGlvc19iYXNlJiBfX2lvLCBj
aGFyX3R5cGUgX19maWxsLAogICAgICBsb25nIGxvbmcgX192KSBjb25zdAogICAgICB7IHJldHVy
biBfTV9pbnNlcnRfaW50KF9fcywgX19pbywgX19maWxsLCBfX3YpOyB9CgogICAgICB2aXJ0dWFs
IGl0ZXJfdHlwZQogICAgICBkb19wdXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2UmIF9faW8sIGNo
YXJfdHlwZSBfX2ZpbGwsCiAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3YpIGNvbnN0CiAgICAg
IHsgcmV0dXJuIF9NX2luc2VydF9pbnQoX19zLCBfX2lvLCBfX2ZpbGwsIF9fdik7IH0KCgogICAg
ICB2aXJ0dWFsIGl0ZXJfdHlwZQogICAgICBkb19wdXQoaXRlcl90eXBlLCBpb3NfYmFzZSYsIGNo
YXJfdHlwZSwgZG91YmxlKSBjb25zdDsKCgoKCgoKICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAg
ICAgZG9fcHV0KGl0ZXJfdHlwZSwgaW9zX2Jhc2UmLCBjaGFyX3R5cGUsIGxvbmcgZG91YmxlKSBj
b25zdDsKCgogICAgICB2aXJ0dWFsIGl0ZXJfdHlwZQogICAgICBkb19wdXQoaXRlcl90eXBlLCBp
b3NfYmFzZSYsIGNoYXJfdHlwZSwgY29uc3Qgdm9pZCopIGNvbnN0OwoKCgoKCgoKICAgIH07Cgog
IHRlbXBsYXRlIDx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAgbG9jYWxl
OjppZCBudW1fcHV0PF9DaGFyVCwgX091dEl0ZXI+OjppZDsKCgoKCgoKCgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUgYm9vbAogICAgaXNzcGFjZV9XVEZfUGxlYXNlX3Vz
ZV9BU0NJSUNUeXBlX2luc3RlYWRfb2ZfY3R5cGVfc2VlX2NvbW1lbnRfaW5fQVNDSUlDVHlwZV9o
KF9DaGFyVCBfX2MsIGNvbnN0IGxvY2FsZSYgX19sb2MpCiAgICB7IHJldHVybiB1c2VfZmFjZXQ8
Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKS5pcyhjdHlwZV9iYXNlOjpzcGFjZSwgX19jKTsgfQoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgaW5saW5lIGJvb2wKICAgIGlzcHJpbnRfV1RG
X1BsZWFzZV91c2VfQVNDSUlDVHlwZV9pbnN0ZWFkX29mX2N0eXBlX3NlZV9jb21tZW50X2luX0FT
Q0lJQ1R5cGVfaChfQ2hhclQgX19jLCBjb25zdCBsb2NhbGUmIF9fbG9jKQogICAgeyByZXR1cm4g
dXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihfX2xvYykuaXMoY3R5cGVfYmFzZTo6cHJpbnQsIF9f
Yyk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAgICBp
c2NudHJsX1dURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29t
bWVudF9pbl9BU0NJSUNUeXBlX2goX0NoYXJUIF9fYywgY29uc3QgbG9jYWxlJiBfX2xvYykKICAg
IHsgcmV0dXJuIHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2MpLmlzKGN0eXBlX2Jhc2U6
OmNudHJsLCBfX2MpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUg
Ym9vbAogICAgaXN1cHBlcl9XVEZfUGxlYXNlX3VzZV9BU0NJSUNUeXBlX2luc3RlYWRfb2ZfY3R5
cGVfc2VlX2NvbW1lbnRfaW5fQVNDSUlDVHlwZV9oKF9DaGFyVCBfX2MsIGNvbnN0IGxvY2FsZSYg
X19sb2MpCiAgICB7IHJldHVybiB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKS5pcyhj
dHlwZV9iYXNlOjp1cHBlciwgX19jKTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgog
ICAgaW5saW5lIGJvb2wKICAgIGlzbG93ZXJfV1RGX1BsZWFzZV91c2VfQVNDSUlDVHlwZV9pbnN0
ZWFkX29mX2N0eXBlX3NlZV9jb21tZW50X2luX0FTQ0lJQ1R5cGVfaChfQ2hhclQgX19jLCBjb25z
dCBsb2NhbGUmIF9fbG9jKQogICAgeyByZXR1cm4gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihf
X2xvYykuaXMoY3R5cGVfYmFzZTo6bG93ZXIsIF9fYyk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9DaGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc2FscGhhX1dURl9QbGVhc2VfdXNlX0FTQ0lJ
Q1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNUeXBlX2goX0NoYXJU
IF9fYywgY29uc3QgbG9jYWxlJiBfX2xvYykKICAgIHsgcmV0dXJuIHVzZV9mYWNldDxjdHlwZTxf
Q2hhclQ+ID4oX19sb2MpLmlzKGN0eXBlX2Jhc2U6OmFscGhhLCBfX2MpOyB9CgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUgYm9vbAogICAgaXNkaWdpdF9XVEZfUGxlYXNl
X3VzZV9BU0NJSUNUeXBlX2luc3RlYWRfb2ZfY3R5cGVfc2VlX2NvbW1lbnRfaW5fQVNDSUlDVHlw
ZV9oKF9DaGFyVCBfX2MsIGNvbnN0IGxvY2FsZSYgX19sb2MpCiAgICB7IHJldHVybiB1c2VfZmFj
ZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKS5pcyhjdHlwZV9iYXNlOjpkaWdpdCwgX19jKTsgfQoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgaW5saW5lIGJvb2wKICAgIGlzcHVuY3Rf
V1RGX1BsZWFzZV91c2VfQVNDSUlDVHlwZV9pbnN0ZWFkX29mX2N0eXBlX3NlZV9jb21tZW50X2lu
X0FTQ0lJQ1R5cGVfaChfQ2hhclQgX19jLCBjb25zdCBsb2NhbGUmIF9fbG9jKQogICAgeyByZXR1
cm4gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihfX2xvYykuaXMoY3R5cGVfYmFzZTo6cHVuY3Qs
IF9fYyk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAg
ICBpc3hkaWdpdF9XVEZfUGxlYXNlX3VzZV9BU0NJSUNUeXBlX2luc3RlYWRfb2ZfY3R5cGVfc2Vl
X2NvbW1lbnRfaW5fQVNDSUlDVHlwZV9oKF9DaGFyVCBfX2MsIGNvbnN0IGxvY2FsZSYgX19sb2Mp
CiAgICB7IHJldHVybiB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKS5pcyhjdHlwZV9i
YXNlOjp4ZGlnaXQsIF9fYyk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlu
bGluZSBib29sCiAgICBpc2FsbnVtX1dURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9v
Zl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNUeXBlX2goX0NoYXJUIF9fYywgY29uc3QgbG9j
YWxlJiBfX2xvYykKICAgIHsgcmV0dXJuIHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2Mp
LmlzKGN0eXBlX2Jhc2U6OmFsbnVtLCBfX2MpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQ+CiAgICBpbmxpbmUgYm9vbAogICAgaXNncmFwaF9XVEZfUGxlYXNlX3VzZV9BU0NJSUNUeXBl
X2luc3RlYWRfb2ZfY3R5cGVfc2VlX2NvbW1lbnRfaW5fQVNDSUlDVHlwZV9oKF9DaGFyVCBfX2Ms
IGNvbnN0IGxvY2FsZSYgX19sb2MpCiAgICB7IHJldHVybiB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJU
PiA+KF9fbG9jKS5pcyhjdHlwZV9iYXNlOjpncmFwaCwgX19jKTsgfQoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJUPgogICAgaW5saW5lIF9DaGFyVAogICAgdG91cHBlcl9XVEZfUGxlYXNlX3Vz
ZV9BU0NJSUNUeXBlX2luc3RlYWRfb2ZfY3R5cGVfc2VlX2NvbW1lbnRfaW5fQVNDSUlDVHlwZV9o
KF9DaGFyVCBfX2MsIGNvbnN0IGxvY2FsZSYgX19sb2MpCiAgICB7IHJldHVybiB1c2VfZmFjZXQ8
Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKS50b3VwcGVyX1dURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVf
aW5zdGVhZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNUeXBlX2goX19jKTsgfQoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgaW5saW5lIF9DaGFyVAogICAgdG9sb3dlcl9X
VEZfUGxlYXNlX3VzZV9BU0NJSUNUeXBlX2luc3RlYWRfb2ZfY3R5cGVfc2VlX2NvbW1lbnRfaW5f
QVNDSUlDVHlwZV9oKF9DaGFyVCBfX2MsIGNvbnN0IGxvY2FsZSYgX19sb2MpCiAgICB7IHJldHVy
biB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKS50b2xvd2VyX1dURl9QbGVhc2VfdXNl
X0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNUeXBlX2go
X19jKTsgfQoKCn0KCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMudGNjIiAxIDMKIyAzMSAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMt
dGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2xv
Y2FsZV9mYWNldHMudGNjIiAzCiNkZWZpbmUgX0xPQ0FMRV9GQUNFVFNfVENDIDEKCiAgICAgICAK
IyAzNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMudGNjIiAzCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRl
X18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZhY2V0PgogICAgc3RydWN0IF9fdXNlX2NhY2hlCiAgICB7CiAgICAgIGNvbnN0IF9GYWNl
dCoKICAgICAgb3BlcmF0b3IoKSAoY29uc3QgbG9jYWxlJiBfX2xvYykgY29uc3Q7CiAgICB9OwoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgc3RydWN0IF9fdXNlX2NhY2hlPF9fbnVt
cHVuY3RfY2FjaGU8X0NoYXJUPiA+CiAgICB7CiAgICAgIGNvbnN0IF9fbnVtcHVuY3RfY2FjaGU8
X0NoYXJUPioKICAgICAgb3BlcmF0b3IoKSAoY29uc3QgbG9jYWxlJiBfX2xvYykgY29uc3QKICAg
ICAgewogY29uc3Qgc2l6ZV90IF9faSA9IG51bXB1bmN0PF9DaGFyVD46OmlkLl9NX2lkKCk7CiBj
b25zdCBsb2NhbGU6OmZhY2V0KiogX19jYWNoZXMgPSBfX2xvYy5fTV9pbXBsLT5fTV9jYWNoZXM7
CiBpZiAoIV9fY2FjaGVzW19faV0pCiAgIHsKICAgICBfX251bXB1bmN0X2NhY2hlPF9DaGFyVD4q
IF9fdG1wID0gMDsKICAgICBpZiAodHJ1ZSkKICAgICAgIHsKICBfX3RtcCA9IG5ldyBfX251bXB1
bmN0X2NhY2hlPF9DaGFyVD47CiAgX190bXAtPl9NX2NhY2hlKF9fbG9jKTsKICAgICAgIH0KICAg
ICBpZiAoZmFsc2UpCiAgICAgICB7CiAgZGVsZXRlIF9fdG1wOwogIDsKICAgICAgIH0KICAgICBf
X2xvYy5fTV9pbXBsLT5fTV9pbnN0YWxsX2NhY2hlKF9fdG1wLCBfX2kpOwogICB9CiByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgX19udW1wdW5jdF9jYWNoZTxfQ2hhclQ+Kj4oX19jYWNoZXNbX19p
XSk7CiAgICAgIH0KICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIHZvaWQK
ICAgIF9fbnVtcHVuY3RfY2FjaGU8X0NoYXJUPjo6X01fY2FjaGUoY29uc3QgbG9jYWxlJiBfX2xv
YykKICAgIHsKICAgICAgX01fYWxsb2NhdGVkID0gdHJ1ZTsKCiAgICAgIGNvbnN0IG51bXB1bmN0
PF9DaGFyVD4mIF9fbnAgPSB1c2VfZmFjZXQ8bnVtcHVuY3Q8X0NoYXJUPiA+KF9fbG9jKTsKCiAg
ICAgIGNoYXIqIF9fZ3JvdXBpbmcgPSAwOwogICAgICBfQ2hhclQqIF9fdHJ1ZW5hbWUgPSAwOwog
ICAgICBfQ2hhclQqIF9fZmFsc2VuYW1lID0gMDsKICAgICAgaWYgKHRydWUpCiB7CiAgIF9NX2dy
b3VwaW5nX3NpemUgPSBfX25wLmdyb3VwaW5nKCkuc2l6ZSgpOwogICBfX2dyb3VwaW5nID0gbmV3
IGNoYXJbX01fZ3JvdXBpbmdfc2l6ZV07CiAgIF9fbnAuZ3JvdXBpbmcoKS5jb3B5KF9fZ3JvdXBp
bmcsIF9NX2dyb3VwaW5nX3NpemUpOwogICBfTV9ncm91cGluZyA9IF9fZ3JvdXBpbmc7CiAgIF9N
X3VzZV9ncm91cGluZyA9IChfTV9ncm91cGluZ19zaXplCiAgICAgICAgJiYgc3RhdGljX2Nhc3Q8
c2lnbmVkIGNoYXI+KF9NX2dyb3VwaW5nWzBdKSA+IDAKICAgICAgICAmJiAoX01fZ3JvdXBpbmdb
MF0KICAgICAhPSBfX2dudV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8Y2hhcj46Ol9fbWF4KSk7Cgog
ICBfTV90cnVlbmFtZV9zaXplID0gX19ucC50cnVlbmFtZSgpLnNpemUoKTsKICAgX190cnVlbmFt
ZSA9IG5ldyBfQ2hhclRbX01fdHJ1ZW5hbWVfc2l6ZV07CiAgIF9fbnAudHJ1ZW5hbWUoKS5jb3B5
KF9fdHJ1ZW5hbWUsIF9NX3RydWVuYW1lX3NpemUpOwogICBfTV90cnVlbmFtZSA9IF9fdHJ1ZW5h
bWU7CgogICBfTV9mYWxzZW5hbWVfc2l6ZSA9IF9fbnAuZmFsc2VuYW1lKCkuc2l6ZSgpOwogICBf
X2ZhbHNlbmFtZSA9IG5ldyBfQ2hhclRbX01fZmFsc2VuYW1lX3NpemVdOwogICBfX25wLmZhbHNl
bmFtZSgpLmNvcHkoX19mYWxzZW5hbWUsIF9NX2ZhbHNlbmFtZV9zaXplKTsKICAgX01fZmFsc2Vu
YW1lID0gX19mYWxzZW5hbWU7CgogICBfTV9kZWNpbWFsX3BvaW50ID0gX19ucC5kZWNpbWFsX3Bv
aW50KCk7CiAgIF9NX3Rob3VzYW5kc19zZXAgPSBfX25wLnRob3VzYW5kc19zZXAoKTsKCiAgIGNv
bnN0IGN0eXBlPF9DaGFyVD4mIF9fY3QgPSB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9j
KTsKICAgX19jdC53aWRlbihfX251bV9iYXNlOjpfU19hdG9tc19vdXQsCiAgICAgICBfX251bV9i
YXNlOjpfU19hdG9tc19vdXQKICAgICAgICsgX19udW1fYmFzZTo6X1Nfb2VuZCwgX01fYXRvbXNf
b3V0KTsKICAgX19jdC53aWRlbihfX251bV9iYXNlOjpfU19hdG9tc19pbiwKICAgICAgIF9fbnVt
X2Jhc2U6Ol9TX2F0b21zX2luCiAgICAgICArIF9fbnVtX2Jhc2U6Ol9TX2llbmQsIF9NX2F0b21z
X2luKTsKIH0KICAgICAgaWYgKGZhbHNlKQogewogICBkZWxldGUgW10gX19ncm91cGluZzsKICAg
ZGVsZXRlIFtdIF9fdHJ1ZW5hbWU7CiAgIGRlbGV0ZSBbXSBfX2ZhbHNlbmFtZTsKICAgOwogfQog
ICAgfQojIDEzNiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMudGNjIiAzCiAgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSkgYm9vbAogIF9fdmVyaWZ5X2dyb3VwaW5nKGNvbnN0IGNoYXIqIF9fZ3JvdXBpbmcs
IHNpemVfdCBfX2dyb3VwaW5nX3NpemUsCiAgICAgIGNvbnN0IHN0cmluZyYgX19ncm91cGluZ190
bXApIHRocm93ICgpOwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0lu
SXRlcj4KICAgIF9Jbkl0ZXIKICAgIG51bV9nZXQ8X0NoYXJULCBfSW5JdGVyPjo6CiAgICBfTV9l
eHRyYWN0X2Zsb2F0KF9Jbkl0ZXIgX19iZWcsIF9Jbkl0ZXIgX19lbmQsIGlvc19iYXNlJiBfX2lv
LAogICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCBzdHJpbmcmIF9feHRyYykgY29uc3QK
ICAgIHsKICAgICAgdHlwZWRlZiBjaGFyX3RyYWl0czxfQ2hhclQ+IF9fdHJhaXRzX3R5cGU7CiAg
ICAgIHR5cGVkZWYgX19udW1wdW5jdF9jYWNoZTxfQ2hhclQ+IF9fY2FjaGVfdHlwZTsKICAgICAg
X191c2VfY2FjaGU8X19jYWNoZV90eXBlPiBfX3VjOwogICAgICBjb25zdCBsb2NhbGUmIF9fbG9j
ID0gX19pby5fTV9nZXRsb2MoKTsKICAgICAgY29uc3QgX19jYWNoZV90eXBlKiBfX2xjID0gX191
YyhfX2xvYyk7CiAgICAgIGNvbnN0IF9DaGFyVCogX19saXQgPSBfX2xjLT5fTV9hdG9tc19pbjsK
ICAgICAgY2hhcl90eXBlIF9fYyA9IGNoYXJfdHlwZSgpOwoKCiAgICAgIGJvb2wgX190ZXN0ZW9m
ID0gX19iZWcgPT0gX19lbmQ7CgoKICAgICAgaWYgKCFfX3Rlc3Rlb2YpCiB7CiAgIF9fYyA9ICpf
X2JlZzsKICAgY29uc3QgYm9vbCBfX3BsdXMgPSBfX2MgPT0gX19saXRbX19udW1fYmFzZTo6X1Nf
aXBsdXNdOwogICBpZiAoKF9fcGx1cyB8fCBfX2MgPT0gX19saXRbX19udW1fYmFzZTo6X1NfaW1p
bnVzXSkKICAgICAgICYmICEoX19sYy0+X01fdXNlX2dyb3VwaW5nICYmIF9fYyA9PSBfX2xjLT5f
TV90aG91c2FuZHNfc2VwKQogICAgICAgJiYgIShfX2MgPT0gX19sYy0+X01fZGVjaW1hbF9wb2lu
dCkpCiAgICAgewogICAgICAgX194dHJjICs9IF9fcGx1cyA/ICcrJyA6ICctJzsKICAgICAgIGlm
ICgrK19fYmVnICE9IF9fZW5kKQogIF9fYyA9ICpfX2JlZzsKICAgICAgIGVsc2UKICBfX3Rlc3Rl
b2YgPSB0cnVlOwogICAgIH0KIH0KCgogICAgICBib29sIF9fZm91bmRfbWFudGlzc2EgPSBmYWxz
ZTsKICAgICAgaW50IF9fc2VwX3BvcyA9IDA7CiAgICAgIHdoaWxlICghX190ZXN0ZW9mKQogewog
ICBpZiAoKF9fbGMtPl9NX3VzZV9ncm91cGluZyAmJiBfX2MgPT0gX19sYy0+X01fdGhvdXNhbmRz
X3NlcCkKICAgICAgIHx8IF9fYyA9PSBfX2xjLT5fTV9kZWNpbWFsX3BvaW50KQogICAgIGJyZWFr
OwogICBlbHNlIGlmIChfX2MgPT0gX19saXRbX19udW1fYmFzZTo6X1NfaXplcm9dKQogICAgIHsK
ICAgICAgIGlmICghX19mb3VuZF9tYW50aXNzYSkKICB7CiAgICBfX3h0cmMgKz0gJzAnOwogICAg
X19mb3VuZF9tYW50aXNzYSA9IHRydWU7CiAgfQogICAgICAgKytfX3NlcF9wb3M7CgogICAgICAg
aWYgKCsrX19iZWcgIT0gX19lbmQpCiAgX19jID0gKl9fYmVnOwogICAgICAgZWxzZQogIF9fdGVz
dGVvZiA9IHRydWU7CiAgICAgfQogICBlbHNlCiAgICAgYnJlYWs7CiB9CgoKICAgICAgYm9vbCBf
X2ZvdW5kX2RlYyA9IGZhbHNlOwogICAgICBib29sIF9fZm91bmRfc2NpID0gZmFsc2U7CiAgICAg
IHN0cmluZyBfX2ZvdW5kX2dyb3VwaW5nOwogICAgICBpZiAoX19sYy0+X01fdXNlX2dyb3VwaW5n
KQogX19mb3VuZF9ncm91cGluZy5yZXNlcnZlKDMyKTsKICAgICAgY29uc3QgY2hhcl90eXBlKiBf
X2xpdF96ZXJvID0gX19saXQgKyBfX251bV9iYXNlOjpfU19pemVybzsKCiAgICAgIGlmICghX19s
Yy0+X01fYWxsb2NhdGVkKQoKIHdoaWxlICghX190ZXN0ZW9mKQogICB7CiAgICAgY29uc3QgaW50
IF9fZGlnaXQgPSBfTV9maW5kKF9fbGl0X3plcm8sIDEwLCBfX2MpOwogICAgIGlmIChfX2RpZ2l0
ICE9IC0xKQogICAgICAgewogIF9feHRyYyArPSAnMCcgKyBfX2RpZ2l0OwogIF9fZm91bmRfbWFu
dGlzc2EgPSB0cnVlOwogICAgICAgfQogICAgIGVsc2UgaWYgKF9fYyA9PSBfX2xjLT5fTV9kZWNp
bWFsX3BvaW50CiAgICAgICAmJiAhX19mb3VuZF9kZWMgJiYgIV9fZm91bmRfc2NpKQogICAgICAg
ewogIF9feHRyYyArPSAnLic7CiAgX19mb3VuZF9kZWMgPSB0cnVlOwogICAgICAgfQogICAgIGVs
c2UgaWYgKChfX2MgPT0gX19saXRbX19udW1fYmFzZTo6X1NfaWVdCiAgICAgICAgfHwgX19jID09
IF9fbGl0W19fbnVtX2Jhc2U6Ol9TX2lFXSkKICAgICAgICYmICFfX2ZvdW5kX3NjaSAmJiBfX2Zv
dW5kX21hbnRpc3NhKQogICAgICAgewoKICBfX3h0cmMgKz0gJ2UnOwogIF9fZm91bmRfc2NpID0g
dHJ1ZTsKCgogIGlmICgrK19fYmVnICE9IF9fZW5kKQogICAgewogICAgICBfX2MgPSAqX19iZWc7
CiAgICAgIGNvbnN0IGJvb2wgX19wbHVzID0gX19jID09IF9fbGl0W19fbnVtX2Jhc2U6Ol9TX2lw
bHVzXTsKICAgICAgaWYgKF9fcGx1cyB8fCBfX2MgPT0gX19saXRbX19udW1fYmFzZTo6X1NfaW1p
bnVzXSkKICAgICAgICBfX3h0cmMgKz0gX19wbHVzID8gJysnIDogJy0nOwogICAgICBlbHNlCiAg
ICAgICAgY29udGludWU7CiAgICB9CiAgZWxzZQogICAgewogICAgICBfX3Rlc3Rlb2YgPSB0cnVl
OwogICAgICBicmVhazsKICAgIH0KICAgICAgIH0KICAgICBlbHNlCiAgICAgICBicmVhazsKCiAg
ICAgaWYgKCsrX19iZWcgIT0gX19lbmQpCiAgICAgICBfX2MgPSAqX19iZWc7CiAgICAgZWxzZQog
ICAgICAgX190ZXN0ZW9mID0gdHJ1ZTsKICAgfQogICAgICBlbHNlCiB3aGlsZSAoIV9fdGVzdGVv
ZikKICAgewoKCiAgICAgaWYgKF9fbGMtPl9NX3VzZV9ncm91cGluZyAmJiBfX2MgPT0gX19sYy0+
X01fdGhvdXNhbmRzX3NlcCkKICAgICAgIHsKICBpZiAoIV9fZm91bmRfZGVjICYmICFfX2ZvdW5k
X3NjaSkKICAgIHsKCgogICAgICBpZiAoX19zZXBfcG9zKQogICAgICAgIHsKICAgX19mb3VuZF9n
cm91cGluZyArPSBzdGF0aWNfY2FzdDxjaGFyPihfX3NlcF9wb3MpOwogICBfX3NlcF9wb3MgPSAw
OwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAgIHsKCgogICBfX3h0cmMuY2xlYXIoKTsKICAg
YnJlYWs7CiAgICAgICAgfQogICAgfQogIGVsc2UKICAgIGJyZWFrOwogICAgICAgfQogICAgIGVs
c2UgaWYgKF9fYyA9PSBfX2xjLT5fTV9kZWNpbWFsX3BvaW50KQogICAgICAgewogIGlmICghX19m
b3VuZF9kZWMgJiYgIV9fZm91bmRfc2NpKQogICAgewoKCgogICAgICBpZiAoX19mb3VuZF9ncm91
cGluZy5zaXplKCkpCiAgICAgICAgX19mb3VuZF9ncm91cGluZyArPSBzdGF0aWNfY2FzdDxjaGFy
PihfX3NlcF9wb3MpOwogICAgICBfX3h0cmMgKz0gJy4nOwogICAgICBfX2ZvdW5kX2RlYyA9IHRy
dWU7CiAgICB9CiAgZWxzZQogICAgYnJlYWs7CiAgICAgICB9CiAgICAgZWxzZQogICAgICAgewog
IGNvbnN0IGNoYXJfdHlwZSogX19xID0KICAgIF9fdHJhaXRzX3R5cGU6OmZpbmQoX19saXRfemVy
bywgMTAsIF9fYyk7CiAgaWYgKF9fcSkKICAgIHsKICAgICAgX194dHJjICs9ICcwJyArIChfX3Eg
LSBfX2xpdF96ZXJvKTsKICAgICAgX19mb3VuZF9tYW50aXNzYSA9IHRydWU7CiAgICAgICsrX19z
ZXBfcG9zOwogICAgfQogIGVsc2UgaWYgKChfX2MgPT0gX19saXRbX19udW1fYmFzZTo6X1NfaWVd
CiAgICAgfHwgX19jID09IF9fbGl0W19fbnVtX2Jhc2U6Ol9TX2lFXSkKICAgICYmICFfX2ZvdW5k
X3NjaSAmJiBfX2ZvdW5kX21hbnRpc3NhKQogICAgewoKICAgICAgaWYgKF9fZm91bmRfZ3JvdXBp
bmcuc2l6ZSgpICYmICFfX2ZvdW5kX2RlYykKICAgICAgICBfX2ZvdW5kX2dyb3VwaW5nICs9IHN0
YXRpY19jYXN0PGNoYXI+KF9fc2VwX3Bvcyk7CiAgICAgIF9feHRyYyArPSAnZSc7CiAgICAgIF9f
Zm91bmRfc2NpID0gdHJ1ZTsKCgogICAgICBpZiAoKytfX2JlZyAhPSBfX2VuZCkKICAgICAgICB7
CiAgIF9fYyA9ICpfX2JlZzsKICAgY29uc3QgYm9vbCBfX3BsdXMgPSBfX2MgPT0gX19saXRbX19u
dW1fYmFzZTo6X1NfaXBsdXNdOwogICBpZiAoKF9fcGx1cyB8fCBfX2MgPT0gX19saXRbX19udW1f
YmFzZTo6X1NfaW1pbnVzXSkKICAgICAgICYmICEoX19sYy0+X01fdXNlX2dyb3VwaW5nCiAgICAg
JiYgX19jID09IF9fbGMtPl9NX3Rob3VzYW5kc19zZXApCiAgICAgICAmJiAhKF9fYyA9PSBfX2xj
LT5fTV9kZWNpbWFsX3BvaW50KSkKICAgICAgICBfX3h0cmMgKz0gX19wbHVzID8gJysnIDogJy0n
OwogICBlbHNlCiAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAgewog
ICBfX3Rlc3Rlb2YgPSB0cnVlOwogICBicmVhazsKICAgICAgICB9CiAgICB9CiAgZWxzZQogICAg
YnJlYWs7CiAgICAgICB9CgogICAgIGlmICgrK19fYmVnICE9IF9fZW5kKQogICAgICAgX19jID0g
Kl9fYmVnOwogICAgIGVsc2UKICAgICAgIF9fdGVzdGVvZiA9IHRydWU7CiAgIH0KCgoKICAgICAg
aWYgKF9fZm91bmRfZ3JvdXBpbmcuc2l6ZSgpKQogICAgICAgIHsKCiAgIGlmICghX19mb3VuZF9k
ZWMgJiYgIV9fZm91bmRfc2NpKQogICAgIF9fZm91bmRfZ3JvdXBpbmcgKz0gc3RhdGljX2Nhc3Q8
Y2hhcj4oX19zZXBfcG9zKTsKCiAgICAgICAgICBpZiAoIXN0ZDo6X192ZXJpZnlfZ3JvdXBpbmco
X19sYy0+X01fZ3JvdXBpbmcsCiAgICAgICAgICBfX2xjLT5fTV9ncm91cGluZ19zaXplLAogICAg
ICAgICAgX19mb3VuZF9ncm91cGluZykpCiAgICAgX19lcnIgPSBpb3NfYmFzZTo6ZmFpbGJpdDsK
ICAgICAgICB9CgogICAgICByZXR1cm4gX19iZWc7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZVQ+
CiAgICAgIF9Jbkl0ZXIKICAgICAgbnVtX2dldDxfQ2hhclQsIF9Jbkl0ZXI+OjoKICAgICAgX01f
ZXh0cmFjdF9pbnQoX0luSXRlciBfX2JlZywgX0luSXRlciBfX2VuZCwgaW9zX2Jhc2UmIF9faW8s
CiAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIF9WYWx1ZVQmIF9fdikgY29uc3QKICAg
ICAgewogICAgICAgIHR5cGVkZWYgY2hhcl90cmFpdHM8X0NoYXJUPiBfX3RyYWl0c190eXBlOwog
dXNpbmcgX19nbnVfY3h4OjpfX2FkZF91bnNpZ25lZDsKIHR5cGVkZWYgdHlwZW5hbWUgX19hZGRf
dW5zaWduZWQ8X1ZhbHVlVD46Ol9fdHlwZSBfX3Vuc2lnbmVkX3R5cGU7CiB0eXBlZGVmIF9fbnVt
cHVuY3RfY2FjaGU8X0NoYXJUPiBfX2NhY2hlX3R5cGU7CiBfX3VzZV9jYWNoZTxfX2NhY2hlX3R5
cGU+IF9fdWM7CiBjb25zdCBsb2NhbGUmIF9fbG9jID0gX19pby5fTV9nZXRsb2MoKTsKIGNvbnN0
IF9fY2FjaGVfdHlwZSogX19sYyA9IF9fdWMoX19sb2MpOwogY29uc3QgX0NoYXJUKiBfX2xpdCA9
IF9fbGMtPl9NX2F0b21zX2luOwogY2hhcl90eXBlIF9fYyA9IGNoYXJfdHlwZSgpOwoKCiBjb25z
dCBpb3NfYmFzZTo6Zm10ZmxhZ3MgX19iYXNlZmllbGQgPSBfX2lvLmZsYWdzKCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgaW9zX2Jhc2U6OmJhc2VmaWVsZDsKIGNv
bnN0IGJvb2wgX19vY3QgPSBfX2Jhc2VmaWVsZCA9PSBpb3NfYmFzZTo6b2N0OwogaW50IF9fYmFz
ZSA9IF9fb2N0ID8gOCA6IChfX2Jhc2VmaWVsZCA9PSBpb3NfYmFzZTo6aGV4ID8gMTYgOiAxMCk7
CgoKIGJvb2wgX190ZXN0ZW9mID0gX19iZWcgPT0gX19lbmQ7CgoKIGJvb2wgX19uZWdhdGl2ZSA9
IGZhbHNlOwogaWYgKCFfX3Rlc3Rlb2YpCiAgIHsKICAgICBfX2MgPSAqX19iZWc7CiAgICAgX19u
ZWdhdGl2ZSA9IF9fYyA9PSBfX2xpdFtfX251bV9iYXNlOjpfU19pbWludXNdOwogICAgIGlmICgo
X19uZWdhdGl2ZSB8fCBfX2MgPT0gX19saXRbX19udW1fYmFzZTo6X1NfaXBsdXNdKQogICYmICEo
X19sYy0+X01fdXNlX2dyb3VwaW5nICYmIF9fYyA9PSBfX2xjLT5fTV90aG91c2FuZHNfc2VwKQog
ICYmICEoX19jID09IF9fbGMtPl9NX2RlY2ltYWxfcG9pbnQpKQogICAgICAgewogIGlmICgrK19f
YmVnICE9IF9fZW5kKQogICAgX19jID0gKl9fYmVnOwogIGVsc2UKICAgIF9fdGVzdGVvZiA9IHRy
dWU7CiAgICAgICB9CiAgIH0KCgoKIGJvb2wgX19mb3VuZF96ZXJvID0gZmFsc2U7CiBpbnQgX19z
ZXBfcG9zID0gMDsKIHdoaWxlICghX190ZXN0ZW9mKQogICB7CiAgICAgaWYgKChfX2xjLT5fTV91
c2VfZ3JvdXBpbmcgJiYgX19jID09IF9fbGMtPl9NX3Rob3VzYW5kc19zZXApCiAgfHwgX19jID09
IF9fbGMtPl9NX2RlY2ltYWxfcG9pbnQpCiAgICAgICBicmVhazsKICAgICBlbHNlIGlmIChfX2Mg
PT0gX19saXRbX19udW1fYmFzZTo6X1NfaXplcm9dCiAgICAgICAmJiAoIV9fZm91bmRfemVybyB8
fCBfX2Jhc2UgPT0gMTApKQogICAgICAgewogIF9fZm91bmRfemVybyA9IHRydWU7CiAgKytfX3Nl
cF9wb3M7CiAgaWYgKF9fYmFzZWZpZWxkID09IDApCiAgICBfX2Jhc2UgPSA4OwogIGlmIChfX2Jh
c2UgPT0gOCkKICAgIF9fc2VwX3BvcyA9IDA7CiAgICAgICB9CiAgICAgZWxzZSBpZiAoX19mb3Vu
ZF96ZXJvCiAgICAgICAmJiAoX19jID09IF9fbGl0W19fbnVtX2Jhc2U6Ol9TX2l4XQogICAgfHwg
X19jID09IF9fbGl0W19fbnVtX2Jhc2U6Ol9TX2lYXSkpCiAgICAgICB7CiAgaWYgKF9fYmFzZWZp
ZWxkID09IDApCiAgICBfX2Jhc2UgPSAxNjsKICBpZiAoX19iYXNlID09IDE2KQogICAgewogICAg
ICBfX2ZvdW5kX3plcm8gPSBmYWxzZTsKICAgICAgX19zZXBfcG9zID0gMDsKICAgIH0KICBlbHNl
CiAgICBicmVhazsKICAgICAgIH0KICAgICBlbHNlCiAgICAgICBicmVhazsKCiAgICAgaWYgKCsr
X19iZWcgIT0gX19lbmQpCiAgICAgICB7CiAgX19jID0gKl9fYmVnOwogIGlmICghX19mb3VuZF96
ZXJvKQogICAgYnJlYWs7CiAgICAgICB9CiAgICAgZWxzZQogICAgICAgX190ZXN0ZW9mID0gdHJ1
ZTsKICAgfQoKCgogY29uc3Qgc2l6ZV90IF9fbGVuID0gKF9fYmFzZSA9PSAxNiA/IF9fbnVtX2Jh
c2U6Ol9TX2llbmQKICAgICAgICAgLSBfX251bV9iYXNlOjpfU19pemVybyA6IF9fYmFzZSk7CgoK
IHN0cmluZyBfX2ZvdW5kX2dyb3VwaW5nOwogaWYgKF9fbGMtPl9NX3VzZV9ncm91cGluZykKICAg
X19mb3VuZF9ncm91cGluZy5yZXNlcnZlKDMyKTsKIGJvb2wgX190ZXN0ZmFpbCA9IGZhbHNlOwog
Ym9vbCBfX3Rlc3RvdmVyZmxvdyA9IGZhbHNlOwogY29uc3QgX191bnNpZ25lZF90eXBlIF9fbWF4
ID0KICAgKF9fbmVnYXRpdmUgJiYgX19nbnVfY3h4OjpfX251bWVyaWNfdHJhaXRzPF9WYWx1ZVQ+
OjpfX2lzX3NpZ25lZCkKICAgPyAtX19nbnVfY3h4OjpfX251bWVyaWNfdHJhaXRzPF9WYWx1ZVQ+
OjpfX21pbgogICA6IF9fZ251X2N4eDo6X19udW1lcmljX3RyYWl0czxfVmFsdWVUPjo6X19tYXg7
CiBjb25zdCBfX3Vuc2lnbmVkX3R5cGUgX19zbWF4ID0gX19tYXggLyBfX2Jhc2U7CiBfX3Vuc2ln
bmVkX3R5cGUgX19yZXN1bHQgPSAwOwogaW50IF9fZGlnaXQgPSAwOwogY29uc3QgY2hhcl90eXBl
KiBfX2xpdF96ZXJvID0gX19saXQgKyBfX251bV9iYXNlOjpfU19pemVybzsKCiBpZiAoIV9fbGMt
Pl9NX2FsbG9jYXRlZCkKCiAgIHdoaWxlICghX190ZXN0ZW9mKQogICAgIHsKICAgICAgIF9fZGln
aXQgPSBfTV9maW5kKF9fbGl0X3plcm8sIF9fbGVuLCBfX2MpOwogICAgICAgaWYgKF9fZGlnaXQg
PT0gLTEpCiAgYnJlYWs7CgogICAgICAgaWYgKF9fcmVzdWx0ID4gX19zbWF4KQogIF9fdGVzdG92
ZXJmbG93ID0gdHJ1ZTsKICAgICAgIGVsc2UKICB7CiAgICBfX3Jlc3VsdCAqPSBfX2Jhc2U7CiAg
ICBfX3Rlc3RvdmVyZmxvdyB8PSBfX3Jlc3VsdCA+IF9fbWF4IC0gX19kaWdpdDsKICAgIF9fcmVz
dWx0ICs9IF9fZGlnaXQ7CiAgICArK19fc2VwX3BvczsKICB9CgogICAgICAgaWYgKCsrX19iZWcg
IT0gX19lbmQpCiAgX19jID0gKl9fYmVnOwogICAgICAgZWxzZQogIF9fdGVzdGVvZiA9IHRydWU7
CiAgICAgfQogZWxzZQogICB3aGlsZSAoIV9fdGVzdGVvZikKICAgICB7CgoKICAgICAgIGlmIChf
X2xjLT5fTV91c2VfZ3JvdXBpbmcgJiYgX19jID09IF9fbGMtPl9NX3Rob3VzYW5kc19zZXApCiAg
ewoKCiAgICBpZiAoX19zZXBfcG9zKQogICAgICB7CiAgICAgICAgX19mb3VuZF9ncm91cGluZyAr
PSBzdGF0aWNfY2FzdDxjaGFyPihfX3NlcF9wb3MpOwogICAgICAgIF9fc2VwX3BvcyA9IDA7CiAg
ICAgIH0KICAgIGVsc2UKICAgICAgewogICAgICAgIF9fdGVzdGZhaWwgPSB0cnVlOwogICAgICAg
IGJyZWFrOwogICAgICB9CiAgfQogICAgICAgZWxzZSBpZiAoX19jID09IF9fbGMtPl9NX2RlY2lt
YWxfcG9pbnQpCiAgYnJlYWs7CiAgICAgICBlbHNlCiAgewogICAgY29uc3QgY2hhcl90eXBlKiBf
X3EgPQogICAgICBfX3RyYWl0c190eXBlOjpmaW5kKF9fbGl0X3plcm8sIF9fbGVuLCBfX2MpOwog
ICAgaWYgKCFfX3EpCiAgICAgIGJyZWFrOwoKICAgIF9fZGlnaXQgPSBfX3EgLSBfX2xpdF96ZXJv
OwogICAgaWYgKF9fZGlnaXQgPiAxNSkKICAgICAgX19kaWdpdCAtPSA2OwogICAgaWYgKF9fcmVz
dWx0ID4gX19zbWF4KQogICAgICBfX3Rlc3RvdmVyZmxvdyA9IHRydWU7CiAgICBlbHNlCiAgICAg
IHsKICAgICAgICBfX3Jlc3VsdCAqPSBfX2Jhc2U7CiAgICAgICAgX190ZXN0b3ZlcmZsb3cgfD0g
X19yZXN1bHQgPiBfX21heCAtIF9fZGlnaXQ7CiAgICAgICAgX19yZXN1bHQgKz0gX19kaWdpdDsK
ICAgICAgICArK19fc2VwX3BvczsKICAgICAgfQogIH0KCiAgICAgICBpZiAoKytfX2JlZyAhPSBf
X2VuZCkKICBfX2MgPSAqX19iZWc7CiAgICAgICBlbHNlCiAgX190ZXN0ZW9mID0gdHJ1ZTsKICAg
ICB9CgoKCiBpZiAoX19mb3VuZF9ncm91cGluZy5zaXplKCkpCiAgIHsKCiAgICAgX19mb3VuZF9n
cm91cGluZyArPSBzdGF0aWNfY2FzdDxjaGFyPihfX3NlcF9wb3MpOwoKICAgICBpZiAoIXN0ZDo6
X192ZXJpZnlfZ3JvdXBpbmcoX19sYy0+X01fZ3JvdXBpbmcsCiAgICAgX19sYy0+X01fZ3JvdXBp
bmdfc2l6ZSwKICAgICBfX2ZvdW5kX2dyb3VwaW5nKSkKICAgICAgIF9fZXJyID0gaW9zX2Jhc2U6
OmZhaWxiaXQ7CiAgIH0KCgoKIGlmICgoIV9fc2VwX3BvcyAmJiAhX19mb3VuZF96ZXJvICYmICFf
X2ZvdW5kX2dyb3VwaW5nLnNpemUoKSkKICAgICB8fCBfX3Rlc3RmYWlsKQogICB7CiAgICAgX192
ID0gMDsKICAgICBfX2VyciA9IGlvc19iYXNlOjpmYWlsYml0OwogICB9CiBlbHNlIGlmIChfX3Rl
c3RvdmVyZmxvdykKICAgewogICAgIGlmIChfX25lZ2F0aXZlCiAgJiYgX19nbnVfY3h4OjpfX251
bWVyaWNfdHJhaXRzPF9WYWx1ZVQ+OjpfX2lzX3NpZ25lZCkKICAgICAgIF9fdiA9IF9fZ251X2N4
eDo6X19udW1lcmljX3RyYWl0czxfVmFsdWVUPjo6X19taW47CiAgICAgZWxzZQogICAgICAgX192
ID0gX19nbnVfY3h4OjpfX251bWVyaWNfdHJhaXRzPF9WYWx1ZVQ+OjpfX21heDsKICAgICBfX2Vy
ciA9IGlvc19iYXNlOjpmYWlsYml0OwogICB9CiBlbHNlCiAgIF9fdiA9IF9fbmVnYXRpdmUgPyAt
X19yZXN1bHQgOiBfX3Jlc3VsdDsKCiBpZiAoX190ZXN0ZW9mKQogICBfX2VyciB8PSBpb3NfYmFz
ZTo6ZW9mYml0OwogcmV0dXJuIF9fYmVnOwogICAgICB9CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPgogICAgX0luSXRlcgogICAgbnVtX2dldDxfQ2hhclQs
IF9Jbkl0ZXI+OjoKICAgIGRvX2dldChpdGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2VuZCwg
aW9zX2Jhc2UmIF9faW8sCiAgICAgICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCBib29s
JiBfX3YpIGNvbnN0CiAgICB7CiAgICAgIGlmICghKF9faW8uZmxhZ3MoKSAmIGlvc19iYXNlOjpi
b29sYWxwaGEpKQogICAgICAgIHsKCgoKICAgbG9uZyBfX2wgPSAtMTsKICAgICAgICAgIF9fYmVn
ID0gX01fZXh0cmFjdF9pbnQoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2VyciwgX19sKTsKICAgaWYg
KF9fbCA9PSAwIHx8IF9fbCA9PSAxKQogICAgIF9fdiA9IGJvb2woX19sKTsKICAgZWxzZQogICAg
IHsKCgogICAgICAgX192ID0gdHJ1ZTsKICAgICAgIF9fZXJyID0gaW9zX2Jhc2U6OmZhaWxiaXQ7
CiAgICAgICBpZiAoX19iZWcgPT0gX19lbmQpCiAgX19lcnIgfD0gaW9zX2Jhc2U6OmVvZmJpdDsK
ICAgICB9CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAgewoKICAgdHlwZWRlZiBfX251bXB1
bmN0X2NhY2hlPF9DaGFyVD4gX19jYWNoZV90eXBlOwogICBfX3VzZV9jYWNoZTxfX2NhY2hlX3R5
cGU+IF9fdWM7CiAgIGNvbnN0IGxvY2FsZSYgX19sb2MgPSBfX2lvLl9NX2dldGxvYygpOwogICBj
b25zdCBfX2NhY2hlX3R5cGUqIF9fbGMgPSBfX3VjKF9fbG9jKTsKCiAgIGJvb2wgX190ZXN0ZiA9
IHRydWU7CiAgIGJvb2wgX190ZXN0dCA9IHRydWU7CiAgIGJvb2wgX19kb25lZiA9IF9fbGMtPl9N
X2ZhbHNlbmFtZV9zaXplID09IDA7CiAgIGJvb2wgX19kb25ldCA9IF9fbGMtPl9NX3RydWVuYW1l
X3NpemUgPT0gMDsKICAgYm9vbCBfX3Rlc3Rlb2YgPSBmYWxzZTsKICAgc2l6ZV90IF9fbiA9IDA7
CiAgIHdoaWxlICghX19kb25lZiB8fCAhX19kb25ldCkKICAgICB7CiAgICAgICBpZiAoX19iZWcg
PT0gX19lbmQpCiAgewogICAgX190ZXN0ZW9mID0gdHJ1ZTsKICAgIGJyZWFrOwogIH0KCiAgICAg
ICBjb25zdCBjaGFyX3R5cGUgX19jID0gKl9fYmVnOwoKICAgICAgIGlmICghX19kb25lZikKICBf
X3Rlc3RmID0gX19jID09IF9fbGMtPl9NX2ZhbHNlbmFtZVtfX25dOwoKICAgICAgIGlmICghX190
ZXN0ZiAmJiBfX2RvbmV0KQogIGJyZWFrOwoKICAgICAgIGlmICghX19kb25ldCkKICBfX3Rlc3R0
ID0gX19jID09IF9fbGMtPl9NX3RydWVuYW1lW19fbl07CgogICAgICAgaWYgKCFfX3Rlc3R0ICYm
IF9fZG9uZWYpCiAgYnJlYWs7CgogICAgICAgaWYgKCFfX3Rlc3R0ICYmICFfX3Rlc3RmKQogIGJy
ZWFrOwoKICAgICAgICsrX19uOwogICAgICAgKytfX2JlZzsKCiAgICAgICBfX2RvbmVmID0gIV9f
dGVzdGYgfHwgX19uID49IF9fbGMtPl9NX2ZhbHNlbmFtZV9zaXplOwogICAgICAgX19kb25ldCA9
ICFfX3Rlc3R0IHx8IF9fbiA+PSBfX2xjLT5fTV90cnVlbmFtZV9zaXplOwogICAgIH0KICAgaWYg
KF9fdGVzdGYgJiYgX19uID09IF9fbGMtPl9NX2ZhbHNlbmFtZV9zaXplICYmIF9fbikKICAgICB7
CiAgICAgICBfX3YgPSBmYWxzZTsKICAgICAgIGlmIChfX3Rlc3R0ICYmIF9fbiA9PSBfX2xjLT5f
TV90cnVlbmFtZV9zaXplKQogIF9fZXJyID0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICAgICBlbHNl
CiAgX19lcnIgPSBfX3Rlc3Rlb2YgPyBpb3NfYmFzZTo6ZW9mYml0IDogaW9zX2Jhc2U6Omdvb2Ri
aXQ7CiAgICAgfQogICBlbHNlIGlmIChfX3Rlc3R0ICYmIF9fbiA9PSBfX2xjLT5fTV90cnVlbmFt
ZV9zaXplICYmIF9fbikKICAgICB7CiAgICAgICBfX3YgPSB0cnVlOwogICAgICAgX19lcnIgPSBf
X3Rlc3Rlb2YgPyBpb3NfYmFzZTo6ZW9mYml0IDogaW9zX2Jhc2U6Omdvb2RiaXQ7CiAgICAgfQog
ICBlbHNlCiAgICAgewoKCiAgICAgICBfX3YgPSBmYWxzZTsKICAgICAgIF9fZXJyID0gaW9zX2Jh
c2U6OmZhaWxiaXQ7CiAgICAgICBpZiAoX190ZXN0ZW9mKQogIF9fZXJyIHw9IGlvc19iYXNlOjpl
b2ZiaXQ7CiAgICAgfQogfQogICAgICByZXR1cm4gX19iZWc7CiAgICB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4KICAgIF9Jbkl0ZXIKICAgIG51bV9nZXQ8
X0NoYXJULCBfSW5JdGVyPjo6CiAgICBkb19nZXQoaXRlcl90eXBlIF9fYmVnLCBpdGVyX3R5cGUg
X19lbmQsIGlvc19iYXNlJiBfX2lvLAogICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCBmbG9h
dCYgX192KSBjb25zdAogICAgewogICAgICBzdHJpbmcgX194dHJjOwogICAgICBfX3h0cmMucmVz
ZXJ2ZSgzMik7CiAgICAgIF9fYmVnID0gX01fZXh0cmFjdF9mbG9hdChfX2JlZywgX19lbmQsIF9f
aW8sIF9fZXJyLCBfX3h0cmMpOwogICAgICBzdGQ6Ol9fY29udmVydF90b192KF9feHRyYy5jX3N0
cigpLCBfX3YsIF9fZXJyLCBfU19nZXRfY19sb2NhbGUoKSk7CiAgICAgIGlmIChfX2JlZyA9PSBf
X2VuZCkKIF9fZXJyIHw9IGlvc19iYXNlOjplb2ZiaXQ7CiAgICAgIHJldHVybiBfX2JlZzsKICAg
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPgogICAgX0lu
SXRlcgogICAgbnVtX2dldDxfQ2hhclQsIF9Jbkl0ZXI+OjoKICAgIGRvX2dldChpdGVyX3R5cGUg
X19iZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgICAgICAgICAgaW9zX2Jh
c2U6Omlvc3RhdGUmIF9fZXJyLCBkb3VibGUmIF9fdikgY29uc3QKICAgIHsKICAgICAgc3RyaW5n
IF9feHRyYzsKICAgICAgX194dHJjLnJlc2VydmUoMzIpOwogICAgICBfX2JlZyA9IF9NX2V4dHJh
Y3RfZmxvYXQoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2VyciwgX194dHJjKTsKICAgICAgc3RkOjpf
X2NvbnZlcnRfdG9fdihfX3h0cmMuY19zdHIoKSwgX192LCBfX2VyciwgX1NfZ2V0X2NfbG9jYWxl
KCkpOwogICAgICBpZiAoX19iZWcgPT0gX19lbmQpCiBfX2VyciB8PSBpb3NfYmFzZTo6ZW9mYml0
OwogICAgICByZXR1cm4gX19iZWc7CiAgICB9CiMgNzMwICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2ZhY2V0cy50Y2Mi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXI+CiAgICBfSW5J
dGVyCiAgICBudW1fZ2V0PF9DaGFyVCwgX0luSXRlcj46OgogICAgZG9fZ2V0KGl0ZXJfdHlwZSBf
X2JlZywgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywKICAgICAgICAgICBpb3NfYmFz
ZTo6aW9zdGF0ZSYgX19lcnIsIGxvbmcgZG91YmxlJiBfX3YpIGNvbnN0CiAgICB7CiAgICAgIHN0
cmluZyBfX3h0cmM7CiAgICAgIF9feHRyYy5yZXNlcnZlKDMyKTsKICAgICAgX19iZWcgPSBfTV9l
eHRyYWN0X2Zsb2F0KF9fYmVnLCBfX2VuZCwgX19pbywgX19lcnIsIF9feHRyYyk7CiAgICAgIHN0
ZDo6X19jb252ZXJ0X3RvX3YoX194dHJjLmNfc3RyKCksIF9fdiwgX19lcnIsIF9TX2dldF9jX2xv
Y2FsZSgpKTsKICAgICAgaWYgKF9fYmVnID09IF9fZW5kKQogX19lcnIgfD0gaW9zX2Jhc2U6OmVv
ZmJpdDsKICAgICAgcmV0dXJuIF9fYmVnOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9Jbkl0ZXI+CiAgICBfSW5JdGVyCiAgICBudW1fZ2V0PF9DaGFyVCwgX0lu
SXRlcj46OgogICAgZG9fZ2V0KGl0ZXJfdHlwZSBfX2JlZywgaXRlcl90eXBlIF9fZW5kLCBpb3Nf
YmFzZSYgX19pbywKICAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHZvaWQqJiBf
X3YpIGNvbnN0CiAgICB7CgogICAgICB0eXBlZGVmIGlvc19iYXNlOjpmbXRmbGFncyBmbXRmbGFn
czsKICAgICAgY29uc3QgZm10ZmxhZ3MgX19mbXQgPSBfX2lvLmZsYWdzKCk7CiAgICAgIF9faW8u
ZmxhZ3MoKF9fZm10ICYgfmlvc19iYXNlOjpiYXNlZmllbGQpIHwgaW9zX2Jhc2U6OmhleCk7Cgog
ICAgICB0eXBlZGVmIF9fZ251X2N4eDo6X19jb25kaXRpb25hbF90eXBlPChzaXplb2Yodm9pZCop
CiAgICAgICAgICA8PSBzaXplb2YodW5zaWduZWQgbG9uZykpLAogdW5zaWduZWQgbG9uZywgdW5z
aWduZWQgbG9uZyBsb25nPjo6X190eXBlIF9VSW50UHRyVHlwZTsKCiAgICAgIF9VSW50UHRyVHlw
ZSBfX3VsOwogICAgICBfX2JlZyA9IF9NX2V4dHJhY3RfaW50KF9fYmVnLCBfX2VuZCwgX19pbywg
X19lcnIsIF9fdWwpOwoKCiAgICAgIF9faW8uZmxhZ3MoX19mbXQpOwoKICAgICAgX192ID0gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oX191bCk7CiAgICAgIHJldHVybiBfX2JlZzsKICAgIH0KCgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAgdm9pZAog
ICAgbnVtX3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6CiAgICBfTV9wYWQoX0NoYXJUIF9fZmlsbCwg
c3RyZWFtc2l6ZSBfX3csIGlvc19iYXNlJiBfX2lvLAogICAgX0NoYXJUKiBfX25ldywgY29uc3Qg
X0NoYXJUKiBfX2NzLCBpbnQmIF9fbGVuKSBjb25zdAogICAgewoKCiAgICAgIF9fcGFkPF9DaGFy
VCwgY2hhcl90cmFpdHM8X0NoYXJUPiA+OjpfU19wYWQoX19pbywgX19maWxsLCBfX25ldywKICAg
ICAgICBfX2NzLCBfX3csIF9fbGVuKTsKICAgICAgX19sZW4gPSBzdGF0aWNfY2FzdDxpbnQ+KF9f
dyk7CiAgICB9CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVmFsdWVU
PgogICAgaW50CiAgICBfX2ludF90b19jaGFyKF9DaGFyVCogX19idWZlbmQsIF9WYWx1ZVQgX192
LCBjb25zdCBfQ2hhclQqIF9fbGl0LAogICAgaW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MsIGJv
b2wgX19kZWMpCiAgICB7CiAgICAgIF9DaGFyVCogX19idWYgPSBfX2J1ZmVuZDsKICAgICAgaWYg
KF9fYnVpbHRpbl9leHBlY3QoX19kZWMsIHRydWUpKQogewoKICAgZG8KICAgICB7CiAgICAgICAq
LS1fX2J1ZiA9IF9fbGl0WyhfX3YgJSAxMCkgKyBfX251bV9iYXNlOjpfU19vZGlnaXRzXTsKICAg
ICAgIF9fdiAvPSAxMDsKICAgICB9CiAgIHdoaWxlIChfX3YgIT0gMCk7CiB9CiAgICAgIGVsc2Ug
aWYgKChfX2ZsYWdzICYgaW9zX2Jhc2U6OmJhc2VmaWVsZCkgPT0gaW9zX2Jhc2U6Om9jdCkKIHsK
CiAgIGRvCiAgICAgewogICAgICAgKi0tX19idWYgPSBfX2xpdFsoX192ICYgMHg3KSArIF9fbnVt
X2Jhc2U6Ol9TX29kaWdpdHNdOwogICAgICAgX192ID4+PSAzOwogICAgIH0KICAgd2hpbGUgKF9f
diAhPSAwKTsKIH0KICAgICAgZWxzZQogewoKICAgY29uc3QgYm9vbCBfX3VwcGVyY2FzZSA9IF9f
ZmxhZ3MgJiBpb3NfYmFzZTo6dXBwZXJjYXNlOwogICBjb25zdCBpbnQgX19jYXNlX29mZnNldCA9
IF9fdXBwZXJjYXNlID8gX19udW1fYmFzZTo6X1Nfb3VkaWdpdHMKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IF9fbnVtX2Jhc2U6Ol9TX29kaWdpdHM7CiAgIGRvCiAg
ICAgewogICAgICAgKi0tX19idWYgPSBfX2xpdFsoX192ICYgMHhmKSArIF9fY2FzZV9vZmZzZXRd
OwogICAgICAgX192ID4+PSA0OwogICAgIH0KICAgd2hpbGUgKF9fdiAhPSAwKTsKIH0KICAgICAg
cmV0dXJuIF9fYnVmZW5kIC0gX19idWY7CiAgICB9CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfT3V0SXRlcj4KICAgIHZvaWQKICAgIG51bV9wdXQ8X0NoYXJULCBfT3V0
SXRlcj46OgogICAgX01fZ3JvdXBfaW50KGNvbnN0IGNoYXIqIF9fZ3JvdXBpbmcsIHNpemVfdCBf
X2dyb3VwaW5nX3NpemUsIF9DaGFyVCBfX3NlcCwKICAgaW9zX2Jhc2UmLCBfQ2hhclQqIF9fbmV3
LCBfQ2hhclQqIF9fY3MsIGludCYgX19sZW4pIGNvbnN0CiAgICB7CiAgICAgIF9DaGFyVCogX19w
ID0gc3RkOjpfX2FkZF9ncm91cGluZyhfX25ldywgX19zZXAsIF9fZ3JvdXBpbmcsCiAgICAgX19n
cm91cGluZ19zaXplLCBfX2NzLCBfX2NzICsgX19sZW4pOwogICAgICBfX2xlbiA9IF9fcCAtIF9f
bmV3OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVy
PgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlVD4KICAgICAgX091dEl0ZXIKICAgICAgbnVt
X3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6CiAgICAgIF9NX2luc2VydF9pbnQoX091dEl0ZXIgX19z
LCBpb3NfYmFzZSYgX19pbywgX0NoYXJUIF9fZmlsbCwKICAgICAgX1ZhbHVlVCBfX3YpIGNvbnN0
CiAgICAgIHsKIHVzaW5nIF9fZ251X2N4eDo6X19hZGRfdW5zaWduZWQ7CiB0eXBlZGVmIHR5cGVu
YW1lIF9fYWRkX3Vuc2lnbmVkPF9WYWx1ZVQ+OjpfX3R5cGUgX191bnNpZ25lZF90eXBlOwogdHlw
ZWRlZiBfX251bXB1bmN0X2NhY2hlPF9DaGFyVD4gX19jYWNoZV90eXBlOwogX191c2VfY2FjaGU8
X19jYWNoZV90eXBlPiBfX3VjOwogY29uc3QgbG9jYWxlJiBfX2xvYyA9IF9faW8uX01fZ2V0bG9j
KCk7CiBjb25zdCBfX2NhY2hlX3R5cGUqIF9fbGMgPSBfX3VjKF9fbG9jKTsKIGNvbnN0IF9DaGFy
VCogX19saXQgPSBfX2xjLT5fTV9hdG9tc19vdXQ7CiBjb25zdCBpb3NfYmFzZTo6Zm10ZmxhZ3Mg
X19mbGFncyA9IF9faW8uZmxhZ3MoKTsKCgogY29uc3QgaW50IF9faWxlbiA9IDUgKiBzaXplb2Yo
X1ZhbHVlVCk7CiBfQ2hhclQqIF9fY3MgPSBzdGF0aWNfY2FzdDxfQ2hhclQqPihfX2J1aWx0aW5f
YWxsb2NhKHNpemVvZihfQ2hhclQpCiAgICAgICAgICAgICogX19pbGVuKSk7CgoKCiBjb25zdCBp
b3NfYmFzZTo6Zm10ZmxhZ3MgX19iYXNlZmllbGQgPSBfX2ZsYWdzICYgaW9zX2Jhc2U6OmJhc2Vm
aWVsZDsKIGNvbnN0IGJvb2wgX19kZWMgPSAoX19iYXNlZmllbGQgIT0gaW9zX2Jhc2U6Om9jdAog
ICAgICAgJiYgX19iYXNlZmllbGQgIT0gaW9zX2Jhc2U6OmhleCk7CiBjb25zdCBfX3Vuc2lnbmVk
X3R5cGUgX191ID0gKChfX3YgPiAwIHx8ICFfX2RlYykKICAgICAgICAgPyBfX3Vuc2lnbmVkX3R5
cGUoX192KQogICAgICAgICA6IC1fX3Vuc2lnbmVkX3R5cGUoX192KSk7CiAgaW50IF9fbGVuID0g
X19pbnRfdG9fY2hhcihfX2NzICsgX19pbGVuLCBfX3UsIF9fbGl0LCBfX2ZsYWdzLCBfX2RlYyk7
CiBfX2NzICs9IF9faWxlbiAtIF9fbGVuOwoKCiBpZiAoX19sYy0+X01fdXNlX2dyb3VwaW5nKQog
ICB7CgoKICAgICBfQ2hhclQqIF9fY3MyID0gc3RhdGljX2Nhc3Q8X0NoYXJUKj4oX19idWlsdGlu
X2FsbG9jYShzaXplb2YoX0NoYXJUKQogICAgICAgICAgKiAoX19sZW4gKyAxKQogICAgICAgICAg
KiAyKSk7CiAgICAgX01fZ3JvdXBfaW50KF9fbGMtPl9NX2dyb3VwaW5nLCBfX2xjLT5fTV9ncm91
cGluZ19zaXplLAogICAgX19sYy0+X01fdGhvdXNhbmRzX3NlcCwgX19pbywgX19jczIgKyAyLCBf
X2NzLCBfX2xlbik7CiAgICAgX19jcyA9IF9fY3MyICsgMjsKICAgfQoKCiBpZiAoX19idWlsdGlu
X2V4cGVjdChfX2RlYywgdHJ1ZSkpCiAgIHsKCiAgICAgaWYgKF9fdiA+PSAwKQogICAgICAgewog
IGlmIChib29sKF9fZmxhZ3MgJiBpb3NfYmFzZTo6c2hvd3BvcykKICAgICAgJiYgX19nbnVfY3h4
OjpfX251bWVyaWNfdHJhaXRzPF9WYWx1ZVQ+OjpfX2lzX3NpZ25lZCkKICAgICotLV9fY3MgPSBf
X2xpdFtfX251bV9iYXNlOjpfU19vcGx1c10sICsrX19sZW47CiAgICAgICB9CiAgICAgZWxzZQog
ICAgICAgKi0tX19jcyA9IF9fbGl0W19fbnVtX2Jhc2U6Ol9TX29taW51c10sICsrX19sZW47CiAg
IH0KIGVsc2UgaWYgKGJvb2woX19mbGFncyAmIGlvc19iYXNlOjpzaG93YmFzZSkgJiYgX192KQog
ICB7CiAgICAgaWYgKF9fYmFzZWZpZWxkID09IGlvc19iYXNlOjpvY3QpCiAgICAgICAqLS1fX2Nz
ID0gX19saXRbX19udW1fYmFzZTo6X1Nfb2RpZ2l0c10sICsrX19sZW47CiAgICAgZWxzZQogICAg
ICAgewoKICBjb25zdCBib29sIF9fdXBwZXJjYXNlID0gX19mbGFncyAmIGlvc19iYXNlOjp1cHBl
cmNhc2U7CiAgKi0tX19jcyA9IF9fbGl0W19fbnVtX2Jhc2U6Ol9TX294ICsgX191cHBlcmNhc2Vd
OwoKICAqLS1fX2NzID0gX19saXRbX19udW1fYmFzZTo6X1Nfb2RpZ2l0c107CiAgX19sZW4gKz0g
MjsKICAgICAgIH0KICAgfQoKCiBjb25zdCBzdHJlYW1zaXplIF9fdyA9IF9faW8ud2lkdGgoKTsK
IGlmIChfX3cgPiBzdGF0aWNfY2FzdDxzdHJlYW1zaXplPihfX2xlbikpCiAgIHsKICAgICBfQ2hh
clQqIF9fY3MzID0gc3RhdGljX2Nhc3Q8X0NoYXJUKj4oX19idWlsdGluX2FsbG9jYShzaXplb2Yo
X0NoYXJUKQogICAgICAgICAgKiBfX3cpKTsKICAgICBfTV9wYWQoX19maWxsLCBfX3csIF9faW8s
IF9fY3MzLCBfX2NzLCBfX2xlbik7CiAgICAgX19jcyA9IF9fY3MzOwogICB9CiBfX2lvLndpZHRo
KDApOwoKCgogcmV0dXJuIHN0ZDo6X193cml0ZShfX3MsIF9fY3MsIF9fbGVuKTsKICAgICAgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAgdm9pZAog
ICAgbnVtX3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6CiAgICBfTV9ncm91cF9mbG9hdChjb25zdCBj
aGFyKiBfX2dyb3VwaW5nLCBzaXplX3QgX19ncm91cGluZ19zaXplLAogICAgIF9DaGFyVCBfX3Nl
cCwgY29uc3QgX0NoYXJUKiBfX3AsIF9DaGFyVCogX19uZXcsCiAgICAgX0NoYXJUKiBfX2NzLCBp
bnQmIF9fbGVuKSBjb25zdAogICAgewoKCgogICAgICBjb25zdCBpbnQgX19kZWNsZW4gPSBfX3Ag
PyBfX3AgLSBfX2NzIDogX19sZW47CiAgICAgIF9DaGFyVCogX19wMiA9IHN0ZDo6X19hZGRfZ3Jv
dXBpbmcoX19uZXcsIF9fc2VwLCBfX2dyb3VwaW5nLAogICAgICBfX2dyb3VwaW5nX3NpemUsCiAg
ICAgIF9fY3MsIF9fY3MgKyBfX2RlY2xlbik7CgoKICAgICAgaW50IF9fbmV3bGVuID0gX19wMiAt
IF9fbmV3OwogICAgICBpZiAoX19wKQogewogICBjaGFyX3RyYWl0czxfQ2hhclQ+Ojpjb3B5KF9f
cDIsIF9fcCwgX19sZW4gLSBfX2RlY2xlbik7CiAgIF9fbmV3bGVuICs9IF9fbGVuIC0gX19kZWNs
ZW47CiB9CiAgICAgIF9fbGVuID0gX19uZXdsZW47CiAgICB9CiMgOTY2ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvbG9jYWxlX2Zh
Y2V0cy50Y2MiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVy
PgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlVD4KICAgICAgX091dEl0ZXIKICAgICAgbnVt
X3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6CiAgICAgIF9NX2luc2VydF9mbG9hdChfT3V0SXRlciBf
X3MsIGlvc19iYXNlJiBfX2lvLCBfQ2hhclQgX19maWxsLCBjaGFyIF9fbW9kLAogICAgICAgICBf
VmFsdWVUIF9fdikgY29uc3QKICAgICAgewogdHlwZWRlZiBfX251bXB1bmN0X2NhY2hlPF9DaGFy
VD4gX19jYWNoZV90eXBlOwogX191c2VfY2FjaGU8X19jYWNoZV90eXBlPiBfX3VjOwogY29uc3Qg
bG9jYWxlJiBfX2xvYyA9IF9faW8uX01fZ2V0bG9jKCk7CiBjb25zdCBfX2NhY2hlX3R5cGUqIF9f
bGMgPSBfX3VjKF9fbG9jKTsKCgogY29uc3Qgc3RyZWFtc2l6ZSBfX3ByZWMgPSBfX2lvLnByZWNp
c2lvbigpIDwgMCA/IDYgOiBfX2lvLnByZWNpc2lvbigpOwoKIGNvbnN0IGludCBfX21heF9kaWdp
dHMgPQogICBfX2dudV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8X1ZhbHVlVD46Ol9fZGlnaXRzMTA7
CgoKIGludCBfX2xlbjsKCiBjaGFyIF9fZmJ1ZlsxNl07CiBfX251bV9iYXNlOjpfU19mb3JtYXRf
ZmxvYXQoX19pbywgX19mYnVmLCBfX21vZCk7CgoKCgogaW50IF9fY3Nfc2l6ZSA9IF9fbWF4X2Rp
Z2l0cyAqIDM7CiBjaGFyKiBfX2NzID0gc3RhdGljX2Nhc3Q8Y2hhcio+KF9fYnVpbHRpbl9hbGxv
Y2EoX19jc19zaXplKSk7CiBfX2xlbiA9IHN0ZDo6X19jb252ZXJ0X2Zyb21fdihfU19nZXRfY19s
b2NhbGUoKSwgX19jcywgX19jc19zaXplLAogICAgICAgICAgX19mYnVmLCBfX3ByZWMsIF9fdik7
CgoKIGlmIChfX2xlbiA+PSBfX2NzX3NpemUpCiAgIHsKICAgICBfX2NzX3NpemUgPSBfX2xlbiAr
IDE7CiAgICAgX19jcyA9IHN0YXRpY19jYXN0PGNoYXIqPihfX2J1aWx0aW5fYWxsb2NhKF9fY3Nf
c2l6ZSkpOwogICAgIF9fbGVuID0gc3RkOjpfX2NvbnZlcnRfZnJvbV92KF9TX2dldF9jX2xvY2Fs
ZSgpLCBfX2NzLCBfX2NzX3NpemUsCiAgICAgICBfX2ZidWYsIF9fcHJlYywgX192KTsKICAgfQoj
IDEwMjcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC45LjMvYml0cy9sb2NhbGVfZmFjZXRzLnRjYyIgMwogY29uc3QgY3R5cGU8X0NoYXJUPiYgX19j
dHlwZSA9IHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2MpOwoKIF9DaGFyVCogX193cyA9
IHN0YXRpY19jYXN0PF9DaGFyVCo+KF9fYnVpbHRpbl9hbGxvY2Eoc2l6ZW9mKF9DaGFyVCkKICAg
ICAgICAgICAgKiBfX2xlbikpOwogX19jdHlwZS53aWRlbihfX2NzLCBfX2NzICsgX19sZW4sIF9f
d3MpOwoKCiBfQ2hhclQqIF9fd3AgPSAwOwogY29uc3QgY2hhciogX19wID0gY2hhcl90cmFpdHM8
Y2hhcj46OmZpbmQoX19jcywgX19sZW4sICcuJyk7CiBpZiAoX19wKQogICB7CiAgICAgX193cCA9
IF9fd3MgKyAoX19wIC0gX19jcyk7CiAgICAgKl9fd3AgPSBfX2xjLT5fTV9kZWNpbWFsX3BvaW50
OwogICB9CgoKCgogaWYgKF9fbGMtPl9NX3VzZV9ncm91cGluZwogICAgICYmIChfX3dwIHx8IF9f
bGVuIDwgMyB8fCAoX19jc1sxXSA8PSAnOScgJiYgX19jc1syXSA8PSAnOScKICAgICAgICAgICYm
IF9fY3NbMV0gPj0gJzAnICYmIF9fY3NbMl0gPj0gJzAnKSkpCiAgIHsKCgogICAgIF9DaGFyVCog
X193czIgPSBzdGF0aWNfY2FzdDxfQ2hhclQqPihfX2J1aWx0aW5fYWxsb2NhKHNpemVvZihfQ2hh
clQpCiAgICAgICAgICAqIF9fbGVuICogMikpOwoKICAgICBzdHJlYW1zaXplIF9fb2ZmID0gMDsK
ICAgICBpZiAoX19jc1swXSA9PSAnLScgfHwgX19jc1swXSA9PSAnKycpCiAgICAgICB7CiAgX19v
ZmYgPSAxOwogIF9fd3MyWzBdID0gX193c1swXTsKICBfX2xlbiAtPSAxOwogICAgICAgfQoKICAg
ICBfTV9ncm91cF9mbG9hdChfX2xjLT5fTV9ncm91cGluZywgX19sYy0+X01fZ3JvdXBpbmdfc2l6
ZSwKICAgICAgX19sYy0+X01fdGhvdXNhbmRzX3NlcCwgX193cCwgX193czIgKyBfX29mZiwKICAg
ICAgX193cyArIF9fb2ZmLCBfX2xlbik7CiAgICAgX19sZW4gKz0gX19vZmY7CgogICAgIF9fd3Mg
PSBfX3dzMjsKICAgfQoKCiBjb25zdCBzdHJlYW1zaXplIF9fdyA9IF9faW8ud2lkdGgoKTsKIGlm
IChfX3cgPiBzdGF0aWNfY2FzdDxzdHJlYW1zaXplPihfX2xlbikpCiAgIHsKICAgICBfQ2hhclQq
IF9fd3MzID0gc3RhdGljX2Nhc3Q8X0NoYXJUKj4oX19idWlsdGluX2FsbG9jYShzaXplb2YoX0No
YXJUKQogICAgICAgICAgKiBfX3cpKTsKICAgICBfTV9wYWQoX19maWxsLCBfX3csIF9faW8sIF9f
d3MzLCBfX3dzLCBfX2xlbik7CiAgICAgX193cyA9IF9fd3MzOwogICB9CiBfX2lvLndpZHRoKDAp
OwoKCgogcmV0dXJuIHN0ZDo6X193cml0ZShfX3MsIF9fd3MsIF9fbGVuKTsKICAgICAgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAgX091dEl0ZXIK
ICAgIG51bV9wdXQ8X0NoYXJULCBfT3V0SXRlcj46OgogICAgZG9fcHV0KGl0ZXJfdHlwZSBfX3Ms
IGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxsLCBib29sIF9fdikgY29uc3QKICAgIHsK
ICAgICAgY29uc3QgaW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX2lvLmZsYWdzKCk7CiAg
ICAgIGlmICgoX19mbGFncyAmIGlvc19iYXNlOjpib29sYWxwaGEpID09IDApCiAgICAgICAgewog
ICAgICAgICAgY29uc3QgbG9uZyBfX2wgPSBfX3Y7CiAgICAgICAgICBfX3MgPSBfTV9pbnNlcnRf
aW50KF9fcywgX19pbywgX19maWxsLCBfX2wpOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAg
IHsKICAgdHlwZWRlZiBfX251bXB1bmN0X2NhY2hlPF9DaGFyVD4gX19jYWNoZV90eXBlOwogICBf
X3VzZV9jYWNoZTxfX2NhY2hlX3R5cGU+IF9fdWM7CiAgIGNvbnN0IGxvY2FsZSYgX19sb2MgPSBf
X2lvLl9NX2dldGxvYygpOwogICBjb25zdCBfX2NhY2hlX3R5cGUqIF9fbGMgPSBfX3VjKF9fbG9j
KTsKCiAgIGNvbnN0IF9DaGFyVCogX19uYW1lID0gX192ID8gX19sYy0+X01fdHJ1ZW5hbWUKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfX2xjLT5fTV9mYWxzZW5hbWU7CiAgIGludCBf
X2xlbiA9IF9fdiA/IF9fbGMtPl9NX3RydWVuYW1lX3NpemUKICAgICAgICAgICAgICAgICAgIDog
X19sYy0+X01fZmFsc2VuYW1lX3NpemU7CgogICBjb25zdCBzdHJlYW1zaXplIF9fdyA9IF9faW8u
d2lkdGgoKTsKICAgaWYgKF9fdyA+IHN0YXRpY19jYXN0PHN0cmVhbXNpemU+KF9fbGVuKSkKICAg
ICB7CiAgICAgICBjb25zdCBzdHJlYW1zaXplIF9fcGxlbiA9IF9fdyAtIF9fbGVuOwogICAgICAg
X0NoYXJUKiBfX3BzCiAgPSBzdGF0aWNfY2FzdDxfQ2hhclQqPihfX2J1aWx0aW5fYWxsb2NhKHNp
emVvZihfQ2hhclQpCiAgICAgICAqIF9fcGxlbikpOwoKICAgICAgIGNoYXJfdHJhaXRzPF9DaGFy
VD46OmFzc2lnbihfX3BzLCBfX3BsZW4sIF9fZmlsbCk7CiAgICAgICBfX2lvLndpZHRoKDApOwoK
ICAgICAgIGlmICgoX19mbGFncyAmIGlvc19iYXNlOjphZGp1c3RmaWVsZCkgPT0gaW9zX2Jhc2U6
OmxlZnQpCiAgewogICAgX19zID0gc3RkOjpfX3dyaXRlKF9fcywgX19uYW1lLCBfX2xlbik7CiAg
ICBfX3MgPSBzdGQ6Ol9fd3JpdGUoX19zLCBfX3BzLCBfX3BsZW4pOwogIH0KICAgICAgIGVsc2UK
ICB7CiAgICBfX3MgPSBzdGQ6Ol9fd3JpdGUoX19zLCBfX3BzLCBfX3BsZW4pOwogICAgX19zID0g
c3RkOjpfX3dyaXRlKF9fcywgX19uYW1lLCBfX2xlbik7CiAgfQogICAgICAgcmV0dXJuIF9fczsK
ICAgICB9CiAgIF9faW8ud2lkdGgoMCk7CiAgIF9fcyA9IHN0ZDo6X193cml0ZShfX3MsIF9fbmFt
ZSwgX19sZW4pOwogfQogICAgICByZXR1cm4gX19zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAgX091dEl0ZXIKICAgIG51bV9wdXQ8X0No
YXJULCBfT3V0SXRlcj46OgogICAgZG9fcHV0KGl0ZXJfdHlwZSBfX3MsIGlvc19iYXNlJiBfX2lv
LCBjaGFyX3R5cGUgX19maWxsLCBkb3VibGUgX192KSBjb25zdAogICAgeyByZXR1cm4gX01faW5z
ZXJ0X2Zsb2F0KF9fcywgX19pbywgX19maWxsLCBjaGFyKCksIF9fdik7IH0KIyAxMTUyICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMv
bG9jYWxlX2ZhY2V0cy50Y2MiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9PdXRJdGVyPgogICAgX091dEl0ZXIKICAgIG51bV9wdXQ8X0NoYXJULCBfT3V0SXRlcj46Ogog
ICAgZG9fcHV0KGl0ZXJfdHlwZSBfX3MsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxs
LAogICAgbG9uZyBkb3VibGUgX192KSBjb25zdAogICAgeyByZXR1cm4gX01faW5zZXJ0X2Zsb2F0
KF9fcywgX19pbywgX19maWxsLCAnTCcsIF9fdik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfT3V0SXRlcj4KICAgIF9PdXRJdGVyCiAgICBudW1fcHV0PF9DaGFyVCwg
X091dEl0ZXI+OjoKICAgIGRvX3B1dChpdGVyX3R5cGUgX19zLCBpb3NfYmFzZSYgX19pbywgY2hh
cl90eXBlIF9fZmlsbCwKICAgICAgICAgICBjb25zdCB2b2lkKiBfX3YpIGNvbnN0CiAgICB7CiAg
ICAgIGNvbnN0IGlvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19pby5mbGFncygpOwogICAg
ICBjb25zdCBpb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbXQgPSB+KGlvc19iYXNlOjpiYXNlZmllbGQK
ICAgICAgfCBpb3NfYmFzZTo6dXBwZXJjYXNlKTsKICAgICAgX19pby5mbGFncygoX19mbGFncyAm
IF9fZm10KSB8IChpb3NfYmFzZTo6aGV4IHwgaW9zX2Jhc2U6OnNob3diYXNlKSk7CgogICAgICB0
eXBlZGVmIF9fZ251X2N4eDo6X19jb25kaXRpb25hbF90eXBlPChzaXplb2YoY29uc3Qgdm9pZCop
CiAgICAgICAgICA8PSBzaXplb2YodW5zaWduZWQgbG9uZykpLAogdW5zaWduZWQgbG9uZywgdW5z
aWduZWQgbG9uZyBsb25nPjo6X190eXBlIF9VSW50UHRyVHlwZTsKCiAgICAgIF9fcyA9IF9NX2lu
c2VydF9pbnQoX19zLCBfX2lvLCBfX2ZpbGwsCiAgICAgcmVpbnRlcnByZXRfY2FzdDxfVUludFB0
clR5cGU+KF9fdikpOwogICAgICBfX2lvLmZsYWdzKF9fZmxhZ3MpOwogICAgICByZXR1cm4gX19z
OwogICAgfQoKCiMgMTE4OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL2xvY2FsZV9mYWNldHMudGNjIiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgdm9pZAogICAgX19wYWQ8X0NoYXJU
LCBfVHJhaXRzPjo6X1NfcGFkKGlvc19iYXNlJiBfX2lvLCBfQ2hhclQgX19maWxsLAogICAgICAg
X0NoYXJUKiBfX25ld3MsIGNvbnN0IF9DaGFyVCogX19vbGRzLAogICAgICAgc3RyZWFtc2l6ZSBf
X25ld2xlbiwgc3RyZWFtc2l6ZSBfX29sZGxlbikKICAgIHsKICAgICAgY29uc3Qgc2l6ZV90IF9f
cGxlbiA9IHN0YXRpY19jYXN0PHNpemVfdD4oX19uZXdsZW4gLSBfX29sZGxlbik7CiAgICAgIGNv
bnN0IGlvc19iYXNlOjpmbXRmbGFncyBfX2FkanVzdCA9IF9faW8uZmxhZ3MoKSAmIGlvc19iYXNl
OjphZGp1c3RmaWVsZDsKCgogICAgICBpZiAoX19hZGp1c3QgPT0gaW9zX2Jhc2U6OmxlZnQpCiB7
CiAgIF9UcmFpdHM6OmNvcHkoX19uZXdzLCBfX29sZHMsIF9fb2xkbGVuKTsKICAgX1RyYWl0czo6
YXNzaWduKF9fbmV3cyArIF9fb2xkbGVuLCBfX3BsZW4sIF9fZmlsbCk7CiAgIHJldHVybjsKIH0K
CiAgICAgIHNpemVfdCBfX21vZCA9IDA7CiAgICAgIGlmIChfX2FkanVzdCA9PSBpb3NfYmFzZTo6
aW50ZXJuYWwpCiB7CgoKCiAgICAgICAgICBjb25zdCBsb2NhbGUmIF9fbG9jID0gX19pby5fTV9n
ZXRsb2MoKTsKICAgY29uc3QgY3R5cGU8X0NoYXJUPiYgX19jdHlwZSA9IHVzZV9mYWNldDxjdHlw
ZTxfQ2hhclQ+ID4oX19sb2MpOwoKICAgaWYgKF9fY3R5cGUud2lkZW4oJy0nKSA9PSBfX29sZHNb
MF0KICAgICAgIHx8IF9fY3R5cGUud2lkZW4oJysnKSA9PSBfX29sZHNbMF0pCiAgICAgewogICAg
ICAgX19uZXdzWzBdID0gX19vbGRzWzBdOwogICAgICAgX19tb2QgPSAxOwogICAgICAgKytfX25l
d3M7CiAgICAgfQogICBlbHNlIGlmIChfX2N0eXBlLndpZGVuKCcwJykgPT0gX19vbGRzWzBdCiAg
ICAgJiYgX19vbGRsZW4gPiAxCiAgICAgJiYgKF9fY3R5cGUud2lkZW4oJ3gnKSA9PSBfX29sZHNb
MV0KICAgICAgICAgfHwgX19jdHlwZS53aWRlbignWCcpID09IF9fb2xkc1sxXSkpCiAgICAgewog
ICAgICAgX19uZXdzWzBdID0gX19vbGRzWzBdOwogICAgICAgX19uZXdzWzFdID0gX19vbGRzWzFd
OwogICAgICAgX19tb2QgPSAyOwogICAgICAgX19uZXdzICs9IDI7CiAgICAgfQoKIH0KICAgICAg
X1RyYWl0czo6YXNzaWduKF9fbmV3cywgX19wbGVuLCBfX2ZpbGwpOwogICAgICBfVHJhaXRzOjpj
b3B5KF9fbmV3cyArIF9fcGxlbiwgX19vbGRzICsgX19tb2QsIF9fb2xkbGVuIC0gX19tb2QpOwog
ICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBfQ2hhclQqCiAgICBfX2FkZF9n
cm91cGluZyhfQ2hhclQqIF9fcywgX0NoYXJUIF9fc2VwLAogICAgIGNvbnN0IGNoYXIqIF9fZ2Jl
Zywgc2l6ZV90IF9fZ3NpemUsCiAgICAgY29uc3QgX0NoYXJUKiBfX2ZpcnN0LCBjb25zdCBfQ2hh
clQqIF9fbGFzdCkKICAgIHsKICAgICAgc2l6ZV90IF9faWR4ID0gMDsKICAgICAgc2l6ZV90IF9f
Y3RyID0gMDsKCiAgICAgIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID4gX19nYmVnW19faWR4XQog
ICAgICAmJiBzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4oX19nYmVnW19faWR4XSkgPiAwCiAgICAg
ICYmIF9fZ2JlZ1tfX2lkeF0gIT0gX19nbnVfY3h4OjpfX251bWVyaWNfdHJhaXRzPGNoYXI+Ojpf
X21heCkKIHsKICAgX19sYXN0IC09IF9fZ2JlZ1tfX2lkeF07CiAgIF9faWR4IDwgX19nc2l6ZSAt
IDEgPyArK19faWR4IDogKytfX2N0cjsKIH0KCiAgICAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFz
dCkKICpfX3MrKyA9ICpfX2ZpcnN0Kys7CgogICAgICB3aGlsZSAoX19jdHItLSkKIHsKICAgKl9f
cysrID0gX19zZXA7CiAgIGZvciAoY2hhciBfX2kgPSBfX2diZWdbX19pZHhdOyBfX2kgPiAwOyAt
LV9faSkKICAgICAqX19zKysgPSAqX19maXJzdCsrOwogfQoKICAgICAgd2hpbGUgKF9faWR4LS0p
CiB7CiAgICpfX3MrKyA9IF9fc2VwOwogICBmb3IgKGNoYXIgX19pID0gX19nYmVnW19faWR4XTsg
X19pID4gMDsgLS1fX2kpCiAgICAgKl9fcysrID0gKl9fZmlyc3QrKzsKIH0KCiAgICAgIHJldHVy
biBfX3M7CiAgICB9CgoKCgogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBudW1wdW5jdDxjaGFyPjsK
ICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgbnVtcHVuY3RfYnluYW1lPGNoYXI+OwogIGV4dGVybiB0
ZW1wbGF0ZSBjbGFzcyBudW1fZ2V0PGNoYXI+OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBudW1f
cHV0PGNoYXI+OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBjdHlwZV9ieW5hbWU8Y2hhcj47Cgog
IGV4dGVybiB0ZW1wbGF0ZQogICAgY29uc3QgY3R5cGU8Y2hhcj4mCiAgICB1c2VfZmFjZXQ8Y3R5
cGU8Y2hhcj4gPihjb25zdCBsb2NhbGUmKTsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBjb25zdCBu
dW1wdW5jdDxjaGFyPiYKICAgIHVzZV9mYWNldDxudW1wdW5jdDxjaGFyPiA+KGNvbnN0IGxvY2Fs
ZSYpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGNvbnN0IG51bV9wdXQ8Y2hhcj4mCiAgICB1c2Vf
ZmFjZXQ8bnVtX3B1dDxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOwoKICBleHRlcm4gdGVtcGxhdGUK
ICAgIGNvbnN0IG51bV9nZXQ8Y2hhcj4mCiAgICB1c2VfZmFjZXQ8bnVtX2dldDxjaGFyPiA+KGNv
bnN0IGxvY2FsZSYpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGJvb2wKICAgIGhhc19mYWNldDxj
dHlwZTxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGJvb2wK
ICAgIGhhc19mYWNldDxudW1wdW5jdDxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOwoKICBleHRlcm4g
dGVtcGxhdGUKICAgIGJvb2wKICAgIGhhc19mYWNldDxudW1fcHV0PGNoYXI+ID4oY29uc3QgbG9j
YWxlJik7CgogIGV4dGVybiB0ZW1wbGF0ZQogICAgYm9vbAogICAgaGFzX2ZhY2V0PG51bV9nZXQ8
Y2hhcj4gPihjb25zdCBsb2NhbGUmKTsKCgogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBudW1wdW5j
dDx3Y2hhcl90PjsKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgbnVtcHVuY3RfYnluYW1lPHdjaGFy
X3Q+OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBudW1fZ2V0PHdjaGFyX3Q+OwogIGV4dGVybiB0
ZW1wbGF0ZSBjbGFzcyBudW1fcHV0PHdjaGFyX3Q+OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBj
dHlwZV9ieW5hbWU8d2NoYXJfdD47CgogIGV4dGVybiB0ZW1wbGF0ZQogICAgY29uc3QgY3R5cGU8
d2NoYXJfdD4mCiAgICB1c2VfZmFjZXQ8Y3R5cGU8d2NoYXJfdD4gPihjb25zdCBsb2NhbGUmKTsK
CiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBjb25zdCBudW1wdW5jdDx3Y2hhcl90PiYKICAgIHVzZV9m
YWNldDxudW1wdW5jdDx3Y2hhcl90PiA+KGNvbnN0IGxvY2FsZSYpOwoKICBleHRlcm4gdGVtcGxh
dGUKICAgIGNvbnN0IG51bV9wdXQ8d2NoYXJfdD4mCiAgICB1c2VfZmFjZXQ8bnVtX3B1dDx3Y2hh
cl90PiA+KGNvbnN0IGxvY2FsZSYpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGNvbnN0IG51bV9n
ZXQ8d2NoYXJfdD4mCiAgICB1c2VfZmFjZXQ8bnVtX2dldDx3Y2hhcl90PiA+KGNvbnN0IGxvY2Fs
ZSYpOwoKIGV4dGVybiB0ZW1wbGF0ZQogICAgYm9vbAogICAgaGFzX2ZhY2V0PGN0eXBlPHdjaGFy
X3Q+ID4oY29uc3QgbG9jYWxlJik7CgogIGV4dGVybiB0ZW1wbGF0ZQogICAgYm9vbAogICAgaGFz
X2ZhY2V0PG51bXB1bmN0PHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxlJik7CgogIGV4dGVybiB0ZW1w
bGF0ZQogICAgYm9vbAogICAgaGFzX2ZhY2V0PG51bV9wdXQ8d2NoYXJfdD4gPihjb25zdCBsb2Nh
bGUmKTsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBib29sCiAgICBoYXNfZmFjZXQ8bnVtX2dldDx3
Y2hhcl90PiA+KGNvbnN0IGxvY2FsZSYpOwoKCgoKfQojIDI2MDkgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9sb2NhbGVfZmFjZXRz
LmgiIDIgMwojIDM4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfaW9zLmgiIDIgMwoKCm5hbWVzcGFjZSBzdGQgX19hdHRy
aWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0ZhY2V0PgogICAgaW5saW5lIGNvbnN0IF9GYWNldCYKICAgIF9fY2hlY2tfZmFjZXQo
Y29uc3QgX0ZhY2V0KiBfX2YpCiAgICB7CiAgICAgIGlmICghX19mKQogX190aHJvd19iYWRfY2Fz
dCgpOwogICAgICByZXR1cm4gKl9fZjsKICAgIH0KIyA2NSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX2lvcy5oIiAzCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgY2xhc3MgYmFz
aWNfaW9zIDogcHVibGljIGlvc19iYXNlCiAgICB7CiAgICBwdWJsaWM6CgoKCgoKCiAgICAgIHR5
cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjpp
bnRfdHlwZSBpbnRfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjpwb3NfdHlw
ZSBwb3NfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjpvZmZfdHlwZSBvZmZf
dHlwZTsKICAgICAgdHlwZWRlZiBfVHJhaXRzIHRyYWl0c190eXBlOwoKCgoKCgogICAgICB0eXBl
ZGVmIGN0eXBlPF9DaGFyVD4gX19jdHlwZV90eXBlOwogICAgICB0eXBlZGVmIG51bV9wdXQ8X0No
YXJULCBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVCwgX1RyYWl0cz4gPgogICAgICAgICAgIF9f
bnVtX3B1dF90eXBlOwogICAgICB0eXBlZGVmIG51bV9nZXQ8X0NoYXJULCBpc3RyZWFtYnVmX2l0
ZXJhdG9yPF9DaGFyVCwgX1RyYWl0cz4gPgogICAgICAgICAgIF9fbnVtX2dldF90eXBlOwoKCgog
ICAgcHJvdGVjdGVkOgogICAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4qIF9NX3Rp
ZTsKICAgICAgbXV0YWJsZSBjaGFyX3R5cGUgX01fZmlsbDsKICAgICAgbXV0YWJsZSBib29sIF9N
X2ZpbGxfaW5pdDsKICAgICAgYmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4qIF9NX3N0
cmVhbWJ1ZjsKCgogICAgICBjb25zdCBfX2N0eXBlX3R5cGUqIF9NX2N0eXBlOwoKICAgICAgY29u
c3QgX19udW1fcHV0X3R5cGUqIF9NX251bV9wdXQ7CgogICAgICBjb25zdCBfX251bV9nZXRfdHlw
ZSogX01fbnVtX2dldDsKCiAgICBwdWJsaWM6CgoKCgoKCgogICAgICBvcGVyYXRvciB2b2lkKigp
IGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmZhaWwoKSA/IDAgOiBjb25zdF9jYXN0PGJhc2lj
X2lvcyo+KHRoaXMpOyB9CgogICAgICBib29sCiAgICAgIG9wZXJhdG9yISgpIGNvbnN0CiAgICAg
IHsgcmV0dXJuIHRoaXMtPmZhaWwoKTsgfQojIDEzMCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX2lvcy5oIiAzCiAgICAg
IGlvc3RhdGUKICAgICAgcmRzdGF0ZSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3N0cmVhbWJ1
Zl9zdGF0ZTsgfQojIDE0MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX2lvcy5oIiAzCiAgICAgIHZvaWQKICAgICAgY2xl
YXIoaW9zdGF0ZSBfX3N0YXRlID0gZ29vZGJpdCk7CgoKCgoKCgogICAgICB2b2lkCiAgICAgIHNl
dHN0YXRlKGlvc3RhdGUgX19zdGF0ZSkKICAgICAgeyB0aGlzLT5jbGVhcih0aGlzLT5yZHN0YXRl
KCkgfCBfX3N0YXRlKTsgfQoKCgoKICAgICAgdm9pZAogICAgICBfTV9zZXRzdGF0ZShpb3N0YXRl
IF9fc3RhdGUpCiAgICAgIHsKCgogX01fc3RyZWFtYnVmX3N0YXRlIHw9IF9fc3RhdGU7CiBpZiAo
dGhpcy0+ZXhjZXB0aW9ucygpICYgX19zdGF0ZSkKICAgOwogICAgICB9CgoKCgoKCgogICAgICBi
b29sCiAgICAgIGdvb2QoKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5yZHN0YXRlKCkgPT0g
MDsgfQoKCgoKCgoKICAgICAgYm9vbAogICAgICBlb2YoKSBjb25zdAogICAgICB7IHJldHVybiAo
dGhpcy0+cmRzdGF0ZSgpICYgZW9mYml0KSAhPSAwOyB9CiMgMTk0ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfaW9zLmgi
IDMKICAgICAgYm9vbAogICAgICBmYWlsKCkgY29uc3QKICAgICAgeyByZXR1cm4gKHRoaXMtPnJk
c3RhdGUoKSAmIChiYWRiaXQgfCBmYWlsYml0KSkgIT0gMDsgfQoKCgoKCgoKICAgICAgYm9vbAog
ICAgICBiYWQoKSBjb25zdAogICAgICB7IHJldHVybiAodGhpcy0+cmRzdGF0ZSgpICYgYmFkYml0
KSAhPSAwOyB9CiMgMjE1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfaW9zLmgiIDMKICAgICAgaW9zdGF0ZQogICAgICBl
eGNlcHRpb25zKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fZXhjZXB0aW9uOyB9CiMgMjUwICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2Jp
dHMvYmFzaWNfaW9zLmgiIDMKICAgICAgdm9pZAogICAgICBleGNlcHRpb25zKGlvc3RhdGUgX19l
eGNlcHQpCiAgICAgIHsKICAgICAgICBfTV9leGNlcHRpb24gPSBfX2V4Y2VwdDsKICAgICAgICB0
aGlzLT5jbGVhcihfTV9zdHJlYW1idWZfc3RhdGUpOwogICAgICB9CgoKCgoKCgogICAgICBleHBs
aWNpdAogICAgICBiYXNpY19pb3MoYmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4qIF9f
c2IpCiAgICAgIDogaW9zX2Jhc2UoKSwgX01fdGllKDApLCBfTV9maWxsKCksIF9NX2ZpbGxfaW5p
dChmYWxzZSksIF9NX3N0cmVhbWJ1ZigwKSwKIF9NX2N0eXBlKDApLCBfTV9udW1fcHV0KDApLCBf
TV9udW1fZ2V0KDApCiAgICAgIHsgdGhpcy0+aW5pdChfX3NiKTsgfQoKCgoKCgoKICAgICAgdmly
dHVhbAogICAgICB+YmFzaWNfaW9zKCkgeyB9CiMgMjg4ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfaW9zLmgiIDMKICAg
ICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+KgogICAgICB0aWUoKSBjb25zdAogICAg
ICB7IHJldHVybiBfTV90aWU7IH0KIyAzMDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9iYXNpY19pb3MuaCIgMwogICAgICBiYXNp
Y19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4qCiAgICAgIHRpZShiYXNpY19vc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz4qIF9fdGllc3RyKQogICAgICB7CiAgICAgICAgYmFzaWNfb3N0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+KiBfX29sZCA9IF9NX3RpZTsKICAgICAgICBfTV90aWUgPSBfX3RpZXN0cjsK
ICAgICAgICByZXR1cm4gX19vbGQ7CiAgICAgIH0KCgoKCgoKCiAgICAgIGJhc2ljX3N0cmVhbWJ1
ZjxfQ2hhclQsIF9UcmFpdHM+KgogICAgICByZGJ1ZigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9N
X3N0cmVhbWJ1ZjsgfQojIDM0MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX2lvcy5oIiAzCiAgICAgIGJhc2ljX3N0cmVh
bWJ1ZjxfQ2hhclQsIF9UcmFpdHM+KgogICAgICByZGJ1ZihiYXNpY19zdHJlYW1idWY8X0NoYXJU
LCBfVHJhaXRzPiogX19zYik7CiMgMzU0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfaW9zLmgiIDMKICAgICAgYmFzaWNf
aW9zJgogICAgICBjb3B5Zm10KGNvbnN0IGJhc2ljX2lvcyYgX19yaHMpOwoKCgoKCgoKICAgICAg
Y2hhcl90eXBlCiAgICAgIGZpbGwoKSBjb25zdAogICAgICB7CiBpZiAoIV9NX2ZpbGxfaW5pdCkK
ICAgewogICAgIF9NX2ZpbGwgPSB0aGlzLT53aWRlbignICcpOwogICAgIF9NX2ZpbGxfaW5pdCA9
IHRydWU7CiAgIH0KIHJldHVybiBfTV9maWxsOwogICAgICB9CiMgMzgzICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfaW9z
LmgiIDMKICAgICAgY2hhcl90eXBlCiAgICAgIGZpbGwoY2hhcl90eXBlIF9fY2gpCiAgICAgIHsK
IGNoYXJfdHlwZSBfX29sZCA9IHRoaXMtPmZpbGwoKTsKIF9NX2ZpbGwgPSBfX2NoOwogcmV0dXJu
IF9fb2xkOwogICAgICB9CiMgNDAzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfaW9zLmgiIDMKICAgICAgbG9jYWxlCiAg
ICAgIGltYnVlKGNvbnN0IGxvY2FsZSYgX19sb2MpOwojIDQyMyAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX2lvcy5oIiAz
CiAgICAgIGNoYXIKICAgICAgbmFycm93KGNoYXJfdHlwZSBfX2MsIGNoYXIgX19kZmF1bHQpIGNv
bnN0CiAgICAgIHsgcmV0dXJuIF9fY2hlY2tfZmFjZXQoX01fY3R5cGUpLm5hcnJvdyhfX2MsIF9f
ZGZhdWx0KTsgfQojIDQ0MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX2lvcy5oIiAzCiAgICAgIGNoYXJfdHlwZQogICAg
ICB3aWRlbihjaGFyIF9fYykgY29uc3QKICAgICAgeyByZXR1cm4gX19jaGVja19mYWNldChfTV9j
dHlwZSkud2lkZW4oX19jKTsgfQoKICAgIHByb3RlY3RlZDoKCgoKCgoKCiAgICAgIGJhc2ljX2lv
cygpCiAgICAgIDogaW9zX2Jhc2UoKSwgX01fdGllKDApLCBfTV9maWxsKGNoYXJfdHlwZSgpKSwg
X01fZmlsbF9pbml0KGZhbHNlKSwKIF9NX3N0cmVhbWJ1ZigwKSwgX01fY3R5cGUoMCksIF9NX251
bV9wdXQoMCksIF9NX251bV9nZXQoMCkKICAgICAgeyB9CgoKCgoKCgogICAgICB2b2lkCiAgICAg
IGluaXQoYmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4qIF9fc2IpOwoKICAgICAgdm9p
ZAogICAgICBfTV9jYWNoZV9sb2NhbGUoY29uc3QgbG9jYWxlJiBfX2xvYyk7CiAgICB9OwoKCn0K
CiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL2Jhc2ljX2lvcy50Y2MiIDEgMwojIDMxICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfaW9zLnRjYyIgMwoj
ZGVmaW5lIF9CQVNJQ19JT1NfVENDIDEKCiAgICAgICAKIyAzNCAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2Jhc2ljX2lvcy50Y2Mi
IDMKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVs
dCIpKSkKewoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgog
ICAgdm9pZAogICAgYmFzaWNfaW9zPF9DaGFyVCwgX1RyYWl0cz46OmNsZWFyKGlvc3RhdGUgX19z
dGF0ZSkKICAgIHsKICAgICAgaWYgKHRoaXMtPnJkYnVmKCkpCiBfTV9zdHJlYW1idWZfc3RhdGUg
PSBfX3N0YXRlOwogICAgICBlbHNlCiAgIF9NX3N0cmVhbWJ1Zl9zdGF0ZSA9IF9fc3RhdGUgfCBi
YWRiaXQ7CiAgICAgIGlmICh0aGlzLT5leGNlcHRpb25zKCkgJiB0aGlzLT5yZHN0YXRlKCkpCiBf
X3Rocm93X2lvc19mYWlsdXJlKCgiYmFzaWNfaW9zOjpjbGVhciIpKTsKICAgIH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfc3RyZWFtYnVm
PF9DaGFyVCwgX1RyYWl0cz4qCiAgICBiYXNpY19pb3M8X0NoYXJULCBfVHJhaXRzPjo6cmRidWYo
YmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4qIF9fc2IpCiAgICB7CiAgICAgIGJhc2lj
X3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+KiBfX29sZCA9IF9NX3N0cmVhbWJ1ZjsKICAgICAg
X01fc3RyZWFtYnVmID0gX19zYjsKICAgICAgdGhpcy0+Y2xlYXIoKTsKICAgICAgcmV0dXJuIF9f
b2xkOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+
CiAgICBiYXNpY19pb3M8X0NoYXJULCBfVHJhaXRzPiYKICAgIGJhc2ljX2lvczxfQ2hhclQsIF9U
cmFpdHM+Ojpjb3B5Zm10KGNvbnN0IGJhc2ljX2lvcyYgX19yaHMpCiAgICB7CgoKICAgICAgaWYg
KHRoaXMgIT0gJl9fcmhzKQogewoKCgoKICAgX1dvcmRzKiBfX3dvcmRzID0gKF9fcmhzLl9NX3dv
cmRfc2l6ZSA8PSBfU19sb2NhbF93b3JkX3NpemUpID8KICAgICAgICAgICAgICAgICAgICAgIF9N
X2xvY2FsX3dvcmQgOiBuZXcgX1dvcmRzW19fcmhzLl9NX3dvcmRfc2l6ZV07CgoKICAgX0NhbGxi
YWNrX2xpc3QqIF9fY2IgPSBfX3Jocy5fTV9jYWxsYmFja3M7CiAgIGlmIChfX2NiKQogICAgIF9f
Y2ItPl9NX2FkZF9yZWZlcmVuY2UoKTsKICAgX01fY2FsbF9jYWxsYmFja3MoZXJhc2VfZXZlbnQp
OwogICBpZiAoX01fd29yZCAhPSBfTV9sb2NhbF93b3JkKQogICAgIHsKICAgICAgIGRlbGV0ZSBb
XSBfTV93b3JkOwogICAgICAgX01fd29yZCA9IDA7CiAgICAgfQogICBfTV9kaXNwb3NlX2NhbGxi
YWNrcygpOwoKCiAgIF9NX2NhbGxiYWNrcyA9IF9fY2I7CiAgIGZvciAoaW50IF9faSA9IDA7IF9f
aSA8IF9fcmhzLl9NX3dvcmRfc2l6ZTsgKytfX2kpCiAgICAgX193b3Jkc1tfX2ldID0gX19yaHMu
X01fd29yZFtfX2ldOwogICBfTV93b3JkID0gX193b3JkczsKICAgX01fd29yZF9zaXplID0gX19y
aHMuX01fd29yZF9zaXplOwoKICAgdGhpcy0+ZmxhZ3MoX19yaHMuZmxhZ3MoKSk7CiAgIHRoaXMt
PndpZHRoKF9fcmhzLndpZHRoKCkpOwogICB0aGlzLT5wcmVjaXNpb24oX19yaHMucHJlY2lzaW9u
KCkpOwogICB0aGlzLT50aWUoX19yaHMudGllKCkpOwogICB0aGlzLT5maWxsKF9fcmhzLmZpbGwo
KSk7CiAgIF9NX2lvc19sb2NhbGUgPSBfX3Jocy5nZXRsb2MoKTsKICAgX01fY2FjaGVfbG9jYWxl
KF9NX2lvc19sb2NhbGUpOwoKICAgX01fY2FsbF9jYWxsYmFja3MoY29weWZtdF9ldmVudCk7CgoK
ICAgdGhpcy0+ZXhjZXB0aW9ucyhfX3Jocy5leGNlcHRpb25zKCkpOwogfQogICAgICByZXR1cm4g
KnRoaXM7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHM+CiAgICBsb2NhbGUKICAgIGJhc2ljX2lvczxfQ2hhclQsIF9UcmFpdHM+OjppbWJ1ZShjb25z
dCBsb2NhbGUmIF9fbG9jKQogICAgewogICAgICBsb2NhbGUgX19vbGQodGhpcy0+Z2V0bG9jKCkp
OwogICAgICBpb3NfYmFzZTo6aW1idWUoX19sb2MpOwogICAgICBfTV9jYWNoZV9sb2NhbGUoX19s
b2MpOwogICAgICBpZiAodGhpcy0+cmRidWYoKSAhPSAwKQogdGhpcy0+cmRidWYoKS0+cHViaW1i
dWUoX19sb2MpOwogICAgICByZXR1cm4gX19vbGQ7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHZvaWQKICAgIGJhc2ljX2lvczxfQ2hhclQs
IF9UcmFpdHM+Ojppbml0KGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+KiBfX3NiKQog
ICAgewoKICAgICAgaW9zX2Jhc2U6Ol9NX2luaXQoKTsKCgogICAgICBfTV9jYWNoZV9sb2NhbGUo
X01faW9zX2xvY2FsZSk7CiMgMTQ2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNfaW9zLnRjYyIgMwogICAgICBfTV9maWxs
ID0gX0NoYXJUKCk7CiAgICAgIF9NX2ZpbGxfaW5pdCA9IGZhbHNlOwoKICAgICAgX01fdGllID0g
MDsKICAgICAgX01fZXhjZXB0aW9uID0gZ29vZGJpdDsKICAgICAgX01fc3RyZWFtYnVmID0gX19z
YjsKICAgICAgX01fc3RyZWFtYnVmX3N0YXRlID0gX19zYiA/IGdvb2RiaXQgOiBiYWRiaXQ7CiAg
ICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHZv
aWQKICAgIGJhc2ljX2lvczxfQ2hhclQsIF9UcmFpdHM+OjpfTV9jYWNoZV9sb2NhbGUoY29uc3Qg
bG9jYWxlJiBfX2xvYykKICAgIHsKICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoaGFzX2ZhY2V0
PF9fY3R5cGVfdHlwZT4oX19sb2MpLCB0cnVlKSkKIF9NX2N0eXBlID0gJnVzZV9mYWNldDxfX2N0
eXBlX3R5cGU+KF9fbG9jKTsKICAgICAgZWxzZQogX01fY3R5cGUgPSAwOwoKICAgICAgaWYgKF9f
YnVpbHRpbl9leHBlY3QoaGFzX2ZhY2V0PF9fbnVtX3B1dF90eXBlPihfX2xvYyksIHRydWUpKQog
X01fbnVtX3B1dCA9ICZ1c2VfZmFjZXQ8X19udW1fcHV0X3R5cGU+KF9fbG9jKTsKICAgICAgZWxz
ZQogX01fbnVtX3B1dCA9IDA7CgogICAgICBpZiAoX19idWlsdGluX2V4cGVjdChoYXNfZmFjZXQ8
X19udW1fZ2V0X3R5cGU+KF9fbG9jKSwgdHJ1ZSkpCiBfTV9udW1fZ2V0ID0gJnVzZV9mYWNldDxf
X251bV9nZXRfdHlwZT4oX19sb2MpOwogICAgICBlbHNlCiBfTV9udW1fZ2V0ID0gMDsKICAgIH0K
CgoKCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGJhc2ljX2lvczxjaGFyPjsKCgogIGV4dGVybiB0
ZW1wbGF0ZSBjbGFzcyBiYXNpY19pb3M8d2NoYXJfdD47CgoKCgp9CiMgNDc2ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvYmFzaWNf
aW9zLmgiIDIgMwojIDQ1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2lvcyIgMiAzCiMgMzkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvb3N0cmVhbSIgMiAzCgoKbmFtZXNwYWNlIHN0
ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgojIDU3ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL29z
dHJlYW0iIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAg
ICBjbGFzcyBiYXNpY19vc3RyZWFtIDogdmlydHVhbCBwdWJsaWMgYmFzaWNfaW9zPF9DaGFyVCwg
X1RyYWl0cz4KICAgIHsKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlw
ZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjppbnRfdHlwZSBpbnRfdHlwZTsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjpwb3NfdHlwZSBwb3NfdHlwZTsKICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjpvZmZfdHlwZSBvZmZfdHlwZTsKICAgICAgdHlwZWRlZiBf
VHJhaXRzIHRyYWl0c190eXBlOwoKCiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyZWFtYnVmPF9DaGFy
VCwgX1RyYWl0cz4gX19zdHJlYW1idWZfdHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19pb3M8X0No
YXJULCBfVHJhaXRzPiBfX2lvc190eXBlOwogICAgICB0eXBlZGVmIGJhc2ljX29zdHJlYW08X0No
YXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiBudW1fcHV0PF9DaGFy
VCwgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQsIF9UcmFpdHM+ID4KICAgICAgICAgICAgIF9f
bnVtX3B1dF90eXBlOwogICAgICB0eXBlZGVmIGN0eXBlPF9DaGFyVD4gX19jdHlwZV90eXBlOwoj
IDgzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OS4zL29zdHJlYW0iIDMKICAgICAgZXhwbGljaXQKICAgICAgYmFzaWNfb3N0cmVhbShfX3N0cmVh
bWJ1Zl90eXBlKiBfX3NiKQogICAgICB7IHRoaXMtPmluaXQoX19zYik7IH0KCgoKCgoKICAgICAg
dmlydHVhbAogICAgICB+YmFzaWNfb3N0cmVhbSgpIHsgfQoKCiAgICAgIGNsYXNzIHNlbnRyeTsK
ICAgICAgZnJpZW5kIGNsYXNzIHNlbnRyeTsKIyAxMDcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvb3N0cmVhbSIgMwogICAgICBfX29zdHJl
YW1fdHlwZSYKICAgICAgb3BlcmF0b3I8PChfX29zdHJlYW1fdHlwZSYgKCpfX3BmKShfX29zdHJl
YW1fdHlwZSYpKQogICAgICB7CgoKCiByZXR1cm4gX19wZigqdGhpcyk7CiAgICAgIH0KCiAgICAg
IF9fb3N0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcjw8KF9faW9zX3R5cGUmICgqX19wZikoX19p
b3NfdHlwZSYpKQogICAgICB7CgoKCiBfX3BmKCp0aGlzKTsKIHJldHVybiAqdGhpczsKICAgICAg
fQoKICAgICAgX19vc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPDwoaW9zX2Jhc2UmICgqX19w
ZikgKGlvc19iYXNlJikpCiAgICAgIHsKCgoKIF9fcGYoKnRoaXMpOwogcmV0dXJuICp0aGlzOwog
ICAgICB9CiMgMTY1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL29zdHJlYW0iIDMKICAgICAgX19vc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJh
dG9yPDwobG9uZyBfX24pCiAgICAgIHsgcmV0dXJuIF9NX2luc2VydChfX24pOyB9CgogICAgICBf
X29zdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nIF9fbikKICAgICAg
eyByZXR1cm4gX01faW5zZXJ0KF9fbik7IH0KCiAgICAgIF9fb3N0cmVhbV90eXBlJgogICAgICBv
cGVyYXRvcjw8KGJvb2wgX19uKQogICAgICB7IHJldHVybiBfTV9pbnNlcnQoX19uKTsgfQoKICAg
ICAgX19vc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPDwoc2hvcnQgX19uKTsKCiAgICAgIF9f
b3N0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcjw8KHVuc2lnbmVkIHNob3J0IF9fbikKICAgICAg
ewoKCiByZXR1cm4gX01faW5zZXJ0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KF9fbikpOwog
ICAgICB9CgogICAgICBfX29zdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I8PChpbnQgX19uKTsK
CiAgICAgIF9fb3N0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcjw8KHVuc2lnbmVkIGludCBfX24p
CiAgICAgIHsKCgogcmV0dXJuIF9NX2luc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihf
X24pKTsKICAgICAgfQoKCiAgICAgIF9fb3N0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcjw8KGxv
bmcgbG9uZyBfX24pCiAgICAgIHsgcmV0dXJuIF9NX2luc2VydChfX24pOyB9CgogICAgICBfX29z
dHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nIGxvbmcgX19uKQogICAg
ICB7IHJldHVybiBfTV9pbnNlcnQoX19uKTsgfQojIDIxOSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9vc3RyZWFtIiAzCiAgICAgIF9fb3N0
cmVhbV90eXBlJgogICAgICBvcGVyYXRvcjw8KGRvdWJsZSBfX2YpCiAgICAgIHsgcmV0dXJuIF9N
X2luc2VydChfX2YpOyB9CgogICAgICBfX29zdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I8PChm
bG9hdCBfX2YpCiAgICAgIHsKCgogcmV0dXJuIF9NX2luc2VydChzdGF0aWNfY2FzdDxkb3VibGU+
KF9fZikpOwogICAgICB9CgogICAgICBfX29zdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I8PChs
b25nIGRvdWJsZSBfX2YpCiAgICAgIHsgcmV0dXJuIF9NX2luc2VydChfX2YpOyB9CiMgMjQ0ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL29z
dHJlYW0iIDMKICAgICAgX19vc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPDwoY29uc3Qgdm9p
ZCogX19wKQogICAgICB7IHJldHVybiBfTV9pbnNlcnQoX19wKTsgfQojIDI2OSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9vc3RyZWFtIiAz
CiAgICAgIF9fb3N0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcjw8KF9fc3RyZWFtYnVmX3R5cGUq
IF9fc2IpOwojIDMwMiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9vc3RyZWFtIiAzCiAgICAgIF9fb3N0cmVhbV90eXBlJgogICAgICBwdXQo
Y2hhcl90eXBlIF9fYyk7CgoKCgoKCiAgICAgIHZvaWQKICAgICAgX01fd3JpdGUoY29uc3QgY2hh
cl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uKQogICAgICB7CiBjb25zdCBzdHJlYW1zaXplIF9f
cHV0ID0gdGhpcy0+cmRidWYoKS0+c3B1dG4oX19zLCBfX24pOwogaWYgKF9fcHV0ICE9IF9fbikK
ICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgIH0KIyAzMzQgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvb3N0cmVh
bSIgMwogICAgICBfX29zdHJlYW1fdHlwZSYKICAgICAgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBf
X3MsIHN0cmVhbXNpemUgX19uKTsKIyAzNDcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvb3N0cmVhbSIgMwogICAgICBfX29zdHJlYW1fdHlw
ZSYKICAgICAgZmx1c2goKTsKIyAzNTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvb3N0cmVhbSIgMwogICAgICBwb3NfdHlwZQogICAgICB0
ZWxscCgpOwojIDM2OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9vc3RyZWFtIiAzCiAgICAgIF9fb3N0cmVhbV90eXBlJgogICAgICBzZWVr
cChwb3NfdHlwZSk7CiMgMzgwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL29zdHJlYW0iIDMKICAgICAgIF9fb3N0cmVhbV90eXBlJgogICAg
ICBzZWVrcChvZmZfdHlwZSwgaW9zX2Jhc2U6OnNlZWtkaXIpOwoKICAgIHByb3RlY3RlZDoKICAg
ICAgYmFzaWNfb3N0cmVhbSgpCiAgICAgIHsgdGhpcy0+aW5pdCgwKTsgfQoKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1ZhbHVlVD4KIF9fb3N0cmVhbV90eXBlJgogX01faW5zZXJ0KF9WYWx1ZVQg
X192KTsKICAgIH07CiMgMzk5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL29zdHJlYW0iIDMKICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzPgogICAgY2xhc3MgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+OjpzZW50cnkKICAgIHsKCiAgICAgIGJvb2wgX01fb2s7CiAgICAgIGJhc2ljX29zdHJlYW08
X0NoYXJULCBfVHJhaXRzPiYgX01fb3M7CgogICAgcHVibGljOgojIDQxOCAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9vc3RyZWFtIiAzCiAg
ICAgIGV4cGxpY2l0CiAgICAgIHNlbnRyeShiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
IF9fb3MpOwojIDQyOCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9vc3RyZWFtIiAzCiAgICAgIH5zZW50cnkoKQogICAgICB7CgogaWYgKGJv
b2woX01fb3MuZmxhZ3MoKSAmIGlvc19iYXNlOjp1bml0YnVmKSAmJiAhdW5jYXVnaHRfZXhjZXB0
aW9uKCkpCiAgIHsKCiAgICAgaWYgKF9NX29zLnJkYnVmKCkgJiYgX01fb3MucmRidWYoKS0+cHVi
c3luYygpID09IC0xKQogICAgICAgX01fb3Muc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAg
IH0KICAgICAgfQojIDQ0NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9vc3RyZWFtIiAzCiAgICAgIGV4cGxpY2l0CgogICAgICBvcGVyYXRv
ciBib29sKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fb2s7IH0KICAgIH07CiMgNDY5ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL29zdHJl
YW0iIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBp
bmxpbmUgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChiYXNp
Y19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3V0LCBfQ2hhclQgX19jKQogICAgeyByZXR1
cm4gX19vc3RyZWFtX2luc2VydChfX291dCwgJl9fYywgMSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgaW5saW5lIGJhc2ljX29zdHJlYW08X0No
YXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+JiBfX291dCwgY2hhciBfX2MpCiAgICB7IHJldHVybiAoX19vdXQgPDwgX19vdXQud2lkZW4o
X19jKSk7IH0KCgogIHRlbXBsYXRlIDxjbGFzcyBfVHJhaXRzPgogICAgaW5saW5lIGJhc2ljX29z
dHJlYW08Y2hhciwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08Y2hhciwg
X1RyYWl0cz4mIF9fb3V0LCBjaGFyIF9fYykKICAgIHsgcmV0dXJuIF9fb3N0cmVhbV9pbnNlcnQo
X19vdXQsICZfX2MsIDEpOyB9CgoKICB0ZW1wbGF0ZTxjbGFzcyBfVHJhaXRzPgogICAgaW5saW5l
IGJhc2ljX29zdHJlYW08Y2hhciwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJl
YW08Y2hhciwgX1RyYWl0cz4mIF9fb3V0LCBzaWduZWQgY2hhciBfX2MpCiAgICB7IHJldHVybiAo
X19vdXQgPDwgc3RhdGljX2Nhc3Q8Y2hhcj4oX19jKSk7IH0KCiAgdGVtcGxhdGU8Y2xhc3MgX1Ry
YWl0cz4KICAgIGlubGluZSBiYXNpY19vc3RyZWFtPGNoYXIsIF9UcmFpdHM+JgogICAgb3BlcmF0
b3I8PChiYXNpY19vc3RyZWFtPGNoYXIsIF9UcmFpdHM+JiBfX291dCwgdW5zaWduZWQgY2hhciBf
X2MpCiAgICB7IHJldHVybiAoX19vdXQgPDwgc3RhdGljX2Nhc3Q8Y2hhcj4oX19jKSk7IH0KIyA1
MTEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvb3N0cmVhbSIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cz4KICAgIGlubGluZSBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRv
cjw8KGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vdXQsIGNvbnN0IF9DaGFyVCog
X19zKQogICAgewogICAgICBpZiAoIV9fcykKIF9fb3V0LnNldHN0YXRlKGlvc19iYXNlOjpiYWRi
aXQpOwogICAgICBlbHNlCiBfX29zdHJlYW1faW5zZXJ0KF9fb3V0LCBfX3MsCiAgICBzdGF0aWNf
Y2FzdDxzdHJlYW1zaXplPihfVHJhaXRzOjpsZW5ndGgoX19zKSkpOwogICAgICByZXR1cm4gX19v
dXQ7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4K
ICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiAmCiAgICBvcGVyYXRvcjw8KGJhc2lj
X29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vdXQsIGNvbnN0IGNoYXIqIF9fcyk7CgoKICB0
ZW1wbGF0ZTxjbGFzcyBfVHJhaXRzPgogICAgaW5saW5lIGJhc2ljX29zdHJlYW08Y2hhciwgX1Ry
YWl0cz4mCiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08Y2hhciwgX1RyYWl0cz4mIF9fb3V0
LCBjb25zdCBjaGFyKiBfX3MpCiAgICB7CiAgICAgIGlmICghX19zKQogX19vdXQuc2V0c3RhdGUo
aW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgIGVsc2UKIF9fb3N0cmVhbV9pbnNlcnQoX19vdXQsIF9f
cywKICAgIHN0YXRpY19jYXN0PHN0cmVhbXNpemU+KF9UcmFpdHM6Omxlbmd0aChfX3MpKSk7CiAg
ICAgIHJldHVybiBfX291dDsKICAgIH0KCgogIHRlbXBsYXRlPGNsYXNzIF9UcmFpdHM+CiAgICBp
bmxpbmUgYmFzaWNfb3N0cmVhbTxjaGFyLCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoYmFzaWNf
b3N0cmVhbTxjaGFyLCBfVHJhaXRzPiYgX19vdXQsIGNvbnN0IHNpZ25lZCBjaGFyKiBfX3MpCiAg
ICB7IHJldHVybiAoX19vdXQgPDwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oX19zKSk7
IH0KCiAgdGVtcGxhdGU8Y2xhc3MgX1RyYWl0cz4KICAgIGlubGluZSBiYXNpY19vc3RyZWFtPGNo
YXIsIF9UcmFpdHM+ICYKICAgIG9wZXJhdG9yPDwoYmFzaWNfb3N0cmVhbTxjaGFyLCBfVHJhaXRz
PiYgX19vdXQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fcykKICAgIHsgcmV0dXJuIChfX291dCA8
PCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihfX3MpKTsgfQojIDU2MiAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9vc3RyZWFtIiAz
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgaW5saW5l
IGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIGVuZGwoYmFzaWNfb3N0cmVhbTxf
Q2hhclQsIF9UcmFpdHM+JiBfX29zKQogICAgeyByZXR1cm4gZmx1c2goX19vcy5wdXQoX19vcy53
aWRlbignXG4nKSkpOyB9CiMgNTc0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL29zdHJlYW0iIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBpbmxpbmUgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9U
cmFpdHM+JgogICAgZW5kcyhiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MpCiAg
ICB7IHJldHVybiBfX29zLnB1dChfQ2hhclQoKSk7IH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBpbmxpbmUgYmFzaWNfb3N0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+JgogICAgZmx1c2goYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBf
X29zKQogICAgeyByZXR1cm4gX19vcy5mbHVzaCgpOyB9CiMgNjAwICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL29zdHJlYW0iIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9UcD4KICAg
IGlubGluZSBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KGJh
c2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYmIF9fb3MsIGNvbnN0IF9UcCYgX194KQogICAg
ewogICAgICBfX29zIDw8IF9feDsKICAgICAgcmV0dXJuIF9fb3M7CiAgICB9CgoKCn0KCiMgMSAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9i
aXRzL29zdHJlYW0udGNjIiAxIDMKIyAzNSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL29zdHJlYW0udGNjIiAzCiNkZWZpbmUgX09T
VFJFQU1fVENDIDEKCiAgICAgICAKIyAzOCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL29zdHJlYW0udGNjIiAzCgoKCm5hbWVzcGFj
ZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfb3N0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjpzZW50cnk6OgogICAgc2VudHJ5KGJhc2ljX29zdHJlYW08
X0NoYXJULCBfVHJhaXRzPiYgX19vcykKICAgIDogX01fb2soZmFsc2UpLCBfTV9vcyhfX29zKQog
ICAgewoKICAgICAgaWYgKF9fb3MudGllKCkgJiYgX19vcy5nb29kKCkpCiBfX29zLnRpZSgpLT5m
bHVzaCgpOwoKICAgICAgaWYgKF9fb3MuZ29vZCgpKQogX01fb2sgPSB0cnVlOwogICAgICBlbHNl
CiBfX29zLnNldHN0YXRlKGlvc19iYXNlOjpmYWlsYml0KTsKICAgIH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Zh
bHVlVD4KICAgICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgICBiYXNpY19v
c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OgogICAgICBfTV9pbnNlcnQoX1ZhbHVlVCBfX3YpCiAg
ICAgIHsKIHNlbnRyeSBfX2NlcmIoKnRoaXMpOwogaWYgKF9fY2VyYikKICAgewogICAgIGlvc19i
YXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6Omdvb2RiaXQ7CiAgICAgaWYgKHRydWUpCiAg
ICAgICB7CiAgY29uc3QgX19udW1fcHV0X3R5cGUmIF9fbnAgPSBfX2NoZWNrX2ZhY2V0KHRoaXMt
Pl9NX251bV9wdXQpOwogIGlmIChfX25wLnB1dCgqdGhpcywgKnRoaXMsIHRoaXMtPmZpbGwoKSwg
X192KS5mYWlsZWQoKSkKICAgIF9fZXJyIHw9IGlvc19iYXNlOjpiYWRiaXQ7CiAgICAgICB9CiAg
ICAgaWYgKGZhbHNlKQogICAgICAgewogIHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRi
aXQpOwogIDsKICAgICAgIH0KICAgICBpZiAoZmFsc2UpCiAgICAgICB7IHRoaXMtPl9NX3NldHN0
YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiAgICAgaWYgKF9fZXJyKQogICAgICAgdGhpcy0+c2V0
c3RhdGUoX19lcnIpOwogICB9CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+JgogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIG9wZXJh
dG9yPDwoc2hvcnQgX19uKQogICAgewoKCiAgICAgIGNvbnN0IGlvc19iYXNlOjpmbXRmbGFncyBf
X2ZtdCA9IHRoaXMtPmZsYWdzKCkgJiBpb3NfYmFzZTo6YmFzZWZpZWxkOwogICAgICBpZiAoX19m
bXQgPT0gaW9zX2Jhc2U6Om9jdCB8fCBfX2ZtdCA9PSBpb3NfYmFzZTo6aGV4KQogcmV0dXJuIF9N
X2luc2VydChzdGF0aWNfY2FzdDxsb25nPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oX19u
KSkpOwogICAgICBlbHNlCiByZXR1cm4gX01faW5zZXJ0KHN0YXRpY19jYXN0PGxvbmc+KF9fbikp
OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAg
ICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBiYXNpY19vc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz46OgogICAgb3BlcmF0b3I8PChpbnQgX19uKQogICAgewoKCiAgICAgIGNvbnN0
IGlvc19iYXNlOjpmbXRmbGFncyBfX2ZtdCA9IHRoaXMtPmZsYWdzKCkgJiBpb3NfYmFzZTo6YmFz
ZWZpZWxkOwogICAgICBpZiAoX19mbXQgPT0gaW9zX2Jhc2U6Om9jdCB8fCBfX2ZtdCA9PSBpb3Nf
YmFzZTo6aGV4KQogcmV0dXJuIF9NX2luc2VydChzdGF0aWNfY2FzdDxsb25nPihzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KF9fbikpKTsKICAgICAgZWxzZQogcmV0dXJuIF9NX2luc2VydChzdGF0
aWNfY2FzdDxsb25nPihfX24pKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAg
YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIG9wZXJhdG9yPDwoX19zdHJlYW1i
dWZfdHlwZSogX19zYmluKQogICAgewogICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlv
c19iYXNlOjpnb29kYml0OwogICAgICBzZW50cnkgX19jZXJiKCp0aGlzKTsKICAgICAgaWYgKF9f
Y2VyYiAmJiBfX3NiaW4pCiB7CiAgIGlmICh0cnVlKQogICAgIHsKICAgICAgIGlmICghX19jb3B5
X3N0cmVhbWJ1ZnMoX19zYmluLCB0aGlzLT5yZGJ1ZigpKSkKICBfX2VyciB8PSBpb3NfYmFzZTo6
ZmFpbGJpdDsKICAgICB9CiAgIGlmIChmYWxzZSkKICAgICB7CiAgICAgICB0aGlzLT5fTV9zZXRz
dGF0ZShpb3NfYmFzZTo6YmFkYml0KTsKICAgICAgIDsKICAgICB9CiAgIGlmIChmYWxzZSkKICAg
ICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpmYWlsYml0KTsgfQogfQogICAgICBlbHNl
IGlmICghX19zYmluKQogX19lcnIgfD0gaW9zX2Jhc2U6OmJhZGJpdDsKICAgICAgaWYgKF9fZXJy
KQogdGhpcy0+c2V0c3RhdGUoX19lcnIpOwogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX29zdHJl
YW08X0NoYXJULCBfVHJhaXRzPiYKICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6
CiAgICBwdXQoY2hhcl90eXBlIF9fYykKICAgIHsKCgoKCgoKICAgICAgc2VudHJ5IF9fY2VyYigq
dGhpcyk7CiAgICAgIGlmIChfX2NlcmIpCiB7CiAgIGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0g
aW9zX2Jhc2U6Omdvb2RiaXQ7CiAgIGlmICh0cnVlKQogICAgIHsKICAgICAgIGNvbnN0IGludF90
eXBlIF9fcHV0ID0gdGhpcy0+cmRidWYoKS0+c3B1dGMoX19jKTsKICAgICAgIGlmICh0cmFpdHNf
dHlwZTo6ZXFfaW50X3R5cGUoX19wdXQsIHRyYWl0c190eXBlOjplb2YoKSkpCiAgX19lcnIgfD0g
aW9zX2Jhc2U6OmJhZGJpdDsKICAgICB9CiAgIGlmIChmYWxzZSkKICAgICB7CiAgICAgICB0aGlz
LT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsKICAgICAgIDsKICAgICB9CiAgIGlmIChm
YWxzZSkKICAgICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiAgIGlm
IChfX2VycikKICAgICB0aGlzLT5zZXRzdGF0ZShfX2Vycik7CiB9CiAgICAgIHJldHVybiAqdGhp
czsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgog
ICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfb3N0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+OjoKICAgIHdyaXRlKGNvbnN0IF9DaGFyVCogX19zLCBzdHJlYW1zaXplIF9f
bikKICAgIHsKCgoKCgoKCiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMpOwogICAgICBpZiAoX19j
ZXJiKQogewogICBpZiAodHJ1ZSkKICAgICB7IF9NX3dyaXRlKF9fcywgX19uKTsgfQogICBpZiAo
ZmFsc2UpCiAgICAgewogICAgICAgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7
CiAgICAgICA7CiAgICAgfQogICBpZiAoZmFsc2UpCiAgICAgeyB0aGlzLT5fTV9zZXRzdGF0ZShp
b3NfYmFzZTo6YmFkYml0KTsgfQogfQogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX29zdHJlYW08
X0NoYXJULCBfVHJhaXRzPiYKICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6CiAg
ICBmbHVzaCgpCiAgICB7CgoKCiAgICAgIGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jh
c2U6Omdvb2RiaXQ7CiAgICAgIGlmICh0cnVlKQogewogICBpZiAodGhpcy0+cmRidWYoKSAmJiB0
aGlzLT5yZGJ1ZigpLT5wdWJzeW5jKCkgPT0gLTEpCiAgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmJh
ZGJpdDsKIH0KICAgICAgaWYgKGZhbHNlKQogewogICB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFz
ZTo6YmFkYml0KTsKICAgOwogfQogICAgICBpZiAoZmFsc2UpCiB7IHRoaXMtPl9NX3NldHN0YXRl
KGlvc19iYXNlOjpiYWRiaXQpOyB9CiAgICAgIGlmIChfX2VycikKIHRoaXMtPnNldHN0YXRlKF9f
ZXJyKTsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICB0eXBlbmFtZSBiYXNpY19vc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz46OnBvc190eXBlCiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46Ogog
ICAgdGVsbHAoKQogICAgewogICAgICBwb3NfdHlwZSBfX3JldCA9IHBvc190eXBlKC0xKTsKICAg
ICAgaWYgKHRydWUpCiB7CiAgIGlmICghdGhpcy0+ZmFpbCgpKQogICAgIF9fcmV0ID0gdGhpcy0+
cmRidWYoKS0+cHVic2Vla29mZigwLCBpb3NfYmFzZTo6Y3VyLCBpb3NfYmFzZTo6b3V0KTsKIH0K
ICAgICAgaWYgKGZhbHNlKQogewogICB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0
KTsKICAgOwogfQogICAgICBpZiAoZmFsc2UpCiB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNl
OjpiYWRiaXQpOyB9CiAgICAgIHJldHVybiBfX3JldDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9U
cmFpdHM+JgogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIHNlZWtwKHBv
c190eXBlIF9fcG9zKQogICAgewogICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19i
YXNlOjpnb29kYml0OwogICAgICBpZiAodHJ1ZSkKIHsKICAgaWYgKCF0aGlzLT5mYWlsKCkpCiAg
ICAgewoKCiAgICAgICBjb25zdCBwb3NfdHlwZSBfX3AgPSB0aGlzLT5yZGJ1ZigpLT5wdWJzZWVr
cG9zKF9fcG9zLAogICAgICAgICAgICBpb3NfYmFzZTo6b3V0KTsKCgogICAgICAgaWYgKF9fcCA9
PSBwb3NfdHlwZShvZmZfdHlwZSgtMSkpKQogIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0Owog
ICAgIH0KIH0KICAgICAgaWYgKGZhbHNlKQogewogICB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFz
ZTo6YmFkYml0KTsKICAgOwogfQogICAgICBpZiAoZmFsc2UpCiB7IHRoaXMtPl9NX3NldHN0YXRl
KGlvc19iYXNlOjpiYWRiaXQpOyB9CiAgICAgIGlmIChfX2VycikKIHRoaXMtPnNldHN0YXRlKF9f
ZXJyKTsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
CiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OgogICAgc2Vla3Aob2ZmX3R5cGUg
X19vZmYsIGlvc19iYXNlOjpzZWVrZGlyIF9fZGlyKQogICAgewogICAgICBpb3NfYmFzZTo6aW9z
dGF0ZSBfX2VyciA9IGlvc19iYXNlOjpnb29kYml0OwogICAgICBpZiAodHJ1ZSkKIHsKICAgaWYg
KCF0aGlzLT5mYWlsKCkpCiAgICAgewoKCiAgICAgICBjb25zdCBwb3NfdHlwZSBfX3AgPSB0aGlz
LT5yZGJ1ZigpLT5wdWJzZWVrb2ZmKF9fb2ZmLCBfX2RpciwKICAgICAgICAgICAgaW9zX2Jhc2U6
Om91dCk7CgoKICAgICAgIGlmIChfX3AgPT0gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKSkKICBfX2Vy
ciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKICAgICB9CiB9CiAgICAgIGlmIChmYWxzZSkKIHsKICAg
dGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgIDsKIH0KICAgICAgaWYgKGZh
bHNlKQogeyB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsgfQogICAgICBpZiAo
X19lcnIpCiB0aGlzLT5zZXRzdGF0ZShfX2Vycik7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNf
b3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChiYXNpY19vc3RyZWFtPF9D
aGFyVCwgX1RyYWl0cz4mIF9fb3V0LCBjb25zdCBjaGFyKiBfX3MpCiAgICB7CiAgICAgIGlmICgh
X19zKQogX19vdXQuc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgIGVsc2UKIHsKCgog
ICBjb25zdCBzaXplX3QgX19jbGVuID0gY2hhcl90cmFpdHM8Y2hhcj46Omxlbmd0aChfX3MpOwog
ICBpZiAodHJ1ZSkKICAgICB7CiAgICAgICBzdHJ1Y3QgX19wdHJfZ3VhcmQKICAgICAgIHsKICBf
Q2hhclQgKl9fcDsKICBfX3B0cl9ndWFyZCAoX0NoYXJUICpfX2lwKTogX19wKF9faXApIHsgfQog
IH5fX3B0cl9ndWFyZCgpIHsgZGVsZXRlW10gX19wOyB9CiAgX0NoYXJUKiBfX2dldCgpIHsgcmV0
dXJuIF9fcDsgfQogICAgICAgfSBfX3BnIChuZXcgX0NoYXJUW19fY2xlbl0pOwoKICAgICAgIF9D
aGFyVCAqX193cyA9IF9fcGcuX19nZXQoKTsKICAgICAgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9f
aSA8IF9fY2xlbjsgKytfX2kpCiAgX193c1tfX2ldID0gX19vdXQud2lkZW4oX19zW19faV0pOwog
ICAgICAgX19vc3RyZWFtX2luc2VydChfX291dCwgX193cywgX19jbGVuKTsKICAgICB9CiAgIGlm
IChmYWxzZSkKICAgICB7CiAgICAgICBfX291dC5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0
KTsKICAgICAgIDsKICAgICB9CiAgIGlmIChmYWxzZSkKICAgICB7IF9fb3V0Ll9NX3NldHN0YXRl
KGlvc19iYXNlOjpiYWRiaXQpOyB9CiB9CiAgICAgIHJldHVybiBfX291dDsKICAgIH0KCgoKCiAg
ZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGJhc2ljX29zdHJlYW08Y2hhcj47CiAgZXh0ZXJuIHRlbXBs
YXRlIG9zdHJlYW0mIGVuZGwob3N0cmVhbSYpOwogIGV4dGVybiB0ZW1wbGF0ZSBvc3RyZWFtJiBl
bmRzKG9zdHJlYW0mKTsKICBleHRlcm4gdGVtcGxhdGUgb3N0cmVhbSYgZmx1c2gob3N0cmVhbSYp
OwogIGV4dGVybiB0ZW1wbGF0ZSBvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mLCBjaGFyKTsK
ICBleHRlcm4gdGVtcGxhdGUgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiwgdW5zaWduZWQg
Y2hhcik7CiAgZXh0ZXJuIHRlbXBsYXRlIG9zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYsIHNp
Z25lZCBjaGFyKTsKICBleHRlcm4gdGVtcGxhdGUgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFt
JiwgY29uc3QgY2hhciopOwogIGV4dGVybiB0ZW1wbGF0ZSBvc3RyZWFtJiBvcGVyYXRvcjw8KG9z
dHJlYW0mLCBjb25zdCB1bnNpZ25lZCBjaGFyKik7CiAgZXh0ZXJuIHRlbXBsYXRlIG9zdHJlYW0m
IG9wZXJhdG9yPDwob3N0cmVhbSYsIGNvbnN0IHNpZ25lZCBjaGFyKik7CgogIGV4dGVybiB0ZW1w
bGF0ZSBvc3RyZWFtJiBvc3RyZWFtOjpfTV9pbnNlcnQobG9uZyk7CiAgZXh0ZXJuIHRlbXBsYXRl
IG9zdHJlYW0mIG9zdHJlYW06Ol9NX2luc2VydCh1bnNpZ25lZCBsb25nKTsKICBleHRlcm4gdGVt
cGxhdGUgb3N0cmVhbSYgb3N0cmVhbTo6X01faW5zZXJ0KGJvb2wpOwoKICBleHRlcm4gdGVtcGxh
dGUgb3N0cmVhbSYgb3N0cmVhbTo6X01faW5zZXJ0KGxvbmcgbG9uZyk7CiAgZXh0ZXJuIHRlbXBs
YXRlIG9zdHJlYW0mIG9zdHJlYW06Ol9NX2luc2VydCh1bnNpZ25lZCBsb25nIGxvbmcpOwoKICBl
eHRlcm4gdGVtcGxhdGUgb3N0cmVhbSYgb3N0cmVhbTo6X01faW5zZXJ0KGRvdWJsZSk7CiAgZXh0
ZXJuIHRlbXBsYXRlIG9zdHJlYW0mIG9zdHJlYW06Ol9NX2luc2VydChsb25nIGRvdWJsZSk7CiAg
ZXh0ZXJuIHRlbXBsYXRlIG9zdHJlYW0mIG9zdHJlYW06Ol9NX2luc2VydChjb25zdCB2b2lkKik7
CgoKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgYmFzaWNfb3N0cmVhbTx3Y2hhcl90PjsKICBleHRl
cm4gdGVtcGxhdGUgd29zdHJlYW0mIGVuZGwod29zdHJlYW0mKTsKICBleHRlcm4gdGVtcGxhdGUg
d29zdHJlYW0mIGVuZHMod29zdHJlYW0mKTsKICBleHRlcm4gdGVtcGxhdGUgd29zdHJlYW0mIGZs
dXNoKHdvc3RyZWFtJik7CiAgZXh0ZXJuIHRlbXBsYXRlIHdvc3RyZWFtJiBvcGVyYXRvcjw8KHdv
c3RyZWFtJiwgd2NoYXJfdCk7CiAgZXh0ZXJuIHRlbXBsYXRlIHdvc3RyZWFtJiBvcGVyYXRvcjw8
KHdvc3RyZWFtJiwgY2hhcik7CiAgZXh0ZXJuIHRlbXBsYXRlIHdvc3RyZWFtJiBvcGVyYXRvcjw8
KHdvc3RyZWFtJiwgY29uc3Qgd2NoYXJfdCopOwogIGV4dGVybiB0ZW1wbGF0ZSB3b3N0cmVhbSYg
b3BlcmF0b3I8PCh3b3N0cmVhbSYsIGNvbnN0IGNoYXIqKTsKCiAgZXh0ZXJuIHRlbXBsYXRlIHdv
c3RyZWFtJiB3b3N0cmVhbTo6X01faW5zZXJ0KGxvbmcpOwogIGV4dGVybiB0ZW1wbGF0ZSB3b3N0
cmVhbSYgd29zdHJlYW06Ol9NX2luc2VydCh1bnNpZ25lZCBsb25nKTsKICBleHRlcm4gdGVtcGxh
dGUgd29zdHJlYW0mIHdvc3RyZWFtOjpfTV9pbnNlcnQoYm9vbCk7CgogIGV4dGVybiB0ZW1wbGF0
ZSB3b3N0cmVhbSYgd29zdHJlYW06Ol9NX2luc2VydChsb25nIGxvbmcpOwogIGV4dGVybiB0ZW1w
bGF0ZSB3b3N0cmVhbSYgd29zdHJlYW06Ol9NX2luc2VydCh1bnNpZ25lZCBsb25nIGxvbmcpOwoK
ICBleHRlcm4gdGVtcGxhdGUgd29zdHJlYW0mIHdvc3RyZWFtOjpfTV9pbnNlcnQoZG91YmxlKTsK
ICBleHRlcm4gdGVtcGxhdGUgd29zdHJlYW0mIHdvc3RyZWFtOjpfTV9pbnNlcnQobG9uZyBkb3Vi
bGUpOwogIGV4dGVybiB0ZW1wbGF0ZSB3b3N0cmVhbSYgd29zdHJlYW06Ol9NX2luc2VydChjb25z
dCB2b2lkKik7CgoKCgp9CiMgNjEzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL29zdHJlYW0iIDIgMwojIDY1ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2l0ZXJhdG9yIiAyIDMKIyAx
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2lzdHJlYW0iIDEgMwojIDM0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2lzdHJlYW0iIDMKI2RlZmluZSBfR0xJQkNYWF9JU1RSRUFNIDEK
CiAgICAgICAKIyAzNyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9pc3RyZWFtIiAzCgoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18g
KChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgNTcgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvaXN0cmVhbSIgMwogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGNsYXNzIGJhc2ljX2lz
dHJlYW0gOiB2aXJ0dWFsIHB1YmxpYyBiYXNpY19pb3M8X0NoYXJULCBfVHJhaXRzPgogICAgewog
ICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOwogICAgICB0eXBlZGVm
IHR5cGVuYW1lIF9UcmFpdHM6OmludF90eXBlIGludF90eXBlOwogICAgICB0eXBlZGVmIHR5cGVu
YW1lIF9UcmFpdHM6OnBvc190eXBlIHBvc190eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9U
cmFpdHM6Om9mZl90eXBlIG9mZl90eXBlOwogICAgICB0eXBlZGVmIF9UcmFpdHMgdHJhaXRzX3R5
cGU7CgoKICAgICAgdHlwZWRlZiBiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPiBfX3N0
cmVhbWJ1Zl90eXBlOwogICAgICB0eXBlZGVmIGJhc2ljX2lvczxfQ2hhclQsIF9UcmFpdHM+IF9f
aW9zX3R5cGU7CiAgICAgIHR5cGVkZWYgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9f
aXN0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIG51bV9nZXQ8X0NoYXJULCBpc3RyZWFtYnVmX2l0
ZXJhdG9yPF9DaGFyVCwgX1RyYWl0cz4gPgogICAgICAgIF9fbnVtX2dldF90eXBlOwogICAgICB0
eXBlZGVmIGN0eXBlPF9DaGFyVD4gX19jdHlwZV90eXBlOwoKICAgIHByb3RlY3RlZDoKCgoKCgog
ICAgICBzdHJlYW1zaXplIF9NX2djb3VudDsKCiAgICBwdWJsaWM6CgoKCgoKCgogICAgICBleHBs
aWNpdAogICAgICBiYXNpY19pc3RyZWFtKF9fc3RyZWFtYnVmX3R5cGUqIF9fc2IpCiAgICAgIDog
X01fZ2NvdW50KHN0cmVhbXNpemUoMCkpCiAgICAgIHsgdGhpcy0+aW5pdChfX3NiKTsgfQoKCgoK
CgogICAgICB2aXJ0dWFsCiAgICAgIH5iYXNpY19pc3RyZWFtKCkKICAgICAgeyBfTV9nY291bnQg
PSBzdHJlYW1zaXplKDApOyB9CgoKICAgICAgY2xhc3Mgc2VudHJ5OwogICAgICBmcmllbmQgY2xh
c3Mgc2VudHJ5OwojIDExOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9pc3RyZWFtIiAzCiAgICAgIF9faXN0cmVhbV90eXBlJgogICAgICBv
cGVyYXRvcj4+KF9faXN0cmVhbV90eXBlJiAoKl9fcGYpKF9faXN0cmVhbV90eXBlJikpCiAgICAg
IHsgcmV0dXJuIF9fcGYoKnRoaXMpOyB9CgogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgb3Bl
cmF0b3I+PihfX2lvc190eXBlJiAoKl9fcGYpKF9faW9zX3R5cGUmKSkKICAgICAgewogX19wZigq
dGhpcyk7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgICAgIF9faXN0cmVhbV90eXBlJgogICAg
ICBvcGVyYXRvcj4+KGlvc19iYXNlJiAoKl9fcGYpKGlvc19iYXNlJikpCiAgICAgIHsKIF9fcGYo
KnRoaXMpOwogcmV0dXJuICp0aGlzOwogICAgICB9CiMgMTY3ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2lzdHJlYW0iIDMKICAgICAgX19p
c3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPj4oYm9vbCYgX19uKQogICAgICB7IHJldHVybiBf
TV9leHRyYWN0KF9fbik7IH0KCiAgICAgIF9faXN0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcj4+
KHNob3J0JiBfX24pOwoKICAgICAgX19pc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPj4odW5z
aWduZWQgc2hvcnQmIF9fbikKICAgICAgeyByZXR1cm4gX01fZXh0cmFjdChfX24pOyB9CgogICAg
ICBfX2lzdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I+PihpbnQmIF9fbik7CgogICAgICBfX2lz
dHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I+Pih1bnNpZ25lZCBpbnQmIF9fbikKICAgICAgeyBy
ZXR1cm4gX01fZXh0cmFjdChfX24pOyB9CgogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgb3Bl
cmF0b3I+Pihsb25nJiBfX24pCiAgICAgIHsgcmV0dXJuIF9NX2V4dHJhY3QoX19uKTsgfQoKICAg
ICAgX19pc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPj4odW5zaWduZWQgbG9uZyYgX19uKQog
ICAgICB7IHJldHVybiBfTV9leHRyYWN0KF9fbik7IH0KCgogICAgICBfX2lzdHJlYW1fdHlwZSYK
ICAgICAgb3BlcmF0b3I+Pihsb25nIGxvbmcmIF9fbikKICAgICAgeyByZXR1cm4gX01fZXh0cmFj
dChfX24pOyB9CgogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I+Pih1bnNpZ25l
ZCBsb25nIGxvbmcmIF9fbikKICAgICAgeyByZXR1cm4gX01fZXh0cmFjdChfX24pOyB9CiMgMjEz
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2lzdHJlYW0iIDMKICAgICAgX19pc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPj4oZmxvYXQm
IF9fZikKICAgICAgeyByZXR1cm4gX01fZXh0cmFjdChfX2YpOyB9CgogICAgICBfX2lzdHJlYW1f
dHlwZSYKICAgICAgb3BlcmF0b3I+Pihkb3VibGUmIF9fZikKICAgICAgeyByZXR1cm4gX01fZXh0
cmFjdChfX2YpOyB9CgogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I+Pihsb25n
IGRvdWJsZSYgX19mKQogICAgICB7IHJldHVybiBfTV9leHRyYWN0KF9fZik7IH0KIyAyMzQgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvaXN0
cmVhbSIgMwogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I+Pih2b2lkKiYgX19w
KQogICAgICB7IHJldHVybiBfTV9leHRyYWN0KF9fcCk7IH0KIyAyNTggIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvaXN0cmVhbSIgMwogICAg
ICBfX2lzdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I+PihfX3N0cmVhbWJ1Zl90eXBlKiBfX3Ni
KTsKIyAyNjggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvaXN0cmVhbSIgMwogICAgICBzdHJlYW1zaXplCiAgICAgIGdjb3VudCgpIGNvbnN0
CiAgICAgIHsgcmV0dXJuIF9NX2djb3VudDsgfQojIDMwMSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9pc3RyZWFtIiAzCiAgICAgIGludF90
eXBlCiAgICAgIGdldCgpOwojIDMxNSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9pc3RyZWFtIiAzCiAgICAgIF9faXN0cmVhbV90eXBlJgog
ICAgICBnZXQoY2hhcl90eXBlJiBfX2MpOwojIDM0MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9pc3RyZWFtIiAzCiAgICAgIF9faXN0cmVh
bV90eXBlJgogICAgICBnZXQoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uLCBjaGFyX3R5
cGUgX19kZWxpbSk7CiMgMzUzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2lzdHJlYW0iIDMKICAgICAgX19pc3RyZWFtX3R5cGUmCiAgICAg
IGdldChjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24pCiAgICAgIHsgcmV0dXJuIHRoaXMt
PmdldChfX3MsIF9fbiwgdGhpcy0+d2lkZW4oJ1xuJykpOyB9CiMgMzc2ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2lzdHJlYW0iIDMKICAg
ICAgX19pc3RyZWFtX3R5cGUmCiAgICAgIGdldChfX3N0cmVhbWJ1Zl90eXBlJiBfX3NiLCBjaGFy
X3R5cGUgX19kZWxpbSk7CiMgMzg2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2lzdHJlYW0iIDMKICAgICAgX19pc3RyZWFtX3R5cGUmCiAg
ICAgIGdldChfX3N0cmVhbWJ1Zl90eXBlJiBfX3NiKQogICAgICB7IHJldHVybiB0aGlzLT5nZXQo
X19zYiwgdGhpcy0+d2lkZW4oJ1xuJykpOyB9CiMgNDE1ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2lzdHJlYW0iIDMKICAgICAgX19pc3Ry
ZWFtX3R5cGUmCiAgICAgIGdldGxpbmUoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uLCBj
aGFyX3R5cGUgX19kZWxpbSk7CiMgNDI2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2lzdHJlYW0iIDMKICAgICAgX19pc3RyZWFtX3R5cGUm
CiAgICAgIGdldGxpbmUoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uKQogICAgICB7IHJl
dHVybiB0aGlzLT5nZXRsaW5lKF9fcywgX19uLCB0aGlzLT53aWRlbignXG4nKSk7IH0KIyA0NTAg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
aXN0cmVhbSIgMwogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgaWdub3JlKHN0cmVhbXNpemUg
X19uLCBpbnRfdHlwZSBfX2RlbGltKTsKCiAgICAgIF9faXN0cmVhbV90eXBlJgogICAgICBpZ25v
cmUoc3RyZWFtc2l6ZSBfX24pOwoKICAgICAgX19pc3RyZWFtX3R5cGUmCiAgICAgIGlnbm9yZSgp
OwojIDQ2NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9pc3RyZWFtIiAzCiAgICAgIGludF90eXBlCiAgICAgIHBlZWsoKTsKIyA0ODUgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvaXN0
cmVhbSIgMwogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgcmVhZChjaGFyX3R5cGUqIF9fcywg
c3RyZWFtc2l6ZSBfX24pOwojIDUwNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9pc3RyZWFtIiAzCiAgICAgIHN0cmVhbXNpemUKICAgICAg
cmVhZHNvbWUoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uKTsKIyA1MjEgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvaXN0cmVhbSIg
MwogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgcHV0YmFjayhjaGFyX3R5cGUgX19jKTsKIyA1
MzcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvaXN0cmVhbSIgMwogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgdW5nZXQoKTsKIyA1NTUg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
aXN0cmVhbSIgMwogICAgICBpbnQKICAgICAgc3luYygpOwojIDU3MCAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9pc3RyZWFtIiAzCiAgICAg
IHBvc190eXBlCiAgICAgIHRlbGxnKCk7CiMgNTg1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2lzdHJlYW0iIDMKICAgICAgX19pc3RyZWFt
X3R5cGUmCiAgICAgIHNlZWtnKHBvc190eXBlKTsKIyA2MDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvaXN0cmVhbSIgMwogICAgICBfX2lz
dHJlYW1fdHlwZSYKICAgICAgc2Vla2cob2ZmX3R5cGUsIGlvc19iYXNlOjpzZWVrZGlyKTsKCgog
ICAgcHJvdGVjdGVkOgogICAgICBiYXNpY19pc3RyZWFtKCkKICAgICAgOiBfTV9nY291bnQoc3Ry
ZWFtc2l6ZSgwKSkKICAgICAgeyB0aGlzLT5pbml0KDApOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVmFsdWVUPgogX19pc3RyZWFtX3R5cGUmCiBfTV9leHRyYWN0KF9WYWx1ZVQmIF9fdik7
CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAgYmFzaWNfaXN0cmVhbTxjaGFyPiYKICAgIGJhc2lj
X2lzdHJlYW08Y2hhcj46OgogICAgZ2V0bGluZShjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBf
X24sIGNoYXJfdHlwZSBfX2RlbGltKTsKCiAgdGVtcGxhdGU8PgogICAgYmFzaWNfaXN0cmVhbTxj
aGFyPiYKICAgIGJhc2ljX2lzdHJlYW08Y2hhcj46OgogICAgaWdub3JlKHN0cmVhbXNpemUgX19u
KTsKCiAgdGVtcGxhdGU8PgogICAgYmFzaWNfaXN0cmVhbTxjaGFyPiYKICAgIGJhc2ljX2lzdHJl
YW08Y2hhcj46OgogICAgaWdub3JlKHN0cmVhbXNpemUgX19uLCBpbnRfdHlwZSBfX2RlbGltKTsK
CgogIHRlbXBsYXRlPD4KICAgIGJhc2ljX2lzdHJlYW08d2NoYXJfdD4mCiAgICBiYXNpY19pc3Ry
ZWFtPHdjaGFyX3Q+OjoKICAgIGdldGxpbmUoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19u
LCBjaGFyX3R5cGUgX19kZWxpbSk7CgogIHRlbXBsYXRlPD4KICAgIGJhc2ljX2lzdHJlYW08d2No
YXJfdD4mCiAgICBiYXNpY19pc3RyZWFtPHdjaGFyX3Q+OjoKICAgIGlnbm9yZShzdHJlYW1zaXpl
IF9fbik7CgogIHRlbXBsYXRlPD4KICAgIGJhc2ljX2lzdHJlYW08d2NoYXJfdD4mCiAgICBiYXNp
Y19pc3RyZWFtPHdjaGFyX3Q+OjoKICAgIGlnbm9yZShzdHJlYW1zaXplIF9fbiwgaW50X3R5cGUg
X19kZWxpbSk7CiMgNjU2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2lzdHJlYW0iIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5
cGVuYW1lIF9UcmFpdHM+CiAgICBjbGFzcyBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46
OnNlbnRyeQogICAgewoKICAgICAgYm9vbCBfTV9vazsKCiAgICBwdWJsaWM6CgogICAgICB0eXBl
ZGVmIF9UcmFpdHMgdHJhaXRzX3R5cGU7CiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyZWFtYnVmPF9D
aGFyVCwgX1RyYWl0cz4gX19zdHJlYW1idWZfdHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19pc3Ry
ZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgX19pc3RyZWFtX3R5cGU6Ol9fY3R5cGVfdHlwZSBfX2N0eXBlX3R5cGU7CiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgX1RyYWl0czo6aW50X3R5cGUgX19pbnRfdHlwZTsKIyA2OTIgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvaXN0cmVhbSIg
MwogICAgICBleHBsaWNpdAogICAgICBzZW50cnkoYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+JiBfX2lzLCBib29sIF9fbm9za2lwd3MgPSBmYWxzZSk7CiMgNzAzICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2lzdHJlYW0iIDMKICAg
ICAgZXhwbGljaXQKCiAgICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgICB7IHJldHVybiBf
TV9vazsgfQogICAgfTsKIyA3MjEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvaXN0cmVhbSIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYK
ICAgIG9wZXJhdG9yPj4oYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2luLCBfQ2hh
clQmIF9fYyk7CgogIHRlbXBsYXRlPGNsYXNzIF9UcmFpdHM+CiAgICBpbmxpbmUgYmFzaWNfaXN0
cmVhbTxjaGFyLCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oYmFzaWNfaXN0cmVhbTxjaGFyLCBf
VHJhaXRzPiYgX19pbiwgdW5zaWduZWQgY2hhciYgX19jKQogICAgeyByZXR1cm4gKF9faW4gPj4g
cmVpbnRlcnByZXRfY2FzdDxjaGFyJj4oX19jKSk7IH0KCiAgdGVtcGxhdGU8Y2xhc3MgX1RyYWl0
cz4KICAgIGlubGluZSBiYXNpY19pc3RyZWFtPGNoYXIsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+
PihiYXNpY19pc3RyZWFtPGNoYXIsIF9UcmFpdHM+JiBfX2luLCBzaWduZWQgY2hhciYgX19jKQog
ICAgeyByZXR1cm4gKF9faW4gPj4gcmVpbnRlcnByZXRfY2FzdDxjaGFyJj4oX19jKSk7IH0KIyA3
NjMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvaXN0cmVhbSIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cz4KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oYmFz
aWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2luLCBfQ2hhclQqIF9fcyk7CgoKICB0ZW1w
bGF0ZTw+CiAgICBiYXNpY19pc3RyZWFtPGNoYXI+JgogICAgb3BlcmF0b3I+PihiYXNpY19pc3Ry
ZWFtPGNoYXI+JiBfX2luLCBjaGFyKiBfX3MpOwoKICB0ZW1wbGF0ZTxjbGFzcyBfVHJhaXRzPgog
ICAgaW5saW5lIGJhc2ljX2lzdHJlYW08Y2hhciwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KGJh
c2ljX2lzdHJlYW08Y2hhciwgX1RyYWl0cz4mIF9faW4sIHVuc2lnbmVkIGNoYXIqIF9fcykKICAg
IHsgcmV0dXJuIChfX2luID4+IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KF9fcykpOyB9CgogIHRl
bXBsYXRlPGNsYXNzIF9UcmFpdHM+CiAgICBpbmxpbmUgYmFzaWNfaXN0cmVhbTxjaGFyLCBfVHJh
aXRzPiYKICAgIG9wZXJhdG9yPj4oYmFzaWNfaXN0cmVhbTxjaGFyLCBfVHJhaXRzPiYgX19pbiwg
c2lnbmVkIGNoYXIqIF9fcykKICAgIHsgcmV0dXJuIChfX2luID4+IHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KF9fcykpOyB9CiMgNzk0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2lzdHJlYW0iIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBjbGFzcyBiYXNpY19pb3N0cmVhbQogICAgOiBwdWJs
aWMgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+LAogICAgICBwdWJsaWMgYmFzaWNfb3N0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+CiAgICB7CiAgICBwdWJsaWM6CgoKCiAgICAgIHR5cGVkZWYg
X0NoYXJUIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjppbnRfdHlw
ZSBpbnRfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjpwb3NfdHlwZSBwb3Nf
dHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjpvZmZfdHlwZSBvZmZfdHlwZTsK
ICAgICAgdHlwZWRlZiBfVHJhaXRzIHRyYWl0c190eXBlOwoKCiAgICAgIHR5cGVkZWYgYmFzaWNf
aXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIGJh
c2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsKCgoKCgoKCiAgICAg
IGV4cGxpY2l0CiAgICAgIGJhc2ljX2lvc3RyZWFtKGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9U
cmFpdHM+KiBfX3NiKQogICAgICA6IF9faXN0cmVhbV90eXBlKF9fc2IpLCBfX29zdHJlYW1fdHlw
ZShfX3NiKSB7IH0KCgoKCiAgICAgIHZpcnR1YWwKICAgICAgfmJhc2ljX2lvc3RyZWFtKCkgeyB9
CgogICAgcHJvdGVjdGVkOgogICAgICBiYXNpY19pb3N0cmVhbSgpCiAgICAgIDogX19pc3RyZWFt
X3R5cGUoKSwgX19vc3RyZWFtX3R5cGUoKSB7IH0KICAgIH07CiMgODU0ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2lzdHJlYW0iIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19pc3Ry
ZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICB3cyhiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0
cz4mIF9faXMpOwojIDg3MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjkuMy9pc3RyZWFtIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgYmFzaWNfaXN0cmVhbTxf
Q2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1Ry
YWl0cz4mJiBfX2lzLCBfVHAmIF9feCkKICAgIHsKICAgICAgX19pcyA+PiBfX3g7CiAgICAgIHJl
dHVybiBfX2lzOwogICAgfQoKCgp9CgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9pc3RyZWFtLnRjYyIgMSAzCiMgMzUgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9pc3RyZWFtLnRjYyIgMwojZGVmaW5lIF9JU1RSRUFNX1RDQyAxCgogICAgICAgCiMgMzggIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0
cy9pc3RyZWFtLnRjYyIgMwoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2li
aWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw
ZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6c2VudHJ5
OjoKICAgIHNlbnRyeShiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faW4sIGJvb2wg
X19ub3NraXApIDogX01fb2soZmFsc2UpCiAgICB7CiAgICAgIGlvc19iYXNlOjppb3N0YXRlIF9f
ZXJyID0gaW9zX2Jhc2U6Omdvb2RiaXQ7CiAgICAgIGlmIChfX2luLmdvb2QoKSkKIHsKICAgaWYg
KF9faW4udGllKCkpCiAgICAgX19pbi50aWUoKS0+Zmx1c2goKTsKICAgaWYgKCFfX25vc2tpcCAm
JiBib29sKF9faW4uZmxhZ3MoKSAmIGlvc19iYXNlOjpza2lwd3MpKQogICAgIHsKICAgICAgIGNv
bnN0IF9faW50X3R5cGUgX19lb2YgPSB0cmFpdHNfdHlwZTo6ZW9mKCk7CiAgICAgICBfX3N0cmVh
bWJ1Zl90eXBlKiBfX3NiID0gX19pbi5yZGJ1ZigpOwogICAgICAgX19pbnRfdHlwZSBfX2MgPSBf
X3NiLT5zZ2V0YygpOwoKICAgICAgIGNvbnN0IF9fY3R5cGVfdHlwZSYgX19jdCA9IF9fY2hlY2tf
ZmFjZXQoX19pbi5fTV9jdHlwZSk7CiAgICAgICB3aGlsZSAoIXRyYWl0c190eXBlOjplcV9pbnRf
dHlwZShfX2MsIF9fZW9mKQogICAgICAgJiYgX19jdC5pcyhjdHlwZV9iYXNlOjpzcGFjZSwKICAg
IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoX19jKSkpCiAgX19jID0gX19zYi0+c25leHRjKCk7
CgoKCgogICAgICAgaWYgKHRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIF9fZW9mKSkKICBf
X2VyciB8PSBpb3NfYmFzZTo6ZW9mYml0OwogICAgIH0KIH0KCiAgICAgIGlmIChfX2luLmdvb2Qo
KSAmJiBfX2VyciA9PSBpb3NfYmFzZTo6Z29vZGJpdCkKIF9NX29rID0gdHJ1ZTsKICAgICAgZWxz
ZQogewogICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKICAgX19pbi5zZXRzdGF0ZShfX2Vy
cik7CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cz4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZVQ+CiAgICAgIGJhc2ljX2lzdHJlYW08X0No
YXJULCBfVHJhaXRzPiYKICAgICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAg
ICAgX01fZXh0cmFjdChfVmFsdWVUJiBfX3YpCiAgICAgIHsKIHNlbnRyeSBfX2NlcmIoKnRoaXMs
IGZhbHNlKTsKIGlmIChfX2NlcmIpCiAgIHsKICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9
IGlvc19iYXNlOjpnb29kYml0OwogICAgIGlmICh0cnVlKQogICAgICAgewogIGNvbnN0IF9fbnVt
X2dldF90eXBlJiBfX25nID0gX19jaGVja19mYWNldCh0aGlzLT5fTV9udW1fZ2V0KTsKICBfX25n
LmdldCgqdGhpcywgMCwgKnRoaXMsIF9fZXJyLCBfX3YpOwogICAgICAgfQogICAgIGlmIChmYWxz
ZSkKICAgICAgIHsKICB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsKICA7CiAg
ICAgICB9CiAgICAgaWYgKGZhbHNlKQogICAgICAgeyB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFz
ZTo6YmFkYml0KTsgfQogICAgIGlmIChfX2VycikKICAgICAgIHRoaXMtPnNldHN0YXRlKF9fZXJy
KTsKICAgfQogcmV0dXJuICp0aGlzOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYK
ICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6CiAgICBvcGVyYXRvcj4+KHNob3J0
JiBfX24pCiAgICB7CgoKICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgZmFsc2UpOwogICAgICBp
ZiAoX19jZXJiKQogewogICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjpnb29k
Yml0OwogICBpZiAodHJ1ZSkKICAgICB7CiAgICAgICBsb25nIF9fbDsKICAgICAgIGNvbnN0IF9f
bnVtX2dldF90eXBlJiBfX25nID0gX19jaGVja19mYWNldCh0aGlzLT5fTV9udW1fZ2V0KTsKICAg
ICAgIF9fbmcuZ2V0KCp0aGlzLCAwLCAqdGhpcywgX19lcnIsIF9fbCk7CgoKCiAgICAgICBpZiAo
X19sIDwgX19nbnVfY3h4OjpfX251bWVyaWNfdHJhaXRzPHNob3J0Pjo6X19taW4pCiAgewogICAg
X19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICBfX24gPSBfX2dudV9jeHg6Ol9fbnVtZXJp
Y190cmFpdHM8c2hvcnQ+OjpfX21pbjsKICB9CiAgICAgICBlbHNlIGlmIChfX2wgPiBfX2dudV9j
eHg6Ol9fbnVtZXJpY190cmFpdHM8c2hvcnQ+OjpfX21heCkKICB7CiAgICBfX2VyciB8PSBpb3Nf
YmFzZTo6ZmFpbGJpdDsKICAgIF9fbiA9IF9fZ251X2N4eDo6X19udW1lcmljX3RyYWl0czxzaG9y
dD46Ol9fbWF4OwogIH0KICAgICAgIGVsc2UKICBfX24gPSBzaG9ydChfX2wpOwogICAgIH0KICAg
aWYgKGZhbHNlKQogICAgIHsKICAgICAgIHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRi
aXQpOwogICAgICAgOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsgdGhpcy0+X01fc2V0c3Rh
dGUoaW9zX2Jhc2U6OmJhZGJpdCk7IH0KICAgaWYgKF9fZXJyKQogICAgIHRoaXMtPnNldHN0YXRl
KF9fZXJyKTsKIH0KICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1Ry
YWl0cz4mCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OgogICAgb3BlcmF0b3I+
PihpbnQmIF9fbikKICAgIHsKCgogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCBmYWxzZSk7CiAg
ICAgIGlmIChfX2NlcmIpCiB7CiAgIGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6
Omdvb2RiaXQ7CiAgIGlmICh0cnVlKQogICAgIHsKICAgICAgIGxvbmcgX19sOwogICAgICAgY29u
c3QgX19udW1fZ2V0X3R5cGUmIF9fbmcgPSBfX2NoZWNrX2ZhY2V0KHRoaXMtPl9NX251bV9nZXQp
OwogICAgICAgX19uZy5nZXQoKnRoaXMsIDAsICp0aGlzLCBfX2VyciwgX19sKTsKCgoKICAgICAg
IGlmIChfX2wgPCBfX2dudV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8aW50Pjo6X19taW4pCiAgewog
ICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICBfX24gPSBfX2dudV9jeHg6Ol9fbnVt
ZXJpY190cmFpdHM8aW50Pjo6X19taW47CiAgfQogICAgICAgZWxzZSBpZiAoX19sID4gX19nbnVf
Y3h4OjpfX251bWVyaWNfdHJhaXRzPGludD46Ol9fbWF4KQogIHsKICAgIF9fZXJyIHw9IGlvc19i
YXNlOjpmYWlsYml0OwogICAgX19uID0gX19nbnVfY3h4OjpfX251bWVyaWNfdHJhaXRzPGludD46
Ol9fbWF4OwogIH0KICAgICAgIGVsc2UKICBfX24gPSBpbnQoX19sKTsKICAgICB9CiAgIGlmIChm
YWxzZSkKICAgICB7CiAgICAgICB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsK
ICAgICAgIDsKICAgICB9CiAgIGlmIChmYWxzZSkKICAgICB7IHRoaXMtPl9NX3NldHN0YXRlKGlv
c19iYXNlOjpiYWRiaXQpOyB9CiAgIGlmIChfX2VycikKICAgICB0aGlzLT5zZXRzdGF0ZShfX2Vy
cik7CiB9CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
JgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIG9wZXJhdG9yPj4oX19z
dHJlYW1idWZfdHlwZSogX19zYm91dCkKICAgIHsKICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19l
cnIgPSBpb3NfYmFzZTo6Z29vZGJpdDsKICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgZmFsc2Up
OwogICAgICBpZiAoX19jZXJiICYmIF9fc2JvdXQpCiB7CiAgIGlmICh0cnVlKQogICAgIHsKICAg
ICAgIGJvb2wgX19pbmVvZjsKICAgICAgIGlmICghX19jb3B5X3N0cmVhbWJ1ZnNfZW9mKHRoaXMt
PnJkYnVmKCksIF9fc2JvdXQsIF9faW5lb2YpKQogIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0
OwogICAgICAgaWYgKF9faW5lb2YpCiAgX19lcnIgfD0gaW9zX2Jhc2U6OmVvZmJpdDsKICAgICB9
CiAgIGlmIChmYWxzZSkKICAgICB7CiAgICAgICB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6
ZmFpbGJpdCk7CiAgICAgICA7CiAgICAgfQogICBpZiAoZmFsc2UpCiAgICAgeyB0aGlzLT5fTV9z
ZXRzdGF0ZShpb3NfYmFzZTo6ZmFpbGJpdCk7IH0KIH0KICAgICAgZWxzZSBpZiAoIV9fc2JvdXQp
CiBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKICAgICAgaWYgKF9fZXJyKQogdGhpcy0+c2V0
c3RhdGUoX19lcnIpOwogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHR5cGVuYW1lIGJhc2ljX2lzdHJlYW08
X0NoYXJULCBfVHJhaXRzPjo6aW50X3R5cGUKICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJh
aXRzPjo6CiAgICBnZXQodm9pZCkKICAgIHsKICAgICAgY29uc3QgaW50X3R5cGUgX19lb2YgPSB0
cmFpdHNfdHlwZTo6ZW9mKCk7CiAgICAgIGludF90eXBlIF9fYyA9IF9fZW9mOwogICAgICBfTV9n
Y291bnQgPSAwOwogICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjpnb29k
Yml0OwogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsKICAgICAgaWYgKF9fY2VyYikK
IHsKICAgaWYgKHRydWUpCiAgICAgewogICAgICAgX19jID0gdGhpcy0+cmRidWYoKS0+c2J1bXBj
KCk7CgogICAgICAgaWYgKCF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19jLCBfX2VvZikpCiAg
X01fZ2NvdW50ID0gMTsKICAgICAgIGVsc2UKICBfX2VyciB8PSBpb3NfYmFzZTo6ZW9mYml0Owog
ICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsKICAgICAgIHRoaXMtPl9NX3NldHN0YXRlKGlvc19i
YXNlOjpiYWRiaXQpOwogICAgICAgOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsgdGhpcy0+
X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7IH0KIH0KICAgICAgaWYgKCFfTV9nY291bnQp
CiBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKICAgICAgaWYgKF9fZXJyKQogdGhpcy0+c2V0
c3RhdGUoX19lcnIpOwogICAgICByZXR1cm4gX19jOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1Ry
YWl0cz4mCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OgogICAgZ2V0KGNoYXJf
dHlwZSYgX19jKQogICAgewogICAgICBfTV9nY291bnQgPSAwOwogICAgICBpb3NfYmFzZTo6aW9z
dGF0ZSBfX2VyciA9IGlvc19iYXNlOjpnb29kYml0OwogICAgICBzZW50cnkgX19jZXJiKCp0aGlz
LCB0cnVlKTsKICAgICAgaWYgKF9fY2VyYikKIHsKICAgaWYgKHRydWUpCiAgICAgewogICAgICAg
Y29uc3QgaW50X3R5cGUgX19jYiA9IHRoaXMtPnJkYnVmKCktPnNidW1wYygpOwoKICAgICAgIGlm
ICghdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9fY2IsIHRyYWl0c190eXBlOjplb2YoKSkpCiAg
ewogICAgX01fZ2NvdW50ID0gMTsKICAgIF9fYyA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUo
X19jYik7CiAgfQogICAgICAgZWxzZQogIF9fZXJyIHw9IGlvc19iYXNlOjplb2ZiaXQ7CiAgICAg
fQogICBpZiAoZmFsc2UpCiAgICAgewogICAgICAgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6
OmJhZGJpdCk7CiAgICAgICA7CiAgICAgfQogICBpZiAoZmFsc2UpCiAgICAgeyB0aGlzLT5fTV9z
ZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsgfQogfQogICAgICBpZiAoIV9NX2djb3VudCkKIF9f
ZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwogICAgICBpZiAoX19lcnIpCiB0aGlzLT5zZXRzdGF0
ZShfX2Vycik7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+JgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIGdldChjaGFyX3R5
cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24sIGNoYXJfdHlwZSBfX2RlbGltKQogICAgewogICAgICBf
TV9nY291bnQgPSAwOwogICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjpn
b29kYml0OwogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsKICAgICAgaWYgKF9fY2Vy
YikKIHsKICAgaWYgKHRydWUpCiAgICAgewogICAgICAgY29uc3QgaW50X3R5cGUgX19pZGVsaW0g
PSB0cmFpdHNfdHlwZTo6dG9faW50X3R5cGUoX19kZWxpbSk7CiAgICAgICBjb25zdCBpbnRfdHlw
ZSBfX2VvZiA9IHRyYWl0c190eXBlOjplb2YoKTsKICAgICAgIF9fc3RyZWFtYnVmX3R5cGUqIF9f
c2IgPSB0aGlzLT5yZGJ1ZigpOwogICAgICAgaW50X3R5cGUgX19jID0gX19zYi0+c2dldGMoKTsK
CiAgICAgICB3aGlsZSAoX01fZ2NvdW50ICsgMSA8IF9fbgogICAgICAgJiYgIXRyYWl0c190eXBl
OjplcV9pbnRfdHlwZShfX2MsIF9fZW9mKQogICAgICAgJiYgIXRyYWl0c190eXBlOjplcV9pbnRf
dHlwZShfX2MsIF9faWRlbGltKSkKICB7CiAgICAqX19zKysgPSB0cmFpdHNfdHlwZTo6dG9fY2hh
cl90eXBlKF9fYyk7CiAgICArK19NX2djb3VudDsKICAgIF9fYyA9IF9fc2ItPnNuZXh0YygpOwog
IH0KICAgICAgIGlmICh0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19jLCBfX2VvZikpCiAgX19l
cnIgfD0gaW9zX2Jhc2U6OmVvZmJpdDsKICAgICB9CiAgIGlmIChmYWxzZSkKICAgICB7CiAgICAg
ICB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsKICAgICAgIDsKICAgICB9CiAg
IGlmIChmYWxzZSkKICAgICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9
CiB9CgoKICAgICAgaWYgKF9fbiA+IDApCiAqX19zID0gY2hhcl90eXBlKCk7CiAgICAgIGlmICgh
X01fZ2NvdW50KQogX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICAgIGlmIChfX2VycikK
IHRoaXMtPnNldHN0YXRlKF9fZXJyKTsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19pc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz4mCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46Ogog
ICAgZ2V0KF9fc3RyZWFtYnVmX3R5cGUmIF9fc2IsIGNoYXJfdHlwZSBfX2RlbGltKQogICAgewog
ICAgICBfTV9nY291bnQgPSAwOwogICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19i
YXNlOjpnb29kYml0OwogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsKICAgICAgaWYg
KF9fY2VyYikKIHsKICAgaWYgKHRydWUpCiAgICAgewogICAgICAgY29uc3QgaW50X3R5cGUgX19p
ZGVsaW0gPSB0cmFpdHNfdHlwZTo6dG9faW50X3R5cGUoX19kZWxpbSk7CiAgICAgICBjb25zdCBp
bnRfdHlwZSBfX2VvZiA9IHRyYWl0c190eXBlOjplb2YoKTsKICAgICAgIF9fc3RyZWFtYnVmX3R5
cGUqIF9fdGhpc19zYiA9IHRoaXMtPnJkYnVmKCk7CiAgICAgICBpbnRfdHlwZSBfX2MgPSBfX3Ro
aXNfc2ItPnNnZXRjKCk7CiAgICAgICBjaGFyX3R5cGUgX19jMiA9IHRyYWl0c190eXBlOjp0b19j
aGFyX3R5cGUoX19jKTsKCiAgICAgICB3aGlsZSAoIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZShf
X2MsIF9fZW9mKQogICAgICAgJiYgIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIF9faWRl
bGltKQogICAgICAgJiYgIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX3NiLnNwdXRjKF9fYzIp
LCBfX2VvZikpCiAgewogICAgKytfTV9nY291bnQ7CiAgICBfX2MgPSBfX3RoaXNfc2ItPnNuZXh0
YygpOwogICAgX19jMiA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoX19jKTsKICB9CiAgICAg
ICBpZiAodHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9fYywgX19lb2YpKQogIF9fZXJyIHw9IGlv
c19iYXNlOjplb2ZiaXQ7CiAgICAgfQogICBpZiAoZmFsc2UpCiAgICAgewogICAgICAgdGhpcy0+
X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgICA7CiAgICAgfQogICBpZiAoZmFs
c2UpCiAgICAgeyB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsgfQogfQogICAg
ICBpZiAoIV9NX2djb3VudCkKIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwogICAgICBpZiAo
X19lcnIpCiB0aGlzLT5zZXRzdGF0ZShfX2Vycik7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNf
aXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+OjoKICAgIGdldGxpbmUoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uLCBjaGFyX3R5
cGUgX19kZWxpbSkKICAgIHsKICAgICAgX01fZ2NvdW50ID0gMDsKICAgICAgaW9zX2Jhc2U6Omlv
c3RhdGUgX19lcnIgPSBpb3NfYmFzZTo6Z29vZGJpdDsKICAgICAgc2VudHJ5IF9fY2VyYigqdGhp
cywgdHJ1ZSk7CiAgICAgIGlmIChfX2NlcmIpCiAgICAgICAgewogICAgICAgICAgaWYgKHRydWUp
CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBjb25zdCBpbnRfdHlwZSBfX2lkZWxpbSA9IHRy
YWl0c190eXBlOjp0b19pbnRfdHlwZShfX2RlbGltKTsKICAgICAgICAgICAgICBjb25zdCBpbnRf
dHlwZSBfX2VvZiA9IHRyYWl0c190eXBlOjplb2YoKTsKICAgICAgICAgICAgICBfX3N0cmVhbWJ1
Zl90eXBlKiBfX3NiID0gdGhpcy0+cmRidWYoKTsKICAgICAgICAgICAgICBpbnRfdHlwZSBfX2Mg
PSBfX3NiLT5zZ2V0YygpOwoKICAgICAgICAgICAgICB3aGlsZSAoX01fZ2NvdW50ICsgMSA8IF9f
bgogICAgICAgICAgICAgICAgICAgICAmJiAhdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9fYywg
X19lb2YpCiAgICAgICAgICAgICAgICAgICAgICYmICF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUo
X19jLCBfX2lkZWxpbSkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICpfX3Mr
KyA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoX19jKTsKICAgICAgICAgICAgICAgICAgX19j
ID0gX19zYi0+c25leHRjKCk7CiAgICAgICAgICAgICAgICAgICsrX01fZ2NvdW50OwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgIGlmICh0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19j
LCBfX2VvZikpCiAgICAgICAgICAgICAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZW9mYml0OwogICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgaWYgKHRy
YWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIF9faWRlbGltKSkKICAgICAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgICBfX3NiLT5zYnVtcGMoKTsKICAgICAgICAgICAgICAg
ICAgICAgICsrX01fZ2NvdW50OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0Owog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgIGlmIChmYWxzZSkKICAgICB7CiAgICAg
ICB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsKICAgICAgIDsKICAgICB9CiAg
ICAgICAgICBpZiAoZmFsc2UpCiAgICAgICAgICAgIHsgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jh
c2U6OmJhZGJpdCk7IH0KICAgICAgICB9CgoKICAgICAgaWYgKF9fbiA+IDApCiAqX19zID0gY2hh
cl90eXBlKCk7CiAgICAgIGlmICghX01fZ2NvdW50KQogICAgICAgIF9fZXJyIHw9IGlvc19iYXNl
OjpmYWlsYml0OwogICAgICBpZiAoX19lcnIpCiAgICAgICAgdGhpcy0+c2V0c3RhdGUoX19lcnIp
OwogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYK
ICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6CiAgICBpZ25vcmUodm9pZCkKICAg
IHsKICAgICAgX01fZ2NvdW50ID0gMDsKICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgdHJ1ZSk7
CiAgICAgIGlmIChfX2NlcmIpCiB7CiAgIGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jh
c2U6Omdvb2RiaXQ7CiAgIGlmICh0cnVlKQogICAgIHsKICAgICAgIGNvbnN0IGludF90eXBlIF9f
ZW9mID0gdHJhaXRzX3R5cGU6OmVvZigpOwogICAgICAgX19zdHJlYW1idWZfdHlwZSogX19zYiA9
IHRoaXMtPnJkYnVmKCk7CgogICAgICAgaWYgKHRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX3Ni
LT5zYnVtcGMoKSwgX19lb2YpKQogIF9fZXJyIHw9IGlvc19iYXNlOjplb2ZiaXQ7CiAgICAgICBl
bHNlCiAgX01fZ2NvdW50ID0gMTsKICAgICB9CiAgIGlmIChmYWxzZSkKICAgICB7CiAgICAgICB0
aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsKICAgICAgIDsKICAgICB9CiAgIGlm
IChmYWxzZSkKICAgICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiAg
IGlmIChfX2VycikKICAgICB0aGlzLT5zZXRzdGF0ZShfX2Vycik7CiB9CiAgICAgIHJldHVybiAq
dGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
PgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfaXN0cmVhbTxf
Q2hhclQsIF9UcmFpdHM+OjoKICAgIGlnbm9yZShzdHJlYW1zaXplIF9fbikKICAgIHsKICAgICAg
X01fZ2NvdW50ID0gMDsKICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgdHJ1ZSk7CiAgICAgIGlm
IChfX2NlcmIgJiYgX19uID4gMCkKICAgICAgICB7CiAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0
ZSBfX2VyciA9IGlvc19iYXNlOjpnb29kYml0OwogICAgICAgICAgaWYgKHRydWUpCiAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICBjb25zdCBpbnRfdHlwZSBfX2VvZiA9IHRyYWl0c190eXBlOjpl
b2YoKTsKICAgICAgICAgICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiID0gdGhpcy0+cmRidWYo
KTsKICAgICAgICAgICAgICBpbnRfdHlwZSBfX2MgPSBfX3NiLT5zZ2V0YygpOwojIDUxMyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRz
L2lzdHJlYW0udGNjIiAzCiAgICAgICBib29sIF9fbGFyZ2VfaWdub3JlID0gZmFsc2U7CiAgICAg
ICB3aGlsZSAodHJ1ZSkKICB7CiAgICB3aGlsZSAoX01fZ2NvdW50IDwgX19uCiAgICAmJiAhdHJh
aXRzX3R5cGU6OmVxX2ludF90eXBlKF9fYywgX19lb2YpKQogICAgICB7CiAgICAgICAgKytfTV9n
Y291bnQ7CiAgICAgICAgX19jID0gX19zYi0+c25leHRjKCk7CiAgICAgIH0KICAgIGlmIChfX24g
PT0gX19nbnVfY3h4OjpfX251bWVyaWNfdHJhaXRzPHN0cmVhbXNpemU+OjpfX21heAogICAgICAg
ICYmICF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19jLCBfX2VvZikpCiAgICAgIHsKICAgICAg
ICBfTV9nY291bnQgPQogICBfX2dudV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8c3RyZWFtc2l6ZT46
Ol9fbWluOwogICAgICAgIF9fbGFyZ2VfaWdub3JlID0gdHJ1ZTsKICAgICAgfQogICAgZWxzZQog
ICAgICBicmVhazsKICB9CgogICAgICAgaWYgKF9fbGFyZ2VfaWdub3JlKQogIF9NX2djb3VudCA9
IF9fZ251X2N4eDo6X19udW1lcmljX3RyYWl0czxzdHJlYW1zaXplPjo6X19tYXg7CgogICAgICAg
aWYgKHRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIF9fZW9mKSkKICAgICAgICAgICAgICAg
IF9fZXJyIHw9IGlvc19iYXNlOjplb2ZiaXQ7CiAgICAgICAgICAgIH0KICAgaWYgKGZhbHNlKQog
ICAgIHsKICAgICAgIHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOwogICAgICAg
OwogICAgIH0KICAgICAgICAgIGlmIChmYWxzZSkKICAgICAgICAgICAgeyB0aGlzLT5fTV9zZXRz
dGF0ZShpb3NfYmFzZTo6YmFkYml0KTsgfQogICAgICAgICAgaWYgKF9fZXJyKQogICAgICAgICAg
ICB0aGlzLT5zZXRzdGF0ZShfX2Vycik7CiAgICAgICAgfQogICAgICByZXR1cm4gKnRoaXM7CiAg
ICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJh
c2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBf
VHJhaXRzPjo6CiAgICBpZ25vcmUoc3RyZWFtc2l6ZSBfX24sIGludF90eXBlIF9fZGVsaW0pCiAg
ICB7CiAgICAgIF9NX2djb3VudCA9IDA7CiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMsIHRydWUp
OwogICAgICBpZiAoX19jZXJiICYmIF9fbiA+IDApCiAgICAgICAgewogICAgICAgICAgaW9zX2Jh
c2U6Omlvc3RhdGUgX19lcnIgPSBpb3NfYmFzZTo6Z29vZGJpdDsKICAgICAgICAgIGlmICh0cnVl
KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgY29uc3QgaW50X3R5cGUgX19lb2YgPSB0cmFp
dHNfdHlwZTo6ZW9mKCk7CiAgICAgICAgICAgICAgX19zdHJlYW1idWZfdHlwZSogX19zYiA9IHRo
aXMtPnJkYnVmKCk7CiAgICAgICAgICAgICAgaW50X3R5cGUgX19jID0gX19zYi0+c2dldGMoKTsK
CgogICAgICAgYm9vbCBfX2xhcmdlX2lnbm9yZSA9IGZhbHNlOwogICAgICAgd2hpbGUgKHRydWUp
CiAgewogICAgd2hpbGUgKF9NX2djb3VudCA8IF9fbgogICAgJiYgIXRyYWl0c190eXBlOjplcV9p
bnRfdHlwZShfX2MsIF9fZW9mKQogICAgJiYgIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2Ms
IF9fZGVsaW0pKQogICAgICB7CiAgICAgICAgKytfTV9nY291bnQ7CiAgICAgICAgX19jID0gX19z
Yi0+c25leHRjKCk7CiAgICAgIH0KICAgIGlmIChfX24gPT0gX19nbnVfY3h4OjpfX251bWVyaWNf
dHJhaXRzPHN0cmVhbXNpemU+OjpfX21heAogICAgICAgICYmICF0cmFpdHNfdHlwZTo6ZXFfaW50
X3R5cGUoX19jLCBfX2VvZikKICAgICAgICAmJiAhdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9f
YywgX19kZWxpbSkpCiAgICAgIHsKICAgICAgICBfTV9nY291bnQgPQogICBfX2dudV9jeHg6Ol9f
bnVtZXJpY190cmFpdHM8c3RyZWFtc2l6ZT46Ol9fbWluOwogICAgICAgIF9fbGFyZ2VfaWdub3Jl
ID0gdHJ1ZTsKICAgICAgfQogICAgZWxzZQogICAgICBicmVhazsKICB9CgogICAgICAgaWYgKF9f
bGFyZ2VfaWdub3JlKQogIF9NX2djb3VudCA9IF9fZ251X2N4eDo6X19udW1lcmljX3RyYWl0czxz
dHJlYW1zaXplPjo6X19tYXg7CgogICAgICAgICAgICAgIGlmICh0cmFpdHNfdHlwZTo6ZXFfaW50
X3R5cGUoX19jLCBfX2VvZikpCiAgICAgICAgICAgICAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZW9m
Yml0OwogICAgICAgZWxzZSBpZiAodHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9fYywgX19kZWxp
bSkpCiAgewogICAgaWYgKF9NX2djb3VudAogICAgICAgIDwgX19nbnVfY3h4OjpfX251bWVyaWNf
dHJhaXRzPHN0cmVhbXNpemU+OjpfX21heCkKICAgICAgKytfTV9nY291bnQ7CiAgICBfX3NiLT5z
YnVtcGMoKTsKICB9CiAgICAgICAgICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsKICAgICAgIHRo
aXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOwogICAgICAgOwogICAgIH0KICAgICAg
ICAgIGlmIChmYWxzZSkKICAgICAgICAgICAgeyB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6
YmFkYml0KTsgfQogICAgICAgICAgaWYgKF9fZXJyKQogICAgICAgICAgICB0aGlzLT5zZXRzdGF0
ZShfX2Vycik7CiAgICAgICAgfQogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHR5cGVuYW1lIGJhc2ljX2lz
dHJlYW08X0NoYXJULCBfVHJhaXRzPjo6aW50X3R5cGUKICAgIGJhc2ljX2lzdHJlYW08X0NoYXJU
LCBfVHJhaXRzPjo6CiAgICBwZWVrKHZvaWQpCiAgICB7CiAgICAgIGludF90eXBlIF9fYyA9IHRy
YWl0c190eXBlOjplb2YoKTsKICAgICAgX01fZ2NvdW50ID0gMDsKICAgICAgc2VudHJ5IF9fY2Vy
YigqdGhpcywgdHJ1ZSk7CiAgICAgIGlmIChfX2NlcmIpCiB7CiAgIGlvc19iYXNlOjppb3N0YXRl
IF9fZXJyID0gaW9zX2Jhc2U6Omdvb2RiaXQ7CiAgIGlmICh0cnVlKQogICAgIHsKICAgICAgIF9f
YyA9IHRoaXMtPnJkYnVmKCktPnNnZXRjKCk7CiAgICAgICBpZiAodHJhaXRzX3R5cGU6OmVxX2lu
dF90eXBlKF9fYywgdHJhaXRzX3R5cGU6OmVvZigpKSkKICBfX2VyciB8PSBpb3NfYmFzZTo6ZW9m
Yml0OwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsKICAgICAgIHRoaXMtPl9NX3NldHN0YXRl
KGlvc19iYXNlOjpiYWRiaXQpOwogICAgICAgOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsg
dGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7IH0KICAgaWYgKF9fZXJyKQogICAg
IHRoaXMtPnNldHN0YXRlKF9fZXJyKTsKIH0KICAgICAgcmV0dXJuIF9fYzsKICAgIH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfaXN0cmVh
bTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoK
ICAgIHJlYWQoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uKQogICAgewogICAgICBfTV9n
Y291bnQgPSAwOwogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsKICAgICAgaWYgKF9f
Y2VyYikKIHsKICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBpb3NfYmFzZTo6Z29vZGJpdDsK
ICAgaWYgKHRydWUpCiAgICAgewogICAgICAgX01fZ2NvdW50ID0gdGhpcy0+cmRidWYoKS0+c2dl
dG4oX19zLCBfX24pOwogICAgICAgaWYgKF9NX2djb3VudCAhPSBfX24pCiAgX19lcnIgfD0gKGlv
c19iYXNlOjplb2ZiaXQgfCBpb3NfYmFzZTo6ZmFpbGJpdCk7CiAgICAgfQogICBpZiAoZmFsc2Up
CiAgICAgewogICAgICAgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAg
ICA7CiAgICAgfQogICBpZiAoZmFsc2UpCiAgICAgeyB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFz
ZTo6YmFkYml0KTsgfQogICBpZiAoX19lcnIpCiAgICAgdGhpcy0+c2V0c3RhdGUoX19lcnIpOwog
fQogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0cmVhbXNpemUKICAgIGJhc2ljX2lzdHJlYW08X0NoYXJU
LCBfVHJhaXRzPjo6CiAgICByZWFkc29tZShjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24p
CiAgICB7CiAgICAgIF9NX2djb3VudCA9IDA7CiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMsIHRy
dWUpOwogICAgICBpZiAoX19jZXJiKQogewogICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlv
c19iYXNlOjpnb29kYml0OwogICBpZiAodHJ1ZSkKICAgICB7CgogICAgICAgY29uc3Qgc3RyZWFt
c2l6ZSBfX251bSA9IHRoaXMtPnJkYnVmKCktPmluX2F2YWlsKCk7CiAgICAgICBpZiAoX19udW0g
PiAwKQogIF9NX2djb3VudCA9IHRoaXMtPnJkYnVmKCktPnNnZXRuKF9fcywgc3RkOjptaW4oX19u
dW0sIF9fbikpOwogICAgICAgZWxzZSBpZiAoX19udW0gPT0gLTEpCiAgX19lcnIgfD0gaW9zX2Jh
c2U6OmVvZmJpdDsKICAgICB9CiAgIGlmIChmYWxzZSkKICAgICB7CiAgICAgICB0aGlzLT5fTV9z
ZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsKICAgICAgIDsKICAgICB9CiAgIGlmIChmYWxzZSkK
ICAgICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiAgIGlmIChfX2Vy
cikKICAgICB0aGlzLT5zZXRzdGF0ZShfX2Vycik7CiB9CiAgICAgIHJldHVybiBfTV9nY291bnQ7
CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAg
IGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIGJhc2ljX2lzdHJlYW08X0NoYXJU
LCBfVHJhaXRzPjo6CiAgICBwdXRiYWNrKGNoYXJfdHlwZSBfX2MpCiAgICB7CgoKICAgICAgX01f
Z2NvdW50ID0gMDsKCiAgICAgIHRoaXMtPmNsZWFyKHRoaXMtPnJkc3RhdGUoKSAmIH5pb3NfYmFz
ZTo6ZW9mYml0KTsKICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgdHJ1ZSk7CiAgICAgIGlmIChf
X2NlcmIpCiB7CiAgIGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6Omdvb2RiaXQ7
CiAgIGlmICh0cnVlKQogICAgIHsKICAgICAgIGNvbnN0IGludF90eXBlIF9fZW9mID0gdHJhaXRz
X3R5cGU6OmVvZigpOwogICAgICAgX19zdHJlYW1idWZfdHlwZSogX19zYiA9IHRoaXMtPnJkYnVm
KCk7CiAgICAgICBpZiAoIV9fc2IKICAgIHx8IHRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX3Ni
LT5zcHV0YmFja2MoX19jKSwgX19lb2YpKQogIF9fZXJyIHw9IGlvc19iYXNlOjpiYWRiaXQ7CiAg
ICAgfQogICBpZiAoZmFsc2UpCiAgICAgewogICAgICAgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jh
c2U6OmJhZGJpdCk7CiAgICAgICA7CiAgICAgfQogICBpZiAoZmFsc2UpCiAgICAgeyB0aGlzLT5f
TV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsgfQogICBpZiAoX19lcnIpCiAgICAgdGhpcy0+
c2V0c3RhdGUoX19lcnIpOwogfQogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX2lzdHJlYW08X0No
YXJULCBfVHJhaXRzPiYKICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6CiAgICB1
bmdldCh2b2lkKQogICAgewoKCiAgICAgIF9NX2djb3VudCA9IDA7CgogICAgICB0aGlzLT5jbGVh
cih0aGlzLT5yZHN0YXRlKCkgJiB+aW9zX2Jhc2U6OmVvZmJpdCk7CiAgICAgIHNlbnRyeSBfX2Nl
cmIoKnRoaXMsIHRydWUpOwogICAgICBpZiAoX19jZXJiKQogewogICBpb3NfYmFzZTo6aW9zdGF0
ZSBfX2VyciA9IGlvc19iYXNlOjpnb29kYml0OwogICBpZiAodHJ1ZSkKICAgICB7CiAgICAgICBj
b25zdCBpbnRfdHlwZSBfX2VvZiA9IHRyYWl0c190eXBlOjplb2YoKTsKICAgICAgIF9fc3RyZWFt
YnVmX3R5cGUqIF9fc2IgPSB0aGlzLT5yZGJ1ZigpOwogICAgICAgaWYgKCFfX3NiCiAgICB8fCB0
cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19zYi0+c3VuZ2V0YygpLCBfX2VvZikpCiAgX19lcnIg
fD0gaW9zX2Jhc2U6OmJhZGJpdDsKICAgICB9CiAgIGlmIChmYWxzZSkKICAgICB7CiAgICAgICB0
aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsKICAgICAgIDsKICAgICB9CiAgIGlm
IChmYWxzZSkKICAgICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiAg
IGlmIChfX2VycikKICAgICB0aGlzLT5zZXRzdGF0ZShfX2Vycik7CiB9CiAgICAgIHJldHVybiAq
dGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
PgogICAgaW50CiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OgogICAgc3luYyh2
b2lkKQogICAgewoKCiAgICAgIGludCBfX3JldCA9IC0xOwogICAgICBzZW50cnkgX19jZXJiKCp0
aGlzLCB0cnVlKTsKICAgICAgaWYgKF9fY2VyYikKIHsKICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19l
cnIgPSBpb3NfYmFzZTo6Z29vZGJpdDsKICAgaWYgKHRydWUpCiAgICAgewogICAgICAgX19zdHJl
YW1idWZfdHlwZSogX19zYiA9IHRoaXMtPnJkYnVmKCk7CiAgICAgICBpZiAoX19zYikKICB7CiAg
ICBpZiAoX19zYi0+cHVic3luYygpID09IC0xKQogICAgICBfX2VyciB8PSBpb3NfYmFzZTo6YmFk
Yml0OwogICAgZWxzZQogICAgICBfX3JldCA9IDA7CiAgfQogICAgIH0KICAgaWYgKGZhbHNlKQog
ICAgIHsKICAgICAgIHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOwogICAgICAg
OwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6
OmJhZGJpdCk7IH0KICAgaWYgKF9fZXJyKQogICAgIHRoaXMtPnNldHN0YXRlKF9fZXJyKTsKIH0K
ICAgICAgcmV0dXJuIF9fcmV0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5
cGVuYW1lIF9UcmFpdHM+CiAgICB0eXBlbmFtZSBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0
cz46OnBvc190eXBlCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OgogICAgdGVs
bGcodm9pZCkKICAgIHsKCgogICAgICBwb3NfdHlwZSBfX3JldCA9IHBvc190eXBlKC0xKTsKICAg
ICAgc2VudHJ5IF9fY2VyYigqdGhpcywgdHJ1ZSk7CiAgICAgIGlmIChfX2NlcmIpCiB7CiAgIGlm
ICh0cnVlKQogICAgIHsKICAgICAgIGlmICghdGhpcy0+ZmFpbCgpKQogIF9fcmV0ID0gdGhpcy0+
cmRidWYoKS0+cHVic2Vla29mZigwLCBpb3NfYmFzZTo6Y3VyLAogICAgICAgIGlvc19iYXNlOjpp
bik7CiAgICAgfQogICBpZiAoZmFsc2UpCiAgICAgewogICAgICAgdGhpcy0+X01fc2V0c3RhdGUo
aW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgICA7CiAgICAgfQogICBpZiAoZmFsc2UpCiAgICAgeyB0
aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsgfQogfQogICAgICByZXR1cm4gX19y
ZXQ7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4K
ICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIGJhc2ljX2lzdHJlYW08X0No
YXJULCBfVHJhaXRzPjo6CiAgICBzZWVrZyhwb3NfdHlwZSBfX3BvcykKICAgIHsKCgoKICAgICAg
dGhpcy0+Y2xlYXIodGhpcy0+cmRzdGF0ZSgpICYgfmlvc19iYXNlOjplb2ZiaXQpOwogICAgICBz
ZW50cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsKICAgICAgaWYgKF9fY2VyYikKIHsKICAgaW9zX2Jh
c2U6Omlvc3RhdGUgX19lcnIgPSBpb3NfYmFzZTo6Z29vZGJpdDsKICAgaWYgKHRydWUpCiAgICAg
ewogICAgICAgaWYgKCF0aGlzLT5mYWlsKCkpCiAgewoKICAgIGNvbnN0IHBvc190eXBlIF9fcCA9
IHRoaXMtPnJkYnVmKCktPnB1YnNlZWtwb3MoX19wb3MsCiAgICAgICAgIGlvc19iYXNlOjppbik7
CgoKICAgIGlmIChfX3AgPT0gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKSkKICAgICAgX19lcnIgfD0g
aW9zX2Jhc2U6OmZhaWxiaXQ7CiAgfQogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsKICAgICAg
IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOwogICAgICAgOwogICAgIH0KICAg
aWYgKGZhbHNlKQogICAgIHsgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7IH0K
ICAgaWYgKF9fZXJyKQogICAgIHRoaXMtPnNldHN0YXRlKF9fZXJyKTsKIH0KICAgICAgcmV0dXJu
ICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHM+CiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBiYXNpY19pc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz46OgogICAgc2Vla2cob2ZmX3R5cGUgX19vZmYsIGlvc19iYXNlOjpz
ZWVrZGlyIF9fZGlyKQogICAgewoKCgogICAgICB0aGlzLT5jbGVhcih0aGlzLT5yZHN0YXRlKCkg
JiB+aW9zX2Jhc2U6OmVvZmJpdCk7CiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMsIHRydWUpOwog
ICAgICBpZiAoX19jZXJiKQogewogICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNl
Ojpnb29kYml0OwogICBpZiAodHJ1ZSkKICAgICB7CiAgICAgICBpZiAoIXRoaXMtPmZhaWwoKSkK
ICB7CgogICAgY29uc3QgcG9zX3R5cGUgX19wID0gdGhpcy0+cmRidWYoKS0+cHVic2Vla29mZihf
X29mZiwgX19kaXIsCiAgICAgICAgIGlvc19iYXNlOjppbik7CgoKICAgIGlmIChfX3AgPT0gcG9z
X3R5cGUob2ZmX3R5cGUoLTEpKSkKICAgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAg
fQogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsKICAgICAgIHRoaXMtPl9NX3NldHN0YXRlKGlv
c19iYXNlOjpiYWRiaXQpOwogICAgICAgOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsgdGhp
cy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7IH0KICAgaWYgKF9fZXJyKQogICAgIHRo
aXMtPnNldHN0YXRlKF9fZXJyKTsKIH0KICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfaXN0cmVh
bTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4mIF9faW4sIF9DaGFyVCYgX19jKQogICAgewogICAgICB0eXBlZGVmIGJhc2ljX2lz
dHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX2lzdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBfX2lzdHJlYW1fdHlwZTo6aW50X3R5cGUgX19pbnRfdHlwZTsKCiAgICAgIHR5cGVuYW1l
IF9faXN0cmVhbV90eXBlOjpzZW50cnkgX19jZXJiKF9faW4sIGZhbHNlKTsKICAgICAgaWYgKF9f
Y2VyYikKIHsKICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBpb3NfYmFzZTo6Z29vZGJpdDsK
ICAgaWYgKHRydWUpCiAgICAgewogICAgICAgY29uc3QgX19pbnRfdHlwZSBfX2NiID0gX19pbi5y
ZGJ1ZigpLT5zYnVtcGMoKTsKICAgICAgIGlmICghX1RyYWl0czo6ZXFfaW50X3R5cGUoX19jYiwg
X1RyYWl0czo6ZW9mKCkpKQogIF9fYyA9IF9UcmFpdHM6OnRvX2NoYXJfdHlwZShfX2NiKTsKICAg
ICAgIGVsc2UKICBfX2VyciB8PSAoaW9zX2Jhc2U6OmVvZmJpdCB8IGlvc19iYXNlOjpmYWlsYml0
KTsKICAgICB9CiAgIGlmIChmYWxzZSkKICAgICB7CiAgICAgICBfX2luLl9NX3NldHN0YXRlKGlv
c19iYXNlOjpiYWRiaXQpOwogICAgICAgOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsgX19p
bi5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsgfQogICBpZiAoX19lcnIpCiAgICAgX19p
bi5zZXRzdGF0ZShfX2Vycik7CiB9CiAgICAgIHJldHVybiBfX2luOwogICAgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19pc3RyZWFtPF9D
aGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJh
aXRzPiYgX19pbiwgX0NoYXJUKiBfX3MpCiAgICB7CiAgICAgIHR5cGVkZWYgYmFzaWNfaXN0cmVh
bTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIGJhc2ljX3N0
cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+IF9fc3RyZWFtYnVmX3R5cGU7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgX1RyYWl0czo6aW50X3R5cGUgaW50X3R5cGU7CiAgICAgIHR5cGVkZWYgX0NoYXJU
IGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiBjdHlwZTxfQ2hhclQ+IF9fY3R5cGVfdHlwZTsKCiAg
ICAgIHN0cmVhbXNpemUgX19leHRyYWN0ZWQgPSAwOwogICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBf
X2VyciA9IGlvc19iYXNlOjpnb29kYml0OwogICAgICB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6
c2VudHJ5IF9fY2VyYihfX2luLCBmYWxzZSk7CiAgICAgIGlmIChfX2NlcmIpCiB7CiAgIGlmICh0
cnVlKQogICAgIHsKCiAgICAgICBzdHJlYW1zaXplIF9fbnVtID0gX19pbi53aWR0aCgpOwogICAg
ICAgaWYgKF9fbnVtIDw9IDApCiAgX19udW0gPSBfX2dudV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8
c3RyZWFtc2l6ZT46Ol9fbWF4OwoKICAgICAgIGNvbnN0IF9fY3R5cGVfdHlwZSYgX19jdCA9IHVz
ZV9mYWNldDxfX2N0eXBlX3R5cGU+KF9faW4uZ2V0bG9jKCkpOwoKICAgICAgIGNvbnN0IGludF90
eXBlIF9fZW9mID0gX1RyYWl0czo6ZW9mKCk7CiAgICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3Ni
ID0gX19pbi5yZGJ1ZigpOwogICAgICAgaW50X3R5cGUgX19jID0gX19zYi0+c2dldGMoKTsKCiAg
ICAgICB3aGlsZSAoX19leHRyYWN0ZWQgPCBfX251bSAtIDEKICAgICAgICYmICFfVHJhaXRzOjpl
cV9pbnRfdHlwZShfX2MsIF9fZW9mKQogICAgICAgJiYgIV9fY3QuaXMoY3R5cGVfYmFzZTo6c3Bh
Y2UsCiAgICAgX1RyYWl0czo6dG9fY2hhcl90eXBlKF9fYykpKQogIHsKICAgICpfX3MrKyA9IF9U
cmFpdHM6OnRvX2NoYXJfdHlwZShfX2MpOwogICAgKytfX2V4dHJhY3RlZDsKICAgIF9fYyA9IF9f
c2ItPnNuZXh0YygpOwogIH0KICAgICAgIGlmIChfVHJhaXRzOjplcV9pbnRfdHlwZShfX2MsIF9f
ZW9mKSkKICBfX2VyciB8PSBpb3NfYmFzZTo6ZW9mYml0OwoKCgogICAgICAgKl9fcyA9IGNoYXJf
dHlwZSgpOwogICAgICAgX19pbi53aWR0aCgwKTsKICAgICB9CiAgIGlmIChmYWxzZSkKICAgICB7
CiAgICAgICBfX2luLl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOwogICAgICAgOwogICAg
IH0KICAgaWYgKGZhbHNlKQogICAgIHsgX19pbi5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0
KTsgfQogfQogICAgICBpZiAoIV9fZXh0cmFjdGVkKQogX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxi
aXQ7CiAgICAgIGlmIChfX2VycikKIF9faW4uc2V0c3RhdGUoX19lcnIpOwogICAgICByZXR1cm4g
X19pbjsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cz4KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIHdzKGJhc2ljX2lzdHJl
YW08X0NoYXJULCBfVHJhaXRzPiYgX19pbikKICAgIHsKICAgICAgdHlwZWRlZiBiYXNpY19pc3Ry
ZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgYmFzaWNf
c3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4gX19zdHJlYW1idWZfdHlwZTsKICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6aW50X3R5cGUgX19pbnRfdHlwZTsKICAgICAgdHlw
ZWRlZiBjdHlwZTxfQ2hhclQ+IF9fY3R5cGVfdHlwZTsKCiAgICAgIGNvbnN0IF9fY3R5cGVfdHlw
ZSYgX19jdCA9IHVzZV9mYWNldDxfX2N0eXBlX3R5cGU+KF9faW4uZ2V0bG9jKCkpOwogICAgICBj
b25zdCBfX2ludF90eXBlIF9fZW9mID0gX1RyYWl0czo6ZW9mKCk7CiAgICAgIF9fc3RyZWFtYnVm
X3R5cGUqIF9fc2IgPSBfX2luLnJkYnVmKCk7CiAgICAgIF9faW50X3R5cGUgX19jID0gX19zYi0+
c2dldGMoKTsKCiAgICAgIHdoaWxlICghX1RyYWl0czo6ZXFfaW50X3R5cGUoX19jLCBfX2VvZikK
ICAgICAgJiYgX19jdC5pcyhjdHlwZV9iYXNlOjpzcGFjZSwgX1RyYWl0czo6dG9fY2hhcl90eXBl
KF9fYykpKQogX19jID0gX19zYi0+c25leHRjKCk7CgogICAgICAgaWYgKF9UcmFpdHM6OmVxX2lu
dF90eXBlKF9fYywgX19lb2YpKQogIF9faW4uc2V0c3RhdGUoaW9zX2Jhc2U6OmVvZmJpdCk7CiAg
ICAgIHJldHVybiBfX2luOwogICAgfQoKCgoKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgYmFzaWNf
aXN0cmVhbTxjaGFyPjsKICBleHRlcm4gdGVtcGxhdGUgaXN0cmVhbSYgd3MoaXN0cmVhbSYpOwog
IGV4dGVybiB0ZW1wbGF0ZSBpc3RyZWFtJiBvcGVyYXRvcj4+KGlzdHJlYW0mLCBjaGFyJik7CiAg
ZXh0ZXJuIHRlbXBsYXRlIGlzdHJlYW0mIG9wZXJhdG9yPj4oaXN0cmVhbSYsIGNoYXIqKTsKICBl
eHRlcm4gdGVtcGxhdGUgaXN0cmVhbSYgb3BlcmF0b3I+Pihpc3RyZWFtJiwgdW5zaWduZWQgY2hh
ciYpOwogIGV4dGVybiB0ZW1wbGF0ZSBpc3RyZWFtJiBvcGVyYXRvcj4+KGlzdHJlYW0mLCBzaWdu
ZWQgY2hhciYpOwogIGV4dGVybiB0ZW1wbGF0ZSBpc3RyZWFtJiBvcGVyYXRvcj4+KGlzdHJlYW0m
LCB1bnNpZ25lZCBjaGFyKik7CiAgZXh0ZXJuIHRlbXBsYXRlIGlzdHJlYW0mIG9wZXJhdG9yPj4o
aXN0cmVhbSYsIHNpZ25lZCBjaGFyKik7CgogIGV4dGVybiB0ZW1wbGF0ZSBpc3RyZWFtJiBpc3Ry
ZWFtOjpfTV9leHRyYWN0KHVuc2lnbmVkIHNob3J0Jik7CiAgZXh0ZXJuIHRlbXBsYXRlIGlzdHJl
YW0mIGlzdHJlYW06Ol9NX2V4dHJhY3QodW5zaWduZWQgaW50Jik7CiAgZXh0ZXJuIHRlbXBsYXRl
IGlzdHJlYW0mIGlzdHJlYW06Ol9NX2V4dHJhY3QobG9uZyYpOwogIGV4dGVybiB0ZW1wbGF0ZSBp
c3RyZWFtJiBpc3RyZWFtOjpfTV9leHRyYWN0KHVuc2lnbmVkIGxvbmcmKTsKICBleHRlcm4gdGVt
cGxhdGUgaXN0cmVhbSYgaXN0cmVhbTo6X01fZXh0cmFjdChib29sJik7CgogIGV4dGVybiB0ZW1w
bGF0ZSBpc3RyZWFtJiBpc3RyZWFtOjpfTV9leHRyYWN0KGxvbmcgbG9uZyYpOwogIGV4dGVybiB0
ZW1wbGF0ZSBpc3RyZWFtJiBpc3RyZWFtOjpfTV9leHRyYWN0KHVuc2lnbmVkIGxvbmcgbG9uZyYp
OwoKICBleHRlcm4gdGVtcGxhdGUgaXN0cmVhbSYgaXN0cmVhbTo6X01fZXh0cmFjdChmbG9hdCYp
OwogIGV4dGVybiB0ZW1wbGF0ZSBpc3RyZWFtJiBpc3RyZWFtOjpfTV9leHRyYWN0KGRvdWJsZSYp
OwogIGV4dGVybiB0ZW1wbGF0ZSBpc3RyZWFtJiBpc3RyZWFtOjpfTV9leHRyYWN0KGxvbmcgZG91
YmxlJik7CiAgZXh0ZXJuIHRlbXBsYXRlIGlzdHJlYW0mIGlzdHJlYW06Ol9NX2V4dHJhY3Qodm9p
ZComKTsKCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGJhc2ljX2lvc3RyZWFtPGNoYXI+OwoKCiAg
ZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGJhc2ljX2lzdHJlYW08d2NoYXJfdD47CiAgZXh0ZXJuIHRl
bXBsYXRlIHdpc3RyZWFtJiB3cyh3aXN0cmVhbSYpOwogIGV4dGVybiB0ZW1wbGF0ZSB3aXN0cmVh
bSYgb3BlcmF0b3I+Pih3aXN0cmVhbSYsIHdjaGFyX3QmKTsKICBleHRlcm4gdGVtcGxhdGUgd2lz
dHJlYW0mIG9wZXJhdG9yPj4od2lzdHJlYW0mLCB3Y2hhcl90Kik7CgogIGV4dGVybiB0ZW1wbGF0
ZSB3aXN0cmVhbSYgd2lzdHJlYW06Ol9NX2V4dHJhY3QodW5zaWduZWQgc2hvcnQmKTsKICBleHRl
cm4gdGVtcGxhdGUgd2lzdHJlYW0mIHdpc3RyZWFtOjpfTV9leHRyYWN0KHVuc2lnbmVkIGludCYp
OwogIGV4dGVybiB0ZW1wbGF0ZSB3aXN0cmVhbSYgd2lzdHJlYW06Ol9NX2V4dHJhY3QobG9uZyYp
OwogIGV4dGVybiB0ZW1wbGF0ZSB3aXN0cmVhbSYgd2lzdHJlYW06Ol9NX2V4dHJhY3QodW5zaWdu
ZWQgbG9uZyYpOwogIGV4dGVybiB0ZW1wbGF0ZSB3aXN0cmVhbSYgd2lzdHJlYW06Ol9NX2V4dHJh
Y3QoYm9vbCYpOwoKICBleHRlcm4gdGVtcGxhdGUgd2lzdHJlYW0mIHdpc3RyZWFtOjpfTV9leHRy
YWN0KGxvbmcgbG9uZyYpOwogIGV4dGVybiB0ZW1wbGF0ZSB3aXN0cmVhbSYgd2lzdHJlYW06Ol9N
X2V4dHJhY3QodW5zaWduZWQgbG9uZyBsb25nJik7CgogIGV4dGVybiB0ZW1wbGF0ZSB3aXN0cmVh
bSYgd2lzdHJlYW06Ol9NX2V4dHJhY3QoZmxvYXQmKTsKICBleHRlcm4gdGVtcGxhdGUgd2lzdHJl
YW0mIHdpc3RyZWFtOjpfTV9leHRyYWN0KGRvdWJsZSYpOwogIGV4dGVybiB0ZW1wbGF0ZSB3aXN0
cmVhbSYgd2lzdHJlYW06Ol9NX2V4dHJhY3QobG9uZyBkb3VibGUmKTsKICBleHRlcm4gdGVtcGxh
dGUgd2lzdHJlYW0mIHdpc3RyZWFtOjpfTV9leHRyYWN0KHZvaWQqJik7CgogIGV4dGVybiB0ZW1w
bGF0ZSBjbGFzcyBiYXNpY19pb3N0cmVhbTx3Y2hhcl90PjsKCgoKCn0KIyA4ODMgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvaXN0cmVhbSIg
MiAzCiMgNjYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvaXRlcmF0b3IiIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9zdHJlYW1faXRlcmF0b3IuaCIgMSAzCiMg
MzEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvYml0cy9zdHJlYW1faXRlcmF0b3IuaCIgMwojZGVmaW5lIF9TVFJFQU1fSVRFUkFUT1JfSCAx
CgogICAgICAgCiMgMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy9zdHJlYW1faXRlcmF0b3IuaCIgMwoKCgpuYW1lc3BhY2Ugc3Rk
IF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKCgoKCgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NoYXJUID0gY2hhciwKICAgICAgICAg
ICB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiwgdHlwZW5hbWUgX0Rpc3Qg
PSBwdHJkaWZmX3Q+CiAgICBjbGFzcyBpc3RyZWFtX2l0ZXJhdG9yCiAgICA6IHB1YmxpYyBpdGVy
YXRvcjxpbnB1dF9pdGVyYXRvcl90YWcsIF9UcCwgX0Rpc3QsIGNvbnN0IF9UcCosIGNvbnN0IF9U
cCY+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsKICAg
ICAgdHlwZWRlZiBfVHJhaXRzIHRyYWl0c190eXBlOwogICAgICB0eXBlZGVmIGJhc2ljX2lzdHJl
YW08X0NoYXJULCBfVHJhaXRzPiBpc3RyZWFtX3R5cGU7CgogICAgcHJpdmF0ZToKICAgICAgaXN0
cmVhbV90eXBlKiBfTV9zdHJlYW07CiAgICAgIF9UcCBfTV92YWx1ZTsKICAgICAgYm9vbCBfTV9v
azsKCiAgICBwdWJsaWM6CgogICAgICBjb25zdGV4cHIgaXN0cmVhbV9pdGVyYXRvcigpCiAgICAg
IDogX01fc3RyZWFtKDApLCBfTV92YWx1ZSgpLCBfTV9vayhmYWxzZSkge30KCgogICAgICBpc3Ry
ZWFtX2l0ZXJhdG9yKGlzdHJlYW1fdHlwZSYgX19zKQogICAgICA6IF9NX3N0cmVhbSgmX19zKQog
ICAgICB7IF9NX3JlYWQoKTsgfQoKICAgICAgaXN0cmVhbV9pdGVyYXRvcihjb25zdCBpc3RyZWFt
X2l0ZXJhdG9yJiBfX29iaikKICAgICAgOiBfTV9zdHJlYW0oX19vYmouX01fc3RyZWFtKSwgX01f
dmFsdWUoX19vYmouX01fdmFsdWUpLAogICAgICAgIF9NX29rKF9fb2JqLl9NX29rKQogICAgICB7
IH0KCiAgICAgIGNvbnN0IF9UcCYKICAgICAgb3BlcmF0b3IqKCkgY29uc3QKICAgICAgewoKCiAg
ICAgICAgICAgICAgICAgICAgICAgIDsKIHJldHVybiBfTV92YWx1ZTsKICAgICAgfQoKICAgICAg
Y29uc3QgX1RwKgogICAgICBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJihvcGVyYXRvcioo
KSk7IH0KCiAgICAgIGlzdHJlYW1faXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKysoKQogICAgICB7
CgoKICAgICAgICAgICAgICAgICAgICAgICAgOwogX01fcmVhZCgpOwogcmV0dXJuICp0aGlzOwog
ICAgICB9CgogICAgICBpc3RyZWFtX2l0ZXJhdG9yCiAgICAgIG9wZXJhdG9yKysoaW50KQogICAg
ICB7CgoKICAgICAgICAgICAgICAgICAgICAgICAgOwogaXN0cmVhbV9pdGVyYXRvciBfX3RtcCA9
ICp0aGlzOwogX01fcmVhZCgpOwogcmV0dXJuIF9fdG1wOwogICAgICB9CgogICAgICBib29sCiAg
ICAgIF9NX2VxdWFsKGNvbnN0IGlzdHJlYW1faXRlcmF0b3ImIF9feCkgY29uc3QKICAgICAgeyBy
ZXR1cm4gKF9NX29rID09IF9feC5fTV9vaykgJiYgKCFfTV9vayB8fCBfTV9zdHJlYW0gPT0gX194
Ll9NX3N0cmVhbSk7IH0KCiAgICBwcml2YXRlOgogICAgICB2b2lkCiAgICAgIF9NX3JlYWQoKQog
ICAgICB7CiBfTV9vayA9IChfTV9zdHJlYW0gJiYgKl9NX3N0cmVhbSkgPyB0cnVlIDogZmFsc2U7
CiBpZiAoX01fb2spCiAgIHsKICAgICAqX01fc3RyZWFtID4+IF9NX3ZhbHVlOwogICAgIF9NX29r
ID0gKl9NX3N0cmVhbSA/IHRydWUgOiBmYWxzZTsKICAgfQogICAgICB9CiAgICB9OwoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5
cGVuYW1lIF9EaXN0PgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgaXN0cmVh
bV9pdGVyYXRvcjxfVHAsIF9DaGFyVCwgX1RyYWl0cywgX0Rpc3Q+JiBfX3gsCiAgICAgICAgY29u
c3QgaXN0cmVhbV9pdGVyYXRvcjxfVHAsIF9DaGFyVCwgX1RyYWl0cywgX0Rpc3Q+JiBfX3kpCiAg
ICB7IHJldHVybiBfX3guX01fZXF1YWwoX195KTsgfQoKCiAgdGVtcGxhdGUgPGNsYXNzIF9UcCwg
Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfRGlzdD4KICAgIGlubGluZSBib29s
CiAgICBvcGVyYXRvciE9KGNvbnN0IGlzdHJlYW1faXRlcmF0b3I8X1RwLCBfQ2hhclQsIF9UcmFp
dHMsIF9EaXN0PiYgX194LAogICAgICAgIGNvbnN0IGlzdHJlYW1faXRlcmF0b3I8X1RwLCBfQ2hh
clQsIF9UcmFpdHMsIF9EaXN0PiYgX195KQogICAgeyByZXR1cm4gIV9feC5fTV9lcXVhbChfX3kp
OyB9CiMgMTUyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL2JpdHMvc3RyZWFtX2l0ZXJhdG9yLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHAsIHR5cGVuYW1lIF9DaGFyVCA9IGNoYXIsCiAgICAgICAgICAgdHlwZW5hbWUgX1RyYWl0cyA9
IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3Mgb3N0cmVhbV9pdGVyYXRvcgogICAgOiBw
dWJsaWMgaXRlcmF0b3I8b3V0cHV0X2l0ZXJhdG9yX3RhZywgdm9pZCwgdm9pZCwgdm9pZCwgdm9p
ZD4KICAgIHsKICAgIHB1YmxpYzoKCgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAg
ICAgIHR5cGVkZWYgX1RyYWl0cyB0cmFpdHNfdHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19vc3Ry
ZWFtPF9DaGFyVCwgX1RyYWl0cz4gb3N0cmVhbV90eXBlOwoKCiAgICBwcml2YXRlOgogICAgICBv
c3RyZWFtX3R5cGUqIF9NX3N0cmVhbTsKICAgICAgY29uc3QgX0NoYXJUKiBfTV9zdHJpbmc7Cgog
ICAgcHVibGljOgoKICAgICAgb3N0cmVhbV9pdGVyYXRvcihvc3RyZWFtX3R5cGUmIF9fcykgOiBf
TV9zdHJlYW0oJl9fcyksIF9NX3N0cmluZygwKSB7fQojIDE4MyAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3N0cmVhbV9pdGVyYXRv
ci5oIiAzCiAgICAgIG9zdHJlYW1faXRlcmF0b3Iob3N0cmVhbV90eXBlJiBfX3MsIGNvbnN0IF9D
aGFyVCogX19jKQogICAgICA6IF9NX3N0cmVhbSgmX19zKSwgX01fc3RyaW5nKF9fYykgeyB9CgoK
ICAgICAgb3N0cmVhbV9pdGVyYXRvcihjb25zdCBvc3RyZWFtX2l0ZXJhdG9yJiBfX29iaikKICAg
ICAgOiBfTV9zdHJlYW0oX19vYmouX01fc3RyZWFtKSwgX01fc3RyaW5nKF9fb2JqLl9NX3N0cmlu
ZykgeyB9CgoKCiAgICAgIG9zdHJlYW1faXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yPShjb25zdCBf
VHAmIF9fdmFsdWUpCiAgICAgIHsKCgogICAgICAgICAgICAgICAgICAgICAgICA7CiAqX01fc3Ry
ZWFtIDw8IF9fdmFsdWU7CiBpZiAoX01fc3RyaW5nKSAqX01fc3RyZWFtIDw8IF9NX3N0cmluZzsK
IHJldHVybiAqdGhpczsKICAgICAgfQoKICAgICAgb3N0cmVhbV9pdGVyYXRvciYKICAgICAgb3Bl
cmF0b3IqKCkKICAgICAgeyByZXR1cm4gKnRoaXM7IH0KCiAgICAgIG9zdHJlYW1faXRlcmF0b3Im
CiAgICAgIG9wZXJhdG9yKysoKQogICAgICB7IHJldHVybiAqdGhpczsgfQoKICAgICAgb3N0cmVh
bV9pdGVyYXRvciYKICAgICAgb3BlcmF0b3IrKyhpbnQpCiAgICAgIHsgcmV0dXJuICp0aGlzOyB9
CiAgICB9OwoKCgoKfQojIDY3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2l0ZXJhdG9yIiAyIDMKIyAyNyAiLi4vLi4vU291cmNlL1dURi93
dGYvSGFzaFRhYmxlLmgiIDIKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL211dGV4IiAxIDMKIyAzMCAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9tdXRleCIgMwojZGVmaW5lIF9H
TElCQ1hYX01VVEVYIDEKCiAgICAgICAKIyAzMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9tdXRleCIgMwojIDQzICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL211dGV4IiAzCiMgMSAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9z
eXN0ZW1fZXJyb3IiIDEgMwojIDMwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL3N5c3RlbV9lcnJvciIgMwojZGVmaW5lIF9HTElCQ1hYX1NZ
U1RFTV9FUlJPUiAxCgogICAgICAgCiMgMzMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvc3lzdGVtX2Vycm9yIiAzCgoKCgoKCiMgMSAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvYml0cy9lcnJvcl9jb25zdGFudHMuaCIgMSAzCiMgMzEgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvZXJyb3JfY29uc3RhbnRzLmgiIDMKI2RlZmluZSBf
R0xJQkNYWF9FUlJPUl9DT05TVEFOVFMgMQoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9jZXJybm8iIDEgMwojIDM5ICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2NlcnJubyIg
MwogICAgICAgCiMgNDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvY2Vycm5vIiAzCgojIDEgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAxIDMg
NAojIDcxICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMyA0CiN1bmRlZiBfX25lZWRfZXJyb3JfdAoj
IDQyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OS4zL2NlcnJubyIgMiAzCiMgMzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvZXJyb3Jf
Y29uc3RhbnRzLmgiIDIgMwoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmls
aXR5X18gKCJkZWZhdWx0IikpKQp7CgoKICBlbnVtIGNsYXNzIGVycmMKICAgIHsKICAgICAgYWRk
cmVzc19mYW1pbHlfbm90X3N1cHBvcnRlZCA9IDk3LAogICAgICBhZGRyZXNzX2luX3VzZSA9IDk4
LAogICAgICBhZGRyZXNzX25vdF9hdmFpbGFibGUgPSA5OSwKICAgICAgYWxyZWFkeV9jb25uZWN0
ZWQgPSAxMDYsCiAgICAgIGFyZ3VtZW50X2xpc3RfdG9vX2xvbmcgPSA3LAogICAgICBhcmd1bWVu
dF9vdXRfb2ZfZG9tYWluID0gMzMsCiAgICAgIGJhZF9hZGRyZXNzID0gMTQsCiAgICAgIGJhZF9m
aWxlX2Rlc2NyaXB0b3IgPSA5LAoKCiAgICAgIGJhZF9tZXNzYWdlID0gNzQsCgoKICAgICAgYnJv
a2VuX3BpcGUgPSAzMiwKICAgICAgY29ubmVjdGlvbl9hYm9ydGVkID0gMTAzLAogICAgICBjb25u
ZWN0aW9uX2FscmVhZHlfaW5fcHJvZ3Jlc3MgPSAxMTQsCiAgICAgIGNvbm5lY3Rpb25fcmVmdXNl
ZCA9IDExMSwKICAgICAgY29ubmVjdGlvbl9yZXNldCA9IDEwNCwKICAgICAgY3Jvc3NfZGV2aWNl
X2xpbmsgPSAxOCwKICAgICAgZGVzdGluYXRpb25fYWRkcmVzc19yZXF1aXJlZCA9IDg5LAogICAg
ICBkZXZpY2Vfb3JfcmVzb3VyY2VfYnVzeSA9IDE2LAogICAgICBkaXJlY3Rvcnlfbm90X2VtcHR5
ID0gMzksCiAgICAgIGV4ZWN1dGFibGVfZm9ybWF0X2Vycm9yID0gOCwKICAgICAgZmlsZV9leGlz
dHMgPSAxNywKICAgICAgZmlsZV90b29fbGFyZ2UgPSAyNywKICAgICAgZmlsZW5hbWVfdG9vX2xv
bmcgPSAzNiwKICAgICAgZnVuY3Rpb25fbm90X3N1cHBvcnRlZCA9IDM4LAogICAgICBob3N0X3Vu
cmVhY2hhYmxlID0gMTEzLAoKCiAgICAgIGlkZW50aWZpZXJfcmVtb3ZlZCA9IDQzLAoKCiAgICAg
IGlsbGVnYWxfYnl0ZV9zZXF1ZW5jZSA9IDg0LAogICAgICBpbmFwcHJvcHJpYXRlX2lvX2NvbnRy
b2xfb3BlcmF0aW9uID0gMjUsCiAgICAgIGludGVycnVwdGVkID0gNCwKICAgICAgaW52YWxpZF9h
cmd1bWVudCA9IDIyLAogICAgICBpbnZhbGlkX3NlZWsgPSAyOSwKICAgICAgaW9fZXJyb3IgPSA1
LAogICAgICBpc19hX2RpcmVjdG9yeSA9IDIxLAogICAgICBtZXNzYWdlX3NpemUgPSA5MCwKICAg
ICAgbmV0d29ya19kb3duID0gMTAwLAogICAgICBuZXR3b3JrX3Jlc2V0ID0gMTAyLAogICAgICBu
ZXR3b3JrX3VucmVhY2hhYmxlID0gMTAxLAogICAgICBub19idWZmZXJfc3BhY2UgPSAxMDUsCiAg
ICAgIG5vX2NoaWxkX3Byb2Nlc3MgPSAxMCwKCgogICAgICBub19saW5rID0gNjcsCgoKICAgICAg
bm9fbG9ja19hdmFpbGFibGUgPSAzNywKCgogICAgICBub19tZXNzYWdlX2F2YWlsYWJsZSA9IDYx
LAoKCiAgICAgIG5vX21lc3NhZ2UgPSA0MiwKICAgICAgbm9fcHJvdG9jb2xfb3B0aW9uID0gOTIs
CiAgICAgIG5vX3NwYWNlX29uX2RldmljZSA9IDI4LAoKCiAgICAgIG5vX3N0cmVhbV9yZXNvdXJj
ZXMgPSA2MywKCgogICAgICBub19zdWNoX2RldmljZV9vcl9hZGRyZXNzID0gNiwKICAgICAgbm9f
c3VjaF9kZXZpY2UgPSAxOSwKICAgICAgbm9fc3VjaF9maWxlX29yX2RpcmVjdG9yeSA9IDIsCiAg
ICAgIG5vX3N1Y2hfcHJvY2VzcyA9IDMsCiAgICAgIG5vdF9hX2RpcmVjdG9yeSA9IDIwLAogICAg
ICBub3RfYV9zb2NrZXQgPSA4OCwKCgogICAgICBub3RfYV9zdHJlYW0gPSA2MCwKCgogICAgICBu
b3RfY29ubmVjdGVkID0gMTA3LAogICAgICBub3RfZW5vdWdoX21lbW9yeSA9IDEyLAoKCiAgICAg
IG5vdF9zdXBwb3J0ZWQgPSA5NSwKCgoKICAgICAgb3BlcmF0aW9uX2NhbmNlbGVkID0gMTI1LAoK
CiAgICAgIG9wZXJhdGlvbl9pbl9wcm9ncmVzcyA9IDExNSwKICAgICAgb3BlcmF0aW9uX25vdF9w
ZXJtaXR0ZWQgPSAxLAogICAgICBvcGVyYXRpb25fbm90X3N1cHBvcnRlZCA9IDk1LAogICAgICBv
cGVyYXRpb25fd291bGRfYmxvY2sgPSAxMSwKCgogICAgICBvd25lcl9kZWFkID0gMTMwLAoKCiAg
ICAgIHBlcm1pc3Npb25fZGVuaWVkID0gMTMsCgoKICAgICAgcHJvdG9jb2xfZXJyb3IgPSA3MSwK
CgogICAgICBwcm90b2NvbF9ub3Rfc3VwcG9ydGVkID0gOTMsCiAgICAgIHJlYWRfb25seV9maWxl
X3N5c3RlbSA9IDMwLAogICAgICByZXNvdXJjZV9kZWFkbG9ja193b3VsZF9vY2N1ciA9IDM1LAog
ICAgICByZXNvdXJjZV91bmF2YWlsYWJsZV90cnlfYWdhaW4gPSAxMSwKICAgICAgcmVzdWx0X291
dF9vZl9yYW5nZSA9IDM0LAoKCiAgICAgIHN0YXRlX25vdF9yZWNvdmVyYWJsZSA9IDEzMSwKCgoK
ICAgICAgc3RyZWFtX3RpbWVvdXQgPSA2MiwKCgoKICAgICAgdGV4dF9maWxlX2J1c3kgPSAyNiwK
CgogICAgICB0aW1lZF9vdXQgPSAxMTAsCiAgICAgIHRvb19tYW55X2ZpbGVzX29wZW5faW5fc3lz
dGVtID0gMjMsCiAgICAgIHRvb19tYW55X2ZpbGVzX29wZW4gPSAyNCwKICAgICAgdG9vX21hbnlf
bGlua3MgPSAzMSwKICAgICAgdG9vX21hbnlfc3ltYm9saWNfbGlua19sZXZlbHMgPSA0MCwKCgog
ICAgICB2YWx1ZV90b29fbGFyZ2UgPSA3NSwKCgogICAgICB3cm9uZ19wcm90b2NvbF90eXBlID0g
OTEKICAgIH07CgoKfQojIDQwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL3N5c3RlbV9lcnJvciIgMiAzCgoKCm5hbWVzcGFjZSBzdGQgX19h
dHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCiAgY2xhc3MgZXJy
b3JfY29kZTsKICBjbGFzcyBlcnJvcl9jb25kaXRpb247CiAgY2xhc3MgZXJyb3JfY2F0ZWdvcnk7
CiAgY2xhc3Mgc3lzdGVtX2Vycm9yOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3Ry
dWN0IGlzX2Vycm9yX2NvZGVfZW51bSA6IHB1YmxpYyBmYWxzZV90eXBlIHsgfTsKCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc19lcnJvcl9jb25kaXRpb25fZW51bSA6IHB1
YmxpYyBmYWxzZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IGlzX2Vycm9yX2Nv
bmRpdGlvbl9lbnVtPGVycmM+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKCgogIGNsYXNz
IGVycm9yX2NhdGVnb3J5CiAgewogIHB1YmxpYzoKCgoKICAgIGNvbnN0ZXhwciBlcnJvcl9jYXRl
Z29yeSgpIG5vZXhjZXB0ID0gZGVmYXVsdDsKCgogICAgdmlydHVhbCB+ZXJyb3JfY2F0ZWdvcnko
KTsKCiAgICBlcnJvcl9jYXRlZ29yeShjb25zdCBlcnJvcl9jYXRlZ29yeSYpID0gZGVsZXRlOwog
ICAgZXJyb3JfY2F0ZWdvcnkmIG9wZXJhdG9yPShjb25zdCBlcnJvcl9jYXRlZ29yeSYpID0gZGVs
ZXRlOwoKICAgIHZpcnR1YWwgY29uc3QgY2hhcioKICAgIG5hbWUoKSBjb25zdCBub2V4Y2VwdCA9
IDA7CgogICAgdmlydHVhbCBzdHJpbmcKICAgIG1lc3NhZ2UoaW50KSBjb25zdCA9IDA7CgogICAg
dmlydHVhbCBlcnJvcl9jb25kaXRpb24KICAgIGRlZmF1bHRfZXJyb3JfY29uZGl0aW9uKGludCBf
X2kpIGNvbnN0IG5vZXhjZXB0OwoKICAgIHZpcnR1YWwgYm9vbAogICAgZXF1aXZhbGVudChpbnQg
X19pLCBjb25zdCBlcnJvcl9jb25kaXRpb24mIF9fY29uZCkgY29uc3Qgbm9leGNlcHQ7CgogICAg
dmlydHVhbCBib29sCiAgICBlcXVpdmFsZW50KGNvbnN0IGVycm9yX2NvZGUmIF9fY29kZSwgaW50
IF9faSkgY29uc3Qgbm9leGNlcHQ7CgogICAgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IGVycm9y
X2NhdGVnb3J5JiBfX290aGVyKSBjb25zdCBub2V4Y2VwdAogICAgeyByZXR1cm4gbGVzczxjb25z
dCBlcnJvcl9jYXRlZ29yeSo+KCkodGhpcywgJl9fb3RoZXIpOyB9CgogICAgYm9vbAogICAgb3Bl
cmF0b3I9PShjb25zdCBlcnJvcl9jYXRlZ29yeSYgX19vdGhlcikgY29uc3Qgbm9leGNlcHQKICAg
IHsgcmV0dXJuIHRoaXMgPT0gJl9fb3RoZXI7IH0KCiAgICBib29sCiAgICBvcGVyYXRvciE9KGNv
bnN0IGVycm9yX2NhdGVnb3J5JiBfX290aGVyKSBjb25zdCBub2V4Y2VwdAogICAgeyByZXR1cm4g
dGhpcyAhPSAmX19vdGhlcjsgfQogIH07CgoKICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkg
Y29uc3QgZXJyb3JfY2F0ZWdvcnkmIHN5c3RlbV9jYXRlZ29yeSgpIG5vZXhjZXB0OwogIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKSBjb25zdCBlcnJvcl9jYXRlZ29yeSYgZ2VuZXJpY19jYXRl
Z29yeSgpIG5vZXhjZXB0OwoKICBlcnJvcl9jb2RlIG1ha2VfZXJyb3JfY29kZShlcnJjKSBub2V4
Y2VwdDsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGhhc2g7CgoKCiAgc3Ry
dWN0IGVycm9yX2NvZGUKICB7CiAgICBlcnJvcl9jb2RlKCkgbm9leGNlcHQKICAgIDogX01fdmFs
dWUoMCksIF9NX2NhdCgmc3lzdGVtX2NhdGVnb3J5KCkpIHsgfQoKICAgIGVycm9yX2NvZGUoaW50
IF9fdiwgY29uc3QgZXJyb3JfY2F0ZWdvcnkmIF9fY2F0KSBub2V4Y2VwdAogICAgOiBfTV92YWx1
ZShfX3YpLCBfTV9jYXQoJl9fY2F0KSB7IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRXJyb3JD
b2RlRW51bSwgdHlwZW5hbWUgPSB0eXBlbmFtZQogICAgICBlbmFibGVfaWY8aXNfZXJyb3JfY29k
ZV9lbnVtPF9FcnJvckNvZGVFbnVtPjo6dmFsdWU+Ojp0eXBlPgogICAgICBlcnJvcl9jb2RlKF9F
cnJvckNvZGVFbnVtIF9fZSkgbm9leGNlcHQKICAgICAgeyAqdGhpcyA9IG1ha2VfZXJyb3JfY29k
ZShfX2UpOyB9CgogICAgdm9pZAogICAgYXNzaWduKGludCBfX3YsIGNvbnN0IGVycm9yX2NhdGVn
b3J5JiBfX2NhdCkgbm9leGNlcHQKICAgIHsKICAgICAgX01fdmFsdWUgPSBfX3Y7CiAgICAgIF9N
X2NhdCA9ICZfX2NhdDsKICAgIH0KCiAgICB2b2lkCiAgICBjbGVhcigpIG5vZXhjZXB0CiAgICB7
IGFzc2lnbigwLCBzeXN0ZW1fY2F0ZWdvcnkoKSk7IH0KCgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
X0Vycm9yQ29kZUVudW0+CiAgICAgIHR5cGVuYW1lIGVuYWJsZV9pZjxpc19lcnJvcl9jb2RlX2Vu
dW08X0Vycm9yQ29kZUVudW0+Ojp2YWx1ZSwKICAgIGVycm9yX2NvZGUmPjo6dHlwZQogICAgICBv
cGVyYXRvcj0oX0Vycm9yQ29kZUVudW0gX19lKSBub2V4Y2VwdAogICAgICB7IHJldHVybiAqdGhp
cyA9IG1ha2VfZXJyb3JfY29kZShfX2UpOyB9CgogICAgaW50CiAgICB2YWx1ZSgpIGNvbnN0IG5v
ZXhjZXB0IHsgcmV0dXJuIF9NX3ZhbHVlOyB9CgogICAgY29uc3QgZXJyb3JfY2F0ZWdvcnkmCiAg
ICBjYXRlZ29yeSgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuICpfTV9jYXQ7IH0KCiAgICBlcnJv
cl9jb25kaXRpb24KICAgIGRlZmF1bHRfZXJyb3JfY29uZGl0aW9uKCkgY29uc3Qgbm9leGNlcHQ7
CgogICAgc3RyaW5nCiAgICBtZXNzYWdlKCkgY29uc3QKICAgIHsgcmV0dXJuIGNhdGVnb3J5KCku
bWVzc2FnZSh2YWx1ZSgpKTsgfQoKICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCBu
b2V4Y2VwdAogICAgeyByZXR1cm4gX01fdmFsdWUgIT0gMCA/IHRydWUgOiBmYWxzZTsgfQoKCiAg
cHJpdmF0ZToKICAgIGZyaWVuZCBjbGFzcyBoYXNoPGVycm9yX2NvZGU+OwoKICAgIGludCBfTV92
YWx1ZTsKICAgIGNvbnN0IGVycm9yX2NhdGVnb3J5KiBfTV9jYXQ7CiAgfTsKCgogIGlubGluZSBl
cnJvcl9jb2RlCiAgbWFrZV9lcnJvcl9jb2RlKGVycmMgX19lKSBub2V4Y2VwdAogIHsgcmV0dXJu
IGVycm9yX2NvZGUoc3RhdGljX2Nhc3Q8aW50PihfX2UpLCBnZW5lcmljX2NhdGVnb3J5KCkpOyB9
CgogIGlubGluZSBib29sCiAgb3BlcmF0b3I8KGNvbnN0IGVycm9yX2NvZGUmIF9fbGhzLCBjb25z
dCBlcnJvcl9jb2RlJiBfX3Jocykgbm9leGNlcHQKICB7CiAgICByZXR1cm4gKF9fbGhzLmNhdGVn
b3J5KCkgPCBfX3Jocy5jYXRlZ29yeSgpCiAgICAgfHwgKF9fbGhzLmNhdGVnb3J5KCkgPT0gX19y
aHMuY2F0ZWdvcnkoKQogICYmIF9fbGhzLnZhbHVlKCkgPCBfX3Jocy52YWx1ZSgpKSk7CiAgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19v
c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08X0No
YXJULCBfVHJhaXRzPiYgX19vcywgY29uc3QgZXJyb3JfY29kZSYgX19lKQogICAgeyByZXR1cm4g
KF9fb3MgPDwgX19lLmNhdGVnb3J5KCkubmFtZSgpIDw8ICc6JyA8PCBfX2UudmFsdWUoKSk7IH0K
CiAgZXJyb3JfY29uZGl0aW9uIG1ha2VfZXJyb3JfY29uZGl0aW9uKGVycmMpIG5vZXhjZXB0OwoK
CgogIHN0cnVjdCBlcnJvcl9jb25kaXRpb24KICB7CiAgICBlcnJvcl9jb25kaXRpb24oKSBub2V4
Y2VwdAogICAgOiBfTV92YWx1ZSgwKSwgX01fY2F0KCZnZW5lcmljX2NhdGVnb3J5KCkpIHsgfQoK
ICAgIGVycm9yX2NvbmRpdGlvbihpbnQgX192LCBjb25zdCBlcnJvcl9jYXRlZ29yeSYgX19jYXQp
IG5vZXhjZXB0CiAgICA6IF9NX3ZhbHVlKF9fdiksIF9NX2NhdCgmX19jYXQpIHsgfQoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9FcnJvckNvbmRpdGlvbkVudW0sIHR5cGVuYW1lID0gdHlwZW5hbWUK
ICBlbmFibGVfaWY8aXNfZXJyb3JfY29uZGl0aW9uX2VudW08X0Vycm9yQ29uZGl0aW9uRW51bT46
OnZhbHVlPjo6dHlwZT4KICAgICAgZXJyb3JfY29uZGl0aW9uKF9FcnJvckNvbmRpdGlvbkVudW0g
X19lKSBub2V4Y2VwdAogICAgICB7ICp0aGlzID0gbWFrZV9lcnJvcl9jb25kaXRpb24oX19lKTsg
fQoKICAgIHZvaWQKICAgIGFzc2lnbihpbnQgX192LCBjb25zdCBlcnJvcl9jYXRlZ29yeSYgX19j
YXQpIG5vZXhjZXB0CiAgICB7CiAgICAgIF9NX3ZhbHVlID0gX192OwogICAgICBfTV9jYXQgPSAm
X19jYXQ7CiAgICB9CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9FcnJvckNvbmRpdGlvbkVudW0+
CiAgICAgIHR5cGVuYW1lIGVuYWJsZV9pZjxpc19lcnJvcl9jb25kaXRpb25fZW51bQogICAgPF9F
cnJvckNvbmRpdGlvbkVudW0+Ojp2YWx1ZSwgZXJyb3JfY29uZGl0aW9uJj46OnR5cGUKICAgICAg
b3BlcmF0b3I9KF9FcnJvckNvbmRpdGlvbkVudW0gX19lKSBub2V4Y2VwdAogICAgICB7IHJldHVy
biAqdGhpcyA9IG1ha2VfZXJyb3JfY29uZGl0aW9uKF9fZSk7IH0KCiAgICB2b2lkCiAgICBjbGVh
cigpIG5vZXhjZXB0CiAgICB7IGFzc2lnbigwLCBnZW5lcmljX2NhdGVnb3J5KCkpOyB9CgoKICAg
IGludAogICAgdmFsdWUoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfTV92YWx1ZTsgfQoKICAg
IGNvbnN0IGVycm9yX2NhdGVnb3J5JgogICAgY2F0ZWdvcnkoKSBjb25zdCBub2V4Y2VwdCB7IHJl
dHVybiAqX01fY2F0OyB9CgogICAgc3RyaW5nCiAgICBtZXNzYWdlKCkgY29uc3QKICAgIHsgcmV0
dXJuIGNhdGVnb3J5KCkubWVzc2FnZSh2YWx1ZSgpKTsgfQoKICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCBub2V4Y2VwdAogICAgeyByZXR1cm4gX01fdmFsdWUgIT0gMCA/IHRydWUg
OiBmYWxzZTsgfQoKCiAgcHJpdmF0ZToKICAgIGludCBfTV92YWx1ZTsKICAgIGNvbnN0IGVycm9y
X2NhdGVnb3J5KiBfTV9jYXQ7CiAgfTsKCgogIGlubGluZSBlcnJvcl9jb25kaXRpb24KICBtYWtl
X2Vycm9yX2NvbmRpdGlvbihlcnJjIF9fZSkgbm9leGNlcHQKICB7IHJldHVybiBlcnJvcl9jb25k
aXRpb24oc3RhdGljX2Nhc3Q8aW50PihfX2UpLCBnZW5lcmljX2NhdGVnb3J5KCkpOyB9CgogIGlu
bGluZSBib29sCiAgb3BlcmF0b3I8KGNvbnN0IGVycm9yX2NvbmRpdGlvbiYgX19saHMsCiAgICAg
Y29uc3QgZXJyb3JfY29uZGl0aW9uJiBfX3Jocykgbm9leGNlcHQKICB7CiAgICByZXR1cm4gKF9f
bGhzLmNhdGVnb3J5KCkgPCBfX3Jocy5jYXRlZ29yeSgpCiAgICAgfHwgKF9fbGhzLmNhdGVnb3J5
KCkgPT0gX19yaHMuY2F0ZWdvcnkoKQogICYmIF9fbGhzLnZhbHVlKCkgPCBfX3Jocy52YWx1ZSgp
KSk7CiAgfQoKCiAgaW5saW5lIGJvb2wKICBvcGVyYXRvcj09KGNvbnN0IGVycm9yX2NvZGUmIF9f
bGhzLCBjb25zdCBlcnJvcl9jb2RlJiBfX3Jocykgbm9leGNlcHQKICB7IHJldHVybiAoX19saHMu
Y2F0ZWdvcnkoKSA9PSBfX3Jocy5jYXRlZ29yeSgpCiAgICAgJiYgX19saHMudmFsdWUoKSA9PSBf
X3Jocy52YWx1ZSgpKTsgfQoKICBpbmxpbmUgYm9vbAogIG9wZXJhdG9yPT0oY29uc3QgZXJyb3Jf
Y29kZSYgX19saHMsIGNvbnN0IGVycm9yX2NvbmRpdGlvbiYgX19yaHMpIG5vZXhjZXB0CiAgewog
ICAgcmV0dXJuIChfX2xocy5jYXRlZ29yeSgpLmVxdWl2YWxlbnQoX19saHMudmFsdWUoKSwgX19y
aHMpCiAgICAgfHwgX19yaHMuY2F0ZWdvcnkoKS5lcXVpdmFsZW50KF9fbGhzLCBfX3Jocy52YWx1
ZSgpKSk7CiAgfQoKICBpbmxpbmUgYm9vbAogIG9wZXJhdG9yPT0oY29uc3QgZXJyb3JfY29uZGl0
aW9uJiBfX2xocywgY29uc3QgZXJyb3JfY29kZSYgX19yaHMpIG5vZXhjZXB0CiAgewogICAgcmV0
dXJuIChfX3Jocy5jYXRlZ29yeSgpLmVxdWl2YWxlbnQoX19yaHMudmFsdWUoKSwgX19saHMpCiAg
ICAgfHwgX19saHMuY2F0ZWdvcnkoKS5lcXVpdmFsZW50KF9fcmhzLCBfX2xocy52YWx1ZSgpKSk7
CiAgfQoKICBpbmxpbmUgYm9vbAogIG9wZXJhdG9yPT0oY29uc3QgZXJyb3JfY29uZGl0aW9uJiBf
X2xocywKICAgICAgY29uc3QgZXJyb3JfY29uZGl0aW9uJiBfX3Jocykgbm9leGNlcHQKICB7CiAg
ICByZXR1cm4gKF9fbGhzLmNhdGVnb3J5KCkgPT0gX19yaHMuY2F0ZWdvcnkoKQogICAgICYmIF9f
bGhzLnZhbHVlKCkgPT0gX19yaHMudmFsdWUoKSk7CiAgfQoKICBpbmxpbmUgYm9vbAogIG9wZXJh
dG9yIT0oY29uc3QgZXJyb3JfY29kZSYgX19saHMsIGNvbnN0IGVycm9yX2NvZGUmIF9fcmhzKSBu
b2V4Y2VwdAogIHsgcmV0dXJuICEoX19saHMgPT0gX19yaHMpOyB9CgogIGlubGluZSBib29sCiAg
b3BlcmF0b3IhPShjb25zdCBlcnJvcl9jb2RlJiBfX2xocywgY29uc3QgZXJyb3JfY29uZGl0aW9u
JiBfX3Jocykgbm9leGNlcHQKICB7IHJldHVybiAhKF9fbGhzID09IF9fcmhzKTsgfQoKICBpbmxp
bmUgYm9vbAogIG9wZXJhdG9yIT0oY29uc3QgZXJyb3JfY29uZGl0aW9uJiBfX2xocywgY29uc3Qg
ZXJyb3JfY29kZSYgX19yaHMpIG5vZXhjZXB0CiAgeyByZXR1cm4gIShfX2xocyA9PSBfX3Jocyk7
IH0KCiAgaW5saW5lIGJvb2wKICBvcGVyYXRvciE9KGNvbnN0IGVycm9yX2NvbmRpdGlvbiYgX19s
aHMsCiAgICAgIGNvbnN0IGVycm9yX2NvbmRpdGlvbiYgX19yaHMpIG5vZXhjZXB0CiAgeyByZXR1
cm4gIShfX2xocyA9PSBfX3Jocyk7IH0KCgoKCgoKCiAgY2xhc3Mgc3lzdGVtX2Vycm9yIDogcHVi
bGljIHN0ZDo6cnVudGltZV9lcnJvcgogIHsKICBwcml2YXRlOgogICAgZXJyb3JfY29kZSBfTV9j
b2RlOwoKICBwdWJsaWM6CiAgICBzeXN0ZW1fZXJyb3IoZXJyb3JfY29kZSBfX2VjID0gZXJyb3Jf
Y29kZSgpKQogICAgOiBydW50aW1lX2Vycm9yKF9fZWMubWVzc2FnZSgpKSwgX01fY29kZShfX2Vj
KSB7IH0KCiAgICBzeXN0ZW1fZXJyb3IoZXJyb3JfY29kZSBfX2VjLCBjb25zdCBzdHJpbmcmIF9f
d2hhdCkKICAgIDogcnVudGltZV9lcnJvcihfX3doYXQgKyAiOiAiICsgX19lYy5tZXNzYWdlKCkp
LCBfTV9jb2RlKF9fZWMpIHsgfQojIDMzNSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9zeXN0ZW1fZXJyb3IiIDMKICAgIHN5c3RlbV9lcnJv
cihpbnQgX192LCBjb25zdCBlcnJvcl9jYXRlZ29yeSYgX19lY2F0KQogICAgOiBydW50aW1lX2Vy
cm9yKGVycm9yX2NvZGUoX192LCBfX2VjYXQpLm1lc3NhZ2UoKSksCiAgICAgIF9NX2NvZGUoX192
LCBfX2VjYXQpIHsgfQoKICAgIHN5c3RlbV9lcnJvcihpbnQgX192LCBjb25zdCBlcnJvcl9jYXRl
Z29yeSYgX19lY2F0LCBjb25zdCBzdHJpbmcmIF9fd2hhdCkKICAgIDogcnVudGltZV9lcnJvcihf
X3doYXQgKyAiOiAiICsgZXJyb3JfY29kZShfX3YsIF9fZWNhdCkubWVzc2FnZSgpKSwKICAgICAg
X01fY29kZShfX3YsIF9fZWNhdCkgeyB9CgogICAgdmlydHVhbCB+c3lzdGVtX2Vycm9yKCkgbm9l
eGNlcHQ7CgogICAgY29uc3QgZXJyb3JfY29kZSYKICAgIGNvZGUoKSBjb25zdCBub2V4Y2VwdCB7
IHJldHVybiBfTV9jb2RlOyB9CiAgfTsKCgp9CgoKCgoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0
ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCgogIHRlbXBsYXRlPD4KICAg
IHN0cnVjdCBoYXNoPGVycm9yX2NvZGU+CiAgICA6IHB1YmxpYyBfX2hhc2hfYmFzZTxzaXplX3Qs
IGVycm9yX2NvZGU+CiAgICB7CiAgICAgIHNpemVfdAogICAgICBvcGVyYXRvcigpKGNvbnN0IGVy
cm9yX2NvZGUmIF9fZSkgY29uc3Qgbm9leGNlcHQKICAgICAgewogY29uc3Qgc2l6ZV90IF9fdG1w
ID0gc3RkOjpfSGFzaF9pbXBsOjpoYXNoKF9fZS5fTV92YWx1ZSk7CiByZXR1cm4gc3RkOjpfSGFz
aF9pbXBsOjpfX2hhc2hfY29tYmluZShfX2UuX01fY2F0LCBfX3RtcCk7CiAgICAgIH0KICAgIH07
CgoKfQojIDQ0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL211dGV4IiAyIDMKCgoKCgoKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAo
KF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCgoKICBjbGFzcyBfX211dGV4X2Jhc2UK
ICB7CiAgcHJvdGVjdGVkOgogICAgdHlwZWRlZiBfX2d0aHJlYWRfbXV0ZXhfdCBfX25hdGl2ZV90
eXBlOwoKCiAgICBfX25hdGl2ZV90eXBlIF9NX211dGV4ID0geyB7IDAsIDAsIDAsIDAsIDAsIHsg
MCB9IH0gfTsKCiAgICBjb25zdGV4cHIgX19tdXRleF9iYXNlKCkgbm9leGNlcHQgPSBkZWZhdWx0
OwojIDc4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL211dGV4IiAzCiAgICBfX211dGV4X2Jhc2UoY29uc3QgX19tdXRleF9iYXNlJikgPSBk
ZWxldGU7CiAgICBfX211dGV4X2Jhc2UmIG9wZXJhdG9yPShjb25zdCBfX211dGV4X2Jhc2UmKSA9
IGRlbGV0ZTsKICB9OwoKCiAgY2xhc3MgX19yZWN1cnNpdmVfbXV0ZXhfYmFzZQogIHsKICBwcm90
ZWN0ZWQ6CiAgICB0eXBlZGVmIF9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfdCBfX25hdGl2ZV90
eXBlOwoKICAgIF9fcmVjdXJzaXZlX211dGV4X2Jhc2UoY29uc3QgX19yZWN1cnNpdmVfbXV0ZXhf
YmFzZSYpID0gZGVsZXRlOwogICAgX19yZWN1cnNpdmVfbXV0ZXhfYmFzZSYgb3BlcmF0b3I9KGNv
bnN0IF9fcmVjdXJzaXZlX211dGV4X2Jhc2UmKSA9IGRlbGV0ZTsKCgogICAgX19uYXRpdmVfdHlw
ZSBfTV9tdXRleCA9IHsgeyAwLCAwLCAwLCBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRV9OUCwgMCwg
eyAwIH0gfSB9OwoKICAgIF9fcmVjdXJzaXZlX211dGV4X2Jhc2UoKSA9IGRlZmF1bHQ7CiMgMTA3
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L211dGV4IiAzCiAgfTsKIyAxMTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvbXV0ZXgiIDMKICBjbGFzcyBtdXRleCA6IHByaXZhdGUgX19t
dXRleF9iYXNlCiAgewogIHB1YmxpYzoKICAgIHR5cGVkZWYgX19uYXRpdmVfdHlwZSogbmF0aXZl
X2hhbmRsZV90eXBlOwoKCiAgICBjb25zdGV4cHIKCiAgICBtdXRleCgpIG5vZXhjZXB0ID0gZGVm
YXVsdDsKICAgIH5tdXRleCgpID0gZGVmYXVsdDsKCiAgICBtdXRleChjb25zdCBtdXRleCYpID0g
ZGVsZXRlOwogICAgbXV0ZXgmIG9wZXJhdG9yPShjb25zdCBtdXRleCYpID0gZGVsZXRlOwoKICAg
IHZvaWQKICAgIGxvY2soKQogICAgewogICAgICBpbnQgX19lID0gX19ndGhyZWFkX211dGV4X2xv
Y2soJl9NX211dGV4KTsKCgogICAgICBpZiAoX19lKQogX190aHJvd19zeXN0ZW1fZXJyb3IoX19l
KTsKICAgIH0KCiAgICBib29sCiAgICB0cnlfbG9jaygpIG5vZXhjZXB0CiAgICB7CgogICAgICBy
ZXR1cm4gIV9fZ3RocmVhZF9tdXRleF90cnlsb2NrKCZfTV9tdXRleCk7CiAgICB9CgogICAgdm9p
ZAogICAgdW5sb2NrKCkKICAgIHsKCiAgICAgIF9fZ3RocmVhZF9tdXRleF91bmxvY2soJl9NX211
dGV4KTsKICAgIH0KCiAgICBuYXRpdmVfaGFuZGxlX3R5cGUKICAgIG5hdGl2ZV9oYW5kbGUoKQog
ICAgeyByZXR1cm4gJl9NX211dGV4OyB9CiAgfTsKCgogIGNsYXNzIHJlY3Vyc2l2ZV9tdXRleCA6
IHByaXZhdGUgX19yZWN1cnNpdmVfbXV0ZXhfYmFzZQogIHsKICBwdWJsaWM6CiAgICB0eXBlZGVm
IF9fbmF0aXZlX3R5cGUqIG5hdGl2ZV9oYW5kbGVfdHlwZTsKCiAgICByZWN1cnNpdmVfbXV0ZXgo
KSA9IGRlZmF1bHQ7CiAgICB+cmVjdXJzaXZlX211dGV4KCkgPSBkZWZhdWx0OwoKICAgIHJlY3Vy
c2l2ZV9tdXRleChjb25zdCByZWN1cnNpdmVfbXV0ZXgmKSA9IGRlbGV0ZTsKICAgIHJlY3Vyc2l2
ZV9tdXRleCYgb3BlcmF0b3I9KGNvbnN0IHJlY3Vyc2l2ZV9tdXRleCYpID0gZGVsZXRlOwoKICAg
IHZvaWQKICAgIGxvY2soKQogICAgewogICAgICBpbnQgX19lID0gX19ndGhyZWFkX3JlY3Vyc2l2
ZV9tdXRleF9sb2NrKCZfTV9tdXRleCk7CgoKICAgICAgaWYgKF9fZSkKIF9fdGhyb3dfc3lzdGVt
X2Vycm9yKF9fZSk7CiAgICB9CgogICAgYm9vbAogICAgdHJ5X2xvY2soKSBub2V4Y2VwdAogICAg
ewoKICAgICAgcmV0dXJuICFfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X3RyeWxvY2soJl9NX211
dGV4KTsKICAgIH0KCiAgICB2b2lkCiAgICB1bmxvY2soKQogICAgewoKICAgICAgX19ndGhyZWFk
X3JlY3Vyc2l2ZV9tdXRleF91bmxvY2soJl9NX211dGV4KTsKICAgIH0KCiAgICBuYXRpdmVfaGFu
ZGxlX3R5cGUKICAgIG5hdGl2ZV9oYW5kbGUoKQogICAgeyByZXR1cm4gJl9NX211dGV4OyB9CiAg
fTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9EZXJpdmVkPgogICAgY2xhc3MgX190aW1lZF9tdXRl
eF9pbXBsCiAgICB7CiAgICBwcm90ZWN0ZWQ6CiAgICAgIHR5cGVkZWYgY2hyb25vOjpoaWdoX3Jl
c29sdXRpb25fY2xvY2sgX19jbG9ja190OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcCwg
dHlwZW5hbWUgX1BlcmlvZD4KIGJvb2wKIF9NX3RyeV9sb2NrX2Zvcihjb25zdCBjaHJvbm86OmR1
cmF0aW9uPF9SZXAsIF9QZXJpb2Q+JiBfX3J0aW1lKQogewogICB1c2luZyBjaHJvbm86OnN0ZWFk
eV9jbG9jazsKICAgYXV0byBfX3J0ID0gY2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZWFkeV9jbG9j
azo6ZHVyYXRpb24+KF9fcnRpbWUpOwogICBpZiAocmF0aW9fZ3JlYXRlcjxzdGVhZHlfY2xvY2s6
OnBlcmlvZCwgX1BlcmlvZD4oKSkKICAgICArK19fcnQ7CiAgIHJldHVybiBfTV90cnlfbG9ja191
bnRpbChzdGVhZHlfY2xvY2s6Om5vdygpICsgX19ydCk7CiB9CgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfRHVyYXRpb24+CiBib29sCiBfTV90cnlfbG9ja191bnRpbChjb25zdCBjaHJvbm86OnRp
bWVfcG9pbnQ8X19jbG9ja190LAogICAgICAgICBfRHVyYXRpb24+JiBfX2F0aW1lKQogewogICBh
dXRvIF9fcyA9IGNocm9ubzo6dGltZV9wb2ludF9jYXN0PGNocm9ubzo6c2Vjb25kcz4oX19hdGlt
ZSk7CiAgIGF1dG8gX19ucyA9IGNocm9ubzo6ZHVyYXRpb25fY2FzdDxjaHJvbm86Om5hbm9zZWNv
bmRzPihfX2F0aW1lIC0gX19zKTsKCiAgIF9fZ3RocmVhZF90aW1lX3QgX190cyA9IHsKICAgICBz
dGF0aWNfY2FzdDxzdGQ6OnRpbWVfdD4oX19zLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKSwK
ICAgICBzdGF0aWNfY2FzdDxsb25nPihfX25zLmNvdW50KCkpCiAgIH07CgogICBhdXRvIF9fbXV0
ZXggPSBzdGF0aWNfY2FzdDxfRGVyaXZlZCo+KHRoaXMpLT5uYXRpdmVfaGFuZGxlKCk7CiAgIHJl
dHVybiAhX19ndGhyZWFkX211dGV4X3RpbWVkbG9jayhfX211dGV4LCAmX190cyk7CiB9CgogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2xvY2ssIHR5cGVuYW1lIF9EdXJhdGlvbj4KIGJvb2wKIF9N
X3RyeV9sb2NrX3VudGlsKGNvbnN0IGNocm9ubzo6dGltZV9wb2ludDxfQ2xvY2ssIF9EdXJhdGlv
bj4mIF9fYXRpbWUpCiB7CiAgIGF1dG8gX19ydGltZSA9IF9fYXRpbWUgLSBfQ2xvY2s6Om5vdygp
OwogICByZXR1cm4gX01fdHJ5X2xvY2tfdW50aWwoX19jbG9ja190Ojpub3coKSArIF9fcnRpbWUp
OwogfQogICAgfTsKCgogIGNsYXNzIHRpbWVkX211dGV4CiAgOiBwcml2YXRlIF9fbXV0ZXhfYmFz
ZSwgcHVibGljIF9fdGltZWRfbXV0ZXhfaW1wbDx0aW1lZF9tdXRleD4KICB7CiAgcHVibGljOgog
ICAgdHlwZWRlZiBfX25hdGl2ZV90eXBlKiBuYXRpdmVfaGFuZGxlX3R5cGU7CgogICAgdGltZWRf
bXV0ZXgoKSA9IGRlZmF1bHQ7CiAgICB+dGltZWRfbXV0ZXgoKSA9IGRlZmF1bHQ7CgogICAgdGlt
ZWRfbXV0ZXgoY29uc3QgdGltZWRfbXV0ZXgmKSA9IGRlbGV0ZTsKICAgIHRpbWVkX211dGV4JiBv
cGVyYXRvcj0oY29uc3QgdGltZWRfbXV0ZXgmKSA9IGRlbGV0ZTsKCiAgICB2b2lkCiAgICBsb2Nr
KCkKICAgIHsKICAgICAgaW50IF9fZSA9IF9fZ3RocmVhZF9tdXRleF9sb2NrKCZfTV9tdXRleCk7
CgoKICAgICAgaWYgKF9fZSkKIF9fdGhyb3dfc3lzdGVtX2Vycm9yKF9fZSk7CiAgICB9CgogICAg
Ym9vbAogICAgdHJ5X2xvY2soKSBub2V4Y2VwdAogICAgewoKICAgICAgcmV0dXJuICFfX2d0aHJl
YWRfbXV0ZXhfdHJ5bG9jaygmX01fbXV0ZXgpOwogICAgfQoKICAgIHRlbXBsYXRlIDxjbGFzcyBf
UmVwLCBjbGFzcyBfUGVyaW9kPgogICAgICBib29sCiAgICAgIHRyeV9sb2NrX2Zvcihjb25zdCBj
aHJvbm86OmR1cmF0aW9uPF9SZXAsIF9QZXJpb2Q+JiBfX3J0aW1lKQogICAgICB7IHJldHVybiBf
TV90cnlfbG9ja19mb3IoX19ydGltZSk7IH0KCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0Nsb2NrLCBj
bGFzcyBfRHVyYXRpb24+CiAgICAgIGJvb2wKICAgICAgdHJ5X2xvY2tfdW50aWwoY29uc3QgY2hy
b25vOjp0aW1lX3BvaW50PF9DbG9jaywgX0R1cmF0aW9uPiYgX19hdGltZSkKICAgICAgeyByZXR1
cm4gX01fdHJ5X2xvY2tfdW50aWwoX19hdGltZSk7IH0KCiAgICB2b2lkCiAgICB1bmxvY2soKQog
ICAgewoKICAgICAgX19ndGhyZWFkX211dGV4X3VubG9jaygmX01fbXV0ZXgpOwogICAgfQoKICAg
IG5hdGl2ZV9oYW5kbGVfdHlwZQogICAgbmF0aXZlX2hhbmRsZSgpCiAgICB7IHJldHVybiAmX01f
bXV0ZXg7IH0KICB9OwoKCiAgY2xhc3MgcmVjdXJzaXZlX3RpbWVkX211dGV4CiAgOiBwcml2YXRl
IF9fcmVjdXJzaXZlX211dGV4X2Jhc2UsCiAgICBwdWJsaWMgX190aW1lZF9tdXRleF9pbXBsPHJl
Y3Vyc2l2ZV90aW1lZF9tdXRleD4KICB7CiAgcHVibGljOgogICAgdHlwZWRlZiBfX25hdGl2ZV90
eXBlKiBuYXRpdmVfaGFuZGxlX3R5cGU7CgogICAgcmVjdXJzaXZlX3RpbWVkX211dGV4KCkgPSBk
ZWZhdWx0OwogICAgfnJlY3Vyc2l2ZV90aW1lZF9tdXRleCgpID0gZGVmYXVsdDsKCiAgICByZWN1
cnNpdmVfdGltZWRfbXV0ZXgoY29uc3QgcmVjdXJzaXZlX3RpbWVkX211dGV4JikgPSBkZWxldGU7
CiAgICByZWN1cnNpdmVfdGltZWRfbXV0ZXgmIG9wZXJhdG9yPShjb25zdCByZWN1cnNpdmVfdGlt
ZWRfbXV0ZXgmKSA9IGRlbGV0ZTsKCiAgICB2b2lkCiAgICBsb2NrKCkKICAgIHsKICAgICAgaW50
IF9fZSA9IF9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfbG9jaygmX01fbXV0ZXgpOwoKCiAgICAg
IGlmIChfX2UpCiBfX3Rocm93X3N5c3RlbV9lcnJvcihfX2UpOwogICAgfQoKICAgIGJvb2wKICAg
IHRyeV9sb2NrKCkgbm9leGNlcHQKICAgIHsKCiAgICAgIHJldHVybiAhX19ndGhyZWFkX3JlY3Vy
c2l2ZV9tdXRleF90cnlsb2NrKCZfTV9tdXRleCk7CiAgICB9CgogICAgdGVtcGxhdGUgPGNsYXNz
IF9SZXAsIGNsYXNzIF9QZXJpb2Q+CiAgICAgIGJvb2wKICAgICAgdHJ5X2xvY2tfZm9yKGNvbnN0
IGNocm9ubzo6ZHVyYXRpb248X1JlcCwgX1BlcmlvZD4mIF9fcnRpbWUpCiAgICAgIHsgcmV0dXJu
IF9NX3RyeV9sb2NrX2ZvcihfX3J0aW1lKTsgfQoKICAgIHRlbXBsYXRlIDxjbGFzcyBfQ2xvY2ss
IGNsYXNzIF9EdXJhdGlvbj4KICAgICAgYm9vbAogICAgICB0cnlfbG9ja191bnRpbChjb25zdCBj
aHJvbm86OnRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVyYXRpb24+JiBfX2F0aW1lKQogICAgICB7IHJl
dHVybiBfTV90cnlfbG9ja191bnRpbChfX2F0aW1lKTsgfQoKICAgIHZvaWQKICAgIHVubG9jaygp
CiAgICB7CgogICAgICBfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X3VubG9jaygmX01fbXV0ZXgp
OwogICAgfQoKICAgIG5hdGl2ZV9oYW5kbGVfdHlwZQogICAgbmF0aXZlX2hhbmRsZSgpCiAgICB7
IHJldHVybiAmX01fbXV0ZXg7IH0KICB9OwoKCgoKICBzdHJ1Y3QgZGVmZXJfbG9ja190IHsgfTsK
CgogIHN0cnVjdCB0cnlfdG9fbG9ja190IHsgfTsKCgoKICBzdHJ1Y3QgYWRvcHRfbG9ja190IHsg
fTsKCiAgY29uc3RleHByIGRlZmVyX2xvY2tfdCBkZWZlcl9sb2NrIHsgfTsKICBjb25zdGV4cHIg
dHJ5X3RvX2xvY2tfdCB0cnlfdG9fbG9jayB7IH07CiAgY29uc3RleHByIGFkb3B0X2xvY2tfdCBh
ZG9wdF9sb2NrIHsgfTsKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX011dGV4PgogICAgY2xhc3Mg
bG9ja19ndWFyZAogICAgewogICAgcHVibGljOgogICAgICB0eXBlZGVmIF9NdXRleCBtdXRleF90
eXBlOwoKICAgICAgZXhwbGljaXQgbG9ja19ndWFyZChtdXRleF90eXBlJiBfX20pIDogX01fZGV2
aWNlKF9fbSkKICAgICAgeyBfTV9kZXZpY2UubG9jaygpOyB9CgogICAgICBsb2NrX2d1YXJkKG11
dGV4X3R5cGUmIF9fbSwgYWRvcHRfbG9ja190KSA6IF9NX2RldmljZShfX20pCiAgICAgIHsgfQoK
ICAgICAgfmxvY2tfZ3VhcmQoKQogICAgICB7IF9NX2RldmljZS51bmxvY2soKTsgfQoKICAgICAg
bG9ja19ndWFyZChjb25zdCBsb2NrX2d1YXJkJikgPSBkZWxldGU7CiAgICAgIGxvY2tfZ3VhcmQm
IG9wZXJhdG9yPShjb25zdCBsb2NrX2d1YXJkJikgPSBkZWxldGU7CgogICAgcHJpdmF0ZToKICAg
ICAgbXV0ZXhfdHlwZSYgX01fZGV2aWNlOwogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9N
dXRleD4KICAgIGNsYXNzIHVuaXF1ZV9sb2NrCiAgICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVk
ZWYgX011dGV4IG11dGV4X3R5cGU7CgogICAgICB1bmlxdWVfbG9jaygpIG5vZXhjZXB0CiAgICAg
IDogX01fZGV2aWNlKDApLCBfTV9vd25zKGZhbHNlKQogICAgICB7IH0KCiAgICAgIGV4cGxpY2l0
IHVuaXF1ZV9sb2NrKG11dGV4X3R5cGUmIF9fbSkKICAgICAgOiBfTV9kZXZpY2UoJl9fbSksIF9N
X293bnMoZmFsc2UpCiAgICAgIHsKIGxvY2soKTsKIF9NX293bnMgPSB0cnVlOwogICAgICB9Cgog
ICAgICB1bmlxdWVfbG9jayhtdXRleF90eXBlJiBfX20sIGRlZmVyX2xvY2tfdCkgbm9leGNlcHQK
ICAgICAgOiBfTV9kZXZpY2UoJl9fbSksIF9NX293bnMoZmFsc2UpCiAgICAgIHsgfQoKICAgICAg
dW5pcXVlX2xvY2sobXV0ZXhfdHlwZSYgX19tLCB0cnlfdG9fbG9ja190KQogICAgICA6IF9NX2Rl
dmljZSgmX19tKSwgX01fb3ducyhfTV9kZXZpY2UtPnRyeV9sb2NrKCkpCiAgICAgIHsgfQoKICAg
ICAgdW5pcXVlX2xvY2sobXV0ZXhfdHlwZSYgX19tLCBhZG9wdF9sb2NrX3QpCiAgICAgIDogX01f
ZGV2aWNlKCZfX20pLCBfTV9vd25zKHRydWUpCiAgICAgIHsKCiAgICAgIH0KCiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9DbG9jaywgdHlwZW5hbWUgX0R1cmF0aW9uPgogdW5pcXVlX2xvY2sobXV0
ZXhfdHlwZSYgX19tLAogICAgICBjb25zdCBjaHJvbm86OnRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVy
YXRpb24+JiBfX2F0aW1lKQogOiBfTV9kZXZpY2UoJl9fbSksIF9NX293bnMoX01fZGV2aWNlLT50
cnlfbG9ja191bnRpbChfX2F0aW1lKSkKIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jl
cCwgdHlwZW5hbWUgX1BlcmlvZD4KIHVuaXF1ZV9sb2NrKG11dGV4X3R5cGUmIF9fbSwKICAgICAg
Y29uc3QgY2hyb25vOjpkdXJhdGlvbjxfUmVwLCBfUGVyaW9kPiYgX19ydGltZSkKIDogX01fZGV2
aWNlKCZfX20pLCBfTV9vd25zKF9NX2RldmljZS0+dHJ5X2xvY2tfZm9yKF9fcnRpbWUpKQogeyB9
CgogICAgICB+dW5pcXVlX2xvY2soKQogICAgICB7CiBpZiAoX01fb3ducykKICAgdW5sb2NrKCk7
CiAgICAgIH0KCiAgICAgIHVuaXF1ZV9sb2NrKGNvbnN0IHVuaXF1ZV9sb2NrJikgPSBkZWxldGU7
CiAgICAgIHVuaXF1ZV9sb2NrJiBvcGVyYXRvcj0oY29uc3QgdW5pcXVlX2xvY2smKSA9IGRlbGV0
ZTsKCiAgICAgIHVuaXF1ZV9sb2NrKHVuaXF1ZV9sb2NrJiYgX191KSBub2V4Y2VwdAogICAgICA6
IF9NX2RldmljZShfX3UuX01fZGV2aWNlKSwgX01fb3ducyhfX3UuX01fb3ducykKICAgICAgewog
X191Ll9NX2RldmljZSA9IDA7CiBfX3UuX01fb3ducyA9IGZhbHNlOwogICAgICB9CgogICAgICB1
bmlxdWVfbG9jayYgb3BlcmF0b3I9KHVuaXF1ZV9sb2NrJiYgX191KSBub2V4Y2VwdAogICAgICB7
CiBpZihfTV9vd25zKQogICB1bmxvY2soKTsKCiB1bmlxdWVfbG9jayhzdGQ6Om1vdmUoX191KSku
c3dhcCgqdGhpcyk7CgogX191Ll9NX2RldmljZSA9IDA7CiBfX3UuX01fb3ducyA9IGZhbHNlOwoK
IHJldHVybiAqdGhpczsKICAgICAgfQoKICAgICAgdm9pZAogICAgICBsb2NrKCkKICAgICAgewog
aWYgKCFfTV9kZXZpY2UpCiAgIF9fdGhyb3dfc3lzdGVtX2Vycm9yKGludChlcnJjOjpvcGVyYXRp
b25fbm90X3Blcm1pdHRlZCkpOwogZWxzZSBpZiAoX01fb3ducykKICAgX190aHJvd19zeXN0ZW1f
ZXJyb3IoaW50KGVycmM6OnJlc291cmNlX2RlYWRsb2NrX3dvdWxkX29jY3VyKSk7CiBlbHNlCiAg
IHsKICAgICBfTV9kZXZpY2UtPmxvY2soKTsKICAgICBfTV9vd25zID0gdHJ1ZTsKICAgfQogICAg
ICB9CgogICAgICBib29sCiAgICAgIHRyeV9sb2NrKCkKICAgICAgewogaWYgKCFfTV9kZXZpY2Up
CiAgIF9fdGhyb3dfc3lzdGVtX2Vycm9yKGludChlcnJjOjpvcGVyYXRpb25fbm90X3Blcm1pdHRl
ZCkpOwogZWxzZSBpZiAoX01fb3ducykKICAgX190aHJvd19zeXN0ZW1fZXJyb3IoaW50KGVycmM6
OnJlc291cmNlX2RlYWRsb2NrX3dvdWxkX29jY3VyKSk7CiBlbHNlCiAgIHsKICAgICBfTV9vd25z
ID0gX01fZGV2aWNlLT50cnlfbG9jaygpOwogICAgIHJldHVybiBfTV9vd25zOwogICB9CiAgICAg
IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DbG9jaywgdHlwZW5hbWUgX0R1cmF0aW9uPgog
Ym9vbAogdHJ5X2xvY2tfdW50aWwoY29uc3QgY2hyb25vOjp0aW1lX3BvaW50PF9DbG9jaywgX0R1
cmF0aW9uPiYgX19hdGltZSkKIHsKICAgaWYgKCFfTV9kZXZpY2UpCiAgICAgX190aHJvd19zeXN0
ZW1fZXJyb3IoaW50KGVycmM6Om9wZXJhdGlvbl9ub3RfcGVybWl0dGVkKSk7CiAgIGVsc2UgaWYg
KF9NX293bnMpCiAgICAgX190aHJvd19zeXN0ZW1fZXJyb3IoaW50KGVycmM6OnJlc291cmNlX2Rl
YWRsb2NrX3dvdWxkX29jY3VyKSk7CiAgIGVsc2UKICAgICB7CiAgICAgICBfTV9vd25zID0gX01f
ZGV2aWNlLT50cnlfbG9ja191bnRpbChfX2F0aW1lKTsKICAgICAgIHJldHVybiBfTV9vd25zOwog
ICAgIH0KIH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAsIHR5cGVuYW1lIF9QZXJpb2Q+
CiBib29sCiB0cnlfbG9ja19mb3IoY29uc3QgY2hyb25vOjpkdXJhdGlvbjxfUmVwLCBfUGVyaW9k
PiYgX19ydGltZSkKIHsKICAgaWYgKCFfTV9kZXZpY2UpCiAgICAgX190aHJvd19zeXN0ZW1fZXJy
b3IoaW50KGVycmM6Om9wZXJhdGlvbl9ub3RfcGVybWl0dGVkKSk7CiAgIGVsc2UgaWYgKF9NX293
bnMpCiAgICAgX190aHJvd19zeXN0ZW1fZXJyb3IoaW50KGVycmM6OnJlc291cmNlX2RlYWRsb2Nr
X3dvdWxkX29jY3VyKSk7CiAgIGVsc2UKICAgICB7CiAgICAgICBfTV9vd25zID0gX01fZGV2aWNl
LT50cnlfbG9ja19mb3IoX19ydGltZSk7CiAgICAgICByZXR1cm4gX01fb3duczsKICAgICB9CiAg
fQoKICAgICAgdm9pZAogICAgICB1bmxvY2soKQogICAgICB7CiBpZiAoIV9NX293bnMpCiAgIF9f
dGhyb3dfc3lzdGVtX2Vycm9yKGludChlcnJjOjpvcGVyYXRpb25fbm90X3Blcm1pdHRlZCkpOwog
ZWxzZSBpZiAoX01fZGV2aWNlKQogICB7CiAgICAgX01fZGV2aWNlLT51bmxvY2soKTsKICAgICBf
TV9vd25zID0gZmFsc2U7CiAgIH0KICAgICAgfQoKICAgICAgdm9pZAogICAgICBzd2FwKHVuaXF1
ZV9sb2NrJiBfX3UpIG5vZXhjZXB0CiAgICAgIHsKIHN0ZDo6c3dhcChfTV9kZXZpY2UsIF9fdS5f
TV9kZXZpY2UpOwogc3RkOjpzd2FwKF9NX293bnMsIF9fdS5fTV9vd25zKTsKICAgICAgfQoKICAg
ICAgbXV0ZXhfdHlwZSoKICAgICAgcmVsZWFzZSgpIG5vZXhjZXB0CiAgICAgIHsKIG11dGV4X3R5
cGUqIF9fcmV0ID0gX01fZGV2aWNlOwogX01fZGV2aWNlID0gMDsKIF9NX293bnMgPSBmYWxzZTsK
IHJldHVybiBfX3JldDsKICAgICAgfQoKICAgICAgYm9vbAogICAgICBvd25zX2xvY2soKSBjb25z
dCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9vd25zOyB9CgogICAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gb3duc19sb2NrKCk7IH0K
CiAgICAgIG11dGV4X3R5cGUqCiAgICAgIG11dGV4KCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gX01fZGV2aWNlOyB9CgogICAgcHJpdmF0ZToKICAgICAgbXV0ZXhfdHlwZSogX01fZGV2
aWNlOwogICAgICBib29sIF9NX293bnM7CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX011
dGV4PgogICAgaW5saW5lIHZvaWQKICAgIHN3YXAodW5pcXVlX2xvY2s8X011dGV4PiYgX194LCB1
bmlxdWVfbG9jazxfTXV0ZXg+JiBfX3kpIG5vZXhjZXB0CiAgICB7IF9feC5zd2FwKF9feSk7IH0K
CiAgdGVtcGxhdGU8aW50IF9JZHg+CiAgICBzdHJ1Y3QgX191bmxvY2tfaW1wbAogICAgewogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfTG9jaz4KIHN0YXRpYyB2b2lkCiBfX2RvX3VubG9jayh0
dXBsZTxfTG9jayYuLi4+JiBfX2xvY2tzKQogewogICBzdGQ6OmdldDxfSWR4PihfX2xvY2tzKS51
bmxvY2soKTsKICAgX191bmxvY2tfaW1wbDxfSWR4IC0gMT46Ol9fZG9fdW5sb2NrKF9fbG9ja3Mp
OwogfQogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fdW5sb2NrX2ltcGw8LTE+CiAg
ICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9Mb2NrPgogc3RhdGljIHZvaWQKIF9fZG9f
dW5sb2NrKHR1cGxlPF9Mb2NrJi4uLj4mKQogeyB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfTG9jaz4KICAgIHVuaXF1ZV9sb2NrPF9Mb2NrPgogICAgX190cnlfdG9fbG9jayhfTG9jayYg
X19sKQogICAgeyByZXR1cm4gdW5pcXVlX2xvY2s8X0xvY2s+KF9fbCwgdHJ5X3RvX2xvY2spOyB9
CgogIHRlbXBsYXRlPGludCBfSWR4LCBib29sIF9Db250aW51ZSA9IHRydWU+CiAgICBzdHJ1Y3Qg
X190cnlfbG9ja19pbXBsCiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9Mb2NrPgog
c3RhdGljIHZvaWQKIF9fZG9fdHJ5X2xvY2sodHVwbGU8X0xvY2smLi4uPiYgX19sb2NrcywgaW50
JiBfX2lkeCkKIHsKICAgICAgICAgIF9faWR4ID0gX0lkeDsKICAgICAgICAgIGF1dG8gX19sb2Nr
ID0gX190cnlfdG9fbG9jayhzdGQ6OmdldDxfSWR4PihfX2xvY2tzKSk7CiAgICAgICAgICBpZiAo
X19sb2NrLm93bnNfbG9jaygpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgX190cnlfbG9j
a19pbXBsPF9JZHggKyAxLCBfSWR4ICsgMiA8IHNpemVvZi4uLihfTG9jayk+OjoKICAgICAgICAg
ICAgICAgIF9fZG9fdHJ5X2xvY2soX19sb2NrcywgX19pZHgpOwogICAgICAgICAgICAgIGlmIChf
X2lkeCA9PSAtMSkKICAgICAgICAgICAgICAgIF9fbG9jay5yZWxlYXNlKCk7CiAgICAgICAgICAg
IH0KIH0KICAgIH07CgogIHRlbXBsYXRlPGludCBfSWR4PgogICAgc3RydWN0IF9fdHJ5X2xvY2tf
aW1wbDxfSWR4LCBmYWxzZT4KICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0xvY2s+
CiBzdGF0aWMgdm9pZAogX19kb190cnlfbG9jayh0dXBsZTxfTG9jayYuLi4+JiBfX2xvY2tzLCBp
bnQmIF9faWR4KQogewogICAgICAgICAgX19pZHggPSBfSWR4OwogICAgICAgICAgYXV0byBfX2xv
Y2sgPSBfX3RyeV90b19sb2NrKHN0ZDo6Z2V0PF9JZHg+KF9fbG9ja3MpKTsKICAgICAgICAgIGlm
IChfX2xvY2sub3duc19sb2NrKCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBfX2lkeCA9
IC0xOwogICAgICAgICAgICAgIF9fbG9jay5yZWxlYXNlKCk7CiAgICAgICAgICAgIH0KIH0KICAg
IH07CiMgNjQ1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOS4zL211dGV4IiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0xvY2sxLCB0eXBlbmFtZSBf
TG9jazIsIHR5cGVuYW1lLi4uIF9Mb2NrMz4KICAgIGludAogICAgdHJ5X2xvY2soX0xvY2sxJiBf
X2wxLCBfTG9jazImIF9fbDIsIF9Mb2NrMyYuLi4gX19sMykKICAgIHsKICAgICAgaW50IF9faWR4
OwogICAgICBhdXRvIF9fbG9ja3MgPSBzdGQ6OnRpZShfX2wxLCBfX2wyLCBfX2wzLi4uKTsKICAg
ICAgX190cnlfbG9ja19pbXBsPDA+OjpfX2RvX3RyeV9sb2NrKF9fbG9ja3MsIF9faWR4KTsKICAg
ICAgcmV0dXJuIF9faWR4OwogICAgfQojIDY2NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9tdXRleCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9MMSwgdHlwZW5hbWUgX0wyLCB0eXBlbmFtZSAuLi5fTDM+CiAgICB2b2lkCiAgICBsb2NrKF9M
MSYgX19sMSwgX0wyJiBfX2wyLCBfTDMmLi4uIF9fbDMpCiAgICB7CiAgICAgIHdoaWxlICh0cnVl
KQogICAgICAgIHsKICAgICAgICAgIHVuaXF1ZV9sb2NrPF9MMT4gX19maXJzdChfX2wxKTsKICAg
ICAgICAgIGludCBfX2lkeDsKICAgICAgICAgIGF1dG8gX19sb2NrcyA9IHN0ZDo6dGllKF9fbDIs
IF9fbDMuLi4pOwogICAgICAgICAgX190cnlfbG9ja19pbXBsPDAsIHNpemVvZi4uLihfTDMpPjo6
X19kb190cnlfbG9jayhfX2xvY2tzLCBfX2lkeCk7CiAgICAgICAgICBpZiAoX19pZHggPT0gLTEp
CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBfX2ZpcnN0LnJlbGVhc2UoKTsKICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgoKCiAgc3RydWN0IG9u
Y2VfZmxhZwogIHsKICBwcml2YXRlOgogICAgdHlwZWRlZiBfX2d0aHJlYWRfb25jZV90IF9fbmF0
aXZlX3R5cGU7CiAgICBfX25hdGl2ZV90eXBlIF9NX29uY2UgPSAwOwoKICBwdWJsaWM6CgogICAg
Y29uc3RleHByIG9uY2VfZmxhZygpIG5vZXhjZXB0ID0gZGVmYXVsdDsKCgogICAgb25jZV9mbGFn
KGNvbnN0IG9uY2VfZmxhZyYpID0gZGVsZXRlOwoKICAgIG9uY2VfZmxhZyYgb3BlcmF0b3I9KGNv
bnN0IG9uY2VfZmxhZyYpID0gZGVsZXRlOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DYWxsYWJs
ZSwgdHlwZW5hbWUuLi4gX0FyZ3M+CiAgICAgIGZyaWVuZCB2b2lkCiAgICAgIGNhbGxfb25jZShv
bmNlX2ZsYWcmIF9fb25jZSwgX0NhbGxhYmxlJiYgX19mLCBfQXJncyYmLi4uIF9fYXJncyk7CiAg
fTsKCgogIGV4dGVybiBfX3RocmVhZCB2b2lkKiBfX29uY2VfY2FsbGFibGU7CiAgZXh0ZXJuIF9f
dGhyZWFkIHZvaWQgKCpfX29uY2VfY2FsbCkoKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NhbGxh
YmxlPgogICAgaW5saW5lIHZvaWQKICAgIF9fb25jZV9jYWxsX2ltcGwoKQogICAgewogICAgICAo
KihfQ2FsbGFibGUqKV9fb25jZV9jYWxsYWJsZSkoKTsKICAgIH0KIyA3MjYgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvbXV0ZXgiIDMKICBl
eHRlcm4gIkMiIHZvaWQgX19vbmNlX3Byb3h5KHZvaWQpOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NhbGxhYmxlLCB0eXBlbmFtZS4uLiBfQXJncz4KICAgIHZvaWQKICAgIGNhbGxfb25jZShvbmNl
X2ZsYWcmIF9fb25jZSwgX0NhbGxhYmxlJiYgX19mLCBfQXJncyYmLi4uIF9fYXJncykKICAgIHsK
CiAgICAgIGF1dG8gX19ib3VuZF9mdW5jdG9yID0gc3RkOjpfX2JpbmRfc2ltcGxlKHN0ZDo6Zm9y
d2FyZDxfQ2FsbGFibGU+KF9fZiksCiAgICAgICAgICBzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJn
cykuLi4pOwogICAgICBfX29uY2VfY2FsbGFibGUgPSAmX19ib3VuZF9mdW5jdG9yOwogICAgICBf
X29uY2VfY2FsbCA9ICZfX29uY2VfY2FsbF9pbXBsPGRlY2x0eXBlKF9fYm91bmRfZnVuY3Rvcik+
OwojIDc0NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9tdXRleCIgMwogICAgICBpbnQgX19lID0gX19ndGhyZWFkX29uY2UoJl9fb25jZS5f
TV9vbmNlLCAmX19vbmNlX3Byb3h5KTsKCgoKCgoKICAgICAgaWYgKF9fZSkKIF9fdGhyb3dfc3lz
dGVtX2Vycm9yKF9fZSk7CiAgICB9CgoKCgp9CiMgMjggIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0hh
c2hUYWJsZS5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAxIDMgNAojIDIzICIvdXNy
L2luY2x1ZGUvc3RyaW5nLmgiIDMgNAojZGVmaW5lIF9TVFJJTkdfSCAxCgoKCmV4dGVybiAiQyIg
ewoKCiNkZWZpbmUgX19uZWVkX3NpemVfdCAKI2RlZmluZSBfX25lZWRfTlVMTCAKIyAxICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzIDQKIyAxNTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF9wdHJk
aWZmX3QKIyAyMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF9zaXplX3QKIyAzNDMg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNs
dWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF93Y2hhcl90CiMgMzk3ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRkZWYu
aCIgMyA0CiN1bmRlZiBOVUxMCgojZGVmaW5lIE5VTEwgX19udWxsCiMgNDA4ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRkZWYu
aCIgMyA0CiN1bmRlZiBfX25lZWRfTlVMTAoKCgoKI2RlZmluZSBvZmZzZXRvZihUWVBFLE1FTUJF
UikgX19idWlsdGluX29mZnNldG9mIChUWVBFLCBNRU1CRVIpCiMgMzMgIi91c3IvaW5jbHVkZS9z
dHJpbmcuaCIgMiAzIDQKCgoKCgoKCiNkZWZpbmUgX19DT1JSRUNUX0lTT19DUFBfU1RSSU5HX0hf
UFJPVE8gCgoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3Qs
IGNvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICBzaXplX3QgX19uKSB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIHZvaWQgKm1l
bW1vdmUgKHZvaWQgKl9fZGVzdCwgY29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAgICAg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKCgpleHRl
cm4gdm9pZCAqbWVtY2NweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIGNvbnN0IHZvaWQgKl9f
cmVzdHJpY3QgX19zcmMsCiAgICAgICAgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgoKZXh0ZXJuIHZvaWQg
Km1lbXNldCAodm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBtZW1jbXAgKGNvbnN0IHZv
aWQgKl9fczEsIGNvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAy
KSkpOwoKCgpleHRlcm4gIkMrKyIKewpleHRlcm4gdm9pZCAqbWVtY2hyICh2b2lkICpfX3MsIGlu
dCBfX2MsIHNpemVfdCBfX24pCiAgICAgIHRocm93ICgpIF9fYXNtICgibWVtY2hyIikgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwpl
eHRlcm4gY29uc3Qgdm9pZCAqbWVtY2hyIChjb25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVf
dCBfX24pCiAgICAgIHRocm93ICgpIF9fYXNtICgibWVtY2hyIikgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBfX2lu
bGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fICgo
X19nbnVfaW5saW5lX18pKSB2b2lkICoKbWVtY2hyICh2b2lkICpfX3MsIGludCBfX2MsIHNpemVf
dCBfX24pIHRocm93ICgpCnsKICByZXR1cm4gX19idWlsdGluX21lbWNociAoX19zLCBfX2MsIF9f
bik7Cn0KCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18p
KSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBjb25zdCB2b2lkICoKbWVtY2hyIChj
b25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pIHRocm93ICgpCnsKICByZXR1cm4g
X19idWlsdGluX21lbWNociAoX19zLCBfX2MsIF9fbik7Cn0KCn0KCgoKCgoKCgoKCmV4dGVybiAi
QysrIiB2b2lkICpyYXdtZW1jaHIgKHZvaWQgKl9fcywgaW50IF9fYykKICAgICB0aHJvdyAoKSBf
X2FzbSAoInJhd21lbWNociIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRl
X18gKChfX25vbm51bGxfXyAoMSkpKTsKZXh0ZXJuICJDKysiIGNvbnN0IHZvaWQgKnJhd21lbWNo
ciAoY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKQogICAgIHRocm93ICgpIF9fYXNtICgicmF3bWVt
Y2hyIikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs
bF9fICgxKSkpOwoKCgoKCgoKZXh0ZXJuICJDKysiIHZvaWQgKm1lbXJjaHIgKHZvaWQgKl9fcywg
aW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgdGhyb3cgKCkgX19hc20gKCJtZW1yY2hyIikgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp
OwpleHRlcm4gIkMrKyIgY29uc3Qgdm9pZCAqbWVtcmNociAoY29uc3Qgdm9pZCAqX19zLCBpbnQg
X19jLCBzaXplX3QgX19uKQogICAgICB0aHJvdyAoKSBfX2FzbSAoIm1lbXJjaHIiKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoK
CgoKCgoKCmV4dGVybiBjaGFyICpzdHJjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBjb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X25vbm51bGxfXyAoMSwgMikpKTsKCmV4dGVybiBjaGFyICpzdHJuY3B5IChjaGFyICpfX3Jlc3Ry
aWN0IF9fZGVzdCwKICAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3Qg
X19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsK
CgpleHRlcm4gY2hhciAqc3RyY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u
dWxsX18gKDEsIDIpKSk7CgpleHRlcm4gY2hhciAqc3RybmNhdCAoY2hhciAqX19yZXN0cmljdCBf
X2Rlc3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAgc2l6ZV90IF9fbikg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBp
bnQgc3RyY21wIChjb25zdCBjaGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSwgMikpKTsKCmV4dGVybiBpbnQgc3RybmNtcCAoY29uc3QgY2hhciAqX19zMSwgY29uc3Qg
Y2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIGlu
dCBzdHJjb2xsIChjb25zdCBjaGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSwgMikpKTsKCmV4dGVybiBzaXplX3Qgc3RyeGZybSAoY2hhciAqX19yZXN0cmljdCBfX2Rl
c3QsCiAgICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pCiAg
ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwoKIyAxNjYgIi91
c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CmV4dGVybiBpbnQgc3RyY29sbF9sIChjb25zdCBjaGFy
ICpfX3MxLCBjb25zdCBjaGFyICpfX3MyLCBfX2xvY2FsZV90IF9fbCkKICAgICB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs
IDIsIDMpKSk7CgpleHRlcm4gc2l6ZV90IHN0cnhmcm1fbCAoY2hhciAqX19kZXN0LCBjb25zdCBj
aGFyICpfX3NyYywgc2l6ZV90IF9fbiwKICAgIF9fbG9jYWxlX3QgX19sKSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIsIDQpKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cmR1
cCAoY29uc3QgY2hhciAqX19zKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxv
Y19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCgpleHRlcm4gY2hh
ciAqc3RybmR1cCAoY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs
X18gKDEpKSk7CgoKCgojZGVmaW5lIHN0cmR1cGEocykgKF9fZXh0ZW5zaW9uX18gKHsgY29uc3Qg
Y2hhciAqX19vbGQgPSAocyk7IHNpemVfdCBfX2xlbiA9IHN0cmxlbiAoX19vbGQpICsgMTsgY2hh
ciAqX19uZXcgPSAoY2hhciAqKSBfX2J1aWx0aW5fYWxsb2NhIChfX2xlbik7IChjaGFyICopIG1l
bWNweSAoX19uZXcsIF9fb2xkLCBfX2xlbik7IH0pKQojIDIwMCAiL3Vzci9pbmNsdWRlL3N0cmlu
Zy5oIiAzIDQKI2RlZmluZSBzdHJuZHVwYShzLG4pIChfX2V4dGVuc2lvbl9fICh7IGNvbnN0IGNo
YXIgKl9fb2xkID0gKHMpOyBzaXplX3QgX19sZW4gPSBzdHJubGVuIChfX29sZCwgKG4pKTsgY2hh
ciAqX19uZXcgPSAoY2hhciAqKSBfX2J1aWx0aW5fYWxsb2NhIChfX2xlbiArIDEpOyBfX25ld1tf
X2xlbl0gPSAnXDAnOyAoY2hhciAqKSBtZW1jcHkgKF9fbmV3LCBfX29sZCwgX19sZW4pOyB9KSkK
IyAyMTEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CgoKCmV4dGVybiAiQysrIgp7CmV4dGVy
biBjaGFyICpzdHJjaHIgKGNoYXIgKl9fcywgaW50IF9fYykKICAgICB0aHJvdyAoKSBfX2FzbSAo
InN0cmNociIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25v
bm51bGxfXyAoMSkpKTsKZXh0ZXJuIGNvbnN0IGNoYXIgKnN0cmNociAoY29uc3QgY2hhciAqX19z
LCBpbnQgX19jKQogICAgIHRocm93ICgpIF9fYXNtICgic3RyY2hyIikgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBf
X2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f
ICgoX19nbnVfaW5saW5lX18pKSBjaGFyICoKc3RyY2hyIChjaGFyICpfX3MsIGludCBfX2MpIHRo
cm93ICgpCnsKICByZXR1cm4gX19idWlsdGluX3N0cmNociAoX19zLCBfX2MpOwp9CgpleHRlcm4g
X19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVf
XyAoKF9fZ251X2lubGluZV9fKSkgY29uc3QgY2hhciAqCnN0cmNociAoY29uc3QgY2hhciAqX19z
LCBpbnQgX19jKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdHJjaHIgKF9fcywgX19j
KTsKfQoKfQoKCgoKCgpleHRlcm4gIkMrKyIKewpleHRlcm4gY2hhciAqc3RycmNociAoY2hhciAq
X19zLCBpbnQgX19jKQogICAgIHRocm93ICgpIF9fYXNtICgic3RycmNociIpIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKZXh0ZXJu
IGNvbnN0IGNoYXIgKnN0cnJjaHIgKGNvbnN0IGNoYXIgKl9fcywgaW50IF9fYykKICAgICB0aHJv
dyAoKSBfX2FzbSAoInN0cnJjaHIiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJp
YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRl
X18gKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykp
IGNoYXIgKgpzdHJyY2hyIChjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpCnsKICByZXR1cm4g
X19idWlsdGluX3N0cnJjaHIgKF9fcywgX19jKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmli
dXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVf
XykpIGNvbnN0IGNoYXIgKgpzdHJyY2hyIChjb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93
ICgpCnsKICByZXR1cm4gX19idWlsdGluX3N0cnJjaHIgKF9fcywgX19jKTsKfQoKfQoKCgoKCgoK
CgoKZXh0ZXJuICJDKysiIGNoYXIgKnN0cmNocm51bCAoY2hhciAqX19zLCBpbnQgX19jKQogICAg
IHRocm93ICgpIF9fYXNtICgic3RyY2hybnVsIikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkg
X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwpleHRlcm4gIkMrKyIgY29uc3QgY2hh
ciAqc3RyY2hybnVsIChjb25zdCBjaGFyICpfX3MsIGludCBfX2MpCiAgICAgdGhyb3cgKCkgX19h
c20gKCJzdHJjaHJudWwiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKCgoKCmV4dGVybiBzaXplX3Qgc3RyY3NwbiAoY29u
c3QgY2hhciAqX19zLCBjb25zdCBjaGFyICpfX3JlamVjdCkKICAgICB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7
CgoKZXh0ZXJuIHNpemVfdCBzdHJzcG4gKGNvbnN0IGNoYXIgKl9fcywgY29uc3QgY2hhciAqX19h
Y2NlcHQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1
dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiAiQysrIgp7CmV4dGVybiBjaGFy
ICpzdHJwYnJrIChjaGFyICpfX3MsIGNvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIHRocm93ICgp
IF9fYXNtICgic3RycGJyayIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRl
X18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKZXh0ZXJuIGNvbnN0IGNoYXIgKnN0cnBicmsgKGNv
bnN0IGNoYXIgKl9fcywgY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgdGhyb3cgKCkgX19hc20g
KCJzdHJwYnJrIikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f
bm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19h
bHdheXNfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBjaGFyICoK
c3RycGJyayAoY2hhciAqX19zLCBjb25zdCBjaGFyICpfX2FjY2VwdCkgdGhyb3cgKCkKewogIHJl
dHVybiBfX2J1aWx0aW5fc3RycGJyayAoX19zLCBfX2FjY2VwdCk7Cn0KCmV4dGVybiBfX2lubGlu
ZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fICgoX19n
bnVfaW5saW5lX18pKSBjb25zdCBjaGFyICoKc3RycGJyayAoY29uc3QgY2hhciAqX19zLCBjb25z
dCBjaGFyICpfX2FjY2VwdCkgdGhyb3cgKCkKewogIHJldHVybiBfX2J1aWx0aW5fc3RycGJyayAo
X19zLCBfX2FjY2VwdCk7Cn0KCn0KCgoKCgoKZXh0ZXJuICJDKysiCnsKZXh0ZXJuIGNoYXIgKnN0
cnN0ciAoY2hhciAqX19oYXlzdGFjaywgY29uc3QgY2hhciAqX19uZWVkbGUpCiAgICAgdGhyb3cg
KCkgX19hc20gKCJzdHJzdHIiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0
ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CmV4dGVybiBjb25zdCBjaGFyICpzdHJzdHIgKGNv
bnN0IGNoYXIgKl9faGF5c3RhY2ssIGNvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIHRocm93ICgp
IF9fYXNtICgic3Ryc3RyIikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9f
ICgoX19hbHdheXNfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBj
aGFyICoKc3Ryc3RyIChjaGFyICpfX2hheXN0YWNrLCBjb25zdCBjaGFyICpfX25lZWRsZSkgdGhy
b3cgKCkKewogIHJldHVybiBfX2J1aWx0aW5fc3Ryc3RyIChfX2hheXN0YWNrLCBfX25lZWRsZSk7
Cn0KCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKSBf
X2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBjb25zdCBjaGFyICoKc3Ryc3RyIChjb25z
dCBjaGFyICpfX2hheXN0YWNrLCBjb25zdCBjaGFyICpfX25lZWRsZSkgdGhyb3cgKCkKewogIHJl
dHVybiBfX2J1aWx0aW5fc3Ryc3RyIChfX2hheXN0YWNrLCBfX25lZWRsZSk7Cn0KCn0KCgoKCgoK
CmV4dGVybiBjaGFyICpzdHJ0b2sgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBjb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZGVsaW0pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs
bF9fICgyKSkpOwoKCgoKZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3Qg
X19zLAogICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgY2hhciAqKl9fcmVz
dHJpY3QgX19zYXZlX3B0cikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs
X18gKDIsIDMpKSk7CgpleHRlcm4gY2hhciAqc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19z
LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fc2F2ZV9wdHIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f
ICgyLCAzKSkpOwoKCgoKCmV4dGVybiAiQysrIiBjaGFyICpzdHJjYXNlc3RyIChjaGFyICpfX2hh
eXN0YWNrLCBjb25zdCBjaGFyICpfX25lZWRsZSkKICAgICB0aHJvdyAoKSBfX2FzbSAoInN0cmNh
c2VzdHIiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u
dWxsX18gKDEsIDIpKSk7CmV4dGVybiAiQysrIiBjb25zdCBjaGFyICpzdHJjYXNlc3RyIChjb25z
dCBjaGFyICpfX2hheXN0YWNrLAogICAgICAgICBjb25zdCBjaGFyICpfX25lZWRsZSkKICAgICB0
aHJvdyAoKSBfX2FzbSAoInN0cmNhc2VzdHIiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBf
X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CiMgMzgyICIvdXNyL2luY2x1ZGUv
c3RyaW5nLmgiIDMgNApleHRlcm4gdm9pZCAqbWVtbWVtIChjb25zdCB2b2lkICpfX2hheXN0YWNr
LCBzaXplX3QgX19oYXlzdGFja2xlbiwKICAgICAgIGNvbnN0IHZvaWQgKl9fbmVlZGxlLCBzaXpl
X3QgX19uZWVkbGVsZW4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkg
X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAzKSkpOwoKCgpleHRlcm4gdm9pZCAqX19t
ZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgY29uc3Qgdm9pZCAqX19yZXN0cmlj
dCBfX3NyYywgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u
dWxsX18gKDEsIDIpKSk7CmV4dGVybiB2b2lkICptZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9f
ZGVzdCwKICAgICAgICBjb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgoKCgpl
eHRlcm4gc2l6ZV90IHN0cmxlbiAoY29uc3QgY2hhciAqX19zKQogICAgIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsK
CgoKCgpleHRlcm4gc2l6ZV90IHN0cm5sZW4gKGNvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3Qg
X19tYXhsZW4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRy
aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJlcnJvciAo
aW50IF9fZXJybnVtKSB0aHJvdyAoKTsKCiMgNDM4ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMg
NApleHRlcm4gY2hhciAqc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6
ZV90IF9fYnVmbGVuKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo
MikpKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX2wgKGludCBfX2Vycm51bSwgX19sb2Nh
bGVfdCBfX2wpIHRocm93ICgpOwoKCgoKCmV4dGVybiB2b2lkIF9fYnplcm8gKHZvaWQgKl9fcywg
c2l6ZV90IF9fbikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoK
CgpleHRlcm4gdm9pZCBiY29weSAoY29uc3Qgdm9pZCAqX19zcmMsIHZvaWQgKl9fZGVzdCwgc2l6
ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIp
KSk7CgoKZXh0ZXJuIHZvaWQgYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgYmNtcCAoY29u
c3Qgdm9pZCAqX19zMSwgY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g
KDEsIDIpKSk7CgoKCmV4dGVybiAiQysrIgp7CmV4dGVybiBjaGFyICppbmRleCAoY2hhciAqX19z
LCBpbnQgX19jKQogICAgIHRocm93ICgpIF9fYXNtICgiaW5kZXgiKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CmV4dGVybiBjb25z
dCBjaGFyICppbmRleCAoY29uc3QgY2hhciAqX19zLCBpbnQgX19jKQogICAgIHRocm93ICgpIF9f
YXNtICgiaW5kZXgiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgo
X19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2Fs
d2F5c19pbmxpbmVfXykpIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGNoYXIgKgpp
bmRleCAoY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9p
bmRleCAoX19zLCBfX2MpOwp9CgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fYWx3
YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgY29uc3QgY2hh
ciAqCmluZGV4IChjb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpCnsKICByZXR1cm4g
X19idWlsdGluX2luZGV4IChfX3MsIF9fYyk7Cn0KCn0KCgoKCgoKCmV4dGVybiAiQysrIgp7CmV4
dGVybiBjaGFyICpyaW5kZXggKGNoYXIgKl9fcywgaW50IF9fYykKICAgICB0aHJvdyAoKSBfX2Fz
bSAoInJpbmRleCIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChf
X25vbm51bGxfXyAoMSkpKTsKZXh0ZXJuIGNvbnN0IGNoYXIgKnJpbmRleCAoY29uc3QgY2hhciAq
X19zLCBpbnQgX19jKQogICAgIHRocm93ICgpIF9fYXNtICgicmluZGV4IikgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVy
biBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKSBfX2F0dHJpYnV0
ZV9fICgoX19nbnVfaW5saW5lX18pKSBjaGFyICoKcmluZGV4IChjaGFyICpfX3MsIGludCBfX2Mp
IHRocm93ICgpCnsKICByZXR1cm4gX19idWlsdGluX3JpbmRleCAoX19zLCBfX2MpOwp9CgpleHRl
cm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1
dGVfXyAoKF9fZ251X2lubGluZV9fKSkgY29uc3QgY2hhciAqCnJpbmRleCAoY29uc3QgY2hhciAq
X19zLCBpbnQgX19jKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9yaW5kZXggKF9fcywg
X19jKTsKfQoKfQoKCgoKCgoKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgZmZzbCAobG9uZyBpbnQgX19s
KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cl9fZXh0ZW5zaW9uX18gZXh0
ZXJuIGludCBmZnNsbCAobG9uZyBsb25nIGludCBfX2xsKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBzdHJjYXNlY21wIChjb25zdCBjaGFy
ICpfX3MxLCBjb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4g
aW50IHN0cm5jYXNlY21wIChjb25zdCBjaGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyLCBzaXpl
X3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgoKCgpleHRlcm4gaW50IHN0cmNhc2VjbXBf
bCAoY29uc3QgY2hhciAqX19zMSwgY29uc3QgY2hhciAqX19zMiwKICAgIF9fbG9jYWxlX3QgX19s
b2MpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9ubnVsbF9fICgxLCAyLCAzKSkpOwoKZXh0ZXJuIGludCBzdHJuY2FzZWNtcF9sIChj
b25zdCBjaGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyLAogICAgIHNpemVfdCBfX24sIF9fbG9j
YWxlX3QgX19sb2MpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyLCA0KSkpOwoKCgoKCmV4dGVybiBjaGFyICpz
dHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwKICAgICAgIGNvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19kZWxpbSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs
X18gKDEsIDIpKSk7CgoKCgpleHRlcm4gY2hhciAqc3Ryc2lnbmFsIChpbnQgX19zaWcpIHRocm93
ICgpOwoKCmV4dGVybiBjaGFyICpfX3N0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIGNv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fbm9ubnVsbF9fICgxLCAyKSkpOwpleHRlcm4gY2hhciAqc3RwY3B5IChjaGFyICpfX3Jlc3Ry
aWN0IF9fZGVzdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCmV4dGVybiBjaGFyICpfX3N0
cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fc3JjLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51
bGxfXyAoMSwgMikpKTsKZXh0ZXJuIGNoYXIgKnN0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19k
ZXN0LAogICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pCiAg
ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKZXh0
ZXJuIGludCBzdHJ2ZXJzY21wIChjb25zdCBjaGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChf
X25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gY2hhciAqc3RyZnJ5IChjaGFyICpfX3N0cmlu
ZykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiB2
b2lkICptZW1mcm9iICh2b2lkICpfX3MsIHNpemVfdCBfX24pIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgoKCmV4dGVybiAiQysrIiBjaGFyICpiYXNlbmFt
ZSAoY2hhciAqX19maWxlbmFtZSkKICAgICB0aHJvdyAoKSBfX2FzbSAoImJhc2VuYW1lIikgX19h
dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwpleHRlcm4gIkMrKyIgY29uc3QgY2hhciAq
YmFzZW5hbWUgKGNvbnN0IGNoYXIgKl9fZmlsZW5hbWUpCiAgICAgdGhyb3cgKCkgX19hc20gKCJi
YXNlbmFtZSIpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKIyA2NDQgIi91c3Iv
aW5jbHVkZS9zdHJpbmcuaCIgMyA0Cn0KIyAyOSAiLi4vLi4vU291cmNlL1dURi93dGYvSGFzaFRh
YmxlLmgiIDIKCgoKCgoKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgiIDEK
IyAyNyAiLi4vLi4vU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oIgojZGVmaW5lIFdURl9NYXRo
RXh0cmFzX2ggCgoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2NtYXRoIiAxIDMKIyAzOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9jbWF0aCIgMwogICAgICAgCiMgNDAgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvY21h
dGgiIDMKIyAzMSAiLi4vLi4vU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oIiAyCiMgMSAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUv
ZmxvYXQuaCIgMSAzIDQKIyAyOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUvZmxvYXQuaCIgMyA0CiNkZWZpbmUgX0ZMT0FUX0hfX18g
CgoKI3VuZGVmIEZMVF9SQURJWAojZGVmaW5lIEZMVF9SQURJWCBfX0ZMVF9SQURJWF9fCgoKI3Vu
ZGVmIEZMVF9NQU5UX0RJRwojdW5kZWYgREJMX01BTlRfRElHCiN1bmRlZiBMREJMX01BTlRfRElH
CiNkZWZpbmUgRkxUX01BTlRfRElHIF9fRkxUX01BTlRfRElHX18KI2RlZmluZSBEQkxfTUFOVF9E
SUcgX19EQkxfTUFOVF9ESUdfXwojZGVmaW5lIExEQkxfTUFOVF9ESUcgX19MREJMX01BTlRfRElH
X18KIyA1MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQu
OS4zL2luY2x1ZGUvZmxvYXQuaCIgMyA0CiN1bmRlZiBGTFRfRElHCiN1bmRlZiBEQkxfRElHCiN1
bmRlZiBMREJMX0RJRwojZGVmaW5lIEZMVF9ESUcgX19GTFRfRElHX18KI2RlZmluZSBEQkxfRElH
IF9fREJMX0RJR19fCiNkZWZpbmUgTERCTF9ESUcgX19MREJMX0RJR19fCgoKI3VuZGVmIEZMVF9N
SU5fRVhQCiN1bmRlZiBEQkxfTUlOX0VYUAojdW5kZWYgTERCTF9NSU5fRVhQCiNkZWZpbmUgRkxU
X01JTl9FWFAgX19GTFRfTUlOX0VYUF9fCiNkZWZpbmUgREJMX01JTl9FWFAgX19EQkxfTUlOX0VY
UF9fCiNkZWZpbmUgTERCTF9NSU5fRVhQIF9fTERCTF9NSU5fRVhQX18KCgoKCgoKI3VuZGVmIEZM
VF9NSU5fMTBfRVhQCiN1bmRlZiBEQkxfTUlOXzEwX0VYUAojdW5kZWYgTERCTF9NSU5fMTBfRVhQ
CiNkZWZpbmUgRkxUX01JTl8xMF9FWFAgX19GTFRfTUlOXzEwX0VYUF9fCiNkZWZpbmUgREJMX01J
Tl8xMF9FWFAgX19EQkxfTUlOXzEwX0VYUF9fCiNkZWZpbmUgTERCTF9NSU5fMTBfRVhQIF9fTERC
TF9NSU5fMTBfRVhQX18KCgojdW5kZWYgRkxUX01BWF9FWFAKI3VuZGVmIERCTF9NQVhfRVhQCiN1
bmRlZiBMREJMX01BWF9FWFAKI2RlZmluZSBGTFRfTUFYX0VYUCBfX0ZMVF9NQVhfRVhQX18KI2Rl
ZmluZSBEQkxfTUFYX0VYUCBfX0RCTF9NQVhfRVhQX18KI2RlZmluZSBMREJMX01BWF9FWFAgX19M
REJMX01BWF9FWFBfXwoKCgoKCgojdW5kZWYgRkxUX01BWF8xMF9FWFAKI3VuZGVmIERCTF9NQVhf
MTBfRVhQCiN1bmRlZiBMREJMX01BWF8xMF9FWFAKI2RlZmluZSBGTFRfTUFYXzEwX0VYUCBfX0ZM
VF9NQVhfMTBfRVhQX18KI2RlZmluZSBEQkxfTUFYXzEwX0VYUCBfX0RCTF9NQVhfMTBfRVhQX18K
I2RlZmluZSBMREJMX01BWF8xMF9FWFAgX19MREJMX01BWF8xMF9FWFBfXwoKCgoKCiN1bmRlZiBG
TFRfTUFYCiN1bmRlZiBEQkxfTUFYCiN1bmRlZiBMREJMX01BWAojZGVmaW5lIEZMVF9NQVggX19G
TFRfTUFYX18KI2RlZmluZSBEQkxfTUFYIF9fREJMX01BWF9fCiNkZWZpbmUgTERCTF9NQVggX19M
REJMX01BWF9fCgoKCiN1bmRlZiBGTFRfRVBTSUxPTgojdW5kZWYgREJMX0VQU0lMT04KI3VuZGVm
IExEQkxfRVBTSUxPTgojZGVmaW5lIEZMVF9FUFNJTE9OIF9fRkxUX0VQU0lMT05fXwojZGVmaW5l
IERCTF9FUFNJTE9OIF9fREJMX0VQU0lMT05fXwojZGVmaW5lIExEQkxfRVBTSUxPTiBfX0xEQkxf
RVBTSUxPTl9fCgoKI3VuZGVmIEZMVF9NSU4KI3VuZGVmIERCTF9NSU4KI3VuZGVmIExEQkxfTUlO
CiNkZWZpbmUgRkxUX01JTiBfX0ZMVF9NSU5fXwojZGVmaW5lIERCTF9NSU4gX19EQkxfTUlOX18K
I2RlZmluZSBMREJMX01JTiBfX0xEQkxfTUlOX18KCgoKI3VuZGVmIEZMVF9ST1VORFMKI2RlZmlu
ZSBGTFRfUk9VTkRTIDEKIyAzMiAiLi4vLi4vU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oIiAy
CiMgNTAgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaCIKY29uc3QgZG91YmxlIHBp
RG91YmxlID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsKY29uc3QgZmxvYXQgcGlGbG9hdCA9IHN0
YXRpY19jYXN0PGZsb2F0PigzLjE0MTU5MjY1MzU4OTc5MzIzODQ2KTsKCgoKCgoKY29uc3QgZG91
YmxlIHBpT3ZlclR3b0RvdWJsZSA9IDEuNTcwNzk2MzI2Nzk0ODk2NjE5MjM7CmNvbnN0IGZsb2F0
IHBpT3ZlclR3b0Zsb2F0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KDEuNTcwNzk2MzI2Nzk0ODk2NjE5
MjMpOwoKCgoKCgpjb25zdCBkb3VibGUgcGlPdmVyRm91ckRvdWJsZSA9IDAuNzg1Mzk4MTYzMzk3
NDQ4MzA5NjI7CmNvbnN0IGZsb2F0IHBpT3ZlckZvdXJGbG9hdCA9IHN0YXRpY19jYXN0PGZsb2F0
PigwLjc4NTM5ODE2MzM5NzQ0ODMwOTYyKTsKCgoKCgoKY29uc3QgZG91YmxlIHNxcnRPZlR3b0Rv
dWJsZSA9IDEuNDE0MjEzNTYyMzczMDk1MDQ4ODA7CmNvbnN0IGZsb2F0IHNxcnRPZlR3b0Zsb2F0
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KDEuNDE0MjEzNTYyMzczMDk1MDQ4ODApOwojIDEyNSAiLi4v
Li4vU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oIgppbmxpbmUgZG91YmxlIGRlZzJyYWQoZG91
YmxlIGQpIHsgcmV0dXJuIGQgKiBwaURvdWJsZSAvIDE4MC4wOyB9CmlubGluZSBkb3VibGUgcmFk
MmRlZyhkb3VibGUgcikgeyByZXR1cm4gciAqIDE4MC4wIC8gcGlEb3VibGU7IH0KaW5saW5lIGRv
dWJsZSBkZWcyZ3JhZChkb3VibGUgZCkgeyByZXR1cm4gZCAqIDQwMC4wIC8gMzYwLjA7IH0KaW5s
aW5lIGRvdWJsZSBncmFkMmRlZyhkb3VibGUgZykgeyByZXR1cm4gZyAqIDM2MC4wIC8gNDAwLjA7
IH0KaW5saW5lIGRvdWJsZSB0dXJuMmRlZyhkb3VibGUgdCkgeyByZXR1cm4gdCAqIDM2MC4wOyB9
CmlubGluZSBkb3VibGUgZGVnMnR1cm4oZG91YmxlIGQpIHsgcmV0dXJuIGQgLyAzNjAuMDsgfQpp
bmxpbmUgZG91YmxlIHJhZDJncmFkKGRvdWJsZSByKSB7IHJldHVybiByICogMjAwLjAgLyBwaURv
dWJsZTsgfQppbmxpbmUgZG91YmxlIGdyYWQycmFkKGRvdWJsZSBnKSB7IHJldHVybiBnICogcGlE
b3VibGUgLyAyMDAuMDsgfQoKaW5saW5lIGZsb2F0IGRlZzJyYWQoZmxvYXQgZCkgeyByZXR1cm4g
ZCAqIHBpRmxvYXQgLyAxODAuMGY7IH0KaW5saW5lIGZsb2F0IHJhZDJkZWcoZmxvYXQgcikgeyBy
ZXR1cm4gciAqIDE4MC4wZiAvIHBpRmxvYXQ7IH0KaW5saW5lIGZsb2F0IGRlZzJncmFkKGZsb2F0
IGQpIHsgcmV0dXJuIGQgKiA0MDAuMGYgLyAzNjAuMGY7IH0KaW5saW5lIGZsb2F0IGdyYWQyZGVn
KGZsb2F0IGcpIHsgcmV0dXJuIGcgKiAzNjAuMGYgLyA0MDAuMGY7IH0KaW5saW5lIGZsb2F0IHR1
cm4yZGVnKGZsb2F0IHQpIHsgcmV0dXJuIHQgKiAzNjAuMGY7IH0KaW5saW5lIGZsb2F0IGRlZzJ0
dXJuKGZsb2F0IGQpIHsgcmV0dXJuIGQgLyAzNjAuMGY7IH0KaW5saW5lIGZsb2F0IHJhZDJncmFk
KGZsb2F0IHIpIHsgcmV0dXJuIHIgKiAyMDAuMGYgLyBwaUZsb2F0OyB9CmlubGluZSBmbG9hdCBn
cmFkMnJhZChmbG9hdCBnKSB7IHJldHVybiBnICogcGlGbG9hdCAvIDIwMC4wZjsgfQoKCnRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIGRlZmF1bHRNaW5pbXVtRm9yQ2xhbXAoKSB7IHJldHVy
biBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKTsgfQp0ZW1wbGF0ZTw+IGlubGluZSBmbG9h
dCBkZWZhdWx0TWluaW11bUZvckNsYW1wKCkgeyByZXR1cm4gLXN0ZDo6bnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjptYXgoKTsgfQp0ZW1wbGF0ZTw+IGlubGluZSBkb3VibGUgZGVmYXVsdE1pbmltdW1G
b3JDbGFtcCgpIHsgcmV0dXJuIC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpOyB9
CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIGRlZmF1bHRNYXhpbXVtRm9yQ2xhbXAoKSB7
IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKTsgfQoKdGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIFQgY2xhbXBUbyhkb3VibGUgdmFsdWUsIFQgbWluID0gZGVmYXVsdE1pbmlt
dW1Gb3JDbGFtcDxUPigpLCBUIG1heCA9IGRlZmF1bHRNYXhpbXVtRm9yQ2xhbXA8VD4oKSkKewog
ICAgaWYgKHZhbHVlID49IHN0YXRpY19jYXN0PGRvdWJsZT4obWF4KSkKICAgICAgICByZXR1cm4g
bWF4OwogICAgaWYgKHZhbHVlIDw9IHN0YXRpY19jYXN0PGRvdWJsZT4obWluKSkKICAgICAgICBy
ZXR1cm4gbWluOwogICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHZhbHVlKTsKfQp0ZW1wbGF0ZTw+
IGlubGluZSBsb25nIGxvbmcgaW50IGNsYW1wVG8oZG91YmxlLCBsb25nIGxvbmcgaW50LCBsb25n
IGxvbmcgaW50KTsKCmlubGluZSBpbnQgY2xhbXBUb0ludGVnZXIoZG91YmxlIHZhbHVlKQp7CiAg
ICByZXR1cm4gY2xhbXBUbzxpbnQ+KHZhbHVlKTsKfQoKaW5saW5lIHVuc2lnbmVkIGNsYW1wVG9V
bnNpZ25lZChkb3VibGUgdmFsdWUpCnsKICAgIHJldHVybiBjbGFtcFRvPHVuc2lnbmVkPih2YWx1
ZSk7Cn0KCmlubGluZSBmbG9hdCBjbGFtcFRvRmxvYXQoZG91YmxlIHZhbHVlKQp7CiAgICByZXR1
cm4gY2xhbXBUbzxmbG9hdD4odmFsdWUpOwp9CgppbmxpbmUgaW50IGNsYW1wVG9Qb3NpdGl2ZUlu
dGVnZXIoZG91YmxlIHZhbHVlKQp7CiAgICByZXR1cm4gY2xhbXBUbzxpbnQ+KHZhbHVlLCAwKTsK
fQoKaW5saW5lIGludCBjbGFtcFRvSW50ZWdlcihmbG9hdCB2YWx1ZSkKewogICAgcmV0dXJuIGNs
YW1wVG88aW50Pih2YWx1ZSk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmlubGluZSBpbnQgY2xh
bXBUb0ludGVnZXIoVCB4KQp7CiAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6bnVtZXJpY19saW1pdHM8
VD46OmlzX2ludGVnZXIsICJUIG11c3QgYmUgYW4gaW50ZWdlci4iKTsKCiAgICBjb25zdCBUIGlu
dE1heCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1h
eCgpKTsKCiAgICBpZiAoeCA+PSBpbnRNYXgpCiAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50Pjo6bWF4KCk7CiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih4KTsKfQoKaW5s
aW5lIGJvb2wgaXNXaXRoaW5JbnRSYW5nZShmbG9hdCB4KQp7CiAgICByZXR1cm4geCA+IHN0YXRp
Y19jYXN0PGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpKSAmJiB4IDwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpOwp9Cgp0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBoYXNPbmVCaXRTZXQoVCB2YWx1ZSkKewogICAg
cmV0dXJuICEoKHZhbHVlIC0gMSkgJiB2YWx1ZSkgJiYgdmFsdWU7Cn0KCnRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBib29sIGhhc1plcm9Pck9uZUJpdHNTZXQoVCB2YWx1ZSkKewogICAgcmV0
dXJuICEoKHZhbHVlIC0gMSkgJiB2YWx1ZSk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGlu
ZSBib29sIGhhc1R3b09yTW9yZUJpdHNTZXQoVCB2YWx1ZSkKewogICAgcmV0dXJuICFoYXNaZXJv
T3JPbmVCaXRzU2V0KHZhbHVlKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB1bnNp
Z25lZCBnZXRMU0JTZXQoVCB2YWx1ZSkKewogICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKCiAgICB3
aGlsZSAodmFsdWUgPj49IDEpCiAgICAgICAgKytyZXN1bHQ7CgogICAgcmV0dXJuIHJlc3VsdDsK
fQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQgZGl2aWRlUm91bmRlZFVwKFQgYSwgVCBi
KQp7CiAgICByZXR1cm4gKGEgKyBiIC0gMSkgLyBiOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBp
bmxpbmUgVCB0aW1lc1RocmVlUGx1c09uZURpdmlkZWRCeVR3byhUIHZhbHVlKQp7CgoKCgoKICAg
IHJldHVybiB2YWx1ZSArICh2YWx1ZSA+PiAxKSArICh2YWx1ZSAmIDEpOwp9Cgp0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBpc05vdFplcm9BbmRPcmRlcmVkKFQgdmFsdWUpCnsKICAg
IHJldHVybiB2YWx1ZSA+IDAuMCB8fCB2YWx1ZSA8IDAuMDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUg
VD4gaW5saW5lIGJvb2wgaXNaZXJvT3JVbm9yZGVyZWQoVCB2YWx1ZSkKewogICAgcmV0dXJuICFp
c05vdFplcm9BbmRPcmRlcmVkKHZhbHVlKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5l
IGJvb2wgaXNHcmVhdGVyVGhhbk5vblplcm9Qb3dlck9mVHdvKFQgdmFsdWUsIHVuc2lnbmVkIHBv
d2VyKQp7CgoKICAgIHJldHVybiAhISgodmFsdWUgPj4gMSkgPj4gKHBvd2VyIC0gMSkpOwp9CiMg
MjkyICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgiCmlubGluZSB2b2lkIGRlY29t
cG9zZURvdWJsZShkb3VibGUgbnVtYmVyLCBib29sJiBzaWduLCBpbnQzMl90JiBleHBvbmVudCwg
dWludDY0X3QmIG1hbnRpc3NhKQp7CiAgICAoKHZvaWQpMCk7CgogICAgc2lnbiA9IHN0ZDo6c2ln
bmJpdChudW1iZXIpOwoKICAgIHVpbnQ2NF90IGJpdHMgPSBXVEY6OmJpdHdpc2VfY2FzdDx1aW50
NjRfdD4obnVtYmVyKTsKICAgIGV4cG9uZW50ID0gKHN0YXRpY19jYXN0PGludDMyX3Q+KGJpdHMg
Pj4gNTIpICYgMHg3ZmYpIC0gMHgzZmY7CiAgICBtYW50aXNzYSA9IGJpdHMgJiAweEZGRkZGRkZG
RkZGRkZ1bGw7CgoKCiAgICBpZiAoZXhwb25lbnQgPT0gLTB4M2ZmKQogICAgICAgIGV4cG9uZW50
ID0gbWFudGlzc2EgPyAtMHgzZmUgOiAwOwogICAgZWxzZQogICAgICAgIG1hbnRpc3NhIHw9IDB4
MTAwMDAwMDAwMDAwMDB1bGw7Cn0KCgppbmxpbmUgdm9pZCBkb3VibGVUb0ludGVnZXIoZG91Ymxl
IGQsIHVuc2lnbmVkIGxvbmcgbG9uZyYgdmFsdWUpCnsKICAgIGlmIChzdGQ6OmlzbmFuKGQpIHx8
IHN0ZDo6aXNpbmYoZCkpCiAgICAgICAgdmFsdWUgPSAwOwogICAgZWxzZSB7CgogICAgICAgIGRv
dWJsZSBmbW9kVmFsdWUgPSBmbW9kKHRydW5jKGQpLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkIGxvbmcgbG9uZz46Om1heCgpICsgMS4wKTsKICAgICAgICBpZiAoZm1vZFZhbHVlID49IDAp
IHsKCgogICAgICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4o
Zm1vZFZhbHVlKTsKICAgICAgICB9IGVsc2UgewoKCiAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBmbW9kVmFsdWVJblVuc2lnbmVkTG9uZ0xvbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nIGxvbmc+KC1mbW9kVmFsdWUpOwoKCiAgICAgICAgICAgIHZhbHVlID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZCBsb25nIGxvbmc+OjptYXgoKSAtIGZtb2RWYWx1ZUluVW5zaWduZWRM
b25nTG9uZyArIDE7CiAgICAgICAgfQogICAgfQp9CgpuYW1lc3BhY2UgV1RGIHsKCgppbmxpbmUg
dWludDMyX3Qgcm91bmRVcFRvUG93ZXJPZlR3byh1aW50MzJfdCB2KQp7CiAgICB2LS07CiAgICB2
IHw9IHYgPj4gMTsKICAgIHYgfD0gdiA+PiAyOwogICAgdiB8PSB2ID4+IDQ7CiAgICB2IHw9IHYg
Pj4gODsKICAgIHYgfD0gdiA+PiAxNjsKICAgIHYrKzsKICAgIHJldHVybiB2Owp9CgppbmxpbmUg
dW5zaWduZWQgZmFzdExvZzIodW5zaWduZWQgaSkKewogICAgdW5zaWduZWQgbG9nMiA9IDA7CiAg
ICBpZiAoaSAmIChpIC0gMSkpCiAgICAgICAgbG9nMiArPSAxOwogICAgaWYgKGkgPj4gMTYpCiAg
ICAgICAgbG9nMiArPSAxNiwgaSA+Pj0gMTY7CiAgICBpZiAoaSA+PiA4KQogICAgICAgIGxvZzIg
Kz0gOCwgaSA+Pj0gODsKICAgIGlmIChpID4+IDQpCiAgICAgICAgbG9nMiArPSA0LCBpID4+PSA0
OwogICAgaWYgKGkgPj4gMikKICAgICAgICBsb2cyICs9IDIsIGkgPj49IDI7CiAgICBpZiAoaSA+
PiAxKQogICAgICAgIGxvZzIgKz0gMTsKICAgIHJldHVybiBsb2cyOwp9CgppbmxpbmUgdW5zaWdu
ZWQgZmFzdExvZzIodWludDY0X3QgdmFsdWUpCnsKICAgIHVuc2lnbmVkIGhpZ2ggPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4odmFsdWUgPj4gMzIpOwogICAgaWYgKGhpZ2gpCiAgICAgICAgcmV0dXJu
IGZhc3RMb2cyKGhpZ2gpICsgMzI7CiAgICByZXR1cm4gZmFzdExvZzIoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHZhbHVlKSk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWUsIFQ+Ojp0eXBl
IHNhZmVGUERpdmlzaW9uKFQgdSwgVCB2KQp7CgogICAgaWYgKHYgPCAxICYmIHUgPiB2ICogc3Rk
OjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkpCiAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19s
aW1pdHM8VD46Om1heCgpOwogICAgaWYgKHYgPiAxICYmIHUgPCB2ICogc3RkOjpudW1lcmljX2xp
bWl0czxUPjo6bWluKCkpCiAgICAgICAgcmV0dXJuIDA7CiAgICByZXR1cm4gdSAvIHY7Cn0KCgoK
CgoKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWUsIGJvb2w+Ojp0eXBlIGFyZUVzc2VudGlh
bGx5RXF1YWwoVCB1LCBUIHYsIFQgZXBzaWxvbiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmVw
c2lsb24oKSkKewogICAgaWYgKHUgPT0gdikKICAgICAgICByZXR1cm4gdHJ1ZTsKCiAgICBjb25z
dCBUIGRlbHRhID0gc3RkOjphYnModSAtIHYpOwogICAgcmV0dXJuIHNhZmVGUERpdmlzaW9uKGRl
bHRhLCBzdGQ6OmFicyh1KSkgPD0gZXBzaWxvbiAmJiBzYWZlRlBEaXZpc2lvbihkZWx0YSwgc3Rk
OjphYnModikpIDw9IGVwc2lsb247Cn0KCmlubGluZSBib29sIGlzSW50ZWdyYWwoZmxvYXQgdmFs
dWUpCnsKICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSA9PSB2YWx1ZTsKfQoKdGVt
cGxhdGU8dHlwZW5hbWUgVD4KaW5saW5lIHZvaWQgaW5jcmVtZW50V2l0aFNhdHVyYXRpb24oVCYg
dmFsdWUpCnsKICAgIGlmICh2YWx1ZSAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSkK
ICAgICAgICB2YWx1ZSsrOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgppbmxpbmUgVCBsZWZ0U2hp
ZnRXaXRoU2F0dXJhdGlvbihUIHZhbHVlLCB1bnNpZ25lZCBzaGlmdEFtb3VudCwgVCBtYXggPSBz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSkKewogICAgVCByZXN1bHQgPSB2YWx1ZSA8PCBz
aGlmdEFtb3VudDsKCiAgICBpZiAocmVzdWx0ID4+IHNoaWZ0QW1vdW50ICE9IHZhbHVlKQogICAg
ICAgIHJldHVybiBtYXg7CiAgICBpZiAocmVzdWx0ID4gbWF4KQogICAgICAgIHJldHVybiBtYXg7
CiAgICByZXR1cm4gcmVzdWx0Owp9CgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KaW5saW5lIGJvb2wg
bm9uRW1wdHlSYW5nZXNPdmVybGFwKFQgbGVmdE1pbiwgVCBsZWZ0TWF4LCBUIHJpZ2h0TWluLCBU
IHJpZ2h0TWF4KQp7CiAgICAoKHZvaWQpMCk7CiAgICAoKHZvaWQpMCk7CgogICAgaWYgKGxlZnRN
aW4gPD0gcmlnaHRNaW4gJiYgbGVmdE1heCA+IHJpZ2h0TWluKQogICAgICAgIHJldHVybiB0cnVl
OwogICAgaWYgKHJpZ2h0TWluIDw9IGxlZnRNaW4gJiYgcmlnaHRNYXggPiBsZWZ0TWluKQogICAg
ICAgIHJldHVybiB0cnVlOwogICAgcmV0dXJuIGZhbHNlOwp9CgoKCgoKdGVtcGxhdGU8dHlwZW5h
bWUgVD4KaW5saW5lIGJvb2wgcmFuZ2VzT3ZlcmxhcChUIGxlZnRNaW4sIFQgbGVmdE1heCwgVCBy
aWdodE1pbiwgVCByaWdodE1heCkKewogICAgKCh2b2lkKTApOwogICAgKCh2b2lkKTApOwoKCiAg
ICBpZiAobGVmdE1pbiA9PSBsZWZ0TWF4KQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIGlmIChy
aWdodE1pbiA9PSByaWdodE1heCkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgcmV0dXJuIG5v
bkVtcHR5UmFuZ2VzT3ZlcmxhcChsZWZ0TWluLCBsZWZ0TWF4LCByaWdodE1pbiwgcmlnaHRNYXgp
Owp9Cgp9CiMgMzYgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIiAyCgojIDEgIi4u
Ly4uL1NvdXJjZS9XVEYvd3RmL1ZhbHVlQ2hlY2suaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvV1RG
L3d0Zi9WYWx1ZUNoZWNrLmgiCiNkZWZpbmUgVmFsdWVDaGVja19oIAoKCgpuYW1lc3BhY2UgV1RG
IHsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWYWx1ZUNoZWNrIHsKICAgIHR5cGVkZWYg
VCBUcmFpdFR5cGU7CiAgICBzdGF0aWMgdm9pZCBjaGVja0NvbnNpc3RlbmN5KGNvbnN0IFQmKSB7
IH0KfTsKIyA1MSAiLi4vLi4vU291cmNlL1dURi93dGYvVmFsdWVDaGVjay5oIgp9CiMgMzggIi4u
Ly4uL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIiAyCgojZGVmaW5lIERVTVBfSEFTSFRBQkxF
X1NUQVRTIDAKI2RlZmluZSBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUgMAoKCgoKCm5h
bWVzcGFjZSBXVEYgewoKCiNkZWZpbmUgQ0hFQ0tfSEFTSFRBQkxFX0NPTlNJU1RFTkNZIDAKCgoj
ZGVmaW5lIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMgMAojZGVmaW5lIENIRUNLX0hBU0hUQUJM
RV9VU0VfQUZURVJfREVTVFJVQ1RJT04gMAojIDc5ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9IYXNo
VGFibGUuaCIKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBLZXlUcmFpdHM+CiAgICBjbGFzcyBIYXNoVGFibGU7CiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgY2xh
c3MgSGFzaFRhYmxlSXRlcmF0b3I7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgY2xhc3MgSGFzaFRhYmxlQ29uc3RJ
dGVyYXRvcjsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgogICAgdm9pZCBhZGRJdGVyYXRvcihjb25zdCBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4q
LAogICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qKTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgdm9pZCBy
ZW1vdmVJdGVyYXRvcihIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3Rv
ciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Kik7CgoKCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAg
aW5saW5lIHZvaWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiwKICAgICAgICBIYXNoVGFi
bGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+KikgeyB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIGlubGluZSB2b2lkIHJlbW92ZUl0
ZXJhdG9yKEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qKSB7IH0KCgoKICAgIHR5cGVkZWYgZW51bSB7
IEhhc2hJdGVtS25vd25Hb29kIH0gSGFzaEl0ZW1Lbm93bkdvb2RUYWc7CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAg
IGNsYXNzIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6
OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBWYWx1ZSwgc3RkOjpwdHJkaWZmX3QsIGNvbnN0IFZhbHVl
KiwgY29uc3QgVmFsdWUmPiB7CiAgICBwcml2YXRlOgogICAgICAgIHR5cGVkZWYgSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
IEhhc2hUYWJsZVR5cGU7CiAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRv
cjsKICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gY29uc3RfaXRlcmF0b3I7
CiAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1ZVR5cGU7CiAgICAgICAgdHlwZWRlZiBjb25zdCBW
YWx1ZVR5cGUmIFJlZmVyZW5jZVR5cGU7CiAgICAgICAgdHlwZWRlZiBjb25zdCBWYWx1ZVR5cGUq
IFBvaW50ZXJUeXBlOwoKICAgICAgICBmcmllbmQgY2xhc3MgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OwogICAgICAgIGZy
aWVuZCBjbGFzcyBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjsKCiAgICAgICAgdm9pZCBza2lwRW1wdHlCdWNr
ZXRzKCkKICAgICAgICB7CiAgICAgICAgICAgIHdoaWxlIChtX3Bvc2l0aW9uICE9IG1fZW5kUG9z
aXRpb24gJiYgSGFzaFRhYmxlVHlwZTo6aXNFbXB0eU9yRGVsZXRlZEJ1Y2tldCgqbV9wb3NpdGlv
bikpCiAgICAgICAgICAgICAgICArK21fcG9zaXRpb247CiAgICAgICAgfQoKICAgICAgICBIYXNo
VGFibGVDb25zdEl0ZXJhdG9yKGNvbnN0IEhhc2hUYWJsZVR5cGUqIHRhYmxlLCBQb2ludGVyVHlw
ZSBwb3NpdGlvbiwgUG9pbnRlclR5cGUgZW5kUG9zaXRpb24pCiAgICAgICAgICAgIDogbV9wb3Np
dGlvbihwb3NpdGlvbiksIG1fZW5kUG9zaXRpb24oZW5kUG9zaXRpb24pCiAgICAgICAgewogICAg
ICAgICAgICBhZGRJdGVyYXRvcih0YWJsZSwgdGhpcyk7CiAgICAgICAgICAgIHNraXBFbXB0eUJ1
Y2tldHMoKTsKICAgICAgICB9CgogICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3IoY29uc3Qg
SGFzaFRhYmxlVHlwZSogdGFibGUsIFBvaW50ZXJUeXBlIHBvc2l0aW9uLCBQb2ludGVyVHlwZSBl
bmRQb3NpdGlvbiwgSGFzaEl0ZW1Lbm93bkdvb2RUYWcpCiAgICAgICAgICAgIDogbV9wb3NpdGlv
bihwb3NpdGlvbiksIG1fZW5kUG9zaXRpb24oZW5kUG9zaXRpb24pCiAgICAgICAgewogICAgICAg
ICAgICBhZGRJdGVyYXRvcih0YWJsZSwgdGhpcyk7CiAgICAgICAgfQoKICAgIHB1YmxpYzoKICAg
ICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yKCkKICAgICAgICB7CiAgICAgICAgICAgIGFkZEl0
ZXJhdG9yKHN0YXRpY19jYXN0PGNvbnN0IEhhc2hUYWJsZVR5cGUqPigwKSwgdGhpcyk7CiAgICAg
ICAgfQojIDE3MCAiLi4vLi4vU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgiCiAgICAgICAgUG9p
bnRlclR5cGUgZ2V0KCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIGNoZWNrVmFsaWRpdHko
KTsKICAgICAgICAgICAgcmV0dXJuIG1fcG9zaXRpb247CiAgICAgICAgfQogICAgICAgIFJlZmVy
ZW5jZVR5cGUgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9CiAgICAgICAgUG9p
bnRlclR5cGUgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CgogICAgICAgIGNv
bnN0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkKICAgICAgICB7CiAgICAgICAgICAgIGNoZWNrVmFs
aWRpdHkoKTsKICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICArK21fcG9zaXRpb247
CiAgICAgICAgICAgIHNraXBFbXB0eUJ1Y2tldHMoKTsKICAgICAgICAgICAgcmV0dXJuICp0aGlz
OwogICAgICAgIH0KCgoKCiAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNvbnN0X2l0ZXJh
dG9yJiBvdGhlcikgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIGNoZWNrVmFsaWRpdHkob3Ro
ZXIpOwogICAgICAgICAgICByZXR1cm4gbV9wb3NpdGlvbiA9PSBvdGhlci5tX3Bvc2l0aW9uOwog
ICAgICAgIH0KICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgY29uc3RfaXRlcmF0b3ImIG90
aGVyKSBjb25zdAogICAgICAgIHsKICAgICAgICAgICAgY2hlY2tWYWxpZGl0eShvdGhlcik7CiAg
ICAgICAgICAgIHJldHVybiBtX3Bvc2l0aW9uICE9IG90aGVyLm1fcG9zaXRpb247CiAgICAgICAg
fQogICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAg
ICAgICAgewogICAgICAgICAgICByZXR1cm4gKnRoaXMgPT0gc3RhdGljX2Nhc3Q8Y29uc3RfaXRl
cmF0b3I+KG90aGVyKTsKICAgICAgICB9CiAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0
ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAqdGhpcyAh
PSBzdGF0aWNfY2FzdDxjb25zdF9pdGVyYXRvcj4ob3RoZXIpOwogICAgICAgIH0KCiAgICBwcml2
YXRlOgogICAgICAgIHZvaWQgY2hlY2tWYWxpZGl0eSgpIGNvbnN0CiAgICAgICAgewoKCgogICAg
ICAgIH0KIyAyMjYgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIgogICAgICAgIHZv
aWQgY2hlY2tWYWxpZGl0eShjb25zdCBjb25zdF9pdGVyYXRvciYpIGNvbnN0IHsgfQoKCiAgICAg
ICAgUG9pbnRlclR5cGUgbV9wb3NpdGlvbjsKICAgICAgICBQb2ludGVyVHlwZSBtX2VuZFBvc2l0
aW9uOwojIDI0MCAiLi4vLi4vU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgiCiAgICB9OwoKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+CiAgICBjbGFzcyBIYXNoVGFibGVJdGVyYXRvciA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9y
PHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsIFZhbHVlLCBzdGQ6OnB0cmRpZmZfdCwgVmFsdWUq
LCBWYWx1ZSY+IHsKICAgIHByaXZhdGU6CiAgICAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gSGFzaFRh
YmxlVHlwZTsKICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4
dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IGl0ZXJhdG9yOwogICAg
ICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBjb25zdF9pdGVyYXRvcjsKICAgICAg
ICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsKICAgICAgICB0eXBlZGVmIFZhbHVlVHlwZSYgUmVm
ZXJlbmNlVHlwZTsKICAgICAgICB0eXBlZGVmIFZhbHVlVHlwZSogUG9pbnRlclR5cGU7CgogICAg
ICAgIGZyaWVuZCBjbGFzcyBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz47CgogICAgICAgIEhhc2hUYWJsZUl0ZXJhdG9yKEhh
c2hUYWJsZVR5cGUqIHRhYmxlLCBQb2ludGVyVHlwZSBwb3MsIFBvaW50ZXJUeXBlIGVuZCkgOiBt
X2l0ZXJhdG9yKHRhYmxlLCBwb3MsIGVuZCkgeyB9CiAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3Io
SGFzaFRhYmxlVHlwZSogdGFibGUsIFBvaW50ZXJUeXBlIHBvcywgUG9pbnRlclR5cGUgZW5kLCBI
YXNoSXRlbUtub3duR29vZFRhZyB0YWcpIDogbV9pdGVyYXRvcih0YWJsZSwgcG9zLCBlbmQsIHRh
ZykgeyB9CgogICAgcHVibGljOgogICAgICAgIEhhc2hUYWJsZUl0ZXJhdG9yKCkgeyB9CgoKCiAg
ICAgICAgUG9pbnRlclR5cGUgZ2V0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxQb2ludGVy
VHlwZT4obV9pdGVyYXRvci5nZXQoKSk7IH0KICAgICAgICBSZWZlcmVuY2VUeXBlIG9wZXJhdG9y
KigpIGNvbnN0IHsgcmV0dXJuICpnZXQoKTsgfQogICAgICAgIFBvaW50ZXJUeXBlIG9wZXJhdG9y
LT4oKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQoKICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3Ir
KygpIHsgKyttX2l0ZXJhdG9yOyByZXR1cm4gKnRoaXM7IH0KCgoKCiAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciA9
PSBvdGhlci5tX2l0ZXJhdG9yOyB9CiAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJh
dG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciAhPSBvdGhlci5tX2l0ZXJhdG9y
OyB9CiAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciA9PSBvdGhlcjsgfQogICAgICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0
b3IgIT0gb3RoZXI7IH0KCiAgICAgICAgb3BlcmF0b3IgY29uc3RfaXRlcmF0b3IoKSBjb25zdCB7
IHJldHVybiBtX2l0ZXJhdG9yOyB9CgogICAgcHJpdmF0ZToKICAgICAgICBjb25zdF9pdGVyYXRv
ciBtX2l0ZXJhdG9yOwogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
PiBjbGFzcyBJZGVudGl0eUhhc2hUcmFuc2xhdG9yIHsKICAgIHB1YmxpYzoKICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBUJiBrZXkpIHsgcmV0
dXJuIEhhc2hGdW5jdGlvbnM6Omhhc2goa2V5KTsgfQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFQmIGEsIGNvbnN0IFUmIGIp
IHsgcmV0dXJuIEhhc2hGdW5jdGlvbnM6OmVxdWFsKGEsIGIpOyB9CiAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RhdGljIHZvaWQgdHJhbnNsYXRl
KFQmIGxvY2F0aW9uLCBjb25zdCBVJiwgViYmIHZhbHVlKSB7IGxvY2F0aW9uID0gc3RkOjpmb3J3
YXJkPFY+KHZhbHVlKTsgfQogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvclR5
cGU+IHN0cnVjdCBIYXNoVGFibGVBZGRSZXN1bHQgewogICAgICAgIEhhc2hUYWJsZUFkZFJlc3Vs
dCgpIDogaXNOZXdFbnRyeShmYWxzZSkgeyB9CiAgICAgICAgSGFzaFRhYmxlQWRkUmVzdWx0KEl0
ZXJhdG9yVHlwZSBpdGVyLCBib29sIGlzTmV3RW50cnkpIDogaXRlcmF0b3IoaXRlciksIGlzTmV3
RW50cnkoaXNOZXdFbnRyeSkgeyB9CiAgICAgICAgSXRlcmF0b3JUeXBlIGl0ZXJhdG9yOwogICAg
ICAgIGJvb2wgaXNOZXdFbnRyeTsKCiAgICAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIGlzTmV3RW50cnk7IH0KICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIGNsYXNzIEhh
c2hUYWJsZSB7CiAgICBwdWJsaWM6CiAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRvcjxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBp
dGVyYXRvcjsKICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3I8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gY29uc3RfaXRl
cmF0b3I7CiAgICAgICAgdHlwZWRlZiBUcmFpdHMgVmFsdWVUcmFpdHM7CiAgICAgICAgdHlwZWRl
ZiBLZXkgS2V5VHlwZTsKICAgICAgICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsKICAgICAgICB0
eXBlZGVmIElkZW50aXR5SGFzaFRyYW5zbGF0b3I8SGFzaEZ1bmN0aW9ucz4gSWRlbnRpdHlUcmFu
c2xhdG9yVHlwZTsKICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUFkZFJlc3VsdDxpdGVyYXRvcj4g
QWRkUmVzdWx0OwojIDM1NCAiLi4vLi4vU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgiCiAgICAg
ICAgSGFzaFRhYmxlKCk7CiAgICAgICAgfkhhc2hUYWJsZSgpCiAgICAgICAgewogICAgICAgICAg
ICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7CiAgICAgICAgICAgIGlmIChtX3RhYmxlKQogICAgICAg
ICAgICAgICAgZGVhbGxvY2F0ZVRhYmxlKG1fdGFibGUsIG1fdGFibGVTaXplKTsKCgoKICAgICAg
ICB9CgogICAgICAgIEhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmKTsKICAgICAgICB2b2lkIHN3
YXAoSGFzaFRhYmxlJik7CiAgICAgICAgSGFzaFRhYmxlJiBvcGVyYXRvcj0oY29uc3QgSGFzaFRh
YmxlJik7CgogICAgICAgIEhhc2hUYWJsZShIYXNoVGFibGUmJik7CiAgICAgICAgSGFzaFRhYmxl
JiBvcGVyYXRvcj0oSGFzaFRhYmxlJiYpOwoKCgoKICAgICAgICBpdGVyYXRvciBiZWdpbigpIHsg
cmV0dXJuIGlzRW1wdHkoKSA/IGVuZCgpIDogbWFrZUl0ZXJhdG9yKG1fdGFibGUpOyB9CiAgICAg
ICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbWFrZUtub3duR29vZEl0ZXJhdG9yKG1fdGFibGUg
KyBtX3RhYmxlU2l6ZSk7IH0KICAgICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsg
cmV0dXJuIGlzRW1wdHkoKSA/IGVuZCgpIDogbWFrZUNvbnN0SXRlcmF0b3IobV90YWJsZSk7IH0K
ICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtYWtlS25vd25Hb29k
Q29uc3RJdGVyYXRvcihtX3RhYmxlICsgbV90YWJsZVNpemUpOyB9CgogICAgICAgIHVuc2lnbmVk
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2tleUNvdW50OyB9CiAgICAgICAgdW5zaWduZWQgY2Fw
YWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3RhYmxlU2l6ZTsgfQogICAgICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuICFtX2tleUNvdW50OyB9CgogICAgICAgIEFkZFJlc3VsdCBhZGQo
Y29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gYWRkPElkZW50aXR5VHJhbnNsYXRvclR5
cGU+KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSksIHZhbHVlKTsgfQogICAgICAgIEFkZFJlc3Vs
dCBhZGQoVmFsdWVUeXBlJiYgdmFsdWUpIHsgcmV0dXJuIGFkZDxJZGVudGl0eVRyYW5zbGF0b3JU
eXBlPihFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUpLCBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQ
YXJhbWV0ZXI+KHZhbHVlKSk7IH0KCgoKCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRy
YW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhPiBBZGRSZXN1bHQgYWRkKFQmJiBr
ZXksIEV4dHJhJiYpOwogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0
eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4gQWRkUmVzdWx0IGFkZFBhc3NpbmdIYXNoQ29kZShU
JiYga2V5LCBFeHRyYSYmKTsKCiAgICAgICAgaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJiBr
ZXkpIHsgcmV0dXJuIGZpbmQ8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oa2V5KTsgfQogICAgICAg
IGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdCB7IHJldHVybiBm
aW5kPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH0KICAgICAgICBib29sIGNvbnRhaW5z
KGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QgeyByZXR1cm4gY29udGFpbnM8SWRlbnRpdHlUcmFu
c2xhdG9yVHlwZT4oa2V5KTsgfQoKICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNs
YXRvciwgdHlwZW5hbWUgVD4gaXRlcmF0b3IgZmluZChjb25zdCBUJik7CiAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+IGNvbnN0X2l0ZXJhdG9yIGZp
bmQoY29uc3QgVCYpIGNvbnN0OwogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xh
dG9yLCB0eXBlbmFtZSBUPiBib29sIGNvbnRhaW5zKGNvbnN0IFQmKSBjb25zdDsKCiAgICAgICAg
dm9pZCByZW1vdmUoY29uc3QgS2V5VHlwZSYpOwogICAgICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9y
KTsKICAgICAgICB2b2lkIHJlbW92ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soaXRlcmF0
b3IpOwogICAgICAgIHZvaWQgcmVtb3ZlV2l0aG91dEVudHJ5Q29uc2lzdGVuY3lDaGVjayhjb25z
dF9pdGVyYXRvcik7CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICAgICB2
b2lkIHJlbW92ZUlmKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAgICB2b2lkIGNsZWFyKCk7CgogICAg
ICAgIHN0YXRpYyBib29sIGlzRW1wdHlCdWNrZXQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyBy
ZXR1cm4gaXNIYXNoVHJhaXRzRW1wdHlWYWx1ZTxLZXlUcmFpdHM+KEV4dHJhY3Rvcjo6ZXh0cmFj
dCh2YWx1ZSkpOyB9CiAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkQnVja2V0KGNvbnN0IFZh
bHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIEtleVRyYWl0czo6aXNEZWxldGVkVmFsdWUoRXh0cmFj
dG9yOjpleHRyYWN0KHZhbHVlKSk7IH0KICAgICAgICBzdGF0aWMgYm9vbCBpc0VtcHR5T3JEZWxl
dGVkQnVja2V0KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIGlzRW1wdHlCdWNrZXQo
dmFsdWUpIHx8IGlzRGVsZXRlZEJ1Y2tldCh2YWx1ZSk7IH0KCiAgICAgICAgVmFsdWVUeXBlKiBs
b29rdXAoY29uc3QgS2V5JiBrZXkpIHsgcmV0dXJuIGxvb2t1cDxJZGVudGl0eVRyYW5zbGF0b3JU
eXBlPihrZXkpOyB9CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5
cGVuYW1lIFQ+IFZhbHVlVHlwZSogbG9va3VwKGNvbnN0IFQmKTsKICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gVmFsdWVUeXBlKiBpbmxpbmVMb29r
dXAoY29uc3QgVCYpOwoKCgoKICAgICAgICBzdGF0aWMgdm9pZCBjaGVja1RhYmxlQ29uc2lzdGVu
Y3koKSB7IH0KCgoKCgogICAgICAgIHN0YXRpYyB2b2lkIGludGVybmFsQ2hlY2tUYWJsZUNvbnNp
c3RlbmN5RXhjZXB0U2l6ZSgpIHsgfQogICAgICAgIHN0YXRpYyB2b2lkIGludGVybmFsQ2hlY2tU
YWJsZUNvbnNpc3RlbmN5KCkgeyB9CgoKICAgIHByaXZhdGU6CiAgICAgICAgc3RhdGljIFZhbHVl
VHlwZSogYWxsb2NhdGVUYWJsZSh1bnNpZ25lZCBzaXplKTsKICAgICAgICBzdGF0aWMgdm9pZCBk
ZWFsbG9jYXRlVGFibGUoVmFsdWVUeXBlKiB0YWJsZSwgdW5zaWduZWQgc2l6ZSk7CgogICAgICAg
IHR5cGVkZWYgc3RkOjpwYWlyPFZhbHVlVHlwZSosIGJvb2w+IExvb2t1cFR5cGU7CiAgICAgICAg
dHlwZWRlZiBzdGQ6OnBhaXI8TG9va3VwVHlwZSwgdW5zaWduZWQ+IEZ1bGxMb29rdXBUeXBlOwoK
ICAgICAgICBMb29rdXBUeXBlIGxvb2t1cEZvcldyaXRpbmcoY29uc3QgS2V5JiBrZXkpIHsgcmV0
dXJuIGxvb2t1cEZvcldyaXRpbmc8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oa2V5KTsgfTsKICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gRnVsbExv
b2t1cFR5cGUgZnVsbExvb2t1cEZvcldyaXRpbmcoY29uc3QgVCYpOwogICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBMb29rdXBUeXBlIGxvb2t1cEZv
cldyaXRpbmcoY29uc3QgVCYpOwoKICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNs
YXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+IHZvaWQgYWRkVW5pcXVlRm9ySW5pdGlh
bGl6YXRpb24oVCYmIGtleSwgRXh0cmEmJik7CgogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhh
c2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiB2b2lkIGNoZWNrS2V5KGNvbnN0IFQmKTsKCiAgICAg
ICAgdm9pZCByZW1vdmVBbmRJbnZhbGlkYXRlV2l0aG91dEVudHJ5Q29uc2lzdGVuY3lDaGVjayhW
YWx1ZVR5cGUqKTsKICAgICAgICB2b2lkIHJlbW92ZUFuZEludmFsaWRhdGUoVmFsdWVUeXBlKik7
CiAgICAgICAgdm9pZCByZW1vdmUoVmFsdWVUeXBlKik7CgogICAgICAgIGJvb2wgc2hvdWxkRXhw
YW5kKCkgY29uc3QgeyByZXR1cm4gKG1fa2V5Q291bnQgKyBtX2RlbGV0ZWRDb3VudCkgKiBtX21h
eExvYWQgPj0gbV90YWJsZVNpemU7IH0KICAgICAgICBib29sIG11c3RSZWhhc2hJblBsYWNlKCkg
Y29uc3QgeyByZXR1cm4gbV9rZXlDb3VudCAqIG1fbWluTG9hZCA8IG1fdGFibGVTaXplICogMjsg
fQogICAgICAgIGJvb2wgc2hvdWxkU2hyaW5rKCkgY29uc3QgeyByZXR1cm4gbV9rZXlDb3VudCAq
IG1fbWluTG9hZCA8IG1fdGFibGVTaXplICYmIG1fdGFibGVTaXplID4gS2V5VHJhaXRzOjptaW5p
bXVtVGFibGVTaXplOyB9CiAgICAgICAgVmFsdWVUeXBlKiBleHBhbmQoVmFsdWVUeXBlKiBlbnRy
eSA9IG51bGxwdHIpOwogICAgICAgIHZvaWQgc2hyaW5rKCkgeyByZWhhc2gobV90YWJsZVNpemUg
LyAyLCBudWxscHRyKTsgfQoKICAgICAgICBWYWx1ZVR5cGUqIHJlaGFzaCh1bnNpZ25lZCBuZXdU
YWJsZVNpemUsIFZhbHVlVHlwZSogZW50cnkpOwogICAgICAgIFZhbHVlVHlwZSogcmVpbnNlcnQo
VmFsdWVUeXBlJiYpOwoKICAgICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplQnVja2V0KFZhbHVl
VHlwZSYgYnVja2V0KTsKICAgICAgICBzdGF0aWMgdm9pZCBkZWxldGVCdWNrZXQoVmFsdWVUeXBl
JiBidWNrZXQpIHsgaGFzaFRyYWl0c0RlbGV0ZUJ1Y2tldDxUcmFpdHM+KGJ1Y2tldCk7IH0KCiAg
ICAgICAgRnVsbExvb2t1cFR5cGUgbWFrZUxvb2t1cFJlc3VsdChWYWx1ZVR5cGUqIHBvc2l0aW9u
LCBib29sIGZvdW5kLCB1bnNpZ25lZCBoYXNoKQogICAgICAgICAgICB7IHJldHVybiBGdWxsTG9v
a3VwVHlwZShMb29rdXBUeXBlKHBvc2l0aW9uLCBmb3VuZCksIGhhc2gpOyB9CgogICAgICAgIGl0
ZXJhdG9yIG1ha2VJdGVyYXRvcihWYWx1ZVR5cGUqIHBvcykgeyByZXR1cm4gaXRlcmF0b3IodGhp
cywgcG9zLCBtX3RhYmxlICsgbV90YWJsZVNpemUpOyB9CiAgICAgICAgY29uc3RfaXRlcmF0b3Ig
bWFrZUNvbnN0SXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0
ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVTaXplKTsgfQogICAgICAgIGl0ZXJh
dG9yIG1ha2VLbm93bkdvb2RJdGVyYXRvcihWYWx1ZVR5cGUqIHBvcykgeyByZXR1cm4gaXRlcmF0
b3IodGhpcywgcG9zLCBtX3RhYmxlICsgbV90YWJsZVNpemUsIEhhc2hJdGVtS25vd25Hb29kKTsg
fQogICAgICAgIGNvbnN0X2l0ZXJhdG9yIG1ha2VLbm93bkdvb2RDb25zdEl0ZXJhdG9yKFZhbHVl
VHlwZSogcG9zKSBjb25zdCB7IHJldHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCBwb3MsIG1fdGFi
bGUgKyBtX3RhYmxlU2l6ZSwgSGFzaEl0ZW1Lbm93bkdvb2QpOyB9CgoKCgogICAgICAgIHN0YXRp
YyB2b2lkIGNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSB7IH0KCgoKCgogICAgICAg
IHN0YXRpYyB2b2lkIGludmFsaWRhdGVJdGVyYXRvcnMoKSB7IH0KCgogICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBtX21heExvYWQgPSAyOwogICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBtX21pbkxvYWQgPSA2OwoKICAgICAgICBWYWx1ZVR5cGUqIG1fdGFibGU7CiAgICAgICAgdW5z
aWduZWQgbV90YWJsZVNpemU7CiAgICAgICAgdW5zaWduZWQgbV90YWJsZVNpemVNYXNrOwogICAg
ICAgIHVuc2lnbmVkIG1fa2V5Q291bnQ7CiAgICAgICAgdW5zaWduZWQgbV9kZWxldGVkQ291bnQ7
CiMgNTAyICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaCIKICAgIH07CgoKICAgIHRl
bXBsYXRlPHVuc2lnbmVkIHNpemU+IHN0cnVjdCBPbmVpZnlMb3dCaXRzOwogICAgdGVtcGxhdGU8
PgogICAgc3RydWN0IE9uZWlmeUxvd0JpdHM8MD4gewogICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCB2YWx1ZSA9IDA7CiAgICB9OwogICAgdGVtcGxhdGU8dW5zaWduZWQgbnVtYmVyPgogICAg
c3RydWN0IE9uZWlmeUxvd0JpdHMgewogICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2YWx1
ZSA9IG51bWJlciB8IE9uZWlmeUxvd0JpdHM8KG51bWJlciA+PiAxKT46OnZhbHVlOwogICAgfTsK
CiAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1iZXI+CiAgICBzdHJ1Y3QgVXBwZXJQb3dlck9mVHdv
Qm91bmQgewogICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2YWx1ZSA9IChPbmVpZnlMb3dC
aXRzPG51bWJlciAtIDE+Ojp2YWx1ZSArIDEpICogMjsKICAgIH07CgoKCiAgICB0ZW1wbGF0ZTx1
bnNpZ25lZCBzaXplLCBib29sIGlzUG93ZXJPZlR3bz4gc3RydWN0IEhhc2hUYWJsZUNhcGFjaXR5
Rm9yU2l6ZVNwbGl0dGVyOwogICAgdGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4KICAgIHN0cnVjdCBI
YXNoVGFibGVDYXBhY2l0eUZvclNpemVTcGxpdHRlcjxzaXplLCB0cnVlPiB7CiAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHZhbHVlID0gc2l6ZSAqIDQ7CiAgICB9OwogICAgdGVtcGxhdGU8
dW5zaWduZWQgc2l6ZT4KICAgIHN0cnVjdCBIYXNoVGFibGVDYXBhY2l0eUZvclNpemVTcGxpdHRl
cjxzaXplLCBmYWxzZT4gewogICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2YWx1ZSA9IFVw
cGVyUG93ZXJPZlR3b0JvdW5kPHNpemU+Ojp2YWx1ZTsKICAgIH07CgoKCiAgICB0ZW1wbGF0ZTx1
bnNpZ25lZCBzaXplPgogICAgc3RydWN0IEhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZSB7CiAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZhbHVlID0gSGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXpl
U3BsaXR0ZXI8c2l6ZSwgIShzaXplICYgKHNpemUgLSAxKSk+Ojp2YWx1ZTsKICAgICAgICBzdGF0
aWNfYXNzZXJ0KChzaXplID4gMCksICJIYXNoVGFibGVOb25aZXJvTWluaW11bUNhcGFjaXR5Iik7
CiAgICAgICAgc3RhdGljX2Fzc2VydCgoIXN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWx1ZSA+PiAz
MSkpLCAiSGFzaFRhYmxlTm9DYXBhY2l0eU92ZXJmbG93Iik7CiAgICAgICAgc3RhdGljX2Fzc2Vy
dCgodmFsdWUgPiAoMiAqIHNpemUpKSwgIkhhc2hUYWJsZUNhcGFjaXR5SG9sZHNDb250ZW50U2l6
ZSIpOwogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgaW5saW5lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBF
eHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6SGFzaFRhYmxlKCkK
ICAgICAgICA6IG1fdGFibGUoMCkKICAgICAgICAsIG1fdGFibGVTaXplKDApCiAgICAgICAgLCBt
X3RhYmxlU2l6ZU1hc2soMCkKICAgICAgICAsIG1fa2V5Q291bnQoMCkKICAgICAgICAsIG1fZGVs
ZXRlZENvdW50KDApCgoKCgoKCgogICAgewogICAgfQoKICAgIGlubGluZSB1bnNpZ25lZCBkb3Vi
bGVIYXNoKHVuc2lnbmVkIGtleSkKICAgIHsKICAgICAgICBrZXkgPSB+a2V5ICsgKGtleSA+PiAy
Myk7CiAgICAgICAga2V5IF49IChrZXkgPDwgMTIpOwogICAgICAgIGtleSBePSAoa2V5ID4+IDcp
OwogICAgICAgIGtleSBePSAoa2V5IDw8IDIpOwogICAgICAgIGtleSBePSAoa2V5ID4+IDIwKTsK
ICAgICAgICByZXR1cm4ga2V5OwogICAgfQoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgogICAgaW5saW5lIHZvaWQgSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
OjpjaGVja0tleShjb25zdCBUJikKICAgIHsKICAgIH0KIyA1OTUgIi4uLy4uL1NvdXJjZS9XVEYv
d3RmL0hhc2hUYWJsZS5oIgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFu
c2xhdG9yLCB0eXBlbmFtZSBUPgogICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpsb29rdXAoY29u
c3QgVCYga2V5KSAtPiBWYWx1ZVR5cGUqCiAgICB7CiAgICAgICAgcmV0dXJuIGlubGluZUxvb2t1
cDxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18pKSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6aW5saW5lTG9va3VwKGNvbnN0
IFQmIGtleSkgLT4gVmFsdWVUeXBlKgogICAgewogICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xh
dG9yPihrZXkpOwoKICAgICAgICB1bnNpZ25lZCBrID0gMDsKICAgICAgICB1bnNpZ25lZCBzaXpl
TWFzayA9IG1fdGFibGVTaXplTWFzazsKICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlID0gbV90YWJs
ZTsKICAgICAgICB1bnNpZ25lZCBoID0gSGFzaFRyYW5zbGF0b3I6Omhhc2goa2V5KTsKICAgICAg
ICB1bnNpZ25lZCBpID0gaCAmIHNpemVNYXNrOwoKICAgICAgICBpZiAoIXRhYmxlKQogICAgICAg
ICAgICByZXR1cm4gMDsKIyA2MjYgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIgog
ICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIFZhbHVlVHlwZSogZW50cnkgPSB0YWJsZSAr
IGk7CgoKICAgICAgICAgICAgaWYgKEhhc2hGdW5jdGlvbnM6OnNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkKSB7CiAgICAgICAgICAgICAgICBpZiAoSGFzaFRyYW5zbGF0b3I6OmVxdWFsKEV4
dHJhY3Rvcjo6ZXh0cmFjdCgqZW50cnkpLCBrZXkpKQogICAgICAgICAgICAgICAgICAgIHJldHVy
biBlbnRyeTsKCiAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldCgqZW50cnkpKQogICAg
ICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgaWYgKGlzRW1wdHlCdWNrZXQoKmVudHJ5KSkKICAgICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKCiAgICAgICAgICAgICAgICBpZiAoIWlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpICYmIEhh
c2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KSwga2V5KSkKICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgICAgICAgIH0KIyA2NTIgIi4uLy4u
L1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIgogICAgICAgICAgICBpZiAoayA9PSAwKQogICAg
ICAgICAgICAgICAgayA9IDEgfCBkb3VibGVIYXNoKGgpOwogICAgICAgICAgICBpID0gKGkgKyBr
KSAmIHNpemVNYXNrOwogICAgICAgIH0KICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+CiAgICBpbmxpbmUgYXV0byBIYXNoVGFi
bGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz46Omxvb2t1cEZvcldyaXRpbmcoY29uc3QgVCYga2V5KSAtPiBMb29rdXBUeXBlCiAgICB7CiAg
ICAgICAgKCh2b2lkKTApOwogICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xhdG9yPihrZXkpOwoK
ICAgICAgICB1bnNpZ25lZCBrID0gMDsKICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlID0gbV90YWJs
ZTsKICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9IG1fdGFibGVTaXplTWFzazsKICAgICAgICB1
bnNpZ25lZCBoID0gSGFzaFRyYW5zbGF0b3I6Omhhc2goa2V5KTsKICAgICAgICB1bnNpZ25lZCBp
ID0gaCAmIHNpemVNYXNrOwojIDY4MCAiLi4vLi4vU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgi
CiAgICAgICAgVmFsdWVUeXBlKiBkZWxldGVkRW50cnkgPSAwOwoKICAgICAgICB3aGlsZSAoMSkg
ewogICAgICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gdGFibGUgKyBpOwoKCiAgICAgICAgICAg
IGlmIChIYXNoRnVuY3Rpb25zOjpzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCkgewogICAg
ICAgICAgICAgICAgaWYgKGlzRW1wdHlCdWNrZXQoKmVudHJ5KSkKICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gTG9va3VwVHlwZShkZWxldGVkRW50cnkgPyBkZWxldGVkRW50cnkgOiBlbnRyeSwg
ZmFsc2UpOwoKICAgICAgICAgICAgICAgIGlmIChIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFj
dG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExv
b2t1cFR5cGUoZW50cnksIHRydWUpOwoKICAgICAgICAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNr
ZXQoKmVudHJ5KSkKICAgICAgICAgICAgICAgICAgICBkZWxldGVkRW50cnkgPSBlbnRyeTsKICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChpc0VtcHR5QnVja2V0KCplbnRy
eSkpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExvb2t1cFR5cGUoZGVsZXRlZEVudHJ5ID8g
ZGVsZXRlZEVudHJ5IDogZW50cnksIGZhbHNlKTsKCiAgICAgICAgICAgICAgICBpZiAoaXNEZWxl
dGVkQnVja2V0KCplbnRyeSkpCiAgICAgICAgICAgICAgICAgICAgZGVsZXRlZEVudHJ5ID0gZW50
cnk7CiAgICAgICAgICAgICAgICBlbHNlIGlmIChIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFj
dG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExv
b2t1cFR5cGUoZW50cnksIHRydWUpOwogICAgICAgICAgICB9CiMgNzEzICIuLi8uLi9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVGFibGUuaCIKICAgICAgICAgICAgaWYgKGsgPT0gMCkKICAgICAgICAgICAg
ICAgIGsgPSAxIHwgZG91YmxlSGFzaChoKTsKICAgICAgICAgICAgaSA9IChpICsgaykgJiBzaXpl
TWFzazsKICAgICAgICB9CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhh
c2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgogICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpmdWxs
TG9va3VwRm9yV3JpdGluZyhjb25zdCBUJiBrZXkpIC0+IEZ1bGxMb29rdXBUeXBlCiAgICB7CiAg
ICAgICAgKCh2b2lkKTApOwogICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xhdG9yPihrZXkpOwoK
ICAgICAgICB1bnNpZ25lZCBrID0gMDsKICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlID0gbV90YWJs
ZTsKICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9IG1fdGFibGVTaXplTWFzazsKICAgICAgICB1
bnNpZ25lZCBoID0gSGFzaFRyYW5zbGF0b3I6Omhhc2goa2V5KTsKICAgICAgICB1bnNpZ25lZCBp
ID0gaCAmIHNpemVNYXNrOwojIDc0MSAiLi4vLi4vU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgi
CiAgICAgICAgVmFsdWVUeXBlKiBkZWxldGVkRW50cnkgPSAwOwoKICAgICAgICB3aGlsZSAoMSkg
ewogICAgICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gdGFibGUgKyBpOwoKCiAgICAgICAgICAg
IGlmIChIYXNoRnVuY3Rpb25zOjpzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCkgewogICAg
ICAgICAgICAgICAgaWYgKGlzRW1wdHlCdWNrZXQoKmVudHJ5KSkKICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZUxvb2t1cFJlc3VsdChkZWxldGVkRW50cnkgPyBkZWxldGVkRW50cnkgOiBl
bnRyeSwgZmFsc2UsIGgpOwoKICAgICAgICAgICAgICAgIGlmIChIYXNoVHJhbnNsYXRvcjo6ZXF1
YWwoRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpCiAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VMb29rdXBSZXN1bHQoZW50cnksIHRydWUsIGgpOwoKICAgICAgICAgICAgICAg
IGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkKICAgICAgICAgICAgICAgICAgICBkZWxldGVk
RW50cnkgPSBlbnRyeTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChp
c0VtcHR5QnVja2V0KCplbnRyeSkpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VMb29r
dXBSZXN1bHQoZGVsZXRlZEVudHJ5ID8gZGVsZXRlZEVudHJ5IDogZW50cnksIGZhbHNlLCBoKTsK
CiAgICAgICAgICAgICAgICBpZiAoaXNEZWxldGVkQnVja2V0KCplbnRyeSkpCiAgICAgICAgICAg
ICAgICAgICAgZGVsZXRlZEVudHJ5ID0gZW50cnk7CiAgICAgICAgICAgICAgICBlbHNlIGlmIChI
YXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpCiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VMb29rdXBSZXN1bHQoZW50cnksIHRydWUsIGgp
OwogICAgICAgICAgICB9CiMgNzc0ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaCIK
ICAgICAgICAgICAgaWYgKGsgPT0gMCkKICAgICAgICAgICAgICAgIGsgPSAxIHwgZG91YmxlSGFz
aChoKTsKICAgICAgICAgICAgaSA9IChpICsgaykgJiBzaXplTWFzazsKICAgICAgICB9CiAgICB9
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFt
ZSBULCB0eXBlbmFtZSBFeHRyYT4KICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGRVbmlxdWVGb3JJbml0aWFsaXphdGlvbihUJiYg
a2V5LCBFeHRyYSYmIGV4dHJhKQogICAgewogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgY2hl
Y2tLZXk8SGFzaFRyYW5zbGF0b3I+KGtleSk7CgogICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMo
KTsKCiAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKCiAgICAgICAgdW5z
aWduZWQgayA9IDA7CiAgICAgICAgVmFsdWVUeXBlKiB0YWJsZSA9IG1fdGFibGU7CiAgICAgICAg
dW5zaWduZWQgc2l6ZU1hc2sgPSBtX3RhYmxlU2l6ZU1hc2s7CiAgICAgICAgdW5zaWduZWQgaCA9
IEhhc2hUcmFuc2xhdG9yOjpoYXNoKGtleSk7CiAgICAgICAgdW5zaWduZWQgaSA9IGggJiBzaXpl
TWFzazsKIyA4MDcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIgogICAgICAgIFZh
bHVlVHlwZSogZW50cnk7CiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgZW50cnkgPSB0
YWJsZSArIGk7CgogICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldCgqZW50cnkpKQogICAgICAg
ICAgICAgICAgYnJlYWs7CiMgODIzICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaCIK
ICAgICAgICAgICAgaWYgKGsgPT0gMCkKICAgICAgICAgICAgICAgIGsgPSAxIHwgZG91YmxlSGFz
aChoKTsKICAgICAgICAgICAgaSA9IChpICsgaykgJiBzaXplTWFzazsKICAgICAgICB9CgogICAg
ICAgIEhhc2hUcmFuc2xhdG9yOjp0cmFuc2xhdGUoKmVudHJ5LCBzdGQ6OmZvcndhcmQ8VD4oa2V5
KSwgc3RkOjpmb3J3YXJkPEV4dHJhPihleHRyYSkpOwoKICAgICAgICBpbnRlcm5hbENoZWNrVGFi
bGVDb25zaXN0ZW5jeSgpOwogICAgfQoKICAgIHRlbXBsYXRlPGJvb2wgZW1wdHlWYWx1ZUlzWmVy
bz4gc3RydWN0IEhhc2hUYWJsZUJ1Y2tldEluaXRpYWxpemVyOwoKICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IEhhc2hUYWJsZUJ1Y2tldEluaXRpYWxpemVyPGZhbHNlPiB7CiAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBWYWx1ZT4gc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShW
YWx1ZSYgYnVja2V0KQogICAgICAgIHsKICAgICAgICAgICAgbmV3IChOb3ROdWxsLCBzdGQ6OmFk
ZHJlc3NvZihidWNrZXQpKSBWYWx1ZShUcmFpdHM6OmVtcHR5VmFsdWUoKSk7CiAgICAgICAgfQog
ICAgfTsKCiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVGFibGVCdWNrZXRJbml0aWFsaXplcjx0
cnVlPiB7CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBWYWx1ZT4g
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZShWYWx1ZSYgYnVja2V0KQogICAgICAgIHsKCgoKICAgICAg
ICAgICAgbWVtc2V0KCZidWNrZXQsIDAsIHNpemVvZihidWNrZXQpKTsKICAgICAgICB9CiAgICB9
OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4
dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFt
ZSBLZXlUcmFpdHM+CiAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmluaXRpYWxpemVCdWNrZXQo
VmFsdWVUeXBlJiBidWNrZXQpCiAgICB7CiAgICAgICAgSGFzaFRhYmxlQnVja2V0SW5pdGlhbGl6
ZXI8VHJhaXRzOjplbXB0eVZhbHVlSXNaZXJvPjo6dGVtcGxhdGUgaW5pdGlhbGl6ZTxUcmFpdHM+
KGJ1Y2tldCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFu
c2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4KICAgIGlubGluZSBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGQoVCYmIGtleSwgRXh0
cmEmJiBleHRyYSkgLT4gQWRkUmVzdWx0CiAgICB7CiAgICAgICAgY2hlY2tLZXk8SGFzaFRyYW5z
bGF0b3I+KGtleSk7CgogICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsKCiAgICAgICAgaWYg
KCFtX3RhYmxlKQogICAgICAgICAgICBleHBhbmQobnVsbHB0cik7CgogICAgICAgIGludGVybmFs
Q2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CgogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgdW5z
aWduZWQgayA9IDA7CiAgICAgICAgVmFsdWVUeXBlKiB0YWJsZSA9IG1fdGFibGU7CiAgICAgICAg
dW5zaWduZWQgc2l6ZU1hc2sgPSBtX3RhYmxlU2l6ZU1hc2s7CiAgICAgICAgdW5zaWduZWQgaCA9
IEhhc2hUcmFuc2xhdG9yOjpoYXNoKGtleSk7CiAgICAgICAgdW5zaWduZWQgaSA9IGggJiBzaXpl
TWFzazsKIyA4ODggIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIgogICAgICAgIFZh
bHVlVHlwZSogZGVsZXRlZEVudHJ5ID0gMDsKICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5OwogICAg
ICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIGVudHJ5ID0gdGFibGUgKyBpOwoKCiAgICAgICAg
ICAgIGlmIChIYXNoRnVuY3Rpb25zOjpzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCkgewog
ICAgICAgICAgICAgICAgaWYgKGlzRW1wdHlCdWNrZXQoKmVudHJ5KSkKICAgICAgICAgICAgICAg
ICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBpZiAoSGFzaFRyYW5zbGF0b3I6OmVxdWFsKEV4
dHJhY3Rvcjo6ZXh0cmFjdCgqZW50cnkpLCBrZXkpKQogICAgICAgICAgICAgICAgICAgIHJldHVy
biBBZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgZmFsc2UpOwoKICAgICAg
ICAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkKICAgICAgICAgICAgICAgICAg
ICBkZWxldGVkRW50cnkgPSBlbnRyeTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgIGlmIChpc0VtcHR5QnVja2V0KCplbnRyeSkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CgogICAgICAgICAgICAgICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKQogICAgICAgICAg
ICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9IGVudHJ5OwogICAgICAgICAgICAgICAgZWxzZSBpZiAo
SGFzaFRyYW5zbGF0b3I6OmVxdWFsKEV4dHJhY3Rvcjo6ZXh0cmFjdCgqZW50cnkpLCBrZXkpKQog
ICAgICAgICAgICAgICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9y
KGVudHJ5KSwgZmFsc2UpOwogICAgICAgICAgICB9CiMgOTIxICIuLi8uLi9Tb3VyY2UvV1RGL3d0
Zi9IYXNoVGFibGUuaCIKICAgICAgICAgICAgaWYgKGsgPT0gMCkKICAgICAgICAgICAgICAgIGsg
PSAxIHwgZG91YmxlSGFzaChoKTsKICAgICAgICAgICAgaSA9IChpICsgaykgJiBzaXplTWFzazsK
ICAgICAgICB9CgogICAgICAgIGlmIChkZWxldGVkRW50cnkpIHsKICAgICAgICAgICAgaW5pdGlh
bGl6ZUJ1Y2tldCgqZGVsZXRlZEVudHJ5KTsKICAgICAgICAgICAgZW50cnkgPSBkZWxldGVkRW50
cnk7CiAgICAgICAgICAgIC0tbV9kZWxldGVkQ291bnQ7CiAgICAgICAgfQoKICAgICAgICBIYXNo
VHJhbnNsYXRvcjo6dHJhbnNsYXRlKCplbnRyeSwgc3RkOjpmb3J3YXJkPFQ+KGtleSksIHN0ZDo6
Zm9yd2FyZDxFeHRyYT4oZXh0cmEpKTsKICAgICAgICArK21fa2V5Q291bnQ7CgogICAgICAgIGlm
IChzaG91bGRFeHBhbmQoKSkKICAgICAgICAgICAgZW50cnkgPSBleHBhbmQoZW50cnkpOwoKICAg
ICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeSgpOwoKICAgICAgICByZXR1cm4gQWRk
UmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIHRydWUpOwogICAgfQoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlw
ZW5hbWUgRXh0cmE+CiAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZFBhc3NpbmdIYXNoQ29k
ZShUJiYga2V5LCBFeHRyYSYmIGV4dHJhKSAtPiBBZGRSZXN1bHQKICAgIHsKICAgICAgICBjaGVj
a0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKCiAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygp
OwoKICAgICAgICBpZiAoIW1fdGFibGUpCiAgICAgICAgICAgIGV4cGFuZCgpOwoKICAgICAgICBp
bnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeSgpOwoKICAgICAgICBGdWxsTG9va3VwVHlwZSBs
b29rdXBSZXN1bHQgPSBmdWxsTG9va3VwRm9yV3JpdGluZzxIYXNoVHJhbnNsYXRvcj4oa2V5KTsK
CiAgICAgICAgVmFsdWVUeXBlKiBlbnRyeSA9IGxvb2t1cFJlc3VsdC5maXJzdC5maXJzdDsKICAg
ICAgICBib29sIGZvdW5kID0gbG9va3VwUmVzdWx0LmZpcnN0LnNlY29uZDsKICAgICAgICB1bnNp
Z25lZCBoID0gbG9va3VwUmVzdWx0LnNlY29uZDsKCiAgICAgICAgaWYgKGZvdW5kKQogICAgICAg
ICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIGZhbHNl
KTsKCiAgICAgICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKSB7CiAgICAgICAgICAgIGlu
aXRpYWxpemVCdWNrZXQoKmVudHJ5KTsKICAgICAgICAgICAgLS1tX2RlbGV0ZWRDb3VudDsKICAg
ICAgICB9CgogICAgICAgIEhhc2hUcmFuc2xhdG9yOjp0cmFuc2xhdGUoKmVudHJ5LCBzdGQ6OmZv
cndhcmQ8VD4oa2V5KSwgc3RkOjpmb3J3YXJkPEV4dHJhPihleHRyYSksIGgpOwogICAgICAgICsr
bV9rZXlDb3VudDsKCiAgICAgICAgaWYgKHNob3VsZEV4cGFuZCgpKQogICAgICAgICAgICBlbnRy
eSA9IGV4cGFuZChlbnRyeSk7CgogICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5
KCk7CgogICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5
KSwgdHJ1ZSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXks
IFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVp
bnNlcnQoVmFsdWVUeXBlJiYgZW50cnkpIC0+IFZhbHVlVHlwZSoKICAgIHsKICAgICAgICAoKHZv
aWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCgoKCgoKCiAgICAg
ICAgVmFsdWUqIG5ld0VudHJ5ID0gbG9va3VwRm9yV3JpdGluZyhFeHRyYWN0b3I6OmV4dHJhY3Qo
ZW50cnkpKS5maXJzdDsKICAgICAgICBuZXdFbnRyeS0+flZhbHVlKCk7CiAgICAgICAgbmV3IChO
b3ROdWxsLCBuZXdFbnRyeSkgVmFsdWVUeXBlKHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFt
ZXRlcj4oZW50cnkpKTsKCiAgICAgICAgcmV0dXJuIG5ld0VudHJ5OwogICAgfQoKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+
CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+CiAgICBh
dXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjo6ZmluZChjb25zdCBUJiBrZXkpIC0+IGl0ZXJhdG9yCiAgICB7CiAgICAg
ICAgaWYgKCFtX3RhYmxlKQogICAgICAgICAgICByZXR1cm4gZW5kKCk7CgogICAgICAgIFZhbHVl
VHlwZSogZW50cnkgPSBsb29rdXA8SGFzaFRyYW5zbGF0b3I+KGtleSk7CiAgICAgICAgaWYgKCFl
bnRyeSkKICAgICAgICAgICAgcmV0dXJuIGVuZCgpOwoKICAgICAgICByZXR1cm4gbWFrZUtub3du
R29vZEl0ZXJhdG9yKGVudHJ5KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgogICAgYXV0byBIYXNoVGFibGU8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmZpbmQo
Y29uc3QgVCYga2V5KSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcgogICAgewogICAgICAgIGlmICgh
bV90YWJsZSkKICAgICAgICAgICAgcmV0dXJuIGVuZCgpOwoKICAgICAgICBWYWx1ZVR5cGUqIGVu
dHJ5ID0gY29uc3RfY2FzdDxIYXNoVGFibGUqPih0aGlzKS0+bG9va3VwPEhhc2hUcmFuc2xhdG9y
PihrZXkpOwogICAgICAgIGlmICghZW50cnkpCiAgICAgICAgICAgIHJldHVybiBlbmQoKTsKCiAg
ICAgICAgcmV0dXJuIG1ha2VLbm93bkdvb2RDb25zdEl0ZXJhdG9yKGVudHJ5KTsKICAgIH0KCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0
b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5
VHJhaXRzPgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBU
PgogICAgYm9vbCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz46OmNvbnRhaW5zKGNvbnN0IFQmIGtleSkgY29uc3QKICAgIHsK
ICAgICAgICBpZiAoIW1fdGFibGUpCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4odGhpcyktPmxvb2t1cDxIYXNoVHJhbnNsYXRv
cj4oa2V5KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZUFuZElu
dmFsaWRhdGVXaXRob3V0RW50cnlDb25zaXN0ZW5jeUNoZWNrKFZhbHVlVHlwZSogcG9zKQogICAg
ewogICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsKICAgICAgICByZW1vdmUocG9zKTsKICAg
IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzPgogICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZUFuZEludmFsaWRhdGUoVmFs
dWVUeXBlKiBwb3MpCiAgICB7CiAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwogICAgICAg
IGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgICAgcmVtb3ZlKHBvcyk7CiAg
ICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
RXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVu
YW1lIEtleVRyYWl0cz4KICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZW1vdmUoVmFsdWVUeXBlKiBwb3Mp
CiAgICB7CgoKCgoKCgogICAgICAgIGRlbGV0ZUJ1Y2tldCgqcG9zKTsKICAgICAgICArK21fZGVs
ZXRlZENvdW50OwogICAgICAgIC0tbV9rZXlDb3VudDsKCiAgICAgICAgaWYgKHNob3VsZFNocmlu
aygpKQogICAgICAgICAgICBzaHJpbmsoKTsKCiAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29u
c2lzdGVuY3koKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgaW5saW5lIHZvaWQgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpy
ZW1vdmUoaXRlcmF0b3IgaXQpCiAgICB7CiAgICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAg
ICAgICByZXR1cm47CgogICAgICAgIHJlbW92ZUFuZEludmFsaWRhdGUoY29uc3RfY2FzdDxWYWx1
ZVR5cGUqPihpdC5tX2l0ZXJhdG9yLm1fcG9zaXRpb24pKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAg
aW5saW5lIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZW1vdmVXaXRob3V0RW50cnlDb25zaXN0ZW5jeUNoZWNr
KGl0ZXJhdG9yIGl0KQogICAgewogICAgICAgIGlmIChpdCA9PSBlbmQoKSkKICAgICAgICAgICAg
cmV0dXJuOwoKICAgICAgICByZW1vdmVBbmRJbnZhbGlkYXRlV2l0aG91dEVudHJ5Q29uc2lzdGVu
Y3lDaGVjayhjb25zdF9jYXN0PFZhbHVlVHlwZSo+KGl0Lm1faXRlcmF0b3IubV9wb3NpdGlvbikp
OwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBLZXlUcmFpdHM+CiAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZVdpdGhv
dXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soY29uc3RfaXRlcmF0b3IgaXQpCiAgICB7CiAgICAgICAg
aWYgKGl0ID09IGVuZCgpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIHJlbW92ZUFuZElu
dmFsaWRhdGVXaXRob3V0RW50cnlDb25zaXN0ZW5jeUNoZWNrKGNvbnN0X2Nhc3Q8VmFsdWVUeXBl
Kj4oaXQubV9wb3NpdGlvbikpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICBpbmxpbmUgdm9pZCBIYXNo
VGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRy
YWl0cz46OnJlbW92ZShjb25zdCBLZXlUeXBlJiBrZXkpCiAgICB7CiAgICAgICAgcmVtb3ZlKGZp
bmQoa2V5KSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
CiAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZUlmKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCiAgICB7CgoKCiAgICAgICAgdW5zaWduZWQgcmVtb3ZlZEJ1Y2tldENvdW50ID0gMDsKICAg
ICAgICBWYWx1ZVR5cGUqIHRhYmxlID0gbV90YWJsZTsKCiAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV90YWJsZVNpemU7IGktLTspIHsKICAgICAgICAgICAgVmFsdWVUeXBlJiBidWNrZXQgPSB0
YWJsZVtpXTsKICAgICAgICAgICAgaWYgKGlzRW1wdHlPckRlbGV0ZWRCdWNrZXQoYnVja2V0KSkK
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgaWYgKCFmdW5jdG9yKGJ1Y2tl
dCkpCiAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICAgIGRlbGV0ZUJ1Y2tldChi
dWNrZXQpOwogICAgICAgICAgICArK3JlbW92ZWRCdWNrZXRDb3VudDsKICAgICAgICB9CiAgICAg
ICAgbV9kZWxldGVkQ291bnQgKz0gcmVtb3ZlZEJ1Y2tldENvdW50OwogICAgICAgIG1fa2V5Q291
bnQgLT0gcmVtb3ZlZEJ1Y2tldENvdW50OwoKICAgICAgICBpZiAoc2hvdWxkU2hyaW5rKCkpCiAg
ICAgICAgICAgIHNocmluaygpOwoKICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5j
eSgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5
cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRz
LCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRy
YWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6YWxsb2NhdGVUYWJsZSh1
bnNpZ25lZCBzaXplKSAtPiBWYWx1ZVR5cGUqCiAgICB7CgoKICAgICAgICBpZiAoVHJhaXRzOjpl
bXB0eVZhbHVlSXNaZXJvKQogICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmFsdWVUeXBl
Kj4oZmFzdFplcm9lZE1hbGxvYyhzaXplICogc2l6ZW9mKFZhbHVlVHlwZSkpKTsKICAgICAgICBW
YWx1ZVR5cGUqIHJlc3VsdCA9IHN0YXRpY19jYXN0PFZhbHVlVHlwZSo+KGZhc3RNYWxsb2Moc2l6
ZSAqIHNpemVvZihWYWx1ZVR5cGUpKSk7CiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNpemU7IGkrKykKICAgICAgICAgICAgaW5pdGlhbGl6ZUJ1Y2tldChyZXN1bHRbaV0pOwogICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0
eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIHZvaWQgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpk
ZWFsbG9jYXRlVGFibGUoVmFsdWVUeXBlKiB0YWJsZSwgdW5zaWduZWQgc2l6ZSkKICAgIHsKICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAgIGlm
ICghaXNEZWxldGVkQnVja2V0KHRhYmxlW2ldKSkKICAgICAgICAgICAgICAgIHRhYmxlW2ldLn5W
YWx1ZVR5cGUoKTsKICAgICAgICB9CiAgICAgICAgZmFzdEZyZWUodGFibGUpOwogICAgfQoKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+CiAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZXhwYW5kKFZhbHVlVHlwZSogZW50cnkpIC0+IFZh
bHVlVHlwZSoKICAgIHsKICAgICAgICB1bnNpZ25lZCBuZXdTaXplOwogICAgICAgIGlmIChtX3Rh
YmxlU2l6ZSA9PSAwKQogICAgICAgICAgICBuZXdTaXplID0gS2V5VHJhaXRzOjptaW5pbXVtVGFi
bGVTaXplOwogICAgICAgIGVsc2UgaWYgKG11c3RSZWhhc2hJblBsYWNlKCkpCiAgICAgICAgICAg
IG5ld1NpemUgPSBtX3RhYmxlU2l6ZTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIG5ld1NpemUg
PSBtX3RhYmxlU2l6ZSAqIDI7CgogICAgICAgIHJldHVybiByZWhhc2gobmV3U2l6ZSwgZW50cnkp
OwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBLZXlUcmFpdHM+CiAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVoYXNoKHVuc2lnbmVkIG5l
d1RhYmxlU2l6ZSwgVmFsdWVUeXBlKiBlbnRyeSkgLT4gVmFsdWVUeXBlKgogICAgewogICAgICAg
IGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpOwoKICAgICAgICB1bnNp
Z25lZCBvbGRUYWJsZVNpemUgPSBtX3RhYmxlU2l6ZTsKICAgICAgICBWYWx1ZVR5cGUqIG9sZFRh
YmxlID0gbV90YWJsZTsKIyAxMTkyICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaCIK
ICAgICAgICBtX3RhYmxlU2l6ZSA9IG5ld1RhYmxlU2l6ZTsKICAgICAgICBtX3RhYmxlU2l6ZU1h
c2sgPSBuZXdUYWJsZVNpemUgLSAxOwogICAgICAgIG1fdGFibGUgPSBhbGxvY2F0ZVRhYmxlKG5l
d1RhYmxlU2l6ZSk7CgogICAgICAgIFZhbHVlKiBuZXdFbnRyeSA9IG51bGxwdHI7CiAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBvbGRUYWJsZVNpemU7ICsraSkgewogICAgICAgICAg
ICBpZiAoaXNFbXB0eU9yRGVsZXRlZEJ1Y2tldChvbGRUYWJsZVtpXSkpIHsKICAgICAgICAgICAg
ICAgICgodm9pZCkwKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9Cgog
ICAgICAgICAgICBWYWx1ZSogcmVpbnNlcnRlZEVudHJ5ID0gcmVpbnNlcnQoc3RkOjptb3ZlPFdU
Rjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihvbGRUYWJsZVtpXSkpOwogICAgICAgICAgICBpZiAoJm9s
ZFRhYmxlW2ldID09IGVudHJ5KSB7CiAgICAgICAgICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAg
ICAgICAgICBuZXdFbnRyeSA9IHJlaW5zZXJ0ZWRFbnRyeTsKICAgICAgICAgICAgfQogICAgICAg
IH0KCiAgICAgICAgbV9kZWxldGVkQ291bnQgPSAwOwoKICAgICAgICBkZWFsbG9jYXRlVGFibGUo
b2xkVGFibGUsIG9sZFRhYmxlU2l6ZSk7CgogICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNp
c3RlbmN5KCk7CiAgICAgICAgcmV0dXJuIG5ld0VudHJ5OwogICAgfQoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICB2
b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjo6Y2xlYXIoKQogICAgewogICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMo
KTsKICAgICAgICBpZiAoIW1fdGFibGUpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZGVh
bGxvY2F0ZVRhYmxlKG1fdGFibGUsIG1fdGFibGVTaXplKTsKICAgICAgICBtX3RhYmxlID0gMDsK
ICAgICAgICBtX3RhYmxlU2l6ZSA9IDA7CiAgICAgICAgbV90YWJsZVNpemVNYXNrID0gMDsKICAg
ICAgICBtX2tleUNvdW50ID0gMDsKICAgICAgICBtX2RlbGV0ZWRDb3VudCA9IDA7CiAgICB9Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFj
dG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtl
eVRyYWl0cz4KICAgIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6SGFzaFRhYmxlKGNvbnN0IEhhc2hUYWJsZSYgb3RoZXIp
CiAgICAgICAgOiBtX3RhYmxlKG51bGxwdHIpCiAgICAgICAgLCBtX3RhYmxlU2l6ZSgwKQogICAg
ICAgICwgbV90YWJsZVNpemVNYXNrKDApCiAgICAgICAgLCBtX2tleUNvdW50KDApCiAgICAgICAg
LCBtX2RlbGV0ZWRDb3VudCgwKQoKCgoKCgoKICAgIHsKICAgICAgICB1bnNpZ25lZCBvdGhlcktl
eUNvdW50ID0gb3RoZXIuc2l6ZSgpOwogICAgICAgIGlmICghb3RoZXJLZXlDb3VudCkKICAgICAg
ICAgICAgcmV0dXJuOwoKICAgICAgICB1bnNpZ25lZCBiZXN0VGFibGVTaXplID0gV1RGOjpyb3Vu
ZFVwVG9Qb3dlck9mVHdvKG90aGVyS2V5Q291bnQpICogMjsKCgoKCiAgICAgICAgYm9vbCBhYm92
ZVRocmVlUXVhcnRlckxvYWQgPSBvdGhlcktleUNvdW50ICogMTIgPj0gYmVzdFRhYmxlU2l6ZSAq
IDU7CiAgICAgICAgaWYgKGFib3ZlVGhyZWVRdWFydGVyTG9hZCkKICAgICAgICAgICAgYmVzdFRh
YmxlU2l6ZSAqPSAyOwoKICAgICAgICB1bnNpZ25lZCBtaW5pbXVtVGFibGVTaXplID0gS2V5VHJh
aXRzOjptaW5pbXVtVGFibGVTaXplOwogICAgICAgIG1fdGFibGVTaXplID0gc3RkOjptYXg8dW5z
aWduZWQ+KGJlc3RUYWJsZVNpemUsIG1pbmltdW1UYWJsZVNpemUpOwogICAgICAgIG1fdGFibGVT
aXplTWFzayA9IG1fdGFibGVTaXplIC0gMTsKICAgICAgICBtX2tleUNvdW50ID0gb3RoZXJLZXlD
b3VudDsKICAgICAgICBtX3RhYmxlID0gYWxsb2NhdGVUYWJsZShtX3RhYmxlU2l6ZSk7CgogICAg
ICAgIGZvciAoY29uc3QgYXV0byYgb3RoZXJWYWx1ZSA6IG90aGVyKQogICAgICAgICAgICBhZGRV
bmlxdWVGb3JJbml0aWFsaXphdGlvbjxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6
OmV4dHJhY3Qob3RoZXJWYWx1ZSksIG90aGVyVmFsdWUpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICB2
b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjo6c3dhcChIYXNoVGFibGUmIG90aGVyKQogICAgewogICAgICAgIGludmFs
aWRhdGVJdGVyYXRvcnMoKTsKICAgICAgICBvdGhlci5pbnZhbGlkYXRlSXRlcmF0b3JzKCk7Cgog
ICAgICAgIHN0ZDo6c3dhcChtX3RhYmxlLCBvdGhlci5tX3RhYmxlKTsKICAgICAgICBzdGQ6OnN3
YXAobV90YWJsZVNpemUsIG90aGVyLm1fdGFibGVTaXplKTsKICAgICAgICBzdGQ6OnN3YXAobV90
YWJsZVNpemVNYXNrLCBvdGhlci5tX3RhYmxlU2l6ZU1hc2spOwogICAgICAgIHN0ZDo6c3dhcCht
X2tleUNvdW50LCBvdGhlci5tX2tleUNvdW50KTsKICAgICAgICBzdGQ6OnN3YXAobV9kZWxldGVk
Q291bnQsIG90aGVyLm1fZGVsZXRlZENvdW50KTsKCgoKCiAgICB9CgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIGF1
dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OjpvcGVyYXRvcj0oY29uc3QgSGFzaFRhYmxlJiBvdGhlcikgLT4gSGFzaFRh
YmxlJgogICAgewogICAgICAgIEhhc2hUYWJsZSB0bXAob3RoZXIpOwogICAgICAgIHN3YXAodG1w
KTsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgIGlubGluZSBIYXNo
VGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRy
YWl0cz46Okhhc2hUYWJsZShIYXNoVGFibGUmJiBvdGhlcikKCgoKCiAgICB7CiAgICAgICAgb3Ro
ZXIuaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwoKICAgICAgICBtX3RhYmxlID0gb3RoZXIubV90YWJs
ZTsKICAgICAgICBtX3RhYmxlU2l6ZSA9IG90aGVyLm1fdGFibGVTaXplOwogICAgICAgIG1fdGFi
bGVTaXplTWFzayA9IG90aGVyLm1fdGFibGVTaXplTWFzazsKICAgICAgICBtX2tleUNvdW50ID0g
b3RoZXIubV9rZXlDb3VudDsKICAgICAgICBtX2RlbGV0ZWRDb3VudCA9IG90aGVyLm1fZGVsZXRl
ZENvdW50OwoKICAgICAgICBvdGhlci5tX3RhYmxlID0gbnVsbHB0cjsKICAgICAgICBvdGhlci5t
X3RhYmxlU2l6ZSA9IDA7CiAgICAgICAgb3RoZXIubV90YWJsZVNpemVNYXNrID0gMDsKICAgICAg
ICBvdGhlci5tX2tleUNvdW50ID0gMDsKICAgICAgICBvdGhlci5tX2RlbGV0ZWRDb3VudCA9IDA7
CgoKCgoKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpvcGVyYXRv
cj0oSGFzaFRhYmxlJiYgb3RoZXIpIC0+IEhhc2hUYWJsZSYKICAgIHsKICAgICAgICBIYXNoVGFi
bGUgdGVtcCA9IHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4ob3RoZXIpOwogICAg
ICAgIHN3YXAodGVtcCk7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQojIDE0NDUgIi4uLy4u
L1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIgogICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRh
YmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRv
ckFkYXB0ZXIgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFn
LCBWYWx1ZVR5cGUsIHN0ZDo6cHRyZGlmZl90LCBjb25zdCBWYWx1ZVR5cGUqLCBjb25zdCBWYWx1
ZVR5cGUmPiB7CiAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXIoKSB7fQogICAg
ICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IHR5cGVuYW1lIEhhc2hUYWJs
ZVR5cGU6OmNvbnN0X2l0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQoKICAgICAgICBj
b25zdCBWYWx1ZVR5cGUqIGdldCgpIGNvbnN0IHsgcmV0dXJuIChjb25zdCBWYWx1ZVR5cGUqKW1f
aW1wbC5nZXQoKTsgfQogICAgICAgIGNvbnN0IFZhbHVlVHlwZSYgb3BlcmF0b3IqKCkgY29uc3Qg
eyByZXR1cm4gKmdldCgpOyB9CiAgICAgICAgY29uc3QgVmFsdWVUeXBlKiBvcGVyYXRvci0+KCkg
Y29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KCiAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFk
YXB0ZXImIG9wZXJhdG9yKysoKSB7ICsrbV9pbXBsOyByZXR1cm4gKnRoaXM7IH0KCgogICAgICAg
IHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OmNvbnN0X2l0ZXJhdG9yIG1faW1wbDsKICAgIH07Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBz
dHJ1Y3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3Rk
Ojpmb3J3YXJkX2l0ZXJhdG9yX3RhZywgVmFsdWVUeXBlLCBzdGQ6OnB0cmRpZmZfdCwgVmFsdWVU
eXBlKiwgVmFsdWVUeXBlJj4gewogICAgICAgIEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcigpIHt9
CiAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyKGNvbnN0IHR5cGVuYW1lIEhhc2hUYWJs
ZVR5cGU6Oml0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQoKICAgICAgICBWYWx1ZVR5
cGUqIGdldCgpIGNvbnN0IHsgcmV0dXJuIChWYWx1ZVR5cGUqKW1faW1wbC5nZXQoKTsgfQogICAg
ICAgIFZhbHVlVHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9CiAgICAg
ICAgVmFsdWVUeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KCiAgICAg
ICAgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyJiBvcGVyYXRvcisrKCkgeyArK21faW1wbDsgcmV0
dXJuICp0aGlzOyB9CgoKICAgICAgICBvcGVyYXRvciBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRh
cHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+KCkgewogICAgICAgICAgICB0eXBlbmFtZSBI
YXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciBpID0gbV9pbXBsOwogICAgICAgICAgICByZXR1
cm4gaTsKICAgICAgICB9CgogICAgICAgIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6Oml0ZXJhdG9y
IG1faW1wbDsKICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KICAg
IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0
ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBi
KQogICAgewogICAgICAgIHJldHVybiBhLm1faW1wbCA9PSBiLm1faW1wbDsKICAgIH0KCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogICAgaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFz
aFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpCiAgICB7CiAgICAgICAgcmV0dXJu
IGEubV9pbXBsICE9IGIubV9pbXBsOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+CiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hUYWJsZUl0ZXJh
dG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPFQsIFU+
JiBiKQogICAgewogICAgICAgIHJldHVybiBhLm1faW1wbCA9PSBiLm1faW1wbDsKICAgIH0KCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogICAgaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hU
YWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYikKICAgIHsKICAgICAgICByZXR1cm4gYS5tX2lt
cGwgIT0gYi5tX2ltcGw7CiAgICB9CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+CiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0
b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4m
IGIpCiAgICB7CiAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBsOwogICAgfQoKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CiAgICBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBI
YXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpCiAgICB7CiAgICAgICAgcmV0dXJuIGEu
bV9pbXBsICE9IGIubV9pbXBsOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+CiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9y
QWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwg
VT4mIGIpCiAgICB7CiAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBsOwogICAgfQoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CiAgICBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFz
aFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpCiAgICB7CiAgICAgICAgcmV0dXJu
IGEubV9pbXBsICE9IGIubV9pbXBsOwogICAgfQoKfQoKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0
Zi9IYXNoSXRlcmF0b3JzLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL1dURi93dGYvSGFzaEl0ZXJh
dG9ycy5oIgojZGVmaW5lIFdURl9IYXNoSXRlcmF0b3JzX2ggCgoKCm5hbWVzcGFjZSBXVEYgewoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5
cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVDb25zdEtleXNJdGVyYXRvcjsKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVu
YW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVDb25zdFZhbHVlc0l0ZXJhdG9yOwogICAg
dGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5h
bWUgTWFwcGVkVHlwZT4gc3RydWN0IEhhc2hUYWJsZUtleXNJdGVyYXRvcjsKICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBl
ZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVWYWx1ZXNJdGVyYXRvcjsKCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBl
PiBzdHJ1Y3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgS2V5
VmFsdWVQYWlyPEtleVR5cGUsIE1hcHBlZFR5cGU+PiA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0
ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsIEtleVZhbHVlUGFpcjxLZXlUeXBlLCBNYXBwZWRUeXBl
Piwgc3RkOjpwdHJkaWZmX3QsIGNvbnN0IEtleVZhbHVlUGFpcjxLZXlUeXBlLCBNYXBwZWRUeXBl
PiosIGNvbnN0IEtleVZhbHVlUGFpcjxLZXlUeXBlLCBNYXBwZWRUeXBlPiY+IHsKICAgIHByaXZh
dGU6CiAgICAgICAgdHlwZWRlZiBLZXlWYWx1ZVBhaXI8S2V5VHlwZSwgTWFwcGVkVHlwZT4gVmFs
dWVUeXBlOwogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RLZXlzSXRl
cmF0b3I8SGFzaFRhYmxlVHlwZSwgS2V5VHlwZSwgTWFwcGVkVHlwZT4gS2V5czsKICAgICAgICB0
eXBlZGVmIEhhc2hUYWJsZUNvbnN0VmFsdWVzSXRlcmF0b3I8SGFzaFRhYmxlVHlwZSwgS2V5VHlw
ZSwgTWFwcGVkVHlwZT4gVmFsdWVzOwoKICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRh
cHRlcigpIHt9CiAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgdHlw
ZW5hbWUgSGFzaFRhYmxlVHlwZTo6Y29uc3RfaXRlcmF0b3ImIGltcGwpIDogbV9pbXBsKGltcGwp
IHt9CgogICAgICAgIGNvbnN0IFZhbHVlVHlwZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gKGNvbnN0
IFZhbHVlVHlwZSopbV9pbXBsLmdldCgpOyB9CiAgICAgICAgY29uc3QgVmFsdWVUeXBlJiBvcGVy
YXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KICAgICAgICBjb25zdCBWYWx1ZVR5cGUq
IG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQoKICAgICAgICBIYXNoVGFibGVD
b25zdEl0ZXJhdG9yQWRhcHRlciYgb3BlcmF0b3IrKygpIHsgKyttX2ltcGw7IHJldHVybiAqdGhp
czsgfQoKCiAgICAgICAgS2V5cyBrZXlzKCkgeyByZXR1cm4gS2V5cygqdGhpcyk7IH0KICAgICAg
ICBWYWx1ZXMgdmFsdWVzKCkgeyByZXR1cm4gVmFsdWVzKCp0aGlzKTsgfQoKICAgICAgICB0eXBl
bmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciBtX2ltcGw7CiAgICB9OwoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1l
IE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlw
ZSwgS2V5VmFsdWVQYWlyPEtleVR5cGUsIE1hcHBlZFR5cGU+PiA6IHB1YmxpYyBzdGQ6Oml0ZXJh
dG9yPHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsIEtleVZhbHVlUGFpcjxLZXlUeXBlLCBNYXBw
ZWRUeXBlPiwgc3RkOjpwdHJkaWZmX3QsIEtleVZhbHVlUGFpcjxLZXlUeXBlLCBNYXBwZWRUeXBl
PiosIEtleVZhbHVlUGFpcjxLZXlUeXBlLCBNYXBwZWRUeXBlPiY+IHsKICAgIHByaXZhdGU6CiAg
ICAgICAgdHlwZWRlZiBLZXlWYWx1ZVBhaXI8S2V5VHlwZSwgTWFwcGVkVHlwZT4gVmFsdWVUeXBl
OwogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlS2V5c0l0ZXJhdG9yPEhhc2hU
YWJsZVR5cGUsIEtleVR5cGUsIE1hcHBlZFR5cGU+IEtleXM7CiAgICAgICAgdHlwZWRlZiBIYXNo
VGFibGVWYWx1ZXNJdGVyYXRvcjxIYXNoVGFibGVUeXBlLCBLZXlUeXBlLCBNYXBwZWRUeXBlPiBW
YWx1ZXM7CgogICAgICAgIEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcigpIHt9CiAgICAgICAgSGFz
aFRhYmxlSXRlcmF0b3JBZGFwdGVyKGNvbnN0IHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6Oml0ZXJh
dG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQoKICAgICAgICBWYWx1ZVR5cGUqIGdldCgpIGNv
bnN0IHsgcmV0dXJuIChWYWx1ZVR5cGUqKW1faW1wbC5nZXQoKTsgfQogICAgICAgIFZhbHVlVHlw
ZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9CiAgICAgICAgVmFsdWVUeXBl
KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KCiAgICAgICAgSGFzaFRhYmxl
SXRlcmF0b3JBZGFwdGVyJiBvcGVyYXRvcisrKCkgeyArK21faW1wbDsgcmV0dXJuICp0aGlzOyB9
CgoKICAgICAgICBvcGVyYXRvciBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFi
bGVUeXBlLCBWYWx1ZVR5cGU+KCkgewogICAgICAgICAgICB0eXBlbmFtZSBIYXNoVGFibGVUeXBl
Ojpjb25zdF9pdGVyYXRvciBpID0gbV9pbXBsOwogICAgICAgICAgICByZXR1cm4gaTsKICAgICAg
ICB9CgogICAgICAgIEtleXMga2V5cygpIHsgcmV0dXJuIEtleXMoKnRoaXMpOyB9CiAgICAgICAg
VmFsdWVzIHZhbHVlcygpIHsgcmV0dXJuIFZhbHVlcygqdGhpcyk7IH0KCiAgICAgICAgdHlwZW5h
bWUgSGFzaFRhYmxlVHlwZTo6aXRlcmF0b3IgbV9pbXBsOwogICAgfTsKCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRU
eXBlPiBzdHJ1Y3QgSGFzaFRhYmxlQ29uc3RLZXlzSXRlcmF0b3IgOiBwdWJsaWMgc3RkOjppdGVy
YXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBLZXlUeXBlLCBzdGQ6OnB0cmRpZmZfdCwg
Y29uc3QgS2V5VHlwZSosIGNvbnN0IEtleVR5cGUmPiB7CiAgICBwcml2YXRlOgogICAgICAgIHR5
cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgS2V5VmFs
dWVQYWlyPEtleVR5cGUsIE1hcHBlZFR5cGU+PiBDb25zdEl0ZXJhdG9yOwoKICAgIHB1YmxpYzoK
ICAgICAgICBIYXNoVGFibGVDb25zdEtleXNJdGVyYXRvcihjb25zdCBDb25zdEl0ZXJhdG9yJiBp
bXBsKSA6IG1faW1wbChpbXBsKSB7fQoKICAgICAgICBjb25zdCBLZXlUeXBlKiBnZXQoKSBjb25z
dCB7IHJldHVybiAmKG1faW1wbC5nZXQoKS0+a2V5KTsgfQogICAgICAgIGNvbnN0IEtleVR5cGUm
IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQoKTsgfQogICAgICAgIGNvbnN0IEtleVR5
cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQoKICAgICAgICBIYXNoVGFi
bGVDb25zdEtleXNJdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgKyttX2ltcGw7IHJldHVybiAqdGhp
czsgfQoKCiAgICAgICAgQ29uc3RJdGVyYXRvciBtX2ltcGw7CiAgICB9OwoKICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBl
ZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVDb25zdFZhbHVlc0l0ZXJhdG9yIDogcHVibGljIHN0ZDo6
aXRlcmF0b3I8c3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywgTWFwcGVkVHlwZSwgc3RkOjpwdHJk
aWZmX3QsIGNvbnN0IE1hcHBlZFR5cGUqLCBjb25zdCBNYXBwZWRUeXBlJj4gewogICAgcHJpdmF0
ZToKICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJs
ZVR5cGUsIEtleVZhbHVlUGFpcjxLZXlUeXBlLCBNYXBwZWRUeXBlPj4gQ29uc3RJdGVyYXRvcjsK
CiAgICBwdWJsaWM6CiAgICAgICAgSGFzaFRhYmxlQ29uc3RWYWx1ZXNJdGVyYXRvcihjb25zdCBD
b25zdEl0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQoKICAgICAgICBjb25zdCBNYXBw
ZWRUeXBlKiBnZXQoKSBjb25zdCB7IHJldHVybiAmKG1faW1wbC5nZXQoKS0+dmFsdWUpOyB9CiAg
ICAgICAgY29uc3QgTWFwcGVkVHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgp
OyB9CiAgICAgICAgY29uc3QgTWFwcGVkVHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJu
IGdldCgpOyB9CgogICAgICAgIEhhc2hUYWJsZUNvbnN0VmFsdWVzSXRlcmF0b3ImIG9wZXJhdG9y
KysoKSB7ICsrbV9pbXBsOyByZXR1cm4gKnRoaXM7IH0KCgogICAgICAgIENvbnN0SXRlcmF0b3Ig
bV9pbXBsOwogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBl
bmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlS2V5c0l0
ZXJhdG9yIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywg
S2V5VHlwZSwgc3RkOjpwdHJkaWZmX3QsIEtleVR5cGUqLCBLZXlUeXBlJj4gewogICAgcHJpdmF0
ZToKICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBl
LCBLZXlWYWx1ZVBhaXI8S2V5VHlwZSwgTWFwcGVkVHlwZT4+IEl0ZXJhdG9yOwogICAgICAgIHR5
cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgS2V5VmFs
dWVQYWlyPEtleVR5cGUsIE1hcHBlZFR5cGU+PiBDb25zdEl0ZXJhdG9yOwoKICAgIHB1YmxpYzoK
ICAgICAgICBIYXNoVGFibGVLZXlzSXRlcmF0b3IoY29uc3QgSXRlcmF0b3ImIGltcGwpIDogbV9p
bXBsKGltcGwpIHt9CgogICAgICAgIEtleVR5cGUqIGdldCgpIGNvbnN0IHsgcmV0dXJuICYobV9p
bXBsLmdldCgpLT5rZXkpOyB9CiAgICAgICAgS2V5VHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyBy
ZXR1cm4gKmdldCgpOyB9CiAgICAgICAgS2V5VHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0
dXJuIGdldCgpOyB9CgogICAgICAgIEhhc2hUYWJsZUtleXNJdGVyYXRvciYgb3BlcmF0b3IrKygp
IHsgKyttX2ltcGw7IHJldHVybiAqdGhpczsgfQoKCiAgICAgICAgb3BlcmF0b3IgSGFzaFRhYmxl
Q29uc3RLZXlzSXRlcmF0b3I8SGFzaFRhYmxlVHlwZSwgS2V5VHlwZSwgTWFwcGVkVHlwZT4oKSB7
CiAgICAgICAgICAgIENvbnN0SXRlcmF0b3IgaSA9IG1faW1wbDsKICAgICAgICAgICAgcmV0dXJu
IGk7CiAgICAgICAgfQoKICAgICAgICBJdGVyYXRvciBtX2ltcGw7CiAgICB9OwoKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1h
cHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVWYWx1ZXNJdGVyYXRvciA6IHB1YmxpYyBzdGQ6Oml0
ZXJhdG9yPHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsIE1hcHBlZFR5cGUsIHN0ZDo6cHRyZGlm
Zl90LCBNYXBwZWRUeXBlKiwgTWFwcGVkVHlwZSY+IHsKICAgIHByaXZhdGU6CiAgICAgICAgdHlw
ZWRlZiBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgS2V5VmFsdWVQYWly
PEtleVR5cGUsIE1hcHBlZFR5cGU+PiBJdGVyYXRvcjsKICAgICAgICB0eXBlZGVmIEhhc2hUYWJs
ZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIEtleVZhbHVlUGFpcjxLZXlUeXBl
LCBNYXBwZWRUeXBlPj4gQ29uc3RJdGVyYXRvcjsKCiAgICBwdWJsaWM6CiAgICAgICAgSGFzaFRh
YmxlVmFsdWVzSXRlcmF0b3IoY29uc3QgSXRlcmF0b3ImIGltcGwpIDogbV9pbXBsKGltcGwpIHt9
CgogICAgICAgIE1hcHBlZFR5cGUqIGdldCgpIGNvbnN0IHsgcmV0dXJuICYobV9pbXBsLmdldCgp
LT52YWx1ZSk7IH0KICAgICAgICBNYXBwZWRUeXBlJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVy
biAqZ2V0KCk7IH0KICAgICAgICBNYXBwZWRUeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1
cm4gZ2V0KCk7IH0KCiAgICAgICAgSGFzaFRhYmxlVmFsdWVzSXRlcmF0b3ImIG9wZXJhdG9yKyso
KSB7ICsrbV9pbXBsOyByZXR1cm4gKnRoaXM7IH0KCgogICAgICAgIG9wZXJhdG9yIEhhc2hUYWJs
ZUNvbnN0VmFsdWVzSXRlcmF0b3I8SGFzaFRhYmxlVHlwZSwgS2V5VHlwZSwgTWFwcGVkVHlwZT4o
KSB7CiAgICAgICAgICAgIENvbnN0SXRlcmF0b3IgaSA9IG1faW1wbDsKICAgICAgICAgICAgcmV0
dXJuIGk7CiAgICAgICAgfQoKICAgICAgICBJdGVyYXRvciBtX2ltcGw7CiAgICB9OwoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiAgICAgICAgaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoVGFibGVDb25zdEtleXNJdGVyYXRvcjxULCBVLCBW
PiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RLZXlzSXRlcmF0b3I8VCwgVSwgVj4mIGIpCiAgICB7
CiAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBsOwogICAgfQoKICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiAgICAgICAgaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBIYXNoVGFibGVDb25zdEtleXNJdGVyYXRvcjxULCBVLCBWPiYgYSwg
Y29uc3QgSGFzaFRhYmxlQ29uc3RLZXlzSXRlcmF0b3I8VCwgVSwgVj4mIGIpCiAgICB7CiAgICAg
ICAgcmV0dXJuIGEubV9pbXBsICE9IGIubV9pbXBsOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBIYXNoVGFibGVDb25zdFZhbHVlc0l0ZXJhdG9yPFQsIFUsIFY+JiBhLCBjb25z
dCBIYXNoVGFibGVDb25zdFZhbHVlc0l0ZXJhdG9yPFQsIFUsIFY+JiBiKQogICAgewogICAgICAg
IHJldHVybiBhLm1faW1wbCA9PSBiLm1faW1wbDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgogICAgICAgIGlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgSGFzaFRhYmxlQ29uc3RWYWx1ZXNJdGVyYXRvcjxULCBVLCBWPiYgYSwgY29uc3Qg
SGFzaFRhYmxlQ29uc3RWYWx1ZXNJdGVyYXRvcjxULCBVLCBWPiYgYikKICAgIHsKICAgICAgICBy
ZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2ltcGw7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEhhc2hUYWJsZUtleXNJdGVyYXRvcjxULCBVLCBWPiYgYSwgY29uc3QgSGFzaFRhYmxl
S2V5c0l0ZXJhdG9yPFQsIFUsIFY+JiBiKQogICAgewogICAgICAgIHJldHVybiBhLm1faW1wbCA9
PSBiLm1faW1wbDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWPgogICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRhYmxl
S2V5c0l0ZXJhdG9yPFQsIFUsIFY+JiBhLCBjb25zdCBIYXNoVGFibGVLZXlzSXRlcmF0b3I8VCwg
VSwgVj4mIGIpCiAgICB7CiAgICAgICAgcmV0dXJuIGEubV9pbXBsICE9IGIubV9pbXBsOwogICAg
fQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiAgICAg
ICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoVGFibGVWYWx1ZXNJdGVyYXRvcjxU
LCBVLCBWPiYgYSwgY29uc3QgSGFzaFRhYmxlVmFsdWVzSXRlcmF0b3I8VCwgVSwgVj4mIGIpCiAg
ICB7CiAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBsOwogICAgfQoKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiAgICAgICAgaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBIYXNoVGFibGVWYWx1ZXNJdGVyYXRvcjxULCBVLCBWPiYgYSwg
Y29uc3QgSGFzaFRhYmxlVmFsdWVzSXRlcmF0b3I8VCwgVSwgVj4mIGIpCiAgICB7CiAgICAgICAg
cmV0dXJuIGEubV9pbXBsICE9IGIubV9pbXBsOwogICAgfQoKCn0KIyAxNTMwICIuLi8uLi9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoVGFibGUuaCIgMgojIDI2ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9IYXNo
TWFwLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9JdGVyYXRvclJhbmdlLmgiIDEKIyAy
NyAiLi4vLi4vU291cmNlL1dURi93dGYvSXRlcmF0b3JSYW5nZS5oIgojZGVmaW5lIFdURl9JdGVy
YXRvclJhbmdlX2ggCgpuYW1lc3BhY2UgV1RGIHsKCnRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9y
PgpjbGFzcyBJdGVyYXRvclJhbmdlIHsKcHVibGljOgogICAgSXRlcmF0b3JSYW5nZShJdGVyYXRv
ciBiZWdpbiwgSXRlcmF0b3IgZW5kKQogICAgICAgIDogbV9iZWdpbihzdGQ6Om1vdmU8V1RGOjpD
aGVja01vdmVQYXJhbWV0ZXI+KGJlZ2luKSkKICAgICAgICAsIG1fZW5kKHN0ZDo6bW92ZTxXVEY6
OkNoZWNrTW92ZVBhcmFtZXRlcj4oZW5kKSkKICAgIHsKICAgIH0KCiAgICBJdGVyYXRvciBiZWdp
bigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KICAgIEl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZW5kOyB9Cgpwcml2YXRlOgogICAgSXRlcmF0b3IgbV9iZWdpbjsKICAgIEl0ZXJh
dG9yIG1fZW5kOwp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3I+Ckl0ZXJhdG9yUmFuZ2U8
SXRlcmF0b3I+IG1ha2VJdGVyYXRvclJhbmdlKEl0ZXJhdG9yJiYgYmVnaW4sIEl0ZXJhdG9yJiYg
ZW5kKQp7CiAgICByZXR1cm4gSXRlcmF0b3JSYW5nZTxJdGVyYXRvcj4oc3RkOjpmb3J3YXJkPEl0
ZXJhdG9yPihiZWdpbiksIHN0ZDo6Zm9yd2FyZDxJdGVyYXRvcj4oZW5kKSk7Cn0KCn0KIyAyNyAi
Li4vLi4vU291cmNlL1dURi93dGYvSGFzaE1hcC5oIiAyCgpuYW1lc3BhY2UgV1RGIHsKCnRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBLZXlWYWx1ZVBhaXJLZXlFeHRyYWN0b3IgewogICAgc3Rh
dGljIGNvbnN0IHR5cGVuYW1lIFQ6OktleVR5cGUmIGV4dHJhY3QoY29uc3QgVCYgcCkgeyByZXR1
cm4gcC5rZXk7IH0KfTsKCnRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVk
QXJnLCB0eXBlbmFtZSBIYXNoQXJnID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8S2V5QXJnPjo6SGFz
aCwKICAgIHR5cGVuYW1lIEtleVRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8S2V5QXJnPiwgdHlwZW5h
bWUgTWFwcGVkVHJhaXRzQXJnID0gSGFzaFRyYWl0czxNYXBwZWRBcmc+PgpjbGFzcyBIYXNoTWFw
IGZpbmFsIHsKICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkg
eyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0
dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6
ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RG
OjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lk
KiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBO
b3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsg
fSBwcml2YXRlOiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVy
VGhpc01hY3JvOwpwcml2YXRlOgogICAgdHlwZWRlZiBLZXlUcmFpdHNBcmcgS2V5VHJhaXRzOwog
ICAgdHlwZWRlZiBNYXBwZWRUcmFpdHNBcmcgTWFwcGVkVHJhaXRzOwoKICAgIHN0cnVjdCBLZXlW
YWx1ZVBhaXJUcmFpdHMgOiBLZXlWYWx1ZVBhaXJIYXNoVHJhaXRzPEtleVRyYWl0cywgTWFwcGVk
VHJhaXRzPiB7CiAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rp
b24gPSB0cnVlOwogICAgICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCB0eXBlbmFt
ZSBLZXlWYWx1ZVBhaXJIYXNoVHJhaXRzPEtleVRyYWl0cywgTWFwcGVkVHJhaXRzPjo6VHJhaXRU
eXBlJiB2YWx1ZSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBpc0hhc2hUcmFpdHNFbXB0
eVZhbHVlPEtleVRyYWl0cz4odmFsdWUua2V5KTsKICAgICAgICB9CiAgICB9OwoKcHVibGljOgog
ICAgdHlwZWRlZiB0eXBlbmFtZSBLZXlUcmFpdHM6OlRyYWl0VHlwZSBLZXlUeXBlOwogICAgdHlw
ZWRlZiB0eXBlbmFtZSBNYXBwZWRUcmFpdHM6OlRyYWl0VHlwZSBNYXBwZWRUeXBlOwogICAgdHlw
ZWRlZiB0eXBlbmFtZSBLZXlWYWx1ZVBhaXJUcmFpdHM6OlRyYWl0VHlwZSBLZXlWYWx1ZVBhaXJU
eXBlOwoKcHJpdmF0ZToKICAgIHR5cGVkZWYgdHlwZW5hbWUgTWFwcGVkVHJhaXRzOjpQZWVrVHlw
ZSBNYXBwZWRQZWVrVHlwZTsKCiAgICB0eXBlZGVmIEhhc2hBcmcgSGFzaEZ1bmN0aW9uczsKCiAg
ICB0eXBlZGVmIEhhc2hUYWJsZTxLZXlUeXBlLCBLZXlWYWx1ZVBhaXJUeXBlLCBLZXlWYWx1ZVBh
aXJLZXlFeHRyYWN0b3I8S2V5VmFsdWVQYWlyVHlwZT4sCiAgICAgICAgSGFzaEZ1bmN0aW9ucywg
S2V5VmFsdWVQYWlyVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7CgogICAgY2xhc3Mg
SGFzaE1hcEtleXNQcm94eTsKICAgIGNsYXNzIEhhc2hNYXBWYWx1ZXNQcm94eTsKCnB1YmxpYzoK
ICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIEtleVZh
bHVlUGFpclR5cGU+IGl0ZXJhdG9yOwogICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9y
QWRhcHRlcjxIYXNoVGFibGVUeXBlLCBLZXlWYWx1ZVBhaXJUeXBlPiBjb25zdF9pdGVyYXRvcjsK
ICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6QWRkUmVzdWx0IEFkZFJlc3VsdDsK
CnB1YmxpYzoKICAgIEhhc2hNYXAoKQogICAgewogICAgfQoKICAgIEhhc2hNYXAoc3RkOjppbml0
aWFsaXplcl9saXN0PEtleVZhbHVlUGFpclR5cGU+IGluaXRpYWxpemVyTGlzdCkKICAgIHsKICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGtleVZhbHVlUGFpciA6IGluaXRpYWxpemVyTGlzdCkKICAg
ICAgICAgICAgYWRkKGtleVZhbHVlUGFpci5rZXksIGtleVZhbHVlUGFpci52YWx1ZSk7CiAgICB9
CgogICAgdm9pZCBzd2FwKEhhc2hNYXAmKTsKCiAgICB1bnNpZ25lZCBzaXplKCkgY29uc3Q7CiAg
ICB1bnNpZ25lZCBjYXBhY2l0eSgpIGNvbnN0OwogICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CgoK
ICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICBpdGVyYXRvciBlbmQoKTsKICAgIGNvbnN0X2l0ZXJh
dG9yIGJlZ2luKCkgY29uc3Q7CiAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdDsKCiAgICBJ
dGVyYXRvclJhbmdlPHR5cGVuYW1lIGl0ZXJhdG9yOjpLZXlzPiBrZXlzKCkgeyByZXR1cm4gbWFr
ZUl0ZXJhdG9yUmFuZ2UoYmVnaW4oKS5rZXlzKCksIGVuZCgpLmtleXMoKSk7IH0KICAgIGNvbnN0
IEl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgY29uc3RfaXRlcmF0b3I6OktleXM+IGtleXMoKSBjb25z
dCB7IHJldHVybiBtYWtlSXRlcmF0b3JSYW5nZShiZWdpbigpLmtleXMoKSwgZW5kKCkua2V5cygp
KTsgfQoKICAgIEl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgaXRlcmF0b3I6OlZhbHVlcz4gdmFsdWVz
KCkgeyByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2UoYmVnaW4oKS52YWx1ZXMoKSwgZW5kKCkudmFs
dWVzKCkpOyB9CiAgICBjb25zdCBJdGVyYXRvclJhbmdlPHR5cGVuYW1lIGNvbnN0X2l0ZXJhdG9y
OjpWYWx1ZXM+IHZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1ha2VJdGVyYXRvclJhbmdlKGJlZ2lu
KCkudmFsdWVzKCksIGVuZCgpLnZhbHVlcygpKTsgfQoKICAgIGl0ZXJhdG9yIGZpbmQoY29uc3Qg
S2V5VHlwZSYpOwogICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJikgY29uc3Q7
CiAgICBib29sIGNvbnRhaW5zKGNvbnN0IEtleVR5cGUmKSBjb25zdDsKICAgIE1hcHBlZFBlZWtU
eXBlIGdldChjb25zdCBLZXlUeXBlJikgY29uc3Q7CgoKICAgIE1hcHBlZFBlZWtUeXBlIGZhc3RH
ZXQoY29uc3QgS2V5VHlwZSYpIGNvbnN0OwoKCgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+IEFk
ZFJlc3VsdCBzZXQoY29uc3QgS2V5VHlwZSYsIFYmJik7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBW
PiBBZGRSZXN1bHQgc2V0KEtleVR5cGUmJiwgViYmKTsKCgoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWPiBBZGRSZXN1bHQgYWRkKGNvbnN0IEtleVR5cGUmLCBWJiYpOwogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVj4gQWRkUmVzdWx0IGFkZChLZXlUeXBlJiYsIFYmJik7CgoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFY+IEFkZFJlc3VsdCBmYXN0QWRkKGNvbnN0IEtleVR5cGUmLCBWJiYpOwogICAgdGVt
cGxhdGU8dHlwZW5hbWUgVj4gQWRkUmVzdWx0IGZhc3RBZGQoS2V5VHlwZSYmLCBWJiYpOwoKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IEFkZFJlc3VsdCBlbnN1cmUoY29uc3QgS2V5VHlw
ZSYsIGNvbnN0IEZ1bmN0b3ImKTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IEFkZFJl
c3VsdCBlbnN1cmUoS2V5VHlwZSYmLCBjb25zdCBGdW5jdG9yJik7CgogICAgYm9vbCByZW1vdmUo
Y29uc3QgS2V5VHlwZSYpOwogICAgYm9vbCByZW1vdmUoaXRlcmF0b3IpOwogICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4KICAgIHZvaWQgcmVtb3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3Rv
cik7CiAgICB2b2lkIGNsZWFyKCk7CgogICAgTWFwcGVkVHlwZSB0YWtlKGNvbnN0IEtleVR5cGUm
KTsKCgoKCgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBU
PiBpdGVyYXRvciBmaW5kKGNvbnN0IFQmKTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFu
c2xhdG9yLCB0eXBlbmFtZSBUPiBjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IFQmKSBjb25zdDsK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBib29sIGNv
bnRhaW5zKGNvbnN0IFQmKSBjb25zdDsKCgoKCgoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNo
VHJhbnNsYXRvciwgdHlwZW5hbWUgSywgdHlwZW5hbWUgVj4gQWRkUmVzdWx0IGFkZChLJiYsIFYm
Jik7CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsgPSBLZXlUeXBlPiB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgaXRlcmF0b3I+Ojp0eXBlIGZpbmQodHlwZW5h
bWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlKTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsgPSBL
ZXlUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgY29u
c3RfaXRlcmF0b3I+Ojp0eXBlIGZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBl
KSBjb25zdDsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsgPSBLZXlUeXBlPiB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgYm9vbD46OnR5cGUgY29udGFpbnModHlw
ZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlKSBjb25zdDsKICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEsgPSBLZXlUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2
YWx1ZSwgTWFwcGVkUGVla1R5cGU+Ojp0eXBlIGlubGluZUdldCh0eXBlbmFtZSBHZXRQdHJIZWxw
ZXI8Sz46OlB0clR5cGUpIGNvbnN0OwogICAgdGVtcGxhdGU8dHlwZW5hbWUgSyA9IEtleVR5cGU+
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBNYXBwZWRQZWVr
VHlwZT46OnR5cGUgZ2V0KHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSkgY29uc3Q7
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLID0gS2V5VHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIGJvb2w+Ojp0eXBlIHJlbW92ZSh0eXBlbmFtZSBHZXRQ
dHJIZWxwZXI8Sz46OlB0clR5cGUpOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgSyA9IEtleVR5cGU+
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBNYXBwZWRUeXBl
Pjo6dHlwZSB0YWtlKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSk7CgogICAgdm9p
ZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3Q7CgogICAgc3RhdGljIGJvb2wgaXNWYWxpZEtleShj
b25zdCBLZXlUeXBlJik7Cgpwcml2YXRlOgogICAgdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5h
bWUgVj4KICAgIEFkZFJlc3VsdCBpbmxpbmVTZXQoSyYmLCBWJiYpOwoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEssIHR5cGVuYW1lIFY+CiAgICBBZGRSZXN1bHQgaW5saW5lQWRkKEsmJiwgViYmKTsK
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBGPgogICAgQWRkUmVzdWx0IGlubGlu
ZUVuc3VyZShLJiYsIGNvbnN0IEYmKTsKCiAgICBIYXNoVGFibGVUeXBlIG1faW1wbDsKfTsKCnRl
bXBsYXRlPHR5cGVuYW1lIFZhbHVlVHJhaXRzLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zPgpzdHJ1
Y3QgSGFzaE1hcFRyYW5zbGF0b3IgewogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVu
c2lnbmVkIGhhc2goY29uc3QgVCYga2V5KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtl
eSk7IH0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IFQmIGEsIGNvbnN0IFUmIGIpIHsgcmV0dXJuIEhhc2hGdW5jdGlvbnM6OmVxdWFs
KGEsIGIpOyB9CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
PiBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoVCYgbG9jYXRpb24sIFUmJiBrZXksIFYmJiBtYXBwZWQp
CiAgICB7CiAgICAgICAgbG9jYXRpb24ua2V5ID0gc3RkOjpmb3J3YXJkPFU+KGtleSk7CiAgICAg
ICAgbG9jYXRpb24udmFsdWUgPSBzdGQ6OmZvcndhcmQ8Vj4obWFwcGVkKTsKICAgIH0KfTsKCnRl
bXBsYXRlPHR5cGVuYW1lIFZhbHVlVHJhaXRzLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zPgpzdHJ1
Y3QgSGFzaE1hcEVuc3VyZVRyYW5zbGF0b3IgewogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgVCYga2V5KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpo
YXNoKGtleSk7IH0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFQmIGEsIGNvbnN0IFUmIGIpIHsgcmV0dXJuIEhhc2hGdW5jdGlvbnM6
OmVxdWFsKGEsIGIpOyB9CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBGdW5jdG9yPiBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoVCYgbG9jYXRpb24sIFUmJiBrZXks
IGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICB7CiAgICAgICAgbG9jYXRpb24ua2V5ID0gc3Rk
Ojpmb3J3YXJkPFU+KGtleSk7CiAgICAgICAgbG9jYXRpb24udmFsdWUgPSBmdW5jdG9yKCk7CiAg
ICB9Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVRyYWl0cywgdHlwZW5hbWUgVHJhbnNsYXRv
cj4Kc3RydWN0IEhhc2hNYXBUcmFuc2xhdG9yQWRhcHRlciB7CiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBUJiBrZXkpIHsgcmV0dXJuIFRyYW5zbGF0
b3I6Omhhc2goa2V5KTsgfQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgVCYgYSwgY29uc3QgVSYgYikgeyByZXR1cm4gVHJhbnNsYXRv
cjo6ZXF1YWwoYSwgYik7IH0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFY+IHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShUJiBsb2NhdGlvbiwgVSYmIGtleSwgViYm
IG1hcHBlZCwgdW5zaWduZWQgaGFzaENvZGUpCiAgICB7CiAgICAgICAgVHJhbnNsYXRvcjo6dHJh
bnNsYXRlKGxvY2F0aW9uLmtleSwga2V5LCBoYXNoQ29kZSk7CiAgICAgICAgbG9jYXRpb24udmFs
dWUgPSBzdGQ6OmZvcndhcmQ8Vj4obWFwcGVkKTsKICAgIH0KfTsKCnRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CmlubGlu
ZSB2b2lkIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OnN3YXAoSGFzaE1hcCYgb3RoZXIpCnsKICAg
IG1faW1wbC5zd2FwKG90aGVyLm1faW1wbCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CmlubGluZSB1bnNpZ25l
ZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpzaXplKCkgY29uc3QKewogICAgcmV0dXJuIG1faW1w
bC5zaXplKCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CmlubGluZSB1bnNpZ25lZCBIYXNoTWFwPFQsIFUsIFYs
IFcsIFg+OjpjYXBhY2l0eSgpIGNvbnN0CnsKICAgIHJldHVybiBtX2ltcGwuY2FwYWNpdHkoKTsK
fQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
VywgdHlwZW5hbWUgWD4KaW5saW5lIGJvb2wgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXNFbXB0
eSgpIGNvbnN0CnsKICAgIHJldHVybiBtX2ltcGwuaXNFbXB0eSgpOwp9Cgp0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgpp
bmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpiZWdpbigpIC0+IGl0ZXJhdG9yCnsK
ICAgIHJldHVybiBtX2ltcGwuYmVnaW4oKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KaW5saW5lIGF1dG8gSGFz
aE1hcDxULCBVLCBWLCBXLCBYPjo6ZW5kKCkgLT4gaXRlcmF0b3IKewogICAgcmV0dXJuIG1faW1w
bC5lbmQoKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
dHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KaW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBY
Pjo6YmVnaW4oKSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcgp7CiAgICByZXR1cm4gbV9pbXBsLmJl
Z2luKCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIFcsIHR5cGVuYW1lIFg+CmlubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWD46
OmVuZCgpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCnsKICAgIHJldHVybiBtX2ltcGwuZW5kKCk7
Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFg+CmlubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmZpbmQo
Y29uc3QgS2V5VHlwZSYga2V5KSAtPiBpdGVyYXRvcgp7CiAgICByZXR1cm4gbV9pbXBsLmZpbmQo
a2V5KTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlw
ZW5hbWUgVywgdHlwZW5hbWUgWD4KaW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6
ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCnsKICAgIHJl
dHVybiBtX2ltcGwuZmluZChrZXkpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgppbmxpbmUgYm9vbCBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+Ojpjb250YWlucyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0CnsKICAg
IHJldHVybiBtX2ltcGwuY29udGFpbnMoa2V5KTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFRZUEU+CmlubGluZSB0eXBlbmFtZSBIYXNo
TWFwPFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvcgpIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5k
KGNvbnN0IFRZUEUmIHZhbHVlKQp7CiAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8SGFz
aE1hcFRyYW5zbGF0b3JBZGFwdGVyPEtleVZhbHVlUGFpclRyYWl0cywgSGFzaFRyYW5zbGF0b3I+
Pih2YWx1ZSk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CnRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9y
LCB0eXBlbmFtZSBUWVBFPgppbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6
Y29uc3RfaXRlcmF0b3IKSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZmluZChjb25zdCBUWVBFJiB2
YWx1ZSkgY29uc3QKewogICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBmaW5kPEhhc2hNYXBUcmFu
c2xhdG9yQWRhcHRlcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hUcmFuc2xhdG9yPj4odmFsdWUp
Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFt
ZSBXLCB0eXBlbmFtZSBYPgp0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5h
bWUgVFlQRT4KaW5saW5lIGJvb2wgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29udGFpbnMoY29u
c3QgVFlQRSYgdmFsdWUpIGNvbnN0CnsKICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgY29udGFp
bnM8SGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyPEtleVZhbHVlUGFpclRyYWl0cywgSGFzaFRyYW5z
bGF0b3I+Pih2YWx1ZSk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFw
cGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1l
IE1hcHBlZFRyYWl0c0FyZz4KdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KYXV0byBI
YXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRy
YWl0c0FyZz46OmlubGluZVNldChLJiYga2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAp7CiAg
ICBBZGRSZXN1bHQgcmVzdWx0ID0gaW5saW5lQWRkKHN0ZDo6Zm9yd2FyZDxLPihrZXkpLCBzdGQ6
OmZvcndhcmQ8Vj4odmFsdWUpKTsKICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKCiAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6Zm9yd2FyZDxWPih2YWx1ZSk7CiAgICB9
CiAgICByZXR1cm4gcmVzdWx0Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1l
IE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBl
bmFtZSBNYXBwZWRUcmFpdHNBcmc+CnRlbXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+Cmlu
bGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGF1dG8gSGFzaE1hcDxLZXlB
cmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+Ojpp
bmxpbmVBZGQoSyYmIGtleSwgViYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKewogICAgcmV0dXJuIG1f
aW1wbC50ZW1wbGF0ZSBhZGQ8SGFzaE1hcFRyYW5zbGF0b3I8S2V5VmFsdWVQYWlyVHJhaXRzLCBI
YXNoRnVuY3Rpb25zPj4oc3RkOjpmb3J3YXJkPEs+KGtleSksIHN0ZDo6Zm9yd2FyZDxWPih2YWx1
ZSkpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlw
ZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFp
dHNBcmc+CnRlbXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIEY+CmlubGluZSBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywg
SGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjppbmxpbmVFbnN1cmUoSyYm
IGtleSwgY29uc3QgRiYgZnVuY3RvcikgLT4gQWRkUmVzdWx0CnsKICAgIHJldHVybiBtX2ltcGwu
dGVtcGxhdGUgYWRkPEhhc2hNYXBFbnN1cmVUcmFuc2xhdG9yPEtleVZhbHVlUGFpclRyYWl0cywg
SGFzaEZ1bmN0aW9ucz4+KHN0ZDo6Zm9yd2FyZDxLPihrZXkpLCBmdW5jdG9yKTsKfQoKdGVtcGxh
dGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcs
IHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgp0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgphdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtl
eVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgVCYm
IG1hcHBlZCkgLT4gQWRkUmVzdWx0CnsKICAgIHJldHVybiBpbmxpbmVTZXQoa2V5LCBzdGQ6OmZv
cndhcmQ8VD4obWFwcGVkKSk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUg
TWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVu
YW1lIE1hcHBlZFRyYWl0c0FyZz4KdGVtcGxhdGU8dHlwZW5hbWUgVD4KYXV0byBIYXNoTWFwPEtl
eUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46
OnNldChLZXlUeXBlJiYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQKewogICAgcmV0dXJu
IGlubGluZVNldChzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KGtleSksIHN0ZDo6
Zm9yd2FyZDxUPihtYXBwZWQpKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFt
ZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlw
ZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgp0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwg
dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBI
YXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChLJiYga2V5LCBWJiYg
dmFsdWUpIC0+IEFkZFJlc3VsdAp7CiAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZFBhc3Np
bmdIYXNoQ29kZTxIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXI8S2V5VmFsdWVQYWlyVHJhaXRzLCBI
YXNoVHJhbnNsYXRvcj4+KHN0ZDo6Zm9yd2FyZDxLPihrZXkpLCBzdGQ6OmZvcndhcmQ8Vj4odmFs
dWUpKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5
cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJh
aXRzQXJnPgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgphdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRB
cmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6YWRkKGNvbnN0IEtl
eVR5cGUmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CnsKICAgIHJldHVybiBpbmxpbmVB
ZGQoa2V5LCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIEtl
eUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlU
cmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KdGVtcGxhdGU8dHlwZW5hbWUgVD4K
YXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1h
cHBlZFRyYWl0c0FyZz46OmFkZChLZXlUeXBlJiYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1
bHQKewogICAgcmV0dXJuIGlubGluZUFkZChzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0
ZXI+KGtleSksIHN0ZDo6Zm9yd2FyZDxUPihtYXBwZWQpKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUg
S2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtl
eVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgp0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBhdXRvIEhhc2hNYXA8
S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJn
Pjo6ZmFzdEFkZChjb25zdCBLZXlUeXBlJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAp7
CiAgICByZXR1cm4gaW5saW5lQWRkKGtleSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwp9Cgp0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFz
aEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+CnRl
bXBsYXRlPHR5cGVuYW1lIFQ+CmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XykpIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJn
LCBNYXBwZWRUcmFpdHNBcmc+OjpmYXN0QWRkKEtleVR5cGUmJiBrZXksIFQmJiBtYXBwZWQpIC0+
IEFkZFJlc3VsdAp7CiAgICByZXR1cm4gaW5saW5lQWRkKHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92
ZVBhcmFtZXRlcj4oa2V5KSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwp9Cgp0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlw
ZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+CnRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+CmF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywg
S2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjplbnN1cmUoY29uc3QgS2V5VHlwZSYga2V5
LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSAtPiBBZGRSZXN1bHQKewogICAgcmV0dXJuIGlubGlu
ZUVuc3VyZShrZXksIGZ1bmN0b3IpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVu
YW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0
eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+CnRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CmF1dG8g
SGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRU
cmFpdHNBcmc+OjplbnN1cmUoS2V5VHlwZSYmIGtleSwgY29uc3QgRnVuY3RvciYgZnVuY3Rvcikg
LT4gQWRkUmVzdWx0CnsKICAgIHJldHVybiBpbmxpbmVFbnN1cmUoc3RkOjptb3ZlPFdURjo6Q2hl
Y2tNb3ZlUGFyYW1ldGVyPihrZXkpLCBmdW5jdG9yKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgTWFwcGVkVHJhaXRz
PgphdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgTWFwcGVkVHJhaXRzPjo6Z2V0KGNvbnN0IEtleVR5
cGUmIGtleSkgY29uc3QgLT4gTWFwcGVkUGVla1R5cGUKewogICAgS2V5VmFsdWVQYWlyVHlwZSog
ZW50cnkgPSBjb25zdF9jYXN0PEhhc2hUYWJsZVR5cGUmPihtX2ltcGwpLmxvb2t1cChrZXkpOwog
ICAgaWYgKCFlbnRyeSkKICAgICAgICByZXR1cm4gTWFwcGVkVHJhaXRzOjpwZWVrKE1hcHBlZFRy
YWl0czo6ZW1wdHlWYWx1ZSgpKTsKICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OnBlZWsoZW50cnkt
PnZhbHVlKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
dHlwZW5hbWUgVywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzPgppbmxpbmUgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18pKSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgTWFwcGVkVHJhaXRz
Pjo6ZmFzdEdldChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0IC0+IE1hcHBlZFBlZWtUeXBlCnsK
ICAgIEtleVZhbHVlUGFpclR5cGUqIGVudHJ5ID0gY29uc3RfY2FzdDxIYXNoVGFibGVUeXBlJj4o
bV9pbXBsKS50ZW1wbGF0ZSBpbmxpbmVMb29rdXA8dHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6SWRl
bnRpdHlUcmFuc2xhdG9yVHlwZT4oa2V5KTsKICAgIGlmICghZW50cnkpCiAgICAgICAgcmV0dXJu
IE1hcHBlZFRyYWl0czo6cGVlayhNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7CiAgICByZXR1
cm4gTWFwcGVkVHJhaXRzOjpwZWVrKGVudHJ5LT52YWx1ZSk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CmlubGlu
ZSBib29sIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OnJlbW92ZShpdGVyYXRvciBpdCkKewogICAg
aWYgKGl0Lm1faW1wbCA9PSBtX2ltcGwuZW5kKCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
bV9pbXBsLmludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICBtX2ltcGwucmVtb3Zl
V2l0aG91dEVudHJ5Q29uc2lzdGVuY3lDaGVjayhpdC5tX2ltcGwpOwogICAgcmV0dXJuIHRydWU7
Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFg+CnRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CmlubGluZSB2b2lkIEhh
c2hNYXA8VCwgVSwgViwgVywgWD46OnJlbW92ZUlmKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCnsK
ICAgIG1faW1wbC5yZW1vdmVJZihmdW5jdG9yKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KaW5saW5lIGJvb2wg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6cmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSkKewogICAg
cmV0dXJuIHJlbW92ZShmaW5kKGtleSkpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgppbmxpbmUgdm9pZCBIYXNo
TWFwPFQsIFUsIFYsIFcsIFg+OjpjbGVhcigpCnsKICAgIG1faW1wbC5jbGVhcigpOwp9Cgp0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBl
bmFtZSBNYXBwZWRUcmFpdHM+CmF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+
Ojp0YWtlKGNvbnN0IEtleVR5cGUmIGtleSkgLT4gTWFwcGVkVHlwZQp7CiAgICBpdGVyYXRvciBp
dCA9IGZpbmQoa2V5KTsKICAgIGlmIChpdCA9PSBlbmQoKSkKICAgICAgICByZXR1cm4gTWFwcGVk
VHJhaXRzOjplbXB0eVZhbHVlKCk7CiAgICBNYXBwZWRUeXBlIHZhbHVlID0gc3RkOjptb3ZlPFdU
Rjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihpdC0+dmFsdWUpOwogICAgcmVtb3ZlKGl0KTsKICAgIHJl
dHVybiB2YWx1ZTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
ViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KdGVtcGxhdGU8dHlwZW5hbWUgSz4KaW5saW5lIGF1
dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZmluZCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46
OlB0clR5cGUga2V5KSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2
YWx1ZSwgaXRlcmF0b3I+Ojp0eXBlCnsKICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmluZDxI
YXNoTWFwVHJhbnNsYXRvcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+PihrZXkp
Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFt
ZSBXLCB0eXBlbmFtZSBYPgp0ZW1wbGF0ZTx0eXBlbmFtZSBLPgppbmxpbmUgYXV0byBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjpmaW5kKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBr
ZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVl
LCBjb25zdF9pdGVyYXRvcj46OnR5cGUKewogICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBmaW5k
PEhhc2hNYXBUcmFuc2xhdG9yPEtleVZhbHVlUGFpclRyYWl0cywgSGFzaEZ1bmN0aW9ucz4+KGtl
eSk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFg+CnRlbXBsYXRlPHR5cGVuYW1lIEs+CmlubGluZSBhdXRvIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRy
VHlwZSBrZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46
OnZhbHVlLCBib29sPjo6dHlwZQp7CiAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGNvbnRhaW5z
PEhhc2hNYXBUcmFuc2xhdG9yPEtleVZhbHVlUGFpclRyYWl0cywgSGFzaEZ1bmN0aW9ucz4+KGtl
eSk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFg+CnRlbXBsYXRlPHR5cGVuYW1lIEs+CmlubGluZSBhdXRvIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46OmlubGluZUdldCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0
clR5cGUga2V5KSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+
Ojp2YWx1ZSwgTWFwcGVkUGVla1R5cGU+Ojp0eXBlCnsKICAgIEtleVZhbHVlUGFpclR5cGUqIGVu
dHJ5ID0gY29uc3RfY2FzdDxIYXNoVGFibGVUeXBlJj4obV9pbXBsKS50ZW1wbGF0ZSBpbmxpbmVM
b29rdXA8SGFzaE1hcFRyYW5zbGF0b3I8S2V5VmFsdWVQYWlyVHJhaXRzLCBIYXNoRnVuY3Rpb25z
Pj4oa2V5KTsKICAgIGlmICghZW50cnkpCiAgICAgICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6cGVl
ayhNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7CiAgICByZXR1cm4gTWFwcGVkVHJhaXRzOjpw
ZWVrKGVudHJ5LT52YWx1ZSk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CnRlbXBsYXRlPHR5cGVuYW1lIEs+CmF1
dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Z2V0KHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6
UHRyVHlwZSBrZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8
Sz46OnZhbHVlLCBNYXBwZWRQZWVrVHlwZT46OnR5cGUKewogICAgcmV0dXJuIGlubGluZUdldChr
ZXkpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBl
bmFtZSBXLCB0eXBlbmFtZSBYPgp0ZW1wbGF0ZTx0eXBlbmFtZSBLPgppbmxpbmUgYXV0byBIYXNo
TWFwPFQsIFUsIFYsIFcsIFg+OjpyZW1vdmUodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJU
eXBlIGtleSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUs
IGJvb2w+Ojp0eXBlCnsKICAgIHJldHVybiByZW1vdmUoZmluZChrZXkpKTsKfQoKdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WD4KdGVtcGxhdGU8dHlwZW5hbWUgSz4KaW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBY
Pjo6dGFrZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSAtPiB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgTWFwcGVkVHlwZT46OnR5cGUK
ewogICAgaXRlcmF0b3IgaXQgPSBmaW5kKGtleSk7CiAgICBpZiAoaXQgPT0gZW5kKCkpCiAgICAg
ICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6ZW1wdHlWYWx1ZSgpOwogICAgTWFwcGVkVHlwZSB2YWx1
ZSA9IHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4oaXQtPnZhbHVlKTsKICAgIHJl
bW92ZShpdCk7CiAgICByZXR1cm4gdmFsdWU7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CmlubGluZSB2b2lkIEhh
c2hNYXA8VCwgVSwgViwgVywgWD46OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAp7CiAgICBtX2lt
cGwuY2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CmlubGluZSBib29sIEhh
c2hNYXA8VCwgVSwgViwgVywgWD46OmlzVmFsaWRLZXkoY29uc3QgS2V5VHlwZSYga2V5KQp7CiAg
ICBpZiAoS2V5VHJhaXRzOjppc0RlbGV0ZWRWYWx1ZShrZXkpKQogICAgICAgIHJldHVybiBmYWxz
ZTsKCiAgICBpZiAoSGFzaEZ1bmN0aW9uczo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQp
IHsKICAgICAgICBpZiAoa2V5ID09IEtleVRyYWl0czo6ZW1wdHlWYWx1ZSgpKQogICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICB9IGVsc2UgewogICAgICAgIGlmIChpc0hhc2hUcmFpdHNFbXB0
eVZhbHVlPEtleVRyYWl0cz4oa2V5KSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoK
ICAgIHJldHVybiB0cnVlOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgpib29sIG9wZXJhdG9yPT0oY29uc3QgSGFz
aE1hcDxULCBVLCBWLCBXLCBYPiYgYSwgY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgYikK
ewogICAgaWYgKGEuc2l6ZSgpICE9IGIuc2l6ZSgpKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAg
ICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnN0X2l0ZXJhdG9y
IGNvbnN0X2l0ZXJhdG9yOwoKICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCA9IGEuZW5kKCk7CiAgICBj
b25zdF9pdGVyYXRvciBub3RGb3VuZCA9IGIuZW5kKCk7CiAgICBmb3IgKGNvbnN0X2l0ZXJhdG9y
IGl0ID0gYS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICBjb25zdF9pdGVyYXRv
ciBiUG9zID0gYi5maW5kKGl0LT5rZXkpOwogICAgICAgIGlmIChiUG9zID09IG5vdEZvdW5kIHx8
IGl0LT52YWx1ZSAhPSBiUG9zLT52YWx1ZSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
fQoKICAgIHJldHVybiB0cnVlOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgppbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWD4mIGEsIGNvbnN0IEhhc2hNYXA8VCwgVSwgViwg
VywgWD4mIGIpCnsKICAgIHJldHVybiAhKGEgPT0gYik7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHR5cGVuYW1l
IFk+CmlubGluZSB2b2lkIGNvcHlUb1ZlY3Rvcihjb25zdCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
JiBjb2xsZWN0aW9uLCBZJiB2ZWN0b3IpCnsKICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxU
LCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3I7CgogICAgdmVjdG9yLnJlc2l6
ZShjb2xsZWN0aW9uLnNpemUoKSk7CgogICAgaXRlcmF0b3IgaXQgPSBjb2xsZWN0aW9uLmJlZ2lu
KCk7CiAgICBpdGVyYXRvciBlbmQgPSBjb2xsZWN0aW9uLmVuZCgpOwogICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaXQgIT0gZW5kOyArK2l0LCArK2kpCiAgICAgICAgdmVjdG9yW2ldID0geyAoKml0
KS5rZXksICgqaXQpLnZhbHVlIH07Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+CmlubGluZSB2
b2lkIGNvcHlLZXlzVG9WZWN0b3IoY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgY29sbGVj
dGlvbiwgWSYgdmVjdG9yKQp7CiAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwg
VywgWD46OmNvbnN0X2l0ZXJhdG9yOjpLZXlzIGl0ZXJhdG9yOwoKICAgIHZlY3Rvci5yZXNpemUo
Y29sbGVjdGlvbi5zaXplKCkpOwoKICAgIGl0ZXJhdG9yIGl0ID0gY29sbGVjdGlvbi5iZWdpbigp
LmtleXMoKTsKICAgIGl0ZXJhdG9yIGVuZCA9IGNvbGxlY3Rpb24uZW5kKCkua2V5cygpOwogICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaXQgIT0gZW5kOyArK2l0LCArK2kpCiAgICAgICAgdmVjdG9y
W2ldID0gKml0Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
LCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgppbmxpbmUgdm9pZCBjb3B5VmFs
dWVzVG9WZWN0b3IoY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgY29sbGVjdGlvbiwgWSYg
dmVjdG9yKQp7CiAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNv
bnN0X2l0ZXJhdG9yOjpWYWx1ZXMgaXRlcmF0b3I7CgogICAgdmVjdG9yLnJlc2l6ZShjb2xsZWN0
aW9uLnNpemUoKSk7CgogICAgaXRlcmF0b3IgaXQgPSBjb2xsZWN0aW9uLmJlZ2luKCkudmFsdWVz
KCk7CiAgICBpdGVyYXRvciBlbmQgPSBjb2xsZWN0aW9uLmVuZCgpLnZhbHVlcygpOwogICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaXQgIT0gZW5kOyArK2l0LCArK2kpCiAgICAgICAgdmVjdG9yW2ld
ID0gKml0Owp9Cgp9Cgp1c2luZyBXVEY6Okhhc2hNYXA7CiMgMzQgIi4uLy4uL1NvdXJjZS9XVEYv
d3RmL01ldGFBbGxvY2F0b3IuaCIgMgoKCgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1BhZ2VC
bG9jay5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1BhZ2VCbG9jay5oIgojZGVmaW5l
IFBhZ2VCbG9ja19oIAoKbmFtZXNwYWNlIFdURiB7Cgogc2l6ZV90IHBhZ2VTaXplKCk7CiBzaXpl
X3QgcGFnZU1hc2soKTsKaW5saW5lIGJvb2wgaXNQYWdlQWxpZ25lZCh2b2lkKiBhZGRyZXNzKSB7
IHJldHVybiAhKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFkZHJlc3MpICYgKHBhZ2VTaXpl
KCkgLSAxKSk7IH0KaW5saW5lIGJvb2wgaXNQYWdlQWxpZ25lZChzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gIShzaXplICYgKHBhZ2VTaXplKCkgLSAxKSk7IH0KaW5saW5lIGJvb2wgaXNQb3dlck9mVHdv
KHNpemVfdCBzaXplKSB7IHJldHVybiAhKHNpemUgJiAoc2l6ZSAtIDEpKTsgfQoKY2xhc3MgUGFn
ZUJsb2NrIHsKcHVibGljOgogICAgUGFnZUJsb2NrKCk7CiAgICBQYWdlQmxvY2soY29uc3QgUGFn
ZUJsb2NrJik7CiAgICBQYWdlQmxvY2sodm9pZCosIHNpemVfdCwgYm9vbCBoYXNHdWFyZFBhZ2Vz
KTsKCiAgICB2b2lkKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQoKICAgIG9wZXJhdG9yIGJvb2woKSBjb25z
dCB7IHJldHVybiAhIW1fcmVhbEJhc2U7IH0KCiAgICBib29sIGNvbnRhaW5zKHZvaWQqIGNvbnRh
aW5lZEJhc2UsIHNpemVfdCBjb250YWluZWRTaXplKQogICAgewogICAgICAgIHJldHVybiBjb250
YWluZWRCYXNlID49IG1fYmFzZQogICAgICAgICAgICAmJiAoc3RhdGljX2Nhc3Q8Y2hhcio+KGNv
bnRhaW5lZEJhc2UpICsgY29udGFpbmVkU2l6ZSkgPD0gKHN0YXRpY19jYXN0PGNoYXIqPihtX2Jh
c2UpICsgbV9zaXplKTsKICAgIH0KCnByaXZhdGU6CiAgICB2b2lkKiBtX3JlYWxCYXNlOwogICAg
dm9pZCogbV9iYXNlOwogICAgc2l6ZV90IG1fc2l6ZTsKfTsKCmlubGluZSBQYWdlQmxvY2s6OlBh
Z2VCbG9jaygpCiAgICA6IG1fcmVhbEJhc2UoMCkKICAgICwgbV9iYXNlKDApCiAgICAsIG1fc2l6
ZSgwKQp7Cn0KCmlubGluZSBQYWdlQmxvY2s6OlBhZ2VCbG9jayhjb25zdCBQYWdlQmxvY2smIG90
aGVyKQogICAgOiBtX3JlYWxCYXNlKG90aGVyLm1fcmVhbEJhc2UpCiAgICAsIG1fYmFzZShvdGhl
ci5tX2Jhc2UpCiAgICAsIG1fc2l6ZShvdGhlci5tX3NpemUpCnsKfQoKaW5saW5lIFBhZ2VCbG9j
azo6UGFnZUJsb2NrKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplLCBib29sIGhhc0d1YXJkUGFnZXMp
CiAgICA6IG1fcmVhbEJhc2UoYmFzZSkKICAgICwgbV9iYXNlKHN0YXRpY19jYXN0PGNoYXIqPihi
YXNlKSArICgoYmFzZSAmJiBoYXNHdWFyZFBhZ2VzKSA/IHBhZ2VTaXplKCkgOiAwKSkKICAgICwg
bV9zaXplKHNpemUpCnsKfQoKfQoKdXNpbmcgV1RGOjpwYWdlU2l6ZTsKdXNpbmcgV1RGOjppc1Bh
Z2VBbGlnbmVkOwp1c2luZyBXVEY6OmlzUG93ZXJPZlR3bzsKIyAzOCAiLi4vLi4vU291cmNlL1dU
Ri93dGYvTWV0YUFsbG9jYXRvci5oIiAyCgoKCgpuYW1lc3BhY2UgV1RGIHsKCiNkZWZpbmUgRU5B
QkxFX01FVEFfQUxMT0NBVE9SX1BST0ZJTEUgMAoKY2xhc3MgTWV0YUFsbG9jYXRvclRyYWNrZXIg
ewogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVy
biBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsg
fSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFs
bG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RG
cmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldU
Rjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsg
OjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxU
YWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHByaXZh
dGU6IHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFj
cm87CnB1YmxpYzoKICAgIHZvaWQgbm90aWZ5KE1ldGFBbGxvY2F0b3JIYW5kbGUqKTsKICAgIHZv
aWQgcmVsZWFzZShNZXRhQWxsb2NhdG9ySGFuZGxlKik7CgogICAgTWV0YUFsbG9jYXRvckhhbmRs
ZSogZmluZCh2b2lkKiBhZGRyZXNzKQogICAgewogICAgICAgIE1ldGFBbGxvY2F0b3JIYW5kbGUq
IGhhbmRsZSA9IG1fYWxsb2NhdGlvbnMuZmluZEdyZWF0ZXN0TGVzc1RoYW5PckVxdWFsKGFkZHJl
c3MpOwogICAgICAgIGlmIChoYW5kbGUgJiYgYWRkcmVzcyA8IGhhbmRsZS0+ZW5kKCkpCiAgICAg
ICAgICAgIHJldHVybiBoYW5kbGU7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgUmVkQmxh
Y2tUcmVlPE1ldGFBbGxvY2F0b3JIYW5kbGUsIHZvaWQqPiBtX2FsbG9jYXRpb25zOwp9OwoKY2xh
c3MgTWV0YUFsbG9jYXRvciB7CiAgICBwcml2YXRlOiBNZXRhQWxsb2NhdG9yKGNvbnN0IE1ldGFB
bGxvY2F0b3ImKSA9IGRlbGV0ZTsgTWV0YUFsbG9jYXRvciYgb3BlcmF0b3I9KGNvbnN0IE1ldGFB
bGxvY2F0b3ImKSA9IGRlbGV0ZTs7CgpwdWJsaWM6CiAgICBNZXRhQWxsb2NhdG9yKHNpemVfdCBh
bGxvY2F0aW9uR3JhbnVsZSwgc2l6ZV90IHBhZ2VTaXplID0gV1RGOjpwYWdlU2l6ZSgpKTsKCiAg
ICB2aXJ0dWFsIH5NZXRhQWxsb2NhdG9yKCk7CgogICAgUGFzc1JlZlB0cjxNZXRhQWxsb2NhdG9y
SGFuZGxlPiBhbGxvY2F0ZShzaXplX3Qgc2l6ZUluQnl0ZXMsIHZvaWQqIG93bmVyVUlEKTsKCiAg
ICB2b2lkIHRyYWNrQWxsb2NhdGlvbnMoTWV0YUFsbG9jYXRvclRyYWNrZXIqIHRyYWNrZXIpCiAg
ICB7CiAgICAgICAgbV90cmFja2VyID0gdHJhY2tlcjsKICAgIH0KCgogICAgc2l6ZV90IGJ5dGVz
QWxsb2NhdGVkKCkgeyByZXR1cm4gbV9ieXRlc0FsbG9jYXRlZDsgfQogICAgc2l6ZV90IGJ5dGVz
UmVzZXJ2ZWQoKSB7IHJldHVybiBtX2J5dGVzUmVzZXJ2ZWQ7IH0KICAgIHNpemVfdCBieXRlc0Nv
bW1pdHRlZCgpIHsgcmV0dXJuIG1fYnl0ZXNDb21taXR0ZWQ7IH0KCgogICAgc3RydWN0IFN0YXRp
c3RpY3MgewogICAgICAgIHNpemVfdCBieXRlc0FsbG9jYXRlZDsKICAgICAgICBzaXplX3QgYnl0
ZXNSZXNlcnZlZDsKICAgICAgICBzaXplX3QgYnl0ZXNDb21taXR0ZWQ7CiAgICB9OwogICAgU3Rh
dGlzdGljcyBjdXJyZW50U3RhdGlzdGljcygpOwoKCgoKICAgIHZvaWQgYWRkRnJlc2hGcmVlU3Bh
Y2Uodm9pZCogc3RhcnQsIHNpemVfdCBzaXplSW5CeXRlcyk7CgoKCiAgICBzaXplX3QgZGVidWdG
cmVlU3BhY2VTaXplKCk7CgogICAgTG9jayYgZ2V0TG9jaygpIHsgcmV0dXJuIG1fbG9jazsgfQog
ICAgYm9vbCBpc0luQWxsb2NhdGVkTWVtb3J5KGNvbnN0IExvY2tIb2xkZXImLCB2b2lkKiBhZGRy
ZXNzKTsKCgoKCiAgICB2b2lkIGR1bXBQcm9maWxlKCkgeyB9CgoKcHJvdGVjdGVkOgoKCgogICAg
dmlydHVhbCB2b2lkKiBhbGxvY2F0ZU5ld1NwYWNlKHNpemVfdCYgbnVtUGFnZXMpID0gMDsKCgog
ICAgdmlydHVhbCB2b2lkIG5vdGlmeU5lZWRQYWdlKHZvaWQqIHBhZ2UpID0gMDsKCgogICAgdmly
dHVhbCB2b2lkIG5vdGlmeVBhZ2VJc0ZyZWUodm9pZCogcGFnZSkgPSAwOwoKCgoKCnByaXZhdGU6
CgogICAgZnJpZW5kIGNsYXNzIE1ldGFBbGxvY2F0b3JIYW5kbGU7CgogICAgY2xhc3MgRnJlZVNw
YWNlTm9kZSA6IHB1YmxpYyBSZWRCbGFja1RyZWU8RnJlZVNwYWNlTm9kZSwgc2l6ZV90Pjo6Tm9k
ZSB7CiAgICBwdWJsaWM6CiAgICAgICAgRnJlZVNwYWNlTm9kZSh2b2lkKiBzdGFydCwgc2l6ZV90
IHNpemVJbkJ5dGVzKQogICAgICAgICAgICA6IG1fc3RhcnQoc3RhcnQpCiAgICAgICAgICAgICwg
bV9zaXplSW5CeXRlcyhzaXplSW5CeXRlcykKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBz
aXplX3Qga2V5KCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBtX3NpemVJbkJ5dGVzOwog
ICAgICAgIH0KCiAgICAgICAgdm9pZCogbV9zdGFydDsKICAgICAgICBzaXplX3QgbV9zaXplSW5C
eXRlczsKICAgIH07CiAgICB0eXBlZGVmIFJlZEJsYWNrVHJlZTxGcmVlU3BhY2VOb2RlLCBzaXpl
X3Q+IFRyZWU7CgoKICAgIHZvaWQgcmVsZWFzZShNZXRhQWxsb2NhdG9ySGFuZGxlKik7CgoKCgog
ICAgdm9pZCogZmluZEFuZFJlbW92ZUZyZWVTcGFjZShzaXplX3Qgc2l6ZUluQnl0ZXMpOwoKCiAg
ICB2b2lkIGFkZEZyZWVTcGFjZUZyb21SZWxlYXNlZEhhbmRsZSh2b2lkKiBzdGFydCwgc2l6ZV90
IHNpemVJbkJ5dGVzKTsKCgoKCiAgICB2b2lkIGFkZEZyZWVTcGFjZSh2b2lkKiBzdGFydCwgc2l6
ZV90IHNpemVJbkJ5dGVzKTsKCgoKICAgIHZvaWQgaW5jcmVtZW50UGFnZU9jY3VwYW5jeSh2b2lk
KiBhZGRyZXNzLCBzaXplX3Qgc2l6ZUluQnl0ZXMpOwogICAgdm9pZCBkZWNyZW1lbnRQYWdlT2Nj
dXBhbmN5KHZvaWQqIGFkZHJlc3MsIHNpemVfdCBzaXplSW5CeXRlcyk7CgoKCiAgICBzaXplX3Qg
cm91bmRVcChzaXplX3Qgc2l6ZUluQnl0ZXMpOwoKICAgIEZyZWVTcGFjZU5vZGUqIGFsbG9jRnJl
ZVNwYWNlTm9kZSgpOwogICAgdm9pZCBmcmVlRnJlZVNwYWNlTm9kZShGcmVlU3BhY2VOb2RlKik7
CgogICAgc2l6ZV90IG1fYWxsb2NhdGlvbkdyYW51bGU7CiAgICB1bnNpZ25lZCBtX2xvZ0FsbG9j
YXRpb25HcmFudWxlOwogICAgc2l6ZV90IG1fcGFnZVNpemU7CiAgICB1bnNpZ25lZCBtX2xvZ1Bh
Z2VTaXplOwoKICAgIFRyZWUgbV9mcmVlU3BhY2VTaXplTWFwOwogICAgSGFzaE1hcDx2b2lkKiwg
RnJlZVNwYWNlTm9kZSo+IG1fZnJlZVNwYWNlU3RhcnRBZGRyZXNzTWFwOwogICAgSGFzaE1hcDx2
b2lkKiwgRnJlZVNwYWNlTm9kZSo+IG1fZnJlZVNwYWNlRW5kQWRkcmVzc01hcDsKICAgIEhhc2hN
YXA8dWludHB0cl90LCBzaXplX3Q+IG1fcGFnZU9jY3VwYW5jeU1hcDsKCiAgICBzaXplX3QgbV9i
eXRlc0FsbG9jYXRlZDsKICAgIHNpemVfdCBtX2J5dGVzUmVzZXJ2ZWQ7CiAgICBzaXplX3QgbV9i
eXRlc0NvbW1pdHRlZDsKCiAgICBMb2NrIG1fbG9jazsKCiAgICBNZXRhQWxsb2NhdG9yVHJhY2tl
ciogbV90cmFja2VyOwojIDIwMSAiLi4vLi4vU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5o
Igp9OwoKfQojIDM1ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3IuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1BhZ2VBbGxvY2F0aW9uLmgi
IDEKIyAyNyAiLi4vLi4vU291cmNlL1dURi93dGYvUGFnZUFsbG9jYXRpb24uaCIKI2RlZmluZSBQ
YWdlQWxsb2NhdGlvbl9oIAoKCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvT1NBbGxvY2F0b3Iu
aCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oIgojZGVmaW5lIE9T
QWxsb2NhdG9yX2ggCgoKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9WTVRhZ3MuaCIgMQojIDI3
ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9WTVRhZ3MuaCIKI2RlZmluZSBWTVRhZ3NfaCAKIyA2MSAi
Li4vLi4vU291cmNlL1dURi93dGYvVk1UYWdzLmgiCiNkZWZpbmUgVk1fVEFHX0ZPUl9UQ01BTExP
Q19NRU1PUlkgLTEKI2RlZmluZSBWTV9UQUdfRk9SX0NPTExFQ1RPUl9NRU1PUlkgLTEKI2RlZmlu
ZSBWTV9UQUdfRk9SX0VYRUNVVEFCTEVBTExPQ0FUT1JfTUVNT1JZIC0xCiNkZWZpbmUgVk1fVEFH
X0ZPUl9SRUdJU1RFUkZJTEVfTUVNT1JZIC0xCiMgMzEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL09T
QWxsb2NhdG9yLmgiIDIKCm5hbWVzcGFjZSBXVEYgewoKY2xhc3MgT1NBbGxvY2F0b3IgewpwdWJs
aWM6CiAgICBlbnVtIFVzYWdlIHsKICAgICAgICBVbmtub3duVXNhZ2UgPSAtMSwKICAgICAgICBG
YXN0TWFsbG9jUGFnZXMgPSAtMSwKICAgICAgICBKU0dDSGVhcFBhZ2VzID0gLTEsCiAgICAgICAg
SlNWTVN0YWNrUGFnZXMgPSAtMSwKICAgICAgICBKU0pJVENvZGVQYWdlcyA9IC0xLAogICAgfTsK
CgoKCiAgICBzdGF0aWMgdm9pZCogcmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCwgVXNhZ2UgPSBV
bmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxz
ZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7CiAgICBzdGF0aWMgdm9pZCByZWxl
YXNlRGVjb21taXR0ZWQodm9pZCosIHNpemVfdCk7CgoKCgogICAgc3RhdGljIHZvaWQgY29tbWl0
KHZvaWQqLCBzaXplX3QsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSk7CiAgICBzdGF0
aWMgdm9pZCBkZWNvbW1pdCh2b2lkKiwgc2l6ZV90KTsKCgoKCiAgICBzdGF0aWMgdm9pZCogcmVz
ZXJ2ZUFuZENvbW1pdChzaXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxl
ID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2Vz
ID0gZmFsc2UpOwogICAgc3RhdGljIHZvaWQgZGVjb21taXRBbmRSZWxlYXNlKHZvaWQqIGJhc2Us
IHNpemVfdCBzaXplKTsKCgoKCiAgICBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChzaXpl
X3QgcmVzZXJ2ZVNpemUsIHNpemVfdCBjb21taXRTaXplLCBVc2FnZSA9IFVua25vd25Vc2FnZSwg
Ym9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKTsKCgoKCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgc3RhdGljIFQqIHJlYWxsb2NhdGVDb21taXR0ZWQoVCos
IHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJv
b2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSk7CgoKICAgIHN0YXRp
YyB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKHZvaWQqLCBzaXplX3QpOwp9OwoKaW5saW5l
IHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCByZXNlcnZlU2l6ZSwg
c2l6ZV90IGNvbW1pdFNpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1
dGFibGUpCnsKICAgIHZvaWQqIGJhc2UgPSByZXNlcnZlVW5jb21taXR0ZWQocmVzZXJ2ZVNpemUs
IHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSk7CiAgICBjb21taXQoYmFzZSwgY29tbWl0U2l6
ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUpOwogICAgcmV0dXJuIGJhc2U7Cn0KCmlubGluZSB2b2lk
IE9TQWxsb2NhdG9yOjpkZWNvbW1pdEFuZFJlbGVhc2Uodm9pZCogcmVsZWFzZUJhc2UsIHNpemVf
dCByZWxlYXNlU2l6ZSkKewogICAgcmVsZWFzZURlY29tbWl0dGVkKHJlbGVhc2VCYXNlLCByZWxl
YXNlU2l6ZSk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmlubGluZSBUKiBPU0FsbG9jYXRvcjo6
cmVhbGxvY2F0ZUNvbW1pdHRlZChUKiBvbGRCYXNlLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5l
d1NpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUpCnsKICAg
IHZvaWQqIG5ld0Jhc2UgPSByZXNlcnZlQW5kQ29tbWl0KG5ld1NpemUsIHVzYWdlLCB3cml0YWJs
ZSwgZXhlY3V0YWJsZSk7CiAgICBtZW1jcHkobmV3QmFzZSwgb2xkQmFzZSwgc3RkOjptaW4ob2xk
U2l6ZSwgbmV3U2l6ZSkpOwogICAgZGVjb21taXRBbmRSZWxlYXNlKG9sZEJhc2UsIG9sZFNpemUp
OwogICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihuZXdCYXNlKTsKfQoKfQoKdXNpbmcgV1RGOjpP
U0FsbG9jYXRvcjsKIyAzMSAiLi4vLi4vU291cmNlL1dURi93dGYvUGFnZUFsbG9jYXRpb24uaCIg
MgojIDQ2ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9QYWdlQWxsb2NhdGlvbi5oIgojIDEgIi91c3Iv
aW5jbHVkZS9lcnJuby5oIiAxIDMgNAojIDcxICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMyA0CiN1
bmRlZiBfX25lZWRfZXJyb3JfdAojIDQ3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9QYWdlQWxsb2Nh
dGlvbi5oIiAyCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvc3lzL21t
YW4uaCIgMSAzIDQKIyAyMCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvc3lzL21t
YW4uaCIgMyA0CiNkZWZpbmUgX1NZU19NTUFOX0ggMQoKCgojZGVmaW5lIF9fbmVlZF9zaXplX3Qg
CiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4z
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMTU4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBf
X25lZWRfcHRyZGlmZl90CiMgMjM0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfc2l6
ZV90CiMgMzQzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
NC45LjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfd2NoYXJfdAojIDM5NyAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1
ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgTlVMTAoKI2RlZmluZSBOVUxMIF9fbnVsbAojIDQwOCAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1
ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgX19uZWVkX05VTEwKCgoKCiNkZWZpbmUgb2Zmc2V0b2Yo
VFlQRSxNRU1CRVIpIF9fYnVpbHRpbl9vZmZzZXRvZiAoVFlQRSwgTUVNQkVSKQojIDI2ICIvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvbW1hbi5oIiAyIDMgNAojIDQxICIvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvbW1hbi5oIiAzIDQKIyAxICIvdXNyL2lu
Y2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL21tYW4uaCIgMSAzIDQKIyAyOCAiL3Vzci9p
bmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9tbWFuLmgiIDMgNAojZGVmaW5lIE1BUF9H
Uk9XU0RPV04gMHgwMDEwMAojZGVmaW5lIE1BUF9ERU5ZV1JJVEUgMHgwMDgwMAojZGVmaW5lIE1B
UF9FWEVDVVRBQkxFIDB4MDEwMDAKI2RlZmluZSBNQVBfTE9DS0VEIDB4MDIwMDAKI2RlZmluZSBN
QVBfTk9SRVNFUlZFIDB4MDQwMDAKI2RlZmluZSBNQVBfUE9QVUxBVEUgMHgwODAwMAojZGVmaW5l
IE1BUF9OT05CTE9DSyAweDEwMDAwCiNkZWZpbmUgTUFQX1NUQUNLIDB4MjAwMDAKI2RlZmluZSBN
QVBfSFVHRVRMQiAweDQwMDAwCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJp
aGYvYml0cy9tbWFuLWxpbnV4LmgiIDEgMyA0CiMgMzIgIi91c3IvaW5jbHVkZS9hcm0tbGludXgt
Z251ZWFiaWhmL2JpdHMvbW1hbi1saW51eC5oIiAzIDQKI2RlZmluZSBQUk9UX1JFQUQgMHgxCiNk
ZWZpbmUgUFJPVF9XUklURSAweDIKI2RlZmluZSBQUk9UX0VYRUMgMHg0CiNkZWZpbmUgUFJPVF9O
T05FIDB4MAojZGVmaW5lIFBST1RfR1JPV1NET1dOIDB4MDEwMDAwMDAKCiNkZWZpbmUgUFJPVF9H
Uk9XU1VQIDB4MDIwMDAwMDAKCgoKI2RlZmluZSBNQVBfU0hBUkVEIDB4MDEKI2RlZmluZSBNQVBf
UFJJVkFURSAweDAyCgojZGVmaW5lIE1BUF9UWVBFIDB4MGYKCgoKI2RlZmluZSBNQVBfRklYRUQg
MHgxMAoKI2RlZmluZSBNQVBfRklMRSAwCgoKCiNkZWZpbmUgTUFQX0FOT05ZTU9VUyAweDIwCgoj
ZGVmaW5lIE1BUF9BTk9OIE1BUF9BTk9OWU1PVVMKCiNkZWZpbmUgTUFQX0hVR0VfU0hJRlQgMjYK
I2RlZmluZSBNQVBfSFVHRV9NQVNLIDB4M2YKCgoKI2RlZmluZSBNU19BU1lOQyAxCiNkZWZpbmUg
TVNfU1lOQyA0CiNkZWZpbmUgTVNfSU5WQUxJREFURSAyCgoKCiNkZWZpbmUgTVJFTUFQX01BWU1P
VkUgMQojZGVmaW5lIE1SRU1BUF9GSVhFRCAyCgoKCgojZGVmaW5lIE1BRFZfTk9STUFMIDAKI2Rl
ZmluZSBNQURWX1JBTkRPTSAxCiNkZWZpbmUgTUFEVl9TRVFVRU5USUFMIDIKI2RlZmluZSBNQURW
X1dJTExORUVEIDMKI2RlZmluZSBNQURWX0RPTlRORUVEIDQKI2RlZmluZSBNQURWX1JFTU9WRSA5
CiNkZWZpbmUgTUFEVl9ET05URk9SSyAxMAojZGVmaW5lIE1BRFZfRE9GT1JLIDExCiNkZWZpbmUg
TUFEVl9NRVJHRUFCTEUgMTIKI2RlZmluZSBNQURWX1VOTUVSR0VBQkxFIDEzCiNkZWZpbmUgTUFE
Vl9IVUdFUEFHRSAxNAojZGVmaW5lIE1BRFZfTk9IVUdFUEFHRSAxNQojZGVmaW5lIE1BRFZfRE9O
VERVTVAgMTYKCiNkZWZpbmUgTUFEVl9ET0RVTVAgMTcKI2RlZmluZSBNQURWX0hXUE9JU09OIDEw
MAoKCgoKI2RlZmluZSBQT1NJWF9NQURWX05PUk1BTCAwCiNkZWZpbmUgUE9TSVhfTUFEVl9SQU5E
T00gMQojZGVmaW5lIFBPU0lYX01BRFZfU0VRVUVOVElBTCAyCiNkZWZpbmUgUE9TSVhfTUFEVl9X
SUxMTkVFRCAzCiNkZWZpbmUgUE9TSVhfTUFEVl9ET05UTkVFRCA0CgoKCgojZGVmaW5lIE1DTF9D
VVJSRU5UIDEKI2RlZmluZSBNQ0xfRlVUVVJFIDIKIyA0MCAiL3Vzci9pbmNsdWRlL2FybS1saW51
eC1nbnVlYWJpaGYvYml0cy9tbWFuLmgiIDIgMyA0CiMgNDIgIi91c3IvaW5jbHVkZS9hcm0tbGlu
dXgtZ251ZWFiaWhmL3N5cy9tbWFuLmgiIDIgMyA0CgoKI2RlZmluZSBNQVBfRkFJTEVEICgodm9p
ZCAqKSAtMSkKCmV4dGVybiAiQyIgewojIDU3ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVh
YmloZi9zeXMvbW1hbi5oIiAzIDQKZXh0ZXJuIHZvaWQgKm1tYXAgKHZvaWQgKl9fYWRkciwgc2l6
ZV90IF9fbGVuLCBpbnQgX19wcm90LAogICAgIGludCBfX2ZsYWdzLCBpbnQgX19mZCwgX19vZmZf
dCBfX29mZnNldCkgdGhyb3cgKCk7CiMgNzAgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFi
aWhmL3N5cy9tbWFuLmgiIDMgNApleHRlcm4gdm9pZCAqbW1hcDY0ICh2b2lkICpfX2FkZHIsIHNp
emVfdCBfX2xlbiwgaW50IF9fcHJvdCwKICAgICAgIGludCBfX2ZsYWdzLCBpbnQgX19mZCwgX19v
ZmY2NF90IF9fb2Zmc2V0KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgbXVubWFwICh2b2lkICpf
X2FkZHIsIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IG1wcm90ZWN0ICh2
b2lkICpfX2FkZHIsIHNpemVfdCBfX2xlbiwgaW50IF9fcHJvdCkgdGhyb3cgKCk7CgoKCgoKCgpl
eHRlcm4gaW50IG1zeW5jICh2b2lkICpfX2FkZHIsIHNpemVfdCBfX2xlbiwgaW50IF9fZmxhZ3Mp
OwoKCgoKZXh0ZXJuIGludCBtYWR2aXNlICh2b2lkICpfX2FkZHIsIHNpemVfdCBfX2xlbiwgaW50
IF9fYWR2aWNlKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBwb3NpeF9tYWR2aXNlICh2b2lkICpf
X2FkZHIsIHNpemVfdCBfX2xlbiwgaW50IF9fYWR2aWNlKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBp
bnQgbWxvY2sgKGNvbnN0IHZvaWQgKl9fYWRkciwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgpl
eHRlcm4gaW50IG11bmxvY2sgKGNvbnN0IHZvaWQgKl9fYWRkciwgc2l6ZV90IF9fbGVuKSB0aHJv
dyAoKTsKCgoKCmV4dGVybiBpbnQgbWxvY2thbGwgKGludCBfX2ZsYWdzKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGludCBtdW5sb2NrYWxsICh2b2lkKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQg
bWluY29yZSAodm9pZCAqX19zdGFydCwgc2l6ZV90IF9fbGVuLCB1bnNpZ25lZCBjaGFyICpfX3Zl
YykKICAgICB0aHJvdyAoKTsKIyAxMzMgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L3N5cy9tbWFuLmgiIDMgNApleHRlcm4gdm9pZCAqbXJlbWFwICh2b2lkICpfX2FkZHIsIHNpemVf
dCBfX29sZF9sZW4sIHNpemVfdCBfX25ld19sZW4sCiAgICAgICBpbnQgX19mbGFncywgLi4uKSB0
aHJvdyAoKTsKCgoKZXh0ZXJuIGludCByZW1hcF9maWxlX3BhZ2VzICh2b2lkICpfX3N0YXJ0LCBz
aXplX3QgX19zaXplLCBpbnQgX19wcm90LAogICAgICAgIHNpemVfdCBfX3Bnb2ZmLCBpbnQgX19m
bGFncykgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHNobV9vcGVuIChjb25zdCBjaGFyICpfX25h
bWUsIGludCBfX29mbGFnLCBtb2RlX3QgX19tb2RlKTsKCgpleHRlcm4gaW50IHNobV91bmxpbmsg
KGNvbnN0IGNoYXIgKl9fbmFtZSk7Cgp9CiMgNTEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1BhZ2VB
bGxvY2F0aW9uLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDEgMyA0CiMgMjMgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CiNkZWZpbmUgX1VOSVNURF9IIDEKCgoKZXh0ZXJuICJD
IiB7CgoKCgoKCiNkZWZpbmUgX1BPU0lYX1ZFUlNJT04gMjAwODA5TAojIDUzICIvdXNyL2luY2x1
ZGUvdW5pc3RkLmgiIDMgNAojZGVmaW5lIF9fUE9TSVgyX1RISVNfVkVSU0lPTiAyMDA4MDlMCiMg
NjcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CiNkZWZpbmUgX1BPU0lYMl9WRVJTSU9OIF9f
UE9TSVgyX1RISVNfVkVSU0lPTgoKCgojZGVmaW5lIF9QT1NJWDJfQ19CSU5EIF9fUE9TSVgyX1RI
SVNfVkVSU0lPTgoKCgojZGVmaW5lIF9QT1NJWDJfQ19ERVYgX19QT1NJWDJfVEhJU19WRVJTSU9O
CgoKCiNkZWZpbmUgX1BPU0lYMl9TV19ERVYgX19QT1NJWDJfVEhJU19WRVJTSU9OCgoKCiNkZWZp
bmUgX1BPU0lYMl9MT0NBTEVERUYgX19QT1NJWDJfVEhJU19WRVJTSU9OCgoKCiNkZWZpbmUgX1hP
UEVOX1ZFUlNJT04gNzAwCiMgOTcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CiNkZWZpbmUg
X1hPUEVOX1hDVV9WRVJTSU9OIDQKCgojZGVmaW5lIF9YT1BFTl9YUEcyIDEKI2RlZmluZSBfWE9Q
RU5fWFBHMyAxCiNkZWZpbmUgX1hPUEVOX1hQRzQgMQoKCiNkZWZpbmUgX1hPUEVOX1VOSVggMQoK
CiNkZWZpbmUgX1hPUEVOX0NSWVBUIDEKCgoKI2RlZmluZSBfWE9QRU5fRU5IX0kxOE4gMQoKCiNk
ZWZpbmUgX1hPUEVOX0xFR0FDWSAxCiMgMjAyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAoj
IDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvcG9zaXhfb3B0LmgiIDEg
MyA0CiMgMjAgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvcG9zaXhfb3B0
LmgiIDMgNAojZGVmaW5lIF9CSVRTX1BPU0lYX09QVF9IIDEKCgojZGVmaW5lIF9QT1NJWF9KT0Jf
Q09OVFJPTCAxCgoKI2RlZmluZSBfUE9TSVhfU0FWRURfSURTIDEKCgojZGVmaW5lIF9QT1NJWF9Q
UklPUklUWV9TQ0hFRFVMSU5HIDIwMDgwOUwKCgojZGVmaW5lIF9QT1NJWF9TWU5DSFJPTklaRURf
SU8gMjAwODA5TAoKCiNkZWZpbmUgX1BPU0lYX0ZTWU5DIDIwMDgwOUwKCgojZGVmaW5lIF9QT1NJ
WF9NQVBQRURfRklMRVMgMjAwODA5TAoKCiNkZWZpbmUgX1BPU0lYX01FTUxPQ0sgMjAwODA5TAoK
CiNkZWZpbmUgX1BPU0lYX01FTUxPQ0tfUkFOR0UgMjAwODA5TAoKCiNkZWZpbmUgX1BPU0lYX01F
TU9SWV9QUk9URUNUSU9OIDIwMDgwOUwKCgojZGVmaW5lIF9QT1NJWF9DSE9XTl9SRVNUUklDVEVE
IDAKCgoKI2RlZmluZSBfUE9TSVhfVkRJU0FCTEUgJ1wwJwoKCiNkZWZpbmUgX1BPU0lYX05PX1RS
VU5DIDEKCgojZGVmaW5lIF9YT1BFTl9SRUFMVElNRSAxCgoKI2RlZmluZSBfWE9QRU5fUkVBTFRJ
TUVfVEhSRUFEUyAxCgoKI2RlZmluZSBfWE9QRU5fU0hNIDEKCgojZGVmaW5lIF9QT1NJWF9USFJF
QURTIDIwMDgwOUwKCgojZGVmaW5lIF9QT1NJWF9SRUVOVFJBTlRfRlVOQ1RJT05TIDEKI2RlZmlu
ZSBfUE9TSVhfVEhSRUFEX1NBRkVfRlVOQ1RJT05TIDIwMDgwOUwKCgojZGVmaW5lIF9QT1NJWF9U
SFJFQURfUFJJT1JJVFlfU0NIRURVTElORyAyMDA4MDlMCgoKI2RlZmluZSBfUE9TSVhfVEhSRUFE
X0FUVFJfU1RBQ0tTSVpFIDIwMDgwOUwKCgojZGVmaW5lIF9QT1NJWF9USFJFQURfQVRUUl9TVEFD
S0FERFIgMjAwODA5TAoKCiNkZWZpbmUgX1BPU0lYX1RIUkVBRF9QUklPX0lOSEVSSVQgMjAwODA5
TAoKCgojZGVmaW5lIF9QT1NJWF9USFJFQURfUFJJT19QUk9URUNUIDIwMDgwOUwKCgoKI2RlZmlu
ZSBfUE9TSVhfVEhSRUFEX1JPQlVTVF9QUklPX0lOSEVSSVQgMjAwODA5TAoKCiNkZWZpbmUgX1BP
U0lYX1RIUkVBRF9ST0JVU1RfUFJJT19QUk9URUNUIC0xCgoKCiNkZWZpbmUgX1BPU0lYX1NFTUFQ
SE9SRVMgMjAwODA5TAoKCiNkZWZpbmUgX1BPU0lYX1JFQUxUSU1FX1NJR05BTFMgMjAwODA5TAoK
CiNkZWZpbmUgX1BPU0lYX0FTWU5DSFJPTk9VU19JTyAyMDA4MDlMCiNkZWZpbmUgX1BPU0lYX0FT
WU5DX0lPIDEKCiNkZWZpbmUgX0xGU19BU1lOQ0hST05PVVNfSU8gMQoKI2RlZmluZSBfUE9TSVhf
UFJJT1JJVElaRURfSU8gMjAwODA5TAoKCiNkZWZpbmUgX0xGUzY0X0FTWU5DSFJPTk9VU19JTyAx
CgoKI2RlZmluZSBfTEZTX0xBUkdFRklMRSAxCiNkZWZpbmUgX0xGUzY0X0xBUkdFRklMRSAxCiNk
ZWZpbmUgX0xGUzY0X1NURElPIDEKCgojZGVmaW5lIF9QT1NJWF9TSEFSRURfTUVNT1JZX09CSkVD
VFMgMjAwODA5TAoKCiNkZWZpbmUgX1BPU0lYX0NQVVRJTUUgMAoKCiNkZWZpbmUgX1BPU0lYX1RI
UkVBRF9DUFVUSU1FIDAKCgojZGVmaW5lIF9QT1NJWF9SRUdFWFAgMQoKCiNkZWZpbmUgX1BPU0lY
X1JFQURFUl9XUklURVJfTE9DS1MgMjAwODA5TAoKCiNkZWZpbmUgX1BPU0lYX1NIRUxMIDEKCgoj
ZGVmaW5lIF9QT1NJWF9USU1FT1VUUyAyMDA4MDlMCgoKI2RlZmluZSBfUE9TSVhfU1BJTl9MT0NL
UyAyMDA4MDlMCgoKI2RlZmluZSBfUE9TSVhfU1BBV04gMjAwODA5TAoKCiNkZWZpbmUgX1BPU0lY
X1RJTUVSUyAyMDA4MDlMCgoKI2RlZmluZSBfUE9TSVhfQkFSUklFUlMgMjAwODA5TAoKCiNkZWZp
bmUgX1BPU0lYX01FU1NBR0VfUEFTU0lORyAyMDA4MDlMCgoKI2RlZmluZSBfUE9TSVhfVEhSRUFE
X1BST0NFU1NfU0hBUkVEIDIwMDgwOUwKCgojZGVmaW5lIF9QT1NJWF9NT05PVE9OSUNfQ0xPQ0sg
MAoKCiNkZWZpbmUgX1BPU0lYX0NMT0NLX1NFTEVDVElPTiAyMDA4MDlMCgoKI2RlZmluZSBfUE9T
SVhfQURWSVNPUllfSU5GTyAyMDA4MDlMCgoKI2RlZmluZSBfUE9TSVhfSVBWNiAyMDA4MDlMCgoK
I2RlZmluZSBfUE9TSVhfUkFXX1NPQ0tFVFMgMjAwODA5TAoKCiNkZWZpbmUgX1BPU0lYMl9DSEFS
X1RFUk0gMjAwODA5TAoKCiNkZWZpbmUgX1BPU0lYX1NQT1JBRElDX1NFUlZFUiAtMQojZGVmaW5l
IF9QT1NJWF9USFJFQURfU1BPUkFESUNfU0VSVkVSIC0xCgoKI2RlZmluZSBfUE9TSVhfVFJBQ0Ug
LTEKI2RlZmluZSBfUE9TSVhfVFJBQ0VfRVZFTlRfRklMVEVSIC0xCiNkZWZpbmUgX1BPU0lYX1RS
QUNFX0lOSEVSSVQgLTEKI2RlZmluZSBfUE9TSVhfVFJBQ0VfTE9HIC0xCgoKI2RlZmluZSBfUE9T
SVhfVFlQRURfTUVNT1JZX09CSkVDVFMgLTEKIyAyMDMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIg
MiAzIDQKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL2Vudmly
b25tZW50cy5oIiAxIDMgNAojIDIyICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9i
aXRzL2Vudmlyb25tZW50cy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVh
YmloZi9iaXRzL3dvcmRzaXplLmgiIDEgMyA0CiMgMTggIi91c3IvaW5jbHVkZS9hcm0tbGludXgt
Z251ZWFiaWhmL2JpdHMvd29yZHNpemUuaCIgMyA0CiNkZWZpbmUgX19XT1JEU0laRSAzMgojIDIz
ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL2Vudmlyb25tZW50cy5oIiAy
IDMgNAojIDY2ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL2Vudmlyb25t
ZW50cy5oIiAzIDQKI2RlZmluZSBfUE9TSVhfVjdfSUxQMzJfT0ZGMzIgMQojZGVmaW5lIF9QT1NJ
WF9WN19JTFAzMl9PRkZCSUcgMQojZGVmaW5lIF9QT1NJWF9WNl9JTFAzMl9PRkYzMiAxCiNkZWZp
bmUgX1BPU0lYX1Y2X0lMUDMyX09GRkJJRyAxCiNkZWZpbmUgX1hCUzVfSUxQMzJfT0ZGMzIgMQoj
ZGVmaW5lIF9YQlM1X0lMUDMyX09GRkJJRyAxCgoKCgoKI2RlZmluZSBfUE9TSVhfVjdfTFA2NF9P
RkY2NCAtMQojZGVmaW5lIF9QT1NJWF9WN19MUEJJR19PRkZCSUcgLTEKI2RlZmluZSBfUE9TSVhf
VjZfTFA2NF9PRkY2NCAtMQojZGVmaW5lIF9QT1NJWF9WNl9MUEJJR19PRkZCSUcgLTEKI2RlZmlu
ZSBfWEJTNV9MUDY0X09GRjY0IC0xCiNkZWZpbmUgX1hCUzVfTFBCSUdfT0ZGQklHIC0xCgoKI2Rl
ZmluZSBfX0lMUDMyX09GRkJJR19DRkxBR1MgIi1EX0xBUkdFRklMRV9TT1VSQ0UgLURfRklMRV9P
RkZTRVRfQklUUz02NCIKIyAyMDcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKCgoKI2Rl
ZmluZSBTVERJTl9GSUxFTk8gMAojZGVmaW5lIFNURE9VVF9GSUxFTk8gMQojZGVmaW5lIFNUREVS
Ul9GSUxFTk8gMgojIDIyNCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKI2RlZmluZSBfX25l
ZWRfc2l6ZV90IAojZGVmaW5lIF9fbmVlZF9OVUxMIAojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2Nj
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAoj
IDE1OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4z
L2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgX19uZWVkX3B0cmRpZmZfdAojIDIzNCAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45
LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUv
c3RkZGVmLmgiIDMgNAojdW5kZWYgX19uZWVkX3NpemVfdAojIDM0MyAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2xp
Yi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMg
NAojdW5kZWYgX19uZWVkX3djaGFyX3QKIyAzOTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIE5V
TEwKCiNkZWZpbmUgTlVMTCBfX251bGwKIyA0MDggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9f
bmVlZF9OVUxMCgoKCgojZGVmaW5lIG9mZnNldG9mKFRZUEUsTUVNQkVSKSBfX2J1aWx0aW5fb2Zm
c2V0b2YgKFRZUEUsIE1FTUJFUikKIyAyMjcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzIDQK
IyAyNzQgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CnR5cGVkZWYgX19zb2NrbGVuX3Qgc29j
a2xlbl90OwojZGVmaW5lIF9fc29ja2xlbl90X2RlZmluZWQgCgoKCgoKI2RlZmluZSBSX09LIDQK
I2RlZmluZSBXX09LIDIKI2RlZmluZSBYX09LIDEKI2RlZmluZSBGX09LIDAKCgpleHRlcm4gaW50
IGFjY2VzcyAoY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX190eXBlKSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgpleHRlcm4gaW50IGV1aWRhY2Nlc3MgKGNv
bnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fdHlwZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBlYWNjZXNzIChjb25zdCBjaGFyICpf
X25hbWUsIGludCBfX3R5cGUpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs
bF9fICgxKSkpOwoKCgoKCgpleHRlcm4gaW50IGZhY2Nlc3NhdCAoaW50IF9fZmQsIGNvbnN0IGNo
YXIgKl9fZmlsZSwgaW50IF9fdHlwZSwgaW50IF9fZmxhZykKICAgICB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19ub25udWxsX18gKDIpKSkgOwojIDMyMiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5o
IiAzIDQKI2RlZmluZSBMX1NFVCBTRUVLX1NFVAojZGVmaW5lIExfSU5DUiBTRUVLX0NVUgojZGVm
aW5lIExfWFRORCBTRUVLX0VORAojIDMzNCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0
ZXJuIF9fb2ZmX3QgbHNlZWsgKGludCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0LCBpbnQgX193aGVu
Y2UpIHRocm93ICgpOwojIDM0NSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIF9f
b2ZmNjRfdCBsc2VlazY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBpbnQgX193aGVu
Y2UpCiAgICAgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgY2xvc2UgKGludCBfX2ZkKTsKCgoK
CgoKZXh0ZXJuIHNzaXplX3QgcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19u
Ynl0ZXMpIDsKCgoKCgpleHRlcm4gc3NpemVfdCB3cml0ZSAoaW50IF9fZmQsIGNvbnN0IHZvaWQg
Kl9fYnVmLCBzaXplX3QgX19uKSA7CiMgMzc2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApl
eHRlcm4gc3NpemVfdCBwcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0
ZXMsCiAgICAgICAgX19vZmZfdCBfX29mZnNldCkgOwoKCgoKCgpleHRlcm4gc3NpemVfdCBwd3Jp
dGUgKGludCBfX2ZkLCBjb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbiwKICAgICAgICAgX19v
ZmZfdCBfX29mZnNldCkgOwojIDQwNCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJu
IHNzaXplX3QgcHJlYWQ2NCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMs
CiAgIF9fb2ZmNjRfdCBfX29mZnNldCkgOwoKCmV4dGVybiBzc2l6ZV90IHB3cml0ZTY0IChpbnQg
X19mZCwgY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24sCiAgICBfX29mZjY0X3QgX19vZmZz
ZXQpIDsKCgoKCgoKCmV4dGVybiBpbnQgcGlwZSAoaW50IF9fcGlwZWRlc1syXSkgdGhyb3cgKCkg
OwoKCgoKZXh0ZXJuIGludCBwaXBlMiAoaW50IF9fcGlwZWRlc1syXSwgaW50IF9fZmxhZ3MpIHRo
cm93ICgpIDsKIyA0MzIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiB1bnNpZ25l
ZCBpbnQgYWxhcm0gKHVuc2lnbmVkIGludCBfX3NlY29uZHMpIHRocm93ICgpOwojIDQ0NCAiL3Vz
ci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIHVuc2lnbmVkIGludCBzbGVlcCAodW5zaWdu
ZWQgaW50IF9fc2Vjb25kcyk7CgoKCgoKCgpleHRlcm4gX191c2Vjb25kc190IHVhbGFybSAoX191
c2Vjb25kc190IF9fdmFsdWUsIF9fdXNlY29uZHNfdCBfX2ludGVydmFsKQogICAgIHRocm93ICgp
OwoKCgoKCgpleHRlcm4gaW50IHVzbGVlcCAoX191c2Vjb25kc190IF9fdXNlY29uZHMpOwojIDQ2
OSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGludCBwYXVzZSAodm9pZCk7CgoK
CmV4dGVybiBpbnQgY2hvd24gKGNvbnN0IGNoYXIgKl9fZmlsZSwgX191aWRfdCBfX293bmVyLCBf
X2dpZF90IF9fZ3JvdXApCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f
ICgxKSkpIDsKCgoKZXh0ZXJuIGludCBmY2hvd24gKGludCBfX2ZkLCBfX3VpZF90IF9fb3duZXIs
IF9fZ2lkX3QgX19ncm91cCkgdGhyb3cgKCkgOwoKCgoKZXh0ZXJuIGludCBsY2hvd24gKGNvbnN0
IGNoYXIgKl9fZmlsZSwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKCgoKZXh0ZXJuIGlu
dCBmY2hvd25hdCAoaW50IF9fZmQsIGNvbnN0IGNoYXIgKl9fZmlsZSwgX191aWRfdCBfX293bmVy
LAogICAgICAgX19naWRfdCBfX2dyb3VwLCBpbnQgX19mbGFnKQogICAgIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKSA7CgoKCmV4dGVybiBpbnQgY2hkaXIgKGNvbnN0
IGNoYXIgKl9fcGF0aCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp
IDsKCgoKZXh0ZXJuIGludCBmY2hkaXIgKGludCBfX2ZkKSB0aHJvdyAoKSA7CiMgNTExICIvdXNy
L2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gY2hhciAqZ2V0Y3dkIChjaGFyICpfX2J1Ziwg
c2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCkgOwoKCgoKCmV4dGVybiBjaGFyICpnZXRfY3VycmVudF9k
aXJfbmFtZSAodm9pZCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gY2hhciAqZ2V0d2QgKGNoYXIg
Kl9fYnVmKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSBf
X2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKSA7CgoKCgpleHRlcm4gaW50IGR1cCAoaW50
IF9fZmQpIHRocm93ICgpIDsKCgpleHRlcm4gaW50IGR1cDIgKGludCBfX2ZkLCBpbnQgX19mZDIp
IHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBkdXAzIChpbnQgX19mZCwgaW50IF9fZmQyLCBpbnQg
X19mbGFncykgdGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICoqX19lbnZpcm9uOwoKZXh0ZXJuIGNo
YXIgKiplbnZpcm9uOwoKCgoKCmV4dGVybiBpbnQgZXhlY3ZlIChjb25zdCBjaGFyICpfX3BhdGgs
IGNoYXIgKmNvbnN0IF9fYXJndltdLAogICAgIGNoYXIgKmNvbnN0IF9fZW52cFtdKSB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgpleHRlcm4gaW50IGZl
eGVjdmUgKGludCBfX2ZkLCBjaGFyICpjb25zdCBfX2FyZ3ZbXSwgY2hhciAqY29uc3QgX19lbnZw
W10pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwoKCgoK
ZXh0ZXJuIGludCBleGVjdiAoY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpjb25zdCBfX2FyZ3Zb
XSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoK
CmV4dGVybiBpbnQgZXhlY2xlIChjb25zdCBjaGFyICpfX3BhdGgsIGNvbnN0IGNoYXIgKl9fYXJn
LCAuLi4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkp
OwoKCgpleHRlcm4gaW50IGV4ZWNsIChjb25zdCBjaGFyICpfX3BhdGgsIGNvbnN0IGNoYXIgKl9f
YXJnLCAuLi4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAy
KSkpOwoKCgpleHRlcm4gaW50IGV4ZWN2cCAoY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpjb25z
dCBfX2FyZ3ZbXSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs
IDIpKSk7CgoKCgpleHRlcm4gaW50IGV4ZWNscCAoY29uc3QgY2hhciAqX19maWxlLCBjb25zdCBj
aGFyICpfX2FyZywgLi4uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSwgMikpKTsKCgoKCmV4dGVybiBpbnQgZXhlY3ZwZSAoY29uc3QgY2hhciAqX19maWxlLCBj
aGFyICpjb25zdCBfX2FyZ3ZbXSwKICAgICAgY2hhciAqY29uc3QgX19lbnZwW10pCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKCmV4dGVybiBp
bnQgbmljZSAoaW50IF9faW5jKSB0aHJvdyAoKSA7CgoKCgpleHRlcm4gdm9pZCBfZXhpdCAoaW50
IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoKIyAxICIvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL2NvbmZuYW1lLmgiIDEgMyA0CiMgMjQg
Ii91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvY29uZm5hbWUuaCIgMyA0CmVu
dW0KICB7CiAgICBfUENfTElOS19NQVgsCiNkZWZpbmUgX1BDX0xJTktfTUFYIF9QQ19MSU5LX01B
WAogICAgX1BDX01BWF9DQU5PTiwKI2RlZmluZSBfUENfTUFYX0NBTk9OIF9QQ19NQVhfQ0FOT04K
ICAgIF9QQ19NQVhfSU5QVVQsCiNkZWZpbmUgX1BDX01BWF9JTlBVVCBfUENfTUFYX0lOUFVUCiAg
ICBfUENfTkFNRV9NQVgsCiNkZWZpbmUgX1BDX05BTUVfTUFYIF9QQ19OQU1FX01BWAogICAgX1BD
X1BBVEhfTUFYLAojZGVmaW5lIF9QQ19QQVRIX01BWCBfUENfUEFUSF9NQVgKICAgIF9QQ19QSVBF
X0JVRiwKI2RlZmluZSBfUENfUElQRV9CVUYgX1BDX1BJUEVfQlVGCiAgICBfUENfQ0hPV05fUkVT
VFJJQ1RFRCwKI2RlZmluZSBfUENfQ0hPV05fUkVTVFJJQ1RFRCBfUENfQ0hPV05fUkVTVFJJQ1RF
RAogICAgX1BDX05PX1RSVU5DLAojZGVmaW5lIF9QQ19OT19UUlVOQyBfUENfTk9fVFJVTkMKICAg
IF9QQ19WRElTQUJMRSwKI2RlZmluZSBfUENfVkRJU0FCTEUgX1BDX1ZESVNBQkxFCiAgICBfUENf
U1lOQ19JTywKI2RlZmluZSBfUENfU1lOQ19JTyBfUENfU1lOQ19JTwogICAgX1BDX0FTWU5DX0lP
LAojZGVmaW5lIF9QQ19BU1lOQ19JTyBfUENfQVNZTkNfSU8KICAgIF9QQ19QUklPX0lPLAojZGVm
aW5lIF9QQ19QUklPX0lPIF9QQ19QUklPX0lPCiAgICBfUENfU09DS19NQVhCVUYsCiNkZWZpbmUg
X1BDX1NPQ0tfTUFYQlVGIF9QQ19TT0NLX01BWEJVRgogICAgX1BDX0ZJTEVTSVpFQklUUywKI2Rl
ZmluZSBfUENfRklMRVNJWkVCSVRTIF9QQ19GSUxFU0laRUJJVFMKICAgIF9QQ19SRUNfSU5DUl9Y
RkVSX1NJWkUsCiNkZWZpbmUgX1BDX1JFQ19JTkNSX1hGRVJfU0laRSBfUENfUkVDX0lOQ1JfWEZF
Ul9TSVpFCiAgICBfUENfUkVDX01BWF9YRkVSX1NJWkUsCiNkZWZpbmUgX1BDX1JFQ19NQVhfWEZF
Ul9TSVpFIF9QQ19SRUNfTUFYX1hGRVJfU0laRQogICAgX1BDX1JFQ19NSU5fWEZFUl9TSVpFLAoj
ZGVmaW5lIF9QQ19SRUNfTUlOX1hGRVJfU0laRSBfUENfUkVDX01JTl9YRkVSX1NJWkUKICAgIF9Q
Q19SRUNfWEZFUl9BTElHTiwKI2RlZmluZSBfUENfUkVDX1hGRVJfQUxJR04gX1BDX1JFQ19YRkVS
X0FMSUdOCiAgICBfUENfQUxMT0NfU0laRV9NSU4sCiNkZWZpbmUgX1BDX0FMTE9DX1NJWkVfTUlO
IF9QQ19BTExPQ19TSVpFX01JTgogICAgX1BDX1NZTUxJTktfTUFYLAojZGVmaW5lIF9QQ19TWU1M
SU5LX01BWCBfUENfU1lNTElOS19NQVgKICAgIF9QQ18yX1NZTUxJTktTCiNkZWZpbmUgX1BDXzJf
U1lNTElOS1MgX1BDXzJfU1lNTElOS1MKICB9OwoKCmVudW0KICB7CiAgICBfU0NfQVJHX01BWCwK
I2RlZmluZSBfU0NfQVJHX01BWCBfU0NfQVJHX01BWAogICAgX1NDX0NISUxEX01BWCwKI2RlZmlu
ZSBfU0NfQ0hJTERfTUFYIF9TQ19DSElMRF9NQVgKICAgIF9TQ19DTEtfVENLLAojZGVmaW5lIF9T
Q19DTEtfVENLIF9TQ19DTEtfVENLCiAgICBfU0NfTkdST1VQU19NQVgsCiNkZWZpbmUgX1NDX05H
Uk9VUFNfTUFYIF9TQ19OR1JPVVBTX01BWAogICAgX1NDX09QRU5fTUFYLAojZGVmaW5lIF9TQ19P
UEVOX01BWCBfU0NfT1BFTl9NQVgKICAgIF9TQ19TVFJFQU1fTUFYLAojZGVmaW5lIF9TQ19TVFJF
QU1fTUFYIF9TQ19TVFJFQU1fTUFYCiAgICBfU0NfVFpOQU1FX01BWCwKI2RlZmluZSBfU0NfVFpO
QU1FX01BWCBfU0NfVFpOQU1FX01BWAogICAgX1NDX0pPQl9DT05UUk9MLAojZGVmaW5lIF9TQ19K
T0JfQ09OVFJPTCBfU0NfSk9CX0NPTlRST0wKICAgIF9TQ19TQVZFRF9JRFMsCiNkZWZpbmUgX1ND
X1NBVkVEX0lEUyBfU0NfU0FWRURfSURTCiAgICBfU0NfUkVBTFRJTUVfU0lHTkFMUywKI2RlZmlu
ZSBfU0NfUkVBTFRJTUVfU0lHTkFMUyBfU0NfUkVBTFRJTUVfU0lHTkFMUwogICAgX1NDX1BSSU9S
SVRZX1NDSEVEVUxJTkcsCiNkZWZpbmUgX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcgX1NDX1BSSU9S
SVRZX1NDSEVEVUxJTkcKICAgIF9TQ19USU1FUlMsCiNkZWZpbmUgX1NDX1RJTUVSUyBfU0NfVElN
RVJTCiAgICBfU0NfQVNZTkNIUk9OT1VTX0lPLAojZGVmaW5lIF9TQ19BU1lOQ0hST05PVVNfSU8g
X1NDX0FTWU5DSFJPTk9VU19JTwogICAgX1NDX1BSSU9SSVRJWkVEX0lPLAojZGVmaW5lIF9TQ19Q
UklPUklUSVpFRF9JTyBfU0NfUFJJT1JJVElaRURfSU8KICAgIF9TQ19TWU5DSFJPTklaRURfSU8s
CiNkZWZpbmUgX1NDX1NZTkNIUk9OSVpFRF9JTyBfU0NfU1lOQ0hST05JWkVEX0lPCiAgICBfU0Nf
RlNZTkMsCiNkZWZpbmUgX1NDX0ZTWU5DIF9TQ19GU1lOQwogICAgX1NDX01BUFBFRF9GSUxFUywK
I2RlZmluZSBfU0NfTUFQUEVEX0ZJTEVTIF9TQ19NQVBQRURfRklMRVMKICAgIF9TQ19NRU1MT0NL
LAojZGVmaW5lIF9TQ19NRU1MT0NLIF9TQ19NRU1MT0NLCiAgICBfU0NfTUVNTE9DS19SQU5HRSwK
I2RlZmluZSBfU0NfTUVNTE9DS19SQU5HRSBfU0NfTUVNTE9DS19SQU5HRQogICAgX1NDX01FTU9S
WV9QUk9URUNUSU9OLAojZGVmaW5lIF9TQ19NRU1PUllfUFJPVEVDVElPTiBfU0NfTUVNT1JZX1BS
T1RFQ1RJT04KICAgIF9TQ19NRVNTQUdFX1BBU1NJTkcsCiNkZWZpbmUgX1NDX01FU1NBR0VfUEFT
U0lORyBfU0NfTUVTU0FHRV9QQVNTSU5HCiAgICBfU0NfU0VNQVBIT1JFUywKI2RlZmluZSBfU0Nf
U0VNQVBIT1JFUyBfU0NfU0VNQVBIT1JFUwogICAgX1NDX1NIQVJFRF9NRU1PUllfT0JKRUNUUywK
I2RlZmluZSBfU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTIF9TQ19TSEFSRURfTUVNT1JZX09CSkVD
VFMKICAgIF9TQ19BSU9fTElTVElPX01BWCwKI2RlZmluZSBfU0NfQUlPX0xJU1RJT19NQVggX1ND
X0FJT19MSVNUSU9fTUFYCiAgICBfU0NfQUlPX01BWCwKI2RlZmluZSBfU0NfQUlPX01BWCBfU0Nf
QUlPX01BWAogICAgX1NDX0FJT19QUklPX0RFTFRBX01BWCwKI2RlZmluZSBfU0NfQUlPX1BSSU9f
REVMVEFfTUFYIF9TQ19BSU9fUFJJT19ERUxUQV9NQVgKICAgIF9TQ19ERUxBWVRJTUVSX01BWCwK
I2RlZmluZSBfU0NfREVMQVlUSU1FUl9NQVggX1NDX0RFTEFZVElNRVJfTUFYCiAgICBfU0NfTVFf
T1BFTl9NQVgsCiNkZWZpbmUgX1NDX01RX09QRU5fTUFYIF9TQ19NUV9PUEVOX01BWAogICAgX1ND
X01RX1BSSU9fTUFYLAojZGVmaW5lIF9TQ19NUV9QUklPX01BWCBfU0NfTVFfUFJJT19NQVgKICAg
IF9TQ19WRVJTSU9OLAojZGVmaW5lIF9TQ19WRVJTSU9OIF9TQ19WRVJTSU9OCiAgICBfU0NfUEFH
RVNJWkUsCiNkZWZpbmUgX1NDX1BBR0VTSVpFIF9TQ19QQUdFU0laRQojZGVmaW5lIF9TQ19QQUdF
X1NJWkUgX1NDX1BBR0VTSVpFCiAgICBfU0NfUlRTSUdfTUFYLAojZGVmaW5lIF9TQ19SVFNJR19N
QVggX1NDX1JUU0lHX01BWAogICAgX1NDX1NFTV9OU0VNU19NQVgsCiNkZWZpbmUgX1NDX1NFTV9O
U0VNU19NQVggX1NDX1NFTV9OU0VNU19NQVgKICAgIF9TQ19TRU1fVkFMVUVfTUFYLAojZGVmaW5l
IF9TQ19TRU1fVkFMVUVfTUFYIF9TQ19TRU1fVkFMVUVfTUFYCiAgICBfU0NfU0lHUVVFVUVfTUFY
LAojZGVmaW5lIF9TQ19TSUdRVUVVRV9NQVggX1NDX1NJR1FVRVVFX01BWAogICAgX1NDX1RJTUVS
X01BWCwKI2RlZmluZSBfU0NfVElNRVJfTUFYIF9TQ19USU1FUl9NQVgKCgoKICAgIF9TQ19CQ19C
QVNFX01BWCwKI2RlZmluZSBfU0NfQkNfQkFTRV9NQVggX1NDX0JDX0JBU0VfTUFYCiAgICBfU0Nf
QkNfRElNX01BWCwKI2RlZmluZSBfU0NfQkNfRElNX01BWCBfU0NfQkNfRElNX01BWAogICAgX1ND
X0JDX1NDQUxFX01BWCwKI2RlZmluZSBfU0NfQkNfU0NBTEVfTUFYIF9TQ19CQ19TQ0FMRV9NQVgK
ICAgIF9TQ19CQ19TVFJJTkdfTUFYLAojZGVmaW5lIF9TQ19CQ19TVFJJTkdfTUFYIF9TQ19CQ19T
VFJJTkdfTUFYCiAgICBfU0NfQ09MTF9XRUlHSFRTX01BWCwKI2RlZmluZSBfU0NfQ09MTF9XRUlH
SFRTX01BWCBfU0NfQ09MTF9XRUlHSFRTX01BWAogICAgX1NDX0VRVUlWX0NMQVNTX01BWCwKI2Rl
ZmluZSBfU0NfRVFVSVZfQ0xBU1NfTUFYIF9TQ19FUVVJVl9DTEFTU19NQVgKICAgIF9TQ19FWFBS
X05FU1RfTUFYLAojZGVmaW5lIF9TQ19FWFBSX05FU1RfTUFYIF9TQ19FWFBSX05FU1RfTUFYCiAg
ICBfU0NfTElORV9NQVgsCiNkZWZpbmUgX1NDX0xJTkVfTUFYIF9TQ19MSU5FX01BWAogICAgX1ND
X1JFX0RVUF9NQVgsCiNkZWZpbmUgX1NDX1JFX0RVUF9NQVggX1NDX1JFX0RVUF9NQVgKICAgIF9T
Q19DSEFSQ0xBU1NfTkFNRV9NQVgsCiNkZWZpbmUgX1NDX0NIQVJDTEFTU19OQU1FX01BWCBfU0Nf
Q0hBUkNMQVNTX05BTUVfTUFYCgogICAgX1NDXzJfVkVSU0lPTiwKI2RlZmluZSBfU0NfMl9WRVJT
SU9OIF9TQ18yX1ZFUlNJT04KICAgIF9TQ18yX0NfQklORCwKI2RlZmluZSBfU0NfMl9DX0JJTkQg
X1NDXzJfQ19CSU5ECiAgICBfU0NfMl9DX0RFViwKI2RlZmluZSBfU0NfMl9DX0RFViBfU0NfMl9D
X0RFVgogICAgX1NDXzJfRk9SVF9ERVYsCiNkZWZpbmUgX1NDXzJfRk9SVF9ERVYgX1NDXzJfRk9S
VF9ERVYKICAgIF9TQ18yX0ZPUlRfUlVOLAojZGVmaW5lIF9TQ18yX0ZPUlRfUlVOIF9TQ18yX0ZP
UlRfUlVOCiAgICBfU0NfMl9TV19ERVYsCiNkZWZpbmUgX1NDXzJfU1dfREVWIF9TQ18yX1NXX0RF
VgogICAgX1NDXzJfTE9DQUxFREVGLAojZGVmaW5lIF9TQ18yX0xPQ0FMRURFRiBfU0NfMl9MT0NB
TEVERUYKCiAgICBfU0NfUElJLAojZGVmaW5lIF9TQ19QSUkgX1NDX1BJSQogICAgX1NDX1BJSV9Y
VEksCiNkZWZpbmUgX1NDX1BJSV9YVEkgX1NDX1BJSV9YVEkKICAgIF9TQ19QSUlfU09DS0VULAoj
ZGVmaW5lIF9TQ19QSUlfU09DS0VUIF9TQ19QSUlfU09DS0VUCiAgICBfU0NfUElJX0lOVEVSTkVU
LAojZGVmaW5lIF9TQ19QSUlfSU5URVJORVQgX1NDX1BJSV9JTlRFUk5FVAogICAgX1NDX1BJSV9P
U0ksCiNkZWZpbmUgX1NDX1BJSV9PU0kgX1NDX1BJSV9PU0kKICAgIF9TQ19QT0xMLAojZGVmaW5l
IF9TQ19QT0xMIF9TQ19QT0xMCiAgICBfU0NfU0VMRUNULAojZGVmaW5lIF9TQ19TRUxFQ1QgX1ND
X1NFTEVDVAogICAgX1NDX1VJT19NQVhJT1YsCiNkZWZpbmUgX1NDX1VJT19NQVhJT1YgX1NDX1VJ
T19NQVhJT1YKICAgIF9TQ19JT1ZfTUFYID0gX1NDX1VJT19NQVhJT1YsCiNkZWZpbmUgX1NDX0lP
Vl9NQVggX1NDX0lPVl9NQVgKICAgIF9TQ19QSUlfSU5URVJORVRfU1RSRUFNLAojZGVmaW5lIF9T
Q19QSUlfSU5URVJORVRfU1RSRUFNIF9TQ19QSUlfSU5URVJORVRfU1RSRUFNCiAgICBfU0NfUElJ
X0lOVEVSTkVUX0RHUkFNLAojZGVmaW5lIF9TQ19QSUlfSU5URVJORVRfREdSQU0gX1NDX1BJSV9J
TlRFUk5FVF9ER1JBTQogICAgX1NDX1BJSV9PU0lfQ09UUywKI2RlZmluZSBfU0NfUElJX09TSV9D
T1RTIF9TQ19QSUlfT1NJX0NPVFMKICAgIF9TQ19QSUlfT1NJX0NMVFMsCiNkZWZpbmUgX1NDX1BJ
SV9PU0lfQ0xUUyBfU0NfUElJX09TSV9DTFRTCiAgICBfU0NfUElJX09TSV9NLAojZGVmaW5lIF9T
Q19QSUlfT1NJX00gX1NDX1BJSV9PU0lfTQogICAgX1NDX1RfSU9WX01BWCwKI2RlZmluZSBfU0Nf
VF9JT1ZfTUFYIF9TQ19UX0lPVl9NQVgKCgogICAgX1NDX1RIUkVBRFMsCiNkZWZpbmUgX1NDX1RI
UkVBRFMgX1NDX1RIUkVBRFMKICAgIF9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMsCiNkZWZpbmUg
X1NDX1RIUkVBRF9TQUZFX0ZVTkNUSU9OUyBfU0NfVEhSRUFEX1NBRkVfRlVOQ1RJT05TCiAgICBf
U0NfR0VUR1JfUl9TSVpFX01BWCwKI2RlZmluZSBfU0NfR0VUR1JfUl9TSVpFX01BWCBfU0NfR0VU
R1JfUl9TSVpFX01BWAogICAgX1NDX0dFVFBXX1JfU0laRV9NQVgsCiNkZWZpbmUgX1NDX0dFVFBX
X1JfU0laRV9NQVggX1NDX0dFVFBXX1JfU0laRV9NQVgKICAgIF9TQ19MT0dJTl9OQU1FX01BWCwK
I2RlZmluZSBfU0NfTE9HSU5fTkFNRV9NQVggX1NDX0xPR0lOX05BTUVfTUFYCiAgICBfU0NfVFRZ
X05BTUVfTUFYLAojZGVmaW5lIF9TQ19UVFlfTkFNRV9NQVggX1NDX1RUWV9OQU1FX01BWAogICAg
X1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMsCiNkZWZpbmUgX1NDX1RIUkVBRF9ERVNU
UlVDVE9SX0lURVJBVElPTlMgX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMKICAgIF9T
Q19USFJFQURfS0VZU19NQVgsCiNkZWZpbmUgX1NDX1RIUkVBRF9LRVlTX01BWCBfU0NfVEhSRUFE
X0tFWVNfTUFYCiAgICBfU0NfVEhSRUFEX1NUQUNLX01JTiwKI2RlZmluZSBfU0NfVEhSRUFEX1NU
QUNLX01JTiBfU0NfVEhSRUFEX1NUQUNLX01JTgogICAgX1NDX1RIUkVBRF9USFJFQURTX01BWCwK
I2RlZmluZSBfU0NfVEhSRUFEX1RIUkVBRFNfTUFYIF9TQ19USFJFQURfVEhSRUFEU19NQVgKICAg
IF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIsCiNkZWZpbmUgX1NDX1RIUkVBRF9BVFRSX1NUQUNL
QUREUiBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tBRERSCiAgICBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tT
SVpFLAojZGVmaW5lIF9TQ19USFJFQURfQVRUUl9TVEFDS1NJWkUgX1NDX1RIUkVBRF9BVFRSX1NU
QUNLU0laRQogICAgX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HLAojZGVmaW5lIF9TQ19U
SFJFQURfUFJJT1JJVFlfU0NIRURVTElORyBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcK
ICAgIF9TQ19USFJFQURfUFJJT19JTkhFUklULAojZGVmaW5lIF9TQ19USFJFQURfUFJJT19JTkhF
UklUIF9TQ19USFJFQURfUFJJT19JTkhFUklUCiAgICBfU0NfVEhSRUFEX1BSSU9fUFJPVEVDVCwK
I2RlZmluZSBfU0NfVEhSRUFEX1BSSU9fUFJPVEVDVCBfU0NfVEhSRUFEX1BSSU9fUFJPVEVDVAog
ICAgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKI2RlZmluZSBfU0NfVEhSRUFEX1BST0NFU1Nf
U0hBUkVEIF9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQKCiAgICBfU0NfTlBST0NFU1NPUlNfQ09O
RiwKI2RlZmluZSBfU0NfTlBST0NFU1NPUlNfQ09ORiBfU0NfTlBST0NFU1NPUlNfQ09ORgogICAg
X1NDX05QUk9DRVNTT1JTX09OTE4sCiNkZWZpbmUgX1NDX05QUk9DRVNTT1JTX09OTE4gX1NDX05Q
Uk9DRVNTT1JTX09OTE4KICAgIF9TQ19QSFlTX1BBR0VTLAojZGVmaW5lIF9TQ19QSFlTX1BBR0VT
IF9TQ19QSFlTX1BBR0VTCiAgICBfU0NfQVZQSFlTX1BBR0VTLAojZGVmaW5lIF9TQ19BVlBIWVNf
UEFHRVMgX1NDX0FWUEhZU19QQUdFUwogICAgX1NDX0FURVhJVF9NQVgsCiNkZWZpbmUgX1NDX0FU
RVhJVF9NQVggX1NDX0FURVhJVF9NQVgKICAgIF9TQ19QQVNTX01BWCwKI2RlZmluZSBfU0NfUEFT
U19NQVggX1NDX1BBU1NfTUFYCgogICAgX1NDX1hPUEVOX1ZFUlNJT04sCiNkZWZpbmUgX1NDX1hP
UEVOX1ZFUlNJT04gX1NDX1hPUEVOX1ZFUlNJT04KICAgIF9TQ19YT1BFTl9YQ1VfVkVSU0lPTiwK
I2RlZmluZSBfU0NfWE9QRU5fWENVX1ZFUlNJT04gX1NDX1hPUEVOX1hDVV9WRVJTSU9OCiAgICBf
U0NfWE9QRU5fVU5JWCwKI2RlZmluZSBfU0NfWE9QRU5fVU5JWCBfU0NfWE9QRU5fVU5JWAogICAg
X1NDX1hPUEVOX0NSWVBULAojZGVmaW5lIF9TQ19YT1BFTl9DUllQVCBfU0NfWE9QRU5fQ1JZUFQK
ICAgIF9TQ19YT1BFTl9FTkhfSTE4TiwKI2RlZmluZSBfU0NfWE9QRU5fRU5IX0kxOE4gX1NDX1hP
UEVOX0VOSF9JMThOCiAgICBfU0NfWE9QRU5fU0hNLAojZGVmaW5lIF9TQ19YT1BFTl9TSE0gX1ND
X1hPUEVOX1NITQoKICAgIF9TQ18yX0NIQVJfVEVSTSwKI2RlZmluZSBfU0NfMl9DSEFSX1RFUk0g
X1NDXzJfQ0hBUl9URVJNCiAgICBfU0NfMl9DX1ZFUlNJT04sCiNkZWZpbmUgX1NDXzJfQ19WRVJT
SU9OIF9TQ18yX0NfVkVSU0lPTgogICAgX1NDXzJfVVBFLAojZGVmaW5lIF9TQ18yX1VQRSBfU0Nf
Ml9VUEUKCiAgICBfU0NfWE9QRU5fWFBHMiwKI2RlZmluZSBfU0NfWE9QRU5fWFBHMiBfU0NfWE9Q
RU5fWFBHMgogICAgX1NDX1hPUEVOX1hQRzMsCiNkZWZpbmUgX1NDX1hPUEVOX1hQRzMgX1NDX1hP
UEVOX1hQRzMKICAgIF9TQ19YT1BFTl9YUEc0LAojZGVmaW5lIF9TQ19YT1BFTl9YUEc0IF9TQ19Y
T1BFTl9YUEc0CgogICAgX1NDX0NIQVJfQklULAojZGVmaW5lIF9TQ19DSEFSX0JJVCBfU0NfQ0hB
Ul9CSVQKICAgIF9TQ19DSEFSX01BWCwKI2RlZmluZSBfU0NfQ0hBUl9NQVggX1NDX0NIQVJfTUFY
CiAgICBfU0NfQ0hBUl9NSU4sCiNkZWZpbmUgX1NDX0NIQVJfTUlOIF9TQ19DSEFSX01JTgogICAg
X1NDX0lOVF9NQVgsCiNkZWZpbmUgX1NDX0lOVF9NQVggX1NDX0lOVF9NQVgKICAgIF9TQ19JTlRf
TUlOLAojZGVmaW5lIF9TQ19JTlRfTUlOIF9TQ19JTlRfTUlOCiAgICBfU0NfTE9OR19CSVQsCiNk
ZWZpbmUgX1NDX0xPTkdfQklUIF9TQ19MT05HX0JJVAogICAgX1NDX1dPUkRfQklULAojZGVmaW5l
IF9TQ19XT1JEX0JJVCBfU0NfV09SRF9CSVQKICAgIF9TQ19NQl9MRU5fTUFYLAojZGVmaW5lIF9T
Q19NQl9MRU5fTUFYIF9TQ19NQl9MRU5fTUFYCiAgICBfU0NfTlpFUk8sCiNkZWZpbmUgX1NDX05a
RVJPIF9TQ19OWkVSTwogICAgX1NDX1NTSVpFX01BWCwKI2RlZmluZSBfU0NfU1NJWkVfTUFYIF9T
Q19TU0laRV9NQVgKICAgIF9TQ19TQ0hBUl9NQVgsCiNkZWZpbmUgX1NDX1NDSEFSX01BWCBfU0Nf
U0NIQVJfTUFYCiAgICBfU0NfU0NIQVJfTUlOLAojZGVmaW5lIF9TQ19TQ0hBUl9NSU4gX1NDX1ND
SEFSX01JTgogICAgX1NDX1NIUlRfTUFYLAojZGVmaW5lIF9TQ19TSFJUX01BWCBfU0NfU0hSVF9N
QVgKICAgIF9TQ19TSFJUX01JTiwKI2RlZmluZSBfU0NfU0hSVF9NSU4gX1NDX1NIUlRfTUlOCiAg
ICBfU0NfVUNIQVJfTUFYLAojZGVmaW5lIF9TQ19VQ0hBUl9NQVggX1NDX1VDSEFSX01BWAogICAg
X1NDX1VJTlRfTUFYLAojZGVmaW5lIF9TQ19VSU5UX01BWCBfU0NfVUlOVF9NQVgKICAgIF9TQ19V
TE9OR19NQVgsCiNkZWZpbmUgX1NDX1VMT05HX01BWCBfU0NfVUxPTkdfTUFYCiAgICBfU0NfVVNI
UlRfTUFYLAojZGVmaW5lIF9TQ19VU0hSVF9NQVggX1NDX1VTSFJUX01BWAoKICAgIF9TQ19OTF9B
UkdNQVgsCiNkZWZpbmUgX1NDX05MX0FSR01BWCBfU0NfTkxfQVJHTUFYCiAgICBfU0NfTkxfTEFO
R01BWCwKI2RlZmluZSBfU0NfTkxfTEFOR01BWCBfU0NfTkxfTEFOR01BWAogICAgX1NDX05MX01T
R01BWCwKI2RlZmluZSBfU0NfTkxfTVNHTUFYIF9TQ19OTF9NU0dNQVgKICAgIF9TQ19OTF9OTUFY
LAojZGVmaW5lIF9TQ19OTF9OTUFYIF9TQ19OTF9OTUFYCiAgICBfU0NfTkxfU0VUTUFYLAojZGVm
aW5lIF9TQ19OTF9TRVRNQVggX1NDX05MX1NFVE1BWAogICAgX1NDX05MX1RFWFRNQVgsCiNkZWZp
bmUgX1NDX05MX1RFWFRNQVggX1NDX05MX1RFWFRNQVgKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkYz
MiwKI2RlZmluZSBfU0NfWEJTNV9JTFAzMl9PRkYzMiBfU0NfWEJTNV9JTFAzMl9PRkYzMgogICAg
X1NDX1hCUzVfSUxQMzJfT0ZGQklHLAojZGVmaW5lIF9TQ19YQlM1X0lMUDMyX09GRkJJRyBfU0Nf
WEJTNV9JTFAzMl9PRkZCSUcKICAgIF9TQ19YQlM1X0xQNjRfT0ZGNjQsCiNkZWZpbmUgX1NDX1hC
UzVfTFA2NF9PRkY2NCBfU0NfWEJTNV9MUDY0X09GRjY0CiAgICBfU0NfWEJTNV9MUEJJR19PRkZC
SUcsCiNkZWZpbmUgX1NDX1hCUzVfTFBCSUdfT0ZGQklHIF9TQ19YQlM1X0xQQklHX09GRkJJRwoK
ICAgIF9TQ19YT1BFTl9MRUdBQ1ksCiNkZWZpbmUgX1NDX1hPUEVOX0xFR0FDWSBfU0NfWE9QRU5f
TEVHQUNZCiAgICBfU0NfWE9QRU5fUkVBTFRJTUUsCiNkZWZpbmUgX1NDX1hPUEVOX1JFQUxUSU1F
IF9TQ19YT1BFTl9SRUFMVElNRQogICAgX1NDX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMsCiNkZWZp
bmUgX1NDX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMgX1NDX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMK
CiAgICBfU0NfQURWSVNPUllfSU5GTywKI2RlZmluZSBfU0NfQURWSVNPUllfSU5GTyBfU0NfQURW
SVNPUllfSU5GTwogICAgX1NDX0JBUlJJRVJTLAojZGVmaW5lIF9TQ19CQVJSSUVSUyBfU0NfQkFS
UklFUlMKICAgIF9TQ19CQVNFLAojZGVmaW5lIF9TQ19CQVNFIF9TQ19CQVNFCiAgICBfU0NfQ19M
QU5HX1NVUFBPUlQsCiNkZWZpbmUgX1NDX0NfTEFOR19TVVBQT1JUIF9TQ19DX0xBTkdfU1VQUE9S
VAogICAgX1NDX0NfTEFOR19TVVBQT1JUX1IsCiNkZWZpbmUgX1NDX0NfTEFOR19TVVBQT1JUX1Ig
X1NDX0NfTEFOR19TVVBQT1JUX1IKICAgIF9TQ19DTE9DS19TRUxFQ1RJT04sCiNkZWZpbmUgX1ND
X0NMT0NLX1NFTEVDVElPTiBfU0NfQ0xPQ0tfU0VMRUNUSU9OCiAgICBfU0NfQ1BVVElNRSwKI2Rl
ZmluZSBfU0NfQ1BVVElNRSBfU0NfQ1BVVElNRQogICAgX1NDX1RIUkVBRF9DUFVUSU1FLAojZGVm
aW5lIF9TQ19USFJFQURfQ1BVVElNRSBfU0NfVEhSRUFEX0NQVVRJTUUKICAgIF9TQ19ERVZJQ0Vf
SU8sCiNkZWZpbmUgX1NDX0RFVklDRV9JTyBfU0NfREVWSUNFX0lPCiAgICBfU0NfREVWSUNFX1NQ
RUNJRklDLAojZGVmaW5lIF9TQ19ERVZJQ0VfU1BFQ0lGSUMgX1NDX0RFVklDRV9TUEVDSUZJQwog
ICAgX1NDX0RFVklDRV9TUEVDSUZJQ19SLAojZGVmaW5lIF9TQ19ERVZJQ0VfU1BFQ0lGSUNfUiBf
U0NfREVWSUNFX1NQRUNJRklDX1IKICAgIF9TQ19GRF9NR01ULAojZGVmaW5lIF9TQ19GRF9NR01U
IF9TQ19GRF9NR01UCiAgICBfU0NfRklGTywKI2RlZmluZSBfU0NfRklGTyBfU0NfRklGTwogICAg
X1NDX1BJUEUsCiNkZWZpbmUgX1NDX1BJUEUgX1NDX1BJUEUKICAgIF9TQ19GSUxFX0FUVFJJQlVU
RVMsCiNkZWZpbmUgX1NDX0ZJTEVfQVRUUklCVVRFUyBfU0NfRklMRV9BVFRSSUJVVEVTCiAgICBf
U0NfRklMRV9MT0NLSU5HLAojZGVmaW5lIF9TQ19GSUxFX0xPQ0tJTkcgX1NDX0ZJTEVfTE9DS0lO
RwogICAgX1NDX0ZJTEVfU1lTVEVNLAojZGVmaW5lIF9TQ19GSUxFX1NZU1RFTSBfU0NfRklMRV9T
WVNURU0KICAgIF9TQ19NT05PVE9OSUNfQ0xPQ0ssCiNkZWZpbmUgX1NDX01PTk9UT05JQ19DTE9D
SyBfU0NfTU9OT1RPTklDX0NMT0NLCiAgICBfU0NfTVVMVElfUFJPQ0VTUywKI2RlZmluZSBfU0Nf
TVVMVElfUFJPQ0VTUyBfU0NfTVVMVElfUFJPQ0VTUwogICAgX1NDX1NJTkdMRV9QUk9DRVNTLAoj
ZGVmaW5lIF9TQ19TSU5HTEVfUFJPQ0VTUyBfU0NfU0lOR0xFX1BST0NFU1MKICAgIF9TQ19ORVRX
T1JLSU5HLAojZGVmaW5lIF9TQ19ORVRXT1JLSU5HIF9TQ19ORVRXT1JLSU5HCiAgICBfU0NfUkVB
REVSX1dSSVRFUl9MT0NLUywKI2RlZmluZSBfU0NfUkVBREVSX1dSSVRFUl9MT0NLUyBfU0NfUkVB
REVSX1dSSVRFUl9MT0NLUwogICAgX1NDX1NQSU5fTE9DS1MsCiNkZWZpbmUgX1NDX1NQSU5fTE9D
S1MgX1NDX1NQSU5fTE9DS1MKICAgIF9TQ19SRUdFWFAsCiNkZWZpbmUgX1NDX1JFR0VYUCBfU0Nf
UkVHRVhQCiAgICBfU0NfUkVHRVhfVkVSU0lPTiwKI2RlZmluZSBfU0NfUkVHRVhfVkVSU0lPTiBf
U0NfUkVHRVhfVkVSU0lPTgogICAgX1NDX1NIRUxMLAojZGVmaW5lIF9TQ19TSEVMTCBfU0NfU0hF
TEwKICAgIF9TQ19TSUdOQUxTLAojZGVmaW5lIF9TQ19TSUdOQUxTIF9TQ19TSUdOQUxTCiAgICBf
U0NfU1BBV04sCiNkZWZpbmUgX1NDX1NQQVdOIF9TQ19TUEFXTgogICAgX1NDX1NQT1JBRElDX1NF
UlZFUiwKI2RlZmluZSBfU0NfU1BPUkFESUNfU0VSVkVSIF9TQ19TUE9SQURJQ19TRVJWRVIKICAg
IF9TQ19USFJFQURfU1BPUkFESUNfU0VSVkVSLAojZGVmaW5lIF9TQ19USFJFQURfU1BPUkFESUNf
U0VSVkVSIF9TQ19USFJFQURfU1BPUkFESUNfU0VSVkVSCiAgICBfU0NfU1lTVEVNX0RBVEFCQVNF
LAojZGVmaW5lIF9TQ19TWVNURU1fREFUQUJBU0UgX1NDX1NZU1RFTV9EQVRBQkFTRQogICAgX1ND
X1NZU1RFTV9EQVRBQkFTRV9SLAojZGVmaW5lIF9TQ19TWVNURU1fREFUQUJBU0VfUiBfU0NfU1lT
VEVNX0RBVEFCQVNFX1IKICAgIF9TQ19USU1FT1VUUywKI2RlZmluZSBfU0NfVElNRU9VVFMgX1ND
X1RJTUVPVVRTCiAgICBfU0NfVFlQRURfTUVNT1JZX09CSkVDVFMsCiNkZWZpbmUgX1NDX1RZUEVE
X01FTU9SWV9PQkpFQ1RTIF9TQ19UWVBFRF9NRU1PUllfT0JKRUNUUwogICAgX1NDX1VTRVJfR1JP
VVBTLAojZGVmaW5lIF9TQ19VU0VSX0dST1VQUyBfU0NfVVNFUl9HUk9VUFMKICAgIF9TQ19VU0VS
X0dST1VQU19SLAojZGVmaW5lIF9TQ19VU0VSX0dST1VQU19SIF9TQ19VU0VSX0dST1VQU19SCiAg
ICBfU0NfMl9QQlMsCiNkZWZpbmUgX1NDXzJfUEJTIF9TQ18yX1BCUwogICAgX1NDXzJfUEJTX0FD
Q09VTlRJTkcsCiNkZWZpbmUgX1NDXzJfUEJTX0FDQ09VTlRJTkcgX1NDXzJfUEJTX0FDQ09VTlRJ
TkcKICAgIF9TQ18yX1BCU19MT0NBVEUsCiNkZWZpbmUgX1NDXzJfUEJTX0xPQ0FURSBfU0NfMl9Q
QlNfTE9DQVRFCiAgICBfU0NfMl9QQlNfTUVTU0FHRSwKI2RlZmluZSBfU0NfMl9QQlNfTUVTU0FH
RSBfU0NfMl9QQlNfTUVTU0FHRQogICAgX1NDXzJfUEJTX1RSQUNLLAojZGVmaW5lIF9TQ18yX1BC
U19UUkFDSyBfU0NfMl9QQlNfVFJBQ0sKICAgIF9TQ19TWU1MT09QX01BWCwKI2RlZmluZSBfU0Nf
U1lNTE9PUF9NQVggX1NDX1NZTUxPT1BfTUFYCiAgICBfU0NfU1RSRUFNUywKI2RlZmluZSBfU0Nf
U1RSRUFNUyBfU0NfU1RSRUFNUwogICAgX1NDXzJfUEJTX0NIRUNLUE9JTlQsCiNkZWZpbmUgX1ND
XzJfUEJTX0NIRUNLUE9JTlQgX1NDXzJfUEJTX0NIRUNLUE9JTlQKCiAgICBfU0NfVjZfSUxQMzJf
T0ZGMzIsCiNkZWZpbmUgX1NDX1Y2X0lMUDMyX09GRjMyIF9TQ19WNl9JTFAzMl9PRkYzMgogICAg
X1NDX1Y2X0lMUDMyX09GRkJJRywKI2RlZmluZSBfU0NfVjZfSUxQMzJfT0ZGQklHIF9TQ19WNl9J
TFAzMl9PRkZCSUcKICAgIF9TQ19WNl9MUDY0X09GRjY0LAojZGVmaW5lIF9TQ19WNl9MUDY0X09G
RjY0IF9TQ19WNl9MUDY0X09GRjY0CiAgICBfU0NfVjZfTFBCSUdfT0ZGQklHLAojZGVmaW5lIF9T
Q19WNl9MUEJJR19PRkZCSUcgX1NDX1Y2X0xQQklHX09GRkJJRwoKICAgIF9TQ19IT1NUX05BTUVf
TUFYLAojZGVmaW5lIF9TQ19IT1NUX05BTUVfTUFYIF9TQ19IT1NUX05BTUVfTUFYCiAgICBfU0Nf
VFJBQ0UsCiNkZWZpbmUgX1NDX1RSQUNFIF9TQ19UUkFDRQogICAgX1NDX1RSQUNFX0VWRU5UX0ZJ
TFRFUiwKI2RlZmluZSBfU0NfVFJBQ0VfRVZFTlRfRklMVEVSIF9TQ19UUkFDRV9FVkVOVF9GSUxU
RVIKICAgIF9TQ19UUkFDRV9JTkhFUklULAojZGVmaW5lIF9TQ19UUkFDRV9JTkhFUklUIF9TQ19U
UkFDRV9JTkhFUklUCiAgICBfU0NfVFJBQ0VfTE9HLAojZGVmaW5lIF9TQ19UUkFDRV9MT0cgX1ND
X1RSQUNFX0xPRwoKICAgIF9TQ19MRVZFTDFfSUNBQ0hFX1NJWkUsCiNkZWZpbmUgX1NDX0xFVkVM
MV9JQ0FDSEVfU0laRSBfU0NfTEVWRUwxX0lDQUNIRV9TSVpFCiAgICBfU0NfTEVWRUwxX0lDQUNI
RV9BU1NPQywKI2RlZmluZSBfU0NfTEVWRUwxX0lDQUNIRV9BU1NPQyBfU0NfTEVWRUwxX0lDQUNI
RV9BU1NPQwogICAgX1NDX0xFVkVMMV9JQ0FDSEVfTElORVNJWkUsCiNkZWZpbmUgX1NDX0xFVkVM
MV9JQ0FDSEVfTElORVNJWkUgX1NDX0xFVkVMMV9JQ0FDSEVfTElORVNJWkUKICAgIF9TQ19MRVZF
TDFfRENBQ0hFX1NJWkUsCiNkZWZpbmUgX1NDX0xFVkVMMV9EQ0FDSEVfU0laRSBfU0NfTEVWRUwx
X0RDQUNIRV9TSVpFCiAgICBfU0NfTEVWRUwxX0RDQUNIRV9BU1NPQywKI2RlZmluZSBfU0NfTEVW
RUwxX0RDQUNIRV9BU1NPQyBfU0NfTEVWRUwxX0RDQUNIRV9BU1NPQwogICAgX1NDX0xFVkVMMV9E
Q0FDSEVfTElORVNJWkUsCiNkZWZpbmUgX1NDX0xFVkVMMV9EQ0FDSEVfTElORVNJWkUgX1NDX0xF
VkVMMV9EQ0FDSEVfTElORVNJWkUKICAgIF9TQ19MRVZFTDJfQ0FDSEVfU0laRSwKI2RlZmluZSBf
U0NfTEVWRUwyX0NBQ0hFX1NJWkUgX1NDX0xFVkVMMl9DQUNIRV9TSVpFCiAgICBfU0NfTEVWRUwy
X0NBQ0hFX0FTU09DLAojZGVmaW5lIF9TQ19MRVZFTDJfQ0FDSEVfQVNTT0MgX1NDX0xFVkVMMl9D
QUNIRV9BU1NPQwogICAgX1NDX0xFVkVMMl9DQUNIRV9MSU5FU0laRSwKI2RlZmluZSBfU0NfTEVW
RUwyX0NBQ0hFX0xJTkVTSVpFIF9TQ19MRVZFTDJfQ0FDSEVfTElORVNJWkUKICAgIF9TQ19MRVZF
TDNfQ0FDSEVfU0laRSwKI2RlZmluZSBfU0NfTEVWRUwzX0NBQ0hFX1NJWkUgX1NDX0xFVkVMM19D
QUNIRV9TSVpFCiAgICBfU0NfTEVWRUwzX0NBQ0hFX0FTU09DLAojZGVmaW5lIF9TQ19MRVZFTDNf
Q0FDSEVfQVNTT0MgX1NDX0xFVkVMM19DQUNIRV9BU1NPQwogICAgX1NDX0xFVkVMM19DQUNIRV9M
SU5FU0laRSwKI2RlZmluZSBfU0NfTEVWRUwzX0NBQ0hFX0xJTkVTSVpFIF9TQ19MRVZFTDNfQ0FD
SEVfTElORVNJWkUKICAgIF9TQ19MRVZFTDRfQ0FDSEVfU0laRSwKI2RlZmluZSBfU0NfTEVWRUw0
X0NBQ0hFX1NJWkUgX1NDX0xFVkVMNF9DQUNIRV9TSVpFCiAgICBfU0NfTEVWRUw0X0NBQ0hFX0FT
U09DLAojZGVmaW5lIF9TQ19MRVZFTDRfQ0FDSEVfQVNTT0MgX1NDX0xFVkVMNF9DQUNIRV9BU1NP
QwogICAgX1NDX0xFVkVMNF9DQUNIRV9MSU5FU0laRSwKI2RlZmluZSBfU0NfTEVWRUw0X0NBQ0hF
X0xJTkVTSVpFIF9TQ19MRVZFTDRfQ0FDSEVfTElORVNJWkUKCgogICAgX1NDX0lQVjYgPSBfU0Nf
TEVWRUwxX0lDQUNIRV9TSVpFICsgNTAsCiNkZWZpbmUgX1NDX0lQVjYgX1NDX0lQVjYKICAgIF9T
Q19SQVdfU09DS0VUUywKI2RlZmluZSBfU0NfUkFXX1NPQ0tFVFMgX1NDX1JBV19TT0NLRVRTCgog
ICAgX1NDX1Y3X0lMUDMyX09GRjMyLAojZGVmaW5lIF9TQ19WN19JTFAzMl9PRkYzMiBfU0NfVjdf
SUxQMzJfT0ZGMzIKICAgIF9TQ19WN19JTFAzMl9PRkZCSUcsCiNkZWZpbmUgX1NDX1Y3X0lMUDMy
X09GRkJJRyBfU0NfVjdfSUxQMzJfT0ZGQklHCiAgICBfU0NfVjdfTFA2NF9PRkY2NCwKI2RlZmlu
ZSBfU0NfVjdfTFA2NF9PRkY2NCBfU0NfVjdfTFA2NF9PRkY2NAogICAgX1NDX1Y3X0xQQklHX09G
RkJJRywKI2RlZmluZSBfU0NfVjdfTFBCSUdfT0ZGQklHIF9TQ19WN19MUEJJR19PRkZCSUcKCiAg
ICBfU0NfU1NfUkVQTF9NQVgsCiNkZWZpbmUgX1NDX1NTX1JFUExfTUFYIF9TQ19TU19SRVBMX01B
WAoKICAgIF9TQ19UUkFDRV9FVkVOVF9OQU1FX01BWCwKI2RlZmluZSBfU0NfVFJBQ0VfRVZFTlRf
TkFNRV9NQVggX1NDX1RSQUNFX0VWRU5UX05BTUVfTUFYCiAgICBfU0NfVFJBQ0VfTkFNRV9NQVgs
CiNkZWZpbmUgX1NDX1RSQUNFX05BTUVfTUFYIF9TQ19UUkFDRV9OQU1FX01BWAogICAgX1NDX1RS
QUNFX1NZU19NQVgsCiNkZWZpbmUgX1NDX1RSQUNFX1NZU19NQVggX1NDX1RSQUNFX1NZU19NQVgK
ICAgIF9TQ19UUkFDRV9VU0VSX0VWRU5UX01BWCwKI2RlZmluZSBfU0NfVFJBQ0VfVVNFUl9FVkVO
VF9NQVggX1NDX1RSQUNFX1VTRVJfRVZFTlRfTUFYCgogICAgX1NDX1hPUEVOX1NUUkVBTVMsCiNk
ZWZpbmUgX1NDX1hPUEVOX1NUUkVBTVMgX1NDX1hPUEVOX1NUUkVBTVMKCiAgICBfU0NfVEhSRUFE
X1JPQlVTVF9QUklPX0lOSEVSSVQsCiNkZWZpbmUgX1NDX1RIUkVBRF9ST0JVU1RfUFJJT19JTkhF
UklUIF9TQ19USFJFQURfUk9CVVNUX1BSSU9fSU5IRVJJVAogICAgX1NDX1RIUkVBRF9ST0JVU1Rf
UFJJT19QUk9URUNUCiNkZWZpbmUgX1NDX1RIUkVBRF9ST0JVU1RfUFJJT19QUk9URUNUIF9TQ19U
SFJFQURfUk9CVVNUX1BSSU9fUFJPVEVDVAogIH07CgoKZW51bQogIHsKICAgIF9DU19QQVRILAoj
ZGVmaW5lIF9DU19QQVRIIF9DU19QQVRICgogICAgX0NTX1Y2X1dJRFRIX1JFU1RSSUNURURfRU5W
UywKI2RlZmluZSBfQ1NfVjZfV0lEVEhfUkVTVFJJQ1RFRF9FTlZTIF9DU19WNl9XSURUSF9SRVNU
UklDVEVEX0VOVlMKI2RlZmluZSBfQ1NfUE9TSVhfVjZfV0lEVEhfUkVTVFJJQ1RFRF9FTlZTIF9D
U19WNl9XSURUSF9SRVNUUklDVEVEX0VOVlMKCiAgICBfQ1NfR05VX0xJQkNfVkVSU0lPTiwKI2Rl
ZmluZSBfQ1NfR05VX0xJQkNfVkVSU0lPTiBfQ1NfR05VX0xJQkNfVkVSU0lPTgogICAgX0NTX0dO
VV9MSUJQVEhSRUFEX1ZFUlNJT04sCiNkZWZpbmUgX0NTX0dOVV9MSUJQVEhSRUFEX1ZFUlNJT04g
X0NTX0dOVV9MSUJQVEhSRUFEX1ZFUlNJT04KCiAgICBfQ1NfVjVfV0lEVEhfUkVTVFJJQ1RFRF9F
TlZTLAojZGVmaW5lIF9DU19WNV9XSURUSF9SRVNUUklDVEVEX0VOVlMgX0NTX1Y1X1dJRFRIX1JF
U1RSSUNURURfRU5WUwojZGVmaW5lIF9DU19QT1NJWF9WNV9XSURUSF9SRVNUUklDVEVEX0VOVlMg
X0NTX1Y1X1dJRFRIX1JFU1RSSUNURURfRU5WUwoKICAgIF9DU19WN19XSURUSF9SRVNUUklDVEVE
X0VOVlMsCiNkZWZpbmUgX0NTX1Y3X1dJRFRIX1JFU1RSSUNURURfRU5WUyBfQ1NfVjdfV0lEVEhf
UkVTVFJJQ1RFRF9FTlZTCiNkZWZpbmUgX0NTX1BPU0lYX1Y3X1dJRFRIX1JFU1RSSUNURURfRU5W
UyBfQ1NfVjdfV0lEVEhfUkVTVFJJQ1RFRF9FTlZTCgogICAgX0NTX0xGU19DRkxBR1MgPSAxMDAw
LAojZGVmaW5lIF9DU19MRlNfQ0ZMQUdTIF9DU19MRlNfQ0ZMQUdTCiAgICBfQ1NfTEZTX0xERkxB
R1MsCiNkZWZpbmUgX0NTX0xGU19MREZMQUdTIF9DU19MRlNfTERGTEFHUwogICAgX0NTX0xGU19M
SUJTLAojZGVmaW5lIF9DU19MRlNfTElCUyBfQ1NfTEZTX0xJQlMKICAgIF9DU19MRlNfTElOVEZM
QUdTLAojZGVmaW5lIF9DU19MRlNfTElOVEZMQUdTIF9DU19MRlNfTElOVEZMQUdTCiAgICBfQ1Nf
TEZTNjRfQ0ZMQUdTLAojZGVmaW5lIF9DU19MRlM2NF9DRkxBR1MgX0NTX0xGUzY0X0NGTEFHUwog
ICAgX0NTX0xGUzY0X0xERkxBR1MsCiNkZWZpbmUgX0NTX0xGUzY0X0xERkxBR1MgX0NTX0xGUzY0
X0xERkxBR1MKICAgIF9DU19MRlM2NF9MSUJTLAojZGVmaW5lIF9DU19MRlM2NF9MSUJTIF9DU19M
RlM2NF9MSUJTCiAgICBfQ1NfTEZTNjRfTElOVEZMQUdTLAojZGVmaW5lIF9DU19MRlM2NF9MSU5U
RkxBR1MgX0NTX0xGUzY0X0xJTlRGTEFHUwoKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0NGTEFH
UyA9IDExMDAsCiNkZWZpbmUgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfQ0ZMQUdTIF9DU19YQlM1X0lM
UDMyX09GRjMyX0NGTEFHUwogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTERGTEFHUywKI2RlZmlu
ZSBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTIF9DU19YQlM1X0lMUDMyX09GRjMyX0xERkxB
R1MKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xJQlMsCiNkZWZpbmUgX0NTX1hCUzVfSUxQMzJf
T0ZGMzJfTElCUyBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSUJTCiAgICBfQ1NfWEJTNV9JTFAzMl9P
RkYzMl9MSU5URkxBR1MsCiNkZWZpbmUgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElOVEZMQUdTIF9D
U19YQlM1X0lMUDMyX09GRjMyX0xJTlRGTEFHUwogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0NG
TEFHUywKI2RlZmluZSBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfQ0ZMQUdTIF9DU19YQlM1X0lMUDMy
X09GRkJJR19DRkxBR1MKICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19MREZMQUdTLAojZGVmaW5l
IF9DU19YQlM1X0lMUDMyX09GRkJJR19MREZMQUdTIF9DU19YQlM1X0lMUDMyX09GRkJJR19MREZM
QUdTCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElCUywKI2RlZmluZSBfQ1NfWEJTNV9JTFAz
Ml9PRkZCSUdfTElCUyBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElCUwogICAgX0NTX1hCUzVfSUxQ
MzJfT0ZGQklHX0xJTlRGTEFHUywKI2RlZmluZSBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElOVEZM
QUdTIF9DU19YQlM1X0lMUDMyX09GRkJJR19MSU5URkxBR1MKICAgIF9DU19YQlM1X0xQNjRfT0ZG
NjRfQ0ZMQUdTLAojZGVmaW5lIF9DU19YQlM1X0xQNjRfT0ZGNjRfQ0ZMQUdTIF9DU19YQlM1X0xQ
NjRfT0ZGNjRfQ0ZMQUdTCiAgICBfQ1NfWEJTNV9MUDY0X09GRjY0X0xERkxBR1MsCiNkZWZpbmUg
X0NTX1hCUzVfTFA2NF9PRkY2NF9MREZMQUdTIF9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUwog
ICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSUJTLAojZGVmaW5lIF9DU19YQlM1X0xQNjRfT0ZGNjRf
TElCUyBfQ1NfWEJTNV9MUDY0X09GRjY0X0xJQlMKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTElO
VEZMQUdTLAojZGVmaW5lIF9DU19YQlM1X0xQNjRfT0ZGNjRfTElOVEZMQUdTIF9DU19YQlM1X0xQ
NjRfT0ZGNjRfTElOVEZMQUdTCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfQ0ZMQUdTLAojZGVm
aW5lIF9DU19YQlM1X0xQQklHX09GRkJJR19DRkxBR1MgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NG
TEFHUwogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xERkxBR1MsCiNkZWZpbmUgX0NTX1hCUzVf
TFBCSUdfT0ZGQklHX0xERkxBR1MgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xERkxBR1MKICAgIF9D
U19YQlM1X0xQQklHX09GRkJJR19MSUJTLAojZGVmaW5lIF9DU19YQlM1X0xQQklHX09GRkJJR19M
SUJTIF9DU19YQlM1X0xQQklHX09GRkJJR19MSUJTCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdf
TElOVEZMQUdTLAojZGVmaW5lIF9DU19YQlM1X0xQQklHX09GRkJJR19MSU5URkxBR1MgX0NTX1hC
UzVfTFBCSUdfT0ZGQklHX0xJTlRGTEFHUwoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkYzMl9D
RkxBR1MsCiNkZWZpbmUgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0NGTEFHUyBfQ1NfUE9TSVhf
VjZfSUxQMzJfT0ZGMzJfQ0ZMQUdTCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTERGTEFH
UywKI2RlZmluZSBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTERGTEFHUyBfQ1NfUE9TSVhfVjZf
SUxQMzJfT0ZGMzJfTERGTEFHUwogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJQlMsCiNk
ZWZpbmUgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJQlMgX0NTX1BPU0lYX1Y2X0lMUDMyX09G
RjMyX0xJQlMKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkYzMl9MSU5URkxBR1MsCiNkZWZpbmUg
X0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJTlRGTEFHUyBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZG
MzJfTElOVEZMQUdTCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0NGTEFHUywKI2RlZmlu
ZSBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0NGTEFHUyBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZG
QklHX0NGTEFHUwogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19MREZMQUdTLAojZGVmaW5l
IF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfTERGTEFHUyBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZG
QklHX0xERkxBR1MKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfTElCUywKI2RlZmluZSBf
Q1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xJQlMgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19M
SUJTCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUywKI2RlZmluZSBfQ1Nf
UE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUyBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklH
X0xJTlRGTEFHUwogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfQ0ZMQUdTLAojZGVmaW5lIF9D
U19QT1NJWF9WNl9MUDY0X09GRjY0X0NGTEFHUyBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9DRkxB
R1MKICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0xERkxBR1MsCiNkZWZpbmUgX0NTX1BPU0lY
X1Y2X0xQNjRfT0ZGNjRfTERGTEFHUyBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9MREZMQUdTCiAg
ICBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9MSUJTLAojZGVmaW5lIF9DU19QT1NJWF9WNl9MUDY0
X09GRjY0X0xJQlMgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElCUwogICAgX0NTX1BPU0lYX1Y2
X0xQNjRfT0ZGNjRfTElOVEZMQUdTLAojZGVmaW5lIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0xJ
TlRGTEFHUyBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9MSU5URkxBR1MKICAgIF9DU19QT1NJWF9W
Nl9MUEJJR19PRkZCSUdfQ0ZMQUdTLAojZGVmaW5lIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdf
Q0ZMQUdTIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfQ0ZMQUdTCiAgICBfQ1NfUE9TSVhfVjZf
TFBCSUdfT0ZGQklHX0xERkxBR1MsCiNkZWZpbmUgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19M
REZMQUdTIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTERGTEFHUwogICAgX0NTX1BPU0lYX1Y2
X0xQQklHX09GRkJJR19MSUJTLAojZGVmaW5lIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTElC
UyBfQ1NfUE9TSVhfVjZfTFBCSUdfT0ZGQklHX0xJQlMKICAgIF9DU19QT1NJWF9WNl9MUEJJR19P
RkZCSUdfTElOVEZMQUdTLAojZGVmaW5lIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTElOVEZM
QUdTIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTElOVEZMQUdTCgogICAgX0NTX1BPU0lYX1Y3
X0lMUDMyX09GRjMyX0NGTEFHUywKI2RlZmluZSBfQ1NfUE9TSVhfVjdfSUxQMzJfT0ZGMzJfQ0ZM
QUdTIF9DU19QT1NJWF9WN19JTFAzMl9PRkYzMl9DRkxBR1MKICAgIF9DU19QT1NJWF9WN19JTFAz
Ml9PRkYzMl9MREZMQUdTLAojZGVmaW5lIF9DU19QT1NJWF9WN19JTFAzMl9PRkYzMl9MREZMQUdT
IF9DU19QT1NJWF9WN19JTFAzMl9PRkYzMl9MREZMQUdTCiAgICBfQ1NfUE9TSVhfVjdfSUxQMzJf
T0ZGMzJfTElCUywKI2RlZmluZSBfQ1NfUE9TSVhfVjdfSUxQMzJfT0ZGMzJfTElCUyBfQ1NfUE9T
SVhfVjdfSUxQMzJfT0ZGMzJfTElCUwogICAgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRjMyX0xJTlRG
TEFHUywKI2RlZmluZSBfQ1NfUE9TSVhfVjdfSUxQMzJfT0ZGMzJfTElOVEZMQUdTIF9DU19QT1NJ
WF9WN19JTFAzMl9PRkYzMl9MSU5URkxBR1MKICAgIF9DU19QT1NJWF9WN19JTFAzMl9PRkZCSUdf
Q0ZMQUdTLAojZGVmaW5lIF9DU19QT1NJWF9WN19JTFAzMl9PRkZCSUdfQ0ZMQUdTIF9DU19QT1NJ
WF9WN19JTFAzMl9PRkZCSUdfQ0ZMQUdTCiAgICBfQ1NfUE9TSVhfVjdfSUxQMzJfT0ZGQklHX0xE
RkxBR1MsCiNkZWZpbmUgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRkJJR19MREZMQUdTIF9DU19QT1NJ
WF9WN19JTFAzMl9PRkZCSUdfTERGTEFHUwogICAgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRkJJR19M
SUJTLAojZGVmaW5lIF9DU19QT1NJWF9WN19JTFAzMl9PRkZCSUdfTElCUyBfQ1NfUE9TSVhfVjdf
SUxQMzJfT0ZGQklHX0xJQlMKICAgIF9DU19QT1NJWF9WN19JTFAzMl9PRkZCSUdfTElOVEZMQUdT
LAojZGVmaW5lIF9DU19QT1NJWF9WN19JTFAzMl9PRkZCSUdfTElOVEZMQUdTIF9DU19QT1NJWF9W
N19JTFAzMl9PRkZCSUdfTElOVEZMQUdTCiAgICBfQ1NfUE9TSVhfVjdfTFA2NF9PRkY2NF9DRkxB
R1MsCiNkZWZpbmUgX0NTX1BPU0lYX1Y3X0xQNjRfT0ZGNjRfQ0ZMQUdTIF9DU19QT1NJWF9WN19M
UDY0X09GRjY0X0NGTEFHUwogICAgX0NTX1BPU0lYX1Y3X0xQNjRfT0ZGNjRfTERGTEFHUywKI2Rl
ZmluZSBfQ1NfUE9TSVhfVjdfTFA2NF9PRkY2NF9MREZMQUdTIF9DU19QT1NJWF9WN19MUDY0X09G
RjY0X0xERkxBR1MKICAgIF9DU19QT1NJWF9WN19MUDY0X09GRjY0X0xJQlMsCiNkZWZpbmUgX0NT
X1BPU0lYX1Y3X0xQNjRfT0ZGNjRfTElCUyBfQ1NfUE9TSVhfVjdfTFA2NF9PRkY2NF9MSUJTCiAg
ICBfQ1NfUE9TSVhfVjdfTFA2NF9PRkY2NF9MSU5URkxBR1MsCiNkZWZpbmUgX0NTX1BPU0lYX1Y3
X0xQNjRfT0ZGNjRfTElOVEZMQUdTIF9DU19QT1NJWF9WN19MUDY0X09GRjY0X0xJTlRGTEFHUwog
ICAgX0NTX1BPU0lYX1Y3X0xQQklHX09GRkJJR19DRkxBR1MsCiNkZWZpbmUgX0NTX1BPU0lYX1Y3
X0xQQklHX09GRkJJR19DRkxBR1MgX0NTX1BPU0lYX1Y3X0xQQklHX09GRkJJR19DRkxBR1MKICAg
IF9DU19QT1NJWF9WN19MUEJJR19PRkZCSUdfTERGTEFHUywKI2RlZmluZSBfQ1NfUE9TSVhfVjdf
TFBCSUdfT0ZGQklHX0xERkxBR1MgX0NTX1BPU0lYX1Y3X0xQQklHX09GRkJJR19MREZMQUdTCiAg
ICBfQ1NfUE9TSVhfVjdfTFBCSUdfT0ZGQklHX0xJQlMsCiNkZWZpbmUgX0NTX1BPU0lYX1Y3X0xQ
QklHX09GRkJJR19MSUJTIF9DU19QT1NJWF9WN19MUEJJR19PRkZCSUdfTElCUwogICAgX0NTX1BP
U0lYX1Y3X0xQQklHX09GRkJJR19MSU5URkxBR1MsCiNkZWZpbmUgX0NTX1BPU0lYX1Y3X0xQQklH
X09GRkJJR19MSU5URkxBR1MgX0NTX1BPU0lYX1Y3X0xQQklHX09GRkJJR19MSU5URkxBR1MKCiAg
ICBfQ1NfVjZfRU5WLAojZGVmaW5lIF9DU19WNl9FTlYgX0NTX1Y2X0VOVgogICAgX0NTX1Y3X0VO
VgojZGVmaW5lIF9DU19WN19FTlYgX0NTX1Y3X0VOVgogIH07CiMgNjEwICIvdXNyL2luY2x1ZGUv
dW5pc3RkLmgiIDIgMyA0CgoKZXh0ZXJuIGxvbmcgaW50IHBhdGhjb25mIChjb25zdCBjaGFyICpf
X3BhdGgsIGludCBfX25hbWUpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs
bF9fICgxKSkpOwoKCmV4dGVybiBsb25nIGludCBmcGF0aGNvbmYgKGludCBfX2ZkLCBpbnQgX19u
YW1lKSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBpbnQgc3lzY29uZiAoaW50IF9fbmFtZSkgdGhy
b3cgKCk7CgoKCmV4dGVybiBzaXplX3QgY29uZnN0ciAoaW50IF9fbmFtZSwgY2hhciAqX19idWYs
IHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gX19waWRfdCBnZXRwaWQgKHZvaWQp
IHRocm93ICgpOwoKCmV4dGVybiBfX3BpZF90IGdldHBwaWQgKHZvaWQpIHRocm93ICgpOwoKCmV4
dGVybiBfX3BpZF90IGdldHBncnAgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBfX3BpZF90IF9f
Z2V0cGdpZCAoX19waWRfdCBfX3BpZCkgdGhyb3cgKCk7CgpleHRlcm4gX19waWRfdCBnZXRwZ2lk
IChfX3BpZF90IF9fcGlkKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBzZXRwZ2lkIChfX3Bp
ZF90IF9fcGlkLCBfX3BpZF90IF9fcGdpZCkgdGhyb3cgKCk7CiMgNjYwICIvdXNyL2luY2x1ZGUv
dW5pc3RkLmgiIDMgNApleHRlcm4gaW50IHNldHBncnAgKHZvaWQpIHRocm93ICgpOwoKCgoKCgpl
eHRlcm4gX19waWRfdCBzZXRzaWQgKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gX19waWRfdCBn
ZXRzaWQgKF9fcGlkX3QgX19waWQpIHRocm93ICgpOwoKCgpleHRlcm4gX191aWRfdCBnZXR1aWQg
KHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBfX3VpZF90IGdldGV1aWQgKHZvaWQpIHRocm93ICgp
OwoKCmV4dGVybiBfX2dpZF90IGdldGdpZCAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9fZ2lk
X3QgZ2V0ZWdpZCAodm9pZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGdldGdyb3VwcyAoaW50
IF9fc2l6ZSwgX19naWRfdCBfX2xpc3RbXSkgdGhyb3cgKCkgOwoKCgpleHRlcm4gaW50IGdyb3Vw
X21lbWJlciAoX19naWRfdCBfX2dpZCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgc2V0dWlk
IChfX3VpZF90IF9fdWlkKSB0aHJvdyAoKSA7CgoKCgpleHRlcm4gaW50IHNldHJldWlkIChfX3Vp
ZF90IF9fcnVpZCwgX191aWRfdCBfX2V1aWQpIHRocm93ICgpIDsKCgoKCmV4dGVybiBpbnQgc2V0
ZXVpZCAoX191aWRfdCBfX3VpZCkgdGhyb3cgKCkgOwoKCgoKCgpleHRlcm4gaW50IHNldGdpZCAo
X19naWRfdCBfX2dpZCkgdGhyb3cgKCkgOwoKCgoKZXh0ZXJuIGludCBzZXRyZWdpZCAoX19naWRf
dCBfX3JnaWQsIF9fZ2lkX3QgX19lZ2lkKSB0aHJvdyAoKSA7CgoKCgpleHRlcm4gaW50IHNldGVn
aWQgKF9fZ2lkX3QgX19naWQpIHRocm93ICgpIDsKCgoKCgpleHRlcm4gaW50IGdldHJlc3VpZCAo
X191aWRfdCAqX19ydWlkLCBfX3VpZF90ICpfX2V1aWQsIF9fdWlkX3QgKl9fc3VpZCkKICAgICB0
aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBnZXRyZXNnaWQgKF9fZ2lkX3QgKl9fcmdpZCwgX19naWRf
dCAqX19lZ2lkLCBfX2dpZF90ICpfX3NnaWQpCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQg
c2V0cmVzdWlkIChfX3VpZF90IF9fcnVpZCwgX191aWRfdCBfX2V1aWQsIF9fdWlkX3QgX19zdWlk
KQogICAgIHRocm93ICgpIDsKCgoKZXh0ZXJuIGludCBzZXRyZXNnaWQgKF9fZ2lkX3QgX19yZ2lk
LCBfX2dpZF90IF9fZWdpZCwgX19naWRfdCBfX3NnaWQpCiAgICAgdGhyb3cgKCkgOwoKCgoKCgpl
eHRlcm4gX19waWRfdCBmb3JrICh2b2lkKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBfX3BpZF90
IHZmb3JrICh2b2lkKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAqdHR5bmFtZSAoaW50IF9f
ZmQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHR0eW5hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9f
YnVmLCBzaXplX3QgX19idWZsZW4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u
bnVsbF9fICgyKSkpIDsKCgoKZXh0ZXJuIGludCBpc2F0dHkgKGludCBfX2ZkKSB0aHJvdyAoKTsK
CgoKCgpleHRlcm4gaW50IHR0eXNsb3QgKHZvaWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBs
aW5rIChjb25zdCBjaGFyICpfX2Zyb20sIGNvbnN0IGNoYXIgKl9fdG8pCiAgICAgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpIDsKCgoKCmV4dGVybiBpbnQgbGlu
a2F0IChpbnQgX19mcm9tZmQsIGNvbnN0IGNoYXIgKl9fZnJvbSwgaW50IF9fdG9mZCwKICAgICBj
b25zdCBjaGFyICpfX3RvLCBpbnQgX19mbGFncykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub25udWxsX18gKDIsIDQpKSkgOwoKCgoKZXh0ZXJuIGludCBzeW1saW5rIChjb25zdCBj
aGFyICpfX2Zyb20sIGNvbnN0IGNoYXIgKl9fdG8pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpIDsKCgoKCmV4dGVybiBzc2l6ZV90IHJlYWRsaW5rIChj
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGF0aCwKICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYs
IHNpemVfdCBfX2xlbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g
KDEsIDIpKSkgOwoKCgoKZXh0ZXJuIGludCBzeW1saW5rYXQgKGNvbnN0IGNoYXIgKl9fZnJvbSwg
aW50IF9fdG9mZCwKICAgICAgICBjb25zdCBjaGFyICpfX3RvKSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19ub25udWxsX18gKDEsIDMpKSkgOwoKCmV4dGVybiBzc2l6ZV90IHJlYWRsaW5rYXQg
KGludCBfX2ZkLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGF0aCwKICAgICAgY2hhciAqX19y
ZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX25vbm51bGxfXyAoMiwgMykpKSA7CgoKCmV4dGVybiBpbnQgdW5saW5rIChjb25zdCBjaGFy
ICpfX25hbWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoK
ZXh0ZXJuIGludCB1bmxpbmthdCAoaW50IF9fZmQsIGNvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9f
ZmxhZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoK
CmV4dGVybiBpbnQgcm1kaXIgKGNvbnN0IGNoYXIgKl9fcGF0aCkgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgpleHRlcm4gX19waWRfdCB0Y2dldHBncnAgKGlu
dCBfX2ZkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHRjc2V0cGdycCAoaW50IF9fZmQsIF9fcGlk
X3QgX19wZ3JwX2lkKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmdldGxvZ2luICh2b2lk
KTsKCgoKCgoKCmV4dGVybiBpbnQgZ2V0bG9naW5fciAoY2hhciAqX19uYW1lLCBzaXplX3QgX19u
YW1lX2xlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKZXh0ZXJuIGlu
dCBzZXRsb2dpbiAoY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19ub25udWxsX18gKDEpKSk7CgoKCgoKCgojZGVmaW5lIF9fbmVlZF9nZXRvcHQgCiMgMSAiL3Vz
ci9pbmNsdWRlL2dldG9wdC5oIiAxIDMgNAojIDQ4ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMg
NApleHRlcm4gIkMiIHsKIyA1NyAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzIDQKZXh0ZXJuIGNo
YXIgKm9wdGFyZzsKIyA3MSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzIDQKZXh0ZXJuIGludCBv
cHRpbmQ7CgoKCgpleHRlcm4gaW50IG9wdGVycjsKCgoKZXh0ZXJuIGludCBvcHRvcHQ7CiMgMTUw
ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMgNApleHRlcm4gaW50IGdldG9wdCAoaW50IF9fX2Fy
Z2MsIGNoYXIgKmNvbnN0ICpfX19hcmd2LCBjb25zdCBjaGFyICpfX3Nob3J0b3B0cykKICAgICAg
IHRocm93ICgpOwojIDE4NSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzIDQKfQoKCgojdW5kZWYg
X19uZWVkX2dldG9wdAojIDg3MiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMgNAoKCgoKCgoK
ZXh0ZXJuIGludCBnZXRob3N0bmFtZSAoY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgoKZXh0ZXJuIGludCBz
ZXRob3N0bmFtZSAoY29uc3QgY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKZXh0ZXJuIGludCBzZXRo
b3N0aWQgKGxvbmcgaW50IF9faWQpIHRocm93ICgpIDsKCgoKCgpleHRlcm4gaW50IGdldGRvbWFp
bm5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CmV4dGVybiBpbnQgc2V0ZG9tYWlubmFtZSAoY29u
c3QgY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKCgpleHRlcm4gaW50IHZoYW5ndXAgKHZvaWQpIHRo
cm93ICgpOwoKCmV4dGVybiBpbnQgcmV2b2tlIChjb25zdCBjaGFyICpfX2ZpbGUpIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CgoKCgoKCgpleHRlcm4gaW50IHBy
b2ZpbCAodW5zaWduZWQgc2hvcnQgaW50ICpfX3NhbXBsZV9idWZmZXIsIHNpemVfdCBfX3NpemUs
CiAgICAgc2l6ZV90IF9fb2Zmc2V0LCB1bnNpZ25lZCBpbnQgX19zY2FsZSkKICAgICB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKZXh0ZXJuIGludCBhY2N0
IChjb25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqZ2V0dXNlcnNo
ZWxsICh2b2lkKSB0aHJvdyAoKTsKZXh0ZXJuIHZvaWQgZW5kdXNlcnNoZWxsICh2b2lkKSB0aHJv
dyAoKTsKZXh0ZXJuIHZvaWQgc2V0dXNlcnNoZWxsICh2b2lkKSB0aHJvdyAoKTsKCgoKCgpleHRl
cm4gaW50IGRhZW1vbiAoaW50IF9fbm9jaGRpciwgaW50IF9fbm9jbG9zZSkgdGhyb3cgKCkgOwoK
CgoKCgpleHRlcm4gaW50IGNocm9vdCAoY29uc3QgY2hhciAqX19wYXRoKSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKCgpleHRlcm4gY2hhciAqZ2V0cGFzcyAo
Y29uc3QgY2hhciAqX19wcm9tcHQpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsK
CgoKCgoKCmV4dGVybiBpbnQgZnN5bmMgKGludCBfX2ZkKTsKCgoKCgpleHRlcm4gaW50IHN5bmNm
cyAoaW50IF9fZmQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgZ2V0aG9zdGlkICh2
b2lkKTsKCgpleHRlcm4gdm9pZCBzeW5jICh2b2lkKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50
IGdldHBhZ2VzaXplICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCgpleHRlcm4gaW50IGdldGR0YWJsZXNpemUgKHZvaWQpIHRocm93ICgpOwojIDk5MyAiL3Vz
ci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGludCB0cnVuY2F0ZSAoY29uc3QgY2hhciAq
X19maWxlLCBfX29mZl90IF9fbGVuZ3RoKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X25vbm51bGxfXyAoMSkpKSA7CiMgMTAwNSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0
ZXJuIGludCB0cnVuY2F0ZTY0IChjb25zdCBjaGFyICpfX2ZpbGUsIF9fb2ZmNjRfdCBfX2xlbmd0
aCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwojIDEw
MTYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBpbnQgZnRydW5jYXRlIChpbnQg
X19mZCwgX19vZmZfdCBfX2xlbmd0aCkgdGhyb3cgKCkgOwojIDEwMjYgIi91c3IvaW5jbHVkZS91
bmlzdGQuaCIgMyA0CmV4dGVybiBpbnQgZnRydW5jYXRlNjQgKGludCBfX2ZkLCBfX29mZjY0X3Qg
X19sZW5ndGgpIHRocm93ICgpIDsKIyAxMDM3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApl
eHRlcm4gaW50IGJyayAodm9pZCAqX19hZGRyKSB0aHJvdyAoKSA7CgoKCgoKZXh0ZXJuIHZvaWQg
KnNicmsgKGludHB0cl90IF9fZGVsdGEpIHRocm93ICgpOwojIDEwNTggIi91c3IvaW5jbHVkZS91
bmlzdGQuaCIgMyA0CmV4dGVybiBsb25nIGludCBzeXNjYWxsIChsb25nIGludCBfX3N5c25vLCAu
Li4pIHRocm93ICgpOwojIDEwNzUgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CiNkZWZpbmUg
Rl9VTE9DSyAwCiNkZWZpbmUgRl9MT0NLIDEKI2RlZmluZSBGX1RMT0NLIDIKI2RlZmluZSBGX1RF
U1QgMwoKCmV4dGVybiBpbnQgbG9ja2YgKGludCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmX3QgX19s
ZW4pIDsKIyAxMDkxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gaW50IGxvY2tm
NjQgKGludCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmNjRfdCBfX2xlbikgOwojIDExMDEgIi91c3Iv
aW5jbHVkZS91bmlzdGQuaCIgMyA0CiNkZWZpbmUgVEVNUF9GQUlMVVJFX1JFVFJZKGV4cHJlc3Np
b24pIChfX2V4dGVuc2lvbl9fICh7IGxvbmcgaW50IF9fcmVzdWx0OyBkbyBfX3Jlc3VsdCA9IChs
b25nIGludCkgKGV4cHJlc3Npb24pOyB3aGlsZSAoX19yZXN1bHQgPT0gLTFMICYmIGVycm5vID09
IEVJTlRSKTsgX19yZXN1bHQ7IH0pKQojIDExMTIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0
CmV4dGVybiBpbnQgZmRhdGFzeW5jIChpbnQgX19maWxkZXMpOwoKCgoKCgoKZXh0ZXJuIGNoYXIg
KmNyeXB0IChjb25zdCBjaGFyICpfX2tleSwgY29uc3QgY2hhciAqX19zYWx0KQogICAgIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgoKZXh0ZXJuIHZvaWQg
ZW5jcnlwdCAoY2hhciAqX19nbGliY19ibG9jaywgaW50IF9fZWRmbGFnKQogICAgIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgoKZXh0ZXJuIHZvaWQgc3dh
YiAoY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX2Zyb20sIHZvaWQgKl9fcmVzdHJpY3QgX190bywK
ICAgIHNzaXplX3QgX19uKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs
IDIpKSk7CiMgMTE1MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKfQojIDUyICIuLi8uLi9T
b3VyY2UvV1RGL3d0Zi9QYWdlQWxsb2NhdGlvbi5oIiAyCgoKbmFtZXNwYWNlIFdURiB7CiMgNzIg
Ii4uLy4uL1NvdXJjZS9XVEYvd3RmL1BhZ2VBbGxvY2F0aW9uLmgiCmNsYXNzIFBhZ2VBbGxvY2F0
aW9uIDogcHJpdmF0ZSBQYWdlQmxvY2sgewpwdWJsaWM6CiAgICBQYWdlQWxsb2NhdGlvbigpCiAg
ICB7CiAgICB9CgogICAgdXNpbmcgUGFnZUJsb2NrOjpzaXplOwogICAgdXNpbmcgUGFnZUJsb2Nr
OjpiYXNlOwoKCiAgICB1c2luZyBQYWdlQmxvY2s6Om9wZXJhdG9yIGJvb2w7CgoKCgoKCiAgICBz
dGF0aWMgUGFnZUFsbG9jYXRpb24gYWxsb2NhdGUoc2l6ZV90IHNpemUsIE9TQWxsb2NhdG9yOjpV
c2FnZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0
cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAg
ICAgICAgcmV0dXJuIFBhZ2VBbGxvY2F0aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0
KHNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSksIHNpemUpOwogICAgfQoKICAgIHZv
aWQgZGVhbGxvY2F0ZSgpCiAgICB7CgoKICAgICAgICBQYWdlQWxsb2NhdGlvbiB0bXA7CiAgICAg
ICAgc3RkOjpzd2FwKHRtcCwgKnRoaXMpOwoKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2
b2lkKTApOwoKICAgICAgICBPU0FsbG9jYXRvcjo6ZGVjb21taXRBbmRSZWxlYXNlKHRtcC5iYXNl
KCksIHRtcC5zaXplKCkpOwogICAgfQoKcHJpdmF0ZToKICAgIFBhZ2VBbGxvY2F0aW9uKHZvaWQq
IGJhc2UsIHNpemVfdCBzaXplKQogICAgICAgIDogUGFnZUJsb2NrKGJhc2UsIHNpemUsIGZhbHNl
KQogICAgewogICAgfQp9OwoKfQoKdXNpbmcgV1RGOjpQYWdlQWxsb2NhdGlvbjsKIyAzNiAiLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgiIDIKCiMg
MSAiLi4vLi4vU291cmNlL1dURi93dGYvVmVjdG9yLmgiIDEKIyAyMiAiLi4vLi4vU291cmNlL1dU
Ri93dGYvVmVjdG9yLmgiCiNkZWZpbmUgV1RGX1ZlY3Rvcl9oIAojIDMxICIuLi8uLi9Tb3VyY2Uv
V1RGL3d0Zi9WZWN0b3IuaCIKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaCIg
MQojIDI3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaCIKI2RlZmluZSBNYWxsb2NQ
dHJfaCAKCgoKCgpuYW1lc3BhY2UgV1RGIHsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIE1h
bGxvY1B0ciB7CnB1YmxpYzoKICAgIE1hbGxvY1B0cigpCiAgICAgICAgOiBtX3B0cihudWxscHRy
KQogICAgewogICAgfQoKICAgIE1hbGxvY1B0cihzdGQ6Om51bGxwdHJfdCkKICAgICAgICA6IG1f
cHRyKG51bGxwdHIpCiAgICB7CiAgICB9CgogICAgTWFsbG9jUHRyKE1hbGxvY1B0ciYmIG90aGVy
KQogICAgICAgIDogbV9wdHIob3RoZXIubGVha1B0cigpKQogICAgewogICAgfQoKICAgIH5NYWxs
b2NQdHIoKQogICAgewogICAgICAgIGZhc3RGcmVlKG1fcHRyKTsKICAgIH0KCiAgICBUKiBnZXQo
KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX3B0cjsKICAgIH0KCiAgICBUICpsZWFrUHRy
KCkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpCiAgICB7CiAgICAgICAg
cmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9wdHIsIG51bGxwdHIpOwogICAgfQoKICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gIW1fcHRyOwogICAgfQoKICAgIE1h
bGxvY1B0ciYgb3BlcmF0b3I9KE1hbGxvY1B0ciYmIG90aGVyKQogICAgewogICAgICAgIE1hbGxv
Y1B0ciBwdHIgPSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KG90aGVyKTsKICAg
ICAgICBzd2FwKHB0cik7CgogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICB2b2lkIHN3
YXAoTWFsbG9jUHRyJiBvdGhlcikKICAgIHsKICAgICAgICBzdGQ6OnN3YXAobV9wdHIsIG90aGVy
Lm1fcHRyKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgTWFsbG9jUHRy
PFU+IGFkb3B0TWFsbG9jUHRyKFUqKTsKCiAgICBzdGF0aWMgTWFsbG9jUHRyIG1hbGxvYyhzaXpl
X3Qgc2l6ZSkKICAgIHsKICAgICAgICBNYWxsb2NQdHIgbWFsbG9jUHRyOwogICAgICAgIG1hbGxv
Y1B0ci5tX3B0ciA9IHN0YXRpY19jYXN0PFQqPihmYXN0TWFsbG9jKHNpemUpKTsKCiAgICAgICAg
cmV0dXJuIG1hbGxvY1B0cjsKICAgIH0KCiAgICB2b2lkIHJlYWxsb2Moc2l6ZV90IG5ld1NpemUp
CiAgICB7CiAgICAgICAgbV9wdHIgPSBzdGF0aWNfY2FzdDxUKj4oZmFzdFJlYWxsb2MobV9wdHIs
IG5ld1NpemUpKTsKICAgIH0KCnByaXZhdGU6CiAgICBleHBsaWNpdCBNYWxsb2NQdHIoVCogcHRy
KQogICAgICAgIDogbV9wdHIocHRyKQogICAgewogICAgfQoKICAgIFQqIG1fcHRyOwp9OwoKdGVt
cGxhdGU8dHlwZW5hbWUgVT4gTWFsbG9jUHRyPFU+IGFkb3B0TWFsbG9jUHRyKFUqIHB0cikKewog
ICAgcmV0dXJuIE1hbGxvY1B0cjxVPihwdHIpOwp9Cgp9Cgp1c2luZyBXVEY6Ok1hbGxvY1B0cjsK
dXNpbmcgV1RGOjphZG9wdE1hbGxvY1B0cjsKIyAzMiAiLi4vLi4vU291cmNlL1dURi93dGYvVmVj
dG9yLmgiIDIKCgoKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3JUcmFpdHMuaCIgMQoj
IDIyICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3JUcmFpdHMuaCIKI2RlZmluZSBXVEZfVmVj
dG9yVHJhaXRzX2ggCgoKCgoKCm5hbWVzcGFjZSBXVEYgewoKICAgIGNsYXNzIEF0b21pY1N0cmlu
ZzsKCiAgICB0ZW1wbGF0ZTxib29sIGlzUG9kLCB0eXBlbmFtZSBUPgogICAgc3RydWN0IFZlY3Rv
clRyYWl0c0Jhc2U7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgIHN0cnVjdCBWZWN0b3JU
cmFpdHNCYXNlPGZhbHNlLCBUPgogICAgewogICAgICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRz
SW5pdGlhbGl6YXRpb24gPSB0cnVlOwogICAgICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkluaXRp
YWxpemVXaXRoTWVtc2V0ID0gZmFsc2U7CiAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgY2FuTW92
ZVdpdGhNZW1jcHkgPSBmYWxzZTsKICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBjYW5Db3B5V2l0
aE1lbWNweSA9IGZhbHNlOwogICAgICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkZpbGxXaXRoTWVt
c2V0ID0gZmFsc2U7CiAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgY2FuQ29tcGFyZVdpdGhNZW1j
bXAgPSBmYWxzZTsKICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgIHN0cnVjdCBW
ZWN0b3JUcmFpdHNCYXNlPHRydWUsIFQ+CiAgICB7CiAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
bmVlZHNJbml0aWFsaXphdGlvbiA9IGZhbHNlOwogICAgICAgIHN0YXRpYyBjb25zdCBib29sIGNh
bkluaXRpYWxpemVXaXRoTWVtc2V0ID0gZmFsc2U7CiAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
Y2FuTW92ZVdpdGhNZW1jcHkgPSB0cnVlOwogICAgICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkNv
cHlXaXRoTWVtY3B5ID0gdHJ1ZTsKICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBjYW5GaWxsV2l0
aE1lbXNldCA9IHNpemVvZihUKSA9PSBzaXplb2YoY2hhcik7CiAgICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgY2FuQ29tcGFyZVdpdGhNZW1jbXAgPSB0cnVlOwogICAgfTsKCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogICAgc3RydWN0IFZlY3RvclRyYWl0cyA6IFZlY3RvclRyYWl0c0Jhc2U8c3Rk
Ojppc19wb2Q8VD46OnZhbHVlLCBUPiB7IH07CgogICAgc3RydWN0IFNpbXBsZUNsYXNzVmVjdG9y
VHJhaXRzIDogVmVjdG9yVHJhaXRzQmFzZTxmYWxzZSwgdm9pZD4KICAgIHsKICAgICAgICBzdGF0
aWMgY29uc3QgYm9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IHRydWU7CiAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgY2FuTW92ZVdpdGhNZW1jcHkgPSB0cnVlOwogICAgICAgIHN0YXRpYyBj
b25zdCBib29sIGNhbkNvbXBhcmVXaXRoTWVtY21wID0gdHJ1ZTsKICAgIH07CgoKCgogICAgdGVt
cGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFZlY3RvclRyYWl0czxSZWZQdHI8UD4+IDogU2ltcGxl
Q2xhc3NWZWN0b3JUcmFpdHMgeyB9OwogICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFZl
Y3RvclRyYWl0czxzdGQ6OnVuaXF1ZV9wdHI8UD4+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMg
eyB9OwogICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFZlY3RvclRyYWl0czxSZWY8UD4+
IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9OwogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVj
dG9yVHJhaXRzPEF0b21pY1N0cmluZz4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lIFNlY29uZD4KICAgIHN0cnVjdCBW
ZWN0b3JUcmFpdHM8c3RkOjpwYWlyPEZpcnN0LCBTZWNvbmQ+PgogICAgewogICAgICAgIHR5cGVk
ZWYgVmVjdG9yVHJhaXRzPEZpcnN0PiBGaXJzdFRyYWl0czsKICAgICAgICB0eXBlZGVmIFZlY3Rv
clRyYWl0czxTZWNvbmQ+IFNlY29uZFRyYWl0czsKCiAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
bmVlZHNJbml0aWFsaXphdGlvbiA9IEZpcnN0VHJhaXRzOjpuZWVkc0luaXRpYWxpemF0aW9uIHx8
IFNlY29uZFRyYWl0czo6bmVlZHNJbml0aWFsaXphdGlvbjsKICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IEZpcnN0VHJhaXRzOjpjYW5Jbml0aWFsaXpl
V2l0aE1lbXNldCAmJiBTZWNvbmRUcmFpdHM6OmNhbkluaXRpYWxpemVXaXRoTWVtc2V0OwogICAg
ICAgIHN0YXRpYyBjb25zdCBib29sIGNhbk1vdmVXaXRoTWVtY3B5ID0gRmlyc3RUcmFpdHM6OmNh
bk1vdmVXaXRoTWVtY3B5ICYmIFNlY29uZFRyYWl0czo6Y2FuTW92ZVdpdGhNZW1jcHk7CiAgICAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgY2FuQ29weVdpdGhNZW1jcHkgPSBGaXJzdFRyYWl0czo6Y2Fu
Q29weVdpdGhNZW1jcHkgJiYgU2Vjb25kVHJhaXRzOjpjYW5Db3B5V2l0aE1lbWNweTsKICAgICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBjYW5GaWxsV2l0aE1lbXNldCA9IGZhbHNlOwogICAgICAgIHN0
YXRpYyBjb25zdCBib29sIGNhbkNvbXBhcmVXaXRoTWVtY21wID0gRmlyc3RUcmFpdHM6OmNhbkNv
bXBhcmVXaXRoTWVtY21wICYmIFNlY29uZFRyYWl0czo6Y2FuQ29tcGFyZVdpdGhNZW1jbXA7CiAg
ICB9OwoKfQoKdXNpbmcgV1RGOjpWZWN0b3JUcmFpdHM7CnVzaW5nIFdURjo6U2ltcGxlQ2xhc3NW
ZWN0b3JUcmFpdHM7CiMgMzYgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oIiAyCgoKCgoK
bmFtZXNwYWNlIFdURiB7Cgpjb25zdCBzaXplX3Qgbm90Rm91bmQgPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KC0xKTsKCnRlbXBsYXRlIDxib29sIG5lZWRzRGVzdHJ1Y3Rpb24sIHR5cGVuYW1lIFQ+CnN0
cnVjdCBWZWN0b3JEZXN0cnVjdG9yOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kc3RydWN0IFZlY3Rv
ckRlc3RydWN0b3I8ZmFsc2UsIFQ+CnsKICAgIHN0YXRpYyB2b2lkIGRlc3RydWN0KFQqLCBUKikg
e30KfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0cnVjdCBWZWN0b3JEZXN0cnVjdG9yPHRydWUs
IFQ+CnsKICAgIHN0YXRpYyB2b2lkIGRlc3RydWN0KFQqIGJlZ2luLCBUKiBlbmQpCiAgICB7CiAg
ICAgICAgZm9yIChUKiBjdXIgPSBiZWdpbjsgY3VyICE9IGVuZDsgKytjdXIpCiAgICAgICAgICAg
IGN1ci0+flQoKTsKICAgIH0KfTsKCnRlbXBsYXRlIDxib29sIG5lZWRzSW5pdGlhbGl6YXRpb24s
IGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIHR5cGVuYW1lIFQ+CnN0cnVjdCBWZWN0b3JJ
bml0aWFsaXplcjsKCnRlbXBsYXRlPGJvb2wgaWdub3JlLCB0eXBlbmFtZSBUPgpzdHJ1Y3QgVmVj
dG9ySW5pdGlhbGl6ZXI8ZmFsc2UsIGlnbm9yZSwgVD4KewogICAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZShUKiwgVCopIHt9Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpzdHJ1Y3QgVmVjdG9ySW5p
dGlhbGl6ZXI8dHJ1ZSwgZmFsc2UsIFQ+CnsKICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoVCog
YmVnaW4sIFQqIGVuZCkKICAgIHsKICAgICAgICBmb3IgKFQqIGN1ciA9IGJlZ2luOyBjdXIgIT0g
ZW5kOyArK2N1cikKICAgICAgICAgICAgbmV3IChOb3ROdWxsLCBjdXIpIFQ7CiAgICB9Cn07Cgp0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpzdHJ1Y3QgVmVjdG9ySW5pdGlhbGl6ZXI8dHJ1ZSwgdHJ1ZSwg
VD4KewogICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKQogICAgewog
ICAgICAgIG1lbXNldChiZWdpbiwgMCwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZW5kKSAtIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJlZ2luKSk7CiAgICB9Cn07Cgp0ZW1wbGF0ZSA8Ym9vbCBj
YW5Nb3ZlV2l0aE1lbWNweSwgdHlwZW5hbWUgVD4Kc3RydWN0IFZlY3Rvck1vdmVyOwoKdGVtcGxh
dGU8dHlwZW5hbWUgVD4Kc3RydWN0IFZlY3Rvck1vdmVyPGZhbHNlLCBUPgp7CiAgICBzdGF0aWMg
dm9pZCBtb3ZlKFQqIHNyYywgVCogc3JjRW5kLCBUKiBkc3QpCiAgICB7CiAgICAgICAgd2hpbGUg
KHNyYyAhPSBzcmNFbmQpIHsKICAgICAgICAgICAgbmV3IChOb3ROdWxsLCBkc3QpIFQoc3RkOjpt
b3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPigqc3JjKSk7CiAgICAgICAgICAgIHNyYy0+flQo
KTsKICAgICAgICAgICAgKytkc3Q7CiAgICAgICAgICAgICsrc3JjOwogICAgICAgIH0KICAgIH0K
ICAgIHN0YXRpYyB2b2lkIG1vdmVPdmVybGFwcGluZyhUKiBzcmMsIFQqIHNyY0VuZCwgVCogZHN0
KQogICAgewogICAgICAgIGlmIChzcmMgPiBkc3QpCiAgICAgICAgICAgIG1vdmUoc3JjLCBzcmNF
bmQsIGRzdCk7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIFQqIGRzdEVuZCA9IGRzdCArIChz
cmNFbmQgLSBzcmMpOwogICAgICAgICAgICB3aGlsZSAoc3JjICE9IHNyY0VuZCkgewogICAgICAg
ICAgICAgICAgLS1zcmNFbmQ7CiAgICAgICAgICAgICAgICAtLWRzdEVuZDsKICAgICAgICAgICAg
ICAgIG5ldyAoTm90TnVsbCwgZHN0RW5kKSBUKHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFt
ZXRlcj4oKnNyY0VuZCkpOwogICAgICAgICAgICAgICAgc3JjRW5kLT5+VCgpOwogICAgICAgICAg
ICB9CiAgICAgICAgfQogICAgfQp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kc3RydWN0IFZlY3Rv
ck1vdmVyPHRydWUsIFQ+CnsKICAgIHN0YXRpYyB2b2lkIG1vdmUoY29uc3QgVCogc3JjLCBjb25z
dCBUKiBzcmNFbmQsIFQqIGRzdCkKICAgIHsKICAgICAgICBtZW1jcHkoZHN0LCBzcmMsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNyY0VuZCkgLSByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihzcmMpKTsKICAgIH0KICAgIHN0YXRpYyB2b2lkIG1vdmVPdmVybGFwcGluZyhjb25z
dCBUKiBzcmMsIGNvbnN0IFQqIHNyY0VuZCwgVCogZHN0KQogICAgewogICAgICAgIG1lbW1vdmUo
ZHN0LCBzcmMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNyY0VuZCkgLSByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihzcmMpKTsKICAgIH0KfTsKCnRlbXBsYXRlIDxib29sIGNh
bkNvcHlXaXRoTWVtY3B5LCB0eXBlbmFtZSBUPgpzdHJ1Y3QgVmVjdG9yQ29waWVyOwoKdGVtcGxh
dGU8dHlwZW5hbWUgVD4Kc3RydWN0IFZlY3RvckNvcGllcjxmYWxzZSwgVD4KewogICAgdGVtcGxh
dGU8dHlwZW5hbWUgVT4KICAgIHN0YXRpYyB2b2lkIHVuaW5pdGlhbGl6ZWRDb3B5KGNvbnN0IFQq
IHNyYywgY29uc3QgVCogc3JjRW5kLCBVKiBkc3QpCiAgICB7CiAgICAgICAgd2hpbGUgKHNyYyAh
PSBzcmNFbmQpIHsKICAgICAgICAgICAgbmV3IChOb3ROdWxsLCBkc3QpIFUoKnNyYyk7CiAgICAg
ICAgICAgICsrZHN0OwogICAgICAgICAgICArK3NyYzsKICAgICAgICB9CiAgICB9Cn07Cgp0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgpzdHJ1Y3QgVmVjdG9yQ29waWVyPHRydWUsIFQ+CnsKICAgIHN0YXRp
YyB2b2lkIHVuaW5pdGlhbGl6ZWRDb3B5KGNvbnN0IFQqIHNyYywgY29uc3QgVCogc3JjRW5kLCBU
KiBkc3QpCiAgICB7CiAgICAgICAgbWVtY3B5KGRzdCwgc3JjLCByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihzcmNFbmQpIC0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3JjKSk7
CiAgICB9CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgogICAgc3RhdGljIHZvaWQgdW5pbml0aWFs
aXplZENvcHkoY29uc3QgVCogc3JjLCBjb25zdCBUKiBzcmNFbmQsIFUqIGRzdCkKICAgIHsKICAg
ICAgICBWZWN0b3JDb3BpZXI8ZmFsc2UsIFQ+Ojp1bmluaXRpYWxpemVkQ29weShzcmMsIHNyY0Vu
ZCwgZHN0KTsKICAgIH0KfTsKCnRlbXBsYXRlIDxib29sIGNhbkZpbGxXaXRoTWVtc2V0LCB0eXBl
bmFtZSBUPgpzdHJ1Y3QgVmVjdG9yRmlsbGVyOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kc3RydWN0
IFZlY3RvckZpbGxlcjxmYWxzZSwgVD4KewogICAgc3RhdGljIHZvaWQgdW5pbml0aWFsaXplZEZp
bGwoVCogZHN0LCBUKiBkc3RFbmQsIGNvbnN0IFQmIHZhbCkKICAgIHsKICAgICAgICB3aGlsZSAo
ZHN0ICE9IGRzdEVuZCkgewogICAgICAgICAgICBuZXcgKE5vdE51bGwsIGRzdCkgVCh2YWwpOwog
ICAgICAgICAgICArK2RzdDsKICAgICAgICB9CiAgICB9Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgpzdHJ1Y3QgVmVjdG9yRmlsbGVyPHRydWUsIFQ+CnsKICAgIHN0YXRpYyB2b2lkIHVuaW5pdGlh
bGl6ZWRGaWxsKFQqIGRzdCwgVCogZHN0RW5kLCBjb25zdCBUJiB2YWwpCiAgICB7CiAgICAgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoVCkgPT0gMSwgIlNpemUgb2YgdHlwZSBUIHNob3VsZCBiZSBl
cXVhbCB0byBvbmUhIik7CgoKCiAgICAgICAgICAgIG1lbXNldChkc3QsIHZhbCwgZHN0RW5kIC0g
ZHN0KTsKICAgIH0KfTsKCnRlbXBsYXRlPGJvb2wgY2FuQ29tcGFyZVdpdGhNZW1jbXAsIHR5cGVu
YW1lIFQ+CnN0cnVjdCBWZWN0b3JDb21wYXJlcjsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0cnVj
dCBWZWN0b3JDb21wYXJlcjxmYWxzZSwgVD4KewogICAgc3RhdGljIGJvb2wgY29tcGFyZShjb25z
dCBUKiBhLCBjb25zdCBUKiBiLCBzaXplX3Qgc2l6ZSkKICAgIHsKICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgICAgaWYgKCEoYVtpXSA9PSBiW2ldKSkK
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0K
fTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0cnVjdCBWZWN0b3JDb21wYXJlcjx0cnVlLCBUPgp7
CiAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IFQqIGEsIGNvbnN0IFQqIGIsIHNpemVfdCBz
aXplKQogICAgewogICAgICAgIHJldHVybiBtZW1jbXAoYSwgYiwgc2l6ZW9mKFQpICogc2l6ZSkg
PT0gMDsKICAgIH0KfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0cnVjdCBWZWN0b3JUeXBlT3Bl
cmF0aW9ucwp7CiAgICBzdGF0aWMgdm9pZCBkZXN0cnVjdChUKiBiZWdpbiwgVCogZW5kKQogICAg
ewogICAgICAgIFZlY3RvckRlc3RydWN0b3I8IXN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJs
ZTxUPjo6dmFsdWUsIFQ+OjpkZXN0cnVjdChiZWdpbiwgZW5kKTsKICAgIH0KCiAgICBzdGF0aWMg
dm9pZCBpbml0aWFsaXplKFQqIGJlZ2luLCBUKiBlbmQpCiAgICB7CiAgICAgICAgVmVjdG9ySW5p
dGlhbGl6ZXI8VmVjdG9yVHJhaXRzPFQ+OjpuZWVkc0luaXRpYWxpemF0aW9uLCBWZWN0b3JUcmFp
dHM8VD46OmNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCBUPjo6aW5pdGlhbGl6ZShiZWdpbiwgZW5k
KTsKICAgIH0KCiAgICBzdGF0aWMgdm9pZCBtb3ZlKFQqIHNyYywgVCogc3JjRW5kLCBUKiBkc3Qp
CiAgICB7CiAgICAgICAgVmVjdG9yTW92ZXI8VmVjdG9yVHJhaXRzPFQ+OjpjYW5Nb3ZlV2l0aE1l
bWNweSwgVD46Om1vdmUoc3JjLCBzcmNFbmQsIGRzdCk7CiAgICB9CgogICAgc3RhdGljIHZvaWQg
bW92ZU92ZXJsYXBwaW5nKFQqIHNyYywgVCogc3JjRW5kLCBUKiBkc3QpCiAgICB7CiAgICAgICAg
VmVjdG9yTW92ZXI8VmVjdG9yVHJhaXRzPFQ+OjpjYW5Nb3ZlV2l0aE1lbWNweSwgVD46Om1vdmVP
dmVybGFwcGluZyhzcmMsIHNyY0VuZCwgZHN0KTsKICAgIH0KCiAgICBzdGF0aWMgdm9pZCB1bmlu
aXRpYWxpemVkQ29weShjb25zdCBUKiBzcmMsIGNvbnN0IFQqIHNyY0VuZCwgVCogZHN0KQogICAg
ewogICAgICAgIFZlY3RvckNvcGllcjxWZWN0b3JUcmFpdHM8VD46OmNhbkNvcHlXaXRoTWVtY3B5
LCBUPjo6dW5pbml0aWFsaXplZENvcHkoc3JjLCBzcmNFbmQsIGRzdCk7CiAgICB9CgogICAgc3Rh
dGljIHZvaWQgdW5pbml0aWFsaXplZEZpbGwoVCogZHN0LCBUKiBkc3RFbmQsIGNvbnN0IFQmIHZh
bCkKICAgIHsKICAgICAgICBWZWN0b3JGaWxsZXI8VmVjdG9yVHJhaXRzPFQ+OjpjYW5GaWxsV2l0
aE1lbXNldCwgVD46OnVuaW5pdGlhbGl6ZWRGaWxsKGRzdCwgZHN0RW5kLCB2YWwpOwogICAgfQoK
ICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3QgVCogYSwgY29uc3QgVCogYiwgc2l6ZV90IHNp
emUpCiAgICB7CiAgICAgICAgcmV0dXJuIFZlY3RvckNvbXBhcmVyPFZlY3RvclRyYWl0czxUPjo6
Y2FuQ29tcGFyZVdpdGhNZW1jbXAsIFQ+Ojpjb21wYXJlKGEsIGIsIHNpemUpOwogICAgfQp9OwoK
dGVtcGxhdGU8dHlwZW5hbWUgVD4KY2xhc3MgVmVjdG9yQnVmZmVyQmFzZSB7CiAgICBwcml2YXRl
OiBWZWN0b3JCdWZmZXJCYXNlKGNvbnN0IFZlY3RvckJ1ZmZlckJhc2UmKSA9IGRlbGV0ZTsgVmVj
dG9yQnVmZmVyQmFzZSYgb3BlcmF0b3I9KGNvbnN0IFZlY3RvckJ1ZmZlckJhc2UmKSA9IGRlbGV0
ZTs7CnB1YmxpYzoKICAgIHZvaWQgYWxsb2NhdGVCdWZmZXIoc2l6ZV90IG5ld0NhcGFjaXR5KQog
ICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICBpZiAobmV3Q2FwYWNpdHkgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLyBzaXplb2YoVCkpCiAgICAgICAgICAgIFdU
RkNyYXNoKCk7CiAgICAgICAgc2l6ZV90IHNpemVUb0FsbG9jYXRlID0gbmV3Q2FwYWNpdHkgKiBz
aXplb2YoVCk7CiAgICAgICAgbV9jYXBhY2l0eSA9IHNpemVUb0FsbG9jYXRlIC8gc2l6ZW9mKFQp
OwogICAgICAgIG1fYnVmZmVyID0gc3RhdGljX2Nhc3Q8VCo+KGZhc3RNYWxsb2Moc2l6ZVRvQWxs
b2NhdGUpKTsKICAgIH0KCiAgICBib29sIHRyeUFsbG9jYXRlQnVmZmVyKHNpemVfdCBuZXdDYXBh
Y2l0eSkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgaWYgKG5ld0NhcGFjaXR5ID4g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC8gc2l6ZW9mKFQpKQogICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CgogICAgICAgIHNpemVfdCBzaXplVG9BbGxvY2F0ZSA9IG5ld0Nh
cGFjaXR5ICogc2l6ZW9mKFQpOwogICAgICAgIFQqIG5ld0J1ZmZlcjsKICAgICAgICBpZiAodHJ5
RmFzdE1hbGxvYyhzaXplVG9BbGxvY2F0ZSkuZ2V0VmFsdWUobmV3QnVmZmVyKSkgewogICAgICAg
ICAgICBtX2NhcGFjaXR5ID0gc2l6ZVRvQWxsb2NhdGUgLyBzaXplb2YoVCk7CiAgICAgICAgICAg
IG1fYnVmZmVyID0gbmV3QnVmZmVyOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9
CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGJvb2wgc2hvdWxkUmVhbGxvY2F0ZUJ1
ZmZlcihzaXplX3QgbmV3Q2FwYWNpdHkpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIFZlY3Rv
clRyYWl0czxUPjo6Y2FuTW92ZVdpdGhNZW1jcHkgJiYgbV9jYXBhY2l0eSAmJiBuZXdDYXBhY2l0
eTsKICAgIH0KCiAgICB2b2lkIHJlYWxsb2NhdGVCdWZmZXIoc2l6ZV90IG5ld0NhcGFjaXR5KQog
ICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICBpZiAobmV3Q2FwYWNpdHkgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC8gc2l6ZW9mKFQpKQogICAgICAgICAgICBXVEZD
cmFzaCgpOwogICAgICAgIHNpemVfdCBzaXplVG9BbGxvY2F0ZSA9IG5ld0NhcGFjaXR5ICogc2l6
ZW9mKFQpOwogICAgICAgIG1fY2FwYWNpdHkgPSBzaXplVG9BbGxvY2F0ZSAvIHNpemVvZihUKTsK
ICAgICAgICBtX2J1ZmZlciA9IHN0YXRpY19jYXN0PFQqPihmYXN0UmVhbGxvYyhtX2J1ZmZlciwg
c2l6ZVRvQWxsb2NhdGUpKTsKICAgIH0KCiAgICB2b2lkIGRlYWxsb2NhdGVCdWZmZXIoVCogYnVm
ZmVyVG9EZWFsbG9jYXRlKQogICAgewogICAgICAgIGlmICghYnVmZmVyVG9EZWFsbG9jYXRlKQog
ICAgICAgICAgICByZXR1cm47CgogICAgICAgIGlmIChtX2J1ZmZlciA9PSBidWZmZXJUb0RlYWxs
b2NhdGUpIHsKICAgICAgICAgICAgbV9idWZmZXIgPSAwOwogICAgICAgICAgICBtX2NhcGFjaXR5
ID0gMDsKICAgICAgICB9CgogICAgICAgIGZhc3RGcmVlKGJ1ZmZlclRvRGVhbGxvY2F0ZSk7CiAg
ICB9CgogICAgVCogYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgIGNvbnN0IFQqIGJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICBzdGF0aWMgcHRyZGlmZl90IGJ1
ZmZlck1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4o
JihyZWludGVycHJldF9jYXN0PFZlY3RvckJ1ZmZlckJhc2UqPigweDQwMDApLT5tX2J1ZmZlcikp
IC0gMHg0MDAwKTsgfQogICAgc2l6ZV90IGNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9jYXBh
Y2l0eTsgfQoKICAgIE1hbGxvY1B0cjxUPiByZWxlYXNlQnVmZmVyKCkKICAgIHsKICAgICAgICBU
KiBidWZmZXIgPSBtX2J1ZmZlcjsKICAgICAgICBtX2J1ZmZlciA9IDA7CiAgICAgICAgbV9jYXBh
Y2l0eSA9IDA7CiAgICAgICAgcmV0dXJuIGFkb3B0TWFsbG9jUHRyKGJ1ZmZlcik7CiAgICB9Cgpw
cm90ZWN0ZWQ6CiAgICBWZWN0b3JCdWZmZXJCYXNlKCkKICAgICAgICA6IG1fYnVmZmVyKDApCiAg
ICAgICAgLCBtX2NhcGFjaXR5KDApCiAgICAgICAgLCBtX3NpemUoMCkKICAgIHsKICAgIH0KCiAg
ICBWZWN0b3JCdWZmZXJCYXNlKFQqIGJ1ZmZlciwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3Qgc2l6
ZSkKICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlcikKICAgICAgICAsIG1fY2FwYWNpdHkoY2FwYWNp
dHkpCiAgICAgICAgLCBtX3NpemUoc2l6ZSkKICAgIHsKICAgIH0KCiAgICB+VmVjdG9yQnVmZmVy
QmFzZSgpCiAgICB7CgogICAgfQoKICAgIFQqIG1fYnVmZmVyOwogICAgdW5zaWduZWQgbV9jYXBh
Y2l0eTsKICAgIHVuc2lnbmVkIG1fc2l6ZTsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eT4KY2xhc3MgVmVjdG9yQnVmZmVyOwoKdGVtcGxhdGU8dHlwZW5hbWUg
VD4KY2xhc3MgVmVjdG9yQnVmZmVyPFQsIDA+IDogcHJpdmF0ZSBWZWN0b3JCdWZmZXJCYXNlPFQ+
IHsKcHJpdmF0ZToKICAgIHR5cGVkZWYgVmVjdG9yQnVmZmVyQmFzZTxUPiBCYXNlOwpwdWJsaWM6
CiAgICBWZWN0b3JCdWZmZXIoKQogICAgewogICAgfQoKICAgIFZlY3RvckJ1ZmZlcihzaXplX3Qg
Y2FwYWNpdHksIHNpemVfdCBzaXplID0gMCkKICAgIHsKICAgICAgICBtX3NpemUgPSBzaXplOwoK
CiAgICAgICAgaWYgKGNhcGFjaXR5KQogICAgICAgICAgICBhbGxvY2F0ZUJ1ZmZlcihjYXBhY2l0
eSk7CiAgICB9CgogICAgflZlY3RvckJ1ZmZlcigpCiAgICB7CiAgICAgICAgZGVhbGxvY2F0ZUJ1
ZmZlcihidWZmZXIoKSk7CiAgICB9CgogICAgdm9pZCBzd2FwKFZlY3RvckJ1ZmZlcjxULCAwPiYg
b3RoZXIsIHNpemVfdCwgc2l6ZV90KQogICAgewogICAgICAgIHN0ZDo6c3dhcChtX2J1ZmZlciwg
b3RoZXIubV9idWZmZXIpOwogICAgICAgIHN0ZDo6c3dhcChtX2NhcGFjaXR5LCBvdGhlci5tX2Nh
cGFjaXR5KTsKICAgIH0KCiAgICB2b2lkIHJlc3RvcmVJbmxpbmVCdWZmZXJJZk5lZWRlZCgpIHsg
fQojIDM5NSAiLi4vLi4vU291cmNlL1dURi93dGYvVmVjdG9yLmgiCiAgICB1c2luZyBCYXNlOjph
bGxvY2F0ZUJ1ZmZlcjsKICAgIHVzaW5nIEJhc2U6OnRyeUFsbG9jYXRlQnVmZmVyOwogICAgdXNp
bmcgQmFzZTo6c2hvdWxkUmVhbGxvY2F0ZUJ1ZmZlcjsKICAgIHVzaW5nIEJhc2U6OnJlYWxsb2Nh
dGVCdWZmZXI7CiAgICB1c2luZyBCYXNlOjpkZWFsbG9jYXRlQnVmZmVyOwoKICAgIHVzaW5nIEJh
c2U6OmJ1ZmZlcjsKICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5OwogICAgdXNpbmcgQmFzZTo6YnVm
ZmVyTWVtb3J5T2Zmc2V0OwoKICAgIHVzaW5nIEJhc2U6OnJlbGVhc2VCdWZmZXI7Cgpwcm90ZWN0
ZWQ6CiAgICB1c2luZyBCYXNlOjptX3NpemU7Cgpwcml2YXRlOgogICAgdXNpbmcgQmFzZTo6bV9i
dWZmZXI7CiAgICB1c2luZyBCYXNlOjptX2NhcGFjaXR5Owp9OwoKdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgpjbGFzcyBWZWN0b3JCdWZmZXIgOiBwcml2YXRlIFZl
Y3RvckJ1ZmZlckJhc2U8VD4gewogICAgcHJpdmF0ZTogVmVjdG9yQnVmZmVyKGNvbnN0IFZlY3Rv
ckJ1ZmZlciYpID0gZGVsZXRlOyBWZWN0b3JCdWZmZXImIG9wZXJhdG9yPShjb25zdCBWZWN0b3JC
dWZmZXImKSA9IGRlbGV0ZTs7CnByaXZhdGU6CiAgICB0eXBlZGVmIFZlY3RvckJ1ZmZlckJhc2U8
VD4gQmFzZTsKcHVibGljOgogICAgVmVjdG9yQnVmZmVyKCkKICAgICAgICA6IEJhc2UoaW5saW5l
QnVmZmVyKCksIGlubGluZUNhcGFjaXR5LCAwKQogICAgewogICAgfQoKICAgIFZlY3RvckJ1ZmZl
cihzaXplX3QgY2FwYWNpdHksIHNpemVfdCBzaXplID0gMCkKICAgICAgICA6IEJhc2UoaW5saW5l
QnVmZmVyKCksIGlubGluZUNhcGFjaXR5LCBzaXplKQogICAgewogICAgICAgIGlmIChjYXBhY2l0
eSA+IGlubGluZUNhcGFjaXR5KQogICAgICAgICAgICBCYXNlOjphbGxvY2F0ZUJ1ZmZlcihjYXBh
Y2l0eSk7CiAgICB9CgogICAgflZlY3RvckJ1ZmZlcigpCiAgICB7CiAgICAgICAgZGVhbGxvY2F0
ZUJ1ZmZlcihidWZmZXIoKSk7CiAgICB9CgogICAgdm9pZCBhbGxvY2F0ZUJ1ZmZlcihzaXplX3Qg
bmV3Q2FwYWNpdHkpCiAgICB7CgogICAgICAgIGlmIChuZXdDYXBhY2l0eSA+IGlubGluZUNhcGFj
aXR5KQogICAgICAgICAgICBCYXNlOjphbGxvY2F0ZUJ1ZmZlcihuZXdDYXBhY2l0eSk7CiAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgIG1fYnVmZmVyID0gaW5saW5lQnVmZmVyKCk7CiAgICAgICAg
ICAgIG1fY2FwYWNpdHkgPSBpbmxpbmVDYXBhY2l0eTsKICAgICAgICB9CiAgICB9CgogICAgYm9v
bCB0cnlBbGxvY2F0ZUJ1ZmZlcihzaXplX3QgbmV3Q2FwYWNpdHkpCiAgICB7CiAgICAgICAgaWYg
KG5ld0NhcGFjaXR5ID4gaW5saW5lQ2FwYWNpdHkpCiAgICAgICAgICAgIHJldHVybiBCYXNlOjp0
cnlBbGxvY2F0ZUJ1ZmZlcihuZXdDYXBhY2l0eSk7CiAgICAgICAgbV9idWZmZXIgPSBpbmxpbmVC
dWZmZXIoKTsKICAgICAgICBtX2NhcGFjaXR5ID0gaW5saW5lQ2FwYWNpdHk7CiAgICAgICAgcmV0
dXJuIHRydWU7CiAgICB9CgogICAgdm9pZCBkZWFsbG9jYXRlQnVmZmVyKFQqIGJ1ZmZlclRvRGVh
bGxvY2F0ZSkKICAgIHsKICAgICAgICBpZiAoYnVmZmVyVG9EZWFsbG9jYXRlID09IGlubGluZUJ1
ZmZlcigpKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgQmFzZTo6ZGVhbGxvY2F0ZUJ1ZmZl
cihidWZmZXJUb0RlYWxsb2NhdGUpOwogICAgfQoKICAgIGJvb2wgc2hvdWxkUmVhbGxvY2F0ZUJ1
ZmZlcihzaXplX3QgbmV3Q2FwYWNpdHkpIGNvbnN0CiAgICB7CgogICAgICAgIHJldHVybiBCYXNl
OjpzaG91bGRSZWFsbG9jYXRlQnVmZmVyKG5ld0NhcGFjaXR5KSAmJiBzdGQ6Om1pbihzdGF0aWNf
Y2FzdDxzaXplX3Q+KG1fY2FwYWNpdHkpLCBuZXdDYXBhY2l0eSkgPiBpbmxpbmVDYXBhY2l0eTsK
ICAgIH0KCiAgICB2b2lkIHJlYWxsb2NhdGVCdWZmZXIoc2l6ZV90IG5ld0NhcGFjaXR5KQogICAg
ewogICAgICAgICgodm9pZCkwKTsKICAgICAgICBCYXNlOjpyZWFsbG9jYXRlQnVmZmVyKG5ld0Nh
cGFjaXR5KTsKICAgIH0KCiAgICB2b2lkIHN3YXAoVmVjdG9yQnVmZmVyJiBvdGhlciwgc2l6ZV90
IG15U2l6ZSwgc2l6ZV90IG90aGVyU2l6ZSkKICAgIHsKICAgICAgICBpZiAoYnVmZmVyKCkgPT0g
aW5saW5lQnVmZmVyKCkgJiYgb3RoZXIuYnVmZmVyKCkgPT0gb3RoZXIuaW5saW5lQnVmZmVyKCkp
IHsKICAgICAgICAgICAgc3dhcElubGluZUJ1ZmZlcihvdGhlciwgbXlTaXplLCBvdGhlclNpemUp
OwogICAgICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0eSwgb3RoZXIubV9jYXBhY2l0eSk7CiAg
ICAgICAgfSBlbHNlIGlmIChidWZmZXIoKSA9PSBpbmxpbmVCdWZmZXIoKSkgewogICAgICAgICAg
ICBtX2J1ZmZlciA9IG90aGVyLm1fYnVmZmVyOwogICAgICAgICAgICBvdGhlci5tX2J1ZmZlciA9
IG90aGVyLmlubGluZUJ1ZmZlcigpOwogICAgICAgICAgICBzd2FwSW5saW5lQnVmZmVyKG90aGVy
LCBteVNpemUsIDApOwogICAgICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0eSwgb3RoZXIubV9j
YXBhY2l0eSk7CiAgICAgICAgfSBlbHNlIGlmIChvdGhlci5idWZmZXIoKSA9PSBvdGhlci5pbmxp
bmVCdWZmZXIoKSkgewogICAgICAgICAgICBvdGhlci5tX2J1ZmZlciA9IG1fYnVmZmVyOwogICAg
ICAgICAgICBtX2J1ZmZlciA9IGlubGluZUJ1ZmZlcigpOwogICAgICAgICAgICBzd2FwSW5saW5l
QnVmZmVyKG90aGVyLCAwLCBvdGhlclNpemUpOwogICAgICAgICAgICBzdGQ6OnN3YXAobV9jYXBh
Y2l0eSwgb3RoZXIubV9jYXBhY2l0eSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc3Rk
Ojpzd2FwKG1fYnVmZmVyLCBvdGhlci5tX2J1ZmZlcik7CiAgICAgICAgICAgIHN0ZDo6c3dhcCht
X2NhcGFjaXR5LCBvdGhlci5tX2NhcGFjaXR5KTsKICAgICAgICB9CiAgICB9CgogICAgdm9pZCBy
ZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQoKQogICAgewogICAgICAgIGlmIChtX2J1ZmZlcikK
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIG1fYnVmZmVyID0gaW5saW5lQnVmZmVyKCk7CiAg
ICAgICAgbV9jYXBhY2l0eSA9IGlubGluZUNhcGFjaXR5OwogICAgfQojIDUxOSAiLi4vLi4vU291
cmNlL1dURi93dGYvVmVjdG9yLmgiCiAgICB1c2luZyBCYXNlOjpidWZmZXI7CiAgICB1c2luZyBC
YXNlOjpjYXBhY2l0eTsKICAgIHVzaW5nIEJhc2U6OmJ1ZmZlck1lbW9yeU9mZnNldDsKCiAgICBN
YWxsb2NQdHI8VD4gcmVsZWFzZUJ1ZmZlcigpCiAgICB7CiAgICAgICAgaWYgKGJ1ZmZlcigpID09
IGlubGluZUJ1ZmZlcigpKQogICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICByZXR1
cm4gQmFzZTo6cmVsZWFzZUJ1ZmZlcigpOwogICAgfQoKcHJvdGVjdGVkOgogICAgdXNpbmcgQmFz
ZTo6bV9zaXplOwoKcHJpdmF0ZToKICAgIHVzaW5nIEJhc2U6Om1fYnVmZmVyOwogICAgdXNpbmcg
QmFzZTo6bV9jYXBhY2l0eTsKCiAgICB2b2lkIHN3YXBJbmxpbmVCdWZmZXIoVmVjdG9yQnVmZmVy
JiBvdGhlciwgc2l6ZV90IG15U2l6ZSwgc2l6ZV90IG90aGVyU2l6ZSkKICAgIHsKCgoKICAgICAg
ICBpZiAoc3RkOjppc19wb2Q8VD46OnZhbHVlKQogICAgICAgICAgICBzdGQ6OnN3YXAobV9pbmxp
bmVCdWZmZXIsIG90aGVyLm1faW5saW5lQnVmZmVyKTsKICAgICAgICBlbHNlCiAgICAgICAgICAg
IHN3YXBJbmxpbmVCdWZmZXJzKGlubGluZUJ1ZmZlcigpLCBvdGhlci5pbmxpbmVCdWZmZXIoKSwg
bXlTaXplLCBvdGhlclNpemUpOwogICAgfQoKICAgIHN0YXRpYyB2b2lkIHN3YXBJbmxpbmVCdWZm
ZXJzKFQqIGxlZnQsIFQqIHJpZ2h0LCBzaXplX3QgbGVmdFNpemUsIHNpemVfdCByaWdodFNpemUp
CiAgICB7CiAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCiAgICAgICAgICAgIHJldHVybjsKCiAg
ICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgc2l6ZV90IHN3YXBC
b3VuZCA9IHN0ZDo6bWluKGxlZnRTaXplLCByaWdodFNpemUpOwogICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzd2FwQm91bmQ7ICsraSkKICAgICAgICAgICAgc3RkOjpzd2FwKGxlZnRb
aV0sIHJpZ2h0W2ldKTsKICAgICAgICBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPjo6bW92ZShsZWZ0
ICsgc3dhcEJvdW5kLCBsZWZ0ICsgbGVmdFNpemUsIHJpZ2h0ICsgc3dhcEJvdW5kKTsKICAgICAg
ICBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPjo6bW92ZShyaWdodCArIHN3YXBCb3VuZCwgcmlnaHQg
KyByaWdodFNpemUsIGxlZnQgKyBzd2FwQm91bmQpOwogICAgfQoKICAgIFQqIGlubGluZUJ1ZmZl
cigpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFQqPihtX2lubGluZUJ1ZmZlcik7IH0K
ICAgIGNvbnN0IFQqIGlubGluZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3RfcHRyPGNvbnN0IFQqPihtX2lubGluZUJ1ZmZlcik7IH0KIyA1NzMgIi4uLy4uL1NvdXJjZS9X
VEYvd3RmL1ZlY3Rvci5oIgogICAgdHlwZW5hbWUgc3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9m
KFQpLCBzdGQ6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU+Ojp0eXBlIG1faW5saW5lQnVmZmVyW2lu
bGluZUNhcGFjaXR5XTsKCn07CgpzdHJ1Y3QgVW5zYWZlVmVjdG9yT3ZlcmZsb3cgewogICAgc3Rh
dGljIHZvaWQgb3ZlcmZsb3dlZCgpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgfQp9OwoK
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0gMCwgdHlwZW5hbWUg
T3ZlcmZsb3dIYW5kbGVyID0gQ3Jhc2hPbk92ZXJmbG93LCBzaXplX3QgbWluQ2FwYWNpdHkgPSAx
Nj4KY2xhc3MgVmVjdG9yIDogcHJpdmF0ZSBWZWN0b3JCdWZmZXI8VCwgaW5saW5lQ2FwYWNpdHk+
IHsKICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1
cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7
IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1h
bGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0
RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpX
VEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7
IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxs
VGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSBwcml2
YXRlOiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01h
Y3JvOwpwcml2YXRlOgogICAgdHlwZWRlZiBWZWN0b3JCdWZmZXI8VCwgaW5saW5lQ2FwYWNpdHk+
IEJhc2U7CiAgICB0eXBlZGVmIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+IFR5cGVPcGVyYXRpb25z
OwoKcHVibGljOgogICAgdHlwZWRlZiBUIFZhbHVlVHlwZTsKCiAgICB0eXBlZGVmIFQqIGl0ZXJh
dG9yOwogICAgdHlwZWRlZiBjb25zdCBUKiBjb25zdF9pdGVyYXRvcjsKICAgIHR5cGVkZWYgc3Rk
OjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9yOwogICAgdHlwZWRl
ZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+IGNvbnN0X3JldmVyc2VfaXRl
cmF0b3I7CgogICAgVmVjdG9yKCkKICAgIHsKICAgIH0KCgogICAgZXhwbGljaXQgVmVjdG9yKHNp
emVfdCBzaXplKQogICAgICAgIDogQmFzZShzaXplLCBzaXplKQogICAgewogICAgICAgIGFzYW5T
ZXRJbml0aWFsQnVmZmVyU2l6ZVRvKHNpemUpOwoKICAgICAgICBpZiAoYmVnaW4oKSkKICAgICAg
ICAgICAgVHlwZU9wZXJhdGlvbnM6OmluaXRpYWxpemUoYmVnaW4oKSwgZW5kKCkpOwogICAgfQoK
ICAgIFZlY3RvcihzaXplX3Qgc2l6ZSwgY29uc3QgVCYgdmFsKQogICAgICAgIDogQmFzZShzaXpl
LCBzaXplKQogICAgewogICAgICAgIGFzYW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRvKHNpemUpOwoK
ICAgICAgICBpZiAoYmVnaW4oKSkKICAgICAgICAgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlh
bGl6ZWRGaWxsKGJlZ2luKCksIGVuZCgpLCB2YWwpOwogICAgfQoKICAgIFZlY3RvcihzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8VD4gaW5pdGlhbGl6ZXJMaXN0KQogICAgewogICAgICAgIHJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoaW5pdGlhbGl6ZXJMaXN0LnNpemUoKSk7CgogICAgICAgIGFzYW5TZXRJ
bml0aWFsQnVmZmVyU2l6ZVRvKGluaXRpYWxpemVyTGlzdC5zaXplKCkpOwoKICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBpbml0aWFsaXplckxpc3QpCiAgICAgICAgICAgIHVuY2hl
Y2tlZEFwcGVuZChlbGVtZW50KTsKICAgIH0KCiAgICB+VmVjdG9yKCkKICAgIHsKICAgICAgICBp
ZiAobV9zaXplKQogICAgICAgICAgICBzaHJpbmsoMCk7CgogICAgICAgIGFzYW5TZXRCdWZmZXJT
aXplVG9GdWxsQ2FwYWNpdHkoKTsKICAgIH0KCiAgICBWZWN0b3IoY29uc3QgVmVjdG9yJik7CiAg
ICB0ZW1wbGF0ZTxzaXplX3Qgb3RoZXJDYXBhY2l0eSwgdHlwZW5hbWUgb3RoZXJPdmVyZmxvd0Jl
aGF2aW91ciwgc2l6ZV90IG90aGVyTWluaW11bUNhcGFjaXR5PgogICAgZXhwbGljaXQgVmVjdG9y
KGNvbnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5LCBvdGhlck92ZXJmbG93QmVoYXZpb3VyLCBv
dGhlck1pbmltdW1DYXBhY2l0eT4mKTsKCiAgICBWZWN0b3ImIG9wZXJhdG9yPShjb25zdCBWZWN0
b3ImKTsKICAgIHRlbXBsYXRlPHNpemVfdCBvdGhlckNhcGFjaXR5LCB0eXBlbmFtZSBvdGhlck92
ZXJmbG93QmVoYXZpb3VyLCBzaXplX3Qgb3RoZXJNaW5pbXVtQ2FwYWNpdHk+CiAgICBWZWN0b3Im
IG9wZXJhdG9yPShjb25zdCBWZWN0b3I8VCwgb3RoZXJDYXBhY2l0eSwgb3RoZXJPdmVyZmxvd0Jl
aGF2aW91ciwgb3RoZXJNaW5pbXVtQ2FwYWNpdHk+Jik7CgogICAgVmVjdG9yKFZlY3RvciYmKTsK
ICAgIFZlY3RvciYgb3BlcmF0b3I9KFZlY3RvciYmKTsKCiAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgc3RhdGljIHB0cmRpZmZfdCBzaXplTWVtb3J5T2Zmc2V0
KCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nh
c3Q8VmVjdG9yKj4oMHg0MDAwKS0+bV9zaXplKSkgLSAweDQwMDApOyB9CiAgICBzaXplX3QgY2Fw
YWNpdHkoKSBjb25zdCB7IHJldHVybiBCYXNlOjpjYXBhY2l0eSgpOyB9CiAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CgogICAgVCYgYXQoc2l6ZV90IGkpCiAgICB7
CiAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoaSA+PSBzaXplKCkpLCAwKSkKICAgICAg
ICAgICAgT3ZlcmZsb3dIYW5kbGVyOjpvdmVyZmxvd2VkKCk7CiAgICAgICAgcmV0dXJuIEJhc2U6
OmJ1ZmZlcigpW2ldOwogICAgfQogICAgY29uc3QgVCYgYXQoc2l6ZV90IGkpIGNvbnN0CiAgICB7
CiAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoaSA+PSBzaXplKCkpLCAwKSkKICAgICAg
ICAgICAgT3ZlcmZsb3dIYW5kbGVyOjpvdmVyZmxvd2VkKCk7CiAgICAgICAgcmV0dXJuIEJhc2U6
OmJ1ZmZlcigpW2ldOwogICAgfQogICAgVCYgYXQoQ2hlY2tlZDxzaXplX3Q+IGkpCiAgICB7CiAg
ICAgICAgZG8geyBpZiAoX19idWlsdGluX2V4cGVjdCghISghKGkgPCBzaXplKCkpKSwgMCkpIFdU
RkNyYXNoKCk7IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBCYXNlOjpidWZmZXIoKVtpXTsK
ICAgIH0KICAgIGNvbnN0IFQmIGF0KENoZWNrZWQ8c2l6ZV90PiBpKSBjb25zdAogICAgewogICAg
ICAgIGRvIHsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoIShpIDwgc2l6ZSgpKSksIDApKSBXVEZD
cmFzaCgpOyB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gQmFzZTo6YnVmZmVyKClbaV07CiAg
ICB9CgogICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gYXQoaSk7IH0KICAgIGNv
bnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CiAgICBU
JiBvcGVyYXRvcltdKENoZWNrZWQ8c2l6ZV90PiBpKSB7IHJldHVybiBhdChpKTsgfQogICAgY29u
c3QgVCYgb3BlcmF0b3JbXShDaGVja2VkPHNpemVfdD4gaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7
IH0KCiAgICBUKiBkYXRhKCkgeyByZXR1cm4gQmFzZTo6YnVmZmVyKCk7IH0KICAgIGNvbnN0IFQq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBCYXNlOjpidWZmZXIoKTsgfQogICAgc3RhdGljIHB0cmRp
ZmZfdCBkYXRhTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gQmFzZTo6YnVmZmVyTWVtb3J5T2Zmc2V0
KCk7IH0KCiAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIGRhdGEoKTsgfQogICAgaXRlcmF0
b3IgZW5kKCkgeyByZXR1cm4gYmVnaW4oKSArIG1fc2l6ZTsgfQogICAgY29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiBkYXRhKCk7IH0KICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgp
IGNvbnN0IHsgcmV0dXJuIGJlZ2luKCkgKyBtX3NpemU7IH0KCiAgICByZXZlcnNlX2l0ZXJhdG9y
IHJiZWdpbigpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CiAgICByZXZlcnNl
X2l0ZXJhdG9yIHJlbmQoKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CiAg
ICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X3Jl
dmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CiAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJlbmQo
KSBjb25zdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CgogICAg
VCYgZmlyc3QoKSB7IHJldHVybiBhdCgwKTsgfQogICAgY29uc3QgVCYgZmlyc3QoKSBjb25zdCB7
IHJldHVybiBhdCgwKTsgfQogICAgVCYgbGFzdCgpIHsgcmV0dXJuIGF0KHNpemUoKSAtIDEpOyB9
CiAgICBjb25zdCBUJiBsYXN0KCkgY29uc3QgeyByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7IH0KCiAg
ICBUIHRha2VMYXN0KCkKICAgIHsKICAgICAgICBUIHJlc3VsdCA9IHN0ZDo6bW92ZTxXVEY6OkNo
ZWNrTW92ZVBhcmFtZXRlcj4obGFzdCgpKTsKICAgICAgICByZW1vdmVMYXN0KCk7CiAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIGNvbnRh
aW5zKGNvbnN0IFUmKSBjb25zdDsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHNpemVfdCBmaW5k
KGNvbnN0IFUmKSBjb25zdDsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHNpemVfdCByZXZlcnNl
RmluZChjb25zdCBVJikgY29uc3Q7CgogICAgdm9pZCBzaHJpbmsoc2l6ZV90IHNpemUpOwogICAg
dm9pZCBncm93KHNpemVfdCBzaXplKTsKICAgIHZvaWQgcmVzaXplKHNpemVfdCBzaXplKTsKICAg
IHZvaWQgcmVzaXplVG9GaXQoc2l6ZV90IHNpemUpOwogICAgdm9pZCByZXNlcnZlQ2FwYWNpdHko
c2l6ZV90IG5ld0NhcGFjaXR5KTsKICAgIGJvb2wgdHJ5UmVzZXJ2ZUNhcGFjaXR5KHNpemVfdCBu
ZXdDYXBhY2l0eSk7CiAgICB2b2lkIHJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZV90IGluaXRp
YWxDYXBhY2l0eSk7CiAgICB2b2lkIHNocmlua0NhcGFjaXR5KHNpemVfdCBuZXdDYXBhY2l0eSk7
CiAgICB2b2lkIHNocmlua1RvRml0KCkgeyBzaHJpbmtDYXBhY2l0eShzaXplKCkpOyB9CgogICAg
dm9pZCBjbGVhcigpIHsgc2hyaW5rQ2FwYWNpdHkoMCk7IH0KCiAgICB2b2lkIGFwcGVuZChWYWx1
ZVR5cGUmJiB2YWx1ZSkgeyBhcHBlbmQ8VmFsdWVUeXBlPihzdGQ6OmZvcndhcmQ8VmFsdWVUeXBl
Pih2YWx1ZSkpOyB9CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIGFwcGVuZChVJiYpOwog
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gdm9pZCBjb25zdHJ1Y3RBbmRBcHBlbmQoQXJn
cyYmLi4uKTsKCiAgICB2b2lkIHVuY2hlY2tlZEFwcGVuZChWYWx1ZVR5cGUmJiB2YWx1ZSkgeyB1
bmNoZWNrZWRBcHBlbmQ8VmFsdWVUeXBlPihzdGQ6OmZvcndhcmQ8VmFsdWVUeXBlPih2YWx1ZSkp
OyB9CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIHVuY2hlY2tlZEFwcGVuZChVJiYpOwoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgYXBwZW5kKGNvbnN0IFUqLCBzaXplX3QpOwog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5k
VmVjdG9yKGNvbnN0IFZlY3RvcjxVLCBvdGhlckNhcGFjaXR5PiYpOwogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gYm9vbCB0cnlBcHBlbmQoY29uc3QgVSosIHNpemVfdCk7CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4gdm9pZCBpbnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVKiwgc2l6ZV90
KTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgaW5zZXJ0KHNpemVfdCBwb3NpdGlvbiwg
VSYmKTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBjPiB2b2lkIGluc2VydFZlY3Rv
cihzaXplX3QgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxVLCBjPiYpOwoKICAgIHZvaWQgcmVtb3Zl
KHNpemVfdCBwb3NpdGlvbik7CiAgICB2b2lkIHJlbW92ZShzaXplX3QgcG9zaXRpb24sIHNpemVf
dCBsZW5ndGgpOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCByZW1vdmVGaXJzdChjb25z
dCBVJik7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaEZ1bmN0aW9uPiBib29sIHJlbW92ZUZp
cnN0TWF0Y2hpbmcoY29uc3QgTWF0Y2hGdW5jdGlvbiYpOwogICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4gdW5zaWduZWQgcmVtb3ZlQWxsKGNvbnN0IFUmKTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1h
dGNoRnVuY3Rpb24+IHVuc2lnbmVkIHJlbW92ZUFsbE1hdGNoaW5nKGNvbnN0IE1hdGNoRnVuY3Rp
b24mKTsKCiAgICB2b2lkIHJlbW92ZUxhc3QoKQogICAgewogICAgICAgIGlmIChfX2J1aWx0aW5f
ZXhwZWN0KCEhKGlzRW1wdHkoKSksIDApKQogICAgICAgICAgICBPdmVyZmxvd0hhbmRsZXI6Om92
ZXJmbG93ZWQoKTsKICAgICAgICBzaHJpbmsoc2l6ZSgpIC0gMSk7CiAgICB9CgogICAgdm9pZCBm
aWxsKGNvbnN0IFQmLCBzaXplX3QpOwogICAgdm9pZCBmaWxsKGNvbnN0IFQmIHZhbCkgeyBmaWxs
KHZhbCwgc2l6ZSgpKTsgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPiB2b2lkIGFw
cGVuZFJhbmdlKEl0ZXJhdG9yIHN0YXJ0LCBJdGVyYXRvciBlbmQpOwoKICAgIE1hbGxvY1B0cjxU
PiByZWxlYXNlQnVmZmVyKCk7CgogICAgdm9pZCBzd2FwKFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4mIG90aGVyKQogICAgewoKCgoKCgogICAg
ICAgIGFzYW5TZXRCdWZmZXJTaXplVG9GdWxsQ2FwYWNpdHkoKTsKICAgICAgICBvdGhlci5hc2Fu
U2V0QnVmZmVyU2l6ZVRvRnVsbENhcGFjaXR5KCk7CgogICAgICAgIEJhc2U6OnN3YXAob3RoZXIs
IG1fc2l6ZSwgb3RoZXIubV9zaXplKTsKICAgICAgICBzdGQ6OnN3YXAobV9zaXplLCBvdGhlci5t
X3NpemUpOwoKICAgICAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhtX3NpemUpOwogICAg
ICAgIG90aGVyLmFzYW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRvKG90aGVyLm1fc2l6ZSk7CiAgICB9
CgogICAgdm9pZCByZXZlcnNlKCk7CgogICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCk7Cgpwcml2
YXRlOgogICAgdm9pZCBleHBhbmRDYXBhY2l0eShzaXplX3QgbmV3TWluQ2FwYWNpdHkpOwogICAg
VCogZXhwYW5kQ2FwYWNpdHkoc2l6ZV90IG5ld01pbkNhcGFjaXR5LCBUKik7CiAgICBib29sIHRy
eUV4cGFuZENhcGFjaXR5KHNpemVfdCBuZXdNaW5DYXBhY2l0eSk7CiAgICBjb25zdCBUKiB0cnlF
eHBhbmRDYXBhY2l0eShzaXplX3QgbmV3TWluQ2FwYWNpdHksIGNvbnN0IFQqKTsKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IFUqIGV4cGFuZENhcGFjaXR5KHNpemVfdCBuZXdNaW5DYXBhY2l0eSwg
VSopOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBhcHBlbmRTbG93Q2FzZShVJiYpOwog
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gdm9pZCBjb25zdHJ1Y3RBbmRBcHBlbmRTbG93
Q2FzZShBcmdzJiYuLi4pOwoKICAgIHZvaWQgYXNhblNldEluaXRpYWxCdWZmZXJTaXplVG8oc2l6
ZV90KTsKICAgIHZvaWQgYXNhblNldEJ1ZmZlclNpemVUb0Z1bGxDYXBhY2l0eSgpOwogICAgdm9p
ZCBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhzaXplX3QpOwoKICAgIHVzaW5nIEJhc2U6Om1f
c2l6ZTsKICAgIHVzaW5nIEJhc2U6OmJ1ZmZlcjsKICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5Owog
ICAgdXNpbmcgQmFzZTo6c3dhcDsKICAgIHVzaW5nIEJhc2U6OmFsbG9jYXRlQnVmZmVyOwogICAg
dXNpbmcgQmFzZTo6ZGVhbGxvY2F0ZUJ1ZmZlcjsKICAgIHVzaW5nIEJhc2U6OnRyeUFsbG9jYXRl
QnVmZmVyOwogICAgdXNpbmcgQmFzZTo6c2hvdWxkUmVhbGxvY2F0ZUJ1ZmZlcjsKICAgIHVzaW5n
IEJhc2U6OnJlYWxsb2NhdGVCdWZmZXI7CiAgICB1c2luZyBCYXNlOjpyZXN0b3JlSW5saW5lQnVm
ZmVySWZOZWVkZWQ7CiAgICB1c2luZyBCYXNlOjpyZWxlYXNlQnVmZmVyOwoKCgp9OwoKdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hh
bmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6VmVjdG9yKGNvbnN0IFZlY3RvciYgb3RoZXIpCiAg
ICA6IEJhc2Uob3RoZXIuY2FwYWNpdHkoKSwgb3RoZXIuc2l6ZSgpKQp7CiAgICBhc2FuU2V0SW5p
dGlhbEJ1ZmZlclNpemVUbyhvdGhlci5zaXplKCkpOwoKICAgIGlmIChiZWdpbigpKQogICAgICAg
IFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShvdGhlci5iZWdpbigpLCBvdGhlci5l
bmQoKSwgYmVnaW4oKSk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CnRlbXBs
YXRlPHNpemVfdCBvdGhlckNhcGFjaXR5LCB0eXBlbmFtZSBvdGhlck92ZXJmbG93QmVoYXZpb3Vy
LCBzaXplX3Qgb3RoZXJNaW5pbXVtQ2FwYWNpdHk+ClZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwg
T3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OlZlY3Rvcihjb25zdCBWZWN0b3I8VCwgb3Ro
ZXJDYXBhY2l0eSwgb3RoZXJPdmVyZmxvd0JlaGF2aW91ciwgb3RoZXJNaW5pbXVtQ2FwYWNpdHk+
JiBvdGhlcikKICAgIDogQmFzZShvdGhlci5jYXBhY2l0eSgpLCBvdGhlci5zaXplKCkpCnsKICAg
IGFzYW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRvKG90aGVyLnNpemUoKSk7CgogICAgaWYgKGJlZ2lu
KCkpCiAgICAgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRDb3B5KG90aGVyLmJlZ2lu
KCksIG90aGVyLmVuZCgpLCBiZWdpbigpKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBh
Y2l0eT4KVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFj
aXR5PiYgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFj
aXR5Pjo6b3BlcmF0b3I9KGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyLCBtaW5DYXBhY2l0eT4mIG90aGVyKQp7CiAgICBpZiAoJm90aGVyID09IHRoaXMpCiAg
ICAgICAgcmV0dXJuICp0aGlzOwoKICAgIGlmIChzaXplKCkgPiBvdGhlci5zaXplKCkpCiAgICAg
ICAgc2hyaW5rKG90aGVyLnNpemUoKSk7CiAgICBlbHNlIGlmIChvdGhlci5zaXplKCkgPiBjYXBh
Y2l0eSgpKSB7CiAgICAgICAgY2xlYXIoKTsKICAgICAgICByZXNlcnZlQ2FwYWNpdHkob3RoZXIu
c2l6ZSgpKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICB9CgogICAgYXNhbkJ1ZmZlclNpemVXaWxs
Q2hhbmdlVG8ob3RoZXIuc2l6ZSgpKTsKCiAgICBzdGQ6OmNvcHkob3RoZXIuYmVnaW4oKSwgb3Ro
ZXIuYmVnaW4oKSArIHNpemUoKSwgYmVnaW4oKSk7CiAgICBUeXBlT3BlcmF0aW9uczo6dW5pbml0
aWFsaXplZENvcHkob3RoZXIuYmVnaW4oKSArIHNpemUoKSwgb3RoZXIuZW5kKCksIGVuZCgpKTsK
ICAgIG1fc2l6ZSA9IG90aGVyLnNpemUoKTsKCiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGluZSBi
b29sIHR5cGVsZXNzUG9pbnRlcnNBcmVFcXVhbChjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkKiBi
KSB7IHJldHVybiBhID09IGI7IH0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CnRl
bXBsYXRlPHNpemVfdCBvdGhlckNhcGFjaXR5LCB0eXBlbmFtZSBvdGhlck92ZXJmbG93QmVoYXZp
b3VyLCBzaXplX3Qgb3RoZXJNaW5pbXVtQ2FwYWNpdHk+ClZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4mIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46Om9wZXJhdG9yPShjb25zdCBWZWN0b3I8
VCwgb3RoZXJDYXBhY2l0eSwgb3RoZXJPdmVyZmxvd0JlaGF2aW91ciwgb3RoZXJNaW5pbXVtQ2Fw
YWNpdHk+JiBvdGhlcikKewoKCgogICAgKCh2b2lkKTApOwoKICAgIGlmIChzaXplKCkgPiBvdGhl
ci5zaXplKCkpCiAgICAgICAgc2hyaW5rKG90aGVyLnNpemUoKSk7CiAgICBlbHNlIGlmIChvdGhl
ci5zaXplKCkgPiBjYXBhY2l0eSgpKSB7CiAgICAgICAgY2xlYXIoKTsKICAgICAgICByZXNlcnZl
Q2FwYWNpdHkob3RoZXIuc2l6ZSgpKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICB9CgogICAgYXNh
bkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8ob3RoZXIuc2l6ZSgpKTsKCiAgICBzdGQ6OmNvcHkob3Ro
ZXIuYmVnaW4oKSwgb3RoZXIuYmVnaW4oKSArIHNpemUoKSwgYmVnaW4oKSk7CiAgICBUeXBlT3Bl
cmF0aW9uczo6dW5pbml0aWFsaXplZENvcHkob3RoZXIuYmVnaW4oKSArIHNpemUoKSwgb3RoZXIu
ZW5kKCksIGVuZCgpKTsKICAgIG1fc2l6ZSA9IG90aGVyLnNpemUoKTsKCiAgICByZXR1cm4gKnRo
aXM7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5h
bWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CmlubGluZSBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpWZWN0b3IoVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiYmIG90
aGVyKQp7CiAgICBzd2FwKG90aGVyKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0
eT4KaW5saW5lIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5D
YXBhY2l0eT4mIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5D
YXBhY2l0eT46Om9wZXJhdG9yPShWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlciwgbWluQ2FwYWNpdHk+JiYgb3RoZXIpCnsKICAgIHN3YXAob3RoZXIpOwogICAgcmV0dXJu
ICp0aGlzOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5
cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5Pgp0ZW1wbGF0ZTx0eXBl
bmFtZSBVPgpib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBt
aW5DYXBhY2l0eT46OmNvbnRhaW5zKGNvbnN0IFUmIHZhbHVlKSBjb25zdAp7CiAgICByZXR1cm4g
ZmluZCh2YWx1ZSkgIT0gbm90Rm91bmQ7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNp
dHk+CnRlbXBsYXRlPHR5cGVuYW1lIFU+CnNpemVfdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpmaW5kKGNvbnN0IFUmIHZhbHVlKSBjb25z
dAp7CiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKSB7CiAgICAgICAgaWYg
KGF0KGkpID09IHZhbHVlKQogICAgICAgICAgICByZXR1cm4gaTsKICAgIH0KICAgIHJldHVybiBu
b3RGb3VuZDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KdGVtcGxhdGU8dHlw
ZW5hbWUgVT4Kc2l6ZV90IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
LCBtaW5DYXBhY2l0eT46OnJldmVyc2VGaW5kKGNvbnN0IFUmIHZhbHVlKSBjb25zdAp7CiAgICBm
b3IgKHNpemVfdCBpID0gMTsgaSA8PSBzaXplKCk7ICsraSkgewogICAgICAgIGNvbnN0IHNpemVf
dCBpbmRleCA9IHNpemUoKSAtIGk7CiAgICAgICAgaWYgKGF0KGluZGV4KSA9PSB2YWx1ZSkKICAg
ICAgICAgICAgcmV0dXJuIGluZGV4OwogICAgfQogICAgcmV0dXJuIG5vdEZvdW5kOwp9Cgp0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93
SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5Pgp2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmZpbGwoY29uc3QgVCYgdmFsLCBzaXpl
X3QgbmV3U2l6ZSkKewogICAgaWYgKHNpemUoKSA+IG5ld1NpemUpCiAgICAgICAgc2hyaW5rKG5l
d1NpemUpOwogICAgZWxzZSBpZiAobmV3U2l6ZSA+IGNhcGFjaXR5KCkpIHsKICAgICAgICBjbGVh
cigpOwogICAgICAgIHJlc2VydmVDYXBhY2l0eShuZXdTaXplKTsKICAgICAgICAoKHZvaWQpMCk7
CiAgICB9CgogICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obmV3U2l6ZSk7CgogICAgc3Rk
OjpmaWxsKGJlZ2luKCksIGVuZCgpLCB2YWwpOwogICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlh
bGl6ZWRGaWxsKGVuZCgpLCBiZWdpbigpICsgbmV3U2l6ZSwgdmFsKTsKICAgIG1fc2l6ZSA9IG5l
d1NpemU7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlw
ZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CnRlbXBsYXRlPHR5cGVu
YW1lIEl0ZXJhdG9yPgp2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyLCBtaW5DYXBhY2l0eT46OmFwcGVuZFJhbmdlKEl0ZXJhdG9yIHN0YXJ0LCBJdGVyYXRvciBl
bmQpCnsKICAgIGZvciAoSXRlcmF0b3IgaXQgPSBzdGFydDsgaXQgIT0gZW5kOyArK2l0KQogICAg
ICAgIGFwcGVuZCgqaXQpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5Pgp2b2lk
IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46
OmV4cGFuZENhcGFjaXR5KHNpemVfdCBuZXdNaW5DYXBhY2l0eSkKewogICAgcmVzZXJ2ZUNhcGFj
aXR5KHN0ZDo6bWF4KG5ld01pbkNhcGFjaXR5LCBzdGQ6Om1heChzdGF0aWNfY2FzdDxzaXplX3Q+
KG1pbkNhcGFjaXR5KSwgY2FwYWNpdHkoKSArIGNhcGFjaXR5KCkgLyA0ICsgMSkpKTsKfQoKdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxv
d0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KVCogVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6ZXhwYW5kQ2FwYWNpdHkoc2l6ZV90IG5l
d01pbkNhcGFjaXR5LCBUKiBwdHIpCnsKICAgIGlmIChwdHIgPCBiZWdpbigpIHx8IHB0ciA+PSBl
bmQoKSkgewogICAgICAgIGV4cGFuZENhcGFjaXR5KG5ld01pbkNhcGFjaXR5KTsKICAgICAgICBy
ZXR1cm4gcHRyOwogICAgfQogICAgc2l6ZV90IGluZGV4ID0gcHRyIC0gYmVnaW4oKTsKICAgIGV4
cGFuZENhcGFjaXR5KG5ld01pbkNhcGFjaXR5KTsKICAgIHJldHVybiBiZWdpbigpICsgaW5kZXg7
Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
T3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CmJvb2wgVmVjdG9yPFQsIGlubGlu
ZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6dHJ5RXhwYW5kQ2FwYWNp
dHkoc2l6ZV90IG5ld01pbkNhcGFjaXR5KQp7CiAgICByZXR1cm4gdHJ5UmVzZXJ2ZUNhcGFjaXR5
KHN0ZDo6bWF4KG5ld01pbkNhcGFjaXR5LCBzdGQ6Om1heChzdGF0aWNfY2FzdDxzaXplX3Q+KG1p
bkNhcGFjaXR5KSwgY2FwYWNpdHkoKSArIGNhcGFjaXR5KCkgLyA0ICsgMSkpKTsKfQoKdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hh
bmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KY29uc3QgVCogVmVjdG9yPFQsIGlubGluZUNhcGFj
aXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6dHJ5RXhwYW5kQ2FwYWNpdHkoc2l6
ZV90IG5ld01pbkNhcGFjaXR5LCBjb25zdCBUKiBwdHIpCnsKICAgIGlmIChwdHIgPCBiZWdpbigp
IHx8IHB0ciA+PSBlbmQoKSkgewogICAgICAgIGlmICghdHJ5RXhwYW5kQ2FwYWNpdHkobmV3TWlu
Q2FwYWNpdHkpKQogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICByZXR1cm4gcHRyOwogICAg
fQogICAgc2l6ZV90IGluZGV4ID0gcHRyIC0gYmVnaW4oKTsKICAgIGlmICghdHJ5RXhwYW5kQ2Fw
YWNpdHkobmV3TWluQ2FwYWNpdHkpKQogICAgICAgIHJldHVybiAwOwogICAgcmV0dXJuIGJlZ2lu
KCkgKyBpbmRleDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4gdGVtcGxhdGU8
dHlwZW5hbWUgVT4KaW5saW5lIFUqIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyLCBtaW5DYXBhY2l0eT46OmV4cGFuZENhcGFjaXR5KHNpemVfdCBuZXdNaW5DYXBhY2l0
eSwgVSogcHRyKQp7CiAgICBleHBhbmRDYXBhY2l0eShuZXdNaW5DYXBhY2l0eSk7CiAgICByZXR1
cm4gcHRyOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5
cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgppbmxpbmUgdm9pZCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+Ojpy
ZXNpemUoc2l6ZV90IHNpemUpCnsKICAgIGlmIChzaXplIDw9IG1fc2l6ZSkgewogICAgICAgIFR5
cGVPcGVyYXRpb25zOjpkZXN0cnVjdChiZWdpbigpICsgc2l6ZSwgZW5kKCkpOwogICAgICAgIGFz
YW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKHNpemUpOwogICAgfSBlbHNlIHsKICAgICAgICBpZiAo
c2l6ZSA+IGNhcGFjaXR5KCkpCiAgICAgICAgICAgIGV4cGFuZENhcGFjaXR5KHNpemUpOwogICAg
ICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKHNpemUpOwogICAgICAgIGlmIChiZWdpbigp
KQogICAgICAgICAgICBUeXBlT3BlcmF0aW9uczo6aW5pdGlhbGl6ZShlbmQoKSwgYmVnaW4oKSAr
IHNpemUpOwogICAgfQoKICAgIG1fc2l6ZSA9IHNpemU7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qg
bWluQ2FwYWNpdHk+CnZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRs
ZXIsIG1pbkNhcGFjaXR5Pjo6cmVzaXplVG9GaXQoc2l6ZV90IHNpemUpCnsKICAgIHJlc2VydmVD
YXBhY2l0eShzaXplKTsKICAgIHJlc2l6ZShzaXplKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBt
aW5DYXBhY2l0eT4Kdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
ciwgbWluQ2FwYWNpdHk+OjpzaHJpbmsoc2l6ZV90IHNpemUpCnsKICAgICgodm9pZCkwKTsKICAg
IFR5cGVPcGVyYXRpb25zOjpkZXN0cnVjdChiZWdpbigpICsgc2l6ZSwgZW5kKCkpOwogICAgYXNh
bkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8oc2l6ZSk7CiAgICBtX3NpemUgPSBzaXplOwp9Cgp0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93
SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5Pgp2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46Omdyb3coc2l6ZV90IHNpemUpCnsKICAg
ICgodm9pZCkwKTsKICAgIGlmIChzaXplID4gY2FwYWNpdHkoKSkKICAgICAgICBleHBhbmRDYXBh
Y2l0eShzaXplKTsKICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKHNpemUpOwogICAgaWYg
KGJlZ2luKCkpCiAgICAgICAgVHlwZU9wZXJhdGlvbnM6OmluaXRpYWxpemUoZW5kKCksIGJlZ2lu
KCkgKyBzaXplKTsKICAgIG1fc2l6ZSA9IHNpemU7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWlu
Q2FwYWNpdHk+CmlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyLCBtaW5DYXBhY2l0eT46OmFzYW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRvKHNpemVfdCBz
aXplKQp7CiMgMTA1NiAiLi4vLi4vU291cmNlL1dURi93dGYvVmVjdG9yLmgiCiAgICAodm9pZClz
aXplOwoKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBl
bmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KaW5saW5lIHZvaWQgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6YXNh
blNldEJ1ZmZlclNpemVUb0Z1bGxDYXBhY2l0eSgpCnsKCgoKCgoKCn0KCnRlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBz
aXplX3QgbWluQ2FwYWNpdHk+CmlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwg
T3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRv
KHNpemVfdCBuZXdTaXplKQp7CgoKCgoKCgogICAgKHZvaWQpbmV3U2l6ZTsKCn0KCnRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5k
bGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CnZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBP
dmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmVzZXJ2ZUNhcGFjaXR5KHNpemVfdCBuZXdD
YXBhY2l0eSkKewogICAgaWYgKG5ld0NhcGFjaXR5IDw9IGNhcGFjaXR5KCkpCiAgICAgICAgcmV0
dXJuOwogICAgVCogb2xkQnVmZmVyID0gYmVnaW4oKTsKICAgIFQqIG9sZEVuZCA9IGVuZCgpOwoK
ICAgIGFzYW5TZXRCdWZmZXJTaXplVG9GdWxsQ2FwYWNpdHkoKTsKCiAgICBCYXNlOjphbGxvY2F0
ZUJ1ZmZlcihuZXdDYXBhY2l0eSk7CiAgICAoKHZvaWQpMCk7CgogICAgYXNhblNldEluaXRpYWxC
dWZmZXJTaXplVG8oc2l6ZSgpKTsKCiAgICBUeXBlT3BlcmF0aW9uczo6bW92ZShvbGRCdWZmZXIs
IG9sZEVuZCwgYmVnaW4oKSk7CiAgICBCYXNlOjpkZWFsbG9jYXRlQnVmZmVyKG9sZEJ1ZmZlcik7
Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
T3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CmJvb2wgVmVjdG9yPFQsIGlubGlu
ZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6dHJ5UmVzZXJ2ZUNhcGFj
aXR5KHNpemVfdCBuZXdDYXBhY2l0eSkKewogICAgaWYgKG5ld0NhcGFjaXR5IDw9IGNhcGFjaXR5
KCkpCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICBUKiBvbGRCdWZmZXIgPSBiZWdpbigpOwogICAg
VCogb2xkRW5kID0gZW5kKCk7CgogICAgYXNhblNldEJ1ZmZlclNpemVUb0Z1bGxDYXBhY2l0eSgp
OwoKICAgIGlmICghQmFzZTo6dHJ5QWxsb2NhdGVCdWZmZXIobmV3Q2FwYWNpdHkpKSB7CiAgICAg
ICAgYXNhblNldEluaXRpYWxCdWZmZXJTaXplVG8oc2l6ZSgpKTsKICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICB9CiAgICAoKHZvaWQpMCk7CgogICAgYXNhblNldEluaXRpYWxCdWZmZXJTaXplVG8o
c2l6ZSgpKTsKCiAgICBUeXBlT3BlcmF0aW9uczo6bW92ZShvbGRCdWZmZXIsIG9sZEVuZCwgYmVn
aW4oKSk7CiAgICBCYXNlOjpkZWFsbG9jYXRlQnVmZmVyKG9sZEJ1ZmZlcik7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBl
bmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KaW5saW5lIHZvaWQgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplX3QgaW5pdGlhbENhcGFjaXR5KQp7CiAgICAoKHZvaWQp
MCk7CiAgICAoKHZvaWQpMCk7CiAgICBpZiAoaW5pdGlhbENhcGFjaXR5ID4gaW5saW5lQ2FwYWNp
dHkpCiAgICAgICAgQmFzZTo6YWxsb2NhdGVCdWZmZXIoaW5pdGlhbENhcGFjaXR5KTsKfQoKdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxv
d0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4Kdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpzaHJpbmtDYXBhY2l0eShzaXplX3Qg
bmV3Q2FwYWNpdHkpCnsKICAgIGlmIChuZXdDYXBhY2l0eSA+PSBjYXBhY2l0eSgpKQogICAgICAg
IHJldHVybjsKCiAgICBpZiAobmV3Q2FwYWNpdHkgPCBzaXplKCkpCiAgICAgICAgc2hyaW5rKG5l
d0NhcGFjaXR5KTsKCiAgICBhc2FuU2V0QnVmZmVyU2l6ZVRvRnVsbENhcGFjaXR5KCk7CgogICAg
VCogb2xkQnVmZmVyID0gYmVnaW4oKTsKICAgIGlmIChuZXdDYXBhY2l0eSA+IDApIHsKICAgICAg
ICBpZiAoQmFzZTo6c2hvdWxkUmVhbGxvY2F0ZUJ1ZmZlcihuZXdDYXBhY2l0eSkpIHsKICAgICAg
ICAgICAgQmFzZTo6cmVhbGxvY2F0ZUJ1ZmZlcihuZXdDYXBhY2l0eSk7CiAgICAgICAgICAgIGFz
YW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRvKHNpemUoKSk7CiAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICB9CgogICAgICAgIFQqIG9sZEVuZCA9IGVuZCgpOwogICAgICAgIEJhc2U6OmFsbG9jYXRl
QnVmZmVyKG5ld0NhcGFjaXR5KTsKICAgICAgICBpZiAoYmVnaW4oKSAhPSBvbGRCdWZmZXIpCiAg
ICAgICAgICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlKG9sZEJ1ZmZlciwgb2xkRW5kLCBiZWdpbigp
KTsKICAgIH0KCiAgICBCYXNlOjpkZWFsbG9jYXRlQnVmZmVyKG9sZEJ1ZmZlcik7CiAgICBCYXNl
OjpyZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQoKTsKCiAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZl
clNpemVUbyhzaXplKCkpOwp9CgoKCgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PiB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPgp2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmFwcGVuZChjb25zdCBVKiBkYXRhLCBzaXplX3QgZGF0
YVNpemUpCnsKICAgIHNpemVfdCBuZXdTaXplID0gbV9zaXplICsgZGF0YVNpemU7CiAgICBpZiAo
bmV3U2l6ZSA+IGNhcGFjaXR5KCkpIHsKICAgICAgICBkYXRhID0gZXhwYW5kQ2FwYWNpdHkobmV3
U2l6ZSwgZGF0YSk7CiAgICAgICAgKCh2b2lkKTApOwogICAgfQogICAgaWYgKG5ld1NpemUgPCBt
X3NpemUpCiAgICAgICAgV1RGQ3Jhc2goKTsKICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRv
KG5ld1NpemUpOwogICAgVCogZGVzdCA9IGVuZCgpOwogICAgVmVjdG9yQ29waWVyPHN0ZDo6aXNf
dHJpdmlhbDxUPjo6dmFsdWUsIFU+Ojp1bmluaXRpYWxpemVkQ29weShkYXRhLCBzdGQ6OmFkZHJl
c3NvZihkYXRhW2RhdGFTaXplXSksIGRlc3QpOwogICAgbV9zaXplID0gbmV3U2l6ZTsKfQoKdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxv
d0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4gdGVtcGxhdGU8dHlwZW5hbWUgVT4KYm9vbCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+Ojp0
cnlBcHBlbmQoY29uc3QgVSogZGF0YSwgc2l6ZV90IGRhdGFTaXplKQp7CiAgICBzaXplX3QgbmV3
U2l6ZSA9IG1fc2l6ZSArIGRhdGFTaXplOwogICAgaWYgKG5ld1NpemUgPiBjYXBhY2l0eSgpKSB7
CiAgICAgICAgZGF0YSA9IHRyeUV4cGFuZENhcGFjaXR5KG5ld1NpemUsIGRhdGEpOwogICAgICAg
IGlmICghZGF0YSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICgodm9pZCkwKTsK
ICAgIH0KICAgIGlmIChuZXdTaXplIDwgbV9zaXplKQogICAgICAgIHJldHVybiBmYWxzZTsKICAg
IGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG5ld1NpemUpOwogICAgVCogZGVzdCA9IGVuZCgp
OwogICAgVmVjdG9yQ29waWVyPHN0ZDo6aXNfdHJpdmlhbDxUPjo6dmFsdWUsIFU+Ojp1bmluaXRp
YWxpemVkQ29weShkYXRhLCBzdGQ6OmFkZHJlc3NvZihkYXRhW2RhdGFTaXplXSksIGRlc3QpOwog
ICAgbV9zaXplID0gbmV3U2l6ZTsKICAgIHJldHVybiB0cnVlOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6
ZV90IG1pbkNhcGFjaXR5PiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgppbmxpbmUgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3Zl
cmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmFwcGVuZChVJiYgdmFsdWUpCnsKICAgIGlmIChz
aXplKCkgIT0gY2FwYWNpdHkoKSkgewogICAgICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRv
KG1fc2l6ZSArIDEpOwogICAgICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3YXJk
PFU+KHZhbHVlKSk7CiAgICAgICAgKyttX3NpemU7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAg
IGFwcGVuZFNsb3dDYXNlKHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSkpOwp9Cgp0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwg
c2l6ZV90IG1pbkNhcGFjaXR5PiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgppbmxpbmUgX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmNvbnN0cnVjdEFuZEFwcGVuZChB
cmdzJiYuLi4gYXJncykKewogICAgaWYgKHNpemUoKSAhPSBjYXBhY2l0eSgpKSB7CiAgICAgICAg
YXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7CiAgICAgICAgbmV3IChOb3RO
dWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgICAgICsrbV9z
aXplOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBjb25zdHJ1Y3RBbmRBcHBlbmRTbG93Q2Fz
ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1p
bkNhcGFjaXR5PiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgp2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmFwcGVuZFNsb3dDYXNlKFUmJiB2
YWx1ZSkKewogICAgKCh2b2lkKTApOwoKICAgIGF1dG8gcHRyID0gY29uc3RfY2FzdDx0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9jb25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VT46OnR5
cGU+Ojp0eXBlKj4oc3RkOjphZGRyZXNzb2YodmFsdWUpKTsKICAgIHB0ciA9IGV4cGFuZENhcGFj
aXR5KHNpemUoKSArIDEsIHB0cik7CiAgICAoKHZvaWQpMCk7CgogICAgYXNhbkJ1ZmZlclNpemVX
aWxsQ2hhbmdlVG8obV9zaXplICsgMSk7CiAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6
Zm9yd2FyZDxVPigqcHRyKSk7CiAgICArK21fc2l6ZTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBt
aW5DYXBhY2l0eT4gdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4Kdm9pZCBWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+Ojpjb25zdHJ1Y3RBbmRB
cHBlbmRTbG93Q2FzZShBcmdzJiYuLi4gYXJncykKewogICAgKCh2b2lkKTApOwoKICAgIGV4cGFu
ZENhcGFjaXR5KHNpemUoKSArIDEpOwogICAgKCh2b2lkKTApOwoKICAgIGFzYW5CdWZmZXJTaXpl
V2lsbENoYW5nZVRvKG1fc2l6ZSArIDEpOwogICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgKyttX3NpemU7Cn0KCgoKCnRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
LCBzaXplX3QgbWluQ2FwYWNpdHk+IHRlbXBsYXRlPHR5cGVuYW1lIFU+CmlubGluZSB2b2lkIFZl
Y3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnVu
Y2hlY2tlZEFwcGVuZChVJiYgdmFsdWUpCnsKICAgICgodm9pZCkwKTsKCiAgICBhc2FuQnVmZmVy
U2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKCiAgICBhdXRvIHB0ciA9IHN0ZDo6YWRkcmVz
c29mKHZhbHVlKTsKICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3YXJkPFU+KCpw
dHIpKTsKICAgICsrbV9zaXplOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PiB0
ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eT4KaW5saW5lIHZvaWQgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6YXBw
ZW5kVmVjdG9yKGNvbnN0IFZlY3RvcjxVLCBvdGhlckNhcGFjaXR5PiYgdmFsKQp7CiAgICBhcHBl
bmQodmFsLmJlZ2luKCksIHZhbC5zaXplKCkpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNh
cGFjaXR5PiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgp2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46Omluc2VydChzaXplX3QgcG9zaXRpb24s
IGNvbnN0IFUqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKewogICAgKCh2b2lkKTApOwogICAgc2l6
ZV90IG5ld1NpemUgPSBtX3NpemUgKyBkYXRhU2l6ZTsKICAgIGlmIChuZXdTaXplID4gY2FwYWNp
dHkoKSkgewogICAgICAgIGRhdGEgPSBleHBhbmRDYXBhY2l0eShuZXdTaXplLCBkYXRhKTsKICAg
ICAgICAoKHZvaWQpMCk7CiAgICB9CiAgICBpZiAobmV3U2l6ZSA8IG1fc2l6ZSkKICAgICAgICBX
VEZDcmFzaCgpOwogICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obmV3U2l6ZSk7CiAgICBU
KiBzcG90ID0gYmVnaW4oKSArIHBvc2l0aW9uOwogICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVPdmVy
bGFwcGluZyhzcG90LCBlbmQoKSwgc3BvdCArIGRhdGFTaXplKTsKICAgIFZlY3RvckNvcGllcjxz
dGQ6OmlzX3RyaXZpYWw8VD46OnZhbHVlLCBVPjo6dW5pbml0aWFsaXplZENvcHkoZGF0YSwgc3Rk
OjphZGRyZXNzb2YoZGF0YVtkYXRhU2l6ZV0pLCBzcG90KTsKICAgIG1fc2l6ZSA9IG5ld1NpemU7
Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
T3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+IHRlbXBsYXRlPHR5cGVuYW1lIFU+
CmlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBt
aW5DYXBhY2l0eT46Omluc2VydChzaXplX3QgcG9zaXRpb24sIFUmJiB2YWx1ZSkKewogICAgKCh2
b2lkKTApOwoKICAgIGF1dG8gcHRyID0gY29uc3RfY2FzdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9j
b25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VT46OnR5cGU+Ojp0eXBlKj4oc3Rk
OjphZGRyZXNzb2YodmFsdWUpKTsKICAgIGlmIChzaXplKCkgPT0gY2FwYWNpdHkoKSkgewogICAg
ICAgIHB0ciA9IGV4cGFuZENhcGFjaXR5KHNpemUoKSArIDEsIHB0cik7CiAgICAgICAgKCh2b2lk
KTApOwogICAgfQoKICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSArIDEpOwoK
ICAgIFQqIHNwb3QgPSBiZWdpbigpICsgcG9zaXRpb247CiAgICBUeXBlT3BlcmF0aW9uczo6bW92
ZU92ZXJsYXBwaW5nKHNwb3QsIGVuZCgpLCBzcG90ICsgMSk7CiAgICBuZXcgKE5vdE51bGwsIHNw
b3QpIFQoc3RkOjpmb3J3YXJkPFU+KCpwdHIpKTsKICAgICsrbV9zaXplOwp9Cgp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxl
ciwgc2l6ZV90IG1pbkNhcGFjaXR5PiB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgYz4KaW5s
aW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNh
cGFjaXR5Pjo6aW5zZXJ0VmVjdG9yKHNpemVfdCBwb3NpdGlvbiwgY29uc3QgVmVjdG9yPFUsIGM+
JiB2YWwpCnsKICAgIGluc2VydChwb3NpdGlvbiwgdmFsLmJlZ2luKCksIHZhbC5zaXplKCkpOwp9
Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92
ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgppbmxpbmUgdm9pZCBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpyZW1vdmUoc2l6
ZV90IHBvc2l0aW9uKQp7CiAgICAoKHZvaWQpMCk7CiAgICBUKiBzcG90ID0gYmVnaW4oKSArIHBv
c2l0aW9uOwogICAgc3BvdC0+flQoKTsKICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBp
bmcoc3BvdCArIDEsIGVuZCgpLCBzcG90KTsKICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRv
KG1fc2l6ZSAtIDEpOwogICAgLS1tX3NpemU7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2Fw
YWNpdHk+CmlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyLCBtaW5DYXBhY2l0eT46OnJlbW92ZShzaXplX3QgcG9zaXRpb24sIHNpemVfdCBsZW5ndGgp
CnsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKICAgIFQqIGJlZ2luU3BvdCA9IGJlZ2lu
KCkgKyBwb3NpdGlvbjsKICAgIFQqIGVuZFNwb3QgPSBiZWdpblNwb3QgKyBsZW5ndGg7CiAgICBU
eXBlT3BlcmF0aW9uczo6ZGVzdHJ1Y3QoYmVnaW5TcG90LCBlbmRTcG90KTsKICAgIFR5cGVPcGVy
YXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoZW5kU3BvdCwgZW5kKCksIGJlZ2luU3BvdCk7CiAgICBh
c2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgLSBsZW5ndGgpOwogICAgbV9zaXplIC09
IGxlbmd0aDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KdGVtcGxhdGU8dHlw
ZW5hbWUgVT4KaW5saW5lIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmVtb3ZlRmlyc3QoY29uc3QgVSYgdmFsdWUpCnsKICAgIHJl
dHVybiByZW1vdmVGaXJzdE1hdGNoaW5nKFsmdmFsdWVdIChjb25zdCBUJiBjdXJyZW50KSB7CiAg
ICAgICAgcmV0dXJuIGN1cnJlbnQgPT0gdmFsdWU7CiAgICB9KTsKfQoKdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNp
emVfdCBtaW5DYXBhY2l0eT4KdGVtcGxhdGU8dHlwZW5hbWUgTWF0Y2hGdW5jdGlvbj4KaW5saW5l
IGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFj
aXR5Pjo6cmVtb3ZlRmlyc3RNYXRjaGluZyhjb25zdCBNYXRjaEZ1bmN0aW9uJiBtYXRjaGVzKQp7
CiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKSB7CiAgICAgICAgaWYgKG1h
dGNoZXMoYXQoaSkpKSB7CiAgICAgICAgICAgIHJlbW92ZShpKTsKICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGZhbHNlOwp9Cgp0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwg
c2l6ZV90IG1pbkNhcGFjaXR5Pgp0ZW1wbGF0ZTx0eXBlbmFtZSBVPgppbmxpbmUgdW5zaWduZWQg
VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6
cmVtb3ZlQWxsKGNvbnN0IFUmIHZhbHVlKQp7CiAgICByZXR1cm4gcmVtb3ZlQWxsTWF0Y2hpbmco
WyZ2YWx1ZV0gKGNvbnN0IFQmIGN1cnJlbnQpIHsKICAgICAgICByZXR1cm4gY3VycmVudCA9PSB2
YWx1ZTsKICAgIH0pOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5Pgp0ZW1wbGF0
ZTx0eXBlbmFtZSBNYXRjaEZ1bmN0aW9uPgppbmxpbmUgdW5zaWduZWQgVmVjdG9yPFQsIGlubGlu
ZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmVtb3ZlQWxsTWF0Y2hp
bmcoY29uc3QgTWF0Y2hGdW5jdGlvbiYgbWF0Y2hlcykKewogICAgaXRlcmF0b3IgaG9sZUJlZ2lu
ID0gZW5kKCk7CiAgICBpdGVyYXRvciBob2xlRW5kID0gZW5kKCk7CiAgICB1bnNpZ25lZCBtYXRj
aENvdW50ID0gMDsKICAgIGZvciAoYXV0byBpdCA9IGJlZ2luKCksIGl0RW5kID0gZW5kKCk7IGl0
ICE9IGl0RW5kOyArK2l0KSB7CiAgICAgICAgaWYgKG1hdGNoZXMoKml0KSkgewogICAgICAgICAg
ICBpZiAoaG9sZUJlZ2luID09IGVuZCgpKQogICAgICAgICAgICAgICAgaG9sZUJlZ2luID0gaXQ7
CiAgICAgICAgICAgIGVsc2UgaWYgKGhvbGVFbmQgIT0gaXQpIHsKICAgICAgICAgICAgICAgIFR5
cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoaG9sZUVuZCwgaXQsIGhvbGVCZWdpbik7CiAg
ICAgICAgICAgICAgICBob2xlQmVnaW4gKz0gaXQgLSBob2xlRW5kOwogICAgICAgICAgICB9CiAg
ICAgICAgICAgIGhvbGVFbmQgPSBpdCArIDE7CiAgICAgICAgICAgIGl0LT5+VCgpOwogICAgICAg
ICAgICArK21hdGNoQ291bnQ7CiAgICAgICAgfQogICAgfQogICAgaWYgKGhvbGVFbmQgIT0gZW5k
KCkpCiAgICAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVPdmVybGFwcGluZyhob2xlRW5kLCBlbmQo
KSwgaG9sZUJlZ2luKTsKICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSAtIG1h
dGNoQ291bnQpOwogICAgbV9zaXplIC09IG1hdGNoQ291bnQ7CiAgICByZXR1cm4gbWF0Y2hDb3Vu
dDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFt
ZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KaW5saW5lIHZvaWQgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmV2ZXJz
ZSgpCnsKICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zaXplIC8gMjsgKytpKQogICAgICAg
IHN0ZDo6c3dhcChhdChpKSwgYXQobV9zaXplIC0gMSAtIGkpKTsKfQoKdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNp
emVfdCBtaW5DYXBhY2l0eT4KaW5saW5lIE1hbGxvY1B0cjxUPiBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpyZWxlYXNlQnVmZmVyKCkKewoK
CgogICAgYXNhblNldEJ1ZmZlclNpemVUb0Z1bGxDYXBhY2l0eSgpOwoKICAgIGF1dG8gYnVmZmVy
ID0gQmFzZTo6cmVsZWFzZUJ1ZmZlcigpOwogICAgaWYgKGlubGluZUNhcGFjaXR5ICYmICFidWZm
ZXIgJiYgbV9zaXplKSB7CgoKCiAgICAgICAgc2l6ZV90IGJ5dGVzID0gbV9zaXplICogc2l6ZW9m
KFQpOwogICAgICAgIGJ1ZmZlciA9IGFkb3B0TWFsbG9jUHRyKHN0YXRpY19jYXN0PFQqPihmYXN0
TWFsbG9jKGJ5dGVzKSkpOwogICAgICAgIG1lbWNweShidWZmZXIuZ2V0KCksIGRhdGEoKSwgYnl0
ZXMpOwogICAgfQogICAgbV9zaXplID0gMDsKCiAgICByZXR1cm4gYnVmZmVyOwp9Cgp0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFu
ZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgppbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpjaGVja0NvbnNpc3RlbmN5KCkK
ewoKCgoKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBl
bmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KaW5saW5lIHZvaWQgc3dh
cChWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+
JiBhLCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNp
dHk+JiBiKQp7CiAgICBhLnN3YXAoYik7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNp
dHk+CmJvb2wgb3BlcmF0b3I9PShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJm
bG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiBhLCBjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiBiKQp7CiAgICBpZiAoYS5zaXplKCkg
IT0gYi5zaXplKCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIHJldHVybiBWZWN0b3JUeXBl
T3BlcmF0aW9uczxUPjo6Y29tcGFyZShhLmRhdGEoKSwgYi5kYXRhKCksIGEuc2l6ZSgpKTsKfQoK
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVy
Zmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNp
dHk+JiBhLCBjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwg
bWluQ2FwYWNpdHk+JiBiKQp7CiAgICByZXR1cm4gIShhID09IGIpOwp9CiMgMTQ3NCAiLi4vLi4v
U291cmNlL1dURi93dGYvVmVjdG9yLmgiCn0KCnVzaW5nIFdURjo6VmVjdG9yOwp1c2luZyBXVEY6
OlVuc2FmZVZlY3Rvck92ZXJmbG93Owp1c2luZyBXVEY6Om5vdEZvdW5kOwojIDM4ICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCIgMgojIDU4ICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCIKI2Rl
ZmluZSBKSVRfQUxMT0NBVE9SX0xBUkdFX0FMTE9DX1NJWkUgKHBhZ2VTaXplKCkgKiA0KQoKI2Rl
ZmluZSBFWEVDVVRBQkxFX1BPT0xfV1JJVEFCTEUgdHJ1ZQoKbmFtZXNwYWNlIEpTQyB7CgpjbGFz
cyBWTTsKCnN0YXRpYyBjb25zdCB1bnNpZ25lZCBqaXRBbGxvY2F0aW9uR3JhbnVsZSA9IDMyOwoK
dHlwZWRlZiBXVEY6Ok1ldGFBbGxvY2F0b3JIYW5kbGUgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZTsK
CgoKCmNsYXNzIERlbWFuZEV4ZWN1dGFibGVBbGxvY2F0b3I7CiMgMTEzICIuLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCIKc3RhdGljIGlubGluZSB2
b2lkKiBwZXJmb3JtSklUTWVtY3B5KHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qg
bikKewogICAgcmV0dXJuIG1lbWNweShkc3QsIHNyYywgbik7Cn0KCgpjbGFzcyBFeGVjdXRhYmxl
QWxsb2NhdG9yIHsKICAgIGVudW0gUHJvdGVjdGlvblNldHRpbmcgeyBXcml0YWJsZSwgRXhlY3V0
YWJsZSB9OwoKcHVibGljOgogICAgRXhlY3V0YWJsZUFsbG9jYXRvcihWTSYpOwogICAgfkV4ZWN1
dGFibGVBbGxvY2F0b3IoKTsKCiAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplQWxsb2NhdG9yKCk7
CgogICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CgogICAgc3RhdGljIGJvb2wgdW5kZXJNZW1vcnlQ
cmVzc3VyZSgpOwoKICAgIHN0YXRpYyBkb3VibGUgbWVtb3J5UHJlc3N1cmVNdWx0aXBsaWVyKHNp
emVfdCBhZGRlZE1lbW9yeVVzYWdlKTsKCgoKCiAgICBzdGF0aWMgdm9pZCBkdW1wUHJvZmlsZSgp
IHsgfQoKCiAgICBSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gYWxsb2NhdGUoVk0mLCBz
aXplX3Qgc2l6ZUluQnl0ZXMsIHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCk7
CgogICAgYm9vbCBpc1ZhbGlkRXhlY3V0YWJsZU1lbW9yeShjb25zdCBMb2NrSG9sZGVyJiwgdm9p
ZCogYWRkcmVzcyk7CgogICAgc3RhdGljIHNpemVfdCBjb21taXR0ZWRCeXRlQ291bnQoKTsKCiAg
ICBMb2NrJiBnZXRMb2NrKCkgY29uc3Q7Cn07CgoKCn0KIyAzMSAiLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIgMgojIDEgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCIgMQojIDI3ICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgiCiNkZWZpbmUgTExJbnREYXRh
X2ggCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aCIgMQojIDI0ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgiCiNkZWZpbmUgSlNDSlNWYWx1ZV9oIAoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0V4cG9ydE1hY3Jvcy5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1B1cmVOYU4uaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9QdXJlTmFOLmgiCiNkZWZpbmUgUHVyZU5hTl9oIAoKCgoKbmFtZXNwYWNl
IEpTQyB7CiMgNjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1cmVOYU4u
aCIKaW5saW5lIGRvdWJsZSBwdXJlTmFOKCkKewoKCgoKCgoKICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8ZG91YmxlPigweDdmZjgwMDAwMDAwMDAwMDBsbCk7Cn0KCiNkZWZpbmUgUE5hTiAocHVyZU5h
TigpKQoKaW5saW5lIGJvb2wgaXNJbXB1cmVOYU4oZG91YmxlIHZhbHVlKQp7CgoKICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKSA+PSAweGZmZmUwMDAwMDAwMDAwMDBsbHU7
Cn0KCgppbmxpbmUgZG91YmxlIHB1cmlmeU5hTihkb3VibGUgdmFsdWUpCnsKICAgIGlmICh2YWx1
ZSAhPSB2YWx1ZSkKICAgICAgICByZXR1cm4gKHB1cmVOYU4oKSk7CiAgICByZXR1cm4gdmFsdWU7
Cn0KCn0KIyAyOCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oIiAyCgoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvNC45LjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzMSAiLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIiAyCgoKIyAxICIuLi8uLi9Tb3VyY2UvV1RG
L3d0Zi9Gb3J3YXJkLmgiIDEKIyAyMiAiLi4vLi4vU291cmNlL1dURi93dGYvRm9yd2FyZC5oIgoj
ZGVmaW5lIFdURl9Gb3J3YXJkX2ggCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDI1ICIuLi8u
Li9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgiIDIKCm5hbWVzcGFjZSBXVEYgewoKdGVtcGxhdGU8
dHlwZW5hbWUgVD4gY2xhc3MgRnVuY3Rpb247CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIExh
enlOZXZlckRlc3Ryb3llZDsKdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgTmV2ZXJEZXN0cm95
ZWQ7CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIE9wdGlvblNldDsKdGVtcGxhdGU8dHlwZW5h
bWUgVD4gY2xhc3MgT3B0aW9uYWw7CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQ
dHI7CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZjsKdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Y2xhc3MgUmVmUHRyOwp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBTdHJpbmdCdWZmZXI7Cgp0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJm
bG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PiBjbGFzcyBWZWN0b3I7CgpjbGFzcyBBdG9t
aWNTdHJpbmc7CmNsYXNzIEF0b21pY1N0cmluZ0ltcGw7CmNsYXNzIEJpbmFyeVNlbWFwaG9yZTsK
Y2xhc3MgQ1N0cmluZzsKY2xhc3MgRGVjb2RlcjsKY2xhc3MgRW5jb2RlcjsKY2xhc3MgRnVuY3Rp
b25EaXNwYXRjaGVyOwpjbGFzcyBPcmRpbmFsTnVtYmVyOwpjbGFzcyBQcmludFN0cmVhbTsKY2xh
c3MgU3RyaW5nOwpjbGFzcyBTdHJpbmdCdWlsZGVyOwpjbGFzcyBTdHJpbmdJbXBsOwpjbGFzcyBT
dHJpbmdWaWV3OwpjbGFzcyBUZXh0UG9zaXRpb247Cgp9Cgp1c2luZyBXVEY6OkF0b21pY1N0cmlu
ZzsKdXNpbmcgV1RGOjpBdG9taWNTdHJpbmdJbXBsOwp1c2luZyBXVEY6OkJpbmFyeVNlbWFwaG9y
ZTsKdXNpbmcgV1RGOjpDU3RyaW5nOwp1c2luZyBXVEY6OkRlY29kZXI7CnVzaW5nIFdURjo6RW5j
b2RlcjsKdXNpbmcgV1RGOjpGdW5jdGlvbjsKdXNpbmcgV1RGOjpGdW5jdGlvbkRpc3BhdGNoZXI7
CnVzaW5nIFdURjo6TGF6eU5ldmVyRGVzdHJveWVkOwp1c2luZyBXVEY6Ok5ldmVyRGVzdHJveWVk
Owp1c2luZyBXVEY6Ok9wdGlvblNldDsKdXNpbmcgV1RGOjpPcHRpb25hbDsKdXNpbmcgV1RGOjpP
cmRpbmFsTnVtYmVyOwp1c2luZyBXVEY6OlBhc3NSZWZQdHI7CnVzaW5nIFdURjo6UHJpbnRTdHJl
YW07CnVzaW5nIFdURjo6UmVmOwp1c2luZyBXVEY6OlJlZlB0cjsKdXNpbmcgV1RGOjpTdHJpbmc7
CnVzaW5nIFdURjo6U3RyaW5nQnVmZmVyOwp1c2luZyBXVEY6OlN0cmluZ0J1aWxkZXI7CnVzaW5n
IFdURjo6U3RyaW5nSW1wbDsKdXNpbmcgV1RGOjpTdHJpbmdWaWV3Owp1c2luZyBXVEY6OlRleHRQ
b3NpdGlvbjsKdXNpbmcgV1RGOjpWZWN0b3I7CiMgMzQgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCIgMgoKCgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3Rm
L01lZGlhVGltZS5oIiAxCiMgMzAgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5oIgoj
ZGVmaW5lIFdURl9NZWRpYVRpbWVfaCAKCgoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2NtYXRoIiAxIDMKIyAzOSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1
bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9jbWF0aCIgMwog
ICAgICAgCiMgNDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvY21hdGgiIDMKIyAzNSAiLi4vLi4vU291cmNlL1dURi93dGYvTWVkaWFUaW1l
LmgiIDIKCgoKCm5hbWVzcGFjZSBXVEYgewoKY2xhc3MgUHJpbnRTdHJlYW07CgpjbGFzcyBNZWRp
YVRpbWUgewogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7
IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1
cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpm
YXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6
OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVy
biA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQq
IHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5v
dE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9
IHByaXZhdGU6IHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJU
aGlzTWFjcm87CnB1YmxpYzoKICAgIGVudW0gewogICAgICAgIFZhbGlkID0gMSA8PCAwLAogICAg
ICAgIEhhc0JlZW5Sb3VuZGVkID0gMSA8PCAxLAogICAgICAgIFBvc2l0aXZlSW5maW5pdGUgPSAx
IDw8IDIsCiAgICAgICAgTmVnYXRpdmVJbmZpbml0ZSA9IDEgPDwgMywKICAgICAgICBJbmRlZmlu
aXRlID0gMSA8PCA0LAogICAgICAgIERvdWJsZVZhbHVlID0gMSA8PCA1LAogICAgfTsKCiAgICBN
ZWRpYVRpbWUoKTsKICAgIE1lZGlhVGltZShpbnQ2NF90IHZhbHVlLCBpbnQzMl90IHNjYWxlLCB1
aW50MzJfdCBmbGFncyA9IFZhbGlkKTsKICAgIE1lZGlhVGltZShjb25zdCBNZWRpYVRpbWUmIHJo
cyk7CiAgICB+TWVkaWFUaW1lKCk7CgogICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRmxv
YXQoZmxvYXQgZmxvYXRUaW1lKTsKICAgIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aEZsb2F0
KGZsb2F0IGZsb2F0VGltZSwgaW50MzJfdCB0aW1lU2NhbGUpOwogICAgc3RhdGljIE1lZGlhVGlt
ZSBjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSBkb3VibGVUaW1lKTsKICAgIHN0YXRpYyBNZWRpYVRp
bWUgY3JlYXRlV2l0aERvdWJsZShkb3VibGUgZG91YmxlVGltZSwgaW50MzJfdCB0aW1lU2NhbGUp
OwoKICAgIGZsb2F0IHRvRmxvYXQoKSBjb25zdDsKICAgIGRvdWJsZSB0b0RvdWJsZSgpIGNvbnN0
OwoKICAgIE1lZGlhVGltZSYgb3BlcmF0b3I9KGNvbnN0IE1lZGlhVGltZSYgcmhzKTsKICAgIE1l
ZGlhVGltZSYgb3BlcmF0b3IrPShjb25zdCBNZWRpYVRpbWUmIHJocykgeyByZXR1cm4gKnRoaXMg
PSAqdGhpcyArIHJoczsgfQogICAgTWVkaWFUaW1lJiBvcGVyYXRvci09KGNvbnN0IE1lZGlhVGlt
ZSYgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzIC0gcmhzOyB9CiAgICBNZWRpYVRpbWUgb3Bl
cmF0b3IrKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKICAgIE1lZGlhVGltZSBvcGVyYXRv
ci0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0OwogICAgTWVkaWFUaW1lIG9wZXJhdG9yLSgp
IGNvbnN0OwogICAgTWVkaWFUaW1lIG9wZXJhdG9yKihpbnQzMl90KSBjb25zdDsKICAgIGJvb2wg
b3BlcmF0b3I8KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKICAgIGJvb2wgb3BlcmF0b3I+
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBN
ZWRpYVRpbWUmIHJocykgY29uc3Q7CiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWVkaWFUaW1l
JiByaHMpIGNvbnN0OwogICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBj
b25zdDsKICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7CiAg
ICBib29sIG9wZXJhdG9yISgpIGNvbnN0OwogICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0OwoKICAgIHR5cGVkZWYgZW51bSB7CiAgICAgICAgTGVzc1RoYW4gPSAtMSwKICAgICAgICBF
cXVhbFRvID0gMCwKICAgICAgICBHcmVhdGVyVGhhbiA9IDEsCiAgICB9IENvbXBhcmlzb25GbGFn
czsKCiAgICBDb21wYXJpc29uRmxhZ3MgY29tcGFyZShjb25zdCBNZWRpYVRpbWUmIHJocykgY29u
c3Q7CgogICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3MgJiBWYWxp
ZDsgfQogICAgYm9vbCBpc0ludmFsaWQoKSBjb25zdCB7IHJldHVybiAhaXNWYWxpZCgpOyB9CiAg
ICBib29sIGhhc0JlZW5Sb3VuZGVkKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3MgJiBIYXNC
ZWVuUm91bmRlZDsgfQogICAgYm9vbCBpc1Bvc2l0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVy
biBtX3RpbWVGbGFncyAmIFBvc2l0aXZlSW5maW5pdGU7IH0KICAgIGJvb2wgaXNOZWdhdGl2ZUlu
ZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3MgJiBOZWdhdGl2ZUluZmluaXRlOyB9
CiAgICBib29sIGlzSW5kZWZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgSW5k
ZWZpbml0ZTsgfQogICAgYm9vbCBoYXNEb3VibGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZUZsYWdzICYgRG91YmxlVmFsdWU7IH0KCiAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiB6ZXJv
VGltZSgpOwogICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYgaW52YWxpZFRpbWUoKTsKICAgIHN0
YXRpYyBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAgICBzdGF0aWMg
Y29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwogICAgc3RhdGljIGNvbnN0
IE1lZGlhVGltZSYgaW5kZWZpbml0ZVRpbWUoKTsKCiAgICBjb25zdCBpbnQ2NF90JiB0aW1lVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVWYWx1ZTsgfQogICAgY29uc3QgaW50MzJfdCYgdGlt
ZVNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lU2NhbGU7IH0KCiAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3Q7CgoKICAgIG9wZXJhdG9yIGRvdWJsZSgpIGNvbnN0ID0gZGVs
ZXRlOwogICAgTWVkaWFUaW1lKGRvdWJsZSkgPSBkZWxldGU7CiAgICBvcGVyYXRvciBpbnQoKSBj
b25zdCA9IGRlbGV0ZTsKICAgIE1lZGlhVGltZShpbnQpID0gZGVsZXRlOwoKICAgIGZyaWVuZCBN
ZWRpYVRpbWUgYWJzKGNvbnN0IE1lZGlhVGltZSYgcmhzKTsKCiAgICBzdGF0aWMgY29uc3QgaW50
MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDAwMDA7CiAgICBzdGF0aWMgY29uc3QgaW50MzJf
dCBNYXhpbXVtVGltZVNjYWxlOwoKcHJpdmF0ZToKICAgIHZvaWQgc2V0VGltZVNjYWxlKGludDMy
X3QpOwoKICAgIHVuaW9uIHsKICAgICAgICBpbnQ2NF90IG1fdGltZVZhbHVlOwogICAgICAgIGRv
dWJsZSBtX3RpbWVWYWx1ZUFzRG91YmxlOwogICAgfTsKICAgIGludDMyX3QgbV90aW1lU2NhbGU7
CiAgICB1aW50MzJfdCBtX3RpbWVGbGFnczsKfTsKCmlubGluZSBNZWRpYVRpbWUgb3BlcmF0b3Iq
KGludDMyX3QgbGhzLCBjb25zdCBNZWRpYVRpbWUmIHJocykgeyByZXR1cm4gcmhzLm9wZXJhdG9y
KihsaHMpOyB9CgogZXh0ZXJuIE1lZGlhVGltZSBhYnMoY29uc3QgTWVkaWFUaW1lJiByaHMpOwp9
Cgp1c2luZyBXVEY6Ok1lZGlhVGltZTsKdXNpbmcgV1RGOjphYnM7CiMgMzggIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCIgMgoKIyAxICIuLi8uLi9Tb3Vy
Y2UvV1RGL3d0Zi9UcmlTdGF0ZS5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1RyaVN0
YXRlLmgiCiNkZWZpbmUgVHJpU3RhdGVfaCAKCm5hbWVzcGFjZSBXVEYgewoKZW51bSBUcmlTdGF0
ZSB7CiAgICBGYWxzZVRyaVN0YXRlLAogICAgVHJ1ZVRyaVN0YXRlLAogICAgTWl4ZWRUcmlTdGF0
ZQp9OwoKaW5saW5lIFRyaVN0YXRlIHRyaVN0YXRlKGJvb2wgYm9vbGVhbikKewogICAgcmV0dXJu
IHN0YXRpY19jYXN0PFRyaVN0YXRlPihib29sZWFuKTsKfQoKfQoKdXNpbmcgV1RGOjpUcmlTdGF0
ZTsKdXNpbmcgV1RGOjpGYWxzZVRyaVN0YXRlOwp1c2luZyBXVEY6OlRydWVUcmlTdGF0ZTsKdXNp
bmcgV1RGOjpNaXhlZFRyaVN0YXRlOwp1c2luZyBXVEY6OnRyaVN0YXRlOwojIDQwICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgiIDIKCm5hbWVzcGFjZSBK
U0MgewoKY2xhc3MgQXNzZW1ibHlIZWxwZXJzOwpjbGFzcyBFeGVjU3RhdGU7CmNsYXNzIEpTQ2Vs
bDsKY2xhc3MgSlNWYWx1ZVNvdXJjZTsKY2xhc3MgVk07CmNsYXNzIEpTR2xvYmFsT2JqZWN0Owpj
bGFzcyBKU09iamVjdDsKY2xhc3MgSlNTdHJpbmc7CmNsYXNzIElkZW50aWZpZXI7CmNsYXNzIFBy
b3BlcnR5TmFtZTsKY2xhc3MgUHJvcGVydHlTbG90OwpjbGFzcyBQdXRQcm9wZXJ0eVNsb3Q7CmNs
YXNzIFN0cnVjdHVyZTsKCm5hbWVzcGFjZSBERkcgewpjbGFzcyBKSVRDb21waWxlcjsKY2xhc3Mg
T1NSRXhpdENvbXBpbGVyOwpjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKfQoKCgoKCgoKc3RydWN0IENs
YXNzSW5mbzsKc3RydWN0IER1bXBDb250ZXh0OwpzdHJ1Y3QgSW5zdHJ1Y3Rpb247CnN0cnVjdCBN
ZXRob2RUYWJsZTsKCnRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBXcml0ZUJhcnJpZXJCYXNlOwoK
ZW51bSBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHsgTm9QcmVmZXJlbmNlLCBQcmVmZXJOdW1iZXIs
IFByZWZlclN0cmluZyB9OwplbnVtIEVDTUFNb2RlIHsgU3RyaWN0TW9kZSwgTm90U3RyaWN0TW9k
ZSB9OwoKZW51bSBjbGFzcyBDYWxsVHlwZSA6IHVuc2lnbmVkOwpzdHJ1Y3QgQ2FsbERhdGE7CmVu
dW0gY2xhc3MgQ29uc3RydWN0VHlwZSA6IHVuc2lnbmVkOwpzdHJ1Y3QgQ29uc3RydWN0RGF0YTsK
CnR5cGVkZWYgaW50NjRfdCBFbmNvZGVkSlNWYWx1ZTsKCnVuaW9uIEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IgewogICAgaW50NjRfdCBhc0ludDY0OwoKICAgIGRvdWJsZSBhc0RvdWJsZTsKIyAxMDAg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCIKICAgIHN0
cnVjdCB7CiAgICAgICAgaW50MzJfdCBwYXlsb2FkOwogICAgICAgIGludDMyX3QgdGFnOwogICAg
fSBhc0JpdHM7Cgp9OwoKI2RlZmluZSBUYWdPZmZzZXQgKE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkKI2RlZmluZSBQYXlsb2FkT2Zmc2V0IChPQkpF
Q1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKQoKCgoK
I2RlZmluZSBDZWxsUGF5bG9hZE9mZnNldCBQYXlsb2FkT2Zmc2V0CgoKZW51bSBXaGljaFZhbHVl
V29yZCB7CiAgICBUYWdXb3JkLAogICAgUGF5bG9hZFdvcmQKfTsKCgogaW50MzJfdCB0b0ludDMy
KGRvdWJsZSk7CgoKaW5saW5lIHVpbnQzMl90IHRvVUludDMyKGRvdWJsZSBudW1iZXIpCnsKCgog
ICAgcmV0dXJuIHRvSW50MzIobnVtYmVyKTsKfQoKaW50NjRfdCB0cnlDb252ZXJ0VG9JbnQ1Mihk
b3VibGUpOwpib29sIGlzSW50NTIoZG91YmxlKTsKCmVudW0gY2xhc3MgU291cmNlQ29kZVJlcHJl
c2VudGF0aW9uIHsKICAgIE90aGVyLAogICAgSW50ZWdlciwKICAgIERvdWJsZQp9OwoKY2xhc3Mg
SlNWYWx1ZSB7CiAgICBmcmllbmQgc3RydWN0IEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0czsKICAg
IGZyaWVuZCBzdHJ1Y3QgRW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb25IYXNoVHJhaXRz
OwogICAgZnJpZW5kIGNsYXNzIEFzc2VtYmx5SGVscGVyczsKICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CiAgICBmcmllbmQgY2xhc3MgSklUU2xvd1BhdGhDYWxsOwogICAgZnJpZW5kIGNsYXNzIEpJVFN0
dWJzOwogICAgZnJpZW5kIGNsYXNzIEpJVFN0dWJDYWxsOwogICAgZnJpZW5kIGNsYXNzIEpTSW50
ZXJmYWNlSklUOwogICAgZnJpZW5kIGNsYXNzIEpTVmFsdWVTb3VyY2U7CiAgICBmcmllbmQgY2xh
c3MgU3BlY2lhbGl6ZWRUaHVua0pJVDsKCiAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxl
cjsKICAgIGZyaWVuZCBjbGFzcyBERkc6Ok9TUkV4aXRDb21waWxlcjsKICAgIGZyaWVuZCBjbGFz
cyBERkc6OlNwZWN1bGF0aXZlSklUOwoKCgoKCnB1YmxpYzoKCiAgICBlbnVtIHsgSW50MzJUYWcg
PSAweGZmZmZmZmZmIH07CiAgICBlbnVtIHsgQm9vbGVhblRhZyA9IDB4ZmZmZmZmZmUgfTsKICAg
IGVudW0geyBOdWxsVGFnID0gMHhmZmZmZmZmZCB9OwogICAgZW51bSB7IFVuZGVmaW5lZFRhZyA9
IDB4ZmZmZmZmZmMgfTsKICAgIGVudW0geyBDZWxsVGFnID0gMHhmZmZmZmZmYiB9OwogICAgZW51
bSB7IEVtcHR5VmFsdWVUYWcgPSAweGZmZmZmZmZhIH07CiAgICBlbnVtIHsgRGVsZXRlZFZhbHVl
VGFnID0gMHhmZmZmZmZmOSB9OwoKICAgIGVudW0geyBMb3dlc3RUYWcgPSBEZWxldGVkVmFsdWVU
YWcgfTsKCgogICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGVuY29kZShKU1ZhbHVlKTsKICAgIHN0
YXRpYyBKU1ZhbHVlIGRlY29kZShFbmNvZGVkSlNWYWx1ZSk7CgogICAgZW51bSBKU051bGxUYWcg
eyBKU051bGwgfTsKICAgIGVudW0gSlNVbmRlZmluZWRUYWcgeyBKU1VuZGVmaW5lZCB9OwogICAg
ZW51bSBKU1RydWVUYWcgeyBKU1RydWUgfTsKICAgIGVudW0gSlNGYWxzZVRhZyB7IEpTRmFsc2Ug
fTsKICAgIGVudW0gRW5jb2RlQXNEb3VibGVUYWcgeyBFbmNvZGVBc0RvdWJsZSB9OwoKICAgIEpT
VmFsdWUoKTsKICAgIEpTVmFsdWUoSlNOdWxsVGFnKTsKICAgIEpTVmFsdWUoSlNVbmRlZmluZWRU
YWcpOwogICAgSlNWYWx1ZShKU1RydWVUYWcpOwogICAgSlNWYWx1ZShKU0ZhbHNlVGFnKTsKICAg
IEpTVmFsdWUoSlNDZWxsKiBwdHIpOwogICAgSlNWYWx1ZShjb25zdCBKU0NlbGwqIHB0cik7CgoK
ICAgIEpTVmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSk7CiAgICBleHBsaWNpdCBKU1Zh
bHVlKGRvdWJsZSk7CiAgICBleHBsaWNpdCBKU1ZhbHVlKGNoYXIpOwogICAgZXhwbGljaXQgSlNW
YWx1ZSh1bnNpZ25lZCBjaGFyKTsKICAgIGV4cGxpY2l0IEpTVmFsdWUoc2hvcnQpOwogICAgZXhw
bGljaXQgSlNWYWx1ZSh1bnNpZ25lZCBzaG9ydCk7CiAgICBleHBsaWNpdCBKU1ZhbHVlKGludCk7
CiAgICBleHBsaWNpdCBKU1ZhbHVlKHVuc2lnbmVkKTsKICAgIGV4cGxpY2l0IEpTVmFsdWUobG9u
Zyk7CiAgICBleHBsaWNpdCBKU1ZhbHVlKHVuc2lnbmVkIGxvbmcpOwogICAgZXhwbGljaXQgSlNW
YWx1ZShsb25nIGxvbmcpOwogICAgZXhwbGljaXQgSlNWYWx1ZSh1bnNpZ25lZCBsb25nIGxvbmcp
OwoKICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdDsKICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3Q7CiAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
SlNWYWx1ZSYgb3RoZXIpIGNvbnN0OwoKICAgIGJvb2wgaXNJbnQzMigpIGNvbnN0OwogICAgYm9v
bCBpc1VJbnQzMigpIGNvbnN0OwogICAgYm9vbCBpc0RvdWJsZSgpIGNvbnN0OwogICAgYm9vbCBp
c1RydWUoKSBjb25zdDsKICAgIGJvb2wgaXNGYWxzZSgpIGNvbnN0OwoKICAgIGludDMyX3QgYXNJ
bnQzMigpIGNvbnN0OwogICAgdWludDMyX3QgYXNVSW50MzIoKSBjb25zdDsKICAgIGludDY0X3Qg
YXNBbnlJbnQoKSBjb25zdDsKICAgIGRvdWJsZSBhc0RvdWJsZSgpIGNvbnN0OwogICAgYm9vbCBh
c0Jvb2xlYW4oKSBjb25zdDsKICAgIGRvdWJsZSBhc051bWJlcigpIGNvbnN0OwoKICAgIGludDMy
X3QgYXNJbnQzMkZvckFyaXRobWV0aWMoKSBjb25zdDsKCgogICAgYm9vbCBpc0VtcHR5KCkgY29u
c3Q7CiAgICBib29sIGlzRnVuY3Rpb24oKSBjb25zdDsKICAgIGJvb2wgaXNGdW5jdGlvbihDYWxs
VHlwZSYsIENhbGxEYXRhJikgY29uc3Q7CiAgICBib29sIGlzQ2FsbGFibGUoQ2FsbFR5cGUmLCBD
YWxsRGF0YSYpIGNvbnN0OwogICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3Q7CiAgICBib29s
IGlzQ29uc3RydWN0b3IoQ29uc3RydWN0VHlwZSYsIENvbnN0cnVjdERhdGEmKSBjb25zdDsKICAg
IGJvb2wgaXNVbmRlZmluZWQoKSBjb25zdDsKICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICBi
b29sIGlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3Q7CiAgICBib29sIGlzQm9vbGVhbigpIGNvbnN0
OwogICAgYm9vbCBpc0FueUludCgpIGNvbnN0OwogICAgYm9vbCBpc051bWJlcigpIGNvbnN0Owog
ICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwogICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0OwogICAg
Ym9vbCBpc1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0
OwogICAgYm9vbCBpc0N1c3RvbUdldHRlclNldHRlcigpIGNvbnN0OwogICAgYm9vbCBpc09iamVj
dCgpIGNvbnN0OwogICAgYm9vbCBpbmhlcml0cyhjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKICAg
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvT3JOdWxsKCkgY29uc3Q7CgoKICAgIGJvb2wgZ2V0
U3RyaW5nKEV4ZWNTdGF0ZSosIFdURjo6U3RyaW5nJikgY29uc3Q7CiAgICBXVEY6OlN0cmluZyBn
ZXRTdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7CiAgICBKU09iamVjdCogZ2V0T2JqZWN0KCkgY29u
c3Q7CgoKICAgIGJvb2wgZ2V0VUludDMyKHVpbnQzMl90JikgY29uc3Q7CgoKICAgIEpTVmFsdWUg
dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSA9IE5vUHJlZmVy
ZW5jZSkgY29uc3Q7CiAgICBib29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqLCBkb3Vi
bGUmIG51bWJlciwgSlNWYWx1ZSYpOwoKICAgIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNv
bnN0OwogICAgVHJpU3RhdGUgcHVyZVRvQm9vbGVhbigpIGNvbnN0OwoKCgogICAgZG91YmxlIHRv
TnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgSlNTdHJpbmcqIHRvU3RyaW5nKEV4ZWNTdGF0
ZSopIGNvbnN0OwogICAgSlNTdHJpbmcqIHRvU3RyaW5nT3JOdWxsKEV4ZWNTdGF0ZSopIGNvbnN0
OwogICAgSWRlbnRpZmllciB0b1Byb3BlcnR5S2V5KEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgV1RG
OjpTdHJpbmcgdG9XVEZTdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7CiAgICBKU09iamVjdCogdG9P
YmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAgICBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKCgogICAgZG91YmxlIHRvSW50ZWdlcihFeGVjU3Rh
dGUqKSBjb25zdDsKICAgIGRvdWJsZSB0b0ludGVnZXJQcmVzZXJ2ZU5hTihFeGVjU3RhdGUqKSBj
b25zdDsKICAgIGludDMyX3QgdG9JbnQzMihFeGVjU3RhdGUqKSBjb25zdDsKICAgIHVpbnQzMl90
IHRvVUludDMyKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgZG91YmxlIHRvTGVuZ3RoKEV4ZWNTdGF0
ZSopIGNvbnN0OwoKCgogICAgZmxvYXQgdG9GbG9hdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih0b051bWJlcihleGVjKSk7IH0KCgogICAgSlNWYWx1
ZSBnZXQoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgIEpTVmFsdWUgZ2V0KEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JikgY29uc3Q7CiAgICBKU1ZhbHVl
IGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgSlNWYWx1
ZSBnZXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKSBj
b25zdDsKICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIHVpbnQ2NF90IHByb3BlcnR5TmFtZSkg
Y29uc3Q7CgogICAgYm9vbCBnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKSBjb25zdDsKCiAgICBib29sIHB1dChFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgYm9vbCBwdXRJbmxpbmUoRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgIGJv
b2wgcHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKICAgIGJvb2wgcHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICBi
b29sIHB1dEJ5SW5kZXgoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93KTsKCiAgICBKU1ZhbHVlIHRvVGhpcyhFeGVjU3RhdGUqLCBFQ01B
TW9kZSkgY29uc3Q7CgogICAgc3RhdGljIGJvb2wgZXF1YWwoRXhlY1N0YXRlKiwgSlNWYWx1ZSB2
MSwgSlNWYWx1ZSB2Mik7CiAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlKEV4ZWNTdGF0ZSos
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogICAgc3RhdGljIGJvb2wgZXF1YWxTbG93Q2FzZUlu
bGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKICAgIHN0YXRpYyBib29s
IHN0cmljdEVxdWFsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogICAgc3Rh
dGljIGJvb2wgc3RyaWN0RXF1YWxTbG93Q2FzZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHYxLCBKU1Zh
bHVlIHYyKTsKICAgIHN0YXRpYyBib29sIHN0cmljdEVxdWFsU2xvd0Nhc2VJbmxpbmUoRXhlY1N0
YXRlKiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAgICBzdGF0aWMgVHJpU3RhdGUgcHVyZVN0
cmljdEVxdWFsKEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwoKICAgIGJvb2wgaXNDZWxsKCkgY29u
c3Q7CiAgICBKU0NlbGwqIGFzQ2VsbCgpIGNvbnN0OwogICAgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7
CgogICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmVPck51bGwoKSBjb25zdDsKICAgIEpTVmFsdWUgc3Ry
dWN0dXJlT3JVbmRlZmluZWQoKSBjb25zdDsKCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBj
b25zdDsKICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0Kikg
Y29uc3Q7CiAgICB2b2lkIGR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZShQcmludFN0cmVh
bSYsIER1bXBDb250ZXh0KiwgU3RydWN0dXJlKikgY29uc3Q7CiAgICB2b2lkIGR1bXBGb3JCYWNr
dHJhY2UoUHJpbnRTdHJlYW0mKSBjb25zdDsKCiAgICBKU09iamVjdCogc3ludGhlc2l6ZVByb3Rv
dHlwZShFeGVjU3RhdGUqKSBjb25zdDsKICAgIGJvb2wgcmVxdWlyZU9iamVjdENvZXJjaWJsZShF
eGVjU3RhdGUqKSBjb25zdDsKCgoKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZklu
dDUyQml0cyA9IDUyOwogICAgc3RhdGljIGNvbnN0IGludDY0X3Qgbm90SW50NTIgPSBzdGF0aWNf
Y2FzdDxpbnQ2NF90PigxKSA8PCBudW1iZXJPZkludDUyQml0czsKICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBpbnQ1MlNoaWZ0QW1vdW50ID0gMTI7CgogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZlBheWxvYWQoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVp
bnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oMHg0MDAwKS0+dS5hc0JpdHMucGF5bG9hZCkpIC0gMHg0
MDAwKTsgfQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhZygpIHsgcmV0dXJuIChyZWlu
dGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEpTVmFsdWUqPigweDQw
MDApLT51LmFzQml0cy50YWcpKSAtIDB4NDAwMCk7IH0KIyAzNTAgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCIKICAgIHVpbnQzMl90IHRhZygpIGNvbnN0
OwogICAgaW50MzJfdCBwYXlsb2FkKCkgY29uc3Q7CiMgNDQzICIuLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgiCnByaXZhdGU6CiAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVD4gSlNWYWx1ZShXcml0ZUJhcnJpZXJCYXNlPFQ+KTsKCiAgICBlbnVtIEhhc2hUYWJsZURl
bGV0ZWRWYWx1ZVRhZyB7IEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSB9OwogICAgSlNWYWx1ZShIYXNo
VGFibGVEZWxldGVkVmFsdWVUYWcpOwoKICAgIGlubGluZSBjb25zdCBKU1ZhbHVlIGFzVmFsdWUo
KSBjb25zdCB7IHJldHVybiAqdGhpczsgfQogICAgZG91YmxlIHRvTnVtYmVyU2xvd0Nhc2UoRXhl
Y1N0YXRlKikgY29uc3Q7CiAgICBKU1N0cmluZyogdG9TdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUq
LCBib29sIHJldHVybkVtcHR5U3RyaW5nT25FcnJvcikgY29uc3Q7CiAgICBXVEY6OlN0cmluZyB0
b1dURlN0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgSlNPYmplY3QqIHRvT2Jq
ZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgIEpTVmFs
dWUgdG9UaGlzU2xvd0Nhc2UoRXhlY1N0YXRlKiwgRUNNQU1vZGUpIGNvbnN0OwoKICAgIEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IgdTsKfTsKCnR5cGVkZWYgSW50SGFzaDxFbmNvZGVkSlNWYWx1ZT4g
RW5jb2RlZEpTVmFsdWVIYXNoOwoKCnN0cnVjdCBFbmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHMgOiBI
YXNoVHJhaXRzPEVuY29kZWRKU1ZhbHVlPiB7CiAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZh
bHVlSXNaZXJvID0gZmFsc2U7CiAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZW1wdHlWYWx1ZSgp
IHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOyB9CiAgICBzdGF0aWMgdm9pZCBj
b25zdHJ1Y3REZWxldGVkVmFsdWUoRW5jb2RlZEpTVmFsdWUmIHNsb3QpIHsgc2xvdCA9IEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkpOyB9CiAg
ICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPT0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKSk7IH0KfTsKCgoKCgoKCnR5cGVkZWYgc3RkOjpwYWlyPEVuY29kZWRKU1ZhbHVl
LCBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+IEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJlc2VudGF0
aW9uOwoKc3RydWN0IEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJlc2VudGF0aW9uSGFzaFRyYWl0cyA6
IEhhc2hUcmFpdHM8RW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb24+IHsKICAgIHN0YXRp
YyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKICAgIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbiBlbXB0eVZhbHVlKCkgeyByZXR1cm4gc3RkOjptYWtl
X3BhaXIoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSksIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlv
bjo6T3RoZXIpOyB9CiAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoRW5jb2Rl
ZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb24mIHNsb3QpIHsgc2xvdCA9IHN0ZDo6bWFrZV9wYWly
KEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkp
LCBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246Ok90aGVyKTsgfQogICAgc3RhdGljIGJvb2wgaXNE
ZWxldGVkVmFsdWUoRW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb24gdmFsdWUpIHsgcmV0
dXJuIHZhbHVlID09IHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFs
dWU6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkpLCBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246Ok90
aGVyKTsgfQp9OwoKc3RydWN0IEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJlc2VudGF0aW9uSGFzaCB7
CiAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNl
bnRhdGlvbiYgdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuIFdURjo6cGFpckludEhhc2goRW5j
b2RlZEpTVmFsdWVIYXNoOjpoYXNoKHZhbHVlLmZpcnN0KSwgSW50SGFzaDxTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb24+OjpoYXNoKHZhbHVlLnNlY29uZCkpOwogICAgfQogICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgRW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb24mIGEsIGNvbnN0IEVu
Y29kZWRKU1ZhbHVlV2l0aFJlcHJlc2VudGF0aW9uJiBiKQogICAgewogICAgICAgIHJldHVybiBh
ID09IGI7CiAgICB9CiAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9y
RGVsZXRlZCA9IHRydWU7Cn07CgoKaW5saW5lIEpTVmFsdWUganNOdWxsKCkKewogICAgcmV0dXJu
IEpTVmFsdWUoSlNWYWx1ZTo6SlNOdWxsKTsKfQoKaW5saW5lIEpTVmFsdWUganNVbmRlZmluZWQo
KQp7CiAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU1VuZGVmaW5lZCk7Cn0KCmlubGluZSBK
U1ZhbHVlIGpzVERaVmFsdWUoKQp7CiAgICByZXR1cm4gSlNWYWx1ZSgpOwp9CgppbmxpbmUgSlNW
YWx1ZSBqc0Jvb2xlYW4oYm9vbCBiKQp7CiAgICByZXR1cm4gYiA/IEpTVmFsdWUoSlNWYWx1ZTo6
SlNUcnVlKSA6IEpTVmFsdWUoSlNWYWx1ZTo6SlNGYWxzZSk7Cn0KCmlubGluZSBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIEpTVmFsdWUganNEb3VibGVOdW1iZXIoZG91YmxlIGQp
CnsKICAgICgodm9pZCkwKTsKICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91
YmxlLCBkKTsKfQoKaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgSlNW
YWx1ZSBqc051bWJlcihkb3VibGUgZCkKewogICAgKCh2b2lkKTApOwogICAgcmV0dXJuIEpTVmFs
dWUoZCk7Cn0KCmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIEpTVmFs
dWUganNOdW1iZXIoTWVkaWFUaW1lIHQpCnsKICAgIHJldHVybiBqc051bWJlcih0LnRvRG91Ymxl
KCkpOwp9CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBKU1ZhbHVl
IGpzTnVtYmVyKGNoYXIgaSkKewogICAgcmV0dXJuIEpTVmFsdWUoaSk7Cn0KCmlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIEpTVmFsdWUganNOdW1iZXIodW5zaWduZWQg
Y2hhciBpKQp7CiAgICByZXR1cm4gSlNWYWx1ZShpKTsKfQoKaW5saW5lIF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fKSkgSlNWYWx1ZSBqc051bWJlcihzaG9ydCBpKQp7CiAgICByZXR1
cm4gSlNWYWx1ZShpKTsKfQoKaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
KSkgSlNWYWx1ZSBqc051bWJlcih1bnNpZ25lZCBzaG9ydCBpKQp7CiAgICByZXR1cm4gSlNWYWx1
ZShpKTsKfQoKaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgSlNWYWx1
ZSBqc051bWJlcihpbnQgaSkKewogICAgcmV0dXJuIEpTVmFsdWUoaSk7Cn0KCmlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIEpTVmFsdWUganNOdW1iZXIodW5zaWduZWQg
aSkKewogICAgcmV0dXJuIEpTVmFsdWUoaSk7Cn0KCmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXykpIEpTVmFsdWUganNOdW1iZXIobG9uZyBpKQp7CiAgICByZXR1cm4gSlNW
YWx1ZShpKTsKfQoKaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgSlNW
YWx1ZSBqc051bWJlcih1bnNpZ25lZCBsb25nIGkpCnsKICAgIHJldHVybiBKU1ZhbHVlKGkpOwp9
CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBKU1ZhbHVlIGpzTnVt
YmVyKGxvbmcgbG9uZyBpKQp7CiAgICByZXR1cm4gSlNWYWx1ZShpKTsKfQoKaW5saW5lIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgSlNWYWx1ZSBqc051bWJlcih1bnNpZ25lZCBs
b25nIGxvbmcgaSkKewogICAgcmV0dXJuIEpTVmFsdWUoaSk7Cn0KCmlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgSlNWYWx1ZSBhLCBjb25zdCBKU0NlbGwqIGIpIHsgcmV0dXJuIGEgPT0gSlNW
YWx1ZShiKTsgfQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEpTQ2VsbCogYSwgY29uc3Qg
SlNWYWx1ZSBiKSB7IHJldHVybiBKU1ZhbHVlKGEpID09IGI7IH0KCmlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgSlNWYWx1ZSBhLCBjb25zdCBKU0NlbGwqIGIpIHsgcmV0dXJuIGEgIT0gSlNW
YWx1ZShiKTsgfQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEpTQ2VsbCogYSwgY29uc3Qg
SlNWYWx1ZSBiKSB7IHJldHVybiBKU1ZhbHVlKGEpICE9IGI7IH0KCgpib29sIGlzVGhpc1ZhbHVl
QWx0ZXJlZChjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBKU09iamVjdCogYmFzZU9iamVjdCk7Cgp9
CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCIgMgoj
IDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCIgMQojIDMx
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgiCiNkZWZpbmUg
T3Bjb2RlX2ggCgojIDEgIkRlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0J5dGVjb2Rlcy5o
IiAxCiMgMzAgIkRlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0J5dGVjb2Rlcy5oIgojZGVm
aW5lIEJ5dGVjb2Rlc19oIAoKI2RlZmluZSBGT1JfRUFDSF9CWVRFQ09ERV9JRChtYWNybykgbWFj
cm8ob3BfZW50ZXIsIDEpIG1hY3JvKG9wX2dldF9zY29wZSwgMikgbWFjcm8ob3BfY3JlYXRlX2Rp
cmVjdF9hcmd1bWVudHMsIDIpIG1hY3JvKG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzLCAzKSBt
YWNybyhvcF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50cywgMikgbWFjcm8ob3BfY3JlYXRlX3RoaXMs
IDUpIG1hY3JvKG9wX3RvX3RoaXMsIDQpIG1hY3JvKG9wX2NoZWNrX3RkeiwgMikgbWFjcm8ob3Bf
bmV3X29iamVjdCwgNCkgbWFjcm8ob3BfbmV3X2FycmF5LCA1KSBtYWNybyhvcF9uZXdfYXJyYXlf
d2l0aF9zaXplLCA0KSBtYWNybyhvcF9uZXdfYXJyYXlfYnVmZmVyLCA1KSBtYWNybyhvcF9uZXdf
cmVnZXhwLCAzKSBtYWNybyhvcF9tb3YsIDMpIG1hY3JvKG9wX25vdCwgMykgbWFjcm8ob3BfZXEs
IDQpIG1hY3JvKG9wX2VxX251bGwsIDMpIG1hY3JvKG9wX25lcSwgNCkgbWFjcm8ob3BfbmVxX251
bGwsIDMpIG1hY3JvKG9wX3N0cmljdGVxLCA0KSBtYWNybyhvcF9uc3RyaWN0ZXEsIDQpIG1hY3Jv
KG9wX2xlc3MsIDQpIG1hY3JvKG9wX2xlc3NlcSwgNCkgbWFjcm8ob3BfZ3JlYXRlciwgNCkgbWFj
cm8ob3BfZ3JlYXRlcmVxLCA0KSBtYWNybyhvcF9pbmMsIDIpIG1hY3JvKG9wX2RlYywgMikgbWFj
cm8ob3BfdG9fbnVtYmVyLCAzKSBtYWNybyhvcF90b19zdHJpbmcsIDMpIG1hY3JvKG9wX25lZ2F0
ZSwgMykgbWFjcm8ob3BfYWRkLCA1KSBtYWNybyhvcF9tdWwsIDUpIG1hY3JvKG9wX2RpdiwgNSkg
bWFjcm8ob3BfbW9kLCA0KSBtYWNybyhvcF9zdWIsIDUpIG1hY3JvKG9wX2xzaGlmdCwgNCkgbWFj
cm8ob3BfcnNoaWZ0LCA0KSBtYWNybyhvcF91cnNoaWZ0LCA0KSBtYWNybyhvcF91bnNpZ25lZCwg
MykgbWFjcm8ob3BfYml0YW5kLCA1KSBtYWNybyhvcF9iaXR4b3IsIDUpIG1hY3JvKG9wX2JpdG9y
LCA1KSBtYWNybyhvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlLCA0KSBtYWNybyhvcF9pbnN0YW5j
ZW9mLCA0KSBtYWNybyhvcF9pbnN0YW5jZW9mX2N1c3RvbSwgNSkgbWFjcm8ob3BfdHlwZW9mLCAz
KSBtYWNybyhvcF9pc19lbXB0eSwgMykgbWFjcm8ob3BfaXNfdW5kZWZpbmVkLCAzKSBtYWNybyhv
cF9pc19ib29sZWFuLCAzKSBtYWNybyhvcF9pc19udW1iZXIsIDMpIG1hY3JvKG9wX2lzX3N0cmlu
ZywgMykgbWFjcm8ob3BfaXNfb2JqZWN0LCAzKSBtYWNybyhvcF9pc19vYmplY3Rfb3JfbnVsbCwg
MykgbWFjcm8ob3BfaXNfZnVuY3Rpb24sIDMpIG1hY3JvKG9wX2luLCA0KSBtYWNybyhvcF90cnlf
Z2V0X2J5X2lkLCA0KSBtYWNybyhvcF9nZXRfYnlfaWQsIDkpIG1hY3JvKG9wX2dldF9hcnJheV9s
ZW5ndGgsIDkpIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBt
YWNybyhvcF9nZXRfYnlfdmFsLCA2KSBtYWNybyhvcF9wdXRfYnlfdmFsLCA1KSBtYWNybyhvcF9w
dXRfYnlfdmFsX2RpcmVjdCwgNSkgbWFjcm8ob3BfZGVsX2J5X3ZhbCwgNCkgbWFjcm8ob3BfcHV0
X2J5X2luZGV4LCA0KSBtYWNybyhvcF9wdXRfZ2V0dGVyX2J5X2lkLCA1KSBtYWNybyhvcF9wdXRf
c2V0dGVyX2J5X2lkLCA1KSBtYWNybyhvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZCwgNikgbWFj
cm8ob3BfcHV0X2dldHRlcl9ieV92YWwsIDUpIG1hY3JvKG9wX3B1dF9zZXR0ZXJfYnlfdmFsLCA1
KSBtYWNybyhvcF9qbXAsIDIpIG1hY3JvKG9wX2p0cnVlLCAzKSBtYWNybyhvcF9qZmFsc2UsIDMp
IG1hY3JvKG9wX2plcV9udWxsLCAzKSBtYWNybyhvcF9qbmVxX251bGwsIDMpIG1hY3JvKG9wX2pu
ZXFfcHRyLCA0KSBtYWNybyhvcF9qbGVzcywgNCkgbWFjcm8ob3Bfamxlc3NlcSwgNCkgbWFjcm8o
b3BfamdyZWF0ZXIsIDQpIG1hY3JvKG9wX2pncmVhdGVyZXEsIDQpIG1hY3JvKG9wX2pubGVzcywg
NCkgbWFjcm8ob3Bfam5sZXNzZXEsIDQpIG1hY3JvKG9wX2puZ3JlYXRlciwgNCkgbWFjcm8ob3Bf
am5ncmVhdGVyZXEsIDQpIG1hY3JvKG9wX2xvb3BfaGludCwgMSkgbWFjcm8ob3Bfc3dpdGNoX2lt
bSwgNCkgbWFjcm8ob3Bfc3dpdGNoX2NoYXIsIDQpIG1hY3JvKG9wX3N3aXRjaF9zdHJpbmcsIDQp
IG1hY3JvKG9wX25ld19mdW5jLCA0KSBtYWNybyhvcF9uZXdfZnVuY19leHAsIDQpIG1hY3JvKG9w
X25ld19nZW5lcmF0b3JfZnVuYywgNCkgbWFjcm8ob3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCwg
NCkgbWFjcm8ob3BfbmV3X2Fycm93X2Z1bmNfZXhwLCA0KSBtYWNybyhvcF9zZXRfZnVuY3Rpb25f
bmFtZSwgMykgbWFjcm8ob3BfY2FsbCwgOSkgbWFjcm8ob3BfdGFpbF9jYWxsLCA5KSBtYWNybyhv
cF9jYWxsX2V2YWwsIDkpIG1hY3JvKG9wX2NhbGxfdmFyYXJncywgOSkgbWFjcm8ob3BfdGFpbF9j
YWxsX3ZhcmFyZ3MsIDkpIG1hY3JvKG9wX3JldCwgMikgbWFjcm8ob3BfY29uc3RydWN0LCA5KSBt
YWNybyhvcF9jb25zdHJ1Y3RfdmFyYXJncywgOSkgbWFjcm8ob3Bfc3RyY2F0LCA0KSBtYWNybyhv
cF90b19wcmltaXRpdmUsIDMpIG1hY3JvKG9wX3Jlc29sdmVfc2NvcGUsIDcpIG1hY3JvKG9wX2dl
dF9mcm9tX3Njb3BlLCA4KSBtYWNybyhvcF9wdXRfdG9fc2NvcGUsIDcpIG1hY3JvKG9wX2dldF9m
cm9tX2FyZ3VtZW50cywgNSkgbWFjcm8ob3BfcHV0X3RvX2FyZ3VtZW50cywgNCkgbWFjcm8ob3Bf
cHVzaF93aXRoX3Njb3BlLCA0KSBtYWNybyhvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCwg
NSkgbWFjcm8ob3BfZ2V0X3BhcmVudF9zY29wZSwgMykgbWFjcm8ob3BfY2F0Y2gsIDMpIG1hY3Jv
KG9wX3Rocm93LCAyKSBtYWNybyhvcF90aHJvd19zdGF0aWNfZXJyb3IsIDMpIG1hY3JvKG9wX2Rl
YnVnLCAzKSBtYWNybyhvcF9wcm9maWxlX3dpbGxfY2FsbCwgMikgbWFjcm8ob3BfcHJvZmlsZV9k
aWRfY2FsbCwgMikgbWFjcm8ob3BfZW5kLCAyKSBtYWNybyhvcF9wcm9maWxlX3R5cGUsIDYpIG1h
Y3JvKG9wX3Byb2ZpbGVfY29udHJvbF9mbG93LCAyKSBtYWNybyhvcF9nZXRfZW51bWVyYWJsZV9s
ZW5ndGgsIDMpIG1hY3JvKG9wX2hhc19pbmRleGVkX3Byb3BlcnR5LCA1KSBtYWNybyhvcF9oYXNf
c3RydWN0dXJlX3Byb3BlcnR5LCA1KSBtYWNybyhvcF9oYXNfZ2VuZXJpY19wcm9wZXJ0eSwgNCkg
bWFjcm8ob3BfZ2V0X2RpcmVjdF9wbmFtZSwgNykgbWFjcm8ob3BfZ2V0X3Byb3BlcnR5X2VudW1l
cmF0b3IsIDMpIG1hY3JvKG9wX2VudW1lcmF0b3Jfc3RydWN0dXJlX3BuYW1lLCA0KSBtYWNybyhv
cF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWUsIDQpIG1hY3JvKG9wX3RvX2luZGV4X3N0cmluZywg
MykgbWFjcm8ob3BfYXNzZXJ0LCAzKSBtYWNybyhvcF9jb3B5X3Jlc3QsIDQpIG1hY3JvKG9wX2dl
dF9yZXN0X2xlbmd0aCwgMykgbWFjcm8ob3Bfc2F2ZSwgNCkgbWFjcm8ob3BfcmVzdW1lLCAzKSBt
YWNybyhvcF93YXRjaGRvZywgMSkgbWFjcm8ob3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3Vl
LCAxKSBtYWNybyhvcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbCwgMSkKIyAxNzIgIkRlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL0J5dGVjb2Rlcy5oIgojZGVmaW5lIE5VTUJFUl9PRl9CWVRF
Q09ERV9JRFMgMTM4CgojZGVmaW5lIEZPUl9FQUNIX0NMT09QX0JZVEVDT0RFX0hFTFBFUl9JRCht
YWNybykgbWFjcm8obGxpbnRfZW50cnksIDEpIG1hY3JvKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUs
IDEpIG1hY3JvKGxsaW50X3JldHVybl90b19ob3N0LCAxKSBtYWNybyhsbGludF92bV9lbnRyeV90
b19qYXZhc2NyaXB0LCAxKSBtYWNybyhsbGludF92bV9lbnRyeV90b19uYXRpdmUsIDEpIG1hY3Jv
KGxsaW50X2Nsb29wX2RpZF9yZXR1cm5fZnJvbV9qc18xLCAxKSBtYWNybyhsbGludF9jbG9vcF9k
aWRfcmV0dXJuX2Zyb21fanNfMiwgMSkgbWFjcm8obGxpbnRfY2xvb3BfZGlkX3JldHVybl9mcm9t
X2pzXzMsIDEpIG1hY3JvKGxsaW50X2Nsb29wX2RpZF9yZXR1cm5fZnJvbV9qc180LCAxKSBtYWNy
byhsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfNSwgMSkgbWFjcm8obGxpbnRfY2xvb3Bf
ZGlkX3JldHVybl9mcm9tX2pzXzYsIDEpIG1hY3JvKGxsaW50X2Nsb29wX2RpZF9yZXR1cm5fZnJv
bV9qc183LCAxKSBtYWNybyhsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfOCwgMSkgbWFj
cm8obGxpbnRfY2xvb3BfZGlkX3JldHVybl9mcm9tX2pzXzksIDEpIG1hY3JvKGxsaW50X2Nsb29w
X2RpZF9yZXR1cm5fZnJvbV9qc18xMCwgMSkgbWFjcm8obGxpbnRfY2xvb3BfZGlkX3JldHVybl9m
cm9tX2pzXzExLCAxKQojIDE5MiAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvQnl0ZWNv
ZGVzLmgiCiNkZWZpbmUgTlVNQkVSX09GX0NMT09QX0JZVEVDT0RFX0hFTFBFUl9JRFMgMTYKCiNk
ZWZpbmUgRk9SX0VBQ0hfQllURUNPREVfSEVMUEVSX0lEKG1hY3JvKSBtYWNybyhsbGludF9wcm9n
cmFtX3Byb2xvZ3VlLCAxKSBtYWNybyhsbGludF9ldmFsX3Byb2xvZ3VlLCAxKSBtYWNybyhsbGlu
dF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSwgMSkgbWFjcm8obGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfcHJvbG9ndWUsIDEpIG1hY3JvKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9n
dWUsIDEpIG1hY3JvKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCAxKSBtYWNy
byhsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCAxKSBtYWNybyhsbGlu
dF9nZW5lcmljX3JldHVybl9wb2ludCwgMSkgbWFjcm8obGxpbnRfdGhyb3dfZnJvbV9zbG93X3Bh
dGhfdHJhbXBvbGluZSwgMSkgbWFjcm8obGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGlu
ZSwgMSkgbWFjcm8obGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSwgMSkgbWFjcm8obGxpbnRf
bmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lLCAxKSBtYWNybyhoYW5kbGVVbmNhdWdodEV4Y2Vw
dGlvbiwgMSkKIyAyMDkgIkRlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0J5dGVjb2Rlcy5o
IgojZGVmaW5lIE5VTUJFUl9PRl9CWVRFQ09ERV9IRUxQRVJfSURTIDEzCiMgMzQgIi4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCIgMgojIDEgIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9wY29kZS5oIiAxCiMgMjcgIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9wY29kZS5oIgojZGVmaW5lIExMSW50T3Bjb2Rl
X2ggCiMgMzYgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9wY29kZS5o
IgojZGVmaW5lIEZPUl9FQUNIX0xMSU5UX05PSklUX05BVElWRV9IRUxQRVIobWFjcm8pIAoKCgoK
CiNkZWZpbmUgRk9SX0VBQ0hfTExJTlRfTkFUSVZFX0hFTFBFUihtYWNybykgRk9SX0VBQ0hfTExJ
TlRfTk9KSVRfTkFUSVZFX0hFTFBFUihtYWNybykgRk9SX0VBQ0hfQllURUNPREVfSEVMUEVSX0lE
KG1hY3JvKQoKCgoKCgojZGVmaW5lIEZPUl9FQUNIX0xMSU5UX09QQ09ERV9FWFRFTlNJT04obWFj
cm8pIEZPUl9FQUNIX0xMSU5UX05BVElWRV9IRUxQRVIobWFjcm8pCiMgMzUgIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCIgMgoKCgoKCgpuYW1lc3BhY2UgSlND
IHsKCiNkZWZpbmUgRk9SX0VBQ0hfQ09SRV9PUENPREVfSURfV0lUSF9FWFRFTlNJT04obWFjcm8s
ZXh0ZW5zaW9uX18pIEZPUl9FQUNIX0JZVEVDT0RFX0lEKG1hY3JvKSBleHRlbnNpb25fXwoKCgoj
ZGVmaW5lIEZPUl9FQUNIX0NPUkVfT1BDT0RFX0lEKG1hY3JvKSBGT1JfRUFDSF9DT1JFX09QQ09E
RV9JRF9XSVRIX0VYVEVOU0lPTihtYWNybywgKQoKCiNkZWZpbmUgRk9SX0VBQ0hfT1BDT0RFX0lE
KG1hY3JvKSBGT1JfRUFDSF9DT1JFX09QQ09ERV9JRF9XSVRIX0VYVEVOU0lPTiggbWFjcm8sIEZP
Ul9FQUNIX0xMSU5UX09QQ09ERV9FWFRFTlNJT04obWFjcm8pICkKCgoKCgoKI2RlZmluZSBPUENP
REVfSURfRU5VTShvcGNvZGUsbGVuZ3RoKSBvcGNvZGUsCiAgICB0eXBlZGVmIGVudW0geyBvcF9l
bnRlciwgb3BfZ2V0X3Njb3BlLCBvcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50cywgb3BfY3JlYXRl
X3Njb3BlZF9hcmd1bWVudHMsIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzLCBvcF9jcmVhdGVf
dGhpcywgb3BfdG9fdGhpcywgb3BfY2hlY2tfdGR6LCBvcF9uZXdfb2JqZWN0LCBvcF9uZXdfYXJy
YXksIG9wX25ld19hcnJheV93aXRoX3NpemUsIG9wX25ld19hcnJheV9idWZmZXIsIG9wX25ld19y
ZWdleHAsIG9wX21vdiwgb3Bfbm90LCBvcF9lcSwgb3BfZXFfbnVsbCwgb3BfbmVxLCBvcF9uZXFf
bnVsbCwgb3Bfc3RyaWN0ZXEsIG9wX25zdHJpY3RlcSwgb3BfbGVzcywgb3BfbGVzc2VxLCBvcF9n
cmVhdGVyLCBvcF9ncmVhdGVyZXEsIG9wX2luYywgb3BfZGVjLCBvcF90b19udW1iZXIsIG9wX3Rv
X3N0cmluZywgb3BfbmVnYXRlLCBvcF9hZGQsIG9wX211bCwgb3BfZGl2LCBvcF9tb2QsIG9wX3N1
Yiwgb3BfbHNoaWZ0LCBvcF9yc2hpZnQsIG9wX3Vyc2hpZnQsIG9wX3Vuc2lnbmVkLCBvcF9iaXRh
bmQsIG9wX2JpdHhvciwgb3BfYml0b3IsIG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UsIG9wX2lu
c3RhbmNlb2YsIG9wX2luc3RhbmNlb2ZfY3VzdG9tLCBvcF90eXBlb2YsIG9wX2lzX2VtcHR5LCBv
cF9pc191bmRlZmluZWQsIG9wX2lzX2Jvb2xlYW4sIG9wX2lzX251bWJlciwgb3BfaXNfc3RyaW5n
LCBvcF9pc19vYmplY3QsIG9wX2lzX29iamVjdF9vcl9udWxsLCBvcF9pc19mdW5jdGlvbiwgb3Bf
aW4sIG9wX3RyeV9nZXRfYnlfaWQsIG9wX2dldF9ieV9pZCwgb3BfZ2V0X2FycmF5X2xlbmd0aCwg
b3BfcHV0X2J5X2lkLCBvcF9kZWxfYnlfaWQsIG9wX2dldF9ieV92YWwsIG9wX3B1dF9ieV92YWws
IG9wX3B1dF9ieV92YWxfZGlyZWN0LCBvcF9kZWxfYnlfdmFsLCBvcF9wdXRfYnlfaW5kZXgsIG9w
X3B1dF9nZXR0ZXJfYnlfaWQsIG9wX3B1dF9zZXR0ZXJfYnlfaWQsIG9wX3B1dF9nZXR0ZXJfc2V0
dGVyX2J5X2lkLCBvcF9wdXRfZ2V0dGVyX2J5X3ZhbCwgb3BfcHV0X3NldHRlcl9ieV92YWwsIG9w
X2ptcCwgb3BfanRydWUsIG9wX2pmYWxzZSwgb3BfamVxX251bGwsIG9wX2puZXFfbnVsbCwgb3Bf
am5lcV9wdHIsIG9wX2psZXNzLCBvcF9qbGVzc2VxLCBvcF9qZ3JlYXRlciwgb3BfamdyZWF0ZXJl
cSwgb3Bfam5sZXNzLCBvcF9qbmxlc3NlcSwgb3Bfam5ncmVhdGVyLCBvcF9qbmdyZWF0ZXJlcSwg
b3BfbG9vcF9oaW50LCBvcF9zd2l0Y2hfaW1tLCBvcF9zd2l0Y2hfY2hhciwgb3Bfc3dpdGNoX3N0
cmluZywgb3BfbmV3X2Z1bmMsIG9wX25ld19mdW5jX2V4cCwgb3BfbmV3X2dlbmVyYXRvcl9mdW5j
LCBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwLCBvcF9uZXdfYXJyb3dfZnVuY19leHAsIG9wX3Nl
dF9mdW5jdGlvbl9uYW1lLCBvcF9jYWxsLCBvcF90YWlsX2NhbGwsIG9wX2NhbGxfZXZhbCwgb3Bf
Y2FsbF92YXJhcmdzLCBvcF90YWlsX2NhbGxfdmFyYXJncywgb3BfcmV0LCBvcF9jb25zdHJ1Y3Qs
IG9wX2NvbnN0cnVjdF92YXJhcmdzLCBvcF9zdHJjYXQsIG9wX3RvX3ByaW1pdGl2ZSwgb3BfcmVz
b2x2ZV9zY29wZSwgb3BfZ2V0X2Zyb21fc2NvcGUsIG9wX3B1dF90b19zY29wZSwgb3BfZ2V0X2Zy
b21fYXJndW1lbnRzLCBvcF9wdXRfdG9fYXJndW1lbnRzLCBvcF9wdXNoX3dpdGhfc2NvcGUsIG9w
X2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50LCBvcF9nZXRfcGFyZW50X3Njb3BlLCBvcF9jYXRj
aCwgb3BfdGhyb3csIG9wX3Rocm93X3N0YXRpY19lcnJvciwgb3BfZGVidWcsIG9wX3Byb2ZpbGVf
d2lsbF9jYWxsLCBvcF9wcm9maWxlX2RpZF9jYWxsLCBvcF9lbmQsIG9wX3Byb2ZpbGVfdHlwZSwg
b3BfcHJvZmlsZV9jb250cm9sX2Zsb3csIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aCwgb3BfaGFz
X2luZGV4ZWRfcHJvcGVydHksIG9wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHksIG9wX2hhc19nZW5l
cmljX3Byb3BlcnR5LCBvcF9nZXRfZGlyZWN0X3BuYW1lLCBvcF9nZXRfcHJvcGVydHlfZW51bWVy
YXRvciwgb3BfZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWUsIG9wX2VudW1lcmF0b3JfZ2VuZXJp
Y19wbmFtZSwgb3BfdG9faW5kZXhfc3RyaW5nLCBvcF9hc3NlcnQsIG9wX2NvcHlfcmVzdCwgb3Bf
Z2V0X3Jlc3RfbGVuZ3RoLCBvcF9zYXZlLCBvcF9yZXN1bWUsIG9wX3dhdGNoZG9nLCBvcF9sb2df
c2hhZG93X2NoaWNrZW5fcHJvbG9ndWUsIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsLCBsbGlu
dF9wcm9ncmFtX3Byb2xvZ3VlLCBsbGludF9ldmFsX3Byb2xvZ3VlLCBsbGludF9tb2R1bGVfcHJv
Z3JhbV9wcm9sb2d1ZSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUsIGxsaW50X2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5X2NoZWNrLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCBsbGlu
dF9nZW5lcmljX3JldHVybl9wb2ludCwgbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBv
bGluZSwgbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSwgbGxpbnRfbmF0aXZlX2Nh
bGxfdHJhbXBvbGluZSwgbGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lLCBoYW5kbGVV
bmNhdWdodEV4Y2VwdGlvbiwgfSBPcGNvZGVJRDsKI3VuZGVmIE9QQ09ERV9JRF9FTlVNCgpjb25z
dCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKCgoKY29uc3QgaW50IG51bU9wY29kZUlEcyA9IDEz
OCArIDEzOwoKCiNkZWZpbmUgT1BDT0RFX0lEX0xFTkdUSFMoaWQsbGVuZ3RoKSBjb25zdCBpbnQg
aWQgIyNfbGVuZ3RoID0gbGVuZ3RoOwogICAgY29uc3QgaW50IG9wX2VudGVyX2xlbmd0aCA9IDE7
IGNvbnN0IGludCBvcF9nZXRfc2NvcGVfbGVuZ3RoID0gMjsgY29uc3QgaW50IG9wX2NyZWF0ZV9k
aXJlY3RfYXJndW1lbnRzX2xlbmd0aCA9IDI7IGNvbnN0IGludCBvcF9jcmVhdGVfc2NvcGVkX2Fy
Z3VtZW50c19sZW5ndGggPSAzOyBjb25zdCBpbnQgb3BfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHNf
bGVuZ3RoID0gMjsgY29uc3QgaW50IG9wX2NyZWF0ZV90aGlzX2xlbmd0aCA9IDU7IGNvbnN0IGlu
dCBvcF90b190aGlzX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9jaGVja190ZHpfbGVuZ3RoID0g
MjsgY29uc3QgaW50IG9wX25ld19vYmplY3RfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX25ld19h
cnJheV9sZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfbmV3X2FycmF5X3dpdGhfc2l6ZV9sZW5ndGgg
PSA0OyBjb25zdCBpbnQgb3BfbmV3X2FycmF5X2J1ZmZlcl9sZW5ndGggPSA1OyBjb25zdCBpbnQg
b3BfbmV3X3JlZ2V4cF9sZW5ndGggPSAzOyBjb25zdCBpbnQgb3BfbW92X2xlbmd0aCA9IDM7IGNv
bnN0IGludCBvcF9ub3RfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX2VxX2xlbmd0aCA9IDQ7IGNv
bnN0IGludCBvcF9lcV9udWxsX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9uZXFfbGVuZ3RoID0g
NDsgY29uc3QgaW50IG9wX25lcV9udWxsX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9zdHJpY3Rl
cV9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfbnN0cmljdGVxX2xlbmd0aCA9IDQ7IGNvbnN0IGlu
dCBvcF9sZXNzX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9sZXNzZXFfbGVuZ3RoID0gNDsgY29u
c3QgaW50IG9wX2dyZWF0ZXJfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX2dyZWF0ZXJlcV9sZW5n
dGggPSA0OyBjb25zdCBpbnQgb3BfaW5jX2xlbmd0aCA9IDI7IGNvbnN0IGludCBvcF9kZWNfbGVu
Z3RoID0gMjsgY29uc3QgaW50IG9wX3RvX251bWJlcl9sZW5ndGggPSAzOyBjb25zdCBpbnQgb3Bf
dG9fc3RyaW5nX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9uZWdhdGVfbGVuZ3RoID0gMzsgY29u
c3QgaW50IG9wX2FkZF9sZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfbXVsX2xlbmd0aCA9IDU7IGNv
bnN0IGludCBvcF9kaXZfbGVuZ3RoID0gNTsgY29uc3QgaW50IG9wX21vZF9sZW5ndGggPSA0OyBj
b25zdCBpbnQgb3Bfc3ViX2xlbmd0aCA9IDU7IGNvbnN0IGludCBvcF9sc2hpZnRfbGVuZ3RoID0g
NDsgY29uc3QgaW50IG9wX3JzaGlmdF9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfdXJzaGlmdF9s
ZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfdW5zaWduZWRfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9w
X2JpdGFuZF9sZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfYml0eG9yX2xlbmd0aCA9IDU7IGNvbnN0
IGludCBvcF9iaXRvcl9sZW5ndGggPSA1OyBjb25zdCBpbnQgb3Bfb3ZlcnJpZGVzX2hhc19pbnN0
YW5jZV9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfaW5zdGFuY2VvZl9sZW5ndGggPSA0OyBjb25z
dCBpbnQgb3BfaW5zdGFuY2VvZl9jdXN0b21fbGVuZ3RoID0gNTsgY29uc3QgaW50IG9wX3R5cGVv
Zl9sZW5ndGggPSAzOyBjb25zdCBpbnQgb3BfaXNfZW1wdHlfbGVuZ3RoID0gMzsgY29uc3QgaW50
IG9wX2lzX3VuZGVmaW5lZF9sZW5ndGggPSAzOyBjb25zdCBpbnQgb3BfaXNfYm9vbGVhbl9sZW5n
dGggPSAzOyBjb25zdCBpbnQgb3BfaXNfbnVtYmVyX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9p
c19zdHJpbmdfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX2lzX29iamVjdF9sZW5ndGggPSAzOyBj
b25zdCBpbnQgb3BfaXNfb2JqZWN0X29yX251bGxfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX2lz
X2Z1bmN0aW9uX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9pbl9sZW5ndGggPSA0OyBjb25zdCBp
bnQgb3BfdHJ5X2dldF9ieV9pZF9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfZ2V0X2J5X2lkX2xl
bmd0aCA9IDk7IGNvbnN0IGludCBvcF9nZXRfYXJyYXlfbGVuZ3RoX2xlbmd0aCA9IDk7IGNvbnN0
IGludCBvcF9wdXRfYnlfaWRfbGVuZ3RoID0gOTsgY29uc3QgaW50IG9wX2RlbF9ieV9pZF9sZW5n
dGggPSA0OyBjb25zdCBpbnQgb3BfZ2V0X2J5X3ZhbF9sZW5ndGggPSA2OyBjb25zdCBpbnQgb3Bf
cHV0X2J5X3ZhbF9sZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfcHV0X2J5X3ZhbF9kaXJlY3RfbGVu
Z3RoID0gNTsgY29uc3QgaW50IG9wX2RlbF9ieV92YWxfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9w
X3B1dF9ieV9pbmRleF9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfcHV0X2dldHRlcl9ieV9pZF9s
ZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfcHV0X3NldHRlcl9ieV9pZF9sZW5ndGggPSA1OyBjb25z
dCBpbnQgb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWRfbGVuZ3RoID0gNjsgY29uc3QgaW50IG9w
X3B1dF9nZXR0ZXJfYnlfdmFsX2xlbmd0aCA9IDU7IGNvbnN0IGludCBvcF9wdXRfc2V0dGVyX2J5
X3ZhbF9sZW5ndGggPSA1OyBjb25zdCBpbnQgb3Bfam1wX2xlbmd0aCA9IDI7IGNvbnN0IGludCBv
cF9qdHJ1ZV9sZW5ndGggPSAzOyBjb25zdCBpbnQgb3BfamZhbHNlX2xlbmd0aCA9IDM7IGNvbnN0
IGludCBvcF9qZXFfbnVsbF9sZW5ndGggPSAzOyBjb25zdCBpbnQgb3Bfam5lcV9udWxsX2xlbmd0
aCA9IDM7IGNvbnN0IGludCBvcF9qbmVxX3B0cl9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3Bfamxl
c3NfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX2psZXNzZXFfbGVuZ3RoID0gNDsgY29uc3QgaW50
IG9wX2pncmVhdGVyX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9qZ3JlYXRlcmVxX2xlbmd0aCA9
IDQ7IGNvbnN0IGludCBvcF9qbmxlc3NfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX2pubGVzc2Vx
X2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9qbmdyZWF0ZXJfbGVuZ3RoID0gNDsgY29uc3QgaW50
IG9wX2puZ3JlYXRlcmVxX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9sb29wX2hpbnRfbGVuZ3Ro
ID0gMTsgY29uc3QgaW50IG9wX3N3aXRjaF9pbW1fbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX3N3
aXRjaF9jaGFyX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9zd2l0Y2hfc3RyaW5nX2xlbmd0aCA9
IDQ7IGNvbnN0IGludCBvcF9uZXdfZnVuY19sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfbmV3X2Z1
bmNfZXhwX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfbGVuZ3Ro
ID0gNDsgY29uc3QgaW50IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHBfbGVuZ3RoID0gNDsgY29u
c3QgaW50IG9wX25ld19hcnJvd19mdW5jX2V4cF9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3Bfc2V0
X2Z1bmN0aW9uX25hbWVfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX2NhbGxfbGVuZ3RoID0gOTsg
Y29uc3QgaW50IG9wX3RhaWxfY2FsbF9sZW5ndGggPSA5OyBjb25zdCBpbnQgb3BfY2FsbF9ldmFs
X2xlbmd0aCA9IDk7IGNvbnN0IGludCBvcF9jYWxsX3ZhcmFyZ3NfbGVuZ3RoID0gOTsgY29uc3Qg
aW50IG9wX3RhaWxfY2FsbF92YXJhcmdzX2xlbmd0aCA9IDk7IGNvbnN0IGludCBvcF9yZXRfbGVu
Z3RoID0gMjsgY29uc3QgaW50IG9wX2NvbnN0cnVjdF9sZW5ndGggPSA5OyBjb25zdCBpbnQgb3Bf
Y29uc3RydWN0X3ZhcmFyZ3NfbGVuZ3RoID0gOTsgY29uc3QgaW50IG9wX3N0cmNhdF9sZW5ndGgg
PSA0OyBjb25zdCBpbnQgb3BfdG9fcHJpbWl0aXZlX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9y
ZXNvbHZlX3Njb3BlX2xlbmd0aCA9IDc7IGNvbnN0IGludCBvcF9nZXRfZnJvbV9zY29wZV9sZW5n
dGggPSA4OyBjb25zdCBpbnQgb3BfcHV0X3RvX3Njb3BlX2xlbmd0aCA9IDc7IGNvbnN0IGludCBv
cF9nZXRfZnJvbV9hcmd1bWVudHNfbGVuZ3RoID0gNTsgY29uc3QgaW50IG9wX3B1dF90b19hcmd1
bWVudHNfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX3B1c2hfd2l0aF9zY29wZV9sZW5ndGggPSA0
OyBjb25zdCBpbnQgb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnRfbGVuZ3RoID0gNTsgY29u
c3QgaW50IG9wX2dldF9wYXJlbnRfc2NvcGVfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX2NhdGNo
X2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF90aHJvd19sZW5ndGggPSAyOyBjb25zdCBpbnQgb3Bf
dGhyb3dfc3RhdGljX2Vycm9yX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9kZWJ1Z19sZW5ndGgg
PSAzOyBjb25zdCBpbnQgb3BfcHJvZmlsZV93aWxsX2NhbGxfbGVuZ3RoID0gMjsgY29uc3QgaW50
IG9wX3Byb2ZpbGVfZGlkX2NhbGxfbGVuZ3RoID0gMjsgY29uc3QgaW50IG9wX2VuZF9sZW5ndGgg
PSAyOyBjb25zdCBpbnQgb3BfcHJvZmlsZV90eXBlX2xlbmd0aCA9IDY7IGNvbnN0IGludCBvcF9w
cm9maWxlX2NvbnRyb2xfZmxvd19sZW5ndGggPSAyOyBjb25zdCBpbnQgb3BfZ2V0X2VudW1lcmFi
bGVfbGVuZ3RoX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eV9s
ZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eV9sZW5ndGggPSA1
OyBjb25zdCBpbnQgb3BfaGFzX2dlbmVyaWNfcHJvcGVydHlfbGVuZ3RoID0gNDsgY29uc3QgaW50
IG9wX2dldF9kaXJlY3RfcG5hbWVfbGVuZ3RoID0gNzsgY29uc3QgaW50IG9wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9lbnVtZXJhdG9yX3N0cnVjdHVy
ZV9wbmFtZV9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1l
X2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF90b19pbmRleF9zdHJpbmdfbGVuZ3RoID0gMzsgY29u
c3QgaW50IG9wX2Fzc2VydF9sZW5ndGggPSAzOyBjb25zdCBpbnQgb3BfY29weV9yZXN0X2xlbmd0
aCA9IDQ7IGNvbnN0IGludCBvcF9nZXRfcmVzdF9sZW5ndGhfbGVuZ3RoID0gMzsgY29uc3QgaW50
IG9wX3NhdmVfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX3Jlc3VtZV9sZW5ndGggPSAzOyBjb25z
dCBpbnQgb3Bfd2F0Y2hkb2dfbGVuZ3RoID0gMTsgY29uc3QgaW50IG9wX2xvZ19zaGFkb3dfY2hp
Y2tlbl9wcm9sb2d1ZV9sZW5ndGggPSAxOyBjb25zdCBpbnQgb3BfbG9nX3NoYWRvd19jaGlja2Vu
X3RhaWxfbGVuZ3RoID0gMTsgY29uc3QgaW50IGxsaW50X3Byb2dyYW1fcHJvbG9ndWVfbGVuZ3Ro
ID0gMTsgY29uc3QgaW50IGxsaW50X2V2YWxfcHJvbG9ndWVfbGVuZ3RoID0gMTsgY29uc3QgaW50
IGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlX2xlbmd0aCA9IDE7IGNvbnN0IGludCBsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZV9sZW5ndGggPSAxOyBjb25zdCBpbnQgbGxpbnRf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZV9sZW5ndGggPSAxOyBjb25zdCBpbnQgbGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfbGVuZ3RoID0gMTsgY29uc3QgaW50IGxs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfbGVuZ3RoID0gMTsgY29uc3Qg
aW50IGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50X2xlbmd0aCA9IDE7IGNvbnN0IGludCBsbGlu
dF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lX2xlbmd0aCA9IDE7IGNvbnN0IGludCBs
bGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lX2xlbmd0aCA9IDE7IGNvbnN0IGludCBs
bGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5lX2xlbmd0aCA9IDE7IGNvbnN0IGludCBsbGludF9u
YXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmVfbGVuZ3RoID0gMTsgY29uc3QgaW50IGhhbmRsZVVu
Y2F1Z2h0RXhjZXB0aW9uX2xlbmd0aCA9IDE7OwojdW5kZWYgT1BDT0RFX0lEX0xFTkdUSFMKCiNk
ZWZpbmUgT1BDT0RFX0xFTkdUSChvcGNvZGUpIG9wY29kZSAjI19sZW5ndGgKCiNkZWZpbmUgT1BD
T0RFX0lEX0xFTkdUSF9NQVAob3Bjb2RlLGxlbmd0aCkgbGVuZ3RoLAogICAgY29uc3QgaW50IG9w
Y29kZUxlbmd0aHNbbnVtT3Bjb2RlSURzXSA9IHsgMSwgMiwgMiwgMywgMiwgNSwgNCwgMiwgNCwg
NSwgNCwgNSwgMywgMywgMywgNCwgMywgNCwgMywgNCwgNCwgNCwgNCwgNCwgNCwgMiwgMiwgMywg
MywgMywgNSwgNSwgNSwgNCwgNSwgNCwgNCwgNCwgMywgNSwgNSwgNSwgNCwgNCwgNSwgMywgMywg
MywgMywgMywgMywgMywgMywgMywgNCwgNCwgOSwgOSwgOSwgNCwgNiwgNSwgNSwgNCwgNCwgNSwg
NSwgNiwgNSwgNSwgMiwgMywgMywgMywgMywgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgMSwg
NCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgMywgOSwgOSwgOSwgOSwgOSwgMiwgOSwgOSwgNCwgMywg
NywgOCwgNywgNSwgNCwgNCwgNSwgMywgMywgMiwgMywgMywgMiwgMiwgMiwgNiwgMiwgMywgNSwg
NSwgNCwgNywgMywgNCwgNCwgMywgMywgNCwgMywgNCwgMywgMSwgMSwgMSwgMSwgMSwgMSwgMSwg
MSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgfTsKI3VuZGVmIE9QQ09ERV9JRF9MRU5HVEhfTUFQ
CgojZGVmaW5lIFZFUklGWV9PUENPREVfSUQoaWQsc2l6ZSkgQ09NUElMRV9BU1NFUlQoaWQgPD0g
bnVtT3Bjb2RlSURzLCBBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCk7CiAgICBz
dGF0aWNfYXNzZXJ0KChvcF9lbnRlciA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNf
T1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZ2V0X3Njb3BlIDw9IG51
bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0
aWNfYXNzZXJ0KChvcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50cyA8PSBudW1PcGNvZGVJRHMpLCAi
QVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3Bf
Y3JlYXRlX3Njb3BlZF9hcmd1bWVudHMgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pT
X09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2NyZWF0ZV9jbG9uZWRf
YXJndW1lbnRzIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FS
RV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9jcmVhdGVfdGhpcyA8PSBudW1PcGNvZGVJRHMp
LCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgo
b3BfdG9fdGhpcyA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19B
UkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfY2hlY2tfdGR6IDw9IG51bU9wY29kZUlEcyks
ICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChv
cF9uZXdfb2JqZWN0IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURT
X0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9uZXdfYXJyYXkgPD0gbnVtT3Bjb2RlSURz
KSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQo
KG9wX25ld19hcnJheV93aXRoX3NpemUgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pT
X09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX25ld19hcnJheV9idWZm
ZXIgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElE
Iik7IHN0YXRpY19hc3NlcnQoKG9wX25ld19yZWdleHAgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VS
VF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX21vdiA8
PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsg
c3RhdGljX2Fzc2VydCgob3Bfbm90IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19P
UENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9lcSA8PSBudW1PcGNvZGVJ
RHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2Vy
dCgob3BfZXFfbnVsbCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lE
U19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbmVxIDw9IG51bU9wY29kZUlEcyksICJB
U1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9u
ZXFfbnVsbCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVf
VkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3Bfc3RyaWN0ZXEgPD0gbnVtT3Bjb2RlSURzKSwgIkFT
U0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX25z
dHJpY3RlcSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVf
VkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbGVzcyA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJU
X1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbGVzc2Vx
IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIp
OyBzdGF0aWNfYXNzZXJ0KChvcF9ncmVhdGVyIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhB
VF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9ncmVhdGVyZXEg
PD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7
IHN0YXRpY19hc3NlcnQoKG9wX2luYyA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNf
T1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZGVjIDw9IG51bU9wY29k
ZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNz
ZXJ0KChvcF90b19udW1iZXIgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09E
RV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3RvX3N0cmluZyA8PSBudW1PcGNv
ZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fz
c2VydCgob3BfbmVnYXRlIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVf
SURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9hZGQgPD0gbnVtT3Bjb2RlSURzKSwg
IkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9w
X211bCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFM
SUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZGl2IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhB
VF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9tb2QgPD0gbnVt
T3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRp
Y19hc3NlcnQoKG9wX3N1YiA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RF
X0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbHNoaWZ0IDw9IG51bU9wY29kZUlE
cyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0
KChvcF9yc2hpZnQgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNf
QVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3Vyc2hpZnQgPD0gbnVtT3Bjb2RlSURzKSwg
IkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9w
X3Vuc2lnbmVkIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FS
RV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9iaXRhbmQgPD0gbnVtT3Bjb2RlSURzKSwgIkFT
U0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2Jp
dHhvciA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFM
SUQiKTsgc3RhdGljX2Fzc2VydCgob3BfYml0b3IgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9U
SEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX292ZXJyaWRl
c19oYXNfaW5zdGFuY2UgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9J
RFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2luc3RhbmNlb2YgPD0gbnVtT3Bjb2Rl
SURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3Nl
cnQoKG9wX2luc3RhbmNlb2ZfY3VzdG9tIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9K
U19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF90eXBlb2YgPD0gbnVt
T3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRp
Y19hc3NlcnQoKG9wX2lzX2VtcHR5IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19P
UENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9pc191bmRlZmluZWQgPD0g
bnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0
YXRpY19hc3NlcnQoKG9wX2lzX2Jvb2xlYW4gPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFU
X0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2lzX251bWJlciA8
PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsg
c3RhdGljX2Fzc2VydCgob3BfaXNfc3RyaW5nIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhB
VF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9pc19vYmplY3Qg
PD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7
IHN0YXRpY19hc3NlcnQoKG9wX2lzX29iamVjdF9vcl9udWxsIDw9IG51bU9wY29kZUlEcyksICJB
U1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9p
c19mdW5jdGlvbiA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19B
UkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfaW4gPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VS
VF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3RyeV9n
ZXRfYnlfaWQgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJF
X1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2dldF9ieV9pZCA8PSBudW1PcGNvZGVJRHMpLCAi
QVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3Bf
Z2V0X2FycmF5X2xlbmd0aCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RF
X0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfcHV0X2J5X2lkIDw9IG51bU9wY29k
ZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNz
ZXJ0KChvcF9kZWxfYnlfaWQgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09E
RV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2dldF9ieV92YWwgPD0gbnVtT3Bj
b2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19h
c3NlcnQoKG9wX3B1dF9ieV92YWwgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09Q
Q09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3B1dF9ieV92YWxfZGlyZWN0
IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIp
OyBzdGF0aWNfYXNzZXJ0KChvcF9kZWxfYnlfdmFsIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRf
VEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9wdXRfYnlf
aW5kZXggPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZB
TElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3B1dF9nZXR0ZXJfYnlfaWQgPD0gbnVtT3Bjb2RlSURz
KSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQo
KG9wX3B1dF9zZXR0ZXJfYnlfaWQgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09Q
Q09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3B1dF9nZXR0ZXJfc2V0dGVy
X2J5X2lkIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9W
QUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9wdXRfZ2V0dGVyX2J5X3ZhbCA8PSBudW1PcGNvZGVJ
RHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2Vy
dCgob3BfcHV0X3NldHRlcl9ieV92YWwgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pT
X09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2ptcCA8PSBudW1PcGNv
ZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fz
c2VydCgob3BfanRydWUgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9J
RFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2pmYWxzZSA8PSBudW1PcGNvZGVJRHMp
LCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgo
b3BfamVxX251bGwgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNf
QVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2puZXFfbnVsbCA8PSBudW1PcGNvZGVJRHMp
LCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgo
b3Bfam5lcV9wdHIgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNf
QVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2psZXNzIDw9IG51bU9wY29kZUlEcyksICJB
U1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9q
bGVzc2VxIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9W
QUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9qZ3JlYXRlciA8PSBudW1PcGNvZGVJRHMpLCAiQVNT
RVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3Bfamdy
ZWF0ZXJlcSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVf
VkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3Bfam5sZXNzIDw9IG51bU9wY29kZUlEcyksICJBU1NF
UlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9qbmxl
c3NlcSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFM
SUQiKTsgc3RhdGljX2Fzc2VydCgob3Bfam5ncmVhdGVyIDw9IG51bU9wY29kZUlEcyksICJBU1NF
UlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9qbmdy
ZWF0ZXJlcSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVf
VkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbG9vcF9oaW50IDw9IG51bU9wY29kZUlEcyksICJB
U1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9z
d2l0Y2hfaW1tIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FS
RV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9zd2l0Y2hfY2hhciA8PSBudW1PcGNvZGVJRHMp
LCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgo
b3Bfc3dpdGNoX3N0cmluZyA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RF
X0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbmV3X2Z1bmMgPD0gbnVtT3Bjb2Rl
SURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3Nl
cnQoKG9wX25ld19mdW5jX2V4cCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BD
T0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbmV3X2dlbmVyYXRvcl9mdW5j
IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIp
OyBzdGF0aWNfYXNzZXJ0KChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwIDw9IG51bU9wY29kZUlE
cyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0
KChvcF9uZXdfYXJyb3dfZnVuY19leHAgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pT
X09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3NldF9mdW5jdGlvbl9u
YW1lIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJ
RCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9jYWxsIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhB
VF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF90YWlsX2NhbGwg
PD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7
IHN0YXRpY19hc3NlcnQoKG9wX2NhbGxfZXZhbCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RI
QVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfY2FsbF92YXJh
cmdzIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJ
RCIpOyBzdGF0aWNfYXNzZXJ0KChvcF90YWlsX2NhbGxfdmFyYXJncyA8PSBudW1PcGNvZGVJRHMp
LCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgo
b3BfcmV0IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9W
QUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9jb25zdHJ1Y3QgPD0gbnVtT3Bjb2RlSURzKSwgIkFT
U0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2Nv
bnN0cnVjdF92YXJhcmdzIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVf
SURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9zdHJjYXQgPD0gbnVtT3Bjb2RlSURz
KSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQo
KG9wX3RvX3ByaW1pdGl2ZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RF
X0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfcmVzb2x2ZV9zY29wZSA8PSBudW1P
cGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGlj
X2Fzc2VydCgob3BfZ2V0X2Zyb21fc2NvcGUgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFU
X0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3B1dF90b19zY29w
ZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQi
KTsgc3RhdGljX2Fzc2VydCgob3BfZ2V0X2Zyb21fYXJndW1lbnRzIDw9IG51bU9wY29kZUlEcyks
ICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChv
cF9wdXRfdG9fYXJndW1lbnRzIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENP
REVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9wdXNoX3dpdGhfc2NvcGUgPD0g
bnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0
YXRpY19hc3NlcnQoKG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50IDw9IG51bU9wY29kZUlE
cyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0
KChvcF9nZXRfcGFyZW50X3Njb3BlIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19P
UENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9jYXRjaCA8PSBudW1PcGNv
ZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fz
c2VydCgob3BfdGhyb3cgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9J
RFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3Rocm93X3N0YXRpY19lcnJvciA8PSBu
dW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3Rh
dGljX2Fzc2VydCgob3BfZGVidWcgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09Q
Q09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3Byb2ZpbGVfd2lsbF9jYWxs
IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIp
OyBzdGF0aWNfYXNzZXJ0KChvcF9wcm9maWxlX2RpZF9jYWxsIDw9IG51bU9wY29kZUlEcyksICJB
U1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9l
bmQgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElE
Iik7IHN0YXRpY19hc3NlcnQoKG9wX3Byb2ZpbGVfdHlwZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNT
RVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfcHJv
ZmlsZV9jb250cm9sX2Zsb3cgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09E
RV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0
aCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQi
KTsgc3RhdGljX2Fzc2VydCgob3BfaGFzX2luZGV4ZWRfcHJvcGVydHkgPD0gbnVtT3Bjb2RlSURz
KSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQo
KG9wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFU
X0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2hhc19nZW5lcmlj
X3Byb3BlcnR5IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FS
RV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9nZXRfZGlyZWN0X3BuYW1lIDw9IG51bU9wY29k
ZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNz
ZXJ0KChvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvciA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJU
X1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZW51bWVy
YXRvcl9zdHJ1Y3R1cmVfcG5hbWUgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09Q
Q09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2VudW1lcmF0b3JfZ2VuZXJp
Y19wbmFtZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVf
VkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfdG9faW5kZXhfc3RyaW5nIDw9IG51bU9wY29kZUlE
cyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0
KChvcF9hc3NlcnQgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNf
QVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2NvcHlfcmVzdCA8PSBudW1PcGNvZGVJRHMp
LCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgo
b3BfZ2V0X3Jlc3RfbGVuZ3RoIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENP
REVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9zYXZlIDw9IG51bU9wY29kZUlE
cyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0
KChvcF9yZXN1bWUgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNf
QVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3dhdGNoZG9nIDw9IG51bU9wY29kZUlEcyks
ICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChv
cF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9U
SEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2xvZ19zaGFk
b3dfY2hpY2tlbl90YWlsIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVf
SURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChsbGludF9wcm9ncmFtX3Byb2xvZ3VlIDw9
IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBz
dGF0aWNfYXNzZXJ0KChsbGludF9ldmFsX3Byb2xvZ3VlIDw9IG51bU9wY29kZUlEcyksICJBU1NF
UlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChsbGludF9t
b2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNf
T1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgobGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfcHJvbG9ndWUgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9J
RFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfcHJvbG9ndWUgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNf
QVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
X2NoZWNrIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9W
QUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5
X2NoZWNrIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9W
QUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChsbGludF9nZW5lcmljX3JldHVybl9wb2ludCA8PSBudW1P
cGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGlj
X2Fzc2VydCgobGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSA8PSBudW1PcGNv
ZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fz
c2VydCgobGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSA8PSBudW1PcGNvZGVJRHMp
LCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgo
bGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RI
QVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgobGxpbnRfbmF0aXZl
X2NvbnN0cnVjdF90cmFtcG9saW5lIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19P
UENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChoYW5kbGVVbmNhdWdodEV4Y2Vw
dGlvbiA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFM
SUQiKTs7CiN1bmRlZiBWRVJJRllfT1BDT0RFX0lECgoKdHlwZWRlZiB2b2lkKiBPcGNvZGU7CgoK
CgojZGVmaW5lIFBBRERJTkdfU1RSSU5HICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIKI2RlZmluZSBQQURESU5HX1NUUklOR19MRU5HVEggc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0
cmxlbihQQURESU5HX1NUUklORykpCgpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgb3Bjb2RlTmFt
ZXNbXTsKCmlubGluZSBjb25zdCBjaGFyKiBwYWRPcGNvZGVOYW1lKE9wY29kZUlEIG9wLCB1bnNp
Z25lZCB3aWR0aCkKewogICAgdW5zaWduZWQgcGFkID0gd2lkdGggLSBzdHJsZW4ob3Bjb2RlTmFt
ZXNbb3BdKTsKICAgIHBhZCA9IHN0ZDo6bWluKHBhZCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0
cmxlbigiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKSkpOwogICAgcmV0dXJuICIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c3RybGVuKCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpKSAtIHBhZDsKfQoKI3Vu
ZGVmIFBBRERJTkdfU1RSSU5HX0xFTkdUSAojdW5kZWYgUEFERElOR19TVFJJTkcKIyAxMTggIi4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCIKaW5saW5lIHNpemVf
dCBvcGNvZGVMZW5ndGgoT3Bjb2RlSUQgb3Bjb2RlKQp7CiAgICBzd2l0Y2ggKG9wY29kZSkgewoj
ZGVmaW5lIE9QQ09ERV9JRF9MRU5HVEhTKGlkLGxlbmd0aCkgY2FzZSBpZDogcmV0dXJuIE9QQ09E
RV9MRU5HVEgoaWQpOwogICAgICAgICBjYXNlIG9wX2VudGVyOiByZXR1cm4gb3BfZW50ZXJfbGVu
Z3RoOyBjYXNlIG9wX2dldF9zY29wZTogcmV0dXJuIG9wX2dldF9zY29wZV9sZW5ndGg7IGNhc2Ug
b3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHM6IHJldHVybiBvcF9jcmVhdGVfZGlyZWN0X2FyZ3Vt
ZW50c19sZW5ndGg7IGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHM6IHJldHVybiBvcF9j
cmVhdGVfc2NvcGVkX2FyZ3VtZW50c19sZW5ndGg7IGNhc2Ugb3BfY3JlYXRlX2Nsb25lZF9hcmd1
bWVudHM6IHJldHVybiBvcF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50c19sZW5ndGg7IGNhc2Ugb3Bf
Y3JlYXRlX3RoaXM6IHJldHVybiBvcF9jcmVhdGVfdGhpc19sZW5ndGg7IGNhc2Ugb3BfdG9fdGhp
czogcmV0dXJuIG9wX3RvX3RoaXNfbGVuZ3RoOyBjYXNlIG9wX2NoZWNrX3RkejogcmV0dXJuIG9w
X2NoZWNrX3Rkel9sZW5ndGg7IGNhc2Ugb3BfbmV3X29iamVjdDogcmV0dXJuIG9wX25ld19vYmpl
Y3RfbGVuZ3RoOyBjYXNlIG9wX25ld19hcnJheTogcmV0dXJuIG9wX25ld19hcnJheV9sZW5ndGg7
IGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc2l6ZTogcmV0dXJuIG9wX25ld19hcnJheV93aXRoX3Np
emVfbGVuZ3RoOyBjYXNlIG9wX25ld19hcnJheV9idWZmZXI6IHJldHVybiBvcF9uZXdfYXJyYXlf
YnVmZmVyX2xlbmd0aDsgY2FzZSBvcF9uZXdfcmVnZXhwOiByZXR1cm4gb3BfbmV3X3JlZ2V4cF9s
ZW5ndGg7IGNhc2Ugb3BfbW92OiByZXR1cm4gb3BfbW92X2xlbmd0aDsgY2FzZSBvcF9ub3Q6IHJl
dHVybiBvcF9ub3RfbGVuZ3RoOyBjYXNlIG9wX2VxOiByZXR1cm4gb3BfZXFfbGVuZ3RoOyBjYXNl
IG9wX2VxX251bGw6IHJldHVybiBvcF9lcV9udWxsX2xlbmd0aDsgY2FzZSBvcF9uZXE6IHJldHVy
biBvcF9uZXFfbGVuZ3RoOyBjYXNlIG9wX25lcV9udWxsOiByZXR1cm4gb3BfbmVxX251bGxfbGVu
Z3RoOyBjYXNlIG9wX3N0cmljdGVxOiByZXR1cm4gb3Bfc3RyaWN0ZXFfbGVuZ3RoOyBjYXNlIG9w
X25zdHJpY3RlcTogcmV0dXJuIG9wX25zdHJpY3RlcV9sZW5ndGg7IGNhc2Ugb3BfbGVzczogcmV0
dXJuIG9wX2xlc3NfbGVuZ3RoOyBjYXNlIG9wX2xlc3NlcTogcmV0dXJuIG9wX2xlc3NlcV9sZW5n
dGg7IGNhc2Ugb3BfZ3JlYXRlcjogcmV0dXJuIG9wX2dyZWF0ZXJfbGVuZ3RoOyBjYXNlIG9wX2dy
ZWF0ZXJlcTogcmV0dXJuIG9wX2dyZWF0ZXJlcV9sZW5ndGg7IGNhc2Ugb3BfaW5jOiByZXR1cm4g
b3BfaW5jX2xlbmd0aDsgY2FzZSBvcF9kZWM6IHJldHVybiBvcF9kZWNfbGVuZ3RoOyBjYXNlIG9w
X3RvX251bWJlcjogcmV0dXJuIG9wX3RvX251bWJlcl9sZW5ndGg7IGNhc2Ugb3BfdG9fc3RyaW5n
OiByZXR1cm4gb3BfdG9fc3RyaW5nX2xlbmd0aDsgY2FzZSBvcF9uZWdhdGU6IHJldHVybiBvcF9u
ZWdhdGVfbGVuZ3RoOyBjYXNlIG9wX2FkZDogcmV0dXJuIG9wX2FkZF9sZW5ndGg7IGNhc2Ugb3Bf
bXVsOiByZXR1cm4gb3BfbXVsX2xlbmd0aDsgY2FzZSBvcF9kaXY6IHJldHVybiBvcF9kaXZfbGVu
Z3RoOyBjYXNlIG9wX21vZDogcmV0dXJuIG9wX21vZF9sZW5ndGg7IGNhc2Ugb3Bfc3ViOiByZXR1
cm4gb3Bfc3ViX2xlbmd0aDsgY2FzZSBvcF9sc2hpZnQ6IHJldHVybiBvcF9sc2hpZnRfbGVuZ3Ro
OyBjYXNlIG9wX3JzaGlmdDogcmV0dXJuIG9wX3JzaGlmdF9sZW5ndGg7IGNhc2Ugb3BfdXJzaGlm
dDogcmV0dXJuIG9wX3Vyc2hpZnRfbGVuZ3RoOyBjYXNlIG9wX3Vuc2lnbmVkOiByZXR1cm4gb3Bf
dW5zaWduZWRfbGVuZ3RoOyBjYXNlIG9wX2JpdGFuZDogcmV0dXJuIG9wX2JpdGFuZF9sZW5ndGg7
IGNhc2Ugb3BfYml0eG9yOiByZXR1cm4gb3BfYml0eG9yX2xlbmd0aDsgY2FzZSBvcF9iaXRvcjog
cmV0dXJuIG9wX2JpdG9yX2xlbmd0aDsgY2FzZSBvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlOiBy
ZXR1cm4gb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZV9sZW5ndGg7IGNhc2Ugb3BfaW5zdGFuY2Vv
ZjogcmV0dXJuIG9wX2luc3RhbmNlb2ZfbGVuZ3RoOyBjYXNlIG9wX2luc3RhbmNlb2ZfY3VzdG9t
OiByZXR1cm4gb3BfaW5zdGFuY2VvZl9jdXN0b21fbGVuZ3RoOyBjYXNlIG9wX3R5cGVvZjogcmV0
dXJuIG9wX3R5cGVvZl9sZW5ndGg7IGNhc2Ugb3BfaXNfZW1wdHk6IHJldHVybiBvcF9pc19lbXB0
eV9sZW5ndGg7IGNhc2Ugb3BfaXNfdW5kZWZpbmVkOiByZXR1cm4gb3BfaXNfdW5kZWZpbmVkX2xl
bmd0aDsgY2FzZSBvcF9pc19ib29sZWFuOiByZXR1cm4gb3BfaXNfYm9vbGVhbl9sZW5ndGg7IGNh
c2Ugb3BfaXNfbnVtYmVyOiByZXR1cm4gb3BfaXNfbnVtYmVyX2xlbmd0aDsgY2FzZSBvcF9pc19z
dHJpbmc6IHJldHVybiBvcF9pc19zdHJpbmdfbGVuZ3RoOyBjYXNlIG9wX2lzX29iamVjdDogcmV0
dXJuIG9wX2lzX29iamVjdF9sZW5ndGg7IGNhc2Ugb3BfaXNfb2JqZWN0X29yX251bGw6IHJldHVy
biBvcF9pc19vYmplY3Rfb3JfbnVsbF9sZW5ndGg7IGNhc2Ugb3BfaXNfZnVuY3Rpb246IHJldHVy
biBvcF9pc19mdW5jdGlvbl9sZW5ndGg7IGNhc2Ugb3BfaW46IHJldHVybiBvcF9pbl9sZW5ndGg7
IGNhc2Ugb3BfdHJ5X2dldF9ieV9pZDogcmV0dXJuIG9wX3RyeV9nZXRfYnlfaWRfbGVuZ3RoOyBj
YXNlIG9wX2dldF9ieV9pZDogcmV0dXJuIG9wX2dldF9ieV9pZF9sZW5ndGg7IGNhc2Ugb3BfZ2V0
X2FycmF5X2xlbmd0aDogcmV0dXJuIG9wX2dldF9hcnJheV9sZW5ndGhfbGVuZ3RoOyBjYXNlIG9w
X3B1dF9ieV9pZDogcmV0dXJuIG9wX3B1dF9ieV9pZF9sZW5ndGg7IGNhc2Ugb3BfZGVsX2J5X2lk
OiByZXR1cm4gb3BfZGVsX2J5X2lkX2xlbmd0aDsgY2FzZSBvcF9nZXRfYnlfdmFsOiByZXR1cm4g
b3BfZ2V0X2J5X3ZhbF9sZW5ndGg7IGNhc2Ugb3BfcHV0X2J5X3ZhbDogcmV0dXJuIG9wX3B1dF9i
eV92YWxfbGVuZ3RoOyBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OiByZXR1cm4gb3BfcHV0X2J5
X3ZhbF9kaXJlY3RfbGVuZ3RoOyBjYXNlIG9wX2RlbF9ieV92YWw6IHJldHVybiBvcF9kZWxfYnlf
dmFsX2xlbmd0aDsgY2FzZSBvcF9wdXRfYnlfaW5kZXg6IHJldHVybiBvcF9wdXRfYnlfaW5kZXhf
bGVuZ3RoOyBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfaWQ6IHJldHVybiBvcF9wdXRfZ2V0dGVyX2J5
X2lkX2xlbmd0aDsgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X2lkOiByZXR1cm4gb3BfcHV0X3NldHRl
cl9ieV9pZF9sZW5ndGg7IGNhc2Ugb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQ6IHJldHVybiBv
cF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZF9sZW5ndGg7IGNhc2Ugb3BfcHV0X2dldHRlcl9ieV92
YWw6IHJldHVybiBvcF9wdXRfZ2V0dGVyX2J5X3ZhbF9sZW5ndGg7IGNhc2Ugb3BfcHV0X3NldHRl
cl9ieV92YWw6IHJldHVybiBvcF9wdXRfc2V0dGVyX2J5X3ZhbF9sZW5ndGg7IGNhc2Ugb3Bfam1w
OiByZXR1cm4gb3Bfam1wX2xlbmd0aDsgY2FzZSBvcF9qdHJ1ZTogcmV0dXJuIG9wX2p0cnVlX2xl
bmd0aDsgY2FzZSBvcF9qZmFsc2U6IHJldHVybiBvcF9qZmFsc2VfbGVuZ3RoOyBjYXNlIG9wX2pl
cV9udWxsOiByZXR1cm4gb3BfamVxX251bGxfbGVuZ3RoOyBjYXNlIG9wX2puZXFfbnVsbDogcmV0
dXJuIG9wX2puZXFfbnVsbF9sZW5ndGg7IGNhc2Ugb3Bfam5lcV9wdHI6IHJldHVybiBvcF9qbmVx
X3B0cl9sZW5ndGg7IGNhc2Ugb3Bfamxlc3M6IHJldHVybiBvcF9qbGVzc19sZW5ndGg7IGNhc2Ug
b3Bfamxlc3NlcTogcmV0dXJuIG9wX2psZXNzZXFfbGVuZ3RoOyBjYXNlIG9wX2pncmVhdGVyOiBy
ZXR1cm4gb3BfamdyZWF0ZXJfbGVuZ3RoOyBjYXNlIG9wX2pncmVhdGVyZXE6IHJldHVybiBvcF9q
Z3JlYXRlcmVxX2xlbmd0aDsgY2FzZSBvcF9qbmxlc3M6IHJldHVybiBvcF9qbmxlc3NfbGVuZ3Ro
OyBjYXNlIG9wX2pubGVzc2VxOiByZXR1cm4gb3Bfam5sZXNzZXFfbGVuZ3RoOyBjYXNlIG9wX2pu
Z3JlYXRlcjogcmV0dXJuIG9wX2puZ3JlYXRlcl9sZW5ndGg7IGNhc2Ugb3Bfam5ncmVhdGVyZXE6
IHJldHVybiBvcF9qbmdyZWF0ZXJlcV9sZW5ndGg7IGNhc2Ugb3BfbG9vcF9oaW50OiByZXR1cm4g
b3BfbG9vcF9oaW50X2xlbmd0aDsgY2FzZSBvcF9zd2l0Y2hfaW1tOiByZXR1cm4gb3Bfc3dpdGNo
X2ltbV9sZW5ndGg7IGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHJldHVybiBvcF9zd2l0Y2hfY2hhcl9s
ZW5ndGg7IGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogcmV0dXJuIG9wX3N3aXRjaF9zdHJpbmdfbGVu
Z3RoOyBjYXNlIG9wX25ld19mdW5jOiByZXR1cm4gb3BfbmV3X2Z1bmNfbGVuZ3RoOyBjYXNlIG9w
X25ld19mdW5jX2V4cDogcmV0dXJuIG9wX25ld19mdW5jX2V4cF9sZW5ndGg7IGNhc2Ugb3BfbmV3
X2dlbmVyYXRvcl9mdW5jOiByZXR1cm4gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2xlbmd0aDsgY2Fz
ZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOiByZXR1cm4gb3BfbmV3X2dlbmVyYXRvcl9mdW5j
X2V4cF9sZW5ndGg7IGNhc2Ugb3BfbmV3X2Fycm93X2Z1bmNfZXhwOiByZXR1cm4gb3BfbmV3X2Fy
cm93X2Z1bmNfZXhwX2xlbmd0aDsgY2FzZSBvcF9zZXRfZnVuY3Rpb25fbmFtZTogcmV0dXJuIG9w
X3NldF9mdW5jdGlvbl9uYW1lX2xlbmd0aDsgY2FzZSBvcF9jYWxsOiByZXR1cm4gb3BfY2FsbF9s
ZW5ndGg7IGNhc2Ugb3BfdGFpbF9jYWxsOiByZXR1cm4gb3BfdGFpbF9jYWxsX2xlbmd0aDsgY2Fz
ZSBvcF9jYWxsX2V2YWw6IHJldHVybiBvcF9jYWxsX2V2YWxfbGVuZ3RoOyBjYXNlIG9wX2NhbGxf
dmFyYXJnczogcmV0dXJuIG9wX2NhbGxfdmFyYXJnc19sZW5ndGg7IGNhc2Ugb3BfdGFpbF9jYWxs
X3ZhcmFyZ3M6IHJldHVybiBvcF90YWlsX2NhbGxfdmFyYXJnc19sZW5ndGg7IGNhc2Ugb3BfcmV0
OiByZXR1cm4gb3BfcmV0X2xlbmd0aDsgY2FzZSBvcF9jb25zdHJ1Y3Q6IHJldHVybiBvcF9jb25z
dHJ1Y3RfbGVuZ3RoOyBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOiByZXR1cm4gb3BfY29uc3Ry
dWN0X3ZhcmFyZ3NfbGVuZ3RoOyBjYXNlIG9wX3N0cmNhdDogcmV0dXJuIG9wX3N0cmNhdF9sZW5n
dGg7IGNhc2Ugb3BfdG9fcHJpbWl0aXZlOiByZXR1cm4gb3BfdG9fcHJpbWl0aXZlX2xlbmd0aDsg
Y2FzZSBvcF9yZXNvbHZlX3Njb3BlOiByZXR1cm4gb3BfcmVzb2x2ZV9zY29wZV9sZW5ndGg7IGNh
c2Ugb3BfZ2V0X2Zyb21fc2NvcGU6IHJldHVybiBvcF9nZXRfZnJvbV9zY29wZV9sZW5ndGg7IGNh
c2Ugb3BfcHV0X3RvX3Njb3BlOiByZXR1cm4gb3BfcHV0X3RvX3Njb3BlX2xlbmd0aDsgY2FzZSBv
cF9nZXRfZnJvbV9hcmd1bWVudHM6IHJldHVybiBvcF9nZXRfZnJvbV9hcmd1bWVudHNfbGVuZ3Ro
OyBjYXNlIG9wX3B1dF90b19hcmd1bWVudHM6IHJldHVybiBvcF9wdXRfdG9fYXJndW1lbnRzX2xl
bmd0aDsgY2FzZSBvcF9wdXNoX3dpdGhfc2NvcGU6IHJldHVybiBvcF9wdXNoX3dpdGhfc2NvcGVf
bGVuZ3RoOyBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OiByZXR1cm4gb3BfY3Jl
YXRlX2xleGljYWxfZW52aXJvbm1lbnRfbGVuZ3RoOyBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6
IHJldHVybiBvcF9nZXRfcGFyZW50X3Njb3BlX2xlbmd0aDsgY2FzZSBvcF9jYXRjaDogcmV0dXJu
IG9wX2NhdGNoX2xlbmd0aDsgY2FzZSBvcF90aHJvdzogcmV0dXJuIG9wX3Rocm93X2xlbmd0aDsg
Y2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6IHJldHVybiBvcF90aHJvd19zdGF0aWNfZXJyb3Jf
bGVuZ3RoOyBjYXNlIG9wX2RlYnVnOiByZXR1cm4gb3BfZGVidWdfbGVuZ3RoOyBjYXNlIG9wX3By
b2ZpbGVfd2lsbF9jYWxsOiByZXR1cm4gb3BfcHJvZmlsZV93aWxsX2NhbGxfbGVuZ3RoOyBjYXNl
IG9wX3Byb2ZpbGVfZGlkX2NhbGw6IHJldHVybiBvcF9wcm9maWxlX2RpZF9jYWxsX2xlbmd0aDsg
Y2FzZSBvcF9lbmQ6IHJldHVybiBvcF9lbmRfbGVuZ3RoOyBjYXNlIG9wX3Byb2ZpbGVfdHlwZTog
cmV0dXJuIG9wX3Byb2ZpbGVfdHlwZV9sZW5ndGg7IGNhc2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zs
b3c6IHJldHVybiBvcF9wcm9maWxlX2NvbnRyb2xfZmxvd19sZW5ndGg7IGNhc2Ugb3BfZ2V0X2Vu
dW1lcmFibGVfbGVuZ3RoOiByZXR1cm4gb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoX2xlbmd0aDsg
Y2FzZSBvcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eTogcmV0dXJuIG9wX2hhc19pbmRleGVkX3Byb3Bl
cnR5X2xlbmd0aDsgY2FzZSBvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5OiByZXR1cm4gb3BfaGFz
X3N0cnVjdHVyZV9wcm9wZXJ0eV9sZW5ndGg7IGNhc2Ugb3BfaGFzX2dlbmVyaWNfcHJvcGVydHk6
IHJldHVybiBvcF9oYXNfZ2VuZXJpY19wcm9wZXJ0eV9sZW5ndGg7IGNhc2Ugb3BfZ2V0X2RpcmVj
dF9wbmFtZTogcmV0dXJuIG9wX2dldF9kaXJlY3RfcG5hbWVfbGVuZ3RoOyBjYXNlIG9wX2dldF9w
cm9wZXJ0eV9lbnVtZXJhdG9yOiByZXR1cm4gb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3JfbGVu
Z3RoOyBjYXNlIG9wX2VudW1lcmF0b3Jfc3RydWN0dXJlX3BuYW1lOiByZXR1cm4gb3BfZW51bWVy
YXRvcl9zdHJ1Y3R1cmVfcG5hbWVfbGVuZ3RoOyBjYXNlIG9wX2VudW1lcmF0b3JfZ2VuZXJpY19w
bmFtZTogcmV0dXJuIG9wX2VudW1lcmF0b3JfZ2VuZXJpY19wbmFtZV9sZW5ndGg7IGNhc2Ugb3Bf
dG9faW5kZXhfc3RyaW5nOiByZXR1cm4gb3BfdG9faW5kZXhfc3RyaW5nX2xlbmd0aDsgY2FzZSBv
cF9hc3NlcnQ6IHJldHVybiBvcF9hc3NlcnRfbGVuZ3RoOyBjYXNlIG9wX2NvcHlfcmVzdDogcmV0
dXJuIG9wX2NvcHlfcmVzdF9sZW5ndGg7IGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiByZXR1cm4g
b3BfZ2V0X3Jlc3RfbGVuZ3RoX2xlbmd0aDsgY2FzZSBvcF9zYXZlOiByZXR1cm4gb3Bfc2F2ZV9s
ZW5ndGg7IGNhc2Ugb3BfcmVzdW1lOiByZXR1cm4gb3BfcmVzdW1lX2xlbmd0aDsgY2FzZSBvcF93
YXRjaGRvZzogcmV0dXJuIG9wX3dhdGNoZG9nX2xlbmd0aDsgY2FzZSBvcF9sb2dfc2hhZG93X2No
aWNrZW5fcHJvbG9ndWU6IHJldHVybiBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWVfbGVu
Z3RoOyBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsOiByZXR1cm4gb3BfbG9nX3NoYWRv
d19jaGlja2VuX3RhaWxfbGVuZ3RoOyBjYXNlIGxsaW50X3Byb2dyYW1fcHJvbG9ndWU6IHJldHVy
biBsbGludF9wcm9ncmFtX3Byb2xvZ3VlX2xlbmd0aDsgY2FzZSBsbGludF9ldmFsX3Byb2xvZ3Vl
OiByZXR1cm4gbGxpbnRfZXZhbF9wcm9sb2d1ZV9sZW5ndGg7IGNhc2UgbGxpbnRfbW9kdWxlX3By
b2dyYW1fcHJvbG9ndWU6IHJldHVybiBsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZV9sZW5n
dGg7IGNhc2UgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWU6IHJldHVybiBsbGludF9m
dW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZV9sZW5ndGg7IGNhc2UgbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9wcm9sb2d1ZTogcmV0dXJuIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
cHJvbG9ndWVfbGVuZ3RoOyBjYXNlIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNr
OiByZXR1cm4gbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfbGVuZ3RoOyBjYXNl
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2s6IHJldHVybiBsbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX2xlbmd0aDsgY2FzZSBsbGludF9nZW5l
cmljX3JldHVybl9wb2ludDogcmV0dXJuIGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50X2xlbmd0
aDsgY2FzZSBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOiByZXR1cm4gbGxp
bnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZV9sZW5ndGg7IGNhc2UgbGxpbnRfdGhy
b3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZTogcmV0dXJuIGxsaW50X3Rocm93X2R1cmluZ19jYWxs
X3RyYW1wb2xpbmVfbGVuZ3RoOyBjYXNlIGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmU6IHJl
dHVybiBsbGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5lX2xlbmd0aDsgY2FzZSBsbGludF9uYXRp
dmVfY29uc3RydWN0X3RyYW1wb2xpbmU6IHJldHVybiBsbGludF9uYXRpdmVfY29uc3RydWN0X3Ry
YW1wb2xpbmVfbGVuZ3RoOyBjYXNlIGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uOiByZXR1cm4gaGFu
ZGxlVW5jYXVnaHRFeGNlcHRpb25fbGVuZ3RoOwojdW5kZWYgT1BDT0RFX0lEX0xFTkdUSFMKICAg
IH0KICAgIFdURkNyYXNoKCk7CiAgICByZXR1cm4gMDsKfQoKfQoKbmFtZXNwYWNlIFdURiB7Cgpj
bGFzcyBQcmludFN0cmVhbTsKCnZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6
T3Bjb2RlSUQpOwoKfQojIDMxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnREYXRhLmgiIDIKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgVk07CnN0cnVjdCBJbnN0cnVjdGlv
bjsKCgoKCnR5cGVkZWYgdm9pZCAoKkxMSW50Q29kZSkoKTsKCgpuYW1lc3BhY2UgTExJbnQgewoK
Y2xhc3MgRGF0YSB7CnB1YmxpYzoKICAgIHN0YXRpYyB2b2lkIHBlcmZvcm1Bc3NlcnRpb25zKFZN
Jik7Cgpwcml2YXRlOgogICAgc3RhdGljIEluc3RydWN0aW9uKiBzX2V4Y2VwdGlvbkluc3RydWN0
aW9uczsKICAgIHN0YXRpYyBPcGNvZGUgc19vcGNvZGVNYXBbbnVtT3Bjb2RlSURzXTsKCiAgICBm
cmllbmQgdm9pZCBpbml0aWFsaXplKCk7CgogICAgZnJpZW5kIEluc3RydWN0aW9uKiBleGNlcHRp
b25JbnN0cnVjdGlvbnMoKTsKICAgIGZyaWVuZCBPcGNvZGUqIG9wY29kZU1hcCgpOwogICAgZnJp
ZW5kIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQpOwogICAgZnJpZW5kIHZvaWQqIGdldENvZGVQ
dHIoT3Bjb2RlSUQpOwp9OwoKdm9pZCBpbml0aWFsaXplKCk7CgppbmxpbmUgSW5zdHJ1Y3Rpb24q
IGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCnsKICAgIHJldHVybiBEYXRhOjpzX2V4Y2VwdGlvbklu
c3RydWN0aW9uczsKfQoKaW5saW5lIE9wY29kZSogb3Bjb2RlTWFwKCkKewogICAgcmV0dXJuIERh
dGE6OnNfb3Bjb2RlTWFwOwp9CgppbmxpbmUgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCBpZCkK
ewoKICAgIHJldHVybiBEYXRhOjpzX29wY29kZU1hcFtpZF07CgoKCn0KCmlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQqIGdldENvZGVQdHIoT3Bjb2RlSUQgaWQp
CnsKICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRPcGNvZGUoaWQpKTsKfQoK
CmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIExMSW50Q29kZSBnZXRD
b2RlRnVuY3Rpb25QdHIoT3Bjb2RlSUQgY29kZUlkKQp7CiAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxMTEludENvZGU+KGdldENvZGVQdHIoY29kZUlkKSk7Cn0KCgppbmxpbmUgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkKiBnZXRDb2RlUHRyKEpTQzo6RW5jb2RlZEpT
VmFsdWUgZ2x1ZUhlbHBlcigpKQp7CiAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPihnbHVl
SGVscGVyKTsKfQoKCn0gfQojIDMyICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIiAyCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYv
RGF0YUxvZy5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0RhdGFMb2cuaCIKI2RlZmlu
ZSBEYXRhTG9nX2ggCgoKCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFt
LmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmgiCiNkZWZp
bmUgRmlsZVByaW50U3RyZWFtX2ggCgoKCgpuYW1lc3BhY2UgV1RGIHsKCmNsYXNzIEZpbGVQcmlu
dFN0cmVhbSA6IHB1YmxpYyBQcmludFN0cmVhbSB7CnB1YmxpYzoKICAgIGVudW0gQWRvcHRpb25N
b2RlIHsKICAgICAgICBBZG9wdCwKICAgICAgICBCb3Jyb3cKICAgIH07CgogICAgRmlsZVByaW50
U3RyZWFtKEZJTEUqLCBBZG9wdGlvbk1vZGUgPSBBZG9wdCk7CiAgICB2aXJ0dWFsIH5GaWxlUHJp
bnRTdHJlYW0oKTsKCiAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZpbGVQcmludFN0cmVhbT4g
b3Blbihjb25zdCBjaGFyKiBmaWxlbmFtZSwgY29uc3QgY2hhciogbW9kZSk7CgogICAgRklMRSog
ZmlsZSgpIHsgcmV0dXJuIG1fZmlsZTsgfQoKICAgIHZvaWQgdnByaW50Zihjb25zdCBjaGFyKiBm
b3JtYXQsIHZhX2xpc3QpIG92ZXJyaWRlIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRm
LCAyLCAwKSkpOwogICAgdm9pZCBmbHVzaCgpIG92ZXJyaWRlOwoKcHJpdmF0ZToKICAgIEZJTEUq
IG1fZmlsZTsKICAgIEFkb3B0aW9uTW9kZSBtX2Fkb3B0aW9uTW9kZTsKfTsKCn0KCnVzaW5nIFdU
Rjo6RmlsZVByaW50U3RyZWFtOwojIDMyICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmgi
IDIKCgpuYW1lc3BhY2UgV1RGIHsKCiBGaWxlUHJpbnRTdHJlYW0mIGRhdGFGaWxlKCk7Cgogdm9p
ZCBkYXRhTG9nRlYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0KSBfX2F0dHJpYnV0ZV9fKChf
X2Zvcm1hdF9fKHByaW50ZiwgMSwgMCkpKTsKIHZvaWQgZGF0YUxvZ0YoY29uc3QgY2hhciogZm9y
bWF0LCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAxLCAyKSkpOwogdm9p
ZCBkYXRhTG9nRlN0cmluZyhjb25zdCBjaGFyKik7Cgp0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBl
cz4Kdm9pZCBkYXRhTG9nKGNvbnN0IFR5cGVzJi4uLiB2YWx1ZXMpCnsKICAgIGRhdGFGaWxlKCku
cHJpbnQodmFsdWVzLi4uKTsKfQoKfQoKdXNpbmcgV1RGOjpkYXRhTG9nOwp1c2luZyBXVEY6OmRh
dGFMb2dGOwp1c2luZyBXVEY6OmRhdGFMb2dGU3RyaW5nOwojIDMzICIuLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIiAyCiMgNDQgIi4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmgiCiNkZWZpbmUgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihwdHIpIEFTU0VSVChyZWludGVy
cHJldF9jYXN0PGludHB0cl90PihwdHIpICYgfjEpCgojZGVmaW5lIEFTU0VSVF9WQUxJRF9DT0RF
X09GRlNFVChvZmZzZXQpIEFTU0VSVCghKG9mZnNldCAmIDEpKQojIDY0ICIuLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgojZGVmaW5l
IENBTExJTkdfQ09OVkVOVElPTl9JU19TVERDQUxMIDAKIyA3NyAiLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKI2RlZmluZSBIQVNf
RkFTVENBTExfQ0FMTElOR19DT05WRU5USU9OIDAKCgpuYW1lc3BhY2UgSlNDIHsKCgoKCgpjbGFz
cyBGdW5jdGlvblB0ciB7CnB1YmxpYzoKICAgIEZ1bmN0aW9uUHRyKCkKICAgICAgICA6IG1fdmFs
dWUoMCkKICAgIHsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSByZXR1cm5UeXBlPgogICAg
RnVuY3Rpb25QdHIocmV0dXJuVHlwZSgqdmFsdWUpKCkpCiAgICAgICAgOiBtX3ZhbHVlKCh2b2lk
Kil2YWx1ZSkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgcmV0dXJuVHlwZSwgdHlwZW5hbWUgYXJnVHlwZTE+CiAgICBGdW5jdGlvblB0cihyZXR1
cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEpKQogICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUp
CiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIHJl
dHVyblR5cGUsIHR5cGVuYW1lIGFyZ1R5cGUxLCB0eXBlbmFtZSBhcmdUeXBlMj4KICAgIEZ1bmN0
aW9uUHRyKHJldHVyblR5cGUoKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIpKQogICAgICAgIDog
bV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgfQoKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIHJldHVyblR5cGUsIHR5cGVuYW1lIGFyZ1R5cGUxLCB0eXBlbmFt
ZSBhcmdUeXBlMiwgdHlwZW5hbWUgYXJnVHlwZTM+CiAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBl
KCp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMykpCiAgICAgICAgOiBtX3ZhbHVl
KCh2b2lkKil2YWx1ZSkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICB9CgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgcmV0dXJuVHlwZSwgdHlwZW5hbWUgYXJnVHlwZTEsIHR5cGVuYW1lIGFyZ1R5
cGUyLCB0eXBlbmFtZSBhcmdUeXBlMywgdHlwZW5hbWUgYXJnVHlwZTQ+CiAgICBGdW5jdGlvblB0
cihyZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlw
ZTQpKQogICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICB7CiAgICAgICAgKCh2b2lk
KTApOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIHJldHVyblR5cGUsIHR5cGVuYW1lIGFy
Z1R5cGUxLCB0eXBlbmFtZSBhcmdUeXBlMiwgdHlwZW5hbWUgYXJnVHlwZTMsIHR5cGVuYW1lIGFy
Z1R5cGU0LCB0eXBlbmFtZSBhcmdUeXBlNT4KICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZh
bHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFyZ1R5cGUzLCBhcmdUeXBlNCwgYXJnVHlwZTUpKQog
ICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwog
ICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIHJldHVyblR5cGUsIHR5cGVuYW1lIGFyZ1R5cGUx
LCB0eXBlbmFtZSBhcmdUeXBlMiwgdHlwZW5hbWUgYXJnVHlwZTMsIHR5cGVuYW1lIGFyZ1R5cGU0
LCB0eXBlbmFtZSBhcmdUeXBlNSwgdHlwZW5hbWUgYXJnVHlwZTY+CiAgICBGdW5jdGlvblB0cihy
ZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQs
IGFyZ1R5cGU1LCBhcmdUeXBlNikpCiAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAg
IHsKICAgICAgICAoKHZvaWQpMCk7CiAgICB9CiMgMjE5ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rpb25UeXBlPgogICAgZXhwbGljaXQgRnVuY3Rpb25QdHIoRnVuY3Rpb25UeXBl
KiB2YWx1ZSkKCgoKICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgewogICAgICAg
ICgodm9pZCkwKTsKICAgIH0KCiAgICB2b2lkKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFs
dWU7IH0KICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZTsgfQoKCnByaXZhdGU6CiAgICB2b2lkKiBtX3ZhbHVlOwp9OwoKCgoKCgoKY2xhc3MgUmV0dXJu
QWRkcmVzc1B0ciB7CnB1YmxpYzoKICAgIFJldHVybkFkZHJlc3NQdHIoKQogICAgICAgIDogbV92
YWx1ZSgwKQogICAgewogICAgfQoKICAgIGV4cGxpY2l0IFJldHVybkFkZHJlc3NQdHIodm9pZCog
dmFsdWUpCiAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgewogICAgICAgICgodm9pZCkwKTsK
ICAgIH0KCiAgICBleHBsaWNpdCBSZXR1cm5BZGRyZXNzUHRyKEZ1bmN0aW9uUHRyIGZ1bmN0aW9u
KQogICAgICAgIDogbV92YWx1ZShmdW5jdGlvbi52YWx1ZSgpKQogICAgewogICAgICAgICgodm9p
ZCkwKTsKICAgIH0KCiAgICB2b2lkKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0K
CiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgIHsKICAgICAgICBvdXQu
cHJpbnQoUmF3UG9pbnRlcihtX3ZhbHVlKSk7CiAgICB9Cgpwcml2YXRlOgogICAgdm9pZCogbV92
YWx1ZTsKfTsKCgoKCmNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB7CnB1YmxpYzoKICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cigpCiAgICAgICAgOiBtX3ZhbHVlKDApCiAgICB7CiAgICB9Cgog
ICAgZXhwbGljaXQgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKHZvaWQqIHZhbHVlKQoKCiAgICAgICAg
OiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHZhbHVlKSArIDEpCgoKCiAgICB7CiAg
ICAgICAgKCh2b2lkKTApOwogICAgfQoKICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHZvaWQqIHZhbHVlKQogICAgewogICAgICAgICgo
dm9pZCkwKTsKICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0OwogICAgICAgIHJl
c3VsdC5tX3ZhbHVlID0gdmFsdWU7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNyZWF0ZUxMSW50Q29kZVB0cihPcGNvZGVJRCBj
b2RlSWQpCiAgICB7CiAgICAgICAgcmV0dXJuIGNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhM
TEludDo6Z2V0Q29kZVB0cihjb2RlSWQpKTsKICAgIH0KCiAgICBleHBsaWNpdCBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoUmV0dXJuQWRkcmVzc1B0ciByYSkKICAgICAgICA6IG1fdmFsdWUocmEudmFs
dWUoKSkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICB9CgogICAgdm9pZCogZXhlY3V0YWJs
ZUFkZHJlc3MoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CgoKICAgIHZvaWQqIGRhdGFMb2Nh
dGlvbigpIGNvbnN0IHsgKCh2b2lkKTApOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
bV92YWx1ZSkgLSAxOyB9CgoKCgogICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWU7IH0KCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyJiBvdGhlcikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV92YWx1ZSA9PSBv
dGhlci5tX3ZhbHVlOwogICAgfQoKICAgIHZvaWQgZHVtcFdpdGhOYW1lKGNvbnN0IGNoYXIqIG5h
bWUsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICB7CiAgICAgICAgaWYgKCFtX3ZhbHVlKSB7
CiAgICAgICAgICAgIG91dC5wcmludChuYW1lLCAiKG51bGwpIik7CiAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICB9CiAgICAgICAgaWYgKGV4ZWN1dGFibGVBZGRyZXNzKCkgPT0gZGF0YUxvY2F0
aW9uKCkpIHsKICAgICAgICAgICAgb3V0LnByaW50KG5hbWUsICIoIiwgUmF3UG9pbnRlcihleGVj
dXRhYmxlQWRkcmVzcygpKSwgIikiKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAg
ICAgICBvdXQucHJpbnQobmFtZSwgIihleGVjdXRhYmxlID0gIiwgUmF3UG9pbnRlcihleGVjdXRh
YmxlQWRkcmVzcygpKSwgIiwgZGF0YUxvY2F0aW9uID0gIiwgUmF3UG9pbnRlcihkYXRhTG9jYXRp
b24oKSksICIpIik7CiAgICB9CgogICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CiAgICB7CiAgICAgICAgZHVtcFdpdGhOYW1lKCJDb2RlUHRyIiwgb3V0KTsKICAgIH0KCiAgICBl
bnVtIEVtcHR5VmFsdWVUYWcgeyBFbXB0eVZhbHVlIH07CiAgICBlbnVtIERlbGV0ZWRWYWx1ZVRh
ZyB7IERlbGV0ZWRWYWx1ZSB9OwoKICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cihFbXB0eVZhbHVl
VGFnKQogICAgICAgIDogbV92YWx1ZShlbXB0eVZhbHVlKCkpCiAgICB7CiAgICB9CgogICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKERlbGV0ZWRWYWx1ZVRhZykKICAgICAgICA6IG1fdmFsdWUoZGVs
ZXRlZFZhbHVlKCkpCiAgICB7CiAgICB9CgogICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlID09IGVtcHR5VmFsdWUoKTsgfQogICAgYm9vbCBpc0RlbGV0ZWRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gZGVsZXRlZFZhbHVlKCk7IH0KCiAgICB1bnNp
Z25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gUHRySGFzaDx2b2lkKj46Omhhc2gobV92YWx1ZSk7
IH0KCnByaXZhdGU6CiAgICBzdGF0aWMgdm9pZCogZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIGJpdHdp
c2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEpKTsgfQogICAgc3RhdGljIHZv
aWQqIGRlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KDIpKTsgfQoKICAgIHZvaWQqIG1fdmFsdWU7Cn07CgpzdHJ1Y3QgTWFjcm9B
c3NlbWJsZXJDb2RlUHRySGFzaCB7CiAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHImIHB0cikgeyByZXR1cm4gcHRyLmhhc2goKTsgfQogICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhLCBjb25zdCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHImIGIpCiAgICB7CiAgICAgICAgcmV0dXJuIGEgPT0gYjsKICAgIH0KICAg
IHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsK
fTsKCgoKCgoKY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHsKcHJpdmF0ZToKCgogICAgZXhw
bGljaXQgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRy
KQogICAgICAgIDogbV9jb2RlUHRyKGNvZGVQdHIpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwog
ICAgfQoKcHVibGljOgogICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmKCkKICAgIHsKICAgIH0KCiAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYoUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxl
PiBleGVjdXRhYmxlTWVtb3J5KQogICAgICAgIDogbV9jb2RlUHRyKGV4ZWN1dGFibGVNZW1vcnkt
PnN0YXJ0KCkpCiAgICAgICAgLCBtX2V4ZWN1dGFibGVNZW1vcnkoZXhlY3V0YWJsZU1lbW9yeSkK
ICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9p
ZCkwKTsKICAgIH0KCgoKCiAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNyZWF0ZVNl
bGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cikKICAgIHsKICAg
ICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmKGNvZGVQdHIpOwogICAgfQoKCiAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNyZWF0ZUxMSW50Q29kZVJlZihPcGNvZGVJRCBj
b2RlSWQpCiAgICB7CiAgICAgICAgcmV0dXJuIGNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNy
b0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhMTEludDo6Z2V0
Q29kZVB0cihjb2RlSWQpKSk7CiAgICB9CgogICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSogZXhl
Y3V0YWJsZU1lbW9yeSgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fZXhlY3V0YWJsZU1l
bW9yeS5nZXQoKTsKICAgIH0KCiAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZSgpIGNvbnN0
CiAgICB7CiAgICAgICAgcmV0dXJuIG1fY29kZVB0cjsKICAgIH0KCiAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0CiAgICB7CiAgICAgICAgaWYgKCFtX2V4ZWN1dGFibGVNZW1vcnkpCiAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgIHJldHVybiBtX2V4ZWN1dGFibGVNZW1vcnktPnNpemVJbkJ5dGVz
KCk7CiAgICB9CgogICAgYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IGNoYXIqIHByZWZpeCkg
Y29uc3QKICAgIHsKICAgICAgICByZXR1cm4gSlNDOjp0cnlUb0Rpc2Fzc2VtYmxlKG1fY29kZVB0
ciwgc2l6ZSgpLCBwcmVmaXgsIFdURjo6ZGF0YUZpbGUoKSk7CiAgICB9CgogICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jb2RlUHRyOyB9CgogICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICB7CiAgICAgICAgbV9jb2RlUHRyLmR1bXBX
aXRoTmFtZSgiQ29kZVJlZiIsIG91dCk7CiAgICB9Cgpwcml2YXRlOgogICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIG1fY29kZVB0cjsKICAgIFJlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBt
X2V4ZWN1dGFibGVNZW1vcnk7Cn07Cgp9CgpuYW1lc3BhY2UgV1RGIHsKCnRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
SlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI+IHsKICAgIHR5cGVkZWYgSlNDOjpNYWNyb0Fzc2Vt
YmxlckNvZGVQdHJIYXNoIEhhc2g7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFz
aFRyYWl0czsKdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6Ok1hY3JvQXNzZW1ibGVy
Q29kZVB0cj4gOiBwdWJsaWMgQ3VzdG9tSGFzaFRyYWl0czxKU0M6Ok1hY3JvQXNzZW1ibGVyQ29k
ZVB0cj4geyB9OwoKfQojIDMwICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQWJzdHJhY3RQQy5oIiAyCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIFZNOwpjbGFzcyBFeGVj
U3RhdGU7CnN0cnVjdCBJbnN0cnVjdGlvbjsKCmNsYXNzIEFic3RyYWN0UEMgewpwdWJsaWM6CiAg
ICBBYnN0cmFjdFBDKCkKICAgICAgICA6IG1fcG9pbnRlcigwKQogICAgICAgICwgbV9tb2RlKE5v
bmUpCiAgICB7CiAgICB9CgogICAgQWJzdHJhY3RQQyhWTSYsIEV4ZWNTdGF0ZSopOwoKCiAgICBB
YnN0cmFjdFBDKFJldHVybkFkZHJlc3NQdHIgcHRyKQogICAgICAgIDogbV9wb2ludGVyKHB0ci52
YWx1ZSgpKQogICAgICAgICwgbV9tb2RlKEpJVCkKICAgIHsKICAgIH0KCiAgICBib29sIGhhc0pJ
VFJldHVybkFkZHJlc3MoKSBjb25zdCB7IHJldHVybiBtX21vZGUgPT0gSklUOyB9CiAgICBSZXR1
cm5BZGRyZXNzUHRyIGppdFJldHVybkFkZHJlc3MoKSBjb25zdAogICAgewogICAgICAgICgodm9p
ZCkwKTsKICAgICAgICByZXR1cm4gUmV0dXJuQWRkcmVzc1B0cihtX3BvaW50ZXIpOwogICAgfQoK
CiAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlICE9IE5vbmU7IH0KICAgIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KCnByaXZhdGU6CiAgICB2
b2lkKiBtX3BvaW50ZXI7CgogICAgZW51bSBNb2RlIHsgTm9uZSwgSklULCBJbnRlcnByZXRlciB9
OwogICAgTW9kZSBtX21vZGU7Cn07Cgp9CiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgiIDEKIyAzMCAiLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaCIKI2RlZmluZSBKU1N0YWNrX2ggCgoKIyAxICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaCIgMQojIDMw
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaCIKI2Rl
ZmluZSBSZWdpc3Rlcl9oIAoKCgoKCm5hbWVzcGFjZSBKU0MgewoKICAgIGNsYXNzIENvZGVCbG9j
azsKICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgIGNsYXNzIEpTTGV4aWNhbEVudmlyb25tZW50Owog
ICAgY2xhc3MgSlNPYmplY3Q7CiAgICBjbGFzcyBKU1Njb3BlOwoKICAgIHR5cGVkZWYgRXhlY1N0
YXRlIENhbGxGcmFtZTsKCiAgICBjbGFzcyBSZWdpc3RlciB7CiAgICAgICAgcHVibGljOiB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJh
dG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQg
b3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXpl
KTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHAp
OyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9u
KSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHByaXZhdGU6IHR5cGVkZWYgaW50IF9f
dGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87CiAgICBwdWJsaWM6CiAg
ICAgICAgUmVnaXN0ZXIoKTsKCiAgICAgICAgUmVnaXN0ZXIoY29uc3QgSlNWYWx1ZSYpOwogICAg
ICAgIFJlZ2lzdGVyJiBvcGVyYXRvcj0oY29uc3QgSlNWYWx1ZSYpOwogICAgICAgIEpTVmFsdWUg
anNWYWx1ZSgpIGNvbnN0OwogICAgICAgIEpTVmFsdWUgYXNhblVuc2FmZUpTVmFsdWUoKSBjb25z
dDsKICAgICAgICBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSlNWYWx1ZSgpIGNvbnN0OwoKICAgICAg
ICBSZWdpc3RlciYgb3BlcmF0b3I9KENhbGxGcmFtZSopOwogICAgICAgIFJlZ2lzdGVyJiBvcGVy
YXRvcj0oQ29kZUJsb2NrKik7CiAgICAgICAgUmVnaXN0ZXImIG9wZXJhdG9yPShKU1Njb3BlKik7
CiAgICAgICAgUmVnaXN0ZXImIG9wZXJhdG9yPShKU09iamVjdCopOwoKICAgICAgICBpbnQzMl90
IGkoKSBjb25zdDsKICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSgpIGNvbnN0OwogICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3Q7CiAgICAgICAgQ29kZUJsb2NrKiBhc2FuVW5z
YWZlQ29kZUJsb2NrKCkgY29uc3Q7CiAgICAgICAgSlNPYmplY3QqIG9iamVjdCgpIGNvbnN0Owog
ICAgICAgIEpTU2NvcGUqIHNjb3BlKCkgY29uc3Q7CiAgICAgICAgaW50MzJfdCB1bmJveGVkSW50
MzIoKSBjb25zdDsKICAgICAgICBpbnQ2NF90IHVuYm94ZWRJbnQ1MigpIGNvbnN0OwogICAgICAg
IGludDY0X3QgdW5ib3hlZFN0cmljdEludDUyKCkgY29uc3Q7CiAgICAgICAgYm9vbCB1bmJveGVk
Qm9vbGVhbigpIGNvbnN0OwogICAgICAgIGRvdWJsZSB1bmJveGVkRG91YmxlKCkgY29uc3Q7CiAg
ICAgICAgSlNDZWxsKiB1bmJveGVkQ2VsbCgpIGNvbnN0OwogICAgICAgIGludDMyX3QgcGF5bG9h
ZCgpIGNvbnN0OwogICAgICAgIGludDMyX3QgdGFnKCkgY29uc3Q7CiAgICAgICAgaW50MzJfdCB1
bnNhZmVUYWcoKSBjb25zdDsKICAgICAgICBpbnQzMl90JiBwYXlsb2FkKCk7CiAgICAgICAgaW50
MzJfdCYgdGFnKCk7CgogICAgICAgIHN0YXRpYyBSZWdpc3RlciB3aXRoSW50KGludDMyX3QgaSkK
ICAgICAgICB7CiAgICAgICAgICAgIFJlZ2lzdGVyIHIgPSBqc051bWJlcihpKTsKICAgICAgICAg
ICAgcmV0dXJuIHI7CiAgICAgICAgfQoKICAgIHByaXZhdGU6CiAgICAgICAgdW5pb24gewogICAg
ICAgICAgICBFbmNvZGVkSlNWYWx1ZSB2YWx1ZTsKICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWU7CiAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrOwogICAgICAgICAgICBFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yIGVuY29kZWRWYWx1ZTsKICAgICAgICAgICAgZG91YmxlIG51bWJl
cjsKICAgICAgICAgICAgaW50NjRfdCBpbnRlZ2VyOwogICAgICAgIH0gdTsKICAgIH07CgogICAg
aW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgUmVnaXN0ZXI6OlJlZ2lz
dGVyKCkKICAgIHsKCgoKICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18pKSBSZWdpc3Rlcjo6UmVnaXN0ZXIoY29uc3QgSlNWYWx1ZSYgdikKICAgIHsKICAg
ICAgICB1LnZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHYpOwogICAgfQoKICAgIGlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIFJlZ2lzdGVyJiBSZWdpc3Rlcjo6b3BlcmF0
b3I9KGNvbnN0IEpTVmFsdWUmIHYpCiAgICB7CiAgICAgICAgdS52YWx1ZSA9IEpTVmFsdWU6OmVu
Y29kZSh2KTsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgoKICAgIGlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIEpTVmFsdWUgUmVnaXN0ZXI6OmFzYW5VbnNhZmVK
U1ZhbHVlKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHUudmFs
dWUpOwogICAgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp
IEpTVmFsdWUgUmVnaXN0ZXI6OmpzVmFsdWUoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBK
U1ZhbHVlOjpkZWNvZGUodS52YWx1ZSk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fKSkgRW5jb2RlZEpTVmFsdWUgUmVnaXN0ZXI6OmVuY29kZWRKU1Zh
bHVlKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gdS52YWx1ZTsKICAgIH0KCgoKICAgIGlu
bGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIFJlZ2lzdGVyJiBSZWdpc3Rl
cjo6b3BlcmF0b3I9KENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgewogICAgICAgIHUuY2FsbEZy
YW1lID0gY2FsbEZyYW1lOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICBpbmxpbmUg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBSZWdpc3RlciYgUmVnaXN0ZXI6Om9w
ZXJhdG9yPShDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgIHsKICAgICAgICB1LmNvZGVCbG9jayA9
IGNvZGVCbG9jazsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgaW5saW5lIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50MzJfdCBSZWdpc3Rlcjo6aSgpIGNvbnN0
CiAgICB7CiAgICAgICAgcmV0dXJuIGpzVmFsdWUoKS5hc0ludDMyKCk7CiAgICB9CgogICAgaW5s
aW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgQ2FsbEZyYW1lKiBSZWdpc3Rl
cjo6Y2FsbEZyYW1lKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gdS5jYWxsRnJhbWU7CiAg
ICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgQ29kZUJs
b2NrKiBSZWdpc3Rlcjo6Y29kZUJsb2NrKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gdS5j
b2RlQmxvY2s7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fKSkgQ29kZUJsb2NrKiBSZWdpc3Rlcjo6YXNhblVuc2FmZUNvZGVCbG9jaygpIGNvbnN0CiAg
ICB7CiAgICAgICAgcmV0dXJuIHUuY29kZUJsb2NrOwogICAgfQoKICAgIGlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludDMyX3QgUmVnaXN0ZXI6OnVuYm94ZWRJbnQz
MigpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHBheWxvYWQoKTsKICAgIH0KCiAgICBpbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQ2NF90IFJlZ2lzdGVyOjp1
bmJveGVkSW50NTIoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiB1LmludGVnZXIgPj4gSlNW
YWx1ZTo6aW50NTJTaGlmdEFtb3VudDsKICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18pKSBpbnQ2NF90IFJlZ2lzdGVyOjp1bmJveGVkU3RyaWN0SW50NTIo
KSBjb25zdAogICAgewogICAgICAgIHJldHVybiB1LmludGVnZXI7CiAgICB9CgogICAgaW5saW5l
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBSZWdpc3Rlcjo6dW5ib3hl
ZEJvb2xlYW4oKSBjb25zdAogICAgewogICAgICAgIHJldHVybiAhIXBheWxvYWQoKTsKICAgIH0K
CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBkb3VibGUgUmVn
aXN0ZXI6OnVuYm94ZWREb3VibGUoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiB1Lm51bWJl
cjsKICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBK
U0NlbGwqIFJlZ2lzdGVyOjp1bmJveGVkQ2VsbCgpIGNvbnN0CiAgICB7CgoKCiAgICAgICAgcmV0
dXJuIGJpdHdpc2VfY2FzdDxKU0NlbGwqPihwYXlsb2FkKCkpOwoKICAgIH0KCiAgICBpbmxpbmUg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQzMl90IFJlZ2lzdGVyOjpwYXls
b2FkKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gdS5lbmNvZGVkVmFsdWUuYXNCaXRzLnBh
eWxvYWQ7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
KSkgaW50MzJfdCBSZWdpc3Rlcjo6dGFnKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gdS5l
bmNvZGVkVmFsdWUuYXNCaXRzLnRhZzsKICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18pKSBpbnQzMl90IFJlZ2lzdGVyOjp1bnNhZmVUYWcoKSBjb25zdAog
ICAgewogICAgICAgIHJldHVybiB1LmVuY29kZWRWYWx1ZS5hc0JpdHMudGFnOwogICAgfQoKICAg
IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludDMyX3QmIFJlZ2lz
dGVyOjpwYXlsb2FkKCkKICAgIHsKICAgICAgICByZXR1cm4gdS5lbmNvZGVkVmFsdWUuYXNCaXRz
LnBheWxvYWQ7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fKSkgaW50MzJfdCYgUmVnaXN0ZXI6OnRhZygpCiAgICB7CiAgICAgICAgcmV0dXJuIHUuZW5j
b2RlZFZhbHVlLmFzQml0cy50YWc7CiAgICB9Cgp9CgpuYW1lc3BhY2UgV1RGIHsKCiAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBWZWN0b3JUcmFpdHM8SlNDOjpSZWdpc3Rlcj4gOiBWZWN0b3JUcmFpdHNC
YXNlPHRydWUsIEpTQzo6UmVnaXN0ZXI+IHsgfTsKCn0KIyAzNCAiLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaCIgMgoKIyAxICIuLi8uLi9Tb3VyY2UvV1RG
L3d0Zi9QYWdlUmVzZXJ2YXRpb24uaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9QYWdl
UmVzZXJ2YXRpb24uaCIKI2RlZmluZSBQYWdlUmVzZXJ2YXRpb25faCAKCgoKbmFtZXNwYWNlIFdU
RiB7CiMgNTcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oIgpjbGFzcyBQ
YWdlUmVzZXJ2YXRpb24gOiBwcml2YXRlIFBhZ2VCbG9jayB7CnB1YmxpYzoKICAgIFBhZ2VSZXNl
cnZhdGlvbigpCiAgICAgICAgOiBtX2NvbW1pdHRlZCgwKQogICAgICAgICwgbV93cml0YWJsZShm
YWxzZSkKICAgICAgICAsIG1fZXhlY3V0YWJsZShmYWxzZSkKICAgIHsKICAgIH0KCiAgICB1c2lu
ZyBQYWdlQmxvY2s6OmJhc2U7CiAgICB1c2luZyBQYWdlQmxvY2s6OnNpemU7CiAgICB1c2luZyBQ
YWdlQmxvY2s6Om9wZXJhdG9yIGJvb2w7CgogICAgdm9pZCBjb21taXQodm9pZCogc3RhcnQsIHNp
emVfdCBzaXplKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAg
ICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgbV9jb21taXR0ZWQg
Kz0gc2l6ZTsKICAgICAgICBPU0FsbG9jYXRvcjo6Y29tbWl0KHN0YXJ0LCBzaXplLCBtX3dyaXRh
YmxlLCBtX2V4ZWN1dGFibGUpOwogICAgfQoKICAgIHZvaWQgZGVjb21taXQodm9pZCogc3RhcnQs
IHNpemVfdCBzaXplKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7
CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgbV9jb21taXR0
ZWQgLT0gc2l6ZTsKICAgICAgICBPU0FsbG9jYXRvcjo6ZGVjb21taXQoc3RhcnQsIHNpemUpOwog
ICAgfQoKICAgIHNpemVfdCBjb21taXR0ZWQoKQogICAgewogICAgICAgIHJldHVybiBtX2NvbW1p
dHRlZDsKICAgIH0KCiAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9uIHJlc2VydmUoc2l6ZV90IHNp
emUsIE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNhZ2Us
IGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSkKICAgIHsKICAg
ICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRv
cjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSks
IHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBmYWxzZSk7CiAgICB9CgogICAgc3RhdGljIFBh
Z2VSZXNlcnZhdGlvbiByZXNlcnZlV2l0aEd1YXJkUGFnZXMoc2l6ZV90IHNpemUsIE9TQWxsb2Nh
dG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFi
bGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSkKICAgIHsKICAgICAgICAoKHZvaWQp
MCk7CiAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVu
Y29tbWl0dGVkKHNpemUgKyBwYWdlU2l6ZSgpICogMiwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRh
YmxlLCB0cnVlKSwgc2l6ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIHRydWUpOwogICAgfQoKICAg
IHZvaWQgZGVhbGxvY2F0ZSgpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwoKCgogICAgICAgIFBh
Z2VSZXNlcnZhdGlvbiB0bXA7CiAgICAgICAgc3RkOjpzd2FwKHRtcCwgKnRoaXMpOwoKICAgICAg
ICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICBPU0FsbG9jYXRvcjo6cmVs
ZWFzZURlY29tbWl0dGVkKHRtcC5iYXNlKCksIHRtcC5zaXplKCkpOwogICAgfQoKcHJpdmF0ZToK
ICAgIFBhZ2VSZXNlcnZhdGlvbih2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSwgYm9vbCB3cml0YWJs
ZSwgYm9vbCBleGVjdXRhYmxlLCBib29sIGhhc0d1YXJkUGFnZXMpCiAgICAgICAgOiBQYWdlQmxv
Y2soYmFzZSwgc2l6ZSwgaGFzR3VhcmRQYWdlcykKICAgICAgICAsIG1fY29tbWl0dGVkKDApCiAg
ICAgICAgLCBtX3dyaXRhYmxlKHdyaXRhYmxlKQogICAgICAgICwgbV9leGVjdXRhYmxlKGV4ZWN1
dGFibGUpCiAgICB7CiAgICB9CgogICAgc2l6ZV90IG1fY29tbWl0dGVkOwogICAgYm9vbCBtX3dy
aXRhYmxlOwogICAgYm9vbCBtX2V4ZWN1dGFibGU7Cn07Cgp9Cgp1c2luZyBXVEY6OlBhZ2VSZXNl
cnZhdGlvbjsKIyAzNiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pT
U3RhY2suaCIgMgoKCm5hbWVzcGFjZSBKU0MgewoKICAgIGNsYXNzIENvZGVCbG9ja1NldDsKICAg
IGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwogICAgY2xhc3MgRXhlY1N0YXRlOwogICAgY2xhc3Mg
SklUU3R1YlJvdXRpbmVTZXQ7CiAgICBjbGFzcyBWTTsKICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKCiAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAgICB0eXBlZGVmIEV4ZWNTdGF0ZSBD
YWxsRnJhbWU7CgogICAgc3RydWN0IENhbGxlckZyYW1lQW5kUEMgewogICAgICAgIENhbGxGcmFt
ZSogY2FsbGVyRnJhbWU7CiAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjOwogICAgfTsKCiAgICBjbGFz
cyBKU1N0YWNrIHsKICAgICAgICBwcml2YXRlOiBKU1N0YWNrKGNvbnN0IEpTU3RhY2smKSA9IGRl
bGV0ZTsgSlNTdGFjayYgb3BlcmF0b3I9KGNvbnN0IEpTU3RhY2smKSA9IGRlbGV0ZTs7CiAgICBw
dWJsaWM6CiAgICAgICAgZW51bSBDYWxsRnJhbWVIZWFkZXJFbnRyeSB7CiAgICAgICAgICAgIENh
bGxlckZyYW1lQW5kUENTaXplID0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpIC8gc2l6ZW9mKFJl
Z2lzdGVyKSwKICAgICAgICAgICAgQ29kZUJsb2NrID0gQ2FsbGVyRnJhbWVBbmRQQ1NpemUsCiAg
ICAgICAgICAgIENhbGxlZSwKICAgICAgICAgICAgQXJndW1lbnRDb3VudCwKICAgICAgICAgICAg
Q2FsbEZyYW1lSGVhZGVyU2l6ZSwKCgogICAgICAgICAgICBUaGlzQXJndW1lbnQgPSBDYWxsRnJh
bWVIZWFkZXJTaXplLAogICAgICAgICAgICBGaXJzdEFyZ3VtZW50LAogICAgICAgIH07CgoKICAg
ICAgICBzdGF0aWMgY29uc3QgcHRyZGlmZl90IG1heEV4Y2Vzc0NhcGFjaXR5ID0gOCAqIDEwMjQ7
CgogICAgICAgIEpTU3RhY2soVk0mKTsKCiAgICAgICAgYm9vbCBlbnN1cmVDYXBhY2l0eUZvcihS
ZWdpc3RlciogbmV3VG9wT2ZTdGFjayk7CgogICAgICAgIGJvb2wgY29udGFpbnNBZGRyZXNzKFJl
Z2lzdGVyKiBhZGRyZXNzKSB7IHJldHVybiAobG93QWRkcmVzcygpIDw9IGFkZHJlc3MgJiYgYWRk
cmVzcyA8IGhpZ2hBZGRyZXNzKCkpOyB9CiAgICAgICAgc3RhdGljIHNpemVfdCBjb21taXR0ZWRC
eXRlQ291bnQoKTsKCgogICAgICAgIHZvaWQgZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2Vy
dmF0aXZlUm9vdHMmLCBKSVRTdHViUm91dGluZVNldCYsIENvZGVCbG9ja1NldCYpIHsgfQogICAg
ICAgIHZvaWQgc2FuaXRpemVTdGFjaygpIHsgfQojIDEwMSAiLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaCIKICAgIHByaXZhdGU6CiMgMTE0ICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5oIgogICAgICAgIFJlZ2lz
dGVyKiBsb3dBZGRyZXNzKCkgY29uc3Q7CiAgICAgICAgUmVnaXN0ZXIqIGhpZ2hBZGRyZXNzKCkg
Y29uc3Q7CiMgMTM2ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNT
dGFjay5oIgogICAgICAgIFZNJiBtX3ZtOwogICAgICAgIENhbGxGcmFtZSomIG1fdG9wQ2FsbEZy
YW1lOwojIDE0NiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3Rh
Y2suaCIKICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgfTsK
Cn0KIyAyOCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5oIiAyCgoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3Rh
Y2tWaXNpdG9yLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1N0YWNrVmlzaXRvci5oIgojZGVmaW5lIFN0YWNrVmlzaXRvcl9oIAoKIyAxICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5oIiAxCiMgMjcg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUVudHJ5UmVjb3JkLmgi
CiNkZWZpbmUgVk1FbnRyeVJlY29yZF9oIAoKbmFtZXNwYWNlIEpTQyB7Cgp0eXBlZGVmIHZvaWQg
Vk1FbnRyeUZyYW1lOwoKY2xhc3MgRXhlY1N0YXRlOwpjbGFzcyBWTTsKCnN0cnVjdCBWTUVudHJ5
UmVjb3JkIHsKCgoKCiAgICBWTSogbV92bTsKICAgIEV4ZWNTdGF0ZSogbV9wcmV2VG9wQ2FsbEZy
YW1lOwogICAgVk1FbnRyeUZyYW1lKiBtX3ByZXZUb3BWTUVudHJ5RnJhbWU7CgogICAgRXhlY1N0
YXRlKiBwcmV2VG9wQ2FsbEZyYW1lKCkgeyByZXR1cm4gbV9wcmV2VG9wQ2FsbEZyYW1lOyB9CiAg
ICBFeGVjU3RhdGUqIHVuc2FmZVByZXZUb3BDYWxsRnJhbWUoKSB7IHJldHVybiBtX3ByZXZUb3BD
YWxsRnJhbWU7IH0KCiAgICBWTUVudHJ5RnJhbWUqIHByZXZUb3BWTUVudHJ5RnJhbWUoKSB7IHJl
dHVybiBtX3ByZXZUb3BWTUVudHJ5RnJhbWU7IH0KICAgIFZNRW50cnlGcmFtZSogdW5zYWZlUHJl
dlRvcFZNRW50cnlGcmFtZSgpIHsgcmV0dXJuIG1fcHJldlRvcFZNRW50cnlGcmFtZTsgfQp9OwoK
ZXh0ZXJuICJDIiBWTUVudHJ5UmVjb3JkKiB2bUVudHJ5UmVjb3JkKFZNRW50cnlGcmFtZSopOwoK
fQojIDMwICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIiAxCiMg
MjMgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgiCiNkZWZpbmUgV1RGU3Ry
aW5nX2ggCgoKCgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlGYXN0UGF0aC5o
IiAxCiMgMjMgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlGYXN0UGF0aC5oIgojZGVm
aW5lIEFTQ0lJRmFzdFBhdGhfaCAKCgojIDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFi
aWhmL3VuaWNvZGUvdXR5cGVzLmgiIDEgMyA0CiMgMzMgIi91c3IvaW5jbHVkZS9hcm0tbGludXgt
Z251ZWFiaWhmL3VuaWNvZGUvdXR5cGVzLmgiIDMgNAojZGVmaW5lIFVUWVBFU19IIAoKCiMgMSAi
L3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91bWFjaGluZS5oIiAxIDMg
NAojIDI0ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VtYWNoaW5l
LmgiIDMgNAojZGVmaW5lIF9fVU1BQ0hJTkVfSF9fIAojIDQ0ICIvdXNyL2luY2x1ZGUvYXJtLWxp
bnV4LWdudWVhYmloZi91bmljb2RlL3VtYWNoaW5lLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvcHR5cGVzLmgiIDEgMyA0CiMgMjYgIi91c3IvaW5j
bHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvcHR5cGVzLmgiIDMgNAojZGVmaW5lIF9Q
VFlQRVNfSCAKIyA0MSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS9w
dHlwZXMuaCIgMyA0CiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLzQuOS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgNDIgIi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvcHR5cGVzLmgiIDIgMyA0CiMgNTAgIi91c3IvaW5j
bHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvcHR5cGVzLmgiIDMgNAojIDEgIi91c3Iv
aW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvcGxhdGZvcm0uaCIgMSAzIDQKIyAy
MCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS9wbGF0Zm9ybS5oIiAz
IDQKI2RlZmluZSBfUExBVEZPUk1fSCAKCiMgMSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVl
YWJpaGYvdW5pY29kZS91Y29uZmlnLmgiIDEgMyA0CiMgMTYgIi91c3IvaW5jbHVkZS9hcm0tbGlu
dXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNvbmZpZy5oIiAzIDQKI2RlZmluZSBfX1VDT05GSUdfSF9f
IAojIDczICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3Vjb25maWcu
aCIgMyA0CiNkZWZpbmUgVV9ERUJVRyAwCgoKCgoKCgojZGVmaW5lIFVDTE5fTk9fQVVUT19DTEVB
TlVQIDEKIyA5MCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y29u
ZmlnLmgiIDMgNAojZGVmaW5lIFVfRElTQUJMRV9SRU5BTUlORyAwCiMgMTA4ICIvdXNyL2luY2x1
ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3Vjb25maWcuaCIgMyA0CiNkZWZpbmUgVV9O
T19ERUZBVUxUX0lOQ0xVREVfVVRGX0hFQURFUlMgMAojIDEyNSAiL3Vzci9pbmNsdWRlL2FybS1s
aW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y29uZmlnLmgiIDMgNAojZGVmaW5lIFVfT1ZFUlJJREVf
Q1hYX0FMTE9DQVRJT04gMQojIDEzNCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYv
dW5pY29kZS91Y29uZmlnLmgiIDMgNAojZGVmaW5lIFVfRU5BQkxFX1RSQUNJTkcgMAojIDE0MyAi
L3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y29uZmlnLmgiIDMgNAoj
ZGVmaW5lIFVfRU5BQkxFX0RZTE9BRCAxCiMgMTUyICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdu
dWVhYmloZi91bmljb2RlL3Vjb25maWcuaCIgMyA0CiNkZWZpbmUgVV9DSEVDS19EWUxPQUQgMQoj
IDE2MiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y29uZmlnLmgi
IDMgNAojZGVmaW5lIFVfREVGQVVMVF9TSE9XX0RSQUZUIDEKIyAxOTAgIi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNvbmZpZy5oIiAzIDQKI2RlZmluZSBVX0xJQl9T
VUZGSVhfQ19OQU1FX1NUUklORyAiIgojIDIwNyAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVl
YWJpaGYvdW5pY29kZS91Y29uZmlnLmgiIDMgNAojZGVmaW5lIFVDT05GSUdfT05MWV9DT0xMQVRJ
T04gMAojIDI0NSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y29u
ZmlnLmgiIDMgNAojZGVmaW5lIFVDT05GSUdfTk9fRklMRV9JTyAwCiMgMjYwICIvdXNyL2luY2x1
ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3Vjb25maWcuaCIgMyA0CiNkZWZpbmUgVUNP
TkZJR19OT19DT05WRVJTSU9OIDAKIyAyODAgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFi
aWhmL3VuaWNvZGUvdWNvbmZpZy5oIiAzIDQKI2RlZmluZSBVQ09ORklHX05PX0xFR0FDWV9DT05W
RVJTSU9OIDAKIyAyOTIgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUv
dWNvbmZpZy5oIiAzIDQKI2RlZmluZSBVQ09ORklHX05PX05PUk1BTElaQVRJT04gMAojIDMxNSAi
L3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y29uZmlnLmgiIDMgNAoj
ZGVmaW5lIFVDT05GSUdfTk9fQlJFQUtfSVRFUkFUSU9OIDAKIyAzMjUgIi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNvbmZpZy5oIiAzIDQKI2RlZmluZSBVQ09ORklH
X05PX0lETkEgMAojIDMzNiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29k
ZS91Y29uZmlnLmgiIDMgNAojZGVmaW5lIFVDT05GSUdfTVNHUEFUX0RFRkFVTFRfQVBPU1RST1BI
RV9NT0RFIFVNU0dQQVRfQVBPU19ET1VCTEVfT1BUSU9OQUwKIyAzNDggIi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNvbmZpZy5oIiAzIDQKI2RlZmluZSBVQ09ORklH
X05PX0NPTExBVElPTiAwCiMgMzU4ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91
bmljb2RlL3Vjb25maWcuaCIgMyA0CiNkZWZpbmUgVUNPTkZJR19OT19GT1JNQVRUSU5HIDAKIyAz
NjggIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNvbmZpZy5oIiAz
IDQKI2RlZmluZSBVQ09ORklHX05PX1RSQU5TTElURVJBVElPTiAwCiMgMzc4ICIvdXNyL2luY2x1
ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3Vjb25maWcuaCIgMyA0CiNkZWZpbmUgVUNP
TkZJR19OT19SRUdVTEFSX0VYUFJFU1NJT05TIDAKIyAzODggIi91c3IvaW5jbHVkZS9hcm0tbGlu
dXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNvbmZpZy5oIiAzIDQKI2RlZmluZSBVQ09ORklHX05PX1NF
UlZJQ0UgMAojIDM5OCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91
Y29uZmlnLmgiIDMgNAojZGVmaW5lIFVDT05GSUdfSEFWRV9QQVJTRUFMTElOUFVUIDEKIyA0MDkg
Ii91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNvbmZpZy5oIiAzIDQK
I2RlZmluZSBVQ09ORklHX0ZPUk1BVF9GQVNUUEFUSFNfNDkgMQojIDIzICIvdXNyL2luY2x1ZGUv
YXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3BsYXRmb3JtLmgiIDIgMyA0CiMgMSAiL3Vzci9p
bmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dmVybnVtLmgiIDEgMyA0CiMgNDcg
Ii91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXZlcm51bS5oIiAzIDQK
I2RlZmluZSBVVkVSTlVNX0ggCgoKCgoKI2RlZmluZSBVX0NPUFlSSUdIVF9TVFJJTkcgIiBDb3B5
cmlnaHQgKEMpIDIwMTMsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRp
b24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gIgoKCgoKCgojZGVmaW5lIFVfSUNV
X1ZFUlNJT05fTUFKT1JfTlVNIDUyCgoKCgoKI2RlZmluZSBVX0lDVV9WRVJTSU9OX01JTk9SX05V
TSAxCgoKCgoKI2RlZmluZSBVX0lDVV9WRVJTSU9OX1BBVENITEVWRUxfTlVNIDAKCgoKCgoKI2Rl
ZmluZSBVX0lDVV9WRVJTSU9OX0JVSUxETEVWRUxfTlVNIDAKCgoKCgoKI2RlZmluZSBVX0lDVV9W
RVJTSU9OX1NVRkZJWCBfNTIKIyAxMTAgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L3VuaWNvZGUvdXZlcm51bS5oIiAzIDQKI2RlZmluZSBVX0RFRl9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHgseSkgeCAjIyB5CiNkZWZpbmUgVV9ERUYyX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUoeCx5
KSBVX0RFRl9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHgseSkKI2RlZmluZSBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUoeCkgVV9ERUYyX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUoeCxVX0lDVV9WRVJT
SU9OX1NVRkZJWCkKIyAxMjEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNv
ZGUvdXZlcm51bS5oIiAzIDQKI2RlZmluZSBVX0lDVV9WRVJTSU9OICI1Mi4xIgoKCgoKCiNkZWZp
bmUgVV9JQ1VfVkVSU0lPTl9TSE9SVCAiNTIiCgoKCgoKI2RlZmluZSBVX0lDVV9EQVRBX1ZFUlNJ
T04gIjUyLjEiCiMgMTQ5ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2Rl
L3V2ZXJudW0uaCIgMyA0CiNkZWZpbmUgVUNPTF9SVU5USU1FX1ZFUlNJT04gNwojIDE1OCAiL3Vz
ci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dmVybnVtLmgiIDMgNAojZGVm
aW5lIFVDT0xfQlVJTERFUl9WRVJTSU9OIDgKCgoKCgoKI2RlZmluZSBVQ09MX1RBSUxPUklOR1Nf
VkVSU0lPTiAxCiMgMjQgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUv
cGxhdGZvcm0uaCIgMiAzIDQKIyA4NyAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYv
dW5pY29kZS9wbGF0Zm9ybS5oIiAzIDQKI2RlZmluZSBVX1BGX1VOS05PV04gMAoKI2RlZmluZSBV
X1BGX1dJTkRPV1MgMTAwMAoKI2RlZmluZSBVX1BGX01JTkdXIDE4MDAKCgoKCgojZGVmaW5lIFVf
UEZfQ1lHV0lOIDE5MDAKCgojZGVmaW5lIFVfUEZfSFBVWCAyMTAwCgojZGVmaW5lIFVfUEZfU09M
QVJJUyAyNjAwCgojZGVmaW5lIFVfUEZfQlNEIDMwMDAKCiNkZWZpbmUgVV9QRl9BSVggMzEwMAoK
I2RlZmluZSBVX1BGX0lSSVggMzIwMAojIDExNyAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVl
YWJpaGYvdW5pY29kZS9wbGF0Zm9ybS5oIiAzIDQKI2RlZmluZSBVX1BGX0RBUldJTiAzNTAwCgoj
ZGVmaW5lIFVfUEZfSVBIT05FIDM1NTAKCiNkZWZpbmUgVV9QRl9RTlggMzcwMAoKI2RlZmluZSBV
X1BGX0xJTlVYIDQwMDAKCiNkZWZpbmUgVV9QRl9BTkRST0lEIDQwNTAKCiNkZWZpbmUgVV9QRl9D
TEFTU0lDX01BQ09TIDgwMDAKCiNkZWZpbmUgVV9QRl9PUzM5MCA5MDAwCgojZGVmaW5lIFVfUEZf
T1M0MDAgOTQwMAojIDE0NiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29k
ZS9wbGF0Zm9ybS5oIiAzIDQKI2RlZmluZSBVX1BMQVRGT1JNIFVfUEZfTElOVVgKIyAyMDggIi91
c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvcGxhdGZvcm0uaCIgMyA0CiNk
ZWZpbmUgVV9QTEFURk9STV9VU0VTX09OTFlfV0lOMzJfQVBJIDAKIyAyMjIgIi91c3IvaW5jbHVk
ZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvcGxhdGZvcm0uaCIgMyA0CiNkZWZpbmUgVV9Q
TEFURk9STV9IQVNfV0lOMzJfQVBJIDAKIyAyMzYgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251
ZWFiaWhmL3VuaWNvZGUvcGxhdGZvcm0uaCIgMyA0CiNkZWZpbmUgVV9QTEFURk9STV9JTVBMRU1F
TlRTX1BPU0lYIDEKIyAyNDcgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNv
ZGUvcGxhdGZvcm0uaCIgMyA0CiNkZWZpbmUgVV9QTEFURk9STV9JU19MSU5VWF9CQVNFRCAxCiMg
MjYyICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3BsYXRmb3JtLmgi
IDMgNAojZGVmaW5lIFVfUExBVEZPUk1fSVNfREFSV0lOX0JBU0VEIDAKIyAyODggIi91c3IvaW5j
bHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvcGxhdGZvcm0uaCIgMyA0CiNkZWZpbmUg
VV9IQVZFX1NURElOVF9IIDEKIyAzMDcgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L3VuaWNvZGUvcGxhdGZvcm0uaCIgMyA0CiNkZWZpbmUgVV9IQVZFX0lOVFRZUEVTX0ggVV9IQVZF
X1NURElOVF9ICiMgMzMyICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2Rl
L3BsYXRmb3JtLmgiIDMgNAojZGVmaW5lIFVfSU9TVFJFQU1fU09VUkNFIDE5OTcxMQojIDM0MyAi
L3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS9wbGF0Zm9ybS5oIiAzIDQK
I2RlZmluZSBVX0hBVkVfU1REX1NUUklORyAxCiMgMzYxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4
LWdudWVhYmloZi91bmljb2RlL3BsYXRmb3JtLmgiIDMgNAojZGVmaW5lIFVfR0NDX01BSk9SX01J
Tk9SIChfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fKQojIDM3NCAiL3Vzci9pbmNsdWRl
L2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS9wbGF0Zm9ybS5oIiAzIDQKI2RlZmluZSBVX0lT
X0JJR19FTkRJQU4gKEJZVEVfT1JERVIgPT0gQklHX0VORElBTikKIyA0MDUgIi91c3IvaW5jbHVk
ZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvcGxhdGZvcm0uaCIgMyA0CiNkZWZpbmUgVV9I
QVZFX1BMQUNFTUVOVF9ORVcgMQojIDQxOSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJp
aGYvdW5pY29kZS9wbGF0Zm9ybS5oIiAzIDQKI2RlZmluZSBVX0hBVkVfREVCVUdfTE9DQVRJT05f
TkVXIDAKCgoKCiNkZWZpbmUgX19oYXNfYXR0cmlidXRlKHgpIDAKIyA0MzMgIi91c3IvaW5jbHVk
ZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvcGxhdGZvcm0uaCIgMyA0CiNkZWZpbmUgVV9N
QUxMT0NfQVRUUiBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpCiMgNDQ0ICIvdXNyL2luY2x1
ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3BsYXRmb3JtLmgiIDMgNAojZGVmaW5lIFVf
QUxMT0NfU0laRV9BVFRSKFgpIF9fYXR0cmlidXRlX18gKChhbGxvY19zaXplKFgpKSkKI2RlZmlu
ZSBVX0FMTE9DX1NJWkVfQVRUUjIoWCxZKSBfX2F0dHJpYnV0ZV9fICgoYWxsb2Nfc2l6ZShYLFkp
KSkKIyA0NjEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvcGxhdGZv
cm0uaCIgMyA0CiNkZWZpbmUgVV9BU0NJSV9GQU1JTFkgMAoKCgoKCiNkZWZpbmUgVV9FQkNESUNf
RkFNSUxZIDEKIyA1MTggIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUv
cGxhdGZvcm0uaCIgMyA0CiNkZWZpbmUgVV9DSEFSU0VUX0ZBTUlMWSBVX0FTQ0lJX0ZBTUlMWQoj
IDU0NiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS9wbGF0Zm9ybS5o
IiAzIDQKI2RlZmluZSBVX0NIQVJTRVRfSVNfVVRGOCAwCiMgNTcxICIvdXNyL2luY2x1ZGUvYXJt
LWxpbnV4LWdudWVhYmloZi91bmljb2RlL3BsYXRmb3JtLmgiIDMgNAojZGVmaW5lIFVfSEFWRV9X
Q0hBUl9IIDEKIyA2MzkgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUv
cGxhdGZvcm0uaCIgMyA0CiNkZWZpbmUgVV9TSVpFT0ZfV0NIQVJfVCA0CgoKCiNkZWZpbmUgVV9I
QVZFX1dDU0NQWSBVX0hBVkVfV0NIQVJfSAojIDY2OCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvdW5pY29kZS9wbGF0Zm9ybS5oIiAzIDQKI2RlZmluZSBVX0hBVkVfQ0hBUjE2X1Qg
MQojIDY4NyAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS9wbGF0Zm9y
bS5oIiAzIDQKI2RlZmluZSBVX0RFQ0xBUkVfVVRGMTYoc3RyaW5nKSB1ICMjIHN0cmluZwojIDcw
NiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS9wbGF0Zm9ybS5oIiAz
IDQKI2RlZmluZSBVX0VYUE9SVCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KQojIDcyNCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS9wbGF0Zm9y
bS5oIiAzIDQKI2RlZmluZSBVX0VYUE9SVDIgCiMgNzMzICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4
LWdudWVhYmloZi91bmljb2RlL3BsYXRmb3JtLmgiIDMgNAojZGVmaW5lIFVfSU1QT1JUIAojIDc1
MCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS9wbGF0Zm9ybS5oIiAz
IDQKI2RlZmluZSBVX0NBTExDT05WIFVfRVhQT1JUMgojIDUxICIvdXNyL2luY2x1ZGUvYXJtLWxp
bnV4LWdudWVhYmloZi91bmljb2RlL3B0eXBlcy5oIiAyIDMgNAojIDQ1ICIvdXNyL2luY2x1ZGUv
YXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VtYWNoaW5lLmgiIDIgMyA0CgoKCgoKIyAxICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzIDQKIyA1MSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYv
dW5pY29kZS91bWFjaGluZS5oIiAyIDMgNAojIDc3ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdu
dWVhYmloZi91bmljb2RlL3VtYWNoaW5lLmgiIDMgNAojZGVmaW5lIFVfQ0ZVTkMgZXh0ZXJuICJD
IgojZGVmaW5lIFVfQ0RFQ0xfQkVHSU4gZXh0ZXJuICJDIiB7CiNkZWZpbmUgVV9DREVDTF9FTkQg
fQojIDkzICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VtYWNoaW5l
LmgiIDMgNAojZGVmaW5lIFVfQVRUUklCVVRFX0RFUFJFQ0FURUQgX19hdHRyaWJ1dGVfXyAoKGRl
cHJlY2F0ZWQpKQojIDEwNyAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29k
ZS91bWFjaGluZS5oIiAzIDQKI2RlZmluZSBVX0NBUEkgVV9DRlVOQyBVX0VYUE9SVAoKI2RlZmlu
ZSBVX1NUQUJMRSBVX0NBUEkKCiNkZWZpbmUgVV9EUkFGVCBVX0NBUEkKCiNkZWZpbmUgVV9ERVBS
RUNBVEVEIFVfQ0FQSSBVX0FUVFJJQlVURV9ERVBSRUNBVEVECgojZGVmaW5lIFVfT0JTT0xFVEUg
VV9DQVBJCgojZGVmaW5lIFVfSU5URVJOQUwgVV9DQVBJCiMgMTgzICIvdXNyL2luY2x1ZGUvYXJt
LWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VtYWNoaW5lLmgiIDMgNAojZGVmaW5lIFVfSU5UNjRf
TUlOICgoaW50NjRfdCkoSU5UNjRfQygtOTIyMzM3MjAzNjg1NDc3NTgwNyktMSkpCgoKCiNkZWZp
bmUgVV9JTlQ2NF9NQVggKChpbnQ2NF90KShJTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpKSkK
CgoKI2RlZmluZSBVX1VJTlQ2NF9NQVggKCh1aW50NjRfdCkoVUlOVDY0X0MoMTg0NDY3NDQwNzM3
MDk1NTE2MTUpKSkKIyAyMDAgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNv
ZGUvdW1hY2hpbmUuaCIgMyA0CnR5cGVkZWYgaW50OF90IFVCb29sOwoKCgojZGVmaW5lIFRSVUUg
MQoKCgojZGVmaW5lIEZBTFNFIDAKIyAyMzUgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFi
aWhmL3VuaWNvZGUvdW1hY2hpbmUuaCIgMyA0CiNkZWZpbmUgVV9XQ0hBUl9JU19VVEYzMiAKIyAy
NTUgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdW1hY2hpbmUuaCIg
MyA0CiNkZWZpbmUgVV9TSVpFT0ZfVUNIQVIgMgojIDI3NiAiL3Vzci9pbmNsdWRlL2FybS1saW51
eC1nbnVlYWJpaGYvdW5pY29kZS91bWFjaGluZS5oIiAzIDQKICAgIHR5cGVkZWYgc2hvcnQgdW5z
aWduZWQgaW50IFVDaGFyOwojIDI5OCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYv
dW5pY29kZS91bWFjaGluZS5oIiAzIDQKdHlwZWRlZiBpbnQzMl90IFVDaGFyMzI7CiMgMzE4ICIv
dXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VtYWNoaW5lLmgiIDMgNAoj
ZGVmaW5lIFVfU0VOVElORUwgKC0xKQoKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVh
YmloZi91bmljb2RlL3VyZW5hbWUuaCIgMSAzIDQKIyAyMiAiL3Vzci9pbmNsdWRlL2FybS1saW51
eC1nbnVlYWJpaGYvdW5pY29kZS91cmVuYW1lLmgiIDMgNAojZGVmaW5lIFVSRU5BTUVfSCAKIyA1
NiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91cmVuYW1lLmgiIDMg
NAojZGVmaW5lIFRfQ1N0cmluZ19pbnQ2NFRvU3RyaW5nIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RShUX0NTdHJpbmdfaW50NjRUb1N0cmluZykKI2RlZmluZSBUX0NTdHJpbmdfaW50ZWdlclRvU3Ry
aW5nIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShUX0NTdHJpbmdfaW50ZWdlclRvU3RyaW5nKQoj
ZGVmaW5lIFRfQ1N0cmluZ19zdHJpbmdUb0ludGVnZXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KFRfQ1N0cmluZ19zdHJpbmdUb0ludGVnZXIpCiNkZWZpbmUgVF9DU3RyaW5nX3RvTG93ZXJDYXNl
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShUX0NTdHJpbmdfdG9Mb3dlckNhc2UpCiNkZWZpbmUg
VF9DU3RyaW5nX3RvVXBwZXJDYXNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShUX0NTdHJpbmdf
dG9VcHBlckNhc2UpCiNkZWZpbmUgVUNOVl9GUk9NX1VfQ0FMTEJBQ0tfRVNDQVBFIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRShVQ05WX0ZST01fVV9DQUxMQkFDS19FU0NBUEUpCiNkZWZpbmUgVUNO
Vl9GUk9NX1VfQ0FMTEJBQ0tfU0tJUCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUoVUNOVl9GUk9N
X1VfQ0FMTEJBQ0tfU0tJUCkKI2RlZmluZSBVQ05WX0ZST01fVV9DQUxMQkFDS19TVE9QIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRShVQ05WX0ZST01fVV9DQUxMQkFDS19TVE9QKQojZGVmaW5lIFVD
TlZfRlJPTV9VX0NBTExCQUNLX1NVQlNUSVRVVEUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKFVD
TlZfRlJPTV9VX0NBTExCQUNLX1NVQlNUSVRVVEUpCiNkZWZpbmUgVUNOVl9UT19VX0NBTExCQUNL
X0VTQ0FQRSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUoVUNOVl9UT19VX0NBTExCQUNLX0VTQ0FQ
RSkKI2RlZmluZSBVQ05WX1RPX1VfQ0FMTEJBQ0tfU0tJUCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUoVUNOVl9UT19VX0NBTExCQUNLX1NLSVApCiNkZWZpbmUgVUNOVl9UT19VX0NBTExCQUNLX1NU
T1AgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKFVDTlZfVE9fVV9DQUxMQkFDS19TVE9QKQojZGVm
aW5lIFVDTlZfVE9fVV9DQUxMQkFDS19TVUJTVElUVVRFIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RShVQ05WX1RPX1VfQ0FMTEJBQ0tfU1VCU1RJVFVURSkKI2RlZmluZSBVRGF0YU1lbW9yeV9jcmVh
dGVOZXdJbnN0YW5jZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUoVURhdGFNZW1vcnlfY3JlYXRl
TmV3SW5zdGFuY2UpCiNkZWZpbmUgVURhdGFNZW1vcnlfaW5pdCBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUoVURhdGFNZW1vcnlfaW5pdCkKI2RlZmluZSBVRGF0YU1lbW9yeV9pc0xvYWRlZCBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUoVURhdGFNZW1vcnlfaXNMb2FkZWQpCiNkZWZpbmUgVURhdGFN
ZW1vcnlfbm9ybWFsaXplRGF0YVBvaW50ZXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKFVEYXRh
TWVtb3J5X25vcm1hbGl6ZURhdGFQb2ludGVyKQojZGVmaW5lIFVEYXRhTWVtb3J5X3NldERhdGEg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKFVEYXRhTWVtb3J5X3NldERhdGEpCiNkZWZpbmUgVURh
dGFtZW1vcnlfYXNzaWduIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShVRGF0YW1lbW9yeV9hc3Np
Z24pCiNkZWZpbmUgX0FTQ0lJRGF0YSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUoX0FTQ0lJRGF0
YSkKI2RlZmluZSBfQm9jdTFEYXRhIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShfQm9jdTFEYXRh
KQojZGVmaW5lIF9DRVNVOERhdGEgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKF9DRVNVOERhdGEp
CiNkZWZpbmUgX0NvbXBvdW5kVGV4dERhdGEgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKF9Db21w
b3VuZFRleHREYXRhKQojZGVmaW5lIF9IWkRhdGEgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKF9I
WkRhdGEpCiNkZWZpbmUgX0lNQVBEYXRhIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShfSU1BUERh
dGEpCiNkZWZpbmUgX0lTQ0lJRGF0YSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUoX0lTQ0lJRGF0
YSkKI2RlZmluZSBfSVNPMjAyMkRhdGEgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKF9JU08yMDIy
RGF0YSkKI2RlZmluZSBfTE1CQ1NEYXRhMSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUoX0xNQkNT
RGF0YTEpCiNkZWZpbmUgX0xNQkNTRGF0YTExIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShfTE1C
Q1NEYXRhMTEpCiNkZWZpbmUgX0xNQkNTRGF0YTE2IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShf
TE1CQ1NEYXRhMTYpCiNkZWZpbmUgX0xNQkNTRGF0YTE3IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RShfTE1CQ1NEYXRhMTcpCiNkZWZpbmUgX0xNQkNTRGF0YTE4IFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRShfTE1CQ1NEYXRhMTgpCiNkZWZpbmUgX0xNQkNTRGF0YTE5IFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRShfTE1CQ1NEYXRhMTkpCiNkZWZpbmUgX0xNQkNTRGF0YTIgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKF9MTUJDU0RhdGEyKQojZGVmaW5lIF9MTUJDU0RhdGEzIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRShfTE1CQ1NEYXRhMykKI2RlZmluZSBfTE1CQ1NEYXRhNCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUoX0xNQkNTRGF0YTQpCiNkZWZpbmUgX0xNQkNTRGF0YTUgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKF9MTUJDU0RhdGE1KQojZGVmaW5lIF9MTUJDU0RhdGE2IFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRShfTE1CQ1NEYXRhNikKI2RlZmluZSBfTE1CQ1NEYXRhOCBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUoX0xNQkNTRGF0YTgpCiNkZWZpbmUgX0xhdGluMURhdGEgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKF9MYXRpbjFEYXRhKQojZGVmaW5lIF9NQkNTRGF0YSBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUoX01CQ1NEYXRhKQojZGVmaW5lIF9TQ1NVRGF0YSBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUoX1NDU1VEYXRhKQojZGVmaW5lIF9VVEYxNkJFRGF0YSBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUoX1VURjE2QkVEYXRhKQojZGVmaW5lIF9VVEYxNkRhdGEgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKF9VVEYxNkRhdGEpCiNkZWZpbmUgX1VURjE2TEVEYXRhIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRShfVVRGMTZMRURhdGEpCiNkZWZpbmUgX1VURjMyQkVEYXRhIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRShfVVRGMzJCRURhdGEpCiNkZWZpbmUgX1VURjMyRGF0YSBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUoX1VURjMyRGF0YSkKI2RlZmluZSBfVVRGMzJMRURhdGEgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKF9VVEYzMkxFRGF0YSkKI2RlZmluZSBfVVRGN0RhdGEgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKF9VVEY3RGF0YSkKI2RlZmluZSBfVVRGOERhdGEgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKF9VVEY4RGF0YSkKI2RlZmluZSBjbWVtb3J5X2NsZWFudXAgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKGNtZW1vcnlfY2xlYW51cCkKI2RlZmluZSBjbWVtb3J5X2luVXNl
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShjbWVtb3J5X2luVXNlKQojZGVmaW5lIGl6cnVsZV9j
bG9uZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUoaXpydWxlX2Nsb25lKQojZGVmaW5lIGl6cnVs
ZV9jbG9zZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUoaXpydWxlX2Nsb3NlKQojZGVmaW5lIGl6
cnVsZV9lcXVhbHMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGl6cnVsZV9lcXVhbHMpCiNkZWZp
bmUgaXpydWxlX2dldERTVFNhdmluZ3MgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGl6cnVsZV9n
ZXREU1RTYXZpbmdzKQojZGVmaW5lIGl6cnVsZV9nZXREeW5hbWljQ2xhc3NJRCBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUoaXpydWxlX2dldER5bmFtaWNDbGFzc0lEKQojZGVmaW5lIGl6cnVsZV9n
ZXRGaW5hbFN0YXJ0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShpenJ1bGVfZ2V0RmluYWxTdGFy
dCkKI2RlZmluZSBpenJ1bGVfZ2V0Rmlyc3RTdGFydCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
aXpydWxlX2dldEZpcnN0U3RhcnQpCiNkZWZpbmUgaXpydWxlX2dldE5hbWUgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKGl6cnVsZV9nZXROYW1lKQojZGVmaW5lIGl6cnVsZV9nZXROZXh0U3RhcnQg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGl6cnVsZV9nZXROZXh0U3RhcnQpCiNkZWZpbmUgaXpy
dWxlX2dldFByZXZpb3VzU3RhcnQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGl6cnVsZV9nZXRQ
cmV2aW91c1N0YXJ0KQojZGVmaW5lIGl6cnVsZV9nZXRSYXdPZmZzZXQgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKGl6cnVsZV9nZXRSYXdPZmZzZXQpCiNkZWZpbmUgaXpydWxlX2dldFN0YXRpY0Ns
YXNzSUQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGl6cnVsZV9nZXRTdGF0aWNDbGFzc0lEKQoj
ZGVmaW5lIGl6cnVsZV9pc0VxdWl2YWxlbnRUbyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUoaXpy
dWxlX2lzRXF1aXZhbGVudFRvKQojZGVmaW5lIGl6cnVsZV9vcGVuIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRShpenJ1bGVfb3BlbikKI2RlZmluZSBsZV9jbG9zZSBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUobGVfY2xvc2UpCiNkZWZpbmUgbGVfY3JlYXRlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RShsZV9jcmVhdGUpCiNkZWZpbmUgbGVfZ2V0Q2hhckluZGljZXMgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKGxlX2dldENoYXJJbmRpY2VzKQojZGVmaW5lIGxlX2dldENoYXJJbmRpY2VzV2l0aEJh
c2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGxlX2dldENoYXJJbmRpY2VzV2l0aEJhc2UpCiNk
ZWZpbmUgbGVfZ2V0R2x5cGhDb3VudCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUobGVfZ2V0R2x5
cGhDb3VudCkKI2RlZmluZSBsZV9nZXRHbHlwaFBvc2l0aW9uIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRShsZV9nZXRHbHlwaFBvc2l0aW9uKQojZGVmaW5lIGxlX2dldEdseXBoUG9zaXRpb25zIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRShsZV9nZXRHbHlwaFBvc2l0aW9ucykKI2RlZmluZSBsZV9n
ZXRHbHlwaHMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGxlX2dldEdseXBocykKI2RlZmluZSBs
ZV9sYXlvdXRDaGFycyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUobGVfbGF5b3V0Q2hhcnMpCiNk
ZWZpbmUgbGVfcmVzZXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGxlX3Jlc2V0KQojZGVmaW5l
IGxvY2FsZV9nZXRLZXl3b3JkcyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUobG9jYWxlX2dldEtl
eXdvcmRzKQojZGVmaW5lIGxvY2FsZV9nZXRLZXl3b3Jkc1N0YXJ0IFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRShsb2NhbGVfZ2V0S2V5d29yZHNTdGFydCkKI2RlZmluZSBsb2NhbGVfZ2V0X2RlZmF1
bHQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGxvY2FsZV9nZXRfZGVmYXVsdCkKI2RlZmluZSBs
b2NhbGVfc2V0X2RlZmF1bHQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKGxvY2FsZV9zZXRfZGVm
YXVsdCkKI2RlZmluZSBwbF9hZGRGb250UnVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShwbF9h
ZGRGb250UnVuKQojZGVmaW5lIHBsX2FkZExvY2FsZVJ1biBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUocGxfYWRkTG9jYWxlUnVuKQojZGVmaW5lIHBsX2FkZFZhbHVlUnVuIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRShwbF9hZGRWYWx1ZVJ1bikKI2RlZmluZSBwbF9jbG9zZSBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUocGxfY2xvc2UpCiNkZWZpbmUgcGxfY2xvc2VGb250UnVucyBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUocGxfY2xvc2VGb250UnVucykKI2RlZmluZSBwbF9jbG9zZUxpbmUgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHBsX2Nsb3NlTGluZSkKI2RlZmluZSBwbF9jbG9zZUxvY2Fs
ZVJ1bnMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHBsX2Nsb3NlTG9jYWxlUnVucykKI2RlZmlu
ZSBwbF9jbG9zZVZhbHVlUnVucyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUocGxfY2xvc2VWYWx1
ZVJ1bnMpCiNkZWZpbmUgcGxfY291bnRMaW5lUnVucyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
cGxfY291bnRMaW5lUnVucykKI2RlZmluZSBwbF9jcmVhdGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHBsX2NyZWF0ZSkKI2RlZmluZSBwbF9nZXRBc2NlbnQgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHBsX2dldEFzY2VudCkKI2RlZmluZSBwbF9nZXREZXNjZW50IFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRShwbF9nZXREZXNjZW50KQojZGVmaW5lIHBsX2dldEZvbnRSdW5Db3VudCBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUocGxfZ2V0Rm9udFJ1bkNvdW50KQojZGVmaW5lIHBsX2dldEZvbnRS
dW5Gb250IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShwbF9nZXRGb250UnVuRm9udCkKI2RlZmlu
ZSBwbF9nZXRGb250UnVuTGFzdExpbWl0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShwbF9nZXRG
b250UnVuTGFzdExpbWl0KQojZGVmaW5lIHBsX2dldEZvbnRSdW5MaW1pdCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUocGxfZ2V0Rm9udFJ1bkxpbWl0KQojZGVmaW5lIHBsX2dldExlYWRpbmcgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHBsX2dldExlYWRpbmcpCiNkZWZpbmUgcGxfZ2V0TGluZUFz
Y2VudCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUocGxfZ2V0TGluZUFzY2VudCkKI2RlZmluZSBw
bF9nZXRMaW5lRGVzY2VudCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUocGxfZ2V0TGluZURlc2Nl
bnQpCiNkZWZpbmUgcGxfZ2V0TGluZUxlYWRpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHBs
X2dldExpbmVMZWFkaW5nKQojZGVmaW5lIHBsX2dldExpbmVWaXN1YWxSdW4gVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHBsX2dldExpbmVWaXN1YWxSdW4pCiNkZWZpbmUgcGxfZ2V0TGluZVdpZHRo
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShwbF9nZXRMaW5lV2lkdGgpCiNkZWZpbmUgcGxfZ2V0
TG9jYWxlUnVuQ291bnQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHBsX2dldExvY2FsZVJ1bkNv
dW50KQojZGVmaW5lIHBsX2dldExvY2FsZVJ1bkxhc3RMaW1pdCBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUocGxfZ2V0TG9jYWxlUnVuTGFzdExpbWl0KQojZGVmaW5lIHBsX2dldExvY2FsZVJ1bkxp
bWl0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShwbF9nZXRMb2NhbGVSdW5MaW1pdCkKI2RlZmlu
ZSBwbF9nZXRMb2NhbGVSdW5Mb2NhbGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHBsX2dldExv
Y2FsZVJ1bkxvY2FsZSkKI2RlZmluZSBwbF9nZXRQYXJhZ3JhcGhMZXZlbCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUocGxfZ2V0UGFyYWdyYXBoTGV2ZWwpCiNkZWZpbmUgcGxfZ2V0VGV4dERpcmVj
dGlvbiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUocGxfZ2V0VGV4dERpcmVjdGlvbikKI2RlZmlu
ZSBwbF9nZXRWYWx1ZVJ1bkNvdW50IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShwbF9nZXRWYWx1
ZVJ1bkNvdW50KQojZGVmaW5lIHBsX2dldFZhbHVlUnVuTGFzdExpbWl0IFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRShwbF9nZXRWYWx1ZVJ1bkxhc3RMaW1pdCkKI2RlZmluZSBwbF9nZXRWYWx1ZVJ1
bkxpbWl0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShwbF9nZXRWYWx1ZVJ1bkxpbWl0KQojZGVm
aW5lIHBsX2dldFZhbHVlUnVuVmFsdWUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHBsX2dldFZh
bHVlUnVuVmFsdWUpCiNkZWZpbmUgcGxfZ2V0VmlzdWFsUnVuQXNjZW50IFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRShwbF9nZXRWaXN1YWxSdW5Bc2NlbnQpCiNkZWZpbmUgcGxfZ2V0VmlzdWFsUnVu
RGVzY2VudCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUocGxfZ2V0VmlzdWFsUnVuRGVzY2VudCkK
I2RlZmluZSBwbF9nZXRWaXN1YWxSdW5EaXJlY3Rpb24gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHBsX2dldFZpc3VhbFJ1bkRpcmVjdGlvbikKI2RlZmluZSBwbF9nZXRWaXN1YWxSdW5Gb250IFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRShwbF9nZXRWaXN1YWxSdW5Gb250KQojZGVmaW5lIHBsX2dl
dFZpc3VhbFJ1bkdseXBoQ291bnQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHBsX2dldFZpc3Vh
bFJ1bkdseXBoQ291bnQpCiNkZWZpbmUgcGxfZ2V0VmlzdWFsUnVuR2x5cGhUb0NoYXJNYXAgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHBsX2dldFZpc3VhbFJ1bkdseXBoVG9DaGFyTWFwKQojZGVm
aW5lIHBsX2dldFZpc3VhbFJ1bkdseXBocyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUocGxfZ2V0
VmlzdWFsUnVuR2x5cGhzKQojZGVmaW5lIHBsX2dldFZpc3VhbFJ1bkxlYWRpbmcgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHBsX2dldFZpc3VhbFJ1bkxlYWRpbmcpCiNkZWZpbmUgcGxfZ2V0Vmlz
dWFsUnVuUG9zaXRpb25zIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShwbF9nZXRWaXN1YWxSdW5Q
b3NpdGlvbnMpCiNkZWZpbmUgcGxfaXNDb21wbGV4IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShw
bF9pc0NvbXBsZXgpCiNkZWZpbmUgcGxfbmV4dExpbmUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHBsX25leHRMaW5lKQojZGVmaW5lIHBsX29wZW5FbXB0eUZvbnRSdW5zIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRShwbF9vcGVuRW1wdHlGb250UnVucykKI2RlZmluZSBwbF9vcGVuRW1wdHlMb2Nh
bGVSdW5zIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShwbF9vcGVuRW1wdHlMb2NhbGVSdW5zKQoj
ZGVmaW5lIHBsX29wZW5FbXB0eVZhbHVlUnVucyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUocGxf
b3BlbkVtcHR5VmFsdWVSdW5zKQojZGVmaW5lIHBsX29wZW5Gb250UnVucyBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUocGxfb3BlbkZvbnRSdW5zKQojZGVmaW5lIHBsX29wZW5Mb2NhbGVSdW5zIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRShwbF9vcGVuTG9jYWxlUnVucykKI2RlZmluZSBwbF9vcGVu
VmFsdWVSdW5zIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShwbF9vcGVuVmFsdWVSdW5zKQojZGVm
aW5lIHBsX3JlZmxvdyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUocGxfcmVmbG93KQojZGVmaW5l
IHBsX3Jlc2V0Rm9udFJ1bnMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHBsX3Jlc2V0Rm9udFJ1
bnMpCiNkZWZpbmUgcGxfcmVzZXRMb2NhbGVSdW5zIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShw
bF9yZXNldExvY2FsZVJ1bnMpCiNkZWZpbmUgcGxfcmVzZXRWYWx1ZVJ1bnMgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHBsX3Jlc2V0VmFsdWVSdW5zKQojZGVmaW5lIHJlc19jb3VudEFycmF5SXRl
bXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHJlc19jb3VudEFycmF5SXRlbXMpCiNkZWZpbmUg
cmVzX2ZpbmRSZXNvdXJjZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUocmVzX2ZpbmRSZXNvdXJj
ZSkKI2RlZmluZSByZXNfZ2V0QWxpYXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHJlc19nZXRB
bGlhcykKI2RlZmluZSByZXNfZ2V0QXJyYXlJdGVtIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShy
ZXNfZ2V0QXJyYXlJdGVtKQojZGVmaW5lIHJlc19nZXRCaW5hcnkgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHJlc19nZXRCaW5hcnkpCiNkZWZpbmUgcmVzX2dldEludFZlY3RvciBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUocmVzX2dldEludFZlY3RvcikKI2RlZmluZSByZXNfZ2V0UHVibGljVHlw
ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUocmVzX2dldFB1YmxpY1R5cGUpCiNkZWZpbmUgcmVz
X2dldFJlc291cmNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShyZXNfZ2V0UmVzb3VyY2UpCiNk
ZWZpbmUgcmVzX2dldFN0cmluZyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUocmVzX2dldFN0cmlu
ZykKI2RlZmluZSByZXNfZ2V0VGFibGVJdGVtQnlJbmRleCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUocmVzX2dldFRhYmxlSXRlbUJ5SW5kZXgpCiNkZWZpbmUgcmVzX2dldFRhYmxlSXRlbUJ5S2V5
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShyZXNfZ2V0VGFibGVJdGVtQnlLZXkpCiNkZWZpbmUg
cmVzX2xvYWQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHJlc19sb2FkKQojZGVmaW5lIHJlc19y
ZWFkIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShyZXNfcmVhZCkKI2RlZmluZSByZXNfdW5sb2Fk
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRShyZXNfdW5sb2FkKQojZGVmaW5lIHVfVUNoYXJzVG9D
aGFycyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9VQ2hhcnNUb0NoYXJzKQojZGVmaW5lIHVf
YXVzdHJjcHkgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfYXVzdHJjcHkpCiNkZWZpbmUgdV9h
dXN0cm5jcHkgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfYXVzdHJuY3B5KQojZGVmaW5lIHVf
Y2F0Y2xvc2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfY2F0Y2xvc2UpCiNkZWZpbmUgdV9j
YXRnZXRzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2NhdGdldHMpCiNkZWZpbmUgdV9jYXRv
cGVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2NhdG9wZW4pCiNkZWZpbmUgdV9jaGFyQWdl
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2NoYXJBZ2UpCiNkZWZpbmUgdV9jaGFyRGlnaXRW
YWx1ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9jaGFyRGlnaXRWYWx1ZSkKI2RlZmluZSB1
X2NoYXJEaXJlY3Rpb24gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfY2hhckRpcmVjdGlvbikK
I2RlZmluZSB1X2NoYXJGcm9tTmFtZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9jaGFyRnJv
bU5hbWUpCiNkZWZpbmUgdV9jaGFyTWlycm9yIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2No
YXJNaXJyb3IpCiNkZWZpbmUgdV9jaGFyTmFtZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9j
aGFyTmFtZSkKI2RlZmluZSB1X2NoYXJUeXBlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2No
YXJUeXBlKQojZGVmaW5lIHVfY2hhcnNUb1VDaGFycyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dV9jaGFyc1RvVUNoYXJzKQojZGVmaW5lIHVfY2xlYW51cCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodV9jbGVhbnVwKQojZGVmaW5lIHVfY291bnRDaGFyMzIgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVfY291bnRDaGFyMzIpCiNkZWZpbmUgdV9kaWdpdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodV9kaWdpdCkKI2RlZmluZSB1X2VudW1DaGFyTmFtZXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVfZW51bUNoYXJOYW1lcykKI2RlZmluZSB1X2VudW1DaGFyVHlwZXMgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVfZW51bUNoYXJUeXBlcykKI2RlZmluZSB1X2Vycm9yTmFtZSBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodV9lcnJvck5hbWUpCiNkZWZpbmUgdV9mYWRvcHQgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVfZmFkb3B0KQojZGVmaW5lIHVfZmNsb3NlIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1X2ZjbG9zZSkKI2RlZmluZSB1X2Zlb2YgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVfZmVvZikKI2RlZmluZSB1X2ZmbHVzaCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9m
Zmx1c2gpCiNkZWZpbmUgdV9mZ2V0Q29udmVydGVyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
X2ZnZXRDb252ZXJ0ZXIpCiNkZWZpbmUgdV9mZ2V0TnVtYmVyRm9ybWF0IFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1X2ZnZXROdW1iZXJGb3JtYXQpCiNkZWZpbmUgdV9mZ2V0YyBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodV9mZ2V0YykKI2RlZmluZSB1X2ZnZXRjb2RlcGFnZSBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodV9mZ2V0Y29kZXBhZ2UpCiNkZWZpbmUgdV9mZ2V0Y3ggVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVfZmdldGN4KQojZGVmaW5lIHVfZmdldGZpbGUgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVfZmdldGZpbGUpCiNkZWZpbmUgdV9mZ2V0bG9jYWxlIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1X2ZnZXRsb2NhbGUpCiNkZWZpbmUgdV9mZ2V0cyBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodV9mZ2V0cykKI2RlZmluZSB1X2ZpbGVfcmVhZCBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodV9maWxlX3JlYWQpCiNkZWZpbmUgdV9maWxlX3dyaXRlIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1X2ZpbGVfd3JpdGUpCiNkZWZpbmUgdV9maWxlX3dyaXRlX2ZsdXNoIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1X2ZpbGVfd3JpdGVfZmx1c2gpCiNkZWZpbmUgdV9maW5pdCBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9maW5pdCkKI2RlZmluZSB1X2ZsdXNoRGVmYXVsdENv
bnZlcnRlciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9mbHVzaERlZmF1bHRDb252ZXJ0ZXIp
CiNkZWZpbmUgdV9mb2xkQ2FzZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9mb2xkQ2FzZSkK
I2RlZmluZSB1X2ZvcGVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2ZvcGVuKQojZGVmaW5l
IHVfZm9yRGlnaXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfZm9yRGlnaXQpCiNkZWZpbmUg
dV9mb3JtYXRNZXNzYWdlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2Zvcm1hdE1lc3NhZ2Up
CiNkZWZpbmUgdV9mb3JtYXRNZXNzYWdlV2l0aEVycm9yIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1X2Zvcm1hdE1lc3NhZ2VXaXRoRXJyb3IpCiNkZWZpbmUgdV9mcHJpbnRmIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1X2ZwcmludGYpCiNkZWZpbmUgdV9mcHJpbnRmX3UgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVfZnByaW50Zl91KQojZGVmaW5lIHVfZnB1dGMgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVfZnB1dGMpCiNkZWZpbmUgdV9mcHV0cyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodV9mcHV0cykKI2RlZmluZSB1X2ZyZXdpbmQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVf
ZnJld2luZCkKI2RlZmluZSB1X2ZzY2FuZiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9mc2Nh
bmYpCiNkZWZpbmUgdV9mc2NhbmZfdSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9mc2NhbmZf
dSkKI2RlZmluZSB1X2ZzZXRjb2RlcGFnZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9mc2V0
Y29kZXBhZ2UpCiNkZWZpbmUgdV9mc2V0bG9jYWxlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
X2ZzZXRsb2NhbGUpCiNkZWZpbmUgdV9mc2V0dHJhbnNsaXRlcmF0b3IgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVfZnNldHRyYW5zbGl0ZXJhdG9yKQojZGVmaW5lIHVfZnN0cm9wZW4gVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVfZnN0cm9wZW4pCiNkZWZpbmUgdV9mdW5nZXRjIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1X2Z1bmdldGMpCiNkZWZpbmUgdV9nZXRCaWRpUGFpcmVkQnJhY2tl
dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9nZXRCaWRpUGFpcmVkQnJhY2tldCkKI2RlZmlu
ZSB1X2dldENvbWJpbmluZ0NsYXNzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2dldENvbWJp
bmluZ0NsYXNzKQojZGVmaW5lIHVfZ2V0RGF0YURpcmVjdG9yeSBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodV9nZXREYXRhRGlyZWN0b3J5KQojZGVmaW5lIHVfZ2V0RGF0YVZlcnNpb24gVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVfZ2V0RGF0YVZlcnNpb24pCiNkZWZpbmUgdV9nZXREZWZhdWx0
Q29udmVydGVyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2dldERlZmF1bHRDb252ZXJ0ZXIp
CiNkZWZpbmUgdV9nZXRGQ19ORktDX0Nsb3N1cmUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVf
Z2V0RkNfTkZLQ19DbG9zdXJlKQojZGVmaW5lIHVfZ2V0SVNPQ29tbWVudCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodV9nZXRJU09Db21tZW50KQojZGVmaW5lIHVfZ2V0SW50UHJvcGVydHlNYXhW
YWx1ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9nZXRJbnRQcm9wZXJ0eU1heFZhbHVlKQoj
ZGVmaW5lIHVfZ2V0SW50UHJvcGVydHlNaW5WYWx1ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dV9nZXRJbnRQcm9wZXJ0eU1pblZhbHVlKQojZGVmaW5lIHVfZ2V0SW50UHJvcGVydHlWYWx1ZSBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9nZXRJbnRQcm9wZXJ0eVZhbHVlKQojZGVmaW5lIHVf
Z2V0TWFpblByb3BlcnRpZXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfZ2V0TWFpblByb3Bl
cnRpZXMpCiNkZWZpbmUgdV9nZXROdW1lcmljVmFsdWUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVfZ2V0TnVtZXJpY1ZhbHVlKQojZGVmaW5lIHVfZ2V0UHJvcGVydHlFbnVtIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1X2dldFByb3BlcnR5RW51bSkKI2RlZmluZSB1X2dldFByb3BlcnR5TmFt
ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9nZXRQcm9wZXJ0eU5hbWUpCiNkZWZpbmUgdV9n
ZXRQcm9wZXJ0eVZhbHVlRW51bSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9nZXRQcm9wZXJ0
eVZhbHVlRW51bSkKI2RlZmluZSB1X2dldFByb3BlcnR5VmFsdWVOYW1lIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1X2dldFByb3BlcnR5VmFsdWVOYW1lKQojZGVmaW5lIHVfZ2V0VW5pY29kZVBy
b3BlcnRpZXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfZ2V0VW5pY29kZVByb3BlcnRpZXMp
CiNkZWZpbmUgdV9nZXRVbmljb2RlVmVyc2lvbiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9n
ZXRVbmljb2RlVmVyc2lvbikKI2RlZmluZSB1X2dldFZlcnNpb24gVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVfZ2V0VmVyc2lvbikKI2RlZmluZSB1X2dldF9zdGRvdXQgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVfZ2V0X3N0ZG91dCkKI2RlZmluZSB1X2hhc0JpbmFyeVByb3BlcnR5IFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1X2hhc0JpbmFyeVByb3BlcnR5KQojZGVmaW5lIHVfaW5pdCBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9pbml0KQojZGVmaW5lIHVfaXNJRElnbm9yYWJsZSBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9pc0lESWdub3JhYmxlKQojZGVmaW5lIHVfaXNJRFBh
cnQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfaXNJRFBhcnQpCiNkZWZpbmUgdV9pc0lEU3Rh
cnQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfaXNJRFN0YXJ0KQojZGVmaW5lIHVfaXNJU09D
b250cm9sIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2lzSVNPQ29udHJvbCkKI2RlZmluZSB1
X2lzSmF2YUlEUGFydCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9pc0phdmFJRFBhcnQpCiNk
ZWZpbmUgdV9pc0phdmFJRFN0YXJ0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2lzSmF2YUlE
U3RhcnQpCiNkZWZpbmUgdV9pc0phdmFTcGFjZUNoYXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVfaXNKYXZhU3BhY2VDaGFyKQojZGVmaW5lIHVfaXNNaXJyb3JlZCBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodV9pc01pcnJvcmVkKQojZGVmaW5lIHVfaXNVQWxwaGFiZXRpYyBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodV9pc1VBbHBoYWJldGljKQojZGVmaW5lIHVfaXNVTG93ZXJjYXNlIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2lzVUxvd2VyY2FzZSkKI2RlZmluZSB1X2lzVVVwcGVy
Y2FzZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9pc1VVcHBlcmNhc2UpCiNkZWZpbmUgdV9p
c1VXaGl0ZVNwYWNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2lzVVdoaXRlU3BhY2UpCiNk
ZWZpbmUgdV9pc1doaXRlc3BhY2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfaXNXaGl0ZXNw
YWNlKQojZGVmaW5lIHVfaXNhbG51bSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9pc2FsbnVt
KQojZGVmaW5lIHVfaXNhbG51bVBPU0lYIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2lzYWxu
dW1QT1NJWCkKI2RlZmluZSB1X2lzYWxwaGEgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfaXNh
bHBoYSkKI2RlZmluZSB1X2lzYmFzZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9pc2Jhc2Up
CiNkZWZpbmUgdV9pc2JsYW5rIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2lzYmxhbmspCiNk
ZWZpbmUgdV9pc2NudHJsIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2lzY250cmwpCiNkZWZp
bmUgdV9pc2RlZmluZWQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfaXNkZWZpbmVkKQojZGVm
aW5lIHVfaXNkaWdpdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9pc2RpZ2l0KQojZGVmaW5l
IHVfaXNncmFwaCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9pc2dyYXBoKQojZGVmaW5lIHVf
aXNncmFwaFBPU0lYIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2lzZ3JhcGhQT1NJWCkKI2Rl
ZmluZSB1X2lzbG93ZXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfaXNsb3dlcikKI2RlZmlu
ZSB1X2lzcHJpbnQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfaXNwcmludCkKI2RlZmluZSB1
X2lzcHJpbnRQT1NJWCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9pc3ByaW50UE9TSVgpCiNk
ZWZpbmUgdV9pc3B1bmN0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2lzcHVuY3QpCiNkZWZp
bmUgdV9pc3NwYWNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2lzc3BhY2UpCiNkZWZpbmUg
dV9pc3RpdGxlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2lzdGl0bGUpCiNkZWZpbmUgdV9p
c3VwcGVyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2lzdXBwZXIpCiNkZWZpbmUgdV9pc3hk
aWdpdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9pc3hkaWdpdCkKI2RlZmluZSB1X2xvY2J1
bmRfY2xvc2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfbG9jYnVuZF9jbG9zZSkKI2RlZmlu
ZSB1X2xvY2J1bmRfZ2V0TnVtYmVyRm9ybWF0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X2xv
Y2J1bmRfZ2V0TnVtYmVyRm9ybWF0KQojZGVmaW5lIHVfbG9jYnVuZF9pbml0IFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1X2xvY2J1bmRfaW5pdCkKI2RlZmluZSB1X21lbWNhc2VjbXAgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVfbWVtY2FzZWNtcCkKI2RlZmluZSB1X21lbWNociBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodV9tZW1jaHIpCiNkZWZpbmUgdV9tZW1jaHIzMiBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodV9tZW1jaHIzMikKI2RlZmluZSB1X21lbWNtcCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodV9tZW1jbXApCiNkZWZpbmUgdV9tZW1jbXBDb2RlUG9pbnRPcmRlciBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodV9tZW1jbXBDb2RlUG9pbnRPcmRlcikKI2RlZmluZSB1X21l
bWNweSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9tZW1jcHkpCiNkZWZpbmUgdV9tZW1tb3Zl
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X21lbW1vdmUpCiNkZWZpbmUgdV9tZW1yY2hyIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X21lbXJjaHIpCiNkZWZpbmUgdV9tZW1yY2hyMzIgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfbWVtcmNocjMyKQojZGVmaW5lIHVfbWVtc2V0IFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1X21lbXNldCkKI2RlZmluZSB1X3BhcnNlTWVzc2FnZSBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodV9wYXJzZU1lc3NhZ2UpCiNkZWZpbmUgdV9wYXJzZU1lc3Nh
Z2VXaXRoRXJyb3IgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfcGFyc2VNZXNzYWdlV2l0aEVy
cm9yKQojZGVmaW5lIHVfcHJpbnRmIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3ByaW50ZikK
I2RlZmluZSB1X3ByaW50Zl9wYXJzZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9wcmludGZf
cGFyc2UpCiNkZWZpbmUgdV9wcmludGZfdSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9wcmlu
dGZfdSkKI2RlZmluZSB1X3JlbGVhc2VEZWZhdWx0Q29udmVydGVyIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1X3JlbGVhc2VEZWZhdWx0Q29udmVydGVyKQojZGVmaW5lIHVfc2NhbmZfcGFyc2Ug
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfc2NhbmZfcGFyc2UpCiNkZWZpbmUgdV9zZXRBdG9t
aWNJbmNEZWNGdW5jdGlvbnMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfc2V0QXRvbWljSW5j
RGVjRnVuY3Rpb25zKQojZGVmaW5lIHVfc2V0RGF0YURpcmVjdG9yeSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodV9zZXREYXRhRGlyZWN0b3J5KQojZGVmaW5lIHVfc2V0TWVtb3J5RnVuY3Rpb25z
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3NldE1lbW9yeUZ1bmN0aW9ucykKI2RlZmluZSB1
X3NldE11dGV4RnVuY3Rpb25zIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3NldE11dGV4RnVu
Y3Rpb25zKQojZGVmaW5lIHVfc2hhcGVBcmFiaWMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVf
c2hhcGVBcmFiaWMpCiNkZWZpbmUgdV9zbnByaW50ZiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dV9zbnByaW50ZikKI2RlZmluZSB1X3NucHJpbnRmX3UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVfc25wcmludGZfdSkKI2RlZmluZSB1X3NwcmludGYgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVfc3ByaW50ZikKI2RlZmluZSB1X3NwcmludGZfdSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dV9zcHJpbnRmX3UpCiNkZWZpbmUgdV9zc2NhbmYgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVf
c3NjYW5mKQojZGVmaW5lIHVfc3NjYW5mX3UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfc3Nj
YW5mX3UpCiNkZWZpbmUgdV9zdHJDYXNlQ29tcGFyZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dV9zdHJDYXNlQ29tcGFyZSkKI2RlZmluZSB1X3N0ckNvbXBhcmUgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVfc3RyQ29tcGFyZSkKI2RlZmluZSB1X3N0ckNvbXBhcmVJdGVyIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1X3N0ckNvbXBhcmVJdGVyKQojZGVmaW5lIHVfc3RyRmluZEZpcnN0IFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3N0ckZpbmRGaXJzdCkKI2RlZmluZSB1X3N0ckZpbmRM
YXN0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3N0ckZpbmRMYXN0KQojZGVmaW5lIHVfc3Ry
Rm9sZENhc2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfc3RyRm9sZENhc2UpCiNkZWZpbmUg
dV9zdHJGcm9tSmF2YU1vZGlmaWVkVVRGOFdpdGhTdWIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVfc3RyRnJvbUphdmFNb2RpZmllZFVURjhXaXRoU3ViKQojZGVmaW5lIHVfc3RyRnJvbVB1bnlj
b2RlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3N0ckZyb21QdW55Y29kZSkKI2RlZmluZSB1
X3N0ckZyb21VVEYzMiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9zdHJGcm9tVVRGMzIpCiNk
ZWZpbmUgdV9zdHJGcm9tVVRGMzJXaXRoU3ViIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3N0
ckZyb21VVEYzMldpdGhTdWIpCiNkZWZpbmUgdV9zdHJGcm9tVVRGOCBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodV9zdHJGcm9tVVRGOCkKI2RlZmluZSB1X3N0ckZyb21VVEY4TGVuaWVudCBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodV9zdHJGcm9tVVRGOExlbmllbnQpCiNkZWZpbmUgdV9zdHJG
cm9tVVRGOFdpdGhTdWIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfc3RyRnJvbVVURjhXaXRo
U3ViKQojZGVmaW5lIHVfc3RyRnJvbVdDUyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9zdHJG
cm9tV0NTKQojZGVmaW5lIHVfc3RySGFzTW9yZUNoYXIzMlRoYW4gVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVfc3RySGFzTW9yZUNoYXIzMlRoYW4pCiNkZWZpbmUgdV9zdHJUb0phdmFNb2RpZmll
ZFVURjggVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfc3RyVG9KYXZhTW9kaWZpZWRVVEY4KQoj
ZGVmaW5lIHVfc3RyVG9Mb3dlciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9zdHJUb0xvd2Vy
KQojZGVmaW5lIHVfc3RyVG9QdW55Y29kZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9zdHJU
b1B1bnljb2RlKQojZGVmaW5lIHVfc3RyVG9UaXRsZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dV9zdHJUb1RpdGxlKQojZGVmaW5lIHVfc3RyVG9VVEYzMiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodV9zdHJUb1VURjMyKQojZGVmaW5lIHVfc3RyVG9VVEYzMldpdGhTdWIgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVfc3RyVG9VVEYzMldpdGhTdWIpCiNkZWZpbmUgdV9zdHJUb1VURjggVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfc3RyVG9VVEY4KQojZGVmaW5lIHVfc3RyVG9VVEY4V2l0
aFN1YiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9zdHJUb1VURjhXaXRoU3ViKQojZGVmaW5l
IHVfc3RyVG9VcHBlciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9zdHJUb1VwcGVyKQojZGVm
aW5lIHVfc3RyVG9XQ1MgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfc3RyVG9XQ1MpCiNkZWZp
bmUgdV9zdHJjYXNlY21wIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3N0cmNhc2VjbXApCiNk
ZWZpbmUgdV9zdHJjYXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfc3RyY2F0KQojZGVmaW5l
IHVfc3RyY2hyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3N0cmNocikKI2RlZmluZSB1X3N0
cmNocjMyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3N0cmNocjMyKQojZGVmaW5lIHVfc3Ry
Y21wIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3N0cmNtcCkKI2RlZmluZSB1X3N0cmNtcENv
ZGVQb2ludE9yZGVyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3N0cmNtcENvZGVQb2ludE9y
ZGVyKQojZGVmaW5lIHVfc3RyY21wRm9sZCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9zdHJj
bXBGb2xkKQojZGVmaW5lIHVfc3RyY3B5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3N0cmNw
eSkKI2RlZmluZSB1X3N0cmNzcG4gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfc3RyY3NwbikK
I2RlZmluZSB1X3N0cmxlbiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9zdHJsZW4pCiNkZWZp
bmUgdV9zdHJuY2FzZWNtcCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9zdHJuY2FzZWNtcCkK
I2RlZmluZSB1X3N0cm5jYXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfc3RybmNhdCkKI2Rl
ZmluZSB1X3N0cm5jbXAgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfc3RybmNtcCkKI2RlZmlu
ZSB1X3N0cm5jbXBDb2RlUG9pbnRPcmRlciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9zdHJu
Y21wQ29kZVBvaW50T3JkZXIpCiNkZWZpbmUgdV9zdHJuY3B5IFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1X3N0cm5jcHkpCiNkZWZpbmUgdV9zdHJwYnJrIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1X3N0cnBicmspCiNkZWZpbmUgdV9zdHJyY2hyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
X3N0cnJjaHIpCiNkZWZpbmUgdV9zdHJyY2hyMzIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVf
c3RycmNocjMyKQojZGVmaW5lIHVfc3RycnN0ciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9z
dHJyc3RyKQojZGVmaW5lIHVfc3Ryc3BuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3N0cnNw
bikKI2RlZmluZSB1X3N0cnN0ciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9zdHJzdHIpCiNk
ZWZpbmUgdV9zdHJ0b2tfciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV9zdHJ0b2tfcikKI2Rl
ZmluZSB1X3Rlcm1pbmF0ZUNoYXJzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3Rlcm1pbmF0
ZUNoYXJzKQojZGVmaW5lIHVfdGVybWluYXRlVUNoYXIzMnMgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVfdGVybWluYXRlVUNoYXIzMnMpCiNkZWZpbmUgdV90ZXJtaW5hdGVVQ2hhcnMgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVfdGVybWluYXRlVUNoYXJzKQojZGVmaW5lIHVfdGVybWluYXRl
V0NoYXJzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3Rlcm1pbmF0ZVdDaGFycykKI2RlZmlu
ZSB1X3RvbG93ZXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfdG9sb3dlcikKI2RlZmluZSB1
X3RvdGl0bGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfdG90aXRsZSkKI2RlZmluZSB1X3Rv
dXBwZXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfdG91cHBlcikKI2RlZmluZSB1X3Vhc3Ry
Y3B5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3Vhc3RyY3B5KQojZGVmaW5lIHVfdWFzdHJu
Y3B5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3Vhc3RybmNweSkKI2RlZmluZSB1X3VuZXNj
YXBlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3VuZXNjYXBlKQojZGVmaW5lIHVfdW5lc2Nh
cGVBdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV91bmVzY2FwZUF0KQojZGVmaW5lIHVfdmVy
c2lvbkZyb21TdHJpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfdmVyc2lvbkZyb21TdHJp
bmcpCiNkZWZpbmUgdV92ZXJzaW9uRnJvbVVTdHJpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVfdmVyc2lvbkZyb21VU3RyaW5nKQojZGVmaW5lIHVfdmVyc2lvblRvU3RyaW5nIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1X3ZlcnNpb25Ub1N0cmluZykKI2RlZmluZSB1X3Zmb3JtYXRNZXNz
YWdlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3Zmb3JtYXRNZXNzYWdlKQojZGVmaW5lIHVf
dmZvcm1hdE1lc3NhZ2VXaXRoRXJyb3IgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfdmZvcm1h
dE1lc3NhZ2VXaXRoRXJyb3IpCiNkZWZpbmUgdV92ZnByaW50ZiBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodV92ZnByaW50ZikKI2RlZmluZSB1X3ZmcHJpbnRmX3UgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVfdmZwcmludGZfdSkKI2RlZmluZSB1X3Zmc2NhbmYgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVfdmZzY2FuZikKI2RlZmluZSB1X3Zmc2NhbmZfdSBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodV92ZnNjYW5mX3UpCiNkZWZpbmUgdV92cGFyc2VNZXNzYWdlIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1X3ZwYXJzZU1lc3NhZ2UpCiNkZWZpbmUgdV92cGFyc2VNZXNzYWdlV2l0aEVy
cm9yIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3ZwYXJzZU1lc3NhZ2VXaXRoRXJyb3IpCiNk
ZWZpbmUgdV92c25wcmludGYgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfdnNucHJpbnRmKQoj
ZGVmaW5lIHVfdnNucHJpbnRmX3UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfdnNucHJpbnRm
X3UpCiNkZWZpbmUgdV92c3ByaW50ZiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV92c3ByaW50
ZikKI2RlZmluZSB1X3ZzcHJpbnRmX3UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfdnNwcmlu
dGZfdSkKI2RlZmluZSB1X3Zzc2NhbmYgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfdnNzY2Fu
ZikKI2RlZmluZSB1X3Zzc2NhbmZfdSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodV92c3NjYW5m
X3UpCiNkZWZpbmUgdV93cml0ZURpZmYgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVfd3JpdGVE
aWZmKQojZGVmaW5lIHVfd3JpdGVJZGVudGljYWxMZXZlbFJ1biBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodV93cml0ZUlkZW50aWNhbExldmVsUnVuKQojZGVmaW5lIHVfd3JpdGVJZGVudGljYWxM
ZXZlbFJ1blR3b0NoYXJzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1X3dyaXRlSWRlbnRpY2Fs
TGV2ZWxSdW5Ud29DaGFycykKI2RlZmluZSB1YmlkaV9hZGRQcm9wZXJ0eVN0YXJ0cyBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodWJpZGlfYWRkUHJvcGVydHlTdGFydHMpCiNkZWZpbmUgdWJpZGlf
Y2xvc2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHViaWRpX2Nsb3NlKQojZGVmaW5lIHViaWRp
X2NvdW50UGFyYWdyYXBocyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJpZGlfY291bnRQYXJh
Z3JhcGhzKQojZGVmaW5lIHViaWRpX2NvdW50UnVucyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dWJpZGlfY291bnRSdW5zKQojZGVmaW5lIHViaWRpX2dldEJhc2VEaXJlY3Rpb24gVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHViaWRpX2dldEJhc2VEaXJlY3Rpb24pCiNkZWZpbmUgdWJpZGlfZ2V0
Q2xhc3MgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHViaWRpX2dldENsYXNzKQojZGVmaW5lIHVi
aWRpX2dldENsYXNzQ2FsbGJhY2sgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHViaWRpX2dldENs
YXNzQ2FsbGJhY2spCiNkZWZpbmUgdWJpZGlfZ2V0Q3VzdG9taXplZENsYXNzIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1YmlkaV9nZXRDdXN0b21pemVkQ2xhc3MpCiNkZWZpbmUgdWJpZGlfZ2V0
RGlyZWN0aW9uIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YmlkaV9nZXREaXJlY3Rpb24pCiNk
ZWZpbmUgdWJpZGlfZ2V0Sm9pbmluZ0dyb3VwIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Ymlk
aV9nZXRKb2luaW5nR3JvdXApCiNkZWZpbmUgdWJpZGlfZ2V0Sm9pbmluZ1R5cGUgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHViaWRpX2dldEpvaW5pbmdUeXBlKQojZGVmaW5lIHViaWRpX2dldExl
bmd0aCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJpZGlfZ2V0TGVuZ3RoKQojZGVmaW5lIHVi
aWRpX2dldExldmVsQXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHViaWRpX2dldExldmVsQXQp
CiNkZWZpbmUgdWJpZGlfZ2V0TGV2ZWxzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YmlkaV9n
ZXRMZXZlbHMpCiNkZWZpbmUgdWJpZGlfZ2V0TG9naWNhbEluZGV4IFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1YmlkaV9nZXRMb2dpY2FsSW5kZXgpCiNkZWZpbmUgdWJpZGlfZ2V0TG9naWNhbE1h
cCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJpZGlfZ2V0TG9naWNhbE1hcCkKI2RlZmluZSB1
YmlkaV9nZXRMb2dpY2FsUnVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YmlkaV9nZXRMb2dp
Y2FsUnVuKQojZGVmaW5lIHViaWRpX2dldE1heFZhbHVlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1YmlkaV9nZXRNYXhWYWx1ZSkKI2RlZmluZSB1YmlkaV9nZXRNZW1vcnkgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHViaWRpX2dldE1lbW9yeSkKI2RlZmluZSB1YmlkaV9nZXRNaXJyb3IgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHViaWRpX2dldE1pcnJvcikKI2RlZmluZSB1YmlkaV9nZXRQ
YWlyZWRCcmFja2V0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YmlkaV9nZXRQYWlyZWRCcmFj
a2V0KQojZGVmaW5lIHViaWRpX2dldFBhaXJlZEJyYWNrZXRUeXBlIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1YmlkaV9nZXRQYWlyZWRCcmFja2V0VHlwZSkKI2RlZmluZSB1YmlkaV9nZXRQYXJh
TGV2ZWwgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHViaWRpX2dldFBhcmFMZXZlbCkKI2RlZmlu
ZSB1YmlkaV9nZXRQYXJhTGV2ZWxBdEluZGV4IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Ymlk
aV9nZXRQYXJhTGV2ZWxBdEluZGV4KQojZGVmaW5lIHViaWRpX2dldFBhcmFncmFwaCBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodWJpZGlfZ2V0UGFyYWdyYXBoKQojZGVmaW5lIHViaWRpX2dldFBh
cmFncmFwaEJ5SW5kZXggVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHViaWRpX2dldFBhcmFncmFw
aEJ5SW5kZXgpCiNkZWZpbmUgdWJpZGlfZ2V0UHJvY2Vzc2VkTGVuZ3RoIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1YmlkaV9nZXRQcm9jZXNzZWRMZW5ndGgpCiNkZWZpbmUgdWJpZGlfZ2V0UmVv
cmRlcmluZ01vZGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHViaWRpX2dldFJlb3JkZXJpbmdN
b2RlKQojZGVmaW5lIHViaWRpX2dldFJlb3JkZXJpbmdPcHRpb25zIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1YmlkaV9nZXRSZW9yZGVyaW5nT3B0aW9ucykKI2RlZmluZSB1YmlkaV9nZXRSZXN1
bHRMZW5ndGggVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHViaWRpX2dldFJlc3VsdExlbmd0aCkK
I2RlZmluZSB1YmlkaV9nZXRSdW5zIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YmlkaV9nZXRS
dW5zKQojZGVmaW5lIHViaWRpX2dldFNpbmdsZXRvbiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dWJpZGlfZ2V0U2luZ2xldG9uKQojZGVmaW5lIHViaWRpX2dldFRleHQgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHViaWRpX2dldFRleHQpCiNkZWZpbmUgdWJpZGlfZ2V0VmlzdWFsSW5kZXggVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHViaWRpX2dldFZpc3VhbEluZGV4KQojZGVmaW5lIHViaWRp
X2dldFZpc3VhbE1hcCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJpZGlfZ2V0VmlzdWFsTWFw
KQojZGVmaW5lIHViaWRpX2dldFZpc3VhbFJ1biBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJp
ZGlfZ2V0VmlzdWFsUnVuKQojZGVmaW5lIHViaWRpX2ludmVydE1hcCBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWJpZGlfaW52ZXJ0TWFwKQojZGVmaW5lIHViaWRpX2lzQmlkaUNvbnRyb2wgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHViaWRpX2lzQmlkaUNvbnRyb2wpCiNkZWZpbmUgdWJpZGlf
aXNJbnZlcnNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YmlkaV9pc0ludmVyc2UpCiNkZWZp
bmUgdWJpZGlfaXNKb2luQ29udHJvbCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJpZGlfaXNK
b2luQ29udHJvbCkKI2RlZmluZSB1YmlkaV9pc01pcnJvcmVkIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1YmlkaV9pc01pcnJvcmVkKQojZGVmaW5lIHViaWRpX2lzT3JkZXJQYXJhZ3JhcGhzTFRS
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YmlkaV9pc09yZGVyUGFyYWdyYXBoc0xUUikKI2Rl
ZmluZSB1YmlkaV9vcGVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YmlkaV9vcGVuKQojZGVm
aW5lIHViaWRpX29wZW5TaXplZCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJpZGlfb3BlblNp
emVkKQojZGVmaW5lIHViaWRpX29yZGVyUGFyYWdyYXBoc0xUUiBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodWJpZGlfb3JkZXJQYXJhZ3JhcGhzTFRSKQojZGVmaW5lIHViaWRpX3Jlb3JkZXJMb2dp
Y2FsIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YmlkaV9yZW9yZGVyTG9naWNhbCkKI2RlZmlu
ZSB1YmlkaV9yZW9yZGVyVmlzdWFsIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YmlkaV9yZW9y
ZGVyVmlzdWFsKQojZGVmaW5lIHViaWRpX3NldENsYXNzQ2FsbGJhY2sgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHViaWRpX3NldENsYXNzQ2FsbGJhY2spCiNkZWZpbmUgdWJpZGlfc2V0Q29udGV4
dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJpZGlfc2V0Q29udGV4dCkKI2RlZmluZSB1Ymlk
aV9zZXRJbnZlcnNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YmlkaV9zZXRJbnZlcnNlKQoj
ZGVmaW5lIHViaWRpX3NldExpbmUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHViaWRpX3NldExp
bmUpCiNkZWZpbmUgdWJpZGlfc2V0UGFyYSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJpZGlf
c2V0UGFyYSkKI2RlZmluZSB1YmlkaV9zZXRSZW9yZGVyaW5nTW9kZSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWJpZGlfc2V0UmVvcmRlcmluZ01vZGUpCiNkZWZpbmUgdWJpZGlfc2V0UmVvcmRl
cmluZ09wdGlvbnMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHViaWRpX3NldFJlb3JkZXJpbmdP
cHRpb25zKQojZGVmaW5lIHViaWRpX3dyaXRlUmVvcmRlcmVkIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1YmlkaV93cml0ZVJlb3JkZXJlZCkKI2RlZmluZSB1YmlkaV93cml0ZVJldmVyc2UgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHViaWRpX3dyaXRlUmV2ZXJzZSkKI2RlZmluZSB1YmxvY2tf
Z2V0Q29kZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJsb2NrX2dldENvZGUpCiNkZWZpbmUg
dWJya19jbG9zZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJya19jbG9zZSkKI2RlZmluZSB1
YnJrX2NvdW50QXZhaWxhYmxlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YnJrX2NvdW50QXZh
aWxhYmxlKQojZGVmaW5lIHVicmtfY3VycmVudCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJy
a19jdXJyZW50KQojZGVmaW5lIHVicmtfZmlyc3QgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVi
cmtfZmlyc3QpCiNkZWZpbmUgdWJya19mb2xsb3dpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVicmtfZm9sbG93aW5nKQojZGVmaW5lIHVicmtfZ2V0QXZhaWxhYmxlIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1YnJrX2dldEF2YWlsYWJsZSkKI2RlZmluZSB1YnJrX2dldExvY2FsZUJ5VHlw
ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJya19nZXRMb2NhbGVCeVR5cGUpCiNkZWZpbmUg
dWJya19nZXRSdWxlU3RhdHVzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YnJrX2dldFJ1bGVT
dGF0dXMpCiNkZWZpbmUgdWJya19nZXRSdWxlU3RhdHVzVmVjIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1YnJrX2dldFJ1bGVTdGF0dXNWZWMpCiNkZWZpbmUgdWJya19pc0JvdW5kYXJ5IFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1YnJrX2lzQm91bmRhcnkpCiNkZWZpbmUgdWJya19sYXN0IFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YnJrX2xhc3QpCiNkZWZpbmUgdWJya19uZXh0IFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1YnJrX25leHQpCiNkZWZpbmUgdWJya19vcGVuIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1YnJrX29wZW4pCiNkZWZpbmUgdWJya19vcGVuUnVsZXMgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVicmtfb3BlblJ1bGVzKQojZGVmaW5lIHVicmtfcHJlY2VkaW5n
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YnJrX3ByZWNlZGluZykKI2RlZmluZSB1YnJrX3By
ZXZpb3VzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YnJrX3ByZXZpb3VzKQojZGVmaW5lIHVi
cmtfcmVmcmVzaFVUZXh0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1YnJrX3JlZnJlc2hVVGV4
dCkKI2RlZmluZSB1YnJrX3NhZmVDbG9uZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWJya19z
YWZlQ2xvbmUpCiNkZWZpbmUgdWJya19zZXRUZXh0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
YnJrX3NldFRleHQpCiNkZWZpbmUgdWJya19zZXRVVGV4dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodWJya19zZXRVVGV4dCkKI2RlZmluZSB1YnJrX3N3YXAgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVicmtfc3dhcCkKI2RlZmluZSB1Y2FsX2FkZCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dWNhbF9hZGQpCiNkZWZpbmUgdWNhbF9jbGVhciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNh
bF9jbGVhcikKI2RlZmluZSB1Y2FsX2NsZWFyRmllbGQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVjYWxfY2xlYXJGaWVsZCkKI2RlZmluZSB1Y2FsX2Nsb25lIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1Y2FsX2Nsb25lKQojZGVmaW5lIHVjYWxfY2xvc2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVjYWxfY2xvc2UpCiNkZWZpbmUgdWNhbF9jb3VudEF2YWlsYWJsZSBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodWNhbF9jb3VudEF2YWlsYWJsZSkKI2RlZmluZSB1Y2FsX2VxdWl2YWxlbnRU
byBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNhbF9lcXVpdmFsZW50VG8pCiNkZWZpbmUgdWNh
bF9nZXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjYWxfZ2V0KQojZGVmaW5lIHVjYWxfZ2V0
QXR0cmlidXRlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FsX2dldEF0dHJpYnV0ZSkKI2Rl
ZmluZSB1Y2FsX2dldEF2YWlsYWJsZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNhbF9nZXRB
dmFpbGFibGUpCiNkZWZpbmUgdWNhbF9nZXRDYW5vbmljYWxUaW1lWm9uZUlEIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1Y2FsX2dldENhbm9uaWNhbFRpbWVab25lSUQpCiNkZWZpbmUgdWNhbF9n
ZXREU1RTYXZpbmdzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FsX2dldERTVFNhdmluZ3Mp
CiNkZWZpbmUgdWNhbF9nZXREYXlPZldlZWtUeXBlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
Y2FsX2dldERheU9mV2Vla1R5cGUpCiNkZWZpbmUgdWNhbF9nZXREZWZhdWx0VGltZVpvbmUgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjYWxfZ2V0RGVmYXVsdFRpbWVab25lKQojZGVmaW5lIHVj
YWxfZ2V0RmllbGREaWZmZXJlbmNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FsX2dldEZp
ZWxkRGlmZmVyZW5jZSkKI2RlZmluZSB1Y2FsX2dldEdyZWdvcmlhbkNoYW5nZSBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodWNhbF9nZXRHcmVnb3JpYW5DaGFuZ2UpCiNkZWZpbmUgdWNhbF9nZXRL
ZXl3b3JkVmFsdWVzRm9yTG9jYWxlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FsX2dldEtl
eXdvcmRWYWx1ZXNGb3JMb2NhbGUpCiNkZWZpbmUgdWNhbF9nZXRMaW1pdCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodWNhbF9nZXRMaW1pdCkKI2RlZmluZSB1Y2FsX2dldExvY2FsZUJ5VHlwZSBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNhbF9nZXRMb2NhbGVCeVR5cGUpCiNkZWZpbmUgdWNh
bF9nZXRNaWxsaXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjYWxfZ2V0TWlsbGlzKQojZGVm
aW5lIHVjYWxfZ2V0Tm93IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FsX2dldE5vdykKI2Rl
ZmluZSB1Y2FsX2dldFRaRGF0YVZlcnNpb24gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjYWxf
Z2V0VFpEYXRhVmVyc2lvbikKI2RlZmluZSB1Y2FsX2dldFRpbWVab25lRGlzcGxheU5hbWUgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjYWxfZ2V0VGltZVpvbmVEaXNwbGF5TmFtZSkKI2RlZmlu
ZSB1Y2FsX2dldFRpbWVab25lSUQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjYWxfZ2V0VGlt
ZVpvbmVJRCkKI2RlZmluZSB1Y2FsX2dldFRpbWVab25lSURGb3JXaW5kb3dzSUQgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVjYWxfZ2V0VGltZVpvbmVJREZvcldpbmRvd3NJRCkKI2RlZmluZSB1
Y2FsX2dldFRpbWVab25lVHJhbnNpdGlvbkRhdGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVj
YWxfZ2V0VGltZVpvbmVUcmFuc2l0aW9uRGF0ZSkKI2RlZmluZSB1Y2FsX2dldFR5cGUgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVjYWxfZ2V0VHlwZSkKI2RlZmluZSB1Y2FsX2dldFdlZWtlbmRU
cmFuc2l0aW9uIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FsX2dldFdlZWtlbmRUcmFuc2l0
aW9uKQojZGVmaW5lIHVjYWxfZ2V0V2luZG93c1RpbWVab25lSUQgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVjYWxfZ2V0V2luZG93c1RpbWVab25lSUQpCiNkZWZpbmUgdWNhbF9pbkRheWxpZ2h0
VGltZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNhbF9pbkRheWxpZ2h0VGltZSkKI2RlZmlu
ZSB1Y2FsX2lzU2V0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FsX2lzU2V0KQojZGVmaW5l
IHVjYWxfaXNXZWVrZW5kIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FsX2lzV2Vla2VuZCkK
I2RlZmluZSB1Y2FsX29wZW4gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjYWxfb3BlbikKI2Rl
ZmluZSB1Y2FsX29wZW5Db3VudHJ5VGltZVpvbmVzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
Y2FsX29wZW5Db3VudHJ5VGltZVpvbmVzKQojZGVmaW5lIHVjYWxfb3BlblRpbWVab25lSURFbnVt
ZXJhdGlvbiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNhbF9vcGVuVGltZVpvbmVJREVudW1l
cmF0aW9uKQojZGVmaW5lIHVjYWxfb3BlblRpbWVab25lcyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodWNhbF9vcGVuVGltZVpvbmVzKQojZGVmaW5lIHVjYWxfcm9sbCBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWNhbF9yb2xsKQojZGVmaW5lIHVjYWxfc2V0IFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1Y2FsX3NldCkKI2RlZmluZSB1Y2FsX3NldEF0dHJpYnV0ZSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWNhbF9zZXRBdHRyaWJ1dGUpCiNkZWZpbmUgdWNhbF9zZXREYXRlIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1Y2FsX3NldERhdGUpCiNkZWZpbmUgdWNhbF9zZXREYXRlVGltZSBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNhbF9zZXREYXRlVGltZSkKI2RlZmluZSB1Y2FsX3Nl
dERlZmF1bHRUaW1lWm9uZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNhbF9zZXREZWZhdWx0
VGltZVpvbmUpCiNkZWZpbmUgdWNhbF9zZXRHcmVnb3JpYW5DaGFuZ2UgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVjYWxfc2V0R3JlZ29yaWFuQ2hhbmdlKQojZGVmaW5lIHVjYWxfc2V0TWlsbGlz
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FsX3NldE1pbGxpcykKI2RlZmluZSB1Y2FsX3Nl
dFRpbWVab25lIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FsX3NldFRpbWVab25lKQojZGVm
aW5lIHVjYXNlX2FkZENhc2VDbG9zdXJlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FzZV9h
ZGRDYXNlQ2xvc3VyZSkKI2RlZmluZSB1Y2FzZV9hZGRQcm9wZXJ0eVN0YXJ0cyBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodWNhc2VfYWRkUHJvcGVydHlTdGFydHMpCiNkZWZpbmUgdWNhc2VfYWRk
U3RyaW5nQ2FzZUNsb3N1cmUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjYXNlX2FkZFN0cmlu
Z0Nhc2VDbG9zdXJlKQojZGVmaW5lIHVjYXNlX2ZvbGQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVjYXNlX2ZvbGQpCiNkZWZpbmUgdWNhc2VfZ2V0Q2FzZUxvY2FsZSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWNhc2VfZ2V0Q2FzZUxvY2FsZSkKI2RlZmluZSB1Y2FzZV9nZXRTaW5nbGV0b24g
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjYXNlX2dldFNpbmdsZXRvbikKI2RlZmluZSB1Y2Fz
ZV9nZXRUeXBlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FzZV9nZXRUeXBlKQojZGVmaW5l
IHVjYXNlX2dldFR5cGVPcklnbm9yYWJsZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNhc2Vf
Z2V0VHlwZU9ySWdub3JhYmxlKQojZGVmaW5lIHVjYXNlX2hhc0JpbmFyeVByb3BlcnR5IFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FzZV9oYXNCaW5hcnlQcm9wZXJ0eSkKI2RlZmluZSB1Y2Fz
ZV9pc0Nhc2VTZW5zaXRpdmUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjYXNlX2lzQ2FzZVNl
bnNpdGl2ZSkKI2RlZmluZSB1Y2FzZV9pc1NvZnREb3R0ZWQgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVjYXNlX2lzU29mdERvdHRlZCkKI2RlZmluZSB1Y2FzZV90b0Z1bGxGb2xkaW5nIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FzZV90b0Z1bGxGb2xkaW5nKQojZGVmaW5lIHVjYXNlX3Rv
RnVsbExvd2VyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FzZV90b0Z1bGxMb3dlcikKI2Rl
ZmluZSB1Y2FzZV90b0Z1bGxUaXRsZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNhc2VfdG9G
dWxsVGl0bGUpCiNkZWZpbmUgdWNhc2VfdG9GdWxsVXBwZXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVjYXNlX3RvRnVsbFVwcGVyKQojZGVmaW5lIHVjYXNlX3RvbG93ZXIgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVjYXNlX3RvbG93ZXIpCiNkZWZpbmUgdWNhc2VfdG90aXRsZSBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodWNhc2VfdG90aXRsZSkKI2RlZmluZSB1Y2FzZV90b3VwcGVyIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FzZV90b3VwcGVyKQojZGVmaW5lIHVjYXNlbWFwX2Ns
b3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FzZW1hcF9jbG9zZSkKI2RlZmluZSB1Y2Fz
ZW1hcF9nZXRCcmVha0l0ZXJhdG9yIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FzZW1hcF9n
ZXRCcmVha0l0ZXJhdG9yKQojZGVmaW5lIHVjYXNlbWFwX2dldExvY2FsZSBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodWNhc2VtYXBfZ2V0TG9jYWxlKQojZGVmaW5lIHVjYXNlbWFwX2dldE9wdGlv
bnMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjYXNlbWFwX2dldE9wdGlvbnMpCiNkZWZpbmUg
dWNhc2VtYXBfaW50ZXJuYWxVVEY4VG9UaXRsZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNh
c2VtYXBfaW50ZXJuYWxVVEY4VG9UaXRsZSkKI2RlZmluZSB1Y2FzZW1hcF9tYXBVVEY4IFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FzZW1hcF9tYXBVVEY4KQojZGVmaW5lIHVjYXNlbWFwX29w
ZW4gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjYXNlbWFwX29wZW4pCiNkZWZpbmUgdWNhc2Vt
YXBfc2V0QnJlYWtJdGVyYXRvciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNhc2VtYXBfc2V0
QnJlYWtJdGVyYXRvcikKI2RlZmluZSB1Y2FzZW1hcF9zZXRMb2NhbGUgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVjYXNlbWFwX3NldExvY2FsZSkKI2RlZmluZSB1Y2FzZW1hcF9zZXRPcHRpb25z
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FzZW1hcF9zZXRPcHRpb25zKQojZGVmaW5lIHVj
YXNlbWFwX3RvVGl0bGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjYXNlbWFwX3RvVGl0bGUp
CiNkZWZpbmUgdWNhc2VtYXBfdXRmOEZvbGRDYXNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
Y2FzZW1hcF91dGY4Rm9sZENhc2UpCiNkZWZpbmUgdWNhc2VtYXBfdXRmOFRvTG93ZXIgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVjYXNlbWFwX3V0ZjhUb0xvd2VyKQojZGVmaW5lIHVjYXNlbWFw
X3V0ZjhUb1RpdGxlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y2FzZW1hcF91dGY4VG9UaXRs
ZSkKI2RlZmluZSB1Y2FzZW1hcF91dGY4VG9VcHBlciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dWNhc2VtYXBfdXRmOFRvVXBwZXIpCiNkZWZpbmUgdWNoYXJfYWRkUHJvcGVydHlTdGFydHMgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjaGFyX2FkZFByb3BlcnR5U3RhcnRzKQojZGVmaW5lIHVj
aGFyX3N3YXBOYW1lcyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNoYXJfc3dhcE5hbWVzKQoj
ZGVmaW5lIHVjbG5fY2xlYW51cE9uZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNsbl9jbGVh
bnVwT25lKQojZGVmaW5lIHVjbG5fY29tbW9uX3JlZ2lzdGVyQ2xlYW51cCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodWNsbl9jb21tb25fcmVnaXN0ZXJDbGVhbnVwKQojZGVmaW5lIHVjbG5faTE4
bl9yZWdpc3RlckNsZWFudXAgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbG5faTE4bl9yZWdp
c3RlckNsZWFudXApCiNkZWZpbmUgdWNsbl9pb19yZWdpc3RlckNsZWFudXAgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVjbG5faW9fcmVnaXN0ZXJDbGVhbnVwKQojZGVmaW5lIHVjbG5fbGliX2Ns
ZWFudXAgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbG5fbGliX2NsZWFudXApCiNkZWZpbmUg
dWNsbl9yZWdpc3RlckNsZWFudXAgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbG5fcmVnaXN0
ZXJDbGVhbnVwKQojZGVmaW5lIHVjbnZfTUJDU0Zyb21VQ2hhcjMyIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1Y252X01CQ1NGcm9tVUNoYXIzMikKI2RlZmluZSB1Y252X01CQ1NGcm9tVW5pY29k
ZVdpdGhPZmZzZXRzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X01CQ1NGcm9tVW5pY29k
ZVdpdGhPZmZzZXRzKQojZGVmaW5lIHVjbnZfTUJDU0dldEZpbHRlcmVkVW5pY29kZVNldEZvclVu
aWNvZGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZfTUJDU0dldEZpbHRlcmVkVW5pY29k
ZVNldEZvclVuaWNvZGUpCiNkZWZpbmUgdWNudl9NQkNTR2V0VHlwZSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWNudl9NQkNTR2V0VHlwZSkKI2RlZmluZSB1Y252X01CQ1NHZXRVbmljb2RlU2V0
Rm9yVW5pY29kZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl9NQkNTR2V0VW5pY29kZVNl
dEZvclVuaWNvZGUpCiNkZWZpbmUgdWNudl9NQkNTSXNMZWFkQnl0ZSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWNudl9NQkNTSXNMZWFkQnl0ZSkKI2RlZmluZSB1Y252X01CQ1NTaW1wbGVHZXRO
ZXh0VUNoYXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZfTUJDU1NpbXBsZUdldE5leHRV
Q2hhcikKI2RlZmluZSB1Y252X01CQ1NUb1VuaWNvZGVXaXRoT2Zmc2V0cyBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodWNudl9NQkNTVG9Vbmljb2RlV2l0aE9mZnNldHMpCiNkZWZpbmUgdWNudl9i
bGRfY291bnRBdmFpbGFibGVDb252ZXJ0ZXJzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252
X2JsZF9jb3VudEF2YWlsYWJsZUNvbnZlcnRlcnMpCiNkZWZpbmUgdWNudl9ibGRfZ2V0QXZhaWxh
YmxlQ29udmVydGVyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X2JsZF9nZXRBdmFpbGFi
bGVDb252ZXJ0ZXIpCiNkZWZpbmUgdWNudl9jYW5DcmVhdGVDb252ZXJ0ZXIgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVjbnZfY2FuQ3JlYXRlQ29udmVydGVyKQojZGVmaW5lIHVjbnZfY2JGcm9t
VVdyaXRlQnl0ZXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZfY2JGcm9tVVdyaXRlQnl0
ZXMpCiNkZWZpbmUgdWNudl9jYkZyb21VV3JpdGVTdWIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVjbnZfY2JGcm9tVVdyaXRlU3ViKQojZGVmaW5lIHVjbnZfY2JGcm9tVVdyaXRlVUNoYXJzIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X2NiRnJvbVVXcml0ZVVDaGFycykKI2RlZmluZSB1
Y252X2NiVG9VV3JpdGVTdWIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZfY2JUb1VXcml0
ZVN1YikKI2RlZmluZSB1Y252X2NiVG9VV3JpdGVVQ2hhcnMgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVjbnZfY2JUb1VXcml0ZVVDaGFycykKI2RlZmluZSB1Y252X2Nsb3NlIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1Y252X2Nsb3NlKQojZGVmaW5lIHVjbnZfY29tcGFyZU5hbWVzIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X2NvbXBhcmVOYW1lcykKI2RlZmluZSB1Y252X2NvbnZl
cnQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZfY29udmVydCkKI2RlZmluZSB1Y252X2Nv
bnZlcnRFeCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl9jb252ZXJ0RXgpCiNkZWZpbmUg
dWNudl9jb3VudEFsaWFzZXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZfY291bnRBbGlh
c2VzKQojZGVmaW5lIHVjbnZfY291bnRBdmFpbGFibGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVjbnZfY291bnRBdmFpbGFibGUpCiNkZWZpbmUgdWNudl9jb3VudFN0YW5kYXJkcyBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodWNudl9jb3VudFN0YW5kYXJkcykKI2RlZmluZSB1Y252X2NyZWF0
ZUFsZ29yaXRobWljQ29udmVydGVyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X2NyZWF0
ZUFsZ29yaXRobWljQ29udmVydGVyKQojZGVmaW5lIHVjbnZfY3JlYXRlQ29udmVydGVyIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X2NyZWF0ZUNvbnZlcnRlcikKI2RlZmluZSB1Y252X2Ny
ZWF0ZUNvbnZlcnRlckZyb21QYWNrYWdlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X2Ny
ZWF0ZUNvbnZlcnRlckZyb21QYWNrYWdlKQojZGVmaW5lIHVjbnZfY3JlYXRlQ29udmVydGVyRnJv
bVNoYXJlZERhdGEgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZfY3JlYXRlQ29udmVydGVy
RnJvbVNoYXJlZERhdGEpCiNkZWZpbmUgdWNudl9kZXRlY3RVbmljb2RlU2lnbmF0dXJlIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X2RldGVjdFVuaWNvZGVTaWduYXR1cmUpCiNkZWZpbmUg
dWNudl9leHRDb250aW51ZU1hdGNoRnJvbVUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZf
ZXh0Q29udGludWVNYXRjaEZyb21VKQojZGVmaW5lIHVjbnZfZXh0Q29udGludWVNYXRjaFRvVSBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl9leHRDb250aW51ZU1hdGNoVG9VKQojZGVmaW5l
IHVjbnZfZXh0R2V0VW5pY29kZVNldCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl9leHRH
ZXRVbmljb2RlU2V0KQojZGVmaW5lIHVjbnZfZXh0SW5pdGlhbE1hdGNoRnJvbVUgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVjbnZfZXh0SW5pdGlhbE1hdGNoRnJvbVUpCiNkZWZpbmUgdWNudl9l
eHRJbml0aWFsTWF0Y2hUb1UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZfZXh0SW5pdGlh
bE1hdGNoVG9VKQojZGVmaW5lIHVjbnZfZXh0U2ltcGxlTWF0Y2hGcm9tVSBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodWNudl9leHRTaW1wbGVNYXRjaEZyb21VKQojZGVmaW5lIHVjbnZfZXh0U2lt
cGxlTWF0Y2hUb1UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZfZXh0U2ltcGxlTWF0Y2hU
b1UpCiNkZWZpbmUgdWNudl9maXhGaWxlU2VwYXJhdG9yIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1Y252X2ZpeEZpbGVTZXBhcmF0b3IpCiNkZWZpbmUgdWNudl9mbHVzaENhY2hlIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1Y252X2ZsdXNoQ2FjaGUpCiNkZWZpbmUgdWNudl9mcm9tQWxnb3Jp
dGhtaWMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZfZnJvbUFsZ29yaXRobWljKQojZGVm
aW5lIHVjbnZfZnJvbVVDaGFycyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl9mcm9tVUNo
YXJzKQojZGVmaW5lIHVjbnZfZnJvbVVDb3VudFBlbmRpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVjbnZfZnJvbVVDb3VudFBlbmRpbmcpCiNkZWZpbmUgdWNudl9mcm9tVVdyaXRlQnl0ZXMg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZfZnJvbVVXcml0ZUJ5dGVzKQojZGVmaW5lIHVj
bnZfZnJvbVVuaWNvZGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZfZnJvbVVuaWNvZGUp
CiNkZWZpbmUgdWNudl9mcm9tVW5pY29kZV9VVEY4IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
Y252X2Zyb21Vbmljb2RlX1VURjgpCiNkZWZpbmUgdWNudl9mcm9tVW5pY29kZV9VVEY4X09GRlNF
VFNfTE9HSUMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZfZnJvbVVuaWNvZGVfVVRGOF9P
RkZTRVRTX0xPR0lDKQojZGVmaW5lIHVjbnZfZ2V0QWxpYXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVjbnZfZ2V0QWxpYXMpCiNkZWZpbmUgdWNudl9nZXRBbGlhc2VzIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1Y252X2dldEFsaWFzZXMpCiNkZWZpbmUgdWNudl9nZXRBdmFpbGFibGVOYW1l
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X2dldEF2YWlsYWJsZU5hbWUpCiNkZWZpbmUg
dWNudl9nZXRDQ1NJRCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl9nZXRDQ1NJRCkKI2Rl
ZmluZSB1Y252X2dldENhbm9uaWNhbE5hbWUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZf
Z2V0Q2Fub25pY2FsTmFtZSkKI2RlZmluZSB1Y252X2dldENvbXBsZXRlVW5pY29kZVNldCBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl9nZXRDb21wbGV0ZVVuaWNvZGVTZXQpCiNkZWZpbmUg
dWNudl9nZXREZWZhdWx0TmFtZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl9nZXREZWZh
dWx0TmFtZSkKI2RlZmluZSB1Y252X2dldERpc3BsYXlOYW1lIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1Y252X2dldERpc3BsYXlOYW1lKQojZGVmaW5lIHVjbnZfZ2V0RnJvbVVDYWxsQmFjayBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl9nZXRGcm9tVUNhbGxCYWNrKQojZGVmaW5lIHVj
bnZfZ2V0SW52YWxpZENoYXJzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X2dldEludmFs
aWRDaGFycykKI2RlZmluZSB1Y252X2dldEludmFsaWRVQ2hhcnMgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVjbnZfZ2V0SW52YWxpZFVDaGFycykKI2RlZmluZSB1Y252X2dldE1heENoYXJTaXpl
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X2dldE1heENoYXJTaXplKQojZGVmaW5lIHVj
bnZfZ2V0TWluQ2hhclNpemUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZfZ2V0TWluQ2hh
clNpemUpCiNkZWZpbmUgdWNudl9nZXROYW1lIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252
X2dldE5hbWUpCiNkZWZpbmUgdWNudl9nZXROZXh0VUNoYXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVjbnZfZ2V0TmV4dFVDaGFyKQojZGVmaW5lIHVjbnZfZ2V0Tm9uU3Vycm9nYXRlVW5pY29k
ZVNldCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl9nZXROb25TdXJyb2dhdGVVbmljb2Rl
U2V0KQojZGVmaW5lIHVjbnZfZ2V0UGxhdGZvcm0gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVj
bnZfZ2V0UGxhdGZvcm0pCiNkZWZpbmUgdWNudl9nZXRTdGFuZGFyZCBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWNudl9nZXRTdGFuZGFyZCkKI2RlZmluZSB1Y252X2dldFN0YW5kYXJkTmFtZSBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl9nZXRTdGFuZGFyZE5hbWUpCiNkZWZpbmUgdWNu
dl9nZXRTdGFydGVycyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl9nZXRTdGFydGVycykK
I2RlZmluZSB1Y252X2dldFN1YnN0Q2hhcnMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZf
Z2V0U3Vic3RDaGFycykKI2RlZmluZSB1Y252X2dldFRvVUNhbGxCYWNrIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1Y252X2dldFRvVUNhbGxCYWNrKQojZGVmaW5lIHVjbnZfZ2V0VHlwZSBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl9nZXRUeXBlKQojZGVmaW5lIHVjbnZfZ2V0VW5pY29k
ZVNldCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl9nZXRVbmljb2RlU2V0KQojZGVmaW5l
IHVjbnZfaW5jcmVtZW50UmVmQ291bnQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZfaW5j
cmVtZW50UmVmQ291bnQpCiNkZWZpbmUgdWNudl9pb19jb3VudEtub3duQ29udmVydGVycyBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl9pb19jb3VudEtub3duQ29udmVydGVycykKI2RlZmlu
ZSB1Y252X2lvX2dldENvbnZlcnRlck5hbWUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZf
aW9fZ2V0Q29udmVydGVyTmFtZSkKI2RlZmluZSB1Y252X2lvX3N0cmlwQVNDSUlGb3JDb21wYXJl
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X2lvX3N0cmlwQVNDSUlGb3JDb21wYXJlKQoj
ZGVmaW5lIHVjbnZfaW9fc3RyaXBFQkNESUNGb3JDb21wYXJlIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1Y252X2lvX3N0cmlwRUJDRElDRm9yQ29tcGFyZSkKI2RlZmluZSB1Y252X2lzQW1iaWd1
b3VzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X2lzQW1iaWd1b3VzKQojZGVmaW5lIHVj
bnZfaXNGaXhlZFdpZHRoIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X2lzRml4ZWRXaWR0
aCkKI2RlZmluZSB1Y252X2xvYWQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZfbG9hZCkK
I2RlZmluZSB1Y252X2xvYWRTaGFyZWREYXRhIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252
X2xvYWRTaGFyZWREYXRhKQojZGVmaW5lIHVjbnZfb3BlbiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodWNudl9vcGVuKQojZGVmaW5lIHVjbnZfb3BlbkFsbE5hbWVzIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1Y252X29wZW5BbGxOYW1lcykKI2RlZmluZSB1Y252X29wZW5DQ1NJRCBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodWNudl9vcGVuQ0NTSUQpCiNkZWZpbmUgdWNudl9vcGVuUGFja2Fn
ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl9vcGVuUGFja2FnZSkKI2RlZmluZSB1Y252
X29wZW5TdGFuZGFyZE5hbWVzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X29wZW5TdGFu
ZGFyZE5hbWVzKQojZGVmaW5lIHVjbnZfb3BlblUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVj
bnZfb3BlblUpCiNkZWZpbmUgdWNudl9yZXNldCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNu
dl9yZXNldCkKI2RlZmluZSB1Y252X3Jlc2V0RnJvbVVuaWNvZGUgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVjbnZfcmVzZXRGcm9tVW5pY29kZSkKI2RlZmluZSB1Y252X3Jlc2V0VG9Vbmljb2Rl
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X3Jlc2V0VG9Vbmljb2RlKQojZGVmaW5lIHVj
bnZfc2FmZUNsb25lIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X3NhZmVDbG9uZSkKI2Rl
ZmluZSB1Y252X3NldERlZmF1bHROYW1lIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X3Nl
dERlZmF1bHROYW1lKQojZGVmaW5lIHVjbnZfc2V0RmFsbGJhY2sgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVjbnZfc2V0RmFsbGJhY2spCiNkZWZpbmUgdWNudl9zZXRGcm9tVUNhbGxCYWNrIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X3NldEZyb21VQ2FsbEJhY2spCiNkZWZpbmUgdWNu
dl9zZXRTdWJzdENoYXJzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X3NldFN1YnN0Q2hh
cnMpCiNkZWZpbmUgdWNudl9zZXRTdWJzdFN0cmluZyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dWNudl9zZXRTdWJzdFN0cmluZykKI2RlZmluZSB1Y252X3NldFRvVUNhbGxCYWNrIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1Y252X3NldFRvVUNhbGxCYWNrKQojZGVmaW5lIHVjbnZfc3dhcCBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl9zd2FwKQojZGVmaW5lIHVjbnZfc3dhcEFsaWFz
ZXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZfc3dhcEFsaWFzZXMpCiNkZWZpbmUgdWNu
dl90b0FsZ29yaXRobWljIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X3RvQWxnb3JpdGht
aWMpCiNkZWZpbmUgdWNudl90b1VDaGFycyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl90
b1VDaGFycykKI2RlZmluZSB1Y252X3RvVUNvdW50UGVuZGluZyBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodWNudl90b1VDb3VudFBlbmRpbmcpCiNkZWZpbmUgdWNudl90b1VXcml0ZUNvZGVQb2lu
dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl90b1VXcml0ZUNvZGVQb2ludCkKI2RlZmlu
ZSB1Y252X3RvVVdyaXRlVUNoYXJzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252X3RvVVdy
aXRlVUNoYXJzKQojZGVmaW5lIHVjbnZfdG9Vbmljb2RlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1Y252X3RvVW5pY29kZSkKI2RlZmluZSB1Y252X3VubG9hZCBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodWNudl91bmxvYWQpCiNkZWZpbmUgdWNudl91bmxvYWRTaGFyZWREYXRhSWZSZWFkeSBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl91bmxvYWRTaGFyZWREYXRhSWZSZWFkeSkKI2Rl
ZmluZSB1Y252X3VzZXNGYWxsYmFjayBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudl91c2Vz
RmFsbGJhY2spCiNkZWZpbmUgdWNudnNlbF9jbG9zZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dWNudnNlbF9jbG9zZSkKI2RlZmluZSB1Y252c2VsX29wZW4gVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVjbnZzZWxfb3BlbikKI2RlZmluZSB1Y252c2VsX29wZW5Gcm9tU2VyaWFsaXplZCBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodWNudnNlbF9vcGVuRnJvbVNlcmlhbGl6ZWQpCiNkZWZpbmUg
dWNudnNlbF9zZWxlY3RGb3JTdHJpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjbnZzZWxf
c2VsZWN0Rm9yU3RyaW5nKQojZGVmaW5lIHVjbnZzZWxfc2VsZWN0Rm9yVVRGOCBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodWNudnNlbF9zZWxlY3RGb3JVVEY4KQojZGVmaW5lIHVjbnZzZWxfc2Vy
aWFsaXplIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y252c2VsX3NlcmlhbGl6ZSkKI2RlZmlu
ZSB1Y29sX2FsbG9jV2VpZ2h0cyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9hbGxvY1dl
aWdodHMpCiNkZWZpbmUgdWNvbF9hc3NlbWJsZVRhaWxvcmluZ1RhYmxlIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1Y29sX2Fzc2VtYmxlVGFpbG9yaW5nVGFibGUpCiNkZWZpbmUgdWNvbF9idWls
ZFBlcm11dGF0aW9uVGFibGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjb2xfYnVpbGRQZXJt
dXRhdGlvblRhYmxlKQojZGVmaW5lIHVjb2xfY2FsY1NvcnRLZXkgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVjb2xfY2FsY1NvcnRLZXkpCiNkZWZpbmUgdWNvbF9jYWxjU29ydEtleVNpbXBsZVRl
cnRpYXJ5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX2NhbGNTb3J0S2V5U2ltcGxlVGVy
dGlhcnkpCiNkZWZpbmUgdWNvbF9jbG9uZUJpbmFyeSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dWNvbF9jbG9uZUJpbmFyeSkKI2RlZmluZSB1Y29sX2Nsb3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1Y29sX2Nsb3NlKQojZGVmaW5lIHVjb2xfY2xvc2VFbGVtZW50cyBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodWNvbF9jbG9zZUVsZW1lbnRzKQojZGVmaW5lIHVjb2xfY291bnRBdmFpbGFi
bGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjb2xfY291bnRBdmFpbGFibGUpCiNkZWZpbmUg
dWNvbF9jcmVhdGVFbGVtZW50cyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9jcmVhdGVF
bGVtZW50cykKI2RlZmluZSB1Y29sX2RvQ0UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjb2xf
ZG9DRSkKI2RlZmluZSB1Y29sX2VxdWFsIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX2Vx
dWFsKQojZGVmaW5lIHVjb2xfZXF1YWxzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX2Vx
dWFscykKI2RlZmluZSB1Y29sX2ZpbmRSZW9yZGVyaW5nRW50cnkgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVjb2xfZmluZFJlb3JkZXJpbmdFbnRyeSkKI2RlZmluZSB1Y29sX2ZvcmNlSGFuSW1w
bGljaXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjb2xfZm9yY2VIYW5JbXBsaWNpdCkKI2Rl
ZmluZSB1Y29sX2ZvcmdldFVDQSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9mb3JnZXRV
Q0EpCiNkZWZpbmUgdWNvbF9mcmVlT2Zmc2V0QnVmZmVyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1Y29sX2ZyZWVPZmZzZXRCdWZmZXIpCiNkZWZpbmUgdWNvbF9nZXRBdHRyaWJ1dGUgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVjb2xfZ2V0QXR0cmlidXRlKQojZGVmaW5lIHVjb2xfZ2V0QXR0
cmlidXRlT3JEZWZhdWx0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX2dldEF0dHJpYnV0
ZU9yRGVmYXVsdCkKI2RlZmluZSB1Y29sX2dldEF2YWlsYWJsZSBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodWNvbF9nZXRBdmFpbGFibGUpCiNkZWZpbmUgdWNvbF9nZXRCb3VuZCBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodWNvbF9nZXRCb3VuZCkKI2RlZmluZSB1Y29sX2dldENFU3RyZW5ndGhE
aWZmZXJlbmNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX2dldENFU3RyZW5ndGhEaWZm
ZXJlbmNlKQojZGVmaW5lIHVjb2xfZ2V0Q29sbGF0aW9uS2V5IFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1Y29sX2dldENvbGxhdGlvbktleSkKI2RlZmluZSB1Y29sX2dldENvbnRyYWN0aW9ucyBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9nZXRDb250cmFjdGlvbnMpCiNkZWZpbmUgdWNv
bF9nZXRDb250cmFjdGlvbnNBbmRFeHBhbnNpb25zIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
Y29sX2dldENvbnRyYWN0aW9uc0FuZEV4cGFuc2lvbnMpCiNkZWZpbmUgdWNvbF9nZXREaXNwbGF5
TmFtZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9nZXREaXNwbGF5TmFtZSkKI2RlZmlu
ZSB1Y29sX2dldEVxdWl2YWxlbnRSZW9yZGVyQ29kZXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVjb2xfZ2V0RXF1aXZhbGVudFJlb3JkZXJDb2RlcykKI2RlZmluZSB1Y29sX2dldEZpcnN0Q0Ug
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjb2xfZ2V0Rmlyc3RDRSkKI2RlZmluZSB1Y29sX2dl
dEZ1bmN0aW9uYWxFcXVpdmFsZW50IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX2dldEZ1
bmN0aW9uYWxFcXVpdmFsZW50KQojZGVmaW5lIHVjb2xfZ2V0S2V5d29yZFZhbHVlcyBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodWNvbF9nZXRLZXl3b3JkVmFsdWVzKQojZGVmaW5lIHVjb2xfZ2V0
S2V5d29yZFZhbHVlc0ZvckxvY2FsZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9nZXRL
ZXl3b3JkVmFsdWVzRm9yTG9jYWxlKQojZGVmaW5lIHVjb2xfZ2V0S2V5d29yZHMgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVjb2xfZ2V0S2V5d29yZHMpCiNkZWZpbmUgdWNvbF9nZXRMZWFkQnl0
ZXNGb3JSZW9yZGVyQ29kZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9nZXRMZWFkQnl0
ZXNGb3JSZW9yZGVyQ29kZSkKI2RlZmluZSB1Y29sX2dldExvY2FsZSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWNvbF9nZXRMb2NhbGUpCiNkZWZpbmUgdWNvbF9nZXRMb2NhbGVCeVR5cGUgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjb2xfZ2V0TG9jYWxlQnlUeXBlKQojZGVmaW5lIHVjb2xf
Z2V0TWF4RXhwYW5zaW9uIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX2dldE1heEV4cGFu
c2lvbikKI2RlZmluZSB1Y29sX2dldE5leHRDRSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNv
bF9nZXROZXh0Q0UpCiNkZWZpbmUgdWNvbF9nZXRPZmZzZXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVjb2xfZ2V0T2Zmc2V0KQojZGVmaW5lIHVjb2xfZ2V0UHJldkNFIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1Y29sX2dldFByZXZDRSkKI2RlZmluZSB1Y29sX2dldFJlb3JkZXJDb2RlcyBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9nZXRSZW9yZGVyQ29kZXMpCiNkZWZpbmUgdWNv
bF9nZXRSZW9yZGVyQ29kZXNGb3JMZWFkQnl0ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNv
bF9nZXRSZW9yZGVyQ29kZXNGb3JMZWFkQnl0ZSkKI2RlZmluZSB1Y29sX2dldFJ1bGVzIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX2dldFJ1bGVzKQojZGVmaW5lIHVjb2xfZ2V0UnVsZXNF
eCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9nZXRSdWxlc0V4KQojZGVmaW5lIHVjb2xf
Z2V0U2hvcnREZWZpbml0aW9uU3RyaW5nIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX2dl
dFNob3J0RGVmaW5pdGlvblN0cmluZykKI2RlZmluZSB1Y29sX2dldFNvcnRLZXkgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVjb2xfZ2V0U29ydEtleSkKI2RlZmluZSB1Y29sX2dldFN0cmVuZ3Ro
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX2dldFN0cmVuZ3RoKQojZGVmaW5lIHVjb2xf
Z2V0VGFpbG9yZWRTZXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjb2xfZ2V0VGFpbG9yZWRT
ZXQpCiNkZWZpbmUgdWNvbF9nZXRVQ0FWZXJzaW9uIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
Y29sX2dldFVDQVZlcnNpb24pCiNkZWZpbmUgdWNvbF9nZXRVbnNhZmVTZXQgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVjb2xfZ2V0VW5zYWZlU2V0KQojZGVmaW5lIHVjb2xfZ2V0VmFyaWFibGVU
b3AgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjb2xfZ2V0VmFyaWFibGVUb3ApCiNkZWZpbmUg
dWNvbF9nZXRWZXJzaW9uIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX2dldFZlcnNpb24p
CiNkZWZpbmUgdWNvbF9ncmVhdGVyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX2dyZWF0
ZXIpCiNkZWZpbmUgdWNvbF9ncmVhdGVyT3JFcXVhbCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dWNvbF9ncmVhdGVyT3JFcXVhbCkKI2RlZmluZSB1Y29sX2luaXRCdWZmZXJzIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1Y29sX2luaXRCdWZmZXJzKQojZGVmaW5lIHVjb2xfaW5pdENvbGxhdG9y
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX2luaXRDb2xsYXRvcikKI2RlZmluZSB1Y29s
X2luaXRJbnZlcnNlVUNBIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX2luaXRJbnZlcnNl
VUNBKQojZGVmaW5lIHVjb2xfaW5pdFVDQSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9p
bml0VUNBKQojZGVmaW5lIHVjb2xfaW52X2dldE5leHRDRSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodWNvbF9pbnZfZ2V0TmV4dENFKQojZGVmaW5lIHVjb2xfaW52X2dldFByZXZDRSBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodWNvbF9pbnZfZ2V0UHJldkNFKQojZGVmaW5lIHVjb2xfaXNUYWls
b3JlZCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9pc1RhaWxvcmVkKQojZGVmaW5lIHVj
b2xfa2V5SGFzaENvZGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjb2xfa2V5SGFzaENvZGUp
CiNkZWZpbmUgdWNvbF9sb29rc0xpa2VDb2xsYXRpb25CaW5hcnkgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVjb2xfbG9va3NMaWtlQ29sbGF0aW9uQmluYXJ5KQojZGVmaW5lIHVjb2xfbWVyZ2VT
b3J0a2V5cyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9tZXJnZVNvcnRrZXlzKQojZGVm
aW5lIHVjb2xfbmV4dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9uZXh0KQojZGVmaW5l
IHVjb2xfbmV4dFByb2Nlc3NlZCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9uZXh0UHJv
Y2Vzc2VkKQojZGVmaW5lIHVjb2xfbmV4dFNvcnRLZXlQYXJ0IFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1Y29sX25leHRTb3J0S2V5UGFydCkKI2RlZmluZSB1Y29sX25leHRXZWlnaHQgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVjb2xfbmV4dFdlaWdodCkKI2RlZmluZSB1Y29sX25vcm1hbGl6
ZVNob3J0RGVmaW5pdGlvblN0cmluZyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9ub3Jt
YWxpemVTaG9ydERlZmluaXRpb25TdHJpbmcpCiNkZWZpbmUgdWNvbF9vcGVuIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1Y29sX29wZW4pCiNkZWZpbmUgdWNvbF9vcGVuQXZhaWxhYmxlTG9jYWxl
cyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9vcGVuQXZhaWxhYmxlTG9jYWxlcykKI2Rl
ZmluZSB1Y29sX29wZW5CaW5hcnkgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjb2xfb3BlbkJp
bmFyeSkKI2RlZmluZSB1Y29sX29wZW5FbGVtZW50cyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dWNvbF9vcGVuRWxlbWVudHMpCiNkZWZpbmUgdWNvbF9vcGVuRnJvbVNob3J0U3RyaW5nIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX29wZW5Gcm9tU2hvcnRTdHJpbmcpCiNkZWZpbmUgdWNv
bF9vcGVuUnVsZXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjb2xfb3BlblJ1bGVzKQojZGVm
aW5lIHVjb2xfb3BlblJ1bGVzRm9ySW1wb3J0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29s
X29wZW5SdWxlc0ZvckltcG9ydCkKI2RlZmluZSB1Y29sX29wZW5faW50ZXJuYWwgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVjb2xfb3Blbl9pbnRlcm5hbCkKI2RlZmluZSB1Y29sX3ByZXBhcmVT
aG9ydFN0cmluZ09wZW4gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjb2xfcHJlcGFyZVNob3J0
U3RyaW5nT3BlbikKI2RlZmluZSB1Y29sX3ByZXZpb3VzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1Y29sX3ByZXZpb3VzKQojZGVmaW5lIHVjb2xfcHJldmlvdXNQcm9jZXNzZWQgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVjb2xfcHJldmlvdXNQcm9jZXNzZWQpCiNkZWZpbmUgdWNvbF9wcmlt
YXJ5T3JkZXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjb2xfcHJpbWFyeU9yZGVyKQojZGVm
aW5lIHVjb2xfcHJ2X2dldFNwZWNpYWxDRSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9w
cnZfZ2V0U3BlY2lhbENFKQojZGVmaW5lIHVjb2xfcHJ2X2dldFNwZWNpYWxQcmV2Q0UgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVjb2xfcHJ2X2dldFNwZWNpYWxQcmV2Q0UpCiNkZWZpbmUgdWNv
bF9yZXNldCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9yZXNldCkKI2RlZmluZSB1Y29s
X3Jlc3RvcmVWYXJpYWJsZVRvcCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9yZXN0b3Jl
VmFyaWFibGVUb3ApCiNkZWZpbmUgdWNvbF9zYWZlQ2xvbmUgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVjb2xfc2FmZUNsb25lKQojZGVmaW5lIHVjb2xfc2Vjb25kYXJ5T3JkZXIgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVjb2xfc2Vjb25kYXJ5T3JkZXIpCiNkZWZpbmUgdWNvbF9zZXRBdHRy
aWJ1dGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjb2xfc2V0QXR0cmlidXRlKQojZGVmaW5l
IHVjb2xfc2V0T2Zmc2V0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX3NldE9mZnNldCkK
I2RlZmluZSB1Y29sX3NldE9wdGlvbnNGcm9tSGVhZGVyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1Y29sX3NldE9wdGlvbnNGcm9tSGVhZGVyKQojZGVmaW5lIHVjb2xfc2V0UmVvcmRlckNvZGVz
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX3NldFJlb3JkZXJDb2RlcykKI2RlZmluZSB1
Y29sX3NldFJlcVZhbGlkTG9jYWxlcyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9zZXRS
ZXFWYWxpZExvY2FsZXMpCiNkZWZpbmUgdWNvbF9zZXRTdHJlbmd0aCBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWNvbF9zZXRTdHJlbmd0aCkKI2RlZmluZSB1Y29sX3NldFRleHQgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVjb2xfc2V0VGV4dCkKI2RlZmluZSB1Y29sX3NldFZhcmlhYmxlVG9w
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX3NldFZhcmlhYmxlVG9wKQojZGVmaW5lIHVj
b2xfc3RyY29sbCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF9zdHJjb2xsKQojZGVmaW5l
IHVjb2xfc3RyY29sbEl0ZXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjb2xfc3RyY29sbEl0
ZXIpCiNkZWZpbmUgdWNvbF9zdHJjb2xsVVRGOCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNv
bF9zdHJjb2xsVVRGOCkKI2RlZmluZSB1Y29sX3N3YXAgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVjb2xfc3dhcCkKI2RlZmluZSB1Y29sX3N3YXBCaW5hcnkgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVjb2xfc3dhcEJpbmFyeSkKI2RlZmluZSB1Y29sX3N3YXBJbnZlcnNlVUNBIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1Y29sX3N3YXBJbnZlcnNlVUNBKQojZGVmaW5lIHVjb2xfdGVydGlh
cnlPcmRlciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF90ZXJ0aWFyeU9yZGVyKQojZGVm
aW5lIHVjb2xfdG9rX2Fzc2VtYmxlVG9rZW5MaXN0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
Y29sX3Rva19hc3NlbWJsZVRva2VuTGlzdCkKI2RlZmluZSB1Y29sX3Rva19jbG9zZVRva2VuTGlz
dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF90b2tfY2xvc2VUb2tlbkxpc3QpCiNkZWZp
bmUgdWNvbF90b2tfZ2V0TmV4dEFyZ3VtZW50IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29s
X3Rva19nZXROZXh0QXJndW1lbnQpCiNkZWZpbmUgdWNvbF90b2tfZ2V0UnVsZXNGcm9tQnVuZGxl
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX3Rva19nZXRSdWxlc0Zyb21CdW5kbGUpCiNk
ZWZpbmUgdWNvbF90b2tfaW5pdFRva2VuTGlzdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNv
bF90b2tfaW5pdFRva2VuTGlzdCkKI2RlZmluZSB1Y29sX3Rva19wYXJzZU5leHRUb2tlbiBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodWNvbF90b2tfcGFyc2VOZXh0VG9rZW4pCiNkZWZpbmUgdWNv
bF91cGRhdGVJbnRlcm5hbFN0YXRlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y29sX3VwZGF0
ZUludGVybmFsU3RhdGUpCiNkZWZpbmUgdWNzZGV0X2Nsb3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1Y3NkZXRfY2xvc2UpCiNkZWZpbmUgdWNzZGV0X2RldGVjdCBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWNzZGV0X2RldGVjdCkKI2RlZmluZSB1Y3NkZXRfZGV0ZWN0QWxsIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1Y3NkZXRfZGV0ZWN0QWxsKQojZGVmaW5lIHVjc2RldF9lbmFibGVJ
bnB1dEZpbHRlciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNzZGV0X2VuYWJsZUlucHV0Rmls
dGVyKQojZGVmaW5lIHVjc2RldF9nZXRBbGxEZXRlY3RhYmxlQ2hhcnNldHMgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVjc2RldF9nZXRBbGxEZXRlY3RhYmxlQ2hhcnNldHMpCiNkZWZpbmUgdWNz
ZGV0X2dldENvbmZpZGVuY2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjc2RldF9nZXRDb25m
aWRlbmNlKQojZGVmaW5lIHVjc2RldF9nZXREZXRlY3RhYmxlQ2hhcnNldHMgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVjc2RldF9nZXREZXRlY3RhYmxlQ2hhcnNldHMpCiNkZWZpbmUgdWNzZGV0
X2dldExhbmd1YWdlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y3NkZXRfZ2V0TGFuZ3VhZ2Up
CiNkZWZpbmUgdWNzZGV0X2dldE5hbWUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjc2RldF9n
ZXROYW1lKQojZGVmaW5lIHVjc2RldF9nZXRVQ2hhcnMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVjc2RldF9nZXRVQ2hhcnMpCiNkZWZpbmUgdWNzZGV0X2lzSW5wdXRGaWx0ZXJFbmFibGVkIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y3NkZXRfaXNJbnB1dEZpbHRlckVuYWJsZWQpCiNkZWZp
bmUgdWNzZGV0X29wZW4gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjc2RldF9vcGVuKQojZGVm
aW5lIHVjc2RldF9zZXREZWNsYXJlZEVuY29kaW5nIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
Y3NkZXRfc2V0RGVjbGFyZWRFbmNvZGluZykKI2RlZmluZSB1Y3NkZXRfc2V0RGV0ZWN0YWJsZUNo
YXJzZXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjc2RldF9zZXREZXRlY3RhYmxlQ2hhcnNl
dCkKI2RlZmluZSB1Y3NkZXRfc2V0VGV4dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWNzZGV0
X3NldFRleHQpCiNkZWZpbmUgdWN1cnJfY291bnRDdXJyZW5jaWVzIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1Y3Vycl9jb3VudEN1cnJlbmNpZXMpCiNkZWZpbmUgdWN1cnJfZm9yTG9jYWxlIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y3Vycl9mb3JMb2NhbGUpCiNkZWZpbmUgdWN1cnJfZm9y
TG9jYWxlQW5kRGF0ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWN1cnJfZm9yTG9jYWxlQW5k
RGF0ZSkKI2RlZmluZSB1Y3Vycl9nZXREZWZhdWx0RnJhY3Rpb25EaWdpdHMgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVjdXJyX2dldERlZmF1bHRGcmFjdGlvbkRpZ2l0cykKI2RlZmluZSB1Y3Vy
cl9nZXRLZXl3b3JkVmFsdWVzRm9yTG9jYWxlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y3Vy
cl9nZXRLZXl3b3JkVmFsdWVzRm9yTG9jYWxlKQojZGVmaW5lIHVjdXJyX2dldE5hbWUgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVjdXJyX2dldE5hbWUpCiNkZWZpbmUgdWN1cnJfZ2V0TnVtZXJp
Y0NvZGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjdXJyX2dldE51bWVyaWNDb2RlKQojZGVm
aW5lIHVjdXJyX2dldFBsdXJhbE5hbWUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjdXJyX2dl
dFBsdXJhbE5hbWUpCiNkZWZpbmUgdWN1cnJfZ2V0Um91bmRpbmdJbmNyZW1lbnQgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVjdXJyX2dldFJvdW5kaW5nSW5jcmVtZW50KQojZGVmaW5lIHVjdXJy
X2lzQXZhaWxhYmxlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Y3Vycl9pc0F2YWlsYWJsZSkK
I2RlZmluZSB1Y3Vycl9vcGVuSVNPQ3VycmVuY2llcyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dWN1cnJfb3BlbklTT0N1cnJlbmNpZXMpCiNkZWZpbmUgdWN1cnJfcmVnaXN0ZXIgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVjdXJyX3JlZ2lzdGVyKQojZGVmaW5lIHVjdXJyX3VucmVnaXN0ZXIg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVjdXJyX3VucmVnaXN0ZXIpCiNkZWZpbmUgdWRhdF9h
cHBseVBhdHRlcm4gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRfYXBwbHlQYXR0ZXJuKQoj
ZGVmaW5lIHVkYXRfYXBwbHlQYXR0ZXJuUmVsYXRpdmUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVkYXRfYXBwbHlQYXR0ZXJuUmVsYXRpdmUpCiNkZWZpbmUgdWRhdF9jbG9uZSBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodWRhdF9jbG9uZSkKI2RlZmluZSB1ZGF0X2Nsb3NlIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1ZGF0X2Nsb3NlKQojZGVmaW5lIHVkYXRfY291bnRBdmFpbGFibGUgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRfY291bnRBdmFpbGFibGUpCiNkZWZpbmUgdWRhdF9j
b3VudFN5bWJvbHMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRfY291bnRTeW1ib2xzKQoj
ZGVmaW5lIHVkYXRfZm9ybWF0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1ZGF0X2Zvcm1hdCkK
I2RlZmluZSB1ZGF0X2dldDJEaWdpdFllYXJTdGFydCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dWRhdF9nZXQyRGlnaXRZZWFyU3RhcnQpCiNkZWZpbmUgdWRhdF9nZXRBdmFpbGFibGUgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVkYXRfZ2V0QXZhaWxhYmxlKQojZGVmaW5lIHVkYXRfZ2V0Q2Fs
ZW5kYXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRfZ2V0Q2FsZW5kYXIpCiNkZWZpbmUg
dWRhdF9nZXRDb250ZXh0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1ZGF0X2dldENvbnRleHQp
CiNkZWZpbmUgdWRhdF9nZXRMb2NhbGVCeVR5cGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVk
YXRfZ2V0TG9jYWxlQnlUeXBlKQojZGVmaW5lIHVkYXRfZ2V0TnVtYmVyRm9ybWF0IFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1ZGF0X2dldE51bWJlckZvcm1hdCkKI2RlZmluZSB1ZGF0X2dldFN5
bWJvbHMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRfZ2V0U3ltYm9scykKI2RlZmluZSB1
ZGF0X2lzTGVuaWVudCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWRhdF9pc0xlbmllbnQpCiNk
ZWZpbmUgdWRhdF9vcGVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1ZGF0X29wZW4pCiNkZWZp
bmUgdWRhdF9wYXJzZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWRhdF9wYXJzZSkKI2RlZmlu
ZSB1ZGF0X3BhcnNlQ2FsZW5kYXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRfcGFyc2VD
YWxlbmRhcikKI2RlZmluZSB1ZGF0X3JlZ2lzdGVyT3BlbmVyIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1ZGF0X3JlZ2lzdGVyT3BlbmVyKQojZGVmaW5lIHVkYXRfc2V0MkRpZ2l0WWVhclN0YXJ0
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1ZGF0X3NldDJEaWdpdFllYXJTdGFydCkKI2RlZmlu
ZSB1ZGF0X3NldENhbGVuZGFyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1ZGF0X3NldENhbGVu
ZGFyKQojZGVmaW5lIHVkYXRfc2V0Q29udGV4dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWRh
dF9zZXRDb250ZXh0KQojZGVmaW5lIHVkYXRfc2V0TGVuaWVudCBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodWRhdF9zZXRMZW5pZW50KQojZGVmaW5lIHVkYXRfc2V0TnVtYmVyRm9ybWF0IFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1ZGF0X3NldE51bWJlckZvcm1hdCkKI2RlZmluZSB1ZGF0X3Nl
dFN5bWJvbHMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRfc2V0U3ltYm9scykKI2RlZmlu
ZSB1ZGF0X3RvQ2FsZW5kYXJEYXRlRmllbGQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRf
dG9DYWxlbmRhckRhdGVGaWVsZCkKI2RlZmluZSB1ZGF0X3RvUGF0dGVybiBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodWRhdF90b1BhdHRlcm4pCiNkZWZpbmUgdWRhdF90b1BhdHRlcm5SZWxhdGl2
ZURhdGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRfdG9QYXR0ZXJuUmVsYXRpdmVEYXRl
KQojZGVmaW5lIHVkYXRfdG9QYXR0ZXJuUmVsYXRpdmVUaW1lIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1ZGF0X3RvUGF0dGVyblJlbGF0aXZlVGltZSkKI2RlZmluZSB1ZGF0X3VucmVnaXN0ZXJP
cGVuZXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRfdW5yZWdpc3Rlck9wZW5lcikKI2Rl
ZmluZSB1ZGF0YV9jaGVja0NvbW1vbkRhdGEgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRh
X2NoZWNrQ29tbW9uRGF0YSkKI2RlZmluZSB1ZGF0YV9jbG9zZSBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodWRhdGFfY2xvc2UpCiNkZWZpbmUgdWRhdGFfY2xvc2VTd2FwcGVyIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1ZGF0YV9jbG9zZVN3YXBwZXIpCiNkZWZpbmUgdWRhdGFfZ2V0SGVhZGVy
U2l6ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWRhdGFfZ2V0SGVhZGVyU2l6ZSkKI2RlZmlu
ZSB1ZGF0YV9nZXRJbmZvIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1ZGF0YV9nZXRJbmZvKQoj
ZGVmaW5lIHVkYXRhX2dldEluZm9TaXplIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1ZGF0YV9n
ZXRJbmZvU2l6ZSkKI2RlZmluZSB1ZGF0YV9nZXRMZW5ndGggVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVkYXRhX2dldExlbmd0aCkKI2RlZmluZSB1ZGF0YV9nZXRNZW1vcnkgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVkYXRhX2dldE1lbW9yeSkKI2RlZmluZSB1ZGF0YV9nZXRSYXdNZW1vcnkg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRhX2dldFJhd01lbW9yeSkKI2RlZmluZSB1ZGF0
YV9vcGVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1ZGF0YV9vcGVuKQojZGVmaW5lIHVkYXRh
X29wZW5DaG9pY2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRhX29wZW5DaG9pY2UpCiNk
ZWZpbmUgdWRhdGFfb3BlblN3YXBwZXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRhX29w
ZW5Td2FwcGVyKQojZGVmaW5lIHVkYXRhX29wZW5Td2FwcGVyRm9ySW5wdXREYXRhIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1ZGF0YV9vcGVuU3dhcHBlckZvcklucHV0RGF0YSkKI2RlZmluZSB1
ZGF0YV9wcmludEVycm9yIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1ZGF0YV9wcmludEVycm9y
KQojZGVmaW5lIHVkYXRhX3JlYWRJbnQxNiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWRhdGFf
cmVhZEludDE2KQojZGVmaW5lIHVkYXRhX3JlYWRJbnQzMiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodWRhdGFfcmVhZEludDMyKQojZGVmaW5lIHVkYXRhX3NldEFwcERhdGEgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVkYXRhX3NldEFwcERhdGEpCiNkZWZpbmUgdWRhdGFfc2V0Q29tbW9uRGF0
YSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWRhdGFfc2V0Q29tbW9uRGF0YSkKI2RlZmluZSB1
ZGF0YV9zZXRGaWxlQWNjZXNzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1ZGF0YV9zZXRGaWxl
QWNjZXNzKQojZGVmaW5lIHVkYXRhX3N3YXBEYXRhSGVhZGVyIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1ZGF0YV9zd2FwRGF0YUhlYWRlcikKI2RlZmluZSB1ZGF0YV9zd2FwSW52U3RyaW5nQmxv
Y2sgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRhX3N3YXBJbnZTdHJpbmdCbG9jaykKI2Rl
ZmluZSB1ZGF0cGdfYWRkUGF0dGVybiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWRhdHBnX2Fk
ZFBhdHRlcm4pCiNkZWZpbmUgdWRhdHBnX2Nsb25lIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
ZGF0cGdfY2xvbmUpCiNkZWZpbmUgdWRhdHBnX2Nsb3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1ZGF0cGdfY2xvc2UpCiNkZWZpbmUgdWRhdHBnX2dldEFwcGVuZEl0ZW1Gb3JtYXQgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVkYXRwZ19nZXRBcHBlbmRJdGVtRm9ybWF0KQojZGVmaW5lIHVk
YXRwZ19nZXRBcHBlbmRJdGVtTmFtZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWRhdHBnX2dl
dEFwcGVuZEl0ZW1OYW1lKQojZGVmaW5lIHVkYXRwZ19nZXRCYXNlU2tlbGV0b24gVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVkYXRwZ19nZXRCYXNlU2tlbGV0b24pCiNkZWZpbmUgdWRhdHBnX2dl
dEJlc3RQYXR0ZXJuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1ZGF0cGdfZ2V0QmVzdFBhdHRl
cm4pCiNkZWZpbmUgdWRhdHBnX2dldEJlc3RQYXR0ZXJuV2l0aE9wdGlvbnMgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVkYXRwZ19nZXRCZXN0UGF0dGVybldpdGhPcHRpb25zKQojZGVmaW5lIHVk
YXRwZ19nZXREYXRlVGltZUZvcm1hdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWRhdHBnX2dl
dERhdGVUaW1lRm9ybWF0KQojZGVmaW5lIHVkYXRwZ19nZXREZWNpbWFsIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1ZGF0cGdfZ2V0RGVjaW1hbCkKI2RlZmluZSB1ZGF0cGdfZ2V0UGF0dGVybkZv
clNrZWxldG9uIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1ZGF0cGdfZ2V0UGF0dGVybkZvclNr
ZWxldG9uKQojZGVmaW5lIHVkYXRwZ19nZXRTa2VsZXRvbiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodWRhdHBnX2dldFNrZWxldG9uKQojZGVmaW5lIHVkYXRwZ19vcGVuIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1ZGF0cGdfb3BlbikKI2RlZmluZSB1ZGF0cGdfb3BlbkJhc2VTa2VsZXRvbnMg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRwZ19vcGVuQmFzZVNrZWxldG9ucykKI2RlZmlu
ZSB1ZGF0cGdfb3BlbkVtcHR5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1ZGF0cGdfb3BlbkVt
cHR5KQojZGVmaW5lIHVkYXRwZ19vcGVuU2tlbGV0b25zIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1ZGF0cGdfb3BlblNrZWxldG9ucykKI2RlZmluZSB1ZGF0cGdfcmVwbGFjZUZpZWxkVHlwZXMg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRwZ19yZXBsYWNlRmllbGRUeXBlcykKI2RlZmlu
ZSB1ZGF0cGdfcmVwbGFjZUZpZWxkVHlwZXNXaXRoT3B0aW9ucyBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodWRhdHBnX3JlcGxhY2VGaWVsZFR5cGVzV2l0aE9wdGlvbnMpCiNkZWZpbmUgdWRhdHBn
X3NldEFwcGVuZEl0ZW1Gb3JtYXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkYXRwZ19zZXRB
cHBlbmRJdGVtRm9ybWF0KQojZGVmaW5lIHVkYXRwZ19zZXRBcHBlbmRJdGVtTmFtZSBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodWRhdHBnX3NldEFwcGVuZEl0ZW1OYW1lKQojZGVmaW5lIHVkYXRw
Z19zZXREYXRlVGltZUZvcm1hdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWRhdHBnX3NldERh
dGVUaW1lRm9ybWF0KQojZGVmaW5lIHVkYXRwZ19zZXREZWNpbWFsIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1ZGF0cGdfc2V0RGVjaW1hbCkKI2RlZmluZSB1ZGljdF9zd2FwIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1ZGljdF9zd2FwKQojZGVmaW5lIHVkdGl0dmZtdF9jbG9zZSBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodWR0aXR2Zm10X2Nsb3NlKQojZGVmaW5lIHVkdGl0dmZtdF9mb3Jt
YXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkdGl0dmZtdF9mb3JtYXQpCiNkZWZpbmUgdWR0
aXR2Zm10X29wZW4gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVkdGl0dmZtdF9vcGVuKQojZGVm
aW5lIHVlbnVtX2Nsb3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1ZW51bV9jbG9zZSkKI2Rl
ZmluZSB1ZW51bV9jb3VudCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWVudW1fY291bnQpCiNk
ZWZpbmUgdWVudW1fbmV4dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWVudW1fbmV4dCkKI2Rl
ZmluZSB1ZW51bV9uZXh0RGVmYXVsdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWVudW1fbmV4
dERlZmF1bHQpCiNkZWZpbmUgdWVudW1fb3BlbkNoYXJTdHJpbmdzRW51bWVyYXRpb24gVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVlbnVtX29wZW5DaGFyU3RyaW5nc0VudW1lcmF0aW9uKQojZGVm
aW5lIHVlbnVtX29wZW5Gcm9tU3RyaW5nRW51bWVyYXRpb24gVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVlbnVtX29wZW5Gcm9tU3RyaW5nRW51bWVyYXRpb24pCiNkZWZpbmUgdWVudW1fb3BlblVD
aGFyU3RyaW5nc0VudW1lcmF0aW9uIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1ZW51bV9vcGVu
VUNoYXJTdHJpbmdzRW51bWVyYXRpb24pCiNkZWZpbmUgdWVudW1fcmVzZXQgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVlbnVtX3Jlc2V0KQojZGVmaW5lIHVlbnVtX3VuZXh0IFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1ZW51bV91bmV4dCkKI2RlZmluZSB1ZW51bV91bmV4dERlZmF1bHQgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVlbnVtX3VuZXh0RGVmYXVsdCkKI2RlZmluZSB1ZmlsZV9j
bG9zZV90cmFuc2xpdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWZpbGVfY2xvc2VfdHJhbnNs
aXQpCiNkZWZpbmUgdWZpbGVfZmlsbF91Y2hhcl9idWZmZXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVmaWxlX2ZpbGxfdWNoYXJfYnVmZmVyKQojZGVmaW5lIHVmaWxlX2ZsdXNoX2lvIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1ZmlsZV9mbHVzaF9pbykKI2RlZmluZSB1ZmlsZV9mbHVzaF90
cmFuc2xpdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWZpbGVfZmx1c2hfdHJhbnNsaXQpCiNk
ZWZpbmUgdWZpbGVfZ2V0Y2ggVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVmaWxlX2dldGNoKQoj
ZGVmaW5lIHVmaWxlX2dldGNoMzIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVmaWxlX2dldGNo
MzIpCiNkZWZpbmUgdWZtdF82NHRvdSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWZtdF82NHRv
dSkKI2RlZmluZSB1Zm10X2Nsb3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Zm10X2Nsb3Nl
KQojZGVmaW5lIHVmbXRfZGVmYXVsdENQVG9Vbmljb2RlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1Zm10X2RlZmF1bHRDUFRvVW5pY29kZSkKI2RlZmluZSB1Zm10X2RpZ2l0dmFsdWUgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVmbXRfZGlnaXR2YWx1ZSkKI2RlZmluZSB1Zm10X2dldEFycmF5
SXRlbUJ5SW5kZXggVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVmbXRfZ2V0QXJyYXlJdGVtQnlJ
bmRleCkKI2RlZmluZSB1Zm10X2dldEFycmF5TGVuZ3RoIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1Zm10X2dldEFycmF5TGVuZ3RoKQojZGVmaW5lIHVmbXRfZ2V0RGF0ZSBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodWZtdF9nZXREYXRlKQojZGVmaW5lIHVmbXRfZ2V0RGVjTnVtQ2hhcnMgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVmbXRfZ2V0RGVjTnVtQ2hhcnMpCiNkZWZpbmUgdWZtdF9n
ZXREb3VibGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVmbXRfZ2V0RG91YmxlKQojZGVmaW5l
IHVmbXRfZ2V0SW50NjQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVmbXRfZ2V0SW50NjQpCiNk
ZWZpbmUgdWZtdF9nZXRMb25nIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1Zm10X2dldExvbmcp
CiNkZWZpbmUgdWZtdF9nZXRPYmplY3QgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVmbXRfZ2V0
T2JqZWN0KQojZGVmaW5lIHVmbXRfZ2V0VHlwZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWZt
dF9nZXRUeXBlKQojZGVmaW5lIHVmbXRfZ2V0VUNoYXJzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1Zm10X2dldFVDaGFycykKI2RlZmluZSB1Zm10X2lzTnVtZXJpYyBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWZtdF9pc051bWVyaWMpCiNkZWZpbmUgdWZtdF9pc2RpZ2l0IFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1Zm10X2lzZGlnaXQpCiNkZWZpbmUgdWZtdF9vcGVuIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1Zm10X29wZW4pCiNkZWZpbmUgdWZtdF9wdG91IFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1Zm10X3B0b3UpCiNkZWZpbmUgdWZtdF91dG82NCBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWZtdF91dG82NCkKI2RlZmluZSB1Zm10X3V0b3AgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVmbXRfdXRvcCkKI2RlZmluZSB1Z2VuZGVyX2dldEluc3RhbmNlIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1Z2VuZGVyX2dldEluc3RhbmNlKQojZGVmaW5lIHVnZW5kZXJfZ2V0TGlz
dEdlbmRlciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWdlbmRlcl9nZXRMaXN0R2VuZGVyKQoj
ZGVmaW5lIHVoYXNoX2Nsb3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1aGFzaF9jbG9zZSkK
I2RlZmluZSB1aGFzaF9jb21wYXJlQ2FzZWxlc3NVbmljb2RlU3RyaW5nIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1aGFzaF9jb21wYXJlQ2FzZWxlc3NVbmljb2RlU3RyaW5nKQojZGVmaW5lIHVo
YXNoX2NvbXBhcmVDaGFycyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfY29tcGFyZUNo
YXJzKQojZGVmaW5lIHVoYXNoX2NvbXBhcmVJQ2hhcnMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVoYXNoX2NvbXBhcmVJQ2hhcnMpCiNkZWZpbmUgdWhhc2hfY29tcGFyZUxvbmcgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVoYXNoX2NvbXBhcmVMb25nKQojZGVmaW5lIHVoYXNoX2NvbXBhcmVT
Y3JpcHRTZXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVoYXNoX2NvbXBhcmVTY3JpcHRTZXQp
CiNkZWZpbmUgdWhhc2hfY29tcGFyZVVDaGFycyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWhh
c2hfY29tcGFyZVVDaGFycykKI2RlZmluZSB1aGFzaF9jb21wYXJlVW5pY29kZVN0cmluZyBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfY29tcGFyZVVuaWNvZGVTdHJpbmcpCiNkZWZpbmUg
dWhhc2hfY291bnQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVoYXNoX2NvdW50KQojZGVmaW5l
IHVoYXNoX2RlbGV0ZUhhc2h0YWJsZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfZGVs
ZXRlSGFzaHRhYmxlKQojZGVmaW5lIHVoYXNoX2RlbGV0ZVNjcmlwdFNldCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodWhhc2hfZGVsZXRlU2NyaXB0U2V0KQojZGVmaW5lIHVoYXNoX2VxdWFscyBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfZXF1YWxzKQojZGVmaW5lIHVoYXNoX2VxdWFs
c1NjcmlwdFNldCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfZXF1YWxzU2NyaXB0U2V0
KQojZGVmaW5lIHVoYXNoX2ZpbmQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVoYXNoX2ZpbmQp
CiNkZWZpbmUgdWhhc2hfZ2V0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1aGFzaF9nZXQpCiNk
ZWZpbmUgdWhhc2hfZ2V0aSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfZ2V0aSkKI2Rl
ZmluZSB1aGFzaF9oYXNoQ2FzZWxlc3NVbmljb2RlU3RyaW5nIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1aGFzaF9oYXNoQ2FzZWxlc3NVbmljb2RlU3RyaW5nKQojZGVmaW5lIHVoYXNoX2hhc2hD
aGFycyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfaGFzaENoYXJzKQojZGVmaW5lIHVo
YXNoX2hhc2hJQ2hhcnMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVoYXNoX2hhc2hJQ2hhcnMp
CiNkZWZpbmUgdWhhc2hfaGFzaExvbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVoYXNoX2hh
c2hMb25nKQojZGVmaW5lIHVoYXNoX2hhc2hTY3JpcHRTZXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVoYXNoX2hhc2hTY3JpcHRTZXQpCiNkZWZpbmUgdWhhc2hfaGFzaFVDaGFycyBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfaGFzaFVDaGFycykKI2RlZmluZSB1aGFzaF9oYXNoVW5p
Y29kZVN0cmluZyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfaGFzaFVuaWNvZGVTdHJp
bmcpCiNkZWZpbmUgdWhhc2hfaWdldCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfaWdl
dCkKI2RlZmluZSB1aGFzaF9pZ2V0aSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfaWdl
dGkpCiNkZWZpbmUgdWhhc2hfaW5pdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfaW5p
dCkKI2RlZmluZSB1aGFzaF9pcHV0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1aGFzaF9pcHV0
KQojZGVmaW5lIHVoYXNoX2lwdXRpIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1aGFzaF9pcHV0
aSkKI2RlZmluZSB1aGFzaF9pcmVtb3ZlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1aGFzaF9p
cmVtb3ZlKQojZGVmaW5lIHVoYXNoX2lyZW1vdmVpIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
aGFzaF9pcmVtb3ZlaSkKI2RlZmluZSB1aGFzaF9uZXh0RWxlbWVudCBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWhhc2hfbmV4dEVsZW1lbnQpCiNkZWZpbmUgdWhhc2hfb3BlbiBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodWhhc2hfb3BlbikKI2RlZmluZSB1aGFzaF9vcGVuU2l6ZSBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfb3BlblNpemUpCiNkZWZpbmUgdWhhc2hfcHV0IFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1aGFzaF9wdXQpCiNkZWZpbmUgdWhhc2hfcHV0aSBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfcHV0aSkKI2RlZmluZSB1aGFzaF9yZW1vdmUgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVoYXNoX3JlbW92ZSkKI2RlZmluZSB1aGFzaF9yZW1vdmVBbGwg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVoYXNoX3JlbW92ZUFsbCkKI2RlZmluZSB1aGFzaF9y
ZW1vdmVFbGVtZW50IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1aGFzaF9yZW1vdmVFbGVtZW50
KQojZGVmaW5lIHVoYXNoX3JlbW92ZWkgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVoYXNoX3Jl
bW92ZWkpCiNkZWZpbmUgdWhhc2hfc2V0S2V5Q29tcGFyYXRvciBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodWhhc2hfc2V0S2V5Q29tcGFyYXRvcikKI2RlZmluZSB1aGFzaF9zZXRLZXlEZWxldGVy
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1aGFzaF9zZXRLZXlEZWxldGVyKQojZGVmaW5lIHVo
YXNoX3NldEtleUhhc2hlciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfc2V0S2V5SGFz
aGVyKQojZGVmaW5lIHVoYXNoX3NldFJlc2l6ZVBvbGljeSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodWhhc2hfc2V0UmVzaXplUG9saWN5KQojZGVmaW5lIHVoYXNoX3NldFZhbHVlQ29tcGFyYXRv
ciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWhhc2hfc2V0VmFsdWVDb21wYXJhdG9yKQojZGVm
aW5lIHVoYXNoX3NldFZhbHVlRGVsZXRlciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWhhc2hf
c2V0VmFsdWVEZWxldGVyKQojZGVmaW5lIHVpZG5hX0lETlRvQVNDSUkgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVpZG5hX0lETlRvQVNDSUkpCiNkZWZpbmUgdWlkbmFfSUROVG9Vbmljb2RlIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1aWRuYV9JRE5Ub1VuaWNvZGUpCiNkZWZpbmUgdWlkbmFf
Y2xvc2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVpZG5hX2Nsb3NlKQojZGVmaW5lIHVpZG5h
X2NvbXBhcmUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVpZG5hX2NvbXBhcmUpCiNkZWZpbmUg
dWlkbmFfbGFiZWxUb0FTQ0lJIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1aWRuYV9sYWJlbFRv
QVNDSUkpCiNkZWZpbmUgdWlkbmFfbGFiZWxUb0FTQ0lJX1VURjggVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVpZG5hX2xhYmVsVG9BU0NJSV9VVEY4KQojZGVmaW5lIHVpZG5hX2xhYmVsVG9Vbmlj
b2RlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1aWRuYV9sYWJlbFRvVW5pY29kZSkKI2RlZmlu
ZSB1aWRuYV9sYWJlbFRvVW5pY29kZVVURjggVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVpZG5h
X2xhYmVsVG9Vbmljb2RlVVRGOCkKI2RlZmluZSB1aWRuYV9uYW1lVG9BU0NJSSBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodWlkbmFfbmFtZVRvQVNDSUkpCiNkZWZpbmUgdWlkbmFfbmFtZVRvQVND
SUlfVVRGOCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWlkbmFfbmFtZVRvQVNDSUlfVVRGOCkK
I2RlZmluZSB1aWRuYV9uYW1lVG9Vbmljb2RlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1aWRu
YV9uYW1lVG9Vbmljb2RlKQojZGVmaW5lIHVpZG5hX25hbWVUb1VuaWNvZGVVVEY4IFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1aWRuYV9uYW1lVG9Vbmljb2RlVVRGOCkKI2RlZmluZSB1aWRuYV9v
cGVuVVRTNDYgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVpZG5hX29wZW5VVFM0NikKI2RlZmlu
ZSB1aWRuYV90b0FTQ0lJIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1aWRuYV90b0FTQ0lJKQoj
ZGVmaW5lIHVpZG5hX3RvVW5pY29kZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWlkbmFfdG9V
bmljb2RlKQojZGVmaW5lIHVpdGVyX2N1cnJlbnQzMiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dWl0ZXJfY3VycmVudDMyKQojZGVmaW5lIHVpdGVyX2dldFN0YXRlIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1aXRlcl9nZXRTdGF0ZSkKI2RlZmluZSB1aXRlcl9uZXh0MzIgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVpdGVyX25leHQzMikKI2RlZmluZSB1aXRlcl9wcmV2aW91czMyIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1aXRlcl9wcmV2aW91czMyKQojZGVmaW5lIHVpdGVyX3NldENo
YXJhY3Rlckl0ZXJhdG9yIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1aXRlcl9zZXRDaGFyYWN0
ZXJJdGVyYXRvcikKI2RlZmluZSB1aXRlcl9zZXRSZXBsYWNlYWJsZSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWl0ZXJfc2V0UmVwbGFjZWFibGUpCiNkZWZpbmUgdWl0ZXJfc2V0U3RhdGUgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVpdGVyX3NldFN0YXRlKQojZGVmaW5lIHVpdGVyX3NldFN0
cmluZyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWl0ZXJfc2V0U3RyaW5nKQojZGVmaW5lIHVp
dGVyX3NldFVURjE2QkUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVpdGVyX3NldFVURjE2QkUp
CiNkZWZpbmUgdWl0ZXJfc2V0VVRGOCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWl0ZXJfc2V0
VVRGOCkKI2RlZmluZSB1bGRuX2Nsb3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bGRuX2Ns
b3NlKQojZGVmaW5lIHVsZG5fZ2V0Q29udGV4dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxk
bl9nZXRDb250ZXh0KQojZGVmaW5lIHVsZG5fZ2V0RGlhbGVjdEhhbmRsaW5nIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1bGRuX2dldERpYWxlY3RIYW5kbGluZykKI2RlZmluZSB1bGRuX2dldExv
Y2FsZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxkbl9nZXRMb2NhbGUpCiNkZWZpbmUgdWxk
bl9rZXlEaXNwbGF5TmFtZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxkbl9rZXlEaXNwbGF5
TmFtZSkKI2RlZmluZSB1bGRuX2tleVZhbHVlRGlzcGxheU5hbWUgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVsZG5fa2V5VmFsdWVEaXNwbGF5TmFtZSkKI2RlZmluZSB1bGRuX2xhbmd1YWdlRGlz
cGxheU5hbWUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsZG5fbGFuZ3VhZ2VEaXNwbGF5TmFt
ZSkKI2RlZmluZSB1bGRuX2xvY2FsZURpc3BsYXlOYW1lIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1bGRuX2xvY2FsZURpc3BsYXlOYW1lKQojZGVmaW5lIHVsZG5fb3BlbiBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodWxkbl9vcGVuKQojZGVmaW5lIHVsZG5fb3BlbkZvckNvbnRleHQgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVsZG5fb3BlbkZvckNvbnRleHQpCiNkZWZpbmUgdWxkbl9yZWdp
b25EaXNwbGF5TmFtZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxkbl9yZWdpb25EaXNwbGF5
TmFtZSkKI2RlZmluZSB1bGRuX3NjcmlwdENvZGVEaXNwbGF5TmFtZSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodWxkbl9zY3JpcHRDb2RlRGlzcGxheU5hbWUpCiNkZWZpbmUgdWxkbl9zY3JpcHRE
aXNwbGF5TmFtZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxkbl9zY3JpcHREaXNwbGF5TmFt
ZSkKI2RlZmluZSB1bGRuX3ZhcmlhbnREaXNwbGF5TmFtZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodWxkbl92YXJpYW50RGlzcGxheU5hbWUpCiNkZWZpbmUgdWxpc3RfYWRkSXRlbUJlZ2luTGlz
dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxpc3RfYWRkSXRlbUJlZ2luTGlzdCkKI2RlZmlu
ZSB1bGlzdF9hZGRJdGVtRW5kTGlzdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxpc3RfYWRk
SXRlbUVuZExpc3QpCiNkZWZpbmUgdWxpc3RfY2xvc2Vfa2V5d29yZF92YWx1ZXNfaXRlcmF0b3Ig
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsaXN0X2Nsb3NlX2tleXdvcmRfdmFsdWVzX2l0ZXJh
dG9yKQojZGVmaW5lIHVsaXN0X2NvbnRhaW5zU3RyaW5nIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1bGlzdF9jb250YWluc1N0cmluZykKI2RlZmluZSB1bGlzdF9jb3VudF9rZXl3b3JkX3ZhbHVl
cyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxpc3RfY291bnRfa2V5d29yZF92YWx1ZXMpCiNk
ZWZpbmUgdWxpc3RfY3JlYXRlRW1wdHlMaXN0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bGlz
dF9jcmVhdGVFbXB0eUxpc3QpCiNkZWZpbmUgdWxpc3RfZGVsZXRlTGlzdCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodWxpc3RfZGVsZXRlTGlzdCkKI2RlZmluZSB1bGlzdF9nZXRMaXN0RnJvbUVu
dW0gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsaXN0X2dldExpc3RGcm9tRW51bSkKI2RlZmlu
ZSB1bGlzdF9nZXRMaXN0U2l6ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxpc3RfZ2V0TGlz
dFNpemUpCiNkZWZpbmUgdWxpc3RfZ2V0TmV4dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxp
c3RfZ2V0TmV4dCkKI2RlZmluZSB1bGlzdF9uZXh0X2tleXdvcmRfdmFsdWUgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVsaXN0X25leHRfa2V5d29yZF92YWx1ZSkKI2RlZmluZSB1bGlzdF9yZXNl
dExpc3QgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsaXN0X3Jlc2V0TGlzdCkKI2RlZmluZSB1
bGlzdF9yZXNldF9rZXl3b3JkX3ZhbHVlc19pdGVyYXRvciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodWxpc3RfcmVzZXRfa2V5d29yZF92YWx1ZXNfaXRlcmF0b3IpCiNkZWZpbmUgdWxvY19hY2Nl
cHRMYW5ndWFnZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxvY19hY2NlcHRMYW5ndWFnZSkK
I2RlZmluZSB1bG9jX2FjY2VwdExhbmd1YWdlRnJvbUhUVFAgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVsb2NfYWNjZXB0TGFuZ3VhZ2VGcm9tSFRUUCkKI2RlZmluZSB1bG9jX2FkZExpa2VseVN1
YnRhZ3MgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsb2NfYWRkTGlrZWx5U3VidGFncykKI2Rl
ZmluZSB1bG9jX2Nhbm9uaWNhbGl6ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxvY19jYW5v
bmljYWxpemUpCiNkZWZpbmUgdWxvY19jb3VudEF2YWlsYWJsZSBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodWxvY19jb3VudEF2YWlsYWJsZSkKI2RlZmluZSB1bG9jX2Zvckxhbmd1YWdlVGFnIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bG9jX2Zvckxhbmd1YWdlVGFnKQojZGVmaW5lIHVsb2Nf
Z2V0QXZhaWxhYmxlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bG9jX2dldEF2YWlsYWJsZSkK
I2RlZmluZSB1bG9jX2dldEJhc2VOYW1lIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bG9jX2dl
dEJhc2VOYW1lKQojZGVmaW5lIHVsb2NfZ2V0Q2hhcmFjdGVyT3JpZW50YXRpb24gVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVsb2NfZ2V0Q2hhcmFjdGVyT3JpZW50YXRpb24pCiNkZWZpbmUgdWxv
Y19nZXRDb3VudHJ5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bG9jX2dldENvdW50cnkpCiNk
ZWZpbmUgdWxvY19nZXRDdXJyZW50Q291bnRyeUlEIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
bG9jX2dldEN1cnJlbnRDb3VudHJ5SUQpCiNkZWZpbmUgdWxvY19nZXRDdXJyZW50TGFuZ3VhZ2VJ
RCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxvY19nZXRDdXJyZW50TGFuZ3VhZ2VJRCkKI2Rl
ZmluZSB1bG9jX2dldERlZmF1bHQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsb2NfZ2V0RGVm
YXVsdCkKI2RlZmluZSB1bG9jX2dldERpc3BsYXlDb3VudHJ5IFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1bG9jX2dldERpc3BsYXlDb3VudHJ5KQojZGVmaW5lIHVsb2NfZ2V0RGlzcGxheUtleXdv
cmQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsb2NfZ2V0RGlzcGxheUtleXdvcmQpCiNkZWZp
bmUgdWxvY19nZXREaXNwbGF5S2V5d29yZFZhbHVlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
bG9jX2dldERpc3BsYXlLZXl3b3JkVmFsdWUpCiNkZWZpbmUgdWxvY19nZXREaXNwbGF5TGFuZ3Vh
Z2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsb2NfZ2V0RGlzcGxheUxhbmd1YWdlKQojZGVm
aW5lIHVsb2NfZ2V0RGlzcGxheU5hbWUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsb2NfZ2V0
RGlzcGxheU5hbWUpCiNkZWZpbmUgdWxvY19nZXREaXNwbGF5U2NyaXB0IFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1bG9jX2dldERpc3BsYXlTY3JpcHQpCiNkZWZpbmUgdWxvY19nZXREaXNwbGF5
U2NyaXB0SW5Db250ZXh0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bG9jX2dldERpc3BsYXlT
Y3JpcHRJbkNvbnRleHQpCiNkZWZpbmUgdWxvY19nZXREaXNwbGF5VmFyaWFudCBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodWxvY19nZXREaXNwbGF5VmFyaWFudCkKI2RlZmluZSB1bG9jX2dldElT
TzNDb3VudHJ5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bG9jX2dldElTTzNDb3VudHJ5KQoj
ZGVmaW5lIHVsb2NfZ2V0SVNPM0xhbmd1YWdlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bG9j
X2dldElTTzNMYW5ndWFnZSkKI2RlZmluZSB1bG9jX2dldElTT0NvdW50cmllcyBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodWxvY19nZXRJU09Db3VudHJpZXMpCiNkZWZpbmUgdWxvY19nZXRJU09M
YW5ndWFnZXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsb2NfZ2V0SVNPTGFuZ3VhZ2VzKQoj
ZGVmaW5lIHVsb2NfZ2V0S2V5d29yZFZhbHVlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bG9j
X2dldEtleXdvcmRWYWx1ZSkKI2RlZmluZSB1bG9jX2dldExDSUQgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVsb2NfZ2V0TENJRCkKI2RlZmluZSB1bG9jX2dldExhbmd1YWdlIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1bG9jX2dldExhbmd1YWdlKQojZGVmaW5lIHVsb2NfZ2V0TGluZU9yaWVu
dGF0aW9uIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bG9jX2dldExpbmVPcmllbnRhdGlvbikK
I2RlZmluZSB1bG9jX2dldExvY2FsZUZvckxDSUQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVs
b2NfZ2V0TG9jYWxlRm9yTENJRCkKI2RlZmluZSB1bG9jX2dldE5hbWUgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVsb2NfZ2V0TmFtZSkKI2RlZmluZSB1bG9jX2dldFBhcmVudCBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodWxvY19nZXRQYXJlbnQpCiNkZWZpbmUgdWxvY19nZXRTY3JpcHQgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsb2NfZ2V0U2NyaXB0KQojZGVmaW5lIHVsb2NfZ2V0VGFi
bGVTdHJpbmdXaXRoRmFsbGJhY2sgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsb2NfZ2V0VGFi
bGVTdHJpbmdXaXRoRmFsbGJhY2spCiNkZWZpbmUgdWxvY19nZXRWYXJpYW50IFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1bG9jX2dldFZhcmlhbnQpCiNkZWZpbmUgdWxvY19taW5pbWl6ZVN1YnRh
Z3MgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsb2NfbWluaW1pemVTdWJ0YWdzKQojZGVmaW5l
IHVsb2Nfb3BlbktleXdvcmRMaXN0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bG9jX29wZW5L
ZXl3b3JkTGlzdCkKI2RlZmluZSB1bG9jX29wZW5LZXl3b3JkcyBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodWxvY19vcGVuS2V5d29yZHMpCiNkZWZpbmUgdWxvY19zZXREZWZhdWx0IFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1bG9jX3NldERlZmF1bHQpCiNkZWZpbmUgdWxvY19zZXRLZXl3b3Jk
VmFsdWUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsb2Nfc2V0S2V5d29yZFZhbHVlKQojZGVm
aW5lIHVsb2NfdG9MYW5ndWFnZVRhZyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodWxvY190b0xh
bmd1YWdlVGFnKQojZGVmaW5lIHVsb2NkYXRhX2Nsb3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1bG9jZGF0YV9jbG9zZSkKI2RlZmluZSB1bG9jZGF0YV9nZXRDTERSVmVyc2lvbiBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodWxvY2RhdGFfZ2V0Q0xEUlZlcnNpb24pCiNkZWZpbmUgdWxvY2Rh
dGFfZ2V0RGVsaW1pdGVyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bG9jZGF0YV9nZXREZWxp
bWl0ZXIpCiNkZWZpbmUgdWxvY2RhdGFfZ2V0RXhlbXBsYXJTZXQgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVsb2NkYXRhX2dldEV4ZW1wbGFyU2V0KQojZGVmaW5lIHVsb2NkYXRhX2dldExvY2Fs
ZURpc3BsYXlQYXR0ZXJuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bG9jZGF0YV9nZXRMb2Nh
bGVEaXNwbGF5UGF0dGVybikKI2RlZmluZSB1bG9jZGF0YV9nZXRMb2NhbGVTZXBhcmF0b3IgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsb2NkYXRhX2dldExvY2FsZVNlcGFyYXRvcikKI2RlZmlu
ZSB1bG9jZGF0YV9nZXRNZWFzdXJlbWVudFN5c3RlbSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dWxvY2RhdGFfZ2V0TWVhc3VyZW1lbnRTeXN0ZW0pCiNkZWZpbmUgdWxvY2RhdGFfZ2V0Tm9TdWJz
dGl0dXRlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bG9jZGF0YV9nZXROb1N1YnN0aXR1dGUp
CiNkZWZpbmUgdWxvY2RhdGFfZ2V0UGFwZXJTaXplIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
bG9jZGF0YV9nZXRQYXBlclNpemUpCiNkZWZpbmUgdWxvY2RhdGFfb3BlbiBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodWxvY2RhdGFfb3BlbikKI2RlZmluZSB1bG9jZGF0YV9zZXROb1N1YnN0aXR1
dGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsb2NkYXRhX3NldE5vU3Vic3RpdHV0ZSkKI2Rl
ZmluZSB1bG9jaW1wX2dldENvdW50cnkgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVsb2NpbXBf
Z2V0Q291bnRyeSkKI2RlZmluZSB1bG9jaW1wX2dldExhbmd1YWdlIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1bG9jaW1wX2dldExhbmd1YWdlKQojZGVmaW5lIHVsb2NpbXBfZ2V0U2NyaXB0IFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bG9jaW1wX2dldFNjcmlwdCkKI2RlZmluZSB1bXNnX2Fw
cGx5UGF0dGVybiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW1zZ19hcHBseVBhdHRlcm4pCiNk
ZWZpbmUgdW1zZ19hdXRvUXVvdGVBcG9zdHJvcGhlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
bXNnX2F1dG9RdW90ZUFwb3N0cm9waGUpCiNkZWZpbmUgdW1zZ19jbG9uZSBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodW1zZ19jbG9uZSkKI2RlZmluZSB1bXNnX2Nsb3NlIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1bXNnX2Nsb3NlKQojZGVmaW5lIHVtc2dfZm9ybWF0IFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1bXNnX2Zvcm1hdCkKI2RlZmluZSB1bXNnX2dldExvY2FsZSBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodW1zZ19nZXRMb2NhbGUpCiNkZWZpbmUgdW1zZ19vcGVuIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1bXNnX29wZW4pCiNkZWZpbmUgdW1zZ19wYXJzZSBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodW1zZ19wYXJzZSkKI2RlZmluZSB1bXNnX3NldExvY2FsZSBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodW1zZ19zZXRMb2NhbGUpCiNkZWZpbmUgdW1zZ190b1BhdHRlcm4g
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVtc2dfdG9QYXR0ZXJuKQojZGVmaW5lIHVtc2dfdmZv
cm1hdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW1zZ192Zm9ybWF0KQojZGVmaW5lIHVtc2df
dnBhcnNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bXNnX3ZwYXJzZSkKI2RlZmluZSB1bXR4
X2xvY2sgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVtdHhfbG9jaykKI2RlZmluZSB1bXR4X3Vu
bG9jayBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW10eF91bmxvY2spCiNkZWZpbmUgdW5pc2V0
X2dldFVuaWNvZGUzMkluc3RhbmNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bmlzZXRfZ2V0
VW5pY29kZTMySW5zdGFuY2UpCiNkZWZpbmUgdW5vcm0yX2FwcGVuZCBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodW5vcm0yX2FwcGVuZCkKI2RlZmluZSB1bm9ybTJfY2xvc2UgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVub3JtMl9jbG9zZSkKI2RlZmluZSB1bm9ybTJfY29tcG9zZVBhaXIgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVub3JtMl9jb21wb3NlUGFpcikKI2RlZmluZSB1bm9ybTJf
Z2V0Q29tYmluaW5nQ2xhc3MgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVub3JtMl9nZXRDb21i
aW5pbmdDbGFzcykKI2RlZmluZSB1bm9ybTJfZ2V0RGVjb21wb3NpdGlvbiBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodW5vcm0yX2dldERlY29tcG9zaXRpb24pCiNkZWZpbmUgdW5vcm0yX2dldElu
c3RhbmNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bm9ybTJfZ2V0SW5zdGFuY2UpCiNkZWZp
bmUgdW5vcm0yX2dldE5GQ0luc3RhbmNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bm9ybTJf
Z2V0TkZDSW5zdGFuY2UpCiNkZWZpbmUgdW5vcm0yX2dldE5GREluc3RhbmNlIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1bm9ybTJfZ2V0TkZESW5zdGFuY2UpCiNkZWZpbmUgdW5vcm0yX2dldE5G
S0NDYXNlZm9sZEluc3RhbmNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bm9ybTJfZ2V0TkZL
Q0Nhc2Vmb2xkSW5zdGFuY2UpCiNkZWZpbmUgdW5vcm0yX2dldE5GS0NJbnN0YW5jZSBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodW5vcm0yX2dldE5GS0NJbnN0YW5jZSkKI2RlZmluZSB1bm9ybTJf
Z2V0TkZLREluc3RhbmNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bm9ybTJfZ2V0TkZLRElu
c3RhbmNlKQojZGVmaW5lIHVub3JtMl9nZXRSYXdEZWNvbXBvc2l0aW9uIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1bm9ybTJfZ2V0UmF3RGVjb21wb3NpdGlvbikKI2RlZmluZSB1bm9ybTJfaGFz
Qm91bmRhcnlBZnRlciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW5vcm0yX2hhc0JvdW5kYXJ5
QWZ0ZXIpCiNkZWZpbmUgdW5vcm0yX2hhc0JvdW5kYXJ5QmVmb3JlIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1bm9ybTJfaGFzQm91bmRhcnlCZWZvcmUpCiNkZWZpbmUgdW5vcm0yX2lzSW5lcnQg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVub3JtMl9pc0luZXJ0KQojZGVmaW5lIHVub3JtMl9p
c05vcm1hbGl6ZWQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVub3JtMl9pc05vcm1hbGl6ZWQp
CiNkZWZpbmUgdW5vcm0yX25vcm1hbGl6ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW5vcm0y
X25vcm1hbGl6ZSkKI2RlZmluZSB1bm9ybTJfbm9ybWFsaXplU2Vjb25kQW5kQXBwZW5kIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1bm9ybTJfbm9ybWFsaXplU2Vjb25kQW5kQXBwZW5kKQojZGVm
aW5lIHVub3JtMl9vcGVuRmlsdGVyZWQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVub3JtMl9v
cGVuRmlsdGVyZWQpCiNkZWZpbmUgdW5vcm0yX3F1aWNrQ2hlY2sgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVub3JtMl9xdWlja0NoZWNrKQojZGVmaW5lIHVub3JtMl9zcGFuUXVpY2tDaGVja1ll
cyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW5vcm0yX3NwYW5RdWlja0NoZWNrWWVzKQojZGVm
aW5lIHVub3JtMl9zd2FwIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bm9ybTJfc3dhcCkKI2Rl
ZmluZSB1bm9ybV9jbG9zZUl0ZXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVub3JtX2Nsb3Nl
SXRlcikKI2RlZmluZSB1bm9ybV9jb21wYXJlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bm9y
bV9jb21wYXJlKQojZGVmaW5lIHVub3JtX2NvbmNhdGVuYXRlIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1bm9ybV9jb25jYXRlbmF0ZSkKI2RlZmluZSB1bm9ybV9nZXRGQ0QxNiBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodW5vcm1fZ2V0RkNEMTYpCiNkZWZpbmUgdW5vcm1fZ2V0UXVpY2tDaGVj
ayBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW5vcm1fZ2V0UXVpY2tDaGVjaykKI2RlZmluZSB1
bm9ybV9pc05vcm1hbGl6ZWQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVub3JtX2lzTm9ybWFs
aXplZCkKI2RlZmluZSB1bm9ybV9pc05vcm1hbGl6ZWRXaXRoT3B0aW9ucyBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodW5vcm1faXNOb3JtYWxpemVkV2l0aE9wdGlvbnMpCiNkZWZpbmUgdW5vcm1f
bmV4dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW5vcm1fbmV4dCkKI2RlZmluZSB1bm9ybV9u
b3JtYWxpemUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVub3JtX25vcm1hbGl6ZSkKI2RlZmlu
ZSB1bm9ybV9vcGVuSXRlciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW5vcm1fb3Blbkl0ZXIp
CiNkZWZpbmUgdW5vcm1fcHJldmlvdXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVub3JtX3By
ZXZpb3VzKQojZGVmaW5lIHVub3JtX3F1aWNrQ2hlY2sgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVub3JtX3F1aWNrQ2hlY2spCiNkZWZpbmUgdW5vcm1fcXVpY2tDaGVja1dpdGhPcHRpb25zIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bm9ybV9xdWlja0NoZWNrV2l0aE9wdGlvbnMpCiNkZWZp
bmUgdW5vcm1fc2V0SXRlciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW5vcm1fc2V0SXRlcikK
I2RlZmluZSB1bnVtX2FwcGx5UGF0dGVybiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW51bV9h
cHBseVBhdHRlcm4pCiNkZWZpbmUgdW51bV9jbG9uZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dW51bV9jbG9uZSkKI2RlZmluZSB1bnVtX2Nsb3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
bnVtX2Nsb3NlKQojZGVmaW5lIHVudW1fY291bnRBdmFpbGFibGUgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVudW1fY291bnRBdmFpbGFibGUpCiNkZWZpbmUgdW51bV9mb3JtYXQgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVudW1fZm9ybWF0KQojZGVmaW5lIHVudW1fZm9ybWF0RGVjaW1hbCBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW51bV9mb3JtYXREZWNpbWFsKQojZGVmaW5lIHVudW1f
Zm9ybWF0RG91YmxlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bnVtX2Zvcm1hdERvdWJsZSkK
I2RlZmluZSB1bnVtX2Zvcm1hdERvdWJsZUN1cnJlbmN5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1bnVtX2Zvcm1hdERvdWJsZUN1cnJlbmN5KQojZGVmaW5lIHVudW1fZm9ybWF0SW50NjQgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVudW1fZm9ybWF0SW50NjQpCiNkZWZpbmUgdW51bV9mb3Jt
YXRVRm9ybWF0dGFibGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVudW1fZm9ybWF0VUZvcm1h
dHRhYmxlKQojZGVmaW5lIHVudW1fZ2V0QXR0cmlidXRlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1bnVtX2dldEF0dHJpYnV0ZSkKI2RlZmluZSB1bnVtX2dldEF2YWlsYWJsZSBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodW51bV9nZXRBdmFpbGFibGUpCiNkZWZpbmUgdW51bV9nZXREb3VibGVB
dHRyaWJ1dGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVudW1fZ2V0RG91YmxlQXR0cmlidXRl
KQojZGVmaW5lIHVudW1fZ2V0TG9jYWxlQnlUeXBlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
bnVtX2dldExvY2FsZUJ5VHlwZSkKI2RlZmluZSB1bnVtX2dldFN5bWJvbCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodW51bV9nZXRTeW1ib2wpCiNkZWZpbmUgdW51bV9nZXRUZXh0QXR0cmlidXRl
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bnVtX2dldFRleHRBdHRyaWJ1dGUpCiNkZWZpbmUg
dW51bV9vcGVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bnVtX29wZW4pCiNkZWZpbmUgdW51
bV9wYXJzZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW51bV9wYXJzZSkKI2RlZmluZSB1bnVt
X3BhcnNlRGVjaW1hbCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW51bV9wYXJzZURlY2ltYWwp
CiNkZWZpbmUgdW51bV9wYXJzZURvdWJsZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW51bV9w
YXJzZURvdWJsZSkKI2RlZmluZSB1bnVtX3BhcnNlRG91YmxlQ3VycmVuY3kgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVudW1fcGFyc2VEb3VibGVDdXJyZW5jeSkKI2RlZmluZSB1bnVtX3BhcnNl
SW50NjQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVudW1fcGFyc2VJbnQ2NCkKI2RlZmluZSB1
bnVtX3BhcnNlVG9VRm9ybWF0dGFibGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVudW1fcGFy
c2VUb1VGb3JtYXR0YWJsZSkKI2RlZmluZSB1bnVtX3NldEF0dHJpYnV0ZSBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodW51bV9zZXRBdHRyaWJ1dGUpCiNkZWZpbmUgdW51bV9zZXREb3VibGVBdHRy
aWJ1dGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVudW1fc2V0RG91YmxlQXR0cmlidXRlKQoj
ZGVmaW5lIHVudW1fc2V0U3ltYm9sIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bnVtX3NldFN5
bWJvbCkKI2RlZmluZSB1bnVtX3NldFRleHRBdHRyaWJ1dGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVudW1fc2V0VGV4dEF0dHJpYnV0ZSkKI2RlZmluZSB1bnVtX3RvUGF0dGVybiBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodW51bV90b1BhdHRlcm4pCiNkZWZpbmUgdW51bXN5c19jbG9zZSBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW51bXN5c19jbG9zZSkKI2RlZmluZSB1bnVtc3lzX2dl
dERlc2NyaXB0aW9uIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bnVtc3lzX2dldERlc2NyaXB0
aW9uKQojZGVmaW5lIHVudW1zeXNfZ2V0TmFtZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodW51
bXN5c19nZXROYW1lKQojZGVmaW5lIHVudW1zeXNfZ2V0UmFkaXggVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVudW1zeXNfZ2V0UmFkaXgpCiNkZWZpbmUgdW51bXN5c19pc0FsZ29yaXRobWljIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bnVtc3lzX2lzQWxnb3JpdGhtaWMpCiNkZWZpbmUgdW51
bXN5c19vcGVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1bnVtc3lzX29wZW4pCiNkZWZpbmUg
dW51bXN5c19vcGVuQXZhaWxhYmxlTmFtZXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVudW1z
eXNfb3BlbkF2YWlsYWJsZU5hbWVzKQojZGVmaW5lIHVudW1zeXNfb3BlbkJ5TmFtZSBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodW51bXN5c19vcGVuQnlOYW1lKQojZGVmaW5lIHVwbHJ1bGVzX2Ns
b3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cGxydWxlc19jbG9zZSkKI2RlZmluZSB1cGxy
dWxlc19vcGVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cGxydWxlc19vcGVuKQojZGVmaW5l
IHVwbHJ1bGVzX29wZW5Gb3JUeXBlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cGxydWxlc19v
cGVuRm9yVHlwZSkKI2RlZmluZSB1cGxydWxlc19zZWxlY3QgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVwbHJ1bGVzX3NlbGVjdCkKI2RlZmluZSB1cGx1Z19jbG9zZUxpYnJhcnkgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVwbHVnX2Nsb3NlTGlicmFyeSkKI2RlZmluZSB1cGx1Z19maW5kTGli
cmFyeSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBsdWdfZmluZExpYnJhcnkpCiNkZWZpbmUg
dXBsdWdfZ2V0Q29uZmlndXJhdGlvbiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBsdWdfZ2V0
Q29uZmlndXJhdGlvbikKI2RlZmluZSB1cGx1Z19nZXRDb250ZXh0IFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1cGx1Z19nZXRDb250ZXh0KQojZGVmaW5lIHVwbHVnX2dldEN1cnJlbnRMZXZlbCBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBsdWdfZ2V0Q3VycmVudExldmVsKQojZGVmaW5lIHVw
bHVnX2dldExpYnJhcnkgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwbHVnX2dldExpYnJhcnkp
CiNkZWZpbmUgdXBsdWdfZ2V0TGlicmFyeU5hbWUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVw
bHVnX2dldExpYnJhcnlOYW1lKQojZGVmaW5lIHVwbHVnX2dldFBsdWdJbnRlcm5hbCBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodXBsdWdfZ2V0UGx1Z0ludGVybmFsKQojZGVmaW5lIHVwbHVnX2dl
dFBsdWdMZXZlbCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBsdWdfZ2V0UGx1Z0xldmVsKQoj
ZGVmaW5lIHVwbHVnX2dldFBsdWdMb2FkU3RhdHVzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
cGx1Z19nZXRQbHVnTG9hZFN0YXR1cykKI2RlZmluZSB1cGx1Z19nZXRQbHVnTmFtZSBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodXBsdWdfZ2V0UGx1Z05hbWUpCiNkZWZpbmUgdXBsdWdfZ2V0UGx1
Z2luRmlsZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBsdWdfZ2V0UGx1Z2luRmlsZSkKI2Rl
ZmluZSB1cGx1Z19nZXRTeW1ib2xOYW1lIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cGx1Z19n
ZXRTeW1ib2xOYW1lKQojZGVmaW5lIHVwbHVnX2luaXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVwbHVnX2luaXQpCiNkZWZpbmUgdXBsdWdfbG9hZFBsdWdGcm9tRW50cnlwb2ludCBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodXBsdWdfbG9hZFBsdWdGcm9tRW50cnlwb2ludCkKI2RlZmluZSB1
cGx1Z19sb2FkUGx1Z0Zyb21MaWJyYXJ5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cGx1Z19s
b2FkUGx1Z0Zyb21MaWJyYXJ5KQojZGVmaW5lIHVwbHVnX25leHRQbHVnIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1cGx1Z19uZXh0UGx1ZykKI2RlZmluZSB1cGx1Z19vcGVuTGlicmFyeSBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodXBsdWdfb3BlbkxpYnJhcnkpCiNkZWZpbmUgdXBsdWdfcmVt
b3ZlUGx1ZyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBsdWdfcmVtb3ZlUGx1ZykKI2RlZmlu
ZSB1cGx1Z19zZXRDb250ZXh0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cGx1Z19zZXRDb250
ZXh0KQojZGVmaW5lIHVwbHVnX3NldFBsdWdMZXZlbCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dXBsdWdfc2V0UGx1Z0xldmVsKQojZGVmaW5lIHVwbHVnX3NldFBsdWdOYW1lIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1cGx1Z19zZXRQbHVnTmFtZSkKI2RlZmluZSB1cGx1Z19zZXRQbHVnTm9V
bmxvYWQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwbHVnX3NldFBsdWdOb1VubG9hZCkKI2Rl
ZmluZSB1cHJvcHNfZ2V0U291cmNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJvcHNfZ2V0
U291cmNlKQojZGVmaW5lIHVwcm9wc3ZlY19hZGRQcm9wZXJ0eVN0YXJ0cyBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodXByb3BzdmVjX2FkZFByb3BlcnR5U3RhcnRzKQojZGVmaW5lIHVwcnZfYWVz
dHJuY3B5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2Flc3RybmNweSkKI2RlZmluZSB1
cHJ2X2FzY2lpRnJvbUViY2RpYyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9hc2NpaUZy
b21FYmNkaWMpCiNkZWZpbmUgdXBydl9hc2NpaXRvbG93ZXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVwcnZfYXNjaWl0b2xvd2VyKQojZGVmaW5lIHVwcnZfY2FsbG9jIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1cHJ2X2NhbGxvYykKI2RlZmluZSB1cHJ2X2NlaWwgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVwcnZfY2VpbCkKI2RlZmluZSB1cHJ2X2NudHRhYl9hZGRDb250cmFjdGlvbiBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9jbnR0YWJfYWRkQ29udHJhY3Rpb24pCiNkZWZp
bmUgdXBydl9jbnR0YWJfY2hhbmdlQ29udHJhY3Rpb24gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVwcnZfY250dGFiX2NoYW5nZUNvbnRyYWN0aW9uKQojZGVmaW5lIHVwcnZfY250dGFiX2NoYW5n
ZUxhc3RDRSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9jbnR0YWJfY2hhbmdlTGFzdENF
KQojZGVmaW5lIHVwcnZfY250dGFiX2Nsb25lIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2
X2NudHRhYl9jbG9uZSkKI2RlZmluZSB1cHJ2X2NudHRhYl9jbG9zZSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodXBydl9jbnR0YWJfY2xvc2UpCiNkZWZpbmUgdXBydl9jbnR0YWJfY29uc3RydWN0
VGFibGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfY250dGFiX2NvbnN0cnVjdFRhYmxl
KQojZGVmaW5lIHVwcnZfY250dGFiX2ZpbmRDRSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBy
dl9jbnR0YWJfZmluZENFKQojZGVmaW5lIHVwcnZfY250dGFiX2ZpbmRDUCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodXBydl9jbnR0YWJfZmluZENQKQojZGVmaW5lIHVwcnZfY250dGFiX2dldENF
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2NudHRhYl9nZXRDRSkKI2RlZmluZSB1cHJ2
X2NudHRhYl9pbnNlcnRDb250cmFjdGlvbiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9j
bnR0YWJfaW5zZXJ0Q29udHJhY3Rpb24pCiNkZWZpbmUgdXBydl9jbnR0YWJfaXNUYWlsb3JlZCBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9jbnR0YWJfaXNUYWlsb3JlZCkKI2RlZmluZSB1
cHJ2X2NudHRhYl9vcGVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2NudHRhYl9vcGVu
KQojZGVmaW5lIHVwcnZfY250dGFiX3NldENvbnRyYWN0aW9uIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1cHJ2X2NudHRhYl9zZXRDb250cmFjdGlvbikKI2RlZmluZSB1cHJ2X2NvbGxJdGVyYXRl
QXRFbmQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfY29sbEl0ZXJhdGVBdEVuZCkKI2Rl
ZmluZSB1cHJ2X2NvbXBhcmVBU0NJSVByb3BlcnR5TmFtZXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVwcnZfY29tcGFyZUFTQ0lJUHJvcGVydHlOYW1lcykKI2RlZmluZSB1cHJ2X2NvbXBhcmVF
QkNESUNQcm9wZXJ0eU5hbWVzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2NvbXBhcmVF
QkNESUNQcm9wZXJ0eU5hbWVzKQojZGVmaW5lIHVwcnZfY29tcGFyZUludkFzY2lpIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2NvbXBhcmVJbnZBc2NpaSkKI2RlZmluZSB1cHJ2X2NvbXBh
cmVJbnZFYmNkaWMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfY29tcGFyZUludkViY2Rp
YykKI2RlZmluZSB1cHJ2X2NvbXBhcmVJbnZFYmNkaWNBc0FzY2lpIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1cHJ2X2NvbXBhcmVJbnZFYmNkaWNBc0FzY2lpKQojZGVmaW5lIHVwcnZfY29udmVy
dFRvTENJRCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9jb252ZXJ0VG9MQ0lEKQojZGVm
aW5lIHVwcnZfY29udmVydFRvUG9zaXggVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfY29u
dmVydFRvUG9zaXgpCiNkZWZpbmUgdXBydl9jb3B5QXNjaWkgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVwcnZfY29weUFzY2lpKQojZGVmaW5lIHVwcnZfY29weUViY2RpYyBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodXBydl9jb3B5RWJjZGljKQojZGVmaW5lIHVwcnZfZGVjQ29udGV4dENsZWFy
U3RhdHVzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2RlY0NvbnRleHRDbGVhclN0YXR1
cykKI2RlZmluZSB1cHJ2X2RlY0NvbnRleHREZWZhdWx0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1cHJ2X2RlY0NvbnRleHREZWZhdWx0KQojZGVmaW5lIHVwcnZfZGVjQ29udGV4dEdldFJvdW5k
aW5nIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2RlY0NvbnRleHRHZXRSb3VuZGluZykK
I2RlZmluZSB1cHJ2X2RlY0NvbnRleHRHZXRTdGF0dXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVwcnZfZGVjQ29udGV4dEdldFN0YXR1cykKI2RlZmluZSB1cHJ2X2RlY0NvbnRleHRSZXN0b3Jl
U3RhdHVzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2RlY0NvbnRleHRSZXN0b3JlU3Rh
dHVzKQojZGVmaW5lIHVwcnZfZGVjQ29udGV4dFNhdmVTdGF0dXMgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVwcnZfZGVjQ29udGV4dFNhdmVTdGF0dXMpCiNkZWZpbmUgdXBydl9kZWNDb250ZXh0
U2V0Um91bmRpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZGVjQ29udGV4dFNldFJv
dW5kaW5nKQojZGVmaW5lIHVwcnZfZGVjQ29udGV4dFNldFN0YXR1cyBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodXBydl9kZWNDb250ZXh0U2V0U3RhdHVzKQojZGVmaW5lIHVwcnZfZGVjQ29udGV4
dFNldFN0YXR1c0Zyb21TdHJpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZGVjQ29u
dGV4dFNldFN0YXR1c0Zyb21TdHJpbmcpCiNkZWZpbmUgdXBydl9kZWNDb250ZXh0U2V0U3RhdHVz
RnJvbVN0cmluZ1F1aWV0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2RlY0NvbnRleHRT
ZXRTdGF0dXNGcm9tU3RyaW5nUXVpZXQpCiNkZWZpbmUgdXBydl9kZWNDb250ZXh0U2V0U3RhdHVz
UXVpZXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZGVjQ29udGV4dFNldFN0YXR1c1F1
aWV0KQojZGVmaW5lIHVwcnZfZGVjQ29udGV4dFN0YXR1c1RvU3RyaW5nIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1cHJ2X2RlY0NvbnRleHRTdGF0dXNUb1N0cmluZykKI2RlZmluZSB1cHJ2X2Rl
Y0NvbnRleHRUZXN0U2F2ZWRTdGF0dXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZGVj
Q29udGV4dFRlc3RTYXZlZFN0YXR1cykKI2RlZmluZSB1cHJ2X2RlY0NvbnRleHRUZXN0U3RhdHVz
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2RlY0NvbnRleHRUZXN0U3RhdHVzKQojZGVm
aW5lIHVwcnZfZGVjQ29udGV4dFplcm9TdGF0dXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVw
cnZfZGVjQ29udGV4dFplcm9TdGF0dXMpCiNkZWZpbmUgdXBydl9kZWNOdW1iZXJBYnMgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZGVjTnVtYmVyQWJzKQojZGVmaW5lIHVwcnZfZGVjTnVt
YmVyQWRkIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2RlY051bWJlckFkZCkKI2RlZmlu
ZSB1cHJ2X2RlY051bWJlckFuZCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9kZWNOdW1i
ZXJBbmQpCiNkZWZpbmUgdXBydl9kZWNOdW1iZXJDbGFzcyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodXBydl9kZWNOdW1iZXJDbGFzcykKI2RlZmluZSB1cHJ2X2RlY051bWJlckNsYXNzVG9TdHJp
bmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZGVjTnVtYmVyQ2xhc3NUb1N0cmluZykK
I2RlZmluZSB1cHJ2X2RlY051bWJlckNvbXBhcmUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVw
cnZfZGVjTnVtYmVyQ29tcGFyZSkKI2RlZmluZSB1cHJ2X2RlY051bWJlckNvbXBhcmVTaWduYWwg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZGVjTnVtYmVyQ29tcGFyZVNpZ25hbCkKI2Rl
ZmluZSB1cHJ2X2RlY051bWJlckNvbXBhcmVUb3RhbCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dXBydl9kZWNOdW1iZXJDb21wYXJlVG90YWwpCiNkZWZpbmUgdXBydl9kZWNOdW1iZXJDb21wYXJl
VG90YWxNYWcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZGVjTnVtYmVyQ29tcGFyZVRv
dGFsTWFnKQojZGVmaW5lIHVwcnZfZGVjTnVtYmVyQ29weSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodXBydl9kZWNOdW1iZXJDb3B5KQojZGVmaW5lIHVwcnZfZGVjTnVtYmVyQ29weUFicyBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9kZWNOdW1iZXJDb3B5QWJzKQojZGVmaW5lIHVwcnZf
ZGVjTnVtYmVyQ29weU5lZ2F0ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9kZWNOdW1i
ZXJDb3B5TmVnYXRlKQojZGVmaW5lIHVwcnZfZGVjTnVtYmVyQ29weVNpZ24gVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVwcnZfZGVjTnVtYmVyQ29weVNpZ24pCiNkZWZpbmUgdXBydl9kZWNOdW1i
ZXJEaXZpZGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZGVjTnVtYmVyRGl2aWRlKQoj
ZGVmaW5lIHVwcnZfZGVjTnVtYmVyRGl2aWRlSW50ZWdlciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodXBydl9kZWNOdW1iZXJEaXZpZGVJbnRlZ2VyKQojZGVmaW5lIHVwcnZfZGVjTnVtYmVyRXhw
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2RlY051bWJlckV4cCkKI2RlZmluZSB1cHJ2
X2RlY051bWJlckZNQSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9kZWNOdW1iZXJGTUEp
CiNkZWZpbmUgdXBydl9kZWNOdW1iZXJGcm9tSW50MzIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVwcnZfZGVjTnVtYmVyRnJvbUludDMyKQojZGVmaW5lIHVwcnZfZGVjTnVtYmVyRnJvbVN0cmlu
ZyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9kZWNOdW1iZXJGcm9tU3RyaW5nKQojZGVm
aW5lIHVwcnZfZGVjTnVtYmVyRnJvbVVJbnQzMiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBy
dl9kZWNOdW1iZXJGcm9tVUludDMyKQojZGVmaW5lIHVwcnZfZGVjTnVtYmVyR2V0QkNEIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2RlY051bWJlckdldEJDRCkKI2RlZmluZSB1cHJ2X2Rl
Y051bWJlckludmVydCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9kZWNOdW1iZXJJbnZl
cnQpCiNkZWZpbmUgdXBydl9kZWNOdW1iZXJJc05vcm1hbCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodXBydl9kZWNOdW1iZXJJc05vcm1hbCkKI2RlZmluZSB1cHJ2X2RlY051bWJlcklzU3Vibm9y
bWFsIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2RlY051bWJlcklzU3Vibm9ybWFsKQoj
ZGVmaW5lIHVwcnZfZGVjTnVtYmVyTG4gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZGVj
TnVtYmVyTG4pCiNkZWZpbmUgdXBydl9kZWNOdW1iZXJMb2cxMCBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodXBydl9kZWNOdW1iZXJMb2cxMCkKI2RlZmluZSB1cHJ2X2RlY051bWJlckxvZ0IgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZGVjTnVtYmVyTG9nQikKI2RlZmluZSB1cHJ2X2Rl
Y051bWJlck1heCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9kZWNOdW1iZXJNYXgpCiNk
ZWZpbmUgdXBydl9kZWNOdW1iZXJNYXhNYWcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZf
ZGVjTnVtYmVyTWF4TWFnKQojZGVmaW5lIHVwcnZfZGVjTnVtYmVyTWluIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1cHJ2X2RlY051bWJlck1pbikKI2RlZmluZSB1cHJ2X2RlY051bWJlck1pbk1h
ZyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9kZWNOdW1iZXJNaW5NYWcpCiNkZWZpbmUg
dXBydl9kZWNOdW1iZXJNaW51cyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9kZWNOdW1i
ZXJNaW51cykKI2RlZmluZSB1cHJ2X2RlY051bWJlck11bHRpcGx5IFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1cHJ2X2RlY051bWJlck11bHRpcGx5KQojZGVmaW5lIHVwcnZfZGVjTnVtYmVyTmV4
dE1pbnVzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2RlY051bWJlck5leHRNaW51cykK
I2RlZmluZSB1cHJ2X2RlY051bWJlck5leHRQbHVzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
cHJ2X2RlY051bWJlck5leHRQbHVzKQojZGVmaW5lIHVwcnZfZGVjTnVtYmVyTmV4dFRvd2FyZCBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9kZWNOdW1iZXJOZXh0VG93YXJkKQojZGVmaW5l
IHVwcnZfZGVjTnVtYmVyTm9ybWFsaXplIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2Rl
Y051bWJlck5vcm1hbGl6ZSkKI2RlZmluZSB1cHJ2X2RlY051bWJlck9yIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1cHJ2X2RlY051bWJlck9yKQojZGVmaW5lIHVwcnZfZGVjTnVtYmVyUGx1cyBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9kZWNOdW1iZXJQbHVzKQojZGVmaW5lIHVwcnZf
ZGVjTnVtYmVyUG93ZXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZGVjTnVtYmVyUG93
ZXIpCiNkZWZpbmUgdXBydl9kZWNOdW1iZXJRdWFudGl6ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodXBydl9kZWNOdW1iZXJRdWFudGl6ZSkKI2RlZmluZSB1cHJ2X2RlY051bWJlclJlZHVjZSBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9kZWNOdW1iZXJSZWR1Y2UpCiNkZWZpbmUgdXBy
dl9kZWNOdW1iZXJSZW1haW5kZXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZGVjTnVt
YmVyUmVtYWluZGVyKQojZGVmaW5lIHVwcnZfZGVjTnVtYmVyUmVtYWluZGVyTmVhciBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodXBydl9kZWNOdW1iZXJSZW1haW5kZXJOZWFyKQojZGVmaW5lIHVw
cnZfZGVjTnVtYmVyUmVzY2FsZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9kZWNOdW1i
ZXJSZXNjYWxlKQojZGVmaW5lIHVwcnZfZGVjTnVtYmVyUm90YXRlIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1cHJ2X2RlY051bWJlclJvdGF0ZSkKI2RlZmluZSB1cHJ2X2RlY051bWJlclNhbWVR
dWFudHVtIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2RlY051bWJlclNhbWVRdWFudHVt
KQojZGVmaW5lIHVwcnZfZGVjTnVtYmVyU2NhbGVCIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
cHJ2X2RlY051bWJlclNjYWxlQikKI2RlZmluZSB1cHJ2X2RlY051bWJlclNldEJDRCBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodXBydl9kZWNOdW1iZXJTZXRCQ0QpCiNkZWZpbmUgdXBydl9kZWNO
dW1iZXJTaGlmdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9kZWNOdW1iZXJTaGlmdCkK
I2RlZmluZSB1cHJ2X2RlY051bWJlclNxdWFyZVJvb3QgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVwcnZfZGVjTnVtYmVyU3F1YXJlUm9vdCkKI2RlZmluZSB1cHJ2X2RlY051bWJlclN1YnRyYWN0
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2RlY051bWJlclN1YnRyYWN0KQojZGVmaW5l
IHVwcnZfZGVjTnVtYmVyVG9FbmdTdHJpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZf
ZGVjTnVtYmVyVG9FbmdTdHJpbmcpCiNkZWZpbmUgdXBydl9kZWNOdW1iZXJUb0ludDMyIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2RlY051bWJlclRvSW50MzIpCiNkZWZpbmUgdXBydl9k
ZWNOdW1iZXJUb0ludGVncmFsRXhhY3QgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZGVj
TnVtYmVyVG9JbnRlZ3JhbEV4YWN0KQojZGVmaW5lIHVwcnZfZGVjTnVtYmVyVG9JbnRlZ3JhbFZh
bHVlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2RlY051bWJlclRvSW50ZWdyYWxWYWx1
ZSkKI2RlZmluZSB1cHJ2X2RlY051bWJlclRvU3RyaW5nIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1cHJ2X2RlY051bWJlclRvU3RyaW5nKQojZGVmaW5lIHVwcnZfZGVjTnVtYmVyVG9VSW50MzIg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZGVjTnVtYmVyVG9VSW50MzIpCiNkZWZpbmUg
dXBydl9kZWNOdW1iZXJUcmltIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2RlY051bWJl
clRyaW0pCiNkZWZpbmUgdXBydl9kZWNOdW1iZXJWZXJzaW9uIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1cHJ2X2RlY051bWJlclZlcnNpb24pCiNkZWZpbmUgdXBydl9kZWNOdW1iZXJYb3IgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZGVjTnVtYmVyWG9yKQojZGVmaW5lIHVwcnZfZGVj
TnVtYmVyWmVybyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9kZWNOdW1iZXJaZXJvKQoj
ZGVmaW5lIHVwcnZfZGVsZXRlVU9iamVjdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9k
ZWxldGVVT2JqZWN0KQojZGVmaW5lIHVwcnZfZGVsZXRlX2NvbGxJdGVyYXRlIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1cHJ2X2RlbGV0ZV9jb2xsSXRlcmF0ZSkKI2RlZmluZSB1cHJ2X2RsX2Ns
b3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2RsX2Nsb3NlKQojZGVmaW5lIHVwcnZf
ZGxfb3BlbiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9kbF9vcGVuKQojZGVmaW5lIHVw
cnZfZGxzeW1fZnVuYyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9kbHN5bV9mdW5jKQoj
ZGVmaW5lIHVwcnZfZWFzdHJuY3B5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2Vhc3Ry
bmNweSkKI2RlZmluZSB1cHJ2X2ViY2RpY0Zyb21Bc2NpaSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodXBydl9lYmNkaWNGcm9tQXNjaWkpCiNkZWZpbmUgdXBydl9lYmNkaWNUb0xvd2VyY2FzZUFz
Y2lpIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2ViY2RpY1RvTG93ZXJjYXNlQXNjaWkp
CiNkZWZpbmUgdXBydl9lYmNkaWN0b2xvd2VyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2
X2ViY2RpY3RvbG93ZXIpCiNkZWZpbmUgdXBydl9mYWJzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1cHJ2X2ZhYnMpCiNkZWZpbmUgdXBydl9mbG9vciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dXBydl9mbG9vcikKI2RlZmluZSB1cHJ2X2ZtYXggVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVw
cnZfZm1heCkKI2RlZmluZSB1cHJ2X2ZtaW4gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZf
Zm1pbikKI2RlZmluZSB1cHJ2X2Ztb2QgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZm1v
ZCkKI2RlZmluZSB1cHJ2X2ZyZWUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZnJlZSkK
I2RlZmluZSB1cHJ2X2dldENoYXJOYW1lQ2hhcmFjdGVycyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodXBydl9nZXRDaGFyTmFtZUNoYXJhY3RlcnMpCiNkZWZpbmUgdXBydl9nZXREZWZhdWx0Q29k
ZXBhZ2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZ2V0RGVmYXVsdENvZGVwYWdlKQoj
ZGVmaW5lIHVwcnZfZ2V0RGVmYXVsdExvY2FsZUlEIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
cHJ2X2dldERlZmF1bHRMb2NhbGVJRCkKI2RlZmluZSB1cHJ2X2dldEluZmluaXR5IFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2dldEluZmluaXR5KQojZGVmaW5lIHVwcnZfZ2V0TWF4Q2hh
ck5hbWVMZW5ndGggVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfZ2V0TWF4Q2hhck5hbWVM
ZW5ndGgpCiNkZWZpbmUgdXBydl9nZXRNYXhWYWx1ZXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVwcnZfZ2V0TWF4VmFsdWVzKQojZGVmaW5lIHVwcnZfZ2V0TmFOIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1cHJ2X2dldE5hTikKI2RlZmluZSB1cHJ2X2dldFJhd1VUQ3RpbWUgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVwcnZfZ2V0UmF3VVRDdGltZSkKI2RlZmluZSB1cHJ2X2dldFN0YXRp
Y0N1cnJlbmN5TmFtZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9nZXRTdGF0aWNDdXJy
ZW5jeU5hbWUpCiNkZWZpbmUgdXBydl9nZXRVVEN0aW1lIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1cHJ2X2dldFVUQ3RpbWUpCiNkZWZpbmUgdXBydl9oYXZlUHJvcGVydGllcyBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodXBydl9oYXZlUHJvcGVydGllcykKI2RlZmluZSB1cHJ2X2luaXRfY29s
bEl0ZXJhdGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfaW5pdF9jb2xsSXRlcmF0ZSkK
I2RlZmluZSB1cHJ2X2luaXRfcGNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2luaXRf
cGNlKQojZGVmaW5lIHVwcnZfaW50MzJDb21wYXJhdG9yIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1cHJ2X2ludDMyQ29tcGFyYXRvcikKI2RlZmluZSB1cHJ2X2lzQVNDSUlMZXR0ZXIgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfaXNBU0NJSUxldHRlcikKI2RlZmluZSB1cHJ2X2lzSW5m
aW5pdGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfaXNJbmZpbml0ZSkKI2RlZmluZSB1
cHJ2X2lzSW52YXJpYW50U3RyaW5nIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2lzSW52
YXJpYW50U3RyaW5nKQojZGVmaW5lIHVwcnZfaXNJbnZhcmlhbnRVU3RyaW5nIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1cHJ2X2lzSW52YXJpYW50VVN0cmluZykKI2RlZmluZSB1cHJ2X2lzTmFO
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2lzTmFOKQojZGVmaW5lIHVwcnZfaXNOZWdh
dGl2ZUluZmluaXR5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2lzTmVnYXRpdmVJbmZp
bml0eSkKI2RlZmluZSB1cHJ2X2lzUG9zaXRpdmVJbmZpbml0eSBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodXBydl9pc1Bvc2l0aXZlSW5maW5pdHkpCiNkZWZpbmUgdXBydl9pdG91IFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1cHJ2X2l0b3UpCiNkZWZpbmUgdXBydl9sb2cgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVwcnZfbG9nKQojZGVmaW5lIHVwcnZfbWFsbG9jIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1cHJ2X21hbGxvYykKI2RlZmluZSB1cHJ2X21hcEZpbGUgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVwcnZfbWFwRmlsZSkKI2RlZmluZSB1cHJ2X21heCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodXBydl9tYXgpCiNkZWZpbmUgdXBydl9tYXhNYW50aXNzYSBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodXBydl9tYXhNYW50aXNzYSkKI2RlZmluZSB1cHJ2X21heGltdW1QdHIg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfbWF4aW11bVB0cikKI2RlZmluZSB1cHJ2X21p
biBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9taW4pCiNkZWZpbmUgdXBydl9tb2RmIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X21vZGYpCiNkZWZpbmUgdXBydl9uZXdfY29sbEl0
ZXJhdGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfbmV3X2NvbGxJdGVyYXRlKQojZGVm
aW5lIHVwcnZfcGFyc2VDdXJyZW5jeSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9wYXJz
ZUN1cnJlbmN5KQojZGVmaW5lIHVwcnZfcGF0aElzQWJzb2x1dGUgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVwcnZfcGF0aElzQWJzb2x1dGUpCiNkZWZpbmUgdXBydl9wb3cgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVwcnZfcG93KQojZGVmaW5lIHVwcnZfcG93MTAgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVwcnZfcG93MTApCiNkZWZpbmUgdXBydl9yZWFsbG9jIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1cHJ2X3JlYWxsb2MpCiNkZWZpbmUgdXBydl9yb3VuZCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodXBydl9yb3VuZCkKI2RlZmluZSB1cHJ2X3NvcnRBcnJheSBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodXBydl9zb3J0QXJyYXkpCiNkZWZpbmUgdXBydl9zdGFibGVCaW5hcnlT
ZWFyY2ggVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfc3RhYmxlQmluYXJ5U2VhcmNoKQoj
ZGVmaW5lIHVwcnZfc3RyQ29tcGFyZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl9zdHJD
b21wYXJlKQojZGVmaW5lIHVwcnZfc3RyZHVwIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2
X3N0cmR1cCkKI2RlZmluZSB1cHJ2X3N0cmljbXAgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVw
cnZfc3RyaWNtcCkKI2RlZmluZSB1cHJ2X3N0cm5kdXAgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVwcnZfc3RybmR1cCkKI2RlZmluZSB1cHJ2X3N0cm5pY21wIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1cHJ2X3N0cm5pY21wKQojZGVmaW5lIHVwcnZfc3ludGF4RXJyb3IgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVwcnZfc3ludGF4RXJyb3IpCiNkZWZpbmUgdXBydl90aW1lem9uZSBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl90aW1lem9uZSkKI2RlZmluZSB1cHJ2X3RvdXBwZXIg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfdG91cHBlcikKI2RlZmluZSB1cHJ2X3RydW5j
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X3RydW5jKQojZGVmaW5lIHVwcnZfdHpuYW1l
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X3R6bmFtZSkKI2RlZmluZSB1cHJ2X3R6c2V0
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X3R6c2V0KQojZGVmaW5lIHVwcnZfdWNhX2Fk
ZEFuRWxlbWVudCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl91Y2FfYWRkQW5FbGVtZW50
KQojZGVmaW5lIHVwcnZfdWNhX2Fzc2VtYmxlVGFibGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVwcnZfdWNhX2Fzc2VtYmxlVGFibGUpCiNkZWZpbmUgdXBydl91Y2FfY2Fub25pY2FsQ2xvc3Vy
ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl91Y2FfY2Fub25pY2FsQ2xvc3VyZSkKI2Rl
ZmluZSB1cHJ2X3VjYV9jbG9zZVRlbXBUYWJsZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBy
dl91Y2FfY2xvc2VUZW1wVGFibGUpCiNkZWZpbmUgdXBydl91Y2FfZ2V0Q29kZVBvaW50RnJvbVJh
dyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl91Y2FfZ2V0Q29kZVBvaW50RnJvbVJhdykK
I2RlZmluZSB1cHJ2X3VjYV9nZXRJbXBsaWNpdEZyb21SYXcgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVwcnZfdWNhX2dldEltcGxpY2l0RnJvbVJhdykKI2RlZmluZSB1cHJ2X3VjYV9nZXRSYXdG
cm9tQ29kZVBvaW50IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X3VjYV9nZXRSYXdGcm9t
Q29kZVBvaW50KQojZGVmaW5lIHVwcnZfdWNhX2dldFJhd0Zyb21JbXBsaWNpdCBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodXBydl91Y2FfZ2V0UmF3RnJvbUltcGxpY2l0KQojZGVmaW5lIHVwcnZf
dWNhX2luaXRJbXBsaWNpdENvbnN0YW50cyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXBydl91
Y2FfaW5pdEltcGxpY2l0Q29uc3RhbnRzKQojZGVmaW5lIHVwcnZfdWNhX2luaXRUZW1wVGFibGUg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfdWNhX2luaXRUZW1wVGFibGUpCiNkZWZpbmUg
dXBydl91aW50MTZDb21wYXJhdG9yIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHJ2X3VpbnQx
NkNvbXBhcmF0b3IpCiNkZWZpbmUgdXBydl91aW50MzJDb21wYXJhdG9yIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1cHJ2X3VpbnQzMkNvbXBhcmF0b3IpCiNkZWZpbmUgdXBydl91bm1hcEZpbGUg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwcnZfdW5tYXBGaWxlKQojZGVmaW5lIHVwdmVjX2Ns
b25lQXJyYXkgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwdmVjX2Nsb25lQXJyYXkpCiNkZWZp
bmUgdXB2ZWNfY2xvc2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwdmVjX2Nsb3NlKQojZGVm
aW5lIHVwdmVjX2NvbXBhY3QgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVwdmVjX2NvbXBhY3Qp
CiNkZWZpbmUgdXB2ZWNfY29tcGFjdFRvVVRyaWUySGFuZGxlciBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodXB2ZWNfY29tcGFjdFRvVVRyaWUySGFuZGxlcikKI2RlZmluZSB1cHZlY19jb21wYWN0
VG9VVHJpZTJXaXRoUm93SW5kZXhlcyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXB2ZWNfY29t
cGFjdFRvVVRyaWUyV2l0aFJvd0luZGV4ZXMpCiNkZWZpbmUgdXB2ZWNfZ2V0QXJyYXkgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVwdmVjX2dldEFycmF5KQojZGVmaW5lIHVwdmVjX2dldFJvdyBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXB2ZWNfZ2V0Um93KQojZGVmaW5lIHVwdmVjX2dldFZh
bHVlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHZlY19nZXRWYWx1ZSkKI2RlZmluZSB1cHZl
Y19vcGVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHZlY19vcGVuKQojZGVmaW5lIHVwdmVj
X3NldFZhbHVlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cHZlY19zZXRWYWx1ZSkKI2RlZmlu
ZSB1cmVnZXhfYXBwZW5kUmVwbGFjZW1lbnQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdl
eF9hcHBlbmRSZXBsYWNlbWVudCkKI2RlZmluZSB1cmVnZXhfYXBwZW5kUmVwbGFjZW1lbnRVVGV4
dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlZ2V4X2FwcGVuZFJlcGxhY2VtZW50VVRleHQp
CiNkZWZpbmUgdXJlZ2V4X2FwcGVuZFRhaWwgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdl
eF9hcHBlbmRUYWlsKQojZGVmaW5lIHVyZWdleF9hcHBlbmRUYWlsVVRleHQgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVyZWdleF9hcHBlbmRUYWlsVVRleHQpCiNkZWZpbmUgdXJlZ2V4X2Nsb25l
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVnZXhfY2xvbmUpCiNkZWZpbmUgdXJlZ2V4X2Ns
b3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVnZXhfY2xvc2UpCiNkZWZpbmUgdXJlZ2V4
X2VuZCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlZ2V4X2VuZCkKI2RlZmluZSB1cmVnZXhf
ZW5kNjQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdleF9lbmQ2NCkKI2RlZmluZSB1cmVn
ZXhfZmluZCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlZ2V4X2ZpbmQpCiNkZWZpbmUgdXJl
Z2V4X2ZpbmQ2NCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlZ2V4X2ZpbmQ2NCkKI2RlZmlu
ZSB1cmVnZXhfZmluZE5leHQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdleF9maW5kTmV4
dCkKI2RlZmluZSB1cmVnZXhfZmxhZ3MgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdleF9m
bGFncykKI2RlZmluZSB1cmVnZXhfZ2V0RmluZFByb2dyZXNzQ2FsbGJhY2sgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVyZWdleF9nZXRGaW5kUHJvZ3Jlc3NDYWxsYmFjaykKI2RlZmluZSB1cmVn
ZXhfZ2V0TWF0Y2hDYWxsYmFjayBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlZ2V4X2dldE1h
dGNoQ2FsbGJhY2spCiNkZWZpbmUgdXJlZ2V4X2dldFN0YWNrTGltaXQgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVyZWdleF9nZXRTdGFja0xpbWl0KQojZGVmaW5lIHVyZWdleF9nZXRUZXh0IFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVnZXhfZ2V0VGV4dCkKI2RlZmluZSB1cmVnZXhfZ2V0
VGltZUxpbWl0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVnZXhfZ2V0VGltZUxpbWl0KQoj
ZGVmaW5lIHVyZWdleF9nZXRVVGV4dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlZ2V4X2dl
dFVUZXh0KQojZGVmaW5lIHVyZWdleF9ncm91cCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJl
Z2V4X2dyb3VwKQojZGVmaW5lIHVyZWdleF9ncm91cENvdW50IFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1cmVnZXhfZ3JvdXBDb3VudCkKI2RlZmluZSB1cmVnZXhfZ3JvdXBVVGV4dCBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodXJlZ2V4X2dyb3VwVVRleHQpCiNkZWZpbmUgdXJlZ2V4X2dyb3Vw
VVRleHREZWVwIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVnZXhfZ3JvdXBVVGV4dERlZXAp
CiNkZWZpbmUgdXJlZ2V4X2hhc0FuY2hvcmluZ0JvdW5kcyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodXJlZ2V4X2hhc0FuY2hvcmluZ0JvdW5kcykKI2RlZmluZSB1cmVnZXhfaGFzVHJhbnNwYXJl
bnRCb3VuZHMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdleF9oYXNUcmFuc3BhcmVudEJv
dW5kcykKI2RlZmluZSB1cmVnZXhfaGl0RW5kIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVn
ZXhfaGl0RW5kKQojZGVmaW5lIHVyZWdleF9sb29raW5nQXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVyZWdleF9sb29raW5nQXQpCiNkZWZpbmUgdXJlZ2V4X2xvb2tpbmdBdDY0IFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1cmVnZXhfbG9va2luZ0F0NjQpCiNkZWZpbmUgdXJlZ2V4X21hdGNo
ZXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdleF9tYXRjaGVzKQojZGVmaW5lIHVyZWdl
eF9tYXRjaGVzNjQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdleF9tYXRjaGVzNjQpCiNk
ZWZpbmUgdXJlZ2V4X29wZW4gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdleF9vcGVuKQoj
ZGVmaW5lIHVyZWdleF9vcGVuQyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlZ2V4X29wZW5D
KQojZGVmaW5lIHVyZWdleF9vcGVuVVRleHQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdl
eF9vcGVuVVRleHQpCiNkZWZpbmUgdXJlZ2V4X3BhdHRlcm4gVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVyZWdleF9wYXR0ZXJuKQojZGVmaW5lIHVyZWdleF9wYXR0ZXJuVVRleHQgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVyZWdleF9wYXR0ZXJuVVRleHQpCiNkZWZpbmUgdXJlZ2V4X3JlZnJl
c2hVVGV4dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlZ2V4X3JlZnJlc2hVVGV4dCkKI2Rl
ZmluZSB1cmVnZXhfcmVnaW9uRW5kIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVnZXhfcmVn
aW9uRW5kKQojZGVmaW5lIHVyZWdleF9yZWdpb25FbmQ2NCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodXJlZ2V4X3JlZ2lvbkVuZDY0KQojZGVmaW5lIHVyZWdleF9yZWdpb25TdGFydCBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodXJlZ2V4X3JlZ2lvblN0YXJ0KQojZGVmaW5lIHVyZWdleF9yZWdp
b25TdGFydDY0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVnZXhfcmVnaW9uU3RhcnQ2NCkK
I2RlZmluZSB1cmVnZXhfcmVwbGFjZUFsbCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlZ2V4
X3JlcGxhY2VBbGwpCiNkZWZpbmUgdXJlZ2V4X3JlcGxhY2VBbGxVVGV4dCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodXJlZ2V4X3JlcGxhY2VBbGxVVGV4dCkKI2RlZmluZSB1cmVnZXhfcmVwbGFj
ZUZpcnN0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVnZXhfcmVwbGFjZUZpcnN0KQojZGVm
aW5lIHVyZWdleF9yZXBsYWNlRmlyc3RVVGV4dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJl
Z2V4X3JlcGxhY2VGaXJzdFVUZXh0KQojZGVmaW5lIHVyZWdleF9yZXF1aXJlRW5kIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1cmVnZXhfcmVxdWlyZUVuZCkKI2RlZmluZSB1cmVnZXhfcmVzZXQg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdleF9yZXNldCkKI2RlZmluZSB1cmVnZXhfcmVz
ZXQ2NCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlZ2V4X3Jlc2V0NjQpCiNkZWZpbmUgdXJl
Z2V4X3NldEZpbmRQcm9ncmVzc0NhbGxiYWNrIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVn
ZXhfc2V0RmluZFByb2dyZXNzQ2FsbGJhY2spCiNkZWZpbmUgdXJlZ2V4X3NldE1hdGNoQ2FsbGJh
Y2sgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdleF9zZXRNYXRjaENhbGxiYWNrKQojZGVm
aW5lIHVyZWdleF9zZXRSZWdpb24gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdleF9zZXRS
ZWdpb24pCiNkZWZpbmUgdXJlZ2V4X3NldFJlZ2lvbjY0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1cmVnZXhfc2V0UmVnaW9uNjQpCiNkZWZpbmUgdXJlZ2V4X3NldFJlZ2lvbkFuZFN0YXJ0IFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVnZXhfc2V0UmVnaW9uQW5kU3RhcnQpCiNkZWZpbmUg
dXJlZ2V4X3NldFN0YWNrTGltaXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdleF9zZXRT
dGFja0xpbWl0KQojZGVmaW5lIHVyZWdleF9zZXRUZXh0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1cmVnZXhfc2V0VGV4dCkKI2RlZmluZSB1cmVnZXhfc2V0VGltZUxpbWl0IFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1cmVnZXhfc2V0VGltZUxpbWl0KQojZGVmaW5lIHVyZWdleF9zZXRVVGV4
dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlZ2V4X3NldFVUZXh0KQojZGVmaW5lIHVyZWdl
eF9zcGxpdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlZ2V4X3NwbGl0KQojZGVmaW5lIHVy
ZWdleF9zcGxpdFVUZXh0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVnZXhfc3BsaXRVVGV4
dCkKI2RlZmluZSB1cmVnZXhfc3RhcnQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdleF9z
dGFydCkKI2RlZmluZSB1cmVnZXhfc3RhcnQ2NCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJl
Z2V4X3N0YXJ0NjQpCiNkZWZpbmUgdXJlZ2V4X3Vjc3RyX3VuZXNjYXBlX2NoYXJBdCBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodXJlZ2V4X3Vjc3RyX3VuZXNjYXBlX2NoYXJBdCkKI2RlZmluZSB1
cmVnZXhfdXNlQW5jaG9yaW5nQm91bmRzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVnZXhf
dXNlQW5jaG9yaW5nQm91bmRzKQojZGVmaW5lIHVyZWdleF91c2VUcmFuc3BhcmVudEJvdW5kcyBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlZ2V4X3VzZVRyYW5zcGFyZW50Qm91bmRzKQojZGVm
aW5lIHVyZWdleF91dGV4dF91bmVzY2FwZV9jaGFyQXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVyZWdleF91dGV4dF91bmVzY2FwZV9jaGFyQXQpCiNkZWZpbmUgdXJlZ2lvbl9hcmVFcXVhbCBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlZ2lvbl9hcmVFcXVhbCkKI2RlZmluZSB1cmVnaW9u
X2NvbnRhaW5zIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVnaW9uX2NvbnRhaW5zKQojZGVm
aW5lIHVyZWdpb25fZ2V0QXZhaWxhYmxlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVnaW9u
X2dldEF2YWlsYWJsZSkKI2RlZmluZSB1cmVnaW9uX2dldENvbnRhaW5lZFJlZ2lvbnMgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVyZWdpb25fZ2V0Q29udGFpbmVkUmVnaW9ucykKI2RlZmluZSB1
cmVnaW9uX2dldENvbnRhaW5lZFJlZ2lvbnNPZlR5cGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVyZWdpb25fZ2V0Q29udGFpbmVkUmVnaW9uc09mVHlwZSkKI2RlZmluZSB1cmVnaW9uX2dldENv
bnRhaW5pbmdSZWdpb24gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdpb25fZ2V0Q29udGFp
bmluZ1JlZ2lvbikKI2RlZmluZSB1cmVnaW9uX2dldENvbnRhaW5pbmdSZWdpb25PZlR5cGUgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdpb25fZ2V0Q29udGFpbmluZ1JlZ2lvbk9mVHlwZSkK
I2RlZmluZSB1cmVnaW9uX2dldE51bWVyaWNDb2RlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
cmVnaW9uX2dldE51bWVyaWNDb2RlKQojZGVmaW5lIHVyZWdpb25fZ2V0UHJlZmVycmVkVmFsdWVz
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVnaW9uX2dldFByZWZlcnJlZFZhbHVlcykKI2Rl
ZmluZSB1cmVnaW9uX2dldFJlZ2lvbkNvZGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdp
b25fZ2V0UmVnaW9uQ29kZSkKI2RlZmluZSB1cmVnaW9uX2dldFJlZ2lvbkZyb21Db2RlIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVnaW9uX2dldFJlZ2lvbkZyb21Db2RlKQojZGVmaW5lIHVy
ZWdpb25fZ2V0UmVnaW9uRnJvbU51bWVyaWNDb2RlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
cmVnaW9uX2dldFJlZ2lvbkZyb21OdW1lcmljQ29kZSkKI2RlZmluZSB1cmVnaW9uX2dldFR5cGUg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZWdpb25fZ2V0VHlwZSkKI2RlZmluZSB1cmVzX2Ns
b3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVzX2Nsb3NlKQojZGVmaW5lIHVyZXNfY29w
eVJlc2IgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZXNfY29weVJlc2IpCiNkZWZpbmUgdXJl
c19jb3VudEFycmF5SXRlbXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZXNfY291bnRBcnJh
eUl0ZW1zKQojZGVmaW5lIHVyZXNfZmluZFJlc291cmNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1cmVzX2ZpbmRSZXNvdXJjZSkKI2RlZmluZSB1cmVzX2ZpbmRTdWJSZXNvdXJjZSBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodXJlc19maW5kU3ViUmVzb3VyY2UpCiNkZWZpbmUgdXJlc19nZXRC
aW5hcnkgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZXNfZ2V0QmluYXJ5KQojZGVmaW5lIHVy
ZXNfZ2V0QnlJbmRleCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlc19nZXRCeUluZGV4KQoj
ZGVmaW5lIHVyZXNfZ2V0QnlLZXkgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZXNfZ2V0QnlL
ZXkpCiNkZWZpbmUgdXJlc19nZXRCeUtleVdpdGhGYWxsYmFjayBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodXJlc19nZXRCeUtleVdpdGhGYWxsYmFjaykKI2RlZmluZSB1cmVzX2dldEZ1bmN0aW9u
YWxFcXVpdmFsZW50IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVzX2dldEZ1bmN0aW9uYWxF
cXVpdmFsZW50KQojZGVmaW5lIHVyZXNfZ2V0SW50IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
cmVzX2dldEludCkKI2RlZmluZSB1cmVzX2dldEludFZlY3RvciBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodXJlc19nZXRJbnRWZWN0b3IpCiNkZWZpbmUgdXJlc19nZXRLZXkgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVyZXNfZ2V0S2V5KQojZGVmaW5lIHVyZXNfZ2V0S2V5d29yZFZhbHVlcyBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlc19nZXRLZXl3b3JkVmFsdWVzKQojZGVmaW5lIHVy
ZXNfZ2V0TG9jYWxlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVzX2dldExvY2FsZSkKI2Rl
ZmluZSB1cmVzX2dldExvY2FsZUJ5VHlwZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlc19n
ZXRMb2NhbGVCeVR5cGUpCiNkZWZpbmUgdXJlc19nZXRMb2NhbGVJbnRlcm5hbCBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodXJlc19nZXRMb2NhbGVJbnRlcm5hbCkKI2RlZmluZSB1cmVzX2dldE5h
bWUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZXNfZ2V0TmFtZSkKI2RlZmluZSB1cmVzX2dl
dE5leHRSZXNvdXJjZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlc19nZXROZXh0UmVzb3Vy
Y2UpCiNkZWZpbmUgdXJlc19nZXROZXh0U3RyaW5nIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
cmVzX2dldE5leHRTdHJpbmcpCiNkZWZpbmUgdXJlc19nZXRTaXplIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1cmVzX2dldFNpemUpCiNkZWZpbmUgdXJlc19nZXRTdHJpbmcgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVyZXNfZ2V0U3RyaW5nKQojZGVmaW5lIHVyZXNfZ2V0U3RyaW5nQnlJbmRl
eCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlc19nZXRTdHJpbmdCeUluZGV4KQojZGVmaW5l
IHVyZXNfZ2V0U3RyaW5nQnlLZXkgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZXNfZ2V0U3Ry
aW5nQnlLZXkpCiNkZWZpbmUgdXJlc19nZXRTdHJpbmdCeUtleVdpdGhGYWxsYmFjayBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodXJlc19nZXRTdHJpbmdCeUtleVdpdGhGYWxsYmFjaykKI2RlZmlu
ZSB1cmVzX2dldFR5cGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZXNfZ2V0VHlwZSkKI2Rl
ZmluZSB1cmVzX2dldFVJbnQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZXNfZ2V0VUludCkK
I2RlZmluZSB1cmVzX2dldFVURjhTdHJpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZXNf
Z2V0VVRGOFN0cmluZykKI2RlZmluZSB1cmVzX2dldFVURjhTdHJpbmdCeUluZGV4IFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1cmVzX2dldFVURjhTdHJpbmdCeUluZGV4KQojZGVmaW5lIHVyZXNf
Z2V0VVRGOFN0cmluZ0J5S2V5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVzX2dldFVURjhT
dHJpbmdCeUtleSkKI2RlZmluZSB1cmVzX2dldFZlcnNpb24gVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVyZXNfZ2V0VmVyc2lvbikKI2RlZmluZSB1cmVzX2dldFZlcnNpb25CeUtleSBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodXJlc19nZXRWZXJzaW9uQnlLZXkpCiNkZWZpbmUgdXJlc19nZXRW
ZXJzaW9uTnVtYmVyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVzX2dldFZlcnNpb25OdW1i
ZXIpCiNkZWZpbmUgdXJlc19nZXRWZXJzaW9uTnVtYmVySW50ZXJuYWwgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVyZXNfZ2V0VmVyc2lvbk51bWJlckludGVybmFsKQojZGVmaW5lIHVyZXNfaGFz
TmV4dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlc19oYXNOZXh0KQojZGVmaW5lIHVyZXNf
aW5pdFN0YWNrT2JqZWN0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVzX2luaXRTdGFja09i
amVjdCkKI2RlZmluZSB1cmVzX29wZW4gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZXNfb3Bl
bikKI2RlZmluZSB1cmVzX29wZW5BdmFpbGFibGVMb2NhbGVzIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1cmVzX29wZW5BdmFpbGFibGVMb2NhbGVzKQojZGVmaW5lIHVyZXNfb3BlbkRpcmVjdCBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlc19vcGVuRGlyZWN0KQojZGVmaW5lIHVyZXNfb3Bl
bkZpbGxJbiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXJlc19vcGVuRmlsbEluKQojZGVmaW5l
IHVyZXNfb3BlblUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVyZXNfb3BlblUpCiNkZWZpbmUg
dXJlc19yZXNldEl0ZXJhdG9yIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVzX3Jlc2V0SXRl
cmF0b3IpCiNkZWZpbmUgdXJlc19zd2FwIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1cmVzX3N3
YXApCiNkZWZpbmUgdXNjcmlwdF9icmVha3NCZXR3ZWVuTGV0dGVycyBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodXNjcmlwdF9icmVha3NCZXR3ZWVuTGV0dGVycykKI2RlZmluZSB1c2NyaXB0X2Ns
b3NlUnVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2NyaXB0X2Nsb3NlUnVuKQojZGVmaW5l
IHVzY3JpcHRfZ2V0Q29kZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNjcmlwdF9nZXRDb2Rl
KQojZGVmaW5lIHVzY3JpcHRfZ2V0TmFtZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNjcmlw
dF9nZXROYW1lKQojZGVmaW5lIHVzY3JpcHRfZ2V0U2FtcGxlU3RyaW5nIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1c2NyaXB0X2dldFNhbXBsZVN0cmluZykKI2RlZmluZSB1c2NyaXB0X2dldFNh
bXBsZVVuaWNvZGVTdHJpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzY3JpcHRfZ2V0U2Ft
cGxlVW5pY29kZVN0cmluZykKI2RlZmluZSB1c2NyaXB0X2dldFNjcmlwdCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodXNjcmlwdF9nZXRTY3JpcHQpCiNkZWZpbmUgdXNjcmlwdF9nZXRTY3JpcHRF
eHRlbnNpb25zIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2NyaXB0X2dldFNjcmlwdEV4dGVu
c2lvbnMpCiNkZWZpbmUgdXNjcmlwdF9nZXRTaG9ydE5hbWUgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHVzY3JpcHRfZ2V0U2hvcnROYW1lKQojZGVmaW5lIHVzY3JpcHRfZ2V0VXNhZ2UgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVzY3JpcHRfZ2V0VXNhZ2UpCiNkZWZpbmUgdXNjcmlwdF9oYXNT
Y3JpcHQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzY3JpcHRfaGFzU2NyaXB0KQojZGVmaW5l
IHVzY3JpcHRfaXNDYXNlZCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNjcmlwdF9pc0Nhc2Vk
KQojZGVmaW5lIHVzY3JpcHRfaXNSaWdodFRvTGVmdCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dXNjcmlwdF9pc1JpZ2h0VG9MZWZ0KQojZGVmaW5lIHVzY3JpcHRfbmV4dFJ1biBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodXNjcmlwdF9uZXh0UnVuKQojZGVmaW5lIHVzY3JpcHRfb3BlblJ1biBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNjcmlwdF9vcGVuUnVuKQojZGVmaW5lIHVzY3JpcHRf
cmVzZXRSdW4gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzY3JpcHRfcmVzZXRSdW4pCiNkZWZp
bmUgdXNjcmlwdF9zZXRSdW5UZXh0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2NyaXB0X3Nl
dFJ1blRleHQpCiNkZWZpbmUgdXNlYXJjaF9jbG9zZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dXNlYXJjaF9jbG9zZSkKI2RlZmluZSB1c2VhcmNoX2ZpcnN0IFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1c2VhcmNoX2ZpcnN0KQojZGVmaW5lIHVzZWFyY2hfZm9sbG93aW5nIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1c2VhcmNoX2ZvbGxvd2luZykKI2RlZmluZSB1c2VhcmNoX2dldEF0dHJp
YnV0ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNlYXJjaF9nZXRBdHRyaWJ1dGUpCiNkZWZp
bmUgdXNlYXJjaF9nZXRCcmVha0l0ZXJhdG9yIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2Vh
cmNoX2dldEJyZWFrSXRlcmF0b3IpCiNkZWZpbmUgdXNlYXJjaF9nZXRDb2xsYXRvciBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodXNlYXJjaF9nZXRDb2xsYXRvcikKI2RlZmluZSB1c2VhcmNoX2dl
dE1hdGNoZWRMZW5ndGggVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZWFyY2hfZ2V0TWF0Y2hl
ZExlbmd0aCkKI2RlZmluZSB1c2VhcmNoX2dldE1hdGNoZWRTdGFydCBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodXNlYXJjaF9nZXRNYXRjaGVkU3RhcnQpCiNkZWZpbmUgdXNlYXJjaF9nZXRNYXRj
aGVkVGV4dCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNlYXJjaF9nZXRNYXRjaGVkVGV4dCkK
I2RlZmluZSB1c2VhcmNoX2dldE9mZnNldCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNlYXJj
aF9nZXRPZmZzZXQpCiNkZWZpbmUgdXNlYXJjaF9nZXRQYXR0ZXJuIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1c2VhcmNoX2dldFBhdHRlcm4pCiNkZWZpbmUgdXNlYXJjaF9nZXRUZXh0IFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1c2VhcmNoX2dldFRleHQpCiNkZWZpbmUgdXNlYXJjaF9oYW5k
bGVOZXh0Q2Fub25pY2FsIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2VhcmNoX2hhbmRsZU5l
eHRDYW5vbmljYWwpCiNkZWZpbmUgdXNlYXJjaF9oYW5kbGVOZXh0RXhhY3QgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVzZWFyY2hfaGFuZGxlTmV4dEV4YWN0KQojZGVmaW5lIHVzZWFyY2hfaGFu
ZGxlUHJldmlvdXNDYW5vbmljYWwgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZWFyY2hfaGFu
ZGxlUHJldmlvdXNDYW5vbmljYWwpCiNkZWZpbmUgdXNlYXJjaF9oYW5kbGVQcmV2aW91c0V4YWN0
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2VhcmNoX2hhbmRsZVByZXZpb3VzRXhhY3QpCiNk
ZWZpbmUgdXNlYXJjaF9sYXN0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2VhcmNoX2xhc3Qp
CiNkZWZpbmUgdXNlYXJjaF9uZXh0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2VhcmNoX25l
eHQpCiNkZWZpbmUgdXNlYXJjaF9vcGVuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2VhcmNo
X29wZW4pCiNkZWZpbmUgdXNlYXJjaF9vcGVuRnJvbUNvbGxhdG9yIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1c2VhcmNoX29wZW5Gcm9tQ29sbGF0b3IpCiNkZWZpbmUgdXNlYXJjaF9wcmVjZWRp
bmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZWFyY2hfcHJlY2VkaW5nKQojZGVmaW5lIHVz
ZWFyY2hfcHJldmlvdXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZWFyY2hfcHJldmlvdXMp
CiNkZWZpbmUgdXNlYXJjaF9yZXNldCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNlYXJjaF9y
ZXNldCkKI2RlZmluZSB1c2VhcmNoX3NlYXJjaCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNl
YXJjaF9zZWFyY2gpCiNkZWZpbmUgdXNlYXJjaF9zZWFyY2hCYWNrd2FyZHMgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVzZWFyY2hfc2VhcmNoQmFja3dhcmRzKQojZGVmaW5lIHVzZWFyY2hfc2V0
QXR0cmlidXRlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2VhcmNoX3NldEF0dHJpYnV0ZSkK
I2RlZmluZSB1c2VhcmNoX3NldEJyZWFrSXRlcmF0b3IgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVzZWFyY2hfc2V0QnJlYWtJdGVyYXRvcikKI2RlZmluZSB1c2VhcmNoX3NldENvbGxhdG9yIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2VhcmNoX3NldENvbGxhdG9yKQojZGVmaW5lIHVzZWFy
Y2hfc2V0T2Zmc2V0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2VhcmNoX3NldE9mZnNldCkK
I2RlZmluZSB1c2VhcmNoX3NldFBhdHRlcm4gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZWFy
Y2hfc2V0UGF0dGVybikKI2RlZmluZSB1c2VhcmNoX3NldFRleHQgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVzZWFyY2hfc2V0VGV4dCkKI2RlZmluZSB1c2V0X2FkZCBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodXNldF9hZGQpCiNkZWZpbmUgdXNldF9hZGRBbGwgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVzZXRfYWRkQWxsKQojZGVmaW5lIHVzZXRfYWRkQWxsQ29kZVBvaW50cyBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodXNldF9hZGRBbGxDb2RlUG9pbnRzKQojZGVmaW5lIHVzZXRfYWRk
UmFuZ2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZXRfYWRkUmFuZ2UpCiNkZWZpbmUgdXNl
dF9hZGRTdHJpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZXRfYWRkU3RyaW5nKQojZGVm
aW5lIHVzZXRfYXBwbHlJbnRQcm9wZXJ0eVZhbHVlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
c2V0X2FwcGx5SW50UHJvcGVydHlWYWx1ZSkKI2RlZmluZSB1c2V0X2FwcGx5UGF0dGVybiBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodXNldF9hcHBseVBhdHRlcm4pCiNkZWZpbmUgdXNldF9hcHBs
eVByb3BlcnR5QWxpYXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZXRfYXBwbHlQcm9wZXJ0
eUFsaWFzKQojZGVmaW5lIHVzZXRfY2hhckF0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2V0
X2NoYXJBdCkKI2RlZmluZSB1c2V0X2NsZWFyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2V0
X2NsZWFyKQojZGVmaW5lIHVzZXRfY2xvbmUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZXRf
Y2xvbmUpCiNkZWZpbmUgdXNldF9jbG9uZUFzVGhhd2VkIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1c2V0X2Nsb25lQXNUaGF3ZWQpCiNkZWZpbmUgdXNldF9jbG9zZSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodXNldF9jbG9zZSkKI2RlZmluZSB1c2V0X2Nsb3NlT3ZlciBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodXNldF9jbG9zZU92ZXIpCiNkZWZpbmUgdXNldF9jb21wYWN0IFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1c2V0X2NvbXBhY3QpCiNkZWZpbmUgdXNldF9jb21wbGVtZW50IFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2V0X2NvbXBsZW1lbnQpCiNkZWZpbmUgdXNldF9jb21w
bGVtZW50QWxsIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2V0X2NvbXBsZW1lbnRBbGwpCiNk
ZWZpbmUgdXNldF9jb250YWlucyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNldF9jb250YWlu
cykKI2RlZmluZSB1c2V0X2NvbnRhaW5zQWxsIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2V0
X2NvbnRhaW5zQWxsKQojZGVmaW5lIHVzZXRfY29udGFpbnNBbGxDb2RlUG9pbnRzIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1c2V0X2NvbnRhaW5zQWxsQ29kZVBvaW50cykKI2RlZmluZSB1c2V0
X2NvbnRhaW5zTm9uZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNldF9jb250YWluc05vbmUp
CiNkZWZpbmUgdXNldF9jb250YWluc1JhbmdlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2V0
X2NvbnRhaW5zUmFuZ2UpCiNkZWZpbmUgdXNldF9jb250YWluc1NvbWUgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVzZXRfY29udGFpbnNTb21lKQojZGVmaW5lIHVzZXRfY29udGFpbnNTdHJpbmcg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZXRfY29udGFpbnNTdHJpbmcpCiNkZWZpbmUgdXNl
dF9lcXVhbHMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZXRfZXF1YWxzKQojZGVmaW5lIHVz
ZXRfZnJlZXplIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2V0X2ZyZWV6ZSkKI2RlZmluZSB1
c2V0X2dldEl0ZW0gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZXRfZ2V0SXRlbSkKI2RlZmlu
ZSB1c2V0X2dldEl0ZW1Db3VudCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNldF9nZXRJdGVt
Q291bnQpCiNkZWZpbmUgdXNldF9nZXRTZXJpYWxpemVkUmFuZ2UgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHVzZXRfZ2V0U2VyaWFsaXplZFJhbmdlKQojZGVmaW5lIHVzZXRfZ2V0U2VyaWFsaXpl
ZFJhbmdlQ291bnQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZXRfZ2V0U2VyaWFsaXplZFJh
bmdlQ291bnQpCiNkZWZpbmUgdXNldF9nZXRTZXJpYWxpemVkU2V0IFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh1c2V0X2dldFNlcmlhbGl6ZWRTZXQpCiNkZWZpbmUgdXNldF9pbmRleE9mIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1c2V0X2luZGV4T2YpCiNkZWZpbmUgdXNldF9pc0VtcHR5IFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2V0X2lzRW1wdHkpCiNkZWZpbmUgdXNldF9pc0Zyb3pl
biBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNldF9pc0Zyb3plbikKI2RlZmluZSB1c2V0X29w
ZW4gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZXRfb3BlbikKI2RlZmluZSB1c2V0X29wZW5F
bXB0eSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNldF9vcGVuRW1wdHkpCiNkZWZpbmUgdXNl
dF9vcGVuUGF0dGVybiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNldF9vcGVuUGF0dGVybikK
I2RlZmluZSB1c2V0X29wZW5QYXR0ZXJuT3B0aW9ucyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dXNldF9vcGVuUGF0dGVybk9wdGlvbnMpCiNkZWZpbmUgdXNldF9yZW1vdmUgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHVzZXRfcmVtb3ZlKQojZGVmaW5lIHVzZXRfcmVtb3ZlQWxsIFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1c2V0X3JlbW92ZUFsbCkKI2RlZmluZSB1c2V0X3JlbW92ZUFsbFN0
cmluZ3MgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZXRfcmVtb3ZlQWxsU3RyaW5ncykKI2Rl
ZmluZSB1c2V0X3JlbW92ZVJhbmdlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2V0X3JlbW92
ZVJhbmdlKQojZGVmaW5lIHVzZXRfcmVtb3ZlU3RyaW5nIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1c2V0X3JlbW92ZVN0cmluZykKI2RlZmluZSB1c2V0X3Jlc2VtYmxlc1BhdHRlcm4gVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHVzZXRfcmVzZW1ibGVzUGF0dGVybikKI2RlZmluZSB1c2V0X3Jl
dGFpbiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNldF9yZXRhaW4pCiNkZWZpbmUgdXNldF9y
ZXRhaW5BbGwgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZXRfcmV0YWluQWxsKQojZGVmaW5l
IHVzZXRfc2VyaWFsaXplIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2V0X3NlcmlhbGl6ZSkK
I2RlZmluZSB1c2V0X3NlcmlhbGl6ZWRDb250YWlucyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dXNldF9zZXJpYWxpemVkQ29udGFpbnMpCiNkZWZpbmUgdXNldF9zZXQgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHVzZXRfc2V0KQojZGVmaW5lIHVzZXRfc2V0U2VyaWFsaXplZFRvT25lIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1c2V0X3NldFNlcmlhbGl6ZWRUb09uZSkKI2RlZmluZSB1c2V0
X3NpemUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZXRfc2l6ZSkKI2RlZmluZSB1c2V0X3Nw
YW4gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzZXRfc3BhbikKI2RlZmluZSB1c2V0X3NwYW5C
YWNrIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2V0X3NwYW5CYWNrKQojZGVmaW5lIHVzZXRf
c3BhbkJhY2tVVEY4IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2V0X3NwYW5CYWNrVVRGOCkK
I2RlZmluZSB1c2V0X3NwYW5VVEY4IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2V0X3NwYW5V
VEY4KQojZGVmaW5lIHVzZXRfdG9QYXR0ZXJuIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c2V0
X3RvUGF0dGVybikKI2RlZmluZSB1c3Bvb2ZfYXJlQ29uZnVzYWJsZSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodXNwb29mX2FyZUNvbmZ1c2FibGUpCiNkZWZpbmUgdXNwb29mX2FyZUNvbmZ1c2Fi
bGVVVEY4IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfYXJlQ29uZnVzYWJsZVVURjgp
CiNkZWZpbmUgdXNwb29mX2FyZUNvbmZ1c2FibGVVbmljb2RlU3RyaW5nIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1c3Bvb2ZfYXJlQ29uZnVzYWJsZVVuaWNvZGVTdHJpbmcpCiNkZWZpbmUgdXNw
b29mX2NoZWNrIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfY2hlY2spCiNkZWZpbmUg
dXNwb29mX2NoZWNrVVRGOCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNwb29mX2NoZWNrVVRG
OCkKI2RlZmluZSB1c3Bvb2ZfY2hlY2tVbmljb2RlU3RyaW5nIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1c3Bvb2ZfY2hlY2tVbmljb2RlU3RyaW5nKQojZGVmaW5lIHVzcG9vZl9jbG9uZSBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodXNwb29mX2Nsb25lKQojZGVmaW5lIHVzcG9vZl9jbG9zZSBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNwb29mX2Nsb3NlKQojZGVmaW5lIHVzcG9vZl9nZXRB
bGxvd2VkQ2hhcnMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzcG9vZl9nZXRBbGxvd2VkQ2hh
cnMpCiNkZWZpbmUgdXNwb29mX2dldEFsbG93ZWRMb2NhbGVzIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1c3Bvb2ZfZ2V0QWxsb3dlZExvY2FsZXMpCiNkZWZpbmUgdXNwb29mX2dldEFsbG93ZWRV
bmljb2RlU2V0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfZ2V0QWxsb3dlZFVuaWNv
ZGVTZXQpCiNkZWZpbmUgdXNwb29mX2dldENoZWNrcyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dXNwb29mX2dldENoZWNrcykKI2RlZmluZSB1c3Bvb2ZfZ2V0SW5jbHVzaW9uU2V0IFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfZ2V0SW5jbHVzaW9uU2V0KQojZGVmaW5lIHVzcG9vZl9n
ZXRJbmNsdXNpb25Vbmljb2RlU2V0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfZ2V0
SW5jbHVzaW9uVW5pY29kZVNldCkKI2RlZmluZSB1c3Bvb2ZfZ2V0UmVjb21tZW5kZWRTZXQgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzcG9vZl9nZXRSZWNvbW1lbmRlZFNldCkKI2RlZmluZSB1
c3Bvb2ZfZ2V0UmVjb21tZW5kZWRVbmljb2RlU2V0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
c3Bvb2ZfZ2V0UmVjb21tZW5kZWRVbmljb2RlU2V0KQojZGVmaW5lIHVzcG9vZl9nZXRSZXN0cmlj
dGlvbkxldmVsIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfZ2V0UmVzdHJpY3Rpb25M
ZXZlbCkKI2RlZmluZSB1c3Bvb2ZfZ2V0U2tlbGV0b24gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHVzcG9vZl9nZXRTa2VsZXRvbikKI2RlZmluZSB1c3Bvb2ZfZ2V0U2tlbGV0b25VVEY4IFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2ZfZ2V0U2tlbGV0b25VVEY4KQojZGVmaW5lIHVzcG9v
Zl9nZXRTa2VsZXRvblVuaWNvZGVTdHJpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzcG9v
Zl9nZXRTa2VsZXRvblVuaWNvZGVTdHJpbmcpCiNkZWZpbmUgdXNwb29mX29wZW4gVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVzcG9vZl9vcGVuKQojZGVmaW5lIHVzcG9vZl9vcGVuRnJvbVNlcmlh
bGl6ZWQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzcG9vZl9vcGVuRnJvbVNlcmlhbGl6ZWQp
CiNkZWZpbmUgdXNwb29mX29wZW5Gcm9tU291cmNlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
c3Bvb2Zfb3BlbkZyb21Tb3VyY2UpCiNkZWZpbmUgdXNwb29mX3NlcmlhbGl6ZSBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodXNwb29mX3NlcmlhbGl6ZSkKI2RlZmluZSB1c3Bvb2Zfc2V0QWxsb3dl
ZENoYXJzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2Zfc2V0QWxsb3dlZENoYXJzKQoj
ZGVmaW5lIHVzcG9vZl9zZXRBbGxvd2VkTG9jYWxlcyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dXNwb29mX3NldEFsbG93ZWRMb2NhbGVzKQojZGVmaW5lIHVzcG9vZl9zZXRBbGxvd2VkVW5pY29k
ZVNldCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNwb29mX3NldEFsbG93ZWRVbmljb2RlU2V0
KQojZGVmaW5lIHVzcG9vZl9zZXRDaGVja3MgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzcG9v
Zl9zZXRDaGVja3MpCiNkZWZpbmUgdXNwb29mX3NldFJlc3RyaWN0aW9uTGV2ZWwgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHVzcG9vZl9zZXRSZXN0cmljdGlvbkxldmVsKQojZGVmaW5lIHVzcG9v
Zl9zd2FwIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3Bvb2Zfc3dhcCkKI2RlZmluZSB1c3By
ZXBfY2xvc2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzcHJlcF9jbG9zZSkKI2RlZmluZSB1
c3ByZXBfb3BlbiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXNwcmVwX29wZW4pCiNkZWZpbmUg
dXNwcmVwX29wZW5CeVR5cGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHVzcHJlcF9vcGVuQnlU
eXBlKQojZGVmaW5lIHVzcHJlcF9wcmVwYXJlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3By
ZXBfcHJlcGFyZSkKI2RlZmluZSB1c3ByZXBfc3dhcCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dXNwcmVwX3N3YXApCiNkZWZpbmUgdXN0cl9oYXNoQ2hhcnNOIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh1c3RyX2hhc2hDaGFyc04pCiNkZWZpbmUgdXN0cl9oYXNoSUNoYXJzTiBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodXN0cl9oYXNoSUNoYXJzTikKI2RlZmluZSB1c3RyX2hhc2hVQ2hhcnNO
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3RyX2hhc2hVQ2hhcnNOKQojZGVmaW5lIHVzdHJj
YXNlX2ludGVybmFsRm9sZCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXN0cmNhc2VfaW50ZXJu
YWxGb2xkKQojZGVmaW5lIHVzdHJjYXNlX2ludGVybmFsVG9Mb3dlciBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodXN0cmNhc2VfaW50ZXJuYWxUb0xvd2VyKQojZGVmaW5lIHVzdHJjYXNlX2ludGVy
bmFsVG9UaXRsZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXN0cmNhc2VfaW50ZXJuYWxUb1Rp
dGxlKQojZGVmaW5lIHVzdHJjYXNlX2ludGVybmFsVG9VcHBlciBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodXN0cmNhc2VfaW50ZXJuYWxUb1VwcGVyKQojZGVmaW5lIHVzdHJjYXNlX21hcCBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodXN0cmNhc2VfbWFwKQojZGVmaW5lIHVzdHJjYXNlX3NldFRl
bXBDYXNlTWFwTG9jYWxlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1c3RyY2FzZV9zZXRUZW1w
Q2FzZU1hcExvY2FsZSkKI2RlZmluZSB1dGV4dF9jaGFyMzJBdCBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodXRleHRfY2hhcjMyQXQpCiNkZWZpbmUgdXRleHRfY2xvbmUgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHV0ZXh0X2Nsb25lKQojZGVmaW5lIHV0ZXh0X2Nsb3NlIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1dGV4dF9jbG9zZSkKI2RlZmluZSB1dGV4dF9jb3B5IFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1dGV4dF9jb3B5KQojZGVmaW5lIHV0ZXh0X2N1cnJlbnQzMiBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodXRleHRfY3VycmVudDMyKQojZGVmaW5lIHV0ZXh0X2VxdWFscyBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodXRleHRfZXF1YWxzKQojZGVmaW5lIHV0ZXh0X2V4dHJhY3Qg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0ZXh0X2V4dHJhY3QpCiNkZWZpbmUgdXRleHRfZnJl
ZXplIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dGV4dF9mcmVlemUpCiNkZWZpbmUgdXRleHRf
Z2V0TmF0aXZlSW5kZXggVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0ZXh0X2dldE5hdGl2ZUlu
ZGV4KQojZGVmaW5lIHV0ZXh0X2dldFByZXZpb3VzTmF0aXZlSW5kZXggVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHV0ZXh0X2dldFByZXZpb3VzTmF0aXZlSW5kZXgpCiNkZWZpbmUgdXRleHRfaGFz
TWV0YURhdGEgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0ZXh0X2hhc01ldGFEYXRhKQojZGVm
aW5lIHV0ZXh0X2lzTGVuZ3RoRXhwZW5zaXZlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dGV4
dF9pc0xlbmd0aEV4cGVuc2l2ZSkKI2RlZmluZSB1dGV4dF9pc1dyaXRhYmxlIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1dGV4dF9pc1dyaXRhYmxlKQojZGVmaW5lIHV0ZXh0X21vdmVJbmRleDMy
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dGV4dF9tb3ZlSW5kZXgzMikKI2RlZmluZSB1dGV4
dF9uYXRpdmVMZW5ndGggVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0ZXh0X25hdGl2ZUxlbmd0
aCkKI2RlZmluZSB1dGV4dF9uZXh0MzIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0ZXh0X25l
eHQzMikKI2RlZmluZSB1dGV4dF9uZXh0MzJGcm9tIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1
dGV4dF9uZXh0MzJGcm9tKQojZGVmaW5lIHV0ZXh0X29wZW5DaGFyYWN0ZXJJdGVyYXRvciBVX0lD
VV9FTlRSWV9QT0lOVF9SRU5BTUUodXRleHRfb3BlbkNoYXJhY3Rlckl0ZXJhdG9yKQojZGVmaW5l
IHV0ZXh0X29wZW5Db25zdFVuaWNvZGVTdHJpbmcgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0
ZXh0X29wZW5Db25zdFVuaWNvZGVTdHJpbmcpCiNkZWZpbmUgdXRleHRfb3BlblJlcGxhY2VhYmxl
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dGV4dF9vcGVuUmVwbGFjZWFibGUpCiNkZWZpbmUg
dXRleHRfb3BlblVDaGFycyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRleHRfb3BlblVDaGFy
cykKI2RlZmluZSB1dGV4dF9vcGVuVVRGOCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRleHRf
b3BlblVURjgpCiNkZWZpbmUgdXRleHRfb3BlblVuaWNvZGVTdHJpbmcgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHV0ZXh0X29wZW5Vbmljb2RlU3RyaW5nKQojZGVmaW5lIHV0ZXh0X3ByZXZpb3Vz
MzIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0ZXh0X3ByZXZpb3VzMzIpCiNkZWZpbmUgdXRl
eHRfcHJldmlvdXMzMkZyb20gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0ZXh0X3ByZXZpb3Vz
MzJGcm9tKQojZGVmaW5lIHV0ZXh0X3JlcGxhY2UgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0
ZXh0X3JlcGxhY2UpCiNkZWZpbmUgdXRleHRfc2V0TmF0aXZlSW5kZXggVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHV0ZXh0X3NldE5hdGl2ZUluZGV4KQojZGVmaW5lIHV0ZXh0X3NldHVwIFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh1dGV4dF9zZXR1cCkKI2RlZmluZSB1dGY4X2FwcGVuZENoYXJT
YWZlQm9keSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRmOF9hcHBlbmRDaGFyU2FmZUJvZHkp
CiNkZWZpbmUgdXRmOF9iYWNrMVNhZmVCb2R5IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dGY4
X2JhY2sxU2FmZUJvZHkpCiNkZWZpbmUgdXRmOF9jb3VudFRyYWlsQnl0ZXMgVV9JQ1VfRU5UUllf
UE9JTlRfUkVOQU1FKHV0ZjhfY291bnRUcmFpbEJ5dGVzKQojZGVmaW5lIHV0ZjhfbmV4dENoYXJT
YWZlQm9keSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRmOF9uZXh0Q2hhclNhZmVCb2R5KQoj
ZGVmaW5lIHV0ZjhfcHJldkNoYXJTYWZlQm9keSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRm
OF9wcmV2Q2hhclNhZmVCb2R5KQojZGVmaW5lIHV0bXNjYWxlX2Zyb21JbnQ2NCBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodXRtc2NhbGVfZnJvbUludDY0KQojZGVmaW5lIHV0bXNjYWxlX2dldFRp
bWVTY2FsZVZhbHVlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dG1zY2FsZV9nZXRUaW1lU2Nh
bGVWYWx1ZSkKI2RlZmluZSB1dG1zY2FsZV90b0ludDY0IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh1dG1zY2FsZV90b0ludDY0KQojZGVmaW5lIHV0cmFjZV9jbGVhbnVwIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1dHJhY2VfY2xlYW51cCkKI2RlZmluZSB1dHJhY2VfZGF0YSBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodXRyYWNlX2RhdGEpCiNkZWZpbmUgdXRyYWNlX2VudHJ5IFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1dHJhY2VfZW50cnkpCiNkZWZpbmUgdXRyYWNlX2V4aXQgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHV0cmFjZV9leGl0KQojZGVmaW5lIHV0cmFjZV9mb3JtYXQgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmFjZV9mb3JtYXQpCiNkZWZpbmUgdXRyYWNlX2Z1bmN0
aW9uTmFtZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRyYWNlX2Z1bmN0aW9uTmFtZSkKI2Rl
ZmluZSB1dHJhY2VfZ2V0RnVuY3Rpb25zIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dHJhY2Vf
Z2V0RnVuY3Rpb25zKQojZGVmaW5lIHV0cmFjZV9nZXRMZXZlbCBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodXRyYWNlX2dldExldmVsKQojZGVmaW5lIHV0cmFjZV9sZXZlbCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodXRyYWNlX2xldmVsKQojZGVmaW5lIHV0cmFjZV9zZXRGdW5jdGlvbnMgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmFjZV9zZXRGdW5jdGlvbnMpCiNkZWZpbmUgdXRyYWNl
X3NldExldmVsIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dHJhY2Vfc2V0TGV2ZWwpCiNkZWZp
bmUgdXRyYWNlX3Zmb3JtYXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmFjZV92Zm9ybWF0
KQojZGVmaW5lIHV0cmFuc19jbG9uZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRyYW5zX2Ns
b25lKQojZGVmaW5lIHV0cmFuc19jbG9zZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRyYW5z
X2Nsb3NlKQojZGVmaW5lIHV0cmFuc19jb3VudEF2YWlsYWJsZUlEcyBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodXRyYW5zX2NvdW50QXZhaWxhYmxlSURzKQojZGVmaW5lIHV0cmFuc19nZXRBdmFp
bGFibGVJRCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRyYW5zX2dldEF2YWlsYWJsZUlEKQoj
ZGVmaW5lIHV0cmFuc19nZXRJRCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRyYW5zX2dldElE
KQojZGVmaW5lIHV0cmFuc19nZXRVbmljb2RlSUQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0
cmFuc19nZXRVbmljb2RlSUQpCiNkZWZpbmUgdXRyYW5zX29wZW4gVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHV0cmFuc19vcGVuKQojZGVmaW5lIHV0cmFuc19vcGVuSURzIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1dHJhbnNfb3BlbklEcykKI2RlZmluZSB1dHJhbnNfb3BlbkludmVyc2UgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmFuc19vcGVuSW52ZXJzZSkKI2RlZmluZSB1dHJhbnNf
b3BlblUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmFuc19vcGVuVSkKI2RlZmluZSB1dHJh
bnNfcmVnaXN0ZXIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmFuc19yZWdpc3RlcikKI2Rl
ZmluZSB1dHJhbnNfcmVwX2Nhc2VDb250ZXh0SXRlcmF0b3IgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHV0cmFuc19yZXBfY2FzZUNvbnRleHRJdGVyYXRvcikKI2RlZmluZSB1dHJhbnNfc2V0Rmls
dGVyIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dHJhbnNfc2V0RmlsdGVyKQojZGVmaW5lIHV0
cmFuc19zdHJpcFJ1bGVzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dHJhbnNfc3RyaXBSdWxl
cykKI2RlZmluZSB1dHJhbnNfdHJhbnMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmFuc190
cmFucykKI2RlZmluZSB1dHJhbnNfdHJhbnNJbmNyZW1lbnRhbCBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodXRyYW5zX3RyYW5zSW5jcmVtZW50YWwpCiNkZWZpbmUgdXRyYW5zX3RyYW5zSW5jcmVt
ZW50YWxVQ2hhcnMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmFuc190cmFuc0luY3JlbWVu
dGFsVUNoYXJzKQojZGVmaW5lIHV0cmFuc190cmFuc1VDaGFycyBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodXRyYW5zX3RyYW5zVUNoYXJzKQojZGVmaW5lIHV0cmFuc190cmFuc2xpdGVyYXRvcl9j
bGVhbnVwIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dHJhbnNfdHJhbnNsaXRlcmF0b3JfY2xl
YW51cCkKI2RlZmluZSB1dHJhbnNfdW5yZWdpc3RlciBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dXRyYW5zX3VucmVnaXN0ZXIpCiNkZWZpbmUgdXRyYW5zX3VucmVnaXN0ZXJJRCBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodXRyYW5zX3VucmVnaXN0ZXJJRCkKI2RlZmluZSB1dHJpZTJfY2xvbmUg
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmllMl9jbG9uZSkKI2RlZmluZSB1dHJpZTJfY2xv
bmVBc1RoYXdlZCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRyaWUyX2Nsb25lQXNUaGF3ZWQp
CiNkZWZpbmUgdXRyaWUyX2Nsb3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dHJpZTJfY2xv
c2UpCiNkZWZpbmUgdXRyaWUyX2VudW0gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmllMl9l
bnVtKQojZGVmaW5lIHV0cmllMl9lbnVtRm9yTGVhZFN1cnJvZ2F0ZSBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodXRyaWUyX2VudW1Gb3JMZWFkU3Vycm9nYXRlKQojZGVmaW5lIHV0cmllMl9mcmVl
emUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmllMl9mcmVlemUpCiNkZWZpbmUgdXRyaWUy
X2Zyb21VVHJpZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRyaWUyX2Zyb21VVHJpZSkKI2Rl
ZmluZSB1dHJpZTJfZ2V0MzIgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmllMl9nZXQzMikK
I2RlZmluZSB1dHJpZTJfZ2V0MzJGcm9tTGVhZFN1cnJvZ2F0ZUNvZGVVbml0IFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh1dHJpZTJfZ2V0MzJGcm9tTGVhZFN1cnJvZ2F0ZUNvZGVVbml0KQojZGVm
aW5lIHV0cmllMl9nZXRWZXJzaW9uIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dHJpZTJfZ2V0
VmVyc2lvbikKI2RlZmluZSB1dHJpZTJfaW50ZXJuYWxVOE5leHRJbmRleCBVX0lDVV9FTlRSWV9Q
T0lOVF9SRU5BTUUodXRyaWUyX2ludGVybmFsVThOZXh0SW5kZXgpCiNkZWZpbmUgdXRyaWUyX2lu
dGVybmFsVThQcmV2SW5kZXggVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmllMl9pbnRlcm5h
bFU4UHJldkluZGV4KQojZGVmaW5lIHV0cmllMl9pc0Zyb3plbiBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodXRyaWUyX2lzRnJvemVuKQojZGVmaW5lIHV0cmllMl9vcGVuIFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1dHJpZTJfb3BlbikKI2RlZmluZSB1dHJpZTJfb3BlbkR1bW15IFVfSUNVX0VO
VFJZX1BPSU5UX1JFTkFNRSh1dHJpZTJfb3BlbkR1bW15KQojZGVmaW5lIHV0cmllMl9vcGVuRnJv
bVNlcmlhbGl6ZWQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmllMl9vcGVuRnJvbVNlcmlh
bGl6ZWQpCiNkZWZpbmUgdXRyaWUyX3NlcmlhbGl6ZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dXRyaWUyX3NlcmlhbGl6ZSkKI2RlZmluZSB1dHJpZTJfc2V0MzIgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHV0cmllMl9zZXQzMikKI2RlZmluZSB1dHJpZTJfc2V0MzJGb3JMZWFkU3Vycm9nYXRl
Q29kZVVuaXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmllMl9zZXQzMkZvckxlYWRTdXJy
b2dhdGVDb2RlVW5pdCkKI2RlZmluZSB1dHJpZTJfc2V0UmFuZ2UzMiBVX0lDVV9FTlRSWV9QT0lO
VF9SRU5BTUUodXRyaWUyX3NldFJhbmdlMzIpCiNkZWZpbmUgdXRyaWUyX3N3YXAgVV9JQ1VfRU5U
UllfUE9JTlRfUkVOQU1FKHV0cmllMl9zd2FwKQojZGVmaW5lIHV0cmllMl9zd2FwQW55VmVyc2lv
biBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRyaWUyX3N3YXBBbnlWZXJzaW9uKQojZGVmaW5l
IHV0cmllX2Nsb25lIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dHJpZV9jbG9uZSkKI2RlZmlu
ZSB1dHJpZV9jbG9zZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRyaWVfY2xvc2UpCiNkZWZp
bmUgdXRyaWVfZGVmYXVsdEdldEZvbGRpbmdPZmZzZXQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1F
KHV0cmllX2RlZmF1bHRHZXRGb2xkaW5nT2Zmc2V0KQojZGVmaW5lIHV0cmllX2VudW0gVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHV0cmllX2VudW0pCiNkZWZpbmUgdXRyaWVfZ2V0MzIgVV9JQ1Vf
RU5UUllfUE9JTlRfUkVOQU1FKHV0cmllX2dldDMyKQojZGVmaW5lIHV0cmllX2dldERhdGEgVV9J
Q1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmllX2dldERhdGEpCiNkZWZpbmUgdXRyaWVfb3BlbiBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRyaWVfb3BlbikKI2RlZmluZSB1dHJpZV9zZXJpYWxp
emUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHV0cmllX3NlcmlhbGl6ZSkKI2RlZmluZSB1dHJp
ZV9zZXQzMiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRyaWVfc2V0MzIpCiNkZWZpbmUgdXRy
aWVfc2V0UmFuZ2UzMiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodXRyaWVfc2V0UmFuZ2UzMikK
I2RlZmluZSB1dHJpZV9zd2FwIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dHJpZV9zd2FwKQoj
ZGVmaW5lIHV0cmllX3Vuc2VyaWFsaXplIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh1dHJpZV91
bnNlcmlhbGl6ZSkKI2RlZmluZSB1dHJpZV91bnNlcmlhbGl6ZUR1bW15IFVfSUNVX0VOVFJZX1BP
SU5UX1JFTkFNRSh1dHJpZV91bnNlcmlhbGl6ZUR1bW15KQojZGVmaW5lIHZ6b25lX2Nsb25lIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh2em9uZV9jbG9uZSkKI2RlZmluZSB2em9uZV9jbG9zZSBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodnpvbmVfY2xvc2UpCiNkZWZpbmUgdnpvbmVfY291bnRU
cmFuc2l0aW9uUnVsZXMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHZ6b25lX2NvdW50VHJhbnNp
dGlvblJ1bGVzKQojZGVmaW5lIHZ6b25lX2VxdWFscyBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUo
dnpvbmVfZXF1YWxzKQojZGVmaW5lIHZ6b25lX2dldER5bmFtaWNDbGFzc0lEIFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh2em9uZV9nZXREeW5hbWljQ2xhc3NJRCkKI2RlZmluZSB2em9uZV9nZXRM
YXN0TW9kaWZpZWQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHZ6b25lX2dldExhc3RNb2RpZmll
ZCkKI2RlZmluZSB2em9uZV9nZXROZXh0VHJhbnNpdGlvbiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUodnpvbmVfZ2V0TmV4dFRyYW5zaXRpb24pCiNkZWZpbmUgdnpvbmVfZ2V0T2Zmc2V0IFVfSUNV
X0VOVFJZX1BPSU5UX1JFTkFNRSh2em9uZV9nZXRPZmZzZXQpCiNkZWZpbmUgdnpvbmVfZ2V0T2Zm
c2V0MiBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodnpvbmVfZ2V0T2Zmc2V0MikKI2RlZmluZSB2
em9uZV9nZXRPZmZzZXQzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh2em9uZV9nZXRPZmZzZXQz
KQojZGVmaW5lIHZ6b25lX2dldFByZXZpb3VzVHJhbnNpdGlvbiBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUodnpvbmVfZ2V0UHJldmlvdXNUcmFuc2l0aW9uKQojZGVmaW5lIHZ6b25lX2dldFJhd09m
ZnNldCBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodnpvbmVfZ2V0UmF3T2Zmc2V0KQojZGVmaW5l
IHZ6b25lX2dldFN0YXRpY0NsYXNzSUQgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHZ6b25lX2dl
dFN0YXRpY0NsYXNzSUQpCiNkZWZpbmUgdnpvbmVfZ2V0VFpVUkwgVV9JQ1VfRU5UUllfUE9JTlRf
UkVOQU1FKHZ6b25lX2dldFRaVVJMKQojZGVmaW5lIHZ6b25lX2hhc1NhbWVSdWxlcyBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUodnpvbmVfaGFzU2FtZVJ1bGVzKQojZGVmaW5lIHZ6b25lX2luRGF5
bGlnaHRUaW1lIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh2em9uZV9pbkRheWxpZ2h0VGltZSkK
I2RlZmluZSB2em9uZV9vcGVuRGF0YSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodnpvbmVfb3Bl
bkRhdGEpCiNkZWZpbmUgdnpvbmVfb3BlbklEIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh2em9u
ZV9vcGVuSUQpCiNkZWZpbmUgdnpvbmVfc2V0TGFzdE1vZGlmaWVkIFVfSUNVX0VOVFJZX1BPSU5U
X1JFTkFNRSh2em9uZV9zZXRMYXN0TW9kaWZpZWQpCiNkZWZpbmUgdnpvbmVfc2V0UmF3T2Zmc2V0
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh2em9uZV9zZXRSYXdPZmZzZXQpCiNkZWZpbmUgdnpv
bmVfc2V0VFpVUkwgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHZ6b25lX3NldFRaVVJMKQojZGVm
aW5lIHZ6b25lX3VzZURheWxpZ2h0VGltZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUodnpvbmVf
dXNlRGF5bGlnaHRUaW1lKQojZGVmaW5lIHZ6b25lX3dyaXRlIFVfSUNVX0VOVFJZX1BPSU5UX1JF
TkFNRSh2em9uZV93cml0ZSkKI2RlZmluZSB2em9uZV93cml0ZUZyb21TdGFydCBVX0lDVV9FTlRS
WV9QT0lOVF9SRU5BTUUodnpvbmVfd3JpdGVGcm9tU3RhcnQpCiNkZWZpbmUgdnpvbmVfd3JpdGVT
aW1wbGUgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHZ6b25lX3dyaXRlU2ltcGxlKQojZGVmaW5l
IHpydWxlX2Nsb3NlIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh6cnVsZV9jbG9zZSkKI2RlZmlu
ZSB6cnVsZV9lcXVhbHMgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHpydWxlX2VxdWFscykKI2Rl
ZmluZSB6cnVsZV9nZXREU1RTYXZpbmdzIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh6cnVsZV9n
ZXREU1RTYXZpbmdzKQojZGVmaW5lIHpydWxlX2dldE5hbWUgVV9JQ1VfRU5UUllfUE9JTlRfUkVO
QU1FKHpydWxlX2dldE5hbWUpCiNkZWZpbmUgenJ1bGVfZ2V0UmF3T2Zmc2V0IFVfSUNVX0VOVFJZ
X1BPSU5UX1JFTkFNRSh6cnVsZV9nZXRSYXdPZmZzZXQpCiNkZWZpbmUgenJ1bGVfaXNFcXVpdmFs
ZW50VG8gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHpydWxlX2lzRXF1aXZhbGVudFRvKQojZGVm
aW5lIHp0cmFuc19hZG9wdEZyb20gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHp0cmFuc19hZG9w
dEZyb20pCiNkZWZpbmUgenRyYW5zX2Fkb3B0VG8gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHp0
cmFuc19hZG9wdFRvKQojZGVmaW5lIHp0cmFuc19jbG9uZSBVX0lDVV9FTlRSWV9QT0lOVF9SRU5B
TUUoenRyYW5zX2Nsb25lKQojZGVmaW5lIHp0cmFuc19jbG9zZSBVX0lDVV9FTlRSWV9QT0lOVF9S
RU5BTUUoenRyYW5zX2Nsb3NlKQojZGVmaW5lIHp0cmFuc19lcXVhbHMgVV9JQ1VfRU5UUllfUE9J
TlRfUkVOQU1FKHp0cmFuc19lcXVhbHMpCiNkZWZpbmUgenRyYW5zX2dldER5bmFtaWNDbGFzc0lE
IFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh6dHJhbnNfZ2V0RHluYW1pY0NsYXNzSUQpCiNkZWZp
bmUgenRyYW5zX2dldEZyb20gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHp0cmFuc19nZXRGcm9t
KQojZGVmaW5lIHp0cmFuc19nZXRTdGF0aWNDbGFzc0lEIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFN
RSh6dHJhbnNfZ2V0U3RhdGljQ2xhc3NJRCkKI2RlZmluZSB6dHJhbnNfZ2V0VGltZSBVX0lDVV9F
TlRSWV9QT0lOVF9SRU5BTUUoenRyYW5zX2dldFRpbWUpCiNkZWZpbmUgenRyYW5zX2dldFRvIFVf
SUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh6dHJhbnNfZ2V0VG8pCiNkZWZpbmUgenRyYW5zX29wZW4g
VV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHp0cmFuc19vcGVuKQojZGVmaW5lIHp0cmFuc19vcGVu
RW1wdHkgVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHp0cmFuc19vcGVuRW1wdHkpCiNkZWZpbmUg
enRyYW5zX3NldEZyb20gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHp0cmFuc19zZXRGcm9tKQoj
ZGVmaW5lIHp0cmFuc19zZXRUaW1lIFVfSUNVX0VOVFJZX1BPSU5UX1JFTkFNRSh6dHJhbnNfc2V0
VGltZSkKI2RlZmluZSB6dHJhbnNfc2V0VG8gVV9JQ1VfRU5UUllfUE9JTlRfUkVOQU1FKHp0cmFu
c19zZXRUbykKIyAzMjEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUv
dW1hY2hpbmUuaCIgMiAzIDQKIyAzNyAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYv
dW5pY29kZS91dHlwZXMuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVh
YmloZi91bmljb2RlL3V2ZXJzaW9uLmgiIDEgMyA0CiMgMjYgIi91c3IvaW5jbHVkZS9hcm0tbGlu
dXgtZ251ZWFiaWhmL3VuaWNvZGUvdXZlcnNpb24uaCIgMyA0CiNkZWZpbmUgVVZFUlNJT05fSCAK
IyAzNiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dmVyc2lvbi5o
IiAzIDQKI2RlZmluZSBVX0NPUFlSSUdIVF9TVFJJTkdfTEVOR1RIIDEyOAoKCgoKI2RlZmluZSBV
X01BWF9WRVJTSU9OX0xFTkdUSCA0CgoKCgojZGVmaW5lIFVfVkVSU0lPTl9ERUxJTUlURVIgJy4n
CgoKCgojZGVmaW5lIFVfTUFYX1ZFUlNJT05fU1RSSU5HX0xFTkdUSCAyMAoKCgoKCnR5cGVkZWYg
dWludDhfdCBVVmVyc2lvbkluZm9bNF07CiMgMTEyICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdu
dWVhYmloZi91bmljb2RlL3V2ZXJzaW9uLmgiIDMgNAojZGVmaW5lIFVfSUNVX05BTUVTUEFDRSBV
X0lDVV9FTlRSWV9QT0lOVF9SRU5BTUUoaWN1KQogICAgICAgIG5hbWVzcGFjZSBpY3VfNTIgeyB9
CiAgICAgICAgbmFtZXNwYWNlIGljdSA9IGljdV81MjsKCgojZGVmaW5lIFVfTkFNRVNQQUNFX0JF
R0lOIGV4dGVybiAiQysrIiB7IG5hbWVzcGFjZSBVX0lDVV9OQU1FU1BBQ0UgewojZGVmaW5lIFVf
TkFNRVNQQUNFX0VORCB9IH0KI2RlZmluZSBVX05BTUVTUEFDRV9VU0UgdXNpbmcgbmFtZXNwYWNl
IFVfSUNVX05BTUVTUEFDRTsKI2RlZmluZSBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVV9JQ1VfTkFN
RVNQQUNFOjoKCgojZGVmaW5lIFVfVVNJTkdfSUNVX05BTUVTUEFDRSAxCgoKICAgICAgICB1c2lu
ZyBuYW1lc3BhY2UgaWN1XzUyOwojIDE1MCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJp
aGYvdW5pY29kZS91dmVyc2lvbi5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKSB2b2lkCnVfdmVyc2lvbkZyb21TdHJpbmdfNTIoVVZlcnNpb25J
bmZvIHZlcnNpb25BcnJheSwgY29uc3QgY2hhciAqdmVyc2lvblN0cmluZyk7CiMgMTY0ICIvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V2ZXJzaW9uLmgiIDMgNApleHRl
cm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIHZvaWQKdV92ZXJz
aW9uRnJvbVVTdHJpbmdfNTIoVVZlcnNpb25JbmZvIHZlcnNpb25BcnJheSwgY29uc3QgVUNoYXIg
KnZlcnNpb25TdHJpbmcpOwojIDE4MCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYv
dW5pY29kZS91dmVyc2lvbi5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKSB2b2lkCnVfdmVyc2lvblRvU3RyaW5nXzUyKGNvbnN0IFVWZXJzaW9u
SW5mbyB2ZXJzaW9uQXJyYXksIGNoYXIgKnZlcnNpb25TdHJpbmcpOwojIDE5MSAiL3Vzci9pbmNs
dWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dmVyc2lvbi5oIiAzIDQKZXh0ZXJuICJD
IiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSB2b2lkCnVfZ2V0VmVyc2lv
bl81MihVVmVyc2lvbkluZm8gdmVyc2lvbkFycmF5KTsKIyAzOCAiL3Vzci9pbmNsdWRlL2FybS1s
aW51eC1nbnVlYWJpaGYvdW5pY29kZS91dHlwZXMuaCIgMiAzIDQKCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGYuaCIgMSAzIDQKIyAxMTIgIi91c3Iv
aW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmLmgiIDMgNAojZGVmaW5lIF9f
VVRGX0hfXyAKIyAxMjUgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUv
dXRmLmgiIDMgNAojZGVmaW5lIFVfSVNfVU5JQ09ERV9OT05DSEFSKGMpICgoYyk+PTB4ZmRkMCAm
JiAoKHVpbnQzMl90KShjKTw9MHhmZGVmIHx8ICgoYykmMHhmZmZlKT09MHhmZmZlKSAmJiAodWlu
dDMyX3QpKGMpPD0weDEwZmZmZikKIyAxNDcgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFi
aWhmL3VuaWNvZGUvdXRmLmgiIDMgNAojZGVmaW5lIFVfSVNfVU5JQ09ERV9DSEFSKGMpICgodWlu
dDMyX3QpKGMpPDB4ZDgwMCB8fCAoKHVpbnQzMl90KShjKT4weGRmZmYgJiYgKHVpbnQzMl90KShj
KTw9MHgxMGZmZmYgJiYgIVVfSVNfVU5JQ09ERV9OT05DSEFSKGMpKSkKIyAxNTkgIi91c3IvaW5j
bHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmLmgiIDMgNAojZGVmaW5lIFVfSVNf
Qk1QKGMpICgodWludDMyX3QpKGMpPD0weGZmZmYpCgoKCgoKCgojZGVmaW5lIFVfSVNfU1VQUExF
TUVOVEFSWShjKSAoKHVpbnQzMl90KSgoYyktMHgxMDAwMCk8PTB4ZmZmZmYpCgoKCgoKCgojZGVm
aW5lIFVfSVNfTEVBRChjKSAoKChjKSYweGZmZmZmYzAwKT09MHhkODAwKQoKCgoKCgoKI2RlZmlu
ZSBVX0lTX1RSQUlMKGMpICgoKGMpJjB4ZmZmZmZjMDApPT0weGRjMDApCgoKCgoKCgojZGVmaW5l
IFVfSVNfU1VSUk9HQVRFKGMpICgoKGMpJjB4ZmZmZmY4MDApPT0weGQ4MDApCiMgMjAwICIvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0Zi5oIiAzIDQKI2RlZmluZSBV
X0lTX1NVUlJPR0FURV9MRUFEKGMpICgoKGMpJjB4NDAwKT09MCkKIyAyMDkgIi91c3IvaW5jbHVk
ZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmLmgiIDMgNAojZGVmaW5lIFVfSVNfU1VS
Uk9HQVRFX1RSQUlMKGMpICgoKGMpJjB4NDAwKSE9MCkKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmOC5oIiAxIDMgNAojIDMzICIvdXNyL2luY2x1
ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0ZjguaCIgMyA0CiNkZWZpbmUgX19VVEY4
X0hfXyAKIyA1OCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGY4
LmgiIDMgNApleHRlcm4gIkMiIGNvbnN0IHVpbnQ4X3QKCnV0ZjhfY291bnRUcmFpbEJ5dGVzXzUy
WzI1Nl07CiMgODAgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRm
OC5oIiAzIDQKI2RlZmluZSBVOF9DT1VOVF9UUkFJTF9CWVRFUyhsZWFkQnl0ZSkgKChsZWFkQnl0
ZSk8MHhmMCA/ICgobGVhZEJ5dGUpPj0weGMwKSsoKGxlYWRCeXRlKT49MHhlMCkgOiAobGVhZEJ5
dGUpPDB4ZmUgPyAzKygobGVhZEJ5dGUpPj0weGY4KSsoKGxlYWRCeXRlKT49MHhmYykgOiAwKQoj
IDk2ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0ZjguaCIgMyA0
CiNkZWZpbmUgVThfQ09VTlRfVFJBSUxfQllURVNfVU5TQUZFKGxlYWRCeXRlKSAoKChsZWFkQnl0
ZSk+PTB4YzApKygobGVhZEJ5dGUpPj0weGUwKSsoKGxlYWRCeXRlKT49MHhmMCkpCiMgMTA2ICIv
dXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0ZjguaCIgMyA0CiNkZWZp
bmUgVThfTUFTS19MRUFEX0JZVEUobGVhZEJ5dGUsY291bnRUcmFpbEJ5dGVzKSAoKGxlYWRCeXRl
KSY9KDE8PCg2LShjb3VudFRyYWlsQnl0ZXMpKSktMSkKIyAxMTcgIi91c3IvaW5jbHVkZS9hcm0t
bGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmOC5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBVQ2hhcjMyCnV0ZjhfbmV4dENoYXJTYWZlQm9k
eV81Mihjb25zdCB1aW50OF90ICpzLCBpbnQzMl90ICpwaSwgaW50MzJfdCBsZW5ndGgsIFVDaGFy
MzIgYywgVUJvb2wgc3RyaWN0KTsKIyAxMjkgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFi
aWhmL3VuaWNvZGUvdXRmOC5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKSBpbnQzMl90CnV0ZjhfYXBwZW5kQ2hhclNhZmVCb2R5XzUyKHVpbnQ4
X3QgKnMsIGludDMyX3QgaSwgaW50MzJfdCBsZW5ndGgsIFVDaGFyMzIgYywgVUJvb2wgKnBJc0Vy
cm9yKTsKIyAxNDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRm
OC5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KSBVQ2hhcjMyCnV0ZjhfcHJldkNoYXJTYWZlQm9keV81Mihjb25zdCB1aW50OF90ICpzLCBpbnQz
Ml90IHN0YXJ0LCBpbnQzMl90ICpwaSwgVUNoYXIzMiBjLCBVQm9vbCBzdHJpY3QpOwojIDE1MyAi
L3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGY4LmgiIDMgNApleHRl
cm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGludDMyX3QKdXRm
OF9iYWNrMVNhZmVCb2R5XzUyKGNvbnN0IHVpbnQ4X3QgKnMsIGludDMyX3Qgc3RhcnQsIGludDMy
X3QgaSk7CiMgMTY0ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0
ZjguaCIgMyA0CiNkZWZpbmUgVThfSVNfU0lOR0xFKGMpICgoKGMpJjB4ODApPT0wKQoKCgoKCgoK
I2RlZmluZSBVOF9JU19MRUFEKGMpICgodWludDhfdCkoKGMpLTB4YzApPDB4M2UpCgoKCgoKCgoj
ZGVmaW5lIFU4X0lTX1RSQUlMKGMpICgoKGMpJjB4YzApPT0weDgwKQojIDE4OSAiL3Vzci9pbmNs
dWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGY4LmgiIDMgNAojZGVmaW5lIFU4X0xF
TkdUSChjKSAoKHVpbnQzMl90KShjKTw9MHg3ZiA/IDEgOiAoKHVpbnQzMl90KShjKTw9MHg3ZmYg
PyAyIDogKCh1aW50MzJfdCkoYyk8PTB4ZDdmZiA/IDMgOiAoKHVpbnQzMl90KShjKTw9MHhkZmZm
IHx8ICh1aW50MzJfdCkoYyk+MHgxMGZmZmYgPyAwIDogKCh1aW50MzJfdCkoYyk8PTB4ZmZmZiA/
IDMgOiA0KSApICkgKSApCiMgMjA1ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91
bmljb2RlL3V0ZjguaCIgMyA0CiNkZWZpbmUgVThfTUFYX0xFTkdUSCA0CiMgMjIzICIvdXNyL2lu
Y2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0ZjguaCIgMyA0CiNkZWZpbmUgVThf
R0VUX1VOU0FGRShzLGksYykgeyBpbnQzMl90IF91OF9nZXRfdW5zYWZlX2luZGV4PShpbnQzMl90
KShpKTsgVThfU0VUX0NQX1NUQVJUX1VOU0FGRShzLCBfdThfZ2V0X3Vuc2FmZV9pbmRleCk7IFU4
X05FWFRfVU5TQUZFKHMsIF91OF9nZXRfdW5zYWZlX2luZGV4LCBjKTsgfQojIDI1MCAiL3Vzci9p
bmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGY4LmgiIDMgNAojZGVmaW5lIFU4
X0dFVChzLHN0YXJ0LGksbGVuZ3RoLGMpIHsgaW50MzJfdCBfdThfZ2V0X2luZGV4PShpKTsgVThf
U0VUX0NQX1NUQVJUKHMsIHN0YXJ0LCBfdThfZ2V0X2luZGV4KTsgVThfTkVYVChzLCBfdThfZ2V0
X2luZGV4LCBsZW5ndGgsIGMpOyB9CiMgMjgyICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVh
YmloZi91bmljb2RlL3V0ZjguaCIgMyA0CiNkZWZpbmUgVThfR0VUX09SX0ZGRkQocyxzdGFydCxp
LGxlbmd0aCxjKSB7IGludDMyX3QgX3U4X2dldF9pbmRleD0oaSk7IFU4X1NFVF9DUF9TVEFSVChz
LCBzdGFydCwgX3U4X2dldF9pbmRleCk7IFU4X05FWFRfT1JfRkZGRChzLCBfdThfZ2V0X2luZGV4
LCBsZW5ndGgsIGMpOyB9CiMgMzA4ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91
bmljb2RlL3V0ZjguaCIgMyA0CiNkZWZpbmUgVThfTkVYVF9VTlNBRkUocyxpLGMpIHsgKGMpPSh1
aW50OF90KShzKVsoaSkrK107IGlmKChjKT49MHg4MCkgeyBpZigoYyk8MHhlMCkgeyAoYyk9KCgo
YykmMHgxZik8PDYpfCgocylbKGkpKytdJjB4M2YpOyB9IGVsc2UgaWYoKGMpPDB4ZjApIHsgKGMp
PShVQ2hhcikoKChjKTw8MTIpfCgoKHMpW2ldJjB4M2YpPDw2KXwoKHMpWyhpKSsxXSYweDNmKSk7
IChpKSs9MjsgfSBlbHNlIHsgKGMpPSgoKGMpJjcpPDwxOCl8KCgocylbaV0mMHgzZik8PDEyKXwo
KChzKVsoaSkrMV0mMHgzZik8PDYpfCgocylbKGkpKzJdJjB4M2YpOyAoaSkrPTM7IH0gfSB9CiMg
MzQ0ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0ZjguaCIgMyA0
CiNkZWZpbmUgVThfTkVYVChzLGksbGVuZ3RoLGMpIHsgKGMpPSh1aW50OF90KShzKVsoaSkrK107
IGlmKChjKT49MHg4MCkgeyB1aW50OF90IF9fdDEsIF9fdDI7IGlmKCAoMHhlMDwoYykgJiYgKGMp
PD0weGVjKSAmJiAoKChpKSsxKTwobGVuZ3RoKSB8fCAobGVuZ3RoKTwwKSAmJiAoX190MT0odWlu
dDhfdCkoKHMpW2ldLTB4ODApKTw9MHgzZiAmJiAoX190Mj0odWludDhfdCkoKHMpWyhpKSsxXS0w
eDgwKSk8PSAweDNmICkgeyAoYyk9KFVDaGFyKSgoKGMpPDwxMil8KF9fdDE8PDYpfF9fdDIpOyAo
aSkrPTI7IH0gZWxzZSBpZiggKChjKTwweGUwICYmIChjKT49MHhjMikgJiYgKChpKSE9KGxlbmd0
aCkpICYmIChfX3QxPSh1aW50OF90KSgocylbaV0tMHg4MCkpPD0weDNmICkgeyAoYyk9KCgoYykm
MHgxZik8PDYpfF9fdDE7ICsrKGkpOyB9IGVsc2UgeyAoYyk9dXRmOF9uZXh0Q2hhclNhZmVCb2R5
KChjb25zdCB1aW50OF90ICopcywgJihpKSwgKGxlbmd0aCksIGMsIC0xKTsgfSB9IH0KIyAzOTYg
Ii91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmOC5oIiAzIDQKI2Rl
ZmluZSBVOF9ORVhUX09SX0ZGRkQocyxpLGxlbmd0aCxjKSB7IChjKT0odWludDhfdCkocylbKGkp
KytdOyBpZigoYyk+PTB4ODApIHsgdWludDhfdCBfX3QxLCBfX3QyOyBpZiggKDB4ZTA8KGMpICYm
IChjKTw9MHhlYykgJiYgKCgoaSkrMSk8KGxlbmd0aCkgfHwgKGxlbmd0aCk8MCkgJiYgKF9fdDE9
KHVpbnQ4X3QpKChzKVtpXS0weDgwKSk8PTB4M2YgJiYgKF9fdDI9KHVpbnQ4X3QpKChzKVsoaSkr
MV0tMHg4MCkpPD0gMHgzZiApIHsgKGMpPShVQ2hhcikoKChjKTw8MTIpfChfX3QxPDw2KXxfX3Qy
KTsgKGkpKz0yOyB9IGVsc2UgaWYoICgoYyk8MHhlMCAmJiAoYyk+PTB4YzIpICYmICgoaSkhPShs
ZW5ndGgpKSAmJiAoX190MT0odWludDhfdCkoKHMpW2ldLTB4ODApKTw9MHgzZiApIHsgKGMpPSgo
KGMpJjB4MWYpPDw2KXxfX3QxOyArKyhpKTsgfSBlbHNlIHsgKGMpPXV0ZjhfbmV4dENoYXJTYWZl
Qm9keSgoY29uc3QgdWludDhfdCAqKXMsICYoaSksIChsZW5ndGgpLCBjLCAtMyk7IH0gfSB9CiMg
NDM3ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0ZjguaCIgMyA0
CiNkZWZpbmUgVThfQVBQRU5EX1VOU0FGRShzLGksYykgeyBpZigodWludDMyX3QpKGMpPD0weDdm
KSB7IChzKVsoaSkrK109KHVpbnQ4X3QpKGMpOyB9IGVsc2UgeyBpZigodWludDMyX3QpKGMpPD0w
eDdmZikgeyAocylbKGkpKytdPSh1aW50OF90KSgoKGMpPj42KXwweGMwKTsgfSBlbHNlIHsgaWYo
KHVpbnQzMl90KShjKTw9MHhmZmZmKSB7IChzKVsoaSkrK109KHVpbnQ4X3QpKCgoYyk+PjEyKXww
eGUwKTsgfSBlbHNlIHsgKHMpWyhpKSsrXT0odWludDhfdCkoKChjKT4+MTgpfDB4ZjApOyAocylb
KGkpKytdPSh1aW50OF90KSgoKChjKT4+MTIpJjB4M2YpfDB4ODApOyB9IChzKVsoaSkrK109KHVp
bnQ4X3QpKCgoKGMpPj42KSYweDNmKXwweDgwKTsgfSAocylbKGkpKytdPSh1aW50OF90KSgoKGMp
JjB4M2YpfDB4ODApOyB9IH0KIyA0NzMgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L3VuaWNvZGUvdXRmOC5oIiAzIDQKI2RlZmluZSBVOF9BUFBFTkQocyxpLGNhcGFjaXR5LGMsaXNF
cnJvcikgeyBpZigodWludDMyX3QpKGMpPD0weDdmKSB7IChzKVsoaSkrK109KHVpbnQ4X3QpKGMp
OyB9IGVsc2UgaWYoKHVpbnQzMl90KShjKTw9MHg3ZmYgJiYgKGkpKzE8KGNhcGFjaXR5KSkgeyAo
cylbKGkpKytdPSh1aW50OF90KSgoKGMpPj42KXwweGMwKTsgKHMpWyhpKSsrXT0odWludDhfdCko
KChjKSYweDNmKXwweDgwKTsgfSBlbHNlIGlmKCh1aW50MzJfdCkoYyk8PTB4ZDdmZiAmJiAoaSkr
MjwoY2FwYWNpdHkpKSB7IChzKVsoaSkrK109KHVpbnQ4X3QpKCgoYyk+PjEyKXwweGUwKTsgKHMp
WyhpKSsrXT0odWludDhfdCkoKCgoYyk+PjYpJjB4M2YpfDB4ODApOyAocylbKGkpKytdPSh1aW50
OF90KSgoKGMpJjB4M2YpfDB4ODApOyB9IGVsc2UgeyAoaSk9dXRmOF9hcHBlbmRDaGFyU2FmZUJv
ZHkocywgKGkpLCAoY2FwYWNpdHkpLCBjLCAmKGlzRXJyb3IpKTsgfSB9CiMgNDk4ICIvdXNyL2lu
Y2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0ZjguaCIgMyA0CiNkZWZpbmUgVThf
RldEXzFfVU5TQUZFKHMsaSkgeyAoaSkrPTErVThfQ09VTlRfVFJBSUxfQllURVNfVU5TQUZFKCh1
aW50OF90KShzKVtpXSk7IH0KIyA1MTUgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L3VuaWNvZGUvdXRmOC5oIiAzIDQKI2RlZmluZSBVOF9GV0RfMShzLGksbGVuZ3RoKSB7IHVpbnQ4
X3QgX19iPSh1aW50OF90KShzKVsoaSkrK107IGlmKFU4X0lTX0xFQUQoX19iKSkgeyB1aW50OF90
IF9fY291bnQ9VThfQ09VTlRfVFJBSUxfQllURVMoX19iKTsgaWYoKGkpK19fY291bnQ+KGxlbmd0
aCkgJiYgKGxlbmd0aCk+PTApIHsgX19jb3VudD0odWludDhfdCkoKGxlbmd0aCktKGkpKTsgfSB3
aGlsZShfX2NvdW50PjAgJiYgVThfSVNfVFJBSUwoKHMpW2ldKSkgeyArKyhpKTsgLS1fX2NvdW50
OyB9IH0gfQojIDU0MSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91
dGY4LmgiIDMgNAojZGVmaW5lIFU4X0ZXRF9OX1VOU0FGRShzLGksbikgeyBpbnQzMl90IF9fTj0o
bik7IHdoaWxlKF9fTj4wKSB7IFU4X0ZXRF8xX1VOU0FGRShzLCBpKTsgLS1fX047IH0gfQojIDU2
NCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGY4LmgiIDMgNAoj
ZGVmaW5lIFU4X0ZXRF9OKHMsaSxsZW5ndGgsbikgeyBpbnQzMl90IF9fTj0obik7IHdoaWxlKF9f
Tj4wICYmICgoaSk8KGxlbmd0aCkgfHwgKChsZW5ndGgpPDAgJiYgKHMpW2ldIT0wKSkpIHsgVThf
RldEXzEocywgaSwgbGVuZ3RoKTsgLS1fX047IH0gfQojIDU4NSAiL3Vzci9pbmNsdWRlL2FybS1s
aW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGY4LmgiIDMgNAojZGVmaW5lIFU4X1NFVF9DUF9TVEFS
VF9VTlNBRkUocyxpKSB7IHdoaWxlKFU4X0lTX1RSQUlMKChzKVtpXSkpIHsgLS0oaSk7IH0gfQoj
IDYwMyAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGY4LmgiIDMg
NAojZGVmaW5lIFU4X1NFVF9DUF9TVEFSVChzLHN0YXJ0LGkpIHsgaWYoVThfSVNfVFJBSUwoKHMp
WyhpKV0pKSB7IChpKT11dGY4X2JhY2sxU2FmZUJvZHkocywgc3RhcnQsIChpKSk7IH0gfQojIDYz
MCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGY4LmgiIDMgNAoj
ZGVmaW5lIFU4X1BSRVZfVU5TQUZFKHMsaSxjKSB7IChjKT0odWludDhfdCkocylbLS0oaSldOyBp
ZihVOF9JU19UUkFJTChjKSkgeyB1aW50OF90IF9fYiwgX19jb3VudD0xLCBfX3NoaWZ0PTY7IChj
KSY9MHgzZjsgZm9yKDs7KSB7IF9fYj0odWludDhfdCkocylbLS0oaSldOyBpZihfX2I+PTB4YzAp
IHsgVThfTUFTS19MRUFEX0JZVEUoX19iLCBfX2NvdW50KTsgKGMpfD0oVUNoYXIzMilfX2I8PF9f
c2hpZnQ7IGJyZWFrOyB9IGVsc2UgeyAoYyl8PShVQ2hhcjMyKShfX2ImMHgzZik8PF9fc2hpZnQ7
ICsrX19jb3VudDsgX19zaGlmdCs9NjsgfSB9IH0gfQojIDY3MiAiL3Vzci9pbmNsdWRlL2FybS1s
aW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGY4LmgiIDMgNAojZGVmaW5lIFU4X1BSRVYocyxzdGFy
dCxpLGMpIHsgKGMpPSh1aW50OF90KShzKVstLShpKV07IGlmKChjKT49MHg4MCkgeyAoYyk9dXRm
OF9wcmV2Q2hhclNhZmVCb2R5KChjb25zdCB1aW50OF90ICopcywgc3RhcnQsICYoaSksIGMsIC0x
KTsgfSB9CiMgNzA0ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0
ZjguaCIgMyA0CiNkZWZpbmUgVThfUFJFVl9PUl9GRkZEKHMsc3RhcnQsaSxjKSB7IChjKT0odWlu
dDhfdCkocylbLS0oaSldOyBpZigoYyk+PTB4ODApIHsgKGMpPXV0ZjhfcHJldkNoYXJTYWZlQm9k
eSgoY29uc3QgdWludDhfdCAqKXMsIHN0YXJ0LCAmKGkpLCBjLCAtMyk7IH0gfQojIDcyMyAiL3Vz
ci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGY4LmgiIDMgNAojZGVmaW5l
IFU4X0JBQ0tfMV9VTlNBRkUocyxpKSB7IHdoaWxlKFU4X0lTX1RSQUlMKChzKVstLShpKV0pKSB7
fSB9CiMgNzM5ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0Zjgu
aCIgMyA0CiNkZWZpbmUgVThfQkFDS18xKHMsc3RhcnQsaSkgeyBpZihVOF9JU19UUkFJTCgocylb
LS0oaSldKSkgeyAoaSk9dXRmOF9iYWNrMVNhZmVCb2R5KHMsIHN0YXJ0LCAoaSkpOyB9IH0KIyA3
NTggIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmOC5oIiAzIDQK
I2RlZmluZSBVOF9CQUNLX05fVU5TQUZFKHMsaSxuKSB7IGludDMyX3QgX19OPShuKTsgd2hpbGUo
X19OPjApIHsgVThfQkFDS18xX1VOU0FGRShzLCBpKTsgLS1fX047IH0gfQojIDc4MCAiL3Vzci9p
bmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGY4LmgiIDMgNAojZGVmaW5lIFU4
X0JBQ0tfTihzLHN0YXJ0LGksbikgeyBpbnQzMl90IF9fTj0obik7IHdoaWxlKF9fTj4wICYmIChp
KT4oc3RhcnQpKSB7IFU4X0JBQ0tfMShzLCBzdGFydCwgaSk7IC0tX19OOyB9IH0KIyA4MDEgIi91
c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmOC5oIiAzIDQKI2RlZmlu
ZSBVOF9TRVRfQ1BfTElNSVRfVU5TQUZFKHMsaSkgeyBVOF9CQUNLXzFfVU5TQUZFKHMsIGkpOyBV
OF9GV0RfMV9VTlNBRkUocywgaSk7IH0KIyA4MjMgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251
ZWFiaWhmL3VuaWNvZGUvdXRmOC5oIiAzIDQKI2RlZmluZSBVOF9TRVRfQ1BfTElNSVQocyxzdGFy
dCxpLGxlbmd0aCkgeyBpZigoc3RhcnQpPChpKSAmJiAoKGkpPChsZW5ndGgpIHx8ICgobGVuZ3Ro
KTwwICYmIChzKVtpXSE9MCkpKSB7IFU4X0JBQ0tfMShzLCBzdGFydCwgaSk7IFU4X0ZXRF8xKHMs
IGksIGxlbmd0aCk7IH0gfQojIDIxNiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYv
dW5pY29kZS91dGYuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmlo
Zi91bmljb2RlL3V0ZjE2LmgiIDEgMyA0CiMgMzMgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251
ZWFiaWhmL3VuaWNvZGUvdXRmMTYuaCIgMyA0CiNkZWZpbmUgX19VVEYxNl9IX18gCiMgNDggIi91
c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmMTYuaCIgMyA0CiNkZWZp
bmUgVTE2X0lTX1NJTkdMRShjKSAhVV9JU19TVVJST0dBVEUoYykKCgoKCgoKCiNkZWZpbmUgVTE2
X0lTX0xFQUQoYykgKCgoYykmMHhmZmZmZmMwMCk9PTB4ZDgwMCkKCgoKCgoKCiNkZWZpbmUgVTE2
X0lTX1RSQUlMKGMpICgoKGMpJjB4ZmZmZmZjMDApPT0weGRjMDApCgoKCgoKCgojZGVmaW5lIFUx
Nl9JU19TVVJST0dBVEUoYykgVV9JU19TVVJST0dBVEUoYykKIyA4MSAiL3Vzci9pbmNsdWRlL2Fy
bS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGYxNi5oIiAzIDQKI2RlZmluZSBVMTZfSVNfU1VS
Uk9HQVRFX0xFQUQoYykgKCgoYykmMHg0MDApPT0wKQojIDkwICIvdXNyL2luY2x1ZGUvYXJtLWxp
bnV4LWdudWVhYmloZi91bmljb2RlL3V0ZjE2LmgiIDMgNAojZGVmaW5lIFUxNl9JU19TVVJST0dB
VEVfVFJBSUwoYykgKCgoYykmMHg0MDApIT0wKQoKCgoKCiNkZWZpbmUgVTE2X1NVUlJPR0FURV9P
RkZTRVQgKCgweGQ4MDA8PDEwVUwpKzB4ZGMwMC0weDEwMDAwKQojIDEwOSAiL3Vzci9pbmNsdWRl
L2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGYxNi5oIiAzIDQKI2RlZmluZSBVMTZfR0VU
X1NVUFBMRU1FTlRBUlkobGVhZCx0cmFpbCkgKCgoVUNoYXIzMikobGVhZCk8PDEwVUwpKyhVQ2hh
cjMyKSh0cmFpbCktVTE2X1NVUlJPR0FURV9PRkZTRVQpCiMgMTIwICIvdXNyL2luY2x1ZGUvYXJt
LWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0ZjE2LmgiIDMgNAojZGVmaW5lIFUxNl9MRUFEKHN1
cHBsZW1lbnRhcnkpIChVQ2hhcikoKChzdXBwbGVtZW50YXJ5KT4+MTApKzB4ZDdjMCkKIyAxMjkg
Ii91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmMTYuaCIgMyA0CiNk
ZWZpbmUgVTE2X1RSQUlMKHN1cHBsZW1lbnRhcnkpIChVQ2hhcikoKChzdXBwbGVtZW50YXJ5KSYw
eDNmZil8MHhkYzAwKQojIDEzOCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5p
Y29kZS91dGYxNi5oIiAzIDQKI2RlZmluZSBVMTZfTEVOR1RIKGMpICgodWludDMyX3QpKGMpPD0w
eGZmZmYgPyAxIDogMikKCgoKCgoKI2RlZmluZSBVMTZfTUFYX0xFTkdUSCAyCiMgMTY0ICIvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0ZjE2LmgiIDMgNAojZGVmaW5l
IFUxNl9HRVRfVU5TQUZFKHMsaSxjKSB7IChjKT0ocylbaV07IGlmKFUxNl9JU19TVVJST0dBVEUo
YykpIHsgaWYoVTE2X0lTX1NVUlJPR0FURV9MRUFEKGMpKSB7IChjKT1VMTZfR0VUX1NVUFBMRU1F
TlRBUlkoKGMpLCAocylbKGkpKzFdKTsgfSBlbHNlIHsgKGMpPVUxNl9HRVRfU1VQUExFTUVOVEFS
WSgocylbKGkpLTFdLCAoYykpOyB9IH0gfQojIDE5OCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvdW5pY29kZS91dGYxNi5oIiAzIDQKI2RlZmluZSBVMTZfR0VUKHMsc3RhcnQsaSxs
ZW5ndGgsYykgeyAoYyk9KHMpW2ldOyBpZihVMTZfSVNfU1VSUk9HQVRFKGMpKSB7IHVpbnQxNl90
IF9fYzI7IGlmKFUxNl9JU19TVVJST0dBVEVfTEVBRChjKSkgeyBpZigoaSkrMSE9KGxlbmd0aCkg
JiYgVTE2X0lTX1RSQUlMKF9fYzI9KHMpWyhpKSsxXSkpIHsgKGMpPVUxNl9HRVRfU1VQUExFTUVO
VEFSWSgoYyksIF9fYzIpOyB9IH0gZWxzZSB7IGlmKChpKT4oc3RhcnQpICYmIFUxNl9JU19MRUFE
KF9fYzI9KHMpWyhpKS0xXSkpIHsgKGMpPVUxNl9HRVRfU1VQUExFTUVOVEFSWShfX2MyLCAoYykp
OyB9IH0gfSB9CiMgMjM1ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2Rl
L3V0ZjE2LmgiIDMgNAojZGVmaW5lIFUxNl9ORVhUX1VOU0FGRShzLGksYykgeyAoYyk9KHMpWyhp
KSsrXTsgaWYoVTE2X0lTX0xFQUQoYykpIHsgKGMpPVUxNl9HRVRfU1VQUExFTUVOVEFSWSgoYyks
IChzKVsoaSkrK10pOyB9IH0KIyAyNjQgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L3VuaWNvZGUvdXRmMTYuaCIgMyA0CiNkZWZpbmUgVTE2X05FWFQocyxpLGxlbmd0aCxjKSB7IChj
KT0ocylbKGkpKytdOyBpZihVMTZfSVNfTEVBRChjKSkgeyB1aW50MTZfdCBfX2MyOyBpZigoaSkh
PShsZW5ndGgpICYmIFUxNl9JU19UUkFJTChfX2MyPShzKVsoaSldKSkgeyArKyhpKTsgKGMpPVUx
Nl9HRVRfU1VQUExFTUVOVEFSWSgoYyksIF9fYzIpOyB9IH0gfQojIDI4OCAiL3Vzci9pbmNsdWRl
L2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGYxNi5oIiAzIDQKI2RlZmluZSBVMTZfQVBQ
RU5EX1VOU0FGRShzLGksYykgeyBpZigodWludDMyX3QpKGMpPD0weGZmZmYpIHsgKHMpWyhpKSsr
XT0odWludDE2X3QpKGMpOyB9IGVsc2UgeyAocylbKGkpKytdPSh1aW50MTZfdCkoKChjKT4+MTAp
KzB4ZDdjMCk7IChzKVsoaSkrK109KHVpbnQxNl90KSgoKGMpJjB4M2ZmKXwweGRjMDApOyB9IH0K
IyAzMTQgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmMTYuaCIg
MyA0CiNkZWZpbmUgVTE2X0FQUEVORChzLGksY2FwYWNpdHksYyxpc0Vycm9yKSB7IGlmKCh1aW50
MzJfdCkoYyk8PTB4ZmZmZikgeyAocylbKGkpKytdPSh1aW50MTZfdCkoYyk7IH0gZWxzZSBpZigo
dWludDMyX3QpKGMpPD0weDEwZmZmZiAmJiAoaSkrMTwoY2FwYWNpdHkpKSB7IChzKVsoaSkrK109
KHVpbnQxNl90KSgoKGMpPj4xMCkrMHhkN2MwKTsgKHMpWyhpKSsrXT0odWludDE2X3QpKCgoYykm
MHgzZmYpfDB4ZGMwMCk7IH0gZWxzZSB7IChpc0Vycm9yKT1UUlVFOyB9IH0KIyAzMzUgIi91c3Iv
aW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmMTYuaCIgMyA0CiNkZWZpbmUg
VTE2X0ZXRF8xX1VOU0FGRShzLGkpIHsgaWYoVTE2X0lTX0xFQUQoKHMpWyhpKSsrXSkpIHsgKyso
aSk7IH0gfQojIDM1NCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91
dGYxNi5oIiAzIDQKI2RlZmluZSBVMTZfRldEXzEocyxpLGxlbmd0aCkgeyBpZihVMTZfSVNfTEVB
RCgocylbKGkpKytdKSAmJiAoaSkhPShsZW5ndGgpICYmIFUxNl9JU19UUkFJTCgocylbaV0pKSB7
ICsrKGkpOyB9IH0KIyAzNzIgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNv
ZGUvdXRmMTYuaCIgMyA0CiNkZWZpbmUgVTE2X0ZXRF9OX1VOU0FGRShzLGksbikgeyBpbnQzMl90
IF9fTj0obik7IHdoaWxlKF9fTj4wKSB7IFUxNl9GV0RfMV9VTlNBRkUocywgaSk7IC0tX19OOyB9
IH0KIyAzOTUgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmMTYu
aCIgMyA0CiNkZWZpbmUgVTE2X0ZXRF9OKHMsaSxsZW5ndGgsbikgeyBpbnQzMl90IF9fTj0obik7
IHdoaWxlKF9fTj4wICYmICgoaSk8KGxlbmd0aCkgfHwgKChsZW5ndGgpPDAgJiYgKHMpW2ldIT0w
KSkpIHsgVTE2X0ZXRF8xKHMsIGksIGxlbmd0aCk7IC0tX19OOyB9IH0KIyA0MTYgIi91c3IvaW5j
bHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmMTYuaCIgMyA0CiNkZWZpbmUgVTE2
X1NFVF9DUF9TVEFSVF9VTlNBRkUocyxpKSB7IGlmKFUxNl9JU19UUkFJTCgocylbaV0pKSB7IC0t
KGkpOyB9IH0KIyA0MzYgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUv
dXRmMTYuaCIgMyA0CiNkZWZpbmUgVTE2X1NFVF9DUF9TVEFSVChzLHN0YXJ0LGkpIHsgaWYoVTE2
X0lTX1RSQUlMKChzKVtpXSkgJiYgKGkpPihzdGFydCkgJiYgVTE2X0lTX0xFQUQoKHMpWyhpKS0x
XSkpIHsgLS0oaSk7IH0gfQojIDQ2NCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYv
dW5pY29kZS91dGYxNi5oIiAzIDQKI2RlZmluZSBVMTZfUFJFVl9VTlNBRkUocyxpLGMpIHsgKGMp
PShzKVstLShpKV07IGlmKFUxNl9JU19UUkFJTChjKSkgeyAoYyk9VTE2X0dFVF9TVVBQTEVNRU5U
QVJZKChzKVstLShpKV0sIChjKSk7IH0gfQojIDQ5MiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvdW5pY29kZS91dGYxNi5oIiAzIDQKI2RlZmluZSBVMTZfUFJFVihzLHN0YXJ0LGks
YykgeyAoYyk9KHMpWy0tKGkpXTsgaWYoVTE2X0lTX1RSQUlMKGMpKSB7IHVpbnQxNl90IF9fYzI7
IGlmKChpKT4oc3RhcnQpICYmIFUxNl9JU19MRUFEKF9fYzI9KHMpWyhpKS0xXSkpIHsgLS0oaSk7
IChjKT1VMTZfR0VUX1NVUFBMRU1FTlRBUlkoX19jMiwgKGMpKTsgfSB9IH0KIyA1MTQgIi91c3Iv
aW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmMTYuaCIgMyA0CiNkZWZpbmUg
VTE2X0JBQ0tfMV9VTlNBRkUocyxpKSB7IGlmKFUxNl9JU19UUkFJTCgocylbLS0oaSldKSkgeyAt
LShpKTsgfSB9CiMgNTMyICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2Rl
L3V0ZjE2LmgiIDMgNAojZGVmaW5lIFUxNl9CQUNLXzEocyxzdGFydCxpKSB7IGlmKFUxNl9JU19U
UkFJTCgocylbLS0oaSldKSAmJiAoaSk+KHN0YXJ0KSAmJiBVMTZfSVNfTEVBRCgocylbKGkpLTFd
KSkgeyAtLShpKTsgfSB9CiMgNTUxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91
bmljb2RlL3V0ZjE2LmgiIDMgNAojZGVmaW5lIFUxNl9CQUNLX05fVU5TQUZFKHMsaSxuKSB7IGlu
dDMyX3QgX19OPShuKTsgd2hpbGUoX19OPjApIHsgVTE2X0JBQ0tfMV9VTlNBRkUocywgaSk7IC0t
X19OOyB9IH0KIyA1NzMgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUv
dXRmMTYuaCIgMyA0CiNkZWZpbmUgVTE2X0JBQ0tfTihzLHN0YXJ0LGksbikgeyBpbnQzMl90IF9f
Tj0obik7IHdoaWxlKF9fTj4wICYmIChpKT4oc3RhcnQpKSB7IFUxNl9CQUNLXzEocywgc3RhcnQs
IGkpOyAtLV9fTjsgfSB9CiMgNTk0ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91
bmljb2RlL3V0ZjE2LmgiIDMgNAojZGVmaW5lIFUxNl9TRVRfQ1BfTElNSVRfVU5TQUZFKHMsaSkg
eyBpZihVMTZfSVNfTEVBRCgocylbKGkpLTFdKSkgeyArKyhpKTsgfSB9CiMgNjE3ICIvdXNyL2lu
Y2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0ZjE2LmgiIDMgNAojZGVmaW5lIFUx
Nl9TRVRfQ1BfTElNSVQocyxzdGFydCxpLGxlbmd0aCkgeyBpZigoc3RhcnQpPChpKSAmJiAoKGkp
PChsZW5ndGgpIHx8IChsZW5ndGgpPDApICYmIFUxNl9JU19MRUFEKChzKVsoaSktMV0pICYmIFUx
Nl9JU19UUkFJTCgocylbaV0pKSB7ICsrKGkpOyB9IH0KIyAyMTcgIi91c3IvaW5jbHVkZS9hcm0t
bGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmLmgiIDIgMyA0CgoKIyAxICIvdXNyL2luY2x1ZGUv
YXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0Zl9vbGQuaCIgMSAzIDQKIyAxNDQgIi91c3Iv
aW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmX29sZC5oIiAzIDQKI2RlZmlu
ZSBfX1VURl9PTERfSF9fIAoKCgojIDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L3VuaWNvZGUvdXRmLmgiIDEgMyA0CiMgMTQ5ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVh
YmloZi91bmljb2RlL3V0Zl9vbGQuaCIgMiAzIDQKIyAxNjYgIi91c3IvaW5jbHVkZS9hcm0tbGlu
dXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmX29sZC5oIiAzIDQKI2RlZmluZSBVVEZfU0laRSAxNgoK
CgoKCgoKI2RlZmluZSBVVEZfU0FGRSAKCiN1bmRlZiBVVEZfVU5TQUZFCgojdW5kZWYgVVRGX1NU
UklDVAojIDE5NCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGZf
b2xkLmgiIDMgNAojZGVmaW5lIFVURjhfRVJST1JfVkFMVUVfMSAweDE1CgoKCgoKCiNkZWZpbmUg
VVRGOF9FUlJPUl9WQUxVRV8yIDB4OWYKCgoKCgoKCiNkZWZpbmUgVVRGX0VSUk9SX1ZBTFVFIDB4
ZmZmZgoKCgoKCgoKI2RlZmluZSBVVEZfSVNfRVJST1IoYykgKCgoYykmMHhmZmZlKT09MHhmZmZl
IHx8IChjKT09VVRGOF9FUlJPUl9WQUxVRV8xIHx8IChjKT09VVRGOF9FUlJPUl9WQUxVRV8yKQoK
CgoKCgoKI2RlZmluZSBVVEZfSVNfVkFMSUQoYykgKFVURl9JU19VTklDT0RFX0NIQVIoYykgJiYg
KGMpIT1VVEY4X0VSUk9SX1ZBTFVFXzEgJiYgKGMpIT1VVEY4X0VSUk9SX1ZBTFVFXzIpCgoKCgoK
CgojZGVmaW5lIFVURl9JU19TVVJST0dBVEUodWNoYXIpICgoKHVjaGFyKSYweGZmZmZmODAwKT09
MHhkODAwKQoKCgoKCgojZGVmaW5lIFVURl9JU19VTklDT0RFX05PTkNIQVIoYykgKChjKT49MHhm
ZGQwICYmICgodWludDMyX3QpKGMpPD0weGZkZWYgfHwgKChjKSYweGZmZmUpPT0weGZmZmUpICYm
ICh1aW50MzJfdCkoYyk8PTB4MTBmZmZmKQojIDI2MCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvdW5pY29kZS91dGZfb2xkLmgiIDMgNAojZGVmaW5lIFVURl9JU19VTklDT0RFX0NI
QVIoYykgKCh1aW50MzJfdCkoYyk8MHhkODAwIHx8ICgodWludDMyX3QpKGMpPjB4ZGZmZiAmJiAo
dWludDMyX3QpKGMpPD0weDEwZmZmZiAmJiAhVVRGX0lTX1VOSUNPREVfTk9OQ0hBUihjKSkpCiMg
MjcyICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0Zl9vbGQuaCIg
MyA0CiNkZWZpbmUgVVRGOF9DT1VOVF9UUkFJTF9CWVRFUyhsZWFkQnl0ZSkgKHV0ZjhfY291bnRU
cmFpbEJ5dGVzWyh1aW50OF90KWxlYWRCeXRlXSkKCgoKCgojZGVmaW5lIFVURjhfTUFTS19MRUFE
X0JZVEUobGVhZEJ5dGUsY291bnRUcmFpbEJ5dGVzKSAoKGxlYWRCeXRlKSY9KDE8PCg2LShjb3Vu
dFRyYWlsQnl0ZXMpKSktMSkKCgojZGVmaW5lIFVURjhfSVNfU0lOR0xFKHVjaGFyKSAoKCh1Y2hh
cikmMHg4MCk9PTApCgojZGVmaW5lIFVURjhfSVNfTEVBRCh1Y2hhcikgKCh1aW50OF90KSgodWNo
YXIpLTB4YzApPDB4M2UpCgojZGVmaW5lIFVURjhfSVNfVFJBSUwodWNoYXIpICgoKHVjaGFyKSYw
eGMwKT09MHg4MCkKCgojZGVmaW5lIFVURjhfTkVFRF9NVUxUSVBMRV9VQ0hBUihjKSAoKHVpbnQz
Ml90KShjKT4weDdmKQojIDMwNCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5p
Y29kZS91dGZfb2xkLmgiIDMgNAojZGVmaW5lIFVURjhfQ0hBUl9MRU5HVEgoYykgKCh1aW50MzJf
dCkoYyk8PTB4N2YgPyAxIDogKCh1aW50MzJfdCkoYyk8PTB4N2ZmID8gMiA6ICgodWludDMyX3Qp
KChjKS0weDEwMDAwKT4weGZmZmZmID8gMyA6IDQpICkgKQojIDMyNiAiL3Vzci9pbmNsdWRlL2Fy
bS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGZfb2xkLmgiIDMgNAojZGVmaW5lIFVURjhfTUFY
X0NIQVJfTEVOR1RIIDQKCgojZGVmaW5lIFVURjhfQVJSQVlfU0laRShzaXplKSAoKDUqKHNpemUp
KS8yKQoKCiNkZWZpbmUgVVRGOF9HRVRfQ0hBUl9VTlNBRkUocyxpLGMpIHsgaW50MzJfdCBfdXRm
OF9nZXRfY2hhcl91bnNhZmVfaW5kZXg9KGludDMyX3QpKGkpOyBVVEY4X1NFVF9DSEFSX1NUQVJU
X1VOU0FGRShzLCBfdXRmOF9nZXRfY2hhcl91bnNhZmVfaW5kZXgpOyBVVEY4X05FWFRfQ0hBUl9V
TlNBRkUocywgX3V0ZjhfZ2V0X2NoYXJfdW5zYWZlX2luZGV4LCBjKTsgfQoKCgoKCgojZGVmaW5l
IFVURjhfR0VUX0NIQVJfU0FGRShzLHN0YXJ0LGksbGVuZ3RoLGMsc3RyaWN0KSB7IGludDMyX3Qg
X3V0ZjhfZ2V0X2NoYXJfc2FmZV9pbmRleD0oaW50MzJfdCkoaSk7IFVURjhfU0VUX0NIQVJfU1RB
UlRfU0FGRShzLCBzdGFydCwgX3V0ZjhfZ2V0X2NoYXJfc2FmZV9pbmRleCk7IFVURjhfTkVYVF9D
SEFSX1NBRkUocywgX3V0ZjhfZ2V0X2NoYXJfc2FmZV9pbmRleCwgbGVuZ3RoLCBjLCBzdHJpY3Qp
OyB9CgoKCgoKCiNkZWZpbmUgVVRGOF9ORVhUX0NIQVJfVU5TQUZFKHMsaSxjKSB7IChjKT0ocylb
KGkpKytdOyBpZigodWludDhfdCkoKGMpLTB4YzApPDB4MzUpIHsgdWludDhfdCBfX2NvdW50PVVU
RjhfQ09VTlRfVFJBSUxfQllURVMoYyk7IFVURjhfTUFTS19MRUFEX0JZVEUoYywgX19jb3VudCk7
IHN3aXRjaChfX2NvdW50KSB7IGNhc2UgMzogKGMpPSgoYyk8PDYpfCgocylbKGkpKytdJjB4M2Yp
OyBjYXNlIDI6IChjKT0oKGMpPDw2KXwoKHMpWyhpKSsrXSYweDNmKTsgY2FzZSAxOiAoYyk9KChj
KTw8Nil8KChzKVsoaSkrK10mMHgzZik7IGJyZWFrOyB9IH0gfQojIDM2NiAiL3Vzci9pbmNsdWRl
L2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGZfb2xkLmgiIDMgNAojZGVmaW5lIFVURjhf
QVBQRU5EX0NIQVJfVU5TQUZFKHMsaSxjKSB7IGlmKCh1aW50MzJfdCkoYyk8PTB4N2YpIHsgKHMp
WyhpKSsrXT0odWludDhfdCkoYyk7IH0gZWxzZSB7IGlmKCh1aW50MzJfdCkoYyk8PTB4N2ZmKSB7
IChzKVsoaSkrK109KHVpbnQ4X3QpKCgoYyk+PjYpfDB4YzApOyB9IGVsc2UgeyBpZigodWludDMy
X3QpKGMpPD0weGZmZmYpIHsgKHMpWyhpKSsrXT0odWludDhfdCkoKChjKT4+MTIpfDB4ZTApOyB9
IGVsc2UgeyAocylbKGkpKytdPSh1aW50OF90KSgoKGMpPj4xOCl8MHhmMCk7IChzKVsoaSkrK109
KHVpbnQ4X3QpKCgoKGMpPj4xMikmMHgzZil8MHg4MCk7IH0gKHMpWyhpKSsrXT0odWludDhfdCko
KCgoYyk+PjYpJjB4M2YpfDB4ODApOyB9IChzKVsoaSkrK109KHVpbnQ4X3QpKCgoYykmMHgzZil8
MHg4MCk7IH0gfQojIDM4NiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29k
ZS91dGZfb2xkLmgiIDMgNAojZGVmaW5lIFVURjhfRldEXzFfVU5TQUZFKHMsaSkgeyAoaSkrPTEr
VVRGOF9DT1VOVF9UUkFJTF9CWVRFUygocylbaV0pOyB9CgoKCgojZGVmaW5lIFVURjhfRldEX05f
VU5TQUZFKHMsaSxuKSB7IGludDMyX3QgX19OPShuKTsgd2hpbGUoX19OPjApIHsgVVRGOF9GV0Rf
MV9VTlNBRkUocywgaSk7IC0tX19OOyB9IH0KIyA0MDAgIi91c3IvaW5jbHVkZS9hcm0tbGludXgt
Z251ZWFiaWhmL3VuaWNvZGUvdXRmX29sZC5oIiAzIDQKI2RlZmluZSBVVEY4X1NFVF9DSEFSX1NU
QVJUX1VOU0FGRShzLGkpIHsgd2hpbGUoVVRGOF9JU19UUkFJTCgocylbaV0pKSB7IC0tKGkpOyB9
IH0KCgoKCiNkZWZpbmUgVVRGOF9ORVhUX0NIQVJfU0FGRShzLGksbGVuZ3RoLGMsc3RyaWN0KSB7
IChjKT0ocylbKGkpKytdOyBpZigoYyk+PTB4ODApIHsgaWYoVVRGOF9JU19MRUFEKGMpKSB7IChj
KT11dGY4X25leHRDaGFyU2FmZUJvZHkocywgJihpKSwgKGludDMyX3QpKGxlbmd0aCksIGMsIHN0
cmljdCk7IH0gZWxzZSB7IChjKT1VVEY4X0VSUk9SX1ZBTFVFXzE7IH0gfSB9CiMgNDE3ICIvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0Zl9vbGQuaCIgMyA0CiNkZWZp
bmUgVVRGOF9BUFBFTkRfQ0hBUl9TQUZFKHMsaSxsZW5ndGgsYykgeyBpZigodWludDMyX3QpKGMp
PD0weDdmKSB7IChzKVsoaSkrK109KHVpbnQ4X3QpKGMpOyB9IGVsc2UgeyAoaSk9dXRmOF9hcHBl
bmRDaGFyU2FmZUJvZHkocywgKGludDMyX3QpKGkpLCAoaW50MzJfdCkobGVuZ3RoKSwgYywgTlVM
TCk7IH0gfQojIDQyNiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91
dGZfb2xkLmgiIDMgNAojZGVmaW5lIFVURjhfRldEXzFfU0FGRShzLGksbGVuZ3RoKSBVOF9GV0Rf
MShzLCBpLCBsZW5ndGgpCgoKI2RlZmluZSBVVEY4X0ZXRF9OX1NBRkUocyxpLGxlbmd0aCxuKSBV
OF9GV0RfTihzLCBpLCBsZW5ndGgsIG4pCgoKI2RlZmluZSBVVEY4X1NFVF9DSEFSX1NUQVJUX1NB
RkUocyxzdGFydCxpKSBVOF9TRVRfQ1BfU1RBUlQocywgc3RhcnQsIGkpCgoKI2RlZmluZSBVVEY4
X1BSRVZfQ0hBUl9VTlNBRkUocyxpLGMpIHsgKGMpPShzKVstLShpKV07IGlmKFVURjhfSVNfVFJB
SUwoYykpIHsgdWludDhfdCBfX2IsIF9fY291bnQ9MSwgX19zaGlmdD02OyAoYykmPTB4M2Y7IGZv
cig7OykgeyBfX2I9KHMpWy0tKGkpXTsgaWYoX19iPj0weGMwKSB7IFVURjhfTUFTS19MRUFEX0JZ
VEUoX19iLCBfX2NvdW50KTsgKGMpfD0oVUNoYXIzMilfX2I8PF9fc2hpZnQ7IGJyZWFrOyB9IGVs
c2UgeyAoYyl8PShVQ2hhcjMyKShfX2ImMHgzZik8PF9fc2hpZnQ7ICsrX19jb3VudDsgX19zaGlm
dCs9NjsgfSB9IH0gfQojIDQ1OCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5p
Y29kZS91dGZfb2xkLmgiIDMgNAojZGVmaW5lIFVURjhfQkFDS18xX1VOU0FGRShzLGkpIHsgd2hp
bGUoVVRGOF9JU19UUkFJTCgocylbLS0oaSldKSkge30gfQoKCgoKI2RlZmluZSBVVEY4X0JBQ0tf
Tl9VTlNBRkUocyxpLG4pIHsgaW50MzJfdCBfX049KG4pOyB3aGlsZShfX04+MCkgeyBVVEY4X0JB
Q0tfMV9VTlNBRkUocywgaSk7IC0tX19OOyB9IH0KIyA0NzIgIi91c3IvaW5jbHVkZS9hcm0tbGlu
dXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmX29sZC5oIiAzIDQKI2RlZmluZSBVVEY4X1NFVF9DSEFS
X0xJTUlUX1VOU0FGRShzLGkpIHsgVVRGOF9CQUNLXzFfVU5TQUZFKHMsIGkpOyBVVEY4X0ZXRF8x
X1VOU0FGRShzLCBpKTsgfQoKCgoKCiNkZWZpbmUgVVRGOF9QUkVWX0NIQVJfU0FGRShzLHN0YXJ0
LGksYyxzdHJpY3QpIHsgKGMpPShzKVstLShpKV07IGlmKChjKT49MHg4MCkgeyBpZigoYyk8PTB4
YmYpIHsgKGMpPXV0ZjhfcHJldkNoYXJTYWZlQm9keShzLCBzdGFydCwgJihpKSwgYywgc3RyaWN0
KTsgfSBlbHNlIHsgKGMpPVVURjhfRVJST1JfVkFMVUVfMTsgfSB9IH0KIyA0OTAgIi91c3IvaW5j
bHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmX29sZC5oIiAzIDQKI2RlZmluZSBV
VEY4X0JBQ0tfMV9TQUZFKHMsc3RhcnQsaSkgVThfQkFDS18xKHMsIHN0YXJ0LCBpKQoKCiNkZWZp
bmUgVVRGOF9CQUNLX05fU0FGRShzLHN0YXJ0LGksbikgVThfQkFDS19OKHMsIHN0YXJ0LCBpLCBu
KQoKCiNkZWZpbmUgVVRGOF9TRVRfQ0hBUl9MSU1JVF9TQUZFKHMsc3RhcnQsaSxsZW5ndGgpIFU4
X1NFVF9DUF9MSU1JVChzLCBzdGFydCwgaSwgbGVuZ3RoKQoKCgoKI2RlZmluZSBVVEZfSVNfRklS
U1RfU1VSUk9HQVRFKHVjaGFyKSAoKCh1Y2hhcikmMHhmZmZmZmMwMCk9PTB4ZDgwMCkKCgojZGVm
aW5lIFVURl9JU19TRUNPTkRfU1VSUk9HQVRFKHVjaGFyKSAoKCh1Y2hhcikmMHhmZmZmZmMwMCk9
PTB4ZGMwMCkKCgojZGVmaW5lIFVURl9JU19TVVJST0dBVEVfRklSU1QoYykgKCgoYykmMHg0MDAp
PT0wKQoKCiNkZWZpbmUgVVRGX1NVUlJPR0FURV9PRkZTRVQgKCgweGQ4MDA8PDEwVUwpKzB4ZGMw
MC0weDEwMDAwKQoKCiNkZWZpbmUgVVRGMTZfR0VUX1BBSVJfVkFMVUUoZmlyc3Qsc2Vjb25kKSAo
KChmaXJzdCk8PDEwVUwpKyhzZWNvbmQpLVVURl9TVVJST0dBVEVfT0ZGU0VUKQoKCgojZGVmaW5l
IFVURl9GSVJTVF9TVVJST0dBVEUoc3VwcGxlbWVudGFyeSkgKFVDaGFyKSgoKHN1cHBsZW1lbnRh
cnkpPj4xMCkrMHhkN2MwKQoKCiNkZWZpbmUgVVRGX1NFQ09ORF9TVVJST0dBVEUoc3VwcGxlbWVu
dGFyeSkgKFVDaGFyKSgoKHN1cHBsZW1lbnRhcnkpJjB4M2ZmKXwweGRjMDApCgoKI2RlZmluZSBV
VEYxNl9MRUFEKHN1cHBsZW1lbnRhcnkpIFVURl9GSVJTVF9TVVJST0dBVEUoc3VwcGxlbWVudGFy
eSkKCgojZGVmaW5lIFVURjE2X1RSQUlMKHN1cHBsZW1lbnRhcnkpIFVURl9TRUNPTkRfU1VSUk9H
QVRFKHN1cHBsZW1lbnRhcnkpCgoKI2RlZmluZSBVVEYxNl9JU19TSU5HTEUodWNoYXIpICFVVEZf
SVNfU1VSUk9HQVRFKHVjaGFyKQoKCiNkZWZpbmUgVVRGMTZfSVNfTEVBRCh1Y2hhcikgVVRGX0lT
X0ZJUlNUX1NVUlJPR0FURSh1Y2hhcikKCgojZGVmaW5lIFVURjE2X0lTX1RSQUlMKHVjaGFyKSBV
VEZfSVNfU0VDT05EX1NVUlJPR0FURSh1Y2hhcikKCgojZGVmaW5lIFVURjE2X05FRURfTVVMVElQ
TEVfVUNIQVIoYykgKCh1aW50MzJfdCkoYyk+MHhmZmZmKQoKCiNkZWZpbmUgVVRGMTZfQ0hBUl9M
RU5HVEgoYykgKCh1aW50MzJfdCkoYyk8PTB4ZmZmZiA/IDEgOiAyKQoKCiNkZWZpbmUgVVRGMTZf
TUFYX0NIQVJfTEVOR1RIIDIKCgojZGVmaW5lIFVURjE2X0FSUkFZX1NJWkUoc2l6ZSkgKHNpemUp
CiMgNTYwICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0Zl9vbGQu
aCIgMyA0CiNkZWZpbmUgVVRGMTZfR0VUX0NIQVJfVU5TQUZFKHMsaSxjKSB7IChjKT0ocylbaV07
IGlmKFVURl9JU19TVVJST0dBVEUoYykpIHsgaWYoVVRGX0lTX1NVUlJPR0FURV9GSVJTVChjKSkg
eyAoYyk9VVRGMTZfR0VUX1BBSVJfVkFMVUUoKGMpLCAocylbKGkpKzFdKTsgfSBlbHNlIHsgKGMp
PVVURjE2X0dFVF9QQUlSX1ZBTFVFKChzKVsoaSktMV0sIChjKSk7IH0gfSB9CiMgNTcyICIvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0Zl9vbGQuaCIgMyA0CiNkZWZp
bmUgVVRGMTZfR0VUX0NIQVJfU0FGRShzLHN0YXJ0LGksbGVuZ3RoLGMsc3RyaWN0KSB7IChjKT0o
cylbaV07IGlmKFVURl9JU19TVVJST0dBVEUoYykpIHsgdWludDE2X3QgX19jMjsgaWYoVVRGX0lT
X1NVUlJPR0FURV9GSVJTVChjKSkgeyBpZigoaSkrMTwobGVuZ3RoKSAmJiBVVEZfSVNfU0VDT05E
X1NVUlJPR0FURShfX2MyPShzKVsoaSkrMV0pKSB7IChjKT1VVEYxNl9HRVRfUEFJUl9WQUxVRSgo
YyksIF9fYzIpOyB9IGVsc2UgaWYoc3RyaWN0KSB7IChjKT1VVEZfRVJST1JfVkFMVUU7IH0gfSBl
bHNlIHsgaWYoKGkpLTE+PShzdGFydCkgJiYgVVRGX0lTX0ZJUlNUX1NVUlJPR0FURShfX2MyPShz
KVsoaSktMV0pKSB7IChjKT1VVEYxNl9HRVRfUEFJUl9WQUxVRShfX2MyLCAoYykpOyB9IGVsc2Ug
aWYoc3RyaWN0KSB7IChjKT1VVEZfRVJST1JfVkFMVUU7IH0gfSB9IGVsc2UgaWYoKHN0cmljdCkg
JiYgIVVURl9JU19VTklDT0RFX0NIQVIoYykpIHsgKGMpPVVURl9FUlJPUl9WQUxVRTsgfSB9CiMg
NTk5ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0Zl9vbGQuaCIg
MyA0CiNkZWZpbmUgVVRGMTZfTkVYVF9DSEFSX1VOU0FGRShzLGksYykgeyAoYyk9KHMpWyhpKSsr
XTsgaWYoVVRGX0lTX0ZJUlNUX1NVUlJPR0FURShjKSkgeyAoYyk9VVRGMTZfR0VUX1BBSVJfVkFM
VUUoKGMpLCAocylbKGkpKytdKTsgfSB9CgoKCgoKCgojZGVmaW5lIFVURjE2X0FQUEVORF9DSEFS
X1VOU0FGRShzLGksYykgeyBpZigodWludDMyX3QpKGMpPD0weGZmZmYpIHsgKHMpWyhpKSsrXT0o
dWludDE2X3QpKGMpOyB9IGVsc2UgeyAocylbKGkpKytdPSh1aW50MTZfdCkoKChjKT4+MTApKzB4
ZDdjMCk7IChzKVsoaSkrK109KHVpbnQxNl90KSgoKGMpJjB4M2ZmKXwweGRjMDApOyB9IH0KIyA2
MTcgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmX29sZC5oIiAz
IDQKI2RlZmluZSBVVEYxNl9GV0RfMV9VTlNBRkUocyxpKSB7IGlmKFVURl9JU19GSVJTVF9TVVJS
T0dBVEUoKHMpWyhpKSsrXSkpIHsgKysoaSk7IH0gfQoKCgoKCgojZGVmaW5lIFVURjE2X0ZXRF9O
X1VOU0FGRShzLGksbikgeyBpbnQzMl90IF9fTj0obik7IHdoaWxlKF9fTj4wKSB7IFVURjE2X0ZX
RF8xX1VOU0FGRShzLCBpKTsgLS1fX047IH0gfQojIDYzMyAiL3Vzci9pbmNsdWRlL2FybS1saW51
eC1nbnVlYWJpaGYvdW5pY29kZS91dGZfb2xkLmgiIDMgNAojZGVmaW5lIFVURjE2X1NFVF9DSEFS
X1NUQVJUX1VOU0FGRShzLGkpIHsgaWYoVVRGX0lTX1NFQ09ORF9TVVJST0dBVEUoKHMpW2ldKSkg
eyAtLShpKTsgfSB9CgoKCgoKCiNkZWZpbmUgVVRGMTZfTkVYVF9DSEFSX1NBRkUocyxpLGxlbmd0
aCxjLHN0cmljdCkgeyAoYyk9KHMpWyhpKSsrXTsgaWYoVVRGX0lTX0ZJUlNUX1NVUlJPR0FURShj
KSkgeyB1aW50MTZfdCBfX2MyOyBpZigoaSk8KGxlbmd0aCkgJiYgVVRGX0lTX1NFQ09ORF9TVVJS
T0dBVEUoX19jMj0ocylbKGkpXSkpIHsgKysoaSk7IChjKT1VVEYxNl9HRVRfUEFJUl9WQUxVRSgo
YyksIF9fYzIpOyB9IGVsc2UgaWYoc3RyaWN0KSB7IChjKT1VVEZfRVJST1JfVkFMVUU7IH0gfSBl
bHNlIGlmKChzdHJpY3QpICYmICFVVEZfSVNfVU5JQ09ERV9DSEFSKGMpKSB7IChjKT1VVEZfRVJS
T1JfVkFMVUU7IH0gfQojIDY1OSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5p
Y29kZS91dGZfb2xkLmgiIDMgNAojZGVmaW5lIFVURjE2X0FQUEVORF9DSEFSX1NBRkUocyxpLGxl
bmd0aCxjKSB7IGlmKCh1aW50MzJfdCkoYyk8PTB4ZmZmZikgeyAocylbKGkpKytdPSh1aW50MTZf
dCkoYyk7IH0gZWxzZSBpZigodWludDMyX3QpKGMpPD0weDEwZmZmZikgeyBpZigoaSkrMTwobGVu
Z3RoKSkgeyAocylbKGkpKytdPSh1aW50MTZfdCkoKChjKT4+MTApKzB4ZDdjMCk7IChzKVsoaSkr
K109KHVpbnQxNl90KSgoKGMpJjB4M2ZmKXwweGRjMDApOyB9IGVsc2UgeyAocylbKGkpKytdPVVU
Rl9FUlJPUl9WQUxVRTsgfSB9IGVsc2UgeyAocylbKGkpKytdPVVURl9FUlJPUl9WQUxVRTsgfSB9
CiMgNjc1ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0Zl9vbGQu
aCIgMyA0CiNkZWZpbmUgVVRGMTZfRldEXzFfU0FGRShzLGksbGVuZ3RoKSBVMTZfRldEXzEocywg
aSwgbGVuZ3RoKQoKCiNkZWZpbmUgVVRGMTZfRldEX05fU0FGRShzLGksbGVuZ3RoLG4pIFUxNl9G
V0RfTihzLCBpLCBsZW5ndGgsIG4pCgoKI2RlZmluZSBVVEYxNl9TRVRfQ0hBUl9TVEFSVF9TQUZF
KHMsc3RhcnQsaSkgVTE2X1NFVF9DUF9TVEFSVChzLCBzdGFydCwgaSkKCgojZGVmaW5lIFVURjE2
X1BSRVZfQ0hBUl9VTlNBRkUocyxpLGMpIHsgKGMpPShzKVstLShpKV07IGlmKFVURl9JU19TRUNP
TkRfU1VSUk9HQVRFKGMpKSB7IChjKT1VVEYxNl9HRVRfUEFJUl9WQUxVRSgocylbLS0oaSldLCAo
YykpOyB9IH0KCgoKCgoKCiNkZWZpbmUgVVRGMTZfQkFDS18xX1VOU0FGRShzLGkpIHsgaWYoVVRG
X0lTX1NFQ09ORF9TVVJST0dBVEUoKHMpWy0tKGkpXSkpIHsgLS0oaSk7IH0gfQoKCgoKCgojZGVm
aW5lIFVURjE2X0JBQ0tfTl9VTlNBRkUocyxpLG4pIHsgaW50MzJfdCBfX049KG4pOyB3aGlsZShf
X04+MCkgeyBVVEYxNl9CQUNLXzFfVU5TQUZFKHMsIGkpOyAtLV9fTjsgfSB9CiMgNzA4ICIvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0Zl9vbGQuaCIgMyA0CiNkZWZp
bmUgVVRGMTZfU0VUX0NIQVJfTElNSVRfVU5TQUZFKHMsaSkgeyBpZihVVEZfSVNfRklSU1RfU1VS
Uk9HQVRFKChzKVsoaSktMV0pKSB7ICsrKGkpOyB9IH0KCgoKCgoKI2RlZmluZSBVVEYxNl9QUkVW
X0NIQVJfU0FGRShzLHN0YXJ0LGksYyxzdHJpY3QpIHsgKGMpPShzKVstLShpKV07IGlmKFVURl9J
U19TRUNPTkRfU1VSUk9HQVRFKGMpKSB7IHVpbnQxNl90IF9fYzI7IGlmKChpKT4oc3RhcnQpICYm
IFVURl9JU19GSVJTVF9TVVJST0dBVEUoX19jMj0ocylbKGkpLTFdKSkgeyAtLShpKTsgKGMpPVVU
RjE2X0dFVF9QQUlSX1ZBTFVFKF9fYzIsIChjKSk7IH0gZWxzZSBpZihzdHJpY3QpIHsgKGMpPVVU
Rl9FUlJPUl9WQUxVRTsgfSB9IGVsc2UgaWYoKHN0cmljdCkgJiYgIVVURl9JU19VTklDT0RFX0NI
QVIoYykpIHsgKGMpPVVURl9FUlJPUl9WQUxVRTsgfSB9CiMgNzM0ICIvdXNyL2luY2x1ZGUvYXJt
LWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0Zl9vbGQuaCIgMyA0CiNkZWZpbmUgVVRGMTZfQkFD
S18xX1NBRkUocyxzdGFydCxpKSBVMTZfQkFDS18xKHMsIHN0YXJ0LCBpKQoKCiNkZWZpbmUgVVRG
MTZfQkFDS19OX1NBRkUocyxzdGFydCxpLG4pIFUxNl9CQUNLX04ocywgc3RhcnQsIGksIG4pCgoK
I2RlZmluZSBVVEYxNl9TRVRfQ0hBUl9MSU1JVF9TQUZFKHMsc3RhcnQsaSxsZW5ndGgpIFUxNl9T
RVRfQ1BfTElNSVQocywgc3RhcnQsIGksIGxlbmd0aCkKIyA3NjAgIi91c3IvaW5jbHVkZS9hcm0t
bGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmX29sZC5oIiAzIDQKI2RlZmluZSBVVEYzMl9JU19T
QUZFKGMsc3RyaWN0KSAoIShzdHJpY3QpID8gKHVpbnQzMl90KShjKTw9MHgxMGZmZmYgOiBVVEZf
SVNfVU5JQ09ERV9DSEFSKGMpKQojIDc3NiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJp
aGYvdW5pY29kZS91dGZfb2xkLmgiIDMgNAojZGVmaW5lIFVURjMyX0lTX1NJTkdMRSh1Y2hhcikg
MQoKI2RlZmluZSBVVEYzMl9JU19MRUFEKHVjaGFyKSAwCgojZGVmaW5lIFVURjMyX0lTX1RSQUlM
KHVjaGFyKSAwCgoKCgojZGVmaW5lIFVURjMyX05FRURfTVVMVElQTEVfVUNIQVIoYykgMAoKI2Rl
ZmluZSBVVEYzMl9DSEFSX0xFTkdUSChjKSAxCgojZGVmaW5lIFVURjMyX01BWF9DSEFSX0xFTkdU
SCAxCgoKCgojZGVmaW5lIFVURjMyX0FSUkFZX1NJWkUoc2l6ZSkgKHNpemUpCgoKI2RlZmluZSBV
VEYzMl9HRVRfQ0hBUl9VTlNBRkUocyxpLGMpIHsgKGMpPShzKVtpXTsgfQoKCgoKI2RlZmluZSBV
VEYzMl9HRVRfQ0hBUl9TQUZFKHMsc3RhcnQsaSxsZW5ndGgsYyxzdHJpY3QpIHsgKGMpPShzKVtp
XTsgaWYoIVVURjMyX0lTX1NBRkUoYywgc3RyaWN0KSkgeyAoYyk9VVRGX0VSUk9SX1ZBTFVFOyB9
IH0KIyA4MTIgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmX29s
ZC5oIiAzIDQKI2RlZmluZSBVVEYzMl9ORVhUX0NIQVJfVU5TQUZFKHMsaSxjKSB7IChjKT0ocylb
KGkpKytdOyB9CgoKCgojZGVmaW5lIFVURjMyX0FQUEVORF9DSEFSX1VOU0FGRShzLGksYykgeyAo
cylbKGkpKytdPShjKTsgfQoKCgoKI2RlZmluZSBVVEYzMl9GV0RfMV9VTlNBRkUocyxpKSB7ICsr
KGkpOyB9CgoKCgojZGVmaW5lIFVURjMyX0ZXRF9OX1VOU0FGRShzLGksbikgeyAoaSkrPShuKTsg
fQoKCgoKI2RlZmluZSBVVEYzMl9TRVRfQ0hBUl9TVEFSVF9VTlNBRkUocyxpKSB7IH0KCgoKI2Rl
ZmluZSBVVEYzMl9ORVhUX0NIQVJfU0FGRShzLGksbGVuZ3RoLGMsc3RyaWN0KSB7IChjKT0ocylb
KGkpKytdOyBpZighVVRGMzJfSVNfU0FGRShjLCBzdHJpY3QpKSB7IChjKT1VVEZfRVJST1JfVkFM
VUU7IH0gfQoKCgoKCgoKI2RlZmluZSBVVEYzMl9BUFBFTkRfQ0hBUl9TQUZFKHMsaSxsZW5ndGgs
YykgeyBpZigodWludDMyX3QpKGMpPD0weDEwZmZmZikgeyAocylbKGkpKytdPShjKTsgfSBlbHNl
IHsgKHMpWyhpKSsrXT0weGZmZmQ7IH0gfQojIDg1MyAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvdW5pY29kZS91dGZfb2xkLmgiIDMgNAojZGVmaW5lIFVURjMyX0ZXRF8xX1NBRkUo
cyxpLGxlbmd0aCkgeyArKyhpKTsgfQoKCgoKI2RlZmluZSBVVEYzMl9GV0RfTl9TQUZFKHMsaSxs
ZW5ndGgsbikgeyBpZigoKGkpKz0obikpPihsZW5ndGgpKSB7IChpKT0obGVuZ3RoKTsgfSB9CgoK
CgoKCiNkZWZpbmUgVVRGMzJfU0VUX0NIQVJfU1RBUlRfU0FGRShzLHN0YXJ0LGkpIHsgfQoKCgoK
CiNkZWZpbmUgVVRGMzJfUFJFVl9DSEFSX1VOU0FGRShzLGksYykgeyAoYyk9KHMpWy0tKGkpXTsg
fQoKCgoKI2RlZmluZSBVVEYzMl9CQUNLXzFfVU5TQUZFKHMsaSkgeyAtLShpKTsgfQoKCgoKI2Rl
ZmluZSBVVEYzMl9CQUNLX05fVU5TQUZFKHMsaSxuKSB7IChpKS09KG4pOyB9CgoKCgojZGVmaW5l
IFVURjMyX1NFVF9DSEFSX0xJTUlUX1VOU0FGRShzLGkpIHsgfQoKCgojZGVmaW5lIFVURjMyX1BS
RVZfQ0hBUl9TQUZFKHMsc3RhcnQsaSxjLHN0cmljdCkgeyAoYyk9KHMpWy0tKGkpXTsgaWYoIVVU
RjMyX0lTX1NBRkUoYywgc3RyaWN0KSkgeyAoYyk9VVRGX0VSUk9SX1ZBTFVFOyB9IH0KCgoKCgoK
CiNkZWZpbmUgVVRGMzJfQkFDS18xX1NBRkUocyxzdGFydCxpKSB7IC0tKGkpOyB9CgoKCgojZGVm
aW5lIFVURjMyX0JBQ0tfTl9TQUZFKHMsc3RhcnQsaSxuKSB7IChpKS09KG4pOyBpZigoaSk8KHN0
YXJ0KSkgeyAoaSk9KHN0YXJ0KTsgfSB9CgoKCgoKCgojZGVmaW5lIFVURjMyX1NFVF9DSEFSX0xJ
TUlUX1NBRkUocyxpLGxlbmd0aCkgeyB9CiMgOTIxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdu
dWVhYmloZi91bmljb2RlL3V0Zl9vbGQuaCIgMyA0CiNkZWZpbmUgVVRGX0FSUkFZX1NJWkUoc2l6
ZSkgVVRGMTZfQVJSQVlfU0laRShzaXplKQoKCiNkZWZpbmUgVVRGX0dFVF9DSEFSX1VOU0FGRShz
LGksYykgVVRGMTZfR0VUX0NIQVJfVU5TQUZFKHMsIGksIGMpCgoKI2RlZmluZSBVVEZfR0VUX0NI
QVJfU0FGRShzLHN0YXJ0LGksbGVuZ3RoLGMsc3RyaWN0KSBVVEYxNl9HRVRfQ0hBUl9TQUZFKHMs
IHN0YXJ0LCBpLCBsZW5ndGgsIGMsIHN0cmljdCkKCgoKI2RlZmluZSBVVEZfTkVYVF9DSEFSX1VO
U0FGRShzLGksYykgVVRGMTZfTkVYVF9DSEFSX1VOU0FGRShzLCBpLCBjKQoKCiNkZWZpbmUgVVRG
X05FWFRfQ0hBUl9TQUZFKHMsaSxsZW5ndGgsYyxzdHJpY3QpIFVURjE2X05FWFRfQ0hBUl9TQUZF
KHMsIGksIGxlbmd0aCwgYywgc3RyaWN0KQoKCgojZGVmaW5lIFVURl9BUFBFTkRfQ0hBUl9VTlNB
RkUocyxpLGMpIFVURjE2X0FQUEVORF9DSEFSX1VOU0FGRShzLCBpLCBjKQoKCiNkZWZpbmUgVVRG
X0FQUEVORF9DSEFSX1NBRkUocyxpLGxlbmd0aCxjKSBVVEYxNl9BUFBFTkRfQ0hBUl9TQUZFKHMs
IGksIGxlbmd0aCwgYykKCgoKI2RlZmluZSBVVEZfRldEXzFfVU5TQUZFKHMsaSkgVVRGMTZfRldE
XzFfVU5TQUZFKHMsIGkpCgoKI2RlZmluZSBVVEZfRldEXzFfU0FGRShzLGksbGVuZ3RoKSBVVEYx
Nl9GV0RfMV9TQUZFKHMsIGksIGxlbmd0aCkKCgoKI2RlZmluZSBVVEZfRldEX05fVU5TQUZFKHMs
aSxuKSBVVEYxNl9GV0RfTl9VTlNBRkUocywgaSwgbikKCgojZGVmaW5lIFVURl9GV0RfTl9TQUZF
KHMsaSxsZW5ndGgsbikgVVRGMTZfRldEX05fU0FGRShzLCBpLCBsZW5ndGgsIG4pCgoKCiNkZWZp
bmUgVVRGX1NFVF9DSEFSX1NUQVJUX1VOU0FGRShzLGkpIFVURjE2X1NFVF9DSEFSX1NUQVJUX1VO
U0FGRShzLCBpKQoKCiNkZWZpbmUgVVRGX1NFVF9DSEFSX1NUQVJUX1NBRkUocyxzdGFydCxpKSBV
VEYxNl9TRVRfQ0hBUl9TVEFSVF9TQUZFKHMsIHN0YXJ0LCBpKQoKCgojZGVmaW5lIFVURl9QUkVW
X0NIQVJfVU5TQUZFKHMsaSxjKSBVVEYxNl9QUkVWX0NIQVJfVU5TQUZFKHMsIGksIGMpCgoKI2Rl
ZmluZSBVVEZfUFJFVl9DSEFSX1NBRkUocyxzdGFydCxpLGMsc3RyaWN0KSBVVEYxNl9QUkVWX0NI
QVJfU0FGRShzLCBzdGFydCwgaSwgYywgc3RyaWN0KQoKCgojZGVmaW5lIFVURl9CQUNLXzFfVU5T
QUZFKHMsaSkgVVRGMTZfQkFDS18xX1VOU0FGRShzLCBpKQoKCiNkZWZpbmUgVVRGX0JBQ0tfMV9T
QUZFKHMsc3RhcnQsaSkgVVRGMTZfQkFDS18xX1NBRkUocywgc3RhcnQsIGkpCgoKCiNkZWZpbmUg
VVRGX0JBQ0tfTl9VTlNBRkUocyxpLG4pIFVURjE2X0JBQ0tfTl9VTlNBRkUocywgaSwgbikKCgoj
ZGVmaW5lIFVURl9CQUNLX05fU0FGRShzLHN0YXJ0LGksbikgVVRGMTZfQkFDS19OX1NBRkUocywg
c3RhcnQsIGksIG4pCgoKCiNkZWZpbmUgVVRGX1NFVF9DSEFSX0xJTUlUX1VOU0FGRShzLGkpIFVU
RjE2X1NFVF9DSEFSX0xJTUlUX1VOU0FGRShzLCBpKQoKCiNkZWZpbmUgVVRGX1NFVF9DSEFSX0xJ
TUlUX1NBRkUocyxzdGFydCxpLGxlbmd0aCkgVVRGMTZfU0VUX0NIQVJfTElNSVRfU0FGRShzLCBz
dGFydCwgaSwgbGVuZ3RoKQojIDk5OSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYv
dW5pY29kZS91dGZfb2xkLmgiIDMgNAojZGVmaW5lIFVURl9JU19TSU5HTEUodWNoYXIpIFUxNl9J
U19TSU5HTEUodWNoYXIpCgoKCgoKCiNkZWZpbmUgVVRGX0lTX0xFQUQodWNoYXIpIFUxNl9JU19M
RUFEKHVjaGFyKQoKCgoKCgojZGVmaW5lIFVURl9JU19UUkFJTCh1Y2hhcikgVTE2X0lTX1RSQUlM
KHVjaGFyKQoKCgoKCgojZGVmaW5lIFVURl9ORUVEX01VTFRJUExFX1VDSEFSKGMpIFVURjE2X05F
RURfTVVMVElQTEVfVUNIQVIoYykKCgoKCgoKI2RlZmluZSBVVEZfQ0hBUl9MRU5HVEgoYykgVTE2
X0xFTkdUSChjKQoKCgoKCgojZGVmaW5lIFVURl9NQVhfQ0hBUl9MRU5HVEggVTE2X01BWF9MRU5H
VEgKIyAxMDQ1ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0Zl9v
bGQuaCIgMyA0CiNkZWZpbmUgVVRGX0dFVF9DSEFSKHMsc3RhcnQsaSxsZW5ndGgsYykgVTE2X0dF
VChzLCBzdGFydCwgaSwgbGVuZ3RoLCBjKQojIDEwNTggIi91c3IvaW5jbHVkZS9hcm0tbGludXgt
Z251ZWFiaWhmL3VuaWNvZGUvdXRmX29sZC5oIiAzIDQKI2RlZmluZSBVVEZfTkVYVF9DSEFSKHMs
aSxsZW5ndGgsYykgVTE2X05FWFQocywgaSwgbGVuZ3RoLCBjKQojIDEwNzEgIi91c3IvaW5jbHVk
ZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmX29sZC5oIiAzIDQKI2RlZmluZSBVVEZf
QVBQRU5EX0NIQVIocyxpLGxlbmd0aCxjKSBVVEYxNl9BUFBFTkRfQ0hBUl9TQUZFKHMsIGksIGxl
bmd0aCwgYykKIyAxMDgyICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2Rl
L3V0Zl9vbGQuaCIgMyA0CiNkZWZpbmUgVVRGX0ZXRF8xKHMsaSxsZW5ndGgpIFUxNl9GV0RfMShz
LCBpLCBsZW5ndGgpCiMgMTA5MyAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5p
Y29kZS91dGZfb2xkLmgiIDMgNAojZGVmaW5lIFVURl9GV0RfTihzLGksbGVuZ3RoLG4pIFUxNl9G
V0RfTihzLCBpLCBsZW5ndGgsIG4pCiMgMTEwOSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVl
YWJpaGYvdW5pY29kZS91dGZfb2xkLmgiIDMgNAojZGVmaW5lIFVURl9TRVRfQ0hBUl9TVEFSVChz
LHN0YXJ0LGkpIFUxNl9TRVRfQ1BfU1RBUlQocywgc3RhcnQsIGkpCiMgMTEyMiAiL3Vzci9pbmNs
dWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dGZfb2xkLmgiIDMgNAojZGVmaW5lIFVU
Rl9QUkVWX0NIQVIocyxzdGFydCxpLGMpIFUxNl9QUkVWKHMsIHN0YXJ0LCBpLCBjKQojIDExMzUg
Ii91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmX29sZC5oIiAzIDQK
I2RlZmluZSBVVEZfQkFDS18xKHMsc3RhcnQsaSkgVTE2X0JBQ0tfMShzLCBzdGFydCwgaSkKIyAx
MTQ4ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0Zl9vbGQuaCIg
MyA0CiNkZWZpbmUgVVRGX0JBQ0tfTihzLHN0YXJ0LGksbikgVTE2X0JBQ0tfTihzLCBzdGFydCwg
aSwgbikKIyAxMTY0ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0
Zl9vbGQuaCIgMyA0CiNkZWZpbmUgVVRGX1NFVF9DSEFSX0xJTUlUKHMsc3RhcnQsaSxsZW5ndGgp
IFUxNl9TRVRfQ1BfTElNSVQocywgc3RhcnQsIGksIGxlbmd0aCkKIyAyMjAgIi91c3IvaW5jbHVk
ZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXRmLmgiIDIgMyA0CiMgNDMgIi91c3IvaW5j
bHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXR5cGVzLmgiIDIgMyA0CiMgNjIgIi91
c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXR5cGVzLmgiIDMgNAojZGVm
aW5lIFVfU0hPV19DUExVU1BMVVNfQVBJIDEKIyAxMjcgIi91c3IvaW5jbHVkZS9hcm0tbGludXgt
Z251ZWFiaWhmL3VuaWNvZGUvdXR5cGVzLmgiIDMgNAojZGVmaW5lIFVfSUNVREFUQV9UWVBFX0xF
VFRFUiAibCIKI2RlZmluZSBVX0lDVURBVEFfVFlQRV9MSVRMRVRURVIgbAojIDEzNyAiL3Vzci9p
bmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91dHlwZXMuaCIgMyA0CiNkZWZpbmUg
VV9JQ1VEQVRBX05BTUUgImljdWR0IiBVX0lDVV9WRVJTSU9OX1NIT1JUIFVfSUNVREFUQV9UWVBF
X0xFVFRFUgoKI2RlZmluZSBVX1VTUkRBVEFfTkFNRSAidXNyZHQiIFVfSUNVX1ZFUlNJT05fU0hP
UlQgVV9JQ1VEQVRBX1RZUEVfTEVUVEVSCiNkZWZpbmUgVV9VU0VfVVNSREFUQSAxCiMgMTU0ICIv
dXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0eXBlcy5oIiAzIDQKI2Rl
ZmluZSBVX0lDVURBVEFfRU5UUllfUE9JTlQgVV9ERUYyX0lDVURBVEFfRU5UUllfUE9JTlQoVV9J
Q1VfVkVSU0lPTl9NQUpPUl9OVU0sVV9MSUJfU1VGRklYX0NfTkFNRSkKCgoKCgoKI2RlZmluZSBV
X0RFRjJfSUNVREFUQV9FTlRSWV9QT0lOVChtYWpvcixzdWZmKSBVX0RFRl9JQ1VEQVRBX0VOVFJZ
X1BPSU5UKG1ham9yLHN1ZmYpCiMgMTcwICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmlo
Zi91bmljb2RlL3V0eXBlcy5oIiAzIDQKI2RlZmluZSBVX0RFRl9JQ1VEQVRBX0VOVFJZX1BPSU5U
KG1ham9yLHN1ZmYpIGljdWR0ICMjbWFqb3IgIyNfZGF0CiMgMjAxICIvdXNyL2luY2x1ZGUvYXJt
LWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0eXBlcy5oIiAzIDQKdHlwZWRlZiBkb3VibGUgVURh
dGU7CgoKI2RlZmluZSBVX01JTExJU19QRVJfU0VDT05EICgxMDAwKQoKI2RlZmluZSBVX01JTExJ
U19QRVJfTUlOVVRFICg2MDAwMCkKCiNkZWZpbmUgVV9NSUxMSVNfUEVSX0hPVVIgKDM2MDAwMDAp
CgojZGVmaW5lIFVfTUlMTElTX1BFUl9EQVkgKDg2NDAwMDAwKQoKCgoKCiNkZWZpbmUgVV9EQVRF
X01BWCBEQkxfTUFYCgoKCgoKI2RlZmluZSBVX0RBVEVfTUlOIC1VX0RBVEVfTUFYCiMgMzU2ICIv
dXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0eXBlcy5oIiAzIDQKI2Rl
ZmluZSBVX0RBVEFfQVBJIFVfSU1QT1JUCiNkZWZpbmUgVV9DT01NT05fQVBJIFVfSU1QT1JUCiNk
ZWZpbmUgVV9JMThOX0FQSSBVX0lNUE9SVAojZGVmaW5lIFVfTEFZT1VUX0FQSSBVX0lNUE9SVAoj
ZGVmaW5lIFVfTEFZT1VURVhfQVBJIFVfSU1QT1JUCiNkZWZpbmUgVV9JT19BUEkgVV9JTVBPUlQK
I2RlZmluZSBVX1RPT0xVVElMX0FQSSBVX0lNUE9SVAojIDM3MSAiL3Vzci9pbmNsdWRlL2FybS1s
aW51eC1nbnVlYWJpaGYvdW5pY29kZS91dHlwZXMuaCIgMyA0CiNkZWZpbmUgVV9TVEFOREFSRF9D
UFBfTkFNRVNQQUNFIDo6CiMgNDc2ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91
bmljb2RlL3V0eXBlcy5oIiAzIDQKdHlwZWRlZiBlbnVtIFVFcnJvckNvZGUgewoKCgoKCiAgICBV
X1VTSU5HX0ZBTExCQUNLX1dBUk5JTkcgPSAtMTI4LAoKICAgIFVfRVJST1JfV0FSTklOR19TVEFS
VCA9IC0xMjgsCgogICAgVV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgPSAtMTI3LAoKICAgIFVfU0FG
RUNMT05FX0FMTE9DQVRFRF9XQVJOSU5HID0gLTEyNiwKCiAgICBVX1NUQVRFX09MRF9XQVJOSU5H
ID0gLTEyNSwKCiAgICBVX1NUUklOR19OT1RfVEVSTUlOQVRFRF9XQVJOSU5HID0gLTEyNCwKCiAg
ICBVX1NPUlRfS0VZX1RPT19TSE9SVF9XQVJOSU5HID0gLTEyMywKCiAgICBVX0FNQklHVU9VU19B
TElBU19XQVJOSU5HID0gLTEyMiwKCiAgICBVX0RJRkZFUkVOVF9VQ0FfVkVSU0lPTiA9IC0xMjEs
CgogICAgVV9QTFVHSU5fQ0hBTkdFRF9MRVZFTF9XQVJOSU5HID0gLTEyMCwKCiAgICBVX0VSUk9S
X1dBUk5JTkdfTElNSVQsCgoKICAgIFVfWkVST19FUlJPUiA9IDAsCgogICAgVV9JTExFR0FMX0FS
R1VNRU5UX0VSUk9SID0gMSwKICAgIFVfTUlTU0lOR19SRVNPVVJDRV9FUlJPUiA9IDIsCiAgICBV
X0lOVkFMSURfRk9STUFUX0VSUk9SID0gMywKICAgIFVfRklMRV9BQ0NFU1NfRVJST1IgPSA0LAog
ICAgVV9JTlRFUk5BTF9QUk9HUkFNX0VSUk9SID0gNSwKICAgIFVfTUVTU0FHRV9QQVJTRV9FUlJP
UiA9IDYsCiAgICBVX01FTU9SWV9BTExPQ0FUSU9OX0VSUk9SID0gNywKICAgIFVfSU5ERVhfT1VU
T0ZCT1VORFNfRVJST1IgPSA4LAogICAgVV9QQVJTRV9FUlJPUiA9IDksCiAgICBVX0lOVkFMSURf
Q0hBUl9GT1VORCA9IDEwLAogICAgVV9UUlVOQ0FURURfQ0hBUl9GT1VORCA9IDExLAogICAgVV9J
TExFR0FMX0NIQVJfRk9VTkQgPSAxMiwKICAgIFVfSU5WQUxJRF9UQUJMRV9GT1JNQVQgPSAxMywK
ICAgIFVfSU5WQUxJRF9UQUJMRV9GSUxFID0gMTQsCiAgICBVX0JVRkZFUl9PVkVSRkxPV19FUlJP
UiA9IDE1LAogICAgVV9VTlNVUFBPUlRFRF9FUlJPUiA9IDE2LAogICAgVV9SRVNPVVJDRV9UWVBF
X01JU01BVENIID0gMTcsCiAgICBVX0lMTEVHQUxfRVNDQVBFX1NFUVVFTkNFID0gMTgsCiAgICBV
X1VOU1VQUE9SVEVEX0VTQ0FQRV9TRVFVRU5DRSA9IDE5LAogICAgVV9OT19TUEFDRV9BVkFJTEFC
TEUgPSAyMCwKICAgIFVfQ0VfTk9UX0ZPVU5EX0VSUk9SID0gMjEsCiAgICBVX1BSSU1BUllfVE9P
X0xPTkdfRVJST1IgPSAyMiwKICAgIFVfU1RBVEVfVE9PX09MRF9FUlJPUiA9IDIzLAogICAgVV9U
T09fTUFOWV9BTElBU0VTX0VSUk9SID0gMjQsCgogICAgVV9FTlVNX09VVF9PRl9TWU5DX0VSUk9S
ID0gMjUsCiAgICBVX0lOVkFSSUFOVF9DT05WRVJTSU9OX0VSUk9SID0gMjYsCiAgICBVX0lOVkFM
SURfU1RBVEVfRVJST1IgPSAyNywKICAgIFVfQ09MTEFUT1JfVkVSU0lPTl9NSVNNQVRDSCA9IDI4
LAogICAgVV9VU0VMRVNTX0NPTExBVE9SX0VSUk9SID0gMjksCiAgICBVX05PX1dSSVRFX1BFUk1J
U1NJT04gPSAzMCwKCiAgICBVX1NUQU5EQVJEX0VSUk9SX0xJTUlULAoKCgogICAgVV9CQURfVkFS
SUFCTEVfREVGSU5JVElPTj0weDEwMDAwLAogICAgVV9QQVJTRV9FUlJPUl9TVEFSVCA9IDB4MTAw
MDAsCiAgICBVX01BTEZPUk1FRF9SVUxFLAogICAgVV9NQUxGT1JNRURfU0VULAogICAgVV9NQUxG
T1JNRURfU1lNQk9MX1JFRkVSRU5DRSwKICAgIFVfTUFMRk9STUVEX1VOSUNPREVfRVNDQVBFLAog
ICAgVV9NQUxGT1JNRURfVkFSSUFCTEVfREVGSU5JVElPTiwKICAgIFVfTUFMRk9STUVEX1ZBUklB
QkxFX1JFRkVSRU5DRSwKICAgIFVfTUlTTUFUQ0hFRF9TRUdNRU5UX0RFTElNSVRFUlMsCiAgICBV
X01JU1BMQUNFRF9BTkNIT1JfU1RBUlQsCiAgICBVX01JU1BMQUNFRF9DVVJTT1JfT0ZGU0VULAog
ICAgVV9NSVNQTEFDRURfUVVBTlRJRklFUiwKICAgIFVfTUlTU0lOR19PUEVSQVRPUiwKICAgIFVf
TUlTU0lOR19TRUdNRU5UX0NMT1NFLAogICAgVV9NVUxUSVBMRV9BTlRFX0NPTlRFWFRTLAogICAg
VV9NVUxUSVBMRV9DVVJTT1JTLAogICAgVV9NVUxUSVBMRV9QT1NUX0NPTlRFWFRTLAogICAgVV9U
UkFJTElOR19CQUNLU0xBU0gsCiAgICBVX1VOREVGSU5FRF9TRUdNRU5UX1JFRkVSRU5DRSwKICAg
IFVfVU5ERUZJTkVEX1ZBUklBQkxFLAogICAgVV9VTlFVT1RFRF9TUEVDSUFMLAogICAgVV9VTlRF
Uk1JTkFURURfUVVPVEUsCiAgICBVX1JVTEVfTUFTS19FUlJPUiwKICAgIFVfTUlTUExBQ0VEX0NP
TVBPVU5EX0ZJTFRFUiwKICAgIFVfTVVMVElQTEVfQ09NUE9VTkRfRklMVEVSUywKICAgIFVfSU5W
QUxJRF9SQlRfU1lOVEFYLAogICAgVV9JTlZBTElEX1BST1BFUlRZX1BBVFRFUk4sCiAgICBVX01B
TEZPUk1FRF9QUkFHTUEsCiAgICBVX1VOQ0xPU0VEX1NFR01FTlQsCiAgICBVX0lMTEVHQUxfQ0hB
Ul9JTl9TRUdNRU5ULAogICAgVV9WQVJJQUJMRV9SQU5HRV9FWEhBVVNURUQsCiAgICBVX1ZBUklB
QkxFX1JBTkdFX09WRVJMQVAsCiAgICBVX0lMTEVHQUxfQ0hBUkFDVEVSLAogICAgVV9JTlRFUk5B
TF9UUkFOU0xJVEVSQVRPUl9FUlJPUiwKICAgIFVfSU5WQUxJRF9JRCwKICAgIFVfSU5WQUxJRF9G
VU5DVElPTiwKICAgIFVfUEFSU0VfRVJST1JfTElNSVQsCgoKCgogICAgVV9VTkVYUEVDVEVEX1RP
S0VOPTB4MTAxMDAsCiAgICBVX0ZNVF9QQVJTRV9FUlJPUl9TVEFSVD0weDEwMTAwLAogICAgVV9N
VUxUSVBMRV9ERUNJTUFMX1NFUEFSQVRPUlMsCiAgICBVX01VTFRJUExFX0RFQ0lNQUxfU0VQRVJB
VE9SUyA9IFVfTVVMVElQTEVfREVDSU1BTF9TRVBBUkFUT1JTLAogICAgVV9NVUxUSVBMRV9FWFBP
TkVOVElBTF9TWU1CT0xTLAogICAgVV9NQUxGT1JNRURfRVhQT05FTlRJQUxfUEFUVEVSTiwKICAg
IFVfTVVMVElQTEVfUEVSQ0VOVF9TWU1CT0xTLAogICAgVV9NVUxUSVBMRV9QRVJNSUxMX1NZTUJP
TFMsCiAgICBVX01VTFRJUExFX1BBRF9TUEVDSUZJRVJTLAogICAgVV9QQVRURVJOX1NZTlRBWF9F
UlJPUiwKICAgIFVfSUxMRUdBTF9QQURfUE9TSVRJT04sCiAgICBVX1VOTUFUQ0hFRF9CUkFDRVMs
CiAgICBVX1VOU1VQUE9SVEVEX1BST1BFUlRZLAogICAgVV9VTlNVUFBPUlRFRF9BVFRSSUJVVEUs
CiAgICBVX0FSR1VNRU5UX1RZUEVfTUlTTUFUQ0gsCiAgICBVX0RVUExJQ0FURV9LRVlXT1JELAog
ICAgVV9VTkRFRklORURfS0VZV09SRCwKICAgIFVfREVGQVVMVF9LRVlXT1JEX01JU1NJTkcsCiAg
ICBVX0RFQ0lNQUxfTlVNQkVSX1NZTlRBWF9FUlJPUiwKICAgIFVfRk9STUFUX0lORVhBQ1RfRVJS
T1IsCiAgICBVX0ZNVF9QQVJTRV9FUlJPUl9MSU1JVCwKCgoKCiAgICBVX0JSS19JTlRFUk5BTF9F
UlJPUj0weDEwMjAwLAogICAgVV9CUktfRVJST1JfU1RBUlQ9MHgxMDIwMCwKICAgIFVfQlJLX0hF
WF9ESUdJVFNfRVhQRUNURUQsCiAgICBVX0JSS19TRU1JQ09MT05fRVhQRUNURUQsCiAgICBVX0JS
S19SVUxFX1NZTlRBWCwKICAgIFVfQlJLX1VOQ0xPU0VEX1NFVCwKICAgIFVfQlJLX0FTU0lHTl9F
UlJPUiwKICAgIFVfQlJLX1ZBUklBQkxFX1JFREZJTklUSU9OLAogICAgVV9CUktfTUlTTUFUQ0hF
RF9QQVJFTiwKICAgIFVfQlJLX05FV19MSU5FX0lOX1FVT1RFRF9TVFJJTkcsCiAgICBVX0JSS19V
TkRFRklORURfVkFSSUFCTEUsCiAgICBVX0JSS19JTklUX0VSUk9SLAogICAgVV9CUktfUlVMRV9F
TVBUWV9TRVQsCiAgICBVX0JSS19VTlJFQ09HTklaRURfT1BUSU9OLAogICAgVV9CUktfTUFMRk9S
TUVEX1JVTEVfVEFHLAogICAgVV9CUktfRVJST1JfTElNSVQsCgoKCgogICAgVV9SRUdFWF9JTlRF
Uk5BTF9FUlJPUj0weDEwMzAwLAogICAgVV9SRUdFWF9FUlJPUl9TVEFSVD0weDEwMzAwLAogICAg
VV9SRUdFWF9SVUxFX1NZTlRBWCwKICAgIFVfUkVHRVhfSU5WQUxJRF9TVEFURSwKICAgIFVfUkVH
RVhfQkFEX0VTQ0FQRV9TRVFVRU5DRSwKICAgIFVfUkVHRVhfUFJPUEVSVFlfU1lOVEFYLAogICAg
VV9SRUdFWF9VTklNUExFTUVOVEVELAogICAgVV9SRUdFWF9NSVNNQVRDSEVEX1BBUkVOLAogICAg
VV9SRUdFWF9OVU1CRVJfVE9PX0JJRywKICAgIFVfUkVHRVhfQkFEX0lOVEVSVkFMLAogICAgVV9S
RUdFWF9NQVhfTFRfTUlOLAogICAgVV9SRUdFWF9JTlZBTElEX0JBQ0tfUkVGLAogICAgVV9SRUdF
WF9JTlZBTElEX0ZMQUcsCiAgICBVX1JFR0VYX0xPT0tfQkVISU5EX0xJTUlULAogICAgVV9SRUdF
WF9TRVRfQ09OVEFJTlNfU1RSSU5HLAogICAgVV9SRUdFWF9PQ1RBTF9UT09fQklHLAogICAgVV9S
RUdFWF9NSVNTSU5HX0NMT1NFX0JSQUNLRVQsCiAgICBVX1JFR0VYX0lOVkFMSURfUkFOR0UsCiAg
ICBVX1JFR0VYX1NUQUNLX09WRVJGTE9XLAogICAgVV9SRUdFWF9USU1FX09VVCwKICAgIFVfUkVH
RVhfU1RPUFBFRF9CWV9DQUxMRVIsCiAgICBVX1JFR0VYX1BBVFRFUk5fVE9PX0JJRywKICAgIFVf
UkVHRVhfRVJST1JfTElNSVQsCgoKCgogICAgVV9JRE5BX1BST0hJQklURURfRVJST1I9MHgxMDQw
MCwKICAgIFVfSUROQV9FUlJPUl9TVEFSVD0weDEwNDAwLAogICAgVV9JRE5BX1VOQVNTSUdORURf
RVJST1IsCiAgICBVX0lETkFfQ0hFQ0tfQklESV9FUlJPUiwKICAgIFVfSUROQV9TVEQzX0FTQ0lJ
X1JVTEVTX0VSUk9SLAogICAgVV9JRE5BX0FDRV9QUkVGSVhfRVJST1IsCiAgICBVX0lETkFfVkVS
SUZJQ0FUSU9OX0VSUk9SLAogICAgVV9JRE5BX0xBQkVMX1RPT19MT05HX0VSUk9SLAogICAgVV9J
RE5BX1pFUk9fTEVOR1RIX0xBQkVMX0VSUk9SLAogICAgVV9JRE5BX0RPTUFJTl9OQU1FX1RPT19M
T05HX0VSUk9SLAogICAgVV9JRE5BX0VSUk9SX0xJTUlULAoKCgogICAgVV9TVFJJTkdQUkVQX1BS
T0hJQklURURfRVJST1IgPSBVX0lETkFfUFJPSElCSVRFRF9FUlJPUiwKICAgIFVfU1RSSU5HUFJF
UF9VTkFTU0lHTkVEX0VSUk9SID0gVV9JRE5BX1VOQVNTSUdORURfRVJST1IsCiAgICBVX1NUUklO
R1BSRVBfQ0hFQ0tfQklESV9FUlJPUiA9IFVfSUROQV9DSEVDS19CSURJX0VSUk9SLAoKCgoKICAg
IFVfUExVR0lOX0VSUk9SX1NUQVJUPTB4MTA1MDAsCiAgICBVX1BMVUdJTl9UT09fSElHSD0weDEw
NTAwLAogICAgVV9QTFVHSU5fRElETlRfU0VUX0xFVkVMLAogICAgVV9QTFVHSU5fRVJST1JfTElN
SVQsCgogICAgVV9FUlJPUl9MSU1JVD1VX1BMVUdJTl9FUlJPUl9MSU1JVAp9IFVFcnJvckNvZGU7
CiMgNjkzICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3V0eXBlcy5o
IiAzIDQKICAgIHN0YXRpYwogICAgaW5saW5lIFVCb29sIFVfU1VDQ0VTUyhVRXJyb3JDb2RlIGNv
ZGUpIHsgcmV0dXJuIChVQm9vbCkoY29kZTw9VV9aRVJPX0VSUk9SKTsgfQoKCgoKICAgIHN0YXRp
YwogICAgaW5saW5lIFVCb29sIFVfRkFJTFVSRShVRXJyb3JDb2RlIGNvZGUpIHsgcmV0dXJuIChV
Qm9vbCkoY29kZT5VX1pFUk9fRVJST1IpOyB9CiMgNzIwICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4
LWdudWVhYmloZi91bmljb2RlL3V0eXBlcy5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBjb25zdCBjaGFyICoKdV9lcnJvck5hbWVfNTIoVUVy
cm9yQ29kZSBjb2RlKTsKIyAyNyAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUZhc3RQ
YXRoLmgiIDIKCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4dC9MQ2hhci5oIiAxCiMgMjgg
Ii4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQvTENoYXIuaCIKI2RlZmluZSBMQ2hhcl9oIAoKCgoK
dHlwZWRlZiB1bnNpZ25lZCBjaGFyIExDaGFyOwojIDI5ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0FTQ0lJRmFzdFBhdGguaCIgMgoKCgoKCm5hbWVzcGFjZSBXVEYgewoKdGVtcGxhdGUgPHVp
bnRwdHJfdCBtYXNrPgppbmxpbmUgYm9vbCBpc0FsaWduZWRUbyhjb25zdCB2b2lkKiBwb2ludGVy
KQp7CiAgICByZXR1cm4gIShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocG9pbnRlcikgJiBt
YXNrKTsKfQoKCgp0eXBlZGVmIHVpbnRwdHJfdCBNYWNoaW5lV29yZDsKY29uc3QgdWludHB0cl90
IG1hY2hpbmVXb3JkQWxpZ25tZW50TWFzayA9IHNpemVvZihNYWNoaW5lV29yZCkgLSAxOwoKaW5s
aW5lIGJvb2wgaXNBbGlnbmVkVG9NYWNoaW5lV29yZChjb25zdCB2b2lkKiBwb2ludGVyKQp7CiAg
ICByZXR1cm4gaXNBbGlnbmVkVG88bWFjaGluZVdvcmRBbGlnbm1lbnRNYXNrPihwb2ludGVyKTsK
fQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIGFsaWduVG9NYWNoaW5lV29yZChUKiBw
b2ludGVyKQp7CiAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4ocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KHBvaW50ZXIpICYgfm1hY2hpbmVXb3JkQWxpZ25tZW50TWFzayk7Cn0KCnRl
bXBsYXRlPHNpemVfdCBzaXplLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdHJ1Y3QgTm9uQVND
SUlNYXNrOwp0ZW1wbGF0ZTw+IHN0cnVjdCBOb25BU0NJSU1hc2s8NCwgVUNoYXI+IHsKICAgIHN0
YXRpYyBpbmxpbmUgdWludDMyX3QgdmFsdWUoKSB7IHJldHVybiAweEZGODBGRjgwVTsgfQp9Owp0
ZW1wbGF0ZTw+IHN0cnVjdCBOb25BU0NJSU1hc2s8NCwgTENoYXI+IHsKICAgIHN0YXRpYyBpbmxp
bmUgdWludDMyX3QgdmFsdWUoKSB7IHJldHVybiAweDgwODA4MDgwVTsgfQp9Owp0ZW1wbGF0ZTw+
IHN0cnVjdCBOb25BU0NJSU1hc2s8OCwgVUNoYXI+IHsKICAgIHN0YXRpYyBpbmxpbmUgdWludDY0
X3QgdmFsdWUoKSB7IHJldHVybiAweEZGODBGRjgwRkY4MEZGODBVTEw7IH0KfTsKdGVtcGxhdGU8
PiBzdHJ1Y3QgTm9uQVNDSUlNYXNrPDgsIExDaGFyPiB7CiAgICBzdGF0aWMgaW5saW5lIHVpbnQ2
NF90IHZhbHVlKCkgeyByZXR1cm4gMHg4MDgwODA4MDgwODA4MDgwVUxMOyB9Cn07CgoKdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KaW5saW5lIGJvb2wgaXNBbGxBU0NJSShNYWNoaW5l
V29yZCB3b3JkKQp7CiAgICByZXR1cm4gISh3b3JkICYgTm9uQVNDSUlNYXNrPHNpemVvZihNYWNo
aW5lV29yZCksIENoYXJhY3RlclR5cGU+Ojp2YWx1ZSgpKTsKfQoKCgp0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgppbmxpbmUgYm9vbCBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY29uc3Qg
Q2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKewogICAgTWFjaGluZVdv
cmQgYWxsQ2hhckJpdHMgPSAwOwogICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kID0gY2hhcmFj
dGVycyArIGxlbmd0aDsKCgogICAgd2hpbGUgKCFpc0FsaWduZWRUb01hY2hpbmVXb3JkKGNoYXJh
Y3RlcnMpICYmIGNoYXJhY3RlcnMgIT0gZW5kKSB7CiAgICAgICAgYWxsQ2hhckJpdHMgfD0gKmNo
YXJhY3RlcnM7CiAgICAgICAgKytjaGFyYWN0ZXJzOwogICAgfQoKCiAgICBjb25zdCBDaGFyYWN0
ZXJUeXBlKiB3b3JkRW5kID0gYWxpZ25Ub01hY2hpbmVXb3JkKGVuZCk7CiAgICBjb25zdCBzaXpl
X3QgbG9vcEluY3JlbWVudCA9IHNpemVvZihNYWNoaW5lV29yZCkgLyBzaXplb2YoQ2hhcmFjdGVy
VHlwZSk7CiAgICB3aGlsZSAoY2hhcmFjdGVycyA8IHdvcmRFbmQpIHsKICAgICAgICBhbGxDaGFy
Qml0cyB8PSAqKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IE1hY2hpbmVXb3JkKj4oY2hhcmFj
dGVycykpOwogICAgICAgIGNoYXJhY3RlcnMgKz0gbG9vcEluY3JlbWVudDsKICAgIH0KCgogICAg
d2hpbGUgKGNoYXJhY3RlcnMgIT0gZW5kKSB7CiAgICAgICAgYWxsQ2hhckJpdHMgfD0gKmNoYXJh
Y3RlcnM7CiAgICAgICAgKytjaGFyYWN0ZXJzOwogICAgfQoKICAgIE1hY2hpbmVXb3JkIG5vbkFT
Q0lJQml0TWFzayA9IE5vbkFTQ0lJTWFzazxzaXplb2YoTWFjaGluZVdvcmQpLCBDaGFyYWN0ZXJU
eXBlPjo6dmFsdWUoKTsKICAgIHJldHVybiAhKGFsbENoYXJCaXRzICYgbm9uQVNDSUlCaXRNYXNr
KTsKfQoKaW5saW5lIHZvaWQgY29weUxDaGFyc0Zyb21VQ2hhclNvdXJjZShMQ2hhciogZGVzdGlu
YXRpb24sIGNvbnN0IFVDaGFyKiBzb3VyY2UsIHNpemVfdCBsZW5ndGgpCnsKIyAxNjQgIi4uLy4u
L1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlGYXN0UGF0aC5oIgogICAgY29uc3QgTENoYXIqIGNv
bnN0IGVuZCA9IGRlc3RpbmF0aW9uICsgbGVuZ3RoOwogICAgY29uc3QgdWludHB0cl90IG1lbW9y
eUFjY2Vzc1NpemUgPSA4OwoKICAgIGlmIChsZW5ndGggPj0gKDIgKiBtZW1vcnlBY2Nlc3NTaXpl
KSAtIDEpIHsKCiAgICAgICAgY29uc3QgdWludHB0cl90IG1lbW9yeUFjY2Vzc01hc2sgPSBtZW1v
cnlBY2Nlc3NTaXplIC0gMTsKICAgICAgICB3aGlsZSAoIWlzQWxpZ25lZFRvPG1lbW9yeUFjY2Vz
c01hc2s+KGRlc3RpbmF0aW9uKSkKICAgICAgICAgICAgKmRlc3RpbmF0aW9uKysgPSBzdGF0aWNf
Y2FzdDxMQ2hhcj4oKnNvdXJjZSsrKTsKCgogICAgICAgIGNvbnN0IHVpbnRwdHJfdCBsZW5ndGhM
ZWZ0ID0gZW5kIC0gZGVzdGluYXRpb247CiAgICAgICAgY29uc3QgTENoYXIqIGNvbnN0IHNpbWRF
bmQgPSBlbmQgLSAobGVuZ3RoTGVmdCAlIG1lbW9yeUFjY2Vzc1NpemUpOwogICAgICAgIGRvIHsK
ICAgICAgICAgICAgYXNtKCJ2bGQyLjggICB7IGQwLWQxIH0sIFslW1NPVVJDRV1dICFcblx0Igog
ICAgICAgICAgICAgICAgInZzdDEuOCAgIHsgZDAgfSwgWyVbREVTVElOQVRJT05dLDo2NF0gIVxu
XHQiCiAgICAgICAgICAgICAgICA6IFtTT1VSQ0VdIityIiAoc291cmNlKSwgW0RFU1RJTkFUSU9O
XSIrciIgKGRlc3RpbmF0aW9uKQogICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgOiAi
bWVtb3J5IiwgImQwIiwgImQxIik7CiAgICAgICAgfSB3aGlsZSAoZGVzdGluYXRpb24gIT0gc2lt
ZEVuZCk7CiAgICB9CgogICAgd2hpbGUgKGRlc3RpbmF0aW9uICE9IGVuZCkKICAgICAgICAqZGVz
dGluYXRpb24rKyA9IHN0YXRpY19jYXN0PExDaGFyPigqc291cmNlKyspOwoKCgoKCgp9Cgp9CiMg
MjkgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgiIDIKIyAxICIuLi8uLi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCIgMQojIDI0ICIuLi8uLi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCIKI2RlZmluZSBTdHJpbmdJbXBsX2ggCgojIDEgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlLWZp
eGVkL2xpbWl0cy5oIiAxIDMgNAojIDMwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS1maXhlZC9saW1pdHMuaCIgMyA0CiNkZWZpbmUg
X0dDQ19MSU1JVFNfSF8gCgoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUtZml4ZWQvc3lzbGltaXRzLmgiIDEgMyA0CgoKCgoK
I2RlZmluZSBfR0NDX05FWFRfTElNSVRTX0ggCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUtZml4ZWQvbGltaXRzLmgiIDEgMyA0
CiMgMTY4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45
LjMvaW5jbHVkZS1maXhlZC9saW1pdHMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5o
IiAxIDMgNAojIDIzICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDMgNAojZGVmaW5lIF9MSUJDX0xJ
TUlUU19IXyAxCgoKCgoKCgojZGVmaW5lIE1CX0xFTl9NQVggMTYKIyAxMzEgIi91c3IvaW5jbHVk
ZS9saW1pdHMuaCIgMyA0CiNkZWZpbmUgTExPTkdfTUlOICgtTExPTkdfTUFYLTEpCgoKI2RlZmlu
ZSBMTE9OR19NQVggX19MT05HX0xPTkdfTUFYX18KCgojZGVmaW5lIFVMTE9OR19NQVggKExMT05H
X01BWCAqIDJVTEwgKyAxKQoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJp
aGYvYml0cy9wb3NpeDFfbGltLmgiIDEgMyA0CiMgMjUgIi91c3IvaW5jbHVkZS9hcm0tbGludXgt
Z251ZWFiaWhmL2JpdHMvcG9zaXgxX2xpbS5oIiAzIDQKI2RlZmluZSBfQklUU19QT1NJWDFfTElN
X0ggMQoKCgoKCiNkZWZpbmUgX1BPU0lYX0FJT19MSVNUSU9fTUFYIDIKCgojZGVmaW5lIF9QT1NJ
WF9BSU9fTUFYIDEKCgojZGVmaW5lIF9QT1NJWF9BUkdfTUFYIDQwOTYKCgoKI2RlZmluZSBfUE9T
SVhfQ0hJTERfTUFYIDI1CgoKCgoKI2RlZmluZSBfUE9TSVhfREVMQVlUSU1FUl9NQVggMzIKCgoK
I2RlZmluZSBfUE9TSVhfSE9TVF9OQU1FX01BWCAyNTUKCgojZGVmaW5lIF9QT1NJWF9MSU5LX01B
WCA4CgoKI2RlZmluZSBfUE9TSVhfTE9HSU5fTkFNRV9NQVggOQoKCiNkZWZpbmUgX1BPU0lYX01B
WF9DQU5PTiAyNTUKCgoKI2RlZmluZSBfUE9TSVhfTUFYX0lOUFVUIDI1NQoKCiNkZWZpbmUgX1BP
U0lYX01RX09QRU5fTUFYIDgKCgojZGVmaW5lIF9QT1NJWF9NUV9QUklPX01BWCAzMgoKCiNkZWZp
bmUgX1BPU0lYX05BTUVfTUFYIDE0CgoKCiNkZWZpbmUgX1BPU0lYX05HUk9VUFNfTUFYIDgKCgoK
CgoKI2RlZmluZSBfUE9TSVhfT1BFTl9NQVggMjAKCgoKCgoKCiNkZWZpbmUgX1BPU0lYX0ZEX1NF
VFNJWkUgX1BPU0lYX09QRU5fTUFYCgoKCiNkZWZpbmUgX1BPU0lYX1BBVEhfTUFYIDI1NgoKCiNk
ZWZpbmUgX1BPU0lYX1BJUEVfQlVGIDUxMgoKCgojZGVmaW5lIF9QT1NJWF9SRV9EVVBfTUFYIDI1
NQoKCiNkZWZpbmUgX1BPU0lYX1JUU0lHX01BWCA4CgoKI2RlZmluZSBfUE9TSVhfU0VNX05TRU1T
X01BWCAyNTYKCgojZGVmaW5lIF9QT1NJWF9TRU1fVkFMVUVfTUFYIDMyNzY3CgoKI2RlZmluZSBf
UE9TSVhfU0lHUVVFVUVfTUFYIDMyCgoKI2RlZmluZSBfUE9TSVhfU1NJWkVfTUFYIDMyNzY3CgoK
I2RlZmluZSBfUE9TSVhfU1RSRUFNX01BWCA4CgoKI2RlZmluZSBfUE9TSVhfU1lNTElOS19NQVgg
MjU1CgoKCiNkZWZpbmUgX1BPU0lYX1NZTUxPT1BfTUFYIDgKCgojZGVmaW5lIF9QT1NJWF9USU1F
Ul9NQVggMzIKCgojZGVmaW5lIF9QT1NJWF9UVFlfTkFNRV9NQVggOQoKCgojZGVmaW5lIF9QT1NJ
WF9UWk5BTUVfTUFYIDYKCgoKCgoKI2RlZmluZSBfUE9TSVhfUUxJTUlUIDEKCgoKI2RlZmluZSBf
UE9TSVhfSElXQVQgX1BPU0lYX1BJUEVfQlVGCgoKI2RlZmluZSBfUE9TSVhfVUlPX01BWElPViAx
NgoKCgojZGVmaW5lIF9QT1NJWF9DTE9DS1JFU19NSU4gMjAwMDAwMDAKCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL2xvY2FsX2xpbS5oIiAxIDMgNAojIDI1ICIv
dXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL2xvY2FsX2xpbS5oIiAzIDQKI2Rl
ZmluZSBfX3VuZGVmX05SX09QRU4gCgoKI2RlZmluZSBfX3VuZGVmX0xJTktfTUFYIAoKCiNkZWZp
bmUgX191bmRlZl9PUEVOX01BWCAKCgojZGVmaW5lIF9fdW5kZWZfQVJHX01BWCAKCgoKIyAxICIv
dXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDEgMyA0CgojZGVmaW5lIF9MSU5VWF9MSU1JVFNf
SCAKCiNkZWZpbmUgTlJfT1BFTiAxMDI0CgojZGVmaW5lIE5HUk9VUFNfTUFYIDY1NTM2CiNkZWZp
bmUgQVJHX01BWCAxMzEwNzIKI2RlZmluZSBMSU5LX01BWCAxMjcKI2RlZmluZSBNQVhfQ0FOT04g
MjU1CiNkZWZpbmUgTUFYX0lOUFVUIDI1NQojZGVmaW5lIE5BTUVfTUFYIDI1NQojZGVmaW5lIFBB
VEhfTUFYIDQwOTYKI2RlZmluZSBQSVBFX0JVRiA0MDk2CiNkZWZpbmUgWEFUVFJfTkFNRV9NQVgg
MjU1CiNkZWZpbmUgWEFUVFJfU0laRV9NQVggNjU1MzYKI2RlZmluZSBYQVRUUl9MSVNUX01BWCA2
NTUzNgoKI2RlZmluZSBSVFNJR19NQVggMzIKIyAzOSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvYml0cy9sb2NhbF9saW0uaCIgMiAzIDQKCgoKI3VuZGVmIE5SX09QRU4KI3VuZGVm
IF9fdW5kZWZfTlJfT1BFTgoKCgojdW5kZWYgTElOS19NQVgKI3VuZGVmIF9fdW5kZWZfTElOS19N
QVgKCgoKI3VuZGVmIE9QRU5fTUFYCiN1bmRlZiBfX3VuZGVmX09QRU5fTUFYCgoKCiN1bmRlZiBB
UkdfTUFYCiN1bmRlZiBfX3VuZGVmX0FSR19NQVgKCgoKI2RlZmluZSBfUE9TSVhfVEhSRUFEX0tF
WVNfTUFYIDEyOAoKI2RlZmluZSBQVEhSRUFEX0tFWVNfTUFYIDEwMjQKCgojZGVmaW5lIF9QT1NJ
WF9USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TIDQKCiNkZWZpbmUgUFRIUkVBRF9ERVNUUlVD
VE9SX0lURVJBVElPTlMgX1BPU0lYX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMKCgojZGVm
aW5lIF9QT1NJWF9USFJFQURfVEhSRUFEU19NQVggNjQKCiN1bmRlZiBQVEhSRUFEX1RIUkVBRFNf
TUFYCgoKCiNkZWZpbmUgQUlPX1BSSU9fREVMVEFfTUFYIDIwCgoKI2RlZmluZSBQVEhSRUFEX1NU
QUNLX01JTiAxNjM4NAoKCiNkZWZpbmUgREVMQVlUSU1FUl9NQVggMjE0NzQ4MzY0NwoKCiNkZWZp
bmUgVFRZX05BTUVfTUFYIDMyCgoKI2RlZmluZSBMT0dJTl9OQU1FX01BWCAyNTYKCgojZGVmaW5l
IEhPU1RfTkFNRV9NQVggNjQKCgojZGVmaW5lIE1RX1BSSU9fTUFYIDMyNzY4CgoKI2RlZmluZSBT
RU1fVkFMVUVfTUFYICgyMTQ3NDgzNjQ3KQojIDE2MSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvYml0cy9wb3NpeDFfbGltLmgiIDIgMyA0CgoKCiNkZWZpbmUgU1NJWkVfTUFYIExP
TkdfTUFYCiMgMTQ0ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CgoKCiMgMSAiL3Vzci9p
bmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9wb3NpeDJfbGltLmgiIDEgMyA0CiMgMjMg
Ii91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvcG9zaXgyX2xpbS5oIiAzIDQK
I2RlZmluZSBfQklUU19QT1NJWDJfTElNX0ggMQoKCgojZGVmaW5lIF9QT1NJWDJfQkNfQkFTRV9N
QVggOTkKCgojZGVmaW5lIF9QT1NJWDJfQkNfRElNX01BWCAyMDQ4CgoKI2RlZmluZSBfUE9TSVgy
X0JDX1NDQUxFX01BWCA5OQoKCiNkZWZpbmUgX1BPU0lYMl9CQ19TVFJJTkdfTUFYIDEwMDAKCgoK
I2RlZmluZSBfUE9TSVgyX0NPTExfV0VJR0hUU19NQVggMgoKCgojZGVmaW5lIF9QT1NJWDJfRVhQ
Ul9ORVNUX01BWCAzMgoKCiNkZWZpbmUgX1BPU0lYMl9MSU5FX01BWCAyMDQ4CgoKCiNkZWZpbmUg
X1BPU0lYMl9SRV9EVVBfTUFYIDI1NQoKCgojZGVmaW5lIF9QT1NJWDJfQ0hBUkNMQVNTX05BTUVf
TUFYIDE0CgoKCgoKCgojZGVmaW5lIEJDX0JBU0VfTUFYIF9QT1NJWDJfQkNfQkFTRV9NQVgKCgoj
ZGVmaW5lIEJDX0RJTV9NQVggX1BPU0lYMl9CQ19ESU1fTUFYCgoKI2RlZmluZSBCQ19TQ0FMRV9N
QVggX1BPU0lYMl9CQ19TQ0FMRV9NQVgKCgojZGVmaW5lIEJDX1NUUklOR19NQVggX1BPU0lYMl9C
Q19TVFJJTkdfTUFYCgoKI2RlZmluZSBDT0xMX1dFSUdIVFNfTUFYIDI1NQoKCiNkZWZpbmUgRVhQ
Ul9ORVNUX01BWCBfUE9TSVgyX0VYUFJfTkVTVF9NQVgKCgojZGVmaW5lIExJTkVfTUFYIF9QT1NJ
WDJfTElORV9NQVgKCgojZGVmaW5lIENIQVJDTEFTU19OQU1FX01BWCAyMDQ4CgoKCiNkZWZpbmUg
UkVfRFVQX01BWCAoMHg3ZmZmKQojIDE0OCAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMgNAoK
CgojIDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMveG9wZW5fbGltLmgi
IDEgMyA0CiMgMzAgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMveG9wZW5f
bGltLmgiIDMgNAojZGVmaW5lIF9YT1BFTl9MSU1fSCAxCgojZGVmaW5lIF9fbmVlZF9JT1ZfTUFY
IAojIDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc3RkaW9fbGltLmgi
IDEgMyA0CiMgMjMgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc3RkaW9f
bGltLmgiIDMgNAojZGVmaW5lIExfdG1wbmFtIDIwCiNkZWZpbmUgVE1QX01BWCAyMzgzMjgKI2Rl
ZmluZSBGSUxFTkFNRV9NQVggNDA5NgoKCiNkZWZpbmUgTF9jdGVybWlkIDkKCiNkZWZpbmUgTF9j
dXNlcmlkIDkKCgoKCgojdW5kZWYgRk9QRU5fTUFYCiNkZWZpbmUgRk9QRU5fTUFYIDE2CgoKCiNk
ZWZpbmUgSU9WX01BWCAxMDI0CiMgMzQgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L2JpdHMveG9wZW5fbGltLmgiIDIgMyA0CiMgNjUgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251
ZWFiaWhmL2JpdHMveG9wZW5fbGltLmgiIDMgNAojZGVmaW5lIF9YT1BFTl9JT1ZfTUFYIF9QT1NJ
WF9VSU9fTUFYSU9WCgoKCgojZGVmaW5lIE5MX0FSR01BWCBfUE9TSVhfQVJHX01BWAoKCiNkZWZp
bmUgTkxfTEFOR01BWCBfUE9TSVgyX0xJTkVfTUFYCgoKI2RlZmluZSBOTF9NU0dNQVggSU5UX01B
WAoKCgojZGVmaW5lIE5MX05NQVggSU5UX01BWAoKCiNkZWZpbmUgTkxfU0VUTUFYIElOVF9NQVgK
CgojZGVmaW5lIE5MX1RFWFRNQVggSU5UX01BWAoKCiNkZWZpbmUgTlpFUk8gMjAKIyAxMDkgIi91
c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMveG9wZW5fbGltLmgiIDMgNAojZGVm
aW5lIFdPUkRfQklUIDMyCiMgMTI5ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9i
aXRzL3hvcGVuX2xpbS5oIiAzIDQKI2RlZmluZSBMT05HX0JJVCAzMgojIDE1MiAiL3Vzci9pbmNs
dWRlL2xpbWl0cy5oIiAyIDMgNAojIDE2OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1ZGUtZml4ZWQvbGltaXRzLmgiIDIgMyA0CiMgOCAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4zL2luY2x1
ZGUtZml4ZWQvc3lzbGltaXRzLmgiIDIgMyA0CiN1bmRlZiBfR0NDX05FWFRfTElNSVRTX0gKIyAz
NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOS4zL2lu
Y2x1ZGUtZml4ZWQvbGltaXRzLmgiIDIgMyA0CiMgNjAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlLWZpeGVkL2xpbWl0cy5oIiAzIDQK
I2RlZmluZSBfTElNSVRTX0hfX18gCgoKI3VuZGVmIENIQVJfQklUCiNkZWZpbmUgQ0hBUl9CSVQg
X19DSEFSX0JJVF9fCgoKCgoKCgojdW5kZWYgU0NIQVJfTUlOCiNkZWZpbmUgU0NIQVJfTUlOICgt
U0NIQVJfTUFYIC0gMSkKI3VuZGVmIFNDSEFSX01BWAojZGVmaW5lIFNDSEFSX01BWCBfX1NDSEFS
X01BWF9fCgoKI3VuZGVmIFVDSEFSX01BWAoKCgojZGVmaW5lIFVDSEFSX01BWCAoU0NIQVJfTUFY
ICogMiArIDEpCgoKCgojdW5kZWYgQ0hBUl9NSU4KCgoKI2RlZmluZSBDSEFSX01JTiAwCgojdW5k
ZWYgQ0hBUl9NQVgKI2RlZmluZSBDSEFSX01BWCBVQ0hBUl9NQVgKIyAxMDMgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlLWZpeGVkL2xp
bWl0cy5oIiAzIDQKI3VuZGVmIFNIUlRfTUlOCiNkZWZpbmUgU0hSVF9NSU4gKC1TSFJUX01BWCAt
IDEpCiN1bmRlZiBTSFJUX01BWAojZGVmaW5lIFNIUlRfTUFYIF9fU0hSVF9NQVhfXwoKCiN1bmRl
ZiBVU0hSVF9NQVgKCgoKI2RlZmluZSBVU0hSVF9NQVggKFNIUlRfTUFYICogMiArIDEpCgoKCiN1
bmRlZiBJTlRfTUlOCiNkZWZpbmUgSU5UX01JTiAoLUlOVF9NQVggLSAxKQojdW5kZWYgSU5UX01B
WAojZGVmaW5lIElOVF9NQVggX19JTlRfTUFYX18KCgojdW5kZWYgVUlOVF9NQVgKI2RlZmluZSBV
SU5UX01BWCAoSU5UX01BWCAqIDJVICsgMVUpCgoKCiN1bmRlZiBMT05HX01JTgojZGVmaW5lIExP
TkdfTUlOICgtTE9OR19NQVggLSAxTCkKI3VuZGVmIExPTkdfTUFYCiNkZWZpbmUgTE9OR19NQVgg
X19MT05HX01BWF9fCgoKI3VuZGVmIFVMT05HX01BWAojZGVmaW5lIFVMT05HX01BWCAoTE9OR19N
QVggKiAyVUwgKyAxVUwpCiMgMTUxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvNC45LjMvaW5jbHVkZS1maXhlZC9saW1pdHMuaCIgMyA0CiN1bmRlZiBMT05H
X0xPTkdfTUlOCiNkZWZpbmUgTE9OR19MT05HX01JTiAoLUxPTkdfTE9OR19NQVggLSAxTEwpCiN1
bmRlZiBMT05HX0xPTkdfTUFYCiNkZWZpbmUgTE9OR19MT05HX01BWCBfX0xPTkdfTE9OR19NQVhf
XwoKCiN1bmRlZiBVTE9OR19MT05HX01BWAojZGVmaW5lIFVMT05HX0xPTkdfTUFYIChMT05HX0xP
TkdfTUFYICogMlVMTCArIDFVTEwpCiMgMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29k
ZS91Y2hhci5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91
bmljb2RlL3VjaGFyLmgiIDMgNAojZGVmaW5lIFVDSEFSX0ggCgoKCmV4dGVybiAiQyIgewojIDQy
ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMgNAoj
ZGVmaW5lIFVfVU5JQ09ERV9WRVJTSU9OICI2LjMiCiMgMTI0ICIvdXNyL2luY2x1ZGUvYXJtLWxp
bnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMgNAojZGVmaW5lIFVDSEFSX01JTl9WQUxV
RSAwCiMgMTM0ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFy
LmgiIDMgNAojZGVmaW5lIFVDSEFSX01BWF9WQUxVRSAweDEwZmZmZgoKCgoKCiNkZWZpbmUgVV9N
QVNLKHgpICgodWludDMyX3QpMTw8KHgpKQojIDE2MSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvdW5pY29kZS91Y2hhci5oIiAzIDQKdHlwZWRlZiBlbnVtIFVQcm9wZXJ0eSB7CiMg
MTc1ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMg
NAogICAgVUNIQVJfQUxQSEFCRVRJQz0wLAoKICAgIFVDSEFSX0JJTkFSWV9TVEFSVD1VQ0hBUl9B
TFBIQUJFVElDLAoKICAgIFVDSEFSX0FTQ0lJX0hFWF9ESUdJVD0xLAoKCgogICAgVUNIQVJfQklE
SV9DT05UUk9MPTIsCgoKCgogICAgVUNIQVJfQklESV9NSVJST1JFRD0zLAoKICAgIFVDSEFSX0RB
U0g9NCwKCgoKICAgIFVDSEFSX0RFRkFVTFRfSUdOT1JBQkxFX0NPREVfUE9JTlQ9NSwKCgogICAg
VUNIQVJfREVQUkVDQVRFRD02LAoKCiAgICBVQ0hBUl9ESUFDUklUSUM9NywKCgoKICAgIFVDSEFS
X0VYVEVOREVSPTgsCgoKCiAgICBVQ0hBUl9GVUxMX0NPTVBPU0lUSU9OX0VYQ0xVU0lPTj05LAoK
CgogICAgVUNIQVJfR1JBUEhFTUVfQkFTRT0xMCwKCgoKICAgIFVDSEFSX0dSQVBIRU1FX0VYVEVO
RD0xMSwKCgogICAgVUNIQVJfR1JBUEhFTUVfTElOSz0xMiwKCgogICAgVUNIQVJfSEVYX0RJR0lU
PTEzLAoKCiAgICBVQ0hBUl9IWVBIRU49MTQsCgoKCgogICAgVUNIQVJfSURfQ09OVElOVUU9MTUs
CgoKCiAgICBVQ0hBUl9JRF9TVEFSVD0xNiwKCgogICAgVUNIQVJfSURFT0dSQVBISUM9MTcsCgoK
CiAgICBVQ0hBUl9JRFNfQklOQVJZX09QRVJBVE9SPTE4LAoKCgogICAgVUNIQVJfSURTX1RSSU5B
UllfT1BFUkFUT1I9MTksCgoKICAgIFVDSEFSX0pPSU5fQ09OVFJPTD0yMCwKCgoKICAgIFVDSEFS
X0xPR0lDQUxfT1JERVJfRVhDRVBUSU9OPTIxLAoKCiAgICBVQ0hBUl9MT1dFUkNBU0U9MjIsCgog
ICAgVUNIQVJfTUFUSD0yMywKCgoKICAgIFVDSEFSX05PTkNIQVJBQ1RFUl9DT0RFX1BPSU5UPTI0
LAoKICAgIFVDSEFSX1FVT1RBVElPTl9NQVJLPTI1LAoKCgogICAgVUNIQVJfUkFESUNBTD0yNiwK
CgoKCiAgICBVQ0hBUl9TT0ZUX0RPVFRFRD0yNywKCgoKICAgIFVDSEFSX1RFUk1JTkFMX1BVTkNU
VUFUSU9OPTI4LAoKCgogICAgVUNIQVJfVU5JRklFRF9JREVPR1JBUEg9MjksCgoKICAgIFVDSEFS
X1VQUEVSQ0FTRT0zMCwKCgoKICAgIFVDSEFSX1dISVRFX1NQQUNFPTMxLAoKCgogICAgVUNIQVJf
WElEX0NPTlRJTlVFPTMyLAoKCiAgICBVQ0hBUl9YSURfU1RBUlQ9MzMsCgoKCiAgIFVDSEFSX0NB
U0VfU0VOU0lUSVZFPTM0LAoKCgoKICAgIFVDSEFSX1NfVEVSTT0zNSwKCgoKCgogICAgVUNIQVJf
VkFSSUFUSU9OX1NFTEVDVE9SPTM2LAoKCgoKCgogICAgVUNIQVJfTkZEX0lORVJUPTM3LAoKCgoK
CgogICAgVUNIQVJfTkZLRF9JTkVSVD0zOCwKCgoKCgoKICAgIFVDSEFSX05GQ19JTkVSVD0zOSwK
CgoKCgoKICAgIFVDSEFSX05GS0NfSU5FUlQ9NDAsCiMgMzQ4ICIvdXNyL2luY2x1ZGUvYXJtLWxp
bnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMgNAogICAgVUNIQVJfU0VHTUVOVF9TVEFS
VEVSPTQxLAoKCgoKICAgIFVDSEFSX1BBVFRFUk5fU1lOVEFYPTQyLAoKCgoKICAgIFVDSEFSX1BB
VFRFUk5fV0hJVEVfU1BBQ0U9NDMsCgoKCgogICAgVUNIQVJfUE9TSVhfQUxOVU09NDQsCgoKCgog
ICAgVUNIQVJfUE9TSVhfQkxBTks9NDUsCgoKCgogICAgVUNIQVJfUE9TSVhfR1JBUEg9NDYsCgoK
CgogICAgVUNIQVJfUE9TSVhfUFJJTlQ9NDcsCgoKCgogICAgVUNIQVJfUE9TSVhfWERJR0lUPTQ4
LAoKICAgIFVDSEFSX0NBU0VEPTQ5LAoKICAgIFVDSEFSX0NBU0VfSUdOT1JBQkxFPTUwLAoKICAg
IFVDSEFSX0NIQU5HRVNfV0hFTl9MT1dFUkNBU0VEPTUxLAoKICAgIFVDSEFSX0NIQU5HRVNfV0hF
Tl9VUFBFUkNBU0VEPTUyLAoKICAgIFVDSEFSX0NIQU5HRVNfV0hFTl9USVRMRUNBU0VEPTUzLAoK
ICAgIFVDSEFSX0NIQU5HRVNfV0hFTl9DQVNFRk9MREVEPTU0LAoKICAgIFVDSEFSX0NIQU5HRVNf
V0hFTl9DQVNFTUFQUEVEPTU1LAoKICAgIFVDSEFSX0NIQU5HRVNfV0hFTl9ORktDX0NBU0VGT0xE
RUQ9NTYsCgogICAgVUNIQVJfQklOQVJZX0xJTUlUPTU3LAoKCgogICAgVUNIQVJfQklESV9DTEFT
Uz0weDEwMDAsCgogICAgVUNIQVJfSU5UX1NUQVJUPVVDSEFSX0JJRElfQ0xBU1MsCgoKICAgIFVD
SEFSX0JMT0NLPTB4MTAwMSwKCgogICAgVUNIQVJfQ0FOT05JQ0FMX0NPTUJJTklOR19DTEFTUz0w
eDEwMDIsCgoKICAgIFVDSEFSX0RFQ09NUE9TSVRJT05fVFlQRT0weDEwMDMsCgoKCiAgICBVQ0hB
Ul9FQVNUX0FTSUFOX1dJRFRIPTB4MTAwNCwKCgogICAgVUNIQVJfR0VORVJBTF9DQVRFR09SWT0w
eDEwMDUsCgoKICAgIFVDSEFSX0pPSU5JTkdfR1JPVVA9MHgxMDA2LAoKCiAgICBVQ0hBUl9KT0lO
SU5HX1RZUEU9MHgxMDA3LAoKCiAgICBVQ0hBUl9MSU5FX0JSRUFLPTB4MTAwOCwKCgogICAgVUNI
QVJfTlVNRVJJQ19UWVBFPTB4MTAwOSwKCgogICAgVUNIQVJfU0NSSVBUPTB4MTAwQSwKCgogICAg
VUNIQVJfSEFOR1VMX1NZTExBQkxFX1RZUEU9MHgxMDBCLAoKCiAgICBVQ0hBUl9ORkRfUVVJQ0tf
Q0hFQ0s9MHgxMDBDLAoKCiAgICBVQ0hBUl9ORktEX1FVSUNLX0NIRUNLPTB4MTAwRCwKCgogICAg
VUNIQVJfTkZDX1FVSUNLX0NIRUNLPTB4MTAwRSwKCgogICAgVUNIQVJfTkZLQ19RVUlDS19DSEVD
Sz0weDEwMEYsCgoKCgoKCiAgICBVQ0hBUl9MRUFEX0NBTk9OSUNBTF9DT01CSU5JTkdfQ0xBU1M9
MHgxMDEwLAoKCgoKCgogICAgVUNIQVJfVFJBSUxfQ0FOT05JQ0FMX0NPTUJJTklOR19DTEFTUz0w
eDEwMTEsCgoKCgogICAgVUNIQVJfR1JBUEhFTUVfQ0xVU1RFUl9CUkVBSz0weDEwMTIsCgoKCgog
ICAgVUNIQVJfU0VOVEVOQ0VfQlJFQUs9MHgxMDEzLAoKCgoKICAgIFVDSEFSX1dPUkRfQlJFQUs9
MHgxMDE0LAoKCgoKICAgIFVDSEFSX0JJRElfUEFJUkVEX0JSQUNLRVRfVFlQRT0weDEwMTUsCgog
ICAgVUNIQVJfSU5UX0xJTUlUPTB4MTAxNiwKIyA0OTkgIi91c3IvaW5jbHVkZS9hcm0tbGludXgt
Z251ZWFiaWhmL3VuaWNvZGUvdWNoYXIuaCIgMyA0CiAgICBVQ0hBUl9HRU5FUkFMX0NBVEVHT1JZ
X01BU0s9MHgyMDAwLAoKICAgIFVDSEFSX01BU0tfU1RBUlQ9VUNIQVJfR0VORVJBTF9DQVRFR09S
WV9NQVNLLAoKICAgIFVDSEFSX01BU0tfTElNSVQ9MHgyMDAxLAoKCgogICAgVUNIQVJfTlVNRVJJ
Q19WQUxVRT0weDMwMDAsCgogICAgVUNIQVJfRE9VQkxFX1NUQVJUPVVDSEFSX05VTUVSSUNfVkFM
VUUsCgogICAgVUNIQVJfRE9VQkxFX0xJTUlUPTB4MzAwMSwKCgoKICAgIFVDSEFSX0FHRT0weDQw
MDAsCgogICAgVUNIQVJfU1RSSU5HX1NUQVJUPVVDSEFSX0FHRSwKCgogICAgVUNIQVJfQklESV9N
SVJST1JJTkdfR0xZUEg9MHg0MDAxLAoKCiAgICBVQ0hBUl9DQVNFX0ZPTERJTkc9MHg0MDAyLAoK
CgogICAgVUNIQVJfSVNPX0NPTU1FTlQ9MHg0MDAzLAoKCgogICAgVUNIQVJfTE9XRVJDQVNFX01B
UFBJTkc9MHg0MDA0LAoKCiAgICBVQ0hBUl9OQU1FPTB4NDAwNSwKCgogICAgVUNIQVJfU0lNUExF
X0NBU0VfRk9MRElORz0weDQwMDYsCgoKICAgIFVDSEFSX1NJTVBMRV9MT1dFUkNBU0VfTUFQUElO
Rz0weDQwMDcsCgoKICAgIFVDSEFSX1NJTVBMRV9USVRMRUNBU0VfTUFQUElORz0weDQwMDgsCgoK
ICAgIFVDSEFSX1NJTVBMRV9VUFBFUkNBU0VfTUFQUElORz0weDQwMDksCgoKICAgIFVDSEFSX1RJ
VExFQ0FTRV9NQVBQSU5HPTB4NDAwQSwKCgoKCgogICAgVUNIQVJfVU5JQ09ERV8xX05BTUU9MHg0
MDBCLAoKCgogICAgVUNIQVJfVVBQRVJDQVNFX01BUFBJTkc9MHg0MDBDLAoKCiAgICBVQ0hBUl9C
SURJX1BBSVJFRF9CUkFDS0VUPTB4NDAwRCwKCiAgICBVQ0hBUl9TVFJJTkdfTElNSVQ9MHg0MDBF
LAoKCgoKCgogICAgVUNIQVJfU0NSSVBUX0VYVEVOU0lPTlM9MHg3MDAwLAoKICAgIFVDSEFSX09U
SEVSX1BST1BFUlRZX1NUQVJUPVVDSEFSX1NDUklQVF9FWFRFTlNJT05TLAoKCiAgICBVQ0hBUl9P
VEhFUl9QUk9QRVJUWV9MSU1JVD0weDcwMDEsCgogICAgVUNIQVJfSU5WQUxJRF9DT0RFID0gLTEK
fSBVUHJvcGVydHk7CgoKCgoKCnR5cGVkZWYgZW51bSBVQ2hhckNhdGVnb3J5CnsKIyA1OTYgIi91
c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNoYXIuaCIgMyA0CiAgICBV
X1VOQVNTSUdORUQgPSAwLAoKICAgIFVfR0VORVJBTF9PVEhFUl9UWVBFUyA9IDAsCgogICAgVV9V
UFBFUkNBU0VfTEVUVEVSID0gMSwKCiAgICBVX0xPV0VSQ0FTRV9MRVRURVIgPSAyLAoKICAgIFVf
VElUTEVDQVNFX0xFVFRFUiA9IDMsCgogICAgVV9NT0RJRklFUl9MRVRURVIgPSA0LAoKICAgIFVf
T1RIRVJfTEVUVEVSID0gNSwKCiAgICBVX05PTl9TUEFDSU5HX01BUksgPSA2LAoKICAgIFVfRU5D
TE9TSU5HX01BUksgPSA3LAoKICAgIFVfQ09NQklOSU5HX1NQQUNJTkdfTUFSSyA9IDgsCgogICAg
VV9ERUNJTUFMX0RJR0lUX05VTUJFUiA9IDksCgogICAgVV9MRVRURVJfTlVNQkVSID0gMTAsCgog
ICAgVV9PVEhFUl9OVU1CRVIgPSAxMSwKCiAgICBVX1NQQUNFX1NFUEFSQVRPUiA9IDEyLAoKICAg
IFVfTElORV9TRVBBUkFUT1IgPSAxMywKCiAgICBVX1BBUkFHUkFQSF9TRVBBUkFUT1IgPSAxNCwK
CiAgICBVX0NPTlRST0xfQ0hBUiA9IDE1LAoKICAgIFVfRk9STUFUX0NIQVIgPSAxNiwKCiAgICBV
X1BSSVZBVEVfVVNFX0NIQVIgPSAxNywKCiAgICBVX1NVUlJPR0FURSA9IDE4LAoKICAgIFVfREFT
SF9QVU5DVFVBVElPTiA9IDE5LAoKICAgIFVfU1RBUlRfUFVOQ1RVQVRJT04gPSAyMCwKCiAgICBV
X0VORF9QVU5DVFVBVElPTiA9IDIxLAoKICAgIFVfQ09OTkVDVE9SX1BVTkNUVUFUSU9OID0gMjIs
CgogICAgVV9PVEhFUl9QVU5DVFVBVElPTiA9IDIzLAoKICAgIFVfTUFUSF9TWU1CT0wgPSAyNCwK
CiAgICBVX0NVUlJFTkNZX1NZTUJPTCA9IDI1LAoKICAgIFVfTU9ESUZJRVJfU1lNQk9MID0gMjYs
CgogICAgVV9PVEhFUl9TWU1CT0wgPSAyNywKCiAgICBVX0lOSVRJQUxfUFVOQ1RVQVRJT04gPSAy
OCwKCiAgICBVX0ZJTkFMX1BVTkNUVUFUSU9OID0gMjksCgogICAgVV9DSEFSX0NBVEVHT1JZX0NP
VU5UCn0gVUNoYXJDYXRlZ29yeTsKIyA2NzUgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFi
aWhmL3VuaWNvZGUvdWNoYXIuaCIgMyA0CiNkZWZpbmUgVV9HQ19DTl9NQVNLIFVfTUFTSyhVX0dF
TkVSQUxfT1RIRVJfVFlQRVMpCgoKI2RlZmluZSBVX0dDX0xVX01BU0sgVV9NQVNLKFVfVVBQRVJD
QVNFX0xFVFRFUikKCiNkZWZpbmUgVV9HQ19MTF9NQVNLIFVfTUFTSyhVX0xPV0VSQ0FTRV9MRVRU
RVIpCgojZGVmaW5lIFVfR0NfTFRfTUFTSyBVX01BU0soVV9USVRMRUNBU0VfTEVUVEVSKQoKI2Rl
ZmluZSBVX0dDX0xNX01BU0sgVV9NQVNLKFVfTU9ESUZJRVJfTEVUVEVSKQoKI2RlZmluZSBVX0dD
X0xPX01BU0sgVV9NQVNLKFVfT1RIRVJfTEVUVEVSKQoKCiNkZWZpbmUgVV9HQ19NTl9NQVNLIFVf
TUFTSyhVX05PTl9TUEFDSU5HX01BUkspCgojZGVmaW5lIFVfR0NfTUVfTUFTSyBVX01BU0soVV9F
TkNMT1NJTkdfTUFSSykKCiNkZWZpbmUgVV9HQ19NQ19NQVNLIFVfTUFTSyhVX0NPTUJJTklOR19T
UEFDSU5HX01BUkspCgoKI2RlZmluZSBVX0dDX05EX01BU0sgVV9NQVNLKFVfREVDSU1BTF9ESUdJ
VF9OVU1CRVIpCgojZGVmaW5lIFVfR0NfTkxfTUFTSyBVX01BU0soVV9MRVRURVJfTlVNQkVSKQoK
I2RlZmluZSBVX0dDX05PX01BU0sgVV9NQVNLKFVfT1RIRVJfTlVNQkVSKQoKCiNkZWZpbmUgVV9H
Q19aU19NQVNLIFVfTUFTSyhVX1NQQUNFX1NFUEFSQVRPUikKCiNkZWZpbmUgVV9HQ19aTF9NQVNL
IFVfTUFTSyhVX0xJTkVfU0VQQVJBVE9SKQoKI2RlZmluZSBVX0dDX1pQX01BU0sgVV9NQVNLKFVf
UEFSQUdSQVBIX1NFUEFSQVRPUikKCgojZGVmaW5lIFVfR0NfQ0NfTUFTSyBVX01BU0soVV9DT05U
Uk9MX0NIQVIpCgojZGVmaW5lIFVfR0NfQ0ZfTUFTSyBVX01BU0soVV9GT1JNQVRfQ0hBUikKCiNk
ZWZpbmUgVV9HQ19DT19NQVNLIFVfTUFTSyhVX1BSSVZBVEVfVVNFX0NIQVIpCgojZGVmaW5lIFVf
R0NfQ1NfTUFTSyBVX01BU0soVV9TVVJST0dBVEUpCgoKI2RlZmluZSBVX0dDX1BEX01BU0sgVV9N
QVNLKFVfREFTSF9QVU5DVFVBVElPTikKCiNkZWZpbmUgVV9HQ19QU19NQVNLIFVfTUFTSyhVX1NU
QVJUX1BVTkNUVUFUSU9OKQoKI2RlZmluZSBVX0dDX1BFX01BU0sgVV9NQVNLKFVfRU5EX1BVTkNU
VUFUSU9OKQoKI2RlZmluZSBVX0dDX1BDX01BU0sgVV9NQVNLKFVfQ09OTkVDVE9SX1BVTkNUVUFU
SU9OKQoKI2RlZmluZSBVX0dDX1BPX01BU0sgVV9NQVNLKFVfT1RIRVJfUFVOQ1RVQVRJT04pCgoK
I2RlZmluZSBVX0dDX1NNX01BU0sgVV9NQVNLKFVfTUFUSF9TWU1CT0wpCgojZGVmaW5lIFVfR0Nf
U0NfTUFTSyBVX01BU0soVV9DVVJSRU5DWV9TWU1CT0wpCgojZGVmaW5lIFVfR0NfU0tfTUFTSyBV
X01BU0soVV9NT0RJRklFUl9TWU1CT0wpCgojZGVmaW5lIFVfR0NfU09fTUFTSyBVX01BU0soVV9P
VEhFUl9TWU1CT0wpCgoKI2RlZmluZSBVX0dDX1BJX01BU0sgVV9NQVNLKFVfSU5JVElBTF9QVU5D
VFVBVElPTikKCiNkZWZpbmUgVV9HQ19QRl9NQVNLIFVfTUFTSyhVX0ZJTkFMX1BVTkNUVUFUSU9O
KQoKCgojZGVmaW5lIFVfR0NfTF9NQVNLIChVX0dDX0xVX01BU0t8VV9HQ19MTF9NQVNLfFVfR0Nf
TFRfTUFTS3xVX0dDX0xNX01BU0t8VV9HQ19MT19NQVNLKQoKCgojZGVmaW5lIFVfR0NfTENfTUFT
SyAoVV9HQ19MVV9NQVNLfFVfR0NfTExfTUFTS3xVX0dDX0xUX01BU0spCgoKCiNkZWZpbmUgVV9H
Q19NX01BU0sgKFVfR0NfTU5fTUFTS3xVX0dDX01FX01BU0t8VV9HQ19NQ19NQVNLKQoKCiNkZWZp
bmUgVV9HQ19OX01BU0sgKFVfR0NfTkRfTUFTS3xVX0dDX05MX01BU0t8VV9HQ19OT19NQVNLKQoK
CiNkZWZpbmUgVV9HQ19aX01BU0sgKFVfR0NfWlNfTUFTS3xVX0dDX1pMX01BU0t8VV9HQ19aUF9N
QVNLKQoKCiNkZWZpbmUgVV9HQ19DX01BU0sgKFVfR0NfQ05fTUFTS3xVX0dDX0NDX01BU0t8VV9H
Q19DRl9NQVNLfFVfR0NfQ09fTUFTS3xVX0dDX0NTX01BU0spCgoKCiNkZWZpbmUgVV9HQ19QX01B
U0sgKFVfR0NfUERfTUFTS3xVX0dDX1BTX01BU0t8VV9HQ19QRV9NQVNLfFVfR0NfUENfTUFTS3xV
X0dDX1BPX01BU0t8IFVfR0NfUElfTUFTS3xVX0dDX1BGX01BU0spCgoKCgojZGVmaW5lIFVfR0Nf
U19NQVNLIChVX0dDX1NNX01BU0t8VV9HQ19TQ19NQVNLfFVfR0NfU0tfTUFTS3xVX0dDX1NPX01B
U0spCgoKCgoKdHlwZWRlZiBlbnVtIFVDaGFyRGlyZWN0aW9uIHsKIyA3ODYgIi91c3IvaW5jbHVk
ZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNoYXIuaCIgMyA0CiAgICBVX0xFRlRfVE9f
UklHSFQgPSAwLAoKICAgIFVfUklHSFRfVE9fTEVGVCA9IDEsCgogICAgVV9FVVJPUEVBTl9OVU1C
RVIgPSAyLAoKICAgIFVfRVVST1BFQU5fTlVNQkVSX1NFUEFSQVRPUiA9IDMsCgogICAgVV9FVVJP
UEVBTl9OVU1CRVJfVEVSTUlOQVRPUiA9IDQsCgogICAgVV9BUkFCSUNfTlVNQkVSID0gNSwKCiAg
ICBVX0NPTU1PTl9OVU1CRVJfU0VQQVJBVE9SID0gNiwKCiAgICBVX0JMT0NLX1NFUEFSQVRPUiA9
IDcsCgogICAgVV9TRUdNRU5UX1NFUEFSQVRPUiA9IDgsCgogICAgVV9XSElURV9TUEFDRV9ORVVU
UkFMID0gOSwKCiAgICBVX09USEVSX05FVVRSQUwgPSAxMCwKCiAgICBVX0xFRlRfVE9fUklHSFRf
RU1CRURESU5HID0gMTEsCgogICAgVV9MRUZUX1RPX1JJR0hUX09WRVJSSURFID0gMTIsCgogICAg
VV9SSUdIVF9UT19MRUZUX0FSQUJJQyA9IDEzLAoKICAgIFVfUklHSFRfVE9fTEVGVF9FTUJFRERJ
TkcgPSAxNCwKCiAgICBVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREUgPSAxNSwKCiAgICBVX1BPUF9E
SVJFQ1RJT05BTF9GT1JNQVQgPSAxNiwKCiAgICBVX0RJUl9OT05fU1BBQ0lOR19NQVJLID0gMTcs
CgogICAgVV9CT1VOREFSWV9ORVVUUkFMID0gMTgsCgogICAgVV9GSVJTVF9TVFJPTkdfSVNPTEFU
RSA9IDE5LAoKICAgIFVfTEVGVF9UT19SSUdIVF9JU09MQVRFID0gMjAsCgogICAgVV9SSUdIVF9U
T19MRUZUX0lTT0xBVEUgPSAyMSwKCiAgICBVX1BPUF9ESVJFQ1RJT05BTF9JU09MQVRFID0gMjIs
CgogICAgVV9DSEFSX0RJUkVDVElPTl9DT1VOVAp9IFVDaGFyRGlyZWN0aW9uOwoKCgoKCgoKdHlw
ZWRlZiBlbnVtIFVCaWRpUGFpcmVkQnJhY2tldFR5cGUgewoKCgoKCgoKICAgIFVfQlBUX05PTkUs
CgogICAgVV9CUFRfT1BFTiwKCiAgICBVX0JQVF9DTE9TRSwKCiAgICBVX0JQVF9DT1VOVAp9IFVC
aWRpUGFpcmVkQnJhY2tldFR5cGU7CgoKCgoKZW51bSBVQmxvY2tDb2RlIHsKCgoKCgoKCiAgICBV
QkxPQ0tfTk9fQkxPQ0sgPSAwLAoKCiAgICBVQkxPQ0tfQkFTSUNfTEFUSU4gPSAxLAoKCiAgICBV
QkxPQ0tfTEFUSU5fMV9TVVBQTEVNRU5UPTIsCgoKICAgIFVCTE9DS19MQVRJTl9FWFRFTkRFRF9B
ID0zLAoKCiAgICBVQkxPQ0tfTEFUSU5fRVhURU5ERURfQiA9NCwKCgogICAgVUJMT0NLX0lQQV9F
WFRFTlNJT05TID01LAoKCiAgICBVQkxPQ0tfU1BBQ0lOR19NT0RJRklFUl9MRVRURVJTID02LAoK
CiAgICBVQkxPQ0tfQ09NQklOSU5HX0RJQUNSSVRJQ0FMX01BUktTID03LAoKCgoKCiAgICBVQkxP
Q0tfR1JFRUsgPTgsCgoKICAgIFVCTE9DS19DWVJJTExJQyA9OSwKCgogICAgVUJMT0NLX0FSTUVO
SUFOID0xMCwKCgogICAgVUJMT0NLX0hFQlJFVyA9MTEsCgoKICAgIFVCTE9DS19BUkFCSUMgPTEy
LAoKCiAgICBVQkxPQ0tfU1lSSUFDID0xMywKCgogICAgVUJMT0NLX1RIQUFOQSA9MTQsCgoKICAg
IFVCTE9DS19ERVZBTkFHQVJJID0xNSwKCgogICAgVUJMT0NLX0JFTkdBTEkgPTE2LAoKCiAgICBV
QkxPQ0tfR1VSTVVLSEkgPTE3LAoKCiAgICBVQkxPQ0tfR1VKQVJBVEkgPTE4LAoKCiAgICBVQkxP
Q0tfT1JJWUEgPTE5LAoKCiAgICBVQkxPQ0tfVEFNSUwgPTIwLAoKCiAgICBVQkxPQ0tfVEVMVUdV
ID0yMSwKCgogICAgVUJMT0NLX0tBTk5BREEgPTIyLAoKCiAgICBVQkxPQ0tfTUFMQVlBTEFNID0y
MywKCgogICAgVUJMT0NLX1NJTkhBTEEgPTI0LAoKCiAgICBVQkxPQ0tfVEhBSSA9MjUsCgoKICAg
IFVCTE9DS19MQU8gPTI2LAoKCiAgICBVQkxPQ0tfVElCRVRBTiA9MjcsCgoKICAgIFVCTE9DS19N
WUFOTUFSID0yOCwKCgogICAgVUJMT0NLX0dFT1JHSUFOID0yOSwKCgogICAgVUJMT0NLX0hBTkdV
TF9KQU1PID0zMCwKCgogICAgVUJMT0NLX0VUSElPUElDID0zMSwKCgogICAgVUJMT0NLX0NIRVJP
S0VFID0zMiwKCgogICAgVUJMT0NLX1VOSUZJRURfQ0FOQURJQU5fQUJPUklHSU5BTF9TWUxMQUJJ
Q1MgPTMzLAoKCiAgICBVQkxPQ0tfT0dIQU0gPTM0LAoKCiAgICBVQkxPQ0tfUlVOSUMgPTM1LAoK
CiAgICBVQkxPQ0tfS0hNRVIgPTM2LAoKCiAgICBVQkxPQ0tfTU9OR09MSUFOID0zNywKCgogICAg
VUJMT0NLX0xBVElOX0VYVEVOREVEX0FERElUSU9OQUwgPTM4LAoKCiAgICBVQkxPQ0tfR1JFRUtf
RVhURU5ERUQgPTM5LAoKCiAgICBVQkxPQ0tfR0VORVJBTF9QVU5DVFVBVElPTiA9NDAsCgoKICAg
IFVCTE9DS19TVVBFUlNDUklQVFNfQU5EX1NVQlNDUklQVFMgPTQxLAoKCiAgICBVQkxPQ0tfQ1VS
UkVOQ1lfU1lNQk9MUyA9NDIsCgoKCgoKICAgIFVCTE9DS19DT01CSU5JTkdfTUFSS1NfRk9SX1NZ
TUJPTFMgPTQzLAoKCiAgICBVQkxPQ0tfTEVUVEVSTElLRV9TWU1CT0xTID00NCwKCgogICAgVUJM
T0NLX05VTUJFUl9GT1JNUyA9NDUsCgoKICAgIFVCTE9DS19BUlJPV1MgPTQ2LAoKCiAgICBVQkxP
Q0tfTUFUSEVNQVRJQ0FMX09QRVJBVE9SUyA9NDcsCgoKICAgIFVCTE9DS19NSVNDRUxMQU5FT1VT
X1RFQ0hOSUNBTCA9NDgsCgoKICAgIFVCTE9DS19DT05UUk9MX1BJQ1RVUkVTID00OSwKCgogICAg
VUJMT0NLX09QVElDQUxfQ0hBUkFDVEVSX1JFQ09HTklUSU9OID01MCwKCgogICAgVUJMT0NLX0VO
Q0xPU0VEX0FMUEhBTlVNRVJJQ1MgPTUxLAoKCiAgICBVQkxPQ0tfQk9YX0RSQVdJTkcgPTUyLAoK
CiAgICBVQkxPQ0tfQkxPQ0tfRUxFTUVOVFMgPTUzLAoKCiAgICBVQkxPQ0tfR0VPTUVUUklDX1NI
QVBFUyA9NTQsCgoKICAgIFVCTE9DS19NSVNDRUxMQU5FT1VTX1NZTUJPTFMgPTU1LAoKCiAgICBV
QkxPQ0tfRElOR0JBVFMgPTU2LAoKCiAgICBVQkxPQ0tfQlJBSUxMRV9QQVRURVJOUyA9NTcsCgoK
ICAgIFVCTE9DS19DSktfUkFESUNBTFNfU1VQUExFTUVOVCA9NTgsCgoKICAgIFVCTE9DS19LQU5H
WElfUkFESUNBTFMgPTU5LAoKCiAgICBVQkxPQ0tfSURFT0dSQVBISUNfREVTQ1JJUFRJT05fQ0hB
UkFDVEVSUyA9NjAsCgoKICAgIFVCTE9DS19DSktfU1lNQk9MU19BTkRfUFVOQ1RVQVRJT04gPTYx
LAoKCiAgICBVQkxPQ0tfSElSQUdBTkEgPTYyLAoKCiAgICBVQkxPQ0tfS0FUQUtBTkEgPTYzLAoK
CiAgICBVQkxPQ0tfQk9QT01PRk8gPTY0LAoKCiAgICBVQkxPQ0tfSEFOR1VMX0NPTVBBVElCSUxJ
VFlfSkFNTyA9NjUsCgoKICAgIFVCTE9DS19LQU5CVU4gPTY2LAoKCiAgICBVQkxPQ0tfQk9QT01P
Rk9fRVhURU5ERUQgPTY3LAoKCiAgICBVQkxPQ0tfRU5DTE9TRURfQ0pLX0xFVFRFUlNfQU5EX01P
TlRIUyA9NjgsCgoKICAgIFVCTE9DS19DSktfQ09NUEFUSUJJTElUWSA9NjksCgoKICAgIFVCTE9D
S19DSktfVU5JRklFRF9JREVPR1JBUEhTX0VYVEVOU0lPTl9BID03MCwKCgogICAgVUJMT0NLX0NK
S19VTklGSUVEX0lERU9HUkFQSFMgPTcxLAoKCiAgICBVQkxPQ0tfWUlfU1lMTEFCTEVTID03MiwK
CgogICAgVUJMT0NLX1lJX1JBRElDQUxTID03MywKCgogICAgVUJMT0NLX0hBTkdVTF9TWUxMQUJM
RVMgPTc0LAoKCiAgICBVQkxPQ0tfSElHSF9TVVJST0dBVEVTID03NSwKCgogICAgVUJMT0NLX0hJ
R0hfUFJJVkFURV9VU0VfU1VSUk9HQVRFUyA9NzYsCgoKICAgIFVCTE9DS19MT1dfU1VSUk9HQVRF
UyA9NzcsCiMgMTExOCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91
Y2hhci5oIiAzIDQKICAgIFVCTE9DS19QUklWQVRFX1VTRV9BUkVBID03OCwKIyAxMTI4ICIvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMgNAogICAgVUJM
T0NLX1BSSVZBVEVfVVNFID0gVUJMT0NLX1BSSVZBVEVfVVNFX0FSRUEsCgoKICAgIFVCTE9DS19D
SktfQ09NUEFUSUJJTElUWV9JREVPR1JBUEhTID03OSwKCgogICAgVUJMT0NLX0FMUEhBQkVUSUNf
UFJFU0VOVEFUSU9OX0ZPUk1TID04MCwKCgogICAgVUJMT0NLX0FSQUJJQ19QUkVTRU5UQVRJT05f
Rk9STVNfQSA9ODEsCgoKICAgIFVCTE9DS19DT01CSU5JTkdfSEFMRl9NQVJLUyA9ODIsCgoKICAg
IFVCTE9DS19DSktfQ09NUEFUSUJJTElUWV9GT1JNUyA9ODMsCgoKICAgIFVCTE9DS19TTUFMTF9G
T1JNX1ZBUklBTlRTID04NCwKCgogICAgVUJMT0NLX0FSQUJJQ19QUkVTRU5UQVRJT05fRk9STVNf
QiA9ODUsCgoKICAgIFVCTE9DS19TUEVDSUFMUyA9ODYsCgoKICAgIFVCTE9DS19IQUxGV0lEVEhf
QU5EX0ZVTExXSURUSF9GT1JNUyA9ODcsCgoKCgogICAgVUJMT0NLX09MRF9JVEFMSUMgPSA4OCwK
CiAgICBVQkxPQ0tfR09USElDID0gODksCgogICAgVUJMT0NLX0RFU0VSRVQgPSA5MCwKCiAgICBV
QkxPQ0tfQllaQU5USU5FX01VU0lDQUxfU1lNQk9MUyA9IDkxLAoKICAgIFVCTE9DS19NVVNJQ0FM
X1NZTUJPTFMgPSA5MiwKCiAgICBVQkxPQ0tfTUFUSEVNQVRJQ0FMX0FMUEhBTlVNRVJJQ19TWU1C
T0xTID0gOTMsCgogICAgVUJMT0NLX0NKS19VTklGSUVEX0lERU9HUkFQSFNfRVhURU5TSU9OX0Ig
PSA5NCwKCiAgICBVQkxPQ0tfQ0pLX0NPTVBBVElCSUxJVFlfSURFT0dSQVBIU19TVVBQTEVNRU5U
ID0gOTUsCgogICAgVUJMT0NLX1RBR1MgPSA5NiwKCgoKCiAgICBVQkxPQ0tfQ1lSSUxMSUNfU1VQ
UExFTUVOVCA9IDk3LAoKCgoKICAgIFVCTE9DS19DWVJJTExJQ19TVVBQTEVNRU5UQVJZID0gVUJM
T0NLX0NZUklMTElDX1NVUFBMRU1FTlQsCgogICAgVUJMT0NLX1RBR0FMT0cgPSA5OCwKCiAgICBV
QkxPQ0tfSEFOVU5PTyA9IDk5LAoKICAgIFVCTE9DS19CVUhJRCA9IDEwMCwKCiAgICBVQkxPQ0tf
VEFHQkFOV0EgPSAxMDEsCgogICAgVUJMT0NLX01JU0NFTExBTkVPVVNfTUFUSEVNQVRJQ0FMX1NZ
TUJPTFNfQSA9IDEwMiwKCiAgICBVQkxPQ0tfU1VQUExFTUVOVEFMX0FSUk9XU19BID0gMTAzLAoK
ICAgIFVCTE9DS19TVVBQTEVNRU5UQUxfQVJST1dTX0IgPSAxMDQsCgogICAgVUJMT0NLX01JU0NF
TExBTkVPVVNfTUFUSEVNQVRJQ0FMX1NZTUJPTFNfQiA9IDEwNSwKCiAgICBVQkxPQ0tfU1VQUExF
TUVOVEFMX01BVEhFTUFUSUNBTF9PUEVSQVRPUlMgPSAxMDYsCgogICAgVUJMT0NLX0tBVEFLQU5B
X1BIT05FVElDX0VYVEVOU0lPTlMgPSAxMDcsCgogICAgVUJMT0NLX1ZBUklBVElPTl9TRUxFQ1RP
UlMgPSAxMDgsCgogICAgVUJMT0NLX1NVUFBMRU1FTlRBUllfUFJJVkFURV9VU0VfQVJFQV9BID0g
MTA5LAoKICAgIFVCTE9DS19TVVBQTEVNRU5UQVJZX1BSSVZBVEVfVVNFX0FSRUFfQiA9IDExMCwK
CgoKCiAgICBVQkxPQ0tfTElNQlUgPSAxMTEsCgogICAgVUJMT0NLX1RBSV9MRSA9IDExMiwKCiAg
ICBVQkxPQ0tfS0hNRVJfU1lNQk9MUyA9IDExMywKCiAgICBVQkxPQ0tfUEhPTkVUSUNfRVhURU5T
SU9OUyA9IDExNCwKCiAgICBVQkxPQ0tfTUlTQ0VMTEFORU9VU19TWU1CT0xTX0FORF9BUlJPV1Mg
PSAxMTUsCgogICAgVUJMT0NLX1lJSklOR19IRVhBR1JBTV9TWU1CT0xTID0gMTE2LAoKICAgIFVC
TE9DS19MSU5FQVJfQl9TWUxMQUJBUlkgPSAxMTcsCgogICAgVUJMT0NLX0xJTkVBUl9CX0lERU9H
UkFNUyA9IDExOCwKCiAgICBVQkxPQ0tfQUVHRUFOX05VTUJFUlMgPSAxMTksCgogICAgVUJMT0NL
X1VHQVJJVElDID0gMTIwLAoKICAgIFVCTE9DS19TSEFWSUFOID0gMTIxLAoKICAgIFVCTE9DS19P
U01BTllBID0gMTIyLAoKICAgIFVCTE9DS19DWVBSSU9UX1NZTExBQkFSWSA9IDEyMywKCiAgICBV
QkxPQ0tfVEFJX1hVQU5fSklOR19TWU1CT0xTID0gMTI0LAoKICAgIFVCTE9DS19WQVJJQVRJT05f
U0VMRUNUT1JTX1NVUFBMRU1FTlQgPSAxMjUsCgoKCgogICAgVUJMT0NLX0FOQ0lFTlRfR1JFRUtf
TVVTSUNBTF9OT1RBVElPTiA9IDEyNiwKCiAgICBVQkxPQ0tfQU5DSUVOVF9HUkVFS19OVU1CRVJT
ID0gMTI3LAoKICAgIFVCTE9DS19BUkFCSUNfU1VQUExFTUVOVCA9IDEyOCwKCiAgICBVQkxPQ0tf
QlVHSU5FU0UgPSAxMjksCgogICAgVUJMT0NLX0NKS19TVFJPS0VTID0gMTMwLAoKICAgIFVCTE9D
S19DT01CSU5JTkdfRElBQ1JJVElDQUxfTUFSS1NfU1VQUExFTUVOVCA9IDEzMSwKCiAgICBVQkxP
Q0tfQ09QVElDID0gMTMyLAoKICAgIFVCTE9DS19FVEhJT1BJQ19FWFRFTkRFRCA9IDEzMywKCiAg
ICBVQkxPQ0tfRVRISU9QSUNfU1VQUExFTUVOVCA9IDEzNCwKCiAgICBVQkxPQ0tfR0VPUkdJQU5f
U1VQUExFTUVOVCA9IDEzNSwKCiAgICBVQkxPQ0tfR0xBR09MSVRJQyA9IDEzNiwKCiAgICBVQkxP
Q0tfS0hBUk9TSFRISSA9IDEzNywKCiAgICBVQkxPQ0tfTU9ESUZJRVJfVE9ORV9MRVRURVJTID0g
MTM4LAoKICAgIFVCTE9DS19ORVdfVEFJX0xVRSA9IDEzOSwKCiAgICBVQkxPQ0tfT0xEX1BFUlNJ
QU4gPSAxNDAsCgogICAgVUJMT0NLX1BIT05FVElDX0VYVEVOU0lPTlNfU1VQUExFTUVOVCA9IDE0
MSwKCiAgICBVQkxPQ0tfU1VQUExFTUVOVEFMX1BVTkNUVUFUSU9OID0gMTQyLAoKICAgIFVCTE9D
S19TWUxPVElfTkFHUkkgPSAxNDMsCgogICAgVUJMT0NLX1RJRklOQUdIID0gMTQ0LAoKICAgIFVC
TE9DS19WRVJUSUNBTF9GT1JNUyA9IDE0NSwKCgoKCiAgICBVQkxPQ0tfTktPID0gMTQ2LAoKICAg
IFVCTE9DS19CQUxJTkVTRSA9IDE0NywKCiAgICBVQkxPQ0tfTEFUSU5fRVhURU5ERURfQyA9IDE0
OCwKCiAgICBVQkxPQ0tfTEFUSU5fRVhURU5ERURfRCA9IDE0OSwKCiAgICBVQkxPQ0tfUEhBR1Nf
UEEgPSAxNTAsCgogICAgVUJMT0NLX1BIT0VOSUNJQU4gPSAxNTEsCgogICAgVUJMT0NLX0NVTkVJ
Rk9STSA9IDE1MiwKCiAgICBVQkxPQ0tfQ1VORUlGT1JNX05VTUJFUlNfQU5EX1BVTkNUVUFUSU9O
ID0gMTUzLAoKICAgIFVCTE9DS19DT1VOVElOR19ST0RfTlVNRVJBTFMgPSAxNTQsCgoKCgogICAg
VUJMT0NLX1NVTkRBTkVTRSA9IDE1NSwKCiAgICBVQkxPQ0tfTEVQQ0hBID0gMTU2LAoKICAgIFVC
TE9DS19PTF9DSElLSSA9IDE1NywKCiAgICBVQkxPQ0tfQ1lSSUxMSUNfRVhURU5ERURfQSA9IDE1
OCwKCiAgICBVQkxPQ0tfVkFJID0gMTU5LAoKICAgIFVCTE9DS19DWVJJTExJQ19FWFRFTkRFRF9C
ID0gMTYwLAoKICAgIFVCTE9DS19TQVVSQVNIVFJBID0gMTYxLAoKICAgIFVCTE9DS19LQVlBSF9M
SSA9IDE2MiwKCiAgICBVQkxPQ0tfUkVKQU5HID0gMTYzLAoKICAgIFVCTE9DS19DSEFNID0gMTY0
LAoKICAgIFVCTE9DS19BTkNJRU5UX1NZTUJPTFMgPSAxNjUsCgogICAgVUJMT0NLX1BIQUlTVE9T
X0RJU0MgPSAxNjYsCgogICAgVUJMT0NLX0xZQ0lBTiA9IDE2NywKCiAgICBVQkxPQ0tfQ0FSSUFO
ID0gMTY4LAoKICAgIFVCTE9DS19MWURJQU4gPSAxNjksCgogICAgVUJMT0NLX01BSEpPTkdfVElM
RVMgPSAxNzAsCgogICAgVUJMT0NLX0RPTUlOT19USUxFUyA9IDE3MSwKCgoKCiAgICBVQkxPQ0tf
U0FNQVJJVEFOID0gMTcyLAoKICAgIFVCTE9DS19VTklGSUVEX0NBTkFESUFOX0FCT1JJR0lOQUxf
U1lMTEFCSUNTX0VYVEVOREVEID0gMTczLAoKICAgIFVCTE9DS19UQUlfVEhBTSA9IDE3NCwKCiAg
ICBVQkxPQ0tfVkVESUNfRVhURU5TSU9OUyA9IDE3NSwKCiAgICBVQkxPQ0tfTElTVSA9IDE3NiwK
CiAgICBVQkxPQ0tfQkFNVU0gPSAxNzcsCgogICAgVUJMT0NLX0NPTU1PTl9JTkRJQ19OVU1CRVJf
Rk9STVMgPSAxNzgsCgogICAgVUJMT0NLX0RFVkFOQUdBUklfRVhURU5ERUQgPSAxNzksCgogICAg
VUJMT0NLX0hBTkdVTF9KQU1PX0VYVEVOREVEX0EgPSAxODAsCgogICAgVUJMT0NLX0pBVkFORVNF
ID0gMTgxLAoKICAgIFVCTE9DS19NWUFOTUFSX0VYVEVOREVEX0EgPSAxODIsCgogICAgVUJMT0NL
X1RBSV9WSUVUID0gMTgzLAoKICAgIFVCTE9DS19NRUVURUlfTUFZRUsgPSAxODQsCgogICAgVUJM
T0NLX0hBTkdVTF9KQU1PX0VYVEVOREVEX0IgPSAxODUsCgogICAgVUJMT0NLX0lNUEVSSUFMX0FS
QU1BSUMgPSAxODYsCgogICAgVUJMT0NLX09MRF9TT1VUSF9BUkFCSUFOID0gMTg3LAoKICAgIFVC
TE9DS19BVkVTVEFOID0gMTg4LAoKICAgIFVCTE9DS19JTlNDUklQVElPTkFMX1BBUlRISUFOID0g
MTg5LAoKICAgIFVCTE9DS19JTlNDUklQVElPTkFMX1BBSExBVkkgPSAxOTAsCgogICAgVUJMT0NL
X09MRF9UVVJLSUMgPSAxOTEsCgogICAgVUJMT0NLX1JVTUlfTlVNRVJBTF9TWU1CT0xTID0gMTky
LAoKICAgIFVCTE9DS19LQUlUSEkgPSAxOTMsCgogICAgVUJMT0NLX0VHWVBUSUFOX0hJRVJPR0xZ
UEhTID0gMTk0LAoKICAgIFVCTE9DS19FTkNMT1NFRF9BTFBIQU5VTUVSSUNfU1VQUExFTUVOVCA9
IDE5NSwKCiAgICBVQkxPQ0tfRU5DTE9TRURfSURFT0dSQVBISUNfU1VQUExFTUVOVCA9IDE5NiwK
CiAgICBVQkxPQ0tfQ0pLX1VOSUZJRURfSURFT0dSQVBIU19FWFRFTlNJT05fQyA9IDE5NywKCgoK
CiAgICBVQkxPQ0tfTUFOREFJQyA9IDE5OCwKCiAgICBVQkxPQ0tfQkFUQUsgPSAxOTksCgogICAg
VUJMT0NLX0VUSElPUElDX0VYVEVOREVEX0EgPSAyMDAsCgogICAgVUJMT0NLX0JSQUhNSSA9IDIw
MSwKCiAgICBVQkxPQ0tfQkFNVU1fU1VQUExFTUVOVCA9IDIwMiwKCiAgICBVQkxPQ0tfS0FOQV9T
VVBQTEVNRU5UID0gMjAzLAoKICAgIFVCTE9DS19QTEFZSU5HX0NBUkRTID0gMjA0LAoKICAgIFVC
TE9DS19NSVNDRUxMQU5FT1VTX1NZTUJPTFNfQU5EX1BJQ1RPR1JBUEhTID0gMjA1LAoKICAgIFVC
TE9DS19FTU9USUNPTlMgPSAyMDYsCgogICAgVUJMT0NLX1RSQU5TUE9SVF9BTkRfTUFQX1NZTUJP
TFMgPSAyMDcsCgogICAgVUJMT0NLX0FMQ0hFTUlDQUxfU1lNQk9MUyA9IDIwOCwKCiAgICBVQkxP
Q0tfQ0pLX1VOSUZJRURfSURFT0dSQVBIU19FWFRFTlNJT05fRCA9IDIwOSwKCgoKCiAgICBVQkxP
Q0tfQVJBQklDX0VYVEVOREVEX0EgPSAyMTAsCgogICAgVUJMT0NLX0FSQUJJQ19NQVRIRU1BVElD
QUxfQUxQSEFCRVRJQ19TWU1CT0xTID0gMjExLAoKICAgIFVCTE9DS19DSEFLTUEgPSAyMTIsCgog
ICAgVUJMT0NLX01FRVRFSV9NQVlFS19FWFRFTlNJT05TID0gMjEzLAoKICAgIFVCTE9DS19NRVJP
SVRJQ19DVVJTSVZFID0gMjE0LAoKICAgIFVCTE9DS19NRVJPSVRJQ19ISUVST0dMWVBIUyA9IDIx
NSwKCiAgICBVQkxPQ0tfTUlBTyA9IDIxNiwKCiAgICBVQkxPQ0tfU0hBUkFEQSA9IDIxNywKCiAg
ICBVQkxPQ0tfU09SQV9TT01QRU5HID0gMjE4LAoKICAgIFVCTE9DS19TVU5EQU5FU0VfU1VQUExF
TUVOVCA9IDIxOSwKCiAgICBVQkxPQ0tfVEFLUkkgPSAyMjAsCgoKICAgIFVCTE9DS19DT1VOVCA9
IDIyMSwKCgogICAgVUJMT0NLX0lOVkFMSURfQ09ERT0tMQp9OwoKCnR5cGVkZWYgZW51bSBVQmxv
Y2tDb2RlIFVCbG9ja0NvZGU7CiMgMTQ3MiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJp
aGYvdW5pY29kZS91Y2hhci5oIiAzIDQKdHlwZWRlZiBlbnVtIFVFYXN0QXNpYW5XaWR0aCB7CgoK
CgoKCiAgICBVX0VBX05FVVRSQUwsCiAgICBVX0VBX0FNQklHVU9VUywKICAgIFVfRUFfSEFMRldJ
RFRILAogICAgVV9FQV9GVUxMV0lEVEgsCiAgICBVX0VBX05BUlJPVywKICAgIFVfRUFfV0lERSwK
ICAgIFVfRUFfQ09VTlQKfSBVRWFzdEFzaWFuV2lkdGg7CiMgMTQ5OSAiL3Vzci9pbmNsdWRlL2Fy
bS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y2hhci5oIiAzIDQKdHlwZWRlZiBlbnVtIFVDaGFy
TmFtZUNob2ljZSB7CgogICAgVV9VTklDT0RFX0NIQVJfTkFNRSwKCgoKCgoKICAgIFVfVU5JQ09E
RV8xMF9DSEFSX05BTUUsCgoKICAgIFVfRVhURU5ERURfQ0hBUl9OQU1FID0gVV9VTklDT0RFX0NI
QVJfTkFNRSsyLAoKICAgIFVfQ0hBUl9OQU1FX0FMSUFTLAoKICAgIFVfQ0hBUl9OQU1FX0NIT0lD
RV9DT1VOVAp9IFVDaGFyTmFtZUNob2ljZTsKIyAxNTMxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4
LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMgNAp0eXBlZGVmIGVudW0gVVByb3BlcnR5TmFt
ZUNob2ljZSB7CiAgICBVX1NIT1JUX1BST1BFUlRZX05BTUUsCiAgICBVX0xPTkdfUFJPUEVSVFlf
TkFNRSwKICAgIFVfUFJPUEVSVFlfTkFNRV9DSE9JQ0VfQ09VTlQKfSBVUHJvcGVydHlOYW1lQ2hv
aWNlOwoKCgoKCgoKdHlwZWRlZiBlbnVtIFVEZWNvbXBvc2l0aW9uVHlwZSB7CgoKCgoKCiAgICBV
X0RUX05PTkUsCiAgICBVX0RUX0NBTk9OSUNBTCwKICAgIFVfRFRfQ09NUEFULAogICAgVV9EVF9D
SVJDTEUsCiAgICBVX0RUX0ZJTkFMLAogICAgVV9EVF9GT05ULAogICAgVV9EVF9GUkFDVElPTiwK
ICAgIFVfRFRfSU5JVElBTCwKICAgIFVfRFRfSVNPTEFURUQsCiAgICBVX0RUX01FRElBTCwKICAg
IFVfRFRfTkFSUk9XLAogICAgVV9EVF9OT0JSRUFLLAogICAgVV9EVF9TTUFMTCwKICAgIFVfRFRf
U1FVQVJFLAogICAgVV9EVF9TVUIsCiAgICBVX0RUX1NVUEVSLAogICAgVV9EVF9WRVJUSUNBTCwK
ICAgIFVfRFRfV0lERSwKICAgIFVfRFRfQ09VTlQKfSBVRGVjb21wb3NpdGlvblR5cGU7CgoKCgoK
Cgp0eXBlZGVmIGVudW0gVUpvaW5pbmdUeXBlIHsKCgoKCgoKICAgIFVfSlRfTk9OX0pPSU5JTkcs
CiAgICBVX0pUX0pPSU5fQ0FVU0lORywKICAgIFVfSlRfRFVBTF9KT0lOSU5HLAogICAgVV9KVF9M
RUZUX0pPSU5JTkcsCiAgICBVX0pUX1JJR0hUX0pPSU5JTkcsCiAgICBVX0pUX1RSQU5TUEFSRU5U
LAogICAgVV9KVF9DT1VOVAp9IFVKb2luaW5nVHlwZTsKCgoKCgoKCnR5cGVkZWYgZW51bSBVSm9p
bmluZ0dyb3VwIHsKCgoKCgoKICAgIFVfSkdfTk9fSk9JTklOR19HUk9VUCwKICAgIFVfSkdfQUlO
LAogICAgVV9KR19BTEFQSCwKICAgIFVfSkdfQUxFRiwKICAgIFVfSkdfQkVILAogICAgVV9KR19C
RVRILAogICAgVV9KR19EQUwsCiAgICBVX0pHX0RBTEFUSF9SSVNILAogICAgVV9KR19FLAogICAg
VV9KR19GRUgsCiAgICBVX0pHX0ZJTkFMX1NFTUtBVEgsCiAgICBVX0pHX0dBRiwKICAgIFVfSkdf
R0FNQUwsCiAgICBVX0pHX0hBSCwKICAgIFVfSkdfVEVIX01BUkJVVEFfR09BTCwKICAgIFVfSkdf
SEFNWkFfT05fSEVIX0dPQUw9VV9KR19URUhfTUFSQlVUQV9HT0FMLAogICAgVV9KR19IRSwKICAg
IFVfSkdfSEVILAogICAgVV9KR19IRUhfR09BTCwKICAgIFVfSkdfSEVUSCwKICAgIFVfSkdfS0FG
LAogICAgVV9KR19LQVBILAogICAgVV9KR19LTk9UVEVEX0hFSCwKICAgIFVfSkdfTEFNLAogICAg
VV9KR19MQU1BREgsCiAgICBVX0pHX01FRU0sCiAgICBVX0pHX01JTSwKICAgIFVfSkdfTk9PTiwK
ICAgIFVfSkdfTlVOLAogICAgVV9KR19QRSwKICAgIFVfSkdfUUFGLAogICAgVV9KR19RQVBILAog
ICAgVV9KR19SRUgsCiAgICBVX0pHX1JFVkVSU0VEX1BFLAogICAgVV9KR19TQUQsCiAgICBVX0pH
X1NBREhFLAogICAgVV9KR19TRUVOLAogICAgVV9KR19TRU1LQVRILAogICAgVV9KR19TSElOLAog
ICAgVV9KR19TV0FTSF9LQUYsCiAgICBVX0pHX1NZUklBQ19XQVcsCiAgICBVX0pHX1RBSCwKICAg
IFVfSkdfVEFXLAogICAgVV9KR19URUhfTUFSQlVUQSwKICAgIFVfSkdfVEVUSCwKICAgIFVfSkdf
V0FXLAogICAgVV9KR19ZRUgsCiAgICBVX0pHX1lFSF9CQVJSRUUsCiAgICBVX0pHX1lFSF9XSVRI
X1RBSUwsCiAgICBVX0pHX1lVREgsCiAgICBVX0pHX1lVREhfSEUsCiAgICBVX0pHX1pBSU4sCiAg
ICBVX0pHX0ZFLAogICAgVV9KR19LSEFQSCwKICAgIFVfSkdfWkhBSU4sCiAgICBVX0pHX0JVUlVT
SEFTS0lfWUVIX0JBUlJFRSwKICAgIFVfSkdfRkFSU0lfWUVILAogICAgVV9KR19OWUEsCiAgICBV
X0pHX1JPSElOR1lBX1lFSCwKICAgIFVfSkdfQ09VTlQKfSBVSm9pbmluZ0dyb3VwOwoKCgoKCgoK
dHlwZWRlZiBlbnVtIFVHcmFwaGVtZUNsdXN0ZXJCcmVhayB7CgoKCgoKCiAgICBVX0dDQl9PVEhF
UiA9IDAsCiAgICBVX0dDQl9DT05UUk9MID0gMSwKICAgIFVfR0NCX0NSID0gMiwKICAgIFVfR0NC
X0VYVEVORCA9IDMsCiAgICBVX0dDQl9MID0gNCwKICAgIFVfR0NCX0xGID0gNSwKICAgIFVfR0NC
X0xWID0gNiwKICAgIFVfR0NCX0xWVCA9IDcsCiAgICBVX0dDQl9UID0gOCwKICAgIFVfR0NCX1Yg
PSA5LAogICAgVV9HQ0JfU1BBQ0lOR19NQVJLID0gMTAsCiAgICBVX0dDQl9QUkVQRU5EID0gMTEs
CiAgICBVX0dDQl9SRUdJT05BTF9JTkRJQ0FUT1IgPSAxMiwKICAgIFVfR0NCX0NPVU5UID0gMTMK
fSBVR3JhcGhlbWVDbHVzdGVyQnJlYWs7CiMgMTcwNCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvdW5pY29kZS91Y2hhci5oIiAzIDQKdHlwZWRlZiBlbnVtIFVXb3JkQnJlYWtWYWx1
ZXMgewoKCgoKCgogICAgVV9XQl9PVEhFUiA9IDAsCiAgICBVX1dCX0FMRVRURVIgPSAxLAogICAg
VV9XQl9GT1JNQVQgPSAyLAogICAgVV9XQl9LQVRBS0FOQSA9IDMsCiAgICBVX1dCX01JRExFVFRF
UiA9IDQsCiAgICBVX1dCX01JRE5VTSA9IDUsCiAgICBVX1dCX05VTUVSSUMgPSA2LAogICAgVV9X
Ql9FWFRFTkROVU1MRVQgPSA3LAogICAgVV9XQl9DUiA9IDgsCiAgICBVX1dCX0VYVEVORCA9IDks
CiAgICBVX1dCX0xGID0gMTAsCiAgICBVX1dCX01JRE5VTUxFVCA9MTEsCiAgICBVX1dCX05FV0xJ
TkUgPTEyLAogICAgVV9XQl9SRUdJT05BTF9JTkRJQ0FUT1IgPSAxMywKICAgIFVfV0JfSEVCUkVX
X0xFVFRFUiA9IDE0LAogICAgVV9XQl9TSU5HTEVfUVVPVEUgPSAxNSwKICAgIFVfV0JfRE9VQkxF
X1FVT1RFID0gMTYsCiAgICBVX1dCX0NPVU5UID0gMTcKfSBVV29yZEJyZWFrVmFsdWVzOwoKCgoK
CgoKdHlwZWRlZiBlbnVtIFVTZW50ZW5jZUJyZWFrIHsKCgoKCgoKICAgIFVfU0JfT1RIRVIgPSAw
LAogICAgVV9TQl9BVEVSTSA9IDEsCiAgICBVX1NCX0NMT1NFID0gMiwKICAgIFVfU0JfRk9STUFU
ID0gMywKICAgIFVfU0JfTE9XRVIgPSA0LAogICAgVV9TQl9OVU1FUklDID0gNSwKICAgIFVfU0Jf
T0xFVFRFUiA9IDYsCiAgICBVX1NCX1NFUCA9IDcsCiAgICBVX1NCX1NQID0gOCwKICAgIFVfU0Jf
U1RFUk0gPSA5LAogICAgVV9TQl9VUFBFUiA9IDEwLAogICAgVV9TQl9DUiA9IDExLAogICAgVV9T
Ql9FWFRFTkQgPSAxMiwKICAgIFVfU0JfTEYgPSAxMywKICAgIFVfU0JfU0NPTlRJTlVFID0gMTQs
CiAgICBVX1NCX0NPVU5UID0gMTUKfSBVU2VudGVuY2VCcmVhazsKCgoKCgoKCnR5cGVkZWYgZW51
bSBVTGluZUJyZWFrIHsKCgoKCgoKICAgIFVfTEJfVU5LTk9XTiA9IDAsCiAgICBVX0xCX0FNQklH
VU9VUyA9IDEsCiAgICBVX0xCX0FMUEhBQkVUSUMgPSAyLAogICAgVV9MQl9CUkVBS19CT1RIID0g
MywKICAgIFVfTEJfQlJFQUtfQUZURVIgPSA0LAogICAgVV9MQl9CUkVBS19CRUZPUkUgPSA1LAog
ICAgVV9MQl9NQU5EQVRPUllfQlJFQUsgPSA2LAogICAgVV9MQl9DT05USU5HRU5UX0JSRUFLID0g
NywKICAgIFVfTEJfQ0xPU0VfUFVOQ1RVQVRJT04gPSA4LAogICAgVV9MQl9DT01CSU5JTkdfTUFS
SyA9IDksCiAgICBVX0xCX0NBUlJJQUdFX1JFVFVSTiA9IDEwLAogICAgVV9MQl9FWENMQU1BVElP
TiA9IDExLAogICAgVV9MQl9HTFVFID0gMTIsCiAgICBVX0xCX0hZUEhFTiA9IDEzLAogICAgVV9M
Ql9JREVPR1JBUEhJQyA9IDE0LAoKICAgIFVfTEJfSU5TRVBBUkFCTEUgPSAxNSwKICAgIFVfTEJf
SU5TRVBFUkFCTEUgPSBVX0xCX0lOU0VQQVJBQkxFLAogICAgVV9MQl9JTkZJWF9OVU1FUklDID0g
MTYsCiAgICBVX0xCX0xJTkVfRkVFRCA9IDE3LAogICAgVV9MQl9OT05TVEFSVEVSID0gMTgsCiAg
ICBVX0xCX05VTUVSSUMgPSAxOSwKICAgIFVfTEJfT1BFTl9QVU5DVFVBVElPTiA9IDIwLAogICAg
VV9MQl9QT1NURklYX05VTUVSSUMgPSAyMSwKICAgIFVfTEJfUFJFRklYX05VTUVSSUMgPSAyMiwK
ICAgIFVfTEJfUVVPVEFUSU9OID0gMjMsCiAgICBVX0xCX0NPTVBMRVhfQ09OVEVYVCA9IDI0LAog
ICAgVV9MQl9TVVJST0dBVEUgPSAyNSwKICAgIFVfTEJfU1BBQ0UgPSAyNiwKICAgIFVfTEJfQlJF
QUtfU1lNQk9MUyA9IDI3LAogICAgVV9MQl9aV1NQQUNFID0gMjgsCiAgICBVX0xCX05FWFRfTElO
RSA9IDI5LAogICAgVV9MQl9XT1JEX0pPSU5FUiA9IDMwLAogICAgVV9MQl9IMiA9IDMxLAogICAg
VV9MQl9IMyA9IDMyLAogICAgVV9MQl9KTCA9IDMzLAogICAgVV9MQl9KVCA9IDM0LAogICAgVV9M
Ql9KViA9IDM1LAogICAgVV9MQl9DTE9TRV9QQVJFTlRIRVNJUyA9IDM2LAogICAgVV9MQl9DT05E
SVRJT05BTF9KQVBBTkVTRV9TVEFSVEVSID0gMzcsCiAgICBVX0xCX0hFQlJFV19MRVRURVIgPSAz
OCwKICAgIFVfTEJfUkVHSU9OQUxfSU5ESUNBVE9SID0gMzksCiAgICBVX0xCX0NPVU5UID0gNDAK
fSBVTGluZUJyZWFrOwoKCgoKCgoKdHlwZWRlZiBlbnVtIFVOdW1lcmljVHlwZSB7CgoKCgoKCiAg
ICBVX05UX05PTkUsCiAgICBVX05UX0RFQ0lNQUwsCiAgICBVX05UX0RJR0lULAogICAgVV9OVF9O
VU1FUklDLAogICAgVV9OVF9DT1VOVAp9IFVOdW1lcmljVHlwZTsKCgoKCgoKCnR5cGVkZWYgZW51
bSBVSGFuZ3VsU3lsbGFibGVUeXBlIHsKCgoKCgoKICAgIFVfSFNUX05PVF9BUFBMSUNBQkxFLAog
ICAgVV9IU1RfTEVBRElOR19KQU1PLAogICAgVV9IU1RfVk9XRUxfSkFNTywKICAgIFVfSFNUX1RS
QUlMSU5HX0pBTU8sCiAgICBVX0hTVF9MVl9TWUxMQUJMRSwKICAgIFVfSFNUX0xWVF9TWUxMQUJM
RSwKICAgIFVfSFNUX0NPVU5UCn0gVUhhbmd1bFN5bGxhYmxlVHlwZTsKIyAxODg4ICIvdXNyL2lu
Y2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMgNApleHRlcm4gIkMi
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFVCb29sCnVfaGFzQmluYXJ5
UHJvcGVydHlfNTIoVUNoYXIzMiBjLCBVUHJvcGVydHkgd2hpY2gpOwojIDE5MDMgIi91c3IvaW5j
bHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNoYXIuaCIgMyA0CmV4dGVybiAiQyIg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgVUJvb2wKdV9pc1VBbHBoYWJl
dGljXzUyKFVDaGFyMzIgYyk7CiMgMTkxOCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJp
aGYvdW5pY29kZS91Y2hhci5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKSBVQm9vbAp1X2lzVUxvd2VyY2FzZV81MihVQ2hhcjMyIGMpOwojIDE5
MzMgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNoYXIuaCIgMyA0
CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgVUJvb2wK
dV9pc1VVcHBlcmNhc2VfNTIoVUNoYXIzMiBjKTsKIyAxOTU0ICIvdXNyL2luY2x1ZGUvYXJtLWxp
bnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFVCb29sCnVfaXNVV2hpdGVTcGFjZV81MihVQ2hh
cjMyIGMpOwojIDE5OTQgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUv
dWNoYXIuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSkgaW50MzJfdAp1X2dldEludFByb3BlcnR5VmFsdWVfNTIoVUNoYXIzMiBjLCBVUHJvcGVy
dHkgd2hpY2gpOwojIDIwMTUgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNv
ZGUvdWNoYXIuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSkgaW50MzJfdAp1X2dldEludFByb3BlcnR5TWluVmFsdWVfNTIoVVByb3BlcnR5IHdo
aWNoKTsKIyAyMDQ0ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3Vj
aGFyLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpIGludDMyX3QKdV9nZXRJbnRQcm9wZXJ0eU1heFZhbHVlXzUyKFVQcm9wZXJ0eSB3aGljaCk7
CiMgMjA2OSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y2hhci5o
IiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBk
b3VibGUKdV9nZXROdW1lcmljVmFsdWVfNTIoVUNoYXIzMiBjKTsKIyAyMDc5ICIvdXNyL2luY2x1
ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMgNAojZGVmaW5lIFVfTk9f
TlVNRVJJQ19WQUxVRSAoKGRvdWJsZSktMTIzNDU2Nzg5LikKIyAyMTA0ICIvdXNyL2luY2x1ZGUv
YXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFVCb29sCnVfaXNsb3dlcl81MihVQ2hh
cjMyIGMpOwojIDIxMzEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUv
dWNoYXIuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSkgVUJvb2wKdV9pc3VwcGVyXzUyKFVDaGFyMzIgYyk7CiMgMjE0OCAiL3Vzci9pbmNsdWRl
L2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y2hhci5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBVQm9vbAp1X2lzdGl0bGVfNTIoVUNo
YXIzMiBjKTsKIyAyMTY5ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2Rl
L3VjaGFyLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIFVCb29sCnVfaXNkaWdpdF81MihVQ2hhcjMyIGMpOwojIDIxOTAgIi91c3IvaW5jbHVk
ZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNoYXIuaCIgMyA0CmV4dGVybiAiQyIgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgVUJvb2wKdV9pc2FscGhhXzUyKFVD
aGFyMzIgYyk7CiMgMjIxMSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29k
ZS91Y2hhci5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKSBVQm9vbAp1X2lzYWxudW1fNTIoVUNoYXIzMiBjKTsKIyAyMjM0ICIvdXNyL2luY2x1
ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMgNApleHRlcm4gIkMiIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFVCb29sCnVfaXN4ZGlnaXRfNTIo
VUNoYXIzMiBjKTsKIyAyMjUwICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmlj
b2RlL3VjaGFyLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpIFVCb29sCnVfaXNwdW5jdF81MihVQ2hhcjMyIGMpOwojIDIyNjkgIi91c3IvaW5j
bHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNoYXIuaCIgMyA0CmV4dGVybiAiQyIg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgVUJvb2wKdV9pc2dyYXBoXzUy
KFVDaGFyMzIgYyk7CiMgMjI5OCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5p
Y29kZS91Y2hhci5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKSBVQm9vbAp1X2lzYmxhbmtfNTIoVUNoYXIzMiBjKTsKIyAyMzIzICIvdXNyL2lu
Y2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMgNApleHRlcm4gIkMi
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFVCb29sCnVfaXNkZWZpbmVk
XzUyKFVDaGFyMzIgYyk7CiMgMjM0NCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYv
dW5pY29kZS91Y2hhci5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKSBVQm9vbAp1X2lzc3BhY2VfNTIoVUNoYXIzMiBjKTsKIyAyMzY1ICIvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMgNApleHRlcm4g
IkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFVCb29sCnVfaXNKYXZh
U3BhY2VDaGFyXzUyKFVDaGFyMzIgYyk7CiMgMjQwNSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvdW5pY29kZS91Y2hhci5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBVQm9vbAp1X2lzV2hpdGVzcGFjZV81MihVQ2hhcjMyIGMp
OwojIDI0MjkgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNoYXIu
aCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkg
VUJvb2wKdV9pc2NudHJsXzUyKFVDaGFyMzIgYyk7CiMgMjQ0NCAiL3Vzci9pbmNsdWRlL2FybS1s
aW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y2hhci5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBVQm9vbAp1X2lzSVNPQ29udHJvbF81MihVQ2hh
cjMyIGMpOwojIDI0NjIgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUv
dWNoYXIuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSkgVUJvb2wKdV9pc3ByaW50XzUyKFVDaGFyMzIgYyk7CiMgMjQ4MyAiL3Vzci9pbmNsdWRl
L2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y2hhci5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBVQm9vbAp1X2lzYmFzZV81MihVQ2hh
cjMyIGMpOwojIDI1MDIgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUv
dWNoYXIuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSkgVUNoYXJEaXJlY3Rpb24KdV9jaGFyRGlyZWN0aW9uXzUyKFVDaGFyMzIgYyk7CiMgMjUy
MCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y2hhci5oIiAzIDQK
ZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBVQm9vbAp1
X2lzTWlycm9yZWRfNTIoVUNoYXIzMiBjKTsKIyAyNTQyICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4
LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFVDaGFyMzIKdV9jaGFyTWlycm9yXzUyKFVDaGFyMzIg
Yyk7CiMgMjU2MSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y2hh
ci5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KSBVQ2hhcjMyCnVfZ2V0QmlkaVBhaXJlZEJyYWNrZXRfNTIoVUNoYXIzMiBjKTsKIyAyNTc1ICIv
dXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMgNApleHRl
cm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGludDhfdAp1X2No
YXJUeXBlXzUyKFVDaGFyMzIgYyk7CiMgMjU5MSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVl
YWJpaGYvdW5pY29kZS91Y2hhci5oIiAzIDQKI2RlZmluZSBVX0dFVF9HQ19NQVNLKGMpIFVfTUFT
Syh1X2NoYXJUeXBlKGMpKQojIDI2MTAgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L3VuaWNvZGUvdWNoYXIuaCIgMyA0CnR5cGVkZWYgVUJvb2wKVUNoYXJFbnVtVHlwZVJhbmdlKGNv
bnN0IHZvaWQgKmNvbnRleHQsIFVDaGFyMzIgc3RhcnQsIFVDaGFyMzIgbGltaXQsIFVDaGFyQ2F0
ZWdvcnkgdHlwZSk7CiMgMjYzMiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5p
Y29kZS91Y2hhci5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKSB2b2lkCnVfZW51bUNoYXJUeXBlc181MihVQ2hhckVudW1UeXBlUmFuZ2UgKmVu
dW1SYW5nZSwgY29uc3Qgdm9pZCAqY29udGV4dCk7CiMgMjY0NCAiL3Vzci9pbmNsdWRlL2FybS1s
aW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y2hhci5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSB1aW50OF90CnVfZ2V0Q29tYmluaW5nQ2xhc3Nf
NTIoVUNoYXIzMiBjKTsKIyAyNjcyICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91
bmljb2RlL3VjaGFyLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpIGludDMyX3QKdV9jaGFyRGlnaXRWYWx1ZV81MihVQ2hhcjMyIGMpOwojIDI2
ODQgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNoYXIuaCIgMyA0
CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgVUJsb2Nr
Q29kZQp1YmxvY2tfZ2V0Q29kZV81MihVQ2hhcjMyIGMpOwojIDI3MTkgIi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNoYXIuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgaW50MzJfdAp1X2NoYXJOYW1lXzUyKFVD
aGFyMzIgY29kZSwgVUNoYXJOYW1lQ2hvaWNlIG5hbWVDaG9pY2UsCiAgICAgICAgICAgY2hhciAq
YnVmZmVyLCBpbnQzMl90IGJ1ZmZlckxlbmd0aCwKICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJy
b3JDb2RlKTsKIyAyNzQzICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2Rl
L3VjaGFyLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIGludDMyX3QKdV9nZXRJU09Db21tZW50XzUyKFVDaGFyMzIgYywKICAgICAgICAgICAg
ICAgIGNoYXIgKmRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5LAogICAgICAgICAgICAgICAgVUVy
cm9yQ29kZSAqcEVycm9yQ29kZSk7CiMgMjc2OSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVl
YWJpaGYvdW5pY29kZS91Y2hhci5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKSBVQ2hhcjMyCnVfY2hhckZyb21OYW1lXzUyKFVDaGFyTmFtZUNo
b2ljZSBuYW1lQ2hvaWNlLAogICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAogICAgICAg
ICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKIyAyNzkxICIvdXNyL2luY2x1ZGUvYXJt
LWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMgNAp0eXBlZGVmIFVCb29sIFVFbnVt
Q2hhck5hbWVzRm4odm9pZCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVDaGFyMzIgY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyTmFtZUNo
b2ljZSBuYW1lQ2hvaWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoKTsK
IyAyODE4ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgi
IDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIHZv
aWQKdV9lbnVtQ2hhck5hbWVzXzUyKFVDaGFyMzIgc3RhcnQsIFVDaGFyMzIgbGltaXQsCiAgICAg
ICAgICAgICAgICBVRW51bUNoYXJOYW1lc0ZuICpmbiwKICAgICAgICAgICAgICAgIHZvaWQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICBVQ2hhck5hbWVDaG9pY2UgbmFtZUNob2ljZSwKICAgICAg
ICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwojIDI4NTYgIi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNoYXIuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgY29uc3QgY2hhcioKdV9nZXRQcm9wZXJ0
eU5hbWVfNTIoVVByb3BlcnR5IHByb3BlcnR5LAogICAgICAgICAgICAgICAgICBVUHJvcGVydHlO
YW1lQ2hvaWNlIG5hbWVDaG9pY2UpOwojIDI4NzkgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251
ZWFiaWhmL3VuaWNvZGUvdWNoYXIuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSkgVVByb3BlcnR5CnVfZ2V0UHJvcGVydHlFbnVtXzUyKGNvbnN0
IGNoYXIqIGFsaWFzKTsKIyAyOTI5ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91
bmljb2RlL3VjaGFyLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpIGNvbnN0IGNoYXIqCnVfZ2V0UHJvcGVydHlWYWx1ZU5hbWVfNTIoVVByb3Bl
cnR5IHByb3BlcnR5LAogICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgdmFsdWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgVVByb3BlcnR5TmFtZUNob2ljZSBuYW1lQ2hvaWNlKTsKIyAyOTY1
ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMgNApl
eHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGludDMyX3QK
dV9nZXRQcm9wZXJ0eVZhbHVlRW51bV81MihVUHJvcGVydHkgcHJvcGVydHksCiAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogYWxpYXMpOwojIDI5ODYgIi91c3IvaW5jbHVkZS9hcm0t
bGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNoYXIuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgVUJvb2wKdV9pc0lEU3RhcnRfNTIoVUNoYXIz
MiBjKTsKIyAzMDEwICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3Vj
aGFyLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpIFVCb29sCnVfaXNJRFBhcnRfNTIoVUNoYXIzMiBjKTsKIyAzMDMzICIvdXNyL2luY2x1ZGUv
YXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFVCb29sCnVfaXNJRElnbm9yYWJsZV81
MihVQ2hhcjMyIGMpOwojIDMwNTIgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3Vu
aWNvZGUvdWNoYXIuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSkgVUJvb2wKdV9pc0phdmFJRFN0YXJ0XzUyKFVDaGFyMzIgYyk7CiMgMzA3MyAi
L3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y2hhci5oIiAzIDQKZXh0
ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBVQm9vbAp1X2lz
SmF2YUlEUGFydF81MihVQ2hhcjMyIGMpOwojIDMwOTggIi91c3IvaW5jbHVkZS9hcm0tbGludXgt
Z251ZWFiaWhmL3VuaWNvZGUvdWNoYXIuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgVUNoYXIzMgp1X3RvbG93ZXJfNTIoVUNoYXIzMiBjKTsK
IyAzMTIzICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VjaGFyLmgi
IDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFVD
aGFyMzIKdV90b3VwcGVyXzUyKFVDaGFyMzIgYyk7CiMgMzE0OCAiL3Vzci9pbmNsdWRlL2FybS1s
aW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y2hhci5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBVQ2hhcjMyCnVfdG90aXRsZV81MihVQ2hhcjMy
IGMpOwoKCiNkZWZpbmUgVV9GT0xEX0NBU0VfREVGQVVMVCAwCiMgMzE3MCAiL3Vzci9pbmNsdWRl
L2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y2hhci5oIiAzIDQKI2RlZmluZSBVX0ZPTERf
Q0FTRV9FWENMVURFX1NQRUNJQUxfSSAxCiMgMzE5NCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvdW5pY29kZS91Y2hhci5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBVQ2hhcjMyCnVfZm9sZENhc2VfNTIoVUNoYXIzMiBjLCB1
aW50MzJfdCBvcHRpb25zKTsKIyAzMjM1ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmlo
Zi91bmljb2RlL3VjaGFyLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpIGludDMyX3QKdV9kaWdpdF81MihVQ2hhcjMyIGNoLCBpbnQ4X3QgcmFk
aXgpOwojIDMyNjYgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNo
YXIuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSkgVUNoYXIzMgp1X2ZvckRpZ2l0XzUyKGludDMyX3QgZGlnaXQsIGludDhfdCByYWRpeCk7CiMg
MzI4MyAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91Y2hhci5oIiAz
IDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSB2b2lk
CnVfY2hhckFnZV81MihVQ2hhcjMyIGMsIFVWZXJzaW9uSW5mbyB2ZXJzaW9uQXJyYXkpOwojIDMy
OTcgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNoYXIuaCIgMyA0
CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgdm9pZAp1
X2dldFVuaWNvZGVWZXJzaW9uXzUyKFVWZXJzaW9uSW5mbyB2ZXJzaW9uQXJyYXkpOwojIDMzMjIg
Ii91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWNoYXIuaCIgMyA0CmV4
dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgaW50MzJfdAp1
X2dldEZDX05GS0NfQ2xvc3VyZV81MihVQ2hhcjMyIGMsIFVDaGFyICpkZXN0LCBpbnQzMl90IGRl
c3RDYXBhY2l0eSwgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CgoKCgp9CiMgMjggIi4uLy4uL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL2FybS1s
aW51eC1nbnVlYWJpaGYvdW5pY29kZS91c3RyaW5nLmgiIDEgMyA0CiMgMTcgIi91c3IvaW5jbHVk
ZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5oIiAzIDQKI2RlZmluZSBVU1RS
SU5HX0ggCgoKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3B1
dGlsLmgiIDEgMyA0CiMgMjUgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNv
ZGUvcHV0aWwuaCIgMyA0CiNkZWZpbmUgUFVUSUxfSCAKIyA2NyAiL3Vzci9pbmNsdWRlL2FybS1s
aW51eC1nbnVlYWJpaGYvdW5pY29kZS9wdXRpbC5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBjb25zdCBjaGFyKiB1X2dldERhdGFEaXJlY3Rv
cnlfNTIodm9pZCk7CiMgODggIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNv
ZGUvcHV0aWwuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSkgdm9pZCB1X3NldERhdGFEaXJlY3RvcnlfNTIoY29uc3QgY2hhciAqZGlyZWN0b3J5
KTsKIyAxMTEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvcHV0aWwu
aCIgMyA0CiNkZWZpbmUgVV9GSUxFX1NFUF9DSEFSICcvJwojZGVmaW5lIFVfRklMRV9BTFRfU0VQ
X0NIQVIgJy8nCiNkZWZpbmUgVV9QQVRIX1NFUF9DSEFSICc6JwojZGVmaW5lIFVfRklMRV9TRVBf
U1RSSU5HICIvIgojZGVmaW5lIFVfRklMRV9BTFRfU0VQX1NUUklORyAiLyIKI2RlZmluZSBVX1BB
VEhfU0VQX1NUUklORyAiOiIKIyAxMzkgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L3VuaWNvZGUvcHV0aWwuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSkgdm9pZAp1X2NoYXJzVG9VQ2hhcnNfNTIoY29uc3QgY2hhciAqY3MsIFVD
aGFyICp1cywgaW50MzJfdCBsZW5ndGgpOwojIDE2MSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvdW5pY29kZS9wdXRpbC5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKSB2b2lkCnVfVUNoYXJzVG9DaGFyc181Mihjb25zdCBVQ2hh
ciAqdXMsIGNoYXIgKmNzLCBpbnQzMl90IGxlbmd0aCk7CiMgMjEgIi91c3IvaW5jbHVkZS9hcm0t
bGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVk
ZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWl0ZXIuaCIgMSAzIDQKIyAxOCAiL3Vzci9p
bmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91aXRlci5oIiAzIDQKI2RlZmluZSBf
X1VJVEVSX0hfXyAKIyAzMCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29k
ZS91aXRlci5oIiAzIDQKICAgIGV4dGVybiAiQysrIiB7IG5hbWVzcGFjZSBpY3VfNTIgewoKICAg
IGNsYXNzIENoYXJhY3Rlckl0ZXJhdG9yOwogICAgY2xhc3MgUmVwbGFjZWFibGU7CgogICAgfSB9
CgoKZXh0ZXJuICJDIiB7CgpzdHJ1Y3QgVUNoYXJJdGVyYXRvcjsKdHlwZWRlZiBzdHJ1Y3QgVUNo
YXJJdGVyYXRvciBVQ2hhckl0ZXJhdG9yOwoKCgoKCgoKdHlwZWRlZiBlbnVtIFVDaGFySXRlcmF0
b3JPcmlnaW4gewogICAgVUlURVJfU1RBUlQsIFVJVEVSX0NVUlJFTlQsIFVJVEVSX0xJTUlULCBV
SVRFUl9aRVJPLCBVSVRFUl9MRU5HVEgKfSBVQ2hhckl0ZXJhdG9yT3JpZ2luOwoKCmVudW0gewoj
IDY5ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VpdGVyLmgiIDMg
NAogICAgVUlURVJfVU5LTk9XTl9JTkRFWD0tMgp9OwojIDg0ICIvdXNyL2luY2x1ZGUvYXJtLWxp
bnV4LWdudWVhYmloZi91bmljb2RlL3VpdGVyLmgiIDMgNAojZGVmaW5lIFVJVEVSX05PX1NUQVRF
ICgodWludDMyX3QpMHhmZmZmZmZmZikKIyAxMDQgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251
ZWFiaWhmL3VuaWNvZGUvdWl0ZXIuaCIgMyA0CnR5cGVkZWYgaW50MzJfdApVQ2hhckl0ZXJhdG9y
R2V0SW5kZXgoVUNoYXJJdGVyYXRvciAqaXRlciwgVUNoYXJJdGVyYXRvck9yaWdpbiBvcmlnaW4p
OwojIDE0MSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91aXRlci5o
IiAzIDQKdHlwZWRlZiBpbnQzMl90ClVDaGFySXRlcmF0b3JNb3ZlKFVDaGFySXRlcmF0b3IgKml0
ZXIsIGludDMyX3QgZGVsdGEsIFVDaGFySXRlcmF0b3JPcmlnaW4gb3JpZ2luKTsKIyAxNTYgIi91
c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWl0ZXIuaCIgMyA0CnR5cGVk
ZWYgVUJvb2wKVUNoYXJJdGVyYXRvckhhc05leHQoVUNoYXJJdGVyYXRvciAqaXRlcik7CiMgMTcw
ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VpdGVyLmgiIDMgNAp0
eXBlZGVmIFVCb29sClVDaGFySXRlcmF0b3JIYXNQcmV2aW91cyhVQ2hhckl0ZXJhdG9yICppdGVy
KTsKIyAxODUgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWl0ZXIu
aCIgMyA0CnR5cGVkZWYgVUNoYXIzMgpVQ2hhckl0ZXJhdG9yQ3VycmVudChVQ2hhckl0ZXJhdG9y
ICppdGVyKTsKIyAyMDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUv
dWl0ZXIuaCIgMyA0CnR5cGVkZWYgVUNoYXIzMgpVQ2hhckl0ZXJhdG9yTmV4dChVQ2hhckl0ZXJh
dG9yICppdGVyKTsKIyAyMTcgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNv
ZGUvdWl0ZXIuaCIgMyA0CnR5cGVkZWYgVUNoYXIzMgpVQ2hhckl0ZXJhdG9yUHJldmlvdXMoVUNo
YXJJdGVyYXRvciAqaXRlcik7CiMgMjMxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmlo
Zi91bmljb2RlL3VpdGVyLmgiIDMgNAp0eXBlZGVmIGludDMyX3QKVUNoYXJJdGVyYXRvclJlc2Vy
dmVkKFVDaGFySXRlcmF0b3IgKml0ZXIsIGludDMyX3Qgc29tZXRoaW5nKTsKIyAyNzggIi91c3Iv
aW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWl0ZXIuaCIgMyA0CnR5cGVkZWYg
dWludDMyX3QKVUNoYXJJdGVyYXRvckdldFN0YXRlKGNvbnN0IFVDaGFySXRlcmF0b3IgKml0ZXIp
OwojIDMwNiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91aXRlci5o
IiAzIDQKdHlwZWRlZiB2b2lkClVDaGFySXRlcmF0b3JTZXRTdGF0ZShVQ2hhckl0ZXJhdG9yICpp
dGVyLCB1aW50MzJfdCBzdGF0ZSwgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CiMgMzM5ICIvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VpdGVyLmgiIDMgNApzdHJ1Y3Qg
VUNoYXJJdGVyYXRvciB7CgoKCgoKICAgIGNvbnN0IHZvaWQgKmNvbnRleHQ7CgoKCgoKCiAgICBp
bnQzMl90IGxlbmd0aDsKCgoKCgoKICAgIGludDMyX3Qgc3RhcnQ7CgoKCgoKCiAgICBpbnQzMl90
IGluZGV4OwoKCgoKCgogICAgaW50MzJfdCBsaW1pdDsKCgoKCgogICAgaW50MzJfdCByZXNlcnZl
ZEZpZWxkOwojIDM4OCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91
aXRlci5oIiAzIDQKICAgIFVDaGFySXRlcmF0b3JHZXRJbmRleCAqZ2V0SW5kZXg7CiMgMzk5ICIv
dXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VpdGVyLmgiIDMgNAogICAg
VUNoYXJJdGVyYXRvck1vdmUgKm1vdmU7CiMgNDA4ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdu
dWVhYmloZi91bmljb2RlL3VpdGVyLmgiIDMgNAogICAgVUNoYXJJdGVyYXRvckhhc05leHQgKmhh
c05leHQ7CgoKCgoKCgogICAgVUNoYXJJdGVyYXRvckhhc1ByZXZpb3VzICpoYXNQcmV2aW91czsK
IyA0MjUgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWl0ZXIuaCIg
MyA0CiAgICBVQ2hhckl0ZXJhdG9yQ3VycmVudCAqY3VycmVudDsKIyA0MzUgIi91c3IvaW5jbHVk
ZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWl0ZXIuaCIgMyA0CiAgICBVQ2hhckl0ZXJh
dG9yTmV4dCAqbmV4dDsKIyA0NDUgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3Vu
aWNvZGUvdWl0ZXIuaCIgMyA0CiAgICBVQ2hhckl0ZXJhdG9yUHJldmlvdXMgKnByZXZpb3VzOwoK
CgoKCgoKICAgIFVDaGFySXRlcmF0b3JSZXNlcnZlZCAqcmVzZXJ2ZWRGbjsKIyA0NjIgIi91c3Iv
aW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWl0ZXIuaCIgMyA0CiAgICBVQ2hh
ckl0ZXJhdG9yR2V0U3RhdGUgKmdldFN0YXRlOwojIDQ3MiAiL3Vzci9pbmNsdWRlL2FybS1saW51
eC1nbnVlYWJpaGYvdW5pY29kZS91aXRlci5oIiAzIDQKICAgIFVDaGFySXRlcmF0b3JTZXRTdGF0
ZSAqc2V0U3RhdGU7Cn07CiMgNDkzICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91
bmljb2RlL3VpdGVyLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpIFVDaGFyMzIKdWl0ZXJfY3VycmVudDMyXzUyKFVDaGFySXRlcmF0b3IgKml0
ZXIpOwojIDUxMCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91aXRl
ci5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KSBVQ2hhcjMyCnVpdGVyX25leHQzMl81MihVQ2hhckl0ZXJhdG9yICppdGVyKTsKIyA1MjcgIi91
c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWl0ZXIuaCIgMyA0CmV4dGVy
biAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgVUNoYXIzMgp1aXRl
cl9wcmV2aW91czMyXzUyKFVDaGFySXRlcmF0b3IgKml0ZXIpOwojIDU0OCAiL3Vzci9pbmNsdWRl
L2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91aXRlci5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSB1aW50MzJfdAp1aXRlcl9nZXRTdGF0
ZV81Mihjb25zdCBVQ2hhckl0ZXJhdG9yICppdGVyKTsKIyA1NjYgIi91c3IvaW5jbHVkZS9hcm0t
bGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdWl0ZXIuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgdm9pZAp1aXRlcl9zZXRTdGF0ZV81MihVQ2hh
ckl0ZXJhdG9yICppdGVyLCB1aW50MzJfdCBzdGF0ZSwgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7
CiMgNTkxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VpdGVyLmgi
IDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIHZv
aWQKdWl0ZXJfc2V0U3RyaW5nXzUyKFVDaGFySXRlcmF0b3IgKml0ZXIsIGNvbnN0IFVDaGFyICpz
LCBpbnQzMl90IGxlbmd0aCk7CiMgNjE0ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmlo
Zi91bmljb2RlL3VpdGVyLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpIHZvaWQKdWl0ZXJfc2V0VVRGMTZCRV81MihVQ2hhckl0ZXJhdG9yICpp
dGVyLCBjb25zdCBjaGFyICpzLCBpbnQzMl90IGxlbmd0aCk7CiMgNjUwICIvdXNyL2luY2x1ZGUv
YXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VpdGVyLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIHZvaWQKdWl0ZXJfc2V0VVRGOF81MihV
Q2hhckl0ZXJhdG9yICppdGVyLCBjb25zdCBjaGFyICpzLCBpbnQzMl90IGxlbmd0aCk7CiMgNjc1
ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VpdGVyLmgiIDMgNApl
eHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIHZvaWQKdWl0
ZXJfc2V0Q2hhcmFjdGVySXRlcmF0b3JfNTIoVUNoYXJJdGVyYXRvciAqaXRlciwgaWN1OjpDaGFy
YWN0ZXJJdGVyYXRvciAqY2hhckl0ZXIpOwojIDcwMCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvdW5pY29kZS91aXRlci5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKSB2b2lkCnVpdGVyX3NldFJlcGxhY2VhYmxlXzUyKFVDaGFy
SXRlcmF0b3IgKml0ZXIsIGNvbnN0IGljdTo6UmVwbGFjZWFibGUgKnJlcCk7CgoKCn0KIyAyMiAi
L3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91c3RyaW5nLmgiIDIgMyA0
CgoKCgoKCgojZGVmaW5lIFVCUktfVFlQRURFRl9VQlJFQUtfSVRFUkFUT1IgCgogICAgdHlwZWRl
ZiBzdHJ1Y3QgVUJyZWFrSXRlcmF0b3IgVUJyZWFrSXRlcmF0b3I7CiMgOTAgIi91c3IvaW5jbHVk
ZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBpbnQzMl90CnVfc3RybGVuXzUy
KGNvbnN0IFVDaGFyICpzKTsKIyAxMDcgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L3VuaWNvZGUvdXN0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKSBpbnQzMl90CnVfY291bnRDaGFyMzJfNTIoY29uc3QgVUNoYXIgKnMs
IGludDMyX3QgbGVuZ3RoKTsKIyAxMjggIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L3VuaWNvZGUvdXN0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKSBVQm9vbAp1X3N0ckhhc01vcmVDaGFyMzJUaGFuXzUyKGNvbnN0IFVD
aGFyICpzLCBpbnQzMl90IGxlbmd0aCwgaW50MzJfdCBudW1iZXIpOwojIDE0MSAiL3Vzci9pbmNs
dWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91c3RyaW5nLmgiIDMgNApleHRlcm4gIkMi
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFVDaGFyKgp1X3N0cmNhdF81
MihVQ2hhciAqZHN0LAogICAgY29uc3QgVUNoYXIgKnNyYyk7CiMgMTU5ICIvdXNyL2luY2x1ZGUv
YXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VzdHJpbmcuaCIgMyA0CmV4dGVybiAiQyIgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgVUNoYXIqCnVfc3RybmNhdF81MihV
Q2hhciAqZHN0LAogICAgIGNvbnN0IFVDaGFyICpzcmMsCiAgICAgaW50MzJfdCBuKTsKIyAxODQg
Ii91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5oIiAzIDQK
ZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBVQ2hhciAq
CnVfc3Ryc3RyXzUyKGNvbnN0IFVDaGFyICpzLCBjb25zdCBVQ2hhciAqc3Vic3RyaW5nKTsKIyAy
MDggIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5oIiAz
IDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBVQ2hh
ciAqCnVfc3RyRmluZEZpcnN0XzUyKGNvbnN0IFVDaGFyICpzLCBpbnQzMl90IGxlbmd0aCwgY29u
c3QgVUNoYXIgKnN1YnN0cmluZywgaW50MzJfdCBzdWJMZW5ndGgpOwojIDIyOCAiL3Vzci9pbmNs
dWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91c3RyaW5nLmgiIDMgNApleHRlcm4gIkMi
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFVDaGFyICoKdV9zdHJjaHJf
NTIoY29uc3QgVUNoYXIgKnMsIFVDaGFyIGMpOwojIDI0OCAiL3Vzci9pbmNsdWRlL2FybS1saW51
eC1nbnVlYWJpaGYvdW5pY29kZS91c3RyaW5nLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFVDaGFyICoKdV9zdHJjaHIzMl81Mihjb25zdCBV
Q2hhciAqcywgVUNoYXIzMiBjKTsKIyAyNzEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFi
aWhmL3VuaWNvZGUvdXN0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKSBVQ2hhciAqCnVfc3RycnN0cl81Mihjb25zdCBVQ2hhciAqcywg
Y29uc3QgVUNoYXIgKnN1YnN0cmluZyk7CiMgMjk1ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdu
dWVhYmloZi91bmljb2RlL3VzdHJpbmcuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgVUNoYXIgKgp1X3N0ckZpbmRMYXN0XzUyKGNvbnN0IFVD
aGFyICpzLCBpbnQzMl90IGxlbmd0aCwgY29uc3QgVUNoYXIgKnN1YnN0cmluZywgaW50MzJfdCBz
dWJMZW5ndGgpOwojIDMxNSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29k
ZS91c3RyaW5nLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpIFVDaGFyICoKdV9zdHJyY2hyXzUyKGNvbnN0IFVDaGFyICpzLCBVQ2hhciBjKTsK
IyAzMzUgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5o
IiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBV
Q2hhciAqCnVfc3RycmNocjMyXzUyKGNvbnN0IFVDaGFyICpzLCBVQ2hhcjMyIGMpOwojIDM1MCAi
L3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91c3RyaW5nLmgiIDMgNApl
eHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFVDaGFyICoK
dV9zdHJwYnJrXzUyKGNvbnN0IFVDaGFyICpzdHJpbmcsIGNvbnN0IFVDaGFyICptYXRjaFNldCk7
CiMgMzY2ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VzdHJpbmcu
aCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkg
aW50MzJfdAp1X3N0cmNzcG5fNTIoY29uc3QgVUNoYXIgKnN0cmluZywgY29uc3QgVUNoYXIgKm1h
dGNoU2V0KTsKIyAzODIgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUv
dXN0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKSBpbnQzMl90CnVfc3Ryc3BuXzUyKGNvbnN0IFVDaGFyICpzdHJpbmcsIGNvbnN0IFVD
aGFyICptYXRjaFNldCk7CiMgNDEwICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91
bmljb2RlL3VzdHJpbmcuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSkgVUNoYXIgKgp1X3N0cnRva19yXzUyKFVDaGFyICpzcmMsCiAgICAgY29u
c3QgVUNoYXIgKmRlbGltLAogICAgICAgICAgIFVDaGFyICoqc2F2ZVN0YXRlKTsKIyA0MjUgIi91
c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5oIiAzIDQKZXh0
ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBpbnQzMl90CnVf
c3RyY21wXzUyKGNvbnN0IFVDaGFyICpzMSwKICAgICAgICAgY29uc3QgVUNoYXIgKnMyKTsKIyA0
NDAgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5oIiAz
IDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBpbnQz
Ml90CnVfc3RyY21wQ29kZVBvaW50T3JkZXJfNTIoY29uc3QgVUNoYXIgKnMxLCBjb25zdCBVQ2hh
ciAqczIpOwojIDQ3MCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91
c3RyaW5nLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIGludDMyX3QKdV9zdHJDb21wYXJlXzUyKGNvbnN0IFVDaGFyICpzMSwgaW50MzJfdCBs
ZW5ndGgxLAogICAgICAgICAgICAgY29uc3QgVUNoYXIgKnMyLCBpbnQzMl90IGxlbmd0aDIsCiAg
ICAgICAgICAgICBVQm9vbCBjb2RlUG9pbnRPcmRlcik7CiMgNDk1ICIvdXNyL2luY2x1ZGUvYXJt
LWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VzdHJpbmcuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgaW50MzJfdAp1X3N0ckNvbXBhcmVJdGVy
XzUyKFVDaGFySXRlcmF0b3IgKml0ZXIxLCBVQ2hhckl0ZXJhdG9yICppdGVyMiwgVUJvb2wgY29k
ZVBvaW50T3JkZXIpOwojIDUwNSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5p
Y29kZS91c3RyaW5nLmgiIDMgNAojZGVmaW5lIFVfQ09NUEFSRV9DT0RFX1BPSU5UX09SREVSIDB4
ODAwMAojIDU0OCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91c3Ry
aW5nLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpIGludDMyX3QKdV9zdHJDYXNlQ29tcGFyZV81Mihjb25zdCBVQ2hhciAqczEsIGludDMyX3Qg
bGVuZ3RoMSwKICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqczIsIGludDMyX3QgbGVuZ3Ro
MiwKICAgICAgICAgICAgICAgICB1aW50MzJfdCBvcHRpb25zLAogICAgICAgICAgICAgICAgIFVF
cnJvckNvZGUgKnBFcnJvckNvZGUpOwojIDU2NiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVl
YWJpaGYvdW5pY29kZS91c3RyaW5nLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpIGludDMyX3QKdV9zdHJuY21wXzUyKGNvbnN0IFVDaGFyICp1
Y3MxLAogICAgIGNvbnN0IFVDaGFyICp1Y3MyLAogICAgIGludDMyX3Qgbik7CiMgNTg0ICIvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VzdHJpbmcuaCIgMyA0CmV4dGVy
biAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgaW50MzJfdAp1X3N0
cm5jbXBDb2RlUG9pbnRPcmRlcl81Mihjb25zdCBVQ2hhciAqczEsIGNvbnN0IFVDaGFyICpzMiwg
aW50MzJfdCBuKTsKIyA2MDYgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNv
ZGUvdXN0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKSBpbnQzMl90CnVfc3RyY2FzZWNtcF81Mihjb25zdCBVQ2hhciAqczEsIGNvbnN0
IFVDaGFyICpzMiwgdWludDMyX3Qgb3B0aW9ucyk7CiMgNjMwICIvdXNyL2luY2x1ZGUvYXJtLWxp
bnV4LWdudWVhYmloZi91bmljb2RlL3VzdHJpbmcuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgaW50MzJfdAp1X3N0cm5jYXNlY21wXzUyKGNv
bnN0IFVDaGFyICpzMSwgY29uc3QgVUNoYXIgKnMyLCBpbnQzMl90IG4sIHVpbnQzMl90IG9wdGlv
bnMpOwojIDY1NCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91c3Ry
aW5nLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpIGludDMyX3QKdV9tZW1jYXNlY21wXzUyKGNvbnN0IFVDaGFyICpzMSwgY29uc3QgVUNoYXIg
KnMyLCBpbnQzMl90IGxlbmd0aCwgdWludDMyX3Qgb3B0aW9ucyk7CiMgNjY1ICIvdXNyL2luY2x1
ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VzdHJpbmcuaCIgMyA0CmV4dGVybiAiQyIg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgVUNoYXIqCnVfc3RyY3B5XzUy
KFVDaGFyICpkc3QsCiAgICBjb25zdCBVQ2hhciAqc3JjKTsKIyA2ODAgIi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBVQ2hhcioKdV9zdHJuY3B5XzUyKFVD
aGFyICpkc3QsCiAgICAgY29uc3QgVUNoYXIgKnNyYywKICAgICBpbnQzMl90IG4pOwojIDY5NyAi
L3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91c3RyaW5nLmgiIDMgNApl
eHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIFVDaGFyKiB1
X3Vhc3RyY3B5XzUyKFVDaGFyICpkc3QsCiAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNyYyAp
OwojIDcxMiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91c3RyaW5n
LmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
IFVDaGFyKiB1X3Vhc3RybmNweV81MihVQ2hhciAqZHN0LAogICAgICAgICAgICBjb25zdCBjaGFy
ICpzcmMsCiAgICAgICAgICAgIGludDMyX3Qgbik7CiMgNzI2ICIvdXNyL2luY2x1ZGUvYXJtLWxp
bnV4LWdudWVhYmloZi91bmljb2RlL3VzdHJpbmcuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgY2hhciogdV9hdXN0cmNweV81MihjaGFyICpk
c3QsCiAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmMgKTsKIyA3NDEgIi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBjaGFyKiB1X2F1c3RybmNweV81Mihj
aGFyICpkc3QsCiAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmMsCiAgICAgICAgICAgIGludDMy
X3QgbiApOwojIDc1NSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91
c3RyaW5nLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIFVDaGFyKgp1X21lbWNweV81MihVQ2hhciAqZGVzdCwgY29uc3QgVUNoYXIgKnNyYywg
aW50MzJfdCBjb3VudCk7CiMgNzY2ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91
bmljb2RlL3VzdHJpbmcuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSkgVUNoYXIqCnVfbWVtbW92ZV81MihVQ2hhciAqZGVzdCwgY29uc3QgVUNo
YXIgKnNyYywgaW50MzJfdCBjb3VudCk7CiMgNzc4ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdu
dWVhYmloZi91bmljb2RlL3VzdHJpbmcuaCIgMyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgVUNoYXIqCnVfbWVtc2V0XzUyKFVDaGFyICpkZXN0LCBV
Q2hhciBjLCBpbnQzMl90IGNvdW50KTsKIyA3OTIgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251
ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBpbnQzMl90CnVfbWVtY21wXzUyKGNvbnN0IFVDaGFyICpi
dWYxLCBjb25zdCBVQ2hhciAqYnVmMiwgaW50MzJfdCBjb3VudCk7CiMgODA4ICIvdXNyL2luY2x1
ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VzdHJpbmcuaCIgMyA0CmV4dGVybiAiQyIg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgaW50MzJfdAp1X21lbWNtcENv
ZGVQb2ludE9yZGVyXzUyKGNvbnN0IFVDaGFyICpzMSwgY29uc3QgVUNoYXIgKnMyLCBpbnQzMl90
IGNvdW50KTsKIyA4MjggIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUv
dXN0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKSBVQ2hhcioKdV9tZW1jaHJfNTIoY29uc3QgVUNoYXIgKnMsIFVDaGFyIGMsIGludDMy
X3QgY291bnQpOwojIDg0OCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29k
ZS91c3RyaW5nLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpIFVDaGFyKgp1X21lbWNocjMyXzUyKGNvbnN0IFVDaGFyICpzLCBVQ2hhcjMyIGMs
IGludDMyX3QgY291bnQpOwojIDg2OCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYv
dW5pY29kZS91c3RyaW5nLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpIFVDaGFyKgp1X21lbXJjaHJfNTIoY29uc3QgVUNoYXIgKnMsIFVDaGFy
IGMsIGludDMyX3QgY291bnQpOwojIDg4OCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJp
aGYvdW5pY29kZS91c3RyaW5nLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpIFVDaGFyKgp1X21lbXJjaHIzMl81Mihjb25zdCBVQ2hhciAqcywg
VUNoYXIzMiBjLCBpbnQzMl90IGNvdW50KTsKIyA5NDIgIi91c3IvaW5jbHVkZS9hcm0tbGludXgt
Z251ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5oIiAzIDQKI2RlZmluZSBVX1NUUklOR19ERUNMKHZh
cixjcyxsZW5ndGgpIHN0YXRpYyBjb25zdCBVQ2hhciAqdmFyPShjb25zdCBVQ2hhciAqKVVfREVD
TEFSRV9VVEYxNihjcykKCiNkZWZpbmUgVV9TVFJJTkdfSU5JVCh2YXIsY3MsbGVuZ3RoKSAKIyAx
MDA2ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VzdHJpbmcuaCIg
MyA0CmV4dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgaW50
MzJfdAp1X3VuZXNjYXBlXzUyKGNvbnN0IGNoYXIgKnNyYywKICAgICAgICAgICBVQ2hhciAqZGVz
dCwgaW50MzJfdCBkZXN0Q2FwYWNpdHkpOwoKZXh0ZXJuICJDIiB7CiMgMTAyMyAiL3Vzci9pbmNs
dWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91c3RyaW5nLmgiIDMgNAp0eXBlZGVmIFVD
aGFyICggKlVORVNDQVBFX0NIQVJfQVQpKGludDMyX3Qgb2Zmc2V0LCB2b2lkICpjb250ZXh0KTsK
fQojIDEwNTQgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXN0cmlu
Zy5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KSBVQ2hhcjMyCnVfdW5lc2NhcGVBdF81MihVTkVTQ0FQRV9DSEFSX0FUIGNoYXJBdCwKICAgICAg
ICAgICAgIGludDMyX3QgKm9mZnNldCwKICAgICAgICAgICAgIGludDMyX3QgbGVuZ3RoLAogICAg
ICAgICAgICAgdm9pZCAqY29udGV4dCk7CiMgMTA4MCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvdW5pY29kZS91c3RyaW5nLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGludDMyX3QKdV9zdHJUb1VwcGVyXzUyKFVDaGFyICpk
ZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmMs
IGludDMyX3Qgc3JjTGVuZ3RoLAogICAgICAgICAgICAgY29uc3QgY2hhciAqbG9jYWxlLAogICAg
ICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CiMgMTEwNiAiL3Vzci9pbmNsdWRlL2Fy
bS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91c3RyaW5nLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGludDMyX3QKdV9zdHJUb0xvd2VyXzUy
KFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKICAgICAgICAgICAgIGNvbnN0IFVD
aGFyICpzcmMsIGludDMyX3Qgc3JjTGVuZ3RoLAogICAgICAgICAgICAgY29uc3QgY2hhciAqbG9j
YWxlLAogICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CiMgMTE1MiAiL3Vzci9p
bmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91c3RyaW5nLmgiIDMgNApleHRlcm4g
IkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGludDMyX3QKdV9zdHJU
b1RpdGxlXzUyKFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKICAgICAgICAgICAg
IGNvbnN0IFVDaGFyICpzcmMsIGludDMyX3Qgc3JjTGVuZ3RoLAogICAgICAgICAgICAgVUJyZWFr
SXRlcmF0b3IgKnRpdGxlSXRlciwKICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmxvY2FsZSwKICAg
ICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwojIDExODUgIi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBpbnQzMl90CnVfc3RyRm9sZENhc2Vf
NTIoVUNoYXIgKmRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5LAogICAgICAgICAgICAgIGNvbnN0
IFVDaGFyICpzcmMsIGludDMyX3Qgc3JjTGVuZ3RoLAogICAgICAgICAgICAgIHVpbnQzMl90IG9w
dGlvbnMsCiAgICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CiMgMTIxNCAiL3Vz
ci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91c3RyaW5nLmgiIDMgNApleHRl
cm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIHdjaGFyX3QqCnVf
c3RyVG9XQ1NfNTIod2NoYXJfdCAqZGVzdCwKICAgICAgICAgICBpbnQzMl90IGRlc3RDYXBhY2l0
eSwKICAgICAgICAgICBpbnQzMl90ICpwRGVzdExlbmd0aCwKICAgICAgICAgICBjb25zdCBVQ2hh
ciAqc3JjLAogICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAogICAgICAgICAgIFVFcnJvckNv
ZGUgKnBFcnJvckNvZGUpOwojIDEyNDMgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L3VuaWNvZGUvdXN0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKSBVQ2hhcioKdV9zdHJGcm9tV0NTXzUyKFVDaGFyICpkZXN0LAogICAg
ICAgICAgICAgaW50MzJfdCBkZXN0Q2FwYWNpdHksCiAgICAgICAgICAgICBpbnQzMl90ICpwRGVz
dExlbmd0aCwKICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QgKnNyYywKICAgICAgICAgICAgIGlu
dDMyX3Qgc3JjTGVuZ3RoLAogICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CiMg
MTI3NCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91c3RyaW5nLmgi
IDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGNo
YXIqCnVfc3RyVG9VVEY4XzUyKGNoYXIgKmRlc3QsCiAgICAgICAgICAgIGludDMyX3QgZGVzdENh
cGFjaXR5LAogICAgICAgICAgICBpbnQzMl90ICpwRGVzdExlbmd0aCwKICAgICAgICAgICAgY29u
c3QgVUNoYXIgKnNyYywKICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCiAgICAgICAgICAg
IFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwojIDEzMDQgIi91c3IvaW5jbHVkZS9hcm0tbGludXgt
Z251ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBVQ2hhcioKdV9zdHJGcm9tVVRGOF81MihVQ2hhciAq
ZGVzdCwKICAgICAgICAgICAgICBpbnQzMl90IGRlc3RDYXBhY2l0eSwKICAgICAgICAgICAgICBp
bnQzMl90ICpwRGVzdExlbmd0aCwKICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcmMsCiAgICAg
ICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCiAgICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVy
cm9yQ29kZSk7CiMgMTM0OCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29k
ZS91c3RyaW5nLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpIGNoYXIqCnVfc3RyVG9VVEY4V2l0aFN1Yl81MihjaGFyICpkZXN0LAogICAgICAg
ICAgICBpbnQzMl90IGRlc3RDYXBhY2l0eSwKICAgICAgICAgICAgaW50MzJfdCAqcERlc3RMZW5n
dGgsCiAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmMsCiAgICAgICAgICAgIGludDMyX3Qgc3Jj
TGVuZ3RoLAogICAgICAgICAgICBVQ2hhcjMyIHN1YmNoYXIsIGludDMyX3QgKnBOdW1TdWJzdGl0
dXRpb25zLAogICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKIyAxMzk0ICIvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VzdHJpbmcuaCIgMyA0CmV4dGVy
biAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgVUNoYXIqCnVfc3Ry
RnJvbVVURjhXaXRoU3ViXzUyKFVDaGFyICpkZXN0LAogICAgICAgICAgICAgIGludDMyX3QgZGVz
dENhcGFjaXR5LAogICAgICAgICAgICAgIGludDMyX3QgKnBEZXN0TGVuZ3RoLAogICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKnNyYywKICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwKICAg
ICAgICAgICAgICBVQ2hhcjMyIHN1YmNoYXIsIGludDMyX3QgKnBOdW1TdWJzdGl0dXRpb25zLAog
ICAgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwojIDE0NTQgIi91c3IvaW5jbHVk
ZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBVQ2hhciAqCnVfc3RyRnJvbVVU
RjhMZW5pZW50XzUyKFVDaGFyICpkZXN0LAogICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGRl
c3RDYXBhY2l0eSwKICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCAqcERlc3RMZW5ndGgsCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNyYywKICAgICAgICAgICAgICAgICAgICAg
aW50MzJfdCBzcmNMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJv
ckNvZGUpOwojIDE0ODQgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUv
dXN0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKSBVQ2hhcjMyKgp1X3N0clRvVVRGMzJfNTIoVUNoYXIzMiAqZGVzdCwKICAgICAgICAg
ICAgIGludDMyX3QgZGVzdENhcGFjaXR5LAogICAgICAgICAgICAgaW50MzJfdCAqcERlc3RMZW5n
dGgsCiAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjLAogICAgICAgICAgICAgaW50MzJfdCBz
cmNMZW5ndGgsCiAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKIyAxNTE0ICIv
dXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi91bmljb2RlL3VzdHJpbmcuaCIgMyA0CmV4
dGVybiAiQyIgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgVUNoYXIqCnVf
c3RyRnJvbVVURjMyXzUyKFVDaGFyICpkZXN0LAogICAgICAgICAgICAgICBpbnQzMl90IGRlc3RD
YXBhY2l0eSwKICAgICAgICAgICAgICAgaW50MzJfdCAqcERlc3RMZW5ndGgsCiAgICAgICAgICAg
ICAgIGNvbnN0IFVDaGFyMzIgKnNyYywKICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgs
CiAgICAgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwojIDE1NTggIi91c3IvaW5j
bHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5oIiAzIDQKZXh0ZXJuICJD
IiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBVQ2hhcjMyKgp1X3N0clRv
VVRGMzJXaXRoU3ViXzUyKFVDaGFyMzIgKmRlc3QsCiAgICAgICAgICAgICBpbnQzMl90IGRlc3RD
YXBhY2l0eSwKICAgICAgICAgICAgIGludDMyX3QgKnBEZXN0TGVuZ3RoLAogICAgICAgICAgICAg
Y29uc3QgVUNoYXIgKnNyYywKICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAogICAgICAg
ICAgICAgVUNoYXIzMiBzdWJjaGFyLCBpbnQzMl90ICpwTnVtU3Vic3RpdHV0aW9ucywKICAgICAg
ICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwojIDE2MDMgIi91c3IvaW5jbHVkZS9hcm0t
bGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBVQ2hhcioKdV9zdHJGcm9tVVRGMzJXaXRo
U3ViXzUyKFVDaGFyICpkZXN0LAogICAgICAgICAgICAgICBpbnQzMl90IGRlc3RDYXBhY2l0eSwK
ICAgICAgICAgICAgICAgaW50MzJfdCAqcERlc3RMZW5ndGgsCiAgICAgICAgICAgICAgIGNvbnN0
IFVDaGFyMzIgKnNyYywKICAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCiAgICAgICAg
ICAgICAgIFVDaGFyMzIgc3ViY2hhciwgaW50MzJfdCAqcE51bVN1YnN0aXR1dGlvbnMsCiAgICAg
ICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOwojIDE2NDQgIi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL3VuaWNvZGUvdXN0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBjaGFyKgp1X3N0clRvSmF2YU1vZGlm
aWVkVVRGOF81MigKICAgICAgICBjaGFyICpkZXN0LAogICAgICAgIGludDMyX3QgZGVzdENhcGFj
aXR5LAogICAgICAgIGludDMyX3QgKnBEZXN0TGVuZ3RoLAogICAgICAgIGNvbnN0IFVDaGFyICpz
cmMsCiAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCiAgICAgICAgVUVycm9yQ29kZSAqcEVycm9y
Q29kZSk7CiMgMTY5MyAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvdW5pY29kZS91
c3RyaW5nLmgiIDMgNApleHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpIFVDaGFyKgp1X3N0ckZyb21KYXZhTW9kaWZpZWRVVEY4V2l0aFN1Yl81MigKICAgICAg
ICBVQ2hhciAqZGVzdCwKICAgICAgICBpbnQzMl90IGRlc3RDYXBhY2l0eSwKICAgICAgICBpbnQz
Ml90ICpwRGVzdExlbmd0aCwKICAgICAgICBjb25zdCBjaGFyICpzcmMsCiAgICAgICAgaW50MzJf
dCBzcmNMZW5ndGgsCiAgICAgICAgVUNoYXIzMiBzdWJjaGFyLCBpbnQzMl90ICpwTnVtU3Vic3Rp
dHV0aW9ucywKICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKIyAyOSAiLi4vLi4vU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0
Zi9BU0NJSUNUeXBlLmgiIDEKIyAzMCAiLi4vLi4vU291cmNlL1dURi93dGYvQVNDSUlDVHlwZS5o
IgojZGVmaW5lIFdURl9BU0NJSUNUeXBlX2ggCiMgNDUgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0FT
Q0lJQ1R5cGUuaCIKbmFtZXNwYWNlIFdURiB7Cgpjb25zdCB1bnNpZ25lZCBjaGFyIGFzY2lpQ2Fz
ZUZvbGRUYWJsZVsyNTZdID0gewogICAgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgw
NSwgMHgwNiwgMHgwNywgMHgwOCwgMHgwOSwgMHgwYSwgMHgwYiwgMHgwYywgMHgwZCwgMHgwZSwg
MHgwZiwKICAgIDB4MTAsIDB4MTEsIDB4MTIsIDB4MTMsIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcs
IDB4MTgsIDB4MTksIDB4MWEsIDB4MWIsIDB4MWMsIDB4MWQsIDB4MWUsIDB4MWYsCiAgICAweDIw
LCAweDIxLCAweDIyLCAweDIzLCAweDI0LCAweDI1LCAweDI2LCAweDI3LCAweDI4LCAweDI5LCAw
eDJhLCAweDJiLCAweDJjLCAweDJkLCAweDJlLCAweDJmLAogICAgMHgzMCwgMHgzMSwgMHgzMiwg
MHgzMywgMHgzNCwgMHgzNSwgMHgzNiwgMHgzNywgMHgzOCwgMHgzOSwgMHgzYSwgMHgzYiwgMHgz
YywgMHgzZCwgMHgzZSwgMHgzZiwKICAgIDB4NDAsIDB4NjEsIDB4NjIsIDB4NjMsIDB4NjQsIDB4
NjUsIDB4NjYsIDB4NjcsIDB4NjgsIDB4NjksIDB4NmEsIDB4NmIsIDB4NmMsIDB4NmQsIDB4NmUs
IDB4NmYsCiAgICAweDcwLCAweDcxLCAweDcyLCAweDczLCAweDc0LCAweDc1LCAweDc2LCAweDc3
LCAweDc4LCAweDc5LCAweDdhLCAweDViLCAweDVjLCAweDVkLCAweDVlLCAweDVmLAogICAgMHg2
MCwgMHg2MSwgMHg2MiwgMHg2MywgMHg2NCwgMHg2NSwgMHg2NiwgMHg2NywgMHg2OCwgMHg2OSwg
MHg2YSwgMHg2YiwgMHg2YywgMHg2ZCwgMHg2ZSwgMHg2ZiwKICAgIDB4NzAsIDB4NzEsIDB4NzIs
IDB4NzMsIDB4NzQsIDB4NzUsIDB4NzYsIDB4NzcsIDB4NzgsIDB4NzksIDB4N2EsIDB4N2IsIDB4
N2MsIDB4N2QsIDB4N2UsIDB4N2YsCiAgICAweDgwLCAweDgxLCAweDgyLCAweDgzLCAweDg0LCAw
eDg1LCAweDg2LCAweDg3LCAweDg4LCAweDg5LCAweDhhLCAweDhiLCAweDhjLCAweDhkLCAweDhl
LCAweDhmLAogICAgMHg5MCwgMHg5MSwgMHg5MiwgMHg5MywgMHg5NCwgMHg5NSwgMHg5NiwgMHg5
NywgMHg5OCwgMHg5OSwgMHg5YSwgMHg5YiwgMHg5YywgMHg5ZCwgMHg5ZSwgMHg5ZiwKICAgIDB4
YTAsIDB4YTEsIDB4YTIsIDB4YTMsIDB4YTQsIDB4YTUsIDB4YTYsIDB4YTcsIDB4YTgsIDB4YTks
IDB4YWEsIDB4YWIsIDB4YWMsIDB4YWQsIDB4YWUsIDB4YWYsCiAgICAweGIwLCAweGIxLCAweGIy
LCAweGIzLCAweGI0LCAweGI1LCAweGI2LCAweGI3LCAweGI4LCAweGI5LCAweGJhLCAweGJiLCAw
eGJjLCAweGJkLCAweGJlLCAweGJmLAogICAgMHhjMCwgMHhjMSwgMHhjMiwgMHhjMywgMHhjNCwg
MHhjNSwgMHhjNiwgMHhjNywgMHhjOCwgMHhjOSwgMHhjYSwgMHhjYiwgMHhjYywgMHhjZCwgMHhj
ZSwgMHhjZiwKICAgIDB4ZDAsIDB4ZDEsIDB4ZDIsIDB4ZDMsIDB4ZDQsIDB4ZDUsIDB4ZDYsIDB4
ZDcsIDB4ZDgsIDB4ZDksIDB4ZGEsIDB4ZGIsIDB4ZGMsIDB4ZGQsIDB4ZGUsIDB4ZGYsCiAgICAw
eGUwLCAweGUxLCAweGUyLCAweGUzLCAweGU0LCAweGU1LCAweGU2LCAweGU3LCAweGU4LCAweGU5
LCAweGVhLCAweGViLCAweGVjLCAweGVkLCAweGVlLCAweGVmLAogICAgMHhmMCwgMHhmMSwgMHhm
MiwgMHhmMywgMHhmNCwgMHhmNSwgMHhmNiwgMHhmNywgMHhmOCwgMHhmOSwgMHhmYSwgMHhmYiwg
MHhmYywgMHhmZCwgMHhmZSwgMHhmZgp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gaW5saW5lIGJvb2wgaXNBU0NJSShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKewogICAgcmV0
dXJuICEoY2hhcmFjdGVyICYgfjB4N0YpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBpbmxpbmUgYm9vbCBpc0FTQ0lJTG93ZXIoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCnsK
ICAgIHJldHVybiBjaGFyYWN0ZXIgPj0gJ2EnICYmIGNoYXJhY3RlciA8PSAneic7Cn0KCnRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBDaGFyYWN0ZXJUeXBlIHRvQVNDSUlM
b3dlclVuY2hlY2tlZChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKewoKCgoKCiAgICByZXR1cm4g
Y2hhcmFjdGVyIHwgMHgyMDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5s
aW5lIGJvb2wgaXNBU0NJSUFscGhhKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQp7CiAgICByZXR1
cm4gaXNBU0NJSUxvd2VyKHRvQVNDSUlMb3dlclVuY2hlY2tlZChjaGFyYWN0ZXIpKTsKfQoKdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSURpZ2l0KENo
YXJhY3RlclR5cGUgY2hhcmFjdGVyKQp7CiAgICByZXR1cm4gY2hhcmFjdGVyID49ICcwJyAmJiBj
aGFyYWN0ZXIgPD0gJzknOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxp
bmUgYm9vbCBpc0FTQ0lJQWxwaGFudW1lcmljKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQp7CiAg
ICByZXR1cm4gaXNBU0NJSURpZ2l0KGNoYXJhY3RlcikgfHwgaXNBU0NJSUFscGhhKGNoYXJhY3Rl
cik7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlzQVND
SUlIZXhEaWdpdChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKewogICAgcmV0dXJuIGlzQVNDSUlE
aWdpdChjaGFyYWN0ZXIpIHx8ICh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoY2hhcmFjdGVyKSA+PSAn
YScgJiYgdG9BU0NJSUxvd2VyVW5jaGVja2VkKGNoYXJhY3RlcikgPD0gJ2YnKTsKfQoKdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSUJpbmFyeURpZ2l0
KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQp7CiAgICByZXR1cm4gY2hhcmFjdGVyID09ICcwJyB8
fCBjaGFyYWN0ZXIgPT0gJzEnOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBp
bmxpbmUgYm9vbCBpc0FTQ0lJT2N0YWxEaWdpdChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKewog
ICAgcmV0dXJuIGNoYXJhY3RlciA+PSAnMCcgJiYgY2hhcmFjdGVyIDw9ICc3JzsKfQoKdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSVByaW50YWJsZShD
aGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKewogICAgcmV0dXJuIGNoYXJhY3RlciA+PSAnICcgJiYg
Y2hhcmFjdGVyIDw9ICd+JzsKfQojIDEzNyAiLi4vLi4vU291cmNlL1dURi93dGYvQVNDSUlDVHlw
ZS5oIgp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBpc0FTQ0lJ
U3BhY2UoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCnsKICAgIHJldHVybiBjaGFyYWN0ZXIgPD0g
JyAnICYmIChjaGFyYWN0ZXIgPT0gJyAnIHx8IChjaGFyYWN0ZXIgPD0gMHhEICYmIGNoYXJhY3Rl
ciA+PSAweDkpKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJv
b2wgaXNBU0NJSVVwcGVyKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQp7CiAgICByZXR1cm4gY2hh
cmFjdGVyID49ICdBJyAmJiBjaGFyYWN0ZXIgPD0gJ1onOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBpbmxpbmUgQ2hhcmFjdGVyVHlwZSB0b0FTQ0lJTG93ZXIoQ2hhcmFjdGVy
VHlwZSBjaGFyYWN0ZXIpCnsKICAgIHJldHVybiBjaGFyYWN0ZXIgfCAoaXNBU0NJSVVwcGVyKGNo
YXJhY3RlcikgPDwgNSk7Cn0KCnRlbXBsYXRlPD4gaW5saW5lIGNoYXIgdG9BU0NJSUxvd2VyKGNo
YXIgY2hhcmFjdGVyKQp7CiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcj4oYXNjaWlDYXNlRm9s
ZFRhYmxlW3N0YXRpY19jYXN0PHVpbnQ4X3Q+KGNoYXJhY3RlcildKTsKfQoKdGVtcGxhdGU8PiBp
bmxpbmUgTENoYXIgdG9BU0NJSUxvd2VyKExDaGFyIGNoYXJhY3RlcikKewogICAgcmV0dXJuIGFz
Y2lpQ2FzZUZvbGRUYWJsZVtjaGFyYWN0ZXJdOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBpbmxpbmUgQ2hhcmFjdGVyVHlwZSB0b0FTQ0lJVXBwZXIoQ2hhcmFjdGVyVHlwZSBj
aGFyYWN0ZXIpCnsKICAgIHJldHVybiBjaGFyYWN0ZXIgJiB+KGlzQVNDSUlMb3dlcihjaGFyYWN0
ZXIpIDw8IDUpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgdWlu
dDhfdCB0b0FTQ0lJSGV4VmFsdWUoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCnsKICAgICgodm9p
ZCkwKTsKICAgIHJldHVybiBjaGFyYWN0ZXIgPCAnQScgPyBjaGFyYWN0ZXIgLSAnMCcgOiAoY2hh
cmFjdGVyIC0gJ0EnICsgMTApICYgMHhGOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBpbmxpbmUgdWludDhfdCB0b0FTQ0lJSGV4VmFsdWUoQ2hhcmFjdGVyVHlwZSBmaXJzdENo
YXJhY3RlciwgQ2hhcmFjdGVyVHlwZSBzZWNvbmRDaGFyYWN0ZXIpCnsKICAgIHJldHVybiB0b0FT
Q0lJSGV4VmFsdWUoZmlyc3RDaGFyYWN0ZXIpIDw8IDQgfCB0b0FTQ0lJSGV4VmFsdWUoc2Vjb25k
Q2hhcmFjdGVyKTsKfQoKaW5saW5lIGNoYXIgbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQodWlu
dDhfdCB2YWx1ZSkKewogICAgdWludDhfdCBuaWJibGUgPSB2YWx1ZSAmIDB4RjsKICAgIHJldHVy
biBuaWJibGUgKyAobmliYmxlIDwgMTAgPyAnMCcgOiAnQScgLSAxMCk7Cn0KCmlubGluZSBjaGFy
IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KHVpbnQ4X3QgdmFsdWUpCnsKICAgIHVpbnQ4X3Qg
bmliYmxlID0gdmFsdWUgPj4gNDsKICAgIHJldHVybiBuaWJibGUgKyAobmliYmxlIDwgMTAgPyAn
MCcgOiAnQScgLSAxMCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGlu
ZSBib29sIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoQ2hhcmFjdGVyVHlwZSBpbnB1dENoYXJh
Y3RlciwgY2hhciBleHBlY3RlZEFTQ0lJTG93ZXJjYXNlTGV0dGVyKQp7CiMgMjAzICIuLi8uLi9T
b3VyY2UvV1RGL3d0Zi9BU0NJSUNUeXBlLmgiCiAgICAoKHZvaWQpMCk7CiAgICByZXR1cm4gX19i
dWlsdGluX2V4cGVjdCghISh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoaW5wdXRDaGFyYWN0ZXIpID09
IGV4cGVjdGVkQVNDSUlMb3dlcmNhc2VMZXR0ZXIpLCAxKTsKfQoKfQoKdXNpbmcgV1RGOjppc0FT
Q0lJOwp1c2luZyBXVEY6OmlzQVNDSUlBbHBoYTsKdXNpbmcgV1RGOjppc0FTQ0lJQWxwaGFDYXNl
bGVzc0VxdWFsOwp1c2luZyBXVEY6OmlzQVNDSUlBbHBoYW51bWVyaWM7CnVzaW5nIFdURjo6aXNB
U0NJSUJpbmFyeURpZ2l0Owp1c2luZyBXVEY6OmlzQVNDSUlEaWdpdDsKdXNpbmcgV1RGOjppc0FT
Q0lJSGV4RGlnaXQ7CnVzaW5nIFdURjo6aXNBU0NJSUxvd2VyOwp1c2luZyBXVEY6OmlzQVNDSUlP
Y3RhbERpZ2l0Owp1c2luZyBXVEY6OmlzQVNDSUlQcmludGFibGU7CnVzaW5nIFdURjo6aXNBU0NJ
SVNwYWNlOwp1c2luZyBXVEY6OmlzQVNDSUlVcHBlcjsKdXNpbmcgV1RGOjpsb3dlck5pYmJsZVRv
QVNDSUlIZXhEaWdpdDsKdXNpbmcgV1RGOjp0b0FTQ0lJSGV4VmFsdWU7CnVzaW5nIFdURjo6dG9B
U0NJSUxvd2VyOwp1c2luZyBXVEY6OnRvQVNDSUlMb3dlclVuY2hlY2tlZDsKdXNpbmcgV1RGOjp0
b0FTQ0lJVXBwZXI7CnVzaW5nIFdURjo6dXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQ7CiMgMzAg
Ii4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIiAyCgojIDEgIi4uLy4uL1Nv
dXJjZS9XVEYvd3RmL0hhc2hlci5oIiAxCiMgMjMgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0hhc2hl
ci5oIgojZGVmaW5lIFdURl9IYXNoZXJfaCAKCgoKCm5hbWVzcGFjZSBXVEYgewojIDM5ICIuLi8u
Li9Tb3VyY2UvV1RGL3d0Zi9IYXNoZXIuaCIKc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0cmluZ0hh
c2hpbmdTdGFydFZhbHVlID0gMHg5RTM3NzlCOVU7CgpjbGFzcyBTdHJpbmdIYXNoZXIgewpwdWJs
aWM6CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZmxhZ0NvdW50ID0gODsKCiAgICBTdHJpbmdI
YXNoZXIoKQogICAgICAgIDogbV9oYXNoKHN0cmluZ0hhc2hpbmdTdGFydFZhbHVlKQogICAgICAg
ICwgbV9oYXNQZW5kaW5nQ2hhcmFjdGVyKGZhbHNlKQogICAgICAgICwgbV9wZW5kaW5nQ2hhcmFj
dGVyKDApCiAgICB7CiAgICB9CgoKCgogICAgdm9pZCBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGln
bmVkKFVDaGFyIGEsIFVDaGFyIGIpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIG1f
aGFzaCArPSBhOwogICAgICAgIG1faGFzaCA9IChtX2hhc2ggPDwgMTYpIF4gKChiIDw8IDExKSBe
IG1faGFzaCk7CiAgICAgICAgbV9oYXNoICs9IG1faGFzaCA+PiAxMTsKICAgIH0KCiAgICB2b2lk
IGFkZENoYXJhY3RlcihVQ2hhciBjaGFyYWN0ZXIpCiAgICB7CiAgICAgICAgaWYgKG1faGFzUGVu
ZGluZ0NoYXJhY3RlcikgewogICAgICAgICAgICBtX2hhc1BlbmRpbmdDaGFyYWN0ZXIgPSBmYWxz
ZTsKICAgICAgICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChtX3BlbmRpbmdDaGFy
YWN0ZXIsIGNoYXJhY3Rlcik7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAg
IG1fcGVuZGluZ0NoYXJhY3RlciA9IGNoYXJhY3RlcjsKICAgICAgICBtX2hhc1BlbmRpbmdDaGFy
YWN0ZXIgPSB0cnVlOwogICAgfQoKICAgIHZvaWQgYWRkQ2hhcmFjdGVycyhVQ2hhciBhLCBVQ2hh
ciBiKQogICAgewogICAgICAgIGlmIChtX2hhc1BlbmRpbmdDaGFyYWN0ZXIpIHsKCgoKICAgICAg
ICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChtX3BlbmRpbmdDaGFyYWN0ZXIsIGEp
OwogICAgICAgICAgICBtX3BlbmRpbmdDaGFyYWN0ZXIgPSBiOwoKCgogICAgICAgICAgICByZXR1
cm47CiAgICAgICAgfQoKICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKGEsIGIp
OwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFVDaGFyIENvbnZlcnRlcihUKT4gdm9p
ZCBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgIGJvb2wgcmVtYWluZGVyID0g
bGVuZ3RoICYgMTsKICAgICAgICBsZW5ndGggPj49IDE7CgogICAgICAgIHdoaWxlIChsZW5ndGgt
LSkgewogICAgICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKENvbnZlcnRlcihk
YXRhWzBdKSwgQ29udmVydGVyKGRhdGFbMV0pKTsKICAgICAgICAgICAgZGF0YSArPSAyOwogICAg
ICAgIH0KCiAgICAgICAgaWYgKHJlbWFpbmRlcikKICAgICAgICAgICAgYWRkQ2hhcmFjdGVyKENv
bnZlcnRlcigqZGF0YSkpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRk
Q2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChjb25zdCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
CiAgICB7CiAgICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZDxULCBkZWZhdWx0Q29u
dmVydGVyPihkYXRhLCBsZW5ndGgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFVD
aGFyIENvbnZlcnRlcihUKT4gdm9pZCBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKGNvbnN0
IFQqIGRhdGEpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICB3aGlsZSAoVCBhID0g
KmRhdGErKykgewogICAgICAgICAgICBUIGIgPSAqZGF0YSsrOwogICAgICAgICAgICBpZiAoIWIp
IHsKICAgICAgICAgICAgICAgIGFkZENoYXJhY3RlcihDb252ZXJ0ZXIoYSkpOwogICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3Vt
aW5nQWxpZ25lZChDb252ZXJ0ZXIoYSksIENvbnZlcnRlcihiKSk7CiAgICAgICAgfQogICAgfQoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25l
ZChjb25zdCBUKiBkYXRhKQogICAgewogICAgICAgIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWdu
ZWQ8VCwgZGVmYXVsdENvbnZlcnRlcj4oZGF0YSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgVUNoYXIgQ29udmVydGVyKFQpPiB2b2lkIGFkZENoYXJhY3RlcnMoY29uc3QgVCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgewogICAgICAgIGlmIChtX2hhc1BlbmRpbmdDaGFyYWN0
ZXIgJiYgbGVuZ3RoKSB7CiAgICAgICAgICAgIG1faGFzUGVuZGluZ0NoYXJhY3RlciA9IGZhbHNl
OwogICAgICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKG1fcGVuZGluZ0NoYXJh
Y3RlciwgQ29udmVydGVyKCpkYXRhKyspKTsKICAgICAgICAgICAgLS1sZW5ndGg7CiAgICAgICAg
fQogICAgICAgIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQ8VCwgQ29udmVydGVyPihkYXRh
LCBsZW5ndGgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkQ2hhcmFj
dGVycyhjb25zdCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICB7CiAgICAgICAgYWRkQ2hh
cmFjdGVyczxULCBkZWZhdWx0Q29udmVydGVyPihkYXRhLCBsZW5ndGgpOwogICAgfQoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIFVDaGFyIENvbnZlcnRlcihUKT4gdm9pZCBhZGRDaGFyYWN0ZXJz
KGNvbnN0IFQqIGRhdGEpCiAgICB7CiAgICAgICAgaWYgKG1faGFzUGVuZGluZ0NoYXJhY3RlciAm
JiAqZGF0YSkgewogICAgICAgICAgICBtX2hhc1BlbmRpbmdDaGFyYWN0ZXIgPSBmYWxzZTsKICAg
ICAgICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChtX3BlbmRpbmdDaGFyYWN0ZXIs
IENvbnZlcnRlcigqZGF0YSsrKSk7CiAgICAgICAgfQogICAgICAgIGFkZENoYXJhY3RlcnNBc3N1
bWluZ0FsaWduZWQ8VCwgQ29udmVydGVyPihkYXRhKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiB2b2lkIGFkZENoYXJhY3RlcnMoY29uc3QgVCogZGF0YSkKICAgIHsKICAgICAgICBh
ZGRDaGFyYWN0ZXJzPFQsIGRlZmF1bHRDb252ZXJ0ZXI+KGRhdGEpOwogICAgfQoKICAgIHVuc2ln
bmVkIGhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSBjb25zdAogICAgewogICAgICAgIHVuc2lnbmVk
IHJlc3VsdCA9IGF2YWxhbmNoZUJpdHMoKTsKCgoKICAgICAgICByZXN1bHQgJj0gKDFVIDw8IChz
aXplb2YocmVzdWx0KSAqIDggLSBmbGFnQ291bnQpKSAtIDE7CgoKCgoKICAgICAgICBpZiAoIXJl
c3VsdCkKICAgICAgICAgICAgcmVzdWx0ID0gMHg4MDAwMDAwMCA+PiBmbGFnQ291bnQ7CgogICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICB9CgogICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICB7
CiAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gYXZhbGFuY2hlQml0cygpOwoKCgoKCiAgICAgICAg
aWYgKCFyZXN1bHQpCiAgICAgICAgICAgIHJlc3VsdCA9IDB4ODAwMDAwMDA7CgogICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVUNoYXIgQ29udmVy
dGVyKFQpPiBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMoY29uc3Qg
VCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgewogICAgICAgIFN0cmluZ0hhc2hlciBoYXNo
ZXI7CiAgICAgICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQ8VCwgQ29udmVy
dGVyPihkYXRhLCBsZW5ndGgpOwogICAgICAgIHJldHVybiBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0
c01hc2tlZCgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFVDaGFyIENvbnZlcnRl
cihUKT4gc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNvbnN0IFQq
IGRhdGEpCiAgICB7CiAgICAgICAgU3RyaW5nSGFzaGVyIGhhc2hlcjsKICAgICAgICBoYXNoZXIu
YWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZDxULCBDb252ZXJ0ZXI+KGRhdGEpOwogICAgICAg
IHJldHVybiBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpOwogICAgfQoKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0
cyhjb25zdCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICB7CiAgICAgICAgcmV0dXJuIGNv
bXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzPFQsIGRlZmF1bHRDb252ZXJ0ZXI+KGRhdGEsIGxlbmd0
aCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVuc2lnbmVkIGNvbXB1
dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNvbnN0IFQqIGRhdGEpCiAgICB7CiAgICAgICAgcmV0dXJu
IGNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzPFQsIGRlZmF1bHRDb252ZXJ0ZXI+KGRhdGEpOwog
ICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFVDaGFyIENvbnZlcnRlcihUKT4gc3RhdGlj
IHVuc2lnbmVkIGNvbXB1dGVIYXNoKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAg
IHsKICAgICAgICBTdHJpbmdIYXNoZXIgaGFzaGVyOwogICAgICAgIGhhc2hlci5hZGRDaGFyYWN0
ZXJzQXNzdW1pbmdBbGlnbmVkPFQsIENvbnZlcnRlcj4oZGF0YSwgbGVuZ3RoKTsKICAgICAgICBy
ZXR1cm4gaGFzaGVyLmhhc2goKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBVQ2hh
ciBDb252ZXJ0ZXIoVCk+IHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlSGFzaChjb25zdCBUKiBkYXRh
KQogICAgewogICAgICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7CiAgICAgICAgaGFzaGVyLmFkZENo
YXJhY3RlcnNBc3N1bWluZ0FsaWduZWQ8VCwgQ29udmVydGVyPihkYXRhKTsKICAgICAgICByZXR1
cm4gaGFzaGVyLmhhc2goKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMg
dW5zaWduZWQgY29tcHV0ZUhhc2goY29uc3QgVCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAg
ewogICAgICAgIHJldHVybiBjb21wdXRlSGFzaDxULCBkZWZhdWx0Q29udmVydGVyPihkYXRhLCBs
ZW5ndGgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1bnNpZ25lZCBj
b21wdXRlSGFzaChjb25zdCBUKiBkYXRhKQogICAgewogICAgICAgIHJldHVybiBjb21wdXRlSGFz
aDxULCBkZWZhdWx0Q29udmVydGVyPihkYXRhKTsKICAgIH0KCiAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaE1lbW9yeShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICB7CgoKCiAg
ICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiBjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0
czxVQ2hhcj4oc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihkYXRhKSwgbGVuZ3RoIC8gc2l6ZW9m
KFVDaGFyKSk7CiAgICB9CgogICAgdGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4gc3RhdGljIHVuc2ln
bmVkIGhhc2hNZW1vcnkoY29uc3Qgdm9pZCogZGF0YSkKICAgIHsKICAgICAgICBzdGF0aWNfYXNz
ZXJ0KCEobGVuZ3RoICUgMiksICJsZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIHR3byEiKTsK
ICAgICAgICByZXR1cm4gaGFzaE1lbW9yeShkYXRhLCBsZW5ndGgpOwogICAgfQoKcHJpdmF0ZToK
ICAgIHN0YXRpYyBVQ2hhciBkZWZhdWx0Q29udmVydGVyKFVDaGFyIGNoYXJhY3RlcikKICAgIHsK
ICAgICAgICByZXR1cm4gY2hhcmFjdGVyOwogICAgfQoKICAgIHN0YXRpYyBVQ2hhciBkZWZhdWx0
Q29udmVydGVyKExDaGFyIGNoYXJhY3RlcikKICAgIHsKICAgICAgICByZXR1cm4gY2hhcmFjdGVy
OwogICAgfQoKICAgIHVuc2lnbmVkIGF2YWxhbmNoZUJpdHMoKSBjb25zdAogICAgewogICAgICAg
IHVuc2lnbmVkIHJlc3VsdCA9IG1faGFzaDsKCgogICAgICAgIGlmIChtX2hhc1BlbmRpbmdDaGFy
YWN0ZXIpIHsKICAgICAgICAgICAgcmVzdWx0ICs9IG1fcGVuZGluZ0NoYXJhY3RlcjsKICAgICAg
ICAgICAgcmVzdWx0IF49IHJlc3VsdCA8PCAxMTsKICAgICAgICAgICAgcmVzdWx0ICs9IHJlc3Vs
dCA+PiAxNzsKICAgICAgICB9CgoKICAgICAgICByZXN1bHQgXj0gcmVzdWx0IDw8IDM7CiAgICAg
ICAgcmVzdWx0ICs9IHJlc3VsdCA+PiA1OwogICAgICAgIHJlc3VsdCBePSByZXN1bHQgPDwgMjsK
ICAgICAgICByZXN1bHQgKz0gcmVzdWx0ID4+IDE1OwogICAgICAgIHJlc3VsdCBePSByZXN1bHQg
PDwgMTA7CgogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CgogICAgdW5zaWduZWQgbV9oYXNo
OwogICAgYm9vbCBtX2hhc1BlbmRpbmdDaGFyYWN0ZXI7CiAgICBVQ2hhciBtX3BlbmRpbmdDaGFy
YWN0ZXI7Cn07CgpjbGFzcyBJbnRlZ2VySGFzaGVyIHsKcHVibGljOgogICAgdm9pZCBhZGQodW5z
aWduZWQgaW50ZWdlcikKICAgIHsKICAgICAgICBtX3VuZGVybHlpbmdIYXNoZXIuYWRkQ2hhcmFj
dGVyc0Fzc3VtaW5nQWxpZ25lZChpbnRlZ2VyLCBpbnRlZ2VyID4+IDE2KTsKICAgIH0KCiAgICB1
bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV91bmRlcmx5aW5nSGFz
aGVyLmhhc2goKTsKICAgIH0KCnByaXZhdGU6CiAgICBTdHJpbmdIYXNoZXIgbV91bmRlcmx5aW5n
SGFzaGVyOwp9OwoKfQoKdXNpbmcgV1RGOjpJbnRlZ2VySGFzaGVyOwp1c2luZyBXVEY6OlN0cmlu
Z0hhc2hlcjsKIyAzMiAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgiIDIK
CgoKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NvbnZlcnNpb25Nb2RlLmgiIDEKIyAy
NyAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4dC9Db252ZXJzaW9uTW9kZS5oIgojZGVmaW5lIENv
bnZlcnNpb25Nb2RlX2ggCgpuYW1lc3BhY2UgV1RGIHsKCnR5cGVkZWYgZW51bSB7CiAgICBMZW5p
ZW50Q29udmVyc2lvbiwKICAgIFN0cmljdENvbnZlcnNpb24sCiAgICBTdHJpY3RDb252ZXJzaW9u
UmVwbGFjaW5nVW5wYWlyZWRTdXJyb2dhdGVzV2l0aEZGRkQsCn0gQ29udmVyc2lvbk1vZGU7Cgp9
Cgp1c2luZyBXVEY6OkNvbnZlcnNpb25Nb2RlOwp1c2luZyBXVEY6OkxlbmllbnRDb252ZXJzaW9u
Owp1c2luZyBXVEY6OlN0cmljdENvbnZlcnNpb247CnVzaW5nIFdURjo6U3RyaWN0Q29udmVyc2lv
blJlcGxhY2luZ1VucGFpcmVkU3Vycm9nYXRlc1dpdGhGRkZEOwojIDM2ICIuLi8uLi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nQ29tbW9uLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdDb21tb24uaCIKI2RlZmluZSBTdHJpbmdDb21tb25faCAKCgoKCm5hbWVzcGFjZSBXVEYgewoK
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUEsIHR5cGVuYW1lIENoYXJhY3RlclR5cGVC
PiBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgQ2hhcmFjdGVyVHlwZUEqLCBjb25z
dCBDaGFyYWN0ZXJUeXBlQiosIHVuc2lnbmVkIGxlbmd0aCk7CnRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGVBLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlQj4gYm9vbCBlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKGNvbnN0IENoYXJhY3RlclR5cGVBKiwgdW5zaWduZWQgbGVuZ3RoQSwgY29uc3Qg
Q2hhcmFjdGVyVHlwZUIqLCB1bnNpZ25lZCBsZW5ndGhCKTsKCnRlbXBsYXRlPHR5cGVuYW1lIFN0
cmluZ0NsYXNzQSwgdHlwZW5hbWUgU3RyaW5nQ2xhc3NCPiBib29sIGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2VDb21tb24oY29uc3QgU3RyaW5nQ2xhc3NBJiwgY29uc3QgU3RyaW5nQ2xhc3NCJik7Cgp0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGNvbnN0IENoYXJhY3RlclR5cGUqLCBjb25zdCBjaGFyKiBsb3dlcmNhc2VMZXR0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB1
bnNpZ25lZCBsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGNvbnN0IENoYXJhY3RlclR5cGUqLCB1bnNpZ25lZCBjaGFyYWN0ZXJzTGVuZ3Ro
LCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbG93ZXJjYXNlTGV0dGVyc0xlbmd0aF0p
OwoKdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3MsIHVuc2lnbmVkIGxlbmd0aD4gYm9vbCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1vbihjb25zdCBTdHJpbmdDbGFzcyYsIGNv
bnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsKCnRlbXBsYXRlPHR5cGVuYW1l
IFQ+CmlubGluZSBUIGxvYWRVbmFsaWduZWQoY29uc3QgY2hhciogcykKewoKCgoKCgogICAgcmV0
dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihzKTsKCn0KIyAyNjQgIi4uLy4uL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgiCmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXykpIGJvb2wgZXF1YWwoY29uc3QgTENoYXIqIGEsIGNvbnN0IExDaGFyKiBi
LCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuICFtZW1jbXAoYSwgYiwgbGVuZ3RoKTsgfQppbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBib29sIGVxdWFsKGNvbnN0IFVD
aGFyKiBhLCBjb25zdCBVQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiAhbWVtY21w
KGEsIGIsIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpOyB9CiMgMjg1ICIuLi8uLi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oIgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18pKSBib29sIGVxdWFsKGNvbnN0IExDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgdW5z
aWduZWQgbGVuZ3RoKQp7CiAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKICAgICAgICBpZiAoYVtpXSAhPSBiW2ldKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICB9CiAgICByZXR1cm4gdHJ1ZTsKfQoKaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fKSkgYm9vbCBlcXVhbChjb25zdCBVQ2hhciogYSwgY29uc3QgTENoYXIqIGIsIHVuc2ln
bmVkIGxlbmd0aCkgeyByZXR1cm4gZXF1YWwoYiwgYSwgbGVuZ3RoKTsgfQoKdGVtcGxhdGU8dHlw
ZW5hbWUgU3RyaW5nQ2xhc3NBLCB0eXBlbmFtZSBTdHJpbmdDbGFzc0I+CmlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgZXF1YWxDb21tb24oY29uc3QgU3RyaW5n
Q2xhc3NBJiBhLCBjb25zdCBTdHJpbmdDbGFzc0ImIGIpCnsKICAgIHVuc2lnbmVkIGxlbmd0aCA9
IGEubGVuZ3RoKCk7CiAgICBpZiAobGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgcmV0dXJu
IGZhbHNlOwoKICAgIGlmIChhLmlzOEJpdCgpKSB7CiAgICAgICAgaWYgKGIuaXM4Qml0KCkpCiAg
ICAgICAgICAgIHJldHVybiBlcXVhbChhLmNoYXJhY3RlcnM4KCksIGIuY2hhcmFjdGVyczgoKSwg
bGVuZ3RoKTsKCiAgICAgICAgcmV0dXJuIGVxdWFsKGEuY2hhcmFjdGVyczgoKSwgYi5jaGFyYWN0
ZXJzMTYoKSwgbGVuZ3RoKTsKICAgIH0KCiAgICBpZiAoYi5pczhCaXQoKSkKICAgICAgICByZXR1
cm4gZXF1YWwoYS5jaGFyYWN0ZXJzMTYoKSwgYi5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOwoKICAg
IHJldHVybiBlcXVhbChhLmNoYXJhY3RlcnMxNigpLCBiLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgp
Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNz
Qj4KaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBlcXVhbENv
bW1vbihjb25zdCBTdHJpbmdDbGFzc0EqIGEsIGNvbnN0IFN0cmluZ0NsYXNzQiogYikKewogICAg
aWYgKGEgPT0gYikKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIGlmICghYSB8fCAhYikKICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICByZXR1cm4gZXF1YWwoKmEsICpiKTsKfQoKdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZUEsIHR5cGVuYW1lIENoYXJhY3RlclR5cGVCPgppbmxpbmUgYm9v
bCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJhY3RlclR5cGVBKiBhLCBjb25zdCBD
aGFyYWN0ZXJUeXBlQiogYiwgdW5zaWduZWQgbGVuZ3RoKQp7CiAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGFbaV0pICE9
IHRvQVNDSUlMb3dlcihiW2ldKSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAg
cmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGVBLCB0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlQj4gaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25z
dCBDaGFyYWN0ZXJUeXBlQSogYSwgdW5zaWduZWQgbGVuZ3RoQSwgY29uc3QgQ2hhcmFjdGVyVHlw
ZUIqIGIsIHVuc2lnbmVkIGxlbmd0aEIpCnsKICAgIHJldHVybiBsZW5ndGhBID09IGxlbmd0aEIg
JiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhLCBiLCBsZW5ndGhBKTsKfQoKdGVtcGxhdGU8dHlw
ZW5hbWUgU3RyaW5nQ2xhc3NBLCB0eXBlbmFtZSBTdHJpbmdDbGFzc0I+CmJvb2wgZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZUNvbW1vbihjb25zdCBTdHJpbmdDbGFzc0EmIGEsIGNvbnN0IFN0cmluZ0Ns
YXNzQiYgYikKewogICAgdW5zaWduZWQgbGVuZ3RoID0gYS5sZW5ndGgoKTsKICAgIGlmIChsZW5n
dGggIT0gYi5sZW5ndGgoKSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgaWYgKGEuaXM4Qml0
KCkpIHsKICAgICAgICBpZiAoYi5pczhCaXQoKSkKICAgICAgICAgICAgcmV0dXJuIGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UoYS5jaGFyYWN0ZXJzOCgpLCBiLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7
CgogICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGEuY2hhcmFjdGVyczgoKSwg
Yi5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKTsKICAgIH0KCiAgICBpZiAoYi5pczhCaXQoKSkKICAg
ICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhLmNoYXJhY3RlcnMxNigpLCBiLmNo
YXJhY3RlcnM4KCksIGxlbmd0aCk7CgogICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
YS5jaGFyYWN0ZXJzMTYoKSwgYi5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKTsKfQoKdGVtcGxhdGU8
dHlwZW5hbWUgU3RyaW5nQ2xhc3NBPiBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2VDb21tb24o
Y29uc3QgU3RyaW5nQ2xhc3NBJiBhLCBjb25zdCBjaGFyKiBiKQp7CiAgICB1bnNpZ25lZCBsZW5n
dGggPSBhLmxlbmd0aCgpOwogICAgaWYgKGxlbmd0aCAhPSBzdHJsZW4oYikpCiAgICAgICAgcmV0
dXJuIGZhbHNlOwoKICAgIGlmIChhLmlzOEJpdCgpKQogICAgICAgIHJldHVybiBlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKGEuY2hhcmFjdGVyczgoKSwgYiwgbGVuZ3RoKTsKCiAgICByZXR1cm4gZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShhLmNoYXJhY3RlcnMxNigpLCBiLCBsZW5ndGgpOwp9Cgp0ZW1w
bGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNzQj4KYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFN0cmluZ0NsYXNzQSYgcmVmZXJlbmNlLCBjb25zdCBTdHJpbmdDbGFz
c0ImIHByZWZpeCkKewogICAgdW5zaWduZWQgcHJlZml4TGVuZ3RoID0gcHJlZml4Lmxlbmd0aCgp
OwogICAgaWYgKHByZWZpeExlbmd0aCA+IHJlZmVyZW5jZS5sZW5ndGgoKSkKICAgICAgICByZXR1
cm4gZmFsc2U7CgogICAgaWYgKHJlZmVyZW5jZS5pczhCaXQoKSkgewogICAgICAgIGlmIChwcmVm
aXguaXM4Qml0KCkpCiAgICAgICAgICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVy
czgoKSwgcHJlZml4LmNoYXJhY3RlcnM4KCksIHByZWZpeExlbmd0aCk7CiAgICAgICAgcmV0dXJu
IGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpLCBwcmVmaXguY2hhcmFjdGVyczE2KCksIHBy
ZWZpeExlbmd0aCk7CiAgICB9CiAgICBpZiAocHJlZml4LmlzOEJpdCgpKQogICAgICAgIHJldHVy
biBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBw
cmVmaXhMZW5ndGgpOwogICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSwg
cHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFt
ZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNzQj4KYm9vbCBzdGFydHNXaXRoSWdu
b3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nQ2xhc3NBJiByZWZlcmVuY2UsIGNvbnN0IFN0cmlu
Z0NsYXNzQiYgcHJlZml4KQp7CiAgICB1bnNpZ25lZCBwcmVmaXhMZW5ndGggPSBwcmVmaXgubGVu
Z3RoKCk7CiAgICBpZiAocHJlZml4TGVuZ3RoID4gcmVmZXJlbmNlLmxlbmd0aCgpKQogICAgICAg
IHJldHVybiBmYWxzZTsKCiAgICBpZiAocmVmZXJlbmNlLmlzOEJpdCgpKSB7CiAgICAgICAgaWYg
KHByZWZpeC5pczhCaXQoKSkKICAgICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UocmVmZXJlbmNlLmNoYXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhM
ZW5ndGgpOwogICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5j
aGFyYWN0ZXJzOCgpLCBwcmVmaXguY2hhcmFjdGVyczE2KCksIHByZWZpeExlbmd0aCk7CiAgICB9
CiAgICBpZiAocHJlZml4LmlzOEJpdCgpKQogICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3RlcnM4KCksIHBy
ZWZpeExlbmd0aCk7CiAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2Uu
Y2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4TGVuZ3RoKTsKfQoK
dGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3NBLCB0eXBlbmFtZSBTdHJpbmdDbGFzc0I+CmJv
b2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nQ2xhc3NBJiByZWZlcmVuY2UsIGNvbnN0IFN0cmluZ0Ns
YXNzQiYgc3VmZml4KQp7CiAgICB1bnNpZ25lZCBzdWZmaXhMZW5ndGggPSBzdWZmaXgubGVuZ3Ro
KCk7CiAgICB1bnNpZ25lZCByZWZlcmVuY2VMZW5ndGggPSByZWZlcmVuY2UubGVuZ3RoKCk7CiAg
ICBpZiAoc3VmZml4TGVuZ3RoID4gcmVmZXJlbmNlTGVuZ3RoKQogICAgICAgIHJldHVybiBmYWxz
ZTsKCiAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHJlZmVyZW5jZUxlbmd0aCAtIHN1ZmZpeExl
bmd0aDsKCiAgICBpZiAocmVmZXJlbmNlLmlzOEJpdCgpKSB7CiAgICAgICAgaWYgKHN1ZmZpeC5p
czhCaXQoKSkKICAgICAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgp
ICsgc3RhcnRPZmZzZXQsIHN1ZmZpeC5jaGFyYWN0ZXJzOCgpLCBzdWZmaXhMZW5ndGgpOwogICAg
ICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCBz
dWZmaXguY2hhcmFjdGVyczE2KCksIHN1ZmZpeExlbmd0aCk7CiAgICB9CiAgICBpZiAoc3VmZml4
LmlzOEJpdCgpKQogICAgICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczE2KCkg
KyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCksIHN1ZmZpeExlbmd0aCk7CiAgICBy
ZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIHN1ZmZp
eC5jaGFyYWN0ZXJzMTYoKSwgc3VmZml4TGVuZ3RoKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgU3Ry
aW5nQ2xhc3NBLCB0eXBlbmFtZSBTdHJpbmdDbGFzc0I+CmJvb2wgZW5kc1dpdGhJZ25vcmluZ0FT
Q0lJQ2FzZShjb25zdCBTdHJpbmdDbGFzc0EmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nQ2xhc3NC
JiBzdWZmaXgpCnsKICAgIHVuc2lnbmVkIHN1ZmZpeExlbmd0aCA9IHN1ZmZpeC5sZW5ndGgoKTsK
ICAgIHVuc2lnbmVkIHJlZmVyZW5jZUxlbmd0aCA9IHJlZmVyZW5jZS5sZW5ndGgoKTsKICAgIGlm
IChzdWZmaXhMZW5ndGggPiByZWZlcmVuY2VMZW5ndGgpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoK
ICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gcmVmZXJlbmNlTGVuZ3RoIC0gc3VmZml4TGVuZ3Ro
OwoKICAgIGlmIChyZWZlcmVuY2UuaXM4Qml0KCkpIHsKICAgICAgICBpZiAoc3VmZml4LmlzOEJp
dCgpKQogICAgICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2Uu
Y2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczgoKSwgc3VmZml4
TGVuZ3RoKTsKICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2Uu
Y2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczE2KCksIHN1ZmZp
eExlbmd0aCk7CiAgICB9CiAgICBpZiAoc3VmZml4LmlzOEJpdCgpKQogICAgICAgIHJldHVybiBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0T2Zm
c2V0LCBzdWZmaXguY2hhcmFjdGVyczgoKSwgc3VmZml4TGVuZ3RoKTsKICAgIHJldHVybiBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0T2Zmc2V0
LCBzdWZmaXguY2hhcmFjdGVyczE2KCksIHN1ZmZpeExlbmd0aCk7Cn0KCnRlbXBsYXRlIDx0eXBl
bmFtZSBTZWFyY2hDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaENoYXJhY3RlclR5cGU+CnNp
emVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU2VhcmNoQ2hhcmFjdGVyVHlwZSogc291
cmNlLCBjb25zdCBNYXRjaENoYXJhY3RlclR5cGUqIG1hdGNoQ2hhcmFjdGVycywgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIHNlYXJjaExlbmd0aCwgdW5zaWduZWQgbWF0Y2hMZW5ndGgp
CnsKICAgICgodm9pZCkwKTsKCiAgICBjb25zdCBTZWFyY2hDaGFyYWN0ZXJUeXBlKiBzdGFydFNl
YXJjaGVkQ2hhcmFjdGVycyA9IHNvdXJjZSArIHN0YXJ0T2Zmc2V0OwoKCiAgICB1bnNpZ25lZCBk
ZWx0YSA9IHNlYXJjaExlbmd0aCAtIG1hdGNoTGVuZ3RoOwoKICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPD0gZGVsdGE7ICsraSkgewogICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KHN0YXJ0U2VhcmNoZWRDaGFyYWN0ZXJzICsgaSwgbWF0Y2hDaGFyYWN0ZXJzLCBtYXRjaExlbmd0
aCkpCiAgICAgICAgICAgIHJldHVybiBzdGFydE9mZnNldCArIGk7CiAgICB9CiAgICByZXR1cm4g
bm90Rm91bmQ7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNzQSwgdHlwZW5hbWUgU3Ry
aW5nQ2xhc3NCPgpzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0NsYXNz
QSYgc291cmNlLCBjb25zdCBTdHJpbmdDbGFzc0ImIHN0cmluZ1RvRmluZCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQpCnsKICAgIHVuc2lnbmVkIHNvdXJjZVN0cmluZ0xlbmd0aCA9IHNvdXJjZS5sZW5n
dGgoKTsKICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gc3RyaW5nVG9GaW5kLmxlbmd0aCgpOwog
ICAgaWYgKCFtYXRjaExlbmd0aCkKICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RhcnRPZmZzZXQs
IHNvdXJjZVN0cmluZ0xlbmd0aCk7CgoKICAgIGlmIChzdGFydE9mZnNldCA+IHNvdXJjZVN0cmlu
Z0xlbmd0aCkKICAgICAgICByZXR1cm4gbm90Rm91bmQ7CiAgICB1bnNpZ25lZCBzZWFyY2hMZW5n
dGggPSBzb3VyY2VTdHJpbmdMZW5ndGggLSBzdGFydE9mZnNldDsKICAgIGlmIChtYXRjaExlbmd0
aCA+IHNlYXJjaExlbmd0aCkKICAgICAgICByZXR1cm4gbm90Rm91bmQ7CgogICAgaWYgKHNvdXJj
ZS5pczhCaXQoKSkgewogICAgICAgIGlmIChzdHJpbmdUb0ZpbmQuaXM4Qml0KCkpCiAgICAgICAg
ICAgIHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc291cmNlLmNoYXJhY3RlcnM4KCksIHN0
cmluZ1RvRmluZC5jaGFyYWN0ZXJzOCgpLCBzdGFydE9mZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRj
aExlbmd0aCk7CiAgICAgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzb3VyY2UuY2hh
cmFjdGVyczgoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgc2Vh
cmNoTGVuZ3RoLCBtYXRjaExlbmd0aCk7CiAgICB9CgogICAgaWYgKHN0cmluZ1RvRmluZC5pczhC
aXQoKSkKICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0
ZXJzMTYoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hM
ZW5ndGgsIG1hdGNoTGVuZ3RoKTsKCiAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNv
dXJjZS5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnMxNigpLCBzdGFydE9m
ZnNldCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0aCk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBT
ZWFyY2hDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaENoYXJhY3RlclR5cGU+CmlubGluZSBf
X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBzaXplX3QgZmluZElubmVy
KGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJjaENoYXJhY3RlcnMsIGNvbnN0IE1hdGNo
Q2hhcmFjdGVyVHlwZSogbWF0Y2hDaGFyYWN0ZXJzLCB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQg
c2VhcmNoTGVuZ3RoLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkKewoKCgoKICAgIHVuc2lnbmVkIGRl
bHRhID0gc2VhcmNoTGVuZ3RoIC0gbWF0Y2hMZW5ndGg7CgogICAgdW5zaWduZWQgc2VhcmNoSGFz
aCA9IDA7CiAgICB1bnNpZ25lZCBtYXRjaEhhc2ggPSAwOwoKICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtYXRjaExlbmd0aDsgKytpKSB7CiAgICAgICAgc2VhcmNoSGFzaCArPSBzZWFyY2hD
aGFyYWN0ZXJzW2ldOwogICAgICAgIG1hdGNoSGFzaCArPSBtYXRjaENoYXJhY3RlcnNbaV07CiAg
ICB9CgogICAgdW5zaWduZWQgaSA9IDA7CgogICAgd2hpbGUgKHNlYXJjaEhhc2ggIT0gbWF0Y2hI
YXNoIHx8ICFlcXVhbChzZWFyY2hDaGFyYWN0ZXJzICsgaSwgbWF0Y2hDaGFyYWN0ZXJzLCBtYXRj
aExlbmd0aCkpIHsKICAgICAgICBpZiAoaSA9PSBkZWx0YSkKICAgICAgICAgICAgcmV0dXJuIG5v
dEZvdW5kOwogICAgICAgIHNlYXJjaEhhc2ggKz0gc2VhcmNoQ2hhcmFjdGVyc1tpICsgbWF0Y2hM
ZW5ndGhdOwogICAgICAgIHNlYXJjaEhhc2ggLT0gc2VhcmNoQ2hhcmFjdGVyc1tpXTsKICAgICAg
ICArK2k7CiAgICB9CiAgICByZXR1cm4gaW5kZXggKyBpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgppbmxpbmUgc2l6ZV90IGZpbmQoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJUeXBlIG1hdGNoQ2hhcmFjdGVyLCB1
bnNpZ25lZCBpbmRleCA9IDApCnsKICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewogICAgICAg
IGlmIChjaGFyYWN0ZXJzW2luZGV4XSA9PSBtYXRjaENoYXJhY3RlcikKICAgICAgICAgICAgcmV0
dXJuIGluZGV4OwogICAgICAgICsraW5kZXg7CiAgICB9CiAgICByZXR1cm4gbm90Rm91bmQ7Cn0K
CmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHNpemVfdCBmaW5kKGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIExDaGFyIG1hdGNoQ2hhcmFj
dGVyLCB1bnNpZ25lZCBpbmRleCA9IDApCnsKICAgIHJldHVybiBmaW5kKGNoYXJhY3RlcnMsIGxl
bmd0aCwgc3RhdGljX2Nhc3Q8VUNoYXI+KG1hdGNoQ2hhcmFjdGVyKSwgaW5kZXgpOwp9Cgppbmxp
bmUgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwg
VUNoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gMCkKewogICAgaWYgKG1hdGNo
Q2hhcmFjdGVyICYgfjB4RkYpCiAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogICAgcmV0dXJuIGZp
bmQoY2hhcmFjdGVycywgbGVuZ3RoLCBzdGF0aWNfY2FzdDxMQ2hhcj4obWF0Y2hDaGFyYWN0ZXIp
LCBpbmRleCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNzPgpzaXplX3QgZmluZENv
bW1vbihjb25zdCBTdHJpbmdDbGFzcyYgaGF5c3RhY2ssIGNvbnN0IFN0cmluZ0NsYXNzJiBuZWVk
bGUsIHVuc2lnbmVkIHN0YXJ0KQp7CiAgICB1bnNpZ25lZCBuZWVkbGVMZW5ndGggPSBuZWVkbGUu
bGVuZ3RoKCk7CgogICAgaWYgKG5lZWRsZUxlbmd0aCA9PSAxKSB7CiAgICAgICAgaWYgKGhheXN0
YWNrLmlzOEJpdCgpKQogICAgICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNrLmNoYXJh
Y3RlcnM4KCksIGhheXN0YWNrLmxlbmd0aCgpLCBuZWVkbGVbMF0sIHN0YXJ0KTsKICAgICAgICBy
ZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNrLmNoYXJhY3RlcnMxNigpLCBoYXlzdGFjay5sZW5ndGgo
KSwgbmVlZGxlWzBdLCBzdGFydCk7CiAgICB9CgogICAgaWYgKCFuZWVkbGVMZW5ndGgpCiAgICAg
ICAgcmV0dXJuIHN0ZDo6bWluKHN0YXJ0LCBoYXlzdGFjay5sZW5ndGgoKSk7CgogICAgaWYgKHN0
YXJ0ID4gaGF5c3RhY2subGVuZ3RoKCkpCiAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogICAgdW5z
aWduZWQgc2VhcmNoTGVuZ3RoID0gaGF5c3RhY2subGVuZ3RoKCkgLSBzdGFydDsKICAgIGlmIChu
ZWVkbGVMZW5ndGggPiBzZWFyY2hMZW5ndGgpCiAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwoKICAg
IGlmIChoYXlzdGFjay5pczhCaXQoKSkgewogICAgICAgIGlmIChuZWVkbGUuaXM4Qml0KCkpCiAg
ICAgICAgICAgIHJldHVybiBmaW5kSW5uZXIoaGF5c3RhY2suY2hhcmFjdGVyczgoKSArIHN0YXJ0
LCBuZWVkbGUuY2hhcmFjdGVyczgoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3Ro
KTsKICAgICAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJhY3RlcnM4KCkgKyBzdGFy
dCwgbmVlZGxlLmNoYXJhY3RlcnMxNigpLCBzdGFydCwgc2VhcmNoTGVuZ3RoLCBuZWVkbGVMZW5n
dGgpOwogICAgfQoKICAgIGlmIChuZWVkbGUuaXM4Qml0KCkpCiAgICAgICAgcmV0dXJuIGZpbmRJ
bm5lcihoYXlzdGFjay5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczgo
KSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsKCiAgICByZXR1cm4gZmluZElu
bmVyKGhheXN0YWNrLmNoYXJhY3RlcnMxNigpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzMTYo
KSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsKfQoKCgp0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBsb3dlcmNh
c2VMZXR0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCnsKICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkgewogICAgICAgIGlmICghaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChj
aGFyYWN0ZXJzW2ldLCBsb3dlcmNhc2VMZXR0ZXJzW2ldKSkKICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgfQogICAgcmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGUsIHVuc2lnbmVkIGxvd2VyY2FzZUxldHRlcnNMZW5ndGg+IGlubGluZSBib29sIGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGNoYXJhY3RlcnNMZW5ndGgsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJz
KVtsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoXSkKewogICAgKCh2b2lkKTApOwogICAgdW5zaWduZWQg
bG93ZXJjYXNlTGV0dGVyc1N0cmluZ0xlbmd0aCA9IGxvd2VyY2FzZUxldHRlcnNMZW5ndGggLSAx
OwogICAgcmV0dXJuIGNoYXJhY3RlcnNMZW5ndGggPT0gbG93ZXJjYXNlTGV0dGVyc1N0cmluZ0xl
bmd0aCAmJiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjaGFyYWN0ZXJzLCBsb3dlcmNh
c2VMZXR0ZXJzLCBsb3dlcmNhc2VMZXR0ZXJzU3RyaW5nTGVuZ3RoKTsKfQoKdGVtcGxhdGU8dHlw
ZW5hbWUgU3RyaW5nQ2xhc3M+IGJvb2wgaW5saW5lIGhhc1ByZWZpeFdpdGhMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2VDb21tb24oY29uc3QgU3RyaW5nQ2xhc3MmIHN0cmluZywgY29uc3QgY2hhciog
bG93ZXJjYXNlTGV0dGVycywgdW5zaWduZWQgbGVuZ3RoKQp7CgoKCgoKICAgICgodm9pZCkwKTsK
CiAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQogICAgICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShzdHJpbmcuY2hhcmFjdGVyczgoKSwgbG93ZXJjYXNlTGV0dGVycywgbGVu
Z3RoKTsKICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcuY2hh
cmFjdGVyczE2KCksIGxvd2VyY2FzZUxldHRlcnMsIGxlbmd0aCk7Cn0KCgp0ZW1wbGF0ZTx0eXBl
bmFtZSBTdHJpbmdDbGFzcz4gYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1v
bldpdGhvdXRMZW5ndGgoY29uc3QgU3RyaW5nQ2xhc3MmIHN0cmluZywgY29uc3QgY2hhciogbG93
ZXJjYXNlTGV0dGVycykKewogICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwog
ICAgaWYgKGxlbmd0aCAhPSBzdHJsZW4obG93ZXJjYXNlTGV0dGVycykpCiAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgcmV0dXJuIGhhc1ByZWZpeFdpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2VD
b21tb24oc3RyaW5nLCBsb3dlcmNhc2VMZXR0ZXJzLCBsZW5ndGgpOwp9Cgp0ZW1wbGF0ZTx0eXBl
bmFtZSBTdHJpbmdDbGFzcz4gYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
Q29tbW9uV2l0aG91dExlbmd0aChjb25zdCBTdHJpbmdDbGFzcyYgc3RyaW5nLCBjb25zdCBjaGFy
KiBsb3dlcmNhc2VMZXR0ZXJzKQp7CiAgICBzaXplX3QgcHJlZml4TGVuZ3RoID0gc3RybGVuKGxv
d2VyY2FzZUxldHRlcnMpOwogICAgaWYgKCFwcmVmaXhMZW5ndGgpCiAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICBpZiAoc3RyaW5nLmxlbmd0aCgpIDwgcHJlZml4TGVuZ3RoKQogICAgICAgIHJldHVy
biBmYWxzZTsKICAgIHJldHVybiBoYXNQcmVmaXhXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
Q29tbW9uKHN0cmluZywgbG93ZXJjYXNlTGV0dGVycywgcHJlZml4TGVuZ3RoKTsKfQoKdGVtcGxh
dGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3MsIHVuc2lnbmVkIGxlbmd0aD4gaW5saW5lIGJvb2wgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2VDb21tb24oY29uc3QgU3RyaW5nQ2xhc3MmIHN0cmlu
ZywgY29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pCnsKCiAgICAoKHZvaWQp
MCk7CiAgICBjb25zdCBjaGFyKiBwb2ludGVyID0gbG93ZXJjYXNlTGV0dGVyczsKICAgIHJldHVy
biBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1vbldpdGhvdXRMZW5ndGgoc3RyaW5n
LCBwb2ludGVyKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3MsIHVuc2lnbmVkIGxl
bmd0aD4gaW5saW5lIGJvb2wgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1v
bihjb25zdCBTdHJpbmdDbGFzcyYgc3RyaW5nLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVy
cylbbGVuZ3RoXSkKewogICAgY29uc3QgY2hhciogcG9pbnRlciA9IGxvd2VyY2FzZUxldHRlcnM7
CiAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1vbldpdGhv
dXRMZW5ndGgoc3RyaW5nLCBwb2ludGVyKTsKfQoKfQoKdXNpbmcgV1RGOjplcXVhbElnbm9yaW5n
QVNDSUlDYXNlOwp1c2luZyBXVEY6OmVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlOwojIDM3
ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCIgMgojIDQ2ICIuLi8uLi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCIKbmFtZXNwYWNlIEpTQyB7Cm5hbWVzcGFj
ZSBMTEludCB7IGNsYXNzIERhdGE7IH0KY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwp9Cgpu
YW1lc3BhY2UgV1RGIHsKCmNsYXNzIFN5bWJvbEltcGw7CmNsYXNzIFN5bWJvbFJlZ2lzdHJ5OwoK
c3RydWN0IENTdHJpbmdUcmFuc2xhdG9yOwpzdHJ1Y3QgQ2hhckJ1ZmZlckZyb21MaXRlcmFsRGF0
YVRyYW5zbGF0b3I7CnN0cnVjdCBIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yOwpzdHJ1
Y3QgTENoYXJCdWZmZXJUcmFuc2xhdG9yOwpzdHJ1Y3QgU3RyaW5nSGFzaDsKc3RydWN0IFN1YnN0
cmluZ1RyYW5zbGF0b3I7CnN0cnVjdCBVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7Cgp0ZW1wbGF0ZTx0
eXBlbmFtZT4gY2xhc3MgUmV0YWluUHRyOwoKdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBIYXNo
QW5kQ2hhcmFjdGVyc1RyYW5zbGF0b3I7CgplbnVtIFRleHRDYXNlU2Vuc2l0aXZpdHkgewogICAg
VGV4dENhc2VTZW5zaXRpdmUsCiAgICBUZXh0Q2FzZUluc2Vuc2l0aXZlCn07Cgp0eXBlZGVmIGJv
b2wgKCpDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKShVQ2hhcik7CnR5cGVkZWYgYm9vbCAoKklz
V2hpdGVTcGFjZUZ1bmN0aW9uUHRyKShVQ2hhcik7CgoKI2RlZmluZSBTVFJJTkdfU1RBVFMgMAoj
IDEyMSAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgiCiNkZWZpbmUgU1RS
SU5HX1NUQVRTX0FERF84QklUX1NUUklORyhsZW5ndGgpICgodm9pZCkwKQojZGVmaW5lIFNUUklO
R19TVEFUU19BRERfOEJJVF9TVFJJTkcyKGxlbmd0aCxpc1N1YlN0cmluZykgKCh2b2lkKTApCiNk
ZWZpbmUgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcobGVuZ3RoKSAoKHZvaWQpMCkKI2Rl
ZmluZSBTVFJJTkdfU1RBVFNfQUREXzE2QklUX1NUUklORzIobGVuZ3RoLGlzU3ViU3RyaW5nKSAo
KHZvaWQpMCkKI2RlZmluZSBTVFJJTkdfU1RBVFNfQUREX1VQQ09OVkVSVEVEX1NUUklORyhsZW5n
dGgpICgodm9pZCkwKQojZGVmaW5lIFNUUklOR19TVEFUU19SRU1PVkVfU1RSSU5HKHN0cmluZykg
KCh2b2lkKTApCiNkZWZpbmUgU1RSSU5HX1NUQVRTX1JFRl9TVFJJTkcoc3RyaW5nKSAoKHZvaWQp
MCkKI2RlZmluZSBTVFJJTkdfU1RBVFNfREVSRUZfU1RSSU5HKHN0cmluZykgKCh2b2lkKTApCgoK
Y2xhc3MgU3RyaW5nSW1wbCB7CiAgICBwcml2YXRlOiBTdHJpbmdJbXBsKGNvbnN0IFN0cmluZ0lt
cGwmKSA9IGRlbGV0ZTsgU3RyaW5nSW1wbCYgb3BlcmF0b3I9KGNvbnN0IFN0cmluZ0ltcGwmKSA9
IGRlbGV0ZTs7IHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyBy
ZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJu
IHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFz
dE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpm
YXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4g
OjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBw
KSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3RO
dWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSBw
cml2YXRlOiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhp
c01hY3JvOwogICAgZnJpZW5kIHN0cnVjdCBXVEY6OkNTdHJpbmdUcmFuc2xhdG9yOwogICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gZnJpZW5kIHN0cnVjdCBXVEY6Okhhc2hBbmRD
aGFyYWN0ZXJzVHJhbnNsYXRvcjsKICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kVVRGOENo
YXJhY3RlcnNUcmFuc2xhdG9yOwogICAgZnJpZW5kIHN0cnVjdCBXVEY6OkNoYXJCdWZmZXJGcm9t
TGl0ZXJhbERhdGFUcmFuc2xhdG9yOwogICAgZnJpZW5kIHN0cnVjdCBXVEY6OkxDaGFyQnVmZmVy
VHJhbnNsYXRvcjsKICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpTdWJzdHJpbmdUcmFuc2xhdG9yOwog
ICAgZnJpZW5kIHN0cnVjdCBXVEY6OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKICAgIGZyaWVuZCBj
bGFzcyBKU0M6OkxMSW50OjpEYXRhOwogICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRz
RXh0cmFjdG9yOwoKcHJpdmF0ZToKICAgIGVudW0gQnVmZmVyT3duZXJzaGlwIHsKICAgICAgICBC
dWZmZXJJbnRlcm5hbCwKICAgICAgICBCdWZmZXJPd25lZCwKICAgICAgICBCdWZmZXJTdWJzdHJp
bmcsCiAgICB9OwoKCiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnQ291bnQgPSA2Owog
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ01hc2sgPSAoMXUgPDwgc19mbGFnQ291bnQp
IC0gMTsKICAgIHN0YXRpY19hc3NlcnQoKHNfZmxhZ0NvdW50IDw9IFN0cmluZ0hhc2hlcjo6Zmxh
Z0NvdW50KSwgIlN0cmluZ0hhc2hlcl9yZXNlcnZlc19lbm91Z2hfYml0c19mb3JfU3RyaW5nSW1w
bF9mbGFncyIpOwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ1N0cmluZ0tpbmRDb3Vu
dCA9IDQ7CgogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNB
dG9taWMgPSAxdSA8PCAoc19mbGFnU3RyaW5nS2luZENvdW50KTsKICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzX2hhc2hGbGFnU3RyaW5nS2luZElzU3ltYm9sID0gMXUgPDwgKHNfZmxhZ1N0cmlu
Z0tpbmRDb3VudCArIDEpOwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaE1hc2tTdHJp
bmdLaW5kID0gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYyB8IHNfaGFzaEZsYWdTdHJpbmdL
aW5kSXNTeW1ib2w7CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19oYXNoRmxhZzhCaXRCdWZm
ZXIgPSAxdSA8PCAzOwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdEaWRSZXBv
cnRDb3N0ID0gMXUgPDwgMjsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hhc2hNYXNrQnVm
ZmVyT3duZXJzaGlwID0gKDF1IDw8IDApIHwgKDF1IDw8IDEpOwoKICAgIGVudW0gU3RyaW5nS2lu
ZCB7CiAgICAgICAgU3RyaW5nTm9ybWFsID0gMHUsCiAgICAgICAgU3RyaW5nQXRvbWljID0gc19o
YXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYywKICAgICAgICBTdHJpbmdTeW1ib2wgPSBzX2hhc2hG
bGFnU3RyaW5nS2luZElzU3ltYm9sLAogICAgfTsKCgoKCiAgICBmcmllbmQgY2xhc3MgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nSW1wbD47CiAgICBlbnVtIENvbnN0cnVjdEVtcHR5U3RyaW5nVGFnIHsg
Q29uc3RydWN0RW1wdHlTdHJpbmcgfTsKICAgIFN0cmluZ0ltcGwoQ29uc3RydWN0RW1wdHlTdHJp
bmdUYWcpCiAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmcp
CiAgICAgICAgLCBtX2xlbmd0aCgwKQogICAgICAgICwgbV9kYXRhOChyZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oJm1fbGVuZ3RoKSkKICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFz
aEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nQXRvbWljIHwgQnVmZmVyT3duZWQpCiAgICB7CgoKCiAg
ICAgICAgKCh2b2lkKTApOwoKICAgICAgICBoYXNoKCk7CiAgICB9CgoKICAgIGVudW0gRm9yY2U4
Qml0IHsgRm9yY2U4Qml0Q29uc3RydWN0b3IgfTsKCiAgICBTdHJpbmdJbXBsKHVuc2lnbmVkIGxl
bmd0aCwgRm9yY2U4Qml0KQogICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50
KQogICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICwgbV9kYXRhOCh0YWlsUG9pbnRl
cjxMQ2hhcj4oKSkKICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVy
IHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCiAgICB7CiAgICAgICAgKCh2b2lkKTAp
OwogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgKCh2b2lkKTApOwogICAgfQoKCiAgICBTdHJp
bmdJbXBsKHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudElu
Y3JlbWVudCkKICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAsIG1fZGF0YTE2KHRh
aWxQb2ludGVyPFVDaGFyPigpKQogICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoU3RyaW5nTm9ybWFs
IHwgQnVmZmVySW50ZXJuYWwpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9p
ZCkwKTsKCiAgICAgICAgKCh2b2lkKTApOwogICAgfQoKCiAgICBTdHJpbmdJbXBsKE1hbGxvY1B0
cjxMQ2hhcj4gY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgIDogbV9yZWZDb3Vu
dChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAg
ICwgbV9kYXRhOChjaGFyYWN0ZXJzLmxlYWtQdHIoKSkKICAgICAgICAsIG1faGFzaEFuZEZsYWdz
KHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVyT3duZWQpCiAgICB7
CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgKCh2b2lkKTAp
OwogICAgfQoKICAgIGVudW0gQ29uc3RydWN0V2l0aG91dENvcHlpbmdUYWcgeyBDb25zdHJ1Y3RX
aXRob3V0Q29weWluZyB9OwogICAgU3RyaW5nSW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoLCBDb25zdHJ1Y3RXaXRob3V0Q29weWluZ1RhZykKICAgICAgICA6IG1f
cmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkK
ICAgICAgICAsIG1fZGF0YTE2KGNoYXJhY3RlcnMpCiAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhT
dHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAg
ICAgICAgKCh2b2lkKTApOwoKICAgICAgICAoKHZvaWQpMCk7CiAgICB9CgogICAgU3RyaW5nSW1w
bChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDb25zdHJ1Y3RXaXRo
b3V0Q29weWluZ1RhZykKICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkK
ICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAsIG1fZGF0YTgoY2hhcmFjdGVycykK
ICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9y
bWFsIHwgQnVmZmVySW50ZXJuYWwpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgo
dm9pZCkwKTsKCiAgICAgICAgKCh2b2lkKTApOwogICAgfQoKCiAgICBTdHJpbmdJbXBsKE1hbGxv
Y1B0cjxVQ2hhcj4gY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgIDogbV9yZWZD
b3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAg
ICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycy5sZWFrUHRyKCkpCiAgICAgICAgLCBtX2hhc2hBbmRG
bGFncyhTdHJpbmdOb3JtYWwgfCBCdWZmZXJPd25lZCkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7
CiAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICAoKHZvaWQpMCk7CiAgICB9CgoKICAgIFN0cmlu
Z0ltcGwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBiYXNlKQogICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVt
ZW50KQogICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICwgbV9kYXRhOChjaGFyYWN0
ZXJzKQogICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJp
bmdOb3JtYWwgfCBCdWZmZXJTdWJzdHJpbmcpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAg
ICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwoKICAg
ICAgICBzdWJzdHJpbmdCdWZmZXIoKSA9IGJhc2UubGVha1JlZigpOwoKICAgICAgICAoKHZvaWQp
MCk7CiAgICB9CgoKICAgIFN0cmluZ0ltcGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBiYXNlKQogICAgICAgIDogbV9yZWZD
b3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAg
ICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycykKICAgICAgICAsIG1faGFzaEFuZEZsYWdzKFN0cmlu
Z05vcm1hbCB8IEJ1ZmZlclN1YnN0cmluZykKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAg
ICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CgogICAg
ICAgIHN1YnN0cmluZ0J1ZmZlcigpID0gYmFzZS5sZWFrUmVmKCk7CgogICAgICAgICgodm9pZCkw
KTsKICAgIH0KCiAgICBlbnVtIENyZWF0ZVN5bWJvbFRhZyB7IENyZWF0ZVN5bWJvbCB9OwoKICAg
IFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sVGFnLCBjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoLCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGJhc2UpCiAgICAgICAgOiBtX3Jl
ZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAg
ICAgICAgLCBtX2RhdGE4KGNoYXJhY3RlcnMpCiAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hh
c2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykKICAgIHsK
ICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsK
CiAgICAgICAgc3Vic3RyaW5nQnVmZmVyKCkgPSBiYXNlLmxlYWtSZWYoKTsKICAgICAgICBzeW1i
b2xSZWdpc3RyeSgpID0gbnVsbHB0cjsKICAgICAgICBoYXNoRm9yU3ltYm9sKCkgPSBuZXh0SGFz
aEZvclN5bWJvbCgpOwoKICAgICAgICAoKHZvaWQpMCk7CiAgICB9CgoKICAgIFN0cmluZ0ltcGwo
Q3JlYXRlU3ltYm9sVGFnLCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
LCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGJhc2UpCiAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVm
Q291bnRJbmNyZW1lbnQpCiAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgLCBtX2Rh
dGExNihjaGFyYWN0ZXJzKQogICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoU3RyaW5nU3ltYm9sIHwg
QnVmZmVyU3Vic3RyaW5nKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQp
MCk7CiAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICBzdWJzdHJpbmdCdWZmZXIoKSA9IGJhc2Uu
bGVha1JlZigpOwogICAgICAgIHN5bWJvbFJlZ2lzdHJ5KCkgPSBudWxscHRyOwogICAgICAgIGhh
c2hGb3JTeW1ib2woKSA9IG5leHRIYXNoRm9yU3ltYm9sKCk7CgogICAgICAgICgodm9pZCkwKTsK
ICAgIH0KCnB1YmxpYzoKICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koU3RyaW5nSW1wbCopOwoKICAg
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoKTsKICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IExDaGFyKiwgdW5z
aWduZWQgbGVuZ3RoKTsKICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlOEJpdElmUG9z
c2libGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgdGVtcGxhdGU8c2l6ZV90
IGlubGluZUNhcGFjaXR5PgogICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGU4Qml0SWZQ
b3NzaWJsZShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQogICAg
ewogICAgICAgIHJldHVybiBjcmVhdGU4Qml0SWZQb3NzaWJsZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0
b3Iuc2l6ZSgpKTsKICAgIH0KICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlOEJpdElm
UG9zc2libGUoY29uc3QgVUNoYXIqKTsKCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18pKSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBz
LCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4ocyksIGxlbmd0aCk7IH0KICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRl
KGNvbnN0IExDaGFyKik7CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBzKSB7IHJldHVy
biBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpKTsgfQoKICAgIHN0YXRp
YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBSZWY8U3RyaW5nSW1w
bD4gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXAs
IHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogICAgewogICAgICAgICgodm9pZCkw
KTsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgIGlmICghbGVuZ3RoKQogICAgICAgICAgICBy
ZXR1cm4gKmVtcHR5KCk7CgogICAgICAgIFN0cmluZ0ltcGwqIG93bmVyUmVwID0gKHJlcC0+YnVm
ZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKSA/IHJlcC0+c3Vic3RyaW5nQnVmZmVy
KCkgOiByZXAuZ2V0KCk7CgoKICAgICAgICBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsID0gc3RhdGlj
X2Nhc3Q8U3RyaW5nSW1wbCo+KGZhc3RNYWxsb2MoYWxsb2NhdGlvblNpemU8U3RyaW5nSW1wbCo+
KDEpKSk7CiAgICAgICAgaWYgKHJlcC0+aXM4Qml0KCkpCiAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IChOb3ROdWxsLCBzdHJpbmdJbXBsKSBTdHJpbmdJbXBsKHJlcC0+bV9kYXRhOCAr
IG9mZnNldCwgbGVuZ3RoLCBvd25lclJlcCkpOwogICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IChOb3ROdWxsLCBzdHJpbmdJbXBsKSBTdHJpbmdJbXBsKHJlcC0+bV9kYXRhMTYgKyBvZmZzZXQs
IGxlbmd0aCwgb3duZXJSZXApKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0
ZXJzQ291bnQ+CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIgKCZjaGFy
YWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKQogICAgewogICAgICAgIHN0YXRpY19hc3NlcnQoKGNo
YXJhY3RlcnNDb3VudCA+IDEpLCAiU3RyaW5nSW1wbEZyb21MaXRlcmFsTm90RW1wdHkiKTsKICAg
ICAgICBzdGF0aWNfYXNzZXJ0KCgoY2hhcmFjdGVyc0NvdW50IC0gMSA8PSAoKHVuc2lnbmVkKH4w
KSAtIHNpemVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoTENoYXIpKSkpLCAiU3RyaW5nSW1wbEZy
b21MaXRlcmFsQ2Fubm90T3ZlcmZsb3ciKTsKCiAgICAgICAgcmV0dXJuIGNyZWF0ZVdpdGhvdXRD
b3B5aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgY2hhcmFj
dGVyc0NvdW50IC0gMSk7CiAgICB9CgoKICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRl
RnJvbUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAg
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciogY2hh
cmFjdGVycyk7CgogICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVXaXRob3V0Q29weWlu
Zyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgIHN0YXRpYyBS
ZWY8U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgTENoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCk7CgogICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJiBkYXRhKTsKICAgIHN0YXRpYyBS
ZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFy
KiYgZGF0YSk7CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFQqJiBvdXRwdXQpCiAgICB7CiAgICAg
ICAgaWYgKCFsZW5ndGgpIHsKICAgICAgICAgICAgb3V0cHV0ID0gMDsKICAgICAgICAgICAgcmV0
dXJuIGVtcHR5KCk7CiAgICAgICAgfQoKICAgICAgICBpZiAobGVuZ3RoID4gKChzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBzaXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9m
KFQpKSkgewogICAgICAgICAgICBvdXRwdXQgPSAwOwogICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICB9CiAgICAgICAgU3RyaW5nSW1wbCogcmVzdWx0SW1wbDsKICAgICAgICBpZiAoIXRyeUZh
c3RNYWxsb2MoYWxsb2NhdGlvblNpemU8VD4obGVuZ3RoKSkuZ2V0VmFsdWUocmVzdWx0SW1wbCkp
IHsKICAgICAgICAgICAgb3V0cHV0ID0gMDsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
fQogICAgICAgIG91dHB1dCA9IHJlc3VsdEltcGwtPnRhaWxQb2ludGVyPFQ+KCk7CgogICAgICAg
IHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxUPihyZXN1bHRJbXBsLCBsZW5ndGgpOwogICAgfQoK
ICAgIHN0YXRpYyBSZWY8U3ltYm9sSW1wbD4gY3JlYXRlTnVsbFN5bWJvbCgpOwogICAgc3RhdGlj
IFJlZjxTeW1ib2xJbXBsPiBjcmVhdGVTeW1ib2woUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXAp
OwoKCgoKICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gcmVhbGxvY2F0ZShQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSk7
CiAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IHJlYWxsb2NhdGUoUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpOwoKICAg
IHN0YXRpYyB1bnNpZ25lZCBmbGFnc09mZnNldCgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0
PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFN0cmluZ0ltcGwqPigweDQwMDApLT5tX2hh
c2hBbmRGbGFncykpIC0gMHg0MDAwKTsgfQogICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJczhCaXQo
KSB7IHJldHVybiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQogICAgc3RhdGljIHVuc2lnbmVkIGZs
YWdJc0F0b21pYygpIHsgcmV0dXJuIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7IH0KICAg
IHN0YXRpYyB1bnNpZ25lZCBmbGFnSXNTeW1ib2woKSB7IHJldHVybiBzX2hhc2hGbGFnU3RyaW5n
S2luZElzU3ltYm9sOyB9CiAgICBzdGF0aWMgdW5zaWduZWQgbWFza1N0cmluZ0tpbmQoKSB7IHJl
dHVybiBzX2hhc2hNYXNrU3RyaW5nS2luZDsgfQogICAgc3RhdGljIHVuc2lnbmVkIGRhdGFPZmZz
ZXQoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRf
Y2FzdDxTdHJpbmdJbXBsKj4oMHg0MDAwKS0+bV9kYXRhOCkpIC0gMHg0MDAwKTsgfQoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlcj4KICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRvcHQoVmVjdG9y
PENoYXJUeXBlLCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYgdmVjdG9yKQogICAg
ewogICAgICAgIGlmIChzaXplX3Qgc2l6ZSA9IHZlY3Rvci5zaXplKCkpIHsKICAgICAgICAgICAg
KCh2b2lkKTApOwogICAgICAgICAgICBpZiAoc2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSkKICAgICAgICAgICAgICAgIFdURkNyYXNoKCk7CiAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwodmVjdG9yLnJlbGVhc2VCdWZmZXIoKSwgc2l6
ZSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gKmVtcHR5KCk7CiAgICB9CgogICAgc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8VUNoYXI+Jik7CiAgICBzdGF0aWMg
UmVmPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlcjxMQ2hhcj4mKTsKCiAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgc3RhdGljIHB0cmRpZmZf
dCBsZW5ndGhNZW1vcnlPZmZzZXQoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZm
X3Q+KCYocmVpbnRlcnByZXRfY2FzdDxTdHJpbmdJbXBsKj4oMHg0MDAwKS0+bV9sZW5ndGgpKSAt
IDB4NDAwMCk7IH0KICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxh
Z3MgJiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXykpIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0IHsgKCh2
b2lkKTApOyByZXR1cm4gbV9kYXRhODsgfQogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigpIGNvbnN0IHsgKCh2b2lk
KTApOyByZXR1cm4gbV9kYXRhMTY7IH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+
CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBjb25zdCBDaGFy
VHlwZSAqY2hhcmFjdGVycygpIGNvbnN0OwoKICAgIHNpemVfdCBjb3N0KCkgY29uc3QKICAgIHsK
CiAgICAgICAgaWYgKGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZykKICAgICAg
ICAgICAgcmV0dXJuIHN1YnN0cmluZ0J1ZmZlcigpLT5jb3N0KCk7CgogICAgICAgIGlmIChtX2hh
c2hBbmRGbGFncyAmIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0KQogICAgICAgICAgICByZXR1cm4g
MDsKCiAgICAgICAgbV9oYXNoQW5kRmxhZ3MgfD0gc19oYXNoRmxhZ0RpZFJlcG9ydENvc3Q7CiAg
ICAgICAgc2l6ZV90IHJlc3VsdCA9IG1fbGVuZ3RoOwogICAgICAgIGlmICghaXM4Qml0KCkpCiAg
ICAgICAgICAgIHJlc3VsdCA8PD0gMTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKICAg
IHNpemVfdCBjb3N0RHVyaW5nR0MoKQogICAgewogICAgICAgIGlmIChpc1N0YXRpYygpKQogICAg
ICAgICAgICByZXR1cm4gMDsKCiAgICAgICAgaWYgKGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZl
clN1YnN0cmluZykKICAgICAgICAgICAgcmV0dXJuIGRpdmlkZVJvdW5kZWRVcChzdWJzdHJpbmdC
dWZmZXIoKS0+Y29zdER1cmluZ0dDKCksIHJlZkNvdW50KCkpOwoKICAgICAgICBzaXplX3QgcmVz
dWx0ID0gbV9sZW5ndGg7CiAgICAgICAgaWYgKCFpczhCaXQoKSkKICAgICAgICAgICAgcmVzdWx0
IDw8PSAxOwogICAgICAgIHJldHVybiBkaXZpZGVSb3VuZGVkVXAocmVzdWx0LCByZWZDb3VudCgp
KTsKICAgIH0KCiAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdDsKCiAgICBTdHJpbmdLaW5k
IHN0cmluZ0tpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdHJpbmdLaW5kPihtX2hh
c2hBbmRGbGFncyAmIHNfaGFzaE1hc2tTdHJpbmdLaW5kKTsgfQogICAgYm9vbCBpc1N5bWJvbCgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5
bWJvbDsgfQogICAgYm9vbCBpc0F0b21pYygpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdz
ICYgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYzsgfQogICAgYm9vbCBpc051bGxTeW1ib2wo
KSBjb25zdCB7IHJldHVybiBpc1N5bWJvbCgpICYmIChzdWJzdHJpbmdCdWZmZXIoKSA9PSBudWxs
KCkpOyB9CgogICAgdm9pZCBzZXRJc0F0b21pYyhib29sIGlzQXRvbWljKQogICAgewogICAgICAg
ICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgaWYgKGlzQXRvbWljKSB7CiAg
ICAgICAgICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7
CiAgICAgICAgICAgICgodm9pZCkwKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBtX2hh
c2hBbmRGbGFncyAmPSB+c19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYzsKICAgICAgICAgICAg
KCh2b2lkKTApOwogICAgICAgIH0KICAgIH0KCgoKCgogICAgc3RhdGljIENTdHJpbmcgdXRmOEZv
ckNoYXJhY3RlcnMoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAg
ICBzdGF0aWMgQ1N0cmluZyB1dGY4Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoLCBDb252ZXJzaW9uTW9kZSA9IExlbmllbnRDb252ZXJzaW9uKTsK
ICAgIENTdHJpbmcgdXRmOEZvclJhbmdlKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
LCBDb252ZXJzaW9uTW9kZSA9IExlbmllbnRDb252ZXJzaW9uKSBjb25zdDsKICAgIENTdHJpbmcg
dXRmOChDb252ZXJzaW9uTW9kZSA9IExlbmllbnRDb252ZXJzaW9uKSBjb25zdDsKCnByaXZhdGU6
CiAgICBzdGF0aWMgYm9vbCB1dGY4SW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoLCBjaGFyKiYgYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgQ29udmVyc2lvbk1v
ZGUpOwoKCgoKICAgIHZvaWQgc2V0SGFzaCh1bnNpZ25lZCBoYXNoKSBjb25zdAogICAgewogICAg
ICAgICgodm9pZCkwKTsKCiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAg
ICAgICAgaGFzaCA8PD0gc19mbGFnQ291bnQ7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgo
dm9pZCkwKTsKCiAgICAgICAgbV9oYXNoQW5kRmxhZ3MgfD0gaGFzaDsKICAgIH0KCiAgICB1bnNp
Z25lZCByYXdIYXNoKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9oYXNoQW5kRmxhZ3Mg
Pj4gc19mbGFnQ291bnQ7CiAgICB9CgpwdWJsaWM6CiAgICBib29sIGhhc0hhc2goKSBjb25zdAog
ICAgewogICAgICAgIHJldHVybiByYXdIYXNoKCkgIT0gMDsKICAgIH0KCiAgICB1bnNpZ25lZCBl
eGlzdGluZ0hhc2goKSBjb25zdAogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1
cm4gcmF3SGFzaCgpOwogICAgfQoKICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgewogICAg
ICAgIGlmIChoYXNIYXNoKCkpCiAgICAgICAgICAgIHJldHVybiBleGlzdGluZ0hhc2goKTsKICAg
ICAgICByZXR1cm4gaGFzaFNsb3dDYXNlKCk7CiAgICB9CgogICAgdW5zaWduZWQgc3ltYm9sQXdh
cmVIYXNoKCkgY29uc3QKICAgIHsKICAgICAgICBpZiAoaXNTeW1ib2woKSkKICAgICAgICAgICAg
cmV0dXJuIGhhc2hGb3JTeW1ib2woKTsKICAgICAgICByZXR1cm4gaGFzaCgpOwogICAgfQoKICAg
IHVuc2lnbmVkIGV4aXN0aW5nU3ltYm9sQXdhcmVIYXNoKCkgY29uc3QKICAgIHsKICAgICAgICBp
ZiAoaXNTeW1ib2woKSkKICAgICAgICAgICAgcmV0dXJuIGhhc2hGb3JTeW1ib2woKTsKICAgICAg
ICByZXR1cm4gZXhpc3RpbmdIYXNoKCk7CiAgICB9CgogICAgYm9vbCBpc1N0YXRpYygpIGNvbnN0
IHsgcmV0dXJuIG1fcmVmQ291bnQgJiBzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nOyB9Cgog
ICAgaW5saW5lIHNpemVfdCByZWZDb3VudCgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1f
cmVmQ291bnQgLyBzX3JlZkNvdW50SW5jcmVtZW50OwogICAgfQoKICAgIGlubGluZSBib29sIGhh
c09uZVJlZigpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQgPT0gc19yZWZD
b3VudEluY3JlbWVudDsKICAgIH0KCgogICAgaW5saW5lIGJvb2wgaGFzQXRMZWFzdE9uZVJlZigp
IGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuICEhbV9yZWZDb3VudDsKICAgIH0KCiAgICBpbmxp
bmUgdm9pZCByZWYoKQogICAgewogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgbV9yZWZDb3Vu
dCArPSBzX3JlZkNvdW50SW5jcmVtZW50OwogICAgfQoKICAgIGlubGluZSB2b2lkIGRlcmVmKCkK
ICAgIHsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgIHVuc2lnbmVkIHRlbXBSZWZDb3VudCA9
IG1fcmVmQ291bnQgLSBzX3JlZkNvdW50SW5jcmVtZW50OwogICAgICAgIGlmICghdGVtcFJlZkNv
dW50KSB7CiAgICAgICAgICAgIFN0cmluZ0ltcGw6OmRlc3Ryb3kodGhpcyk7CiAgICAgICAgICAg
IHJldHVybjsKICAgICAgICB9CiAgICAgICAgbV9yZWZDb3VudCA9IHRlbXBSZWZDb3VudDsKICAg
IH0KCiAgICBzdGF0aWMgU3RyaW5nSW1wbCogZW1wdHkoKTsKCgogICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHN0YXRpYyB2b2lkIGNvcHlDaGFycyhUKiBkZXN0aW5hdGlvbiwgY29uc3QgVCogc291
cmNlLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKQogICAgewogICAgICAgIGlmIChudW1DaGFyYWN0
ZXJzID09IDEpIHsKICAgICAgICAgICAgKmRlc3RpbmF0aW9uID0gKnNvdXJjZTsKICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bUNoYXJhY3RlcnMgPD0gc19jb3B5
Q2hhcnNJbmxpbmVDdXRPZmYpIHsKICAgICAgICAgICAgdW5zaWduZWQgaSA9IDA7CiMgNjMwICIu
Li8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCIKICAgICAgICAgICAgZm9yICg7
IGkgPCBudW1DaGFyYWN0ZXJzOyArK2kpCiAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9
IHNvdXJjZVtpXTsKICAgICAgICB9IGVsc2UKICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9u
LCBzb3VyY2UsIG51bUNoYXJhY3RlcnMgKiBzaXplb2YoVCkpOwogICAgfQoKICAgIGlubGluZSBf
X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB2b2lkIGNvcHlDaGFycyhV
Q2hhciogZGVzdGluYXRpb24sIGNvbnN0IExDaGFyKiBzb3VyY2UsIHVuc2lnbmVkIG51bUNoYXJh
Y3RlcnMpCiAgICB7CiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUNoYXJhY3Rl
cnM7ICsraSkKICAgICAgICAgICAgZGVzdGluYXRpb25baV0gPSBzb3VyY2VbaV07CiAgICB9CgoK
CgogICAgUmVmPFN0cmluZ0ltcGw+IGlzb2xhdGVkQ29weSgpIGNvbnN0OwoKICAgIFJlZjxTdHJp
bmdJbXBsPiBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSAoMjE0NzQ4MzY0
NyAqIDJVICsgMVUpKTsKCiAgICBVQ2hhciBhdCh1bnNpZ25lZCBpKSBjb25zdAogICAgewogICAg
ICAgICgodm9pZCkwKTsKICAgICAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgICAgIHJldHVybiBt
X2RhdGE4W2ldOwogICAgICAgIHJldHVybiBtX2RhdGExNltpXTsKICAgIH0KICAgIFVDaGFyIG9w
ZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgIFVDaGFyMzIg
Y2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCk7CgogICAgYm9vbCBjb250YWluc09ubHlXaGl0
ZXNwYWNlKCk7CgogICAgaW50IHRvSW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAx
MCk7CiAgICB1bnNpZ25lZCB0b1VJbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEw
KTsKICAgIGludDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTAp
OwogICAgdWludDY0X3QgdG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEw
KTsKICAgIGludHB0cl90IHRvSW50UHRyU3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAx
MCk7CgogICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCk7CiAgICB1bnNpZ25lZCB0b1VJbnQoYm9v
bCogb2sgPSAwKTsKICAgIGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9IDApOwogICAgdWludDY0
X3QgdG9VSW50NjQoYm9vbCogb2sgPSAwKTsKICAgIGludHB0cl90IHRvSW50UHRyKGJvb2wqIG9r
ID0gMCk7CgoKCgogICAgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gMCk7CiAgICBmbG9hdCB0
b0Zsb2F0KGJvb2wqIG9rID0gMCk7CgogICAgUmVmPFN0cmluZ0ltcGw+IGNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCk7CiAgICBSZWY8U3RyaW5nSW1wbD4gY29udmVydFRvQVNDSUlVcHBlcmNhc2Uo
KTsKICAgIFJlZjxTdHJpbmdJbXBsPiBjb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlKCk7
CiAgICBSZWY8U3RyaW5nSW1wbD4gY29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgpOwog
ICAgUmVmPFN0cmluZ0ltcGw+IGNvbnZlcnRUb0xvd2VyY2FzZVdpdGhMb2NhbGUoY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKTsKICAgIFJlZjxTdHJpbmdJbXBsPiBjb252ZXJ0
VG9VcHBlcmNhc2VXaXRoTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmll
cik7CgogICAgUmVmPFN0cmluZ0ltcGw+IGZvbGRDYXNlKCk7CgogICAgUmVmPFN0cmluZ0ltcGw+
IHN0cmlwV2hpdGVTcGFjZSgpOwogICAgUmVmPFN0cmluZ0ltcGw+IHN0cmlwV2hpdGVTcGFjZShJ
c1doaXRlU3BhY2VGdW5jdGlvblB0cik7CiAgICBSZWY8U3RyaW5nSW1wbD4gc2ltcGxpZnlXaGl0
ZVNwYWNlKCk7CiAgICBSZWY8U3RyaW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNwYWNlKElzV2hpdGVT
cGFjZUZ1bmN0aW9uUHRyKTsKCiAgICBSZWY8U3RyaW5nSW1wbD4gcmVtb3ZlQ2hhcmFjdGVycyhD
aGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlw
ZT4KICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIFJlZjxTdHJp
bmdJbXBsPiByZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCBDaGFy
YWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKCiAgICBzaXplX3QgZmluZChMQ2hhciBjaGFyYWN0ZXIs
IHVuc2lnbmVkIHN0YXJ0ID0gMCk7CiAgICBzaXplX3QgZmluZChjaGFyIGNoYXJhY3RlciwgdW5z
aWduZWQgc3RhcnQgPSAwKTsKICAgIHNpemVfdCBmaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWdu
ZWQgc3RhcnQgPSAwKTsKICAgIHNpemVfdCBmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIs
IHVuc2lnbmVkIGluZGV4ID0gMCk7CiAgICBzaXplX3QgZmluZChjb25zdCBMQ2hhciosIHVuc2ln
bmVkIGluZGV4ID0gMCk7CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBzaXplX3QgZmluZChjb25zdCBjaGFyKiBzLCB1bnNpZ25lZCBpbmRleCA9IDApIHsgcmV0
dXJuIGZpbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBpbmRleCk7IH0KICAg
IHNpemVfdCBmaW5kKFN0cmluZ0ltcGwqKTsKICAgIHNpemVfdCBmaW5kKFN0cmluZ0ltcGwqLCB1
bnNpZ25lZCBpbmRleCk7CiAgICBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShjb25zdCBMQ2hhcios
IHVuc2lnbmVkIGluZGV4ID0gMCk7CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18pKSBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShjb25zdCBjaGFyKiBzLCB1bnNpZ25l
ZCBpbmRleCA9IDApIHsgcmV0dXJuIGZpbmRJZ25vcmluZ0Nhc2UocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KHMpLCBpbmRleCk7IH0KICAgIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKFN0
cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IDApOwogICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7CiAgICBzaXplX3QgZmluZElnbm9yaW5n
QVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3Q7
CiAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqKSBjb25z
dDsKICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCosIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKCiAgICBzaXplX3QgZmluZE5leHRMaW5lU3RhcnQo
dW5zaWduZWQgaW5kZXggPSAoMjE0NzQ4MzY0NyAqIDJVICsgMVUpKTsKCiAgICBzaXplX3QgcmV2
ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gKDIxNDc0ODM2NDcgKiAyVSArIDFVKSk7
CiAgICBzaXplX3QgcmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gKDIx
NDc0ODM2NDcgKiAyVSArIDFVKSk7CiAgICBzaXplX3QgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2Uo
U3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gKDIxNDc0ODM2NDcgKiAyVSArIDFVKSk7Cgog
ICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKICAgIGJvb2wgc3Rh
cnRzV2l0aChjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7CiAgICBib29sIHN0YXJ0c1dpdGhJZ25v
cmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7CiAgICBib29sIHN0YXJ0c1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7CiAgICBib29sIHN0
YXJ0c1dpdGgoU3RyaW5nSW1wbCogc3RyLCBib29sIGNhc2VTZW5zaXRpdmUpIHsgcmV0dXJuIGNh
c2VTZW5zaXRpdmUgPyBzdGFydHNXaXRoKHN0cikgOiAocmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2Uo
c3RyLCAwKSA9PSAwKTsgfQogICAgYm9vbCBzdGFydHNXaXRoKFVDaGFyKSBjb25zdDsKICAgIGJv
b2wgc3RhcnRzV2l0aChjb25zdCBjaGFyKiwgdW5zaWduZWQgbWF0Y2hMZW5ndGgsIGJvb2wgY2Fz
ZVNlbnNpdGl2ZSkgY29uc3Q7CiAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4KICAg
IGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0sIGJvb2wg
Y2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0c1dpdGgocHJlZml4LCBt
YXRjaExlbmd0aCAtIDEsIGNhc2VTZW5zaXRpdmUpOyB9CiAgICBib29sIGhhc0luZml4U3RhcnRp
bmdBdChjb25zdCBTdHJpbmdJbXBsJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OwoKICAg
IGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCopOwogICAgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBs
Jik7CiAgICBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCop
IGNvbnN0OwogICAgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0lt
cGwmKSBjb25zdDsKICAgIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCosIGJvb2wgY2FzZVNlbnNp
dGl2ZSk7CiAgICBib29sIGVuZHNXaXRoKFVDaGFyKSBjb25zdDsKICAgIGJvb2wgZW5kc1dpdGgo
Y29uc3QgY2hhciosIHVuc2lnbmVkIG1hdGNoTGVuZ3RoLCBib29sIGNhc2VTZW5zaXRpdmUpIGNv
bnN0OwogICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+CiAgICBib29sIGVuZHNXaXRo
KGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0g
dHJ1ZSkgY29uc3QgeyByZXR1cm4gZW5kc1dpdGgocHJlZml4LCBtYXRjaExlbmd0aCAtIDEsIGNh
c2VTZW5zaXRpdmUpOyB9CiAgICBib29sIGhhc0luZml4RW5kaW5nQXQoY29uc3QgU3RyaW5nSW1w
bCYsIHVuc2lnbmVkIGVuZE9mZnNldCkgY29uc3Q7CgogICAgUmVmPFN0cmluZ0ltcGw+IHJlcGxh
Y2UoVUNoYXIsIFVDaGFyKTsKICAgIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBTdHJp
bmdJbXBsKik7CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBS
ZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBjaGFyKiByZXBsYWNl
bWVudCwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpIHsgcmV0dXJuIHJlcGxhY2UocGF0dGVy
biwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHJlcGxhY2VtZW50KSwgcmVwbGFjZW1l
bnRMZW5ndGgpOyB9CiAgICBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgY29uc3QgTENo
YXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7CiAgICBSZWY8U3RyaW5nSW1wbD4gcmVw
bGFjZShVQ2hhciwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7CiAg
ICBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwogICAg
UmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwgU3Ry
aW5nSW1wbCopOwoKICAgIFVDaGFyRGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJv
b2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gbnVsbHB0cik7CiMgNzYyICIuLi8uLi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCIKICAgIFJlZjxTdHJpbmdJbXBsPiBleHRyYWN0
Rm9sZGVkU3RyaW5nSW5TeW1ib2woKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAo
KHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICBy
ZXR1cm4gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwodGhpcywgMCwgbGVuZ3RoKCkpOwogICAg
fQoKICAgIFN5bWJvbFJlZ2lzdHJ5KiBjb25zdCYgc3ltYm9sUmVnaXN0cnkoKSBjb25zdAogICAg
ewogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gKih0YWlsUG9pbnRlcjxTeW1ib2xS
ZWdpc3RyeSo+KCkgKyAxKTsKICAgIH0KCiAgICBTeW1ib2xSZWdpc3RyeSomIHN5bWJvbFJlZ2lz
dHJ5KCkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuICoodGFpbFBvaW50
ZXI8U3ltYm9sUmVnaXN0cnkqPigpICsgMSk7CiAgICB9CgogICAgY29uc3QgdW5zaWduZWQmIGhh
c2hGb3JTeW1ib2woKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBjb25zdF9jYXN0PFN0cmlu
Z0ltcGwqPih0aGlzKS0+aGFzaEZvclN5bWJvbCgpOwogICAgfQoKICAgIHVuc2lnbmVkJiBoYXNo
Rm9yU3ltYm9sKCkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PHVuc2lnbmVkKj4oKHRhaWxQb2ludGVyPFN5bWJvbFJlZ2lzdHJ5Kj4oKSAr
IDIpKTsKICAgIH0KCnByb3RlY3RlZDoKICAgIH5TdHJpbmdJbXBsKCk7Cgpwcml2YXRlOgogICAg
Ym9vbCByZXF1aXJlc0NvcHkoKSBjb25zdAogICAgewogICAgICAgIGlmIChidWZmZXJPd25lcnNo
aXAoKSAhPSBCdWZmZXJJbnRlcm5hbCkKICAgICAgICAgICAgcmV0dXJuIHRydWU7CgogICAgICAg
IGlmIChpczhCaXQoKSkKICAgICAgICAgICAgcmV0dXJuIG1fZGF0YTggPT0gdGFpbFBvaW50ZXI8
TENoYXI+KCk7CiAgICAgICAgcmV0dXJuIG1fZGF0YTE2ID09IHRhaWxQb2ludGVyPFVDaGFyPigp
OwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICBzdGF0aWMgc2l6ZV90IGFsbG9j
YXRpb25TaXplKHVuc2lnbmVkIHRhaWxFbGVtZW50Q291bnQpCiAgICB7CiAgICAgICAgcmV0dXJu
IHRhaWxPZmZzZXQ8VD4oKSArIHRhaWxFbGVtZW50Q291bnQgKiBzaXplb2YoVCk7CiAgICB9Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgIHN0YXRpYyBwdHJkaWZmX3QgdGFpbE9mZnNldCgp
CiAgICB7CgoKCgogICAgICAgIHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdub2YoVCk+
KF9fYnVpbHRpbl9vZmZzZXRvZiAoU3RyaW5nSW1wbCwgbV9oYXNoQW5kRmxhZ3MpICsgc2l6ZW9m
KFN0cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzKSk7CgogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CiAgICBjb25zdCBUKiB0YWlsUG9pbnRlcigpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IFQqPihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPih0aGlzKSArIHRhaWxPZmZzZXQ8VD4oKSk7CiAgICB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KICAgIFQqIHRhaWxQb2ludGVyKCkKICAgIHsKICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdF9wdHI8VCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRoaXMpICsg
dGFpbE9mZnNldDxUPigpKTsKICAgIH0KCiAgICBTdHJpbmdJbXBsKiBjb25zdCYgc3Vic3RyaW5n
QnVmZmVyKCkgY29uc3QKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgIHJldHVybiAq
dGFpbFBvaW50ZXI8U3RyaW5nSW1wbCo+KCk7CiAgICB9CgogICAgU3RyaW5nSW1wbComIHN1YnN0
cmluZ0J1ZmZlcigpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICByZXR1cm4gKnRh
aWxQb2ludGVyPFN0cmluZ0ltcGwqPigpOwogICAgfQoKCiAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgc19jb3B5Q2hhcnNJbmxpbmVDdXRPZmYgPSAyMDsKCiAgICBlbnVtIGNsYXNzIENhc2VDb252
ZXJ0VHlwZSB7IFVwcGVyLCBMb3dlciB9OwogICAgdGVtcGxhdGU8Q2FzZUNvbnZlcnRUeXBlIHR5
cGUsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY29udmVy
dEFTQ0lJQ2FzZShTdHJpbmdJbXBsJiwgY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVuc2lnbmVkKTsK
CiAgICBCdWZmZXJPd25lcnNoaXAgYnVmZmVyT3duZXJzaGlwKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8QnVmZmVyT3duZXJzaGlwPihtX2hhc2hBbmRGbGFncyAmIHNfaGFzaE1hc2tCdWZm
ZXJPd25lcnNoaXApOyB9CiAgICB0ZW1wbGF0ZSA8Y2xhc3MgVUNoYXJQcmVkaWNhdGU+IFJlZjxT
dHJpbmdJbXBsPiBzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFVDaGFyUHJlZGljYXRlKTsKICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZSwgY2xhc3MgVUNoYXJQcmVkaWNhdGU+IFJlZjxTdHJp
bmdJbXBsPiBzaW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZShVQ2hhclByZWRpY2F0ZSk7
CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4g
Y29uc3RydWN0SW50ZXJuYWwoU3RyaW5nSW1wbCosIHVuc2lnbmVkKTsKICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxp
emVkSW50ZXJuYWwodW5zaWduZWQsIENoYXJUeXBlKiYpOwogICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENoYXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRl
cm5hbE5vbkVtcHR5KHVuc2lnbmVkLCBDaGFyVHlwZSomKTsKICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiByZWFsbG9jYXRlSW50ZXJuYWwoUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiwgdW5zaWduZWQsIENoYXJUeXBlKiYpOwogICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUludGVybmFs
KGNvbnN0IENoYXJUeXBlKiwgdW5zaWduZWQpOwogICAgX19hdHRyaWJ1dGVfXygoX19ub2lubGlu
ZV9fKSkgdW5zaWduZWQgaGFzaFNsb3dDYXNlKCkgY29uc3Q7CiAgICBzdGF0aWMgdW5zaWduZWQg
bmV4dEhhc2hGb3JTeW1ib2woKTsKICAgIHN0YXRpYyBTdHJpbmdJbXBsKiBudWxsKCk7CgoKICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nID0gMHgx
OwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVmQ291bnRJbmNyZW1lbnQgPSAweDI7CgoK
CgoKcHVibGljOgogICAgc3RydWN0IFN0YXRpY0FTQ0lJTGl0ZXJhbCB7CgogICAgICAgIHVuc2ln
bmVkIG1fcmVmQ291bnQ7CiAgICAgICAgdW5zaWduZWQgbV9sZW5ndGg7CiAgICAgICAgY29uc3Qg
TENoYXIqIG1fZGF0YTg7CiAgICAgICAgdW5zaWduZWQgbV9oYXNoQW5kRmxhZ3M7CgoKICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19pbml0aWFsUmVmQ291bnQgPSBzX3JlZkNvdW50SW5j
cmVtZW50OwogICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2luaXRpYWxGbGFncyA9IHNf
aGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWw7CiAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaGFzaFNoaWZ0ID0gc19mbGFnQ291bnQ7CiAgICB9
OwojIDg5OSAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgiCnByaXZhdGU6
CgogICAgdW5zaWduZWQgbV9yZWZDb3VudDsKICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwogICAgdW5p
b24gewogICAgICAgIGNvbnN0IExDaGFyKiBtX2RhdGE4OwogICAgICAgIGNvbnN0IFVDaGFyKiBt
X2RhdGExNjsKICAgIH07CiAgICBtdXRhYmxlIHVuc2lnbmVkIG1faGFzaEFuZEZsYWdzOwp9OwoK
c3RhdGljX2Fzc2VydChzaXplb2YoU3RyaW5nSW1wbCkgPT0gc2l6ZW9mKFN0cmluZ0ltcGw6OlN0
YXRpY0FTQ0lJTGl0ZXJhbCksICIiKTsKIyA5MjQgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nSW1wbC5oIgp0ZW1wbGF0ZSA8PgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18pKSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29uc3RydWN0SW50ZXJuYWw8
TENoYXI+KFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyAoTm90TnVsbCwgaW1wbCkgU3RyaW5nSW1wbChsZW5ndGgsIEZvcmNlOEJpdENvbnN0
cnVjdG9yKSk7IH0KdGVtcGxhdGUgPD4KaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fKSkgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnN0cnVjdEludGVybmFsPFVD
aGFyPihTdHJpbmdJbXBsKiBpbXBsLCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgKE5vdE51bGwsIGltcGwpIFN0cmluZ0ltcGwobGVuZ3RoKSk7IH0KCnRlbXBsYXRlIDw+
CmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGNvbnN0IExDaGFyKiBT
dHJpbmdJbXBsOjpjaGFyYWN0ZXJzPExDaGFyPigpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnM4
KCk7IH0KCnRlbXBsYXRlIDw+CmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XykpIGNvbnN0IFVDaGFyKiBTdHJpbmdJbXBsOjpjaGFyYWN0ZXJzPFVDaGFyPigpIGNvbnN0IHsg
cmV0dXJuIGNoYXJhY3RlcnMxNigpOyB9CgogYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwg
Y29uc3QgU3RyaW5nSW1wbCopOwogYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3Qg
TENoYXIqKTsKaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgY2hh
ciogYikgeyByZXR1cm4gZXF1YWwoYSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIp
KTsgfQogYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgTENoYXIqLCB1bnNpZ25l
ZCk7CiBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBVQ2hhciosIHVuc2lnbmVk
KTsKaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgY2hhciogYiwg
dW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBlcXVhbChhLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oYiksIGxlbmd0aCk7IH0KaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgTENoYXIqIGEs
IFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJuIGVxdWFsKGIsIGEpOyB9CmlubGluZSBib29sIGVxdWFs
KGNvbnN0IGNoYXIqIGEsIFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJuIGVxdWFsKGIsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhKSk7IH0KIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1w
bCYgYSwgY29uc3QgU3RyaW5nSW1wbCYgYik7CgogYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShT
dHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwogYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShjb25z
dCBVQ2hhciosIHNpemVfdCBsZW5ndGgsIFN0cmluZ0ltcGwqKTsKCmJvb2wgZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJiwgY29uc3QgU3RyaW5nSW1wbCYpOwogYm9vbCBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBs
Kik7CiBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYsIGNvbnN0
IGNoYXIqKTsKIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiwg
Y29uc3QgY2hhciopOwoKIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZU5vbk51bGwoY29uc3Qg
U3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKCnRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0
aD4gYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJiwg
Y29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pOwp0ZW1wbGF0ZTx1bnNpZ25l
ZCBsZW5ndGg+IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5n
SW1wbCosIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsKCmlubGluZSBz
aXplX3QgZmluZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDaGFy
YWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIG1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIGluZGV4ID0gMCkK
ewogICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7CiAgICAgICAgaWYgKG1hdGNoRnVuY3Rpb24o
Y2hhcmFjdGVyc1tpbmRleF0pKQogICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgICAgKytp
bmRleDsKICAgIH0KICAgIHJldHVybiBub3RGb3VuZDsKfQoKaW5saW5lIHNpemVfdCBmaW5kKGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3Rlck1hdGNoRnVu
Y3Rpb25QdHIgbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgaW5kZXggPSAwKQp7CiAgICB3aGlsZSAo
aW5kZXggPCBsZW5ndGgpIHsKICAgICAgICBpZiAobWF0Y2hGdW5jdGlvbihjaGFyYWN0ZXJzW2lu
ZGV4XSkpCiAgICAgICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICArK2luZGV4OwogICAgfQog
ICAgcmV0dXJuIG5vdEZvdW5kOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgpp
bmxpbmUgc2l6ZV90IGZpbmROZXh0TGluZVN0YXJ0KGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgaW5kZXggPSAwKQp7CiAgICB3aGlsZSAo
aW5kZXggPCBsZW5ndGgpIHsKICAgICAgICBDaGFyYWN0ZXJUeXBlIGMgPSBjaGFyYWN0ZXJzW2lu
ZGV4KytdOwogICAgICAgIGlmICgoYyAhPSAnXG4nKSAmJiAoYyAhPSAnXHInKSkKICAgICAgICAg
ICAgY29udGludWU7CgoKCiAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoKSB7CgoKCiAgICAgICAg
ICAgIGlmIChjID09ICdcbicpCiAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CgogICAgICAg
ICAgICBDaGFyYWN0ZXJUeXBlIGMyID0gY2hhcmFjdGVyc1tpbmRleF07CiAgICAgICAgICAgIGlm
IChjMiAhPSAnXG4nKQogICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OwoKCgoKICAgICAgICAg
ICAgaWYgKCsraW5kZXggPCBsZW5ndGgpCiAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAg
ICAgICAgfQogICAgfQogICAgcmV0dXJuIG5vdEZvdW5kOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgppbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kTGluZVRlcm1pbmF0b3IoY29u
c3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBp
bmRleCA9ICgyMTQ3NDgzNjQ3ICogMlUgKyAxVSkpCnsKICAgIGlmICghbGVuZ3RoKQogICAgICAg
IHJldHVybiBub3RGb3VuZDsKICAgIGlmIChpbmRleCA+PSBsZW5ndGgpCiAgICAgICAgaW5kZXgg
PSBsZW5ndGggLSAxOwogICAgQ2hhcmFjdGVyVHlwZSBjID0gY2hhcmFjdGVyc1tpbmRleF07CiAg
ICB3aGlsZSAoKGMgIT0gJ1xuJykgJiYgKGMgIT0gJ1xyJykpIHsKICAgICAgICBpZiAoIWluZGV4
LS0pCiAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsKICAgICAgICBjID0gY2hhcmFjdGVyc1tp
bmRleF07CiAgICB9CiAgICByZXR1cm4gaW5kZXg7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+CmlubGluZSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgQ2hhcmFjdGVyVHlwZSog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJUeXBlIG1hdGNoQ2hhcmFjdGVy
LCB1bnNpZ25lZCBpbmRleCA9ICgyMTQ3NDgzNjQ3ICogMlUgKyAxVSkpCnsKICAgIGlmICghbGVu
Z3RoKQogICAgICAgIHJldHVybiBub3RGb3VuZDsKICAgIGlmIChpbmRleCA+PSBsZW5ndGgpCiAg
ICAgICAgaW5kZXggPSBsZW5ndGggLSAxOwogICAgd2hpbGUgKGNoYXJhY3RlcnNbaW5kZXhdICE9
IG1hdGNoQ2hhcmFjdGVyKSB7CiAgICAgICAgaWYgKCFpbmRleC0tKQogICAgICAgICAgICByZXR1
cm4gbm90Rm91bmQ7CiAgICB9CiAgICByZXR1cm4gaW5kZXg7Cn0KCmlubGluZSBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBMQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWdu
ZWQgaW5kZXggPSAoMjE0NzQ4MzY0NyAqIDJVICsgMVUpKQp7CiAgICByZXR1cm4gcmV2ZXJzZUZp
bmQoY2hhcmFjdGVycywgbGVuZ3RoLCBzdGF0aWNfY2FzdDxVQ2hhcj4obWF0Y2hDaGFyYWN0ZXIp
LCBpbmRleCk7Cn0KCmlubGluZSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgTENoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGlu
ZGV4ID0gKDIxNDc0ODM2NDcgKiAyVSArIDFVKSkKewogICAgaWYgKG1hdGNoQ2hhcmFjdGVyICYg
fjB4RkYpCiAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogICAgcmV0dXJuIHJldmVyc2VGaW5kKGNo
YXJhY3RlcnMsIGxlbmd0aCwgc3RhdGljX2Nhc3Q8TENoYXI+KG1hdGNoQ2hhcmFjdGVyKSwgaW5k
ZXgpOwp9CgppbmxpbmUgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoTENoYXIgY2hhcmFjdGVyLCB1
bnNpZ25lZCBzdGFydCkKewogICAgaWYgKGlzOEJpdCgpKQogICAgICAgIHJldHVybiBXVEY6OmZp
bmQoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIGNoYXJhY3Rlciwgc3RhcnQpOwogICAgcmV0dXJu
IFdURjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIGNoYXJhY3Rlciwgc3RhcnQpOwp9
CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzaXplX3QgU3RyaW5n
SW1wbDo6ZmluZChjaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQpCnsKICAgIHJldHVybiBm
aW5kKHN0YXRpY19jYXN0PExDaGFyPihjaGFyYWN0ZXIpLCBzdGFydCk7Cn0KCmlubGluZSBzaXpl
X3QgU3RyaW5nSW1wbDo6ZmluZChVQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0KQp7CiAg
ICBpZiAoaXM4Qml0KCkpCiAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzOCgpLCBt
X2xlbmd0aCwgY2hhcmFjdGVyLCBzdGFydCk7CiAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3Rl
cnMxNigpLCBtX2xlbmd0aCwgY2hhcmFjdGVyLCBzdGFydCk7Cn0KCnRlbXBsYXRlPHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoY29uc3QgVmVj
dG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGEsIFN0cmluZ0ltcGwqIGIpCnsKICAgIHJldHVy
biBlcXVhbElnbm9yaW5nTnVsbGl0eShhLmRhdGEoKSwgYS5zaXplKCksIGIpOwp9Cgp0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlMSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTI+CmlubGlu
ZSBpbnQgY29kZVBvaW50Q29tcGFyZSh1bnNpZ25lZCBsMSwgdW5zaWduZWQgbDIsIGNvbnN0IENo
YXJhY3RlclR5cGUxKiBjMSwgY29uc3QgQ2hhcmFjdGVyVHlwZTIqIGMyKQp7CiAgICBjb25zdCB1
bnNpZ25lZCBsbWluID0gbDEgPCBsMiA/IGwxIDogbDI7CiAgICB1bnNpZ25lZCBwb3MgPSAwOwog
ICAgd2hpbGUgKHBvcyA8IGxtaW4gJiYgKmMxID09ICpjMikgewogICAgICAgICsrYzE7CiAgICAg
ICAgKytjMjsKICAgICAgICArK3BvczsKICAgIH0KCiAgICBpZiAocG9zIDwgbG1pbikKICAgICAg
ICByZXR1cm4gKGMxWzBdID4gYzJbMF0pID8gMSA6IC0xOwoKICAgIGlmIChsMSA9PSBsMikKICAg
ICAgICByZXR1cm4gMDsKCiAgICByZXR1cm4gKGwxID4gbDIpID8gMSA6IC0xOwp9CgppbmxpbmUg
aW50IGNvZGVQb2ludENvbXBhcmU4KGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZzEsIGNvbnN0IFN0
cmluZ0ltcGwqIHN0cmluZzIpCnsKICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHN0cmluZzEt
Pmxlbmd0aCgpLCBzdHJpbmcyLT5sZW5ndGgoKSwgc3RyaW5nMS0+Y2hhcmFjdGVyczgoKSwgc3Ry
aW5nMi0+Y2hhcmFjdGVyczgoKSk7Cn0KCmlubGluZSBpbnQgY29kZVBvaW50Q29tcGFyZTE2KGNv
bnN0IFN0cmluZ0ltcGwqIHN0cmluZzEsIGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZzIpCnsKICAg
IHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHN0cmluZzEtPmxlbmd0aCgpLCBzdHJpbmcyLT5sZW5n
dGgoKSwgc3RyaW5nMS0+Y2hhcmFjdGVyczE2KCksIHN0cmluZzItPmNoYXJhY3RlcnMxNigpKTsK
fQoKaW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJlOFRvMTYoY29uc3QgU3RyaW5nSW1wbCogc3Ry
aW5nMSwgY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nMikKewogICAgcmV0dXJuIGNvZGVQb2ludENv
bXBhcmUoc3RyaW5nMS0+bGVuZ3RoKCksIHN0cmluZzItPmxlbmd0aCgpLCBzdHJpbmcxLT5jaGFy
YWN0ZXJzOCgpLCBzdHJpbmcyLT5jaGFyYWN0ZXJzMTYoKSk7Cn0KCmlubGluZSBpbnQgY29kZVBv
aW50Q29tcGFyZShjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcxLCBjb25zdCBTdHJpbmdJbXBsKiBz
dHJpbmcyKQp7CiAgICBpZiAoIXN0cmluZzEpCiAgICAgICAgcmV0dXJuIChzdHJpbmcyICYmIHN0
cmluZzItPmxlbmd0aCgpKSA/IC0xIDogMDsKCiAgICBpZiAoIXN0cmluZzIpCiAgICAgICAgcmV0
dXJuIHN0cmluZzEtPmxlbmd0aCgpID8gMSA6IDA7CgogICAgYm9vbCBzdHJpbmcxSXM4Qml0ID0g
c3RyaW5nMS0+aXM4Qml0KCk7CiAgICBib29sIHN0cmluZzJJczhCaXQgPSBzdHJpbmcyLT5pczhC
aXQoKTsKICAgIGlmIChzdHJpbmcxSXM4Qml0KSB7CiAgICAgICAgaWYgKHN0cmluZzJJczhCaXQp
CiAgICAgICAgICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlOChzdHJpbmcxLCBzdHJpbmcyKTsK
ICAgICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZThUbzE2KHN0cmluZzEsIHN0cmluZzIpOwog
ICAgfQogICAgaWYgKHN0cmluZzJJczhCaXQpCiAgICAgICAgcmV0dXJuIC1jb2RlUG9pbnRDb21w
YXJlOFRvMTYoc3RyaW5nMiwgc3RyaW5nMSk7CiAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZTE2
KHN0cmluZzEsIHN0cmluZzIpOwp9CgppbmxpbmUgYm9vbCBpc1NwYWNlT3JOZXdsaW5lKFVDaGFy
IGMpCnsKCgogICAgcmV0dXJuIGMgPD0gMHg3RiA/IGlzQVNDSUlTcGFjZShjKSA6IHVfY2hhckRp
cmVjdGlvbl81MihjKSA9PSBVX1dISVRFX1NQQUNFX05FVVRSQUw7Cn0KCnRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+CmlubGluZSB1bnNpZ25lZCBsZW5ndGhPZk51bGxUZXJtaW5hdGVk
U3RyaW5nKGNvbnN0IENoYXJhY3RlclR5cGUqIHN0cmluZykKewogICAgKCh2b2lkKTApOwogICAg
c2l6ZV90IGxlbmd0aCA9IDA7CiAgICB3aGlsZSAoc3RyaW5nW2xlbmd0aF0pCiAgICAgICAgKyts
ZW5ndGg7CgogICAgZG8geyBpZiAoX19idWlsdGluX2V4cGVjdCghISghKGxlbmd0aCA8IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpLCAwKSkgV1RGQ3Jhc2goKTsgfSB3aGls
ZSAoMCk7CiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7Cn0KCmlubGlu
ZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKewogICAg
aWYgKCFyZXF1aXJlc0NvcHkoKSkgewogICAgICAgIGlmIChpczhCaXQoKSkKICAgICAgICAgICAg
cmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKG1fZGF0YTgsIG1fbGVuZ3Ro
KTsKICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcobV9kYXRh
MTYsIG1fbGVuZ3RoKTsKICAgIH0KCiAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgcmV0dXJuIGNy
ZWF0ZShtX2RhdGE4LCBtX2xlbmd0aCk7CiAgICByZXR1cm4gY3JlYXRlKG1fZGF0YTE2LCBtX2xl
bmd0aCk7Cn0KCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7CnRlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFN0cmluZ0ltcGwqPiB7CiAgICB0eXBlZGVmIFN0cmlu
Z0hhc2ggSGFzaDsKfTsKdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8UmVmUHRyPFN0cmlu
Z0ltcGw+PiB7CiAgICB0eXBlZGVmIFN0cmluZ0hhc2ggSGFzaDsKfTsKCmlubGluZSBib29sIGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYgYSwgY29uc3QgU3RyaW5nSW1w
bCYgYikKewogICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2VDb21tb24oYSwgYik7Cn0K
CmlubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYgYSwg
Y29uc3QgY2hhciogYikKewogICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2VDb21tb24o
YSwgYik7Cn0KCmlubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5n
SW1wbCogYSwgY29uc3QgY2hhciogYikKewogICAgcmV0dXJuIGEgJiYgZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZSgqYSwgYik7Cn0KCnRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4gaW5saW5lIGJvb2wg
c3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJiBzdHJp
bmcsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKQp7CiAgICByZXR1cm4g
c3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1vbihzdHJpbmcsIGxvd2VyY2Fz
ZUxldHRlcnMpOwp9Cgp0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGlubGluZSBib29sIHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nLCBj
b25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSkKewogICAgcmV0dXJuIHN0cmlu
ZyAmJiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKCpzdHJpbmcsIGxvd2VyY2Fz
ZUxldHRlcnMpOwp9Cgp0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGlubGluZSBib29sIGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZywgY29uc3Qg
Y2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pCnsKICAgIHJldHVybiBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1vbihzdHJpbmcsIGxvd2VyY2FzZUxldHRlcnMpOwp9Cgp0
ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGlubGluZSBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZywgY29uc3QgY2hhciAoJmxvd2VyY2Fz
ZUxldHRlcnMpW2xlbmd0aF0pCnsKICAgIHJldHVybiBzdHJpbmcgJiYgZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoKnN0cmluZywgbG93ZXJjYXNlTGV0dGVycyk7Cn0KCn0KCnVzaW5nIFdU
Rjo6U3RyaW5nSW1wbDsKdXNpbmcgV1RGOjplcXVhbDsKdXNpbmcgV1RGOjpUZXh0Q2FzZVNlbnNp
dGl2aXR5Owp1c2luZyBXVEY6OlRleHRDYXNlU2Vuc2l0aXZlOwp1c2luZyBXVEY6OlRleHRDYXNl
SW5zZW5zaXRpdmU7CiMgMzAgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgi
IDIKCgoKCgpuYW1lc3BhY2UgV1RGIHsKCgoKIGludCBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY29u
c3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiBpbnQgY2hh
cmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGlu
dCBiYXNlID0gMTApOwogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBMQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKIHVuc2lnbmVkIGNoYXJh
Y3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50
IGJhc2UgPSAxMCk7CmludDY0X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgTENoYXIq
LCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CmludDY0X3QgY2hhcmFjdGVy
c1RvSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJh
c2UgPSAxMCk7CnVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBMQ2hhcios
IHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKdWludDY0X3QgY2hhcmFjdGVy
c1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBi
YXNlID0gMTApOwppbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgTENoYXIq
LCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CmludHB0cl90IGNoYXJhY3Rl
cnNUb0ludFB0clN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQg
YmFzZSA9IDEwKTsKCiBpbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBi
b29sKiBvayA9IDApOwogaW50IGNoYXJhY3RlcnNUb0ludChjb25zdCBVQ2hhciosIHNpemVfdCwg
Ym9vbCogb2sgPSAwKTsKdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBMQ2hhciosIHNp
emVfdCwgYm9vbCogb2sgPSAwKTsKdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBVQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsKaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NChjb25z
dCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsKaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2
NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsKdWludDY0X3QgY2hhcmFjdGVy
c1RvVUludDY0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOwp1aW50NjRfdCBj
aGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7Cmlu
dHB0cl90IGNoYXJhY3RlcnNUb0ludFB0cihjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sg
PSAwKTsKaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBi
b29sKiBvayA9IDApOwoKCgoKIGRvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoY29uc3QgTENoYXIq
LCBzaXplX3QsIGJvb2wqIG9rID0gMCk7CiBkb3VibGUgY2hhcmFjdGVyc1RvRG91YmxlKGNvbnN0
IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOwogZmxvYXQgY2hhcmFjdGVyc1RvRmxvYXQo
Y29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7CiBmbG9hdCBjaGFyYWN0ZXJzVG9G
bG9hdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsKIGZsb2F0IGNoYXJhY3Rl
cnNUb0Zsb2F0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBzaXplX3QmIHBhcnNlZExlbmd0aCk7CiBm
bG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBVQ2hhciosIHNpemVfdCwgc2l6ZV90JiBwYXJz
ZWRMZW5ndGgpOwoKY2xhc3MgQVNDSUlMaXRlcmFsOwoKZW51bSBUcmFpbGluZ1plcm9zVHJ1bmNh
dGluZ1BvbGljeSB7CiAgICBLZWVwVHJhaWxpbmdaZXJvcywKICAgIFRydW5jYXRlVHJhaWxpbmda
ZXJvcwp9OwoKdGVtcGxhdGU8Ym9vbCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIpLCB0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgpib29sIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMoY29uc3QgQ2hhcmFj
dGVyVHlwZSosIHNpemVfdCk7CgpjbGFzcyBTdHJpbmcgewpwdWJsaWM6CgogICAgU3RyaW5nKCkg
eyB9CgoKICAgIFN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
KTsKIyA5NyAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCIKICAgIHRlbXBs
YXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgogICAg
ZXhwbGljaXQgU3RyaW5nKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHksIE92ZXJm
bG93SGFuZGxlcj4mKTsKCgogICAgU3RyaW5nKGNvbnN0IFVDaGFyKik7CgoKICAgIFN0cmluZyhj
b25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgIFN0cmluZyhjb25z
dCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwoKCiAgICBTdHJpbmcoY29uc3Qg
TENoYXIqIGNoYXJhY3RlcnMpOwogICAgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOwoK
CiAgICBTdHJpbmcoU3RyaW5nSW1wbCYpOwogICAgU3RyaW5nKFN0cmluZ0ltcGwqKTsKICAgIFN0
cmluZyhQYXNzUmVmUHRyPFN0cmluZ0ltcGw+KTsKICAgIFN0cmluZyhSZWY8U3RyaW5nSW1wbD4m
Jik7CiAgICBTdHJpbmcoUmVmUHRyPFN0cmluZ0ltcGw+JiYpOwoKICAgIFN0cmluZyhSZWY8QXRv
bWljU3RyaW5nSW1wbD4mJik7CiAgICBTdHJpbmcoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+JiYp
OwoKCiAgICBTdHJpbmcoQVNDSUlMaXRlcmFsIGNoYXJhY3RlcnMpOwoKCgogICAgZW51bSBDb25z
dHJ1Y3RGcm9tTGl0ZXJhbFRhZyB7IENvbnN0cnVjdEZyb21MaXRlcmFsIH07CiAgICB0ZW1wbGF0
ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+CiAgICBTdHJpbmcoY29uc3QgY2hhciAoJmNoYXJh
Y3RlcnMpW2NoYXJhY3RlcnNDb3VudF0sIENvbnN0cnVjdEZyb21MaXRlcmFsVGFnKSA6IG1faW1w
bChTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbDxjaGFyYWN0ZXJzQ291bnQ+KGNoYXJhY3Rl
cnMpKSB7IH0KCgoKICAgIFN0cmluZyhjb25zdCBTdHJpbmcmIG90aGVyKSA6IG1faW1wbChvdGhl
ci5tX2ltcGwpIHsgfQogICAgU3RyaW5nKFN0cmluZyYmIG90aGVyKSA6IG1faW1wbChvdGhlci5t
X2ltcGwucmVsZWFzZSgpKSB7IH0KICAgIFN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IFN0cmluZyYg
b3RoZXIpIHsgbV9pbXBsID0gb3RoZXIubV9pbXBsOyByZXR1cm4gKnRoaXM7IH0KICAgIFN0cmlu
ZyYgb3BlcmF0b3I9KFN0cmluZyYmIG90aGVyKSB7IG1faW1wbCA9IG90aGVyLm1faW1wbC5yZWxl
YXNlKCk7IHJldHVybiAqdGhpczsgfQoKCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18pKSB+U3RyaW5nKCkgeyB9CgogICAgdm9pZCBzd2FwKFN0cmluZyYgbykgeyBt
X2ltcGwuc3dhcChvLm1faW1wbCk7IH0KCiAgICBzdGF0aWMgU3RyaW5nIGFkb3B0KFN0cmluZ0J1
ZmZlcjxMQ2hhcj4mIGJ1ZmZlcikgeyByZXR1cm4gU3RyaW5nSW1wbDo6YWRvcHQoYnVmZmVyKTsg
fQogICAgc3RhdGljIFN0cmluZyBhZG9wdChTdHJpbmdCdWZmZXI8VUNoYXI+JiBidWZmZXIpIHsg
cmV0dXJuIFN0cmluZ0ltcGw6OmFkb3B0KGJ1ZmZlcik7IH0KICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dI
YW5kbGVyPgogICAgc3RhdGljIFN0cmluZyBhZG9wdChWZWN0b3I8Q2hhcmFjdGVyVHlwZSwgaW5s
aW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIHZlY3RvcikgeyByZXR1cm4gU3RyaW5nSW1w
bDo6YWRvcHQodmVjdG9yKTsgfQoKICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1f
aW1wbDsgfQogICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1faW1wbCB8fCAhbV9p
bXBsLT5sZW5ndGgoKTsgfQoKICAgIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBt
X2ltcGwuZ2V0KCk7IH0KICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVsZWFzZUltcGwoKSB7
IHJldHVybiBtX2ltcGwucmVsZWFzZSgpOyB9CgogICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QK
ICAgIHsKICAgICAgICBpZiAoIW1faW1wbCkKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
cmV0dXJuIG1faW1wbC0+bGVuZ3RoKCk7CiAgICB9CgogICAgY29uc3QgTENoYXIqIGNoYXJhY3Rl
cnM4KCkgY29uc3QKICAgIHsKICAgICAgICBpZiAoIW1faW1wbCkKICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnM4
KCk7CiAgICB9CgogICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigpIGNvbnN0CiAgICB7CiAg
ICAgICAgaWYgKCFtX2ltcGwpCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICgodm9pZCkw
KTsKICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzMTYoKTsKICAgIH0KCgogICAgdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiAgICBpbmxpbmUgY29uc3QgQ2hhcmFjdGVy
VHlwZSogY2hhcmFjdGVycygpIGNvbnN0OwoKICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1
cm4gbV9pbXBsLT5pczhCaXQoKTsgfQoKICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QK
ICAgIHsKICAgICAgICBpZiAoIW1faW1wbCkKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
cmV0dXJuIG1faW1wbC0+bGVuZ3RoKCkgKiAoaXM4Qml0KCkgPyBzaXplb2YoTENoYXIpIDogc2l6
ZW9mKFVDaGFyKSk7CiAgICB9CgogICAgQ1N0cmluZyBhc2NpaSgpIGNvbnN0OwogICAgQ1N0cmlu
ZyBsYXRpbjEoKSBjb25zdDsKCiAgICBDU3RyaW5nIHV0ZjgoQ29udmVyc2lvbk1vZGUpIGNvbnN0
OwogICAgQ1N0cmluZyB1dGY4KCkgY29uc3Q7CgogICAgVUNoYXIgYXQodW5zaWduZWQgaW5kZXgp
IGNvbnN0CiAgICB7CiAgICAgICAgaWYgKCFtX2ltcGwgfHwgaW5kZXggPj0gbV9pbXBsLT5sZW5n
dGgoKSkKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgcmV0dXJuICgqbV9pbXBsKVtpbmRl
eF07CiAgICB9CiAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJl
dHVybiBhdChpbmRleCk7IH0KCiAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihpbnQpOwogICAgc3Rh
dGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgaW50KTsKICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVy
KGxvbmcpOwogICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyk7CiAgICBzdGF0
aWMgU3RyaW5nIG51bWJlcihsb25nIGxvbmcpOwogICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5z
aWduZWQgbG9uZyBsb25nKTsKCiAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihkb3VibGUsIHVuc2ln
bmVkIHByZWNpc2lvbiA9IDYsIFRyYWlsaW5nWmVyb3NUcnVuY2F0aW5nUG9saWN5ID0gVHJ1bmNh
dGVUcmFpbGluZ1plcm9zKTsKCgogICAgc3RhdGljIFN0cmluZyBudW1iZXJUb1N0cmluZ0VDTUFT
Y3JpcHQoZG91YmxlKTsKICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyVG9TdHJpbmdGaXhlZFdpZHRo
KGRvdWJsZSwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcyk7CgoKICAgIHNpemVfdCBmaW5kKFVDaGFy
IGMsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBt
X2ltcGwtPmZpbmQoYywgc3RhcnQpIDogbm90Rm91bmQ7IH0KCiAgICBzaXplX3QgZmluZChjb25z
dCBTdHJpbmcmIHN0cikgY29uc3QKICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZp
bmQoc3RyLmltcGwoKSkgOiBub3RGb3VuZDsgfQogICAgc2l6ZV90IGZpbmQoY29uc3QgU3RyaW5n
JiBzdHIsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAogICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1f
aW1wbC0+ZmluZChzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQogICAgc2l6ZV90IGZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cikgY29uc3QKICAgICAgICB7IHJl
dHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHIuaW1wbCgpKSA6
IG5vdEZvdW5kOyB9CiAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
ZyYgc3RyLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QKICAgICAgICB7IHJldHVybiBtX2lt
cGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHIuaW1wbCgpLCBzdGFydE9mZnNl
dCkgOiBub3RGb3VuZDsgfQoKICAgIHNpemVfdCBmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25Q
dHIgbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAogICAgICAgIHsgcmV0
dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCkgOiBub3RGb3Vu
ZDsgfQogICAgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqIHN0ciwgdW5zaWduZWQgc3RhcnQgPSAw
KSBjb25zdAogICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHIsIHN0YXJ0
KSA6IG5vdEZvdW5kOyB9CgogICAgc2l6ZV90IGZpbmROZXh0TGluZVN0YXJ0KHVuc2lnbmVkIHN0
YXJ0ID0gMCkgY29uc3QKICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmROZXh0
TGluZVN0YXJ0KHN0YXJ0KSA6IG5vdEZvdW5kOyB9CgoKICAgIHNpemVfdCByZXZlcnNlRmluZChV
Q2hhciBjLCB1bnNpZ25lZCBzdGFydCA9ICgyMTQ3NDgzNjQ3ICogMlUgKyAxVSkpIGNvbnN0CiAg
ICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChjLCBzdGFydCkgOiBu
b3RGb3VuZDsgfQogICAgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNp
Z25lZCBzdGFydCA9ICgyMTQ3NDgzNjQ3ICogMlUgKyAxVSkpIGNvbnN0CiAgICAgICAgeyByZXR1
cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RG
b3VuZDsgfQoKCiAgICBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShjb25zdCBMQ2hhciogc3RyLCB1
bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0CiAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5maW5kSWdub3JpbmdDYXNlKHN0ciwgc3RhcnQpIDogbm90Rm91bmQ7IH0KICAgIHNpemVfdCBm
aW5kSWdub3JpbmdDYXNlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNv
bnN0CiAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdDYXNlKHN0
ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CiAgICBzaXplX3QgcmV2ZXJzZUZpbmRJZ25v
cmluZ0Nhc2UoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gKDIxNDc0ODM2NDcg
KiAyVSArIDFVKSkgY29uc3QKICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVy
c2VGaW5kSWdub3JpbmdDYXNlKHN0ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CgoKICAg
IHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBzdHIsIHVuc2lnbmVkIHN0YXJ0LCBib29sIGNhc2VT
ZW5zaXRpdmUpIGNvbnN0CiAgICAgICAgeyByZXR1cm4gY2FzZVNlbnNpdGl2ZSA/IGZpbmQoc3Ry
LCBzdGFydCkgOiBmaW5kSWdub3JpbmdDYXNlKHN0ciwgc3RhcnQpOyB9CiAgICBzaXplX3QgZmlu
ZChjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQsIGJvb2wgY2FzZVNlbnNpdGl2ZSkg
Y29uc3QKICAgICAgICB7IHJldHVybiBjYXNlU2Vuc2l0aXZlID8gZmluZChzdHIsIHN0YXJ0KSA6
IGZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCBzdGFydCk7IH0KICAgIHNpemVfdCByZXZlcnNlRmluZChj
b25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29u
c3QKICAgICAgICB7IHJldHVybiBjYXNlU2Vuc2l0aXZlID8gcmV2ZXJzZUZpbmQoc3RyLCBzdGFy
dCkgOiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIsIHN0YXJ0KTsgfQoKICAgIFZlY3RvcjxV
Q2hhcj4gY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSBjb25zdDsKCiAgICBVQ2hhcjMy
IGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpIGNvbnN0OwoKICAgIGJvb2wgY29udGFpbnMo
VUNoYXIgYykgY29uc3QgeyByZXR1cm4gZmluZChjKSAhPSBub3RGb3VuZDsgfQogICAgYm9vbCBj
b250YWlucyhjb25zdCBMQ2hhciogc3RyLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlLCB1bnNp
Z25lZCBzdGFydE9mZnNldCA9IDApIGNvbnN0CiAgICAgICAgeyByZXR1cm4gZmluZChzdHIsIHN0
YXJ0T2Zmc2V0LCBjYXNlU2Vuc2l0aXZlKSAhPSBub3RGb3VuZDsgfQogICAgYm9vbCBjb250YWlu
cyhjb25zdCBTdHJpbmcmIHN0cikgY29uc3QKICAgICAgICB7IHJldHVybiBmaW5kKHN0cikgIT0g
bm90Rm91bmQ7IH0KICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBzdHIsIGJvb2wgY2Fz
ZVNlbnNpdGl2ZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwKSBjb25zdAogICAgICAgIHsgcmV0
dXJuIGZpbmQoc3RyLCBzdGFydE9mZnNldCwgY2FzZVNlbnNpdGl2ZSkgIT0gbm90Rm91bmQ7IH0K
ICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cikgY29u
c3QKICAgICAgICB7IHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyKSAhPSBub3RGb3Vu
ZDsgfQogICAgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3Ry
LCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QKICAgICAgICB7IHJldHVybiBmaW5kSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyLCBzdGFydE9mZnNldCkgIT0gbm90Rm91bmQ7IH0KCiAgICBib29sIHN0
YXJ0c1dpdGgoY29uc3QgU3RyaW5nJiBzKSBjb25zdAogICAgICAgIHsgcmV0dXJuIG1faW1wbCA/
IG1faW1wbC0+c3RhcnRzV2l0aChzLmltcGwoKSkgOiBzLmlzRW1wdHkoKTsgfQogICAgYm9vbCBz
dGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzKSBjb25zdAogICAgICAg
IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHMu
aW1wbCgpKSA6IHMuaXNFbXB0eSgpOyB9CiAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5n
JiBzLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0CiAgICAgICAgeyByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT5zdGFydHNXaXRoKHMuaW1wbCgpLCBjYXNlU2Vuc2l0aXZlKSA6IHMuaXNFbXB0eSgp
OyB9CiAgICBib29sIHN0YXJ0c1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAogICAgICAgIHsg
cmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChjaGFyYWN0ZXIpIDogZmFsc2U7IH0K
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPgogICAgYm9vbCBzdGFydHNXaXRoKGNv
bnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1
ZSkgY29uc3QKICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGg8bWF0
Y2hMZW5ndGg+KHByZWZpeCwgY2FzZVNlbnNpdGl2ZSkgOiAhbWF0Y2hMZW5ndGg7IH0KICAgIGJv
b2wgaGFzSW5maXhTdGFydGluZ0F0KGNvbnN0IFN0cmluZyYgcHJlZml4LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCkgY29uc3QKICAgICAgICB7IHJldHVybiBtX2ltcGwgJiYgcHJlZml4LmltcGwoKSA/
IG1faW1wbC0+aGFzSW5maXhTdGFydGluZ0F0KCpwcmVmaXguaW1wbCgpLCBzdGFydE9mZnNldCkg
OiBmYWxzZTsgfQoKICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzKSBjb25zdAogICAg
ICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGgocy5pbXBsKCkpIDogcy5pc0Vt
cHR5KCk7IH0KICAgIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcm
IHMpIGNvbnN0CiAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKHMuaW1wbCgpKSA6IHMuaXNFbXB0eSgpOyB9CiAgICBib29sIGVuZHNXaXRo
KGNvbnN0IFN0cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAogICAgICAgIHsgcmV0
dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGgocy5pbXBsKCksIGNhc2VTZW5zaXRpdmUpIDog
cy5pc0VtcHR5KCk7IH0KICAgIGJvb2wgZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAog
ICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGgoY2hhcmFjdGVyKSA6IGZh
bHNlOyB9CiAgICBib29sIGVuZHNXaXRoKGNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBl
bmRzV2l0aChzdGF0aWNfY2FzdDxVQ2hhcj4oY2hhcmFjdGVyKSk7IH0KICAgIHRlbXBsYXRlPHVu
c2lnbmVkIG1hdGNoTGVuZ3RoPgogICAgYm9vbCBlbmRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4
KVttYXRjaExlbmd0aF0sIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0CiAgICAgICAg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4LCBj
YXNlU2Vuc2l0aXZlKSA6ICFtYXRjaExlbmd0aDsgfQogICAgYm9vbCBoYXNJbmZpeEVuZGluZ0F0
KGNvbnN0IFN0cmluZyYgc3VmZml4LCB1bnNpZ25lZCBlbmRPZmZzZXQpIGNvbnN0CiAgICAgICAg
eyByZXR1cm4gbV9pbXBsICYmIHN1ZmZpeC5pbXBsKCkgPyBtX2ltcGwtPmhhc0luZml4RW5kaW5n
QXQoKnN1ZmZpeC5pbXBsKCksIGVuZE9mZnNldCkgOiBmYWxzZTsgfQoKICAgIHZvaWQgYXBwZW5k
KGNvbnN0IFN0cmluZyYpOwogICAgdm9pZCBhcHBlbmQoTENoYXIpOwogICAgdm9pZCBhcHBlbmQo
Y2hhciBjKSB7IGFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oYykpOyB9OwogICAgdm9pZCBhcHBl
bmQoVUNoYXIpOwogICAgdm9pZCBhcHBlbmQoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgp
OwogICAgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgdm9p
ZCBpbnNlcnQoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgcG9zKTsKCiAgICBTdHJpbmcmIHJlcGxh
Y2UoVUNoYXIgYSwgVUNoYXIgYikgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2ltcGwtPnJlcGxh
Y2UoYSwgYik7IHJldHVybiAqdGhpczsgfQogICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIGEsIGNv
bnN0IFN0cmluZyYgYikgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2ltcGwtPnJlcGxhY2UoYSwg
Yi5pbXBsKCkpOyByZXR1cm4gKnRoaXM7IH0KICAgIFN0cmluZyYgcmVwbGFjZShjb25zdCBTdHJp
bmcmIGEsIGNvbnN0IFN0cmluZyYgYikgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2ltcGwtPnJl
cGxhY2UoYS5pbXBsKCksIGIuaW1wbCgpKTsgcmV0dXJuICp0aGlzOyB9CiAgICBTdHJpbmcmIHJl
cGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwgY29uc3QgU3RyaW5nJiBiKSB7IGlm
IChtX2ltcGwpIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZShpbmRleCwgbGVuLCBiLmltcGwoKSk7
IHJldHVybiAqdGhpczsgfQoKICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4K
ICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIFN0cmluZyYgcmVw
bGFjZVdpdGhMaXRlcmFsKFVDaGFyIGEsIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0
ZXJzQ291bnRdKQogICAgewogICAgICAgIGlmIChtX2ltcGwpCiAgICAgICAgICAgIG1faW1wbCA9
IG1faW1wbC0+cmVwbGFjZShhLCBjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzQ291bnQgLSAxKTsKCiAg
ICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIHZvaWQgdHJ1bmNhdGUodW5zaWduZWQgbGVu
KTsKICAgIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHBvcywgaW50IGxlbiA9IDEpOwoKICAgIFN0cmlu
ZyBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSAoMjE0NzQ4MzY0NyAqIDJV
ICsgMVUpKSBjb25zdDsKICAgIFN0cmluZyBzdWJzdHJpbmdTaGFyaW5nSW1wbCh1bnNpZ25lZCBw
b3MsIHVuc2lnbmVkIGxlbiA9ICgyMTQ3NDgzNjQ3ICogMlUgKyAxVSkpIGNvbnN0OwogICAgU3Ry
aW5nIGxlZnQodW5zaWduZWQgbGVuKSBjb25zdCB7IHJldHVybiBzdWJzdHJpbmcoMCwgbGVuKTsg
fQogICAgU3RyaW5nIHJpZ2h0KHVuc2lnbmVkIGxlbikgY29uc3QgeyByZXR1cm4gc3Vic3RyaW5n
KGxlbmd0aCgpIC0gbGVuLCBsZW4pOyB9CgogICAgU3RyaW5nIGNvbnZlcnRUb0FTQ0lJTG93ZXJj
YXNlKCkgY29uc3Q7CiAgICBTdHJpbmcgY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdDsK
ICAgIFN0cmluZyBjb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlKCkgY29uc3Q7CiAgICBT
dHJpbmcgY29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgpIGNvbnN0OwogICAgU3RyaW5n
IGNvbnZlcnRUb0xvd2VyY2FzZVdpdGhMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJ
ZGVudGlmaWVyKSBjb25zdDsKICAgIFN0cmluZyBjb252ZXJ0VG9VcHBlcmNhc2VXaXRoTG9jYWxl
KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikgY29uc3Q7CgogICAgU3RyaW5n
IHN0cmlwV2hpdGVTcGFjZSgpIGNvbnN0OwogICAgU3RyaW5nIHN0cmlwV2hpdGVTcGFjZShJc1do
aXRlU3BhY2VGdW5jdGlvblB0cikgY29uc3Q7CiAgICBTdHJpbmcgc2ltcGxpZnlXaGl0ZVNwYWNl
KCkgY29uc3Q7CiAgICBTdHJpbmcgc2ltcGxpZnlXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0
aW9uUHRyKSBjb25zdDsKCiAgICBTdHJpbmcgcmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRj
aEZ1bmN0aW9uUHRyKSBjb25zdDsKICAgIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVy
KFVDaGFyKT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3Q7CgoKCiAgICBTdHJp
bmcgZm9sZENhc2UoKSBjb25zdDsKCiAgICBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25zdCBjaGFy
ICosIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDEsIDIpKSk7CgoKCgog
ICAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNo
YXIqJiBkYXRhKSB7IHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0
aCwgZGF0YSk7IH0KICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25l
ZCBsZW5ndGgsIExDaGFyKiYgZGF0YSkgeyByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0
aWFsaXplZChsZW5ndGgsIGRhdGEpOyB9CgogICAgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNl
cGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkg
Y29uc3Q7CiAgICB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBWZWN0b3I8U3Ry
aW5nPiYgcmVzdWx0KSBjb25zdAogICAgewogICAgICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2Us
IHJlc3VsdCk7CiAgICB9CiAgICB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgYm9vbCBhbGxv
d0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CiAgICB2b2lkIHNw
bGl0KFVDaGFyIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3QKICAgIHsK
ICAgICAgICBzcGxpdChzZXBhcmF0b3IsIGZhbHNlLCByZXN1bHQpOwogICAgfQoKICAgIGludCB0
b0ludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OwogICAgdW5zaWdu
ZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAgICBp
bnQ2NF90IHRvSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsK
ICAgIHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkg
Y29uc3Q7CiAgICBpbnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNl
ID0gMTApIGNvbnN0OwoKICAgIGludCB0b0ludChib29sKiBvayA9IDApIGNvbnN0OwogICAgdW5z
aWduZWQgdG9VSW50KGJvb2wqIG9rID0gMCkgY29uc3Q7CiAgICBpbnQ2NF90IHRvSW50NjQoYm9v
bCogb2sgPSAwKSBjb25zdDsKICAgIHVpbnQ2NF90IHRvVUludDY0KGJvb2wqIG9rID0gMCkgY29u
c3Q7CiAgICBpbnRwdHJfdCB0b0ludFB0cihib29sKiBvayA9IDApIGNvbnN0OwoKCgoKICAgIGRv
dWJsZSB0b0RvdWJsZShib29sKiBvayA9IDApIGNvbnN0OwogICAgZmxvYXQgdG9GbG9hdChib29s
KiBvayA9IDApIGNvbnN0OwoKICAgIGJvb2wgcGVyY2VudGFnZShpbnQmIHBlcmNlbnRhZ2UpIGNv
bnN0OwoKCiAgICBTdHJpbmcgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKICAgIFN0cmluZyBpc29s
YXRlZENvcHkoKSAmJjsKCgoKCiAgICBib29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgp
IGNvbnN0OwoKCgogICAgdHlwZWRlZiBzdHJ1Y3QgSW1wbGljaXRDb252ZXJzaW9uRnJvbVdURlN0
cmluZ1RvQm9vbERpc2FsbG93ZWRBKiAoU3RyaW5nOjoqVW5zcGVjaWZpZWRCb29sVHlwZUEpOwog
ICAgdHlwZWRlZiBzdHJ1Y3QgSW1wbGljaXRDb252ZXJzaW9uRnJvbVdURlN0cmluZ1RvQm9vbERp
c2FsbG93ZWRCKiAoU3RyaW5nOjoqVW5zcGVjaWZpZWRCb29sVHlwZUIpOwogICAgb3BlcmF0b3Ig
VW5zcGVjaWZpZWRCb29sVHlwZUEoKSBjb25zdDsKICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9v
bFR5cGVCKCkgY29uc3Q7CiMgNDIyICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oIgogICAgc3RhdGljIFN0cmluZyBtYWtlOEJpdEZyb20xNkJpdFNvdXJjZShjb25zdCBVQ2hh
ciosIHNpemVfdCk7CiAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICBzdGF0
aWMgU3RyaW5nIG1ha2U4Qml0RnJvbTE2Qml0U291cmNlKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5s
aW5lQ2FwYWNpdHk+JiBidWZmZXIpCiAgICB7CiAgICAgICAgcmV0dXJuIG1ha2U4Qml0RnJvbTE2
Qml0U291cmNlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogICAgfQoKICAgIHN0YXRp
YyBTdHJpbmcgbWFrZTE2Qml0RnJvbThCaXRTb3VyY2UoY29uc3QgTENoYXIqLCBzaXplX3QpOwoK
CgogICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBMQ2hhciosIHNpemVfdCk7CiAgICBz
dGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IExDaGFyKik7CiAgICBzdGF0aWMgU3RyaW5nIGZy
b21VVEY4KGNvbnN0IGNoYXIqIHMsIHNpemVfdCBsZW5ndGgpIHsgcmV0dXJuIGZyb21VVEY4KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgbGVuZ3RoKTsgfTsKICAgIHN0YXRpYyBT
dHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciogcykgeyByZXR1cm4gZnJvbVVURjgocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpKTsgfTsKICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgo
Y29uc3QgQ1N0cmluZyYpOwoKCiAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExhdGluMUZh
bGxiYWNrKGNvbnN0IExDaGFyKiwgc2l6ZV90KTsKICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjhX
aXRoTGF0aW4xRmFsbGJhY2soY29uc3QgY2hhciogcywgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4g
ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2socmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KHMpLCBsZW5ndGgpOyB9OwoKCiAgICBVQ2hhckRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVj
dGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IG51bGxwdHIpIGNvbnN0CiAgICB7
CiAgICAgICAgaWYgKG1faW1wbCkKICAgICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZGVmYXVsdFdy
aXRpbmdEaXJlY3Rpb24oaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpOwogICAgICAgIGlmIChoYXNT
dHJvbmdEaXJlY3Rpb25hbGl0eSkKICAgICAgICAgICAgKmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5
ID0gZmFsc2U7CiAgICAgICAgcmV0dXJuIFVfTEVGVF9UT19SSUdIVDsKICAgIH0KCiAgICBib29s
IGNvbnRhaW5zT25seUFTQ0lJKCkgY29uc3Q7CiAgICBib29sIGNvbnRhaW5zT25seUxhdGluMSgp
IGNvbnN0OwogICAgYm9vbCBjb250YWluc09ubHlXaGl0ZXNwYWNlKCkgY29uc3QgeyByZXR1cm4g
IW1faW1wbCB8fCBtX2ltcGwtPmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsgfQoKCiAgICBTdHJp
bmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1faW1wbChXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSkgeyB9CiAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV9pbXBsLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KCiAgICB1bnNp
Z25lZCBleGlzdGluZ0hhc2goKSBjb25zdCB7IHJldHVybiBpc051bGwoKSA/IDAgOiBpbXBsKCkt
PmV4aXN0aW5nSGFzaCgpOyB9CgoKCgoKCiAgICBVQ2hhciBjaGFyYWN0ZXJBdCh1bnNpZ25lZCBp
bmRleCkgY29uc3QKICAgIHsKICAgICAgICBpZiAoIW1faW1wbCB8fCBpbmRleCA+PSBtX2ltcGwt
Pmxlbmd0aCgpKQogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICByZXR1cm4gKCptX2ltcGwp
W2luZGV4XTsKICAgIH0KCnByaXZhdGU6CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KICAgIHZvaWQgcmVtb3ZlSW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVuc2ln
bmVkLCBpbnQpOwoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogICAgdm9p
ZCBhcHBlbmRJbnRlcm5hbChDaGFyYWN0ZXJUeXBlKTsKCiAgICBSZWZQdHI8U3RyaW5nSW1wbD4g
bV9pbXBsOwp9OwoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0
IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQppbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgTENoYXIqIGIpIHsgcmV0dXJu
IGVxdWFsKGEuaW1wbCgpLCBiKTsgfQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmlu
ZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihiKSk7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBM
Q2hhciogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChhLCBiLmltcGwoKSk7IH0K
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjaGFyKiBhLCBjb25zdCBTdHJpbmcmIGIpIHsg
cmV0dXJuIGVxdWFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhKSwgYi5pbXBsKCkp
OyB9CnRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBhLCBjb25zdCBTdHJpbmcmIGIp
IHsgcmV0dXJuIGVxdWFsKGIuaW1wbCgpLCBhLmRhdGEoKSwgYS5zaXplKCkpOyB9CnRlbXBsYXRl
PHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJp
bmcmIGEsIGNvbnN0IFZlY3RvcjxjaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGIpIHsgcmV0dXJuIGIg
PT0gYTsgfQoKCmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBT
dHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9CmlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBMQ2hhciogYikgeyByZXR1cm4g
IWVxdWFsKGEuaW1wbCgpLCBiKTsgfQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmlu
ZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgpLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
TENoYXIqIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKGEsIGIuaW1wbCgpKTsg
fQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqIGEsIGNvbnN0IFN0cmluZyYgYikg
eyByZXR1cm4gIWVxdWFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhKSwgYi5pbXBs
KCkpOyB9CnRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBhLCBjb25zdCBTdHJpbmcm
IGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQp0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+
IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8Y2hh
ciwgaW5saW5lQ2FwYWNpdHk+JiBiKSB7IHJldHVybiBiICE9IGE7IH0KCmJvb2wgZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKYm9vbCBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKCnRlbXBsYXRlPHVu
c2lnbmVkIGxlbmd0aD4gYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBT
dHJpbmcmLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7CnRlbXBsYXRl
PHVuc2lnbmVkIGxlbmd0aD4gYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsK
CmlubGluZSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KGNvbnN0IFN0cmluZyYgYSwgY29uc3Qg
U3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbElnbm9yaW5nTnVsbGl0eShhLmltcGwoKSwgYi5pbXBs
KCkpOyB9CnRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgZXF1YWxJ
Z25vcmluZ051bGxpdHkoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGEsIGNv
bnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWxJZ25vcmluZ051bGxpdHkoYSwgYi5pbXBsKCkp
OyB9CgppbmxpbmUgYm9vbCBvcGVyYXRvciEoY29uc3QgU3RyaW5nJiBzdHIpIHsgcmV0dXJuIHN0
ci5pc051bGwoKTsgfQoKaW5saW5lIHZvaWQgc3dhcChTdHJpbmcmIGEsIFN0cmluZyYgYikgeyBh
LnN3YXAoYik7IH0KIyA1MjQgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgi
CmlubGluZSBTdHJpbmc6OlN0cmluZyhTdHJpbmdJbXBsJiBpbXBsKQogICAgOiBtX2ltcGwoJmlt
cGwpCnsKfQoKaW5saW5lIFN0cmluZzo6U3RyaW5nKFN0cmluZ0ltcGwqIGltcGwpCiAgICA6IG1f
aW1wbChpbXBsKQp7Cn0KCmlubGluZSBTdHJpbmc6OlN0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGltcGwpCiAgICA6IG1faW1wbChpbXBsKQp7Cn0KCmlubGluZSBTdHJpbmc6OlN0cmluZyhS
ZWY8U3RyaW5nSW1wbD4mJiBpbXBsKQogICAgOiBtX2ltcGwoc3RkOjptb3ZlPFdURjo6Q2hlY2tN
b3ZlUGFyYW1ldGVyPihpbXBsKSkKewp9CgppbmxpbmUgU3RyaW5nOjpTdHJpbmcoUmVmUHRyPFN0
cmluZ0ltcGw+JiYgaW1wbCkKICAgIDogbV9pbXBsKHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBh
cmFtZXRlcj4oaW1wbCkpCnsKfQoKaW5saW5lIFN0cmluZzo6U3RyaW5nKFJlZjxBdG9taWNTdHJp
bmdJbXBsPiYmIGltcGwpCiAgICA6IG1faW1wbChzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJh
bWV0ZXI+KGltcGwpKQp7Cn0KCmlubGluZSBTdHJpbmc6OlN0cmluZyhSZWZQdHI8QXRvbWljU3Ry
aW5nSW1wbD4mJiBpbXBsKQogICAgOiBtX2ltcGwoc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFy
YW1ldGVyPihpbXBsKSkKewp9Cgp0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVu
YW1lIE92ZXJmbG93SGFuZGxlcj4KU3RyaW5nOjpTdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFyLCBp
bmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYgdmVjdG9yKQogICAgOiBtX2ltcGwodmVj
dG9yLnNpemUoKSA/IFN0cmluZ0ltcGw6OmNyZWF0ZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6
ZSgpKSA6IFJlZjxTdHJpbmdJbXBsPigqU3RyaW5nSW1wbDo6ZW1wdHkoKSkpCnsKfQoKdGVtcGxh
dGU8PgppbmxpbmUgY29uc3QgTENoYXIqIFN0cmluZzo6Y2hhcmFjdGVyczxMQ2hhcj4oKSBjb25z
dAp7CiAgICAoKHZvaWQpMCk7CiAgICByZXR1cm4gY2hhcmFjdGVyczgoKTsKfQoKdGVtcGxhdGU8
PgppbmxpbmUgY29uc3QgVUNoYXIqIFN0cmluZzo6Y2hhcmFjdGVyczxVQ2hhcj4oKSBjb25zdAp7
CiAgICAoKHZvaWQpMCk7CiAgICByZXR1cm4gY2hhcmFjdGVyczE2KCk7Cn0KCmlubGluZSBib29s
IFN0cmluZzo6Y29udGFpbnNPbmx5TGF0aW4xKCkgY29uc3QKewogICAgaWYgKGlzRW1wdHkoKSkK
ICAgICAgICByZXR1cm4gdHJ1ZTsKCiAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgcmV0dXJuIHRy
dWU7CgogICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBjaGFyYWN0ZXJzMTYoKTsKICAgIFVD
aGFyIG9yZWQgPSAwOwogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2ltcGwtPmxlbmd0aCgp
OyArK2kpCiAgICAgICAgb3JlZCB8PSBjaGFyYWN0ZXJzW2ldOwogICAgcmV0dXJuICEob3JlZCAm
IDB4RkYwMCk7Cn0KIyA2MTIgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgi
CmlubGluZSBib29sIFN0cmluZzo6Y29udGFpbnNPbmx5QVNDSUkoKSBjb25zdAp7CiAgICBpZiAo
aXNFbXB0eSgpKQogICAgICAgIHJldHVybiB0cnVlOwoKICAgIGlmIChpczhCaXQoKSkKICAgICAg
ICByZXR1cm4gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNoYXJhY3RlcnM4KCksIG1faW1wbC0+bGVu
Z3RoKCkpOwoKICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVyczE2KCks
IG1faW1wbC0+bGVuZ3RoKCkpOwp9CgogaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJik7CgppbmxpbmUgYm9vbCBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4o
Y29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpCnsKICAgIHJldHVybiBjb2RlUG9pbnRD
b21wYXJlKGEuaW1wbCgpLCBiLmltcGwoKSkgPCAwOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgppbmxpbmUgdm9pZCBhcHBlbmROdW1iZXIoVmVjdG9yPENoYXJhY3RlclR5cGU+
JiB2ZWN0b3IsIHVuc2lnbmVkIGNoYXIgbnVtYmVyKQp7CiAgICBpbnQgbnVtYmVyTGVuZ3RoID0g
bnVtYmVyID4gOTkgPyAzIDogKG51bWJlciA+IDkgPyAyIDogMSk7CiAgICBzaXplX3QgdmVjdG9y
U2l6ZSA9IHZlY3Rvci5zaXplKCk7CiAgICB2ZWN0b3IuZ3Jvdyh2ZWN0b3JTaXplICsgbnVtYmVy
TGVuZ3RoKTsKCiAgICBzd2l0Y2ggKG51bWJlckxlbmd0aCkgewogICAgY2FzZSAzOgogICAgICAg
IHZlY3Rvclt2ZWN0b3JTaXplICsgMl0gPSBudW1iZXIgJSAxMCArICcwJzsKICAgICAgICBudW1i
ZXIgLz0gMTA7CiAgICAgICAgOwoKICAgIGNhc2UgMjoKICAgICAgICB2ZWN0b3JbdmVjdG9yU2l6
ZSArIDFdID0gbnVtYmVyICUgMTAgKyAnMCc7CiAgICAgICAgbnVtYmVyIC89IDEwOwogICAgICAg
IDsKCiAgICBjYXNlIDE6CiAgICAgICAgdmVjdG9yW3ZlY3RvclNpemVdID0gbnVtYmVyICUgMTAg
KyAnMCc7CiAgICB9Cn0KCnRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKSwg
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KaW5saW5lIGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVy
cyhjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQp7CiAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgaWYgKCFpc1NwZWNp
YWxDaGFyYWN0ZXIoY2hhcmFjdGVyc1tpXSkpCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
IH0KICAgIHJldHVybiB0cnVlOwp9Cgp0ZW1wbGF0ZTxib29sIGlzU3BlY2lhbENoYXJhY3RlcihV
Q2hhcik+CmlubGluZSBib29sIFN0cmluZzo6aXNBbGxTcGVjaWFsQ2hhcmFjdGVycygpIGNvbnN0
CnsKICAgIHNpemVfdCBsZW4gPSBsZW5ndGgoKTsKCiAgICBpZiAoIWxlbikKICAgICAgICByZXR1
cm4gdHJ1ZTsKCiAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgcmV0dXJuIFdURjo6aXNBbGxTcGVj
aWFsQ2hhcmFjdGVyczxpc1NwZWNpYWxDaGFyYWN0ZXIsIExDaGFyPihjaGFyYWN0ZXJzOCgpLCBs
ZW4pOwogICAgcmV0dXJuIFdURjo6aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc1NwZWNpYWxDaGFy
YWN0ZXIsIFVDaGFyPihjaGFyYWN0ZXJzMTYoKSwgbGVuKTsKfQoKCnRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8U3Ry
aW5nPiB7CiAgICB0eXBlZGVmIFN0cmluZ0hhc2ggSGFzaDsKfTsKCnRlbXBsYXRlIDw+IHN0cnVj
dCBWZWN0b3JUcmFpdHM8U3RyaW5nPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKCmNs
YXNzIEFTQ0lJTGl0ZXJhbCB7CnB1YmxpYzoKICAgIGV4cGxpY2l0IEFTQ0lJTGl0ZXJhbChjb25z
dCBjaGFyKiBjaGFyYWN0ZXJzKSA6IG1fY2hhcmFjdGVycyhjaGFyYWN0ZXJzKSB7IH0KICAgIG9w
ZXJhdG9yIGNvbnN0IGNoYXIqKCkgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9Cgpwcml2YXRlOgog
ICAgY29uc3QgY2hhciogbV9jaGFyYWN0ZXJzOwp9OwoKCgoKCmNsYXNzIFN0cmluZ0NhcHR1cmUg
ewpwdWJsaWM6CiAgICBTdHJpbmdDYXB0dXJlKCkgeyB9CiAgICBTdHJpbmdDYXB0dXJlKGNvbnN0
IFN0cmluZyYgc3RyaW5nKSA6IG1fc3RyaW5nKHN0cmluZykgeyB9CiAgICBleHBsaWNpdCBTdHJp
bmdDYXB0dXJlKFN0cmluZyYmIHN0cmluZykgOiBtX3N0cmluZyhzdHJpbmcpIHsgfQogICAgU3Ry
aW5nQ2FwdHVyZShjb25zdCBTdHJpbmdDYXB0dXJlJiBvdGhlcikgOiBtX3N0cmluZyhvdGhlci5t
X3N0cmluZy5pc29sYXRlZENvcHkoKSkgeyB9CiAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICBTdHJpbmcgcmVsZWFzZVN0cmluZygpIHsgcmV0
dXJuIHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4obV9zdHJpbmcpOyB9CgogICAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgU3RyaW5nQ2FwdHVyZSYgb3RoZXIpIHsgbV9zdHJpbmcgPSBv
dGhlci5tX3N0cmluZy5pc29sYXRlZENvcHkoKTsgfQoKcHJpdmF0ZToKICAgIFN0cmluZyBtX3N0
cmluZzsKfTsKCgogY29uc3QgU3RyaW5nJiBlbXB0eVN0cmluZygpOwoKdGVtcGxhdGU8dW5zaWdu
ZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25z
dCBTdHJpbmcmIHN0cmluZywgY29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0p
CnsKICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcuaW1wbCgp
LCBsb3dlcmNhc2VMZXR0ZXJzKTsKfQoKaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikKewogICAgcmV0dXJuIGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UoYS5pbXBsKCksIGIuaW1wbCgpKTsKfQoKaW5saW5lIGJvb2wgZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpCnsKICAgIHJl
dHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGEuaW1wbCgpLCBiKTsKfQoKdGVtcGxhdGU8dW5z
aWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylb
bGVuZ3RoXSkKewogICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nLmltcGwoKSwgbG93ZXJjYXNlTGV0dGVycyk7Cn0KCn0KCnVzaW5nIFdURjo6Q1N0cmlu
ZzsKdXNpbmcgV1RGOjpLZWVwVHJhaWxpbmdaZXJvczsKdXNpbmcgV1RGOjpTdHJpbmc7CnVzaW5n
IFdURjo6ZW1wdHlTdHJpbmc7CnVzaW5nIFdURjo6YXBwZW5kTnVtYmVyOwp1c2luZyBXVEY6OmNo
YXJhY3RlcnNBcmVBbGxBU0NJSTsKdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnRTdHJpY3Q7CnVz
aW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludFN0cmljdDsKdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9J
bnQ2NFN0cmljdDsKdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3Q7CnVzaW5nIFdU
Rjo6Y2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0Owp1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludDsK
dXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50Owp1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludDY0
Owp1c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ2NDsKdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9J
bnRQdHI7CnVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvRG91YmxlOwp1c2luZyBXVEY6OmNoYXJhY3Rl
cnNUb0Zsb2F0Owp1c2luZyBXVEY6OmVxdWFsOwp1c2luZyBXVEY6OmZpbmQ7CnVzaW5nIFdURjo6
aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczsKdXNpbmcgV1RGOjppc1NwYWNlT3JOZXdsaW5lOwp1c2lu
ZyBXVEY6OnJldmVyc2VGaW5kOwp1c2luZyBXVEY6OkFTQ0lJTGl0ZXJhbDsKdXNpbmcgV1RGOjpT
dHJpbmdDYXB0dXJlOwoKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oIiAxCiMgMjIgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgiCiNk
ZWZpbmUgQXRvbWljU3RyaW5nX2ggCgoKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZ0ltcGwuaCIgMQojIDIyICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZ0ltcGwuaCIKI2RlZmluZSBBdG9taWNTdHJpbmdJbXBsX2ggCgojIDEgIi4uLy4uL1Nv
dXJjZS9XVEYvd3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaCIgMQojIDI3ICIuLi8uLi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmgiCiNkZWZpbmUgVW5pcXVlZFN0cmlu
Z0ltcGxfaCAKCgoKbmFtZXNwYWNlIFdURiB7CgoKCmNsYXNzIFVuaXF1ZWRTdHJpbmdJbXBsIDog
cHVibGljIFN0cmluZ0ltcGwgewpwcml2YXRlOgogICAgVW5pcXVlZFN0cmluZ0ltcGwoKSA9IGRl
bGV0ZTsKfTsKIyA1NyAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1w
bC5oIgp9Cgp1c2luZyBXVEY6OlVuaXF1ZWRTdHJpbmdJbXBsOwojIDI1ICIuLi8uLi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuaCIgMgoKbmFtZXNwYWNlIFdURiB7CgpjbGFz
cyBBdG9taWNTdHJpbmdUYWJsZTsKCmNsYXNzIEF0b21pY1N0cmluZ0ltcGwgOiBwdWJsaWMgVW5p
cXVlZFN0cmluZ0ltcGwgewpwdWJsaWM6CiAgICBzdGF0aWMgUmVmUHRyPEF0b21pY1N0cmluZ0lt
cGw+IGxvb2tVcChMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAgewogICAg
ICAgIHJldHVybiBsb29rVXBJbnRlcm5hbChjaGFyYWN0ZXJzLCBsZW5ndGgpOwogICAgfQogICAg
c3RhdGljIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBsb29rVXAoVUNoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkKICAgIHsKICAgICAgICByZXR1cm4gbG9va1VwSW50ZXJuYWwoY2hh
cmFjdGVycywgbGVuZ3RoKTsKICAgIH0KICAgIHN0YXRpYyBSZWZQdHI8QXRvbWljU3RyaW5nSW1w
bD4gbG9va1VwKFN0cmluZ0ltcGwqIHN0cmluZykKICAgIHsKICAgICAgICBpZiAoIXN0cmluZyB8
fCBzdHJpbmctPmlzQXRvbWljKCkpCiAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdG9t
aWNTdHJpbmdJbXBsKj4oc3RyaW5nKTsKICAgICAgICByZXR1cm4gbG9va1VwU2xvd0Nhc2UoKnN0
cmluZyk7CiAgICB9CgogICAgc3RhdGljIHZvaWQgcmVtb3ZlKEF0b21pY1N0cmluZ0ltcGwqKTsK
CiAgICBzdGF0aWMgUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGFkZChjb25zdCBMQ2hhciopOwog
ICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIFJlZlB0
cjxBdG9taWNTdHJpbmdJbXBsPiBhZGQoY29uc3QgY2hhciogcykgeyByZXR1cm4gYWRkKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSk7IH07CiAgICBzdGF0aWMgUmVmUHRyPEF0b21p
Y1N0cmluZ0ltcGw+IGFkZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICBzdGF0
aWMgUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxl
bmd0aCk7CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0
aWMgUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGFkZChjb25zdCBjaGFyKiBzLCB1bnNpZ25lZCBs
ZW5ndGgpIHsgcmV0dXJuIGFkZChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGxl
bmd0aCk7IH07CiAgICBzdGF0aWMgUmVmPEF0b21pY1N0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hh
ciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKICAgIHN0YXRpYyBS
ZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKik7CiAgICBzdGF0aWMgUmVm
UHRyPEF0b21pY1N0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpOwogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fKSkgc3RhdGljIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCogc3Ry
aW5nKQogICAgewogICAgICAgIGlmICghc3RyaW5nKQogICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KHN0cmluZyk7CiAgICAgICAgcmV0dXJuIGFkZCgqc3Ry
aW5nKTsKICAgIH0KICAgIHN0YXRpYyBSZWY8QXRvbWljU3RyaW5nSW1wbD4gYWRkTGl0ZXJhbChj
b25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwoKCiAgICBzdGF0aWMgUmVm
UHRyPEF0b21pY1N0cmluZ0ltcGw+IGFkZFVURjgoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNo
YXIqIGVuZCk7CgoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVGFibGVQcm92aWRlcj4K
ICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBSZWZQ
dHI8QXRvbWljU3RyaW5nSW1wbD4gYWRkV2l0aFN0cmluZ1RhYmxlUHJvdmlkZXIoU3RyaW5nVGFi
bGVQcm92aWRlciYgc3RyaW5nVGFibGVQcm92aWRlciwgU3RyaW5nSW1wbCogc3RyaW5nKQogICAg
ewogICAgICAgIGlmICghc3RyaW5nKQogICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICByZXR1cm4gYWRkKCpzdHJpbmdUYWJsZVByb3ZpZGVyLmF0b21pY1N0cmluZ1RhYmxlKCksICpz
dHJpbmcpOwogICAgfQoKCgoKCnByaXZhdGU6CiAgICBBdG9taWNTdHJpbmdJbXBsKCkgPSBkZWxl
dGU7CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGlj
IFJlZjxBdG9taWNTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCYgc3RyaW5nKQogICAgewogICAg
ICAgIGlmIChzdHJpbmcuaXNBdG9taWMoKSkgewogICAgICAgICAgICAoKHZvaWQpMCk7CiAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsJj4oc3RyaW5nKTsKICAg
ICAgICB9CiAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHN0cmluZyk7CiAgICB9CgogICAgaW5s
aW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIFJlZjxBdG9taWNT
dHJpbmdJbXBsPiBhZGQoQXRvbWljU3RyaW5nVGFibGUmIHN0cmluZ1RhYmxlLCBTdHJpbmdJbXBs
JiBzdHJpbmcpCiAgICB7CiAgICAgICAgaWYgKHN0cmluZy5pc0F0b21pYygpKSB7CiAgICAgICAg
ICAgICgodm9pZCkwKTsKICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmlu
Z0ltcGwmPihzdHJpbmcpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2Uoc3Ry
aW5nVGFibGUsIHN0cmluZyk7CiAgICB9CgogICAgc3RhdGljIFJlZjxBdG9taWNTdHJpbmdJbXBs
PiBhZGRTbG93Q2FzZShTdHJpbmdJbXBsJik7CiAgICBzdGF0aWMgUmVmPEF0b21pY1N0cmluZ0lt
cGw+IGFkZFNsb3dDYXNlKEF0b21pY1N0cmluZ1RhYmxlJiwgU3RyaW5nSW1wbCYpOwoKICAgIHN0
YXRpYyBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gbG9va1VwU2xvd0Nhc2UoU3RyaW5nSW1wbCYp
OwoKICAgIHN0YXRpYyBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gbG9va1VwSW50ZXJuYWwoY29u
c3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgc3RhdGljIFJlZlB0cjxBdG9taWNTdHJp
bmdJbXBsPiBsb29rVXBJbnRlcm5hbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Cn07
CiMgMTMwICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuaCIKfQoK
dXNpbmcgV1RGOjpBdG9taWNTdHJpbmdJbXBsOwojIDI2ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0F0b21pY1N0cmluZy5oIiAyCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5o
IiAyCgoKCgoKCiNkZWZpbmUgQVRPTUlDU1RSSU5HX0NPTlZFUlNJT04gCgoKbmFtZXNwYWNlIFdU
RiB7CgpzdHJ1Y3QgQXRvbWljU3RyaW5nSGFzaDsKCmNsYXNzIEF0b21pY1N0cmluZyB7CnB1Ymxp
YzoKICAgIHN0YXRpYyB2b2lkIGluaXQoKTsKCiAgICBBdG9taWNTdHJpbmcoKTsKICAgIEF0b21p
Y1N0cmluZyhjb25zdCBMQ2hhciopOwogICAgQXRvbWljU3RyaW5nKGNvbnN0IGNoYXIqKTsKICAg
IEF0b21pY1N0cmluZyhjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICBBdG9taWNT
dHJpbmcoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgQXRvbWljU3RyaW5nKGNv
bnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOwogICAg
QXRvbWljU3RyaW5nKGNvbnN0IFVDaGFyKik7CgogICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNh
cGFjaXR5PgogICAgZXhwbGljaXQgQXRvbWljU3RyaW5nKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5s
aW5lQ2FwYWNpdHk+JiBjaGFyYWN0ZXJzKQogICAgICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5n
SW1wbDo6YWRkKGNoYXJhY3RlcnMuZGF0YSgpLCBjaGFyYWN0ZXJzLnNpemUoKSkpCiAgICB7CiAg
ICB9CgogICAgQXRvbWljU3RyaW5nKEF0b21pY1N0cmluZ0ltcGwqKTsKICAgIEF0b21pY1N0cmlu
ZyhTdHJpbmdJbXBsKik7CiAgICBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICBBdG9t
aWNTdHJpbmcoU3RyaW5nSW1wbCogYmFzZVN0cmluZywgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVk
IGxlbmd0aCk7CgoKICAgIEF0b21pY1N0cmluZyhVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKCiAg
ICBlbnVtIENvbnN0cnVjdEZyb21MaXRlcmFsVGFnIHsgQ29uc3RydWN0RnJvbUxpdGVyYWwgfTsK
ICAgIEF0b21pY1N0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgs
IENvbnN0cnVjdEZyb21MaXRlcmFsVGFnKQogICAgICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5n
SW1wbDo6YWRkTGl0ZXJhbChjaGFyYWN0ZXJzLCBsZW5ndGgpKQogICAgewogICAgfQoKICAgIHRl
bXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KICAgIGlubGluZSBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXykpIEF0b21pY1N0cmluZyhjb25zdCBjaGFyICgmY2hhcmFjdGVy
cylbY2hhcmFjdGVyc0NvdW50XSwgQ29uc3RydWN0RnJvbUxpdGVyYWxUYWcpCiAgICAgICAgOiBt
X3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGRMaXRlcmFsKGNoYXJhY3RlcnMsIGNoYXJhY3Rl
cnNDb3VudCAtIDEpKQogICAgewogICAgICAgIHN0YXRpY19hc3NlcnQoKGNoYXJhY3RlcnNDb3Vu
dCA+IDEpLCAiQXRvbWljU3RyaW5nRnJvbUxpdGVyYWxOb3RFbXB0eSIpOwogICAgICAgIHN0YXRp
Y19hc3NlcnQoKChjaGFyYWN0ZXJzQ291bnQgLSAxIDw9ICgodW5zaWduZWQofjApIC0gc2l6ZW9m
KFN0cmluZ0ltcGwpKSAvIHNpemVvZihMQ2hhcikpKSksICJBdG9taWNTdHJpbmdGcm9tTGl0ZXJh
bENhbm5vdE92ZXJmbG93Iik7CiAgICB9CgoKCiAgICBBdG9taWNTdHJpbmcoY29uc3QgQXRvbWlj
U3RyaW5nJiBvdGhlcikgOiBtX3N0cmluZyhvdGhlci5tX3N0cmluZykgeyB9CiAgICBBdG9taWNT
dHJpbmcoQXRvbWljU3RyaW5nJiYgb3RoZXIpIDogbV9zdHJpbmcoc3RkOjptb3ZlPFdURjo6Q2hl
Y2tNb3ZlUGFyYW1ldGVyPihvdGhlci5tX3N0cmluZykpIHsgfQogICAgQXRvbWljU3RyaW5nJiBv
cGVyYXRvcj0oY29uc3QgQXRvbWljU3RyaW5nJiBvdGhlcikgeyBtX3N0cmluZyA9IG90aGVyLm1f
c3RyaW5nOyByZXR1cm4gKnRoaXM7IH0KICAgIEF0b21pY1N0cmluZyYgb3BlcmF0b3I9KEF0b21p
Y1N0cmluZyYmIG90aGVyKSB7IG1fc3RyaW5nID0gc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFy
YW1ldGVyPihvdGhlci5tX3N0cmluZyk7IHJldHVybiAqdGhpczsgfQoKCiAgICBBdG9taWNTdHJp
bmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRh
YmxlRGVsZXRlZFZhbHVlKSB7IH0KICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CgogICAg
dW5zaWduZWQgZXhpc3RpbmdIYXNoKCkgY29uc3QgeyByZXR1cm4gaXNOdWxsKCkgPyAwIDogaW1w
bCgpLT5leGlzdGluZ0hhc2goKTsgfQoKICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYoKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZzsgfQogICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZzsgfTsKCiAgICBBdG9taWNTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCAqPihtX3N0cmluZy5pbXBsKCkp
OyB9CgogICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pczhCaXQoKTsg
fQogICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcu
Y2hhcmFjdGVyczgoKTsgfQogICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpOyB9CiAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZy5sZW5ndGgoKTsgfQoKICAgIFVDaGFyIG9wZXJhdG9yW10o
dW5zaWduZWQgaW50IGkpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nW2ldOyB9CgogICAgc3RhdGlj
IEF0b21pY1N0cmluZyBudW1iZXIoaW50KTsKICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbnVtYmVy
KHVuc2lnbmVkKTsKICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CgoKICAg
IGJvb2wgY29udGFpbnMoVUNoYXIgYykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMo
Yyk7IH0KICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENoYXIqIHMsIGJvb2wgY2FzZVNlbnNpdGl2
ZSA9IHRydWUpIGNvbnN0CiAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMocywgY2Fz
ZVNlbnNpdGl2ZSk7IH0KICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBzKSBjb25zdAog
ICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHMpOyB9CiAgICBib29sIGNvbnRhaW5z
KGNvbnN0IFN0cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAogICAgICAgIHsgcmV0
dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHMsIGNhc2VTZW5zaXRpdmUpOyB9CiAgICBib29sIGNvbnRh
aW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzKSBjb25zdAogICAgICAgIHsgcmV0
dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uocyk7IH0KCiAgICBzaXplX3Qg
ZmluZChVQ2hhciBjLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
LmZpbmQoYywgc3RhcnQpOyB9CiAgICBzaXplX3QgZmluZChjb25zdCBMQ2hhciogcywgdW5zaWdu
ZWQgc3RhcnQgPSAwLCBib29sIGNhc2VTZW50aXRpdmUgPSB0cnVlKSBjb25zdAogICAgICAgIHsg
cmV0dXJuIG1fc3RyaW5nLmZpbmQocywgc3RhcnQsIGNhc2VTZW50aXRpdmUpOyB9CiAgICBzaXpl
X3QgZmluZChjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0ID0gMCwgYm9vbCBjYXNlU2Vu
dGl0aXZlID0gdHJ1ZSkgY29uc3QKICAgICAgICB7IHJldHVybiBtX3N0cmluZy5maW5kKHMsIHN0
YXJ0LCBjYXNlU2VudGl0aXZlKTsgfQogICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShj
b25zdCBTdHJpbmcmIHMpIGNvbnN0CiAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuZmluZElnbm9y
aW5nQVNDSUlDYXNlKHMpOyB9CiAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0
IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0CiAgICAgICAgeyByZXR1cm4g
bV9zdHJpbmcuZmluZElnbm9yaW5nQVNDSUlDYXNlKHMsIHN0YXJ0T2Zmc2V0KTsgfQogICAgc2l6
ZV90IGZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25l
ZCBzdGFydCA9IDApIGNvbnN0CiAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuZmluZChtYXRjaEZ1
bmN0aW9uLCBzdGFydCk7IH0KCiAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nJiBzKSBj
b25zdAogICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgocyk7IH0KICAgIGJvb2wg
c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgcykgY29uc3QKICAgICAg
ICB7IHJldHVybiBtX3N0cmluZy5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uocyk7IH0KICAg
IGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29u
c3QKICAgICAgICB7IHJldHVybiBtX3N0cmluZy5zdGFydHNXaXRoKHMsIGNhc2VTZW5zaXRpdmUp
OyB9CiAgICBib29sIHN0YXJ0c1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAogICAgICAgIHsg
cmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoY2hhcmFjdGVyKTsgfQogICAgdGVtcGxhdGU8dW5z
aWduZWQgbWF0Y2hMZW5ndGg+CiAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZp
eClbbWF0Y2hMZW5ndGhdLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAogICAgICAg
IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCwgY2FzZVNl
bnNpdGl2ZSk7IH0KCiAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgcykgY29uc3QKICAg
ICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChzKTsgfQogICAgYm9vbCBlbmRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgcykgY29uc3QKICAgICAgICB7IHJldHVybiBt
X3N0cmluZy5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHMpOyB9CiAgICBib29sIGVuZHNXaXRo
KGNvbnN0IFN0cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAogICAgICAgIHsgcmV0
dXJuIG1fc3RyaW5nLmVuZHNXaXRoKHMsIGNhc2VTZW5zaXRpdmUpOyB9CiAgICBib29sIGVuZHNX
aXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRz
V2l0aChjaGFyYWN0ZXIpOyB9CiAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4KICAg
IGJvb2wgZW5kc1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdLCBib29sIGNh
c2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAogICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNX
aXRoPG1hdGNoTGVuZ3RoPihwcmVmaXgsIGNhc2VTZW5zaXRpdmUpOyB9CgogICAgQXRvbWljU3Ry
aW5nIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgY29uc3Q7CiAgICBBdG9taWNTdHJpbmcgY29u
dmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdDsKCiAgICBpbnQgdG9JbnQoYm9vbCogb2sgPSAw
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50b0ludChvayk7IH0KICAgIGRvdWJsZSB0b0RvdWJs
ZShib29sKiBvayA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvRG91YmxlKG9rKTsgfQog
ICAgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRv
RmxvYXQob2spOyB9CiAgICBib29sIHBlcmNlbnRhZ2UoaW50JiBwKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZy5wZXJjZW50YWdlKHApOyB9CgogICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biBtX3N0cmluZy5pc051bGwoKTsgfQogICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcuaXNFbXB0eSgpOyB9CiMgMTc3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZy5oIgogICAgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVVRGOChjb25zdCBjaGFy
Kiwgc2l6ZV90KTsKICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciop
OwoKCgoKCnByaXZhdGU6CgogICAgQXRvbWljU3RyaW5nKEFTQ0lJTGl0ZXJhbCk7CgogICAgZW51
bSBjbGFzcyBDYXNlQ29udmVydFR5cGUgeyBVcHBlciwgTG93ZXIgfTsKICAgIHRlbXBsYXRlPENh
c2VDb252ZXJ0VHlwZT4gQXRvbWljU3RyaW5nIGNvbnZlcnRBU0NJSUNhc2UoKSBjb25zdDsKCiAg
ICBzdGF0aWMgQXRvbWljU3RyaW5nIGZyb21VVEY4SW50ZXJuYWwoY29uc3QgY2hhciosIGNvbnN0
IGNoYXIqKTsKCiAgICBTdHJpbmcgbV9zdHJpbmc7Cn07CgpzdGF0aWNfYXNzZXJ0KHNpemVvZihB
dG9taWNTdHJpbmcpID09IHNpemVvZihTdHJpbmcpLCAiQXRvbWljU3RyaW5nIGFuZCBTdHJpbmcg
bXVzdCBiZSBzYW1lIHNpemUhIik7CgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21p
Y1N0cmluZyYgYSwgY29uc3QgQXRvbWljU3RyaW5nJiBiKSB7IHJldHVybiBhLmltcGwoKSA9PSBi
LmltcGwoKTsgfQpib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgTENo
YXIqKTsKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0
IGNoYXIqIGIpIHsgcmV0dXJuIFdURjo6ZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihiKSk7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNT
dHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGIpIHsgcmV0dXJuIGEuaW1wbCgpICYmIGVx
dWFsKGEuaW1wbCgpLCBiLmRhdGEoKSwgYi5zaXplKCkpOyB9CmlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFs
KGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMQ2hh
ciogYSwgY29uc3QgQXRvbWljU3RyaW5nJiBiKSB7IHJldHVybiBiID09IGE7IH0KaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyBy
ZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQppbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4g
YiA9PSBhOyB9CgppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21pY1N0cmluZyYgYSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBiKSB7IHJldHVybiBhLmltcGwoKSAhPSBiLmltcGwoKTsgfQpp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgTENoYXIq
IGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0
b21pY1N0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gIShhID09IGIpOyB9CmlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIp
IHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9CmlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8VUNoYXI+JiBiKSB7IHJl
dHVybiAhKGEgPT0gYik7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMQ2hhciogYSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBiKSB7IHJldHVybiAhKGIgPT0gYSk7IH0KaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1
cm4gIWVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBWZWN0b3I8VUNoYXI+JiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuICEo
YSA9PSBiKTsgfQoKYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IEF0b21pY1N0cmlu
ZyYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwpib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29u
c3QgQXRvbWljU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CmJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmcmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKYm9vbCBlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IGNoYXIqKTsKCnRlbXBsYXRl
PHVuc2lnbmVkIGxlbmd0aD4gYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25z
dCBBdG9taWNTdHJpbmcmLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7
CgppbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoKQp7Cn0KCmlubGluZSBBdG9taWNT
dHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBMQ2hhciogcykKICAgIDogbV9zdHJpbmcoQXRvbWlj
U3RyaW5nSW1wbDo6YWRkKHMpKQp7Cn0KCmlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmlu
Zyhjb25zdCBjaGFyKiBzKQogICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQocykp
CnsKfQoKaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKGNvbnN0IExDaGFyKiBzLCB1
bnNpZ25lZCBsZW5ndGgpCiAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzLCBs
ZW5ndGgpKQp7Cn0KCmlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBVQ2hh
ciogcywgdW5zaWduZWQgbGVuZ3RoKQogICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjph
ZGQocywgbGVuZ3RoKSkKewp9CgppbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoY29u
c3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKQogICAg
OiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQocywgbGVuZ3RoLCBleGlzdGluZ0hhc2gp
KQp7Cn0KCmlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogcykK
ICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHMpKQp7Cn0KCmlubGluZSBBdG9t
aWNTdHJpbmc6OkF0b21pY1N0cmluZyhBdG9taWNTdHJpbmdJbXBsKiBpbXApCiAgICA6IG1fc3Ry
aW5nKGltcCkKewp9CgppbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoU3RyaW5nSW1w
bCogaW1wKQogICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoaW1wKSkKewp9Cgpp
bmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzKQogICAgOiBt
X3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQocy5pbXBsKCkpKQp7Cn0KCmlubGluZSBBdG9t
aWNTdHJpbmc6OkF0b21pY1N0cmluZyhTdHJpbmdJbXBsKiBiYXNlU3RyaW5nLCB1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgbGVuZ3RoKQogICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjph
ZGQoYmFzZVN0cmluZywgc3RhcnQsIGxlbmd0aCkpCnsKfQoKaW5saW5lIEF0b21pY1N0cmluZzo6
QXRvbWljU3RyaW5nKFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICA6IG1fc3RyaW5nKHVpZCkK
ewp9CiMgMjk5ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oIgpleHRl
cm4gY29uc3QgQXRvbWljU3RyaW5nIG51bGxBdG9tOwpleHRlcm4gY29uc3QgQXRvbWljU3RyaW5n
IGVtcHR5QXRvbTsKZXh0ZXJuIGNvbnN0IEF0b21pY1N0cmluZyB0ZXh0QXRvbTsKZXh0ZXJuIGNv
bnN0IEF0b21pY1N0cmluZyBjb21tZW50QXRvbTsKZXh0ZXJuIGNvbnN0IEF0b21pY1N0cmluZyBz
dGFyQXRvbTsKZXh0ZXJuIGNvbnN0IEF0b21pY1N0cmluZyB4bWxBdG9tOwpleHRlcm4gY29uc3Qg
QXRvbWljU3RyaW5nIHhtbG5zQXRvbTsKZXh0ZXJuIGNvbnN0IEF0b21pY1N0cmluZyB4bGlua0F0
b207CgppbmxpbmUgQXRvbWljU3RyaW5nIEF0b21pY1N0cmluZzo6ZnJvbVVURjgoY29uc3QgY2hh
ciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKewogICAgaWYgKCFjaGFyYWN0ZXJzKQogICAg
ICAgIHJldHVybiBudWxsQXRvbTsKICAgIGlmICghbGVuZ3RoKQogICAgICAgIHJldHVybiBlbXB0
eUF0b207CiAgICByZXR1cm4gZnJvbVVURjhJbnRlcm5hbChjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJz
ICsgbGVuZ3RoKTsKfQoKaW5saW5lIEF0b21pY1N0cmluZyBBdG9taWNTdHJpbmc6OmZyb21VVEY4
KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpCnsKICAgIGlmICghY2hhcmFjdGVycykKICAgICAgICBy
ZXR1cm4gbnVsbEF0b207CiAgICBpZiAoISpjaGFyYWN0ZXJzKQogICAgICAgIHJldHVybiBlbXB0
eUF0b207CiAgICByZXR1cm4gZnJvbVVURjhJbnRlcm5hbChjaGFyYWN0ZXJzLCBudWxscHRyKTsK
fQoKCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7CnRlbXBsYXRlPD4g
c3RydWN0IERlZmF1bHRIYXNoPEF0b21pY1N0cmluZz4gewogICAgdHlwZWRlZiBBdG9taWNTdHJp
bmdIYXNoIEhhc2g7Cn07Cgp0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGlubGluZSBib29sIGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nLCBj
b25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSkKewogICAgcmV0dXJuIGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5zdHJpbmcoKSwgbG93ZXJjYXNlTGV0dGVy
cyk7Cn0KCmlubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgQXRvbWljU3Ry
aW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpCnsKICAgIHJldHVybiBlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKGEuc3RyaW5nKCksIGIuc3RyaW5nKCkpOwp9CgppbmxpbmUgYm9vbCBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKQp7
CiAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhLnN0cmluZygpLCBiKTsKfQoKaW5s
aW5lIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IEF0
b21pY1N0cmluZyYgYikKewogICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYSwgYi5z
dHJpbmcoKSk7Cn0KCmlubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgQXRv
bWljU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKQp7CiAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShhLnN0cmluZygpLCBiKTsKfQoKfQoKCnVzaW5nIFdURjo6QXRvbWljU3RyaW5nOwp1
c2luZyBXVEY6Om51bGxBdG9tOwp1c2luZyBXVEY6OmVtcHR5QXRvbTsKdXNpbmcgV1RGOjp0ZXh0
QXRvbTsKdXNpbmcgV1RGOjpjb21tZW50QXRvbTsKdXNpbmcgV1RGOjpzdGFyQXRvbTsKdXNpbmcg
V1RGOjp4bWxBdG9tOwp1c2luZyBXVEY6OnhtbG5zQXRvbTsKdXNpbmcgV1RGOjp4bGlua0F0b207
CgoKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgiIDEK
IyAyNyAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oIgojZGVm
aW5lIFN0cmluZ0NvbmNhdGVuYXRlX2ggCiMgMzYgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaCIKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCIK
I2RlZmluZSBTdHJpbmdWaWV3X2ggCgoKCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvUmV0YWlu
UHRyLmgiIDEKIyAyMiAiLi4vLi4vU291cmNlL1dURi93dGYvUmV0YWluUHRyLmgiCiNkZWZpbmUg
UmV0YWluUHRyX2ggCiMgMzIgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5o
IiAyCiMgNDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIgojZGVmaW5l
IENIRUNLX1NUUklOR1ZJRVdfTElGRVRJTUUgMAoKCgoKbmFtZXNwYWNlIFdURiB7CgoKCgoKY2xh
c3MgU3RyaW5nVmlldyB7CnB1YmxpYzoKICAgIFN0cmluZ1ZpZXcoKTsKICAgIH5TdHJpbmdWaWV3
KCk7CiAgICBTdHJpbmdWaWV3KFN0cmluZ1ZpZXcmJik7CiAgICBTdHJpbmdWaWV3KGNvbnN0IFN0
cmluZ1ZpZXcmKTsKICAgIFN0cmluZ1ZpZXcmIG9wZXJhdG9yPShTdHJpbmdWaWV3JiYpOwogICAg
U3RyaW5nVmlldyYgb3BlcmF0b3I9KGNvbnN0IFN0cmluZ1ZpZXcmKTsKCiAgICBTdHJpbmdWaWV3
KGNvbnN0IFN0cmluZyYpOwogICAgU3RyaW5nVmlldyhjb25zdCBTdHJpbmdJbXBsJik7CiAgICBT
dHJpbmdWaWV3KGNvbnN0IFN0cmluZ0ltcGwqKTsKICAgIFN0cmluZ1ZpZXcoY29uc3QgTENoYXIq
LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgU3RyaW5nVmlldyhjb25zdCBVQ2hhciosIHVuc2lnbmVk
IGxlbmd0aCk7CgogICAgc3RhdGljIFN0cmluZ1ZpZXcgZW1wdHkoKTsKCiAgICB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdDsKICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwoKICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdDsKICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CgogICAgVUNoYXIg
b3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CgogICAgY2xhc3MgQ29kZVVuaXRzOwog
ICAgQ29kZVVuaXRzIGNvZGVVbml0cygpIGNvbnN0OwoKICAgIGNsYXNzIENvZGVQb2ludHM7CiAg
ICBDb2RlUG9pbnRzIGNvZGVQb2ludHMoKSBjb25zdDsKCiAgICBib29sIGlzOEJpdCgpIGNvbnN0
OwogICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3Q7CiAgICBjb25zdCBVQ2hhciog
Y2hhcmFjdGVyczE2KCkgY29uc3Q7CgogICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAgICBT
dHJpbmcgdG9TdHJpbmdXaXRob3V0Q29weWluZygpIGNvbnN0OwojIDEwMSAiLi4vLi4vU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgiCiAgICBDU3RyaW5nIHV0ZjgoQ29udmVyc2lvbk1v
ZGUgPSBMZW5pZW50Q29udmVyc2lvbikgY29uc3Q7CgogICAgY2xhc3MgVXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzOwogICAgVXBjb252ZXJ0ZWRDaGFyYWN0ZXJzIHVwY29udmVydGVkQ2hhcmFjdGVycygp
IGNvbnN0OwoKICAgIHZvaWQgZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoTENoYXIqKSBjb25z
dDsKICAgIHZvaWQgZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoVUNoYXIqKSBjb25zdDsKCiAg
ICBTdHJpbmdWaWV3IHN1YnN0cmluZyh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoID0g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBjb25zdDsKCiAgICBzaXplX3Qg
ZmluZChVQ2hhciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsKCiAgICBzaXplX3QgZmluZChT
dHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCkgY29uc3Q7CgogICAgc2l6ZV90IGZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CiAgICBzaXplX3QgZmluZElnbm9y
aW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29u
c3Q7CgogICAgYm9vbCBjb250YWlucyhVQ2hhcikgY29uc3Q7CiAgICBib29sIGNvbnRhaW5zSWdu
b3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwogICAgYm9vbCBjb250YWlu
c0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCBzdGFydE9mZnNl
dCkgY29uc3Q7CgogICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsK
ICAgIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmKSBj
b25zdDsKCiAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKICAgIGJv
b2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7Cgog
ICAgaW50IHRvSW50KCkgY29uc3Q7CiAgICBpbnQgdG9JbnQoYm9vbCYgaXNWYWxpZCkgY29uc3Q7
CiAgICBpbnQgdG9JbnRTdHJpY3QoYm9vbCYgaXNWYWxpZCkgY29uc3Q7CiAgICBmbG9hdCB0b0Zs
b2F0KGJvb2wmIGlzVmFsaWQpIGNvbnN0OwoKICAgIHN0YXRpYyB2b2lkIGludmFsaWRhdGUoY29u
c3QgU3RyaW5nSW1wbCYpOwoKICAgIHN0cnVjdCBVbmRlcmx5aW5nU3RyaW5nOwoKcHJpdmF0ZToK
ICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICB2
b2lkIGluaXRpYWxpemUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwoKCgoKCgogICAg
Ym9vbCB1bmRlcmx5aW5nU3RyaW5nSXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAg
IHZvaWQgc2V0VW5kZXJseWluZ1N0cmluZyhjb25zdCBTdHJpbmdJbXBsKikgeyB9CiAgICB2b2lk
IHNldFVuZGVybHlpbmdTdHJpbmcoY29uc3QgU3RyaW5nVmlldyYpIHsgfQoKCiAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgaXMxNkJpdFN0cmluZ0ZsYWcgPSAxdSA8PCAzMTsKCiAgICBjb25zdCB2
b2lkKiBtX2NoYXJhY3RlcnMgeyBudWxscHRyIH07CiAgICB1bnNpZ25lZCBtX2xlbmd0aCB7IDAg
fTsKCgoKCgp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5PiB2b2lkIGFwcGVuZChWZWN0b3I8Q2hhcmFjdGVyVHlwZSwgaW5saW5lQ2FwYWNp
dHk+JiwgU3RyaW5nVmlldyk7Cgpib29sIGVxdWFsKFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOwpi
b29sIGVxdWFsKFN0cmluZ1ZpZXcsIGNvbnN0IExDaGFyKik7CmJvb2wgZXF1YWwoU3RyaW5nVmll
dywgY29uc3QgY2hhciopOwoKYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcs
IFN0cmluZ1ZpZXcpOwpib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgY29u
c3QgY2hhciopOwoKdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBib29sIGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJz
KVtsZW5ndGhdKTsKCmlubGluZSBib29sIG9wZXJhdG9yPT0oU3RyaW5nVmlldyBhLCBTdHJpbmdW
aWV3IGIpIHsgcmV0dXJuIGVxdWFsKGEsIGIpOyB9CmlubGluZSBib29sIG9wZXJhdG9yPT0oU3Ry
aW5nVmlldyBhLCBjb25zdCBMQ2hhciogYikgeyByZXR1cm4gZXF1YWwoYSwgYik7IH0KaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShTdHJpbmdWaWV3IGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuIGVx
dWFsKGEsIGIpOyB9CmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgTENoYXIqIGEsIFN0cmlu
Z1ZpZXcgYikgeyByZXR1cm4gZXF1YWwoYiwgYSk7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBjaGFyKiBhLCBTdHJpbmdWaWV3IGIpIHsgcmV0dXJuIGVxdWFsKGIsIGEpOyB9Cgppbmxp
bmUgYm9vbCBvcGVyYXRvciE9KFN0cmluZ1ZpZXcgYSwgU3RyaW5nVmlldyBiKSB7IHJldHVybiAh
ZXF1YWwoYSwgYik7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShTdHJpbmdWaWV3IGEsIGNvbnN0
IExDaGFyKiBiKSB7IHJldHVybiAhZXF1YWwoYSwgYik7IH0KaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShTdHJpbmdWaWV3IGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuICFlcXVhbChhLCBiKTsgfQpp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExDaGFyKiBhLCBTdHJpbmdWaWV3IGIpIHsgcmV0
dXJuICFlcXVhbChiLCBhKTsgfQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqIGEs
IFN0cmluZ1ZpZXcgYikgeyByZXR1cm4gIWVxdWFsKGIsIGEpOyB9Cgp9CgoKCm5hbWVzcGFjZSBX
VEYgewoKaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoKQp7Cgp9CgppbmxpbmUgU3RyaW5n
Vmlldzo6flN0cmluZ1ZpZXcoKQp7CiAgICBzZXRVbmRlcmx5aW5nU3RyaW5nKG51bGxwdHIpOwp9
CgppbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhTdHJpbmdWaWV3JiYgb3RoZXIpCiAgICA6
IG1fY2hhcmFjdGVycyhvdGhlci5tX2NoYXJhY3RlcnMpCiAgICAsIG1fbGVuZ3RoKG90aGVyLm1f
bGVuZ3RoKQp7CiAgICAoKHZvaWQpMCk7CgogICAgb3RoZXIubV9jaGFyYWN0ZXJzID0gbnVsbHB0
cjsKICAgIG90aGVyLm1fbGVuZ3RoID0gMDsKCiAgICBzZXRVbmRlcmx5aW5nU3RyaW5nKG90aGVy
KTsKICAgIG90aGVyLnNldFVuZGVybHlpbmdTdHJpbmcobnVsbHB0cik7Cn0KCmlubGluZSBTdHJp
bmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0IFN0cmluZ1ZpZXcmIG90aGVyKQogICAgOiBtX2NoYXJh
Y3RlcnMob3RoZXIubV9jaGFyYWN0ZXJzKQogICAgLCBtX2xlbmd0aChvdGhlci5tX2xlbmd0aCkK
ewogICAgKCh2b2lkKTApOwoKICAgIHNldFVuZGVybHlpbmdTdHJpbmcob3RoZXIpOwp9Cgppbmxp
bmUgU3RyaW5nVmlldyYgU3RyaW5nVmlldzo6b3BlcmF0b3I9KFN0cmluZ1ZpZXcmJiBvdGhlcikK
ewogICAgKCh2b2lkKTApOwoKICAgIG1fY2hhcmFjdGVycyA9IG90aGVyLm1fY2hhcmFjdGVyczsK
ICAgIG1fbGVuZ3RoID0gb3RoZXIubV9sZW5ndGg7CgogICAgb3RoZXIubV9jaGFyYWN0ZXJzID0g
bnVsbHB0cjsKICAgIG90aGVyLm1fbGVuZ3RoID0gMDsKCiAgICBzZXRVbmRlcmx5aW5nU3RyaW5n
KG90aGVyKTsKICAgIG90aGVyLnNldFVuZGVybHlpbmdTdHJpbmcobnVsbHB0cik7CgogICAgcmV0
dXJuICp0aGlzOwp9CgppbmxpbmUgU3RyaW5nVmlldyYgU3RyaW5nVmlldzo6b3BlcmF0b3I9KGNv
bnN0IFN0cmluZ1ZpZXcmIG90aGVyKQp7CiAgICAoKHZvaWQpMCk7CgogICAgbV9jaGFyYWN0ZXJz
ID0gb3RoZXIubV9jaGFyYWN0ZXJzOwogICAgbV9sZW5ndGggPSBvdGhlci5tX2xlbmd0aDsKCiAg
ICBzZXRVbmRlcmx5aW5nU3RyaW5nKG90aGVyKTsKCiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGlu
ZSB2b2lkIFN0cmluZ1ZpZXc6OmluaXRpYWxpemUoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCkKewoKCiAgICAoKHZvaWQpMCk7CiAgICBtX2NoYXJhY3RlcnMgPSBjaGFy
YWN0ZXJzOwogICAgbV9sZW5ndGggPSBsZW5ndGg7Cn0KCmlubGluZSB2b2lkIFN0cmluZ1ZpZXc6
OmluaXRpYWxpemUoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKewoK
CiAgICAoKHZvaWQpMCk7CiAgICBtX2NoYXJhY3RlcnMgPSBjaGFyYWN0ZXJzOwogICAgbV9sZW5n
dGggPSBpczE2Qml0U3RyaW5nRmxhZyB8IGxlbmd0aDsKfQoKaW5saW5lIFN0cmluZ1ZpZXc6OlN0
cmluZ1ZpZXcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKewogICAg
aW5pdGlhbGl6ZShjaGFyYWN0ZXJzLCBsZW5ndGgpOwp9CgppbmxpbmUgU3RyaW5nVmlldzo6U3Ry
aW5nVmlldyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQp7CiAgICBp
bml0aWFsaXplKGNoYXJhY3RlcnMsIGxlbmd0aCk7Cn0KCmlubGluZSBTdHJpbmdWaWV3OjpTdHJp
bmdWaWV3KGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZykKewogICAgc2V0VW5kZXJseWluZ1N0cmlu
Zygmc3RyaW5nKTsKICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCiAgICAgICAgaW5pdGlhbGl6ZShz
dHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKICAgIGVsc2UKICAgICAgICBp
bml0aWFsaXplKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKfQoKaW5s
aW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nKQp7CiAg
ICBpZiAoIXN0cmluZykKICAgICAgICByZXR1cm47CgogICAgc2V0VW5kZXJseWluZ1N0cmluZyhz
dHJpbmcpOwogICAgaWYgKHN0cmluZy0+aXM4Qml0KCkpCiAgICAgICAgaW5pdGlhbGl6ZShzdHJp
bmctPmNoYXJhY3RlcnM4KCksIHN0cmluZy0+bGVuZ3RoKCkpOwogICAgZWxzZQogICAgICAgIGlu
aXRpYWxpemUoc3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLT5sZW5ndGgoKSk7Cn0KCmlu
bGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0IFN0cmluZyYgc3RyaW5nKQp7CiAgICBz
ZXRVbmRlcmx5aW5nU3RyaW5nKHN0cmluZy5pbXBsKCkpOwogICAgaWYgKCFzdHJpbmcuaW1wbCgp
KSB7CiAgICAgICAgbV9jaGFyYWN0ZXJzID0gbnVsbHB0cjsKICAgICAgICBtX2xlbmd0aCA9IDA7
CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKHN0cmluZy5pczhCaXQoKSkgewogICAgICAg
IGluaXRpYWxpemUoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CiAgICAg
ICAgcmV0dXJuOwogICAgfQogICAgaW5pdGlhbGl6ZShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0
cmluZy5sZW5ndGgoKSk7Cn0KCmlubGluZSBTdHJpbmdWaWV3IFN0cmluZ1ZpZXc6OmVtcHR5KCkK
ewogICAgcmV0dXJuIFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCIi
KSwgMCk7Cn0KCmlubGluZSBjb25zdCBMQ2hhciogU3RyaW5nVmlldzo6Y2hhcmFjdGVyczgoKSBj
b25zdAp7CiAgICAoKHZvaWQpMCk7CiAgICAoKHZvaWQpMCk7CiAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgTENoYXIqPihtX2NoYXJhY3RlcnMpOwp9CgppbmxpbmUgY29uc3QgVUNoYXIqIFN0
cmluZ1ZpZXc6OmNoYXJhY3RlcnMxNigpIGNvbnN0CnsKICAgICgodm9pZCkwKTsKICAgICgodm9p
ZCkwKTsKICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KG1fY2hhcmFjdGVycyk7
Cn0KCmNsYXNzIFN0cmluZ1ZpZXc6OlVwY29udmVydGVkQ2hhcmFjdGVycyB7CnB1YmxpYzoKICAg
IGV4cGxpY2l0IFVwY29udmVydGVkQ2hhcmFjdGVycyhjb25zdCBTdHJpbmdWaWV3Jik7CiAgICBv
cGVyYXRvciBjb25zdCBVQ2hhciooKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0KICAg
IGNvbnN0IFVDaGFyKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0KcHJpdmF0
ZToKICAgIFZlY3RvcjxVQ2hhciwgMzI+IG1fdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwogICAgY29u
c3QgVUNoYXIqIG1fY2hhcmFjdGVyczsKfTsKCmlubGluZSBTdHJpbmdWaWV3OjpVcGNvbnZlcnRl
ZENoYXJhY3RlcnMgU3RyaW5nVmlldzo6dXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkgY29uc3QKewog
ICAgcmV0dXJuIFVwY29udmVydGVkQ2hhcmFjdGVycygqdGhpcyk7Cn0KCmlubGluZSBib29sIFN0
cmluZ1ZpZXc6OmlzTnVsbCgpIGNvbnN0CnsKICAgIHJldHVybiAhbV9jaGFyYWN0ZXJzOwp9Cgpp
bmxpbmUgYm9vbCBTdHJpbmdWaWV3Ojppc0VtcHR5KCkgY29uc3QKewogICAgcmV0dXJuICFsZW5n
dGgoKTsKfQoKaW5saW5lIHVuc2lnbmVkIFN0cmluZ1ZpZXc6Omxlbmd0aCgpIGNvbnN0CnsKICAg
IHJldHVybiBtX2xlbmd0aCAmIH5pczE2Qml0U3RyaW5nRmxhZzsKfQoKaW5saW5lIFN0cmluZ1Zp
ZXc6Om9wZXJhdG9yIGJvb2woKSBjb25zdAp7CiAgICByZXR1cm4gIWlzTnVsbCgpOwp9Cgppbmxp
bmUgYm9vbCBTdHJpbmdWaWV3OjppczhCaXQoKSBjb25zdAp7CiAgICByZXR1cm4gIShtX2xlbmd0
aCAmIGlzMTZCaXRTdHJpbmdGbGFnKTsKfQoKaW5saW5lIFN0cmluZ1ZpZXcgU3RyaW5nVmlldzo6
c3Vic3RyaW5nKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CnsKICAgIGlm
IChzdGFydCA+PSB0aGlzLT5sZW5ndGgoKSkKICAgICAgICByZXR1cm4gZW1wdHkoKTsKICAgIHVu
c2lnbmVkIG1heExlbmd0aCA9IHRoaXMtPmxlbmd0aCgpIC0gc3RhcnQ7CgogICAgaWYgKGxlbmd0
aCA+PSBtYXhMZW5ndGgpIHsKICAgICAgICBpZiAoIXN0YXJ0KQogICAgICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICAgICAgbGVuZ3RoID0gbWF4TGVuZ3RoOwogICAgfQoKICAgIGlmIChpczhCaXQo
KSkgewogICAgICAgIFN0cmluZ1ZpZXcgcmVzdWx0KGNoYXJhY3RlcnM4KCkgKyBzdGFydCwgbGVu
Z3RoKTsKICAgICAgICByZXN1bHQuc2V0VW5kZXJseWluZ1N0cmluZygqdGhpcyk7CiAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIFN0cmluZ1ZpZXcgcmVzdWx0KGNoYXJhY3RlcnMxNigp
ICsgc3RhcnQsIGxlbmd0aCk7CiAgICByZXN1bHQuc2V0VW5kZXJseWluZ1N0cmluZygqdGhpcyk7
CiAgICByZXR1cm4gcmVzdWx0Owp9CgppbmxpbmUgVUNoYXIgU3RyaW5nVmlldzo6b3BlcmF0b3Jb
XSh1bnNpZ25lZCBpbmRleCkgY29uc3QKewogICAgKCh2b2lkKTApOwogICAgaWYgKGlzOEJpdCgp
KQogICAgICAgIHJldHVybiBjaGFyYWN0ZXJzOCgpW2luZGV4XTsKICAgIHJldHVybiBjaGFyYWN0
ZXJzMTYoKVtpbmRleF07Cn0KCmlubGluZSBib29sIFN0cmluZ1ZpZXc6OmNvbnRhaW5zKFVDaGFy
IGNoYXJhY3RlcikgY29uc3QKewogICAgcmV0dXJuIGZpbmQoY2hhcmFjdGVyKSAhPSBub3RGb3Vu
ZDsKfQoKaW5saW5lIHZvaWQgU3RyaW5nVmlldzo6Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQo
TENoYXIqIGRlc3RpbmF0aW9uKSBjb25zdAp7CiAgICAoKHZvaWQpMCk7CiAgICBhdXRvIGNoYXJh
Y3RlcnM4ID0gdGhpcy0+Y2hhcmFjdGVyczgoKTsKICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2xlbmd0aDsgKytpKQogICAgICAgIGRlc3RpbmF0aW9uW2ldID0gY2hhcmFjdGVyczhbaV07
Cn0KCmlubGluZSB2b2lkIFN0cmluZ1ZpZXc6OmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KFVD
aGFyKiBkZXN0aW5hdGlvbikgY29uc3QKewogICAgaWYgKGlzOEJpdCgpKSB7CiAgICAgICAgYXV0
byBjaGFyYWN0ZXJzOCA9IHRoaXMtPmNoYXJhY3RlcnM4KCk7CiAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyArK2kpCiAgICAgICAgICAgIGRlc3RpbmF0aW9uW2ldID0g
Y2hhcmFjdGVyczhbaV07CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgYXV0byBjaGFyYWN0ZXJz
MTYgPSB0aGlzLT5jaGFyYWN0ZXJzMTYoKTsKICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxl
bmd0aCgpOwogICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAg
IGRlc3RpbmF0aW9uW2ldID0gY2hhcmFjdGVyczE2W2ldOwp9CgppbmxpbmUgU3RyaW5nVmlldzo6
VXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOjpVcGNvbnZlcnRlZENoYXJhY3RlcnMoY29uc3QgU3RyaW5n
VmlldyYgc3RyaW5nKQp7CiAgICBpZiAoIXN0cmluZy5pczhCaXQoKSkgewogICAgICAgIG1fY2hh
cmFjdGVycyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAg
ICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczggPSBzdHJpbmcuY2hhcmFjdGVyczgoKTsKICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHN0cmluZy5tX2xlbmd0aDsKICAgIG1fdXBjb252ZXJ0ZWRDaGFyYWN0
ZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICBtX3VwY29udmVydGVkQ2hhcmFjdGVycy51bmNo
ZWNrZWRBcHBlbmQoY2hhcmFjdGVyczhbaV0pOwogICAgbV9jaGFyYWN0ZXJzID0gbV91cGNvbnZl
cnRlZENoYXJhY3RlcnMuZGF0YSgpOwp9CgppbmxpbmUgU3RyaW5nIFN0cmluZ1ZpZXc6OnRvU3Ry
aW5nKCkgY29uc3QKewogICAgaWYgKGlzOEJpdCgpKQogICAgICAgIHJldHVybiBTdHJpbmcoY2hh
cmFjdGVyczgoKSwgbV9sZW5ndGgpOwogICAgcmV0dXJuIFN0cmluZyhjaGFyYWN0ZXJzMTYoKSwg
bGVuZ3RoKCkpOwp9CgppbmxpbmUgZmxvYXQgU3RyaW5nVmlldzo6dG9GbG9hdChib29sJiBpc1Zh
bGlkKSBjb25zdAp7CiAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNU
b0Zsb2F0KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7CiAgICByZXR1cm4gY2hh
cmFjdGVyc1RvRmxvYXQoY2hhcmFjdGVyczE2KCksIGxlbmd0aCgpLCAmaXNWYWxpZCk7Cn0KCmlu
bGluZSBpbnQgU3RyaW5nVmlldzo6dG9JbnQoKSBjb25zdAp7CiAgICBib29sIGlzVmFsaWQ7CiAg
ICByZXR1cm4gdG9JbnQoaXNWYWxpZCk7Cn0KCmlubGluZSBpbnQgU3RyaW5nVmlldzo6dG9JbnQo
Ym9vbCYgaXNWYWxpZCkgY29uc3QKewogICAgaWYgKGlzOEJpdCgpKQogICAgICAgIHJldHVybiBj
aGFyYWN0ZXJzVG9JbnQoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsKICAgIHJl
dHVybiBjaGFyYWN0ZXJzVG9JbnQoY2hhcmFjdGVyczE2KCksIGxlbmd0aCgpLCAmaXNWYWxpZCk7
Cn0KCmlubGluZSBpbnQgU3RyaW5nVmlldzo6dG9JbnRTdHJpY3QoYm9vbCYgaXNWYWxpZCkgY29u
c3QKewogICAgaWYgKGlzOEJpdCgpKQogICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRTdHJp
Y3QoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsKICAgIHJldHVybiBjaGFyYWN0
ZXJzVG9JbnRTdHJpY3QoY2hhcmFjdGVyczE2KCksIGxlbmd0aCgpLCAmaXNWYWxpZCk7Cn0KCmlu
bGluZSBTdHJpbmcgU3RyaW5nVmlldzo6dG9TdHJpbmdXaXRob3V0Q29weWluZygpIGNvbnN0CnsK
ICAgIGlmIChpczhCaXQoKSkKICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91
dENvcHlpbmcoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgpOwogICAgcmV0dXJuIFN0cmluZ0ltcGw6
OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSk7Cn0KCmlubGlu
ZSBzaXplX3QgU3RyaW5nVmlldzo6ZmluZChVQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0
KSBjb25zdAp7CiAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFy
YWN0ZXJzOCgpLCBtX2xlbmd0aCwgY2hhcmFjdGVyLCBzdGFydCk7CiAgICByZXR1cm4gV1RGOjpm
aW5kKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgY2hhcmFjdGVyLCBzdGFydCk7Cn0KCgppbmxp
bmUgdm9pZCBTdHJpbmdWaWV3OjppbnZhbGlkYXRlKGNvbnN0IFN0cmluZ0ltcGwmKQp7Cn0KCgp0
ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlPiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjsKCnRl
bXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVmlldz4gewpwdWJsaWM6CiAg
ICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdWaWV3PihTdHJpbmdWaWV3IHN0cmluZykKICAgICAg
ICA6IG1fc3RyaW5nKHN0cmluZykKICAgIHsKICAgIH0KCiAgICB1bnNpZ25lZCBsZW5ndGgoKSB7
IHJldHVybiBtX3N0cmluZy5sZW5ndGgoKTsgfQogICAgYm9vbCBpczhCaXQoKSB7IHJldHVybiBt
X3N0cmluZy5pczhCaXQoKTsgfQogICAgdm9pZCB3cml0ZVRvKExDaGFyKiBkZXN0aW5hdGlvbikg
eyBtX3N0cmluZy5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkZXN0aW5hdGlvbik7IH0KICAg
IHZvaWQgd3JpdGVUbyhVQ2hhciogZGVzdGluYXRpb24pIHsgbV9zdHJpbmcuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQoZGVzdGluYXRpb24pOyB9CgogICAgU3RyaW5nIHRvU3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmcudG9TdHJpbmcoKTsgfQoKcHJpdmF0ZToKICAgIFN0cmluZ1Zp
ZXcgbV9zdHJpbmc7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+IHZvaWQgYXBwZW5kKFZlY3RvcjxDaGFyYWN0ZXJUeXBlLCBpbmxpbmVD
YXBhY2l0eT4mIGJ1ZmZlciwgU3RyaW5nVmlldyBzdHJpbmcpCnsKICAgIHVuc2lnbmVkIG9sZFNp
emUgPSBidWZmZXIuc2l6ZSgpOwogICAgYnVmZmVyLmdyb3cob2xkU2l6ZSArIHN0cmluZy5sZW5n
dGgoKSk7CiAgICBzdHJpbmcuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyLmRhdGEo
KSArIG9sZFNpemUpOwp9CgppbmxpbmUgYm9vbCBlcXVhbChTdHJpbmdWaWV3IGEsIFN0cmluZ1Zp
ZXcgYikKewogICAgcmV0dXJuIGVxdWFsQ29tbW9uKGEsIGIpOwp9CgppbmxpbmUgYm9vbCBlcXVh
bChTdHJpbmdWaWV3IGEsIGNvbnN0IExDaGFyKiBiKQp7CiAgICBpZiAoIWIpCiAgICAgICAgcmV0
dXJuICFhLmlzRW1wdHkoKTsKICAgIGlmIChhLmlzRW1wdHkoKSkKICAgICAgICByZXR1cm4gIWI7
CiAgICB1bnNpZ25lZCBhTGVuZ3RoID0gYS5sZW5ndGgoKTsKICAgIGlmIChhLmlzOEJpdCgpKQog
ICAgICAgIHJldHVybiBlcXVhbChhLmNoYXJhY3RlcnM4KCksIGIsIGFMZW5ndGgpOwogICAgcmV0
dXJuIGVxdWFsKGEuY2hhcmFjdGVyczE2KCksIGIsIGFMZW5ndGgpOwp9CgppbmxpbmUgYm9vbCBl
cXVhbChTdHJpbmdWaWV3IGEsIGNvbnN0IGNoYXIqIGIpCnsKICAgIHJldHVybiBlcXVhbChhLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOwp9CgppbmxpbmUgYm9vbCBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgYSwgU3RyaW5nVmlldyBiKQp7CiAgICByZXR1cm4g
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1vbihhLCBiKTsKfQoKaW5saW5lIGJvb2wgZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IGEsIGNvbnN0IGNoYXIqIGIpCnsKICAgIHJldHVy
biBlcXVhbElnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKGEsIGIpOwp9CgpjbGFzcyBTdHJpbmdWaWV3
OjpDb2RlUG9pbnRzIHsKcHVibGljOgogICAgZXhwbGljaXQgQ29kZVBvaW50cyhjb25zdCBTdHJp
bmdWaWV3Jik7CgogICAgY2xhc3MgSXRlcmF0b3I7CiAgICBJdGVyYXRvciBiZWdpbigpIGNvbnN0
OwogICAgSXRlcmF0b3IgZW5kKCkgY29uc3Q7Cgpwcml2YXRlOgogICAgU3RyaW5nVmlldyBtX3N0
cmluZ1ZpZXc7Cn07CgpjbGFzcyBTdHJpbmdWaWV3OjpDb2RlVW5pdHMgewpwdWJsaWM6CiAgICBl
eHBsaWNpdCBDb2RlVW5pdHMoY29uc3QgU3RyaW5nVmlldyYpOwoKICAgIGNsYXNzIEl0ZXJhdG9y
OwogICAgSXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKICAgIEl0ZXJhdG9yIGVuZCgpIGNvbnN0OwoK
cHJpdmF0ZToKICAgIFN0cmluZ1ZpZXcgbV9zdHJpbmdWaWV3Owp9OwoKY2xhc3MgU3RyaW5nVmll
dzo6Q29kZVBvaW50czo6SXRlcmF0b3IgewpwdWJsaWM6CiAgICBJdGVyYXRvcihjb25zdCBTdHJp
bmdWaWV3JiwgdW5zaWduZWQgaW5kZXgpOwoKICAgIFVDaGFyMzIgb3BlcmF0b3IqKCkgY29uc3Q7
CiAgICBJdGVyYXRvciYgb3BlcmF0b3IrKygpOwoKICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJ
dGVyYXRvciYpIGNvbnN0OwogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJikgY29u
c3Q7Cgpwcml2YXRlOgogICAgY29uc3QgU3RyaW5nVmlldyYgbV9zdHJpbmdWaWV3OwogICAgbXV0
YWJsZSB1bnNpZ25lZCBtX2luZGV4OwoKCgp9OwoKY2xhc3MgU3RyaW5nVmlldzo6Q29kZVVuaXRz
OjpJdGVyYXRvciB7CnB1YmxpYzoKICAgIEl0ZXJhdG9yKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNp
Z25lZCBpbmRleCk7CgogICAgVUNoYXIgb3BlcmF0b3IqKCkgY29uc3Q7CiAgICBJdGVyYXRvciYg
b3BlcmF0b3IrKygpOwoKICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYpIGNvbnN0
OwogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJikgY29uc3Q7Cgpwcml2YXRlOgog
ICAgY29uc3QgU3RyaW5nVmlldyYgbV9zdHJpbmdWaWV3OwogICAgdW5zaWduZWQgbV9pbmRleDsK
fTsKCmlubGluZSBhdXRvIFN0cmluZ1ZpZXc6OmNvZGVQb2ludHMoKSBjb25zdCAtPiBDb2RlUG9p
bnRzCnsKICAgIHJldHVybiBDb2RlUG9pbnRzKCp0aGlzKTsKfQoKaW5saW5lIGF1dG8gU3RyaW5n
Vmlldzo6Y29kZVVuaXRzKCkgY29uc3QgLT4gQ29kZVVuaXRzCnsKICAgIHJldHVybiBDb2RlVW5p
dHMoKnRoaXMpOwp9CgppbmxpbmUgU3RyaW5nVmlldzo6Q29kZVBvaW50czo6Q29kZVBvaW50cyhj
b25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3KQogICAgOiBtX3N0cmluZ1ZpZXcoc3RyaW5nVmll
dykKewp9CgppbmxpbmUgU3RyaW5nVmlldzo6Q29kZVBvaW50czo6SXRlcmF0b3I6Okl0ZXJhdG9y
KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIHVuc2lnbmVkIGluZGV4KQogICAgOiBtX3N0
cmluZ1ZpZXcoc3RyaW5nVmlldykKICAgICwgbV9pbmRleChpbmRleCkKewp9CgppbmxpbmUgYXV0
byBTdHJpbmdWaWV3OjpDb2RlUG9pbnRzOjpJdGVyYXRvcjo6b3BlcmF0b3IrKygpIC0+IEl0ZXJh
dG9yJgp7CgoKCgogICAgcmV0dXJuICp0aGlzOwp9CgppbmxpbmUgVUNoYXIzMiBTdHJpbmdWaWV3
OjpDb2RlUG9pbnRzOjpJdGVyYXRvcjo6b3BlcmF0b3IqKCkgY29uc3QKewoKCgoKCiAgICBpZiAo
bV9zdHJpbmdWaWV3LmlzOEJpdCgpKQogICAgICAgIHJldHVybiBtX3N0cmluZ1ZpZXcuY2hhcmFj
dGVyczgoKVttX2luZGV4KytdOwoKICAgIFVDaGFyMzIgY29kZVBvaW50OwogICAgeyAoY29kZVBv
aW50KT0obV9zdHJpbmdWaWV3LmNoYXJhY3RlcnMxNigpKVsobV9pbmRleCkrK107IGlmKCgoKGNv
ZGVQb2ludCkmMHhmZmZmZmMwMCk9PTB4ZDgwMCkpIHsgdWludDE2X3QgX19jMjsgaWYoKG1faW5k
ZXgpIT0obV9zdHJpbmdWaWV3Lmxlbmd0aCgpKSAmJiAoKChfX2MyPShtX3N0cmluZ1ZpZXcuY2hh
cmFjdGVyczE2KCkpWyhtX2luZGV4KV0pJjB4ZmZmZmZjMDApPT0weGRjMDApKSB7ICsrKG1faW5k
ZXgpOyAoY29kZVBvaW50KT0oKChVQ2hhcjMyKSgoY29kZVBvaW50KSk8PDEwVUwpKyhVQ2hhcjMy
KShfX2MyKS0oKDB4ZDgwMDw8MTBVTCkrMHhkYzAwLTB4MTAwMDApKTsgfSB9IH07CiAgICByZXR1
cm4gY29kZVBvaW50Owp9CgppbmxpbmUgYm9vbCBTdHJpbmdWaWV3OjpDb2RlUG9pbnRzOjpJdGVy
YXRvcjo6b3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0CnsKICAgICgodm9p
ZCkwKTsKICAgICgodm9pZCkwKTsKICAgIHJldHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7
Cn0KCmlubGluZSBib29sIFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yOjpvcGVyYXRv
ciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKewogICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOwp9CgppbmxpbmUgYXV0byBTdHJpbmdWaWV3OjpDb2RlUG9pbnRzOjpiZWdpbigpIGNv
bnN0IC0+IEl0ZXJhdG9yCnsKICAgIHJldHVybiBJdGVyYXRvcihtX3N0cmluZ1ZpZXcsIDApOwp9
CgppbmxpbmUgYXV0byBTdHJpbmdWaWV3OjpDb2RlUG9pbnRzOjplbmQoKSBjb25zdCAtPiBJdGVy
YXRvcgp7CiAgICByZXR1cm4gSXRlcmF0b3IobV9zdHJpbmdWaWV3LCBtX3N0cmluZ1ZpZXcubGVu
Z3RoKCkpOwp9CgppbmxpbmUgU3RyaW5nVmlldzo6Q29kZVVuaXRzOjpDb2RlVW5pdHMoY29uc3Qg
U3RyaW5nVmlldyYgc3RyaW5nVmlldykKICAgIDogbV9zdHJpbmdWaWV3KHN0cmluZ1ZpZXcpCnsK
fQoKaW5saW5lIFN0cmluZ1ZpZXc6OkNvZGVVbml0czo6SXRlcmF0b3I6Okl0ZXJhdG9yKGNvbnN0
IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIHVuc2lnbmVkIGluZGV4KQogICAgOiBtX3N0cmluZ1Zp
ZXcoc3RyaW5nVmlldykKICAgICwgbV9pbmRleChpbmRleCkKewp9CgppbmxpbmUgYXV0byBTdHJp
bmdWaWV3OjpDb2RlVW5pdHM6Okl0ZXJhdG9yOjpvcGVyYXRvcisrKCkgLT4gSXRlcmF0b3ImCnsK
ICAgICsrbV9pbmRleDsKICAgIHJldHVybiAqdGhpczsKfQoKaW5saW5lIFVDaGFyIFN0cmluZ1Zp
ZXc6OkNvZGVVbml0czo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNvbnN0CnsKICAgIHJldHVybiBt
X3N0cmluZ1ZpZXdbbV9pbmRleF07Cn0KCmlubGluZSBib29sIFN0cmluZ1ZpZXc6OkNvZGVVbml0
czo6SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBjb25zdAp7CiAg
ICAoKHZvaWQpMCk7CiAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4Owp9Cgppbmxp
bmUgYm9vbCBTdHJpbmdWaWV3OjpDb2RlVW5pdHM6Okl0ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0
IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKewogICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwp9
CgppbmxpbmUgYXV0byBTdHJpbmdWaWV3OjpDb2RlVW5pdHM6OmJlZ2luKCkgY29uc3QgLT4gSXRl
cmF0b3IKewogICAgcmV0dXJuIEl0ZXJhdG9yKG1fc3RyaW5nVmlldywgMCk7Cn0KCmlubGluZSBh
dXRvIFN0cmluZ1ZpZXc6OkNvZGVVbml0czo6ZW5kKCkgY29uc3QgLT4gSXRlcmF0b3IKewogICAg
cmV0dXJuIEl0ZXJhdG9yKG1fc3RyaW5nVmlldywgbV9zdHJpbmdWaWV3Lmxlbmd0aCgpKTsKfQoK
dGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRl
cnMpW2xlbmd0aF0pCnsKICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNv
bW1vbihzdHJpbmcsIGxvd2VyY2FzZUxldHRlcnMpOwp9Cgp9Cgp1c2luZyBXVEY6OmFwcGVuZDsK
dXNpbmcgV1RGOjplcXVhbDsKdXNpbmcgV1RGOjpTdHJpbmdWaWV3OwojIDM3ICIuLi8uLi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgiIDIKCgoKCgojZGVmaW5lIFdURl9T
VFJJTkdUWVBFQURBUFRFUl9DT1BJRURfV1RGX1NUUklORygpICgodm9pZCkwKQoKCm5hbWVzcGFj
ZSBXVEYgewoKdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZT4KY2xhc3MgU3RyaW5nVHlwZUFk
YXB0ZXI7Cgp0ZW1wbGF0ZTw+CmNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPGNoYXI+IHsKcHVibGlj
OgogICAgU3RyaW5nVHlwZUFkYXB0ZXI8Y2hhcj4oY2hhciBjaGFyYWN0ZXIpCiAgICAgICAgOiBt
X2NoYXJhY3RlcihjaGFyYWN0ZXIpCiAgICB7CiAgICB9CgogICAgdW5zaWduZWQgbGVuZ3RoKCkg
eyByZXR1cm4gMTsgfQogICAgYm9vbCBpczhCaXQoKSB7IHJldHVybiB0cnVlOyB9CgogICAgdm9p
ZCB3cml0ZVRvKExDaGFyKiBkZXN0aW5hdGlvbikgY29uc3QKICAgIHsKICAgICAgICAqZGVzdGlu
YXRpb24gPSBtX2NoYXJhY3RlcjsKICAgIH0KCiAgICB2b2lkIHdyaXRlVG8oVUNoYXIqIGRlc3Rp
bmF0aW9uKSBjb25zdAogICAgewogICAgICAgICpkZXN0aW5hdGlvbiA9IG1fY2hhcmFjdGVyOwog
ICAgfQoKICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygmbV9jaGFy
YWN0ZXIsIDEpOyB9Cgpwcml2YXRlOgogICAgY2hhciBtX2NoYXJhY3RlcjsKfTsKCnRlbXBsYXRl
PD4KY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8VUNoYXI+IHsKcHVibGljOgogICAgU3RyaW5nVHlw
ZUFkYXB0ZXI8VUNoYXI+KFVDaGFyIGNoYXJhY3RlcikKICAgICAgICA6IG1fY2hhcmFjdGVyKGNo
YXJhY3RlcikKICAgIHsKICAgIH0KCiAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVy
biAxOyB9CiAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyIDw9IDB4
ZmY7IH0KCiAgICB2b2lkIHdyaXRlVG8oTENoYXIqIGRlc3RpbmF0aW9uKSBjb25zdAogICAgewog
ICAgICAgICgodm9pZCkwKTsKICAgICAgICAqZGVzdGluYXRpb24gPSBzdGF0aWNfY2FzdDxMQ2hh
cj4obV9jaGFyYWN0ZXIpOwogICAgfQoKICAgIHZvaWQgd3JpdGVUbyhVQ2hhciogZGVzdGluYXRp
b24pIGNvbnN0CiAgICB7CiAgICAgICAgKmRlc3RpbmF0aW9uID0gbV9jaGFyYWN0ZXI7CiAgICB9
CgogICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCZtX2NoYXJhY3Rl
ciwgMSk7IH0KCnByaXZhdGU6CiAgICBVQ2hhciBtX2NoYXJhY3RlcjsKfTsKCnRlbXBsYXRlPD4K
Y2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8Y29uc3QgTENoYXIqPiB7CnB1YmxpYzoKICAgIFN0cmlu
Z1R5cGVBZGFwdGVyKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKQogICAgICAgIDogbV9jaGFyYWN0
ZXJzKGNoYXJhY3RlcnMpCiAgICAgICAgLCBtX2xlbmd0aChzdHJsZW4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oY2hhcmFjdGVycykpKQogICAgewogICAgfQoKICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICBib29sIGlzOEJpdCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KCiAgICB2b2lkIHdyaXRlVG8oTENoYXIqIGRlc3RpbmF0aW9uKSBj
b25zdAogICAgewogICAgICAgIFN0cmluZ1ZpZXcobV9jaGFyYWN0ZXJzLCBtX2xlbmd0aCkuZ2V0
Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGVzdGluYXRpb24pOwogICAgfQoKICAgIHZvaWQgd3Jp
dGVUbyhVQ2hhciogZGVzdGluYXRpb24pIGNvbnN0CiAgICB7CiAgICAgICAgU3RyaW5nVmlldyht
X2NoYXJhY3RlcnMsIG1fbGVuZ3RoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkZXN0aW5h
dGlvbik7CiAgICB9CgogICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5n
KG1fY2hhcmFjdGVycywgbV9sZW5ndGgpOyB9Cgpwcml2YXRlOgogICAgY29uc3QgTENoYXIqIG1f
Y2hhcmFjdGVyczsKICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwp9OwoKdGVtcGxhdGU8PgpjbGFzcyBT
dHJpbmdUeXBlQWRhcHRlcjxjb25zdCBVQ2hhcio+IHsKcHVibGljOgogICAgU3RyaW5nVHlwZUFk
YXB0ZXIoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMpCiAgICAgICAgOiBtX2NoYXJhY3RlcnMoY2hh
cmFjdGVycykKICAgIHsKICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSAwOwogICAgICAgIHdoaWxl
IChtX2NoYXJhY3RlcnNbbGVuZ3RoXSkKICAgICAgICAgICAgKytsZW5ndGg7CgogICAgICAgIGlm
IChsZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAg
ICAgIFdURkNyYXNoKCk7CgogICAgICAgIG1fbGVuZ3RoID0gbGVuZ3RoOwogICAgfQoKICAgIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICBib29sIGlzOEJp
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CgogICAgX19hdHRyaWJ1dGUoKF9fbm9yZXR1cm5f
XykpIHZvaWQgd3JpdGVUbyhMQ2hhciopIGNvbnN0CiAgICB7CiAgICAgICAgV1RGQ3Jhc2goKTsK
ICAgIH0KCiAgICB2b2lkIHdyaXRlVG8oVUNoYXIqIGRlc3RpbmF0aW9uKSBjb25zdAogICAgewog
ICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiwgbV9jaGFyYWN0ZXJzLCBtX2xlbmd0aCAqIHNpemVv
ZihVQ2hhcikpOwogICAgfQoKICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZyhtX2NoYXJhY3RlcnMsIG1fbGVuZ3RoKTsgfQoKcHJpdmF0ZToKICAgIGNvbnN0IFVDaGFy
KiBtX2NoYXJhY3RlcnM7CiAgICB1bnNpZ25lZCBtX2xlbmd0aDsKfTsKCnRlbXBsYXRlPD4KY2xh
c3MgU3RyaW5nVHlwZUFkYXB0ZXI8Y29uc3QgY2hhcio+IDogcHVibGljIFN0cmluZ1R5cGVBZGFw
dGVyPGNvbnN0IExDaGFyKj4gewpwdWJsaWM6CiAgICBTdHJpbmdUeXBlQWRhcHRlcihjb25zdCBj
aGFyKiBjaGFyYWN0ZXJzKQogICAgICAgIDogU3RyaW5nVHlwZUFkYXB0ZXI8Y29uc3QgTENoYXIq
PihyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycykpCiAgICB7CiAgICB9
Cn07Cgp0ZW1wbGF0ZTw+CmNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPGNoYXIqPiA6IHB1YmxpYyBT
dHJpbmdUeXBlQWRhcHRlcjxjb25zdCBjaGFyKj4gewpwdWJsaWM6CiAgICBTdHJpbmdUeXBlQWRh
cHRlcihjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKQogICAgICAgIDogU3RyaW5nVHlwZUFkYXB0ZXI8
Y29uc3QgY2hhcio+KGNoYXJhY3RlcnMpCiAgICB7CiAgICB9Cn07Cgp0ZW1wbGF0ZTw+CmNsYXNz
IFN0cmluZ1R5cGVBZGFwdGVyPEFTQ0lJTGl0ZXJhbD4gOiBwdWJsaWMgU3RyaW5nVHlwZUFkYXB0
ZXI8Y29uc3QgY2hhcio+IHsKcHVibGljOgogICAgU3RyaW5nVHlwZUFkYXB0ZXIoQVNDSUlMaXRl
cmFsIGNoYXJhY3RlcnMpCiAgICAgICAgOiBTdHJpbmdUeXBlQWRhcHRlcjxjb25zdCBjaGFyKj4o
Y2hhcmFjdGVycykKICAgIHsKICAgIH0KfTsKCnRlbXBsYXRlPD4KY2xhc3MgU3RyaW5nVHlwZUFk
YXB0ZXI8VmVjdG9yPGNoYXI+PiB7CnB1YmxpYzoKICAgIFN0cmluZ1R5cGVBZGFwdGVyKGNvbnN0
IFZlY3RvcjxjaGFyPiYgdmVjdG9yKQogICAgICAgIDogbV92ZWN0b3IodmVjdG9yKQogICAgewog
ICAgfQoKICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5zaXplKCk7
IH0KICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQoKICAgIHZvaWQgd3Jp
dGVUbyhMQ2hhciogZGVzdGluYXRpb24pIGNvbnN0CiAgICB7CiAgICAgICAgU3RyaW5nVmlldyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV92ZWN0b3IuZGF0YSgpKSwgbV92ZWN0b3Iu
c2l6ZSgpKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkZXN0aW5hdGlvbik7CiAgICB9Cgog
ICAgdm9pZCB3cml0ZVRvKFVDaGFyKiBkZXN0aW5hdGlvbikgY29uc3QKICAgIHsKICAgICAgICBT
dHJpbmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtX3ZlY3Rvci5kYXRhKCkp
LCBtX3ZlY3Rvci5zaXplKCkpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRlc3RpbmF0aW9u
KTsKICAgIH0KCiAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcobV92
ZWN0b3IuZGF0YSgpLCBtX3ZlY3Rvci5zaXplKCkpOyB9Cgpwcml2YXRlOgogICAgY29uc3QgVmVj
dG9yPGNoYXI+JiBtX3ZlY3RvcjsKfTsKCnRlbXBsYXRlPD4KY2xhc3MgU3RyaW5nVHlwZUFkYXB0
ZXI8U3RyaW5nPiB7CnB1YmxpYzoKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZz4oY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpCiAgICB7CiAgICB9Cgog
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcubGVuZ3RoKCk7IH0K
ICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCkgfHwgbV9z
dHJpbmcuaXM4Qml0KCk7IH0KCiAgICB2b2lkIHdyaXRlVG8oTENoYXIqIGRlc3RpbmF0aW9uKSBj
b25zdAogICAgewogICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGRlc3RpbmF0aW9uKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICB9CgogICAgdm9p
ZCB3cml0ZVRvKFVDaGFyKiBkZXN0aW5hdGlvbikgY29uc3QKICAgIHsKICAgICAgICBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkZXN0aW5hdGlvbik7CiAg
ICAgICAgKCh2b2lkKTApOwogICAgfQoKICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nOyB9Cgpwcml2YXRlOgogICAgY29uc3QgU3RyaW5nJiBtX3N0cmluZzsKfTsK
CnRlbXBsYXRlPD4KY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8QXRvbWljU3RyaW5nPiA6IHB1Ymxp
YyBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmc+IHsKcHVibGljOgogICAgU3RyaW5nVHlwZUFkYXB0
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgOiBTdHJpbmdUeXBlQWRhcHRl
cjxTdHJpbmc+KHN0cmluZy5zdHJpbmcoKSkKICAgIHsKICAgIH0KfTsKCmlubGluZSB2b2lkIHN1
bVdpdGhPdmVyZmxvdyh1bnNpZ25lZCYgdG90YWwsIHVuc2lnbmVkIGFkZGVuZCwgYm9vbCYgb3Zl
cmZsb3cpCnsKICAgIHVuc2lnbmVkIG9sZFRvdGFsID0gdG90YWw7CiAgICB0b3RhbCA9IG9sZFRv
dGFsICsgYWRkZW5kOwogICAgaWYgKHRvdGFsIDwgb2xkVG90YWwpCiAgICAgICAgb3ZlcmZsb3cg
PSB0cnVlOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5n
VHlwZTI+ClN0cmluZyB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5
cGUyIHN0cmluZzIpCnsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVy
MShzdHJpbmcxKTsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVyMihz
dHJpbmcyKTsKCiAgICBpZiAoYWRhcHRlcjEubGVuZ3RoKCkgJiYgIWFkYXB0ZXIyLmxlbmd0aCgp
KQogICAgICAgIHJldHVybiBhZGFwdGVyMS50b1N0cmluZygpOwogICAgaWYgKCFhZGFwdGVyMS5s
ZW5ndGgoKSAmJiBhZGFwdGVyMi5sZW5ndGgoKSkKICAgICAgICByZXR1cm4gYWRhcHRlcjIudG9T
dHJpbmcoKTsKCiAgICBib29sIG92ZXJmbG93ID0gZmFsc2U7CiAgICB1bnNpZ25lZCBsZW5ndGgg
PSBhZGFwdGVyMS5sZW5ndGgoKTsKICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXIy
Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAgICBpZiAob3ZlcmZsb3cpCiAgICAgICAgcmV0dXJuIFN0
cmluZygpOwoKICAgIGlmIChhZGFwdGVyMS5pczhCaXQoKSAmJiBhZGFwdGVyMi5pczhCaXQoKSkg
ewogICAgICAgIExDaGFyKiBidWZmZXI7CiAgICAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3Vs
dEltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVy
KTsKICAgICAgICBpZiAoIXJlc3VsdEltcGwpCiAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
CiAgICAgICAgTENoYXIqIHJlc3VsdCA9IGJ1ZmZlcjsKICAgICAgICBhZGFwdGVyMS53cml0ZVRv
KHJlc3VsdCk7CiAgICAgICAgcmVzdWx0ICs9IGFkYXB0ZXIxLmxlbmd0aCgpOwogICAgICAgIGFk
YXB0ZXIyLndyaXRlVG8ocmVzdWx0KTsKCiAgICAgICAgcmV0dXJuIHN0ZDo6bW92ZTxXVEY6OkNo
ZWNrTW92ZVBhcmFtZXRlcj4ocmVzdWx0SW1wbCk7CiAgICB9CgogICAgVUNoYXIqIGJ1ZmZlcjsK
ICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRl
VW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7CiAgICBpZiAoIXJlc3VsdEltcGwpCiAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwoKICAgIFVDaGFyKiByZXN1bHQgPSBidWZmZXI7CiAgICBhZGFw
dGVyMS53cml0ZVRvKHJlc3VsdCk7CiAgICByZXN1bHQgKz0gYWRhcHRlcjEubGVuZ3RoKCk7CiAg
ICBhZGFwdGVyMi53cml0ZVRvKHJlc3VsdCk7CgogICAgcmV0dXJuIHN0ZDo6bW92ZTxXVEY6OkNo
ZWNrTW92ZVBhcmFtZXRlcj4ocmVzdWx0SW1wbCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFN0cmlu
Z1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTM+ClN0cmlu
ZyB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIs
IFN0cmluZ1R5cGUzIHN0cmluZzMpCnsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUx
PiBhZGFwdGVyMShzdHJpbmcxKTsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUyPiBh
ZGFwdGVyMihzdHJpbmcyKTsKICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFw
dGVyMyhzdHJpbmczKTsKCiAgICBib29sIG92ZXJmbG93ID0gZmFsc2U7CiAgICB1bnNpZ25lZCBs
ZW5ndGggPSBhZGFwdGVyMS5sZW5ndGgoKTsKICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFk
YXB0ZXIyLmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBh
ZGFwdGVyMy5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgaWYgKG92ZXJmbG93KQogICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKCiAgICBpZiAoYWRhcHRlcjEuaXM4Qml0KCkgJiYgYWRhcHRlcjIuaXM4
Qml0KCkgJiYgYWRhcHRlcjMuaXM4Qml0KCkpIHsKICAgICAgICBMQ2hhciogYnVmZmVyOwogICAg
ICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRl
VW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7CiAgICAgICAgaWYgKCFyZXN1bHRJbXBsKQog
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CgogICAgICAgIExDaGFyKiByZXN1bHQgPSBidWZm
ZXI7CiAgICAgICAgYWRhcHRlcjEud3JpdGVUbyhyZXN1bHQpOwogICAgICAgIHJlc3VsdCArPSBh
ZGFwdGVyMS5sZW5ndGgoKTsKICAgICAgICBhZGFwdGVyMi53cml0ZVRvKHJlc3VsdCk7CiAgICAg
ICAgcmVzdWx0ICs9IGFkYXB0ZXIyLmxlbmd0aCgpOwogICAgICAgIGFkYXB0ZXIzLndyaXRlVG8o
cmVzdWx0KTsKCiAgICAgICAgcmV0dXJuIHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRl
cj4ocmVzdWx0SW1wbCk7CiAgICB9CgogICAgVUNoYXIqIGJ1ZmZlciA9IDA7CiAgICBSZWZQdHI8
U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQobGVuZ3RoLCBidWZmZXIpOwogICAgaWYgKCFyZXN1bHRJbXBsKQogICAgICAgIHJldHVybiBT
dHJpbmcoKTsKCiAgICBVQ2hhciogcmVzdWx0ID0gYnVmZmVyOwogICAgYWRhcHRlcjEud3JpdGVU
byhyZXN1bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXIxLmxlbmd0aCgpOwogICAgYWRhcHRlcjIu
d3JpdGVUbyhyZXN1bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXIyLmxlbmd0aCgpOwogICAgYWRh
cHRlcjMud3JpdGVUbyhyZXN1bHQpOwoKICAgIHJldHVybiBzdGQ6Om1vdmU8V1RGOjpDaGVja01v
dmVQYXJhbWV0ZXI+KHJlc3VsdEltcGwpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBl
MSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBT
dHJpbmdUeXBlND4KU3RyaW5nIHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3Ry
aW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5n
NCkKewogICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTE+IGFkYXB0ZXIxKHN0cmluZzEp
OwogICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIyKHN0cmluZzIpOwog
ICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTM+IGFkYXB0ZXIzKHN0cmluZzMpOwogICAg
U3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTQ+IGFkYXB0ZXI0KHN0cmluZzQpOwoKICAgIGJv
b2wgb3ZlcmZsb3cgPSBmYWxzZTsKICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFkYXB0ZXIxLmxlbmd0
aCgpOwogICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjIubGVuZ3RoKCksIG92ZXJm
bG93KTsKICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXIzLmxlbmd0aCgpLCBvdmVy
Zmxvdyk7CiAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyNC5sZW5ndGgoKSwgb3Zl
cmZsb3cpOwogICAgaWYgKG92ZXJmbG93KQogICAgICAgIHJldHVybiBTdHJpbmcoKTsKCiAgICBp
ZiAoYWRhcHRlcjEuaXM4Qml0KCkgJiYgYWRhcHRlcjIuaXM4Qml0KCkgJiYgYWRhcHRlcjMuaXM4
Qml0KCkgJiYgYWRhcHRlcjQuaXM4Qml0KCkpIHsKICAgICAgICBMQ2hhciogYnVmZmVyOwogICAg
ICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRl
VW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7CiAgICAgICAgaWYgKCFyZXN1bHRJbXBsKQog
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CgogICAgICAgIExDaGFyKiByZXN1bHQgPSBidWZm
ZXI7CiAgICAgICAgYWRhcHRlcjEud3JpdGVUbyhyZXN1bHQpOwogICAgICAgIHJlc3VsdCArPSBh
ZGFwdGVyMS5sZW5ndGgoKTsKICAgICAgICBhZGFwdGVyMi53cml0ZVRvKHJlc3VsdCk7CiAgICAg
ICAgcmVzdWx0ICs9IGFkYXB0ZXIyLmxlbmd0aCgpOwogICAgICAgIGFkYXB0ZXIzLndyaXRlVG8o
cmVzdWx0KTsKICAgICAgICByZXN1bHQgKz0gYWRhcHRlcjMubGVuZ3RoKCk7CiAgICAgICAgYWRh
cHRlcjQud3JpdGVUbyhyZXN1bHQpOwoKICAgICAgICByZXR1cm4gc3RkOjptb3ZlPFdURjo6Q2hl
Y2tNb3ZlUGFyYW1ldGVyPihyZXN1bHRJbXBsKTsKICAgIH0KCiAgICBVQ2hhciogYnVmZmVyOwog
ICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKICAgIGlmICghcmVzdWx0SW1wbCkKICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CgogICAgVUNoYXIqIHJlc3VsdCA9IGJ1ZmZlcjsKICAgIGFkYXB0
ZXIxLndyaXRlVG8ocmVzdWx0KTsKICAgIHJlc3VsdCArPSBhZGFwdGVyMS5sZW5ndGgoKTsKICAg
IGFkYXB0ZXIyLndyaXRlVG8ocmVzdWx0KTsKICAgIHJlc3VsdCArPSBhZGFwdGVyMi5sZW5ndGgo
KTsKICAgIGFkYXB0ZXIzLndyaXRlVG8ocmVzdWx0KTsKICAgIHJlc3VsdCArPSBhZGFwdGVyMy5s
ZW5ndGgoKTsKICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVzdWx0KTsKCiAgICByZXR1cm4gc3RkOjpt
b3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihyZXN1bHRJbXBsKTsKfQoKdGVtcGxhdGU8dHlw
ZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdU
eXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1PgpTdHJpbmcg
dHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBT
dHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJp
bmc1KQp7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5n
MSk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7
CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMz4gYWRhcHRlcjMoc3RyaW5nMyk7CiAg
ICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7CiAgICBT
dHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlNT4gYWRhcHRlcjUoc3RyaW5nNSk7CgogICAgYm9v
bCBvdmVyZmxvdyA9IGZhbHNlOwogICAgdW5zaWduZWQgbGVuZ3RoID0gYWRhcHRlcjEubGVuZ3Ro
KCk7CiAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyMi5sZW5ndGgoKSwgb3ZlcmZs
b3cpOwogICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjMubGVuZ3RoKCksIG92ZXJm
bG93KTsKICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI0Lmxlbmd0aCgpLCBvdmVy
Zmxvdyk7CiAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyNS5sZW5ndGgoKSwgb3Zl
cmZsb3cpOwogICAgaWYgKG92ZXJmbG93KQogICAgICAgIHJldHVybiBTdHJpbmcoKTsKCiAgICBp
ZiAoYWRhcHRlcjEuaXM4Qml0KCkgJiYgYWRhcHRlcjIuaXM4Qml0KCkgJiYgYWRhcHRlcjMuaXM4
Qml0KCkgJiYgYWRhcHRlcjQuaXM4Qml0KCkgJiYgYWRhcHRlcjUuaXM4Qml0KCkpIHsKICAgICAg
ICBMQ2hhciogYnVmZmVyOwogICAgICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0g
U3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7CiAgICAg
ICAgaWYgKCFyZXN1bHRJbXBsKQogICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CgogICAgICAg
IExDaGFyKiByZXN1bHQgPSBidWZmZXI7CiAgICAgICAgYWRhcHRlcjEud3JpdGVUbyhyZXN1bHQp
OwogICAgICAgIHJlc3VsdCArPSBhZGFwdGVyMS5sZW5ndGgoKTsKICAgICAgICBhZGFwdGVyMi53
cml0ZVRvKHJlc3VsdCk7CiAgICAgICAgcmVzdWx0ICs9IGFkYXB0ZXIyLmxlbmd0aCgpOwogICAg
ICAgIGFkYXB0ZXIzLndyaXRlVG8ocmVzdWx0KTsKICAgICAgICByZXN1bHQgKz0gYWRhcHRlcjMu
bGVuZ3RoKCk7CiAgICAgICAgYWRhcHRlcjQud3JpdGVUbyhyZXN1bHQpOwogICAgICAgIHJlc3Vs
dCArPSBhZGFwdGVyNC5sZW5ndGgoKTsKICAgICAgICBhZGFwdGVyNS53cml0ZVRvKHJlc3VsdCk7
CgogICAgICAgIHJldHVybiBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHJlc3Vs
dEltcGwpOwogICAgfQoKICAgIFVDaGFyKiBidWZmZXI7CiAgICBSZWZQdHI8U3RyaW5nSW1wbD4g
cmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBi
dWZmZXIpOwogICAgaWYgKCFyZXN1bHRJbXBsKQogICAgICAgIHJldHVybiBTdHJpbmcoKTsKCiAg
ICBVQ2hhciogcmVzdWx0ID0gYnVmZmVyOwogICAgYWRhcHRlcjEud3JpdGVUbyhyZXN1bHQpOwog
ICAgcmVzdWx0ICs9IGFkYXB0ZXIxLmxlbmd0aCgpOwogICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1
bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXIyLmxlbmd0aCgpOwogICAgYWRhcHRlcjMud3JpdGVU
byhyZXN1bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOwogICAgYWRhcHRlcjQu
d3JpdGVUbyhyZXN1bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXI0Lmxlbmd0aCgpOwogICAgYWRh
cHRlcjUud3JpdGVUbyhyZXN1bHQpOwoKICAgIHJldHVybiBzdGQ6Om1vdmU8V1RGOjpDaGVja01v
dmVQYXJhbWV0ZXI+KHJlc3VsdEltcGwpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBl
MSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBT
dHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2PgpT
dHJpbmcgdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJp
bmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBl
NSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2KQp7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxT
dHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJp
bmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdU
eXBlMz4gYWRhcHRlcjMoc3RyaW5nMyk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBl
ND4gYWRhcHRlcjQoc3RyaW5nNCk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlNT4g
YWRhcHRlcjUoc3RyaW5nNSk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlNj4gYWRh
cHRlcjYoc3RyaW5nNik7CgogICAgYm9vbCBvdmVyZmxvdyA9IGZhbHNlOwogICAgdW5zaWduZWQg
bGVuZ3RoID0gYWRhcHRlcjEubGVuZ3RoKCk7CiAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBh
ZGFwdGVyMi5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwg
YWRhcHRlcjMubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgs
IGFkYXB0ZXI0Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3Ro
LCBhZGFwdGVyNS5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0
aCwgYWRhcHRlcjYubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIGlmIChvdmVyZmxvdykKICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CgogICAgaWYgKGFkYXB0ZXIxLmlzOEJpdCgpICYmIGFkYXB0ZXIy
LmlzOEJpdCgpICYmIGFkYXB0ZXIzLmlzOEJpdCgpICYmIGFkYXB0ZXI0LmlzOEJpdCgpICYmIGFk
YXB0ZXI1LmlzOEJpdCgpICYmIGFkYXB0ZXI2LmlzOEJpdCgpKSB7CiAgICAgICAgTENoYXIqIGJ1
ZmZlcjsKICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwogICAgICAgIGlmICghcmVz
dWx0SW1wbCkKICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwoKICAgICAgICBMQ2hhciogcmVz
dWx0ID0gYnVmZmVyOwogICAgICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKICAgICAgICBy
ZXN1bHQgKz0gYWRhcHRlcjEubGVuZ3RoKCk7CiAgICAgICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1
bHQpOwogICAgICAgIHJlc3VsdCArPSBhZGFwdGVyMi5sZW5ndGgoKTsKICAgICAgICBhZGFwdGVy
My53cml0ZVRvKHJlc3VsdCk7CiAgICAgICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOwog
ICAgICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVzdWx0KTsKICAgICAgICByZXN1bHQgKz0gYWRhcHRl
cjQubGVuZ3RoKCk7CiAgICAgICAgYWRhcHRlcjUud3JpdGVUbyhyZXN1bHQpOwogICAgICAgIHJl
c3VsdCArPSBhZGFwdGVyNS5sZW5ndGgoKTsKICAgICAgICBhZGFwdGVyNi53cml0ZVRvKHJlc3Vs
dCk7CgogICAgICAgIHJldHVybiBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHJl
c3VsdEltcGwpOwogICAgfQoKICAgIFVDaGFyKiBidWZmZXI7CiAgICBSZWZQdHI8U3RyaW5nSW1w
bD4gcmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3Ro
LCBidWZmZXIpOwogICAgaWYgKCFyZXN1bHRJbXBsKQogICAgICAgIHJldHVybiBTdHJpbmcoKTsK
CiAgICBVQ2hhciogcmVzdWx0ID0gYnVmZmVyOwogICAgYWRhcHRlcjEud3JpdGVUbyhyZXN1bHQp
OwogICAgcmVzdWx0ICs9IGFkYXB0ZXIxLmxlbmd0aCgpOwogICAgYWRhcHRlcjIud3JpdGVUbyhy
ZXN1bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXIyLmxlbmd0aCgpOwogICAgYWRhcHRlcjMud3Jp
dGVUbyhyZXN1bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOwogICAgYWRhcHRl
cjQud3JpdGVUbyhyZXN1bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXI0Lmxlbmd0aCgpOwogICAg
YWRhcHRlcjUud3JpdGVUbyhyZXN1bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXI1Lmxlbmd0aCgp
OwogICAgYWRhcHRlcjYud3JpdGVUbyhyZXN1bHQpOwoKICAgIHJldHVybiBzdGQ6Om1vdmU8V1RG
OjpDaGVja01vdmVQYXJhbWV0ZXI+KHJlc3VsdEltcGwpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBT
dHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0
eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmlu
Z1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNz4KU3RyaW5nIHRyeU1ha2VTdHJpbmcoU3RyaW5n
VHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywg
U3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3Ry
aW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5nNykKewogICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5n
VHlwZTE+IGFkYXB0ZXIxKHN0cmluZzEpOwogICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlw
ZTI+IGFkYXB0ZXIyKHN0cmluZzIpOwogICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTM+
IGFkYXB0ZXIzKHN0cmluZzMpOwogICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTQ+IGFk
YXB0ZXI0KHN0cmluZzQpOwogICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTU+IGFkYXB0
ZXI1KHN0cmluZzUpOwogICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTY+IGFkYXB0ZXI2
KHN0cmluZzYpOwogICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTc+IGFkYXB0ZXI3KHN0
cmluZzcpOwoKICAgIGJvb2wgb3ZlcmZsb3cgPSBmYWxzZTsKICAgIHVuc2lnbmVkIGxlbmd0aCA9
IGFkYXB0ZXIxLmxlbmd0aCgpOwogICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjIu
bGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXIz
Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVy
NC5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRl
cjUubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0
ZXI2Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFw
dGVyNy5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgaWYgKG92ZXJmbG93KQogICAgICAgIHJldHVy
biBTdHJpbmcoKTsKCiAgICBpZiAoYWRhcHRlcjEuaXM4Qml0KCkgJiYgYWRhcHRlcjIuaXM4Qml0
KCkgJiYgYWRhcHRlcjMuaXM4Qml0KCkgJiYgYWRhcHRlcjQuaXM4Qml0KCkgJiYgYWRhcHRlcjUu
aXM4Qml0KCkgJiYgYWRhcHRlcjYuaXM4Qml0KCkgJiYgYWRhcHRlcjcuaXM4Qml0KCkpIHsKICAg
ICAgICBMQ2hhciogYnVmZmVyOwogICAgICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBs
ID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7CiAg
ICAgICAgaWYgKCFyZXN1bHRJbXBsKQogICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CgogICAg
ICAgIExDaGFyKiByZXN1bHQgPSBidWZmZXI7CiAgICAgICAgYWRhcHRlcjEud3JpdGVUbyhyZXN1
bHQpOwogICAgICAgIHJlc3VsdCArPSBhZGFwdGVyMS5sZW5ndGgoKTsKICAgICAgICBhZGFwdGVy
Mi53cml0ZVRvKHJlc3VsdCk7CiAgICAgICAgcmVzdWx0ICs9IGFkYXB0ZXIyLmxlbmd0aCgpOwog
ICAgICAgIGFkYXB0ZXIzLndyaXRlVG8ocmVzdWx0KTsKICAgICAgICByZXN1bHQgKz0gYWRhcHRl
cjMubGVuZ3RoKCk7CiAgICAgICAgYWRhcHRlcjQud3JpdGVUbyhyZXN1bHQpOwogICAgICAgIHJl
c3VsdCArPSBhZGFwdGVyNC5sZW5ndGgoKTsKICAgICAgICBhZGFwdGVyNS53cml0ZVRvKHJlc3Vs
dCk7CiAgICAgICAgcmVzdWx0ICs9IGFkYXB0ZXI1Lmxlbmd0aCgpOwogICAgICAgIGFkYXB0ZXI2
LndyaXRlVG8ocmVzdWx0KTsKICAgICAgICByZXN1bHQgKz0gYWRhcHRlcjYubGVuZ3RoKCk7CiAg
ICAgICAgYWRhcHRlcjcud3JpdGVUbyhyZXN1bHQpOwoKICAgICAgICByZXR1cm4gc3RkOjptb3Zl
PFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihyZXN1bHRJbXBsKTsKICAgIH0KCiAgICBVQ2hhciog
YnVmZmVyOwogICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBTdHJpbmdJbXBsOjp0
cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKICAgIGlmICghcmVzdWx0SW1w
bCkKICAgICAgICByZXR1cm4gU3RyaW5nKCk7CgogICAgVUNoYXIqIHJlc3VsdCA9IGJ1ZmZlcjsK
ICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKICAgIHJlc3VsdCArPSBhZGFwdGVyMS5sZW5n
dGgoKTsKICAgIGFkYXB0ZXIyLndyaXRlVG8ocmVzdWx0KTsKICAgIHJlc3VsdCArPSBhZGFwdGVy
Mi5sZW5ndGgoKTsKICAgIGFkYXB0ZXIzLndyaXRlVG8ocmVzdWx0KTsKICAgIHJlc3VsdCArPSBh
ZGFwdGVyMy5sZW5ndGgoKTsKICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVzdWx0KTsKICAgIHJlc3Vs
dCArPSBhZGFwdGVyNC5sZW5ndGgoKTsKICAgIGFkYXB0ZXI1LndyaXRlVG8ocmVzdWx0KTsKICAg
IHJlc3VsdCArPSBhZGFwdGVyNS5sZW5ndGgoKTsKICAgIGFkYXB0ZXI2LndyaXRlVG8ocmVzdWx0
KTsKICAgIHJlc3VsdCArPSBhZGFwdGVyNi5sZW5ndGgoKTsKICAgIGFkYXB0ZXI3LndyaXRlVG8o
cmVzdWx0KTsKCiAgICByZXR1cm4gc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihy
ZXN1bHRJbXBsKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0
cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5
cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBlbmFtZSBTdHJpbmdUeXBlNiwgdHlwZW5hbWUgU3RyaW5n
VHlwZTcsIHR5cGVuYW1lIFN0cmluZ1R5cGU4PgpTdHJpbmcgdHJ5TWFrZVN0cmluZyhTdHJpbmdU
eXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBT
dHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJp
bmc2LCBTdHJpbmdUeXBlNyBzdHJpbmc3LCBTdHJpbmdUeXBlOCBzdHJpbmc4KQp7CiAgICBTdHJp
bmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7CiAgICBTdHJpbmdU
eXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7CiAgICBTdHJpbmdUeXBl
QWRhcHRlcjxTdHJpbmdUeXBlMz4gYWRhcHRlcjMoc3RyaW5nMyk7CiAgICBTdHJpbmdUeXBlQWRh
cHRlcjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7CiAgICBTdHJpbmdUeXBlQWRhcHRl
cjxTdHJpbmdUeXBlNT4gYWRhcHRlcjUoc3RyaW5nNSk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxT
dHJpbmdUeXBlNj4gYWRhcHRlcjYoc3RyaW5nNik7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJp
bmdUeXBlNz4gYWRhcHRlcjcoc3RyaW5nNyk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdU
eXBlOD4gYWRhcHRlcjgoc3RyaW5nOCk7CgogICAgYm9vbCBvdmVyZmxvdyA9IGZhbHNlOwogICAg
dW5zaWduZWQgbGVuZ3RoID0gYWRhcHRlcjEubGVuZ3RoKCk7CiAgICBzdW1XaXRoT3ZlcmZsb3co
bGVuZ3RoLCBhZGFwdGVyMi5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgc3VtV2l0aE92ZXJmbG93
KGxlbmd0aCwgYWRhcHRlcjMubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIHN1bVdpdGhPdmVyZmxv
dyhsZW5ndGgsIGFkYXB0ZXI0Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAgICBzdW1XaXRoT3ZlcmZs
b3cobGVuZ3RoLCBhZGFwdGVyNS5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgc3VtV2l0aE92ZXJm
bG93KGxlbmd0aCwgYWRhcHRlcjYubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIHN1bVdpdGhPdmVy
ZmxvdyhsZW5ndGgsIGFkYXB0ZXI3Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAgICBzdW1XaXRoT3Zl
cmZsb3cobGVuZ3RoLCBhZGFwdGVyOC5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgaWYgKG92ZXJm
bG93KQogICAgICAgIHJldHVybiBTdHJpbmcoKTsKCiAgICBpZiAoYWRhcHRlcjEuaXM4Qml0KCkg
JiYgYWRhcHRlcjIuaXM4Qml0KCkgJiYgYWRhcHRlcjMuaXM4Qml0KCkgJiYgYWRhcHRlcjQuaXM4
Qml0KCkgJiYgYWRhcHRlcjUuaXM4Qml0KCkgJiYgYWRhcHRlcjYuaXM4Qml0KCkgJiYgYWRhcHRl
cjcuaXM4Qml0KCkgJiYgYWRhcHRlcjguaXM4Qml0KCkpIHsKICAgICAgICBMQ2hhciogYnVmZmVy
OwogICAgICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gU3RyaW5nSW1wbDo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7CiAgICAgICAgaWYgKCFyZXN1bHRJ
bXBsKQogICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CgogICAgICAgIExDaGFyKiByZXN1bHQg
PSBidWZmZXI7CiAgICAgICAgYWRhcHRlcjEud3JpdGVUbyhyZXN1bHQpOwogICAgICAgIHJlc3Vs
dCArPSBhZGFwdGVyMS5sZW5ndGgoKTsKICAgICAgICBhZGFwdGVyMi53cml0ZVRvKHJlc3VsdCk7
CiAgICAgICAgcmVzdWx0ICs9IGFkYXB0ZXIyLmxlbmd0aCgpOwogICAgICAgIGFkYXB0ZXIzLndy
aXRlVG8ocmVzdWx0KTsKICAgICAgICByZXN1bHQgKz0gYWRhcHRlcjMubGVuZ3RoKCk7CiAgICAg
ICAgYWRhcHRlcjQud3JpdGVUbyhyZXN1bHQpOwogICAgICAgIHJlc3VsdCArPSBhZGFwdGVyNC5s
ZW5ndGgoKTsKICAgICAgICBhZGFwdGVyNS53cml0ZVRvKHJlc3VsdCk7CiAgICAgICAgcmVzdWx0
ICs9IGFkYXB0ZXI1Lmxlbmd0aCgpOwogICAgICAgIGFkYXB0ZXI2LndyaXRlVG8ocmVzdWx0KTsK
ICAgICAgICByZXN1bHQgKz0gYWRhcHRlcjYubGVuZ3RoKCk7CiAgICAgICAgYWRhcHRlcjcud3Jp
dGVUbyhyZXN1bHQpOwogICAgICAgIHJlc3VsdCArPSBhZGFwdGVyNy5sZW5ndGgoKTsKICAgICAg
ICBhZGFwdGVyOC53cml0ZVRvKHJlc3VsdCk7CgogICAgICAgIHJldHVybiBzdGQ6Om1vdmU8V1RG
OjpDaGVja01vdmVQYXJhbWV0ZXI+KHJlc3VsdEltcGwpOwogICAgfQoKICAgIFVDaGFyKiBidWZm
ZXI7CiAgICBSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwogICAgaWYgKCFyZXN1bHRJbXBsKQog
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKCiAgICBVQ2hhciogcmVzdWx0ID0gYnVmZmVyOwogICAg
YWRhcHRlcjEud3JpdGVUbyhyZXN1bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXIxLmxlbmd0aCgp
OwogICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXIyLmxl
bmd0aCgpOwogICAgYWRhcHRlcjMud3JpdGVUbyhyZXN1bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0
ZXIzLmxlbmd0aCgpOwogICAgYWRhcHRlcjQud3JpdGVUbyhyZXN1bHQpOwogICAgcmVzdWx0ICs9
IGFkYXB0ZXI0Lmxlbmd0aCgpOwogICAgYWRhcHRlcjUud3JpdGVUbyhyZXN1bHQpOwogICAgcmVz
dWx0ICs9IGFkYXB0ZXI1Lmxlbmd0aCgpOwogICAgYWRhcHRlcjYud3JpdGVUbyhyZXN1bHQpOwog
ICAgcmVzdWx0ICs9IGFkYXB0ZXI2Lmxlbmd0aCgpOwogICAgYWRhcHRlcjcud3JpdGVUbyhyZXN1
bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXI3Lmxlbmd0aCgpOwogICAgYWRhcHRlcjgud3JpdGVU
byhyZXN1bHQpOwoKICAgIHJldHVybiBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+
KHJlc3VsdEltcGwpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUg
U3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwg
dHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJp
bmdUeXBlNywgdHlwZW5hbWUgU3RyaW5nVHlwZTgsIHR5cGVuYW1lIFN0cmluZ1R5cGU5PgpTdHJp
bmcgdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcy
LCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBz
dHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2LCBTdHJpbmdUeXBlNyBzdHJpbmc3LCBTdHJpbmdU
eXBlOCBzdHJpbmc4LCBTdHJpbmdUeXBlOSBzdHJpbmc5KQp7CiAgICBTdHJpbmdUeXBlQWRhcHRl
cjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxT
dHJpbmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJp
bmdUeXBlMz4gYWRhcHRlcjMoc3RyaW5nMyk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdU
eXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBl
NT4gYWRhcHRlcjUoc3RyaW5nNSk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlNj4g
YWRhcHRlcjYoc3RyaW5nNik7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlNz4gYWRh
cHRlcjcoc3RyaW5nNyk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlOD4gYWRhcHRl
cjgoc3RyaW5nOCk7CiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlOT4gYWRhcHRlcjko
c3RyaW5nOSk7CgogICAgYm9vbCBvdmVyZmxvdyA9IGZhbHNlOwogICAgdW5zaWduZWQgbGVuZ3Ro
ID0gYWRhcHRlcjEubGVuZ3RoKCk7CiAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVy
Mi5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRl
cjMubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0
ZXI0Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFw
dGVyNS5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRh
cHRlcjYubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFk
YXB0ZXI3Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CiAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBh
ZGFwdGVyOC5sZW5ndGgoKSwgb3ZlcmZsb3cpOwogICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwg
YWRhcHRlcjkubGVuZ3RoKCksIG92ZXJmbG93KTsKICAgIGlmIChvdmVyZmxvdykKICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CgogICAgaWYgKGFkYXB0ZXIxLmlzOEJpdCgpICYmIGFkYXB0ZXIyLmlz
OEJpdCgpICYmIGFkYXB0ZXIzLmlzOEJpdCgpICYmIGFkYXB0ZXI0LmlzOEJpdCgpICYmIGFkYXB0
ZXI1LmlzOEJpdCgpICYmIGFkYXB0ZXI2LmlzOEJpdCgpICYmIGFkYXB0ZXI3LmlzOEJpdCgpICYm
IGFkYXB0ZXI4LmlzOEJpdCgpICYmIGFkYXB0ZXI5LmlzOEJpdCgpKSB7CiAgICAgICAgTENoYXIq
IGJ1ZmZlcjsKICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0lt
cGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwogICAgICAgIGlmICgh
cmVzdWx0SW1wbCkKICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwoKICAgICAgICBMQ2hhciog
cmVzdWx0ID0gYnVmZmVyOwogICAgICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKICAgICAg
ICByZXN1bHQgKz0gYWRhcHRlcjEubGVuZ3RoKCk7CiAgICAgICAgYWRhcHRlcjIud3JpdGVUbyhy
ZXN1bHQpOwogICAgICAgIHJlc3VsdCArPSBhZGFwdGVyMi5sZW5ndGgoKTsKICAgICAgICBhZGFw
dGVyMy53cml0ZVRvKHJlc3VsdCk7CiAgICAgICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgp
OwogICAgICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVzdWx0KTsKICAgICAgICByZXN1bHQgKz0gYWRh
cHRlcjQubGVuZ3RoKCk7CiAgICAgICAgYWRhcHRlcjUud3JpdGVUbyhyZXN1bHQpOwogICAgICAg
IHJlc3VsdCArPSBhZGFwdGVyNS5sZW5ndGgoKTsKICAgICAgICBhZGFwdGVyNi53cml0ZVRvKHJl
c3VsdCk7CiAgICAgICAgcmVzdWx0ICs9IGFkYXB0ZXI2Lmxlbmd0aCgpOwogICAgICAgIGFkYXB0
ZXI3LndyaXRlVG8ocmVzdWx0KTsKICAgICAgICByZXN1bHQgKz0gYWRhcHRlcjcubGVuZ3RoKCk7
CiAgICAgICAgYWRhcHRlcjgud3JpdGVUbyhyZXN1bHQpOwogICAgICAgIHJlc3VsdCArPSBhZGFw
dGVyOC5sZW5ndGgoKTsKICAgICAgICBhZGFwdGVyOS53cml0ZVRvKHJlc3VsdCk7CgogICAgICAg
IHJldHVybiBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHJlc3VsdEltcGwpOwog
ICAgfQoKICAgIFVDaGFyKiBidWZmZXI7CiAgICBSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1w
bCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwog
ICAgaWYgKCFyZXN1bHRJbXBsKQogICAgICAgIHJldHVybiBTdHJpbmcoKTsKCiAgICBVQ2hhciog
cmVzdWx0ID0gYnVmZmVyOwogICAgYWRhcHRlcjEud3JpdGVUbyhyZXN1bHQpOwogICAgcmVzdWx0
ICs9IGFkYXB0ZXIxLmxlbmd0aCgpOwogICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOwogICAg
cmVzdWx0ICs9IGFkYXB0ZXIyLmxlbmd0aCgpOwogICAgYWRhcHRlcjMud3JpdGVUbyhyZXN1bHQp
OwogICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOwogICAgYWRhcHRlcjQud3JpdGVUbyhy
ZXN1bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXI0Lmxlbmd0aCgpOwogICAgYWRhcHRlcjUud3Jp
dGVUbyhyZXN1bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXI1Lmxlbmd0aCgpOwogICAgYWRhcHRl
cjYud3JpdGVUbyhyZXN1bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXI2Lmxlbmd0aCgpOwogICAg
YWRhcHRlcjcud3JpdGVUbyhyZXN1bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXI3Lmxlbmd0aCgp
OwogICAgYWRhcHRlcjgud3JpdGVUbyhyZXN1bHQpOwogICAgcmVzdWx0ICs9IGFkYXB0ZXI4Lmxl
bmd0aCgpOwogICAgYWRhcHRlcjkud3JpdGVUbyhyZXN1bHQpOwoKICAgIHJldHVybiBzdGQ6Om1v
dmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHJlc3VsdEltcGwpOwp9CgoKCnRlbXBsYXRlPHR5
cGVuYW1lIFN0cmluZ1R5cGUxPgpTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcx
KQp7CiAgICByZXR1cm4gU3RyaW5nKHN0cmluZzEpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJp
bmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTI+ClN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5
cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIpCnsKICAgIFN0cmluZyByZXN1bHQgPSB0
cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIpOwogICAgaWYgKCFyZXN1bHQpCiAgICAgICAg
V1RGQ3Jhc2goKTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFN0cmlu
Z1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTM+ClN0cmlu
ZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0
cmluZ1R5cGUzIHN0cmluZzMpCnsKICAgIFN0cmluZyByZXN1bHQgPSB0cnlNYWtlU3RyaW5nKHN0
cmluZzEsIHN0cmluZzIsIHN0cmluZzMpOwogICAgaWYgKCFyZXN1bHQpCiAgICAgICAgV1RGQ3Jh
c2goKTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUx
LCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0
cmluZ1R5cGU0PgpTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdU
eXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0KQp7
CiAgICBTdHJpbmcgcmVzdWx0ID0gdHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJp
bmczLCBzdHJpbmc0KTsKICAgIGlmICghcmVzdWx0KQogICAgICAgIFdURkNyYXNoKCk7CiAgICBy
ZXR1cm4gcmVzdWx0Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUg
U3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwg
dHlwZW5hbWUgU3RyaW5nVHlwZTU+ClN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmlu
ZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0
IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUpCnsKICAgIFN0cmluZyByZXN1bHQgPSB0cnlN
YWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIsIHN0cmluZzMsIHN0cmluZzQsIHN0cmluZzUpOwog
ICAgaWYgKCFyZXN1bHQpCiAgICAgICAgV1RGQ3Jhc2goKTsKICAgIHJldHVybiByZXN1bHQ7Cn0K
CnRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlw
ZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdU
eXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlwZTY+ClN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUx
IHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmlu
Z1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYp
CnsKICAgIFN0cmluZyByZXN1bHQgPSB0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIsIHN0
cmluZzMsIHN0cmluZzQsIHN0cmluZzUsIHN0cmluZzYpOwogICAgaWYgKCFyZXN1bHQpCiAgICAg
ICAgV1RGQ3Jhc2goKTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFN0
cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5
cGVuYW1lIFN0cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5n
VHlwZTYsIHR5cGVuYW1lIFN0cmluZ1R5cGU3PgpTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBl
MSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJp
bmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2
LCBTdHJpbmdUeXBlNyBzdHJpbmc3KQp7CiAgICBTdHJpbmcgcmVzdWx0ID0gdHJ5TWFrZVN0cmlu
ZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1LCBzdHJpbmc2LCBz
dHJpbmc3KTsKICAgIGlmICghcmVzdWx0KQogICAgICAgIFdURkNyYXNoKCk7CiAgICByZXR1cm4g
cmVzdWx0Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5n
VHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5h
bWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBl
NywgdHlwZW5hbWUgU3RyaW5nVHlwZTg+ClN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0
cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5
cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYsIFN0
cmluZ1R5cGU3IHN0cmluZzcsIFN0cmluZ1R5cGU4IHN0cmluZzgpCnsKICAgIFN0cmluZyByZXN1
bHQgPSB0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIsIHN0cmluZzMsIHN0cmluZzQsIHN0
cmluZzUsIHN0cmluZzYsIHN0cmluZzcsIHN0cmluZzgpOwogICAgaWYgKCFyZXN1bHQpCiAgICAg
ICAgV1RGQ3Jhc2goKTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFN0
cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5
cGVuYW1lIFN0cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5n
VHlwZTYsIHR5cGVuYW1lIFN0cmluZ1R5cGU3LCB0eXBlbmFtZSBTdHJpbmdUeXBlOCwgdHlwZW5h
bWUgU3RyaW5nVHlwZTk+ClN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0
cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmlu
ZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYsIFN0cmluZ1R5cGU3
IHN0cmluZzcsIFN0cmluZ1R5cGU4IHN0cmluZzgsIFN0cmluZ1R5cGU5IHN0cmluZzkpCnsKICAg
IFN0cmluZyByZXN1bHQgPSB0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIsIHN0cmluZzMs
IHN0cmluZzQsIHN0cmluZzUsIHN0cmluZzYsIHN0cmluZzcsIHN0cmluZzgsIHN0cmluZzkpOwog
ICAgaWYgKCFyZXN1bHQpCiAgICAgICAgV1RGQ3Jhc2goKTsKICAgIHJldHVybiByZXN1bHQ7Cn0K
Cn0KCnVzaW5nIFdURjo6bWFrZVN0cmluZzsKCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdPcGVyYXRvcnMuaCIgMQojIDIzICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ09wZXJhdG9ycy5oIgojZGVmaW5lIFN0cmluZ09wZXJhdG9yc19oIAoKbmFtZXNwYWNlIFdU
RiB7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTI+
CmNsYXNzIFN0cmluZ0FwcGVuZCB7CnB1YmxpYzoKICAgIFN0cmluZ0FwcGVuZChTdHJpbmdUeXBl
MSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyKQogICAgICAgIDogbV9zdHJpbmcxKHN0cmlu
ZzEpCiAgICAgICAgLCBtX3N0cmluZzIoc3RyaW5nMikKICAgIHsKICAgIH0KCiAgICBvcGVyYXRv
ciBTdHJpbmcoKSBjb25zdAogICAgewogICAgICAgIFN0cmluZyByZXN1bHQgPSB0cnlNYWtlU3Ry
aW5nKG1fc3RyaW5nMSwgbV9zdHJpbmcyKTsKICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAg
ICAgV1RGQ3Jhc2goKTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKICAgIG9wZXJhdG9y
IEF0b21pY1N0cmluZygpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG9wZXJhdG9yIFN0cmlu
ZygpOwogICAgfQoKICAgIGJvb2wgaXM4Qml0KCkKICAgIHsKICAgICAgICBTdHJpbmdUeXBlQWRh
cHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEobV9zdHJpbmcxKTsKICAgICAgICBTdHJpbmdUeXBl
QWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIobV9zdHJpbmcyKTsKICAgICAgICByZXR1cm4g
YWRhcHRlcjEuaXM4Qml0KCkgJiYgYWRhcHRlcjIuaXM4Qml0KCk7CiAgICB9CgogICAgdm9pZCB3
cml0ZVRvKExDaGFyKiBkZXN0aW5hdGlvbikKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAg
ICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTE+IGFkYXB0ZXIxKG1fc3RyaW5nMSk7CiAg
ICAgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIyKG1fc3RyaW5nMik7
CiAgICAgICAgYWRhcHRlcjEud3JpdGVUbyhkZXN0aW5hdGlvbik7CiAgICAgICAgYWRhcHRlcjIu
d3JpdGVUbyhkZXN0aW5hdGlvbiArIGFkYXB0ZXIxLmxlbmd0aCgpKTsKICAgIH0KCiAgICB2b2lk
IHdyaXRlVG8oVUNoYXIqIGRlc3RpbmF0aW9uKQogICAgewogICAgICAgIFN0cmluZ1R5cGVBZGFw
dGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVyMShtX3N0cmluZzEpOwogICAgICAgIFN0cmluZ1R5cGVB
ZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVyMihtX3N0cmluZzIpOwogICAgICAgIGFkYXB0ZXIx
LndyaXRlVG8oZGVzdGluYXRpb24pOwogICAgICAgIGFkYXB0ZXIyLndyaXRlVG8oZGVzdGluYXRp
b24gKyBhZGFwdGVyMS5sZW5ndGgoKSk7CiAgICB9CgogICAgdW5zaWduZWQgbGVuZ3RoKCkKICAg
IHsKICAgICAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEobV9zdHJp
bmcxKTsKICAgICAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIobV9z
dHJpbmcyKTsKICAgICAgICByZXR1cm4gYWRhcHRlcjEubGVuZ3RoKCkgKyBhZGFwdGVyMi5sZW5n
dGgoKTsKICAgIH0KCnByaXZhdGU6CiAgICBTdHJpbmdUeXBlMSBtX3N0cmluZzE7CiAgICBTdHJp
bmdUeXBlMiBtX3N0cmluZzI7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlw
ZW5hbWUgU3RyaW5nVHlwZTI+CmNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ0FwcGVuZDxT
dHJpbmdUeXBlMSwgU3RyaW5nVHlwZTI+PiB7CnB1YmxpYzoKICAgIFN0cmluZ1R5cGVBZGFwdGVy
PFN0cmluZ0FwcGVuZDxTdHJpbmdUeXBlMSwgU3RyaW5nVHlwZTI+PihTdHJpbmdBcHBlbmQ8U3Ry
aW5nVHlwZTEsIFN0cmluZ1R5cGUyPiYgYnVmZmVyKQogICAgICAgIDogbV9idWZmZXIoYnVmZmVy
KQogICAgewogICAgfQoKICAgIHVuc2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIG1fYnVmZmVyLmxl
bmd0aCgpOyB9CgogICAgYm9vbCBpczhCaXQoKSB7IHJldHVybiBtX2J1ZmZlci5pczhCaXQoKTsg
fQoKICAgIHZvaWQgd3JpdGVUbyhMQ2hhciogZGVzdGluYXRpb24pIHsgbV9idWZmZXIud3JpdGVU
byhkZXN0aW5hdGlvbik7IH0KICAgIHZvaWQgd3JpdGVUbyhVQ2hhciogZGVzdGluYXRpb24pIHsg
bV9idWZmZXIud3JpdGVUbyhkZXN0aW5hdGlvbik7IH0KCiAgICBTdHJpbmcgdG9TdHJpbmcoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQoKcHJpdmF0ZToKICAgIFN0cmluZ0FwcGVuZDxTdHJp
bmdUeXBlMSwgU3RyaW5nVHlwZTI+JiBtX2J1ZmZlcjsKfTsKCmlubGluZSBTdHJpbmdBcHBlbmQ8
Y29uc3QgY2hhciosIFN0cmluZz4gb3BlcmF0b3IrKGNvbnN0IGNoYXIqIHN0cmluZzEsIGNvbnN0
IFN0cmluZyYgc3RyaW5nMikKewogICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxjb25zdCBjaGFyKiwg
U3RyaW5nPihzdHJpbmcxLCBzdHJpbmcyKTsKfQoKaW5saW5lIFN0cmluZ0FwcGVuZDxjb25zdCBj
aGFyKiwgQXRvbWljU3RyaW5nPiBvcGVyYXRvcisoY29uc3QgY2hhciogc3RyaW5nMSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBzdHJpbmcyKQp7CiAgICByZXR1cm4gU3RyaW5nQXBwZW5kPGNvbnN0IGNo
YXIqLCBBdG9taWNTdHJpbmc+KHN0cmluZzEsIHN0cmluZzIpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFt
ZSBVLCB0eXBlbmFtZSBWPgppbmxpbmUgU3RyaW5nQXBwZW5kPGNvbnN0IGNoYXIqLCBTdHJpbmdB
cHBlbmQ8VSwgVj4+IG9wZXJhdG9yKyhjb25zdCBjaGFyKiBzdHJpbmcxLCBjb25zdCBTdHJpbmdB
cHBlbmQ8VSwgVj4mIHN0cmluZzIpCnsKICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8Y29uc3QgY2hh
ciosIFN0cmluZ0FwcGVuZDxVLCBWPj4oc3RyaW5nMSwgc3RyaW5nMik7Cn0KCmlubGluZSBTdHJp
bmdBcHBlbmQ8Y29uc3QgVUNoYXIqLCBTdHJpbmc+IG9wZXJhdG9yKyhjb25zdCBVQ2hhciogc3Ry
aW5nMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcyKQp7CiAgICByZXR1cm4gU3RyaW5nQXBwZW5kPGNv
bnN0IFVDaGFyKiwgU3RyaW5nPihzdHJpbmcxLCBzdHJpbmcyKTsKfQoKaW5saW5lIFN0cmluZ0Fw
cGVuZDxjb25zdCBVQ2hhciosIEF0b21pY1N0cmluZz4gb3BlcmF0b3IrKGNvbnN0IFVDaGFyKiBz
dHJpbmcxLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZzIpCnsKICAgIHJldHVybiBTdHJpbmdB
cHBlbmQ8Y29uc3QgVUNoYXIqLCBBdG9taWNTdHJpbmc+KHN0cmluZzEsIHN0cmluZzIpOwp9Cgp0
ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgppbmxpbmUgU3RyaW5nQXBwZW5kPGNvbnN0
IFVDaGFyKiwgU3RyaW5nQXBwZW5kPFUsIFY+PiBvcGVyYXRvcisoY29uc3QgVUNoYXIqIHN0cmlu
ZzEsIGNvbnN0IFN0cmluZ0FwcGVuZDxVLCBWPiYgc3RyaW5nMikKewogICAgcmV0dXJuIFN0cmlu
Z0FwcGVuZDxjb25zdCBVQ2hhciosIFN0cmluZ0FwcGVuZDxVLCBWPj4oc3RyaW5nMSwgc3RyaW5n
Mik7Cn0KCmlubGluZSBTdHJpbmdBcHBlbmQ8QVNDSUlMaXRlcmFsLCBTdHJpbmc+IG9wZXJhdG9y
Kyhjb25zdCBBU0NJSUxpdGVyYWwmIHN0cmluZzEsIGNvbnN0IFN0cmluZyYgc3RyaW5nMikKewog
ICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWwsIFN0cmluZz4oc3RyaW5nMSwgc3Ry
aW5nMik7Cn0KCmlubGluZSBTdHJpbmdBcHBlbmQ8QVNDSUlMaXRlcmFsLCBBdG9taWNTdHJpbmc+
IG9wZXJhdG9yKyhjb25zdCBBU0NJSUxpdGVyYWwmIHN0cmluZzEsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc3RyaW5nMikKewogICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWwsIEF0b21p
Y1N0cmluZz4oc3RyaW5nMSwgc3RyaW5nMik7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFY+CmlubGluZSBTdHJpbmdBcHBlbmQ8QVNDSUlMaXRlcmFsLCBTdHJpbmdBcHBlbmQ8VSwg
Vj4+IG9wZXJhdG9yKyhjb25zdCBBU0NJSUxpdGVyYWwmIHN0cmluZzEsIGNvbnN0IFN0cmluZ0Fw
cGVuZDxVLCBWPiYgc3RyaW5nMikKewogICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVy
YWwsIFN0cmluZ0FwcGVuZDxVLCBWPj4oc3RyaW5nMSwgc3RyaW5nMik7Cn0KCnRlbXBsYXRlPHR5
cGVuYW1lIFQ+ClN0cmluZ0FwcGVuZDxTdHJpbmcsIFQ+IG9wZXJhdG9yKyhjb25zdCBTdHJpbmcm
IHN0cmluZzEsIFQgc3RyaW5nMikKewogICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxTdHJpbmcsIFQ+
KHN0cmluZzEsIHN0cmluZzIpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBXPgpTdHJpbmdBcHBlbmQ8U3RyaW5nQXBwZW5kPFUsIFY+LCBXPiBvcGVyYXRvciso
Y29uc3QgU3RyaW5nQXBwZW5kPFUsIFY+JiBzdHJpbmcxLCBXIHN0cmluZzIpCnsKICAgIHJldHVy
biBTdHJpbmdBcHBlbmQ8U3RyaW5nQXBwZW5kPFUsIFY+LCBXPihzdHJpbmcxLCBzdHJpbmcyKTsK
fQoKfQojIDg0MCAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5o
IiAyCiMgMzczICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oIiAyCiMg
NzY0ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIiAyCiMgMzEgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaCIgMgoKbmFt
ZXNwYWNlIEpTQyB7CgpzdHJ1Y3QgQ29kZU9yaWdpbjsKc3RydWN0IElubGluZUNhbGxGcmFtZTsK
CmNsYXNzIENvZGVCbG9jazsKY2xhc3MgRXhlY1N0YXRlOwpjbGFzcyBKU0Z1bmN0aW9uOwpjbGFz
cyBKU09iamVjdDsKY2xhc3MgSlNTY29wZTsKY2xhc3MgQ2xvbmVkQXJndW1lbnRzOwpjbGFzcyBS
ZWdpc3RlcjsKCnR5cGVkZWYgRXhlY1N0YXRlIENhbGxGcmFtZTsKCmNsYXNzIFN0YWNrVmlzaXRv
ciB7CnB1YmxpYzoKICAgIGNsYXNzIEZyYW1lIHsKICAgIHB1YmxpYzoKICAgICAgICBlbnVtIENv
ZGVUeXBlIHsKICAgICAgICAgICAgR2xvYmFsLAogICAgICAgICAgICBFdmFsLAogICAgICAgICAg
ICBGdW5jdGlvbiwKICAgICAgICAgICAgTW9kdWxlLAogICAgICAgICAgICBOYXRpdmUKICAgICAg
ICB9OwoKICAgICAgICBzaXplX3QgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CiAg
ICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgY29uc3QgeyByZXR1cm4g
bV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgfQogICAgICAgIGJvb2wgY2FsbGVySXNWTUVu
dHJ5RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlcklzVk1FbnRyeUZyYW1lOyB9CiAgICAg
ICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVyRnJhbWU7
IH0KICAgICAgICBKU09iamVjdCogY2FsbGVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWU7IH0K
ICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
OyB9CiAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2J5
dGVjb2RlT2Zmc2V0OyB9CiAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUo
KSBjb25zdCB7CgogICAgICAgICAgICByZXR1cm4gbV9pbmxpbmVDYWxsRnJhbWU7CgoKCiAgICAg
ICAgfQoKICAgICAgICBib29sIGlzSlNGcmFtZSgpIGNvbnN0IHsgcmV0dXJuICEhY29kZUJsb2Nr
KCk7IH0KICAgICAgICBib29sIGlzSW5saW5lZEZyYW1lKCkgY29uc3QgeyByZXR1cm4gISFpbmxp
bmVDYWxsRnJhbWUoKTsgfQoKICAgICAgICBTdHJpbmcgZnVuY3Rpb25OYW1lKCk7CiAgICAgICAg
U3RyaW5nIHNvdXJjZVVSTCgpOwogICAgICAgIFN0cmluZyB0b1N0cmluZygpOwoKICAgICAgICBp
bnRwdHJfdCBzb3VyY2VJRCgpOwoKICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0Owog
ICAgICAgIHZvaWQgY29tcHV0ZUxpbmVBbmRDb2x1bW4odW5zaWduZWQmIGxpbmUsIHVuc2lnbmVk
JiBjb2x1bW4pOwoKICAgICAgICBDbG9uZWRBcmd1bWVudHMqIGNyZWF0ZUFyZ3VtZW50cygpOwog
ICAgICAgIFZNRW50cnlGcmFtZSogdm1FbnRyeUZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9WTUVu
dHJ5RnJhbWU7IH0KICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FsbEZyYW1lOyB9CgogICAgICAgIHZvaWQgcHJpbnQoaW50IGluZGVudExldmVsKTsKCiAg
ICBwcml2YXRlOgogICAgICAgIEZyYW1lKCkgeyB9CiAgICAgICAgfkZyYW1lKCkgeyB9CgogICAg
ICAgIHZvaWQgcmV0cmlldmVFeHByZXNzaW9uSW5mbyhpbnQmIGRpdm90LCBpbnQmIHN0YXJ0T2Zm
c2V0LCBpbnQmIGVuZE9mZnNldCwgdW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pOwog
ICAgICAgIHZvaWQgc2V0VG9FbmQoKTsKCiAgICAgICAgc2l6ZV90IG1faW5kZXg7CiAgICAgICAg
c2l6ZV90IG1fYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAgICAgVk1FbnRyeUZyYW1l
KiBtX1ZNRW50cnlGcmFtZTsKICAgICAgICBWTUVudHJ5RnJhbWUqIG1fQ2FsbGVyVk1FbnRyeUZy
YW1lOwogICAgICAgIENhbGxGcmFtZSogbV9jYWxsZXJGcmFtZTsKICAgICAgICBKU09iamVjdCog
bV9jYWxsZWU7CiAgICAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICAgICB1bnNpZ25l
ZCBtX2J5dGVjb2RlT2Zmc2V0OwogICAgICAgIGJvb2wgbV9jYWxsZXJJc1ZNRW50cnlGcmFtZTsK
CiAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBtX2lubGluZUNhbGxGcmFtZTsKCiAgICAgICAgQ2Fs
bEZyYW1lKiBtX2NhbGxGcmFtZTsKCiAgICAgICAgZnJpZW5kIGNsYXNzIFN0YWNrVmlzaXRvcjsK
ICAgIH07CgogICAgZW51bSBTdGF0dXMgewogICAgICAgIENvbnRpbnVlID0gMCwKICAgICAgICBE
b25lID0gMQogICAgfTsKCgoKCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KICAgIHN0
YXRpYyB2b2lkIHZpc2l0KENhbGxGcmFtZSogc3RhcnRGcmFtZSwgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKICAgIHsKICAgICAgICBTdGFja1Zpc2l0b3IgdmlzaXRvcihzdGFydEZyYW1lKTsKICAg
ICAgICB3aGlsZSAodmlzaXRvci0+Y2FsbEZyYW1lKCkpIHsKICAgICAgICAgICAgU3RhdHVzIHN0
YXR1cyA9IGZ1bmN0b3IodmlzaXRvcik7CiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gQ29udGlu
dWUpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgdmlzaXRvci5nb3RvTmV4dEZy
YW1lKCk7CiAgICAgICAgfQogICAgfQoKICAgIEZyYW1lJiBvcGVyYXRvciooKSB7IHJldHVybiBt
X2ZyYW1lOyB9CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBG
cmFtZSogb3BlcmF0b3ItPigpIHsgcmV0dXJuICZtX2ZyYW1lOyB9CiAgICB2b2lkIHVud2luZFRv
TWFjaGluZUNvZGVCbG9ja0ZyYW1lKCk7Cgpwcml2YXRlOgogICAgU3RhY2tWaXNpdG9yKENhbGxG
cmFtZSogc3RhcnRGcmFtZSk7CgogICAgdm9pZCBnb3RvTmV4dEZyYW1lKCk7CgogICAgdm9pZCBy
ZWFkRnJhbWUoQ2FsbEZyYW1lKik7CiAgICB2b2lkIHJlYWROb25JbmxpbmVkRnJhbWUoQ2FsbEZy
YW1lKiwgQ29kZU9yaWdpbiogPSAwKTsKCiAgICB2b2lkIHJlYWRJbmxpbmVkRnJhbWUoQ2FsbEZy
YW1lKiwgQ29kZU9yaWdpbiopOwoKCiAgICBGcmFtZSBtX2ZyYW1lOwp9OwoKY2xhc3MgQ2FsbGVy
RnVuY3RvciB7CnB1YmxpYzoKICAgIENhbGxlckZ1bmN0b3IoKQogICAgICAgIDogbV9oYXNTa2lw
cGVkRmlyc3RGcmFtZShmYWxzZSkKICAgICAgICAsIG1fY2FsbGVyRnJhbWUoMCkKICAgIHsKICAg
IH0KCiAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZXJG
cmFtZTsgfQoKICAgIFN0YWNrVmlzaXRvcjo6U3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tWaXNpdG9y
JiB2aXNpdG9yKSBjb25zdAogICAgewogICAgICAgIGlmICghbV9oYXNTa2lwcGVkRmlyc3RGcmFt
ZSkgewogICAgICAgICAgICBtX2hhc1NraXBwZWRGaXJzdEZyYW1lID0gdHJ1ZTsKICAgICAgICAg
ICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAgICAgICAgfQoKICAgICAgICBtX2Nh
bGxlckZyYW1lID0gdmlzaXRvci0+Y2FsbEZyYW1lKCk7CiAgICAgICAgcmV0dXJuIFN0YWNrVmlz
aXRvcjo6RG9uZTsKICAgIH0KCnByaXZhdGU6CiAgICBtdXRhYmxlIGJvb2wgbV9oYXNTa2lwcGVk
Rmlyc3RGcmFtZTsKICAgIG11dGFibGUgQ2FsbEZyYW1lKiBtX2NhbGxlckZyYW1lOwp9OwoKfQoj
IDMxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgi
IDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIiAxCiMgMzAg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgiCiNkZWZpbmUgVk1faCAK
CiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uY3VycmVudEpJVExv
Y2suaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25jdXJy
ZW50SklUTG9jay5oIgojZGVmaW5lIENvbmN1cnJlbnRKSVRMb2NrX2ggCgojIDEgIi4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmgiCiNkZWZpbmUgRGVmZXJHQ19oIAoKIyAxICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgiIDEKIyAyMyAiLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIgojZGVmaW5lIEhlYXBfaCAKCiMgMSAiLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCIgMQojIDI3ICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIgojZGVmaW5l
IEFycmF5QnVmZmVyX2ggCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dD
SW5jb21pbmdSZWZDb3VudGVkLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvR0NJbmNvbWluZ1JlZkNvdW50ZWQuaCIKI2RlZmluZSBHQ0luY29taW5nUmVmQ291bnRl
ZF9oIAoKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9EZWZlcnJhYmxlUmVmQ291bnRlZC5oIiAx
CiMgMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0RlZmVycmFibGVSZWZDb3VudGVkLmgiCiNkZWZp
bmUgRGVmZXJyYWJsZVJlZkNvdW50ZWRfaCAKCgoKCgpuYW1lc3BhY2UgV1RGIHsKCgoKCgoKCmNs
YXNzIERlZmVycmFibGVSZWZDb3VudGVkQmFzZSB7CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
ZGVmZXJyZWRGbGFnID0gMTsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBub3JtYWxJbmNyZW1l
bnQgPSAyOwoKcHVibGljOgogICAgdm9pZCByZWYoKQogICAgewogICAgICAgIG1fcmVmQ291bnQg
Kz0gbm9ybWFsSW5jcmVtZW50OwogICAgfQoKICAgIGJvb2wgaGFzT25lUmVmKCkgY29uc3QKICAg
IHsKICAgICAgICByZXR1cm4gcmVmQ291bnQoKSA9PSAxOwogICAgfQoKICAgIHVuc2lnbmVkIHJl
ZkNvdW50KCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9yZWZDb3VudCAvIG5vcm1hbElu
Y3JlbWVudDsKICAgIH0KCiAgICBib29sIGlzRGVmZXJyZWQoKSBjb25zdAogICAgewogICAgICAg
IHJldHVybiAhIShtX3JlZkNvdW50ICYgZGVmZXJyZWRGbGFnKTsKICAgIH0KCnByb3RlY3RlZDoK
ICAgIERlZmVycmFibGVSZWZDb3VudGVkQmFzZSgpCiAgICAgICAgOiBtX3JlZkNvdW50KG5vcm1h
bEluY3JlbWVudCkKICAgIHsKICAgIH0KCiAgICB+RGVmZXJyYWJsZVJlZkNvdW50ZWRCYXNlKCkK
ICAgIHsKICAgIH0KCiAgICBib29sIGRlcmVmQmFzZSgpCiAgICB7CiAgICAgICAgbV9yZWZDb3Vu
dCAtPSBub3JtYWxJbmNyZW1lbnQ7CiAgICAgICAgcmV0dXJuICFtX3JlZkNvdW50OwogICAgfQoK
ICAgIGJvb2wgc2V0SXNEZWZlcnJlZEJhc2UoYm9vbCB2YWx1ZSkKICAgIHsKICAgICAgICBpZiAo
dmFsdWUpIHsKICAgICAgICAgICAgbV9yZWZDb3VudCB8PSBkZWZlcnJlZEZsYWc7CiAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgbV9yZWZDb3VudCAmPSB+ZGVmZXJy
ZWRGbGFnOwogICAgICAgIHJldHVybiAhbV9yZWZDb3VudDsKICAgIH0KCnByaXZhdGU6CiAgICB1
bnNpZ25lZCBtX3JlZkNvdW50Owp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KY2xhc3MgRGVmZXJy
YWJsZVJlZkNvdW50ZWQgOiBwdWJsaWMgRGVmZXJyYWJsZVJlZkNvdW50ZWRCYXNlIHsKICAgIHBy
aXZhdGU6IERlZmVycmFibGVSZWZDb3VudGVkKGNvbnN0IERlZmVycmFibGVSZWZDb3VudGVkJikg
PSBkZWxldGU7IERlZmVycmFibGVSZWZDb3VudGVkJiBvcGVyYXRvcj0oY29uc3QgRGVmZXJyYWJs
ZVJlZkNvdW50ZWQmKSA9IGRlbGV0ZTs7IHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZv
aWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJl
dHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lk
KiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBk
ZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVy
biBsb2NhdGlvbjsgfSBwcml2YXRlOiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNl
bWljb2xvbkFmdGVyVGhpc01hY3JvOwpwdWJsaWM6CiAgICB2b2lkIGRlcmVmKCkKICAgIHsKICAg
ICAgICBpZiAoZGVyZWZCYXNlKCkpCiAgICAgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxUKj4o
dGhpcyk7CiAgICB9CgogICAgYm9vbCBzZXRJc0RlZmVycmVkKGJvb2wgdmFsdWUpCiAgICB7CiAg
ICAgICAgaWYgKCFzZXRJc0RlZmVycmVkQmFzZSh2YWx1ZSkpCiAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8VCo+KHRoaXMpOwogICAgICAgIHJldHVy
biB0cnVlOwogICAgfQoKcHJvdGVjdGVkOgogICAgRGVmZXJyYWJsZVJlZkNvdW50ZWQoKSB7IH0K
ICAgIH5EZWZlcnJhYmxlUmVmQ291bnRlZCgpIHsgfQp9OwoKfQoKdXNpbmcgV1RGOjpEZWZlcnJh
YmxlUmVmQ291bnRlZDsKIyAzMCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NJ
bmNvbWluZ1JlZkNvdW50ZWQuaCIgMgoKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgSlNDZWxsOwoK
CgoKCgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KY2xhc3MgR0NJbmNvbWluZ1JlZkNvdW50ZWQgOiBw
dWJsaWMgRGVmZXJyYWJsZVJlZkNvdW50ZWQ8VD4gewpwdWJsaWM6CiAgICBHQ0luY29taW5nUmVm
Q291bnRlZCgpCiAgICAgICAgOiBtX2VuY29kZWRQb2ludGVyKDApCiAgICB7CiAgICB9CgogICAg
fkdDSW5jb21pbmdSZWZDb3VudGVkKCkKICAgIHsKICAgICAgICBpZiAoaGFzVmVjdG9yT2ZDZWxs
cygpKQogICAgICAgICAgICBkZWxldGUgdmVjdG9yT2ZDZWxscygpOwogICAgfQoKICAgIHNpemVf
dCBudW1iZXJPZkluY29taW5nUmVmZXJlbmNlcygpIGNvbnN0CiAgICB7CiAgICAgICAgaWYgKCFo
YXNBbnlJbmNvbWluZygpKQogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBpZiAoaGFzU2lu
Z2xldG9uKCkpCiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIHJldHVybiB2ZWN0b3JPZkNl
bGxzKCktPnNpemUoKTsKICAgIH0KCiAgICBKU0NlbGwqIGluY29taW5nUmVmZXJlbmNlQXQoc2l6
ZV90IGluZGV4KSBjb25zdAogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICBpZiAoaGFz
U2luZ2xldG9uKCkpIHsKICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICByZXR1cm4g
c2luZ2xldG9uKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB2ZWN0b3JPZkNlbGxzKCktPmF0
KGluZGV4KTsKICAgIH0KCgoKCiAgICBib29sIGFkZEluY29taW5nUmVmZXJlbmNlKEpTQ2VsbCop
OwoKCgoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyRnVuY3Rpb25UeXBlPgogICAgYm9v
bCBmaWx0ZXJJbmNvbWluZ1JlZmVyZW5jZXMoRmlsdGVyRnVuY3Rpb25UeXBlJik7Cgpwcml2YXRl
OgogICAgc3RhdGljIHVpbnRwdHJfdCBzaW5nbGV0b25GbGFnKCkgeyByZXR1cm4gMTsgfQoKICAg
IGJvb2wgaGFzVmVjdG9yT2ZDZWxscygpIGNvbnN0IHsgcmV0dXJuICEobV9lbmNvZGVkUG9pbnRl
ciAmIHNpbmdsZXRvbkZsYWcoKSk7IH0KICAgIGJvb2wgaGFzQW55SW5jb21pbmcoKSBjb25zdCB7
IHJldHVybiAhIW1fZW5jb2RlZFBvaW50ZXI7IH0KICAgIGJvb2wgaGFzU2luZ2xldG9uKCkgY29u
c3QgeyByZXR1cm4gaGFzQW55SW5jb21pbmcoKSAmJiAhaGFzVmVjdG9yT2ZDZWxscygpOyB9Cgog
ICAgSlNDZWxsKiBzaW5nbGV0b24oKSBjb25zdAogICAgewogICAgICAgICgodm9pZCkwKTsKICAg
ICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTQ2VsbCo+KG1fZW5jb2RlZFBvaW50ZXIgJiB+c2lu
Z2xldG9uRmxhZygpKTsKICAgIH0KCiAgICBWZWN0b3I8SlNDZWxsKj4qIHZlY3Rvck9mQ2VsbHMo
KSBjb25zdAogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gYml0d2lzZV9j
YXN0PFZlY3RvcjxKU0NlbGwqPio+KG1fZW5jb2RlZFBvaW50ZXIpOwogICAgfQoKCgogICAgdWlu
dHB0cl90IG1fZW5jb2RlZFBvaW50ZXI7Cn07Cgp9CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9XZWFrLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvV2Vhay5oIgojZGVmaW5lIFdlYWtfaCAKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvY3N0ZGRlZiIgMSAzCiMgNDAgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvY3N0
ZGRlZiIgMwojZGVmaW5lIF9HTElCQ1hYX0NTVERERUYgMQoKICAgICAgIAojIDQzICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2NzdGRkZWYi
IDMKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80
LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDQ2ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2NzdGRkZWYiIDIgMwoKCm5hbWVzcGFj
ZSBzdGQKewoKICB1c2luZyA6Om1heF9hbGlnbl90Owp9CiMgMzEgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1dlYWsuaCIgMgoKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgV2Vha0lt
cGw7CmNsYXNzIFdlYWtIYW5kbGVPd25lcjsKCgogdm9pZCB3ZWFrQ2xlYXJTbG93Q2FzZShXZWFr
SW1wbComKTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWsgewogICAgcHJpdmF0ZTog
V2Vhayhjb25zdCBXZWFrJikgPSBkZWxldGU7IFdlYWsmIG9wZXJhdG9yPShjb25zdCBXZWFrJikg
PSBkZWxldGU7OwpwdWJsaWM6CiAgICBXZWFrKCkKICAgICAgICA6IG1faW1wbCgwKQogICAgewog
ICAgfQoKICAgIFdlYWsoc3RkOjpudWxscHRyX3QpCiAgICAgICAgOiBtX2ltcGwoMCkKICAgIHsK
ICAgIH0KCiAgICBXZWFrKFQqLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9
IDApOwoKICAgIGVudW0gSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnIHsgSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlIH07CiAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Q7CiAgICBX
ZWFrKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyk7CgogICAgV2VhayhXZWFrJiYpOwoKICAgIH5X
ZWFrKCkKICAgIHsKICAgICAgICBjbGVhcigpOwogICAgfQoKICAgIHZvaWQgc3dhcChXZWFrJik7
CgogICAgV2VhayYgb3BlcmF0b3I9KFdlYWsmJik7CgogICAgYm9vbCBvcGVyYXRvciEoKSBjb25z
dDsKICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdDsKICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0Owog
ICAgVCogZ2V0KCkgY29uc3Q7CgogICAgYm9vbCB3YXMoVCopIGNvbnN0OwoKICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdDsKCiAgICBXZWFrSW1wbCogbGVha0ltcGwoKSBfX2F0dHJp
YnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7CiAgICB2b2lkIGNsZWFyKCkKICAgIHsK
ICAgICAgICBpZiAoIW1faW1wbCkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIHdlYWtDbGVh
clNsb3dDYXNlKG1faW1wbCk7CiAgICB9Cgpwcml2YXRlOgogICAgc3RhdGljIFdlYWtJbXBsKiBo
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsKCiAgICBXZWFrSW1wbCogbV9pbXBsOwp9OwoKfQojIDMx
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIiAyCgoK
CgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIEFycmF5QnVmZmVyOwpjbGFzcyBBcnJheUJ1ZmZlclZp
ZXc7CmNsYXNzIEpTQXJyYXlCdWZmZXI7Cgp0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCh2b2lk
Kik+IEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uOwpzdGF0aWMgdm9pZCBhcnJheUJ1ZmZl
ckRlc3RydWN0b3JOdWxsKHZvaWQqKSB7IH0Kc3RhdGljIHZvaWQgYXJyYXlCdWZmZXJEZXN0cnVj
dG9yRGVmYXVsdCh2b2lkKiBwKSB7IGZhc3RGcmVlKHApOyB9CgpjbGFzcyBBcnJheUJ1ZmZlckNv
bnRlbnRzIHsKICAgIHByaXZhdGU6IEFycmF5QnVmZmVyQ29udGVudHMoY29uc3QgQXJyYXlCdWZm
ZXJDb250ZW50cyYpID0gZGVsZXRlOyBBcnJheUJ1ZmZlckNvbnRlbnRzJiBvcGVyYXRvcj0oY29u
c3QgQXJyYXlCdWZmZXJDb250ZW50cyYpID0gZGVsZXRlOzsKcHVibGljOgogICAgQXJyYXlCdWZm
ZXJDb250ZW50cygpCiAgICAgICAgOiBtX2Rlc3RydWN0b3IoYXJyYXlCdWZmZXJEZXN0cnVjdG9y
TnVsbCkKICAgICAgICAsIG1fZGF0YShudWxscHRyKQogICAgICAgICwgbV9zaXplSW5CeXRlcygw
KQogICAgeyB9CgogICAgaW5saW5lIH5BcnJheUJ1ZmZlckNvbnRlbnRzKCk7CgogICAgdm9pZCog
ZGF0YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQogICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSB7IHJl
dHVybiBtX3NpemVJbkJ5dGVzOyB9Cgpwcml2YXRlOgogICAgQXJyYXlCdWZmZXJDb250ZW50cyh2
b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywgQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVu
Y3Rpb24mJiBkZXN0cnVjdG9yKQogICAgICAgIDogbV9kYXRhKGRhdGEpCiAgICAgICAgLCBtX3Np
emVJbkJ5dGVzKHNpemVJbkJ5dGVzKQogICAgewogICAgICAgIG1fZGVzdHJ1Y3RvciA9IHN0ZDo6
bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4oZGVzdHJ1Y3Rvcik7CiAgICB9CgogICAgZnJp
ZW5kIGNsYXNzIEFycmF5QnVmZmVyOwoKICAgIGVudW0gSW5pdGlhbGl6YXRpb25Qb2xpY3kgewog
ICAgICAgIFplcm9Jbml0aWFsaXplLAogICAgICAgIERvbnRJbml0aWFsaXplCiAgICB9OwoKICAg
IHN0YXRpYyBpbmxpbmUgdm9pZCB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0aWFsaXphdGlvblBvbGljeSwgQXJyYXlCdWZmZXJD
b250ZW50cyYpOwogICAgdm9pZCB0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikK
ICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgc3RkOjpzd2FwKG1fZGF0YSwgb3RoZXIu
bV9kYXRhKTsKICAgICAgICBzdGQ6OnN3YXAobV9zaXplSW5CeXRlcywgb3RoZXIubV9zaXplSW5C
eXRlcyk7CiAgICAgICAgc3RkOjpzd2FwKG1fZGVzdHJ1Y3Rvciwgb3RoZXIubV9kZXN0cnVjdG9y
KTsKICAgIH0KCiAgICB2b2lkIGNvcHlUbyhBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKICAg
IHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxs
b2NhdGUobV9zaXplSW5CeXRlcywgc2l6ZW9mKGNoYXIpLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpE
b250SW5pdGlhbGl6ZSwgb3RoZXIpOwogICAgICAgIGlmICghb3RoZXIubV9kYXRhKQogICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgbWVtY3B5KG90aGVyLm1fZGF0YSwgbV9kYXRhLCBtX3NpemVJ
bkJ5dGVzKTsKICAgICAgICBvdGhlci5tX3NpemVJbkJ5dGVzID0gbV9zaXplSW5CeXRlczsKICAg
IH0KCiAgICBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0b3I7CiAgICB2
b2lkKiBtX2RhdGE7CiAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOwp9OwoKY2xhc3MgQXJyYXlC
dWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKcHVibGlj
OgogICAgc3RhdGljIGlubGluZSBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1F
bGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgIHN0YXRpYyBpbmxpbmUgUmVm
PEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXImKTsKICAgIHN0YXRpYyBpbmxpbmUgUmVm
PEFycmF5QnVmZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVu
Z3RoKTsKICAgIHN0YXRpYyBpbmxpbmUgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZm
ZXJDb250ZW50cyYpOwogICAgc3RhdGljIGlubGluZSBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUFk
b3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CiAgICBzdGF0aWMg
aW5saW5lIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlRnJvbUJ5dGVzKGNvbnN0IHZvaWQqIGRhdGEs
IHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOwog
ICAgc3RhdGljIGlubGluZSBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgIHN0YXRpYyBpbmxpbmUg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKICAgIHN0YXRpYyBp
bmxpbmUgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1
bnNpZ25lZCBieXRlTGVuZ3RoKTsKCgogICAgc3RhdGljIGlubGluZSBSZWY8QXJyYXlCdWZmZXI+
IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSk7CiAgICBzdGF0aWMgaW5saW5lIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKTsKCiAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwogICAgaW5saW5lIGNvbnN0IHZvaWQq
IGRhdGEoKSBjb25zdDsKICAgIGlubGluZSB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7Cgog
ICAgaW5saW5lIHNpemVfdCBnY1NpemVFc3RpbWF0ZUluQnl0ZXMoKSBjb25zdDsKCiAgICBpbmxp
bmUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShpbnQgYmVnaW4sIGludCBlbmQpIGNvbnN0Owog
ICAgaW5saW5lIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoaW50IGJlZ2luKSBjb25zdDsKCiAg
ICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgIGlubGluZSB2b2lkIHVucGluKCk7CiAgICBpbmxpbmUg
dm9pZCBwaW5BbmRMb2NrKCk7CgogICAgYm9vbCB0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRz
Jik7CiAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiAhbV9jb250ZW50cy5tX2RhdGE7IH0K
CiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRGF0YSgpIHsgcmV0dXJuIChyZWludGVycHJl
dF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEFycmF5QnVmZmVyKj4oMHg0MDAw
KS0+bV9jb250ZW50cykpIC0gMHg0MDAwKSArIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4o
JihyZWludGVycHJldF9jYXN0PEFycmF5QnVmZmVyQ29udGVudHMqPigweDQwMDApLT5tX2RhdGEp
KSAtIDB4NDAwMCk7IH0KCiAgICB+QXJyYXlCdWZmZXIoKSB7IH0KCnByaXZhdGU6CiAgICBzdGF0
aWMgaW5saW5lIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0
aW9uUG9saWN5KTsKICAgIHN0YXRpYyBpbmxpbmUgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJbnRl
cm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiwgY29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKICAgIHN0
YXRpYyBpbmxpbmUgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5p
dGlhbGl6YXRpb25Qb2xpY3kpOwogICAgaW5saW5lIEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29u
dGVudHMmKTsKICAgIGlubGluZSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25l
ZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKICAgIGlubGluZSB1bnNpZ25lZCBjbGFtcElu
ZGV4KGludCBpbmRleCkgY29uc3Q7CiAgICBzdGF0aWMgaW5saW5lIGludCBjbGFtcFZhbHVlKGlu
dCB4LCBpbnQgbGVmdCwgaW50IHJpZ2h0KTsKCiAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIG1fY29u
dGVudHM7CiAgICB1bnNpZ25lZCBtX3BpbkNvdW50IDogMzE7CiAgICBib29sIG1fbG9ja2VkIDog
MTsKCnB1YmxpYzoKICAgIFdlYWs8SlNBcnJheUJ1ZmZlcj4gbV93cmFwcGVyOwp9OwoKaW50IEFy
cmF5QnVmZmVyOjpjbGFtcFZhbHVlKGludCB4LCBpbnQgbGVmdCwgaW50IHJpZ2h0KQp7CiAgICAo
KHZvaWQpMCk7CiAgICBpZiAoeCA8IGxlZnQpCiAgICAgICAgeCA9IGxlZnQ7CiAgICBpZiAocmln
aHQgPCB4KQogICAgICAgIHggPSByaWdodDsKICAgIHJldHVybiB4Owp9CgpSZWY8QXJyYXlCdWZm
ZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSkKewogICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUobnVtRWxlbWVudHMs
IGVsZW1lbnRCeXRlU2l6ZSk7CiAgICBpZiAoIWJ1ZmZlcikKICAgICAgICBXVEZDcmFzaCgpOwog
ICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwp9CgpSZWY8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQp7CiAgICByZXR1cm4gQXJyYXlC
dWZmZXI6OmNyZWF0ZShvdGhlci5kYXRhKCksIG90aGVyLmJ5dGVMZW5ndGgoKSk7Cn0KClJlZjxB
cnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpCnsKICAgIGF1dG8gYnVmZmVyID0gdHJ5Q3JlYXRlKHNvdXJjZSwgYnl0
ZUxlbmd0aCk7CiAgICBpZiAoIWJ1ZmZlcikKICAgICAgICBXVEZDcmFzaCgpOwogICAgcmV0dXJu
IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwp9CgpSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVy
OjpjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYgY29udGVudHMpCnsKICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEFycmF5QnVmZmVyKGNvbnRlbnRzKSk7Cn0KClJlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OmNyZWF0ZUFkb3B0ZWQoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxl
bmd0aCkKewogICAgcmV0dXJuIGNyZWF0ZUZyb21CeXRlcyhkYXRhLCBieXRlTGVuZ3RoLCBzdGQ6
Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KGFycmF5QnVmZmVyRGVzdHJ1Y3RvckRlZmF1
bHQpKTsKfQoKUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGNv
bnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3Rv
ckZ1bmN0aW9uJiYgZGVzdHJ1Y3RvcikKewogICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50
cyhjb25zdF9jYXN0PHZvaWQqPihkYXRhKSwgYnl0ZUxlbmd0aCwgc3RkOjptb3ZlPFdURjo6Q2hl
Y2tNb3ZlUGFyYW1ldGVyPihkZXN0cnVjdG9yKSk7CiAgICByZXR1cm4gY3JlYXRlKGNvbnRlbnRz
KTsKfQoKUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHVuc2lnbmVk
IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCnsKICAgIHJldHVybiB0cnlD
cmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6
WmVyb0luaXRpYWxpemUpOwp9CgpSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUoQXJyYXlCdWZmZXImIG90aGVyKQp7CiAgICByZXR1cm4gdHJ5Q3JlYXRlKG90aGVyLmRh
dGEoKSwgb3RoZXIuYnl0ZUxlbmd0aCgpKTsKfQoKUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkK
ewogICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgIEFycmF5QnVmZmVyQ29udGVu
dHM6OnRyeUFsbG9jYXRlKGJ5dGVMZW5ndGgsIDEsIEFycmF5QnVmZmVyQ29udGVudHM6Olplcm9J
bml0aWFsaXplLCBjb250ZW50cyk7CiAgICBpZiAoIWNvbnRlbnRzLm1fZGF0YSkKICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChjb250ZW50cywgc291cmNl
LCBieXRlTGVuZ3RoKTsKfQoKUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KQp7CiAgICByZXR1cm4gY3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5
QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKfQoKUmVmUHRyPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQp7CiAgICByZXR1cm4gdHJ5Q3JlYXRlKG51bUVsZW1l
bnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXpl
KTsKfQoKUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Oklu
aXRpYWxpemF0aW9uUG9saWN5IHBvbGljeSkKewogICAgYXV0byBidWZmZXIgPSB0cnlDcmVhdGUo
bnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSwgcG9saWN5KTsKICAgIGlmICghYnVmZmVyKQog
ICAgICAgIFdURkNyYXNoKCk7CiAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cn0K
ClJlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVy
Q29udGVudHMmIGNvbnRlbnRzLCBjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpCnsKICAgICgodm9pZCkwKTsKICAgIGF1dG8gYnVmZmVyID0gYWRvcHRSZWYoKm5ldyBBcnJh
eUJ1ZmZlcihjb250ZW50cykpOwogICAgbWVtY3B5KGJ1ZmZlci0+ZGF0YSgpLCBzb3VyY2UsIGJ5
dGVMZW5ndGgpOwogICAgcmV0dXJuIGJ1ZmZlcjsKfQoKUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6dHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5IHBvbGlj
eSkKewogICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKICAgIEFycmF5QnVmZmVyQ29u
dGVudHM6OnRyeUFsbG9jYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIHBvbGljeSwg
Y29udGVudHMpOwogICAgaWYgKCFjb250ZW50cy5tX2RhdGEpCiAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcnJheUJ1ZmZlcihjb250ZW50cykpOwp9CgpB
cnJheUJ1ZmZlcjo6QXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYgY29udGVudHMpCiAg
ICA6IG1fcGluQ291bnQoMCkKICAgICwgbV9sb2NrZWQoZmFsc2UpCnsKICAgIGNvbnRlbnRzLnRy
YW5zZmVyKG1fY29udGVudHMpOwp9Cgp2b2lkKiBBcnJheUJ1ZmZlcjo6ZGF0YSgpCnsKICAgIHJl
dHVybiBtX2NvbnRlbnRzLm1fZGF0YTsKfQoKY29uc3Qgdm9pZCogQXJyYXlCdWZmZXI6OmRhdGEo
KSBjb25zdAp7CiAgICByZXR1cm4gbV9jb250ZW50cy5tX2RhdGE7Cn0KCnVuc2lnbmVkIEFycmF5
QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKewogICAgcmV0dXJuIG1fY29udGVudHMubV9zaXpl
SW5CeXRlczsKfQoKc2l6ZV90IEFycmF5QnVmZmVyOjpnY1NpemVFc3RpbWF0ZUluQnl0ZXMoKSBj
b25zdAp7CiAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSArIHN0YXRpY19jYXN0PHNpemVf
dD4oYnl0ZUxlbmd0aCgpKTsKfQoKUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xp
Y2UoaW50IGJlZ2luLCBpbnQgZW5kKSBjb25zdAp7CiAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1w
SW5kZXgoYmVnaW4pLCBjbGFtcEluZGV4KGVuZCkpOwp9CgpSZWZQdHI8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpzbGljZShpbnQgYmVnaW4pIGNvbnN0CnsKICAgIHJldHVybiBzbGljZUltcGwo
Y2xhbXBJbmRleChiZWdpbiksIGJ5dGVMZW5ndGgoKSk7Cn0KClJlZlB0cjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25z
dAp7CiAgICB1bnNpZ25lZCBzaXplID0gYmVnaW4gPD0gZW5kID8gZW5kIC0gYmVnaW4gOiAwOwog
ICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEoKSkgKyBiZWdpbiwgc2l6ZSk7Cn0KCnVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4
KGludCBpbmRleCkgY29uc3QKewogICAgdW5zaWduZWQgY3VycmVudExlbmd0aCA9IGJ5dGVMZW5n
dGgoKTsKICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgaW5kZXggPSBjdXJyZW50TGVuZ3RoICsg
aW5kZXg7CiAgICByZXR1cm4gY2xhbXBWYWx1ZShpbmRleCwgMCwgY3VycmVudExlbmd0aCk7Cn0K
CnZvaWQgQXJyYXlCdWZmZXI6OnBpbigpCnsKICAgIG1fcGluQ291bnQrKzsKfQoKdm9pZCBBcnJh
eUJ1ZmZlcjo6dW5waW4oKQp7CiAgICBtX3BpbkNvdW50LS07Cn0KCnZvaWQgQXJyYXlCdWZmZXI6
OnBpbkFuZExvY2soKQp7CiAgICBtX2xvY2tlZCA9IHRydWU7Cn0KCnZvaWQgQXJyYXlCdWZmZXJD
b250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kgcG9s
aWN5LCBBcnJheUJ1ZmZlckNvbnRlbnRzJiByZXN1bHQpCnsKCiAgICBpZiAobnVtRWxlbWVudHMp
IHsKICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBudW1FbGVtZW50cyAqIGVsZW1lbnRCeXRl
U2l6ZTsKICAgICAgICBpZiAodG90YWxTaXplIC8gbnVtRWxlbWVudHMgIT0gZWxlbWVudEJ5dGVT
aXplCiAgICAgICAgICAgIHx8IHRvdGFsU2l6ZSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKICAgICAgICAgICAgcmVzdWx0Lm1f
ZGF0YSA9IDA7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBib29sIGFs
bG9jYXRpb25TdWNjZWVkZWQgPSBmYWxzZTsKICAgIGlmIChwb2xpY3kgPT0gWmVyb0luaXRpYWxp
emUpCiAgICAgICAgYWxsb2NhdGlvblN1Y2NlZWRlZCA9IFdURjo6dHJ5RmFzdENhbGxvYyhudW1F
bGVtZW50cywgZWxlbWVudEJ5dGVTaXplKS5nZXRWYWx1ZShyZXN1bHQubV9kYXRhKTsKICAgIGVs
c2UgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICBhbGxvY2F0aW9uU3VjY2VlZGVkID0gV1RG
Ojp0cnlGYXN0TWFsbG9jKG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplKS5nZXRWYWx1ZShy
ZXN1bHQubV9kYXRhKTsKICAgIH0KCiAgICBpZiAoYWxsb2NhdGlvblN1Y2NlZWRlZCkgewogICAg
ICAgIHJlc3VsdC5tX3NpemVJbkJ5dGVzID0gbnVtRWxlbWVudHMgKiBlbGVtZW50Qnl0ZVNpemU7
CiAgICAgICAgcmVzdWx0Lm1fZGVzdHJ1Y3RvciA9IGFycmF5QnVmZmVyRGVzdHJ1Y3RvckRlZmF1
bHQ7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgcmVzdWx0Lm1fZGF0YSA9IDA7Cn0KCkFycmF5
QnVmZmVyQ29udGVudHM6On5BcnJheUJ1ZmZlckNvbnRlbnRzKCkKewogICAgbV9kZXN0cnVjdG9y
KG1fZGF0YSk7Cn0KCn0KCnVzaW5nIEpTQzo6QXJyYXlCdWZmZXI7CiMgMjYgIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oIgojZGVmaW5lIENvZGVCbG9ja1NldF9oIAoKIyAx
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmgiIDEK
IyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheS5o
IgojZGVmaW5lIEdDU2VnbWVudGVkQXJyYXlfaCAKCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYv
RG91Ymx5TGlua2VkTGlzdC5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0RvdWJseUxp
bmtlZExpc3QuaCIKI2RlZmluZSBEb3VibHlMaW5rZWRMaXN0X2ggCgpuYW1lc3BhY2UgV1RGIHsK
Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBEb3VibHlMaW5rZWRMaXN0Tm9kZSB7CnB1Ymxp
YzoKICAgIERvdWJseUxpbmtlZExpc3ROb2RlKCk7CgogICAgdm9pZCBzZXRQcmV2KFQqKTsKICAg
IHZvaWQgc2V0TmV4dChUKik7CgogICAgVCogcHJldigpIGNvbnN0OwogICAgVCogbmV4dCgpIGNv
bnN0Owp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIERvdWJseUxpbmtlZExpc3ROb2Rl
PFQ+OjpEb3VibHlMaW5rZWRMaXN0Tm9kZSgpCnsKICAgIHNldFByZXYoMCk7CiAgICBzZXROZXh0
KDApOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBEb3VibHlMaW5rZWRMaXN0
Tm9kZTxUPjo6c2V0UHJldihUKiBwcmV2KQp7CiAgICBzdGF0aWNfY2FzdDxUKj4odGhpcyktPm1f
cHJldiA9IHByZXY7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIERvdWJseUxp
bmtlZExpc3ROb2RlPFQ+OjpzZXROZXh0KFQqIG5leHQpCnsKICAgIHN0YXRpY19jYXN0PFQqPih0
aGlzKS0+bV9uZXh0ID0gbmV4dDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIERv
dWJseUxpbmtlZExpc3ROb2RlPFQ+OjpwcmV2KCkgY29uc3QKewogICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IFQqPih0aGlzKS0+bV9wcmV2Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgVCogRG91Ymx5TGlua2VkTGlzdE5vZGU8VD46Om5leHQoKSBjb25zdAp7CiAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgVCo+KHRoaXMpLT5tX25leHQ7Cn0KCnRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGNsYXNzIERvdWJseUxpbmtlZExpc3QgewpwdWJsaWM6CiAgICBEb3VibHlMaW5rZWRMaXN0
KCk7CgogICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0Owog
ICAgdm9pZCBjbGVhcigpOwoKICAgIFQqIGhlYWQoKSBjb25zdDsKICAgIFQqIHJlbW92ZUhlYWQo
KTsKCiAgICBUKiB0YWlsKCkgY29uc3Q7CgogICAgdm9pZCBwdXNoKFQqKTsKICAgIHZvaWQgYXBw
ZW5kKFQqKTsKICAgIHZvaWQgcmVtb3ZlKFQqKTsKICAgIHZvaWQgYXBwZW5kKERvdWJseUxpbmtl
ZExpc3Q8VD4mKTsKCnByaXZhdGU6CiAgICBUKiBtX2hlYWQ7CiAgICBUKiBtX3RhaWw7Cn07Cgp0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgRG91Ymx5TGlua2VkTGlzdDxUPjo6RG91Ymx5TGlu
a2VkTGlzdCgpCiAgICA6IG1faGVhZCgwKQogICAgLCBtX3RhaWwoMCkKewp9Cgp0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBEb3VibHlMaW5rZWRMaXN0PFQ+Ojppc0VtcHR5KCkgY29u
c3QKewogICAgcmV0dXJuICFtX2hlYWQ7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBz
aXplX3QgRG91Ymx5TGlua2VkTGlzdDxUPjo6c2l6ZSgpIGNvbnN0CnsKICAgIHNpemVfdCBzaXpl
ID0gMDsKICAgIGZvciAoVCogbm9kZSA9IG1faGVhZDsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHQo
KSkKICAgICAgICArK3NpemU7CiAgICByZXR1cm4gc2l6ZTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUg
VD4gaW5saW5lIHZvaWQgRG91Ymx5TGlua2VkTGlzdDxUPjo6Y2xlYXIoKQp7CiAgICBtX2hlYWQg
PSAwOwogICAgbV90YWlsID0gMDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIERv
dWJseUxpbmtlZExpc3Q8VD46OmhlYWQoKSBjb25zdAp7CiAgICByZXR1cm4gbV9oZWFkOwp9Cgp0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCogRG91Ymx5TGlua2VkTGlzdDxUPjo6dGFpbCgp
IGNvbnN0CnsKICAgIHJldHVybiBtX3RhaWw7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGlu
ZSB2b2lkIERvdWJseUxpbmtlZExpc3Q8VD46OnB1c2goVCogbm9kZSkKewogICAgaWYgKCFtX2hl
YWQpIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9oZWFkID0gbm9kZTsKICAgICAgICBt
X3RhaWwgPSBub2RlOwogICAgICAgIG5vZGUtPnNldFByZXYoMCk7CiAgICAgICAgbm9kZS0+c2V0
TmV4dCgwKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgKCh2b2lkKTApOwogICAgbV9oZWFk
LT5zZXRQcmV2KG5vZGUpOwogICAgbm9kZS0+c2V0TmV4dChtX2hlYWQpOwogICAgbm9kZS0+c2V0
UHJldigwKTsKICAgIG1faGVhZCA9IG5vZGU7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGlu
ZSB2b2lkIERvdWJseUxpbmtlZExpc3Q8VD46OmFwcGVuZChUKiBub2RlKQp7CiAgICBpZiAoIW1f
dGFpbCkgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICBtX2hlYWQgPSBub2RlOwogICAgICAg
IG1fdGFpbCA9IG5vZGU7CiAgICAgICAgbm9kZS0+c2V0UHJldigwKTsKICAgICAgICBub2RlLT5z
ZXROZXh0KDApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAoKHZvaWQpMCk7CiAgICBtX3Rh
aWwtPnNldE5leHQobm9kZSk7CiAgICBub2RlLT5zZXRQcmV2KG1fdGFpbCk7CiAgICBub2RlLT5z
ZXROZXh0KDApOwogICAgbV90YWlsID0gbm9kZTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIHZvaWQgRG91Ymx5TGlua2VkTGlzdDxUPjo6cmVtb3ZlKFQqIG5vZGUpCnsKICAgIGlmIChu
b2RlLT5wcmV2KCkpIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbm9kZS0+cHJldigpLT5z
ZXROZXh0KG5vZGUtPm5leHQoKSk7CiAgICB9IGVsc2UgewogICAgICAgICgodm9pZCkwKTsKICAg
ICAgICBtX2hlYWQgPSBub2RlLT5uZXh0KCk7CiAgICB9CgogICAgaWYgKG5vZGUtPm5leHQoKSkg
ewogICAgICAgICgodm9pZCkwKTsKICAgICAgICBub2RlLT5uZXh0KCktPnNldFByZXYobm9kZS0+
cHJldigpKTsKICAgIH0gZWxzZSB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIG1fdGFpbCA9
IG5vZGUtPnByZXYoKTsKICAgIH0KfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIERv
dWJseUxpbmtlZExpc3Q8VD46OnJlbW92ZUhlYWQoKQp7CiAgICBUKiBub2RlID0gaGVhZCgpOwog
ICAgaWYgKG5vZGUpCiAgICAgICAgcmVtb3ZlKG5vZGUpOwogICAgcmV0dXJuIG5vZGU7Cn0KCnRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIERvdWJseUxpbmtlZExpc3Q8VD46OmFwcGVu
ZChEb3VibHlMaW5rZWRMaXN0PFQ+JiBvdGhlcikKewogICAgaWYgKCFvdGhlci5oZWFkKCkpCiAg
ICAgICAgcmV0dXJuOwoKICAgIGlmICghaGVhZCgpKSB7CiAgICAgICAgbV9oZWFkID0gb3RoZXIu
aGVhZCgpOwogICAgICAgIG1fdGFpbCA9IG90aGVyLnRhaWwoKTsKICAgICAgICBvdGhlci5jbGVh
cigpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAoKHZvaWQpMCk7CiAgICAoKHZvaWQpMCk7
CiAgICBUKiBvdGhlckhlYWQgPSBvdGhlci5oZWFkKCk7CiAgICBUKiBvdGhlclRhaWwgPSBvdGhl
ci50YWlsKCk7CiAgICBvdGhlci5jbGVhcigpOwoKICAgICgodm9pZCkwKTsKICAgIG1fdGFpbC0+
c2V0TmV4dChvdGhlckhlYWQpOwogICAgKCh2b2lkKTApOwogICAgb3RoZXJIZWFkLT5zZXRQcmV2
KG1fdGFpbCk7CiAgICBtX3RhaWwgPSBvdGhlclRhaWw7Cn0KCn0KCnVzaW5nIFdURjo6RG91Ymx5
TGlua2VkTGlzdE5vZGU7CnVzaW5nIFdURjo6RG91Ymx5TGlua2VkTGlzdDsKIyAzMCAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheS5oIiAyCgoKbmFtZXNw
YWNlIEpTQyB7Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KY2xhc3MgR0NBcnJheVNlZ21lbnQgOiBw
dWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8R0NBcnJheVNlZ21lbnQ8VD4+IHsKICAgIGZyaWVu
ZCBjbGFzcyBXVEY6OkRvdWJseUxpbmtlZExpc3ROb2RlPEdDQXJyYXlTZWdtZW50PFQ+PjsKcHVi
bGljOgogICAgR0NBcnJheVNlZ21lbnQoKQogICAgICAgIDogRG91Ymx5TGlua2VkTGlzdE5vZGU8
R0NBcnJheVNlZ21lbnQ8VD4+KCkKCgoKICAgIHsKICAgIH0KCiAgICBzdGF0aWMgR0NBcnJheVNl
Z21lbnQqIGNyZWF0ZSgpOwogICAgc3RhdGljIHZvaWQgZGVzdHJveShHQ0FycmF5U2VnbWVudCop
OwoKICAgIFQqIGRhdGEoKQogICAgewogICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VCo+KHRo
aXMgKyAxKTsKICAgIH0KCiAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrU2l6ZSA9IDQgKiBL
QjsKCiAgICBHQ0FycmF5U2VnbWVudCogbV9wcmV2OwogICAgR0NBcnJheVNlZ21lbnQqIG1fbmV4
dDsKCgoKfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBHQ1NlZ21lbnRlZEFycmF5SXRl
cmF0b3I7Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KY2xhc3MgR0NTZWdtZW50ZWRBcnJheSB7CiAg
ICBmcmllbmQgY2xhc3MgR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yPFQ+OwogICAgZnJpZW5kIGNs
YXNzIEdDU2VnbWVudGVkQXJyYXlJdGVyYXRvcjxjb25zdCBUPjsKcHVibGljOgogICAgR0NTZWdt
ZW50ZWRBcnJheSgpOwogICAgfkdDU2VnbWVudGVkQXJyYXkoKTsKCiAgICB2b2lkIGFwcGVuZChU
KTsKCiAgICBib29sIGNhblJlbW92ZUxhc3QoKTsKICAgIGNvbnN0IFQgcmVtb3ZlTGFzdCgpOwog
ICAgYm9vbCByZWZpbGwoKTsKCiAgICBzaXplX3Qgc2l6ZSgpOwogICAgYm9vbCBpc0VtcHR5KCk7
CgogICAgdm9pZCBmaWxsVmVjdG9yKFZlY3RvcjxUPiYpOwogICAgdm9pZCBjbGVhcigpOwoKICAg
IHR5cGVkZWYgR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yPFQ+IGl0ZXJhdG9yOwogICAgaXRlcmF0
b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBHQ1NlZ21lbnRlZEFycmF5SXRlcmF0b3I8VD4obV9z
ZWdtZW50cy5oZWFkKCksIG1fdG9wKTsgfQogICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yPFQ+KCk7IH0KCnByb3RlY3RlZDoKICAgIHRlbXBs
YXRlIDxzaXplX3Qgc2l6ZT4gc3RydWN0IENhcGFjaXR5RnJvbVNpemUgewogICAgICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgdmFsdWUgPSAoc2l6ZSAtIHNpemVvZihHQ0FycmF5U2VnbWVudDxUPikp
IC8gc2l6ZW9mKFQpOwogICAgfTsKCiAgICB2b2lkIGV4cGFuZCgpOwoKICAgIHNpemVfdCBwb3N0
SW5jVG9wKCk7CiAgICBzaXplX3QgcHJlRGVjVG9wKCk7CiAgICB2b2lkIHNldFRvcEZvckZ1bGxT
ZWdtZW50KCk7CiAgICB2b2lkIHNldFRvcEZvckVtcHR5U2VnbWVudCgpOwogICAgc2l6ZV90IHRv
cCgpOwoKICAgIHZvaWQgdmFsaWRhdGVQcmV2aW91cygpOwoKICAgIERvdWJseUxpbmtlZExpc3Q8
R0NBcnJheVNlZ21lbnQ8VD4+IG1fc2VnbWVudHM7CgogICAgc3RhdGljIGNvbnN0IHNpemVfdCBz
X3NlZ21lbnRDYXBhY2l0eSA9IENhcGFjaXR5RnJvbVNpemU8R0NBcnJheVNlZ21lbnQ8VD46OmJs
b2NrU2l6ZT46OnZhbHVlOwogICAgc2l6ZV90IG1fdG9wOwogICAgc2l6ZV90IG1fbnVtYmVyT2ZT
ZWdtZW50czsKfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpjbGFzcyBHQ1NlZ21lbnRlZEFycmF5
SXRlcmF0b3IgewogICAgZnJpZW5kIGNsYXNzIEdDU2VnbWVudGVkQXJyYXk8VD47CnB1YmxpYzoK
ICAgIEdDU2VnbWVudGVkQXJyYXlJdGVyYXRvcigpCiAgICAgICAgOiBtX2N1cnJlbnRTZWdtZW50
KDApCiAgICAgICAgLCBtX2N1cnJlbnRPZmZzZXQoMCkKICAgIHsKICAgIH0KCiAgICBUJiBnZXQo
KSB7IHJldHVybiBtX2N1cnJlbnRTZWdtZW50LT5kYXRhKClbbV9jdXJyZW50T2Zmc2V0XTsgfQog
ICAgVCYgb3BlcmF0b3IqKCkgeyByZXR1cm4gZ2V0KCk7IH0KICAgIFQmIG9wZXJhdG9yLT4oKSB7
IHJldHVybiBnZXQoKTsgfQoKICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHQ1NlZ21lbnRlZEFy
cmF5SXRlcmF0b3ImIG90aGVyKQogICAgewogICAgICAgIHJldHVybiBtX2N1cnJlbnRTZWdtZW50
ID09IG90aGVyLm1fY3VycmVudFNlZ21lbnQgJiYgbV9jdXJyZW50T2Zmc2V0ID09IG90aGVyLm1f
Y3VycmVudE9mZnNldDsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR0NTZWdtZW50
ZWRBcnJheUl0ZXJhdG9yJiBvdGhlcikKICAgIHsKICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7CiAgICB9CgogICAgR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yJiBvcGVyYXRvcisrKCkK
ICAgIHsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgIG1fY3VycmVudE9mZnNldCsrOwoKICAg
ICAgICBpZiAobV9jdXJyZW50T2Zmc2V0ID49IG1fb2Zmc2V0TGltaXQpIHsKICAgICAgICAgICAg
bV9jdXJyZW50U2VnbWVudCA9IG1fY3VycmVudFNlZ21lbnQtPm5leHQoKTsKICAgICAgICAgICAg
bV9jdXJyZW50T2Zmc2V0ID0gMDsKICAgICAgICAgICAgbV9vZmZzZXRMaW1pdCA9IEdDU2VnbWVu
dGVkQXJyYXk8VD46OnNfc2VnbWVudENhcGFjaXR5OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgfQoKcHJpdmF0ZToKICAgIEdDU2VnbWVudGVkQXJyYXlJdGVyYXRvcihHQ0Fy
cmF5U2VnbWVudDxUPiogc3RhcnQsIHNpemVfdCB0b3ApCiAgICAgICAgOiBtX2N1cnJlbnRTZWdt
ZW50KHN0YXJ0KQogICAgICAgICwgbV9jdXJyZW50T2Zmc2V0KDApCiAgICAgICAgLCBtX29mZnNl
dExpbWl0KHRvcCkKICAgIHsKICAgICAgICBpZiAoIW1fb2Zmc2V0TGltaXQpCiAgICAgICAgICAg
IG1fY3VycmVudFNlZ21lbnQgPSBudWxscHRyOwogICAgfQoKICAgIEdDQXJyYXlTZWdtZW50PFQ+
KiBtX2N1cnJlbnRTZWdtZW50OwogICAgc2l6ZV90IG1fY3VycmVudE9mZnNldDsKICAgIHNpemVf
dCBtX29mZnNldExpbWl0Owp9OwoKfQojIDMwICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db2RlQmxvY2tTZXQuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBPcGVyYXRpb24uaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwT3BlcmF0aW9uLmgiCiNkZWZpbmUgSGVhcE9wZXJhdGlvbl9oIAoKbmFtZXNwYWNl
IEpTQyB7CgplbnVtIEhlYXBPcGVyYXRpb24geyBOb09wZXJhdGlvbiwgQWxsb2NhdGlvbiwgRnVs
bENvbGxlY3Rpb24sIEVkZW5Db2xsZWN0aW9uLCBBbnlDb2xsZWN0aW9uIH07Cgp9CiMgMzEgIi4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oIiAyCiMgMSAiLi4v
Li4vU291cmNlL1dURi93dGYvSGFzaFNldC5oIiAxCiMgMjIgIi4uLy4uL1NvdXJjZS9XVEYvd3Rm
L0hhc2hTZXQuaCIKI2RlZmluZSBXVEZfSGFzaFNldF9oIAoKCgoKCgpuYW1lc3BhY2UgV1RGIHsK
CiAgICBzdHJ1Y3QgSWRlbnRpdHlFeHRyYWN0b3I7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4gY2xhc3MgSGFzaFNl
dDsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZyA9IHR5
cGVuYW1lIERlZmF1bHRIYXNoPFZhbHVlQXJnPjo6SGFzaCwKICAgICAgICB0eXBlbmFtZSBUcmFp
dHNBcmcgPSBIYXNoVHJhaXRzPFZhbHVlQXJnPj4gY2xhc3MgSGFzaFNldCBmaW5hbCB7CiAgICAg
ICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBw
OyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9j
KHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVl
KHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6
ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpX
VEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcs
IHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHByaXZhdGU6
IHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87
CiAgICBwcml2YXRlOgogICAgICAgIHR5cGVkZWYgSGFzaEFyZyBIYXNoRnVuY3Rpb25zOwogICAg
ICAgIHR5cGVkZWYgVHJhaXRzQXJnIFZhbHVlVHJhaXRzOwoKICAgIHB1YmxpYzoKICAgICAgICB0
eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpUcmFpdFR5cGUgVmFsdWVUeXBlOwoKICAgIHBy
aXZhdGU6CiAgICAgICAgdHlwZWRlZiBIYXNoVGFibGU8VmFsdWVUeXBlLCBWYWx1ZVR5cGUsIElk
ZW50aXR5RXh0cmFjdG9yLAogICAgICAgICAgICBIYXNoRnVuY3Rpb25zLCBWYWx1ZVRyYWl0cywg
VmFsdWVUcmFpdHM+IEhhc2hUYWJsZVR5cGU7CgogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYg
SGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBp
dGVyYXRvcjsKICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhh
c2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gY29uc3RfaXRlcmF0b3I7CiAgICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpBZGRSZXN1bHQgQWRkUmVzdWx0OwoKICAgICAgICBIYXNo
U2V0KCkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBIYXNoU2V0KHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxWYWx1ZUFyZz4gaW5pdGlhbGl6ZXJMaXN0KQogICAgICAgIHsKICAgICAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiB2YWx1ZSA6IGluaXRpYWxpemVyTGlzdCkKICAgICAgICAgICAgICAg
IGFkZCh2YWx1ZSk7CiAgICAgICAgfQoKICAgICAgICB2b2lkIHN3YXAoSGFzaFNldCYpOwoKICAg
ICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3Q7CiAgICAgICAgdW5zaWduZWQgY2FwYWNpdHkoKSBj
b25zdDsKICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKCiAgICAgICAgaXRlcmF0b3IgYmVn
aW4oKSBjb25zdDsKICAgICAgICBpdGVyYXRvciBlbmQoKSBjb25zdDsKCiAgICAgICAgaXRlcmF0
b3IgZmluZChjb25zdCBWYWx1ZVR5cGUmKSBjb25zdDsKICAgICAgICBib29sIGNvbnRhaW5zKGNv
bnN0IFZhbHVlVHlwZSYpIGNvbnN0OwoKCgoKCgogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhh
c2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBpdGVyYXRvciBmaW5kKGNvbnN0IFQmKSBjb25zdDsK
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gYm9v
bCBjb250YWlucyhjb25zdCBUJikgY29uc3Q7CgoKCiAgICAgICAgQWRkUmVzdWx0IGFkZChjb25z
dCBWYWx1ZVR5cGUmKTsKICAgICAgICBBZGRSZXN1bHQgYWRkKFZhbHVlVHlwZSYmKTsKCgoKCgoK
CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+IEFk
ZFJlc3VsdCBhZGQoY29uc3QgVCYpOwoKCgogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJh
dG9yVHlwZT4KICAgICAgICBib29sIGFkZChJdGVyYXRvclR5cGUgYmVnaW4sIEl0ZXJhdG9yVHlw
ZSBlbmQpOwoKICAgICAgICBib29sIHJlbW92ZShjb25zdCBWYWx1ZVR5cGUmKTsKICAgICAgICBi
b29sIHJlbW92ZShpdGVyYXRvcik7CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
ICAgICAgICB2b2lkIHJlbW92ZUlmKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAgICB2b2lkIGNsZWFy
KCk7CgogICAgICAgIFZhbHVlVHlwZSB0YWtlKGNvbnN0IFZhbHVlVHlwZSYpOwogICAgICAgIFZh
bHVlVHlwZSB0YWtlKGl0ZXJhdG9yKTsKICAgICAgICBWYWx1ZVR5cGUgdGFrZUFueSgpOwoKCiAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgViA9IFZhbHVlVHlwZT4gdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGl0ZXJhdG9yPjo6dHlwZSBmaW5kKHR5cGVuYW1l
IEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSkgY29uc3Q7CiAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgViA9IFZhbHVlVHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6
dmFsdWUsIGJvb2w+Ojp0eXBlIGNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRy
VHlwZSkgY29uc3Q7CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgViA9IFZhbHVlVHlwZT4gdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBlIHJl
bW92ZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUpOwogICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFYgPSBWYWx1ZVR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQ
dHI8Vj46OnZhbHVlLCBWYWx1ZVR5cGU+Ojp0eXBlIHRha2UodHlwZW5hbWUgR2V0UHRySGVscGVy
PFY+OjpQdHJUeXBlKTsKCiAgICAgICAgc3RhdGljIGJvb2wgaXNWYWxpZFZhbHVlKGNvbnN0IFZh
bHVlVHlwZSYpOwoKICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckNvbGxlY3Rpb24+CiAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE90aGVyQ29sbGVjdGlvbiYpIGNvbnN0OwoKICAg
IHByaXZhdGU6CiAgICAgICAgSGFzaFRhYmxlVHlwZSBtX2ltcGw7CiAgICB9OwoKICAgIHN0cnVj
dCBJZGVudGl0eUV4dHJhY3RvciB7CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGlj
IGNvbnN0IFQmIGV4dHJhY3QoY29uc3QgVCYgdCkgeyByZXR1cm4gdDsgfQogICAgfTsKCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoRnVuY3Rpb25zPgogICAgc3RydWN0IEhhc2hTZXRUcmFuc2xh
dG9yIHsKICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdW5zaWduZWQgaGFzaChj
b25zdCBUJiBrZXkpIHsgcmV0dXJuIEhhc2hGdW5jdGlvbnM6Omhhc2goa2V5KTsgfQogICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IFQmIGEsIGNvbnN0IFUmIGIpIHsgcmV0dXJuIEhhc2hGdW5jdGlvbnM6OmVxdWFsKGEsIGIpOyB9
CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3Rh
dGljIHZvaWQgdHJhbnNsYXRlKFQmIGxvY2F0aW9uLCBVJiYsIFYmJiB2YWx1ZSkgeyBsb2NhdGlv
biA9IHN0ZDo6Zm9yd2FyZDxWPih2YWx1ZSk7IH0KICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgVHJhbnNsYXRvcj4KICAgIHN0cnVjdCBIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXIgewogICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtl
eSkgeyByZXR1cm4gVHJhbnNsYXRvcjo6aGFzaChrZXkpOyB9CiAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVCYgYSwgY29uc3Qg
VSYgYikgeyByZXR1cm4gVHJhbnNsYXRvcjo6ZXF1YWwoYSwgYik7IH0KICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoVCYgbG9jYXRp
b24sIGNvbnN0IFUmIGtleSwgY29uc3QgVSYsIHVuc2lnbmVkIGhhc2hDb2RlKQogICAgICAgIHsK
ICAgICAgICAgICAgVHJhbnNsYXRvcjo6dHJhbnNsYXRlKGxvY2F0aW9uLCBrZXksIGhhc2hDb2Rl
KTsKICAgICAgICB9CiAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFY+CiAgICBpbmxpbmUgdm9pZCBIYXNoU2V0PFQsIFUsIFY+Ojpzd2FwKEhhc2hT
ZXQmIG90aGVyKQogICAgewogICAgICAgIG1faW1wbC5zd2FwKG90aGVyLm1faW1wbCk7CiAgICB9
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KICAgIGlu
bGluZSB1bnNpZ25lZCBIYXNoU2V0PFQsIFUsIFY+OjpzaXplKCkgY29uc3QKICAgIHsKICAgICAg
ICByZXR1cm4gbV9pbXBsLnNpemUoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgogICAgaW5saW5lIHVuc2lnbmVkIEhhc2hTZXQ8VCwgVSwg
Vj46OmNhcGFjaXR5KCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLmNhcGFjaXR5
KCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
Vj4KICAgIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgVj46OmlzRW1wdHkoKSBjb25zdAogICAg
ewogICAgICAgIHJldHVybiBtX2ltcGwuaXNFbXB0eSgpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiAgICBpbmxpbmUgYXV0byBIYXNoU2V0
PFQsIFUsIFY+OjpiZWdpbigpIGNvbnN0IC0+IGl0ZXJhdG9yCiAgICB7CiAgICAgICAgcmV0dXJu
IG1faW1wbC5iZWdpbigpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFY+CiAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFY+OjplbmQoKSBj
b25zdCAtPiBpdGVyYXRvcgogICAgewogICAgICAgIHJldHVybiBtX2ltcGwuZW5kKCk7CiAgICB9
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KICAgIGlu
bGluZSBhdXRvIEhhc2hTZXQ8VCwgVSwgVj46OmZpbmQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkg
Y29uc3QgLT4gaXRlcmF0b3IKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLmZpbmQodmFsdWUp
OwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+
CiAgICBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojpjb250YWlucyhjb25zdCBWYWx1ZVR5
cGUmIHZhbHVlKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX2ltcGwuY29udGFpbnModmFs
dWUpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNs
YXRvciwgdHlwZW5hbWUgVD4KICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cz46OmZpbmQoY29uc3QgVCYgdmFsdWUpIGNvbnN0IC0+IGl0ZXJhdG9yCiAg
ICB7CiAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBmaW5kPEhhc2hTZXRUcmFuc2xhdG9y
QWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4+KHZhbHVlKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgogICAg
dGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+CiAgICBpbmxpbmUg
Ym9vbCBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb250YWlucyhjb25z
dCBUJiB2YWx1ZSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGNv
bnRhaW5zPEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4+KHZhbHVlKTsK
ICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgog
ICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFs
dWUpIC0+IEFkZFJlc3VsdAogICAgewogICAgICAgIHJldHVybiBtX2ltcGwuYWRkKHZhbHVlKTsK
ICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgog
ICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWPjo6YWRkKFZhbHVlVHlwZSYmIHZhbHVlKSAt
PiBBZGRSZXN1bHQKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLmFkZChzdGQ6Om1vdmU8V1RG
OjpDaGVja01vdmVQYXJhbWV0ZXI+KHZhbHVlKSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgogICAgaW5saW5lIGF1
dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKGNvbnN0IFQmIHZh
bHVlKSAtPiBBZGRSZXN1bHQKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFk
ZFBhc3NpbmdIYXNoQ29kZTxIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+
Pih2YWx1ZSwgdmFsdWUpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFY+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvclR5cGU+CiAgICBp
bmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjphZGQoSXRlcmF0b3JUeXBlIGJlZ2luLCBJdGVy
YXRvclR5cGUgZW5kKQogICAgewogICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAgICAg
IGZvciAoSXRlcmF0b3JUeXBlIGl0ZXIgPSBiZWdpbjsgaXRlciAhPSBlbmQ7ICsraXRlcikKICAg
ICAgICAgICAgY2hhbmdlZCB8PSBhZGQoKml0ZXIpLmlzTmV3RW50cnk7CiAgICAgICAgcmV0dXJu
IGNoYW5nZWQ7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgVj4KICAgIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgVj46OnJlbW92ZShpdGVyYXRv
ciBpdCkKICAgIHsKICAgICAgICBpZiAoaXQubV9pbXBsID09IG1faW1wbC5lbmQoKSkKICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIG1faW1wbC5pbnRlcm5hbENoZWNrVGFibGVDb25z
aXN0ZW5jeSgpOwogICAgICAgIG1faW1wbC5yZW1vdmVXaXRob3V0RW50cnlDb25zaXN0ZW5jeUNo
ZWNrKGl0Lm1faW1wbCk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KICAgIGlubGluZSBib29sIEhhc2hT
ZXQ8VCwgVSwgVj46OnJlbW92ZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKQogICAgewogICAgICAg
IHJldHVybiByZW1vdmUoZmluZCh2YWx1ZSkpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PgogICAgaW5saW5lIHZvaWQgSGFzaFNldDxULCBVLCBWPjo6cmVtb3ZlSWYoY29uc3QgRnVuY3Rv
ciYgZnVuY3RvcikKICAgIHsKICAgICAgICBtX2ltcGwucmVtb3ZlSWYoZnVuY3Rvcik7CiAgICB9
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KICAgIGlu
bGluZSB2b2lkIEhhc2hTZXQ8VCwgVSwgVj46OmNsZWFyKCkKICAgIHsKICAgICAgICBtX2ltcGwu
Y2xlYXIoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWPgogICAgaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWPjo6dGFrZShpdGVyYXRvciBp
dCkgLT4gVmFsdWVUeXBlCiAgICB7CiAgICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAgICAg
ICByZXR1cm4gVmFsdWVUcmFpdHM6OmVtcHR5VmFsdWUoKTsKCiAgICAgICAgVmFsdWVUeXBlIHJl
c3VsdCA9IHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4oY29uc3RfY2FzdDxWYWx1
ZVR5cGUmPigqaXQpKTsKICAgICAgICByZW1vdmUoaXQpOwogICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4K
ICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VCwgVSwgVj46OnRha2UoY29uc3QgVmFsdWVUeXBlJiB2
YWx1ZSkgLT4gVmFsdWVUeXBlCiAgICB7CiAgICAgICAgcmV0dXJuIHRha2UoZmluZCh2YWx1ZSkp
OwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+
CiAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFY+Ojp0YWtlQW55KCkgLT4gVmFsdWVUeXBl
CiAgICB7CiAgICAgICAgcmV0dXJuIHRha2UoYmVnaW4oKSk7CiAgICB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+CiAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFZhbHVlLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpmaW5kKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRy
VHlwZSB2YWx1ZSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxW
Pjo6dmFsdWUsIGl0ZXJhdG9yPjo6dHlwZQogICAgewogICAgICAgIHJldHVybiBtX2ltcGwudGVt
cGxhdGUgZmluZDxIYXNoU2V0VHJhbnNsYXRvcjxIYXNoRnVuY3Rpb25zPj4odmFsdWUpOwogICAg
fQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0
eXBlbmFtZSBUcmFpdHM+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgogICAgaW5saW5lIGF1dG8g
SGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y29udGFpbnModHlwZW5hbWUg
R2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgYm9vbD46OnR5cGUKICAgIHsKICAgICAgICBy
ZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGNvbnRhaW5zPEhhc2hTZXRUcmFuc2xhdG9yPEhhc2hGdW5j
dGlvbnM+Pih2YWx1ZSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFY+CiAgICBpbmxpbmUgYXV0byBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+
OjpyZW1vdmUodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSAtPiB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgYm9vbD46OnR5cGUKICAg
IHsKICAgICAgICByZXR1cm4gcmVtb3ZlKGZpbmQodmFsdWUpKTsKICAgIH0KCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRz
PgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4KICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VmFsdWUs
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnRha2UodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQ
dHJUeXBlIHZhbHVlKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2
YWx1ZSwgVmFsdWVUeXBlPjo6dHlwZQogICAgewogICAgICAgIHJldHVybiB0YWtlKGZpbmQodmFs
dWUpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWPgogICAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWPjo6aXNWYWxpZFZhbHVlKGNvbnN0
IFZhbHVlVHlwZSYgdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKFZhbHVlVHJhaXRzOjppc0RlbGV0
ZWRWYWx1ZSh2YWx1ZSkpCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgICAgaWYgKEhh
c2hGdW5jdGlvbnM6OnNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkKSB7CiAgICAgICAgICAg
IGlmICh2YWx1ZSA9PSBWYWx1ZVRyYWl0czo6ZW1wdHlWYWx1ZSgpKQogICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChpc0hhc2hUcmFp
dHNFbXB0eVZhbHVlPFZhbHVlVHJhaXRzPih2YWx1ZSkpCiAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBXPgogICAgaW5saW5lIHZvaWQgY29weVRvVmVjdG9yKGNv
bnN0IEMmIGNvbGxlY3Rpb24sIFcmIHZlY3RvcikKICAgIHsKICAgICAgICB0eXBlZGVmIHR5cGVu
YW1lIEM6OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9yOwoKICAgICAgICB2ZWN0b3IucmVzaXplKGNv
bGxlY3Rpb24uc2l6ZSgpKTsKCiAgICAgICAgaXRlcmF0b3IgaXQgPSBjb2xsZWN0aW9uLmJlZ2lu
KCk7CiAgICAgICAgaXRlcmF0b3IgZW5kID0gY29sbGVjdGlvbi5lbmQoKTsKICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpdCAhPSBlbmQ7ICsraXQsICsraSkKICAgICAgICAgICAgdmVjdG9y
W2ldID0gKml0OwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFY+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckNvbGxlY3Rpb24+CiAgICBpbmxp
bmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjpvcGVyYXRvcj09KGNvbnN0IE90aGVyQ29sbGVjdGlv
biYgb3RoZXJDb2xsZWN0aW9uKSBjb25zdAogICAgewogICAgICAgIGlmIChzaXplKCkgIT0gb3Ro
ZXJDb2xsZWN0aW9uLnNpemUoKSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIGZv
ciAoY29uc3QgYXV0byYgb3RoZXIgOiBvdGhlckNvbGxlY3Rpb24pIHsKICAgICAgICAgICAgaWYg
KCFjb250YWlucyhvdGhlcikpCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
fQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKfQoKdXNpbmcgV1RGOjpIYXNoU2V0OwojIDMy
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaCIgMgoKCgoK
CgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIENvZGVCbG9jazsKY2xhc3MgSGVhcDsKY2xhc3MgSlND
ZWxsOwpjbGFzcyBTbG90VmlzaXRvcjsKCgoKCgpjbGFzcyBDb2RlQmxvY2tTZXQgewogICAgcHJp
dmF0ZTogQ29kZUJsb2NrU2V0KGNvbnN0IENvZGVCbG9ja1NldCYpID0gZGVsZXRlOyBDb2RlQmxv
Y2tTZXQmIG9wZXJhdG9yPShjb25zdCBDb2RlQmxvY2tTZXQmKSA9IGRlbGV0ZTs7CgpwdWJsaWM6
CiAgICBDb2RlQmxvY2tTZXQoKTsKICAgIH5Db2RlQmxvY2tTZXQoKTsKCiAgICB2b2lkIGxhc3RD
aGFuY2VUb0ZpbmFsaXplKCk7CgoKICAgIHZvaWQgYWRkKENvZGVCbG9jayopOwoKCiAgICB2b2lk
IGNsZWFyTWFya3NGb3JGdWxsQ29sbGVjdGlvbigpOwoKCgpwcml2YXRlOgogICAgdm9pZCBtYXJr
KGNvbnN0IExvY2tIb2xkZXImLCBDb2RlQmxvY2sqIGNhbmRpZGF0ZUNvZGVCbG9jayk7CnB1Ymxp
YzoKICAgIHZvaWQgbWFyayhjb25zdCBMb2NrSG9sZGVyJiwgdm9pZCogY2FuZGlkYXRlQ29kZUJs
b2NrKTsKCgoKICAgIHZvaWQgZGVsZXRlVW5tYXJrZWRBbmRVbnJlZmVyZW5jZWQoSGVhcE9wZXJh
dGlvbik7CgoKCiAgICB2b2lkIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9j
a3MoSGVhcCopOwoKICAgIGJvb2wgY29udGFpbnMoY29uc3QgTG9ja0hvbGRlciYsIHZvaWQqIGNh
bmRpZGF0ZUNvZGVCbG9jayk7CiAgICBMb2NrJiBnZXRMb2NrKCkgeyByZXR1cm4gbV9sb2NrOyB9
CgoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlKEZ1bmN0b3Im
IGZ1bmN0b3IpCiAgICB7CiAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICAg
ICBmb3IgKGF1dG8mIGNvZGVCbG9jayA6IG1fb2xkQ29kZUJsb2NrcykgewogICAgICAgICAgICBi
b29sIGRvbmUgPSBmdW5jdG9yKGNvZGVCbG9jayk7CiAgICAgICAgICAgIGlmIChkb25lKQogICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgZm9yIChhdXRvJiBjb2RlQmxv
Y2sgOiBtX25ld0NvZGVCbG9ja3MpIHsKICAgICAgICAgICAgYm9vbCBkb25lID0gZnVuY3Rvcihj
b2RlQmxvY2spOwogICAgICAgICAgICBpZiAoZG9uZSkKICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICB9CiAgICB9CgogICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Cgpwcml2
YXRlOgogICAgdm9pZCBwcm9tb3RlWW91bmdDb2RlQmxvY2tzKGNvbnN0IExvY2tIb2xkZXImKTsK
CiAgICBIYXNoU2V0PENvZGVCbG9jayo+IG1fb2xkQ29kZUJsb2NrczsKICAgIEhhc2hTZXQ8Q29k
ZUJsb2NrKj4gbV9uZXdDb2RlQmxvY2tzOwogICAgSGFzaFNldDxDb2RlQmxvY2sqPiBtX2N1cnJl
bnRseUV4ZWN1dGluZzsKICAgIExvY2sgbV9sb2NrOwp9OwoKfQojIDI3ICIuLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db3B5VmlzaXRvci5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvcHlWaXNpdG9yLmgiCiNkZWZpbmUgQ29weVZpc2l0b3JfaCAKCiMgMSAiLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuaCIgMQojIDI3ICIuLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFjZS5oIgojZGVmaW5lIENvcGll
ZFNwYWNlX2ggCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZEFs
bG9jYXRvci5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGll
ZEFsbG9jYXRvci5oIgojZGVmaW5lIENvcGllZEFsbG9jYXRvcl9oIAoKIyAxICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRCbG9jay5oIiAxCiMgMjcgIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZEJsb2NrLmgiCiNkZWZpbmUgQ29waWVkQmxvY2tf
aCAKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVdvcmtMaXN0Lmgi
IDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVdvcmtMaXN0Lmgi
CiNkZWZpbmUgQ29weVdvcmtMaXN0X2ggCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvcHlUb2tlbi5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvcHlUb2tlbi5oIgojZGVmaW5lIENvcHlUb2tlbl9oIAoKbmFtZXNwYWNlIEpTQyB7Cgpl
bnVtIENvcHlUb2tlbiB7CiAgICBCdXR0ZXJmbHlDb3B5VG9rZW4sCiAgICBUeXBlZEFycmF5VmVj
dG9yQ29weVRva2VuLAogICAgTWFwQmFja2luZ1N0b3JlQ29weVRva2VuLAogICAgRGlyZWN0QXJn
dW1lbnRzT3ZlcnJpZGVzQ29weVRva2VuCn07Cgp9CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvcHlXb3JrTGlzdC5oIiAyCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBK
U0NlbGw7CgpjbGFzcyBDb3B5V29ya2xpc3RJdGVtIHsKcHVibGljOgogICAgQ29weVdvcmtsaXN0
SXRlbSgpCiAgICAgICAgOiBtX3ZhbHVlKDApCiAgICB7CiAgICB9CgogICAgQ29weVdvcmtsaXN0
SXRlbShKU0NlbGwqIGNlbGwsIENvcHlUb2tlbiB0b2tlbikKICAgICAgICA6IG1fdmFsdWUoYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oY2VsbCkgfCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHRva2Vu
KSkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgfQoKICAg
IEpTQ2VsbCogY2VsbCgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0NlbGwqPihtX3Zh
bHVlICYgfnN0YXRpY19jYXN0PHVpbnRwdHJfdD4obWFzaykpOyB9CiAgICBDb3B5VG9rZW4gdG9r
ZW4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb3B5VG9rZW4+KG1fdmFsdWUgJiBtYXNr
KTsgfQoKcHJpdmF0ZToKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCByZXF1aXJlZEFsaWdubWVu
dCA9IDg7CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWFzayA9IHJlcXVpcmVkQWxpZ25tZW50
IC0gMTsKCiAgICB1aW50cHRyX3QgbV92YWx1ZTsKfTsKCmNsYXNzIENvcHlXb3JrTGlzdFNlZ21l
bnQgOiBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Q29weVdvcmtMaXN0U2VnbWVudD4gewog
ICAgZnJpZW5kIGNsYXNzIFdURjo6RG91Ymx5TGlua2VkTGlzdE5vZGU8Q29weVdvcmtMaXN0U2Vn
bWVudD47CnB1YmxpYzoKICAgIHN0YXRpYyBDb3B5V29ya0xpc3RTZWdtZW50KiBjcmVhdGUoKQog
ICAgewogICAgICAgIHJldHVybiBuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoYmxvY2tTaXplKSkg
Q29weVdvcmtMaXN0U2VnbWVudCgpOwogICAgfQoKICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koQ29w
eVdvcmtMaXN0U2VnbWVudCogc2VnbWVudCkKICAgIHsKICAgICAgICBzZWdtZW50LT5+Q29weVdv
cmtMaXN0U2VnbWVudCgpOwogICAgICAgIGZhc3RGcmVlKHNlZ21lbnQpOwogICAgfQoKICAgIHNp
emVfdCBzaXplKCkgeyByZXR1cm4gbV9zaXplOyB9CiAgICBib29sIGlzRnVsbCgpIHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZkYXRhKClbc2l6ZSgpXSkgPj0gZW5kT2ZCbG9jaygp
OyB9CiAgICBDb3B5V29ya2xpc3RJdGVtIGdldChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIGRhdGEo
KVtpbmRleF07IH0KCiAgICB2b2lkIGFwcGVuZChDb3B5V29ya2xpc3RJdGVtIGl0ZW0pCiAgICB7
CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIGRhdGEoKVttX3NpemVdID0gaXRlbTsKICAgICAg
ICBtX3NpemUgKz0gMTsKICAgIH0KCiAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrU2l6ZSA9
IDUxMjsKCnByaXZhdGU6CiAgICBDb3B5V29ya0xpc3RTZWdtZW50KCkKICAgICAgICA6IERvdWJs
eUxpbmtlZExpc3ROb2RlPENvcHlXb3JrTGlzdFNlZ21lbnQ+KCkKICAgICAgICAsIG1fc2l6ZSgw
KQogICAgewogICAgfQoKICAgIENvcHlXb3JrbGlzdEl0ZW0qIGRhdGEoKSB7IHJldHVybiByZWlu
dGVycHJldF9jYXN0PENvcHlXb3JrbGlzdEl0ZW0qPih0aGlzICsgMSk7IH0KICAgIGNoYXIqIGVu
ZE9mQmxvY2soKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKSArIGJsb2Nr
U2l6ZTsgfQoKICAgIENvcHlXb3JrTGlzdFNlZ21lbnQqIG1fcHJldjsKICAgIENvcHlXb3JrTGlz
dFNlZ21lbnQqIG1fbmV4dDsKICAgIHNpemVfdCBtX3NpemU7Cn07CgpjbGFzcyBDb3B5V29ya0xp
c3RJdGVyYXRvciB7CiAgICBmcmllbmQgY2xhc3MgQ29weVdvcmtMaXN0OwpwdWJsaWM6CiAgICBD
b3B5V29ya2xpc3RJdGVtIGdldCgpIHsgcmV0dXJuIG1fY3VycmVudFNlZ21lbnQtPmdldChtX2N1
cnJlbnRJbmRleCk7IH0KICAgIENvcHlXb3JrbGlzdEl0ZW0gb3BlcmF0b3IqKCkgeyByZXR1cm4g
Z2V0KCk7IH0KICAgIENvcHlXb3JrbGlzdEl0ZW0gb3BlcmF0b3ItPigpIHsgcmV0dXJuIGdldCgp
OyB9CgogICAgQ29weVdvcmtMaXN0SXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAgewogICAgICAg
IG1fY3VycmVudEluZGV4Kys7CgogICAgICAgIGlmIChtX2N1cnJlbnRJbmRleCA+PSBtX2N1cnJl
bnRTZWdtZW50LT5zaXplKCkpIHsKICAgICAgICAgICAgbV9jdXJyZW50SW5kZXggPSAwOwogICAg
ICAgICAgICBtX2N1cnJlbnRTZWdtZW50ID0gbV9jdXJyZW50U2VnbWVudC0+bmV4dCgpOwoKICAg
ICAgICAgICAgKCh2b2lkKTApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICp0aGlzOwogICAg
fQoKICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3B5V29ya0xpc3RJdGVyYXRvciYgb3RoZXIp
IGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fY3VycmVudFNlZ21lbnQgPT0gb3RoZXIubV9j
dXJyZW50U2VnbWVudCAmJiBtX2N1cnJlbnRJbmRleCA9PSBvdGhlci5tX2N1cnJlbnRJbmRleDsK
ICAgIH0KCiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29weVdvcmtMaXN0SXRlcmF0b3ImIG90
aGVyKSBjb25zdAogICAgewogICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgIH0K
CiAgICBDb3B5V29ya0xpc3RJdGVyYXRvcigpCiAgICAgICAgOiBtX2N1cnJlbnRTZWdtZW50KDAp
CiAgICAgICAgLCBtX2N1cnJlbnRJbmRleCgwKQogICAgewogICAgfQoKcHJpdmF0ZToKICAgIENv
cHlXb3JrTGlzdEl0ZXJhdG9yKENvcHlXb3JrTGlzdFNlZ21lbnQqIHN0YXJ0U2VnbWVudCwgc2l6
ZV90IHN0YXJ0SW5kZXgpCiAgICAgICAgOiBtX2N1cnJlbnRTZWdtZW50KHN0YXJ0U2VnbWVudCkK
ICAgICAgICAsIG1fY3VycmVudEluZGV4KHN0YXJ0SW5kZXgpCiAgICB7CiAgICB9CgogICAgQ29w
eVdvcmtMaXN0U2VnbWVudCogbV9jdXJyZW50U2VnbWVudDsKICAgIHNpemVfdCBtX2N1cnJlbnRJ
bmRleDsKfTsKCmNsYXNzIENvcHlXb3JrTGlzdCB7CiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10o
c2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBk
ZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3
W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQg
b3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lk
KTApOyByZXR1cm4gbG9jYXRpb247IH0gcHJpdmF0ZTogdHlwZWRlZiBpbnQgX190aGlzSXNIZXJl
VG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybzsKcHVibGljOgogICAgdHlwZWRlZiBDb3B5
V29ya0xpc3RJdGVyYXRvciBpdGVyYXRvcjsKCiAgICBDb3B5V29ya0xpc3QoKTsKICAgIH5Db3B5
V29ya0xpc3QoKTsKCiAgICB2b2lkIGFwcGVuZChDb3B5V29ya2xpc3RJdGVtKTsKICAgIGl0ZXJh
dG9yIGJlZ2luKCk7CiAgICBpdGVyYXRvciBlbmQoKTsKCnByaXZhdGU6CiAgICBEb3VibHlMaW5r
ZWRMaXN0PENvcHlXb3JrTGlzdFNlZ21lbnQ+IG1fc2VnbWVudHM7Cn07CgppbmxpbmUgQ29weVdv
cmtMaXN0OjpDb3B5V29ya0xpc3QoKQp7Cn0KCmlubGluZSBDb3B5V29ya0xpc3Q6On5Db3B5V29y
a0xpc3QoKQp7CiAgICB3aGlsZSAoIW1fc2VnbWVudHMuaXNFbXB0eSgpKQogICAgICAgIENvcHlX
b3JrTGlzdFNlZ21lbnQ6OmRlc3Ryb3kobV9zZWdtZW50cy5yZW1vdmVIZWFkKCkpOwp9Cgppbmxp
bmUgdm9pZCBDb3B5V29ya0xpc3Q6OmFwcGVuZChDb3B5V29ya2xpc3RJdGVtIGl0ZW0pCnsKICAg
IGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSB8fCBtX3NlZ21lbnRzLnRhaWwoKS0+aXNGdWxsKCkp
CiAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoQ29weVdvcmtMaXN0U2VnbWVudDo6Y3JlYXRlKCkp
OwoKICAgICgodm9pZCkwKTsKCiAgICBtX3NlZ21lbnRzLnRhaWwoKS0+YXBwZW5kKGl0ZW0pOwp9
CgppbmxpbmUgQ29weVdvcmtMaXN0OjppdGVyYXRvciBDb3B5V29ya0xpc3Q6OmJlZ2luKCkKewog
ICAgcmV0dXJuIENvcHlXb3JrTGlzdEl0ZXJhdG9yKG1fc2VnbWVudHMuaGVhZCgpLCAwKTsKfQoK
aW5saW5lIENvcHlXb3JrTGlzdDo6aXRlcmF0b3IgQ29weVdvcmtMaXN0OjplbmQoKQp7CiAgICBy
ZXR1cm4gQ29weVdvcmtMaXN0SXRlcmF0b3IoKTsKfQoKfQojIDMwICIuLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRCbG9jay5oIiAyCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgiCiNkZWZpbmUgT3B0aW9uc19oIAoKIyAxICIuLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0xvZ2dpbmcuaCIgMQojIDI3ICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0xvZ2dpbmcuaCIKI2RlZmluZSBHQ0xvZ2dpbmdf
aCAKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBIZWFwOwoKY2xhc3MgR0NMb2dnaW5nIHsKcHVi
bGljOgogICAgZW51bSBMZXZlbCA6IHVpbnQ4X3QgewogICAgICAgIE5vbmUgPSAwLAogICAgICAg
IEJhc2ljLAogICAgICAgIFZlcmJvc2UKICAgIH07CgogICAgc3RhdGljIGNvbnN0IGNoYXIqIGxl
dmVsQXNTdHJpbmcoTGV2ZWwpOwogICAgc3RhdGljIHZvaWQgZHVtcE9iamVjdEdyYXBoKEhlYXAq
KTsKfTsKCnR5cGVkZWYgR0NMb2dnaW5nOjpMZXZlbCBnY0xvZ0xldmVsOwoKfQoKbmFtZXNwYWNl
IFdURiB7CgpjbGFzcyBQcmludFN0cmVhbTsKCnZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYsIEpTQzo6R0NMb2dnaW5nOjpMZXZlbCk7Cgp9CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCIgMgoKCgoKCgpuYW1lc3BhY2UgV1RGIHsKY2xhc3Mg
U3RyaW5nQnVpbGRlcjsKfQp1c2luZyBXVEY6OlN0cmluZ0J1aWxkZXI7CgpuYW1lc3BhY2UgSlND
IHsKIyA3MSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIgpj
bGFzcyBPcHRpb25SYW5nZSB7CnByaXZhdGU6CiAgICBlbnVtIFJhbmdlU3RhdGUgeyBVbmluaXRp
YWxpemVkLCBJbml0RXJyb3IsIE5vcm1hbCwgSW52ZXJ0ZWQgfTsKcHVibGljOgogICAgT3B0aW9u
UmFuZ2UmIG9wZXJhdG9yPSAoY29uc3QgaW50JiByaHMpCiAgICB7CiAgICAgICAgaWYgKCFyaHMp
IHsKICAgICAgICAgICAgbV9zdGF0ZSA9IFVuaW5pdGlhbGl6ZWQ7CiAgICAgICAgICAgIG1fcmFu
Z2VTdHJpbmcgPSAwOwogICAgICAgICAgICBtX2xvd0xpbWl0ID0gMDsKICAgICAgICAgICAgbV9o
aWdoTGltaXQgPSAwOwogICAgICAgIH0KICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAg
Ym9vbCBpbml0KGNvbnN0IGNoYXIqKTsKICAgIGJvb2wgaXNJblJhbmdlKHVuc2lnbmVkKTsKICAg
IGNvbnN0IGNoYXIqIHJhbmdlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gKG1fc3RhdGUgPiBJbml0
RXJyb3IpID8gbV9yYW5nZVN0cmluZyA6IHNfbnVsbFJhbmdlU3RyOyB9CgogICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwoKcHJpdmF0ZToKICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCBzX251bGxSYW5nZVN0cjsKCiAgICBSYW5nZVN0YXRlIG1fc3RhdGU7CiAgICBjb25z
dCBjaGFyKiBtX3JhbmdlU3RyaW5nOwogICAgdW5zaWduZWQgbV9sb3dMaW1pdDsKICAgIHVuc2ln
bmVkIG1faGlnaExpbWl0Owp9OwoKdHlwZWRlZiBPcHRpb25SYW5nZSBvcHRpb25SYW5nZTsKdHlw
ZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CgojZGVmaW5lIEpTQ19PUFRJT05TKHYpIHYo
Ym9vbCwgdmFsaWRhdGVPcHRpb25zLCBmYWxzZSwgTm9ybWFsLCAiY3Jhc2hlcyBpZiBtaXMtdHlw
ZWQgSlNDIG9wdGlvbnMgd2VyZSBwYXNzZWQgdG8gdGhlIFZNIikgdih1bnNpZ25lZCwgZHVtcE9w
dGlvbnMsIDAsIE5vcm1hbCwgImR1bXBzIEpTQyBvcHRpb25zICgwID0gTm9uZSwgMSA9IE92ZXJy
aWRkZW4gb25seSwgMiA9IEFsbCwgMyA9IFZlcmJvc2UpIikgdihib29sLCB1c2VMTEludCwgdHJ1
ZSwgTm9ybWFsLCAiYWxsb3dzIHRoZSBMTElOVCB0byBiZSB1c2VkIGlmIHRydWUiKSB2KGJvb2ws
IHVzZUpJVCwgdHJ1ZSwgTm9ybWFsLCAiYWxsb3dzIHRoZSBiYXNlbGluZSBKSVQgdG8gYmUgdXNl
ZCBpZiB0cnVlIikgdihib29sLCB1c2VERkdKSVQsIHRydWUsIE5vcm1hbCwgImFsbG93cyB0aGUg
REZHIEpJVCB0byBiZSB1c2VkIGlmIHRydWUiKSB2KGJvb2wsIHVzZVJlZ0V4cEpJVCwgdHJ1ZSwg
Tm9ybWFsLCAiYWxsb3dzIHRoZSBSZWdFeHAgSklUIHRvIGJlIHVzZWQgaWYgdHJ1ZSIpIHYoYm9v
bCwgcmVwb3J0TXVzdFN1Y2NlZWRFeGVjdXRhYmxlQWxsb2NhdGlvbnMsIGZhbHNlLCBOb3JtYWws
IG51bGxwdHIpIHYodW5zaWduZWQsIG1heFBlclRocmVhZFN0YWNrVXNhZ2UsIDQgKiBNQiwgTm9y
bWFsLCBudWxscHRyKSB2KHVuc2lnbmVkLCByZXNlcnZlZFpvbmVTaXplLCAxMjggKiBLQiwgTm9y
bWFsLCBudWxscHRyKSB2KHVuc2lnbmVkLCBlcnJvck1vZGVSZXNlcnZlZFpvbmVTaXplLCA2NCAq
IEtCLCBOb3JtYWwsIG51bGxwdHIpIHYoYm9vbCwgY3Jhc2hJZkNhbnRBbGxvY2F0ZUpJVE1lbW9y
eSwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgdih1bnNpZ25lZCwgaml0TWVtb3J5UmVzZXJ2YXRp
b25TaXplLCAwLCBOb3JtYWwsICJTZXQgdGhpcyBudW1iZXIgdG8gY2hhbmdlIHRoZSBleGVjdXRh
YmxlIGFsbG9jYXRpb24gc2l6ZSBpbiBFeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuIChJ
biBieXRlcy4pIikgdihib29sLCB1c2VTZXBhcmF0ZWRXWEhlYXAsIGZhbHNlLCBOb3JtYWwsIG51
bGxwdHIpIHYoYm9vbCwgZm9yY2VDb2RlQmxvY2tMaXZlbmVzcywgZmFsc2UsIE5vcm1hbCwgbnVs
bHB0cikgdihib29sLCBmb3JjZUlDRmFpbHVyZSwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgdih1
bnNpZ25lZCwgcmVwYXRjaENvdW50Rm9yQ29vbERvd24sIDEwLCBOb3JtYWwsIG51bGxwdHIpIHYo
dW5zaWduZWQsIGluaXRpYWxDb29sRG93bkNvdW50LCAyMCwgTm9ybWFsLCBudWxscHRyKSB2KHVu
c2lnbmVkLCByZXBhdGNoQnVmZmVyaW5nQ291bnRkb3duLCAxMCwgTm9ybWFsLCBudWxscHRyKSB2
KGJvb2wsIGR1bXBHZW5lcmF0ZWRCeXRlY29kZXMsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIHYo
Ym9vbCwgZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRy
KSB2KGJvb2wsIHZhbGlkYXRlQnl0ZWNvZGUsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIHYoYm9v
bCwgZm9yY2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbiwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0
cikgdihib29sLCBmb3JjZVByb2ZpbGVyQnl0ZWNvZGVHZW5lcmF0aW9uLCBmYWxzZSwgTm9ybWFs
LCBudWxscHRyKSB2KGJvb2wsIHVzZUZ1bmN0aW9uRG90QXJndW1lbnRzLCB0cnVlLCBOb3JtYWws
IG51bGxwdHIpIHYoYm9vbCwgdXNlVGFpbENhbGxzLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIHYo
Ym9vbCwgYWx3YXlzVXNlU2hhZG93Q2hpY2tlbiwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgdih1
bnNpZ25lZCwgc2hhZG93Q2hpY2tlbkxvZ1NpemUsIDEwMDAsIE5vcm1hbCwgbnVsbHB0cikgdih1
bnNpZ25lZCwgc2hhZG93Q2hpY2tlblN0YWNrU2l6ZUxpbWl0LCAxMDAwMDAsIE5vcm1hbCwgbnVs
bHB0cikgdihib29sLCBkdW1wRGlzYXNzZW1ibHksIGZhbHNlLCBOb3JtYWwsICJkdW1wcyBkaXNh
c3NlbWJseSBvZiBhbGwgSklUIGNvbXBpbGVkIGNvZGUgdXBvbiBjb21waWxhdGlvbiIpIHYoYm9v
bCwgYXN5bmNEaXNhc3NlbWJseSwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgdihib29sLCBkdW1w
REZHRGlzYXNzZW1ibHksIGZhbHNlLCBOb3JtYWwsICJkdW1wcyBkaXNhc3NlbWJseSBvZiBERkcg
ZnVuY3Rpb24gdXBvbiBjb21waWxhdGlvbiIpIHYoYm9vbCwgZHVtcEZUTERpc2Fzc2VtYmx5LCBm
YWxzZSwgTm9ybWFsLCAiZHVtcHMgZGlzYXNzZW1ibHkgb2YgRlRMIGZ1bmN0aW9uIHVwb24gY29t
cGlsYXRpb24iKSB2KGJvb2wsIGR1bXBBbGxERkdOb2RlcywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0
cikgdihvcHRpb25SYW5nZSwgYnl0ZWNvZGVSYW5nZVRvREZHQ29tcGlsZSwgMCwgTm9ybWFsLCAi
Ynl0ZWNvZGUgc2l6ZSByYW5nZSB0byBhbGxvdyBERkcgY29tcGlsYXRpb24gb24sIGUuZy4gMTox
MDAiKSB2KG9wdGlvblJhbmdlLCBieXRlY29kZVJhbmdlVG9GVExDb21waWxlLCAwLCBOb3JtYWws
ICJieXRlY29kZSBzaXplIHJhbmdlIHRvIGFsbG93IEZUTCBjb21waWxhdGlvbiBvbiwgZS5nLiAx
OjEwMCIpIHYob3B0aW9uU3RyaW5nLCBkZmdXaGl0ZWxpc3QsIG51bGxwdHIsIE5vcm1hbCwgImZp
bGUgd2l0aCBsaXN0IG9mIGZ1bmN0aW9uIHNpZ25hdHVyZXMgdG8gYWxsb3cgREZHIGNvbXBpbGF0
aW9uIG9uIikgdihib29sLCBkdW1wU291cmNlQXRERkdUaW1lLCBmYWxzZSwgTm9ybWFsLCAiZHVt
cHMgc291cmNlIGNvZGUgb2YgSlMgZnVuY3Rpb24gYmVpbmcgREZHIGNvbXBpbGVkIikgdihib29s
LCBkdW1wQnl0ZWNvZGVBdERGR1RpbWUsIGZhbHNlLCBOb3JtYWwsICJkdW1wcyBieXRlY29kZSBv
ZiBKUyBmdW5jdGlvbiBiZWluZyBERkcgY29tcGlsZWQiKSB2KGJvb2wsIGR1bXBHcmFwaEFmdGVy
UGFyc2luZywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgdihib29sLCBkdW1wR3JhcGhBdEVhY2hQ
aGFzZSwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgdihib29sLCBkdW1wREZHR3JhcGhBdEVhY2hQ
aGFzZSwgZmFsc2UsIE5vcm1hbCwgImR1bXBzIHRoZSBERkcgZ3JhcGggYXQgZWFjaCBwaGFzZSBE
Rkcgb2YgY29tcGxpdGFpb24gKG5vdGUgdGhpcyBleGNsdWRlcyBERkcgZ3JhcGhzIGR1cmluZyBG
VEwgY29tcGlsYXRpb24pIikgdihib29sLCBkdW1wREZHRlRMR3JhcGhBdEVhY2hQaGFzZSwgZmFs
c2UsIE5vcm1hbCwgImR1bXBzIHRoZSBERkcgZ3JhcGggYXQgZWFjaCBwaGFzZSBERkcgb2YgY29t
cGxpdGFpb24gd2hlbiBjb21waWxpbmcgRlRMIGNvZGUiKSB2KGJvb2wsIGR1bXBCM0dyYXBoQXRF
YWNoUGhhc2UsIGZhbHNlLCBOb3JtYWwsICJkdW1wcyB0aGUgQjMgZ3JhcGggYXQgZWFjaCBwaGFz
ZSBvZiBjb21waWxhdGlvbiIpIHYoYm9vbCwgZHVtcEFpckdyYXBoQXRFYWNoUGhhc2UsIGZhbHNl
LCBOb3JtYWwsICJkdW1wcyB0aGUgQWlyIGdyYXBoIGF0IGVhY2ggcGhhc2Ugb2YgY29tcGlsYXRp
b24iKSB2KGJvb2wsIHZlcmJvc2VERkdCeXRlQ29kZVBhcnNpbmcsIGZhbHNlLCBOb3JtYWwsIG51
bGxwdHIpIHYoYm9vbCwgdmVyYm9zZUNvbXBpbGF0aW9uLCBmYWxzZSwgTm9ybWFsLCBudWxscHRy
KSB2KGJvb2wsIHZlcmJvc2VGVExDb21waWxhdGlvbiwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikg
dihib29sLCBsb2dDb21waWxhdGlvbkNoYW5nZXMsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIHYo
Ym9vbCwgcHJpbnRFYWNoT1NSRXhpdCwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgdihib29sLCB2
YWxpZGF0ZUdyYXBoLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSB2KGJvb2wsIHZhbGlkYXRlR3Jh
cGhBdEVhY2hQaGFzZSwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgdihib29sLCB2ZXJib3NlVmFs
aWRhdGlvbkZhaWx1cmUsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIHYoYm9vbCwgdmVyYm9zZU9T
UiwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgdihib29sLCB2ZXJib3NlRlRMT1NSRXhpdCwgZmFs
c2UsIE5vcm1hbCwgbnVsbHB0cikgdihib29sLCB2ZXJib3NlQ2FsbExpbmssIGZhbHNlLCBOb3Jt
YWwsIG51bGxwdHIpIHYoYm9vbCwgdmVyYm9zZUNvbXBpbGF0aW9uUXVldWUsIGZhbHNlLCBOb3Jt
YWwsIG51bGxwdHIpIHYoYm9vbCwgcmVwb3J0Q29tcGlsZVRpbWVzLCBmYWxzZSwgTm9ybWFsLCAi
ZHVtcHMgSlMgZnVuY3Rpb24gc2lnbmF0dXJlIGFuZCB0aGUgdGltZSBpdCB0b29rIHRvIGNvbXBp
bGUiKSB2KGJvb2wsIHJlcG9ydEZUTENvbXBpbGVUaW1lcywgZmFsc2UsIE5vcm1hbCwgImR1bXBz
IEpTIGZ1bmN0aW9uIHNpZ25hdHVyZSBhbmQgdGhlIHRpbWUgaXQgdG9vayB0byBGVEwgY29tcGls
ZSIpIHYoYm9vbCwgcmVwb3J0VG90YWxDb21waWxlVGltZXMsIGZhbHNlLCBOb3JtYWwsIG51bGxw
dHIpIHYoYm9vbCwgdmVyYm9zZUNGQSwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgdihib29sLCB2
ZXJib3NlRlRMVG9KU1RodW5rLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSB2KGJvb2wsIHZlcmJv
c2VGVExGYWlsdXJlLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSB2KGJvb2wsIGFsd2F5c0NvbXB1
dGVIYXNoLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSB2KGJvb2wsIHRlc3RUaGVGVEwsIGZhbHNl
LCBOb3JtYWwsIG51bGxwdHIpIHYoYm9vbCwgdmVyYm9zZVNhbml0aXplU3RhY2ssIGZhbHNlLCBO
b3JtYWwsIG51bGxwdHIpIHYoYm9vbCwgdXNlR2VuZXJhdGlvbmFsR0MsIHRydWUsIE5vcm1hbCwg
bnVsbHB0cikgdihib29sLCBlYWdlcmx5VXBkYXRlVG9wQ2FsbEZyYW1lLCBmYWxzZSwgTm9ybWFs
LCBudWxscHRyKSB2KGJvb2wsIHVzZU9TUkVudHJ5VG9ERkcsIHRydWUsIE5vcm1hbCwgbnVsbHB0
cikgdihib29sLCB1c2VPU1JFbnRyeVRvRlRMLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIHYoYm9v
bCwgdXNlRlRMSklULCB0cnVlLCBOb3JtYWwsICJhbGxvd3MgdGhlIEZUTCBKSVQgdG8gYmUgdXNl
ZCBpZiB0cnVlIikgdihib29sLCB1c2VGVExUQkFBLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIHYo
Ym9vbCwgdmFsaWRhdGVGVExPU1JFeGl0TGl2ZW5lc3MsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIp
IHYoYm9vbCwgYjNBbHdheXNGYWlsc0JlZm9yZUNvbXBpbGUsIGZhbHNlLCBOb3JtYWwsIG51bGxw
dHIpIHYoYm9vbCwgYjNBbHdheXNGYWlsc0JlZm9yZUxpbmssIGZhbHNlLCBOb3JtYWwsIG51bGxw
dHIpIHYoYm9vbCwgZnRsQ3Jhc2hlcywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgdihib29sLCBj
bG9iYmVyQWxsUmVnc0luRlRMSUNTbG93UGF0aCwgIUFTU0VSVF9ESVNBQkxFRCwgTm9ybWFsLCBu
dWxscHRyKSB2KGJvb2wsIHVzZUFjY2Vzc0lubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIp
IHYodW5zaWduZWQsIG1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSwgMTMsIE5vcm1hbCwgbnVsbHB0
cikgdih1bnNpZ25lZCwgbWVnYW1vcnBoaWNMb2FkQ29zdCwgOTk5LCBOb3JtYWwsIG51bGxwdHIp
IHYoYm9vbCwgdXNlUG9seXZhcmlhbnREZXZpcnR1YWxpemF0aW9uLCB0cnVlLCBOb3JtYWwsIG51
bGxwdHIpIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZywgdHJ1ZSwgTm9ybWFs
LCBudWxscHRyKSB2KGJvb2wsIHVzZVBvbHltb3JwaGljQ2FsbElubGluaW5nLCB0cnVlLCBOb3Jt
YWwsIG51bGxwdHIpIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNDYWxsSW5saW5pbmdGb3JOb25TdHVi
U3RhdHVzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSB2KHVuc2lnbmVkLCBtYXhQb2x5bW9ycGhp
Y0NhbGxWYXJpYW50TGlzdFNpemUsIDE1LCBOb3JtYWwsIG51bGxwdHIpIHYodW5zaWduZWQsIG1h
eFBvbHltb3JwaGljQ2FsbFZhcmlhbnRMaXN0U2l6ZUZvclRvcFRpZXIsIDUsIE5vcm1hbCwgbnVs
bHB0cikgdih1bnNpZ25lZCwgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudHNGb3JJbmxpbmluZywg
NSwgTm9ybWFsLCBudWxscHRyKSB2KHVuc2lnbmVkLCBmcmVxdWVudENhbGxUaHJlc2hvbGQsIDIs
IE5vcm1hbCwgbnVsbHB0cikgdihkb3VibGUsIG1pbmltdW1DYWxsVG9Lbm93blJhdGUsIDAuNTEs
IE5vcm1hbCwgbnVsbHB0cikgdihib29sLCBjcmVhdGVQcmVIZWFkZXJzLCB0cnVlLCBOb3JtYWws
IG51bGxwdHIpIHYoYm9vbCwgdXNlTW92SGludFJlbW92YWwsIHRydWUsIE5vcm1hbCwgbnVsbHB0
cikgdihib29sLCB1c2VQdXRTdGFja1NpbmtpbmcsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgdihi
b29sLCB1c2VPYmplY3RBbGxvY2F0aW9uU2lua2luZywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSB2
KGJvb2wsIHVzZUNvbmN1cnJlbnRKSVQsIHRydWUsIE5vcm1hbCwgImFsbG93cyB0aGUgREZHIC8g
RlRMIGNvbXBpbGF0aW9uIGluIHRocmVhZHMgb3RoZXIgdGhhbiB0aGUgZXhlY3V0aW5nIEpTIHRo
cmVhZCIpIHYodW5zaWduZWQsIG51bWJlck9mREZHQ29tcGlsZXJUaHJlYWRzLCBjb21wdXRlTnVt
YmVyT2ZXb3JrZXJUaHJlYWRzKDIsIDIpIC0gMSwgTm9ybWFsLCBudWxscHRyKSB2KHVuc2lnbmVk
LCBudW1iZXJPZkZUTENvbXBpbGVyVGhyZWFkcywgY29tcHV0ZU51bWJlck9mV29ya2VyVGhyZWFk
cyg4LCAyKSAtIDEsIE5vcm1hbCwgbnVsbHB0cikgdihpbnQzMiwgcHJpb3JpdHlEZWx0YU9mREZH
Q29tcGlsZXJUaHJlYWRzLCBjb21wdXRlUHJpb3JpdHlEZWx0YU9mV29ya2VyVGhyZWFkcygtMSwg
MCksIE5vcm1hbCwgbnVsbHB0cikgdihpbnQzMiwgcHJpb3JpdHlEZWx0YU9mRlRMQ29tcGlsZXJU
aHJlYWRzLCBjb21wdXRlUHJpb3JpdHlEZWx0YU9mV29ya2VyVGhyZWFkcygtMiwgMCksIE5vcm1h
bCwgbnVsbHB0cikgdihib29sLCB1c2VQcm9maWxlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikg
dihib29sLCBkaXNhc3NlbWJsZUJhc2VsaW5lRm9yUHJvZmlsZXIsIHRydWUsIE5vcm1hbCwgbnVs
bHB0cikgdihib29sLCB1c2VBcmNoaXRlY3R1cmVTcGVjaWZpY09wdGltaXphdGlvbnMsIHRydWUs
IE5vcm1hbCwgbnVsbHB0cikgdihib29sLCBicmVha09uVGhyb3csIGZhbHNlLCBOb3JtYWwsIG51
bGxwdHIpIHYodW5zaWduZWQsIG1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlv
bkNvdW50LCAxMDAwMDAsIE5vcm1hbCwgbnVsbHB0cikgdih1bnNpZ25lZCwgbWF4aW11bUZ1bmN0
aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIDE4MCwgTm9ybWFsLCBu
dWxscHRyKSB2KHVuc2lnbmVkLCBtYXhpbXVtRnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbElubGluZUNh
bmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIDEwMCwgTm9ybWFsLCBudWxscHRyKSB2KHVuc2lnbmVk
LCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNv
dW50LCAxMDAsIE5vcm1hbCwgbnVsbHB0cikgdih1bnNpZ25lZCwgbWF4aW11bUZUTENhbmRpZGF0
ZUluc3RydWN0aW9uQ291bnQsIDIwMDAwLCBOb3JtYWwsIG51bGxwdHIpIHYodW5zaWduZWQsIG1h
eGltdW1JbmxpbmluZ0RlcHRoLCA1LCBOb3JtYWwsICJtYXhpbXVtIGFsbG93ZWQgaW5saW5pbmcg
ZGVwdGguICBEZXB0aCBvZiAxIG1lYW5zIG5vIGlubGluaW5nIikgdih1bnNpZ25lZCwgbWF4aW11
bUlubGluaW5nUmVjdXJzaW9uLCAyLCBOb3JtYWwsIG51bGxwdHIpIHYodW5zaWduZWQsIG1heGlt
dW1JbmxpbmluZ0NhbGxlclNpemUsIDEwMDAwLCBOb3JtYWwsIG51bGxwdHIpIHYodW5zaWduZWQs
IG1heGltdW1WYXJhcmdzRm9ySW5saW5pbmcsIDEwMCwgTm9ybWFsLCBudWxscHRyKSB2KGJvb2ws
IHVzZVBvbHl2YXJpYW50Q2FsbElubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIHYoYm9v
bCwgdXNlUG9seXZhcmlhbnRCeUlkSW5saW5pbmcsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgdihi
b29sLCB1c2VNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZSwgZmFsc2UsIE5vcm1hbCwgIlNldHRp
bmcgdG8gdHJ1ZSBhbGxvd3MgdGhlIERGRydzIE1heGltYWxGbHVzaEluc2VydGlvblBoYXNlIHRv
IHJ1bi4iKSB2KHVuc2lnbmVkLCBtYXhpbXVtQmluYXJ5U3RyaW5nU3dpdGNoQ2FzZUxlbmd0aCwg
NTAsIE5vcm1hbCwgbnVsbHB0cikgdih1bnNpZ25lZCwgbWF4aW11bUJpbmFyeVN0cmluZ1N3aXRj
aFRvdGFsTGVuZ3RoLCAyMDAwLCBOb3JtYWwsIG51bGxwdHIpIHYoZG91YmxlLCBqaXRQb2xpY3lT
Y2FsZSwgMS4wLCBOb3JtYWwsICJzY2FsZSBKSVQgdGhyZXNob2xkcyB0byB0aGlzIHNwZWNpZmll
ZCByYXRpbyBiZXR3ZWVuIDAuMCAoY29tcGlsZSBBU0FQKSBhbmQgMS4wIChjb21waWxlIGxpa2Ug
bm9ybWFsKS4iKSB2KGJvb2wsIGZvcmNlRWFnZXJDb21waWxhdGlvbiwgZmFsc2UsIE5vcm1hbCwg
bnVsbHB0cikgdihpbnQzMiwgdGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXAsIDUwMCwgTm9ybWFs
LCBudWxscHRyKSB2KGludDMyLCB0aHJlc2hvbGRGb3JKSVRTb29uLCAxMDAsIE5vcm1hbCwgbnVs
bHB0cikgdihpbnQzMiwgdGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcCwgMTAwMCwgTm9y
bWFsLCBudWxscHRyKSB2KGludDMyLCB0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1V
cCwgMTAwMCwgTm9ybWFsLCBudWxscHRyKSB2KGludDMyLCB0aHJlc2hvbGRGb3JPcHRpbWl6ZVNv
b24sIDEwMDAsIE5vcm1hbCwgbnVsbHB0cikgdihpbnQzMiwgZXhlY3V0aW9uQ291bnRlckluY3Jl
bWVudEZvckxvb3AsIDEsIE5vcm1hbCwgbnVsbHB0cikgdihpbnQzMiwgZXhlY3V0aW9uQ291bnRl
ckluY3JlbWVudEZvckVudHJ5LCAxNSwgTm9ybWFsLCBudWxscHRyKSB2KGludDMyLCB0aHJlc2hv
bGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVwLCAxMDAwMDAsIE5vcm1hbCwgbnVsbHB0cikgdihp
bnQzMiwgdGhyZXNob2xkRm9yRlRMT3B0aW1pemVTb29uLCAxMDAwLCBOb3JtYWwsIG51bGxwdHIp
IHYoaW50MzIsIGZ0bFRpZXJVcENvdW50ZXJJbmNyZW1lbnRGb3JMb29wLCAxLCBOb3JtYWwsIG51
bGxwdHIpIHYoaW50MzIsIGZ0bFRpZXJVcENvdW50ZXJJbmNyZW1lbnRGb3JSZXR1cm4sIDE1LCBO
b3JtYWwsIG51bGxwdHIpIHYodW5zaWduZWQsIGZ0bE9TUkVudHJ5RmFpbHVyZUNvdW50Rm9yUmVv
cHRpbWl6YXRpb24sIDE1LCBOb3JtYWwsIG51bGxwdHIpIHYodW5zaWduZWQsIGZ0bE9TUkVudHJ5
UmV0cnlUaHJlc2hvbGQsIDEwMCwgTm9ybWFsLCBudWxscHRyKSB2KGludDMyLCBldmFsVGhyZXNo
b2xkTXVsdGlwbGllciwgMTAsIE5vcm1hbCwgbnVsbHB0cikgdih1bnNpZ25lZCwgbWF4aW11bUV2
YWxDYWNoZWFibGVTb3VyY2VMZW5ndGgsIDI1NiwgTm9ybWFsLCBudWxscHRyKSB2KGJvb2wsIHJh
bmRvbWl6ZUV4ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50cywgZmFsc2UsIE5vcm1hbCwg
bnVsbHB0cikgdihpbnQzMiwgbWF4aW11bUV4ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50
c0ZvckJhc2VsaW5lLCAxMDAwLCBOb3JtYWwsIG51bGxwdHIpIHYoaW50MzIsIG1heGltdW1FeGVj
dXRpb25Db3VudHNCZXR3ZWVuQ2hlY2twb2ludHNGb3JVcHBlclRpZXJzLCA1MDAwMCwgTm9ybWFs
LCBudWxscHRyKSB2KHVuc2lnbmVkLCBsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCwg
MjAsIE5vcm1hbCwgbnVsbHB0cikgdih1bnNpZ25lZCwgY291bGRUYWtlU2xvd0Nhc2VNaW5pbXVt
Q291bnQsIDEwLCBOb3JtYWwsIG51bGxwdHIpIHYodW5zaWduZWQsIG9zckV4aXRDb3VudEZvclJl
b3B0aW1pemF0aW9uLCAxMDAsIE5vcm1hbCwgbnVsbHB0cikgdih1bnNpZ25lZCwgb3NyRXhpdENv
dW50Rm9yUmVvcHRpbWl6YXRpb25Gcm9tTG9vcCwgNSwgTm9ybWFsLCBudWxscHRyKSB2KHVuc2ln
bmVkLCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heCwgMCwgTm9ybWFsLCBudWxscHRyKSB2
KHVuc2lnbmVkLCBtaW5pbXVtT3B0aW1pemF0aW9uRGVsYXksIDEsIE5vcm1hbCwgbnVsbHB0cikg
dih1bnNpZ25lZCwgbWF4aW11bU9wdGltaXphdGlvbkRlbGF5LCA1LCBOb3JtYWwsIG51bGxwdHIp
IHYoZG91YmxlLCBkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZSwgMC43NSwgTm9ybWFsLCBudWxs
cHRyKSB2KGRvdWJsZSwgZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1JhdGUsIDAuMzUsIE5vcm1hbCwg
bnVsbHB0cikgdihkb3VibGUsIGRvdWJsZVZvdGVSYXRpb0ZvckRvdWJsZUZvcm1hdCwgMiwgTm9y
bWFsLCBudWxscHRyKSB2KGRvdWJsZSwgc3RydWN0dXJlQ2hlY2tWb3RlUmF0aW9Gb3JIb2lzdGlu
ZywgMSwgTm9ybWFsLCBudWxscHRyKSB2KGRvdWJsZSwgY2hlY2tBcnJheVZvdGVSYXRpb0Zvckhv
aXN0aW5nLCAxLCBOb3JtYWwsIG51bGxwdHIpIHYodW5zaWduZWQsIG1pbmltdW1OdW1iZXJPZlNj
YW5zQmV0d2VlblJlYmFsYW5jZSwgMTAwLCBOb3JtYWwsIG51bGxwdHIpIHYodW5zaWduZWQsIG51
bWJlck9mR0NNYXJrZXJzLCBjb21wdXRlTnVtYmVyT2ZHQ01hcmtlcnMoNyksIE5vcm1hbCwgbnVs
bHB0cikgdih1bnNpZ25lZCwgb3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkLCAxMDAwLCBOb3JtYWws
IG51bGxwdHIpIHYoZG91YmxlLCBtaW5IZWFwVXRpbGl6YXRpb24sIDAuOCwgTm9ybWFsLCBudWxs
cHRyKSB2KGRvdWJsZSwgbWluQ29waWVkQmxvY2tVdGlsaXphdGlvbiwgMC45LCBOb3JtYWwsIG51
bGxwdHIpIHYoZG91YmxlLCBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uLCAwLjksIE5vcm1hbCwg
bnVsbHB0cikgdih1bnNpZ25lZCwgc2xvd1BhdGhBbGxvY3NCZXR3ZWVuR0NzLCAwLCBOb3JtYWws
ICJmb3JjZSBhIEdDIG9uIGV2ZXJ5IE50aCBzbG93IHBhdGggYWxsb2MsIHdoZXJlIE4gaXMgc3Bl
Y2lmaWVkIGJ5IHRoaXMgb3B0aW9uIikgdihkb3VibGUsIHBlcmNlbnRDUFVQZXJNQkZvckZ1bGxU
aW1lciwgMC4wMDAzMTI1LCBOb3JtYWwsIG51bGxwdHIpIHYoZG91YmxlLCBwZXJjZW50Q1BVUGVy
TUJGb3JFZGVuVGltZXIsIDAuMDAyNSwgTm9ybWFsLCBudWxscHRyKSB2KGRvdWJsZSwgY29sbGVj
dGlvblRpbWVyTWF4UGVyY2VudENQVSwgMC4wNSwgTm9ybWFsLCBudWxscHRyKSB2KGJvb2wsIGZv
cmNlV2Vha1JhbmRvbVNlZWQsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIHYodW5zaWduZWQsIGZv
cmNlZFdlYWtSYW5kb21TZWVkLCAwLCBOb3JtYWwsIG51bGxwdHIpIHYoYm9vbCwgdXNlWm9tYmll
TW9kZSwgZmFsc2UsIE5vcm1hbCwgImRlYnVnZ2luZyBvcHRpb24gdG8gc2NyaWJibGUgb3ZlciBk
ZWFkIG9iamVjdHMgd2l0aCAweGRlYWRiZWVmIikgdihib29sLCB1c2VJbW1vcnRhbE9iamVjdHMs
IGZhbHNlLCBOb3JtYWwsICJkZWJ1Z2dpbmcgb3B0aW9uIHRvIGtlZXAgYWxsIG9iamVjdHMgYWxp
dmUgZm9yZXZlciIpIHYoYm9vbCwgZHVtcE9iamVjdFN0YXRpc3RpY3MsIGZhbHNlLCBOb3JtYWws
IG51bGxwdHIpIHYoZ2NMb2dMZXZlbCwgbG9nR0MsIEdDTG9nZ2luZzo6Tm9uZSwgTm9ybWFsLCAi
ZGVidWdnaW5nIG9wdGlvbiB0byBsb2cgR0MgYWN0aXZpdHkgKDAgPSBOb25lLCAxID0gQmFzaWMs
IDIgPSBWZXJib3NlKSIpIHYoYm9vbCwgdXNlR0MsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgdihi
b29sLCBnY0F0RW5kLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIGpzYyBDTEkgd2lsbCBk
byBhIEdDIGJlZm9yZSBleGl0aW5nIikgdihib29sLCBmb3JjZUdDU2xvd1BhdGhzLCBmYWxzZSwg
Tm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBmb3JjZSBhbGwgSklUIGZhc3QgYWxsb2NhdGlvbnMg
ZG93biB0aGVpciBzbG93IHBhdGhzLiIpIHYodW5zaWduZWQsIGdjTWF4SGVhcFNpemUsIDAsIE5v
cm1hbCwgbnVsbHB0cikgdih1bnNpZ25lZCwgZm9yY2VSQU1TaXplLCAwLCBOb3JtYWwsIG51bGxw
dHIpIHYoYm9vbCwgcmVjb3JkR0NQYXVzZVRpbWVzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSB2
KGJvb2wsIGxvZ0hlYXBTdGF0aXN0aWNzQXRFeGl0LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSB2
KGJvb2wsIHVzZVR5cGVQcm9maWxlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgdihib29sLCB1
c2VDb250cm9sRmxvd1Byb2ZpbGVyLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSB2KGJvb2wsIHVz
ZVNhbXBsaW5nUHJvZmlsZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIHYodW5zaWduZWQsIHNh
bXBsZUludGVydmFsLCAxMDAwLCBOb3JtYWwsICJUaW1lIGJldHdlZW4gc3RhY2sgdHJhY2VzIGlu
IG1pY3Jvc2Vjb25kcy4iKSB2KGJvb2wsIGNvbGxlY3RTYW1wbGluZ1Byb2ZpbGVyRGF0YUZvckpT
Q1NoZWxsLCBmYWxzZSwgTm9ybWFsLCAiVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgSlNDIHNoZWxs
J3MgLS1zYW1wbGUgb3B0aW9uLiIpIHYoYm9vbCwgYWx3YXlzR2VuZXJhdGVQQ1RvQ29kZU9yaWdp
bk1hcCwgZmFsc2UsIE5vcm1hbCwgIlRoaXMgd2lsbCBtYWtlIHN1cmUgd2UgYWx3YXlzIGdlbmVy
YXRlIGEgUENUb0NvZGVPcmlnaW5NYXAgZm9yIEpJVGVkIGNvZGUuIikgdihib29sLCB2ZXJpZnlI
ZWFwLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSB2KHVuc2lnbmVkLCBudW1iZXJPZkdDQ3ljbGVz
VG9SZWNvcmRGb3JWZXJpZmljYXRpb24sIDMsIE5vcm1hbCwgbnVsbHB0cikgdihib29sLCB1c2VF
eGNlcHRpb25GdXp6LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSB2KHVuc2lnbmVkLCBmaXJlRXhj
ZXB0aW9uRnV6ekF0LCAwLCBOb3JtYWwsIG51bGxwdHIpIHYoYm9vbCwgdmFsaWRhdGVERkdFeGNl
cHRpb25IYW5kbGluZywgZmFsc2UsIE5vcm1hbCwgIkNhdXNlcyB0aGUgREZHIHRvIGVtaXQgY29k
ZSB2YWxpZGF0aW5nIGV4Y2VwdGlvbiBoYW5kbGluZyBmb3IgZWFjaCBub2RlIHRoYXQgY2FuIGV4
aXQiKSB2KGJvb2wsIHVzZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6eiwgZmFsc2UsIE5vcm1hbCwg
bnVsbHB0cikgdih1bnNpZ25lZCwgZmlyZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ekF0LCAwLCBO
b3JtYWwsIG51bGxwdHIpIHYodW5zaWduZWQsIGZpcmVFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enpB
dE9yQWZ0ZXIsIDAsIE5vcm1hbCwgbnVsbHB0cikgdihib29sLCB2ZXJib3NlRXhlY3V0YWJsZUFs
bG9jYXRpb25GdXp6LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSB2KGJvb2wsIHVzZU9TUkV4aXRG
dXp6LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSB2KHVuc2lnbmVkLCBmaXJlT1NSRXhpdEZ1enpB
dFN0YXRpYywgMCwgTm9ybWFsLCBudWxscHRyKSB2KHVuc2lnbmVkLCBmaXJlT1NSRXhpdEZ1enpB
dCwgMCwgTm9ybWFsLCBudWxscHRyKSB2KHVuc2lnbmVkLCBmaXJlT1NSRXhpdEZ1enpBdE9yQWZ0
ZXIsIDAsIE5vcm1hbCwgbnVsbHB0cikgdihib29sLCBsb2dCM1BoYXNlVGltZXMsIGZhbHNlLCBO
b3JtYWwsIG51bGxwdHIpIHYoZG91YmxlLCByYXJlQmxvY2tQZW5hbHR5LCAwLjAwMSwgTm9ybWFs
LCBudWxscHRyKSB2KGJvb2wsIGFpclNwaWxsc0V2ZXJ5dGhpbmcsIGZhbHNlLCBOb3JtYWwsIG51
bGxwdHIpIHYoYm9vbCwgbG9nQWlyUmVnaXN0ZXJQcmVzc3VyZSwgZmFsc2UsIE5vcm1hbCwgbnVs
bHB0cikgdih1bnNpZ25lZCwgbWF4QjNUYWlsRHVwQmxvY2tTaXplLCAzLCBOb3JtYWwsIG51bGxw
dHIpIHYodW5zaWduZWQsIG1heEIzVGFpbER1cEJsb2NrU3VjY2Vzc29ycywgMywgTm9ybWFsLCBu
dWxscHRyKSB2KGJvb2wsIHVzZURvbGxhclZNLCBmYWxzZSwgUmVzdHJpY3RlZCwgImluc3RhbGxz
IHRoZSAkdm0gZGVidWdnaW5nIHRvb2wgaW4gZ2xvYmFsIG9iamVjdHMiKSB2KG9wdGlvblN0cmlu
ZywgZnVuY3Rpb25PdmVycmlkZXMsIG51bGxwdHIsIFJlc3RyaWN0ZWQsICJmaWxlIHdpdGggZGVi
dWdnaW5nIG92ZXJyaWRlcyBmb3IgZnVuY3Rpb24gYm9kaWVzIikgdih1bnNpZ25lZCwgd2F0Y2hk
b2csIDAsIE5vcm1hbCwgIndhdGNoZG9nIHRpbWVvdXQgKDAgPSBEaXNhYmxlZCwgTiA9IGEgdGlt
ZW91dCBwZXJpb2Qgb2YgTiBtaWxsaXNlY29uZHMpIikgdihib29sLCB1c2VJQ1N0YXRzLCBmYWxz
ZSwgTm9ybWFsLCBudWxscHRyKSB2KGJvb2wsIGR1bXBNb2R1bGVSZWNvcmQsIGZhbHNlLCBOb3Jt
YWwsIG51bGxwdHIpIHYoYm9vbCwgZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSwgZmFsc2UsIE5vcm1h
bCwgbnVsbHB0cikgdihib29sLCBleHBvc2VJbnRlcm5hbE1vZHVsZUxvYWRlciwgZmFsc2UsIE5v
cm1hbCwgImV4cG9zZSB0aGUgaW50ZXJuYWwgbW9kdWxlIGxvYWRlciBvYmplY3QgdG8gdGhlIGds
b2JhbCBzcGFjZSBmb3IgZGVidWdnaW5nIikgdihib29sLCB1c2VTdXBlclNhbXBsZXIsIGZhbHNl
LCBOb3JtYWwsIG51bGxwdHIpCiMgMzY1ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmgiCmVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgU2FtZU9wdGlvbiwK
ICAgIEludmVydGVkT3B0aW9uLAp9OwoKI2RlZmluZSBKU0NfQUxJQVNFRF9PUFRJT05TKHYpIHYo
ZW5hYmxlRnVuY3Rpb25Eb3RBcmd1bWVudHMsIHVzZUZ1bmN0aW9uRG90QXJndW1lbnRzLCBTYW1l
T3B0aW9uKSB2KGVuYWJsZVRhaWxDYWxscywgdXNlVGFpbENhbGxzLCBTYW1lT3B0aW9uKSB2KHNo
b3dEaXNhc3NlbWJseSwgZHVtcERpc2Fzc2VtYmx5LCBTYW1lT3B0aW9uKSB2KHNob3dERkdEaXNh
c3NlbWJseSwgZHVtcERGR0Rpc2Fzc2VtYmx5LCBTYW1lT3B0aW9uKSB2KHNob3dGVExEaXNhc3Nl
bWJseSwgZHVtcEZUTERpc2Fzc2VtYmx5LCBTYW1lT3B0aW9uKSB2KHNob3dBbGxERkdOb2Rlcywg
ZHVtcEFsbERGR05vZGVzLCBTYW1lT3B0aW9uKSB2KGFsd2F5c0RvRnVsbENvbGxlY3Rpb24sIHVz
ZUdlbmVyYXRpb25hbEdDLCBJbnZlcnRlZE9wdGlvbikgdihlbmFibGVPU1JFbnRyeVRvREZHLCB1
c2VPU1JFbnRyeVRvREZHLCBTYW1lT3B0aW9uKSB2KGVuYWJsZU9TUkVudHJ5VG9GVEwsIHVzZU9T
UkVudHJ5VG9GVEwsIFNhbWVPcHRpb24pIHYoZW5hYmxlQWNjZXNzSW5saW5pbmcsIHVzZUFjY2Vz
c0lubGluaW5nLCBTYW1lT3B0aW9uKSB2KGVuYWJsZVBvbHl2YXJpYW50RGV2aXJ0dWFsaXphdGlv
biwgdXNlUG9seXZhcmlhbnREZXZpcnR1YWxpemF0aW9uLCBTYW1lT3B0aW9uKSB2KGVuYWJsZVBv
bHltb3JwaGljQWNjZXNzSW5saW5pbmcsIHVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcsIFNh
bWVPcHRpb24pIHYoZW5hYmxlUG9seW1vcnBoaWNDYWxsSW5saW5pbmcsIHVzZVBvbHltb3JwaGlj
Q2FsbElubGluaW5nLCBTYW1lT3B0aW9uKSB2KGVuYWJsZU1vdkhpbnRSZW1vdmFsLCB1c2VNb3ZI
aW50UmVtb3ZhbCwgU2FtZU9wdGlvbikgdihlbmFibGVPYmplY3RBbGxvY2F0aW9uU2lua2luZywg
dXNlT2JqZWN0QWxsb2NhdGlvblNpbmtpbmcsIFNhbWVPcHRpb24pIHYoZW5hYmxlQ29uY3VycmVu
dEpJVCwgdXNlQ29uY3VycmVudEpJVCwgU2FtZU9wdGlvbikgdihlbmFibGVQcm9maWxlciwgdXNl
UHJvZmlsZXIsIFNhbWVPcHRpb24pIHYoZW5hYmxlQXJjaGl0ZWN0dXJlU3BlY2lmaWNPcHRpbWl6
YXRpb25zLCB1c2VBcmNoaXRlY3R1cmVTcGVjaWZpY09wdGltaXphdGlvbnMsIFNhbWVPcHRpb24p
IHYoZW5hYmxlUG9seXZhcmlhbnRDYWxsSW5saW5pbmcsIHVzZVBvbHl2YXJpYW50Q2FsbElubGlu
aW5nLCBTYW1lT3B0aW9uKSB2KGVuYWJsZVBvbHl2YXJpYW50QnlJZElubGluaW5nLCB1c2VQb2x5
dmFyaWFudEJ5SWRJbmxpbmluZywgU2FtZU9wdGlvbikgdihlbmFibGVNYXhpbWFsRmx1c2hJbnNl
cnRpb25QaGFzZSwgdXNlTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UsIFNhbWVPcHRpb24pIHYo
b2JqZWN0c0FyZUltbW9ydGFsLCB1c2VJbW1vcnRhbE9iamVjdHMsIFNhbWVPcHRpb24pIHYoc2hv
d09iamVjdFN0YXRpc3RpY3MsIGR1bXBPYmplY3RTdGF0aXN0aWNzLCBTYW1lT3B0aW9uKSB2KGRp
c2FibGVHQywgdXNlR0MsIEludmVydGVkT3B0aW9uKSB2KGVuYWJsZVR5cGVQcm9maWxlciwgdXNl
VHlwZVByb2ZpbGVyLCBTYW1lT3B0aW9uKSB2KGVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIsIHVz
ZUNvbnRyb2xGbG93UHJvZmlsZXIsIFNhbWVPcHRpb24pIHYoZW5hYmxlRXhjZXB0aW9uRnV6eiwg
dXNlRXhjZXB0aW9uRnV6eiwgU2FtZU9wdGlvbikgdihlbmFibGVFeGVjdXRhYmxlQWxsb2NhdGlv
bkZ1enosIHVzZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6eiwgU2FtZU9wdGlvbikgdihlbmFibGVP
U1JFeGl0RnV6eiwgdXNlT1NSRXhpdEZ1enosIFNhbWVPcHRpb24pIHYoZW5hYmxlRG9sbGFyVk0s
IHVzZURvbGxhclZNLCBTYW1lT3B0aW9uKQojIDQwMiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oIgpjbGFzcyBPcHRpb25zIHsKcHVibGljOgogICAgZW51bSBj
bGFzcyBEdW1wTGV2ZWwgewogICAgICAgIE5vbmUgPSAwLAogICAgICAgIE92ZXJyaWRkZW4sCiAg
ICAgICAgQWxsLAogICAgICAgIFZlcmJvc2UKICAgIH07CgogICAgZW51bSBjbGFzcyBBdmFpbGFi
aWxpdHkgewogICAgICAgIE5vcm1hbCA9IDAsCiAgICAgICAgUmVzdHJpY3RlZAogICAgfTsKCgoK
ICAgIHR5cGVkZWYgaW50MzJfdCBpbnQzMjsKCgogICAgZW51bSBPcHRpb25JRCB7CiNkZWZpbmUg
Rk9SX0VBQ0hfT1BUSU9OKHR5cGVfLG5hbWVfLGRlZmF1bHRWYWx1ZV8sYXZhaWxhYmlsaXR5Xyxk
ZXNjcmlwdGlvbl8pIG5hbWVfICMjSUQsCgogICAgICAgIHZhbGlkYXRlT3B0aW9uc0lELCBkdW1w
T3B0aW9uc0lELCB1c2VMTEludElELCB1c2VKSVRJRCwgdXNlREZHSklUSUQsIHVzZVJlZ0V4cEpJ
VElELCByZXBvcnRNdXN0U3VjY2VlZEV4ZWN1dGFibGVBbGxvY2F0aW9uc0lELCBtYXhQZXJUaHJl
YWRTdGFja1VzYWdlSUQsIHJlc2VydmVkWm9uZVNpemVJRCwgZXJyb3JNb2RlUmVzZXJ2ZWRab25l
U2l6ZUlELCBjcmFzaElmQ2FudEFsbG9jYXRlSklUTWVtb3J5SUQsIGppdE1lbW9yeVJlc2VydmF0
aW9uU2l6ZUlELCB1c2VTZXBhcmF0ZWRXWEhlYXBJRCwgZm9yY2VDb2RlQmxvY2tMaXZlbmVzc0lE
LCBmb3JjZUlDRmFpbHVyZUlELCByZXBhdGNoQ291bnRGb3JDb29sRG93bklELCBpbml0aWFsQ29v
bERvd25Db3VudElELCByZXBhdGNoQnVmZmVyaW5nQ291bnRkb3duSUQsIGR1bXBHZW5lcmF0ZWRC
eXRlY29kZXNJRCwgZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzSUQsIHZhbGlkYXRlQnl0ZWNv
ZGVJRCwgZm9yY2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbklELCBmb3JjZVByb2ZpbGVyQnl0
ZWNvZGVHZW5lcmF0aW9uSUQsIHVzZUZ1bmN0aW9uRG90QXJndW1lbnRzSUQsIHVzZVRhaWxDYWxs
c0lELCBhbHdheXNVc2VTaGFkb3dDaGlja2VuSUQsIHNoYWRvd0NoaWNrZW5Mb2dTaXplSUQsIHNo
YWRvd0NoaWNrZW5TdGFja1NpemVMaW1pdElELCBkdW1wRGlzYXNzZW1ibHlJRCwgYXN5bmNEaXNh
c3NlbWJseUlELCBkdW1wREZHRGlzYXNzZW1ibHlJRCwgZHVtcEZUTERpc2Fzc2VtYmx5SUQsIGR1
bXBBbGxERkdOb2Rlc0lELCBieXRlY29kZVJhbmdlVG9ERkdDb21waWxlSUQsIGJ5dGVjb2RlUmFu
Z2VUb0ZUTENvbXBpbGVJRCwgZGZnV2hpdGVsaXN0SUQsIGR1bXBTb3VyY2VBdERGR1RpbWVJRCwg
ZHVtcEJ5dGVjb2RlQXRERkdUaW1lSUQsIGR1bXBHcmFwaEFmdGVyUGFyc2luZ0lELCBkdW1wR3Jh
cGhBdEVhY2hQaGFzZUlELCBkdW1wREZHR3JhcGhBdEVhY2hQaGFzZUlELCBkdW1wREZHRlRMR3Jh
cGhBdEVhY2hQaGFzZUlELCBkdW1wQjNHcmFwaEF0RWFjaFBoYXNlSUQsIGR1bXBBaXJHcmFwaEF0
RWFjaFBoYXNlSUQsIHZlcmJvc2VERkdCeXRlQ29kZVBhcnNpbmdJRCwgdmVyYm9zZUNvbXBpbGF0
aW9uSUQsIHZlcmJvc2VGVExDb21waWxhdGlvbklELCBsb2dDb21waWxhdGlvbkNoYW5nZXNJRCwg
cHJpbnRFYWNoT1NSRXhpdElELCB2YWxpZGF0ZUdyYXBoSUQsIHZhbGlkYXRlR3JhcGhBdEVhY2hQ
aGFzZUlELCB2ZXJib3NlVmFsaWRhdGlvbkZhaWx1cmVJRCwgdmVyYm9zZU9TUklELCB2ZXJib3Nl
RlRMT1NSRXhpdElELCB2ZXJib3NlQ2FsbExpbmtJRCwgdmVyYm9zZUNvbXBpbGF0aW9uUXVldWVJ
RCwgcmVwb3J0Q29tcGlsZVRpbWVzSUQsIHJlcG9ydEZUTENvbXBpbGVUaW1lc0lELCByZXBvcnRU
b3RhbENvbXBpbGVUaW1lc0lELCB2ZXJib3NlQ0ZBSUQsIHZlcmJvc2VGVExUb0pTVGh1bmtJRCwg
dmVyYm9zZUZUTEZhaWx1cmVJRCwgYWx3YXlzQ29tcHV0ZUhhc2hJRCwgdGVzdFRoZUZUTElELCB2
ZXJib3NlU2FuaXRpemVTdGFja0lELCB1c2VHZW5lcmF0aW9uYWxHQ0lELCBlYWdlcmx5VXBkYXRl
VG9wQ2FsbEZyYW1lSUQsIHVzZU9TUkVudHJ5VG9ERkdJRCwgdXNlT1NSRW50cnlUb0ZUTElELCB1
c2VGVExKSVRJRCwgdXNlRlRMVEJBQUlELCB2YWxpZGF0ZUZUTE9TUkV4aXRMaXZlbmVzc0lELCBi
M0Fsd2F5c0ZhaWxzQmVmb3JlQ29tcGlsZUlELCBiM0Fsd2F5c0ZhaWxzQmVmb3JlTGlua0lELCBm
dGxDcmFzaGVzSUQsIGNsb2JiZXJBbGxSZWdzSW5GVExJQ1Nsb3dQYXRoSUQsIHVzZUFjY2Vzc0lu
bGluaW5nSUQsIG1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZUlELCBtZWdhbW9ycGhpY0xvYWRDb3N0
SUQsIHVzZVBvbHl2YXJpYW50RGV2aXJ0dWFsaXphdGlvbklELCB1c2VQb2x5bW9ycGhpY0FjY2Vz
c0lubGluaW5nSUQsIHVzZVBvbHltb3JwaGljQ2FsbElubGluaW5nSUQsIHVzZVBvbHltb3JwaGlj
Q2FsbElubGluaW5nRm9yTm9uU3R1YlN0YXR1c0lELCBtYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50
TGlzdFNpemVJRCwgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplRm9yVG9wVGllcklE
LCBtYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50c0ZvcklubGluaW5nSUQsIGZyZXF1ZW50Q2FsbFRo
cmVzaG9sZElELCBtaW5pbXVtQ2FsbFRvS25vd25SYXRlSUQsIGNyZWF0ZVByZUhlYWRlcnNJRCwg
dXNlTW92SGludFJlbW92YWxJRCwgdXNlUHV0U3RhY2tTaW5raW5nSUQsIHVzZU9iamVjdEFsbG9j
YXRpb25TaW5raW5nSUQsIHVzZUNvbmN1cnJlbnRKSVRJRCwgbnVtYmVyT2ZERkdDb21waWxlclRo
cmVhZHNJRCwgbnVtYmVyT2ZGVExDb21waWxlclRocmVhZHNJRCwgcHJpb3JpdHlEZWx0YU9mREZH
Q29tcGlsZXJUaHJlYWRzSUQsIHByaW9yaXR5RGVsdGFPZkZUTENvbXBpbGVyVGhyZWFkc0lELCB1
c2VQcm9maWxlcklELCBkaXNhc3NlbWJsZUJhc2VsaW5lRm9yUHJvZmlsZXJJRCwgdXNlQXJjaGl0
ZWN0dXJlU3BlY2lmaWNPcHRpbWl6YXRpb25zSUQsIGJyZWFrT25UaHJvd0lELCBtYXhpbXVtT3B0
aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudElELCBtYXhpbXVtRnVuY3Rpb25Gb3JD
YWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudElELCBtYXhpbXVtRnVuY3Rpb25Gb3JD
bG9zdXJlQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnRJRCwgbWF4aW11bUZ1bmN0
aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudElELCBtYXhpbXVt
RlRMQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudElELCBtYXhpbXVtSW5saW5pbmdEZXB0aElELCBt
YXhpbXVtSW5saW5pbmdSZWN1cnNpb25JRCwgbWF4aW11bUlubGluaW5nQ2FsbGVyU2l6ZUlELCBt
YXhpbXVtVmFyYXJnc0ZvcklubGluaW5nSUQsIHVzZVBvbHl2YXJpYW50Q2FsbElubGluaW5nSUQs
IHVzZVBvbHl2YXJpYW50QnlJZElubGluaW5nSUQsIHVzZU1heGltYWxGbHVzaEluc2VydGlvblBo
YXNlSUQsIG1heGltdW1CaW5hcnlTdHJpbmdTd2l0Y2hDYXNlTGVuZ3RoSUQsIG1heGltdW1CaW5h
cnlTdHJpbmdTd2l0Y2hUb3RhbExlbmd0aElELCBqaXRQb2xpY3lTY2FsZUlELCBmb3JjZUVhZ2Vy
Q29tcGlsYXRpb25JRCwgdGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXBJRCwgdGhyZXNob2xkRm9y
SklUU29vbklELCB0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwSUQsIHRocmVzaG9sZEZv
ck9wdGltaXplQWZ0ZXJMb25nV2FybVVwSUQsIHRocmVzaG9sZEZvck9wdGltaXplU29vbklELCBl
eGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcElELCBleGVjdXRpb25Db3VudGVySW5jcmVt
ZW50Rm9yRW50cnlJRCwgdGhyZXNob2xkRm9yRlRMT3B0aW1pemVBZnRlcldhcm1VcElELCB0aHJl
c2hvbGRGb3JGVExPcHRpbWl6ZVNvb25JRCwgZnRsVGllclVwQ291bnRlckluY3JlbWVudEZvckxv
b3BJRCwgZnRsVGllclVwQ291bnRlckluY3JlbWVudEZvclJldHVybklELCBmdGxPU1JFbnRyeUZh
aWx1cmVDb3VudEZvclJlb3B0aW1pemF0aW9uSUQsIGZ0bE9TUkVudHJ5UmV0cnlUaHJlc2hvbGRJ
RCwgZXZhbFRocmVzaG9sZE11bHRpcGxpZXJJRCwgbWF4aW11bUV2YWxDYWNoZWFibGVTb3VyY2VM
ZW5ndGhJRCwgcmFuZG9taXplRXhlY3V0aW9uQ291bnRzQmV0d2VlbkNoZWNrcG9pbnRzSUQsIG1h
eGltdW1FeGVjdXRpb25Db3VudHNCZXR3ZWVuQ2hlY2twb2ludHNGb3JCYXNlbGluZUlELCBtYXhp
bXVtRXhlY3V0aW9uQ291bnRzQmV0d2VlbkNoZWNrcG9pbnRzRm9yVXBwZXJUaWVyc0lELCBsaWtl
bHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudElELCBjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1D
b3VudElELCBvc3JFeGl0Q291bnRGb3JSZW9wdGltaXphdGlvbklELCBvc3JFeGl0Q291bnRGb3JS
ZW9wdGltaXphdGlvbkZyb21Mb29wSUQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4SUQs
IG1pbmltdW1PcHRpbWl6YXRpb25EZWxheUlELCBtYXhpbXVtT3B0aW1pemF0aW9uRGVsYXlJRCwg
ZGVzaXJlZFByb2ZpbGVMaXZlbmVzc1JhdGVJRCwgZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1JhdGVJ
RCwgZG91YmxlVm90ZVJhdGlvRm9yRG91YmxlRm9ybWF0SUQsIHN0cnVjdHVyZUNoZWNrVm90ZVJh
dGlvRm9ySG9pc3RpbmdJRCwgY2hlY2tBcnJheVZvdGVSYXRpb0ZvckhvaXN0aW5nSUQsIG1pbmlt
dW1OdW1iZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZUlELCBudW1iZXJPZkdDTWFya2Vyc0lELCBv
cGFxdWVSb290TWVyZ2VUaHJlc2hvbGRJRCwgbWluSGVhcFV0aWxpemF0aW9uSUQsIG1pbkNvcGll
ZEJsb2NrVXRpbGl6YXRpb25JRCwgbWluTWFya2VkQmxvY2tVdGlsaXphdGlvbklELCBzbG93UGF0
aEFsbG9jc0JldHdlZW5HQ3NJRCwgcGVyY2VudENQVVBlck1CRm9yRnVsbFRpbWVySUQsIHBlcmNl
bnRDUFVQZXJNQkZvckVkZW5UaW1lcklELCBjb2xsZWN0aW9uVGltZXJNYXhQZXJjZW50Q1BVSUQs
IGZvcmNlV2Vha1JhbmRvbVNlZWRJRCwgZm9yY2VkV2Vha1JhbmRvbVNlZWRJRCwgdXNlWm9tYmll
TW9kZUlELCB1c2VJbW1vcnRhbE9iamVjdHNJRCwgZHVtcE9iamVjdFN0YXRpc3RpY3NJRCwgbG9n
R0NJRCwgdXNlR0NJRCwgZ2NBdEVuZElELCBmb3JjZUdDU2xvd1BhdGhzSUQsIGdjTWF4SGVhcFNp
emVJRCwgZm9yY2VSQU1TaXplSUQsIHJlY29yZEdDUGF1c2VUaW1lc0lELCBsb2dIZWFwU3RhdGlz
dGljc0F0RXhpdElELCB1c2VUeXBlUHJvZmlsZXJJRCwgdXNlQ29udHJvbEZsb3dQcm9maWxlcklE
LCB1c2VTYW1wbGluZ1Byb2ZpbGVySUQsIHNhbXBsZUludGVydmFsSUQsIGNvbGxlY3RTYW1wbGlu
Z1Byb2ZpbGVyRGF0YUZvckpTQ1NoZWxsSUQsIGFsd2F5c0dlbmVyYXRlUENUb0NvZGVPcmlnaW5N
YXBJRCwgdmVyaWZ5SGVhcElELCBudW1iZXJPZkdDQ3ljbGVzVG9SZWNvcmRGb3JWZXJpZmljYXRp
b25JRCwgdXNlRXhjZXB0aW9uRnV6eklELCBmaXJlRXhjZXB0aW9uRnV6ekF0SUQsIHZhbGlkYXRl
REZHRXhjZXB0aW9uSGFuZGxpbmdJRCwgdXNlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6SUQsIGZp
cmVFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enpBdElELCBmaXJlRXhlY3V0YWJsZUFsbG9jYXRpb25G
dXp6QXRPckFmdGVySUQsIHZlcmJvc2VFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enpJRCwgdXNlT1NS
RXhpdEZ1enpJRCwgZmlyZU9TUkV4aXRGdXp6QXRTdGF0aWNJRCwgZmlyZU9TUkV4aXRGdXp6QXRJ
RCwgZmlyZU9TUkV4aXRGdXp6QXRPckFmdGVySUQsIGxvZ0IzUGhhc2VUaW1lc0lELCByYXJlQmxv
Y2tQZW5hbHR5SUQsIGFpclNwaWxsc0V2ZXJ5dGhpbmdJRCwgbG9nQWlyUmVnaXN0ZXJQcmVzc3Vy
ZUlELCBtYXhCM1RhaWxEdXBCbG9ja1NpemVJRCwgbWF4QjNUYWlsRHVwQmxvY2tTdWNjZXNzb3Jz
SUQsIHVzZURvbGxhclZNSUQsIGZ1bmN0aW9uT3ZlcnJpZGVzSUQsIHdhdGNoZG9nSUQsIHVzZUlD
U3RhdHNJRCwgZHVtcE1vZHVsZVJlY29yZElELCBkdW1wTW9kdWxlTG9hZGluZ1N0YXRlSUQsIGV4
cG9zZUludGVybmFsTW9kdWxlTG9hZGVySUQsIHVzZVN1cGVyU2FtcGxlcklELAojdW5kZWYgRk9S
X0VBQ0hfT1BUSU9OCiAgICAgICAgbnVtYmVyT2ZPcHRpb25zCiAgICB9OwoKICAgIGVudW0gY2xh
c3MgVHlwZSB7CiAgICAgICAgYm9vbFR5cGUsCiAgICAgICAgdW5zaWduZWRUeXBlLAogICAgICAg
IGRvdWJsZVR5cGUsCiAgICAgICAgaW50MzJUeXBlLAogICAgICAgIG9wdGlvblJhbmdlVHlwZSwK
ICAgICAgICBvcHRpb25TdHJpbmdUeXBlLAogICAgICAgIGdjTG9nTGV2ZWxUeXBlLAogICAgfTsK
CiAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CgoKCiAgICBzdGF0aWMgYm9vbCBzZXRPcHRp
b25zKGNvbnN0IGNoYXIqIG9wdGlvbnNMaXN0KTsKCgoKICAgIHN0YXRpYyBib29sIHNldE9wdGlv
bihjb25zdCBjaGFyKiBhcmcpOwoKICAgIHN0YXRpYyB2b2lkIGR1bXBBbGxPcHRpb25zKEZJTEUq
LCBEdW1wTGV2ZWwsIGNvbnN0IGNoYXIqIHRpdGxlID0gbnVsbHB0cik7CiAgICBzdGF0aWMgdm9p
ZCBkdW1wQWxsT3B0aW9uc0luQUxpbmUoU3RyaW5nQnVpbGRlciYpOwoKICAgIHN0YXRpYyB2b2lk
IGVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpOwoKCiNkZWZpbmUgRk9SX0VBQ0hfT1BUSU9OKHR5
cGVfLG5hbWVfLGRlZmF1bHRWYWx1ZV8sYXZhaWxhYmlsaXR5XyxkZXNjcmlwdGlvbl8pIEFMV0FZ
U19JTkxJTkUgc3RhdGljIHR5cGVfJiBuYW1lXygpIHsgcmV0dXJuIHNfb3B0aW9uc1tuYW1lXyAj
I0lEXS50eXBlXyAjI1ZhbDsgfSBBTFdBWVNfSU5MSU5FIHN0YXRpYyB0eXBlXyYgbmFtZV8gIyNE
ZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tuYW1lXyAjI0lEXS50eXBlXyAjI1Zh
bDsgfQoKCgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3Rh
dGljIGJvb2wmIHZhbGlkYXRlT3B0aW9ucygpIHsgcmV0dXJuIHNfb3B0aW9uc1t2YWxpZGF0ZU9w
dGlvbnNJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBzdGF0aWMgYm9vbCYgdmFsaWRhdGVPcHRpb25zRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVm
YXVsdE9wdGlvbnNbdmFsaWRhdGVPcHRpb25zSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmli
dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBkdW1wT3B0aW9ucygp
IHsgcmV0dXJuIHNfb3B0aW9uc1tkdW1wT3B0aW9uc0lEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIGR1bXBP
cHRpb25zRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbZHVtcE9wdGlvbnNJRF0u
dW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
c3RhdGljIGJvb2wmIHVzZUxMSW50KCkgeyByZXR1cm4gc19vcHRpb25zW3VzZUxMSW50SURdLmJv
b2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGlj
IGJvb2wmIHVzZUxMSW50RGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbdXNlTExJ
bnRJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p
KSBzdGF0aWMgYm9vbCYgdXNlSklUKCkgeyByZXR1cm4gc19vcHRpb25zW3VzZUpJVElEXS5ib29s
VmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBi
b29sJiB1c2VKSVREZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1t1c2VKSVRJRF0u
Ym9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0
aWMgYm9vbCYgdXNlREZHSklUKCkgeyByZXR1cm4gc19vcHRpb25zW3VzZURGR0pJVElEXS5ib29s
VmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBi
b29sJiB1c2VERkdKSVREZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1t1c2VERkdK
SVRJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p
KSBzdGF0aWMgYm9vbCYgdXNlUmVnRXhwSklUKCkgeyByZXR1cm4gc19vcHRpb25zW3VzZVJlZ0V4
cEpJVElEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XykpIHN0YXRpYyBib29sJiB1c2VSZWdFeHBKSVREZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0
T3B0aW9uc1t1c2VSZWdFeHBKSVRJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgcmVwb3J0TXVzdFN1Y2NlZWRFeGVjdXRh
YmxlQWxsb2NhdGlvbnMoKSB7IHJldHVybiBzX29wdGlvbnNbcmVwb3J0TXVzdFN1Y2NlZWRFeGVj
dXRhYmxlQWxsb2NhdGlvbnNJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgcmVwb3J0TXVzdFN1Y2NlZWRFeGVjdXRhYmxl
QWxsb2NhdGlvbnNEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tyZXBvcnRNdXN0
U3VjY2VlZEV4ZWN1dGFibGVBbGxvY2F0aW9uc0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgbWF4UGVyVGhyZWFk
U3RhY2tVc2FnZSgpIHsgcmV0dXJuIHNfb3B0aW9uc1ttYXhQZXJUaHJlYWRTdGFja1VzYWdlSURd
LnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp
IHN0YXRpYyB1bnNpZ25lZCYgbWF4UGVyVGhyZWFkU3RhY2tVc2FnZURlZmF1bHQoKSB7IHJldHVy
biBzX2RlZmF1bHRPcHRpb25zW21heFBlclRocmVhZFN0YWNrVXNhZ2VJRF0udW5zaWduZWRWYWw7
IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2ln
bmVkJiByZXNlcnZlZFpvbmVTaXplKCkgeyByZXR1cm4gc19vcHRpb25zW3Jlc2VydmVkWm9uZVNp
emVJRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fKSkgc3RhdGljIHVuc2lnbmVkJiByZXNlcnZlZFpvbmVTaXplRGVmYXVsdCgpIHsgcmV0dXJu
IHNfZGVmYXVsdE9wdGlvbnNbcmVzZXJ2ZWRab25lU2l6ZUlEXS51bnNpZ25lZFZhbDsgfSBpbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIGVy
cm9yTW9kZVJlc2VydmVkWm9uZVNpemUoKSB7IHJldHVybiBzX29wdGlvbnNbZXJyb3JNb2RlUmVz
ZXJ2ZWRab25lU2l6ZUlEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIGVycm9yTW9kZVJlc2VydmVkWm9uZVNp
emVEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tlcnJvck1vZGVSZXNlcnZlZFpv
bmVTaXplSURdLnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIHN0YXRpYyBib29sJiBjcmFzaElmQ2FudEFsbG9jYXRlSklUTWVtb3J5KCkgeyBy
ZXR1cm4gc19vcHRpb25zW2NyYXNoSWZDYW50QWxsb2NhdGVKSVRNZW1vcnlJRF0uYm9vbFZhbDsg
fSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYg
Y3Jhc2hJZkNhbnRBbGxvY2F0ZUpJVE1lbW9yeURlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRP
cHRpb25zW2NyYXNoSWZDYW50QWxsb2NhdGVKSVRNZW1vcnlJRF0uYm9vbFZhbDsgfSBpbmxpbmUg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIGppdE1l
bW9yeVJlc2VydmF0aW9uU2l6ZSgpIHsgcmV0dXJuIHNfb3B0aW9uc1tqaXRNZW1vcnlSZXNlcnZh
dGlvblNpemVJRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBqaXRNZW1vcnlSZXNlcnZhdGlvblNpemVEZWZh
dWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tqaXRNZW1vcnlSZXNlcnZhdGlvblNpemVJ
RF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
KSkgc3RhdGljIGJvb2wmIHVzZVNlcGFyYXRlZFdYSGVhcCgpIHsgcmV0dXJuIHNfb3B0aW9uc1t1
c2VTZXBhcmF0ZWRXWEhlYXBJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdXNlU2VwYXJhdGVkV1hIZWFwRGVmYXVsdCgp
IHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbdXNlU2VwYXJhdGVkV1hIZWFwSURdLmJvb2xWYWw7
IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wm
IGZvcmNlQ29kZUJsb2NrTGl2ZW5lc3MoKSB7IHJldHVybiBzX29wdGlvbnNbZm9yY2VDb2RlQmxv
Y2tMaXZlbmVzc0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIHN0YXRpYyBib29sJiBmb3JjZUNvZGVCbG9ja0xpdmVuZXNzRGVmYXVsdCgpIHsg
cmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbZm9yY2VDb2RlQmxvY2tMaXZlbmVzc0lEXS5ib29sVmFs
OyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29s
JiBmb3JjZUlDRmFpbHVyZSgpIHsgcmV0dXJuIHNfb3B0aW9uc1tmb3JjZUlDRmFpbHVyZUlEXS5i
b29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRp
YyBib29sJiBmb3JjZUlDRmFpbHVyZURlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25z
W2ZvcmNlSUNGYWlsdXJlSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiByZXBhdGNoQ291bnRGb3JDb29sRG93bigp
IHsgcmV0dXJuIHNfb3B0aW9uc1tyZXBhdGNoQ291bnRGb3JDb29sRG93bklEXS51bnNpZ25lZFZh
bDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5z
aWduZWQmIHJlcGF0Y2hDb3VudEZvckNvb2xEb3duRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVs
dE9wdGlvbnNbcmVwYXRjaENvdW50Rm9yQ29vbERvd25JRF0udW5zaWduZWRWYWw7IH0gaW5saW5l
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBpbml0
aWFsQ29vbERvd25Db3VudCgpIHsgcmV0dXJuIHNfb3B0aW9uc1tpbml0aWFsQ29vbERvd25Db3Vu
dElEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBzdGF0aWMgdW5zaWduZWQmIGluaXRpYWxDb29sRG93bkNvdW50RGVmYXVsdCgpIHsgcmV0
dXJuIHNfZGVmYXVsdE9wdGlvbnNbaW5pdGlhbENvb2xEb3duQ291bnRJRF0udW5zaWduZWRWYWw7
IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2ln
bmVkJiByZXBhdGNoQnVmZmVyaW5nQ291bnRkb3duKCkgeyByZXR1cm4gc19vcHRpb25zW3JlcGF0
Y2hCdWZmZXJpbmdDb3VudGRvd25JRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiByZXBhdGNoQnVmZmVyaW5n
Q291bnRkb3duRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbcmVwYXRjaEJ1ZmZl
cmluZ0NvdW50ZG93bklEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgZHVtcEdlbmVyYXRlZEJ5dGVjb2RlcygpIHsg
cmV0dXJuIHNfb3B0aW9uc1tkdW1wR2VuZXJhdGVkQnl0ZWNvZGVzSURdLmJvb2xWYWw7IH0gaW5s
aW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGR1bXBH
ZW5lcmF0ZWRCeXRlY29kZXNEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tkdW1w
R2VuZXJhdGVkQnl0ZWNvZGVzSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGR1bXBCeXRlY29kZUxpdmVuZXNzUmVzdWx0
cygpIHsgcmV0dXJuIHNfb3B0aW9uc1tkdW1wQnl0ZWNvZGVMaXZlbmVzc1Jlc3VsdHNJRF0uYm9v
bFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMg
Ym9vbCYgZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVm
YXVsdE9wdGlvbnNbZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzSURdLmJvb2xWYWw7IH0gaW5s
aW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHZhbGlk
YXRlQnl0ZWNvZGUoKSB7IHJldHVybiBzX29wdGlvbnNbdmFsaWRhdGVCeXRlY29kZUlEXS5ib29s
VmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBi
b29sJiB2YWxpZGF0ZUJ5dGVjb2RlRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNb
dmFsaWRhdGVCeXRlY29kZUlEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBmb3JjZURlYnVnZ2VyQnl0ZWNvZGVHZW5lcmF0
aW9uKCkgeyByZXR1cm4gc19vcHRpb25zW2ZvcmNlRGVidWdnZXJCeXRlY29kZUdlbmVyYXRpb25J
RF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBz
dGF0aWMgYm9vbCYgZm9yY2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbkRlZmF1bHQoKSB7IHJl
dHVybiBzX2RlZmF1bHRPcHRpb25zW2ZvcmNlRGVidWdnZXJCeXRlY29kZUdlbmVyYXRpb25JRF0u
Ym9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0
aWMgYm9vbCYgZm9yY2VQcm9maWxlckJ5dGVjb2RlR2VuZXJhdGlvbigpIHsgcmV0dXJuIHNfb3B0
aW9uc1tmb3JjZVByb2ZpbGVyQnl0ZWNvZGVHZW5lcmF0aW9uSURdLmJvb2xWYWw7IH0gaW5saW5l
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGZvcmNlUHJv
ZmlsZXJCeXRlY29kZUdlbmVyYXRpb25EZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9u
c1tmb3JjZVByb2ZpbGVyQnl0ZWNvZGVHZW5lcmF0aW9uSURdLmJvb2xWYWw7IH0gaW5saW5lIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHVzZUZ1bmN0aW9u
RG90QXJndW1lbnRzKCkgeyByZXR1cm4gc19vcHRpb25zW3VzZUZ1bmN0aW9uRG90QXJndW1lbnRz
SURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
c3RhdGljIGJvb2wmIHVzZUZ1bmN0aW9uRG90QXJndW1lbnRzRGVmYXVsdCgpIHsgcmV0dXJuIHNf
ZGVmYXVsdE9wdGlvbnNbdXNlRnVuY3Rpb25Eb3RBcmd1bWVudHNJRF0uYm9vbFZhbDsgfSBpbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdXNlVGFp
bENhbGxzKCkgeyByZXR1cm4gc19vcHRpb25zW3VzZVRhaWxDYWxsc0lEXS5ib29sVmFsOyB9IGlu
bGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiB1c2VU
YWlsQ2FsbHNEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1t1c2VUYWlsQ2FsbHNJ
RF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBz
dGF0aWMgYm9vbCYgYWx3YXlzVXNlU2hhZG93Q2hpY2tlbigpIHsgcmV0dXJuIHNfb3B0aW9uc1th
bHdheXNVc2VTaGFkb3dDaGlja2VuSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGFsd2F5c1VzZVNoYWRvd0NoaWNrZW5E
ZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1thbHdheXNVc2VTaGFkb3dDaGlja2Vu
SURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
c3RhdGljIHVuc2lnbmVkJiBzaGFkb3dDaGlja2VuTG9nU2l6ZSgpIHsgcmV0dXJuIHNfb3B0aW9u
c1tzaGFkb3dDaGlja2VuTG9nU2l6ZUlEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIHNoYWRvd0NoaWNrZW5M
b2dTaXplRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbc2hhZG93Q2hpY2tlbkxv
Z1NpemVJRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBzaGFkb3dDaGlja2VuU3RhY2tTaXplTGltaXQoKSB7
IHJldHVybiBzX29wdGlvbnNbc2hhZG93Q2hpY2tlblN0YWNrU2l6ZUxpbWl0SURdLnVuc2lnbmVk
VmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1
bnNpZ25lZCYgc2hhZG93Q2hpY2tlblN0YWNrU2l6ZUxpbWl0RGVmYXVsdCgpIHsgcmV0dXJuIHNf
ZGVmYXVsdE9wdGlvbnNbc2hhZG93Q2hpY2tlblN0YWNrU2l6ZUxpbWl0SURdLnVuc2lnbmVkVmFs
OyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29s
JiBkdW1wRGlzYXNzZW1ibHkoKSB7IHJldHVybiBzX29wdGlvbnNbZHVtcERpc2Fzc2VtYmx5SURd
LmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3Rh
dGljIGJvb2wmIGR1bXBEaXNhc3NlbWJseURlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRp
b25zW2R1bXBEaXNhc3NlbWJseUlEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBhc3luY0Rpc2Fzc2VtYmx5KCkgeyByZXR1
cm4gc19vcHRpb25zW2FzeW5jRGlzYXNzZW1ibHlJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgYXN5bmNEaXNhc3NlbWJs
eURlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW2FzeW5jRGlzYXNzZW1ibHlJRF0u
Ym9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0
aWMgYm9vbCYgZHVtcERGR0Rpc2Fzc2VtYmx5KCkgeyByZXR1cm4gc19vcHRpb25zW2R1bXBERkdE
aXNhc3NlbWJseUlEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIHN0YXRpYyBib29sJiBkdW1wREZHRGlzYXNzZW1ibHlEZWZhdWx0KCkgeyByZXR1
cm4gc19kZWZhdWx0T3B0aW9uc1tkdW1wREZHRGlzYXNzZW1ibHlJRF0uYm9vbFZhbDsgfSBpbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgZHVtcEZU
TERpc2Fzc2VtYmx5KCkgeyByZXR1cm4gc19vcHRpb25zW2R1bXBGVExEaXNhc3NlbWJseUlEXS5i
b29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRp
YyBib29sJiBkdW1wRlRMRGlzYXNzZW1ibHlEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0
aW9uc1tkdW1wRlRMRGlzYXNzZW1ibHlJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgZHVtcEFsbERGR05vZGVzKCkgeyBy
ZXR1cm4gc19vcHRpb25zW2R1bXBBbGxERkdOb2Rlc0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBkdW1wQWxsREZHTm9k
ZXNEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tkdW1wQWxsREZHTm9kZXNJRF0u
Ym9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0
aWMgb3B0aW9uUmFuZ2UmIGJ5dGVjb2RlUmFuZ2VUb0RGR0NvbXBpbGUoKSB7IHJldHVybiBzX29w
dGlvbnNbYnl0ZWNvZGVSYW5nZVRvREZHQ29tcGlsZUlEXS5vcHRpb25SYW5nZVZhbDsgfSBpbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgb3B0aW9uUmFuZ2Um
IGJ5dGVjb2RlUmFuZ2VUb0RGR0NvbXBpbGVEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0
aW9uc1tieXRlY29kZVJhbmdlVG9ERkdDb21waWxlSURdLm9wdGlvblJhbmdlVmFsOyB9IGlubGlu
ZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBvcHRpb25SYW5nZSYg
Ynl0ZWNvZGVSYW5nZVRvRlRMQ29tcGlsZSgpIHsgcmV0dXJuIHNfb3B0aW9uc1tieXRlY29kZVJh
bmdlVG9GVExDb21waWxlSURdLm9wdGlvblJhbmdlVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBvcHRpb25SYW5nZSYgYnl0ZWNvZGVSYW5nZVRv
RlRMQ29tcGlsZURlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW2J5dGVjb2RlUmFu
Z2VUb0ZUTENvbXBpbGVJRF0ub3B0aW9uUmFuZ2VWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIG9wdGlvblN0cmluZyYgZGZnV2hpdGVsaXN0KCkg
eyByZXR1cm4gc19vcHRpb25zW2RmZ1doaXRlbGlzdElEXS5vcHRpb25TdHJpbmdWYWw7IH0gaW5s
aW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIG9wdGlvblN0cmlu
ZyYgZGZnV2hpdGVsaXN0RGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbZGZnV2hp
dGVsaXN0SURdLm9wdGlvblN0cmluZ1ZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgZHVtcFNvdXJjZUF0REZHVGltZSgpIHsgcmV0dXJu
IHNfb3B0aW9uc1tkdW1wU291cmNlQXRERkdUaW1lSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGR1bXBTb3VyY2VBdERG
R1RpbWVEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tkdW1wU291cmNlQXRERkdU
aW1lSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
KSkgc3RhdGljIGJvb2wmIGR1bXBCeXRlY29kZUF0REZHVGltZSgpIHsgcmV0dXJuIHNfb3B0aW9u
c1tkdW1wQnl0ZWNvZGVBdERGR1RpbWVJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgZHVtcEJ5dGVjb2RlQXRERkdUaW1l
RGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbZHVtcEJ5dGVjb2RlQXRERkdUaW1l
SURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
c3RhdGljIGJvb2wmIGR1bXBHcmFwaEFmdGVyUGFyc2luZygpIHsgcmV0dXJuIHNfb3B0aW9uc1tk
dW1wR3JhcGhBZnRlclBhcnNpbmdJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgZHVtcEdyYXBoQWZ0ZXJQYXJzaW5nRGVm
YXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbZHVtcEdyYXBoQWZ0ZXJQYXJzaW5nSURd
LmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3Rh
dGljIGJvb2wmIGR1bXBHcmFwaEF0RWFjaFBoYXNlKCkgeyByZXR1cm4gc19vcHRpb25zW2R1bXBH
cmFwaEF0RWFjaFBoYXNlSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGR1bXBHcmFwaEF0RWFjaFBoYXNlRGVmYXVsdCgp
IHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbZHVtcEdyYXBoQXRFYWNoUGhhc2VJRF0uYm9vbFZh
bDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9v
bCYgZHVtcERGR0dyYXBoQXRFYWNoUGhhc2UoKSB7IHJldHVybiBzX29wdGlvbnNbZHVtcERGR0dy
YXBoQXRFYWNoUGhhc2VJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgZHVtcERGR0dyYXBoQXRFYWNoUGhhc2VEZWZhdWx0
KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tkdW1wREZHR3JhcGhBdEVhY2hQaGFzZUlEXS5i
b29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRp
YyBib29sJiBkdW1wREZHRlRMR3JhcGhBdEVhY2hQaGFzZSgpIHsgcmV0dXJuIHNfb3B0aW9uc1tk
dW1wREZHRlRMR3JhcGhBdEVhY2hQaGFzZUlEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBkdW1wREZHRlRMR3JhcGhBdEVh
Y2hQaGFzZURlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW2R1bXBERkdGVExHcmFw
aEF0RWFjaFBoYXNlSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGR1bXBCM0dyYXBoQXRFYWNoUGhhc2UoKSB7IHJldHVy
biBzX29wdGlvbnNbZHVtcEIzR3JhcGhBdEVhY2hQaGFzZUlEXS5ib29sVmFsOyB9IGlubGluZSBf
X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBkdW1wQjNHcmFw
aEF0RWFjaFBoYXNlRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbZHVtcEIzR3Jh
cGhBdEVhY2hQaGFzZUlEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBkdW1wQWlyR3JhcGhBdEVhY2hQaGFzZSgpIHsgcmV0
dXJuIHNfb3B0aW9uc1tkdW1wQWlyR3JhcGhBdEVhY2hQaGFzZUlEXS5ib29sVmFsOyB9IGlubGlu
ZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBkdW1wQWly
R3JhcGhBdEVhY2hQaGFzZURlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW2R1bXBB
aXJHcmFwaEF0RWFjaFBoYXNlSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHZlcmJvc2VERkdCeXRlQ29kZVBhcnNpbmco
KSB7IHJldHVybiBzX29wdGlvbnNbdmVyYm9zZURGR0J5dGVDb2RlUGFyc2luZ0lEXS5ib29sVmFs
OyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29s
JiB2ZXJib3NlREZHQnl0ZUNvZGVQYXJzaW5nRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9w
dGlvbnNbdmVyYm9zZURGR0J5dGVDb2RlUGFyc2luZ0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiB2ZXJib3NlQ29tcGls
YXRpb24oKSB7IHJldHVybiBzX29wdGlvbnNbdmVyYm9zZUNvbXBpbGF0aW9uSURdLmJvb2xWYWw7
IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wm
IHZlcmJvc2VDb21waWxhdGlvbkRlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW3Zl
cmJvc2VDb21waWxhdGlvbklEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiB2ZXJib3NlRlRMQ29tcGlsYXRpb24oKSB7IHJl
dHVybiBzX29wdGlvbnNbdmVyYm9zZUZUTENvbXBpbGF0aW9uSURdLmJvb2xWYWw7IH0gaW5saW5l
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHZlcmJvc2VG
VExDb21waWxhdGlvbkRlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW3ZlcmJvc2VG
VExDb21waWxhdGlvbklEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBsb2dDb21waWxhdGlvbkNoYW5nZXMoKSB7IHJldHVy
biBzX29wdGlvbnNbbG9nQ29tcGlsYXRpb25DaGFuZ2VzSURdLmJvb2xWYWw7IH0gaW5saW5lIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGxvZ0NvbXBpbGF0
aW9uQ2hhbmdlc0RlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW2xvZ0NvbXBpbGF0
aW9uQ2hhbmdlc0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIHN0YXRpYyBib29sJiBwcmludEVhY2hPU1JFeGl0KCkgeyByZXR1cm4gc19vcHRp
b25zW3ByaW50RWFjaE9TUkV4aXRJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgcHJpbnRFYWNoT1NSRXhpdERlZmF1bHQo
KSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW3ByaW50RWFjaE9TUkV4aXRJRF0uYm9vbFZhbDsg
fSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYg
dmFsaWRhdGVHcmFwaCgpIHsgcmV0dXJuIHNfb3B0aW9uc1t2YWxpZGF0ZUdyYXBoSURdLmJvb2xW
YWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJv
b2wmIHZhbGlkYXRlR3JhcGhEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1t2YWxp
ZGF0ZUdyYXBoSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fKSkgc3RhdGljIGJvb2wmIHZhbGlkYXRlR3JhcGhBdEVhY2hQaGFzZSgpIHsgcmV0dXJu
IHNfb3B0aW9uc1t2YWxpZGF0ZUdyYXBoQXRFYWNoUGhhc2VJRF0uYm9vbFZhbDsgfSBpbmxpbmUg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdmFsaWRhdGVH
cmFwaEF0RWFjaFBoYXNlRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbdmFsaWRh
dGVHcmFwaEF0RWFjaFBoYXNlSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHZlcmJvc2VWYWxpZGF0aW9uRmFpbHVyZSgp
IHsgcmV0dXJuIHNfb3B0aW9uc1t2ZXJib3NlVmFsaWRhdGlvbkZhaWx1cmVJRF0uYm9vbFZhbDsg
fSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYg
dmVyYm9zZVZhbGlkYXRpb25GYWlsdXJlRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlv
bnNbdmVyYm9zZVZhbGlkYXRpb25GYWlsdXJlSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmli
dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHZlcmJvc2VPU1IoKSB7IHJl
dHVybiBzX29wdGlvbnNbdmVyYm9zZU9TUklEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiB2ZXJib3NlT1NSRGVmYXVsdCgp
IHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbdmVyYm9zZU9TUklEXS5ib29sVmFsOyB9IGlubGlu
ZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiB2ZXJib3Nl
RlRMT1NSRXhpdCgpIHsgcmV0dXJuIHNfb3B0aW9uc1t2ZXJib3NlRlRMT1NSRXhpdElEXS5ib29s
VmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBi
b29sJiB2ZXJib3NlRlRMT1NSRXhpdERlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25z
W3ZlcmJvc2VGVExPU1JFeGl0SURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHZlcmJvc2VDYWxsTGluaygpIHsgcmV0dXJu
IHNfb3B0aW9uc1t2ZXJib3NlQ2FsbExpbmtJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdmVyYm9zZUNhbGxMaW5rRGVm
YXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbdmVyYm9zZUNhbGxMaW5rSURdLmJvb2xW
YWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJv
b2wmIHZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCkgeyByZXR1cm4gc19vcHRpb25zW3ZlcmJvc2VD
b21waWxhdGlvblF1ZXVlSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHZlcmJvc2VDb21waWxhdGlvblF1ZXVlRGVmYXVs
dCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbdmVyYm9zZUNvbXBpbGF0aW9uUXVldWVJRF0u
Ym9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0
aWMgYm9vbCYgcmVwb3J0Q29tcGlsZVRpbWVzKCkgeyByZXR1cm4gc19vcHRpb25zW3JlcG9ydENv
bXBpbGVUaW1lc0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIHN0YXRpYyBib29sJiByZXBvcnRDb21waWxlVGltZXNEZWZhdWx0KCkgeyByZXR1
cm4gc19kZWZhdWx0T3B0aW9uc1tyZXBvcnRDb21waWxlVGltZXNJRF0uYm9vbFZhbDsgfSBpbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgcmVwb3J0
RlRMQ29tcGlsZVRpbWVzKCkgeyByZXR1cm4gc19vcHRpb25zW3JlcG9ydEZUTENvbXBpbGVUaW1l
c0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp
IHN0YXRpYyBib29sJiByZXBvcnRGVExDb21waWxlVGltZXNEZWZhdWx0KCkgeyByZXR1cm4gc19k
ZWZhdWx0T3B0aW9uc1tyZXBvcnRGVExDb21waWxlVGltZXNJRF0uYm9vbFZhbDsgfSBpbmxpbmUg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgcmVwb3J0VG90
YWxDb21waWxlVGltZXMoKSB7IHJldHVybiBzX29wdGlvbnNbcmVwb3J0VG90YWxDb21waWxlVGlt
ZXNJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p
KSBzdGF0aWMgYm9vbCYgcmVwb3J0VG90YWxDb21waWxlVGltZXNEZWZhdWx0KCkgeyByZXR1cm4g
c19kZWZhdWx0T3B0aW9uc1tyZXBvcnRUb3RhbENvbXBpbGVUaW1lc0lEXS5ib29sVmFsOyB9IGlu
bGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiB2ZXJi
b3NlQ0ZBKCkgeyByZXR1cm4gc19vcHRpb25zW3ZlcmJvc2VDRkFJRF0uYm9vbFZhbDsgfSBpbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdmVyYm9z
ZUNGQURlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW3ZlcmJvc2VDRkFJRF0uYm9v
bFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMg
Ym9vbCYgdmVyYm9zZUZUTFRvSlNUaHVuaygpIHsgcmV0dXJuIHNfb3B0aW9uc1t2ZXJib3NlRlRM
VG9KU1RodW5rSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fKSkgc3RhdGljIGJvb2wmIHZlcmJvc2VGVExUb0pTVGh1bmtEZWZhdWx0KCkgeyByZXR1
cm4gc19kZWZhdWx0T3B0aW9uc1t2ZXJib3NlRlRMVG9KU1RodW5rSURdLmJvb2xWYWw7IH0gaW5s
aW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHZlcmJv
c2VGVExGYWlsdXJlKCkgeyByZXR1cm4gc19vcHRpb25zW3ZlcmJvc2VGVExGYWlsdXJlSURdLmJv
b2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGlj
IGJvb2wmIHZlcmJvc2VGVExGYWlsdXJlRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlv
bnNbdmVyYm9zZUZUTEZhaWx1cmVJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgYWx3YXlzQ29tcHV0ZUhhc2goKSB7IHJl
dHVybiBzX29wdGlvbnNbYWx3YXlzQ29tcHV0ZUhhc2hJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgYWx3YXlzQ29tcHV0
ZUhhc2hEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1thbHdheXNDb21wdXRlSGFz
aElEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp
IHN0YXRpYyBib29sJiB0ZXN0VGhlRlRMKCkgeyByZXR1cm4gc19vcHRpb25zW3Rlc3RUaGVGVExJ
RF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBz
dGF0aWMgYm9vbCYgdGVzdFRoZUZUTERlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25z
W3Rlc3RUaGVGVExJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdmVyYm9zZVNhbml0aXplU3RhY2soKSB7IHJldHVybiBz
X29wdGlvbnNbdmVyYm9zZVNhbml0aXplU3RhY2tJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdmVyYm9zZVNhbml0aXpl
U3RhY2tEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1t2ZXJib3NlU2FuaXRpemVT
dGFja0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XykpIHN0YXRpYyBib29sJiB1c2VHZW5lcmF0aW9uYWxHQygpIHsgcmV0dXJuIHNfb3B0aW9uc1t1
c2VHZW5lcmF0aW9uYWxHQ0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiB1c2VHZW5lcmF0aW9uYWxHQ0RlZmF1bHQoKSB7
IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW3VzZUdlbmVyYXRpb25hbEdDSURdLmJvb2xWYWw7IH0g
aW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGVh
Z2VybHlVcGRhdGVUb3BDYWxsRnJhbWUoKSB7IHJldHVybiBzX29wdGlvbnNbZWFnZXJseVVwZGF0
ZVRvcENhbGxGcmFtZUlEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBlYWdlcmx5VXBkYXRlVG9wQ2FsbEZyYW1lRGVmYXVs
dCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbZWFnZXJseVVwZGF0ZVRvcENhbGxGcmFtZUlE
XS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0
YXRpYyBib29sJiB1c2VPU1JFbnRyeVRvREZHKCkgeyByZXR1cm4gc19vcHRpb25zW3VzZU9TUkVu
dHJ5VG9ERkdJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18pKSBzdGF0aWMgYm9vbCYgdXNlT1NSRW50cnlUb0RGR0RlZmF1bHQoKSB7IHJldHVybiBz
X2RlZmF1bHRPcHRpb25zW3VzZU9TUkVudHJ5VG9ERkdJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdXNlT1NSRW50cnlU
b0ZUTCgpIHsgcmV0dXJuIHNfb3B0aW9uc1t1c2VPU1JFbnRyeVRvRlRMSURdLmJvb2xWYWw7IH0g
aW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHVz
ZU9TUkVudHJ5VG9GVExEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1t1c2VPU1JF
bnRyeVRvRlRMSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fKSkgc3RhdGljIGJvb2wmIHVzZUZUTEpJVCgpIHsgcmV0dXJuIHNfb3B0aW9uc1t1c2VG
VExKSVRJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBzdGF0aWMgYm9vbCYgdXNlRlRMSklURGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9w
dGlvbnNbdXNlRlRMSklUSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHVzZUZUTFRCQUEoKSB7IHJldHVybiBzX29wdGlv
bnNbdXNlRlRMVEJBQUlEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiB1c2VGVExUQkFBRGVmYXVsdCgpIHsgcmV0dXJuIHNf
ZGVmYXVsdE9wdGlvbnNbdXNlRlRMVEJBQUlEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiB2YWxpZGF0ZUZUTE9TUkV4aXRM
aXZlbmVzcygpIHsgcmV0dXJuIHNfb3B0aW9uc1t2YWxpZGF0ZUZUTE9TUkV4aXRMaXZlbmVzc0lE
XS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0
YXRpYyBib29sJiB2YWxpZGF0ZUZUTE9TUkV4aXRMaXZlbmVzc0RlZmF1bHQoKSB7IHJldHVybiBz
X2RlZmF1bHRPcHRpb25zW3ZhbGlkYXRlRlRMT1NSRXhpdExpdmVuZXNzSURdLmJvb2xWYWw7IH0g
aW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGIz
QWx3YXlzRmFpbHNCZWZvcmVDb21waWxlKCkgeyByZXR1cm4gc19vcHRpb25zW2IzQWx3YXlzRmFp
bHNCZWZvcmVDb21waWxlSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGIzQWx3YXlzRmFpbHNCZWZvcmVDb21waWxlRGVm
YXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbYjNBbHdheXNGYWlsc0JlZm9yZUNvbXBp
bGVJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p
KSBzdGF0aWMgYm9vbCYgYjNBbHdheXNGYWlsc0JlZm9yZUxpbmsoKSB7IHJldHVybiBzX29wdGlv
bnNbYjNBbHdheXNGYWlsc0JlZm9yZUxpbmtJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgYjNBbHdheXNGYWlsc0JlZm9y
ZUxpbmtEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tiM0Fsd2F5c0ZhaWxzQmVm
b3JlTGlua0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp
bmVfXykpIHN0YXRpYyBib29sJiBmdGxDcmFzaGVzKCkgeyByZXR1cm4gc19vcHRpb25zW2Z0bENy
YXNoZXNJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBzdGF0aWMgYm9vbCYgZnRsQ3Jhc2hlc0RlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRP
cHRpb25zW2Z0bENyYXNoZXNJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgY2xvYmJlckFsbFJlZ3NJbkZUTElDU2xvd1Bh
dGgoKSB7IHJldHVybiBzX29wdGlvbnNbY2xvYmJlckFsbFJlZ3NJbkZUTElDU2xvd1BhdGhJRF0u
Ym9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0
aWMgYm9vbCYgY2xvYmJlckFsbFJlZ3NJbkZUTElDU2xvd1BhdGhEZWZhdWx0KCkgeyByZXR1cm4g
c19kZWZhdWx0T3B0aW9uc1tjbG9iYmVyQWxsUmVnc0luRlRMSUNTbG93UGF0aElEXS5ib29sVmFs
OyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29s
JiB1c2VBY2Nlc3NJbmxpbmluZygpIHsgcmV0dXJuIHNfb3B0aW9uc1t1c2VBY2Nlc3NJbmxpbmlu
Z0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp
IHN0YXRpYyBib29sJiB1c2VBY2Nlc3NJbmxpbmluZ0RlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1
bHRPcHRpb25zW3VzZUFjY2Vzc0lubGluaW5nSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmli
dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBtYXhBY2Nlc3NWYXJp
YW50TGlzdFNpemUoKSB7IHJldHVybiBzX29wdGlvbnNbbWF4QWNjZXNzVmFyaWFudExpc3RTaXpl
SURdLnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XykpIHN0YXRpYyB1bnNpZ25lZCYgbWF4QWNjZXNzVmFyaWFudExpc3RTaXplRGVmYXVsdCgpIHsg
cmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbbWF4QWNjZXNzVmFyaWFudExpc3RTaXplSURdLnVuc2ln
bmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRp
YyB1bnNpZ25lZCYgbWVnYW1vcnBoaWNMb2FkQ29zdCgpIHsgcmV0dXJuIHNfb3B0aW9uc1ttZWdh
bW9ycGhpY0xvYWRDb3N0SURdLnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgbWVnYW1vcnBoaWNMb2FkQ29zdERl
ZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW21lZ2Ftb3JwaGljTG9hZENvc3RJRF0u
dW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
c3RhdGljIGJvb2wmIHVzZVBvbHl2YXJpYW50RGV2aXJ0dWFsaXphdGlvbigpIHsgcmV0dXJuIHNf
b3B0aW9uc1t1c2VQb2x5dmFyaWFudERldmlydHVhbGl6YXRpb25JRF0uYm9vbFZhbDsgfSBpbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdXNlUG9s
eXZhcmlhbnREZXZpcnR1YWxpemF0aW9uRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlv
bnNbdXNlUG9seXZhcmlhbnREZXZpcnR1YWxpemF0aW9uSURdLmJvb2xWYWw7IH0gaW5saW5lIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHVzZVBvbHltb3Jw
aGljQWNjZXNzSW5saW5pbmcoKSB7IHJldHVybiBzX29wdGlvbnNbdXNlUG9seW1vcnBoaWNBY2Nl
c3NJbmxpbmluZ0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIHN0YXRpYyBib29sJiB1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nRGVmYXVs
dCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbdXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmlu
Z0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp
IHN0YXRpYyBib29sJiB1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZygpIHsgcmV0dXJuIHNfb3B0
aW9uc1t1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZ0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiB1c2VQb2x5bW9ycGhp
Y0NhbGxJbmxpbmluZ0RlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW3VzZVBvbHlt
b3JwaGljQ2FsbElubGluaW5nSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHVzZVBvbHltb3JwaGljQ2FsbElubGluaW5n
Rm9yTm9uU3R1YlN0YXR1cygpIHsgcmV0dXJuIHNfb3B0aW9uc1t1c2VQb2x5bW9ycGhpY0NhbGxJ
bmxpbmluZ0Zvck5vblN0dWJTdGF0dXNJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdXNlUG9seW1vcnBoaWNDYWxsSW5s
aW5pbmdGb3JOb25TdHViU3RhdHVzRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNb
dXNlUG9seW1vcnBoaWNDYWxsSW5saW5pbmdGb3JOb25TdHViU3RhdHVzSURdLmJvb2xWYWw7IH0g
aW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVk
JiBtYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50TGlzdFNpemUoKSB7IHJldHVybiBzX29wdGlvbnNb
bWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplSURdLnVuc2lnbmVkVmFsOyB9IGlubGlu
ZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgbWF4
UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVs
dE9wdGlvbnNbbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplSURdLnVuc2lnbmVkVmFs
OyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNp
Z25lZCYgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplRm9yVG9wVGllcigpIHsgcmV0
dXJuIHNfb3B0aW9uc1ttYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50TGlzdFNpemVGb3JUb3BUaWVy
SURdLnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XykpIHN0YXRpYyB1bnNpZ25lZCYgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplRm9y
VG9wVGllckRlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW21heFBvbHltb3JwaGlj
Q2FsbFZhcmlhbnRMaXN0U2l6ZUZvclRvcFRpZXJJRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBtYXhQb2x5
bW9ycGhpY0NhbGxWYXJpYW50c0ZvcklubGluaW5nKCkgeyByZXR1cm4gc19vcHRpb25zW21heFBv
bHltb3JwaGljQ2FsbFZhcmlhbnRzRm9ySW5saW5pbmdJRF0udW5zaWduZWRWYWw7IH0gaW5saW5l
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBtYXhQ
b2x5bW9ycGhpY0NhbGxWYXJpYW50c0ZvcklubGluaW5nRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVm
YXVsdE9wdGlvbnNbbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudHNGb3JJbmxpbmluZ0lEXS51bnNp
Z25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0
aWMgdW5zaWduZWQmIGZyZXF1ZW50Q2FsbFRocmVzaG9sZCgpIHsgcmV0dXJuIHNfb3B0aW9uc1tm
cmVxdWVudENhbGxUaHJlc2hvbGRJRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBmcmVxdWVudENhbGxUaHJl
c2hvbGREZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tmcmVxdWVudENhbGxUaHJl
c2hvbGRJRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fKSkgc3RhdGljIGRvdWJsZSYgbWluaW11bUNhbGxUb0tub3duUmF0ZSgpIHsgcmV0dXJu
IHNfb3B0aW9uc1ttaW5pbXVtQ2FsbFRvS25vd25SYXRlSURdLmRvdWJsZVZhbDsgfSBpbmxpbmUg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgZG91YmxlJiBtaW5pbXVt
Q2FsbFRvS25vd25SYXRlRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbbWluaW11
bUNhbGxUb0tub3duUmF0ZUlEXS5kb3VibGVWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGNyZWF0ZVByZUhlYWRlcnMoKSB7IHJldHVy
biBzX29wdGlvbnNbY3JlYXRlUHJlSGVhZGVyc0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBjcmVhdGVQcmVIZWFkZXJz
RGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbY3JlYXRlUHJlSGVhZGVyc0lEXS5i
b29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRp
YyBib29sJiB1c2VNb3ZIaW50UmVtb3ZhbCgpIHsgcmV0dXJuIHNfb3B0aW9uc1t1c2VNb3ZIaW50
UmVtb3ZhbElEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp
bmVfXykpIHN0YXRpYyBib29sJiB1c2VNb3ZIaW50UmVtb3ZhbERlZmF1bHQoKSB7IHJldHVybiBz
X2RlZmF1bHRPcHRpb25zW3VzZU1vdkhpbnRSZW1vdmFsSURdLmJvb2xWYWw7IH0gaW5saW5lIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHVzZVB1dFN0YWNr
U2lua2luZygpIHsgcmV0dXJuIHNfb3B0aW9uc1t1c2VQdXRTdGFja1NpbmtpbmdJRF0uYm9vbFZh
bDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9v
bCYgdXNlUHV0U3RhY2tTaW5raW5nRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNb
dXNlUHV0U3RhY2tTaW5raW5nSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHVzZU9iamVjdEFsbG9jYXRpb25TaW5raW5n
KCkgeyByZXR1cm4gc19vcHRpb25zW3VzZU9iamVjdEFsbG9jYXRpb25TaW5raW5nSURdLmJvb2xW
YWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJv
b2wmIHVzZU9iamVjdEFsbG9jYXRpb25TaW5raW5nRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVs
dE9wdGlvbnNbdXNlT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdJRF0uYm9vbFZhbDsgfSBpbmxpbmUg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdXNlQ29uY3Vy
cmVudEpJVCgpIHsgcmV0dXJuIHNfb3B0aW9uc1t1c2VDb25jdXJyZW50SklUSURdLmJvb2xWYWw7
IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wm
IHVzZUNvbmN1cnJlbnRKSVREZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1t1c2VD
b25jdXJyZW50SklUSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBudW1iZXJPZkRGR0NvbXBpbGVyVGhyZWFkcygp
IHsgcmV0dXJuIHNfb3B0aW9uc1tudW1iZXJPZkRGR0NvbXBpbGVyVGhyZWFkc0lEXS51bnNpZ25l
ZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMg
dW5zaWduZWQmIG51bWJlck9mREZHQ29tcGlsZXJUaHJlYWRzRGVmYXVsdCgpIHsgcmV0dXJuIHNf
ZGVmYXVsdE9wdGlvbnNbbnVtYmVyT2ZERkdDb21waWxlclRocmVhZHNJRF0udW5zaWduZWRWYWw7
IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2ln
bmVkJiBudW1iZXJPZkZUTENvbXBpbGVyVGhyZWFkcygpIHsgcmV0dXJuIHNfb3B0aW9uc1tudW1i
ZXJPZkZUTENvbXBpbGVyVGhyZWFkc0lEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIG51bWJlck9mRlRMQ29t
cGlsZXJUaHJlYWRzRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbbnVtYmVyT2ZG
VExDb21waWxlclRocmVhZHNJRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGludDMyJiBwcmlvcml0eURlbHRhT2ZERkdDb21w
aWxlclRocmVhZHMoKSB7IHJldHVybiBzX29wdGlvbnNbcHJpb3JpdHlEZWx0YU9mREZHQ29tcGls
ZXJUaHJlYWRzSURdLmludDMyVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIHN0YXRpYyBpbnQzMiYgcHJpb3JpdHlEZWx0YU9mREZHQ29tcGlsZXJUaHJlYWRz
RGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbcHJpb3JpdHlEZWx0YU9mREZHQ29t
cGlsZXJUaHJlYWRzSURdLmludDMyVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXykpIHN0YXRpYyBpbnQzMiYgcHJpb3JpdHlEZWx0YU9mRlRMQ29tcGlsZXJUaHJl
YWRzKCkgeyByZXR1cm4gc19vcHRpb25zW3ByaW9yaXR5RGVsdGFPZkZUTENvbXBpbGVyVGhyZWFk
c0lEXS5pbnQzMlZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p
KSBzdGF0aWMgaW50MzImIHByaW9yaXR5RGVsdGFPZkZUTENvbXBpbGVyVGhyZWFkc0RlZmF1bHQo
KSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW3ByaW9yaXR5RGVsdGFPZkZUTENvbXBpbGVyVGhy
ZWFkc0lEXS5pbnQzMlZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBzdGF0aWMgYm9vbCYgdXNlUHJvZmlsZXIoKSB7IHJldHVybiBzX29wdGlvbnNbdXNlUHJv
ZmlsZXJJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBzdGF0aWMgYm9vbCYgdXNlUHJvZmlsZXJEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0
T3B0aW9uc1t1c2VQcm9maWxlcklEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBkaXNhc3NlbWJsZUJhc2VsaW5lRm9yUHJv
ZmlsZXIoKSB7IHJldHVybiBzX29wdGlvbnNbZGlzYXNzZW1ibGVCYXNlbGluZUZvclByb2ZpbGVy
SURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
c3RhdGljIGJvb2wmIGRpc2Fzc2VtYmxlQmFzZWxpbmVGb3JQcm9maWxlckRlZmF1bHQoKSB7IHJl
dHVybiBzX2RlZmF1bHRPcHRpb25zW2Rpc2Fzc2VtYmxlQmFzZWxpbmVGb3JQcm9maWxlcklEXS5i
b29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRp
YyBib29sJiB1c2VBcmNoaXRlY3R1cmVTcGVjaWZpY09wdGltaXphdGlvbnMoKSB7IHJldHVybiBz
X29wdGlvbnNbdXNlQXJjaGl0ZWN0dXJlU3BlY2lmaWNPcHRpbWl6YXRpb25zSURdLmJvb2xWYWw7
IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wm
IHVzZUFyY2hpdGVjdHVyZVNwZWNpZmljT3B0aW1pemF0aW9uc0RlZmF1bHQoKSB7IHJldHVybiBz
X2RlZmF1bHRPcHRpb25zW3VzZUFyY2hpdGVjdHVyZVNwZWNpZmljT3B0aW1pemF0aW9uc0lEXS5i
b29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRp
YyBib29sJiBicmVha09uVGhyb3coKSB7IHJldHVybiBzX29wdGlvbnNbYnJlYWtPblRocm93SURd
LmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3Rh
dGljIGJvb2wmIGJyZWFrT25UaHJvd0RlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25z
W2JyZWFrT25UaHJvd0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgbWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0
ZUluc3RydWN0aW9uQ291bnQoKSB7IHJldHVybiBzX29wdGlvbnNbbWF4aW11bU9wdGltaXphdGlv
bkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnRJRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBtYXhpbXVtT3B0
aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudERlZmF1bHQoKSB7IHJldHVybiBzX2Rl
ZmF1bHRPcHRpb25zW21heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50
SURdLnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XykpIHN0YXRpYyB1bnNpZ25lZCYgbWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0
ZUluc3RydWN0aW9uQ291bnQoKSB7IHJldHVybiBzX29wdGlvbnNbbWF4aW11bUZ1bmN0aW9uRm9y
Q2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnRJRF0udW5zaWduZWRWYWw7IH0gaW5s
aW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBt
YXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudERlZmF1
bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW21heGltdW1GdW5jdGlvbkZvckNhbGxJbmxp
bmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50SURdLnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgbWF4aW11bUZ1
bmN0aW9uRm9yQ2xvc3VyZUNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50KCkgeyBy
ZXR1cm4gc19vcHRpb25zW21heGltdW1GdW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlk
YXRlSW5zdHJ1Y3Rpb25Db3VudElEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIG1heGltdW1GdW5jdGlvbkZv
ckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudERlZmF1bHQoKSB7IHJl
dHVybiBzX2RlZmF1bHRPcHRpb25zW21heGltdW1GdW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5l
Q2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudElEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIG1heGltdW1GdW5j
dGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKSB7IHJldHVy
biBzX29wdGlvbnNbbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5z
dHJ1Y3Rpb25Db3VudElEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIG1heGltdW1GdW5jdGlvbkZvckNvbnN0
cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnREZWZhdWx0KCkgeyByZXR1cm4gc19k
ZWZhdWx0T3B0aW9uc1ttYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJ
bnN0cnVjdGlvbkNvdW50SURdLnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgbWF4aW11bUZUTENhbmRpZGF0ZUlu
c3RydWN0aW9uQ291bnQoKSB7IHJldHVybiBzX29wdGlvbnNbbWF4aW11bUZUTENhbmRpZGF0ZUlu
c3RydWN0aW9uQ291bnRJRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBtYXhpbXVtRlRMQ2FuZGlkYXRlSW5z
dHJ1Y3Rpb25Db3VudERlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW21heGltdW1G
VExDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50SURdLnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgbWF4aW11bUlu
bGluaW5nRGVwdGgoKSB7IHJldHVybiBzX29wdGlvbnNbbWF4aW11bUlubGluaW5nRGVwdGhJRF0u
dW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
c3RhdGljIHVuc2lnbmVkJiBtYXhpbXVtSW5saW5pbmdEZXB0aERlZmF1bHQoKSB7IHJldHVybiBz
X2RlZmF1bHRPcHRpb25zW21heGltdW1JbmxpbmluZ0RlcHRoSURdLnVuc2lnbmVkVmFsOyB9IGlu
bGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYg
bWF4aW11bUlubGluaW5nUmVjdXJzaW9uKCkgeyByZXR1cm4gc19vcHRpb25zW21heGltdW1Jbmxp
bmluZ1JlY3Vyc2lvbklEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIG1heGltdW1JbmxpbmluZ1JlY3Vyc2lv
bkRlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW21heGltdW1JbmxpbmluZ1JlY3Vy
c2lvbklEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIG1heGltdW1JbmxpbmluZ0NhbGxlclNpemUoKSB7IHJl
dHVybiBzX29wdGlvbnNbbWF4aW11bUlubGluaW5nQ2FsbGVyU2l6ZUlEXS51bnNpZ25lZFZhbDsg
fSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWdu
ZWQmIG1heGltdW1JbmxpbmluZ0NhbGxlclNpemVEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0
T3B0aW9uc1ttYXhpbXVtSW5saW5pbmdDYWxsZXJTaXplSURdLnVuc2lnbmVkVmFsOyB9IGlubGlu
ZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgbWF4
aW11bVZhcmFyZ3NGb3JJbmxpbmluZygpIHsgcmV0dXJuIHNfb3B0aW9uc1ttYXhpbXVtVmFyYXJn
c0ZvcklubGluaW5nSURdLnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgbWF4aW11bVZhcmFyZ3NGb3JJbmxpbmlu
Z0RlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW21heGltdW1WYXJhcmdzRm9ySW5s
aW5pbmdJRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fKSkgc3RhdGljIGJvb2wmIHVzZVBvbHl2YXJpYW50Q2FsbElubGluaW5nKCkgeyByZXR1
cm4gc19vcHRpb25zW3VzZVBvbHl2YXJpYW50Q2FsbElubGluaW5nSURdLmJvb2xWYWw7IH0gaW5s
aW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHVzZVBv
bHl2YXJpYW50Q2FsbElubGluaW5nRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNb
dXNlUG9seXZhcmlhbnRDYWxsSW5saW5pbmdJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdXNlUG9seXZhcmlhbnRCeUlk
SW5saW5pbmcoKSB7IHJldHVybiBzX29wdGlvbnNbdXNlUG9seXZhcmlhbnRCeUlkSW5saW5pbmdJ
RF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBz
dGF0aWMgYm9vbCYgdXNlUG9seXZhcmlhbnRCeUlkSW5saW5pbmdEZWZhdWx0KCkgeyByZXR1cm4g
c19kZWZhdWx0T3B0aW9uc1t1c2VQb2x5dmFyaWFudEJ5SWRJbmxpbmluZ0lEXS5ib29sVmFsOyB9
IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiB1
c2VNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZSgpIHsgcmV0dXJuIHNfb3B0aW9uc1t1c2VNYXhp
bWFsRmx1c2hJbnNlcnRpb25QaGFzZUlEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiB1c2VNYXhpbWFsRmx1c2hJbnNlcnRp
b25QaGFzZURlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW3VzZU1heGltYWxGbHVz
aEluc2VydGlvblBoYXNlSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBtYXhpbXVtQmluYXJ5U3RyaW5nU3dpdGNo
Q2FzZUxlbmd0aCgpIHsgcmV0dXJuIHNfb3B0aW9uc1ttYXhpbXVtQmluYXJ5U3RyaW5nU3dpdGNo
Q2FzZUxlbmd0aElEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIG1heGltdW1CaW5hcnlTdHJpbmdTd2l0Y2hD
YXNlTGVuZ3RoRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbbWF4aW11bUJpbmFy
eVN0cmluZ1N3aXRjaENhc2VMZW5ndGhJRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmli
dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBtYXhpbXVtQmluYXJ5
U3RyaW5nU3dpdGNoVG90YWxMZW5ndGgoKSB7IHJldHVybiBzX29wdGlvbnNbbWF4aW11bUJpbmFy
eVN0cmluZ1N3aXRjaFRvdGFsTGVuZ3RoSURdLnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgbWF4aW11bUJpbmFy
eVN0cmluZ1N3aXRjaFRvdGFsTGVuZ3RoRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlv
bnNbbWF4aW11bUJpbmFyeVN0cmluZ1N3aXRjaFRvdGFsTGVuZ3RoSURdLnVuc2lnbmVkVmFsOyB9
IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBkb3VibGUm
IGppdFBvbGljeVNjYWxlKCkgeyByZXR1cm4gc19vcHRpb25zW2ppdFBvbGljeVNjYWxlSURdLmRv
dWJsZVZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0
aWMgZG91YmxlJiBqaXRQb2xpY3lTY2FsZURlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRp
b25zW2ppdFBvbGljeVNjYWxlSURdLmRvdWJsZVZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgZm9yY2VFYWdlckNvbXBpbGF0aW9uKCkg
eyByZXR1cm4gc19vcHRpb25zW2ZvcmNlRWFnZXJDb21waWxhdGlvbklEXS5ib29sVmFsOyB9IGlu
bGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBmb3Jj
ZUVhZ2VyQ29tcGlsYXRpb25EZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tmb3Jj
ZUVhZ2VyQ29tcGlsYXRpb25JRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSBzdGF0aWMgaW50MzImIHRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVw
KCkgeyByZXR1cm4gc19vcHRpb25zW3RocmVzaG9sZEZvckpJVEFmdGVyV2FybVVwSURdLmludDMy
VmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBp
bnQzMiYgdGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXBEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZh
dWx0T3B0aW9uc1t0aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcElEXS5pbnQzMlZhbDsgfSBpbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgaW50MzImIHRocmVz
aG9sZEZvckpJVFNvb24oKSB7IHJldHVybiBzX29wdGlvbnNbdGhyZXNob2xkRm9ySklUU29vbklE
XS5pbnQzMlZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBz
dGF0aWMgaW50MzImIHRocmVzaG9sZEZvckpJVFNvb25EZWZhdWx0KCkgeyByZXR1cm4gc19kZWZh
dWx0T3B0aW9uc1t0aHJlc2hvbGRGb3JKSVRTb29uSURdLmludDMyVmFsOyB9IGlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBpbnQzMiYgdGhyZXNob2xkRm9y
T3B0aW1pemVBZnRlcldhcm1VcCgpIHsgcmV0dXJuIHNfb3B0aW9uc1t0aHJlc2hvbGRGb3JPcHRp
bWl6ZUFmdGVyV2FybVVwSURdLmludDMyVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXykpIHN0YXRpYyBpbnQzMiYgdGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldh
cm1VcERlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW3RocmVzaG9sZEZvck9wdGlt
aXplQWZ0ZXJXYXJtVXBJRF0uaW50MzJWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgc3RhdGljIGludDMyJiB0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9u
Z1dhcm1VcCgpIHsgcmV0dXJuIHNfb3B0aW9uc1t0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9u
Z1dhcm1VcElEXS5pbnQzMlZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18pKSBzdGF0aWMgaW50MzImIHRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVw
RGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbdGhyZXNob2xkRm9yT3B0aW1pemVB
ZnRlckxvbmdXYXJtVXBJRF0uaW50MzJWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgc3RhdGljIGludDMyJiB0aHJlc2hvbGRGb3JPcHRpbWl6ZVNvb24oKSB7
IHJldHVybiBzX29wdGlvbnNbdGhyZXNob2xkRm9yT3B0aW1pemVTb29uSURdLmludDMyVmFsOyB9
IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBpbnQzMiYg
dGhyZXNob2xkRm9yT3B0aW1pemVTb29uRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlv
bnNbdGhyZXNob2xkRm9yT3B0aW1pemVTb29uSURdLmludDMyVmFsOyB9IGlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBpbnQzMiYgZXhlY3V0aW9uQ291bnRl
ckluY3JlbWVudEZvckxvb3AoKSB7IHJldHVybiBzX29wdGlvbnNbZXhlY3V0aW9uQ291bnRlcklu
Y3JlbWVudEZvckxvb3BJRF0uaW50MzJWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgc3RhdGljIGludDMyJiBleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9y
TG9vcERlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW2V4ZWN1dGlvbkNvdW50ZXJJ
bmNyZW1lbnRGb3JMb29wSURdLmludDMyVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXykpIHN0YXRpYyBpbnQzMiYgZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZv
ckVudHJ5KCkgeyByZXR1cm4gc19vcHRpb25zW2V4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JF
bnRyeUlEXS5pbnQzMlZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBzdGF0aWMgaW50MzImIGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JFbnRyeURlZmF1
bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW2V4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRG
b3JFbnRyeUlEXS5pbnQzMlZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18pKSBzdGF0aWMgaW50MzImIHRocmVzaG9sZEZvckZUTE9wdGltaXplQWZ0ZXJXYXJtVXAo
KSB7IHJldHVybiBzX29wdGlvbnNbdGhyZXNob2xkRm9yRlRMT3B0aW1pemVBZnRlcldhcm1VcElE
XS5pbnQzMlZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBz
dGF0aWMgaW50MzImIHRocmVzaG9sZEZvckZUTE9wdGltaXplQWZ0ZXJXYXJtVXBEZWZhdWx0KCkg
eyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1t0aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2Fy
bVVwSURdLmludDMyVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XykpIHN0YXRpYyBpbnQzMiYgdGhyZXNob2xkRm9yRlRMT3B0aW1pemVTb29uKCkgeyByZXR1cm4g
c19vcHRpb25zW3RocmVzaG9sZEZvckZUTE9wdGltaXplU29vbklEXS5pbnQzMlZhbDsgfSBpbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgaW50MzImIHRocmVz
aG9sZEZvckZUTE9wdGltaXplU29vbkRlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25z
W3RocmVzaG9sZEZvckZUTE9wdGltaXplU29vbklEXS5pbnQzMlZhbDsgfSBpbmxpbmUgX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgaW50MzImIGZ0bFRpZXJVcENvdW50
ZXJJbmNyZW1lbnRGb3JMb29wKCkgeyByZXR1cm4gc19vcHRpb25zW2Z0bFRpZXJVcENvdW50ZXJJ
bmNyZW1lbnRGb3JMb29wSURdLmludDMyVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXykpIHN0YXRpYyBpbnQzMiYgZnRsVGllclVwQ291bnRlckluY3JlbWVudEZv
ckxvb3BEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tmdGxUaWVyVXBDb3VudGVy
SW5jcmVtZW50Rm9yTG9vcElEXS5pbnQzMlZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSBzdGF0aWMgaW50MzImIGZ0bFRpZXJVcENvdW50ZXJJbmNyZW1lbnRG
b3JSZXR1cm4oKSB7IHJldHVybiBzX29wdGlvbnNbZnRsVGllclVwQ291bnRlckluY3JlbWVudEZv
clJldHVybklEXS5pbnQzMlZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18pKSBzdGF0aWMgaW50MzImIGZ0bFRpZXJVcENvdW50ZXJJbmNyZW1lbnRGb3JSZXR1cm5E
ZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tmdGxUaWVyVXBDb3VudGVySW5jcmVt
ZW50Rm9yUmV0dXJuSURdLmludDMyVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgZnRsT1NSRW50cnlGYWlsdXJlQ291bnRGb3JS
ZW9wdGltaXphdGlvbigpIHsgcmV0dXJuIHNfb3B0aW9uc1tmdGxPU1JFbnRyeUZhaWx1cmVDb3Vu
dEZvclJlb3B0aW1pemF0aW9uSURdLnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgZnRsT1NSRW50cnlGYWlsdXJl
Q291bnRGb3JSZW9wdGltaXphdGlvbkRlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25z
W2Z0bE9TUkVudHJ5RmFpbHVyZUNvdW50Rm9yUmVvcHRpbWl6YXRpb25JRF0udW5zaWduZWRWYWw7
IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2ln
bmVkJiBmdGxPU1JFbnRyeVJldHJ5VGhyZXNob2xkKCkgeyByZXR1cm4gc19vcHRpb25zW2Z0bE9T
UkVudHJ5UmV0cnlUaHJlc2hvbGRJRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBmdGxPU1JFbnRyeVJldHJ5
VGhyZXNob2xkRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbZnRsT1NSRW50cnlS
ZXRyeVRocmVzaG9sZElEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSBzdGF0aWMgaW50MzImIGV2YWxUaHJlc2hvbGRNdWx0aXBsaWVyKCkg
eyByZXR1cm4gc19vcHRpb25zW2V2YWxUaHJlc2hvbGRNdWx0aXBsaWVySURdLmludDMyVmFsOyB9
IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBpbnQzMiYg
ZXZhbFRocmVzaG9sZE11bHRpcGxpZXJEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9u
c1tldmFsVGhyZXNob2xkTXVsdGlwbGllcklEXS5pbnQzMlZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIG1heGltdW1FdmFsQ2Fj
aGVhYmxlU291cmNlTGVuZ3RoKCkgeyByZXR1cm4gc19vcHRpb25zW21heGltdW1FdmFsQ2FjaGVh
YmxlU291cmNlTGVuZ3RoSURdLnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgbWF4aW11bUV2YWxDYWNoZWFibGVT
b3VyY2VMZW5ndGhEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1ttYXhpbXVtRXZh
bENhY2hlYWJsZVNvdXJjZUxlbmd0aElEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgcmFuZG9taXplRXhlY3V0aW9u
Q291bnRzQmV0d2VlbkNoZWNrcG9pbnRzKCkgeyByZXR1cm4gc19vcHRpb25zW3JhbmRvbWl6ZUV4
ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50c0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiByYW5kb21pemVFeGVj
dXRpb25Db3VudHNCZXR3ZWVuQ2hlY2twb2ludHNEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0
T3B0aW9uc1tyYW5kb21pemVFeGVjdXRpb25Db3VudHNCZXR3ZWVuQ2hlY2twb2ludHNJRF0uYm9v
bFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMg
aW50MzImIG1heGltdW1FeGVjdXRpb25Db3VudHNCZXR3ZWVuQ2hlY2twb2ludHNGb3JCYXNlbGlu
ZSgpIHsgcmV0dXJuIHNfb3B0aW9uc1ttYXhpbXVtRXhlY3V0aW9uQ291bnRzQmV0d2VlbkNoZWNr
cG9pbnRzRm9yQmFzZWxpbmVJRF0uaW50MzJWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGludDMyJiBtYXhpbXVtRXhlY3V0aW9uQ291bnRzQmV0
d2VlbkNoZWNrcG9pbnRzRm9yQmFzZWxpbmVEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0
aW9uc1ttYXhpbXVtRXhlY3V0aW9uQ291bnRzQmV0d2VlbkNoZWNrcG9pbnRzRm9yQmFzZWxpbmVJ
RF0uaW50MzJWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
c3RhdGljIGludDMyJiBtYXhpbXVtRXhlY3V0aW9uQ291bnRzQmV0d2VlbkNoZWNrcG9pbnRzRm9y
VXBwZXJUaWVycygpIHsgcmV0dXJuIHNfb3B0aW9uc1ttYXhpbXVtRXhlY3V0aW9uQ291bnRzQmV0
d2VlbkNoZWNrcG9pbnRzRm9yVXBwZXJUaWVyc0lEXS5pbnQzMlZhbDsgfSBpbmxpbmUgX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgaW50MzImIG1heGltdW1FeGVjdXRp
b25Db3VudHNCZXR3ZWVuQ2hlY2twb2ludHNGb3JVcHBlclRpZXJzRGVmYXVsdCgpIHsgcmV0dXJu
IHNfZGVmYXVsdE9wdGlvbnNbbWF4aW11bUV4ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50
c0ZvclVwcGVyVGllcnNJRF0uaW50MzJWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmlt
dW1Db3VudCgpIHsgcmV0dXJuIHNfb3B0aW9uc1tsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1D
b3VudElEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIGxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50
RGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbbGlrZWx5VG9UYWtlU2xvd0Nhc2VN
aW5pbXVtQ291bnRJRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1D
b3VudCgpIHsgcmV0dXJuIHNfb3B0aW9uc1tjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudElE
XS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p
KSBzdGF0aWMgdW5zaWduZWQmIGNvdWxkVGFrZVNsb3dDYXNlTWluaW11bUNvdW50RGVmYXVsdCgp
IHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbY291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnRJ
RF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
KSkgc3RhdGljIHVuc2lnbmVkJiBvc3JFeGl0Q291bnRGb3JSZW9wdGltaXphdGlvbigpIHsgcmV0
dXJuIHNfb3B0aW9uc1tvc3JFeGl0Q291bnRGb3JSZW9wdGltaXphdGlvbklEXS51bnNpZ25lZFZh
bDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5z
aWduZWQmIG9zckV4aXRDb3VudEZvclJlb3B0aW1pemF0aW9uRGVmYXVsdCgpIHsgcmV0dXJuIHNf
ZGVmYXVsdE9wdGlvbnNbb3NyRXhpdENvdW50Rm9yUmVvcHRpbWl6YXRpb25JRF0udW5zaWduZWRW
YWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVu
c2lnbmVkJiBvc3JFeGl0Q291bnRGb3JSZW9wdGltaXphdGlvbkZyb21Mb29wKCkgeyByZXR1cm4g
c19vcHRpb25zW29zckV4aXRDb3VudEZvclJlb3B0aW1pemF0aW9uRnJvbUxvb3BJRF0udW5zaWdu
ZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGlj
IHVuc2lnbmVkJiBvc3JFeGl0Q291bnRGb3JSZW9wdGltaXphdGlvbkZyb21Mb29wRGVmYXVsdCgp
IHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbb3NyRXhpdENvdW50Rm9yUmVvcHRpbWl6YXRpb25G
cm9tTG9vcElEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4
KCkgeyByZXR1cm4gc19vcHRpb25zW3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4SURdLnVu
c2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0
YXRpYyB1bnNpZ25lZCYgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXhEZWZhdWx0KCkgeyBy
ZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tyZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heElEXS51
bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBz
dGF0aWMgdW5zaWduZWQmIG1pbmltdW1PcHRpbWl6YXRpb25EZWxheSgpIHsgcmV0dXJuIHNfb3B0
aW9uc1ttaW5pbXVtT3B0aW1pemF0aW9uRGVsYXlJRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBtaW5pbXVt
T3B0aW1pemF0aW9uRGVsYXlEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1ttaW5p
bXVtT3B0aW1pemF0aW9uRGVsYXlJRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBtYXhpbXVtT3B0aW1pemF0
aW9uRGVsYXkoKSB7IHJldHVybiBzX29wdGlvbnNbbWF4aW11bU9wdGltaXphdGlvbkRlbGF5SURd
LnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp
IHN0YXRpYyB1bnNpZ25lZCYgbWF4aW11bU9wdGltaXphdGlvbkRlbGF5RGVmYXVsdCgpIHsgcmV0
dXJuIHNfZGVmYXVsdE9wdGlvbnNbbWF4aW11bU9wdGltaXphdGlvbkRlbGF5SURdLnVuc2lnbmVk
VmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBk
b3VibGUmIGRlc2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlKCkgeyByZXR1cm4gc19vcHRpb25zW2Rl
c2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlSURdLmRvdWJsZVZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgZG91YmxlJiBkZXNpcmVkUHJvZmlsZUxp
dmVuZXNzUmF0ZURlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW2Rlc2lyZWRQcm9m
aWxlTGl2ZW5lc3NSYXRlSURdLmRvdWJsZVZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSBzdGF0aWMgZG91YmxlJiBkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0
ZSgpIHsgcmV0dXJuIHNfb3B0aW9uc1tkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZUlEXS5kb3Vi
bGVWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGlj
IGRvdWJsZSYgZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1JhdGVEZWZhdWx0KCkgeyByZXR1cm4gc19k
ZWZhdWx0T3B0aW9uc1tkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZUlEXS5kb3VibGVWYWw7IH0g
aW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGRvdWJsZSYg
ZG91YmxlVm90ZVJhdGlvRm9yRG91YmxlRm9ybWF0KCkgeyByZXR1cm4gc19vcHRpb25zW2RvdWJs
ZVZvdGVSYXRpb0ZvckRvdWJsZUZvcm1hdElEXS5kb3VibGVWYWw7IH0gaW5saW5lIF9fYXR0cmli
dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGRvdWJsZSYgZG91YmxlVm90ZVJhdGlv
Rm9yRG91YmxlRm9ybWF0RGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbZG91Ymxl
Vm90ZVJhdGlvRm9yRG91YmxlRm9ybWF0SURdLmRvdWJsZVZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgZG91YmxlJiBzdHJ1Y3R1cmVDaGVja1Zv
dGVSYXRpb0ZvckhvaXN0aW5nKCkgeyByZXR1cm4gc19vcHRpb25zW3N0cnVjdHVyZUNoZWNrVm90
ZVJhdGlvRm9ySG9pc3RpbmdJRF0uZG91YmxlVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBkb3VibGUmIHN0cnVjdHVyZUNoZWNrVm90ZVJhdGlv
Rm9ySG9pc3RpbmdEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tzdHJ1Y3R1cmVD
aGVja1ZvdGVSYXRpb0ZvckhvaXN0aW5nSURdLmRvdWJsZVZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgZG91YmxlJiBjaGVja0FycmF5Vm90ZVJh
dGlvRm9ySG9pc3RpbmcoKSB7IHJldHVybiBzX29wdGlvbnNbY2hlY2tBcnJheVZvdGVSYXRpb0Zv
ckhvaXN0aW5nSURdLmRvdWJsZVZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18pKSBzdGF0aWMgZG91YmxlJiBjaGVja0FycmF5Vm90ZVJhdGlvRm9ySG9pc3RpbmdE
ZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tjaGVja0FycmF5Vm90ZVJhdGlvRm9y
SG9pc3RpbmdJRF0uZG91YmxlVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgbWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmVi
YWxhbmNlKCkgeyByZXR1cm4gc19vcHRpb25zW21pbmltdW1OdW1iZXJPZlNjYW5zQmV0d2VlblJl
YmFsYW5jZUlEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIG1pbmltdW1OdW1iZXJPZlNjYW5zQmV0d2VlblJl
YmFsYW5jZURlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW21pbmltdW1OdW1iZXJP
ZlNjYW5zQmV0d2VlblJlYmFsYW5jZUlEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIG51bWJlck9mR0NNYXJr
ZXJzKCkgeyByZXR1cm4gc19vcHRpb25zW251bWJlck9mR0NNYXJrZXJzSURdLnVuc2lnbmVkVmFs
OyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNp
Z25lZCYgbnVtYmVyT2ZHQ01hcmtlcnNEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9u
c1tudW1iZXJPZkdDTWFya2Vyc0lEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIG9wYXF1ZVJvb3RNZXJnZVRo
cmVzaG9sZCgpIHsgcmV0dXJuIHNfb3B0aW9uc1tvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGRJRF0u
dW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
c3RhdGljIHVuc2lnbmVkJiBvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGREZWZhdWx0KCkgeyByZXR1
cm4gc19kZWZhdWx0T3B0aW9uc1tvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGRJRF0udW5zaWduZWRW
YWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGRv
dWJsZSYgbWluSGVhcFV0aWxpemF0aW9uKCkgeyByZXR1cm4gc19vcHRpb25zW21pbkhlYXBVdGls
aXphdGlvbklEXS5kb3VibGVWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fKSkgc3RhdGljIGRvdWJsZSYgbWluSGVhcFV0aWxpemF0aW9uRGVmYXVsdCgpIHsgcmV0
dXJuIHNfZGVmYXVsdE9wdGlvbnNbbWluSGVhcFV0aWxpemF0aW9uSURdLmRvdWJsZVZhbDsgfSBp
bmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgZG91YmxlJiBt
aW5Db3BpZWRCbG9ja1V0aWxpemF0aW9uKCkgeyByZXR1cm4gc19vcHRpb25zW21pbkNvcGllZEJs
b2NrVXRpbGl6YXRpb25JRF0uZG91YmxlVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXykpIHN0YXRpYyBkb3VibGUmIG1pbkNvcGllZEJsb2NrVXRpbGl6YXRpb25E
ZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1ttaW5Db3BpZWRCbG9ja1V0aWxpemF0
aW9uSURdLmRvdWJsZVZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBzdGF0aWMgZG91YmxlJiBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uKCkgeyByZXR1cm4g
c19vcHRpb25zW21pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb25JRF0uZG91YmxlVmFsOyB9IGlubGlu
ZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBkb3VibGUmIG1pbk1h
cmtlZEJsb2NrVXRpbGl6YXRpb25EZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tt
aW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uSURdLmRvdWJsZVZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIHNsb3dQYXRoQWxsb2Nz
QmV0d2VlbkdDcygpIHsgcmV0dXJuIHNfb3B0aW9uc1tzbG93UGF0aEFsbG9jc0JldHdlZW5HQ3NJ
RF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
KSkgc3RhdGljIHVuc2lnbmVkJiBzbG93UGF0aEFsbG9jc0JldHdlZW5HQ3NEZWZhdWx0KCkgeyBy
ZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tzbG93UGF0aEFsbG9jc0JldHdlZW5HQ3NJRF0udW5zaWdu
ZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGlj
IGRvdWJsZSYgcGVyY2VudENQVVBlck1CRm9yRnVsbFRpbWVyKCkgeyByZXR1cm4gc19vcHRpb25z
W3BlcmNlbnRDUFVQZXJNQkZvckZ1bGxUaW1lcklEXS5kb3VibGVWYWw7IH0gaW5saW5lIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGRvdWJsZSYgcGVyY2VudENQVVBl
ck1CRm9yRnVsbFRpbWVyRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbcGVyY2Vu
dENQVVBlck1CRm9yRnVsbFRpbWVySURdLmRvdWJsZVZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgZG91YmxlJiBwZXJjZW50Q1BVUGVyTUJGb3JF
ZGVuVGltZXIoKSB7IHJldHVybiBzX29wdGlvbnNbcGVyY2VudENQVVBlck1CRm9yRWRlblRpbWVy
SURdLmRvdWJsZVZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p
KSBzdGF0aWMgZG91YmxlJiBwZXJjZW50Q1BVUGVyTUJGb3JFZGVuVGltZXJEZWZhdWx0KCkgeyBy
ZXR1cm4gc19kZWZhdWx0T3B0aW9uc1twZXJjZW50Q1BVUGVyTUJGb3JFZGVuVGltZXJJRF0uZG91
YmxlVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRp
YyBkb3VibGUmIGNvbGxlY3Rpb25UaW1lck1heFBlcmNlbnRDUFUoKSB7IHJldHVybiBzX29wdGlv
bnNbY29sbGVjdGlvblRpbWVyTWF4UGVyY2VudENQVUlEXS5kb3VibGVWYWw7IH0gaW5saW5lIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGRvdWJsZSYgY29sbGVjdGlv
blRpbWVyTWF4UGVyY2VudENQVURlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW2Nv
bGxlY3Rpb25UaW1lck1heFBlcmNlbnRDUFVJRF0uZG91YmxlVmFsOyB9IGlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBmb3JjZVdlYWtSYW5kb21T
ZWVkKCkgeyByZXR1cm4gc19vcHRpb25zW2ZvcmNlV2Vha1JhbmRvbVNlZWRJRF0uYm9vbFZhbDsg
fSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYg
Zm9yY2VXZWFrUmFuZG9tU2VlZERlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW2Zv
cmNlV2Vha1JhbmRvbVNlZWRJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIGZvcmNlZFdlYWtSYW5kb21TZWVkKCkg
eyByZXR1cm4gc19vcHRpb25zW2ZvcmNlZFdlYWtSYW5kb21TZWVkSURdLnVuc2lnbmVkVmFsOyB9
IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25l
ZCYgZm9yY2VkV2Vha1JhbmRvbVNlZWREZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9u
c1tmb3JjZWRXZWFrUmFuZG9tU2VlZElEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdXNlWm9tYmllTW9kZSgpIHsg
cmV0dXJuIHNfb3B0aW9uc1t1c2Vab21iaWVNb2RlSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHVzZVpvbWJpZU1vZGVE
ZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1t1c2Vab21iaWVNb2RlSURdLmJvb2xW
YWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJv
b2wmIHVzZUltbW9ydGFsT2JqZWN0cygpIHsgcmV0dXJuIHNfb3B0aW9uc1t1c2VJbW1vcnRhbE9i
amVjdHNJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBzdGF0aWMgYm9vbCYgdXNlSW1tb3J0YWxPYmplY3RzRGVmYXVsdCgpIHsgcmV0dXJuIHNf
ZGVmYXVsdE9wdGlvbnNbdXNlSW1tb3J0YWxPYmplY3RzSURdLmJvb2xWYWw7IH0gaW5saW5lIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGR1bXBPYmplY3RT
dGF0aXN0aWNzKCkgeyByZXR1cm4gc19vcHRpb25zW2R1bXBPYmplY3RTdGF0aXN0aWNzSURdLmJv
b2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGlj
IGJvb2wmIGR1bXBPYmplY3RTdGF0aXN0aWNzRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9w
dGlvbnNbZHVtcE9iamVjdFN0YXRpc3RpY3NJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgZ2NMb2dMZXZlbCYgbG9nR0MoKSB7IHJl
dHVybiBzX29wdGlvbnNbbG9nR0NJRF0uZ2NMb2dMZXZlbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1
dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgZ2NMb2dMZXZlbCYgbG9nR0NEZWZhdWx0
KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tsb2dHQ0lEXS5nY0xvZ0xldmVsVmFsOyB9IGlu
bGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiB1c2VH
QygpIHsgcmV0dXJuIHNfb3B0aW9uc1t1c2VHQ0lEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiB1c2VHQ0RlZmF1bHQoKSB7
IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW3VzZUdDSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGdjQXRFbmQoKSB7IHJl
dHVybiBzX29wdGlvbnNbZ2NBdEVuZElEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBnY0F0RW5kRGVmYXVsdCgpIHsgcmV0
dXJuIHNfZGVmYXVsdE9wdGlvbnNbZ2NBdEVuZElEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBmb3JjZUdDU2xvd1BhdGhz
KCkgeyByZXR1cm4gc19vcHRpb25zW2ZvcmNlR0NTbG93UGF0aHNJRF0uYm9vbFZhbDsgfSBpbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgZm9yY2VH
Q1Nsb3dQYXRoc0RlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW2ZvcmNlR0NTbG93
UGF0aHNJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBzdGF0aWMgdW5zaWduZWQmIGdjTWF4SGVhcFNpemUoKSB7IHJldHVybiBzX29wdGlvbnNb
Z2NNYXhIZWFwU2l6ZUlEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIGdjTWF4SGVhcFNpemVEZWZhdWx0KCkg
eyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tnY01heEhlYXBTaXplSURdLnVuc2lnbmVkVmFsOyB9
IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25l
ZCYgZm9yY2VSQU1TaXplKCkgeyByZXR1cm4gc19vcHRpb25zW2ZvcmNlUkFNU2l6ZUlEXS51bnNp
Z25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0
aWMgdW5zaWduZWQmIGZvcmNlUkFNU2l6ZURlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRp
b25zW2ZvcmNlUkFNU2l6ZUlEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgcmVjb3JkR0NQYXVzZVRpbWVzKCkgeyBy
ZXR1cm4gc19vcHRpb25zW3JlY29yZEdDUGF1c2VUaW1lc0lEXS5ib29sVmFsOyB9IGlubGluZSBf
X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiByZWNvcmRHQ1Bh
dXNlVGltZXNEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tyZWNvcmRHQ1BhdXNl
VGltZXNJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBzdGF0aWMgYm9vbCYgbG9nSGVhcFN0YXRpc3RpY3NBdEV4aXQoKSB7IHJldHVybiBzX29w
dGlvbnNbbG9nSGVhcFN0YXRpc3RpY3NBdEV4aXRJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgbG9nSGVhcFN0YXRpc3Rp
Y3NBdEV4aXREZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tsb2dIZWFwU3RhdGlz
dGljc0F0RXhpdElEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIHN0YXRpYyBib29sJiB1c2VUeXBlUHJvZmlsZXIoKSB7IHJldHVybiBzX29wdGlv
bnNbdXNlVHlwZVByb2ZpbGVySURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHVzZVR5cGVQcm9maWxlckRlZmF1bHQoKSB7
IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW3VzZVR5cGVQcm9maWxlcklEXS5ib29sVmFsOyB9IGlu
bGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiB1c2VD
b250cm9sRmxvd1Byb2ZpbGVyKCkgeyByZXR1cm4gc19vcHRpb25zW3VzZUNvbnRyb2xGbG93UHJv
ZmlsZXJJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBzdGF0aWMgYm9vbCYgdXNlQ29udHJvbEZsb3dQcm9maWxlckRlZmF1bHQoKSB7IHJldHVy
biBzX2RlZmF1bHRPcHRpb25zW3VzZUNvbnRyb2xGbG93UHJvZmlsZXJJRF0uYm9vbFZhbDsgfSBp
bmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdXNl
U2FtcGxpbmdQcm9maWxlcigpIHsgcmV0dXJuIHNfb3B0aW9uc1t1c2VTYW1wbGluZ1Byb2ZpbGVy
SURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
c3RhdGljIGJvb2wmIHVzZVNhbXBsaW5nUHJvZmlsZXJEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZh
dWx0T3B0aW9uc1t1c2VTYW1wbGluZ1Byb2ZpbGVySURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBzYW1wbGVJbnRl
cnZhbCgpIHsgcmV0dXJuIHNfb3B0aW9uc1tzYW1wbGVJbnRlcnZhbElEXS51bnNpZ25lZFZhbDsg
fSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWdu
ZWQmIHNhbXBsZUludGVydmFsRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbc2Ft
cGxlSW50ZXJ2YWxJRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGNvbGxlY3RTYW1wbGluZ1Byb2ZpbGVyRGF0YUZv
ckpTQ1NoZWxsKCkgeyByZXR1cm4gc19vcHRpb25zW2NvbGxlY3RTYW1wbGluZ1Byb2ZpbGVyRGF0
YUZvckpTQ1NoZWxsSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGNvbGxlY3RTYW1wbGluZ1Byb2ZpbGVyRGF0YUZvckpT
Q1NoZWxsRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbY29sbGVjdFNhbXBsaW5n
UHJvZmlsZXJEYXRhRm9ySlNDU2hlbGxJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgYWx3YXlzR2VuZXJhdGVQQ1RvQ29k
ZU9yaWdpbk1hcCgpIHsgcmV0dXJuIHNfb3B0aW9uc1thbHdheXNHZW5lcmF0ZVBDVG9Db2RlT3Jp
Z2luTWFwSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fKSkgc3RhdGljIGJvb2wmIGFsd2F5c0dlbmVyYXRlUENUb0NvZGVPcmlnaW5NYXBEZWZhdWx0
KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1thbHdheXNHZW5lcmF0ZVBDVG9Db2RlT3JpZ2lu
TWFwSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
KSkgc3RhdGljIGJvb2wmIHZlcmlmeUhlYXAoKSB7IHJldHVybiBzX29wdGlvbnNbdmVyaWZ5SGVh
cElEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp
IHN0YXRpYyBib29sJiB2ZXJpZnlIZWFwRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlv
bnNbdmVyaWZ5SGVhcElEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgbnVtYmVyT2ZHQ0N5Y2xlc1RvUmVjb3JkRm9y
VmVyaWZpY2F0aW9uKCkgeyByZXR1cm4gc19vcHRpb25zW251bWJlck9mR0NDeWNsZXNUb1JlY29y
ZEZvclZlcmlmaWNhdGlvbklEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIG51bWJlck9mR0NDeWNsZXNUb1Jl
Y29yZEZvclZlcmlmaWNhdGlvbkRlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW251
bWJlck9mR0NDeWNsZXNUb1JlY29yZEZvclZlcmlmaWNhdGlvbklEXS51bnNpZ25lZFZhbDsgfSBp
bmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdXNl
RXhjZXB0aW9uRnV6eigpIHsgcmV0dXJuIHNfb3B0aW9uc1t1c2VFeGNlcHRpb25GdXp6SURdLmJv
b2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGlj
IGJvb2wmIHVzZUV4Y2VwdGlvbkZ1enpEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9u
c1t1c2VFeGNlcHRpb25GdXp6SURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBmaXJlRXhjZXB0aW9uRnV6ekF0KCkg
eyByZXR1cm4gc19vcHRpb25zW2ZpcmVFeGNlcHRpb25GdXp6QXRJRF0udW5zaWduZWRWYWw7IH0g
aW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVk
JiBmaXJlRXhjZXB0aW9uRnV6ekF0RGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNb
ZmlyZUV4Y2VwdGlvbkZ1enpBdElEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdmFsaWRhdGVERkdFeGNlcHRpb25I
YW5kbGluZygpIHsgcmV0dXJuIHNfb3B0aW9uc1t2YWxpZGF0ZURGR0V4Y2VwdGlvbkhhbmRsaW5n
SURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
c3RhdGljIGJvb2wmIHZhbGlkYXRlREZHRXhjZXB0aW9uSGFuZGxpbmdEZWZhdWx0KCkgeyByZXR1
cm4gc19kZWZhdWx0T3B0aW9uc1t2YWxpZGF0ZURGR0V4Y2VwdGlvbkhhbmRsaW5nSURdLmJvb2xW
YWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJv
b2wmIHVzZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6eigpIHsgcmV0dXJuIHNfb3B0aW9uc1t1c2VF
eGVjdXRhYmxlQWxsb2NhdGlvbkZ1enpJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdXNlRXhlY3V0YWJsZUFsbG9jYXRp
b25GdXp6RGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbdXNlRXhlY3V0YWJsZUFs
bG9jYXRpb25GdXp6SURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBmaXJlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6
QXQoKSB7IHJldHVybiBzX29wdGlvbnNbZmlyZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ekF0SURd
LnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp
IHN0YXRpYyB1bnNpZ25lZCYgZmlyZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ekF0RGVmYXVsdCgp
IHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbZmlyZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ekF0
SURdLnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XykpIHN0YXRpYyB1bnNpZ25lZCYgZmlyZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ekF0T3JBZnRl
cigpIHsgcmV0dXJuIHNfb3B0aW9uc1tmaXJlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6QXRPckFm
dGVySURdLnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp
bmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgZmlyZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ekF0T3JB
ZnRlckRlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW2ZpcmVFeGVjdXRhYmxlQWxs
b2NhdGlvbkZ1enpBdE9yQWZ0ZXJJRF0udW5zaWduZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHZlcmJvc2VFeGVjdXRhYmxlQWxs
b2NhdGlvbkZ1enooKSB7IHJldHVybiBzX29wdGlvbnNbdmVyYm9zZUV4ZWN1dGFibGVBbGxvY2F0
aW9uRnV6eklEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp
bmVfXykpIHN0YXRpYyBib29sJiB2ZXJib3NlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6RGVmYXVs
dCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbdmVyYm9zZUV4ZWN1dGFibGVBbGxvY2F0aW9u
RnV6eklEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XykpIHN0YXRpYyBib29sJiB1c2VPU1JFeGl0RnV6eigpIHsgcmV0dXJuIHNfb3B0aW9uc1t1c2VP
U1JFeGl0RnV6eklEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIHN0YXRpYyBib29sJiB1c2VPU1JFeGl0RnV6ekRlZmF1bHQoKSB7IHJldHVybiBz
X2RlZmF1bHRPcHRpb25zW3VzZU9TUkV4aXRGdXp6SURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBmaXJlT1NSRXhp
dEZ1enpBdFN0YXRpYygpIHsgcmV0dXJuIHNfb3B0aW9uc1tmaXJlT1NSRXhpdEZ1enpBdFN0YXRp
Y0lEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBzdGF0aWMgdW5zaWduZWQmIGZpcmVPU1JFeGl0RnV6ekF0U3RhdGljRGVmYXVsdCgpIHsg
cmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbZmlyZU9TUkV4aXRGdXp6QXRTdGF0aWNJRF0udW5zaWdu
ZWRWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGlj
IHVuc2lnbmVkJiBmaXJlT1NSRXhpdEZ1enpBdCgpIHsgcmV0dXJuIHNfb3B0aW9uc1tmaXJlT1NS
RXhpdEZ1enpBdElEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIGZpcmVPU1JFeGl0RnV6ekF0RGVmYXVsdCgp
IHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbZmlyZU9TUkV4aXRGdXp6QXRJRF0udW5zaWduZWRW
YWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVu
c2lnbmVkJiBmaXJlT1NSRXhpdEZ1enpBdE9yQWZ0ZXIoKSB7IHJldHVybiBzX29wdGlvbnNbZmly
ZU9TUkV4aXRGdXp6QXRPckFmdGVySURdLnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgZmlyZU9TUkV4aXRGdXp6
QXRPckFmdGVyRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbZmlyZU9TUkV4aXRG
dXp6QXRPckFmdGVySURdLnVuc2lnbmVkVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBsb2dCM1BoYXNlVGltZXMoKSB7IHJldHVybiBz
X29wdGlvbnNbbG9nQjNQaGFzZVRpbWVzSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGxvZ0IzUGhhc2VUaW1lc0RlZmF1
bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW2xvZ0IzUGhhc2VUaW1lc0lEXS5ib29sVmFs
OyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBkb3Vi
bGUmIHJhcmVCbG9ja1BlbmFsdHkoKSB7IHJldHVybiBzX29wdGlvbnNbcmFyZUJsb2NrUGVuYWx0
eUlEXS5kb3VibGVWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
KSkgc3RhdGljIGRvdWJsZSYgcmFyZUJsb2NrUGVuYWx0eURlZmF1bHQoKSB7IHJldHVybiBzX2Rl
ZmF1bHRPcHRpb25zW3JhcmVCbG9ja1BlbmFsdHlJRF0uZG91YmxlVmFsOyB9IGlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBhaXJTcGlsbHNFdmVy
eXRoaW5nKCkgeyByZXR1cm4gc19vcHRpb25zW2FpclNwaWxsc0V2ZXJ5dGhpbmdJRF0uYm9vbFZh
bDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9v
bCYgYWlyU3BpbGxzRXZlcnl0aGluZ0RlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25z
W2FpclNwaWxsc0V2ZXJ5dGhpbmdJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgbG9nQWlyUmVnaXN0ZXJQcmVzc3VyZSgp
IHsgcmV0dXJuIHNfb3B0aW9uc1tsb2dBaXJSZWdpc3RlclByZXNzdXJlSURdLmJvb2xWYWw7IH0g
aW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGxv
Z0FpclJlZ2lzdGVyUHJlc3N1cmVEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1ts
b2dBaXJSZWdpc3RlclByZXNzdXJlSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVuc2lnbmVkJiBtYXhCM1RhaWxEdXBCbG9ja1Np
emUoKSB7IHJldHVybiBzX29wdGlvbnNbbWF4QjNUYWlsRHVwQmxvY2tTaXplSURdLnVuc2lnbmVk
VmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1
bnNpZ25lZCYgbWF4QjNUYWlsRHVwQmxvY2tTaXplRGVmYXVsdCgpIHsgcmV0dXJuIHNfZGVmYXVs
dE9wdGlvbnNbbWF4QjNUYWlsRHVwQmxvY2tTaXplSURdLnVuc2lnbmVkVmFsOyB9IGlubGluZSBf
X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25lZCYgbWF4QjNU
YWlsRHVwQmxvY2tTdWNjZXNzb3JzKCkgeyByZXR1cm4gc19vcHRpb25zW21heEIzVGFpbER1cEJs
b2NrU3VjY2Vzc29yc0lEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQmIG1heEIzVGFpbER1cEJsb2NrU3VjY2Vz
c29yc0RlZmF1bHQoKSB7IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW21heEIzVGFpbER1cEJsb2Nr
U3VjY2Vzc29yc0lEXS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdXNlRG9sbGFyVk0oKSB7IHJldHVybiBzX29wdGlv
bnNbdXNlRG9sbGFyVk1JRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgdXNlRG9sbGFyVk1EZWZhdWx0KCkgeyByZXR1cm4g
c19kZWZhdWx0T3B0aW9uc1t1c2VEb2xsYXJWTUlEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBvcHRpb25TdHJpbmcmIGZ1bmN0aW9u
T3ZlcnJpZGVzKCkgeyByZXR1cm4gc19vcHRpb25zW2Z1bmN0aW9uT3ZlcnJpZGVzSURdLm9wdGlv
blN0cmluZ1ZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBz
dGF0aWMgb3B0aW9uU3RyaW5nJiBmdW5jdGlvbk92ZXJyaWRlc0RlZmF1bHQoKSB7IHJldHVybiBz
X2RlZmF1bHRPcHRpb25zW2Z1bmN0aW9uT3ZlcnJpZGVzSURdLm9wdGlvblN0cmluZ1ZhbDsgfSBp
bmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgdW5zaWduZWQm
IHdhdGNoZG9nKCkgeyByZXR1cm4gc19vcHRpb25zW3dhdGNoZG9nSURdLnVuc2lnbmVkVmFsOyB9
IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyB1bnNpZ25l
ZCYgd2F0Y2hkb2dEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1t3YXRjaGRvZ0lE
XS51bnNpZ25lZFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p
KSBzdGF0aWMgYm9vbCYgdXNlSUNTdGF0cygpIHsgcmV0dXJuIHNfb3B0aW9uc1t1c2VJQ1N0YXRz
SURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
c3RhdGljIGJvb2wmIHVzZUlDU3RhdHNEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9u
c1t1c2VJQ1N0YXRzSURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fKSkgc3RhdGljIGJvb2wmIGR1bXBNb2R1bGVSZWNvcmQoKSB7IHJldHVybiBzX29w
dGlvbnNbZHVtcE1vZHVsZVJlY29yZElEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29sJiBkdW1wTW9kdWxlUmVjb3JkRGVmYXVs
dCgpIHsgcmV0dXJuIHNfZGVmYXVsdE9wdGlvbnNbZHVtcE1vZHVsZVJlY29yZElEXS5ib29sVmFs
OyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHN0YXRpYyBib29s
JiBkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkgeyByZXR1cm4gc19vcHRpb25zW2R1bXBNb2R1bGVM
b2FkaW5nU3RhdGVJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18pKSBzdGF0aWMgYm9vbCYgZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZURlZmF1bHQoKSB7
IHJldHVybiBzX2RlZmF1bHRPcHRpb25zW2R1bXBNb2R1bGVMb2FkaW5nU3RhdGVJRF0uYm9vbFZh
bDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9v
bCYgZXhwb3NlSW50ZXJuYWxNb2R1bGVMb2FkZXIoKSB7IHJldHVybiBzX29wdGlvbnNbZXhwb3Nl
SW50ZXJuYWxNb2R1bGVMb2FkZXJJRF0uYm9vbFZhbDsgfSBpbmxpbmUgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCYgZXhwb3NlSW50ZXJuYWxNb2R1bGVMb2Fk
ZXJEZWZhdWx0KCkgeyByZXR1cm4gc19kZWZhdWx0T3B0aW9uc1tleHBvc2VJbnRlcm5hbE1vZHVs
ZUxvYWRlcklEXS5ib29sVmFsOyB9IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp
bmVfXykpIHN0YXRpYyBib29sJiB1c2VTdXBlclNhbXBsZXIoKSB7IHJldHVybiBzX29wdGlvbnNb
dXNlU3VwZXJTYW1wbGVySURdLmJvb2xWYWw7IH0gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgc3RhdGljIGJvb2wmIHVzZVN1cGVyU2FtcGxlckRlZmF1bHQoKSB7IHJl
dHVybiBzX2RlZmF1bHRPcHRpb25zW3VzZVN1cGVyU2FtcGxlcklEXS5ib29sVmFsOyB9CiN1bmRl
ZiBGT1JfRUFDSF9PUFRJT04KCnByaXZhdGU6CgogICAgdW5pb24gRW50cnkgewogICAgICAgIGJv
b2wgYm9vbFZhbDsKICAgICAgICB1bnNpZ25lZCB1bnNpZ25lZFZhbDsKICAgICAgICBkb3VibGUg
ZG91YmxlVmFsOwogICAgICAgIGludDMyIGludDMyVmFsOwogICAgICAgIE9wdGlvblJhbmdlIG9w
dGlvblJhbmdlVmFsOwogICAgICAgIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZ1ZhbDsKICAgICAg
ICBHQ0xvZ2dpbmc6OkxldmVsIGdjTG9nTGV2ZWxWYWw7CiAgICB9OwoKCiAgICBzdHJ1Y3QgRW50
cnlJbmZvIHsKICAgICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgICAgIGNvbnN0IGNoYXIqIGRl
c2NyaXB0aW9uOwogICAgICAgIFR5cGUgdHlwZTsKICAgICAgICBBdmFpbGFiaWxpdHkgYXZhaWxh
YmlsaXR5OwogICAgfTsKCiAgICBPcHRpb25zKCk7CgogICAgZW51bSBEdW1wRGVmYXVsdHNPcHRp
b24gewogICAgICAgIERvbnREdW1wRGVmYXVsdHMsCiAgICAgICAgRHVtcERlZmF1bHRzCiAgICB9
OwogICAgc3RhdGljIHZvaWQgZHVtcE9wdGlvbnNJZk5lZWRlZCgpOwogICAgc3RhdGljIHZvaWQg
ZHVtcEFsbE9wdGlvbnMoU3RyaW5nQnVpbGRlciYsIER1bXBMZXZlbCwgY29uc3QgY2hhciogdGl0
bGUsCiAgICAgICAgY29uc3QgY2hhciogc2VwYXJhdG9yLCBjb25zdCBjaGFyKiBvcHRpb25IZWFk
ZXIsIGNvbnN0IGNoYXIqIG9wdGlvbkZvb3RlciwgRHVtcERlZmF1bHRzT3B0aW9uKTsKICAgIHN0
YXRpYyB2b2lkIGR1bXBPcHRpb24oU3RyaW5nQnVpbGRlciYsIER1bXBMZXZlbCwgT3B0aW9uSUQs
CiAgICAgICAgY29uc3QgY2hhciogb3B0aW9uSGVhZGVyLCBjb25zdCBjaGFyKiBvcHRpb25Gb290
ZXIsIER1bXBEZWZhdWx0c09wdGlvbik7CgogICAgc3RhdGljIGJvb2wgc2V0T3B0aW9uV2l0aG91
dEFsaWFzKGNvbnN0IGNoYXIqIGFyZyk7CiAgICBzdGF0aWMgYm9vbCBzZXRBbGlhc2VkT3B0aW9u
KGNvbnN0IGNoYXIqIGFyZyk7CiAgICBzdGF0aWMgYm9vbCBvdmVycmlkZUFsaWFzZWRPcHRpb25X
aXRoSGV1cmlzdGljKGNvbnN0IGNoYXIqIG5hbWUpOwoKCiAgICBzdGF0aWMgRW50cnkgc19vcHRp
b25zW251bWJlck9mT3B0aW9uc107CiAgICBzdGF0aWMgRW50cnkgc19kZWZhdWx0T3B0aW9uc1tu
dW1iZXJPZk9wdGlvbnNdOwogICAgc3RhdGljIGNvbnN0IEVudHJ5SW5mbyBzX29wdGlvbnNJbmZv
W251bWJlck9mT3B0aW9uc107CgogICAgZnJpZW5kIGNsYXNzIE9wdGlvbjsKfTsKCmNsYXNzIE9w
dGlvbiB7CnB1YmxpYzoKICAgIE9wdGlvbihPcHRpb25zOjpPcHRpb25JRCBpZCkKICAgICAgICA6
IG1faWQoaWQpCiAgICAgICAgLCBtX2VudHJ5KE9wdGlvbnM6OnNfb3B0aW9uc1ttX2lkXSkKICAg
IHsKICAgIH0KCiAgICB2b2lkIGR1bXAoU3RyaW5nQnVpbGRlciYpIGNvbnN0OwoKICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdDsKICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsg
fQoKICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKICAgIGNvbnN0IGNoYXIqIGRlc2NyaXB0
aW9uKCkgY29uc3Q7CiAgICBPcHRpb25zOjpUeXBlIHR5cGUoKSBjb25zdDsKICAgIE9wdGlvbnM6
OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkoKSBjb25zdDsKICAgIGJvb2wgaXNPdmVycmlkZGVu
KCkgY29uc3Q7CiAgICBjb25zdCBPcHRpb24gZGVmYXVsdE9wdGlvbigpIGNvbnN0OwoKICAgIGJv
b2wmIGJvb2xWYWwoKTsKICAgIHVuc2lnbmVkJiB1bnNpZ25lZFZhbCgpOwogICAgZG91YmxlJiBk
b3VibGVWYWwoKTsKICAgIGludDMyX3QmIGludDMyVmFsKCk7CiAgICBPcHRpb25SYW5nZSBvcHRp
b25SYW5nZVZhbCgpOwogICAgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nVmFsKCk7CiAgICBHQ0xv
Z2dpbmc6OkxldmVsJiBnY0xvZ0xldmVsVmFsKCk7Cgpwcml2YXRlOgoKICAgIE9wdGlvbihPcHRp
b25zOjpPcHRpb25JRCBpZCwgT3B0aW9uczo6RW50cnkmIGVudHJ5KQogICAgICAgIDogbV9pZChp
ZCkKICAgICAgICAsIG1fZW50cnkoZW50cnkpCiAgICB7CiAgICB9CgogICAgT3B0aW9uczo6T3B0
aW9uSUQgbV9pZDsKICAgIE9wdGlvbnM6OkVudHJ5JiBtX2VudHJ5Owp9OwoKaW5saW5lIGNvbnN0
IGNoYXIqIE9wdGlvbjo6bmFtZSgpIGNvbnN0CnsKICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlv
bnNJbmZvW21faWRdLm5hbWU7Cn0KCmlubGluZSBjb25zdCBjaGFyKiBPcHRpb246OmRlc2NyaXB0
aW9uKCkgY29uc3QKewogICAgcmV0dXJuIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9bbV9pZF0uZGVz
Y3JpcHRpb247Cn0KCmlubGluZSBPcHRpb25zOjpUeXBlIE9wdGlvbjo6dHlwZSgpIGNvbnN0CnsK
ICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLnR5cGU7Cn0KCmlubGluZSBP
cHRpb25zOjpBdmFpbGFiaWxpdHkgT3B0aW9uOjphdmFpbGFiaWxpdHkoKSBjb25zdAp7CiAgICBy
ZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1ttX2lkXS5hdmFpbGFiaWxpdHk7Cn0KCmlubGlu
ZSBib29sIE9wdGlvbjo6aXNPdmVycmlkZGVuKCkgY29uc3QKewogICAgcmV0dXJuICp0aGlzICE9
IGRlZmF1bHRPcHRpb24oKTsKfQoKaW5saW5lIGNvbnN0IE9wdGlvbiBPcHRpb246OmRlZmF1bHRP
cHRpb24oKSBjb25zdAp7CiAgICByZXR1cm4gT3B0aW9uKG1faWQsIE9wdGlvbnM6OnNfZGVmYXVs
dE9wdGlvbnNbbV9pZF0pOwp9CgppbmxpbmUgYm9vbCYgT3B0aW9uOjpib29sVmFsKCkKewogICAg
cmV0dXJuIG1fZW50cnkuYm9vbFZhbDsKfQoKaW5saW5lIHVuc2lnbmVkJiBPcHRpb246OnVuc2ln
bmVkVmFsKCkKewogICAgcmV0dXJuIG1fZW50cnkudW5zaWduZWRWYWw7Cn0KCmlubGluZSBkb3Vi
bGUmIE9wdGlvbjo6ZG91YmxlVmFsKCkKewogICAgcmV0dXJuIG1fZW50cnkuZG91YmxlVmFsOwp9
CgppbmxpbmUgaW50MzJfdCYgT3B0aW9uOjppbnQzMlZhbCgpCnsKICAgIHJldHVybiBtX2VudHJ5
LmludDMyVmFsOwp9CgppbmxpbmUgT3B0aW9uUmFuZ2UgT3B0aW9uOjpvcHRpb25SYW5nZVZhbCgp
CnsKICAgIHJldHVybiBtX2VudHJ5Lm9wdGlvblJhbmdlVmFsOwp9CgppbmxpbmUgY29uc3QgY2hh
ciogT3B0aW9uOjpvcHRpb25TdHJpbmdWYWwoKQp7CiAgICByZXR1cm4gbV9lbnRyeS5vcHRpb25T
dHJpbmdWYWw7Cn0KCmlubGluZSBHQ0xvZ2dpbmc6OkxldmVsJiBPcHRpb246OmdjTG9nTGV2ZWxW
YWwoKQp7CiAgICByZXR1cm4gbV9lbnRyeS5nY0xvZ0xldmVsVmFsOwp9Cgp9CiMgMzIgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZEJsb2NrLmgiIDIKCgoKbmFtZXNwYWNl
IEpTQyB7CgpjbGFzcyBDb3BpZWRTcGFjZTsKCmNsYXNzIENvcGllZEJsb2NrIDogcHVibGljIERv
dWJseUxpbmtlZExpc3ROb2RlPENvcGllZEJsb2NrPiB7CiAgICBmcmllbmQgY2xhc3MgV1RGOjpE
b3VibHlMaW5rZWRMaXN0Tm9kZTxDb3BpZWRCbG9jaz47CiAgICBmcmllbmQgY2xhc3MgQ29waWVk
U3BhY2U7CiAgICBmcmllbmQgY2xhc3MgQ29waWVkQWxsb2NhdG9yOwpwdWJsaWM6CiAgICBzdGF0
aWMgQ29waWVkQmxvY2sqIGNyZWF0ZShIZWFwJiwgc2l6ZV90ID0gYmxvY2tTaXplKTsKICAgIHN0
YXRpYyBDb3BpZWRCbG9jayogY3JlYXRlTm9aZXJvRmlsbChIZWFwJiwgc2l6ZV90ID0gYmxvY2tT
aXplKTsKICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSGVhcCYsIENvcGllZEJsb2NrKik7CgogICAg
dm9pZCBwaW4oKTsKICAgIGJvb2wgaXNQaW5uZWQoKTsKCiAgICBib29sIGlzT2xkKCk7CiAgICBi
b29sIGlzT3ZlcnNpemUoKTsKICAgIHZvaWQgZGlkUHJvbW90ZSgpOwoKICAgIHVuc2lnbmVkIGxp
dmVCeXRlcygpOwogICAgdm9pZCByZXBvcnRMaXZlQnl0ZXMoTG9ja0hvbGRlciYsIEpTQ2VsbCos
IENvcHlUb2tlbiwgdW5zaWduZWQpOwogICAgdm9pZCByZXBvcnRMaXZlQnl0ZXNEdXJpbmdDb3B5
aW5nKHVuc2lnbmVkKTsKICAgIHZvaWQgZGlkU3Vydml2ZUdDKCk7CiAgICB2b2lkIGRpZEV2YWN1
YXRlQnl0ZXModW5zaWduZWQpOwogICAgYm9vbCBzaG91bGRFdmFjdWF0ZSgpOwogICAgYm9vbCBj
YW5CZVJlY3ljbGVkKCk7CgoKICAgIGNoYXIqIHBheWxvYWQoKTsKICAgIGNoYXIqIHBheWxvYWRF
bmQoKTsKICAgIHNpemVfdCBwYXlsb2FkQ2FwYWNpdHkoKTsKCgogICAgY2hhciogZGF0YSgpOwog
ICAgY2hhciogZGF0YUVuZCgpOwogICAgc2l6ZV90IGRhdGFTaXplKCk7CgoKCiAgICBjaGFyKiB3
aWxkZXJuZXNzKCk7CiAgICBjaGFyKiB3aWxkZXJuZXNzRW5kKCk7CiAgICBzaXplX3Qgd2lsZGVy
bmVzc1NpemUoKTsKCiAgICBzaXplX3Qgc2l6ZSgpOwogICAgc2l6ZV90IGNhcGFjaXR5KCk7Cgog
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBibG9ja1NpemUgPSA2NCAqIEtCOwoKICAgIGJvb2wgaGFz
V29ya0xpc3QoKTsKICAgIENvcHlXb3JrTGlzdCYgd29ya0xpc3QoKTsKICAgIExvY2smIHdvcmtM
aXN0TG9jaygpIHsgcmV0dXJuIG1fd29ya0xpc3RMb2NrOyB9Cgpwcml2YXRlOgogICAgQ29waWVk
QmxvY2soc2l6ZV90KTsKICAgIHZvaWQgemVyb0ZpbGxXaWxkZXJuZXNzKCk7CgogICAgdm9pZCBj
aGVja0NvbnNpc3RlbmN5KCk7CgogICAgQ29waWVkQmxvY2sqIG1fcHJldjsKICAgIENvcGllZEJs
b2NrKiBtX25leHQ7CgogICAgc2l6ZV90IG1fY2FwYWNpdHk7CgogICAgTG9jayBtX3dvcmtMaXN0
TG9jazsKICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3B5V29ya0xpc3Q+IG1fd29ya0xpc3Q7CgogICAg
c2l6ZV90IG1fcmVtYWluaW5nOwogICAgYm9vbCBtX2lzUGlubmVkIDogMTsKICAgIGJvb2wgbV9p
c09sZCA6IDE7CiAgICB1bnNpZ25lZCBtX2xpdmVCeXRlczsKCgoKfTsKCmlubGluZSB2b2lkIENv
cGllZEJsb2NrOjpkaWRTdXJ2aXZlR0MoKQp7CiAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAo
KHZvaWQpMCk7CiAgICBtX2xpdmVCeXRlcyA9IDA7CgoKCiAgICBtX2lzUGlubmVkID0gZmFsc2U7
CiAgICBpZiAobV93b3JrTGlzdCkKICAgICAgICBtX3dvcmtMaXN0ID0gbnVsbHB0cjsKfQoKaW5s
aW5lIHZvaWQgQ29waWVkQmxvY2s6OmRpZEV2YWN1YXRlQnl0ZXModW5zaWduZWQgYnl0ZXMpCnsK
ICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAg
IG1fbGl2ZUJ5dGVzIC09IGJ5dGVzOwoKCgogICAgY2hlY2tDb25zaXN0ZW5jeSgpOwp9Cgppbmxp
bmUgYm9vbCBDb3BpZWRCbG9jazo6Y2FuQmVSZWN5Y2xlZCgpCnsKICAgIGNoZWNrQ29uc2lzdGVu
Y3koKTsKICAgIHJldHVybiAhbV9saXZlQnl0ZXM7Cn0KCmlubGluZSBib29sIENvcGllZEJsb2Nr
OjpzaG91bGRFdmFjdWF0ZSgpCnsKICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgIHJldHVybiBz
dGF0aWNfY2FzdDxkb3VibGU+KG1fbGl2ZUJ5dGVzKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4ocGF5
bG9hZENhcGFjaXR5KCkpIDw9IE9wdGlvbnM6Om1pbkNvcGllZEJsb2NrVXRpbGl6YXRpb24oKTsK
fQoKaW5saW5lIHZvaWQgQ29waWVkQmxvY2s6OnBpbigpCnsKICAgIG1faXNQaW5uZWQgPSB0cnVl
OwogICAgaWYgKG1fd29ya0xpc3QpCiAgICAgICAgbV93b3JrTGlzdCA9IG51bGxwdHI7Cn0KCmlu
bGluZSBib29sIENvcGllZEJsb2NrOjppc1Bpbm5lZCgpCnsKICAgIHJldHVybiBtX2lzUGlubmVk
Owp9CgppbmxpbmUgYm9vbCBDb3BpZWRCbG9jazo6aXNPbGQoKQp7CiAgICByZXR1cm4gbV9pc09s
ZDsKfQoKaW5saW5lIHZvaWQgQ29waWVkQmxvY2s6OmRpZFByb21vdGUoKQp7CiAgICBtX2lzT2xk
ID0gdHJ1ZTsKfQoKaW5saW5lIGJvb2wgQ29waWVkQmxvY2s6OmlzT3ZlcnNpemUoKQp7CiAgICBy
ZXR1cm4gbV9jYXBhY2l0eSAhPSBibG9ja1NpemU7Cn0KCmlubGluZSB1bnNpZ25lZCBDb3BpZWRC
bG9jazo6bGl2ZUJ5dGVzKCkKewogICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgcmV0dXJuIG1f
bGl2ZUJ5dGVzOwp9CgppbmxpbmUgY2hhciogQ29waWVkQmxvY2s6OnBheWxvYWQoKQp7CiAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcykgKyBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2Y8c2l6ZW9mKGRvdWJsZSk+KHNpemVvZihDb3BpZWRCbG9jaykpOwp9CgppbmxpbmUgY2hh
ciogQ29waWVkQmxvY2s6OnBheWxvYWRFbmQoKQp7CiAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4odGhpcykgKyBtX2NhcGFjaXR5Owp9CgppbmxpbmUgc2l6ZV90IENvcGllZEJsb2Nr
OjpwYXlsb2FkQ2FwYWNpdHkoKQp7CiAgICByZXR1cm4gcGF5bG9hZEVuZCgpIC0gcGF5bG9hZCgp
Owp9CgppbmxpbmUgY2hhciogQ29waWVkQmxvY2s6OmRhdGEoKQp7CiAgICByZXR1cm4gcGF5bG9h
ZCgpOwp9CgppbmxpbmUgY2hhciogQ29waWVkQmxvY2s6OmRhdGFFbmQoKQp7CiAgICByZXR1cm4g
cGF5bG9hZEVuZCgpIC0gbV9yZW1haW5pbmc7Cn0KCmlubGluZSBzaXplX3QgQ29waWVkQmxvY2s6
OmRhdGFTaXplKCkKewogICAgcmV0dXJuIGRhdGFFbmQoKSAtIGRhdGEoKTsKfQoKaW5saW5lIGNo
YXIqIENvcGllZEJsb2NrOjp3aWxkZXJuZXNzKCkKewogICAgcmV0dXJuIGRhdGFFbmQoKTsKfQoK
aW5saW5lIGNoYXIqIENvcGllZEJsb2NrOjp3aWxkZXJuZXNzRW5kKCkKewogICAgcmV0dXJuIHBh
eWxvYWRFbmQoKTsKfQoKaW5saW5lIHNpemVfdCBDb3BpZWRCbG9jazo6d2lsZGVybmVzc1NpemUo
KQp7CiAgICByZXR1cm4gd2lsZGVybmVzc0VuZCgpIC0gd2lsZGVybmVzcygpOwp9CgppbmxpbmUg
c2l6ZV90IENvcGllZEJsb2NrOjpzaXplKCkKewogICAgcmV0dXJuIGRhdGFTaXplKCk7Cn0KCmlu
bGluZSBzaXplX3QgQ29waWVkQmxvY2s6OmNhcGFjaXR5KCkKewogICAgcmV0dXJuIG1fY2FwYWNp
dHk7Cn0KCmlubGluZSBib29sIENvcGllZEJsb2NrOjpoYXNXb3JrTGlzdCgpCnsKICAgIHJldHVy
biAhIW1fd29ya0xpc3Q7Cn0KCmlubGluZSBDb3B5V29ya0xpc3QmIENvcGllZEJsb2NrOjp3b3Jr
TGlzdCgpCnsKICAgIHJldHVybiAqbV93b3JrTGlzdDsKfQoKaW5saW5lIHZvaWQgQ29waWVkQmxv
Y2s6OmNoZWNrQ29uc2lzdGVuY3koKQp7CiAgICAoKHZvaWQpMCk7Cn0KCn0KIyAzMCAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkQWxsb2NhdG9yLmgiIDIKIyAxICIuLi8u
Li9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQm9vbGVhbi5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9X
VEYvd3RmL0NoZWNrZWRCb29sZWFuLmgiCiNkZWZpbmUgQ2hlY2tlZEJvb2xlYW5faCAKCgoKY2xh
c3MgQ2hlY2tlZEJvb2xlYW4gewpwdWJsaWM6CiMgNDIgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0No
ZWNrZWRCb29sZWFuLmgiCiAgICBDaGVja2VkQm9vbGVhbihib29sIHZhbHVlKQogICAgICAgIDog
bV92YWx1ZSh2YWx1ZSkKCgoKICAgIHsKICAgIH0KCiAgICB+Q2hlY2tlZEJvb2xlYW4oKQogICAg
ewogICAgICAgICgodm9pZCkwKTsKICAgIH0KCiAgICBvcGVyYXRvciBib29sKCkKICAgIHsKCgoK
ICAgICAgICByZXR1cm4gbV92YWx1ZTsKICAgIH0KCnByaXZhdGU6CiAgICBib29sIG1fdmFsdWU7
CgoKCn07CiMgMzEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZEFsbG9j
YXRvci5oIiAyCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIENvcGllZEFsbG9jYXRvciB7CnB1Ymxp
YzoKICAgIENvcGllZEFsbG9jYXRvcigpOwoKICAgIGJvb2wgZmFzdFBhdGhTaG91bGRTdWNjZWVk
KHNpemVfdCBieXRlcykgY29uc3Q7CiAgICBDaGVja2VkQm9vbGVhbiB0cnlBbGxvY2F0ZShzaXpl
X3QgYnl0ZXMsIHZvaWQqKiBvdXRQdHIpOwogICAgQ2hlY2tlZEJvb2xlYW4gdHJ5QWxsb2NhdGVE
dXJpbmdDb3B5aW5nKHNpemVfdCBieXRlcywgdm9pZCoqIG91dFB0cik7CiAgICBDaGVja2VkQm9v
bGVhbiB0cnlSZWFsbG9jYXRlKHZvaWQgKm9sZFB0ciwgc2l6ZV90IG9sZEJ5dGVzLCBzaXplX3Qg
bmV3Qnl0ZXMpOwogICAgdm9pZCogZm9yY2VBbGxvY2F0ZShzaXplX3QgYnl0ZXMpOwogICAgQ29w
aWVkQmxvY2sqIHJlc2V0Q3VycmVudEJsb2NrKCk7CiAgICB2b2lkIHNldEN1cnJlbnRCbG9jayhD
b3BpZWRCbG9jayopOwogICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSgpOwoKICAgIGJvb2wgaXNW
YWxpZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXJyZW50QmxvY2s7IH0KCiAgICBDb3BpZWRCbG9j
ayogY3VycmVudEJsb2NrKCkgeyByZXR1cm4gbV9jdXJyZW50QmxvY2s7IH0KCgoKCgogICAgc2l6
ZV90IG1fY3VycmVudFJlbWFpbmluZzsKICAgIGNoYXIqIG1fY3VycmVudFBheWxvYWRFbmQ7CiAg
ICBDb3BpZWRCbG9jayogbV9jdXJyZW50QmxvY2s7Cn07CgppbmxpbmUgQ29waWVkQWxsb2NhdG9y
OjpDb3BpZWRBbGxvY2F0b3IoKQogICAgOiBtX2N1cnJlbnRSZW1haW5pbmcoMCkKICAgICwgbV9j
dXJyZW50UGF5bG9hZEVuZCgwKQogICAgLCBtX2N1cnJlbnRCbG9jaygwKQp7Cn0KCmlubGluZSBi
b29sIENvcGllZEFsbG9jYXRvcjo6ZmFzdFBhdGhTaG91bGRTdWNjZWVkKHNpemVfdCBieXRlcykg
Y29uc3QKewogICAgKCh2b2lkKTApOwoKICAgIHJldHVybiBieXRlcyA8PSBtX2N1cnJlbnRSZW1h
aW5pbmc7Cn0KCmlubGluZSBDaGVja2VkQm9vbGVhbiBDb3BpZWRBbGxvY2F0b3I6OnRyeUFsbG9j
YXRlKHNpemVfdCBieXRlcywgdm9pZCoqIG91dFB0cikKewogICAgKCh2b2lkKTApOwoKCgoKCgoK
ICAgIHNpemVfdCBjdXJyZW50UmVtYWluaW5nID0gbV9jdXJyZW50UmVtYWluaW5nOwogICAgaWYg
KGJ5dGVzID4gY3VycmVudFJlbWFpbmluZykKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICBjdXJy
ZW50UmVtYWluaW5nIC09IGJ5dGVzOwogICAgbV9jdXJyZW50UmVtYWluaW5nID0gY3VycmVudFJl
bWFpbmluZzsKICAgICpvdXRQdHIgPSBtX2N1cnJlbnRQYXlsb2FkRW5kIC0gY3VycmVudFJlbWFp
bmluZyAtIGJ5dGVzOwoKICAgICgodm9pZCkwKTsKCiAgICByZXR1cm4gdHJ1ZTsKfQoKaW5saW5l
IENoZWNrZWRCb29sZWFuIENvcGllZEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVEdXJpbmdDb3B5aW5n
KHNpemVfdCBieXRlcywgdm9pZCoqIG91dFB0cikKewogICAgaWYgKCF0cnlBbGxvY2F0ZShieXRl
cywgb3V0UHRyKSkKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICBtX2N1cnJlbnRCbG9jay0+cmVw
b3J0TGl2ZUJ5dGVzRHVyaW5nQ29weWluZyhieXRlcyk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKaW5s
aW5lIENoZWNrZWRCb29sZWFuIENvcGllZEFsbG9jYXRvcjo6dHJ5UmVhbGxvY2F0ZSgKICAgIHZv
aWQqIG9sZFB0ciwgc2l6ZV90IG9sZEJ5dGVzLCBzaXplX3QgbmV3Qnl0ZXMpCnsKICAgICgodm9p
ZCkwKTsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKCiAgICAoKHZvaWQpMCk7CgogICAg
c2l6ZV90IGFkZGl0aW9uYWxCeXRlcyA9IG5ld0J5dGVzIC0gb2xkQnl0ZXM7CgogICAgc2l6ZV90
IGN1cnJlbnRSZW1haW5pbmcgPSBtX2N1cnJlbnRSZW1haW5pbmc7CiAgICBpZiAobV9jdXJyZW50
UGF5bG9hZEVuZCAtIGN1cnJlbnRSZW1haW5pbmcgLSBvbGRCeXRlcyAhPSBzdGF0aWNfY2FzdDxj
aGFyKj4ob2xkUHRyKSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgaWYgKGFkZGl0aW9uYWxC
eXRlcyA+IGN1cnJlbnRSZW1haW5pbmcpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIG1fY3Vy
cmVudFJlbWFpbmluZyA9IGN1cnJlbnRSZW1haW5pbmcgLSBhZGRpdGlvbmFsQnl0ZXM7CgogICAg
cmV0dXJuIHRydWU7Cn0KCmlubGluZSB2b2lkKiBDb3BpZWRBbGxvY2F0b3I6OmZvcmNlQWxsb2Nh
dGUoc2l6ZV90IGJ5dGVzKQp7CiAgICB2b2lkKiByZXN1bHQgPSAwOwogICAgQ2hlY2tlZEJvb2xl
YW4gZGlkU3VjY2VlZCA9IHRyeUFsbG9jYXRlKGJ5dGVzLCAmcmVzdWx0KTsKICAgICgodm9pZCkw
KTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCmlubGluZSBDb3BpZWRCbG9jayogQ29waWVkQWxsb2Nh
dG9yOjpyZXNldEN1cnJlbnRCbG9jaygpCnsKICAgIENvcGllZEJsb2NrKiByZXN1bHQgPSBtX2N1
cnJlbnRCbG9jazsKICAgIGlmIChyZXN1bHQpIHsKICAgICAgICByZXN1bHQtPm1fcmVtYWluaW5n
ID0gbV9jdXJyZW50UmVtYWluaW5nOwogICAgICAgIG1fY3VycmVudEJsb2NrID0gMDsKICAgICAg
ICBtX2N1cnJlbnRSZW1haW5pbmcgPSAwOwogICAgICAgIG1fY3VycmVudFBheWxvYWRFbmQgPSAw
OwogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKfQoKaW5saW5lIHZvaWQgQ29waWVkQWxsb2NhdG9y
OjpzZXRDdXJyZW50QmxvY2soQ29waWVkQmxvY2sqIG5ld0Jsb2NrKQp7CiAgICAoKHZvaWQpMCk7
CiAgICBtX2N1cnJlbnRCbG9jayA9IG5ld0Jsb2NrOwogICAgKCh2b2lkKTApOwogICAgbV9jdXJy
ZW50UmVtYWluaW5nID0gbmV3QmxvY2stPm1fcmVtYWluaW5nOwogICAgbV9jdXJyZW50UGF5bG9h
ZEVuZCA9IG5ld0Jsb2NrLT5wYXlsb2FkRW5kKCk7Cn0KCmlubGluZSBzaXplX3QgQ29waWVkQWxs
b2NhdG9yOjpjdXJyZW50Q2FwYWNpdHkoKQp7CiAgICBpZiAoIW1fY3VycmVudEJsb2NrKQogICAg
ICAgIHJldHVybiAwOwogICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5jYXBhY2l0eSgpOwp9Cgp9
CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlLmgiIDIK
CiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVGlueUJsb29tRmlsdGVyLmgi
IDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVGlueUJsb29tRmlsdGVy
LmgiCiNkZWZpbmUgVGlueUJsb29tRmlsdGVyX2ggCgpuYW1lc3BhY2UgSlNDIHsKCnR5cGVkZWYg
dWludHB0cl90IEJpdHM7CgpjbGFzcyBUaW55Qmxvb21GaWx0ZXIgewpwdWJsaWM6CiAgICBUaW55
Qmxvb21GaWx0ZXIoKTsKCiAgICB2b2lkIGFkZChCaXRzKTsKICAgIHZvaWQgYWRkKFRpbnlCbG9v
bUZpbHRlciYpOwogICAgYm9vbCBydWxlT3V0KEJpdHMpIGNvbnN0OwogICAgdm9pZCByZXNldCgp
OwoKcHJpdmF0ZToKICAgIEJpdHMgbV9iaXRzOwp9OwoKaW5saW5lIFRpbnlCbG9vbUZpbHRlcjo6
VGlueUJsb29tRmlsdGVyKCkKICAgIDogbV9iaXRzKDApCnsKfQoKaW5saW5lIHZvaWQgVGlueUJs
b29tRmlsdGVyOjphZGQoQml0cyBiaXRzKQp7CiAgICBtX2JpdHMgfD0gYml0czsKfQoKaW5saW5l
IHZvaWQgVGlueUJsb29tRmlsdGVyOjphZGQoVGlueUJsb29tRmlsdGVyJiBvdGhlcikKewogICAg
bV9iaXRzIHw9IG90aGVyLm1fYml0czsKfQoKaW5saW5lIGJvb2wgVGlueUJsb29tRmlsdGVyOjpy
dWxlT3V0KEJpdHMgYml0cykgY29uc3QKewogICAgaWYgKCFiaXRzKQogICAgICAgIHJldHVybiB0
cnVlOwoKICAgIGlmICgoYml0cyAmIG1fYml0cykgIT0gYml0cykKICAgICAgICByZXR1cm4gdHJ1
ZTsKCiAgICByZXR1cm4gZmFsc2U7Cn0KCmlubGluZSB2b2lkIFRpbnlCbG9vbUZpbHRlcjo6cmVz
ZXQoKQp7CiAgICBtX2JpdHMgPSAwOwp9Cgp9CiMgMzIgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvcGllZFNwYWNlLmgiIDIKCgoKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBI
ZWFwOwpjbGFzcyBDb3BpZWRCbG9jazsKCmNsYXNzIENvcGllZFNwYWNlIHsKICAgIGZyaWVuZCBj
bGFzcyBDb3B5VmlzaXRvcjsKICAgIGZyaWVuZCBjbGFzcyBIZWFwOwogICAgZnJpZW5kIGNsYXNz
IFNsb3RWaXNpdG9yOwogICAgZnJpZW5kIGNsYXNzIEpJVDsKcHVibGljOgogICAgQ29waWVkU3Bh
Y2UoSGVhcCopOwogICAgfkNvcGllZFNwYWNlKCk7CiAgICB2b2lkIGluaXQoKTsKCiAgICBDaGVj
a2VkQm9vbGVhbiB0cnlBbGxvY2F0ZShzaXplX3QsIHZvaWQqKik7CiAgICBDaGVja2VkQm9vbGVh
biB0cnlSZWFsbG9jYXRlKHZvaWQqKiwgc2l6ZV90LCBzaXplX3QpOwoKICAgIENvcGllZEFsbG9j
YXRvciYgYWxsb2NhdG9yKCkgeyByZXR1cm4gbV9hbGxvY2F0b3I7IH0KCiAgICB2b2lkIGRpZFN0
YXJ0RnVsbENvbGxlY3Rpb24oKTsKCiAgICB0ZW1wbGF0ZSA8SGVhcE9wZXJhdGlvbiBjb2xsZWN0
aW9uVHlwZT4KICAgIHZvaWQgc3RhcnRlZENvcHlpbmcoKTsKICAgIHZvaWQgZG9uZUNvcHlpbmco
KTsKICAgIGJvb2wgaXNJbkNvcHlQaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5Db3B5aW5nUGhh
c2U7IH0KCiAgICB2b2lkIHBpbihDb3BpZWRCbG9jayopOwogICAgYm9vbCBpc1Bpbm5lZCh2b2lk
Kik7CgogICAgYm9vbCBjb250YWlucyhDb3BpZWRCbG9jayopOwogICAgYm9vbCBjb250YWlucyh2
b2lkKiwgQ29waWVkQmxvY2sqJik7CgogICAgdm9pZCBwaW5JZk5lY2Vzc2FyeSh2b2lkKiBwb2lu
dGVyKTsKCiAgICBzaXplX3Qgc2l6ZSgpOwogICAgc2l6ZV90IGNhcGFjaXR5KCk7CgogICAgYm9v
bCBpc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSk7CiAgICBib29sIHNob3VsZERvQ29weVBoYXNl
KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGREb0NvcHlQaGFzZTsgfQoKICAgIHN0YXRpYyBDb3Bp
ZWRCbG9jayogYmxvY2tGb3Iodm9pZCopOwoKICAgIEhlYXAqIGhlYXAoKSBjb25zdCB7IHJldHVy
biBtX2hlYXA7IH0KCiAgICBzaXplX3QgdGFrZUJ5dGVzUmVtb3ZlZEZyb21PbGRTcGFjZUR1ZVRv
UmVhbGxvY2F0aW9uKCkKICAgIHsKICAgICAgICBzaXplX3QgcmVzdWx0ID0gMDsKICAgICAgICBz
dGQ6OnN3YXAobV9ieXRlc1JlbW92ZWRGcm9tT2xkU3BhY2VEdWVUb1JlYWxsb2NhdGlvbiwgcmVz
dWx0KTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKcHJpdmF0ZToKICAgIHN0YXRpYyBi
b29sIGlzT3ZlcnNpemUoc2l6ZV90KTsKCiAgICBDaGVja2VkQm9vbGVhbiB0cnlBbGxvY2F0ZVNs
b3dDYXNlKHNpemVfdCwgdm9pZCoqKTsKICAgIENoZWNrZWRCb29sZWFuIHRyeUFsbG9jYXRlT3Zl
cnNpemUoc2l6ZV90LCB2b2lkKiopOwogICAgQ2hlY2tlZEJvb2xlYW4gdHJ5UmVhbGxvY2F0ZU92
ZXJzaXplKHZvaWQqKiwgc2l6ZV90LCBzaXplX3QpOwoKICAgIHZvaWQgYWxsb2NhdGVCbG9jaygp
OwogICAgQ29waWVkQmxvY2sqIGFsbG9jYXRlQmxvY2tGb3JDb3B5aW5nUGhhc2UoKTsKCiAgICB2
b2lkIGRvbmVGaWxsaW5nQmxvY2soQ29waWVkQmxvY2sqLCBDb3BpZWRCbG9jayoqKTsKICAgIHZv
aWQgcmVjeWNsZUV2YWN1YXRlZEJsb2NrKENvcGllZEJsb2NrKiwgSGVhcE9wZXJhdGlvbiBjb2xs
ZWN0aW9uVHlwZSk7CiAgICB2b2lkIHJlY3ljbGVCb3Jyb3dlZEJsb2NrKENvcGllZEJsb2NrKik7
CgogICAgSGVhcCogbV9oZWFwOwoKICAgIENvcGllZEFsbG9jYXRvciBtX2FsbG9jYXRvcjsKCiAg
ICBIYXNoU2V0PENvcGllZEJsb2NrKj4gbV9ibG9ja1NldDsKCiAgICBMb2NrIG1fdG9TcGFjZUxv
Y2s7CgogICAgc3RydWN0IENvcGllZEdlbmVyYXRpb24gewogICAgICAgIENvcGllZEdlbmVyYXRp
b24oKQogICAgICAgICAgICA6IHRvU3BhY2UoMCkKICAgICAgICAgICAgLCBmcm9tU3BhY2UoMCkK
ICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBEb3VibHlMaW5rZWRMaXN0PENvcGllZEJsb2Nr
PiogdG9TcGFjZTsKICAgICAgICBEb3VibHlMaW5rZWRMaXN0PENvcGllZEJsb2NrPiogZnJvbVNw
YWNlOwoKICAgICAgICBEb3VibHlMaW5rZWRMaXN0PENvcGllZEJsb2NrPiBibG9ja3MxOwogICAg
ICAgIERvdWJseUxpbmtlZExpc3Q8Q29waWVkQmxvY2s+IGJsb2NrczI7CiAgICAgICAgRG91Ymx5
TGlua2VkTGlzdDxDb3BpZWRCbG9jaz4gb3ZlcnNpemVCbG9ja3M7CgogICAgICAgIFRpbnlCbG9v
bUZpbHRlciBibG9ja0ZpbHRlcjsKICAgIH07CgogICAgQ29waWVkR2VuZXJhdGlvbiBtX29sZEdl
bjsKICAgIENvcGllZEdlbmVyYXRpb24gbV9uZXdHZW47CgogICAgYm9vbCBtX2luQ29weWluZ1Bo
YXNlOwogICAgYm9vbCBtX3Nob3VsZERvQ29weVBoYXNlOwoKICAgIExvY2sgbV9sb2FuZWRCbG9j
a3NMb2NrOwogICAgc2l6ZV90IG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3M7CgogICAgc2l6ZV90IG1f
Ynl0ZXNSZW1vdmVkRnJvbU9sZFNwYWNlRHVlVG9SZWFsbG9jYXRpb247CgogICAgc3RhdGljIGNv
bnN0IHNpemVfdCBzX21heEFsbG9jYXRpb25TaXplID0gQ29waWVkQmxvY2s6OmJsb2NrU2l6ZSAv
IDI7CiAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNfYmxvY2tNYXNrID0gfihDb3BpZWRCbG9jazo6
YmxvY2tTaXplIC0gMSk7Cn07Cgp9CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvcHlWaXNpdG9yLmgiIDIKCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIEhlYXA7CgpjbGFz
cyBDb3B5VmlzaXRvciB7CiAgICBwcml2YXRlOiBDb3B5VmlzaXRvcihjb25zdCBDb3B5VmlzaXRv
ciYpID0gZGVsZXRlOyBDb3B5VmlzaXRvciYgb3BlcmF0b3I9KGNvbnN0IENvcHlWaXNpdG9yJikg
PSBkZWxldGU7OwpwdWJsaWM6CiAgICBDb3B5VmlzaXRvcihIZWFwJik7CiAgICB+Q29weVZpc2l0
b3IoKTsKCiAgICB2b2lkIGNvcHlGcm9tU2hhcmVkKCk7CgoKCgogICAgYm9vbCBjaGVja0lmU2hv
dWxkQ29weSh2b2lkKik7CiAgICB2b2lkKiBhbGxvY2F0ZU5ld1NwYWNlKHNpemVfdCk7CiAgICB2
b2lkIGRpZENvcHkodm9pZCosIHNpemVfdCk7Cgpwcml2YXRlOgogICAgdm9pZCogYWxsb2NhdGVO
ZXdTcGFjZVNsb3coc2l6ZV90KTsKICAgIHZvaWQgdmlzaXRJdGVtKENvcHlXb3JrbGlzdEl0ZW0p
OwoKICAgIEhlYXAmIG1faGVhcDsKICAgIENvcGllZEFsbG9jYXRvciBtX2NvcGllZEFsbG9jYXRv
cjsKfTsKCn0KIyAyOCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIiAy
CiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NJbmNvbWluZ1JlZkNvdW50
ZWRTZXQuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0luY29t
aW5nUmVmQ291bnRlZFNldC5oIgojZGVmaW5lIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0X2ggCgoj
IDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDSW5jb21pbmdSZWZDb3VudGVk
LmgiIDEKIyAzMCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NJbmNvbWluZ1Jl
ZkNvdW50ZWRTZXQuaCIgMgoKbmFtZXNwYWNlIEpTQyB7CgoKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+
CmNsYXNzIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0IHsKcHVibGljOgogICAgR0NJbmNvbWluZ1Jl
ZkNvdW50ZWRTZXQoKTsKCiAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CgoKICAgIGJv
b2wgYWRkUmVmZXJlbmNlKEpTQ2VsbCosIFQqKTsKCiAgICB2b2lkIHN3ZWVwKCk7CgogICAgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J5dGVzOyB9OwoKcHJpdmF0ZToKICAgIHN0YXRp
YyBib29sIHJlbW92ZUFsbChKU0NlbGwqKTsKICAgIHN0YXRpYyBib29sIHJlbW92ZURlYWQoSlND
ZWxsKik7CgogICAgVmVjdG9yPFQqPiBtX3ZlY3RvcjsKICAgIHNpemVfdCBtX2J5dGVzOwp9OwoK
fQojIDI5ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgiIDIKIyAxICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTZXQuaCIgMQojIDI3ICIuLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTZXQuaCIKI2RlZmluZSBIYW5kbGVT
ZXRfaCAKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgiIDEK
IyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgiCiNkZWZpbmUg
SGFuZGxlX2ggCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVR5
cGVzLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlVHlw
ZXMuaCIKI2RlZmluZSBIYW5kbGVUeXBlc19oIAoKCgpuYW1lc3BhY2UgSlNDIHsKCnR5cGVkZWYg
ZW51bSB7IH0gVW5rbm93bjsKdHlwZWRlZiBKU1ZhbHVlKiBIYW5kbGVTbG90OwoKdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IEhhbmRsZVR5cGVzIHsKICAgIHR5cGVkZWYgVCogRXh0ZXJuYWxU
eXBlOwogICAgc3RhdGljIEV4dGVybmFsVHlwZSBnZXRGcm9tU2xvdChIYW5kbGVTbG90IHNsb3Qp
IHsgcmV0dXJuIChzbG90ICYmICpzbG90KSA/IHJlaW50ZXJwcmV0X2Nhc3Q8RXh0ZXJuYWxUeXBl
PihzdGF0aWNfY2FzdDx2b2lkKj4oc2xvdC0+YXNDZWxsKCkpKSA6IDA7IH0KICAgIHN0YXRpYyBK
U1ZhbHVlIHRvSlNWYWx1ZShUKiBjZWxsKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PEpTQ2Vs
bCo+KGNlbGwpOyB9CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzdGF0aWMgdm9pZCB2YWxpZGF0
ZVVwY2FzdCgpIHsgVCogdGVtcDsgdGVtcCA9IChVKikwOyB9Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVj
dCBIYW5kbGVUeXBlczxVbmtub3duPiB7CiAgICB0eXBlZGVmIEpTVmFsdWUgRXh0ZXJuYWxUeXBl
OwogICAgc3RhdGljIEV4dGVybmFsVHlwZSBnZXRGcm9tU2xvdChIYW5kbGVTbG90IHNsb3QpIHsg
cmV0dXJuIHNsb3QgPyAqc2xvdCA6IEpTVmFsdWUoKTsgfQogICAgc3RhdGljIEpTVmFsdWUgdG9K
U1ZhbHVlKGNvbnN0IEpTVmFsdWUmIHYpIHsgcmV0dXJuIHY7IH0KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+IHN0YXRpYyB2b2lkIHZhbGlkYXRlVXBjYXN0KCkgeyB9Cn07Cgp9CiMgMzAgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oIiAyCgpuYW1lc3BhY2UgSlNDIHsK
IyA0MSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgiCnRlbXBsYXRl
IDxjbGFzcyBUPiBjbGFzcyBIYW5kbGU7CgoKdGVtcGxhdGUgPD4gY2xhc3MgSGFuZGxlPEpTVmFs
dWU+OwoKY2xhc3MgSGFuZGxlQmFzZSB7CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gZnJpZW5k
IGNsYXNzIFdlYWs7CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gZnJpZW5kIGNsYXNzIFN0cm9u
ZzsKICAgIGZyaWVuZCBjbGFzcyBIYW5kbGVTZXQ7CiAgICBmcmllbmQgc3RydWN0IEpTQ2FsbGJh
Y2tPYmplY3REYXRhOwoKcHVibGljOgogICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVy
biAhbV9zbG90IHx8ICEqbV9zbG90OyB9CgogICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2xvdCAmJiAqbV9zbG90OyB9CgogICAgSGFuZGxlU2xvdCBzbG90KCkg
Y29uc3QgeyByZXR1cm4gbV9zbG90OyB9Cgpwcm90ZWN0ZWQ6CiAgICBIYW5kbGVCYXNlKEhhbmRs
ZVNsb3Qgc2xvdCkKICAgICAgICA6IG1fc2xvdChzbG90KQogICAgewogICAgfQoKICAgIHZvaWQg
c3dhcChIYW5kbGVCYXNlJiBvdGhlcikgeyBzdGQ6OnN3YXAobV9zbG90LCBvdGhlci5tX3Nsb3Qp
OyB9CgogICAgdm9pZCBzZXRTbG90KEhhbmRsZVNsb3Qgc2xvdCkKICAgIHsKICAgICAgICBtX3Ns
b3QgPSBzbG90OwogICAgfQoKcHJpdmF0ZToKICAgIEhhbmRsZVNsb3QgbV9zbG90Owp9OwoKdGVt
cGxhdGUgPHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIFQ+IHN0cnVjdCBIYW5kbGVDb252ZXJ0ZXIg
ewogICAgVCogb3BlcmF0b3ItPigpCiAgICB7CiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEJh
c2UqPih0aGlzKS0+Z2V0KCk7CiAgICB9CiAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QK
ICAgIHsKICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQo
KTsKICAgIH0KCiAgICBUKiBvcGVyYXRvciooKQogICAgewogICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxCYXNlKj4odGhpcyktPmdldCgpOwogICAgfQogICAgY29uc3QgVCogb3BlcmF0b3IqKCkg
Y29uc3QKICAgIHsKICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMp
LT5nZXQoKTsKICAgIH0KfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBCYXNlPiBzdHJ1Y3QgSGFuZGxl
Q29udmVydGVyPEJhc2UsIFVua25vd24+IHsKICAgIEhhbmRsZTxKU09iamVjdD4gYXNPYmplY3Qo
KSBjb25zdDsKICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IHJldHVybiBqc1ZhbHVlKCkuaXNP
YmplY3QoKTsgfQogICAgYm9vbCBnZXROdW1iZXIoZG91YmxlIG51bWJlcikgY29uc3QgeyByZXR1
cm4ganNWYWx1ZSgpLmdldE51bWJlcihudW1iZXIpOyB9CiAgICBXVEY6OlN0cmluZyBnZXRTdHJp
bmcoRXhlY1N0YXRlKikgY29uc3Q7CiAgICBib29sIGlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3Qg
eyByZXR1cm4ganNWYWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCk7IH0KCnByaXZhdGU6CiAgICBK
U1ZhbHVlIGpzVmFsdWUoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBCYXNlKj4odGhpcyktPmdldCgpOwogICAgfQp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNsYXNzIEhhbmRsZSA6IHB1YmxpYyBIYW5kbGVCYXNlLCBwdWJsaWMgSGFuZGxlQ29udmVydGVy
PEhhbmRsZTxUPiwgVD4gewpwdWJsaWM6CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5h
bWUgQj4gZnJpZW5kIHN0cnVjdCBIYW5kbGVDb252ZXJ0ZXI7CiAgICB0eXBlZGVmIHR5cGVuYW1l
IEhhbmRsZVR5cGVzPFQ+OjpFeHRlcm5hbFR5cGUgRXh0ZXJuYWxUeXBlOwogICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFU+IEhhbmRsZShIYW5kbGU8VT4gbykKICAgIHsKICAgICAgICB0eXBlbmFtZSBI
YW5kbGVUeXBlczxUPjo6dGVtcGxhdGUgdmFsaWRhdGVVcGNhc3Q8VT4oKTsKICAgICAgICBzZXRT
bG90KG8uc2xvdCgpKTsKICAgIH0KCiAgICB2b2lkIHN3YXAoSGFuZGxlJiBvdGhlcikgeyBIYW5k
bGVCYXNlOjpzd2FwKG90aGVyKTsgfQoKICAgIEV4dGVybmFsVHlwZSBnZXQoKSBjb25zdCB7IHJl
dHVybiBIYW5kbGVUeXBlczxUPjo6Z2V0RnJvbVNsb3QodGhpcy0+c2xvdCgpKTsgfQoKcHJvdGVj
dGVkOgogICAgSGFuZGxlKEhhbmRsZVNsb3Qgc2xvdCA9IDApCiAgICAgICAgOiBIYW5kbGVCYXNl
KHNsb3QpCiAgICB7CiAgICB9Cgpwcml2YXRlOgogICAgZnJpZW5kIGNsYXNzIEhhbmRsZVNldDsK
ICAgIGZyaWVuZCBjbGFzcyBXZWFrQmxvY2s7CgogICAgc3RhdGljIEhhbmRsZTxUPiB3cmFwU2xv
dChIYW5kbGVTbG90IHNsb3QpCiAgICB7CiAgICAgICAgcmV0dXJuIEhhbmRsZTxUPihzbG90KTsK
ICAgIH0KfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBCYXNlPiBIYW5kbGU8SlNPYmplY3Q+IEhhbmRs
ZUNvbnZlcnRlcjxCYXNlLCBVbmtub3duPjo6YXNPYmplY3QoKSBjb25zdAp7CiAgICByZXR1cm4g
SGFuZGxlPEpTT2JqZWN0Pjo6d3JhcFNsb3Qoc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMp
LT5zbG90KCkpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBIYW5kbGU8VD4mIGEsIGNvbnN0IEhhbmRsZTxVPiYgYikKewog
ICAgcmV0dXJuIGEuZ2V0KCkgPT0gYi5nZXQoKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSGFuZGxlPFQ+JiBhLCBVKiBi
KQp7CiAgICByZXR1cm4gYS5nZXQoKSA9PSBiOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBhLCBjb25zdCBIYW5kbGU8VT4mIGIp
CnsKICAgIHJldHVybiBhID09IGIuZ2V0KCk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhhbmRsZTxUPiYgYSwgY29uc3Qg
SGFuZGxlPFU+JiBiKQp7CiAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOwp9Cgp0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBI
YW5kbGU8VD4mIGEsIFUqIGIpCnsKICAgIHJldHVybiBhLmdldCgpICE9IGI7Cn0KCnRlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNv
bnN0IEhhbmRsZTxVPiYgYikKewogICAgcmV0dXJuIGEgIT0gYi5nZXQoKTsKfQoKdGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFu
ZGxlPFQ+JiBhLCBKU1ZhbHVlIGIpCnsKICAgIHJldHVybiBhLmdldCgpICE9IGI7Cn0KCnRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KEpTVmFs
dWUgYSwgY29uc3QgSGFuZGxlPFU+JiBiKQp7CiAgICByZXR1cm4gYSAhPSBiLmdldCgpOwp9Cgp9
CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVNldC5oIiAyCiMg
MSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlQmxvY2suaCIgMQojIDI3
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVCbG9jay5oIgojZGVmaW5l
IEhhbmRsZUJsb2NrX2ggCgoKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgSGFuZGxlU2V0OwpjbGFz
cyBIYW5kbGVOb2RlOwoKY2xhc3MgSGFuZGxlQmxvY2sgOiBwdWJsaWMgRG91Ymx5TGlua2VkTGlz
dE5vZGU8SGFuZGxlQmxvY2s+IHsKICAgIGZyaWVuZCBjbGFzcyBXVEY6OkRvdWJseUxpbmtlZExp
c3ROb2RlPEhhbmRsZUJsb2NrPjsKcHVibGljOgogICAgc3RhdGljIEhhbmRsZUJsb2NrKiBjcmVh
dGUoSGFuZGxlU2V0Kik7CiAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEhhbmRsZUJsb2NrKik7CiAg
ICBzdGF0aWMgSGFuZGxlQmxvY2sqIGJsb2NrRm9yKEhhbmRsZU5vZGUqKTsKCiAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGJsb2NrU2l6ZSA9IDQgKiBLQjsKCiAgICBIYW5kbGVTZXQqIGhhbmRsZVNl
dCgpOwoKICAgIEhhbmRsZU5vZGUqIG5vZGVzKCk7CiAgICBIYW5kbGVOb2RlKiBub2RlQXRJbmRl
eCh1bnNpZ25lZCk7CiAgICB1bnNpZ25lZCBub2RlQ2FwYWNpdHkoKTsKCnByaXZhdGU6CiAgICBI
YW5kbGVCbG9jayhIYW5kbGVTZXQqKTsKCiAgICBjaGFyKiBwYXlsb2FkKCk7CiAgICBjaGFyKiBw
YXlsb2FkRW5kKCk7CgogICAgc3RhdGljIGNvbnN0IHNpemVfdCBzX2Jsb2NrTWFzayA9IH4oYmxv
Y2tTaXplIC0gMSk7CgogICAgSGFuZGxlQmxvY2sqIG1fcHJldjsKICAgIEhhbmRsZUJsb2NrKiBt
X25leHQ7CiAgICBIYW5kbGVTZXQqIG1faGFuZGxlU2V0Owp9OwoKaW5saW5lIEhhbmRsZUJsb2Nr
KiBIYW5kbGVCbG9jazo6YmxvY2tGb3IoSGFuZGxlTm9kZSogbm9kZSkKewogICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8SGFuZGxlQmxvY2sqPihyZWludGVycHJldF9jYXN0PHNpemVfdD4obm9k
ZSkgJiBzX2Jsb2NrTWFzayk7Cn0KCmlubGluZSBIYW5kbGVTZXQqIEhhbmRsZUJsb2NrOjpoYW5k
bGVTZXQoKQp7CiAgICByZXR1cm4gbV9oYW5kbGVTZXQ7Cn0KCn0KIyAzMSAiLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU2V0LmgiIDIKCiMgMSAiLi4vLi4vU291cmNlL1dU
Ri93dGYvSGFzaENvdW50ZWRTZXQuaCIgMQojIDIyICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9IYXNo
Q291bnRlZFNldC5oIgojZGVmaW5lIFdURl9IYXNoQ291bnRlZFNldF9oIAoKCgoKCgpuYW1lc3Bh
Y2UgV1RGIHsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucyA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPFZhbHVlPjo6SGFzaCwgdHlwZW5hbWUgVHJhaXRz
ID0gSGFzaFRyYWl0czxWYWx1ZT4+CiAgICBjbGFzcyBIYXNoQ291bnRlZFNldCBmaW5hbCB7CiAg
ICAgICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVy
biBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsg
fSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFs
bG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RG
cmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldU
Rjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsg
OjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxU
YWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHByaXZh
dGU6IHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFj
cm87CiAgICBwcml2YXRlOgogICAgICAgIHR5cGVkZWYgSGFzaE1hcDxWYWx1ZSwgdW5zaWduZWQs
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cz4gSW1wbFR5cGU7CiAgICBwdWJsaWM6CiAgICAgICAgdHlw
ZWRlZiBWYWx1ZSBWYWx1ZVR5cGU7CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJbXBsVHlwZTo6
aXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJbXBsVHlwZTo6Y29u
c3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJbXBs
VHlwZTo6QWRkUmVzdWx0IEFkZFJlc3VsdDsKCiAgICAgICAgSGFzaENvdW50ZWRTZXQoKQogICAg
ICAgIHsKICAgICAgICB9CgogICAgICAgIEhhc2hDb3VudGVkU2V0KHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDx0eXBlbmFtZSBJbXBsVHlwZTo6S2V5VmFsdWVQYWlyVHlwZT4gaW5pdGlhbGl6ZXJMaXN0
KQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBrZXlWYWx1ZVBhaXIgOiBp
bml0aWFsaXplckxpc3QpCiAgICAgICAgICAgICAgICBhZGQoa2V5VmFsdWVQYWlyLmtleSwga2V5
VmFsdWVQYWlyLnZhbHVlKTsKICAgICAgICB9CgogICAgICAgIEhhc2hDb3VudGVkU2V0KHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDx0eXBlbmFtZSBJbXBsVHlwZTo6S2V5VHlwZT4gaW5pdGlhbGl6ZXJM
aXN0KQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiB2YWx1ZSA6IGluaXRp
YWxpemVyTGlzdCkKICAgICAgICAgICAgICAgIGFkZCh2YWx1ZSk7CiAgICAgICAgfQoKICAgICAg
ICB2b2lkIHN3YXAoSGFzaENvdW50ZWRTZXQmKTsKCiAgICAgICAgdW5zaWduZWQgc2l6ZSgpIGNv
bnN0OwogICAgICAgIHVuc2lnbmVkIGNhcGFjaXR5KCkgY29uc3Q7CiAgICAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3Q7CgoKICAgICAgICBpdGVyYXRvciBiZWdpbigpOwogICAgICAgIGl0ZXJhdG9y
IGVuZCgpOwogICAgICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CiAgICAgICAgY29u
c3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7CgogICAgICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgVmFs
dWVUeXBlJik7CiAgICAgICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBWYWx1ZVR5cGUmKSBj
b25zdDsKICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IFZhbHVlVHlwZSYpIGNvbnN0OwogICAg
ICAgIHVuc2lnbmVkIGNvdW50KGNvbnN0IFZhbHVlVHlwZSYpIGNvbnN0OwoKCgoKICAgICAgICBB
ZGRSZXN1bHQgYWRkKGNvbnN0IFZhbHVlVHlwZSYpOwogICAgICAgIEFkZFJlc3VsdCBhZGQoVmFs
dWVUeXBlJiYpOwoKCiAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmLCB1bnNp
Z25lZCk7CiAgICAgICAgQWRkUmVzdWx0IGFkZChWYWx1ZVR5cGUmJiwgdW5zaWduZWQpOwoKCgog
ICAgICAgIGJvb2wgcmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYpOwogICAgICAgIGJvb2wgcmVtb3Zl
KGl0ZXJhdG9yKTsKCgoKICAgICAgICBib29sIHJlbW92ZUFsbChpdGVyYXRvcik7CiAgICAgICAg
Ym9vbCByZW1vdmVBbGwoY29uc3QgVmFsdWVUeXBlJik7CgoKICAgICAgICB2b2lkIGNsZWFyKCk7
CgoKICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBlPiB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgaXRlcmF0b3I+Ojp0eXBlIGZpbmQodHlw
ZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlKTsKICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWID0gVmFsdWVUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2
YWx1ZSwgY29uc3RfaXRlcmF0b3I+Ojp0eXBlIGZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+
OjpQdHJUeXBlKSBjb25zdDsKICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBl
PiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgYm9vbD46OnR5
cGUgY29udGFpbnModHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlKSBjb25zdDsKICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgdW5zaWduZWQ+Ojp0eXBlIGNvdW50KHR5cGVuYW1l
IEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSkgY29uc3Q7CiAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgViA9IFZhbHVlVHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6
dmFsdWUsIGJvb2w+Ojp0eXBlIHJlbW92ZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5
cGUpOwoKICAgIHByaXZhdGU6CiAgICAgICAgSW1wbFR5cGUgbV9pbXBsOwogICAgfTsKCgogICAg
dGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cz4KICAgIGlubGluZSB2b2lkIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHM+Ojpzd2FwKEhhc2hDb3VudGVkU2V0JiBvdGhlcikKICAgIHsKICAgICAgICBt
X2ltcGwuc3dhcChvdGhlci5tX2ltcGwpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICBpbmxpbmUg
dW5zaWduZWQgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnNp
emUoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX2ltcGwuc2l6ZSgpOwogICAgfQoKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHM+CiAgICBpbmxpbmUgdW5zaWduZWQgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cz46OmNhcGFjaXR5KCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4g
bV9pbXBsLmNhcGFjaXR5KCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KICAgIGlubGluZSBib29sIEhh
c2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojppc0VtcHR5KCkgY29u
c3QKICAgIHsKICAgICAgICByZXR1cm4gc2l6ZSgpID09IDA7CiAgICB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4K
ICAgIGlubGluZSB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzPjo6aXRlcmF0b3IgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cz46OmJlZ2luKCkKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLmJlZ2luKCk7CiAgICB9
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cz4KICAgIGlubGluZSB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6aXRlcmF0b3IgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cz46OmVuZCgpCiAgICB7CiAgICAgICAgcmV0dXJuIG1faW1wbC5l
bmQoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgogICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVk
U2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNoQ291
bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YmVnaW4oKSBjb25zdAogICAg
ewogICAgICAgIHJldHVybiBtX2ltcGwuYmVnaW4oKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgogICAg
aW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHM+Ojpjb25zdF9pdGVyYXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzPjo6ZW5kKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLmVuZCgpOwog
ICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHM+CiAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFs
dWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46Oml0ZXJhdG9yIEhhc2hDb3VudGVkU2V0PFZhbHVl
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpmaW5kKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpCiAg
ICB7CiAgICAgICAgcmV0dXJuIG1faW1wbC5maW5kKHZhbHVlKTsKICAgIH0KCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRz
PgogICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzPjo6ZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdAogICAgewog
ICAgICAgIHJldHVybiBtX2ltcGwuZmluZCh2YWx1ZSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KICAg
IGlubGluZSBib29sIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+
Ojpjb250YWlucyhjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdAogICAgewogICAgICAgIHJl
dHVybiBtX2ltcGwuY29udGFpbnModmFsdWUpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICBpbmxp
bmUgdW5zaWduZWQgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46
OmNvdW50KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJu
IG1faW1wbC5nZXQodmFsdWUpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICBpbmxpbmUgdHlwZW5h
bWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OkFkZFJlc3Vs
dCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKGNvbnN0
IFZhbHVlVHlwZSAmdmFsdWUpCiAgICB7CiAgICAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IG1faW1w
bC5hZGQodmFsdWUsIDApOwogICAgICAgICsrcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICBpbmxpbmUgdHlwZW5hbWUg
SGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OkFkZFJlc3VsdCBI
YXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKFZhbHVlVHlw
ZSYmIHZhbHVlKQogICAgewogICAgICAgIEFkZFJlc3VsdCByZXN1bHQgPSBtX2ltcGwuYWRkKHN0
ZDo6Zm9yd2FyZDxWYWx1ZT4odmFsdWUpLCAwKTsKICAgICAgICArK3Jlc3VsdC5pdGVyYXRvci0+
dmFsdWU7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgogICAgaW5s
aW5lIHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+
OjpBZGRSZXN1bHQgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46
OmFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlLCB1bnNpZ25lZCBjb3VudCkKICAgIHsKICAgICAg
ICBBZGRSZXN1bHQgcmVzdWx0ID0gbV9pbXBsLmFkZCh2YWx1ZSwgMCk7CiAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSArPSBjb3VudDsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHM+CiAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cz46OkFkZFJlc3VsdCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKFZhbHVlVHlwZSYmIHZhbHVlLCB1bnNpZ25lZCBjb3Vu
dCkKICAgIHsKICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gbV9pbXBsLmFkZChzdGQ6OmZvcndh
cmQ8VmFsdWU+KHZhbHVlKSwgMCk7CiAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSBj
b3VudDsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICBpbmxp
bmUgYm9vbCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6cmVt
b3ZlKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuIHJlbW92ZShm
aW5kKHZhbHVlKSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KICAgIGlubGluZSBib29sIEhhc2hDb3Vu
dGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1vdmUoaXRlcmF0b3IgaXQp
CiAgICB7CiAgICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7
CgogICAgICAgIHVuc2lnbmVkIG9sZFZhbCA9IGl0LT52YWx1ZTsKICAgICAgICAoKHZvaWQpMCk7
CiAgICAgICAgdW5zaWduZWQgbmV3VmFsID0gb2xkVmFsIC0gMTsKICAgICAgICBpZiAobmV3VmFs
KSB7CiAgICAgICAgICAgIGl0LT52YWx1ZSA9IG5ld1ZhbDsKICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgIH0KCiAgICAgICAgbV9pbXBsLnJlbW92ZShpdCk7CiAgICAgICAgcmV0dXJu
IHRydWU7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KICAgIGlubGluZSBib29sIEhhc2hDb3VudGVkU2V0
PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1vdmVBbGwoY29uc3QgVmFsdWVUeXBl
JiB2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gcmVtb3ZlQWxsKGZpbmQodmFsdWUpKTsKICAg
IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzPgogICAgaW5saW5lIGJvb2wgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cz46OnJlbW92ZUFsbChpdGVyYXRvciBpdCkKICAgIHsKICAgICAg
ICBpZiAoaXQgPT0gZW5kKCkpCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgICAgbV9p
bXBsLnJlbW92ZShpdCk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4K
ICAgIGlubGluZSB2b2lkIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHM+OjpjbGVhcigpCiAgICB7CiAgICAgICAgbV9pbXBsLmNsZWFyKCk7CiAgICB9CgogICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cywgdHlwZW5hbWUgVmVjdG9yVHlwZT4KICAgIGlubGluZSB2b2lkIGNvcHlUb1ZlY3Rvcihj
b25zdCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPiYgY29sbGVj
dGlvbiwgVmVjdG9yVHlwZSYgdmVjdG9yKQogICAgewogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
SGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNvbnN0X2l0ZXJh
dG9yIGl0ZXJhdG9yOwoKICAgICAgICB2ZWN0b3IucmVzaXplKGNvbGxlY3Rpb24uc2l6ZSgpKTsK
CiAgICAgICAgaXRlcmF0b3IgaXQgPSBjb2xsZWN0aW9uLmJlZ2luKCk7CiAgICAgICAgaXRlcmF0
b3IgZW5kID0gY29sbGVjdGlvbi5lbmQoKTsKICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
dCAhPSBlbmQ7ICsraXQsICsraSkKICAgICAgICAgICAgdmVjdG9yW2ldID0gKml0OwogICAgfQoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHM+CiAgICBpbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3IoY29uc3QgSGFzaENvdW50
ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz4mIGNvbGxlY3Rpb24sIFZlY3RvcjxW
YWx1ZT4mIHZlY3RvcikKICAgIHsKICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hDb3VudGVk
U2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRv
cjsKCiAgICAgICAgdmVjdG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNpemUoKSk7CgogICAgICAgIGl0
ZXJhdG9yIGl0ID0gY29sbGVjdGlvbi5iZWdpbigpOwogICAgICAgIGl0ZXJhdG9yIGVuZCA9IGNv
bGxlY3Rpb24uZW5kKCk7CiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaXQgIT0gZW5kOyAr
K2l0LCArK2kpCiAgICAgICAgICAgIHZlY3RvcltpXSA9ICgqaXQpLmtleTsKICAgIH0KCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4KICAgIGlubGluZSBhdXRvIEhhc2hDb3Vu
dGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpmaW5kKHR5cGVuYW1lIEdldFB0
ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNT
bWFydFB0cjxWPjo6dmFsdWUsIGl0ZXJhdG9yPjo6dHlwZQogICAgewogICAgICAgIHJldHVybiBt
X2ltcGwuZmluZCh2YWx1ZSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFY+CiAgICBpbmxpbmUgYXV0byBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzPjo6ZmluZCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUgdmFsdWUp
IGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVlLCBj
b25zdF9pdGVyYXRvcj46OnR5cGUKICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsLmZpbmQodmFs
dWUpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgogICAgaW5s
aW5lIGF1dG8gSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNv
bnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgY29uc3QgLT4g
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBl
CiAgICB7CiAgICAgICAgcmV0dXJuIG1faW1wbC5jb250YWlucyh2YWx1ZSk7CiAgICB9CgogICAg
dGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cz4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+CiAgICBpbmxpbmUgYXV0byBIYXNoQ291
bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y291bnQodHlwZW5hbWUgR2V0
UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgdW5zaWduZWQ+Ojp0eXBlCiAgICB7CiAgICAgICAg
cmV0dXJuIG1faW1wbC5nZXQodmFsdWUpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWPgogICAgaW5saW5lIGF1dG8gSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cz46OnJlbW92ZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5
cGUgdmFsdWUpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVl
LCBib29sPjo6dHlwZQogICAgewogICAgICAgIHJldHVybiByZW1vdmUoZmluZCh2YWx1ZSkpOwog
ICAgfQoKfQoKdXNpbmcgV1RGOjpIYXNoQ291bnRlZFNldDsKIyAzMyAiLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU2V0LmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0
Zi9TZW50aW5lbExpbmtlZExpc3QuaCIgMQojIDM4ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9TZW50
aW5lbExpbmtlZExpc3QuaCIKI2RlZmluZSBTZW50aW5lbExpbmtlZExpc3RfaCAKCm5hbWVzcGFj
ZSBXVEYgewoKZW51bSBTZW50aW5lbFRhZyB7IFNlbnRpbmVsIH07Cgp0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgpjbGFzcyBCYXNpY1Jhd1NlbnRpbmVsTm9kZSB7CiAgICBwdWJsaWM6IHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3
W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRv
ciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZv
aWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2
b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gcHJpdmF0ZTogdHlwZWRlZiBpbnQgX190aGlzSXNI
ZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybzsKcHVibGljOgogICAgQmFzaWNSYXdT
ZW50aW5lbE5vZGUoU2VudGluZWxUYWcpCiAgICAgICAgOiBtX25leHQoMCkKICAgICAgICAsIG1f
cHJldigwKQogICAgewogICAgfQoKICAgIEJhc2ljUmF3U2VudGluZWxOb2RlKCkKICAgICAgICA6
IG1fbmV4dCgwKQogICAgICAgICwgbV9wcmV2KDApCiAgICB7CiAgICB9CgogICAgdm9pZCBzZXRQ
cmV2KEJhc2ljUmF3U2VudGluZWxOb2RlKiBwcmV2KSB7IG1fcHJldiA9IHByZXY7IH0KICAgIHZv
aWQgc2V0TmV4dChCYXNpY1Jhd1NlbnRpbmVsTm9kZSogbmV4dCkgeyBtX25leHQgPSBuZXh0OyB9
CgogICAgVCogcHJldigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX3ByZXYpOyB9CiAgICBU
KiBuZXh0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1fbmV4dCk7IH0KCiAgICBib29sIGlz
T25MaXN0KCkgY29uc3QKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuICEh
bV9wcmV2OwogICAgfQoKICAgIHZvaWQgcmVtb3ZlKCk7CgogICAgdm9pZCBwcmVwZW5kKEJhc2lj
UmF3U2VudGluZWxOb2RlKik7CiAgICB2b2lkIGFwcGVuZChCYXNpY1Jhd1NlbnRpbmVsTm9kZSop
OwoKcHJpdmF0ZToKICAgIEJhc2ljUmF3U2VudGluZWxOb2RlKiBtX25leHQ7CiAgICBCYXNpY1Jh
d1NlbnRpbmVsTm9kZSogbV9wcmV2Owp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFJhd05vZGUgPSBUPiBjbGFzcyBTZW50aW5lbExpbmtlZExpc3QgewpwdWJsaWM6CiAgICB0eXBl
ZGVmIFQqIGl0ZXJhdG9yOwoKICAgIFNlbnRpbmVsTGlua2VkTGlzdCgpOwoKCiAgICB2b2lkIHB1
c2goVCopOwoKCiAgICB2b2lkIGFwcGVuZChUKik7CgogICAgc3RhdGljIHZvaWQgcmVtb3ZlKFQq
KTsKICAgIHN0YXRpYyB2b2lkIHByZXBlbmQoVCogZXhpc3RpbmdOb2RlLCBUKiBuZXdOb2RlKTsK
ICAgIHN0YXRpYyB2b2lkIGFwcGVuZChUKiBleGlzdGluZ05vZGUsIFQqIG5ld05vZGUpOwoKICAg
IGJvb2wgaXNPbkxpc3QoVCopOwoKICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICBpdGVyYXRvciBl
bmQoKTsKCiAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBiZWdpbigpID09IGVuZCgpOyB9Cgpw
cml2YXRlOgogICAgUmF3Tm9kZSBtX2hlYWRTZW50aW5lbDsKICAgIFJhd05vZGUgbV90YWlsU2Vu
dGluZWw7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBCYXNpY1Jhd1NlbnRpbmVsTm9k
ZTxUPjo6cmVtb3ZlKCkKewogICAgU2VudGluZWxMaW5rZWRMaXN0PFQsIEJhc2ljUmF3U2VudGlu
ZWxOb2RlPFQ+Pjo6cmVtb3ZlKHN0YXRpY19jYXN0PFQqPih0aGlzKSk7Cn0KCnRlbXBsYXRlIDx0
eXBlbmFtZSBUPiB2b2lkIEJhc2ljUmF3U2VudGluZWxOb2RlPFQ+OjpwcmVwZW5kKEJhc2ljUmF3
U2VudGluZWxOb2RlKiBub2RlKQp7CiAgICBTZW50aW5lbExpbmtlZExpc3Q8VCwgQmFzaWNSYXdT
ZW50aW5lbE5vZGU8VD4+OjpwcmVwZW5kKAogICAgICAgIHN0YXRpY19jYXN0PFQqPih0aGlzKSwg
c3RhdGljX2Nhc3Q8VCo+KG5vZGUpKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgQmFz
aWNSYXdTZW50aW5lbE5vZGU8VD46OmFwcGVuZChCYXNpY1Jhd1NlbnRpbmVsTm9kZSogbm9kZSkK
ewogICAgU2VudGluZWxMaW5rZWRMaXN0PFQsIEJhc2ljUmF3U2VudGluZWxOb2RlPFQ+Pjo6YXBw
ZW5kKAogICAgICAgIHN0YXRpY19jYXN0PFQqPih0aGlzKSwgc3RhdGljX2Nhc3Q8VCo+KG5vZGUp
KTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFJhd05vZGU+IGlubGluZSBTZW50
aW5lbExpbmtlZExpc3Q8VCwgUmF3Tm9kZT46OlNlbnRpbmVsTGlua2VkTGlzdCgpCiAgICA6IG1f
aGVhZFNlbnRpbmVsKFNlbnRpbmVsKQogICAgLCBtX3RhaWxTZW50aW5lbChTZW50aW5lbCkKewog
ICAgbV9oZWFkU2VudGluZWwuc2V0TmV4dCgmbV90YWlsU2VudGluZWwpOwogICAgbV9oZWFkU2Vu
dGluZWwuc2V0UHJldigwKTsKCiAgICBtX3RhaWxTZW50aW5lbC5zZXRQcmV2KCZtX2hlYWRTZW50
aW5lbCk7CiAgICBtX3RhaWxTZW50aW5lbC5zZXROZXh0KDApOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgUmF3Tm9kZT4gaW5saW5lIHR5cGVuYW1lIFNlbnRpbmVsTGlua2VkTGlz
dDxULCBSYXdOb2RlPjo6aXRlcmF0b3IgU2VudGluZWxMaW5rZWRMaXN0PFQsIFJhd05vZGU+Ojpi
ZWdpbigpCnsKICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9oZWFkU2VudGluZWwubmV4dCgp
KTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFJhd05vZGU+IGlubGluZSB0eXBl
bmFtZSBTZW50aW5lbExpbmtlZExpc3Q8VCwgUmF3Tm9kZT46Oml0ZXJhdG9yIFNlbnRpbmVsTGlu
a2VkTGlzdDxULCBSYXdOb2RlPjo6ZW5kKCkKewogICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPigm
bV90YWlsU2VudGluZWwpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUmF3Tm9k
ZT4gaW5saW5lIHZvaWQgU2VudGluZWxMaW5rZWRMaXN0PFQsIFJhd05vZGU+OjpwdXNoKFQqIG5v
ZGUpCnsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKCiAgICBS
YXdOb2RlKiBwcmV2ID0gJm1faGVhZFNlbnRpbmVsOwogICAgUmF3Tm9kZSogbmV4dCA9IG1faGVh
ZFNlbnRpbmVsLm5leHQoKTsKCiAgICBub2RlLT5zZXRQcmV2KHByZXYpOwogICAgbm9kZS0+c2V0
TmV4dChuZXh0KTsKCiAgICBwcmV2LT5zZXROZXh0KG5vZGUpOwogICAgbmV4dC0+c2V0UHJldihu
b2RlKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFJhd05vZGU+IGlubGluZSB2
b2lkIFNlbnRpbmVsTGlua2VkTGlzdDxULCBSYXdOb2RlPjo6YXBwZW5kKFQqIG5vZGUpCnsKICAg
ICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKCiAgICBSYXdOb2RlKiBw
cmV2ID0gbV90YWlsU2VudGluZWwucHJldigpOwogICAgUmF3Tm9kZSogbmV4dCA9ICZtX3RhaWxT
ZW50aW5lbDsKCiAgICBub2RlLT5zZXRQcmV2KHByZXYpOwogICAgbm9kZS0+c2V0TmV4dChuZXh0
KTsKCiAgICBwcmV2LT5zZXROZXh0KG5vZGUpOwogICAgbmV4dC0+c2V0UHJldihub2RlKTsKfQoK
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFJhd05vZGU+IGlubGluZSB2b2lkIFNlbnRp
bmVsTGlua2VkTGlzdDxULCBSYXdOb2RlPjo6cmVtb3ZlKFQqIG5vZGUpCnsKICAgICgodm9pZCkw
KTsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKCiAgICBSYXdOb2RlKiBwcmV2ID0gbm9k
ZS0+cHJldigpOwogICAgUmF3Tm9kZSogbmV4dCA9IG5vZGUtPm5leHQoKTsKCiAgICBwcmV2LT5z
ZXROZXh0KG5leHQpOwogICAgbmV4dC0+c2V0UHJldihwcmV2KTsKCiAgICBub2RlLT5zZXRQcmV2
KDApOwogICAgbm9kZS0+c2V0TmV4dCgwKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFJhd05vZGU+CmlubGluZSB2b2lkIFNlbnRpbmVsTGlua2VkTGlzdDxULCBSYXdOb2RlPjo6
cHJlcGVuZChUKiBleGlzdGluZ05vZGUsIFQqIG5ld05vZGUpCnsKICAgICgodm9pZCkwKTsKICAg
ICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsK
ICAgICgodm9pZCkwKTsKCiAgICBSYXdOb2RlKiBwcmV2ID0gZXhpc3RpbmdOb2RlLT5wcmV2KCk7
CgogICAgbmV3Tm9kZS0+c2V0TmV4dChleGlzdGluZ05vZGUpOwogICAgbmV3Tm9kZS0+c2V0UHJl
dihwcmV2KTsKCiAgICBwcmV2LT5zZXROZXh0KG5ld05vZGUpOwogICAgZXhpc3RpbmdOb2RlLT5z
ZXRQcmV2KG5ld05vZGUpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUmF3Tm9k
ZT4KaW5saW5lIHZvaWQgU2VudGluZWxMaW5rZWRMaXN0PFQsIFJhd05vZGU+OjphcHBlbmQoVCog
ZXhpc3RpbmdOb2RlLCBUKiBuZXdOb2RlKQp7CiAgICAoKHZvaWQpMCk7CiAgICAoKHZvaWQpMCk7
CiAgICAoKHZvaWQpMCk7CiAgICAoKHZvaWQpMCk7CiAgICAoKHZvaWQpMCk7CiAgICAoKHZvaWQp
MCk7CgogICAgUmF3Tm9kZSogbmV4dCA9IGV4aXN0aW5nTm9kZS0+bmV4dCgpOwoKICAgIG5ld05v
ZGUtPnNldE5leHQobmV4dCk7CiAgICBuZXdOb2RlLT5zZXRQcmV2KGV4aXN0aW5nTm9kZSk7Cgog
ICAgbmV4dC0+c2V0UHJldihuZXdOb2RlKTsKICAgIGV4aXN0aW5nTm9kZS0+c2V0TmV4dChuZXdO
b2RlKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFJhd05vZGU+IGlubGluZSBi
b29sIFNlbnRpbmVsTGlua2VkTGlzdDxULCBSYXdOb2RlPjo6aXNPbkxpc3QoVCogbm9kZSkKewog
ICAgaWYgKCFub2RlLT5pc09uTGlzdCgpKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICBmb3Ig
KFQqIGl0ZXIgPSBiZWdpbigpOyBpdGVyICE9IGVuZCgpOyBpdGVyID0gaXRlci0+bmV4dCgpKSB7
CiAgICAgICAgaWYgKGl0ZXIgPT0gbm9kZSkKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9
CgogICAgcmV0dXJuIGZhbHNlOwp9Cgp9Cgp1c2luZyBXVEY6OkJhc2ljUmF3U2VudGluZWxOb2Rl
Owp1c2luZyBXVEY6OlNlbnRpbmVsTGlua2VkTGlzdDsKIyAzNCAiLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGFuZGxlU2V0LmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9T
aW5nbHlMaW5rZWRMaXN0LmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL1dURi93dGYvU2luZ2x5TGlu
a2VkTGlzdC5oIgojZGVmaW5lIFNpbmdseUxpbmtlZExpc3RfaCAKCm5hbWVzcGFjZSBXVEYgewoK
dGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+IGNsYXNzIFNpbmdseUxpbmtlZExpc3QgewpwdWJsaWM6
CiAgICBTaW5nbHlMaW5rZWRMaXN0KCk7CgogICAgYm9vbCBpc0VtcHR5KCk7CgogICAgdm9pZCBw
dXNoKE5vZGUqKTsKICAgIE5vZGUqIHBvcCgpOwoKcHJpdmF0ZToKICAgIE5vZGUqIG1faGVhZDsK
fTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlPiBpbmxpbmUgU2luZ2x5TGlua2VkTGlzdDxOb2Rl
Pjo6U2luZ2x5TGlua2VkTGlzdCgpCiAgICA6IG1faGVhZCgwKQp7Cn0KCnRlbXBsYXRlIDx0eXBl
bmFtZSBOb2RlPiBpbmxpbmUgYm9vbCBTaW5nbHlMaW5rZWRMaXN0PE5vZGU+Ojppc0VtcHR5KCkK
ewogICAgcmV0dXJuICFtX2hlYWQ7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlPiBpbmxpbmUg
dm9pZCBTaW5nbHlMaW5rZWRMaXN0PE5vZGU+OjpwdXNoKE5vZGUqIG5vZGUpCnsKICAgICgodm9p
ZCkwKTsKICAgIG5vZGUtPnNldE5leHQobV9oZWFkKTsKICAgIG1faGVhZCA9IG5vZGU7Cn0KCnRl
bXBsYXRlIDx0eXBlbmFtZSBOb2RlPiBpbmxpbmUgTm9kZSogU2luZ2x5TGlua2VkTGlzdDxOb2Rl
Pjo6cG9wKCkKewogICAgTm9kZSogdG1wID0gbV9oZWFkOwogICAgbV9oZWFkID0gbV9oZWFkLT5u
ZXh0KCk7CiAgICByZXR1cm4gdG1wOwp9Cgp9Cgp1c2luZyBXVEY6OlNpbmdseUxpbmtlZExpc3Q7
CiMgMzUgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVNldC5oIiAyCgpu
YW1lc3BhY2UgSlNDIHsKCmNsYXNzIEhhbmRsZVNldDsKY2xhc3MgSGVhcFJvb3RWaXNpdG9yOwpj
bGFzcyBWTTsKY2xhc3MgSlNWYWx1ZTsKCmNsYXNzIEhhbmRsZU5vZGUgewpwdWJsaWM6CiAgICBI
YW5kbGVOb2RlKFdURjo6U2VudGluZWxUYWcpOwogICAgSGFuZGxlTm9kZSgpOwoKICAgIEhhbmRs
ZVNsb3Qgc2xvdCgpOwogICAgSGFuZGxlU2V0KiBoYW5kbGVTZXQoKTsKCiAgICB2b2lkIHNldFBy
ZXYoSGFuZGxlTm9kZSopOwogICAgSGFuZGxlTm9kZSogcHJldigpOwoKICAgIHZvaWQgc2V0TmV4
dChIYW5kbGVOb2RlKik7CiAgICBIYW5kbGVOb2RlKiBuZXh0KCk7Cgpwcml2YXRlOgogICAgSlNW
YWx1ZSBtX3ZhbHVlOwogICAgSGFuZGxlTm9kZSogbV9wcmV2OwogICAgSGFuZGxlTm9kZSogbV9u
ZXh0Owp9OwoKY2xhc3MgSGFuZGxlU2V0IHsKICAgIGZyaWVuZCBjbGFzcyBIYW5kbGVCbG9jazsK
cHVibGljOgogICAgc3RhdGljIEhhbmRsZVNldCogaGVhcEZvcihIYW5kbGVTbG90KTsKCiAgICBI
YW5kbGVTZXQoVk0qKTsKICAgIH5IYW5kbGVTZXQoKTsKCiAgICBWTSogdm0oKTsKCiAgICBIYW5k
bGVTbG90IGFsbG9jYXRlKCk7CiAgICB2b2lkIGRlYWxsb2NhdGUoSGFuZGxlU2xvdCk7CgogICAg
dm9pZCB2aXNpdFN0cm9uZ0hhbmRsZXMoSGVhcFJvb3RWaXNpdG9yJik7CgogICAgdm9pZCB3cml0
ZUJhcnJpZXIoSGFuZGxlU2xvdCwgY29uc3QgSlNWYWx1ZSYpOwoKICAgIHVuc2lnbmVkIHByb3Rl
Y3RlZEdsb2JhbE9iamVjdENvdW50KCk7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dm9pZCBmb3JFYWNoU3Ryb25nSGFuZGxlKEZ1bmN0b3ImLCBjb25zdCBIYXNoQ291bnRlZFNldDxK
U0NlbGwqPiYgc2tpcFNldCk7Cgpwcml2YXRlOgogICAgdHlwZWRlZiBIYW5kbGVOb2RlIE5vZGU7
CiAgICBzdGF0aWMgSGFuZGxlU2xvdCB0b0hhbmRsZShOb2RlKik7CiAgICBzdGF0aWMgTm9kZSog
dG9Ob2RlKEhhbmRsZVNsb3QpOwoKICAgIHZvaWQgZ3JvdygpOwoKCgoKCiAgICBWTSogbV92bTsK
ICAgIERvdWJseUxpbmtlZExpc3Q8SGFuZGxlQmxvY2s+IG1fYmxvY2tMaXN0OwoKICAgIFNlbnRp
bmVsTGlua2VkTGlzdDxOb2RlPiBtX3N0cm9uZ0xpc3Q7CiAgICBTZW50aW5lbExpbmtlZExpc3Q8
Tm9kZT4gbV9pbW1lZGlhdGVMaXN0OwogICAgU2luZ2x5TGlua2VkTGlzdDxOb2RlPiBtX2ZyZWVM
aXN0Owp9OwoKaW5saW5lIEhhbmRsZVNldCogSGFuZGxlU2V0OjpoZWFwRm9yKEhhbmRsZVNsb3Qg
aGFuZGxlKQp7CiAgICByZXR1cm4gdG9Ob2RlKGhhbmRsZSktPmhhbmRsZVNldCgpOwp9Cgppbmxp
bmUgVk0qIEhhbmRsZVNldDo6dm0oKQp7CiAgICByZXR1cm4gbV92bTsKfQoKaW5saW5lIEhhbmRs
ZVNsb3QgSGFuZGxlU2V0Ojp0b0hhbmRsZShIYW5kbGVTZXQ6Ok5vZGUqIG5vZGUpCnsKICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PEhhbmRsZVNsb3Q+KG5vZGUpOwp9CgppbmxpbmUgSGFuZGxl
U2V0OjpOb2RlKiBIYW5kbGVTZXQ6OnRvTm9kZShIYW5kbGVTbG90IGhhbmRsZSkKewogICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SGFuZGxlU2V0OjpOb2RlKj4oaGFuZGxlKTsKfQoKaW5saW5l
IEhhbmRsZVNsb3QgSGFuZGxlU2V0OjphbGxvY2F0ZSgpCnsKICAgIGlmIChtX2ZyZWVMaXN0Lmlz
RW1wdHkoKSkKICAgICAgICBncm93KCk7CgogICAgSGFuZGxlU2V0OjpOb2RlKiBub2RlID0gbV9m
cmVlTGlzdC5wb3AoKTsKICAgIG5ldyAoTm90TnVsbCwgbm9kZSkgSGFuZGxlU2V0OjpOb2RlKCk7
CiAgICBtX2ltbWVkaWF0ZUxpc3QucHVzaChub2RlKTsKICAgIHJldHVybiB0b0hhbmRsZShub2Rl
KTsKfQoKaW5saW5lIHZvaWQgSGFuZGxlU2V0OjpkZWFsbG9jYXRlKEhhbmRsZVNsb3QgaGFuZGxl
KQp7CiAgICBIYW5kbGVTZXQ6Ok5vZGUqIG5vZGUgPSB0b05vZGUoaGFuZGxlKTsKICAgIFNlbnRp
bmVsTGlua2VkTGlzdDxIYW5kbGVTZXQ6Ok5vZGU+OjpyZW1vdmUobm9kZSk7CiAgICBtX2ZyZWVM
aXN0LnB1c2gobm9kZSk7Cn0KCmlubGluZSBIYW5kbGVOb2RlOjpIYW5kbGVOb2RlKCkKICAgIDog
bV9wcmV2KDApCiAgICAsIG1fbmV4dCgwKQp7Cn0KCmlubGluZSBIYW5kbGVOb2RlOjpIYW5kbGVO
b2RlKFdURjo6U2VudGluZWxUYWcpCiAgICA6IG1fcHJldigwKQogICAgLCBtX25leHQoMCkKewp9
CgppbmxpbmUgSGFuZGxlU2xvdCBIYW5kbGVOb2RlOjpzbG90KCkKewogICAgcmV0dXJuICZtX3Zh
bHVlOwp9CgppbmxpbmUgSGFuZGxlU2V0KiBIYW5kbGVOb2RlOjpoYW5kbGVTZXQoKQp7CiAgICBy
ZXR1cm4gSGFuZGxlQmxvY2s6OmJsb2NrRm9yKHRoaXMpLT5oYW5kbGVTZXQoKTsKfQoKaW5saW5l
IHZvaWQgSGFuZGxlTm9kZTo6c2V0UHJldihIYW5kbGVOb2RlKiBwcmV2KQp7CiAgICBtX3ByZXYg
PSBwcmV2Owp9CgppbmxpbmUgSGFuZGxlTm9kZSogSGFuZGxlTm9kZTo6cHJldigpCnsKICAgIHJl
dHVybiBtX3ByZXY7Cn0KCmlubGluZSB2b2lkIEhhbmRsZU5vZGU6OnNldE5leHQoSGFuZGxlTm9k
ZSogbmV4dCkKewogICAgbV9uZXh0ID0gbmV4dDsKfQoKaW5saW5lIEhhbmRsZU5vZGUqIEhhbmRs
ZU5vZGU6Om5leHQoKQp7CiAgICByZXR1cm4gbV9uZXh0Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiB2b2lkIEhhbmRsZVNldDo6Zm9yRWFjaFN0cm9uZ0hhbmRsZShGdW5jdG9yJiBmdW5j
dG9yLCBjb25zdCBIYXNoQ291bnRlZFNldDxKU0NlbGwqPiYgc2tpcFNldCkKewogICAgSGFuZGxl
U2V0OjpOb2RlKiBlbmQgPSBtX3N0cm9uZ0xpc3QuZW5kKCk7CiAgICBmb3IgKEhhbmRsZVNldDo6
Tm9kZSogbm9kZSA9IG1fc3Ryb25nTGlzdC5iZWdpbigpOyBub2RlICE9IGVuZDsgbm9kZSA9IG5v
ZGUtPm5leHQoKSkgewogICAgICAgIEpTVmFsdWUgdmFsdWUgPSAqbm9kZS0+c2xvdCgpOwogICAg
ICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLmlzQ2VsbCgpKQogICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICBpZiAoc2tpcFNldC5jb250YWlucyh2YWx1ZS5hc0NlbGwoKSkpCiAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgIGZ1bmN0b3IodmFsdWUuYXNDZWxsKCkpOwogICAgfQp9Cgp9CiMg
MzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCIgMgojIDEgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmgiIDEKIyAyNyAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3RhY2suaCIKI2RlZmluZSBIYW5kbGVT
dGFja19oIAoKCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvQmxvY2tTdGFjay5oIiAxCiMgMjcg
Ii4uLy4uL1NvdXJjZS9XVEYvd3RmL0Jsb2NrU3RhY2suaCIKI2RlZmluZSBCbG9ja1N0YWNrX2gg
CgoKCgoKbmFtZXNwYWNlIFdURiB7Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgQmxvY2tT
dGFjayB7CnB1YmxpYzoKICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tTaXplID0gNDA5NjsK
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tMZW5ndGggPSBibG9ja1NpemUgLyBzaXplb2Yo
VCk7CgogICAgQmxvY2tTdGFjaygpOwogICAgfkJsb2NrU3RhY2soKTsKCiAgICBUKiBncm93KCk7
CiAgICB2b2lkIHNocmluayhUKik7CgogICAgY29uc3QgVmVjdG9yPFQqPiYgYmxvY2tzKCk7Cgpw
cml2YXRlOgogICAgVmVjdG9yPFQqPiBtX2Jsb2NrczsKICAgIFQqIG1fc3BhcmVCbG9jazsKfTsK
CnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBCbG9ja1N0YWNrPFQ+OjpCbG9ja1N0YWNrKCkKICAgIDog
bV9zcGFyZUJsb2NrKDApCnsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IEJsb2NrU3RhY2s8VD46
On5CbG9ja1N0YWNrKCkKewogICAgaWYgKG1fc3BhcmVCbG9jaykKICAgICAgICBmYXN0RnJlZSht
X3NwYXJlQmxvY2spOwogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Jsb2Nrcy5zaXplKCk7
ICsraSkKICAgICAgICBmYXN0RnJlZShtX2Jsb2Nrc1tpXSk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBpbmxpbmUgY29uc3QgVmVjdG9yPFQqPiYgQmxvY2tTdGFjazxUPjo6YmxvY2tzKCkKewog
ICAgcmV0dXJuIG1fYmxvY2tzOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gVCogQmxvY2tTdGFj
azxUPjo6Z3JvdygpCnsKICAgIFQqIGJsb2NrID0gbV9zcGFyZUJsb2NrID8gbV9zcGFyZUJsb2Nr
IDogc3RhdGljX2Nhc3Q8VCo+KGZhc3RNYWxsb2MoYmxvY2tTaXplKSk7CiAgICBtX3NwYXJlQmxv
Y2sgPSAwOwoKICAgIG1fYmxvY2tzLmFwcGVuZChibG9jayk7CiAgICByZXR1cm4gYmxvY2s7Cn0K
CnRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIEJsb2NrU3RhY2s8VD46OnNocmluayhUKiBuZXdF
bmQpCnsKICAgICgodm9pZCkwKTsKICAgIG1fc3BhcmVCbG9jayA9IG1fYmxvY2tzLmxhc3QoKTsK
ICAgIG1fYmxvY2tzLnJlbW92ZUxhc3QoKTsKCiAgICB3aGlsZSAobV9ibG9ja3MubGFzdCgpICsg
YmxvY2tMZW5ndGggIT0gbmV3RW5kKSB7CiAgICAgICAgZmFzdEZyZWUobV9ibG9ja3MubGFzdCgp
KTsKICAgICAgICBtX2Jsb2Nrcy5yZW1vdmVMYXN0KCk7CiAgICB9Cn0KCn0KCnVzaW5nIFdURjo6
QmxvY2tTdGFjazsKIyAzMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxl
U3RhY2suaCIgMgoKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgTG9jYWxTY29wZTsKY2xhc3MgSGVh
cFJvb3RWaXNpdG9yOwoKY2xhc3MgSGFuZGxlU3RhY2sgewpwdWJsaWM6CiAgICBjbGFzcyBGcmFt
ZSB7CiAgICBwdWJsaWM6CiAgICAgICAgSGFuZGxlU2xvdCBtX25leHQ7CiAgICAgICAgSGFuZGxl
U2xvdCBtX2VuZDsKICAgIH07CgogICAgSGFuZGxlU3RhY2soKTsKCiAgICB2b2lkIGVudGVyU2Nv
cGUoRnJhbWUmKTsKICAgIHZvaWQgbGVhdmVTY29wZShGcmFtZSYpOwoKICAgIEhhbmRsZVNsb3Qg
cHVzaCgpOwoKICAgIHZvaWQgdmlzaXQoSGVhcFJvb3RWaXNpdG9yJik7Cgpwcml2YXRlOgogICAg
dm9pZCBncm93KCk7CiAgICB2b2lkIHphcFRvKEZyYW1lJik7CiAgICBIYW5kbGVTbG90IGZpbmRG
aXJzdEFmdGVyKEhhbmRsZVNsb3QpOwoKCgoKICAgIEJsb2NrU3RhY2s8SlNWYWx1ZT4gbV9ibG9j
a1N0YWNrOwogICAgRnJhbWUgbV9mcmFtZTsKfTsKCmlubGluZSB2b2lkIEhhbmRsZVN0YWNrOjpl
bnRlclNjb3BlKEZyYW1lJiBsYXN0RnJhbWUpCnsKCgoKCiAgICBsYXN0RnJhbWUgPSBtX2ZyYW1l
Owp9CgoKCmlubGluZSB2b2lkIEhhbmRsZVN0YWNrOjp6YXBUbyhGcmFtZSYgbGFzdEZyYW1lKQp7
CgogICAgKHZvaWQpbGFzdEZyYW1lOwojIDEwMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGFuZGxlU3RhY2suaCIKfQoKaW5saW5lIHZvaWQgSGFuZGxlU3RhY2s6OmxlYXZlU2Nv
cGUoRnJhbWUmIGxhc3RGcmFtZSkKewoKCgoKICAgIHphcFRvKGxhc3RGcmFtZSk7CgogICAgaWYg
KGxhc3RGcmFtZS5tX2VuZCAhPSBtX2ZyYW1lLm1fZW5kKQogICAgICAgIG1fYmxvY2tTdGFjay5z
aHJpbmsobGFzdEZyYW1lLm1fZW5kKTsKCiAgICBtX2ZyYW1lID0gbGFzdEZyYW1lOwp9Cgppbmxp
bmUgSGFuZGxlU2xvdCBIYW5kbGVTdGFjazo6cHVzaCgpCnsKICAgICgodm9pZCkwKTsKICAgIGlm
IChtX2ZyYW1lLm1fbmV4dCA9PSBtX2ZyYW1lLm1fZW5kKQogICAgICAgIGdyb3coKTsKICAgIHJl
dHVybiBtX2ZyYW1lLm1fbmV4dCsrOwp9Cgp9CiMgMzEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBPYnNlcnZlci5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBPYnNlcnZlci5oIgojZGVmaW5lIEhlYXBPYnNlcnZlcl9oIAoKCgpuYW1lc3BhY2UgSlND
IHsKCmNsYXNzIEhlYXBPYnNlcnZlciB7CnB1YmxpYzoKICAgIHZpcnR1YWwgfkhlYXBPYnNlcnZl
cigpIHsgfQogICAgdmlydHVhbCB2b2lkIHdpbGxHYXJiYWdlQ29sbGVjdCgpID0gMDsKICAgIHZp
cnR1YWwgdm9pZCBkaWRHYXJiYWdlQ29sbGVjdChIZWFwT3BlcmF0aW9uKSA9IDA7Cn07Cgp9CiMg
MzIgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCIgMgoKIyAxICIuLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNldC5oIiAxCiMgMjcg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0pJVFN0dWJSb3V0aW5lU2V0LmgiCiNk
ZWZpbmUgSklUU3R1YlJvdXRpbmVTZXRfaCAKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHViUm91dGluZS5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaCIKI2RlZmluZSBKSVRTdHViUm91dGluZV9oIAoKCgoj
IDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5o
IiAxCiMgMzIgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUu
aCIgMgoKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBKSVRTdHViUm91dGluZVNldDsKIyA1MCAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oIgpjbGFzcyBK
SVRTdHViUm91dGluZSB7CiAgICBwcml2YXRlOiBKSVRTdHViUm91dGluZShjb25zdCBKSVRTdHVi
Um91dGluZSYpID0gZGVsZXRlOyBKSVRTdHViUm91dGluZSYgb3BlcmF0b3I9KGNvbnN0IEpJVFN0
dWJSb3V0aW5lJikgPSBkZWxldGU7OwogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwg
dm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsg
cmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZv
aWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVf
dCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9y
IGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0
dXJuIGxvY2F0aW9uOyB9IHByaXZhdGU6IHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VB
U2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87CnB1YmxpYzoKICAgIEpJVFN0dWJSb3V0aW5lKGNvbnN0
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgY29kZSkKICAgICAgICA6IG1fY29kZShjb2RlKQogICAg
ICAgICwgbV9yZWZDb3VudCgxKQogICAgewogICAgfQoKCgogICAgc3RhdGljIFJlZjxKSVRTdHVi
Um91dGluZT4gY3JlYXRlU2VsZk1hbmFnZWRSb3V0aW5lKAogICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciByYXdDb2RlUG9pbnRlcikKICAgIHsKICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBKSVRTdHViUm91dGluZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2Vk
Q29kZVJlZihyYXdDb2RlUG9pbnRlcikpKTsKICAgIH0KCiAgICB2aXJ0dWFsIH5KSVRTdHViUm91
dGluZSgpOwogICAgdmlydHVhbCB2b2lkIGFib3V0VG9EaWUoKSB7IH0KCgoKCiAgICBjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYmIGNvZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGU7IH0KCiAg
ICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGFzQ29kZVB0cihQYXNzUmVmUHRyPEpJVFN0
dWJSb3V0aW5lPiBzdHViUm91dGluZSkKICAgIHsKICAgICAgICBpZiAoIXN0dWJSb3V0aW5lKQog
ICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CgogICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciByZXN1bHQgPSBzdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKTsKICAg
ICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICB2b2lkIHJl
ZigpCiAgICB7CiAgICAgICAgbV9yZWZDb3VudCsrOwogICAgfQoKICAgIHZvaWQgZGVyZWYoKQog
ICAgewogICAgICAgIGlmICgtLW1fcmVmQ291bnQpCiAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICBvYnNlcnZlWmVyb1JlZkNvdW50KCk7CiAgICB9CgoKCiAgICB1aW50cHRyX3Qgc3RhcnRBZGRy
ZXNzKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlLmV4ZWN1dGFibGVNZW1vcnkoKS0+c3RhcnRBc0lu
dGVnZXIoKTsgfQogICAgdWludHB0cl90IGVuZEFkZHJlc3MoKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGUuZXhlY3V0YWJsZU1lbW9yeSgpLT5lbmRBc0ludGVnZXIoKTsgfQogICAgc3RhdGljIHVpbnRw
dHJfdCBhZGRyZXNzU3RlcCgpIHsgcmV0dXJuIGppdEFsbG9jYXRpb25HcmFudWxlOyB9CgogICAg
c3RhdGljIGJvb2wgY2FuUGVyZm9ybVJhbmdlRmlsdGVyKCkKICAgIHsKCgoKICAgICAgICByZXR1
cm4gZmFsc2U7CgogICAgfQogICAgc3RhdGljIHVpbnRwdHJfdCBmaWx0ZXJpbmdTdGFydEFkZHJl
c3MoKQogICAgewoKCgogICAgICAgIFdURkNyYXNoKCk7CiAgICAgICAgcmV0dXJuIDA7CgogICAg
fQogICAgc3RhdGljIHNpemVfdCBmaWx0ZXJpbmdFeHRlbnRTaXplKCkKICAgIHsKCgoKICAgICAg
ICBXVEZDcmFzaCgpOwogICAgICAgIHJldHVybiAwOwoKICAgIH0KICAgIHN0YXRpYyBib29sIHBh
c3Nlc0ZpbHRlcih1aW50cHRyX3QgYWRkcmVzcykKICAgIHsKICAgICAgICBpZiAoIWNhblBlcmZv
cm1SYW5nZUZpbHRlcigpKSB7CgoKICAgICAgICAgICAgcmV0dXJuIGFkZHJlc3MgPj0gaml0QWxs
b2NhdGlvbkdyYW51bGUgJiYgYWRkcmVzcyAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnRwdHJf
dD46Om1heCgpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGFkZHJlc3MgLSBmaWx0ZXJpbmdTdGFy
dEFkZHJlc3MoKSA+PSBmaWx0ZXJpbmdFeHRlbnRTaXplKCkpCiAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgoKCgogICAgdmlydHVhbCBib29sIHZp
c2l0V2VhayhWTSYpOwoKcHJvdGVjdGVkOgogICAgdmlydHVhbCB2b2lkIG9ic2VydmVaZXJvUmVm
Q291bnQoKTsKCiAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbV9jb2RlOwogICAgdW5zaWduZWQg
bV9yZWZDb3VudDsKfTsKCgojZGVmaW5lIEZJTkFMSVpFX0NPREVfRk9SX1NUVUIoY29kZUJsb2Nr
LHBhdGNoQnVmZmVyLGRhdGFMb2dGQXJndW1lbnRzKSAoYWRvcHRSZWYobmV3IEpJVFN0dWJSb3V0
aW5lKEZJTkFMSVpFX0NPREVfRk9SKChjb2RlQmxvY2spLCAocGF0Y2hCdWZmZXIpLCBkYXRhTG9n
RkFyZ3VtZW50cykpKSkKCgp9CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0pJVFN0dWJSb3V0aW5lU2V0LmgiIDIKCgoKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lOwpjbGFzcyBTbG90VmlzaXRvcjsKCgoKY2xhc3MgSklUU3R1YlJvdXRp
bmVTZXQgewogICAgcHJpdmF0ZTogSklUU3R1YlJvdXRpbmVTZXQoY29uc3QgSklUU3R1YlJvdXRp
bmVTZXQmKSA9IGRlbGV0ZTsgSklUU3R1YlJvdXRpbmVTZXQmIG9wZXJhdG9yPShjb25zdCBKSVRT
dHViUm91dGluZVNldCYpID0gZGVsZXRlOzsKICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXpl
X3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXpl
KSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0
ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVy
YXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7
IHJldHVybiBsb2NhdGlvbjsgfSBwcml2YXRlOiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0Zv
cmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvOwoKcHVibGljOgogICAgSklUU3R1YlJvdXRpbmVT
ZXQoKTsKICAgIH5KSVRTdHViUm91dGluZVNldCgpOwoKICAgIHZvaWQgYWRkKEdDQXdhcmVKSVRT
dHViUm91dGluZSopOwoKICAgIHZvaWQgY2xlYXJNYXJrcygpOwoKICAgIHZvaWQgbWFyayh2b2lk
KiBjYW5kaWRhdGVBZGRyZXNzKQogICAgewogICAgICAgIHVpbnRwdHJfdCBhZGRyZXNzID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNhbmRpZGF0ZUFkZHJlc3MpOwogICAgICAgIGlmICgh
SklUU3R1YlJvdXRpbmU6OnBhc3Nlc0ZpbHRlcihhZGRyZXNzKSkKICAgICAgICAgICAgcmV0dXJu
OwoKICAgICAgICBtYXJrU2xvdyhhZGRyZXNzKTsKICAgIH0KCiAgICB2b2lkIGRlbGV0ZVVubWFy
a2VkSmV0dGlzb25lZFN0dWJSb3V0aW5lcygpOwoKICAgIHZvaWQgdHJhY2VNYXJrZWRTdHViUm91
dGluZXMoU2xvdFZpc2l0b3ImKTsKCiAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9saXN0T2ZSb3V0aW5lcy5zaXplKCk7IH0KICAgIEdDQXdhcmVKSVRTdHViUm91dGluZSogYXQo
dW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9saXN0T2ZSb3V0aW5lc1tpXTsgfQoKcHJpdmF0
ZToKICAgIHZvaWQgbWFya1Nsb3codWludHB0cl90IGFkZHJlc3MpOwoKICAgIEhhc2hNYXA8dWlu
dHB0cl90LCBHQ0F3YXJlSklUU3R1YlJvdXRpbmUqPiBtX2FkZHJlc3NUb1JvdXRpbmVNYXA7CiAg
ICBWZWN0b3I8R0NBd2FyZUpJVFN0dWJSb3V0aW5lKj4gbV9saXN0T2ZSb3V0aW5lczsKfTsKIyA5
NSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSklUU3R1YlJvdXRpbmVTZXQuaCIK
fQojIDM0ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgiIDIKIyAxICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MaXN0YWJsZUhhbmRsZXIuaCIgMQojIDIx
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MaXN0YWJsZUhhbmRsZXIuaCIKI2Rl
ZmluZSBMaXN0YWJsZUhhbmRsZXJfaCAKCgoKCgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZGluZ1ByaW1pdGl2ZXMuaCIgMQojIDMyICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRp
bmdQcmltaXRpdmVzLmgiCiNkZWZpbmUgVGhyZWFkaW5nUHJpbWl0aXZlc19oIAojIDQ3ICIuLi8u
Li9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgiCm5hbWVzcGFjZSBXVEYgewoK
CnR5cGVkZWYgcHRocmVhZF9tdXRleF90IFBsYXRmb3JtTXV0ZXg7CnR5cGVkZWYgcHRocmVhZF9j
b25kX3QgUGxhdGZvcm1Db25kaXRpb247CiMgNzMgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZ1ByaW1pdGl2ZXMuaCIKY2xhc3MgTXV0ZXggewogICAgcHJpdmF0ZTogTXV0ZXgoY29uc3Qg
TXV0ZXgmKSA9IGRlbGV0ZTsgTXV0ZXgmIG9wZXJhdG9yPShjb25zdCBNdXRleCYpID0gZGVsZXRl
OzsgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBw
OyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9j
KHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVl
KHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6
ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpX
VEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcs
IHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHByaXZhdGU6
IHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87
CnB1YmxpYzoKICAgIE11dGV4KCk7CiAgICB+TXV0ZXgoKTsKCiAgICB2b2lkIGxvY2soKTsKICAg
IGJvb2wgdHJ5TG9jaygpOwogICAgdm9pZCB1bmxvY2soKTsKCnB1YmxpYzoKICAgIFBsYXRmb3Jt
TXV0ZXgmIGltcGwoKSB7IHJldHVybiBtX211dGV4OyB9CnByaXZhdGU6CiAgICBQbGF0Zm9ybU11
dGV4IG1fbXV0ZXg7Cn07Cgp0eXBlZGVmIExvY2tlcjxNdXRleD4gTXV0ZXhMb2NrZXI7CgpjbGFz
cyBUaHJlYWRDb25kaXRpb24gewogICAgcHJpdmF0ZTogVGhyZWFkQ29uZGl0aW9uKGNvbnN0IFRo
cmVhZENvbmRpdGlvbiYpID0gZGVsZXRlOyBUaHJlYWRDb25kaXRpb24mIG9wZXJhdG9yPShjb25z
dCBUaHJlYWRDb25kaXRpb24mKSA9IGRlbGV0ZTs7CnB1YmxpYzoKICAgIFRocmVhZENvbmRpdGlv
bigpOwogICAgflRocmVhZENvbmRpdGlvbigpOwoKICAgIHZvaWQgd2FpdChNdXRleCYgbXV0ZXgp
OwoKCiAgICBib29sIHRpbWVkV2FpdChNdXRleCYsIGRvdWJsZSBhYnNvbHV0ZVRpbWUpOwogICAg
dm9pZCBzaWduYWwoKTsKICAgIHZvaWQgYnJvYWRjYXN0KCk7Cgpwcml2YXRlOgogICAgUGxhdGZv
cm1Db25kaXRpb24gbV9jb25kaXRpb247Cn07CgoKCgoKCgp9Cgp1c2luZyBXVEY6Ok11dGV4Owp1
c2luZyBXVEY6Ok11dGV4TG9ja2VyOwp1c2luZyBXVEY6OlRocmVhZENvbmRpdGlvbjsKIyAyOCAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGlzdGFibGVIYW5kbGVyLmgiIDIKCm5h
bWVzcGFjZSBKU0MgewoKY2xhc3MgSGVhcDsKY2xhc3MgU2xvdFZpc2l0b3I7Cgp0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgpjbGFzcyBMaXN0YWJsZUhhbmRsZXIgewogICAgcHJpdmF0ZTogTGlzdGFibGVI
YW5kbGVyKGNvbnN0IExpc3RhYmxlSGFuZGxlciYpID0gZGVsZXRlOyBMaXN0YWJsZUhhbmRsZXIm
IG9wZXJhdG9yPShjb25zdCBMaXN0YWJsZUhhbmRsZXImKSA9IGRlbGV0ZTs7Cgpwcm90ZWN0ZWQ6
CiAgICBMaXN0YWJsZUhhbmRsZXIoKQogICAgICAgIDogbV9uZXh0QW5kRmxhZygwKQogICAgewog
ICAgfQoKICAgIHZpcnR1YWwgfkxpc3RhYmxlSGFuZGxlcigpIHsgfQoKICAgIFQqIG5leHQoKSBj
b25zdAogICAgewogICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQqPihtX25leHRBbmRG
bGFnICYgfjEpOwogICAgfQoKcHJpdmF0ZToKCiAgICBmcmllbmQgY2xhc3MgSGVhcDsKICAgIGZy
aWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKCiAgICBjbGFzcyBMaXN0IHsKICAgICAgICBwcml2YXRl
OiBMaXN0KGNvbnN0IExpc3QmKSA9IGRlbGV0ZTsgTGlzdCYgb3BlcmF0b3I9KGNvbnN0IExpc3Qm
KSA9IGRlbGV0ZTs7CiAgICBwdWJsaWM6CiAgICAgICAgTGlzdCgpCiAgICAgICAgICAgIDogbV9m
aXJzdCgwKQogICAgICAgIHsKICAgICAgICB9CgogICAgICAgIHZvaWQgYWRkVGhyZWFkU2FmZShU
KiBoYW5kbGVyKQogICAgICAgIHsKICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoJm1fbG9j
ayk7CiAgICAgICAgICAgIGFkZE5vdFRocmVhZFNhZmUoaGFuZGxlcik7CiAgICAgICAgfQoKICAg
ICAgICBib29sIGhhc05leHQoKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICEhbV9maXJz
dDsKICAgICAgICB9CgogICAgICAgIFQqIGhlYWQoKQogICAgICAgIHsKICAgICAgICAgICAgcmV0
dXJuIG1fZmlyc3Q7CiAgICAgICAgfQoKICAgICAgICBUKiByZW1vdmVOZXh0KCkKICAgICAgICB7
CiAgICAgICAgICAgIFQqIGN1cnJlbnQgPSBtX2ZpcnN0OwogICAgICAgICAgICBUKiBuZXh0ID0g
Y3VycmVudC0+bmV4dCgpOwogICAgICAgICAgICBjdXJyZW50LT5tX25leHRBbmRGbGFnID0gMDsK
ICAgICAgICAgICAgbV9maXJzdCA9IG5leHQ7CiAgICAgICAgICAgIHJldHVybiBjdXJyZW50Owog
ICAgICAgIH0KCiAgICAgICAgdm9pZCByZW1vdmVBbGwoKQogICAgICAgIHsKICAgICAgICAgICAg
d2hpbGUgKGhhc05leHQoKSkKICAgICAgICAgICAgICAgIHJlbW92ZU5leHQoKTsKICAgICAgICB9
CgogICAgcHJpdmF0ZToKICAgICAgICB2b2lkIGFkZE5vdFRocmVhZFNhZmUoVCogaGFuZGxlcikK
ICAgICAgICB7CiAgICAgICAgICAgIGlmIChoYW5kbGVyLT5tX25leHRBbmRGbGFnICYgMSkKICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgaGFuZGxlci0+bV9uZXh0QW5kRmxhZyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2ZpcnN0KSB8IDE7CiAgICAgICAgICAgIG1f
Zmlyc3QgPSBoYW5kbGVyOwogICAgICAgIH0KCiAgICAgICAgTG9jayBtX2xvY2s7CiAgICAgICAg
VCogbV9maXJzdDsKICAgIH07CgogICAgdWludHB0cl90IG1fbmV4dEFuZEZsYWc7Cn07Cgp9CiMg
MzUgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCIgMgojIDEgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oIiAxCiMgMjMg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oIgoj
ZGVmaW5lIE1hY2hpbmVUaHJlYWRzX2ggCgojIDEgIi91c3IvaW5jbHVkZS9zZXRqbXAuaCIgMSAz
IDQKIyAyMyAiL3Vzci9pbmNsdWRlL3NldGptcC5oIiAzIDQKI2RlZmluZSBfU0VUSk1QX0ggMQoK
CgpleHRlcm4gIkMiIHsKCgojIDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2Jp
dHMvc2lnc2V0LmgiIDEgMyA0CiMgMzEgIi91c3IvaW5jbHVkZS9zZXRqbXAuaCIgMiAzIDQKCgoK
c3RydWN0IF9fam1wX2J1Zl90YWcKICB7CgoKCgogICAgX19qbXBfYnVmIF9fam1wYnVmOwogICAg
aW50IF9fbWFza193YXNfc2F2ZWQ7CiAgICBfX3NpZ3NldF90IF9fc2F2ZWRfbWFzazsKICB9OwoK
CgoKdHlwZWRlZiBzdHJ1Y3QgX19qbXBfYnVmX3RhZyBqbXBfYnVmWzFdOwoKCgpleHRlcm4gaW50
IHNldGptcCAoam1wX2J1ZiBfX2VudikgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgX19zaWdz
ZXRqbXAgKHN0cnVjdCBfX2ptcF9idWZfdGFnIF9fZW52WzFdLCBpbnQgX19zYXZlbWFzaykgdGhy
b3cgKCk7CgoKCmV4dGVybiBpbnQgX3NldGptcCAoc3RydWN0IF9fam1wX2J1Zl90YWcgX19lbnZb
MV0pIHRocm93ICgpOwoKCgojZGVmaW5lIHNldGptcChlbnYpIF9zZXRqbXAgKGVudikKCgoKCgoK
ZXh0ZXJuIHZvaWQgbG9uZ2ptcCAoc3RydWN0IF9fam1wX2J1Zl90YWcgX19lbnZbMV0sIGludCBf
X3ZhbCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoK
CgpleHRlcm4gdm9pZCBfbG9uZ2ptcCAoc3RydWN0IF9fam1wX2J1Zl90YWcgX19lbnZbMV0sIGlu
dCBfX3ZhbCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoK
CgoKCgp0eXBlZGVmIHN0cnVjdCBfX2ptcF9idWZfdGFnIHNpZ2ptcF9idWZbMV07CgoKCiNkZWZp
bmUgc2lnc2V0am1wKGVudixzYXZlbWFzaykgX19zaWdzZXRqbXAgKGVudiwgc2F2ZW1hc2spCgoK
CgoKZXh0ZXJuIHZvaWQgc2lnbG9uZ2ptcCAoc2lnam1wX2J1ZiBfX2VudiwgaW50IF9fdmFsKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKIyAxMTIgIi91c3Iv
aW5jbHVkZS9zZXRqbXAuaCIgMyA0Cn0KIyAyNiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgiIDIKCgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZFNwZWNpZmljLmgiIDEKIyA0MyAiLi4vLi4vU291cmNlL1dURi93dGYvVGhyZWFkU3Bl
Y2lmaWMuaCIKI2RlZmluZSBXVEZfVGhyZWFkU3BlY2lmaWNfaCAKIyA1NCAiLi4vLi4vU291cmNl
L1dURi93dGYvVGhyZWFkU3BlY2lmaWMuaCIKbmFtZXNwYWNlIFdURiB7CgoKCgojZGVmaW5lIFRI
UkVBRF9TUEVDSUZJQ19DQUxMIAoKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFRocmVhZFNw
ZWNpZmljIHsKICAgIHByaXZhdGU6IFRocmVhZFNwZWNpZmljKGNvbnN0IFRocmVhZFNwZWNpZmlj
JikgPSBkZWxldGU7IFRocmVhZFNwZWNpZmljJiBvcGVyYXRvcj0oY29uc3QgVGhyZWFkU3BlY2lm
aWMmKSA9IGRlbGV0ZTs7CnB1YmxpYzoKICAgIFRocmVhZFNwZWNpZmljKCk7CiAgICBib29sIGlz
U2V0KCk7CiAgICBUKiBvcGVyYXRvci0+KCk7CiAgICBvcGVyYXRvciBUKigpOwogICAgVCYgb3Bl
cmF0b3IqKCk7CgoKCgoKcHJpdmF0ZToKCgoKCiAgICB+VGhyZWFkU3BlY2lmaWMoKTsKCiAgICBU
KiBnZXQoKTsKICAgIHZvaWQgc2V0KFQqKTsKICAgIHZvaWQgc3RhdGljIGRlc3Ryb3kodm9pZCog
cHRyKTsKCiAgICBzdHJ1Y3QgRGF0YSB7CiAgICAgICAgcHJpdmF0ZTogRGF0YShjb25zdCBEYXRh
JikgPSBkZWxldGU7IERhdGEmIG9wZXJhdG9yPShjb25zdCBEYXRhJikgPSBkZWxldGU7OwogICAg
cHVibGljOgogICAgICAgIERhdGEoVCogdmFsdWUsIFRocmVhZFNwZWNpZmljPFQ+KiBvd25lcikg
OiB2YWx1ZSh2YWx1ZSksIG93bmVyKG93bmVyKSB7fQoKICAgICAgICBUKiB2YWx1ZTsKICAgICAg
ICBUaHJlYWRTcGVjaWZpYzxUPiogb3duZXI7CiAgICB9OwoKCiAgICBwdGhyZWFkX2tleV90IG1f
a2V5OwoKCgp9OwoKCgp0eXBlZGVmIHB0aHJlYWRfa2V5X3QgVGhyZWFkU3BlY2lmaWNLZXk7Cgpp
bmxpbmUgdm9pZCB0aHJlYWRTcGVjaWZpY0tleUNyZWF0ZShUaHJlYWRTcGVjaWZpY0tleSoga2V5
LCB2b2lkICgqZGVzdHJ1Y3Rvcikodm9pZCAqKSkKewogICAgaW50IGVycm9yID0gcHRocmVhZF9r
ZXlfY3JlYXRlKGtleSwgZGVzdHJ1Y3Rvcik7CiAgICBpZiAoZXJyb3IpCiAgICAgICAgV1RGQ3Jh
c2goKTsKfQoKaW5saW5lIHZvaWQgdGhyZWFkU3BlY2lmaWNLZXlEZWxldGUoVGhyZWFkU3BlY2lm
aWNLZXkga2V5KQp7CiAgICBpbnQgZXJyb3IgPSBwdGhyZWFkX2tleV9kZWxldGUoa2V5KTsKICAg
IGlmIChlcnJvcikKICAgICAgICBXVEZDcmFzaCgpOwp9CgppbmxpbmUgdm9pZCB0aHJlYWRTcGVj
aWZpY1NldChUaHJlYWRTcGVjaWZpY0tleSBrZXksIHZvaWQqIHZhbHVlKQp7CiAgICBwdGhyZWFk
X3NldHNwZWNpZmljKGtleSwgdmFsdWUpOwp9CgppbmxpbmUgdm9pZCogdGhyZWFkU3BlY2lmaWNH
ZXQoVGhyZWFkU3BlY2lmaWNLZXkga2V5KQp7CiAgICByZXR1cm4gcHRocmVhZF9nZXRzcGVjaWZp
YyhrZXkpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgppbmxpbmUgVGhyZWFkU3BlY2lmaWM8VD46
OlRocmVhZFNwZWNpZmljKCkKewogICAgaW50IGVycm9yID0gcHRocmVhZF9rZXlfY3JlYXRlKCZt
X2tleSwgZGVzdHJveSk7CiAgICBpZiAoZXJyb3IpCiAgICAgICAgV1RGQ3Jhc2goKTsKfQoKdGVt
cGxhdGU8dHlwZW5hbWUgVD4KaW5saW5lIFQqIFRocmVhZFNwZWNpZmljPFQ+OjpnZXQoKQp7CiAg
ICBEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8RGF0YSo+KHB0aHJlYWRfZ2V0c3BlY2lmaWMobV9r
ZXkpKTsKICAgIHJldHVybiBkYXRhID8gZGF0YS0+dmFsdWUgOiAwOwp9Cgp0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgppbmxpbmUgdm9pZCBUaHJlYWRTcGVjaWZpYzxUPjo6c2V0KFQqIHB0cikKewogICAg
KCh2b2lkKTApOwogICAgcHRocmVhZF9zZXRzcGVjaWZpYyhtX2tleSwgbmV3IERhdGEocHRyLCB0
aGlzKSk7Cn0KIyAyMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1RocmVhZFNwZWNpZmljLmgiCnRl
bXBsYXRlPHR5cGVuYW1lIFQ+CmlubGluZSB2b2lkIFRocmVhZFNwZWNpZmljPFQ+OjpkZXN0cm95
KHZvaWQqIHB0cikKewogICAgRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PERhdGEqPihwdHIpOwoK
CgoKICAgIHB0aHJlYWRfc2V0c3BlY2lmaWMoZGF0YS0+b3duZXItPm1fa2V5LCBwdHIpOwoKCiAg
ICBkYXRhLT52YWx1ZS0+flQoKTsKICAgIGZhc3RGcmVlKGRhdGEtPnZhbHVlKTsKCgogICAgcHRo
cmVhZF9zZXRzcGVjaWZpYyhkYXRhLT5vd25lci0+bV9rZXksIDApOwoKCgoKCgogICAgZGVsZXRl
IGRhdGE7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmlubGluZSBib29sIFRocmVhZFNwZWNpZmlj
PFQ+Ojppc1NldCgpCnsKICAgIHJldHVybiAhIWdldCgpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgppbmxpbmUgVGhyZWFkU3BlY2lmaWM8VD46Om9wZXJhdG9yIFQqKCkKewogICAgVCogcHRyID0g
c3RhdGljX2Nhc3Q8VCo+KGdldCgpKTsKICAgIGlmICghcHRyKSB7CgoKICAgICAgICBwdHIgPSBz
dGF0aWNfY2FzdDxUKj4oZmFzdFplcm9lZE1hbGxvYyhzaXplb2YoVCkpKTsKICAgICAgICBzZXQo
cHRyKTsKICAgICAgICBuZXcgKE5vdE51bGwsIHB0cikgVDsKICAgIH0KICAgIHJldHVybiBwdHI7
Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmlubGluZSBUKiBUaHJlYWRTcGVjaWZpYzxUPjo6b3Bl
cmF0b3ItPigpCnsKICAgIHJldHVybiBvcGVyYXRvciBUKigpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgppbmxpbmUgVCYgVGhyZWFkU3BlY2lmaWM8VD46Om9wZXJhdG9yKigpCnsKICAgIHJldHVy
biAqb3BlcmF0b3IgVCooKTsKfQojIDI5NyAiLi4vLi4vU291cmNlL1dURi93dGYvVGhyZWFkU3Bl
Y2lmaWMuaCIKfQojIDI5ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5l
U3RhY2tNYXJrZXIuaCIgMgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zZW1hcGhvcmUuaCIgMSAz
IDQKIyAxOSAiL3Vzci9pbmNsdWRlL3NlbWFwaG9yZS5oIiAzIDQKI2RlZmluZSBfU0VNQVBIT1JF
X0ggMQoKCgoKI2RlZmluZSBfX25lZWRfdGltZXNwZWMgCgoKCgojIDEgIi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc2VtYXBob3JlLmgiIDEgMyA0CiMgMjMgIi91c3IvaW5j
bHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc2VtYXBob3JlLmgiIDMgNAojZGVmaW5lIF9f
U0laRU9GX1NFTV9UIDE2CgoKCiNkZWZpbmUgU0VNX0ZBSUxFRCAoKHNlbV90ICopIDApCgoKdHlw
ZWRlZiB1bmlvbgp7CiAgY2hhciBfX3NpemVbMTZdOwogIGxvbmcgaW50IF9fYWxpZ247Cn0gc2Vt
X3Q7CiMgMzAgIi91c3IvaW5jbHVkZS9zZW1hcGhvcmUuaCIgMiAzIDQKCgpleHRlcm4gIkMiIHsK
CgoKZXh0ZXJuIGludCBzZW1faW5pdCAoc2VtX3QgKl9fc2VtLCBpbnQgX19wc2hhcmVkLCB1bnNp
Z25lZCBpbnQgX192YWx1ZSkKICAgICB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc2VtX2Rlc3Ryb3kg
KHNlbV90ICpfX3NlbSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHNlbV90ICpzZW1fb3BlbiAoY29uc3Qg
Y2hhciAqX19uYW1lLCBpbnQgX19vZmxhZywgLi4uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNl
bV9jbG9zZSAoc2VtX3QgKl9fc2VtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNlbV91bmxpbmsg
KGNvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBzZW1fd2FpdCAo
c2VtX3QgKl9fc2VtKTsKCgoKCgoKZXh0ZXJuIGludCBzZW1fdGltZWR3YWl0IChzZW1fdCAqX19y
ZXN0cmljdCBfX3NlbSwKICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QgX19h
YnN0aW1lKTsKCgoKZXh0ZXJuIGludCBzZW1fdHJ5d2FpdCAoc2VtX3QgKl9fc2VtKSB0aHJvdyAo
KTsKCgpleHRlcm4gaW50IHNlbV9wb3N0IChzZW1fdCAqX19zZW0pIHRocm93ICgpOwoKCmV4dGVy
biBpbnQgc2VtX2dldHZhbHVlIChzZW1fdCAqX19yZXN0cmljdCBfX3NlbSwgaW50ICpfX3Jlc3Ry
aWN0IF9fc3ZhbCkKICAgICB0aHJvdyAoKTsKCgp9CiMgMzYgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3Np
Z25hbC5oIiAxIDMgNAojIDI1ICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDMgNAojZGVmaW5lIF9T
SUdOQUxfSCAKCgoKCmV4dGVybiAiQyIgewoKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdu
dWVhYmloZi9iaXRzL3NpZ3NldC5oIiAxIDMgNAojIDQyICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4
LWdudWVhYmloZi9iaXRzL3NpZ3NldC5oIiAzIDQKI2RlZmluZSBfU0lHU0VUX0hfZm5zIDEKCgoj
ZGVmaW5lIF9FWFRFUk5fSU5MSU5FIF9fZXh0ZXJuX2lubGluZQoKCgojZGVmaW5lIF9fc2lnbWFz
ayhzaWcpICgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAoKChzaWcpIC0gMSkgJSAoOCAqIHNp
emVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSkpCgoKCiNkZWZpbmUgX19zaWd3b3JkKHNpZykgKCgo
c2lnKSAtIDEpIC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpCgoKI2RlZmluZSBf
X3NpZ2VtcHR5c2V0KHNldCkgKF9fZXh0ZW5zaW9uX18gKHsgaW50IF9fY250ID0gX1NJR1NFVF9O
V09SRFM7IHNpZ3NldF90ICpfX3NldCA9IChzZXQpOyB3aGlsZSAoLS1fX2NudCA+PSAwKSBfX3Nl
dC0+X192YWxbX19jbnRdID0gMDsgMDsgfSkpCgoKCgojZGVmaW5lIF9fc2lnZmlsbHNldChzZXQp
IChfX2V4dGVuc2lvbl9fICh7IGludCBfX2NudCA9IF9TSUdTRVRfTldPUkRTOyBzaWdzZXRfdCAq
X19zZXQgPSAoc2V0KTsgd2hpbGUgKC0tX19jbnQgPj0gMCkgX19zZXQtPl9fdmFsW19fY250XSA9
IH4wVUw7IDA7IH0pKQojIDcxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRz
L3NpZ3NldC5oIiAzIDQKI2RlZmluZSBfX3NpZ2lzZW1wdHlzZXQoc2V0KSAoX19leHRlbnNpb25f
XyAoeyBpbnQgX19jbnQgPSBfU0lHU0VUX05XT1JEUzsgY29uc3Qgc2lnc2V0X3QgKl9fc2V0ID0g
KHNldCk7IGludCBfX3JldCA9IF9fc2V0LT5fX3ZhbFstLV9fY250XTsgd2hpbGUgKCFfX3JldCAm
JiAtLV9fY250ID49IDApIF9fcmV0ID0gX19zZXQtPl9fdmFsW19fY250XTsgX19yZXQgPT0gMDsg
fSkpCgoKCgoKCiNkZWZpbmUgX19zaWdhbmRzZXQoZGVzdCxsZWZ0LHJpZ2h0KSAoX19leHRlbnNp
b25fXyAoeyBpbnQgX19jbnQgPSBfU0lHU0VUX05XT1JEUzsgc2lnc2V0X3QgKl9fZGVzdCA9IChk
ZXN0KTsgY29uc3Qgc2lnc2V0X3QgKl9fbGVmdCA9IChsZWZ0KTsgY29uc3Qgc2lnc2V0X3QgKl9f
cmlnaHQgPSAocmlnaHQpOyB3aGlsZSAoLS1fX2NudCA+PSAwKSBfX2Rlc3QtPl9fdmFsW19fY250
XSA9IChfX2xlZnQtPl9fdmFsW19fY250XSAmIF9fcmlnaHQtPl9fdmFsW19fY250XSk7IDA7IH0p
KQojIDg3ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3NpZ3NldC5oIiAz
IDQKI2RlZmluZSBfX3NpZ29yc2V0KGRlc3QsbGVmdCxyaWdodCkgKF9fZXh0ZW5zaW9uX18gKHsg
aW50IF9fY250ID0gX1NJR1NFVF9OV09SRFM7IHNpZ3NldF90ICpfX2Rlc3QgPSAoZGVzdCk7IGNv
bnN0IHNpZ3NldF90ICpfX2xlZnQgPSAobGVmdCk7IGNvbnN0IHNpZ3NldF90ICpfX3JpZ2h0ID0g
KHJpZ2h0KTsgd2hpbGUgKC0tX19jbnQgPj0gMCkgX19kZXN0LT5fX3ZhbFtfX2NudF0gPSAoX19s
ZWZ0LT5fX3ZhbFtfX2NudF0gfCBfX3JpZ2h0LT5fX3ZhbFtfX2NudF0pOyAwOyB9KSkKIyAxMDIg
Ii91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc2lnc2V0LmgiIDMgNApleHRl
cm4gaW50IF9fc2lnaXNtZW1iZXIgKGNvbnN0IF9fc2lnc2V0X3QgKiwgaW50KTsKZXh0ZXJuIGlu
dCBfX3NpZ2FkZHNldCAoX19zaWdzZXRfdCAqLCBpbnQpOwpleHRlcm4gaW50IF9fc2lnZGVsc2V0
IChfX3NpZ3NldF90ICosIGludCk7CgoKI2RlZmluZSBfX1NJR1NFVEZOKE5BTUUsQk9EWSxDT05T
VCkgX0VYVEVSTl9JTkxJTkUgaW50IE5BTUUgKENPTlNUIF9fc2lnc2V0X3QgKl9fc2V0LCBpbnQg
X19zaWcpIHsgdW5zaWduZWQgbG9uZyBpbnQgX19tYXNrID0gX19zaWdtYXNrIChfX3NpZyk7IHVu
c2lnbmVkIGxvbmcgaW50IF9fd29yZCA9IF9fc2lnd29yZCAoX19zaWcpOyByZXR1cm4gQk9EWTsg
fQojIDExNiAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9zaWdzZXQuaCIg
MyA0CmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBpbnQg
X19zaWdpc21lbWJlciAoY29uc3QgX19zaWdzZXRfdCAqX19zZXQsIGludCBfX3NpZykgeyB1bnNp
Z25lZCBsb25nIGludCBfX21hc2sgPSAoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgKCgoX19z
aWcpIC0gMSkgJSAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSkpOyB1bnNpZ25lZCBs
b25nIGludCBfX3dvcmQgPSAoKChfX3NpZykgLSAxKSAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBs
b25nIGludCkpKTsgcmV0dXJuIChfX3NldC0+X192YWxbX193b3JkXSAmIF9fbWFzaykgPyAxIDog
MDsgfQpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgaW50
IF9fc2lnYWRkc2V0ICggX19zaWdzZXRfdCAqX19zZXQsIGludCBfX3NpZykgeyB1bnNpZ25lZCBs
b25nIGludCBfX21hc2sgPSAoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgKCgoX19zaWcpIC0g
MSkgJSAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSkpOyB1bnNpZ25lZCBsb25nIGlu
dCBfX3dvcmQgPSAoKChfX3NpZykgLSAxKSAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGlu
dCkpKTsgcmV0dXJuICgoX19zZXQtPl9fdmFsW19fd29yZF0gfD0gX19tYXNrKSwgMCk7IH0KZXh0
ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGludCBfX3NpZ2Rl
bHNldCAoIF9fc2lnc2V0X3QgKl9fc2V0LCBpbnQgX19zaWcpIHsgdW5zaWduZWQgbG9uZyBpbnQg
X19tYXNrID0gKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8ICgoKF9fc2lnKSAtIDEpICUgKDgg
KiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpKTsgdW5zaWduZWQgbG9uZyBpbnQgX193b3Jk
ID0gKCgoX19zaWcpIC0gMSkgLyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSk7IHJl
dHVybiAoKF9fc2V0LT5fX3ZhbFtfX3dvcmRdICY9IH5fX21hc2spLCAwKTsgfQoKI3VuZGVmIF9f
U0lHU0VURk4KIyAzMyAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMgNAoKCgoKCiNkZWZpbmUg
X19zaWdfYXRvbWljX3RfZGVmaW5lZCAKCnR5cGVkZWYgX19zaWdfYXRvbWljX3Qgc2lnX2F0b21p
Y190OwoKCiN1bmRlZiBfX25lZWRfc2lnX2F0b21pY190CgoKCgoKCgojdW5kZWYgX19uZWVkX3Np
Z3NldF90CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3Np
Z251bS5oIiAxIDMgNAojIDIyICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRz
L3NpZ251bS5oIiAzIDQKI2RlZmluZSBTSUdfRVJSICgoX19zaWdoYW5kbGVyX3QpIC0xKQojZGVm
aW5lIFNJR19ERkwgKChfX3NpZ2hhbmRsZXJfdCkgMCkKI2RlZmluZSBTSUdfSUdOICgoX19zaWdo
YW5kbGVyX3QpIDEpCgoKI2RlZmluZSBTSUdfSE9MRCAoKF9fc2lnaGFuZGxlcl90KSAyKQoKCgoK
I2RlZmluZSBTSUdIVVAgMQojZGVmaW5lIFNJR0lOVCAyCiNkZWZpbmUgU0lHUVVJVCAzCiNkZWZp
bmUgU0lHSUxMIDQKI2RlZmluZSBTSUdUUkFQIDUKI2RlZmluZSBTSUdBQlJUIDYKI2RlZmluZSBT
SUdJT1QgNgojZGVmaW5lIFNJR0JVUyA3CiNkZWZpbmUgU0lHRlBFIDgKI2RlZmluZSBTSUdLSUxM
IDkKI2RlZmluZSBTSUdVU1IxIDEwCiNkZWZpbmUgU0lHU0VHViAxMQojZGVmaW5lIFNJR1VTUjIg
MTIKI2RlZmluZSBTSUdQSVBFIDEzCiNkZWZpbmUgU0lHQUxSTSAxNAojZGVmaW5lIFNJR1RFUk0g
MTUKI2RlZmluZSBTSUdTVEtGTFQgMTYKI2RlZmluZSBTSUdDTEQgU0lHQ0hMRAojZGVmaW5lIFNJ
R0NITEQgMTcKI2RlZmluZSBTSUdDT05UIDE4CiNkZWZpbmUgU0lHU1RPUCAxOQojZGVmaW5lIFNJ
R1RTVFAgMjAKI2RlZmluZSBTSUdUVElOIDIxCiNkZWZpbmUgU0lHVFRPVSAyMgojZGVmaW5lIFNJ
R1VSRyAyMwojZGVmaW5lIFNJR1hDUFUgMjQKI2RlZmluZSBTSUdYRlNaIDI1CiNkZWZpbmUgU0lH
VlRBTFJNIDI2CiNkZWZpbmUgU0lHUFJPRiAyNwojZGVmaW5lIFNJR1dJTkNIIDI4CiNkZWZpbmUg
U0lHUE9MTCBTSUdJTwojZGVmaW5lIFNJR0lPIDI5CiNkZWZpbmUgU0lHUFdSIDMwCiNkZWZpbmUg
U0lHU1lTIDMxCiNkZWZpbmUgU0lHVU5VU0VEIDMxCgojZGVmaW5lIF9OU0lHIDY1CgoKI2RlZmlu
ZSBTSUdSVE1JTiAoX19saWJjX2N1cnJlbnRfc2lncnRtaW4gKCkpCiNkZWZpbmUgU0lHUlRNQVgg
KF9fbGliY19jdXJyZW50X3NpZ3J0bWF4ICgpKQoKCgojZGVmaW5lIF9fU0lHUlRNSU4gMzIKI2Rl
ZmluZSBfX1NJR1JUTUFYIChfTlNJRyAtIDEpCiMgNTggIi91c3IvaW5jbHVkZS9zaWduYWwuaCIg
MiAzIDQKIyA3NCAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKI2RlZmluZSBfX25lZWRfdGlt
ZXNwZWMgCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3Np
Z2luZm8uaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0
cy9zaWdpbmZvLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2Jp
dHMvd29yZHNpemUuaCIgMSAzIDQKIyAxOCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJp
aGYvYml0cy93b3Jkc2l6ZS5oIiAzIDQKI2RlZmluZSBfX1dPUkRTSVpFIDMyCiMgMjUgIi91c3Iv
aW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc2lnaW5mby5oIiAyIDMgNAoKCgoKI2Rl
ZmluZSBfX2hhdmVfc2lndmFsX3QgMQoKCnR5cGVkZWYgdW5pb24gc2lndmFsCiAgewogICAgaW50
IHNpdmFsX2ludDsKICAgIHZvaWQgKnNpdmFsX3B0cjsKICB9IHNpZ3ZhbF90OwoKCgoKI2RlZmlu
ZSBfX2hhdmVfc2lnaW5mb190IDEKCiNkZWZpbmUgX19TSV9NQVhfU0laRSAxMjgKCgoKI2RlZmlu
ZSBfX1NJX1BBRF9TSVpFICgoX19TSV9NQVhfU0laRSAvIHNpemVvZiAoaW50KSkgLSAzKQoKCnR5
cGVkZWYgc3RydWN0CiAgewogICAgaW50IHNpX3NpZ25vOwogICAgaW50IHNpX2Vycm5vOwoKICAg
IGludCBzaV9jb2RlOwoKICAgIHVuaW9uCiAgICAgIHsKIGludCBfcGFkWygoMTI4IC8gc2l6ZW9m
IChpbnQpKSAtIDMpXTsKCgogc3RydWN0CiAgIHsKICAgICBfX3BpZF90IHNpX3BpZDsKICAgICBf
X3VpZF90IHNpX3VpZDsKICAgfSBfa2lsbDsKCgogc3RydWN0CiAgIHsKICAgICBpbnQgc2lfdGlk
OwogICAgIGludCBzaV9vdmVycnVuOwogICAgIHNpZ3ZhbF90IHNpX3NpZ3ZhbDsKICAgfSBfdGlt
ZXI7CgoKIHN0cnVjdAogICB7CiAgICAgX19waWRfdCBzaV9waWQ7CiAgICAgX191aWRfdCBzaV91
aWQ7CiAgICAgc2lndmFsX3Qgc2lfc2lndmFsOwogICB9IF9ydDsKCgogc3RydWN0CiAgIHsKICAg
ICBfX3BpZF90IHNpX3BpZDsKICAgICBfX3VpZF90IHNpX3VpZDsKICAgICBpbnQgc2lfc3RhdHVz
OwogICAgIF9fY2xvY2tfdCBzaV91dGltZTsKICAgICBfX2Nsb2NrX3Qgc2lfc3RpbWU7CiAgIH0g
X3NpZ2NobGQ7CgoKIHN0cnVjdAogICB7CiAgICAgdm9pZCAqc2lfYWRkcjsKICAgICBzaG9ydCBp
bnQgc2lfYWRkcl9sc2I7CiAgIH0gX3NpZ2ZhdWx0OwoKCiBzdHJ1Y3QKICAgewogICAgIGxvbmcg
aW50IHNpX2JhbmQ7CiAgICAgaW50IHNpX2ZkOwogICB9IF9zaWdwb2xsOwoKCiBzdHJ1Y3QKICAg
ewogICAgIHZvaWQgKl9jYWxsX2FkZHI7CiAgICAgaW50IF9zeXNjYWxsOwogICAgIHVuc2lnbmVk
IGludCBfYXJjaDsKICAgfSBfc2lnc3lzOwogICAgICB9IF9zaWZpZWxkczsKICB9IHNpZ2luZm9f
dDsKCgoKI2RlZmluZSBzaV9waWQgX3NpZmllbGRzLl9raWxsLnNpX3BpZAojZGVmaW5lIHNpX3Vp
ZCBfc2lmaWVsZHMuX2tpbGwuc2lfdWlkCiNkZWZpbmUgc2lfdGltZXJpZCBfc2lmaWVsZHMuX3Rp
bWVyLnNpX3RpZAojZGVmaW5lIHNpX292ZXJydW4gX3NpZmllbGRzLl90aW1lci5zaV9vdmVycnVu
CiNkZWZpbmUgc2lfc3RhdHVzIF9zaWZpZWxkcy5fc2lnY2hsZC5zaV9zdGF0dXMKI2RlZmluZSBz
aV91dGltZSBfc2lmaWVsZHMuX3NpZ2NobGQuc2lfdXRpbWUKI2RlZmluZSBzaV9zdGltZSBfc2lm
aWVsZHMuX3NpZ2NobGQuc2lfc3RpbWUKI2RlZmluZSBzaV92YWx1ZSBfc2lmaWVsZHMuX3J0LnNp
X3NpZ3ZhbAojZGVmaW5lIHNpX2ludCBfc2lmaWVsZHMuX3J0LnNpX3NpZ3ZhbC5zaXZhbF9pbnQK
I2RlZmluZSBzaV9wdHIgX3NpZmllbGRzLl9ydC5zaV9zaWd2YWwuc2l2YWxfcHRyCiNkZWZpbmUg
c2lfYWRkciBfc2lmaWVsZHMuX3NpZ2ZhdWx0LnNpX2FkZHIKI2RlZmluZSBzaV9hZGRyX2xzYiBf
c2lmaWVsZHMuX3NpZ2ZhdWx0LnNpX2FkZHJfbHNiCiNkZWZpbmUgc2lfYmFuZCBfc2lmaWVsZHMu
X3NpZ3BvbGwuc2lfYmFuZAojZGVmaW5lIHNpX2ZkIF9zaWZpZWxkcy5fc2lncG9sbC5zaV9mZAoj
ZGVmaW5lIHNpX2NhbGxfYWRkciBfc2lmaWVsZHMuX3NpZ3N5cy5fY2FsbF9hZGRyCiNkZWZpbmUg
c2lfc3lzY2FsbCBfc2lmaWVsZHMuX3NpZ3N5cy5fc3lzY2FsbAojZGVmaW5lIHNpX2FyY2ggX3Np
ZmllbGRzLl9zaWdzeXMuX2FyY2gKCgoKCmVudW0KewogIFNJX0FTWU5DTkwgPSAtNjAsCiNkZWZp
bmUgU0lfQVNZTkNOTCBTSV9BU1lOQ05MCiAgU0lfVEtJTEwgPSAtNiwKI2RlZmluZSBTSV9US0lM
TCBTSV9US0lMTAogIFNJX1NJR0lPLAojZGVmaW5lIFNJX1NJR0lPIFNJX1NJR0lPCiAgU0lfQVNZ
TkNJTywKI2RlZmluZSBTSV9BU1lOQ0lPIFNJX0FTWU5DSU8KICBTSV9NRVNHUSwKI2RlZmluZSBT
SV9NRVNHUSBTSV9NRVNHUQogIFNJX1RJTUVSLAojZGVmaW5lIFNJX1RJTUVSIFNJX1RJTUVSCiAg
U0lfUVVFVUUsCiNkZWZpbmUgU0lfUVVFVUUgU0lfUVVFVUUKICBTSV9VU0VSLAojZGVmaW5lIFNJ
X1VTRVIgU0lfVVNFUgogIFNJX0tFUk5FTCA9IDB4ODAKI2RlZmluZSBTSV9LRVJORUwgU0lfS0VS
TkVMCn07CgoKCmVudW0KewogIElMTF9JTExPUEMgPSAxLAojZGVmaW5lIElMTF9JTExPUEMgSUxM
X0lMTE9QQwogIElMTF9JTExPUE4sCiNkZWZpbmUgSUxMX0lMTE9QTiBJTExfSUxMT1BOCiAgSUxM
X0lMTEFEUiwKI2RlZmluZSBJTExfSUxMQURSIElMTF9JTExBRFIKICBJTExfSUxMVFJQLAojZGVm
aW5lIElMTF9JTExUUlAgSUxMX0lMTFRSUAogIElMTF9QUlZPUEMsCiNkZWZpbmUgSUxMX1BSVk9Q
QyBJTExfUFJWT1BDCiAgSUxMX1BSVlJFRywKI2RlZmluZSBJTExfUFJWUkVHIElMTF9QUlZSRUcK
ICBJTExfQ09QUk9DLAojZGVmaW5lIElMTF9DT1BST0MgSUxMX0NPUFJPQwogIElMTF9CQURTVEsK
I2RlZmluZSBJTExfQkFEU1RLIElMTF9CQURTVEsKfTsKCgplbnVtCnsKICBGUEVfSU5URElWID0g
MSwKI2RlZmluZSBGUEVfSU5URElWIEZQRV9JTlRESVYKICBGUEVfSU5UT1ZGLAojZGVmaW5lIEZQ
RV9JTlRPVkYgRlBFX0lOVE9WRgogIEZQRV9GTFRESVYsCiNkZWZpbmUgRlBFX0ZMVERJViBGUEVf
RkxURElWCiAgRlBFX0ZMVE9WRiwKI2RlZmluZSBGUEVfRkxUT1ZGIEZQRV9GTFRPVkYKICBGUEVf
RkxUVU5ELAojZGVmaW5lIEZQRV9GTFRVTkQgRlBFX0ZMVFVORAogIEZQRV9GTFRSRVMsCiNkZWZp
bmUgRlBFX0ZMVFJFUyBGUEVfRkxUUkVTCiAgRlBFX0ZMVElOViwKI2RlZmluZSBGUEVfRkxUSU5W
IEZQRV9GTFRJTlYKICBGUEVfRkxUU1VCCiNkZWZpbmUgRlBFX0ZMVFNVQiBGUEVfRkxUU1VCCn07
CgoKZW51bQp7CiAgU0VHVl9NQVBFUlIgPSAxLAojZGVmaW5lIFNFR1ZfTUFQRVJSIFNFR1ZfTUFQ
RVJSCiAgU0VHVl9BQ0NFUlIKI2RlZmluZSBTRUdWX0FDQ0VSUiBTRUdWX0FDQ0VSUgp9OwoKCmVu
dW0KewogIEJVU19BRFJBTE4gPSAxLAojZGVmaW5lIEJVU19BRFJBTE4gQlVTX0FEUkFMTgogIEJV
U19BRFJFUlIsCiNkZWZpbmUgQlVTX0FEUkVSUiBCVVNfQURSRVJSCiAgQlVTX09CSkVSUiwKI2Rl
ZmluZSBCVVNfT0JKRVJSIEJVU19PQkpFUlIKICBCVVNfTUNFRVJSX0FSLAojZGVmaW5lIEJVU19N
Q0VFUlJfQVIgQlVTX01DRUVSUl9BUgogIEJVU19NQ0VFUlJfQU8KI2RlZmluZSBCVVNfTUNFRVJS
X0FPIEJVU19NQ0VFUlJfQU8KfTsKCgplbnVtCnsKICBUUkFQX0JSS1BUID0gMSwKI2RlZmluZSBU
UkFQX0JSS1BUIFRSQVBfQlJLUFQKICBUUkFQX1RSQUNFCiNkZWZpbmUgVFJBUF9UUkFDRSBUUkFQ
X1RSQUNFCn07CgoKZW51bQp7CiAgQ0xEX0VYSVRFRCA9IDEsCiNkZWZpbmUgQ0xEX0VYSVRFRCBD
TERfRVhJVEVECiAgQ0xEX0tJTExFRCwKI2RlZmluZSBDTERfS0lMTEVEIENMRF9LSUxMRUQKICBD
TERfRFVNUEVELAojZGVmaW5lIENMRF9EVU1QRUQgQ0xEX0RVTVBFRAogIENMRF9UUkFQUEVELAoj
ZGVmaW5lIENMRF9UUkFQUEVEIENMRF9UUkFQUEVECiAgQ0xEX1NUT1BQRUQsCiNkZWZpbmUgQ0xE
X1NUT1BQRUQgQ0xEX1NUT1BQRUQKICBDTERfQ09OVElOVUVECiNkZWZpbmUgQ0xEX0NPTlRJTlVF
RCBDTERfQ09OVElOVUVECn07CgoKZW51bQp7CiAgUE9MTF9JTiA9IDEsCiNkZWZpbmUgUE9MTF9J
TiBQT0xMX0lOCiAgUE9MTF9PVVQsCiNkZWZpbmUgUE9MTF9PVVQgUE9MTF9PVVQKICBQT0xMX01T
RywKI2RlZmluZSBQT0xMX01TRyBQT0xMX01TRwogIFBPTExfRVJSLAojZGVmaW5lIFBPTExfRVJS
IFBPTExfRVJSCiAgUE9MTF9QUkksCiNkZWZpbmUgUE9MTF9QUkkgUE9MTF9QUkkKICBQT0xMX0hV
UAojZGVmaW5lIFBPTExfSFVQIFBPTExfSFVQCn07CgojdW5kZWYgX19uZWVkX3NpZ2luZm9fdAoK
CgoKCiNkZWZpbmUgX19oYXZlX3NpZ2V2ZW50X3QgMQoKCiNkZWZpbmUgX19TSUdFVl9NQVhfU0la
RSA2NAoKCgojZGVmaW5lIF9fU0lHRVZfUEFEX1NJWkUgKChfX1NJR0VWX01BWF9TSVpFIC8gc2l6
ZW9mIChpbnQpKSAtIDMpCiMgMjk1ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9i
aXRzL3NpZ2luZm8uaCIgMyA0CnR5cGVkZWYgc3RydWN0IHNpZ2V2ZW50CiAgewogICAgc2lndmFs
X3Qgc2lnZXZfdmFsdWU7CiAgICBpbnQgc2lnZXZfc2lnbm87CiAgICBpbnQgc2lnZXZfbm90aWZ5
OwoKICAgIHVuaW9uCiAgICAgIHsKIGludCBfcGFkWygoNjQgLyBzaXplb2YgKGludCkpIC0gMyld
OwoKCgogX19waWRfdCBfdGlkOwoKIHN0cnVjdAogICB7CiAgICAgdm9pZCAoKl9mdW5jdGlvbikg
KHNpZ3ZhbF90KTsKICAgICBwdGhyZWFkX2F0dHJfdCAqX2F0dHJpYnV0ZTsKICAgfSBfc2lnZXZf
dGhyZWFkOwogICAgICB9IF9zaWdldl91bjsKICB9IHNpZ2V2ZW50X3Q7CgoKI2RlZmluZSBzaWdl
dl9ub3RpZnlfZnVuY3Rpb24gX3NpZ2V2X3VuLl9zaWdldl90aHJlYWQuX2Z1bmN0aW9uCiNkZWZp
bmUgc2lnZXZfbm90aWZ5X2F0dHJpYnV0ZXMgX3NpZ2V2X3VuLl9zaWdldl90aHJlYWQuX2F0dHJp
YnV0ZQoKCmVudW0KewogIFNJR0VWX1NJR05BTCA9IDAsCiNkZWZpbmUgU0lHRVZfU0lHTkFMIFNJ
R0VWX1NJR05BTAogIFNJR0VWX05PTkUsCiNkZWZpbmUgU0lHRVZfTk9ORSBTSUdFVl9OT05FCiAg
U0lHRVZfVEhSRUFELAojZGVmaW5lIFNJR0VWX1RIUkVBRCBTSUdFVl9USFJFQUQKCiAgU0lHRVZf
VEhSRUFEX0lEID0gNAojZGVmaW5lIFNJR0VWX1RIUkVBRF9JRCBTSUdFVl9USFJFQURfSUQKfTsK
IyA4MSAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMgNAoKCgoKdHlwZWRlZiB2b2lkICgqX19z
aWdoYW5kbGVyX3QpIChpbnQpOwoKCgoKZXh0ZXJuIF9fc2lnaGFuZGxlcl90IF9fc3lzdl9zaWdu
YWwgKGludCBfX3NpZywgX19zaWdoYW5kbGVyX3QgX19oYW5kbGVyKQogICAgIHRocm93ICgpOwoK
ZXh0ZXJuIF9fc2lnaGFuZGxlcl90IHN5c3Zfc2lnbmFsIChpbnQgX19zaWcsIF9fc2lnaGFuZGxl
cl90IF9faGFuZGxlcikKICAgICB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBfX3NpZ2hhbmRsZXJf
dCBzaWduYWwgKGludCBfX3NpZywgX19zaWdoYW5kbGVyX3QgX19oYW5kbGVyKQogICAgIHRocm93
ICgpOwojIDExNCAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKCgoKCgpleHRlcm4gX19zaWdo
YW5kbGVyX3QgYnNkX3NpZ25hbCAoaW50IF9fc2lnLCBfX3NpZ2hhbmRsZXJfdCBfX2hhbmRsZXIp
CiAgICAgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQga2lsbCAoX19waWRfdCBfX3BpZCwgaW50
IF9fc2lnKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBraWxscGcgKF9fcGlkX3QgX19wZ3Jw
LCBpbnQgX19zaWcpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCByYWlzZSAoaW50IF9fc2lnKSB0
aHJvdyAoKTsKCgoKCmV4dGVybiBfX3NpZ2hhbmRsZXJfdCBzc2lnbmFsIChpbnQgX19zaWcsIF9f
c2lnaGFuZGxlcl90IF9faGFuZGxlcikKICAgICB0aHJvdyAoKTsKZXh0ZXJuIGludCBnc2lnbmFs
IChpbnQgX19zaWcpIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgcHNpZ25hbCAoaW50IF9fc2ln
LCBjb25zdCBjaGFyICpfX3MpOwoKCgoKZXh0ZXJuIHZvaWQgcHNpZ2luZm8gKGNvbnN0IHNpZ2lu
Zm9fdCAqX19waW5mbywgY29uc3QgY2hhciAqX19zKTsKIyAxNjcgIi91c3IvaW5jbHVkZS9zaWdu
YWwuaCIgMyA0CmV4dGVybiBpbnQgX19zaWdwYXVzZSAoaW50IF9fc2lnX29yX21hc2ssIGludCBf
X2lzX3NpZyk7CgoKCmV4dGVybiBpbnQgc2lncGF1c2UgKGludCBfX3NpZykgX19hc21fXyAoIl9f
eHBnX3NpZ3BhdXNlIik7CiMgMTg2ICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDMgNAojZGVmaW5l
IHNpZ21hc2soc2lnKSBfX3NpZ21hc2soc2lnKQoKCmV4dGVybiBpbnQgc2lnYmxvY2sgKGludCBf
X21hc2spIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwoKCmV4dGVy
biBpbnQgc2lnc2V0bWFzayAoaW50IF9fbWFzaykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
ZGVwcmVjYXRlZF9fKSk7CgoKZXh0ZXJuIGludCBzaWdnZXRtYXNrICh2b2lkKSB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKTsKCgoKCiNkZWZpbmUgTlNJRyBfTlNJRwoK
Cgp0eXBlZGVmIF9fc2lnaGFuZGxlcl90IHNpZ2hhbmRsZXJfdDsKCgoKCnR5cGVkZWYgX19zaWdo
YW5kbGVyX3Qgc2lnX3Q7CgoKCgoKZXh0ZXJuIGludCBzaWdlbXB0eXNldCAoc2lnc2V0X3QgKl9f
c2V0KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJu
IGludCBzaWdmaWxsc2V0IChzaWdzZXRfdCAqX19zZXQpIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHNpZ2FkZHNldCAoc2lnc2V0X3QgKl9f
c2V0LCBpbnQgX19zaWdubykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx
KSkpOwoKCmV4dGVybiBpbnQgc2lnZGVsc2V0IChzaWdzZXRfdCAqX19zZXQsIGludCBfX3NpZ25v
KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGlu
dCBzaWdpc21lbWJlciAoY29uc3Qgc2lnc2V0X3QgKl9fc2V0LCBpbnQgX19zaWdubykKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCmV4dGVybiBpbnQg
c2lnaXNlbXB0eXNldCAoY29uc3Qgc2lnc2V0X3QgKl9fc2V0KSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBzaWdhbmRzZXQgKHNpZ3NldF90
ICpfX3NldCwgY29uc3Qgc2lnc2V0X3QgKl9fbGVmdCwKICAgICAgICBjb25zdCBzaWdzZXRfdCAq
X19yaWdodCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyLCAzKSkp
OwoKCmV4dGVybiBpbnQgc2lnb3JzZXQgKHNpZ3NldF90ICpfX3NldCwgY29uc3Qgc2lnc2V0X3Qg
Kl9fbGVmdCwKICAgICAgIGNvbnN0IHNpZ3NldF90ICpfX3JpZ2h0KSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIsIDMpKSk7CgoKCgojIDEgIi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc2lnYWN0aW9uLmgiIDEgMyA0CiMgMjQgIi91c3IvaW5j
bHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc2lnYWN0aW9uLmgiIDMgNApzdHJ1Y3Qgc2ln
YWN0aW9uCiAgewoKCiAgICB1bmlvbgogICAgICB7CgogX19zaWdoYW5kbGVyX3Qgc2FfaGFuZGxl
cjsKCiB2b2lkICgqc2Ffc2lnYWN0aW9uKSAoaW50LCBzaWdpbmZvX3QgKiwgdm9pZCAqKTsKICAg
ICAgfQogICAgX19zaWdhY3Rpb25faGFuZGxlcjsKI2RlZmluZSBzYV9oYW5kbGVyIF9fc2lnYWN0
aW9uX2hhbmRsZXIuc2FfaGFuZGxlcgojZGVmaW5lIHNhX3NpZ2FjdGlvbiBfX3NpZ2FjdGlvbl9o
YW5kbGVyLnNhX3NpZ2FjdGlvbgoKCgoKCiAgICBfX3NpZ3NldF90IHNhX21hc2s7CgoKICAgIGlu
dCBzYV9mbGFnczsKCgogICAgdm9pZCAoKnNhX3Jlc3RvcmVyKSAodm9pZCk7CiAgfTsKCgojZGVm
aW5lIFNBX05PQ0xEU1RPUCAxCiNkZWZpbmUgU0FfTk9DTERXQUlUIDIKI2RlZmluZSBTQV9TSUdJ
TkZPIDQKCgojZGVmaW5lIFNBX09OU1RBQ0sgMHgwODAwMDAwMAoKCiNkZWZpbmUgU0FfUkVTVEFS
VCAweDEwMDAwMDAwCiNkZWZpbmUgU0FfTk9ERUZFUiAweDQwMDAwMDAwCgojZGVmaW5lIFNBX1JF
U0VUSEFORCAweDgwMDAwMDAwCgoKI2RlZmluZSBTQV9JTlRFUlJVUFQgMHgyMDAwMDAwMAoKCiNk
ZWZpbmUgU0FfTk9NQVNLIFNBX05PREVGRVIKI2RlZmluZSBTQV9PTkVTSE9UIFNBX1JFU0VUSEFO
RAojZGVmaW5lIFNBX1NUQUNLIFNBX09OU1RBQ0sKCgoKI2RlZmluZSBTSUdfQkxPQ0sgMAojZGVm
aW5lIFNJR19VTkJMT0NLIDEKI2RlZmluZSBTSUdfU0VUTUFTSyAyCiMgMjQ2ICIvdXNyL2luY2x1
ZGUvc2lnbmFsLmgiIDIgMyA0CgoKZXh0ZXJuIGludCBzaWdwcm9jbWFzayAoaW50IF9faG93LCBj
b25zdCBzaWdzZXRfdCAqX19yZXN0cmljdCBfX3NldCwKICAgc2lnc2V0X3QgKl9fcmVzdHJpY3Qg
X19vc2V0KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBzaWdzdXNwZW5kIChjb25zdCBzaWdz
ZXRfdCAqX19zZXQpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4g
aW50IHNpZ2FjdGlvbiAoaW50IF9fc2lnLCBjb25zdCBzdHJ1Y3Qgc2lnYWN0aW9uICpfX3Jlc3Ry
aWN0IF9fYWN0LAogICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gKl9fcmVzdHJpY3QgX19vYWN0KSB0
aHJvdyAoKTsKCgpleHRlcm4gaW50IHNpZ3BlbmRpbmcgKHNpZ3NldF90ICpfX3NldCkgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCgpleHRlcm4gaW50IHNp
Z3dhaXQgKGNvbnN0IHNpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2V0LCBpbnQgKl9fcmVzdHJpY3Qg
X19zaWcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKCgpl
eHRlcm4gaW50IHNpZ3dhaXRpbmZvIChjb25zdCBzaWdzZXRfdCAqX19yZXN0cmljdCBfX3NldCwK
ICAgc2lnaW5mb190ICpfX3Jlc3RyaWN0IF9faW5mbykgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs
bF9fICgxKSkpOwoKCgoKCgpleHRlcm4gaW50IHNpZ3RpbWVkd2FpdCAoY29uc3Qgc2lnc2V0X3Qg
Kl9fcmVzdHJpY3QgX19zZXQsCiAgICBzaWdpbmZvX3QgKl9fcmVzdHJpY3QgX19pbmZvLAogICAg
Y29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0IF9fdGltZW91dCkKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCmV4dGVybiBpbnQgc2lncXVldWUgKF9fcGlk
X3QgX19waWQsIGludCBfX3NpZywgY29uc3QgdW5pb24gc2lndmFsIF9fdmFsKQogICAgIHRocm93
ICgpOwojIDMwMyAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKZXh0ZXJuIGNvbnN0IGNoYXIg
KmNvbnN0IF9zeXNfc2lnbGlzdFs2NV07CmV4dGVybiBjb25zdCBjaGFyICpjb25zdCBzeXNfc2ln
bGlzdFs2NV07CgoKc3RydWN0IHNpZ3ZlYwogIHsKICAgIF9fc2lnaGFuZGxlcl90IHN2X2hhbmRs
ZXI7CiAgICBpbnQgc3ZfbWFzazsKCiAgICBpbnQgc3ZfZmxhZ3M7CiNkZWZpbmUgc3Zfb25zdGFj
ayBzdl9mbGFncwogIH07CgoKI2RlZmluZSBTVl9PTlNUQUNLICgxIDw8IDApCiNkZWZpbmUgU1Zf
SU5URVJSVVBUICgxIDw8IDEpCiNkZWZpbmUgU1ZfUkVTRVRIQU5EICgxIDw8IDIpCgoKCgoKCgpl
eHRlcm4gaW50IHNpZ3ZlYyAoaW50IF9fc2lnLCBjb25zdCBzdHJ1Y3Qgc2lndmVjICpfX3ZlYywK
ICAgICBzdHJ1Y3Qgc2lndmVjICpfX292ZWMpIHRocm93ICgpOwoKCgojIDEgIi91c3IvaW5jbHVk
ZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc2lnY29udGV4dC5oIiAxIDMgNAojIDI1ICIvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3NpZ2NvbnRleHQuaCIgMyA0CiNkZWZp
bmUgc2lnY29udGV4dF9zdHJ1Y3Qgc2lnY29udGV4dAoKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxp
bnV4LWdudWVhYmloZi9hc20vc2lnY29udGV4dC5oIiAxIDMgNAoKI2RlZmluZSBfQVNNQVJNX1NJ
R0NPTlRFWFRfSCAKCgoKCgoKc3RydWN0IHNpZ2NvbnRleHQgewogdW5zaWduZWQgbG9uZyB0cmFw
X25vOwogdW5zaWduZWQgbG9uZyBlcnJvcl9jb2RlOwogdW5zaWduZWQgbG9uZyBvbGRtYXNrOwog
dW5zaWduZWQgbG9uZyBhcm1fcjA7CiB1bnNpZ25lZCBsb25nIGFybV9yMTsKIHVuc2lnbmVkIGxv
bmcgYXJtX3IyOwogdW5zaWduZWQgbG9uZyBhcm1fcjM7CiB1bnNpZ25lZCBsb25nIGFybV9yNDsK
IHVuc2lnbmVkIGxvbmcgYXJtX3I1OwogdW5zaWduZWQgbG9uZyBhcm1fcjY7CiB1bnNpZ25lZCBs
b25nIGFybV9yNzsKIHVuc2lnbmVkIGxvbmcgYXJtX3I4OwogdW5zaWduZWQgbG9uZyBhcm1fcjk7
CiB1bnNpZ25lZCBsb25nIGFybV9yMTA7CiB1bnNpZ25lZCBsb25nIGFybV9mcDsKIHVuc2lnbmVk
IGxvbmcgYXJtX2lwOwogdW5zaWduZWQgbG9uZyBhcm1fc3A7CiB1bnNpZ25lZCBsb25nIGFybV9s
cjsKIHVuc2lnbmVkIGxvbmcgYXJtX3BjOwogdW5zaWduZWQgbG9uZyBhcm1fY3BzcjsKIHVuc2ln
bmVkIGxvbmcgZmF1bHRfYWRkcmVzczsKfTsKIyAyOCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1n
bnVlYWJpaGYvYml0cy9zaWdjb250ZXh0LmgiIDIgMyA0CgoKI2RlZmluZSBfX25lZWRfTlVMTCAK
IyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAxNTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9f
bmVlZF9wdHJkaWZmX3QKIyAyMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF9zaXpl
X3QKIyAzNDMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80
LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF93Y2hhcl90CiMgMzk3ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVk
ZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBOVUxMCgojZGVmaW5lIE5VTEwgX19udWxsCiMgNDA4ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVk
ZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfTlVMTAoKCgoKI2RlZmluZSBvZmZzZXRvZihU
WVBFLE1FTUJFUikgX19idWlsdGluX29mZnNldG9mIChUWVBFLCBNRU1CRVIpCiMgMzIgIi91c3Iv
aW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc2lnY29udGV4dC5oIiAyIDMgNAojIDMz
MyAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMgNAoKCmV4dGVybiBpbnQgc2lncmV0dXJuIChz
dHJ1Y3Qgc2lnY29udGV4dCAqX19zY3ApIHRocm93ICgpOwoKCgoKCiNkZWZpbmUgX19uZWVkX3Np
emVfdCAKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
NC45LjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAxNTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2Nj
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3Vu
ZGVmIF9fbmVlZF9wdHJkaWZmX3QKIyAyMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVl
ZF9zaXplX3QKIyAzNDMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS80LjkuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF93Y2hhcl90CiMg
Mzk3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMv
aW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBOVUxMCgojZGVmaW5lIE5VTEwgX19udWxsCiMg
NDA4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMv
aW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfTlVMTAoKCgoKI2RlZmluZSBvZmZz
ZXRvZihUWVBFLE1FTUJFUikgX19idWlsdGluX29mZnNldG9mIChUWVBFLCBNRU1CRVIpCiMgMzQz
ICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMyA0CgoKCgpleHRlcm4gaW50IHNpZ2ludGVycnVw
dCAoaW50IF9fc2lnLCBpbnQgX19pbnRlcnJ1cHQpIHRocm93ICgpOwoKIyAxICIvdXNyL2luY2x1
ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3NpZ3N0YWNrLmgiIDEgMyA0CiMgMjUgIi91c3Iv
aW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc2lnc3RhY2suaCIgMyA0CnN0cnVjdCBz
aWdzdGFjawogIHsKICAgIHZvaWQgKnNzX3NwOwogICAgaW50IHNzX29uc3RhY2s7CiAgfTsKCgoK
ZW51bQp7CiAgU1NfT05TVEFDSyA9IDEsCiNkZWZpbmUgU1NfT05TVEFDSyBTU19PTlNUQUNLCiAg
U1NfRElTQUJMRQojZGVmaW5lIFNTX0RJU0FCTEUgU1NfRElTQUJMRQp9OwoKCiNkZWZpbmUgTUlO
U0lHU1RLU1ogMjA0OAoKCiNkZWZpbmUgU0lHU1RLU1ogODE5MgoKCgp0eXBlZGVmIHN0cnVjdCBz
aWdhbHRzdGFjawogIHsKICAgIHZvaWQgKnNzX3NwOwogICAgaW50IHNzX2ZsYWdzOwogICAgc2l6
ZV90IHNzX3NpemU7CiAgfSBzdGFja190OwojIDM1MCAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAy
IDMgNAoKCiMgMSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvc3lzL3Vjb250ZXh0
LmgiIDEgMyA0CiMgMjEgIi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3N5cy91Y29u
dGV4dC5oIiAzIDQKI2RlZmluZSBfU1lTX1VDT05URVhUX0ggMQoKCiMgMSAiL3Vzci9pbmNsdWRl
L3NpZ25hbC5oIiAxIDMgNAojIDI1ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9z
eXMvdWNvbnRleHQuaCIgMiAzIDQKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVh
YmloZi9iaXRzL3NpZ2NvbnRleHQuaCIgMSAzIDQKIyAyOSAiL3Vzci9pbmNsdWRlL2FybS1saW51
eC1nbnVlYWJpaGYvc3lzL3Vjb250ZXh0LmgiIDIgMyA0Cgp0eXBlZGVmIGludCBncmVnX3Q7CgoK
I2RlZmluZSBOR1JFRyAxOAoKCnR5cGVkZWYgZ3JlZ190IGdyZWdzZXRfdFsxOF07CgoKZW51bQp7
CiAgUkVHX1IwID0gMCwKI2RlZmluZSBSRUdfUjAgUkVHX1IwCiAgUkVHX1IxID0gMSwKI2RlZmlu
ZSBSRUdfUjEgUkVHX1IxCiAgUkVHX1IyID0gMiwKI2RlZmluZSBSRUdfUjIgUkVHX1IyCiAgUkVH
X1IzID0gMywKI2RlZmluZSBSRUdfUjMgUkVHX1IzCiAgUkVHX1I0ID0gNCwKI2RlZmluZSBSRUdf
UjQgUkVHX1I0CiAgUkVHX1I1ID0gNSwKI2RlZmluZSBSRUdfUjUgUkVHX1I1CiAgUkVHX1I2ID0g
NiwKI2RlZmluZSBSRUdfUjYgUkVHX1I2CiAgUkVHX1I3ID0gNywKI2RlZmluZSBSRUdfUjcgUkVH
X1I3CiAgUkVHX1I4ID0gOCwKI2RlZmluZSBSRUdfUjggUkVHX1I4CiAgUkVHX1I5ID0gOSwKI2Rl
ZmluZSBSRUdfUjkgUkVHX1I5CiAgUkVHX1IxMCA9IDEwLAojZGVmaW5lIFJFR19SMTAgUkVHX1Ix
MAogIFJFR19SMTEgPSAxMSwKI2RlZmluZSBSRUdfUjExIFJFR19SMTEKICBSRUdfUjEyID0gMTIs
CiNkZWZpbmUgUkVHX1IxMiBSRUdfUjEyCiAgUkVHX1IxMyA9IDEzLAojZGVmaW5lIFJFR19SMTMg
UkVHX1IxMwogIFJFR19SMTQgPSAxNCwKI2RlZmluZSBSRUdfUjE0IFJFR19SMTQKICBSRUdfUjE1
ID0gMTUKI2RlZmluZSBSRUdfUjE1IFJFR19SMTUKfTsKCnN0cnVjdCBfbGliY19mcHN0YXRlCnsK
ICBzdHJ1Y3QKICB7CiAgICB1bnNpZ25lZCBpbnQgc2lnbjE6MTsKICAgIHVuc2lnbmVkIGludCB1
bnVzZWQ6MTU7CiAgICB1bnNpZ25lZCBpbnQgc2lnbjI6MTsKICAgIHVuc2lnbmVkIGludCBleHBv
bmVudDoxNDsKICAgIHVuc2lnbmVkIGludCBqOjE7CiAgICB1bnNpZ25lZCBpbnQgbWFudGlzc2Ex
OjMxOwogICAgdW5zaWduZWQgaW50IG1hbnRpc3NhMDozMjsKICB9IGZwcmVnc1s4XTsKICB1bnNp
Z25lZCBpbnQgZnBzcjozMjsKICB1bnNpZ25lZCBpbnQgZnBjcjozMjsKICB1bnNpZ25lZCBjaGFy
IGZ0eXBlWzhdOwogIHVuc2lnbmVkIGludCBpbml0X2ZsYWc7Cn07Cgp0eXBlZGVmIHN0cnVjdCBf
bGliY19mcHN0YXRlIGZwcmVnc2V0X3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3Qgc2lnY29udGV4dCBt
Y29udGV4dF90OwoKCnR5cGVkZWYgc3RydWN0IHVjb250ZXh0CiAgewogICAgdW5zaWduZWQgbG9u
ZyB1Y19mbGFnczsKICAgIHN0cnVjdCB1Y29udGV4dCAqdWNfbGluazsKICAgIHN0YWNrX3QgdWNf
c3RhY2s7CiAgICBtY29udGV4dF90IHVjX21jb250ZXh0OwogICAgX19zaWdzZXRfdCB1Y19zaWdt
YXNrOwogICAgdW5zaWduZWQgbG9uZyB1Y19yZWdzcGFjZVsxMjhdIF9fYXR0cmlidXRlX18oKF9f
YWxpZ25lZF9fKDgpKSk7CiAgfSB1Y29udGV4dF90OwojIDM1MyAiL3Vzci9pbmNsdWRlL3NpZ25h
bC5oIiAyIDMgNAoKCgoKCmV4dGVybiBpbnQgc2lnc3RhY2sgKHN0cnVjdCBzaWdzdGFjayAqX19z
cywgc3RydWN0IHNpZ3N0YWNrICpfX29zcykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19kZXByZWNhdGVkX18pKTsKCgoKZXh0ZXJuIGludCBzaWdhbHRzdGFjayAoY29uc3Qgc3RydWN0
IHNpZ2FsdHN0YWNrICpfX3Jlc3RyaWN0IF9fc3MsCiAgIHN0cnVjdCBzaWdhbHRzdGFjayAqX19y
ZXN0cmljdCBfX29zcykgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IHNpZ2hvbGQgKGludCBf
X3NpZykgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzaWdyZWxzZSAoaW50IF9fc2lnKSB0aHJvdyAo
KTsKCgpleHRlcm4gaW50IHNpZ2lnbm9yZSAoaW50IF9fc2lnKSB0aHJvdyAoKTsKCgpleHRlcm4g
X19zaWdoYW5kbGVyX3Qgc2lnc2V0IChpbnQgX19zaWcsIF9fc2lnaGFuZGxlcl90IF9fZGlzcCkg
dGhyb3cgKCk7CgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0
cy9zaWd0aHJlYWQuaCIgMSAzIDQKIyAyMCAiL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJp
aGYvYml0cy9zaWd0aHJlYWQuaCIgMyA0CiNkZWZpbmUgX0JJVFNfU0lHVEhSRUFEX0ggMQojIDMw
ICIvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3NpZ3RocmVhZC5oIiAzIDQK
ZXh0ZXJuIGludCBwdGhyZWFkX3NpZ21hc2sgKGludCBfX2hvdywKICAgICAgIGNvbnN0IF9fc2ln
c2V0X3QgKl9fcmVzdHJpY3QgX19uZXdtYXNrLAogICAgICAgX19zaWdzZXRfdCAqX19yZXN0cmlj
dCBfX29sZG1hc2spdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2tpbGwgKHB0aHJlYWRf
dCBfX3RocmVhZGlkLCBpbnQgX19zaWdubykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgcHRocmVh
ZF9zaWdxdWV1ZSAocHRocmVhZF90IF9fdGhyZWFkaWQsIGludCBfX3NpZ25vLAogICAgICAgIGNv
bnN0IHVuaW9uIHNpZ3ZhbCBfX3ZhbHVlKSB0aHJvdyAoKTsKIyAzODkgIi91c3IvaW5jbHVkZS9z
aWduYWwuaCIgMiAzIDQKCgoKCgoKZXh0ZXJuIGludCBfX2xpYmNfY3VycmVudF9zaWdydG1pbiAo
dm9pZCkgdGhyb3cgKCk7CgpleHRlcm4gaW50IF9fbGliY19jdXJyZW50X3NpZ3J0bWF4ICh2b2lk
KSB0aHJvdyAoKTsKCgoKfQojIDM3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YWNoaW5lU3RhY2tNYXJrZXIuaCIgMgojIDUxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaCIKdHlwZWRlZiBwdGhyZWFkX3QgUGxhdGZvcm1UaHJl
YWQ7CgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBDb2RlQmxvY2tTZXQ7CmNsYXNzIENvbnNlcnZh
dGl2ZVJvb3RzOwpjbGFzcyBIZWFwOwpjbGFzcyBKSVRTdHViUm91dGluZVNldDsKCmNsYXNzIE1h
Y2hpbmVUaHJlYWRzIHsKICAgIHByaXZhdGU6IE1hY2hpbmVUaHJlYWRzKGNvbnN0IE1hY2hpbmVU
aHJlYWRzJikgPSBkZWxldGU7IE1hY2hpbmVUaHJlYWRzJiBvcGVyYXRvcj0oY29uc3QgTWFjaGlu
ZVRocmVhZHMmKSA9IGRlbGV0ZTs7CnB1YmxpYzoKICAgIHR5cGVkZWYgam1wX2J1ZiBSZWdpc3Rl
clN0YXRlOwoKICAgIE1hY2hpbmVUaHJlYWRzKEhlYXAqKTsKICAgIH5NYWNoaW5lVGhyZWFkcygp
OwoKICAgIHZvaWQgZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmLCBK
SVRTdHViUm91dGluZVNldCYsIENvZGVCbG9ja1NldCYsIHZvaWQqIHN0YWNrT3JpZ2luLCB2b2lk
KiBzdGFja1RvcCwgUmVnaXN0ZXJTdGF0ZSYgY2FsbGVlU2F2ZWRSZWdpc3RlcnMpOwoKICAgIHZv
aWQgYWRkQ3VycmVudFRocmVhZCgpOwoKICAgIGNsYXNzIFRocmVhZCB7CiAgICAgICAgcHVibGlj
OiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQq
IG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9
IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZv
aWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxv
YyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RG
cmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxv
Y2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHByaXZhdGU6IHR5cGVkZWYg
aW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87CiAgICAgICAg
VGhyZWFkKGNvbnN0IFBsYXRmb3JtVGhyZWFkJiBwbGF0VGhyZWFkLCB2b2lkKiBiYXNlLCB2b2lk
KiBlbmQpOwoKICAgIHB1YmxpYzoKICAgICAgICB+VGhyZWFkKCk7CgogICAgICAgIHN0YXRpYyBU
aHJlYWQqIGNyZWF0ZUZvckN1cnJlbnRUaHJlYWQoKTsKCiAgICAgICAgc3RydWN0IFJlZ2lzdGVy
cyB7CiAgICAgICAgICAgIHZvaWQqIHN0YWNrUG9pbnRlcigpIGNvbnN0OwoKICAgICAgICAgICAg
dm9pZCogZnJhbWVQb2ludGVyKCkgY29uc3Q7CiAgICAgICAgICAgIHZvaWQqIGluc3RydWN0aW9u
UG9pbnRlcigpIGNvbnN0OwogICAgICAgICAgICB2b2lkKiBsbGludFBDKCkgY29uc3Q7CiMgMTEw
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaCIK
ICAgICAgICAgICAgc3RydWN0IFBsYXRmb3JtUmVnaXN0ZXJzIHsKICAgICAgICAgICAgICAgIHB0
aHJlYWRfYXR0cl90IGF0dHJpYnV0ZTsKICAgICAgICAgICAgICAgIG1jb250ZXh0X3QgbWFjaGlu
ZUNvbnRleHQ7CiAgICAgICAgICAgIH07CgoKCgogICAgICAgICAgICBQbGF0Zm9ybVJlZ2lzdGVy
cyByZWdzOwogICAgICAgIH07CgogICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQbGF0Zm9y
bVRocmVhZCYgb3RoZXIpIGNvbnN0OwogICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQbGF0
Zm9ybVRocmVhZCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Cgog
ICAgICAgIGJvb2wgc3VzcGVuZCgpOwogICAgICAgIHZvaWQgcmVzdW1lKCk7CiAgICAgICAgc2l6
ZV90IGdldFJlZ2lzdGVycyhSZWdpc3RlcnMmKTsKICAgICAgICB2b2lkIGZyZWVSZWdpc3RlcnMo
UmVnaXN0ZXJzJik7CiAgICAgICAgc3RkOjpwYWlyPHZvaWQqLCBzaXplX3Q+IGNhcHR1cmVTdGFj
ayh2b2lkKiBzdGFja1RvcCk7CgogICAgICAgIFRocmVhZCogbmV4dDsKICAgICAgICBQbGF0Zm9y
bVRocmVhZCBwbGF0Zm9ybVRocmVhZDsKICAgICAgICB2b2lkKiBzdGFja0Jhc2U7CiAgICAgICAg
dm9pZCogc3RhY2tFbmQ7CgoKCiAgICAgICAgc2VtX3Qgc2VtYXBob3JlRm9yU3VzcGVuZFJlc3Vt
ZTsKICAgICAgICBtY29udGV4dF90IHN1c3BlbmRlZE1hY2hpbmVDb250ZXh0OwogICAgICAgIGlu
dCBzdXNwZW5kQ291bnQgeyAwIH07CiAgICAgICAgc3RkOjphdG9taWM8Ym9vbD4gc3VzcGVuZGVk
IHsgZmFsc2UgfTsKCiAgICB9OwoKICAgIExvY2smIGdldExvY2soKSB7IHJldHVybiBtX3JlZ2lz
dGVyZWRUaHJlYWRzTXV0ZXg7IH0KICAgIFRocmVhZCogdGhyZWFkc0xpc3RIZWFkKGNvbnN0IExv
Y2tIb2xkZXImKSBjb25zdCB7ICgodm9pZCkwKTsgcmV0dXJuIG1fcmVnaXN0ZXJlZFRocmVhZHM7
IH0KICAgIFRocmVhZCogbWFjaGluZVRocmVhZEZvckN1cnJlbnRUaHJlYWQoKTsKCnByaXZhdGU6
CiAgICB2b2lkIGdhdGhlckZyb21DdXJyZW50VGhyZWFkKENvbnNlcnZhdGl2ZVJvb3RzJiwgSklU
U3R1YlJvdXRpbmVTZXQmLCBDb2RlQmxvY2tTZXQmLCB2b2lkKiBzdGFja09yaWdpbiwgdm9pZCog
c3RhY2tUb3AsIFJlZ2lzdGVyU3RhdGUmIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKTsKCiAgICB2b2lk
IHRyeUNvcHlPdGhlclRocmVhZFN0YWNrKFRocmVhZCosIHZvaWQqLCBzaXplX3QgY2FwYWNpdHks
IHNpemVfdCopOwogICAgYm9vbCB0cnlDb3B5T3RoZXJUaHJlYWRTdGFja3MoTG9ja0hvbGRlciYs
IHZvaWQqLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCopOwoKICAgIHN0YXRpYyB2b2lkIHJlbW92
ZVRocmVhZCh2b2lkKik7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgUGxhdGZvcm1UaHJlYWQ+CiAg
ICB2b2lkIHJlbW92ZVRocmVhZElmRm91bmQoUGxhdGZvcm1UaHJlYWQpOwoKICAgIExvY2sgbV9y
ZWdpc3RlcmVkVGhyZWFkc011dGV4OwogICAgVGhyZWFkKiBtX3JlZ2lzdGVyZWRUaHJlYWRzOwog
ICAgV1RGOjpUaHJlYWRTcGVjaWZpY0tleSBtX3RocmVhZFNwZWNpZmljRm9yTWFjaGluZVRocmVh
ZHM7CgoKCn07Cgp9CgoKI2RlZmluZSBSRUdJU1RFUl9CVUZGRVJfQUxJR05NRU5UIF9fYXR0cmli
dXRlX18gKChhbGlnbmVkIChzaXplb2Yodm9pZCopKSkpCiMgMTg0ICIuLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaCIKI2RlZmluZSBBTExPQ0FURV9B
TkRfR0VUX1JFR0lTVEVSX1NUQVRFKHJlZ2lzdGVycykgTWFjaGluZVRocmVhZHM6OlJlZ2lzdGVy
U3RhdGUgcmVnaXN0ZXJzIFJFR0lTVEVSX0JVRkZFUl9BTElHTk1FTlQ7IHNldGptcChyZWdpc3Rl
cnMpCiMgMzYgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCIgMgojIDEg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oIiAxCiMg
MjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oIgoj
ZGVmaW5lIE1hcmtlZEFsbG9jYXRvcl9oIAoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRCbG9jay5oIiAxCiMgMjMgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmgiCiNkZWZpbmUgTWFya2VkQmxvY2tfaCAKCgojIDEgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdGlvblN0YXR1cy5oIiAxCiMgMjcg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdGlvblN0YXR1cy5oIgoj
ZGVmaW5lIEl0ZXJhdGlvblN0YXR1c19oIAoKbmFtZXNwYWNlIEpTQyB7CgplbnVtIGNsYXNzIEl0
ZXJhdGlvblN0YXR1cyB7CiAgICBDb250aW51ZSwKICAgIERvbmUKfTsKCn0KIyAyNyAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCIgMgojIDEgIi4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtTZXQuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0LmgiCiNkZWZpbmUgV2Vha1NldF9oIAoKIyAxICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suaCIgMQojIDI3ICIuLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suaCIKI2RlZmluZSBXZWFrQmxv
Y2tfaCAKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0ltcGwuaCIg
MQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW1wbC5oIgojZGVm
aW5lIFdlYWtJbXBsX2ggCgoKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgV2Vha0hhbmRsZU93bmVy
OwoKY2xhc3MgV2Vha0ltcGwgewpwdWJsaWM6CiAgICBlbnVtIFN0YXRlIHsKICAgICAgICBMaXZl
ID0gMHgwLAogICAgICAgIERlYWQgPSAweDEsCiAgICAgICAgRmluYWxpemVkID0gMHgyLAogICAg
ICAgIERlYWxsb2NhdGVkID0gMHgzCiAgICB9OwoKICAgIGVudW0gewogICAgICAgIFN0YXRlTWFz
ayA9IDB4MwogICAgfTsKCiAgICBXZWFrSW1wbCgpOwogICAgV2Vha0ltcGwoSlNWYWx1ZSwgV2Vh
a0hhbmRsZU93bmVyKiwgdm9pZCogY29udGV4dCk7CgogICAgU3RhdGUgc3RhdGUoKTsKICAgIHZv
aWQgc2V0U3RhdGUoU3RhdGUpOwoKICAgIGNvbnN0IEpTVmFsdWUmIGpzVmFsdWUoKTsKICAgIFdl
YWtIYW5kbGVPd25lciogd2Vha0hhbmRsZU93bmVyKCk7CiAgICB2b2lkKiBjb250ZXh0KCk7Cgog
ICAgc3RhdGljIFdlYWtJbXBsKiBhc1dlYWtJbXBsKEpTVmFsdWUqKTsKCnByaXZhdGU6CiAgICBj
b25zdCBKU1ZhbHVlIG1fanNWYWx1ZTsKICAgIFdlYWtIYW5kbGVPd25lciogbV93ZWFrSGFuZGxl
T3duZXI7CiAgICB2b2lkKiBtX2NvbnRleHQ7Cn07CgppbmxpbmUgV2Vha0ltcGw6OldlYWtJbXBs
KCkKICAgIDogbV93ZWFrSGFuZGxlT3duZXIoMCkKICAgICwgbV9jb250ZXh0KDApCnsKICAgIHNl
dFN0YXRlKERlYWxsb2NhdGVkKTsKfQoKaW5saW5lIFdlYWtJbXBsOjpXZWFrSW1wbChKU1ZhbHVl
IGpzVmFsdWUsIFdlYWtIYW5kbGVPd25lciogd2Vha0hhbmRsZU93bmVyLCB2b2lkKiBjb250ZXh0
KQogICAgOiBtX2pzVmFsdWUoanNWYWx1ZSkKICAgICwgbV93ZWFrSGFuZGxlT3duZXIod2Vha0hh
bmRsZU93bmVyKQogICAgLCBtX2NvbnRleHQoY29udGV4dCkKewogICAgKCh2b2lkKTApOwogICAg
KCh2b2lkKTApOwp9CgppbmxpbmUgV2Vha0ltcGw6OlN0YXRlIFdlYWtJbXBsOjpzdGF0ZSgpCnsK
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdGF0ZT4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KG1fd2Vha0hhbmRsZU93bmVyKSAmIFN0YXRlTWFzayk7Cn0KCmlubGluZSB2b2lkIFdlYWtJbXBs
OjpzZXRTdGF0ZShXZWFrSW1wbDo6U3RhdGUgc3RhdGUpCnsKICAgICgodm9pZCkwKTsKICAgIG1f
d2Vha0hhbmRsZU93bmVyID0gcmVpbnRlcnByZXRfY2FzdDxXZWFrSGFuZGxlT3duZXIqPigocmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fd2Vha0hhbmRsZU93bmVyKSAmIH5TdGF0ZU1hc2sp
IHwgc3RhdGUpOwp9CgppbmxpbmUgY29uc3QgSlNWYWx1ZSYgV2Vha0ltcGw6OmpzVmFsdWUoKQp7
CiAgICByZXR1cm4gbV9qc1ZhbHVlOwp9CgppbmxpbmUgV2Vha0hhbmRsZU93bmVyKiBXZWFrSW1w
bDo6d2Vha0hhbmRsZU93bmVyKCkKewogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vha0hh
bmRsZU93bmVyKj4oKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX3dlYWtIYW5kbGVPd25l
cikgJiB+U3RhdGVNYXNrKSk7Cn0KCmlubGluZSB2b2lkKiBXZWFrSW1wbDo6Y29udGV4dCgpCnsK
ICAgIHJldHVybiBtX2NvbnRleHQ7Cn0KCmlubGluZSBXZWFrSW1wbCogV2Vha0ltcGw6OmFzV2Vh
a0ltcGwoSlNWYWx1ZSogc2xvdCkKewogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFdl
YWtJbXBsKj4ocmVpbnRlcnByZXRfY2FzdF9wdHI8Y2hhcio+KHNsb3QpICsgKHJlaW50ZXJwcmV0
X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8V2Vha0ltcGwqPigweDQwMDApLT5t
X2pzVmFsdWUpKSAtIDB4NDAwMCkpOwp9Cgp9CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1dlYWtCbG9jay5oIiAyCgoKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgSGVhcDsK
Y2xhc3MgSGVhcFJvb3RWaXNpdG9yOwpjbGFzcyBNYXJrZWRCbG9jazsKCmNsYXNzIFdlYWtCbG9j
ayA6IHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxXZWFrQmxvY2s+IHsKcHVibGljOgogICAg
ZnJpZW5kIGNsYXNzIFdURjo6RG91Ymx5TGlua2VkTGlzdE5vZGU8V2Vha0Jsb2NrPjsKICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgYmxvY2tTaXplID0gMSAqIEtCOwoKICAgIHN0cnVjdCBGcmVlQ2Vs
bCB7CiAgICAgICAgRnJlZUNlbGwqIG5leHQ7CiAgICB9OwoKICAgIHN0cnVjdCBTd2VlcFJlc3Vs
dCB7CiAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKCiAgICAgICAgYm9vbCBibG9ja0lzRnJl
ZSB7IHRydWUgfTsKICAgICAgICBib29sIGJsb2NrSXNMb2dpY2FsbHlFbXB0eSB7IHRydWUgfTsK
ICAgICAgICBGcmVlQ2VsbCogZnJlZUxpc3QgeyBudWxscHRyIH07CiAgICB9OwoKICAgIHN0YXRp
YyBXZWFrQmxvY2sqIGNyZWF0ZShIZWFwJiwgTWFya2VkQmxvY2smKTsKICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSGVhcCYsIFdlYWtCbG9jayopOwoKICAgIHN0YXRpYyBXZWFrSW1wbCogYXNXZWFr
SW1wbChGcmVlQ2VsbCopOwoKICAgIGJvb2wgaXNFbXB0eSgpOwogICAgYm9vbCBpc0xvZ2ljYWxs
eUVtcHR5QnV0Tm90RnJlZSgpIGNvbnN0OwoKICAgIHZvaWQgc3dlZXAoKTsKICAgIFN3ZWVwUmVz
dWx0IHRha2VTd2VlcFJlc3VsdCgpOwoKICAgIHZvaWQgdmlzaXQoSGVhcFJvb3RWaXNpdG9yJik7
CiAgICB2b2lkIHJlYXAoKTsKCiAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CiAgICB2
b2lkIGRpc2Nvbm5lY3RNYXJrZWRCbG9jaygpIHsgbV9tYXJrZWRCbG9jayA9IG51bGxwdHI7IH0K
CnByaXZhdGU6CiAgICBzdGF0aWMgRnJlZUNlbGwqIGFzRnJlZUNlbGwoV2Vha0ltcGwqKTsKCiAg
ICBleHBsaWNpdCBXZWFrQmxvY2soTWFya2VkQmxvY2smKTsKICAgIHZvaWQgZmluYWxpemUoV2Vh
a0ltcGwqKTsKICAgIFdlYWtJbXBsKiB3ZWFrSW1wbHMoKTsKICAgIHNpemVfdCB3ZWFrSW1wbENv
dW50KCk7CiAgICB2b2lkIGFkZFRvRnJlZUxpc3QoRnJlZUNlbGwqKiwgV2Vha0ltcGwqKTsKCiAg
ICBNYXJrZWRCbG9jayogbV9tYXJrZWRCbG9jazsKICAgIFdlYWtCbG9jayogbV9wcmV2OwogICAg
V2Vha0Jsb2NrKiBtX25leHQ7CiAgICBTd2VlcFJlc3VsdCBtX3N3ZWVwUmVzdWx0Owp9OwoKaW5s
aW5lIGJvb2wgV2Vha0Jsb2NrOjpTd2VlcFJlc3VsdDo6aXNOdWxsKCkgY29uc3QKewogICAgcmV0
dXJuIGJsb2NrSXNGcmVlICYmICFmcmVlTGlzdDsKfQoKaW5saW5lIFdlYWtJbXBsKiBXZWFrQmxv
Y2s6OmFzV2Vha0ltcGwoRnJlZUNlbGwqIGZyZWVDZWxsKQp7CiAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdF9wdHI8V2Vha0ltcGwqPihmcmVlQ2VsbCk7Cn0KCmlubGluZSBXZWFrQmxvY2s6OlN3
ZWVwUmVzdWx0IFdlYWtCbG9jazo6dGFrZVN3ZWVwUmVzdWx0KCkKewogICAgU3dlZXBSZXN1bHQg
dG1wOwogICAgc3RkOjpzd2FwKHRtcCwgbV9zd2VlcFJlc3VsdCk7CiAgICAoKHZvaWQpMCk7CiAg
ICByZXR1cm4gdG1wOwp9CgppbmxpbmUgV2Vha0Jsb2NrOjpGcmVlQ2VsbCogV2Vha0Jsb2NrOjph
c0ZyZWVDZWxsKFdlYWtJbXBsKiB3ZWFrSW1wbCkKewogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3RfcHRyPEZyZWVDZWxsKj4od2Vha0ltcGwpOwp9CgppbmxpbmUgV2Vha0ltcGwqIFdlYWtCbG9j
azo6d2Vha0ltcGxzKCkKewogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFdlYWtJbXBs
Kj4odGhpcykgKyAoKHNpemVvZihXZWFrQmxvY2spICsgc2l6ZW9mKFdlYWtJbXBsKSAtIDEpIC8g
c2l6ZW9mKFdlYWtJbXBsKSk7Cn0KCmlubGluZSBzaXplX3QgV2Vha0Jsb2NrOjp3ZWFrSW1wbENv
dW50KCkKewogICAgcmV0dXJuIChibG9ja1NpemUgLyBzaXplb2YoV2Vha0ltcGwpKSAtICgoc2l6
ZW9mKFdlYWtCbG9jaykgKyBzaXplb2YoV2Vha0ltcGwpIC0gMSkgLyBzaXplb2YoV2Vha0ltcGwp
KTsKfQoKaW5saW5lIHZvaWQgV2Vha0Jsb2NrOjphZGRUb0ZyZWVMaXN0KEZyZWVDZWxsKiogZnJl
ZUxpc3QsIFdlYWtJbXBsKiB3ZWFrSW1wbCkKewogICAgKCh2b2lkKTApOwogICAgRnJlZUNlbGwq
IGZyZWVDZWxsID0gYXNGcmVlQ2VsbCh3ZWFrSW1wbCk7CiAgICAoKHZvaWQpMCk7CiAgICAoKHZv
aWQpMCk7CiAgICBmcmVlQ2VsbC0+bmV4dCA9ICpmcmVlTGlzdDsKICAgICpmcmVlTGlzdCA9IGZy
ZWVDZWxsOwp9CgppbmxpbmUgYm9vbCBXZWFrQmxvY2s6OmlzRW1wdHkoKQp7CiAgICByZXR1cm4g
IW1fc3dlZXBSZXN1bHQuaXNOdWxsKCkgJiYgbV9zd2VlcFJlc3VsdC5ibG9ja0lzRnJlZTsKfQoK
aW5saW5lIGJvb2wgV2Vha0Jsb2NrOjppc0xvZ2ljYWxseUVtcHR5QnV0Tm90RnJlZSgpIGNvbnN0
CnsKICAgIHJldHVybiAhbV9zd2VlcFJlc3VsdC5pc051bGwoKSAmJiAhbV9zd2VlcFJlc3VsdC5i
bG9ja0lzRnJlZSAmJiBtX3N3ZWVwUmVzdWx0LmJsb2NrSXNMb2dpY2FsbHlFbXB0eTsKfQoKfQoj
IDMwICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0LmgiIDIKCm5hbWVz
cGFjZSBKU0MgewoKY2xhc3MgSGVhcDsKY2xhc3MgTWFya2VkQmxvY2s7CmNsYXNzIFdlYWtJbXBs
OwoKY2xhc3MgV2Vha1NldCB7CiAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwoKcHVibGljOgogICAgc3RhdGljIFdlYWtJbXBsKiBhbGxvY2F0ZShKU1ZhbHVlLCBXZWFrSGFu
ZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9IDApOwogICAgc3RhdGljIHZvaWQgZGVhbGxv
Y2F0ZShXZWFrSW1wbCopOwoKICAgIFdlYWtTZXQoVk0qLCBNYXJrZWRCbG9jayYpOwogICAgfldl
YWtTZXQoKTsKICAgIHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUoKTsKCiAgICBIZWFwKiBoZWFw
KCkgY29uc3Q7CiAgICBWTSogdm0oKSBjb25zdDsKCiAgICBib29sIGlzRW1wdHkoKSBjb25zdDsK
CiAgICB2b2lkIHZpc2l0KEhlYXBSb290VmlzaXRvciYpOwogICAgdm9pZCByZWFwKCk7CiAgICB2
b2lkIHN3ZWVwKCk7CiAgICB2b2lkIHNocmluaygpOwogICAgdm9pZCByZXNldEFsbG9jYXRvcigp
OwoKcHJpdmF0ZToKICAgIFdlYWtCbG9jazo6RnJlZUNlbGwqIGZpbmRBbGxvY2F0b3IoKTsKICAg
IFdlYWtCbG9jazo6RnJlZUNlbGwqIHRyeUZpbmRBbGxvY2F0b3IoKTsKICAgIFdlYWtCbG9jazo6
RnJlZUNlbGwqIGFkZEFsbG9jYXRvcigpOwogICAgdm9pZCByZW1vdmVBbGxvY2F0b3IoV2Vha0Js
b2NrKik7CgogICAgV2Vha0Jsb2NrOjpGcmVlQ2VsbCogbV9hbGxvY2F0b3I7CiAgICBXZWFrQmxv
Y2sqIG1fbmV4dEFsbG9jYXRvcjsKICAgIERvdWJseUxpbmtlZExpc3Q8V2Vha0Jsb2NrPiBtX2Js
b2NrczsKICAgIFZNKiBtX3ZtOwogICAgTWFya2VkQmxvY2smIG1fbWFya2VkQmxvY2s7Cn07Cgpp
bmxpbmUgV2Vha1NldDo6V2Vha1NldChWTSogdm0sIE1hcmtlZEJsb2NrJiBtYXJrZWRCbG9jaykK
ICAgIDogbV9hbGxvY2F0b3IoMCkKICAgICwgbV9uZXh0QWxsb2NhdG9yKDApCiAgICAsIG1fdm0o
dm0pCiAgICAsIG1fbWFya2VkQmxvY2sobWFya2VkQmxvY2spCnsKfQoKaW5saW5lIFZNKiBXZWFr
U2V0Ojp2bSgpIGNvbnN0CnsKICAgIHJldHVybiBtX3ZtOwp9CgppbmxpbmUgYm9vbCBXZWFrU2V0
Ojppc0VtcHR5KCkgY29uc3QKewogICAgZm9yIChXZWFrQmxvY2sqIGJsb2NrID0gbV9ibG9ja3Mu
aGVhZCgpOyBibG9jazsgYmxvY2sgPSBibG9jay0+bmV4dCgpKSB7CiAgICAgICAgaWYgKCFibG9j
ay0+aXNFbXB0eSgpKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcmV0dXJu
IHRydWU7Cn0KCmlubGluZSB2b2lkIFdlYWtTZXQ6OmRlYWxsb2NhdGUoV2Vha0ltcGwqIHdlYWtJ
bXBsKQp7CiAgICB3ZWFrSW1wbC0+c2V0U3RhdGUoV2Vha0ltcGw6OkRlYWxsb2NhdGVkKTsKfQoK
aW5saW5lIHZvaWQgV2Vha1NldDo6bGFzdENoYW5jZVRvRmluYWxpemUoKQp7CiAgICBmb3IgKFdl
YWtCbG9jayogYmxvY2sgPSBtX2Jsb2Nrcy5oZWFkKCk7IGJsb2NrOyBibG9jayA9IGJsb2NrLT5u
ZXh0KCkpCiAgICAgICAgYmxvY2stPmxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7Cn0KCmlubGluZSB2
b2lkIFdlYWtTZXQ6OnZpc2l0KEhlYXBSb290VmlzaXRvciYgdmlzaXRvcikKewogICAgZm9yIChX
ZWFrQmxvY2sqIGJsb2NrID0gbV9ibG9ja3MuaGVhZCgpOyBibG9jazsgYmxvY2sgPSBibG9jay0+
bmV4dCgpKQogICAgICAgIGJsb2NrLT52aXNpdCh2aXNpdG9yKTsKfQoKaW5saW5lIHZvaWQgV2Vh
a1NldDo6cmVhcCgpCnsKICAgIGZvciAoV2Vha0Jsb2NrKiBibG9jayA9IG1fYmxvY2tzLmhlYWQo
KTsgYmxvY2s7IGJsb2NrID0gYmxvY2stPm5leHQoKSkKICAgICAgICBibG9jay0+cmVhcCgpOwp9
CgppbmxpbmUgdm9pZCBXZWFrU2V0OjpzaHJpbmsoKQp7CiAgICBXZWFrQmxvY2sqIG5leHQ7CiAg
ICBmb3IgKFdlYWtCbG9jayogYmxvY2sgPSBtX2Jsb2Nrcy5oZWFkKCk7IGJsb2NrOyBibG9jayA9
IG5leHQpIHsKICAgICAgICBuZXh0ID0gYmxvY2stPm5leHQoKTsKCiAgICAgICAgaWYgKGJsb2Nr
LT5pc0VtcHR5KCkpCiAgICAgICAgICAgIHJlbW92ZUFsbG9jYXRvcihibG9jayk7CiAgICB9Cgog
ICAgcmVzZXRBbGxvY2F0b3IoKTsKfQoKaW5saW5lIHZvaWQgV2Vha1NldDo6cmVzZXRBbGxvY2F0
b3IoKQp7CiAgICBtX2FsbG9jYXRvciA9IDA7CiAgICBtX25leHRBbGxvY2F0b3IgPSBtX2Jsb2Nr
cy5oZWFkKCk7Cn0KCn0KIyAyOCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0JpdG1hcC5oIiAxCiMgMjAg
Ii4uLy4uL1NvdXJjZS9XVEYvd3RmL0JpdG1hcC5oIgojZGVmaW5lIEJpdG1hcF9oIAoKCgoKCgoK
bmFtZXNwYWNlIFdURiB7CgplbnVtIEJpdG1hcEF0b21pY01vZGUgewoKICAgIEJpdG1hcE5vdEF0
b21pYywKCgoKICAgIEJpdG1hcEF0b21pYwp9OwoKdGVtcGxhdGU8c2l6ZV90IFNpemUsIEJpdG1h
cEF0b21pY01vZGUgYXRvbWljTW9kZSA9IEJpdG1hcE5vdEF0b21pYywgdHlwZW5hbWUgV29yZFR5
cGUgPSB1aW50MzJfdD4KY2xhc3MgQml0bWFwIHsKICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBz
aXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRl
bGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdb
XShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBv
cGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQp
MCk7IHJldHVybiBsb2NhdGlvbjsgfSBwcml2YXRlOiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVU
b0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvOwpwdWJsaWM6CiAgICBCaXRtYXAoKTsKCiAg
ICBib29sIGdldChzaXplX3QpIGNvbnN0OwogICAgdm9pZCBzZXQoc2l6ZV90KTsKICAgIGJvb2wg
dGVzdEFuZFNldChzaXplX3QpOwogICAgYm9vbCB0ZXN0QW5kQ2xlYXIoc2l6ZV90KTsKICAgIGJv
b2wgY29uY3VycmVudFRlc3RBbmRTZXQoc2l6ZV90KTsKICAgIGJvb2wgY29uY3VycmVudFRlc3RB
bmRDbGVhcihzaXplX3QpOwogICAgc2l6ZV90IG5leHRQb3NzaWJseVVuc2V0KHNpemVfdCkgY29u
c3Q7CiAgICB2b2lkIGNsZWFyKHNpemVfdCk7CiAgICB2b2lkIGNsZWFyQWxsKCk7CiAgICBpbnQ2
NF90IGZpbmRSdW5PZlplcm9zKHNpemVfdCkgY29uc3Q7CiAgICBzaXplX3QgY291bnQoc2l6ZV90
ID0gMCkgY29uc3Q7CiAgICBzaXplX3QgaXNFbXB0eSgpIGNvbnN0OwogICAgc2l6ZV90IGlzRnVs
bCgpIGNvbnN0OwoKcHJpdmF0ZToKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB3b3JkU2l6ZSA9
IHNpemVvZihXb3JkVHlwZSkgKiA4OwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdvcmRzID0g
KFNpemUgKyB3b3JkU2l6ZSAtIDEpIC8gd29yZFNpemU7CgoKCgoKCiAgICBzdGF0aWMgY29uc3Qg
V29yZFR5cGUgb25lID0gMTsKCiAgICBzdGQ6OmFycmF5PFdvcmRUeXBlLCB3b3Jkcz4gYml0czsK
fTsKCnRlbXBsYXRlPHNpemVfdCBzaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5
cGVuYW1lIFdvcmRUeXBlPgppbmxpbmUgQml0bWFwPHNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBl
Pjo6Qml0bWFwKCkKewogICAgY2xlYXJBbGwoKTsKfQoKdGVtcGxhdGU8c2l6ZV90IHNpemUsIEJp
dG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+CmlubGluZSBib29s
IEJpdG1hcDxzaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmdldChzaXplX3QgbikgY29uc3QK
ewogICAgcmV0dXJuICEhKGJpdHNbbiAvIHdvcmRTaXplXSAmIChvbmUgPDwgKG4gJSB3b3JkU2l6
ZSkpKTsKfQoKdGVtcGxhdGU8c2l6ZV90IHNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9k
ZSwgdHlwZW5hbWUgV29yZFR5cGU+CmlubGluZSB2b2lkIEJpdG1hcDxzaXplLCBhdG9taWNNb2Rl
LCBXb3JkVHlwZT46OnNldChzaXplX3QgbikKewogICAgYml0c1tuIC8gd29yZFNpemVdIHw9IChv
bmUgPDwgKG4gJSB3b3JkU2l6ZSkpOwp9Cgp0ZW1wbGF0ZTxzaXplX3Qgc2l6ZSwgQml0bWFwQXRv
bWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KaW5saW5lIGJvb2wgQml0bWFw
PHNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6dGVzdEFuZFNldChzaXplX3QgbikKewogICAg
V29yZFR5cGUgbWFzayA9IG9uZSA8PCAobiAlIHdvcmRTaXplKTsKICAgIHNpemVfdCBpbmRleCA9
IG4gLyB3b3JkU2l6ZTsKICAgIGJvb2wgcmVzdWx0ID0gYml0c1tpbmRleF0gJiBtYXNrOwogICAg
Yml0c1tpbmRleF0gfD0gbWFzazsKICAgIHJldHVybiByZXN1bHQ7Cn0KCnRlbXBsYXRlPHNpemVf
dCBzaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgpp
bmxpbmUgYm9vbCBCaXRtYXA8c2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojp0ZXN0QW5kQ2xl
YXIoc2l6ZV90IG4pCnsKICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7
CiAgICBzaXplX3QgaW5kZXggPSBuIC8gd29yZFNpemU7CiAgICBib29sIHJlc3VsdCA9IGJpdHNb
aW5kZXhdICYgbWFzazsKICAgIGJpdHNbaW5kZXhdICY9IH5tYXNrOwogICAgcmV0dXJuIHJlc3Vs
dDsKfQoKdGVtcGxhdGU8c2l6ZV90IHNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwg
dHlwZW5hbWUgV29yZFR5cGU+CmlubGluZSBib29sIEJpdG1hcDxzaXplLCBhdG9taWNNb2RlLCBX
b3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5kU2V0KHNpemVfdCBuKQp7CiAgICBpZiAoYXRvbWlj
TW9kZSA9PSBCaXRtYXBOb3RBdG9taWMpCiAgICAgICAgcmV0dXJuIHRlc3RBbmRTZXQobik7Cgog
ICAgKCh2b2lkKTApOwoKICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7
CiAgICBzaXplX3QgaW5kZXggPSBuIC8gd29yZFNpemU7CiAgICBXb3JkVHlwZSogd29yZFB0ciA9
IGJpdHMuZGF0YSgpICsgaW5kZXg7CiAgICBXb3JkVHlwZSBvbGRWYWx1ZTsKICAgIGRvIHsKICAg
ICAgICBvbGRWYWx1ZSA9ICp3b3JkUHRyOwogICAgICAgIGlmIChvbGRWYWx1ZSAmIG1hc2spCiAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgfSB3aGlsZSAoIXdlYWtDb21wYXJlQW5kU3dhcCh3
b3JkUHRyLCBvbGRWYWx1ZSwgc3RhdGljX2Nhc3Q8V29yZFR5cGU+KG9sZFZhbHVlIHwgbWFzaykp
KTsKICAgIHJldHVybiBmYWxzZTsKfQoKdGVtcGxhdGU8c2l6ZV90IHNpemUsIEJpdG1hcEF0b21p
Y01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+CmlubGluZSBib29sIEJpdG1hcDxz
aXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5kQ2xlYXIoc2l6ZV90
IG4pCnsKICAgIGlmIChhdG9taWNNb2RlID09IEJpdG1hcE5vdEF0b21pYykKICAgICAgICByZXR1
cm4gdGVzdEFuZENsZWFyKG4pOwoKICAgICgodm9pZCkwKTsKCiAgICBXb3JkVHlwZSBtYXNrID0g
b25lIDw8IChuICUgd29yZFNpemUpOwogICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwog
ICAgV29yZFR5cGUqIHdvcmRQdHIgPSBiaXRzLmRhdGEoKSArIGluZGV4OwogICAgV29yZFR5cGUg
b2xkVmFsdWU7CiAgICBkbyB7CiAgICAgICAgb2xkVmFsdWUgPSAqd29yZFB0cjsKICAgICAgICBp
ZiAoIShvbGRWYWx1ZSAmIG1hc2spKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9IHdo
aWxlICghd2Vha0NvbXBhcmVBbmRTd2FwKHdvcmRQdHIsIG9sZFZhbHVlLCBzdGF0aWNfY2FzdDxX
b3JkVHlwZT4ob2xkVmFsdWUgJiB+bWFzaykpKTsKICAgIHJldHVybiB0cnVlOwp9Cgp0ZW1wbGF0
ZTxzaXplX3Qgc2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3Jk
VHlwZT4KaW5saW5lIHZvaWQgQml0bWFwPHNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Y2xl
YXIoc2l6ZV90IG4pCnsKICAgIGJpdHNbbiAvIHdvcmRTaXplXSAmPSB+KG9uZSA8PCAobiAlIHdv
cmRTaXplKSk7Cn0KCnRlbXBsYXRlPHNpemVfdCBzaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21p
Y01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgppbmxpbmUgdm9pZCBCaXRtYXA8c2l6ZSwgYXRvbWlj
TW9kZSwgV29yZFR5cGU+OjpjbGVhckFsbCgpCnsKICAgIG1lbXNldChiaXRzLmRhdGEoKSwgMCwg
c2l6ZW9mKGJpdHMpKTsKfQoKdGVtcGxhdGU8c2l6ZV90IHNpemUsIEJpdG1hcEF0b21pY01vZGUg
YXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+CmlubGluZSBzaXplX3QgQml0bWFwPHNpemUs
IGF0b21pY01vZGUsIFdvcmRUeXBlPjo6bmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90IHN0YXJ0KSBj
b25zdAp7CiAgICBpZiAoIX5iaXRzW3N0YXJ0IC8gd29yZFNpemVdKQogICAgICAgIHJldHVybiAo
KHN0YXJ0IC8gd29yZFNpemUpICsgMSkgKiB3b3JkU2l6ZTsKICAgIHJldHVybiBzdGFydCArIDE7
Cn0KCnRlbXBsYXRlPHNpemVfdCBzaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5
cGVuYW1lIFdvcmRUeXBlPgppbmxpbmUgaW50NjRfdCBCaXRtYXA8c2l6ZSwgYXRvbWljTW9kZSwg
V29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdAp7CiAgICBp
ZiAoIXJ1bkxlbmd0aCkKICAgICAgICBydW5MZW5ndGggPSAxOwoKICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDw9IChzaXplIC0gcnVuTGVuZ3RoKSA7IGkrKykgewogICAgICAgIGJvb2wgZm91bmQg
PSB0cnVlOwogICAgICAgIGZvciAoc2l6ZV90IGogPSBpOyBqIDw9IChpICsgcnVuTGVuZ3RoIC0g
MSkgOyBqKyspIHsKICAgICAgICAgICAgaWYgKGdldChqKSkgewogICAgICAgICAgICAgICAgZm91
bmQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAg
fQogICAgICAgIGlmIChmb3VuZCkKICAgICAgICAgICAgcmV0dXJuIGk7CiAgICB9CiAgICByZXR1
cm4gLTE7Cn0KCnRlbXBsYXRlPHNpemVfdCBzaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01v
ZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgppbmxpbmUgc2l6ZV90IEJpdG1hcDxzaXplLCBhdG9taWNN
b2RlLCBXb3JkVHlwZT46OmNvdW50KHNpemVfdCBzdGFydCkgY29uc3QKewogICAgc2l6ZV90IHJl
c3VsdCA9IDA7CiAgICBmb3IgKCA7IChzdGFydCAlIHdvcmRTaXplKTsgKytzdGFydCkgewogICAg
ICAgIGlmIChnZXQoc3RhcnQpKQogICAgICAgICAgICArK3Jlc3VsdDsKICAgIH0KICAgIGZvciAo
c2l6ZV90IGkgPSBzdGFydCAvIHdvcmRTaXplOyBpIDwgd29yZHM7ICsraSkKICAgICAgICByZXN1
bHQgKz0gV1RGOjpiaXRDb3VudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYml0c1tpXSkpOwogICAg
cmV0dXJuIHJlc3VsdDsKfQoKdGVtcGxhdGU8c2l6ZV90IHNpemUsIEJpdG1hcEF0b21pY01vZGUg
YXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+CmlubGluZSBzaXplX3QgQml0bWFwPHNpemUs
IGF0b21pY01vZGUsIFdvcmRUeXBlPjo6aXNFbXB0eSgpIGNvbnN0CnsKICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICBpZiAoYml0c1tpXSkKICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgcmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlPHNpemVfdCBzaXplLCBC
aXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgppbmxpbmUgc2l6
ZV90IEJpdG1hcDxzaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmlzRnVsbCgpIGNvbnN0CnsK
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICBpZiAofmJpdHNb
aV0pCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgIHJldHVybiB0cnVlOwp9Cgp9CiMgMjkg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgiIDIKCgoKCgoK
I2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OUyAwCiMgNDUgIi4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgiCiNkZWZpbmUgSEVBUF9MT0df
QkxPQ0tfU1RBVEVfVFJBTlNJVElPTihibG9jaykgKCh2b2lkKTApCgoKbmFtZXNwYWNlIEpTQyB7
CgogICAgY2xhc3MgSGVhcDsKICAgIGNsYXNzIEpTQ2VsbDsKICAgIGNsYXNzIE1hcmtlZEFsbG9j
YXRvcjsKCiAgICB0eXBlZGVmIHVpbnRwdHJfdCBCaXRzOwoKICAgIGJvb2wgaXNaYXBwZWQoY29u
c3QgSlNDZWxsKik7CiMgNjYgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmgiCiAgICBjbGFzcyBNYXJrZWRCbG9jayA6IHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0
Tm9kZTxNYXJrZWRCbG9jaz4gewogICAgICAgIGZyaWVuZCBjbGFzcyBXVEY6OkRvdWJseUxpbmtl
ZExpc3ROb2RlPE1hcmtlZEJsb2NrPjsKICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogICAgICAgIGZyaWVuZCBzdHJ1Y3QgVmVyaWZ5TWFya2VkT3JSZXRpcmVkOwog
ICAgcHVibGljOgogICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbVNpemUgPSAxNjsKICAg
ICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrU2l6ZSA9IDE2ICogS0I7CiAgICAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBibG9ja01hc2sgPSB+KGJsb2NrU2l6ZSAtIDEpOwoKICAgICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IGF0b21zUGVyQmxvY2sgPSBibG9ja1NpemUgLyBhdG9tU2l6ZTsK
CiAgICAgICAgc3RhdGljX2Fzc2VydCghKE1hcmtlZEJsb2NrOjphdG9tU2l6ZSAmIChNYXJrZWRC
bG9jazo6YXRvbVNpemUgLSAxKSksICJNYXJrZWRCbG9jazo6YXRvbVNpemUgbXVzdCBiZSBhIHBv
d2VyIG9mIHR3by4iKTsKICAgICAgICBzdGF0aWNfYXNzZXJ0KCEoTWFya2VkQmxvY2s6OmJsb2Nr
U2l6ZSAmIChNYXJrZWRCbG9jazo6YmxvY2tTaXplIC0gMSkpLCAiTWFya2VkQmxvY2s6OmJsb2Nr
U2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiIpOwoKICAgICAgICBzdHJ1Y3QgRnJlZUNlbGwg
ewogICAgICAgICAgICBGcmVlQ2VsbCogbmV4dDsKICAgICAgICB9OwoKICAgICAgICBzdHJ1Y3Qg
RnJlZUxpc3QgewogICAgICAgICAgICBGcmVlQ2VsbCogaGVhZDsKICAgICAgICAgICAgc2l6ZV90
IGJ5dGVzOwoKICAgICAgICAgICAgRnJlZUxpc3QoKTsKICAgICAgICAgICAgRnJlZUxpc3QoRnJl
ZUNlbGwqLCBzaXplX3QpOwogICAgICAgIH07CgogICAgICAgIHN0cnVjdCBWb2lkRnVuY3RvciB7
CiAgICAgICAgICAgIHR5cGVkZWYgdm9pZCBSZXR1cm5UeXBlOwogICAgICAgICAgICB2b2lkIHJl
dHVyblZhbHVlKCkgeyB9CiAgICAgICAgfTsKCiAgICAgICAgY2xhc3MgQ291bnRGdW5jdG9yIHsK
ICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgIHR5cGVkZWYgc2l6ZV90IFJldHVyblR5cGU7Cgog
ICAgICAgICAgICBDb3VudEZ1bmN0b3IoKSA6IG1fY291bnQoMCkgeyB9CiAgICAgICAgICAgIHZv
aWQgY291bnQoc2l6ZV90IGNvdW50KSB7IG1fY291bnQgKz0gY291bnQ7IH0KICAgICAgICAgICAg
UmV0dXJuVHlwZSByZXR1cm5WYWx1ZSgpIHsgcmV0dXJuIG1fY291bnQ7IH0KCiAgICAgICAgcHJp
dmF0ZToKICAgICAgICAgICAgUmV0dXJuVHlwZSBtX2NvdW50OwogICAgICAgIH07CgogICAgICAg
IHN0YXRpYyBNYXJrZWRCbG9jayogY3JlYXRlKEhlYXAmLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXpl
X3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEhlYXAmLCBNYXJrZWRCbG9jayopOwoKICAgICAgICBz
dGF0aWMgYm9vbCBpc0F0b21BbGlnbmVkKGNvbnN0IHZvaWQqKTsKICAgICAgICBzdGF0aWMgTWFy
a2VkQmxvY2sqIGJsb2NrRm9yKGNvbnN0IHZvaWQqKTsKICAgICAgICBzdGF0aWMgc2l6ZV90IGZp
cnN0QXRvbSgpOwoKICAgICAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CgogICAgICAg
IE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yKCkgY29uc3Q7CiAgICAgICAgSGVhcCogaGVhcCgp
IGNvbnN0OwogICAgICAgIFZNKiB2bSgpIGNvbnN0OwogICAgICAgIFdlYWtTZXQmIHdlYWtTZXQo
KTsKCiAgICAgICAgZW51bSBTd2VlcE1vZGUgeyBTd2VlcE9ubHksIFN3ZWVwVG9GcmVlTGlzdCB9
OwogICAgICAgIEZyZWVMaXN0IHN3ZWVwKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CgogICAgICAg
IHZvaWQgc2hyaW5rKCk7CgogICAgICAgIHZvaWQgdmlzaXRXZWFrU2V0KEhlYXBSb290VmlzaXRv
ciYpOwogICAgICAgIHZvaWQgcmVhcFdlYWtTZXQoKTsKCgoKCiAgICAgICAgdm9pZCBkaWRDb25z
dW1lRnJlZUxpc3QoKTsKICAgICAgICB2b2lkIHN0b3BBbGxvY2F0aW5nKGNvbnN0IEZyZWVMaXN0
Jik7CiAgICAgICAgRnJlZUxpc3QgcmVzdW1lQWxsb2NhdGluZygpOwoKCgogICAgICAgIGJvb2wg
Y2xlYXJOZXdseUFsbG9jYXRlZCgpOwogICAgICAgIHZvaWQgY2xlYXJNYXJrcygpOwogICAgICAg
IHRlbXBsYXRlIDxIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlPgogICAgICAgIHZvaWQgY2xl
YXJNYXJrc1dpdGhDb2xsZWN0aW9uVHlwZSgpOwoKICAgICAgICBzaXplX3QgbWFya0NvdW50KCk7
CiAgICAgICAgYm9vbCBpc0VtcHR5KCk7CgogICAgICAgIHNpemVfdCBjZWxsU2l6ZSgpOwogICAg
ICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIGNvbnN0OwoKICAgICAgICBzaXplX3Qgc2l6ZSgp
OwogICAgICAgIHNpemVfdCBjYXBhY2l0eSgpOwoKICAgICAgICBib29sIGlzTWFya2VkKGNvbnN0
IHZvaWQqKTsKICAgICAgICBib29sIHRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAg
ICAgIGJvb2wgaXNMaXZlKGNvbnN0IEpTQ2VsbCopOwogICAgICAgIGJvb2wgaXNMaXZlQ2VsbChj
b25zdCB2b2lkKik7CiAgICAgICAgYm9vbCBpc0F0b20oY29uc3Qgdm9pZCopOwogICAgICAgIGJv
b2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEpTQ2VsbCopOwogICAgICAgIHZvaWQg
c2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICB2b2lkIGNsZWFyTWFya2VkKGNvbnN0IHZv
aWQqKTsKCiAgICAgICAgYm9vbCBpc05ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKICAgICAg
ICB2b2lkIHNldE5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKICAgICAgICB2b2lkIGNsZWFy
TmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCopOwoKICAgICAgICBib29sIGlzQWxsb2NhdGVkKCkg
Y29uc3Q7CiAgICAgICAgYm9vbCBpc01hcmtlZE9yUmV0aXJlZCgpIGNvbnN0OwogICAgICAgIGJv
b2wgbmVlZHNTd2VlcGluZygpIGNvbnN0OwogICAgICAgIHZvaWQgZGlkUmV0aXJlQmxvY2soY29u
c3QgRnJlZUxpc3QmKTsKICAgICAgICB2b2lkIHdpbGxSZW1vdmVCbG9jaygpOwoKICAgICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hDZWxsKEZ1
bmN0b3ImKTsKICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3Rh
dHVzIGZvckVhY2hMaXZlQ2VsbChGdW5jdG9yJik7CiAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoRGVhZENlbGwoRnVuY3RvciYpOwoKICAg
IHByaXZhdGU6CiAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9
IGF0b21TaXplIC0gMTsKCiAgICAgICAgZW51bSBCbG9ja1N0YXRlIHsgTmV3LCBGcmVlTGlzdGVk
LCBBbGxvY2F0ZWQsIE1hcmtlZCwgUmV0aXJlZCB9OwogICAgICAgIHRlbXBsYXRlPGJvb2wgY2Fs
bERlc3RydWN0b3JzPiBGcmVlTGlzdCBzd2VlcEhlbHBlcihTd2VlcE1vZGUgPSBTd2VlcE9ubHkp
OwoKICAgICAgICB0eXBlZGVmIGNoYXIgQXRvbVthdG9tU2l6ZV07CgogICAgICAgIE1hcmtlZEJs
b2NrKE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IGNlbGxTaXplLCBi
b29sIG5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAgIEF0b20qIGF0b21zKCk7CiAgICAgICAgc2l6
ZV90IGF0b21OdW1iZXIoY29uc3Qgdm9pZCopOwogICAgICAgIHZvaWQgY2FsbERlc3RydWN0b3Io
SlNDZWxsKik7CiAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBNb2RlLCBib29sIGNh
bGxEZXN0cnVjdG9ycz4gRnJlZUxpc3Qgc3BlY2lhbGl6ZWRTd2VlcCgpOwoKICAgICAgICBNYXJr
ZWRCbG9jayogbV9wcmV2OwogICAgICAgIE1hcmtlZEJsb2NrKiBtX25leHQ7CgogICAgICAgIHNp
emVfdCBtX2F0b21zUGVyQ2VsbDsKICAgICAgICBzaXplX3QgbV9lbmRBdG9tOwogICAgICAgIFdU
Rjo6Qml0bWFwPGF0b21zUGVyQmxvY2ssIFdURjo6Qml0bWFwQXRvbWljLCB1aW50OF90PiBtX21h
cmtzOwogICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXVEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrPj4g
bV9uZXdseUFsbG9jYXRlZDsKCiAgICAgICAgc2l6ZV90IG1fY2FwYWNpdHk7CiAgICAgICAgYm9v
bCBtX25lZWRzRGVzdHJ1Y3Rpb247CiAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRv
cjsKICAgICAgICBCbG9ja1N0YXRlIG1fc3RhdGU7CiAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7
CiAgICB9OwoKICAgIGlubGluZSBNYXJrZWRCbG9jazo6RnJlZUxpc3Q6OkZyZWVMaXN0KCkKICAg
ICAgICA6IGhlYWQoMCkKICAgICAgICAsIGJ5dGVzKDApCiAgICB7CiAgICB9CgogICAgaW5saW5l
IE1hcmtlZEJsb2NrOjpGcmVlTGlzdDo6RnJlZUxpc3QoRnJlZUNlbGwqIGhlYWQsIHNpemVfdCBi
eXRlcykKICAgICAgICA6IGhlYWQoaGVhZCkKICAgICAgICAsIGJ5dGVzKGJ5dGVzKQogICAgewog
ICAgfQoKICAgIGlubGluZSBzaXplX3QgTWFya2VkQmxvY2s6OmZpcnN0QXRvbSgpCiAgICB7CiAg
ICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxhdG9tU2l6ZT4oc2l6ZW9mKE1h
cmtlZEJsb2NrKSkgLyBhdG9tU2l6ZTsKICAgIH0KCiAgICBpbmxpbmUgTWFya2VkQmxvY2s6OkF0
b20qIE1hcmtlZEJsb2NrOjphdG9tcygpCiAgICB7CiAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8QXRvbSo+KHRoaXMpOwogICAgfQoKICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpp
c0F0b21BbGlnbmVkKGNvbnN0IHZvaWQqIHApCiAgICB7CiAgICAgICAgcmV0dXJuICEocmVpbnRl
cnByZXRfY2FzdDxCaXRzPihwKSAmIGF0b21BbGlnbm1lbnRNYXNrKTsKICAgIH0KCiAgICBpbmxp
bmUgTWFya2VkQmxvY2sqIE1hcmtlZEJsb2NrOjpibG9ja0Zvcihjb25zdCB2b2lkKiBwKQogICAg
ewogICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PE1hcmtlZEJsb2NrKj4ocmVpbnRlcnBy
ZXRfY2FzdDxCaXRzPihwKSAmIGJsb2NrTWFzayk7CiAgICB9CgogICAgaW5saW5lIE1hcmtlZEFs
bG9jYXRvciogTWFya2VkQmxvY2s6OmFsbG9jYXRvcigpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0
dXJuIG1fYWxsb2NhdG9yOwogICAgfQoKICAgIGlubGluZSBIZWFwKiBNYXJrZWRCbG9jazo6aGVh
cCgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fd2Vha1NldC5oZWFwKCk7CiAgICB9Cgog
ICAgaW5saW5lIFZNKiBNYXJrZWRCbG9jazo6dm0oKSBjb25zdAogICAgewogICAgICAgIHJldHVy
biBtX3dlYWtTZXQudm0oKTsKICAgIH0KCiAgICBpbmxpbmUgV2Vha1NldCYgTWFya2VkQmxvY2s6
OndlYWtTZXQoKQogICAgewogICAgICAgIHJldHVybiBtX3dlYWtTZXQ7CiAgICB9CgogICAgaW5s
aW5lIHZvaWQgTWFya2VkQmxvY2s6OnNocmluaygpCiAgICB7CiAgICAgICAgbV93ZWFrU2V0LnNo
cmluaygpOwogICAgfQoKICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjp2aXNpdFdlYWtTZXQo
SGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0b3IpCiAgICB7CiAgICAgICAgbV93ZWFrU2V0
LnZpc2l0KGhlYXBSb290VmlzaXRvcik7CiAgICB9CgogICAgaW5saW5lIHZvaWQgTWFya2VkQmxv
Y2s6OnJlYXBXZWFrU2V0KCkKICAgIHsKICAgICAgICBtX3dlYWtTZXQucmVhcCgpOwogICAgfQoK
ICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjp3aWxsUmVtb3ZlQmxvY2soKQogICAgewogICAg
ICAgICgodm9pZCkwKTsKICAgIH0KCiAgICBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6ZGlkQ29u
c3VtZUZyZWVMaXN0KCkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgICgodm9pZCkw
KTsKICAgICAgICBtX3N0YXRlID0gQWxsb2NhdGVkOwogICAgfQoKICAgIGlubGluZSBzaXplX3Qg
TWFya2VkQmxvY2s6Om1hcmtDb3VudCgpCiAgICB7CiAgICAgICAgcmV0dXJuIG1fbWFya3MuY291
bnQoKTsKICAgIH0KCiAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNFbXB0eSgpCiAgICB7
CiAgICAgICAgcmV0dXJuIG1fbWFya3MuaXNFbXB0eSgpICYmIG1fd2Vha1NldC5pc0VtcHR5KCkg
JiYgKCFtX25ld2x5QWxsb2NhdGVkIHx8IG1fbmV3bHlBbGxvY2F0ZWQtPmlzRW1wdHkoKSk7CiAg
ICB9CgogICAgaW5saW5lIHNpemVfdCBNYXJrZWRCbG9jazo6Y2VsbFNpemUoKQogICAgewogICAg
ICAgIHJldHVybiBtX2F0b21zUGVyQ2VsbCAqIGF0b21TaXplOwogICAgfQoKICAgIGlubGluZSBi
b29sIE1hcmtlZEJsb2NrOjpuZWVkc0Rlc3RydWN0aW9uKCkgY29uc3QKICAgIHsKICAgICAgICBy
ZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9uOwogICAgfQoKICAgIGlubGluZSBzaXplX3QgTWFya2Vk
QmxvY2s6OnNpemUoKQogICAgewogICAgICAgIHJldHVybiBtYXJrQ291bnQoKSAqIGNlbGxTaXpl
KCk7CiAgICB9CgogICAgaW5saW5lIHNpemVfdCBNYXJrZWRCbG9jazo6Y2FwYWNpdHkoKQogICAg
ewogICAgICAgIHJldHVybiBtX2NhcGFjaXR5OwogICAgfQoKICAgIGlubGluZSBzaXplX3QgTWFy
a2VkQmxvY2s6OmF0b21OdW1iZXIoY29uc3Qgdm9pZCogcCkKICAgIHsKICAgICAgICByZXR1cm4g
KHJlaW50ZXJwcmV0X2Nhc3Q8Qml0cz4ocCkgLSByZWludGVycHJldF9jYXN0PEJpdHM+KHRoaXMp
KSAvIGF0b21TaXplOwogICAgfQoKICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtl
ZChjb25zdCB2b2lkKiBwKQogICAgewogICAgICAgIHJldHVybiBtX21hcmtzLmdldChhdG9tTnVt
YmVyKHApKTsKICAgIH0KCiAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6dGVzdEFuZFNldE1h
cmtlZChjb25zdCB2b2lkKiBwKQogICAgewogICAgICAgIHJldHVybiBtX21hcmtzLmNvbmN1cnJl
bnRUZXN0QW5kU2V0KGF0b21OdW1iZXIocCkpOwogICAgfQoKICAgIGlubGluZSB2b2lkIE1hcmtl
ZEJsb2NrOjpzZXRNYXJrZWQoY29uc3Qgdm9pZCogcCkKICAgIHsKICAgICAgICBtX21hcmtzLnNl
dChhdG9tTnVtYmVyKHApKTsKICAgIH0KCiAgICBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Y2xl
YXJNYXJrZWQoY29uc3Qgdm9pZCogcCkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAg
bV9tYXJrcy5jbGVhcihhdG9tTnVtYmVyKHApKTsKICAgIH0KCiAgICBpbmxpbmUgYm9vbCBNYXJr
ZWRCbG9jazo6aXNOZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKiBwKQogICAgewogICAgICAgIHJl
dHVybiBtX25ld2x5QWxsb2NhdGVkLT5nZXQoYXRvbU51bWJlcihwKSk7CiAgICB9CgogICAgaW5s
aW5lIHZvaWQgTWFya2VkQmxvY2s6OnNldE5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqIHApCiAg
ICB7CiAgICAgICAgbV9uZXdseUFsbG9jYXRlZC0+c2V0KGF0b21OdW1iZXIocCkpOwogICAgfQoK
ICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhck5ld2x5QWxsb2NhdGVkKGNvbnN0IHZv
aWQqIHApCiAgICB7CiAgICAgICAgbV9uZXdseUFsbG9jYXRlZC0+Y2xlYXIoYXRvbU51bWJlcihw
KSk7CiAgICB9CgogICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmNsZWFyTmV3bHlBbGxvY2F0
ZWQoKQogICAgewogICAgICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKSB7CiAgICAgICAgICAgIG1f
bmV3bHlBbGxvY2F0ZWQgPSBudWxscHRyOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGlubGluZSBib29sIE1hcmtlZEJs
b2NrOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSlNDZWxsKiBjZWxsKQogICAgewog
ICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gbV9tYXJrcy5nZXQoYXRvbU51bWJlcihj
ZWxsKSkgfHwgKG1fbmV3bHlBbGxvY2F0ZWQgJiYgaXNOZXdseUFsbG9jYXRlZChjZWxsKSk7CiAg
ICB9CgogICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTGl2ZShjb25zdCBKU0NlbGwqIGNl
bGwpCiAgICB7CiAgICAgICAgc3dpdGNoIChtX3N0YXRlKSB7CiAgICAgICAgY2FzZSBBbGxvY2F0
ZWQ6CiAgICAgICAgICAgIHJldHVybiB0cnVlOwoKICAgICAgICBjYXNlIFJldGlyZWQ6CiAgICAg
ICAgY2FzZSBNYXJrZWQ6CiAgICAgICAgICAgIHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0
ZWQoY2VsbCk7CgogICAgICAgIGNhc2UgTmV3OgogICAgICAgIGNhc2UgRnJlZUxpc3RlZDoKICAg
ICAgICAgICAgV1RGQ3Jhc2goKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0K
CiAgICAgICAgV1RGQ3Jhc2goKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRvbShjb25zdCB2b2lkKiBwKQogICAgewogICAgICAg
ICgodm9pZCkwKTsKICAgICAgICBzaXplX3QgYXRvbU51bWJlciA9IHRoaXMtPmF0b21OdW1iZXIo
cCk7CiAgICAgICAgc2l6ZV90IGZpcnN0QXRvbSA9IHRoaXMtPmZpcnN0QXRvbSgpOwogICAgICAg
IGlmIChhdG9tTnVtYmVyIDwgZmlyc3RBdG9tKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgaWYgKChhdG9tTnVtYmVyIC0gZmlyc3RBdG9tKSAlIG1fYXRvbXNQZXJDZWxsKQogICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgaWYgKGF0b21OdW1iZXIgPj0gbV9lbmRBdG9t
KQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cgog
ICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkKICAg
IHsKICAgICAgICBpZiAoIWlzQXRvbShwKSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSlNDZWxsKj4ocCkpOwogICAgfQoK
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1h
cmtlZEJsb2NrOjpmb3JFYWNoQ2VsbChGdW5jdG9yJiBmdW5jdG9yKQogICAgewogICAgICAgIGZv
ciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVy
Q2VsbCkgewogICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxK
U0NlbGwqPigmYXRvbXMoKVtpXSk7CiAgICAgICAgICAgIGlmIChmdW5jdG9yKGNlbGwpID09IEl0
ZXJhdGlvblN0YXR1czo6RG9uZSkKICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0
dXM6OkRvbmU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRp
bnVlOwogICAgfQoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0
aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpmb3JFYWNoTGl2ZUNlbGwoRnVuY3RvciYgZnVuY3RvcikK
ICAgIHsKICAgICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207
IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gcmVpbnRl
cnByZXRfY2FzdF9wdHI8SlNDZWxsKj4oJmF0b21zKClbaV0pOwogICAgICAgICAgICBpZiAoIWlz
TGl2ZShjZWxsKSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgaWYgKGZ1
bmN0b3IoY2VsbCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQogICAgICAgICAgICAgICAgcmV0
dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIEl0ZXJh
dGlvblN0YXR1czo6Q29udGludWU7CiAgICB9CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0
b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OmZvckVhY2hEZWFkQ2VsbChG
dW5jdG9yJiBmdW5jdG9yKQogICAgewogICAgICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20o
KTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewogICAgICAgICAgICBKU0Nl
bGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxKU0NlbGwqPigmYXRvbXMoKVtpXSk7CiAg
ICAgICAgICAgIGlmIChpc0xpdmUoY2VsbCkpCiAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAg
ICAgICAgICAgIGlmIChmdW5jdG9yKGNlbGwpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKICAg
ICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CiAgICAgICAgfQogICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgfQoKICAgIGlubGluZSBi
b29sIE1hcmtlZEJsb2NrOjpuZWVkc1N3ZWVwaW5nKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1
cm4gbV9zdGF0ZSA9PSBNYXJrZWQ7CiAgICB9CgogICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6
OmlzQWxsb2NhdGVkKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9zdGF0ZSA9PSBBbGxv
Y2F0ZWQ7CiAgICB9CgogICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkT3JSZXRp
cmVkKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQgfHwgbV9z
dGF0ZSA9PSBSZXRpcmVkOwogICAgfQoKfQoKbmFtZXNwYWNlIFdURiB7CgogICAgc3RydWN0IE1h
cmtlZEJsb2NrSGFzaCA6IFB0ckhhc2g8SlNDOjpNYXJrZWRCbG9jayo+IHsKICAgICAgICBzdGF0
aWMgdW5zaWduZWQgaGFzaChKU0M6Ok1hcmtlZEJsb2NrKiBjb25zdCYga2V5KQogICAgICAgIHsK
CgoKICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDOjpCaXRzPihrZXkpIC8g
SlNDOjpNYXJrZWRCbG9jazo6YmxvY2tTaXplOwogICAgICAgIH0KICAgIH07CgogICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpNYXJrZWRCbG9jayo+IHsKICAgICAgICB0eXBl
ZGVmIE1hcmtlZEJsb2NrSGFzaCBIYXNoOwogICAgfTsKCn0KIyAzMCAiLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgiIDIKCgpuYW1lc3BhY2UgSlNDIHsK
CmNsYXNzIEhlYXA7CmNsYXNzIE1hcmtlZFNwYWNlOwpjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CgpjbGFzcyBNYXJrZWRBbGxvY2F0b3IgewogICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKCnB1YmxpYzoKICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGcmVlTGlz
dEhlYWQoKTsKCiAgICBNYXJrZWRBbGxvY2F0b3IoKTsKICAgIHZvaWQgbGFzdENoYW5jZVRvRmlu
YWxpemUoKTsKICAgIHZvaWQgcmVzZXQoKTsKICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoKTsKICAg
IHZvaWQgcmVzdW1lQWxsb2NhdGluZygpOwogICAgc2l6ZV90IGNlbGxTaXplKCkgeyByZXR1cm4g
bV9jZWxsU2l6ZTsgfQogICAgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKCkgeyByZXR1cm4gbV9uZWVk
c0Rlc3RydWN0aW9uOyB9CiAgICB2b2lkKiBhbGxvY2F0ZShzaXplX3QpOwogICAgSGVhcCogaGVh
cCgpIHsgcmV0dXJuIG1faGVhcDsgfQogICAgTWFya2VkQmxvY2sqIHRha2VMYXN0QWN0aXZlQmxv
Y2soKQogICAgewogICAgICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IG1fbGFzdEFjdGl2ZUJsb2Nr
OwogICAgICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gMDsKICAgICAgICByZXR1cm4gYmxvY2s7CiAg
ICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQmxvY2soRnVu
Y3RvciYpOwoKICAgIHZvaWQgYWRkQmxvY2soTWFya2VkQmxvY2sqKTsKICAgIHZvaWQgcmVtb3Zl
QmxvY2soTWFya2VkQmxvY2sqKTsKICAgIHZvaWQgaW5pdChIZWFwKiwgTWFya2VkU3BhY2UqLCBz
aXplX3QgY2VsbFNpemUsIGJvb2wgbmVlZHNEZXN0cnVjdGlvbik7CgogICAgYm9vbCBpc1BhZ2Vk
T3V0KGRvdWJsZSBkZWFkbGluZSk7Cgpwcml2YXRlOgogICAgdm9pZCogYWxsb2NhdGVTbG93Q2Fz
ZShzaXplX3QpOwogICAgdm9pZCogdHJ5QWxsb2NhdGUoc2l6ZV90KTsKICAgIHZvaWQqIHRyeUFs
bG9jYXRlSGVscGVyKHNpemVfdCk7CiAgICB2b2lkKiB0cnlQb3BGcmVlTGlzdChzaXplX3QpOwog
ICAgTWFya2VkQmxvY2sqIGFsbG9jYXRlQmxvY2soc2l6ZV90KTsKICAgIGlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRl
ZCgpOwoKICAgIE1hcmtlZEJsb2NrOjpGcmVlTGlzdCBtX2ZyZWVMaXN0OwogICAgTWFya2VkQmxv
Y2sqIG1fY3VycmVudEJsb2NrOwogICAgTWFya2VkQmxvY2sqIG1fbGFzdEFjdGl2ZUJsb2NrOwog
ICAgTWFya2VkQmxvY2sqIG1fbmV4dEJsb2NrVG9Td2VlcDsKICAgIERvdWJseUxpbmtlZExpc3Q8
TWFya2VkQmxvY2s+IG1fYmxvY2tMaXN0OwogICAgRG91Ymx5TGlua2VkTGlzdDxNYXJrZWRCbG9j
az4gbV9yZXRpcmVkQmxvY2tzOwogICAgc2l6ZV90IG1fY2VsbFNpemU7CiAgICBib29sIG1fbmVl
ZHNEZXN0cnVjdGlvbiB7IGZhbHNlIH07CiAgICBIZWFwKiBtX2hlYXA7CiAgICBNYXJrZWRTcGFj
ZSogbV9tYXJrZWRTcGFjZTsKfTsKCmlubGluZSBwdHJkaWZmX3QgTWFya2VkQWxsb2NhdG9yOjpv
ZmZzZXRPZkZyZWVMaXN0SGVhZCgpCnsKICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJk
aWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxNYXJrZWRBbGxvY2F0b3IqPigweDQwMDApLT5tX2Zy
ZWVMaXN0KSkgLSAweDQwMDApICsgKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50
ZXJwcmV0X2Nhc3Q8TWFya2VkQmxvY2s6OkZyZWVMaXN0Kj4oMHg0MDAwKS0+aGVhZCkpIC0gMHg0
MDAwKTsKfQoKaW5saW5lIE1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2NhdG9yKCkKICAgIDog
bV9jdXJyZW50QmxvY2soMCkKICAgICwgbV9sYXN0QWN0aXZlQmxvY2soMCkKICAgICwgbV9uZXh0
QmxvY2tUb1N3ZWVwKDApCiAgICAsIG1fY2VsbFNpemUoMCkKICAgICwgbV9oZWFwKDApCiAgICAs
IG1fbWFya2VkU3BhY2UoMCkKewp9CgppbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmluaXQo
SGVhcCogaGVhcCwgTWFya2VkU3BhY2UqIG1hcmtlZFNwYWNlLCBzaXplX3QgY2VsbFNpemUsIGJv
b2wgbmVlZHNEZXN0cnVjdGlvbikKewogICAgbV9oZWFwID0gaGVhcDsKICAgIG1fbWFya2VkU3Bh
Y2UgPSBtYXJrZWRTcGFjZTsKICAgIG1fY2VsbFNpemUgPSBjZWxsU2l6ZTsKICAgIG1fbmVlZHNE
ZXN0cnVjdGlvbiA9IG5lZWRzRGVzdHJ1Y3Rpb247Cn0KCmlubGluZSB2b2lkKiBNYXJrZWRBbGxv
Y2F0b3I6OmFsbG9jYXRlKHNpemVfdCBieXRlcykKewogICAgTWFya2VkQmxvY2s6OkZyZWVDZWxs
KiBoZWFkID0gbV9mcmVlTGlzdC5oZWFkOwogICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoIWhl
YWQpLCAwKSkgewogICAgICAgIHZvaWQqIHJlc3VsdCA9IGFsbG9jYXRlU2xvd0Nhc2UoYnl0ZXMp
OwoKCgogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CgogICAgbV9mcmVlTGlzdC5oZWFkID0g
aGVhZC0+bmV4dDsKCgoKICAgIHJldHVybiBoZWFkOwp9CgppbmxpbmUgdm9pZCBNYXJrZWRBbGxv
Y2F0b3I6OnN0b3BBbGxvY2F0aW5nKCkKewogICAgKCh2b2lkKTApOwogICAgaWYgKCFtX2N1cnJl
bnRCbG9jaykgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAg
bV9jdXJyZW50QmxvY2stPnN0b3BBbGxvY2F0aW5nKG1fZnJlZUxpc3QpOwogICAgbV9sYXN0QWN0
aXZlQmxvY2sgPSBtX2N1cnJlbnRCbG9jazsKICAgIG1fY3VycmVudEJsb2NrID0gMDsKICAgIG1f
ZnJlZUxpc3QgPSBNYXJrZWRCbG9jazo6RnJlZUxpc3QoKTsKfQoKaW5saW5lIHZvaWQgTWFya2Vk
QWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKCkKewogICAgaWYgKCFtX2xhc3RBY3RpdmVCbG9j
aykKICAgICAgICByZXR1cm47CgogICAgbV9mcmVlTGlzdCA9IG1fbGFzdEFjdGl2ZUJsb2NrLT5y
ZXN1bWVBbGxvY2F0aW5nKCk7CiAgICBtX2N1cnJlbnRCbG9jayA9IG1fbGFzdEFjdGl2ZUJsb2Nr
OwogICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAwOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rv
cj4gaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpmb3JFYWNoQmxvY2soRnVuY3RvciYgZnVu
Y3RvcikKewogICAgTWFya2VkQmxvY2sqIG5leHQ7CiAgICBmb3IgKE1hcmtlZEJsb2NrKiBibG9j
ayA9IG1fYmxvY2tMaXN0LmhlYWQoKTsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewogICAgICAgIG5l
eHQgPSBibG9jay0+bmV4dCgpOwogICAgICAgIGZ1bmN0b3IoYmxvY2spOwogICAgfQoKICAgIGZv
ciAoTWFya2VkQmxvY2sqIGJsb2NrID0gbV9yZXRpcmVkQmxvY2tzLmhlYWQoKTsgYmxvY2s7IGJs
b2NrID0gbmV4dCkgewogICAgICAgIG5leHQgPSBibG9jay0+bmV4dCgpOwogICAgICAgIGZ1bmN0
b3IoYmxvY2spOwogICAgfQp9Cgp9CiMgMzcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaCIgMgoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9ja1NldC5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrU2V0LmgiCiNkZWZpbmUgTWFya2VkQmxvY2tTZXRfaCAKCgoKCgpuYW1lc3BhY2Ug
SlNDIHsKCmNsYXNzIE1hcmtlZEJsb2NrOwoKY2xhc3MgTWFya2VkQmxvY2tTZXQgewpwdWJsaWM6
CiAgICB2b2lkIGFkZChNYXJrZWRCbG9jayopOwogICAgdm9pZCByZW1vdmUoTWFya2VkQmxvY2sq
KTsKCiAgICBUaW55Qmxvb21GaWx0ZXIgZmlsdGVyKCkgY29uc3Q7CiAgICBjb25zdCBIYXNoU2V0
PE1hcmtlZEJsb2NrKj4mIHNldCgpIGNvbnN0OwoKcHJpdmF0ZToKICAgIHZvaWQgcmVjb21wdXRl
RmlsdGVyKCk7CgogICAgVGlueUJsb29tRmlsdGVyIG1fZmlsdGVyOwogICAgSGFzaFNldDxNYXJr
ZWRCbG9jayo+IG1fc2V0Owp9OwoKaW5saW5lIHZvaWQgTWFya2VkQmxvY2tTZXQ6OmFkZChNYXJr
ZWRCbG9jayogYmxvY2spCnsKICAgIG1fZmlsdGVyLmFkZChyZWludGVycHJldF9jYXN0PEJpdHM+
KGJsb2NrKSk7CiAgICBtX3NldC5hZGQoYmxvY2spOwp9CgppbmxpbmUgdm9pZCBNYXJrZWRCbG9j
a1NldDo6cmVtb3ZlKE1hcmtlZEJsb2NrKiBibG9jaykKewogICAgdW5zaWduZWQgb2xkQ2FwYWNp
dHkgPSBtX3NldC5jYXBhY2l0eSgpOwogICAgbV9zZXQucmVtb3ZlKGJsb2NrKTsKICAgIGlmICht
X3NldC5jYXBhY2l0eSgpICE9IG9sZENhcGFjaXR5KQogICAgICAgIHJlY29tcHV0ZUZpbHRlcigp
Owp9CgppbmxpbmUgdm9pZCBNYXJrZWRCbG9ja1NldDo6cmVjb21wdXRlRmlsdGVyKCkKewogICAg
VGlueUJsb29tRmlsdGVyIGZpbHRlcjsKICAgIGZvciAoSGFzaFNldDxNYXJrZWRCbG9jayo+Ojpp
dGVyYXRvciBpdCA9IG1fc2V0LmJlZ2luKCk7IGl0ICE9IG1fc2V0LmVuZCgpOyArK2l0KQogICAg
ICAgIGZpbHRlci5hZGQocmVpbnRlcnByZXRfY2FzdDxCaXRzPigqaXQpKTsKICAgIG1fZmlsdGVy
ID0gZmlsdGVyOwp9CgppbmxpbmUgVGlueUJsb29tRmlsdGVyIE1hcmtlZEJsb2NrU2V0OjpmaWx0
ZXIoKSBjb25zdAp7CiAgICByZXR1cm4gbV9maWx0ZXI7Cn0KCmlubGluZSBjb25zdCBIYXNoU2V0
PE1hcmtlZEJsb2NrKj4mIE1hcmtlZEJsb2NrU2V0OjpzZXQoKSBjb25zdAp7CiAgICByZXR1cm4g
bV9zZXQ7Cn0KCn0KIyAzOSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
IiAyCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaCIg
MQojIDIzICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oIgoj
ZGVmaW5lIE1hcmtlZFNwYWNlX2ggCiMgMzQgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmgiCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgSGVhcDsKY2xhc3MgSGVh
cEl0ZXJhdGlvblNjb3BlOwpjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CgpzdHJ1Y3QgQ2xl
YXJNYXJrcyA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7CiAgICB2b2lkIG9wZXJhdG9yKCko
TWFya2VkQmxvY2sqIGJsb2NrKQogICAgewogICAgICAgIGJsb2NrLT5jbGVhck1hcmtzKCk7CiAg
ICB9Cn07CgpzdHJ1Y3QgU3dlZXAgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewogICAgdm9p
ZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykgeyBibG9jay0+c3dlZXAoKTsgfQp9OwoK
c3RydWN0IFpvbWJpZnlTd2VlcCA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7CiAgICB2b2lk
IG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKQogICAgewogICAgICAgIGlmIChibG9jay0+
bmVlZHNTd2VlcGluZygpKQogICAgICAgICAgICBibG9jay0+c3dlZXAoKTsKICAgIH0KfTsKCnN0
cnVjdCBNYXJrQ291bnQgOiBNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yIHsKICAgIHZvaWQgb3Bl
cmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spIHsgY291bnQoYmxvY2stPm1hcmtDb3VudCgpKTsg
fQp9OwoKc3RydWN0IFNpemUgOiBNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yIHsKICAgIHZvaWQg
b3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spIHsgY291bnQoYmxvY2stPm1hcmtDb3VudCgp
ICogYmxvY2stPmNlbGxTaXplKCkpOyB9Cn07CgpjbGFzcyBNYXJrZWRTcGFjZSB7CiAgICBwcml2
YXRlOiBNYXJrZWRTcGFjZShjb25zdCBNYXJrZWRTcGFjZSYpID0gZGVsZXRlOyBNYXJrZWRTcGFj
ZSYgb3BlcmF0b3I9KGNvbnN0IE1hcmtlZFNwYWNlJikgPSBkZWxldGU7OwpwdWJsaWM6CgogICAg
c3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlU3RlcCA9IE1hcmtlZEJsb2NrOjphdG9tU2l6ZTsK
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZUN1dG9mZiA9IDc2ODsKICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgcHJlY2lzZUNvdW50ID0gcHJlY2lzZUN1dG9mZiAvIHByZWNpc2VTdGVwOwoK
CiAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGltcHJlY2lzZVN0YXJ0ID0gMTAyNDsKICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgaW1wcmVjaXNlU3RlcCA9IDI1NjsKICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgaW1wcmVjaXNlQ3V0b2ZmID0gTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSAvIDI7CiAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IGltcHJlY2lzZUNvdW50ID0gaW1wcmVjaXNlQ3V0b2ZmIC8gaW1wcmVj
aXNlU3RlcDsKCiAgICBzdHJ1Y3QgU3Vic3BhY2UgewogICAgICAgIHN0ZDo6YXJyYXk8TWFya2Vk
QWxsb2NhdG9yLCBwcmVjaXNlQ291bnQ+IHByZWNpc2VBbGxvY2F0b3JzOwogICAgICAgIHN0ZDo6
YXJyYXk8TWFya2VkQWxsb2NhdG9yLCBpbXByZWNpc2VDb3VudD4gaW1wcmVjaXNlQWxsb2NhdG9y
czsKICAgICAgICBNYXJrZWRBbGxvY2F0b3IgbGFyZ2VBbGxvY2F0b3I7CiAgICB9OwoKICAgIE1h
cmtlZFNwYWNlKEhlYXAqKTsKICAgIH5NYXJrZWRTcGFjZSgpOwogICAgdm9pZCBsYXN0Q2hhbmNl
VG9GaW5hbGl6ZSgpOwoKICAgIE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yRm9yKHNpemVfdCk7
CiAgICBNYXJrZWRBbGxvY2F0b3ImIGRlc3RydWN0b3JBbGxvY2F0b3JGb3Ioc2l6ZV90KTsKICAg
IHZvaWQqIGFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZV90KTsKICAgIHZvaWQqIGFsbG9jYXRl
V2l0aG91dERlc3RydWN0b3Ioc2l6ZV90KTsKCiAgICBTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmpl
Y3RzV2l0aERlc3RydWN0b3IoKSB7IHJldHVybiBtX2Rlc3RydWN0b3JTcGFjZTsgfQogICAgU3Vi
c3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0c1dpdGhvdXREZXN0cnVjdG9yKCkgeyByZXR1cm4gbV9u
b3JtYWxTcGFjZTsgfQoKICAgIHZvaWQgcmVzZXRBbGxvY2F0b3JzKCk7CgogICAgdm9pZCB2aXNp
dFdlYWtTZXRzKEhlYXBSb290VmlzaXRvciYpOwogICAgdm9pZCByZWFwV2Vha1NldHMoKTsKCiAg
ICBNYXJrZWRCbG9ja1NldCYgYmxvY2tzKCkgeyByZXR1cm4gbV9ibG9ja3M7IH0KCiAgICB2b2lk
IHdpbGxTdGFydEl0ZXJhdGluZygpOwogICAgYm9vbCBpc0l0ZXJhdGluZygpIGNvbnN0IHsgcmV0
dXJuIG1faXNJdGVyYXRpbmc7IH0KICAgIHZvaWQgZGlkRmluaXNoSXRlcmF0aW5nKCk7CgogICAg
dm9pZCBzdG9wQWxsb2NhdGluZygpOwogICAgdm9pZCByZXN1bWVBbGxvY2F0aW5nKCk7CgogICAg
dHlwZWRlZiBIYXNoU2V0PE1hcmtlZEJsb2NrKj46Oml0ZXJhdG9yIEJsb2NrSXRlcmF0b3I7Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlw
ZSBmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgRnVuY3RvciYpOwogICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JF
YWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJik7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hEZWFkQ2VsbChIZWFw
SXRlcmF0aW9uU2NvcGUmLCBGdW5jdG9yJik7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hEZWFkQ2VsbChIZWFwSXRlcmF0
aW9uU2NvcGUmKTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0
b3I6OlJldHVyblR5cGUgZm9yRWFjaEJsb2NrKEZ1bmN0b3ImKTsKICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaEJsb2NrKCk7
CgogICAgdm9pZCBzaHJpbmsoKTsKICAgIHZvaWQgZnJlZUJsb2NrKE1hcmtlZEJsb2NrKik7CiAg
ICB2b2lkIGZyZWVPclNocmlua0Jsb2NrKE1hcmtlZEJsb2NrKik7CgogICAgdm9pZCBkaWRBZGRC
bG9jayhNYXJrZWRCbG9jayopOwogICAgdm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoTWFya2VkQmxv
Y2sqKTsKICAgIHZvaWQgZGlkQWxsb2NhdGVJbkJsb2NrKE1hcmtlZEJsb2NrKik7CgogICAgdm9p
ZCBjbGVhck1hcmtzKCk7CiAgICB2b2lkIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKICAgIHZvaWQg
c3dlZXAoKTsKICAgIHZvaWQgem9tYmlmeVN3ZWVwKCk7CiAgICBzaXplX3Qgb2JqZWN0Q291bnQo
KTsKICAgIHNpemVfdCBzaXplKCk7CiAgICBzaXplX3QgY2FwYWNpdHkoKTsKCiAgICBib29sIGlz
UGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsKCiAgICBjb25zdCBWZWN0b3I8TWFya2VkQmxvY2sq
PiYgYmxvY2tzV2l0aE5ld09iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Nrc1dpdGhOZXdP
YmplY3RzOyB9Cgpwcml2YXRlOgogICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgIGZyaWVuZCBjbGFzcyBKSVQ7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dm9pZCBmb3JFYWNoQWxsb2NhdG9yKEZ1bmN0b3ImKTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IHZvaWQgZm9yRWFjaEFsbG9jYXRvcigpOwoKICAgIFN1YnNwYWNlIG1fZGVzdHJ1Y3Rv
clNwYWNlOwogICAgU3Vic3BhY2UgbV9ub3JtYWxTcGFjZTsKCiAgICBIZWFwKiBtX2hlYXA7CiAg
ICBzaXplX3QgbV9jYXBhY2l0eTsKICAgIGJvb2wgbV9pc0l0ZXJhdGluZzsKICAgIE1hcmtlZEJs
b2NrU2V0IG1fYmxvY2tzOwogICAgVmVjdG9yPE1hcmtlZEJsb2NrKj4gbV9ibG9ja3NXaXRoTmV3
T2JqZWN0czsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBG
dW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJh
dGlvblNjb3BlJiwgRnVuY3RvciYgZnVuY3RvcikKewogICAgKCh2b2lkKTApOwogICAgQmxvY2tJ
dGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKICAgIGZvciAoQmxvY2tJdGVyYXRv
ciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAg
IGlmICgoKml0KS0+Zm9yRWFjaExpdmVDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0YXR1czo6
RG9uZSkKICAgICAgICAgICAgYnJlYWs7CiAgICB9CiAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5W
YWx1ZSgpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVu
Y3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRp
b25TY29wZSYgc2NvcGUpCnsKICAgIEZ1bmN0b3IgZnVuY3RvcjsKICAgIHJldHVybiBmb3JFYWNo
TGl2ZUNlbGwoc2NvcGUsIGZ1bmN0b3IpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBp
bmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9yRWFjaERl
YWRDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIEZ1bmN0b3ImIGZ1bmN0b3IpCnsKICAgICgodm9p
ZCkwKTsKICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7CiAgICBm
b3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKICAgICAgICBpZiAoKCppdCktPmZvckVhY2hEZWFkQ2VsbChmdW5jdG9yKSA9PSBJ
dGVyYXRpb25TdGF0dXM6OkRvbmUpCiAgICAgICAgICAgIGJyZWFrOwogICAgfQogICAgcmV0dXJu
IGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5s
aW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgTWFya2VkU3BhY2U6OmZvckVhY2hEZWFk
Q2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmIHNjb3BlKQp7CiAgICBGdW5jdG9yIGZ1bmN0b3I7CiAg
ICByZXR1cm4gZm9yRWFjaERlYWRDZWxsKHNjb3BlLCBmdW5jdG9yKTsKfQoKaW5saW5lIE1hcmtl
ZEFsbG9jYXRvciYgTWFya2VkU3BhY2U6OmFsbG9jYXRvckZvcihzaXplX3QgYnl0ZXMpCnsKICAg
ICgodm9pZCkwKTsKICAgIGlmIChieXRlcyA8PSBwcmVjaXNlQ3V0b2ZmKQogICAgICAgIHJldHVy
biBtX25vcm1hbFNwYWNlLnByZWNpc2VBbGxvY2F0b3JzWyhieXRlcyAtIDEpIC8gcHJlY2lzZVN0
ZXBdOwogICAgaWYgKGJ5dGVzIDw9IGltcHJlY2lzZUN1dG9mZikKICAgICAgICByZXR1cm4gbV9u
b3JtYWxTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzWyhieXRlcyAtIDEpIC8gaW1wcmVjaXNlU3Rl
cF07CiAgICByZXR1cm4gbV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9jYXRvcjsKfQoKaW5saW5lIE1h
cmtlZEFsbG9jYXRvciYgTWFya2VkU3BhY2U6OmRlc3RydWN0b3JBbGxvY2F0b3JGb3Ioc2l6ZV90
IGJ5dGVzKQp7CiAgICAoKHZvaWQpMCk7CiAgICBpZiAoYnl0ZXMgPD0gcHJlY2lzZUN1dG9mZikK
ICAgICAgICByZXR1cm4gbV9kZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbKGJ5dGVz
IC0gMSkgLyBwcmVjaXNlU3RlcF07CiAgICBpZiAoYnl0ZXMgPD0gaW1wcmVjaXNlQ3V0b2ZmKQog
ICAgICAgIHJldHVybiBtX2Rlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzWyhieXRl
cyAtIDEpIC8gaW1wcmVjaXNlU3RlcF07CiAgICByZXR1cm4gbV9kZXN0cnVjdG9yU3BhY2UubGFy
Z2VBbGxvY2F0b3I7Cn0KCmlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVXaXRob3V0
RGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpCnsKICAgIHJldHVybiBhbGxvY2F0b3JGb3IoYnl0ZXMp
LmFsbG9jYXRlKGJ5dGVzKTsKfQoKaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZVdp
dGhEZXN0cnVjdG9yKHNpemVfdCBieXRlcykKewogICAgcmV0dXJuIGRlc3RydWN0b3JBbGxvY2F0
b3JGb3IoYnl0ZXMpLmFsbG9jYXRlKGJ5dGVzKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0
b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JF
YWNoQmxvY2soRnVuY3RvciYgZnVuY3RvcikKewogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
cmVjaXNlQ291bnQ7ICsraSkKICAgICAgICBtX25vcm1hbFNwYWNlLnByZWNpc2VBbGxvY2F0b3Jz
W2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW1w
cmVjaXNlQ291bnQ7ICsraSkKICAgICAgICBtX25vcm1hbFNwYWNlLmltcHJlY2lzZUFsbG9jYXRv
cnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9j
YXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CgogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
cmVjaXNlQ291bnQ7ICsraSkKICAgICAgICBtX2Rlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2Nh
dG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGltcHJlY2lzZUNvdW50OyArK2kpCiAgICAgICAgbV9kZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNl
QWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICBtX2Rlc3RydWN0b3JTcGFj
ZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CgogICAgcmV0dXJuIGZ1bmN0
b3IucmV0dXJuVmFsdWUoKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0
eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2soKQp7
CiAgICBGdW5jdG9yIGZ1bmN0b3I7CiAgICByZXR1cm4gZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwp9
CgppbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6ZGlkQWRkQmxvY2soTWFya2VkQmxvY2sqIGJsb2Nr
KQp7CiAgICBtX2NhcGFjaXR5ICs9IGJsb2NrLT5jYXBhY2l0eSgpOwogICAgbV9ibG9ja3MuYWRk
KGJsb2NrKTsKfQoKaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmRpZEFsbG9jYXRlSW5CbG9jayhN
YXJrZWRCbG9jayogYmxvY2spCnsKICAgIG1fYmxvY2tzV2l0aE5ld09iamVjdHMuYXBwZW5kKGJs
b2NrKTsKfQoKaW5saW5lIHNpemVfdCBNYXJrZWRTcGFjZTo6b2JqZWN0Q291bnQoKQp7CiAgICBy
ZXR1cm4gZm9yRWFjaEJsb2NrPE1hcmtDb3VudD4oKTsKfQoKaW5saW5lIHNpemVfdCBNYXJrZWRT
cGFjZTo6c2l6ZSgpCnsKICAgIHJldHVybiBmb3JFYWNoQmxvY2s8U2l6ZT4oKTsKfQoKaW5saW5l
IHNpemVfdCBNYXJrZWRTcGFjZTo6Y2FwYWNpdHkoKQp7CiAgICByZXR1cm4gbV9jYXBhY2l0eTsK
fQoKfQojIDQwICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgiIDIKCiMg
MSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaCIgMQojIDI3
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oIgojZGVmaW5l
IFNsb3RWaXNpdG9yX2ggCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nl
bGxTdGF0ZS5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxT
dGF0ZS5oIgojZGVmaW5lIENlbGxTdGF0ZV9oIAoKbmFtZXNwYWNlIEpTQyB7CgplbnVtIGNsYXNz
IENlbGxTdGF0ZSA6IHVpbnQ4X3QgewojIDQyICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9DZWxsU3RhdGUuaCIKICAgIE9sZEJsYWNrID0gMCwKCgogICAgTmV3V2hpdGUgPSAxLAoK
CgoKICAgIE9sZEdyZXkgPSAyLAoKCgogICAgTmV3R3JleSA9IDMKfTsKCn0KIyAzMCAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaCIgMgoKCiMgMSAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgiIDEKIyAyNyAiLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgiCiNkZWZpbmUgTWFya1N0YWNrX2gg
CgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXlJ
bmxpbmVzLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdt
ZW50ZWRBcnJheUlubGluZXMuaCIKI2RlZmluZSBHQ1NlZ21lbnRlZEFycmF5SW5saW5lc19oIAoK
CgpuYW1lc3BhY2UgSlNDIHsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpHQ1NlZ21lbnRlZEFycmF5
PFQ+OjpHQ1NlZ21lbnRlZEFycmF5KCkKICAgIDogbV90b3AoMCkKICAgICwgbV9udW1iZXJPZlNl
Z21lbnRzKDApCnsKICAgIG1fc2VnbWVudHMucHVzaChHQ0FycmF5U2VnbWVudDxUPjo6Y3JlYXRl
KCkpOwogICAgbV9udW1iZXJPZlNlZ21lbnRzKys7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpH
Q1NlZ21lbnRlZEFycmF5PFQ+Ojp+R0NTZWdtZW50ZWRBcnJheSgpCnsKICAgICgodm9pZCkwKTsK
ICAgICgodm9pZCkwKTsKICAgIEdDQXJyYXlTZWdtZW50PFQ+OjpkZXN0cm95KG1fc2VnbWVudHMu
cmVtb3ZlSGVhZCgpKTsKICAgIG1fbnVtYmVyT2ZTZWdtZW50cy0tOwogICAgKCh2b2lkKTApOwog
ICAgKCh2b2lkKTApOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kdm9pZCBHQ1NlZ21lbnRlZEFy
cmF5PFQ+OjpjbGVhcigpCnsKICAgIGlmICghbV9zZWdtZW50cy5oZWFkKCkpCiAgICAgICAgcmV0
dXJuOwogICAgR0NBcnJheVNlZ21lbnQ8VD4qIG5leHQ7CiAgICBmb3IgKEdDQXJyYXlTZWdtZW50
PFQ+KiBjdXJyZW50ID0gbV9zZWdtZW50cy5oZWFkKCk7IGN1cnJlbnQtPm5leHQoKTsgY3VycmVu
dCA9IG5leHQpIHsKICAgICAgICBuZXh0ID0gY3VycmVudC0+bmV4dCgpOwogICAgICAgIG1fc2Vn
bWVudHMucmVtb3ZlKGN1cnJlbnQpOwogICAgICAgIEdDQXJyYXlTZWdtZW50PFQ+OjpkZXN0cm95
KGN1cnJlbnQpOwogICAgfQogICAgbV90b3AgPSAwOwogICAgbV9udW1iZXJPZlNlZ21lbnRzID0g
MTsKCgoKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnZvaWQgR0NTZWdtZW50ZWRBcnJheTxUPjo6
ZXhwYW5kKCkKewogICAgKCh2b2lkKTApOwoKICAgIEdDQXJyYXlTZWdtZW50PFQ+KiBuZXh0U2Vn
bWVudCA9IEdDQXJyYXlTZWdtZW50PFQ+OjpjcmVhdGUoKTsKICAgIG1fbnVtYmVyT2ZTZWdtZW50
cysrOwoKCgoKCiAgICBtX3NlZ21lbnRzLnB1c2gobmV4dFNlZ21lbnQpOwogICAgc2V0VG9wRm9y
RW1wdHlTZWdtZW50KCk7CiAgICB2YWxpZGF0ZVByZXZpb3VzKCk7Cn0KCnRlbXBsYXRlIDx0eXBl
bmFtZSBUPgpib29sIEdDU2VnbWVudGVkQXJyYXk8VD46OnJlZmlsbCgpCnsKICAgIHZhbGlkYXRl
UHJldmlvdXMoKTsKICAgIGlmICh0b3AoKSkKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIEdDQXJy
YXlTZWdtZW50PFQ+OjpkZXN0cm95KG1fc2VnbWVudHMucmVtb3ZlSGVhZCgpKTsKICAgICgodm9p
ZCkwKTsKICAgIG1fbnVtYmVyT2ZTZWdtZW50cy0tOwogICAgc2V0VG9wRm9yRnVsbFNlZ21lbnQo
KTsKICAgIHZhbGlkYXRlUHJldmlvdXMoKTsKICAgIHJldHVybiB0cnVlOwp9Cgp0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4Kdm9pZCBHQ1NlZ21lbnRlZEFycmF5PFQ+OjpmaWxsVmVjdG9yKFZlY3RvcjxU
PiYgdmVjdG9yKQp7CiAgICAoKHZvaWQpMCk7CgogICAgR0NBcnJheVNlZ21lbnQ8VD4qIGN1cnJl
bnRTZWdtZW50ID0gbV9zZWdtZW50cy5oZWFkKCk7CiAgICBpZiAoIWN1cnJlbnRTZWdtZW50KQog
ICAgICAgIHJldHVybjsKCiAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV90b3A7ICsraSkgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICB2ZWN0
b3JbY291bnQrK10gPSBjdXJyZW50U2VnbWVudC0+ZGF0YSgpW2ldOwogICAgfQoKICAgIGN1cnJl
bnRTZWdtZW50ID0gY3VycmVudFNlZ21lbnQtPm5leHQoKTsKICAgIHdoaWxlIChjdXJyZW50U2Vn
bWVudCkgewogICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzX3NlZ21lbnRDYXBhY2l0
eTsgKytpKSB7CiAgICAgICAgICAgICgodm9pZCkwKTsKICAgICAgICAgICAgdmVjdG9yW2NvdW50
KytdID0gY3VycmVudFNlZ21lbnQtPmRhdGEoKVtpXTsKICAgICAgICB9CiAgICAgICAgY3VycmVu
dFNlZ21lbnQgPSBjdXJyZW50U2VnbWVudC0+bmV4dCgpOwogICAgfQp9Cgp0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KaW5saW5lIEdDQXJyYXlTZWdtZW50PFQ+KiBHQ0FycmF5U2VnbWVudDxUPjo6Y3Jl
YXRlKCkKewogICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhibG9ja1NpemUpKSBH
Q0FycmF5U2VnbWVudDxUPigpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW5saW5lIHZvaWQg
R0NBcnJheVNlZ21lbnQ8VD46OmRlc3Ryb3koR0NBcnJheVNlZ21lbnQqIHNlZ21lbnQpCnsKICAg
IHNlZ21lbnQtPn5HQ0FycmF5U2VnbWVudCgpOwogICAgZmFzdEZyZWUoc2VnbWVudCk7Cn0KCnRl
bXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgc2l6ZV90IEdDU2VnbWVudGVkQXJyYXk8VD46OnBv
c3RJbmNUb3AoKQp7CiAgICBzaXplX3QgcmVzdWx0ID0gbV90b3ArKzsKICAgICgodm9pZCkwKTsK
ICAgIHJldHVybiByZXN1bHQ7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgc2l6ZV90
IEdDU2VnbWVudGVkQXJyYXk8VD46OnByZURlY1RvcCgpCnsKICAgIHNpemVfdCByZXN1bHQgPSAt
LW1fdG9wOwogICAgKCh2b2lkKTApOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CmlubGluZSB2b2lkIEdDU2VnbWVudGVkQXJyYXk8VD46OnNldFRvcEZvckZ1bGxT
ZWdtZW50KCkKewogICAgKCh2b2lkKTApOwogICAgbV90b3AgPSBzX3NlZ21lbnRDYXBhY2l0eTsK
fQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZSB2b2lkIEdDU2VnbWVudGVkQXJyYXk8VD46
OnNldFRvcEZvckVtcHR5U2VnbWVudCgpCnsKICAgICgodm9pZCkwKTsKICAgIG1fdG9wID0gMDsK
fQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZSBzaXplX3QgR0NTZWdtZW50ZWRBcnJheTxU
Pjo6dG9wKCkKewogICAgKCh2b2lkKTApOwogICAgcmV0dXJuIG1fdG9wOwp9Cgp0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KCmlubGluZSB2b2lkIEdDU2VnbWVudGVkQXJyYXk8VD46OnZhbGlkYXRlUHJl
dmlvdXMoKSB7IH0KIyAxOTAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDU2Vn
bWVudGVkQXJyYXlJbmxpbmVzLmgiCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgdm9pZCBH
Q1NlZ21lbnRlZEFycmF5PFQ+OjphcHBlbmQoVCB2YWx1ZSkKewogICAgaWYgKG1fdG9wID09IHNf
c2VnbWVudENhcGFjaXR5KQogICAgICAgIGV4cGFuZCgpOwogICAgbV9zZWdtZW50cy5oZWFkKCkt
PmRhdGEoKVtwb3N0SW5jVG9wKCldID0gdmFsdWU7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpp
bmxpbmUgYm9vbCBHQ1NlZ21lbnRlZEFycmF5PFQ+OjpjYW5SZW1vdmVMYXN0KCkKewogICAgcmV0
dXJuICEhbV90b3A7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgY29uc3QgVCBHQ1Nl
Z21lbnRlZEFycmF5PFQ+OjpyZW1vdmVMYXN0KCkKewogICAgcmV0dXJuIG1fc2VnbWVudHMuaGVh
ZCgpLT5kYXRhKClbcHJlRGVjVG9wKCldOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW5saW5l
IGJvb2wgR0NTZWdtZW50ZWRBcnJheTxUPjo6aXNFbXB0eSgpCnsKICAgIGlmIChtX3RvcCkKICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICBpZiAobV9zZWdtZW50cy5oZWFkKCktPm5leHQoKSkgewog
ICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICByZXR1cm4g
dHJ1ZTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmlubGluZSBzaXplX3QgR0NTZWdtZW50ZWRB
cnJheTxUPjo6c2l6ZSgpCnsKICAgIHJldHVybiBtX3RvcCArIHNfc2VnbWVudENhcGFjaXR5ICog
KG1fbnVtYmVyT2ZTZWdtZW50cyAtIDEpOwp9Cgp9CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtTdGFjay5oIiAyCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIEpTQ2Vs
bDsKCmNsYXNzIE1hcmtTdGFja0FycmF5IDogcHVibGljIEdDU2VnbWVudGVkQXJyYXk8Y29uc3Qg
SlNDZWxsKj4gewpwdWJsaWM6CiAgICBNYXJrU3RhY2tBcnJheSgpOwoKICAgIHZvaWQgZG9uYXRl
U29tZUNlbGxzVG8oTWFya1N0YWNrQXJyYXkmIG90aGVyKTsKICAgIHZvaWQgc3RlYWxTb21lQ2Vs
bHNGcm9tKE1hcmtTdGFja0FycmF5JiBvdGhlciwgc2l6ZV90IGlkbGVUaHJlYWRDb3VudCk7Cn07
Cgp9CiMgMzMgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgi
IDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9PcGFxdWVSb290U2V0Lmgi
IDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvT3BhcXVlUm9vdFNldC5o
IgojZGVmaW5lIE9wYXF1ZVJvb3RTZXRfaCAKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBPcGFx
dWVSb290U2V0IHsKICAgIHByaXZhdGU6IE9wYXF1ZVJvb3RTZXQoY29uc3QgT3BhcXVlUm9vdFNl
dCYpID0gZGVsZXRlOyBPcGFxdWVSb290U2V0JiBvcGVyYXRvcj0oY29uc3QgT3BhcXVlUm9vdFNl
dCYpID0gZGVsZXRlOzsKcHVibGljOgogICAgT3BhcXVlUm9vdFNldCgpCiAgICAgICAgOiBtX2xh
c3RRdWVyaWVkUm9vdChudWxscHRyKQogICAgICAgICwgbV9jb250YWluc0xhc3RRdWVyaWVkUm9v
dChmYWxzZSkKICAgIHsKICAgIH0KCiAgICBib29sIGNvbnRhaW5zKHZvaWQqIHJvb3QpIGNvbnN0
CiAgICB7CiAgICAgICAgaWYgKHJvb3QgIT0gbV9sYXN0UXVlcmllZFJvb3QpIHsKICAgICAgICAg
ICAgbV9sYXN0UXVlcmllZFJvb3QgPSByb290OwogICAgICAgICAgICBtX2NvbnRhaW5zTGFzdFF1
ZXJpZWRSb290ID0gbV9yb290cy5jb250YWlucyhyb290KTsKICAgICAgICB9CiAgICAgICAgcmV0
dXJuIG1fY29udGFpbnNMYXN0UXVlcmllZFJvb3Q7CiAgICB9CgogICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9yb290cy5pc0VtcHR5KCk7CiAgICB9CgogICAg
dm9pZCBjbGVhcigpCiAgICB7CiAgICAgICAgbV9yb290cy5jbGVhcigpOwogICAgICAgIG1fbGFz
dFF1ZXJpZWRSb290ID0gbnVsbHB0cjsKICAgICAgICBtX2NvbnRhaW5zTGFzdFF1ZXJpZWRSb290
ID0gZmFsc2U7CiAgICB9CgogICAgdm9pZCBhZGQodm9pZCogcm9vdCkKICAgIHsKICAgICAgICBp
ZiAocm9vdCA9PSBtX2xhc3RRdWVyaWVkUm9vdCkKICAgICAgICAgICAgbV9jb250YWluc0xhc3RR
dWVyaWVkUm9vdCA9IHRydWU7CiAgICAgICAgbV9yb290cy5hZGQocm9vdCk7CiAgICB9CgogICAg
aW50IHNpemUoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX3Jvb3RzLnNpemUoKTsKICAg
IH0KCiAgICBIYXNoU2V0PHZvaWQqPjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdAogICAg
ewogICAgICAgIHJldHVybiBtX3Jvb3RzLmJlZ2luKCk7CiAgICB9CgogICAgSGFzaFNldDx2b2lk
Kj46OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fcm9v
dHMuZW5kKCk7CiAgICB9CgoKcHJpdmF0ZToKICAgIEhhc2hTZXQ8dm9pZCo+IG1fcm9vdHM7CiAg
ICBtdXRhYmxlIHZvaWQqIG1fbGFzdFF1ZXJpZWRSb290OwogICAgbXV0YWJsZSBib29sIG1fY29u
dGFpbnNMYXN0UXVlcmllZFJvb3Q7Cn07Cgp9CiMgMzQgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgiIDIKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgQ29uc2Vy
dmF0aXZlUm9vdHM7CmNsYXNzIEdDVGhyZWFkU2hhcmVkRGF0YTsKY2xhc3MgSGVhcDsKY2xhc3Mg
SGVhcFNuYXBzaG90QnVpbGRlcjsKdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgSklUV3JpdGVC
YXJyaWVyOwpjbGFzcyBVbmNvbmRpdGlvbmFsRmluYWxpemVyOwp0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBjbGFzcyBXZWFrOwpjbGFzcyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyOwp0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBjbGFzcyBXcml0ZUJhcnJpZXJCYXNlOwoKY2xhc3MgU2xvdFZpc2l0b3IgewogICAg
cHJpdmF0ZTogU2xvdFZpc2l0b3IoY29uc3QgU2xvdFZpc2l0b3ImKSA9IGRlbGV0ZTsgU2xvdFZp
c2l0b3ImIG9wZXJhdG9yPShjb25zdCBTbG90VmlzaXRvciYpID0gZGVsZXRlOzsKICAgIHB1Ymxp
Yzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lk
KiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsg
fSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2
b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxs
b2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0
RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBs
b2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSBwcml2YXRlOiB0eXBlZGVm
IGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvOwoKICAgIGZy
aWVuZCBjbGFzcyBTZXRDdXJyZW50Q2VsbFNjb3BlOwogICAgZnJpZW5kIGNsYXNzIEhlYXBSb290
VmlzaXRvcjsKICAgIGZyaWVuZCBjbGFzcyBIZWFwOwoKcHVibGljOgogICAgU2xvdFZpc2l0b3Io
SGVhcCYpOwogICAgflNsb3RWaXNpdG9yKCk7CgogICAgTWFya1N0YWNrQXJyYXkmIG1hcmtTdGFj
aygpIHsgcmV0dXJuIG1fc3RhY2s7IH0KICAgIGNvbnN0IE1hcmtTdGFja0FycmF5JiBtYXJrU3Rh
Y2soKSBjb25zdCB7IHJldHVybiBtX3N0YWNrOyB9CgogICAgVk0mIHZtKCk7CiAgICBjb25zdCBW
TSYgdm0oKSBjb25zdDsKICAgIEhlYXAqIGhlYXAoKSBjb25zdDsKCiAgICB2b2lkIGFwcGVuZChD
b25zZXJ2YXRpdmVSb290cyYpOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYXBwZW5k
KEpJVFdyaXRlQmFycmllcjxUPiopOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhcHBl
bmQoV3JpdGVCYXJyaWVyQmFzZTxUPiopOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBh
cHBlbmRIaWRkZW4oV3JpdGVCYXJyaWVyQmFzZTxUPiopOwogICAgdGVtcGxhdGU8dHlwZW5hbWUg
SXRlcmF0b3I+IHZvaWQgYXBwZW5kKEl0ZXJhdG9yIGJlZ2luICwgSXRlcmF0b3IgZW5kKTsKICAg
IHZvaWQgYXBwZW5kVmFsdWVzKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qLCBzaXplX3QgY291
bnQpOwogICAgdm9pZCBhcHBlbmRWYWx1ZXNIaWRkZW4oV3JpdGVCYXJyaWVyQmFzZTxVbmtub3du
PiosIHNpemVfdCBjb3VudCk7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgIHZvaWQgYXBw
ZW5kVW5iYXJyaWVyZWRQb2ludGVyKFQqKik7CiAgICB2b2lkIGFwcGVuZFVuYmFycmllcmVkVmFs
dWUoSlNWYWx1ZSopOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgIHZvaWQgYXBwZW5kVW5i
YXJyaWVyZWRXZWFrKFdlYWs8VD4qKTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICB2b2lk
IGFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKFQqKTsKICAgIHZvaWQgYXBwZW5kVW5i
YXJyaWVyZWRSZWFkT25seVZhbHVlKEpTVmFsdWUpOwoKICAgIHZvaWQgYWRkT3BhcXVlUm9vdCh2
b2lkKik7CiAgICBib29sIGNvbnRhaW5zT3BhcXVlUm9vdCh2b2lkKikgY29uc3Q7CiAgICBUcmlT
dGF0ZSBjb250YWluc09wYXF1ZVJvb3RUcmlTdGF0ZSh2b2lkKikgY29uc3Q7CiAgICBpbnQgb3Bh
cXVlUm9vdENvdW50KCk7CgogICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9zdGFjay5pc0Vt
cHR5KCk7IH0KCiAgICB2b2lkIGRpZFN0YXJ0TWFya2luZygpOwogICAgdm9pZCByZXNldCgpOwog
ICAgdm9pZCBjbGVhck1hcmtTdGFjaygpOwoKICAgIHNpemVfdCBieXRlc1Zpc2l0ZWQoKSBjb25z
dCB7IHJldHVybiBtX2J5dGVzVmlzaXRlZDsgfQogICAgc2l6ZV90IGJ5dGVzQ29waWVkKCkgY29u
c3QgeyByZXR1cm4gbV9ieXRlc0NvcGllZDsgfQogICAgc2l6ZV90IHZpc2l0Q291bnQoKSBjb25z
dCB7IHJldHVybiBtX3Zpc2l0Q291bnQ7IH0KCiAgICB2b2lkIGRvbmF0ZSgpOwogICAgdm9pZCBk
cmFpbigpOwogICAgdm9pZCBkb25hdGVBbmREcmFpbigpOwoKICAgIGVudW0gU2hhcmVkRHJhaW5N
b2RlIHsgU2xhdmVEcmFpbiwgTWFzdGVyRHJhaW4gfTsKICAgIHZvaWQgZHJhaW5Gcm9tU2hhcmVk
KFNoYXJlZERyYWluTW9kZSk7CgogICAgdm9pZCBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKICAg
IHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycygpOwoKICAgIHZvaWQgY29weUxh
dGVyKEpTQ2VsbCosIENvcHlUb2tlbiwgdm9pZCosIHNpemVfdCk7CgogICAgdm9pZCByZXBvcnRF
eHRyYU1lbW9yeVZpc2l0ZWQoc2l6ZV90KTsKCiAgICB2b2lkIGFkZFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIoV2Vha1JlZmVyZW5jZUhhcnZlc3RlciopOwogICAgdm9pZCBhZGRVbmNvbmRpdGlvbmFs
RmluYWxpemVyKFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIqKTsKCiAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsKCiAgICBib29sIGlzQnVpbGRpbmdIZWFwU25hcHNob3QoKSBjb25zdCB7
IHJldHVybiAhIW1faGVhcFNuYXBzaG90QnVpbGRlcjsgfQoKcHJpdmF0ZToKICAgIGZyaWVuZCBj
bGFzcyBQYXJhbGxlbE1vZGVFbmFibGVyOwoKICAgIHZvaWQgYXBwZW5kKEpTVmFsdWUpOwogICAg
dm9pZCBhcHBlbmRIaWRkZW4oSlNWYWx1ZSk7CgogICAgdm9pZCBzZXRNYXJrZWRBbmRBcHBlbmRU
b01hcmtTdGFjayhKU0NlbGwqKTsKICAgIHZvaWQgYXBwZW5kVG9NYXJrU3RhY2soSlNDZWxsKik7
CgogICAgdm9pZCBtZXJnZU9wYXF1ZVJvb3RzKCk7CiAgICB2b2lkIG1lcmdlT3BhcXVlUm9vdHNJ
Zk5lY2Vzc2FyeSgpOwogICAgdm9pZCBtZXJnZU9wYXF1ZVJvb3RzSWZQcm9maXRhYmxlKCk7Cgog
ICAgdm9pZCB2aXNpdENoaWxkcmVuKGNvbnN0IEpTQ2VsbCopOwoKICAgIHZvaWQgZG9uYXRlS25v
d25QYXJhbGxlbCgpOwoKICAgIE1hcmtTdGFja0FycmF5IG1fc3RhY2s7CiAgICBPcGFxdWVSb290
U2V0IG1fb3BhcXVlUm9vdHM7CgogICAgc2l6ZV90IG1fYnl0ZXNWaXNpdGVkOwogICAgc2l6ZV90
IG1fYnl0ZXNDb3BpZWQ7CiAgICBzaXplX3QgbV92aXNpdENvdW50OwogICAgYm9vbCBtX2lzSW5Q
YXJhbGxlbE1vZGU7CgogICAgSGVhcCYgbV9oZWFwOwoKICAgIEhlYXBTbmFwc2hvdEJ1aWxkZXIq
IG1faGVhcFNuYXBzaG90QnVpbGRlciB7IG51bGxwdHIgfTsKICAgIEpTQ2VsbCogbV9jdXJyZW50
Q2VsbCB7IG51bGxwdHIgfTsKCiAgICBDZWxsU3RhdGUgbV9jdXJyZW50T2JqZWN0Q2VsbFN0YXRl
QmVmb3JlVmlzaXRpbmcgeyBDZWxsU3RhdGU6Ok5ld1doaXRlIH07CgpwdWJsaWM6CgoKCgp9OwoK
Y2xhc3MgUGFyYWxsZWxNb2RlRW5hYmxlciB7CnB1YmxpYzoKICAgIFBhcmFsbGVsTW9kZUVuYWJs
ZXIoU2xvdFZpc2l0b3ImIHN0YWNrKQogICAgICAgIDogbV9zdGFjayhzdGFjaykKICAgIHsKICAg
ICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9zdGFjay5tX2lzSW5QYXJhbGxlbE1vZGUgPSB0cnVl
OwogICAgfQoKICAgIH5QYXJhbGxlbE1vZGVFbmFibGVyKCkKICAgIHsKICAgICAgICAoKHZvaWQp
MCk7CiAgICAgICAgbV9zdGFjay5tX2lzSW5QYXJhbGxlbE1vZGUgPSBmYWxzZTsKICAgIH0KCnBy
aXZhdGU6CiAgICBTbG90VmlzaXRvciYgbV9zdGFjazsKfTsKCn0KIyA0MiAiLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIiAyCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaCIKI2RlZmluZSBTdHJ1Y3R1
cmVJRFRhYmxlX2ggCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVW51c2Vk
UG9pbnRlci5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVW51c2Vk
UG9pbnRlci5oIgojZGVmaW5lIFVudXNlZFBvaW50ZXJfaCAKCm5hbWVzcGFjZSBKU0MgewoKc3Rh
dGljIGNvbnN0IHVpbnRwdHJfdCB1bnVzZWRQb2ludGVyID0gMHhkMWU3YmVlZjsKCn0KCnVzaW5n
IEpTQzo6dW51c2VkUG9pbnRlcjsKIyAzMCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oIiAyCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBTdHJ1
Y3R1cmU7CgoKCgp0eXBlZGVmIFN0cnVjdHVyZSogU3RydWN0dXJlSUQ7CgoKY2xhc3MgU3RydWN0
dXJlSURUYWJsZSB7CiAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpwdWJs
aWM6CiAgICBTdHJ1Y3R1cmVJRFRhYmxlKCk7CgogICAgdm9pZCoqIGJhc2UoKSB7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqKj4oJm1fdGFibGUpOyB9CgogICAgU3RydWN0dXJlKiBnZXQo
U3RydWN0dXJlSUQpOwogICAgdm9pZCBkZWFsbG9jYXRlSUQoU3RydWN0dXJlKiwgU3RydWN0dXJl
SUQpOwogICAgU3RydWN0dXJlSUQgYWxsb2NhdGVJRChTdHJ1Y3R1cmUqKTsKCiAgICB2b2lkIGZs
dXNoT2xkVGFibGVzKCk7Cgpwcml2YXRlOgogICAgdm9pZCByZXNpemUoc2l6ZV90IG5ld0NhcGFj
aXR5KTsKCiAgICB1bmlvbiBTdHJ1Y3R1cmVPck9mZnNldCB7CiAgICAgICAgcHVibGljOiB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJh
dG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQg
b3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXpl
KTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHAp
OyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9u
KSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHByaXZhdGU6IHR5cGVkZWYgaW50IF9f
dGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87CiAgICBwdWJsaWM6CiAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CiAgICAgICAgU3RydWN0dXJlSUQgb2Zmc2V0Owog
ICAgfTsKCiAgICBTdHJ1Y3R1cmVPck9mZnNldCogdGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Rh
YmxlLmdldCgpOyB9CgogICAgc3RhdGljIGNvbnN0IHNpemVfdCBzX2luaXRpYWxTaXplID0gMjU2
OwoKICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U3RydWN0dXJlT3JPZmZzZXRbXT4+IG1fb2xk
VGFibGVzOwoKICAgIHVpbnQzMl90IG1fZmlyc3RGcmVlT2Zmc2V0OwogICAgc3RkOjp1bmlxdWVf
cHRyPFN0cnVjdHVyZU9yT2Zmc2V0W10+IG1fdGFibGU7CgogICAgc2l6ZV90IG1fc2l6ZTsKICAg
IHNpemVfdCBtX2NhcGFjaXR5OwoKCgoKfTsKCmlubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZUlE
VGFibGU6OmdldChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkKewoKCgoKICAgIHJldHVybiBzdHJ1
Y3R1cmVJRDsKCn0KCn0KIyA0MyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oIiAyCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1VuY29uZGl0aW9u
YWxGaW5hbGl6ZXIuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9V
bmNvbmRpdGlvbmFsRmluYWxpemVyLmgiCiNkZWZpbmUgVW5jb25kaXRpb25hbEZpbmFsaXplcl9o
IAoKCgpuYW1lc3BhY2UgSlNDIHsKCgoKCgpjbGFzcyBVbmNvbmRpdGlvbmFsRmluYWxpemVyIDog
cHVibGljIExpc3RhYmxlSGFuZGxlcjxVbmNvbmRpdGlvbmFsRmluYWxpemVyPiB7CiAgICBwdWJs
aWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7
IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0g
dm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFs
bG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFz
dEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCog
bG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gcHJpdmF0ZTogdHlwZWRl
ZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybzsKcHVibGlj
OgogICAgdmlydHVhbCB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCkgPSAwOwoKcHJvdGVj
dGVkOgogICAgdmlydHVhbCB+VW5jb25kaXRpb25hbEZpbmFsaXplcigpIHsgfQp9OwoKfQojIDQ1
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgiIDIKIyAxICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSGFuZGxlT3duZXIuaCIgMQojIDI3ICIuLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSGFuZGxlT3duZXIuaCIKI2RlZmluZSBX
ZWFrSGFuZGxlT3duZXJfaCAKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBTbG90VmlzaXRvcjsK
CmNsYXNzIFdlYWtIYW5kbGVPd25lciB7CnB1YmxpYzoKICAgIHZpcnR1YWwgfldlYWtIYW5kbGVP
d25lcigpOwogICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEhhbmRs
ZTxVbmtub3duPiwgdm9pZCogY29udGV4dCwgU2xvdFZpc2l0b3ImKTsKICAgIHZpcnR1YWwgdm9p
ZCBmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwp9OwoKfQojIDQ2ICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgiIDIKIyAxICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrUmVmZXJlbmNlSGFydmVzdGVyLmgiIDEKIyAyMSAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5o
IgojZGVmaW5lIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXJfaCAKCgoKbmFtZXNwYWNlIEpTQyB7Cgpj
bGFzcyBTbG90VmlzaXRvcjsKCmNsYXNzIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgOiBwdWJsaWMg
TGlzdGFibGVIYW5kbGVyPFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXI+IHsKcHVibGljOgogICAgdmly
dHVhbCB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKSA9IDA7Cgpwcm90ZWN0
ZWQ6CiAgICBXZWFrUmVmZXJlbmNlSGFydmVzdGVyKCkKICAgIHsKICAgIH0KCiAgICB2aXJ0dWFs
IH5XZWFrUmVmZXJlbmNlSGFydmVzdGVyKCkgeyB9Cn07Cgp9CiMgNDcgIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1dyaXRlQmFycmllckJ1ZmZlci5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1dyaXRlQmFycmllckJ1ZmZlci5oIgojZGVmaW5lIFdyaXRlQmFycmll
ckJ1ZmZlcl9oIAoKCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIEhlYXA7CmNsYXNzIEpTQ2VsbDsK
CmNsYXNzIFdyaXRlQmFycmllckJ1ZmZlciB7CnB1YmxpYzoKICAgIFdyaXRlQmFycmllckJ1ZmZl
cih1bnNpZ25lZCBjYXBhY2l0eSk7CiAgICB+V3JpdGVCYXJyaWVyQnVmZmVyKCk7CgogICAgdm9p
ZCBhZGQoSlNDZWxsKik7CiAgICB2b2lkIGZsdXNoKEhlYXAmKTsKICAgIHZvaWQgcmVzZXQoKTsK
CiAgICB1bnNpZ25lZCogY3VycmVudEluZGV4QWRkcmVzcygpCiAgICB7CiAgICAgICAgcmV0dXJu
ICZtX2N1cnJlbnRJbmRleDsKICAgIH0KCiAgICB1bnNpZ25lZCBjYXBhY2l0eSgpIGNvbnN0CiAg
ICB7CiAgICAgICAgcmV0dXJuIG1fY2FwYWNpdHk7CiAgICB9CgogICAgSlNDZWxsKiogYnVmZmVy
KCkKICAgIHsKICAgICAgICByZXR1cm4gbV9idWZmZXI7CiAgICB9Cgpwcml2YXRlOgogICAgdW5z
aWduZWQgbV9jdXJyZW50SW5kZXg7CiAgICBjb25zdCB1bnNpZ25lZCBtX2NhcGFjaXR5OwogICAg
SlNDZWxsKiogY29uc3QgbV9idWZmZXI7Cn07Cgp9CiMgNDggIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1dyaXRlQmFycmllclN1cHBvcnQuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0LmgiCiNkZWZpbmUgV3JpdGVCYXJyaWVyU3Vw
cG9ydF9oIAoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGlu
Z0NvdW50ZXIuaCIgMQojIDMwICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
YW1wbGluZ0NvdW50ZXIuaCIKI2RlZmluZSBTYW1wbGluZ0NvdW50ZXJfaCAKCgoKCm5hbWVzcGFj
ZSBKU0MgewoKCgoKCmNsYXNzIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyIHsKICAgIGZyaWVuZCBj
bGFzcyBEZWxldGFibGVTYW1wbGluZ0NvdW50ZXI7CnB1YmxpYzoKICAgIHZvaWQgY291bnQodWlu
dDMyX3QgY291bnQgPSAxKQogICAgewogICAgICAgIG1fY291bnRlciArPSBjb3VudDsKICAgIH0K
CiAgICBzdGF0aWMgdm9pZCBkdW1wKCk7CgogICAgaW50NjRfdCogYWRkcmVzc09mQ291bnRlcigp
IHsgcmV0dXJuICZtX2NvdW50ZXI7IH0KCnByb3RlY3RlZDoKCiAgICB2b2lkIGluaXQoY29uc3Qg
Y2hhciogbmFtZSkKICAgIHsKICAgICAgICBtX2NvdW50ZXIgPSAwOwogICAgICAgIG1fbmFtZSA9
IG5hbWU7CgoKCiAgICAgICAgbV9uZXh0ID0gc19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWlu
OwogICAgICAgIHNfYWJzdHJhY3RTYW1wbGluZ0NvdW50ZXJDaGFpbi0+bV9yZWZlcmVyID0gJm1f
bmV4dDsKCiAgICAgICAgc19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluID0gdGhpczsKICAg
ICAgICBtX3JlZmVyZXIgPSAmc19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluOwogICAgfQoK
ICAgIGludDY0X3QgbV9jb3VudGVyOwogICAgY29uc3QgY2hhciogbV9uYW1lOwogICAgQWJzdHJh
Y3RTYW1wbGluZ0NvdW50ZXIqIG1fbmV4dDsKCgogICAgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIq
KiBtX3JlZmVyZXI7CgogICAgc3RhdGljIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyIHNfYWJzdHJh
Y3RTYW1wbGluZ0NvdW50ZXJDaGFpbkVuZDsKICAgIHN0YXRpYyBBYnN0cmFjdFNhbXBsaW5nQ291
bnRlciogc19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluOwogICAgc3RhdGljIGJvb2wgc19j
b21wbGV0ZWQ7Cn07CiMgMTc0ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
YW1wbGluZ0NvdW50ZXIuaCIKfQojIDMwICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Xcml0ZUJhcnJpZXJTdXBwb3J0LmgiIDIKCgpuYW1lc3BhY2UgSlNDIHsKCgoKCgplbnVtIFdy
aXRlQmFycmllclVzZUtpbmQgewoKCgogICAgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3Ms
CgoKCiAgICBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2VzcywKCgoKCgogICAgV3JpdGVCYXJy
aWVyRm9yR2VuZXJpY0FjY2Vzcwp9OwoKY2xhc3MgV3JpdGVCYXJyaWVyQ291bnRlcnMgewpwcml2
YXRlOgogICAgV3JpdGVCYXJyaWVyQ291bnRlcnMoKSB7IH0KCnB1YmxpYzoKIyA4NCAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV3JpdGVCYXJyaWVyU3VwcG9ydC5oIgogICAgc3Rh
dGljIGNoYXIgdXNlc1dpdGhCYXJyaWVyRnJvbUNwcDsKICAgIHN0YXRpYyBjaGFyIHVzZXNXaXRo
b3V0QmFycmllckZyb21DcHA7CgoKICAgIHN0YXRpYyB2b2lkIGNvdW50V3JpdGVCYXJyaWVyKCkK
ICAgIHsKCgoKICAgIH0KfTsKCn0KIyA0OSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oIiAyCgoKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEhlbHBlclBv
b2wuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEhlbHBlclBvb2wuaCIK
I2RlZmluZSBQYXJhbGxlbEhlbHBlclBvb2xfaCAKCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYv
Q29uZGl0aW9uLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL1dURi93dGYvQ29uZGl0aW9uLmgiCiNk
ZWZpbmUgV1RGX0NvbmRpdGlvbl9oIAoKCgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0N1cnJl
bnRUaW1lLmgiIDEKIyAzMyAiLi4vLi4vU291cmNlL1dURi93dGYvQ3VycmVudFRpbWUuaCIKI2Rl
ZmluZSBDdXJyZW50VGltZV9oIAoKCgoKbmFtZXNwYWNlIFdURiB7CgoKCgoKCiBkb3VibGUgY3Vy
cmVudFRpbWUoKTsKCgppbmxpbmUgZG91YmxlIGN1cnJlbnRUaW1lTVMoKQp7CiAgICByZXR1cm4g
Y3VycmVudFRpbWUoKSAqIDEwMDAuMDsKfQoKCgoKCiBkb3VibGUgbW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCk7CgppbmxpbmUgZG91YmxlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZU1T
KCkKewogICAgcmV0dXJuIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICogMTAwMC4wOwp9
CgoKCgogc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBjdXJyZW50Q1BVVGltZSgpOwoKIHZvaWQg
c2xlZXAoZG91YmxlKTsKCmlubGluZSB2b2lkIHNsZWVwTVMoZG91YmxlIHZhbHVlKQp7CiAgICBz
bGVlcCh2YWx1ZSAvIDEwMDAuMCk7Cn0KCn0KCnVzaW5nIFdURjo6Y3VycmVudENQVVRpbWU7CnVz
aW5nIFdURjo6Y3VycmVudFRpbWU7CnVzaW5nIFdURjo6Y3VycmVudFRpbWVNUzsKdXNpbmcgV1RG
Ojptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWU7CnVzaW5nIFdURjo6bW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lTVM7CnVzaW5nIFdURjo6c2xlZXA7CnVzaW5nIFdURjo6c2xlZXBNUzsKIyAz
MiAiLi4vLi4vU291cmNlL1dURi93dGYvQ29uZGl0aW9uLmgiIDIKCiMgMSAiLi4vLi4vU291cmNl
L1dURi93dGYvUGFya2luZ0xvdC5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1Bhcmtp
bmdMb3QuaCIKI2RlZmluZSBXVEZfUGFya2luZ0xvdF9oIAoKCgoKIyAxICIuLi8uLi9Tb3VyY2Uv
V1RGL3d0Zi9TY29wZWRMYW1iZGEuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9TY29w
ZWRMYW1iZGEuaCIKI2RlZmluZSBTY29wZWRMYW1iZGFfaCAKCm5hbWVzcGFjZSBXVEYgewojIDQz
ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9TY29wZWRMYW1iZGEuaCIKdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rpb25UeXBlPiBjbGFzcyBTY29wZWRMYW1iZGE7CnRlbXBsYXRlPHR5cGVuYW1lIFJlc3Vs
dFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CmNsYXNzIFNjb3BlZExhbWJkYTxSZXN1
bHRUeXBlIChBcmd1bWVudFR5cGVzLi4uKT4gewpwdWJsaWM6CiAgICBTY29wZWRMYW1iZGEoUmVz
dWx0VHlwZSAoKmltcGwpKHZvaWQqIGFyZywgQXJndW1lbnRUeXBlcy4uLikgPSBudWxscHRyLCB2
b2lkKiBhcmcgPSBudWxscHRyKQogICAgICAgIDogbV9pbXBsKGltcGwpCiAgICAgICAgLCBtX2Fy
ZyhhcmcpCiAgICB7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gUGFzc2VkQXJndW1l
bnRUeXBlcz4KICAgIFJlc3VsdFR5cGUgb3BlcmF0b3IoKShQYXNzZWRBcmd1bWVudFR5cGVzJiYu
Li4gYXJndW1lbnRzKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX2ltcGwobV9hcmcsIHN0
ZDo6Zm9yd2FyZDxQYXNzZWRBcmd1bWVudFR5cGVzPihhcmd1bWVudHMpLi4uKTsKICAgIH0KCnBy
aXZhdGU6CiAgICBSZXN1bHRUeXBlICgqbV9pbXBsKSh2b2lkKiBhcmcsIEFyZ3VtZW50VHlwZXMu
Li4pOwogICAgdm9pZCAqbV9hcmc7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUs
IHR5cGVuYW1lIEZ1bmN0b3I+IGNsYXNzIFNjb3BlZExhbWJkYUZ1bmN0b3I7CnRlbXBsYXRlPHR5
cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXMsIHR5cGVuYW1lIEZ1
bmN0b3I+CmNsYXNzIFNjb3BlZExhbWJkYUZ1bmN0b3I8UmVzdWx0VHlwZSAoQXJndW1lbnRUeXBl
cy4uLiksIEZ1bmN0b3I+IDogcHVibGljIFNjb3BlZExhbWJkYTxSZXN1bHRUeXBlIChBcmd1bWVu
dFR5cGVzLi4uKT4gewpwdWJsaWM6CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXNzZWRGdW5jdG9y
PgogICAgU2NvcGVkTGFtYmRhRnVuY3RvcihQYXNzZWRGdW5jdG9yJiYgZnVuY3RvcikKICAgICAg
ICA6IFNjb3BlZExhbWJkYTxSZXN1bHRUeXBlIChBcmd1bWVudFR5cGVzLi4uKT4oaW1wbEZ1bmN0
aW9uLCB0aGlzKQogICAgICAgICwgbV9mdW5jdG9yKHN0ZDo6Zm9yd2FyZDxQYXNzZWRGdW5jdG9y
PihmdW5jdG9yKSkKICAgIHsKICAgIH0KCnByaXZhdGU6CiAgICBzdGF0aWMgUmVzdWx0VHlwZSBp
bXBsRnVuY3Rpb24odm9pZCogYXJndW1lbnQsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQog
ICAgewogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTY29wZWRMYW1iZGFGdW5jdG9yKj4oYXJn
dW1lbnQpLT5tX2Z1bmN0b3IoYXJndW1lbnRzLi4uKTsKICAgIH0KCiAgICBGdW5jdG9yIG1fZnVu
Y3RvcjsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgRnVuY3Rv
cj4KU2NvcGVkTGFtYmRhRnVuY3RvcjxGdW5jdGlvblR5cGUsIEZ1bmN0b3I+IHNjb3BlZExhbWJk
YShGdW5jdG9yJiYgZnVuY3RvcikKewogICAgcmV0dXJuIFNjb3BlZExhbWJkYUZ1bmN0b3I8RnVu
Y3Rpb25UeXBlLCBGdW5jdG9yPihzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvcikpOwp9Cgp9
Cgp1c2luZyBXVEY6OlNjb3BlZExhbWJkYTsKdXNpbmcgV1RGOjpzY29wZWRMYW1iZGE7CiMgMzMg
Ii4uLy4uL1NvdXJjZS9XVEYvd3RmL1BhcmtpbmdMb3QuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZy5oIiAxCiMgMzEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Zy5oIgojZGVmaW5lIFRocmVhZGluZ19oIAojIDQ2ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9UaHJl
YWRpbmcuaCIKbmFtZXNwYWNlIFdURiB7Cgp0eXBlZGVmIHVpbnQzMl90IFRocmVhZElkZW50aWZp
ZXI7CnR5cGVkZWYgdm9pZCAoKlRocmVhZEZ1bmN0aW9uKSh2b2lkKiBhcmd1bWVudCk7CgoKCgog
dm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CgoKCiBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRo
cmVhZChjb25zdCBjaGFyKiB0aHJlYWROYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOwoKCgog
dm9pZCBzZXRDdXJyZW50VGhyZWFkSXNVc2VySW50ZXJhY3RpdmUoaW50IHJlbGF0aXZlUHJpb3Jp
dHkgPSAwKTsKIHZvaWQgc2V0Q3VycmVudFRocmVhZElzVXNlckluaXRpYXRlZChpbnQgcmVsYXRp
dmVQcmlvcml0eSA9IDApOwoKIFRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpOwogdm9p
ZCBjaGFuZ2VUaHJlYWRQcmlvcml0eShUaHJlYWRJZGVudGlmaWVyLCBpbnQpOwogaW50IHdhaXRG
b3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIpOwogdm9pZCBkZXRhY2hUaHJlYWQo
VGhyZWFkSWRlbnRpZmllcik7CgoKIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVh
ZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CgoKVGhyZWFkSWRlbnRp
ZmllciBjcmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNo
YXIqIHRocmVhZE5hbWUpOwoKCgp2b2lkIGluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwo
Y29uc3QgY2hhciogdGhyZWFkTmFtZSk7Cgp9Cgp1c2luZyBXVEY6OlRocmVhZElkZW50aWZpZXI7
CnVzaW5nIFdURjo6Y3JlYXRlVGhyZWFkOwp1c2luZyBXVEY6OmN1cnJlbnRUaHJlYWQ7CnVzaW5n
IFdURjo6Y2hhbmdlVGhyZWFkUHJpb3JpdHk7CnVzaW5nIFdURjo6ZGV0YWNoVGhyZWFkOwp1c2lu
ZyBXVEY6OndhaXRGb3JUaHJlYWRDb21wbGV0aW9uOwojIDM0ICIuLi8uLi9Tb3VyY2UvV1RGL3d0
Zi9QYXJraW5nTG90LmgiIDIKCm5hbWVzcGFjZSBXVEYgewoKY2xhc3MgUGFya2luZ0xvdCB7CiAg
ICBQYXJraW5nTG90KCkgPSBkZWxldGU7CiAgICBQYXJraW5nTG90KGNvbnN0IFBhcmtpbmdMb3Qm
KSA9IGRlbGV0ZTsKCnB1YmxpYzoKICAgIHR5cGVkZWYgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9j
ayBDbG9jazsKIyA1NSAiLi4vLi4vU291cmNlL1dURi93dGYvUGFya2luZ0xvdC5oIgogICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmFsaWRhdGlvbkZ1bmN0b3IsIHR5cGVuYW1lIEJlZm9yZVNsZWVwRnVu
Y3Rvcj4KICAgIHN0YXRpYyBib29sIHBhcmtDb25kaXRpb25hbGx5KAogICAgICAgIGNvbnN0IHZv
aWQqIGFkZHJlc3MsCiAgICAgICAgVmFsaWRhdGlvbkZ1bmN0b3ImJiB2YWxpZGF0aW9uLAogICAg
ICAgIEJlZm9yZVNsZWVwRnVuY3RvciYmIGJlZm9yZVNsZWVwLAogICAgICAgIENsb2NrOjp0aW1l
X3BvaW50IHRpbWVvdXQpCiAgICB7CiAgICAgICAgcmV0dXJuIHBhcmtDb25kaXRpb25hbGx5SW1w
bCgKICAgICAgICAgICAgYWRkcmVzcywKICAgICAgICAgICAgc2NvcGVkTGFtYmRhPGJvb2woKT4o
c3RkOjpmb3J3YXJkPFZhbGlkYXRpb25GdW5jdG9yPih2YWxpZGF0aW9uKSksCiAgICAgICAgICAg
IHNjb3BlZExhbWJkYTx2b2lkKCk+KHN0ZDo6Zm9yd2FyZDxCZWZvcmVTbGVlcEZ1bmN0b3I+KGJl
Zm9yZVNsZWVwKSksCiAgICAgICAgICAgIHRpbWVvdXQpOwogICAgfQoKCgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KICAgIHN0YXRpYyBib29sIGNvbXBhcmVBbmRQYXJrKGNv
bnN0IEF0b21pYzxUPiogYWRkcmVzcywgVSBleHBlY3RlZCkKICAgIHsKICAgICAgICByZXR1cm4g
cGFya0NvbmRpdGlvbmFsbHkoCiAgICAgICAgICAgIGFkZHJlc3MsCiAgICAgICAgICAgIFthZGRy
ZXNzLCBleHBlY3RlZF0gKCkgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICBVIHZhbHVlID0gYWRk
cmVzcy0+bG9hZCgpOwogICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09IGV4cGVjdGVkOwog
ICAgICAgICAgICB9LAogICAgICAgICAgICBbXSAoKSB7IH0sCiAgICAgICAgICAgIENsb2NrOjp0
aW1lX3BvaW50OjptYXgoKSk7CiAgICB9CgoKCgogICAgc3RydWN0IFVucGFya1Jlc3VsdCB7CiAg
ICAgICAgYm9vbCBkaWRVbnBhcmtUaHJlYWQgeyBmYWxzZSB9OwogICAgICAgIGJvb2wgbWF5SGF2
ZU1vcmVUaHJlYWRzIHsgZmFsc2UgfTsKICAgIH07CiAgICBzdGF0aWMgVW5wYXJrUmVzdWx0IHVu
cGFya09uZShjb25zdCB2b2lkKiBhZGRyZXNzKTsKIyAxMDQgIi4uLy4uL1NvdXJjZS9XVEYvd3Rm
L1BhcmtpbmdMb3QuaCIKICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrRnVuY3Rvcj4KICAg
IHN0YXRpYyB2b2lkIHVucGFya09uZShjb25zdCB2b2lkKiBhZGRyZXNzLCBDYWxsYmFja0Z1bmN0
b3ImJiBjYWxsYmFjaykKICAgIHsKICAgICAgICB1bnBhcmtPbmVJbXBsKGFkZHJlc3MsIHNjb3Bl
ZExhbWJkYTx2b2lkKFVucGFya1Jlc3VsdCk+KHN0ZDo6Zm9yd2FyZDxDYWxsYmFja0Z1bmN0b3I+
KGNhbGxiYWNrKSkpOwogICAgfQoKCiAgICBzdGF0aWMgdm9pZCB1bnBhcmtBbGwoY29uc3Qgdm9p
ZCogYWRkcmVzcyk7CiMgMTI2ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmgiCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYmFja0Z1bmN0b3I+CiAgICBzdGF0aWMgdm9pZCBmb3JF
YWNoKENhbGxiYWNrRnVuY3RvciYmIGNhbGxiYWNrKQogICAgewogICAgICAgIGZvckVhY2hJbXBs
KHNjb3BlZExhbWJkYTx2b2lkKFRocmVhZElkZW50aWZpZXIsIGNvbnN0IHZvaWQqKT4oc3RkOjpm
b3J3YXJkPENhbGxiYWNrRnVuY3Rvcj4oY2FsbGJhY2spKSk7CiAgICB9Cgpwcml2YXRlOgogICAg
c3RhdGljIGJvb2wgcGFya0NvbmRpdGlvbmFsbHlJbXBsKAogICAgICAgIGNvbnN0IHZvaWQqIGFk
ZHJlc3MsCiAgICAgICAgY29uc3QgU2NvcGVkTGFtYmRhPGJvb2woKT4mIHZhbGlkYXRpb24sCiAg
ICAgICAgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoKT4mIGJlZm9yZVNsZWVwLAogICAgICAgIENs
b2NrOjp0aW1lX3BvaW50IHRpbWVvdXQpOwoKICAgIHN0YXRpYyB2b2lkIHVucGFya09uZUltcGwo
CiAgICAgICAgY29uc3Qgdm9pZCogYWRkcmVzcywgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoVW5w
YXJrUmVzdWx0KT4mIGNhbGxiYWNrKTsKCiAgICBzdGF0aWMgdm9pZCBmb3JFYWNoSW1wbChjb25z
dCBTY29wZWRMYW1iZGE8dm9pZChUaHJlYWRJZGVudGlmaWVyLCBjb25zdCB2b2lkKik+Jik7Cn07
Cgp9Cgp1c2luZyBXVEY6OlBhcmtpbmdMb3Q7CiMgMzQgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0Nv
bmRpdGlvbi5oIiAyCgpuYW1lc3BhY2UgV1RGIHsKIyA0OCAiLi4vLi4vU291cmNlL1dURi93dGYv
Q29uZGl0aW9uLmgiCnN0cnVjdCBDb25kaXRpb25CYXNlIHsKICAgIHR5cGVkZWYgUGFya2luZ0xv
dDo6Q2xvY2sgQ2xvY2s7CiMgNjYgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0NvbmRpdGlvbi5oIgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGU+CiAgICBib29sIHdhaXRVbnRpbChMb2NrVHlw
ZSYgbG9jaywgQ2xvY2s6OnRpbWVfcG9pbnQgdGltZW91dCkKICAgIHsKICAgICAgICBib29sIHJl
c3VsdDsKICAgICAgICBpZiAodGltZW91dCA8IENsb2NrOjpub3coKSkgewogICAgICAgICAgICBs
b2NrLnVubG9jaygpOwogICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICByZXN1bHQgPSBQYXJraW5nTG90OjpwYXJrQ29uZGl0aW9uYWxseSgKICAg
ICAgICAgICAgICAgICZtX2hhc1dhaXRlcnMsCiAgICAgICAgICAgICAgICBbdGhpc10gKCkgLT4g
Ym9vbCB7CgoKICAgICAgICAgICAgICAgICAgICBtX2hhc1dhaXRlcnMuc3RvcmUodHJ1ZSk7CiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9LAogICAgICAg
ICAgICAgICAgWyZsb2NrXSAoKSB7IGxvY2sudW5sb2NrKCk7IH0sCiAgICAgICAgICAgICAgICB0
aW1lb3V0KTsKICAgICAgICB9CiAgICAgICAgbG9jay5sb2NrKCk7CiAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgIH0KCgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBlLCB0eXBlbmFtZSBG
dW5jdG9yPgogICAgYm9vbCB3YWl0VW50aWwoTG9ja1R5cGUmIGxvY2ssIENsb2NrOjp0aW1lX3Bv
aW50IHRpbWVvdXQsIGNvbnN0IEZ1bmN0b3ImIHByZWRpY2F0ZSkKICAgIHsKICAgICAgICB3aGls
ZSAoIXByZWRpY2F0ZSgpKSB7CiAgICAgICAgICAgIGlmICghd2FpdFVudGlsKGxvY2ssIHRpbWVv
dXQpKQogICAgICAgICAgICAgICAgcmV0dXJuIHByZWRpY2F0ZSgpOwogICAgICAgIH0KICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgIH0KCgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBlLCB0
eXBlbmFtZSBEdXJhdGlvblR5cGUsIHR5cGVuYW1lIEZ1bmN0b3I+CiAgICBib29sIHdhaXRGb3Io
CiAgICAgICAgTG9ja1R5cGUmIGxvY2ssIGNvbnN0IER1cmF0aW9uVHlwZSYgcmVsYXRpdmVUaW1l
b3V0LCBjb25zdCBGdW5jdG9yJiBwcmVkaWNhdGUpCiAgICB7CiAgICAgICAgcmV0dXJuIHdhaXRV
bnRpbChsb2NrLCBhYnNvbHV0ZUZyb21SZWxhdGl2ZShyZWxhdGl2ZVRpbWVvdXQpLCBwcmVkaWNh
dGUpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBlPgogICAgdm9pZCB3YWl0
KExvY2tUeXBlJiBsb2NrKQogICAgewogICAgICAgIHdhaXRVbnRpbChsb2NrLCBDbG9jazo6dGlt
ZV9wb2ludDo6bWF4KCkpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBlLCB0
eXBlbmFtZSBGdW5jdG9yPgogICAgdm9pZCB3YWl0KExvY2tUeXBlJiBsb2NrLCBjb25zdCBGdW5j
dG9yJiBwcmVkaWNhdGUpCiAgICB7CiAgICAgICAgd2hpbGUgKCFwcmVkaWNhdGUoKSkKICAgICAg
ICAgICAgd2FpdChsb2NrKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlwZSwg
dHlwZW5hbWUgVGltZVR5cGU+CiAgICBib29sIHdhaXRVbnRpbChMb2NrVHlwZSYgbG9jaywgY29u
c3QgVGltZVR5cGUmIHRpbWVvdXQpCiAgICB7CiAgICAgICAgaWYgKHRpbWVvdXQgPT0gVGltZVR5
cGU6Om1heCgpKSB7CiAgICAgICAgICAgIHdhaXQobG9jayk7CiAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gd2FpdEZvckltcGwobG9jaywgdGltZW91dCAt
IFRpbWVUeXBlOjpjbG9jazo6bm93KCkpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIExv
Y2tUeXBlPgogICAgYm9vbCB3YWl0VW50aWxXYWxsQ2xvY2tTZWNvbmRzKExvY2tUeXBlJiBsb2Nr
LCBkb3VibGUgYWJzb2x1dGVUaW1lb3V0U2Vjb25kcykKICAgIHsKICAgICAgICByZXR1cm4gd2Fp
dEZvclNlY29uZHNJbXBsKGxvY2ssIGFic29sdXRlVGltZW91dFNlY29uZHMgLSBjdXJyZW50VGlt
ZSgpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlwZT4KICAgIGJvb2wgd2Fp
dFVudGlsTW9ub3RvbmljQ2xvY2tTZWNvbmRzKExvY2tUeXBlJiBsb2NrLCBkb3VibGUgYWJzb2x1
dGVUaW1lb3V0U2Vjb25kcykKICAgIHsKICAgICAgICByZXR1cm4gd2FpdEZvclNlY29uZHNJbXBs
KGxvY2ssIGFic29sdXRlVGltZW91dFNlY29uZHMgLSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGUsIHR5cGVuYW1lIEZ1
bmN0b3I+CiAgICBib29sIHdhaXRGb3JTZWNvbmRzKExvY2tUeXBlJiBsb2NrLCBkb3VibGUgcmVs
YXRpdmVUaW1lb3V0U2Vjb25kcywgY29uc3QgRnVuY3RvciYgcHJlZGljYXRlKQogICAgewogICAg
ICAgIGRvdWJsZSByZWxhdGl2ZVRpbWVvdXROYW5vc2Vjb25kcyA9IHJlbGF0aXZlVGltZW91dFNl
Y29uZHMgKiAoMTAwMC4wICogMTAwMC4wICogMTAwMC4wKTsKCiAgICAgICAgaWYgKCEocmVsYXRp
dmVUaW1lb3V0TmFub3NlY29uZHMgPiAwKSkgewoKICAgICAgICAgICAgbG9jay51bmxvY2soKTsK
ICAgICAgICAgICAgbG9jay5sb2NrKCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICB9CgogICAgICAgIGlmIChyZWxhdGl2ZVRpbWVvdXROYW5vc2Vjb25kcyA+IHN0YXRpY19jYXN0
PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpKSB7CgoKICAgICAg
ICAgICAgd2FpdChsb2NrLCBwcmVkaWNhdGUpOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICB9CgogICAgICAgIGF1dG8gcmVsYXRpdmVUaW1lb3V0ID0KICAgICAgICAgICAgc3RkOjpj
aHJvbm86Om5hbm9zZWNvbmRzKHN0YXRpY19jYXN0PGludDY0X3Q+KHJlbGF0aXZlVGltZW91dE5h
bm9zZWNvbmRzKSk7CgogICAgICAgIHJldHVybiB3YWl0Rm9yKGxvY2ssIHJlbGF0aXZlVGltZW91
dCwgcHJlZGljYXRlKTsKICAgIH0KCgoKICAgIHZvaWQgbm90aWZ5T25lKCkKICAgIHsKICAgICAg
ICBpZiAoIW1faGFzV2FpdGVycy5sb2FkKCkpIHsKCgoKICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgIH0KCiAgICAgICAgUGFya2luZ0xvdDo6dW5wYXJrT25lKAogICAgICAgICAgICAmbV9oYXNX
YWl0ZXJzLAogICAgICAgICAgICBbdGhpc10gKFBhcmtpbmdMb3Q6OlVucGFya1Jlc3VsdCByZXN1
bHQpIHsKICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lm1heUhhdmVNb3JlVGhyZWFkcykKICAg
ICAgICAgICAgICAgICAgICBtX2hhc1dhaXRlcnMuc3RvcmUoZmFsc2UpOwogICAgICAgICAgICB9
KTsKICAgIH0KCiAgICB2b2lkIG5vdGlmeUFsbCgpCiAgICB7CiAgICAgICAgaWYgKCFtX2hhc1dh
aXRlcnMubG9hZCgpKSB7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKCgoKCiAgICAg
ICAgbV9oYXNXYWl0ZXJzLnN0b3JlKGZhbHNlKTsKCiAgICAgICAgUGFya2luZ0xvdDo6dW5wYXJr
QWxsKCZtX2hhc1dhaXRlcnMpOwogICAgfQoKcHJvdGVjdGVkOgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgTG9ja1R5cGU+CiAgICBib29sIHdhaXRGb3JTZWNvbmRzSW1wbChMb2NrVHlwZSYgbG9jaywg
ZG91YmxlIHJlbGF0aXZlVGltZW91dFNlY29uZHMpCiAgICB7CiAgICAgICAgZG91YmxlIHJlbGF0
aXZlVGltZW91dE5hbm9zZWNvbmRzID0gcmVsYXRpdmVUaW1lb3V0U2Vjb25kcyAqICgxMDAwLjAg
KiAxMDAwLjAgKiAxMDAwLjApOwoKICAgICAgICBpZiAoIShyZWxhdGl2ZVRpbWVvdXROYW5vc2Vj
b25kcyA+IDApKSB7CgogICAgICAgICAgICBsb2NrLnVubG9jaygpOwogICAgICAgICAgICBsb2Nr
LmxvY2soKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYg
KHJlbGF0aXZlVGltZW91dE5hbm9zZWNvbmRzID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkpIHsKCgogICAgICAgICAgICB3YWl0KGxvY2sp
OwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGF1dG8gcmVsYXRp
dmVUaW1lb3V0ID0KICAgICAgICAgICAgc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzKHN0YXRpY19j
YXN0PGludDY0X3Q+KHJlbGF0aXZlVGltZW91dE5hbm9zZWNvbmRzKSk7CgogICAgICAgIHJldHVy
biB3YWl0Rm9ySW1wbChsb2NrLCByZWxhdGl2ZVRpbWVvdXQpOwogICAgfQoKICAgIHRlbXBsYXRl
PHR5cGVuYW1lIExvY2tUeXBlLCB0eXBlbmFtZSBEdXJhdGlvblR5cGU+CiAgICBib29sIHdhaXRG
b3JJbXBsKExvY2tUeXBlJiBsb2NrLCBjb25zdCBEdXJhdGlvblR5cGUmIHJlbGF0aXZlVGltZW91
dCkKICAgIHsKICAgICAgICByZXR1cm4gd2FpdFVudGlsKGxvY2ssIGFic29sdXRlRnJvbVJlbGF0
aXZlKHJlbGF0aXZlVGltZW91dCkpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIER1cmF0
aW9uVHlwZT4KICAgIENsb2NrOjp0aW1lX3BvaW50IGFic29sdXRlRnJvbVJlbGF0aXZlKGNvbnN0
IER1cmF0aW9uVHlwZSYgcmVsYXRpdmVUaW1lb3V0KQogICAgewogICAgICAgIGlmIChyZWxhdGl2
ZVRpbWVvdXQgPCBEdXJhdGlvblR5cGU6Onplcm8oKSkKICAgICAgICAgICAgcmV0dXJuIENsb2Nr
Ojp0aW1lX3BvaW50OjptaW4oKTsKCiAgICAgICAgaWYgKHJlbGF0aXZlVGltZW91dCA+IENsb2Nr
OjpkdXJhdGlvbjo6bWF4KCkpIHsKCgoKICAgICAgICAgICAgcmV0dXJuIENsb2NrOjp0aW1lX3Bv
aW50OjptYXgoKTsKICAgICAgICB9CgogICAgICAgIENsb2NrOjpkdXJhdGlvbiBteVJlbGF0aXZl
VGltZW91dCA9CiAgICAgICAgICAgIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PENsb2NrOjpk
dXJhdGlvbj4ocmVsYXRpdmVUaW1lb3V0KTsKCiAgICAgICAgcmV0dXJuIENsb2NrOjpub3coKSAr
IG15UmVsYXRpdmVUaW1lb3V0OwogICAgfQoKICAgIEF0b21pYzxib29sPiBtX2hhc1dhaXRlcnM7
Cn07CgpjbGFzcyBDb25kaXRpb24gOiBwdWJsaWMgQ29uZGl0aW9uQmFzZSB7CiAgICBwcml2YXRl
OiBDb25kaXRpb24oY29uc3QgQ29uZGl0aW9uJikgPSBkZWxldGU7IENvbmRpdGlvbiYgb3BlcmF0
b3I9KGNvbnN0IENvbmRpdGlvbiYpID0gZGVsZXRlOzsKcHVibGljOgogICAgQ29uZGl0aW9uKCkK
ICAgIHsKICAgICAgICBtX2hhc1dhaXRlcnMuc3RvcmUoZmFsc2UpOwogICAgfQp9OwoKdHlwZWRl
ZiBDb25kaXRpb25CYXNlIFN0YXRpY0NvbmRpdGlvbjsKCn0KCnVzaW5nIFdURjo6Q29uZGl0aW9u
Owp1c2luZyBXVEY6OlN0YXRpY0NvbmRpdGlvbjsKIyAzMCAiLi4vLi4vU291cmNlL1dURi93dGYv
UGFyYWxsZWxIZWxwZXJQb29sLmgiIDIKCgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1NoYXJl
ZFRhc2suaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9TaGFyZWRUYXNrLmgiCiNkZWZp
bmUgU2hhcmVkVGFza19oIAoKCgoKbmFtZXNwYWNlIFdURiB7CiMgNjEgIi4uLy4uL1NvdXJjZS9X
VEYvd3RmL1NoYXJlZFRhc2suaCIKdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlPiBjbGFz
cyBTaGFyZWRUYXNrOwp0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBlbmFtZS4uLiBB
cmd1bWVudFR5cGVzPgpjbGFzcyBTaGFyZWRUYXNrPFJlc3VsdFR5cGUgKEFyZ3VtZW50VHlwZXMu
Li4pPiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRUYXNrPFJlc3VsdFR5cGUg
KEFyZ3VtZW50VHlwZXMuLi4pPj4gewpwdWJsaWM6CiAgICBTaGFyZWRUYXNrKCkgeyB9CiAgICB2
aXJ0dWFsIH5TaGFyZWRUYXNrKCkgeyB9CgogICAgdmlydHVhbCBSZXN1bHRUeXBlIHJ1bihBcmd1
bWVudFR5cGVzLi4uKSA9IDA7Cn07CgoKCnRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwg
dHlwZW5hbWUgRnVuY3Rvcj4gY2xhc3MgU2hhcmVkVGFza0Z1bmN0b3I7CnRlbXBsYXRlPHR5cGVu
YW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXMsIHR5cGVuYW1lIEZ1bmN0
b3I+CmNsYXNzIFNoYXJlZFRhc2tGdW5jdG9yPFJlc3VsdFR5cGUgKEFyZ3VtZW50VHlwZXMuLi4p
LCBGdW5jdG9yPiA6IHB1YmxpYyBTaGFyZWRUYXNrPFJlc3VsdFR5cGUgKEFyZ3VtZW50VHlwZXMu
Li4pPiB7CnB1YmxpYzoKICAgIFNoYXJlZFRhc2tGdW5jdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCiAgICAgICAgOiBtX2Z1bmN0b3IoZnVuY3RvcikKICAgIHsKICAgIH0KCiAgICBTaGFyZWRU
YXNrRnVuY3RvcihGdW5jdG9yJiYgZnVuY3RvcikKICAgICAgICA6IG1fZnVuY3RvcihzdGQ6Om1v
dmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KGZ1bmN0b3IpKQogICAgewogICAgfQoKcHJpdmF0
ZToKICAgIFJlc3VsdFR5cGUgcnVuKEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKSBvdmVycmlk
ZQogICAgewogICAgICAgIHJldHVybiBtX2Z1bmN0b3IoYXJndW1lbnRzLi4uKTsKICAgIH0KCiAg
ICBGdW5jdG9yIG1fZnVuY3RvcjsKfTsKIyAxMTMgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1NoYXJl
ZFRhc2suaCIKdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBGdW5jdG9y
PgpSZWY8U2hhcmVkVGFzazxGdW5jdGlvblR5cGU+PiBjcmVhdGVTaGFyZWRUYXNrKGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCnsKICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZFRhc2tGdW5j
dG9yPEZ1bmN0aW9uVHlwZSwgRnVuY3Rvcj4oZnVuY3RvcikpOwp9CnRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgRnVuY3Rvcj4KUmVmPFNoYXJlZFRhc2s8RnVuY3Rpb25U
eXBlPj4gY3JlYXRlU2hhcmVkVGFzayhGdW5jdG9yJiYgZnVuY3RvcikKewogICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkVGFza0Z1bmN0b3I8RnVuY3Rpb25UeXBlLCBGdW5jdG9yPihzdGQ6
Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KGZ1bmN0b3IpKSk7Cn0KCn0KCnVzaW5nIFdU
Rjo6Y3JlYXRlU2hhcmVkVGFzazsKdXNpbmcgV1RGOjpTaGFyZWRUYXNrOwp1c2luZyBXVEY6OlNo
YXJlZFRhc2tGdW5jdG9yOwojIDMzICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEhlbHBl
clBvb2wuaCIgMgoKCgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1dlYWtSYW5kb20uaCIgMQoj
IDMyICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9XZWFrUmFuZG9tLmgiCiNkZWZpbmUgV2Vha1JhbmRv
bV9oIAoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
NC45LjMvaW5jbHVkZS1maXhlZC9saW1pdHMuaCIgMSAzIDQKIyAzNSAiLi4vLi4vU291cmNlL1dU
Ri93dGYvV2Vha1JhbmRvbS5oIiAyCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9Dcnlw
dG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oIgojZGVmaW5lIFdURl9DcnlwdG9ncmFwaGljYWxs
eVJhbmRvbU51bWJlcl9oIAoKCgpuYW1lc3BhY2UgV1RGIHsKCiB1aW50MzJfdCBjcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlcigpOwogdm9pZCBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVl
cyh2b2lkKiBidWZmZXIsIHNpemVfdCBsZW5ndGgpOwoKfQoKdXNpbmcgV1RGOjpjcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlcjsKdXNpbmcgV1RGOjpjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZh
bHVlczsKIyAzNiAiLi4vLi4vU291cmNlL1dURi93dGYvV2Vha1JhbmRvbS5oIiAyCgoKbmFtZXNw
YWNlIFdURiB7CgoKCmNsYXNzIFdlYWtSYW5kb20gewpwdWJsaWM6CiAgICBXZWFrUmFuZG9tKHVu
c2lnbmVkIHNlZWQgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKQogICAgewogICAg
ICAgIHNldFNlZWQoc2VlZCk7CiAgICB9CgogICAgdm9pZCBzZXRTZWVkKHVuc2lnbmVkIHNlZWQp
CiAgICB7CiAgICAgICAgbV9zZWVkID0gc2VlZDsKCgogICAgICAgIGlmICghc2VlZCkKICAgICAg
ICAgICAgc2VlZCA9IDE7CgogICAgICAgIG1fbG93ID0gc2VlZDsKICAgICAgICBtX2hpZ2ggPSBz
ZWVkOwogICAgfQoKICAgIHVuc2lnbmVkIHNlZWQoKSBjb25zdCB7IHJldHVybiBtX3NlZWQ7IH0K
CiAgICBkb3VibGUgZ2V0KCkKICAgIHsKICAgICAgICB1aW50NjRfdCB2YWx1ZSA9IGFkdmFuY2Uo
KSAmICgoMVVMTCA8PCA1MykgLSAxKTsKICAgICAgICByZXR1cm4gdmFsdWUgKiAoMS4wIC8gKDFV
TEwgPDwgNTMpKTsKICAgIH0KCiAgICB1bnNpZ25lZCBnZXRVaW50MzIoKQogICAgewogICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYWR2YW5jZSgpKTsKICAgIH0KCiAgICB1bnNp
Z25lZCBnZXRVaW50MzIodW5zaWduZWQgbGltaXQpCiAgICB7CiAgICAgICAgaWYgKGxpbWl0IDw9
IDEpCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIHVpbnQ2NF90IGN1dG9mZiA9IChzdGF0
aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSAr
IDEpIC8gbGltaXQgKiBsaW1pdDsKICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgIHVpbnQ2
NF90IHZhbHVlID0gZ2V0VWludDMyKCk7CiAgICAgICAgICAgIGlmICh2YWx1ZSA+PSBjdXRvZmYp
CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgcmV0dXJuIHZhbHVlICUgbGlt
aXQ7CiAgICAgICAgfQogICAgfQoKICAgIHN0YXRpYyB1bnNpZ25lZCBsb3dPZmZzZXQoKSB7IHJl
dHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxXZWFr
UmFuZG9tKj4oMHg0MDAwKS0+bV9sb3cpKSAtIDB4NDAwMCk7IH0KICAgIHN0YXRpYyB1bnNpZ25l
ZCBoaWdoT2Zmc2V0KCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJl
aW50ZXJwcmV0X2Nhc3Q8V2Vha1JhbmRvbSo+KDB4NDAwMCktPm1faGlnaCkpIC0gMHg0MDAwKTsg
fQoKcHJpdmF0ZToKICAgIHVpbnQ2NF90IGFkdmFuY2UoKQogICAgewogICAgICAgIHVpbnQ2NF90
IHggPSBtX2xvdzsKICAgICAgICB1aW50NjRfdCB5ID0gbV9oaWdoOwogICAgICAgIG1fbG93ID0g
eTsKICAgICAgICB4IF49IHggPDwgMjM7CiAgICAgICAgeCBePSB4ID4+IDE3OwogICAgICAgIHgg
Xj0geSBeICh5ID4+IDI2KTsKICAgICAgICBtX2hpZ2ggPSB4OwogICAgICAgIHJldHVybiB4ICsg
eTsKICAgIH0KCiAgICB1bnNpZ25lZCBtX3NlZWQ7CiAgICB1aW50NjRfdCBtX2xvdzsKICAgIHVp
bnQ2NF90IG1faGlnaDsKfTsKCn0KCnVzaW5nIFdURjo6V2Vha1JhbmRvbTsKIyAzNyAiLi4vLi4v
U291cmNlL1dURi93dGYvUGFyYWxsZWxIZWxwZXJQb29sLmgiIDIKCm5hbWVzcGFjZSBXVEYgewoj
IDYxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEhlbHBlclBvb2wuaCIKY2xhc3MgUGFy
YWxsZWxIZWxwZXJQb29sOwojIDEyNiAiLi4vLi4vU291cmNlL1dURi93dGYvUGFyYWxsZWxIZWxw
ZXJQb29sLmgiCmNsYXNzIFBhcmFsbGVsSGVscGVyQ2xpZW50IHsKICAgIHByaXZhdGU6IFBhcmFs
bGVsSGVscGVyQ2xpZW50KGNvbnN0IFBhcmFsbGVsSGVscGVyQ2xpZW50JikgPSBkZWxldGU7IFBh
cmFsbGVsSGVscGVyQ2xpZW50JiBvcGVyYXRvcj0oY29uc3QgUGFyYWxsZWxIZWxwZXJDbGllbnQm
KSA9IGRlbGV0ZTs7CiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQq
IHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7
IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpX
VEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6
OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsg
cmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10o
dm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRp
b247IH0gcHJpdmF0ZTogdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25B
ZnRlclRoaXNNYWNybzsKcHVibGljOgogICAgUGFyYWxsZWxIZWxwZXJDbGllbnQoUmVmUHRyPFBh
cmFsbGVsSGVscGVyUG9vbD4pOwogICAgflBhcmFsbGVsSGVscGVyQ2xpZW50KCk7CgogICAgdm9p
ZCBzZXRUYXNrKFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQgKCk+Pik7CgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KICAgIHZvaWQgc2V0RnVuY3Rpb24oY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKICAgIHsKICAgICAgICBzZXRUYXNrKGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCAoKT4oZnVuY3Rv
cikpOwogICAgfQoKICAgIHZvaWQgZmluaXNoKCk7CgogICAgdm9pZCBkb1NvbWVIZWxwaW5nKCk7
CgoKCgoKICAgIHZvaWQgcnVuVGFza0luUGFyYWxsZWwoUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCAo
KT4+KTsKCgoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgIHZvaWQgcnVuRnVu
Y3Rpb25JblBhcmFsbGVsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICB7CiAgICAgICAgcnVu
VGFza0luUGFyYWxsZWwoY3JlYXRlU2hhcmVkVGFzazx2b2lkICgpPihmdW5jdG9yKSk7CiAgICB9
CgogICAgUGFyYWxsZWxIZWxwZXJQb29sJiBwb29sKCkgeyByZXR1cm4gKm1fcG9vbDsgfQogICAg
dW5zaWduZWQgbnVtYmVyT2ZBY3RpdmVUaHJlYWRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1BY3Rp
dmU7IH0KCnByaXZhdGU6CiAgICBmcmllbmQgY2xhc3MgUGFyYWxsZWxIZWxwZXJQb29sOwoKICAg
IHZvaWQgZmluaXNoKGNvbnN0IExvY2tIb2xkZXImKTsKICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZv
aWQgKCk+PiBjbGFpbVRhc2soY29uc3QgTG9ja0hvbGRlciYpOwogICAgdm9pZCBydW5UYXNrKFJl
ZlB0cjxTaGFyZWRUYXNrPHZvaWQgKCk+Pik7CgogICAgUmVmUHRyPFBhcmFsbGVsSGVscGVyUG9v
bD4gbV9wb29sOwogICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCAoKT4+IG1fdGFzazsKICAgIHVu
c2lnbmVkIG1fbnVtQWN0aXZlIHsgMCB9Owp9OwoKY2xhc3MgUGFyYWxsZWxIZWxwZXJQb29sIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBhcmFsbGVsSGVscGVyUG9vbD4gewpwdWJsaWM6
CiAgICBQYXJhbGxlbEhlbHBlclBvb2woKTsKICAgIH5QYXJhbGxlbEhlbHBlclBvb2woKTsKCiAg
ICB2b2lkIGVuc3VyZVRocmVhZHModW5zaWduZWQgbnVtVGhyZWFkcyk7CgogICAgdW5zaWduZWQg
bnVtYmVyT2ZUaHJlYWRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1UaHJlYWRzOyB9CgogICAgdm9p
ZCBkb1NvbWVIZWxwaW5nKCk7Cgpwcml2YXRlOgogICAgZnJpZW5kIGNsYXNzIFBhcmFsbGVsSGVs
cGVyQ2xpZW50OwoKICAgIHZvaWQgZGlkTWFrZVdvcmtBdmFpbGFibGUoY29uc3QgTG9ja0hvbGRl
ciYpOwogICAgdm9pZCBoZWxwZXJUaHJlYWRCb2R5KCk7CgogICAgYm9vbCBoYXNDbGllbnRXaXRo
VGFzayhjb25zdCBMb2NrSG9sZGVyJik7CiAgICBQYXJhbGxlbEhlbHBlckNsaWVudCogZ2V0Q2xp
ZW50V2l0aFRhc2soY29uc3QgTG9ja0hvbGRlciYpOwogICAgUGFyYWxsZWxIZWxwZXJDbGllbnQq
IHdhaXRGb3JDbGllbnRXaXRoVGFzayhjb25zdCBMb2NrSG9sZGVyJik7CgogICAgTG9jayBtX2xv
Y2s7CiAgICBDb25kaXRpb24gbV93b3JrQXZhaWxhYmxlQ29uZGl0aW9uOwogICAgQ29uZGl0aW9u
IG1fd29ya0NvbXBsZXRlQ29uZGl0aW9uOwoKICAgIFdlYWtSYW5kb20gbV9yYW5kb207CgogICAg
VmVjdG9yPFBhcmFsbGVsSGVscGVyQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgVmVjdG9yPFRocmVh
ZElkZW50aWZpZXI+IG1fdGhyZWFkczsKICAgIHVuc2lnbmVkIG1fbnVtVGhyZWFkcyB7IDAgfTsK
ICAgIGJvb2wgbV9pc0R5aW5nIHsgZmFsc2UgfTsKfTsKCn0KCnVzaW5nIFdURjo6UGFyYWxsZWxI
ZWxwZXJDbGllbnQ7CnVzaW5nIFdURjo6UGFyYWxsZWxIZWxwZXJQb29sOwojIDUyICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgiIDIKCm5hbWVzcGFjZSBKU0MgewoKY2xh
c3MgQ29kZUJsb2NrOwpjbGFzcyBDb3BpZWRTcGFjZTsKY2xhc3MgRWRlbkdDQWN0aXZpdHlDYWxs
YmFjazsKY2xhc3MgRXhlY3V0YWJsZUJhc2U7CmNsYXNzIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s7
CmNsYXNzIEdDQWN0aXZpdHlDYWxsYmFjazsKY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOwpj
bGFzcyBIZWFwOwpjbGFzcyBIZWFwUHJvZmlsZXI7CmNsYXNzIEhlYXBSb290VmlzaXRvcjsKY2xh
c3MgSGVhcFZlcmlmaWVyOwpjbGFzcyBJbmNyZW1lbnRhbFN3ZWVwZXI7CmNsYXNzIEpJVFN0dWJS
b3V0aW5lOwpjbGFzcyBKU0NlbGw7CmNsYXNzIEpTU3RhY2s7CmNsYXNzIEpTVmFsdWU7CmNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXI7CmNsYXNz
IFZNOwoKbmFtZXNwYWNlIERGRyB7CmNsYXNzIFNwZWN1bGF0aXZlSklUOwpjbGFzcyBXb3JrbGlz
dDsKfQoKc3RhdGljIHZvaWQqIGNvbnN0IHpvbWJpZmllZEJpdHMgPSByZWludGVycHJldF9jYXN0
PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4ZGVhZGJlZWYpKTsKCnR5cGVkZWYgSGFz
aENvdW50ZWRTZXQ8SlNDZWxsKj4gUHJvdGVjdENvdW50U2V0Owp0eXBlZGVmIEhhc2hDb3VudGVk
U2V0PGNvbnN0IGNoYXIqPiBUeXBlQ291bnRTZXQ7CgplbnVtIEhlYXBUeXBlIHsgU21hbGxIZWFw
LCBMYXJnZUhlYXAgfTsKCmNsYXNzIEhlYXAgewogICAgcHJpdmF0ZTogSGVhcChjb25zdCBIZWFw
JikgPSBkZWxldGU7IEhlYXAmIG9wZXJhdG9yPShjb25zdCBIZWFwJikgPSBkZWxldGU7OwpwdWJs
aWM6CiAgICBmcmllbmQgY2xhc3MgSklUOwogICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRp
dmVKSVQ7CiAgICBzdGF0aWMgSGVhcCogaGVhcChjb25zdCBKU1ZhbHVlKTsKICAgIHN0YXRpYyBI
ZWFwKiBoZWFwKGNvbnN0IEpTQ2VsbCopOwoKCgoKCiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
c190aW1lQ2hlY2tSZXNvbHV0aW9uID0gMTY7CgogICAgc3RhdGljIGJvb2wgaXNMaXZlKGNvbnN0
IHZvaWQqKTsKICAgIHN0YXRpYyBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQqKTsKICAgIHN0YXRp
YyBib29sIHRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgc3RhdGljIHZvaWQgc2V0
TWFya2VkKGNvbnN0IHZvaWQqKTsKCgoKICAgIHN0YXRpYyBib29sIGlzUG9pbnRlckdDT2JqZWN0
KFRpbnlCbG9vbUZpbHRlciwgTWFya2VkQmxvY2tTZXQmLCB2b2lkKiBwb2ludGVyKTsKICAgIHN0
YXRpYyBib29sIGlzVmFsdWVHQ09iamVjdChUaW55Qmxvb21GaWx0ZXIsIE1hcmtlZEJsb2NrU2V0
JiwgSlNWYWx1ZSk7CgogICAgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKik7CiAgICB2
b2lkIHdyaXRlQmFycmllcihjb25zdCBKU0NlbGwqLCBKU1ZhbHVlKTsKICAgIHZvaWQgd3JpdGVC
YXJyaWVyKGNvbnN0IEpTQ2VsbCosIEpTQ2VsbCopOwoKICAgIFdyaXRlQmFycmllckJ1ZmZlciYg
d3JpdGVCYXJyaWVyQnVmZmVyKCkgeyByZXR1cm4gbV93cml0ZUJhcnJpZXJCdWZmZXI7IH0KICAg
IHZvaWQgZmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoSlNDZWxsKik7CgogICAgSGVhcChWTSosIEhl
YXBUeXBlKTsKICAgIH5IZWFwKCk7CiAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CiAg
ICB2b2lkIHJlbGVhc2VEZWxheWVkUmVsZWFzZWRPYmplY3RzKCk7CgogICAgVk0qIHZtKCkgY29u
c3QgeyByZXR1cm4gbV92bTsgfQogICAgTWFya2VkU3BhY2UmIG9iamVjdFNwYWNlKCkgeyByZXR1
cm4gbV9vYmplY3RTcGFjZTsgfQogICAgQ29waWVkU3BhY2UmIHN0b3JhZ2VTcGFjZSgpIHsgcmV0
dXJuIG1fc3RvcmFnZVNwYWNlOyB9CiAgICBNYWNoaW5lVGhyZWFkcyYgbWFjaGluZVRocmVhZHMo
KSB7IHJldHVybiBtX21hY2hpbmVUaHJlYWRzOyB9CgogICAgY29uc3QgU2xvdFZpc2l0b3ImIHNs
b3RWaXNpdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zbG90VmlzaXRvcjsgfQoKICAgIEdDQWN0aXZp
dHlDYWxsYmFjayogZnVsbEFjdGl2aXR5Q2FsbGJhY2soKTsKICAgIEdDQWN0aXZpdHlDYWxsYmFj
ayogZWRlbkFjdGl2aXR5Q2FsbGJhY2soKTsKICAgIHZvaWQgc2V0RnVsbEFjdGl2aXR5Q2FsbGJh
Y2soUGFzc1JlZlB0cjxGdWxsR0NBY3Rpdml0eUNhbGxiYWNrPik7CiAgICB2b2lkIHNldEVkZW5B
Y3Rpdml0eUNhbGxiYWNrKFBhc3NSZWZQdHI8RWRlbkdDQWN0aXZpdHlDYWxsYmFjaz4pOwogICAg
dm9pZCBzZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5hYmxlZChib29sKTsKCiAgICBJbmNyZW1l
bnRhbFN3ZWVwZXIqIHN3ZWVwZXIoKTsKICAgIHZvaWQgc2V0SW5jcmVtZW50YWxTd2VlcGVyKHN0
ZDo6dW5pcXVlX3B0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+KTsKCiAgICB2b2lkIGFkZE9ic2VydmVy
KEhlYXBPYnNlcnZlciogb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlcnMuYXBwZW5kKG9ic2VydmVyKTsg
fQogICAgdm9pZCByZW1vdmVPYnNlcnZlcihIZWFwT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1fb2Jz
ZXJ2ZXJzLnJlbW92ZUZpcnN0KG9ic2VydmVyKTsgfQoKCiAgICBib29sIGlzQ29sbGVjdGluZygp
OwogICAgSGVhcE9wZXJhdGlvbiBvcGVyYXRpb25JblByb2dyZXNzKCkgeyByZXR1cm4gbV9vcGVy
YXRpb25JblByb2dyZXNzOyB9CgogICAgYm9vbCBpc0J1c3koKTsKICAgIE1hcmtlZFNwYWNlOjpT
dWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcigpIHsgcmV0dXJuIG1f
b2JqZWN0U3BhY2Uuc3Vic3BhY2VGb3JPYmplY3RzV2l0aG91dERlc3RydWN0b3IoKTsgfQogICAg
TWFya2VkU3BhY2U6OlN1YnNwYWNlJiBzdWJzcGFjZUZvck9iamVjdERlc3RydWN0b3IoKSB7IHJl
dHVybiBtX29iamVjdFNwYWNlLnN1YnNwYWNlRm9yT2JqZWN0c1dpdGhEZXN0cnVjdG9yKCk7IH0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENsYXNzVHlwZT4gTWFya2VkU3BhY2U6OlN1YnNwYWNlJiBz
dWJzcGFjZUZvck9iamVjdE9mVHlwZSgpOwogICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JG
b3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1fb2JqZWN0
U3BhY2UuYWxsb2NhdG9yRm9yKGJ5dGVzKTsgfQogICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0
b3JGb3JPYmplY3RXaXRoRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1fb2JqZWN0
U3BhY2UuZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihieXRlcyk7IH0KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENsYXNzVHlwZT4gTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3JPYmplY3RPZlR5cGUo
c2l6ZV90IGJ5dGVzKTsKICAgIENvcGllZEFsbG9jYXRvciYgc3RvcmFnZUFsbG9jYXRvcigpIHsg
cmV0dXJuIG1fc3RvcmFnZVNwYWNlLmFsbG9jYXRvcigpOyB9CiAgICBDaGVja2VkQm9vbGVhbiB0
cnlBbGxvY2F0ZVN0b3JhZ2UoSlNDZWxsKiBpbnRlbmRlZE93bmVyLCBzaXplX3QsIHZvaWQqKik7
CiAgICBDaGVja2VkQm9vbGVhbiB0cnlSZWFsbG9jYXRlU3RvcmFnZShKU0NlbGwqIGludGVuZGVk
T3duZXIsIHZvaWQqKiwgc2l6ZV90LCBzaXplX3QpOwogICAgdm9pZCBhc2NyaWJlT3duZXIoSlND
ZWxsKiBpbnRlbmRlZE93bmVyLCB2b2lkKik7CgogICAgdHlwZWRlZiB2b2lkICgqRmluYWxpemVy
KShKU0NlbGwqKTsKICAgIHZvaWQgYWRkRmluYWxpemVyKEpTQ2VsbCosIEZpbmFsaXplcik7CiAg
ICB2b2lkIGFkZEV4ZWN1dGFibGUoRXhlY3V0YWJsZUJhc2UqKTsKCiAgICB2b2lkIG5vdGlmeUlz
U2FmZVRvQ29sbGVjdCgpIHsgbV9pc1NhZmVUb0NvbGxlY3QgPSB0cnVlOyB9CiAgICBib29sIGlz
U2FmZVRvQ29sbGVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTYWZlVG9Db2xsZWN0OyB9CgogICAg
Ym9vbCBpc0hlYXBTbmFwc2hvdHRpbmcoKSBjb25zdDsKCiAgICB2b2lkIGNvbGxlY3RBbGxHYXJi
YWdlSWZOb3REb25lUmVjZW50bHkoKTsKICAgIHZvaWQgY29sbGVjdEFsbEdhcmJhZ2UoKSB7IGNv
bGxlY3RBbmRTd2VlcChGdWxsQ29sbGVjdGlvbik7IH0KICAgIHZvaWQgY29sbGVjdEFuZFN3ZWVw
KEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUgPSBBbnlDb2xsZWN0aW9uKTsKICAgIGJvb2wg
c2hvdWxkQ29sbGVjdCgpOwogICAgdm9pZCBjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdGlv
blR5cGUgPSBBbnlDb2xsZWN0aW9uKTsKICAgIGJvb2wgY29sbGVjdElmTmVjZXNzYXJ5T3JEZWZl
cigpOwoKICAgIHZvaWQgY29tcGxldGVBbGxERkdQbGFucygpOwoKCgoKICAgIHZvaWQgcmVwb3J0
RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc2l6ZV90KTsKICAgIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlW
aXNpdGVkKENlbGxTdGF0ZSBjZWxsU3RhdGVCZWZvcmVWaXNpdGluZywgc2l6ZV90KTsKCgogICAg
dm9pZCBkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnkoc2l6ZV90KTsKCiAgICB2b2lkIHJlcG9y
dEFiYW5kb25lZE9iamVjdEdyYXBoKCk7CgogICAgdm9pZCBwcm90ZWN0KEpTVmFsdWUpOwogICAg
Ym9vbCB1bnByb3RlY3QoSlNWYWx1ZSk7CgogICAgc2l6ZV90IGV4dHJhTWVtb3J5U2l6ZSgpOwog
ICAgc2l6ZV90IHNpemUoKTsKICAgIHNpemVfdCBjYXBhY2l0eSgpOwogICAgc2l6ZV90IG9iamVj
dENvdW50KCk7CiAgICBzaXplX3QgZ2xvYmFsT2JqZWN0Q291bnQoKTsKICAgIHNpemVfdCBwcm90
ZWN0ZWRPYmplY3RDb3VudCgpOwogICAgc2l6ZV90IHByb3RlY3RlZEdsb2JhbE9iamVjdENvdW50
KCk7CiAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBwcm90ZWN0ZWRPYmplY3RUeXBl
Q291bnRzKCk7CiAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBvYmplY3RUeXBlQ291
bnRzKCk7CgogICAgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBtYXJrTGlzdFNldCgp
OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVy
blR5cGUgZm9yRWFjaFByb3RlY3RlZENlbGwoRnVuY3RvciYpOwogICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoUHJvdGVjdGVk
Q2VsbCgpOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQ29kZUJs
b2NrKEZ1bmN0b3ImKTsKCiAgICBIYW5kbGVTZXQqIGhhbmRsZVNldCgpIHsgcmV0dXJuICZtX2hh
bmRsZVNldDsgfQogICAgSGFuZGxlU3RhY2sqIGhhbmRsZVN0YWNrKCkgeyByZXR1cm4gJm1faGFu
ZGxlU3RhY2s7IH0KCiAgICB2b2lkIHdpbGxTdGFydEl0ZXJhdGluZygpOwogICAgdm9pZCBkaWRG
aW5pc2hJdGVyYXRpbmcoKTsKCiAgICBkb3VibGUgbGFzdEZ1bGxHQ0xlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGFzdEZ1bGxHQ0xlbmd0aDsgfQogICAgZG91YmxlIGxhc3RFZGVuR0NMZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX2xhc3RFZGVuR0NMZW5ndGg7IH0KICAgIHZvaWQgaW5jcmVhc2VM
YXN0RnVsbEdDTGVuZ3RoKGRvdWJsZSBhbW91bnQpIHsgbV9sYXN0RnVsbEdDTGVuZ3RoICs9IGFt
b3VudDsgfQoKICAgIHNpemVfdCBzaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9zaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0OyB9CiAgICBzaXplX3Qgc2l6ZUFm
dGVyTGFzdEVkZW5Db2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaXplQWZ0ZXJMYXN0RWRl
bkNvbGxlY3Q7IH0KICAgIHNpemVfdCBzaXplQmVmb3JlTGFzdEZ1bGxDb2xsZWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplQmVmb3JlTGFzdEZ1bGxDb2xsZWN0OyB9CiAgICBzaXplX3Qgc2l6
ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaXplQWZ0ZXJMYXN0
RnVsbENvbGxlY3Q7IH0KCiAgICB2b2lkIGRlbGV0ZUFsbENvZGVCbG9ja3MoKTsKICAgIHZvaWQg
ZGVsZXRlQWxsVW5saW5rZWRDb2RlQmxvY2tzKCk7CgogICAgdm9pZCBkaWRBbGxvY2F0ZShzaXpl
X3QpOwogICAgdm9pZCBkaWRBYmFuZG9uKHNpemVfdCk7CgogICAgYm9vbCBpc1BhZ2VkT3V0KGRv
dWJsZSBkZWFkbGluZSk7CgogICAgY29uc3QgSklUU3R1YlJvdXRpbmVTZXQmIGppdFN0dWJSb3V0
aW5lcygpIHsgcmV0dXJuIG1faml0U3R1YlJvdXRpbmVzOyB9CgogICAgdm9pZCBhZGRSZWZlcmVu
Y2UoSlNDZWxsKiwgQXJyYXlCdWZmZXIqKTsKCiAgICBib29sIGlzRGVmZXJyZWQoKSBjb25zdCB7
IHJldHVybiAhIW1fZGVmZXJyYWxEZXB0aCB8fCAhT3B0aW9uczo6dXNlR0MoKTsgfQoKICAgIFN0
cnVjdHVyZUlEVGFibGUmIHN0cnVjdHVyZUlEVGFibGUoKSB7IHJldHVybiBtX3N0cnVjdHVyZUlE
VGFibGU7IH0KCiAgICBDb2RlQmxvY2tTZXQmIGNvZGVCbG9ja1NldCgpIHsgcmV0dXJuIG1fY29k
ZUJsb2NrczsgfQoKCgoKCiAgICBzdGF0aWMgYm9vbCBpc1pvbWJpZmllZChKU0NlbGwqIGNlbGwp
IHsgcmV0dXJuICoodm9pZCoqKWNlbGwgPT0gem9tYmlmaWVkQml0czsgfQoKICAgIHZvaWQgcmVn
aXN0ZXJXZWFrR0NNYXAodm9pZCogd2Vha0dDTWFwLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gcHJ1
bmluZ0NhbGxiYWNrKTsKICAgIHZvaWQgdW5yZWdpc3RlcldlYWtHQ01hcCh2b2lkKiB3ZWFrR0NN
YXApOwoKICAgIHZvaWQgYWRkTG9naWNhbGx5RW1wdHlXZWFrQmxvY2soV2Vha0Jsb2NrKik7CgoK
CgoKICAgIHZvaWQgZGlkQWxsb2NhdGVCbG9jayhzaXplX3QgY2FwYWNpdHkpOwogICAgdm9pZCBk
aWRGcmVlQmxvY2soc2l6ZV90IGNhcGFjaXR5KTsKCnByaXZhdGU6CiAgICBmcmllbmQgY2xhc3Mg
Q29kZUJsb2NrOwogICAgZnJpZW5kIGNsYXNzIENvcGllZEJsb2NrOwogICAgZnJpZW5kIGNsYXNz
IERlZmVyR0M7CiAgICBmcmllbmQgY2xhc3MgRGVmZXJHQ0ZvckFXaGlsZTsKICAgIGZyaWVuZCBj
bGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmU7CiAgICBmcmllbmQgY2xhc3MgR0NMb2dnaW5nOwog
ICAgZnJpZW5kIGNsYXNzIEdDVGhyZWFkOwogICAgZnJpZW5kIGNsYXNzIEhhbmRsZVNldDsKICAg
IGZyaWVuZCBjbGFzcyBIZWFwVmVyaWZpZXI7CiAgICBmcmllbmQgY2xhc3MgSklUU3R1YlJvdXRp
bmU7CiAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgZnJpZW5kIGNs
YXNzIE1hcmtlZFNwYWNlOwogICAgZnJpZW5kIGNsYXNzIE1hcmtlZEFsbG9jYXRvcjsKICAgIGZy
aWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgIGZyaWVuZCBjbGFzcyBDb3BpZWRTcGFjZTsKICAg
IGZyaWVuZCBjbGFzcyBDb3B5VmlzaXRvcjsKICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsK
ICAgIGZyaWVuZCBjbGFzcyBJbmNyZW1lbnRhbFN3ZWVwZXI7CiAgICBmcmllbmQgY2xhc3MgSGVh
cFN0YXRpc3RpY3M7CiAgICBmcmllbmQgY2xhc3MgVk07CiAgICBmcmllbmQgY2xhc3MgV2Vha1Nl
dDsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVh
cCYpOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9jYXRlQ2VsbChI
ZWFwJiwgc2l6ZV90KTsKCiAgICB2b2lkKiBhbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKHNpemVfdCk7
CiAgICB2b2lkKiBhbGxvY2F0ZVdpdGhvdXREZXN0cnVjdG9yKHNpemVfdCk7CiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQqIGFsbG9jYXRlT2JqZWN0T2ZUeXBlKHNpemVfdCk7
CgogICAgc3RhdGljIGNvbnN0IHNpemVfdCBtaW5FeHRyYU1lbW9yeSA9IDI1NjsKCiAgICBjbGFz
cyBGaW5hbGl6ZXJPd25lciA6IHB1YmxpYyBXZWFrSGFuZGxlT3duZXIgewogICAgICAgIHZvaWQg
ZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKICAgIH07
CgogICAgYm9vbCBpc1ZhbGlkQWxsb2NhdGlvbihzaXplX3QpOwogICAgdm9pZCByZXBvcnRFeHRy
YU1lbW9yeUFsbG9jYXRlZFNsb3dDYXNlKHNpemVfdCk7CiAgICB2b2lkIGRlcHJlY2F0ZWRSZXBv
cnRFeHRyYU1lbW9yeVNsb3dDYXNlKHNpemVfdCk7CgogICAgdm9pZCBjb2xsZWN0SW1wbChIZWFw
T3BlcmF0aW9uLCB2b2lkKiBzdGFja09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIE1hY2hpbmVUaHJl
YWRzOjpSZWdpc3RlclN0YXRlJik7CgogICAgdm9pZCBzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCk7
CiAgICB2b2lkIHdpbGxTdGFydENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlw
ZSk7CiAgICB2b2lkIGZsdXNoT2xkU3RydWN0dXJlSURUYWJsZXMoKTsKICAgIHZvaWQgZmx1c2hX
cml0ZUJhcnJpZXJCdWZmZXIoKTsKICAgIHZvaWQgc3RvcEFsbG9jYXRpb24oKTsKCiAgICB2b2lk
IG1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUsIHZvaWQqIHN0YWNrT3JpZ2luLCB2b2lkKiBz
dGFja1RvcCwgTWFjaGluZVRocmVhZHM6OlJlZ2lzdGVyU3RhdGUmKTsKICAgIHZvaWQgZ2F0aGVy
U3RhY2tSb290cyhDb25zZXJ2YXRpdmVSb290cyYsIHZvaWQqIHN0YWNrT3JpZ2luLCB2b2lkKiBz
dGFja1RvcCwgTWFjaGluZVRocmVhZHM6OlJlZ2lzdGVyU3RhdGUmKTsKICAgIHZvaWQgZ2F0aGVy
SlNTdGFja1Jvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJik7CiAgICB2b2lkIGdhdGhlclNjcmF0Y2hC
dWZmZXJSb290cyhDb25zZXJ2YXRpdmVSb290cyYpOwogICAgdm9pZCBjbGVhckxpdmVuZXNzRGF0
YSgpOwogICAgdm9pZCB2aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgpOwogICAgdm9pZCB2aXNp
dFNtYWxsU3RyaW5ncygpOwogICAgdm9pZCB2aXNpdENvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZh
dGl2ZVJvb3RzJik7CiAgICB2b2lkIHZpc2l0Q29tcGlsZXJXb3JrbGlzdFdlYWtSZWZlcmVuY2Vz
KCk7CiAgICB2b2lkIHJlbW92ZURlYWRDb21waWxlcldvcmtsaXN0RW50cmllcygpOwogICAgdm9p
ZCB2aXNpdFByb3RlY3RlZE9iamVjdHMoSGVhcFJvb3RWaXNpdG9yJik7CiAgICB2b2lkIHZpc2l0
QXJndW1lbnRCdWZmZXJzKEhlYXBSb290VmlzaXRvciYpOwogICAgdm9pZCB2aXNpdEV4Y2VwdGlv
bihIZWFwUm9vdFZpc2l0b3ImKTsKICAgIHZvaWQgdmlzaXRTdHJvbmdIYW5kbGVzKEhlYXBSb290
VmlzaXRvciYpOwogICAgdm9pZCB2aXNpdEhhbmRsZVN0YWNrKEhlYXBSb290VmlzaXRvciYpOwog
ICAgdm9pZCB2aXNpdFNhbXBsaW5nUHJvZmlsZXIoKTsKICAgIHZvaWQgdmlzaXRTaGFkb3dDaGlj
a2VuKCk7CiAgICB2b2lkIHRyYWNlQ29kZUJsb2Nrc0FuZEpJVFN0dWJSb3V0aW5lcygpOwogICAg
dm9pZCBjb252ZXJnZSgpOwogICAgdm9pZCB2aXNpdFdlYWtIYW5kbGVzKEhlYXBSb290VmlzaXRv
ciYpOwogICAgdm9pZCB1cGRhdGVPYmplY3RDb3VudHMoZG91YmxlIGdjU3RhcnRUaW1lKTsKICAg
IHZvaWQgcmVzZXRWaXNpdG9ycygpOwoKICAgIHZvaWQgcmVhcFdlYWtIYW5kbGVzKCk7CiAgICB2
b2lkIHBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKICAgIHZvaWQgc3dlZXBBcnJh
eUJ1ZmZlcnMoKTsKICAgIHZvaWQgc25hcHNob3RNYXJrZWRTcGFjZSgpOwogICAgdm9pZCBkZWxl
dGVTb3VyY2VQcm92aWRlckNhY2hlcygpOwogICAgdm9pZCBub3RpZnlJbmNyZW1lbnRhbFN3ZWVw
ZXIoKTsKICAgIHZvaWQgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2Nrcygp
OwogICAgdm9pZCByZXNldEFsbG9jYXRvcnMoKTsKICAgIHZvaWQgY29weUJhY2tpbmdTdG9yZXMo
KTsKICAgIHZvaWQgaGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7CiAgICB2b2lkIGZpbmFsaXplVW5j
b25kaXRpb25hbEZpbmFsaXplcnMoKTsKICAgIHZvaWQgY2xlYXJVbm1hcmtlZEV4ZWN1dGFibGVz
KCk7CiAgICB2b2lkIGRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCk7CiAgICB2b2lkIGFkZFRv
UmVtZW1iZXJlZFNldChjb25zdCBKU0NlbGwqKTsKICAgIHZvaWQgdXBkYXRlQWxsb2NhdGlvbkxp
bWl0cygpOwogICAgdm9pZCBkaWRGaW5pc2hDb2xsZWN0aW9uKGRvdWJsZSBnY1N0YXJ0VGltZSk7
CiAgICB2b2lkIHJlc3VtZUNvbXBpbGVyVGhyZWFkcygpOwogICAgdm9pZCB6b21iaWZ5RGVhZE9i
amVjdHMoKTsKICAgIHZvaWQgbWFya0RlYWRPYmplY3RzKCk7CiAgICB2b2lkIGdhdGhlckV4dHJh
SGVhcFNuYXBzaG90RGF0YShIZWFwUHJvZmlsZXImKTsKICAgIHZvaWQgcmVtb3ZlRGVhZEhlYXBT
bmFwc2hvdE5vZGVzKEhlYXBQcm9maWxlciYpOwoKICAgIHZvaWQgc3dlZXBBbGxMb2dpY2FsbHlF
bXB0eVdlYWtCbG9ja3MoKTsKICAgIGJvb2wgc3dlZXBOZXh0TG9naWNhbGx5RW1wdHlXZWFrQmxv
Y2soKTsKCiAgICBib29sIHNob3VsZERvRnVsbENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiByZXF1
ZXN0ZWRDb2xsZWN0aW9uVHlwZSkgY29uc3Q7CgogICAgSlNTdGFjayYgc3RhY2soKTsKCiAgICB2
b2lkIGluY3JlbWVudERlZmVycmFsRGVwdGgoKTsKICAgIHZvaWQgZGVjcmVtZW50RGVmZXJyYWxE
ZXB0aCgpOwogICAgdm9pZCBkZWNyZW1lbnREZWZlcnJhbERlcHRoQW5kR0NJZk5lZWRlZCgpOwoK
ICAgIHNpemVfdCB0aHJlYWRWaXNpdENvdW50KCk7CiAgICBzaXplX3QgdGhyZWFkQnl0ZXNWaXNp
dGVkKCk7CiAgICBzaXplX3QgdGhyZWFkQnl0ZXNDb3BpZWQoKTsKCiAgICBjb25zdCBIZWFwVHlw
ZSBtX2hlYXBUeXBlOwogICAgY29uc3Qgc2l6ZV90IG1fcmFtU2l6ZTsKICAgIGNvbnN0IHNpemVf
dCBtX21pbkJ5dGVzUGVyQ3ljbGU7CiAgICBzaXplX3QgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdDsK
ICAgIHNpemVfdCBtX3NpemVBZnRlckxhc3RGdWxsQ29sbGVjdDsKICAgIHNpemVfdCBtX3NpemVC
ZWZvcmVMYXN0RnVsbENvbGxlY3Q7CiAgICBzaXplX3QgbV9zaXplQWZ0ZXJMYXN0RWRlbkNvbGxl
Y3Q7CiAgICBzaXplX3QgbV9zaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0OwoKICAgIHNpemVfdCBt
X2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlOwogICAgc2l6ZV90IG1fYnl0ZXNBYmFuZG9uZWRTaW5j
ZUxhc3RGdWxsQ29sbGVjdDsKICAgIHNpemVfdCBtX21heEVkZW5TaXplOwogICAgc2l6ZV90IG1f
bWF4SGVhcFNpemU7CiAgICBib29sIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbjsKICAgIHNpemVf
dCBtX3RvdGFsQnl0ZXNWaXNpdGVkOwogICAgc2l6ZV90IG1fdG90YWxCeXRlc1Zpc2l0ZWRUaGlz
Q3ljbGU7CiAgICBzaXplX3QgbV90b3RhbEJ5dGVzQ29waWVkOwogICAgc2l6ZV90IG1fdG90YWxC
eXRlc0NvcGllZFRoaXNDeWNsZTsKCiAgICBIZWFwT3BlcmF0aW9uIG1fb3BlcmF0aW9uSW5Qcm9n
cmVzczsKICAgIFN0cnVjdHVyZUlEVGFibGUgbV9zdHJ1Y3R1cmVJRFRhYmxlOwogICAgTWFya2Vk
U3BhY2UgbV9vYmplY3RTcGFjZTsKICAgIENvcGllZFNwYWNlIG1fc3RvcmFnZVNwYWNlOwogICAg
R0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQ8QXJyYXlCdWZmZXI+IG1fYXJyYXlCdWZmZXJzOwogICAg
c2l6ZV90IG1fZXh0cmFNZW1vcnlTaXplOwogICAgc2l6ZV90IG1fZGVwcmVjYXRlZEV4dHJhTWVt
b3J5U2l6ZTsKCiAgICBIYXNoU2V0PGNvbnN0IEpTQ2VsbCo+IG1fY29weWluZ1JlbWVtYmVyZWRT
ZXQ7CgogICAgUHJvdGVjdENvdW50U2V0IG1fcHJvdGVjdGVkVmFsdWVzOwogICAgc3RkOjp1bmlx
dWVfcHRyPEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPj4gbV9tYXJrTGlzdFNldDsKCiAg
ICBNYWNoaW5lVGhyZWFkcyBtX21hY2hpbmVUaHJlYWRzOwoKICAgIFNsb3RWaXNpdG9yIG1fc2xv
dFZpc2l0b3I7CgoKCgoKICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U2xvdFZpc2l0b3I+PiBt
X3BhcmFsbGVsU2xvdFZpc2l0b3JzOwogICAgVmVjdG9yPFNsb3RWaXNpdG9yKj4gbV9hdmFpbGFi
bGVQYXJhbGxlbFNsb3RWaXNpdG9yczsKICAgIExvY2sgbV9wYXJhbGxlbFNsb3RWaXNpdG9yTG9j
azsKCiAgICBIYW5kbGVTZXQgbV9oYW5kbGVTZXQ7CiAgICBIYW5kbGVTdGFjayBtX2hhbmRsZVN0
YWNrOwogICAgQ29kZUJsb2NrU2V0IG1fY29kZUJsb2NrczsKICAgIEpJVFN0dWJSb3V0aW5lU2V0
IG1faml0U3R1YlJvdXRpbmVzOwogICAgRmluYWxpemVyT3duZXIgbV9maW5hbGl6ZXJPd25lcjsK
CiAgICBib29sIG1faXNTYWZlVG9Db2xsZWN0OwoKICAgIFdyaXRlQmFycmllckJ1ZmZlciBtX3dy
aXRlQmFycmllckJ1ZmZlcjsKCiAgICBWTSogbV92bTsKICAgIGRvdWJsZSBtX2xhc3RGdWxsR0NM
ZW5ndGg7CiAgICBkb3VibGUgbV9sYXN0RWRlbkdDTGVuZ3RoOwoKICAgIFZlY3RvcjxFeGVjdXRh
YmxlQmFzZSo+IG1fZXhlY3V0YWJsZXM7CgogICAgVmVjdG9yPFdlYWtCbG9jayo+IG1fbG9naWNh
bGx5RW1wdHlXZWFrQmxvY2tzOwogICAgc2l6ZV90IG1faW5kZXhPZk5leHRMb2dpY2FsbHlFbXB0
eVdlYWtCbG9ja1RvU3dlZXAgeyBXVEY6Om5vdEZvdW5kIH07CgogICAgUmVmUHRyPEZ1bGxHQ0Fj
dGl2aXR5Q2FsbGJhY2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7CiAgICBSZWZQdHI8R0NBY3Rp
dml0eUNhbGxiYWNrPiBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrOwogICAgc3RkOjp1bmlxdWVfcHRy
PEluY3JlbWVudGFsU3dlZXBlcj4gbV9zd2VlcGVyOwogICAgVmVjdG9yPE1hcmtlZEJsb2NrKj4g
bV9ibG9ja1NuYXBzaG90OwoKICAgIFZlY3RvcjxIZWFwT2JzZXJ2ZXIqPiBtX29ic2VydmVyczsK
CiAgICB1bnNpZ25lZCBtX2RlZmVycmFsRGVwdGg7CiAgICBWZWN0b3I8REZHOjpXb3JrbGlzdCo+
IG1fc3VzcGVuZGVkQ29tcGlsZXJXb3JrbGlzdHM7CgogICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBW
ZXJpZmllcj4gbV92ZXJpZmllcjsKCgoKCgoKICAgIEhhc2hNYXA8dm9pZCosIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPj4gbV93ZWFrR0NNYXBzOwoKICAgIExvY2sgbV9tYXJraW5nTXV0ZXg7CiAgICBD
b25kaXRpb24gbV9tYXJraW5nQ29uZGl0aW9uVmFyaWFibGU7CiAgICBNYXJrU3RhY2tBcnJheSBt
X3NoYXJlZE1hcmtTdGFjazsKICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZBY3RpdmVQYXJhbGxlbE1h
cmtlcnMgeyAwIH07CiAgICB1bnNpZ25lZCBtX251bWJlck9mV2FpdGluZ1BhcmFsbGVsTWFya2Vy
cyB7IDAgfTsKICAgIGJvb2wgbV9wYXJhbGxlbE1hcmtlcnNTaG91bGRFeGl0IHsgZmFsc2UgfTsK
CiAgICBMb2NrIG1fb3BhcXVlUm9vdHNNdXRleDsKICAgIEhhc2hTZXQ8dm9pZCo+IG1fb3BhcXVl
Um9vdHM7CgogICAgVmVjdG9yPENvcGllZEJsb2NrKj4gbV9ibG9ja3NUb0NvcHk7CiAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IHNfYmxvY2tGcmFnbWVudExlbmd0aCA9IDMyOwoKICAgIExpc3RhYmxl
SGFuZGxlcjxXZWFrUmVmZXJlbmNlSGFydmVzdGVyPjo6TGlzdCBtX3dlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXJzOwogICAgTGlzdGFibGVIYW5kbGVyPFVuY29uZGl0aW9uYWxGaW5hbGl6ZXI+OjpMaXN0
IG1fdW5jb25kaXRpb25hbEZpbmFsaXplcnM7CgogICAgUGFyYWxsZWxIZWxwZXJDbGllbnQgbV9o
ZWxwZXJDbGllbnQ7CgoKCgp9OwoKfQojIDMwICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9EZWZlckdDLmgiIDIKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBEZWZlckdDIHsKICAg
IHByaXZhdGU6IERlZmVyR0MoY29uc3QgRGVmZXJHQyYpID0gZGVsZXRlOyBEZWZlckdDJiBvcGVy
YXRvcj0oY29uc3QgRGVmZXJHQyYpID0gZGVsZXRlOzsKcHVibGljOgogICAgRGVmZXJHQyhIZWFw
JiBoZWFwKQogICAgICAgIDogbV9oZWFwKGhlYXApCiAgICB7CiAgICAgICAgbV9oZWFwLmluY3Jl
bWVudERlZmVycmFsRGVwdGgoKTsKICAgIH0KCiAgICB+RGVmZXJHQygpCiAgICB7CiAgICAgICAg
bV9oZWFwLmRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCk7CiAgICB9Cgpwcml2
YXRlOgogICAgSGVhcCYgbV9oZWFwOwp9OwoKY2xhc3MgRGVmZXJHQ0ZvckFXaGlsZSB7CiAgICBw
cml2YXRlOiBEZWZlckdDRm9yQVdoaWxlKGNvbnN0IERlZmVyR0NGb3JBV2hpbGUmKSA9IGRlbGV0
ZTsgRGVmZXJHQ0ZvckFXaGlsZSYgb3BlcmF0b3I9KGNvbnN0IERlZmVyR0NGb3JBV2hpbGUmKSA9
IGRlbGV0ZTs7CnB1YmxpYzoKICAgIERlZmVyR0NGb3JBV2hpbGUoSGVhcCYgaGVhcCkKICAgICAg
ICA6IG1faGVhcChoZWFwKQogICAgewogICAgICAgIG1faGVhcC5pbmNyZW1lbnREZWZlcnJhbERl
cHRoKCk7CiAgICB9CgogICAgfkRlZmVyR0NGb3JBV2hpbGUoKQogICAgewogICAgICAgIG1faGVh
cC5kZWNyZW1lbnREZWZlcnJhbERlcHRoKCk7CiAgICB9Cgpwcml2YXRlOgogICAgSGVhcCYgbV9o
ZWFwOwp9OwojIDk4ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmgi
Cn0KIyAzMCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uY3VycmVudEpJ
VExvY2suaCIgMgoKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9Ob0xvY2suaCIgMQojIDI3ICIu
Li8uLi9Tb3VyY2UvV1RGL3d0Zi9Ob0xvY2suaCIKI2RlZmluZSBOb0xvY2tfaCAKCgoKbmFtZXNw
YWNlIFdURiB7CgpjbGFzcyBOb0xvY2sgewpwdWJsaWM6CiAgICB2b2lkIGxvY2soKSB7IH0KICAg
IHZvaWQgdW5sb2NrKCkgeyB9CiAgICBib29sIGlzSGVsZCgpIHsgcmV0dXJuIGZhbHNlOyB9Cn07
Cgp0eXBlZGVmIExvY2tlcjxOb0xvY2s+IE5vTG9ja0xvY2tlcjsKCn0KCnVzaW5nIFdURjo6Tm9M
b2NrOwp1c2luZyBXVEY6Ok5vTG9ja0xvY2tlcjsKIyAzMiAiLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29uY3VycmVudEpJVExvY2suaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9X
VEYvd3RmL09wdGlvbmFsLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL1dURi93dGYvT3B0aW9uYWwu
aCIKI2RlZmluZSBPcHRpb25hbF9oIAojIDM3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25h
bC5oIgpuYW1lc3BhY2UgV1RGIHsKCnN0cnVjdCBJblBsYWNlVGFnIHsgfTsKY29uc3RleHByIElu
UGxhY2VUYWcgSW5QbGFjZSB7IH07CgpzdHJ1Y3QgTnVsbG9wdFRhZyB7IGV4cGxpY2l0IGNvbnN0
ZXhwciBOdWxsb3B0VGFnKGludCkgeyB9IH07CmNvbnN0ZXhwciBOdWxsb3B0VGFnIE51bGxvcHQg
eyAwIH07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpjbGFzcyBPcHRpb25hbCB7CnB1YmxpYzoKICAg
IE9wdGlvbmFsKCkKICAgICAgICA6IG1faXNFbmdhZ2VkKGZhbHNlKQogICAgewogICAgfQoKICAg
IE9wdGlvbmFsKE51bGxvcHRUYWcpCiAgICAgICAgOiBtX2lzRW5nYWdlZChmYWxzZSkKICAgIHsK
ICAgIH0KCiAgICBPcHRpb25hbChjb25zdCBUJiB2YWx1ZSkKICAgICAgICA6IG1faXNFbmdhZ2Vk
KHRydWUpCiAgICB7CiAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVCh2YWx1ZSk7CiAg
ICB9CgogICAgT3B0aW9uYWwoY29uc3QgT3B0aW9uYWwmIG90aGVyKQogICAgICAgIDogbV9pc0Vu
Z2FnZWQob3RoZXIubV9pc0VuZ2FnZWQpCiAgICB7CiAgICAgICAgaWYgKG1faXNFbmdhZ2VkKQog
ICAgICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKCpvdGhlci5hc1B0cigpKTsKICAg
IH0KCiAgICBPcHRpb25hbChPcHRpb25hbCYmIG90aGVyKQogICAgICAgIDogbV9pc0VuZ2FnZWQo
b3RoZXIubV9pc0VuZ2FnZWQpCiAgICB7CiAgICAgICAgaWYgKG1faXNFbmdhZ2VkKQogICAgICAg
ICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBh
cmFtZXRlcj4oKm90aGVyLmFzUHRyKCkpKTsKICAgIH0KCiAgICBPcHRpb25hbChUJiYgdmFsdWUp
CiAgICAgICAgOiBtX2lzRW5nYWdlZCh0cnVlKQogICAgewogICAgICAgIG5ldyAoTm90TnVsbCwg
Jm1fdmFsdWUpIFQoc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPih2YWx1ZSkpOwog
ICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CiAgICBPcHRpb25hbChJblBsYWNl
VGFnLCBBcmdzJiYuLi4gYXJncykKICAgICAgICA6IG1faXNFbmdhZ2VkKHRydWUpCiAgICB7CiAg
ICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOwogICAgfQoKICAgIH5PcHRpb25hbCgpCiAgICB7CiAgICAgICAgZGVzdHJveSgpOwogICAg
fQoKICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oTnVsbG9wdFRhZykKICAgIHsKICAgICAgICBkZXN0
cm95KCk7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIE9wdGlvbmFsJiBvcGVyYXRv
cj0oY29uc3QgT3B0aW9uYWwmIG90aGVyKQogICAgewogICAgICAgIGlmICh0aGlzID09ICZvdGhl
cikKICAgICAgICAgICAgcmV0dXJuICp0aGlzOwoKICAgICAgICBkZXN0cm95KCk7CiAgICAgICAg
aWYgKG90aGVyLm1faXNFbmdhZ2VkKSB7CiAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFs
dWUpIFQoKm90aGVyLmFzUHRyKCkpOwogICAgICAgICAgICBtX2lzRW5nYWdlZCA9IHRydWU7CiAg
ICAgICAgfQogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICBPcHRpb25hbCYgb3BlcmF0
b3I9KE9wdGlvbmFsJiYgb3RoZXIpCiAgICB7CiAgICAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQog
ICAgICAgICAgICByZXR1cm4gKnRoaXM7CgogICAgICAgIGRlc3Ryb3koKTsKICAgICAgICBpZiAo
b3RoZXIubV9pc0VuZ2FnZWQpIHsKICAgICAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkg
VChzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KCpvdGhlci5hc1B0cigpKSk7CiAg
ICAgICAgICAgIG1faXNFbmdhZ2VkID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIGNsYXNzID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxV
Pjo6dHlwZSwgVD46OnZhbHVlPjo6dHlwZT4KICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oVSYmIHUp
CiAgICB7CiAgICAgICAgZGVzdHJveSgpOwogICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUp
IFQoc3RkOjpmb3J3YXJkPFU+KHUpKTsKICAgICAgICBtX2lzRW5nYWdlZCA9IHRydWU7CiAgICAg
ICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25z
dCB7IHJldHVybiBtX2lzRW5nYWdlZDsgfQoKICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25z
dAogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gYXNQdHIoKTsKICAgIH0K
CiAgICBUKiBvcGVyYXRvci0+KCkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0
dXJuIGFzUHRyKCk7CiAgICB9CgogICAgY29uc3QgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1
cm4gdmFsdWUoKTsgfQogICAgVCYgb3BlcmF0b3IqKCkgeyByZXR1cm4gdmFsdWUoKTsgfQoKICAg
IFQmIHZhbHVlKCkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuICphc1B0
cigpOwogICAgfQoKICAgIGNvbnN0IFQmIHZhbHVlKCkgY29uc3QKICAgIHsKICAgICAgICAoKHZv
aWQpMCk7CiAgICAgICAgcmV0dXJuICphc1B0cigpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+CiAgICBUIHZhbHVlT3IoVSYmIHZhbHVlKSBjb25zdAogICAgewogICAgICAgIGlmICht
X2lzRW5nYWdlZCkKICAgICAgICAgICAgcmV0dXJuICphc1B0cigpOwoKICAgICAgICByZXR1cm4g
c3RkOjpmb3J3YXJkPFU+KHZhbHVlKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgog
ICAgVCB2YWx1ZU9yQ29tcHV0ZShVIGNhbGxiYWNrKSBjb25zdAogICAgewogICAgICAgIGlmICht
X2lzRW5nYWdlZCkKICAgICAgICAgICAgcmV0dXJuICphc1B0cigpOwoKICAgICAgICByZXR1cm4g
Y2FsbGJhY2soKTsKICAgIH0KCnByaXZhdGU6CiAgICBjb25zdCBUKiBhc1B0cigpIGNvbnN0IHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KCZtX3ZhbHVlKTsgfQogICAgVCogYXNQ
dHIoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFQqPigmbV92YWx1ZSk7IH0KICAgIHZvaWQg
ZGVzdHJveSgpCiAgICB7CiAgICAgICAgaWYgKG1faXNFbmdhZ2VkKSB7CiAgICAgICAgICAgIGFz
UHRyKCktPn5UKCk7CiAgICAgICAgICAgIG1faXNFbmdhZ2VkID0gZmFsc2U7CiAgICAgICAgfQog
ICAgfQoKICAgIGJvb2wgbV9pc0VuZ2FnZWQ7CiAgICB0eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3Rv
cmFnZTxzaXplb2YoVCksIHN0ZDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZT46OnR5cGUgbV92YWx1
ZTsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29u
c3QgT3B0aW9uYWw8VD4mIGxocywgY29uc3QgT3B0aW9uYWw8VD4mIHJocykKewogICAgcmV0dXJu
IHN0YXRpY19jYXN0PGJvb2w+KGxocykgPT0gc3RhdGljX2Nhc3Q8Ym9vbD4ocmhzKSAmJiAoIXN0
YXRpY19jYXN0PGJvb2w+KGxocykgfHwgbGhzLnZhbHVlKCkgPT0gcmhzLnZhbHVlKCkpOwp9Cgp0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlv
bmFsPFQ+JiBsaHMsIGNvbnN0IE9wdGlvbmFsPFQ+JiByaHMpCnsKICAgIHJldHVybiAhKGxocyA9
PSByaHMpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQsIE51bGxvcHRUYWcpCnsKICAgIHJldHVybiAhb3B0Owp9
Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9w
dGlvbmFsPFQ+JiBvcHQsIE51bGxvcHRUYWcpCnsKICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29s
PihvcHQpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09
KE51bGxvcHRUYWcsIGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQpCnsKICAgIHJldHVybiAhb3B0Owp9
Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KE51bGxvcHRU
YWcsIGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQpCnsKICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29s
PihvcHQpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQsIGNvbnN0IFQmIHZhbHVlKQp7CiAgICByZXR1cm4gb3B0
ICYmIG9wdC52YWx1ZSgpID09IHZhbHVlOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpjb25zdGV4
cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQsIGNvbnN0IFQmIHZhbHVl
KQp7CiAgICByZXR1cm4gIShvcHQgPT0gdmFsdWUpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHZhbHVlLCBjb25zdCBPcHRpb25hbDxU
PiYgb3B0KQp7CiAgICByZXR1cm4gb3B0ICYmIG9wdC52YWx1ZSgpID09IHZhbHVlOwp9Cgp0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgpjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIHZhbHVl
LCBjb25zdCBPcHRpb25hbDxUPiYgb3B0KQp7CiAgICByZXR1cm4gISh2YWx1ZSA9PSBvcHQpOwp9
Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpPcHRpb25hbDx0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0
eXBlPgptYWtlT3B0aW9uYWwoVCYmIHZhbHVlKQp7CiAgICByZXR1cm4gT3B0aW9uYWw8dHlwZW5h
bWUgc3RkOjpkZWNheTxUPjo6dHlwZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSk7Cn0KCn0KCnVz
aW5nIFdURjo6SW5QbGFjZTsKdXNpbmcgV1RGOjpOdWxsb3B0Owp1c2luZyBXVEY6Ok9wdGlvbmFs
Owp1c2luZyBXVEY6Om1ha2VPcHRpb25hbDsKIyAzMyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29uY3VycmVudEpJVExvY2suaCIgMgoKbmFtZXNwYWNlIEpTQyB7CgoKCgoK
dHlwZWRlZiBOb0xvY2sgQ29uY3VycmVudEpJVExvY2s7CnR5cGVkZWYgTm9Mb2NrTG9ja2VyIENv
bmN1cnJlbnRKSVRMb2NrZXJJbXBsOwoKCmNsYXNzIENvbmN1cnJlbnRKSVRMb2NrZXJCYXNlIHsK
ICAgIHByaXZhdGU6IENvbmN1cnJlbnRKSVRMb2NrZXJCYXNlKGNvbnN0IENvbmN1cnJlbnRKSVRM
b2NrZXJCYXNlJikgPSBkZWxldGU7IENvbmN1cnJlbnRKSVRMb2NrZXJCYXNlJiBvcGVyYXRvcj0o
Y29uc3QgQ29uY3VycmVudEpJVExvY2tlckJhc2UmKSA9IGRlbGV0ZTs7CnB1YmxpYzoKICAgIGV4
cGxpY2l0IENvbmN1cnJlbnRKSVRMb2NrZXJCYXNlKENvbmN1cnJlbnRKSVRMb2NrJiBsb2NrYWJs
ZSkKICAgICAgICA6IG1fbG9ja2VyKCZsb2NrYWJsZSkKICAgIHsKICAgIH0KICAgIGV4cGxpY2l0
IENvbmN1cnJlbnRKSVRMb2NrZXJCYXNlKENvbmN1cnJlbnRKSVRMb2NrKiBsb2NrYWJsZSkKICAg
ICAgICA6IG1fbG9ja2VyKGxvY2thYmxlKQogICAgewogICAgfQoKICAgIGVudW0gTm9Mb2NraW5n
TmVjZXNzYXJ5VGFnIHsgTm9Mb2NraW5nTmVjZXNzYXJ5IH07CiAgICBleHBsaWNpdCBDb25jdXJy
ZW50SklUTG9ja2VyQmFzZShOb0xvY2tpbmdOZWNlc3NhcnlUYWcpCiAgICAgICAgOiBtX2xvY2tl
cihDb25jdXJyZW50SklUTG9ja2VySW1wbDo6Tm9Mb2NraW5nTmVjZXNzYXJ5KQogICAgewogICAg
fQoKICAgIH5Db25jdXJyZW50SklUTG9ja2VyQmFzZSgpCiAgICB7CiAgICB9CgogICAgdm9pZCB1
bmxvY2tFYXJseSgpCiAgICB7CiAgICAgICAgbV9sb2NrZXIudW5sb2NrRWFybHkoKTsKICAgIH0K
CnByaXZhdGU6CiAgICBDb25jdXJyZW50SklUTG9ja2VySW1wbCBtX2xvY2tlcjsKfTsKCmNsYXNz
IEdDU2FmZUNvbmN1cnJlbnRKSVRMb2NrZXIgOiBwdWJsaWMgQ29uY3VycmVudEpJVExvY2tlckJh
c2UgewpwdWJsaWM6CiAgICBHQ1NhZmVDb25jdXJyZW50SklUTG9ja2VyKENvbmN1cnJlbnRKSVRM
b2NrJiBsb2NrYWJsZSwgSGVhcCYgaGVhcCkKICAgICAgICA6IENvbmN1cnJlbnRKSVRMb2NrZXJC
YXNlKGxvY2thYmxlKQogICAgICAgICwgbV9kZWZlckdDKGhlYXApCiAgICB7CiAgICB9CgogICAg
R0NTYWZlQ29uY3VycmVudEpJVExvY2tlcihDb25jdXJyZW50SklUTG9jayogbG9ja2FibGUsIEhl
YXAmIGhlYXApCiAgICAgICAgOiBDb25jdXJyZW50SklUTG9ja2VyQmFzZShsb2NrYWJsZSkKICAg
ICAgICAsIG1fZGVmZXJHQyhoZWFwKQogICAgewogICAgfQoKICAgIH5HQ1NhZmVDb25jdXJyZW50
SklUTG9ja2VyKCkKICAgIHsKCgoKCiAgICAgICAgdW5sb2NrRWFybHkoKTsKICAgIH0KCnByaXZh
dGU6CgoKCiAgICBzdHJ1Y3QgTm9EZWZlciB7CiAgICAgICAgTm9EZWZlcihIZWFwJiBoZWFwKSA6
IG1faGVhcChoZWFwKSB7IH0KICAgICAgICBIZWFwJiBtX2hlYXA7CiAgICB9OwogICAgTm9EZWZl
ciBtX2RlZmVyR0M7Cgp9OwoKY2xhc3MgQ29uY3VycmVudEpJVExvY2tlciA6IHB1YmxpYyBDb25j
dXJyZW50SklUTG9ja2VyQmFzZSB7CnB1YmxpYzoKICAgIENvbmN1cnJlbnRKSVRMb2NrZXIoQ29u
Y3VycmVudEpJVExvY2smIGxvY2thYmxlKQogICAgICAgIDogQ29uY3VycmVudEpJVExvY2tlckJh
c2UobG9ja2FibGUpCgoKCiAgICB7CiAgICB9CgogICAgQ29uY3VycmVudEpJVExvY2tlcihDb25j
dXJyZW50SklUTG9jayogbG9ja2FibGUpCiAgICAgICAgOiBDb25jdXJyZW50SklUTG9ja2VyQmFz
ZShsb2NrYWJsZSkKCgoKICAgIHsKICAgIH0KCiAgICBDb25jdXJyZW50SklUTG9ja2VyKENvbmN1
cnJlbnRKSVRMb2NrZXJCYXNlOjpOb0xvY2tpbmdOZWNlc3NhcnlUYWcpCiAgICAgICAgOiBDb25j
dXJyZW50SklUTG9ja2VyQmFzZShDb25jdXJyZW50SklUTG9ja2VyQmFzZTo6Tm9Mb2NraW5nTmVj
ZXNzYXJ5KQoKCgogICAgewogICAgfQoKCgoKCn07Cgp9CiMgMzMgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db250cm9sRmxvd1Byb2ZpbGVyLmgiIDEKIyAyOCAiLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29udHJvbEZsb3dQcm9maWxlci5oIgojZGVmaW5lIENvbnRy
b2xGbG93UHJvZmlsZXJfaCAKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQmFzaWNCbG9ja0xvY2F0aW9uLmgiIDEKIyAyOCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQmFzaWNCbG9ja0xvY2F0aW9uLmgiCiNkZWZpbmUgQmFzaWNCbG9ja0xvY2F0
aW9uX2ggCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXIuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmgiCiNkZWZpbmUgTWFjcm9Bc3NlbWJsZXJfaCAKCgoKCiMgMSAiLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmgi
IDEKIyAyOCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTXY3LmgiCiNkZWZpbmUgTWFjcm9Bc3NlbWJsZXJBUk12N19oIAoKCgojIDEgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaCIgMQojIDI4
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgi
CiNkZWZpbmUgQVJNQXNzZW1ibGVyX2ggCgoKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oIgojZGVmaW5lIEFzc2VtYmxl
ckJ1ZmZlcl9oIAoKCgoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENv
bXBpbGF0aW9uRWZmb3J0LmgiIDEKIyAzMyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaCIgMgoKCgoKCgpuYW1lc3BhY2UgSlNDIHsKCiAgICBz
dHJ1Y3QgQXNzZW1ibGVyTGFiZWwgewogICAgICAgIEFzc2VtYmxlckxhYmVsKCkKICAgICAgICAg
ICAgOiBtX29mZnNldChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpCiAgICAg
ICAgewogICAgICAgIH0KCiAgICAgICAgZXhwbGljaXQgQXNzZW1ibGVyTGFiZWwodWludDMyX3Qg
b2Zmc2V0KQogICAgICAgICAgICA6IG1fb2Zmc2V0KG9mZnNldCkKICAgICAgICB7CiAgICAgICAg
fQoKICAgICAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gKG1fb2Zmc2V0ICE9IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSk7IH0KCiAgICAgICAgQXNzZW1ibGVyTGFi
ZWwgbGFiZWxBdE9mZnNldChpbnQgb2Zmc2V0KSBjb25zdAogICAgICAgIHsKICAgICAgICAgICAg
cmV0dXJuIEFzc2VtYmxlckxhYmVsKG1fb2Zmc2V0ICsgb2Zmc2V0KTsKICAgICAgICB9CgogICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBc3NlbWJsZXJMYWJlbCYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0OyB9CgogICAgICAgIHVpbnQzMl90IG1f
b2Zmc2V0OwogICAgfTsKCiAgICBjbGFzcyBBc3NlbWJsZXJEYXRhIHsKICAgIHB1YmxpYzoKICAg
ICAgICBBc3NlbWJsZXJEYXRhKCkKICAgICAgICAgICAgOiBtX2J1ZmZlcihudWxscHRyKQogICAg
ICAgICAgICAsIG1fY2FwYWNpdHkoMCkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBBc3Nl
bWJsZXJEYXRhKHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSkKICAgICAgICB7CiAgICAgICAgICAg
IG1fY2FwYWNpdHkgPSBpbml0aWFsQ2FwYWNpdHk7CiAgICAgICAgICAgIG1fYnVmZmVyID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KGZhc3RNYWxsb2MobV9jYXBhY2l0eSkpOwogICAgICAgIH0KCiAgICAg
ICAgQXNzZW1ibGVyRGF0YShBc3NlbWJsZXJEYXRhJiYgb3RoZXIpCiAgICAgICAgewogICAgICAg
ICAgICBtX2J1ZmZlciA9IG90aGVyLm1fYnVmZmVyOwogICAgICAgICAgICBvdGhlci5tX2J1ZmZl
ciA9IG51bGxwdHI7CiAgICAgICAgICAgIG1fY2FwYWNpdHkgPSBvdGhlci5tX2NhcGFjaXR5Owog
ICAgICAgICAgICBvdGhlci5tX2NhcGFjaXR5ID0gMDsKICAgICAgICB9CgogICAgICAgIEFzc2Vt
YmxlckRhdGEmIG9wZXJhdG9yPShBc3NlbWJsZXJEYXRhJiYgb3RoZXIpCiAgICAgICAgewogICAg
ICAgICAgICBtX2J1ZmZlciA9IG90aGVyLm1fYnVmZmVyOwogICAgICAgICAgICBvdGhlci5tX2J1
ZmZlciA9IG51bGxwdHI7CiAgICAgICAgICAgIG1fY2FwYWNpdHkgPSBvdGhlci5tX2NhcGFjaXR5
OwogICAgICAgICAgICBvdGhlci5tX2NhcGFjaXR5ID0gMDsKICAgICAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgICAgIH0KCiAgICAgICAgfkFzc2VtYmxlckRhdGEoKQogICAgICAgIHsKICAgICAg
ICAgICAgZmFzdEZyZWUobV9idWZmZXIpOwogICAgICAgIH0KCiAgICAgICAgY2hhciogYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KCiAgICAgICAgdW5zaWduZWQgY2FwYWNpdHko
KSBjb25zdCB7IHJldHVybiBtX2NhcGFjaXR5OyB9CgogICAgICAgIHZvaWQgZ3Jvdyh1bnNpZ25l
ZCBleHRyYUNhcGFjaXR5ID0gMCkKICAgICAgICB7CiAgICAgICAgICAgIG1fY2FwYWNpdHkgPSBt
X2NhcGFjaXR5ICsgbV9jYXBhY2l0eSAvIDIgKyBleHRyYUNhcGFjaXR5OwogICAgICAgICAgICBt
X2J1ZmZlciA9IHN0YXRpY19jYXN0PGNoYXIqPihmYXN0UmVhbGxvYyhtX2J1ZmZlciwgbV9jYXBh
Y2l0eSkpOwogICAgICAgIH0KCiAgICBwcml2YXRlOgogICAgICAgIGNoYXIqIG1fYnVmZmVyOwog
ICAgICAgIHVuc2lnbmVkIG1fY2FwYWNpdHk7CiAgICB9OwoKICAgIGNsYXNzIEFzc2VtYmxlckJ1
ZmZlciB7CiAgICAgICAgc3RhdGljIGNvbnN0IGludCBpbml0aWFsQ2FwYWNpdHkgPSAxMjg7CiAg
ICBwdWJsaWM6CiAgICAgICAgQXNzZW1ibGVyQnVmZmVyKCkKICAgICAgICAgICAgOiBtX3N0b3Jh
Z2UoaW5pdGlhbENhcGFjaXR5KQogICAgICAgICAgICAsIG1faW5kZXgoMCkKICAgICAgICB7CiAg
ICAgICAgfQoKICAgICAgICBib29sIGlzQXZhaWxhYmxlKHVuc2lnbmVkIHNwYWNlKQogICAgICAg
IHsKICAgICAgICAgICAgcmV0dXJuIG1faW5kZXggKyBzcGFjZSA8PSBtX3N0b3JhZ2UuY2FwYWNp
dHkoKTsKICAgICAgICB9CgogICAgICAgIHZvaWQgZW5zdXJlU3BhY2UodW5zaWduZWQgc3BhY2Up
CiAgICAgICAgewogICAgICAgICAgICBpZiAoIWlzQXZhaWxhYmxlKHNwYWNlKSkKICAgICAgICAg
ICAgICAgIG91dE9mTGluZUdyb3coKTsKICAgICAgICB9CgogICAgICAgIGJvb2wgaXNBbGlnbmVk
KGludCBhbGlnbm1lbnQpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gIShtX2lu
ZGV4ICYgKGFsaWdubWVudCAtIDEpKTsKICAgICAgICB9CgogICAgICAgIHZvaWQgcHV0Qnl0ZVVu
Y2hlY2tlZChpbnQ4X3QgdmFsdWUpIHsgcHV0SW50ZWdyYWxVbmNoZWNrZWQodmFsdWUpOyB9CiAg
ICAgICAgdm9pZCBwdXRCeXRlKGludDhfdCB2YWx1ZSkgeyBwdXRJbnRlZ3JhbCh2YWx1ZSk7IH0K
ICAgICAgICB2b2lkIHB1dFNob3J0VW5jaGVja2VkKGludDE2X3QgdmFsdWUpIHsgcHV0SW50ZWdy
YWxVbmNoZWNrZWQodmFsdWUpOyB9CiAgICAgICAgdm9pZCBwdXRTaG9ydChpbnQxNl90IHZhbHVl
KSB7IHB1dEludGVncmFsKHZhbHVlKTsgfQogICAgICAgIHZvaWQgcHV0SW50VW5jaGVja2VkKGlu
dDMyX3QgdmFsdWUpIHsgcHV0SW50ZWdyYWxVbmNoZWNrZWQodmFsdWUpOyB9CiAgICAgICAgdm9p
ZCBwdXRJbnQoaW50MzJfdCB2YWx1ZSkgeyBwdXRJbnRlZ3JhbCh2YWx1ZSk7IH0KICAgICAgICB2
b2lkIHB1dEludDY0VW5jaGVja2VkKGludDY0X3QgdmFsdWUpIHsgcHV0SW50ZWdyYWxVbmNoZWNr
ZWQodmFsdWUpOyB9CiAgICAgICAgdm9pZCBwdXRJbnQ2NChpbnQ2NF90IHZhbHVlKSB7IHB1dElu
dGVncmFsKHZhbHVlKTsgfQoKICAgICAgICB2b2lkKiBkYXRhKCkgY29uc3QKICAgICAgICB7CiAg
ICAgICAgICAgIHJldHVybiBtX3N0b3JhZ2UuYnVmZmVyKCk7CiAgICAgICAgfQoKICAgICAgICBz
aXplX3QgY29kZVNpemUoKSBjb25zdAogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIG1faW5k
ZXg7CiAgICAgICAgfQoKICAgICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCgpIGNvbnN0CiAgICAg
ICAgewogICAgICAgICAgICByZXR1cm4gQXNzZW1ibGVyTGFiZWwobV9pbmRleCk7CiAgICAgICAg
fQoKICAgICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1faW5kZXg7IH0KCiAg
ICAgICAgQXNzZW1ibGVyRGF0YSByZWxlYXNlQXNzZW1ibGVyRGF0YSgpIHsgcmV0dXJuIHN0ZDo6
bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4obV9zdG9yYWdlKTsgfQojIDE3NSAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaCIKICAgICAg
ICBjbGFzcyBMb2NhbFdyaXRlciB7CiAgICAgICAgcHVibGljOgogICAgICAgICAgICBMb2NhbFdy
aXRlcihBc3NlbWJsZXJCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgcmVxdWlyZWRTcGFjZSkKICAg
ICAgICAgICAgICAgIDogbV9idWZmZXIoYnVmZmVyKQogICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICBidWZmZXIuZW5zdXJlU3BhY2UocmVxdWlyZWRTcGFjZSk7CiAgICAgICAgICAgICAgICBt
X3N0b3JhZ2VCdWZmZXIgPSBidWZmZXIubV9zdG9yYWdlLmJ1ZmZlcigpOwogICAgICAgICAgICAg
ICAgbV9pbmRleCA9IGJ1ZmZlci5tX2luZGV4OwoKCgoKICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgfkxvY2FsV3JpdGVyKCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgKCh2b2lkKTAp
OwogICAgICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICAgICAgKCh2b2lkKTApOwog
ICAgICAgICAgICAgICAgbV9idWZmZXIubV9pbmRleCA9IG1faW5kZXg7CiAgICAgICAgICAgIH0K
CiAgICAgICAgICAgIHZvaWQgcHV0Qnl0ZVVuY2hlY2tlZChpbnQ4X3QgdmFsdWUpIHsgcHV0SW50
ZWdyYWxVbmNoZWNrZWQodmFsdWUpOyB9CiAgICAgICAgICAgIHZvaWQgcHV0U2hvcnRVbmNoZWNr
ZWQoaW50MTZfdCB2YWx1ZSkgeyBwdXRJbnRlZ3JhbFVuY2hlY2tlZCh2YWx1ZSk7IH0KICAgICAg
ICAgICAgdm9pZCBwdXRJbnRVbmNoZWNrZWQoaW50MzJfdCB2YWx1ZSkgeyBwdXRJbnRlZ3JhbFVu
Y2hlY2tlZCh2YWx1ZSk7IH0KICAgICAgICAgICAgdm9pZCBwdXRJbnQ2NFVuY2hlY2tlZChpbnQ2
NF90IHZhbHVlKSB7IHB1dEludGVncmFsVW5jaGVja2VkKHZhbHVlKTsgfQogICAgICAgIHByaXZh
dGU6CiAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4KICAgICAgICAg
ICAgdm9pZCBwdXRJbnRlZ3JhbFVuY2hlY2tlZChJbnRlZ3JhbFR5cGUgdmFsdWUpCiAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICgodm9pZCkwKTsKICAgICAgICAgICAgICAgICpyZWludGVy
cHJldF9jYXN0X3B0cjxJbnRlZ3JhbFR5cGUqPihtX3N0b3JhZ2VCdWZmZXIgKyBtX2luZGV4KSA9
IHZhbHVlOwogICAgICAgICAgICAgICAgbV9pbmRleCArPSBzaXplb2YoSW50ZWdyYWxUeXBlKTsK
ICAgICAgICAgICAgfQogICAgICAgICAgICBBc3NlbWJsZXJCdWZmZXImIG1fYnVmZmVyOwogICAg
ICAgICAgICBjaGFyKiBtX3N0b3JhZ2VCdWZmZXI7CiAgICAgICAgICAgIHVuc2lnbmVkIG1faW5k
ZXg7CgoKCgogICAgICAgIH07CgogICAgcHJvdGVjdGVkOgogICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEludGVncmFsVHlwZT4KICAgICAgICB2b2lkIHB1dEludGVncmFsKEludGVncmFsVHlwZSB2
YWx1ZSkKICAgICAgICB7CiAgICAgICAgICAgIHVuc2lnbmVkIG5leHRJbmRleCA9IG1faW5kZXgg
KyBzaXplb2YoSW50ZWdyYWxUeXBlKTsKICAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3Qo
ISEobmV4dEluZGV4ID4gbV9zdG9yYWdlLmNhcGFjaXR5KCkpLCAwKSkKICAgICAgICAgICAgICAg
IG91dE9mTGluZUdyb3coKTsKICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICAqcmVp
bnRlcnByZXRfY2FzdF9wdHI8SW50ZWdyYWxUeXBlKj4obV9zdG9yYWdlLmJ1ZmZlcigpICsgbV9p
bmRleCkgPSB2YWx1ZTsKICAgICAgICAgICAgbV9pbmRleCA9IG5leHRJbmRleDsKICAgICAgICB9
CgogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4KICAgICAgICB2b2lkIHB1
dEludGVncmFsVW5jaGVja2VkKEludGVncmFsVHlwZSB2YWx1ZSkKICAgICAgICB7CiAgICAgICAg
ICAgICgodm9pZCkwKTsKICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3RfcHRyPEludGVncmFs
VHlwZSo+KG1fc3RvcmFnZS5idWZmZXIoKSArIG1faW5kZXgpID0gdmFsdWU7CiAgICAgICAgICAg
IG1faW5kZXggKz0gc2l6ZW9mKEludGVncmFsVHlwZSk7CiAgICAgICAgfQoKICAgICAgICB2b2lk
IGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkKICAgICAgICB7CiAgICAgICAgICAg
IGlmICghaXNBdmFpbGFibGUoc2l6ZSkpCiAgICAgICAgICAgICAgICBncm93KHNpemUpOwoKICAg
ICAgICAgICAgbWVtY3B5KG1fc3RvcmFnZS5idWZmZXIoKSArIG1faW5kZXgsIGRhdGEsIHNpemUp
OwogICAgICAgICAgICBtX2luZGV4ICs9IHNpemU7CiAgICAgICAgfQoKICAgICAgICB2b2lkIGdy
b3coaW50IGV4dHJhQ2FwYWNpdHkgPSAwKQogICAgICAgIHsKICAgICAgICAgICAgbV9zdG9yYWdl
Lmdyb3coZXh0cmFDYXBhY2l0eSk7CiAgICAgICAgfQoKICAgIHByaXZhdGU6CiAgICAgICAgX19h
dHRyaWJ1dGVfXygoX19ub2lubGluZV9fKSkgdm9pZCBvdXRPZkxpbmVHcm93KCkKICAgICAgICB7
CiAgICAgICAgICAgIG1fc3RvcmFnZS5ncm93KCk7CiAgICAgICAgfQoKICAgICAgICBmcmllbmQg
TG9jYWxXcml0ZXI7CgogICAgICAgIEFzc2VtYmxlckRhdGEgbV9zdG9yYWdlOwogICAgICAgIHVu
c2lnbmVkIG1faW5kZXg7CiAgICB9OwoKfQojIDMzICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckNvbW1vbi5oIiAxCiMgMjcgIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQ29tbW9uLmgiCiNkZWZpbmUgQXNz
ZW1ibGVyQ29tbW9uX2ggCgpuYW1lc3BhY2UgSlNDIHsKCmlubGluZSBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgaXNJT1MoKQp7CgoKCiAgICByZXR1cm4gZmFsc2U7Cgp9
CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBib29sIGlzSW50OShp
bnQzMl90IHZhbHVlKQp7CiAgICByZXR1cm4gdmFsdWUgPT0gKCh2YWx1ZSA8PCAyMykgPj4gMjMp
Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18pKSBib29sIGlzVUludDEyKFR5cGUgdmFsdWUpCnsKICAgIHJldHVybiAhKHZh
bHVlICYgfnN0YXRpY19jYXN0PFR5cGU+KDB4ZmZmKSk7Cn0KCnRlbXBsYXRlPGludCBkYXRhc2l6
ZT4KaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBpc1ZhbGlk
U2NhbGVkVUltbTEyKGludDMyX3Qgb2Zmc2V0KQp7CiAgICBpbnQzMl90IG1heFBJbW0gPSA0MDk1
ICogKGRhdGFzaXplIC8gOCk7CiAgICBpZiAob2Zmc2V0IDwgMCkKICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICBpZiAob2Zmc2V0ID4gbWF4UEltbSkKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICBp
ZiAob2Zmc2V0ICYgKChkYXRhc2l6ZSAvIDgpIC0gMSkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgcmV0dXJuIHRydWU7Cn0KCmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XykpIGJvb2wgaXNWYWxpZFNpZ25lZEltbTkoaW50MzJfdCB2YWx1ZSkKewogICAgcmV0dXJuIGlz
SW50OSh2YWx1ZSk7Cn0KCmNsYXNzIEFSTTY0TG9naWNhbEltbWVkaWF0ZSB7CnB1YmxpYzoKICAg
IHN0YXRpYyBBUk02NExvZ2ljYWxJbW1lZGlhdGUgY3JlYXRlMzIodWludDMyX3QgdmFsdWUpCiAg
ICB7CgogICAgICAgIGlmICghdmFsdWUgfHwgIX52YWx1ZSkKICAgICAgICAgICAgcmV0dXJuIElu
dmFsaWRMb2dpY2FsSW1tZWRpYXRlOwoKCgoKICAgICAgICB1bnNpZ25lZCBoc2IsIGxzYjsKICAg
ICAgICBib29sIGludmVydGVkOwogICAgICAgIGlmIChmaW5kQml0UmFuZ2U8MzI+KHZhbHVlLCBo
c2IsIGxzYiwgaW52ZXJ0ZWQpKQogICAgICAgICAgICByZXR1cm4gZW5jb2RlTG9naWNhbEltbWVk
aWF0ZTwzMj4oaHNiLCBsc2IsIGludmVydGVkKTsKCiAgICAgICAgaWYgKCh2YWx1ZSAmIDB4ZmZm
ZikgIT0gKHZhbHVlID4+IDE2KSkKICAgICAgICAgICAgcmV0dXJuIEludmFsaWRMb2dpY2FsSW1t
ZWRpYXRlOwogICAgICAgIHZhbHVlICY9IDB4ZmZmZjsKCiAgICAgICAgaWYgKGZpbmRCaXRSYW5n
ZTwxNj4odmFsdWUsIGhzYiwgbHNiLCBpbnZlcnRlZCkpCiAgICAgICAgICAgIHJldHVybiBlbmNv
ZGVMb2dpY2FsSW1tZWRpYXRlPDE2Pihoc2IsIGxzYiwgaW52ZXJ0ZWQpOwoKICAgICAgICBpZiAo
KHZhbHVlICYgMHhmZikgIT0gKHZhbHVlID4+IDgpKQogICAgICAgICAgICByZXR1cm4gSW52YWxp
ZExvZ2ljYWxJbW1lZGlhdGU7CiAgICAgICAgdmFsdWUgJj0gMHhmZjsKCiAgICAgICAgaWYgKGZp
bmRCaXRSYW5nZTw4Pih2YWx1ZSwgaHNiLCBsc2IsIGludmVydGVkKSkKICAgICAgICAgICAgcmV0
dXJuIGVuY29kZUxvZ2ljYWxJbW1lZGlhdGU8OD4oaHNiLCBsc2IsIGludmVydGVkKTsKCiAgICAg
ICAgaWYgKCh2YWx1ZSAmIDB4ZikgIT0gKHZhbHVlID4+IDQpKQogICAgICAgICAgICByZXR1cm4g
SW52YWxpZExvZ2ljYWxJbW1lZGlhdGU7CiAgICAgICAgdmFsdWUgJj0gMHhmOwoKICAgICAgICBp
ZiAoZmluZEJpdFJhbmdlPDQ+KHZhbHVlLCBoc2IsIGxzYiwgaW52ZXJ0ZWQpKQogICAgICAgICAg
ICByZXR1cm4gZW5jb2RlTG9naWNhbEltbWVkaWF0ZTw0Pihoc2IsIGxzYiwgaW52ZXJ0ZWQpOwoK
ICAgICAgICBpZiAoKHZhbHVlICYgMHgzKSAhPSAodmFsdWUgPj4gMikpCiAgICAgICAgICAgIHJl
dHVybiBJbnZhbGlkTG9naWNhbEltbWVkaWF0ZTsKICAgICAgICB2YWx1ZSAmPSAweDM7CgogICAg
ICAgIGlmIChmaW5kQml0UmFuZ2U8Mj4odmFsdWUsIGhzYiwgbHNiLCBpbnZlcnRlZCkpCiAgICAg
ICAgICAgIHJldHVybiBlbmNvZGVMb2dpY2FsSW1tZWRpYXRlPDI+KGhzYiwgbHNiLCBpbnZlcnRl
ZCk7CgogICAgICAgIHJldHVybiBJbnZhbGlkTG9naWNhbEltbWVkaWF0ZTsKICAgIH0KCiAgICBz
dGF0aWMgQVJNNjRMb2dpY2FsSW1tZWRpYXRlIGNyZWF0ZTY0KHVpbnQ2NF90IHZhbHVlKQogICAg
ewoKICAgICAgICBpZiAoIXZhbHVlIHx8ICF+dmFsdWUpCiAgICAgICAgICAgIHJldHVybiBJbnZh
bGlkTG9naWNhbEltbWVkaWF0ZTsKCgogICAgICAgIHVuc2lnbmVkIGhzYiwgbHNiOwogICAgICAg
IGJvb2wgaW52ZXJ0ZWQ7CiAgICAgICAgaWYgKGZpbmRCaXRSYW5nZTw2ND4odmFsdWUsIGhzYiwg
bHNiLCBpbnZlcnRlZCkpCiAgICAgICAgICAgIHJldHVybiBlbmNvZGVMb2dpY2FsSW1tZWRpYXRl
PDY0Pihoc2IsIGxzYiwgaW52ZXJ0ZWQpOwoKCiAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQz
Ml90Pih2YWx1ZSkgPT0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlID4+IDMyKSkKICAgICAg
ICAgICAgcmV0dXJuIGNyZWF0ZTMyKHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkpOwogICAg
ICAgIHJldHVybiBJbnZhbGlkTG9naWNhbEltbWVkaWF0ZTsKICAgIH0KCiAgICBpbnQgdmFsdWUo
KSBjb25zdAogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gbV92YWx1ZTsK
ICAgIH0KCiAgICBib29sIGlzVmFsaWQoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX3Zh
bHVlICE9IEludmFsaWRMb2dpY2FsSW1tZWRpYXRlOwogICAgfQoKICAgIGJvb2wgaXM2NGJpdCgp
IGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fdmFsdWUgJiAoMSA8PCAxMik7CiAgICB9Cgpw
cml2YXRlOgogICAgQVJNNjRMb2dpY2FsSW1tZWRpYXRlKGludCB2YWx1ZSkKICAgICAgICA6IG1f
dmFsdWUodmFsdWUpCiAgICB7CiAgICB9CgoKCgoKICAgIHN0YXRpYyB1aW50NjRfdCBtYXNrKHVu
c2lnbmVkIGhzYikKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIDB4ZmZm
ZmZmZmZmZmZmZmZmZnVsbCA+PiAoNjMgLSBoc2IpOwogICAgfQoKICAgIHRlbXBsYXRlPHVuc2ln
bmVkIE4+CiAgICBzdGF0aWMgdm9pZCBwYXJ0aWFsSFNCKHVpbnQ2NF90JiB2YWx1ZSwgdW5zaWdu
ZWQmcmVzdWx0KQogICAgewogICAgICAgIGlmICh2YWx1ZSAmICgweGZmZmZmZmZmZmZmZmZmZmZ1
bGwgPDwgTikpIHsKICAgICAgICAgICAgcmVzdWx0ICs9IE47CiAgICAgICAgICAgIHZhbHVlID4+
PSBOOwogICAgICAgIH0KICAgIH0KCgoKCgogICAgc3RhdGljIHVuc2lnbmVkIGhpZ2hlc3RTZXRC
aXQodWludDY0X3QgdmFsdWUpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHVuc2ln
bmVkIGhzYiA9IDA7CiAgICAgICAgcGFydGlhbEhTQjwzMj4odmFsdWUsIGhzYik7CiAgICAgICAg
cGFydGlhbEhTQjwxNj4odmFsdWUsIGhzYik7CiAgICAgICAgcGFydGlhbEhTQjw4Pih2YWx1ZSwg
aHNiKTsKICAgICAgICBwYXJ0aWFsSFNCPDQ+KHZhbHVlLCBoc2IpOwogICAgICAgIHBhcnRpYWxI
U0I8Mj4odmFsdWUsIGhzYik7CiAgICAgICAgcGFydGlhbEhTQjwxPih2YWx1ZSwgaHNiKTsKICAg
ICAgICByZXR1cm4gaHNiOwogICAgfQojIDIwMyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9Bc3NlbWJsZXJDb21tb24uaCIKICAgIHRlbXBsYXRlPHVuc2lnbmVkIHdpZHRo
PgogICAgc3RhdGljIGJvb2wgZmluZEJpdFJhbmdlKHVpbnQ2NF90IHZhbHVlLCB1bnNpZ25lZCYg
aHNiLCB1bnNpZ25lZCYgbHNiLCBib29sJiBpbnZlcnRlZCkKICAgIHsKICAgICAgICAoKHZvaWQp
MCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCgoKICAgICAgICBjb25z
dCB1aW50NjRfdCBtc2IgPSAxdWxsIDw8ICh3aWR0aCAtIDEpOwogICAgICAgIGlmICgoaW52ZXJ0
ZWQgPSAodmFsdWUgJiBtc2IpKSkKICAgICAgICAgICAgdmFsdWUgXj0gbWFzayh3aWR0aCAtIDEp
OwoKCgogICAgICAgIGhzYiA9IGhpZ2hlc3RTZXRCaXQodmFsdWUpOwogICAgICAgIHZhbHVlIF49
IG1hc2soaHNiKTsKICAgICAgICBpZiAoIXZhbHVlKSB7CgogICAgICAgICAgICBsc2IgPSAwOwog
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgoKICAgICAgICBsc2IgPSBoaWdoZXN0
U2V0Qml0KHZhbHVlKTsKICAgICAgICB2YWx1ZSBePSBtYXNrKGxzYik7CiAgICAgICAgaWYgKCF2
YWx1ZSkgewoKCiAgICAgICAgICAgICsrbHNiOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCgogICAgdGVtcGxhdGU8dW5zaWdu
ZWQgd2lkdGg+CiAgICBzdGF0aWMgaW50IGVuY29kZUxvZ2ljYWxJbW1lZGlhdGUodW5zaWduZWQg
aHNiLCB1bnNpZ25lZCBsc2IsIGJvb2wgaW52ZXJ0ZWQpCiAgICB7CgogICAgICAgICgodm9pZCkw
KTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkw
KTsKCiAgICAgICAgaW50IGltbU4gPSAwOwogICAgICAgIGludCBpbW1zID0gMDsKICAgICAgICBp
bnQgaW1tciA9IDA7CiMgMjYxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Fzc2VtYmxlckNvbW1vbi5oIgogICAgICAgIGlmICh3aWR0aCA9PSA2NCkKICAgICAgICAgICAg
aW1tTiA9IDE7CiAgICAgICAgZWxzZQogICAgICAgICAgICBpbW1zID0gNjMgJiB+KHdpZHRoICsg
d2lkdGggLSAxKTsKCiAgICAgICAgaWYgKGludmVydGVkKSB7CgoKCgogICAgICAgICAgICBpbW1y
ID0gKHdpZHRoIC0gMSkgLSBoc2I7CiAgICAgICAgICAgIGltbXMgfD0gKHdpZHRoIC0gKChoc2Ig
LSBsc2IpICsgMSkpIC0gMTsKICAgICAgICB9IGVsc2UgewoKCgoKCiAgICAgICAgICAgIGltbXIg
PSAod2lkdGggLSBsc2IpICYgKHdpZHRoIC0gMSk7CiAgICAgICAgICAgIGltbXMgfD0gaHNiIC0g
bHNiOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGltbU4gPDwgMTIgfCBpbW1yIDw8IDYgfCBp
bW1zOwogICAgfQoKICAgIHN0YXRpYyBjb25zdCBpbnQgSW52YWxpZExvZ2ljYWxJbW1lZGlhdGUg
PSAtMTsKCiAgICBpbnQgbV92YWx1ZTsKfTsKCgp9CiMgMzQgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaCIgMgojIDEgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9s
aWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjkuMy9pbmNsdWRlLWZpeGVkL2xpbWl0
cy5oIiAxIDMgNAojIDM1ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FS
TXY3QXNzZW1ibGVyLmgiIDIKCgoKCm5hbWVzcGFjZSBKU0MgewoKbmFtZXNwYWNlIEFSTVJlZ2lz
dGVycyB7CgojZGVmaW5lIEZPUl9FQUNIX0NQVV9SRUdJU1RFUihWKSBGT1JfRUFDSF9DUFVfR1BS
RUdJU1RFUihWKSBGT1JfRUFDSF9DUFVfU1BFQ0lBTF9SRUdJU1RFUihWKSBGT1JfRUFDSF9DUFVf
RlBSRUdJU1RFUihWKQoKCgoKCgoKI2RlZmluZSBGT1JfRUFDSF9DUFVfR1BSRUdJU1RFUihWKSBW
KHZvaWQqLCByMCkgVih2b2lkKiwgcjEpIFYodm9pZCosIHIyKSBWKHZvaWQqLCByMykgVih2b2lk
KiwgcjQpIFYodm9pZCosIHI1KSBWKHZvaWQqLCByNikgVih2b2lkKiwgcjcpIFYodm9pZCosIHI4
KSBWKHZvaWQqLCByOSkgVih2b2lkKiwgcjEwKSBWKHZvaWQqLCByMTEpIFYodm9pZCosIGlwKSBW
KHZvaWQqLCBzcCkgVih2b2lkKiwgbHIpIFYodm9pZCosIHBjKQojIDY5ICIuLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgiCiNkZWZpbmUgRk9SX0VB
Q0hfQ1BVX1NQRUNJQUxfUkVHSVNURVIoVikgVih2b2lkKiwgYXBzcikgVih2b2lkKiwgZnBzY3Ip
CgoKCiNkZWZpbmUgRk9SX0VBQ0hfQ1BVX0ZQUkVHSVNURVIoVikgVihkb3VibGUsIGQwKSBWKGRv
dWJsZSwgZDEpIFYoZG91YmxlLCBkMikgVihkb3VibGUsIGQzKSBWKGRvdWJsZSwgZDQpIFYoZG91
YmxlLCBkNSkgVihkb3VibGUsIGQ2KSBWKGRvdWJsZSwgZDcpIFYoZG91YmxlLCBkOCkgVihkb3Vi
bGUsIGQ5KSBWKGRvdWJsZSwgZDEwKSBWKGRvdWJsZSwgZDExKSBWKGRvdWJsZSwgZDEyKSBWKGRv
dWJsZSwgZDEzKSBWKGRvdWJsZSwgZDE0KSBWKGRvdWJsZSwgZDE1KSBWKGRvdWJsZSwgZDE2KSBW
KGRvdWJsZSwgZDE3KSBWKGRvdWJsZSwgZDE4KSBWKGRvdWJsZSwgZDE5KSBWKGRvdWJsZSwgZDIw
KSBWKGRvdWJsZSwgZDIxKSBWKGRvdWJsZSwgZDIyKSBWKGRvdWJsZSwgZDIzKSBWKGRvdWJsZSwg
ZDI0KSBWKGRvdWJsZSwgZDI1KSBWKGRvdWJsZSwgZDI2KSBWKGRvdWJsZSwgZDI3KSBWKGRvdWJs
ZSwgZDI4KSBWKGRvdWJsZSwgZDI5KSBWKGRvdWJsZSwgZDMwKSBWKGRvdWJsZSwgZDMxKQojIDEw
NyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5o
IgogICAgdHlwZWRlZiBlbnVtIHsKI2RlZmluZSBERUNMQVJFX1JFR0lTVEVSKF90eXBlLF9yZWdO
YW1lKSBfcmVnTmFtZSwKICAgICAgICByMCwgcjEsIHIyLCByMywgcjQsIHI1LCByNiwgcjcsIHI4
LCByOSwgcjEwLCByMTEsIGlwLCBzcCwgbHIsIHBjLAojdW5kZWYgREVDTEFSRV9SRUdJU1RFUgoK
ICAgICAgICBmcCA9IHI3LAogICAgICAgIHNiID0gcjksCiAgICAgICAgc2wgPSByMTAsCiAgICAg
ICAgcjEyID0gaXAsCiAgICAgICAgcjEzID0gc3AsCiAgICAgICAgcjE0ID0gbHIsCiAgICAgICAg
cjE1ID0gcGMKICAgIH0gUmVnaXN0ZXJJRDsKCiAgICB0eXBlZGVmIGVudW0gewogICAgICAgIHMw
LAogICAgICAgIHMxLAogICAgICAgIHMyLAogICAgICAgIHMzLAogICAgICAgIHM0LAogICAgICAg
IHM1LAogICAgICAgIHM2LAogICAgICAgIHM3LAogICAgICAgIHM4LAogICAgICAgIHM5LAogICAg
ICAgIHMxMCwKICAgICAgICBzMTEsCiAgICAgICAgczEyLAogICAgICAgIHMxMywKICAgICAgICBz
MTQsCiAgICAgICAgczE1LAogICAgICAgIHMxNiwKICAgICAgICBzMTcsCiAgICAgICAgczE4LAog
ICAgICAgIHMxOSwKICAgICAgICBzMjAsCiAgICAgICAgczIxLAogICAgICAgIHMyMiwKICAgICAg
ICBzMjMsCiAgICAgICAgczI0LAogICAgICAgIHMyNSwKICAgICAgICBzMjYsCiAgICAgICAgczI3
LAogICAgICAgIHMyOCwKICAgICAgICBzMjksCiAgICAgICAgczMwLAogICAgICAgIHMzMSwKICAg
IH0gRlBTaW5nbGVSZWdpc3RlcklEOwoKICAgIHR5cGVkZWYgZW51bSB7CiNkZWZpbmUgREVDTEFS
RV9SRUdJU1RFUihfdHlwZSxfcmVnTmFtZSkgX3JlZ05hbWUsCiAgICAgICAgZDAsIGQxLCBkMiwg
ZDMsIGQ0LCBkNSwgZDYsIGQ3LCBkOCwgZDksIGQxMCwgZDExLCBkMTIsIGQxMywgZDE0LCBkMTUs
IGQxNiwgZDE3LCBkMTgsIGQxOSwgZDIwLCBkMjEsIGQyMiwgZDIzLCBkMjQsIGQyNSwgZDI2LCBk
MjcsIGQyOCwgZDI5LCBkMzAsIGQzMSwKI3VuZGVmIERFQ0xBUkVfUkVHSVNURVIKICAgIH0gRlBE
b3VibGVSZWdpc3RlcklEOwoKICAgIHR5cGVkZWYgZW51bSB7CiAgICAgICAgcTAsCiAgICAgICAg
cTEsCiAgICAgICAgcTIsCiAgICAgICAgcTMsCiAgICAgICAgcTQsCiAgICAgICAgcTUsCiAgICAg
ICAgcTYsCiAgICAgICAgcTcsCiAgICAgICAgcTgsCiAgICAgICAgcTksCiAgICAgICAgcTEwLAog
ICAgICAgIHExMSwKICAgICAgICBxMTIsCiAgICAgICAgcTEzLAogICAgICAgIHExNCwKICAgICAg
ICBxMTUsCiAgICAgICAgcTE2LAogICAgICAgIHExNywKICAgICAgICBxMTgsCiAgICAgICAgcTE5
LAogICAgICAgIHEyMCwKICAgICAgICBxMjEsCiAgICAgICAgcTIyLAogICAgICAgIHEyMywKICAg
ICAgICBxMjQsCiAgICAgICAgcTI1LAogICAgICAgIHEyNiwKICAgICAgICBxMjcsCiAgICAgICAg
cTI4LAogICAgICAgIHEyOSwKICAgICAgICBxMzAsCiAgICAgICAgcTMxLAogICAgfSBGUFF1YWRS
ZWdpc3RlcklEOwoKICAgIGlubGluZSBGUFNpbmdsZVJlZ2lzdGVySUQgYXNTaW5nbGUoRlBEb3Vi
bGVSZWdpc3RlcklEIHJlZykKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJu
IChGUFNpbmdsZVJlZ2lzdGVySUQpKHJlZyA8PCAxKTsKICAgIH0KCiAgICBpbmxpbmUgRlBEb3Vi
bGVSZWdpc3RlcklEIGFzRG91YmxlKEZQU2luZ2xlUmVnaXN0ZXJJRCByZWcpCiAgICB7CiAgICAg
ICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiAoRlBEb3VibGVSZWdpc3RlcklEKShyZWcgPj4g
MSk7CiAgICB9Cgp9CgpjbGFzcyBBUk12N0Fzc2VtYmxlcjsKY2xhc3MgQVJNVGh1bWJJbW1lZGlh
dGUgewogICAgZnJpZW5kIGNsYXNzIEFSTXY3QXNzZW1ibGVyOwoKICAgIHR5cGVkZWYgdWludDhf
dCBUaHVtYkltbWVkaWF0ZVR5cGU7CiAgICBzdGF0aWMgY29uc3QgVGh1bWJJbW1lZGlhdGVUeXBl
IFR5cGVJbnZhbGlkID0gMDsKICAgIHN0YXRpYyBjb25zdCBUaHVtYkltbWVkaWF0ZVR5cGUgVHlw
ZUVuY29kZWQgPSAxOwogICAgc3RhdGljIGNvbnN0IFRodW1iSW1tZWRpYXRlVHlwZSBUeXBlVUlu
dDE2ID0gMjsKCiAgICB0eXBlZGVmIHVuaW9uIHsKICAgICAgICBpbnQxNl90IGFzSW50OwogICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgIHVuc2lnbmVkIGltbTggOiA4OwogICAgICAgICAgICB1
bnNpZ25lZCBpbW0zIDogMzsKICAgICAgICAgICAgdW5zaWduZWQgaSA6IDE7CiAgICAgICAgICAg
IHVuc2lnbmVkIGltbTQgOiA0OwogICAgICAgIH07CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgIHVuc2lnbmVkIHNoaWZ0VmFsdWU3IDogNzsKICAgICAgICAgICAgdW5zaWduZWQgc2hpZnRB
bW91bnQgOiA1OwogICAgICAgIH07CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgdW5zaWdu
ZWQgaW1tZWRpYXRlIDogODsKICAgICAgICAgICAgdW5zaWduZWQgcGF0dGVybiA6IDQ7CiAgICAg
ICAgfTsKICAgIH0gVGh1bWJJbW1lZGlhdGVWYWx1ZTsKCgogICAgdHlwZWRlZiB1bmlvbiB7CiAg
ICAgICAgaW50MzJfdCBhc0ludDsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICB1aW50OF90
IGJ5dGUwOwogICAgICAgICAgICB1aW50OF90IGJ5dGUxOwogICAgICAgICAgICB1aW50OF90IGJ5
dGUyOwogICAgICAgICAgICB1aW50OF90IGJ5dGUzOwogICAgICAgIH07CiAgICB9IFBhdHRlcm5C
eXRlczsKCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0
aWMgdm9pZCBjb3VudExlYWRpbmdaZXJvc1BhcnRpYWwodWludDMyX3QmIHZhbHVlLCBpbnQzMl90
JiB6ZXJvcywgY29uc3QgaW50IE4pCiAgICB7CiAgICAgICAgaWYgKHZhbHVlICYgfigoMSA8PCBO
KSAtIDEpKQogICAgICAgICAgICB2YWx1ZSA+Pj0gTjsKICAgICAgICBlbHNlCiAgICAgICAgICAg
IHplcm9zICs9IE47CiAgICB9CgogICAgc3RhdGljIGludDMyX3QgY291bnRMZWFkaW5nWmVyb3Mo
dWludDMyX3QgdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgcmV0
dXJuIDMyOwoKICAgICAgICBpbnQzMl90IHplcm9zID0gMDsKICAgICAgICBjb3VudExlYWRpbmda
ZXJvc1BhcnRpYWwodmFsdWUsIHplcm9zLCAxNik7CiAgICAgICAgY291bnRMZWFkaW5nWmVyb3NQ
YXJ0aWFsKHZhbHVlLCB6ZXJvcywgOCk7CiAgICAgICAgY291bnRMZWFkaW5nWmVyb3NQYXJ0aWFs
KHZhbHVlLCB6ZXJvcywgNCk7CiAgICAgICAgY291bnRMZWFkaW5nWmVyb3NQYXJ0aWFsKHZhbHVl
LCB6ZXJvcywgMik7CiAgICAgICAgY291bnRMZWFkaW5nWmVyb3NQYXJ0aWFsKHZhbHVlLCB6ZXJv
cywgMSk7CiAgICAgICAgcmV0dXJuIHplcm9zOwogICAgfQoKICAgIEFSTVRodW1iSW1tZWRpYXRl
KCkKICAgICAgICA6IG1fdHlwZShUeXBlSW52YWxpZCkKICAgIHsKICAgICAgICBtX3ZhbHVlLmFz
SW50ID0gMDsKICAgIH0KCiAgICBBUk1UaHVtYkltbWVkaWF0ZShUaHVtYkltbWVkaWF0ZVR5cGUg
dHlwZSwgVGh1bWJJbW1lZGlhdGVWYWx1ZSB2YWx1ZSkKICAgICAgICA6IG1fdHlwZSh0eXBlKQog
ICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgIHsKICAgIH0KCiAgICBBUk1UaHVtYkltbWVkaWF0
ZShUaHVtYkltbWVkaWF0ZVR5cGUgdHlwZSwgdWludDE2X3QgdmFsdWUpCiAgICAgICAgOiBtX3R5
cGUoVHlwZVVJbnQxNikKICAgIHsKCgoKICAgICAgICAoKHZvaWQpdHlwZSk7CgogICAgICAgIG1f
dmFsdWUuYXNJbnQgPSB2YWx1ZTsKICAgIH0KCnB1YmxpYzoKICAgIHN0YXRpYyBBUk1UaHVtYklt
bWVkaWF0ZSBtYWtlRW5jb2RlZEltbSh1aW50MzJfdCB2YWx1ZSkKICAgIHsKICAgICAgICBUaHVt
YkltbWVkaWF0ZVZhbHVlIGVuY29kaW5nOwogICAgICAgIGVuY29kaW5nLmFzSW50ID0gMDsKCgog
ICAgICAgIGlmICh2YWx1ZSA8IDI1NikgewogICAgICAgICAgICBlbmNvZGluZy5pbW1lZGlhdGUg
PSB2YWx1ZTsKICAgICAgICAgICAgZW5jb2RpbmcucGF0dGVybiA9IDA7CiAgICAgICAgICAgIHJl
dHVybiBBUk1UaHVtYkltbWVkaWF0ZShUeXBlRW5jb2RlZCwgZW5jb2RpbmcpOwogICAgICAgIH0K
CiAgICAgICAgaW50MzJfdCBsZWFkaW5nWmVyb3MgPSBjb3VudExlYWRpbmdaZXJvcyh2YWx1ZSk7
CgogICAgICAgICgodm9pZCkwKTsKCgoKCiAgICAgICAgaW50MzJfdCByaWdodFNoaWZ0QW1vdW50
ID0gMjQgLSBsZWFkaW5nWmVyb3M7CiAgICAgICAgaWYgKHZhbHVlID09ICgodmFsdWUgPj4gcmln
aHRTaGlmdEFtb3VudCkgPDwgcmlnaHRTaGlmdEFtb3VudCkpIHsKCgogICAgICAgICAgICBlbmNv
ZGluZy5zaGlmdFZhbHVlNyA9IHZhbHVlID4+IHJpZ2h0U2hpZnRBbW91bnQ7CgogICAgICAgICAg
ICBlbmNvZGluZy5zaGlmdEFtb3VudCA9IDggKyBsZWFkaW5nWmVyb3M7CiAgICAgICAgICAgIHJl
dHVybiBBUk1UaHVtYkltbWVkaWF0ZShUeXBlRW5jb2RlZCwgZW5jb2RpbmcpOwogICAgICAgIH0K
CiAgICAgICAgUGF0dGVybkJ5dGVzIGJ5dGVzOwogICAgICAgIGJ5dGVzLmFzSW50ID0gdmFsdWU7
CgogICAgICAgIGlmICgoYnl0ZXMuYnl0ZTAgPT0gYnl0ZXMuYnl0ZTEpICYmIChieXRlcy5ieXRl
MCA9PSBieXRlcy5ieXRlMikgJiYgKGJ5dGVzLmJ5dGUwID09IGJ5dGVzLmJ5dGUzKSkgewogICAg
ICAgICAgICBlbmNvZGluZy5pbW1lZGlhdGUgPSBieXRlcy5ieXRlMDsKICAgICAgICAgICAgZW5j
b2RpbmcucGF0dGVybiA9IDM7CiAgICAgICAgICAgIHJldHVybiBBUk1UaHVtYkltbWVkaWF0ZShU
eXBlRW5jb2RlZCwgZW5jb2RpbmcpOwogICAgICAgIH0KCiAgICAgICAgaWYgKChieXRlcy5ieXRl
MCA9PSBieXRlcy5ieXRlMikgJiYgIShieXRlcy5ieXRlMSB8IGJ5dGVzLmJ5dGUzKSkgewogICAg
ICAgICAgICBlbmNvZGluZy5pbW1lZGlhdGUgPSBieXRlcy5ieXRlMDsKICAgICAgICAgICAgZW5j
b2RpbmcucGF0dGVybiA9IDE7CiAgICAgICAgICAgIHJldHVybiBBUk1UaHVtYkltbWVkaWF0ZShU
eXBlRW5jb2RlZCwgZW5jb2RpbmcpOwogICAgICAgIH0KCiAgICAgICAgaWYgKChieXRlcy5ieXRl
MSA9PSBieXRlcy5ieXRlMykgJiYgIShieXRlcy5ieXRlMCB8IGJ5dGVzLmJ5dGUyKSkgewogICAg
ICAgICAgICBlbmNvZGluZy5pbW1lZGlhdGUgPSBieXRlcy5ieXRlMTsKICAgICAgICAgICAgZW5j
b2RpbmcucGF0dGVybiA9IDI7CiAgICAgICAgICAgIHJldHVybiBBUk1UaHVtYkltbWVkaWF0ZShU
eXBlRW5jb2RlZCwgZW5jb2RpbmcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIEFSTVRodW1i
SW1tZWRpYXRlKCk7CiAgICB9CgogICAgc3RhdGljIEFSTVRodW1iSW1tZWRpYXRlIG1ha2VVSW50
MTIoaW50MzJfdCB2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gKCEodmFsdWUgJiAweGZmZmZm
MDAwKSkKICAgICAgICAgICAgPyBBUk1UaHVtYkltbWVkaWF0ZShUeXBlVUludDE2LCAodWludDE2
X3QpdmFsdWUpCiAgICAgICAgICAgIDogQVJNVGh1bWJJbW1lZGlhdGUoKTsKICAgIH0KCiAgICBz
dGF0aWMgQVJNVGh1bWJJbW1lZGlhdGUgbWFrZVVJbnQxMk9yRW5jb2RlZEltbShpbnQzMl90IHZh
bHVlKQogICAgewoKICAgICAgICByZXR1cm4gKCEodmFsdWUgJiAweGZmZmZmMDAwKSkKICAgICAg
ICAgICAgPyBBUk1UaHVtYkltbWVkaWF0ZShUeXBlVUludDE2LCAodWludDE2X3QpdmFsdWUpCiAg
ICAgICAgICAgIDogbWFrZUVuY29kZWRJbW0odmFsdWUpOwogICAgfQoKCgoKICAgIHN0YXRpYyBB
Uk1UaHVtYkltbWVkaWF0ZSBtYWtlVUludDE2KHVpbnQxNl90IHZhbHVlKQogICAgewogICAgICAg
IHJldHVybiBBUk1UaHVtYkltbWVkaWF0ZShUeXBlVUludDE2LCB2YWx1ZSk7CiAgICB9CgogICAg
Ym9vbCBpc1ZhbGlkKCkKICAgIHsKICAgICAgICByZXR1cm4gbV90eXBlICE9IFR5cGVJbnZhbGlk
OwogICAgfQoKICAgIHVpbnQxNl90IGFzVUludDE2KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5h
c0ludDsgfQoKCiAgICBib29sIGlzVUludDMoKSB7IHJldHVybiAhKG1fdmFsdWUuYXNJbnQgJiAw
eGZmZjgpOyB9CiAgICBib29sIGlzVUludDQoKSB7IHJldHVybiAhKG1fdmFsdWUuYXNJbnQgJiAw
eGZmZjApOyB9CiAgICBib29sIGlzVUludDUoKSB7IHJldHVybiAhKG1fdmFsdWUuYXNJbnQgJiAw
eGZmZTApOyB9CiAgICBib29sIGlzVUludDYoKSB7IHJldHVybiAhKG1fdmFsdWUuYXNJbnQgJiAw
eGZmYzApOyB9CiAgICBib29sIGlzVUludDcoKSB7IHJldHVybiAhKG1fdmFsdWUuYXNJbnQgJiAw
eGZmODApOyB9CiAgICBib29sIGlzVUludDgoKSB7IHJldHVybiAhKG1fdmFsdWUuYXNJbnQgJiAw
eGZmMDApOyB9CiAgICBib29sIGlzVUludDkoKSB7IHJldHVybiAobV90eXBlID09IFR5cGVVSW50
MTYpICYmICEobV92YWx1ZS5hc0ludCAmIDB4ZmUwMCk7IH0KICAgIGJvb2wgaXNVSW50MTAoKSB7
IHJldHVybiAobV90eXBlID09IFR5cGVVSW50MTYpICYmICEobV92YWx1ZS5hc0ludCAmIDB4ZmMw
MCk7IH0KICAgIGJvb2wgaXNVSW50MTIoKSB7IHJldHVybiAobV90eXBlID09IFR5cGVVSW50MTYp
ICYmICEobV92YWx1ZS5hc0ludCAmIDB4ZjAwMCk7IH0KICAgIGJvb2wgaXNVSW50MTYoKSB7IHJl
dHVybiBtX3R5cGUgPT0gVHlwZVVJbnQxNjsgfQogICAgdWludDhfdCBnZXRVSW50MygpIHsgKCh2
b2lkKTApOyByZXR1cm4gbV92YWx1ZS5hc0ludDsgfQogICAgdWludDhfdCBnZXRVSW50NCgpIHsg
KCh2b2lkKTApOyByZXR1cm4gbV92YWx1ZS5hc0ludDsgfQogICAgdWludDhfdCBnZXRVSW50NSgp
IHsgKCh2b2lkKTApOyByZXR1cm4gbV92YWx1ZS5hc0ludDsgfQogICAgdWludDhfdCBnZXRVSW50
NigpIHsgKCh2b2lkKTApOyByZXR1cm4gbV92YWx1ZS5hc0ludDsgfQogICAgdWludDhfdCBnZXRV
SW50NygpIHsgKCh2b2lkKTApOyByZXR1cm4gbV92YWx1ZS5hc0ludDsgfQogICAgdWludDhfdCBn
ZXRVSW50OCgpIHsgKCh2b2lkKTApOyByZXR1cm4gbV92YWx1ZS5hc0ludDsgfQogICAgdWludDE2
X3QgZ2V0VUludDkoKSB7ICgodm9pZCkwKTsgcmV0dXJuIG1fdmFsdWUuYXNJbnQ7IH0KICAgIHVp
bnQxNl90IGdldFVJbnQxMCgpIHsgKCh2b2lkKTApOyByZXR1cm4gbV92YWx1ZS5hc0ludDsgfQog
ICAgdWludDE2X3QgZ2V0VUludDEyKCkgeyAoKHZvaWQpMCk7IHJldHVybiBtX3ZhbHVlLmFzSW50
OyB9CiAgICB1aW50MTZfdCBnZXRVSW50MTYoKSB7ICgodm9pZCkwKTsgcmV0dXJuIG1fdmFsdWUu
YXNJbnQ7IH0KCiAgICBib29sIGlzRW5jb2RlZEltbSgpIHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBl
RW5jb2RlZDsgfQoKcHJpdmF0ZToKICAgIFRodW1iSW1tZWRpYXRlVHlwZSBtX3R5cGU7CiAgICBU
aHVtYkltbWVkaWF0ZVZhbHVlIG1fdmFsdWU7Cn07Cgp0eXBlZGVmIGVudW0gewogICAgU1JUeXBl
X0xTTCwKICAgIFNSVHlwZV9MU1IsCiAgICBTUlR5cGVfQVNSLAogICAgU1JUeXBlX1JPUiwKCiAg
ICBTUlR5cGVfUlJYID0gU1JUeXBlX1JPUgp9IEFSTVNoaWZ0VHlwZTsKCmNsYXNzIFNoaWZ0VHlw
ZUFuZEFtb3VudCB7CiAgICBmcmllbmQgY2xhc3MgQVJNdjdBc3NlbWJsZXI7CgpwdWJsaWM6CiAg
ICBTaGlmdFR5cGVBbmRBbW91bnQoKQogICAgewogICAgICAgIG1fdS50eXBlID0gKEFSTVNoaWZ0
VHlwZSkwOwogICAgICAgIG1fdS5hbW91bnQgPSAwOwogICAgfQoKICAgIFNoaWZ0VHlwZUFuZEFt
b3VudChBUk1TaGlmdFR5cGUgdHlwZSwgdW5zaWduZWQgYW1vdW50KQogICAgewogICAgICAgIG1f
dS50eXBlID0gdHlwZTsKICAgICAgICBtX3UuYW1vdW50ID0gYW1vdW50ICYgMzE7CiAgICB9Cgog
ICAgdW5zaWduZWQgbG80KCkgeyByZXR1cm4gbV91LmxvNDsgfQogICAgdW5zaWduZWQgaGk0KCkg
eyByZXR1cm4gbV91LmhpNDsgfQoKcHJpdmF0ZToKICAgIHVuaW9uIHsKICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICB1bnNpZ25lZCBsbzQgOiA0OwogICAgICAgICAgICB1bnNpZ25lZCBoaTQg
OiA0OwogICAgICAgIH07CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgdW5zaWduZWQgdHlw
ZSA6IDI7CiAgICAgICAgICAgIHVuc2lnbmVkIGFtb3VudCA6IDY7CiAgICAgICAgfTsKICAgIH0g
bV91Owp9OwoKY2xhc3MgQVJNdjdBc3NlbWJsZXIgewpwdWJsaWM6CiAgICB0eXBlZGVmIEFSTVJl
Z2lzdGVyczo6UmVnaXN0ZXJJRCBSZWdpc3RlcklEOwogICAgdHlwZWRlZiBBUk1SZWdpc3RlcnM6
OkZQU2luZ2xlUmVnaXN0ZXJJRCBGUFNpbmdsZVJlZ2lzdGVySUQ7CiAgICB0eXBlZGVmIEFSTVJl
Z2lzdGVyczo6RlBEb3VibGVSZWdpc3RlcklEIEZQRG91YmxlUmVnaXN0ZXJJRDsKICAgIHR5cGVk
ZWYgQVJNUmVnaXN0ZXJzOjpGUFF1YWRSZWdpc3RlcklEIEZQUXVhZFJlZ2lzdGVySUQ7CiAgICB0
eXBlZGVmIEZQRG91YmxlUmVnaXN0ZXJJRCBGUFJlZ2lzdGVySUQ7CgogICAgc3RhdGljIGNvbnN0
ZXhwciBSZWdpc3RlcklEIGZpcnN0UmVnaXN0ZXIoKSB7IHJldHVybiBBUk1SZWdpc3RlcnM6OnIw
OyB9CiAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbGFzdFJlZ2lzdGVyKCkgeyByZXR1
cm4gQVJNUmVnaXN0ZXJzOjpyMTM7IH0KCiAgICBzdGF0aWMgY29uc3RleHByIEZQUmVnaXN0ZXJJ
RCBmaXJzdEZQUmVnaXN0ZXIoKSB7IHJldHVybiBBUk1SZWdpc3RlcnM6OmQwOyB9CiAgICBzdGF0
aWMgY29uc3RleHByIEZQUmVnaXN0ZXJJRCBsYXN0RlBSZWdpc3RlcigpIHsgcmV0dXJuIEFSTVJl
Z2lzdGVyczo6ZDMxOyB9CgoKCiAgICB0eXBlZGVmIGVudW0gewogICAgICAgIENvbmRpdGlvbkVR
LAogICAgICAgIENvbmRpdGlvbk5FLAogICAgICAgIENvbmRpdGlvbkhTLCBDb25kaXRpb25DUyA9
IENvbmRpdGlvbkhTLAogICAgICAgIENvbmRpdGlvbkxPLCBDb25kaXRpb25DQyA9IENvbmRpdGlv
bkxPLAogICAgICAgIENvbmRpdGlvbk1JLAogICAgICAgIENvbmRpdGlvblBMLAogICAgICAgIENv
bmRpdGlvblZTLAogICAgICAgIENvbmRpdGlvblZDLAogICAgICAgIENvbmRpdGlvbkhJLAogICAg
ICAgIENvbmRpdGlvbkxTLAogICAgICAgIENvbmRpdGlvbkdFLAogICAgICAgIENvbmRpdGlvbkxU
LAogICAgICAgIENvbmRpdGlvbkdULAogICAgICAgIENvbmRpdGlvbkxFLAogICAgICAgIENvbmRp
dGlvbkFMLAogICAgICAgIENvbmRpdGlvbkludmFsaWQKICAgIH0gQ29uZGl0aW9uOwoKI2RlZmlu
ZSBKVU1QX0VOVU1fV0lUSF9TSVpFKGluZGV4LHZhbHVlKSAoKCh2YWx1ZSkgPDwgMykgfCAoaW5k
ZXgpKQojZGVmaW5lIEpVTVBfRU5VTV9TSVpFKGp1bXApICgoanVtcCkgPj4gMykKICAgIGVudW0g
SnVtcFR5cGUgeyBKdW1wRml4ZWQgPSAoKCgwKSA8PCAzKSB8ICgwKSksCiAgICAgICAgICAgICAg
ICAgICAgSnVtcE5vQ29uZGl0aW9uID0gKCgoNSAqIHNpemVvZih1aW50MTZfdCkpIDw8IDMpIHwg
KDEpKSwKICAgICAgICAgICAgICAgICAgICBKdW1wQ29uZGl0aW9uID0gKCgoNiAqIHNpemVvZih1
aW50MTZfdCkpIDw8IDMpIHwgKDIpKSwKICAgICAgICAgICAgICAgICAgICBKdW1wTm9Db25kaXRp
b25GaXhlZFNpemUgPSAoKCg1ICogc2l6ZW9mKHVpbnQxNl90KSkgPDwgMykgfCAoMykpLAogICAg
ICAgICAgICAgICAgICAgIEp1bXBDb25kaXRpb25GaXhlZFNpemUgPSAoKCg2ICogc2l6ZW9mKHVp
bnQxNl90KSkgPDwgMykgfCAoNCkpCiAgICB9OwogICAgZW51bSBKdW1wTGlua1R5cGUgewogICAg
ICAgIExpbmtJbnZhbGlkID0gKCgoMCkgPDwgMykgfCAoMCkpLAogICAgICAgIExpbmtKdW1wVDEg
PSAoKChzaXplb2YodWludDE2X3QpKSA8PCAzKSB8ICgxKSksCiAgICAgICAgTGlua0p1bXBUMiA9
ICgoKHNpemVvZih1aW50MTZfdCkpIDw8IDMpIHwgKDIpKSwKICAgICAgICBMaW5rSnVtcFQzID0g
KCgoMiAqIHNpemVvZih1aW50MTZfdCkpIDw8IDMpIHwgKDMpKSwKICAgICAgICBMaW5rSnVtcFQ0
ID0gKCgoMiAqIHNpemVvZih1aW50MTZfdCkpIDw8IDMpIHwgKDQpKSwKICAgICAgICBMaW5rQ29u
ZGl0aW9uYWxKdW1wVDQgPSAoKCgzICogc2l6ZW9mKHVpbnQxNl90KSkgPDwgMykgfCAoNSkpLAog
ICAgICAgIExpbmtCWCA9ICgoKDUgKiBzaXplb2YodWludDE2X3QpKSA8PCAzKSB8ICg2KSksCiAg
ICAgICAgTGlua0NvbmRpdGlvbmFsQlggPSAoKCg2ICogc2l6ZW9mKHVpbnQxNl90KSkgPDwgMykg
fCAoNykpCiAgICB9OwoKICAgIGNsYXNzIExpbmtSZWNvcmQgewogICAgcHVibGljOgogICAgICAg
IExpbmtSZWNvcmQoaW50cHRyX3QgZnJvbSwgaW50cHRyX3QgdG8sIEp1bXBUeXBlIHR5cGUsIENv
bmRpdGlvbiBjb25kaXRpb24pCiAgICAgICAgewogICAgICAgICAgICBkYXRhLnJlYWxUeXBlcy5t
X2Zyb20gPSBmcm9tOwogICAgICAgICAgICBkYXRhLnJlYWxUeXBlcy5tX3RvID0gdG87CiAgICAg
ICAgICAgIGRhdGEucmVhbFR5cGVzLm1fdHlwZSA9IHR5cGU7CiAgICAgICAgICAgIGRhdGEucmVh
bFR5cGVzLm1fbGlua1R5cGUgPSBMaW5rSW52YWxpZDsKICAgICAgICAgICAgZGF0YS5yZWFsVHlw
ZXMubV9jb25kaXRpb24gPSBjb25kaXRpb247CiAgICAgICAgfQogICAgICAgIHZvaWQgb3BlcmF0
b3I9KGNvbnN0IExpbmtSZWNvcmQmIG90aGVyKQogICAgICAgIHsKICAgICAgICAgICAgZGF0YS5j
b3B5VHlwZXMuY29udGVudFswXSA9IG90aGVyLmRhdGEuY29weVR5cGVzLmNvbnRlbnRbMF07CiAg
ICAgICAgICAgIGRhdGEuY29weVR5cGVzLmNvbnRlbnRbMV0gPSBvdGhlci5kYXRhLmNvcHlUeXBl
cy5jb250ZW50WzFdOwogICAgICAgICAgICBkYXRhLmNvcHlUeXBlcy5jb250ZW50WzJdID0gb3Ro
ZXIuZGF0YS5jb3B5VHlwZXMuY29udGVudFsyXTsKICAgICAgICB9CiAgICAgICAgaW50cHRyX3Qg
ZnJvbSgpIGNvbnN0IHsgcmV0dXJuIGRhdGEucmVhbFR5cGVzLm1fZnJvbTsgfQogICAgICAgIHZv
aWQgc2V0RnJvbShpbnRwdHJfdCBmcm9tKSB7IGRhdGEucmVhbFR5cGVzLm1fZnJvbSA9IGZyb207
IH0KICAgICAgICBpbnRwdHJfdCB0bygpIGNvbnN0IHsgcmV0dXJuIGRhdGEucmVhbFR5cGVzLm1f
dG87IH0KICAgICAgICBKdW1wVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gZGF0YS5yZWFsVHlw
ZXMubV90eXBlOyB9CiAgICAgICAgSnVtcExpbmtUeXBlIGxpbmtUeXBlKCkgY29uc3QgeyByZXR1
cm4gZGF0YS5yZWFsVHlwZXMubV9saW5rVHlwZTsgfQogICAgICAgIHZvaWQgc2V0TGlua1R5cGUo
SnVtcExpbmtUeXBlIGxpbmtUeXBlKSB7ICgodm9pZCkwKTsgZGF0YS5yZWFsVHlwZXMubV9saW5r
VHlwZSA9IGxpbmtUeXBlOyB9CiAgICAgICAgQ29uZGl0aW9uIGNvbmRpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIGRhdGEucmVhbFR5cGVzLm1fY29uZGl0aW9uOyB9CiAgICBwcml2YXRlOgogICAgICAg
IHVuaW9uIHsKICAgICAgICAgICAgc3RydWN0IFJlYWxUeXBlcyB7CiAgICAgICAgICAgICAgICBp
bnRwdHJfdCBtX2Zyb20gOiAzMTsKICAgICAgICAgICAgICAgIGludHB0cl90IG1fdG8gOiAzMTsK
ICAgICAgICAgICAgICAgIEp1bXBUeXBlIG1fdHlwZSA6IDg7CiAgICAgICAgICAgICAgICBKdW1w
TGlua1R5cGUgbV9saW5rVHlwZSA6IDg7CiAgICAgICAgICAgICAgICBDb25kaXRpb24gbV9jb25k
aXRpb24gOiAxNjsKICAgICAgICAgICAgfSByZWFsVHlwZXM7CiAgICAgICAgICAgIHN0cnVjdCBD
b3B5VHlwZXMgewogICAgICAgICAgICAgICAgdWludDMyX3QgY29udGVudFszXTsKICAgICAgICAg
ICAgfSBjb3B5VHlwZXM7CiAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoKHNpemVvZihSZWFsVHlw
ZXMpID09IHNpemVvZihDb3B5VHlwZXMpKSwgIkxpbmtSZWNvcmRDb3B5U3RydWN0U2l6ZUVxdWFs
c1JlYWxTdHJ1Y3QiKTsKICAgICAgICB9IGRhdGE7CiAgICB9OwoKICAgIEFSTXY3QXNzZW1ibGVy
KCkKICAgICAgICA6IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KCgtMjE0NzQ4MzY0NyAtIDEpKQog
ICAgICAgICwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQoKC0yMTQ3NDgzNjQ3IC0gMSkp
CiAgICB7CiAgICB9CgogICAgQXNzZW1ibGVyQnVmZmVyJiBidWZmZXIoKSB7IHJldHVybiBtX2Zv
cm1hdHRlci5tX2J1ZmZlcjsgfQoKcHJpdmF0ZToKCgogICAgc3RhdGljIGJvb2wgQmFkUmVnKFJl
Z2lzdGVySUQgcmVnKQogICAgewogICAgICAgIHJldHVybiAocmVnID09IEFSTVJlZ2lzdGVyczo6
c3ApIHx8IChyZWcgPT0gQVJNUmVnaXN0ZXJzOjpwYyk7CiAgICB9CgogICAgdWludDMyX3Qgc2lu
Z2xlUmVnaXN0ZXJNYXNrKEZQU2luZ2xlUmVnaXN0ZXJJRCByZE51bSwgaW50IGhpZ2hCaXRzU2hp
ZnQsIGludCBsb3dCaXRTaGlmdCkKICAgIHsKICAgICAgICB1aW50MzJfdCByZE1hc2sgPSAocmRO
dW0gPj4gMSkgPDwgaGlnaEJpdHNTaGlmdDsKICAgICAgICBpZiAocmROdW0gJiAxKQogICAgICAg
ICAgICByZE1hc2sgfD0gMSA8PCBsb3dCaXRTaGlmdDsKICAgICAgICByZXR1cm4gcmRNYXNrOwog
ICAgfQoKICAgIHVpbnQzMl90IGRvdWJsZVJlZ2lzdGVyTWFzayhGUERvdWJsZVJlZ2lzdGVySUQg
cmROdW0sIGludCBoaWdoQml0U2hpZnQsIGludCBsb3dCaXRzU2hpZnQpCiAgICB7CiAgICAgICAg
dWludDMyX3QgcmRNYXNrID0gKHJkTnVtICYgMHhmKSA8PCBsb3dCaXRzU2hpZnQ7CiAgICAgICAg
aWYgKHJkTnVtICYgMTYpCiAgICAgICAgICAgIHJkTWFzayB8PSAxIDw8IGhpZ2hCaXRTaGlmdDsK
ICAgICAgICByZXR1cm4gcmRNYXNrOwogICAgfQoKICAgIHR5cGVkZWYgZW51bSB7CiAgICAgICAg
T1BfQUREX3JlZ19UMSA9IDB4MTgwMCwKICAgICAgICBPUF9TVUJfcmVnX1QxID0gMHgxQTAwLAog
ICAgICAgIE9QX0FERF9pbW1fVDEgPSAweDFDMDAsCiAgICAgICAgT1BfU1VCX2ltbV9UMSA9IDB4
MUUwMCwKICAgICAgICBPUF9NT1ZfaW1tX1QxID0gMHgyMDAwLAogICAgICAgIE9QX0NNUF9pbW1f
VDEgPSAweDI4MDAsCiAgICAgICAgT1BfQUREX2ltbV9UMiA9IDB4MzAwMCwKICAgICAgICBPUF9T
VUJfaW1tX1QyID0gMHgzODAwLAogICAgICAgIE9QX0FORF9yZWdfVDEgPSAweDQwMDAsCiAgICAg
ICAgT1BfRU9SX3JlZ19UMSA9IDB4NDA0MCwKICAgICAgICBPUF9UU1RfcmVnX1QxID0gMHg0MjAw
LAogICAgICAgIE9QX1JTQl9pbW1fVDEgPSAweDQyNDAsCiAgICAgICAgT1BfQ01QX3JlZ19UMSA9
IDB4NDI4MCwKICAgICAgICBPUF9PUlJfcmVnX1QxID0gMHg0MzAwLAogICAgICAgIE9QX01WTl9y
ZWdfVDEgPSAweDQzQzAsCiAgICAgICAgT1BfQUREX3JlZ19UMiA9IDB4NDQwMCwKICAgICAgICBP
UF9NT1ZfcmVnX1QxID0gMHg0NjAwLAogICAgICAgIE9QX0JMWCA9IDB4NDcwMCwKICAgICAgICBP
UF9CWCA9IDB4NDcwMCwKICAgICAgICBPUF9TVFJfcmVnX1QxID0gMHg1MDAwLAogICAgICAgIE9Q
X1NUUkhfcmVnX1QxID0gMHg1MjAwLAogICAgICAgIE9QX1NUUkJfcmVnX1QxID0gMHg1NDAwLAog
ICAgICAgIE9QX0xEUlNCX3JlZ19UMSA9IDB4NTYwMCwKICAgICAgICBPUF9MRFJfcmVnX1QxID0g
MHg1ODAwLAogICAgICAgIE9QX0xEUkhfcmVnX1QxID0gMHg1QTAwLAogICAgICAgIE9QX0xEUkJf
cmVnX1QxID0gMHg1QzAwLAogICAgICAgIE9QX0xEUlNIX3JlZ19UMSA9IDB4NUUwMCwKICAgICAg
ICBPUF9TVFJfaW1tX1QxID0gMHg2MDAwLAogICAgICAgIE9QX0xEUl9pbW1fVDEgPSAweDY4MDAs
CiAgICAgICAgT1BfU1RSQl9pbW1fVDEgPSAweDcwMDAsCiAgICAgICAgT1BfTERSQl9pbW1fVDEg
PSAweDc4MDAsCiAgICAgICAgT1BfU1RSSF9pbW1fVDEgPSAweDgwMDAsCiAgICAgICAgT1BfTERS
SF9pbW1fVDEgPSAweDg4MDAsCiAgICAgICAgT1BfU1RSX2ltbV9UMiA9IDB4OTAwMCwKICAgICAg
ICBPUF9MRFJfaW1tX1QyID0gMHg5ODAwLAogICAgICAgIE9QX0FERF9TUF9pbW1fVDEgPSAweEE4
MDAsCiAgICAgICAgT1BfQUREX1NQX2ltbV9UMiA9IDB4QjAwMCwKICAgICAgICBPUF9TVUJfU1Bf
aW1tX1QxID0gMHhCMDgwLAogICAgICAgIE9QX1BVU0hfVDEgPSAweEI0MDAsCiAgICAgICAgT1Bf
UE9QX1QxID0gMHhCQzAwLAogICAgICAgIE9QX0JLUFQgPSAweEJFMDAsCiAgICAgICAgT1BfSVQg
PSAweEJGMDAsCiAgICAgICAgT1BfTk9QX1QxID0gMHhCRjAwLAogICAgfSBPcGNvZGVJRDsKCiAg
ICB0eXBlZGVmIGVudW0gewogICAgICAgIE9QX0JfVDEgPSAweEQwMDAsCiAgICAgICAgT1BfQl9U
MiA9IDB4RTAwMCwKICAgICAgICBPUF9QT1BfVDIgPSAweEU4QkQsCiAgICAgICAgT1BfUFVTSF9U
MiA9IDB4RTkyRCwKICAgICAgICBPUF9BTkRfcmVnX1QyID0gMHhFQTAwLAogICAgICAgIE9QX1RT
VF9yZWdfVDIgPSAweEVBMTAsCiAgICAgICAgT1BfT1JSX3JlZ19UMiA9IDB4RUE0MCwKICAgICAg
ICBPUF9PUlJfU19yZWdfVDIgPSAweEVBNTAsCiAgICAgICAgT1BfQVNSX2ltbV9UMSA9IDB4RUE0
RiwKICAgICAgICBPUF9MU0xfaW1tX1QxID0gMHhFQTRGLAogICAgICAgIE9QX0xTUl9pbW1fVDEg
PSAweEVBNEYsCiAgICAgICAgT1BfUk9SX2ltbV9UMSA9IDB4RUE0RiwKICAgICAgICBPUF9NVk5f
cmVnX1QyID0gMHhFQTZGLAogICAgICAgIE9QX0VPUl9yZWdfVDIgPSAweEVBODAsCiAgICAgICAg
T1BfQUREX3JlZ19UMyA9IDB4RUIwMCwKICAgICAgICBPUF9BRERfU19yZWdfVDMgPSAweEVCMTAs
CiAgICAgICAgT1BfU1VCX3JlZ19UMiA9IDB4RUJBMCwKICAgICAgICBPUF9TVUJfU19yZWdfVDIg
PSAweEVCQjAsCiAgICAgICAgT1BfQ01QX3JlZ19UMiA9IDB4RUJCMCwKICAgICAgICBPUF9WTU9W
X0N0b0QgPSAweEVDMDAsCiAgICAgICAgT1BfVk1PVl9EdG9DID0gMHhFQzEwLAogICAgICAgIE9Q
X0ZTVFMgPSAweEVEMDAsCiAgICAgICAgT1BfVlNUUiA9IDB4RUQwMCwKICAgICAgICBPUF9GTERT
ID0gMHhFRDEwLAogICAgICAgIE9QX1ZMRFIgPSAweEVEMTAsCiAgICAgICAgT1BfVk1PVl9DdG9T
ID0gMHhFRTAwLAogICAgICAgIE9QX1ZNT1ZfU3RvQyA9IDB4RUUxMCwKICAgICAgICBPUF9WTVVM
X1QyID0gMHhFRTIwLAogICAgICAgIE9QX1ZBRERfVDIgPSAweEVFMzAsCiAgICAgICAgT1BfVlNV
Ql9UMiA9IDB4RUUzMCwKICAgICAgICBPUF9WRElWID0gMHhFRTgwLAogICAgICAgIE9QX1ZBQlNf
VDIgPSAweEVFQjAsCiAgICAgICAgT1BfVkNNUCA9IDB4RUVCMCwKICAgICAgICBPUF9WQ1ZUX0ZQ
SVZGUCA9IDB4RUVCMCwKICAgICAgICBPUF9WTU9WX1QyID0gMHhFRUIwLAogICAgICAgIE9QX1ZN
T1ZfSU1NX1QyID0gMHhFRUIwLAogICAgICAgIE9QX1ZNUlMgPSAweEVFQjAsCiAgICAgICAgT1Bf
Vk5FR19UMiA9IDB4RUVCMCwKICAgICAgICBPUF9WU1FSVF9UMSA9IDB4RUVCMCwKICAgICAgICBP
UF9WQ1ZUU0RfVDEgPSAweEVFQjAsCiAgICAgICAgT1BfVkNWVERTX1QxID0gMHhFRUIwLAogICAg
ICAgIE9QX0JfVDNhID0gMHhGMDAwLAogICAgICAgIE9QX0JfVDRhID0gMHhGMDAwLAogICAgICAg
IE9QX0FORF9pbW1fVDEgPSAweEYwMDAsCiAgICAgICAgT1BfVFNUX2ltbSA9IDB4RjAxMCwKICAg
ICAgICBPUF9PUlJfaW1tX1QxID0gMHhGMDQwLAogICAgICAgIE9QX01PVl9pbW1fVDIgPSAweEYw
NDAsCiAgICAgICAgT1BfTVZOX2ltbSA9IDB4RjA2MCwKICAgICAgICBPUF9FT1JfaW1tX1QxID0g
MHhGMDgwLAogICAgICAgIE9QX0FERF9pbW1fVDMgPSAweEYxMDAsCiAgICAgICAgT1BfQUREX1Nf
aW1tX1QzID0gMHhGMTEwLAogICAgICAgIE9QX0NNTl9pbW0gPSAweEYxMTAsCiAgICAgICAgT1Bf
QURDX2ltbSA9IDB4RjE0MCwKICAgICAgICBPUF9TVUJfaW1tX1QzID0gMHhGMUEwLAogICAgICAg
IE9QX1NVQl9TX2ltbV9UMyA9IDB4RjFCMCwKICAgICAgICBPUF9DTVBfaW1tX1QyID0gMHhGMUIw
LAogICAgICAgIE9QX1JTQl9pbW1fVDIgPSAweEYxQzAsCiAgICAgICAgT1BfUlNCX1NfaW1tX1Qy
ID0gMHhGMUQwLAogICAgICAgIE9QX0FERF9pbW1fVDQgPSAweEYyMDAsCiAgICAgICAgT1BfTU9W
X2ltbV9UMyA9IDB4RjI0MCwKICAgICAgICBPUF9TVUJfaW1tX1Q0ID0gMHhGMkEwLAogICAgICAg
IE9QX01PVlQgPSAweEYyQzAsCiAgICAgICAgT1BfVUJGWF9UMSA9IDB4RjNDMCwKICAgICAgICBP
UF9OT1BfVDJhID0gMHhGM0FGLAogICAgICAgIE9QX0RNQl9TWV9UMmEgPSAweEYzQkYsCiAgICAg
ICAgT1BfU1RSQl9pbW1fVDMgPSAweEY4MDAsCiAgICAgICAgT1BfU1RSQl9yZWdfVDIgPSAweEY4
MDAsCiAgICAgICAgT1BfTERSQl9pbW1fVDMgPSAweEY4MTAsCiAgICAgICAgT1BfTERSQl9yZWdf
VDIgPSAweEY4MTAsCiAgICAgICAgT1BfU1RSSF9pbW1fVDMgPSAweEY4MjAsCiAgICAgICAgT1Bf
U1RSSF9yZWdfVDIgPSAweEY4MjAsCiAgICAgICAgT1BfTERSSF9yZWdfVDIgPSAweEY4MzAsCiAg
ICAgICAgT1BfTERSSF9pbW1fVDMgPSAweEY4MzAsCiAgICAgICAgT1BfU1RSX2ltbV9UNCA9IDB4
Rjg0MCwKICAgICAgICBPUF9TVFJfcmVnX1QyID0gMHhGODQwLAogICAgICAgIE9QX0xEUl9pbW1f
VDQgPSAweEY4NTAsCiAgICAgICAgT1BfTERSX3JlZ19UMiA9IDB4Rjg1MCwKICAgICAgICBPUF9T
VFJCX2ltbV9UMiA9IDB4Rjg4MCwKICAgICAgICBPUF9MRFJCX2ltbV9UMiA9IDB4Rjg5MCwKICAg
ICAgICBPUF9TVFJIX2ltbV9UMiA9IDB4RjhBMCwKICAgICAgICBPUF9MRFJIX2ltbV9UMiA9IDB4
RjhCMCwKICAgICAgICBPUF9TVFJfaW1tX1QzID0gMHhGOEMwLAogICAgICAgIE9QX0xEUl9pbW1f
VDMgPSAweEY4RDAsCiAgICAgICAgT1BfTERSU0JfcmVnX1QyID0gMHhGOTEwLAogICAgICAgIE9Q
X0xEUlNIX3JlZ19UMiA9IDB4RjkzMCwKICAgICAgICBPUF9MU0xfcmVnX1QyID0gMHhGQTAwLAog
ICAgICAgIE9QX0xTUl9yZWdfVDIgPSAweEZBMjAsCiAgICAgICAgT1BfQVNSX3JlZ19UMiA9IDB4
RkE0MCwKICAgICAgICBPUF9ST1JfcmVnX1QyID0gMHhGQTYwLAogICAgICAgIE9QX0NMWiA9IDB4
RkFCMCwKICAgICAgICBPUF9TTVVMTF9UMSA9IDB4RkI4MCwKCgoKCiAgICB9IE9wY29kZUlEMTsK
CiAgICB0eXBlZGVmIGVudW0gewogICAgICAgIE9QX1ZBRERfVDJiID0gMHgwQTAwLAogICAgICAg
IE9QX1ZESVZiID0gMHgwQTAwLAogICAgICAgIE9QX0ZMRFNiID0gMHgwQTAwLAogICAgICAgIE9Q
X1ZMRFJiID0gMHgwQTAwLAogICAgICAgIE9QX1ZNT1ZfSU1NX1QyYiA9IDB4MEEwMCwKICAgICAg
ICBPUF9WTU9WX1QyYiA9IDB4MEE0MCwKICAgICAgICBPUF9WTVVMX1QyYiA9IDB4MEEwMCwKICAg
ICAgICBPUF9GU1RTYiA9IDB4MEEwMCwKICAgICAgICBPUF9WU1RSYiA9IDB4MEEwMCwKICAgICAg
ICBPUF9WTU9WX1N0b0NiID0gMHgwQTEwLAogICAgICAgIE9QX1ZNT1ZfQ3RvU2IgPSAweDBBMTAs
CiAgICAgICAgT1BfVk1PVl9EdG9DYiA9IDB4MEExMCwKICAgICAgICBPUF9WTU9WX0N0b0RiID0g
MHgwQTEwLAogICAgICAgIE9QX1ZNUlNiID0gMHgwQTEwLAogICAgICAgIE9QX1ZBQlNfVDJiID0g
MHgwQTQwLAogICAgICAgIE9QX1ZDTVBiID0gMHgwQTQwLAogICAgICAgIE9QX1ZDVlRfRlBJVkZQ
YiA9IDB4MEE0MCwKICAgICAgICBPUF9WTkVHX1QyYiA9IDB4MEE0MCwKICAgICAgICBPUF9WU1VC
X1QyYiA9IDB4MEE0MCwKICAgICAgICBPUF9WU1FSVF9UMWIgPSAweDBBNDAsCiAgICAgICAgT1Bf
VkNWVFNEX1QxYiA9IDB4MEE0MCwKICAgICAgICBPUF9WQ1ZURFNfVDFiID0gMHgwQTQwLAogICAg
ICAgIE9QX05PUF9UMmIgPSAweDgwMDAsCiAgICAgICAgT1BfRE1CX1NZX1QyYiA9IDB4OEY1RiwK
ICAgICAgICBPUF9CX1QzYiA9IDB4ODAwMCwKICAgICAgICBPUF9CX1Q0YiA9IDB4OTAwMCwKICAg
IH0gT3Bjb2RlSUQyOwoKICAgIHN0cnVjdCBGb3VyRm91cnMgewogICAgICAgIEZvdXJGb3Vycyh1
bnNpZ25lZCBmMywgdW5zaWduZWQgZjIsIHVuc2lnbmVkIGYxLCB1bnNpZ25lZCBmMCkKICAgICAg
ICB7CiAgICAgICAgICAgIG1fdS5mMCA9IGYwOwogICAgICAgICAgICBtX3UuZjEgPSBmMTsKICAg
ICAgICAgICAgbV91LmYyID0gZjI7CiAgICAgICAgICAgIG1fdS5mMyA9IGYzOwogICAgICAgIH0K
CiAgICAgICAgdW5pb24gewogICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZTsKICAgICAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGYwIDogNDsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGYxIDogNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGYyIDogNDsKICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGYzIDogNDsKICAgICAgICAgICAgfTsKICAgICAgICB9IG1fdTsK
ICAgIH07CgogICAgY2xhc3MgQVJNSW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI7CgoKICAgIHN0YXRpYyBi
b29sIGlmVGhlbkVsc2VDb25kaXRpb25CaXQoQ29uZGl0aW9uIGNvbmRpdGlvbiwgYm9vbCBpc0lm
KQogICAgewogICAgICAgIHJldHVybiBpc0lmID8gKGNvbmRpdGlvbiAmIDEpIDogIShjb25kaXRp
b24gJiAxKTsKICAgIH0KICAgIHN0YXRpYyB1aW50OF90IGlmVGhlbkVsc2UoQ29uZGl0aW9uIGNv
bmRpdGlvbiwgYm9vbCBpbnN0MmlmLCBib29sIGluc3QzaWYsIGJvb2wgaW5zdDRpZikKICAgIHsK
ICAgICAgICBpbnQgbWFzayA9IChpZlRoZW5FbHNlQ29uZGl0aW9uQml0KGNvbmRpdGlvbiwgaW5z
dDJpZikgPDwgMykKICAgICAgICAgICAgfCAoaWZUaGVuRWxzZUNvbmRpdGlvbkJpdChjb25kaXRp
b24sIGluc3QzaWYpIDw8IDIpCiAgICAgICAgICAgIHwgKGlmVGhlbkVsc2VDb25kaXRpb25CaXQo
Y29uZGl0aW9uLCBpbnN0NGlmKSA8PCAxKQogICAgICAgICAgICB8IDE7CiAgICAgICAgKCh2b2lk
KTApOwogICAgICAgIHJldHVybiAoY29uZGl0aW9uIDw8IDQpIHwgbWFzazsKICAgIH0KICAgIHN0
YXRpYyB1aW50OF90IGlmVGhlbkVsc2UoQ29uZGl0aW9uIGNvbmRpdGlvbiwgYm9vbCBpbnN0Mmlm
LCBib29sIGluc3QzaWYpCiAgICB7CiAgICAgICAgaW50IG1hc2sgPSAoaWZUaGVuRWxzZUNvbmRp
dGlvbkJpdChjb25kaXRpb24sIGluc3QyaWYpIDw8IDMpCiAgICAgICAgICAgIHwgKGlmVGhlbkVs
c2VDb25kaXRpb25CaXQoY29uZGl0aW9uLCBpbnN0M2lmKSA8PCAyKQogICAgICAgICAgICB8IDI7
CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiAoY29uZGl0aW9uIDw8IDQpIHwgbWFz
azsKICAgIH0KICAgIHN0YXRpYyB1aW50OF90IGlmVGhlbkVsc2UoQ29uZGl0aW9uIGNvbmRpdGlv
biwgYm9vbCBpbnN0MmlmKQogICAgewogICAgICAgIGludCBtYXNrID0gKGlmVGhlbkVsc2VDb25k
aXRpb25CaXQoY29uZGl0aW9uLCBpbnN0MmlmKSA8PCAzKQogICAgICAgICAgICB8IDQ7CiAgICAg
ICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiAoY29uZGl0aW9uIDw8IDQpIHwgbWFzazsKICAg
IH0KCiAgICBzdGF0aWMgdWludDhfdCBpZlRoZW5FbHNlKENvbmRpdGlvbiBjb25kaXRpb24pCiAg
ICB7CiAgICAgICAgaW50IG1hc2sgPSA4OwogICAgICAgIHJldHVybiAoY29uZGl0aW9uIDw8IDQp
IHwgbWFzazsKICAgIH0KCnB1YmxpYzoKCiAgICB2b2lkIGFkYyhSZWdpc3RlcklEIHJkLCBSZWdp
c3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICB7CgogICAgICAgICgodm9pZCkw
KTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkw
KTsKCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tKE9Q
X0FEQ19pbW0sIHJuLCByZCwgaW1tKTsKICAgIH0KCiAgICB2b2lkIGFkZChSZWdpc3RlcklEIHJk
LCBSZWdpc3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICB7CgogICAgICAgICgo
dm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgo
dm9pZCkwKTsKCiAgICAgICAgaWYgKHJuID09IEFSTVJlZ2lzdGVyczo6c3AgJiYgaW1tLmlzVUlu
dDE2KCkpIHsKICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICBpZiAoIShyZCAmIDgp
ICYmIGltbS5pc1VJbnQxMCgpKSB7CiAgICAgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3Jk
T3A1UmVnM0ltbTgoT1BfQUREX1NQX2ltbV9UMSwgcmQsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGlt
bS5nZXRVSW50MTAoKSA+PiAyKSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
IH0gZWxzZSBpZiAoKHJkID09IEFSTVJlZ2lzdGVyczo6c3ApICYmIGltbS5pc1VJbnQ5KCkpIHsK
ICAgICAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDlJbW03KE9QX0FERF9TUF9pbW1f
VDIsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGltbS5nZXRVSW50OSgpID4+IDIpKTsKICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoISgocmQgfCBy
bikgJiA4KSkgewogICAgICAgICAgICBpZiAoaW1tLmlzVUludDMoKSkgewogICAgICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lV29yZE9wN1JlZzNSZWczUmVnMyhPUF9BRERfaW1tX1QxLCAoUmVn
aXN0ZXJJRClpbW0uZ2V0VUludDMoKSwgcm4sIHJkKTsKICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgfSBlbHNlIGlmICgocmQgPT0gcm4pICYmIGltbS5pc1VJbnQ4KCkpIHsKICAg
ICAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDVSZWczSW1tOChPUF9BRERfaW1tX1Qy
LCByZCwgaW1tLmdldFVJbnQ4KCkpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaW1tLmlzRW5jb2RlZEltbSgpKQogICAgICAgICAg
ICBtX2Zvcm1hdHRlci50d29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW0oT1BfQUREX2ltbV9U
Mywgcm4sIHJkLCBpbW0pOwogICAgICAgIGVsc2UgewogICAgICAgICAgICAoKHZvaWQpMCk7CiAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbShPUF9B
RERfaW1tX1Q0LCBybiwgcmQsIGltbSk7CiAgICAgICAgfQogICAgfQoKICAgIGlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgYWRkKFJlZ2lzdGVySUQgcmQsIFJl
Z2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIFNoaWZ0VHlwZUFuZEFtb3VudCBzaGlmdCkKICAg
IHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkw
KTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0
Rm91ckZvdXJzKE9QX0FERF9yZWdfVDMsIHJuLCBGb3VyRm91cnMoc2hpZnQuaGk0KCksIHJkLCBz
aGlmdC5sbzQoKSwgcm0pKTsKICAgIH0KCgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgdm9pZCBhZGQoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVn
aXN0ZXJJRCBybSkKICAgIHsKICAgICAgICBpZiAocmQgPT0gQVJNUmVnaXN0ZXJzOjpzcCkgewog
ICAgICAgICAgICBtb3YocmQsIHJuKTsKICAgICAgICAgICAgcm4gPSByZDsKICAgICAgICB9Cgog
ICAgICAgIGlmIChyZCA9PSBybikKICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lV29yZE9wOFJl
Z1JlZzE0MyhPUF9BRERfcmVnX1QyLCBybSwgcmQpOwogICAgICAgIGVsc2UgaWYgKHJkID09IHJt
KQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3A4UmVnUmVnMTQzKE9QX0FERF9yZWdf
VDIsIHJuLCByZCk7CiAgICAgICAgZWxzZSBpZiAoISgocmQgfCBybiB8IHJtKSAmIDgpKQogICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3A3UmVnM1JlZzNSZWczKE9QX0FERF9yZWdfVDEs
IHJtLCBybiwgcmQpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgYWRkKHJkLCBybiwgcm0sIFNo
aWZ0VHlwZUFuZEFtb3VudCgpKTsKICAgIH0KCgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgdm9pZCBhZGRfUyhSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJu
LCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICB7CgogICAgICAgICgodm9pZCkwKTsKICAgICAg
ICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAgICAg
ICAgaWYgKCEoKHJkIHwgcm4pICYgOCkpIHsKICAgICAgICAgICAgaWYgKGltbS5pc1VJbnQzKCkp
IHsKICAgICAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDdSZWczUmVnM1JlZzMoT1Bf
QUREX2ltbV9UMSwgKFJlZ2lzdGVySUQpaW1tLmdldFVJbnQzKCksIHJuLCByZCk7CiAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0gZWxzZSBpZiAoKHJkID09IHJuKSAmJiBpbW0u
aXNVSW50OCgpKSB7CiAgICAgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3A1UmVnM0lt
bTgoT1BfQUREX2ltbV9UMiwgcmQsIGltbS5nZXRVSW50OCgpKTsKICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29y
ZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tKE9QX0FERF9TX2ltbV9UMywgcm4sIHJkLCBpbW0pOwog
ICAgfQoKCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lk
IGFkZF9TKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIFNoaWZ0
VHlwZUFuZEFtb3VudCBzaGlmdCkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2
b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9m
b3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0Rm91ckZvdXJzKE9QX0FERF9TX3JlZ19UMywgcm4sIEZv
dXJGb3VycyhzaGlmdC5oaTQoKSwgcmQsIHNoaWZ0LmxvNCgpLCBybSkpOwogICAgfQoKCiAgICBp
bmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGFkZF9TKFJlZ2lz
dGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0pCiAgICB7CiAgICAgICAgaWYg
KCEoKHJkIHwgcm4gfCBybSkgJiA4KSkKICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lV29yZE9w
N1JlZzNSZWczUmVnMyhPUF9BRERfcmVnX1QxLCBybSwgcm4sIHJkKTsKICAgICAgICBlbHNlCiAg
ICAgICAgICAgIGFkZF9TKHJkLCBybiwgcm0sIFNoaWZ0VHlwZUFuZEFtb3VudCgpKTsKICAgIH0K
CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIEFSTV9h
bmQoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQog
ICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lk
KTApOwogICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbShP
UF9BTkRfaW1tX1QxLCBybiwgcmQsIGltbSk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBBUk1fYW5kKFJlZ2lzdGVySUQgcmQsIFJlZ2lz
dGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIFNoaWZ0VHlwZUFuZEFtb3VudCBzaGlmdCkKICAgIHsK
ICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsK
ICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRGb3VyRm91cnMoT1BfQU5EX3JlZ19U
Miwgcm4sIEZvdXJGb3VycyhzaGlmdC5oaTQoKSwgcmQsIHNoaWZ0LmxvNCgpLCBybSkpOwogICAg
fQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQVJN
X2FuZChSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQogICAgewog
ICAgICAgIGlmICgocmQgPT0gcm4pICYmICEoKHJkIHwgcm0pICYgOCkpCiAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZVdvcmRPcDEwUmVnM1JlZzMoT1BfQU5EX3JlZ19UMSwgcm0sIHJkKTsKICAg
ICAgICBlbHNlIGlmICgocmQgPT0gcm0pICYmICEoKHJkIHwgcm4pICYgOCkpCiAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZVdvcmRPcDEwUmVnM1JlZzMoT1BfQU5EX3JlZ19UMSwgcm4sIHJkKTsK
ICAgICAgICBlbHNlCiAgICAgICAgICAgIEFSTV9hbmQocmQsIHJuLCBybSwgU2hpZnRUeXBlQW5k
QW1vdW50KCkpOwogICAgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp
bmVfXykpIHZvaWQgYXNyKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm0sIGludDMyX3Qgc2hp
ZnRBbW91bnQpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAg
ICAgICBTaGlmdFR5cGVBbmRBbW91bnQgc2hpZnQoU1JUeXBlX0FTUiwgc2hpZnRBbW91bnQpOwog
ICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDE2Rm91ckZvdXJzKE9QX0FTUl9pbW1fVDEsIEZv
dXJGb3VycyhzaGlmdC5oaTQoKSwgcmQsIHNoaWZ0LmxvNCgpLCBybSkpOwogICAgfQoKICAgIGlu
bGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgYXNyKFJlZ2lzdGVy
SUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0pCiAgICB7CiAgICAgICAgKCh2b2lk
KTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9mb3Jt
YXR0ZXIudHdvV29yZE9wMTJSZWc0Rm91ckZvdXJzKE9QX0FTUl9yZWdfVDIsIHJuLCBGb3VyRm91
cnMoMHhmLCByZCwgMCwgcm0pKTsKICAgIH0KCgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgQXNzZW1ibGVyTGFiZWwgYigpCiAgICB7CiAgICAgICAgbV9mb3Jt
YXR0ZXIudHdvV29yZE9wMTZPcDE2KE9QX0JfVDRhLCBPUF9CX1Q0Yik7CiAgICAgICAgcmV0dXJu
IG1fZm9ybWF0dGVyLmxhYmVsKCk7CiAgICB9CgoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXykpIEFzc2VtYmxlckxhYmVsIGJseChSZWdpc3RlcklEIHJtKQogICAg
ewogICAgICAgICgodm9pZCkwKTsKICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3A4UmVnUmVn
MTQzKE9QX0JMWCwgcm0sIChSZWdpc3RlcklEKTgpOwogICAgICAgIHJldHVybiBtX2Zvcm1hdHRl
ci5sYWJlbCgpOwogICAgfQoKCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18pKSBBc3NlbWJsZXJMYWJlbCBieChSZWdpc3RlcklEIHJtKQogICAgewogICAgICAgIG1f
Zm9ybWF0dGVyLm9uZVdvcmRPcDhSZWdSZWcxNDMoT1BfQlgsIHJtLCAoUmVnaXN0ZXJJRCkwKTsK
ICAgICAgICByZXR1cm4gbV9mb3JtYXR0ZXIubGFiZWwoKTsKICAgIH0KCiAgICB2b2lkIGJrcHQo
dWludDhfdCBpbW0gPSAwKQogICAgewogICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDhJbW04
KE9QX0JLUFQsIGltbSk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fKSkgdm9pZCBjbHooUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybSkKICAgIHsK
ICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIG1fZm9ybWF0dGVy
LnR3b1dvcmRPcDEyUmVnNEZvdXJGb3VycyhPUF9DTFosIHJtLCBGb3VyRm91cnMoMHhmLCByZCwg
OCwgcm0pKTsKICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSB2b2lkIGNtbihSZWdpc3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICB7
CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgbV9mb3JtYXR0
ZXIudHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tKE9QX0NNTl9pbW0sIHJuLCAoUmVnaXN0
ZXJJRCkweGYsIGltbSk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fKSkgdm9pZCBjbXAoUmVnaXN0ZXJJRCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1t
KQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgIGlm
ICghKHJuICYgOCkgJiYgaW1tLmlzVUludDgoKSkKICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25l
V29yZE9wNVJlZzNJbW04KE9QX0NNUF9pbW1fVDEsIHJuLCBpbW0uZ2V0VUludDgoKSk7CiAgICAg
ICAgZWxzZQogICAgICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3A1aTZJbW00UmVnNEVuY29k
ZWRJbW0oT1BfQ01QX2ltbV9UMiwgcm4sIChSZWdpc3RlcklEKTB4ZiwgaW1tKTsKICAgIH0KCiAg
ICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGNtcChSZWdp
c3RlcklEIHJuLCBSZWdpc3RlcklEIHJtLCBTaGlmdFR5cGVBbmRBbW91bnQgc2hpZnQpCiAgICB7
CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICBtX2Zvcm1hdHRl
ci50d29Xb3JkT3AxMlJlZzRGb3VyRm91cnMoT1BfQ01QX3JlZ19UMiwgcm4sIEZvdXJGb3Vycyhz
aGlmdC5oaTQoKSwgMHhmLCBzaGlmdC5sbzQoKSwgcm0pKTsKICAgIH0KCiAgICBpbmxpbmUgX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGNtcChSZWdpc3RlcklEIHJuLCBS
ZWdpc3RlcklEIHJtKQogICAgewogICAgICAgIGlmICgocm4gfCBybSkgJiA4KQogICAgICAgICAg
ICBjbXAocm4sIHJtLCBTaGlmdFR5cGVBbmRBbW91bnQoKSk7CiAgICAgICAgZWxzZQogICAgICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3AxMFJlZzNSZWczKE9QX0NNUF9yZWdfVDEsIHJtLCBy
bik7CiAgICB9CgoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp
IHZvaWQgZW9yKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIEFSTVRodW1iSW1tZWRpYXRl
IGltbSkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAg
ICgodm9pZCkwKTsKICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3A1aTZJbW00UmVnNEVuY29k
ZWRJbW0oT1BfRU9SX2ltbV9UMSwgcm4sIHJkLCBpbW0pOwogICAgfQoKCiAgICBpbmxpbmUgX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGVvcihSZWdpc3RlcklEIHJkLCBS
ZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtLCBTaGlmdFR5cGVBbmRBbW91bnQgc2hpZnQpCiAg
ICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQp
MCk7CiAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0Rm91ckZvdXJzKE9QX0VPUl9y
ZWdfVDIsIHJuLCBGb3VyRm91cnMoc2hpZnQuaGk0KCksIHJkLCBzaGlmdC5sbzQoKSwgcm0pKTsK
ICAgIH0KCgogICAgdm9pZCBlb3IoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0
ZXJJRCBybSkKICAgIHsKICAgICAgICBpZiAoKHJkID09IHJuKSAmJiAhKChyZCB8IHJtKSAmIDgp
KQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3AxMFJlZzNSZWczKE9QX0VPUl9yZWdf
VDEsIHJtLCByZCk7CiAgICAgICAgZWxzZSBpZiAoKHJkID09IHJtKSAmJiAhKChyZCB8IHJuKSAm
IDgpKQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3AxMFJlZzNSZWczKE9QX0VPUl9y
ZWdfVDEsIHJuLCByZCk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBlb3IocmQsIHJuLCBybSwg
U2hpZnRUeXBlQW5kQW1vdW50KCkpOwogICAgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgaXQoQ29uZGl0aW9uIGNvbmQpCiAgICB7CiAgICAgICAg
bV9mb3JtYXR0ZXIub25lV29yZE9wOEltbTgoT1BfSVQsIGlmVGhlbkVsc2UoY29uZCkpOwogICAg
fQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgaXQo
Q29uZGl0aW9uIGNvbmQsIGJvb2wgaW5zdDJpZikKICAgIHsKICAgICAgICBtX2Zvcm1hdHRlci5v
bmVXb3JkT3A4SW1tOChPUF9JVCwgaWZUaGVuRWxzZShjb25kLCBpbnN0MmlmKSk7CiAgICB9Cgog
ICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBpdChDb25k
aXRpb24gY29uZCwgYm9vbCBpbnN0MmlmLCBib29sIGluc3QzaWYpCiAgICB7CiAgICAgICAgbV9m
b3JtYXR0ZXIub25lV29yZE9wOEltbTgoT1BfSVQsIGlmVGhlbkVsc2UoY29uZCwgaW5zdDJpZiwg
aW5zdDNpZikpOwogICAgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp
bmVfXykpIHZvaWQgaXQoQ29uZGl0aW9uIGNvbmQsIGJvb2wgaW5zdDJpZiwgYm9vbCBpbnN0M2lm
LCBib29sIGluc3Q0aWYpCiAgICB7CiAgICAgICAgbV9mb3JtYXR0ZXIub25lV29yZE9wOEltbTgo
T1BfSVQsIGlmVGhlbkVsc2UoY29uZCwgaW5zdDJpZiwgaW5zdDNpZiwgaW5zdDRpZikpOwogICAg
fQoKCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGxk
cihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAg
ICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgaWYgKCEo
KHJ0IHwgcm4pICYgOCkgJiYgaW1tLmlzVUludDcoKSkKICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lV29yZE9wNUltbTVSZWczUmVnMyhPUF9MRFJfaW1tX1QxLCBpbW0uZ2V0VUludDcoKSA+PiAy
LCBybiwgcnQpOwogICAgICAgIGVsc2UgaWYgKChybiA9PSBBUk1SZWdpc3RlcnM6OnNwKSAmJiAh
KHJ0ICYgOCkgJiYgaW1tLmlzVUludDEwKCkpCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZVdv
cmRPcDVSZWczSW1tOChPUF9MRFJfaW1tX1QyLCBydCwgc3RhdGljX2Nhc3Q8dWludDhfdD4oaW1t
LmdldFVJbnQxMCgpID4+IDIpKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIG1fZm9ybWF0dGVy
LnR3b1dvcmRPcDEyUmVnNFJlZzRJbW0xMihPUF9MRFJfaW1tX1QzLCBybiwgcnQsIGltbS5nZXRV
SW50MTIoKSk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fKSkgdm9pZCBsZHJXaWRlOEJpdEltbWVkaWF0ZShSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklE
IHJuLCB1aW50OF90IGltbWVkaWF0ZSkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAg
bV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0UmVnNEltbTEyKE9QX0xEUl9pbW1fVDMsIHJuLCBy
dCwgaW1tZWRpYXRlKTsKICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18pKSB2b2lkIGxkckNvbXBhY3QoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwg
QVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAo
KHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRP
cDVJbW01UmVnM1JlZzMoT1BfTERSX2ltbV9UMSwgaW1tLmdldFVJbnQ3KCkgPj4gMiwgcm4sIHJ0
KTsKICAgIH0KIyAxMTE5ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FS
TXY3QXNzZW1ibGVyLmgiCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSB2b2lkIGxkcihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBpbnQgb2Zmc2V0LCBi
b29sIGluZGV4LCBib29sIHdiYWNrKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAo
KHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAg
Ym9vbCBhZGQgPSB0cnVlOwogICAgICAgIGlmIChvZmZzZXQgPCAwKSB7CiAgICAgICAgICAgIGFk
ZCA9IGZhbHNlOwogICAgICAgICAgICBvZmZzZXQgPSAtb2Zmc2V0OwogICAgICAgIH0KICAgICAg
ICAoKHZvaWQpMCk7CgogICAgICAgIG9mZnNldCB8PSAod2JhY2sgPDwgOCk7CiAgICAgICAgb2Zm
c2V0IHw9IChhZGQgPDwgOSk7CiAgICAgICAgb2Zmc2V0IHw9IChpbmRleCA8PCAxMCk7CiAgICAg
ICAgb2Zmc2V0IHw9ICgxIDw8IDExKTsKCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJS
ZWc0UmVnNEltbTEyKE9QX0xEUl9pbW1fVDQsIHJuLCBydCwgb2Zmc2V0KTsKICAgIH0KCgogICAg
aW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBsZHIoUmVnaXN0
ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgdW5zaWduZWQgc2hpZnQgPSAw
KQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2
b2lkKTApOwoKICAgICAgICBpZiAoIXNoaWZ0ICYmICEoKHJ0IHwgcm4gfCBybSkgJiA4KSkKICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lV29yZE9wN1JlZzNSZWczUmVnMyhPUF9MRFJfcmVnX1Qx
LCBybSwgcm4sIHJ0KTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dv
cmRPcDEyUmVnNEZvdXJGb3VycyhPUF9MRFJfcmVnX1QyLCBybiwgRm91ckZvdXJzKHJ0LCAwLCBz
aGlmdCwgcm0pKTsKICAgIH0KCgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fKSkgdm9pZCBsZHJoKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIEFSTVRodW1i
SW1tZWRpYXRlIGltbSkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTAp
OwogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgaWYgKCEoKHJ0IHwgcm4pICYgOCkgJiYgaW1t
LmlzVUludDYoKSkKICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lV29yZE9wNUltbTVSZWczUmVn
MyhPUF9MRFJIX2ltbV9UMSwgaW1tLmdldFVJbnQ2KCkgPj4gMSwgcm4sIHJ0KTsKICAgICAgICBl
bHNlCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNFJlZzRJbW0xMihPUF9M
RFJIX2ltbV9UMiwgcm4sIHJ0LCBpbW0uZ2V0VUludDEyKCkpOwogICAgfQojIDExNzggIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaCIKICAgIGlu
bGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgbGRyaChSZWdpc3Rl
cklEIHJ0LCBSZWdpc3RlcklEIHJuLCBpbnQgb2Zmc2V0LCBib29sIGluZGV4LCBib29sIHdiYWNr
KQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2
b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgYm9vbCBhZGQgPSB0cnVlOwogICAg
ICAgIGlmIChvZmZzZXQgPCAwKSB7CiAgICAgICAgICAgIGFkZCA9IGZhbHNlOwogICAgICAgICAg
ICBvZmZzZXQgPSAtb2Zmc2V0OwogICAgICAgIH0KICAgICAgICAoKHZvaWQpMCk7CgogICAgICAg
IG9mZnNldCB8PSAod2JhY2sgPDwgOCk7CiAgICAgICAgb2Zmc2V0IHw9IChhZGQgPDwgOSk7CiAg
ICAgICAgb2Zmc2V0IHw9IChpbmRleCA8PCAxMCk7CiAgICAgICAgb2Zmc2V0IHw9ICgxIDw8IDEx
KTsKCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0UmVnNEltbTEyKE9QX0xEUkhf
aW1tX1QzLCBybiwgcnQsIG9mZnNldCk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBsZHJoKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQg
cm4sIFJlZ2lzdGVySUQgcm0sIHVuc2lnbmVkIHNoaWZ0ID0gMCkKICAgIHsKICAgICAgICAoKHZv
aWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZv
aWQpMCk7CgogICAgICAgIGlmICghc2hpZnQgJiYgISgocnQgfCBybiB8IHJtKSAmIDgpKQogICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3A3UmVnM1JlZzNSZWczKE9QX0xEUkhfcmVnX1Qx
LCBybSwgcm4sIHJ0KTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dv
cmRPcDEyUmVnNEZvdXJGb3VycyhPUF9MRFJIX3JlZ19UMiwgcm4sIEZvdXJGb3VycyhydCwgMCwg
c2hpZnQsIHJtKSk7CiAgICB9CgogICAgdm9pZCBsZHJiKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVy
SUQgcm4sIEFSTVRodW1iSW1tZWRpYXRlIGltbSkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAg
ICAgICAgKCh2b2lkKTApOwoKICAgICAgICBpZiAoISgocnQgfCBybikgJiA4KSAmJiBpbW0uaXNV
SW50NSgpKQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3A1SW1tNVJlZzNSZWczKE9Q
X0xEUkJfaW1tX1QxLCBpbW0uZ2V0VUludDUoKSwgcm4sIHJ0KTsKICAgICAgICBlbHNlCiAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNFJlZzRJbW0xMihPUF9MRFJCX2ltbV9U
Miwgcm4sIHJ0LCBpbW0uZ2V0VUludDEyKCkpOwogICAgfQoKICAgIHZvaWQgbGRyYihSZWdpc3Rl
cklEIHJ0LCBSZWdpc3RlcklEIHJuLCBpbnQgb2Zmc2V0LCBib29sIGluZGV4LCBib29sIHdiYWNr
KQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2
b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgYm9vbCBhZGQgPSB0cnVlOwogICAg
ICAgIGlmIChvZmZzZXQgPCAwKSB7CiAgICAgICAgICAgIGFkZCA9IGZhbHNlOwogICAgICAgICAg
ICBvZmZzZXQgPSAtb2Zmc2V0OwogICAgICAgIH0KCiAgICAgICAgKCh2b2lkKTApOwoKICAgICAg
ICBvZmZzZXQgfD0gKHdiYWNrIDw8IDgpOwogICAgICAgIG9mZnNldCB8PSAoYWRkIDw8IDkpOwog
ICAgICAgIG9mZnNldCB8PSAoaW5kZXggPDwgMTApOwogICAgICAgIG9mZnNldCB8PSAoMSA8PCAx
MSk7CgogICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNFJlZzRJbW0xMihPUF9MRFJC
X2ltbV9UMywgcm4sIHJ0LCBvZmZzZXQpOwogICAgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgbGRyYihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklE
IHJuLCBSZWdpc3RlcklEIHJtLCB1bnNpZ25lZCBzaGlmdCA9IDApCiAgICB7CiAgICAgICAgKCh2
b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgIGlm
ICghc2hpZnQgJiYgISgocnQgfCBybiB8IHJtKSAmIDgpKQogICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVXb3JkT3A3UmVnM1JlZzNSZWczKE9QX0xEUkJfcmVnX1QxLCBybSwgcm4sIHJ0KTsKICAg
ICAgICBlbHNlCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNEZvdXJGb3Vy
cyhPUF9MRFJCX3JlZ19UMiwgcm4sIEZvdXJGb3VycyhydCwgMCwgc2hpZnQsIHJtKSk7CiAgICB9
CgogICAgdm9pZCBsZHJzYihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklE
IHJtLCB1bnNpZ25lZCBzaGlmdCA9IDApCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAg
ICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgIGlmICghc2hpZnQgJiYgISgo
cnQgfCBybiB8IHJtKSAmIDgpKQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3A3UmVn
M1JlZzNSZWczKE9QX0xEUlNCX3JlZ19UMSwgcm0sIHJuLCBydCk7CiAgICAgICAgZWxzZQogICAg
ICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRGb3VyRm91cnMoT1BfTERSU0JfcmVn
X1QyLCBybiwgRm91ckZvdXJzKHJ0LCAwLCBzaGlmdCwgcm0pKTsKICAgIH0KCiAgICB2b2lkIGxk
cnNoKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIHVuc2lnbmVk
IHNoaWZ0ID0gMCkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwog
ICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgaWYgKCFzaGlmdCAmJiAhKChydCB8IHJuIHwgcm0p
ICYgOCkpCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDdSZWczUmVnM1JlZzMoT1Bf
TERSU0hfcmVnX1QxLCBybSwgcm4sIHJ0KTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIG1fZm9y
bWF0dGVyLnR3b1dvcmRPcDEyUmVnNEZvdXJGb3VycyhPUF9MRFJTSF9yZWdfVDIsIHJuLCBGb3Vy
Rm91cnMocnQsIDAsIHNoaWZ0LCBybSkpOwogICAgfQoKICAgIHZvaWQgbHNsKFJlZ2lzdGVySUQg
cmQsIFJlZ2lzdGVySUQgcm0sIGludDMyX3Qgc2hpZnRBbW91bnQpCiAgICB7CiAgICAgICAgKCh2
b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICBTaGlmdFR5cGVBbmRBbW91bnQgc2hp
ZnQoU1JUeXBlX0xTTCwgc2hpZnRBbW91bnQpOwogICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRP
cDE2Rm91ckZvdXJzKE9QX0xTTF9pbW1fVDEsIEZvdXJGb3VycyhzaGlmdC5oaTQoKSwgcmQsIHNo
aWZ0LmxvNCgpLCBybSkpOwogICAgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXykpIHZvaWQgbHNsKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lz
dGVySUQgcm0pCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAg
ICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0Rm91ckZv
dXJzKE9QX0xTTF9yZWdfVDIsIHJuLCBGb3VyRm91cnMoMHhmLCByZCwgMCwgcm0pKTsKICAgIH0K
CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGxzcihS
ZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJtLCBpbnQzMl90IHNoaWZ0QW1vdW50KQogICAgewog
ICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgU2hpZnRUeXBlQW5k
QW1vdW50IHNoaWZ0KFNSVHlwZV9MU1IsIHNoaWZ0QW1vdW50KTsKICAgICAgICBtX2Zvcm1hdHRl
ci50d29Xb3JkT3AxNkZvdXJGb3VycyhPUF9MU1JfaW1tX1QxLCBGb3VyRm91cnMoc2hpZnQuaGk0
KCksIHJkLCBzaGlmdC5sbzQoKSwgcm0pKTsKICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGxzcihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklE
IHJuLCBSZWdpc3RlcklEIHJtKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZv
aWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEy
UmVnNEZvdXJGb3VycyhPUF9MU1JfcmVnX1QyLCBybiwgRm91ckZvdXJzKDB4ZiwgcmQsIDAsIHJt
KSk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
dm9pZCBtb3ZUMyhSZWdpc3RlcklEIHJkLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICB7CiAg
ICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7Cgog
ICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbShPUF9NT1Zf
aW1tX1QzLCBpbW0ubV92YWx1ZS5pbW00LCByZCwgaW1tKTsKICAgIH0KCgogICAgc3RhdGljIHZv
aWQgcmV2ZXJ0SnVtcFRvX21vdlQzbW92dGNtcFQyKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIFJl
Z2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgdWludHB0cl90IGltbSkKICAgIHsKICAg
ICAgICB1aW50MTZfdCogYWRkcmVzcyA9IHN0YXRpY19jYXN0PHVpbnQxNl90Kj4oaW5zdHJ1Y3Rp
b25TdGFydCk7CiAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgbG8xNiA9IEFSTVRodW1iSW1tZWRp
YXRlOjptYWtlVUludDE2KHN0YXRpY19jYXN0PHVpbnQxNl90PihpbW0pKTsKICAgICAgICBBUk1U
aHVtYkltbWVkaWF0ZSBoaTE2ID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoc3RhdGlj
X2Nhc3Q8dWludDE2X3Q+KGltbSA+PiAxNikpOwogICAgICAgIHVpbnQxNl90IGluc3RydWN0aW9u
W10gPSB7CiAgICAgICAgICAgIHR3b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbUZpcnN0KE9Q
X01PVl9pbW1fVDMsIGxvMTYpLAogICAgICAgICAgICB0d29Xb3JkT3A1aTZJbW00UmVnNEVuY29k
ZWRJbW1TZWNvbmQocmlnaHQsIGxvMTYpLAogICAgICAgICAgICB0d29Xb3JkT3A1aTZJbW00UmVn
NEVuY29kZWRJbW1GaXJzdChPUF9NT1ZULCBoaTE2KSwKICAgICAgICAgICAgdHdvV29yZE9wNWk2
SW1tNFJlZzRFbmNvZGVkSW1tU2Vjb25kKHJpZ2h0LCBoaTE2KSwKICAgICAgICAgICAgT1BfQ01Q
X3JlZ19UMiB8IGxlZnQKICAgICAgICB9OwogICAgICAgIHBlcmZvcm1KSVRNZW1jcHkoYWRkcmVz
cywgaW5zdHJ1Y3Rpb24sIHNpemVvZih1aW50MTZfdCkgKiA1KTsKICAgICAgICBjYWNoZUZsdXNo
KGFkZHJlc3MsIHNpemVvZih1aW50MTZfdCkgKiA1KTsKICAgIH0KIyAxMzU3ICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgiCiAgICBpbmxpbmUg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIG1vdihSZWdpc3RlcklEIHJk
LCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAg
ICgodm9pZCkwKTsKCiAgICAgICAgaWYgKChyZCA8IDgpICYmIGltbS5pc1VJbnQ4KCkpCiAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDVSZWczSW1tOChPUF9NT1ZfaW1tX1QxLCByZCwg
aW1tLmdldFVJbnQ4KCkpOwogICAgICAgIGVsc2UgaWYgKGltbS5pc0VuY29kZWRJbW0oKSkKICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tKE9QX01P
Vl9pbW1fVDIsIDB4ZiwgcmQsIGltbSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBtb3ZUMyhy
ZCwgaW1tKTsKICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSB2b2lkIG1vdihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJtKQogICAgewogICAgICAg
IG1fZm9ybWF0dGVyLm9uZVdvcmRPcDhSZWdSZWcxNDMoT1BfTU9WX3JlZ19UMSwgcm0sIHJkKTsK
ICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lk
IG1vdnQoUmVnaXN0ZXJJRCByZCwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAgewogICAgICAg
ICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29y
ZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tKE9QX01PVlQsIGltbS5tX3ZhbHVlLmltbTQsIHJkLCBp
bW0pOwogICAgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp
IHZvaWQgbXZuKFJlZ2lzdGVySUQgcmQsIEFSTVRodW1iSW1tZWRpYXRlIGltbSkKICAgIHsKICAg
ICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICBtX2Zvcm1hdHRlci50
d29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW0oT1BfTVZOX2ltbSwgMHhmLCByZCwgaW1tKTsK
ICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lk
IG12bihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJtLCBTaGlmdFR5cGVBbmRBbW91bnQgc2hp
ZnQpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICBt
X2Zvcm1hdHRlci50d29Xb3JkT3AxNkZvdXJGb3VycyhPUF9NVk5fcmVnX1QyLCBGb3VyRm91cnMo
c2hpZnQuaGk0KCksIHJkLCBzaGlmdC5sbzQoKSwgcm0pKTsKICAgIH0KCiAgICBpbmxpbmUgX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIG12bihSZWdpc3RlcklEIHJkLCBS
ZWdpc3RlcklEIHJtKQogICAgewogICAgICAgIGlmICghKChyZCB8IHJtKSAmIDgpKQogICAgICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3AxMFJlZzNSZWczKE9QX01WTl9yZWdfVDEsIHJtLCBy
ZCk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBtdm4ocmQsIHJtLCBTaGlmdFR5cGVBbmRBbW91
bnQoKSk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
KSkgdm9pZCBuZWcoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybSkKICAgIHsKICAgICAgICBB
Uk1UaHVtYkltbWVkaWF0ZSB6ZXJvID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTIoMCk7
CiAgICAgICAgc3ViKHJkLCB6ZXJvLCBybSk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBvcnIoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJ
RCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAg
ICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIG1fZm9ybWF0dGVyLnR3
b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbShPUF9PUlJfaW1tX1QxLCBybiwgcmQsIGltbSk7
CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9p
ZCBvcnIoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgU2hpZnRU
eXBlQW5kQW1vdW50IHNoaWZ0KQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZv
aWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEy
UmVnNEZvdXJGb3VycyhPUF9PUlJfcmVnX1QyLCBybiwgRm91ckZvdXJzKHNoaWZ0LmhpNCgpLCBy
ZCwgc2hpZnQubG80KCksIHJtKSk7CiAgICB9CgogICAgdm9pZCBvcnIoUmVnaXN0ZXJJRCByZCwg
UmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSkKICAgIHsKICAgICAgICBpZiAoKHJkID09IHJu
KSAmJiAhKChyZCB8IHJtKSAmIDgpKQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3Ax
MFJlZzNSZWczKE9QX09SUl9yZWdfVDEsIHJtLCByZCk7CiAgICAgICAgZWxzZSBpZiAoKHJkID09
IHJtKSAmJiAhKChyZCB8IHJuKSAmIDgpKQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3Jk
T3AxMFJlZzNSZWczKE9QX09SUl9yZWdfVDEsIHJuLCByZCk7CiAgICAgICAgZWxzZQogICAgICAg
ICAgICBvcnIocmQsIHJuLCBybSwgU2hpZnRUeXBlQW5kQW1vdW50KCkpOwogICAgfQoKICAgIGlu
bGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgb3JyX1MoUmVnaXN0
ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgU2hpZnRUeXBlQW5kQW1vdW50
IHNoaWZ0KQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAg
ICAgKCh2b2lkKTApOwogICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNEZvdXJGb3Vy
cyhPUF9PUlJfU19yZWdfVDIsIHJuLCBGb3VyRm91cnMoc2hpZnQuaGk0KCksIHJkLCBzaGlmdC5s
bzQoKSwgcm0pKTsKICAgIH0KCiAgICB2b2lkIG9ycl9TKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVy
SUQgcm4sIFJlZ2lzdGVySUQgcm0pCiAgICB7CiAgICAgICAgaWYgKChyZCA9PSBybikgJiYgISgo
cmQgfCBybSkgJiA4KSkKICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lV29yZE9wMTBSZWczUmVn
MyhPUF9PUlJfcmVnX1QxLCBybSwgcmQpOwogICAgICAgIGVsc2UgaWYgKChyZCA9PSBybSkgJiYg
ISgocmQgfCBybikgJiA4KSkKICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lV29yZE9wMTBSZWcz
UmVnMyhPUF9PUlJfcmVnX1QxLCBybiwgcmQpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgb3Jy
X1MocmQsIHJuLCBybSwgU2hpZnRUeXBlQW5kQW1vdW50KCkpOwogICAgfQoKICAgIGlubGluZSBf
X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgcm9yKFJlZ2lzdGVySUQgcmQs
IFJlZ2lzdGVySUQgcm0sIGludDMyX3Qgc2hpZnRBbW91bnQpCiAgICB7CiAgICAgICAgKCh2b2lk
KTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICBTaGlmdFR5cGVBbmRBbW91bnQgc2hpZnQo
U1JUeXBlX1JPUiwgc2hpZnRBbW91bnQpOwogICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDE2
Rm91ckZvdXJzKE9QX1JPUl9pbW1fVDEsIEZvdXJGb3VycyhzaGlmdC5oaTQoKSwgcmQsIHNoaWZ0
LmxvNCgpLCBybSkpOwogICAgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIHZvaWQgcm9yKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVy
SUQgcm0pCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAg
ICAoKHZvaWQpMCk7CiAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0Rm91ckZvdXJz
KE9QX1JPUl9yZWdfVDIsIHJuLCBGb3VyRm91cnMoMHhmLCByZCwgMCwgcm0pKTsKICAgIH0KCiAg
ICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHBvcChSZWdp
c3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgaWYgKGRlc3QgPCBBUk1SZWdpc3RlcnM6OnI4KQog
ICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3A3SW1tOShPUF9QT1BfVDEsIDEgPDwgZGVz
dCk7CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICBsZHIoZGVzdCwgQVJNUmVnaXN0ZXJzOjpz
cCwgc2l6ZW9mKHZvaWQqKSwgZmFsc2UsIHRydWUpOwogICAgICAgIH0KICAgIH0KCiAgICBpbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHBvcCh1aW50MzJfdCBy
ZWdpc3Rlckxpc3QpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsK
ICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTZJbW0xNihP
UF9QT1BfVDIsIHJlZ2lzdGVyTGlzdCk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBwdXNoKFJlZ2lzdGVySUQgc3JjKQogICAgewogICAg
ICAgIGlmIChzcmMgPCBBUk1SZWdpc3RlcnM6OnI4KQogICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVXb3JkT3A3SW1tOShPUF9QVVNIX1QxLCAxIDw8IHNyYyk7CiAgICAgICAgZWxzZSBpZiAoc3Jj
ID09IEFSTVJlZ2lzdGVyczo6bHIpCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDdJ
bW05KE9QX1BVU0hfVDEsIDB4MTAwKTsKICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgIHN0cihz
cmMsIEFSTVJlZ2lzdGVyczo6c3AsIC1zaXplb2Yodm9pZCopLCB0cnVlLCB0cnVlKTsKICAgICAg
ICB9CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
dm9pZCBwdXNoKHVpbnQzMl90IHJlZ2lzdGVyTGlzdCkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7
CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICBtX2Zvcm1hdHRl
ci50d29Xb3JkT3AxNkltbTE2KE9QX1BVU0hfVDIsIHJlZ2lzdGVyTGlzdCk7CiAgICB9CiMgMTUy
MSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5o
IgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBzbXVs
bChSZWdpc3RlcklEIHJkTG8sIFJlZ2lzdGVySUQgcmRIaSwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0
ZXJJRCBybSkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAg
ICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAg
ICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNEZvdXJGb3VycyhPUF9TTVVMTF9UMSwgcm4s
IEZvdXJGb3VycyhyZExvLCByZEhpLCAwLCBybSkpOwogICAgfQoKCiAgICBpbmxpbmUgX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHN0cihSZWdpc3RlcklEIHJ0LCBSZWdp
c3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICB7CiAgICAgICAgKCh2b2lkKTAp
OwogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgIGlmICghKChy
dCB8IHJuKSAmIDgpICYmIGltbS5pc1VJbnQ3KCkpCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZVdvcmRPcDVJbW01UmVnM1JlZzMoT1BfU1RSX2ltbV9UMSwgaW1tLmdldFVJbnQ3KCkgPj4gMiwg
cm4sIHJ0KTsKICAgICAgICBlbHNlIGlmICgocm4gPT0gQVJNUmVnaXN0ZXJzOjpzcCkgJiYgIShy
dCAmIDgpICYmIGltbS5pc1VJbnQxMCgpKQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3Jk
T3A1UmVnM0ltbTgoT1BfU1RSX2ltbV9UMiwgcnQsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGltbS5n
ZXRVSW50MTAoKSA+PiAyKSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBtX2Zvcm1hdHRlci50
d29Xb3JkT3AxMlJlZzRSZWc0SW1tMTIoT1BfU1RSX2ltbV9UMywgcm4sIHJ0LCBpbW0uZ2V0VUlu
dDEyKCkpOwogICAgfQojIDE1NTcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQVJNdjdBc3NlbWJsZXIuaCIKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIHZvaWQgc3RyKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIGludCBvZmZz
ZXQsIGJvb2wgaW5kZXgsIGJvb2wgd2JhY2spCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAg
ICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwoKICAg
ICAgICBib29sIGFkZCA9IHRydWU7CiAgICAgICAgaWYgKG9mZnNldCA8IDApIHsKICAgICAgICAg
ICAgYWRkID0gZmFsc2U7CiAgICAgICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7CiAgICAgICAgfQog
ICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgb2Zmc2V0IHw9ICh3YmFjayA8PCA4KTsKICAgICAg
ICBvZmZzZXQgfD0gKGFkZCA8PCA5KTsKICAgICAgICBvZmZzZXQgfD0gKGluZGV4IDw8IDEwKTsK
ICAgICAgICBvZmZzZXQgfD0gKDEgPDwgMTEpOwoKICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3Jk
T3AxMlJlZzRSZWc0SW1tMTIoT1BfU1RSX2ltbV9UNCwgcm4sIHJ0LCBvZmZzZXQpOwogICAgfQoK
CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHN0cihS
ZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtLCB1bnNpZ25lZCBzaGlm
dCA9IDApCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAg
ICAoKHZvaWQpMCk7CgogICAgICAgIGlmICghc2hpZnQgJiYgISgocnQgfCBybiB8IHJtKSAmIDgp
KQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3A3UmVnM1JlZzNSZWczKE9QX1NUUl9y
ZWdfVDEsIHJtLCBybiwgcnQpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvV29yZE9wMTJSZWc0Rm91ckZvdXJzKE9QX1NUUl9yZWdfVDIsIHJuLCBGb3VyRm91cnMocnQs
IDAsIHNoaWZ0LCBybSkpOwogICAgfQoKCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18pKSB2b2lkIHN0cmIoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgQVJN
VGh1bWJJbW1lZGlhdGUgaW1tKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZv
aWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICBpZiAoISgocnQgfCBybikgJiA4KSAm
JiBpbW0uaXNVSW50NygpKQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3A1SW1tNVJl
ZzNSZWczKE9QX1NUUkJfaW1tX1QxLCBpbW0uZ2V0VUludDcoKSA+PiAyLCBybiwgcnQpOwogICAg
ICAgIGVsc2UKICAgICAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0UmVnNEltbTEy
KE9QX1NUUkJfaW1tX1QyLCBybiwgcnQsIGltbS5nZXRVSW50MTIoKSk7CiAgICB9CiMgMTYxNiAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oIgog
ICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBzdHJiKFJl
Z2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIGludCBvZmZzZXQsIGJvb2wgaW5kZXgsIGJvb2wg
d2JhY2spCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAg
ICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICBib29sIGFkZCA9IHRydWU7
CiAgICAgICAgaWYgKG9mZnNldCA8IDApIHsKICAgICAgICAgICAgYWRkID0gZmFsc2U7CiAgICAg
ICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7CiAgICAgICAgfQogICAgICAgICgodm9pZCkwKTsKCiAg
ICAgICAgb2Zmc2V0IHw9ICh3YmFjayA8PCA4KTsKICAgICAgICBvZmZzZXQgfD0gKGFkZCA8PCA5
KTsKICAgICAgICBvZmZzZXQgfD0gKGluZGV4IDw8IDEwKTsKICAgICAgICBvZmZzZXQgfD0gKDEg
PDwgMTEpOwoKICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRSZWc0SW1tMTIoT1Bf
U1RSQl9pbW1fVDMsIHJuLCBydCwgb2Zmc2V0KTsKICAgIH0KCgogICAgaW5saW5lIF9fYXR0cmli
dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBzdHJiKFJlZ2lzdGVySUQgcnQsIFJlZ2lz
dGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIHVuc2lnbmVkIHNoaWZ0ID0gMCkKICAgIHsKICAgICAg
ICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAgICAg
ICAgaWYgKCFzaGlmdCAmJiAhKChydCB8IHJuIHwgcm0pICYgOCkpCiAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZVdvcmRPcDdSZWczUmVnM1JlZzMoT1BfU1RSQl9yZWdfVDEsIHJtLCBybiwgcnQp
OwogICAgICAgIGVsc2UKICAgICAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0Rm91
ckZvdXJzKE9QX1NUUkJfcmVnX1QyLCBybiwgRm91ckZvdXJzKHJ0LCAwLCBzaGlmdCwgcm0pKTsK
ICAgIH0KCgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9p
ZCBzdHJoKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIEFSTVRodW1iSW1tZWRpYXRlIGlt
bSkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgo
dm9pZCkwKTsKCiAgICAgICAgaWYgKCEoKHJ0IHwgcm4pICYgOCkgJiYgaW1tLmlzVUludDYoKSkK
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lV29yZE9wNUltbTVSZWczUmVnMyhPUF9TVFJIX2lt
bV9UMSwgaW1tLmdldFVJbnQ2KCkgPj4gMSwgcm4sIHJ0KTsKICAgICAgICBlbHNlCiAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNFJlZzRJbW0xMihPUF9TVFJIX2ltbV9UMiwg
cm4sIHJ0LCBpbW0uZ2V0VUludDEyKCkpOwogICAgfQojIDE2NzUgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaCIKICAgIGlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgc3RyaChSZWdpc3RlcklEIHJ0LCBSZWdp
c3RlcklEIHJuLCBpbnQgb2Zmc2V0LCBib29sIGluZGV4LCBib29sIHdiYWNrKQogICAgewogICAg
ICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAg
ICAgICgodm9pZCkwKTsKCiAgICAgICAgYm9vbCBhZGQgPSB0cnVlOwogICAgICAgIGlmIChvZmZz
ZXQgPCAwKSB7CiAgICAgICAgICAgIGFkZCA9IGZhbHNlOwogICAgICAgICAgICBvZmZzZXQgPSAt
b2Zmc2V0OwogICAgICAgIH0KICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgIG9mZnNldCB8PSAo
d2JhY2sgPDwgOCk7CiAgICAgICAgb2Zmc2V0IHw9IChhZGQgPDwgOSk7CiAgICAgICAgb2Zmc2V0
IHw9IChpbmRleCA8PCAxMCk7CiAgICAgICAgb2Zmc2V0IHw9ICgxIDw8IDExKTsKCiAgICAgICAg
bV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0UmVnNEltbTEyKE9QX1NUUkhfaW1tX1QzLCBybiwg
cnQsIG9mZnNldCk7CiAgICB9CgoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIHZvaWQgc3RyaChSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBSZWdpc3Rl
cklEIHJtLCB1bnNpZ25lZCBzaGlmdCA9IDApCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAg
ICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgIGlmICghc2hpZnQgJiYg
ISgocnQgfCBybiB8IHJtKSAmIDgpKQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3A3
UmVnM1JlZzNSZWczKE9QX1NUUkhfcmVnX1QxLCBybSwgcm4sIHJ0KTsKICAgICAgICBlbHNlCiAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDEyUmVnNEZvdXJGb3VycyhPUF9TVFJIX3Jl
Z19UMiwgcm4sIEZvdXJGb3VycyhydCwgMCwgc2hpZnQsIHJtKSk7CiAgICB9CgogICAgaW5saW5l
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBzdWIoUmVnaXN0ZXJJRCBy
ZCwgUmVnaXN0ZXJJRCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAgewoKICAgICAgICAo
KHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICAo
KHZvaWQpMCk7CgogICAgICAgIGlmICgocm4gPT0gQVJNUmVnaXN0ZXJzOjpzcCkgJiYgKHJkID09
IEFSTVJlZ2lzdGVyczo6c3ApICYmIGltbS5pc1VJbnQ5KCkpIHsKICAgICAgICAgICAgKCh2b2lk
KTApOwogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3A5SW1tNyhPUF9TVUJfU1BfaW1t
X1QxLCBzdGF0aWNfY2FzdDx1aW50OF90PihpbW0uZ2V0VUludDkoKSA+PiAyKSk7CiAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICB9IGVsc2UgaWYgKCEoKHJkIHwgcm4pICYgOCkpIHsKICAgICAg
ICAgICAgaWYgKGltbS5pc1VJbnQzKCkpIHsKICAgICAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZVdvcmRPcDdSZWczUmVnM1JlZzMoT1BfU1VCX2ltbV9UMSwgKFJlZ2lzdGVySUQpaW1tLmdldFVJ
bnQzKCksIHJuLCByZCk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0gZWxz
ZSBpZiAoKHJkID09IHJuKSAmJiBpbW0uaXNVSW50OCgpKSB7CiAgICAgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVXb3JkT3A1UmVnM0ltbTgoT1BfU1VCX2ltbV9UMiwgcmQsIGltbS5nZXRVSW50
OCgpKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAg
ICAgICAgaWYgKGltbS5pc0VuY29kZWRJbW0oKSkKICAgICAgICAgICAgbV9mb3JtYXR0ZXIudHdv
V29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tKE9QX1NVQl9pbW1fVDMsIHJuLCByZCwgaW1tKTsK
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICBtX2Zvcm1h
dHRlci50d29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW0oT1BfU1VCX2ltbV9UNCwgcm4sIHJk
LCBpbW0pOwogICAgICAgIH0KICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18pKSB2b2lkIHN1YihSZWdpc3RlcklEIHJkLCBBUk1UaHVtYkltbWVkaWF0ZSBp
bW0sIFJlZ2lzdGVySUQgcm4pCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9p
ZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICBpZiAo
ISgocmQgfCBybikgJiA4KSAmJiAhaW1tLmdldFVJbnQxMigpKQogICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVXb3JkT3AxMFJlZzNSZWczKE9QX1JTQl9pbW1fVDEsIHJuLCByZCk7CiAgICAgICAg
ZWxzZQogICAgICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJ
bW0oT1BfUlNCX2ltbV9UMiwgcm4sIHJkLCBpbW0pOwogICAgfQoKICAgIGlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgc3ViKFJlZ2lzdGVySUQgcmQsIFJlZ2lz
dGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIFNoaWZ0VHlwZUFuZEFtb3VudCBzaGlmdCkKICAgIHsK
ICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsK
ICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0Rm91
ckZvdXJzKE9QX1NVQl9yZWdfVDIsIHJuLCBGb3VyRm91cnMoc2hpZnQuaGk0KCksIHJkLCBzaGlm
dC5sbzQoKSwgcm0pKTsKICAgIH0KCgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fKSkgdm9pZCBzdWIoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0
ZXJJRCBybSkKICAgIHsKICAgICAgICBpZiAoISgocmQgfCBybiB8IHJtKSAmIDgpKQogICAgICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3A3UmVnM1JlZzNSZWczKE9QX1NVQl9yZWdfVDEsIHJt
LCBybiwgcmQpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgc3ViKHJkLCBybiwgcm0sIFNoaWZ0
VHlwZUFuZEFtb3VudCgpKTsKICAgIH0KCgogICAgdm9pZCBzdWJfUyhSZWdpc3RlcklEIHJkLCBS
ZWdpc3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCiAgICB7CgogICAgICAgICgodm9p
ZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9p
ZCkwKTsKCiAgICAgICAgaWYgKChybiA9PSBBUk1SZWdpc3RlcnM6OnNwKSAmJiAocmQgPT0gQVJN
UmVnaXN0ZXJzOjpzcCkgJiYgaW1tLmlzVUludDkoKSkgewogICAgICAgICAgICAoKHZvaWQpMCk7
CiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDlJbW03KE9QX1NVQl9TUF9pbW1fVDEs
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGltbS5nZXRVSW50OSgpID4+IDIpKTsKICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgIH0gZWxzZSBpZiAoISgocmQgfCBybikgJiA4KSkgewogICAgICAgICAg
ICBpZiAoaW1tLmlzVUludDMoKSkgewogICAgICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lV29y
ZE9wN1JlZzNSZWczUmVnMyhPUF9TVUJfaW1tX1QxLCAoUmVnaXN0ZXJJRClpbW0uZ2V0VUludDMo
KSwgcm4sIHJkKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfSBlbHNlIGlm
ICgocmQgPT0gcm4pICYmIGltbS5pc1VJbnQ4KCkpIHsKICAgICAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZVdvcmRPcDVSZWczSW1tOChPUF9TVUJfaW1tX1QyLCByZCwgaW1tLmdldFVJbnQ4KCkp
OwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAg
ICBtX2Zvcm1hdHRlci50d29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW0oT1BfU1VCX1NfaW1t
X1QzLCBybiwgcmQsIGltbSk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgdm9pZCBzdWJfUyhSZWdpc3RlcklEIHJkLCBBUk1UaHVtYkltbWVkaWF0
ZSBpbW0sIFJlZ2lzdGVySUQgcm4pCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgo
dm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICBt
X2Zvcm1hdHRlci50d29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW0oT1BfUlNCX1NfaW1tX1Qy
LCBybiwgcmQsIGltbSk7CiAgICB9CgoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXykpIHZvaWQgc3ViX1MoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVn
aXN0ZXJJRCBybSwgU2hpZnRUeXBlQW5kQW1vdW50IHNoaWZ0KQogICAgewogICAgICAgICgodm9p
ZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9p
ZCkwKTsKICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRGb3VyRm91cnMoT1BfU1VC
X1NfcmVnX1QyLCBybiwgRm91ckZvdXJzKHNoaWZ0LmhpNCgpLCByZCwgc2hpZnQubG80KCksIHJt
KSk7CiAgICB9CgoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp
IHZvaWQgc3ViX1MoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSkK
ICAgIHsKICAgICAgICBpZiAoISgocmQgfCBybiB8IHJtKSAmIDgpKQogICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVXb3JkT3A3UmVnM1JlZzNSZWczKE9QX1NVQl9yZWdfVDEsIHJtLCBybiwgcmQp
OwogICAgICAgIGVsc2UKICAgICAgICAgICAgc3ViX1MocmQsIHJuLCBybSwgU2hpZnRUeXBlQW5k
QW1vdW50KCkpOwogICAgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp
bmVfXykpIHZvaWQgdHN0KFJlZ2lzdGVySUQgcm4sIEFSTVRodW1iSW1tZWRpYXRlIGltbSkKICAg
IHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICBtX2Zvcm1h
dHRlci50d29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW0oT1BfVFNUX2ltbSwgcm4sIChSZWdp
c3RlcklEKTB4ZiwgaW1tKTsKICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18pKSB2b2lkIHRzdChSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtLCBTaGlm
dFR5cGVBbmRBbW91bnQgc2hpZnQpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgo
dm9pZCkwKTsKICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRGb3VyRm91cnMoT1Bf
VFNUX3JlZ19UMiwgcm4sIEZvdXJGb3VycyhzaGlmdC5oaTQoKSwgMHhmLCBzaGlmdC5sbzQoKSwg
cm0pKTsKICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p
KSB2b2lkIHRzdChSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQogICAgewogICAgICAgIGlm
ICgocm4gfCBybSkgJiA4KQogICAgICAgICAgICB0c3Qocm4sIHJtLCBTaGlmdFR5cGVBbmRBbW91
bnQoKSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVXb3JkT3AxMFJl
ZzNSZWczKE9QX1RTVF9yZWdfVDEsIHJtLCBybik7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmli
dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCB1YmZ4KFJlZ2lzdGVySUQgcmQsIFJlZ2lz
dGVySUQgcm4sIHVuc2lnbmVkIGxzYiwgdW5zaWduZWQgd2lkdGgpCiAgICB7CiAgICAgICAgKCh2
b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9m
b3JtYXR0ZXIudHdvV29yZE9wMTJSZWc0MEltbTNSZWc0SW1tMjBJbW01KE9QX1VCRlhfVDEsIHJk
LCBybiwgKGxzYiAmIDB4MWMpIDw8IDEwLCAobHNiICYgMHgzKSA8PCA2LCAod2lkdGggLSAxKSAm
IDB4MWYpOwogICAgfQojIDE4NjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQVJNdjdBc3NlbWJsZXIuaCIKICAgIHZvaWQgdmFkZChGUERvdWJsZVJlZ2lzdGVySUQgcmQs
IEZQRG91YmxlUmVnaXN0ZXJJRCBybiwgRlBEb3VibGVSZWdpc3RlcklEIHJtKQogICAgewogICAg
ICAgIG1fZm9ybWF0dGVyLnZmcE9wKE9QX1ZBRERfVDIsIE9QX1ZBRERfVDJiLCB0cnVlLCBybiwg
cmQsIHJtKTsKICAgIH0KCiAgICB2b2lkIHZjbXAoRlBEb3VibGVSZWdpc3RlcklEIHJkLCBGUERv
dWJsZVJlZ2lzdGVySUQgcm0pCiAgICB7CiAgICAgICAgbV9mb3JtYXR0ZXIudmZwT3AoT1BfVkNN
UCwgT1BfVkNNUGIsIHRydWUsIFZGUE9wZXJhbmQoNCksIHJkLCBybSk7CiAgICB9CgogICAgdm9p
ZCB2Y21weihGUERvdWJsZVJlZ2lzdGVySUQgcmQpCiAgICB7CiAgICAgICAgbV9mb3JtYXR0ZXIu
dmZwT3AoT1BfVkNNUCwgT1BfVkNNUGIsIHRydWUsIFZGUE9wZXJhbmQoNSksIHJkLCBWRlBPcGVy
YW5kKDApKTsKICAgIH0KCiAgICB2b2lkIHZjdnRfc2lnbmVkVG9GbG9hdGluZ1BvaW50KEZQRG91
YmxlUmVnaXN0ZXJJRCByZCwgRlBTaW5nbGVSZWdpc3RlcklEIHJtKQogICAgewoKICAgICAgICBt
X2Zvcm1hdHRlci52ZnBPcChPUF9WQ1ZUX0ZQSVZGUCwgT1BfVkNWVF9GUElWRlBiLCB0cnVlLCB2
Y3Z0T3AoZmFsc2UsIGZhbHNlLCBmYWxzZSksIHJkLCBybSk7CiAgICB9CgogICAgdm9pZCB2Y3Z0
X2Zsb2F0aW5nUG9pbnRUb1NpZ25lZChGUFNpbmdsZVJlZ2lzdGVySUQgcmQsIEZQRG91YmxlUmVn
aXN0ZXJJRCBybSkKICAgIHsKCiAgICAgICAgbV9mb3JtYXR0ZXIudmZwT3AoT1BfVkNWVF9GUElW
RlAsIE9QX1ZDVlRfRlBJVkZQYiwgdHJ1ZSwgdmN2dE9wKHRydWUsIGZhbHNlLCB0cnVlKSwgcmQs
IHJtKTsKICAgIH0KCiAgICB2b2lkIHZjdnRfZmxvYXRpbmdQb2ludFRvVW5zaWduZWQoRlBTaW5n
bGVSZWdpc3RlcklEIHJkLCBGUERvdWJsZVJlZ2lzdGVySUQgcm0pCiAgICB7CgogICAgICAgIG1f
Zm9ybWF0dGVyLnZmcE9wKE9QX1ZDVlRfRlBJVkZQLCBPUF9WQ1ZUX0ZQSVZGUGIsIHRydWUsIHZj
dnRPcCh0cnVlLCB0cnVlLCB0cnVlKSwgcmQsIHJtKTsKICAgIH0KCiAgICB2b2lkIHZkaXYoRlBE
b3VibGVSZWdpc3RlcklEIHJkLCBGUERvdWJsZVJlZ2lzdGVySUQgcm4sIEZQRG91YmxlUmVnaXN0
ZXJJRCBybSkKICAgIHsKICAgICAgICBtX2Zvcm1hdHRlci52ZnBPcChPUF9WRElWLCBPUF9WRElW
YiwgdHJ1ZSwgcm4sIHJkLCBybSk7CiAgICB9CgogICAgdm9pZCB2bGRyKEZQRG91YmxlUmVnaXN0
ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgaW50MzJfdCBpbW0pCiAgICB7CiAgICAgICAgbV9mb3Jt
YXR0ZXIudmZwTWVtT3AoT1BfVkxEUiwgT1BfVkxEUmIsIHRydWUsIHJuLCByZCwgaW1tKTsKICAg
IH0KCiAgICB2b2lkIGZsZHMoRlBTaW5nbGVSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBp
bnQzMl90IGltbSkKICAgIHsKICAgICAgICBtX2Zvcm1hdHRlci52ZnBNZW1PcChPUF9GTERTLCBP
UF9GTERTYiwgZmFsc2UsIHJuLCByZCwgaW1tKTsKICAgIH0KCiAgICB2b2lkIHZtb3YoUmVnaXN0
ZXJJRCByZCwgRlBTaW5nbGVSZWdpc3RlcklEIHJuKQogICAgewogICAgICAgICgodm9pZCkwKTsK
ICAgICAgICBtX2Zvcm1hdHRlci52ZnBPcChPUF9WTU9WX1N0b0MsIE9QX1ZNT1ZfU3RvQ2IsIGZh
bHNlLCBybiwgcmQsIFZGUE9wZXJhbmQoMCkpOwogICAgfQoKICAgIHZvaWQgdm1vdihGUFNpbmds
ZVJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4pCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwog
ICAgICAgIG1fZm9ybWF0dGVyLnZmcE9wKE9QX1ZNT1ZfQ3RvUywgT1BfVk1PVl9DdG9TYiwgZmFs
c2UsIHJkLCBybiwgVkZQT3BlcmFuZCgwKSk7CiAgICB9CgogICAgdm9pZCB2bW92KFJlZ2lzdGVy
SUQgcmQxLCBSZWdpc3RlcklEIHJkMiwgRlBEb3VibGVSZWdpc3RlcklEIHJuKQogICAgewogICAg
ICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9mb3JtYXR0ZXIudmZw
T3AoT1BfVk1PVl9EdG9DLCBPUF9WTU9WX0R0b0NiLCB0cnVlLCByZDIsIFZGUE9wZXJhbmQocmQx
IHwgMTYpLCBybik7CiAgICB9CgogICAgdm9pZCB2bW92KEZQRG91YmxlUmVnaXN0ZXJJRCByZCwg
UmVnaXN0ZXJJRCBybjEsIFJlZ2lzdGVySUQgcm4yKQogICAgewogICAgICAgICgodm9pZCkwKTsK
ICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9mb3JtYXR0ZXIudmZwT3AoT1BfVk1PVl9DdG9E
LCBPUF9WTU9WX0N0b0RiLCB0cnVlLCBybjIsIFZGUE9wZXJhbmQocm4xIHwgMTYpLCByZCk7CiAg
ICB9CgogICAgdm9pZCB2bW92KEZQRG91YmxlUmVnaXN0ZXJJRCByZCwgRlBEb3VibGVSZWdpc3Rl
cklEIHJuKQogICAgewogICAgICAgIG1fZm9ybWF0dGVyLnZmcE9wKE9QX1ZNT1ZfVDIsIE9QX1ZN
T1ZfVDJiLCB0cnVlLCBWRlBPcGVyYW5kKDApLCByZCwgcm4pOwogICAgfQoKICAgIHZvaWQgdm1y
cyhSZWdpc3RlcklEIHJlZyA9IEFSTVJlZ2lzdGVyczo6cGMpCiAgICB7CiAgICAgICAgKCh2b2lk
KTApOwogICAgICAgIG1fZm9ybWF0dGVyLnZmcE9wKE9QX1ZNUlMsIE9QX1ZNUlNiLCBmYWxzZSwg
VkZQT3BlcmFuZCgxKSwgVkZQT3BlcmFuZCgweDEwIHwgcmVnKSwgVkZQT3BlcmFuZCgwKSk7CiAg
ICB9CgogICAgdm9pZCB2bXVsKEZQRG91YmxlUmVnaXN0ZXJJRCByZCwgRlBEb3VibGVSZWdpc3Rl
cklEIHJuLCBGUERvdWJsZVJlZ2lzdGVySUQgcm0pCiAgICB7CiAgICAgICAgbV9mb3JtYXR0ZXIu
dmZwT3AoT1BfVk1VTF9UMiwgT1BfVk1VTF9UMmIsIHRydWUsIHJuLCByZCwgcm0pOwogICAgfQoK
ICAgIHZvaWQgdnN0cihGUERvdWJsZVJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIGludDMy
X3QgaW1tKQogICAgewogICAgICAgIG1fZm9ybWF0dGVyLnZmcE1lbU9wKE9QX1ZTVFIsIE9QX1ZT
VFJiLCB0cnVlLCBybiwgcmQsIGltbSk7CiAgICB9CgogICAgdm9pZCBmc3RzKEZQU2luZ2xlUmVn
aXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgaW50MzJfdCBpbW0pCiAgICB7CiAgICAgICAgbV9m
b3JtYXR0ZXIudmZwTWVtT3AoT1BfRlNUUywgT1BfRlNUU2IsIGZhbHNlLCBybiwgcmQsIGltbSk7
CiAgICB9CgogICAgdm9pZCB2c3ViKEZQRG91YmxlUmVnaXN0ZXJJRCByZCwgRlBEb3VibGVSZWdp
c3RlcklEIHJuLCBGUERvdWJsZVJlZ2lzdGVySUQgcm0pCiAgICB7CiAgICAgICAgbV9mb3JtYXR0
ZXIudmZwT3AoT1BfVlNVQl9UMiwgT1BfVlNVQl9UMmIsIHRydWUsIHJuLCByZCwgcm0pOwogICAg
fQoKICAgIHZvaWQgdmFicyhGUERvdWJsZVJlZ2lzdGVySUQgcmQsIEZQRG91YmxlUmVnaXN0ZXJJ
RCBybSkKICAgIHsKICAgICAgICBtX2Zvcm1hdHRlci52ZnBPcChPUF9WQUJTX1QyLCBPUF9WQUJT
X1QyYiwgdHJ1ZSwgVkZQT3BlcmFuZCgxNiksIHJkLCBybSk7CiAgICB9CgogICAgdm9pZCB2bmVn
KEZQRG91YmxlUmVnaXN0ZXJJRCByZCwgRlBEb3VibGVSZWdpc3RlcklEIHJtKQogICAgewogICAg
ICAgIG1fZm9ybWF0dGVyLnZmcE9wKE9QX1ZORUdfVDIsIE9QX1ZORUdfVDJiLCB0cnVlLCBWRlBP
cGVyYW5kKDEpLCByZCwgcm0pOwogICAgfQoKICAgIHZvaWQgdnNxcnQoRlBEb3VibGVSZWdpc3Rl
cklEIHJkLCBGUERvdWJsZVJlZ2lzdGVySUQgcm0pCiAgICB7CiAgICAgICAgbV9mb3JtYXR0ZXIu
dmZwT3AoT1BfVlNRUlRfVDEsIE9QX1ZTUVJUX1QxYiwgdHJ1ZSwgVkZQT3BlcmFuZCgxNyksIHJk
LCBybSk7CiAgICB9CgogICAgdm9pZCB2Y3Z0ZHMoRlBEb3VibGVSZWdpc3RlcklEIHJkLCBGUFNp
bmdsZVJlZ2lzdGVySUQgcm0pCiAgICB7CiAgICAgICAgbV9mb3JtYXR0ZXIudmZwT3AoT1BfVkNW
VERTX1QxLCBPUF9WQ1ZURFNfVDFiLCBmYWxzZSwgVkZQT3BlcmFuZCgyMyksIHJkLCBybSk7CiAg
ICB9CgogICAgdm9pZCB2Y3Z0c2QoRlBTaW5nbGVSZWdpc3RlcklEIHJkLCBGUERvdWJsZVJlZ2lz
dGVySUQgcm0pCiAgICB7CiAgICAgICAgbV9mb3JtYXR0ZXIudmZwT3AoT1BfVkNWVFNEX1QxLCBP
UF9WQ1ZUU0RfVDFiLCB0cnVlLCBWRlBPcGVyYW5kKDIzKSwgcmQsIHJtKTsKICAgIH0KCiAgICB2
b2lkIG5vcCgpCiAgICB7CiAgICAgICAgbV9mb3JtYXR0ZXIub25lV29yZE9wOEltbTgoT1BfTk9Q
X1QxLCAwKTsKICAgIH0KCiAgICB2b2lkIG5vcHcoKQogICAgewogICAgICAgIG1fZm9ybWF0dGVy
LnR3b1dvcmRPcDE2T3AxNihPUF9OT1BfVDJhLCBPUF9OT1BfVDJiKTsKICAgIH0KCiAgICB2b2lk
IGRtYlNZKCkKICAgIHsKICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxNk9wMTYoT1BfRE1C
X1NZX1QyYSwgT1BfRE1CX1NZX1QyYik7CiAgICB9CgogICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxJ
Z25vcmluZ1dhdGNocG9pbnRzKCkKICAgIHsKICAgICAgICByZXR1cm4gbV9mb3JtYXR0ZXIubGFi
ZWwoKTsKICAgIH0KCiAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbEZvcldhdGNocG9pbnQoKQogICAg
ewogICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fZm9ybWF0dGVyLmxhYmVsKCk7CiAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSAhPSBtX2luZGV4T2ZM
YXN0V2F0Y2hwb2ludCkKICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKICAgICAgICBtX2lu
ZGV4T2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldDsKICAgICAgICBtX2luZGV4T2ZU
YWlsT2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldCArIG1heEp1bXBSZXBsYWNlbWVu
dFNpemUoKTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKICAgIEFzc2VtYmxlckxhYmVs
IGxhYmVsKCkKICAgIHsKICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2Zvcm1hdHRl
ci5sYWJlbCgpOwogICAgICAgIHdoaWxlIChfX2J1aWx0aW5fZXhwZWN0KCEhKHN0YXRpY19jYXN0
PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSA8IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KSwg
MCkpIHsKICAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoc3RhdGljX2Nhc3Q8aW50
PihyZXN1bHQubV9vZmZzZXQpICsgNCA8PSBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCks
IDApKQogICAgICAgICAgICAgICAgbm9wdygpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICBub3AoKTsKICAgICAgICAgICAgcmVzdWx0ID0gbV9mb3JtYXR0ZXIubGFiZWwoKTsKICAg
ICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICBBc3NlbWJsZXJMYWJlbCBh
bGlnbihpbnQgYWxpZ25tZW50KQogICAgewogICAgICAgIHdoaWxlICghbV9mb3JtYXR0ZXIuaXNB
bGlnbmVkKGFsaWdubWVudCkpCiAgICAgICAgICAgIGJrcHQoKTsKCiAgICAgICAgcmV0dXJuIGxh
YmVsKCk7CiAgICB9CgogICAgc3RhdGljIHZvaWQqIGdldFJlbG9jYXRlZEFkZHJlc3Modm9pZCog
Y29kZSwgQXNzZW1ibGVyTGFiZWwgbGFiZWwpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWludGVycHJldF9jYXN0PHB0cmRp
ZmZfdD4oY29kZSkgKyBsYWJlbC5tX29mZnNldCk7CiAgICB9CgogICAgc3RhdGljIGludCBnZXRE
aWZmZXJlbmNlQmV0d2VlbkxhYmVscyhBc3NlbWJsZXJMYWJlbCBhLCBBc3NlbWJsZXJMYWJlbCBi
KQogICAgewogICAgICAgIHJldHVybiBiLm1fb2Zmc2V0IC0gYS5tX29mZnNldDsKICAgIH0KCiAg
ICBzdGF0aWMgaW50IGp1bXBTaXplRGVsdGEoSnVtcFR5cGUganVtcFR5cGUsIEp1bXBMaW5rVHlw
ZSBqdW1wTGlua1R5cGUpIHsgcmV0dXJuICgoanVtcFR5cGUpID4+IDMpIC0gKChqdW1wTGlua1R5
cGUpID4+IDMpOyB9CgoKCiAgICBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fKSkgYm9vbCBsaW5rUmVjb3JkU291cmNlQ29tcGFyYXRvcihjb25zdCBMaW5rUmVj
b3JkJiBhLCBjb25zdCBMaW5rUmVjb3JkJiBiKQogICAgewogICAgICAgIHJldHVybiBhLmZyb20o
KSA8IGIuZnJvbSgpOwogICAgfQoKICAgIHN0YXRpYyBib29sIGNhbkNvbXBhY3QoSnVtcFR5cGUg
anVtcFR5cGUpCiAgICB7CgoKCgogICAgICAgIHJldHVybiAoanVtcFR5cGUgPT0gSnVtcE5vQ29u
ZGl0aW9uKSB8fCAoanVtcFR5cGUgPT0gSnVtcENvbmRpdGlvbik7CiAgICB9CgogICAgc3RhdGlj
IEp1bXBMaW5rVHlwZSBjb21wdXRlSnVtcFR5cGUoSnVtcFR5cGUganVtcFR5cGUsIGNvbnN0IHVp
bnQ4X3QqIGZyb20sIGNvbnN0IHVpbnQ4X3QqIHRvKQogICAgewogICAgICAgIGlmIChqdW1wVHlw
ZSA9PSBKdW1wRml4ZWQpCiAgICAgICAgICAgIHJldHVybiBMaW5rSW52YWxpZDsKCgogICAgICAg
IGlmIChqdW1wVHlwZSA9PSBKdW1wTm9Db25kaXRpb25GaXhlZFNpemUpCiAgICAgICAgICAgIHJl
dHVybiBMaW5rQlg7CiAgICAgICAgaWYgKGp1bXBUeXBlID09IEp1bXBDb25kaXRpb25GaXhlZFNp
emUpCiAgICAgICAgICAgIHJldHVybiBMaW5rQ29uZGl0aW9uYWxCWDsKCiAgICAgICAgY29uc3Qg
aW50IHBhZGRpbmdTaXplID0gKChqdW1wVHlwZSkgPj4gMyk7CgogICAgICAgIGlmIChqdW1wVHlw
ZSA9PSBKdW1wQ29uZGl0aW9uKSB7CgogICAgICAgICAgICBjb25zdCB1aW50MTZfdCoganVtcFQx
TG9jYXRpb24gPSByZWludGVycHJldF9jYXN0X3B0cjxjb25zdCB1aW50MTZfdCo+KGZyb20gLSAo
cGFkZGluZ1NpemUgLSAoKExpbmtKdW1wVDEpID4+IDMpKSk7CiAgICAgICAgICAgIGlmIChjYW5C
ZUp1bXBUMShqdW1wVDFMb2NhdGlvbiwgdG8pKQogICAgICAgICAgICAgICAgcmV0dXJuIExpbmtK
dW1wVDE7CgogICAgICAgICAgICBjb25zdCB1aW50MTZfdCoganVtcFQzTG9jYXRpb24gPSByZWlu
dGVycHJldF9jYXN0X3B0cjxjb25zdCB1aW50MTZfdCo+KGZyb20gLSAocGFkZGluZ1NpemUgLSAo
KExpbmtKdW1wVDMpID4+IDMpKSk7CiAgICAgICAgICAgIGlmIChjYW5CZUp1bXBUMyhqdW1wVDNM
b2NhdGlvbiwgdG8pKQogICAgICAgICAgICAgICAgcmV0dXJuIExpbmtKdW1wVDM7CgogICAgICAg
ICAgICBjb25zdCB1aW50MTZfdCogY29uZGl0aW9uYWxKdW1wVDRMb2NhdGlvbiA9CiAgICAgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IHVpbnQxNl90Kj4oZnJvbSAtIChwYWRkaW5n
U2l6ZSAtICgoTGlua0NvbmRpdGlvbmFsSnVtcFQ0KSA+PiAzKSkpOwogICAgICAgICAgICBpZiAo
Y2FuQmVKdW1wVDQoY29uZGl0aW9uYWxKdW1wVDRMb2NhdGlvbiwgdG8pKQogICAgICAgICAgICAg
ICAgcmV0dXJuIExpbmtDb25kaXRpb25hbEp1bXBUNDsKICAgICAgICB9IGVsc2UgewoKICAgICAg
ICAgICAgY29uc3QgdWludDE2X3QqIGp1bXBUMkxvY2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdF9w
dHI8Y29uc3QgdWludDE2X3QqPihmcm9tIC0gKHBhZGRpbmdTaXplIC0gKChMaW5rSnVtcFQyKSA+
PiAzKSkpOwogICAgICAgICAgICBpZiAoY2FuQmVKdW1wVDIoanVtcFQyTG9jYXRpb24sIHRvKSkK
ICAgICAgICAgICAgICAgIHJldHVybiBMaW5rSnVtcFQyOwoKICAgICAgICAgICAgY29uc3QgdWlu
dDE2X3QqIGp1bXBUNExvY2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdWludDE2
X3QqPihmcm9tIC0gKHBhZGRpbmdTaXplIC0gKChMaW5rSnVtcFQ0KSA+PiAzKSkpOwogICAgICAg
ICAgICBpZiAoY2FuQmVKdW1wVDQoanVtcFQ0TG9jYXRpb24sIHRvKSkKICAgICAgICAgICAgICAg
IHJldHVybiBMaW5rSnVtcFQ0OwoKICAgICAgICAgICAgcmV0dXJuIExpbmtCWDsKICAgICAgICB9
CgogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gTGlua0NvbmRpdGlvbmFsQlg7CiAg
ICB9CgogICAgc3RhdGljIEp1bXBMaW5rVHlwZSBjb21wdXRlSnVtcFR5cGUoTGlua1JlY29yZCYg
cmVjb3JkLCBjb25zdCB1aW50OF90KiBmcm9tLCBjb25zdCB1aW50OF90KiB0bykKICAgIHsKICAg
ICAgICBKdW1wTGlua1R5cGUgbGlua1R5cGUgPSBjb21wdXRlSnVtcFR5cGUocmVjb3JkLnR5cGUo
KSwgZnJvbSwgdG8pOwogICAgICAgIHJlY29yZC5zZXRMaW5rVHlwZShsaW5rVHlwZSk7CiAgICAg
ICAgcmV0dXJuIGxpbmtUeXBlOwogICAgfQoKICAgIFZlY3RvcjxMaW5rUmVjb3JkLCAwLCBVbnNh
ZmVWZWN0b3JPdmVyZmxvdz4mIGp1bXBzVG9MaW5rKCkKICAgIHsKICAgICAgICBzdGQ6OnNvcnQo
bV9qdW1wc1RvTGluay5iZWdpbigpLCBtX2p1bXBzVG9MaW5rLmVuZCgpLCBsaW5rUmVjb3JkU291
cmNlQ29tcGFyYXRvcik7CiAgICAgICAgcmV0dXJuIG1fanVtcHNUb0xpbms7CiAgICB9CgogICAg
c3RhdGljIHZvaWQgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgbGlu
ayhMaW5rUmVjb3JkJiByZWNvcmQsIHVpbnQ4X3QqIGZyb20sIGNvbnN0IHVpbnQ4X3QqIGZyb21J
bnN0cnVjdGlvbjgsIHVpbnQ4X3QqIHRvKQogICAgewogICAgICAgIGNvbnN0IHVpbnQxNl90KiBm
cm9tSW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9jYXN0X3B0cjxjb25zdCB1aW50MTZfdCo+KGZy
b21JbnN0cnVjdGlvbjgpOwogICAgICAgIHN3aXRjaCAocmVjb3JkLmxpbmtUeXBlKCkpIHsKICAg
ICAgICBjYXNlIExpbmtKdW1wVDE6CiAgICAgICAgICAgIGxpbmtKdW1wVDEocmVjb3JkLmNvbmRp
dGlvbigpLCByZWludGVycHJldF9jYXN0X3B0cjx1aW50MTZfdCo+KGZyb20pLCBmcm9tSW5zdHJ1
Y3Rpb24sIHRvKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBMaW5rSnVtcFQyOgog
ICAgICAgICAgICBsaW5rSnVtcFQyKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQxNl90Kj4oZnJv
bSksIGZyb21JbnN0cnVjdGlvbiwgdG8pOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNl
IExpbmtKdW1wVDM6CiAgICAgICAgICAgIGxpbmtKdW1wVDMocmVjb3JkLmNvbmRpdGlvbigpLCBy
ZWludGVycHJldF9jYXN0X3B0cjx1aW50MTZfdCo+KGZyb20pLCBmcm9tSW5zdHJ1Y3Rpb24sIHRv
KTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBMaW5rSnVtcFQ0OgogICAgICAgICAg
ICBsaW5rSnVtcFQ0KHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQxNl90Kj4oZnJvbSksIGZyb21J
bnN0cnVjdGlvbiwgdG8pOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIExpbmtDb25k
aXRpb25hbEp1bXBUNDoKICAgICAgICAgICAgbGlua0NvbmRpdGlvbmFsSnVtcFQ0KHJlY29yZC5j
b25kaXRpb24oKSwgcmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDE2X3QqPihmcm9tKSwgZnJvbUlu
c3RydWN0aW9uLCB0byk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgTGlua0NvbmRp
dGlvbmFsQlg6CiAgICAgICAgICAgIGxpbmtDb25kaXRpb25hbEJYKHJlY29yZC5jb25kaXRpb24o
KSwgcmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDE2X3QqPihmcm9tKSwgZnJvbUluc3RydWN0aW9u
LCB0byk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgTGlua0JYOgogICAgICAgICAg
ICBsaW5rQlgocmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDE2X3QqPihmcm9tKSwgZnJvbUluc3Ry
dWN0aW9uLCB0byk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgIFdURkNyYXNoKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgICB2
b2lkKiB1bmxpbmtlZENvZGUoKSB7IHJldHVybiBtX2Zvcm1hdHRlci5kYXRhKCk7IH0KICAgIHNp
emVfdCBjb2RlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0dGVyLmNvZGVTaXplKCk7IH0K
CiAgICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldChBc3NlbWJsZXJMYWJlbCBj
YWxsKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gY2FsbC5tX29mZnNl
dDsKICAgIH0KIyAyMTgyICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FS
TXY3QXNzZW1ibGVyLmgiCiAgICB2b2lkIGxpbmtKdW1wKEFzc2VtYmxlckxhYmVsIGZyb20sIEFz
c2VtYmxlckxhYmVsIHRvLCBKdW1wVHlwZSB0eXBlLCBDb25kaXRpb24gY29uZGl0aW9uKQogICAg
ewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9qdW1wc1Rv
TGluay5hcHBlbmQoTGlua1JlY29yZChmcm9tLm1fb2Zmc2V0LCB0by5tX29mZnNldCwgdHlwZSwg
Y29uZGl0aW9uKSk7CiAgICB9CgogICAgc3RhdGljIHZvaWQgbGlua0p1bXAodm9pZCogY29kZSwg
QXNzZW1ibGVyTGFiZWwgZnJvbSwgdm9pZCogdG8pCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwoK
ICAgICAgICB1aW50MTZfdCogbG9jYXRpb24gPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4o
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oY29kZSkgKyBmcm9tLm1fb2Zmc2V0KTsKICAgICAg
ICBsaW5rSnVtcEFic29sdXRlKGxvY2F0aW9uLCBsb2NhdGlvbiwgdG8pOwogICAgfQoKICAgIHN0
YXRpYyB2b2lkIGxpbmtDYWxsKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGZyb20sIHZvaWQq
IHRvKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAg
IHNldFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
aW50cHRyX3Q+KGNvZGUpICsgZnJvbS5tX29mZnNldCkgLSAxLCB0bywgZmFsc2UpOwogICAgfQoK
ICAgIHN0YXRpYyB2b2lkIGxpbmtQb2ludGVyKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIHdo
ZXJlLCB2b2lkKiB2YWx1ZSkKICAgIHsKICAgICAgICBzZXRQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGNvZGUpICsgd2hlcmUubV9vZmZzZXQsIHZhbHVlLCBmYWxzZSk7CiAgICB9CgoK
CgoKICAgIHN0YXRpYyB2b2lkIHJlbGlua0p1bXAodm9pZCogZnJvbSwgdm9pZCogdG8pCiAgICB7
CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgbGlua0p1bXBB
YnNvbHV0ZShyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oZnJvbSksIHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDE2X3QqPihmcm9tKSwgdG8pOwoKICAgICAgICBjYWNoZUZsdXNoKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDE2X3QqPihmcm9tKSAtIDUsIDUgKiBzaXplb2YodWludDE2X3QpKTsKICAgIH0K
CiAgICBzdGF0aWMgdm9pZCByZWxpbmtDYWxsKHZvaWQqIGZyb20sIHZvaWQqIHRvKQogICAgewog
ICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgc2V0UG9pbnRlcihyZWludGVycHJldF9jYXN0PHVp
bnQxNl90Kj4oZnJvbSkgLSAxLCB0bywgdHJ1ZSk7CiAgICB9CgogICAgc3RhdGljIHZvaWQqIHJl
YWRDYWxsVGFyZ2V0KHZvaWQqIGZyb20pCiAgICB7CiAgICAgICAgcmV0dXJuIHJlYWRQb2ludGVy
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihmcm9tKSAtIDEpOwogICAgfQoKICAgIHN0YXRp
YyB2b2lkIHJlcGF0Y2hJbnQzMih2b2lkKiB3aGVyZSwgaW50MzJfdCB2YWx1ZSkKICAgIHsKICAg
ICAgICAoKHZvaWQpMCk7CgogICAgICAgIHNldEludDMyKHdoZXJlLCB2YWx1ZSwgdHJ1ZSk7CiAg
ICB9CgogICAgc3RhdGljIHZvaWQgcmVwYXRjaENvbXBhY3Qodm9pZCogd2hlcmUsIGludDMyX3Qg
b2Zmc2V0KQogICAgewogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgYm9vbCBhZGQgPSB0cnVl
OwogICAgICAgIGlmIChvZmZzZXQgPCAwKSB7CiAgICAgICAgICAgIGFkZCA9IGZhbHNlOwogICAg
ICAgICAgICBvZmZzZXQgPSAtb2Zmc2V0OwogICAgICAgIH0KCiAgICAgICAgb2Zmc2V0IHw9IChh
ZGQgPDwgOSk7CiAgICAgICAgb2Zmc2V0IHw9ICgxIDw8IDEwKTsKICAgICAgICBvZmZzZXQgfD0g
KDEgPDwgMTEpOwoKICAgICAgICB1aW50MTZfdCogbG9jYXRpb24gPSByZWludGVycHJldF9jYXN0
PHVpbnQxNl90Kj4od2hlcmUpOwogICAgICAgIHVpbnQxNl90IGluc3RydWN0aW9uID0gbG9jYXRp
b25bMV0gJiB+KCgxIDw8IDEyKSAtIDEpOwogICAgICAgIGluc3RydWN0aW9uIHw9IG9mZnNldDsK
ICAgICAgICBwZXJmb3JtSklUTWVtY3B5KGxvY2F0aW9uICsgMSwgJmluc3RydWN0aW9uLCBzaXpl
b2YodWludDE2X3QpKTsKICAgICAgICBjYWNoZUZsdXNoKGxvY2F0aW9uLCBzaXplb2YodWludDE2
X3QpICogMik7CiAgICB9CgogICAgc3RhdGljIHZvaWQgcmVwYXRjaFBvaW50ZXIodm9pZCogd2hl
cmUsIHZvaWQqIHZhbHVlKQogICAgewogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgc2V0UG9p
bnRlcih3aGVyZSwgdmFsdWUsIHRydWUpOwogICAgfQoKICAgIHN0YXRpYyB2b2lkKiByZWFkUG9p
bnRlcih2b2lkKiB3aGVyZSkKICAgIHsKICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocmVhZEludDMyKHdoZXJlKSk7CiAgICB9CgogICAgc3RhdGljIHZvaWQgcmVwbGFjZVdp
dGhKdW1wKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIHZvaWQqIHRvKQogICAgewogICAgICAgICgo
dm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CgoKICAgICAgICBpZiAoY2FuQmVKdW1wVDQocmVp
bnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0aW9uU3RhcnQpLCB0bykpIHsKICAgICAg
ICAgICAgdWludDE2X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihpbnN0cnVj
dGlvblN0YXJ0KSArIDI7CiAgICAgICAgICAgIGxpbmtKdW1wVDQocHRyLCBwdHIsIHRvKTsKICAg
ICAgICAgICAgY2FjaGVGbHVzaChwdHIgLSAyLCBzaXplb2YodWludDE2X3QpICogMik7CiAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgdWludDE2X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDE2X3QqPihpbnN0cnVjdGlvblN0YXJ0KSArIDU7CiAgICAgICAgICAgIGxpbmtCWChwdHIs
IHB0ciwgdG8pOwogICAgICAgICAgICBjYWNoZUZsdXNoKHB0ciAtIDUsIHNpemVvZih1aW50MTZf
dCkgKiA1KTsKICAgICAgICB9CgoKCgoKICAgIH0KCiAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1
bXBSZXBsYWNlbWVudFNpemUoKQogICAgewoKICAgICAgICByZXR1cm4gMTA7CgoKCiAgICB9Cgog
ICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2FkKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCiAg
ICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHVpbnQxNl90KiBwdHIgPSByZWludGVycHJl
dF9jYXN0PHVpbnQxNl90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7CiAgICAgICAgc3dpdGNoIChwdHJb
MF0gJiAweEZGRjApIHsKICAgICAgICBjYXNlIE9QX0xEUl9pbW1fVDM6CiAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgIGNhc2UgT1BfQUREX2ltbV9UMzogewogICAgICAgICAgICAoKHZvaWQpMCk7
CiAgICAgICAgICAgIHVpbnQxNl90IGluc3RydWN0aW9uc1syXTsKICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zWzBdID0gcHRyWzBdICYgMHgwMDBGOwogICAgICAgICAgICBpbnN0cnVjdGlvbnNbMF0g
fD0gT1BfTERSX2ltbV9UMzsKICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zWzFdID0gcHRyWzFdIHwg
KHB0clsxXSAmIDB4MEYwMCkgPDwgNDsKICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zWzFdICY9IDB4
RjBGRjsKICAgICAgICAgICAgcGVyZm9ybUpJVE1lbWNweShwdHIsIGluc3RydWN0aW9ucywgc2l6
ZW9mKHVpbnQxNl90KSAqIDIpOwogICAgICAgICAgICBjYWNoZUZsdXNoKHB0ciwgc2l6ZW9mKHVp
bnQxNl90KSAqIDIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgV1RGQ3Jhc2goKTsKICAgICAgICB9CiAgICB9CgogICAgc3RhdGljIHZv
aWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24odm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkK
ICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgdWludDE2X3QqIHB0ciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDE2X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKICAgICAgICBzd2l0Y2ggKHB0
clswXSAmIDB4RkZGMCkgewogICAgICAgIGNhc2UgT1BfTERSX2ltbV9UMzogewogICAgICAgICAg
ICAoKHZvaWQpMCk7CiAgICAgICAgICAgIHVpbnQxNl90IGluc3RydWN0aW9uc1syXTsKICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25zWzBdID0gcHRyWzBdICYgMHgwMDBGOwogICAgICAgICAgICBpbnN0
cnVjdGlvbnNbMF0gfD0gT1BfQUREX2ltbV9UMzsKICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zWzFd
ID0gcHRyWzFdIHwgKHB0clsxXSAmIDB4RjAwMCkgPj4gNDsKICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zWzFdICY9IDB4MEZGRjsKICAgICAgICAgICAgcGVyZm9ybUpJVE1lbWNweShwdHIsIGluc3Ry
dWN0aW9ucywgc2l6ZW9mKHVpbnQxNl90KSAqIDIpOwogICAgICAgICAgICBjYWNoZUZsdXNoKHB0
ciwgc2l6ZW9mKHVpbnQxNl90KSAqIDIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAg
ICAgICAgY2FzZSBPUF9BRERfaW1tX1QzOgogICAgICAgICAgICBicmVhazsKICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICBXVEZDcmFzaCgpOwogICAgICAgIH0KICAgIH0KCiAgICB1bnNpZ25l
ZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1fZm9ybWF0dGVyLmRlYnVnT2Zmc2V0KCk7IH0KCgog
ICAgc3RhdGljIGlubGluZSB2b2lkIGxpbnV4UGFnZUZsdXNoKHVpbnRwdHJfdCBiZWdpbiwgdWlu
dHB0cl90IGVuZCkKICAgIHsKICAgICAgICBhc20gdm9sYXRpbGUoCiAgICAgICAgICAgICJwdXNo
ICAgIHtyN31cbiIKICAgICAgICAgICAgIm1vdiAgICAgcjAsICUwXG4iCiAgICAgICAgICAgICJt
b3YgICAgIHIxLCAlMVxuIgogICAgICAgICAgICAibW92dyAgICByNywgIzB4MlxuIgogICAgICAg
ICAgICAibW92dCAgICByNywgIzB4ZlxuIgogICAgICAgICAgICAibW92cyAgICByMiwgIzB4MFxu
IgogICAgICAgICAgICAic3ZjICAgICAweDBcbiIKICAgICAgICAgICAgInBvcCAgICAge3I3fVxu
IgogICAgICAgICAgICA6CiAgICAgICAgICAgIDogInIiIChiZWdpbiksICJyIiAoZW5kKQogICAg
ICAgICAgICA6ICJyMCIsICJyMSIsICJyMiIpOwogICAgfQoKCiAgICBzdGF0aWMgdm9pZCBjYWNo
ZUZsdXNoKHZvaWQqIGNvZGUsIHNpemVfdCBzaXplKQogICAgewoKCgogICAgICAgIHNpemVfdCBw
YWdlID0gcGFnZVNpemUoKTsKICAgICAgICB1aW50cHRyX3QgY3VycmVudCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pihjb2RlKTsKICAgICAgICB1aW50cHRyX3QgZW5kID0gY3VycmVudCAr
IHNpemU7CiAgICAgICAgdWludHB0cl90IGZpcnN0UGFnZUVuZCA9IChjdXJyZW50ICYgfihwYWdl
IC0gMSkpICsgcGFnZTsKCiAgICAgICAgaWYgKGVuZCA8PSBmaXJzdFBhZ2VFbmQpIHsKICAgICAg
ICAgICAgbGludXhQYWdlRmx1c2goY3VycmVudCwgZW5kKTsKICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgIH0KCiAgICAgICAgbGludXhQYWdlRmx1c2goY3VycmVudCwgZmlyc3RQYWdlRW5kKTsK
CiAgICAgICAgZm9yIChjdXJyZW50ID0gZmlyc3RQYWdlRW5kOyBjdXJyZW50ICsgcGFnZSA8IGVu
ZDsgY3VycmVudCArPSBwYWdlKQogICAgICAgICAgICBsaW51eFBhZ2VGbHVzaChjdXJyZW50LCBj
dXJyZW50ICsgcGFnZSk7CgogICAgICAgIGxpbnV4UGFnZUZsdXNoKGN1cnJlbnQsIGVuZCk7CgoK
CiAgICB9Cgpwcml2YXRlOgojIDI0MTAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQVJNdjdBc3NlbWJsZXIuaCIKICAgIHN0cnVjdCBWRlBPcGVyYW5kIHsKICAgICAgICBl
eHBsaWNpdCBWRlBPcGVyYW5kKHVpbnQzMl90IHZhbHVlKQogICAgICAgICAgICA6IG1fdmFsdWUo
dmFsdWUpCiAgICAgICAgewogICAgICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgfQoKICAgICAg
ICBWRlBPcGVyYW5kKEZQRG91YmxlUmVnaXN0ZXJJRCByZWcpCiAgICAgICAgICAgIDogbV92YWx1
ZShyZWcpCiAgICAgICAgewogICAgICAgIH0KCiAgICAgICAgVkZQT3BlcmFuZChSZWdpc3RlcklE
IHJlZykKICAgICAgICAgICAgOiBtX3ZhbHVlKHJlZykKICAgICAgICB7CiAgICAgICAgfQoKICAg
ICAgICBWRlBPcGVyYW5kKEZQU2luZ2xlUmVnaXN0ZXJJRCByZWcpCiAgICAgICAgICAgIDogbV92
YWx1ZSgoKHJlZyAmIDEpIDw8IDQpIHwgKHJlZyA+PiAxKSkKICAgICAgICB7CiAgICAgICAgfQoK
ICAgICAgICB1aW50MzJfdCBiaXRzMSgpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gbV92
YWx1ZSA+PiA0OwogICAgICAgIH0KCiAgICAgICAgdWludDMyX3QgYml0czQoKQogICAgICAgIHsK
ICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUgJiAweGY7CiAgICAgICAgfQoKICAgICAgICB1aW50
MzJfdCBtX3ZhbHVlOwogICAgfTsKCiAgICBWRlBPcGVyYW5kIHZjdnRPcChib29sIHRvSW50ZWdl
ciwgYm9vbCBpc1Vuc2lnbmVkLCBib29sIGlzUm91bmRaZXJvKQogICAgewoKICAgICAgICAoKHZv
aWQpMCk7CgogICAgICAgIHVpbnQzMl90IG9wID0gMHg4OwogICAgICAgIGlmICh0b0ludGVnZXIp
IHsKCiAgICAgICAgICAgIG9wIHw9IGlzVW5zaWduZWQgPyAweDQgOiAweDU7CgogICAgICAgICAg
ICBpZiAoaXNSb3VuZFplcm8pCiAgICAgICAgICAgICAgICBvcCB8PSAweDEwOwogICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgICAgIGlmICghaXNVbnNpZ25l
ZCkKICAgICAgICAgICAgICAgIG9wIHw9IDB4MTA7CiAgICAgICAgfQogICAgICAgIHJldHVybiBW
RlBPcGVyYW5kKG9wKTsKICAgIH0KCiAgICBzdGF0aWMgdm9pZCBzZXRJbnQzMih2b2lkKiBjb2Rl
LCB1aW50MzJfdCB2YWx1ZSwgYm9vbCBmbHVzaCkKICAgIHsKICAgICAgICB1aW50MTZfdCogbG9j
YXRpb24gPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oY29kZSk7CiAgICAgICAgKCh2b2lk
KTApOwoKICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBsbzE2ID0gQVJNVGh1bWJJbW1lZGlhdGU6
Om1ha2VVSW50MTYoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZhbHVlKSk7CiAgICAgICAgQVJNVGh1
bWJJbW1lZGlhdGUgaGkxNiA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KHN0YXRpY19j
YXN0PHVpbnQxNl90Pih2YWx1ZSA+PiAxNikpOwogICAgICAgIHVpbnQxNl90IGluc3RydWN0aW9u
c1s0XTsKICAgICAgICBpbnN0cnVjdGlvbnNbMF0gPSB0d29Xb3JkT3A1aTZJbW00UmVnNEVuY29k
ZWRJbW1GaXJzdChPUF9NT1ZfaW1tX1QzLCBsbzE2KTsKICAgICAgICBpbnN0cnVjdGlvbnNbMV0g
PSB0d29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW1TZWNvbmQoKGxvY2F0aW9uWy0zXSA+PiA4
KSAmIDB4ZiwgbG8xNik7CiAgICAgICAgaW5zdHJ1Y3Rpb25zWzJdID0gdHdvV29yZE9wNWk2SW1t
NFJlZzRFbmNvZGVkSW1tRmlyc3QoT1BfTU9WVCwgaGkxNik7CiAgICAgICAgaW5zdHJ1Y3Rpb25z
WzNdID0gdHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tU2Vjb25kKChsb2NhdGlvblstMV0g
Pj4gOCkgJiAweGYsIGhpMTYpOwoKICAgICAgICBwZXJmb3JtSklUTWVtY3B5KGxvY2F0aW9uIC0g
NCwgaW5zdHJ1Y3Rpb25zLCA0ICogc2l6ZW9mKHVpbnQxNl90KSk7CiAgICAgICAgaWYgKGZsdXNo
KQogICAgICAgICAgICBjYWNoZUZsdXNoKGxvY2F0aW9uIC0gNCwgNCAqIHNpemVvZih1aW50MTZf
dCkpOwogICAgfQoKICAgIHN0YXRpYyBpbnQzMl90IHJlYWRJbnQzMih2b2lkKiBjb2RlKQogICAg
ewogICAgICAgIHVpbnQxNl90KiBsb2NhdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3Qq
Pihjb2RlKTsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGxv
MTY7CiAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgaGkxNjsKICAgICAgICBkZWNvZGVUd29Xb3Jk
T3A1aTZJbW00UmVnNEVuY29kZWRJbW1GaXJzdChsbzE2LCBsb2NhdGlvblstNF0pOwogICAgICAg
IGRlY29kZVR3b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbVNlY29uZChsbzE2LCBsb2NhdGlv
blstM10pOwogICAgICAgIGRlY29kZVR3b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbUZpcnN0
KGhpMTYsIGxvY2F0aW9uWy0yXSk7CiAgICAgICAgZGVjb2RlVHdvV29yZE9wNWk2SW1tNFJlZzRF
bmNvZGVkSW1tU2Vjb25kKGhpMTYsIGxvY2F0aW9uWy0xXSk7CiAgICAgICAgdWludDMyX3QgcmVz
dWx0ID0gaGkxNi5hc1VJbnQxNigpOwogICAgICAgIHJlc3VsdCA8PD0gMTY7CiAgICAgICAgcmVz
dWx0IHw9IGxvMTYuYXNVSW50MTYoKTsKICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJf
dD4ocmVzdWx0KTsKICAgIH0KCiAgICBzdGF0aWMgdm9pZCBzZXRVSW50N0ZvckxvYWQodm9pZCog
Y29kZSwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAgewoKICAgICAgICAoKHZvaWQpMCk7CiAg
ICAgICAgKCh2b2lkKTApOwogICAgICAgIHVpbnQxNl90KiBsb2NhdGlvbiA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDE2X3QqPihjb2RlKTsKICAgICAgICB1aW50MTZfdCBpbnN0cnVjdGlvbjsKICAg
ICAgICBpbnN0cnVjdGlvbiA9IGxvY2F0aW9uWzBdICYgfigoc3RhdGljX2Nhc3Q8dWludDE2X3Q+
KDB4N2YpID4+IDIpIDw8IDYpOwogICAgICAgIGluc3RydWN0aW9uIHw9IChpbW0uZ2V0VUludDco
KSA+PiAyKSA8PCA2OwogICAgICAgIHBlcmZvcm1KSVRNZW1jcHkobG9jYXRpb24sICZpbnN0cnVj
dGlvbiwgc2l6ZW9mKHVpbnQxNl90KSk7CiAgICAgICAgY2FjaGVGbHVzaChsb2NhdGlvbiwgc2l6
ZW9mKHVpbnQxNl90KSk7CiAgICB9CgogICAgc3RhdGljIHZvaWQgc2V0UG9pbnRlcih2b2lkKiBj
b2RlLCB2b2lkKiB2YWx1ZSwgYm9vbCBmbHVzaCkKICAgIHsKICAgICAgICBzZXRJbnQzMihjb2Rl
LCByZWludGVycHJldF9jYXN0PHVpbnQzMl90Pih2YWx1ZSksIGZsdXNoKTsKICAgIH0KCiAgICBz
dGF0aWMgYm9vbCBpc0IoY29uc3Qgdm9pZCogYWRkcmVzcykKICAgIHsKICAgICAgICBjb25zdCB1
aW50MTZfdCogaW5zdHJ1Y3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KGFkZHJl
c3MpOwogICAgICAgIHJldHVybiAoKGluc3RydWN0aW9uWzBdICYgMHhmODAwKSA9PSBPUF9CX1Q0
YSkgJiYgKChpbnN0cnVjdGlvblsxXSAmIDB4ZDAwMCkgPT0gT1BfQl9UNGIpOwogICAgfQoKICAg
IHN0YXRpYyBib29sIGlzQlgoY29uc3Qgdm9pZCogYWRkcmVzcykKICAgIHsKICAgICAgICBjb25z
dCB1aW50MTZfdCogaW5zdHJ1Y3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KGFk
ZHJlc3MpOwogICAgICAgIHJldHVybiAoaW5zdHJ1Y3Rpb25bMF0gJiAweGZmODcpID09IE9QX0JY
OwogICAgfQoKICAgIHN0YXRpYyBib29sIGlzTU9WX2ltbV9UMyhjb25zdCB2b2lkKiBhZGRyZXNz
KQogICAgewogICAgICAgIGNvbnN0IHVpbnQxNl90KiBpbnN0cnVjdGlvbiA9IHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQxNl90Kj4oYWRkcmVzcyk7CiAgICAgICAgcmV0dXJuICgoaW5zdHJ1Y3Rpb25b
MF0gJiAweEZCRjApID09IE9QX01PVl9pbW1fVDMpICYmICgoaW5zdHJ1Y3Rpb25bMV0gJiAweDgw
MDApID09IDApOwogICAgfQoKICAgIHN0YXRpYyBib29sIGlzTU9WVChjb25zdCB2b2lkKiBhZGRy
ZXNzKQogICAgewogICAgICAgIGNvbnN0IHVpbnQxNl90KiBpbnN0cnVjdGlvbiA9IHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQxNl90Kj4oYWRkcmVzcyk7CiAgICAgICAgcmV0dXJuICgoaW5zdHJ1Y3Rp
b25bMF0gJiAweEZCRjApID09IE9QX01PVlQpICYmICgoaW5zdHJ1Y3Rpb25bMV0gJiAweDgwMDAp
ID09IDApOwogICAgfQoKICAgIHN0YXRpYyBib29sIGlzTk9QX1QxKGNvbnN0IHZvaWQqIGFkZHJl
c3MpCiAgICB7CiAgICAgICAgY29uc3QgdWludDE2X3QqIGluc3RydWN0aW9uID0gc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDE2X3QqPihhZGRyZXNzKTsKICAgICAgICByZXR1cm4gaW5zdHJ1Y3Rpb25b
MF0gPT0gT1BfTk9QX1QxOwogICAgfQoKICAgIHN0YXRpYyBib29sIGlzTk9QX1QyKGNvbnN0IHZv
aWQqIGFkZHJlc3MpCiAgICB7CiAgICAgICAgY29uc3QgdWludDE2X3QqIGluc3RydWN0aW9uID0g
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihhZGRyZXNzKTsKICAgICAgICByZXR1cm4gKGlu
c3RydWN0aW9uWzBdID09IE9QX05PUF9UMmEpICYmIChpbnN0cnVjdGlvblsxXSA9PSBPUF9OT1Bf
VDJiKTsKICAgIH0KCiAgICBzdGF0aWMgYm9vbCBjYW5CZUp1bXBUMShjb25zdCB1aW50MTZfdCog
aW5zdHJ1Y3Rpb24sIGNvbnN0IHZvaWQqIHRhcmdldCkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7
CiAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICBpbnRwdHJfdCByZWxhdGl2ZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8aW50cHRyX3Q+KHRhcmdldCkgLSAocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
aW5zdHJ1Y3Rpb24pKTsKCgoKICAgICAgICByZWxhdGl2ZSAtPSAyOwogICAgICAgIHJldHVybiAo
KHJlbGF0aXZlIDw8IDIzKSA+PiAyMykgPT0gcmVsYXRpdmU7CiAgICB9CgogICAgc3RhdGljIGJv
b2wgY2FuQmVKdW1wVDIoY29uc3QgdWludDE2X3QqIGluc3RydWN0aW9uLCBjb25zdCB2b2lkKiB0
YXJnZXQpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAgICAg
ICAgaW50cHRyX3QgcmVsYXRpdmUgPSByZWludGVycHJldF9jYXN0PGludHB0cl90Pih0YXJnZXQp
IC0gKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluc3RydWN0aW9uKSk7CgoKCiAgICAgICAg
cmVsYXRpdmUgLT0gMjsKICAgICAgICByZXR1cm4gKChyZWxhdGl2ZSA8PCAyMCkgPj4gMjApID09
IHJlbGF0aXZlOwogICAgfQoKICAgIHN0YXRpYyBib29sIGNhbkJlSnVtcFQzKGNvbnN0IHVpbnQx
Nl90KiBpbnN0cnVjdGlvbiwgY29uc3Qgdm9pZCogdGFyZ2V0KQogICAgewogICAgICAgICgodm9p
ZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgIGludHB0cl90IHJlbGF0aXZlID0gcmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odGFyZ2V0KSAtIChyZWludGVycHJldF9jYXN0PGludHB0
cl90PihpbnN0cnVjdGlvbikpOwogICAgICAgIHJldHVybiAoKHJlbGF0aXZlIDw8IDExKSA+PiAx
MSkgPT0gcmVsYXRpdmU7CiAgICB9CgogICAgc3RhdGljIGJvb2wgY2FuQmVKdW1wVDQoY29uc3Qg
dWludDE2X3QqIGluc3RydWN0aW9uLCBjb25zdCB2b2lkKiB0YXJnZXQpCiAgICB7CiAgICAgICAg
KCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgaW50cHRyX3QgcmVsYXRpdmUg
PSByZWludGVycHJldF9jYXN0PGludHB0cl90Pih0YXJnZXQpIC0gKHJlaW50ZXJwcmV0X2Nhc3Q8
aW50cHRyX3Q+KGluc3RydWN0aW9uKSk7CiAgICAgICAgcmV0dXJuICgocmVsYXRpdmUgPDwgNykg
Pj4gNykgPT0gcmVsYXRpdmU7CiAgICB9CgogICAgc3RhdGljIHZvaWQgbGlua0p1bXBUMShDb25k
aXRpb24gY29uZCwgdWludDE2X3QqIHdyaXRlVGFyZ2V0LCBjb25zdCB1aW50MTZfdCogaW5zdHJ1
Y3Rpb24sIHZvaWQqIHRhcmdldCkKICAgIHsKCiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgo
dm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgIGludHB0cl90IHJlbGF0aXZlID0g
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odGFyZ2V0KSAtIChyZWludGVycHJldF9jYXN0PGlu
dHB0cl90PihpbnN0cnVjdGlvbikpOwoKCgogICAgICAgIHJlbGF0aXZlIC09IDI7CgoKICAgICAg
ICAoKHZvaWQpMCk7CiAgICAgICAgdWludDE2X3QgbmV3SW5zdHJ1Y3Rpb24gPSBPUF9CX1QxIHwg
KChjb25kICYgMHhmKSA8PCA4KSB8ICgocmVsYXRpdmUgJiAweDFmZSkgPj4gMSk7CiAgICAgICAg
cGVyZm9ybUpJVE1lbWNweSh3cml0ZVRhcmdldCAtIDEsICZuZXdJbnN0cnVjdGlvbiwgc2l6ZW9m
KHVpbnQxNl90KSk7CiAgICB9CgogICAgc3RhdGljIHZvaWQgbGlua0p1bXBUMih1aW50MTZfdCog
d3JpdGVUYXJnZXQsIGNvbnN0IHVpbnQxNl90KiBpbnN0cnVjdGlvbiwgdm9pZCogdGFyZ2V0KQog
ICAgewoKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9p
ZCkwKTsKCiAgICAgICAgaW50cHRyX3QgcmVsYXRpdmUgPSByZWludGVycHJldF9jYXN0PGludHB0
cl90Pih0YXJnZXQpIC0gKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluc3RydWN0aW9uKSk7
CgoKCiAgICAgICAgcmVsYXRpdmUgLT0gMjsKCgogICAgICAgICgodm9pZCkwKTsKICAgICAgICB1
aW50MTZfdCBuZXdJbnN0cnVjdGlvbiA9IE9QX0JfVDIgfCAoKHJlbGF0aXZlICYgMHhmZmUpID4+
IDEpOwogICAgICAgIHBlcmZvcm1KSVRNZW1jcHkod3JpdGVUYXJnZXQgLSAxLCAmbmV3SW5zdHJ1
Y3Rpb24sIHNpemVvZih1aW50MTZfdCkpOwogICAgfQoKICAgIHN0YXRpYyB2b2lkIGxpbmtKdW1w
VDMoQ29uZGl0aW9uIGNvbmQsIHVpbnQxNl90KiB3cml0ZVRhcmdldCwgY29uc3QgdWludDE2X3Qq
IGluc3RydWN0aW9uLCB2b2lkKiB0YXJnZXQpCiAgICB7CgogICAgICAgICgodm9pZCkwKTsKICAg
ICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICBpbnRwdHJfdCByZWxh
dGl2ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRhcmdldCkgLSAocmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4oaW5zdHJ1Y3Rpb24pKTsKCgogICAgICAgICgodm9pZCkwKTsKICAgICAg
ICB1aW50MTZfdCBpbnN0cnVjdGlvbnNbMl07CiAgICAgICAgaW5zdHJ1Y3Rpb25zWzBdID0gT1Bf
Ql9UM2EgfCAoKHJlbGF0aXZlICYgMHgxMDAwMDApID4+IDEwKSB8ICgoY29uZCAmIDB4ZikgPDwg
NikgfCAoKHJlbGF0aXZlICYgMHgzZjAwMCkgPj4gMTIpOwogICAgICAgIGluc3RydWN0aW9uc1sx
XSA9IE9QX0JfVDNiIHwgKChyZWxhdGl2ZSAmIDB4ODAwMDApID4+IDgpIHwgKChyZWxhdGl2ZSAm
IDB4NDAwMDApID4+IDUpIHwgKChyZWxhdGl2ZSAmIDB4ZmZlKSA+PiAxKTsKICAgICAgICBwZXJm
b3JtSklUTWVtY3B5KHdyaXRlVGFyZ2V0IC0gMiwgaW5zdHJ1Y3Rpb25zLCAyICogc2l6ZW9mKHVp
bnQxNl90KSk7CiAgICB9CgogICAgc3RhdGljIHZvaWQgbGlua0p1bXBUNCh1aW50MTZfdCogd3Jp
dGVUYXJnZXQsIGNvbnN0IHVpbnQxNl90KiBpbnN0cnVjdGlvbiwgdm9pZCogdGFyZ2V0KQogICAg
ewoKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkw
KTsKCiAgICAgICAgaW50cHRyX3QgcmVsYXRpdmUgPSByZWludGVycHJldF9jYXN0PGludHB0cl90
Pih0YXJnZXQpIC0gKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluc3RydWN0aW9uKSk7Cgog
ICAgICAgIGlmIChyZWxhdGl2ZSA+PSAwKQogICAgICAgICAgICByZWxhdGl2ZSBePSAweEMwMDAw
MDsKCgogICAgICAgICgodm9pZCkwKTsKICAgICAgICB1aW50MTZfdCBpbnN0cnVjdGlvbnNbMl07
CiAgICAgICAgaW5zdHJ1Y3Rpb25zWzBdID0gT1BfQl9UNGEgfCAoKHJlbGF0aXZlICYgMHgxMDAw
MDAwKSA+PiAxNCkgfCAoKHJlbGF0aXZlICYgMHgzZmYwMDApID4+IDEyKTsKICAgICAgICBpbnN0
cnVjdGlvbnNbMV0gPSBPUF9CX1Q0YiB8ICgocmVsYXRpdmUgJiAweDgwMDAwMCkgPj4gMTApIHwg
KChyZWxhdGl2ZSAmIDB4NDAwMDAwKSA+PiAxMSkgfCAoKHJlbGF0aXZlICYgMHhmZmUpID4+IDEp
OwogICAgICAgIHBlcmZvcm1KSVRNZW1jcHkod3JpdGVUYXJnZXQgLSAyLCBpbnN0cnVjdGlvbnMs
IDIgKiBzaXplb2YodWludDE2X3QpKTsKICAgIH0KCiAgICBzdGF0aWMgdm9pZCBsaW5rQ29uZGl0
aW9uYWxKdW1wVDQoQ29uZGl0aW9uIGNvbmQsIHVpbnQxNl90KiB3cml0ZVRhcmdldCwgY29uc3Qg
dWludDE2X3QqIGluc3RydWN0aW9uLCB2b2lkKiB0YXJnZXQpCiAgICB7CgogICAgICAgICgodm9p
ZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgIHVpbnQxNl90IG5ld0luc3RydWN0aW9u
ID0gaWZUaGVuRWxzZShjb25kKSB8IE9QX0lUOwogICAgICAgIHBlcmZvcm1KSVRNZW1jcHkod3Jp
dGVUYXJnZXQgLSAzLCAmbmV3SW5zdHJ1Y3Rpb24sIHNpemVvZih1aW50MTZfdCkpOwogICAgICAg
IGxpbmtKdW1wVDQod3JpdGVUYXJnZXQsIGluc3RydWN0aW9uLCB0YXJnZXQpOwogICAgfQoKICAg
IHN0YXRpYyB2b2lkIGxpbmtCWCh1aW50MTZfdCogd3JpdGVUYXJnZXQsIGNvbnN0IHVpbnQxNl90
KiBpbnN0cnVjdGlvbiwgdm9pZCogdGFyZ2V0KQogICAgewoKICAgICAgICAoKHZvaWQpaW5zdHJ1
Y3Rpb24pOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgIGNv
bnN0IHVpbnQxNl90IEpVTVBfVEVNUE9SQVJZX1JFR0lTVEVSID0gQVJNUmVnaXN0ZXJzOjppcDsK
ICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBsbzE2ID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VV
SW50MTYoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KHRh
cmdldCkgKyAxKSk7CiAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgaGkxNiA9IEFSTVRodW1iSW1t
ZWRpYXRlOjptYWtlVUludDE2KHN0YXRpY19jYXN0PHVpbnQxNl90PihyZWludGVycHJldF9jYXN0
PHVpbnQzMl90Pih0YXJnZXQpID4+IDE2KSk7CiAgICAgICAgdWludDE2X3QgaW5zdHJ1Y3Rpb25z
WzVdOwogICAgICAgIGluc3RydWN0aW9uc1swXSA9IHR3b1dvcmRPcDVpNkltbTRSZWc0RW5jb2Rl
ZEltbUZpcnN0KE9QX01PVl9pbW1fVDMsIGxvMTYpOwogICAgICAgIGluc3RydWN0aW9uc1sxXSA9
IHR3b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbVNlY29uZChKVU1QX1RFTVBPUkFSWV9SRUdJ
U1RFUiwgbG8xNik7CiAgICAgICAgaW5zdHJ1Y3Rpb25zWzJdID0gdHdvV29yZE9wNWk2SW1tNFJl
ZzRFbmNvZGVkSW1tRmlyc3QoT1BfTU9WVCwgaGkxNik7CiAgICAgICAgaW5zdHJ1Y3Rpb25zWzNd
ID0gdHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tU2Vjb25kKEpVTVBfVEVNUE9SQVJZX1JF
R0lTVEVSLCBoaTE2KTsKICAgICAgICBpbnN0cnVjdGlvbnNbNF0gPSBPUF9CWCB8IChKVU1QX1RF
TVBPUkFSWV9SRUdJU1RFUiA8PCAzKTsKCiAgICAgICAgcGVyZm9ybUpJVE1lbWNweSh3cml0ZVRh
cmdldCAtIDUsIGluc3RydWN0aW9ucywgNSAqIHNpemVvZih1aW50MTZfdCkpOwogICAgfQoKICAg
IHN0YXRpYyB2b2lkIGxpbmtDb25kaXRpb25hbEJYKENvbmRpdGlvbiBjb25kLCB1aW50MTZfdCog
d3JpdGVUYXJnZXQsIGNvbnN0IHVpbnQxNl90KiBpbnN0cnVjdGlvbiwgdm9pZCogdGFyZ2V0KQog
ICAgewoKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICBsaW5r
Qlgod3JpdGVUYXJnZXQsIGluc3RydWN0aW9uLCB0YXJnZXQpOwogICAgICAgIHVpbnQxNl90IG5l
d0luc3RydWN0aW9uID0gaWZUaGVuRWxzZShjb25kLCB0cnVlLCB0cnVlKSB8IE9QX0lUOwogICAg
ICAgIHBlcmZvcm1KSVRNZW1jcHkod3JpdGVUYXJnZXQgLSA2LCAmbmV3SW5zdHJ1Y3Rpb24sIHNp
emVvZih1aW50MTZfdCkpOwogICAgfQoKICAgIHN0YXRpYyB2b2lkIGxpbmtKdW1wQWJzb2x1dGUo
dWludDE2X3QqIHdyaXRlVGFyZ2V0LCBjb25zdCB1aW50MTZfdCogaW5zdHJ1Y3Rpb24sIHZvaWQq
IHRhcmdldCkKICAgIHsKCiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAg
ICAgICAgKCh2b2lkKTApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKCiAgICAgICAgaWYgKGNhbkJlSnVtcFQ0KGluc3RydWN0aW9uLCB0YXJnZXQpKSB7CgoKCgoK
ICAgICAgICAgICAgdWludDE2X3QgaW5zdHJ1Y3Rpb25zWzNdOwogICAgICAgICAgICBpbnN0cnVj
dGlvbnNbMF0gPSBPUF9OT1BfVDE7CiAgICAgICAgICAgIGluc3RydWN0aW9uc1sxXSA9IE9QX05P
UF9UMmE7CiAgICAgICAgICAgIGluc3RydWN0aW9uc1syXSA9IE9QX05PUF9UMmI7CiAgICAgICAg
ICAgIHBlcmZvcm1KSVRNZW1jcHkod3JpdGVUYXJnZXQgLSA1LCBpbnN0cnVjdGlvbnMsIDMgKiBz
aXplb2YodWludDE2X3QpKTsKICAgICAgICAgICAgbGlua0p1bXBUNCh3cml0ZVRhcmdldCwgaW5z
dHJ1Y3Rpb24sIHRhcmdldCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY29uc3QgdWlu
dDE2X3QgSlVNUF9URU1QT1JBUllfUkVHSVNURVIgPSBBUk1SZWdpc3RlcnM6OmlwOwogICAgICAg
ICAgICBBUk1UaHVtYkltbWVkaWF0ZSBsbzE2ID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50
MTYoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KHRhcmdl
dCkgKyAxKSk7CiAgICAgICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGhpMTYgPSBBUk1UaHVtYklt
bWVkaWF0ZTo6bWFrZVVJbnQxNihzdGF0aWNfY2FzdDx1aW50MTZfdD4ocmVpbnRlcnByZXRfY2Fz
dDx1aW50MzJfdD4odGFyZ2V0KSA+PiAxNikpOwoKICAgICAgICAgICAgdWludDE2X3QgaW5zdHJ1
Y3Rpb25zWzVdOwogICAgICAgICAgICBpbnN0cnVjdGlvbnNbMF0gPSB0d29Xb3JkT3A1aTZJbW00
UmVnNEVuY29kZWRJbW1GaXJzdChPUF9NT1ZfaW1tX1QzLCBsbzE2KTsKICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zWzFdID0gdHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tU2Vjb25kKEpVTVBf
VEVNUE9SQVJZX1JFR0lTVEVSLCBsbzE2KTsKICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zWzJdID0g
dHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tRmlyc3QoT1BfTU9WVCwgaGkxNik7CiAgICAg
ICAgICAgIGluc3RydWN0aW9uc1szXSA9IHR3b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbVNl
Y29uZChKVU1QX1RFTVBPUkFSWV9SRUdJU1RFUiwgaGkxNik7CiAgICAgICAgICAgIGluc3RydWN0
aW9uc1s0XSA9IE9QX0JYIHwgKEpVTVBfVEVNUE9SQVJZX1JFR0lTVEVSIDw8IDMpOwogICAgICAg
ICAgICBwZXJmb3JtSklUTWVtY3B5KHdyaXRlVGFyZ2V0IC0gNSwgaW5zdHJ1Y3Rpb25zLCA1ICog
c2l6ZW9mKHVpbnQxNl90KSk7CiAgICAgICAgfQogICAgfQoKICAgIHN0YXRpYyB1aW50MTZfdCB0
d29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW1GaXJzdCh1aW50MTZfdCBvcCwgQVJNVGh1bWJJ
bW1lZGlhdGUgaW1tKQogICAgewogICAgICAgIHJldHVybiBvcCB8IChpbW0ubV92YWx1ZS5pIDw8
IDEwKSB8IGltbS5tX3ZhbHVlLmltbTQ7CiAgICB9CgogICAgc3RhdGljIHZvaWQgZGVjb2RlVHdv
V29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tRmlyc3QoQVJNVGh1bWJJbW1lZGlhdGUmIHJlc3Vs
dCwgdWludDE2X3QgdmFsdWUpCiAgICB7CiAgICAgICAgcmVzdWx0Lm1fdmFsdWUuaSA9ICh2YWx1
ZSA+PiAxMCkgJiAxOwogICAgICAgIHJlc3VsdC5tX3ZhbHVlLmltbTQgPSB2YWx1ZSAmIDE1Owog
ICAgfQoKICAgIHN0YXRpYyB1aW50MTZfdCB0d29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW1T
ZWNvbmQodWludDE2X3QgcmQsIEFSTVRodW1iSW1tZWRpYXRlIGltbSkKICAgIHsKICAgICAgICBy
ZXR1cm4gKGltbS5tX3ZhbHVlLmltbTMgPDwgMTIpIHwgKHJkIDw8IDgpIHwgaW1tLm1fdmFsdWUu
aW1tODsKICAgIH0KCiAgICBzdGF0aWMgdm9pZCBkZWNvZGVUd29Xb3JkT3A1aTZJbW00UmVnNEVu
Y29kZWRJbW1TZWNvbmQoQVJNVGh1bWJJbW1lZGlhdGUmIHJlc3VsdCwgdWludDE2X3QgdmFsdWUp
CiAgICB7CiAgICAgICAgcmVzdWx0Lm1fdmFsdWUuaW1tMyA9ICh2YWx1ZSA+PiAxMikgJiA3Owog
ICAgICAgIHJlc3VsdC5tX3ZhbHVlLmltbTggPSB2YWx1ZSAmIDI1NTsKICAgIH0KCiAgICBjbGFz
cyBBUk1JbnN0cnVjdGlvbkZvcm1hdHRlciB7CiAgICBwdWJsaWM6CiAgICAgICAgaW5saW5lIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBvbmVXb3JkT3A1UmVnM0ltbTgo
T3Bjb2RlSUQgb3AsIFJlZ2lzdGVySUQgcmQsIHVpbnQ4X3QgaW1tKQogICAgICAgIHsKICAgICAg
ICAgICAgbV9idWZmZXIucHV0U2hvcnQob3AgfCAocmQgPDwgOCkgfCBpbW0pOwogICAgICAgIH0K
CiAgICAgICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBv
bmVXb3JkT3A1SW1tNVJlZzNSZWczKE9wY29kZUlEIG9wLCB1aW50OF90IGltbSwgUmVnaXN0ZXJJ
RCByZWcxLCBSZWdpc3RlcklEIHJlZzIpCiAgICAgICAgewogICAgICAgICAgICBtX2J1ZmZlci5w
dXRTaG9ydChvcCB8IChpbW0gPDwgNikgfCAocmVnMSA8PCAzKSB8IHJlZzIpOwogICAgICAgIH0K
CiAgICAgICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBv
bmVXb3JkT3A3UmVnM1JlZzNSZWczKE9wY29kZUlEIG9wLCBSZWdpc3RlcklEIHJlZzEsIFJlZ2lz
dGVySUQgcmVnMiwgUmVnaXN0ZXJJRCByZWczKQogICAgICAgIHsKICAgICAgICAgICAgbV9idWZm
ZXIucHV0U2hvcnQob3AgfCAocmVnMSA8PCA2KSB8IChyZWcyIDw8IDMpIHwgcmVnMyk7CiAgICAg
ICAgfQoKICAgICAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2
b2lkIG9uZVdvcmRPcDdJbW05KE9wY29kZUlEIG9wLCB1aW50MTZfdCBpbW0pCiAgICAgICAgewog
ICAgICAgICAgICBtX2J1ZmZlci5wdXRTaG9ydChvcCB8IGltbSk7CiAgICAgICAgfQoKICAgICAg
ICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIG9uZVdvcmRP
cDhJbW04KE9wY29kZUlEIG9wLCB1aW50OF90IGltbSkKICAgICAgICB7CiAgICAgICAgICAgIG1f
YnVmZmVyLnB1dFNob3J0KG9wIHwgaW1tKTsKICAgICAgICB9CgogICAgICAgIGlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgb25lV29yZE9wOFJlZ1JlZzE0MyhP
cGNvZGVJRCBvcCwgUmVnaXN0ZXJJRCByZWcxLCBSZWdpc3RlcklEIHJlZzIpCiAgICAgICAgewog
ICAgICAgICAgICBtX2J1ZmZlci5wdXRTaG9ydChvcCB8ICgocmVnMiAmIDgpIDw8IDQpIHwgKHJl
ZzEgPDwgMykgfCAocmVnMiAmIDcpKTsKICAgICAgICB9CgogICAgICAgIGlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgb25lV29yZE9wOUltbTcoT3Bjb2RlSUQg
b3AsIHVpbnQ4X3QgaW1tKQogICAgICAgIHsKICAgICAgICAgICAgbV9idWZmZXIucHV0U2hvcnQo
b3AgfCBpbW0pOwogICAgICAgIH0KCiAgICAgICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgdm9pZCBvbmVXb3JkT3AxMFJlZzNSZWczKE9wY29kZUlEIG9wLCBSZWdp
c3RlcklEIHJlZzEsIFJlZ2lzdGVySUQgcmVnMikKICAgICAgICB7CiAgICAgICAgICAgIG1fYnVm
ZmVyLnB1dFNob3J0KG9wIHwgKHJlZzEgPDwgMykgfCByZWcyKTsKICAgICAgICB9CgogICAgICAg
IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgdHdvV29yZE9w
MTJSZWc0Rm91ckZvdXJzKE9wY29kZUlEMSBvcCwgUmVnaXN0ZXJJRCByZWcsIEZvdXJGb3VycyBm
ZikKICAgICAgICB7CiAgICAgICAgICAgIG1fYnVmZmVyLnB1dFNob3J0KG9wIHwgcmVnKTsKICAg
ICAgICAgICAgbV9idWZmZXIucHV0U2hvcnQoZmYubV91LnZhbHVlKTsKICAgICAgICB9CgogICAg
ICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgdHdvV29y
ZE9wMTZGb3VyRm91cnMoT3Bjb2RlSUQxIG9wLCBGb3VyRm91cnMgZmYpCiAgICAgICAgewogICAg
ICAgICAgICBtX2J1ZmZlci5wdXRTaG9ydChvcCk7CiAgICAgICAgICAgIG1fYnVmZmVyLnB1dFNo
b3J0KGZmLm1fdS52YWx1ZSk7CiAgICAgICAgfQoKICAgICAgICBpbmxpbmUgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHR3b1dvcmRPcDE2T3AxNihPcGNvZGVJRDEgb3Ax
LCBPcGNvZGVJRDIgb3AyKQogICAgICAgIHsKICAgICAgICAgICAgbV9idWZmZXIucHV0U2hvcnQo
b3AxKTsKICAgICAgICAgICAgbV9idWZmZXIucHV0U2hvcnQob3AyKTsKICAgICAgICB9CgogICAg
ICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgdHdvV29y
ZE9wMTZJbW0xNihPcGNvZGVJRDEgb3AxLCB1aW50MTZfdCBpbW0pCiAgICAgICAgewogICAgICAg
ICAgICBtX2J1ZmZlci5wdXRTaG9ydChvcDEpOwogICAgICAgICAgICBtX2J1ZmZlci5wdXRTaG9y
dChpbW0pOwogICAgICAgIH0KCiAgICAgICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fKSkgdm9pZCB0d29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW0oT3Bjb2RlSUQx
IG9wLCBpbnQgaW1tNCwgUmVnaXN0ZXJJRCByZCwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAg
ICAgIHsKICAgICAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgbmV3SW1tID0gaW1tOwogICAgICAg
ICAgICBuZXdJbW0ubV92YWx1ZS5pbW00ID0gaW1tNDsKCiAgICAgICAgICAgIG1fYnVmZmVyLnB1
dFNob3J0KEFSTXY3QXNzZW1ibGVyOjp0d29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW1GaXJz
dChvcCwgbmV3SW1tKSk7CiAgICAgICAgICAgIG1fYnVmZmVyLnB1dFNob3J0KEFSTXY3QXNzZW1i
bGVyOjp0d29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW1TZWNvbmQocmQsIG5ld0ltbSkpOwog
ICAgICAgIH0KCiAgICAgICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
KSkgdm9pZCB0d29Xb3JkT3AxMlJlZzRSZWc0SW1tMTIoT3Bjb2RlSUQxIG9wLCBSZWdpc3RlcklE
IHJlZzEsIFJlZ2lzdGVySUQgcmVnMiwgdWludDE2X3QgaW1tKQogICAgICAgIHsKICAgICAgICAg
ICAgbV9idWZmZXIucHV0U2hvcnQob3AgfCByZWcxKTsKICAgICAgICAgICAgbV9idWZmZXIucHV0
U2hvcnQoKHJlZzIgPDwgMTIpIHwgaW1tKTsKICAgICAgICB9CgogICAgICAgIGlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgdHdvV29yZE9wMTJSZWc0MEltbTNS
ZWc0SW1tMjBJbW01KE9wY29kZUlEMSBvcCwgUmVnaXN0ZXJJRCByZWcxLCBSZWdpc3RlcklEIHJl
ZzIsIHVpbnQxNl90IGltbTEsIHVpbnQxNl90IGltbTIsIHVpbnQxNl90IGltbTMpCiAgICAgICAg
ewogICAgICAgICAgICBtX2J1ZmZlci5wdXRTaG9ydChvcCB8IHJlZzEpOwogICAgICAgICAgICBt
X2J1ZmZlci5wdXRTaG9ydCgoaW1tMSA8PCAxMikgfCAocmVnMiA8PCA4KSB8IChpbW0yIDw8IDYp
IHwgaW1tMyk7CiAgICAgICAgfQoKCgoKCiAgICAgICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgdm9pZCB2ZnBPcChPcGNvZGVJRDEgb3AxLCBPcGNvZGVJRDIgb3Ay
LCBib29sIHNpemUsIFZGUE9wZXJhbmQgYSwgVkZQT3BlcmFuZCBiLCBWRlBPcGVyYW5kIGMpCiAg
ICAgICAgewogICAgICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgICAgICgodm9pZCkwKTsKICAg
ICAgICAgICAgbV9idWZmZXIucHV0U2hvcnQob3AxIHwgYi5iaXRzMSgpIDw8IDYgfCBhLmJpdHM0
KCkpOwogICAgICAgICAgICBtX2J1ZmZlci5wdXRTaG9ydChvcDIgfCBiLmJpdHM0KCkgPDwgMTIg
fCBzaXplIDw8IDggfCBhLmJpdHMxKCkgPDwgNyB8IGMuYml0czEoKSA8PCA1IHwgYy5iaXRzNCgp
KTsKICAgICAgICB9CgoKCiAgICAgICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fKSkgdm9pZCB2ZnBNZW1PcChPcGNvZGVJRDEgb3AxLCBPcGNvZGVJRDIgb3AyLCBib29s
IHNpemUsIFJlZ2lzdGVySUQgcm4sIFZGUE9wZXJhbmQgcmQsIGludDMyX3QgaW1tKQogICAgICAg
IHsKICAgICAgICAgICAgYm9vbCB1cCA9IHRydWU7CiAgICAgICAgICAgIGlmIChpbW0gPCAwKSB7
CiAgICAgICAgICAgICAgICBpbW0gPSAtaW1tOwogICAgICAgICAgICAgICAgdXAgPSBmYWxzZTsK
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgdWludDMyX3Qgb2Zmc2V0ID0gaW1tOwogICAgICAg
ICAgICAoKHZvaWQpMCk7CiAgICAgICAgICAgIG9mZnNldCA+Pj0gMjsKCiAgICAgICAgICAgIG1f
YnVmZmVyLnB1dFNob3J0KG9wMSB8ICh1cCA8PCA3KSB8IHJkLmJpdHMxKCkgPDwgNiB8IHJuKTsK
ICAgICAgICAgICAgbV9idWZmZXIucHV0U2hvcnQob3AyIHwgcmQuYml0czQoKSA8PCAxMiB8IHNp
emUgPDwgOCB8IG9mZnNldCk7CiAgICAgICAgfQoKCgogICAgICAgIHNpemVfdCBjb2RlU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvZGVTaXplKCk7IH0KICAgICAgICBBc3NlbWJsZXJM
YWJlbCBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7IH0KICAgICAgICBi
b29sIGlzQWxpZ25lZChpbnQgYWxpZ25tZW50KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0Fs
aWduZWQoYWxpZ25tZW50KTsgfQogICAgICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5kYXRhKCk7IH0KCiAgICAgICAgdW5zaWduZWQgZGVidWdPZmZzZXQoKSB7IHJldHVy
biBtX2J1ZmZlci5kZWJ1Z09mZnNldCgpOyB9CgogICAgICAgIEFzc2VtYmxlckJ1ZmZlciBtX2J1
ZmZlcjsKICAgIH0gbV9mb3JtYXR0ZXI7CgogICAgVmVjdG9yPExpbmtSZWNvcmQsIDAsIFVuc2Fm
ZVZlY3Rvck92ZXJmbG93PiBtX2p1bXBzVG9MaW5rOwogICAgaW50IG1faW5kZXhPZkxhc3RXYXRj
aHBvaW50OwogICAgaW50IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50Owp9OwoKfQojIDMz
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIgojZGVmaW5lIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXJfaCAKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
Ym9ydFJlYXNvbi5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJvcnRSZWFzb24uaCIKI2RlZmluZSBBYm9ydFJlYXNvbl9oIAoKbmFtZXNwYWNlIEpTQyB7
CgoKCgoKZW51bSBBYm9ydFJlYXNvbiB7CiAgICBBSENhbGxGcmFtZU1pc2FsaWduZWQgPSAxMCwK
ICAgIEFISW5kZXhpbmdUeXBlSXNWYWxpZCA9IDIwLAogICAgQUhJbnNhbmVBcmd1bWVudENvdW50
ID0gMzAsCiAgICBBSElzTm90Q2VsbCA9IDQwLAogICAgQUhJc05vdEludDMyID0gNTAsCiAgICBB
SElzTm90SlNEb3VibGUgPSA2MCwKICAgIEFISXNOb3RKU0ludDMyID0gNzAsCiAgICBBSElzTm90
SlNOdW1iZXIgPSA4MCwKICAgIEFISXNOb3ROdWxsID0gOTAsCiAgICBBSFN0YWNrUG9pbnRlck1p
c2FsaWduZWQgPSAxMDAsCiAgICBBSFN0cnVjdHVyZUlESXNWYWxpZCA9IDExMCwKICAgIEFIVGFn
TWFza05vdEluUGxhY2UgPSAxMjAsCiAgICBBSFRhZ1R5cGVOdW1iZXJOb3RJblBsYWNlID0gMTMw
LAogICAgQUhUeXBlSW5mb0lubGluZVR5cGVGbGFnc0FyZVZhbGlkID0gMTQwLAogICAgQUhUeXBl
SW5mb0lzVmFsaWQgPSAxNTAsCiAgICBCM09vcHMgPSAxNTUsCiAgICBERkdCYWlsZWRBdFRvcE9m
QmxvY2sgPSAxNjEsCiAgICBERkdCYWlsZWRBdEVuZE9mTm9kZSA9IDE2MiwKICAgIERGR0Jhc2lj
U3RvcmFnZUFsbG9jYXRvclplcm9TaXplID0gMTcwLAogICAgREZHSXNOb3RDZWxsID0gMTgwLAog
ICAgREZHSW5lZmZlY3RpdmVXYXRjaHBvaW50ID0gMTkwLAogICAgREZHTmVnYXRpdmVTdHJpbmdM
ZW5ndGggPSAyMDAsCiAgICBERkdTbG93UGF0aEdlbmVyYXRvckZlbGxUaHJvdWdoID0gMjEwLAog
ICAgREZHVW5yZWFjaGFibGVCYXNpY0Jsb2NrID0gMjIwLAogICAgREZHVW5yZWFzb25hYmxlT1NS
RW50cnlKdW1wRGVzdGluYXRpb24gPSAyMzAsCiAgICBERkdWYXJhcmdzVGhyb3dpbmdQYXRoRGlk
Tm90VGhyb3cgPSAyMzUsCiAgICBKSVREaWRSZXR1cm5Gcm9tVGFpbENhbGwgPSAyMzcsCiAgICBK
SVREaXZPcGVyYW5kc0FyZU5vdE51bWJlcnMgPSAyNDAsCiAgICBKSVRHZXRCeVZhbFJlc3VsdElz
Tm90RW1wdHkgPSAyNTAsCiAgICBKSVROb3RTdXBwb3J0ZWQgPSAyNjAsCiAgICBKSVRPZmZzZXRJ
c05vdE91dE9mTGluZSA9IDI3MCwKICAgIEpJVFVuY291Z2h0RXhjZXB0aW9uQWZ0ZXJDYWxsID0g
Mjc1LAogICAgSklUVW5leHBlY3RlZENhbGxGcmFtZVNpemUgPSAyNzcsCiAgICBKSVRVbnJlYXNv
bmFibGVMb29wSGludEp1bXBUYXJnZXQgPSAyODAsCiAgICBSUFdVbnJlYXNvbmFibGVKdW1wVGFy
Z2V0ID0gMjkwLAogICAgUmVwYXRjaEluZWZmZWN0aXZlV2F0Y2hwb2ludCA9IDMwMCwKICAgIFJl
cGF0Y2hJbnNhbmVBcmd1bWVudENvdW50ID0gMzEwLAogICAgVEdJbnZhbGlkUG9pbnRlciA9IDMy
MCwKICAgIFRHTm90U3VwcG9ydGVkID0gMzMwLAogICAgWUFSUk5vSW5wdXRDb25zdW1lZCA9IDM0
MCwKfTsKCn0KIyAzMCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmgiIDIKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oIgojZGVmaW5lIENvZGVMb2NhdGlvbl9oIAoK
IyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oIiAxCiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
Q29kZUxvY2F0aW9uLmgiIDIKCgoKbmFtZXNwYWNlIEpTQyB7CgplbnVtIE5lYXJDYWxsTW9kZSB7
IFJlZ3VsYXIsIFRhaWwgfTsKCmNsYXNzIENvZGVMb2NhdGlvbkluc3RydWN0aW9uOwpjbGFzcyBD
b2RlTG9jYXRpb25MYWJlbDsKY2xhc3MgQ29kZUxvY2F0aW9uSnVtcDsKY2xhc3MgQ29kZUxvY2F0
aW9uQ2FsbDsKY2xhc3MgQ29kZUxvY2F0aW9uTmVhckNhbGw7CmNsYXNzIENvZGVMb2NhdGlvbkRh
dGFMYWJlbENvbXBhY3Q7CmNsYXNzIENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyOwpjbGFzcyBDb2Rl
TG9jYXRpb25EYXRhTGFiZWxQdHI7CmNsYXNzIENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZDsK
IyA1OCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24u
aCIKY2xhc3MgQ29kZUxvY2F0aW9uQ29tbW9uIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciB7CnB1YmxpYzoKICAgIENvZGVMb2NhdGlvbkluc3RydWN0aW9uIGluc3RydWN0aW9uQXRPZmZz
ZXQoaW50IG9mZnNldCk7CiAgICBDb2RlTG9jYXRpb25MYWJlbCBsYWJlbEF0T2Zmc2V0KGludCBv
ZmZzZXQpOwogICAgQ29kZUxvY2F0aW9uSnVtcCBqdW1wQXRPZmZzZXQoaW50IG9mZnNldCk7CiAg
ICBDb2RlTG9jYXRpb25DYWxsIGNhbGxBdE9mZnNldChpbnQgb2Zmc2V0KTsKICAgIENvZGVMb2Nh
dGlvbk5lYXJDYWxsIG5lYXJDYWxsQXRPZmZzZXQoaW50IG9mZnNldCwgTmVhckNhbGxNb2RlKTsK
ICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBkYXRhTGFiZWxQdHJBdE9mZnNldChpbnQgb2Zm
c2V0KTsKICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIGRhdGFMYWJlbDMyQXRPZmZzZXQoaW50
IG9mZnNldCk7CiAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0IGRhdGFMYWJlbENvbXBh
Y3RBdE9mZnNldChpbnQgb2Zmc2V0KTsKICAgIENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCBj
b252ZXJ0aWJsZUxvYWRBdE9mZnNldChpbnQgb2Zmc2V0KTsKCnByb3RlY3RlZDoKICAgIENvZGVM
b2NhdGlvbkNvbW1vbigpCiAgICB7CiAgICB9CgogICAgQ29kZUxvY2F0aW9uQ29tbW9uKE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciBsb2NhdGlvbikKICAgICAgICA6IE1hY3JvQXNzZW1ibGVyQ29kZVB0
cihsb2NhdGlvbikKICAgIHsKICAgIH0KfTsKCmNsYXNzIENvZGVMb2NhdGlvbkluc3RydWN0aW9u
IDogcHVibGljIENvZGVMb2NhdGlvbkNvbW1vbiB7CnB1YmxpYzoKICAgIENvZGVMb2NhdGlvbklu
c3RydWN0aW9uKCkge30KICAgIGV4cGxpY2l0IENvZGVMb2NhdGlvbkluc3RydWN0aW9uKE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciBsb2NhdGlvbikKICAgICAgICA6IENvZGVMb2NhdGlvbkNvbW1vbihs
b2NhdGlvbikge30KICAgIGV4cGxpY2l0IENvZGVMb2NhdGlvbkluc3RydWN0aW9uKHZvaWQqIGxv
Y2F0aW9uKQogICAgICAgIDogQ29kZUxvY2F0aW9uQ29tbW9uKE1hY3JvQXNzZW1ibGVyQ29kZVB0
cihsb2NhdGlvbikpIHt9Cn07CgpjbGFzcyBDb2RlTG9jYXRpb25MYWJlbCA6IHB1YmxpYyBDb2Rl
TG9jYXRpb25Db21tb24gewpwdWJsaWM6CiAgICBDb2RlTG9jYXRpb25MYWJlbCgpIHt9CiAgICBl
eHBsaWNpdCBDb2RlTG9jYXRpb25MYWJlbChNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbG9jYXRpb24p
CiAgICAgICAgOiBDb2RlTG9jYXRpb25Db21tb24obG9jYXRpb24pIHt9CiAgICBleHBsaWNpdCBD
b2RlTG9jYXRpb25MYWJlbCh2b2lkKiBsb2NhdGlvbikKICAgICAgICA6IENvZGVMb2NhdGlvbkNv
bW1vbihNYWNyb0Fzc2VtYmxlckNvZGVQdHIobG9jYXRpb24pKSB7fQp9OwoKY2xhc3MgQ29kZUxv
Y2F0aW9uSnVtcCA6IHB1YmxpYyBDb2RlTG9jYXRpb25Db21tb24gewpwdWJsaWM6CiAgICBDb2Rl
TG9jYXRpb25KdW1wKCkge30KICAgIGV4cGxpY2l0IENvZGVMb2NhdGlvbkp1bXAoTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIGxvY2F0aW9uKQogICAgICAgIDogQ29kZUxvY2F0aW9uQ29tbW9uKGxvY2F0
aW9uKSB7fQogICAgZXhwbGljaXQgQ29kZUxvY2F0aW9uSnVtcCh2b2lkKiBsb2NhdGlvbikKICAg
ICAgICA6IENvZGVMb2NhdGlvbkNvbW1vbihNYWNyb0Fzc2VtYmxlckNvZGVQdHIobG9jYXRpb24p
KSB7fQp9OwoKY2xhc3MgQ29kZUxvY2F0aW9uQ2FsbCA6IHB1YmxpYyBDb2RlTG9jYXRpb25Db21t
b24gewpwdWJsaWM6CiAgICBDb2RlTG9jYXRpb25DYWxsKCkge30KICAgIGV4cGxpY2l0IENvZGVM
b2NhdGlvbkNhbGwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxvY2F0aW9uKQogICAgICAgIDogQ29k
ZUxvY2F0aW9uQ29tbW9uKGxvY2F0aW9uKSB7fQogICAgZXhwbGljaXQgQ29kZUxvY2F0aW9uQ2Fs
bCh2b2lkKiBsb2NhdGlvbikKICAgICAgICA6IENvZGVMb2NhdGlvbkNvbW1vbihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIobG9jYXRpb24pKSB7fQp9OwoKY2xhc3MgQ29kZUxvY2F0aW9uTmVhckNhbGwg
OiBwdWJsaWMgQ29kZUxvY2F0aW9uQ29tbW9uIHsKcHVibGljOgogICAgQ29kZUxvY2F0aW9uTmVh
ckNhbGwoKSB7fQogICAgZXhwbGljaXQgQ29kZUxvY2F0aW9uTmVhckNhbGwoTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGxvY2F0aW9uLCBOZWFyQ2FsbE1vZGUgY2FsbE1vZGUpCiAgICAgICAgOiBDb2Rl
TG9jYXRpb25Db21tb24obG9jYXRpb24pLCBtX2NhbGxNb2RlKGNhbGxNb2RlKSB7IH0KICAgIGV4
cGxpY2l0IENvZGVMb2NhdGlvbk5lYXJDYWxsKHZvaWQqIGxvY2F0aW9uLCBOZWFyQ2FsbE1vZGUg
Y2FsbE1vZGUpCiAgICAgICAgOiBDb2RlTG9jYXRpb25Db21tb24oTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKGxvY2F0aW9uKSksIG1fY2FsbE1vZGUoY2FsbE1vZGUpIHsgfQogICAgTmVhckNhbGxNb2Rl
IGNhbGxNb2RlKCkgeyByZXR1cm4gbV9jYWxsTW9kZTsgfQpwcml2YXRlOgogICAgTmVhckNhbGxN
b2RlIG1fY2FsbE1vZGUgPSBOZWFyQ2FsbE1vZGU6OlJlZ3VsYXI7Cn07CgpjbGFzcyBDb2RlTG9j
YXRpb25EYXRhTGFiZWwzMiA6IHB1YmxpYyBDb2RlTG9jYXRpb25Db21tb24gewpwdWJsaWM6CiAg
ICBDb2RlTG9jYXRpb25EYXRhTGFiZWwzMigpIHt9CiAgICBleHBsaWNpdCBDb2RlTG9jYXRpb25E
YXRhTGFiZWwzMihNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbG9jYXRpb24pCiAgICAgICAgOiBDb2Rl
TG9jYXRpb25Db21tb24obG9jYXRpb24pIHt9CiAgICBleHBsaWNpdCBDb2RlTG9jYXRpb25EYXRh
TGFiZWwzMih2b2lkKiBsb2NhdGlvbikKICAgICAgICA6IENvZGVMb2NhdGlvbkNvbW1vbihNYWNy
b0Fzc2VtYmxlckNvZGVQdHIobG9jYXRpb24pKSB7fQp9OwoKY2xhc3MgQ29kZUxvY2F0aW9uRGF0
YUxhYmVsQ29tcGFjdCA6IHB1YmxpYyBDb2RlTG9jYXRpb25Db21tb24gewpwdWJsaWM6CiAgICBD
b2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0KCkgeyB9CiAgICBleHBsaWNpdCBDb2RlTG9jYXRp
b25EYXRhTGFiZWxDb21wYWN0KE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsb2NhdGlvbikKICAgICAg
ICA6IENvZGVMb2NhdGlvbkNvbW1vbihsb2NhdGlvbikgeyB9CiAgICBleHBsaWNpdCBDb2RlTG9j
YXRpb25EYXRhTGFiZWxDb21wYWN0KHZvaWQqIGxvY2F0aW9uKQogICAgICAgIDogQ29kZUxvY2F0
aW9uQ29tbW9uKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihsb2NhdGlvbikpIHsgfQp9OwoKY2xhc3Mg
Q29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIDogcHVibGljIENvZGVMb2NhdGlvbkNvbW1vbiB7CnB1
YmxpYzoKICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cigpIHt9CiAgICBleHBsaWNpdCBDb2Rl
TG9jYXRpb25EYXRhTGFiZWxQdHIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxvY2F0aW9uKQogICAg
ICAgIDogQ29kZUxvY2F0aW9uQ29tbW9uKGxvY2F0aW9uKSB7fQogICAgZXhwbGljaXQgQ29kZUxv
Y2F0aW9uRGF0YUxhYmVsUHRyKHZvaWQqIGxvY2F0aW9uKQogICAgICAgIDogQ29kZUxvY2F0aW9u
Q29tbW9uKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihsb2NhdGlvbikpIHt9Cn07CgpjbGFzcyBDb2Rl
TG9jYXRpb25Db252ZXJ0aWJsZUxvYWQgOiBwdWJsaWMgQ29kZUxvY2F0aW9uQ29tbW9uIHsKcHVi
bGljOgogICAgQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKCkgeyB9CiAgICBleHBsaWNpdCBD
b2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxvY2F0aW9u
KQogICAgICAgIDogQ29kZUxvY2F0aW9uQ29tbW9uKGxvY2F0aW9uKSB7IH0KICAgIGV4cGxpY2l0
IENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCh2b2lkKiBsb2NhdGlvbikKICAgICAgICA6IENv
ZGVMb2NhdGlvbkNvbW1vbihNYWNyb0Fzc2VtYmxlckNvZGVQdHIobG9jYXRpb24pKSB7IH0KfTsK
CmlubGluZSBDb2RlTG9jYXRpb25JbnN0cnVjdGlvbiBDb2RlTG9jYXRpb25Db21tb246Omluc3Ry
dWN0aW9uQXRPZmZzZXQoaW50IG9mZnNldCkKewogICAgKCh2b2lkKTApOwogICAgcmV0dXJuIENv
ZGVMb2NhdGlvbkluc3RydWN0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlv
bigpKSArIG9mZnNldCk7Cn0KCmlubGluZSBDb2RlTG9jYXRpb25MYWJlbCBDb2RlTG9jYXRpb25D
b21tb246OmxhYmVsQXRPZmZzZXQoaW50IG9mZnNldCkKewogICAgKCh2b2lkKTApOwogICAgcmV0
dXJuIENvZGVMb2NhdGlvbkxhYmVsKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlv
bigpKSArIG9mZnNldCk7Cn0KCmlubGluZSBDb2RlTG9jYXRpb25KdW1wIENvZGVMb2NhdGlvbkNv
bW1vbjo6anVtcEF0T2Zmc2V0KGludCBvZmZzZXQpCnsKICAgICgodm9pZCkwKTsKICAgIHJldHVy
biBDb2RlTG9jYXRpb25KdW1wKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigp
KSArIG9mZnNldCk7Cn0KCmlubGluZSBDb2RlTG9jYXRpb25DYWxsIENvZGVMb2NhdGlvbkNvbW1v
bjo6Y2FsbEF0T2Zmc2V0KGludCBvZmZzZXQpCnsKICAgICgodm9pZCkwKTsKICAgIHJldHVybiBD
b2RlTG9jYXRpb25DYWxsKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSAr
IG9mZnNldCk7Cn0KCmlubGluZSBDb2RlTG9jYXRpb25OZWFyQ2FsbCBDb2RlTG9jYXRpb25Db21t
b246Om5lYXJDYWxsQXRPZmZzZXQoaW50IG9mZnNldCwgTmVhckNhbGxNb2RlIGNhbGxNb2RlKQp7
CiAgICAoKHZvaWQpMCk7CiAgICByZXR1cm4gQ29kZUxvY2F0aW9uTmVhckNhbGwocmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0LCBjYWxsTW9kZSk7Cn0KCmlu
bGluZSBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgQ29kZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFi
ZWxQdHJBdE9mZnNldChpbnQgb2Zmc2V0KQp7CiAgICAoKHZvaWQpMCk7CiAgICByZXR1cm4gQ29k
ZUxvY2F0aW9uRGF0YUxhYmVsUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlv
bigpKSArIG9mZnNldCk7Cn0KCmlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFiZWwzMiBDb2RlTG9j
YXRpb25Db21tb246OmRhdGFMYWJlbDMyQXRPZmZzZXQoaW50IG9mZnNldCkKewogICAgKCh2b2lk
KTApOwogICAgcmV0dXJuIENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyKHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNldCk7Cn0KCmlubGluZSBDb2RlTG9jYXRpb25E
YXRhTGFiZWxDb21wYWN0IENvZGVMb2NhdGlvbkNvbW1vbjo6ZGF0YUxhYmVsQ29tcGFjdEF0T2Zm
c2V0KGludCBvZmZzZXQpCnsKICAgICgodm9pZCkwKTsKICAgIHJldHVybiBDb2RlTG9jYXRpb25E
YXRhTGFiZWxDb21wYWN0KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSAr
IG9mZnNldCk7Cn0KCmlubGluZSBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQgQ29kZUxvY2F0
aW9uQ29tbW9uOjpjb252ZXJ0aWJsZUxvYWRBdE9mZnNldChpbnQgb2Zmc2V0KQp7CiAgICAoKHZv
aWQpMCk7CiAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNldCk7Cn0KCn0KIyAzMiAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgi
IDIKIyA0MSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmgiCm5hbWVzcGFjZSBKU0MgewoKaW5saW5lIGJvb2wgaXNBUk12N0lESVZT
dXBwb3J0ZWQoKQp7CgoKCiAgICByZXR1cm4gZmFsc2U7Cgp9CgppbmxpbmUgYm9vbCBpc0FSTTY0
KCkKewoKCgogICAgcmV0dXJuIGZhbHNlOwoKfQoKaW5saW5lIGJvb2wgaXNYODYoKQp7CgoKCiAg
ICByZXR1cm4gZmFsc2U7Cgp9CgppbmxpbmUgYm9vbCBpc1g4Nl82NCgpCnsKCgoKICAgIHJldHVy
biBmYWxzZTsKCn0KCmlubGluZSBib29sIG9wdGltaXplRm9yQVJNdjdJRElWU3VwcG9ydGVkKCkK
ewogICAgcmV0dXJuIGlzQVJNdjdJRElWU3VwcG9ydGVkKCkgJiYgT3B0aW9uczo6dXNlQXJjaGl0
ZWN0dXJlU3BlY2lmaWNPcHRpbWl6YXRpb25zKCk7Cn0KCmlubGluZSBib29sIG9wdGltaXplRm9y
QVJNNjQoKQp7CiAgICByZXR1cm4gaXNBUk02NCgpICYmIE9wdGlvbnM6OnVzZUFyY2hpdGVjdHVy
ZVNwZWNpZmljT3B0aW1pemF0aW9ucygpOwp9CgppbmxpbmUgYm9vbCBvcHRpbWl6ZUZvclg4Nigp
CnsKICAgIHJldHVybiBpc1g4NigpICYmIE9wdGlvbnM6OnVzZUFyY2hpdGVjdHVyZVNwZWNpZmlj
T3B0aW1pemF0aW9ucygpOwp9CgppbmxpbmUgYm9vbCBvcHRpbWl6ZUZvclg4Nl82NCgpCnsKICAg
IHJldHVybiBpc1g4Nl82NCgpICYmIE9wdGlvbnM6OnVzZUFyY2hpdGVjdHVyZVNwZWNpZmljT3B0
aW1pemF0aW9ucygpOwp9CgpjbGFzcyBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2U7CmNs
YXNzIERpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZTsKY2xhc3MgTGlua0J1ZmZlcjsK
Y2xhc3MgV2F0Y2hwb2ludDsKbmFtZXNwYWNlIERGRyB7CnN0cnVjdCBPU1JFeGl0Owp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgQXNzZW1ibGVyVHlwZSwgY2xhc3MgTWFjcm9Bc3NlbWJsZXJUeXBlPgpjbGFz
cyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyIHsKcHVibGljOgogICAgZnJpZW5kIGNsYXNzIEpJVFdy
aXRlQmFycmllckJhc2U7CiAgICB0eXBlZGVmIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1i
bGVyVHlwZSwgTWFjcm9Bc3NlbWJsZXJUeXBlPiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyVHlwZTsK
ICAgIHR5cGVkZWYgQXNzZW1ibGVyVHlwZSBBc3NlbWJsZXJUeXBlX1Q7CgogICAgdHlwZWRlZiBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgQ29kZVB0cjsKICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIENvZGVSZWY7CgogICAgY2xhc3MgSnVtcDsKCiAgICB0eXBlZGVmIHR5cGVuYW1lIEFz
c2VtYmxlclR5cGU6OlJlZ2lzdGVySUQgUmVnaXN0ZXJJRDsKICAgIHR5cGVkZWYgdHlwZW5hbWUg
QXNzZW1ibGVyVHlwZTo6RlBSZWdpc3RlcklEIEZQUmVnaXN0ZXJJRDsKCiAgICBzdGF0aWMgY29u
c3RleHByIFJlZ2lzdGVySUQgZmlyc3RSZWdpc3RlcigpIHsgcmV0dXJuIEFzc2VtYmxlclR5cGU6
OmZpcnN0UmVnaXN0ZXIoKTsgfQogICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGxhc3RS
ZWdpc3RlcigpIHsgcmV0dXJuIEFzc2VtYmxlclR5cGU6Omxhc3RSZWdpc3RlcigpOyB9CgogICAg
c3RhdGljIGNvbnN0ZXhwciBGUFJlZ2lzdGVySUQgZmlyc3RGUFJlZ2lzdGVyKCkgeyByZXR1cm4g
QXNzZW1ibGVyVHlwZTo6Zmlyc3RGUFJlZ2lzdGVyKCk7IH0KICAgIHN0YXRpYyBjb25zdGV4cHIg
RlBSZWdpc3RlcklEIGxhc3RGUFJlZ2lzdGVyKCkgeyByZXR1cm4gQXNzZW1ibGVyVHlwZTo6bGFz
dEZQUmVnaXN0ZXIoKTsgfQoKCgoKCgogICAgZW51bSBTY2FsZSB7CiAgICAgICAgVGltZXNPbmUs
CiAgICAgICAgVGltZXNUd28sCiAgICAgICAgVGltZXNGb3VyLAogICAgICAgIFRpbWVzRWlnaHQs
CiAgICB9OwoKICAgIHN0YXRpYyBTY2FsZSB0aW1lc1B0cigpCiAgICB7CiAgICAgICAgaWYgKHNp
emVvZih2b2lkKikgPT0gNCkKICAgICAgICAgICAgcmV0dXJuIFRpbWVzRm91cjsKICAgICAgICBy
ZXR1cm4gVGltZXNFaWdodDsKICAgIH0KCiAgICBzdHJ1Y3QgQmFzZUluZGV4OwoKCgoKICAgIHN0
cnVjdCBBZGRyZXNzIHsKICAgICAgICBleHBsaWNpdCBBZGRyZXNzKFJlZ2lzdGVySUQgYmFzZSwg
aW50MzJfdCBvZmZzZXQgPSAwKQogICAgICAgICAgICA6IGJhc2UoYmFzZSkKICAgICAgICAgICAg
LCBvZmZzZXQob2Zmc2V0KQogICAgICAgIHsKICAgICAgICB9CgogICAgICAgIEFkZHJlc3Mgd2l0
aE9mZnNldChpbnQzMl90IGFkZGl0aW9uYWxPZmZzZXQpCiAgICAgICAgewogICAgICAgICAgICBy
ZXR1cm4gQWRkcmVzcyhiYXNlLCBvZmZzZXQgKyBhZGRpdGlvbmFsT2Zmc2V0KTsKICAgICAgICB9
CgogICAgICAgIEJhc2VJbmRleCBpbmRleGVkQnkoUmVnaXN0ZXJJRCBpbmRleCwgU2NhbGUpIGNv
bnN0OwoKICAgICAgICBSZWdpc3RlcklEIGJhc2U7CiAgICAgICAgaW50MzJfdCBvZmZzZXQ7CiAg
ICB9OwoKICAgIHN0cnVjdCBFeHRlbmRlZEFkZHJlc3MgewogICAgICAgIGV4cGxpY2l0IEV4dGVu
ZGVkQWRkcmVzcyhSZWdpc3RlcklEIGJhc2UsIGludHB0cl90IG9mZnNldCA9IDApCiAgICAgICAg
ICAgIDogYmFzZShiYXNlKQogICAgICAgICAgICAsIG9mZnNldChvZmZzZXQpCiAgICAgICAgewog
ICAgICAgIH0KCiAgICAgICAgUmVnaXN0ZXJJRCBiYXNlOwogICAgICAgIGludHB0cl90IG9mZnNl
dDsKICAgIH07CiMgMTk1ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCIKICAgIHN0cnVjdCBJbXBsaWNpdEFkZHJlc3MgewogICAg
ICAgIEltcGxpY2l0QWRkcmVzcyhSZWdpc3RlcklEIGJhc2UpCiAgICAgICAgICAgIDogYmFzZShi
YXNlKQogICAgICAgICAgICAsIG9mZnNldCgwKQogICAgICAgIHsKICAgICAgICB9CgogICAgICAg
IEltcGxpY2l0QWRkcmVzcyhBZGRyZXNzIGFkZHJlc3MpCiAgICAgICAgICAgIDogYmFzZShhZGRy
ZXNzLmJhc2UpCiAgICAgICAgICAgICwgb2Zmc2V0KGFkZHJlc3Mub2Zmc2V0KQogICAgICAgIHsK
ICAgICAgICB9CgogICAgICAgIFJlZ2lzdGVySUQgYmFzZTsKICAgICAgICBpbnQzMl90IG9mZnNl
dDsKICAgIH07CgoKCgogICAgc3RydWN0IEJhc2VJbmRleCB7CiAgICAgICAgQmFzZUluZGV4KFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgU2NhbGUgc2NhbGUsIGludDMyX3Qgb2Zm
c2V0ID0gMCkKICAgICAgICAgICAgOiBiYXNlKGJhc2UpCiAgICAgICAgICAgICwgaW5kZXgoaW5k
ZXgpCiAgICAgICAgICAgICwgc2NhbGUoc2NhbGUpCiAgICAgICAgICAgICwgb2Zmc2V0KG9mZnNl
dCkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBSZWdpc3RlcklEIGJhc2U7CiAgICAgICAg
UmVnaXN0ZXJJRCBpbmRleDsKICAgICAgICBTY2FsZSBzY2FsZTsKICAgICAgICBpbnQzMl90IG9m
ZnNldDsKCiAgICAgICAgQmFzZUluZGV4IHdpdGhPZmZzZXQoaW50MzJfdCBhZGRpdGlvbmFsT2Zm
c2V0KQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIEJhc2VJbmRleChiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCArIGFkZGl0aW9uYWxPZmZzZXQpOwogICAgICAgIH0KICAgIH07CgoKCgoK
ICAgIHN0cnVjdCBBYnNvbHV0ZUFkZHJlc3MgewogICAgICAgIGV4cGxpY2l0IEFic29sdXRlQWRk
cmVzcyhjb25zdCB2b2lkKiBwdHIpCiAgICAgICAgICAgIDogbV9wdHIocHRyKQogICAgICAgIHsK
ICAgICAgICB9CgogICAgICAgIGNvbnN0IHZvaWQqIG1fcHRyOwogICAgfTsKCgoKCgoKICAgIHN0
cnVjdCBUcnVzdGVkSW1tUHRyIHsKICAgICAgICBUcnVzdGVkSW1tUHRyKCkgeyB9CgogICAgICAg
IGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoY29uc3Qgdm9pZCogdmFsdWUpCiAgICAgICAgICAgIDog
bV92YWx1ZSh2YWx1ZSkKICAgICAgICB7CiAgICAgICAgfQoKCgogICAgICAgIGV4cGxpY2l0IFRy
dXN0ZWRJbW1QdHIoaW50IHZhbHVlKQogICAgICAgICAgICA6IG1fdmFsdWUoMCkKICAgICAgICB7
CiAgICAgICAgICAgICgodm9pZCl2YWx1ZSk7CiAgICAgICAgfQoKICAgICAgICBleHBsaWNpdCBU
cnVzdGVkSW1tUHRyKHNpemVfdCB2YWx1ZSkKICAgICAgICAgICAgOiBtX3ZhbHVlKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHZhbHVlKSkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBpbnRw
dHJfdCBhc0ludHB0cigpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4obV92YWx1ZSk7CiAgICAgICAgfQoKICAgICAgICBjb25zdCB2b2lkKiBt
X3ZhbHVlOwogICAgfTsKCiAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0ZSBUcnVzdGVkSW1tUHRy
CiAgICB7CiAgICAgICAgZXhwbGljaXQgSW1tUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQogICAgICAg
ICAgICA6IFRydXN0ZWRJbW1QdHIodmFsdWUpCiAgICAgICAgewogICAgICAgIH0KCiAgICAgICAg
VHJ1c3RlZEltbVB0ciBhc1RydXN0ZWRJbW1QdHIoKSB7IHJldHVybiAqdGhpczsgfQogICAgfTsK
CgoKCgoKCiAgICBzdHJ1Y3QgVHJ1c3RlZEltbTMyIHsKICAgICAgICBUcnVzdGVkSW1tMzIoKSB7
IH0KCiAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbTMyKGludDMyX3QgdmFsdWUpCiAgICAgICAg
ICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICAgICB7CiAgICAgICAgfQoKCiAgICAgICAgZXhwbGlj
aXQgVHJ1c3RlZEltbTMyKFRydXN0ZWRJbW1QdHIgcHRyKQogICAgICAgICAgICA6IG1fdmFsdWUo
cHRyLmFzSW50cHRyKCkpCiAgICAgICAgewogICAgICAgIH0KCgogICAgICAgIGludDMyX3QgbV92
YWx1ZTsKICAgIH07CgoKICAgIHN0cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1c3RlZEltbTMyIHsK
ICAgICAgICBleHBsaWNpdCBJbW0zMihpbnQzMl90IHZhbHVlKQogICAgICAgICAgICA6IFRydXN0
ZWRJbW0zMih2YWx1ZSkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBleHBsaWNpdCBJbW0z
MihUcnVzdGVkSW1tUHRyIHB0cikKICAgICAgICAgICAgOiBUcnVzdGVkSW1tMzIocHRyKQogICAg
ICAgIHsKICAgICAgICB9CgogICAgICAgIGNvbnN0IFRydXN0ZWRJbW0zMiYgYXNUcnVzdGVkSW1t
MzIoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQoKICAgIH07CgoKCgoKCgogICAgc3RydWN0IFRy
dXN0ZWRJbW02NCB7CiAgICAgICAgVHJ1c3RlZEltbTY0KCkgeyB9CgogICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICA6IG1fdmFsdWUodmFsdWUp
CiAgICAgICAgewogICAgICAgIH0KIyAzNTMgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIgogICAgICAgIGludDY0X3QgbV92YWx1
ZTsKICAgIH07CgogICAgc3RydWN0IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1tNjQKICAgIHsK
ICAgICAgICBleHBsaWNpdCBJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICA6IFRydXN0
ZWRJbW02NCh2YWx1ZSkKICAgICAgICB7CiAgICAgICAgfQoKCgoKCgogICAgICAgIGNvbnN0IFRy
dXN0ZWRJbW02NCYgYXNUcnVzdGVkSW1tNjQoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQogICAg
fTsKIyAzODMgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oIgogICAgY2xhc3MgTGFiZWwgewogICAgICAgIHRlbXBsYXRlPGNsYXNz
IFRlbXBsYXRlQXNzZW1ibGVyVHlwZSwgY2xhc3MgVGVtcGxhdGVNYWNyb0Fzc2VtYmxlclR5cGU+
CiAgICAgICAgZnJpZW5kIGNsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI7CiAgICAgICAgZnJp
ZW5kIHN0cnVjdCBERkc6Ok9TUkV4aXQ7CiAgICAgICAgZnJpZW5kIGNsYXNzIEp1bXA7CiAgICAg
ICAgZnJpZW5kIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKICAgICAgICBmcmllbmQgY2xh
c3MgTGlua0J1ZmZlcjsKICAgICAgICBmcmllbmQgY2xhc3MgV2F0Y2hwb2ludDsKCiAgICBwdWJs
aWM6CiAgICAgICAgTGFiZWwoKQogICAgICAgIHsKICAgICAgICB9CgogICAgICAgIExhYmVsKEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXJUeXBlKiBtYXNtKQogICAgICAgICAgICA6IG1fbGFiZWwobWFz
bS0+bV9hc3NlbWJsZXIubGFiZWwoKSkKICAgICAgICB7CiAgICAgICAgICAgIG1hc20tPmludmFs
aWRhdGVBbGxUZW1wUmVnaXN0ZXJzKCk7CiAgICAgICAgfQoKICAgICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgTGFiZWwmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2xhYmVsID09IG90aGVyLm1f
bGFiZWw7IH0KCiAgICAgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWwuaXNT
ZXQoKTsgfQogICAgcHJpdmF0ZToKICAgICAgICBBc3NlbWJsZXJMYWJlbCBtX2xhYmVsOwogICAg
fTsKIyA0MjAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oIgogICAgY2xhc3MgQ29udmVydGlibGVMb2FkTGFiZWwgewogICAgICAg
IHRlbXBsYXRlPGNsYXNzIFRlbXBsYXRlQXNzZW1ibGVyVHlwZSwgY2xhc3MgVGVtcGxhdGVNYWNy
b0Fzc2VtYmxlclR5cGU+CiAgICAgICAgZnJpZW5kIGNsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXI7CiAgICAgICAgZnJpZW5kIGNsYXNzIExpbmtCdWZmZXI7CgogICAgcHVibGljOgogICAgICAg
IENvbnZlcnRpYmxlTG9hZExhYmVsKCkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBDb252
ZXJ0aWJsZUxvYWRMYWJlbChBYnN0cmFjdE1hY3JvQXNzZW1ibGVyVHlwZSogbWFzbSkKICAgICAg
ICAgICAgOiBtX2xhYmVsKG1hc20tPm1fYXNzZW1ibGVyLmxhYmVsSWdub3JpbmdXYXRjaHBvaW50
cygpKQogICAgICAgIHsKICAgICAgICB9CgogICAgICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJl
dHVybiBtX2xhYmVsLmlzU2V0KCk7IH0KICAgIHByaXZhdGU6CiAgICAgICAgQXNzZW1ibGVyTGFi
ZWwgbV9sYWJlbDsKICAgIH07CgoKCgoKICAgIGNsYXNzIERhdGFMYWJlbFB0ciB7CiAgICAgICAg
dGVtcGxhdGU8Y2xhc3MgVGVtcGxhdGVBc3NlbWJsZXJUeXBlLCBjbGFzcyBUZW1wbGF0ZU1hY3Jv
QXNzZW1ibGVyVHlwZT4KICAgICAgICBmcmllbmQgY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjsKICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKICAgIHB1YmxpYzoKICAgICAgICBE
YXRhTGFiZWxQdHIoKQogICAgICAgIHsKICAgICAgICB9CgogICAgICAgIERhdGFMYWJlbFB0cihB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyVHlwZSogbWFzbSkKICAgICAgICAgICAgOiBtX2xhYmVsKG1h
c20tPm1fYXNzZW1ibGVyLmxhYmVsKCkpCiAgICAgICAgewogICAgICAgIH0KCiAgICAgICAgYm9v
bCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWwuaXNTZXQoKTsgfQoKICAgIHByaXZhdGU6
CiAgICAgICAgQXNzZW1ibGVyTGFiZWwgbV9sYWJlbDsKICAgIH07CgoKCgoKICAgIGNsYXNzIERh
dGFMYWJlbDMyIHsKICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUZW1wbGF0ZUFzc2VtYmxlclR5cGUs
IGNsYXNzIFRlbXBsYXRlTWFjcm9Bc3NlbWJsZXJUeXBlPgogICAgICAgIGZyaWVuZCBjbGFzcyBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyOwogICAgICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVyOwog
ICAgcHVibGljOgogICAgICAgIERhdGFMYWJlbDMyKCkKICAgICAgICB7CiAgICAgICAgfQoKICAg
ICAgICBEYXRhTGFiZWwzMihBYnN0cmFjdE1hY3JvQXNzZW1ibGVyVHlwZSogbWFzbSkKICAgICAg
ICAgICAgOiBtX2xhYmVsKG1hc20tPm1fYXNzZW1ibGVyLmxhYmVsKCkpCiAgICAgICAgewogICAg
ICAgIH0KCiAgICAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xh
YmVsOyB9CgogICAgcHJpdmF0ZToKICAgICAgICBBc3NlbWJsZXJMYWJlbCBtX2xhYmVsOwogICAg
fTsKCgoKCgogICAgY2xhc3MgRGF0YUxhYmVsQ29tcGFjdCB7CiAgICAgICAgdGVtcGxhdGU8Y2xh
c3MgVGVtcGxhdGVBc3NlbWJsZXJUeXBlLCBjbGFzcyBUZW1wbGF0ZU1hY3JvQXNzZW1ibGVyVHlw
ZT4KICAgICAgICBmcmllbmQgY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjsKICAgICAgICBm
cmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKICAgIHB1YmxpYzoKICAgICAgICBEYXRhTGFiZWxDb21w
YWN0KCkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBEYXRhTGFiZWxDb21wYWN0KEFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXJUeXBlKiBtYXNtKQogICAgICAgICAgICA6IG1fbGFiZWwobWFzbS0+
bV9hc3NlbWJsZXIubGFiZWwoKSkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBEYXRhTGFi
ZWxDb21wYWN0KEFzc2VtYmxlckxhYmVsIGxhYmVsKQogICAgICAgICAgICA6IG1fbGFiZWwobGFi
ZWwpCiAgICAgICAgewogICAgICAgIH0KCiAgICAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwoKSBj
b25zdCB7IHJldHVybiBtX2xhYmVsOyB9CgogICAgcHJpdmF0ZToKICAgICAgICBBc3NlbWJsZXJM
YWJlbCBtX2xhYmVsOwogICAgfTsKCgoKCgoKCiAgICBjbGFzcyBDYWxsIHsKICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBUZW1wbGF0ZUFzc2VtYmxlclR5cGUsIGNsYXNzIFRlbXBsYXRlTWFjcm9Bc3Nl
bWJsZXJUeXBlPgogICAgICAgIGZyaWVuZCBjbGFzcyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOwoK
ICAgIHB1YmxpYzoKICAgICAgICBlbnVtIEZsYWdzIHsKICAgICAgICAgICAgTm9uZSA9IDB4MCwK
ICAgICAgICAgICAgTGlua2FibGUgPSAweDEsCiAgICAgICAgICAgIE5lYXIgPSAweDIsCiAgICAg
ICAgICAgIFRhaWwgPSAweDQsCiAgICAgICAgICAgIExpbmthYmxlTmVhciA9IDB4MywKICAgICAg
ICAgICAgTGlua2FibGVOZWFyVGFpbCA9IDB4NywKICAgICAgICB9OwoKICAgICAgICBDYWxsKCkK
ICAgICAgICAgICAgOiBtX2ZsYWdzKE5vbmUpCiAgICAgICAgewogICAgICAgIH0KCiAgICAgICAg
Q2FsbChBc3NlbWJsZXJMYWJlbCBqbXAsIEZsYWdzIGZsYWdzKQogICAgICAgICAgICA6IG1fbGFi
ZWwoam1wKQogICAgICAgICAgICAsIG1fZmxhZ3MoZmxhZ3MpCiAgICAgICAgewogICAgICAgIH0K
CiAgICAgICAgYm9vbCBpc0ZsYWdTZXQoRmxhZ3MgZmxhZykKICAgICAgICB7CiAgICAgICAgICAg
IHJldHVybiBtX2ZsYWdzICYgZmxhZzsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBDYWxsIGZy
b21UYWlsSnVtcChKdW1wIGp1bXApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gQ2FsbChq
dW1wLm1fbGFiZWwsIExpbmthYmxlKTsKICAgICAgICB9CgogICAgICAgIEFzc2VtYmxlckxhYmVs
IG1fbGFiZWw7CiAgICBwcml2YXRlOgogICAgICAgIEZsYWdzIG1fZmxhZ3M7CiAgICB9OwoKCgoK
CgoKICAgIGNsYXNzIEp1bXAgewogICAgICAgIHRlbXBsYXRlPGNsYXNzIFRlbXBsYXRlQXNzZW1i
bGVyVHlwZSwgY2xhc3MgVGVtcGxhdGVNYWNyb0Fzc2VtYmxlclR5cGU+CiAgICAgICAgZnJpZW5k
IGNsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI7CiAgICAgICAgZnJpZW5kIGNsYXNzIENhbGw7
CiAgICAgICAgZnJpZW5kIHN0cnVjdCBERkc6Ok9TUkV4aXQ7CiAgICAgICAgZnJpZW5kIGNsYXNz
IExpbmtCdWZmZXI7CiAgICBwdWJsaWM6CiAgICAgICAgSnVtcCgpCiAgICAgICAgewogICAgICAg
IH0KCgoKICAgICAgICBKdW1wKEFzc2VtYmxlckxhYmVsIGptcCwgQVJNdjdBc3NlbWJsZXI6Okp1
bXBUeXBlIHR5cGUgPSBBUk12N0Fzc2VtYmxlcjo6SnVtcE5vQ29uZGl0aW9uLCBBUk12N0Fzc2Vt
Ymxlcjo6Q29uZGl0aW9uIGNvbmRpdGlvbiA9IEFSTXY3QXNzZW1ibGVyOjpDb25kaXRpb25JbnZh
bGlkKQogICAgICAgICAgICA6IG1fbGFiZWwoam1wKQogICAgICAgICAgICAsIG1fdHlwZSh0eXBl
KQogICAgICAgICAgICAsIG1fY29uZGl0aW9uKGNvbmRpdGlvbikKICAgICAgICB7CiAgICAgICAg
fQojIDYyOCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmgiCiAgICAgICAgTGFiZWwgbGFiZWwoKSBjb25zdAogICAgICAgIHsKICAg
ICAgICAgICAgTGFiZWwgcmVzdWx0OwogICAgICAgICAgICByZXN1bHQubV9sYWJlbCA9IG1fbGFi
ZWw7CiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgfQoKICAgICAgICB2b2lkIGxp
bmsoQWJzdHJhY3RNYWNyb0Fzc2VtYmxlclR5cGUqIG1hc20pIGNvbnN0CiAgICAgICAgewogICAg
ICAgICAgICBtYXNtLT5pbnZhbGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpOwoKCgoKCgogICAgICAg
ICAgICBtYXNtLT5tX2Fzc2VtYmxlci5saW5rSnVtcChtX2xhYmVsLCBtYXNtLT5tX2Fzc2VtYmxl
ci5sYWJlbCgpLCBtX3R5cGUsIG1fY29uZGl0aW9uKTsKIyA2NTcgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIgogICAgICAgIH0K
CiAgICAgICAgdm9pZCBsaW5rVG8oTGFiZWwgbGFiZWwsIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJU
eXBlKiBtYXNtKSBjb25zdAogICAgICAgIHsKCgoKCgogICAgICAgICAgICBtYXNtLT5tX2Fzc2Vt
Ymxlci5saW5rSnVtcChtX2xhYmVsLCBsYWJlbC5tX2xhYmVsLCBtX3R5cGUsIG1fY29uZGl0aW9u
KTsKIyA2NzcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oIgogICAgICAgIH0KCiAgICAgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGFiZWwuaXNTZXQoKTsgfQoKICAgIHByaXZhdGU6CiAgICAgICAgQXNzZW1ibGVy
TGFiZWwgbV9sYWJlbDsKCiAgICAgICAgQVJNdjdBc3NlbWJsZXI6Okp1bXBUeXBlIG1fdHlwZTsK
ICAgICAgICBBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uIG1fY29uZGl0aW9uOwojIDY5NiAiLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmgiCiAgICB9OwoKICAgIHN0cnVjdCBQYXRjaGFibGVKdW1wIHsKICAgICAgICBQYXRjaGFibGVK
dW1wKCkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBleHBsaWNpdCBQYXRjaGFibGVKdW1w
KEp1bXAganVtcCkKICAgICAgICAgICAgOiBtX2p1bXAoanVtcCkKICAgICAgICB7CiAgICAgICAg
fQoKICAgICAgICBvcGVyYXRvciBKdW1wJigpIHsgcmV0dXJuIG1fanVtcDsgfQoKICAgICAgICBK
dW1wIG1fanVtcDsKICAgIH07CgoKCgoKICAgIGNsYXNzIEp1bXBMaXN0IHsKICAgIHB1YmxpYzoK
ICAgICAgICB0eXBlZGVmIFZlY3RvcjxKdW1wLCAyPiBKdW1wVmVjdG9yOwoKICAgICAgICBKdW1w
TGlzdCgpIHsgfQoKICAgICAgICBKdW1wTGlzdChKdW1wIGp1bXApCiAgICAgICAgewogICAgICAg
ICAgICBpZiAoanVtcC5pc1NldCgpKQogICAgICAgICAgICAgICAgYXBwZW5kKGp1bXApOwogICAg
ICAgIH0KCiAgICAgICAgdm9pZCBsaW5rKEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJUeXBlKiBtYXNt
KQogICAgICAgIHsKICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBtX2p1bXBzLnNpemUoKTsKICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgICAgICAg
ICBtX2p1bXBzW2ldLmxpbmsobWFzbSk7CiAgICAgICAgICAgIG1fanVtcHMuY2xlYXIoKTsKICAg
ICAgICB9CgogICAgICAgIHZvaWQgbGlua1RvKExhYmVsIGxhYmVsLCBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyVHlwZSogbWFzbSkKICAgICAgICB7CiAgICAgICAgICAgIHNpemVfdCBzaXplID0gbV9q
dW1wcy5zaXplKCk7CiAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQogICAgICAgICAgICAgICAgbV9qdW1wc1tpXS5saW5rVG8obGFiZWwsIG1hc20pOwogICAgICAg
ICAgICBtX2p1bXBzLmNsZWFyKCk7CiAgICAgICAgfQoKICAgICAgICB2b2lkIGFwcGVuZChKdW1w
IGp1bXApCiAgICAgICAgewogICAgICAgICAgICBtX2p1bXBzLmFwcGVuZChqdW1wKTsKICAgICAg
ICB9CgogICAgICAgIHZvaWQgYXBwZW5kKGNvbnN0IEp1bXBMaXN0JiBvdGhlcikKICAgICAgICB7
CiAgICAgICAgICAgIG1fanVtcHMuYXBwZW5kKG90aGVyLm1fanVtcHMuYmVnaW4oKSwgb3RoZXIu
bV9qdW1wcy5zaXplKCkpOwogICAgICAgIH0KCiAgICAgICAgYm9vbCBlbXB0eSgpCiAgICAgICAg
ewogICAgICAgICAgICByZXR1cm4gIW1fanVtcHMuc2l6ZSgpOwogICAgICAgIH0KCiAgICAgICAg
dm9pZCBjbGVhcigpCiAgICAgICAgewogICAgICAgICAgICBtX2p1bXBzLmNsZWFyKCk7CiAgICAg
ICAgfQoKICAgICAgICBjb25zdCBKdW1wVmVjdG9yJiBqdW1wcygpIGNvbnN0IHsgcmV0dXJuIG1f
anVtcHM7IH0KCiAgICBwcml2YXRlOgogICAgICAgIEp1bXBWZWN0b3IgbV9qdW1wczsKICAgIH07
CgoKCgogICAgTGFiZWwgbGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCkKICAgIHsKICAgICAgICBM
YWJlbCByZXN1bHQ7CiAgICAgICAgcmVzdWx0Lm1fbGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJlbEln
bm9yaW5nV2F0Y2hwb2ludHMoKTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKCgoKCgoK
ICAgIExhYmVsIGxhYmVsKCkKICAgIHsKICAgICAgICByZXR1cm4gTGFiZWwodGhpcyk7CiAgICB9
CgogICAgdm9pZCBwYWRCZWZvcmVQYXRjaCgpCiAgICB7CgogICAgICAgICh2b2lkKWxhYmVsKCk7
CiAgICB9CgogICAgTGFiZWwgd2F0Y2hwb2ludExhYmVsKCkKICAgIHsKICAgICAgICBMYWJlbCBy
ZXN1bHQ7CiAgICAgICAgcmVzdWx0Lm1fbGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJlbEZvcldhdGNo
cG9pbnQoKTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKICAgIExhYmVsIGFsaWduKCkK
ICAgIHsKICAgICAgICBtX2Fzc2VtYmxlci5hbGlnbigxNik7CiAgICAgICAgcmV0dXJuIExhYmVs
KHRoaXMpOwogICAgfQojIDg0OSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgiCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPgogICAgc3RhdGljIHB0cmRpZmZfdCBkaWZmZXJlbmNlQmV0d2VlbihUIGZyb20sIFUg
dG8pCiAgICB7CiAgICAgICAgcmV0dXJuIEFzc2VtYmxlclR5cGU6OmdldERpZmZlcmVuY2VCZXR3
ZWVuTGFiZWxzKGZyb20ubV9sYWJlbCwgdG8ubV9sYWJlbCk7CiAgICB9CgogICAgc3RhdGljIHB0
cmRpZmZfdCBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyJiBhLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGIpCiAgICB7CiAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PihiLmV4ZWN1dGFibGVBZGRyZXNzKCkpIC0g
cmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KGEuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICB9
CgogICAgdW5zaWduZWQgZGVidWdPZmZzZXQoKSB7IHJldHVybiBtX2Fzc2VtYmxlci5kZWJ1Z09m
ZnNldCgpOyB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
c3RhdGljIHZvaWQgY2FjaGVGbHVzaCh2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkKICAgIHsKICAg
ICAgICBBc3NlbWJsZXJUeXBlOjpjYWNoZUZsdXNoKGNvZGUsIHNpemUpOwogICAgfQojIDk2NyAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmgiCiAgICBBc3NlbWJsZXJUeXBlIG1fYXNzZW1ibGVyOwoKICAgIHN0YXRpYyB2b2lkIGxp
bmtKdW1wKHZvaWQqIGNvZGUsIEp1bXAganVtcCwgQ29kZUxvY2F0aW9uTGFiZWwgdGFyZ2V0KQog
ICAgewogICAgICAgIEFzc2VtYmxlclR5cGU6OmxpbmtKdW1wKGNvZGUsIGp1bXAubV9sYWJlbCwg
dGFyZ2V0LmRhdGFMb2NhdGlvbigpKTsKICAgIH0KCiAgICBzdGF0aWMgdm9pZCBsaW5rUG9pbnRl
cih2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCBsYWJlbCwgdm9pZCogdmFsdWUpCiAgICB7CiAg
ICAgICAgQXNzZW1ibGVyVHlwZTo6bGlua1BvaW50ZXIoY29kZSwgbGFiZWwsIHZhbHVlKTsKICAg
IH0KCiAgICBzdGF0aWMgdm9pZCogZ2V0TGlua2VyQWRkcmVzcyh2b2lkKiBjb2RlLCBBc3NlbWJs
ZXJMYWJlbCBsYWJlbCkKICAgIHsKICAgICAgICByZXR1cm4gQXNzZW1ibGVyVHlwZTo6Z2V0UmVs
b2NhdGVkQWRkcmVzcyhjb2RlLCBsYWJlbCk7CiAgICB9CgogICAgc3RhdGljIHVuc2lnbmVkIGdl
dExpbmtlckNhbGxSZXR1cm5PZmZzZXQoQ2FsbCBjYWxsKQogICAgewogICAgICAgIHJldHVybiBB
c3NlbWJsZXJUeXBlOjpnZXRDYWxsUmV0dXJuT2Zmc2V0KGNhbGwubV9sYWJlbCk7CiAgICB9Cgog
ICAgc3RhdGljIHZvaWQgcmVwYXRjaEp1bXAoQ29kZUxvY2F0aW9uSnVtcCBqdW1wLCBDb2RlTG9j
YXRpb25MYWJlbCBkZXN0aW5hdGlvbikKICAgIHsKICAgICAgICBBc3NlbWJsZXJUeXBlOjpyZWxp
bmtKdW1wKGp1bXAuZGF0YUxvY2F0aW9uKCksIGRlc3RpbmF0aW9uLmRhdGFMb2NhdGlvbigpKTsK
ICAgIH0KCiAgICBzdGF0aWMgdm9pZCByZXBhdGNoTmVhckNhbGwoQ29kZUxvY2F0aW9uTmVhckNh
bGwgbmVhckNhbGwsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAgewogICAgICAg
IHN3aXRjaCAobmVhckNhbGwuY2FsbE1vZGUoKSkgewogICAgICAgIGNhc2UgTmVhckNhbGxNb2Rl
OjpUYWlsOgogICAgICAgICAgICBBc3NlbWJsZXJUeXBlOjpyZWxpbmtKdW1wKG5lYXJDYWxsLmRh
dGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5kYXRhTG9jYXRpb24oKSk7CiAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICBjYXNlIE5lYXJDYWxsTW9kZTo6UmVndWxhcjoKICAgICAgICAgICAgQXNz
ZW1ibGVyVHlwZTo6cmVsaW5rQ2FsbChuZWFyQ2FsbC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRp
b24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAg
ICAgICAgV1RGQ3Jhc2goKTsKICAgIH0KCiAgICBzdGF0aWMgdm9pZCByZXBhdGNoQ29tcGFjdChD
b2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0IGRhdGFMYWJlbENvbXBhY3QsIGludDMyX3QgdmFs
dWUpCiAgICB7CiAgICAgICAgQXNzZW1ibGVyVHlwZTo6cmVwYXRjaENvbXBhY3QoZGF0YUxhYmVs
Q29tcGFjdC5kYXRhTG9jYXRpb24oKSwgdmFsdWUpOwogICAgfQoKICAgIHN0YXRpYyB2b2lkIHJl
cGF0Y2hJbnQzMihDb2RlTG9jYXRpb25EYXRhTGFiZWwzMiBkYXRhTGFiZWwzMiwgaW50MzJfdCB2
YWx1ZSkKICAgIHsKICAgICAgICBBc3NlbWJsZXJUeXBlOjpyZXBhdGNoSW50MzIoZGF0YUxhYmVs
MzIuZGF0YUxvY2F0aW9uKCksIHZhbHVlKTsKICAgIH0KCiAgICBzdGF0aWMgdm9pZCByZXBhdGNo
UG9pbnRlcihDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgZGF0YUxhYmVsUHRyLCB2b2lkKiB2YWx1
ZSkKICAgIHsKICAgICAgICBBc3NlbWJsZXJUeXBlOjpyZXBhdGNoUG9pbnRlcihkYXRhTGFiZWxQ
dHIuZGF0YUxvY2F0aW9uKCksIHZhbHVlKTsKICAgIH0KCiAgICBzdGF0aWMgdm9pZCogcmVhZFBv
aW50ZXIoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGRhdGFMYWJlbFB0cikKICAgIHsKICAgICAg
ICByZXR1cm4gQXNzZW1ibGVyVHlwZTo6cmVhZFBvaW50ZXIoZGF0YUxhYmVsUHRyLmRhdGFMb2Nh
dGlvbigpKTsKICAgIH0KCiAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExvYWQoQ29kZUxvY2F0
aW9uQ29udmVydGlibGVMb2FkIGxhYmVsKQogICAgewogICAgICAgIEFzc2VtYmxlclR5cGU6OnJl
cGxhY2VXaXRoTG9hZChsYWJlbC5kYXRhTG9jYXRpb24oKSk7CiAgICB9CgogICAgc3RhdGljIHZv
aWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24oQ29kZUxvY2F0aW9uQ29udmVydGlibGVM
b2FkIGxhYmVsKQogICAgewogICAgICAgIEFzc2VtYmxlclR5cGU6OnJlcGxhY2VXaXRoQWRkcmVz
c0NvbXB1dGF0aW9uKGxhYmVsLmRhdGFMb2NhdGlvbigpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPgogICAgdm9pZCBhZGRMaW5rVGFzayhjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQogICAgewogICAgICAgIG1fbGlua1Rhc2tzLmFwcGVuZChjcmVhdGVTaGFyZWRUYXNrPHZv
aWQoTGlua0J1ZmZlciYpPihmdW5jdG9yKSk7CiAgICB9Cgpwcm90ZWN0ZWQ6CiAgICBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyKCkKICAgICAgICA6IG1fcmFuZG9tU291cmNlKDApCiAgICB7CiAgICAg
ICAgaW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKICAgIH0KCiAgICB1aW50MzJfdCByYW5k
b20oKQogICAgewogICAgICAgIGlmICghbV9yYW5kb21Tb3VyY2VJc0luaXRpYWxpemVkKSB7CiAg
ICAgICAgICAgIG1fcmFuZG9tU291cmNlSXNJbml0aWFsaXplZCA9IHRydWU7CiAgICAgICAgICAg
IG1fcmFuZG9tU291cmNlLnNldFNlZWQoY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSk7
CiAgICAgICAgfQogICAgICAgIHJldHVybiBtX3JhbmRvbVNvdXJjZS5nZXRVaW50MzIoKTsKICAg
IH0KCiAgICBib29sIG1fcmFuZG9tU291cmNlSXNJbml0aWFsaXplZCB7IGZhbHNlIH07CiAgICBX
ZWFrUmFuZG9tIG1fcmFuZG9tU291cmNlOwoKCgoKCiAgICBzdGF0aWMgYm9vbCBoYXZlU2NyYXRj
aFJlZ2lzdGVyRm9yQmxpbmRpbmcoKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0K
ICAgIHN0YXRpYyBSZWdpc3RlcklEIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkKICAgIHsK
ICAgICAgICBXVEZDcmFzaCgpOwogICAgICAgIHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7CiAgICB9
CiAgICBzdGF0aWMgYm9vbCBjYW5CbGluZCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICBzdGF0aWMg
Ym9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7
IH0KICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2NF90KSB7
IHJldHVybiBmYWxzZTsgfQoKICAgIGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7CiAgICAgICAg
ZnJpZW5kIGNsYXNzIERhdGFMYWJlbFB0cjsKICAgICAgICBmcmllbmQgY2xhc3MgRGF0YUxhYmVs
MzI7CiAgICAgICAgZnJpZW5kIGNsYXNzIERhdGFMYWJlbENvbXBhY3Q7CiAgICAgICAgZnJpZW5k
IGNsYXNzIEp1bXA7CiAgICAgICAgZnJpZW5kIGNsYXNzIExhYmVsOwoKICAgIHB1YmxpYzoKICAg
ICAgICBDYWNoZWRUZW1wUmVnaXN0ZXIoQWJzdHJhY3RNYWNyb0Fzc2VtYmxlclR5cGUqIG1hc20s
IFJlZ2lzdGVySUQgcmVnaXN0ZXJJRCkKICAgICAgICAgICAgOiBtX21hc20obWFzbSkKICAgICAg
ICAgICAgLCBtX3JlZ2lzdGVySUQocmVnaXN0ZXJJRCkKICAgICAgICAgICAgLCBtX3ZhbHVlKDAp
CiAgICAgICAgICAgICwgbV92YWxpZEJpdCgxIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWdp
c3RlcklEKSkKICAgICAgICB7CiAgICAgICAgICAgICgodm9pZCkwKTsKICAgICAgICB9CgogICAg
ICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIFJlZ2lzdGVySUQg
cmVnaXN0ZXJJREludmFsaWRhdGUoKSB7IGludmFsaWRhdGUoKTsgcmV0dXJuIG1fcmVnaXN0ZXJJ
RDsgfQoKICAgICAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBS
ZWdpc3RlcklEIHJlZ2lzdGVySUROb0ludmFsaWRhdGUoKSB7IHJldHVybiBtX3JlZ2lzdGVySUQ7
IH0KCiAgICAgICAgYm9vbCB2YWx1ZShpbnRwdHJfdCYgdmFsdWUpCiAgICAgICAgewogICAgICAg
ICAgICB2YWx1ZSA9IG1fdmFsdWU7CiAgICAgICAgICAgIHJldHVybiBtX21hc20tPmlzVGVtcFJl
Z2lzdGVyVmFsaWQobV92YWxpZEJpdCk7CiAgICAgICAgfQoKICAgICAgICB2b2lkIHNldFZhbHVl
KGludHB0cl90IHZhbHVlKQogICAgICAgIHsKICAgICAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwog
ICAgICAgICAgICBtX21hc20tPnNldFRlbXBSZWdpc3RlclZhbGlkKG1fdmFsaWRCaXQpOwogICAg
ICAgIH0KCiAgICAgICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
dm9pZCBpbnZhbGlkYXRlKCkgeyBtX21hc20tPmNsZWFyVGVtcFJlZ2lzdGVyVmFsaWQobV92YWxp
ZEJpdCk7IH0KCiAgICBwcml2YXRlOgogICAgICAgIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJUeXBl
KiBtX21hc207CiAgICAgICAgUmVnaXN0ZXJJRCBtX3JlZ2lzdGVySUQ7CiAgICAgICAgaW50cHRy
X3QgbV92YWx1ZTsKICAgICAgICB1bnNpZ25lZCBtX3ZhbGlkQml0OwogICAgfTsKCiAgICBpbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGludmFsaWRhdGVBbGxU
ZW1wUmVnaXN0ZXJzKCkKICAgIHsKICAgICAgICBtX3RlbXBSZWdpc3RlcnNWYWxpZEJpdHMgPSAw
OwogICAgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJv
b2wgaXNUZW1wUmVnaXN0ZXJWYWxpZCh1bnNpZ25lZCByZWdpc3Rlck1hc2spCiAgICB7CiAgICAg
ICAgcmV0dXJuIChtX3RlbXBSZWdpc3RlcnNWYWxpZEJpdHMgJiByZWdpc3Rlck1hc2spOwogICAg
fQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgY2xl
YXJUZW1wUmVnaXN0ZXJWYWxpZCh1bnNpZ25lZCByZWdpc3Rlck1hc2spCiAgICB7CiAgICAgICAg
bV90ZW1wUmVnaXN0ZXJzVmFsaWRCaXRzICY9IH5yZWdpc3Rlck1hc2s7CiAgICB9CgogICAgaW5s
aW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBzZXRUZW1wUmVnaXN0
ZXJWYWxpZCh1bnNpZ25lZCByZWdpc3Rlck1hc2spCiAgICB7CiAgICAgICAgbV90ZW1wUmVnaXN0
ZXJzVmFsaWRCaXRzIHw9IHJlZ2lzdGVyTWFzazsKICAgIH0KCiAgICBmcmllbmQgY2xhc3MgQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlOwogICAgZnJpZW5kIGNsYXNzIERpc2FsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZTsKICAgIHVuc2lnbmVkIG1fdGVtcFJlZ2lzdGVyc1ZhbGlk
Qml0czsKICAgIGJvb2wgbV9hbGxvd1NjcmF0Y2hSZWdpc3RlciB7IHRydWUgfTsKCiAgICBWZWN0
b3I8UmVmUHRyPFNoYXJlZFRhc2s8dm9pZChMaW5rQnVmZmVyJik+Pj4gbV9saW5rVGFza3M7Cgog
ICAgZnJpZW5kIGNsYXNzIExpbmtCdWZmZXI7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgQXNzZW1ibGVy
VHlwZSwgY2xhc3MgTWFjcm9Bc3NlbWJsZXJUeXBlPgppbmxpbmUgdHlwZW5hbWUgQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlLCBNYWNyb0Fzc2VtYmxlclR5cGU+OjpCYXNlSW5k
ZXgKQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlLCBNYWNyb0Fzc2VtYmxlclR5
cGU+OjpBZGRyZXNzOjppbmRleGVkQnkoCiAgICB0eXBlbmFtZSBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyPEFzc2VtYmxlclR5cGUsIE1hY3JvQXNzZW1ibGVyVHlwZT46OlJlZ2lzdGVySUQgaW5kZXgs
CiAgICB0eXBlbmFtZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGUsIE1hY3Jv
QXNzZW1ibGVyVHlwZT46OlNjYWxlIHNjYWxlKSBjb25zdAp7CiAgICByZXR1cm4gQmFzZUluZGV4
KGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKfQoKfQojIDM0ICIuLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCIgMgoKbmFtZXNwYWNl
IEpTQyB7CgpjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8QVJNdjdBc3NlbWJsZXIsIE1hY3JvQXNzZW1ibGVyQVJNdjc+IHsKICAgIHN0YXRp
YyBjb25zdCBSZWdpc3RlcklEIGRhdGFUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmlwOwog
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9IEFSTVJlZ2lz
dGVyczo6cjY7CgogICAgc3RhdGljIGNvbnN0IEFSTVJlZ2lzdGVyczo6RlBEb3VibGVSZWdpc3Rl
cklEIGZwVGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpkNzsKICAgIGlubGluZSBBUk1SZWdp
c3RlcnM6OkZQU2luZ2xlUmVnaXN0ZXJJRCBmcFRlbXBSZWdpc3RlckFzU2luZ2xlKCkgeyByZXR1
cm4gQVJNUmVnaXN0ZXJzOjphc1NpbmdsZShmcFRlbXBSZWdpc3Rlcik7IH0KCnB1YmxpYzoKICAg
IE1hY3JvQXNzZW1ibGVyQVJNdjcoKQogICAgICAgIDogbV9tYWtlSnVtcFBhdGNoYWJsZShmYWxz
ZSkKICAgIHsKICAgIH0KCiAgICB0eXBlZGVmIEFSTXY3QXNzZW1ibGVyOjpMaW5rUmVjb3JkIExp
bmtSZWNvcmQ7CiAgICB0eXBlZGVmIEFSTXY3QXNzZW1ibGVyOjpKdW1wVHlwZSBKdW1wVHlwZTsK
ICAgIHR5cGVkZWYgQVJNdjdBc3NlbWJsZXI6Okp1bXBMaW5rVHlwZSBKdW1wTGlua1R5cGU7CiAg
ICB0eXBlZGVmIEFSTXY3QXNzZW1ibGVyOjpDb25kaXRpb24gQ29uZGl0aW9uOwoKICAgIHN0YXRp
YyBjb25zdCBBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uIERlZmF1bHRDb25kaXRpb24gPSBBUk12
N0Fzc2VtYmxlcjo6Q29uZGl0aW9uSW52YWxpZDsKICAgIHN0YXRpYyBjb25zdCBBUk12N0Fzc2Vt
Ymxlcjo6SnVtcFR5cGUgRGVmYXVsdEp1bXAgPSBBUk12N0Fzc2VtYmxlcjo6SnVtcE5vQ29uZGl0
aW9uRml4ZWRTaXplOwoKICAgIHN0YXRpYyBib29sIGlzQ29tcGFjdFB0ckFsaWduZWRBZGRyZXNz
T2Zmc2V0KHB0cmRpZmZfdCB2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gdmFsdWUgPj0gLTI1
NSAmJiB2YWx1ZSA8PSAyNTU7CiAgICB9CgogICAgVmVjdG9yPExpbmtSZWNvcmQsIDAsIFVuc2Fm
ZVZlY3Rvck92ZXJmbG93PiYganVtcHNUb0xpbmsoKSB7IHJldHVybiBtX2Fzc2VtYmxlci5qdW1w
c1RvTGluaygpOyB9CiAgICB2b2lkKiB1bmxpbmtlZENvZGUoKSB7IHJldHVybiBtX2Fzc2VtYmxl
ci51bmxpbmtlZENvZGUoKTsgfQogICAgc3RhdGljIGJvb2wgY2FuQ29tcGFjdChKdW1wVHlwZSBq
dW1wVHlwZSkgeyByZXR1cm4gQVJNdjdBc3NlbWJsZXI6OmNhbkNvbXBhY3QoanVtcFR5cGUpOyB9
CiAgICBzdGF0aWMgSnVtcExpbmtUeXBlIGNvbXB1dGVKdW1wVHlwZShKdW1wVHlwZSBqdW1wVHlw
ZSwgY29uc3QgdWludDhfdCogZnJvbSwgY29uc3QgdWludDhfdCogdG8pIHsgcmV0dXJuIEFSTXY3
QXNzZW1ibGVyOjpjb21wdXRlSnVtcFR5cGUoanVtcFR5cGUsIGZyb20sIHRvKTsgfQogICAgc3Rh
dGljIEp1bXBMaW5rVHlwZSBjb21wdXRlSnVtcFR5cGUoTGlua1JlY29yZCYgcmVjb3JkLCBjb25z
dCB1aW50OF90KiBmcm9tLCBjb25zdCB1aW50OF90KiB0bykgeyByZXR1cm4gQVJNdjdBc3NlbWJs
ZXI6OmNvbXB1dGVKdW1wVHlwZShyZWNvcmQsIGZyb20sIHRvKTsgfQogICAgc3RhdGljIGludCBq
dW1wU2l6ZURlbHRhKEp1bXBUeXBlIGp1bXBUeXBlLCBKdW1wTGlua1R5cGUganVtcExpbmtUeXBl
KSB7IHJldHVybiBBUk12N0Fzc2VtYmxlcjo6anVtcFNpemVEZWx0YShqdW1wVHlwZSwganVtcExp
bmtUeXBlKTsgfQogICAgc3RhdGljIHZvaWQgbGluayhMaW5rUmVjb3JkJiByZWNvcmQsIHVpbnQ4
X3QqIGZyb20sIGNvbnN0IHVpbnQ4X3QqIGZyb21JbnN0cnVjdGlvbiwgdWludDhfdCogdG8pIHsg
cmV0dXJuIEFSTXY3QXNzZW1ibGVyOjpsaW5rKHJlY29yZCwgZnJvbSwgZnJvbUluc3RydWN0aW9u
LCB0byk7IH0KCiAgICBzdHJ1Y3QgQXJtQWRkcmVzcyB7CiAgICAgICAgZW51bSBBZGRyZXNzVHlw
ZSB7CiAgICAgICAgICAgIEhhc09mZnNldCwKICAgICAgICAgICAgSGFzSW5kZXgsCiAgICAgICAg
fSB0eXBlOwogICAgICAgIFJlZ2lzdGVySUQgYmFzZTsKICAgICAgICB1bmlvbiB7CiAgICAgICAg
ICAgIGludDMyX3Qgb2Zmc2V0OwogICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAg
UmVnaXN0ZXJJRCBpbmRleDsKICAgICAgICAgICAgICAgIFNjYWxlIHNjYWxlOwogICAgICAgICAg
ICB9OwogICAgICAgIH0gdTsKCiAgICAgICAgZXhwbGljaXQgQXJtQWRkcmVzcyhSZWdpc3RlcklE
IGJhc2UsIGludDMyX3Qgb2Zmc2V0ID0gMCkKICAgICAgICAgICAgOiB0eXBlKEhhc09mZnNldCkK
ICAgICAgICAgICAgLCBiYXNlKGJhc2UpCiAgICAgICAgewogICAgICAgICAgICB1Lm9mZnNldCA9
IG9mZnNldDsKICAgICAgICB9CgogICAgICAgIGV4cGxpY2l0IEFybUFkZHJlc3MoUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBTY2FsZSBzY2FsZSA9IFRpbWVzT25lKQogICAgICAg
ICAgICA6IHR5cGUoSGFzSW5kZXgpCiAgICAgICAgICAgICwgYmFzZShiYXNlKQogICAgICAgIHsK
ICAgICAgICAgICAgdS5pbmRleCA9IGluZGV4OwogICAgICAgICAgICB1LnNjYWxlID0gc2NhbGU7
CiAgICAgICAgfQogICAgfTsKCnB1YmxpYzoKICAgIHN0YXRpYyBjb25zdCBTY2FsZSBTY2FsZVB0
ciA9IFRpbWVzRm91cjsKCiAgICBlbnVtIFJlbGF0aW9uYWxDb25kaXRpb24gewogICAgICAgIEVx
dWFsID0gQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbkVRLAogICAgICAgIE5vdEVxdWFsID0gQVJN
djdBc3NlbWJsZXI6OkNvbmRpdGlvbk5FLAogICAgICAgIEFib3ZlID0gQVJNdjdBc3NlbWJsZXI6
OkNvbmRpdGlvbkhJLAogICAgICAgIEFib3ZlT3JFcXVhbCA9IEFSTXY3QXNzZW1ibGVyOjpDb25k
aXRpb25IUywKICAgICAgICBCZWxvdyA9IEFSTXY3QXNzZW1ibGVyOjpDb25kaXRpb25MTywKICAg
ICAgICBCZWxvd09yRXF1YWwgPSBBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uTFMsCiAgICAgICAg
R3JlYXRlclRoYW4gPSBBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uR1QsCiAgICAgICAgR3JlYXRl
clRoYW5PckVxdWFsID0gQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbkdFLAogICAgICAgIExlc3NU
aGFuID0gQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbkxULAogICAgICAgIExlc3NUaGFuT3JFcXVh
bCA9IEFSTXY3QXNzZW1ibGVyOjpDb25kaXRpb25MRQogICAgfTsKCiAgICBlbnVtIFJlc3VsdENv
bmRpdGlvbiB7CiAgICAgICAgT3ZlcmZsb3cgPSBBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uVlMs
CiAgICAgICAgU2lnbmVkID0gQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbk1JLAogICAgICAgIFBv
c2l0aXZlT3JaZXJvID0gQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvblBMLAogICAgICAgIFplcm8g
PSBBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uRVEsCiAgICAgICAgTm9uWmVybyA9IEFSTXY3QXNz
ZW1ibGVyOjpDb25kaXRpb25ORQogICAgfTsKCiAgICBlbnVtIERvdWJsZUNvbmRpdGlvbiB7Cgog
ICAgICAgIERvdWJsZUVxdWFsID0gQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbkVRLAogICAgICAg
IERvdWJsZU5vdEVxdWFsID0gQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvblZDLAogICAgICAgIERv
dWJsZUdyZWF0ZXJUaGFuID0gQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbkdULAogICAgICAgIERv
dWJsZUdyZWF0ZXJUaGFuT3JFcXVhbCA9IEFSTXY3QXNzZW1ibGVyOjpDb25kaXRpb25HRSwKICAg
ICAgICBEb3VibGVMZXNzVGhhbiA9IEFSTXY3QXNzZW1ibGVyOjpDb25kaXRpb25MTywKICAgICAg
ICBEb3VibGVMZXNzVGhhbk9yRXF1YWwgPSBBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uTFMsCgog
ICAgICAgIERvdWJsZUVxdWFsT3JVbm9yZGVyZWQgPSBBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9u
VlMsCiAgICAgICAgRG91YmxlTm90RXF1YWxPclVub3JkZXJlZCA9IEFSTXY3QXNzZW1ibGVyOjpD
b25kaXRpb25ORSwKICAgICAgICBEb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRlcmVkID0gQVJNdjdB
c3NlbWJsZXI6OkNvbmRpdGlvbkhJLAogICAgICAgIERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9y
VW5vcmRlcmVkID0gQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbkhTLAogICAgICAgIERvdWJsZUxl
c3NUaGFuT3JVbm9yZGVyZWQgPSBBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uTFQsCiAgICAgICAg
RG91YmxlTGVzc1RoYW5PckVxdWFsT3JVbm9yZGVyZWQgPSBBUk12N0Fzc2VtYmxlcjo6Q29uZGl0
aW9uTEUsCiAgICB9OwoKICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHN0YWNrUG9pbnRlclJl
Z2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpzcDsKICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZy
YW1lUG9pbnRlclJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpmcDsKICAgIHN0YXRpYyBjb25zdCBS
ZWdpc3RlcklEIGxpbmtSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6bHI7CiMgMTUzICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCIKICAg
IHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAg
ICBtX2Fzc2VtYmxlci5hZGQoZGVzdCwgZGVzdCwgc3JjKTsKICAgIH0KCiAgICB2b2lkIGFkZDMy
KFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
ewogICAgICAgIG1fYXNzZW1ibGVyLmFkZChkZXN0LCBsZWZ0LCByaWdodCk7CiAgICB9CgogICAg
dm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAg
ICAgYWRkMzIoaW1tLCBkZXN0LCBkZXN0KTsKICAgIH0KCiAgICB2b2lkIGFkZDMyKEFic29sdXRl
QWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBsb2FkMzIoc3JjLm1f
cHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICBhZGQzMihkYXRhVGVtcFJlZ2lzdGVyLCBk
ZXN0KTsKICAgIH0KCiAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJt
SW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTJPckVuY29kZWRJbW0oaW1tLm1fdmFs
dWUpOwoKCgogICAgICAgIGlmIChkZXN0ID09IEFSTVJlZ2lzdGVyczo6c3AgJiYgc3JjICE9IGRl
c3QpIHsKICAgICAgICAgICAgbW92ZShzcmMsIEFSTVJlZ2lzdGVyczo6c3ApOwogICAgICAgICAg
ICBzcmMgPSBBUk1SZWdpc3RlcnM6OnNwOwogICAgICAgIH0KCiAgICAgICAgaWYgKGFybUltbS5p
c1ZhbGlkKCkpCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZChkZXN0LCBzcmMsIGFybUltbSk7
CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG1vdmUoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkKGRlc3QsIHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7
CiAgICAgICAgfQogICAgfQoKICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVz
cyBhZGRyZXNzKQogICAgewogICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVy
KTsKCiAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6
Om1ha2VVSW50MTJPckVuY29kZWRJbW0oaW1tLm1fdmFsdWUpOwogICAgICAgIGlmIChhcm1JbW0u
aXNWYWxpZCgpKQogICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGQoZGF0YVRlbXBSZWdpc3Rlciwg
ZGF0YVRlbXBSZWdpc3RlciwgYXJtSW1tKTsKICAgICAgICBlbHNlIHsKCgogICAgICAgICAgICBt
b3ZlKGltbSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZChkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVy
KTsKICAgICAgICB9CgogICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7
CiAgICB9CgogICAgdm9pZCBhZGQzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
ewogICAgICAgIGxvYWQzMihzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgIGFkZDMyKGRh
dGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwogICAgfQoKICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMy
IGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICB7CiAgICAgICAgbG9hZDMyKGFkZHJl
c3MubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwoKICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBh
cm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxMk9yRW5jb2RlZEltbShpbW0ubV92
YWx1ZSk7CiAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkpCiAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmFkZChkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBhcm1JbW0pOwogICAg
ICAgIGVsc2UgewoKCiAgICAgICAgICAgIG1vdmUoaW1tLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsK
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkKGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVn
aXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgIH0KCiAgICAgICAgc3RvcmUzMihk
YXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKICAgIH0KCiAgICB2b2lkIGFkZFB0ck5v
RmxhZ3MoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgewogICAgICAg
IGFkZDMyKGltbSwgc3JjRGVzdCk7CiAgICB9CgogICAgdm9pZCBhZGQ2NChUcnVzdGVkSW1tMzIg
aW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgIHsKICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwoKICAgICAgICBtX2Fz
c2VtYmxlci5sZHIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNVGh1
bWJJbW1lZGlhdGU6Om1ha2VVSW50MTIoMCkpOwogICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGFy
bUltbSA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlRW5jb2RlZEltbShpbW0ubV92YWx1ZSk7CiAg
ICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkpCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZF9T
KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFybUltbSk7CiAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgIG1vdmUoaW1tLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkX1MoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwg
YWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRy
ZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgfQogICAgICAgIG1fYXNz
ZW1ibGVyLnN0cihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBBUk1UaHVt
YkltbWVkaWF0ZTo6bWFrZVVJbnQxMigwKSk7CgogICAgICAgIG1fYXNzZW1ibGVyLmxkcihkYXRh
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBBUk1UaHVtYkltbWVkaWF0ZTo6bWFr
ZVVJbnQxMig0KSk7CiAgICAgICAgbV9hc3NlbWJsZXIuYWRjKGRhdGFUZW1wUmVnaXN0ZXIsIGRh
dGFUZW1wUmVnaXN0ZXIsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlRW5jb2RlZEltbShpbW0ubV92
YWx1ZSA+PiAzMSkpOwogICAgICAgIG1fYXNzZW1ibGVyLnN0cihkYXRhVGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyLCBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxMig0KSk7CiAg
ICB9CgogICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lz
dGVySUQgZGVzdCkKICAgIHsKICAgICAgICBtX2Fzc2VtYmxlci5BUk1fYW5kKGRlc3QsIG9wMSwg
b3AyKTsKICAgIH0KCiAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJt
SW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVkSW1tKGltbS5tX3ZhbHVlKTsKICAg
ICAgICBpZiAoYXJtSW1tLmlzVmFsaWQoKSkKICAgICAgICAgICAgbV9hc3NlbWJsZXIuQVJNX2Fu
ZChkZXN0LCBzcmMsIGFybUltbSk7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG1vdmUoaW1t
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgbV9hc3NlbWJsZXIuQVJNX2FuZChkZXN0
LCBzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgIH0KICAgIH0KCiAgICB2b2lkIGFuZDMy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgYW5kMzIoZGVz
dCwgc3JjLCBkZXN0KTsKICAgIH0KCiAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBhbmQzMihpbW0sIGRlc3QsIGRlc3QpOwogICAg
fQoKICAgIHZvaWQgYW5kMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAg
ICAgICBsb2FkMzIoc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICBhbmQzMihkYXRhVGVt
cFJlZ2lzdGVyLCBkZXN0KTsKICAgIH0KCiAgICB2b2lkIGNvdW50TGVhZGluZ1plcm9zMzIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBtX2Fzc2VtYmxlci5j
bHooZGVzdCwgc3JjKTsKICAgIH0KCiAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CgogICAgICAgIEFS
TVRodW1iSW1tZWRpYXRlIGFybUltbSA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlRW5jb2RlZElt
bSgweDFmKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9hc3NlbWJsZXIuQVJNX2FuZChk
YXRhVGVtcFJlZ2lzdGVyLCBzaGlmdEFtb3VudCwgYXJtSW1tKTsKCiAgICAgICAgbV9hc3NlbWJs
ZXIubHNsKGRlc3QsIHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICB9CgogICAgdm9pZCBsc2hp
ZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgewogICAgICAgIG1fYXNzZW1ibGVyLmxzbChkZXN0LCBzcmMsIGltbS5tX3ZhbHVlICYgMHgx
Zik7CiAgICB9CgogICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdp
c3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgbHNoaWZ0MzIoZGVzdCwgc2hpZnRBbW91bnQsIGRl
c3QpOwogICAgfQoKICAgIHZvaWQgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgewogICAgICAgIGxzaGlmdDMyKGRlc3QsIGltbSwgZGVzdCk7CiAgICB9Cgog
ICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAg
ICAgIG1fYXNzZW1ibGVyLnNtdWxsKGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QsIHNyYyk7
CiAgICB9CgogICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQs
IFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBtX2Fzc2VtYmxlci5zbXVsbChkZXN0LCBk
YXRhVGVtcFJlZ2lzdGVyLCBsZWZ0LCByaWdodCk7CiAgICB9CgogICAgdm9pZCBtdWwzMihUcnVz
dGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAg
ICAgIG1vdmUoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICBtX2Fzc2VtYmxlci5zbXVs
bChkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgfQoK
ICAgIHZvaWQgbmVnMzIoUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgewogICAgICAgIG1fYXNzZW1i
bGVyLm5lZyhzcmNEZXN0LCBzcmNEZXN0KTsKICAgIH0KCiAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBtX2Fzc2VtYmxlci5vcnIoZGVz
dCwgZGVzdCwgc3JjKTsKICAgIH0KCiAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEFic29s
dXRlQWRkcmVzcyBkZXN0KQogICAgewogICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihkZXN0Lm1f
cHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgbG9hZDMyKGFkZHJlc3NUZW1wUmVn
aXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgIG9yMzIoc3JjLCBkYXRhVGVtcFJlZ2lz
dGVyKTsKICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpOwogICAgfQoKICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJl
c3MgYWRkcmVzcykKICAgIHsKICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBhcm1JbW0gPSBBUk1U
aHVtYkltbWVkaWF0ZTo6bWFrZUVuY29kZWRJbW0oaW1tLm1fdmFsdWUpOwogICAgICAgIGlmIChh
cm1JbW0uaXNWYWxpZCgpKSB7CiAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNz
Lm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgICAgIGxvYWQzMihhZGRyZXNz
VGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgbV9hc3NlbWJsZXIu
b3JyKGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFybUltbSk7CiAgICAgICAg
ICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIp
LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3NUZW1wUmVn
aXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICBtb3ZlKGltbSwgYWRkcmVzc1Rl
bXBSZWdpc3Rlcik7CiAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycihkYXRhVGVtcFJlZ2lzdGVy
LCBkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAg
ICAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsK
ICAgICAgICB9CiAgICB9CgogICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3Mg
YWRkcmVzcykKICAgIHsKICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7
CiAgICAgICAgb3IzMihpbW0sIGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIpOwog
ICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CiAgICB9CgogICAgdm9p
ZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBv
cjMyKGltbSwgZGVzdCwgZGVzdCk7CiAgICB9CgogICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgb3Ax
LCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIG1fYXNzZW1i
bGVyLm9ycihkZXN0LCBvcDEsIG9wMik7CiAgICB9CgogICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgQVJN
VGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVkSW1t
KGltbS5tX3ZhbHVlKTsKICAgICAgICBpZiAoYXJtSW1tLmlzVmFsaWQoKSkKICAgICAgICAgICAg
bV9hc3NlbWJsZXIub3JyKGRlc3QsIHNyYywgYXJtSW1tKTsKICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7
CiAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycihkZXN0LCBzcmMsIGRhdGFUZW1wUmVnaXN0ZXIp
OwogICAgICAgIH0KICAgIH0KCiAgICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CgogICAgICAgIEFSTVRo
dW1iSW1tZWRpYXRlIGFybUltbSA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlRW5jb2RlZEltbSgw
eDFmKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9hc3NlbWJsZXIuQVJNX2FuZChkYXRh
VGVtcFJlZ2lzdGVyLCBzaGlmdEFtb3VudCwgYXJtSW1tKTsKCiAgICAgICAgbV9hc3NlbWJsZXIu
YXNyKGRlc3QsIHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICB9CgogICAgdm9pZCByc2hpZnQz
MihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
ewogICAgICAgIGlmICghaW1tLm1fdmFsdWUpCiAgICAgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsK
ICAgICAgICBlbHNlCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFzcihkZXN0LCBzcmMsIGltbS5t
X3ZhbHVlICYgMHgxZik7CiAgICB9CgogICAgdm9pZCByc2hpZnQzMihSZWdpc3RlcklEIHNoaWZ0
QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgcnNoaWZ0MzIoZGVzdCwgc2hp
ZnRBbW91bnQsIGRlc3QpOwogICAgfQoKICAgIHZvaWQgcnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIHJzaGlmdDMyKGRlc3QsIGltbSwgZGVz
dCk7CiAgICB9CgogICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
c2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKCiAgICAgICAgQVJNVGh1bWJJbW1l
ZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVkSW1tKDB4MWYpOwog
ICAgICAgICgodm9pZCkwKTsKICAgICAgICBtX2Fzc2VtYmxlci5BUk1fYW5kKGRhdGFUZW1wUmVn
aXN0ZXIsIHNoaWZ0QW1vdW50LCBhcm1JbW0pOwoKICAgICAgICBtX2Fzc2VtYmxlci5sc3IoZGVz
dCwgc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgIH0KCiAgICB2b2lkIHVyc2hpZnQzMihSZWdp
c3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAg
ICAgIGlmICghaW1tLm1fdmFsdWUpCiAgICAgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKICAgICAg
ICBlbHNlCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxzcihkZXN0LCBzcmMsIGltbS5tX3ZhbHVl
ICYgMHgxZik7CiAgICB9CgogICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdEFtb3Vu
dCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIHVyc2hpZnQzMihkZXN0LCBzaGlmdEFt
b3VudCwgZGVzdCk7CiAgICB9CgogICAgdm9pZCB1cnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIHVyc2hpZnQzMihkZXN0LCBpbW0sIGRlc3Qp
OwogICAgfQoKICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgIHsKICAgICAgICBtX2Fzc2VtYmxlci5zdWIoZGVzdCwgZGVzdCwgc3JjKTsKICAgIH0KCiAg
ICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAg
ICAgICBBUk1UaHVtYkltbWVkaWF0ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJ
bnQxMk9yRW5jb2RlZEltbShpbW0ubV92YWx1ZSk7CiAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlk
KCkpCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YihkZXN0LCBkZXN0LCBhcm1JbW0pOwogICAg
ICAgIGVsc2UgewogICAgICAgICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnN1YihkZXN0LCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAg
ICAgICB9CiAgICB9CgogICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFk
ZHJlc3MpCiAgICB7CiAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwoK
ICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFr
ZVVJbnQxMk9yRW5jb2RlZEltbShpbW0ubV92YWx1ZSk7CiAgICAgICAgaWYgKGFybUltbS5pc1Zh
bGlkKCkpCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRh
VGVtcFJlZ2lzdGVyLCBhcm1JbW0pOwogICAgICAgIGVsc2UgewoKCiAgICAgICAgICAgIG1vdmUo
aW1tLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3ViKGRh
dGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwog
ICAgICAgIH0KCiAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAg
IH0KCiAgICB2b2lkIHN1YjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAg
ICAgICAgbG9hZDMyKHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgc3ViMzIoZGF0YVRl
bXBSZWdpc3RlciwgZGVzdCk7CiAgICB9CgogICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1t
LCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgIHsKICAgICAgICBsb2FkMzIoYWRkcmVzcy5t
X3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CgogICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGFybUlt
bSA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDEyT3JFbmNvZGVkSW1tKGltbS5tX3ZhbHVl
KTsKICAgICAgICBpZiAoYXJtSW1tLmlzVmFsaWQoKSkKICAgICAgICAgICAgbV9hc3NlbWJsZXIu
c3ViKGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFybUltbSk7CiAgICAgICAg
ZWxzZSB7CgoKICAgICAgICAgICAgbW92ZShpbW0sIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAg
ICAgICAgICBtX2Fzc2VtYmxlci5zdWIoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rl
ciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgfQoKICAgICAgICBzdG9yZTMyKGRhdGFU
ZW1wUmVnaXN0ZXIsIGFkZHJlc3MubV9wdHIpOwogICAgfQoKICAgIHZvaWQgeG9yMzIoUmVnaXN0
ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAg
bV9hc3NlbWJsZXIuZW9yKGRlc3QsIG9wMSwgb3AyKTsKICAgIH0KCiAgICB2b2lkIHhvcjMyKFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAg
ICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKSB7CiAgICAgICAgICAgIG1fYXNzZW1ibGVyLm12
bihkZXN0LCBzcmMpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBBUk1U
aHVtYkltbWVkaWF0ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZUVuY29kZWRJbW0o
aW1tLm1fdmFsdWUpOwogICAgICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKQogICAgICAgICAgICBt
X2Fzc2VtYmxlci5lb3IoZGVzdCwgc3JjLCBhcm1JbW0pOwogICAgICAgIGVsc2UgewogICAgICAg
ICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmVvcihkZXN0LCBzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgIH0KICAgIH0KCiAgICB2
b2lkIHhvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAg
eG9yMzIoZGVzdCwgc3JjLCBkZXN0KTsKICAgIH0KCiAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0g
LTEpCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLm12bihkZXN0LCBkZXN0KTsKICAgICAgICBlbHNl
CiAgICAgICAgICAgIHhvcjMyKGltbSwgZGVzdCwgZGVzdCk7CiAgICB9CiMgNTU1ICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCIKcHJp
dmF0ZToKICAgIHZvaWQgbG9hZDMyKEFybUFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0
KQogICAgewogICAgICAgIGlmIChhZGRyZXNzLnR5cGUgPT0gQXJtQWRkcmVzczo6SGFzSW5kZXgp
CiAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
dS5pbmRleCwgYWRkcmVzcy51LnNjYWxlKTsKICAgICAgICBlbHNlIGlmIChhZGRyZXNzLnUub2Zm
c2V0ID49IDApIHsKICAgICAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1
bWJJbW1lZGlhdGU6Om1ha2VVSW50MTIoYWRkcmVzcy51Lm9mZnNldCk7CiAgICAgICAgICAgICgo
dm9pZCkwKTsKICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyKGRlc3QsIGFkZHJlc3MuYmFzZSwg
YXJtSW1tKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmxkcihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MudS5vZmZzZXQs
IHRydWUsIGZhbHNlKTsKICAgICAgICB9CiAgICB9CgogICAgdm9pZCBsb2FkMTYoQXJtQWRkcmVz
cyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgaWYgKGFkZHJlc3MudHlw
ZSA9PSBBcm1BZGRyZXNzOjpIYXNJbmRleCkKICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyaChk
ZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MudS5pbmRleCwgYWRkcmVzcy51LnNjYWxlKTsKICAg
ICAgICBlbHNlIGlmIChhZGRyZXNzLnUub2Zmc2V0ID49IDApIHsKICAgICAgICAgICAgQVJNVGh1
bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTIoYWRkcmVz
cy51Lm9mZnNldCk7CiAgICAgICAgICAgICgodm9pZCkwKTsKICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubGRyaChkZXN0LCBhZGRyZXNzLmJhc2UsIGFybUltbSk7CiAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJoKGRlc3QsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy51Lm9mZnNldCwgdHJ1ZSwgZmFsc2UpOwogICAgICAgIH0KICAg
IH0KCiAgICB2b2lkIGxvYWQxNlNpZ25lZEV4dGVuZFRvMzIoQXJtQWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIG1fYXNzZW1i
bGVyLmxkcnNoKGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy51LmluZGV4LCBhZGRyZXNzLnUu
c2NhbGUpOwogICAgfQoKICAgIHZvaWQgbG9hZDgoQXJtQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICB7CiAgICAgICAgaWYgKGFkZHJlc3MudHlwZSA9PSBBcm1BZGRyZXNzOjpI
YXNJbmRleCkKICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyYihkZXN0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MudS5pbmRleCwgYWRkcmVzcy51LnNjYWxlKTsKICAgICAgICBlbHNlIGlmIChhZGRy
ZXNzLnUub2Zmc2V0ID49IDApIHsKICAgICAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1t
ID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTIoYWRkcmVzcy51Lm9mZnNldCk7CiAgICAg
ICAgICAgICgodm9pZCkwKTsKICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyYihkZXN0LCBhZGRy
ZXNzLmJhc2UsIGFybUltbSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgKCh2b2lkKTAp
OwogICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJiKGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVz
cy51Lm9mZnNldCwgdHJ1ZSwgZmFsc2UpOwogICAgICAgIH0KICAgIH0KCiAgICB2b2lkIGxvYWQ4
U2lnbmVkRXh0ZW5kVG8zMihBcm1BZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAg
IHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9hc3NlbWJsZXIubGRyc2IoZGVzdCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLnUuaW5kZXgsIGFkZHJlc3MudS5zY2FsZSk7CiAgICB9Cgpwcm90
ZWN0ZWQ6CiAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMsIEFybUFkZHJlc3MgYWRkcmVz
cykKICAgIHsKICAgICAgICBpZiAoYWRkcmVzcy50eXBlID09IEFybUFkZHJlc3M6Okhhc0luZGV4
KQogICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHIoc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
dS5pbmRleCwgYWRkcmVzcy51LnNjYWxlKTsKICAgICAgICBlbHNlIGlmIChhZGRyZXNzLnUub2Zm
c2V0ID49IDApIHsKICAgICAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1
bWJJbW1lZGlhdGU6Om1ha2VVSW50MTIoYWRkcmVzcy51Lm9mZnNldCk7CiAgICAgICAgICAgICgo
dm9pZCkwKTsKICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyKHNyYywgYWRkcmVzcy5iYXNlLCBh
cm1JbW0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICgodm9pZCkwKTsKICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc3RyKHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLnUub2Zmc2V0LCB0
cnVlLCBmYWxzZSk7CiAgICAgICAgfQogICAgfQoKcHJpdmF0ZToKICAgIHZvaWQgc3RvcmU4KFJl
Z2lzdGVySUQgc3JjLCBBcm1BZGRyZXNzIGFkZHJlc3MpCiAgICB7CiAgICAgICAgaWYgKGFkZHJl
c3MudHlwZSA9PSBBcm1BZGRyZXNzOjpIYXNJbmRleCkKICAgICAgICAgICAgbV9hc3NlbWJsZXIu
c3RyYihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy51LmluZGV4LCBhZGRyZXNzLnUuc2NhbGUp
OwogICAgICAgIGVsc2UgaWYgKGFkZHJlc3MudS5vZmZzZXQgPj0gMCkgewogICAgICAgICAgICBB
Uk1UaHVtYkltbWVkaWF0ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxMihh
ZGRyZXNzLnUub2Zmc2V0KTsKICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICBtX2Fz
c2VtYmxlci5zdHJiKHNyYywgYWRkcmVzcy5iYXNlLCBhcm1JbW0pOwogICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICgodm9pZCkwKTsKICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy51Lm9mZnNldCwgdHJ1ZSwgZmFsc2UpOwogICAgICAgIH0K
ICAgIH0KCiAgICB2b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEFybUFkZHJlc3MgYWRkcmVz
cykKICAgIHsKICAgICAgICBpZiAoYWRkcmVzcy50eXBlID09IEFybUFkZHJlc3M6Okhhc0luZGV4
KQogICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHJoKHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LnUuaW5kZXgsIGFkZHJlc3MudS5zY2FsZSk7CiAgICAgICAgZWxzZSBpZiAoYWRkcmVzcy51Lm9m
ZnNldCA+PSAwKSB7CiAgICAgICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGFybUltbSA9IEFSTVRo
dW1iSW1tZWRpYXRlOjptYWtlVUludDEyKGFkZHJlc3MudS5vZmZzZXQpOwogICAgICAgICAgICAo
KHZvaWQpMCk7CiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmgoc3JjLCBhZGRyZXNzLmJhc2Us
IGFybUltbSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAg
ICAgICBtX2Fzc2VtYmxlci5zdHJoKHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLnUub2Zmc2V0
LCB0cnVlLCBmYWxzZSk7CiAgICAgICAgfQogICAgfQoKcHVibGljOgogICAgdm9pZCBsb2FkMzIo
SW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBs
b2FkMzIoc2V0dXBBcm1BZGRyZXNzKGFkZHJlc3MpLCBkZXN0KTsKICAgIH0KCiAgICB2b2lkIGxv
YWQzMihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIGxv
YWQzMihzZXR1cEFybUFkZHJlc3MoYWRkcmVzcyksIGRlc3QpOwogICAgfQoKICAgIHZvaWQgbG9h
ZDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgewogICAgICAgIGxvYWQzMihzZXR1cEFybUFkZHJlc3MoYWRkcmVzcyksIGRlc3Qp
OwogICAgfQoKICAgIHZvaWQgbG9hZDE2VW5hbGlnbmVkKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgbG9hZDE2KHNldHVwQXJtQWRkcmVzcyhhZGRyZXNz
KSwgZGVzdCk7CiAgICB9CgogICAgdm9pZCBsb2FkMzIoY29uc3Qgdm9pZCogYWRkcmVzcywgUmVn
aXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwg
YWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgbV9hc3NlbWJsZXIubGRyKGRlc3QsIGFkZHJl
c3NUZW1wUmVnaXN0ZXIsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KDApKTsKICAgIH0K
CiAgICB2b2lkIGFib3J0V2l0aFJlYXNvbihBYm9ydFJlYXNvbiByZWFzb24pCiAgICB7CiAgICAg
ICAgbW92ZShUcnVzdGVkSW1tMzIocmVhc29uKSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAg
YnJlYWtwb2ludCgpOwogICAgfQoKICAgIHZvaWQgYWJvcnRXaXRoUmVhc29uKEFib3J0UmVhc29u
IHJlYXNvbiwgaW50cHRyX3QgbWlzYykKICAgIHsKICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMiht
aXNjKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgYWJvcnRXaXRoUmVhc29uKHJlYXNv
bik7CiAgICB9CgogICAgQ29udmVydGlibGVMb2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIENvbnZlcnRpYmxl
TG9hZExhYmVsIHJlc3VsdCh0aGlzKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9hc3Nl
bWJsZXIubGRyV2lkZThCaXRJbW1lZGlhdGUoZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9m
ZnNldCk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICB2b2lkIGxvYWQ4KEltcGxp
Y2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgbG9hZDgo
c2V0dXBBcm1BZGRyZXNzKGFkZHJlc3MpLCBkZXN0KTsKICAgIH0KCiAgICB2b2lkIGxvYWQ4U2ln
bmVkRXh0ZW5kVG8zMihJbXBsaWNpdEFkZHJlc3MsIFJlZ2lzdGVySUQpCiAgICB7CiAgICAgICAg
V1RGQ3Jhc2goKTsKICAgIH0KCiAgICB2b2lkIGxvYWQ4KEJhc2VJbmRleCBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgbG9hZDgoc2V0dXBBcm1BZGRyZXNzKGFkZHJlc3Mp
LCBkZXN0KTsKICAgIH0KCiAgICB2b2lkIGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihCYXNlSW5kZXgg
YWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIGxvYWQ4U2lnbmVkRXh0ZW5k
VG8zMihzZXR1cEFybUFkZHJlc3MoYWRkcmVzcyksIGRlc3QpOwogICAgfQoKICAgIHZvaWQgbG9h
ZDgoY29uc3Qgdm9pZCogYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgZGVzdCk7CiAgICAgICAgbG9hZDgoZGVzdCwgZGVz
dCk7CiAgICB9CgogICAgRGF0YUxhYmVsMzIgbG9hZDMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChB
ZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBEYXRhTGFiZWwz
MiBsYWJlbCA9IG1vdmVXaXRoUGF0Y2goVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZGF0
YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgbG9hZDMyKEFybUFkZHJlc3MoYWRkcmVzcy5iYXNlLCBk
YXRhVGVtcFJlZ2lzdGVyKSwgZGVzdCk7CiAgICAgICAgcmV0dXJuIGxhYmVsOwogICAgfQoKICAg
IERhdGFMYWJlbENvbXBhY3QgbG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgcGFkQmVmb3JlUGF0
Y2goKTsKCiAgICAgICAgUmVnaXN0ZXJJRCBiYXNlID0gYWRkcmVzcy5iYXNlOwoKICAgICAgICBE
YXRhTGFiZWxDb21wYWN0IGxhYmVsKHRoaXMpOwogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAg
bV9hc3NlbWJsZXIubGRyKGRlc3QsIGJhc2UsIGFkZHJlc3Mub2Zmc2V0LCB0cnVlLCBmYWxzZSk7
CiAgICAgICAgcmV0dXJuIGxhYmVsOwogICAgfQoKICAgIHZvaWQgbG9hZDE2KEJhc2VJbmRleCBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgbV9hc3NlbWJsZXIubGRyaChk
ZXN0LCBtYWtlQmFzZUluZGV4QmFzZShhZGRyZXNzKSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5z
Y2FsZSk7CiAgICB9CgogICAgdm9pZCBsb2FkMTZTaWduZWRFeHRlbmRUbzMyKEJhc2VJbmRleCBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgbG9hZDE2U2lnbmVkRXh0ZW5k
VG8zMihzZXR1cEFybUFkZHJlc3MoYWRkcmVzcyksIGRlc3QpOwogICAgfQoKICAgIHZvaWQgbG9h
ZDE2KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAg
ICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50
MTIoYWRkcmVzcy5vZmZzZXQpOwogICAgICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKQogICAgICAg
ICAgICBtX2Fzc2VtYmxlci5sZHJoKGRlc3QsIGFkZHJlc3MuYmFzZSwgYXJtSW1tKTsKICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyaChkZXN0LCBhZGRy
ZXNzLmJhc2UsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgIH0KICAgIH0KCiAgICB2b2lkIGxv
YWQxNlNpZ25lZEV4dGVuZFRvMzIoSW1wbGljaXRBZGRyZXNzLCBSZWdpc3RlcklEKQogICAgewog
ICAgICAgIFdURkNyYXNoKCk7CiAgICB9CgogICAgRGF0YUxhYmVsMzIgc3RvcmUzMldpdGhBZGRy
ZXNzT2Zmc2V0UGF0Y2goUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKICAgIHsKICAg
ICAgICBEYXRhTGFiZWwzMiBsYWJlbCA9IG1vdmVXaXRoUGF0Y2goVHJ1c3RlZEltbTMyKGFkZHJl
c3Mub2Zmc2V0KSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgc3RvcmUzMihzcmMsIEFybUFk
ZHJlc3MoYWRkcmVzcy5iYXNlLCBkYXRhVGVtcFJlZ2lzdGVyKSk7CiAgICAgICAgcmV0dXJuIGxh
YmVsOwogICAgfQoKICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRy
ZXNzIGFkZHJlc3MpCiAgICB7CiAgICAgICAgc3RvcmUzMihzcmMsIHNldHVwQXJtQWRkcmVzcyhh
ZGRyZXNzKSk7CiAgICB9CgogICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5k
ZXggYWRkcmVzcykKICAgIHsKICAgICAgICBzdG9yZTMyKHNyYywgc2V0dXBBcm1BZGRyZXNzKGFk
ZHJlc3MpKTsKICAgIH0KCiAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgSW1wbGlj
aXRBZGRyZXNzIGFkZHJlc3MpCiAgICB7CiAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0
ZXIpOwogICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3Rlciwgc2V0dXBBcm1BZGRyZXNzKGFk
ZHJlc3MpKTsKICAgIH0KCiAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUlu
ZGV4IGFkZHJlc3MpCiAgICB7CiAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOwog
ICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3Rlciwgc2V0dXBBcm1BZGRyZXNzKGFkZHJlc3Mp
KTsKICAgIH0KCiAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFk
ZHJlc3MpCiAgICB7CiAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKICAgICAgICBtX2Fzc2VtYmxlci5zdHIoc3JjLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyLCBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxNigwKSk7CiAgICB9CgogICAgdm9p
ZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICB7CiAg
ICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgIHN0b3JlMzIoZGF0YVRl
bXBSZWdpc3RlciwgYWRkcmVzcyk7CiAgICB9CgogICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBz
cmMsIEFkZHJlc3MgYWRkcmVzcykKICAgIHsKICAgICAgICBzdG9yZTgoc3JjLCBzZXR1cEFybUFk
ZHJlc3MoYWRkcmVzcykpOwogICAgfQoKICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBC
YXNlSW5kZXggYWRkcmVzcykKICAgIHsKICAgICAgICBzdG9yZTgoc3JjLCBzZXR1cEFybUFkZHJl
c3MoYWRkcmVzcykpOwogICAgfQoKICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCB2b2lk
KiBhZGRyZXNzKQogICAgewogICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgYWRk
cmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgc3RvcmU4KHNyYywgQXJtQWRkcmVzcyhhZGRyZXNz
VGVtcFJlZ2lzdGVyLCAwKSk7CiAgICB9CgogICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGlt
bSwgdm9pZCogYWRkcmVzcykKICAgIHsKICAgICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rl
cik7CiAgICAgICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MpOwogICAgfQoKICAg
IHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAgIHsKICAg
ICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgc3RvcmU4KGRhdGFUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MpOwogICAgfQoKICAgIHZvaWQgc3RvcmUxNihSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICB7CiAgICAgICAgc3RvcmUxNihzcmMsIHNldHVwQXJt
QWRkcmVzcyhhZGRyZXNzKSk7CiAgICB9CgoKICAgIHZvaWQgbW92ZURvdWJsZVRvSW50cyhGUFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQogICAgewog
ICAgICAgIG1fYXNzZW1ibGVyLnZtb3YoZGVzdDEsIGRlc3QyLCBzcmMpOwogICAgfQoKICAgIHZv
aWQgbW92ZUludHNUb0RvdWJsZShSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgRlBS
ZWdpc3RlcklEIGRlc3QsIEZQUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgewogICAgICAgICh2b2lk
KXNjcmF0Y2g7CiAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0LCBzcmMxLCBzcmMyKTsKICAg
IH0KCiAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2
YWx1ZSkKICAgIHsKICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBpbW1lZGlhdGUgPSBBUk1UaHVt
YkltbWVkaWF0ZTo6bWFrZUVuY29kZWRJbW0odmFsdWUpOwoKCiAgICAgICAgaWYgKCFpbW1lZGlh
dGUuaXNWYWxpZCgpKQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKCgoKICAgICAgICBpZiAoaW1t
ZWRpYXRlLmlzRW5jb2RlZEltbSgpKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CgoKCiAgICAg
ICAgcmV0dXJuICFpbW1lZGlhdGUuaXNVSW50MTIoKTsKICAgIH0KCgoKICAgIHN0YXRpYyBib29s
IHN1cHBvcnRzRmxvYXRpbmdQb2ludCgpIHsgcmV0dXJuIHRydWU7IH0KICAgIHN0YXRpYyBib29s
IHN1cHBvcnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgc3Rh
dGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50U3FydCgpIHsgcmV0dXJuIHRydWU7IH0KICAg
IHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludEFicygpIHsgcmV0dXJuIHRydWU7IH0K
ICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkgeyByZXR1cm4g
ZmFsc2U7IH0KCiAgICB2b2lkIGxvYWREb3VibGUoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIEZQ
UmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIFJlZ2lzdGVySUQgYmFzZSA9IGFkZHJlc3Mu
YmFzZTsKICAgICAgICBpbnQzMl90IG9mZnNldCA9IGFkZHJlc3Mub2Zmc2V0OwoKCiAgICAgICAg
aWYgKChvZmZzZXQgJiAzKSB8fCAob2Zmc2V0ID4gKDI1NSAqIDQpKSB8fCAob2Zmc2V0IDwgLSgy
NTUgKiA0KSkpIHsKICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKG9mZnNldCksIGJhc2Us
IGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICBiYXNlID0gYWRkcmVzc1RlbXBSZWdp
c3RlcjsKICAgICAgICAgICAgb2Zmc2V0ID0gMDsKICAgICAgICB9CgogICAgICAgIG1fYXNzZW1i
bGVyLnZsZHIoZGVzdCwgYmFzZSwgb2Zmc2V0KTsKICAgIH0KCiAgICB2b2lkIGxvYWRGbG9hdChJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAg
UmVnaXN0ZXJJRCBiYXNlID0gYWRkcmVzcy5iYXNlOwogICAgICAgIGludDMyX3Qgb2Zmc2V0ID0g
YWRkcmVzcy5vZmZzZXQ7CgoKICAgICAgICBpZiAoKG9mZnNldCAmIDMpIHx8IChvZmZzZXQgPiAo
MjU1ICogNCkpIHx8IChvZmZzZXQgPCAtKDI1NSAqIDQpKSkgewogICAgICAgICAgICBhZGQzMihU
cnVzdGVkSW1tMzIob2Zmc2V0KSwgYmFzZSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAg
ICAgIGJhc2UgPSBhZGRyZXNzVGVtcFJlZ2lzdGVyOwogICAgICAgICAgICBvZmZzZXQgPSAwOwog
ICAgICAgIH0KCiAgICAgICAgbV9hc3NlbWJsZXIuZmxkcyhBUk1SZWdpc3RlcnM6OmFzU2luZ2xl
KGRlc3QpLCBiYXNlLCBvZmZzZXQpOwogICAgfQoKICAgIHZvaWQgbG9hZERvdWJsZShCYXNlSW5k
ZXggYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgbW92ZShhZGRyZXNz
LmluZGV4LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICBsc2hpZnQzMihUcnVzdGVkSW1t
MzIoYWRkcmVzcy5zY2FsZSksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgIGFkZDMyKGFk
ZHJlc3MuYmFzZSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgbG9hZERvdWJsZShBZGRy
ZXNzKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mub2Zmc2V0KSwgZGVzdCk7CiAgICB9Cgog
ICAgdm9pZCBsb2FkRmxvYXQoQmFzZUluZGV4IGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQog
ICAgewogICAgICAgIG1vdmUoYWRkcmVzcy5pbmRleCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAg
ICAgICAgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyKTsKICAgICAgICBhZGQzMihhZGRyZXNzLmJhc2UsIGFkZHJlc3NUZW1wUmVnaXN0ZXIp
OwogICAgICAgIGxvYWRGbG9hdChBZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mu
b2Zmc2V0KSwgZGVzdCk7CiAgICB9CgogICAgdm9pZCBtb3ZlRG91YmxlKEZQUmVnaXN0ZXJJRCBz
cmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIGlmIChzcmMgIT0gZGVzdCkKICAg
ICAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0LCBzcmMpOwogICAgfQoKICAgIHZvaWQgbW92
ZVplcm9Ub0RvdWJsZShGUFJlZ2lzdGVySUQgcmVnKQogICAgewogICAgICAgIHN0YXRpYyBkb3Vi
bGUgemVyb0NvbnN0YW50ID0gMC47CiAgICAgICAgbG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZ6
ZXJvQ29uc3RhbnQpLCByZWcpOwogICAgfQoKICAgIHZvaWQgbG9hZERvdWJsZShUcnVzdGVkSW1t
UHRyIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIG1vdmUoYWRkcmVz
cywgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgbV9hc3NlbWJsZXIudmxkcihkZXN0LCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyLCAwKTsKICAgIH0KCiAgICB2b2lkIHN0b3JlRG91YmxlKEZQUmVn
aXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgewogICAgICAgIFJlZ2lz
dGVySUQgYmFzZSA9IGFkZHJlc3MuYmFzZTsKICAgICAgICBpbnQzMl90IG9mZnNldCA9IGFkZHJl
c3Mub2Zmc2V0OwoKCiAgICAgICAgaWYgKChvZmZzZXQgJiAzKSB8fCAob2Zmc2V0ID4gKDI1NSAq
IDQpKSB8fCAob2Zmc2V0IDwgLSgyNTUgKiA0KSkpIHsKICAgICAgICAgICAgYWRkMzIoVHJ1c3Rl
ZEltbTMyKG9mZnNldCksIGJhc2UsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICBi
YXNlID0gYWRkcmVzc1RlbXBSZWdpc3RlcjsKICAgICAgICAgICAgb2Zmc2V0ID0gMDsKICAgICAg
ICB9CgogICAgICAgIG1fYXNzZW1ibGVyLnZzdHIoc3JjLCBiYXNlLCBvZmZzZXQpOwogICAgfQoK
ICAgIHZvaWQgc3RvcmVGbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRk
cmVzcykKICAgIHsKICAgICAgICBSZWdpc3RlcklEIGJhc2UgPSBhZGRyZXNzLmJhc2U7CiAgICAg
ICAgaW50MzJfdCBvZmZzZXQgPSBhZGRyZXNzLm9mZnNldDsKCgogICAgICAgIGlmICgob2Zmc2V0
ICYgMykgfHwgKG9mZnNldCA+ICgyNTUgKiA0KSkgfHwgKG9mZnNldCA8IC0oMjU1ICogNCkpKSB7
CiAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihvZmZzZXQpLCBiYXNlLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyKTsKICAgICAgICAgICAgYmFzZSA9IGFkZHJlc3NUZW1wUmVnaXN0ZXI7CiAgICAg
ICAgICAgIG9mZnNldCA9IDA7CiAgICAgICAgfQoKICAgICAgICBtX2Fzc2VtYmxlci5mc3RzKEFS
TVJlZ2lzdGVyczo6YXNTaW5nbGUoc3JjKSwgYmFzZSwgb2Zmc2V0KTsKICAgIH0KCiAgICB2b2lk
IHN0b3JlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW1QdHIgYWRkcmVzcykKICAg
IHsKICAgICAgICBtb3ZlKGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgIHN0
b3JlRG91YmxlKHNyYywgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICB9CgogICAgdm9pZCBzdG9y
ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgIHsKICAgICAg
ICBtb3ZlKGFkZHJlc3MuaW5kZXgsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgIGxzaGlm
dDMyKFRydXN0ZWRJbW0zMihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAg
ICAgICAgYWRkMzIoYWRkcmVzcy5iYXNlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICBz
dG9yZURvdWJsZShzcmMsIEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZz
ZXQpKTsKICAgIH0KCiAgICB2b2lkIHN0b3JlRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgQmFzZUlu
ZGV4IGFkZHJlc3MpCiAgICB7CiAgICAgICAgbW92ZShhZGRyZXNzLmluZGV4LCBhZGRyZXNzVGVt
cFJlZ2lzdGVyKTsKICAgICAgICBsc2hpZnQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5zY2FsZSks
IGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgIGFkZDMyKGFkZHJlc3MuYmFzZSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7CiAgICAgICAgc3RvcmVGbG9hdChzcmMsIEFkZHJlc3MoYWRkcmVzc1Rl
bXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQpKTsKICAgIH0KCiAgICB2b2lkIGFkZERvdWJsZShG
UFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBtX2Fzc2Vt
Ymxlci52YWRkKGRlc3QsIGRlc3QsIHNyYyk7CiAgICB9CgogICAgdm9pZCBhZGREb3VibGUoQWRk
cmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIGxvYWREb3VibGUoc3Jj
LCBmcFRlbXBSZWdpc3Rlcik7CiAgICAgICAgYWRkRG91YmxlKGZwVGVtcFJlZ2lzdGVyLCBkZXN0
KTsKICAgIH0KCiAgICB2b2lkIGFkZERvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVy
SUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBtX2Fzc2VtYmxlci52YWRk
KGRlc3QsIG9wMSwgb3AyKTsKICAgIH0KCiAgICB2b2lkIGFkZERvdWJsZShBYnNvbHV0ZUFkZHJl
c3MgYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgbG9hZERvdWJsZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBmcFRlbXBSZWdpc3Rlcik7CiAgICAgICAgbV9h
c3NlbWJsZXIudmFkZChkZXN0LCBkZXN0LCBmcFRlbXBSZWdpc3Rlcik7CiAgICB9CgogICAgdm9p
ZCBkaXZEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAg
ICAgICAgbV9hc3NlbWJsZXIudmRpdihkZXN0LCBkZXN0LCBzcmMpOwogICAgfQoKICAgIHZvaWQg
ZGl2RG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQogICAgewogICAgICAgIG1fYXNzZW1ibGVyLnZkaXYoZGVzdCwgb3AxLCBvcDIpOwog
ICAgfQoKICAgIHZvaWQgc3ViRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBk
ZXN0KQogICAgewogICAgICAgIG1fYXNzZW1ibGVyLnZzdWIoZGVzdCwgZGVzdCwgc3JjKTsKICAg
IH0KCiAgICB2b2lkIHN1YkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAg
ICB7CiAgICAgICAgbG9hZERvdWJsZShzcmMsIGZwVGVtcFJlZ2lzdGVyKTsKICAgICAgICBzdWJE
b3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwogICAgfQoKICAgIHZvaWQgc3ViRG91YmxlKEZQ
UmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAg
ewogICAgICAgIG1fYXNzZW1ibGVyLnZzdWIoZGVzdCwgb3AxLCBvcDIpOwogICAgfQoKICAgIHZv
aWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgewog
ICAgICAgIG1fYXNzZW1ibGVyLnZtdWwoZGVzdCwgZGVzdCwgc3JjKTsKICAgIH0KCiAgICB2b2lk
IG11bERvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAg
bG9hZERvdWJsZShzcmMsIGZwVGVtcFJlZ2lzdGVyKTsKICAgICAgICBtdWxEb3VibGUoZnBUZW1w
UmVnaXN0ZXIsIGRlc3QpOwogICAgfQoKICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBv
cDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIG1f
YXNzZW1ibGVyLnZtdWwoZGVzdCwgb3AxLCBvcDIpOwogICAgfQoKICAgIHZvaWQgc3FydERvdWJs
ZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBtX2Fz
c2VtYmxlci52c3FydChkZXN0LCBzcmMpOwogICAgfQoKICAgIHZvaWQgYWJzRG91YmxlKEZQUmVn
aXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIG1fYXNzZW1ibGVy
LnZhYnMoZGVzdCwgc3JjKTsKICAgIH0KCiAgICB2b2lkIG5lZ2F0ZURvdWJsZShGUFJlZ2lzdGVy
SUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBtX2Fzc2VtYmxlci52bmVn
KGRlc3QsIHNyYyk7CiAgICB9CgogICAgX19hdHRyaWJ1dGUoKF9fbm9yZXR1cm5fXykpIHZvaWQg
Y2VpbERvdWJsZShGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCkKICAgIHsKICAgICAgICAoKHZv
aWQpMCk7CiAgICAgICAgV1RGQ3Jhc2goKTsKICAgIH0KCiAgICBfX2F0dHJpYnV0ZSgoX19ub3Jl
dHVybl9fKSkgdm9pZCBmbG9vckRvdWJsZShGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCkKICAg
IHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgV1RGQ3Jhc2goKTsKICAgIH0KCiAgICBfX2F0
dHJpYnV0ZSgoX19ub3JldHVybl9fKSkgdm9pZCByb3VuZFRvd2FyZFplcm9Eb3VibGUoRlBSZWdp
c3RlcklELCBGUFJlZ2lzdGVySUQpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIFdU
RkNyYXNoKCk7CiAgICB9CgogICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShSZWdpc3RlcklE
IHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgbV9hc3NlbWJsZXIudm1vdihm
cFRlbXBSZWdpc3Rlciwgc3JjLCBzcmMpOwogICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfc2lnbmVk
VG9GbG9hdGluZ1BvaW50KGRlc3QsIGZwVGVtcFJlZ2lzdGVyQXNTaW5nbGUoKSk7CiAgICB9Cgog
ICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQogICAgewoKICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7
CiAgICAgICAgbV9hc3NlbWJsZXIudm1vdihmcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rl
ciwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9zaWduZWRUb0Zs
b2F0aW5nUG9pbnQoZGVzdCwgZnBUZW1wUmVnaXN0ZXJBc1NpbmdsZSgpKTsKICAgIH0KCiAgICB2
b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lz
dGVySUQgZGVzdCkKICAgIHsKCiAgICAgICAgbG9hZDMyKGFkZHJlc3MubV9wdHIsIGRhdGFUZW1w
UmVnaXN0ZXIpOwogICAgICAgIG1fYXNzZW1ibGVyLnZtb3YoZnBUZW1wUmVnaXN0ZXIsIGRhdGFU
ZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgIG1fYXNzZW1ibGVyLnZjdnRf
c2lnbmVkVG9GbG9hdGluZ1BvaW50KGRlc3QsIGZwVGVtcFJlZ2lzdGVyQXNTaW5nbGUoKSk7CiAg
ICB9CgogICAgdm9pZCBjb252ZXJ0RmxvYXRUb0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJl
Z2lzdGVySUQgZHN0KQogICAgewogICAgICAgIG1fYXNzZW1ibGVyLnZjdnRkcyhkc3QsIEFSTVJl
Z2lzdGVyczo6YXNTaW5nbGUoc3JjKSk7CiAgICB9CgogICAgdm9pZCBjb252ZXJ0RG91YmxlVG9G
bG9hdChGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgewogICAgICAgIG1f
YXNzZW1ibGVyLnZjdnRzZChBUk1SZWdpc3RlcnM6OmFzU2luZ2xlKGRzdCksIHNyYyk7CiAgICB9
CgogICAgSnVtcCBicmFuY2hEb3VibGUoRG91YmxlQ29uZGl0aW9uIGNvbmQsIEZQUmVnaXN0ZXJJ
RCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQpCiAgICB7CiAgICAgICAgbV9hc3NlbWJsZXIudmNt
cChsZWZ0LCByaWdodCk7CiAgICAgICAgbV9hc3NlbWJsZXIudm1ycygpOwoKICAgICAgICBpZiAo
Y29uZCA9PSBEb3VibGVOb3RFcXVhbCkgewoKICAgICAgICAgICAgSnVtcCB1bm9yZGVyZWQgPSBt
YWtlQnJhbmNoKEFSTXY3QXNzZW1ibGVyOjpDb25kaXRpb25WUyk7CiAgICAgICAgICAgIEp1bXAg
cmVzdWx0ID0gbWFrZUJyYW5jaChBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uTkUpOwogICAgICAg
ICAgICB1bm9yZGVyZWQubGluayh0aGlzKTsKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICB9CiAgICAgICAgaWYgKGNvbmQgPT0gRG91YmxlRXF1YWxPclVub3JkZXJlZCkgewogICAg
ICAgICAgICBKdW1wIHVub3JkZXJlZCA9IG1ha2VCcmFuY2goQVJNdjdBc3NlbWJsZXI6OkNvbmRp
dGlvblZTKTsKICAgICAgICAgICAgSnVtcCBub3RFcXVhbCA9IG1ha2VCcmFuY2goQVJNdjdBc3Nl
bWJsZXI6OkNvbmRpdGlvbk5FKTsKICAgICAgICAgICAgdW5vcmRlcmVkLmxpbmsodGhpcyk7Cgog
ICAgICAgICAgICBKdW1wIHJlc3VsdCA9IGp1bXAoKTsKICAgICAgICAgICAgbm90RXF1YWwubGlu
ayh0aGlzKTsKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICB9CiAgICAgICAgcmV0
dXJuIG1ha2VCcmFuY2goY29uZCk7CiAgICB9CgogICAgZW51bSBCcmFuY2hUcnVuY2F0ZVR5cGUg
eyBCcmFuY2hJZlRydW5jYXRlRmFpbGVkLCBCcmFuY2hJZlRydW5jYXRlU3VjY2Vzc2Z1bCB9Owog
ICAgSnVtcCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNoVHlwZSA9IEJyYW5jaElmVHJ1
bmNhdGVGYWlsZWQpCiAgICB7CgogICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfZmxvYXRpbmdQb2lu
dFRvU2lnbmVkKGZwVGVtcFJlZ2lzdGVyQXNTaW5nbGUoKSwgc3JjKTsKICAgICAgICBtX2Fzc2Vt
Ymxlci52bW92KGRlc3QsIGZwVGVtcFJlZ2lzdGVyQXNTaW5nbGUoKSk7CgoKCgogICAgICAgIEp1
bXAgdW5kZXJmbG93ID0gYnJhbmNoQWRkMzIoWmVybywgZGVzdCwgZGVzdCwgZGF0YVRlbXBSZWdp
c3Rlcik7CiAgICAgICAgSnVtcCBub092ZXJmbG93ID0gYnJhbmNoMzIoTm90RXF1YWwsIGRhdGFU
ZW1wUmVnaXN0ZXIsIFRydXN0ZWRJbW0zMigtMikpOwoKCiAgICAgICAgdW5kZXJmbG93Lmxpbmso
dGhpcyk7CiAgICAgICAgaWYgKGJyYW5jaFR5cGUgPT0gQnJhbmNoSWZUcnVuY2F0ZVN1Y2Nlc3Nm
dWwpCiAgICAgICAgICAgIHJldHVybiBub092ZXJmbG93OwoKCgogICAgICAgIEp1bXAgZmFpbHVy
ZSA9IGp1bXAoKTsKICAgICAgICBub092ZXJmbG93LmxpbmsodGhpcyk7CiAgICAgICAgcmV0dXJu
IGZhaWx1cmU7CiAgICB9CgoKICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0
X2Zsb2F0aW5nUG9pbnRUb1NpZ25lZChmcFRlbXBSZWdpc3RlckFzU2luZ2xlKCksIHNyYyk7CiAg
ICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0LCBmcFRlbXBSZWdpc3RlckFzU2luZ2xlKCkpOwog
ICAgfQoKICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9mbG9hdGluZ1Bv
aW50VG9VbnNpZ25lZChmcFRlbXBSZWdpc3RlckFzU2luZ2xlKCksIHNyYyk7CiAgICAgICAgbV9h
c3NlbWJsZXIudm1vdihkZXN0LCBmcFRlbXBSZWdpc3RlckFzU2luZ2xlKCkpOwogICAgfQoKCgoK
CiAgICB2b2lkIGJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklELCBib29s
IG5lZ1plcm9DaGVjayA9IHRydWUpCiAgICB7CiAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9mbG9h
dGluZ1BvaW50VG9TaWduZWQoZnBUZW1wUmVnaXN0ZXJBc1NpbmdsZSgpLCBzcmMpOwogICAgICAg
IG1fYXNzZW1ibGVyLnZtb3YoZGVzdCwgZnBUZW1wUmVnaXN0ZXJBc1NpbmdsZSgpKTsKCgogICAg
ICAgIG1fYXNzZW1ibGVyLnZjdnRfc2lnbmVkVG9GbG9hdGluZ1BvaW50KGZwVGVtcFJlZ2lzdGVy
LCBmcFRlbXBSZWdpc3RlckFzU2luZ2xlKCkpOwogICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQo
YnJhbmNoRG91YmxlKERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHNyYywgZnBUZW1wUmVnaXN0
ZXIpKTsKCgogICAgICAgIGlmIChuZWdaZXJvQ2hlY2spCiAgICAgICAgICAgIGZhaWx1cmVDYXNl
cy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIGRlc3QpKTsKICAgIH0KCiAgICBKdW1wIGJyYW5j
aERvdWJsZU5vblplcm8oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEKQogICAgewogICAg
ICAgIG1fYXNzZW1ibGVyLnZjbXB6KHJlZyk7CiAgICAgICAgbV9hc3NlbWJsZXIudm1ycygpOwog
ICAgICAgIEp1bXAgdW5vcmRlcmVkID0gbWFrZUJyYW5jaChBUk12N0Fzc2VtYmxlcjo6Q29uZGl0
aW9uVlMpOwogICAgICAgIEp1bXAgcmVzdWx0ID0gbWFrZUJyYW5jaChBUk12N0Fzc2VtYmxlcjo6
Q29uZGl0aW9uTkUpOwogICAgICAgIHVub3JkZXJlZC5saW5rKHRoaXMpOwogICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICB9CgogICAgSnVtcCBicmFuY2hEb3VibGVaZXJvT3JOYU4oRlBSZWdpc3Rl
cklEIHJlZywgRlBSZWdpc3RlcklEKQogICAgewogICAgICAgIG1fYXNzZW1ibGVyLnZjbXB6KHJl
Zyk7CiAgICAgICAgbV9hc3NlbWJsZXIudm1ycygpOwogICAgICAgIEp1bXAgdW5vcmRlcmVkID0g
bWFrZUJyYW5jaChBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uVlMpOwogICAgICAgIEp1bXAgbm90
RXF1YWwgPSBtYWtlQnJhbmNoKEFSTXY3QXNzZW1ibGVyOjpDb25kaXRpb25ORSk7CiAgICAgICAg
dW5vcmRlcmVkLmxpbmsodGhpcyk7CgogICAgICAgIEp1bXAgcmVzdWx0ID0ganVtcCgpOwogICAg
ICAgIG5vdEVxdWFsLmxpbmsodGhpcyk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KIyAx
MjQxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNdjcuaCIKICAgIHZvaWQgcG9wKFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBtX2Fz
c2VtYmxlci5wb3AoZGVzdCk7CiAgICB9CgogICAgdm9pZCBwdXNoKFJlZ2lzdGVySUQgc3JjKQog
ICAgewogICAgICAgIG1fYXNzZW1ibGVyLnB1c2goc3JjKTsKICAgIH0KCiAgICB2b2lkIHB1c2go
QWRkcmVzcyBhZGRyZXNzKQogICAgewogICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJl
Z2lzdGVyKTsKICAgICAgICBwdXNoKGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgfQoKICAgIHZvaWQg
cHVzaChUcnVzdGVkSW1tMzIgaW1tKQogICAgewogICAgICAgIG1vdmUoaW1tLCBkYXRhVGVtcFJl
Z2lzdGVyKTsKICAgICAgICBwdXNoKGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgfQoKICAgIHZvaWQg
cG9wUGFpcihSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQogICAgewogICAgICAg
IG1fYXNzZW1ibGVyLnBvcCgxIDw8IGRlc3QxIHwgMSA8PCBkZXN0Mik7CiAgICB9CgogICAgdm9p
ZCBwdXNoUGFpcihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMikKICAgIHsKICAgICAg
ICBtX2Fzc2VtYmxlci5wdXNoKDEgPDwgc3JjMSB8IDEgPDwgc3JjMik7CiAgICB9CgoKCgoKICAg
IHZvaWQgbW92ZShUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAg
ICAgdWludDMyX3QgdmFsdWUgPSBpbW0ubV92YWx1ZTsKCiAgICAgICAgQVJNVGh1bWJJbW1lZGlh
dGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVkSW1tKHZhbHVlKTsKCiAg
ICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkpCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdihk
ZXN0LCBhcm1JbW0pOwogICAgICAgIGVsc2UgaWYgKChhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0
ZTo6bWFrZUVuY29kZWRJbW0ofnZhbHVlKSkuaXNWYWxpZCgpKQogICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5tdm4oZGVzdCwgYXJtSW1tKTsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubW92KGRlc3QsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KHZhbHVlKSk7CiAg
ICAgICAgICAgIGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDApCiAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3Z0KGRlc3QsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KHZhbHVlID4+IDE2
KSk7CiAgICAgICAgfQogICAgfQoKICAgIHZvaWQgbW92ZShSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQogICAgewogICAgICAgIGlmIChzcmMgIT0gZGVzdCkKICAgICAgICAgICAgbV9h
c3NlbWJsZXIubW92KGRlc3QsIHNyYyk7CiAgICB9CgogICAgdm9pZCBtb3ZlKFRydXN0ZWRJbW1Q
dHIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIo
aW1tKSwgZGVzdCk7CiAgICB9CgogICAgdm9pZCBzd2FwKFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0
ZXJJRCByZWcyKQogICAgewogICAgICAgIG1vdmUocmVnMSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAg
ICAgICAgbW92ZShyZWcyLCByZWcxKTsKICAgICAgICBtb3ZlKGRhdGFUZW1wUmVnaXN0ZXIsIHJl
ZzIpOwogICAgfQoKICAgIHZvaWQgc2lnbkV4dGVuZDMyVG9QdHIoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBtb3ZlKHNyYywgZGVzdCk7CiAgICB9CgogICAg
dm9pZCB6ZXJvRXh0ZW5kMzJUb1B0cihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgewogICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKICAgIH0KCgogICAgc3RhdGljIFJlbGF0aW9u
YWxDb25kaXRpb24gaW52ZXJ0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAgIHsKICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb25hbENvbmRpdGlvbj4oY29uZCBeIDEpOwogICAg
fQoKICAgIHZvaWQgbm9wKCkKICAgIHsKICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgIH0K
CiAgICB2b2lkIG1lbW9yeUZlbmNlKCkKICAgIHsKICAgICAgICBtX2Fzc2VtYmxlci5kbWJTWSgp
OwogICAgfQoKICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJl
bCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKICAgIHsK
ICAgICAgICBBUk12N0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQu
ZGF0YUxvY2F0aW9uKCksIGRlc3RpbmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKICAgIH0KCiAgICBz
dGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQogICAgewogICAgICAgIHJl
dHVybiBBUk12N0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOwogICAgfQojIDEz
NjUgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oIgpwcml2YXRlOgoKCiAgICB2b2lkIGNvbXBhcmUzMkFuZFNldEZsYWdzKFJlZ2lzdGVy
SUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgewogICAgICAgIGludDMyX3QgaW1tID0g
cmlnaHQubV92YWx1ZTsKICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBhcm1JbW0gPSBBUk1UaHVt
YkltbWVkaWF0ZTo6bWFrZUVuY29kZWRJbW0oaW1tKTsKICAgICAgICBpZiAoYXJtSW1tLmlzVmFs
aWQoKSkKICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wKGxlZnQsIGFybUltbSk7CiAgICAgICAg
ZWxzZSBpZiAoKGFybUltbSA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlRW5jb2RlZEltbSgtaW1t
KSkuaXNWYWxpZCgpKQogICAgICAgICAgICBtX2Fzc2VtYmxlci5jbW4obGVmdCwgYXJtSW1tKTsK
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoaW1tKSwgZGF0YVRl
bXBSZWdpc3Rlcik7CiAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcChsZWZ0LCBkYXRhVGVtcFJl
Z2lzdGVyKTsKICAgICAgICB9CiAgICB9CgpwdWJsaWM6CiAgICB2b2lkIHRlc3QzMihSZWdpc3Rl
cklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgewogICAg
ICAgIGludDMyX3QgaW1tID0gbWFzay5tX3ZhbHVlOwoKICAgICAgICBpZiAoaW1tID09IC0xKQog
ICAgICAgICAgICBtX2Fzc2VtYmxlci50c3QocmVnLCByZWcpOwogICAgICAgIGVsc2UgewogICAg
ICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFr
ZUVuY29kZWRJbW0oaW1tKTsKICAgICAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkpIHsKICAg
ICAgICAgICAgICAgIGlmIChyZWcgPT0gQVJNUmVnaXN0ZXJzOjpzcCkgewogICAgICAgICAgICAg
ICAgICAgIG1vdmUocmVnLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci50c3QoYWRkcmVzc1RlbXBSZWdpc3RlciwgYXJtSW1tKTsKICAgICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIGFy
bUltbSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBtb3ZlKG1hc2ssIGRh
dGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgaWYgKHJlZyA9PSBBUk1SZWdpc3RlcnM6
OnNwKSB7CiAgICAgICAgICAgICAgICAgICAgbW92ZShyZWcsIGFkZHJlc3NUZW1wUmVnaXN0ZXIp
OwogICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChhZGRyZXNzVGVtcFJlZ2lzdGVy
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAg
ICB9CiAgICAgICAgfQogICAgfQoKICAgIEp1bXAgYnJhbmNoKFJlc3VsdENvbmRpdGlvbiBjb25k
KQogICAgewogICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAgfQoKICAg
IEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQs
IFJlZ2lzdGVySUQgcmlnaHQpCiAgICB7CiAgICAgICAgbV9hc3NlbWJsZXIuY21wKGxlZnQsIHJp
Z2h0KTsKICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgIH0KCiAgICBK
dW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBU
cnVzdGVkSW1tMzIgcmlnaHQpCiAgICB7CiAgICAgICAgY29tcGFyZTMyQW5kU2V0RmxhZ3MobGVm
dCwgcmlnaHQpOwogICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAgfQoK
ICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxl
ZnQsIEFkZHJlc3MgcmlnaHQpCiAgICB7CiAgICAgICAgbG9hZDMyKHJpZ2h0LCBkYXRhVGVtcFJl
Z2lzdGVyKTsKICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgZGF0YVRlbXBSZWdp
c3Rlcik7CiAgICB9CgogICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IEFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKICAgIHsKICAgICAgICBsb2FkMzIobGVm
dCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFU
ZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKICAgIH0KCiAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICB7Cgog
ICAgICAgIGxvYWQzMihsZWZ0LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICByZXR1cm4g
YnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQpOwogICAgfQoKICAgIEp1
bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1
c3RlZEltbTMyIHJpZ2h0KQogICAgewoKICAgICAgICBsb2FkMzIobGVmdCwgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CiAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIsIHJpZ2h0KTsKICAgIH0KCiAgICBKdW1wIGJyYW5jaDMyV2l0aFVuYWxpZ25lZEhhbGZXb3Jk
cyhSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIg
cmlnaHQpCiAgICB7CgogICAgICAgIGxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29yZHMobGVmdCwg
YWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGFkZHJl
c3NUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKICAgIH0KCiAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQp
CiAgICB7CiAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdodCk7CiAgICB9
CgogICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRk
cmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICB7CgogICAgICAgIGxvYWQzMihsZWZ0
Lm1fcHRyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29u
ZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQpOwogICAgfQoKICAgIEp1bXAgYnJhbmNoUHRy
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFJlZ2lzdGVySUQgcmln
aHQpCiAgICB7CiAgICAgICAgbG9hZDMyKGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAg
IHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdodCk7CiAgICB9Cgog
ICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0
LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICB7CiAgICAgICAgY29tcGFyZTMyQW5kU2V0RmxhZ3Mo
bGVmdCwgcmlnaHQpOwogICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAg
fQoKICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVm
dCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgewogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAg
bG9hZDgobGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgcmV0dXJuIGJyYW5jaDgo
Y29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQpOwogICAgfQoKICAgIEp1bXAgYnJhbmNo
OChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIg
cmlnaHQpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICBsb2FkOChsZWZ0LCBhZGRy
ZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgYWRkcmVzc1Rl
bXBSZWdpc3RlciwgcmlnaHQpOwogICAgfQoKICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgcmlnaHQp
CiAgICB7CgogICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7CiAgICAgICAgbG9hZDgoQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVy
KSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKICAgIH0KCiAgICBKdW1wIGJyYW5jaFRlc3QzMihS
ZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFJlZ2lzdGVySUQgbWFzaykKICAg
IHsKICAgICAgICBtX2Fzc2VtYmxlci50c3QocmVnLCBtYXNrKTsKICAgICAgICByZXR1cm4gSnVt
cChtYWtlQnJhbmNoKGNvbmQpKTsKICAgIH0KCiAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3Rl
ZEltbTMyKC0xKSkKICAgIHsKICAgICAgICB0ZXN0MzIocmVnLCBtYXNrKTsKICAgICAgICByZXR1
cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgIH0KCiAgICBKdW1wIGJyYW5jaFRlc3QzMihS
ZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9
IFRydXN0ZWRJbW0zMigtMSkpCiAgICB7CgogICAgICAgIGxvYWQzMihhZGRyZXNzLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIsIG1hc2spOwogICAgfQoKICAgIEp1bXAgYnJhbmNoVGVzdDMyKFJlc3VsdENv
bmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVz
dGVkSW1tMzIoLTEpKQogICAgewoKICAgICAgICBsb2FkMzIoYWRkcmVzcywgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CiAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyLCBtYXNrKTsKICAgIH0KCiAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlv
biBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1t
MzIoLTEpKQogICAgewoKICAgICAgICBsb2FkOChhZGRyZXNzLCBhZGRyZXNzVGVtcFJlZ2lzdGVy
KTsKICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIs
IG1hc2spOwogICAgfQoKICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQog
ICAgewoKICAgICAgICBsb2FkOChhZGRyZXNzLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAg
ICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIG1hc2spOwog
ICAgfQoKICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAg
ICB7CgogICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1Rl
bXBSZWdpc3Rlcik7CiAgICAgICAgbG9hZDgoQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwg
YWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrKTsKICAgIH0KCiAgICB2b2lkIGp1bXAoUmVnaXN0ZXJJ
RCB0YXJnZXQpCiAgICB7CiAgICAgICAgbV9hc3NlbWJsZXIuYngodGFyZ2V0KTsKICAgIH0KCgog
ICAgdm9pZCBqdW1wKEFkZHJlc3MgYWRkcmVzcykKICAgIHsKICAgICAgICBsb2FkMzIoYWRkcmVz
cywgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgbV9hc3NlbWJsZXIuYngoZGF0YVRlbXBSZWdp
c3Rlcik7CiAgICB9CgogICAgdm9pZCBqdW1wKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAg
ewogICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgZGF0YVRlbXBSZWdp
c3Rlcik7CiAgICAgICAgbG9hZDMyKEFkZHJlc3MoZGF0YVRlbXBSZWdpc3RlciksIGRhdGFUZW1w
UmVnaXN0ZXIpOwogICAgICAgIG1fYXNzZW1ibGVyLmJ4KGRhdGFUZW1wUmVnaXN0ZXIpOwogICAg
fQojIDE1ODUgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk12Ny5oIgogICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkX1MoZGVzdCwgb3AxLCBvcDIpOwogICAgICAgIHJldHVybiBK
dW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAgfQoKICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICB7CiAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1
bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVkSW1tKGltbS5tX3ZhbHVlKTsKICAgICAgICBpZiAoYXJt
SW1tLmlzVmFsaWQoKSkKICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkX1MoZGVzdCwgb3AxLCBh
cm1JbW0pOwogICAgICAgIGVsc2UgewogICAgICAgICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdp
c3Rlcik7CiAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZF9TKGRlc3QsIG9wMSwgZGF0YVRlbXBS
ZWdpc3Rlcik7CiAgICAgICAgfQogICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkp
OwogICAgfQoKICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgcmV0dXJuIGJyYW5jaEFk
ZDMyKGNvbmQsIGRlc3QsIHNyYywgZGVzdCk7CiAgICB9CgogICAgSnVtcCBicmFuY2hBZGQzMihS
ZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsK
ICAgICAgICBsb2FkMzIoc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICByZXR1cm4gYnJh
bmNoQWRkMzIoY29uZCwgZGVzdCwgZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICB9CgogICAg
SnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBk
ZXN0LCBpbW0sIGRlc3QpOwogICAgfQoKICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQogICAgewoK
CiAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lz
dGVyKTsKICAgICAgICBtX2Fzc2VtYmxlci5sZHIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzc1Rl
bXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoMCkpOwoKCiAgICAgICAg
QVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVk
SW1tKGltbS5tX3ZhbHVlKTsKICAgICAgICBpZiAoYXJtSW1tLmlzVmFsaWQoKSkKICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkX1MoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwg
YXJtSW1tKTsKICAgICAgICBlbHNlIHsKCgoKICAgICAgICAgICAgbW92ZShpbW0sIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRfUyhkYXRhVGVtcFJlZ2lz
dGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAg
ICAgICB9CgoKICAgICAgICBtX2Fzc2VtYmxlci5zdHIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVz
c1RlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoMCkpOwoKICAgICAg
ICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgIH0KCiAgICBKdW1wIGJyYW5jaE11
bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3Jj
MiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIG1fYXNzZW1ibGVyLnNtdWxsKGRlc3Qs
IGRhdGFUZW1wUmVnaXN0ZXIsIHNyYzEsIHNyYzIpOwoKICAgICAgICBpZiAoY29uZCA9PSBPdmVy
ZmxvdykgewogICAgICAgICAgICBtX2Fzc2VtYmxlci5hc3IoYWRkcmVzc1RlbXBSZWdpc3Rlciwg
ZGVzdCwgMzEpOwogICAgICAgICAgICByZXR1cm4gYnJhbmNoMzIoTm90RXF1YWwsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJu
IGJyYW5jaFRlc3QzMihjb25kLCBkZXN0KTsKICAgIH0KCiAgICBKdW1wIGJyYW5jaE11bDMyKFJl
c3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
ewogICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBzcmMsIGRlc3QsIGRlc3QpOwogICAg
fQoKICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
c3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgbW92
ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25k
LCBkYXRhVGVtcFJlZ2lzdGVyLCBzcmMsIGRlc3QpOwogICAgfQoKICAgIEp1bXAgYnJhbmNoTmVn
MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgIHsKICAgICAg
ICBBUk1UaHVtYkltbWVkaWF0ZSB6ZXJvID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTIo
MCk7CiAgICAgICAgbV9hc3NlbWJsZXIuc3ViX1Moc3JjRGVzdCwgemVybywgc3JjRGVzdCk7CiAg
ICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5jaChjb25kKSk7CiAgICB9CgogICAgSnVtcCBicmFu
Y2hPcjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgewogICAgICAgIG1fYXNzZW1ibGVyLm9ycl9TKGRlc3QsIGRlc3QsIHNyYyk7CiAg
ICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5jaChjb25kKSk7CiAgICB9CgogICAgSnVtcCBicmFu
Y2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQg
b3AyLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgbV9hc3NlbWJsZXIuc3ViX1MoZGVz
dCwgb3AxLCBvcDIpOwogICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAg
fQoKICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
b3AxLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgQVJN
VGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVkSW1t
KGltbS5tX3ZhbHVlKTsKICAgICAgICBpZiAoYXJtSW1tLmlzVmFsaWQoKSkKICAgICAgICAgICAg
bV9hc3NlbWJsZXIuc3ViX1MoZGVzdCwgb3AxLCBhcm1JbW0pOwogICAgICAgIGVsc2UgewogICAg
ICAgICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnN1Yl9TKGRlc3QsIG9wMSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgfQogICAgICAg
IHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOwogICAgfQoKICAgIEp1bXAgYnJhbmNoU3Vi
MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICB7CiAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIGRlc3QsIHNyYywgZGVzdCk7
CiAgICB9CgogICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIHJldHVybiBicmFuY2hT
dWIzMihjb25kLCBkZXN0LCBpbW0sIGRlc3QpOwogICAgfQoKICAgIHZvaWQgcmVsYXRpdmVUYWJs
ZUp1bXAoUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQogICAgewogICAgICAgICgodm9pZCkw
KTsKCgogICAgICAgIG1vdmUoQVJNUmVnaXN0ZXJzOjpwYywgZGF0YVRlbXBSZWdpc3Rlcik7CiAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkKGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIs
IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlRW5jb2RlZEltbSg5KSk7CgogICAgICAgIFNoaWZ0VHlw
ZUFuZEFtb3VudCBzaGlmdChTUlR5cGVfTFNMLCBzY2FsZSk7CiAgICAgICAgbV9hc3NlbWJsZXIu
YWRkKGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGluZGV4LCBzaGlmdCk7CiAg
ICAgICAganVtcChkYXRhVGVtcFJlZ2lzdGVyKTsKICAgIH0KCgoKICAgIHZvaWQgYnJlYWtwb2lu
dCh1aW50OF90IGltbSA9IDApCiAgICB7CiAgICAgICAgbV9hc3NlbWJsZXIuYmtwdChpbW0pOwog
ICAgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIENhbGwg
bmVhckNhbGwoKQogICAgewogICAgICAgIG1vdmVGaXhlZFdpZHRoRW5jb2RpbmcoVHJ1c3RlZElt
bTMyKDApLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxl
ci5ibHgoZGF0YVRlbXBSZWdpc3RlciksIENhbGw6OkxpbmthYmxlTmVhcik7CiAgICB9CgogICAg
aW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgQ2FsbCBuZWFyVGFpbENh
bGwoKQogICAgewogICAgICAgIG1vdmVGaXhlZFdpZHRoRW5jb2RpbmcoVHJ1c3RlZEltbTMyKDAp
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5ieChk
YXRhVGVtcFJlZ2lzdGVyKSwgQ2FsbDo6TGlua2FibGVOZWFyVGFpbCk7CiAgICB9CgogICAgaW5s
aW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgQ2FsbCBjYWxsKCkKICAgIHsK
ICAgICAgICBtb3ZlRml4ZWRXaWR0aEVuY29kaW5nKFRydXN0ZWRJbW0zMigwKSwgZGF0YVRlbXBS
ZWdpc3Rlcik7CiAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIuYmx4KGRhdGFUZW1wUmVn
aXN0ZXIpLCBDYWxsOjpMaW5rYWJsZSk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fKSkgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgdGFyZ2V0KQogICAgewog
ICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmJseCh0YXJnZXQpLCBDYWxsOjpOb25lKTsK
ICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBDYWxs
IGNhbGwoQWRkcmVzcyBhZGRyZXNzKQogICAgewogICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRh
VGVtcFJlZ2lzdGVyKTsKICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5ibHgoZGF0YVRl
bXBSZWdpc3RlciksIENhbGw6Ok5vbmUpOwogICAgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgcmV0KCkKICAgIHsKICAgICAgICBtX2Fzc2VtYmxl
ci5ieChsaW5rUmVnaXN0ZXIpOwogICAgfQoKICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3Rl
cklEIGRlc3QpCiAgICB7CiAgICAgICAgbV9hc3NlbWJsZXIuY21wKGxlZnQsIHJpZ2h0KTsKICAg
ICAgICBtX2Fzc2VtYmxlci5pdChhcm1WN0NvbmRpdGlvbihjb25kKSwgZmFsc2UpOwogICAgICAg
IG1fYXNzZW1ibGVyLm1vdihkZXN0LCBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxNigxKSk7
CiAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUlu
dDE2KDApKTsKICAgIH0KCiAgICB2b2lkIGNvbXBhcmUzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIEFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
ewogICAgICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICBjb21wYXJl
MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQsIGRlc3QpOwogICAgfQoKICAgIHZvaWQg
Y29tcGFyZTgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJ
bW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIGxvYWQ4KGxlZnQsIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgIGNvbXBhcmUzMihjb25kLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyLCByaWdodCwgZGVzdCk7CiAgICB9CgogICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVn
aXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIGNvbXBhcmUzMkFuZFNldEZsYWdzKGxlZnQsIHJp
Z2h0KTsKICAgICAgICBtX2Fzc2VtYmxlci5pdChhcm1WN0NvbmRpdGlvbihjb25kKSwgZmFsc2Up
OwogICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJ
bnQxNigxKSk7CiAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTVRodW1iSW1tZWRpYXRl
OjptYWtlVUludDE2KDApKTsKICAgIH0KCgoKCgogICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQg
ZGVzdCkKICAgIHsKICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7CiAg
ICAgICAgdGVzdDMyKGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2spOwogICAgICAgIG1fYXNzZW1ibGVy
Lml0KGFybVY3Q29uZGl0aW9uKGNvbmQpLCBmYWxzZSk7CiAgICAgICAgbV9hc3NlbWJsZXIubW92
KGRlc3QsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KDEpKTsKICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3YoZGVzdCwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoMCkpOwogICAgfQoK
ICAgIHZvaWQgdGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1
c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBsb2FkOChhZGRy
ZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICB0ZXN0MzIoZGF0YVRlbXBSZWdpc3Rlciwg
bWFzayk7CiAgICAgICAgbV9hc3NlbWJsZXIuaXQoYXJtVjdDb25kaXRpb24oY29uZCksIGZhbHNl
KTsKICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VV
SW50MTYoMSkpOwogICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBBUk1UaHVtYkltbWVkaWF0
ZTo6bWFrZVVJbnQxNigwKSk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgRGF0YUxhYmVsMzIgbW92ZVdpdGhQYXRjaChUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIGRzdCkKICAgIHsKICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOwogICAgICAg
IG1vdmVGaXhlZFdpZHRoRW5jb2RpbmcoaW1tLCBkc3QpOwogICAgICAgIHJldHVybiBEYXRhTGFi
ZWwzMih0aGlzKTsKICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18pKSBEYXRhTGFiZWxQdHIgbW92ZVdpdGhQYXRjaChUcnVzdGVkSW1tUHRyIGltbSwgUmVn
aXN0ZXJJRCBkc3QpCiAgICB7CiAgICAgICAgcGFkQmVmb3JlUGF0Y2goKTsKICAgICAgICBtb3Zl
Rml4ZWRXaWR0aEVuY29kaW5nKFRydXN0ZWRJbW0zMihpbW0pLCBkc3QpOwogICAgICAgIHJldHVy
biBEYXRhTGFiZWxQdHIodGhpcyk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIERhdGFMYWJlbFB0ciYgZGF0YUxhYmVsLCBUcnVz
dGVkSW1tUHRyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbVB0cigwKSkKICAgIHsKICAg
ICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBkYXRhVGVt
cFJlZ2lzdGVyKTsKICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgZGF0YVRlbXBS
ZWdpc3Rlcik7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fKSkgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBB
ZGRyZXNzIGxlZnQsIERhdGFMYWJlbFB0ciYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tUHRyIGluaXRp
YWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbVB0cigwKSkKICAgIHsKICAgICAgICBsb2FkMzIobGVm
dCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRj
aChpbml0aWFsUmlnaHRWYWx1ZSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgcmV0dXJuIGJy
YW5jaDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAg
fQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIEp1bXAgYnJh
bmNoMzJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERh
dGFMYWJlbDMyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFsUmlnaHRWYWx1ZSA9IFRy
dXN0ZWRJbW0zMigwKSkKICAgIHsKICAgICAgICBsb2FkMzIobGVmdCwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CiAgICAgICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1
ZSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGFkZHJl
c3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgfQoKICAgIFBhdGNoYWJsZUp1
bXAgcGF0Y2hhYmxlQnJhbmNoUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBs
ZWZ0LCBUcnVzdGVkSW1tUHRyIHJpZ2h0ID0gVHJ1c3RlZEltbVB0cigwKSkKICAgIHsKICAgICAg
ICBtX21ha2VKdW1wUGF0Y2hhYmxlID0gdHJ1ZTsKICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5j
aDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW0zMihyaWdodCkpOwogICAgICAgIG1fbWFrZUp1bXBQ
YXRjaGFibGUgPSBmYWxzZTsKICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChyZXN1bHQpOwog
ICAgfQoKICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoVGVzdDMyKFJlc3VsdENvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1t
MzIoLTEpKQogICAgewogICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSB0cnVlOwogICAgICAg
IEp1bXAgcmVzdWx0ID0gYnJhbmNoVGVzdDMyKGNvbmQsIHJlZywgbWFzayk7CiAgICAgICAgbV9t
YWtlSnVtcFBhdGNoYWJsZSA9IGZhbHNlOwogICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKHJl
c3VsdCk7CiAgICB9CgogICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2gzMihSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgaW1tKQogICAg
ewogICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSB0cnVlOwogICAgICAgIEp1bXAgcmVzdWx0
ID0gYnJhbmNoMzIoY29uZCwgcmVnLCBpbW0pOwogICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUg
PSBmYWxzZTsKICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChyZXN1bHQpOwogICAgfQoKICAg
IFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3Rl
ZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCiAgICB7CiAgICAg
ICAgbV9tYWtlSnVtcFBhdGNoYWJsZSA9IHRydWU7CiAgICAgICAgSnVtcCByZXN1bHQgPSBicmFu
Y2hQdHJXaXRoUGF0Y2goY29uZCwgbGVmdCwgZGF0YUxhYmVsLCBpbml0aWFsUmlnaHRWYWx1ZSk7
CiAgICAgICAgbV9tYWtlSnVtcFBhdGNoYWJsZSA9IGZhbHNlOwogICAgICAgIHJldHVybiBQYXRj
aGFibGVKdW1wKHJlc3VsdCk7CiAgICB9CgogICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFu
Y2gzMldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0
YUxhYmVsMzImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbTMyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1
c3RlZEltbTMyKDApKQogICAgewogICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSB0cnVlOwog
ICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoMzJXaXRoUGF0Y2goY29uZCwgbGVmdCwgZGF0YUxh
YmVsLCBpbml0aWFsUmlnaHRWYWx1ZSk7CiAgICAgICAgbV9tYWtlSnVtcFBhdGNoYWJsZSA9IGZh
bHNlOwogICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKHJlc3VsdCk7CiAgICB9CgogICAgUGF0
Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wKCkKICAgIHsKICAgICAgICBwYWRCZWZvcmVQYXRjaCgp
OwogICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSB0cnVlOwogICAgICAgIEp1bXAgcmVzdWx0
ID0ganVtcCgpOwogICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSBmYWxzZTsKICAgICAgICBy
ZXR1cm4gUGF0Y2hhYmxlSnVtcChyZXN1bHQpOwogICAgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIERhdGFMYWJlbFB0ciBzdG9yZVB0cldpdGhQYXRjaChU
cnVzdGVkSW1tUHRyIGluaXRpYWxWYWx1ZSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICB7
CiAgICAgICAgRGF0YUxhYmVsUHRyIGxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsVmFsdWUs
IGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRk
cmVzcyk7CiAgICAgICAgcmV0dXJuIGxhYmVsOwogICAgfQogICAgaW5saW5lIF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fKSkgRGF0YUxhYmVsUHRyIHN0b3JlUHRyV2l0aFBhdGNoKElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzKSB7IHJldHVybiBzdG9yZVB0cldpdGhQYXRjaChUcnVzdGVk
SW1tUHRyKDApLCBhZGRyZXNzKTsgfQoKCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18pKSBDYWxsIHRhaWxSZWN1cnNpdmVDYWxsKCkKICAgIHsKCiAgICAgICAgbW92
ZUZpeGVkV2lkdGhFbmNvZGluZyhUcnVzdGVkSW1tMzIoMCksIGRhdGFUZW1wUmVnaXN0ZXIpOwog
ICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmJ4KGRhdGFUZW1wUmVnaXN0ZXIpLCBDYWxs
OjpMaW5rYWJsZSk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fKSkgQ2FsbCBtYWtlVGFpbFJlY3Vyc2l2ZUNhbGwoSnVtcCBvbGRKdW1wKQogICAgewog
ICAgICAgIG9sZEp1bXAubGluayh0aGlzKTsKICAgICAgICByZXR1cm4gdGFpbFJlY3Vyc2l2ZUNh
bGwoKTsKICAgIH0KCgogICAgc3RhdGljIEZ1bmN0aW9uUHRyIHJlYWRDYWxsVGFyZ2V0KENvZGVM
b2NhdGlvbkNhbGwgY2FsbCkKICAgIHsKICAgICAgICByZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRl
cnByZXRfY2FzdDx2b2lkKCopKCk+KEFSTXY3QXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChjYWxs
LmRhdGFMb2NhdGlvbigpKSkpOwogICAgfQoKICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNl
UGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgIHN0YXRp
YyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goKSB7IHJldHVy
biBmYWxzZTsgfQoKICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mQnJhbmNoUHRy
V2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCiAgICB7
CiAgICAgICAgY29uc3QgdW5zaWduZWQgdHdvV29yZE9wU2l6ZSA9IDQ7CiAgICAgICAgcmV0dXJu
IGxhYmVsLmxhYmVsQXRPZmZzZXQoLXR3b1dvcmRPcFNpemUgKiAyKTsKICAgIH0KCiAgICBzdGF0
aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9j
YXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklEIHJkLCB2b2lkKiBpbml0aWFs
VmFsdWUpCiAgICB7CgogICAgICAgIEFSTXY3QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92VDNt
b3Z0Y21wVDIoaW5zdHJ1Y3Rpb25TdGFydC5kYXRhTG9jYXRpb24oKSwgcmQsIGRhdGFUZW1wUmVn
aXN0ZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihpbml0aWFsVmFsdWUpKTsKCgoKCiAg
ICB9CgogICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQ
dHJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyKQogICAgewogICAg
ICAgIFdURkNyYXNoKCk7CiAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkxhYmVsKCk7CiAgICB9
CgogICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldp
dGhQYXRjaE9uQWRkcmVzcyhDb2RlTG9jYXRpb25EYXRhTGFiZWwzMikKICAgIHsKICAgICAgICBX
VEZDcmFzaCgpOwogICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJlbCgpOwogICAgfQoKICAg
IHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0
aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsLCBBZGRyZXNzLCB2b2lkKikKICAgIHsKICAgICAgICBX
VEZDcmFzaCgpOwogICAgfQoKICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRv
UGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwsIEFkZHJlc3MsIGlu
dDMyX3QpCiAgICB7CiAgICAgICAgV1RGQ3Jhc2goKTsKICAgIH0KCiAgICBzdGF0aWMgdm9pZCBy
ZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsIGNhbGwsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3Rp
bmF0aW9uKQogICAgewogICAgICAgIEFSTXY3QXNzZW1ibGVyOjpyZWxpbmtDYWxsKGNhbGwuZGF0
YUxvY2F0aW9uKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgfQoKICAg
IHN0YXRpYyB2b2lkIHJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGwgY2FsbCwgRnVuY3Rpb25Q
dHIgZGVzdGluYXRpb24pCiAgICB7CiAgICAgICAgQVJNdjdBc3NlbWJsZXI6OnJlbGlua0NhbGwo
Y2FsbC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAg
ICB9CgoKCgoKcHJvdGVjdGVkOgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fKSkgSnVtcCBqdW1wKCkKICAgIHsKICAgICAgICBtX2Fzc2VtYmxlci5sYWJlbCgpOwog
ICAgICAgIG1vdmVGaXhlZFdpZHRoRW5jb2RpbmcoVHJ1c3RlZEltbTMyKDApLCBkYXRhVGVtcFJl
Z2lzdGVyKTsKICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5ieChkYXRhVGVtcFJlZ2lz
dGVyKSwgbV9tYWtlSnVtcFBhdGNoYWJsZSA/IEFSTXY3QXNzZW1ibGVyOjpKdW1wTm9Db25kaXRp
b25GaXhlZFNpemUgOiBBUk12N0Fzc2VtYmxlcjo6SnVtcE5vQ29uZGl0aW9uKTsKICAgIH0KCiAg
ICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBKdW1wIG1ha2VCcmFu
Y2goQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbiBjb25kKQogICAgewogICAgICAgIG1fYXNzZW1i
bGVyLmxhYmVsKCk7CiAgICAgICAgbV9hc3NlbWJsZXIuaXQoY29uZCwgdHJ1ZSwgdHJ1ZSk7CiAg
ICAgICAgbW92ZUZpeGVkV2lkdGhFbmNvZGluZyhUcnVzdGVkSW1tMzIoMCksIGRhdGFUZW1wUmVn
aXN0ZXIpOwogICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmJ4KGRhdGFUZW1wUmVnaXN0
ZXIpLCBtX21ha2VKdW1wUGF0Y2hhYmxlID8gQVJNdjdBc3NlbWJsZXI6Okp1bXBDb25kaXRpb25G
aXhlZFNpemUgOiBBUk12N0Fzc2VtYmxlcjo6SnVtcENvbmRpdGlvbiwgY29uZCk7CiAgICB9CiAg
ICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBKdW1wIG1ha2VCcmFu
Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKSB7IHJldHVybiBtYWtlQnJhbmNoKGFybVY3Q29u
ZGl0aW9uKGNvbmQpKTsgfQogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fKSkgSnVtcCBtYWtlQnJhbmNoKFJlc3VsdENvbmRpdGlvbiBjb25kKSB7IHJldHVybiBtYWtl
QnJhbmNoKGFybVY3Q29uZGl0aW9uKGNvbmQpKTsgfQogICAgaW5saW5lIF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fKSkgSnVtcCBtYWtlQnJhbmNoKERvdWJsZUNvbmRpdGlvbiBjb25k
KSB7IHJldHVybiBtYWtlQnJhbmNoKGFybVY3Q29uZGl0aW9uKGNvbmQpKTsgfQoKICAgIEFybUFk
ZHJlc3Mgc2V0dXBBcm1BZGRyZXNzKEJhc2VJbmRleCBhZGRyZXNzKQogICAgewogICAgICAgIGlm
IChhZGRyZXNzLm9mZnNldCkgewogICAgICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBpbW0gPSBB
Uk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxMk9yRW5jb2RlZEltbShhZGRyZXNzLm9mZnNldCk7
CiAgICAgICAgICAgIGlmIChpbW0uaXNWYWxpZCgpKQogICAgICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSwgaW1tKTsKICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNl
dCksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRk
KGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSk7
CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBBcm1BZGRyZXNzKGFkZHJlc3NUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwogICAgICAgIH0gZWxzZQog
ICAgICAgICAgICByZXR1cm4gQXJtQWRkcmVzcyhhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOwogICAgfQoKICAgIEFybUFkZHJlc3Mgc2V0dXBBcm1BZGRyZXNzKEFk
ZHJlc3MgYWRkcmVzcykKICAgIHsKICAgICAgICBpZiAoKGFkZHJlc3Mub2Zmc2V0ID49IC0weGZm
KSAmJiAoYWRkcmVzcy5vZmZzZXQgPD0gMHhmZmYpKQogICAgICAgICAgICByZXR1cm4gQXJtQWRk
cmVzcyhhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKCiAgICAgICAgbW92ZShUcnVzdGVk
SW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICByZXR1
cm4gQXJtQWRkcmVzcyhhZGRyZXNzLmJhc2UsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgfQoK
ICAgIEFybUFkZHJlc3Mgc2V0dXBBcm1BZGRyZXNzKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQog
ICAgewogICAgICAgIGlmICgoYWRkcmVzcy5vZmZzZXQgPj0gLTB4ZmYpICYmIChhZGRyZXNzLm9m
ZnNldCA8PSAweGZmZikpCiAgICAgICAgICAgIHJldHVybiBBcm1BZGRyZXNzKGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5vZmZzZXQpOwoKICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9m
ZnNldCksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgIHJldHVybiBBcm1BZGRyZXNzKGFk
ZHJlc3MuYmFzZSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICB9CgogICAgUmVnaXN0ZXJJRCBt
YWtlQmFzZUluZGV4QmFzZShCYXNlSW5kZXggYWRkcmVzcykKICAgIHsKICAgICAgICBpZiAoIWFk
ZHJlc3Mub2Zmc2V0KQogICAgICAgICAgICByZXR1cm4gYWRkcmVzcy5iYXNlOwoKICAgICAgICBB
Uk1UaHVtYkltbWVkaWF0ZSBpbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxMk9yRW5j
b2RlZEltbShhZGRyZXNzLm9mZnNldCk7CiAgICAgICAgaWYgKGltbS5pc1ZhbGlkKCkpCiAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmFkZChhZGRyZXNzVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2Us
IGltbSk7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGFkZHJl
c3Mub2Zmc2V0KSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmFkZChhZGRyZXNzVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJh
c2UpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFkZHJlc3NUZW1wUmVnaXN0ZXI7CiAgICB9
CgogICAgdm9pZCBtb3ZlRml4ZWRXaWR0aEVuY29kaW5nKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgZHN0KQogICAgewogICAgICAgIHVpbnQzMl90IHZhbHVlID0gaW1tLm1fdmFsdWU7CiAg
ICAgICAgbV9hc3NlbWJsZXIubW92VDMoZHN0LCBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQx
Nih2YWx1ZSAmIDB4ZmZmZikpOwogICAgICAgIG1fYXNzZW1ibGVyLm1vdnQoZHN0LCBBUk1UaHVt
YkltbWVkaWF0ZTo6bWFrZVVJbnQxNih2YWx1ZSA+PiAxNikpOwogICAgfQoKICAgIEFSTXY3QXNz
ZW1ibGVyOjpDb25kaXRpb24gYXJtVjdDb25kaXRpb24oUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
KQogICAgewogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBUk12N0Fzc2VtYmxlcjo6Q29uZGl0
aW9uPihjb25kKTsKICAgIH0KCiAgICBBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uIGFybVY3Q29u
ZGl0aW9uKFJlc3VsdENvbmRpdGlvbiBjb25kKQogICAgewogICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25kKTsKICAgIH0KCiAgICBBUk12N0Fz
c2VtYmxlcjo6Q29uZGl0aW9uIGFybVY3Q29uZGl0aW9uKERvdWJsZUNvbmRpdGlvbiBjb25kKQog
ICAgewogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9u
Pihjb25kKTsKICAgIH0KCnByaXZhdGU6CiAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKCiAg
ICBzdGF0aWMgdm9pZCBsaW5rQ2FsbCh2b2lkKiBjb2RlLCBDYWxsIGNhbGwsIEZ1bmN0aW9uUHRy
IGZ1bmN0aW9uKQogICAgewogICAgICAgIGlmIChjYWxsLmlzRmxhZ1NldChDYWxsOjpUYWlsKSkK
ICAgICAgICAgICAgQVJNdjdBc3NlbWJsZXI6OmxpbmtKdW1wKGNvZGUsIGNhbGwubV9sYWJlbCwg
ZnVuY3Rpb24udmFsdWUoKSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBBUk12N0Fzc2VtYmxl
cjo6bGlua0NhbGwoY29kZSwgY2FsbC5tX2xhYmVsLCBmdW5jdGlvbi52YWx1ZSgpKTsKICAgIH0K
IyAyMDk4ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuaCIKICAgIGJvb2wgbV9tYWtlSnVtcFBhdGNoYWJsZTsKfTsKCn0KIyAzMyAiLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIiAyCm5h
bWVzcGFjZSBKU0MgeyB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQVJNdjcgTWFjcm9Bc3NlbWJsZXJC
YXNlOyB9OwojIDY3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmgiCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJs
aWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsKcHVibGljOgoKICAgIHN0YXRpYyBjb25zdGV4cHIgUmVn
aXN0ZXJJRCBuZXh0UmVnaXN0ZXIoUmVnaXN0ZXJJRCByZWcpCiAgICB7CiAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFJlZ2lzdGVySUQ+KHJlZyArIDEpOwogICAgfQoKICAgIHN0YXRpYyBjb25z
dGV4cHIgRlBSZWdpc3RlcklEIG5leHRGUFJlZ2lzdGVyKEZQUmVnaXN0ZXJJRCByZWcpCiAgICB7
CiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZQUmVnaXN0ZXJJRD4ocmVnICsgMSk7CiAgICB9
CgogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycygpCiAgICB7
CiAgICAgICAgcmV0dXJuIGxhc3RSZWdpc3RlcigpIC0gZmlyc3RSZWdpc3RlcigpICsgMTsKICAg
IH0KCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHJlZ2lzdGVySW5kZXgoUmVnaXN0ZXJJ
RCByZWcpCiAgICB7CiAgICAgICAgcmV0dXJuIHJlZyAtIGZpcnN0UmVnaXN0ZXIoKTsKICAgIH0K
CiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mRlBSZWdpc3RlcnMoKQogICAg
ewogICAgICAgIHJldHVybiBsYXN0RlBSZWdpc3RlcigpIC0gZmlyc3RGUFJlZ2lzdGVyKCkgKyAx
OwogICAgfQoKICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZnBSZWdpc3RlckluZGV4KEZQ
UmVnaXN0ZXJJRCByZWcpCiAgICB7CiAgICAgICAgcmV0dXJuIHJlZyAtIGZpcnN0RlBSZWdpc3Rl
cigpOwogICAgfQoKICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgcmVnaXN0ZXJJbmRleChG
UFJlZ2lzdGVySUQgcmVnKQogICAgewogICAgICAgIHJldHVybiBmcFJlZ2lzdGVySW5kZXgocmVn
KSArIG51bWJlck9mUmVnaXN0ZXJzKCk7CiAgICB9CgogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCB0b3RhbE51bWJlck9mUmVnaXN0ZXJzKCkKICAgIHsKICAgICAgICByZXR1cm4gbnVtYmVy
T2ZSZWdpc3RlcnMoKSArIG51bWJlck9mRlBSZWdpc3RlcnMoKTsKICAgIH0KCiAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlckJhc2U6OnBvcDsKICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6anVt
cDsKICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoMzI7CiAgICB1c2luZyBNYWNy
b0Fzc2VtYmxlckJhc2U6OmNvbXBhcmUzMjsKICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6
bW92ZTsKICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YWRkMzI7CiAgICB1c2luZyBNYWNy
b0Fzc2VtYmxlckJhc2U6Om11bDMyOwogICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjphbmQz
MjsKICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoQWRkMzI7CiAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaE11bDMyOwoKICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVy
QmFzZTo6YnJhbmNoUHRyOwoKICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoU3Vi
MzI7CiAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmxzaGlmdDMyOwogICAgdXNpbmcgTWFj
cm9Bc3NlbWJsZXJCYXNlOjpvcjMyOwogICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpyc2hp
ZnQzMjsKICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6c3RvcmUzMjsKICAgIHVzaW5nIE1h
Y3JvQXNzZW1ibGVyQmFzZTo6c3ViMzI7CiAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OnVy
c2hpZnQzMjsKICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6eG9yMzI7CgogICAgc3RhdGlj
IGJvb2wgaXNQdHJBbGlnbmVkQWRkcmVzc09mZnNldChwdHJkaWZmX3QgdmFsdWUpCiAgICB7CiAg
ICAgICAgcmV0dXJuIHZhbHVlID09IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsKICAgIH0K
CiAgICBzdGF0aWMgY29uc3QgZG91YmxlIHR3b1RvVGhlMzI7CgoKCiAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlckJhc2U6OmludmVydDsKCiAgICBzdGF0aWMgRG91YmxlQ29uZGl0aW9uIGludmVydChE
b3VibGVDb25kaXRpb24gY29uZCkKICAgIHsKICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKICAgICAg
ICBjYXNlIERvdWJsZUVxdWFsOgogICAgICAgICAgICByZXR1cm4gRG91YmxlTm90RXF1YWxPclVu
b3JkZXJlZDsKICAgICAgICBjYXNlIERvdWJsZU5vdEVxdWFsOgogICAgICAgICAgICByZXR1cm4g
RG91YmxlRXF1YWxPclVub3JkZXJlZDsKICAgICAgICBjYXNlIERvdWJsZUdyZWF0ZXJUaGFuOgog
ICAgICAgICAgICByZXR1cm4gRG91YmxlTGVzc1RoYW5PckVxdWFsT3JVbm9yZGVyZWQ7CiAgICAg
ICAgY2FzZSBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWw6CiAgICAgICAgICAgIHJldHVybiBEb3Vi
bGVMZXNzVGhhbk9yVW5vcmRlcmVkOwogICAgICAgIGNhc2UgRG91YmxlTGVzc1RoYW46CiAgICAg
ICAgICAgIHJldHVybiBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxPclVub3JkZXJlZDsKICAgICAg
ICBjYXNlIERvdWJsZUxlc3NUaGFuT3JFcXVhbDoKICAgICAgICAgICAgcmV0dXJuIERvdWJsZUdy
ZWF0ZXJUaGFuT3JVbm9yZGVyZWQ7CiAgICAgICAgY2FzZSBEb3VibGVFcXVhbE9yVW5vcmRlcmVk
OgogICAgICAgICAgICByZXR1cm4gRG91YmxlTm90RXF1YWw7CiAgICAgICAgY2FzZSBEb3VibGVO
b3RFcXVhbE9yVW5vcmRlcmVkOgogICAgICAgICAgICByZXR1cm4gRG91YmxlRXF1YWw7CiAgICAg
ICAgY2FzZSBEb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRlcmVkOgogICAgICAgICAgICByZXR1cm4g
RG91YmxlTGVzc1RoYW5PckVxdWFsOwogICAgICAgIGNhc2UgRG91YmxlR3JlYXRlclRoYW5PckVx
dWFsT3JVbm9yZGVyZWQ6CiAgICAgICAgICAgIHJldHVybiBEb3VibGVMZXNzVGhhbjsKICAgICAg
ICBjYXNlIERvdWJsZUxlc3NUaGFuT3JVbm9yZGVyZWQ6CiAgICAgICAgICAgIHJldHVybiBEb3Vi
bGVHcmVhdGVyVGhhbk9yRXF1YWw7CiAgICAgICAgY2FzZSBEb3VibGVMZXNzVGhhbk9yRXF1YWxP
clVub3JkZXJlZDoKICAgICAgICAgICAgcmV0dXJuIERvdWJsZUdyZWF0ZXJUaGFuOwogICAgICAg
IH0KICAgICAgICBXVEZDcmFzaCgpOwogICAgICAgIHJldHVybiBEb3VibGVFcXVhbDsKICAgIH0K
CiAgICBzdGF0aWMgYm9vbCBpc0ludmVydGlibGUoUmVzdWx0Q29uZGl0aW9uIGNvbmQpCiAgICB7
CiAgICAgICAgc3dpdGNoIChjb25kKSB7CiAgICAgICAgY2FzZSBaZXJvOgogICAgICAgIGNhc2Ug
Tm9uWmVybzoKICAgICAgICBjYXNlIFNpZ25lZDoKICAgICAgICBjYXNlIFBvc2l0aXZlT3JaZXJv
OgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIHN0YXRpYyBSZXN1bHRDb25kaXRpb24g
aW52ZXJ0KFJlc3VsdENvbmRpdGlvbiBjb25kKQogICAgewogICAgICAgIHN3aXRjaCAoY29uZCkg
ewogICAgICAgIGNhc2UgWmVybzoKICAgICAgICAgICAgcmV0dXJuIE5vblplcm87CiAgICAgICAg
Y2FzZSBOb25aZXJvOgogICAgICAgICAgICByZXR1cm4gWmVybzsKICAgICAgICBjYXNlIFNpZ25l
ZDoKICAgICAgICAgICAgcmV0dXJuIFBvc2l0aXZlT3JaZXJvOwogICAgICAgIGNhc2UgUG9zaXRp
dmVPclplcm86CiAgICAgICAgICAgIHJldHVybiBTaWduZWQ7CiAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgV1RGQ3Jhc2goKTsKICAgICAgICAgICAgcmV0dXJuIFplcm87CiAgICAgICAgfQog
ICAgfQoKICAgIHN0YXRpYyBSZWxhdGlvbmFsQ29uZGl0aW9uIGZsaXAoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kKQogICAgewogICAgICAgIHN3aXRjaCAoY29uZCkgewogICAgICAgIGNhc2UgRXF1
YWw6CiAgICAgICAgY2FzZSBOb3RFcXVhbDoKICAgICAgICAgICAgcmV0dXJuIGNvbmQ7CiAgICAg
ICAgY2FzZSBBYm92ZToKICAgICAgICAgICAgcmV0dXJuIEJlbG93OwogICAgICAgIGNhc2UgQWJv
dmVPckVxdWFsOgogICAgICAgICAgICByZXR1cm4gQmVsb3dPckVxdWFsOwogICAgICAgIGNhc2Ug
QmVsb3c6CiAgICAgICAgICAgIHJldHVybiBBYm92ZTsKICAgICAgICBjYXNlIEJlbG93T3JFcXVh
bDoKICAgICAgICAgICAgcmV0dXJuIEFib3ZlT3JFcXVhbDsKICAgICAgICBjYXNlIEdyZWF0ZXJU
aGFuOgogICAgICAgICAgICByZXR1cm4gTGVzc1RoYW47CiAgICAgICAgY2FzZSBHcmVhdGVyVGhh
bk9yRXF1YWw6CiAgICAgICAgICAgIHJldHVybiBMZXNzVGhhbk9yRXF1YWw7CiAgICAgICAgY2Fz
ZSBMZXNzVGhhbjoKICAgICAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFuOwogICAgICAgIGNhc2Ug
TGVzc1RoYW5PckVxdWFsOgogICAgICAgICAgICByZXR1cm4gR3JlYXRlclRoYW5PckVxdWFsOwog
ICAgICAgIH0KCiAgICAgICAgV1RGQ3Jhc2goKTsKICAgICAgICByZXR1cm4gRXF1YWw7CiAgICB9
CgoKCgoKICAgIHN0YXRpYyBib29sIGlzU2lnbmVkKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkK
ICAgIHsKICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKICAgICAgICBjYXNlIEVxdWFsOgogICAgICAg
IGNhc2UgTm90RXF1YWw6CiAgICAgICAgY2FzZSBHcmVhdGVyVGhhbjoKICAgICAgICBjYXNlIEdy
ZWF0ZXJUaGFuT3JFcXVhbDoKICAgICAgICBjYXNlIExlc3NUaGFuOgogICAgICAgIGNhc2UgTGVz
c1RoYW5PckVxdWFsOgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKCgoKCiAgICBzdGF0aWMg
Ym9vbCBpc1Vuc2lnbmVkKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAgIHsKICAgICAgICBz
d2l0Y2ggKGNvbmQpIHsKICAgICAgICBjYXNlIEVxdWFsOgogICAgICAgIGNhc2UgTm90RXF1YWw6
CiAgICAgICAgY2FzZSBBYm92ZToKICAgICAgICBjYXNlIEFib3ZlT3JFcXVhbDoKICAgICAgICBj
YXNlIEJlbG93OgogICAgICAgIGNhc2UgQmVsb3dPckVxdWFsOgogICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
fQogICAgfQoKCgoKICAgIHZvaWQgcG9wKCkKICAgIHsKICAgICAgICBhZGRQdHIoVHJ1c3RlZElt
bTMyKHNpemVvZih2b2lkKikpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICB9CgogICAgdm9p
ZCBwZWVrKFJlZ2lzdGVySUQgZGVzdCwgaW50IGluZGV4ID0gMCkKICAgIHsKICAgICAgICBsb2Fk
UHRyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIChpbmRleCAqIHNpemVvZih2b2lkKikp
KSwgZGVzdCk7CiAgICB9CgogICAgQWRkcmVzcyBhZGRyZXNzRm9yUG9rZShpbnQgaW5kZXgpCiAg
ICB7CiAgICAgICAgcmV0dXJuIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIChpbmRleCAq
IHNpemVvZih2b2lkKikpKTsKICAgIH0KCiAgICB2b2lkIHBva2UoUmVnaXN0ZXJJRCBzcmMsIGlu
dCBpbmRleCA9IDApCiAgICB7CiAgICAgICAgc3RvcmVQdHIoc3JjLCBhZGRyZXNzRm9yUG9rZShp
bmRleCkpOwogICAgfQoKICAgIHZvaWQgcG9rZShUcnVzdGVkSW1tMzIgdmFsdWUsIGludCBpbmRl
eCA9IDApCiAgICB7CiAgICAgICAgc3RvcmUzMih2YWx1ZSwgYWRkcmVzc0ZvclBva2UoaW5kZXgp
KTsKICAgIH0KCiAgICB2b2lkIHBva2UoVHJ1c3RlZEltbVB0ciBpbW0sIGludCBpbmRleCA9IDAp
CiAgICB7CiAgICAgICAgc3RvcmVQdHIoaW1tLCBhZGRyZXNzRm9yUG9rZShpbmRleCkpOwogICAg
fQoKCiAgICB2b2lkIHB1c2hUb1NhdmUoUmVnaXN0ZXJJRCBzcmMpCiAgICB7CiAgICAgICAgcHVz
aChzcmMpOwogICAgfQogICAgdm9pZCBwdXNoVG9TYXZlSW1tZWRpYXRlV2l0aG91dFRvdWNoaW5n
UmVnaXN0ZXJzKFRydXN0ZWRJbW0zMiBpbW0pCiAgICB7CiAgICAgICAgcHVzaChpbW0pOwogICAg
fQogICAgdm9pZCBwb3BUb1Jlc3RvcmUoUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIHBv
cChkZXN0KTsKICAgIH0KICAgIHZvaWQgcHVzaFRvU2F2ZShGUFJlZ2lzdGVySUQgc3JjKQogICAg
ewogICAgICAgIHN1YlB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKGRvdWJsZSkpLCBzdGFja1BvaW50
ZXJSZWdpc3Rlcik7CiAgICAgICAgc3RvcmVEb3VibGUoc3JjLCBzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CiAgICB9CiAgICB2b2lkIHBvcFRvUmVzdG9yZShGUFJlZ2lzdGVySUQgZGVzdCkKICAgIHsK
ICAgICAgICBsb2FkRG91YmxlKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBkZXN0KTsKICAgICAgICBh
ZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihkb3VibGUpKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIp
OwogICAgfQoKICAgIHN0YXRpYyBwdHJkaWZmX3QgcHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKSB7IHJl
dHVybiBzaXplb2Yodm9pZCopOyB9CiMgMzYwICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgiCiAgICBUcnVzdGVkSW1tMzIgdHJ1c3RlZEltbTMy
Rm9yU2hpZnQoSW1tMzIgaW1tKQogICAgewogICAgICAgIHJldHVybiBUcnVzdGVkSW1tMzIoaW1t
LmFzVHJ1c3RlZEltbTMyKCkubV92YWx1ZSAmIDMxKTsKICAgIH0KCgogICAgdm9pZCBicmFuY2hQ
dHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgVHJ1c3RlZEltbVB0
ciBpbW0sIExhYmVsIHRhcmdldCkKICAgIHsKICAgICAgICBicmFuY2hQdHIoY29uZCwgb3AxLCBp
bW0pLmxpbmtUbyh0YXJnZXQsIHRoaXMpOwogICAgfQogICAgdm9pZCBicmFuY2hQdHIoUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgSW1tUHRyIGltbSwgTGFiZWwgdGFy
Z2V0KQogICAgewogICAgICAgIGJyYW5jaFB0cihjb25kLCBvcDEsIGltbSkubGlua1RvKHRhcmdl
dCwgdGhpcyk7CiAgICB9CgogICAgdm9pZCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgTGFiZWwgdGFyZ2V0KQogICAgewog
ICAgICAgIGJyYW5jaDMyKGNvbmQsIG9wMSwgb3AyKS5saW5rVG8odGFyZ2V0LCB0aGlzKTsKICAg
IH0KCiAgICB2b2lkIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBvcDEsIFRydXN0ZWRJbW0zMiBpbW0sIExhYmVsIHRhcmdldCkKICAgIHsKICAgICAgICBicmFu
Y2gzMihjb25kLCBvcDEsIGltbSkubGlua1RvKHRhcmdldCwgdGhpcyk7CiAgICB9CgogICAgdm9p
ZCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBJbW0z
MiBpbW0sIExhYmVsIHRhcmdldCkKICAgIHsKICAgICAgICBicmFuY2gzMihjb25kLCBvcDEsIGlt
bSkubGlua1RvKHRhcmdldCwgdGhpcyk7CiAgICB9CgogICAgdm9pZCBicmFuY2gzMihSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgQWRkcmVzcyByaWdodCwgTGFiZWwg
dGFyZ2V0KQogICAgewogICAgICAgIGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0KS5saW5rVG8o
dGFyZ2V0LCB0aGlzKTsKICAgIH0KCiAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgVHJ1c3RlZEltbTMyIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCiAgICB7CiAgICAg
ICAgcmV0dXJuIGJyYW5jaDMyKGNvbW11dGUoY29uZCksIHJpZ2h0LCBsZWZ0KTsKICAgIH0KCiAg
ICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgSW1tMzIgbGVmdCwgUmVn
aXN0ZXJJRCByaWdodCkKICAgIHsKICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29tbXV0ZShjb25k
KSwgcmlnaHQsIGxlZnQpOwogICAgfQoKICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgSW1tMzIgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgewogICAgICAgIGNvbXBhcmUzMihjb21tdXRlKGNvbmQpLCByaWdodCwgbGVmdCwgZGVz
dCk7CiAgICB9CgogICAgdm9pZCBicmFuY2hUZXN0UHRyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIHJlZywgTGFiZWwgdGFyZ2V0KQogICAgewogICAgICAgIGJyYW5jaFRlc3RQdHIo
Y29uZCwgcmVnKS5saW5rVG8odGFyZ2V0LCB0aGlzKTsKICAgIH0KIyA0NTQgIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaCIKICAgIHZvaWQganVt
cChMYWJlbCB0YXJnZXQpCiAgICB7CiAgICAgICAganVtcCgpLmxpbmtUbyh0YXJnZXQsIHRoaXMp
OwogICAgfQoKCgogICAgc3RhdGljIFJlbGF0aW9uYWxDb25kaXRpb24gY29tbXV0ZShSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKICAgIHsKICAgICAgICBzd2l0Y2ggKGNvbmRpdGlvbikg
ewogICAgICAgIGNhc2UgQWJvdmU6CiAgICAgICAgICAgIHJldHVybiBCZWxvdzsKICAgICAgICBj
YXNlIEFib3ZlT3JFcXVhbDoKICAgICAgICAgICAgcmV0dXJuIEJlbG93T3JFcXVhbDsKICAgICAg
ICBjYXNlIEJlbG93OgogICAgICAgICAgICByZXR1cm4gQWJvdmU7CiAgICAgICAgY2FzZSBCZWxv
d09yRXF1YWw6CiAgICAgICAgICAgIHJldHVybiBBYm92ZU9yRXF1YWw7CiAgICAgICAgY2FzZSBH
cmVhdGVyVGhhbjoKICAgICAgICAgICAgcmV0dXJuIExlc3NUaGFuOwogICAgICAgIGNhc2UgR3Jl
YXRlclRoYW5PckVxdWFsOgogICAgICAgICAgICByZXR1cm4gTGVzc1RoYW5PckVxdWFsOwogICAg
ICAgIGNhc2UgTGVzc1RoYW46CiAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKICAgICAg
ICBjYXNlIExlc3NUaGFuT3JFcXVhbDoKICAgICAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFuT3JF
cXVhbDsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAg
ICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gY29uZGl0aW9uOwogICAgfQoKICAgIHZvaWQg
b29wcygpCiAgICB7CiAgICAgICAgYWJvcnRXaXRoUmVhc29uKEIzT29wcyk7CiAgICB9CgoKCiAg
ICB2b2lkIHJldDMyKFJlZ2lzdGVySUQpIHsgcmV0KCk7IH0KICAgIHZvaWQgcmV0NjQoUmVnaXN0
ZXJJRCkgeyByZXQoKTsgfQogICAgdm9pZCByZXRGbG9hdChGUFJlZ2lzdGVySUQpIHsgcmV0KCk7
IH0KICAgIHZvaWQgcmV0RG91YmxlKEZQUmVnaXN0ZXJJRCkgeyByZXQoKTsgfQoKICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBCbGluZGluZ01vZHVsdXMgPSA2NDsKICAgIGJvb2wgc2hvdWxkQ29u
c2lkZXJCbGluZGluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICEocmFuZG9tKCkgJiAoQmxpbmRp
bmdNb2R1bHVzIC0gMSkpOwogICAgfQoKCgoKCiAgICB2b2lkIGFkZFB0cihBZGRyZXNzIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIGFkZDMyKHNyYywgZGVzdCk7CiAgICB9Cgog
ICAgdm9pZCBhZGRQdHIoQWJzb2x1dGVBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
ewogICAgICAgIGFkZDMyKHNyYywgZGVzdCk7CiAgICB9CgogICAgdm9pZCBhZGRQdHIoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBhZGQzMihzcmMsIGRlc3Qp
OwogICAgfQoKICAgIHZvaWQgYWRkUHRyKFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdo
dCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIGFkZDMyKGxlZnQsIHJpZ2h0LCBkZXN0
KTsKICAgIH0KCiAgICB2b2lkIGFkZFB0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNy
Y0Rlc3QpCiAgICB7CiAgICAgICAgYWRkMzIoaW1tLCBzcmNEZXN0KTsKICAgIH0KCiAgICB2b2lk
IGFkZFB0cihUcnVzdGVkSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAg
IGFkZDMyKFRydXN0ZWRJbW0zMihpbW0pLCBkZXN0KTsKICAgIH0KCiAgICB2b2lkIGFkZFB0cihU
cnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgewog
ICAgICAgIGFkZDMyKGltbSwgc3JjLCBkZXN0KTsKICAgIH0KCiAgICB2b2lkIGFkZFB0cihUcnVz
dGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgIHsKICAgICAgICBhZGQz
MihpbW0sIGFkZHJlc3MpOwogICAgfQoKICAgIHZvaWQgYW5kUHRyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgYW5kMzIoc3JjLCBkZXN0KTsKICAgIH0KCiAg
ICB2b2lkIGFuZFB0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpCiAgICB7
CiAgICAgICAgYW5kMzIoaW1tLCBzcmNEZXN0KTsKICAgIH0KCiAgICB2b2lkIGFuZFB0cihUcnVz
dGVkSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgewogICAgICAgIGFuZDMyKFRy
dXN0ZWRJbW0zMihpbW0pLCBzcmNEZXN0KTsKICAgIH0KCiAgICB2b2lkIGxzaGlmdFB0cihJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgIHsKICAgICAgICBsc2hpZnQzMih0cnVzdGVk
SW1tMzJGb3JTaGlmdChpbW0pLCBzcmNEZXN0KTsKICAgIH0KCiAgICB2b2lkIHJzaGlmdFB0cihJ
bW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgIHsKICAgICAgICByc2hpZnQzMih0cnVz
dGVkSW1tMzJGb3JTaGlmdChpbW0pLCBzcmNEZXN0KTsKICAgIH0KCiAgICB2b2lkIHVyc2hpZnRQ
dHIoSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpCiAgICB7CiAgICAgICAgdXJzaGlmdDMy
KHRydXN0ZWRJbW0zMkZvclNoaWZ0KGltbSksIHNyY0Rlc3QpOwogICAgfQoKICAgIHZvaWQgbmVn
UHRyKFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBuZWczMihkZXN0KTsKICAgIH0KCiAg
ICB2b2lkIG9yUHRyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAg
ICAgb3IzMihzcmMsIGRlc3QpOwogICAgfQoKICAgIHZvaWQgb3JQdHIoUmVnaXN0ZXJJRCBvcDEs
IFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgb3IzMihvcDEs
IG9wMiwgZGVzdCk7CiAgICB9CgogICAgdm9pZCBvclB0cihUcnVzdGVkSW1tUHRyIGltbSwgUmVn
aXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIG9yMzIoVHJ1c3RlZEltbTMyKGltbSksIGRlc3Qp
OwogICAgfQoKICAgIHZvaWQgb3JQdHIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgewogICAgICAgIG9yMzIoaW1tLCBkZXN0KTsKICAgIH0KCiAgICB2b2lkIHN1YlB0cihS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIHN1YjMyKHNyYywg
ZGVzdCk7CiAgICB9CgogICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgewogICAgICAgIHN1YjMyKGltbSwgZGVzdCk7CiAgICB9CgogICAgdm9pZCBz
dWJQdHIoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBz
dWIzMihUcnVzdGVkSW1tMzIoaW1tKSwgZGVzdCk7CiAgICB9CgogICAgdm9pZCB4b3JQdHIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICB4b3IzMihzcmMsIGRl
c3QpOwogICAgfQoKICAgIHZvaWQgeG9yUHRyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
c3JjRGVzdCkKICAgIHsKICAgICAgICB4b3IzMihpbW0sIHNyY0Rlc3QpOwogICAgfQoKCiAgICB2
b2lkIGxvYWRQdHIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAg
IHsKICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGVzdCk7CiAgICB9CgogICAgdm9pZCBsb2FkUHRy
KEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgbG9hZDMy
KGFkZHJlc3MsIGRlc3QpOwogICAgfQoKICAgIHZvaWQgbG9hZFB0cihjb25zdCB2b2lkKiBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRlc3Qp
OwogICAgfQoKICAgIERhdGFMYWJlbDMyIGxvYWRQdHJXaXRoQWRkcmVzc09mZnNldFBhdGNoKEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIHJldHVybiBsb2Fk
MzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKGFkZHJlc3MsIGRlc3QpOwogICAgfQoKICAgIERhdGFM
YWJlbENvbXBhY3QgbG9hZFB0cldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3Mg
YWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIHJldHVybiBsb2FkMzJXaXRo
Q29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChhZGRyZXNzLCBkZXN0KTsKICAgIH0KCiAgICB2b2lk
IG1vdmUoSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIG1vdmUoSW1t
MzIoaW1tLmFzVHJ1c3RlZEltbVB0cigpKSwgZGVzdCk7CiAgICB9CgogICAgdm9pZCBjb21wYXJl
UHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1t
MzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBjb21wYXJlMzIoY29uZCwg
bGVmdCwgcmlnaHQsIGRlc3QpOwogICAgfQoKICAgIHZvaWQgY29tcGFyZVB0cihSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgewogICAgICAgIGNvbXBhcmUzMihjb25kLCBsZWZ0LCByaWdodCwgZGVz
dCk7CiAgICB9CgogICAgdm9pZCBzdG9yZVB0cihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRy
ZXNzIGFkZHJlc3MpCiAgICB7CiAgICAgICAgc3RvcmUzMihzcmMsIGFkZHJlc3MpOwogICAgfQoK
ICAgIHZvaWQgc3RvcmVQdHIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQogICAg
ewogICAgICAgIHN0b3JlMzIoc3JjLCBhZGRyZXNzKTsKICAgIH0KCiAgICB2b2lkIHN0b3JlUHRy
KFJlZ2lzdGVySUQgc3JjLCB2b2lkKiBhZGRyZXNzKQogICAgewogICAgICAgIHN0b3JlMzIoc3Jj
LCBhZGRyZXNzKTsKICAgIH0KCiAgICB2b2lkIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKICAgIHsKICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0z
MihpbW0pLCBhZGRyZXNzKTsKICAgIH0KCiAgICB2b2lkIHN0b3JlUHRyKEltbVB0ciBpbW0sIEFk
ZHJlc3MgYWRkcmVzcykKICAgIHsKICAgICAgICBzdG9yZTMyKEltbTMyKGltbS5hc1RydXN0ZWRJ
bW1QdHIoKSksIGFkZHJlc3MpOwogICAgfQoKICAgIHZvaWQgc3RvcmVQdHIoVHJ1c3RlZEltbVB0
ciBpbW0sIHZvaWQqIGFkZHJlc3MpCiAgICB7CiAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIo
aW1tKSwgYWRkcmVzcyk7CiAgICB9CgogICAgdm9pZCBzdG9yZVB0cihUcnVzdGVkSW1tMzIgaW1t
LCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKICAgIHsKICAgICAgICBzdG9yZTMyKGltbSwgYWRk
cmVzcyk7CiAgICB9CgogICAgdm9pZCBzdG9yZVB0cihUcnVzdGVkSW1tUHRyIGltbSwgQmFzZUlu
ZGV4IGFkZHJlc3MpCiAgICB7CiAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoaW1tKSwgYWRk
cmVzcyk7CiAgICB9CgogICAgRGF0YUxhYmVsMzIgc3RvcmVQdHJXaXRoQWRkcmVzc09mZnNldFBh
dGNoKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCiAgICB7CiAgICAgICAgcmV0dXJu
IHN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKHNyYywgYWRkcmVzcyk7CiAgICB9CgogICAg
SnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQs
IFJlZ2lzdGVySUQgcmlnaHQpCiAgICB7CiAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxl
ZnQsIHJpZ2h0KTsKICAgIH0KCiAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbVB0ciByaWdodCkKICAgIHsKICAgICAg
ICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgVHJ1c3RlZEltbTMyKHJpZ2h0KSk7CiAgICB9
CgogICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGxlZnQsIEltbVB0ciByaWdodCkKICAgIHsKICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwg
bGVmdCwgSW1tMzIocmlnaHQuYXNUcnVzdGVkSW1tUHRyKCkpKTsKICAgIH0KCiAgICBKdW1wIGJy
YW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgQWRkcmVz
cyByaWdodCkKICAgIHsKICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgcmlnaHQp
OwogICAgfQoKICAgIEp1bXAgYnJhbmNoUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRk
cmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQogICAgewogICAgICAgIHJldHVybiBicmFuY2gz
Mihjb25kLCBsZWZ0LCByaWdodCk7CiAgICB9CgogICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkK
ICAgIHsKICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgcmlnaHQpOwogICAgfQoK
ICAgIEp1bXAgYnJhbmNoUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0
LCBUcnVzdGVkSW1tUHRyIHJpZ2h0KQogICAgewogICAgICAgIHJldHVybiBicmFuY2gzMihjb25k
LCBsZWZ0LCBUcnVzdGVkSW1tMzIocmlnaHQpKTsKICAgIH0KCiAgICBKdW1wIGJyYW5jaFB0cihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1t
UHRyIHJpZ2h0KQogICAgewogICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBUcnVz
dGVkSW1tMzIocmlnaHQpKTsKICAgIH0KCiAgICBKdW1wIGJyYW5jaFN1YlB0cihSZXN1bHRDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAg
ICByZXR1cm4gYnJhbmNoU3ViMzIoY29uZCwgc3JjLCBkZXN0KTsKICAgIH0KCiAgICBKdW1wIGJy
YW5jaFRlc3RQdHIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBSZWdpc3Rl
cklEIG1hc2spCiAgICB7CiAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCByZWcsIG1h
c2spOwogICAgfQoKICAgIEp1bXAgYnJhbmNoVGVzdFB0cihSZXN1bHRDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCByZWcsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAg
IHsKICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIHJlZywgbWFzayk7CiAgICB9Cgog
ICAgSnVtcCBicmFuY2hUZXN0UHRyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJl
c3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgIHsKICAgICAgICBy
ZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3MsIG1hc2spOwogICAgfQoKICAgIEp1bXAg
YnJhbmNoVGVzdFB0cihSZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRy
dXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgIHsKICAgICAgICByZXR1cm4g
YnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3MsIG1hc2spOwogICAgfQoKICAgIEp1bXAgYnJhbmNo
QWRkUHRyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgewogICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBzcmMsIGRlc3QpOwog
ICAgfQoKICAgIEp1bXAgYnJhbmNoU3ViUHRyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgcmV0dXJuIGJyYW5jaFN1
YjMyKGNvbmQsIGltbSwgZGVzdCk7CiAgICB9CiAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6
OmJyYW5jaFRlc3Q4OwogICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwg
RXh0ZW5kZWRBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMy
KC0xKSkKICAgIHsKICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hUZXN0
OChjb25kLCBBZGRyZXNzKGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpLCBtYXNrKTsKICAg
IH0KIyAxMzUzICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmgiCiAgICB2b2lkIGxlYShBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgIHsKICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgYWRkcmVz
cy5iYXNlLCBkZXN0KTsKICAgIH0KCiAgICBib29sIHNob3VsZEJsaW5kKEltbTMyIGltbSkKICAg
IHsKIyAxMzY5ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmgiCiAgICAgICAgdWludDMyX3QgdmFsdWUgPSBpbW0uYXNUcnVzdGVkSW1tMzIoKS5t
X3ZhbHVlOwogICAgICAgIHN3aXRjaCAodmFsdWUpIHsKICAgICAgICBjYXNlIDB4ZmZmZjoKICAg
ICAgICBjYXNlIDB4ZmZmZmZmOgogICAgICAgIGNhc2UgMHhmZmZmZmZmZjoKICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGlmICh2YWx1ZSA8PSAw
eGZmKQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICBpZiAofnZhbHVl
IDw9IDB4ZmYpCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAg
ICBpZiAoIXNob3VsZENvbnNpZGVyQmxpbmRpbmcoKSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwoKICAgICAgICByZXR1cm4gc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godmFsdWUpOwoKICAg
IH0KCiAgICBzdHJ1Y3QgQmxpbmRlZEltbTMyIHsKICAgICAgICBCbGluZGVkSW1tMzIoaW50MzJf
dCB2MSwgaW50MzJfdCB2MikKICAgICAgICAgICAgOiB2YWx1ZTEodjEpCiAgICAgICAgICAgICwg
dmFsdWUyKHYyKQogICAgICAgIHsKICAgICAgICB9CiAgICAgICAgVHJ1c3RlZEltbTMyIHZhbHVl
MTsKICAgICAgICBUcnVzdGVkSW1tMzIgdmFsdWUyOwogICAgfTsKCiAgICB1aW50MzJfdCBrZXlG
b3JDb25zdGFudCh1aW50MzJfdCB2YWx1ZSwgdWludDMyX3QmIG1hc2spCiAgICB7CiAgICAgICAg
dWludDMyX3Qga2V5ID0gcmFuZG9tKCk7CiAgICAgICAgaWYgKHZhbHVlIDw9IDB4ZmYpCiAgICAg
ICAgICAgIG1hc2sgPSAweGZmOwogICAgICAgIGVsc2UgaWYgKHZhbHVlIDw9IDB4ZmZmZikKICAg
ICAgICAgICAgbWFzayA9IDB4ZmZmZjsKICAgICAgICBlbHNlIGlmICh2YWx1ZSA8PSAweGZmZmZm
ZikKICAgICAgICAgICAgbWFzayA9IDB4ZmZmZmZmOwogICAgICAgIGVsc2UKICAgICAgICAgICAg
bWFzayA9IDB4ZmZmZmZmZmY7CiAgICAgICAgcmV0dXJuIGtleSAmIG1hc2s7CiAgICB9CgogICAg
dWludDMyX3Qga2V5Rm9yQ29uc3RhbnQodWludDMyX3QgdmFsdWUpCiAgICB7CiAgICAgICAgdWlu
dDMyX3QgbWFzayA9IDA7CiAgICAgICAgcmV0dXJuIGtleUZvckNvbnN0YW50KHZhbHVlLCBtYXNr
KTsKICAgIH0KCiAgICBCbGluZGVkSW1tMzIgeG9yQmxpbmRDb25zdGFudChJbW0zMiBpbW0pCiAg
ICB7CiAgICAgICAgdWludDMyX3QgYmFzZVZhbHVlID0gaW1tLmFzVHJ1c3RlZEltbTMyKCkubV92
YWx1ZTsKICAgICAgICB1aW50MzJfdCBrZXkgPSBrZXlGb3JDb25zdGFudChiYXNlVmFsdWUpOwog
ICAgICAgIHJldHVybiBCbGluZGVkSW1tMzIoYmFzZVZhbHVlIF4ga2V5LCBrZXkpOwogICAgfQoK
ICAgIEJsaW5kZWRJbW0zMiBhZGRpdGlvbkJsaW5kZWRDb25zdGFudChJbW0zMiBpbW0pCiAgICB7
CgogICAgICAgIHN0YXRpYyB1aW50MzJfdCBtYXNrVGFibGVbNF0gPSB7IDB4ZmZmZmZmZmMsIDB4
ZmZmZmZmZmYsIDB4ZmZmZmZmZmUsIDB4ZmZmZmZmZmYgfTsKCiAgICAgICAgdWludDMyX3QgYmFz
ZVZhbHVlID0gaW1tLmFzVHJ1c3RlZEltbTMyKCkubV92YWx1ZTsKICAgICAgICB1aW50MzJfdCBr
ZXkgPSBrZXlGb3JDb25zdGFudChiYXNlVmFsdWUpICYgbWFza1RhYmxlW2Jhc2VWYWx1ZSAmIDNd
OwogICAgICAgIGlmIChrZXkgPiBiYXNlVmFsdWUpCiAgICAgICAgICAgIGtleSA9IGtleSAtIGJh
c2VWYWx1ZTsKICAgICAgICByZXR1cm4gQmxpbmRlZEltbTMyKGJhc2VWYWx1ZSAtIGtleSwga2V5
KTsKICAgIH0KCiAgICBCbGluZGVkSW1tMzIgYW5kQmxpbmRlZENvbnN0YW50KEltbTMyIGltbSkK
ICAgIHsKICAgICAgICB1aW50MzJfdCBiYXNlVmFsdWUgPSBpbW0uYXNUcnVzdGVkSW1tMzIoKS5t
X3ZhbHVlOwogICAgICAgIHVpbnQzMl90IG1hc2sgPSAwOwogICAgICAgIHVpbnQzMl90IGtleSA9
IGtleUZvckNvbnN0YW50KGJhc2VWYWx1ZSwgbWFzayk7CiAgICAgICAgKCh2b2lkKTApOwogICAg
ICAgIHJldHVybiBCbGluZGVkSW1tMzIoKChiYXNlVmFsdWUgJiBrZXkpIHwgfmtleSkgJiBtYXNr
LCAoKGJhc2VWYWx1ZSAmIH5rZXkpIHwga2V5KSAmIG1hc2spOwogICAgfQoKICAgIEJsaW5kZWRJ
bW0zMiBvckJsaW5kZWRDb25zdGFudChJbW0zMiBpbW0pCiAgICB7CiAgICAgICAgdWludDMyX3Qg
YmFzZVZhbHVlID0gaW1tLmFzVHJ1c3RlZEltbTMyKCkubV92YWx1ZTsKICAgICAgICB1aW50MzJf
dCBtYXNrID0gMDsKICAgICAgICB1aW50MzJfdCBrZXkgPSBrZXlGb3JDb25zdGFudChiYXNlVmFs
dWUsIG1hc2spOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gQmxpbmRlZEltbTMy
KChiYXNlVmFsdWUgJiBrZXkpICYgbWFzaywgKGJhc2VWYWx1ZSAmIH5rZXkpICYgbWFzayk7CiAg
ICB9CgogICAgdm9pZCBsb2FkWG9yQmxpbmRlZENvbnN0YW50KEJsaW5kZWRJbW0zMiBjb25zdGFu
dCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIG1vdmUoY29uc3RhbnQudmFsdWUxLCBk
ZXN0KTsKICAgICAgICB4b3IzMihjb25zdGFudC52YWx1ZTIsIGRlc3QpOwogICAgfQoKICAgIHZv
aWQgYWRkMzIoSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgaWYgKHNo
b3VsZEJsaW5kKGltbSkpIHsKICAgICAgICAgICAgQmxpbmRlZEltbTMyIGtleSA9IGFkZGl0aW9u
QmxpbmRlZENvbnN0YW50KGltbSk7CiAgICAgICAgICAgIGFkZDMyKGtleS52YWx1ZTEsIGRlc3Qp
OwogICAgICAgICAgICBhZGQzMihrZXkudmFsdWUyLCBkZXN0KTsKICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgYWRkMzIoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOwogICAgfQoKICAgIHZv
aWQgYWRkMzIoSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
ewogICAgICAgIGlmIChzaG91bGRCbGluZChpbW0pKSB7CiAgICAgICAgICAgIEJsaW5kZWRJbW0z
MiBrZXkgPSBhZGRpdGlvbkJsaW5kZWRDb25zdGFudChpbW0pOwogICAgICAgICAgICBhZGQzMihr
ZXkudmFsdWUxLCBzcmMsIGRlc3QpOwogICAgICAgICAgICBhZGQzMihrZXkudmFsdWUyLCBkZXN0
KTsKICAgICAgICB9IGVsc2UKICAgICAgICAgICAgYWRkMzIoaW1tLmFzVHJ1c3RlZEltbTMyKCks
IHNyYywgZGVzdCk7CiAgICB9CgogICAgdm9pZCBhZGRQdHIoSW1tMzIgaW1tLCBSZWdpc3RlcklE
IGRlc3QpCiAgICB7CiAgICAgICAgaWYgKHNob3VsZEJsaW5kKGltbSkpIHsKICAgICAgICAgICAg
QmxpbmRlZEltbTMyIGtleSA9IGFkZGl0aW9uQmxpbmRlZENvbnN0YW50KGltbSk7CiAgICAgICAg
ICAgIGFkZFB0cihrZXkudmFsdWUxLCBkZXN0KTsKICAgICAgICAgICAgYWRkUHRyKGtleS52YWx1
ZTIsIGRlc3QpOwogICAgICAgIH0gZWxzZQogICAgICAgICAgICBhZGRQdHIoaW1tLmFzVHJ1c3Rl
ZEltbTMyKCksIGRlc3QpOwogICAgfQoKICAgIHZvaWQgbXVsMzIoSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIGlmIChzaG91bGRCbGluZChp
bW0pKSB7CiAgICAgICAgICAgIGlmIChzcmMgIT0gZGVzdCB8fCBoYXZlU2NyYXRjaFJlZ2lzdGVy
Rm9yQmxpbmRpbmcoKSkgewogICAgICAgICAgICAgICAgaWYgKHNyYyA9PSBkZXN0KSB7CiAgICAg
ICAgICAgICAgICAgICAgbW92ZShzcmMsIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpOwog
ICAgICAgICAgICAgICAgICAgIHNyYyA9IHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCk7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsb2FkWG9yQmxpbmRlZENvbnN0YW50KHhv
ckJsaW5kQ29uc3RhbnQoaW1tKSwgZGVzdCk7CiAgICAgICAgICAgICAgICBtdWwzMihzcmMsIGRl
c3QpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgoKICAgICAgICAgICAg
dWludDMyX3Qgbm9wQ291bnQgPSByYW5kb20oKSAmIDM7CiAgICAgICAgICAgIHdoaWxlIChub3BD
b3VudC0tKQogICAgICAgICAgICAgICAgbm9wKCk7CiAgICAgICAgfQogICAgICAgIG11bDMyKGlt
bS5hc1RydXN0ZWRJbW0zMigpLCBzcmMsIGRlc3QpOwogICAgfQoKICAgIHZvaWQgYW5kMzIoSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgaWYgKHNob3VsZEJsaW5kKGlt
bSkpIHsKICAgICAgICAgICAgQmxpbmRlZEltbTMyIGtleSA9IGFuZEJsaW5kZWRDb25zdGFudChp
bW0pOwogICAgICAgICAgICBhbmQzMihrZXkudmFsdWUxLCBkZXN0KTsKICAgICAgICAgICAgYW5k
MzIoa2V5LnZhbHVlMiwgZGVzdCk7CiAgICAgICAgfSBlbHNlCiAgICAgICAgICAgIGFuZDMyKGlt
bS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsKICAgIH0KCiAgICB2b2lkIGFuZFB0cihJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBpZiAoc2hvdWxkQmxpbmQoaW1tKSkg
ewogICAgICAgICAgICBCbGluZGVkSW1tMzIga2V5ID0gYW5kQmxpbmRlZENvbnN0YW50KGltbSk7
CiAgICAgICAgICAgIGFuZFB0cihrZXkudmFsdWUxLCBkZXN0KTsKICAgICAgICAgICAgYW5kUHRy
KGtleS52YWx1ZTIsIGRlc3QpOwogICAgICAgIH0gZWxzZQogICAgICAgICAgICBhbmRQdHIoaW1t
LmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOwogICAgfQoKICAgIHZvaWQgYW5kMzIoSW1tMzIgaW1t
LCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIGlmIChzaG91
bGRCbGluZChpbW0pKSB7CiAgICAgICAgICAgIGlmIChzcmMgPT0gZGVzdCkKICAgICAgICAgICAg
ICAgIHJldHVybiBhbmQzMihpbW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7CiAgICAgICAgICAg
IGxvYWRYb3JCbGluZGVkQ29uc3RhbnQoeG9yQmxpbmRDb25zdGFudChpbW0pLCBkZXN0KTsKICAg
ICAgICAgICAgYW5kMzIoc3JjLCBkZXN0KTsKICAgICAgICB9IGVsc2UKICAgICAgICAgICAgYW5k
MzIoaW1tLmFzVHJ1c3RlZEltbTMyKCksIHNyYywgZGVzdCk7CiAgICB9CgogICAgdm9pZCBtb3Zl
KEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIGlmIChzaG91bGRCbGlu
ZChpbW0pKQogICAgICAgICAgICBsb2FkWG9yQmxpbmRlZENvbnN0YW50KHhvckJsaW5kQ29uc3Rh
bnQoaW1tKSwgZGVzdCk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBtb3ZlKGltbS5hc1RydXN0
ZWRJbW0zMigpLCBkZXN0KTsKICAgIH0KCiAgICB2b2lkIG9yMzIoSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIGlmIChzaG91bGRCbGluZChp
bW0pKSB7CiAgICAgICAgICAgIGlmIChzcmMgPT0gZGVzdCkKICAgICAgICAgICAgICAgIHJldHVy
biBvcjMyKGltbSwgZGVzdCk7CiAgICAgICAgICAgIGxvYWRYb3JCbGluZGVkQ29uc3RhbnQoeG9y
QmxpbmRDb25zdGFudChpbW0pLCBkZXN0KTsKICAgICAgICAgICAgb3IzMihzcmMsIGRlc3QpOwog
ICAgICAgIH0gZWxzZQogICAgICAgICAgICBvcjMyKGltbS5hc1RydXN0ZWRJbW0zMigpLCBzcmMs
IGRlc3QpOwogICAgfQoKICAgIHZvaWQgb3IzMihJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkK
ICAgIHsKICAgICAgICBpZiAoc2hvdWxkQmxpbmQoaW1tKSkgewogICAgICAgICAgICBCbGluZGVk
SW1tMzIga2V5ID0gb3JCbGluZGVkQ29uc3RhbnQoaW1tKTsKICAgICAgICAgICAgb3IzMihrZXku
dmFsdWUxLCBkZXN0KTsKICAgICAgICAgICAgb3IzMihrZXkudmFsdWUyLCBkZXN0KTsKICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgb3IzMihpbW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7CiAg
ICB9CgogICAgdm9pZCBwb2tlKEltbTMyIHZhbHVlLCBpbnQgaW5kZXggPSAwKQogICAgewogICAg
ICAgIHN0b3JlMzIodmFsdWUsIGFkZHJlc3NGb3JQb2tlKGluZGV4KSk7CiAgICB9CgogICAgdm9p
ZCBwb2tlKEltbVB0ciB2YWx1ZSwgaW50IGluZGV4ID0gMCkKICAgIHsKICAgICAgICBzdG9yZVB0
cih2YWx1ZSwgYWRkcmVzc0ZvclBva2UoaW5kZXgpKTsKICAgIH0KIyAxNTkwICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgiCiAgICB2b2lkIHN0
b3JlMzIoSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCiAgICB7CiAgICAgICAgaWYgKHNob3VsZEJs
aW5kKGltbSkpIHsKCgoKCgogICAgICAgICAgICBpZiAoaGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJs
aW5kaW5nKCkpIHsKICAgICAgICAgICAgICAgIGxvYWRYb3JCbGluZGVkQ29uc3RhbnQoeG9yQmxp
bmRDb25zdGFudChpbW0pLCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKICAgICAgICAg
ICAgICAgIHN0b3JlMzIoc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSwgZGVzdCk7CiAgICAg
ICAgICAgIH0gZWxzZSB7CgoKICAgICAgICAgICAgICAgIHVpbnQzMl90IG5vcENvdW50ID0gcmFu
ZG9tKCkgJiAzOwogICAgICAgICAgICAgICAgd2hpbGUgKG5vcENvdW50LS0pCiAgICAgICAgICAg
ICAgICAgICAgbm9wKCk7CiAgICAgICAgICAgICAgICBzdG9yZTMyKGltbS5hc1RydXN0ZWRJbW0z
MigpLCBkZXN0KTsKICAgICAgICAgICAgfQoKICAgICAgICB9IGVsc2UKICAgICAgICAgICAgc3Rv
cmUzMihpbW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7CiAgICB9CgogICAgdm9pZCBzdWIzMihJ
bW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICBpZiAoc2hvdWxkQmxpbmQo
aW1tKSkgewogICAgICAgICAgICBCbGluZGVkSW1tMzIga2V5ID0gYWRkaXRpb25CbGluZGVkQ29u
c3RhbnQoaW1tKTsKICAgICAgICAgICAgc3ViMzIoa2V5LnZhbHVlMSwgZGVzdCk7CiAgICAgICAg
ICAgIHN1YjMyKGtleS52YWx1ZTIsIGRlc3QpOwogICAgICAgIH0gZWxzZQogICAgICAgICAgICBz
dWIzMihpbW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7CiAgICB9CgogICAgdm9pZCBzdWJQdHIo
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgaWYgKHNob3VsZEJsaW5k
KGltbSkpIHsKICAgICAgICAgICAgQmxpbmRlZEltbTMyIGtleSA9IGFkZGl0aW9uQmxpbmRlZENv
bnN0YW50KGltbSk7CiAgICAgICAgICAgIHN1YlB0cihrZXkudmFsdWUxLCBkZXN0KTsKICAgICAg
ICAgICAgc3ViUHRyKGtleS52YWx1ZTIsIGRlc3QpOwogICAgICAgIH0gZWxzZQogICAgICAgICAg
ICBzdWJQdHIoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOwogICAgfQoKICAgIHZvaWQgeG9y
MzIoSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAg
ICAgIGlmIChzaG91bGRCbGluZChpbW0pKSB7CiAgICAgICAgICAgIEJsaW5kZWRJbW0zMiBibGlu
ZCA9IHhvckJsaW5kQ29uc3RhbnQoaW1tKTsKICAgICAgICAgICAgeG9yMzIoYmxpbmQudmFsdWUx
LCBzcmMsIGRlc3QpOwogICAgICAgICAgICB4b3IzMihibGluZC52YWx1ZTIsIGRlc3QpOwogICAg
ICAgIH0gZWxzZQogICAgICAgICAgICB4b3IzMihpbW0uYXNUcnVzdGVkSW1tMzIoKSwgc3JjLCBk
ZXN0KTsKICAgIH0KCiAgICB2b2lkIHhvcjMyKEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgewogICAgICAgIGlmIChzaG91bGRCbGluZChpbW0pKSB7CiAgICAgICAgICAgIEJsaW5kZWRJ
bW0zMiBibGluZCA9IHhvckJsaW5kQ29uc3RhbnQoaW1tKTsKICAgICAgICAgICAgeG9yMzIoYmxp
bmQudmFsdWUxLCBkZXN0KTsKICAgICAgICAgICAgeG9yMzIoYmxpbmQudmFsdWUyLCBkZXN0KTsK
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgeG9yMzIoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRl
c3QpOwogICAgfQoKICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0KQogICAgewogICAgICAgIGlmIChzaG91bGRCbGlu
ZChyaWdodCkpIHsKICAgICAgICAgICAgaWYgKGhhdmVTY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGlu
ZygpKSB7CiAgICAgICAgICAgICAgICBsb2FkWG9yQmxpbmRlZENvbnN0YW50KHhvckJsaW5kQ29u
c3RhbnQocmlnaHQpLCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKICAgICAgICAgICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGlu
ZygpKTsKICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIHVpbnQzMl90IG5vcENvdW50ID0gcmFu
ZG9tKCkgJiAzOwogICAgICAgICAgICB3aGlsZSAobm9wQ291bnQtLSkKICAgICAgICAgICAgICAg
IG5vcCgpOwogICAgICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgcmlnaHQuYXNU
cnVzdGVkSW1tMzIoKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwg
bGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tMzIoKSk7CiAgICB9CgogICAgdm9pZCBjb21wYXJlMzIo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0LCBS
ZWdpc3RlcklEIGRlc3QpCiAgICB7CiAgICAgICAgaWYgKHNob3VsZEJsaW5kKHJpZ2h0KSkgewog
ICAgICAgICAgICBpZiAobGVmdCAhPSBkZXN0IHx8IGhhdmVTY3JhdGNoUmVnaXN0ZXJGb3JCbGlu
ZGluZygpKSB7CiAgICAgICAgICAgICAgICBSZWdpc3RlcklEIGJsaW5kZWRDb25zdGFudFJlZyA9
IGRlc3Q7CiAgICAgICAgICAgICAgICBpZiAobGVmdCA9PSBkZXN0KQogICAgICAgICAgICAgICAg
ICAgIGJsaW5kZWRDb25zdGFudFJlZyA9IHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCk7CiAg
ICAgICAgICAgICAgICBsb2FkWG9yQmxpbmRlZENvbnN0YW50KHhvckJsaW5kQ29uc3RhbnQocmln
aHQpLCBibGluZGVkQ29uc3RhbnRSZWcpOwogICAgICAgICAgICAgICAgY29tcGFyZTMyKGNvbmQs
IGxlZnQsIGJsaW5kZWRDb25zdGFudFJlZywgZGVzdCk7CiAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgIH0KCgogICAgICAgICAgICB1aW50MzJfdCBub3BDb3VudCA9IHJhbmRvbSgp
ICYgMzsKICAgICAgICAgICAgd2hpbGUgKG5vcENvdW50LS0pCiAgICAgICAgICAgICAgICBub3Ao
KTsKICAgICAgICAgICAgY29tcGFyZTMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMy
KCksIGRlc3QpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBjb21wYXJl
MzIoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7CiAgICB9CgogICAg
SnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIGlmIChzaG91bGRCbGluZChp
bW0pKSB7CiAgICAgICAgICAgIGlmIChzcmMgIT0gZGVzdCB8fCBoYXZlU2NyYXRjaFJlZ2lzdGVy
Rm9yQmxpbmRpbmcoKSkgewogICAgICAgICAgICAgICAgaWYgKHNyYyA9PSBkZXN0KSB7CiAgICAg
ICAgICAgICAgICAgICAgbW92ZShzcmMsIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpOwog
ICAgICAgICAgICAgICAgICAgIHNyYyA9IHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCk7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsb2FkWG9yQmxpbmRlZENvbnN0YW50KHhv
ckJsaW5kQ29uc3RhbnQoaW1tKSwgZGVzdCk7CiAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNo
QWRkMzIoY29uZCwgc3JjLCBkZXN0KTsKICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIHVpbnQz
Ml90IG5vcENvdW50ID0gcmFuZG9tKCkgJiAzOwogICAgICAgICAgICB3aGlsZSAobm9wQ291bnQt
LSkKICAgICAgICAgICAgICAgIG5vcCgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYnJhbmNo
QWRkMzIoY29uZCwgc3JjLCBpbW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7CiAgICB9CgogICAg
SnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIGlmIChzcmMgPT0gZGVzdCkK
ICAgICAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICBpZiAoc2hvdWxkQmxpbmQoaW1tKSkgewog
ICAgICAgICAgICBpZiAoc3JjID09IGRlc3QpIHsKICAgICAgICAgICAgICAgIG1vdmUoc3JjLCBz
Y3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsKICAgICAgICAgICAgICAgIHNyYyA9IHNjcmF0
Y2hSZWdpc3RlckZvckJsaW5kaW5nKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbG9hZFhv
ckJsaW5kZWRDb25zdGFudCh4b3JCbGluZENvbnN0YW50KGltbSksIGRlc3QpOwogICAgICAgICAg
ICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgc3JjLCBkZXN0KTsKICAgICAgICB9CiAgICAgICAg
cmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIHNyYywgaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3Qp
OwogICAgfQoKCgogICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBzcmMsIEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0
Y2gpCiAgICB7CiAgICAgICAgaWYgKHNob3VsZEJsaW5kKGltbSkpIHsKICAgICAgICAgICAgKCh2
b2lkKTApOwogICAgICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgICAgIGxvYWRYb3JCbGluZGVk
Q29uc3RhbnQoeG9yQmxpbmRDb25zdGFudChpbW0pLCBzY3JhdGNoKTsKICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaFN1YjMyKGNvbmQsIHNyYywgc2NyYXRjaCwgZGVzdCk7CiAgICAgICAgfQogICAg
ICAgIHJldHVybiBicmFuY2hTdWIzMihjb25kLCBzcmMsIGltbS5hc1RydXN0ZWRJbW0zMigpLCBk
ZXN0KTsKICAgIH0KCiAgICB2b2lkIGxzaGlmdDMyKEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgewogICAgICAgIGxzaGlmdDMyKHRydXN0ZWRJbW0zMkZvclNoaWZ0KGltbSksIGRlc3Qp
OwogICAgfQoKICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIEltbTMyIGFtb3VudCwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIGxzaGlmdDMyKHNyYywgdHJ1c3RlZEltbTMy
Rm9yU2hpZnQoYW1vdW50KSwgZGVzdCk7CiAgICB9CgogICAgdm9pZCByc2hpZnQzMihJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICByc2hpZnQzMih0cnVzdGVkSW1tMzJG
b3JTaGlmdChpbW0pLCBkZXN0KTsKICAgIH0KCiAgICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVySUQg
c3JjLCBJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKICAgIHsKICAgICAgICByc2hpZnQz
MihzcmMsIHRydXN0ZWRJbW0zMkZvclNoaWZ0KGFtb3VudCksIGRlc3QpOwogICAgfQoKICAgIHZv
aWQgdXJzaGlmdDMyKEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgewogICAgICAgIHVy
c2hpZnQzMih0cnVzdGVkSW1tMzJGb3JTaGlmdChpbW0pLCBkZXN0KTsKICAgIH0KCiAgICB2b2lk
IHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgSW1tMzIgYW1vdW50LCBSZWdpc3RlcklEIGRlc3Qp
CiAgICB7CiAgICAgICAgdXJzaGlmdDMyKHNyYywgdHJ1c3RlZEltbTMyRm9yU2hpZnQoYW1vdW50
KSwgZGVzdCk7CiAgICB9CiMgMTc4NCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlci5oIgp9OwoKfQoKbmFtZXNwYWNlIFdURiB7CgpjbGFzcyBQcmlu
dFN0cmVhbTsKCnZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6TWFjcm9Bc3Nl
bWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwp2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mLCBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZXN1bHRDb25kaXRpb24pOwp2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24p
OwoKfQojIDMxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXNpY0Jsb2Nr
TG9jYXRpb24uaCIgMgoKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBDQ2FsbEhlbHBlcnM7CmNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKCmNsYXNzIEJhc2ljQmxvY2tMb2NhdGlvbiB7CnB1
YmxpYzoKICAgIHR5cGVkZWYgc3RkOjpwYWlyPGludCwgaW50PiBHYXA7CgogICAgQmFzaWNCbG9j
a0xvY2F0aW9uKGludCBzdGFydE9mZnNldCA9IC0xLCBpbnQgZW5kT2Zmc2V0ID0gLTEpOwoKICAg
IGludCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7IH0KICAgIGlu
dCBlbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2VuZE9mZnNldDsgfQogICAgdm9pZCBzZXRT
dGFydE9mZnNldChpbnQgc3RhcnRPZmZzZXQpIHsgbV9zdGFydE9mZnNldCA9IHN0YXJ0T2Zmc2V0
OyB9CiAgICB2b2lkIHNldEVuZE9mZnNldChpbnQgZW5kT2Zmc2V0KSB7IG1fZW5kT2Zmc2V0ID0g
ZW5kT2Zmc2V0OyB9CiAgICBib29sIGhhc0V4ZWN1dGVkKCkgY29uc3QgeyByZXR1cm4gbV9leGVj
dXRpb25Db3VudCA+IDA7IH0KICAgIHNpemVfdCBleGVjdXRpb25Db3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZXhlY3V0aW9uQ291bnQ7IH0KICAgIHZvaWQgaW5zZXJ0R2FwKGludCwgaW50KTsKICAg
IFZlY3RvcjxHYXA+IGdldEV4ZWN1dGVkUmFuZ2VzKCkgY29uc3Q7CiAgICB2b2lkIGR1bXBEYXRh
KCkgY29uc3Q7CgoKCgogICAgdm9pZCBlbWl0RXhlY3V0ZUNvZGUoQ0NhbGxIZWxwZXJzJiwgTWFj
cm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgc2NyYXRjaCkgY29uc3Q7CgoKCnByaXZhdGU6CiAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwoKICAgIGludCBtX3N0YXJ0T2Zmc2V0
OwogICAgaW50IG1fZW5kT2Zmc2V0OwogICAgc2l6ZV90IG1fZXhlY3V0aW9uQ291bnQ7CiAgICBW
ZWN0b3I8R2FwPiBtX2dhcHM7Cn07Cgp9CiMgMzEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIuaCIgMgoKIyAxICIuLi8uLi9Tb3VyY2UvV1RG
L3d0Zi9IYXNoTWV0aG9kLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL1dURi93dGYvSGFzaE1ldGhv
ZC5oIgojZGVmaW5lIEhhc2hNZXRob2RfaCAKCgoKbmFtZXNwYWNlIFdURiB7Cgp0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgpzdHJ1Y3QgSGFzaE1ldGhvZCB7CiAgICBzaXplX3Qgb3BlcmF0b3IoKShjb25z
dCBUJiB2YWx1ZSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gdmFsdWUuaGFzaCgpOwogICAg
fQp9OwoKfQoKdXNpbmcgV1RGOjpIYXNoTWV0aG9kOwojIDMzICIuLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db250cm9sRmxvd1Byb2ZpbGVyLmgiIDIKCm5hbWVzcGFjZSBKU0Mg
ewoKY2xhc3MgVk07CgpzdHJ1Y3QgQmFzaWNCbG9ja0tleSB7CiAgICBCYXNpY0Jsb2NrS2V5KCkK
ICAgICAgICA6IG1fc3RhcnRPZmZzZXQoLTMpCiAgICAgICAgLCBtX2VuZE9mZnNldCgtMykKICAg
IHsgfQoKICAgIEJhc2ljQmxvY2tLZXkoaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQog
ICAgICAgIDogbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKICAgICAgICAsIG1fZW5kT2Zmc2V0
KGVuZE9mZnNldCkKICAgIHsgfQoKICAgIEJhc2ljQmxvY2tLZXkoV1RGOjpIYXNoVGFibGVEZWxl
dGVkVmFsdWVUeXBlKQogICAgICAgIDogbV9zdGFydE9mZnNldCgtMikKICAgICAgICAsIG1fZW5k
T2Zmc2V0KC0yKQogICAgeyB9CgogICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQgPT0gLTIgJiYgbV9lbmRPZmZzZXQgPT0gLTI7IH0K
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCYXNpY0Jsb2NrS2V5JiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gbV9zdGFydE9mZnNldCA9PSBvdGhlci5tX3N0YXJ0T2Zmc2V0ICYmIG1fZW5kT2Zmc2V0
ID09IG90aGVyLm1fZW5kT2Zmc2V0OyB9CiAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1
cm4gbV9zdGFydE9mZnNldCArIG1fZW5kT2Zmc2V0ICsgMTsgfQoKICAgIGludCBtX3N0YXJ0T2Zm
c2V0OwogICAgaW50IG1fZW5kT2Zmc2V0Owp9OwoKc3RydWN0IEJhc2ljQmxvY2tLZXlIYXNoIHsK
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEJhc2ljQmxvY2tLZXkmIGtleSkgeyByZXR1
cm4ga2V5Lmhhc2goKTsgfQogICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQmFzaWNCbG9ja0tl
eSYgYSwgY29uc3QgQmFzaWNCbG9ja0tleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9CiAgICBzdGF0
aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cn07Cgp9
CgpuYW1lc3BhY2UgV1RGIHsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFz
aDsKdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpCYXNpY0Jsb2NrS2V5PiB7CiAg
ICB0eXBlZGVmIEpTQzo6QmFzaWNCbG9ja0tleUhhc2ggSGFzaDsKfTsKCnRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzOwp0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpT
Qzo6QmFzaWNCbG9ja0tleT4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpCYXNpY0Jsb2Nr
S2V5PiB7CiAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7Cn07
Cgp9CgpuYW1lc3BhY2UgSlNDIHsKCnN0cnVjdCBCYXNpY0Jsb2NrUmFuZ2UgewogICAgaW50IG1f
c3RhcnRPZmZzZXQ7CiAgICBpbnQgbV9lbmRPZmZzZXQ7CiAgICBib29sIG1faGFzRXhlY3V0ZWQ7
CiAgICBzaXplX3QgbV9leGVjdXRpb25Db3VudDsKfTsKCmNsYXNzIENvbnRyb2xGbG93UHJvZmls
ZXIgewogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJl
dHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0
TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZh
c3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6
OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHAp
IHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51
bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHBy
aXZhdGU6IHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlz
TWFjcm87CnB1YmxpYzoKICAgIENvbnRyb2xGbG93UHJvZmlsZXIoKTsKICAgIH5Db250cm9sRmxv
d1Byb2ZpbGVyKCk7CiAgICBCYXNpY0Jsb2NrTG9jYXRpb24qIGdldEJhc2ljQmxvY2tMb2NhdGlv
bihpbnRwdHJfdCBzb3VyY2VJRCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsKICAg
IHZvaWQgZHVtcERhdGEoKSBjb25zdDsKICAgIFZlY3RvcjxCYXNpY0Jsb2NrUmFuZ2U+IGdldEJh
c2ljQmxvY2tzRm9yU291cmNlSUQoaW50cHRyX3Qgc291cmNlSUQsIFZNJikgY29uc3Q7CiAgICBC
YXNpY0Jsb2NrTG9jYXRpb24qIGR1bW15QmFzaWNCbG9jaygpIHsgcmV0dXJuICZtX2R1bW15QmFz
aWNCbG9jazsgfQogICAgYm9vbCBoYXNCYXNpY0Jsb2NrQXRUZXh0T2Zmc2V0QmVlbkV4ZWN1dGVk
KGludCwgaW50cHRyX3QsIFZNJik7CiAgICBzaXplX3QgYmFzaWNCbG9ja0V4ZWN1dGlvbkNvdW50
QXRUZXh0T2Zmc2V0KGludCwgaW50cHRyX3QsIFZNJik7Cgpwcml2YXRlOgogICAgdHlwZWRlZiBI
YXNoTWFwPEJhc2ljQmxvY2tLZXksIEJhc2ljQmxvY2tMb2NhdGlvbio+IEJsb2NrTG9jYXRpb25D
YWNoZTsKICAgIHR5cGVkZWYgSGFzaE1hcDxpbnRwdHJfdCwgQmxvY2tMb2NhdGlvbkNhY2hlPiBT
b3VyY2VJREJ1Y2tldHM7CgogICAgU291cmNlSURCdWNrZXRzIG1fc291cmNlSURCdWNrZXRzOwog
ICAgQmFzaWNCbG9ja0xvY2F0aW9uIG1fZHVtbXlCYXNpY0Jsb2NrOwp9OwoKfQojIDM0ICIuLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIiAyCiMgMSAiLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlQ2FjaGUuaCIgMQojIDI3ICIuLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2VDYWNoZS5oIgojZGVm
aW5lIERhdGVJbnN0YW5jZUNhY2hlX2ggCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCIgMQojIDMwICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlSW5zdGFuY2VDYWNoZS5oIiAyCiMgMSAiLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5oIiAxCiMgNDQgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguaCIKI2RlZmluZSBKU0RhdGVNYXRoX2ggCgoj
IDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgiIDEKIyA0NCAiLi4vLi4vU291cmNl
L1dURi93dGYvRGF0ZU1hdGguaCIKI2RlZmluZSBEYXRlTWF0aF9oIAojIDU0ICIuLi8uLi9Tb3Vy
Y2UvV1RGL3d0Zi9EYXRlTWF0aC5oIgpuYW1lc3BhY2UgV1RGIHsKCmVudW0gVGltZVR5cGUgewog
ICAgVVRDVGltZSA9IDAsCiAgICBMb2NhbFRpbWUKfTsKCnN0cnVjdCBMb2NhbFRpbWVPZmZzZXQg
ewogICAgTG9jYWxUaW1lT2Zmc2V0KCkKICAgICAgICA6IGlzRFNUKGZhbHNlKQogICAgICAgICwg
b2Zmc2V0KDApCiAgICB7CiAgICB9CgogICAgTG9jYWxUaW1lT2Zmc2V0KGJvb2wgaXNEU1QsIGlu
dCBvZmZzZXQpCiAgICAgICAgOiBpc0RTVChpc0RTVCkKICAgICAgICAsIG9mZnNldChvZmZzZXQp
CiAgICB7CiAgICB9CgogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExvY2FsVGltZU9mZnNldCYg
b3RoZXIpCiAgICB7CiAgICAgICAgcmV0dXJuIGlzRFNUID09IG90aGVyLmlzRFNUICYmIG9mZnNl
dCA9PSBvdGhlci5vZmZzZXQ7CiAgICB9CgogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExvY2Fs
VGltZU9mZnNldCYgb3RoZXIpCiAgICB7CiAgICAgICAgcmV0dXJuIGlzRFNUICE9IG90aGVyLmlz
RFNUIHx8IG9mZnNldCAhPSBvdGhlci5vZmZzZXQ7CiAgICB9CgogICAgYm9vbCBpc0RTVDsKICAg
IGludCBvZmZzZXQ7Cn07Cgp2b2lkIGluaXRpYWxpemVEYXRlcygpOwppbnQgZXF1aXZhbGVudFll
YXJGb3JEU1QoaW50IHllYXIpOwoKCiBkb3VibGUgcGFyc2VFUzVEYXRlRnJvbU51bGxUZXJtaW5h
dGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKIGRvdWJsZSBwYXJzZURhdGVG
cm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpOwogZG91
YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0
ZVN0cmluZywgYm9vbCYgaGF2ZVRaLCBpbnQmIG9mZnNldCk7CiBkb3VibGUgdGltZUNsaXAoZG91
YmxlKTsKClN0cmluZyBtYWtlUkZDMjgyMkRhdGVTdHJpbmcodW5zaWduZWQgZGF5T2ZXZWVrLCB1
bnNpZ25lZCBkYXksIHVuc2lnbmVkIG1vbnRoLCB1bnNpZ25lZCB5ZWFyLCB1bnNpZ25lZCBob3Vy
cywgdW5zaWduZWQgbWludXRlcywgdW5zaWduZWQgc2Vjb25kcywgaW50IHV0Y09mZnNldCk7Cgpp
bmxpbmUgZG91YmxlIGpzQ3VycmVudFRpbWUoKQp7CgogICAgcmV0dXJuIGZsb29yKFdURjo6Y3Vy
cmVudFRpbWVNUygpKTsKfQoKY29uc3QgY2hhciogY29uc3Qgd2Vla2RheU5hbWVbN10gPSB7ICJN
b24iLCAiVHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCIsICJTdW4iIH07CmNvbnN0IGNo
YXIqIGNvbnN0IG1vbnRoTmFtZVsxMl0gPSB7ICJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAi
TWF5IiwgIkp1biIsICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyIgfTsK
Y29uc3QgY2hhciogY29uc3QgbW9udGhGdWxsTmFtZVsxMl0gPSB7ICJKYW51YXJ5IiwgIkZlYnJ1
YXJ5IiwgIk1hcmNoIiwgIkFwcmlsIiwgIk1heSIsICJKdW5lIiwgIkp1bHkiLCAiQXVndXN0Iiwg
IlNlcHRlbWJlciIsICJPY3RvYmVyIiwgIk5vdmVtYmVyIiwgIkRlY2VtYmVyIiB9OwoKY29uc3Qg
ZG91YmxlIGhvdXJzUGVyRGF5ID0gMjQuMDsKY29uc3QgZG91YmxlIG1pbnV0ZXNQZXJIb3VyID0g
NjAuMDsKY29uc3QgZG91YmxlIHNlY29uZHNQZXJNaW51dGUgPSA2MC4wOwpjb25zdCBkb3VibGUg
bXNQZXJTZWNvbmQgPSAxMDAwLjA7CmNvbnN0IGRvdWJsZSBtc1Blck1vbnRoID0gMjU5MjAwMDAw
MC4wOwpjb25zdCBkb3VibGUgc2Vjb25kc1BlckhvdXIgPSBzZWNvbmRzUGVyTWludXRlICogbWlu
dXRlc1BlckhvdXI7CmNvbnN0IGRvdWJsZSBzZWNvbmRzUGVyRGF5ID0gc2Vjb25kc1BlckhvdXIg
KiBob3Vyc1BlckRheTsKY29uc3QgZG91YmxlIG1zUGVyTWludXRlID0gbXNQZXJTZWNvbmQgKiBz
ZWNvbmRzUGVyTWludXRlOwpjb25zdCBkb3VibGUgbXNQZXJIb3VyID0gbXNQZXJTZWNvbmQgKiBz
ZWNvbmRzUGVySG91cjsKY29uc3QgZG91YmxlIG1zUGVyRGF5ID0gbXNQZXJTZWNvbmQgKiBzZWNv
bmRzUGVyRGF5OwoKIGJvb2wgaXNMZWFwWWVhcihpbnQgeWVhcik7CgoKIGRvdWJsZSBkYXRlVG9E
YXlzRnJvbTE5NzAoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSk7CiBpbnQgbXNUb1llYXIo
ZG91YmxlIG1zKTsKIGRvdWJsZSBtc1RvRGF5cyhkb3VibGUgbXMpOwogaW50IG1zVG9NaW51dGVz
KGRvdWJsZSBtcyk7CiBpbnQgbXNUb0hvdXJzKGRvdWJsZSBtcyk7CiBpbnQgZGF5SW5ZZWFyKGlu
dCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpOwogaW50IGRheUluWWVhcihkb3VibGUgbXMsIGlu
dCB5ZWFyKTsKIGludCBtb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFw
WWVhcik7CiBpbnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBs
ZWFwWWVhcik7CgoKIExvY2FsVGltZU9mZnNldCBjYWxjdWxhdGVMb2NhbFRpbWVPZmZzZXQoZG91
YmxlIHV0Y0luTWlsbGlzZWNvbmRzLCBUaW1lVHlwZSA9IFVUQ1RpbWUpOwoKfQoKdXNpbmcgV1RG
Ojppc0xlYXBZZWFyOwp1c2luZyBXVEY6OmRhdGVUb0RheXNGcm9tMTk3MDsKdXNpbmcgV1RGOjpk
YXlJbk1vbnRoRnJvbURheUluWWVhcjsKdXNpbmcgV1RGOjpkYXlJblllYXI7CnVzaW5nIFdURjo6
bWludXRlc1BlckhvdXI7CnVzaW5nIFdURjo6bW9udGhGcm9tRGF5SW5ZZWFyOwp1c2luZyBXVEY6
Om1zUGVyRGF5Owp1c2luZyBXVEY6Om1zUGVySG91cjsKdXNpbmcgV1RGOjptc1Blck1pbnV0ZTsK
dXNpbmcgV1RGOjptc1BlclNlY29uZDsKdXNpbmcgV1RGOjptc1RvWWVhcjsKdXNpbmcgV1RGOjpt
c1RvRGF5czsKdXNpbmcgV1RGOjptc1RvTWludXRlczsKdXNpbmcgV1RGOjptc1RvSG91cnM7CnVz
aW5nIFdURjo6c2Vjb25kc1BlckRheTsKdXNpbmcgV1RGOjpzZWNvbmRzUGVyTWludXRlOwp1c2lu
ZyBXVEY6OnBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnM7CnVzaW5nIFdURjo6
bWFrZVJGQzI4MjJEYXRlU3RyaW5nOwp1c2luZyBXVEY6OkxvY2FsVGltZU9mZnNldDsKdXNpbmcg
V1RGOjpjYWxjdWxhdGVMb2NhbFRpbWVPZmZzZXQ7CiMgNDcgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3Rm
L0dyZWdvcmlhbkRhdGVUaW1lLmgiIDEKIyAyNiAiLi4vLi4vU291cmNlL1dURi93dGYvR3JlZ29y
aWFuRGF0ZVRpbWUuaCIKI2RlZmluZSBXVEZfR3JlZ29yaWFuRGF0ZVRpbWVfaCAKCgoKCgpuYW1l
c3BhY2UgV1RGIHsKCmNsYXNzIEdyZWdvcmlhbkRhdGVUaW1lIHsKICAgIHByaXZhdGU6IEdyZWdv
cmlhbkRhdGVUaW1lKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJikgPSBkZWxldGU7IEdyZWdvcmlh
bkRhdGVUaW1lJiBvcGVyYXRvcj0oY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmKSA9IGRlbGV0ZTs7
CnB1YmxpYzoKICAgIEdyZWdvcmlhbkRhdGVUaW1lKCkKICAgICAgICA6IG1feWVhcigwKQogICAg
ICAgICwgbV9tb250aCgwKQogICAgICAgICwgbV95ZWFyRGF5KDApCiAgICAgICAgLCBtX21vbnRo
RGF5KDApCiAgICAgICAgLCBtX3dlZWtEYXkoMCkKICAgICAgICAsIG1faG91cigwKQogICAgICAg
ICwgbV9taW51dGUoMCkKICAgICAgICAsIG1fc2Vjb25kKDApCiAgICAgICAgLCBtX3V0Y09mZnNl
dCgwKQogICAgICAgICwgbV9pc0RTVCgwKQogICAgewogICAgfQoKICAgIGlubGluZSBpbnQgeWVh
cigpIGNvbnN0IHsgcmV0dXJuIG1feWVhcjsgfQogICAgaW5saW5lIGludCBtb250aCgpIGNvbnN0
IHsgcmV0dXJuIG1fbW9udGg7IH0KICAgIGlubGluZSBpbnQgeWVhckRheSgpIGNvbnN0IHsgcmV0
dXJuIG1feWVhckRheTsgfQogICAgaW5saW5lIGludCBtb250aERheSgpIGNvbnN0IHsgcmV0dXJu
IG1fbW9udGhEYXk7IH0KICAgIGlubGluZSBpbnQgd2Vla0RheSgpIGNvbnN0IHsgcmV0dXJuIG1f
d2Vla0RheTsgfQogICAgaW5saW5lIGludCBob3VyKCkgY29uc3QgeyByZXR1cm4gbV9ob3VyOyB9
CiAgICBpbmxpbmUgaW50IG1pbnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWludXRlOyB9CiAgICBp
bmxpbmUgaW50IHNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vjb25kOyB9CiAgICBpbmxpbmUg
aW50IHV0Y09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdXRjT2Zmc2V0OyB9CiAgICBpbmxpbmUg
aW50IGlzRFNUKCkgY29uc3QgeyByZXR1cm4gbV9pc0RTVDsgfQoKICAgIGlubGluZSB2b2lkIHNl
dFllYXIoaW50IHllYXIpIHsgbV95ZWFyID0geWVhcjsgfQogICAgaW5saW5lIHZvaWQgc2V0TW9u
dGgoaW50IG1vbnRoKSB7IG1fbW9udGggPSBtb250aDsgfQogICAgaW5saW5lIHZvaWQgc2V0WWVh
ckRheShpbnQgeWVhckRheSkgeyBtX3llYXJEYXkgPSB5ZWFyRGF5OyB9CiAgICBpbmxpbmUgdm9p
ZCBzZXRNb250aERheShpbnQgbW9udGhEYXkpIHsgbV9tb250aERheSA9IG1vbnRoRGF5OyB9CiAg
ICBpbmxpbmUgdm9pZCBzZXRXZWVrRGF5KGludCB3ZWVrRGF5KSB7IG1fd2Vla0RheSA9IHdlZWtE
YXk7IH0KICAgIGlubGluZSB2b2lkIHNldEhvdXIoaW50IGhvdXIpIHsgbV9ob3VyID0gaG91cjsg
fQogICAgaW5saW5lIHZvaWQgc2V0TWludXRlKGludCBtaW51dGUpIHsgbV9taW51dGUgPSBtaW51
dGU7IH0KICAgIGlubGluZSB2b2lkIHNldFNlY29uZChpbnQgc2Vjb25kKSB7IG1fc2Vjb25kID0g
c2Vjb25kOyB9CiAgICBpbmxpbmUgdm9pZCBzZXRVdGNPZmZzZXQoaW50IHV0Y09mZnNldCkgeyBt
X3V0Y09mZnNldCA9IHV0Y09mZnNldDsgfQogICAgaW5saW5lIHZvaWQgc2V0SXNEU1QoaW50IGlz
RFNUKSB7IG1faXNEU1QgPSBpc0RTVDsgfQoKICAgIHZvaWQgc2V0VG9DdXJyZW50TG9jYWxUaW1l
KCk7CgogICAgb3BlcmF0b3IgdG0oKSBjb25zdAogICAgewogICAgICAgIHRtIHJldDsKICAgICAg
ICBtZW1zZXQoJnJldCwgMCwgc2l6ZW9mKHJldCkpOwoKICAgICAgICByZXQudG1feWVhciA9IG1f
eWVhciAtIDE5MDA7CiAgICAgICAgcmV0LnRtX21vbiA9IG1fbW9udGg7CiAgICAgICAgcmV0LnRt
X3lkYXkgPSBtX3llYXJEYXk7CiAgICAgICAgcmV0LnRtX21kYXkgPSBtX21vbnRoRGF5OwogICAg
ICAgIHJldC50bV93ZGF5ID0gbV93ZWVrRGF5OwogICAgICAgIHJldC50bV9ob3VyID0gbV9ob3Vy
OwogICAgICAgIHJldC50bV9taW4gPSBtX21pbnV0ZTsKICAgICAgICByZXQudG1fc2VjID0gbV9z
ZWNvbmQ7CiAgICAgICAgcmV0LnRtX2lzZHN0ID0gbV9pc0RTVDsKCgogICAgICAgIHJldC50bV9n
bXRvZmYgPSBzdGF0aWNfY2FzdDxsb25nPihtX3V0Y09mZnNldCk7CgoKICAgICAgICByZXR1cm4g
cmV0OwogICAgfQoKICAgIHZvaWQgY29weUZyb20oY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIG90
aGVyKQogICAgewogICAgICAgIG1feWVhciA9IG90aGVyLm1feWVhcjsKICAgICAgICBtX21vbnRo
ID0gb3RoZXIubV9tb250aDsKICAgICAgICBtX3llYXJEYXkgPSBvdGhlci5tX3llYXJEYXk7CiAg
ICAgICAgbV9tb250aERheSA9IG90aGVyLm1fbW9udGhEYXk7CiAgICAgICAgbV93ZWVrRGF5ID0g
b3RoZXIubV93ZWVrRGF5OwogICAgICAgIG1faG91ciA9IG90aGVyLm1faG91cjsKICAgICAgICBt
X21pbnV0ZSA9IG90aGVyLm1fbWludXRlOwogICAgICAgIG1fc2Vjb25kID0gb3RoZXIubV9zZWNv
bmQ7CiAgICAgICAgbV91dGNPZmZzZXQgPSBvdGhlci5tX3V0Y09mZnNldDsKICAgICAgICBtX2lz
RFNUID0gb3RoZXIubV9pc0RTVDsKICAgIH0KCnByaXZhdGU6CiAgICBpbnQgbV95ZWFyOwogICAg
aW50IG1fbW9udGg7CiAgICBpbnQgbV95ZWFyRGF5OwogICAgaW50IG1fbW9udGhEYXk7CiAgICBp
bnQgbV93ZWVrRGF5OwogICAgaW50IG1faG91cjsKICAgIGludCBtX21pbnV0ZTsKICAgIGludCBt
X3NlY29uZDsKICAgIGludCBtX3V0Y09mZnNldDsKICAgIGludCBtX2lzRFNUOwp9OwoKfQoKdXNp
bmcgV1RGOjpHcmVnb3JpYW5EYXRlVGltZTsKIyA0OCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5oIiAyCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIFZNOwoK
IHZvaWQgbXNUb0dyZWdvcmlhbkRhdGVUaW1lKFZNJiwgZG91YmxlLCBXVEY6OlRpbWVUeXBlIG91
dHB1dFRpbWVUeXBlLCBHcmVnb3JpYW5EYXRlVGltZSYpOwogZG91YmxlIGdyZWdvcmlhbkRhdGVU
aW1lVG9NUyhWTSYsIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiwgZG91YmxlLCBXVEY6OlRpbWVU
eXBlIGlucHV0VGltZVR5cGUpOwogZG91YmxlIGdldFVUQ09mZnNldChWTSYpOwogZG91YmxlIHBh
cnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoVk0mLCBjb25zdCBjaGFyKiBkYXRl
U3RyaW5nKTsKIGRvdWJsZSBwYXJzZURhdGUoVk0mLCBjb25zdCBXVEY6OlN0cmluZyYpOwoKfQoj
IDMxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2VDYWNo
ZS5oIiAyCgoKCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIERhdGVJbnN0YW5jZURhdGEgOiBwdWJs
aWMgUmVmQ291bnRlZDxEYXRlSW5zdGFuY2VEYXRhPiB7CnB1YmxpYzoKICAgIHN0YXRpYyBSZWY8
RGF0ZUluc3RhbmNlRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRlSW5z
dGFuY2VEYXRhKTsgfQoKICAgIGRvdWJsZSBtX2dyZWdvcmlhbkRhdGVUaW1lQ2FjaGVkRm9yTVM7
CiAgICBHcmVnb3JpYW5EYXRlVGltZSBtX2NhY2hlZEdyZWdvcmlhbkRhdGVUaW1lOwogICAgZG91
YmxlIG1fZ3JlZ29yaWFuRGF0ZVRpbWVVVENDYWNoZWRGb3JNUzsKICAgIEdyZWdvcmlhbkRhdGVU
aW1lIG1fY2FjaGVkR3JlZ29yaWFuRGF0ZVRpbWVVVEM7Cgpwcml2YXRlOgogICAgRGF0ZUluc3Rh
bmNlRGF0YSgpCiAgICAgICAgOiBtX2dyZWdvcmlhbkRhdGVUaW1lQ2FjaGVkRm9yTVMoKHB1cmVO
YU4oKSkpCiAgICAgICAgLCBtX2dyZWdvcmlhbkRhdGVUaW1lVVRDQ2FjaGVkRm9yTVMoKHB1cmVO
YU4oKSkpCiAgICB7CiAgICB9Cn07CgpjbGFzcyBEYXRlSW5zdGFuY2VDYWNoZSB7CnB1YmxpYzoK
ICAgIERhdGVJbnN0YW5jZUNhY2hlKCkKICAgIHsKICAgICAgICByZXNldCgpOwogICAgfQoKICAg
IHZvaWQgcmVzZXQoKQogICAgewogICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FjaGVT
aXplOyArK2kpCiAgICAgICAgICAgIG1fY2FjaGVbaV0ua2V5ID0gKHB1cmVOYU4oKSk7CiAgICB9
CgogICAgRGF0ZUluc3RhbmNlRGF0YSogYWRkKGRvdWJsZSBkKQogICAgewogICAgICAgIENhY2hl
RW50cnkmIGVudHJ5ID0gbG9va3VwKGQpOwogICAgICAgIGlmIChkID09IGVudHJ5LmtleSkKICAg
ICAgICAgICAgcmV0dXJuIGVudHJ5LnZhbHVlLmdldCgpOwoKICAgICAgICBlbnRyeS5rZXkgPSBk
OwogICAgICAgIGVudHJ5LnZhbHVlID0gRGF0ZUluc3RhbmNlRGF0YTo6Y3JlYXRlKCk7CiAgICAg
ICAgcmV0dXJuIGVudHJ5LnZhbHVlLmdldCgpOwogICAgfQoKcHJpdmF0ZToKICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgY2FjaGVTaXplID0gMTY7CgogICAgc3RydWN0IENhY2hlRW50cnkgewogICAg
ICAgIGRvdWJsZSBrZXk7CiAgICAgICAgUmVmUHRyPERhdGVJbnN0YW5jZURhdGE+IHZhbHVlOwog
ICAgfTsKCiAgICBDYWNoZUVudHJ5JiBsb29rdXAoZG91YmxlIGQpIHsgcmV0dXJuIG1fY2FjaGVb
V1RGOjpGbG9hdEhhc2g8ZG91YmxlPjo6aGFzaChkKSAmIChjYWNoZVNpemUgLSAxKV07IH0KCiAg
ICBzdGQ6OmFycmF5PENhY2hlRW50cnksIGNhY2hlU2l6ZT4gbV9jYWNoZTsKfTsKCn0KIyAzNSAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCIgMgoKIyAxICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCIg
MQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkhhc0V4
ZWN1dGVkQ2FjaGUuaCIKI2RlZmluZSBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGVfaCAKCiMgMSAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy91
bm9yZGVyZWRfbWFwIiAxIDMKIyAzMCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy91bm9yZGVyZWRfbWFwIiAzCiNkZWZpbmUgX0dMSUJDWFhf
VU5PUkRFUkVEX01BUCAxCgogICAgICAgCiMgMzMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvdW5vcmRlcmVkX21hcCIgMwojIDQ3ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3Vub3Jk
ZXJlZF9tYXAiIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2JpdHMvaGFzaHRhYmxlLmgiIDEgMwojIDMxICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvaGFzaHRhYmxl
LmgiIDMKI2RlZmluZSBfSEFTSFRBQkxFX0ggMQoKICAgICAgIAojIDM0ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvaGFzaHRhYmxl
LmgiIDMKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjkuMy9iaXRzL2hhc2h0YWJsZV9wb2xpY3kuaCIgMSAzCiMgMzIgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9oYXNodGFi
bGVfcG9saWN5LmgiIDMKI2RlZmluZSBfSEFTSFRBQkxFX1BPTElDWV9IIDEKCm5hbWVzcGFjZSBz
dGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLCB0eXBlbmFtZSBfQWxsb2MsCiAg
ICB0eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlwZW5hbWUgX0VxdWFsLAogICAgdHlwZW5hbWUgX0gx
LCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNoLAogICAgdHlwZW5hbWUgX1JlaGFzaFBvbGlj
eSwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGNsYXNzIF9IYXNodGFibGU7CgoKCm5hbWVzcGFjZSBf
X2RldGFpbAp7CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5cGVuYW1lIF9WYWx1
ZSwKICAgIHR5cGVuYW1lIF9FeHRyYWN0S2V5LCB0eXBlbmFtZSBfRXF1YWwsCiAgICB0eXBlbmFt
ZSBfSDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5hbWUgX0hhc2gsIHR5cGVuYW1lIF9UcmFpdHM+CiAg
ICBzdHJ1Y3QgX0hhc2h0YWJsZV9iYXNlOwoKCgogIHRlbXBsYXRlPGNsYXNzIF9JdGVyYXRvcj4K
ICAgIGlubGluZSB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+OjpkaWZm
ZXJlbmNlX3R5cGUKICAgIF9fZGlzdGFuY2VfZncoX0l0ZXJhdG9yIF9fZmlyc3QsIF9JdGVyYXRv
ciBfX2xhc3QsCiAgICBzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZykKICAgIHsgcmV0dXJuIDA7IH0K
CiAgdGVtcGxhdGU8Y2xhc3MgX0l0ZXJhdG9yPgogICAgaW5saW5lIHR5cGVuYW1lIHN0ZDo6aXRl
cmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogICAgX19kaXN0YW5jZV9m
dyhfSXRlcmF0b3IgX19maXJzdCwgX0l0ZXJhdG9yIF9fbGFzdCwKICAgIHN0ZDo6Zm9yd2FyZF9p
dGVyYXRvcl90YWcpCiAgICB7IHJldHVybiBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCk7
IH0KCiAgdGVtcGxhdGU8Y2xhc3MgX0l0ZXJhdG9yPgogICAgaW5saW5lIHR5cGVuYW1lIHN0ZDo6
aXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogICAgX19kaXN0YW5j
ZV9mdyhfSXRlcmF0b3IgX19maXJzdCwgX0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsKICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+OjppdGVyYXRvcl9j
YXRlZ29yeSBfVGFnOwogICAgICByZXR1cm4gX19kaXN0YW5jZV9mdyhfX2ZpcnN0LCBfX2xhc3Qs
IF9UYWcoKSk7CiAgICB9CgoKICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX0hh
c2g+CiAgICBzdHJ1Y3QgX19pc19ub2V4Y2VwdF9oYXNoIDogc3RkOjppbnRlZ3JhbF9jb25zdGFu
dDxib29sLAogbm9leGNlcHQoZGVjbHZhbDxjb25zdCBfSGFzaCY+KCkoZGVjbHZhbDxjb25zdCBf
S2V5Jj4oKSkpPgogICAgeyB9OwoKICBzdHJ1Y3QgX0lkZW50aXR5CiAgewogICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICAgICBfVHAmJgogICAgICBvcGVyYXRvcigpKF9UcCYmIF9feCkgY29u
c3QKICAgICAgeyByZXR1cm4gc3RkOjpmb3J3YXJkPF9UcD4oX194KTsgfQogIH07CgogIHN0cnVj
dCBfU2VsZWN0MXN0CiAgewogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgICBhdXRvCiAg
ICAgIG9wZXJhdG9yKCkoX1RwJiYgX194KSBjb25zdAogICAgICAtPiBkZWNsdHlwZShzdGQ6Omdl
dDwwPihzdGQ6OmZvcndhcmQ8X1RwPihfX3gpKSkKICAgICAgeyByZXR1cm4gc3RkOjpnZXQ8MD4o
c3RkOjpmb3J3YXJkPF9UcD4oX194KSk7IH0KICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfTm9k
ZUFsbG9jPgogICAgc3RydWN0IF9IYXNodGFibGVfYWxsb2M7CgoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX05vZGVBbGxvYz4KICAgIHN0cnVjdCBfUmV1c2VPckFsbG9jTm9kZQogICAgewogICAgcHJp
dmF0ZToKICAgICAgdXNpbmcgX19ub2RlX2FsbG9jX3R5cGUgPSBfTm9kZUFsbG9jOwogICAgICB1
c2luZyBfX2hhc2h0YWJsZV9hbGxvYyA9IF9IYXNodGFibGVfYWxsb2M8X19ub2RlX2FsbG9jX3R5
cGU+OwogICAgICB1c2luZyBfX3ZhbHVlX2FsbG9jX3R5cGUgPSB0eXBlbmFtZSBfX2hhc2h0YWJs
ZV9hbGxvYzo6X192YWx1ZV9hbGxvY190eXBlOwogICAgICB1c2luZyBfX3ZhbHVlX2FsbG9jX3Ry
YWl0cyA9CiB0eXBlbmFtZSBfX2hhc2h0YWJsZV9hbGxvYzo6X192YWx1ZV9hbGxvY190cmFpdHM7
CiAgICAgIHVzaW5nIF9fbm9kZV9hbGxvY190cmFpdHMgPQogdHlwZW5hbWUgX19oYXNodGFibGVf
YWxsb2M6Ol9fbm9kZV9hbGxvY190cmFpdHM7CiAgICAgIHVzaW5nIF9fbm9kZV90eXBlID0gdHlw
ZW5hbWUgX19oYXNodGFibGVfYWxsb2M6Ol9fbm9kZV90eXBlOwoKICAgIHB1YmxpYzoKICAgICAg
X1JldXNlT3JBbGxvY05vZGUoX19ub2RlX3R5cGUqIF9fbm9kZXMsIF9faGFzaHRhYmxlX2FsbG9j
JiBfX2gpCiA6IF9NX25vZGVzKF9fbm9kZXMpLCBfTV9oKF9faCkgeyB9CiAgICAgIF9SZXVzZU9y
QWxsb2NOb2RlKGNvbnN0IF9SZXVzZU9yQWxsb2NOb2RlJikgPSBkZWxldGU7CgogICAgICB+X1Jl
dXNlT3JBbGxvY05vZGUoKQogICAgICB7IF9NX2guX01fZGVhbGxvY2F0ZV9ub2RlcyhfTV9ub2Rl
cyk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Bcmc+CiBfX25vZGVfdHlwZSoKIG9wZXJh
dG9yKCkoX0FyZyYmIF9fYXJnKSBjb25zdAogewogICBpZiAoX01fbm9kZXMpCiAgICAgewogICAg
ICAgX19ub2RlX3R5cGUqIF9fbm9kZSA9IF9NX25vZGVzOwogICAgICAgX01fbm9kZXMgPSBfTV9u
b2Rlcy0+X01fbmV4dCgpOwogICAgICAgX19ub2RlLT5fTV9ueHQgPSBudWxscHRyOwogICAgICAg
X192YWx1ZV9hbGxvY190eXBlIF9fYShfTV9oLl9NX25vZGVfYWxsb2NhdG9yKCkpOwogICAgICAg
X192YWx1ZV9hbGxvY190cmFpdHM6OmRlc3Ryb3koX19hLCBfX25vZGUtPl9NX3ZhbHB0cigpKTsK
ICAgICAgIGlmICh0cnVlKQogIHsKICAgIF9fdmFsdWVfYWxsb2NfdHJhaXRzOjpjb25zdHJ1Y3Qo
X19hLCBfX25vZGUtPl9NX3ZhbHB0cigpLAogICAgICAgIHN0ZDo6Zm9yd2FyZDxfQXJnPihfX2Fy
ZykpOwogIH0KICAgICAgIGlmIChmYWxzZSkKICB7CiAgICBfX25vZGUtPn5fX25vZGVfdHlwZSgp
OwogICAgX19ub2RlX2FsbG9jX3RyYWl0czo6ZGVhbGxvY2F0ZShfTV9oLl9NX25vZGVfYWxsb2Nh
dG9yKCksCiAgICAgICAgX19ub2RlLCAxKTsKICAgIDsKICB9CiAgICAgICByZXR1cm4gX19ub2Rl
OwogICAgIH0KICAgcmV0dXJuIF9NX2guX01fYWxsb2NhdGVfbm9kZShzdGQ6OmZvcndhcmQ8X0Fy
Zz4oX19hcmcpKTsKIH0KCiAgICBwcml2YXRlOgogICAgICBtdXRhYmxlIF9fbm9kZV90eXBlKiBf
TV9ub2RlczsKICAgICAgX19oYXNodGFibGVfYWxsb2MmIF9NX2g7CiAgICB9OwoKCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9Ob2RlQWxsb2M+CiAgICBzdHJ1Y3QgX0FsbG9jTm9kZQogICAgewogICAg
cHJpdmF0ZToKICAgICAgdXNpbmcgX19oYXNodGFibGVfYWxsb2MgPSBfSGFzaHRhYmxlX2FsbG9j
PF9Ob2RlQWxsb2M+OwogICAgICB1c2luZyBfX25vZGVfdHlwZSA9IHR5cGVuYW1lIF9faGFzaHRh
YmxlX2FsbG9jOjpfX25vZGVfdHlwZTsKCiAgICBwdWJsaWM6CiAgICAgIF9BbGxvY05vZGUoX19o
YXNodGFibGVfYWxsb2MmIF9faCkKIDogX01faChfX2gpIHsgfQoKICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0FyZz4KIF9fbm9kZV90eXBlKgogb3BlcmF0b3IoKShfQXJnJiYgX19hcmcpIGNvbnN0
CiB7IHJldHVybiBfTV9oLl9NX2FsbG9jYXRlX25vZGUoc3RkOjpmb3J3YXJkPF9Bcmc+KF9fYXJn
KSk7IH0KCiAgICBwcml2YXRlOgogICAgICBfX2hhc2h0YWJsZV9hbGxvYyYgX01faDsKICAgIH07
CiMgMjExICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2JpdHMvaGFzaHRhYmxlX3BvbGljeS5oIiAzCiAgdGVtcGxhdGU8Ym9vbCBfQ2FjaGVf
aGFzaF9jb2RlLCBib29sIF9Db25zdGFudF9pdGVyYXRvcnMsIGJvb2wgX1VuaXF1ZV9rZXlzPgog
ICAgc3RydWN0IF9IYXNodGFibGVfdHJhaXRzCiAgICB7CiAgICAgIHRlbXBsYXRlPGJvb2wgX0Nv
bmQ+CiB1c2luZyBfX2Jvb2xfY29uc3RhbnQgPSBpbnRlZ3JhbF9jb25zdGFudDxib29sLCBfQ29u
ZD47CgogICAgICB1c2luZyBfX2hhc2hfY2FjaGVkID0gX19ib29sX2NvbnN0YW50PF9DYWNoZV9o
YXNoX2NvZGU+OwogICAgICB1c2luZyBfX2NvbnN0YW50X2l0ZXJhdG9ycyA9IF9fYm9vbF9jb25z
dGFudDxfQ29uc3RhbnRfaXRlcmF0b3JzPjsKICAgICAgdXNpbmcgX191bmlxdWVfa2V5cyA9IF9f
Ym9vbF9jb25zdGFudDxfVW5pcXVlX2tleXM+OwogICAgfTsKIyAyMzAgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9oYXNodGFibGVf
cG9saWN5LmgiIDMKICBzdHJ1Y3QgX0hhc2hfbm9kZV9iYXNlCiAgewogICAgX0hhc2hfbm9kZV9i
YXNlKiBfTV9ueHQ7CgogICAgX0hhc2hfbm9kZV9iYXNlKCkgbm9leGNlcHQgOiBfTV9ueHQoKSB7
IH0KCiAgICBfSGFzaF9ub2RlX2Jhc2UoX0hhc2hfbm9kZV9iYXNlKiBfX25leHQpIG5vZXhjZXB0
IDogX01fbnh0KF9fbmV4dCkgeyB9CiAgfTsKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFs
dWU+CiAgICBzdHJ1Y3QgX0hhc2hfbm9kZV92YWx1ZV9iYXNlIDogX0hhc2hfbm9kZV9iYXNlCiAg
ICB7CiAgICAgIHR5cGVkZWYgX1ZhbHVlIHZhbHVlX3R5cGU7CgogICAgICBfX2dudV9jeHg6Ol9f
YWxpZ25lZF9idWZmZXI8X1ZhbHVlPiBfTV9zdG9yYWdlOwoKICAgICAgX1ZhbHVlKgogICAgICBf
TV92YWxwdHIoKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9zdG9yYWdlLl9NX3B0cigpOyB9
CgogICAgICBjb25zdCBfVmFsdWUqCiAgICAgIF9NX3ZhbHB0cigpIGNvbnN0IG5vZXhjZXB0CiAg
ICAgIHsgcmV0dXJuIF9NX3N0b3JhZ2UuX01fcHRyKCk7IH0KCiAgICAgIF9WYWx1ZSYKICAgICAg
X01fdigpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuICpfTV92YWxwdHIoKTsgfQoKICAgICAgY29u
c3QgX1ZhbHVlJgogICAgICBfTV92KCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gKl9N
X3ZhbHB0cigpOyB9CiAgICB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFsdWUsIGJvb2wg
X0NhY2hlX2hhc2hfY29kZT4KICAgIHN0cnVjdCBfSGFzaF9ub2RlOwoKCgoKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9WYWx1ZT4KICAgIHN0cnVjdCBfSGFzaF9ub2RlPF9WYWx1ZSwgdHJ1ZT4gOiBf
SGFzaF9ub2RlX3ZhbHVlX2Jhc2U8X1ZhbHVlPgogICAgewogICAgICBzdGQ6OnNpemVfdCBfTV9o
YXNoX2NvZGU7CgogICAgICBfSGFzaF9ub2RlKgogICAgICBfTV9uZXh0KCkgY29uc3Qgbm9leGNl
cHQKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8X0hhc2hfbm9kZSo+KHRoaXMtPl9NX254dCk7
IH0KICAgIH07CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlPgogICAgc3RydWN0IF9I
YXNoX25vZGU8X1ZhbHVlLCBmYWxzZT4gOiBfSGFzaF9ub2RlX3ZhbHVlX2Jhc2U8X1ZhbHVlPgog
ICAgewogICAgICBfSGFzaF9ub2RlKgogICAgICBfTV9uZXh0KCkgY29uc3Qgbm9leGNlcHQKICAg
ICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8X0hhc2hfbm9kZSo+KHRoaXMtPl9NX254dCk7IH0KICAg
IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFsdWUsIGJvb2wgX0NhY2hlX2hhc2hfY29kZT4K
ICAgIHN0cnVjdCBfTm9kZV9pdGVyYXRvcl9iYXNlCiAgICB7CiAgICAgIHVzaW5nIF9fbm9kZV90
eXBlID0gX0hhc2hfbm9kZTxfVmFsdWUsIF9DYWNoZV9oYXNoX2NvZGU+OwoKICAgICAgX19ub2Rl
X3R5cGUqIF9NX2N1cjsKCiAgICAgIF9Ob2RlX2l0ZXJhdG9yX2Jhc2UoX19ub2RlX3R5cGUqIF9f
cCkgbm9leGNlcHQKICAgICAgOiBfTV9jdXIoX19wKSB7IH0KCiAgICAgIHZvaWQKICAgICAgX01f
aW5jcigpIG5vZXhjZXB0CiAgICAgIHsgX01fY3VyID0gX01fY3VyLT5fTV9uZXh0KCk7IH0KICAg
IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZSwgYm9vbCBfQ2FjaGVfaGFzaF9jb2RlPgog
ICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgX05vZGVfaXRlcmF0b3JfYmFzZTxf
VmFsdWUsIF9DYWNoZV9oYXNoX2NvZGU+JiBfX3gsCiAgICAgICAgY29uc3QgX05vZGVfaXRlcmF0
b3JfYmFzZTxfVmFsdWUsIF9DYWNoZV9oYXNoX2NvZGUgPiYgX195KQogICAgbm9leGNlcHQKICAg
IHsgcmV0dXJuIF9feC5fTV9jdXIgPT0gX195Ll9NX2N1cjsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVmFsdWUsIGJvb2wgX0NhY2hlX2hhc2hfY29kZT4KICAgIGlubGluZSBib29sCiAgICBvcGVy
YXRvciE9KGNvbnN0IF9Ob2RlX2l0ZXJhdG9yX2Jhc2U8X1ZhbHVlLCBfQ2FjaGVfaGFzaF9jb2Rl
PiYgX194LAogICAgICAgIGNvbnN0IF9Ob2RlX2l0ZXJhdG9yX2Jhc2U8X1ZhbHVlLCBfQ2FjaGVf
aGFzaF9jb2RlPiYgX195KQogICAgbm9leGNlcHQKICAgIHsgcmV0dXJuIF9feC5fTV9jdXIgIT0g
X195Ll9NX2N1cjsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlLCBib29sIF9fY29uc3Rh
bnRfaXRlcmF0b3JzLCBib29sIF9fY2FjaGU+CiAgICBzdHJ1Y3QgX05vZGVfaXRlcmF0b3IKICAg
IDogcHVibGljIF9Ob2RlX2l0ZXJhdG9yX2Jhc2U8X1ZhbHVlLCBfX2NhY2hlPgogICAgewogICAg
cHJpdmF0ZToKICAgICAgdXNpbmcgX19iYXNlX3R5cGUgPSBfTm9kZV9pdGVyYXRvcl9iYXNlPF9W
YWx1ZSwgX19jYWNoZT47CiAgICAgIHVzaW5nIF9fbm9kZV90eXBlID0gdHlwZW5hbWUgX19iYXNl
X3R5cGU6Ol9fbm9kZV90eXBlOwoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBfVmFsdWUgdmFs
dWVfdHlwZTsKICAgICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CiAg
ICAgIHR5cGVkZWYgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsK
CiAgICAgIHVzaW5nIHBvaW50ZXIgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPF9fY29uc3Rh
bnRfaXRlcmF0b3JzLAogICAgICBjb25zdCBfVmFsdWUqLCBfVmFsdWUqPjo6dHlwZTsKCiAgICAg
IHVzaW5nIHJlZmVyZW5jZSA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8X19jb25zdGFudF9p
dGVyYXRvcnMsCiAgICAgICAgY29uc3QgX1ZhbHVlJiwgX1ZhbHVlJj46OnR5cGU7CgogICAgICBf
Tm9kZV9pdGVyYXRvcigpIG5vZXhjZXB0CiAgICAgIDogX19iYXNlX3R5cGUoMCkgeyB9CgogICAg
ICBleHBsaWNpdAogICAgICBfTm9kZV9pdGVyYXRvcihfX25vZGVfdHlwZSogX19wKSBub2V4Y2Vw
dAogICAgICA6IF9fYmFzZV90eXBlKF9fcCkgeyB9CgogICAgICByZWZlcmVuY2UKICAgICAgb3Bl
cmF0b3IqKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gdGhpcy0+X01fY3VyLT5fTV92
KCk7IH0KCiAgICAgIHBvaW50ZXIKICAgICAgb3BlcmF0b3ItPigpIGNvbnN0IG5vZXhjZXB0CiAg
ICAgIHsgcmV0dXJuIHRoaXMtPl9NX2N1ci0+X01fdmFscHRyKCk7IH0KCiAgICAgIF9Ob2RlX2l0
ZXJhdG9yJgogICAgICBvcGVyYXRvcisrKCkgbm9leGNlcHQKICAgICAgewogdGhpcy0+X01faW5j
cigpOwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICBfTm9kZV9pdGVyYXRvcgogICAgICBv
cGVyYXRvcisrKGludCkgbm9leGNlcHQKICAgICAgewogX05vZGVfaXRlcmF0b3IgX190bXAoKnRo
aXMpOwogdGhpcy0+X01faW5jcigpOwogcmV0dXJuIF9fdG1wOwogICAgICB9CiAgICB9OwoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlLCBib29sIF9fY29uc3RhbnRfaXRlcmF0b3JzLCBib29s
IF9fY2FjaGU+CiAgICBzdHJ1Y3QgX05vZGVfY29uc3RfaXRlcmF0b3IKICAgIDogcHVibGljIF9O
b2RlX2l0ZXJhdG9yX2Jhc2U8X1ZhbHVlLCBfX2NhY2hlPgogICAgewogICAgcHJpdmF0ZToKICAg
ICAgdXNpbmcgX19iYXNlX3R5cGUgPSBfTm9kZV9pdGVyYXRvcl9iYXNlPF9WYWx1ZSwgX19jYWNo
ZT47CiAgICAgIHVzaW5nIF9fbm9kZV90eXBlID0gdHlwZW5hbWUgX19iYXNlX3R5cGU6Ol9fbm9k
ZV90eXBlOwoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBfVmFsdWUgdmFsdWVfdHlwZTsKICAg
ICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CiAgICAgIHR5cGVkZWYg
c3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKCiAgICAgIHR5cGVk
ZWYgY29uc3QgX1ZhbHVlKiBwb2ludGVyOwogICAgICB0eXBlZGVmIGNvbnN0IF9WYWx1ZSYgcmVm
ZXJlbmNlOwoKICAgICAgX05vZGVfY29uc3RfaXRlcmF0b3IoKSBub2V4Y2VwdAogICAgICA6IF9f
YmFzZV90eXBlKDApIHsgfQoKICAgICAgZXhwbGljaXQKICAgICAgX05vZGVfY29uc3RfaXRlcmF0
b3IoX19ub2RlX3R5cGUqIF9fcCkgbm9leGNlcHQKICAgICAgOiBfX2Jhc2VfdHlwZShfX3ApIHsg
fQoKICAgICAgX05vZGVfY29uc3RfaXRlcmF0b3IoY29uc3QgX05vZGVfaXRlcmF0b3I8X1ZhbHVl
LCBfX2NvbnN0YW50X2l0ZXJhdG9ycywKICAgICAgX19jYWNoZT4mIF9feCkgbm9leGNlcHQKICAg
ICAgOiBfX2Jhc2VfdHlwZShfX3guX01fY3VyKSB7IH0KCiAgICAgIHJlZmVyZW5jZQogICAgICBv
cGVyYXRvciooKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiB0aGlzLT5fTV9jdXItPl9N
X3YoKTsgfQoKICAgICAgcG9pbnRlcgogICAgICBvcGVyYXRvci0+KCkgY29uc3Qgbm9leGNlcHQK
ICAgICAgeyByZXR1cm4gdGhpcy0+X01fY3VyLT5fTV92YWxwdHIoKTsgfQoKICAgICAgX05vZGVf
Y29uc3RfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKysoKSBub2V4Y2VwdAogICAgICB7CiB0aGlz
LT5fTV9pbmNyKCk7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgICAgIF9Ob2RlX2NvbnN0X2l0
ZXJhdG9yCiAgICAgIG9wZXJhdG9yKysoaW50KSBub2V4Y2VwdAogICAgICB7CiBfTm9kZV9jb25z
dF9pdGVyYXRvciBfX3RtcCgqdGhpcyk7CiB0aGlzLT5fTV9pbmNyKCk7CiByZXR1cm4gX190bXA7
CiAgICAgIH0KICAgIH07CgoKCgoKCiAgc3RydWN0IF9Nb2RfcmFuZ2VfaGFzaGluZwogIHsKICAg
IHR5cGVkZWYgc3RkOjpzaXplX3QgZmlyc3RfYXJndW1lbnRfdHlwZTsKICAgIHR5cGVkZWYgc3Rk
OjpzaXplX3Qgc2Vjb25kX2FyZ3VtZW50X3R5cGU7CiAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHJl
c3VsdF90eXBlOwoKICAgIHJlc3VsdF90eXBlCiAgICBvcGVyYXRvcigpKGZpcnN0X2FyZ3VtZW50
X3R5cGUgX19udW0sCiAgICAgICAgc2Vjb25kX2FyZ3VtZW50X3R5cGUgX19kZW4pIGNvbnN0IG5v
ZXhjZXB0CiAgICB7IHJldHVybiBfX251bSAlIF9fZGVuOyB9CiAgfTsKCgoKCgoKICBzdHJ1Y3Qg
X0RlZmF1bHRfcmFuZ2VkX2hhc2ggeyB9OwoKCgogIHN0cnVjdCBfUHJpbWVfcmVoYXNoX3BvbGlj
eQogIHsKICAgIF9QcmltZV9yZWhhc2hfcG9saWN5KGZsb2F0IF9feiA9IDEuMCkKICAgIDogX01f
bWF4X2xvYWRfZmFjdG9yKF9feiksIF9NX25leHRfcmVzaXplKDApIHsgfQoKICAgIGZsb2F0CiAg
ICBtYXhfbG9hZF9mYWN0b3IoKSBjb25zdCBub2V4Y2VwdAogICAgeyByZXR1cm4gX01fbWF4X2xv
YWRfZmFjdG9yOyB9CgoKICAgIHN0ZDo6c2l6ZV90CiAgICBfTV9uZXh0X2JrdChzdGQ6OnNpemVf
dCBfX24pIGNvbnN0OwoKCiAgICBzdGQ6OnNpemVfdAogICAgX01fYmt0X2Zvcl9lbGVtZW50cyhz
dGQ6OnNpemVfdCBfX24pIGNvbnN0CiAgICB7IHJldHVybiBfX2J1aWx0aW5fY2VpbChfX24gLyAo
bG9uZyBkb3VibGUpX01fbWF4X2xvYWRfZmFjdG9yKTsgfQoKCgoKCiAgICBzdGQ6OnBhaXI8Ym9v
bCwgc3RkOjpzaXplX3Q+CiAgICBfTV9uZWVkX3JlaGFzaChzdGQ6OnNpemVfdCBfX25fYmt0LCBz
dGQ6OnNpemVfdCBfX25fZWx0LAogICAgIHN0ZDo6c2l6ZV90IF9fbl9pbnMpIGNvbnN0OwoKICAg
IHR5cGVkZWYgc3RkOjpzaXplX3QgX1N0YXRlOwoKICAgIF9TdGF0ZQogICAgX01fc3RhdGUoKSBj
b25zdAogICAgeyByZXR1cm4gX01fbmV4dF9yZXNpemU7IH0KCiAgICB2b2lkCiAgICBfTV9yZXNl
dCgpIG5vZXhjZXB0CiAgICB7IF9NX25leHRfcmVzaXplID0gMDsgfQoKICAgIHZvaWQKICAgIF9N
X3Jlc2V0KF9TdGF0ZSBfX3N0YXRlKQogICAgeyBfTV9uZXh0X3Jlc2l6ZSA9IF9fc3RhdGU7IH0K
CiAgICBlbnVtIHsgX1Nfbl9wcmltZXMgPSBzaXplb2YodW5zaWduZWQgbG9uZykgIT0gOCA/IDI1
NiA6IDI1NiArIDQ4IH07CgogICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IF9TX2dyb3d0aF9m
YWN0b3IgPSAyOwoKICAgIGZsb2F0IF9NX21heF9sb2FkX2ZhY3RvcjsKICAgIG11dGFibGUgc3Rk
OjpzaXplX3QgX01fbmV4dF9yZXNpemU7CiAgfTsKIyA1MjcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9oYXNodGFibGVfcG9saWN5
LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBfVmFsdWUsIHR5cGVuYW1l
IF9BbGxvYywKICAgIHR5cGVuYW1lIF9FeHRyYWN0S2V5LCB0eXBlbmFtZSBfRXF1YWwsCiAgICB0
eXBlbmFtZSBfSDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5hbWUgX0hhc2gsCiAgICB0eXBlbmFtZSBf
UmVoYXNoUG9saWN5LCB0eXBlbmFtZSBfVHJhaXRzLAogICAgYm9vbCBfVW5pcXVlX2tleXMgPSBf
VHJhaXRzOjpfX3VuaXF1ZV9rZXlzOjp2YWx1ZT4KICAgIHN0cnVjdCBfTWFwX2Jhc2UgeyB9OwoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1BhaXIsIHR5cGVuYW1lIF9BbGxv
YywgdHlwZW5hbWUgX0VxdWFsLAogICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIsIHR5cGVu
YW1lIF9IYXNoLAogICAgdHlwZW5hbWUgX1JlaGFzaFBvbGljeSwgdHlwZW5hbWUgX1RyYWl0cz4K
ICAgIHN0cnVjdCBfTWFwX2Jhc2U8X0tleSwgX1BhaXIsIF9BbGxvYywgX1NlbGVjdDFzdCwgX0Vx
dWFsLAogICAgICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LCBfVHJhaXRzLCBmYWxz
ZT4KICAgIHsKICAgICAgdXNpbmcgbWFwcGVkX3R5cGUgPSB0eXBlbmFtZSBzdGQ6OnR1cGxlX2Vs
ZW1lbnQ8MSwgX1BhaXI+Ojp0eXBlOwogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXks
IHR5cGVuYW1lIF9QYWlyLCB0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9FcXVhbCwKICAgIHR5
cGVuYW1lIF9IMSwgdHlwZW5hbWUgX0gyLCB0eXBlbmFtZSBfSGFzaCwKICAgIHR5cGVuYW1lIF9S
ZWhhc2hQb2xpY3ksIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdHJ1Y3QgX01hcF9iYXNlPF9LZXks
IF9QYWlyLCBfQWxsb2MsIF9TZWxlY3Qxc3QsIF9FcXVhbCwKICAgICAgIF9IMSwgX0gyLCBfSGFz
aCwgX1JlaGFzaFBvbGljeSwgX1RyYWl0cywgdHJ1ZT4KICAgIHsKICAgIHByaXZhdGU6CiAgICAg
IHVzaW5nIF9faGFzaHRhYmxlX2Jhc2UgPSBfX2RldGFpbDo6X0hhc2h0YWJsZV9iYXNlPF9LZXks
IF9QYWlyLAogICAgICAgIF9TZWxlY3Qxc3QsCiAgICAgICBfRXF1YWwsIF9IMSwgX0gyLCBfSGFz
aCwKICAgICAgICAgX1RyYWl0cz47CgogICAgICB1c2luZyBfX2hhc2h0YWJsZSA9IF9IYXNodGFi
bGU8X0tleSwgX1BhaXIsIF9BbGxvYywKICAgICAgICAgX1NlbGVjdDFzdCwgX0VxdWFsLAogICAg
ICAgICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+OwoKICAgICAgdXNp
bmcgX19oYXNoX2NvZGUgPSB0eXBlbmFtZSBfX2hhc2h0YWJsZV9iYXNlOjpfX2hhc2hfY29kZTsK
ICAgICAgdXNpbmcgX19ub2RlX3R5cGUgPSB0eXBlbmFtZSBfX2hhc2h0YWJsZV9iYXNlOjpfX25v
ZGVfdHlwZTsKCiAgICBwdWJsaWM6CiAgICAgIHVzaW5nIGtleV90eXBlID0gdHlwZW5hbWUgX19o
YXNodGFibGVfYmFzZTo6a2V5X3R5cGU7CiAgICAgIHVzaW5nIGl0ZXJhdG9yID0gdHlwZW5hbWUg
X19oYXNodGFibGVfYmFzZTo6aXRlcmF0b3I7CiAgICAgIHVzaW5nIG1hcHBlZF90eXBlID0gdHlw
ZW5hbWUgc3RkOjp0dXBsZV9lbGVtZW50PDEsIF9QYWlyPjo6dHlwZTsKCiAgICAgIG1hcHBlZF90
eXBlJgogICAgICBvcGVyYXRvcltdKGNvbnN0IGtleV90eXBlJiBfX2spOwoKICAgICAgbWFwcGVk
X3R5cGUmCiAgICAgIG9wZXJhdG9yW10oa2V5X3R5cGUmJiBfX2spOwoKCgogICAgICBtYXBwZWRf
dHlwZSYKICAgICAgYXQoY29uc3Qga2V5X3R5cGUmIF9fayk7CgogICAgICBjb25zdCBtYXBwZWRf
dHlwZSYKICAgICAgYXQoY29uc3Qga2V5X3R5cGUmIF9faykgY29uc3Q7CiAgICB9OwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBfUGFpciwgdHlwZW5hbWUgX0FsbG9jLCB0eXBl
bmFtZSBfRXF1YWwsCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5hbWUgX0hh
c2gsCiAgICB0eXBlbmFtZSBfUmVoYXNoUG9saWN5LCB0eXBlbmFtZSBfVHJhaXRzPgogICAgdHlw
ZW5hbWUgX01hcF9iYXNlPF9LZXksIF9QYWlyLCBfQWxsb2MsIF9TZWxlY3Qxc3QsIF9FcXVhbCwK
ICAgICAgICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LCBfVHJhaXRzLCB0cnVlPgog
ICAgICAgICA6Om1hcHBlZF90eXBlJgogICAgX01hcF9iYXNlPF9LZXksIF9QYWlyLCBfQWxsb2Ms
IF9TZWxlY3Qxc3QsIF9FcXVhbCwKICAgICAgIF9IMSwgX0gyLCBfSGFzaCwgX1JlaGFzaFBvbGlj
eSwgX1RyYWl0cywgdHJ1ZT46OgogICAgb3BlcmF0b3JbXShjb25zdCBrZXlfdHlwZSYgX19rKQog
ICAgewogICAgICBfX2hhc2h0YWJsZSogX19oID0gc3RhdGljX2Nhc3Q8X19oYXNodGFibGUqPih0
aGlzKTsKICAgICAgX19oYXNoX2NvZGUgX19jb2RlID0gX19oLT5fTV9oYXNoX2NvZGUoX19rKTsK
ICAgICAgc3RkOjpzaXplX3QgX19uID0gX19oLT5fTV9idWNrZXRfaW5kZXgoX19rLCBfX2NvZGUp
OwogICAgICBfX25vZGVfdHlwZSogX19wID0gX19oLT5fTV9maW5kX25vZGUoX19uLCBfX2ssIF9f
Y29kZSk7CgogICAgICBpZiAoIV9fcCkKIHsKICAgX19wID0gX19oLT5fTV9hbGxvY2F0ZV9ub2Rl
KHN0ZDo6cGllY2V3aXNlX2NvbnN0cnVjdCwKICAgICAgICAgIHN0ZDo6dHVwbGU8Y29uc3Qga2V5
X3R5cGUmPihfX2spLAogICAgICAgICAgc3RkOjp0dXBsZTw+KCkpOwogICByZXR1cm4gX19oLT5f
TV9pbnNlcnRfdW5pcXVlX25vZGUoX19uLCBfX2NvZGUsIF9fcCktPnNlY29uZDsKIH0KCiAgICAg
IHJldHVybiBfX3AtPl9NX3YoKS5zZWNvbmQ7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9L
ZXksIHR5cGVuYW1lIF9QYWlyLCB0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9FcXVhbCwKICAg
IHR5cGVuYW1lIF9IMSwgdHlwZW5hbWUgX0gyLCB0eXBlbmFtZSBfSGFzaCwKICAgIHR5cGVuYW1l
IF9SZWhhc2hQb2xpY3ksIHR5cGVuYW1lIF9UcmFpdHM+CiAgICB0eXBlbmFtZSBfTWFwX2Jhc2U8
X0tleSwgX1BhaXIsIF9BbGxvYywgX1NlbGVjdDFzdCwgX0VxdWFsLAogICAgICAgICBfSDEsIF9I
MiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHMsIHRydWU+CiAgICAgICAgIDo6bWFwcGVk
X3R5cGUmCiAgICBfTWFwX2Jhc2U8X0tleSwgX1BhaXIsIF9BbGxvYywgX1NlbGVjdDFzdCwgX0Vx
dWFsLAogICAgICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LCBfVHJhaXRzLCB0cnVl
Pjo6CiAgICBvcGVyYXRvcltdKGtleV90eXBlJiYgX19rKQogICAgewogICAgICBfX2hhc2h0YWJs
ZSogX19oID0gc3RhdGljX2Nhc3Q8X19oYXNodGFibGUqPih0aGlzKTsKICAgICAgX19oYXNoX2Nv
ZGUgX19jb2RlID0gX19oLT5fTV9oYXNoX2NvZGUoX19rKTsKICAgICAgc3RkOjpzaXplX3QgX19u
ID0gX19oLT5fTV9idWNrZXRfaW5kZXgoX19rLCBfX2NvZGUpOwogICAgICBfX25vZGVfdHlwZSog
X19wID0gX19oLT5fTV9maW5kX25vZGUoX19uLCBfX2ssIF9fY29kZSk7CgogICAgICBpZiAoIV9f
cCkKIHsKICAgX19wID0gX19oLT5fTV9hbGxvY2F0ZV9ub2RlKHN0ZDo6cGllY2V3aXNlX2NvbnN0
cnVjdCwKICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShzdGQ6Om1vdmUoX19rKSksCiAg
ICAgICAgICBzdGQ6OnR1cGxlPD4oKSk7CiAgIHJldHVybiBfX2gtPl9NX2luc2VydF91bmlxdWVf
bm9kZShfX24sIF9fY29kZSwgX19wKS0+c2Vjb25kOwogfQoKICAgICAgcmV0dXJuIF9fcC0+X01f
digpLnNlY29uZDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1Bh
aXIsIHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUgX0VxdWFsLAogICAgdHlwZW5hbWUgX0gxLCB0
eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNoLAogICAgdHlwZW5hbWUgX1JlaGFzaFBvbGljeSwg
dHlwZW5hbWUgX1RyYWl0cz4KICAgIHR5cGVuYW1lIF9NYXBfYmFzZTxfS2V5LCBfUGFpciwgX0Fs
bG9jLCBfU2VsZWN0MXN0LCBfRXF1YWwsCiAgICAgICAgIF9IMSwgX0gyLCBfSGFzaCwgX1JlaGFz
aFBvbGljeSwgX1RyYWl0cywgdHJ1ZT4KICAgICAgICAgOjptYXBwZWRfdHlwZSYKICAgIF9NYXBf
YmFzZTxfS2V5LCBfUGFpciwgX0FsbG9jLCBfU2VsZWN0MXN0LCBfRXF1YWwsCiAgICAgICBfSDEs
IF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHMsIHRydWU+OjoKICAgIGF0KGNvbnN0
IGtleV90eXBlJiBfX2spCiAgICB7CiAgICAgIF9faGFzaHRhYmxlKiBfX2ggPSBzdGF0aWNfY2Fz
dDxfX2hhc2h0YWJsZSo+KHRoaXMpOwogICAgICBfX2hhc2hfY29kZSBfX2NvZGUgPSBfX2gtPl9N
X2hhc2hfY29kZShfX2spOwogICAgICBzdGQ6OnNpemVfdCBfX24gPSBfX2gtPl9NX2J1Y2tldF9p
bmRleChfX2ssIF9fY29kZSk7CiAgICAgIF9fbm9kZV90eXBlKiBfX3AgPSBfX2gtPl9NX2ZpbmRf
bm9kZShfX24sIF9faywgX19jb2RlKTsKCiAgICAgIGlmICghX19wKQogX190aHJvd19vdXRfb2Zf
cmFuZ2UoKCJfTWFwX2Jhc2U6OmF0IikpOwogICAgICByZXR1cm4gX19wLT5fTV92KCkuc2Vjb25k
OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBfUGFpciwgdHlwZW5h
bWUgX0FsbG9jLCB0eXBlbmFtZSBfRXF1YWwsCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVuYW1lIF9I
MiwgdHlwZW5hbWUgX0hhc2gsCiAgICB0eXBlbmFtZSBfUmVoYXNoUG9saWN5LCB0eXBlbmFtZSBf
VHJhaXRzPgogICAgY29uc3QgdHlwZW5hbWUgX01hcF9iYXNlPF9LZXksIF9QYWlyLCBfQWxsb2Ms
IF9TZWxlY3Qxc3QsCiAgICAgICAgX0VxdWFsLCBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xp
Y3ksCiAgICAgICAgX1RyYWl0cywgdHJ1ZT46Om1hcHBlZF90eXBlJgogICAgX01hcF9iYXNlPF9L
ZXksIF9QYWlyLCBfQWxsb2MsIF9TZWxlY3Qxc3QsIF9FcXVhbCwKICAgICAgIF9IMSwgX0gyLCBf
SGFzaCwgX1JlaGFzaFBvbGljeSwgX1RyYWl0cywgdHJ1ZT46OgogICAgYXQoY29uc3Qga2V5X3R5
cGUmIF9faykgY29uc3QKICAgIHsKICAgICAgY29uc3QgX19oYXNodGFibGUqIF9faCA9IHN0YXRp
Y19jYXN0PGNvbnN0IF9faGFzaHRhYmxlKj4odGhpcyk7CiAgICAgIF9faGFzaF9jb2RlIF9fY29k
ZSA9IF9faC0+X01faGFzaF9jb2RlKF9fayk7CiAgICAgIHN0ZDo6c2l6ZV90IF9fbiA9IF9faC0+
X01fYnVja2V0X2luZGV4KF9faywgX19jb2RlKTsKICAgICAgX19ub2RlX3R5cGUqIF9fcCA9IF9f
aC0+X01fZmluZF9ub2RlKF9fbiwgX19rLCBfX2NvZGUpOwoKICAgICAgaWYgKCFfX3ApCiBfX3Ro
cm93X291dF9vZl9yYW5nZSgoIl9NYXBfYmFzZTo6YXQiKSk7CiAgICAgIHJldHVybiBfX3AtPl9N
X3YoKS5zZWNvbmQ7CiAgICB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5h
bWUgX1ZhbHVlLCB0eXBlbmFtZSBfQWxsb2MsCiAgICB0eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlw
ZW5hbWUgX0VxdWFsLAogICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9I
YXNoLAogICAgdHlwZW5hbWUgX1JlaGFzaFBvbGljeSwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0
cnVjdCBfSW5zZXJ0X2Jhc2UKICAgIHsKICAgIHByb3RlY3RlZDoKICAgICAgdXNpbmcgX19oYXNo
dGFibGUgPSBfSGFzaHRhYmxlPF9LZXksIF9WYWx1ZSwgX0FsbG9jLCBfRXh0cmFjdEtleSwKICAg
ICAgICAgX0VxdWFsLCBfSDEsIF9IMiwgX0hhc2gsCiAgICAgICAgIF9SZWhhc2hQb2xpY3ksIF9U
cmFpdHM+OwoKICAgICAgdXNpbmcgX19oYXNodGFibGVfYmFzZSA9IF9IYXNodGFibGVfYmFzZTxf
S2V5LCBfVmFsdWUsIF9FeHRyYWN0S2V5LAogICAgICAgICAgICBfRXF1YWwsIF9IMSwgX0gyLCBf
SGFzaCwKICAgICAgICAgICAgX1RyYWl0cz47CgogICAgICB1c2luZyB2YWx1ZV90eXBlID0gdHlw
ZW5hbWUgX19oYXNodGFibGVfYmFzZTo6dmFsdWVfdHlwZTsKICAgICAgdXNpbmcgaXRlcmF0b3Ig
PSB0eXBlbmFtZSBfX2hhc2h0YWJsZV9iYXNlOjppdGVyYXRvcjsKICAgICAgdXNpbmcgY29uc3Rf
aXRlcmF0b3IgPSB0eXBlbmFtZSBfX2hhc2h0YWJsZV9iYXNlOjpjb25zdF9pdGVyYXRvcjsKICAg
ICAgdXNpbmcgc2l6ZV90eXBlID0gdHlwZW5hbWUgX19oYXNodGFibGVfYmFzZTo6c2l6ZV90eXBl
OwoKICAgICAgdXNpbmcgX191bmlxdWVfa2V5cyA9IHR5cGVuYW1lIF9faGFzaHRhYmxlX2Jhc2U6
Ol9fdW5pcXVlX2tleXM7CiAgICAgIHVzaW5nIF9faXJldHVybl90eXBlID0gdHlwZW5hbWUgX19o
YXNodGFibGVfYmFzZTo6X19pcmV0dXJuX3R5cGU7CiAgICAgIHVzaW5nIF9fbm9kZV90eXBlID0g
X0hhc2hfbm9kZTxfVmFsdWUsIF9UcmFpdHM6Ol9faGFzaF9jYWNoZWQ6OnZhbHVlPjsKICAgICAg
dXNpbmcgX19ub2RlX2FsbG9jX3R5cGUgPQogdHlwZW5hbWUgX19hbGxvY3RyX3JlYmluZDxfQWxs
b2MsIF9fbm9kZV90eXBlPjo6X190eXBlOwogICAgICB1c2luZyBfX25vZGVfZ2VuX3R5cGUgPSBf
QWxsb2NOb2RlPF9fbm9kZV9hbGxvY190eXBlPjsKCiAgICAgIF9faGFzaHRhYmxlJgogICAgICBf
TV9jb25qdXJlX2hhc2h0YWJsZSgpCiAgICAgIHsgcmV0dXJuICooc3RhdGljX2Nhc3Q8X19oYXNo
dGFibGUqPih0aGlzKSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9y
LCB0eXBlbmFtZSBfTm9kZUdldHRlcj4KIHZvaWQKIF9NX2luc2VydF9yYW5nZShfSW5wdXRJdGVy
YXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgIGNvbnN0IF9Ob2RlR2V0dGVy
Jik7CgogICAgcHVibGljOgogICAgICBfX2lyZXR1cm5fdHlwZQogICAgICBpbnNlcnQoY29uc3Qg
dmFsdWVfdHlwZSYgX192KQogICAgICB7CiBfX2hhc2h0YWJsZSYgX19oID0gX01fY29uanVyZV9o
YXNodGFibGUoKTsKIF9fbm9kZV9nZW5fdHlwZSBfX25vZGVfZ2VuKF9faCk7CiByZXR1cm4gX19o
Ll9NX2luc2VydChfX3YsIF9fbm9kZV9nZW4sIF9fdW5pcXVlX2tleXMoKSk7CiAgICAgIH0KCiAg
ICAgIGl0ZXJhdG9yCiAgICAgIGluc2VydChjb25zdF9pdGVyYXRvciBfX2hpbnQsIGNvbnN0IHZh
bHVlX3R5cGUmIF9fdikKICAgICAgewogX19oYXNodGFibGUmIF9faCA9IF9NX2Nvbmp1cmVfaGFz
aHRhYmxlKCk7CiBfX25vZGVfZ2VuX3R5cGUgX19ub2RlX2dlbihfX2gpOwogcmV0dXJuIF9faC5f
TV9pbnNlcnQoX19oaW50LCBfX3YsIF9fbm9kZV9nZW4sIF9fdW5pcXVlX2tleXMoKSk7CiAgICAg
IH0KCiAgICAgIHZvaWQKICAgICAgaW5zZXJ0KGluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4g
X19sKQogICAgICB7IHRoaXMtPmluc2VydChfX2wuYmVnaW4oKSwgX19sLmVuZCgpKTsgfQoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiB2b2lkCiBpbnNlcnQoX0lucHV0
SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0KQogewogICBfX2hhc2h0YWJs
ZSYgX19oID0gX01fY29uanVyZV9oYXNodGFibGUoKTsKICAgX19ub2RlX2dlbl90eXBlIF9fbm9k
ZV9nZW4oX19oKTsKICAgcmV0dXJuIF9NX2luc2VydF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QsIF9f
bm9kZV9nZW4pOwogfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUg
X1ZhbHVlLCB0eXBlbmFtZSBfQWxsb2MsCiAgICB0eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlwZW5h
bWUgX0VxdWFsLAogICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNo
LAogICAgdHlwZW5hbWUgX1JlaGFzaFBvbGljeSwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfTm9kZUdldHRlcj4KICAgICAg
dm9pZAogICAgICBfSW5zZXJ0X2Jhc2U8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5
LCBfRXF1YWwsIF9IMSwgX0gyLCBfSGFzaCwKICAgICAgX1JlaGFzaFBvbGljeSwgX1RyYWl0cz46
OgogICAgICBfTV9pbnNlcnRfcmFuZ2UoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRl
cmF0b3IgX19sYXN0LAogICAgICAgIGNvbnN0IF9Ob2RlR2V0dGVyJiBfX25vZGVfZ2VuKQogICAg
ICB7CiB1c2luZyBfX3JlaGFzaF90eXBlID0gdHlwZW5hbWUgX19oYXNodGFibGU6Ol9fcmVoYXNo
X3R5cGU7CiB1c2luZyBfX3JlaGFzaF9zdGF0ZSA9IHR5cGVuYW1lIF9faGFzaHRhYmxlOjpfX3Jl
aGFzaF9zdGF0ZTsKIHVzaW5nIHBhaXJfdHlwZSA9IHN0ZDo6cGFpcjxib29sLCBzdGQ6OnNpemVf
dD47Cgogc2l6ZV90eXBlIF9fbl9lbHQgPSBfX2RldGFpbDo6X19kaXN0YW5jZV9mdyhfX2ZpcnN0
LCBfX2xhc3QpOwoKIF9faGFzaHRhYmxlJiBfX2ggPSBfTV9jb25qdXJlX2hhc2h0YWJsZSgpOwog
X19yZWhhc2hfdHlwZSYgX19yZWhhc2ggPSBfX2guX01fcmVoYXNoX3BvbGljeTsKIGNvbnN0IF9f
cmVoYXNoX3N0YXRlJiBfX3NhdmVkX3N0YXRlID0gX19yZWhhc2guX01fc3RhdGUoKTsKIHBhaXJf
dHlwZSBfX2RvX3JlaGFzaCA9IF9fcmVoYXNoLl9NX25lZWRfcmVoYXNoKF9faC5fTV9idWNrZXRf
Y291bnQsCiAgICAgICBfX2guX01fZWxlbWVudF9jb3VudCwKICAgICAgIF9fbl9lbHQpOwoKIGlm
IChfX2RvX3JlaGFzaC5maXJzdCkKICAgX19oLl9NX3JlaGFzaChfX2RvX3JlaGFzaC5zZWNvbmQs
IF9fc2F2ZWRfc3RhdGUpOwoKIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQog
ICBfX2guX01faW5zZXJ0KCpfX2ZpcnN0LCBfX25vZGVfZ2VuLCBfX3VuaXF1ZV9rZXlzKCkpOwog
ICAgICB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLCB0
eXBlbmFtZSBfQWxsb2MsCiAgICB0eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlwZW5hbWUgX0VxdWFs
LAogICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNoLAogICAgdHlw
ZW5hbWUgX1JlaGFzaFBvbGljeSwgdHlwZW5hbWUgX1RyYWl0cywKICAgIGJvb2wgX0NvbnN0YW50
X2l0ZXJhdG9ycyA9IF9UcmFpdHM6Ol9fY29uc3RhbnRfaXRlcmF0b3JzOjp2YWx1ZSwKICAgIGJv
b2wgX1VuaXF1ZV9rZXlzID0gX1RyYWl0czo6X191bmlxdWVfa2V5czo6dmFsdWU+CiAgICBzdHJ1
Y3QgX0luc2VydDsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5cGVuYW1lIF9WYWx1ZSwg
dHlwZW5hbWUgX0FsbG9jLAogICAgdHlwZW5hbWUgX0V4dHJhY3RLZXksIHR5cGVuYW1lIF9FcXVh
bCwKICAgIHR5cGVuYW1lIF9IMSwgdHlwZW5hbWUgX0gyLCB0eXBlbmFtZSBfSGFzaCwKICAgIHR5
cGVuYW1lIF9SZWhhc2hQb2xpY3ksIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdHJ1Y3QgX0luc2Vy
dDxfS2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwgX0gxLCBfSDIsIF9I
YXNoLAogICAgIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHMsIHRydWUsIHRydWU+CiAgICA6IHB1Ymxp
YyBfSW5zZXJ0X2Jhc2U8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBfRXF1YWws
CiAgICAgIF9IMSwgX0gyLCBfSGFzaCwgX1JlaGFzaFBvbGljeSwgX1RyYWl0cz4KICAgIHsKICAg
ICAgdXNpbmcgX19iYXNlX3R5cGUgPSBfSW5zZXJ0X2Jhc2U8X0tleSwgX1ZhbHVlLCBfQWxsb2Ms
IF9FeHRyYWN0S2V5LAogICAgIF9FcXVhbCwgX0gxLCBfSDIsIF9IYXNoLAogICAgIF9SZWhhc2hQ
b2xpY3ksIF9UcmFpdHM+OwogICAgICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgX19iYXNl
X3R5cGU6OnZhbHVlX3R5cGU7CiAgICAgIHVzaW5nIGl0ZXJhdG9yID0gdHlwZW5hbWUgX19iYXNl
X3R5cGU6Oml0ZXJhdG9yOwogICAgICB1c2luZyBjb25zdF9pdGVyYXRvciA9IHR5cGVuYW1lIF9f
YmFzZV90eXBlOjpjb25zdF9pdGVyYXRvcjsKCiAgICAgIHVzaW5nIF9fdW5pcXVlX2tleXMgPSB0
eXBlbmFtZSBfX2Jhc2VfdHlwZTo6X191bmlxdWVfa2V5czsKICAgICAgdXNpbmcgX19oYXNodGFi
bGUgPSB0eXBlbmFtZSBfX2Jhc2VfdHlwZTo6X19oYXNodGFibGU7CiAgICAgIHVzaW5nIF9fbm9k
ZV9nZW5fdHlwZSA9IHR5cGVuYW1lIF9fYmFzZV90eXBlOjpfX25vZGVfZ2VuX3R5cGU7CgogICAg
ICB1c2luZyBfX2Jhc2VfdHlwZTo6aW5zZXJ0OwoKICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBi
b29sPgogICAgICBpbnNlcnQodmFsdWVfdHlwZSYmIF9fdikKICAgICAgewogX19oYXNodGFibGUm
IF9faCA9IHRoaXMtPl9NX2Nvbmp1cmVfaGFzaHRhYmxlKCk7CiBfX25vZGVfZ2VuX3R5cGUgX19u
b2RlX2dlbihfX2gpOwogcmV0dXJuIF9faC5fTV9pbnNlcnQoc3RkOjptb3ZlKF9fdiksIF9fbm9k
ZV9nZW4sIF9fdW5pcXVlX2tleXMoKSk7CiAgICAgIH0KCiAgICAgIGl0ZXJhdG9yCiAgICAgIGlu
c2VydChjb25zdF9pdGVyYXRvciBfX2hpbnQsIHZhbHVlX3R5cGUmJiBfX3YpCiAgICAgIHsKIF9f
aGFzaHRhYmxlJiBfX2ggPSB0aGlzLT5fTV9jb25qdXJlX2hhc2h0YWJsZSgpOwogX19ub2RlX2dl
bl90eXBlIF9fbm9kZV9nZW4oX19oKTsKIHJldHVybiBfX2guX01faW5zZXJ0KF9faGludCwgc3Rk
Ojptb3ZlKF9fdiksIF9fbm9kZV9nZW4sCiAgICAgICAgX191bmlxdWVfa2V5cygpKTsKICAgICAg
fQogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5cGVuYW1lIF9WYWx1ZSwgdHlw
ZW5hbWUgX0FsbG9jLAogICAgdHlwZW5hbWUgX0V4dHJhY3RLZXksIHR5cGVuYW1lIF9FcXVhbCwK
ICAgIHR5cGVuYW1lIF9IMSwgdHlwZW5hbWUgX0gyLCB0eXBlbmFtZSBfSGFzaCwKICAgIHR5cGVu
YW1lIF9SZWhhc2hQb2xpY3ksIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdHJ1Y3QgX0luc2VydDxf
S2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwgX0gxLCBfSDIsIF9IYXNo
LAogICAgIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHMsIHRydWUsIGZhbHNlPgogICAgOiBwdWJsaWMg
X0luc2VydF9iYXNlPF9LZXksIF9WYWx1ZSwgX0FsbG9jLCBfRXh0cmFjdEtleSwgX0VxdWFsLAog
ICAgICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+CiAgICB7CiAgICAg
IHVzaW5nIF9fYmFzZV90eXBlID0gX0luc2VydF9iYXNlPF9LZXksIF9WYWx1ZSwgX0FsbG9jLCBf
RXh0cmFjdEtleSwKICAgICBfRXF1YWwsIF9IMSwgX0gyLCBfSGFzaCwKICAgICBfUmVoYXNoUG9s
aWN5LCBfVHJhaXRzPjsKICAgICAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIF9fYmFzZV90
eXBlOjp2YWx1ZV90eXBlOwogICAgICB1c2luZyBpdGVyYXRvciA9IHR5cGVuYW1lIF9fYmFzZV90
eXBlOjppdGVyYXRvcjsKICAgICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSB0eXBlbmFtZSBfX2Jh
c2VfdHlwZTo6Y29uc3RfaXRlcmF0b3I7CgogICAgICB1c2luZyBfX3VuaXF1ZV9rZXlzID0gdHlw
ZW5hbWUgX19iYXNlX3R5cGU6Ol9fdW5pcXVlX2tleXM7CiAgICAgIHVzaW5nIF9faGFzaHRhYmxl
ID0gdHlwZW5hbWUgX19iYXNlX3R5cGU6Ol9faGFzaHRhYmxlOwogICAgICB1c2luZyBfX25vZGVf
Z2VuX3R5cGUgPSB0eXBlbmFtZSBfX2Jhc2VfdHlwZTo6X19ub2RlX2dlbl90eXBlOwoKICAgICAg
dXNpbmcgX19iYXNlX3R5cGU6Omluc2VydDsKCiAgICAgIGl0ZXJhdG9yCiAgICAgIGluc2VydCh2
YWx1ZV90eXBlJiYgX192KQogICAgICB7CiBfX2hhc2h0YWJsZSYgX19oID0gdGhpcy0+X01fY29u
anVyZV9oYXNodGFibGUoKTsKIF9fbm9kZV9nZW5fdHlwZSBfX25vZGVfZ2VuKF9faCk7CiByZXR1
cm4gX19oLl9NX2luc2VydChzdGQ6Om1vdmUoX192KSwgX19ub2RlX2dlbiwgX191bmlxdWVfa2V5
cygpKTsKICAgICAgfQoKICAgICAgaXRlcmF0b3IKICAgICAgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9y
IF9faGludCwgdmFsdWVfdHlwZSYmIF9fdikKICAgICAgewogX19oYXNodGFibGUmIF9faCA9IHRo
aXMtPl9NX2Nvbmp1cmVfaGFzaHRhYmxlKCk7CiBfX25vZGVfZ2VuX3R5cGUgX19ub2RlX2dlbihf
X2gpOwogcmV0dXJuIF9faC5fTV9pbnNlcnQoX19oaW50LCBzdGQ6Om1vdmUoX192KSwgX19ub2Rl
X2dlbiwKICAgICAgICBfX3VuaXF1ZV9rZXlzKCkpOwogICAgICB9CiAgICB9OwoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLCB0eXBlbmFtZSBfQWxsb2MsCiAgICB0
eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlwZW5hbWUgX0VxdWFsLAogICAgdHlwZW5hbWUgX0gxLCB0
eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNoLAogICAgdHlwZW5hbWUgX1JlaGFzaFBvbGljeSwg
dHlwZW5hbWUgX1RyYWl0cywgYm9vbCBfVW5pcXVlX2tleXM+CiAgICBzdHJ1Y3QgX0luc2VydDxf
S2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwgX0gxLCBfSDIsIF9IYXNo
LAogICAgIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHMsIGZhbHNlLCBfVW5pcXVlX2tleXM+CiAgICA6
IHB1YmxpYyBfSW5zZXJ0X2Jhc2U8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBf
RXF1YWwsCiAgICAgIF9IMSwgX0gyLCBfSGFzaCwgX1JlaGFzaFBvbGljeSwgX1RyYWl0cz4KICAg
IHsKICAgICAgdXNpbmcgX19iYXNlX3R5cGUgPSBfSW5zZXJ0X2Jhc2U8X0tleSwgX1ZhbHVlLCBf
QWxsb2MsIF9FeHRyYWN0S2V5LAogICAgICAgICAgIF9FcXVhbCwgX0gxLCBfSDIsIF9IYXNoLAog
ICAgICAgICAgIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+OwogICAgICB1c2luZyB2YWx1ZV90eXBl
ID0gdHlwZW5hbWUgX19iYXNlX3R5cGU6OnZhbHVlX3R5cGU7CiAgICAgIHVzaW5nIGl0ZXJhdG9y
ID0gdHlwZW5hbWUgX19iYXNlX3R5cGU6Oml0ZXJhdG9yOwogICAgICB1c2luZyBjb25zdF9pdGVy
YXRvciA9IHR5cGVuYW1lIF9fYmFzZV90eXBlOjpjb25zdF9pdGVyYXRvcjsKCiAgICAgIHVzaW5n
IF9fdW5pcXVlX2tleXMgPSB0eXBlbmFtZSBfX2Jhc2VfdHlwZTo6X191bmlxdWVfa2V5czsKICAg
ICAgdXNpbmcgX19oYXNodGFibGUgPSB0eXBlbmFtZSBfX2Jhc2VfdHlwZTo6X19oYXNodGFibGU7
CiAgICAgIHVzaW5nIF9faXJldHVybl90eXBlID0gdHlwZW5hbWUgX19iYXNlX3R5cGU6Ol9faXJl
dHVybl90eXBlOwoKICAgICAgdXNpbmcgX19iYXNlX3R5cGU6Omluc2VydDsKCiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9QYWlyPgogdXNpbmcgX19pc19jb25zID0gc3RkOjppc19jb25zdHJ1Y3Rp
YmxlPHZhbHVlX3R5cGUsIF9QYWlyJiY+OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1BhaXI+
CiB1c2luZyBfSUZjb25zID0gc3RkOjplbmFibGVfaWY8X19pc19jb25zPF9QYWlyPjo6dmFsdWU+
OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1BhaXI+CiB1c2luZyBfSUZjb25zcCA9IHR5cGVu
YW1lIF9JRmNvbnM8X1BhaXI+Ojp0eXBlOwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1BhaXIs
IHR5cGVuYW1lID0gX0lGY29uc3A8X1BhaXI+PgogX19pcmV0dXJuX3R5cGUKIGluc2VydChfUGFp
ciYmIF9fdikKIHsKICAgX19oYXNodGFibGUmIF9faCA9IHRoaXMtPl9NX2Nvbmp1cmVfaGFzaHRh
YmxlKCk7CiAgIHJldHVybiBfX2guX01fZW1wbGFjZShfX3VuaXF1ZV9rZXlzKCksIHN0ZDo6Zm9y
d2FyZDxfUGFpcj4oX192KSk7CiB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUGFpciwgdHlw
ZW5hbWUgPSBfSUZjb25zcDxfUGFpcj4+CiBpdGVyYXRvcgogaW5zZXJ0KGNvbnN0X2l0ZXJhdG9y
IF9faGludCwgX1BhaXImJiBfX3YpCiB7CiAgIF9faGFzaHRhYmxlJiBfX2ggPSB0aGlzLT5fTV9j
b25qdXJlX2hhc2h0YWJsZSgpOwogICByZXR1cm4gX19oLl9NX2VtcGxhY2UoX19oaW50LCBfX3Vu
aXF1ZV9rZXlzKCksCiAgICBzdGQ6OmZvcndhcmQ8X1BhaXI+KF9fdikpOwogfQogICB9OwoKCgoK
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBfVmFsdWUsIHR5cGVuYW1lIF9B
bGxvYywKICAgIHR5cGVuYW1lIF9FeHRyYWN0S2V5LCB0eXBlbmFtZSBfRXF1YWwsCiAgICB0eXBl
bmFtZSBfSDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5hbWUgX0hhc2gsCiAgICB0eXBlbmFtZSBfUmVo
YXNoUG9saWN5LCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RydWN0IF9SZWhhc2hfYmFzZTsKCgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5cGVuYW1lIF9WYWx1ZSwgdHlwZW5hbWUgX0FsbG9j
LAogICAgdHlwZW5hbWUgX0V4dHJhY3RLZXksIHR5cGVuYW1lIF9FcXVhbCwKICAgIHR5cGVuYW1l
IF9IMSwgdHlwZW5hbWUgX0gyLCB0eXBlbmFtZSBfSGFzaCwgdHlwZW5hbWUgX1RyYWl0cz4KICAg
IHN0cnVjdCBfUmVoYXNoX2Jhc2U8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBf
RXF1YWwsCiAgIF9IMSwgX0gyLCBfSGFzaCwgX1ByaW1lX3JlaGFzaF9wb2xpY3ksIF9UcmFpdHM+
CiAgICB7CiAgICAgIHVzaW5nIF9faGFzaHRhYmxlID0gX0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUs
IF9BbGxvYywgX0V4dHJhY3RLZXksCiAgICAgICAgIF9FcXVhbCwgX0gxLCBfSDIsIF9IYXNoLAog
ICAgICAgICBfUHJpbWVfcmVoYXNoX3BvbGljeSwgX1RyYWl0cz47CgogICAgICBmbG9hdAogICAg
ICBtYXhfbG9hZF9mYWN0b3IoKSBjb25zdCBub2V4Y2VwdAogICAgICB7CiBjb25zdCBfX2hhc2h0
YWJsZSogX190aGlzID0gc3RhdGljX2Nhc3Q8Y29uc3QgX19oYXNodGFibGUqPih0aGlzKTsKIHJl
dHVybiBfX3RoaXMtPl9fcmVoYXNoX3BvbGljeSgpLm1heF9sb2FkX2ZhY3RvcigpOwogICAgICB9
CgogICAgICB2b2lkCiAgICAgIG1heF9sb2FkX2ZhY3RvcihmbG9hdCBfX3opCiAgICAgIHsKIF9f
aGFzaHRhYmxlKiBfX3RoaXMgPSBzdGF0aWNfY2FzdDxfX2hhc2h0YWJsZSo+KHRoaXMpOwogX190
aGlzLT5fX3JlaGFzaF9wb2xpY3koX1ByaW1lX3JlaGFzaF9wb2xpY3koX196KSk7CiAgICAgIH0K
CiAgICAgIHZvaWQKICAgICAgcmVzZXJ2ZShzdGQ6OnNpemVfdCBfX24pCiAgICAgIHsKIF9faGFz
aHRhYmxlKiBfX3RoaXMgPSBzdGF0aWNfY2FzdDxfX2hhc2h0YWJsZSo+KHRoaXMpOwogX190aGlz
LT5yZWhhc2goX19idWlsdGluX2NlaWwoX19uIC8gbWF4X2xvYWRfZmFjdG9yKCkpKTsKICAgICAg
fQogICAgfTsKCgoKCgoKCiAgdGVtcGxhdGU8aW50IF9ObSwgdHlwZW5hbWUgX1RwLAogICAgYm9v
bCBfX3VzZV9lYm8gPSAhX19pc19maW5hbChfVHApICYmIF9faXNfZW1wdHkoX1RwKT4KICAgIHN0
cnVjdCBfSGFzaHRhYmxlX2Vib19oZWxwZXI7CgoKICB0ZW1wbGF0ZTxpbnQgX05tLCB0eXBlbmFt
ZSBfVHA+CiAgICBzdHJ1Y3QgX0hhc2h0YWJsZV9lYm9faGVscGVyPF9ObSwgX1RwLCB0cnVlPgog
ICAgOiBwcml2YXRlIF9UcAogICAgewogICAgICBfSGFzaHRhYmxlX2Vib19oZWxwZXIoKSA9IGRl
ZmF1bHQ7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfT3RoZXJUcD4KIF9IYXNodGFibGVfZWJv
X2hlbHBlcihfT3RoZXJUcCYmIF9fdHApCiAgIDogX1RwKHN0ZDo6Zm9yd2FyZDxfT3RoZXJUcD4o
X190cCkpCiB7IH0KCiAgICAgIHN0YXRpYyBjb25zdCBfVHAmCiAgICAgIF9TX2NnZXQoY29uc3Qg
X0hhc2h0YWJsZV9lYm9faGVscGVyJiBfX2Vib2gpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IF9UcCY+KF9fZWJvaCk7IH0KCiAgICAgIHN0YXRpYyBfVHAmCiAgICAgIF9TX2dldChf
SGFzaHRhYmxlX2Vib19oZWxwZXImIF9fZWJvaCkKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
X1RwJj4oX19lYm9oKTsgfQogICAgfTsKCgogIHRlbXBsYXRlPGludCBfTm0sIHR5cGVuYW1lIF9U
cD4KICAgIHN0cnVjdCBfSGFzaHRhYmxlX2Vib19oZWxwZXI8X05tLCBfVHAsIGZhbHNlPgogICAg
ewogICAgICBfSGFzaHRhYmxlX2Vib19oZWxwZXIoKSA9IGRlZmF1bHQ7CgogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfT3RoZXJUcD4KIF9IYXNodGFibGVfZWJvX2hlbHBlcihfT3RoZXJUcCYmIF9f
dHApCiAgIDogX01fdHAoc3RkOjpmb3J3YXJkPF9PdGhlclRwPihfX3RwKSkKIHsgfQoKICAgICAg
c3RhdGljIGNvbnN0IF9UcCYKICAgICAgX1NfY2dldChjb25zdCBfSGFzaHRhYmxlX2Vib19oZWxw
ZXImIF9fZWJvaCkKICAgICAgeyByZXR1cm4gX19lYm9oLl9NX3RwOyB9CgogICAgICBzdGF0aWMg
X1RwJgogICAgICBfU19nZXQoX0hhc2h0YWJsZV9lYm9faGVscGVyJiBfX2Vib2gpCiAgICAgIHsg
cmV0dXJuIF9fZWJvaC5fTV90cDsgfQoKICAgIHByaXZhdGU6CiAgICAgIF9UcCBfTV90cDsKICAg
IH07CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5cGVuYW1lIF9WYWx1ZSwgdHlw
ZW5hbWUgX0V4dHJhY3RLZXksCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5h
bWUgX0hhc2gsCiAgICBib29sIF9fY2FjaGVfaGFzaF9jb2RlPgogICAgc3RydWN0IF9Mb2NhbF9p
dGVyYXRvcl9iYXNlOwojIDEwNTQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy9oYXNodGFibGVfcG9saWN5LmgiIDMKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBfVmFsdWUsIHR5cGVuYW1lIF9FeHRyYWN0S2V5LAog
ICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNoLAogICAgYm9vbCBf
X2NhY2hlX2hhc2hfY29kZT4KICAgIHN0cnVjdCBfSGFzaF9jb2RlX2Jhc2U7CgoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLCB0eXBlbmFtZSBfRXh0cmFjdEtleSwK
ICAgIHR5cGVuYW1lIF9IMSwgdHlwZW5hbWUgX0gyLCB0eXBlbmFtZSBfSGFzaD4KICAgIHN0cnVj
dCBfSGFzaF9jb2RlX2Jhc2U8X0tleSwgX1ZhbHVlLCBfRXh0cmFjdEtleSwgX0gxLCBfSDIsIF9I
YXNoLCBmYWxzZT4KICAgIDogcHJpdmF0ZSBfSGFzaHRhYmxlX2Vib19oZWxwZXI8MCwgX0V4dHJh
Y3RLZXk+LAogICAgICBwcml2YXRlIF9IYXNodGFibGVfZWJvX2hlbHBlcjwxLCBfSGFzaD4KICAg
IHsKICAgIHByaXZhdGU6CiAgICAgIHVzaW5nIF9fZWJvX2V4dHJhY3Rfa2V5ID0gX0hhc2h0YWJs
ZV9lYm9faGVscGVyPDAsIF9FeHRyYWN0S2V5PjsKICAgICAgdXNpbmcgX19lYm9faGFzaCA9IF9I
YXNodGFibGVfZWJvX2hlbHBlcjwxLCBfSGFzaD47CgogICAgcHJvdGVjdGVkOgogICAgICB0eXBl
ZGVmIHZvaWQqIF9faGFzaF9jb2RlOwogICAgICB0eXBlZGVmIF9IYXNoX25vZGU8X1ZhbHVlLCBm
YWxzZT4gX19ub2RlX3R5cGU7CgoKICAgICAgX0hhc2hfY29kZV9iYXNlKCkgPSBkZWZhdWx0OwoK
ICAgICAgX0hhc2hfY29kZV9iYXNlKGNvbnN0IF9FeHRyYWN0S2V5JiBfX2V4LCBjb25zdCBfSDEm
LCBjb25zdCBfSDImLAogICAgICAgIGNvbnN0IF9IYXNoJiBfX2gpCiAgICAgIDogX19lYm9fZXh0
cmFjdF9rZXkoX19leCksIF9fZWJvX2hhc2goX19oKSB7IH0KCiAgICAgIF9faGFzaF9jb2RlCiAg
ICAgIF9NX2hhc2hfY29kZShjb25zdCBfS2V5JiBfX2tleSkgY29uc3QKICAgICAgeyByZXR1cm4g
MDsgfQoKICAgICAgc3RkOjpzaXplX3QKICAgICAgX01fYnVja2V0X2luZGV4KGNvbnN0IF9LZXkm
IF9faywgX19oYXNoX2NvZGUsIHN0ZDo6c2l6ZV90IF9fbikgY29uc3QKICAgICAgeyByZXR1cm4g
X01fcmFuZ2VkX2hhc2goKShfX2ssIF9fbik7IH0KCiAgICAgIHN0ZDo6c2l6ZV90CiAgICAgIF9N
X2J1Y2tldF9pbmRleChjb25zdCBfX25vZGVfdHlwZSogX19wLCBzdGQ6OnNpemVfdCBfX24pIGNv
bnN0CiBub2V4Y2VwdCggbm9leGNlcHQoZGVjbHZhbDxjb25zdCBfSGFzaCY+KCkoZGVjbHZhbDxj
b25zdCBfS2V5Jj4oKSwKICAgICAgICAgKHN0ZDo6c2l6ZV90KTApKSApCiAgICAgIHsgcmV0dXJu
IF9NX3JhbmdlZF9oYXNoKCkoX01fZXh0cmFjdCgpKF9fcC0+X01fdigpKSwgX19uKTsgfQoKICAg
ICAgdm9pZAogICAgICBfTV9zdG9yZV9jb2RlKF9fbm9kZV90eXBlKiwgX19oYXNoX2NvZGUpIGNv
bnN0CiAgICAgIHsgfQoKICAgICAgdm9pZAogICAgICBfTV9jb3B5X2NvZGUoX19ub2RlX3R5cGUq
LCBjb25zdCBfX25vZGVfdHlwZSopIGNvbnN0CiAgICAgIHsgfQoKICAgICAgdm9pZAogICAgICBf
TV9zd2FwKF9IYXNoX2NvZGVfYmFzZSYgX194KQogICAgICB7CiBzdGQ6OnN3YXAoX01fZXh0cmFj
dCgpLCBfX3guX01fZXh0cmFjdCgpKTsKIHN0ZDo6c3dhcChfTV9yYW5nZWRfaGFzaCgpLCBfX3gu
X01fcmFuZ2VkX2hhc2goKSk7CiAgICAgIH0KCiAgICAgIGNvbnN0IF9FeHRyYWN0S2V5JgogICAg
ICBfTV9leHRyYWN0KCkgY29uc3QgeyByZXR1cm4gX19lYm9fZXh0cmFjdF9rZXk6Ol9TX2NnZXQo
KnRoaXMpOyB9CgogICAgICBfRXh0cmFjdEtleSYKICAgICAgX01fZXh0cmFjdCgpIHsgcmV0dXJu
IF9fZWJvX2V4dHJhY3Rfa2V5OjpfU19nZXQoKnRoaXMpOyB9CgogICAgICBjb25zdCBfSGFzaCYK
ICAgICAgX01fcmFuZ2VkX2hhc2goKSBjb25zdCB7IHJldHVybiBfX2Vib19oYXNoOjpfU19jZ2V0
KCp0aGlzKTsgfQoKICAgICAgX0hhc2gmCiAgICAgIF9NX3JhbmdlZF9oYXNoKCkgeyByZXR1cm4g
X19lYm9faGFzaDo6X1NfZ2V0KCp0aGlzKTsgfQogICAgfTsKCgoKCgoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLCB0eXBlbmFtZSBfRXh0cmFjdEtleSwKICAgIHR5
cGVuYW1lIF9IMSwgdHlwZW5hbWUgX0gyLCB0eXBlbmFtZSBfSGFzaD4KICAgIHN0cnVjdCBfSGFz
aF9jb2RlX2Jhc2U8X0tleSwgX1ZhbHVlLCBfRXh0cmFjdEtleSwgX0gxLCBfSDIsIF9IYXNoLCB0
cnVlPjsKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLCB0eXBl
bmFtZSBfRXh0cmFjdEtleSwKICAgIHR5cGVuYW1lIF9IMSwgdHlwZW5hbWUgX0gyPgogICAgc3Ry
dWN0IF9IYXNoX2NvZGVfYmFzZTxfS2V5LCBfVmFsdWUsIF9FeHRyYWN0S2V5LCBfSDEsIF9IMiwK
ICAgICAgX0RlZmF1bHRfcmFuZ2VkX2hhc2gsIGZhbHNlPgogICAgOiBwcml2YXRlIF9IYXNodGFi
bGVfZWJvX2hlbHBlcjwwLCBfRXh0cmFjdEtleT4sCiAgICAgIHByaXZhdGUgX0hhc2h0YWJsZV9l
Ym9faGVscGVyPDEsIF9IMT4sCiAgICAgIHByaXZhdGUgX0hhc2h0YWJsZV9lYm9faGVscGVyPDIs
IF9IMj4KICAgIHsKICAgIHByaXZhdGU6CiAgICAgIHVzaW5nIF9fZWJvX2V4dHJhY3Rfa2V5ID0g
X0hhc2h0YWJsZV9lYm9faGVscGVyPDAsIF9FeHRyYWN0S2V5PjsKICAgICAgdXNpbmcgX19lYm9f
aDEgPSBfSGFzaHRhYmxlX2Vib19oZWxwZXI8MSwgX0gxPjsKICAgICAgdXNpbmcgX19lYm9faDIg
PSBfSGFzaHRhYmxlX2Vib19oZWxwZXI8MiwgX0gyPjsKCgogICAgICBmcmllbmQgc3RydWN0IF9M
b2NhbF9pdGVyYXRvcl9iYXNlPF9LZXksIF9WYWx1ZSwgX0V4dHJhY3RLZXksIF9IMSwgX0gyLAog
ICAgICBfRGVmYXVsdF9yYW5nZWRfaGFzaCwgZmFsc2U+OwoKICAgIHB1YmxpYzoKICAgICAgdHlw
ZWRlZiBfSDEgaGFzaGVyOwoKICAgICAgaGFzaGVyCiAgICAgIGhhc2hfZnVuY3Rpb24oKSBjb25z
dAogICAgICB7IHJldHVybiBfTV9oMSgpOyB9CgogICAgcHJvdGVjdGVkOgogICAgICB0eXBlZGVm
IHN0ZDo6c2l6ZV90IF9faGFzaF9jb2RlOwogICAgICB0eXBlZGVmIF9IYXNoX25vZGU8X1ZhbHVl
LCBmYWxzZT4gX19ub2RlX3R5cGU7CgoKICAgICAgX0hhc2hfY29kZV9iYXNlKCkgPSBkZWZhdWx0
OwoKICAgICAgX0hhc2hfY29kZV9iYXNlKGNvbnN0IF9FeHRyYWN0S2V5JiBfX2V4LAogICAgICAg
IGNvbnN0IF9IMSYgX19oMSwgY29uc3QgX0gyJiBfX2gyLAogICAgICAgIGNvbnN0IF9EZWZhdWx0
X3JhbmdlZF9oYXNoJikKICAgICAgOiBfX2Vib19leHRyYWN0X2tleShfX2V4KSwgX19lYm9faDEo
X19oMSksIF9fZWJvX2gyKF9faDIpIHsgfQoKICAgICAgX19oYXNoX2NvZGUKICAgICAgX01faGFz
aF9jb2RlKGNvbnN0IF9LZXkmIF9faykgY29uc3QKICAgICAgeyByZXR1cm4gX01faDEoKShfX2sp
OyB9CgogICAgICBzdGQ6OnNpemVfdAogICAgICBfTV9idWNrZXRfaW5kZXgoY29uc3QgX0tleSYs
IF9faGFzaF9jb2RlIF9fYywgc3RkOjpzaXplX3QgX19uKSBjb25zdAogICAgICB7IHJldHVybiBf
TV9oMigpKF9fYywgX19uKTsgfQoKICAgICAgc3RkOjpzaXplX3QKICAgICAgX01fYnVja2V0X2lu
ZGV4KGNvbnN0IF9fbm9kZV90eXBlKiBfX3AsIHN0ZDo6c2l6ZV90IF9fbikgY29uc3QKIG5vZXhj
ZXB0KCBub2V4Y2VwdChkZWNsdmFsPGNvbnN0IF9IMSY+KCkoZGVjbHZhbDxjb25zdCBfS2V5Jj4o
KSkpCiAgICAmJiBub2V4Y2VwdChkZWNsdmFsPGNvbnN0IF9IMiY+KCkoKF9faGFzaF9jb2RlKTAs
CiAgICAgICAgICAoc3RkOjpzaXplX3QpMCkpICkKICAgICAgeyByZXR1cm4gX01faDIoKShfTV9o
MSgpKF9NX2V4dHJhY3QoKShfX3AtPl9NX3YoKSkpLCBfX24pOyB9CgogICAgICB2b2lkCiAgICAg
IF9NX3N0b3JlX2NvZGUoX19ub2RlX3R5cGUqLCBfX2hhc2hfY29kZSkgY29uc3QKICAgICAgeyB9
CgogICAgICB2b2lkCiAgICAgIF9NX2NvcHlfY29kZShfX25vZGVfdHlwZSosIGNvbnN0IF9fbm9k
ZV90eXBlKikgY29uc3QKICAgICAgeyB9CgogICAgICB2b2lkCiAgICAgIF9NX3N3YXAoX0hhc2hf
Y29kZV9iYXNlJiBfX3gpCiAgICAgIHsKIHN0ZDo6c3dhcChfTV9leHRyYWN0KCksIF9feC5fTV9l
eHRyYWN0KCkpOwogc3RkOjpzd2FwKF9NX2gxKCksIF9feC5fTV9oMSgpKTsKIHN0ZDo6c3dhcChf
TV9oMigpLCBfX3guX01faDIoKSk7CiAgICAgIH0KCiAgICAgIGNvbnN0IF9FeHRyYWN0S2V5Jgog
ICAgICBfTV9leHRyYWN0KCkgY29uc3QgeyByZXR1cm4gX19lYm9fZXh0cmFjdF9rZXk6Ol9TX2Nn
ZXQoKnRoaXMpOyB9CgogICAgICBfRXh0cmFjdEtleSYKICAgICAgX01fZXh0cmFjdCgpIHsgcmV0
dXJuIF9fZWJvX2V4dHJhY3Rfa2V5OjpfU19nZXQoKnRoaXMpOyB9CgogICAgICBjb25zdCBfSDEm
CiAgICAgIF9NX2gxKCkgY29uc3QgeyByZXR1cm4gX19lYm9faDE6Ol9TX2NnZXQoKnRoaXMpOyB9
CgogICAgICBfSDEmCiAgICAgIF9NX2gxKCkgeyByZXR1cm4gX19lYm9faDE6Ol9TX2dldCgqdGhp
cyk7IH0KCiAgICAgIGNvbnN0IF9IMiYKICAgICAgX01faDIoKSBjb25zdCB7IHJldHVybiBfX2Vi
b19oMjo6X1NfY2dldCgqdGhpcyk7IH0KCiAgICAgIF9IMiYKICAgICAgX01faDIoKSB7IHJldHVy
biBfX2Vib19oMjo6X1NfZ2V0KCp0aGlzKTsgfQogICAgfTsKCgoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLCB0eXBlbmFtZSBfRXh0cmFjdEtleSwKICAgIHR5cGVu
YW1lIF9IMSwgdHlwZW5hbWUgX0gyPgogICAgc3RydWN0IF9IYXNoX2NvZGVfYmFzZTxfS2V5LCBf
VmFsdWUsIF9FeHRyYWN0S2V5LCBfSDEsIF9IMiwKICAgICAgX0RlZmF1bHRfcmFuZ2VkX2hhc2gs
IHRydWU+CiAgICA6IHByaXZhdGUgX0hhc2h0YWJsZV9lYm9faGVscGVyPDAsIF9FeHRyYWN0S2V5
PiwKICAgICAgcHJpdmF0ZSBfSGFzaHRhYmxlX2Vib19oZWxwZXI8MSwgX0gxPiwKICAgICAgcHJp
dmF0ZSBfSGFzaHRhYmxlX2Vib19oZWxwZXI8MiwgX0gyPgogICAgewogICAgcHJpdmF0ZToKCiAg
ICAgIGZyaWVuZCBzdHJ1Y3QgX0xvY2FsX2l0ZXJhdG9yX2Jhc2U8X0tleSwgX1ZhbHVlLCBfRXh0
cmFjdEtleSwgX0gxLCBfSDIsCiAgICAgIF9EZWZhdWx0X3JhbmdlZF9oYXNoLCB0cnVlPjsKCiAg
ICAgIHVzaW5nIF9fZWJvX2V4dHJhY3Rfa2V5ID0gX0hhc2h0YWJsZV9lYm9faGVscGVyPDAsIF9F
eHRyYWN0S2V5PjsKICAgICAgdXNpbmcgX19lYm9faDEgPSBfSGFzaHRhYmxlX2Vib19oZWxwZXI8
MSwgX0gxPjsKICAgICAgdXNpbmcgX19lYm9faDIgPSBfSGFzaHRhYmxlX2Vib19oZWxwZXI8Miwg
X0gyPjsKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX0gxIGhhc2hlcjsKCiAgICAgIGhhc2hl
cgogICAgICBoYXNoX2Z1bmN0aW9uKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01faDEoKTsgfQoK
ICAgIHByb3RlY3RlZDoKICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCBfX2hhc2hfY29kZTsKICAg
ICAgdHlwZWRlZiBfSGFzaF9ub2RlPF9WYWx1ZSwgdHJ1ZT4gX19ub2RlX3R5cGU7CgogICAgICBf
SGFzaF9jb2RlX2Jhc2UoY29uc3QgX0V4dHJhY3RLZXkmIF9fZXgsCiAgICAgICAgY29uc3QgX0gx
JiBfX2gxLCBjb25zdCBfSDImIF9faDIsCiAgICAgICAgY29uc3QgX0RlZmF1bHRfcmFuZ2VkX2hh
c2gmKQogICAgICA6IF9fZWJvX2V4dHJhY3Rfa2V5KF9fZXgpLCBfX2Vib19oMShfX2gxKSwgX19l
Ym9faDIoX19oMikgeyB9CgogICAgICBfX2hhc2hfY29kZQogICAgICBfTV9oYXNoX2NvZGUoY29u
c3QgX0tleSYgX19rKSBjb25zdAogICAgICB7IHJldHVybiBfTV9oMSgpKF9fayk7IH0KCiAgICAg
IHN0ZDo6c2l6ZV90CiAgICAgIF9NX2J1Y2tldF9pbmRleChjb25zdCBfS2V5JiwgX19oYXNoX2Nv
ZGUgX19jLAogICAgICAgIHN0ZDo6c2l6ZV90IF9fbikgY29uc3QKICAgICAgeyByZXR1cm4gX01f
aDIoKShfX2MsIF9fbik7IH0KCiAgICAgIHN0ZDo6c2l6ZV90CiAgICAgIF9NX2J1Y2tldF9pbmRl
eChjb25zdCBfX25vZGVfdHlwZSogX19wLCBzdGQ6OnNpemVfdCBfX24pIGNvbnN0CiBub2V4Y2Vw
dCggbm9leGNlcHQoZGVjbHZhbDxjb25zdCBfSDImPigpKChfX2hhc2hfY29kZSkwLAogICAgICAg
KHN0ZDo6c2l6ZV90KTApKSApCiAgICAgIHsgcmV0dXJuIF9NX2gyKCkoX19wLT5fTV9oYXNoX2Nv
ZGUsIF9fbik7IH0KCiAgICAgIHZvaWQKICAgICAgX01fc3RvcmVfY29kZShfX25vZGVfdHlwZSog
X19uLCBfX2hhc2hfY29kZSBfX2MpIGNvbnN0CiAgICAgIHsgX19uLT5fTV9oYXNoX2NvZGUgPSBf
X2M7IH0KCiAgICAgIHZvaWQKICAgICAgX01fY29weV9jb2RlKF9fbm9kZV90eXBlKiBfX3RvLCBj
b25zdCBfX25vZGVfdHlwZSogX19mcm9tKSBjb25zdAogICAgICB7IF9fdG8tPl9NX2hhc2hfY29k
ZSA9IF9fZnJvbS0+X01faGFzaF9jb2RlOyB9CgogICAgICB2b2lkCiAgICAgIF9NX3N3YXAoX0hh
c2hfY29kZV9iYXNlJiBfX3gpCiAgICAgIHsKIHN0ZDo6c3dhcChfTV9leHRyYWN0KCksIF9feC5f
TV9leHRyYWN0KCkpOwogc3RkOjpzd2FwKF9NX2gxKCksIF9feC5fTV9oMSgpKTsKIHN0ZDo6c3dh
cChfTV9oMigpLCBfX3guX01faDIoKSk7CiAgICAgIH0KCiAgICAgIGNvbnN0IF9FeHRyYWN0S2V5
JgogICAgICBfTV9leHRyYWN0KCkgY29uc3QgeyByZXR1cm4gX19lYm9fZXh0cmFjdF9rZXk6Ol9T
X2NnZXQoKnRoaXMpOyB9CgogICAgICBfRXh0cmFjdEtleSYKICAgICAgX01fZXh0cmFjdCgpIHsg
cmV0dXJuIF9fZWJvX2V4dHJhY3Rfa2V5OjpfU19nZXQoKnRoaXMpOyB9CgogICAgICBjb25zdCBf
SDEmCiAgICAgIF9NX2gxKCkgY29uc3QgeyByZXR1cm4gX19lYm9faDE6Ol9TX2NnZXQoKnRoaXMp
OyB9CgogICAgICBfSDEmCiAgICAgIF9NX2gxKCkgeyByZXR1cm4gX19lYm9faDE6Ol9TX2dldCgq
dGhpcyk7IH0KCiAgICAgIGNvbnN0IF9IMiYKICAgICAgX01faDIoKSBjb25zdCB7IHJldHVybiBf
X2Vib19oMjo6X1NfY2dldCgqdGhpcyk7IH0KCiAgICAgIF9IMiYKICAgICAgX01faDIoKSB7IHJl
dHVybiBfX2Vib19oMjo6X1NfZ2V0KCp0aGlzKTsgfQogICAgfTsKCgoKCgogIHRlbXBsYXRlIDx0
eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBfVmFsdWUsIHR5cGVuYW1lIF9FeHRyYWN0S2V5LAogICAg
IHR5cGVuYW1lIF9FcXVhbCwgdHlwZW5hbWUgX0hhc2hDb2RlVHlwZSwKICAgICBib29sIF9fY2Fj
aGVfaGFzaF9jb2RlPgogIHN0cnVjdCBfRXF1YWxfaGVscGVyOwoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLCB0eXBlbmFtZSBfRXh0cmFjdEtleSwKICAgIHR5cGVu
YW1lIF9FcXVhbCwgdHlwZW5hbWUgX0hhc2hDb2RlVHlwZT4KICBzdHJ1Y3QgX0VxdWFsX2hlbHBl
cjxfS2V5LCBfVmFsdWUsIF9FeHRyYWN0S2V5LCBfRXF1YWwsIF9IYXNoQ29kZVR5cGUsIHRydWU+
CiAgewogICAgc3RhdGljIGJvb2wKICAgIF9TX2VxdWFscyhjb25zdCBfRXF1YWwmIF9fZXEsIGNv
bnN0IF9FeHRyYWN0S2V5JiBfX2V4dHJhY3QsCiAgICAgICBjb25zdCBfS2V5JiBfX2ssIF9IYXNo
Q29kZVR5cGUgX19jLCBfSGFzaF9ub2RlPF9WYWx1ZSwgdHJ1ZT4qIF9fbikKICAgIHsgcmV0dXJu
IF9fYyA9PSBfX24tPl9NX2hhc2hfY29kZSAmJiBfX2VxKF9faywgX19leHRyYWN0KF9fbi0+X01f
digpKSk7IH0KICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVl
LCB0eXBlbmFtZSBfRXh0cmFjdEtleSwKICAgIHR5cGVuYW1lIF9FcXVhbCwgdHlwZW5hbWUgX0hh
c2hDb2RlVHlwZT4KICBzdHJ1Y3QgX0VxdWFsX2hlbHBlcjxfS2V5LCBfVmFsdWUsIF9FeHRyYWN0
S2V5LCBfRXF1YWwsIF9IYXNoQ29kZVR5cGUsIGZhbHNlPgogIHsKICAgIHN0YXRpYyBib29sCiAg
ICBfU19lcXVhbHMoY29uc3QgX0VxdWFsJiBfX2VxLCBjb25zdCBfRXh0cmFjdEtleSYgX19leHRy
YWN0LAogICAgICAgY29uc3QgX0tleSYgX19rLCBfSGFzaENvZGVUeXBlLCBfSGFzaF9ub2RlPF9W
YWx1ZSwgZmFsc2U+KiBfX24pCiAgICB7IHJldHVybiBfX2VxKF9faywgX19leHRyYWN0KF9fbi0+
X01fdigpKSk7IH0KICB9OwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5cGVuYW1lIF9W
YWx1ZSwgdHlwZW5hbWUgX0V4dHJhY3RLZXksCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVuYW1lIF9I
MiwgdHlwZW5hbWUgX0hhc2g+CiAgICBzdHJ1Y3QgX0xvY2FsX2l0ZXJhdG9yX2Jhc2U8X0tleSwg
X1ZhbHVlLCBfRXh0cmFjdEtleSwKICAgIF9IMSwgX0gyLCBfSGFzaCwgdHJ1ZT4KICAgIDogcHJp
dmF0ZSBfSGFzaHRhYmxlX2Vib19oZWxwZXI8MCwgX0gyPgogICAgewogICAgcHJvdGVjdGVkOgog
ICAgICB1c2luZyBfX2Jhc2VfdHlwZSA9IF9IYXNodGFibGVfZWJvX2hlbHBlcjwwLCBfSDI+Owog
ICAgICB1c2luZyBfX2hhc2hfY29kZV9iYXNlID0gX0hhc2hfY29kZV9iYXNlPF9LZXksIF9WYWx1
ZSwgX0V4dHJhY3RLZXksCiAgICAgICAgICAgIF9IMSwgX0gyLCBfSGFzaCwgdHJ1ZT47CgogICAg
ICBfTG9jYWxfaXRlcmF0b3JfYmFzZSgpID0gZGVmYXVsdDsKICAgICAgX0xvY2FsX2l0ZXJhdG9y
X2Jhc2UoY29uc3QgX19oYXNoX2NvZGVfYmFzZSYgX19iYXNlLAogICAgICBfSGFzaF9ub2RlPF9W
YWx1ZSwgdHJ1ZT4qIF9fcCwKICAgICAgc3RkOjpzaXplX3QgX19ia3QsIHN0ZDo6c2l6ZV90IF9f
Ymt0X2NvdW50KQogICAgICA6IF9fYmFzZV90eXBlKF9fYmFzZS5fTV9oMigpKSwKIF9NX2N1cihf
X3ApLCBfTV9idWNrZXQoX19ia3QpLCBfTV9idWNrZXRfY291bnQoX19ia3RfY291bnQpIHsgfQoK
ICAgICAgdm9pZAogICAgICBfTV9pbmNyKCkKICAgICAgewogX01fY3VyID0gX01fY3VyLT5fTV9u
ZXh0KCk7CiBpZiAoX01fY3VyKQogICB7CiAgICAgc3RkOjpzaXplX3QgX19ia3QKICAgICAgID0g
X19iYXNlX3R5cGU6Ol9TX2dldCgqdGhpcykoX01fY3VyLT5fTV9oYXNoX2NvZGUsCiAgICAgICAg
X01fYnVja2V0X2NvdW50KTsKICAgICBpZiAoX19ia3QgIT0gX01fYnVja2V0KQogICAgICAgX01f
Y3VyID0gbnVsbHB0cjsKICAgfQogICAgICB9CgogICAgICBfSGFzaF9ub2RlPF9WYWx1ZSwgdHJ1
ZT4qIF9NX2N1cjsKICAgICAgc3RkOjpzaXplX3QgX01fYnVja2V0OwogICAgICBzdGQ6OnNpemVf
dCBfTV9idWNrZXRfY291bnQ7CgogICAgcHVibGljOgogICAgICBjb25zdCB2b2lkKgogICAgICBf
TV9jdXJyKCkgY29uc3QgeyByZXR1cm4gX01fY3VyOyB9CgogICAgICBzdGQ6OnNpemVfdAogICAg
ICBfTV9nZXRfYnVja2V0KCkgY29uc3QgeyByZXR1cm4gX01fYnVja2V0OyB9CiAgICB9OwoKCgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBib29sIF9Jc0VtcHR5ID0gc3RkOjppc19lbXB0eTxf
VHA+Ojp2YWx1ZT4KICAgIHN0cnVjdCBfSGFzaF9jb2RlX3N0b3JhZ2UKICAgIHsKICAgICAgX19n
bnVfY3h4OjpfX2FsaWduZWRfYnVmZmVyPF9UcD4gX01fc3RvcmFnZTsKCiAgICAgIF9UcCoKICAg
ICAgX01faCgpIHsgcmV0dXJuIF9NX3N0b3JhZ2UuX01fcHRyKCk7IH0KCiAgICAgIGNvbnN0IF9U
cCoKICAgICAgX01faCgpIGNvbnN0IHsgcmV0dXJuIF9NX3N0b3JhZ2UuX01fcHRyKCk7IH0KICAg
IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX0hhc2hfY29kZV9zdG9y
YWdlPF9UcCwgdHJ1ZT4KICAgIHsKICAgICAgc3RhdGljX2Fzc2VydCggc3RkOjppc19lbXB0eTxf
VHA+Ojp2YWx1ZSwgIlR5cGUgbXVzdCBiZSBlbXB0eSIgKTsKCgoKICAgICAgX1RwKgogICAgICBf
TV9oKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxfVHAqPih0aGlzKTsgfQoKICAgICAgY29u
c3QgX1RwKgogICAgICBfTV9oKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBfVHAqPih0aGlzKTsgfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5h
bWUgX1ZhbHVlLCB0eXBlbmFtZSBfRXh0cmFjdEtleSwKICAgIHR5cGVuYW1lIF9IMSwgdHlwZW5h
bWUgX0gyLCB0eXBlbmFtZSBfSGFzaD4KICAgIHVzaW5nIF9faGFzaF9jb2RlX2Zvcl9sb2NhbF9p
dGVyCiAgICAgID0gX0hhc2hfY29kZV9zdG9yYWdlPF9IYXNoX2NvZGVfYmFzZTxfS2V5LCBfVmFs
dWUsIF9FeHRyYWN0S2V5LAogICAgICAgIF9IMSwgX0gyLCBfSGFzaCwgZmFsc2U+PjsKCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5cGVuYW1lIF9WYWx1ZSwgdHlwZW5hbWUgX0V4dHJhY3RL
ZXksCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5hbWUgX0hhc2g+CiAgICBz
dHJ1Y3QgX0xvY2FsX2l0ZXJhdG9yX2Jhc2U8X0tleSwgX1ZhbHVlLCBfRXh0cmFjdEtleSwKICAg
IF9IMSwgX0gyLCBfSGFzaCwgZmFsc2U+CiAgICA6IF9faGFzaF9jb2RlX2Zvcl9sb2NhbF9pdGVy
PF9LZXksIF9WYWx1ZSwgX0V4dHJhY3RLZXksIF9IMSwgX0gyLCBfSGFzaD4KICAgIHsKICAgIHBy
b3RlY3RlZDoKICAgICAgdXNpbmcgX19oYXNoX2NvZGVfYmFzZSA9IF9IYXNoX2NvZGVfYmFzZTxf
S2V5LCBfVmFsdWUsIF9FeHRyYWN0S2V5LAogICAgICAgICAgICBfSDEsIF9IMiwgX0hhc2gsIGZh
bHNlPjsKCiAgICAgIF9Mb2NhbF9pdGVyYXRvcl9iYXNlKCkgOiBfTV9idWNrZXRfY291bnQoLTEp
IHsgfQoKICAgICAgX0xvY2FsX2l0ZXJhdG9yX2Jhc2UoY29uc3QgX19oYXNoX2NvZGVfYmFzZSYg
X19iYXNlLAogICAgICBfSGFzaF9ub2RlPF9WYWx1ZSwgZmFsc2U+KiBfX3AsCiAgICAgIHN0ZDo6
c2l6ZV90IF9fYmt0LCBzdGQ6OnNpemVfdCBfX2JrdF9jb3VudCkKICAgICAgOiBfTV9jdXIoX19w
KSwgX01fYnVja2V0KF9fYmt0KSwgX01fYnVja2V0X2NvdW50KF9fYmt0X2NvdW50KQogICAgICB7
IF9NX2luaXQoX19iYXNlKTsgfQoKICAgICAgfl9Mb2NhbF9pdGVyYXRvcl9iYXNlKCkKICAgICAg
ewogaWYgKF9NX2J1Y2tldF9jb3VudCAhPSAtMSkKICAgX01fZGVzdHJveSgpOwogICAgICB9Cgog
ICAgICBfTG9jYWxfaXRlcmF0b3JfYmFzZShjb25zdCBfTG9jYWxfaXRlcmF0b3JfYmFzZSYgX19p
dGVyKQogICAgICA6IF9NX2N1cihfX2l0ZXIuX01fY3VyKSwgX01fYnVja2V0KF9faXRlci5fTV9i
dWNrZXQpLAogICAgICAgIF9NX2J1Y2tldF9jb3VudChfX2l0ZXIuX01fYnVja2V0X2NvdW50KQog
ICAgICB7CiBpZiAoX01fYnVja2V0X2NvdW50ICE9IC0xKQogICBfTV9pbml0KCpfX2l0ZXIuX01f
aCgpKTsKICAgICAgfQoKICAgICAgX0xvY2FsX2l0ZXJhdG9yX2Jhc2UmCiAgICAgIG9wZXJhdG9y
PShjb25zdCBfTG9jYWxfaXRlcmF0b3JfYmFzZSYgX19pdGVyKQogICAgICB7CiBpZiAoX01fYnVj
a2V0X2NvdW50ICE9IC0xKQogICBfTV9kZXN0cm95KCk7CiBfTV9jdXIgPSBfX2l0ZXIuX01fY3Vy
OwogX01fYnVja2V0ID0gX19pdGVyLl9NX2J1Y2tldDsKIF9NX2J1Y2tldF9jb3VudCA9IF9faXRl
ci5fTV9idWNrZXRfY291bnQ7CiBpZiAoX01fYnVja2V0X2NvdW50ICE9IC0xKQogICBfTV9pbml0
KCpfX2l0ZXIuX01faCgpKTsKIHJldHVybiAqdGhpczsKICAgICAgfQoKICAgICAgdm9pZAogICAg
ICBfTV9pbmNyKCkKICAgICAgewogX01fY3VyID0gX01fY3VyLT5fTV9uZXh0KCk7CiBpZiAoX01f
Y3VyKQogICB7CiAgICAgc3RkOjpzaXplX3QgX19ia3QgPSB0aGlzLT5fTV9oKCktPl9NX2J1Y2tl
dF9pbmRleChfTV9jdXIsCiAgICAgICAgICAgICBfTV9idWNrZXRfY291bnQpOwogICAgIGlmIChf
X2JrdCAhPSBfTV9idWNrZXQpCiAgICAgICBfTV9jdXIgPSBudWxscHRyOwogICB9CiAgICAgIH0K
CiAgICAgIF9IYXNoX25vZGU8X1ZhbHVlLCBmYWxzZT4qIF9NX2N1cjsKICAgICAgc3RkOjpzaXpl
X3QgX01fYnVja2V0OwogICAgICBzdGQ6OnNpemVfdCBfTV9idWNrZXRfY291bnQ7CgogICAgICB2
b2lkCiAgICAgIF9NX2luaXQoY29uc3QgX19oYXNoX2NvZGVfYmFzZSYgX19iYXNlKQogICAgICB7
IDo6bmV3KHRoaXMtPl9NX2goKSkgX19oYXNoX2NvZGVfYmFzZShfX2Jhc2UpOyB9CgogICAgICB2
b2lkCiAgICAgIF9NX2Rlc3Ryb3koKSB7IHRoaXMtPl9NX2goKS0+fl9faGFzaF9jb2RlX2Jhc2Uo
KTsgfQoKICAgIHB1YmxpYzoKICAgICAgY29uc3Qgdm9pZCoKICAgICAgX01fY3VycigpIGNvbnN0
IHsgcmV0dXJuIF9NX2N1cjsgfQoKICAgICAgc3RkOjpzaXplX3QKICAgICAgX01fZ2V0X2J1Y2tl
dCgpIGNvbnN0IHsgcmV0dXJuIF9NX2J1Y2tldDsgfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLCB0eXBlbmFtZSBfRXh0cmFjdEtleSwKICAgIHR5cGVu
YW1lIF9IMSwgdHlwZW5hbWUgX0gyLCB0eXBlbmFtZSBfSGFzaCwgYm9vbCBfX2NhY2hlPgogICAg
aW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgX0xvY2FsX2l0ZXJhdG9yX2Jhc2U8X0tl
eSwgX1ZhbHVlLCBfRXh0cmFjdEtleSwKICAgICAgIF9IMSwgX0gyLCBfSGFzaCwgX19jYWNoZT4m
IF9feCwKICAgICAgICBjb25zdCBfTG9jYWxfaXRlcmF0b3JfYmFzZTxfS2V5LCBfVmFsdWUsIF9F
eHRyYWN0S2V5LAogICAgICAgX0gxLCBfSDIsIF9IYXNoLCBfX2NhY2hlPiYgX195KQogICAgeyBy
ZXR1cm4gX194Ll9NX2N1cnIoKSA9PSBfX3kuX01fY3VycigpOyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9LZXksIHR5cGVuYW1lIF9WYWx1ZSwgdHlwZW5hbWUgX0V4dHJhY3RLZXksCiAgICB0eXBl
bmFtZSBfSDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5hbWUgX0hhc2gsIGJvb2wgX19jYWNoZT4KICAg
IGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IF9Mb2NhbF9pdGVyYXRvcl9iYXNlPF9L
ZXksIF9WYWx1ZSwgX0V4dHJhY3RLZXksCiAgICAgICBfSDEsIF9IMiwgX0hhc2gsIF9fY2FjaGU+
JiBfX3gsCiAgICAgICAgY29uc3QgX0xvY2FsX2l0ZXJhdG9yX2Jhc2U8X0tleSwgX1ZhbHVlLCBf
RXh0cmFjdEtleSwKICAgICAgIF9IMSwgX0gyLCBfSGFzaCwgX19jYWNoZT4mIF9feSkKICAgIHsg
cmV0dXJuIF9feC5fTV9jdXJyKCkgIT0gX195Ll9NX2N1cnIoKTsgfQoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLCB0eXBlbmFtZSBfRXh0cmFjdEtleSwKICAgIHR5
cGVuYW1lIF9IMSwgdHlwZW5hbWUgX0gyLCB0eXBlbmFtZSBfSGFzaCwKICAgIGJvb2wgX19jb25z
dGFudF9pdGVyYXRvcnMsIGJvb2wgX19jYWNoZT4KICAgIHN0cnVjdCBfTG9jYWxfaXRlcmF0b3IK
ICAgIDogcHVibGljIF9Mb2NhbF9pdGVyYXRvcl9iYXNlPF9LZXksIF9WYWx1ZSwgX0V4dHJhY3RL
ZXksCiAgICAgIF9IMSwgX0gyLCBfSGFzaCwgX19jYWNoZT4KICAgIHsKICAgIHByaXZhdGU6CiAg
ICAgIHVzaW5nIF9fYmFzZV90eXBlID0gX0xvY2FsX2l0ZXJhdG9yX2Jhc2U8X0tleSwgX1ZhbHVl
LCBfRXh0cmFjdEtleSwKICAgICAgICAgICAgX0gxLCBfSDIsIF9IYXNoLCBfX2NhY2hlPjsKICAg
ICAgdXNpbmcgX19oYXNoX2NvZGVfYmFzZSA9IHR5cGVuYW1lIF9fYmFzZV90eXBlOjpfX2hhc2hf
Y29kZV9iYXNlOwogICAgcHVibGljOgogICAgICB0eXBlZGVmIF9WYWx1ZSB2YWx1ZV90eXBlOwog
ICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8X19jb25zdGFudF9pdGVyYXRv
cnMsCiAgICAgY29uc3QgX1ZhbHVlKiwgX1ZhbHVlKj46OnR5cGUKICAgICAgICAgICAgIHBvaW50
ZXI7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxfX2NvbnN0YW50X2l0
ZXJhdG9ycywKICAgICBjb25zdCBfVmFsdWUmLCBfVmFsdWUmPjo6dHlwZQogICAgICAgICAgICAg
cmVmZXJlbmNlOwogICAgICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsK
ICAgICAgdHlwZWRlZiBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5
OwoKICAgICAgX0xvY2FsX2l0ZXJhdG9yKCkgPSBkZWZhdWx0OwoKICAgICAgX0xvY2FsX2l0ZXJh
dG9yKGNvbnN0IF9faGFzaF9jb2RlX2Jhc2UmIF9fYmFzZSwKICAgICAgICBfSGFzaF9ub2RlPF9W
YWx1ZSwgX19jYWNoZT4qIF9fcCwKICAgICAgICBzdGQ6OnNpemVfdCBfX2JrdCwgc3RkOjpzaXpl
X3QgX19ia3RfY291bnQpCiA6IF9fYmFzZV90eXBlKF9fYmFzZSwgX19wLCBfX2JrdCwgX19ia3Rf
Y291bnQpCiAgICAgIHsgfQoKICAgICAgcmVmZXJlbmNlCiAgICAgIG9wZXJhdG9yKigpIGNvbnN0
CiAgICAgIHsgcmV0dXJuIHRoaXMtPl9NX2N1ci0+X01fdigpOyB9CgogICAgICBwb2ludGVyCiAg
ICAgIG9wZXJhdG9yLT4oKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5fTV9jdXItPl9NX3Zh
bHB0cigpOyB9CgogICAgICBfTG9jYWxfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKysoKQogICAg
ICB7CiB0aGlzLT5fTV9pbmNyKCk7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgICAgIF9Mb2Nh
bF9pdGVyYXRvcgogICAgICBvcGVyYXRvcisrKGludCkKICAgICAgewogX0xvY2FsX2l0ZXJhdG9y
IF9fdG1wKCp0aGlzKTsKIHRoaXMtPl9NX2luY3IoKTsKIHJldHVybiBfX3RtcDsKICAgICAgfQog
ICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5cGVuYW1lIF9WYWx1ZSwgdHlwZW5h
bWUgX0V4dHJhY3RLZXksCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5hbWUg
X0hhc2gsCiAgICBib29sIF9fY29uc3RhbnRfaXRlcmF0b3JzLCBib29sIF9fY2FjaGU+CiAgICBz
dHJ1Y3QgX0xvY2FsX2NvbnN0X2l0ZXJhdG9yCiAgICA6IHB1YmxpYyBfTG9jYWxfaXRlcmF0b3Jf
YmFzZTxfS2V5LCBfVmFsdWUsIF9FeHRyYWN0S2V5LAogICAgICBfSDEsIF9IMiwgX0hhc2gsIF9f
Y2FjaGU+CiAgICB7CiAgICBwcml2YXRlOgogICAgICB1c2luZyBfX2Jhc2VfdHlwZSA9IF9Mb2Nh
bF9pdGVyYXRvcl9iYXNlPF9LZXksIF9WYWx1ZSwgX0V4dHJhY3RLZXksCiAgICAgICAgICAgIF9I
MSwgX0gyLCBfSGFzaCwgX19jYWNoZT47CiAgICAgIHVzaW5nIF9faGFzaF9jb2RlX2Jhc2UgPSB0
eXBlbmFtZSBfX2Jhc2VfdHlwZTo6X19oYXNoX2NvZGVfYmFzZTsKCiAgICBwdWJsaWM6CiAgICAg
IHR5cGVkZWYgX1ZhbHVlIHZhbHVlX3R5cGU7CiAgICAgIHR5cGVkZWYgY29uc3QgX1ZhbHVlKiBw
b2ludGVyOwogICAgICB0eXBlZGVmIGNvbnN0IF9WYWx1ZSYgcmVmZXJlbmNlOwogICAgICB0eXBl
ZGVmIHN0ZDo6cHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKICAgICAgdHlwZWRlZiBzdGQ6OmZv
cndhcmRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwoKICAgICAgX0xvY2FsX2NvbnN0
X2l0ZXJhdG9yKCkgPSBkZWZhdWx0OwoKICAgICAgX0xvY2FsX2NvbnN0X2l0ZXJhdG9yKGNvbnN0
IF9faGFzaF9jb2RlX2Jhc2UmIF9fYmFzZSwKICAgICAgIF9IYXNoX25vZGU8X1ZhbHVlLCBfX2Nh
Y2hlPiogX19wLAogICAgICAgc3RkOjpzaXplX3QgX19ia3QsIHN0ZDo6c2l6ZV90IF9fYmt0X2Nv
dW50KQogOiBfX2Jhc2VfdHlwZShfX2Jhc2UsIF9fcCwgX19ia3QsIF9fYmt0X2NvdW50KQogICAg
ICB7IH0KCiAgICAgIF9Mb2NhbF9jb25zdF9pdGVyYXRvcihjb25zdCBfTG9jYWxfaXRlcmF0b3I8
X0tleSwgX1ZhbHVlLCBfRXh0cmFjdEtleSwKICAgICAgICBfSDEsIF9IMiwgX0hhc2gsCiAgICAg
ICAgX19jb25zdGFudF9pdGVyYXRvcnMsCiAgICAgICAgX19jYWNoZT4mIF9feCkKIDogX19iYXNl
X3R5cGUoX194KQogICAgICB7IH0KCiAgICAgIHJlZmVyZW5jZQogICAgICBvcGVyYXRvciooKSBj
b25zdAogICAgICB7IHJldHVybiB0aGlzLT5fTV9jdXItPl9NX3YoKTsgfQoKICAgICAgcG9pbnRl
cgogICAgICBvcGVyYXRvci0+KCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+X01fY3VyLT5f
TV92YWxwdHIoKTsgfQoKICAgICAgX0xvY2FsX2NvbnN0X2l0ZXJhdG9yJgogICAgICBvcGVyYXRv
cisrKCkKICAgICAgewogdGhpcy0+X01faW5jcigpOwogcmV0dXJuICp0aGlzOwogICAgICB9Cgog
ICAgICBfTG9jYWxfY29uc3RfaXRlcmF0b3IKICAgICAgb3BlcmF0b3IrKyhpbnQpCiAgICAgIHsK
IF9Mb2NhbF9jb25zdF9pdGVyYXRvciBfX3RtcCgqdGhpcyk7CiB0aGlzLT5fTV9pbmNyKCk7CiBy
ZXR1cm4gX190bXA7CiAgICAgIH0KICAgIH07CiMgMTY0MyAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2hhc2h0YWJsZV9wb2xpY3ku
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5cGVuYW1lIF9WYWx1ZSwKICAgIHR5cGVu
YW1lIF9FeHRyYWN0S2V5LCB0eXBlbmFtZSBfRXF1YWwsCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVu
YW1lIF9IMiwgdHlwZW5hbWUgX0hhc2gsIHR5cGVuYW1lIF9UcmFpdHM+CiAgc3RydWN0IF9IYXNo
dGFibGVfYmFzZQogIDogcHVibGljIF9IYXNoX2NvZGVfYmFzZTxfS2V5LCBfVmFsdWUsIF9FeHRy
YWN0S2V5LCBfSDEsIF9IMiwgX0hhc2gsCiAgICAgIF9UcmFpdHM6Ol9faGFzaF9jYWNoZWQ6OnZh
bHVlPiwKICAgIHByaXZhdGUgX0hhc2h0YWJsZV9lYm9faGVscGVyPDAsIF9FcXVhbD4KICB7CiAg
cHVibGljOgogICAgdHlwZWRlZiBfS2V5IGtleV90eXBlOwogICAgdHlwZWRlZiBfVmFsdWUgdmFs
dWVfdHlwZTsKICAgIHR5cGVkZWYgX0VxdWFsIGtleV9lcXVhbDsKICAgIHR5cGVkZWYgc3RkOjpz
aXplX3Qgc2l6ZV90eXBlOwogICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5
cGU7CgogICAgdXNpbmcgX190cmFpdHNfdHlwZSA9IF9UcmFpdHM7CiAgICB1c2luZyBfX2hhc2hf
Y2FjaGVkID0gdHlwZW5hbWUgX190cmFpdHNfdHlwZTo6X19oYXNoX2NhY2hlZDsKICAgIHVzaW5n
IF9fY29uc3RhbnRfaXRlcmF0b3JzID0gdHlwZW5hbWUgX190cmFpdHNfdHlwZTo6X19jb25zdGFu
dF9pdGVyYXRvcnM7CiAgICB1c2luZyBfX3VuaXF1ZV9rZXlzID0gdHlwZW5hbWUgX190cmFpdHNf
dHlwZTo6X191bmlxdWVfa2V5czsKCiAgICB1c2luZyBfX2hhc2hfY29kZV9iYXNlID0gX0hhc2hf
Y29kZV9iYXNlPF9LZXksIF9WYWx1ZSwgX0V4dHJhY3RLZXksCiAgICAgICAgICBfSDEsIF9IMiwg
X0hhc2gsCiAgICAgICAgICBfX2hhc2hfY2FjaGVkOjp2YWx1ZT47CgogICAgdXNpbmcgX19oYXNo
X2NvZGUgPSB0eXBlbmFtZSBfX2hhc2hfY29kZV9iYXNlOjpfX2hhc2hfY29kZTsKICAgIHVzaW5n
IF9fbm9kZV90eXBlID0gdHlwZW5hbWUgX19oYXNoX2NvZGVfYmFzZTo6X19ub2RlX3R5cGU7Cgog
ICAgdXNpbmcgaXRlcmF0b3IgPSBfX2RldGFpbDo6X05vZGVfaXRlcmF0b3I8dmFsdWVfdHlwZSwK
ICAgICAgICAgICBfX2NvbnN0YW50X2l0ZXJhdG9yczo6dmFsdWUsCiAgICAgICAgICAgX19oYXNo
X2NhY2hlZDo6dmFsdWU+OwoKICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gX19kZXRhaWw6Ol9O
b2RlX2NvbnN0X2l0ZXJhdG9yPHZhbHVlX3R5cGUsCiAgICAgICAgIF9fY29uc3RhbnRfaXRlcmF0
b3JzOjp2YWx1ZSwKICAgICAgICAgX19oYXNoX2NhY2hlZDo6dmFsdWU+OwoKICAgIHVzaW5nIGxv
Y2FsX2l0ZXJhdG9yID0gX19kZXRhaWw6Ol9Mb2NhbF9pdGVyYXRvcjxrZXlfdHlwZSwgdmFsdWVf
dHlwZSwKICAgICAgICBfRXh0cmFjdEtleSwgX0gxLCBfSDIsIF9IYXNoLAogICAgICAgIF9fY29u
c3RhbnRfaXRlcmF0b3JzOjp2YWx1ZSwKICAgICAgICAgICBfX2hhc2hfY2FjaGVkOjp2YWx1ZT47
CgogICAgdXNpbmcgY29uc3RfbG9jYWxfaXRlcmF0b3IgPSBfX2RldGFpbDo6X0xvY2FsX2NvbnN0
X2l0ZXJhdG9yPGtleV90eXBlLAogICAgICAgICB2YWx1ZV90eXBlLAogICAgIF9FeHRyYWN0S2V5
LCBfSDEsIF9IMiwgX0hhc2gsCiAgICAgX19jb25zdGFudF9pdGVyYXRvcnM6OnZhbHVlLAogICAg
IF9faGFzaF9jYWNoZWQ6OnZhbHVlPjsKCiAgICB1c2luZyBfX2lyZXR1cm5fdHlwZSA9IHR5cGVu
YW1lIHN0ZDo6Y29uZGl0aW9uYWw8X191bmlxdWVfa2V5czo6dmFsdWUsCiAgICAgICAgICAgc3Rk
OjpwYWlyPGl0ZXJhdG9yLCBib29sPiwKICAgICAgICAgICBpdGVyYXRvcj46OnR5cGU7CiAgcHJp
dmF0ZToKICAgIHVzaW5nIF9FcXVhbEVCTyA9IF9IYXNodGFibGVfZWJvX2hlbHBlcjwwLCBfRXF1
YWw+OwogICAgdXNpbmcgX0VxdWFsSGVscGVyID0gX0VxdWFsX2hlbHBlcjxfS2V5LCBfVmFsdWUs
IF9FeHRyYWN0S2V5LCBfRXF1YWwsCiAgICAgX19oYXNoX2NvZGUsIF9faGFzaF9jYWNoZWQ6OnZh
bHVlPjsKCiAgcHJvdGVjdGVkOgogICAgX0hhc2h0YWJsZV9iYXNlKGNvbnN0IF9FeHRyYWN0S2V5
JiBfX2V4LCBjb25zdCBfSDEmIF9faDEsIGNvbnN0IF9IMiYgX19oMiwKICAgICAgY29uc3QgX0hh
c2gmIF9faGFzaCwgY29uc3QgX0VxdWFsJiBfX2VxKQogICAgOiBfX2hhc2hfY29kZV9iYXNlKF9f
ZXgsIF9faDEsIF9faDIsIF9faGFzaCksIF9FcXVhbEVCTyhfX2VxKQogICAgeyB9CgogICAgYm9v
bAogICAgX01fZXF1YWxzKGNvbnN0IF9LZXkmIF9faywgX19oYXNoX2NvZGUgX19jLCBfX25vZGVf
dHlwZSogX19uKSBjb25zdAogICAgewogICAgICByZXR1cm4gX0VxdWFsSGVscGVyOjpfU19lcXVh
bHMoX01fZXEoKSwgdGhpcy0+X01fZXh0cmFjdCgpLAogICAgICAgICBfX2ssIF9fYywgX19uKTsK
ICAgIH0KCiAgICB2b2lkCiAgICBfTV9zd2FwKF9IYXNodGFibGVfYmFzZSYgX194KQogICAgewog
ICAgICBfX2hhc2hfY29kZV9iYXNlOjpfTV9zd2FwKF9feCk7CiAgICAgIHN0ZDo6c3dhcChfTV9l
cSgpLCBfX3guX01fZXEoKSk7CiAgICB9CgogICAgY29uc3QgX0VxdWFsJgogICAgX01fZXEoKSBj
b25zdCB7IHJldHVybiBfRXF1YWxFQk86Ol9TX2NnZXQoKnRoaXMpOyB9CgogICAgX0VxdWFsJgog
ICAgX01fZXEoKSB7IHJldHVybiBfRXF1YWxFQk86Ol9TX2dldCgqdGhpcyk7IH0KICB9OwoKCgoK
CgogIHN0cnVjdCBfRXF1YWxpdHlfYmFzZQogIHsKICBwcm90ZWN0ZWQ6CiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVWl0ZXJhdG9yPgogICAgICBzdGF0aWMgYm9vbAogICAgICBfU19pc19wZXJtdXRh
dGlvbihfVWl0ZXJhdG9yLCBfVWl0ZXJhdG9yLCBfVWl0ZXJhdG9yKTsKICB9OwoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1VpdGVyYXRvcj4KICAgIGJvb2wKICAgIF9FcXVhbGl0eV9iYXNlOjoKICAg
IF9TX2lzX3Blcm11dGF0aW9uKF9VaXRlcmF0b3IgX19maXJzdDEsIF9VaXRlcmF0b3IgX19sYXN0
MSwKICAgICAgICBfVWl0ZXJhdG9yIF9fZmlyc3QyKQogICAgewogICAgICBmb3IgKDsgX19maXJz
dDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0MSwgKytfX2ZpcnN0MikKIGlmICghKCpfX2ZpcnN0MSA9
PSAqX19maXJzdDIpKQogICBicmVhazsKCiAgICAgIGlmIChfX2ZpcnN0MSA9PSBfX2xhc3QxKQog
cmV0dXJuIHRydWU7CgogICAgICBfVWl0ZXJhdG9yIF9fbGFzdDIgPSBfX2ZpcnN0MjsKICAgICAg
c3RkOjphZHZhbmNlKF9fbGFzdDIsIHN0ZDo6ZGlzdGFuY2UoX19maXJzdDEsIF9fbGFzdDEpKTsK
CiAgICAgIGZvciAoX1VpdGVyYXRvciBfX2l0MSA9IF9fZmlyc3QxOyBfX2l0MSAhPSBfX2xhc3Qx
OyArK19faXQxKQogewogICBfVWl0ZXJhdG9yIF9fdG1wID0gX19maXJzdDE7CiAgIHdoaWxlIChf
X3RtcCAhPSBfX2l0MSAmJiAhYm9vbCgqX190bXAgPT0gKl9faXQxKSkKICAgICArK19fdG1wOwoK
CiAgIGlmIChfX3RtcCAhPSBfX2l0MSkKICAgICBjb250aW51ZTsKCiAgIHN0ZDo6cHRyZGlmZl90
IF9fbjIgPSAwOwogICBmb3IgKF9fdG1wID0gX19maXJzdDI7IF9fdG1wICE9IF9fbGFzdDI7ICsr
X190bXApCiAgICAgaWYgKCpfX3RtcCA9PSAqX19pdDEpCiAgICAgICArK19fbjI7CgogICBpZiAo
IV9fbjIpCiAgICAgcmV0dXJuIGZhbHNlOwoKICAgc3RkOjpwdHJkaWZmX3QgX19uMSA9IDA7CiAg
IGZvciAoX190bXAgPSBfX2l0MTsgX190bXAgIT0gX19sYXN0MTsgKytfX3RtcCkKICAgICBpZiAo
Kl9fdG1wID09ICpfX2l0MSkKICAgICAgICsrX19uMTsKCiAgIGlmIChfX24xICE9IF9fbjIpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KIyAxNzkxICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMv
aGFzaHRhYmxlX3BvbGljeS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUg
X1ZhbHVlLCB0eXBlbmFtZSBfQWxsb2MsCiAgICB0eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlwZW5h
bWUgX0VxdWFsLAogICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNo
LAogICAgdHlwZW5hbWUgX1JlaGFzaFBvbGljeSwgdHlwZW5hbWUgX1RyYWl0cywKICAgIGJvb2wg
X1VuaXF1ZV9rZXlzID0gX1RyYWl0czo6X191bmlxdWVfa2V5czo6dmFsdWU+CiAgICBzdHJ1Y3Qg
X0VxdWFsaXR5OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLCB0
eXBlbmFtZSBfQWxsb2MsCiAgICB0eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlwZW5hbWUgX0VxdWFs
LAogICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNoLAogICAgdHlw
ZW5hbWUgX1JlaGFzaFBvbGljeSwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0cnVjdCBfRXF1YWxp
dHk8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBfRXF1YWwsCiAgICAgICBfSDEs
IF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHMsIHRydWU+CiAgICB7CiAgICAgIHVz
aW5nIF9faGFzaHRhYmxlID0gX0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJh
Y3RLZXksIF9FcXVhbCwKICAgICAgICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LCBf
VHJhaXRzPjsKCiAgICAgIGJvb2wKICAgICAgX01fZXF1YWwoY29uc3QgX19oYXNodGFibGUmKSBj
b25zdDsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5cGVuYW1lIF9WYWx1ZSwg
dHlwZW5hbWUgX0FsbG9jLAogICAgdHlwZW5hbWUgX0V4dHJhY3RLZXksIHR5cGVuYW1lIF9FcXVh
bCwKICAgIHR5cGVuYW1lIF9IMSwgdHlwZW5hbWUgX0gyLCB0eXBlbmFtZSBfSGFzaCwKICAgIHR5
cGVuYW1lIF9SZWhhc2hQb2xpY3ksIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBib29sCiAgICBfRXF1
YWxpdHk8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBfRXF1YWwsCiAgICAgICBf
SDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHMsIHRydWU+OjoKICAgIF9NX2Vx
dWFsKGNvbnN0IF9faGFzaHRhYmxlJiBfX290aGVyKSBjb25zdAogICAgewogICAgICBjb25zdCBf
X2hhc2h0YWJsZSogX190aGlzID0gc3RhdGljX2Nhc3Q8Y29uc3QgX19oYXNodGFibGUqPih0aGlz
KTsKCiAgICAgIGlmIChfX3RoaXMtPnNpemUoKSAhPSBfX290aGVyLnNpemUoKSkKIHJldHVybiBm
YWxzZTsKCiAgICAgIGZvciAoYXV0byBfX2l0eCA9IF9fdGhpcy0+YmVnaW4oKTsgX19pdHggIT0g
X190aGlzLT5lbmQoKTsgKytfX2l0eCkKIHsKICAgY29uc3QgYXV0byBfX2l0eSA9IF9fb3RoZXIu
ZmluZChfRXh0cmFjdEtleSgpKCpfX2l0eCkpOwogICBpZiAoX19pdHkgPT0gX19vdGhlci5lbmQo
KSB8fCAhYm9vbCgqX19pdHkgPT0gKl9faXR4KSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAg
IHJldHVybiB0cnVlOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUg
X1ZhbHVlLCB0eXBlbmFtZSBfQWxsb2MsCiAgICB0eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlwZW5h
bWUgX0VxdWFsLAogICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNo
LAogICAgdHlwZW5hbWUgX1JlaGFzaFBvbGljeSwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0cnVj
dCBfRXF1YWxpdHk8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBfRXF1YWwsCiAg
ICAgICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHMsIGZhbHNlPgogICAg
OiBwdWJsaWMgX0VxdWFsaXR5X2Jhc2UKICAgIHsKICAgICAgdXNpbmcgX19oYXNodGFibGUgPSBf
SGFzaHRhYmxlPF9LZXksIF9WYWx1ZSwgX0FsbG9jLCBfRXh0cmFjdEtleSwgX0VxdWFsLAogICAg
ICAgICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+OwoKICAgICAgYm9v
bAogICAgICBfTV9lcXVhbChjb25zdCBfX2hhc2h0YWJsZSYpIGNvbnN0OwogICAgfTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLCB0eXBlbmFtZSBfQWxsb2MsCiAg
ICB0eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlwZW5hbWUgX0VxdWFsLAogICAgdHlwZW5hbWUgX0gx
LCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNoLAogICAgdHlwZW5hbWUgX1JlaGFzaFBvbGlj
eSwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJvb2wKICAgIF9FcXVhbGl0eTxfS2V5LCBfVmFsdWUs
IF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwKICAgICAgIF9IMSwgX0gyLCBfSGFzaCwgX1Jl
aGFzaFBvbGljeSwgX1RyYWl0cywgZmFsc2U+OjoKICAgIF9NX2VxdWFsKGNvbnN0IF9faGFzaHRh
YmxlJiBfX290aGVyKSBjb25zdAogICAgewogICAgICBjb25zdCBfX2hhc2h0YWJsZSogX190aGlz
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgX19oYXNodGFibGUqPih0aGlzKTsKCiAgICAgIGlmIChfX3Ro
aXMtPnNpemUoKSAhPSBfX290aGVyLnNpemUoKSkKIHJldHVybiBmYWxzZTsKCiAgICAgIGZvciAo
YXV0byBfX2l0eCA9IF9fdGhpcy0+YmVnaW4oKTsgX19pdHggIT0gX190aGlzLT5lbmQoKTspCiB7
CiAgIGNvbnN0IGF1dG8gX194cmFuZ2UgPSBfX3RoaXMtPmVxdWFsX3JhbmdlKF9FeHRyYWN0S2V5
KCkoKl9faXR4KSk7CiAgIGNvbnN0IGF1dG8gX195cmFuZ2UgPSBfX290aGVyLmVxdWFsX3Jhbmdl
KF9FeHRyYWN0S2V5KCkoKl9faXR4KSk7CgogICBpZiAoc3RkOjpkaXN0YW5jZShfX3hyYW5nZS5m
aXJzdCwgX194cmFuZ2Uuc2Vjb25kKQogICAgICAgIT0gc3RkOjpkaXN0YW5jZShfX3lyYW5nZS5m
aXJzdCwgX195cmFuZ2Uuc2Vjb25kKSkKICAgICByZXR1cm4gZmFsc2U7CgogICBpZiAoIV9TX2lz
X3Blcm11dGF0aW9uKF9feHJhbmdlLmZpcnN0LCBfX3hyYW5nZS5zZWNvbmQsCiAgICAgX195cmFu
Z2UuZmlyc3QpKQogICAgIHJldHVybiBmYWxzZTsKCiAgIF9faXR4ID0gX194cmFuZ2Uuc2Vjb25k
OwogfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9O
b2RlQWxsb2M+CiAgICBzdHJ1Y3QgX0hhc2h0YWJsZV9hbGxvYyA6IHByaXZhdGUgX0hhc2h0YWJs
ZV9lYm9faGVscGVyPDAsIF9Ob2RlQWxsb2M+CiAgICB7CiAgICBwcml2YXRlOgogICAgICB1c2lu
ZyBfX2Vib19ub2RlX2FsbG9jID0gX0hhc2h0YWJsZV9lYm9faGVscGVyPDAsIF9Ob2RlQWxsb2M+
OwogICAgcHVibGljOgogICAgICB1c2luZyBfX25vZGVfdHlwZSA9IHR5cGVuYW1lIF9Ob2RlQWxs
b2M6OnZhbHVlX3R5cGU7CiAgICAgIHVzaW5nIF9fbm9kZV9hbGxvY190eXBlID0gX05vZGVBbGxv
YzsKCiAgICAgIHVzaW5nIF9fbm9kZV9hbGxvY190cmFpdHMgPSBfX2dudV9jeHg6Ol9fYWxsb2Nf
dHJhaXRzPF9fbm9kZV9hbGxvY190eXBlPjsKCiAgICAgIHVzaW5nIF9fdmFsdWVfdHlwZSA9IHR5
cGVuYW1lIF9fbm9kZV90eXBlOjp2YWx1ZV90eXBlOwogICAgICB1c2luZyBfX3ZhbHVlX2FsbG9j
X3R5cGUgPQogdHlwZW5hbWUgX19hbGxvY3RyX3JlYmluZDxfX25vZGVfYWxsb2NfdHlwZSwgX192
YWx1ZV90eXBlPjo6X190eXBlOwogICAgICB1c2luZyBfX3ZhbHVlX2FsbG9jX3RyYWl0cyA9IHN0
ZDo6YWxsb2NhdG9yX3RyYWl0czxfX3ZhbHVlX2FsbG9jX3R5cGU+OwoKICAgICAgdXNpbmcgX19u
b2RlX2Jhc2UgPSBfX2RldGFpbDo6X0hhc2hfbm9kZV9iYXNlOwogICAgICB1c2luZyBfX2J1Y2tl
dF90eXBlID0gX19ub2RlX2Jhc2UqOwogICAgICB1c2luZyBfX2J1Y2tldF9hbGxvY190eXBlID0K
IHR5cGVuYW1lIF9fYWxsb2N0cl9yZWJpbmQ8X19ub2RlX2FsbG9jX3R5cGUsIF9fYnVja2V0X3R5
cGU+OjpfX3R5cGU7CiAgICAgIHVzaW5nIF9fYnVja2V0X2FsbG9jX3RyYWl0cyA9IHN0ZDo6YWxs
b2NhdG9yX3RyYWl0czxfX2J1Y2tldF9hbGxvY190eXBlPjsKCiAgICAgIF9IYXNodGFibGVfYWxs
b2MoY29uc3QgX0hhc2h0YWJsZV9hbGxvYyYpID0gZGVmYXVsdDsKICAgICAgX0hhc2h0YWJsZV9h
bGxvYyhfSGFzaHRhYmxlX2FsbG9jJiYpID0gZGVmYXVsdDsKCiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9BbGxvYz4KIF9IYXNodGFibGVfYWxsb2MoX0FsbG9jJiYgX19hKQogICA6IF9fZWJvX25v
ZGVfYWxsb2Moc3RkOjpmb3J3YXJkPF9BbGxvYz4oX19hKSkKIHsgfQoKICAgICAgX19ub2RlX2Fs
bG9jX3R5cGUmCiAgICAgIF9NX25vZGVfYWxsb2NhdG9yKCkKICAgICAgeyByZXR1cm4gX19lYm9f
bm9kZV9hbGxvYzo6X1NfZ2V0KCp0aGlzKTsgfQoKICAgICAgY29uc3QgX19ub2RlX2FsbG9jX3R5
cGUmCiAgICAgIF9NX25vZGVfYWxsb2NhdG9yKCkgY29uc3QKICAgICAgeyByZXR1cm4gX19lYm9f
bm9kZV9hbGxvYzo6X1NfY2dldCgqdGhpcyk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IF9BcmdzPgogX19ub2RlX3R5cGUqCiBfTV9hbGxvY2F0ZV9ub2RlKF9BcmdzJiYuLi4gX19hcmdz
KTsKCiAgICAgIHZvaWQKICAgICAgX01fZGVhbGxvY2F0ZV9ub2RlKF9fbm9kZV90eXBlKiBfX24p
OwoKCiAgICAgIHZvaWQKICAgICAgX01fZGVhbGxvY2F0ZV9ub2RlcyhfX25vZGVfdHlwZSogX19u
KTsKCiAgICAgIF9fYnVja2V0X3R5cGUqCiAgICAgIF9NX2FsbG9jYXRlX2J1Y2tldHMoc3RkOjpz
aXplX3QgX19uKTsKCiAgICAgIHZvaWQKICAgICAgX01fZGVhbGxvY2F0ZV9idWNrZXRzKF9fYnVj
a2V0X3R5cGUqLCBzdGQ6OnNpemVfdCBfX24pOwogICAgfTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfTm9kZUFsbG9jPgogICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+CiAgICAgIHR5cGVu
YW1lIF9IYXNodGFibGVfYWxsb2M8X05vZGVBbGxvYz46Ol9fbm9kZV90eXBlKgogICAgICBfSGFz
aHRhYmxlX2FsbG9jPF9Ob2RlQWxsb2M+OjpfTV9hbGxvY2F0ZV9ub2RlKF9BcmdzJiYuLi4gX19h
cmdzKQogICAgICB7CiBhdXRvIF9fbnB0ciA9IF9fbm9kZV9hbGxvY190cmFpdHM6OmFsbG9jYXRl
KF9NX25vZGVfYWxsb2NhdG9yKCksIDEpOwogX19ub2RlX3R5cGUqIF9fbiA9IHN0ZDo6X19hZGRy
ZXNzb2YoKl9fbnB0cik7CiBpZiAodHJ1ZSkKICAgewogICAgIF9fdmFsdWVfYWxsb2NfdHlwZSBf
X2EoX01fbm9kZV9hbGxvY2F0b3IoKSk7CiAgICAgOjpuZXcgKCh2b2lkKilfX24pIF9fbm9kZV90
eXBlOwogICAgIF9fdmFsdWVfYWxsb2NfdHJhaXRzOjpjb25zdHJ1Y3QoX19hLCBfX24tPl9NX3Zh
bHB0cigpLAogICAgICAgICBzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOwogICAgIHJl
dHVybiBfX247CiAgIH0KIGlmIChmYWxzZSkKICAgewogICAgIF9fbm9kZV9hbGxvY190cmFpdHM6
OmRlYWxsb2NhdGUoX01fbm9kZV9hbGxvY2F0b3IoKSwgX19ucHRyLCAxKTsKICAgICA7CiAgIH0K
ICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfTm9kZUFsbG9jPgogICAgdm9pZAogICAgX0hh
c2h0YWJsZV9hbGxvYzxfTm9kZUFsbG9jPjo6X01fZGVhbGxvY2F0ZV9ub2RlKF9fbm9kZV90eXBl
KiBfX24pCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19ub2RlX2FsbG9jX3RyYWl0czo6
cG9pbnRlciBfUHRyOwogICAgICBhdXRvIF9fcHRyID0gc3RkOjpwb2ludGVyX3RyYWl0czxfUHRy
Pjo6cG9pbnRlcl90bygqX19uKTsKICAgICAgX192YWx1ZV9hbGxvY190eXBlIF9fYShfTV9ub2Rl
X2FsbG9jYXRvcigpKTsKICAgICAgX192YWx1ZV9hbGxvY190cmFpdHM6OmRlc3Ryb3koX19hLCBf
X24tPl9NX3ZhbHB0cigpKTsKICAgICAgX19uLT5+X19ub2RlX3R5cGUoKTsKICAgICAgX19ub2Rl
X2FsbG9jX3RyYWl0czo6ZGVhbGxvY2F0ZShfTV9ub2RlX2FsbG9jYXRvcigpLCBfX3B0ciwgMSk7
CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Ob2RlQWxsb2M+CiAgICB2b2lkCiAgICBfSGFz
aHRhYmxlX2FsbG9jPF9Ob2RlQWxsb2M+OjpfTV9kZWFsbG9jYXRlX25vZGVzKF9fbm9kZV90eXBl
KiBfX24pCiAgICB7CiAgICAgIHdoaWxlIChfX24pCiB7CiAgIF9fbm9kZV90eXBlKiBfX3RtcCA9
IF9fbjsKICAgX19uID0gX19uLT5fTV9uZXh0KCk7CiAgIF9NX2RlYWxsb2NhdGVfbm9kZShfX3Rt
cCk7CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Ob2RlQWxsb2M+CiAgICB0eXBlbmFt
ZSBfSGFzaHRhYmxlX2FsbG9jPF9Ob2RlQWxsb2M+OjpfX2J1Y2tldF90eXBlKgogICAgX0hhc2h0
YWJsZV9hbGxvYzxfTm9kZUFsbG9jPjo6X01fYWxsb2NhdGVfYnVja2V0cyhzdGQ6OnNpemVfdCBf
X24pCiAgICB7CiAgICAgIF9fYnVja2V0X2FsbG9jX3R5cGUgX19hbGxvYyhfTV9ub2RlX2FsbG9j
YXRvcigpKTsKCiAgICAgIGF1dG8gX19wdHIgPSBfX2J1Y2tldF9hbGxvY190cmFpdHM6OmFsbG9j
YXRlKF9fYWxsb2MsIF9fbik7CiAgICAgIF9fYnVja2V0X3R5cGUqIF9fcCA9IHN0ZDo6X19hZGRy
ZXNzb2YoKl9fcHRyKTsKICAgICAgX19idWlsdGluX21lbXNldChfX3AsIDAsIF9fbiAqIHNpemVv
ZihfX2J1Y2tldF90eXBlKSk7CiAgICAgIHJldHVybiBfX3A7CiAgICB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9Ob2RlQWxsb2M+CiAgICB2b2lkCiAgICBfSGFzaHRhYmxlX2FsbG9jPF9Ob2RlQWxs
b2M+OjpfTV9kZWFsbG9jYXRlX2J1Y2tldHMoX19idWNrZXRfdHlwZSogX19ia3RzLAogICAgICAg
c3RkOjpzaXplX3QgX19uKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fYnVja2V0X2Fs
bG9jX3RyYWl0czo6cG9pbnRlciBfUHRyOwogICAgICBhdXRvIF9fcHRyID0gc3RkOjpwb2ludGVy
X3RyYWl0czxfUHRyPjo6cG9pbnRlcl90bygqX19ia3RzKTsKICAgICAgX19idWNrZXRfYWxsb2Nf
dHlwZSBfX2FsbG9jKF9NX25vZGVfYWxsb2NhdG9yKCkpOwogICAgICBfX2J1Y2tldF9hbGxvY190
cmFpdHM6OmRlYWxsb2NhdGUoX19hbGxvYywgX19wdHIsIF9fbik7CiAgICB9CgoKCn0KfQojIDM2
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4z
L2JpdHMvaGFzaHRhYmxlLmgiIDIgMwoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192
aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5
cGVuYW1lIF9IYXNoPgogICAgdXNpbmcgX19jYWNoZV9kZWZhdWx0CiAgICAgID0gX19ub3RfPF9f
YW5kXzwKICAgICAgICAgX19pc19mYXN0X2hhc2g8X0hhc2g+LAoKICAgICAgICAgX19kZXRhaWw6
Ol9faXNfbm9leGNlcHRfaGFzaDxfVHAsIF9IYXNoPj4+OwojIDE2NiAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL2hhc2h0YWJsZS5o
IiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLCB0eXBlbmFtZSBf
QWxsb2MsCiAgICB0eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlwZW5hbWUgX0VxdWFsLAogICAgdHlw
ZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNoLAogICAgdHlwZW5hbWUgX1Jl
aGFzaFBvbGljeSwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGNsYXNzIF9IYXNodGFibGUKICAgIDog
cHVibGljIF9fZGV0YWlsOjpfSGFzaHRhYmxlX2Jhc2U8X0tleSwgX1ZhbHVlLCBfRXh0cmFjdEtl
eSwgX0VxdWFsLAogICAgICAgICAgIF9IMSwgX0gyLCBfSGFzaCwgX1RyYWl0cz4sCiAgICAgIHB1
YmxpYyBfX2RldGFpbDo6X01hcF9iYXNlPF9LZXksIF9WYWx1ZSwgX0FsbG9jLCBfRXh0cmFjdEtl
eSwgX0VxdWFsLAogICAgIF9IMSwgX0gyLCBfSGFzaCwgX1JlaGFzaFBvbGljeSwgX1RyYWl0cz4s
CiAgICAgIHB1YmxpYyBfX2RldGFpbDo6X0luc2VydDxfS2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4
dHJhY3RLZXksIF9FcXVhbCwKICAgICAgICAgIF9IMSwgX0gyLCBfSGFzaCwgX1JlaGFzaFBvbGlj
eSwgX1RyYWl0cz4sCiAgICAgIHB1YmxpYyBfX2RldGFpbDo6X1JlaGFzaF9iYXNlPF9LZXksIF9W
YWx1ZSwgX0FsbG9jLCBfRXh0cmFjdEtleSwgX0VxdWFsLAogICAgICAgIF9IMSwgX0gyLCBfSGFz
aCwgX1JlaGFzaFBvbGljeSwgX1RyYWl0cz4sCiAgICAgIHB1YmxpYyBfX2RldGFpbDo6X0VxdWFs
aXR5PF9LZXksIF9WYWx1ZSwgX0FsbG9jLCBfRXh0cmFjdEtleSwgX0VxdWFsLAogICAgIF9IMSwg
X0gyLCBfSGFzaCwgX1JlaGFzaFBvbGljeSwgX1RyYWl0cz4sCiAgICAgIHByaXZhdGUgX19kZXRh
aWw6Ol9IYXNodGFibGVfYWxsb2M8CiB0eXBlbmFtZSBfX2FsbG9jdHJfcmViaW5kPF9BbGxvYywK
ICAgX19kZXRhaWw6Ol9IYXNoX25vZGU8X1ZhbHVlLAogICAgICAgICAgX1RyYWl0czo6X19oYXNo
X2NhY2hlZDo6dmFsdWU+ID46Ol9fdHlwZT4KICAgIHsKICAgICAgdXNpbmcgX190cmFpdHNfdHlw
ZSA9IF9UcmFpdHM7CiAgICAgIHVzaW5nIF9faGFzaF9jYWNoZWQgPSB0eXBlbmFtZSBfX3RyYWl0
c190eXBlOjpfX2hhc2hfY2FjaGVkOwogICAgICB1c2luZyBfX25vZGVfdHlwZSA9IF9fZGV0YWls
OjpfSGFzaF9ub2RlPF9WYWx1ZSwgX19oYXNoX2NhY2hlZDo6dmFsdWU+OwogICAgICB1c2luZyBf
X25vZGVfYWxsb2NfdHlwZSA9CiB0eXBlbmFtZSBfX2FsbG9jdHJfcmViaW5kPF9BbGxvYywgX19u
b2RlX3R5cGU+OjpfX3R5cGU7CgogICAgICB1c2luZyBfX2hhc2h0YWJsZV9hbGxvYyA9IF9fZGV0
YWlsOjpfSGFzaHRhYmxlX2FsbG9jPF9fbm9kZV9hbGxvY190eXBlPjsKCiAgICAgIHVzaW5nIF9f
dmFsdWVfYWxsb2NfdHJhaXRzID0KIHR5cGVuYW1lIF9faGFzaHRhYmxlX2FsbG9jOjpfX3ZhbHVl
X2FsbG9jX3RyYWl0czsKICAgICAgdXNpbmcgX19ub2RlX2FsbG9jX3RyYWl0cyA9CiB0eXBlbmFt
ZSBfX2hhc2h0YWJsZV9hbGxvYzo6X19ub2RlX2FsbG9jX3RyYWl0czsKICAgICAgdXNpbmcgX19u
b2RlX2Jhc2UgPSB0eXBlbmFtZSBfX2hhc2h0YWJsZV9hbGxvYzo6X19ub2RlX2Jhc2U7CiAgICAg
IHVzaW5nIF9fYnVja2V0X3R5cGUgPSB0eXBlbmFtZSBfX2hhc2h0YWJsZV9hbGxvYzo6X19idWNr
ZXRfdHlwZTsKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX0tleSBrZXlfdHlwZTsKICAgICAg
dHlwZWRlZiBfVmFsdWUgdmFsdWVfdHlwZTsKICAgICAgdHlwZWRlZiBfQWxsb2MgYWxsb2NhdG9y
X3R5cGU7CiAgICAgIHR5cGVkZWYgX0VxdWFsIGtleV9lcXVhbDsKCgoKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBfX3ZhbHVlX2FsbG9jX3RyYWl0czo6cG9pbnRlciBwb2ludGVyOwogICAgICB0eXBl
ZGVmIHR5cGVuYW1lIF9fdmFsdWVfYWxsb2NfdHJhaXRzOjpjb25zdF9wb2ludGVyIGNvbnN0X3Bv
aW50ZXI7CiAgICAgIHR5cGVkZWYgdmFsdWVfdHlwZSYgcmVmZXJlbmNlOwogICAgICB0eXBlZGVm
IGNvbnN0IHZhbHVlX3R5cGUmIGNvbnN0X3JlZmVyZW5jZTsKCiAgICBwcml2YXRlOgogICAgICB1
c2luZyBfX3JlaGFzaF90eXBlID0gX1JlaGFzaFBvbGljeTsKICAgICAgdXNpbmcgX19yZWhhc2hf
c3RhdGUgPSB0eXBlbmFtZSBfX3JlaGFzaF90eXBlOjpfU3RhdGU7CgogICAgICB1c2luZyBfX2Nv
bnN0YW50X2l0ZXJhdG9ycyA9IHR5cGVuYW1lIF9fdHJhaXRzX3R5cGU6Ol9fY29uc3RhbnRfaXRl
cmF0b3JzOwogICAgICB1c2luZyBfX3VuaXF1ZV9rZXlzID0gdHlwZW5hbWUgX190cmFpdHNfdHlw
ZTo6X191bmlxdWVfa2V5czsKCiAgICAgIHVzaW5nIF9fa2V5X2V4dHJhY3QgPSB0eXBlbmFtZSBz
dGQ6OmNvbmRpdGlvbmFsPAogICAgICAgICAgX19jb25zdGFudF9pdGVyYXRvcnM6OnZhbHVlLAog
ICAgICAgICAgICAgICAgIF9fZGV0YWlsOjpfSWRlbnRpdHksCiAgICAgICAgICBfX2RldGFpbDo6
X1NlbGVjdDFzdD46OnR5cGU7CgogICAgICB1c2luZyBfX2hhc2h0YWJsZV9iYXNlID0gX19kZXRh
aWw6OgogICAgICAgICAgX0hhc2h0YWJsZV9iYXNlPF9LZXksIF9WYWx1ZSwgX0V4dHJhY3RLZXks
CiAgICAgICAgICAgX0VxdWFsLCBfSDEsIF9IMiwgX0hhc2gsIF9UcmFpdHM+OwoKICAgICAgdXNp
bmcgX19oYXNoX2NvZGVfYmFzZSA9IHR5cGVuYW1lIF9faGFzaHRhYmxlX2Jhc2U6Ol9faGFzaF9j
b2RlX2Jhc2U7CiAgICAgIHVzaW5nIF9faGFzaF9jb2RlID0gdHlwZW5hbWUgX19oYXNodGFibGVf
YmFzZTo6X19oYXNoX2NvZGU7CiAgICAgIHVzaW5nIF9faXJldHVybl90eXBlID0gdHlwZW5hbWUg
X19oYXNodGFibGVfYmFzZTo6X19pcmV0dXJuX3R5cGU7CgogICAgICB1c2luZyBfX21hcF9iYXNl
ID0gX19kZXRhaWw6Ol9NYXBfYmFzZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJhY3RLZXks
CiAgICAgICAgICBfRXF1YWwsIF9IMSwgX0gyLCBfSGFzaCwKICAgICAgICAgIF9SZWhhc2hQb2xp
Y3ksIF9UcmFpdHM+OwoKICAgICAgdXNpbmcgX19yZWhhc2hfYmFzZSA9IF9fZGV0YWlsOjpfUmVo
YXNoX2Jhc2U8X0tleSwgX1ZhbHVlLCBfQWxsb2MsCiAgICAgICAgIF9FeHRyYWN0S2V5LCBfRXF1
YWwsCiAgICAgICAgIF9IMSwgX0gyLCBfSGFzaCwKICAgICAgICAgX1JlaGFzaFBvbGljeSwgX1Ry
YWl0cz47CgogICAgICB1c2luZyBfX2VxX2Jhc2UgPSBfX2RldGFpbDo6X0VxdWFsaXR5PF9LZXks
IF9WYWx1ZSwgX0FsbG9jLCBfRXh0cmFjdEtleSwKICAgICAgICAgX0VxdWFsLCBfSDEsIF9IMiwg
X0hhc2gsCiAgICAgICAgIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+OwoKICAgICAgdXNpbmcgX19y
ZXVzZV9vcl9hbGxvY19ub2RlX3R5cGUgPQogX19kZXRhaWw6Ol9SZXVzZU9yQWxsb2NOb2RlPF9f
bm9kZV9hbGxvY190eXBlPjsKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ29uZD4KIHVzaW5n
IF9faWZfaGFzaF9jYWNoZWQgPSBfX29yXzxfX25vdF88X19oYXNoX2NhY2hlZD4sIF9Db25kPjsK
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Db25kPgogdXNpbmcgX19pZl9oYXNoX25vdF9jYWNo
ZWQgPSBfX29yXzxfX2hhc2hfY2FjaGVkLCBfQ29uZD47CgoKCgoKICAgICAgc3RydWN0IF9faGFz
aF9jb2RlX2Jhc2VfYWNjZXNzIDogX19oYXNoX2NvZGVfYmFzZQogICAgICB7IHVzaW5nIF9faGFz
aF9jb2RlX2Jhc2U6Ol9NX2J1Y2tldF9pbmRleDsgfTsKCgoKICAgICAgc3RhdGljX2Fzc2VydChu
b2V4Y2VwdChkZWNsdmFsPGNvbnN0IF9faGFzaF9jb2RlX2Jhc2VfYWNjZXNzJj4oKQogICAgICAg
IC5fTV9idWNrZXRfaW5kZXgoKGNvbnN0IF9fbm9kZV90eXBlKiludWxscHRyLAogICAgICAgICAg
IChzdGQ6OnNpemVfdCkwKSksCiAgICAgICJDYWNoZSB0aGUgaGFzaCBjb2RlIG9yIHF1YWxpZnkg
eW91ciBmdW5jdG9ycyBpbnZvbHZlZCIKICAgICAgIiBpbiBoYXNoIGNvZGUgYW5kIGJ1Y2tldCBp
bmRleCBjb21wdXRhdGlvbiB3aXRoIG5vZXhjZXB0Iik7CgoKCgoKCiAgICAgIHN0YXRpY19hc3Nl
cnQoX19pZl9oYXNoX2NhY2hlZDxpc19kZWZhdWx0X2NvbnN0cnVjdGlibGU8X0gyPj46OnZhbHVl
LAogICAgICAiRnVuY3RvciB1c2VkIHRvIG1hcCBoYXNoIGNvZGUgdG8gYnVja2V0IGluZGV4Igog
ICAgICAiIG11c3QgYmUgZGVmYXVsdCBjb25zdHJ1Y3RpYmxlIik7CgogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfS2V5YSwgdHlwZW5hbWUgX1ZhbHVlYSwgdHlwZW5hbWUgX0FsbG9jYSwKICAgICAg
ICB0eXBlbmFtZSBfRXh0cmFjdEtleWEsIHR5cGVuYW1lIF9FcXVhbGEsCiAgICAgICAgdHlwZW5h
bWUgX0gxYSwgdHlwZW5hbWUgX0gyYSwgdHlwZW5hbWUgX0hhc2hhLAogICAgICAgIHR5cGVuYW1l
IF9SZWhhc2hQb2xpY3lhLCB0eXBlbmFtZSBfVHJhaXRzYSwKICAgICAgICBib29sIF9VbmlxdWVf
a2V5c2E+CiBmcmllbmQgc3RydWN0IF9fZGV0YWlsOjpfTWFwX2Jhc2U7CgogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfS2V5YSwgdHlwZW5hbWUgX1ZhbHVlYSwgdHlwZW5hbWUgX0FsbG9jYSwKICAg
ICAgICB0eXBlbmFtZSBfRXh0cmFjdEtleWEsIHR5cGVuYW1lIF9FcXVhbGEsCiAgICAgICAgdHlw
ZW5hbWUgX0gxYSwgdHlwZW5hbWUgX0gyYSwgdHlwZW5hbWUgX0hhc2hhLAogICAgICAgIHR5cGVu
YW1lIF9SZWhhc2hQb2xpY3lhLCB0eXBlbmFtZSBfVHJhaXRzYT4KIGZyaWVuZCBzdHJ1Y3QgX19k
ZXRhaWw6Ol9JbnNlcnRfYmFzZTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXlhLCB0eXBl
bmFtZSBfVmFsdWVhLCB0eXBlbmFtZSBfQWxsb2NhLAogICAgICAgIHR5cGVuYW1lIF9FeHRyYWN0
S2V5YSwgdHlwZW5hbWUgX0VxdWFsYSwKICAgICAgICB0eXBlbmFtZSBfSDFhLCB0eXBlbmFtZSBf
SDJhLCB0eXBlbmFtZSBfSGFzaGEsCiAgICAgICAgdHlwZW5hbWUgX1JlaGFzaFBvbGljeWEsIHR5
cGVuYW1lIF9UcmFpdHNhLAogICAgICAgIGJvb2wgX0NvbnN0YW50X2l0ZXJhdG9yc2EsIGJvb2wg
X1VuaXF1ZV9rZXlzYT4KIGZyaWVuZCBzdHJ1Y3QgX19kZXRhaWw6Ol9JbnNlcnQ7CgogICAgcHVi
bGljOgogICAgICB1c2luZyBzaXplX3R5cGUgPSB0eXBlbmFtZSBfX2hhc2h0YWJsZV9iYXNlOjpz
aXplX3R5cGU7CiAgICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHR5cGVuYW1lIF9faGFzaHRh
YmxlX2Jhc2U6OmRpZmZlcmVuY2VfdHlwZTsKCiAgICAgIHVzaW5nIGl0ZXJhdG9yID0gdHlwZW5h
bWUgX19oYXNodGFibGVfYmFzZTo6aXRlcmF0b3I7CiAgICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9y
ID0gdHlwZW5hbWUgX19oYXNodGFibGVfYmFzZTo6Y29uc3RfaXRlcmF0b3I7CgogICAgICB1c2lu
ZyBsb2NhbF9pdGVyYXRvciA9IHR5cGVuYW1lIF9faGFzaHRhYmxlX2Jhc2U6OmxvY2FsX2l0ZXJh
dG9yOwogICAgICB1c2luZyBjb25zdF9sb2NhbF9pdGVyYXRvciA9IHR5cGVuYW1lIF9faGFzaHRh
YmxlX2Jhc2U6OgogICAgICAgY29uc3RfbG9jYWxfaXRlcmF0b3I7CgogICAgcHJpdmF0ZToKICAg
ICAgX19idWNrZXRfdHlwZSogX01fYnVja2V0czsKICAgICAgc2l6ZV90eXBlIF9NX2J1Y2tldF9j
b3VudDsKICAgICAgX19ub2RlX2Jhc2UgX01fYmVmb3JlX2JlZ2luOwogICAgICBzaXplX3R5cGUg
X01fZWxlbWVudF9jb3VudDsKICAgICAgX1JlaGFzaFBvbGljeSBfTV9yZWhhc2hfcG9saWN5OwoK
CgoKCgoKICAgICAgX19idWNrZXRfdHlwZSBfTV9zaW5nbGVfYnVja2V0OwoKICAgICAgYm9vbAog
ICAgICBfTV91c2VzX3NpbmdsZV9idWNrZXQoX19idWNrZXRfdHlwZSogX19ia3RzKSBjb25zdAog
ICAgICB7IHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KF9fYmt0cyA9PSAmX01fc2luZ2xlX2J1Y2tl
dCwgZmFsc2UpOyB9CgogICAgICBib29sCiAgICAgIF9NX3VzZXNfc2luZ2xlX2J1Y2tldCgpIGNv
bnN0CiAgICAgIHsgcmV0dXJuIF9NX3VzZXNfc2luZ2xlX2J1Y2tldChfTV9idWNrZXRzKTsgfQoK
ICAgICAgX19oYXNodGFibGVfYWxsb2MmCiAgICAgIF9NX2Jhc2VfYWxsb2MoKSB7IHJldHVybiAq
dGhpczsgfQoKICAgICAgX19idWNrZXRfdHlwZSoKICAgICAgX01fYWxsb2NhdGVfYnVja2V0cyhz
aXplX3R5cGUgX19uKQogICAgICB7CiBpZiAoX19idWlsdGluX2V4cGVjdChfX24gPT0gMSwgZmFs
c2UpKQogICB7CiAgICAgX01fc2luZ2xlX2J1Y2tldCA9IG51bGxwdHI7CiAgICAgcmV0dXJuICZf
TV9zaW5nbGVfYnVja2V0OwogICB9CgogcmV0dXJuIF9faGFzaHRhYmxlX2FsbG9jOjpfTV9hbGxv
Y2F0ZV9idWNrZXRzKF9fbik7CiAgICAgIH0KCiAgICAgIHZvaWQKICAgICAgX01fZGVhbGxvY2F0
ZV9idWNrZXRzKF9fYnVja2V0X3R5cGUqIF9fYmt0cywgc2l6ZV90eXBlIF9fbikKICAgICAgewog
aWYgKF9NX3VzZXNfc2luZ2xlX2J1Y2tldChfX2JrdHMpKQogICByZXR1cm47CgogX19oYXNodGFi
bGVfYWxsb2M6Ol9NX2RlYWxsb2NhdGVfYnVja2V0cyhfX2JrdHMsIF9fbik7CiAgICAgIH0KCiAg
ICAgIHZvaWQKICAgICAgX01fZGVhbGxvY2F0ZV9idWNrZXRzKCkKICAgICAgeyBfTV9kZWFsbG9j
YXRlX2J1Y2tldHMoX01fYnVja2V0cywgX01fYnVja2V0X2NvdW50KTsgfQoKCgogICAgICBfX25v
ZGVfdHlwZSoKICAgICAgX01fYnVja2V0X2JlZ2luKHNpemVfdHlwZSBfX2JrdCkgY29uc3Q7Cgog
ICAgICBfX25vZGVfdHlwZSoKICAgICAgX01fYmVnaW4oKSBjb25zdAogICAgICB7IHJldHVybiBz
dGF0aWNfY2FzdDxfX25vZGVfdHlwZSo+KF9NX2JlZm9yZV9iZWdpbi5fTV9ueHQpOyB9CgogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfTm9kZUdlbmVyYXRvcj4KIHZvaWQKIF9NX2Fzc2lnbihjb25z
dCBfSGFzaHRhYmxlJiwgY29uc3QgX05vZGVHZW5lcmF0b3ImKTsKCiAgICAgIHZvaWQKICAgICAg
X01fbW92ZV9hc3NpZ24oX0hhc2h0YWJsZSYmLCBzdGQ6OnRydWVfdHlwZSk7CgogICAgICB2b2lk
CiAgICAgIF9NX21vdmVfYXNzaWduKF9IYXNodGFibGUmJiwgc3RkOjpmYWxzZV90eXBlKTsKCiAg
ICAgIHZvaWQKICAgICAgX01fcmVzZXQoKSBub2V4Y2VwdDsKCiAgICBwdWJsaWM6CgogICAgICBf
SGFzaHRhYmxlKHNpemVfdHlwZSBfX2J1Y2tldF9oaW50LAogICBjb25zdCBfSDEmLCBjb25zdCBf
SDImLCBjb25zdCBfSGFzaCYsCiAgIGNvbnN0IF9FcXVhbCYsIGNvbnN0IF9FeHRyYWN0S2V5JiwK
ICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmKTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1
dEl0ZXJhdG9yPgogX0hhc2h0YWJsZShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVy
YXRvciBfX2xhc3QsCiAgICAgc2l6ZV90eXBlIF9fYnVja2V0X2hpbnQsCiAgICAgY29uc3QgX0gx
JiwgY29uc3QgX0gyJiwgY29uc3QgX0hhc2gmLAogICAgIGNvbnN0IF9FcXVhbCYsIGNvbnN0IF9F
eHRyYWN0S2V5JiwKICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYpOwoKICAgICAgX0hhc2h0YWJs
ZShjb25zdCBfSGFzaHRhYmxlJik7CgogICAgICBfSGFzaHRhYmxlKF9IYXNodGFibGUmJikgbm9l
eGNlcHQ7CgogICAgICBfSGFzaHRhYmxlKGNvbnN0IF9IYXNodGFibGUmLCBjb25zdCBhbGxvY2F0
b3JfdHlwZSYpOwoKICAgICAgX0hhc2h0YWJsZShfSGFzaHRhYmxlJiYsIGNvbnN0IGFsbG9jYXRv
cl90eXBlJik7CgoKICAgICAgZXhwbGljaXQKICAgICAgX0hhc2h0YWJsZShjb25zdCBhbGxvY2F0
b3JfdHlwZSYgX19hKQogICAgICA6IF9IYXNodGFibGUoMTAsIF9IMSgpLCBfSDIoKSwgX0hhc2go
KSwga2V5X2VxdWFsKCksCiAgICAgX19rZXlfZXh0cmFjdCgpLCBfX2EpCiAgICAgIHsgfQoKICAg
ICAgZXhwbGljaXQKICAgICAgX0hhc2h0YWJsZShzaXplX3R5cGUgX19uID0gMTAsCiAgIGNvbnN0
IF9IMSYgX19oZiA9IF9IMSgpLAogICBjb25zdCBrZXlfZXF1YWwmIF9fZXFsID0ga2V5X2VxdWFs
KCksCiAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKQogICAg
ICA6IF9IYXNodGFibGUoX19uLCBfX2hmLCBfSDIoKSwgX0hhc2goKSwgX19lcWwsCiAgICAgX19r
ZXlfZXh0cmFjdCgpLCBfX2EpCiAgICAgIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lu
cHV0SXRlcmF0b3I+CiBfSGFzaHRhYmxlKF9JbnB1dEl0ZXJhdG9yIF9fZiwgX0lucHV0SXRlcmF0
b3IgX19sLAogICAgIHNpemVfdHlwZSBfX24gPSAwLAogICAgIGNvbnN0IF9IMSYgX19oZiA9IF9I
MSgpLAogICAgIGNvbnN0IGtleV9lcXVhbCYgX19lcWwgPSBrZXlfZXF1YWwoKSwKICAgICBjb25z
dCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUoKSkKIDogX0hhc2h0YWJsZShf
X2YsIF9fbCwgX19uLCBfX2hmLCBfSDIoKSwgX0hhc2goKSwgX19lcWwsCiAgICAgICBfX2tleV9l
eHRyYWN0KCksIF9fYSkKIHsgfQoKICAgICAgX0hhc2h0YWJsZShpbml0aWFsaXplcl9saXN0PHZh
bHVlX3R5cGU+IF9fbCwKICAgc2l6ZV90eXBlIF9fbiA9IDAsCiAgIGNvbnN0IF9IMSYgX19oZiA9
IF9IMSgpLAogICBjb25zdCBrZXlfZXF1YWwmIF9fZXFsID0ga2V5X2VxdWFsKCksCiAgIGNvbnN0
IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKQogICAgICA6IF9IYXNodGFi
bGUoX19sLmJlZ2luKCksIF9fbC5lbmQoKSwgX19uLCBfX2hmLCBfSDIoKSwgX0hhc2goKSwgX19l
cWwsCiAgICAgX19rZXlfZXh0cmFjdCgpLCBfX2EpCiAgICAgIHsgfQoKICAgICAgX0hhc2h0YWJs
ZSYKICAgICAgb3BlcmF0b3I9KGNvbnN0IF9IYXNodGFibGUmIF9faHQpOwoKICAgICAgX0hhc2h0
YWJsZSYKICAgICAgb3BlcmF0b3I9KF9IYXNodGFibGUmJiBfX2h0KQogICAgICBub2V4Y2VwdChf
X25vZGVfYWxsb2NfdHJhaXRzOjpfU19ub3Rocm93X21vdmUoKSkKICAgICAgewogICAgICAgIGNv
bnN0ZXhwciBib29sIF9fbW92ZV9zdG9yYWdlID0KICAgICAgICAgIF9fbm9kZV9hbGxvY190cmFp
dHM6Ol9TX3Byb3BhZ2F0ZV9vbl9tb3ZlX2Fzc2lnbigpCiAgICAgICAgICB8fCBfX25vZGVfYWxs
b2NfdHJhaXRzOjpfU19hbHdheXNfZXF1YWwoKTsKICAgICAgICBfTV9tb3ZlX2Fzc2lnbihzdGQ6
Om1vdmUoX19odCksCiAgICAgICAgICAgICAgICAgICAgICAgaW50ZWdyYWxfY29uc3RhbnQ8Ym9v
bCwgX19tb3ZlX3N0b3JhZ2U+KCkpOwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICBfSGFz
aHRhYmxlJgogICAgICBvcGVyYXRvcj0oaW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBfX2wp
CiAgICAgIHsKIF9fcmV1c2Vfb3JfYWxsb2Nfbm9kZV90eXBlIF9fcm9hbihfTV9iZWdpbigpLCAq
dGhpcyk7CiBfTV9iZWZvcmVfYmVnaW4uX01fbnh0ID0gbnVsbHB0cjsKIGNsZWFyKCk7CiB0aGlz
LT5fTV9pbnNlcnRfcmFuZ2UoX19sLmJlZ2luKCksIF9fbC5lbmQoKSwgX19yb2FuKTsKIHJldHVy
biAqdGhpczsKICAgICAgfQoKICAgICAgfl9IYXNodGFibGUoKSBub2V4Y2VwdDsKCiAgICAgIHZv
aWQKICAgICAgc3dhcChfSGFzaHRhYmxlJikKICAgICAgbm9leGNlcHQoX19ub2RlX2FsbG9jX3Ry
YWl0czo6X1Nfbm90aHJvd19zd2FwKCkpOwoKCiAgICAgIGl0ZXJhdG9yCiAgICAgIGJlZ2luKCkg
bm9leGNlcHQKICAgICAgeyByZXR1cm4gaXRlcmF0b3IoX01fYmVnaW4oKSk7IH0KCiAgICAgIGNv
bnN0X2l0ZXJhdG9yCiAgICAgIGJlZ2luKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4g
Y29uc3RfaXRlcmF0b3IoX01fYmVnaW4oKSk7IH0KCiAgICAgIGl0ZXJhdG9yCiAgICAgIGVuZCgp
IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGl0ZXJhdG9yKG51bGxwdHIpOyB9CgogICAgICBjb25z
dF9pdGVyYXRvcgogICAgICBlbmQoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBjb25z
dF9pdGVyYXRvcihudWxscHRyKTsgfQoKICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAgY2JlZ2lu
KCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IoX01fYmVnaW4o
KSk7IH0KCiAgICAgIGNvbnN0X2l0ZXJhdG9yCiAgICAgIGNlbmQoKSBjb25zdCBub2V4Y2VwdAog
ICAgICB7IHJldHVybiBjb25zdF9pdGVyYXRvcihudWxscHRyKTsgfQoKICAgICAgc2l6ZV90eXBl
CiAgICAgIHNpemUoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9lbGVtZW50X2Nv
dW50OyB9CgogICAgICBib29sCiAgICAgIGVtcHR5KCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gc2l6ZSgpID09IDA7IH0KCiAgICAgIGFsbG9jYXRvcl90eXBlCiAgICAgIGdldF9hbGxv
Y2F0b3IoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBhbGxvY2F0b3JfdHlwZSh0aGlz
LT5fTV9ub2RlX2FsbG9jYXRvcigpKTsgfQoKICAgICAgc2l6ZV90eXBlCiAgICAgIG1heF9zaXpl
KCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX19ub2RlX2FsbG9jX3RyYWl0czo6bWF4
X3NpemUodGhpcy0+X01fbm9kZV9hbGxvY2F0b3IoKSk7IH0KCgogICAgICBrZXlfZXF1YWwKICAg
ICAga2V5X2VxKCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+X01fZXEoKTsgfQoKCgoKICAg
ICAgc2l6ZV90eXBlCiAgICAgIGJ1Y2tldF9jb3VudCgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsg
cmV0dXJuIF9NX2J1Y2tldF9jb3VudDsgfQoKICAgICAgc2l6ZV90eXBlCiAgICAgIG1heF9idWNr
ZXRfY291bnQoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBtYXhfc2l6ZSgpOyB9Cgog
ICAgICBzaXplX3R5cGUKICAgICAgYnVja2V0X3NpemUoc2l6ZV90eXBlIF9fbikgY29uc3QKICAg
ICAgeyByZXR1cm4gc3RkOjpkaXN0YW5jZShiZWdpbihfX24pLCBlbmQoX19uKSk7IH0KCiAgICAg
IHNpemVfdHlwZQogICAgICBidWNrZXQoY29uc3Qga2V5X3R5cGUmIF9faykgY29uc3QKICAgICAg
eyByZXR1cm4gX01fYnVja2V0X2luZGV4KF9faywgdGhpcy0+X01faGFzaF9jb2RlKF9faykpOyB9
CgogICAgICBsb2NhbF9pdGVyYXRvcgogICAgICBiZWdpbihzaXplX3R5cGUgX19uKQogICAgICB7
CiByZXR1cm4gbG9jYWxfaXRlcmF0b3IoKnRoaXMsIF9NX2J1Y2tldF9iZWdpbihfX24pLAogICAg
ICAgICBfX24sIF9NX2J1Y2tldF9jb3VudCk7CiAgICAgIH0KCiAgICAgIGxvY2FsX2l0ZXJhdG9y
CiAgICAgIGVuZChzaXplX3R5cGUgX19uKQogICAgICB7IHJldHVybiBsb2NhbF9pdGVyYXRvcigq
dGhpcywgbnVsbHB0ciwgX19uLCBfTV9idWNrZXRfY291bnQpOyB9CgogICAgICBjb25zdF9sb2Nh
bF9pdGVyYXRvcgogICAgICBiZWdpbihzaXplX3R5cGUgX19uKSBjb25zdAogICAgICB7CiByZXR1
cm4gY29uc3RfbG9jYWxfaXRlcmF0b3IoKnRoaXMsIF9NX2J1Y2tldF9iZWdpbihfX24pLAogICAg
ICAgIF9fbiwgX01fYnVja2V0X2NvdW50KTsKICAgICAgfQoKICAgICAgY29uc3RfbG9jYWxfaXRl
cmF0b3IKICAgICAgZW5kKHNpemVfdHlwZSBfX24pIGNvbnN0CiAgICAgIHsgcmV0dXJuIGNvbnN0
X2xvY2FsX2l0ZXJhdG9yKCp0aGlzLCBudWxscHRyLCBfX24sIF9NX2J1Y2tldF9jb3VudCk7IH0K
CgogICAgICBjb25zdF9sb2NhbF9pdGVyYXRvcgogICAgICBjYmVnaW4oc2l6ZV90eXBlIF9fbikg
Y29uc3QKICAgICAgewogcmV0dXJuIGNvbnN0X2xvY2FsX2l0ZXJhdG9yKCp0aGlzLCBfTV9idWNr
ZXRfYmVnaW4oX19uKSwKICAgICAgICBfX24sIF9NX2J1Y2tldF9jb3VudCk7CiAgICAgIH0KCiAg
ICAgIGNvbnN0X2xvY2FsX2l0ZXJhdG9yCiAgICAgIGNlbmQoc2l6ZV90eXBlIF9fbikgY29uc3QK
ICAgICAgeyByZXR1cm4gY29uc3RfbG9jYWxfaXRlcmF0b3IoKnRoaXMsIG51bGxwdHIsIF9fbiwg
X01fYnVja2V0X2NvdW50KTsgfQoKICAgICAgZmxvYXQKICAgICAgbG9hZF9mYWN0b3IoKSBjb25z
dCBub2V4Y2VwdAogICAgICB7CiByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNpemUoKSkgLyBz
dGF0aWNfY2FzdDxmbG9hdD4oYnVja2V0X2NvdW50KCkpOwogICAgICB9CgoKCgoKCiAgICAgIGNv
bnN0IF9SZWhhc2hQb2xpY3kmCiAgICAgIF9fcmVoYXNoX3BvbGljeSgpIGNvbnN0CiAgICAgIHsg
cmV0dXJuIF9NX3JlaGFzaF9wb2xpY3k7IH0KCiAgICAgIHZvaWQKICAgICAgX19yZWhhc2hfcG9s
aWN5KGNvbnN0IF9SZWhhc2hQb2xpY3kmKTsKCgogICAgICBpdGVyYXRvcgogICAgICBmaW5kKGNv
bnN0IGtleV90eXBlJiBfX2spOwoKICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAgZmluZChjb25z
dCBrZXlfdHlwZSYgX19rKSBjb25zdDsKCiAgICAgIHNpemVfdHlwZQogICAgICBjb3VudChjb25z
dCBrZXlfdHlwZSYgX19rKSBjb25zdDsKCiAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgaXRlcmF0
b3I+CiAgICAgIGVxdWFsX3JhbmdlKGNvbnN0IGtleV90eXBlJiBfX2spOwoKICAgICAgc3RkOjpw
YWlyPGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcj4KICAgICAgZXF1YWxfcmFuZ2UoY29u
c3Qga2V5X3R5cGUmIF9faykgY29uc3Q7CgogICAgcHJvdGVjdGVkOgoKICAgICAgc2l6ZV90eXBl
CiAgICAgIF9NX2J1Y2tldF9pbmRleChfX25vZGVfdHlwZSogX19uKSBjb25zdCBub2V4Y2VwdAog
ICAgICB7IHJldHVybiBfX2hhc2hfY29kZV9iYXNlOjpfTV9idWNrZXRfaW5kZXgoX19uLCBfTV9i
dWNrZXRfY291bnQpOyB9CgogICAgICBzaXplX3R5cGUKICAgICAgX01fYnVja2V0X2luZGV4KGNv
bnN0IGtleV90eXBlJiBfX2ssIF9faGFzaF9jb2RlIF9fYykgY29uc3QKICAgICAgeyByZXR1cm4g
X19oYXNoX2NvZGVfYmFzZTo6X01fYnVja2V0X2luZGV4KF9faywgX19jLCBfTV9idWNrZXRfY291
bnQpOyB9CgoKCiAgICAgIF9fbm9kZV9iYXNlKgogICAgICBfTV9maW5kX2JlZm9yZV9ub2RlKHNp
emVfdHlwZSwgY29uc3Qga2V5X3R5cGUmLCBfX2hhc2hfY29kZSkgY29uc3Q7CgogICAgICBfX25v
ZGVfdHlwZSoKICAgICAgX01fZmluZF9ub2RlKHNpemVfdHlwZSBfX2JrdCwgY29uc3Qga2V5X3R5
cGUmIF9fa2V5LAogICAgIF9faGFzaF9jb2RlIF9fYykgY29uc3QKICAgICAgewogX19ub2RlX2Jh
c2UqIF9fYmVmb3JlX24gPSBfTV9maW5kX2JlZm9yZV9ub2RlKF9fYmt0LCBfX2tleSwgX19jKTsK
IGlmIChfX2JlZm9yZV9uKQogICByZXR1cm4gc3RhdGljX2Nhc3Q8X19ub2RlX3R5cGUqPihfX2Jl
Zm9yZV9uLT5fTV9ueHQpOwogcmV0dXJuIG51bGxwdHI7CiAgICAgIH0KCgogICAgICB2b2lkCiAg
ICAgIF9NX2luc2VydF9idWNrZXRfYmVnaW4oc2l6ZV90eXBlLCBfX25vZGVfdHlwZSopOwoKCiAg
ICAgIHZvaWQKICAgICAgX01fcmVtb3ZlX2J1Y2tldF9iZWdpbihzaXplX3R5cGUgX19ia3QsIF9f
bm9kZV90eXBlKiBfX25leHRfbiwKICAgICAgICBzaXplX3R5cGUgX19uZXh0X2JrdCk7CgoKICAg
ICAgX19ub2RlX2Jhc2UqCiAgICAgIF9NX2dldF9wcmV2aW91c19ub2RlKHNpemVfdHlwZSBfX2Jr
dCwgX19ub2RlX2Jhc2UqIF9fbik7CgoKCgogICAgICBpdGVyYXRvcgogICAgICBfTV9pbnNlcnRf
dW5pcXVlX25vZGUoc2l6ZV90eXBlIF9fYmt0LCBfX2hhc2hfY29kZSBfX2NvZGUsCiAgICAgICBf
X25vZGVfdHlwZSogX19uKTsKCgoKICAgICAgaXRlcmF0b3IKICAgICAgX01faW5zZXJ0X211bHRp
X25vZGUoX19ub2RlX3R5cGUqIF9faGludCwKICAgICAgX19oYXNoX2NvZGUgX19jb2RlLCBfX25v
ZGVfdHlwZSogX19uKTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9BcmdzPgogc3RkOjpw
YWlyPGl0ZXJhdG9yLCBib29sPgogX01fZW1wbGFjZShzdGQ6OnRydWVfdHlwZSwgX0FyZ3MmJi4u
LiBfX2FyZ3MpOwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+CiBpdGVyYXRvcgog
X01fZW1wbGFjZShzdGQ6OmZhbHNlX3R5cGUgX191aywgX0FyZ3MmJi4uLiBfX2FyZ3MpCiB7IHJl
dHVybiBfTV9lbXBsYWNlKGNlbmQoKSwgX191aywgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3Mp
Li4uKTsgfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9BcmdzPgogaXRlcmF0b3IKIF9N
X2VtcGxhY2UoY29uc3RfaXRlcmF0b3IsIHN0ZDo6dHJ1ZV90eXBlIF9fdWssIF9BcmdzJiYuLi4g
X19hcmdzKQogeyByZXR1cm4gX01fZW1wbGFjZShfX3VrLCBzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9f
YXJncykuLi4pLmZpcnN0OyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncz4KIGl0
ZXJhdG9yCiBfTV9lbXBsYWNlKGNvbnN0X2l0ZXJhdG9yLCBzdGQ6OmZhbHNlX3R5cGUsIF9Bcmdz
JiYuLi4gX19hcmdzKTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BcmcsIHR5cGVuYW1lIF9O
b2RlR2VuZXJhdG9yPgogc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPgogX01faW5zZXJ0KF9Bcmcm
JiwgY29uc3QgX05vZGVHZW5lcmF0b3ImLCBzdGQ6OnRydWVfdHlwZSk7CgogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQXJnLCB0eXBlbmFtZSBfTm9kZUdlbmVyYXRvcj4KIGl0ZXJhdG9yCiBfTV9p
bnNlcnQoX0FyZyYmIF9fYXJnLCBjb25zdCBfTm9kZUdlbmVyYXRvciYgX19ub2RlX2dlbiwKICAg
IHN0ZDo6ZmFsc2VfdHlwZSBfX3VrKQogewogICByZXR1cm4gX01faW5zZXJ0KGNlbmQoKSwgc3Rk
Ojpmb3J3YXJkPF9Bcmc+KF9fYXJnKSwgX19ub2RlX2dlbiwKICAgICAgX191ayk7CiB9CgoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FyZywgdHlwZW5hbWUgX05vZGVHZW5lcmF0b3I+CiBpdGVy
YXRvcgogX01faW5zZXJ0KGNvbnN0X2l0ZXJhdG9yLCBfQXJnJiYgX19hcmcsIGNvbnN0IF9Ob2Rl
R2VuZXJhdG9yJiBfX25vZGVfZ2VuLAogICAgc3RkOjp0cnVlX3R5cGUgX191aykKIHsKICAgcmV0
dXJuCiAgICAgX01faW5zZXJ0KHN0ZDo6Zm9yd2FyZDxfQXJnPihfX2FyZyksIF9fbm9kZV9nZW4s
IF9fdWspLmZpcnN0OwogfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BcmcsIHR5cGVuYW1l
IF9Ob2RlR2VuZXJhdG9yPgogaXRlcmF0b3IKIF9NX2luc2VydChjb25zdF9pdGVyYXRvciwgX0Fy
ZyYmLCBjb25zdCBfTm9kZUdlbmVyYXRvciYsIHN0ZDo6ZmFsc2VfdHlwZSk7CgogICAgICBzaXpl
X3R5cGUKICAgICAgX01fZXJhc2Uoc3RkOjp0cnVlX3R5cGUsIGNvbnN0IGtleV90eXBlJik7Cgog
ICAgICBzaXplX3R5cGUKICAgICAgX01fZXJhc2Uoc3RkOjpmYWxzZV90eXBlLCBjb25zdCBrZXlf
dHlwZSYpOwoKICAgICAgaXRlcmF0b3IKICAgICAgX01fZXJhc2Uoc2l6ZV90eXBlIF9fYmt0LCBf
X25vZGVfYmFzZSogX19wcmV2X24sIF9fbm9kZV90eXBlKiBfX24pOwoKICAgIHB1YmxpYzoKCiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9BcmdzPgogX19pcmV0dXJuX3R5cGUKIGVtcGxhY2Uo
X0FyZ3MmJi4uLiBfX2FyZ3MpCiB7IHJldHVybiBfTV9lbXBsYWNlKF9fdW5pcXVlX2tleXMoKSwg
c3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUuLi4gX0FyZ3M+CiBpdGVyYXRvcgogZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yIF9faGlu
dCwgX0FyZ3MmJi4uLiBfX2FyZ3MpCiB7CiAgIHJldHVybiBfTV9lbXBsYWNlKF9faGludCwgX191
bmlxdWVfa2V5cygpLAogICAgICAgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKIH0K
CgoKCiAgICAgIGl0ZXJhdG9yCiAgICAgIGVyYXNlKGNvbnN0X2l0ZXJhdG9yKTsKCgogICAgICBp
dGVyYXRvcgogICAgICBlcmFzZShpdGVyYXRvciBfX2l0KQogICAgICB7IHJldHVybiBlcmFzZShj
b25zdF9pdGVyYXRvcihfX2l0KSk7IH0KCiAgICAgIHNpemVfdHlwZQogICAgICBlcmFzZShjb25z
dCBrZXlfdHlwZSYgX19rKQogICAgICB7IHJldHVybiBfTV9lcmFzZShfX3VuaXF1ZV9rZXlzKCks
IF9fayk7IH0KCiAgICAgIGl0ZXJhdG9yCiAgICAgIGVyYXNlKGNvbnN0X2l0ZXJhdG9yLCBjb25z
dF9pdGVyYXRvcik7CgogICAgICB2b2lkCiAgICAgIGNsZWFyKCkgbm9leGNlcHQ7CgoKICAgICAg
dm9pZCByZWhhc2goc2l6ZV90eXBlIF9fbik7CgoKCgogICAgcHJpdmF0ZToKCiAgICAgIHZvaWQg
X01fcmVoYXNoX2F1eChzaXplX3R5cGUgX19uLCBzdGQ6OnRydWVfdHlwZSk7CgoKICAgICAgdm9p
ZCBfTV9yZWhhc2hfYXV4KHNpemVfdHlwZSBfX24sIHN0ZDo6ZmFsc2VfdHlwZSk7CgoKCiAgICAg
IHZvaWQgX01fcmVoYXNoKHNpemVfdHlwZSBfX24sIGNvbnN0IF9fcmVoYXNoX3N0YXRlJiBfX3N0
YXRlKTsKICAgIH07CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVl
LAogICAgdHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlwZW5hbWUgX0Vx
dWFsLAogICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNoLCB0eXBl
bmFtZSBfUmVoYXNoUG9saWN5LAogICAgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHR5cGVuYW1lIF9I
YXNodGFibGU8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LAogICBfRXF1YWwsIF9I
MSwgX0gyLCBfSGFzaCwgX1JlaGFzaFBvbGljeSwKICAgX1RyYWl0cz46Ol9fbm9kZV90eXBlKgog
ICAgX0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwK
ICAgICAgICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+OjoKICAgIF9N
X2J1Y2tldF9iZWdpbihzaXplX3R5cGUgX19ia3QpIGNvbnN0CiAgICB7CiAgICAgIF9fbm9kZV9i
YXNlKiBfX24gPSBfTV9idWNrZXRzW19fYmt0XTsKICAgICAgcmV0dXJuIF9fbiA/IHN0YXRpY19j
YXN0PF9fbm9kZV90eXBlKj4oX19uLT5fTV9ueHQpIDogbnVsbHB0cjsKICAgIH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLAogICAgdHlwZW5hbWUgX0FsbG9jLCB0
eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlwZW5hbWUgX0VxdWFsLAogICAgdHlwZW5hbWUgX0gxLCB0
eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNoLCB0eXBlbmFtZSBfUmVoYXNoUG9saWN5LAogICAg
dHlwZW5hbWUgX1RyYWl0cz4KICAgIF9IYXNodGFibGU8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9F
eHRyYWN0S2V5LCBfRXF1YWwsCiAgICAgICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5
LCBfVHJhaXRzPjo6CiAgICBfSGFzaHRhYmxlKHNpemVfdHlwZSBfX2J1Y2tldF9oaW50LAogICAg
ICAgIGNvbnN0IF9IMSYgX19oMSwgY29uc3QgX0gyJiBfX2gyLCBjb25zdCBfSGFzaCYgX19oLAog
ICAgICAgIGNvbnN0IF9FcXVhbCYgX19lcSwgY29uc3QgX0V4dHJhY3RLZXkmIF9fZXhrLAogICAg
ICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EpCiAgICA6IF9faGFzaHRhYmxlX2Jhc2UoX19l
eGssIF9faDEsIF9faDIsIF9faCwgX19lcSksCiAgICAgIF9fbWFwX2Jhc2UoKSwKICAgICAgX19y
ZWhhc2hfYmFzZSgpLAogICAgICBfX2hhc2h0YWJsZV9hbGxvYyhfX25vZGVfYWxsb2NfdHlwZShf
X2EpKSwKICAgICAgX01fZWxlbWVudF9jb3VudCgwKSwKICAgICAgX01fcmVoYXNoX3BvbGljeSgp
CiAgICB7CiAgICAgIF9NX2J1Y2tldF9jb3VudCA9IF9NX3JlaGFzaF9wb2xpY3kuX01fbmV4dF9i
a3QoX19idWNrZXRfaGludCk7CiAgICAgIF9NX2J1Y2tldHMgPSBfTV9hbGxvY2F0ZV9idWNrZXRz
KF9NX2J1Y2tldF9jb3VudCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5cGVu
YW1lIF9WYWx1ZSwKICAgIHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUgX0V4dHJhY3RLZXksIHR5
cGVuYW1lIF9FcXVhbCwKICAgIHR5cGVuYW1lIF9IMSwgdHlwZW5hbWUgX0gyLCB0eXBlbmFtZSBf
SGFzaCwgdHlwZW5hbWUgX1JlaGFzaFBvbGljeSwKICAgIHR5cGVuYW1lIF9UcmFpdHM+CiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcj4KICAgICAgX0hhc2h0YWJsZTxfS2V5LCBf
VmFsdWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwKICAgX0gxLCBfSDIsIF9IYXNoLCBf
UmVoYXNoUG9saWN5LCBfVHJhaXRzPjo6CiAgICAgIF9IYXNodGFibGUoX0lucHV0SXRlcmF0b3Ig
X19mLCBfSW5wdXRJdGVyYXRvciBfX2wsCiAgIHNpemVfdHlwZSBfX2J1Y2tldF9oaW50LAogICBj
b25zdCBfSDEmIF9faDEsIGNvbnN0IF9IMiYgX19oMiwgY29uc3QgX0hhc2gmIF9faCwKICAgY29u
c3QgX0VxdWFsJiBfX2VxLCBjb25zdCBfRXh0cmFjdEtleSYgX19leGssCiAgIGNvbnN0IGFsbG9j
YXRvcl90eXBlJiBfX2EpCiAgICAgIDogX19oYXNodGFibGVfYmFzZShfX2V4aywgX19oMSwgX19o
MiwgX19oLCBfX2VxKSwKIF9fbWFwX2Jhc2UoKSwKIF9fcmVoYXNoX2Jhc2UoKSwKIF9faGFzaHRh
YmxlX2FsbG9jKF9fbm9kZV9hbGxvY190eXBlKF9fYSkpLAogX01fZWxlbWVudF9jb3VudCgwKSwK
IF9NX3JlaGFzaF9wb2xpY3koKQogICAgICB7CiBhdXRvIF9fbmJfZWxlbXMgPSBfX2RldGFpbDo6
X19kaXN0YW5jZV9mdyhfX2YsIF9fbCk7CiBfTV9idWNrZXRfY291bnQgPQogICBfTV9yZWhhc2hf
cG9saWN5Ll9NX25leHRfYmt0KAogICAgIHN0ZDo6bWF4KF9NX3JlaGFzaF9wb2xpY3kuX01fYmt0
X2Zvcl9lbGVtZW50cyhfX25iX2VsZW1zKSwKICAgICAgIF9fYnVja2V0X2hpbnQpKTsKCiBfTV9i
dWNrZXRzID0gX01fYWxsb2NhdGVfYnVja2V0cyhfTV9idWNrZXRfY291bnQpOwogaWYgKHRydWUp
CiAgIHsKICAgICBmb3IgKDsgX19mICE9IF9fbDsgKytfX2YpCiAgICAgICB0aGlzLT5pbnNlcnQo
Kl9fZik7CiAgIH0KIGlmIChmYWxzZSkKICAgewogICAgIGNsZWFyKCk7CiAgICAgX01fZGVhbGxv
Y2F0ZV9idWNrZXRzKCk7CiAgICAgOwogICB9CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0tleSwgdHlwZW5hbWUgX1ZhbHVlLAogICAgdHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZSBfRXh0
cmFjdEtleSwgdHlwZW5hbWUgX0VxdWFsLAogICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIs
IHR5cGVuYW1lIF9IYXNoLCB0eXBlbmFtZSBfUmVoYXNoUG9saWN5LAogICAgdHlwZW5hbWUgX1Ry
YWl0cz4KICAgIF9IYXNodGFibGU8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBf
RXF1YWwsCiAgICAgICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LCBfVHJhaXRzPiYK
ICAgIF9IYXNodGFibGU8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBfRXF1YWws
CiAgICAgICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LCBfVHJhaXRzPjo6b3BlcmF0
b3I9KAogIGNvbnN0IF9IYXNodGFibGU8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5
LCBfRXF1YWwsCiAgICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LCBfVHJhaXRzPiYg
X19odCkKICAgICAgewogaWYgKCZfX2h0ID09IHRoaXMpCiAgIHJldHVybiAqdGhpczsKCiBpZiAo
X19ub2RlX2FsbG9jX3RyYWl0czo6X1NfcHJvcGFnYXRlX29uX2NvcHlfYXNzaWduKCkpCiAgIHsK
ICAgICBhdXRvJiBfX3RoaXNfYWxsb2MgPSB0aGlzLT5fTV9ub2RlX2FsbG9jYXRvcigpOwogICAg
IGF1dG8mIF9fdGhhdF9hbGxvYyA9IF9faHQuX01fbm9kZV9hbGxvY2F0b3IoKTsKICAgICBpZiAo
IV9fbm9kZV9hbGxvY190cmFpdHM6Ol9TX2Fsd2F5c19lcXVhbCgpCiAgJiYgX190aGlzX2FsbG9j
ICE9IF9fdGhhdF9hbGxvYykKICAgICAgIHsKCiAgdGhpcy0+X01fZGVhbGxvY2F0ZV9ub2Rlcyhf
TV9iZWdpbigpKTsKICBfTV9iZWZvcmVfYmVnaW4uX01fbnh0ID0gbnVsbHB0cjsKICBfTV9kZWFs
bG9jYXRlX2J1Y2tldHMoKTsKICBfTV9idWNrZXRzID0gbnVsbHB0cjsKICBzdGQ6Ol9fYWxsb2Nf
b25fY29weShfX3RoaXNfYWxsb2MsIF9fdGhhdF9hbGxvYyk7CiAgX19oYXNodGFibGVfYmFzZTo6
b3BlcmF0b3I9KF9faHQpOwogIF9NX2J1Y2tldF9jb3VudCA9IF9faHQuX01fYnVja2V0X2NvdW50
OwogIF9NX2VsZW1lbnRfY291bnQgPSBfX2h0Ll9NX2VsZW1lbnRfY291bnQ7CiAgX01fcmVoYXNo
X3BvbGljeSA9IF9faHQuX01fcmVoYXNoX3BvbGljeTsKICBpZiAodHJ1ZSkKICAgIHsKICAgICAg
X01fYXNzaWduKF9faHQsCiAgICAgICAgIFt0aGlzXShjb25zdCBfX25vZGVfdHlwZSogX19uKQog
ICAgICAgICB7IHJldHVybiB0aGlzLT5fTV9hbGxvY2F0ZV9ub2RlKF9fbi0+X01fdigpKTsgfSk7
CiAgICB9CiAgaWYgKGZhbHNlKQogICAgewoKCiAgICAgIF9NX3Jlc2V0KCk7CiAgICAgIDsKICAg
IH0KICByZXR1cm4gKnRoaXM7CiAgICAgICB9CiAgICAgc3RkOjpfX2FsbG9jX29uX2NvcHkoX190
aGlzX2FsbG9jLCBfX3RoYXRfYWxsb2MpOwogICB9CgoKIF9fYnVja2V0X3R5cGUqIF9fZm9ybWVy
X2J1Y2tldHMgPSBudWxscHRyOwogc3RkOjpzaXplX3QgX19mb3JtZXJfYnVja2V0X2NvdW50ID0g
X01fYnVja2V0X2NvdW50OwogY29uc3QgX19yZWhhc2hfc3RhdGUmIF9fZm9ybWVyX3N0YXRlID0g
X01fcmVoYXNoX3BvbGljeS5fTV9zdGF0ZSgpOwoKIGlmIChfTV9idWNrZXRfY291bnQgIT0gX19o
dC5fTV9idWNrZXRfY291bnQpCiAgIHsKICAgICBfX2Zvcm1lcl9idWNrZXRzID0gX01fYnVja2V0
czsKICAgICBfTV9idWNrZXRzID0gX01fYWxsb2NhdGVfYnVja2V0cyhfX2h0Ll9NX2J1Y2tldF9j
b3VudCk7CiAgICAgX01fYnVja2V0X2NvdW50ID0gX19odC5fTV9idWNrZXRfY291bnQ7CiAgIH0K
IGVsc2UKICAgX19idWlsdGluX21lbXNldChfTV9idWNrZXRzLCAwLAogICAgICBfTV9idWNrZXRf
Y291bnQgKiBzaXplb2YoX19idWNrZXRfdHlwZSkpOwoKIGlmICh0cnVlKQogICB7CiAgICAgX19o
YXNodGFibGVfYmFzZTo6b3BlcmF0b3I9KF9faHQpOwogICAgIF9NX2VsZW1lbnRfY291bnQgPSBf
X2h0Ll9NX2VsZW1lbnRfY291bnQ7CiAgICAgX01fcmVoYXNoX3BvbGljeSA9IF9faHQuX01fcmVo
YXNoX3BvbGljeTsKICAgICBfX3JldXNlX29yX2FsbG9jX25vZGVfdHlwZSBfX3JvYW4oX01fYmVn
aW4oKSwgKnRoaXMpOwogICAgIF9NX2JlZm9yZV9iZWdpbi5fTV9ueHQgPSBudWxscHRyOwogICAg
IF9NX2Fzc2lnbihfX2h0LAogICAgICAgIFsmX19yb2FuXShjb25zdCBfX25vZGVfdHlwZSogX19u
KQogICAgICAgIHsgcmV0dXJuIF9fcm9hbihfX24tPl9NX3YoKSk7IH0pOwogICAgIGlmIChfX2Zv
cm1lcl9idWNrZXRzKQogICAgICAgX01fZGVhbGxvY2F0ZV9idWNrZXRzKF9fZm9ybWVyX2J1Y2tl
dHMsIF9fZm9ybWVyX2J1Y2tldF9jb3VudCk7CiAgIH0KIGlmIChmYWxzZSkKICAgewogICAgIGlm
IChfX2Zvcm1lcl9idWNrZXRzKQogICAgICAgewoKICBfTV9kZWFsbG9jYXRlX2J1Y2tldHMoKTsK
ICBfTV9yZWhhc2hfcG9saWN5Ll9NX3Jlc2V0KF9fZm9ybWVyX3N0YXRlKTsKICBfTV9idWNrZXRz
ID0gX19mb3JtZXJfYnVja2V0czsKICBfTV9idWNrZXRfY291bnQgPSBfX2Zvcm1lcl9idWNrZXRf
Y291bnQ7CiAgICAgICB9CiAgICAgX19idWlsdGluX21lbXNldChfTV9idWNrZXRzLCAwLAogICAg
ICAgIF9NX2J1Y2tldF9jb3VudCAqIHNpemVvZihfX2J1Y2tldF90eXBlKSk7CiAgICAgOwogICB9
CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5h
bWUgX1ZhbHVlLAogICAgdHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlw
ZW5hbWUgX0VxdWFsLAogICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9I
YXNoLCB0eXBlbmFtZSBfUmVoYXNoUG9saWN5LAogICAgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9Ob2RlR2VuZXJhdG9yPgogICAgICB2b2lkCiAgICAgIF9IYXNodGFi
bGU8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBfRXF1YWwsCiAgIF9IMSwgX0gy
LCBfSGFzaCwgX1JlaGFzaFBvbGljeSwgX1RyYWl0cz46OgogICAgICBfTV9hc3NpZ24oY29uc3Qg
X0hhc2h0YWJsZSYgX19odCwgY29uc3QgX05vZGVHZW5lcmF0b3ImIF9fbm9kZV9nZW4pCiAgICAg
IHsKIF9fYnVja2V0X3R5cGUqIF9fYnVja2V0cyA9IG51bGxwdHI7CiBpZiAoIV9NX2J1Y2tldHMp
CiAgIF9NX2J1Y2tldHMgPSBfX2J1Y2tldHMgPSBfTV9hbGxvY2F0ZV9idWNrZXRzKF9NX2J1Y2tl
dF9jb3VudCk7CgogaWYgKHRydWUpCiAgIHsKICAgICBpZiAoIV9faHQuX01fYmVmb3JlX2JlZ2lu
Ll9NX254dCkKICAgICAgIHJldHVybjsKCgoKICAgICBfX25vZGVfdHlwZSogX19odF9uID0gX19o
dC5fTV9iZWdpbigpOwogICAgIF9fbm9kZV90eXBlKiBfX3RoaXNfbiA9IF9fbm9kZV9nZW4oX19o
dF9uKTsKICAgICB0aGlzLT5fTV9jb3B5X2NvZGUoX190aGlzX24sIF9faHRfbik7CiAgICAgX01f
YmVmb3JlX2JlZ2luLl9NX254dCA9IF9fdGhpc19uOwogICAgIF9NX2J1Y2tldHNbX01fYnVja2V0
X2luZGV4KF9fdGhpc19uKV0gPSAmX01fYmVmb3JlX2JlZ2luOwoKCiAgICAgX19ub2RlX2Jhc2Uq
IF9fcHJldl9uID0gX190aGlzX247CiAgICAgZm9yIChfX2h0X24gPSBfX2h0X24tPl9NX25leHQo
KTsgX19odF9uOyBfX2h0X24gPSBfX2h0X24tPl9NX25leHQoKSkKICAgICAgIHsKICBfX3RoaXNf
biA9IF9fbm9kZV9nZW4oX19odF9uKTsKICBfX3ByZXZfbi0+X01fbnh0ID0gX190aGlzX247CiAg
dGhpcy0+X01fY29weV9jb2RlKF9fdGhpc19uLCBfX2h0X24pOwogIHNpemVfdHlwZSBfX2JrdCA9
IF9NX2J1Y2tldF9pbmRleChfX3RoaXNfbik7CiAgaWYgKCFfTV9idWNrZXRzW19fYmt0XSkKICAg
IF9NX2J1Y2tldHNbX19ia3RdID0gX19wcmV2X247CiAgX19wcmV2X24gPSBfX3RoaXNfbjsKICAg
ICAgIH0KICAgfQogaWYgKGZhbHNlKQogICB7CiAgICAgY2xlYXIoKTsKICAgICBpZiAoX19idWNr
ZXRzKQogICAgICAgX01fZGVhbGxvY2F0ZV9idWNrZXRzKCk7CiAgICAgOwogICB9CiAgICAgIH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLAogICAgdHlwZW5hbWUg
X0FsbG9jLCB0eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlwZW5hbWUgX0VxdWFsLAogICAgdHlwZW5h
bWUgX0gxLCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNoLCB0eXBlbmFtZSBfUmVoYXNoUG9s
aWN5LAogICAgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHZvaWQKICAgIF9IYXNodGFibGU8X0tleSwg
X1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBfRXF1YWwsCiAgICAgICAgX0gxLCBfSDIsIF9I
YXNoLCBfUmVoYXNoUG9saWN5LCBfVHJhaXRzPjo6CiAgICBfTV9yZXNldCgpIG5vZXhjZXB0CiAg
ICB7CiAgICAgIF9NX3JlaGFzaF9wb2xpY3kuX01fcmVzZXQoKTsKICAgICAgX01fYnVja2V0X2Nv
dW50ID0gMTsKICAgICAgX01fc2luZ2xlX2J1Y2tldCA9IG51bGxwdHI7CiAgICAgIF9NX2J1Y2tl
dHMgPSAmX01fc2luZ2xlX2J1Y2tldDsKICAgICAgX01fYmVmb3JlX2JlZ2luLl9NX254dCA9IG51
bGxwdHI7CiAgICAgIF9NX2VsZW1lbnRfY291bnQgPSAwOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfS2V5LCB0eXBlbmFtZSBfVmFsdWUsCiAgICB0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1l
IF9FeHRyYWN0S2V5LCB0eXBlbmFtZSBfRXF1YWwsCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVuYW1l
IF9IMiwgdHlwZW5hbWUgX0hhc2gsIHR5cGVuYW1lIF9SZWhhc2hQb2xpY3ksCiAgICB0eXBlbmFt
ZSBfVHJhaXRzPgogICAgdm9pZAogICAgX0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywg
X0V4dHJhY3RLZXksIF9FcXVhbCwKICAgICAgICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xp
Y3ksIF9UcmFpdHM+OjoKICAgIF9NX21vdmVfYXNzaWduKF9IYXNodGFibGUmJiBfX2h0LCBzdGQ6
OnRydWVfdHlwZSkKICAgIHsKICAgICAgdGhpcy0+X01fZGVhbGxvY2F0ZV9ub2RlcyhfTV9iZWdp
bigpKTsKICAgICAgX01fZGVhbGxvY2F0ZV9idWNrZXRzKCk7CiAgICAgIF9faGFzaHRhYmxlX2Jh
c2U6Om9wZXJhdG9yPShzdGQ6Om1vdmUoX19odCkpOwogICAgICBfTV9yZWhhc2hfcG9saWN5ID0g
X19odC5fTV9yZWhhc2hfcG9saWN5OwogICAgICBpZiAoIV9faHQuX01fdXNlc19zaW5nbGVfYnVj
a2V0KCkpCiBfTV9idWNrZXRzID0gX19odC5fTV9idWNrZXRzOwogICAgICBlbHNlCiB7CiAgIF9N
X2J1Y2tldHMgPSAmX01fc2luZ2xlX2J1Y2tldDsKICAgX01fc2luZ2xlX2J1Y2tldCA9IF9faHQu
X01fc2luZ2xlX2J1Y2tldDsKIH0KICAgICAgX01fYnVja2V0X2NvdW50ID0gX19odC5fTV9idWNr
ZXRfY291bnQ7CiAgICAgIF9NX2JlZm9yZV9iZWdpbi5fTV9ueHQgPSBfX2h0Ll9NX2JlZm9yZV9i
ZWdpbi5fTV9ueHQ7CiAgICAgIF9NX2VsZW1lbnRfY291bnQgPSBfX2h0Ll9NX2VsZW1lbnRfY291
bnQ7CiAgICAgIHN0ZDo6X19hbGxvY19vbl9tb3ZlKHRoaXMtPl9NX25vZGVfYWxsb2NhdG9yKCks
IF9faHQuX01fbm9kZV9hbGxvY2F0b3IoKSk7CgoKCiAgICAgIGlmIChfTV9iZWdpbigpKQogX01f
YnVja2V0c1tfTV9idWNrZXRfaW5kZXgoX01fYmVnaW4oKSldID0gJl9NX2JlZm9yZV9iZWdpbjsK
ICAgICAgX19odC5fTV9yZXNldCgpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5LCB0
eXBlbmFtZSBfVmFsdWUsCiAgICB0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9FeHRyYWN0S2V5
LCB0eXBlbmFtZSBfRXF1YWwsCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5h
bWUgX0hhc2gsIHR5cGVuYW1lIF9SZWhhc2hQb2xpY3ksCiAgICB0eXBlbmFtZSBfVHJhaXRzPgog
ICAgdm9pZAogICAgX0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJhY3RLZXks
IF9FcXVhbCwKICAgICAgICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+
OjoKICAgIF9NX21vdmVfYXNzaWduKF9IYXNodGFibGUmJiBfX2h0LCBzdGQ6OmZhbHNlX3R5cGUp
CiAgICB7CiAgICAgIGlmIChfX2h0Ll9NX25vZGVfYWxsb2NhdG9yKCkgPT0gdGhpcy0+X01fbm9k
ZV9hbGxvY2F0b3IoKSkKIF9NX21vdmVfYXNzaWduKHN0ZDo6bW92ZShfX2h0KSwgc3RkOjp0cnVl
X3R5cGUoKSk7CiAgICAgIGVsc2UKIHsKCiAgIF9fYnVja2V0X3R5cGUqIF9fZm9ybWVyX2J1Y2tl
dHMgPSBudWxscHRyOwogICBzaXplX3R5cGUgX19mb3JtZXJfYnVja2V0X2NvdW50ID0gX01fYnVj
a2V0X2NvdW50OwogICBjb25zdCBfX3JlaGFzaF9zdGF0ZSYgX19mb3JtZXJfc3RhdGUgPSBfTV9y
ZWhhc2hfcG9saWN5Ll9NX3N0YXRlKCk7CgogICBpZiAoX01fYnVja2V0X2NvdW50ICE9IF9faHQu
X01fYnVja2V0X2NvdW50KQogICAgIHsKICAgICAgIF9fZm9ybWVyX2J1Y2tldHMgPSBfTV9idWNr
ZXRzOwogICAgICAgX01fYnVja2V0cyA9IF9NX2FsbG9jYXRlX2J1Y2tldHMoX19odC5fTV9idWNr
ZXRfY291bnQpOwogICAgICAgX01fYnVja2V0X2NvdW50ID0gX19odC5fTV9idWNrZXRfY291bnQ7
CiAgICAgfQogICBlbHNlCiAgICAgX19idWlsdGluX21lbXNldChfTV9idWNrZXRzLCAwLAogICAg
ICAgIF9NX2J1Y2tldF9jb3VudCAqIHNpemVvZihfX2J1Y2tldF90eXBlKSk7CgogICBpZiAodHJ1
ZSkKICAgICB7CiAgICAgICBfX2hhc2h0YWJsZV9iYXNlOjpvcGVyYXRvcj0oc3RkOjptb3ZlKF9f
aHQpKTsKICAgICAgIF9NX2VsZW1lbnRfY291bnQgPSBfX2h0Ll9NX2VsZW1lbnRfY291bnQ7CiAg
ICAgICBfTV9yZWhhc2hfcG9saWN5ID0gX19odC5fTV9yZWhhc2hfcG9saWN5OwogICAgICAgX19y
ZXVzZV9vcl9hbGxvY19ub2RlX3R5cGUgX19yb2FuKF9NX2JlZ2luKCksICp0aGlzKTsKICAgICAg
IF9NX2JlZm9yZV9iZWdpbi5fTV9ueHQgPSBudWxscHRyOwogICAgICAgX01fYXNzaWduKF9faHQs
CiAgIFsmX19yb2FuXShfX25vZGVfdHlwZSogX19uKQogICB7IHJldHVybiBfX3JvYW4oc3RkOjpt
b3ZlX2lmX25vZXhjZXB0KF9fbi0+X01fdigpKSk7IH0pOwogICAgICAgX19odC5jbGVhcigpOwog
ICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsKICAgICAgIGlmIChfX2Zvcm1lcl9idWNrZXRzKQog
IHsKICAgIF9NX2RlYWxsb2NhdGVfYnVja2V0cygpOwogICAgX01fcmVoYXNoX3BvbGljeS5fTV9y
ZXNldChfX2Zvcm1lcl9zdGF0ZSk7CiAgICBfTV9idWNrZXRzID0gX19mb3JtZXJfYnVja2V0czsK
ICAgIF9NX2J1Y2tldF9jb3VudCA9IF9fZm9ybWVyX2J1Y2tldF9jb3VudDsKICB9CiAgICAgICBf
X2J1aWx0aW5fbWVtc2V0KF9NX2J1Y2tldHMsIDAsCiAgICAgICAgICBfTV9idWNrZXRfY291bnQg
KiBzaXplb2YoX19idWNrZXRfdHlwZSkpOwogICAgICAgOwogICAgIH0KIH0KICAgIH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLAogICAgdHlwZW5hbWUgX0FsbG9j
LCB0eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlwZW5hbWUgX0VxdWFsLAogICAgdHlwZW5hbWUgX0gx
LCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNoLCB0eXBlbmFtZSBfUmVoYXNoUG9saWN5LAog
ICAgdHlwZW5hbWUgX1RyYWl0cz4KICAgIF9IYXNodGFibGU8X0tleSwgX1ZhbHVlLCBfQWxsb2Ms
IF9FeHRyYWN0S2V5LCBfRXF1YWwsCiAgICAgICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9s
aWN5LCBfVHJhaXRzPjo6CiAgICBfSGFzaHRhYmxlKGNvbnN0IF9IYXNodGFibGUmIF9faHQpCiAg
ICA6IF9faGFzaHRhYmxlX2Jhc2UoX19odCksCiAgICAgIF9fbWFwX2Jhc2UoX19odCksCiAgICAg
IF9fcmVoYXNoX2Jhc2UoX19odCksCiAgICAgIF9faGFzaHRhYmxlX2FsbG9jKAogX19ub2RlX2Fs
bG9jX3RyYWl0czo6X1Nfc2VsZWN0X29uX2NvcHkoX19odC5fTV9ub2RlX2FsbG9jYXRvcigpKSks
CiAgICAgIF9NX2J1Y2tldHMoKSwKICAgICAgX01fYnVja2V0X2NvdW50KF9faHQuX01fYnVja2V0
X2NvdW50KSwKICAgICAgX01fZWxlbWVudF9jb3VudChfX2h0Ll9NX2VsZW1lbnRfY291bnQpLAog
ICAgICBfTV9yZWhhc2hfcG9saWN5KF9faHQuX01fcmVoYXNoX3BvbGljeSkKICAgIHsKICAgICAg
X01fYXNzaWduKF9faHQsCiAgW3RoaXNdKGNvbnN0IF9fbm9kZV90eXBlKiBfX24pCiAgeyByZXR1
cm4gdGhpcy0+X01fYWxsb2NhdGVfbm9kZShfX24tPl9NX3YoKSk7IH0pOwogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBfVmFsdWUsCiAgICB0eXBlbmFtZSBfQWxsb2Ms
IHR5cGVuYW1lIF9FeHRyYWN0S2V5LCB0eXBlbmFtZSBfRXF1YWwsCiAgICB0eXBlbmFtZSBfSDEs
IHR5cGVuYW1lIF9IMiwgdHlwZW5hbWUgX0hhc2gsIHR5cGVuYW1lIF9SZWhhc2hQb2xpY3ksCiAg
ICB0eXBlbmFtZSBfVHJhaXRzPgogICAgX0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywg
X0V4dHJhY3RLZXksIF9FcXVhbCwKICAgICAgICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xp
Y3ksIF9UcmFpdHM+OjoKICAgIF9IYXNodGFibGUoX0hhc2h0YWJsZSYmIF9faHQpIG5vZXhjZXB0
CiAgICA6IF9faGFzaHRhYmxlX2Jhc2UoX19odCksCiAgICAgIF9fbWFwX2Jhc2UoX19odCksCiAg
ICAgIF9fcmVoYXNoX2Jhc2UoX19odCksCiAgICAgIF9faGFzaHRhYmxlX2FsbG9jKHN0ZDo6bW92
ZShfX2h0Ll9NX2Jhc2VfYWxsb2MoKSkpLAogICAgICBfTV9idWNrZXRzKF9faHQuX01fYnVja2V0
cyksCiAgICAgIF9NX2J1Y2tldF9jb3VudChfX2h0Ll9NX2J1Y2tldF9jb3VudCksCiAgICAgIF9N
X2JlZm9yZV9iZWdpbihfX2h0Ll9NX2JlZm9yZV9iZWdpbi5fTV9ueHQpLAogICAgICBfTV9lbGVt
ZW50X2NvdW50KF9faHQuX01fZWxlbWVudF9jb3VudCksCiAgICAgIF9NX3JlaGFzaF9wb2xpY3ko
X19odC5fTV9yZWhhc2hfcG9saWN5KQogICAgewoKICAgICAgaWYgKF9faHQuX01fdXNlc19zaW5n
bGVfYnVja2V0KCkpCiB7CiAgIF9NX2J1Y2tldHMgPSAmX01fc2luZ2xlX2J1Y2tldDsKICAgX01f
c2luZ2xlX2J1Y2tldCA9IF9faHQuX01fc2luZ2xlX2J1Y2tldDsKIH0KCgoKICAgICAgaWYgKF9N
X2JlZ2luKCkpCiBfTV9idWNrZXRzW19NX2J1Y2tldF9pbmRleChfTV9iZWdpbigpKV0gPSAmX01f
YmVmb3JlX2JlZ2luOwoKICAgICAgX19odC5fTV9yZXNldCgpOwogICAgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBfVmFsdWUsCiAgICB0eXBlbmFtZSBfQWxsb2MsIHR5cGVu
YW1lIF9FeHRyYWN0S2V5LCB0eXBlbmFtZSBfRXF1YWwsCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVu
YW1lIF9IMiwgdHlwZW5hbWUgX0hhc2gsIHR5cGVuYW1lIF9SZWhhc2hQb2xpY3ksCiAgICB0eXBl
bmFtZSBfVHJhaXRzPgogICAgX0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJh
Y3RLZXksIF9FcXVhbCwKICAgICAgICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksIF9U
cmFpdHM+OjoKICAgIF9IYXNodGFibGUoY29uc3QgX0hhc2h0YWJsZSYgX19odCwgY29uc3QgYWxs
b2NhdG9yX3R5cGUmIF9fYSkKICAgIDogX19oYXNodGFibGVfYmFzZShfX2h0KSwKICAgICAgX19t
YXBfYmFzZShfX2h0KSwKICAgICAgX19yZWhhc2hfYmFzZShfX2h0KSwKICAgICAgX19oYXNodGFi
bGVfYWxsb2MoX19ub2RlX2FsbG9jX3R5cGUoX19hKSksCiAgICAgIF9NX2J1Y2tldHMoKSwKICAg
ICAgX01fYnVja2V0X2NvdW50KF9faHQuX01fYnVja2V0X2NvdW50KSwKICAgICAgX01fZWxlbWVu
dF9jb3VudChfX2h0Ll9NX2VsZW1lbnRfY291bnQpLAogICAgICBfTV9yZWhhc2hfcG9saWN5KF9f
aHQuX01fcmVoYXNoX3BvbGljeSkKICAgIHsKICAgICAgX01fYXNzaWduKF9faHQsCiAgW3RoaXNd
KGNvbnN0IF9fbm9kZV90eXBlKiBfX24pCiAgeyByZXR1cm4gdGhpcy0+X01fYWxsb2NhdGVfbm9k
ZShfX24tPl9NX3YoKSk7IH0pOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5LCB0eXBl
bmFtZSBfVmFsdWUsCiAgICB0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9FeHRyYWN0S2V5LCB0
eXBlbmFtZSBfRXF1YWwsCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5hbWUg
X0hhc2gsIHR5cGVuYW1lIF9SZWhhc2hQb2xpY3ksCiAgICB0eXBlbmFtZSBfVHJhaXRzPgogICAg
X0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwKICAg
ICAgICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+OjoKICAgIF9IYXNo
dGFibGUoX0hhc2h0YWJsZSYmIF9faHQsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EpCiAgICA6
IF9faGFzaHRhYmxlX2Jhc2UoX19odCksCiAgICAgIF9fbWFwX2Jhc2UoX19odCksCiAgICAgIF9f
cmVoYXNoX2Jhc2UoX19odCksCiAgICAgIF9faGFzaHRhYmxlX2FsbG9jKF9fbm9kZV9hbGxvY190
eXBlKF9fYSkpLAogICAgICBfTV9idWNrZXRzKCksCiAgICAgIF9NX2J1Y2tldF9jb3VudChfX2h0
Ll9NX2J1Y2tldF9jb3VudCksCiAgICAgIF9NX2VsZW1lbnRfY291bnQoX19odC5fTV9lbGVtZW50
X2NvdW50KSwKICAgICAgX01fcmVoYXNoX3BvbGljeShfX2h0Ll9NX3JlaGFzaF9wb2xpY3kpCiAg
ICB7CiAgICAgIGlmIChfX2h0Ll9NX25vZGVfYWxsb2NhdG9yKCkgPT0gdGhpcy0+X01fbm9kZV9h
bGxvY2F0b3IoKSkKIHsKICAgaWYgKF9faHQuX01fdXNlc19zaW5nbGVfYnVja2V0KCkpCiAgICAg
ewogICAgICAgX01fYnVja2V0cyA9ICZfTV9zaW5nbGVfYnVja2V0OwogICAgICAgX01fc2luZ2xl
X2J1Y2tldCA9IF9faHQuX01fc2luZ2xlX2J1Y2tldDsKICAgICB9CiAgIGVsc2UKICAgICBfTV9i
dWNrZXRzID0gX19odC5fTV9idWNrZXRzOwoKICAgX01fYmVmb3JlX2JlZ2luLl9NX254dCA9IF9f
aHQuX01fYmVmb3JlX2JlZ2luLl9NX254dDsKCgogICBpZiAoX01fYmVnaW4oKSkKICAgICBfTV9i
dWNrZXRzW19NX2J1Y2tldF9pbmRleChfTV9iZWdpbigpKV0gPSAmX01fYmVmb3JlX2JlZ2luOwog
ICBfX2h0Ll9NX3Jlc2V0KCk7CiB9CiAgICAgIGVsc2UKIHsKICAgX01fYXNzaWduKF9faHQsCiAg
ICAgIFt0aGlzXShfX25vZGVfdHlwZSogX19uKQogICAgICB7CiAgICAgICAgcmV0dXJuIHRoaXMt
Pl9NX2FsbG9jYXRlX25vZGUoCiAgICAgc3RkOjptb3ZlX2lmX25vZXhjZXB0KF9fbi0+X01fdigp
KSk7CiAgICAgIH0pOwogICBfX2h0LmNsZWFyKCk7CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9LZXksIHR5cGVuYW1lIF9WYWx1ZSwKICAgIHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUg
X0V4dHJhY3RLZXksIHR5cGVuYW1lIF9FcXVhbCwKICAgIHR5cGVuYW1lIF9IMSwgdHlwZW5hbWUg
X0gyLCB0eXBlbmFtZSBfSGFzaCwgdHlwZW5hbWUgX1JlaGFzaFBvbGljeSwKICAgIHR5cGVuYW1l
IF9UcmFpdHM+CiAgICBfSGFzaHRhYmxlPF9LZXksIF9WYWx1ZSwgX0FsbG9jLCBfRXh0cmFjdEtl
eSwgX0VxdWFsLAogICAgICAgIF9IMSwgX0gyLCBfSGFzaCwgX1JlaGFzaFBvbGljeSwgX1RyYWl0
cz46OgogICAgfl9IYXNodGFibGUoKSBub2V4Y2VwdAogICAgewogICAgICBjbGVhcigpOwogICAg
ICBpZiAoX01fYnVja2V0cykKIF9NX2RlYWxsb2NhdGVfYnVja2V0cygpOwogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBfVmFsdWUsCiAgICB0eXBlbmFtZSBfQWxsb2Ms
IHR5cGVuYW1lIF9FeHRyYWN0S2V5LCB0eXBlbmFtZSBfRXF1YWwsCiAgICB0eXBlbmFtZSBfSDEs
IHR5cGVuYW1lIF9IMiwgdHlwZW5hbWUgX0hhc2gsIHR5cGVuYW1lIF9SZWhhc2hQb2xpY3ksCiAg
ICB0eXBlbmFtZSBfVHJhaXRzPgogICAgdm9pZAogICAgX0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUs
IF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwKICAgICAgICBfSDEsIF9IMiwgX0hhc2gsIF9S
ZWhhc2hQb2xpY3ksIF9UcmFpdHM+OjoKICAgIHN3YXAoX0hhc2h0YWJsZSYgX194KQogICAgbm9l
eGNlcHQoX19ub2RlX2FsbG9jX3RyYWl0czo6X1Nfbm90aHJvd19zd2FwKCkpCiAgICB7CgoKCiAg
ICAgIHRoaXMtPl9NX3N3YXAoX194KTsKCiAgICAgIHN0ZDo6X19hbGxvY19vbl9zd2FwKHRoaXMt
Pl9NX25vZGVfYWxsb2NhdG9yKCksIF9feC5fTV9ub2RlX2FsbG9jYXRvcigpKTsKICAgICAgc3Rk
Ojpzd2FwKF9NX3JlaGFzaF9wb2xpY3ksIF9feC5fTV9yZWhhc2hfcG9saWN5KTsKCgogICAgICBp
ZiAodGhpcy0+X01fdXNlc19zaW5nbGVfYnVja2V0KCkpCiB7CiAgIGlmICghX194Ll9NX3VzZXNf
c2luZ2xlX2J1Y2tldCgpKQogICAgIHsKICAgICAgIF9NX2J1Y2tldHMgPSBfX3guX01fYnVja2V0
czsKICAgICAgIF9feC5fTV9idWNrZXRzID0gJl9feC5fTV9zaW5nbGVfYnVja2V0OwogICAgIH0K
IH0KICAgICAgZWxzZSBpZiAoX194Ll9NX3VzZXNfc2luZ2xlX2J1Y2tldCgpKQogewogICBfX3gu
X01fYnVja2V0cyA9IF9NX2J1Y2tldHM7CiAgIF9NX2J1Y2tldHMgPSAmX01fc2luZ2xlX2J1Y2tl
dDsKIH0KICAgICAgZWxzZQogc3RkOjpzd2FwKF9NX2J1Y2tldHMsIF9feC5fTV9idWNrZXRzKTsK
CiAgICAgIHN0ZDo6c3dhcChfTV9idWNrZXRfY291bnQsIF9feC5fTV9idWNrZXRfY291bnQpOwog
ICAgICBzdGQ6OnN3YXAoX01fYmVmb3JlX2JlZ2luLl9NX254dCwgX194Ll9NX2JlZm9yZV9iZWdp
bi5fTV9ueHQpOwogICAgICBzdGQ6OnN3YXAoX01fZWxlbWVudF9jb3VudCwgX194Ll9NX2VsZW1l
bnRfY291bnQpOwogICAgICBzdGQ6OnN3YXAoX01fc2luZ2xlX2J1Y2tldCwgX194Ll9NX3Npbmds
ZV9idWNrZXQpOwoKCgogICAgICBpZiAoX01fYmVnaW4oKSkKIF9NX2J1Y2tldHNbX01fYnVja2V0
X2luZGV4KF9NX2JlZ2luKCkpXSA9ICZfTV9iZWZvcmVfYmVnaW47CgogICAgICBpZiAoX194Ll9N
X2JlZ2luKCkpCiBfX3guX01fYnVja2V0c1tfX3guX01fYnVja2V0X2luZGV4KF9feC5fTV9iZWdp
bigpKV0KICAgPSAmX194Ll9NX2JlZm9yZV9iZWdpbjsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLAogICAgdHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZSBf
RXh0cmFjdEtleSwgdHlwZW5hbWUgX0VxdWFsLAogICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBf
SDIsIHR5cGVuYW1lIF9IYXNoLCB0eXBlbmFtZSBfUmVoYXNoUG9saWN5LAogICAgdHlwZW5hbWUg
X1RyYWl0cz4KICAgIHZvaWQKICAgIF9IYXNodGFibGU8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9F
eHRyYWN0S2V5LCBfRXF1YWwsCiAgICAgICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5
LCBfVHJhaXRzPjo6CiAgICBfX3JlaGFzaF9wb2xpY3koY29uc3QgX1JlaGFzaFBvbGljeSYgX19w
b2wpCiAgICB7CiAgICAgIGF1dG8gX19kb19yZWhhc2ggPQogX19wb2wuX01fbmVlZF9yZWhhc2go
X01fYnVja2V0X2NvdW50LCBfTV9lbGVtZW50X2NvdW50LCAwKTsKICAgICAgaWYgKF9fZG9fcmVo
YXNoLmZpcnN0KQogX01fcmVoYXNoKF9fZG9fcmVoYXNoLnNlY29uZCwgX01fcmVoYXNoX3BvbGlj
eS5fTV9zdGF0ZSgpKTsKICAgICAgX01fcmVoYXNoX3BvbGljeSA9IF9fcG9sOwogICAgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBfVmFsdWUsCiAgICB0eXBlbmFtZSBfQWxs
b2MsIHR5cGVuYW1lIF9FeHRyYWN0S2V5LCB0eXBlbmFtZSBfRXF1YWwsCiAgICB0eXBlbmFtZSBf
SDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5hbWUgX0hhc2gsIHR5cGVuYW1lIF9SZWhhc2hQb2xpY3ks
CiAgICB0eXBlbmFtZSBfVHJhaXRzPgogICAgdHlwZW5hbWUgX0hhc2h0YWJsZTxfS2V5LCBfVmFs
dWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwKICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVo
YXNoUG9saWN5LAogICBfVHJhaXRzPjo6aXRlcmF0b3IKICAgIF9IYXNodGFibGU8X0tleSwgX1Zh
bHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBfRXF1YWwsCiAgICAgICAgX0gxLCBfSDIsIF9IYXNo
LCBfUmVoYXNoUG9saWN5LCBfVHJhaXRzPjo6CiAgICBmaW5kKGNvbnN0IGtleV90eXBlJiBfX2sp
CiAgICB7CiAgICAgIF9faGFzaF9jb2RlIF9fY29kZSA9IHRoaXMtPl9NX2hhc2hfY29kZShfX2sp
OwogICAgICBzdGQ6OnNpemVfdCBfX24gPSBfTV9idWNrZXRfaW5kZXgoX19rLCBfX2NvZGUpOwog
ICAgICBfX25vZGVfdHlwZSogX19wID0gX01fZmluZF9ub2RlKF9fbiwgX19rLCBfX2NvZGUpOwog
ICAgICByZXR1cm4gX19wID8gaXRlcmF0b3IoX19wKSA6IGVuZCgpOwogICAgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBfVmFsdWUsCiAgICB0eXBlbmFtZSBfQWxsb2MsIHR5
cGVuYW1lIF9FeHRyYWN0S2V5LCB0eXBlbmFtZSBfRXF1YWwsCiAgICB0eXBlbmFtZSBfSDEsIHR5
cGVuYW1lIF9IMiwgdHlwZW5hbWUgX0hhc2gsIHR5cGVuYW1lIF9SZWhhc2hQb2xpY3ksCiAgICB0
eXBlbmFtZSBfVHJhaXRzPgogICAgdHlwZW5hbWUgX0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9B
bGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwKICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9s
aWN5LAogICBfVHJhaXRzPjo6Y29uc3RfaXRlcmF0b3IKICAgIF9IYXNodGFibGU8X0tleSwgX1Zh
bHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBfRXF1YWwsCiAgICAgICAgX0gxLCBfSDIsIF9IYXNo
LCBfUmVoYXNoUG9saWN5LCBfVHJhaXRzPjo6CiAgICBmaW5kKGNvbnN0IGtleV90eXBlJiBfX2sp
IGNvbnN0CiAgICB7CiAgICAgIF9faGFzaF9jb2RlIF9fY29kZSA9IHRoaXMtPl9NX2hhc2hfY29k
ZShfX2spOwogICAgICBzdGQ6OnNpemVfdCBfX24gPSBfTV9idWNrZXRfaW5kZXgoX19rLCBfX2Nv
ZGUpOwogICAgICBfX25vZGVfdHlwZSogX19wID0gX01fZmluZF9ub2RlKF9fbiwgX19rLCBfX2Nv
ZGUpOwogICAgICByZXR1cm4gX19wID8gY29uc3RfaXRlcmF0b3IoX19wKSA6IGVuZCgpOwogICAg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBfVmFsdWUsCiAgICB0eXBlbmFt
ZSBfQWxsb2MsIHR5cGVuYW1lIF9FeHRyYWN0S2V5LCB0eXBlbmFtZSBfRXF1YWwsCiAgICB0eXBl
bmFtZSBfSDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5hbWUgX0hhc2gsIHR5cGVuYW1lIF9SZWhhc2hQ
b2xpY3ksCiAgICB0eXBlbmFtZSBfVHJhaXRzPgogICAgdHlwZW5hbWUgX0hhc2h0YWJsZTxfS2V5
LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwKICAgX0gxLCBfSDIsIF9IYXNo
LCBfUmVoYXNoUG9saWN5LAogICBfVHJhaXRzPjo6c2l6ZV90eXBlCiAgICBfSGFzaHRhYmxlPF9L
ZXksIF9WYWx1ZSwgX0FsbG9jLCBfRXh0cmFjdEtleSwgX0VxdWFsLAogICAgICAgIF9IMSwgX0gy
LCBfSGFzaCwgX1JlaGFzaFBvbGljeSwgX1RyYWl0cz46OgogICAgY291bnQoY29uc3Qga2V5X3R5
cGUmIF9faykgY29uc3QKICAgIHsKICAgICAgX19oYXNoX2NvZGUgX19jb2RlID0gdGhpcy0+X01f
aGFzaF9jb2RlKF9fayk7CiAgICAgIHN0ZDo6c2l6ZV90IF9fbiA9IF9NX2J1Y2tldF9pbmRleChf
X2ssIF9fY29kZSk7CiAgICAgIF9fbm9kZV90eXBlKiBfX3AgPSBfTV9idWNrZXRfYmVnaW4oX19u
KTsKICAgICAgaWYgKCFfX3ApCiByZXR1cm4gMDsKCiAgICAgIHN0ZDo6c2l6ZV90IF9fcmVzdWx0
ID0gMDsKICAgICAgZm9yICg7OyBfX3AgPSBfX3AtPl9NX25leHQoKSkKIHsKICAgaWYgKHRoaXMt
Pl9NX2VxdWFscyhfX2ssIF9fY29kZSwgX19wKSkKICAgICArK19fcmVzdWx0OwogICBlbHNlIGlm
IChfX3Jlc3VsdCkKCgoKICAgICBicmVhazsKICAgaWYgKCFfX3AtPl9NX254dCB8fCBfTV9idWNr
ZXRfaW5kZXgoX19wLT5fTV9uZXh0KCkpICE9IF9fbikKICAgICBicmVhazsKIH0KICAgICAgcmV0
dXJuIF9fcmVzdWx0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBf
VmFsdWUsCiAgICB0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9FeHRyYWN0S2V5LCB0eXBlbmFt
ZSBfRXF1YWwsCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5hbWUgX0hhc2gs
IHR5cGVuYW1lIF9SZWhhc2hQb2xpY3ksCiAgICB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpw
YWlyPHR5cGVuYW1lIF9IYXNodGFibGU8X0tleSwgX1ZhbHVlLCBfQWxsb2MsCiAgICAgIF9FeHRy
YWN0S2V5LCBfRXF1YWwsIF9IMSwKICAgICAgX0gyLCBfSGFzaCwgX1JlaGFzaFBvbGljeSwKICAg
ICAgX1RyYWl0cz46Oml0ZXJhdG9yLAogICAgICAgdHlwZW5hbWUgX0hhc2h0YWJsZTxfS2V5LCBf
VmFsdWUsIF9BbGxvYywKICAgICAgX0V4dHJhY3RLZXksIF9FcXVhbCwgX0gxLAogICAgICBfSDIs
IF9IYXNoLCBfUmVoYXNoUG9saWN5LAogICAgICBfVHJhaXRzPjo6aXRlcmF0b3I+CiAgICBfSGFz
aHRhYmxlPF9LZXksIF9WYWx1ZSwgX0FsbG9jLCBfRXh0cmFjdEtleSwgX0VxdWFsLAogICAgICAg
IF9IMSwgX0gyLCBfSGFzaCwgX1JlaGFzaFBvbGljeSwgX1RyYWl0cz46OgogICAgZXF1YWxfcmFu
Z2UoY29uc3Qga2V5X3R5cGUmIF9faykKICAgIHsKICAgICAgX19oYXNoX2NvZGUgX19jb2RlID0g
dGhpcy0+X01faGFzaF9jb2RlKF9fayk7CiAgICAgIHN0ZDo6c2l6ZV90IF9fbiA9IF9NX2J1Y2tl
dF9pbmRleChfX2ssIF9fY29kZSk7CiAgICAgIF9fbm9kZV90eXBlKiBfX3AgPSBfTV9maW5kX25v
ZGUoX19uLCBfX2ssIF9fY29kZSk7CgogICAgICBpZiAoX19wKQogewogICBfX25vZGVfdHlwZSog
X19wMSA9IF9fcC0+X01fbmV4dCgpOwogICB3aGlsZSAoX19wMSAmJiBfTV9idWNrZXRfaW5kZXgo
X19wMSkgPT0gX19uCiAgICYmIHRoaXMtPl9NX2VxdWFscyhfX2ssIF9fY29kZSwgX19wMSkpCiAg
ICAgX19wMSA9IF9fcDEtPl9NX25leHQoKTsKCiAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihpdGVy
YXRvcihfX3ApLCBpdGVyYXRvcihfX3AxKSk7CiB9CiAgICAgIGVsc2UKIHJldHVybiBzdGQ6Om1h
a2VfcGFpcihlbmQoKSwgZW5kKCkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5LCB0
eXBlbmFtZSBfVmFsdWUsCiAgICB0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9FeHRyYWN0S2V5
LCB0eXBlbmFtZSBfRXF1YWwsCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5h
bWUgX0hhc2gsIHR5cGVuYW1lIF9SZWhhc2hQb2xpY3ksCiAgICB0eXBlbmFtZSBfVHJhaXRzPgog
ICAgc3RkOjpwYWlyPHR5cGVuYW1lIF9IYXNodGFibGU8X0tleSwgX1ZhbHVlLCBfQWxsb2MsCiAg
ICAgIF9FeHRyYWN0S2V5LCBfRXF1YWwsIF9IMSwKICAgICAgX0gyLCBfSGFzaCwgX1JlaGFzaFBv
bGljeSwKICAgICAgX1RyYWl0cz46OmNvbnN0X2l0ZXJhdG9yLAogICAgICAgdHlwZW5hbWUgX0hh
c2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywKICAgICAgX0V4dHJhY3RLZXksIF9FcXVhbCwg
X0gxLAogICAgICBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LAogICAgICBfVHJhaXRzPjo6Y29u
c3RfaXRlcmF0b3I+CiAgICBfSGFzaHRhYmxlPF9LZXksIF9WYWx1ZSwgX0FsbG9jLCBfRXh0cmFj
dEtleSwgX0VxdWFsLAogICAgICAgIF9IMSwgX0gyLCBfSGFzaCwgX1JlaGFzaFBvbGljeSwgX1Ry
YWl0cz46OgogICAgZXF1YWxfcmFuZ2UoY29uc3Qga2V5X3R5cGUmIF9faykgY29uc3QKICAgIHsK
ICAgICAgX19oYXNoX2NvZGUgX19jb2RlID0gdGhpcy0+X01faGFzaF9jb2RlKF9fayk7CiAgICAg
IHN0ZDo6c2l6ZV90IF9fbiA9IF9NX2J1Y2tldF9pbmRleChfX2ssIF9fY29kZSk7CiAgICAgIF9f
bm9kZV90eXBlKiBfX3AgPSBfTV9maW5kX25vZGUoX19uLCBfX2ssIF9fY29kZSk7CgogICAgICBp
ZiAoX19wKQogewogICBfX25vZGVfdHlwZSogX19wMSA9IF9fcC0+X01fbmV4dCgpOwogICB3aGls
ZSAoX19wMSAmJiBfTV9idWNrZXRfaW5kZXgoX19wMSkgPT0gX19uCiAgICYmIHRoaXMtPl9NX2Vx
dWFscyhfX2ssIF9fY29kZSwgX19wMSkpCiAgICAgX19wMSA9IF9fcDEtPl9NX25leHQoKTsKCiAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihjb25zdF9pdGVyYXRvcihfX3ApLCBjb25zdF9pdGVyYXRv
cihfX3AxKSk7CiB9CiAgICAgIGVsc2UKIHJldHVybiBzdGQ6Om1ha2VfcGFpcihlbmQoKSwgZW5k
KCkpOwogICAgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5cGVuYW1lIF9WYWx1ZSwK
ICAgIHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUgX0V4dHJhY3RLZXksIHR5cGVuYW1lIF9FcXVh
bCwKICAgIHR5cGVuYW1lIF9IMSwgdHlwZW5hbWUgX0gyLCB0eXBlbmFtZSBfSGFzaCwgdHlwZW5h
bWUgX1JlaGFzaFBvbGljeSwKICAgIHR5cGVuYW1lIF9UcmFpdHM+CiAgICB0eXBlbmFtZSBfSGFz
aHRhYmxlPF9LZXksIF9WYWx1ZSwgX0FsbG9jLCBfRXh0cmFjdEtleSwKICAgX0VxdWFsLCBfSDEs
IF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksCiAgIF9UcmFpdHM+OjpfX25vZGVfYmFzZSoKICAg
IF9IYXNodGFibGU8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBfRXF1YWwsCiAg
ICAgICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LCBfVHJhaXRzPjo6CiAgICBfTV9m
aW5kX2JlZm9yZV9ub2RlKHNpemVfdHlwZSBfX24sIGNvbnN0IGtleV90eXBlJiBfX2ssCiAgIF9f
aGFzaF9jb2RlIF9fY29kZSkgY29uc3QKICAgIHsKICAgICAgX19ub2RlX2Jhc2UqIF9fcHJldl9w
ID0gX01fYnVja2V0c1tfX25dOwogICAgICBpZiAoIV9fcHJldl9wKQogcmV0dXJuIG51bGxwdHI7
CgogICAgICBmb3IgKF9fbm9kZV90eXBlKiBfX3AgPSBzdGF0aWNfY2FzdDxfX25vZGVfdHlwZSo+
KF9fcHJldl9wLT5fTV9ueHQpOzsKICAgIF9fcCA9IF9fcC0+X01fbmV4dCgpKQogewogICBpZiAo
dGhpcy0+X01fZXF1YWxzKF9faywgX19jb2RlLCBfX3ApKQogICAgIHJldHVybiBfX3ByZXZfcDsK
CiAgIGlmICghX19wLT5fTV9ueHQgfHwgX01fYnVja2V0X2luZGV4KF9fcC0+X01fbmV4dCgpKSAh
PSBfX24pCiAgICAgYnJlYWs7CiAgIF9fcHJldl9wID0gX19wOwogfQogICAgICByZXR1cm4gbnVs
bHB0cjsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLAog
ICAgdHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlwZW5hbWUgX0VxdWFs
LAogICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNoLCB0eXBlbmFt
ZSBfUmVoYXNoUG9saWN5LAogICAgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHZvaWQKICAgIF9IYXNo
dGFibGU8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBfRXF1YWwsCiAgICAgICAg
X0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LCBfVHJhaXRzPjo6CiAgICBfTV9pbnNlcnRf
YnVja2V0X2JlZ2luKHNpemVfdHlwZSBfX2JrdCwgX19ub2RlX3R5cGUqIF9fbm9kZSkKICAgIHsK
ICAgICAgaWYgKF9NX2J1Y2tldHNbX19ia3RdKQogewoKCiAgIF9fbm9kZS0+X01fbnh0ID0gX01f
YnVja2V0c1tfX2JrdF0tPl9NX254dDsKICAgX01fYnVja2V0c1tfX2JrdF0tPl9NX254dCA9IF9f
bm9kZTsKIH0KICAgICAgZWxzZQogewoKCgogICBfX25vZGUtPl9NX254dCA9IF9NX2JlZm9yZV9i
ZWdpbi5fTV9ueHQ7CiAgIF9NX2JlZm9yZV9iZWdpbi5fTV9ueHQgPSBfX25vZGU7CiAgIGlmIChf
X25vZGUtPl9NX254dCkKCgogICAgIF9NX2J1Y2tldHNbX01fYnVja2V0X2luZGV4KF9fbm9kZS0+
X01fbmV4dCgpKV0gPSBfX25vZGU7CiAgIF9NX2J1Y2tldHNbX19ia3RdID0gJl9NX2JlZm9yZV9i
ZWdpbjsKIH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVl
LAogICAgdHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlwZW5hbWUgX0Vx
dWFsLAogICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNoLCB0eXBl
bmFtZSBfUmVoYXNoUG9saWN5LAogICAgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHZvaWQKICAgIF9I
YXNodGFibGU8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBfRXF1YWwsCiAgICAg
ICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LCBfVHJhaXRzPjo6CiAgICBfTV9yZW1v
dmVfYnVja2V0X2JlZ2luKHNpemVfdHlwZSBfX2JrdCwgX19ub2RlX3R5cGUqIF9fbmV4dCwKICAg
ICAgc2l6ZV90eXBlIF9fbmV4dF9ia3QpCiAgICB7CiAgICAgIGlmICghX19uZXh0IHx8IF9fbmV4
dF9ia3QgIT0gX19ia3QpCiB7CgoKICAgaWYgKF9fbmV4dCkKICAgICBfTV9idWNrZXRzW19fbmV4
dF9ia3RdID0gX01fYnVja2V0c1tfX2JrdF07CgoKICAgaWYgKCZfTV9iZWZvcmVfYmVnaW4gPT0g
X01fYnVja2V0c1tfX2JrdF0pCiAgICAgX01fYmVmb3JlX2JlZ2luLl9NX254dCA9IF9fbmV4dDsK
ICAgX01fYnVja2V0c1tfX2JrdF0gPSBudWxscHRyOwogfQogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfS2V5LCB0eXBlbmFtZSBfVmFsdWUsCiAgICB0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1l
IF9FeHRyYWN0S2V5LCB0eXBlbmFtZSBfRXF1YWwsCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVuYW1l
IF9IMiwgdHlwZW5hbWUgX0hhc2gsIHR5cGVuYW1lIF9SZWhhc2hQb2xpY3ksCiAgICB0eXBlbmFt
ZSBfVHJhaXRzPgogICAgdHlwZW5hbWUgX0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywg
X0V4dHJhY3RLZXksCiAgIF9FcXVhbCwgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LAog
ICBfVHJhaXRzPjo6X19ub2RlX2Jhc2UqCiAgICBfSGFzaHRhYmxlPF9LZXksIF9WYWx1ZSwgX0Fs
bG9jLCBfRXh0cmFjdEtleSwgX0VxdWFsLAogICAgICAgIF9IMSwgX0gyLCBfSGFzaCwgX1JlaGFz
aFBvbGljeSwgX1RyYWl0cz46OgogICAgX01fZ2V0X3ByZXZpb3VzX25vZGUoc2l6ZV90eXBlIF9f
Ymt0LCBfX25vZGVfYmFzZSogX19uKQogICAgewogICAgICBfX25vZGVfYmFzZSogX19wcmV2X24g
PSBfTV9idWNrZXRzW19fYmt0XTsKICAgICAgd2hpbGUgKF9fcHJldl9uLT5fTV9ueHQgIT0gX19u
KQogX19wcmV2X24gPSBfX3ByZXZfbi0+X01fbnh0OwogICAgICByZXR1cm4gX19wcmV2X247CiAg
ICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5cGVuYW1lIF9WYWx1ZSwKICAgIHR5cGVu
YW1lIF9BbGxvYywgdHlwZW5hbWUgX0V4dHJhY3RLZXksIHR5cGVuYW1lIF9FcXVhbCwKICAgIHR5
cGVuYW1lIF9IMSwgdHlwZW5hbWUgX0gyLCB0eXBlbmFtZSBfSGFzaCwgdHlwZW5hbWUgX1JlaGFz
aFBvbGljeSwKICAgIHR5cGVuYW1lIF9UcmFpdHM+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBf
QXJncz4KICAgICAgc3RkOjpwYWlyPHR5cGVuYW1lIF9IYXNodGFibGU8X0tleSwgX1ZhbHVlLCBf
QWxsb2MsCiAgICAgICAgX0V4dHJhY3RLZXksIF9FcXVhbCwgX0gxLAogICAgICAgIF9IMiwgX0hh
c2gsIF9SZWhhc2hQb2xpY3ksCiAgICAgICAgX1RyYWl0cz46Oml0ZXJhdG9yLCBib29sPgogICAg
ICBfSGFzaHRhYmxlPF9LZXksIF9WYWx1ZSwgX0FsbG9jLCBfRXh0cmFjdEtleSwgX0VxdWFsLAog
ICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+OjoKICAgICAgX01fZW1w
bGFjZShzdGQ6OnRydWVfdHlwZSwgX0FyZ3MmJi4uLiBfX2FyZ3MpCiAgICAgIHsKCiBfX25vZGVf
dHlwZSogX19ub2RlID0gdGhpcy0+X01fYWxsb2NhdGVfbm9kZShzdGQ6OmZvcndhcmQ8X0FyZ3M+
KF9fYXJncykuLi4pOwogY29uc3Qga2V5X3R5cGUmIF9fayA9IHRoaXMtPl9NX2V4dHJhY3QoKShf
X25vZGUtPl9NX3YoKSk7CiBfX2hhc2hfY29kZSBfX2NvZGU7CiBpZiAodHJ1ZSkKICAgewogICAg
IF9fY29kZSA9IHRoaXMtPl9NX2hhc2hfY29kZShfX2spOwogICB9CiBpZiAoZmFsc2UpCiAgIHsK
ICAgICB0aGlzLT5fTV9kZWFsbG9jYXRlX25vZGUoX19ub2RlKTsKICAgICA7CiAgIH0KCiBzaXpl
X3R5cGUgX19ia3QgPSBfTV9idWNrZXRfaW5kZXgoX19rLCBfX2NvZGUpOwogaWYgKF9fbm9kZV90
eXBlKiBfX3AgPSBfTV9maW5kX25vZGUoX19ia3QsIF9faywgX19jb2RlKSkKICAgewoKICAgICB0
aGlzLT5fTV9kZWFsbG9jYXRlX25vZGUoX19ub2RlKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoaXRlcmF0b3IoX19wKSwgZmFsc2UpOwogICB9CgoKIHJldHVybiBzdGQ6Om1ha2VfcGFpcihf
TV9pbnNlcnRfdW5pcXVlX25vZGUoX19ia3QsIF9fY29kZSwgX19ub2RlKSwKICAgICAgICAgdHJ1
ZSk7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5hbWUgX1ZhbHVlLAog
ICAgdHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlwZW5hbWUgX0VxdWFs
LAogICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9IYXNoLCB0eXBlbmFt
ZSBfUmVoYXNoUG9saWN5LAogICAgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIF9BcmdzPgogICAgICB0eXBlbmFtZSBfSGFzaHRhYmxlPF9LZXksIF9WYWx1ZSwgX0Fs
bG9jLCBfRXh0cmFjdEtleSwgX0VxdWFsLAogICAgIF9IMSwgX0gyLCBfSGFzaCwgX1JlaGFzaFBv
bGljeSwKICAgICBfVHJhaXRzPjo6aXRlcmF0b3IKICAgICAgX0hhc2h0YWJsZTxfS2V5LCBfVmFs
dWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwKICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVo
YXNoUG9saWN5LCBfVHJhaXRzPjo6CiAgICAgIF9NX2VtcGxhY2UoY29uc3RfaXRlcmF0b3IgX19o
aW50LCBzdGQ6OmZhbHNlX3R5cGUsIF9BcmdzJiYuLi4gX19hcmdzKQogICAgICB7CgogX19ub2Rl
X3R5cGUqIF9fbm9kZSA9CiAgIHRoaXMtPl9NX2FsbG9jYXRlX25vZGUoc3RkOjpmb3J3YXJkPF9B
cmdzPihfX2FyZ3MpLi4uKTsKCiBfX2hhc2hfY29kZSBfX2NvZGU7CiBpZiAodHJ1ZSkKICAgewog
ICAgIF9fY29kZSA9IHRoaXMtPl9NX2hhc2hfY29kZSh0aGlzLT5fTV9leHRyYWN0KCkoX19ub2Rl
LT5fTV92KCkpKTsKICAgfQogaWYgKGZhbHNlKQogICB7CiAgICAgdGhpcy0+X01fZGVhbGxvY2F0
ZV9ub2RlKF9fbm9kZSk7CiAgICAgOwogICB9CgogcmV0dXJuIF9NX2luc2VydF9tdWx0aV9ub2Rl
KF9faGludC5fTV9jdXIsIF9fY29kZSwgX19ub2RlKTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfS2V5LCB0eXBlbmFtZSBfVmFsdWUsCiAgICB0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1l
IF9FeHRyYWN0S2V5LCB0eXBlbmFtZSBfRXF1YWwsCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVuYW1l
IF9IMiwgdHlwZW5hbWUgX0hhc2gsIHR5cGVuYW1lIF9SZWhhc2hQb2xpY3ksCiAgICB0eXBlbmFt
ZSBfVHJhaXRzPgogICAgdHlwZW5hbWUgX0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywg
X0V4dHJhY3RLZXksIF9FcXVhbCwKICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LAog
ICBfVHJhaXRzPjo6aXRlcmF0b3IKICAgIF9IYXNodGFibGU8X0tleSwgX1ZhbHVlLCBfQWxsb2Ms
IF9FeHRyYWN0S2V5LCBfRXF1YWwsCiAgICAgICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9s
aWN5LCBfVHJhaXRzPjo6CiAgICBfTV9pbnNlcnRfdW5pcXVlX25vZGUoc2l6ZV90eXBlIF9fYmt0
LCBfX2hhc2hfY29kZSBfX2NvZGUsCiAgICAgX19ub2RlX3R5cGUqIF9fbm9kZSkKICAgIHsKICAg
ICAgY29uc3QgX19yZWhhc2hfc3RhdGUmIF9fc2F2ZWRfc3RhdGUgPSBfTV9yZWhhc2hfcG9saWN5
Ll9NX3N0YXRlKCk7CiAgICAgIHN0ZDo6cGFpcjxib29sLCBzdGQ6OnNpemVfdD4gX19kb19yZWhh
c2gKID0gX01fcmVoYXNoX3BvbGljeS5fTV9uZWVkX3JlaGFzaChfTV9idWNrZXRfY291bnQsIF9N
X2VsZW1lbnRfY291bnQsIDEpOwoKICAgICAgaWYgKHRydWUpCiB7CiAgIGlmIChfX2RvX3JlaGFz
aC5maXJzdCkKICAgICB7CiAgICAgICBfTV9yZWhhc2goX19kb19yZWhhc2guc2Vjb25kLCBfX3Nh
dmVkX3N0YXRlKTsKICAgICAgIF9fYmt0ID0gX01fYnVja2V0X2luZGV4KHRoaXMtPl9NX2V4dHJh
Y3QoKShfX25vZGUtPl9NX3YoKSksIF9fY29kZSk7CiAgICAgfQoKICAgdGhpcy0+X01fc3RvcmVf
Y29kZShfX25vZGUsIF9fY29kZSk7CgoKICAgX01faW5zZXJ0X2J1Y2tldF9iZWdpbihfX2JrdCwg
X19ub2RlKTsKICAgKytfTV9lbGVtZW50X2NvdW50OwogICByZXR1cm4gaXRlcmF0b3IoX19ub2Rl
KTsKIH0KICAgICAgaWYgKGZhbHNlKQogewogICB0aGlzLT5fTV9kZWFsbG9jYXRlX25vZGUoX19u
b2RlKTsKICAgOwogfQogICAgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5cGVuYW1l
IF9WYWx1ZSwKICAgIHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUgX0V4dHJhY3RLZXksIHR5cGVu
YW1lIF9FcXVhbCwKICAgIHR5cGVuYW1lIF9IMSwgdHlwZW5hbWUgX0gyLCB0eXBlbmFtZSBfSGFz
aCwgdHlwZW5hbWUgX1JlaGFzaFBvbGljeSwKICAgIHR5cGVuYW1lIF9UcmFpdHM+CiAgICB0eXBl
bmFtZSBfSGFzaHRhYmxlPF9LZXksIF9WYWx1ZSwgX0FsbG9jLCBfRXh0cmFjdEtleSwgX0VxdWFs
LAogICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksCiAgIF9UcmFpdHM+OjppdGVyYXRv
cgogICAgX0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVh
bCwKICAgICAgICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+OjoKICAg
IF9NX2luc2VydF9tdWx0aV9ub2RlKF9fbm9kZV90eXBlKiBfX2hpbnQsIF9faGFzaF9jb2RlIF9f
Y29kZSwKICAgIF9fbm9kZV90eXBlKiBfX25vZGUpCiAgICB7CiAgICAgIGNvbnN0IF9fcmVoYXNo
X3N0YXRlJiBfX3NhdmVkX3N0YXRlID0gX01fcmVoYXNoX3BvbGljeS5fTV9zdGF0ZSgpOwogICAg
ICBzdGQ6OnBhaXI8Ym9vbCwgc3RkOjpzaXplX3Q+IF9fZG9fcmVoYXNoCiA9IF9NX3JlaGFzaF9w
b2xpY3kuX01fbmVlZF9yZWhhc2goX01fYnVja2V0X2NvdW50LCBfTV9lbGVtZW50X2NvdW50LCAx
KTsKCiAgICAgIGlmICh0cnVlKQogewogICBpZiAoX19kb19yZWhhc2guZmlyc3QpCiAgICAgX01f
cmVoYXNoKF9fZG9fcmVoYXNoLnNlY29uZCwgX19zYXZlZF9zdGF0ZSk7CgogICB0aGlzLT5fTV9z
dG9yZV9jb2RlKF9fbm9kZSwgX19jb2RlKTsKICAgY29uc3Qga2V5X3R5cGUmIF9fayA9IHRoaXMt
Pl9NX2V4dHJhY3QoKShfX25vZGUtPl9NX3YoKSk7CiAgIHNpemVfdHlwZSBfX2JrdCA9IF9NX2J1
Y2tldF9pbmRleChfX2ssIF9fY29kZSk7CgoKCiAgIF9fbm9kZV9iYXNlKiBfX3ByZXYKICAgICA9
IF9fYnVpbHRpbl9leHBlY3QoX19oaW50ICE9IG51bGxwdHIsIGZhbHNlKQogICAgICAgJiYgdGhp
cy0+X01fZXF1YWxzKF9faywgX19jb2RlLCBfX2hpbnQpCiAgPyBfX2hpbnQKICA6IF9NX2ZpbmRf
YmVmb3JlX25vZGUoX19ia3QsIF9faywgX19jb2RlKTsKICAgaWYgKF9fcHJldikKICAgICB7Cgog
ICAgICAgX19ub2RlLT5fTV9ueHQgPSBfX3ByZXYtPl9NX254dDsKICAgICAgIF9fcHJldi0+X01f
bnh0ID0gX19ub2RlOwogICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoX19wcmV2ID09IF9faGlu
dCwgZmFsc2UpKQoKCiAgICAgICAgaWYgKF9fbm9kZS0+X01fbnh0CiAgICAgICAgICAgICYmICF0
aGlzLT5fTV9lcXVhbHMoX19rLCBfX2NvZGUsIF9fbm9kZS0+X01fbmV4dCgpKSkKICAgICAgICAg
IHsKICAgICAgICAgICAgc2l6ZV90eXBlIF9fbmV4dF9ia3QgPSBfTV9idWNrZXRfaW5kZXgoX19u
b2RlLT5fTV9uZXh0KCkpOwogICAgICAgICAgICBpZiAoX19uZXh0X2JrdCAhPSBfX2JrdCkKICAg
ICAgICAgICAgICBfTV9idWNrZXRzW19fbmV4dF9ia3RdID0gX19ub2RlOwogICAgICAgICAgfQog
ICAgIH0KICAgZWxzZQoKCgoKICAgICBfTV9pbnNlcnRfYnVja2V0X2JlZ2luKF9fYmt0LCBfX25v
ZGUpOwogICArK19NX2VsZW1lbnRfY291bnQ7CiAgIHJldHVybiBpdGVyYXRvcihfX25vZGUpOwog
fQogICAgICBpZiAoZmFsc2UpCiB7CiAgIHRoaXMtPl9NX2RlYWxsb2NhdGVfbm9kZShfX25vZGUp
OwogICA7CiB9CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBfVmFs
dWUsCiAgICB0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9FeHRyYWN0S2V5LCB0eXBlbmFtZSBf
RXF1YWwsCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5hbWUgX0hhc2gsIHR5
cGVuYW1lIF9SZWhhc2hQb2xpY3ksCiAgICB0eXBlbmFtZSBfVHJhaXRzPgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgX0FyZywgdHlwZW5hbWUgX05vZGVHZW5lcmF0b3I+CiAgICAgIHN0ZDo6cGFpcjx0
eXBlbmFtZSBfSGFzaHRhYmxlPF9LZXksIF9WYWx1ZSwgX0FsbG9jLAogICAgICAgIF9FeHRyYWN0
S2V5LCBfRXF1YWwsIF9IMSwKICAgICAgICBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LAogICAg
ICAgIF9UcmFpdHM+OjppdGVyYXRvciwgYm9vbD4KICAgICAgX0hhc2h0YWJsZTxfS2V5LCBfVmFs
dWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwKICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVo
YXNoUG9saWN5LCBfVHJhaXRzPjo6CiAgICAgIF9NX2luc2VydChfQXJnJiYgX192LCBjb25zdCBf
Tm9kZUdlbmVyYXRvciYgX19ub2RlX2dlbiwgc3RkOjp0cnVlX3R5cGUpCiAgICAgIHsKIGNvbnN0
IGtleV90eXBlJiBfX2sgPSB0aGlzLT5fTV9leHRyYWN0KCkoX192KTsKIF9faGFzaF9jb2RlIF9f
Y29kZSA9IHRoaXMtPl9NX2hhc2hfY29kZShfX2spOwogc2l6ZV90eXBlIF9fYmt0ID0gX01fYnVj
a2V0X2luZGV4KF9faywgX19jb2RlKTsKCiBfX25vZGVfdHlwZSogX19uID0gX01fZmluZF9ub2Rl
KF9fYmt0LCBfX2ssIF9fY29kZSk7CiBpZiAoX19uKQogICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
aXRlcmF0b3IoX19uKSwgZmFsc2UpOwoKIF9fbiA9IF9fbm9kZV9nZW4oc3RkOjpmb3J3YXJkPF9B
cmc+KF9fdikpOwogcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKF9NX2luc2VydF91bmlxdWVfbm9kZShf
X2JrdCwgX19jb2RlLCBfX24pLCB0cnVlKTsKICAgICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0tleSwgdHlwZW5hbWUgX1ZhbHVlLAogICAgdHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZSBfRXh0
cmFjdEtleSwgdHlwZW5hbWUgX0VxdWFsLAogICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIs
IHR5cGVuYW1lIF9IYXNoLCB0eXBlbmFtZSBfUmVoYXNoUG9saWN5LAogICAgdHlwZW5hbWUgX1Ry
YWl0cz4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BcmcsIHR5cGVuYW1lIF9Ob2RlR2VuZXJhdG9y
PgogICAgICB0eXBlbmFtZSBfSGFzaHRhYmxlPF9LZXksIF9WYWx1ZSwgX0FsbG9jLCBfRXh0cmFj
dEtleSwgX0VxdWFsLAogICAgIF9IMSwgX0gyLCBfSGFzaCwgX1JlaGFzaFBvbGljeSwKICAgICBf
VHJhaXRzPjo6aXRlcmF0b3IKICAgICAgX0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywg
X0V4dHJhY3RLZXksIF9FcXVhbCwKICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LCBf
VHJhaXRzPjo6CiAgICAgIF9NX2luc2VydChjb25zdF9pdGVyYXRvciBfX2hpbnQsIF9BcmcmJiBf
X3YsCiAgY29uc3QgX05vZGVHZW5lcmF0b3ImIF9fbm9kZV9nZW4sCiAgc3RkOjpmYWxzZV90eXBl
KQogICAgICB7CgoKIF9faGFzaF9jb2RlIF9fY29kZSA9IHRoaXMtPl9NX2hhc2hfY29kZSh0aGlz
LT5fTV9leHRyYWN0KCkoX192KSk7CgoKIF9fbm9kZV90eXBlKiBfX25vZGUgPSBfX25vZGVfZ2Vu
KHN0ZDo6Zm9yd2FyZDxfQXJnPihfX3YpKTsKCiByZXR1cm4gX01faW5zZXJ0X211bHRpX25vZGUo
X19oaW50Ll9NX2N1ciwgX19jb2RlLCBfX25vZGUpOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9LZXksIHR5cGVuYW1lIF9WYWx1ZSwKICAgIHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUg
X0V4dHJhY3RLZXksIHR5cGVuYW1lIF9FcXVhbCwKICAgIHR5cGVuYW1lIF9IMSwgdHlwZW5hbWUg
X0gyLCB0eXBlbmFtZSBfSGFzaCwgdHlwZW5hbWUgX1JlaGFzaFBvbGljeSwKICAgIHR5cGVuYW1l
IF9UcmFpdHM+CiAgICB0eXBlbmFtZSBfSGFzaHRhYmxlPF9LZXksIF9WYWx1ZSwgX0FsbG9jLCBf
RXh0cmFjdEtleSwgX0VxdWFsLAogICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksCiAg
IF9UcmFpdHM+OjppdGVyYXRvcgogICAgX0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywg
X0V4dHJhY3RLZXksIF9FcXVhbCwKICAgICAgICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xp
Y3ksIF9UcmFpdHM+OjoKICAgIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIF9faXQpCiAgICB7CiAgICAg
IF9fbm9kZV90eXBlKiBfX24gPSBfX2l0Ll9NX2N1cjsKICAgICAgc3RkOjpzaXplX3QgX19ia3Qg
PSBfTV9idWNrZXRfaW5kZXgoX19uKTsKCgoKCiAgICAgIF9fbm9kZV9iYXNlKiBfX3ByZXZfbiA9
IF9NX2dldF9wcmV2aW91c19ub2RlKF9fYmt0LCBfX24pOwogICAgICByZXR1cm4gX01fZXJhc2Uo
X19ia3QsIF9fcHJldl9uLCBfX24pOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5LCB0
eXBlbmFtZSBfVmFsdWUsCiAgICB0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9FeHRyYWN0S2V5
LCB0eXBlbmFtZSBfRXF1YWwsCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5h
bWUgX0hhc2gsIHR5cGVuYW1lIF9SZWhhc2hQb2xpY3ksCiAgICB0eXBlbmFtZSBfVHJhaXRzPgog
ICAgdHlwZW5hbWUgX0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJhY3RLZXks
IF9FcXVhbCwKICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LAogICBfVHJhaXRzPjo6
aXRlcmF0b3IKICAgIF9IYXNodGFibGU8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5
LCBfRXF1YWwsCiAgICAgICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LCBfVHJhaXRz
Pjo6CiAgICBfTV9lcmFzZShzaXplX3R5cGUgX19ia3QsIF9fbm9kZV9iYXNlKiBfX3ByZXZfbiwg
X19ub2RlX3R5cGUqIF9fbikKICAgIHsKICAgICAgaWYgKF9fcHJldl9uID09IF9NX2J1Y2tldHNb
X19ia3RdKQogX01fcmVtb3ZlX2J1Y2tldF9iZWdpbihfX2JrdCwgX19uLT5fTV9uZXh0KCksCiAg
ICBfX24tPl9NX254dCA/IF9NX2J1Y2tldF9pbmRleChfX24tPl9NX25leHQoKSkgOiAwKTsKICAg
ICAgZWxzZSBpZiAoX19uLT5fTV9ueHQpCiB7CiAgIHNpemVfdHlwZSBfX25leHRfYmt0ID0gX01f
YnVja2V0X2luZGV4KF9fbi0+X01fbmV4dCgpKTsKICAgaWYgKF9fbmV4dF9ia3QgIT0gX19ia3Qp
CiAgICAgX01fYnVja2V0c1tfX25leHRfYmt0XSA9IF9fcHJldl9uOwogfQoKICAgICAgX19wcmV2
X24tPl9NX254dCA9IF9fbi0+X01fbnh0OwogICAgICBpdGVyYXRvciBfX3Jlc3VsdChfX24tPl9N
X25leHQoKSk7CiAgICAgIHRoaXMtPl9NX2RlYWxsb2NhdGVfbm9kZShfX24pOwogICAgICAtLV9N
X2VsZW1lbnRfY291bnQ7CgogICAgICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9LZXksIHR5cGVuYW1lIF9WYWx1ZSwKICAgIHR5cGVuYW1lIF9BbGxvYywgdHlw
ZW5hbWUgX0V4dHJhY3RLZXksIHR5cGVuYW1lIF9FcXVhbCwKICAgIHR5cGVuYW1lIF9IMSwgdHlw
ZW5hbWUgX0gyLCB0eXBlbmFtZSBfSGFzaCwgdHlwZW5hbWUgX1JlaGFzaFBvbGljeSwKICAgIHR5
cGVuYW1lIF9UcmFpdHM+CiAgICB0eXBlbmFtZSBfSGFzaHRhYmxlPF9LZXksIF9WYWx1ZSwgX0Fs
bG9jLCBfRXh0cmFjdEtleSwgX0VxdWFsLAogICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xp
Y3ksCiAgIF9UcmFpdHM+OjpzaXplX3R5cGUKICAgIF9IYXNodGFibGU8X0tleSwgX1ZhbHVlLCBf
QWxsb2MsIF9FeHRyYWN0S2V5LCBfRXF1YWwsCiAgICAgICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVo
YXNoUG9saWN5LCBfVHJhaXRzPjo6CiAgICBfTV9lcmFzZShzdGQ6OnRydWVfdHlwZSwgY29uc3Qg
a2V5X3R5cGUmIF9faykKICAgIHsKICAgICAgX19oYXNoX2NvZGUgX19jb2RlID0gdGhpcy0+X01f
aGFzaF9jb2RlKF9fayk7CiAgICAgIHN0ZDo6c2l6ZV90IF9fYmt0ID0gX01fYnVja2V0X2luZGV4
KF9faywgX19jb2RlKTsKCgogICAgICBfX25vZGVfYmFzZSogX19wcmV2X24gPSBfTV9maW5kX2Jl
Zm9yZV9ub2RlKF9fYmt0LCBfX2ssIF9fY29kZSk7CiAgICAgIGlmICghX19wcmV2X24pCiByZXR1
cm4gMDsKCgogICAgICBfX25vZGVfdHlwZSogX19uID0gc3RhdGljX2Nhc3Q8X19ub2RlX3R5cGUq
PihfX3ByZXZfbi0+X01fbnh0KTsKICAgICAgX01fZXJhc2UoX19ia3QsIF9fcHJldl9uLCBfX24p
OwogICAgICByZXR1cm4gMTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwgdHlwZW5h
bWUgX1ZhbHVlLAogICAgdHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZSBfRXh0cmFjdEtleSwgdHlw
ZW5hbWUgX0VxdWFsLAogICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIsIHR5cGVuYW1lIF9I
YXNoLCB0eXBlbmFtZSBfUmVoYXNoUG9saWN5LAogICAgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHR5
cGVuYW1lIF9IYXNodGFibGU8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5LCBfRXF1
YWwsCiAgIF9IMSwgX0gyLCBfSGFzaCwgX1JlaGFzaFBvbGljeSwKICAgX1RyYWl0cz46OnNpemVf
dHlwZQogICAgX0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9F
cXVhbCwKICAgICAgICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+OjoK
ICAgIF9NX2VyYXNlKHN0ZDo6ZmFsc2VfdHlwZSwgY29uc3Qga2V5X3R5cGUmIF9faykKICAgIHsK
ICAgICAgX19oYXNoX2NvZGUgX19jb2RlID0gdGhpcy0+X01faGFzaF9jb2RlKF9fayk7CiAgICAg
IHN0ZDo6c2l6ZV90IF9fYmt0ID0gX01fYnVja2V0X2luZGV4KF9faywgX19jb2RlKTsKCgogICAg
ICBfX25vZGVfYmFzZSogX19wcmV2X24gPSBfTV9maW5kX2JlZm9yZV9ub2RlKF9fYmt0LCBfX2ss
IF9fY29kZSk7CiAgICAgIGlmICghX19wcmV2X24pCiByZXR1cm4gMDsKCgoKCgoKCiAgICAgIF9f
bm9kZV90eXBlKiBfX24gPSBzdGF0aWNfY2FzdDxfX25vZGVfdHlwZSo+KF9fcHJldl9uLT5fTV9u
eHQpOwogICAgICBfX25vZGVfdHlwZSogX19uX2xhc3QgPSBfX247CiAgICAgIHN0ZDo6c2l6ZV90
IF9fbl9sYXN0X2JrdCA9IF9fYmt0OwogICAgICBkbwogewogICBfX25fbGFzdCA9IF9fbl9sYXN0
LT5fTV9uZXh0KCk7CiAgIGlmICghX19uX2xhc3QpCiAgICAgYnJlYWs7CiAgIF9fbl9sYXN0X2Jr
dCA9IF9NX2J1Y2tldF9pbmRleChfX25fbGFzdCk7CiB9CiAgICAgIHdoaWxlIChfX25fbGFzdF9i
a3QgPT0gX19ia3QgJiYgdGhpcy0+X01fZXF1YWxzKF9faywgX19jb2RlLCBfX25fbGFzdCkpOwoK
CiAgICAgIHNpemVfdHlwZSBfX3Jlc3VsdCA9IDA7CiAgICAgIGRvCiB7CiAgIF9fbm9kZV90eXBl
KiBfX3AgPSBfX24tPl9NX25leHQoKTsKICAgdGhpcy0+X01fZGVhbGxvY2F0ZV9ub2RlKF9fbik7
CiAgIF9fbiA9IF9fcDsKICAgKytfX3Jlc3VsdDsKICAgLS1fTV9lbGVtZW50X2NvdW50OwogfQog
ICAgICB3aGlsZSAoX19uICE9IF9fbl9sYXN0KTsKCiAgICAgIGlmIChfX3ByZXZfbiA9PSBfTV9i
dWNrZXRzW19fYmt0XSkKIF9NX3JlbW92ZV9idWNrZXRfYmVnaW4oX19ia3QsIF9fbl9sYXN0LCBf
X25fbGFzdF9ia3QpOwogICAgICBlbHNlIGlmIChfX25fbGFzdCAmJiBfX25fbGFzdF9ia3QgIT0g
X19ia3QpCiBfTV9idWNrZXRzW19fbl9sYXN0X2JrdF0gPSBfX3ByZXZfbjsKICAgICAgX19wcmV2
X24tPl9NX254dCA9IF9fbl9sYXN0OwogICAgICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9LZXksIHR5cGVuYW1lIF9WYWx1ZSwKICAgIHR5cGVuYW1lIF9BbGxv
YywgdHlwZW5hbWUgX0V4dHJhY3RLZXksIHR5cGVuYW1lIF9FcXVhbCwKICAgIHR5cGVuYW1lIF9I
MSwgdHlwZW5hbWUgX0gyLCB0eXBlbmFtZSBfSGFzaCwgdHlwZW5hbWUgX1JlaGFzaFBvbGljeSwK
ICAgIHR5cGVuYW1lIF9UcmFpdHM+CiAgICB0eXBlbmFtZSBfSGFzaHRhYmxlPF9LZXksIF9WYWx1
ZSwgX0FsbG9jLCBfRXh0cmFjdEtleSwgX0VxdWFsLAogICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhh
c2hQb2xpY3ksCiAgIF9UcmFpdHM+OjppdGVyYXRvcgogICAgX0hhc2h0YWJsZTxfS2V5LCBfVmFs
dWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwKICAgICAgICBfSDEsIF9IMiwgX0hhc2gs
IF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+OjoKICAgIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIF9fZmly
c3QsIGNvbnN0X2l0ZXJhdG9yIF9fbGFzdCkKICAgIHsKICAgICAgX19ub2RlX3R5cGUqIF9fbiA9
IF9fZmlyc3QuX01fY3VyOwogICAgICBfX25vZGVfdHlwZSogX19sYXN0X24gPSBfX2xhc3QuX01f
Y3VyOwogICAgICBpZiAoX19uID09IF9fbGFzdF9uKQogcmV0dXJuIGl0ZXJhdG9yKF9fbik7Cgog
ICAgICBzdGQ6OnNpemVfdCBfX2JrdCA9IF9NX2J1Y2tldF9pbmRleChfX24pOwoKICAgICAgX19u
b2RlX2Jhc2UqIF9fcHJldl9uID0gX01fZ2V0X3ByZXZpb3VzX25vZGUoX19ia3QsIF9fbik7CiAg
ICAgIGJvb2wgX19pc19idWNrZXRfYmVnaW4gPSBfX24gPT0gX01fYnVja2V0X2JlZ2luKF9fYmt0
KTsKICAgICAgc3RkOjpzaXplX3QgX19uX2JrdCA9IF9fYmt0OwogICAgICBmb3IgKDs7KQogewog
ICBkbwogICAgIHsKICAgICAgIF9fbm9kZV90eXBlKiBfX3RtcCA9IF9fbjsKICAgICAgIF9fbiA9
IF9fbi0+X01fbmV4dCgpOwogICAgICAgdGhpcy0+X01fZGVhbGxvY2F0ZV9ub2RlKF9fdG1wKTsK
ICAgICAgIC0tX01fZWxlbWVudF9jb3VudDsKICAgICAgIGlmICghX19uKQogIGJyZWFrOwogICAg
ICAgX19uX2JrdCA9IF9NX2J1Y2tldF9pbmRleChfX24pOwogICAgIH0KICAgd2hpbGUgKF9fbiAh
PSBfX2xhc3RfbiAmJiBfX25fYmt0ID09IF9fYmt0KTsKICAgaWYgKF9faXNfYnVja2V0X2JlZ2lu
KQogICAgIF9NX3JlbW92ZV9idWNrZXRfYmVnaW4oX19ia3QsIF9fbiwgX19uX2JrdCk7CiAgIGlm
IChfX24gPT0gX19sYXN0X24pCiAgICAgYnJlYWs7CiAgIF9faXNfYnVja2V0X2JlZ2luID0gdHJ1
ZTsKICAgX19ia3QgPSBfX25fYmt0OwogfQoKICAgICAgaWYgKF9fbiAmJiAoX19uX2JrdCAhPSBf
X2JrdCB8fCBfX2lzX2J1Y2tldF9iZWdpbikpCiBfTV9idWNrZXRzW19fbl9ia3RdID0gX19wcmV2
X247CiAgICAgIF9fcHJldl9uLT5fTV9ueHQgPSBfX247CiAgICAgIHJldHVybiBpdGVyYXRvcihf
X24pOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBfVmFsdWUsCiAg
ICB0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9FeHRyYWN0S2V5LCB0eXBlbmFtZSBfRXF1YWws
CiAgICB0eXBlbmFtZSBfSDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5hbWUgX0hhc2gsIHR5cGVuYW1l
IF9SZWhhc2hQb2xpY3ksCiAgICB0eXBlbmFtZSBfVHJhaXRzPgogICAgdm9pZAogICAgX0hhc2h0
YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwKICAgICAgICBf
SDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+OjoKICAgIGNsZWFyKCkgbm9l
eGNlcHQKICAgIHsKICAgICAgdGhpcy0+X01fZGVhbGxvY2F0ZV9ub2RlcyhfTV9iZWdpbigpKTsK
ICAgICAgX19idWlsdGluX21lbXNldChfTV9idWNrZXRzLCAwLCBfTV9idWNrZXRfY291bnQgKiBz
aXplb2YoX19idWNrZXRfdHlwZSkpOwogICAgICBfTV9lbGVtZW50X2NvdW50ID0gMDsKICAgICAg
X01fYmVmb3JlX2JlZ2luLl9NX254dCA9IG51bGxwdHI7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9LZXksIHR5cGVuYW1lIF9WYWx1ZSwKICAgIHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUg
X0V4dHJhY3RLZXksIHR5cGVuYW1lIF9FcXVhbCwKICAgIHR5cGVuYW1lIF9IMSwgdHlwZW5hbWUg
X0gyLCB0eXBlbmFtZSBfSGFzaCwgdHlwZW5hbWUgX1JlaGFzaFBvbGljeSwKICAgIHR5cGVuYW1l
IF9UcmFpdHM+CiAgICB2b2lkCiAgICBfSGFzaHRhYmxlPF9LZXksIF9WYWx1ZSwgX0FsbG9jLCBf
RXh0cmFjdEtleSwgX0VxdWFsLAogICAgICAgIF9IMSwgX0gyLCBfSGFzaCwgX1JlaGFzaFBvbGlj
eSwgX1RyYWl0cz46OgogICAgcmVoYXNoKHNpemVfdHlwZSBfX24pCiAgICB7CiAgICAgIGNvbnN0
IF9fcmVoYXNoX3N0YXRlJiBfX3NhdmVkX3N0YXRlID0gX01fcmVoYXNoX3BvbGljeS5fTV9zdGF0
ZSgpOwogICAgICBzdGQ6OnNpemVfdCBfX2J1Y2tldHMKID0gc3RkOjptYXgoX01fcmVoYXNoX3Bv
bGljeS5fTV9ia3RfZm9yX2VsZW1lbnRzKF9NX2VsZW1lbnRfY291bnQgKyAxKSwKICAgICBfX24p
OwogICAgICBfX2J1Y2tldHMgPSBfTV9yZWhhc2hfcG9saWN5Ll9NX25leHRfYmt0KF9fYnVja2V0
cyk7CgogICAgICBpZiAoX19idWNrZXRzICE9IF9NX2J1Y2tldF9jb3VudCkKIF9NX3JlaGFzaChf
X2J1Y2tldHMsIF9fc2F2ZWRfc3RhdGUpOwogICAgICBlbHNlCgogX01fcmVoYXNoX3BvbGljeS5f
TV9yZXNldChfX3NhdmVkX3N0YXRlKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleSwg
dHlwZW5hbWUgX1ZhbHVlLAogICAgdHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZSBfRXh0cmFjdEtl
eSwgdHlwZW5hbWUgX0VxdWFsLAogICAgdHlwZW5hbWUgX0gxLCB0eXBlbmFtZSBfSDIsIHR5cGVu
YW1lIF9IYXNoLCB0eXBlbmFtZSBfUmVoYXNoUG9saWN5LAogICAgdHlwZW5hbWUgX1RyYWl0cz4K
ICAgIHZvaWQKICAgIF9IYXNodGFibGU8X0tleSwgX1ZhbHVlLCBfQWxsb2MsIF9FeHRyYWN0S2V5
LCBfRXF1YWwsCiAgICAgICAgX0gxLCBfSDIsIF9IYXNoLCBfUmVoYXNoUG9saWN5LCBfVHJhaXRz
Pjo6CiAgICBfTV9yZWhhc2goc2l6ZV90eXBlIF9fbiwgY29uc3QgX19yZWhhc2hfc3RhdGUmIF9f
c3RhdGUpCiAgICB7CiAgICAgIGlmICh0cnVlKQogewogICBfTV9yZWhhc2hfYXV4KF9fbiwgX191
bmlxdWVfa2V5cygpKTsKIH0KICAgICAgaWYgKGZhbHNlKQogewoKCiAgIF9NX3JlaGFzaF9wb2xp
Y3kuX01fcmVzZXQoX19zdGF0ZSk7CiAgIDsKIH0KICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9LZXksIHR5cGVuYW1lIF9WYWx1ZSwKICAgIHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUgX0V4
dHJhY3RLZXksIHR5cGVuYW1lIF9FcXVhbCwKICAgIHR5cGVuYW1lIF9IMSwgdHlwZW5hbWUgX0gy
LCB0eXBlbmFtZSBfSGFzaCwgdHlwZW5hbWUgX1JlaGFzaFBvbGljeSwKICAgIHR5cGVuYW1lIF9U
cmFpdHM+CiAgICB2b2lkCiAgICBfSGFzaHRhYmxlPF9LZXksIF9WYWx1ZSwgX0FsbG9jLCBfRXh0
cmFjdEtleSwgX0VxdWFsLAogICAgICAgIF9IMSwgX0gyLCBfSGFzaCwgX1JlaGFzaFBvbGljeSwg
X1RyYWl0cz46OgogICAgX01fcmVoYXNoX2F1eChzaXplX3R5cGUgX19uLCBzdGQ6OnRydWVfdHlw
ZSkKICAgIHsKICAgICAgX19idWNrZXRfdHlwZSogX19uZXdfYnVja2V0cyA9IF9NX2FsbG9jYXRl
X2J1Y2tldHMoX19uKTsKICAgICAgX19ub2RlX3R5cGUqIF9fcCA9IF9NX2JlZ2luKCk7CiAgICAg
IF9NX2JlZm9yZV9iZWdpbi5fTV9ueHQgPSBudWxscHRyOwogICAgICBzdGQ6OnNpemVfdCBfX2Ji
ZWdpbl9ia3QgPSAwOwogICAgICB3aGlsZSAoX19wKQogewogICBfX25vZGVfdHlwZSogX19uZXh0
ID0gX19wLT5fTV9uZXh0KCk7CiAgIHN0ZDo6c2l6ZV90IF9fYmt0ID0gX19oYXNoX2NvZGVfYmFz
ZTo6X01fYnVja2V0X2luZGV4KF9fcCwgX19uKTsKICAgaWYgKCFfX25ld19idWNrZXRzW19fYmt0
XSkKICAgICB7CiAgICAgICBfX3AtPl9NX254dCA9IF9NX2JlZm9yZV9iZWdpbi5fTV9ueHQ7CiAg
ICAgICBfTV9iZWZvcmVfYmVnaW4uX01fbnh0ID0gX19wOwogICAgICAgX19uZXdfYnVja2V0c1tf
X2JrdF0gPSAmX01fYmVmb3JlX2JlZ2luOwogICAgICAgaWYgKF9fcC0+X01fbnh0KQogIF9fbmV3
X2J1Y2tldHNbX19iYmVnaW5fYmt0XSA9IF9fcDsKICAgICAgIF9fYmJlZ2luX2JrdCA9IF9fYmt0
OwogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgIF9fcC0+X01fbnh0ID0gX19uZXdfYnVja2V0
c1tfX2JrdF0tPl9NX254dDsKICAgICAgIF9fbmV3X2J1Y2tldHNbX19ia3RdLT5fTV9ueHQgPSBf
X3A7CiAgICAgfQogICBfX3AgPSBfX25leHQ7CiB9CgogICAgICBfTV9kZWFsbG9jYXRlX2J1Y2tl
dHMoKTsKICAgICAgX01fYnVja2V0X2NvdW50ID0gX19uOwogICAgICBfTV9idWNrZXRzID0gX19u
ZXdfYnVja2V0czsKICAgIH0KCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5LCB0eXBlbmFtZSBf
VmFsdWUsCiAgICB0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9FeHRyYWN0S2V5LCB0eXBlbmFt
ZSBfRXF1YWwsCiAgICB0eXBlbmFtZSBfSDEsIHR5cGVuYW1lIF9IMiwgdHlwZW5hbWUgX0hhc2gs
IHR5cGVuYW1lIF9SZWhhc2hQb2xpY3ksCiAgICB0eXBlbmFtZSBfVHJhaXRzPgogICAgdm9pZAog
ICAgX0hhc2h0YWJsZTxfS2V5LCBfVmFsdWUsIF9BbGxvYywgX0V4dHJhY3RLZXksIF9FcXVhbCwK
ICAgICAgICBfSDEsIF9IMiwgX0hhc2gsIF9SZWhhc2hQb2xpY3ksIF9UcmFpdHM+OjoKICAgIF9N
X3JlaGFzaF9hdXgoc2l6ZV90eXBlIF9fbiwgc3RkOjpmYWxzZV90eXBlKQogICAgewogICAgICBf
X2J1Y2tldF90eXBlKiBfX25ld19idWNrZXRzID0gX01fYWxsb2NhdGVfYnVja2V0cyhfX24pOwoK
ICAgICAgX19ub2RlX3R5cGUqIF9fcCA9IF9NX2JlZ2luKCk7CiAgICAgIF9NX2JlZm9yZV9iZWdp
bi5fTV9ueHQgPSBudWxscHRyOwogICAgICBzdGQ6OnNpemVfdCBfX2JiZWdpbl9ia3QgPSAwOwog
ICAgICBzdGQ6OnNpemVfdCBfX3ByZXZfYmt0ID0gMDsKICAgICAgX19ub2RlX3R5cGUqIF9fcHJl
dl9wID0gbnVsbHB0cjsKICAgICAgYm9vbCBfX2NoZWNrX2J1Y2tldCA9IGZhbHNlOwoKICAgICAg
d2hpbGUgKF9fcCkKIHsKICAgX19ub2RlX3R5cGUqIF9fbmV4dCA9IF9fcC0+X01fbmV4dCgpOwog
ICBzdGQ6OnNpemVfdCBfX2JrdCA9IF9faGFzaF9jb2RlX2Jhc2U6Ol9NX2J1Y2tldF9pbmRleChf
X3AsIF9fbik7CgogICBpZiAoX19wcmV2X3AgJiYgX19wcmV2X2JrdCA9PSBfX2JrdCkKICAgICB7
CgoKCiAgICAgICBfX3AtPl9NX254dCA9IF9fcHJldl9wLT5fTV9ueHQ7CiAgICAgICBfX3ByZXZf
cC0+X01fbnh0ID0gX19wOwoKCgoKCgogICAgICAgX19jaGVja19idWNrZXQgPSB0cnVlOwogICAg
IH0KICAgZWxzZQogICAgIHsKICAgICAgIGlmIChfX2NoZWNrX2J1Y2tldCkKICB7CgoKICAgIGlm
IChfX3ByZXZfcC0+X01fbnh0KQogICAgICB7CiAgICAgICAgc3RkOjpzaXplX3QgX19uZXh0X2Jr
dAogICA9IF9faGFzaF9jb2RlX2Jhc2U6Ol9NX2J1Y2tldF9pbmRleChfX3ByZXZfcC0+X01fbmV4
dCgpLAogICAgICAgICAgIF9fbik7CiAgICAgICAgaWYgKF9fbmV4dF9ia3QgIT0gX19wcmV2X2Jr
dCkKICAgX19uZXdfYnVja2V0c1tfX25leHRfYmt0XSA9IF9fcHJldl9wOwogICAgICB9CiAgICBf
X2NoZWNrX2J1Y2tldCA9IGZhbHNlOwogIH0KCiAgICAgICBpZiAoIV9fbmV3X2J1Y2tldHNbX19i
a3RdKQogIHsKICAgIF9fcC0+X01fbnh0ID0gX01fYmVmb3JlX2JlZ2luLl9NX254dDsKICAgIF9N
X2JlZm9yZV9iZWdpbi5fTV9ueHQgPSBfX3A7CiAgICBfX25ld19idWNrZXRzW19fYmt0XSA9ICZf
TV9iZWZvcmVfYmVnaW47CiAgICBpZiAoX19wLT5fTV9ueHQpCiAgICAgIF9fbmV3X2J1Y2tldHNb
X19iYmVnaW5fYmt0XSA9IF9fcDsKICAgIF9fYmJlZ2luX2JrdCA9IF9fYmt0OwogIH0KICAgICAg
IGVsc2UKICB7CiAgICBfX3AtPl9NX254dCA9IF9fbmV3X2J1Y2tldHNbX19ia3RdLT5fTV9ueHQ7
CiAgICBfX25ld19idWNrZXRzW19fYmt0XS0+X01fbnh0ID0gX19wOwogIH0KICAgICB9CiAgIF9f
cHJldl9wID0gX19wOwogICBfX3ByZXZfYmt0ID0gX19ia3Q7CiAgIF9fcCA9IF9fbmV4dDsKIH0K
CiAgICAgIGlmIChfX2NoZWNrX2J1Y2tldCAmJiBfX3ByZXZfcC0+X01fbnh0KQogewogICBzdGQ6
OnNpemVfdCBfX25leHRfYmt0CiAgICAgPSBfX2hhc2hfY29kZV9iYXNlOjpfTV9idWNrZXRfaW5k
ZXgoX19wcmV2X3AtPl9NX25leHQoKSwgX19uKTsKICAgaWYgKF9fbmV4dF9ia3QgIT0gX19wcmV2
X2JrdCkKICAgICBfX25ld19idWNrZXRzW19fbmV4dF9ia3RdID0gX19wcmV2X3A7CiB9CgogICAg
ICBfTV9kZWFsbG9jYXRlX2J1Y2tldHMoKTsKICAgICAgX01fYnVja2V0X2NvdW50ID0gX19uOwog
ICAgICBfTV9idWNrZXRzID0gX19uZXdfYnVja2V0czsKICAgIH0KCgp9CiMgNDggIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvdW5vcmRlcmVk
X21hcCIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9iaXRzL3Vub3JkZXJlZF9tYXAuaCIgMSAzCiMgMzEgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1i
Mi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy91bm9yZGVy
ZWRfbWFwLmgiIDMKI2RlZmluZSBfVU5PUkRFUkVEX01BUF9IIAoKbmFtZXNwYWNlIHN0ZCBfX2F0
dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCiAgdGVtcGxhdGU8
Ym9vbCBfQ2FjaGU+CiAgICB1c2luZyBfX3VtYXBfdHJhaXRzID0gX19kZXRhaWw6Ol9IYXNodGFi
bGVfdHJhaXRzPF9DYWNoZSwgZmFsc2UsIHRydWU+OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfS2V5
LAogICAgdHlwZW5hbWUgX1RwLAogICAgdHlwZW5hbWUgX0hhc2ggPSBoYXNoPF9LZXk+LAogICAg
dHlwZW5hbWUgX1ByZWQgPSBzdGQ6OmVxdWFsX3RvPF9LZXk+LAogICAgdHlwZW5hbWUgX0FsbG9j
ID0gc3RkOjphbGxvY2F0b3I8c3RkOjpwYWlyPGNvbnN0IF9LZXksIF9UcD4gPiwKICAgIHR5cGVu
YW1lIF9UciA9IF9fdW1hcF90cmFpdHM8X19jYWNoZV9kZWZhdWx0PF9LZXksIF9IYXNoPjo6dmFs
dWU+PgogICAgdXNpbmcgX191bWFwX2hhc2h0YWJsZSA9IF9IYXNodGFibGU8X0tleSwgc3RkOjpw
YWlyPGNvbnN0IF9LZXksIF9UcD4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfQWxsb2MsIF9fZGV0YWlsOjpfU2VsZWN0MXN0LAogICAgICAgICAgICBfUHJlZCwgX0hh
c2gsCiAgICAgICAgICAgIF9fZGV0YWlsOjpfTW9kX3JhbmdlX2hhc2hpbmcsCiAgICAgICAgICAg
IF9fZGV0YWlsOjpfRGVmYXVsdF9yYW5nZWRfaGFzaCwKICAgICAgICAgICAgX19kZXRhaWw6Ol9Q
cmltZV9yZWhhc2hfcG9saWN5LCBfVHI+OwoKCiAgdGVtcGxhdGU8Ym9vbCBfQ2FjaGU+CiAgICB1
c2luZyBfX3VtbWFwX3RyYWl0cyA9IF9fZGV0YWlsOjpfSGFzaHRhYmxlX3RyYWl0czxfQ2FjaGUs
IGZhbHNlLCBmYWxzZT47CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXksCiAgICB0eXBlbmFtZSBf
VHAsCiAgICB0eXBlbmFtZSBfSGFzaCA9IGhhc2g8X0tleT4sCiAgICB0eXBlbmFtZSBfUHJlZCA9
IHN0ZDo6ZXF1YWxfdG88X0tleT4sCiAgICB0eXBlbmFtZSBfQWxsb2MgPSBzdGQ6OmFsbG9jYXRv
cjxzdGQ6OnBhaXI8Y29uc3QgX0tleSwgX1RwPiA+LAogICAgdHlwZW5hbWUgX1RyID0gX191bW1h
cF90cmFpdHM8X19jYWNoZV9kZWZhdWx0PF9LZXksIF9IYXNoPjo6dmFsdWU+PgogICAgdXNpbmcg
X191bW1hcF9oYXNodGFibGUgPSBfSGFzaHRhYmxlPF9LZXksIHN0ZDo6cGFpcjxjb25zdCBfS2V5
LCBfVHA+LAogICAgICBfQWxsb2MsIF9fZGV0YWlsOjpfU2VsZWN0MXN0LAogICAgICBfUHJlZCwg
X0hhc2gsCiAgICAgIF9fZGV0YWlsOjpfTW9kX3JhbmdlX2hhc2hpbmcsCiAgICAgIF9fZGV0YWls
OjpfRGVmYXVsdF9yYW5nZWRfaGFzaCwKICAgICAgX19kZXRhaWw6Ol9QcmltZV9yZWhhc2hfcG9s
aWN5LCBfVHI+OwojIDk0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOS4zL2JpdHMvdW5vcmRlcmVkX21hcC5oIiAzCiAgdGVtcGxhdGU8Y2xhc3Mg
X0tleSwgY2xhc3MgX1RwLAogICAgY2xhc3MgX0hhc2ggPSBoYXNoPF9LZXk+LAogICAgY2xhc3Mg
X1ByZWQgPSBzdGQ6OmVxdWFsX3RvPF9LZXk+LAogICAgY2xhc3MgX0FsbG9jID0gc3RkOjphbGxv
Y2F0b3I8c3RkOjpwYWlyPGNvbnN0IF9LZXksIF9UcD4gPiA+CiAgICBjbGFzcyB1bm9yZGVyZWRf
bWFwCiAgICB7CiAgICAgIHR5cGVkZWYgX191bWFwX2hhc2h0YWJsZTxfS2V5LCBfVHAsIF9IYXNo
LCBfUHJlZCwgX0FsbG9jPiBfSGFzaHRhYmxlOwogICAgICBfSGFzaHRhYmxlIF9NX2g7CgogICAg
cHVibGljOgoKCgogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9IYXNodGFibGU6OmtleV90eXBlIGtl
eV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9IYXNodGFibGU6OnZhbHVlX3R5cGUgdmFs
dWVfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSGFzaHRhYmxlOjptYXBwZWRfdHlwZSBt
YXBwZWRfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSGFzaHRhYmxlOjpoYXNoZXIgaGFz
aGVyOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9IYXNodGFibGU6OmtleV9lcXVhbCBrZXlfZXF1
YWw7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0hhc2h0YWJsZTo6YWxsb2NhdG9yX3R5cGUgYWxs
b2NhdG9yX3R5cGU7CgoKCgogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9IYXNodGFibGU6OnBvaW50
ZXIgcG9pbnRlcjsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSGFzaHRhYmxlOjpjb25zdF9wb2lu
dGVyIGNvbnN0X3BvaW50ZXI7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0hhc2h0YWJsZTo6cmVm
ZXJlbmNlIHJlZmVyZW5jZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSGFzaHRhYmxlOjpjb25z
dF9yZWZlcmVuY2UgY29uc3RfcmVmZXJlbmNlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9IYXNo
dGFibGU6Oml0ZXJhdG9yIGl0ZXJhdG9yOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9IYXNodGFi
bGU6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgICB0eXBlZGVmIHR5cGVuYW1l
IF9IYXNodGFibGU6OmxvY2FsX2l0ZXJhdG9yIGxvY2FsX2l0ZXJhdG9yOwogICAgICB0eXBlZGVm
IHR5cGVuYW1lIF9IYXNodGFibGU6OmNvbnN0X2xvY2FsX2l0ZXJhdG9yIGNvbnN0X2xvY2FsX2l0
ZXJhdG9yOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9IYXNodGFibGU6OnNpemVfdHlwZSBzaXpl
X3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0hhc2h0YWJsZTo6ZGlmZmVyZW5jZV90eXBl
IGRpZmZlcmVuY2VfdHlwZTsKIyAxMzggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy91bm9yZGVyZWRfbWFwLmgiIDMKICAgICAgZXhw
bGljaXQKICAgICAgdW5vcmRlcmVkX21hcChzaXplX3R5cGUgX19uID0gMTAsCiAgICAgIGNvbnN0
IGhhc2hlciYgX19oZiA9IGhhc2hlcigpLAogICAgICBjb25zdCBrZXlfZXF1YWwmIF9fZXFsID0g
a2V5X2VxdWFsKCksCiAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBhbGxvY2F0b3Jf
dHlwZSgpKQogICAgICA6IF9NX2goX19uLCBfX2hmLCBfX2VxbCwgX19hKQogICAgICB7IH0KIyAx
NTkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvYml0cy91bm9yZGVyZWRfbWFwLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0
SXRlcmF0b3I+CiB1bm9yZGVyZWRfbWFwKF9JbnB1dEl0ZXJhdG9yIF9fZiwgX0lucHV0SXRlcmF0
b3IgX19sLAogICAgICAgIHNpemVfdHlwZSBfX24gPSAwLAogICAgICAgIGNvbnN0IGhhc2hlciYg
X19oZiA9IGhhc2hlcigpLAogICAgICAgIGNvbnN0IGtleV9lcXVhbCYgX19lcWwgPSBrZXlfZXF1
YWwoKSwKICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUo
KSkKIDogX01faChfX2YsIF9fbCwgX19uLCBfX2hmLCBfX2VxbCwgX19hKQogeyB9CgoKICAgICAg
dW5vcmRlcmVkX21hcChjb25zdCB1bm9yZGVyZWRfbWFwJikgPSBkZWZhdWx0OwoKCiAgICAgIHVu
b3JkZXJlZF9tYXAodW5vcmRlcmVkX21hcCYmKSA9IGRlZmF1bHQ7CgoKCgoKICAgICAgZXhwbGlj
aXQKICAgICAgdW5vcmRlcmVkX21hcChjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hKQogOiBfTV9o
KF9fYSkKICAgICAgeyB9CgoKCgoKCiAgICAgIHVub3JkZXJlZF9tYXAoY29uc3QgdW5vcmRlcmVk
X21hcCYgX191bWFwLAogICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hKQogOiBfTV9oKF9f
dW1hcC5fTV9oLCBfX2EpCiAgICAgIHsgfQoKCgoKCgogICAgICB1bm9yZGVyZWRfbWFwKHVub3Jk
ZXJlZF9tYXAmJiBfX3VtYXAsCiAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EpCiA6IF9N
X2goc3RkOjptb3ZlKF9fdW1hcC5fTV9oKSwgX19hKQogICAgICB7IH0KIyAyMTQgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy91bm9y
ZGVyZWRfbWFwLmgiIDMKICAgICAgdW5vcmRlcmVkX21hcChpbml0aWFsaXplcl9saXN0PHZhbHVl
X3R5cGU+IF9fbCwKICAgICAgc2l6ZV90eXBlIF9fbiA9IDAsCiAgICAgIGNvbnN0IGhhc2hlciYg
X19oZiA9IGhhc2hlcigpLAogICAgICBjb25zdCBrZXlfZXF1YWwmIF9fZXFsID0ga2V5X2VxdWFs
KCksCiAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKQog
OiBfTV9oKF9fbCwgX19uLCBfX2hmLCBfX2VxbCwgX19hKQogICAgICB7IH0KCgogICAgICB1bm9y
ZGVyZWRfbWFwJgogICAgICBvcGVyYXRvcj0oY29uc3QgdW5vcmRlcmVkX21hcCYpID0gZGVmYXVs
dDsKCgogICAgICB1bm9yZGVyZWRfbWFwJgogICAgICBvcGVyYXRvcj0odW5vcmRlcmVkX21hcCYm
KSA9IGRlZmF1bHQ7CiMgMjQxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvdW5vcmRlcmVkX21hcC5oIiAzCiAgICAgIHVub3JkZXJl
ZF9tYXAmCiAgICAgIG9wZXJhdG9yPShpbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IF9fbCkK
ICAgICAgewogX01faCA9IF9fbDsKIHJldHVybiAqdGhpczsKICAgICAgfQoKCgogICAgICBhbGxv
Y2F0b3JfdHlwZQogICAgICBnZXRfYWxsb2NhdG9yKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gX01faC5nZXRfYWxsb2NhdG9yKCk7IH0KCgoKCiAgICAgIGJvb2wKICAgICAgZW1wdHko
KSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9oLmVtcHR5KCk7IH0KCgogICAgICBz
aXplX3R5cGUKICAgICAgc2l6ZSgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX2gu
c2l6ZSgpOyB9CgoKICAgICAgc2l6ZV90eXBlCiAgICAgIG1heF9zaXplKCkgY29uc3Qgbm9leGNl
cHQKICAgICAgeyByZXR1cm4gX01faC5tYXhfc2l6ZSgpOyB9CgoKCgoKCgogICAgICBpdGVyYXRv
cgogICAgICBiZWdpbigpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX2guYmVnaW4oKTsgfQoK
CgoKCgogICAgICBjb25zdF9pdGVyYXRvcgogICAgICBiZWdpbigpIGNvbnN0IG5vZXhjZXB0CiAg
ICAgIHsgcmV0dXJuIF9NX2guYmVnaW4oKTsgfQoKICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAg
Y2JlZ2luKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01faC5iZWdpbigpOyB9CgoK
CgoKCiAgICAgIGl0ZXJhdG9yCiAgICAgIGVuZCgpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9N
X2guZW5kKCk7IH0KCgoKCgoKICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAgZW5kKCkgY29uc3Qg
bm9leGNlcHQKICAgICAgeyByZXR1cm4gX01faC5lbmQoKTsgfQoKICAgICAgY29uc3RfaXRlcmF0
b3IKICAgICAgY2VuZCgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX2guZW5kKCk7
IH0KIyAzMzggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvYml0cy91bm9yZGVyZWRfbWFwLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gX0FyZ3M+CiBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+CiBlbXBsYWNlKF9BcmdzJiYuLi4g
X19hcmdzKQogeyByZXR1cm4gX01faC5lbXBsYWNlKHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdz
KS4uLik7IH0KIyAzNjggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC45LjMvYml0cy91bm9yZGVyZWRfbWFwLmgiIDMKICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gX0FyZ3M+CiBpdGVyYXRvcgogZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yIF9f
cG9zLCBfQXJncyYmLi4uIF9fYXJncykKIHsgcmV0dXJuIF9NX2guZW1wbGFjZV9oaW50KF9fcG9z
LCBzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOyB9CiMgMzkxICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvdW5vcmRlcmVk
X21hcC5oIiAzCiAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4KICAgICAgaW5zZXJ0KGNv
bnN0IHZhbHVlX3R5cGUmIF9feCkKICAgICAgeyByZXR1cm4gX01faC5pbnNlcnQoX194KTsgfQoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1BhaXIsIHR5cGVuYW1lID0gdHlwZW5hbWUKICAgICAg
ICBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnN0cnVjdGlibGU8dmFsdWVfdHlwZSwKICAgICAg
ICAgIF9QYWlyJiY+Ojp2YWx1ZT46OnR5cGU+CiBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+CiBp
bnNlcnQoX1BhaXImJiBfX3gpCiAgICAgICAgeyByZXR1cm4gX01faC5pbnNlcnQoc3RkOjpmb3J3
YXJkPF9QYWlyPihfX3gpKTsgfQojIDQyNSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3Vub3JkZXJlZF9tYXAuaCIgMwogICAgICBp
dGVyYXRvcgogICAgICBpbnNlcnQoY29uc3RfaXRlcmF0b3IgX19oaW50LCBjb25zdCB2YWx1ZV90
eXBlJiBfX3gpCiAgICAgIHsgcmV0dXJuIF9NX2guaW5zZXJ0KF9faGludCwgX194KTsgfQoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX1BhaXIsIHR5cGVuYW1lID0gdHlwZW5hbWUKICAgICAgICBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnN0cnVjdGlibGU8dmFsdWVfdHlwZSwKICAgICAgICAg
IF9QYWlyJiY+Ojp2YWx1ZT46OnR5cGU+CiBpdGVyYXRvcgogaW5zZXJ0KGNvbnN0X2l0ZXJhdG9y
IF9faGludCwgX1BhaXImJiBfX3gpCiB7IHJldHVybiBfTV9oLmluc2VydChfX2hpbnQsIHN0ZDo6
Zm9yd2FyZDxfUGFpcj4oX194KSk7IH0KIyA0NDYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy91bm9yZGVyZWRfbWFwLmgiIDMKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiB2b2lkCiBpbnNlcnQoX0lucHV0
SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0KQogeyBfTV9oLmluc2VydChf
X2ZpcnN0LCBfX2xhc3QpOyB9CiMgNDU4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvdW5vcmRlcmVkX21hcC5oIiAzCiAgICAgIHZv
aWQKICAgICAgaW5zZXJ0KGluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gX19sKQogICAgICB7
IF9NX2guaW5zZXJ0KF9fbCk7IH0KIyA0NzYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy91bm9yZGVyZWRfbWFwLmgiIDMKICAgICAg
aXRlcmF0b3IKICAgICAgZXJhc2UoY29uc3RfaXRlcmF0b3IgX19wb3NpdGlvbikKICAgICAgeyBy
ZXR1cm4gX01faC5lcmFzZShfX3Bvc2l0aW9uKTsgfQoKCiAgICAgIGl0ZXJhdG9yCiAgICAgIGVy
YXNlKGl0ZXJhdG9yIF9faXQpCiAgICAgIHsgcmV0dXJuIF9NX2guZXJhc2UoX19pdCk7IH0KIyA0
OTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45
LjMvYml0cy91bm9yZGVyZWRfbWFwLmgiIDMKICAgICAgc2l6ZV90eXBlCiAgICAgIGVyYXNlKGNv
bnN0IGtleV90eXBlJiBfX3gpCiAgICAgIHsgcmV0dXJuIF9NX2guZXJhc2UoX194KTsgfQojIDUx
NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljku
My9iaXRzL3Vub3JkZXJlZF9tYXAuaCIgMwogICAgICBpdGVyYXRvcgogICAgICBlcmFzZShjb25z
dF9pdGVyYXRvciBfX2ZpcnN0LCBjb25zdF9pdGVyYXRvciBfX2xhc3QpCiAgICAgIHsgcmV0dXJu
IF9NX2guZXJhc2UoX19maXJzdCwgX19sYXN0KTsgfQoKCgoKCgoKICAgICAgdm9pZAogICAgICBj
bGVhcigpIG5vZXhjZXB0CiAgICAgIHsgX01faC5jbGVhcigpOyB9CiMgNTM5ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVt
YjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvdW5vcmRl
cmVkX21hcC5oIiAzCiAgICAgIHZvaWQKICAgICAgc3dhcCh1bm9yZGVyZWRfbWFwJiBfX3gpCiAg
ICAgIG5vZXhjZXB0KCBub2V4Y2VwdChfTV9oLnN3YXAoX194Ll9NX2gpKSApCiAgICAgIHsgX01f
aC5zd2FwKF9feC5fTV9oKTsgfQoKCgoKCiAgICAgIGhhc2hlcgogICAgICBoYXNoX2Z1bmN0aW9u
KCkgY29uc3QKICAgICAgeyByZXR1cm4gX01faC5oYXNoX2Z1bmN0aW9uKCk7IH0KCgoKICAgICAg
a2V5X2VxdWFsCiAgICAgIGtleV9lcSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2gua2V5X2Vx
KCk7IH0KIyA1NzIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvYml0cy91bm9yZGVyZWRfbWFwLmgiIDMKICAgICAgaXRlcmF0b3IKICAgICAg
ZmluZChjb25zdCBrZXlfdHlwZSYgX194KQogICAgICB7IHJldHVybiBfTV9oLmZpbmQoX194KTsg
fQoKICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAgZmluZChjb25zdCBrZXlfdHlwZSYgX194KSBj
b25zdAogICAgICB7IHJldHVybiBfTV9oLmZpbmQoX194KTsgfQojIDU5MCAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIy
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3Vub3JkZXJl
ZF9tYXAuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgY291bnQoY29uc3Qga2V5X3R5cGUmIF9f
eCkgY29uc3QKICAgICAgeyByZXR1cm4gX01faC5jb3VudChfX3gpOyB9CiMgNjAzICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10
aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvdW5v
cmRlcmVkX21hcC5oIiAzCiAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgaXRlcmF0b3I+CiAgICAg
IGVxdWFsX3JhbmdlKGNvbnN0IGtleV90eXBlJiBfX3gpCiAgICAgIHsgcmV0dXJuIF9NX2guZXF1
YWxfcmFuZ2UoX194KTsgfQoKICAgICAgc3RkOjpwYWlyPGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9p
dGVyYXRvcj4KICAgICAgZXF1YWxfcmFuZ2UoY29uc3Qga2V5X3R5cGUmIF9feCkgY29uc3QKICAg
ICAgeyByZXR1cm4gX01faC5lcXVhbF9yYW5nZShfX3gpOyB9CiMgNjI1ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvdW5vcmRlcmVk
X21hcC5oIiAzCiAgICAgIG1hcHBlZF90eXBlJgogICAgICBvcGVyYXRvcltdKGNvbnN0IGtleV90
eXBlJiBfX2spCiAgICAgIHsgcmV0dXJuIF9NX2hbX19rXTsgfQoKICAgICAgbWFwcGVkX3R5cGUm
CiAgICAgIG9wZXJhdG9yW10oa2V5X3R5cGUmJiBfX2spCiAgICAgIHsgcmV0dXJuIF9NX2hbc3Rk
Ojptb3ZlKF9fayldOyB9CiMgNjQyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvdW5vcmRlcmVkX21hcC5oIiAzCiAgICAgIG1hcHBl
ZF90eXBlJgogICAgICBhdChjb25zdCBrZXlfdHlwZSYgX19rKQogICAgICB7IHJldHVybiBfTV9o
LmF0KF9fayk7IH0KCiAgICAgIGNvbnN0IG1hcHBlZF90eXBlJgogICAgICBhdChjb25zdCBrZXlf
dHlwZSYgX19rKSBjb25zdAogICAgICB7IHJldHVybiBfTV9oLmF0KF9fayk7IH0KCgoKCgogICAg
ICBzaXplX3R5cGUKICAgICAgYnVja2V0X2NvdW50KCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gX01faC5idWNrZXRfY291bnQoKTsgfQoKCiAgICAgIHNpemVfdHlwZQogICAgICBtYXhf
YnVja2V0X2NvdW50KCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01faC5tYXhfYnVj
a2V0X2NvdW50KCk7IH0KCgoKCgoKICAgICAgc2l6ZV90eXBlCiAgICAgIGJ1Y2tldF9zaXplKHNp
emVfdHlwZSBfX24pIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2guYnVja2V0X3NpemUoX19uKTsg
fQoKCgoKCgogICAgICBzaXplX3R5cGUKICAgICAgYnVja2V0KGNvbnN0IGtleV90eXBlJiBfX2tl
eSkgY29uc3QKICAgICAgeyByZXR1cm4gX01faC5idWNrZXQoX19rZXkpOyB9CgoKCgoKCgogICAg
ICBsb2NhbF9pdGVyYXRvcgogICAgICBiZWdpbihzaXplX3R5cGUgX19uKQogICAgICB7IHJldHVy
biBfTV9oLmJlZ2luKF9fbik7IH0KIyA2OTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy91bm9yZGVyZWRfbWFwLmgiIDMKICAgICAg
Y29uc3RfbG9jYWxfaXRlcmF0b3IKICAgICAgYmVnaW4oc2l6ZV90eXBlIF9fbikgY29uc3QKICAg
ICAgeyByZXR1cm4gX01faC5iZWdpbihfX24pOyB9CgogICAgICBjb25zdF9sb2NhbF9pdGVyYXRv
cgogICAgICBjYmVnaW4oc2l6ZV90eXBlIF9fbikgY29uc3QKICAgICAgeyByZXR1cm4gX01faC5j
YmVnaW4oX19uKTsgfQojIDcxMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3Vub3JkZXJlZF9tYXAuaCIgMwogICAgICBsb2NhbF9p
dGVyYXRvcgogICAgICBlbmQoc2l6ZV90eXBlIF9fbikKICAgICAgeyByZXR1cm4gX01faC5lbmQo
X19uKTsgfQojIDcyNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjkuMy9iaXRzL3Vub3JkZXJlZF9tYXAuaCIgMwogICAgICBjb25zdF9sb2NhbF9p
dGVyYXRvcgogICAgICBlbmQoc2l6ZV90eXBlIF9fbikgY29uc3QKICAgICAgeyByZXR1cm4gX01f
aC5lbmQoX19uKTsgfQoKICAgICAgY29uc3RfbG9jYWxfaXRlcmF0b3IKICAgICAgY2VuZChzaXpl
X3R5cGUgX19uKSBjb25zdAogICAgICB7IHJldHVybiBfTV9oLmNlbmQoX19uKTsgfQoKCgoKCiAg
ICAgIGZsb2F0CiAgICAgIGxvYWRfZmFjdG9yKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1
cm4gX01faC5sb2FkX2ZhY3RvcigpOyB9CgoKCiAgICAgIGZsb2F0CiAgICAgIG1heF9sb2FkX2Zh
Y3RvcigpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX2gubWF4X2xvYWRfZmFjdG9y
KCk7IH0KCgoKCgogICAgICB2b2lkCiAgICAgIG1heF9sb2FkX2ZhY3RvcihmbG9hdCBfX3opCiAg
ICAgIHsgX01faC5tYXhfbG9hZF9mYWN0b3IoX196KTsgfQojIDc2MSAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3Vub3JkZXJlZF9t
YXAuaCIgMwogICAgICB2b2lkCiAgICAgIHJlaGFzaChzaXplX3R5cGUgX19uKQogICAgICB7IF9N
X2gucmVoYXNoKF9fbik7IH0KIyA3NzIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy91bm9yZGVyZWRfbWFwLmgiIDMKICAgICAgdm9p
ZAogICAgICByZXNlcnZlKHNpemVfdHlwZSBfX24pCiAgICAgIHsgX01faC5yZXNlcnZlKF9fbik7
IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9LZXkxLCB0eXBlbmFtZSBfVHAxLCB0eXBlbmFt
ZSBfSGFzaDEsIHR5cGVuYW1lIF9QcmVkMSwKICAgICAgICB0eXBlbmFtZSBfQWxsb2MxPgogICAg
ICAgIGZyaWVuZCBib29sCiAgICAgIG9wZXJhdG9yPT0oY29uc3QgdW5vcmRlcmVkX21hcDxfS2V5
MSwgX1RwMSwgX0hhc2gxLCBfUHJlZDEsIF9BbGxvYzE+JiwKICAgY29uc3QgdW5vcmRlcmVkX21h
cDxfS2V5MSwgX1RwMSwgX0hhc2gxLCBfUHJlZDEsIF9BbGxvYzE+Jik7CiAgICB9OwojIDgwNiAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy9i
aXRzL3Vub3JkZXJlZF9tYXAuaCIgMwogIHRlbXBsYXRlPGNsYXNzIF9LZXksIGNsYXNzIF9UcCwK
ICAgIGNsYXNzIF9IYXNoID0gaGFzaDxfS2V5PiwKICAgIGNsYXNzIF9QcmVkID0gc3RkOjplcXVh
bF90bzxfS2V5PiwKICAgIGNsYXNzIF9BbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPHN0ZDo6cGFpcjxj
b25zdCBfS2V5LCBfVHA+ID4gPgogICAgY2xhc3MgdW5vcmRlcmVkX211bHRpbWFwCiAgICB7CiAg
ICAgIHR5cGVkZWYgX191bW1hcF9oYXNodGFibGU8X0tleSwgX1RwLCBfSGFzaCwgX1ByZWQsIF9B
bGxvYz4gX0hhc2h0YWJsZTsKICAgICAgX0hhc2h0YWJsZSBfTV9oOwoKICAgIHB1YmxpYzoKCgoK
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSGFzaHRhYmxlOjprZXlfdHlwZSBrZXlfdHlwZTsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBfSGFzaHRhYmxlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgX0hhc2h0YWJsZTo6bWFwcGVkX3R5cGUgbWFwcGVkX3R5cGU7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0hhc2h0YWJsZTo6aGFzaGVyIGhhc2hlcjsKICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBfSGFzaHRhYmxlOjprZXlfZXF1YWwga2V5X2VxdWFsOwogICAgICB0
eXBlZGVmIHR5cGVuYW1lIF9IYXNodGFibGU6OmFsbG9jYXRvcl90eXBlIGFsbG9jYXRvcl90eXBl
OwoKCgoKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSGFzaHRhYmxlOjpwb2ludGVyIHBvaW50ZXI7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0hhc2h0YWJsZTo6Y29uc3RfcG9pbnRlciBjb25zdF9w
b2ludGVyOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9IYXNodGFibGU6OnJlZmVyZW5jZSByZWZl
cmVuY2U7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0hhc2h0YWJsZTo6Y29uc3RfcmVmZXJlbmNl
IGNvbnN0X3JlZmVyZW5jZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSGFzaHRhYmxlOjppdGVy
YXRvciBpdGVyYXRvcjsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSGFzaHRhYmxlOjpjb25zdF9p
dGVyYXRvciBjb25zdF9pdGVyYXRvcjsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSGFzaHRhYmxl
Ojpsb2NhbF9pdGVyYXRvciBsb2NhbF9pdGVyYXRvcjsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBf
SGFzaHRhYmxlOjpjb25zdF9sb2NhbF9pdGVyYXRvciBjb25zdF9sb2NhbF9pdGVyYXRvcjsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBfSGFzaHRhYmxlOjpzaXplX3R5cGUgc2l6ZV90eXBlOwogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIF9IYXNodGFibGU6OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNl
X3R5cGU7CiMgODUwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2JpdHMvdW5vcmRlcmVkX21hcC5oIiAzCiAgICAgIGV4cGxpY2l0CiAgICAg
IHVub3JkZXJlZF9tdWx0aW1hcChzaXplX3R5cGUgX19uID0gMTAsCiAgICBjb25zdCBoYXNoZXIm
IF9faGYgPSBoYXNoZXIoKSwKICAgIGNvbnN0IGtleV9lcXVhbCYgX19lcWwgPSBrZXlfZXF1YWwo
KSwKICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKQogICAg
ICA6IF9NX2goX19uLCBfX2hmLCBfX2VxbCwgX19hKQogICAgICB7IH0KIyA4NzEgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRo
dW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy91bm9y
ZGVyZWRfbWFwLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiB1
bm9yZGVyZWRfbXVsdGltYXAoX0lucHV0SXRlcmF0b3IgX19mLCBfSW5wdXRJdGVyYXRvciBfX2ws
CiAgICAgIHNpemVfdHlwZSBfX24gPSAwLAogICAgICBjb25zdCBoYXNoZXImIF9faGYgPSBoYXNo
ZXIoKSwKICAgICAgY29uc3Qga2V5X2VxdWFsJiBfX2VxbCA9IGtleV9lcXVhbCgpLAogICAgICBj
b25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUoKSkKIDogX01faChfX2Ys
IF9fbCwgX19uLCBfX2hmLCBfX2VxbCwgX19hKQogeyB9CgoKICAgICAgdW5vcmRlcmVkX211bHRp
bWFwKGNvbnN0IHVub3JkZXJlZF9tdWx0aW1hcCYpID0gZGVmYXVsdDsKCgogICAgICB1bm9yZGVy
ZWRfbXVsdGltYXAodW5vcmRlcmVkX211bHRpbWFwJiYpID0gZGVmYXVsdDsKCgoKCgogICAgICBl
eHBsaWNpdAogICAgICB1bm9yZGVyZWRfbXVsdGltYXAoY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9f
YSkKIDogX01faChfX2EpCiAgICAgIHsgfQoKCgoKCgogICAgICB1bm9yZGVyZWRfbXVsdGltYXAo
Y29uc3QgdW5vcmRlcmVkX211bHRpbWFwJiBfX3VtbWFwLAogICAgY29uc3QgYWxsb2NhdG9yX3R5
cGUmIF9fYSkKIDogX01faChfX3VtbWFwLl9NX2gsIF9fYSkKICAgICAgeyB9CgoKCgoKCiAgICAg
IHVub3JkZXJlZF9tdWx0aW1hcCh1bm9yZGVyZWRfbXVsdGltYXAmJiBfX3VtbWFwLAogICAgY29u
c3QgYWxsb2NhdG9yX3R5cGUmIF9fYSkKIDogX01faChzdGQ6Om1vdmUoX191bW1hcC5fTV9oKSwg
X19hKQogICAgICB7IH0KIyA5MjYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy91bm9yZGVyZWRfbWFwLmgiIDMKICAgICAgdW5vcmRl
cmVkX211bHRpbWFwKGluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gX19sLAogICAgc2l6ZV90
eXBlIF9fbiA9IDAsCiAgICBjb25zdCBoYXNoZXImIF9faGYgPSBoYXNoZXIoKSwKICAgIGNvbnN0
IGtleV9lcXVhbCYgX19lcWwgPSBrZXlfZXF1YWwoKSwKICAgIGNvbnN0IGFsbG9jYXRvcl90eXBl
JiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKQogOiBfTV9oKF9fbCwgX19uLCBfX2hmLCBfX2VxbCwg
X19hKQogICAgICB7IH0KCgogICAgICB1bm9yZGVyZWRfbXVsdGltYXAmCiAgICAgIG9wZXJhdG9y
PShjb25zdCB1bm9yZGVyZWRfbXVsdGltYXAmKSA9IGRlZmF1bHQ7CgoKICAgICAgdW5vcmRlcmVk
X211bHRpbWFwJgogICAgICBvcGVyYXRvcj0odW5vcmRlcmVkX211bHRpbWFwJiYpID0gZGVmYXVs
dDsKIyA5NTMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC45LjMvYml0cy91bm9yZGVyZWRfbWFwLmgiIDMKICAgICAgdW5vcmRlcmVkX211bHRpbWFw
JgogICAgICBvcGVyYXRvcj0oaW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBfX2wpCiAgICAg
IHsKIF9NX2ggPSBfX2w7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCgoKICAgICAgYWxsb2NhdG9y
X3R5cGUKICAgICAgZ2V0X2FsbG9jYXRvcigpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJu
IF9NX2guZ2V0X2FsbG9jYXRvcigpOyB9CgoKCgogICAgICBib29sCiAgICAgIGVtcHR5KCkgY29u
c3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01faC5lbXB0eSgpOyB9CgoKICAgICAgc2l6ZV90
eXBlCiAgICAgIHNpemUoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9oLnNpemUo
KTsgfQoKCiAgICAgIHNpemVfdHlwZQogICAgICBtYXhfc2l6ZSgpIGNvbnN0IG5vZXhjZXB0CiAg
ICAgIHsgcmV0dXJuIF9NX2gubWF4X3NpemUoKTsgfQoKCgoKCgoKICAgICAgaXRlcmF0b3IKICAg
ICAgYmVnaW4oKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9oLmJlZ2luKCk7IH0KCgoKCgoK
ICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAgYmVnaW4oKSBjb25zdCBub2V4Y2VwdAogICAgICB7
IHJldHVybiBfTV9oLmJlZ2luKCk7IH0KCiAgICAgIGNvbnN0X2l0ZXJhdG9yCiAgICAgIGNiZWdp
bigpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX2guYmVnaW4oKTsgfQoKCgoKCgog
ICAgICBpdGVyYXRvcgogICAgICBlbmQoKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9oLmVu
ZCgpOyB9CgoKCgoKCiAgICAgIGNvbnN0X2l0ZXJhdG9yCiAgICAgIGVuZCgpIGNvbnN0IG5vZXhj
ZXB0CiAgICAgIHsgcmV0dXJuIF9NX2guZW5kKCk7IH0KCiAgICAgIGNvbnN0X2l0ZXJhdG9yCiAg
ICAgIGNlbmQoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9oLmVuZCgpOyB9CiMg
MTA0NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9iaXRzL3Vub3JkZXJlZF9tYXAuaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBf
QXJncz4KIGl0ZXJhdG9yCiBlbXBsYWNlKF9BcmdzJiYuLi4gX19hcmdzKQogeyByZXR1cm4gX01f
aC5lbXBsYWNlKHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7IH0KIyAxMDcyICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMv
dW5vcmRlcmVkX21hcC5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9BcmdzPgogaXRl
cmF0b3IKIGVtcGxhY2VfaGludChjb25zdF9pdGVyYXRvciBfX3BvcywgX0FyZ3MmJi4uLiBfX2Fy
Z3MpCiB7IHJldHVybiBfTV9oLmVtcGxhY2VfaGludChfX3Bvcywgc3RkOjpmb3J3YXJkPF9Bcmdz
PihfX2FyZ3MpLi4uKTsgfQojIDEwODcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy91bm9yZGVyZWRfbWFwLmgiIDMKICAgICAgaXRl
cmF0b3IKICAgICAgaW5zZXJ0KGNvbnN0IHZhbHVlX3R5cGUmIF9feCkKICAgICAgeyByZXR1cm4g
X01faC5pbnNlcnQoX194KTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1BhaXIsIHR5cGVu
YW1lID0gdHlwZW5hbWUKICAgICAgICBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnN0cnVjdGli
bGU8dmFsdWVfdHlwZSwKICAgICAgICAgIF9QYWlyJiY+Ojp2YWx1ZT46OnR5cGU+CiBpdGVyYXRv
cgogaW5zZXJ0KF9QYWlyJiYgX194KQogICAgICAgIHsgcmV0dXJuIF9NX2guaW5zZXJ0KHN0ZDo6
Zm9yd2FyZDxfUGFpcj4oX194KSk7IH0KIyAxMTE5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvdW5vcmRlcmVkX21hcC5oIiAzCiAg
ICAgIGl0ZXJhdG9yCiAgICAgIGluc2VydChjb25zdF9pdGVyYXRvciBfX2hpbnQsIGNvbnN0IHZh
bHVlX3R5cGUmIF9feCkKICAgICAgeyByZXR1cm4gX01faC5pbnNlcnQoX19oaW50LCBfX3gpOyB9
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUGFpciwgdHlwZW5hbWUgPSB0eXBlbmFtZQogICAg
ICAgIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY29uc3RydWN0aWJsZTx2YWx1ZV90eXBlLAogICAg
ICAgICAgX1BhaXImJj46OnZhbHVlPjo6dHlwZT4KIGl0ZXJhdG9yCiBpbnNlcnQoY29uc3RfaXRl
cmF0b3IgX19oaW50LCBfUGFpciYmIF9feCkKICAgICAgICB7IHJldHVybiBfTV9oLmluc2VydChf
X2hpbnQsIHN0ZDo6Zm9yd2FyZDxfUGFpcj4oX194KSk7IH0KIyAxMTQwICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvdW5vcmRlcmVk
X21hcC5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yPgogdm9pZAog
aW5zZXJ0KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkKIHsg
X01faC5pbnNlcnQoX19maXJzdCwgX19sYXN0KTsgfQojIDExNTMgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy91bm9yZGVyZWRfbWFw
LmgiIDMKICAgICAgdm9pZAogICAgICBpbnNlcnQoaW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBl
PiBfX2wpCiAgICAgIHsgX01faC5pbnNlcnQoX19sKTsgfQojIDExNzEgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy91bm9yZGVyZWRf
bWFwLmgiIDMKICAgICAgaXRlcmF0b3IKICAgICAgZXJhc2UoY29uc3RfaXRlcmF0b3IgX19wb3Np
dGlvbikKICAgICAgeyByZXR1cm4gX01faC5lcmFzZShfX3Bvc2l0aW9uKTsgfQoKCiAgICAgIGl0
ZXJhdG9yCiAgICAgIGVyYXNlKGl0ZXJhdG9yIF9faXQpCiAgICAgIHsgcmV0dXJuIF9NX2guZXJh
c2UoX19pdCk7IH0KIyAxMTkyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvdW5vcmRlcmVkX21hcC5oIiAzCiAgICAgIHNpemVfdHlw
ZQogICAgICBlcmFzZShjb25zdCBrZXlfdHlwZSYgX194KQogICAgICB7IHJldHVybiBfTV9oLmVy
YXNlKF9feCk7IH0KIyAxMjExICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvdW5vcmRlcmVkX21hcC5oIiAzCiAgICAgIGl0ZXJhdG9y
CiAgICAgIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIF9fZmlyc3QsIGNvbnN0X2l0ZXJhdG9yIF9fbGFz
dCkKICAgICAgeyByZXR1cm4gX01faC5lcmFzZShfX2ZpcnN0LCBfX2xhc3QpOyB9CgoKCgoKCgog
ICAgICB2b2lkCiAgICAgIGNsZWFyKCkgbm9leGNlcHQKICAgICAgeyBfTV9oLmNsZWFyKCk7IH0K
IyAxMjM1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOS4zL2JpdHMvdW5vcmRlcmVkX21hcC5oIiAzCiAgICAgIHZvaWQKICAgICAgc3dhcCh1bm9y
ZGVyZWRfbXVsdGltYXAmIF9feCkKICAgICAgbm9leGNlcHQoIG5vZXhjZXB0KF9NX2guc3dhcChf
X3guX01faCkpICkKICAgICAgeyBfTV9oLnN3YXAoX194Ll9NX2gpOyB9CgoKCgoKICAgICAgaGFz
aGVyCiAgICAgIGhhc2hfZnVuY3Rpb24oKSBjb25zdAogICAgICB7IHJldHVybiBfTV9oLmhhc2hf
ZnVuY3Rpb24oKTsgfQoKCgogICAgICBrZXlfZXF1YWwKICAgICAga2V5X2VxKCkgY29uc3QKICAg
ICAgeyByZXR1cm4gX01faC5rZXlfZXEoKTsgfQojIDEyNjggIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy91bm9yZGVyZWRfbWFwLmgi
IDMKICAgICAgaXRlcmF0b3IKICAgICAgZmluZChjb25zdCBrZXlfdHlwZSYgX194KQogICAgICB7
IHJldHVybiBfTV9oLmZpbmQoX194KTsgfQoKICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAgZmlu
ZChjb25zdCBrZXlfdHlwZSYgX194KSBjb25zdAogICAgICB7IHJldHVybiBfTV9oLmZpbmQoX194
KTsgfQoKCgoKCgoKICAgICAgc2l6ZV90eXBlCiAgICAgIGNvdW50KGNvbnN0IGtleV90eXBlJiBf
X3gpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2guY291bnQoX194KTsgfQojIDEyOTMgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4z
LXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy91
bm9yZGVyZWRfbWFwLmgiIDMKICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBpdGVyYXRvcj4KICAg
ICAgZXF1YWxfcmFuZ2UoY29uc3Qga2V5X3R5cGUmIF9feCkKICAgICAgeyByZXR1cm4gX01faC5l
cXVhbF9yYW5nZShfX3gpOyB9CgogICAgICBzdGQ6OnBhaXI8Y29uc3RfaXRlcmF0b3IsIGNvbnN0
X2l0ZXJhdG9yPgogICAgICBlcXVhbF9yYW5nZShjb25zdCBrZXlfdHlwZSYgX194KSBjb25zdAog
ICAgICB7IHJldHVybiBfTV9oLmVxdWFsX3JhbmdlKF9feCk7IH0KCgoKCgogICAgICBzaXplX3R5
cGUKICAgICAgYnVja2V0X2NvdW50KCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01f
aC5idWNrZXRfY291bnQoKTsgfQoKCiAgICAgIHNpemVfdHlwZQogICAgICBtYXhfYnVja2V0X2Nv
dW50KCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01faC5tYXhfYnVja2V0X2NvdW50
KCk7IH0KCgoKCgoKICAgICAgc2l6ZV90eXBlCiAgICAgIGJ1Y2tldF9zaXplKHNpemVfdHlwZSBf
X24pIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2guYnVja2V0X3NpemUoX19uKTsgfQoKCgoKCgog
ICAgICBzaXplX3R5cGUKICAgICAgYnVja2V0KGNvbnN0IGtleV90eXBlJiBfX2tleSkgY29uc3QK
ICAgICAgeyByZXR1cm4gX01faC5idWNrZXQoX19rZXkpOyB9CgoKCgoKCgogICAgICBsb2NhbF9p
dGVyYXRvcgogICAgICBiZWdpbihzaXplX3R5cGUgX19uKQogICAgICB7IHJldHVybiBfTV9oLmJl
Z2luKF9fbik7IH0KIyAxMzQ5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOS4zL2JpdHMvdW5vcmRlcmVkX21hcC5oIiAzCiAgICAgIGNvbnN0X2xv
Y2FsX2l0ZXJhdG9yCiAgICAgIGJlZ2luKHNpemVfdHlwZSBfX24pIGNvbnN0CiAgICAgIHsgcmV0
dXJuIF9NX2guYmVnaW4oX19uKTsgfQoKICAgICAgY29uc3RfbG9jYWxfaXRlcmF0b3IKICAgICAg
Y2JlZ2luKHNpemVfdHlwZSBfX24pIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2guY2JlZ2luKF9f
bik7IH0KIyAxMzY0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOS4zL2JpdHMvdW5vcmRlcmVkX21hcC5oIiAzCiAgICAgIGxvY2FsX2l0ZXJhdG9y
CiAgICAgIGVuZChzaXplX3R5cGUgX19uKQogICAgICB7IHJldHVybiBfTV9oLmVuZChfX24pOyB9
CiMgMTM3NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjkuMy9iaXRzL3Vub3JkZXJlZF9tYXAuaCIgMwogICAgICBjb25zdF9sb2NhbF9pdGVyYXRv
cgogICAgICBlbmQoc2l6ZV90eXBlIF9fbikgY29uc3QKICAgICAgeyByZXR1cm4gX01faC5lbmQo
X19uKTsgfQoKICAgICAgY29uc3RfbG9jYWxfaXRlcmF0b3IKICAgICAgY2VuZChzaXplX3R5cGUg
X19uKSBjb25zdAogICAgICB7IHJldHVybiBfTV9oLmNlbmQoX19uKTsgfQoKCgoKCiAgICAgIGZs
b2F0CiAgICAgIGxvYWRfZmFjdG9yKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01f
aC5sb2FkX2ZhY3RvcigpOyB9CgoKCiAgICAgIGZsb2F0CiAgICAgIG1heF9sb2FkX2ZhY3Rvcigp
IGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX2gubWF4X2xvYWRfZmFjdG9yKCk7IH0K
CgoKCgogICAgICB2b2lkCiAgICAgIG1heF9sb2FkX2ZhY3RvcihmbG9hdCBfX3opCiAgICAgIHsg
X01faC5tYXhfbG9hZF9mYWN0b3IoX196KTsgfQojIDE0MTIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMvYml0cy91bm9yZGVyZWRfbWFwLmgi
IDMKICAgICAgdm9pZAogICAgICByZWhhc2goc2l6ZV90eXBlIF9fbikKICAgICAgeyBfTV9oLnJl
aGFzaChfX24pOyB9CiMgMTQyMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjkuMy9iaXRzL3Vub3JkZXJlZF9tYXAuaCIgMwogICAgICB2b2lkCiAg
ICAgIHJlc2VydmUoc2l6ZV90eXBlIF9fbikKICAgICAgeyBfTV9oLnJlc2VydmUoX19uKTsgfQoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0tleTEsIHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1lIF9I
YXNoMSwgdHlwZW5hbWUgX1ByZWQxLAogICAgICAgIHR5cGVuYW1lIF9BbGxvYzE+CiAgICAgICAg
ZnJpZW5kIGJvb2wKIG9wZXJhdG9yPT0oY29uc3QgdW5vcmRlcmVkX211bHRpbWFwPF9LZXkxLCBf
VHAxLAogICAgICAgICBfSGFzaDEsIF9QcmVkMSwgX0FsbG9jMT4mLAogICAgIGNvbnN0IHVub3Jk
ZXJlZF9tdWx0aW1hcDxfS2V5MSwgX1RwMSwKICAgICAgICAgX0hhc2gxLCBfUHJlZDEsIF9BbGxv
YzE+Jik7CiAgICB9OwoKICB0ZW1wbGF0ZTxjbGFzcyBfS2V5LCBjbGFzcyBfVHAsIGNsYXNzIF9I
YXNoLCBjbGFzcyBfUHJlZCwgY2xhc3MgX0FsbG9jPgogICAgaW5saW5lIHZvaWQKICAgIHN3YXAo
dW5vcmRlcmVkX21hcDxfS2V5LCBfVHAsIF9IYXNoLCBfUHJlZCwgX0FsbG9jPiYgX194LAogIHVu
b3JkZXJlZF9tYXA8X0tleSwgX1RwLCBfSGFzaCwgX1ByZWQsIF9BbGxvYz4mIF9feSkKICAgIHsg
X194LnN3YXAoX195KTsgfQoKICB0ZW1wbGF0ZTxjbGFzcyBfS2V5LCBjbGFzcyBfVHAsIGNsYXNz
IF9IYXNoLCBjbGFzcyBfUHJlZCwgY2xhc3MgX0FsbG9jPgogICAgaW5saW5lIHZvaWQKICAgIHN3
YXAodW5vcmRlcmVkX211bHRpbWFwPF9LZXksIF9UcCwgX0hhc2gsIF9QcmVkLCBfQWxsb2M+JiBf
X3gsCiAgdW5vcmRlcmVkX211bHRpbWFwPF9LZXksIF9UcCwgX0hhc2gsIF9QcmVkLCBfQWxsb2M+
JiBfX3kpCiAgICB7IF9feC5zd2FwKF9feSk7IH0KCiAgdGVtcGxhdGU8Y2xhc3MgX0tleSwgY2xh
c3MgX1RwLCBjbGFzcyBfSGFzaCwgY2xhc3MgX1ByZWQsIGNsYXNzIF9BbGxvYz4KICAgIGlubGlu
ZSBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0IHVub3JkZXJlZF9tYXA8X0tleSwgX1RwLCBfSGFz
aCwgX1ByZWQsIF9BbGxvYz4mIF9feCwKICAgICAgICBjb25zdCB1bm9yZGVyZWRfbWFwPF9LZXks
IF9UcCwgX0hhc2gsIF9QcmVkLCBfQWxsb2M+JiBfX3kpCiAgICB7IHJldHVybiBfX3guX01faC5f
TV9lcXVhbChfX3kuX01faCk7IH0KCiAgdGVtcGxhdGU8Y2xhc3MgX0tleSwgY2xhc3MgX1RwLCBj
bGFzcyBfSGFzaCwgY2xhc3MgX1ByZWQsIGNsYXNzIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAg
ICBvcGVyYXRvciE9KGNvbnN0IHVub3JkZXJlZF9tYXA8X0tleSwgX1RwLCBfSGFzaCwgX1ByZWQs
IF9BbGxvYz4mIF9feCwKICAgICAgICBjb25zdCB1bm9yZGVyZWRfbWFwPF9LZXksIF9UcCwgX0hh
c2gsIF9QcmVkLCBfQWxsb2M+JiBfX3kpCiAgICB7IHJldHVybiAhKF9feCA9PSBfX3kpOyB9Cgog
IHRlbXBsYXRlPGNsYXNzIF9LZXksIGNsYXNzIF9UcCwgY2xhc3MgX0hhc2gsIGNsYXNzIF9QcmVk
LCBjbGFzcyBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I9PShjb25zdCB1bm9y
ZGVyZWRfbXVsdGltYXA8X0tleSwgX1RwLCBfSGFzaCwgX1ByZWQsIF9BbGxvYz4mIF9feCwKICAg
ICAgICBjb25zdCB1bm9yZGVyZWRfbXVsdGltYXA8X0tleSwgX1RwLCBfSGFzaCwgX1ByZWQsIF9B
bGxvYz4mIF9feSkKICAgIHsgcmV0dXJuIF9feC5fTV9oLl9NX2VxdWFsKF9feS5fTV9oKTsgfQoK
ICB0ZW1wbGF0ZTxjbGFzcyBfS2V5LCBjbGFzcyBfVHAsIGNsYXNzIF9IYXNoLCBjbGFzcyBfUHJl
ZCwgY2xhc3MgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgdW5v
cmRlcmVkX211bHRpbWFwPF9LZXksIF9UcCwgX0hhc2gsIF9QcmVkLCBfQWxsb2M+JiBfX3gsCiAg
ICAgICAgY29uc3QgdW5vcmRlcmVkX211bHRpbWFwPF9LZXksIF9UcCwgX0hhc2gsIF9QcmVkLCBf
QWxsb2M+JiBfX3kpCiAgICB7IHJldHVybiAhKF9feCA9PSBfX3kpOyB9CgoKfQojIDQ5ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljku
My10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3Vub3Jk
ZXJlZF9tYXAiIDIgMwojIDMwICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCIgMgoKCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIEZ1
bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSB7CnB1YmxpYzoKICAgIHN0cnVjdCBGdW5jdGlvblJhbmdl
IHsKICAgICAgICBGdW5jdGlvblJhbmdlKCkge30KICAgICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgRnVuY3Rpb25SYW5nZSYgb3RoZXIpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgICByZXR1
cm4gbV9zdGFydCA9PSBvdGhlci5tX3N0YXJ0ICYmIG1fZW5kID09IG90aGVyLm1fZW5kOwogICAg
ICAgIH0KICAgICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAg
IHJldHVybiBtX3N0YXJ0ICogbV9lbmQ7CiAgICAgICAgfQoKICAgICAgICB1bnNpZ25lZCBtX3N0
YXJ0OwogICAgICAgIHVuc2lnbmVkIG1fZW5kOwogICAgfTsKCiAgICBib29sIGhhc0V4ZWN1dGVk
QXRPZmZzZXQoaW50cHRyX3QgaWQsIHVuc2lnbmVkIG9mZnNldCk7CiAgICB2b2lkIGluc2VydFVu
ZXhlY3V0ZWRSYW5nZShpbnRwdHJfdCBpZCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCk7
CiAgICB2b2lkIHJlbW92ZVVuZXhlY3V0ZWRSYW5nZShpbnRwdHJfdCBpZCwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGVuZCk7CiAgICBWZWN0b3I8c3RkOjp0dXBsZTxib29sLCB1bnNpZ25lZCwg
dW5zaWduZWQ+PiBnZXRGdW5jdGlvblJhbmdlcyhpbnRwdHJfdCBpZCk7Cgpwcml2YXRlOgogICAg
dHlwZWRlZiBzdGQ6OnVub3JkZXJlZF9tYXA8RnVuY3Rpb25SYW5nZSwgYm9vbCwgSGFzaE1ldGhv
ZDxGdW5jdGlvblJhbmdlPj4gUmFuZ2VNYXA7CiAgICB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21h
cDxpbnRwdHJfdCwgUmFuZ2VNYXA+IFNvdXJjZUlEVG9SYW5nZU1hcDsKICAgIFNvdXJjZUlEVG9S
YW5nZU1hcCBtX3JhbmdlTWFwOwp9OwoKfQojIDM3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oIiAyCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
R1BSSW5mby5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5m
by5oIgojZGVmaW5lIEdQUkluZm9faCAKCgoKCgpuYW1lc3BhY2UgSlNDIHsKCgoKCgoKdHlwZWRl
ZiBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBHUFJSZWc7CiNkZWZpbmUgSW52YWxpZEdQUlJl
ZyAoKDo6SlNDOjpHUFJSZWcpLTEpCiMgMTUzICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dQUkluZm8uaCIKY2xhc3MgSlNWYWx1ZVJlZ3MgewpwdWJsaWM6CiAgICBKU1ZhbHVlUmVn
cygpCiAgICAgICAgOiBtX3RhZ0dQUihzdGF0aWNfY2FzdDxpbnQ4X3Q+KCgoOjpKU0M6OkdQUlJl
ZyktMSkpKQogICAgICAgICwgbV9wYXlsb2FkR1BSKHN0YXRpY19jYXN0PGludDhfdD4oKCg6OkpT
Qzo6R1BSUmVnKS0xKSkpCiAgICB7CiAgICB9CgogICAgSlNWYWx1ZVJlZ3MoR1BSUmVnIHRhZ0dQ
UiwgR1BSUmVnIHBheWxvYWRHUFIpCiAgICAgICAgOiBtX3RhZ0dQUih0YWdHUFIpCiAgICAgICAg
LCBtX3BheWxvYWRHUFIocGF5bG9hZEdQUikKICAgIHsKICAgIH0KCiAgICBzdGF0aWMgSlNWYWx1
ZVJlZ3Mgd2l0aFR3b0F2YWlsYWJsZVJlZ3MoR1BSUmVnIGdwcjEsIEdQUlJlZyBncHIyKQogICAg
ewogICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhncHIxLCBncHIyKTsKICAgIH0KCiAgICBzdGF0
aWMgSlNWYWx1ZVJlZ3MgcGF5bG9hZE9ubHkoR1BSUmVnIGdwcikKICAgIHsKICAgICAgICByZXR1
cm4gSlNWYWx1ZVJlZ3MoKCg6OkpTQzo6R1BSUmVnKS0xKSwgZ3ByKTsKICAgIH0KCiAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPigqdGhpcyk7IH0K
ICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxHUFJSZWc+KG1fdGFnR1BSKSAhPSAoKDo6SlNDOjpHUFJSZWcpLTEpCiAgICAg
ICAgICAgIHx8IHN0YXRpY19jYXN0PEdQUlJlZz4obV9wYXlsb2FkR1BSKSAhPSAoKDo6SlNDOjpH
UFJSZWcpLTEpOwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3I9PShKU1ZhbHVlUmVncyBvdGhlcikg
Y29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV90YWdHUFIgPT0gb3RoZXIubV90YWdHUFIKICAg
ICAgICAgICAgJiYgbV9wYXlsb2FkR1BSID09IG90aGVyLm1fcGF5bG9hZEdQUjsKICAgIH0KICAg
IGJvb2wgb3BlcmF0b3IhPShKU1ZhbHVlUmVncyBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7IH0KCiAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8R1BSUmVnPihtX3RhZ0dQUik7IH0KICAgIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8R1BSUmVnPihtX3BheWxvYWRHUFIpOyB9CiAgICBHUFJSZWcg
Z3ByKFdoaWNoVmFsdWVXb3JkIHdoaWNoKSBjb25zdAogICAgewogICAgICAgIHN3aXRjaCAod2hp
Y2gpIHsKICAgICAgICBjYXNlIFRhZ1dvcmQ6CiAgICAgICAgICAgIHJldHVybiB0YWdHUFIoKTsK
ICAgICAgICBjYXNlIFBheWxvYWRXb3JkOgogICAgICAgICAgICByZXR1cm4gcGF5bG9hZEdQUigp
OwogICAgICAgIH0KICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIHRhZ0dQUigpOwog
ICAgfQoKICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVybiBtX3RhZ0dQUiA9
PSBncHIgfHwgbV9wYXlsb2FkR1BSID09IGdwcjsgfQoKICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwoKcHJpdmF0ZToKICAgIGludDhfdCBtX3RhZ0dQUjsKICAgIGludDhfdCBtX3Bh
eWxvYWRHUFI7Cn07CgpjbGFzcyBKU1ZhbHVlU291cmNlIHsKcHVibGljOgogICAgSlNWYWx1ZVNv
dXJjZSgpCiAgICAgICAgOiBtX29mZnNldChub3RBZGRyZXNzKCkpCiAgICAgICAgLCBtX2Jhc2VP
clRhZyhzdGF0aWNfY2FzdDxpbnQ4X3Q+KCgoOjpKU0M6OkdQUlJlZyktMSkpKQogICAgICAgICwg
bV9wYXlsb2FkKHN0YXRpY19jYXN0PGludDhfdD4oKCg6OkpTQzo6R1BSUmVnKS0xKSkpCiAgICAg
ICAgLCBtX3RhZ1R5cGUoMCkKICAgIHsKICAgIH0KCiAgICBKU1ZhbHVlU291cmNlKEpTVmFsdWVS
ZWdzIHJlZ3MpCiAgICAgICAgOiBtX29mZnNldChub3RBZGRyZXNzKCkpCiAgICAgICAgLCBtX2Jh
c2VPclRhZyhyZWdzLnRhZ0dQUigpKQogICAgICAgICwgbV9wYXlsb2FkKHJlZ3MucGF5bG9hZEdQ
UigpKQogICAgICAgICwgbV90YWdUeXBlKDApCiAgICB7CiAgICB9CgogICAgSlNWYWx1ZVNvdXJj
ZShHUFJSZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9hZEdQUikKICAgICAgICA6IG1fb2Zmc2V0KG5v
dEFkZHJlc3MoKSkKICAgICAgICAsIG1fYmFzZU9yVGFnKHN0YXRpY19jYXN0PGludDhfdD4odGFn
R1BSKSkKICAgICAgICAsIG1fcGF5bG9hZChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHBheWxvYWRHUFIp
KQogICAgICAgICwgbV90YWdUeXBlKDApCiAgICB7CiAgICB9CgogICAgSlNWYWx1ZVNvdXJjZShN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBhZGRyZXNzKQogICAgICAgIDogbV9vZmZzZXQoYWRkcmVz
cy5vZmZzZXQpCiAgICAgICAgLCBtX2Jhc2VPclRhZyhzdGF0aWNfY2FzdDxpbnQ4X3Q+KGFkZHJl
c3MuYmFzZSkpCiAgICAgICAgLCBtX3BheWxvYWQoc3RhdGljX2Nhc3Q8aW50OF90PigoKDo6SlND
OjpHUFJSZWcpLTEpKSkKICAgICAgICAsIG1fdGFnVHlwZSgwKQogICAgewogICAgICAgICgodm9p
ZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICB9CgogICAgc3RhdGljIEpTVmFsdWVTb3VyY2Ug
dW5ib3hlZENlbGwoR1BSUmVnIHBheWxvYWRHUFIpCiAgICB7CiAgICAgICAgSlNWYWx1ZVNvdXJj
ZSByZXN1bHQ7CiAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gbm90QWRkcmVzcygpOwogICAgICAg
IHJlc3VsdC5tX2Jhc2VPclRhZyA9IHN0YXRpY19jYXN0PGludDhfdD4oKCg6OkpTQzo6R1BSUmVn
KS0xKSk7CiAgICAgICAgcmVzdWx0Lm1fcGF5bG9hZCA9IHN0YXRpY19jYXN0PGludDhfdD4ocGF5
bG9hZEdQUik7CiAgICAgICAgcmVzdWx0Lm1fdGFnVHlwZSA9IHN0YXRpY19jYXN0PGludDhfdD4o
SlNWYWx1ZTo6Q2VsbFRhZyk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPigqdGhpcyk7IH0K
ICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxHUFJSZWc+KG1fYmFzZU9yVGFnKSAhPSAoKDo6SlNDOjpHUFJSZWcpLTEpCiAg
ICAgICAgICAgIHx8IHN0YXRpY19jYXN0PEdQUlJlZz4obV9wYXlsb2FkKSAhPSAoKDo6SlNDOjpH
UFJSZWcpLTEpOwogICAgfQoKICAgIGJvb2wgaXNBZGRyZXNzKCkgY29uc3QKICAgIHsKICAgICAg
ICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ICE9IG5vdEFkZHJlc3MoKTsKICAg
IH0KCiAgICBpbnQzMl90IG9mZnNldCgpIGNvbnN0CiAgICB7CiAgICAgICAgKCh2b2lkKTApOwog
ICAgICAgIHJldHVybiBtX29mZnNldDsKICAgIH0KCiAgICBHUFJSZWcgYmFzZSgpIGNvbnN0CiAg
ICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+
KG1fYmFzZU9yVGFnKTsKICAgIH0KCiAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QKICAgIHsKICAg
ICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4obV9iYXNl
T3JUYWcpOwogICAgfQoKICAgIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QKICAgIHsKICAgICAg
ICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4obV9wYXlsb2Fk
KTsKICAgIH0KCiAgICBib29sIGhhc0tub3duVGFnKCkgY29uc3QKICAgIHsKICAgICAgICAoKHZv
aWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFJS
ZWc+KG1fYmFzZU9yVGFnKSA9PSAoKDo6SlNDOjpHUFJSZWcpLTEpOwogICAgfQoKICAgIHVpbnQz
Ml90IHRhZygpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+
KG1fdGFnVHlwZSk7CiAgICB9CgogICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MgYXNBZGRyZXNz
KHVuc2lnbmVkIGFkZGl0aW9uYWxPZmZzZXQgPSAwKSBjb25zdCB7IHJldHVybiBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlKCksIG9mZnNldCgpICsgYWRkaXRpb25hbE9mZnNldCk7IH0KCnBy
aXZhdGU6CiAgICBzdGF0aWMgaW5saW5lIGludDMyX3Qgbm90QWRkcmVzcygpIHsgcmV0dXJuIDB4
ODAwMDAwMDA7IH0KCiAgICBpbnQzMl90IG1fb2Zmc2V0OwogICAgaW50OF90IG1fYmFzZU9yVGFn
OwogICAgaW50OF90IG1fcGF5bG9hZDsKICAgIGludDhfdCBtX3RhZ1R5cGU7Cn07CiMgNTI5ICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaCIKI2RlZmluZSBOVU1CRVJf
T0ZfQVJHVU1FTlRfUkVHSVNURVJTIDR1CiNkZWZpbmUgTlVNQkVSX09GX0NBTExFRV9TQVZFU19S
RUdJU1RFUlMgMHUKCmNsYXNzIEdQUkluZm8gewpwdWJsaWM6CiAgICB0eXBlZGVmIEdQUlJlZyBS
ZWdpc3RlclR5cGU7CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMg
PSA5OwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMg
PSA0dTsKCgogICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMCA9IEFSTVJlZ2lzdGVyczo6cjA7
CiAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gQVJNUmVnaXN0ZXJzOjpyMTsKICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgcmVnVDIgPSBBUk1SZWdpc3RlcnM6OnIyOwogICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZWdUMyA9IEFSTVJlZ2lzdGVyczo6cjM7CiAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJlZ1Q0ID0gQVJNUmVnaXN0ZXJzOjpyODsKICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVn
VDUgPSBBUk1SZWdpc3RlcnM6OnI5OwogICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNiA9IEFS
TVJlZ2lzdGVyczo6cjEwOwoKICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDcgPSBBUk1SZWdp
c3RlcnM6OnIxMTsKCgoKICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDggPSBBUk1SZWdpc3Rl
cnM6OnI0OwoKICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBBUk1S
ZWdpc3RlcnM6OmZwOwoKICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIwID0gQVJN
UmVnaXN0ZXJzOjpyMDsKICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gQVJN
UmVnaXN0ZXJzOjpyMTsKICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gQVJN
UmVnaXN0ZXJzOjpyMjsKICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gQVJN
UmVnaXN0ZXJzOjpyMzsKICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IEFSTVJl
Z2lzdGVyczo6cjQ7CiAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSBBUk1SZWdp
c3RlcnM6OnI4OwogICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IEFSTVJl
Z2lzdGVyczo6cjA7CiAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IEFS
TVJlZ2lzdGVyczo6cjE7CiAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJl
dHVybkdQUiA9IEFSTVJlZ2lzdGVyczo6cjU7CgogICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVy
KHVuc2lnbmVkIGluZGV4KQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyByZWdU
MCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1LCByZWdUNiwgcmVnVDcsIHJlZ1Q4
IH07CiAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOwogICAgfQoKICAgIHN0
YXRpYyBHUFJSZWcgdG9Bcmd1bWVudFJlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQogICAgewogICAg
ICAgICgodm9pZCkwKTsKICAgICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5k
ZXhbbnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyc10gPSB7IGFyZ3VtZW50R1BSMCwgYXJndW1lbnRH
UFIxLCBhcmd1bWVudEdQUjIsIGFyZ3VtZW50R1BSMyB9OwogICAgICAgIHJldHVybiByZWdpc3Rl
ckZvckluZGV4W2luZGV4XTsKICAgIH0KCiAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChHUFJS
ZWcgcmVnKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbMTZdID0KCiAgICAgICAg
ICAgIHsgMCwgMSwgMiwgMywgOCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCwgNCwgNSwgNiwgNywgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRl
eCwgSW52YWxpZEluZGV4IH07CgoKCiAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JS
ZWdpc3RlcltyZWddOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CgogICAgc3RhdGljIGNv
bnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQogICAgewogICAgICAgICgodm9pZCkwKTsK
ICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdp
c3RlclsxNl0gPSB7CiAgICAgICAgICAgICJyMCIsICJyMSIsICJyMiIsICJyMyIsCiAgICAgICAg
ICAgICJyNCIsICJyNSIsICJyNiIsICJyNyIsCiAgICAgICAgICAgICJyOCIsICJyOSIsICJyMTAi
LCAicjExIiwKICAgICAgICAgICAgInIxMiIsICJyMTMiLCAicjE0IiwgInIxNSIKICAgICAgICB9
OwogICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKICAgIH0KCiAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKfTsKIyA4ODMgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oIgppbmxpbmUgR1BSUmVnIGFyZ3Vt
ZW50UmVnaXN0ZXJGb3IodW5zaWduZWQgYXJndW1lbnRJbmRleCkKewoKCgoKCgogICAgKHZvaWQp
YXJndW1lbnRJbmRleDsKCiAgICByZXR1cm4gKCg6OkpTQzo6R1BSUmVnKS0xKTsKCn0KCgoKCnN0
YXRpY19hc3NlcnQoKEdQUkluZm86OnJlZ1QwID09IEdQUkluZm86OnJldHVyblZhbHVlR1BSKSwg
InJlZ1QwX211c3RfZXF1YWxfcmV0dXJuVmFsdWVHUFIiKTsKCnN0YXRpY19hc3NlcnQoKEdQUklu
Zm86OnJlZ1QxID09IEdQUkluZm86OnJldHVyblZhbHVlR1BSMiksICJyZWdUMV9tdXN0X2VxdWFs
X3JldHVyblZhbHVlR1BSMiIpOwoKCgoKfQoKbmFtZXNwYWNlIFdURiB7CgppbmxpbmUgdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6R1BSUmVnIHJlZykKewoKICAgIG91
dC5wcmludCgiJSIsIEpTQzo6R1BSSW5mbzo6ZGVidWdOYW1lKHJlZykpOwoKCgp9Cgp9CiMgMzkg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgiIDIKCiMgMSAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIiAxCiMgNDEgIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCIKI2RlZmluZSBJbnRyaW5zaWNfaCAKCm5hbWVzcGFj
ZSBKU0MgewoKZW51bSBJbnRyaW5zaWMgewoKICAgIE5vSW50cmluc2ljLAogICAgQWJzSW50cmlu
c2ljLAogICAgTWluSW50cmluc2ljLAogICAgTWF4SW50cmluc2ljLAogICAgU3FydEludHJpbnNp
YywKICAgIFNpbkludHJpbnNpYywKICAgIENsejMySW50cmluc2ljLAogICAgQ29zSW50cmluc2lj
LAogICAgQXJyYXlQdXNoSW50cmluc2ljLAogICAgQXJyYXlQb3BJbnRyaW5zaWMsCiAgICBDaGFy
Q29kZUF0SW50cmluc2ljLAogICAgQ2hhckF0SW50cmluc2ljLAogICAgRnJvbUNoYXJDb2RlSW50
cmluc2ljLAogICAgUG93SW50cmluc2ljLAogICAgRmxvb3JJbnRyaW5zaWMsCiAgICBDZWlsSW50
cmluc2ljLAogICAgUm91bmRJbnRyaW5zaWMsCiAgICBFeHBJbnRyaW5zaWMsCiAgICBMb2dJbnRy
aW5zaWMsCiAgICBSZWdFeHBFeGVjSW50cmluc2ljLAogICAgUmVnRXhwVGVzdEludHJpbnNpYywK
ICAgIFJlZ0V4cFRlc3RGYXN0SW50cmluc2ljLAogICAgU3RyaW5nUHJvdG90eXBlVmFsdWVPZklu
dHJpbnNpYywKICAgIFN0cmluZ1Byb3RvdHlwZVJlcGxhY2VJbnRyaW5zaWMsCiAgICBTdHJpbmdQ
cm90b3R5cGVSZXBsYWNlUmVnRXhwSW50cmluc2ljLAogICAgSU11bEludHJpbnNpYywKICAgIFJh
bmRvbUludHJpbnNpYywKICAgIEZSb3VuZEludHJpbnNpYywKICAgIFRydW5jSW50cmluc2ljLAog
ICAgSXNSZWdFeHBPYmplY3RJbnRyaW5zaWMsCiAgICBCb3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNh
bGxJbnRyaW5zaWMsCgoKICAgIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWMsCiAgICBUeXBlZEFy
cmF5Qnl0ZUxlbmd0aEludHJpbnNpYywKICAgIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2lj
LAoKCgogICAgREZHVHJ1ZUludHJpbnNpYywKICAgIE9TUkV4aXRJbnRyaW5zaWMsCiAgICBJc0Zp
bmFsVGllckludHJpbnNpYywKICAgIFNldEludDMySGVhcFByZWRpY3Rpb25JbnRyaW5zaWMsCiAg
ICBDaGVja0ludDMySW50cmluc2ljLAogICAgRmlhdEludDUySW50cmluc2ljLAp9OwoKfQojIDQy
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIiAyCiMgMSAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaCIgMQojIDI3ICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oIgojZGVmaW5lIEpJVFRodW5rc19oIAoK
CgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgiIDEK
IyAzMCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCIKI2Rl
ZmluZSBDYWxsRGF0YV9oIAoKCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvTmFrZWRQdHIuaCIg
MQojIDI3ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9OYWtlZFB0ci5oIgojZGVmaW5lIFdURl9OYWtl
ZFB0cl9oIAoKCgpuYW1lc3BhY2UgV1RGIHsKCgoKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFz
cyBOYWtlZFB0ciB7CiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQq
IHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7
IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpX
VEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6
OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsg
cmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10o
dm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRp
b247IH0gcHJpdmF0ZTogdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25B
ZnRlclRoaXNNYWNybzsKcHVibGljOgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fKSkgTmFrZWRQdHIoKSA6IG1fcHRyKG51bGxwdHIpIHsgfQogICAgaW5saW5lIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgTmFrZWRQdHIoVCogcHRyKSA6IG1fcHRy
KHB0cikgeyB9CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBO
YWtlZFB0cihjb25zdCBOYWtlZFB0ciYgbykgOiBtX3B0cihvLm1fcHRyKSB7IH0KICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IE5ha2VkUHRyKGNvbnN0IE5ha2VkUHRyPFU+JiBvKSA6IG1fcHRyKG8u
Z2V0KCkpIHsgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp
IE5ha2VkUHRyKE5ha2VkUHRyJiYgbykgOiBtX3B0cihvLmdldCgpKSB7IH0KICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IE5ha2VkUHRyKE5ha2VkUHRyPFU+JiYgbykgOiBtX3B0cihvLmdldCgpKSB7
IH0KCiAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQoKICAgIHZvaWQgY2xlYXIo
KSB7IG1fcHRyID0gbnVsbHB0cjsgfQoKICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgKCh2b2lk
KTApOyByZXR1cm4gKm1fcHRyOyB9CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18pKSBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KCiAgICBv
cGVyYXRvciBUKigpIHsgcmV0dXJuIG1fcHRyOyB9CgogICAgYm9vbCBvcGVyYXRvciEoKSBjb25z
dCB7IHJldHVybiAhbV9wdHI7IH0KCiAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gISFtX3B0cjsgfQoKICAgIE5ha2VkUHRyJiBvcGVyYXRvcj0oY29uc3QgTmFrZWRQ
dHImKTsKICAgIE5ha2VkUHRyJiBvcGVyYXRvcj0oVCopOwogICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4gTmFrZWRQdHImIG9wZXJhdG9yPShjb25zdCBOYWtlZFB0cjxVPiYpOwogICAgTmFrZWRQdHIm
IG9wZXJhdG9yPShOYWtlZFB0ciYmKTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IE5ha2VkUHRy
JiBvcGVyYXRvcj0oTmFrZWRQdHI8VT4mJik7CgogICAgdm9pZCBzd2FwKE5ha2VkUHRyJik7Cgpw
cml2YXRlOgogICAgVCogbV9wdHI7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgTmFr
ZWRQdHI8VD4mIE5ha2VkUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgTmFrZWRQdHImIG8pCnsKICAg
IG1fcHRyID0gby5tX3B0cjsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8dHlwZW5hbWUg
VD4gaW5saW5lIE5ha2VkUHRyPFQ+JiBOYWtlZFB0cjxUPjo6b3BlcmF0b3I9KFQqIG9wdHIpCnsK
ICAgIG1fcHRyID0gb3B0cjsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8dHlwZW5hbWUg
VD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIE5ha2VkUHRyPFQ+JiBOYWtlZFB0cjxUPjo6
b3BlcmF0b3I9KGNvbnN0IE5ha2VkUHRyPFU+JiBvKQp7CiAgICBOYWtlZFB0ciBwdHIgPSBvOwog
ICAgc3dhcChwdHIpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBp
bmxpbmUgTmFrZWRQdHI8VD4mIE5ha2VkUHRyPFQ+OjpvcGVyYXRvcj0oTmFrZWRQdHImJiBvKQp7
CiAgICBOYWtlZFB0ciBwdHIgPSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KG8p
OwogICAgc3dhcChwdHIpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgTmFrZWRQdHI8VD4mIE5ha2VkUHRyPFQ+Ojpv
cGVyYXRvcj0oTmFrZWRQdHI8VT4mJiBvKQp7CiAgICBOYWtlZFB0ciBwdHIgPSBzdGQ6Om1vdmU8
V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KG8pOwogICAgc3dhcChwdHIpOwogICAgcmV0dXJuICp0
aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBOYWtlZFB0cjxUPjo6c3dhcChO
YWtlZFB0ciYgbykKewogICAgc3RkOjpzd2FwKG1fcHRyLCBvLm1fcHRyKTsKfQoKdGVtcGxhdGU8
Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcChOYWtlZFB0cjxUPiYgYSwgTmFrZWRQdHI8VD4mIGIp
CnsKICAgIGEuc3dhcChiKTsKfQoKfQoKdXNpbmcgV1RGOjpOYWtlZFB0cjsKIyAzNCAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCIgMgoKbmFtZXNwYWNlIEpT
QyB7CgpjbGFzcyBBcmdMaXN0OwpjbGFzcyBFeGNlcHRpb247CmNsYXNzIEV4ZWNTdGF0ZTsKY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOwpjbGFzcyBKU09iamVjdDsKY2xhc3MgSlNTY29wZTsKCmVu
dW0gY2xhc3MgQ2FsbFR5cGUgOiB1bnNpZ25lZCB7CiAgICBOb25lLAogICAgSG9zdCwKICAgIEpT
Cn07Cgp0eXBlZGVmIEVuY29kZWRKU1ZhbHVlICggKk5hdGl2ZUZ1bmN0aW9uKShFeGVjU3RhdGUq
KTsKCnN0cnVjdCBDYWxsRGF0YSB7CiAgICB1bmlvbiB7CiAgICAgICAgc3RydWN0IHsKICAgICAg
ICAgICAgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb247CiAgICAgICAgfSBuYXRpdmU7CiAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFi
bGU7CiAgICAgICAgICAgIEpTU2NvcGUqIHNjb3BlOwogICAgICAgIH0ganM7CiAgICB9Owp9OwoK
ZW51bSBjbGFzcyBQcm9maWxpbmdSZWFzb24gewogICAgQVBJLAogICAgTWljcm90YXNrLAogICAg
T3RoZXIKfTsKCiBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVj
dCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFy
Z0xpc3QmKTsKIEpTVmFsdWUgY2FsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0
LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJn
TGlzdCYsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKCiBKU1ZhbHVl
IHByb2ZpbGVkQ2FsbChFeGVjU3RhdGUqLCBQcm9maWxpbmdSZWFzb24sIEpTVmFsdWUgZnVuY3Rp
b25PYmplY3QsIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBj
b25zdCBBcmdMaXN0Jik7CiBKU1ZhbHVlIHByb2ZpbGVkQ2FsbChFeGVjU3RhdGUqLCBQcm9maWxp
bmdSZWFzb24sIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0
YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiwgTmFrZWRQdHI8RXhjZXB0aW9u
PiYgcmV0dXJuZWRFeGNlcHRpb24pOwoKfQojIDMyICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFRodW5rcy5oIiAyCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmgiIDEKIyAzMyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRUaHVua3MuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaCIKI2RlZmluZSBMb3dMZXZlbEludGVycHJldGVy
X2ggCiMgMzQgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgiIDIK
CiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvci5oIiAx
CiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3IuaCIK
I2RlZmluZSBUaHVua0dlbmVyYXRvcl9oIAoKCgpuYW1lc3BhY2UgSlNDIHsKY2xhc3MgVk07CmNs
YXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKCnR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
ICgqVGh1bmtHZW5lcmF0b3IpKFZNKik7Cgp9CiMgMzYgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUVGh1bmtzLmgiIDIKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvV2Vha0hhbmRsZU93bmVyLmgiIDEKIyAzOCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRUaHVua3MuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1dlYWtJbmxpbmVzLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvV2Vha0lubGluZXMuaCIKI2RlZmluZSBXZWFrSW5saW5lc19oIAoKIyAxICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCIgMQojIDI0ICIuLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCIKI2RlZmluZSBKU0NlbGxfaCAKCiMgMSAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCIgMQojIDI3ICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCIgMgojIDEgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxTdGF0ZS5oIiAxCiMgMjggIi4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIiAyCiMgMSAiLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oIiAxCiMgMzAgIi4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaCIKI2RlZmluZSBDb25z
dHJ1Y3REYXRhX2ggCgoKCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIEFyZ0xpc3Q7CmNsYXNzIEV4
ZWNTdGF0ZTsKY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwpjbGFzcyBKU09iamVjdDsKY2xhc3Mg
SlNTY29wZTsKCmVudW0gY2xhc3MgQ29uc3RydWN0VHlwZSA6IHVuc2lnbmVkIHsKICAgIE5vbmUs
CiAgICBIb3N0LAogICAgSlMKfTsKCnN0cnVjdCBDb25zdHJ1Y3REYXRhIHsKICAgIHVuaW9uIHsK
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbjsKICAg
ICAgICB9IG5hdGl2ZTsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICAgICAgICAgSlNTY29wZSogc2NvcGU7CiAg
ICAgICAgfSBqczsKICAgIH07Cn07CgoKSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBK
U1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBBcmdMaXN0JiwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpOwogSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbnN0
cnVjdG9yLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlz
dCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKCmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNv
bnN0cnVjdG9yT2JqZWN0LCBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0
cnVjdERhdGEmIGNvbnN0cnVjdERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCnsKICAgIHJldHVy
biBjb25zdHJ1Y3QoZXhlYywgY29uc3RydWN0b3JPYmplY3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0
cnVjdERhdGEsIGFyZ3MsIGNvbnN0cnVjdG9yT2JqZWN0KTsKfQoKIEpTT2JqZWN0KiBwcm9maWxl
ZENvbnN0cnVjdChFeGVjU3RhdGUqLCBQcm9maWxpbmdSZWFzb24sIEpTVmFsdWUgY29uc3RydWN0
b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jiwg
SlNWYWx1ZSBuZXdUYXJnZXQpOwoKaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fKSkgSlNPYmplY3QqIHByb2ZpbGVkQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgUHJvZmls
aW5nUmVhc29uIHJlYXNvbiwgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgQ29uc3RydWN0VHlw
ZSBjb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25z
dCBBcmdMaXN0JiBhcmdzKQp7CiAgICByZXR1cm4gcHJvZmlsZWRDb25zdHJ1Y3QoZXhlYywgcmVh
c29uLCBjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJn
cywgY29uc3RydWN0b3JPYmplY3QpOwp9Cgp9CiMgMjkgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oIiAyCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgiCiNkZWZpbmUgRW51bWVyYXRpb25Nb2Rl
X2ggCgpuYW1lc3BhY2UgSlNDIHsKCmVudW0gY2xhc3MgUHJvcGVydHlOYW1lTW9kZSB7CiAgICBT
eW1ib2xzID0gMSA8PCAwLAogICAgU3RyaW5ncyA9IDEgPDwgMSwKICAgIFN0cmluZ3NBbmRTeW1i
b2xzID0gU3ltYm9scyB8IFN0cmluZ3MsCn07CgplbnVtIGNsYXNzIERvbnRFbnVtUHJvcGVydGll
c01vZGUgewogICAgSW5jbHVkZSwKICAgIEV4Y2x1ZGUKfTsKCmVudW0gY2xhc3MgSlNPYmplY3RQ
cm9wZXJ0aWVzTW9kZSB7CiAgICBJbmNsdWRlLAogICAgRXhjbHVkZQp9OwoKY2xhc3MgRW51bWVy
YXRpb25Nb2RlIHsKcHVibGljOgogICAgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGll
c01vZGUgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSA9IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4
Y2x1ZGUsIEpTT2JqZWN0UHJvcGVydGllc01vZGUganNPYmplY3RQcm9wZXJ0aWVzTW9kZSA9IEpT
T2JqZWN0UHJvcGVydGllc01vZGU6OkluY2x1ZGUpCiAgICAgICAgOiBtX2RvbnRFbnVtUHJvcGVy
dGllc01vZGUoZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKICAgICAgICAsIG1fanNPYmplY3RQcm9w
ZXJ0aWVzTW9kZShqc09iamVjdFByb3BlcnRpZXNNb2RlKQogICAgewogICAgfQoKICAgIEVudW1l
cmF0aW9uTW9kZShjb25zdCBFbnVtZXJhdGlvbk1vZGUmIG1vZGUsIEpTT2JqZWN0UHJvcGVydGll
c01vZGUganNPYmplY3RQcm9wZXJ0aWVzTW9kZSkKICAgICAgICA6IG1fZG9udEVudW1Qcm9wZXJ0
aWVzTW9kZShtb2RlLm1fZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKICAgICAgICAsIG1fanNPYmpl
Y3RQcm9wZXJ0aWVzTW9kZShqc09iamVjdFByb3BlcnRpZXNNb2RlKQogICAgewogICAgfQoKCgog
ICAgYm9vbCBpbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkKICAgIHsKICAgICAgICByZXR1cm4g
bV9kb250RW51bVByb3BlcnRpZXNNb2RlID09IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1
ZGU7CiAgICB9CgogICAgYm9vbCBpbmNsdWRlSlNPYmplY3RQcm9wZXJ0aWVzKCkKICAgIHsKICAg
ICAgICByZXR1cm4gbV9qc09iamVjdFByb3BlcnRpZXNNb2RlID09IEpTT2JqZWN0UHJvcGVydGll
c01vZGU6OkluY2x1ZGU7CiAgICB9Cgpwcml2YXRlOgogICAgRG9udEVudW1Qcm9wZXJ0aWVzTW9k
ZSBtX2RvbnRFbnVtUHJvcGVydGllc01vZGU7CiAgICBKU09iamVjdFByb3BlcnRpZXNNb2RlIG1f
anNPYmplY3RQcm9wZXJ0aWVzTW9kZTsKfTsKCn0KIyAzMCAiLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgiIDIKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5kZXhpbmdUeXBlLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5kZXhpbmdUeXBlLmgiCiNkZWZpbmUgSW5kZXhpbmdUeXBlX2ggCgoj
IDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
IiAxCiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVk
VHlwZS5oIgojZGVmaW5lIFNwZWN1bGF0ZWRUeXBlX2ggCgoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5VHlwZS5oIiAxCiMgMjcgIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlUeXBlLmgiCiNkZWZpbmUgVHlwZWRB
cnJheVR5cGVfaCAKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmgiIDEKIyAyMiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
LmgiCiNkZWZpbmUgSlNUeXBlX2ggCgpuYW1lc3BhY2UgSlNDIHsKCmVudW0gSlNUeXBlIDogdWlu
dDhfdCB7CiAgICBVbnNwZWNpZmllZFR5cGUsCiAgICBVbmRlZmluZWRUeXBlLAogICAgQm9vbGVh
blR5cGUsCiAgICBOdW1iZXJUeXBlLAogICAgTnVsbFR5cGUsCgoKICAgIENlbGxUeXBlLAogICAg
U3RyaW5nVHlwZSwKICAgIFN5bWJvbFR5cGUsCgogICAgQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSwK
ICAgIEFQSVZhbHVlV3JhcHBlclR5cGUsCgogICAgRXZhbEV4ZWN1dGFibGVUeXBlLAogICAgUHJv
Z3JhbUV4ZWN1dGFibGVUeXBlLAogICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBlLAogICAg
RnVuY3Rpb25FeGVjdXRhYmxlVHlwZSwKICAgIFdlYkFzc2VtYmx5RXhlY3V0YWJsZVR5cGUsCgog
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVUeXBlLAogICAgVW5saW5rZWRQcm9ncmFtQ29k
ZUJsb2NrVHlwZSwKICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1R5cGUsCiAgICBV
bmxpbmtlZEV2YWxDb2RlQmxvY2tUeXBlLAogICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1R5
cGUsCgoKICAgIE9iamVjdFR5cGUsCiAgICBGaW5hbE9iamVjdFR5cGUsCiAgICBKU0NhbGxlZVR5
cGUsCiAgICBKU0Z1bmN0aW9uVHlwZSwKICAgIE51bWJlck9iamVjdFR5cGUsCiAgICBFcnJvcklu
c3RhbmNlVHlwZSwKICAgIFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlLAogICAgSW1wdXJlUHJveHlU
eXBlLAogICAgV2l0aFNjb3BlVHlwZSwKICAgIERpcmVjdEFyZ3VtZW50c1R5cGUsCiAgICBTY29w
ZWRBcmd1bWVudHNUeXBlLAoKICAgIEludDhBcnJheVR5cGUsCiAgICBJbnQxNkFycmF5VHlwZSwK
ICAgIEludDMyQXJyYXlUeXBlLAogICAgVWludDhBcnJheVR5cGUsCiAgICBVaW50OENsYW1wZWRB
cnJheVR5cGUsCiAgICBVaW50MTZBcnJheVR5cGUsCiAgICBVaW50MzJBcnJheVR5cGUsCiAgICBG
bG9hdDMyQXJyYXlUeXBlLAogICAgRmxvYXQ2NEFycmF5VHlwZSwKICAgIERhdGFWaWV3VHlwZSwK
CiAgICBHZXR0ZXJTZXR0ZXJUeXBlLAogICAgR2xvYmFsT2JqZWN0VHlwZSwKICAgIExleGljYWxF
bnZpcm9ubWVudFR5cGUsCiAgICBHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRUeXBlLAogICAgTW9k
dWxlRW52aXJvbm1lbnRUeXBlLAogICAgUmVnRXhwT2JqZWN0VHlwZSwKICAgIFByb3h5T2JqZWN0
VHlwZSwKCiAgICBMYXN0SlNDT2JqZWN0VHlwZSA9IFByb3h5T2JqZWN0VHlwZSwKfTsKCnN0YXRp
Y19hc3NlcnQoKHNpemVvZihKU1R5cGUpID09IHNpemVvZih1aW50OF90KSksICJzaXplb2ZfanN0
eXBlX2lzX29uZV9ieXRlIik7Cgp9CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVkQXJyYXlUeXBlLmgiIDIKCgpuYW1lc3BhY2UgSlNDIHsKCnN0cnVjdCBDbGFz
c0luZm87CgplbnVtIFR5cGVkQXJyYXlUeXBlIHsKICAgIE5vdFR5cGVkQXJyYXksCiAgICBUeXBl
SW50OCwKICAgIFR5cGVVaW50OCwKICAgIFR5cGVVaW50OENsYW1wZWQsCiAgICBUeXBlSW50MTYs
CiAgICBUeXBlVWludDE2LAogICAgVHlwZUludDMyLAogICAgVHlwZVVpbnQzMiwKICAgIFR5cGVG
bG9hdDMyLAogICAgVHlwZUZsb2F0NjQsCiAgICBUeXBlRGF0YVZpZXcKfTsKCiNkZWZpbmUgTlVN
QkVSX09GX1RZUEVEX0FSUkFZX1RZUEVTIFR5cGVEYXRhVmlldwoKaW5saW5lIHVuc2lnbmVkIHRv
SW5kZXgoVHlwZWRBcnJheVR5cGUgdHlwZSkKewogICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPih0eXBlKSAtIDE7Cn0KCmlubGluZSBUeXBlZEFycmF5VHlwZSBpbmRleFRvVHlwZWRBcnJh
eVR5cGUodW5zaWduZWQgaW5kZXgpCnsKICAgIFR5cGVkQXJyYXlUeXBlIHJlc3VsdCA9IHN0YXRp
Y19jYXN0PFR5cGVkQXJyYXlUeXBlPihpbmRleCArIDEpOwogICAgKCh2b2lkKTApOwogICAgcmV0
dXJuIHJlc3VsdDsKfQoKaW5saW5lIGJvb2wgaXNUeXBlZFZpZXcoVHlwZWRBcnJheVR5cGUgdHlw
ZSkKewogICAgc3dpdGNoICh0eXBlKSB7CiAgICBjYXNlIE5vdFR5cGVkQXJyYXk6CiAgICBjYXNl
IFR5cGVEYXRhVmlldzoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICBkZWZhdWx0OgogICAgICAg
IHJldHVybiB0cnVlOwogICAgfQp9CgppbmxpbmUgdW5zaWduZWQgbG9nRWxlbWVudFNpemUoVHlw
ZWRBcnJheVR5cGUgdHlwZSkKewogICAgc3dpdGNoICh0eXBlKSB7CiAgICBjYXNlIE5vdFR5cGVk
QXJyYXk6CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIFR5cGVJbnQ4OgogICAgY2FzZSBUeXBlVWlu
dDg6CiAgICBjYXNlIFR5cGVVaW50OENsYW1wZWQ6CiAgICBjYXNlIFR5cGVEYXRhVmlldzoKICAg
ICAgICByZXR1cm4gMDsKICAgIGNhc2UgVHlwZUludDE2OgogICAgY2FzZSBUeXBlVWludDE2Ogog
ICAgICAgIHJldHVybiAxOwogICAgY2FzZSBUeXBlSW50MzI6CiAgICBjYXNlIFR5cGVVaW50MzI6
CiAgICBjYXNlIFR5cGVGbG9hdDMyOgogICAgICAgIHJldHVybiAyOwogICAgY2FzZSBUeXBlRmxv
YXQ2NDoKICAgICAgICByZXR1cm4gMzsKICAgIH0KICAgIFdURkNyYXNoKCk7CiAgICByZXR1cm4g
MDsKfQoKaW5saW5lIHNpemVfdCBlbGVtZW50U2l6ZShUeXBlZEFycmF5VHlwZSB0eXBlKQp7CiAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSA8PCBsb2dFbGVtZW50U2l6ZSh0eXBlKTsK
fQoKY29uc3QgQ2xhc3NJbmZvKiBjb25zdHJ1Y3RvckNsYXNzSW5mb0ZvclR5cGUoVHlwZWRBcnJh
eVR5cGUpOwpKU1R5cGUgdHlwZUZvclR5cGVkQXJyYXlUeXBlKFR5cGVkQXJyYXlUeXBlKTsKCmlu
bGluZSBib29sIGlzSW50KFR5cGVkQXJyYXlUeXBlIHR5cGUpCnsKICAgIHN3aXRjaCAodHlwZSkg
ewogICAgY2FzZSBUeXBlSW50ODoKICAgIGNhc2UgVHlwZVVpbnQ4OgogICAgY2FzZSBUeXBlVWlu
dDhDbGFtcGVkOgogICAgY2FzZSBUeXBlSW50MTY6CiAgICBjYXNlIFR5cGVVaW50MTY6CiAgICBj
YXNlIFR5cGVJbnQzMjoKICAgIGNhc2UgVHlwZVVpbnQzMjoKICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgIGRlZmF1bHQ6CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9CgppbmxpbmUgYm9vbCBp
c0Zsb2F0KFR5cGVkQXJyYXlUeXBlIHR5cGUpCnsKICAgIHN3aXRjaCAodHlwZSkgewogICAgY2Fz
ZSBUeXBlRmxvYXQzMjoKICAgIGNhc2UgVHlwZUZsb2F0NjQ6CiAgICAgICAgcmV0dXJuIHRydWU7
CiAgICBkZWZhdWx0OgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfQoKaW5saW5lIGJvb2wg
aXNTaWduZWQoVHlwZWRBcnJheVR5cGUgdHlwZSkKewogICAgc3dpdGNoICh0eXBlKSB7CiAgICBj
YXNlIFR5cGVJbnQ4OgogICAgY2FzZSBUeXBlSW50MTY6CiAgICBjYXNlIFR5cGVJbnQzMjoKICAg
IGNhc2UgVHlwZUZsb2F0MzI6CiAgICBjYXNlIFR5cGVGbG9hdDY0OgogICAgICAgIHJldHVybiB0
cnVlOwogICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0KCmlubGluZSBi
b29sIGlzQ2xhbXBlZChUeXBlZEFycmF5VHlwZSB0eXBlKQp7CiAgICByZXR1cm4gdHlwZSA9PSBU
eXBlVWludDhDbGFtcGVkOwp9Cgp9CgpuYW1lc3BhY2UgV1RGIHsKCnZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYsIEpTQzo6VHlwZWRBcnJheVR5cGUpOwoKfQojIDM0ICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCIgMgoKCm5hbWVzcGFj
ZSBKU0MgewoKY2xhc3MgU3RydWN0dXJlOwoKdHlwZWRlZiB1aW50MzJfdCBTcGVjdWxhdGVkVHlw
ZTsKc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNOb25lID0gMDsKc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNGaW5hbE9iamVjdCA9IDF1IDw8IDA7CnN0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjQXJyYXkgPSAxdSA8PCAxOwpzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0Z1bmN0aW9uID0gMXUgPDwgMjsKc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNJbnQ4QXJyYXkgPSAxdSA8PCAzOwpzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0ludDE2QXJyYXkgPSAxdSA8PCA0OwpzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0lu
dDMyQXJyYXkgPSAxdSA8PCA1OwpzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQ4
QXJyYXkgPSAxdSA8PCA2OwpzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQ4Q2xh
bXBlZEFycmF5ID0gMXUgPDwgNzsKc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNVaW50
MTZBcnJheSA9IDF1IDw8IDg7CnN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDMy
QXJyYXkgPSAxdSA8PCA5OwpzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Zsb2F0MzJB
cnJheSA9IDF1IDw8IDEwOwpzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Zsb2F0NjRB
cnJheSA9IDF1IDw8IDExOwpzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1R5cGVkQXJy
YXlWaWV3ID0gU3BlY0ludDhBcnJheSB8IFNwZWNJbnQxNkFycmF5IHwgU3BlY0ludDMyQXJyYXkg
fCBTcGVjVWludDhBcnJheSB8IFNwZWNVaW50OENsYW1wZWRBcnJheSB8IFNwZWNVaW50MTZBcnJh
eSB8IFNwZWNVaW50MzJBcnJheSB8IFNwZWNGbG9hdDMyQXJyYXkgfCBTcGVjRmxvYXQ2NEFycmF5
OwpzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RpcmVjdEFyZ3VtZW50cyA9IDF1IDw8
IDEyOwpzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1Njb3BlZEFyZ3VtZW50cyA9IDF1
IDw8IDEzOwpzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ09iamVjdCA9IDF1
IDw8IDE0OwpzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1JlZ0V4cE9iamVjdCA9IDF1
IDw8IDE1OwpzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdE90aGVyID0gMXUg
PDwgMTY7CnN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0ID0gU3BlY0ZpbmFs
T2JqZWN0IHwgU3BlY0FycmF5IHwgU3BlY0Z1bmN0aW9uIHwgU3BlY1R5cGVkQXJyYXlWaWV3IHwg
U3BlY0RpcmVjdEFyZ3VtZW50cyB8IFNwZWNTY29wZWRBcmd1bWVudHMgfCBTcGVjU3RyaW5nT2Jq
ZWN0IHwgU3BlY1JlZ0V4cE9iamVjdCB8IFNwZWNPYmplY3RPdGhlcjsKc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdJZGVudCA9IDF1IDw8IDE3OwpzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY1N0cmluZ1ZhciA9IDF1IDw8IDE4OwpzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY1N0cmluZyA9IFNwZWNTdHJpbmdJZGVudCB8IFNwZWNTdHJpbmdWYXI7CnN0
YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3ltYm9sID0gMXUgPDwgMTk7CnN0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbE90aGVyID0gMXUgPDwgMjA7CnN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCA9IFNwZWNPYmplY3QgfCBTcGVjU3RyaW5nIHwgU3Bl
Y1N5bWJvbCB8IFNwZWNDZWxsT3RoZXI7CnN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
Qm9vbEludDMyID0gMXUgPDwgMjE7CnN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTm9u
Qm9vbEludDMyID0gMXUgPDwgMjI7CnN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50
MzJPbmx5ID0gU3BlY0Jvb2xJbnQzMiB8IFNwZWNOb25Cb29sSW50MzI7CnN0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjSW50NTJPbmx5ID0gMXUgPDwgMjM7CnN0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjQW55SW50ID0gU3BlY0ludDMyT25seSB8IFNwZWNJbnQ1Mk9ubHk7CnN0
YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQW55SW50QXNEb3VibGUgPSAxdSA8PCAyNDsK
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNOb25JbnRBc0RvdWJsZSA9IDF1IDw8IDI1
OwpzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZVJlYWwgPSBTcGVjTm9uSW50
QXNEb3VibGUgfCBTcGVjQW55SW50QXNEb3VibGU7CnN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjRG91YmxlUHVyZU5hTiA9IDF1IDw8IDI2OwpzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0RvdWJsZUltcHVyZU5hTiA9IDF1IDw8IDI3OwpzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0RvdWJsZU5hTiA9IFNwZWNEb3VibGVQdXJlTmFOIHwgU3BlY0RvdWJsZUltcHVy
ZU5hTjsKc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZURvdWJsZSA9IFNw
ZWNEb3VibGVSZWFsIHwgU3BlY0RvdWJsZVB1cmVOYU47CnN0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjRnVsbERvdWJsZSA9IFNwZWNEb3VibGVSZWFsIHwgU3BlY0RvdWJsZU5hTjsKc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVJlYWxOdW1iZXIgPSBTcGVjSW50
MzJPbmx5IHwgU3BlY0RvdWJsZVJlYWw7CnN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
RnVsbFJlYWxOdW1iZXIgPSBTcGVjQW55SW50IHwgU3BlY0RvdWJsZVJlYWw7CnN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVOdW1iZXIgPSBTcGVjSW50MzJPbmx5IHwgU3Bl
Y0J5dGVjb2RlRG91YmxlOwpzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxOdW1i
ZXIgPSBTcGVjQW55SW50IHwgU3BlY0Z1bGxEb3VibGU7CnN0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjQm9vbGVhbiA9IDF1IDw8IDI4OwpzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY090aGVyID0gMXUgPDwgMjk7CnN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTWlz
YyA9IFNwZWNCb29sZWFuIHwgU3BlY090aGVyOwpzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0hlYXBUb3AgPSBTcGVjQ2VsbCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNNaXNjOwpz
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1ByaW1pdGl2ZSA9IFNwZWNTdHJpbmcgfCBT
cGVjU3ltYm9sIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7CnN0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjRW1wdHkgPSAxdSA8PCAzMDsKc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNCeXRlY29kZVRvcCA9IFNwZWNIZWFwVG9wIHwgU3BlY0VtcHR5OwpzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxUb3AgPSBTcGVjQnl0ZWNvZGVUb3AgfCBTcGVj
RnVsbE51bWJlcjsKCnR5cGVkZWYgYm9vbCAoKlNwZWN1bGF0ZWRUeXBlQ2hlY2tlcikoU3BlY3Vs
YXRlZFR5cGUpOwoKCmlubGluZSBib29sIGlzQW55U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUp
CnsKICAgIHJldHVybiB0cnVlOwp9CgppbmxpbmUgYm9vbCBpc0NlbGxTcGVjdWxhdGlvbihTcGVj
dWxhdGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0NlbGwpICYmICEo
dmFsdWUgJiB+U3BlY0NlbGwpOwp9CgppbmxpbmUgYm9vbCBpc0NlbGxPck90aGVyU3BlY3VsYXRp
b24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCnsKICAgIHJldHVybiAhIXZhbHVlICYmICEodmFsdWUg
JiB+KFNwZWNDZWxsIHwgU3BlY090aGVyKSk7Cn0KCmlubGluZSBib29sIGlzTm90Q2VsbFNwZWN1
bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQp7CiAgICByZXR1cm4gISh2YWx1ZSAmIFNwZWND
ZWxsKSAmJiB2YWx1ZTsKfQoKaW5saW5lIGJvb2wgaXNPYmplY3RTcGVjdWxhdGlvbihTcGVjdWxh
dGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY09iamVjdCkgJiYgISh2
YWx1ZSAmIH5TcGVjT2JqZWN0KTsKfQoKaW5saW5lIGJvb2wgaXNPYmplY3RPck90aGVyU3BlY3Vs
YXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCnsKICAgIHJldHVybiAhISh2YWx1ZSAmIChTcGVj
T2JqZWN0IHwgU3BlY090aGVyKSkgJiYgISh2YWx1ZSAmIH4oU3BlY09iamVjdCB8IFNwZWNPdGhl
cikpOwp9CgppbmxpbmUgYm9vbCBpc0ZpbmFsT2JqZWN0U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCnsKICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjRmluYWxPYmplY3Q7Cn0KCmlubGlu
ZSBib29sIGlzRmluYWxPYmplY3RPck90aGVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFs
dWUpCnsKICAgIHJldHVybiAhISh2YWx1ZSAmIChTcGVjRmluYWxPYmplY3QgfCBTcGVjT3RoZXIp
KSAmJiAhKHZhbHVlICYgfihTcGVjRmluYWxPYmplY3QgfCBTcGVjT3RoZXIpKTsKfQoKaW5saW5l
IGJvb2wgaXNTdHJpbmdJZGVudFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQp7CiAg
ICByZXR1cm4gdmFsdWUgPT0gU3BlY1N0cmluZ0lkZW50Owp9CgppbmxpbmUgYm9vbCBpc05vdFN0
cmluZ1ZhclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQp7CiAgICByZXR1cm4gISh2
YWx1ZSAmIFNwZWNTdHJpbmdWYXIpOwp9CgppbmxpbmUgYm9vbCBpc1N0cmluZ1NwZWN1bGF0aW9u
KFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQp7CiAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBT
cGVjU3RyaW5nKSA9PSB2YWx1ZTsKfQoKaW5saW5lIGJvb2wgaXNTdHJpbmdPck90aGVyU3BlY3Vs
YXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCnsKICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1
ZSAmIChTcGVjU3RyaW5nIHwgU3BlY090aGVyKSkgPT0gdmFsdWU7Cn0KCmlubGluZSBib29sIGlz
U3ltYm9sU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCnsKICAgIHJldHVybiB2YWx1
ZSA9PSBTcGVjU3ltYm9sOwp9CgppbmxpbmUgYm9vbCBpc0FycmF5U3BlY3VsYXRpb24oU3BlY3Vs
YXRlZFR5cGUgdmFsdWUpCnsKICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQXJyYXk7Cn0KCmlubGlu
ZSBib29sIGlzRnVuY3Rpb25TcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKewogICAg
cmV0dXJuIHZhbHVlID09IFNwZWNGdW5jdGlvbjsKfQoKaW5saW5lIGJvb2wgaXNJbnQ4QXJyYXlT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJuIHZhbHVlID09IFNw
ZWNJbnQ4QXJyYXk7Cn0KCmlubGluZSBib29sIGlzSW50MTZBcnJheVNwZWN1bGF0aW9uKFNwZWN1
bGF0ZWRUeXBlIHZhbHVlKQp7CiAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0ludDE2QXJyYXk7Cn0K
CmlubGluZSBib29sIGlzSW50MzJBcnJheVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQp7CiAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0ludDMyQXJyYXk7Cn0KCmlubGluZSBib29sIGlz
VWludDhBcnJheVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQp7CiAgICByZXR1cm4g
dmFsdWUgPT0gU3BlY1VpbnQ4QXJyYXk7Cn0KCmlubGluZSBib29sIGlzVWludDhDbGFtcGVkQXJy
YXlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJuIHZhbHVlID09
IFNwZWNVaW50OENsYW1wZWRBcnJheTsKfQoKaW5saW5lIGJvb2wgaXNVaW50MTZBcnJheVNwZWN1
bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQp7CiAgICByZXR1cm4gdmFsdWUgPT0gU3BlY1Vp
bnQxNkFycmF5Owp9CgppbmxpbmUgYm9vbCBpc1VpbnQzMkFycmF5U3BlY3VsYXRpb24oU3BlY3Vs
YXRlZFR5cGUgdmFsdWUpCnsKICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjVWludDMyQXJyYXk7Cn0K
CmlubGluZSBib29sIGlzRmxvYXQzMkFycmF5U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFs
dWUpCnsKICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjRmxvYXQzMkFycmF5Owp9CgppbmxpbmUgYm9v
bCBpc0Zsb2F0NjRBcnJheVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQp7CiAgICBy
ZXR1cm4gdmFsdWUgPT0gU3BlY0Zsb2F0NjRBcnJheTsKfQoKaW5saW5lIGJvb2wgaXNEaXJlY3RB
cmd1bWVudHNTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJuIHZh
bHVlID09IFNwZWNEaXJlY3RBcmd1bWVudHM7Cn0KCmlubGluZSBib29sIGlzU2NvcGVkQXJndW1l
bnRzU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCnsKICAgIHJldHVybiB2YWx1ZSA9
PSBTcGVjU2NvcGVkQXJndW1lbnRzOwp9CgppbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVJbnRNdXRh
YmxlQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJuIGlz
SW50OEFycmF5U3BlY3VsYXRpb24odmFsdWUpCiAgICAgICAgfHwgaXNJbnQxNkFycmF5U3BlY3Vs
YXRpb24odmFsdWUpCiAgICAgICAgfHwgaXNJbnQzMkFycmF5U3BlY3VsYXRpb24odmFsdWUpCiAg
ICAgICAgfHwgaXNVaW50OEFycmF5U3BlY3VsYXRpb24odmFsdWUpCiAgICAgICAgfHwgaXNVaW50
OENsYW1wZWRBcnJheVNwZWN1bGF0aW9uKHZhbHVlKQogICAgICAgIHx8IGlzVWludDE2QXJyYXlT
cGVjdWxhdGlvbih2YWx1ZSkKICAgICAgICB8fCBpc1VpbnQzMkFycmF5U3BlY3VsYXRpb24odmFs
dWUpOwp9CgppbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVGbG9hdE11dGFibGVBcnJheVNwZWN1bGF0
aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQp7CiAgICByZXR1cm4gaXNGbG9hdDMyQXJyYXlTcGVj
dWxhdGlvbih2YWx1ZSkKICAgICAgICB8fCBpc0Zsb2F0NjRBcnJheVNwZWN1bGF0aW9uKHZhbHVl
KTsKfQoKaW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlVHlwZWRNdXRhYmxlQXJyYXlTcGVjdWxhdGlv
bihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJuIGlzQWN0aW9uYWJsZUludE11dGFi
bGVBcnJheVNwZWN1bGF0aW9uKHZhbHVlKQogICAgICAgIHx8IGlzQWN0aW9uYWJsZUZsb2F0TXV0
YWJsZUFycmF5U3BlY3VsYXRpb24odmFsdWUpOwp9CgppbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVN
dXRhYmxlQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJu
IGlzQXJyYXlTcGVjdWxhdGlvbih2YWx1ZSkKICAgICAgICB8fCBpc0FjdGlvbmFibGVUeXBlZE11
dGFibGVBcnJheVNwZWN1bGF0aW9uKHZhbHVlKTsKfQoKaW5saW5lIGJvb2wgaXNBY3Rpb25hYmxl
QXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJuIGlzU3Ry
aW5nU3BlY3VsYXRpb24odmFsdWUpCiAgICAgICAgfHwgaXNEaXJlY3RBcmd1bWVudHNTcGVjdWxh
dGlvbih2YWx1ZSkKICAgICAgICB8fCBpc1Njb3BlZEFyZ3VtZW50c1NwZWN1bGF0aW9uKHZhbHVl
KQogICAgICAgIHx8IGlzQWN0aW9uYWJsZU11dGFibGVBcnJheVNwZWN1bGF0aW9uKHZhbHVlKTsK
fQoKaW5saW5lIGJvb2wgaXNBcnJheU9yT3RoZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKewogICAgcmV0dXJuICEhKHZhbHVlICYgKFNwZWNBcnJheSB8IFNwZWNPdGhlcikpICYm
ICEodmFsdWUgJiB+KFNwZWNBcnJheSB8IFNwZWNPdGhlcikpOwp9CgppbmxpbmUgYm9vbCBpc1N0
cmluZ09iamVjdFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQp7CiAgICByZXR1cm4g
dmFsdWUgPT0gU3BlY1N0cmluZ09iamVjdDsKfQoKaW5saW5lIGJvb2wgaXNTdHJpbmdPclN0cmlu
Z09iamVjdFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQp7CiAgICByZXR1cm4gISF2
YWx1ZSAmJiAhKHZhbHVlICYgfihTcGVjU3RyaW5nIHwgU3BlY1N0cmluZ09iamVjdCkpOwp9Cgpp
bmxpbmUgYm9vbCBpc1JlZ0V4cE9iamVjdFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQp7CiAgICByZXR1cm4gdmFsdWUgPT0gU3BlY1JlZ0V4cE9iamVjdDsKfQoKaW5saW5lIGJvb2wg
aXNCb29sSW50MzJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJu
IHZhbHVlID09IFNwZWNCb29sSW50MzI7Cn0KCmlubGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlv
bihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJuIHZhbHVlICYmICEodmFsdWUgJiB+
U3BlY0ludDMyT25seSk7Cn0KCmlubGluZSBib29sIGlzSW50MzJPckJvb2xlYW5TcGVjdWxhdGlv
bihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJuIHZhbHVlICYmICEodmFsdWUgJiB+
KFNwZWNCb29sZWFuIHwgU3BlY0ludDMyT25seSkpOwp9CgppbmxpbmUgYm9vbCBpc0ludDMyU3Bl
Y3VsYXRpb25Gb3JBcml0aG1ldGljKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQp7CiAgICByZXR1cm4g
ISh2YWx1ZSAmIChTcGVjRnVsbERvdWJsZSB8IFNwZWNJbnQ1Mk9ubHkpKTsKfQoKaW5saW5lIGJv
b2wgaXNJbnQzMk9yQm9vbGVhblNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhTcGVjdWxhdGVkVHlw
ZSB2YWx1ZSkKewogICAgcmV0dXJuICEodmFsdWUgJiAoU3BlY0Z1bGxEb3VibGUgfCBTcGVjSW50
NTJPbmx5KSk7Cn0KCmlubGluZSBib29sIGlzSW50MzJPckJvb2xlYW5TcGVjdWxhdGlvbkV4cGVj
dGluZ0RlZmluZWQoU3BlY3VsYXRlZFR5cGUgdmFsdWUpCnsKICAgIHJldHVybiBpc0ludDMyT3JC
b29sZWFuU3BlY3VsYXRpb24odmFsdWUgJiB+U3BlY090aGVyKTsKfQoKaW5saW5lIGJvb2wgaXNJ
bnQ1MlNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQp7CiAgICByZXR1cm4gdmFsdWUg
PT0gU3BlY0ludDUyT25seTsKfQoKaW5saW5lIGJvb2wgaXNBbnlJbnRTcGVjdWxhdGlvbihTcGVj
dWxhdGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJuICEhdmFsdWUgJiYgKHZhbHVlICYgU3BlY0Fu
eUludCkgPT0gdmFsdWU7Cn0KCmlubGluZSBib29sIGlzQW55SW50QXNEb3VibGVTcGVjdWxhdGlv
bihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJuIHZhbHVlID09IFNwZWNBbnlJbnRB
c0RvdWJsZTsKfQoKaW5saW5lIGJvb2wgaXNEb3VibGVSZWFsU3BlY3VsYXRpb24oU3BlY3VsYXRl
ZFR5cGUgdmFsdWUpCnsKICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIFNwZWNEb3VibGVS
ZWFsKSA9PSB2YWx1ZTsKfQoKaW5saW5lIGJvb2wgaXNEb3VibGVTcGVjdWxhdGlvbihTcGVjdWxh
dGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJuICEhdmFsdWUgJiYgKHZhbHVlICYgU3BlY0Z1bGxE
b3VibGUpID09IHZhbHVlOwp9CgppbmxpbmUgYm9vbCBpc0RvdWJsZVNwZWN1bGF0aW9uRm9yQXJp
dGhtZXRpYyhTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJuICEhKHZhbHVlICYgU3Bl
Y0Z1bGxEb3VibGUpOwp9CgppbmxpbmUgYm9vbCBpc0J5dGVjb2RlUmVhbE51bWJlclNwZWN1bGF0
aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQp7CiAgICByZXR1cm4gISEodmFsdWUgJiBTcGVjQnl0
ZWNvZGVSZWFsTnVtYmVyKSAmJiAhKHZhbHVlICYgflNwZWNCeXRlY29kZVJlYWxOdW1iZXIpOwp9
CgppbmxpbmUgYm9vbCBpc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUg
dmFsdWUpCnsKICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNGdWxsUmVhbE51bWJlcikgJiYgISh2
YWx1ZSAmIH5TcGVjRnVsbFJlYWxOdW1iZXIpOwp9CgppbmxpbmUgYm9vbCBpc0J5dGVjb2RlTnVt
YmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCnsKICAgIHJldHVybiAhISh2YWx1
ZSAmIFNwZWNCeXRlY29kZU51bWJlcikgJiYgISh2YWx1ZSAmIH5TcGVjQnl0ZWNvZGVOdW1iZXIp
Owp9CgppbmxpbmUgYm9vbCBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKewogICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0Z1bGxOdW1iZXIpICYmICEodmFsdWUg
JiB+U3BlY0Z1bGxOdW1iZXIpOwp9CgppbmxpbmUgYm9vbCBpc0Z1bGxOdW1iZXJPckJvb2xlYW5T
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJuIHZhbHVlICYmICEo
dmFsdWUgJiB+KFNwZWNGdWxsTnVtYmVyIHwgU3BlY0Jvb2xlYW4pKTsKfQoKaW5saW5lIGJvb2wg
aXNGdWxsTnVtYmVyT3JCb29sZWFuU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKFNwZWN1bGF0
ZWRUeXBlIHZhbHVlKQp7CiAgICByZXR1cm4gaXNGdWxsTnVtYmVyT3JCb29sZWFuU3BlY3VsYXRp
b24odmFsdWUgJiB+U3BlY090aGVyKTsKfQoKaW5saW5lIGJvb2wgaXNCb29sZWFuU3BlY3VsYXRp
b24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCnsKICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQm9vbGVh
bjsKfQoKaW5saW5lIGJvb2wgaXNPdGhlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQp7CiAgICByZXR1cm4gdmFsdWUgPT0gU3BlY090aGVyOwp9CgppbmxpbmUgYm9vbCBpc01pc2NT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKewogICAgcmV0dXJuICEhdmFsdWUgJiYg
ISh2YWx1ZSAmIH5TcGVjTWlzYyk7Cn0KCmlubGluZSBib29sIGlzT3RoZXJPckVtcHR5U3BlY3Vs
YXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCnsKICAgIHJldHVybiAhdmFsdWUgfHwgdmFsdWUg
PT0gU3BlY090aGVyOwp9CgppbmxpbmUgYm9vbCBpc0VtcHR5U3BlY3VsYXRpb24oU3BlY3VsYXRl
ZFR5cGUgdmFsdWUpCnsKICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjRW1wdHk7Cn0KCmlubGluZSBi
b29sIGlzVW50eXBlZFNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKewogICAgcmV0dXJuICEhKHZhbHVlICYgfihTcGVjRnVsbE51bWJlciB8IFNwZWNCb29sZWFu
KSk7Cn0KCmlubGluZSBib29sIGlzVW50eXBlZFNwZWN1bGF0aW9uRm9yQml0T3BzKFNwZWN1bGF0
ZWRUeXBlIHZhbHVlKQp7CiAgICByZXR1cm4gISEodmFsdWUgJiB+KFNwZWNGdWxsTnVtYmVyIHwg
U3BlY0Jvb2xlYW4gfCBTcGVjT3RoZXIpKTsKfQoKdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRT
dHJlYW0mLCBTcGVjdWxhdGVkVHlwZSk7CnZvaWQgZHVtcFNwZWN1bGF0aW9uQWJicmV2aWF0ZWQo
UHJpbnRTdHJlYW0mLCBTcGVjdWxhdGVkVHlwZSk7CgpjbGFzcyBTcGVjdWxhdGlvbkR1bXAgeyBw
dWJsaWM6IFNwZWN1bGF0aW9uRHVtcChjb25zdCBTcGVjdWxhdGVkVHlwZSYgdmFsdWUpIDogbV92
YWx1ZSh2YWx1ZSkgeyB9IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdCB7IGR1bXBT
cGVjdWxhdGlvbihvdXQsIG1fdmFsdWUpOyB9IHByaXZhdGU6IFNwZWN1bGF0ZWRUeXBlIG1fdmFs
dWU7IH07CmNsYXNzIEFiYnJldmlhdGVkU3BlY3VsYXRpb25EdW1wIHsgcHVibGljOiBBYmJyZXZp
YXRlZFNwZWN1bGF0aW9uRHVtcChjb25zdCBTcGVjdWxhdGVkVHlwZSYgdmFsdWUpIDogbV92YWx1
ZSh2YWx1ZSkgeyB9IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdCB7IGR1bXBTcGVj
dWxhdGlvbkFiYnJldmlhdGVkKG91dCwgbV92YWx1ZSk7IH0gcHJpdmF0ZTogU3BlY3VsYXRlZFR5
cGUgbV92YWx1ZTsgfTsKCgoKCgppbmxpbmUgU3BlY3VsYXRlZFR5cGUgbWVyZ2VTcGVjdWxhdGlv
bnMoU3BlY3VsYXRlZFR5cGUgbGVmdCwgU3BlY3VsYXRlZFR5cGUgcmlnaHQpCnsKICAgIHJldHVy
biBsZWZ0IHwgcmlnaHQ7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmlubGluZSBib29sIG1lcmdl
U3BlY3VsYXRpb24oVCYgbGVmdCwgU3BlY3VsYXRlZFR5cGUgcmlnaHQpCnsKICAgIFNwZWN1bGF0
ZWRUeXBlIG5ld1NwZWN1bGF0aW9uID0gc3RhdGljX2Nhc3Q8VD4obWVyZ2VTcGVjdWxhdGlvbnMo
c3RhdGljX2Nhc3Q8U3BlY3VsYXRlZFR5cGU+KGxlZnQpLCByaWdodCkpOwogICAgYm9vbCByZXN1
bHQgPSBuZXdTcGVjdWxhdGlvbiAhPSBzdGF0aWNfY2FzdDxTcGVjdWxhdGVkVHlwZT4obGVmdCk7
CiAgICBsZWZ0ID0gbmV3U3BlY3VsYXRpb247CiAgICByZXR1cm4gcmVzdWx0Owp9CgppbmxpbmUg
Ym9vbCBzcGVjdWxhdGlvbkNoZWNrZWQoU3BlY3VsYXRlZFR5cGUgYWN0dWFsLCBTcGVjdWxhdGVk
VHlwZSBkZXNpcmVkKQp7CiAgICByZXR1cm4gKGFjdHVhbCB8IGRlc2lyZWQpID09IGRlc2lyZWQ7
Cn0KClNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUNsYXNzSW5mbyhjb25zdCBDbGFzc0lu
Zm8qKTsKU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKFN0cnVjdHVyZSop
OwpTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DZWxsKEpTQ2VsbCopOwpTcGVjdWxhdGVk
VHlwZSBzcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhbHVlKTsKClNwZWN1bGF0ZWRUeXBlIHNwZWN1
bGF0aW9uRnJvbVR5cGVkQXJyYXlUeXBlKFR5cGVkQXJyYXlUeXBlKTsKVHlwZWRBcnJheVR5cGUg
dHlwZWRBcnJheVR5cGVGcm9tU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUpOwoKU3BlY3VsYXRl
ZFR5cGUgbGVhc3RVcHBlckJvdW5kT2ZTdHJpY3RseUVxdWl2YWxlbnRTcGVjdWxhdGlvbnMoU3Bl
Y3VsYXRlZFR5cGUpOwoKYm9vbCB2YWx1ZXNDb3VsZEJlRXF1YWwoU3BlY3VsYXRlZFR5cGUsIFNw
ZWN1bGF0ZWRUeXBlKTsKCgoKClNwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZVN1bShTcGVjdWxh
dGVkVHlwZSwgU3BlY3VsYXRlZFR5cGUpOwpTcGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVEaWZm
ZXJlbmNlKFNwZWN1bGF0ZWRUeXBlLCBTcGVjdWxhdGVkVHlwZSk7ClNwZWN1bGF0ZWRUeXBlIHR5
cGVPZkRvdWJsZVByb2R1Y3QoU3BlY3VsYXRlZFR5cGUsIFNwZWN1bGF0ZWRUeXBlKTsKU3BlY3Vs
YXRlZFR5cGUgdHlwZU9mRG91YmxlUXVvdGllbnQoU3BlY3VsYXRlZFR5cGUsIFNwZWN1bGF0ZWRU
eXBlKTsKU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlTWluTWF4KFNwZWN1bGF0ZWRUeXBlLCBT
cGVjdWxhdGVkVHlwZSk7ClNwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZU5lZ2F0aW9uKFNwZWN1
bGF0ZWRUeXBlKTsKU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlQWJzKFNwZWN1bGF0ZWRUeXBl
KTsKU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlUm91bmRpbmcoU3BlY3VsYXRlZFR5cGUpOwpT
cGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVQb3coU3BlY3VsYXRlZFR5cGUsIFNwZWN1bGF0ZWRU
eXBlKTsKCgpTcGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVCaW5hcnlPcChTcGVjdWxhdGVkVHlw
ZSwgU3BlY3VsYXRlZFR5cGUpOwpTcGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVVbmFyeU9wKFNw
ZWN1bGF0ZWRUeXBlKTsKCn0KIyAzMCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW5kZXhpbmdUeXBlLmgiIDIKCgpuYW1lc3BhY2UgSlNDIHsKIyA1MCAiLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kZXhpbmdUeXBlLmgiCnR5cGVkZWYgdWludDhfdCBJ
bmRleGluZ1R5cGU7CgoKc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBJc0FycmF5ID0gMHgwMTsK
CgpzdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBlIEluZGV4aW5nU2hhcGVNYXNrID0gMHgwRTsKc3Rh
dGljIGNvbnN0IEluZGV4aW5nVHlwZSBOb0luZGV4aW5nU2hhcGUgPSAweDAwOwpzdGF0aWMgY29u
c3QgSW5kZXhpbmdUeXBlIFVuZGVjaWRlZFNoYXBlID0gMHgwMjsKc3RhdGljIGNvbnN0IEluZGV4
aW5nVHlwZSBJbnQzMlNoYXBlID0gMHgwNDsKc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBEb3Vi
bGVTaGFwZSA9IDB4MDY7CnN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgQ29udGlndW91c1NoYXBl
ID0gMHgwODsKc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBBcnJheVN0b3JhZ2VTaGFwZSA9IDB4
MEE7CnN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlID0g
MHgwQzsKCnN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgSW5kZXhpbmdTaGFwZVNoaWZ0ID0gMTsK
c3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzID0gNzsKCgoK
c3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyA9IDB4MTA7
CgoKc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBOb25BcnJheSA9IDB4MDsKc3RhdGljIGNvbnN0
IEluZGV4aW5nVHlwZSBOb25BcnJheVdpdGhJbnQzMiA9IEludDMyU2hhcGU7CnN0YXRpYyBjb25z
dCBJbmRleGluZ1R5cGUgTm9uQXJyYXlXaXRoRG91YmxlID0gRG91YmxlU2hhcGU7CnN0YXRpYyBj
b25zdCBJbmRleGluZ1R5cGUgTm9uQXJyYXlXaXRoQ29udGlndW91cyA9IENvbnRpZ3VvdXNTaGFw
ZTsKc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UgPSBB
cnJheVN0b3JhZ2VTaGFwZTsKc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBOb25BcnJheVdpdGhT
bG93UHV0QXJyYXlTdG9yYWdlID0gU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlOwpzdGF0aWMgY29u
c3QgSW5kZXhpbmdUeXBlIEFycmF5Q2xhc3MgPSBJc0FycmF5OwpzdGF0aWMgY29uc3QgSW5kZXhp
bmdUeXBlIEFycmF5V2l0aFVuZGVjaWRlZCA9IElzQXJyYXkgfCBVbmRlY2lkZWRTaGFwZTsKc3Rh
dGljIGNvbnN0IEluZGV4aW5nVHlwZSBBcnJheVdpdGhJbnQzMiA9IElzQXJyYXkgfCBJbnQzMlNo
YXBlOwpzdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBlIEFycmF5V2l0aERvdWJsZSA9IElzQXJyYXkg
fCBEb3VibGVTaGFwZTsKc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBBcnJheVdpdGhDb250aWd1
b3VzID0gSXNBcnJheSB8IENvbnRpZ3VvdXNTaGFwZTsKc3RhdGljIGNvbnN0IEluZGV4aW5nVHlw
ZSBBcnJheVdpdGhBcnJheVN0b3JhZ2UgPSBJc0FycmF5IHwgQXJyYXlTdG9yYWdlU2hhcGU7CnN0
YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSA9IElz
QXJyYXkgfCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGU7CgojZGVmaW5lIEFMTF9CTEFOS19JTkRF
WElOR19UWVBFUyBOb25BcnJheTogY2FzZSBBcnJheUNsYXNzCgoKCiNkZWZpbmUgQUxMX1VOREVD
SURFRF9JTkRFWElOR19UWVBFUyBBcnJheVdpdGhVbmRlY2lkZWQKCgojZGVmaW5lIEFMTF9JTlQz
Ml9JTkRFWElOR19UWVBFUyBOb25BcnJheVdpdGhJbnQzMjogY2FzZSBBcnJheVdpdGhJbnQzMgoK
CgojZGVmaW5lIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVMgTm9uQXJyYXlXaXRoRG91YmxlOiBj
YXNlIEFycmF5V2l0aERvdWJsZQoKCgojZGVmaW5lIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZ
UEVTIE5vbkFycmF5V2l0aENvbnRpZ3VvdXM6IGNhc2UgQXJyYXlXaXRoQ29udGlndW91cwoKCgoj
ZGVmaW5lIEFSUkFZX1dJVEhfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBFUyBBcnJheVdpdGhB
cnJheVN0b3JhZ2U6IGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZQoKCgojZGVmaW5l
IEFMTF9BUlJBWV9TVE9SQUdFX0lOREVYSU5HX1RZUEVTIE5vbkFycmF5V2l0aEFycmF5U3RvcmFn
ZTogY2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOiBjYXNlIEFSUkFZX1dJVEhf
QVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBFUwoKCgoKc3RhdGljIGlubGluZSBib29sIGhhc0lu
ZGV4ZWRQcm9wZXJ0aWVzKEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUpCnsKICAgIHJldHVybiAo
aW5kZXhpbmdUeXBlICYgSW5kZXhpbmdTaGFwZU1hc2spICE9IE5vSW5kZXhpbmdTaGFwZTsKfQoK
c3RhdGljIGlubGluZSBib29sIGhhc1VuZGVjaWRlZChJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBl
KQp7CiAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9PSBVbmRl
Y2lkZWRTaGFwZTsKfQoKc3RhdGljIGlubGluZSBib29sIGhhc0ludDMyKEluZGV4aW5nVHlwZSBp
bmRleGluZ1R5cGUpCnsKICAgIHJldHVybiAoaW5kZXhpbmdUeXBlICYgSW5kZXhpbmdTaGFwZU1h
c2spID09IEludDMyU2hhcGU7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBoYXNEb3VibGUoSW5kZXhp
bmdUeXBlIGluZGV4aW5nVHlwZSkKewogICAgcmV0dXJuIChpbmRleGluZ1R5cGUgJiBJbmRleGlu
Z1NoYXBlTWFzaykgPT0gRG91YmxlU2hhcGU7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBoYXNDb250
aWd1b3VzKEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUpCnsKICAgIHJldHVybiAoaW5kZXhpbmdU
eXBlICYgSW5kZXhpbmdTaGFwZU1hc2spID09IENvbnRpZ3VvdXNTaGFwZTsKfQoKc3RhdGljIGlu
bGluZSBib29sIGhhc0FycmF5U3RvcmFnZShJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQp7CiAg
ICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9PSBBcnJheVN0b3Jh
Z2VTaGFwZTsKfQoKc3RhdGljIGlubGluZSBib29sIGhhc0FueUFycmF5U3RvcmFnZShJbmRleGlu
Z1R5cGUgaW5kZXhpbmdUeXBlKQp7CiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4oaW5k
ZXhpbmdUeXBlICYgSW5kZXhpbmdTaGFwZU1hc2spID49IEFycmF5U3RvcmFnZVNoYXBlOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkVXNlU2xvd1B1dChJbmRleGluZ1R5cGUgaW5kZXhpbmdU
eXBlKQp7CiAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9PSBT
bG93UHV0QXJyYXlTdG9yYWdlU2hhcGU7Cn0KCgpJbmRleGluZ1R5cGUgbGVhc3RVcHBlckJvdW5k
T2ZJbmRleGluZ1R5cGVzKEluZGV4aW5nVHlwZSwgSW5kZXhpbmdUeXBlKTsKCkluZGV4aW5nVHlw
ZSBsZWFzdFVwcGVyQm91bmRPZkluZGV4aW5nVHlwZUFuZFR5cGUoSW5kZXhpbmdUeXBlLCBTcGVj
dWxhdGVkVHlwZSk7CkluZGV4aW5nVHlwZSBsZWFzdFVwcGVyQm91bmRPZkluZGV4aW5nVHlwZUFu
ZFZhbHVlKEluZGV4aW5nVHlwZSwgSlNWYWx1ZSk7Cgp2b2lkIGR1bXBJbmRleGluZ1R5cGUoUHJp
bnRTdHJlYW0mLCBJbmRleGluZ1R5cGUpOwpjbGFzcyBJbmRleGluZ1R5cGVEdW1wIHsgcHVibGlj
OiBJbmRleGluZ1R5cGVEdW1wKGNvbnN0IEluZGV4aW5nVHlwZSYgdmFsdWUpIDogbV92YWx1ZSh2
YWx1ZSkgeyB9IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdCB7IGR1bXBJbmRleGlu
Z1R5cGUob3V0LCBtX3ZhbHVlKTsgfSBwcml2YXRlOiBJbmRleGluZ1R5cGUgbV92YWx1ZTsgfTsK
CgpzdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBlIEFsbEFycmF5VHlwZXMgPSBJbmRleGluZ1NoYXBl
TWFzayB8IElzQXJyYXk7CgoKc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBBbGxBcnJheVR5cGVz
QW5kSGlzdG9yeSA9IEFsbEFycmF5VHlwZXMgfCBNYXlIYXZlSW5kZXhlZEFjY2Vzc29yczsKCn0K
IyAzMiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgiIDIKIyAx
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCIgMQojIDIyICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCIKI2RlZmluZSBKU0xv
Y2tfaCAKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC45LjMvdGhyZWFkIiAxIDMKIyAzMCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjkuMy90aHJlYWQiIDMKI2RlZmluZSBfR0xJQkNYWF9U
SFJFQUQgMQoKICAgICAgIAojIDMzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOS4zL3RocmVhZCIgMwojIDQ3ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL3RocmVhZCIgMwpuYW1lc3BhY2Ug
c3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgNjAg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC45LjMv
dGhyZWFkIiAzCiAgY2xhc3MgdGhyZWFkCiAgewogIHB1YmxpYzoKICAgIHR5cGVkZWYgX19ndGhy
ZWFkX3QgbmF0aXZlX2hhbmRsZV90eXBlOwogICAgc3RydWN0IF9JbXBsX2Jhc2U7CiAgICB0eXBl
ZGVmIHNoYXJlZF9wdHI8X0ltcGxfYmFzZT4gX19zaGFyZWRfYmFzZV90eXBlOwoKCiAgICBjbGFz
cyBpZAogICAgewogICAgICBuYXRpdmVfaGFuZGxlX3R5cGUgX01fdGhyZWFkOwoKICAgIHB1Ymxp
YzoKICAgICAgaWQoKSBub2V4Y2VwdCA6IF9NX3RocmVhZCgpIHsgfQoKICAgICAgZXhwbGljaXQK
ICAgICAgaWQobmF0aXZlX2hhbmRsZV90eXBlIF9faWQpIDogX01fdGhyZWFkKF9faWQpIHsgfQoK
ICAgIHByaXZhdGU6CiAgICAgIGZyaWVuZCBjbGFzcyB0aHJlYWQ7CiAgICAgIGZyaWVuZCBjbGFz
cyBoYXNoPHRocmVhZDo6aWQ+OwoKICAgICAgZnJpZW5kIGJvb2wKICAgICAgb3BlcmF0b3I9PSh0
aHJlYWQ6OmlkIF9feCwgdGhyZWFkOjppZCBfX3kpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9f
Z3RocmVhZF9lcXVhbChfX3guX01fdGhyZWFkLCBfX3kuX01fdGhyZWFkKTsgfQoKICAgICAgZnJp
ZW5kIGJvb2wKICAgICAgb3BlcmF0b3I8KHRocmVhZDo6aWQgX194LCB0aHJlYWQ6OmlkIF9feSkg
bm9leGNlcHQKICAgICAgeyByZXR1cm4gX194Ll9NX3RocmVhZCA8IF9feS5fTV90aHJlYWQ7IH0K
CiAgICAgIHRlbXBsYXRlPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cz4KIGZyaWVuZCBiYXNp
Y19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08X0No
YXJULCBfVHJhaXRzPiYgX19vdXQsIHRocmVhZDo6aWQgX19pZCk7CiAgICB9OwoKCgogICAgc3Ry
dWN0IF9JbXBsX2Jhc2UKICAgIHsKICAgICAgX19zaGFyZWRfYmFzZV90eXBlIF9NX3RoaXNfcHRy
OwoKICAgICAgaW5saW5lIHZpcnR1YWwgfl9JbXBsX2Jhc2UoKTsKCiAgICAgIHZpcnR1YWwgdm9p
ZCBfTV9ydW4oKSA9IDA7CiAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DYWxsYWJsZT4K
ICAgICAgc3RydWN0IF9JbXBsIDogcHVibGljIF9JbXBsX2Jhc2UKICAgICAgewogX0NhbGxhYmxl
IF9NX2Z1bmM7CgogX0ltcGwoX0NhbGxhYmxlJiYgX19mKSA6IF9NX2Z1bmMoc3RkOjpmb3J3YXJk
PF9DYWxsYWJsZT4oX19mKSkKIHsgfQoKIHZvaWQKIF9NX3J1bigpIHsgX01fZnVuYygpOyB9CiAg
ICAgIH07CgogIHByaXZhdGU6CiAgICBpZCBfTV9pZDsKCiAgcHVibGljOgogICAgdGhyZWFkKCkg
bm9leGNlcHQgPSBkZWZhdWx0OwoKCiAgICB0aHJlYWQodGhyZWFkJikgPSBkZWxldGU7CiAgICB0
aHJlYWQoY29uc3QgdGhyZWFkJikgPSBkZWxldGU7CgogICAgdGhyZWFkKHRocmVhZCYmIF9fdCkg
bm9leGNlcHQKICAgIHsgc3dhcChfX3QpOyB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NhbGxh
YmxlLCB0eXBlbmFtZS4uLiBfQXJncz4KICAgICAgZXhwbGljaXQKICAgICAgdGhyZWFkKF9DYWxs
YWJsZSYmIF9fZiwgX0FyZ3MmJi4uLiBfX2FyZ3MpCiAgICAgIHsKICAgICAgICBfTV9zdGFydF90
aHJlYWQoX01fbWFrZV9yb3V0aW5lKHN0ZDo6X19iaW5kX3NpbXBsZSgKICAgICAgICAgICAgICAg
IHN0ZDo6Zm9yd2FyZDxfQ2FsbGFibGU+KF9fZiksCiAgICAgICAgICAgICAgICBzdGQ6OmZvcndh
cmQ8X0FyZ3M+KF9fYXJncykuLi4pKSk7CiAgICAgIH0KCiAgICB+dGhyZWFkKCkKICAgIHsKICAg
ICAgaWYgKGpvaW5hYmxlKCkpCiBzdGQ6OnRlcm1pbmF0ZSgpOwogICAgfQoKICAgIHRocmVhZCYg
b3BlcmF0b3I9KGNvbnN0IHRocmVhZCYpID0gZGVsZXRlOwoKICAgIHRocmVhZCYgb3BlcmF0b3I9
KHRocmVhZCYmIF9fdCkgbm9leGNlcHQKICAgIHsKICAgICAgaWYgKGpvaW5hYmxlKCkpCiBzdGQ6
OnRlcm1pbmF0ZSgpOwogICAgICBzd2FwKF9fdCk7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0K
CiAgICB2b2lkCiAgICBzd2FwKHRocmVhZCYgX190KSBub2V4Y2VwdAogICAgeyBzdGQ6OnN3YXAo
X01faWQsIF9fdC5fTV9pZCk7IH0KCiAgICBib29sCiAgICBqb2luYWJsZSgpIGNvbnN0IG5vZXhj
ZXB0CiAgICB7IHJldHVybiAhKF9NX2lkID09IGlkKCkpOyB9CgogICAgdm9pZAogICAgam9pbigp
OwoKICAgIHZvaWQKICAgIGRldGFjaCgpOwoKICAgIHRocmVhZDo6aWQKICAgIGdldF9pZCgpIGNv
bnN0IG5vZXhjZXB0CiAgICB7IHJldHVybiBfTV9pZDsgfQoKCgogICAgbmF0aXZlX2hhbmRsZV90
eXBlCiAgICBuYXRpdmVfaGFuZGxlKCkKICAgIHsgcmV0dXJuIF9NX2lkLl9NX3RocmVhZDsgfQoK
CiAgICBzdGF0aWMgdW5zaWduZWQgaW50CiAgICBoYXJkd2FyZV9jb25jdXJyZW5jeSgpIG5vZXhj
ZXB0OwoKICBwcml2YXRlOgogICAgdm9pZAogICAgX01fc3RhcnRfdGhyZWFkKF9fc2hhcmVkX2Jh
c2VfdHlwZSk7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NhbGxhYmxlPgogICAgICBzaGFyZWRf
cHRyPF9JbXBsPF9DYWxsYWJsZT4+CiAgICAgIF9NX21ha2Vfcm91dGluZShfQ2FsbGFibGUmJiBf
X2YpCiAgICAgIHsKCiByZXR1cm4gc3RkOjptYWtlX3NoYXJlZDxfSW1wbDxfQ2FsbGFibGU+Pihz
dGQ6OmZvcndhcmQ8X0NhbGxhYmxlPihfX2YpKTsKICAgICAgfQogIH07CgogIGlubGluZSB0aHJl
YWQ6Ol9JbXBsX2Jhc2U6On5fSW1wbF9iYXNlKCkgPSBkZWZhdWx0OwoKICBpbmxpbmUgdm9pZAog
IHN3YXAodGhyZWFkJiBfX3gsIHRocmVhZCYgX195KSBub2V4Y2VwdAogIHsgX194LnN3YXAoX195
KTsgfQoKICBpbmxpbmUgYm9vbAogIG9wZXJhdG9yIT0odGhyZWFkOjppZCBfX3gsIHRocmVhZDo6
aWQgX195KSBub2V4Y2VwdAogIHsgcmV0dXJuICEoX194ID09IF9feSk7IH0KCiAgaW5saW5lIGJv
b2wKICBvcGVyYXRvcjw9KHRocmVhZDo6aWQgX194LCB0aHJlYWQ6OmlkIF9feSkgbm9leGNlcHQK
ICB7IHJldHVybiAhKF9feSA8IF9feCk7IH0KCiAgaW5saW5lIGJvb2wKICBvcGVyYXRvcj4odGhy
ZWFkOjppZCBfX3gsIHRocmVhZDo6aWQgX195KSBub2V4Y2VwdAogIHsgcmV0dXJuIF9feSA8IF9f
eDsgfQoKICBpbmxpbmUgYm9vbAogIG9wZXJhdG9yPj0odGhyZWFkOjppZCBfX3gsIHRocmVhZDo6
aWQgX195KSBub2V4Y2VwdAogIHsgcmV0dXJuICEoX194IDwgX195KTsgfQoKCgogIHRlbXBsYXRl
PD4KICAgIHN0cnVjdCBoYXNoPHRocmVhZDo6aWQ+CiAgICA6IHB1YmxpYyBfX2hhc2hfYmFzZTxz
aXplX3QsIHRocmVhZDo6aWQ+CiAgICB7CiAgICAgIHNpemVfdAogICAgICBvcGVyYXRvcigpKGNv
bnN0IHRocmVhZDo6aWQmIF9faWQpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0ZDo6
X0hhc2hfaW1wbDo6aGFzaChfX2lkLl9NX3RocmVhZCk7IH0KICAgIH07CgogIHRlbXBsYXRlPGNs
YXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cz4KICAgIGlubGluZSBiYXNpY19vc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRz
PiYgX19vdXQsIHRocmVhZDo6aWQgX19pZCkKICAgIHsKICAgICAgaWYgKF9faWQgPT0gdGhyZWFk
OjppZCgpKQogcmV0dXJuIF9fb3V0IDw8ICJ0aHJlYWQ6OmlkIG9mIGEgbm9uLWV4ZWN1dGluZyB0
aHJlYWQiOwogICAgICBlbHNlCiByZXR1cm4gX19vdXQgPDwgX19pZC5fTV90aHJlYWQ7CiAgICB9
CgoKCgoKCgogIG5hbWVzcGFjZSB0aGlzX3RocmVhZAogIHsKIAoKCiAgICBpbmxpbmUgdGhyZWFk
OjppZAogICAgZ2V0X2lkKCkgbm9leGNlcHQgeyByZXR1cm4gdGhyZWFkOjppZChfX2d0aHJlYWRf
c2VsZigpKTsgfQoKCiAgICBpbmxpbmUgdm9pZAogICAgeWllbGQoKSBub2V4Y2VwdAogICAgewoK
ICAgICAgX19ndGhyZWFkX3lpZWxkKCk7CgogICAgfQoKICAgIHZvaWQKICAgIF9fc2xlZXBfZm9y
KGNocm9ubzo6c2Vjb25kcywgY2hyb25vOjpuYW5vc2Vjb25kcyk7CgoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9SZXAsIHR5cGVuYW1lIF9QZXJpb2Q+CiAgICAgIGlubGluZSB2b2lkCiAgICAgIHNs
ZWVwX2Zvcihjb25zdCBjaHJvbm86OmR1cmF0aW9uPF9SZXAsIF9QZXJpb2Q+JiBfX3J0aW1lKQog
ICAgICB7CiBpZiAoX19ydGltZSA8PSBfX3J0aW1lLnplcm8oKSkKICAgcmV0dXJuOwogYXV0byBf
X3MgPSBjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8Y2hyb25vOjpzZWNvbmRzPihfX3J0aW1lKTsKIGF1
dG8gX19ucyA9IGNocm9ubzo6ZHVyYXRpb25fY2FzdDxjaHJvbm86Om5hbm9zZWNvbmRzPihfX3J0
aW1lIC0gX19zKTsKCiBfX2d0aHJlYWRfdGltZV90IF9fdHMgPQogICB7CiAgICAgc3RhdGljX2Nh
c3Q8c3RkOjp0aW1lX3Q+KF9fcy5jb3VudCgpKSwKICAgICBzdGF0aWNfY2FzdDxsb25nPihfX25z
LmNvdW50KCkpCiAgIH07CiA6Om5hbm9zbGVlcCgmX190cywgMCk7CgoKCiAgICAgIH0KCgogICAg
dGVtcGxhdGU8dHlwZW5hbWUgX0Nsb2NrLCB0eXBlbmFtZSBfRHVyYXRpb24+CiAgICAgIGlubGlu
ZSB2b2lkCiAgICAgIHNsZWVwX3VudGlsKGNvbnN0IGNocm9ubzo6dGltZV9wb2ludDxfQ2xvY2ss
IF9EdXJhdGlvbj4mIF9fYXRpbWUpCiAgICAgIHsKIGF1dG8gX19ub3cgPSBfQ2xvY2s6Om5vdygp
OwogaWYgKF9fbm93IDwgX19hdGltZSkKICAgc2xlZXBfZm9yKF9fYXRpbWUgLSBfX25vdyk7CiAg
ICAgIH0KCiAKICB9CgoKCn0KIyAyNiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmgiIDIKCgoKCgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERh
dGEuaCIgMQojIDI4ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgiCiNkZWZp
bmUgV1RGVGhyZWFkRGF0YV9oIAoKCgoKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9TdGFja0Jv
dW5kcy5oIiAxCiMgMjggIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1N0YWNrQm91bmRzLmgiCiNkZWZp
bmUgU3RhY2tCb3VuZHNfaCAKCgoKbmFtZXNwYWNlIFdURiB7CgpjbGFzcyBTdGFja0JvdW5kcyB7
CgoKCgoKICAgIGNvbnN0IHN0YXRpYyBzaXplX3Qgc19kZWZhdWx0QXZhaWxhYmlsaXR5RGVsdGEg
PSA2NCAqIDEwMjQ7CgpwdWJsaWM6CiAgICBzdGF0aWMgU3RhY2tCb3VuZHMgY3VycmVudFRocmVh
ZFN0YWNrQm91bmRzKCkKICAgIHsKICAgICAgICBTdGFja0JvdW5kcyBib3VuZHM7CiAgICAgICAg
Ym91bmRzLmluaXRpYWxpemUoKTsKICAgICAgICBib3VuZHMuY2hlY2tDb25zaXN0ZW5jeSgpOwog
ICAgICAgIHJldHVybiBib3VuZHM7CiAgICB9CgogICAgdm9pZCogb3JpZ2luKCkgY29uc3QKICAg
IHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIG1fb3JpZ2luOwogICAgfQoKICAg
IHZvaWQqIGVuZCgpIGNvbnN0CiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVy
biBtX2JvdW5kOwogICAgfQoKICAgIHNpemVfdCBzaXplKCkgY29uc3QKICAgIHsKICAgICAgICBp
ZiAoaXNHcm93aW5nRG93bndhcmQoKSkKICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNo
YXIqPihtX29yaWdpbikgLSBzdGF0aWNfY2FzdDxjaGFyKj4obV9ib3VuZCk7CiAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNoYXIqPihtX2JvdW5kKSAtIHN0YXRpY19jYXN0PGNoYXIqPihtX29y
aWdpbik7CiAgICB9CgogICAgdm9pZCogcmVjdXJzaW9uTGltaXQoc2l6ZV90IG1pbkF2YWlsYWJs
ZURlbHRhID0gc19kZWZhdWx0QXZhaWxhYmlsaXR5RGVsdGEpIGNvbnN0CiAgICB7CiAgICAgICAg
Y2hlY2tDb25zaXN0ZW5jeSgpOwogICAgICAgIGlmIChpc0dyb3dpbmdEb3dud2FyZCgpKQogICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYm91bmQpICsgbWluQXZhaWxhYmxl
RGVsdGE7CiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihtX2JvdW5kKSAtIG1pbkF2
YWlsYWJsZURlbHRhOwogICAgfQoKICAgIHZvaWQqIHJlY3Vyc2lvbkxpbWl0KGNoYXIqIHN0YXJ0
T2ZVc2VyU3RhY2ssIHNpemVfdCBtYXhVc2VyU3RhY2ssIHNpemVfdCByZXNlcnZlZFpvbmVTaXpl
KSBjb25zdAogICAgewogICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICBpZiAobWF4
VXNlclN0YWNrIDwgcmVzZXJ2ZWRab25lU2l6ZSkKICAgICAgICAgICAgcmVzZXJ2ZWRab25lU2l6
ZSA9IG1heFVzZXJTdGFjazsKICAgICAgICBzaXplX3QgbWF4VXNlclN0YWNrV2l0aFJlc2VydmVk
Wm9uZSA9IG1heFVzZXJTdGFjayAtIHJlc2VydmVkWm9uZVNpemU7CgogICAgICAgIGlmIChpc0dy
b3dpbmdEb3dud2FyZCgpKSB7CiAgICAgICAgICAgIGNoYXIqIGVuZE9mU3RhY2tXaXRoUmVzZXJ2
ZWRab25lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9ib3VuZCkgKyByZXNlcnZlZFpvbmVT
aXplOwogICAgICAgICAgICBpZiAoc3RhcnRPZlVzZXJTdGFjayA8IGVuZE9mU3RhY2tXaXRoUmVz
ZXJ2ZWRab25lKQogICAgICAgICAgICAgICAgcmV0dXJuIGVuZE9mU3RhY2tXaXRoUmVzZXJ2ZWRa
b25lOwogICAgICAgICAgICBzaXplX3QgYXZhaWxhYmxlVXNlclN0YWNrID0gc3RhcnRPZlVzZXJT
dGFjayAtIGVuZE9mU3RhY2tXaXRoUmVzZXJ2ZWRab25lOwogICAgICAgICAgICBpZiAobWF4VXNl
clN0YWNrV2l0aFJlc2VydmVkWm9uZSA+IGF2YWlsYWJsZVVzZXJTdGFjaykKICAgICAgICAgICAg
ICAgIG1heFVzZXJTdGFja1dpdGhSZXNlcnZlZFpvbmUgPSBhdmFpbGFibGVVc2VyU3RhY2s7CiAg
ICAgICAgICAgIHJldHVybiBzdGFydE9mVXNlclN0YWNrIC0gbWF4VXNlclN0YWNrV2l0aFJlc2Vy
dmVkWm9uZTsKICAgICAgICB9CgogICAgICAgIGNoYXIqIGVuZE9mU3RhY2tXaXRoUmVzZXJ2ZWRa
b25lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9ib3VuZCkgLSByZXNlcnZlZFpvbmVTaXpl
OwogICAgICAgIGlmIChzdGFydE9mVXNlclN0YWNrID4gZW5kT2ZTdGFja1dpdGhSZXNlcnZlZFpv
bmUpCiAgICAgICAgICAgIHJldHVybiBlbmRPZlN0YWNrV2l0aFJlc2VydmVkWm9uZTsKICAgICAg
ICBzaXplX3QgYXZhaWxhYmxlVXNlclN0YWNrID0gZW5kT2ZTdGFja1dpdGhSZXNlcnZlZFpvbmUg
LSBzdGFydE9mVXNlclN0YWNrOwogICAgICAgIGlmIChtYXhVc2VyU3RhY2tXaXRoUmVzZXJ2ZWRa
b25lID4gYXZhaWxhYmxlVXNlclN0YWNrKQogICAgICAgICAgICBtYXhVc2VyU3RhY2tXaXRoUmVz
ZXJ2ZWRab25lID0gYXZhaWxhYmxlVXNlclN0YWNrOwogICAgICAgIHJldHVybiBzdGFydE9mVXNl
clN0YWNrICsgbWF4VXNlclN0YWNrV2l0aFJlc2VydmVkWm9uZTsKICAgIH0KCiAgICBib29sIGlz
R3Jvd2luZ0Rvd253YXJkKCkgY29uc3QKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAg
cmV0dXJuIHRydWU7CiAgICB9Cgpwcml2YXRlOgogICAgU3RhY2tCb3VuZHMoKQogICAgICAgIDog
bV9vcmlnaW4oMCkKICAgICAgICAsIG1fYm91bmQoMCkKICAgIHsKICAgIH0KCiAgICB2b2lkIGlu
aXRpYWxpemUoKTsKCiAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogICAgewoKCgoK
CgoKICAgIH0KCiAgICB2b2lkKiBtX29yaWdpbjsKICAgIHZvaWQqIG1fYm91bmQ7CgogICAgZnJp
ZW5kIGNsYXNzIFN0YWNrU3RhdHM7Cn07Cgp9Cgp1c2luZyBXVEY6OlN0YWNrQm91bmRzOwojIDM0
ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgiIDIKIyAxICIuLi8uLi9Tb3Vy
Y2UvV1RGL3d0Zi9TdGFja1N0YXRzLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL1dURi93dGYvU3Rh
Y2tTdGF0cy5oIgojZGVmaW5lIFN0YWNrU3RhdHNfaCAKCiMgMSAiLi4vLi4vU291cmNlL1dURi93
dGYvRXhwb3J0TWFjcm9zLmgiIDEKIyAzMCAiLi4vLi4vU291cmNlL1dURi93dGYvU3RhY2tTdGF0
cy5oIiAyCiMgNDQgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1N0YWNrU3RhdHMuaCIKI2RlZmluZSBF
TkFCTEVfU1RBQ0tfU1RBVFMgMAoKCm5hbWVzcGFjZSBXVEYgewoKCgpjbGFzcyBTdGFja1N0YXRz
IHsKcHVibGljOgoKCgogICAgY2xhc3MgQ2hlY2tQb2ludCB7CiAgICBwdWJsaWM6CiAgICAgICAg
Q2hlY2tQb2ludCgpIHsgfQogICAgfTsKCiAgICBjbGFzcyBQZXJUaHJlYWRTdGF0cyB7CiAgICBw
dWJsaWM6CiAgICAgICAgUGVyVGhyZWFkU3RhdHMoKSB7IH0KICAgIH07CgogICAgY2xhc3MgTGF5
b3V0Q2hlY2tQb2ludCB7CiAgICBwdWJsaWM6CiAgICAgICAgTGF5b3V0Q2hlY2tQb2ludCgpIHsg
fQogICAgfTsKCiAgICBzdGF0aWMgdm9pZCBwcm9iZSgpIHsgfQp9OwojIDE0NCAiLi4vLi4vU291
cmNlL1dURi93dGYvU3RhY2tTdGF0cy5oIgp9Cgp1c2luZyBXVEY6OlN0YWNrU3RhdHM7CiMgMzUg
Ii4uLy4uL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaCIgMgojIDEgIi4uLy4uL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSGFzaC5oIiAxCiMgMjMgIi4uLy4uL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSGFzaC5oIgojZGVmaW5lIFN0cmluZ0hhc2hfaCAKCgoKCgpuYW1lc3BhY2Ug
V1RGIHsKCiAgICBpbmxpbmUgYm9vbCBIYXNoVHJhaXRzPFN0cmluZz46OmlzRW1wdHlWYWx1ZShj
b25zdCBTdHJpbmcmIHZhbHVlKQogICAgewogICAgICAgIHJldHVybiB2YWx1ZS5pc051bGwoKTsK
ICAgIH0KCiAgICBpbmxpbmUgdm9pZCBIYXNoVHJhaXRzPFN0cmluZz46OmN1c3RvbURlbGV0ZUJ1
Y2tldChTdHJpbmcmIHZhbHVlKQogICAgewoKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgU3Ry
aW5nIHZhbHVlVG9CZURlc3Ryb3llZCA9IHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRl
cj4odmFsdWUpOwogICAgICAgIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZSh2YWx1ZSk7CiAgICB9CiMg
NTIgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSGFzaC5oIgogICAgc3RydWN0IFN0
cmluZ0hhc2ggewogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKFN0cmluZ0ltcGwqIGtleSkg
eyByZXR1cm4ga2V5LT5oYXNoKCk7IH0KICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgZXF1YWwo
Y29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgU3RyaW5nSW1wbCogYikKICAgICAgICB7CiAgICAg
ICAgICAgIHJldHVybiBXVEY6OmVxdWFsKCphLCAqYik7CiAgICAgICAgfQoKICAgICAgICBzdGF0
aWMgdW5zaWduZWQgaGFzaChjb25zdCBSZWZQdHI8U3RyaW5nSW1wbD4mIGtleSkgeyByZXR1cm4g
a2V5LT5oYXNoKCk7IH0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBSZWZQdHI8U3Ry
aW5nSW1wbD4mIGEsIGNvbnN0IFJlZlB0cjxTdHJpbmdJbXBsPiYgYikKICAgICAgICB7CiAgICAg
ICAgICAgIHJldHVybiBlcXVhbChhLmdldCgpLCBiLmdldCgpKTsKICAgICAgICB9CiAgICAgICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVmUHRyPFN0cmluZ0ltcGw+JiBhLCBjb25zdCBTdHJp
bmdJbXBsKiBiKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIGVxdWFsKGEuZ2V0KCksIGIp
OwogICAgICAgIH0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiBh
LCBjb25zdCBSZWZQdHI8U3RyaW5nSW1wbD4mIGIpCiAgICAgICAgewogICAgICAgICAgICByZXR1
cm4gZXF1YWwoYSwgYi5nZXQoKSk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaChjb25zdCBTdHJpbmcmIGtleSkgeyByZXR1cm4ga2V5LmltcGwoKS0+aGFzaCgpOyB9CiAg
ICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIp
CiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsK
ICAgICAgICB9CgogICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkID0gZmFsc2U7CiAgICB9OwoKICAgIGNsYXNzIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaCB7CiAgICBwdWJsaWM6CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlu
bGluZSBVQ2hhciBmb2xkQ2FzZShUIGNoYXJhY3RlcikKICAgICAgICB7CiAgICAgICAgICAgIHJl
dHVybiB0b0FTQ0lJTG93ZXIoY2hhcmFjdGVyKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyB1
bnNpZ25lZCBoYXNoKGNvbnN0IFVDaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgICAg
ewogICAgICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4
Qml0czxVQ2hhciwgZm9sZENhc2U8VUNoYXI+PihkYXRhLCBsZW5ndGgpOwogICAgICAgIH0KCiAg
ICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goU3RyaW5nSW1wbCYgc3RyaW5nKQogICAgICAgIHsK
ICAgICAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKICAgICAgICAgICAgICAgIHJldHVybiBo
YXNoKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICAgICBy
ZXR1cm4gaGFzaChzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7CiAgICAg
ICAgfQogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKFN0cmluZ0ltcGwqIHN0cmluZykKICAg
ICAgICB7CiAgICAgICAgICAgICgodm9pZCkwKTsKICAgICAgICAgICAgcmV0dXJuIGhhc2goKnN0
cmluZyk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBMQ2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIFN0
cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHM8TENoYXIsIGZvbGRDYXNlPExD
aGFyPj4oZGF0YSwgbGVuZ3RoKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBpbmxpbmUgdW5z
aWduZWQgaGFzaChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgICAgewog
ICAgICAgICAgICByZXR1cm4gaGFzaChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oZGF0
YSksIGxlbmd0aCk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgZXF1YWwo
Y29uc3QgU3RyaW5nSW1wbCYgYSwgY29uc3QgU3RyaW5nSW1wbCYgYikKICAgICAgICB7CiAgICAg
ICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGEsIGIpOwogICAgICAgIH0KICAg
ICAgICBzdGF0aWMgaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3Qg
U3RyaW5nSW1wbCogYikKICAgICAgICB7CiAgICAgICAgICAgICgodm9pZCkwKTsKICAgICAgICAg
ICAgKCh2b2lkKTApOwogICAgICAgICAgICByZXR1cm4gZXF1YWwoKmEsICpiKTsKICAgICAgICB9
CgogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlZlB0cjxTdHJpbmdJbXBsPiYg
a2V5KQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIGhhc2goa2V5LmdldCgpKTsKICAgICAg
ICB9CgogICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlZlB0cjxTdHJpbmdJbXBsPiYg
YSwgY29uc3QgUmVmUHRyPFN0cmluZ0ltcGw+JiBiKQogICAgICAgIHsKICAgICAgICAgICAgcmV0
dXJuIGVxdWFsKGEuZ2V0KCksIGIuZ2V0KCkpOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljIHVu
c2lnbmVkIGhhc2goY29uc3QgU3RyaW5nJiBrZXkpCiAgICAgICAgewogICAgICAgICAgICByZXR1
cm4gaGFzaChrZXkuaW1wbCgpKTsKICAgICAgICB9CiAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgQXRvbWljU3RyaW5nJiBrZXkpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4g
aGFzaChrZXkuaW1wbCgpKTsKICAgICAgICB9CiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpCiAgICAgICAgewogICAgICAgICAgICByZXR1
cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsKICAgICAgICB9CiAgICAgICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpCiAg
ICAgICAgewoKCiAgICAgICAgICAgIHJldHVybiBhID09IGIgfHwgZXF1YWwoYS5pbXBsKCksIGIu
aW1wbCgpKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CiAgICB9OwoKCgoKICAgIHN0cnVjdCBBbHJlYWR5
SGFzaGVkIDogSW50SGFzaDx1bnNpZ25lZD4gewogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KHVuc2lnbmVkIGtleSkgeyByZXR1cm4ga2V5OyB9CgoKCgoKICAgICAgICBzdGF0aWMgdW5zaWdu
ZWQgYXZvaWREZWxldGVkVmFsdWUodW5zaWduZWQgaGFzaCkKICAgICAgICB7CiAgICAgICAgICAg
ICgodm9pZCkwKTsKICAgICAgICAgICAgdW5zaWduZWQgbmV3SGFzaCA9IGhhc2ggfCAoIShoYXNo
ICsgMSkgPDwgMzEpOwogICAgICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgICAgICgodm9pZCkw
KTsKICAgICAgICAgICAgcmV0dXJuIG5ld0hhc2g7CiAgICAgICAgfQogICAgfTsKCn0KCnVzaW5n
IFdURjo6QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoOwp1c2luZyBXVEY6OkFscmVhZHlIYXNoZWQ7
CnVzaW5nIFdURjo6U3RyaW5nSGFzaDsKIyAzNiAiLi4vLi4vU291cmNlL1dURi93dGYvV1RGVGhy
ZWFkRGF0YS5oIiAyCiMgNTAgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaCIK
bmFtZXNwYWNlIFdURiB7CgpjbGFzcyBBdG9taWNTdHJpbmdUYWJsZTsKCnR5cGVkZWYgdm9pZCAo
KkF0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcikoQXRvbWljU3RyaW5nVGFibGUqKTsKCmNsYXNz
IFdURlRocmVhZERhdGEgewogICAgcHJpdmF0ZTogV1RGVGhyZWFkRGF0YShjb25zdCBXVEZUaHJl
YWREYXRhJikgPSBkZWxldGU7IFdURlRocmVhZERhdGEmIG9wZXJhdG9yPShjb25zdCBXVEZUaHJl
YWREYXRhJikgPSBkZWxldGU7OwpwdWJsaWM6CiAgICBXVEZUaHJlYWREYXRhKCk7CiAgICB+V1RG
VGhyZWFkRGF0YSgpOwoKICAgIEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSgp
CiAgICB7CiAgICAgICAgcmV0dXJuIG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlOwogICAgfQoK
ICAgIEF0b21pY1N0cmluZ1RhYmxlKiBzZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoQXRvbWlj
U3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKQogICAgewogICAgICAgIEF0b21pY1N0cmlu
Z1RhYmxlKiBvbGRBdG9taWNTdHJpbmdUYWJsZSA9IG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxl
OwogICAgICAgIG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlID0gYXRvbWljU3RyaW5nVGFibGU7
CiAgICAgICAgcmV0dXJuIG9sZEF0b21pY1N0cmluZ1RhYmxlOwogICAgfQoKICAgIHZvaWQgcmVz
ZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoKQogICAgewogICAgICAgIG1fY3VycmVudEF0b21p
Y1N0cmluZ1RhYmxlID0gbV9kZWZhdWx0QXRvbWljU3RyaW5nVGFibGU7CiAgICB9CgogICAgY29u
c3QgU3RhY2tCb3VuZHMmIHN0YWNrKCkKICAgIHsKCgoKCgogICAgICAgIHJldHVybiBtX3N0YWNr
Qm91bmRzOwogICAgfQojIDk2ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgi
CiAgICB2b2lkKiBzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpCiAgICB7CiAgICAgICAgcmV0
dXJuIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnk7CiAgICB9CgogICAgdm9pZCBzZXRTYXZl
ZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSh2b2lkKiBzdGFja1BvaW50ZXJBdFZNRW50cnkpCiAgICB7
CiAgICAgICAgbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSA9IHN0YWNrUG9pbnRlckF0Vk1F
bnRyeTsKICAgIH0KCiAgICB2b2lkKiBzYXZlZExhc3RTdGFja1RvcCgpCiAgICB7CiAgICAgICAg
cmV0dXJuIG1fc2F2ZWRMYXN0U3RhY2tUb3A7CiAgICB9CgogICAgdm9pZCBzZXRTYXZlZExhc3RT
dGFja1RvcCh2b2lkKiBsYXN0U3RhY2tUb3ApCiAgICB7CiAgICAgICAgbV9zYXZlZExhc3RTdGFj
a1RvcCA9IGxhc3RTdGFja1RvcDsKICAgIH0KCiAgICB2b2lkKiBtX2FwaURhdGE7Cgpwcml2YXRl
OgogICAgQXRvbWljU3RyaW5nVGFibGUqIG1fY3VycmVudEF0b21pY1N0cmluZ1RhYmxlOwogICAg
QXRvbWljU3RyaW5nVGFibGUqIG1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlOwogICAgQXRvbWlj
U3RyaW5nVGFibGVEZXN0cnVjdG9yIG1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yOwoKICAg
IFN0YWNrQm91bmRzIG1fc3RhY2tCb3VuZHM7CgoKCiAgICB2b2lkKiBtX3NhdmVkU3RhY2tQb2lu
dGVyQXRWTUVudHJ5OwogICAgdm9pZCogbV9zYXZlZExhc3RTdGFja1RvcDsKCgoKCgogICAgc3Rh
dGljIFRocmVhZFNwZWNpZmljPFdURlRocmVhZERhdGE+KiBzdGF0aWNEYXRhOwoKCiAgICBmcmll
bmQgV1RGVGhyZWFkRGF0YSYgd3RmVGhyZWFkRGF0YSgpOwogICAgZnJpZW5kIGNsYXNzIEF0b21p
Y1N0cmluZ1RhYmxlOwp9OwoKaW5saW5lIFdURlRocmVhZERhdGEmIHd0ZlRocmVhZERhdGEoKQp7
CgoKCgoKCgogICAgaWYgKCFXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhKQogICAgICAgIFdURlRo
cmVhZERhdGE6OnN0YXRpY0RhdGEgPSBuZXcgVGhyZWFkU3BlY2lmaWM8V1RGVGhyZWFkRGF0YT47
CiAgICByZXR1cm4gKipXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhOwoKCgoKCn0KCn0KCnVzaW5n
IFdURjo6V1RGVGhyZWFkRGF0YTsKdXNpbmcgV1RGOjp3dGZUaHJlYWREYXRhOwp1c2luZyBXVEY6
OkF0b21pY1N0cmluZ1RhYmxlOwojIDMyICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xvY2suaCIgMgoKbmFtZXNwYWNlIEpTQyB7CiMgNTQgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oIgpjbGFzcyBFeGVjU3RhdGU7CmNsYXNzIFZNOwoK
CgpjbGFzcyBHbG9iYWxKU0xvY2sgewogICAgcHJpdmF0ZTogR2xvYmFsSlNMb2NrKGNvbnN0IEds
b2JhbEpTTG9jayYpID0gZGVsZXRlOyBHbG9iYWxKU0xvY2smIG9wZXJhdG9yPShjb25zdCBHbG9i
YWxKU0xvY2smKSA9IGRlbGV0ZTs7CnB1YmxpYzoKICAgIEdsb2JhbEpTTG9jaygpOwogICAgfkds
b2JhbEpTTG9jaygpOwpwcml2YXRlOgogICAgc3RhdGljIFN0YXRpY0xvY2sgc19zaGFyZWRJbnN0
YW5jZU11dGV4Owp9OwoKY2xhc3MgSlNMb2NrSG9sZGVyIHsKcHVibGljOgogICAgSlNMb2NrSG9s
ZGVyKFZNKik7CiAgICBKU0xvY2tIb2xkZXIoVk0mKTsKICAgIEpTTG9ja0hvbGRlcihFeGVjU3Rh
dGUqKTsKCiAgICB+SlNMb2NrSG9sZGVyKCk7CnByaXZhdGU6CiAgICB2b2lkIGluaXQoKTsKCiAg
ICBSZWZQdHI8Vk0+IG1fdm07Cn07CgpjbGFzcyBKU0xvY2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8SlNMb2NrPiB7CiAgICBwcml2YXRlOiBKU0xvY2soY29uc3QgSlNMb2NrJikgPSBk
ZWxldGU7IEpTTG9jayYgb3BlcmF0b3I9KGNvbnN0IEpTTG9jayYpID0gZGVsZXRlOzsKcHVibGlj
OgogICAgSlNMb2NrKFZNKik7CiAgICB+SlNMb2NrKCk7CgogICAgdm9pZCBsb2NrKCk7CiAgICB2
b2lkIHVubG9jaygpOwoKICAgIHN0YXRpYyB2b2lkIGxvY2soRXhlY1N0YXRlKik7CiAgICBzdGF0
aWMgdm9pZCB1bmxvY2soRXhlY1N0YXRlKik7CiAgICBzdGF0aWMgdm9pZCBsb2NrKFZNJik7CiAg
ICBzdGF0aWMgdm9pZCB1bmxvY2soVk0mKTsKCiAgICBWTSogdm0oKSB7IHJldHVybiBtX3ZtOyB9
CgogICAgYm9vbCBoYXNFeGNsdXNpdmVUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2hhc0V4Y2x1
c2l2ZVRocmVhZDsgfQogICAgc3RkOjp0aHJlYWQ6OmlkIGV4Y2x1c2l2ZVRocmVhZCgpIGNvbnN0
CiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiBtX293bmVyVGhyZWFkSUQ7
CiAgICB9CiAgICB2b2lkIHNldEV4Y2x1c2l2ZVRocmVhZChzdGQ6OnRocmVhZDo6aWQpOwogICAg
Ym9vbCBjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpOwoKICAgIHZvaWQgd2lsbERlc3Ryb3lW
TShWTSopOwoKICAgIGNsYXNzIERyb3BBbGxMb2NrcyB7CiAgICAgICAgcHJpdmF0ZTogRHJvcEFs
bExvY2tzKGNvbnN0IERyb3BBbGxMb2NrcyYpID0gZGVsZXRlOyBEcm9wQWxsTG9ja3MmIG9wZXJh
dG9yPShjb25zdCBEcm9wQWxsTG9ja3MmKSA9IGRlbGV0ZTs7CiAgICBwdWJsaWM6CiAgICAgICAg
RHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSopOwogICAgICAgIERyb3BBbGxMb2NrcyhWTSopOwogICAg
ICAgIERyb3BBbGxMb2NrcyhWTSYpOwogICAgICAgIH5Ecm9wQWxsTG9ja3MoKTsKCiAgICAgICAg
dm9pZCBzZXREcm9wRGVwdGgodW5zaWduZWQgZGVwdGgpIHsgbV9kcm9wRGVwdGggPSBkZXB0aDsg
fQogICAgICAgIHVuc2lnbmVkIGRyb3BEZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJvcERlcHRo
OyB9CgogICAgcHJpdmF0ZToKICAgICAgICBpbnRwdHJfdCBtX2Ryb3BwZWRMb2NrQ291bnQ7CiAg
ICAgICAgUmVmUHRyPFZNPiBtX3ZtOwogICAgICAgIHVuc2lnbmVkIG1fZHJvcERlcHRoOwogICAg
fTsKCnByaXZhdGU6CiAgICB2b2lkIGxvY2soaW50cHRyX3QgbG9ja0NvdW50KTsKICAgIHZvaWQg
dW5sb2NrKGludHB0cl90IHVubG9ja0NvdW50KTsKCiAgICB2b2lkIGRpZEFjcXVpcmVMb2NrKCk7
CiAgICB2b2lkIHdpbGxSZWxlYXNlTG9jaygpOwoKICAgIHVuc2lnbmVkIGRyb3BBbGxMb2NrcyhE
cm9wQWxsTG9ja3MqKTsKICAgIHZvaWQgZ3JhYkFsbExvY2tzKERyb3BBbGxMb2NrcyosIHVuc2ln
bmVkIGxvY2tDb3VudCk7CgogICAgTG9jayBtX2xvY2s7CiAgICBzdGQ6OnRocmVhZDo6aWQgbV9v
d25lclRocmVhZElEOwogICAgaW50cHRyX3QgbV9sb2NrQ291bnQ7CiAgICB1bnNpZ25lZCBtX2xv
Y2tEcm9wRGVwdGg7CiAgICBib29sIG1faGFzRXhjbHVzaXZlVGhyZWFkOwogICAgVk0qIG1fdm07
CiAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9lbnRyeUF0b21pY1N0cmluZ1RhYmxlOwp9OwoKfQoj
IDMzICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCIgMgojIDEg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaCIgMQojIDI4
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgiCiNkZWZp
bmUgSlNUeXBlSW5mb19oIAoKCgoKCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKCnN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ID0gMTsKc3RhdGljIGNvbnN0IHVuc2lnbmVkIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2Ug
PSAxIDw8IDE7CnN0YXRpYyBjb25zdCB1bnNpZ25lZCBUeXBlT2ZTaG91bGRDYWxsR2V0Q2FsbERh
dGEgPSAxIDw8IDI7CnN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgPSAxIDw8IDM7CnN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnRlcmNlcHRzR2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvID0gMSA8PCA0OwpzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlSXNJbW1vcnRhbCA9IDEgPDwgNTsKc3RhdGljIGNvbnN0
IHVuc2lnbmVkIE92ZXJyaWRlc1RvVGhpcyA9IDEgPDwgNjsKCgpzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCA4OwpzdGF0aWMgY29uc3QgdW5zaWduZWQg
T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyA9IDEgPDwgOTsKc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyA9IDEgPDwgMTA7CnN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSA9IDEgPDwgMTE7CnN0YXRpYyBjb25zdCB1bnNp
Z25lZCBOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMgPSAxIDw8IDEyOwpzdGF0aWMg
Y29uc3QgdW5zaWduZWQgSXNFbnZpcm9ubWVudFJlY29yZCA9IDEgPDwgMTM7CnN0YXRpYyBjb25z
dCB1bnNpZ25lZCBHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSA9
IDEgPDwgMTQ7CgpjbGFzcyBUeXBlSW5mbyB7CnB1YmxpYzoKICAgIHR5cGVkZWYgdWludDhfdCBJ
bmxpbmVUeXBlRmxhZ3M7CiAgICB0eXBlZGVmIHVpbnQ4X3QgT3V0T2ZMaW5lVHlwZUZsYWdzOwoK
ICAgIFR5cGVJbmZvKEpTVHlwZSB0eXBlLCB1bnNpZ25lZCBmbGFncyA9IDApCiAgICAgICAgOiBU
eXBlSW5mbyh0eXBlLCBmbGFncyAmIDB4ZmYsIGZsYWdzID4+IDgpCiAgICB7CiAgICB9CgogICAg
VHlwZUluZm8oSlNUeXBlIHR5cGUsIElubGluZVR5cGVGbGFncyBpbmxpbmVUeXBlRmxhZ3MsIE91
dE9mTGluZVR5cGVGbGFncyBvdXRPZkxpbmVUeXBlRmxhZ3MpCiAgICAgICAgOiBtX3R5cGUodHlw
ZSkKICAgICAgICAsIG1fZmxhZ3MoaW5saW5lVHlwZUZsYWdzKQogICAgICAgICwgbV9mbGFnczIo
b3V0T2ZMaW5lVHlwZUZsYWdzKQogICAgewogICAgfQoKICAgIEpTVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8SlNUeXBlPihtX3R5cGUpOyB9CiAgICBib29sIGlzT2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gaXNPYmplY3QodHlwZSgpKTsgfQogICAgc3RhdGljIGJvb2wgaXNP
YmplY3QoSlNUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUgPj0gT2JqZWN0VHlwZTsgfQogICAgYm9v
bCBpc0ZpbmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEZpbmFsT2JqZWN0VHlw
ZTsgfQogICAgYm9vbCBpc051bWJlck9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBO
dW1iZXJPYmplY3RUeXBlOyB9CgogICAgdW5zaWduZWQgZmxhZ3MoKSBjb25zdCB7IHJldHVybiAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZmxhZ3MyKSA8PCA4KSB8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX2ZsYWdzKTsgfQogICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkgY29uc3Qg
eyByZXR1cm4gaXNTZXRPbkZsYWdzMShNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKTsgfQogICAgYm9v
bCBpbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKElt
cGxlbWVudHNIYXNJbnN0YW5jZSk7IH0KICAgIGJvb2wgaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczEoSW1wbGVtZW50c0RlZmF1bHRIYXNJ
bnN0YW5jZSk7IH0KICAgIGJvb2wgdHlwZU9mU2hvdWxkQ2FsbEdldENhbGxEYXRhKCkgY29uc3Qg
eyByZXR1cm4gaXNTZXRPbkZsYWdzMShUeXBlT2ZTaG91bGRDYWxsR2V0Q2FsbERhdGEpOyB9CiAg
ICBib29sIG92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpIGNvbnN0IHsgcmV0dXJuIG92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdChpbmxpbmVUeXBlRmxhZ3MoKSk7IH0KICAgIHN0YXRpYyBi
b29sIG92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdChJbmxpbmVUeXBlRmxhZ3MgZmxhZ3MpIHsg
cmV0dXJuIGZsYWdzICYgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OyB9CiAgICBib29sIGlu
dGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8o
KSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MxKEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8pOyB9CiAgICBib29sIHN0cnVjdHVyZUlz
SW1tb3J0YWwoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MxKFN0cnVjdHVyZUlzSW1tb3J0
YWwpOyB9CiAgICBib29sIG92ZXJyaWRlc1RvVGhpcygpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25G
bGFnczEoT3ZlcnJpZGVzVG9UaGlzKTsgfQogICAgYm9vbCBvdmVycmlkZXNHZXRQcm9wZXJ0eU5h
bWVzKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihPdmVycmlkZXNHZXRQcm9wZXJ0eU5h
bWVzKTsgfQogICAgYm9vbCBwcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSBjb25zdCB7IHJldHVy
biBpc1NldE9uRmxhZ3MyKFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyk7IH0KICAgIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90SXNJbXB1cmUoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKEdl
dE93blByb3BlcnR5U2xvdElzSW1wdXJlKTsgfQogICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RJ
c0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczIo
R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UpOyB9CiAgICBib29s
IG5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cygpIGNvbnN0IHsgcmV0dXJuIGlzU2V0
T25GbGFnczIoTmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNocG9pbnRzKTsgfQogICAgYm9vbCBp
c0Vudmlyb25tZW50UmVjb3JkKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihJc0Vudmly
b25tZW50UmVjb3JkKTsgfQoKICAgIHN0YXRpYyBwdHJkaWZmX3QgZmxhZ3NPZmZzZXQoKQogICAg
ewogICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnBy
ZXRfY2FzdDxUeXBlSW5mbyo+KDB4NDAwMCktPm1fZmxhZ3MpKSAtIDB4NDAwMCk7CiAgICB9Cgog
ICAgc3RhdGljIHB0cmRpZmZfdCB0eXBlT2Zmc2V0KCkKICAgIHsKICAgICAgICByZXR1cm4gKHJl
aW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8VHlwZUluZm8qPigw
eDQwMDApLT5tX3R5cGUpKSAtIDB4NDAwMCk7CiAgICB9CgogICAgSW5saW5lVHlwZUZsYWdzIGlu
bGluZVR5cGVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAgIE91dE9mTGluZVR5
cGVGbGFncyBvdXRPZkxpbmVUeXBlRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzMjsgfQoK
cHJpdmF0ZToKICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CgogICAgYm9v
bCBpc1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgKCh2b2lkKTApOyByZXR1cm4g
bV9mbGFncyAmIGZsYWc7IH0KICAgIGJvb2wgaXNTZXRPbkZsYWdzMih1bnNpZ25lZCBmbGFnKSBj
b25zdCB7ICgodm9pZCkwKTsgcmV0dXJuIG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7IH0KCiAgICB1
bnNpZ25lZCBjaGFyIG1fdHlwZTsKICAgIHVuc2lnbmVkIGNoYXIgbV9mbGFnczsKICAgIHVuc2ln
bmVkIGNoYXIgbV9mbGFnczI7Cn07Cgp9CiMgMzQgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oIiAyCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU2xvdFZpc2l0b3IuaCIgMQojIDM1ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVkQXJyYXlUeXBlLmgiIDEKIyAzNiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Xcml0ZUJhcnJpZXIuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Xcml0ZUJhcnJpZXIuaCIKI2RlZmluZSBXcml0ZUJhcnJpZXJfaCAKCiMgMSAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRpb25zLmgiIDEKIyAyOCAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRpb25zLmgiCiNkZWZpbmUgR0NBc3Nl
cnRpb25zX2ggCiMgNTUgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQXNzZXJ0
aW9ucy5oIgojZGVmaW5lIEFTU0VSVF9HQ19PQkpFQ1RfTE9PS1NfVkFMSUQoY2VsbCkgZG8geyAo
dm9pZCljZWxsOyB9IHdoaWxlICgwKQojZGVmaW5lIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
b2JqZWN0LGNsYXNzSW5mbykgZG8geyAodm9pZClvYmplY3Q7ICh2b2lkKWNsYXNzSW5mbzsgfSB3
aGlsZSAoMCkKI2RlZmluZSBBU1NFUlRfVEhJU19HQ19PQkpFQ1RfTE9PS1NfVkFMSUQoKSAKI2Rl
ZmluZSBBU1NFUlRfVEhJU19HQ19PQkpFQ1RfSU5IRVJJVFMoY2xhc3NJbmZvKSBkbyB7ICh2b2lk
KWNsYXNzSW5mbzsgfSB3aGlsZSAoMCkKCgojZGVmaW5lIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklB
TExZX0RFU1RSVUNUSUJMRShrbGFzcykgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGU8a2xhc3M+Ojp2YWx1ZSwgI2tsYXNzICIgbXVzdCBoYXZlIGEgdHJpdmlhbCBk
ZXN0cnVjdG9yIikKIyAzMCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3Jp
dGVCYXJyaWVyLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5k
bGVUeXBlcy5oIiAxCiMgMzEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dy
aXRlQmFycmllci5oIiAyCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NhbXBsaW5nQ291bnRlci5oIiAxCiMgMzMgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dyaXRlQmFycmllci5oIiAyCgpuYW1lc3BhY2UgSlNDIHsKCm5hbWVzcGFjZSBERkcg
ewpjbGFzcyBEZXNpcmVkV3JpdGVCYXJyaWVyOwp9CgpjbGFzcyBKU0NlbGw7CmNsYXNzIFZNOwpj
bGFzcyBKU0dsb2JhbE9iamVjdDsKCnRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIFdyaXRlQmFycmll
ckJhc2U7CnRlbXBsYXRlPD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZTxKU1ZhbHVlPjsKCiB2b2lk
IHNsb3dWYWxpZGF0ZUNlbGwoSlNDZWxsKik7CiB2b2lkIHNsb3dWYWxpZGF0ZUNlbGwoSlNHbG9i
YWxPYmplY3QqKTsKIyA2NiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3Jp
dGVCYXJyaWVyLmgiCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIHZhbGlkYXRlQ2VsbChU
KQp7Cn0KCgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdyaXRlQmFycmllckJhc2Ugewpw
dWJsaWM6CiAgICB2b2lkIHNldChWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIFQqIHZhbHVlKTsK
CgoKICAgIHZvaWQgY29weUZyb20oY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxUPiYgb3RoZXIpCiAg
ICB7CiAgICAgICAgbV9jZWxsID0gb3RoZXIubV9jZWxsOwogICAgfQoKICAgIHZvaWQgc2V0TWF5
QmVOdWxsKFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgVCogdmFsdWUpOwoKCgogICAgdm9pZCBz
ZXRFYXJseVZhbHVlKFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgVCogdmFsdWUpOwoKICAgIFQq
IGdldCgpIGNvbnN0CiAgICB7CgogICAgICAgIEpTQ2VsbCogY2VsbCA9IG1fY2VsbDsKICAgICAg
ICBpZiAoY2VsbCkKICAgICAgICAgICAgdmFsaWRhdGVDZWxsKGNlbGwpOwogICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFQqPihzdGF0aWNfY2FzdDx2b2lkKj4oY2VsbCkpOwogICAgfQoK
ICAgIFQqIG9wZXJhdG9yKigpIGNvbnN0CiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAg
IHZhbGlkYXRlQ2VsbDxUPihzdGF0aWNfY2FzdDxUKj4obV9jZWxsKSk7CiAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFQqPihtX2NlbGwpOwogICAgfQoKICAgIFQqIG9wZXJhdG9yLT4oKSBjb25z
dAogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICB2YWxpZGF0ZUNlbGwoc3RhdGljX2Nh
c3Q8VCo+KG1fY2VsbCkpOwogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9jZWxsKTsK
ICAgIH0KCiAgICB2b2lkIGNsZWFyKCkgeyBtX2NlbGwgPSAwOyB9CgogICAgVCoqIHNsb3QoKSB7
IHJldHVybiByZWludGVycHJldF9jYXN0PFQqKj4oJm1fY2VsbCk7IH0KCiAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9jZWxsOyB9CgogICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiAhbV9jZWxsOyB9CgogICAgdm9pZCBzZXRXaXRob3V0V3JpdGVC
YXJyaWVyKFQqIHZhbHVlKQogICAgewoKCgogICAgICAgIHRoaXMtPm1fY2VsbCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8SlNDZWxsKj4odmFsdWUpOwogICAgfQoKICAgIFQqIHVudmFsaWRhdGVkR2V0KCkg
Y29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4oc3RhdGljX2Nhc3Q8dm9pZCo+KG1f
Y2VsbCkpOyB9Cgpwcml2YXRlOgogICAgSlNDZWxsKiBtX2NlbGw7Cn07Cgp0ZW1wbGF0ZSA8PiBj
bGFzcyBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IHsKcHVibGljOgogICAgdm9pZCBzZXQoVk0m
LCBjb25zdCBKU0NlbGwqIG93bmVyLCBKU1ZhbHVlKTsKICAgIHZvaWQgc2V0V2l0aG91dFdyaXRl
QmFycmllcihKU1ZhbHVlIHZhbHVlKQogICAgewogICAgICAgIG1fdmFsdWUgPSBKU1ZhbHVlOjpl
bmNvZGUodmFsdWUpOwogICAgfQoKICAgIEpTVmFsdWUgZ2V0KCkgY29uc3QKICAgIHsKICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fdmFsdWUpOwogICAgfQogICAgdm9pZCBjbGVhcigp
IHsgbV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOyB9CiAgICB2b2lkIHNldFVu
ZGVmaW5lZCgpIHsgbV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsgfQog
ICAgdm9pZCBzZXRTdGFydGluZ1ZhbHVlKEpTVmFsdWUgdmFsdWUpIHsgbV92YWx1ZSA9IEpTVmFs
dWU6OmVuY29kZSh2YWx1ZSk7IH0KICAgIGJvb2wgaXNOdW1iZXIoKSBjb25zdCB7IHJldHVybiBn
ZXQoKS5pc051bWJlcigpOyB9CiAgICBib29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZ2V0
KCkuaXNPYmplY3QoKTsgfQogICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBnZXQoKS5p
c051bGwoKTsgfQogICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0IHsgcmV0dXJuIGdldCgp
LmlzR2V0dGVyU2V0dGVyKCk7IH0KICAgIGJvb2wgaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSBjb25z
dCB7IHJldHVybiBnZXQoKS5pc0N1c3RvbUdldHRlclNldHRlcigpOyB9CgogICAgSlNWYWx1ZSog
c2xvdCgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4o
Jm1fdmFsdWUpOwogICAgfQoKICAgIGludDMyX3QqIHRhZ1BvaW50ZXIoKSB7IHJldHVybiAmYml0
d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPigmbV92YWx1ZSktPmFzQml0cy50YWc7
IH0KICAgIGludDMyX3QqIHBheWxvYWRQb2ludGVyKCkgeyByZXR1cm4gJmJpdHdpc2VfY2FzdDxF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oJm1fdmFsdWUpLT5hc0JpdHMucGF5bG9hZDsgfQoKICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIWdldCgpOyB9CiAgICBi
b29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFnZXQoKTsgfQoKcHJpdmF0ZToKICAgIEVu
Y29kZWRKU1ZhbHVlIG1fdmFsdWU7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV3Jp
dGVCYXJyaWVyIDogcHVibGljIFdyaXRlQmFycmllckJhc2U8VD4gewogICAgcHVibGljOiB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJh
dG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQg
b3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXpl
KTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHAp
OyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9u
KSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHByaXZhdGU6IHR5cGVkZWYgaW50IF9f
dGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87CnB1YmxpYzoKICAgIFdy
aXRlQmFycmllcigpCiAgICB7CiAgICAgICAgdGhpcy0+c2V0V2l0aG91dFdyaXRlQmFycmllcigw
KTsKICAgIH0KCiAgICBXcml0ZUJhcnJpZXIoVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBU
KiB2YWx1ZSkKICAgIHsKICAgICAgICB0aGlzLT5zZXQodm0sIG93bmVyLCB2YWx1ZSk7CiAgICB9
CgogICAgV3JpdGVCYXJyaWVyKERGRzo6RGVzaXJlZFdyaXRlQmFycmllciYsIFQqIHZhbHVlKQog
ICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICB0aGlzLT5zZXRXaXRob3V0V3JpdGVCYXJy
aWVyKHZhbHVlKTsKICAgIH0KCiAgICBlbnVtIE1heUJlTnVsbFRhZyB7IE1heUJlTnVsbCB9Owog
ICAgV3JpdGVCYXJyaWVyKFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwgVCogdmFsdWUsIE1h
eUJlTnVsbFRhZykKICAgIHsKICAgICAgICB0aGlzLT5zZXRNYXlCZU51bGwodm0sIG93bmVyLCB2
YWx1ZSk7CiAgICB9Cn07CgplbnVtIFVuZGVmaW5lZFdyaXRlQmFycmllclRhZ1R5cGUgeyBVbmRl
ZmluZWRXcml0ZUJhcnJpZXJUYWcgfTsKdGVtcGxhdGUgPD4gY2xhc3MgV3JpdGVCYXJyaWVyPFVu
a25vd24+IDogcHVibGljIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4gewogICAgcHVibGljOiB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZv
aWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQq
IG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhz
aXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVl
KHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0
aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHByaXZhdGU6IHR5cGVkZWYgaW50
IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87CnB1YmxpYzoKICAg
IFdyaXRlQmFycmllcigpCiAgICB7CiAgICAgICAgdGhpcy0+c2V0V2l0aG91dFdyaXRlQmFycmll
cihKU1ZhbHVlKCkpOwogICAgfQogICAgV3JpdGVCYXJyaWVyKFVuZGVmaW5lZFdyaXRlQmFycmll
clRhZ1R5cGUpCiAgICB7CiAgICAgICAgdGhpcy0+c2V0V2l0aG91dFdyaXRlQmFycmllcihqc1Vu
ZGVmaW5lZCgpKTsKICAgIH0KCiAgICBXcml0ZUJhcnJpZXIoVk0mIHZtLCBjb25zdCBKU0NlbGwq
IG93bmVyLCBKU1ZhbHVlIHZhbHVlKQogICAgewogICAgICAgIHRoaXMtPnNldCh2bSwgb3duZXIs
IHZhbHVlKTsKICAgIH0KCiAgICBXcml0ZUJhcnJpZXIoREZHOjpEZXNpcmVkV3JpdGVCYXJyaWVy
JiwgSlNWYWx1ZSB2YWx1ZSkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgdGhpcy0+
c2V0V2l0aG91dFdyaXRlQmFycmllcih2YWx1ZSk7CiAgICB9Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5h
bWUgVSwgdHlwZW5hbWUgVj4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXcml0ZUJhcnJp
ZXJCYXNlPFU+JiBsaHMsIGNvbnN0IFdyaXRlQmFycmllckJhc2U8Vj4mIHJocykKewogICAgcmV0
dXJuIGxocy5nZXQoKSA9PSByaHMuZ2V0KCk7Cn0KCn0KIyAzNyAiLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgiIDIKCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIENv
cHlWaXNpdG9yOwpjbGFzcyBFeGVjU3RhdGU7CmNsYXNzIElkZW50aWZpZXI7CmNsYXNzIEpTQXJy
YXlCdWZmZXJWaWV3OwpjbGFzcyBKU0Rlc3RydWN0aWJsZU9iamVjdDsKY2xhc3MgSlNHbG9iYWxP
YmplY3Q7CmNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKY2xhc3MgUHJvcGVydHlEZXNjcmlw
dG9yOwpjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKY2xhc3MgU3RydWN0dXJlOwoKdGVtcGxhdGU8
dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmKTsKdGVtcGxhdGU8dHlwZW5hbWUg
VD4gdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBzaXplX3QpOwoKI2RlZmluZSBERUNMQVJFX0VY
UE9SVF9JTkZPIHByb3RlY3RlZDogc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgOjpKU0M6OkNs
YXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGlu
Zm8oKSB7IHJldHVybiAmc19pbmZvOyB9CgoKCgoKI2RlZmluZSBERUNMQVJFX0lORk8gcHJvdGVj
dGVkOiBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGlj
IGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CgoKCgoK
Y2xhc3MgSlNDZWxsIHsKICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwogICAgZnJpZW5kIGNsYXNz
IE1hcmtlZEJsb2NrOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9j
YXRlQ2VsbChIZWFwJik7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgdm9pZCogYWxs
b2NhdGVDZWxsKEhlYXAmLCBzaXplX3QpOwoKcHVibGljOgogICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gMDsKCiAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3Ry
dWN0aW9uID0gZmFsc2U7CgogICAgc3RhdGljIEpTQ2VsbCogc2Vlbk11bHRpcGxlQ2FsbGVlT2Jq
ZWN0cygpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0NlbGwqPihzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KDEpKTsgfQoKICAgIGVudW0gQ3JlYXRpbmdFYXJseUNlbGxUYWcgeyBDcmVhdGluZ0Vhcmx5
Q2VsbCB9OwogICAgSlNDZWxsKENyZWF0aW5nRWFybHlDZWxsVGFnKTsKCnByb3RlY3RlZDoKICAg
IEpTQ2VsbChWTSYsIFN0cnVjdHVyZSopOwogICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwq
KTsKCnB1YmxpYzoKCiAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CiAgICBib29sIGlzU3ltYm9s
KCkgY29uc3Q7CiAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7CiAgICBib29sIGlzR2V0dGVyU2V0
dGVyKCkgY29uc3Q7CiAgICBib29sIGlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkgY29uc3Q7CiAgICBi
b29sIGlzUHJveHkoKSBjb25zdDsKICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKikg
Y29uc3Q7CiAgICBib29sIGlzQVBJVmFsdWVXcmFwcGVyKCkgY29uc3Q7CgogICAgSlNUeXBlIHR5
cGUoKSBjb25zdDsKICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUoKSBjb25zdDsKICAgIFN0
cnVjdHVyZUlEIHN0cnVjdHVyZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVJRDsgfQog
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdDsKICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
KFZNJikgY29uc3Q7CiAgICB2b2lkIHNldFN0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSopOwogICAg
dm9pZCBjbGVhclN0cnVjdHVyZSgpIHsgbV9zdHJ1Y3R1cmVJRCA9IDA7IH0KCiAgICBUeXBlSW5m
bzo6SW5saW5lVHlwZUZsYWdzIGlubGluZVR5cGVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxh
Z3M7IH0KCiAgICBjb25zdCBjaGFyKiBjbGFzc05hbWUoKSBjb25zdDsKCiAgICBWTSogdm0oKSBj
b25zdDsKCgogICAgYm9vbCBnZXRTdHJpbmcoRXhlY1N0YXRlKiwgU3RyaW5nJikgY29uc3Q7CiAg
ICBTdHJpbmcgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgSlNPYmplY3QqIGdldE9i
amVjdCgpOwogICAgY29uc3QgSlNPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0OwoKCgoKCgoKICAg
IHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgc3Rh
dGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRh
Jik7CgoKICAgIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0
aXZlVHlwZSkgY29uc3Q7CiAgICBib29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqLCBk
b3VibGUmIG51bWJlciwgSlNWYWx1ZSYpIGNvbnN0OwogICAgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0
YXRlKikgY29uc3Q7CiAgICBUcmlTdGF0ZSBwdXJlVG9Cb29sZWFuKCkgY29uc3Q7CiAgICBkb3Vi
bGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CiAgICBKU09iamVjdCogdG9PYmplY3QoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKICAgIHN0YXRpYyB2b2lkIGR1bXBUb1N0cmVhbShjb25zdCBKU0NlbGwqLCBQ
cmludFN0cmVhbSYpOwoKICAgIHNpemVfdCBlc3RpbWF0ZWRTaXplSW5CeXRlcygpIGNvbnN0Owog
ICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOwoKICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgIHN0YXRpYyB2b2lkIGNv
cHlCYWNraW5nU3RvcmUoSlNDZWxsKiwgQ29weVZpc2l0b3ImLCBDb3B5VG9rZW4pOwoKICAgIHN0
YXRpYyB2b2lkIGhlYXBTbmFwc2hvdChKU0NlbGwqLCBIZWFwU25hcHNob3RCdWlsZGVyJik7CgoK
ICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Q7CiAgICBjb25zdCBNZXRob2RU
YWJsZSogbWV0aG9kVGFibGUoKSBjb25zdDsKICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RU
YWJsZShWTSYpIGNvbnN0OwogICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICBzdGF0aWMgYm9v
bCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CgogICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUpOwoKICAgIHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwqLCBFeGVjU3RhdGUqLCBF
Q01BTW9kZSk7CgogICAgdm9pZCB6YXAoKSB7ICpyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdCoq
Pih0aGlzKSA9IDA7IH0KICAgIGJvb2wgaXNaYXBwZWQoKSBjb25zdCB7IHJldHVybiAhKnJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90KiBjb25zdCo+KHRoaXMpOyB9CgogICAgc3RhdGljIGJvb2wg
Y2FuVXNlRmFzdEdldE93blByb3BlcnR5KGNvbnN0IFN0cnVjdHVyZSYpOwogICAgSlNWYWx1ZSBm
YXN0R2V0T3duUHJvcGVydHkoVk0mLCBTdHJ1Y3R1cmUmLCBQcm9wZXJ0eU5hbWUpOwoKCgoKICAg
IENlbGxTdGF0ZSBjZWxsU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2NlbGxTdGF0ZTsgfQoKICAg
IHZvaWQgc2V0Q2VsbFN0YXRlKENlbGxTdGF0ZSBkYXRhKSBjb25zdCB7IGNvbnN0X2Nhc3Q8SlND
ZWxsKj4odGhpcyktPm1fY2VsbFN0YXRlID0gZGF0YTsgfQoKICAgIHN0YXRpYyBwdHJkaWZmX3Qg
c3RydWN0dXJlSURPZmZzZXQoKQogICAgewogICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2Fz
dDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPigweDQwMDApLT5tX3N0cnVj
dHVyZUlEKSkgLSAweDQwMDApOwogICAgfQoKICAgIHN0YXRpYyBwdHJkaWZmX3QgdHlwZUluZm9G
bGFnc09mZnNldCgpCiAgICB7CiAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRp
ZmZfdD4oJihyZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KDB4NDAwMCktPm1fZmxhZ3MpKSAtIDB4
NDAwMCk7CiAgICB9CgogICAgc3RhdGljIHB0cmRpZmZfdCB0eXBlSW5mb1R5cGVPZmZzZXQoKQog
ICAgewogICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRl
cnByZXRfY2FzdDxKU0NlbGwqPigweDQwMDApLT5tX3R5cGUpKSAtIDB4NDAwMCk7CiAgICB9Cgog
ICAgc3RhdGljIHB0cmRpZmZfdCBpbmRleGluZ1R5cGVPZmZzZXQoKQogICAgewogICAgICAgIHJl
dHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxKU0Nl
bGwqPigweDQwMDApLT5tX2luZGV4aW5nVHlwZSkpIC0gMHg0MDAwKTsKICAgIH0KCiAgICBzdGF0
aWMgcHRyZGlmZl90IGNlbGxTdGF0ZU9mZnNldCgpCiAgICB7CiAgICAgICAgcmV0dXJuIChyZWlu
dGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KDB4NDAw
MCktPm1fY2VsbFN0YXRlKSkgLSAweDQwMDApOwogICAgfQoKICAgIHN0YXRpYyBjb25zdCBUeXBl
ZEFycmF5VHlwZSBUeXBlZEFycmF5U3RvcmFnZVR5cGUgPSBOb3RUeXBlZEFycmF5Owpwcm90ZWN0
ZWQ6CgogICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIFN0cnVjdHVyZSosIENyZWF0aW5nRWFybHlDZWxsVGFnKTsKCgogICAgc3RhdGljIEpT
VmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVk
UHJpbWl0aXZlVHlwZSk7CiAgICBzdGF0aWMgX19hdHRyaWJ1dGUoKF9fbm9yZXR1cm5fXykpIHZv
aWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgIHN0YXRpYyBfX2F0dHJpYnV0ZSgoX19ub3Jl
dHVybl9fKSkgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICBzdGF0aWMg
X19hdHRyaWJ1dGUoKF9fbm9yZXR1cm5fXykpIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKCiAg
ICBzdGF0aWMgdWludDMyX3QgZ2V0RW51bWVyYWJsZUxlbmd0aChFeGVjU3RhdGUqLCBKU09iamVj
dCopOwogICAgc3RhdGljIF9fYXR0cmlidXRlKChfX25vcmV0dXJuX18pKSB2b2lkIGdldFN0cnVj
dHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICBzdGF0aWMgX19hdHRyaWJ1dGUoKF9fbm9yZXR1cm5f
XykpIHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICBzdGF0aWMgX19hdHRyaWJ1
dGUoKF9fbm9yZXR1cm5fXykpIGJvb2wgcHJldmVudEV4dGVuc2lvbnMoSlNPYmplY3QqLCBFeGVj
U3RhdGUqKTsKICAgIHN0YXRpYyBfX2F0dHJpYnV0ZSgoX19ub3JldHVybl9fKSkgYm9vbCBpc0V4
dGVuc2libGUoSlNPYmplY3QqLCBFeGVjU3RhdGUqKTsKICAgIHN0YXRpYyBfX2F0dHJpYnV0ZSgo
X19ub3JldHVybl9fKSkgYm9vbCBzZXRQcm90b3R5cGUoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBib29sKTsKICAgIHN0YXRpYyBfX2F0dHJpYnV0ZSgoX19ub3JldHVybl9fKSkgSlNW
YWx1ZSBnZXRQcm90b3R5cGUoSlNPYmplY3QqLCBFeGVjU3RhdGUqKTsKCiAgICBzdGF0aWMgU3Ry
aW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwogICAgc3RhdGljIGJvb2wgY3VzdG9tSGFz
SW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKICAgIHN0YXRpYyBib29s
IGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKICAgIHN0YXRpYyBBcnJheUJ1ZmZlciogc2xvd0Rvd25BbmRXYXN0ZU1lbW9yeShK
U0FycmF5QnVmZmVyVmlldyopOwogICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3
PiBnZXRUeXBlZEFycmF5SW1wbChKU0FycmF5QnVmZmVyVmlldyopOwoKcHJpdmF0ZToKICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CgogICAgU3RydWN0dXJlSUQgbV9zdHJ1
Y3R1cmVJRDsKICAgIEluZGV4aW5nVHlwZSBtX2luZGV4aW5nVHlwZTsKICAgIEpTVHlwZSBtX3R5
cGU7CiAgICBUeXBlSW5mbzo6SW5saW5lVHlwZUZsYWdzIG1fZmxhZ3M7CiAgICBDZWxsU3RhdGUg
bV9jZWxsU3RhdGU7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUbywgdHlwZW5hbWUgRnJvbT4KaW5s
aW5lIFRvIGpzQ2FzdChGcm9tKiBmcm9tKQp7CiAgICAoKHZvaWQpMCk7CiAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VG8+KGZyb20pOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUbz4KaW5saW5lIFRvIGpz
Q2FzdChKU1ZhbHVlIGZyb20pCnsKICAgICgodm9pZCkwKTsKICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxUbz4oZnJvbS5hc0NlbGwoKSk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFRvLCB0eXBlbmFtZSBG
cm9tPgppbmxpbmUgVG8ganNEeW5hbWljQ2FzdChGcm9tKiBmcm9tKQp7CiAgICBpZiAoX19idWls
dGluX2V4cGVjdCghIShmcm9tLT5pbmhlcml0cyhzdGQ6OnJlbW92ZV9wb2ludGVyPFRvPjo6dHlw
ZTo6aW5mbygpKSksIDEpKQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUbz4oZnJvbSk7CiAg
ICByZXR1cm4gbnVsbHB0cjsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVG8+CmlubGluZSBUbyBqc0R5
bmFtaWNDYXN0KEpTVmFsdWUgZnJvbSkKewogICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoZnJv
bS5pc0NlbGwoKSAmJiBmcm9tLmFzQ2VsbCgpLT5pbmhlcml0cyhzdGQ6OnJlbW92ZV9wb2ludGVy
PFRvPjo6dHlwZTo6aW5mbygpKSksIDEpKQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUbz4o
ZnJvbS5hc0NlbGwoKSk7CiAgICByZXR1cm4gbnVsbHB0cjsKfQoKfQojIDMwICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oIiAyCiMgMSAiLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldElubGluZXMuaCIgMQojIDI3ICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0SW5saW5lcy5oIgojZGVmaW5lIFdlYWtTZXRJ
bmxpbmVzX2ggCgoKCm5hbWVzcGFjZSBKU0MgewoKaW5saW5lIFdlYWtJbXBsKiBXZWFrU2V0Ojph
bGxvY2F0ZShKU1ZhbHVlIGpzVmFsdWUsIFdlYWtIYW5kbGVPd25lciogd2Vha0hhbmRsZU93bmVy
LCB2b2lkKiBjb250ZXh0KQp7CiAgICBXZWFrU2V0JiB3ZWFrU2V0ID0gTWFya2VkQmxvY2s6OmJs
b2NrRm9yKGpzVmFsdWUuYXNDZWxsKCkpLT53ZWFrU2V0KCk7CiAgICBXZWFrQmxvY2s6OkZyZWVD
ZWxsKiBhbGxvY2F0b3IgPSB3ZWFrU2V0Lm1fYWxsb2NhdG9yOwogICAgaWYgKF9fYnVpbHRpbl9l
eHBlY3QoISEoIWFsbG9jYXRvciksIDApKQogICAgICAgIGFsbG9jYXRvciA9IHdlYWtTZXQuZmlu
ZEFsbG9jYXRvcigpOwogICAgd2Vha1NldC5tX2FsbG9jYXRvciA9IGFsbG9jYXRvci0+bmV4dDsK
CiAgICBXZWFrSW1wbCogd2Vha0ltcGwgPSBXZWFrQmxvY2s6OmFzV2Vha0ltcGwoYWxsb2NhdG9y
KTsKICAgIHJldHVybiBuZXcgKE5vdE51bGwsIHdlYWtJbXBsKSBXZWFrSW1wbChqc1ZhbHVlLCB3
ZWFrSGFuZGxlT3duZXIsIGNvbnRleHQpOwp9CgppbmxpbmUgdm9pZCBXZWFrQmxvY2s6OmZpbmFs
aXplKFdlYWtJbXBsKiB3ZWFrSW1wbCkKewogICAgKCh2b2lkKTApOwogICAgd2Vha0ltcGwtPnNl
dFN0YXRlKFdlYWtJbXBsOjpGaW5hbGl6ZWQpOwogICAgV2Vha0hhbmRsZU93bmVyKiB3ZWFrSGFu
ZGxlT3duZXIgPSB3ZWFrSW1wbC0+d2Vha0hhbmRsZU93bmVyKCk7CiAgICBpZiAoIXdlYWtIYW5k
bGVPd25lcikKICAgICAgICByZXR1cm47CiAgICB3ZWFrSGFuZGxlT3duZXItPmZpbmFsaXplKEhh
bmRsZTxVbmtub3duPjo6d3JhcFNsb3QoJmNvbnN0X2Nhc3Q8SlNWYWx1ZSY+KHdlYWtJbXBsLT5q
c1ZhbHVlKCkpKSwgd2Vha0ltcGwtPmNvbnRleHQoKSk7Cn0KCn0KIyAzMSAiLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0lubGluZXMuaCIgMgoKCgpuYW1lc3BhY2UgSlNDIHsK
CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFrKFQqIGNlbGwsIFdlYWtI
YW5kbGVPd25lciogd2Vha093bmVyLCB2b2lkKiBjb250ZXh0KQogICAgOiBtX2ltcGwoY2VsbCA/
IFdlYWtTZXQ6OmFsbG9jYXRlKGNlbGwsIHdlYWtPd25lciwgY29udGV4dCkgOiAwKQp7Cn0KCnRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIFdlYWs8VD46OmlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCkgY29uc3QKewogICAgcmV0dXJuIG1faW1wbCA9PSBoYXNoVGFibGVEZWxldGVkVmFs
dWUoKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46OldlYWsodHlwZW5h
bWUgV2VhazxUPjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKQogICAgOiBtX2ltcGwoaGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCkpCnsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8
VD46OldlYWsoV2VhayYmIG90aGVyKQogICAgOiBtX2ltcGwob3RoZXIubGVha0ltcGwoKSkKewp9
Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBzd2FwKFdlYWs8VD4mIGEsIFdlYWs8VD4m
IGIpCnsKICAgIGEuc3dhcChiKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQg
V2VhazxUPjo6c3dhcChXZWFrJiBvdGhlcikKewogICAgc3RkOjpzd2FwKG1faW1wbCwgb3RoZXIu
bV9pbXBsKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGF1dG8gV2VhazxUPjo6b3Bl
cmF0b3I9KFdlYWsmJiBvdGhlcikgLT4gV2VhayYKewogICAgV2VhayB3ZWFrID0gc3RkOjptb3Zl
PFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihvdGhlcik7CiAgICBzd2FwKHdlYWspOwogICAgcmV0
dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCogV2VhazxUPjo6b3Bl
cmF0b3ItPigpIGNvbnN0CnsKICAgICgodm9pZCkwKTsKICAgIHJldHVybiBqc0Nhc3Q8VCo+KG1f
aW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5l
IFQmIFdlYWs8VD46Om9wZXJhdG9yKigpIGNvbnN0CnsKICAgICgodm9pZCkwKTsKICAgIHJldHVy
biAqanNDYXN0PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7Cn0KCnRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBUKiBXZWFrPFQ+OjpnZXQoKSBjb25zdAp7CiAgICBpZiAoIW1faW1w
bCB8fCBtX2ltcGwtPnN0YXRlKCkgIT0gV2Vha0ltcGw6OkxpdmUpCiAgICAgICAgcmV0dXJuIDA7
CiAgICByZXR1cm4ganNDYXN0PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7Cn0KCnRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIFdlYWs8VD46OndhcyhUKiBvdGhlcikgY29u
c3QKewogICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwo
KSkgPT0gb3RoZXI7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIFdlYWs8VD46
Om9wZXJhdG9yISgpIGNvbnN0CnsKICAgIHJldHVybiAhbV9pbXBsIHx8ICFtX2ltcGwtPmpzVmFs
dWUoKSB8fCBtX2ltcGwtPnN0YXRlKCkgIT0gV2Vha0ltcGw6OkxpdmU7Cn0KCnRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpvcGVyYXRvciBib29sKCkgY29uc3QKewogICAgcmV0
dXJuICEhKnRoaXM7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrSW1wbCogV2Vh
azxUPjo6bGVha0ltcGwoKQp7CiAgICBXZWFrSW1wbCogaW1wbCA9IG1faW1wbDsKICAgIG1faW1w
bCA9IG51bGxwdHI7CiAgICByZXR1cm4gaW1wbDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIFdlYWtJbXBsKiBXZWFrPFQ+OjpoYXNoVGFibGVEZWxldGVkVmFsdWUoKQp7CiAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxXZWFrSW1wbCo+KC0xKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2VhazxUPiYgbGhzLCBjb25zdCBXZWFr
PFQ+JiByaHMpCnsKICAgIHJldHVybiBsaHMuZ2V0KCkgPT0gcmhzLmdldCgpOwp9CgoKCnRlbXBs
YXRlPHR5cGVuYW1lIE1hcCwgdHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZT4gaW5saW5lIHZv
aWQgd2Vha0FkZChNYXAmIG1hcCwgY29uc3QgS2V5JiBrZXksIFZhbHVlJiYgdmFsdWUpCnsKICAg
ICgodm9pZCkwKTsKICAgIG1hcC5zZXQoa2V5LCBzdGQ6OmZvcndhcmQ8VmFsdWU+KHZhbHVlKSk7
Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIE1hcCwgdHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZT4g
aW5saW5lIHZvaWQgd2Vha1JlbW92ZShNYXAmIG1hcCwgY29uc3QgS2V5JiBrZXksIFZhbHVlIHZh
bHVlKQp7CiAgICB0eXBlbmFtZSBNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQoa2V5KTsKICAg
ICgodm9pZCl2YWx1ZSk7CiAgICAoKHZvaWQpMCk7CiAgICAoKHZvaWQpMCk7CiAgICAoKHZvaWQp
MCk7CiAgICBtYXAucmVtb3ZlKGl0KTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZv
aWQgd2Vha0NsZWFyKFdlYWs8VD4mIHdlYWssIFQqIGNlbGwpCnsKICAgICgodm9pZCljZWxsKTsK
ICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKICAgIHdlYWsuY2xlYXIoKTsKfQoKfQoKbmFt
ZXNwYWNlIFdURiB7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPEpT
Qzo6V2VhazxUPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7CiAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNlOwp9OwoKdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0
czxKU0M6OldlYWs8VD4+IHsKICAgIHR5cGVkZWYgSlNDOjpXZWFrPFQ+IFN0b3JhZ2VUeXBlOwoK
ICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1ZVR5cGU7CiAgICBzdGF0aWMgRW1w
dHlWYWx1ZVR5cGUgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KCiAgICB0eXBlZGVm
IFQqIFBlZWtUeXBlOwogICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoY29uc3QgU3RvcmFnZVR5cGUm
IHZhbHVlKSB7IHJldHVybiB2YWx1ZS5nZXQoKTsgfQogICAgc3RhdGljIFBlZWtUeXBlIHBlZWso
RW1wdHlWYWx1ZVR5cGUpIHsgcmV0dXJuIFBlZWtUeXBlKCk7IH0KfTsKCn0KIyAzOSAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaCIgMgoKCgoKCm5hbWVzcGFjZSBK
U0MgewoKY2xhc3MgVk07CmNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CgpjbGFzcyBKSVRUaHVua3Mg
ZmluYWwgOiBwcml2YXRlIFdlYWtIYW5kbGVPd25lciB7CiAgICBwdWJsaWM6IHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3
W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRv
ciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZv
aWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2
b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gcHJpdmF0ZTogdHlwZWRlZiBpbnQgX190aGlzSXNI
ZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybzsKcHVibGljOgogICAgSklUVGh1bmtz
KCk7CiAgICB2aXJ0dWFsIH5KSVRUaHVua3MoKTsKCiAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
Y3RpTmF0aXZlQ2FsbChWTSopOwogICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGN0aU5hdGl2ZUNv
bnN0cnVjdChWTSopOwogICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGN0aU5hdGl2ZVRhaWxDYWxs
KFZNKik7CiAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpTmF0aXZlVGFpbENhbGxXaXRob3V0
U2F2ZWRUYWdzKFZNKik7CgogICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGN0aVN0dWIoVk0qLCBU
aHVua0dlbmVyYXRvcik7CgogICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihW
TSosIE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0qLCBO
YXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIFRodW5rR2VuZXJhdG9y
LCBJbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICBOYXRpdmVFeGVjdXRhYmxlKiBo
b3N0RnVuY3Rpb25TdHViKFZNKiwgTmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yLCBJbnRy
aW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSk7CgogICAgdm9pZCBjbGVhckhvc3RGdW5jdGlvblN0
dWJzKCk7Cgpwcml2YXRlOgogICAgdm9pZCBmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQq
IGNvbnRleHQpIG92ZXJyaWRlOwoKICAgIHR5cGVkZWYgSGFzaE1hcDxUaHVua0dlbmVyYXRvciwg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPiBDVElTdHViTWFwOwogICAgQ1RJU3R1Yk1hcCBtX2N0aVN0
dWJNYXA7CgogICAgdHlwZWRlZiBzdGQ6OnR1cGxlPE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5j
dGlvbiwgU3RyaW5nPiBIb3N0RnVuY3Rpb25LZXk7CgogICAgc3RydWN0IEhvc3RGdW5jdGlvbkhh
c2ggewogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEhvc3RGdW5jdGlvbktleSYg
a2V5KQogICAgICAgIHsKICAgICAgICAgICAgdW5zaWduZWQgaGFzaCA9IFdURjo6cGFpckludEhh
c2goaGFzaFBvaW50ZXIoc3RkOjpnZXQ8MD4oa2V5KSksIGhhc2hQb2ludGVyKHN0ZDo6Z2V0PDE+
KGtleSkpKTsKICAgICAgICAgICAgaWYgKCFzdGQ6OmdldDwyPihrZXkpLmlzTnVsbCgpKQogICAg
ICAgICAgICAgICAgaGFzaCA9IFdURjo6cGFpckludEhhc2goaGFzaCwgRGVmYXVsdEhhc2g8U3Ry
aW5nPjo6SGFzaDo6aGFzaChzdGQ6OmdldDwyPihrZXkpKSk7CiAgICAgICAgICAgIHJldHVybiBo
YXNoOwogICAgICAgIH0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIb3N0RnVuY3Rp
b25LZXkmIGEsIGNvbnN0IEhvc3RGdW5jdGlvbktleSYgYikKICAgICAgICB7CiAgICAgICAgICAg
IHJldHVybiAoc3RkOjpnZXQ8MD4oYSkgPT0gc3RkOjpnZXQ8MD4oYikpICYmIChzdGQ6OmdldDwx
PihhKSA9PSBzdGQ6OmdldDwxPihiKSkgJiYgKHN0ZDo6Z2V0PDI+KGEpID09IHN0ZDo6Z2V0PDI+
KGIpKTsKICAgICAgICB9CiAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSB0cnVlOwoKICAgIHByaXZhdGU6CiAgICAgICAgc3RhdGljIGlubGlu
ZSB1bnNpZ25lZCBoYXNoUG9pbnRlcihOYXRpdmVGdW5jdGlvbiBwKQogICAgICAgIHsKICAgICAg
ICAgICAgcmV0dXJuIERlZmF1bHRIYXNoPE5hdGl2ZUZ1bmN0aW9uPjo6SGFzaDo6aGFzaChwKTsK
ICAgICAgICB9CiAgICB9OwoKICAgIHN0cnVjdCBIb3N0RnVuY3Rpb25IYXNoVHJhaXQgOiBXVEY6
OkdlbmVyaWNIYXNoVHJhaXRzPEhvc3RGdW5jdGlvbktleT4gewogICAgICAgIHN0YXRpYyBjb25z
dCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOwogICAgICAgIHN0YXRpYyBFbXB0eVZhbHVl
VHlwZSBlbXB0eVZhbHVlKCkgeyByZXR1cm4gc3RkOjptYWtlX3R1cGxlKG51bGxwdHIsIG51bGxw
dHIsIFN0cmluZygpKTsgfQoKICAgICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFs
dWUoSG9zdEZ1bmN0aW9uS2V5JiBzbG90KSB7IHN0ZDo6Z2V0PDA+KHNsb3QpID0gcmVpbnRlcnBy
ZXRfY2FzdDxOYXRpdmVGdW5jdGlvbj4oLTEpOyB9CiAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxl
dGVkVmFsdWUoY29uc3QgSG9zdEZ1bmN0aW9uS2V5JiB2YWx1ZSkgeyByZXR1cm4gc3RkOjpnZXQ8
MD4odmFsdWUpID09IHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KC0xKTsgfQogICAg
fTsKCiAgICB0eXBlZGVmIEhhc2hNYXA8SG9zdEZ1bmN0aW9uS2V5LCBXZWFrPE5hdGl2ZUV4ZWN1
dGFibGU+LCBIb3N0RnVuY3Rpb25IYXNoLCBIb3N0RnVuY3Rpb25IYXNoVHJhaXQ+IEhvc3RGdW5j
dGlvblN0dWJNYXA7CiAgICBzdGQ6OnVuaXF1ZV9wdHI8SG9zdEZ1bmN0aW9uU3R1Yk1hcD4gbV9o
b3N0RnVuY3Rpb25TdHViTWFwOwogICAgTG9jayBtX2xvY2s7Cn07Cgp9CiMgNDMgIi4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgiIDIKCgoKCiMgMSAiLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWljcm90YXNrLmgiIDEKIyAyNyAiLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWljcm90YXNrLmgiCiNkZWZpbmUgTWljcm90YXNrX2gg
CgoKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgRXhlY1N0YXRlOwoKY2xhc3MgTWljcm90YXNrIDog
cHVibGljIFJlZkNvdW50ZWQ8TWljcm90YXNrPiB7CnB1YmxpYzoKICAgIHZpcnR1YWwgfk1pY3Jv
dGFzaygpCiAgICB7CiAgICB9CgogICAgdmlydHVhbCB2b2lkIHJ1bihFeGVjU3RhdGUqKSA9IDA7
Cn07Cgp9CiMgNDggIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgiIDIK
IyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1lcmljU3RyaW5ncy5o
IiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWVyaWNTdHJp
bmdzLmgiCiNkZWZpbmUgTnVtZXJpY1N0cmluZ3NfaCAKCgoKCgpuYW1lc3BhY2UgSlNDIHsKCmNs
YXNzIE51bWVyaWNTdHJpbmdzIHsKcHVibGljOgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgY29uc3QgU3RyaW5nJiBhZGQoZG91YmxlIGQpCiAgICB7CiAgICAg
ICAgQ2FjaGVFbnRyeTxkb3VibGU+JiBlbnRyeSA9IGxvb2t1cChkKTsKICAgICAgICBpZiAoZCA9
PSBlbnRyeS5rZXkgJiYgIWVudHJ5LnZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICByZXR1cm4g
ZW50cnkudmFsdWU7CiAgICAgICAgZW50cnkua2V5ID0gZDsKICAgICAgICBlbnRyeS52YWx1ZSA9
IFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KGQpOwogICAgICAgIHJldHVybiBlbnRy
eS52YWx1ZTsKICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBjb25zdCBTdHJpbmcmIGFkZChpbnQgaSkKICAgIHsKICAgICAgICBpZiAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGkpIDwgY2FjaGVTaXplKQogICAgICAgICAgICByZXR1cm4gbG9va3VwU21h
bGxTdHJpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpKTsKICAgICAgICBDYWNoZUVudHJ5PGlu
dD4mIGVudHJ5ID0gbG9va3VwKGkpOwogICAgICAgIGlmIChpID09IGVudHJ5LmtleSAmJiAhZW50
cnkudmFsdWUuaXNOdWxsKCkpCiAgICAgICAgICAgIHJldHVybiBlbnRyeS52YWx1ZTsKICAgICAg
ICBlbnRyeS5rZXkgPSBpOwogICAgICAgIGVudHJ5LnZhbHVlID0gU3RyaW5nOjpudW1iZXIoaSk7
CiAgICAgICAgcmV0dXJuIGVudHJ5LnZhbHVlOwogICAgfQoKICAgIGlubGluZSBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGNvbnN0IFN0cmluZyYgYWRkKHVuc2lnbmVkIGkpCiAg
ICB7CiAgICAgICAgaWYgKGkgPCBjYWNoZVNpemUpCiAgICAgICAgICAgIHJldHVybiBsb29rdXBT
bWFsbFN0cmluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSkpOwogICAgICAgIENhY2hlRW50cnk8
dW5zaWduZWQ+JiBlbnRyeSA9IGxvb2t1cChpKTsKICAgICAgICBpZiAoaSA9PSBlbnRyeS5rZXkg
JiYgIWVudHJ5LnZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICByZXR1cm4gZW50cnkudmFsdWU7
CiAgICAgICAgZW50cnkua2V5ID0gaTsKICAgICAgICBlbnRyeS52YWx1ZSA9IFN0cmluZzo6bnVt
YmVyKGkpOwogICAgICAgIHJldHVybiBlbnRyeS52YWx1ZTsKICAgIH0KcHJpdmF0ZToKICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgY2FjaGVTaXplID0gNjQ7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KICAgIHN0cnVjdCBDYWNoZUVudHJ5IHsKICAgICAgICBUIGtleTsKICAgICAgICBTdHJpbmcg
dmFsdWU7CiAgICB9OwoKICAgIENhY2hlRW50cnk8ZG91YmxlPiYgbG9va3VwKGRvdWJsZSBkKSB7
IHJldHVybiBkb3VibGVDYWNoZVtXVEY6OkZsb2F0SGFzaDxkb3VibGU+OjpoYXNoKGQpICYgKGNh
Y2hlU2l6ZSAtIDEpXTsgfQogICAgQ2FjaGVFbnRyeTxpbnQ+JiBsb29rdXAoaW50IGkpIHsgcmV0
dXJuIGludENhY2hlW1dURjo6SW50SGFzaDxpbnQ+OjpoYXNoKGkpICYgKGNhY2hlU2l6ZSAtIDEp
XTsgfQogICAgQ2FjaGVFbnRyeTx1bnNpZ25lZD4mIGxvb2t1cCh1bnNpZ25lZCBpKSB7IHJldHVy
biB1bnNpZ25lZENhY2hlW1dURjo6SW50SGFzaDx1bnNpZ25lZD46Omhhc2goaSkgJiAoY2FjaGVT
aXplIC0gMSldOyB9CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p
KSBjb25zdCBTdHJpbmcmIGxvb2t1cFNtYWxsU3RyaW5nKHVuc2lnbmVkIGkpCiAgICB7CiAgICAg
ICAgKCh2b2lkKTApOwogICAgICAgIGlmIChzbWFsbEludENhY2hlW2ldLmlzTnVsbCgpKQogICAg
ICAgICAgICBzbWFsbEludENhY2hlW2ldID0gU3RyaW5nOjpudW1iZXIoaSk7CiAgICAgICAgcmV0
dXJuIHNtYWxsSW50Q2FjaGVbaV07CiAgICB9CgogICAgc3RkOjphcnJheTxDYWNoZUVudHJ5PGRv
dWJsZT4sIGNhY2hlU2l6ZT4gZG91YmxlQ2FjaGU7CiAgICBzdGQ6OmFycmF5PENhY2hlRW50cnk8
aW50PiwgY2FjaGVTaXplPiBpbnRDYWNoZTsKICAgIHN0ZDo6YXJyYXk8Q2FjaGVFbnRyeTx1bnNp
Z25lZD4sIGNhY2hlU2l6ZT4gdW5zaWduZWRDYWNoZTsKICAgIHN0ZDo6YXJyYXk8U3RyaW5nLCBj
YWNoZVNpemU+IHNtYWxsSW50Q2FjaGU7Cn07Cgp9CiMgNDkgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcml2YXRlTmFtZS5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgiCiNkZWZpbmUgUHJpdmF0ZU5hbWVfaCAKCiMgMSAiLi4v
Li4vU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgiIDEKIyAyNyAiLi4vLi4vU291cmNl
L1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgiCiNkZWZpbmUgU3ltYm9sSW1wbF9oIAoKCgpuYW1l
c3BhY2UgV1RGIHsKCgoKY2xhc3MgU3ltYm9sSW1wbCA6IHB1YmxpYyBVbmlxdWVkU3RyaW5nSW1w
bCB7CnByaXZhdGU6CiAgICBTeW1ib2xJbXBsKCkgPSBkZWxldGU7Cn07CiMgNTcgIi4uLy4uL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5oIgp9Cgp1c2luZyBXVEY6OlN5bWJvbEltcGw7
CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgi
IDIKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgUHJpdmF0ZU5hbWUgewpwdWJsaWM6CiAgICBQcml2
YXRlTmFtZSgpCiAgICAgICAgOiBtX3VpZChTdHJpbmdJbXBsOjpjcmVhdGVOdWxsU3ltYm9sKCkp
CiAgICB7CiAgICB9CgogICAgZXhwbGljaXQgUHJpdmF0ZU5hbWUoU3ltYm9sSW1wbCYgdWlkKQog
ICAgICAgIDogbV91aWQoJnVpZCkKICAgIHsKICAgIH0KCiAgICBlbnVtIERlc2NyaXB0aW9uVGFn
IHsgRGVzY3JpcHRpb24gfTsKICAgIGV4cGxpY2l0IFByaXZhdGVOYW1lKERlc2NyaXB0aW9uVGFn
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQogICAgICAgIDogbV91aWQoU3RyaW5nSW1wbDo6
Y3JlYXRlU3ltYm9sKGRlc2NyaXB0aW9uLmltcGwoKSkpCiAgICB7CiAgICB9CgogICAgU3ltYm9s
SW1wbCogdWlkKCkgY29uc3QgeyByZXR1cm4gbV91aWQuZ2V0KCk7IH0KCiAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgUHJpdmF0ZU5hbWUmIG90aGVyKSBjb25zdCB7IHJldHVybiB1aWQoKSA9PSBv
dGhlci51aWQoKTsgfQogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFByaXZhdGVOYW1lJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gdWlkKCkgIT0gb3RoZXIudWlkKCk7IH0KCnByaXZhdGU6CiAgICBS
ZWZQdHI8U3ltYm9sSW1wbD4gbV91aWQ7Cn07Cgp9CiMgNTAgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm90b3R5cGVNYXAuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm90b3R5cGVNYXAuaCIKI2RlZmluZSBQcm90b3R5cGVNYXBfaCAKCiMgMSAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgiIDEKIyAyNyAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgiCiNkZWZpbmUg
V2Vha0dDTWFwX2ggCgoKCgoKbmFtZXNwYWNlIEpTQyB7CgoKCnRlbXBsYXRlPHR5cGVuYW1lIEtl
eUFyZywgdHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZh
dWx0SGFzaDxLZXlBcmc+OjpIYXNoLAogICAgdHlwZW5hbWUgS2V5VHJhaXRzQXJnID0gSGFzaFRy
YWl0czxLZXlBcmc+PgpjbGFzcyBXZWFrR0NNYXAgewogICAgcHVibGljOiB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1td
KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3Ig
ZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5l
d1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lk
IG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9p
ZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHByaXZhdGU6IHR5cGVkZWYgaW50IF9fdGhpc0lzSGVy
ZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87CiAgICB0eXBlZGVmIFdlYWs8VmFsdWVB
cmc+IFZhbHVlVHlwZTsKICAgIHR5cGVkZWYgSGFzaE1hcDxLZXlBcmcsIFZhbHVlVHlwZSwgSGFz
aEFyZywgS2V5VHJhaXRzQXJnPiBIYXNoTWFwVHlwZTsKCnB1YmxpYzoKICAgIHR5cGVkZWYgdHlw
ZW5hbWUgSGFzaE1hcFR5cGU6OktleVR5cGUgS2V5VHlwZTsKICAgIHR5cGVkZWYgdHlwZW5hbWUg
SGFzaE1hcFR5cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAgICB0eXBlZGVmIHR5cGVuYW1lIEhh
c2hNYXBUeXBlOjppdGVyYXRvciBpdGVyYXRvcjsKICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1h
cFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwoKICAgIGV4cGxpY2l0IFdlYWtH
Q01hcChWTSYpOwogICAgfldlYWtHQ01hcCgpOwoKICAgIFZhbHVlQXJnKiBnZXQoY29uc3QgS2V5
VHlwZSYga2V5KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX21hcC5nZXQoa2V5KTsKICAg
IH0KCiAgICBBZGRSZXN1bHQgc2V0KGNvbnN0IEtleVR5cGUmIGtleSwgVmFsdWVUeXBlIHZhbHVl
KQogICAgewogICAgICAgIHJldHVybiBtX21hcC5zZXQoa2V5LCBzdGQ6Om1vdmU8V1RGOjpDaGVj
a01vdmVQYXJhbWV0ZXI+KHZhbHVlKSk7CiAgICB9CgogICAgYm9vbCByZW1vdmUoY29uc3QgS2V5
VHlwZSYga2V5KQogICAgewogICAgICAgIHJldHVybiBtX21hcC5yZW1vdmUoa2V5KTsKICAgIH0K
CiAgICB2b2lkIGNsZWFyKCkKICAgIHsKICAgICAgICBtX21hcC5jbGVhcigpOwogICAgfQoKICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0CiAgICB7CiAgICAgICAgY29uc3RfaXRlcmF0b3IgaXQgPSBt
X21hcC5iZWdpbigpOwogICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fbWFwLmVuZCgpOwog
ICAgICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAgICAgICAgaWYgKGl0LT52YWx1ZSkKICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICB9CgogICAgaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJiBrZXkpCiAgICB7CiAgICAg
ICAgaXRlcmF0b3IgaXQgPSBtX21hcC5maW5kKGtleSk7CiAgICAgICAgaXRlcmF0b3IgZW5kID0g
bV9tYXAuZW5kKCk7CiAgICAgICAgaWYgKGl0ICE9IGVuZCAmJiAhaXQtPnZhbHVlKQogICAgICAg
ICAgICByZXR1cm4gZW5kOwogICAgICAgIHJldHVybiBpdDsKICAgIH0KCiAgICBjb25zdF9pdGVy
YXRvciBmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4g
Y29uc3RfY2FzdDxXZWFrR0NNYXAqPih0aGlzKS0+ZmluZChrZXkpOwogICAgfQoKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICB2b2lkIGZvckVhY2goRnVuY3RvciBmdW5jdG9yKQog
ICAgewogICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1fbWFwKSB7CiAgICAgICAgICAgIGlmIChw
YWlyLnZhbHVlKQogICAgICAgICAgICAgICAgZnVuY3RvcihwYWlyLmtleSwgcGFpci52YWx1ZS5n
ZXQoKSk7CiAgICAgICAgfQogICAgfQoKICAgIGJvb2wgY29udGFpbnMoY29uc3QgS2V5VHlwZSYg
a2V5KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBmaW5kKGtleSkgIT0gbV9tYXAuZW5kKCk7
CiAgICB9CgogICAgdm9pZCBwcnVuZVN0YWxlRW50cmllcygpOwoKcHJpdmF0ZToKICAgIEhhc2hN
YXBUeXBlIG1fbWFwOwogICAgVk0mIG1fdm07Cn07Cgp9CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZU1hcC5oIiAyCgoKbmFtZXNwYWNlIEpTQyB7Cgpj
bGFzcyBKU09iamVjdDsKY2xhc3MgU3RydWN0dXJlOwpjbGFzcyBWTTsKCgpjbGFzcyBQcm90b3R5
cGVNYXAgewpwdWJsaWM6CiAgICBleHBsaWNpdCBQcm90b3R5cGVNYXAoVk0mIHZtKQogICAgICAg
IDogbV9wcm90b3R5cGVzKHZtKQogICAgICAgICwgbV9zdHJ1Y3R1cmVzKHZtKQogICAgewogICAg
fQoKICAgIFN0cnVjdHVyZSogZW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoSlNPYmpl
Y3QqLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSk7CiAgICBTdHJ1Y3R1cmUqIGVtcHR5U3RydWN0
dXJlRm9yUHJvdG90eXBlRnJvbUJhc2VTdHJ1Y3R1cmUoSlNPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
ICAgIHZvaWQgY2xlYXJFbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShKU09iamVjdCos
IHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsKICAgIHZvaWQgYWRkUHJvdG90eXBlKEpTT2JqZWN0
Kik7CiAgICBUcmlTdGF0ZSBpc1Byb3RvdHlwZShKU09iamVjdCopIGNvbnN0OwoKcHJpdmF0ZToK
ICAgIFN0cnVjdHVyZSogY3JlYXRlRW1wdHlTdHJ1Y3R1cmUoSlNPYmplY3QqIHByb3RvdHlwZSwg
Y29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUsIHVuc2lnbmVk
IGlubGluZUNhcGFjaXR5KTsKCiAgICBXZWFrR0NNYXA8SlNPYmplY3QqLCBKU09iamVjdD4gbV9w
cm90b3R5cGVzOwogICAgdHlwZWRlZiBXZWFrR0NNYXA8c3RkOjpwYWlyPEpTT2JqZWN0Kiwgc3Rk
OjpwYWlyPHVuc2lnbmVkLCBjb25zdCBDbGFzc0luZm8qPj4sIFN0cnVjdHVyZT4gU3RydWN0dXJl
TWFwOwogICAgU3RydWN0dXJlTWFwIG1fc3RydWN0dXJlczsKfTsKCmlubGluZSBUcmlTdGF0ZSBQ
cm90b3R5cGVNYXA6OmlzUHJvdG90eXBlKEpTT2JqZWN0KiBvYmplY3QpIGNvbnN0CnsKICAgIGlm
ICghbV9wcm90b3R5cGVzLmNvbnRhaW5zKG9iamVjdCkpCiAgICAgICAgcmV0dXJuIEZhbHNlVHJp
U3RhdGU7CgoKCgoKICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOwp9Cgp9CiMgNTEgIi4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaCIKI2RlZmluZSBTbWFsbFN0cmlu
Z3NfaCAKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZW9mVHlw
ZS5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVvZlR5
cGUuaCIKI2RlZmluZSBUeXBlb2ZUeXBlX2ggCgoKCm5hbWVzcGFjZSBKU0MgewoKZW51bSBjbGFz
cyBUeXBlb2ZUeXBlIHsKICAgIFVuZGVmaW5lZCwKICAgIEJvb2xlYW4sCiAgICBOdW1iZXIsCiAg
ICBTdHJpbmcsCiAgICBTeW1ib2wsCiAgICBPYmplY3QsCiAgICBGdW5jdGlvbgp9OwoKfQoKbmFt
ZXNwYWNlIFdURiB7Cgp2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpU
eXBlb2ZUeXBlKTsKCn0KIyAzMCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U21hbGxTdHJpbmdzLmgiIDIKCgoKI2RlZmluZSBKU0NfQ09NTU9OX1NUUklOR1NfRUFDSF9OQU1F
KG1hY3JvKSBtYWNybyhkZWZhdWx0KSBtYWNybyhib29sZWFuKSBtYWNybyhmYWxzZSkgbWFjcm8o
ZnVuY3Rpb24pIG1hY3JvKG51bWJlcikgbWFjcm8obnVsbCkgbWFjcm8ob2JqZWN0KSBtYWNybyh1
bmRlZmluZWQpIG1hY3JvKHN0cmluZykgbWFjcm8oc3ltYm9sKSBtYWNybyh0cnVlKQojIDQ2ICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaCIKbmFtZXNw
YWNlIFdURiB7CmNsYXNzIFN0cmluZ0ltcGw7Cn0KCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgVk07
CmNsYXNzIEpTU3RyaW5nOwpjbGFzcyBTbWFsbFN0cmluZ3NTdG9yYWdlOwpjbGFzcyBTbG90Vmlz
aXRvcjsKCnN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcgPSAw
eEZGOwoKY2xhc3MgU21hbGxTdHJpbmdzIHsKICAgIHByaXZhdGU6IFNtYWxsU3RyaW5ncyhjb25z
dCBTbWFsbFN0cmluZ3MmKSA9IGRlbGV0ZTsgU21hbGxTdHJpbmdzJiBvcGVyYXRvcj0oY29uc3Qg
U21hbGxTdHJpbmdzJikgPSBkZWxldGU7OwpwdWJsaWM6CiAgICBTbWFsbFN0cmluZ3MoKTsKICAg
IH5TbWFsbFN0cmluZ3MoKTsKCiAgICBKU1N0cmluZyogZW1wdHlTdHJpbmcoKQogICAgewogICAg
ICAgIHJldHVybiBtX2VtcHR5U3RyaW5nOwogICAgfQoKICAgIEpTU3RyaW5nKiBzaW5nbGVDaGFy
YWN0ZXJTdHJpbmcodW5zaWduZWQgY2hhciBjaGFyYWN0ZXIpCiAgICB7CiAgICAgICAgcmV0dXJu
IG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tjaGFyYWN0ZXJdOwogICAgfQoKICAgIFdURjo6U3Ry
aW5nSW1wbCogc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVy
KTsKCiAgICBKU1N0cmluZyoqIHNpbmdsZUNoYXJhY3RlclN0cmluZ3MoKSB7IHJldHVybiAmbV9z
aW5nbGVDaGFyYWN0ZXJTdHJpbmdzWzBdOyB9CgogICAgdm9pZCBpbml0aWFsaXplQ29tbW9uU3Ry
aW5ncyhWTSYpOwogICAgdm9pZCB2aXNpdFN0cm9uZ1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsK
CiNkZWZpbmUgSlNDX0NPTU1PTl9TVFJJTkdTX0FDQ0VTU09SX0RFRklOSVRJT04obmFtZSkgSlNT
dHJpbmcqIG5hbWUgIyNTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtXyAjI25hbWU7IH0KCgoKCiAg
ICBKU1N0cmluZyogZGVmYXVsdFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdDsgfSBK
U1N0cmluZyogYm9vbGVhblN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fYm9vbGVhbjsgfSBKU1N0
cmluZyogZmFsc2VTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2ZhbHNlOyB9IEpTU3RyaW5nKiBm
dW5jdGlvblN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb247IH0gSlNTdHJpbmcqIG51
bWJlclN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyOyB9IEpTU3RyaW5nKiBudWxsU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9udWxsOyB9IEpTU3RyaW5nKiBvYmplY3RTdHJpbmcoKSBj
b25zdCB7IHJldHVybiBtX29iamVjdDsgfSBKU1N0cmluZyogdW5kZWZpbmVkU3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gbV91bmRlZmluZWQ7IH0gSlNTdHJpbmcqIHN0cmluZ1N0cmluZygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nOyB9IEpTU3RyaW5nKiBzeW1ib2xTdHJpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3N5bWJvbDsgfSBKU1N0cmluZyogdHJ1ZVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1f
dHJ1ZTsgfQojdW5kZWYgSlNDX0NPTU1PTl9TVFJJTkdTX0FDQ0VTU09SX0RFRklOSVRJT04KCiAg
ICBKU1N0cmluZyogdHlwZVN0cmluZyhUeXBlb2ZUeXBlIHR5cGUpIGNvbnN0CiAgICB7CiAgICAg
ICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgY2FzZSBUeXBlb2ZUeXBlOjpVbmRlZmluZWQ6CiAg
ICAgICAgICAgIHJldHVybiB1bmRlZmluZWRTdHJpbmcoKTsKICAgICAgICBjYXNlIFR5cGVvZlR5
cGU6OkJvb2xlYW46CiAgICAgICAgICAgIHJldHVybiBib29sZWFuU3RyaW5nKCk7CiAgICAgICAg
Y2FzZSBUeXBlb2ZUeXBlOjpOdW1iZXI6CiAgICAgICAgICAgIHJldHVybiBudW1iZXJTdHJpbmco
KTsKICAgICAgICBjYXNlIFR5cGVvZlR5cGU6OlN0cmluZzoKICAgICAgICAgICAgcmV0dXJuIHN0
cmluZ1N0cmluZygpOwogICAgICAgIGNhc2UgVHlwZW9mVHlwZTo6U3ltYm9sOgogICAgICAgICAg
ICByZXR1cm4gc3ltYm9sU3RyaW5nKCk7CiAgICAgICAgY2FzZSBUeXBlb2ZUeXBlOjpPYmplY3Q6
CiAgICAgICAgICAgIHJldHVybiBvYmplY3RTdHJpbmcoKTsKICAgICAgICBjYXNlIFR5cGVvZlR5
cGU6OkZ1bmN0aW9uOgogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25TdHJpbmcoKTsKICAgICAg
ICB9CgogICAgICAgIFdURkNyYXNoKCk7CiAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICB9Cgog
ICAgSlNTdHJpbmcqIG9iamVjdFN0cmluZ1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RT
dHJpbmdTdGFydDsgfQogICAgSlNTdHJpbmcqIG51bGxPYmplY3RTdHJpbmcoKSBjb25zdCB7IHJl
dHVybiBtX251bGxPYmplY3RTdHJpbmc7IH0KICAgIEpTU3RyaW5nKiB1bmRlZmluZWRPYmplY3RT
dHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3VuZGVmaW5lZE9iamVjdFN0cmluZzsgfQoKICAgIGJv
b2wgbmVlZHNUb0JlVmlzaXRlZChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKSBjb25zdAog
ICAgewogICAgICAgIGlmIChjb2xsZWN0aW9uVHlwZSA9PSBGdWxsQ29sbGVjdGlvbikKICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgcmV0dXJuIG1fbmVlZHNUb0JlVmlzaXRlZDsKICAg
IH0KCnByaXZhdGU6CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nQ291bnQgPSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcgKyAxOwoKICAgIHZvaWQgY3JlYXRl
RW1wdHlTdHJpbmcoVk0qKTsKICAgIHZvaWQgY3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKFZN
KiwgdW5zaWduZWQgY2hhcik7CgogICAgdm9pZCBpbml0aWFsaXplKFZNKiwgSlNTdHJpbmcqJiwg
Y29uc3QgY2hhciogdmFsdWUpOwoKICAgIEpTU3RyaW5nKiBtX2VtcHR5U3RyaW5nOwojZGVmaW5l
IEpTQ19DT01NT05fU1RSSU5HU19BVFRSSUJVVEVfREVDTEFSQVRJT04obmFtZSkgSlNTdHJpbmcq
IG1fICMjbmFtZTsKICAgIEpTU3RyaW5nKiBtX2RlZmF1bHQ7IEpTU3RyaW5nKiBtX2Jvb2xlYW47
IEpTU3RyaW5nKiBtX2ZhbHNlOyBKU1N0cmluZyogbV9mdW5jdGlvbjsgSlNTdHJpbmcqIG1fbnVt
YmVyOyBKU1N0cmluZyogbV9udWxsOyBKU1N0cmluZyogbV9vYmplY3Q7IEpTU3RyaW5nKiBtX3Vu
ZGVmaW5lZDsgSlNTdHJpbmcqIG1fc3RyaW5nOyBKU1N0cmluZyogbV9zeW1ib2w7IEpTU3RyaW5n
KiBtX3RydWU7CiN1bmRlZiBKU0NfQ09NTU9OX1NUUklOR1NfQVRUUklCVVRFX0RFQ0xBUkFUSU9O
CiAgICBKU1N0cmluZyogbV9vYmplY3RTdHJpbmdTdGFydDsKICAgIEpTU3RyaW5nKiBtX251bGxP
YmplY3RTdHJpbmc7CiAgICBKU1N0cmluZyogbV91bmRlZmluZWRPYmplY3RTdHJpbmc7CiAgICBK
U1N0cmluZyogbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW3NpbmdsZUNoYXJhY3RlclN0cmluZ0Nv
dW50XTsKICAgIHN0ZDo6dW5pcXVlX3B0cjxTbWFsbFN0cmluZ3NTdG9yYWdlPiBtX3N0b3JhZ2U7
CiAgICBib29sIG1fbmVlZHNUb0JlVmlzaXRlZDsKfTsKCn0KIyA1MiAiLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oIiAxCiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oIgojZGVmaW5lIFNvdXJjZUNvZGVfaCAKCiMgMSAiLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oIiAxCiMgMzAg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaCIKI2Rl
ZmluZSBTb3VyY2VQcm92aWRlcl9oIAoKCiMgMSAiLi4vLi4vU291cmNlL1dURi93dGYvdGV4dC9U
ZXh0UG9zaXRpb24uaCIgMQojIDI2ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRQb3Np
dGlvbi5oIgojZGVmaW5lIFRleHRQb3NpdGlvbl9oIAoKCgpuYW1lc3BhY2UgV1RGIHsKCgoKCmNs
YXNzIE9yZGluYWxOdW1iZXIgewpwdWJsaWM6CiAgICBzdGF0aWMgT3JkaW5hbE51bWJlciBmcm9t
WmVyb0Jhc2VkSW50KGludCB6ZXJvQmFzZWRJbnQpIHsgcmV0dXJuIE9yZGluYWxOdW1iZXIoemVy
b0Jhc2VkSW50KTsgfQogICAgc3RhdGljIE9yZGluYWxOdW1iZXIgZnJvbU9uZUJhc2VkSW50KGlu
dCBvbmVCYXNlZEludCkgeyByZXR1cm4gT3JkaW5hbE51bWJlcihvbmVCYXNlZEludCAtIDEpOyB9
CiAgICBPcmRpbmFsTnVtYmVyKCkgOiBtX3plcm9CYXNlZFZhbHVlKDApIHsgfQoKICAgIGludCB6
ZXJvQmFzZWRJbnQoKSBjb25zdCB7IHJldHVybiBtX3plcm9CYXNlZFZhbHVlOyB9CiAgICBpbnQg
b25lQmFzZWRJbnQoKSBjb25zdCB7IHJldHVybiBtX3plcm9CYXNlZFZhbHVlICsgMTsgfQoKICAg
IGJvb2wgb3BlcmF0b3I9PShPcmRpbmFsTnVtYmVyIG90aGVyKSB7IHJldHVybiBtX3plcm9CYXNl
ZFZhbHVlID09IG90aGVyLm1femVyb0Jhc2VkVmFsdWU7IH0KICAgIGJvb2wgb3BlcmF0b3IhPShP
cmRpbmFsTnVtYmVyIG90aGVyKSB7IHJldHVybiAhKCgqdGhpcykgPT0gb3RoZXIpOyB9CgogICAg
c3RhdGljIE9yZGluYWxOdW1iZXIgZmlyc3QoKSB7IHJldHVybiBPcmRpbmFsTnVtYmVyKDApOyB9
CiAgICBzdGF0aWMgT3JkaW5hbE51bWJlciBiZWZvcmVGaXJzdCgpIHsgcmV0dXJuIE9yZGluYWxO
dW1iZXIoLTEpOyB9Cgpwcml2YXRlOgogICAgT3JkaW5hbE51bWJlcihpbnQgemVyb0Jhc2VkSW50
KSA6IG1femVyb0Jhc2VkVmFsdWUoemVyb0Jhc2VkSW50KSB7IH0KICAgIGludCBtX3plcm9CYXNl
ZFZhbHVlOwp9OwoKCgoKY2xhc3MgVGV4dFBvc2l0aW9uIHsKcHVibGljOgogICAgVGV4dFBvc2l0
aW9uKE9yZGluYWxOdW1iZXIgbGluZSwgT3JkaW5hbE51bWJlciBjb2x1bW4pCiAgICAgICAgOiBt
X2xpbmUobGluZSkKICAgICAgICAsIG1fY29sdW1uKGNvbHVtbikKICAgIHsKICAgIH0KICAgIFRl
eHRQb3NpdGlvbigpIHsgfQogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRQb3NpdGlvbiYg
b3RoZXIpIHsgcmV0dXJuIG1fbGluZSA9PSBvdGhlci5tX2xpbmUgJiYgbV9jb2x1bW4gPT0gb3Ro
ZXIubV9jb2x1bW47IH0KICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUZXh0UG9zaXRpb24mIG90
aGVyKSB7IHJldHVybiAhKCgqdGhpcykgPT0gb3RoZXIpOyB9CgoKICAgIHN0YXRpYyBUZXh0UG9z
aXRpb24gbWluaW11bVBvc2l0aW9uKCkgeyByZXR1cm4gVGV4dFBvc2l0aW9uKE9yZGluYWxOdW1i
ZXI6OmZpcnN0KCksIE9yZGluYWxOdW1iZXI6OmZpcnN0KCkpOyB9CgoKICAgIHN0YXRpYyBUZXh0
UG9zaXRpb24gYmVsb3dSYW5nZVBvc2l0aW9uKCkgeyByZXR1cm4gVGV4dFBvc2l0aW9uKE9yZGlu
YWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpOyB9
CgogICAgT3JkaW5hbE51bWJlciBtX2xpbmU7CiAgICBPcmRpbmFsTnVtYmVyIG1fY29sdW1uOwp9
OwoKfQoKdXNpbmcgV1RGOjpPcmRpbmFsTnVtYmVyOwoKdXNpbmcgV1RGOjpUZXh0UG9zaXRpb247
CiMgMzQgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIu
aCIgMgoKCm5hbWVzcGFjZSBKU0MgewoKICAgIGNsYXNzIFNvdXJjZVByb3ZpZGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8U291cmNlUHJvdmlkZXI+IHsKICAgIHB1YmxpYzoKICAgICAgICBzdGF0aWMg
Y29uc3QgaW50cHRyX3QgbnVsbElEID0gMTsKCiAgICAgICAgU291cmNlUHJvdmlkZXIoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbik7CgogICAgICAg
IHZpcnR1YWwgflNvdXJjZVByb3ZpZGVyKCk7CgogICAgICAgIHZpcnR1YWwgdW5zaWduZWQgaGFz
aCgpIGNvbnN0ID0gMDsKICAgICAgICB2aXJ0dWFsIFN0cmluZ1ZpZXcgc291cmNlKCkgY29uc3Qg
PSAwOwogICAgICAgIFN0cmluZ1ZpZXcgZ2V0UmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25z
dAogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHNvdXJjZSgpLnN1YnN0cmluZyhzdGFydCwg
ZW5kIC0gc3RhcnQpOwogICAgICAgIH0KCiAgICAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25z
dCB7IHJldHVybiBtX3VybDsgfQogICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2VVUkxEaXJlY3RpdmU7IH0KICAgICAgICBjb25zdCBTdHJpbmcm
IHNvdXJjZU1hcHBpbmdVUkwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZU1hcHBpbmdVUkxEaXJl
Y3RpdmU7IH0KCiAgICAgICAgVGV4dFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3N0YXJ0UG9zaXRpb247IH0KICAgICAgICBpbnRwdHJfdCBhc0lEKCkKICAgICAgICB7
CiAgICAgICAgICAgIGlmICghbV9pZCkKICAgICAgICAgICAgICAgIGdldElEKCk7CiAgICAgICAg
ICAgIHJldHVybiBtX2lkOwogICAgICAgIH0KCiAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
eyByZXR1cm4gbV92YWxpZGF0ZWQ7IH0KICAgICAgICB2b2lkIHNldFZhbGlkKCkgeyBtX3ZhbGlk
YXRlZCA9IHRydWU7IH0KCiAgICAgICAgdm9pZCBzZXRTb3VyY2VVUkxEaXJlY3RpdmUoY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpIHsgbV9zb3VyY2VVUkxEaXJlY3RpdmUgPSBzb3VyY2VVUkw7IH0K
ICAgICAgICB2b2lkIHNldFNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBz
b3VyY2VNYXBwaW5nVVJMKSB7IG1fc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSA9IHNvdXJjZU1h
cHBpbmdVUkw7IH0KCiAgICBwcml2YXRlOgogICAgICAgIHZvaWQgZ2V0SUQoKTsKCiAgICAgICAg
U3RyaW5nIG1fdXJsOwogICAgICAgIFN0cmluZyBtX3NvdXJjZVVSTERpcmVjdGl2ZTsKICAgICAg
ICBTdHJpbmcgbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwogICAgICAgIFRleHRQb3NpdGlv
biBtX3N0YXJ0UG9zaXRpb247CiAgICAgICAgYm9vbCBtX3ZhbGlkYXRlZCA6IDE7CiAgICAgICAg
dWludHB0cl90IG1faWQgOiBzaXplb2YodWludHB0cl90KSAqIDggLSAxOwogICAgfTsKCiAgICBj
bGFzcyBTdHJpbmdTb3VyY2VQcm92aWRlciA6IHB1YmxpYyBTb3VyY2VQcm92aWRlciB7CiAgICBw
dWJsaWM6CiAgICAgICAgc3RhdGljIFJlZjxTdHJpbmdTb3VyY2VQcm92aWRlcj4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9u
JiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSkKICAgICAg
ICB7CiAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ1NvdXJjZVByb3ZpZGVy
KHNvdXJjZSwgdXJsLCBzdGFydFBvc2l0aW9uKSk7CiAgICAgICAgfQoKICAgICAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3Qgb3ZlcnJpZGUKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBtX3Nv
dXJjZS5nZXQoKS5oYXNoKCk7CiAgICAgICAgfQoKICAgICAgICBTdHJpbmdWaWV3IHNvdXJjZSgp
IGNvbnN0IG92ZXJyaWRlCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gbV9zb3VyY2UuZ2V0
KCk7CiAgICAgICAgfQoKICAgIHByaXZhdGU6CiAgICAgICAgU3RyaW5nU291cmNlUHJvdmlkZXIo
Y29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0UG9zaXRp
b24mIHN0YXJ0UG9zaXRpb24pCiAgICAgICAgICAgIDogU291cmNlUHJvdmlkZXIodXJsLCBzdGFy
dFBvc2l0aW9uKQogICAgICAgICAgICAsIG1fc291cmNlKHNvdXJjZS5pc051bGwoKSA/ICpTdHJp
bmdJbXBsOjplbXB0eSgpIDogKnNvdXJjZS5pbXBsKCkpCiAgICAgICAgewogICAgICAgIH0KCiAg
ICAgICAgUmVmPFN0cmluZ0ltcGw+IG1fc291cmNlOwogICAgfTsKIyAxNDUgIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaCIKfQojIDMzICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaCIgMgoKCm5hbWVzcGFjZSBK
U0MgewoKICAgIGNsYXNzIFNvdXJjZUNvZGUgewogICAgcHVibGljOgogICAgICAgIFNvdXJjZUNv
ZGUoKQogICAgICAgICAgICA6IG1fcHJvdmlkZXIoMCkKICAgICAgICAgICAgLCBtX3N0YXJ0Q2hh
cigwKQogICAgICAgICAgICAsIG1fZW5kQ2hhcigwKQogICAgICAgICAgICAsIG1fZmlyc3RMaW5l
KDApCiAgICAgICAgICAgICwgbV9zdGFydENvbHVtbigwKQogICAgICAgIHsKICAgICAgICB9Cgog
ICAgICAgIFNvdXJjZUNvZGUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQogICAgICAg
ICAgICA6IG1fcHJvdmlkZXIoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCiAgICAgICAgewog
ICAgICAgIH0KCiAgICAgICAgU291cmNlQ29kZShQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBw
cm92aWRlcikKICAgICAgICAgICAgOiBtX3Byb3ZpZGVyKHByb3ZpZGVyKQogICAgICAgICAgICAs
IG1fc3RhcnRDaGFyKDApCiAgICAgICAgICAgICwgbV9lbmRDaGFyKG1fcHJvdmlkZXItPnNvdXJj
ZSgpLmxlbmd0aCgpKQogICAgICAgICAgICAsIG1fZmlyc3RMaW5lKDEpCiAgICAgICAgICAgICwg
bV9zdGFydENvbHVtbigxKQogICAgICAgIHsKICAgICAgICB9CgogICAgICAgIFNvdXJjZUNvZGUo
UGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gcHJvdmlkZXIsIGludCBmaXJzdExpbmUsIGludCBz
dGFydENvbHVtbikKICAgICAgICAgICAgOiBtX3Byb3ZpZGVyKHByb3ZpZGVyKQogICAgICAgICAg
ICAsIG1fc3RhcnRDaGFyKDApCiAgICAgICAgICAgICwgbV9lbmRDaGFyKG1fcHJvdmlkZXItPnNv
dXJjZSgpLmxlbmd0aCgpKQogICAgICAgICAgICAsIG1fZmlyc3RMaW5lKHN0ZDo6bWF4KGZpcnN0
TGluZSwgMSkpCiAgICAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGQ6Om1heChzdGFydENvbHVt
biwgMSkpCiAgICAgICAgewogICAgICAgIH0KCiAgICAgICAgU291cmNlQ29kZShQYXNzUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiBwcm92aWRlciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgZmlyc3RM
aW5lLCBpbnQgc3RhcnRDb2x1bW4pCiAgICAgICAgICAgIDogbV9wcm92aWRlcihwcm92aWRlcikK
ICAgICAgICAgICAgLCBtX3N0YXJ0Q2hhcihzdGFydCkKICAgICAgICAgICAgLCBtX2VuZENoYXIo
ZW5kKQogICAgICAgICAgICAsIG1fZmlyc3RMaW5lKHN0ZDo6bWF4KGZpcnN0TGluZSwgMSkpCiAg
ICAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGQ6Om1heChzdGFydENvbHVtbiwgMSkpCiAgICAg
ICAgewogICAgICAgIH0KCiAgICAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvdmlkZXIuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQoKICAg
ICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgICgodm9pZCkw
KTsKICAgICAgICAgICAgcmV0dXJuIG1fcHJvdmlkZXItPmhhc2goKTsKICAgICAgICB9CgogICAg
ICAgIFN0cmluZ1ZpZXcgdmlldygpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgICBpZiAoIW1f
cHJvdmlkZXIpCiAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nVmlldygpOwogICAgICAgICAg
ICByZXR1cm4gbV9wcm92aWRlci0+Z2V0UmFuZ2UobV9zdGFydENoYXIsIG1fZW5kQ2hhcik7CiAg
ICAgICAgfQoKICAgICAgICBDU3RyaW5nIHRvVVRGOCgpIGNvbnN0OwoKICAgICAgICBpbnRwdHJf
dCBwcm92aWRlcklEKCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIGlmICghbV9wcm92aWRl
cikKICAgICAgICAgICAgICAgIHJldHVybiBTb3VyY2VQcm92aWRlcjo6bnVsbElEOwogICAgICAg
ICAgICByZXR1cm4gbV9wcm92aWRlci0+YXNJRCgpOwogICAgICAgIH0KCiAgICAgICAgYm9vbCBp
c051bGwoKSBjb25zdCB7IHJldHVybiAhbV9wcm92aWRlcjsgfQogICAgICAgIFNvdXJjZVByb3Zp
ZGVyKiBwcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlkZXIuZ2V0KCk7IH0KICAgICAg
ICBpbnQgZmlyc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmU7IH0KICAgICAgICBp
bnQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0Q29sdW1uOyB9CiAgICAgICAg
aW50IHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENoYXI7IH0KICAgICAgICBp
bnQgZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRDaGFyOyB9CiAgICAgICAgaW50IGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kQ2hhciAtIG1fc3RhcnRDaGFyOyB9CgogICAgICAg
IFNvdXJjZUNvZGUgc3ViRXhwcmVzc2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVkIGNs
b3NlQnJhY2UsIGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbik7CgogICAgcHJpdmF0ZToK
ICAgICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IG1fcHJvdmlkZXI7CiAgICAgICAgaW50IG1f
c3RhcnRDaGFyOwogICAgICAgIGludCBtX2VuZENoYXI7CiAgICAgICAgaW50IG1fZmlyc3RMaW5l
OwogICAgICAgIGludCBtX3N0YXJ0Q29sdW1uOwogICAgfTsKCiAgICBpbmxpbmUgU291cmNlQ29k
ZSBtYWtlU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCA9IFN0
cmluZygpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb246
Om1pbmltdW1Qb3NpdGlvbigpKQogICAgewogICAgICAgIHJldHVybiBTb3VyY2VDb2RlKFN0cmlu
Z1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCB1cmwsIHN0YXJ0UG9zaXRpb24pLCBzdGFy
dFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9u
ZUJhc2VkSW50KCkpOwogICAgfQoKICAgIGlubGluZSBTb3VyY2VDb2RlIFNvdXJjZUNvZGU6OnN1
YkV4cHJlc3Npb24odW5zaWduZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBjbG9zZUJyYWNlLCBpbnQg
Zmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pCiAgICB7CiAgICAgICAgc3RhcnRDb2x1bW4gKz0g
MTsKICAgICAgICByZXR1cm4gU291cmNlQ29kZShwcm92aWRlcigpLCBvcGVuQnJhY2UsIGNsb3Nl
QnJhY2UgKyAxLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKICAgIH0KCn0KIyA1MyAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1N0cm9uZy5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1N0cm9uZy5oIgojZGVmaW5lIFN0cm9uZ19oIAoKCgoKCm5hbWVzcGFjZSBK
U0MgewoKY2xhc3MgVk07CgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFN0cm9uZyA6IHB1
YmxpYyBIYW5kbGU8VD4gewogICAgdXNpbmcgSGFuZGxlPFQ+OjpzbG90OwogICAgdXNpbmcgSGFu
ZGxlPFQ+OjpzZXRTbG90OwogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IGZyaWVuZCBjbGFzcyBT
dHJvbmc7CgpwdWJsaWM6CiAgICB0eXBlZGVmIHR5cGVuYW1lIEhhbmRsZTxUPjo6RXh0ZXJuYWxU
eXBlIEV4dGVybmFsVHlwZTsKCiAgICBTdHJvbmcoKQogICAgICAgIDogSGFuZGxlPFQ+KCkKICAg
IHsKICAgIH0KCiAgICBTdHJvbmcoVk0mLCBFeHRlcm5hbFR5cGUgPSBFeHRlcm5hbFR5cGUoKSk7
CgogICAgU3Ryb25nKFZNJiwgSGFuZGxlPFQ+KTsKCiAgICBTdHJvbmcoY29uc3QgU3Ryb25nJiBv
dGhlcikKICAgICAgICA6IEhhbmRsZTxUPigpCiAgICB7CiAgICAgICAgaWYgKCFvdGhlci5zbG90
KCkpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICBzZXRTbG90KEhhbmRsZVNldDo6aGVhcEZv
cihvdGhlci5zbG90KCkpLT5hbGxvY2F0ZSgpKTsKICAgICAgICBzZXQob3RoZXIuZ2V0KCkpOwog
ICAgfQoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBTdHJvbmcoY29uc3QgU3Ryb25nPFU+JiBv
dGhlcikKICAgICAgICA6IEhhbmRsZTxUPigpCiAgICB7CiAgICAgICAgaWYgKCFvdGhlci5zbG90
KCkpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICBzZXRTbG90KEhhbmRsZVNldDo6aGVhcEZv
cihvdGhlci5zbG90KCkpLT5hbGxvY2F0ZSgpKTsKICAgICAgICBzZXQob3RoZXIuZ2V0KCkpOwog
ICAgfQoKICAgIGVudW0gSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnIHsgSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlIH07CiAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gc2xvdCgpID09IGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAgICBTdHJvbmcoSGFzaFRh
YmxlRGVsZXRlZFZhbHVlVGFnKQogICAgICAgIDogSGFuZGxlPFQ+KGhhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpKQogICAgewogICAgfQoKICAgIH5TdHJvbmcoKQogICAgewogICAgICAgIGNsZWFyKCk7
CiAgICB9CgogICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhc2xvdCgpIHx8ICEq
c2xvdCgpOyB9CgogICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEh
KnRoaXM7IH0KCiAgICB2b2lkIHN3YXAoU3Ryb25nJiBvdGhlcikKICAgIHsKICAgICAgICBIYW5k
bGU8VD46OnN3YXAob3RoZXIpOwogICAgfQoKICAgIEV4dGVybmFsVHlwZSBnZXQoKSBjb25zdCB7
IHJldHVybiBIYW5kbGVUeXBlczxUPjo6Z2V0RnJvbVNsb3QodGhpcy0+c2xvdCgpKTsgfQoKICAg
IHZvaWQgc2V0KFZNJiwgRXh0ZXJuYWxUeXBlKTsKCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4g
U3Ryb25nJiBvcGVyYXRvcj0oY29uc3QgU3Ryb25nPFU+JiBvdGhlcikKICAgIHsKICAgICAgICBp
ZiAoIW90aGVyLnNsb3QoKSkgewogICAgICAgICAgICBjbGVhcigpOwogICAgICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgICAgfQoKICAgICAgICBzZXQoKkhhbmRsZVNldDo6aGVhcEZvcihvdGhl
ci5zbG90KCkpLT52bSgpLCBvdGhlci5nZXQoKSk7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAg
fQoKICAgIFN0cm9uZyYgb3BlcmF0b3I9KGNvbnN0IFN0cm9uZyYgb3RoZXIpCiAgICB7CiAgICAg
ICAgaWYgKCFvdGhlci5zbG90KCkpIHsKICAgICAgICAgICAgY2xlYXIoKTsKICAgICAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgICAgIH0KCiAgICAgICAgc2V0KCpIYW5kbGVTZXQ6OmhlYXBGb3Io
b3RoZXIuc2xvdCgpKS0+dm0oKSwgb3RoZXIuZ2V0KCkpOwogICAgICAgIHJldHVybiAqdGhpczsK
ICAgIH0KCiAgICB2b2lkIGNsZWFyKCkKICAgIHsKICAgICAgICBpZiAoIXNsb3QoKSkKICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgIEhhbmRsZVNldDo6aGVhcEZvcihzbG90KCkpLT5kZWFsbG9j
YXRlKHNsb3QoKSk7CiAgICAgICAgc2V0U2xvdCgwKTsKICAgIH0KCnByaXZhdGU6CiAgICBzdGF0
aWMgSGFuZGxlU2xvdCBoYXNoVGFibGVEZWxldGVkVmFsdWUoKSB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PEhhbmRsZVNsb3Q+KC0xKTsgfQoKICAgIHZvaWQgc2V0KEV4dGVybmFsVHlwZSBleHRl
cm5hbFR5cGUpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIEpTVmFsdWUgdmFsdWUg
PSBIYW5kbGVUeXBlczxUPjo6dG9KU1ZhbHVlKGV4dGVybmFsVHlwZSk7CiAgICAgICAgSGFuZGxl
U2V0OjpoZWFwRm9yKHNsb3QoKSktPndyaXRlQmFycmllcihzbG90KCksIHZhbHVlKTsKICAgICAg
ICAqc2xvdCgpID0gdmFsdWU7CiAgICB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9p
ZCBzd2FwKFN0cm9uZzxUPiYgYSwgU3Ryb25nPFQ+JiBiKQp7CiAgICBhLnN3YXAoYik7Cn0KCn0K
Cm5hbWVzcGFjZSBXVEYgewoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZlY3RvclRyYWl0
czxKU0M6OlN0cm9uZzxUPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7CiAgICBzdGF0aWMg
Y29uc3QgYm9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNlOwp9OwoKdGVtcGxhdGU8dHlw
ZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpTdHJvbmc8UD4+IDogU2ltcGxlQ2xhc3NI
YXNoVHJhaXRzPEpTQzo6U3Ryb25nPFA+PiB7IH07Cgp9CiMgNTQgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgiCiNkZWZpbmUgVGh1bmtHZW5lcmF0b3JzX2ggCgoj
IDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlv
bktpbmQuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmgiCiNkZWZpbmUgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oIAoK
bmFtZXNwYWNlIEpTQyB7CgplbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2Fs
bCwgQ29kZUZvckNvbnN0cnVjdCB9OwoKaW5saW5lIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3Bl
Y2lhbGl6YXRpb25Gcm9tSXNDYWxsKGJvb2wgaXNDYWxsKQp7CiAgICByZXR1cm4gaXNDYWxsID8g
Q29kZUZvckNhbGwgOiBDb2RlRm9yQ29uc3RydWN0Owp9CgppbmxpbmUgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBzcGVjaWFsaXphdGlvbkZyb21Jc0NvbnN0cnVjdChib29sIGlzQ29uc3RydWN0KQp7
CiAgICByZXR1cm4gaXNDb25zdHJ1Y3QgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGw7
Cn0KCn0KCm5hbWVzcGFjZSBXVEYgewoKY2xhc3MgUHJpbnRTdHJlYW07CnZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYsIEpTQzo6Q29kZVNwZWNpYWxpemF0aW9uS2luZCk7Cgp9CiMgMzAg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgiIDIKCgoK
bmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBDYWxsTGlua0luZm87CmNsYXNzIENDYWxsSGVscGVyczsK
Ck1hY3JvQXNzZW1ibGVyQ29kZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5l
cmF0b3IoVk0qKTsKCk1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2FsbFRodW5rKFZNKiwgQ2Fs
bExpbmtJbmZvJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7Ck1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKFZNKik7Ck1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5r
UG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IoVk0qKTsKCk1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiB2aXJ0dWFsVGh1bmtGb3IoVk0qLCBDYWxsTGlua0luZm8mKTsKCk1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBuYXRpdmVDYWxsR2VuZXJhdG9yKFZNKik7Ck1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRp
dmVDb25zdHJ1Y3RHZW5lcmF0b3IoVk0qKTsKTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZVRh
aWxDYWxsR2VuZXJhdG9yKFZNKik7Ck1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVUYWlsQ2Fs
bFdpdGhvdXRTYXZlZFRhZ3NHZW5lcmF0b3IoVk0qKTsKTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFy
aXR5Rml4dXBHZW5lcmF0b3IoVk0qKTsKTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHVucmVhY2hhYmxl
R2VuZXJhdG9yKFZNKik7CgpNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckNvZGVBdFRodW5rR2Vu
ZXJhdG9yKFZNKik7Ck1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjaGFyQXRUaHVua0dlbmVyYXRvcihW
TSopOwpNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2x6MzJUaHVua0dlbmVyYXRvcihWTSopOwpNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IoVk0qKTsKTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGFic1RodW5rR2VuZXJhdG9yKFZNKik7Ck1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0qKTsKTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV4cFRo
dW5rR2VuZXJhdG9yKFZNKik7Ck1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmbG9vclRodW5rR2VuZXJh
dG9yKFZNKik7Ck1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsb2dUaHVua0dlbmVyYXRvcihWTSopOwpN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgcm91bmRUaHVua0dlbmVyYXRvcihWTSopOwpNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgc3FydFRodW5rR2VuZXJhdG9yKFZNKik7Ck1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qKTsKTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJhbmRvbVRo
dW5rR2VuZXJhdG9yKFZNKik7Ck1hY3JvQXNzZW1ibGVyQ29kZVJlZiB0cnVuY1RodW5rR2VuZXJh
dG9yKFZNKik7CgpNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25D
YWxsR2VuZXJhdG9yKFZNKiB2bSk7Cgp9CiMgNTUgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlZEFycmF5Q29udHJvbGxlci5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlDb250cm9sbGVyLmgiCiNkZWZpbmUgVHlwZWRBcnJheUNv
bnRyb2xsZXJfaCAKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBBcnJheUJ1ZmZlcjsKY2xhc3Mg
RXhlY1N0YXRlOwpjbGFzcyBKU0FycmF5QnVmZmVyOwpjbGFzcyBKU0dsb2JhbE9iamVjdDsKCmNs
YXNzIFR5cGVkQXJyYXlDb250cm9sbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8VHlwZWRBcnJheUNv
bnRyb2xsZXI+IHsKcHVibGljOgogICAgVHlwZWRBcnJheUNvbnRyb2xsZXIoKTsKICAgIHZpcnR1
YWwgflR5cGVkQXJyYXlDb250cm9sbGVyKCk7CgogICAgdmlydHVhbCBKU0FycmF5QnVmZmVyKiB0
b0pTKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgQXJyYXlCdWZmZXIqKSA9IDA7CiAgICB2
aXJ0dWFsIHZvaWQgcmVnaXN0ZXJXcmFwcGVyKEpTR2xvYmFsT2JqZWN0KiwgQXJyYXlCdWZmZXIq
LCBKU0FycmF5QnVmZmVyKikgPSAwOwp9OwoKfQojIDU2ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oIiAyCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaCIgMQojIDU3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oIiAyCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1dhdGNocG9pbnQuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvV2F0Y2hwb2ludC5oIgojZGVmaW5lIFdhdGNocG9pbnRfaCAKIyAzNiAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaCIKbmFtZXNwYWNlIEpT
QyB7CgpjbGFzcyBGaXJlRGV0YWlsIHsKICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QpID0g
ZGVsZXRlOwoKcHVibGljOgogICAgRmlyZURldGFpbCgpCiAgICB7CiAgICB9CgogICAgdmlydHVh
bCB+RmlyZURldGFpbCgpCiAgICB7CiAgICB9CgogICAgdmlydHVhbCB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdCA9IDA7Cn07CgpjbGFzcyBTdHJpbmdGaXJlRGV0YWlsIDogcHVibGljIEZp
cmVEZXRhaWwgewpwdWJsaWM6CiAgICBTdHJpbmdGaXJlRGV0YWlsKGNvbnN0IGNoYXIqIHN0cmlu
ZykKICAgICAgICA6IG1fc3RyaW5nKHN0cmluZykKICAgIHsKICAgIH0KCiAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3Qgb3ZlcnJpZGU7Cgpwcml2YXRlOgogICAgY29uc3QgY2hh
ciogbV9zdHJpbmc7Cn07CgpjbGFzcyBXYXRjaHBvaW50U2V0OwoKY2xhc3MgV2F0Y2hwb2ludCA6
IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXYXRjaHBvaW50PiB7CiAgICBwcml2YXRlOiBX
YXRjaHBvaW50KGNvbnN0IFdhdGNocG9pbnQmKSA9IGRlbGV0ZTsgV2F0Y2hwb2ludCYgb3BlcmF0
b3I9KGNvbnN0IFdhdGNocG9pbnQmKSA9IGRlbGV0ZTs7CiAgICBwdWJsaWM6IHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3
W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRv
ciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZv
aWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2
b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gcHJpdmF0ZTogdHlwZWRlZiBpbnQgX190aGlzSXNI
ZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybzsKcHVibGljOgogICAgV2F0Y2hwb2lu
dCgpCiAgICB7CiAgICB9CgogICAgdmlydHVhbCB+V2F0Y2hwb2ludCgpOwoKcHJvdGVjdGVkOgog
ICAgdmlydHVhbCB2b2lkIGZpcmVJbnRlcm5hbChjb25zdCBGaXJlRGV0YWlsJikgPSAwOwoKcHJp
dmF0ZToKICAgIGZyaWVuZCBjbGFzcyBXYXRjaHBvaW50U2V0OwogICAgdm9pZCBmaXJlKGNvbnN0
IEZpcmVEZXRhaWwmKTsKfTsKCmVudW0gV2F0Y2hwb2ludFN0YXRlIHsKICAgIENsZWFyV2F0Y2hw
b2ludCwKICAgIElzV2F0Y2hlZCwKICAgIElzSW52YWxpZGF0ZWQKfTsKCmNsYXNzIElubGluZVdh
dGNocG9pbnRTZXQ7CgpjbGFzcyBXYXRjaHBvaW50U2V0IDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFdhdGNocG9pbnRTZXQ+IHsKICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CnB1YmxpYzoKICAgIFdhdGNocG9pbnRTZXQoV2F0Y2hwb2ludFN0YXRlKTsKCgoKICAg
IH5XYXRjaHBvaW50U2V0KCk7CgoKICAgIFdhdGNocG9pbnRTdGF0ZSBzdGF0ZU9uSlNUaHJlYWQo
KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXYXRjaHBvaW50U3RhdGU+
KG1fc3RhdGUpOwogICAgfQoKCgoKCgogICAgV2F0Y2hwb2ludFN0YXRlIHN0YXRlKCkgY29uc3QK
ICAgIHsKICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKICAgICAgICBXYXRjaHBvaW50U3Rh
dGUgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2F0Y2hwb2ludFN0YXRlPihtX3N0YXRlKTsKICAgICAg
ICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKCgoK
CgoKICAgIGJvb2wgaXNTdGlsbFZhbGlkKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gc3Rh
dGUoKSAhPSBJc0ludmFsaWRhdGVkOwogICAgfQoKICAgIGJvb2wgaGFzQmVlbkludmFsaWRhdGVk
KCkgY29uc3QgeyByZXR1cm4gIWlzU3RpbGxWYWxpZCgpOyB9CgoKCgogICAgdm9pZCBhZGQoV2F0
Y2hwb2ludCopOwoKCgoKCgogICAgdm9pZCBzdGFydFdhdGNoaW5nKCkKICAgIHsKICAgICAgICAo
KHZvaWQpMCk7CiAgICAgICAgaWYgKG1fc3RhdGUgPT0gSXNXYXRjaGVkKQogICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICAgICBtX3N0YXRlID0g
SXNXYXRjaGVkOwogICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICB9CgogICAgdm9p
ZCBmaXJlQWxsKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAgIHsKICAgICAgICBpZiAoX19i
dWlsdGluX2V4cGVjdCghIShtX3N0YXRlICE9IElzV2F0Y2hlZCksIDEpKQogICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgZmlyZUFsbFNsb3coZGV0YWlsKTsKICAgIH0KCiAgICB2b2lkIGZpcmVB
bGwoY29uc3QgY2hhciogcmVhc29uKQogICAgewogICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0
KCEhKG1fc3RhdGUgIT0gSXNXYXRjaGVkKSwgMSkpCiAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICBmaXJlQWxsU2xvdyhyZWFzb24pOwogICAgfQoKICAgIHZvaWQgdG91Y2goY29uc3QgRmlyZURl
dGFpbCYgZGV0YWlsKQogICAgewogICAgICAgIGlmIChzdGF0ZSgpID09IENsZWFyV2F0Y2hwb2lu
dCkKICAgICAgICAgICAgc3RhcnRXYXRjaGluZygpOwogICAgICAgIGVsc2UKICAgICAgICAgICAg
ZmlyZUFsbChkZXRhaWwpOwogICAgfQoKICAgIHZvaWQgdG91Y2goY29uc3QgY2hhciogcmVhc29u
KQogICAgewogICAgICAgIHRvdWNoKFN0cmluZ0ZpcmVEZXRhaWwocmVhc29uKSk7CiAgICB9Cgog
ICAgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAgIHsKICAgICAg
ICBpZiAoc3RhdGUoKSA9PSBJc1dhdGNoZWQpCiAgICAgICAgICAgIGZpcmVBbGwoZGV0YWlsKTsK
ICAgICAgICBtX3N0YXRlID0gSXNJbnZhbGlkYXRlZDsKICAgIH0KCiAgICB2b2lkIGludmFsaWRh
dGUoY29uc3QgY2hhciogcmVhc29uKQogICAgewogICAgICAgIGludmFsaWRhdGUoU3RyaW5nRmly
ZURldGFpbChyZWFzb24pKTsKICAgIH0KCiAgICBib29sIGlzQmVpbmdXYXRjaGVkKCkgY29uc3QK
ICAgIHsKICAgICAgICByZXR1cm4gbV9zZXRJc05vdEVtcHR5OwogICAgfQoKICAgIGludDhfdCog
YWRkcmVzc09mU3RhdGUoKSB7IHJldHVybiAmbV9zdGF0ZTsgfQogICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZlN0YXRlKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90Pigm
KHJlaW50ZXJwcmV0X2Nhc3Q8V2F0Y2hwb2ludFNldCo+KDB4NDAwMCktPm1fc3RhdGUpKSAtIDB4
NDAwMCk7IH0KICAgIGludDhfdCogYWRkcmVzc09mU2V0SXNOb3RFbXB0eSgpIHsgcmV0dXJuICZt
X3NldElzTm90RW1wdHk7IH0KCiAgICB2b2lkIGZpcmVBbGxTbG93KGNvbnN0IEZpcmVEZXRhaWwm
KTsKICAgIHZvaWQgZmlyZUFsbFNsb3coY29uc3QgY2hhciogcmVhc29uKTsKCnByaXZhdGU6CiAg
ICB2b2lkIGZpcmVBbGxXYXRjaHBvaW50cyhjb25zdCBGaXJlRGV0YWlsJik7CgogICAgZnJpZW5k
IGNsYXNzIElubGluZVdhdGNocG9pbnRTZXQ7CgogICAgaW50OF90IG1fc3RhdGU7CiAgICBpbnQ4
X3QgbV9zZXRJc05vdEVtcHR5OwoKICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXYXRjaHBvaW50LCBC
YXNpY1Jhd1NlbnRpbmVsTm9kZTxXYXRjaHBvaW50Pj4gbV9zZXQ7Cn07CiMgMjM2ICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oIgpjbGFzcyBJbmxpbmVX
YXRjaHBvaW50U2V0IHsKICAgIHByaXZhdGU6IElubGluZVdhdGNocG9pbnRTZXQoY29uc3QgSW5s
aW5lV2F0Y2hwb2ludFNldCYpID0gZGVsZXRlOyBJbmxpbmVXYXRjaHBvaW50U2V0JiBvcGVyYXRv
cj0oY29uc3QgSW5saW5lV2F0Y2hwb2ludFNldCYpID0gZGVsZXRlOzsKcHVibGljOgogICAgSW5s
aW5lV2F0Y2hwb2ludFNldChXYXRjaHBvaW50U3RhdGUgc3RhdGUpCiAgICAgICAgOiBtX2RhdGEo
ZW5jb2RlU3RhdGUoc3RhdGUpKQogICAgewogICAgfQoKICAgIH5JbmxpbmVXYXRjaHBvaW50U2V0
KCkKICAgIHsKICAgICAgICBpZiAoaXNUaGluKCkpCiAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICBmcmVlRmF0KCk7CiAgICB9CgoKICAgIFdhdGNocG9pbnRTdGF0ZSBzdGF0ZU9uSlNUaHJlYWQo
KSBjb25zdAogICAgewogICAgICAgIHVpbnRwdHJfdCBkYXRhID0gbV9kYXRhOwogICAgICAgIGlm
IChpc0ZhdChkYXRhKSkKICAgICAgICAgICAgcmV0dXJuIGZhdChkYXRhKS0+c3RhdGVPbkpTVGhy
ZWFkKCk7CiAgICAgICAgcmV0dXJuIGRlY29kZVN0YXRlKGRhdGEpOwogICAgfQoKCgoKICAgIFdh
dGNocG9pbnRTdGF0ZSBzdGF0ZSgpIGNvbnN0CiAgICB7CiAgICAgICAgV1RGOjpsb2FkTG9hZEZl
bmNlKCk7CiAgICAgICAgdWludHB0cl90IGRhdGEgPSBtX2RhdGE7CiAgICAgICAgV1RGOjpsb2Fk
TG9hZEZlbmNlKCk7CiAgICAgICAgaWYgKGlzRmF0KGRhdGEpKQogICAgICAgICAgICByZXR1cm4g
ZmF0KGRhdGEpLT5zdGF0ZSgpOwogICAgICAgIHJldHVybiBkZWNvZGVTdGF0ZShkYXRhKTsKICAg
IH0KCgoKCiAgICBib29sIGhhc0JlZW5JbnZhbGlkYXRlZCgpIGNvbnN0CiAgICB7CiAgICAgICAg
cmV0dXJuIHN0YXRlKCkgPT0gSXNJbnZhbGlkYXRlZDsKICAgIH0KCgogICAgYm9vbCBpc1N0aWxs
VmFsaWQoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiAhaGFzQmVlbkludmFsaWRhdGVkKCk7
CiAgICB9CgogICAgdm9pZCBhZGQoV2F0Y2hwb2ludCopOwoKICAgIHZvaWQgc3RhcnRXYXRjaGlu
ZygpCiAgICB7CiAgICAgICAgaWYgKGlzRmF0KCkpIHsKICAgICAgICAgICAgZmF0KCktPnN0YXJ0
V2F0Y2hpbmcoKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAoKHZvaWQp
MCk7CiAgICAgICAgbV9kYXRhID0gZW5jb2RlU3RhdGUoSXNXYXRjaGVkKTsKICAgIH0KCiAgICB2
b2lkIGZpcmVBbGwoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQogICAgewogICAgICAgIGlmIChp
c0ZhdCgpKSB7CiAgICAgICAgICAgIGZhdCgpLT5maXJlQWxsKGRldGFpbCk7CiAgICAgICAgICAg
IHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKGRlY29kZVN0YXRlKG1fZGF0YSkgPT0gQ2xl
YXJXYXRjaHBvaW50KQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgbV9kYXRhID0gZW5jb2Rl
U3RhdGUoSXNJbnZhbGlkYXRlZCk7CiAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAg
IH0KCiAgICB2b2lkIGludmFsaWRhdGUoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQogICAgewog
ICAgICAgIGlmIChpc0ZhdCgpKQogICAgICAgICAgICBmYXQoKS0+aW52YWxpZGF0ZShkZXRhaWwp
OwogICAgICAgIGVsc2UKICAgICAgICAgICAgbV9kYXRhID0gZW5jb2RlU3RhdGUoSXNJbnZhbGlk
YXRlZCk7CiAgICB9CgogICAgdm9pZCBmaXJlQWxsKGNvbnN0IGNoYXIqIHJlYXNvbik7CgogICAg
dm9pZCB0b3VjaChjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiAgICB7CiAgICAgICAgaWYgKGlz
RmF0KCkpIHsKICAgICAgICAgICAgZmF0KCktPnRvdWNoKGRldGFpbCk7CiAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICB9CiAgICAgICAgdWludHB0cl90IGRhdGEgPSBtX2RhdGE7CiAgICAgICAg
aWYgKGRlY29kZVN0YXRlKGRhdGEpID09IElzSW52YWxpZGF0ZWQpCiAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgICAgIGlmIChkZWNvZGVTdGF0
ZShkYXRhKSA9PSBDbGVhcldhdGNocG9pbnQpCiAgICAgICAgICAgIG1fZGF0YSA9IGVuY29kZVN0
YXRlKElzV2F0Y2hlZCk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBtX2RhdGEgPSBlbmNvZGVT
dGF0ZShJc0ludmFsaWRhdGVkKTsKICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAg
fQoKICAgIHZvaWQgdG91Y2goY29uc3QgY2hhciogcmVhc29uKQogICAgewogICAgICAgIHRvdWNo
KFN0cmluZ0ZpcmVEZXRhaWwocmVhc29uKSk7CiAgICB9CiMgMzc1ICIuLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oIgogICAgYm9vbCBpc0JlaW5nV2F0Y2hl
ZCgpIGNvbnN0CiAgICB7CiAgICAgICAgaWYgKGlzRmF0KCkpCiAgICAgICAgICAgIHJldHVybiBm
YXQoKS0+aXNCZWluZ1dhdGNoZWQoKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cgpwcml2
YXRlOgogICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBJc1RoaW5GbGFnID0gMTsKICAgIHN0YXRp
YyBjb25zdCB1aW50cHRyX3QgU3RhdGVNYXNrID0gNjsKICAgIHN0YXRpYyBjb25zdCB1aW50cHRy
X3QgU3RhdGVTaGlmdCA9IDE7CgogICAgc3RhdGljIGJvb2wgaXNUaGluKHVpbnRwdHJfdCBkYXRh
KSB7IHJldHVybiBkYXRhICYgSXNUaGluRmxhZzsgfQogICAgc3RhdGljIGJvb2wgaXNGYXQodWlu
dHB0cl90IGRhdGEpIHsgcmV0dXJuICFpc1RoaW4oZGF0YSk7IH0KCiAgICBzdGF0aWMgV2F0Y2hw
b2ludFN0YXRlIGRlY29kZVN0YXRlKHVpbnRwdHJfdCBkYXRhKQogICAgewogICAgICAgICgodm9p
ZCkwKTsKICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2F0Y2hwb2ludFN0YXRlPigoZGF0YSAm
IFN0YXRlTWFzaykgPj4gU3RhdGVTaGlmdCk7CiAgICB9CgogICAgc3RhdGljIHVpbnRwdHJfdCBl
bmNvZGVTdGF0ZShXYXRjaHBvaW50U3RhdGUgc3RhdGUpCiAgICB7CiAgICAgICAgcmV0dXJuIChz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KHN0YXRlKSA8PCBTdGF0ZVNoaWZ0KSB8IElzVGhpbkZsYWc7
CiAgICB9CgogICAgYm9vbCBpc1RoaW4oKSBjb25zdCB7IHJldHVybiBpc1RoaW4obV9kYXRhKTsg
fQogICAgYm9vbCBpc0ZhdCgpIGNvbnN0IHsgcmV0dXJuIGlzRmF0KG1fZGF0YSk7IH07CgogICAg
c3RhdGljIFdhdGNocG9pbnRTZXQqIGZhdCh1aW50cHRyX3QgZGF0YSkKICAgIHsKICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PFdhdGNocG9pbnRTZXQqPihkYXRhKTsKICAgIH0KCiAgICBXYXRj
aHBvaW50U2V0KiBmYXQoKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4g
ZmF0KG1fZGF0YSk7CiAgICB9CgogICAgY29uc3QgV2F0Y2hwb2ludFNldCogZmF0KCkgY29uc3QK
ICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIGZhdChtX2RhdGEpOwogICAg
fQoKICAgIFdhdGNocG9pbnRTZXQqIGluZmxhdGUoKQogICAgewogICAgICAgIGlmIChfX2J1aWx0
aW5fZXhwZWN0KCEhKGlzRmF0KCkpLCAxKSkKICAgICAgICAgICAgcmV0dXJuIGZhdCgpOwogICAg
ICAgIHJldHVybiBpbmZsYXRlU2xvdygpOwogICAgfQoKICAgIFdhdGNocG9pbnRTZXQqIGluZmxh
dGVTbG93KCk7CiAgICB2b2lkIGZyZWVGYXQoKTsKCiAgICB1aW50cHRyX3QgbV9kYXRhOwp9OwoK
fQojIDU4ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIiAyCiMgMSAi
Li4vLi4vU291cmNlL1dURi93dGYvQmFnLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL1dURi93dGYv
QmFnLmgiCiNkZWZpbmUgQmFnX2ggCgpuYW1lc3BhY2UgV1RGIHsKCnRlbXBsYXRlPHR5cGVuYW1l
IFQ+CmNsYXNzIEJhZyB7CiAgICBwcml2YXRlOiBCYWcoY29uc3QgQmFnJikgPSBkZWxldGU7IEJh
ZyYgb3BlcmF0b3I9KGNvbnN0IEJhZyYpID0gZGVsZXRlOzsKICAgIHB1YmxpYzogdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBu
ZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJh
dG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0g
dm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAo
KHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSBwcml2YXRlOiB0eXBlZGVmIGludCBfX3RoaXNJ
c0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvOwpwcml2YXRlOgogICAgY2xhc3Mg
Tm9kZSB7CiAgICAgICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBw
KSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyBy
ZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RG
OjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpX
VEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJl
dHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZv
aWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qs
IE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9u
OyB9IHByaXZhdGU6IHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0
ZXJUaGlzTWFjcm87CiAgICBwdWJsaWM6CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJn
cz4KICAgICAgICBOb2RlKEFyZ3MuLi4gYXJncykKICAgICAgICAgICAgOiBtX2l0ZW0oYXJncy4u
LikKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBUIG1faXRlbTsKICAgICAgICBOb2RlKiBt
X25leHQ7CiAgICB9OwoKcHVibGljOgogICAgQmFnKCkKICAgICAgICA6IG1faGVhZChudWxscHRy
KQogICAgewogICAgfQoKICAgIH5CYWcoKQogICAgewogICAgICAgIGNsZWFyKCk7CiAgICB9Cgog
ICAgdm9pZCBjbGVhcigpCiAgICB7CiAgICAgICAgd2hpbGUgKG1faGVhZCkgewogICAgICAgICAg
ICBOb2RlKiBjdXJyZW50ID0gbV9oZWFkOwogICAgICAgICAgICBtX2hlYWQgPSBjdXJyZW50LT5t
X25leHQ7CiAgICAgICAgICAgIGRlbGV0ZSBjdXJyZW50OwogICAgICAgIH0KICAgICAgICBtX2hl
YWQgPSBudWxscHRyOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CiAgICBU
KiBhZGQoQXJncy4uLiBhcmdzKQogICAgewogICAgICAgIE5vZGUqIG5ld05vZGUgPSBuZXcgTm9k
ZShhcmdzLi4uKTsKICAgICAgICBuZXdOb2RlLT5tX25leHQgPSBtX2hlYWQ7CiAgICAgICAgbV9o
ZWFkID0gbmV3Tm9kZTsKICAgICAgICByZXR1cm4gJm5ld05vZGUtPm1faXRlbTsKICAgIH0KCiAg
ICBjbGFzcyBpdGVyYXRvciB7CiAgICBwdWJsaWM6CiAgICAgICAgaXRlcmF0b3IoKQogICAgICAg
ICAgICA6IG1fbm9kZSgwKQogICAgICAgIHsKICAgICAgICB9CgoKICAgICAgICBib29sIG9wZXJh
dG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX25vZGU7IH0KCiAgICAgICAgVCogb3BlcmF0b3IqKCkg
Y29uc3QgeyByZXR1cm4gJm1fbm9kZS0+bV9pdGVtOyB9CgogICAgICAgIGl0ZXJhdG9yJiBvcGVy
YXRvcisrKCkKICAgICAgICB7CiAgICAgICAgICAgIG1fbm9kZSA9IG1fbm9kZS0+bV9uZXh0Owog
ICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgfQoKICAgICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAogICAgICAgIHsKICAgICAgICAgICAgcmV0
dXJuIG1fbm9kZSA9PSBvdGhlci5tX25vZGU7CiAgICAgICAgfQoKICAgICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAogICAgICAgIHsKICAgICAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgICAgIH0KCiAgICBwcml2YXRlOgogICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGZyaWVuZCBjbGFzcyBXVEY6OkJhZzsKICAgICAgICBOb2Rl
KiBtX25vZGU7CiAgICB9OwoKICAgIGl0ZXJhdG9yIGJlZ2luKCkKICAgIHsKICAgICAgICBpdGVy
YXRvciByZXN1bHQ7CiAgICAgICAgcmVzdWx0Lm1fbm9kZSA9IG1faGVhZDsKICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgfQoKICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIGl0ZXJhdG9yKCk7
IH0KCiAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9oZWFkOyB9Cgpwcml2YXRl
OgogICAgTm9kZSogbV9oZWFkOwp9OwoKfQoKdXNpbmcgV1RGOjpCYWc7CiMgNTkgIi4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvV1RG
L3d0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3Rm
L0J1bXBQb2ludGVyQWxsb2NhdG9yLmgiCiNkZWZpbmUgQnVtcFBvaW50ZXJBbGxvY2F0b3JfaCAK
CgoKCgpuYW1lc3BhY2UgV1RGIHsKCiNkZWZpbmUgTUlOSU1VTV9CVU1QX1BPT0xfU0laRSAweDEw
MDAKCmNsYXNzIEJ1bXBQb2ludGVyUG9vbCB7CnB1YmxpYzoKIyA0NyAiLi4vLi4vU291cmNlL1dU
Ri93dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaCIKICAgIEJ1bXBQb2ludGVyUG9vbCogZW5zdXJl
Q2FwYWNpdHkoc2l6ZV90IHNpemUpCiAgICB7CiAgICAgICAgdm9pZCogYWxsb2NhdGlvbkVuZCA9
IHN0YXRpY19jYXN0PGNoYXIqPihtX2N1cnJlbnQpICsgc2l6ZTsKICAgICAgICAoKHZvaWQpMCk7
CiAgICAgICAgaWYgKGFsbG9jYXRpb25FbmQgPD0gc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMpKQog
ICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICByZXR1cm4gZW5zdXJlQ2FwYWNpdHlDcm9z
c1Bvb2wodGhpcywgc2l6ZSk7CiAgICB9CgoKCiAgICB2b2lkKiBhbGxvYyhzaXplX3Qgc2l6ZSkK
ICAgIHsKICAgICAgICB2b2lkKiBjdXJyZW50ID0gbV9jdXJyZW50OwogICAgICAgIHZvaWQqIGFs
bG9jYXRpb25FbmQgPSBzdGF0aWNfY2FzdDxjaGFyKj4oY3VycmVudCkgKyBzaXplOwogICAgICAg
ICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9jdXJyZW50ID0gYWxsb2Nh
dGlvbkVuZDsKICAgICAgICByZXR1cm4gY3VycmVudDsKICAgIH0KIyA4MSAiLi4vLi4vU291cmNl
L1dURi93dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaCIKICAgIEJ1bXBQb2ludGVyUG9vbCogZGVh
bGxvYyh2b2lkKiBwb3NpdGlvbikKICAgIHsKICAgICAgICBpZiAoKHBvc2l0aW9uID49IG1fc3Rh
cnQpICYmIChwb3NpdGlvbiA8PSBzdGF0aWNfY2FzdDx2b2lkKj4odGhpcykpKSB7CiAgICAgICAg
ICAgICgodm9pZCkwKTsKICAgICAgICAgICAgbV9jdXJyZW50ID0gcG9zaXRpb247CiAgICAgICAg
ICAgIHJldHVybiB0aGlzOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZGVhbGxvY0Nyb3NzUG9v
bCh0aGlzLCBwb3NpdGlvbik7CiAgICB9Cgpwcml2YXRlOgoKICAgIHZvaWQqIG9wZXJhdG9yIG5l
dyhzaXplX3Qgc2l6ZSwgY29uc3QgUGFnZUFsbG9jYXRpb24mIGFsbG9jYXRpb24pCiAgICB7CiAg
ICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihy
ZWludGVycHJldF9jYXN0PGludHB0cl90PihhbGxvY2F0aW9uLmJhc2UoKSkgKyBhbGxvY2F0aW9u
LnNpemUoKSkgLSBzaXplOwogICAgfQoKICAgIEJ1bXBQb2ludGVyUG9vbChjb25zdCBQYWdlQWxs
b2NhdGlvbiYgYWxsb2NhdGlvbikKICAgICAgICA6IG1fY3VycmVudChhbGxvY2F0aW9uLmJhc2Uo
KSkKICAgICAgICAsIG1fc3RhcnQoYWxsb2NhdGlvbi5iYXNlKCkpCiAgICAgICAgLCBtX25leHQo
MCkKICAgICAgICAsIG1fcHJldmlvdXMoMCkKICAgICAgICAsIG1fYWxsb2NhdGlvbihhbGxvY2F0
aW9uKQogICAgewogICAgfQoKICAgIHN0YXRpYyBCdW1wUG9pbnRlclBvb2wqIGNyZWF0ZShzaXpl
X3QgbWluaW11bUNhcGFjaXR5ID0gMCkKICAgIHsKCiAgICAgICAgbWluaW11bUNhcGFjaXR5ICs9
IHNpemVvZihCdW1wUG9pbnRlclBvb2wpOwogICAgICAgIGlmIChtaW5pbXVtQ2FwYWNpdHkgPCBz
aXplb2YoQnVtcFBvaW50ZXJQb29sKSkKICAgICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgIHNp
emVfdCBwb29sU2l6ZSA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0PHNpemVfdD4oMHgxMDAwKSwgV1RG
OjpwYWdlU2l6ZSgpKTsKICAgICAgICB3aGlsZSAocG9vbFNpemUgPCBtaW5pbXVtQ2FwYWNpdHkp
IHsKICAgICAgICAgICAgcG9vbFNpemUgPDw9IDE7CgogICAgICAgICAgICAoKHZvaWQpMCk7CiAg
ICAgICAgICAgIGlmICghcG9vbFNpemUpCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICB9CgogICAgICAgIFBhZ2VBbGxvY2F0aW9uIGFsbG9jYXRpb24gPSBQYWdlQWxsb2NhdGlvbjo6
YWxsb2NhdGUocG9vbFNpemUpOwogICAgICAgIGlmICghIWFsbG9jYXRpb24pCiAgICAgICAgICAg
IHJldHVybiBuZXcgKGFsbG9jYXRpb24pIEJ1bXBQb2ludGVyUG9vbChhbGxvY2F0aW9uKTsKICAg
ICAgICByZXR1cm4gMDsKICAgIH0KCiAgICB2b2lkIHNocmluaygpCiAgICB7CiAgICAgICAgKCh2
b2lkKTApOwogICAgICAgIG1fY3VycmVudCA9IG1fc3RhcnQ7CiAgICAgICAgd2hpbGUgKG1fbmV4
dCkgewogICAgICAgICAgICBCdW1wUG9pbnRlclBvb2wqIG5leHROZXh0ID0gbV9uZXh0LT5tX25l
eHQ7CiAgICAgICAgICAgIG1fbmV4dC0+ZGVzdHJveSgpOwogICAgICAgICAgICBtX25leHQgPSBu
ZXh0TmV4dDsKICAgICAgICB9CiAgICB9CgogICAgdm9pZCBkZXN0cm95KCkKICAgIHsKICAgICAg
ICBtX2FsbG9jYXRpb24uZGVhbGxvY2F0ZSgpOwogICAgfQoKICAgIHN0YXRpYyBCdW1wUG9pbnRl
clBvb2wqIGVuc3VyZUNhcGFjaXR5Q3Jvc3NQb29sKEJ1bXBQb2ludGVyUG9vbCogcHJldmlvdXNQ
b29sLCBzaXplX3Qgc2l6ZSkKICAgIHsKCiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9p
ZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgQnVtcFBvaW50ZXJQb29sKiBwb29sID0g
cHJldmlvdXNQb29sLT5tX25leHQ7CgogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAg
IGlmICghcG9vbCkgewoKICAgICAgICAgICAgICAgIHBvb2wgPSBCdW1wUG9pbnRlclBvb2w6OmNy
ZWF0ZShzaXplKTsKICAgICAgICAgICAgICAgIHByZXZpb3VzUG9vbC0+bV9uZXh0ID0gcG9vbDsK
ICAgICAgICAgICAgICAgIHBvb2wtPm1fcHJldmlvdXMgPSBwcmV2aW91c1Bvb2w7CiAgICAgICAg
ICAgICAgICByZXR1cm4gcG9vbDsKICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIHZvaWQqIGN1
cnJlbnQgPSBwb29sLT5tX2N1cnJlbnQ7CiAgICAgICAgICAgIHZvaWQqIGFsbG9jYXRpb25FbmQg
PSBzdGF0aWNfY2FzdDxjaGFyKj4oY3VycmVudCkgKyBzaXplOwogICAgICAgICAgICAoKHZvaWQp
MCk7CiAgICAgICAgICAgIGlmIChhbGxvY2F0aW9uRW5kIDw9IHN0YXRpY19jYXN0PHZvaWQqPihw
b29sKSkKICAgICAgICAgICAgICAgIHJldHVybiBwb29sOwogICAgICAgIH0KICAgIH0KCiAgICBz
dGF0aWMgQnVtcFBvaW50ZXJQb29sKiBkZWFsbG9jQ3Jvc3NQb29sKEJ1bXBQb2ludGVyUG9vbCog
cG9vbCwgdm9pZCogcG9zaXRpb24pCiAgICB7CgogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAg
d2hpbGUgKHRydWUpIHsKCiAgICAgICAgICAgIHBvb2wtPm1fY3VycmVudCA9IHBvb2wtPm1fc3Rh
cnQ7CiAgICAgICAgICAgIHBvb2wgPSBwb29sLT5tX3ByZXZpb3VzOwoKCiAgICAgICAgICAgIGlm
ICghcG9vbCkKICAgICAgICAgICAgICAgIFdURkNyYXNoKCk7CgogICAgICAgICAgICBpZiAoKHBv
c2l0aW9uID49IHBvb2wtPm1fc3RhcnQpICYmIChwb3NpdGlvbiA8PSBzdGF0aWNfY2FzdDx2b2lk
Kj4ocG9vbCkpKSB7CiAgICAgICAgICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgICAgICAgICBw
b29sLT5tX2N1cnJlbnQgPSBwb3NpdGlvbjsKICAgICAgICAgICAgICAgIHJldHVybiBwb29sOwog
ICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHZvaWQqIG1fY3VycmVudDsKICAgIHZv
aWQqIG1fc3RhcnQ7CiAgICBCdW1wUG9pbnRlclBvb2wqIG1fbmV4dDsKICAgIEJ1bXBQb2ludGVy
UG9vbCogbV9wcmV2aW91czsKICAgIFBhZ2VBbGxvY2F0aW9uIG1fYWxsb2NhdGlvbjsKCiAgICBm
cmllbmQgY2xhc3MgQnVtcFBvaW50ZXJBbGxvY2F0b3I7Cn07CiMgMjE4ICIuLi8uLi9Tb3VyY2Uv
V1RGL3d0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oIgpjbGFzcyBCdW1wUG9pbnRlckFsbG9jYXRv
ciB7CnB1YmxpYzoKICAgIEJ1bXBQb2ludGVyQWxsb2NhdG9yKCkKICAgICAgICA6IG1faGVhZCgw
KQogICAgewogICAgfQoKICAgIH5CdW1wUG9pbnRlckFsbG9jYXRvcigpCiAgICB7CiAgICAgICAg
aWYgKG1faGVhZCkKICAgICAgICAgICAgbV9oZWFkLT5kZXN0cm95KCk7CiAgICB9CgogICAgQnVt
cFBvaW50ZXJQb29sKiBzdGFydEFsbG9jYXRvcigpCiAgICB7CiAgICAgICAgaWYgKCFtX2hlYWQp
CiAgICAgICAgICAgIG1faGVhZCA9IEJ1bXBQb2ludGVyUG9vbDo6Y3JlYXRlKCk7CiAgICAgICAg
cmV0dXJuIG1faGVhZDsKICAgIH0KCiAgICB2b2lkIHN0b3BBbGxvY2F0b3IoKQogICAgewogICAg
ICAgIGlmIChtX2hlYWQpCiAgICAgICAgICAgIG1faGVhZC0+c2hyaW5rKCk7CiAgICB9Cgpwcml2
YXRlOgogICAgQnVtcFBvaW50ZXJQb29sKiBtX2hlYWQ7Cn07Cgp9Cgp1c2luZyBXVEY6OkJ1bXBQ
b2ludGVyQWxsb2NhdG9yOwojIDYwICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oIiAyCgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0RlcXVlLmgiIDEKIyAzMSAiLi4v
Li4vU291cmNlL1dURi93dGYvRGVxdWUuaCIKI2RlZmluZSBXVEZfRGVxdWVfaCAKCgoKCgoKCm5h
bWVzcGFjZSBXVEYgewoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
PiBjbGFzcyBEZXF1ZUl0ZXJhdG9yQmFzZTsKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5PiBjbGFzcyBEZXF1ZUl0ZXJhdG9yOwp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHk+IGNsYXNzIERlcXVlQ29uc3RJdGVyYXRvcjsKCnRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSA9IDA+CmNsYXNzIERlcXVlIHsKICAg
IHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsg
fSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhz
aXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShw
KTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZh
c3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RG
OjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2
b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSBwcml2YXRlOiB0
eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvOwpw
dWJsaWM6CiAgICB0eXBlZGVmIERlcXVlSXRlcmF0b3I8VCwgaW5saW5lQ2FwYWNpdHk+IGl0ZXJh
dG9yOwogICAgdHlwZWRlZiBEZXF1ZUNvbnN0SXRlcmF0b3I8VCwgaW5saW5lQ2FwYWNpdHk+IGNv
bnN0X2l0ZXJhdG9yOwogICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+
IHJldmVyc2VfaXRlcmF0b3I7CiAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25z
dF9pdGVyYXRvcj4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKCiAgICBEZXF1ZSgpOwogICAgRGVx
dWUoc3RkOjppbml0aWFsaXplcl9saXN0PFQ+KTsKICAgIERlcXVlKGNvbnN0IERlcXVlJik7CiAg
ICBEZXF1ZShEZXF1ZSYmKTsKICAgIH5EZXF1ZSgpOwoKICAgIERlcXVlJiBvcGVyYXRvcj0oY29u
c3QgRGVxdWUmKTsKICAgIERlcXVlJiBvcGVyYXRvcj0oRGVxdWUmJik7CgogICAgdm9pZCBzd2Fw
KERlcXVlJik7CgogICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0IDw9IG1f
ZW5kID8gbV9lbmQgLSBtX3N0YXJ0IDogbV9lbmQgKyBtX2J1ZmZlci5jYXBhY2l0eSgpIC0gbV9z
dGFydDsgfQogICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydCA9PSBtX2Vu
ZDsgfQoKICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gaXRlcmF0b3IodGhpcywgbV9zdGFy
dCk7IH0KICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIGl0ZXJhdG9yKHRoaXMsIG1fZW5kKTsg
fQogICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9pdGVyYXRv
cih0aGlzLCBtX3N0YXJ0KTsgfQogICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gY29uc3RfaXRlcmF0b3IodGhpcywgbV9lbmQpOyB9CiAgICByZXZlcnNlX2l0ZXJhdG9yIHJi
ZWdpbigpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CiAgICByZXZlcnNlX2l0
ZXJhdG9yIHJlbmQoKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CiAgICBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X3JldmVy
c2VfaXRlcmF0b3IoZW5kKCkpOyB9CiAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBj
b25zdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CgogICAgVCYg
Zmlyc3QoKSB7ICgodm9pZCkwKTsgcmV0dXJuIG1fYnVmZmVyLmJ1ZmZlcigpW21fc3RhcnRdOyB9
CiAgICBjb25zdCBUJiBmaXJzdCgpIGNvbnN0IHsgKCh2b2lkKTApOyByZXR1cm4gbV9idWZmZXIu
YnVmZmVyKClbbV9zdGFydF07IH0KICAgIFQgdGFrZUZpcnN0KCk7CgogICAgVCYgbGFzdCgpIHsg
KCh2b2lkKTApOyByZXR1cm4gKigtLWVuZCgpKTsgfQogICAgY29uc3QgVCYgbGFzdCgpIGNvbnN0
IHsgKCh2b2lkKTApOyByZXR1cm4gKigtLWVuZCgpKTsgfQogICAgVCB0YWtlTGFzdCgpOwoKICAg
IHZvaWQgYXBwZW5kKFQmJiB2YWx1ZSkgeyBhcHBlbmQ8VD4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVl
KSk7IH0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgYXBwZW5kKFUmJik7CiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiB2b2lkIHByZXBlbmQoVSYmKTsKICAgIHZvaWQgcmVtb3ZlRmlyc3Qo
KTsKICAgIHZvaWQgcmVtb3ZlTGFzdCgpOwogICAgdm9pZCByZW1vdmUoaXRlcmF0b3ImKTsKICAg
IHZvaWQgcmVtb3ZlKGNvbnN0X2l0ZXJhdG9yJik7CgogICAgdm9pZCBjbGVhcigpOwoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4KICAgIGl0ZXJhdG9yIGZpbmRJZihQcmVkaWNhdGUm
Jik7Cgpwcml2YXRlOgogICAgZnJpZW5kIGNsYXNzIERlcXVlSXRlcmF0b3JCYXNlPFQsIGlubGlu
ZUNhcGFjaXR5PjsKCiAgICB0eXBlZGVmIFZlY3RvckJ1ZmZlcjxULCBpbmxpbmVDYXBhY2l0eT4g
QnVmZmVyOwogICAgdHlwZWRlZiBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPiBUeXBlT3BlcmF0aW9u
czsKICAgIHR5cGVkZWYgRGVxdWVJdGVyYXRvckJhc2U8VCwgaW5saW5lQ2FwYWNpdHk+IEl0ZXJh
dG9yQmFzZTsKCiAgICB2b2lkIHJlbW92ZShzaXplX3QgcG9zaXRpb24pOwogICAgdm9pZCBpbnZh
bGlkYXRlSXRlcmF0b3JzKCk7CiAgICB2b2lkIGRlc3Ryb3lBbGwoKTsKICAgIHZvaWQgY2hlY2tW
YWxpZGl0eSgpIGNvbnN0OwogICAgdm9pZCBjaGVja0luZGV4VmFsaWRpdHkoc2l6ZV90KSBjb25z
dDsKICAgIHZvaWQgZXhwYW5kQ2FwYWNpdHlJZk5lZWRlZCgpOwogICAgdm9pZCBleHBhbmRDYXBh
Y2l0eSgpOwoKICAgIHNpemVfdCBtX3N0YXJ0OwogICAgc2l6ZV90IG1fZW5kOwogICAgQnVmZmVy
IG1fYnVmZmVyOwoKCgp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFj
aXR5ID0gMD4KY2xhc3MgRGVxdWVJdGVyYXRvckJhc2Ugewpwcm90ZWN0ZWQ6CiAgICBEZXF1ZUl0
ZXJhdG9yQmFzZSgpOwogICAgRGVxdWVJdGVyYXRvckJhc2UoY29uc3QgRGVxdWU8VCwgaW5saW5l
Q2FwYWNpdHk+Kiwgc2l6ZV90KTsKICAgIERlcXVlSXRlcmF0b3JCYXNlKGNvbnN0IERlcXVlSXRl
cmF0b3JCYXNlJik7CiAgICBEZXF1ZUl0ZXJhdG9yQmFzZSYgb3BlcmF0b3I9KGNvbnN0IERlcXVl
SXRlcmF0b3JCYXNlJik7CiAgICB+RGVxdWVJdGVyYXRvckJhc2UoKTsKCiAgICB2b2lkIGFzc2ln
bihjb25zdCBEZXF1ZUl0ZXJhdG9yQmFzZSYgb3RoZXIpIHsgKnRoaXMgPSBvdGhlcjsgfQoKICAg
IHZvaWQgaW5jcmVtZW50KCk7CiAgICB2b2lkIGRlY3JlbWVudCgpOwoKICAgIFQqIGJlZm9yZSgp
IGNvbnN0OwogICAgVCogYWZ0ZXIoKSBjb25zdDsKCiAgICBib29sIGlzRXF1YWwoY29uc3QgRGVx
dWVJdGVyYXRvckJhc2UmKSBjb25zdDsKCnByaXZhdGU6CiAgICB2b2lkIGFkZFRvSXRlcmF0b3Jz
TGlzdCgpOwogICAgdm9pZCByZW1vdmVGcm9tSXRlcmF0b3JzTGlzdCgpOwogICAgdm9pZCBjaGVj
a1ZhbGlkaXR5KCkgY29uc3Q7CiAgICB2b2lkIGNoZWNrVmFsaWRpdHkoY29uc3QgRGVxdWVJdGVy
YXRvckJhc2UmKSBjb25zdDsKCiAgICBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT4qIG1fZGVxdWU7
CiAgICBzaXplX3QgbV9pbmRleDsKCiAgICBmcmllbmQgY2xhc3MgRGVxdWU8VCwgaW5saW5lQ2Fw
YWNpdHk+OwoKCgoKCn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHkgPSAwPgpjbGFzcyBEZXF1ZUl0ZXJhdG9yIDogcHVibGljIERlcXVlSXRlcmF0b3JCYXNlPFQs
IGlubGluZUNhcGFjaXR5PiB7CnByaXZhdGU6CiAgICB0eXBlZGVmIERlcXVlSXRlcmF0b3JCYXNl
PFQsIGlubGluZUNhcGFjaXR5PiBCYXNlOwogICAgdHlwZWRlZiBEZXF1ZUl0ZXJhdG9yPFQsIGlu
bGluZUNhcGFjaXR5PiBJdGVyYXRvcjsKCnB1YmxpYzoKICAgIHR5cGVkZWYgcHRyZGlmZl90IGRp
ZmZlcmVuY2VfdHlwZTsKICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwogICAgdHlwZWRlZiBUKiBw
b2ludGVyOwogICAgdHlwZWRlZiBUJiByZWZlcmVuY2U7CiAgICB0eXBlZGVmIHN0ZDo6YmlkaXJl
Y3Rpb25hbF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CgogICAgRGVxdWVJdGVyYXRv
cihEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT4qIGRlcXVlLCBzaXplX3QgaW5kZXgpCiAgICAgICAg
OiBCYXNlKGRlcXVlLCBpbmRleCkgeyB9CgogICAgRGVxdWVJdGVyYXRvcihjb25zdCBJdGVyYXRv
ciYgb3RoZXIpIDogQmFzZShvdGhlcikgeyB9CiAgICBEZXF1ZUl0ZXJhdG9yJiBvcGVyYXRvcj0o
Y29uc3QgSXRlcmF0b3ImIG90aGVyKSB7IEJhc2U6OmFzc2lnbihvdGhlcik7IHJldHVybiAqdGhp
czsgfQoKICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpCYXNlOjphZnRlcigpOyB9
CiAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gQmFzZTo6YWZ0ZXIoKTsgfQoKICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIEJh
c2U6OmlzRXF1YWwob3RoZXIpOyB9CiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3Im
IG90aGVyKSBjb25zdCB7IHJldHVybiAhQmFzZTo6aXNFcXVhbChvdGhlcik7IH0KCiAgICBJdGVy
YXRvciYgb3BlcmF0b3IrKygpIHsgQmFzZTo6aW5jcmVtZW50KCk7IHJldHVybiAqdGhpczsgfQoK
ICAgIEl0ZXJhdG9yJiBvcGVyYXRvci0tKCkgeyBCYXNlOjpkZWNyZW1lbnQoKTsgcmV0dXJuICp0
aGlzOyB9Cgp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0g
MD4KY2xhc3MgRGVxdWVDb25zdEl0ZXJhdG9yIDogcHVibGljIERlcXVlSXRlcmF0b3JCYXNlPFQs
IGlubGluZUNhcGFjaXR5PiB7CnByaXZhdGU6CiAgICB0eXBlZGVmIERlcXVlSXRlcmF0b3JCYXNl
PFQsIGlubGluZUNhcGFjaXR5PiBCYXNlOwogICAgdHlwZWRlZiBEZXF1ZUNvbnN0SXRlcmF0b3I8
VCwgaW5saW5lQ2FwYWNpdHk+IEl0ZXJhdG9yOwogICAgdHlwZWRlZiBEZXF1ZUl0ZXJhdG9yPFQs
IGlubGluZUNhcGFjaXR5PiBOb25Db25zdEl0ZXJhdG9yOwoKcHVibGljOgogICAgdHlwZWRlZiBw
dHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwogICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CiAgICB0
eXBlZGVmIGNvbnN0IFQqIHBvaW50ZXI7CiAgICB0eXBlZGVmIGNvbnN0IFQmIHJlZmVyZW5jZTsK
ICAgIHR5cGVkZWYgc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRl
Z29yeTsKCiAgICBEZXF1ZUNvbnN0SXRlcmF0b3IoY29uc3QgRGVxdWU8VCwgaW5saW5lQ2FwYWNp
dHk+KiBkZXF1ZSwgc2l6ZV90IGluZGV4KQogICAgICAgIDogQmFzZShkZXF1ZSwgaW5kZXgpIHsg
fQoKICAgIERlcXVlQ29uc3RJdGVyYXRvcihjb25zdCBJdGVyYXRvciYgb3RoZXIpIDogQmFzZShv
dGhlcikgeyB9CiAgICBEZXF1ZUNvbnN0SXRlcmF0b3IoY29uc3QgTm9uQ29uc3RJdGVyYXRvciYg
b3RoZXIpIDogQmFzZShvdGhlcikgeyB9CiAgICBEZXF1ZUNvbnN0SXRlcmF0b3ImIG9wZXJhdG9y
PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIHsgQmFzZTo6YXNzaWduKG90aGVyKTsgcmV0dXJuICp0
aGlzOyB9CiAgICBEZXF1ZUNvbnN0SXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBOb25Db25zdEl0
ZXJhdG9yJiBvdGhlcikgeyBCYXNlOjphc3NpZ24ob3RoZXIpOyByZXR1cm4gKnRoaXM7IH0KCiAg
ICBjb25zdCBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqQmFzZTo6YWZ0ZXIoKTsgfQog
ICAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIEJhc2U6OmFmdGVyKCk7IH0K
CiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVy
biBCYXNlOjppc0VxdWFsKG90aGVyKTsgfQogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJh
dG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIUJhc2U6OmlzRXF1YWwob3RoZXIpOyB9CgogICAg
SXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IEJhc2U6OmluY3JlbWVudCgpOyByZXR1cm4gKnRoaXM7
IH0KCiAgICBJdGVyYXRvciYgb3BlcmF0b3ItLSgpIHsgQmFzZTo6ZGVjcmVtZW50KCk7IHJldHVy
biAqdGhpczsgfQoKfTsKCgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHk+IGlubGluZSB2b2lkIERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6Y2hlY2tWYWxpZGl0eSgp
IGNvbnN0IHsgfQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlu
bGluZSB2b2lkIERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6Y2hlY2tJbmRleFZhbGlkaXR5KHNp
emVfdCkgY29uc3QgeyB9CnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4gaW5saW5lIHZvaWQgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+OjppbnZhbGlkYXRlSXRlcmF0
b3JzKCkgeyB9CiMgMjY5ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9EZXF1ZS5oIgp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CmlubGluZSBEZXF1ZTxULCBpbmxpbmVD
YXBhY2l0eT46OkRlcXVlKCkKICAgIDogbV9zdGFydCgwKQogICAgLCBtX2VuZCgwKQoKCgp7CiAg
ICBjaGVja1ZhbGlkaXR5KCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KaW5saW5lIERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6RGVxdWUoc3RkOjppbml0
aWFsaXplcl9saXN0PFQ+IGluaXRpYWxpemVyTGlzdCkKICAgIDogRGVxdWUoKQp7CiAgICBmb3Ig
KGF1dG8mIGVsZW1lbnQgOiBpbml0aWFsaXplckxpc3QpCiAgICAgICAgYXBwZW5kKGVsZW1lbnQp
Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CmlubGluZSBE
ZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46OkRlcXVlKGNvbnN0IERlcXVlJiBvdGhlcikKICAgIDog
bV9zdGFydChvdGhlci5tX3N0YXJ0KQogICAgLCBtX2VuZChvdGhlci5tX2VuZCkKICAgICwgbV9i
dWZmZXIob3RoZXIubV9idWZmZXIuY2FwYWNpdHkoKSkKCgoKewogICAgY29uc3QgVCogb3RoZXJC
dWZmZXIgPSBvdGhlci5tX2J1ZmZlci5idWZmZXIoKTsKICAgIGlmIChtX3N0YXJ0IDw9IG1fZW5k
KQogICAgICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShvdGhlckJ1ZmZlciAr
IG1fc3RhcnQsIG90aGVyQnVmZmVyICsgbV9lbmQsIG1fYnVmZmVyLmJ1ZmZlcigpICsgbV9zdGFy
dCk7CiAgICBlbHNlIHsKICAgICAgICBUeXBlT3BlcmF0aW9uczo6dW5pbml0aWFsaXplZENvcHko
b3RoZXJCdWZmZXIsIG90aGVyQnVmZmVyICsgbV9lbmQsIG1fYnVmZmVyLmJ1ZmZlcigpKTsKICAg
ICAgICBUeXBlT3BlcmF0aW9uczo6dW5pbml0aWFsaXplZENvcHkob3RoZXJCdWZmZXIgKyBtX3N0
YXJ0LCBvdGhlckJ1ZmZlciArIG1fYnVmZmVyLmNhcGFjaXR5KCksIG1fYnVmZmVyLmJ1ZmZlcigp
ICsgbV9zdGFydCk7CiAgICB9Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KaW5saW5lIERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6RGVxdWUoRGVxdWUmJiBv
dGhlcikKICAgIDogRGVxdWUoKQp7CiAgICBzd2FwKG90aGVyKTsKfQoKdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgppbmxpbmUgYXV0byBEZXF1ZTxULCBpbmxpbmVD
YXBhY2l0eT46Om9wZXJhdG9yPShjb25zdCBEZXF1ZSYgb3RoZXIpIC0+IERlcXVlJgp7CgoKICAg
IERlcXVlPFQsIGlubGluZUNhcGFjaXR5PiBjb3B5KG90aGVyKTsKICAgIHN3YXAoY29weSk7CiAg
ICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eT4KaW5saW5lIGF1dG8gRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+OjpvcGVyYXRvcj0oRGVx
dWUmJiBvdGhlcikgLT4gRGVxdWUmCnsKICAgIHN3YXAob3RoZXIpOwogICAgcmV0dXJuICp0aGlz
Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CmlubGluZSB2
b2lkIERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6ZGVzdHJveUFsbCgpCnsKICAgIGlmIChtX3N0
YXJ0IDw9IG1fZW5kKQogICAgICAgIFR5cGVPcGVyYXRpb25zOjpkZXN0cnVjdChtX2J1ZmZlci5i
dWZmZXIoKSArIG1fc3RhcnQsIG1fYnVmZmVyLmJ1ZmZlcigpICsgbV9lbmQpOwogICAgZWxzZSB7
CiAgICAgICAgVHlwZU9wZXJhdGlvbnM6OmRlc3RydWN0KG1fYnVmZmVyLmJ1ZmZlcigpLCBtX2J1
ZmZlci5idWZmZXIoKSArIG1fZW5kKTsKICAgICAgICBUeXBlT3BlcmF0aW9uczo6ZGVzdHJ1Y3Qo
bV9idWZmZXIuYnVmZmVyKCkgKyBtX3N0YXJ0LCBtX2J1ZmZlci5idWZmZXIoKSArIG1fYnVmZmVy
LmNhcGFjaXR5KCkpOwogICAgfQp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+CmlubGluZSBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46On5EZXF1ZSgpCnsKICAg
IGNoZWNrVmFsaWRpdHkoKTsKICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsKICAgIGRlc3Ryb3lB
bGwoKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5Pgppbmxp
bmUgdm9pZCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46OnN3YXAoRGVxdWU8VCwgaW5saW5lQ2Fw
YWNpdHk+JiBvdGhlcikKewogICAgY2hlY2tWYWxpZGl0eSgpOwogICAgb3RoZXIuY2hlY2tWYWxp
ZGl0eSgpOwogICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwogICAgc3RkOjpzd2FwKG1fc3RhcnQs
IG90aGVyLm1fc3RhcnQpOwogICAgc3RkOjpzd2FwKG1fZW5kLCBvdGhlci5tX2VuZCk7CiAgICBt
X2J1ZmZlci5zd2FwKG90aGVyLm1fYnVmZmVyLCAwLCAwKTsKICAgIGNoZWNrVmFsaWRpdHkoKTsK
ICAgIG90aGVyLmNoZWNrVmFsaWRpdHkoKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5PgppbmxpbmUgdm9pZCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46OmNs
ZWFyKCkKewogICAgY2hlY2tWYWxpZGl0eSgpOwogICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwog
ICAgZGVzdHJveUFsbCgpOwogICAgbV9zdGFydCA9IDA7CiAgICBtX2VuZCA9IDA7CiAgICBtX2J1
ZmZlci5kZWFsbG9jYXRlQnVmZmVyKG1fYnVmZmVyLmJ1ZmZlcigpKTsKICAgIGNoZWNrVmFsaWRp
dHkoKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5Pgp0ZW1w
bGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+CmlubGluZSBhdXRvIERlcXVlPFQsIGlubGluZUNhcGFj
aXR5Pjo6ZmluZElmKFByZWRpY2F0ZSYmIHByZWRpY2F0ZSkgLT4gaXRlcmF0b3IKewogICAgaXRl
cmF0b3IgZW5kX2l0ZXJhdG9yID0gZW5kKCk7CiAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gYmVnaW4o
KTsgaXQgIT0gZW5kX2l0ZXJhdG9yOyArK2l0KSB7CiAgICAgICAgaWYgKHByZWRpY2F0ZSgqaXQp
KQogICAgICAgICAgICByZXR1cm4gaXQ7CiAgICB9CiAgICByZXR1cm4gZW5kX2l0ZXJhdG9yOwp9
Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CmlubGluZSB2b2lk
IERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6ZXhwYW5kQ2FwYWNpdHlJZk5lZWRlZCgpCnsKICAg
IGlmIChtX3N0YXJ0KSB7CiAgICAgICAgaWYgKG1fZW5kICsgMSAhPSBtX3N0YXJ0KQogICAgICAg
ICAgICByZXR1cm47CiAgICB9IGVsc2UgaWYgKG1fZW5kKSB7CiAgICAgICAgaWYgKG1fZW5kICE9
IG1fYnVmZmVyLmNhcGFjaXR5KCkgLSAxKQogICAgICAgICAgICByZXR1cm47CiAgICB9IGVsc2Ug
aWYgKG1fYnVmZmVyLmNhcGFjaXR5KCkpCiAgICAgICAgcmV0dXJuOwoKICAgIGV4cGFuZENhcGFj
aXR5KCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4Kdm9p
ZCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46OmV4cGFuZENhcGFjaXR5KCkKewogICAgY2hlY2tW
YWxpZGl0eSgpOwogICAgc2l6ZV90IG9sZENhcGFjaXR5ID0gbV9idWZmZXIuY2FwYWNpdHkoKTsK
ICAgIFQqIG9sZEJ1ZmZlciA9IG1fYnVmZmVyLmJ1ZmZlcigpOwogICAgbV9idWZmZXIuYWxsb2Nh
dGVCdWZmZXIoc3RkOjptYXgoc3RhdGljX2Nhc3Q8c2l6ZV90PigxNiksIG9sZENhcGFjaXR5ICsg
b2xkQ2FwYWNpdHkgLyA0ICsgMSkpOwogICAgaWYgKG1fc3RhcnQgPD0gbV9lbmQpCiAgICAgICAg
VHlwZU9wZXJhdGlvbnM6Om1vdmUob2xkQnVmZmVyICsgbV9zdGFydCwgb2xkQnVmZmVyICsgbV9l
bmQsIG1fYnVmZmVyLmJ1ZmZlcigpICsgbV9zdGFydCk7CiAgICBlbHNlIHsKICAgICAgICBUeXBl
T3BlcmF0aW9uczo6bW92ZShvbGRCdWZmZXIsIG9sZEJ1ZmZlciArIG1fZW5kLCBtX2J1ZmZlci5i
dWZmZXIoKSk7CiAgICAgICAgc2l6ZV90IG5ld1N0YXJ0ID0gbV9idWZmZXIuY2FwYWNpdHkoKSAt
IChvbGRDYXBhY2l0eSAtIG1fc3RhcnQpOwogICAgICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlKG9s
ZEJ1ZmZlciArIG1fc3RhcnQsIG9sZEJ1ZmZlciArIG9sZENhcGFjaXR5LCBtX2J1ZmZlci5idWZm
ZXIoKSArIG5ld1N0YXJ0KTsKICAgICAgICBtX3N0YXJ0ID0gbmV3U3RhcnQ7CiAgICB9CiAgICBt
X2J1ZmZlci5kZWFsbG9jYXRlQnVmZmVyKG9sZEJ1ZmZlcik7CiAgICBjaGVja1ZhbGlkaXR5KCk7
Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KaW5saW5lIGF1
dG8gRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+Ojp0YWtlRmlyc3QoKSAtPiBUCnsKICAgIFQgb2xk
Rmlyc3QgPSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KGZpcnN0KCkpOwogICAg
cmVtb3ZlRmlyc3QoKTsKICAgIHJldHVybiBvbGRGaXJzdDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgppbmxpbmUgYXV0byBEZXF1ZTxULCBpbmxpbmVDYXBh
Y2l0eT46OnRha2VMYXN0KCkgLT4gVAp7CiAgICBUIG9sZExhc3QgPSBzdGQ6Om1vdmU8V1RGOjpD
aGVja01vdmVQYXJhbWV0ZXI+KGxhc3QoKSk7CiAgICByZW1vdmVMYXN0KCk7CiAgICByZXR1cm4g
b2xkTGFzdDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPgppbmxpbmUgdm9pZCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46
OmFwcGVuZChVJiYgdmFsdWUpCnsKICAgIGNoZWNrVmFsaWRpdHkoKTsKICAgIGV4cGFuZENhcGFj
aXR5SWZOZWVkZWQoKTsKICAgIG5ldyAoTm90TnVsbCwgc3RkOjphZGRyZXNzb2YobV9idWZmZXIu
YnVmZmVyKClbbV9lbmRdKSkgVChzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKICAgIGlmIChtX2Vu
ZCA9PSBtX2J1ZmZlci5jYXBhY2l0eSgpIC0gMSkKICAgICAgICBtX2VuZCA9IDA7CiAgICBlbHNl
CiAgICAgICAgKyttX2VuZDsKICAgIGNoZWNrVmFsaWRpdHkoKTsKfQoKdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgppbmxpbmUg
dm9pZCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46OnByZXBlbmQoVSYmIHZhbHVlKQp7CiAgICBj
aGVja1ZhbGlkaXR5KCk7CiAgICBleHBhbmRDYXBhY2l0eUlmTmVlZGVkKCk7CiAgICBpZiAoIW1f
c3RhcnQpCiAgICAgICAgbV9zdGFydCA9IG1fYnVmZmVyLmNhcGFjaXR5KCkgLSAxOwogICAgZWxz
ZQogICAgICAgIC0tbV9zdGFydDsKICAgIG5ldyAoTm90TnVsbCwgc3RkOjphZGRyZXNzb2YobV9i
dWZmZXIuYnVmZmVyKClbbV9zdGFydF0pKSBUKHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSkpOwogICAg
Y2hlY2tWYWxpZGl0eSgpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHk+CmlubGluZSB2b2lkIERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6cmVtb3ZlRmlyc3Qo
KQp7CiAgICBjaGVja1ZhbGlkaXR5KCk7CiAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7CiAgICAo
KHZvaWQpMCk7CiAgICBUeXBlT3BlcmF0aW9uczo6ZGVzdHJ1Y3Qoc3RkOjphZGRyZXNzb2YobV9i
dWZmZXIuYnVmZmVyKClbbV9zdGFydF0pLCBzdGQ6OmFkZHJlc3NvZihtX2J1ZmZlci5idWZmZXIo
KVttX3N0YXJ0ICsgMV0pKTsKICAgIGlmIChtX3N0YXJ0ID09IG1fYnVmZmVyLmNhcGFjaXR5KCkg
LSAxKQogICAgICAgIG1fc3RhcnQgPSAwOwogICAgZWxzZQogICAgICAgICsrbV9zdGFydDsKICAg
IGNoZWNrVmFsaWRpdHkoKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNh
cGFjaXR5PgppbmxpbmUgdm9pZCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46OnJlbW92ZUxhc3Qo
KQp7CiAgICBjaGVja1ZhbGlkaXR5KCk7CiAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7CiAgICAo
KHZvaWQpMCk7CiAgICBpZiAoIW1fZW5kKQogICAgICAgIG1fZW5kID0gbV9idWZmZXIuY2FwYWNp
dHkoKSAtIDE7CiAgICBlbHNlCiAgICAgICAgLS1tX2VuZDsKICAgIFR5cGVPcGVyYXRpb25zOjpk
ZXN0cnVjdChzdGQ6OmFkZHJlc3NvZihtX2J1ZmZlci5idWZmZXIoKVttX2VuZF0pLCBzdGQ6OmFk
ZHJlc3NvZihtX2J1ZmZlci5idWZmZXIoKVttX2VuZCArIDFdKSk7CiAgICBjaGVja1ZhbGlkaXR5
KCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KaW5saW5l
IHZvaWQgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+OjpyZW1vdmUoaXRlcmF0b3ImIGl0KQp7CiAg
ICBpdC5jaGVja1ZhbGlkaXR5KCk7CiAgICByZW1vdmUoaXQubV9pbmRleCk7Cn0KCnRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KaW5saW5lIHZvaWQgRGVxdWU8VCwg
aW5saW5lQ2FwYWNpdHk+OjpyZW1vdmUoY29uc3RfaXRlcmF0b3ImIGl0KQp7CiAgICBpdC5jaGVj
a1ZhbGlkaXR5KCk7CiAgICByZW1vdmUoaXQubV9pbmRleCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1l
IFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KaW5saW5lIHZvaWQgRGVxdWU8VCwgaW5saW5lQ2Fw
YWNpdHk+OjpyZW1vdmUoc2l6ZV90IHBvc2l0aW9uKQp7CiAgICBpZiAocG9zaXRpb24gPT0gbV9l
bmQpCiAgICAgICAgcmV0dXJuOwoKICAgIGNoZWNrVmFsaWRpdHkoKTsKICAgIGludmFsaWRhdGVJ
dGVyYXRvcnMoKTsKCiAgICBUKiBidWZmZXIgPSBtX2J1ZmZlci5idWZmZXIoKTsKICAgIFR5cGVP
cGVyYXRpb25zOjpkZXN0cnVjdChzdGQ6OmFkZHJlc3NvZihidWZmZXJbcG9zaXRpb25dKSwgc3Rk
OjphZGRyZXNzb2YoYnVmZmVyW3Bvc2l0aW9uICsgMV0pKTsKCgogICAgaWYgKHBvc2l0aW9uID49
IG1fc3RhcnQpIHsKICAgICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKGJ1ZmZl
ciArIG1fc3RhcnQsIGJ1ZmZlciArIHBvc2l0aW9uLCBidWZmZXIgKyBtX3N0YXJ0ICsgMSk7CiAg
ICAgICAgbV9zdGFydCA9IChtX3N0YXJ0ICsgMSkgJSBtX2J1ZmZlci5jYXBhY2l0eSgpOwogICAg
fSBlbHNlIHsKICAgICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKGJ1ZmZlciAr
IHBvc2l0aW9uICsgMSwgYnVmZmVyICsgbV9lbmQsIGJ1ZmZlciArIHBvc2l0aW9uKTsKICAgICAg
ICBtX2VuZCA9IChtX2VuZCAtIDEgKyBtX2J1ZmZlci5jYXBhY2l0eSgpKSAlIG1fYnVmZmVyLmNh
cGFjaXR5KCk7CiAgICB9CiAgICBjaGVja1ZhbGlkaXR5KCk7Cn0KCgp0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSB2b2lkIERlcXVlSXRlcmF0b3JCYXNl
PFQsIGlubGluZUNhcGFjaXR5Pjo6Y2hlY2tWYWxpZGl0eSgpIGNvbnN0IHsgfQp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSB2b2lkIERlcXVlSXRlcmF0
b3JCYXNlPFQsIGlubGluZUNhcGFjaXR5Pjo6Y2hlY2tWYWxpZGl0eShjb25zdCBEZXF1ZUl0ZXJh
dG9yQmFzZTxULCBpbmxpbmVDYXBhY2l0eT4mKSBjb25zdCB7IH0KdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiBpbmxpbmUgdm9pZCBEZXF1ZUl0ZXJhdG9yQmFzZTxU
LCBpbmxpbmVDYXBhY2l0eT46OmFkZFRvSXRlcmF0b3JzTGlzdCgpIHsgfQp0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSB2b2lkIERlcXVlSXRlcmF0b3JC
YXNlPFQsIGlubGluZUNhcGFjaXR5Pjo6cmVtb3ZlRnJvbUl0ZXJhdG9yc0xpc3QoKSB7IH0KIyA1
ODcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0RlcXVlLmgiCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eT4KaW5saW5lIERlcXVlSXRlcmF0b3JCYXNlPFQsIGlubGluZUNh
cGFjaXR5Pjo6RGVxdWVJdGVyYXRvckJhc2UoKQogICAgOiBtX2RlcXVlKDApCnsKfQoKdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgppbmxpbmUgRGVxdWVJdGVyYXRv
ckJhc2U8VCwgaW5saW5lQ2FwYWNpdHk+OjpEZXF1ZUl0ZXJhdG9yQmFzZShjb25zdCBEZXF1ZTxU
LCBpbmxpbmVDYXBhY2l0eT4qIGRlcXVlLCBzaXplX3QgaW5kZXgpCiAgICA6IG1fZGVxdWUoY29u
c3RfY2FzdDxEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT4qPihkZXF1ZSkpCiAgICAsIG1faW5kZXgo
aW5kZXgpCnsKICAgIGFkZFRvSXRlcmF0b3JzTGlzdCgpOwogICAgY2hlY2tWYWxpZGl0eSgpOwp9
Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CmlubGluZSBEZXF1
ZUl0ZXJhdG9yQmFzZTxULCBpbmxpbmVDYXBhY2l0eT46OkRlcXVlSXRlcmF0b3JCYXNlKGNvbnN0
IERlcXVlSXRlcmF0b3JCYXNlJiBvdGhlcikKICAgIDogbV9kZXF1ZShvdGhlci5tX2RlcXVlKQog
ICAgLCBtX2luZGV4KG90aGVyLm1faW5kZXgpCnsKICAgIGFkZFRvSXRlcmF0b3JzTGlzdCgpOwog
ICAgY2hlY2tWYWxpZGl0eSgpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+CmlubGluZSBEZXF1ZUl0ZXJhdG9yQmFzZTxULCBpbmxpbmVDYXBhY2l0eT4mIERl
cXVlSXRlcmF0b3JCYXNlPFQsIGlubGluZUNhcGFjaXR5Pjo6b3BlcmF0b3I9KGNvbnN0IERlcXVl
SXRlcmF0b3JCYXNlJiBvdGhlcikKewogICAgb3RoZXIuY2hlY2tWYWxpZGl0eSgpOwogICAgcmVt
b3ZlRnJvbUl0ZXJhdG9yc0xpc3QoKTsKCiAgICBtX2RlcXVlID0gb3RoZXIubV9kZXF1ZTsKICAg
IG1faW5kZXggPSBvdGhlci5tX2luZGV4OwogICAgYWRkVG9JdGVyYXRvcnNMaXN0KCk7CiAgICBj
aGVja1ZhbGlkaXR5KCk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KaW5saW5lIERlcXVlSXRlcmF0b3JCYXNlPFQsIGlubGlu
ZUNhcGFjaXR5Pjo6fkRlcXVlSXRlcmF0b3JCYXNlKCkKewoKCgoKfQoKdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgppbmxpbmUgYm9vbCBEZXF1ZUl0ZXJhdG9yQmFz
ZTxULCBpbmxpbmVDYXBhY2l0eT46OmlzRXF1YWwoY29uc3QgRGVxdWVJdGVyYXRvckJhc2UmIG90
aGVyKSBjb25zdAp7CiAgICBjaGVja1ZhbGlkaXR5KG90aGVyKTsKICAgIHJldHVybiBtX2luZGV4
ID09IG90aGVyLm1faW5kZXg7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KaW5saW5lIHZvaWQgRGVxdWVJdGVyYXRvckJhc2U8VCwgaW5saW5lQ2FwYWNpdHk+
OjppbmNyZW1lbnQoKQp7CiAgICBjaGVja1ZhbGlkaXR5KCk7CiAgICAoKHZvaWQpMCk7CiAgICAo
KHZvaWQpMCk7CiAgICBpZiAobV9pbmRleCA9PSBtX2RlcXVlLT5tX2J1ZmZlci5jYXBhY2l0eSgp
IC0gMSkKICAgICAgICBtX2luZGV4ID0gMDsKICAgIGVsc2UKICAgICAgICArK21faW5kZXg7CiAg
ICBjaGVja1ZhbGlkaXR5KCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KaW5saW5lIHZvaWQgRGVxdWVJdGVyYXRvckJhc2U8VCwgaW5saW5lQ2FwYWNpdHk+
OjpkZWNyZW1lbnQoKQp7CiAgICBjaGVja1ZhbGlkaXR5KCk7CiAgICAoKHZvaWQpMCk7CiAgICAo
KHZvaWQpMCk7CiAgICBpZiAoIW1faW5kZXgpCiAgICAgICAgbV9pbmRleCA9IG1fZGVxdWUtPm1f
YnVmZmVyLmNhcGFjaXR5KCkgLSAxOwogICAgZWxzZQogICAgICAgIC0tbV9pbmRleDsKICAgIGNo
ZWNrVmFsaWRpdHkoKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFj
aXR5PgppbmxpbmUgVCogRGVxdWVJdGVyYXRvckJhc2U8VCwgaW5saW5lQ2FwYWNpdHk+OjphZnRl
cigpIGNvbnN0CnsKICAgIGNoZWNrVmFsaWRpdHkoKTsKICAgICgodm9pZCkwKTsKICAgIHJldHVy
biBzdGQ6OmFkZHJlc3NvZihtX2RlcXVlLT5tX2J1ZmZlci5idWZmZXIoKVttX2luZGV4XSk7Cn0K
CnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KaW5saW5lIFQqIERl
cXVlSXRlcmF0b3JCYXNlPFQsIGlubGluZUNhcGFjaXR5Pjo6YmVmb3JlKCkgY29uc3QKewogICAg
Y2hlY2tWYWxpZGl0eSgpOwogICAgKCh2b2lkKTApOwogICAgaWYgKCFtX2luZGV4KQogICAgICAg
IHJldHVybiBzdGQ6OmFkZHJlc3NvZihtX2RlcXVlLT5tX2J1ZmZlci5idWZmZXIoKVttX2RlcXVl
LT5tX2J1ZmZlci5jYXBhY2l0eSgpIC0gMV0pOwogICAgcmV0dXJuIHN0ZDo6YWRkcmVzc29mKG1f
ZGVxdWUtPm1fYnVmZmVyLmJ1ZmZlcigpW21faW5kZXggLSAxXSk7Cn0KCn0KCnVzaW5nIFdURjo6
RGVxdWU7CiMgNjIgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgiIDIK
CgoKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9TaW1wbGVTdGF0cy5oIiAxCiMgMjcgIi4uLy4u
L1NvdXJjZS9XVEYvd3RmL1NpbXBsZVN0YXRzLmgiCiNkZWZpbmUgU2ltcGxlU3RhdHNfaCAKCgoK
Cm5hbWVzcGFjZSBXVEYgewoKCgpjbGFzcyBTaW1wbGVTdGF0cyB7CnB1YmxpYzoKICAgIFNpbXBs
ZVN0YXRzKCkKICAgICAgICA6IG1fY291bnQoMCkKICAgICAgICAsIG1fc3VtKDApCiAgICAgICAg
LCBtX3N1bU9mU3F1YXJlcygwKQogICAgewogICAgfQoKICAgIHZvaWQgYWRkKGRvdWJsZSB2YWx1
ZSkKICAgIHsKICAgICAgICBtX2NvdW50Kys7CiAgICAgICAgbV9zdW0gKz0gdmFsdWU7CiAgICAg
ICAgbV9zdW1PZlNxdWFyZXMgKz0gdmFsdWUgKiB2YWx1ZTsKICAgIH0KCiAgICBib29sIG9wZXJh
dG9yISgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuICFtX2NvdW50OwogICAgfQoKICAgIGRv
dWJsZSBjb3VudCgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fY291bnQ7CiAgICB9Cgog
ICAgZG91YmxlIHN1bSgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fc3VtOwogICAgfQoK
ICAgIGRvdWJsZSBzdW1PZlNxdWFyZXMoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX3N1
bU9mU3F1YXJlczsKICAgIH0KCiAgICBkb3VibGUgbWVhbigpIGNvbnN0CiAgICB7CiAgICAgICAg
cmV0dXJuIG1fc3VtIC8gbV9jb3VudDsKICAgIH0KCgoKCiAgICBkb3VibGUgdmFyaWFuY2UoKSBj
b25zdAogICAgewogICAgICAgIGlmIChtX2NvdW50IDwgMikKICAgICAgICAgICAgcmV0dXJuIDA7
CgoKICAgICAgICBkb3VibGUgc2Vjb25kTW9tZW50ID0gbV9zdW1PZlNxdWFyZXMgLyBtX2NvdW50
OwogICAgICAgIGRvdWJsZSBmaXJzdE1vbWVudCA9IG1fc3VtIC8gbV9jb3VudDsKCiAgICAgICAg
ZG91YmxlIHJlc3VsdCA9IHNlY29uZE1vbWVudCAtIGZpcnN0TW9tZW50ICogZmlyc3RNb21lbnQ7
CgoKCiAgICAgICAgaWYgKHJlc3VsdCA8PSAwKQogICAgICAgICAgICByZXR1cm4gMDsKCiAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCgogICAgZG91YmxlIHN0YW5kYXJkRGV2aWF0aW9uKCkg
Y29uc3QKICAgIHsKICAgICAgICByZXR1cm4gc3FydCh2YXJpYW5jZSgpKTsKICAgIH0KCnByaXZh
dGU6CiAgICBkb3VibGUgbV9jb3VudDsKICAgIGRvdWJsZSBtX3N1bTsKICAgIGRvdWJsZSBtX3N1
bU9mU3F1YXJlczsKfTsKCn0KIyA2NiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaCIgMgoKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9TdG9wd2F0Y2guaCIgMQojIDI2
ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9TdG9wd2F0Y2guaCIKI2RlZmluZSBTdG9wd2F0Y2hfaCAK
CiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC45LjMtdGh1bWIyL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjkuMy9jbWF0aCIgMSAzCiMgMzkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOS4zLXRodW1iMi9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC45LjMvY21hdGgiIDMKICAgICAgIAojIDQwICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjkuMy10aHVtYjIv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOS4zL2NtYXRoIiAzCiMgMjkg
Ii4uLy4uL1NvdXJjZS9XVEYvd3RmL1N0b3B3YXRjaC5oIiAyCgoKCm5hbWVzcGFjZSBXVEYgewoK
Y2xhc3MgU3RvcHdhdGNoIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcHdhdGNoPiB7CnB1YmxpYzoK
ICAgIHN0YXRpYyBSZWY8U3RvcHdhdGNoPiBjcmVhdGUoKQogICAgewogICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0b3B3YXRjaCgpKTsKICAgIH0KCiAgICB2b2lkIHJlc2V0KCk7CiAgICB2
b2lkIHN0YXJ0KCk7CiAgICB2b2lkIHN0b3AoKTsKCiAgICBkb3VibGUgZWxhcHNlZFRpbWUoKTsK
CiAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gIXN0ZDo6aXNuYW4obV9sYXN0U3Rh
cnRUaW1lKTsgfQpwcml2YXRlOgogICAgU3RvcHdhdGNoKCkgeyByZXNldCgpOyB9CgogICAgZG91
YmxlIG1fZWxhcHNlZFRpbWU7CiAgICBkb3VibGUgbV9sYXN0U3RhcnRUaW1lOwp9OwoKaW5saW5l
IHZvaWQgU3RvcHdhdGNoOjpyZXNldCgpCnsKICAgIG1fZWxhcHNlZFRpbWUgPSAwLjA7CiAgICBt
X2xhc3RTdGFydFRpbWUgPSAoX19idWlsdGluX25hbmYgKCIiKSk7Cn0KCmlubGluZSB2b2lkIFN0
b3B3YXRjaDo6c3RhcnQoKQp7CiAgICAoKHZvaWQpMCk7CgogICAgbV9sYXN0U3RhcnRUaW1lID0g
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Cn0KCmlubGluZSB2b2lkIFN0b3B3YXRjaDo6
c3RvcCgpCnsKICAgICgodm9pZCkwKTsKCiAgICBtX2VsYXBzZWRUaW1lICs9IG1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpIC0gbV9sYXN0U3RhcnRUaW1lOwogICAgbV9sYXN0U3RhcnRUaW1l
ID0gKF9fYnVpbHRpbl9uYW5mICgiIikpOwp9CgppbmxpbmUgZG91YmxlIFN0b3B3YXRjaDo6ZWxh
cHNlZFRpbWUoKQp7CiAgICBpZiAoIWlzQWN0aXZlKCkpCiAgICAgICAgcmV0dXJuIG1fZWxhcHNl
ZFRpbWU7CgogICAgcmV0dXJuIG1fZWxhcHNlZFRpbWUgKyAobW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCkgLSBtX2xhc3RTdGFydFRpbWUpOwp9Cgp9Cgp1c2luZyBXVEY6OlN0b3B3YXRjaDsK
IyA2OCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCIgMgoKCgoKIyAx
ICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgiIDEKIyAyNyAiLi4v
Li4vU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oIgojZGVmaW5lIFdURl9TeW1i
b2xSZWdpc3RyeV9oIAoKCgoKCgpuYW1lc3BhY2UgV1RGIHsKCgoKCmNsYXNzIFN5bWJvbFJlZ2lz
dHJ5S2V5IHsKcHVibGljOgogICAgU3ltYm9sUmVnaXN0cnlLZXkoKSA9IGRlZmF1bHQ7CiAgICBl
eHBsaWNpdCBTeW1ib2xSZWdpc3RyeUtleShTdHJpbmdJbXBsKiB1aWQpOwogICAgU3ltYm9sUmVn
aXN0cnlLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKTsKCiAgICB1bnNpZ25lZCBo
YXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9CiAgICBTdHJpbmdJbXBsKiBpbXBsKCkgY29u
c3QgeyByZXR1cm4gbV9pbXBsOyB9CgogICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW1wbCA9PSBoYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQoKcHJp
dmF0ZToKICAgIHN0YXRpYyBTdHJpbmdJbXBsKiBoYXNoVGFibGVEZWxldGVkVmFsdWUoKSB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PFN0cmluZ0ltcGwqPigtMSk7IH0KCiAgICBTdHJpbmdJbXBs
KiBtX2ltcGwgeyBudWxscHRyIH07CiAgICB1bnNpZ25lZCBtX2hhc2ggeyAwIH07Cn07Cgp0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7CnRlbXBsYXRlPD4gc3RydWN0IERl
ZmF1bHRIYXNoPFN5bWJvbFJlZ2lzdHJ5S2V5PiB7CiAgICBzdHJ1Y3QgSGFzaCA6IFN0cmluZ0hh
c2ggewogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFN5bWJvbFJlZ2lzdHJ5S2V5
JiBrZXkpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsKICAgICAgICB9
CiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3ltYm9sUmVnaXN0cnlLZXkmIGEsIGNv
bnN0IFN5bWJvbFJlZ2lzdHJ5S2V5JiBiKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIFN0
cmluZ0hhc2g6OmVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7CiAgICAgICAgfQogICAgfTsKfTsK
CnRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8U3ltYm9sUmVnaXN0cnlLZXk+IDogU2ltcGxl
Q2xhc3NIYXNoVHJhaXRzPFN5bWJvbFJlZ2lzdHJ5S2V5PiB7CiAgICBzdGF0aWMgY29uc3QgYm9v
bCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7CiAgICBzdGF0aWMgYm9vbCBpc0VtcHR5
VmFsdWUoY29uc3QgU3ltYm9sUmVnaXN0cnlLZXkmIGtleSkKICAgIHsKICAgICAgICByZXR1cm4g
a2V5LmltcGwoKSA9PSBudWxscHRyOwogICAgfQp9OwoKY2xhc3MgU3ltYm9sUmVnaXN0cnkgewog
ICAgcHJpdmF0ZTogU3ltYm9sUmVnaXN0cnkoY29uc3QgU3ltYm9sUmVnaXN0cnkmKSA9IGRlbGV0
ZTsgU3ltYm9sUmVnaXN0cnkmIG9wZXJhdG9yPShjb25zdCBTeW1ib2xSZWdpc3RyeSYpID0gZGVs
ZXRlOzsKcHVibGljOgogICAgU3ltYm9sUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CiAgICB+U3ltYm9s
UmVnaXN0cnkoKTsKCiAgICBSZWY8U3ltYm9sSW1wbD4gc3ltYm9sRm9yS2V5KGNvbnN0IFN0cmlu
ZyYpOwogICAgU3RyaW5nIGtleUZvclN5bWJvbChTeW1ib2xJbXBsJik7CgogICAgdm9pZCByZW1v
dmUoU3ltYm9sSW1wbCYpOwoKcHJpdmF0ZToKICAgIEhhc2hTZXQ8U3ltYm9sUmVnaXN0cnlLZXk+
IG1fdGFibGU7Cn07CgppbmxpbmUgU3ltYm9sUmVnaXN0cnlLZXk6OlN5bWJvbFJlZ2lzdHJ5S2V5
KFN0cmluZ0ltcGwqIHVpZCkKICAgIDogbV9pbXBsKHVpZCkKewogICAgaWYgKHVpZC0+aXNTeW1i
b2woKSkgewogICAgICAgIGlmICh1aWQtPmlzOEJpdCgpKQogICAgICAgICAgICBtX2hhc2ggPSBT
dHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKHVpZC0+Y2hhcmFjdGVyczgo
KSwgdWlkLT5sZW5ndGgoKSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBtX2hhc2ggPSBTdHJp
bmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKHVpZC0+Y2hhcmFjdGVyczE2KCks
IHVpZC0+bGVuZ3RoKCkpOwogICAgfSBlbHNlCiAgICAgICAgbV9oYXNoID0gdWlkLT5oYXNoKCk7
Cn0KCmlubGluZSBTeW1ib2xSZWdpc3RyeUtleTo6U3ltYm9sUmVnaXN0cnlLZXkoV1RGOjpIYXNo
VGFibGVEZWxldGVkVmFsdWVUeXBlKQogICAgOiBtX2ltcGwoaGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCkpCnsKfQoKfQojIDczICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IiAyCgoKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CmNsYXNz
IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk7CmNsYXNzIENvZGVCbG9jazsKY2xhc3MgQ29kZUNh
Y2hlOwpjbGFzcyBDb21tb25JZGVudGlmaWVyczsKY2xhc3MgQ3VzdG9tR2V0dGVyU2V0dGVyOwpj
bGFzcyBFeGVjU3RhdGU7CmNsYXNzIEV4Y2VwdGlvbjsKY2xhc3MgSGFuZGxlU3RhY2s7CmNsYXNz
IFR5cGVQcm9maWxlcjsKY2xhc3MgVHlwZVByb2ZpbGVyTG9nOwpjbGFzcyBIZWFwUHJvZmlsZXI7
CmNsYXNzIElkZW50aWZpZXI7CmNsYXNzIEludGVycHJldGVyOwpjbGFzcyBKU0JvdW5kU2xvdEJh
c2VGdW5jdGlvbjsKY2xhc3MgSlNHbG9iYWxPYmplY3Q7CmNsYXNzIEpTT2JqZWN0OwpjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CmNsYXNzIExlZ2FjeVByb2ZpbGVyOwpjbGFzcyBOYXRpdmVF
eGVjdXRhYmxlOwpjbGFzcyBSZWdFeHBDYWNoZTsKY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7
CgpjbGFzcyBTYW1wbGluZ1Byb2ZpbGVyOwoKY2xhc3MgU2hhZG93Q2hpY2tlbjsKY2xhc3MgU2Ny
aXB0RXhlY3V0YWJsZTsKY2xhc3MgU291cmNlUHJvdmlkZXI7CmNsYXNzIFNvdXJjZVByb3ZpZGVy
Q2FjaGU7CnN0cnVjdCBTdGFja0ZyYW1lOwpjbGFzcyBTdHJ1Y3R1cmU7CgoKCmNsYXNzIFVubGlu
a2VkQ29kZUJsb2NrOwpjbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7CmNsYXNzIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOwpjbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7CmNsYXNz
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwpj
bGFzcyBWTUVudHJ5U2NvcGU7CmNsYXNzIFdhdGNoZG9nOwpjbGFzcyBXYXRjaHBvaW50OwpjbGFz
cyBXYXRjaHBvaW50U2V0OwoKCm5hbWVzcGFjZSBERkcgewpjbGFzcyBMb25nTGl2ZWRTdGF0ZTsK
fQoKCgoKCgpuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKc3RydWN0IEFyaXR5Q2hlY2tEYXRh
Owp9Cm5hbWVzcGFjZSBQcm9maWxlciB7CmNsYXNzIERhdGFiYXNlOwp9CgpzdHJ1Y3QgSGFzaFRh
YmxlOwpzdHJ1Y3QgSW5zdHJ1Y3Rpb247CgpzdHJ1Y3QgTG9jYWxUaW1lT2Zmc2V0Q2FjaGUgewog
ICAgTG9jYWxUaW1lT2Zmc2V0Q2FjaGUoKQogICAgICAgIDogc3RhcnQoMC4wKQogICAgICAgICwg
ZW5kKC0xLjApCiAgICAgICAgLCBpbmNyZW1lbnQoMC4wKQogICAgICAgICwgdGltZVR5cGUoV1RG
OjpVVENUaW1lKQogICAgewogICAgfQoKICAgIHZvaWQgcmVzZXQoKQogICAgewogICAgICAgIG9m
ZnNldCA9IExvY2FsVGltZU9mZnNldCgpOwogICAgICAgIHN0YXJ0ID0gMC4wOwogICAgICAgIGVu
ZCA9IC0xLjA7CiAgICAgICAgaW5jcmVtZW50ID0gMC4wOwogICAgICAgIHRpbWVUeXBlID0gV1RG
OjpVVENUaW1lOwogICAgfQoKICAgIExvY2FsVGltZU9mZnNldCBvZmZzZXQ7CiAgICBkb3VibGUg
c3RhcnQ7CiAgICBkb3VibGUgZW5kOwogICAgZG91YmxlIGluY3JlbWVudDsKICAgIFdURjo6VGlt
ZVR5cGUgdGltZVR5cGU7Cn07CgpjbGFzcyBRdWV1ZWRUYXNrIHsKICAgIHByaXZhdGU6IFF1ZXVl
ZFRhc2soY29uc3QgUXVldWVkVGFzayYpID0gZGVsZXRlOyBRdWV1ZWRUYXNrJiBvcGVyYXRvcj0o
Y29uc3QgUXVldWVkVGFzayYpID0gZGVsZXRlOzsKICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBz
aXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRl
bGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdb
XShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBv
cGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQp
MCk7IHJldHVybiBsb2NhdGlvbjsgfSBwcml2YXRlOiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVU
b0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvOwpwdWJsaWM6CiAgICB2b2lkIHJ1bigpOwoK
ICAgIFF1ZXVlZFRhc2soVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNz
UmVmUHRyPE1pY3JvdGFzaz4gbWljcm90YXNrKQogICAgICAgIDogbV9nbG9iYWxPYmplY3Qodm0s
IGdsb2JhbE9iamVjdCkKICAgICAgICAsIG1fbWljcm90YXNrKG1pY3JvdGFzaykKICAgIHsKICAg
IH0KCnByaXZhdGU6CiAgICBTdHJvbmc8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0Owog
ICAgUmVmUHRyPE1pY3JvdGFzaz4gbV9taWNyb3Rhc2s7Cn07CgpjbGFzcyBDb25zZXJ2YXRpdmVS
b290czsKCgoKCgpzdHJ1Y3QgU2NyYXRjaEJ1ZmZlciB7CiAgICBTY3JhdGNoQnVmZmVyKCkKICAg
IHsKICAgICAgICB1Lm1fYWN0aXZlTGVuZ3RoID0gMDsKICAgIH0KCiAgICBzdGF0aWMgU2NyYXRj
aEJ1ZmZlciogY3JlYXRlKHNpemVfdCBzaXplKQogICAgewogICAgICAgIFNjcmF0Y2hCdWZmZXIq
IHJlc3VsdCA9IG5ldyAoZmFzdE1hbGxvYyhTY3JhdGNoQnVmZmVyOjphbGxvY2F0aW9uU2l6ZShz
aXplKSkpIFNjcmF0Y2hCdWZmZXI7CgogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CgogICAg
c3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkgeyByZXR1cm4g
c2l6ZW9mKFNjcmF0Y2hCdWZmZXIpICsgYnVmZmVyU2l6ZTsgfQogICAgdm9pZCBzZXRBY3RpdmVM
ZW5ndGgoc2l6ZV90IGFjdGl2ZUxlbmd0aCkgeyB1Lm1fYWN0aXZlTGVuZ3RoID0gYWN0aXZlTGVu
Z3RoOyB9CiAgICBzaXplX3QgYWN0aXZlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gdS5tX2FjdGl2
ZUxlbmd0aDsgfTsKICAgIHNpemVfdCogYWN0aXZlTGVuZ3RoUHRyKCkgeyByZXR1cm4gJnUubV9h
Y3RpdmVMZW5ndGg7IH07CiAgICB2b2lkKiBkYXRhQnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7
IH0KCiAgICB1bmlvbiB7CiAgICAgICAgc2l6ZV90IG1fYWN0aXZlTGVuZ3RoOwogICAgICAgIGRv
dWJsZSBwYWQ7CiAgICB9IHU7CgoKCiAgICB2b2lkKiBtX2J1ZmZlclswXTsKCn07CgoKCgpjbGFz
cyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewpwdWJsaWM6CiMgMjM2ICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIgogICAgZW51bSBWTVR5cGUg
eyBEZWZhdWx0LCBBUElDb250ZXh0R3JvdXAsIEFQSVNoYXJlZCB9OwoKICAgIHN0cnVjdCBDbGll
bnREYXRhIHsKICAgICAgICB2aXJ0dWFsIH5DbGllbnREYXRhKCkgPSAwOwogICAgfTsKCiAgICBi
b29sIGlzU2hhcmVkSW5zdGFuY2UoKSB7IHJldHVybiB2bVR5cGUgPT0gQVBJU2hhcmVkOyB9CiAg
ICBib29sIHVzaW5nQVBJKCkgeyByZXR1cm4gdm1UeXBlICE9IERlZmF1bHQ7IH0KICAgIHN0YXRp
YyBib29sIHNoYXJlZEluc3RhbmNlRXhpc3RzKCk7CiAgICBzdGF0aWMgVk0mIHNoYXJlZEluc3Rh
bmNlKCk7CgogICAgc3RhdGljIFJlZjxWTT4gY3JlYXRlKEhlYXBUeXBlID0gU21hbGxIZWFwKTsK
ICAgIHN0YXRpYyBSZWY8Vk0+IGNyZWF0ZUxlYWtlZChIZWFwVHlwZSA9IFNtYWxsSGVhcCk7CiAg
ICBzdGF0aWMgUmVmPFZNPiBjcmVhdGVDb250ZXh0R3JvdXAoSGVhcFR5cGUgPSBTbWFsbEhlYXAp
OwogICAgflZNKCk7CgogICAgV2F0Y2hkb2cmIGVuc3VyZVdhdGNoZG9nKCk7CiAgICBXYXRjaGRv
Zyogd2F0Y2hkb2coKSB7IHJldHVybiBtX3dhdGNoZG9nLmdldCgpOyB9CgogICAgSGVhcFByb2Zp
bGVyKiBoZWFwUHJvZmlsZXIoKSBjb25zdCB7IHJldHVybiBtX2hlYXBQcm9maWxlci5nZXQoKTsg
fQogICAgSGVhcFByb2ZpbGVyJiBlbnN1cmVIZWFwUHJvZmlsZXIoKTsKCgogICAgU2FtcGxpbmdQ
cm9maWxlciogc2FtcGxpbmdQcm9maWxlcigpIHsgcmV0dXJuIG1fc2FtcGxpbmdQcm9maWxlci5n
ZXQoKTsgfQogICAgdm9pZCBlbnN1cmVTYW1wbGluZ1Byb2ZpbGVyKFJlZlB0cjxTdG9wd2F0Y2g+
JiYpOwoKCnByaXZhdGU6CiAgICBSZWZQdHI8SlNMb2NrPiBtX2FwaUxvY2s7CgpwdWJsaWM6CgoK
CiAgICBFeGVjdXRhYmxlQWxsb2NhdG9yIGV4ZWN1dGFibGVBbGxvY2F0b3I7CgoKCgogICAgSGVh
cCBoZWFwOwoKCiAgICBzdGQ6OnVuaXF1ZV9wdHI8REZHOjpMb25nTGl2ZWRTdGF0ZT4gZGZnU3Rh
dGU7CgoKICAgIFZNVHlwZSB2bVR5cGU7CiAgICBDbGllbnREYXRhKiBjbGllbnREYXRhOwogICAg
Vk1FbnRyeUZyYW1lKiB0b3BWTUVudHJ5RnJhbWU7CiAgICBFeGVjU3RhdGUqIHRvcENhbGxGcmFt
ZTsKICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZVN0cnVjdHVyZTsKICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IHN0cnVjdHVyZVJhcmVEYXRhU3RydWN0dXJlOwogICAgU3Ryb25nPFN0cnVjdHVy
ZT4gdGVybWluYXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlOwogICAgU3Ryb25nPFN0cnVjdHVy
ZT4gc3RyaW5nU3RydWN0dXJlOwogICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvcGVydHlOYW1lSXRl
cmF0b3JTdHJ1Y3R1cmU7CiAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yU3RydWN0dXJlOwogICAgU3Ryb25nPFN0cnVjdHVyZT4gY3VzdG9tR2V0dGVyU2V0dGVyU3Ry
dWN0dXJlOwogICAgU3Ryb25nPFN0cnVjdHVyZT4gc2NvcGVkQXJndW1lbnRzVGFibGVTdHJ1Y3R1
cmU7CiAgICBTdHJvbmc8U3RydWN0dXJlPiBhcGlXcmFwcGVyU3RydWN0dXJlOwogICAgU3Ryb25n
PFN0cnVjdHVyZT4gSlNTY29wZVN0cnVjdHVyZTsKICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4ZWN1
dGFibGVTdHJ1Y3R1cmU7CiAgICBTdHJvbmc8U3RydWN0dXJlPiBuYXRpdmVFeGVjdXRhYmxlU3Ry
dWN0dXJlOwogICAgU3Ryb25nPFN0cnVjdHVyZT4gZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAg
ICBTdHJvbmc8U3RydWN0dXJlPiBwcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZTsKICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZTsKCgoKICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlOwogICAgU3Ryb25nPFN0
cnVjdHVyZT4gcmVnRXhwU3RydWN0dXJlOwogICAgU3Ryb25nPFN0cnVjdHVyZT4gc3ltYm9sU3Ry
dWN0dXJlOwogICAgU3Ryb25nPFN0cnVjdHVyZT4gc3ltYm9sVGFibGVTdHJ1Y3R1cmU7CiAgICBT
dHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZTsKICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IHNwYXJzZUFycmF5VmFsdWVNYXBTdHJ1Y3R1cmU7CiAgICBTdHJvbmc8U3RydWN0dXJl
PiB0ZW1wbGF0ZVJlZ2lzdHJ5S2V5U3RydWN0dXJlOwogICAgU3Ryb25nPFN0cnVjdHVyZT4gYXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U3RydWN0dXJlOwogICAgU3Ryb25nPFN0cnVjdHVy
ZT4gdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICBTdHJvbmc8U3RydWN0
dXJlPiB1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICBTdHJvbmc8U3RydWN0
dXJlPiB1bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICBTdHJvbmc8U3RydWN0dXJl
PiB1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3RydWN0dXJlOwogICAgU3Ryb25nPFN0cnVjdHVy
ZT4gdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlOwogICAgU3Ryb25nPFN0
cnVjdHVyZT4gcHJvcGVydHlUYWJsZVN0cnVjdHVyZTsKICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHdl
YWtNYXBEYXRhU3RydWN0dXJlOwogICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRWYWx1ZVN0
cnVjdHVyZTsKICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlOwogICAgU3Ryb25n
PFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhjZXB0
aW9uU3RydWN0dXJlOwogICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0
dXJlOwogICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmU7CiAgICBTdHJvbmc8U3RydWN0dXJlPiBuYXRpdmVTdGRGdW5jdGlvbkNlbGxTdHJ1Y3R1cmU7
CiAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlOwogICAgU3Ry
b25nPFN0cnVjdHVyZT4gbW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZTsKICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IGV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICBTdHJvbmc8U3RydWN0dXJl
PiBmdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZTsKICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHdlYkFz
c2VtYmx5Q29kZUJsb2NrU3RydWN0dXJlOwoKICAgIFN0cm9uZzxKU0NlbGw+IGl0ZXJhdGlvblRl
cm1pbmF0b3I7CiAgICBTdHJvbmc8SlNDZWxsPiBlbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3I7
CgogICAgQXRvbWljU3RyaW5nVGFibGUqIG1fYXRvbWljU3RyaW5nVGFibGU7CiAgICBXVEY6OlN5
bWJvbFJlZ2lzdHJ5IG1fc3ltYm9sUmVnaXN0cnk7CiAgICBDb21tb25JZGVudGlmaWVycyogcHJv
cGVydHlOYW1lczsKICAgIGNvbnN0IE1hcmtlZEFyZ3VtZW50QnVmZmVyKiBlbXB0eUxpc3Q7CiAg
ICBTbWFsbFN0cmluZ3Mgc21hbGxTdHJpbmdzOwogICAgTnVtZXJpY1N0cmluZ3MgbnVtZXJpY1N0
cmluZ3M7CiAgICBEYXRlSW5zdGFuY2VDYWNoZSBkYXRlSW5zdGFuY2VDYWNoZTsKICAgIFdURjo6
U2ltcGxlU3RhdHMgbWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklU
OwogICAgV2Vha0dDTWFwPHN0ZDo6cGFpcjxDdXN0b21HZXR0ZXJTZXR0ZXIqLCBpbnQ+LCBKU0Jv
dW5kU2xvdEJhc2VGdW5jdGlvbj4gY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25NYXA7CiAgICBX
ZWFrR0NNYXA8U3RyaW5nSW1wbCosIEpTU3RyaW5nLCBQdHJIYXNoPFN0cmluZ0ltcGwqPj4gc3Ry
aW5nQ2FjaGU7CiAgICBTdHJvbmc8SlNTdHJpbmc+IGxhc3RDYWNoZWRTdHJpbmc7CgogICAgQXRv
bWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hdG9t
aWNTdHJpbmdUYWJsZTsgfQogICAgV1RGOjpTeW1ib2xSZWdpc3RyeSYgc3ltYm9sUmVnaXN0cnko
KSB7IHJldHVybiBtX3N5bWJvbFJlZ2lzdHJ5OyB9CgogICAgdm9pZCBzZXRJbkRlZmluZU93blBy
b3BlcnR5KGJvb2wgaW5EZWZpbmVPd25Qcm9wZXJ0eSkKICAgIHsKICAgICAgICBtX2luRGVmaW5l
T3duUHJvcGVydHkgPSBpbkRlZmluZU93blByb3BlcnR5OwogICAgfQoKICAgIGJvb2wgaXNJbkRl
ZmluZU93blByb3BlcnR5KCkKICAgIHsKICAgICAgICByZXR1cm4gbV9pbkRlZmluZU93blByb3Bl
cnR5OwogICAgfQoKICAgIExlZ2FjeVByb2ZpbGVyKiBlbmFibGVkUHJvZmlsZXIoKSB7IHJldHVy
biBtX2VuYWJsZWRQcm9maWxlcjsgfQogICAgdm9pZCBzZXRFbmFibGVkUHJvZmlsZXIoTGVnYWN5
UHJvZmlsZXIqKTsKCiAgICB2b2lkKiBlbmFibGVkUHJvZmlsZXJBZGRyZXNzKCkgeyByZXR1cm4g
Jm1fZW5hYmxlZFByb2ZpbGVyOyB9CgoKICAgIGJvb2wgY2FuVXNlSklUKCkgeyByZXR1cm4gbV9j
YW5Vc2VKSVQ7IH0KCgoKCgogICAgYm9vbCBjYW5Vc2VSZWdFeHBKSVQoKSB7IHJldHVybiBtX2Nh
blVzZVJlZ0V4cEpJVDsgfQoKCgoKICAgIFNvdXJjZVByb3ZpZGVyQ2FjaGUqIGFkZFNvdXJjZVBy
b3ZpZGVyQ2FjaGUoU291cmNlUHJvdmlkZXIqKTsKICAgIHZvaWQgY2xlYXJTb3VyY2VQcm92aWRl
ckNhY2hlcygpOwoKICAgIFByb3RvdHlwZU1hcCBwcm90b3R5cGVNYXA7CgogICAgdHlwZWRlZiBI
YXNoTWFwPFJlZlB0cjxTb3VyY2VQcm92aWRlcj4sIFJlZlB0cjxTb3VyY2VQcm92aWRlckNhY2hl
Pj4gU291cmNlUHJvdmlkZXJDYWNoZU1hcDsKICAgIFNvdXJjZVByb3ZpZGVyQ2FjaGVNYXAgc291
cmNlUHJvdmlkZXJDYWNoZU1hcDsKICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlcjsKIyAzOTYg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgiCiAgICBzdGQ6OnVuaXF1
ZV9wdHI8SklUVGh1bmtzPiBqaXRTdHViczsKICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZXRD
VElTdHViKFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvcikKICAgIHsKICAgICAgICByZXR1cm4gaml0
U3R1YnMtPmN0aVN0dWIodGhpcywgZ2VuZXJhdG9yKTsKICAgIH0KCiAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IGFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHM7Cgog
ICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMo
KSB7IHJldHVybiBhbGxDYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzLmdldCgpOyB9CgoKICAgIHN0
ZDo6dW5pcXVlX3B0cjxDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRhPiBhcml0eUNoZWNr
RGF0YTsKCgoKICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5j
dGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAg
ICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJp
bnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcm
IG5hbWUpOwoKICAgIHN0YXRpYyBwdHJkaWZmX3QgZXhjZXB0aW9uT2Zmc2V0KCkKICAgIHsKICAg
ICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nh
c3Q8Vk0qPigweDQwMDApLT5tX2V4Y2VwdGlvbikpIC0gMHg0MDAwKTsKICAgIH0KCiAgICBzdGF0
aWMgcHRyZGlmZl90IGNhbGxGcmFtZUZvckNhdGNoT2Zmc2V0KCkKICAgIHsKICAgICAgICByZXR1
cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8Vk0qPigw
eDQwMDApLT5jYWxsRnJhbWVGb3JDYXRjaCkpIC0gMHg0MDAwKTsKICAgIH0KCiAgICBzdGF0aWMg
cHRyZGlmZl90IHRhcmdldE1hY2hpbmVQQ0ZvclRocm93T2Zmc2V0KCkKICAgIHsKICAgICAgICBy
ZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8Vk0q
PigweDQwMDApLT50YXJnZXRNYWNoaW5lUENGb3JUaHJvdykpIC0gMHg0MDAwKTsKICAgIH0KCiAg
ICB2b2lkIHJlc3RvcmVQcmV2aW91c0V4Y2VwdGlvbihFeGNlcHRpb24qIGV4Y2VwdGlvbikgeyBz
ZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsgfQoKICAgIHZvaWQgY2xlYXJFeGNlcHRpb24oKSB7IG1f
ZXhjZXB0aW9uID0gbnVsbHB0cjsgfQogICAgdm9pZCBjbGVhckxhc3RFeGNlcHRpb24oKSB7IG1f
bGFzdEV4Y2VwdGlvbiA9IG51bGxwdHI7IH0KCiAgICBFeGVjU3RhdGUqKiBhZGRyZXNzT2ZDYWxs
RnJhbWVGb3JDYXRjaCgpIHsgcmV0dXJuICZjYWxsRnJhbWVGb3JDYXRjaDsgfQoKICAgIEV4Y2Vw
dGlvbiogZXhjZXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9leGNlcHRpb247IH0KICAgIEpTQ2Vs
bCoqIGFkZHJlc3NPZkV4Y2VwdGlvbigpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxs
Kio+KCZtX2V4Y2VwdGlvbik7IH0KCiAgICBFeGNlcHRpb24qIGxhc3RFeGNlcHRpb24oKSBjb25z
dCB7IHJldHVybiBtX2xhc3RFeGNlcHRpb247IH0KICAgIEpTQ2VsbCoqIGFkZHJlc3NPZkxhc3RF
eGNlcHRpb24oKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PEpTQ2VsbCoqPigmbV9sYXN0RXhj
ZXB0aW9uKTsgfQoKICAgIHZvaWQgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgRXhjZXB0aW9u
Kik7CiAgICBKU1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwogICAg
SlNPYmplY3QqIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CgogICAgdm9p
ZCBzZXRGYWlsTmV4dE5ld0NvZGVCbG9jaygpIHsgbV9mYWlsTmV4dE5ld0NvZGVCbG9jayA9IHRy
dWU7IH0KICAgIGJvb2wgZ2V0QW5kQ2xlYXJGYWlsTmV4dE5ld0NvZGVCbG9jaygpCiAgICB7CiAg
ICAgICAgYm9vbCByZXN1bHQgPSBtX2ZhaWxOZXh0TmV3Q29kZUJsb2NrOwogICAgICAgIG1fZmFp
bE5leHROZXdDb2RlQmxvY2sgPSBmYWxzZTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoK
ICAgIHZvaWQqIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2tQ
b2ludGVyQXRWTUVudHJ5OyB9CiAgICB2b2lkIHNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeSh2b2lk
Kik7CgogICAgc2l6ZV90IHJlc2VydmVkWm9uZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3Jlc2Vy
dmVkWm9uZVNpemU7IH0KICAgIHNpemVfdCB1cGRhdGVSZXNlcnZlZFpvbmVTaXplKHNpemVfdCBy
ZXNlcnZlZFpvbmVTaXplKTsKIyA0NjkgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgiCiAgICB2b2lkKiBzdGFja0xpbWl0KCkgeyByZXR1cm4gbV9zdGFja0xpbWl0OyB9
CiAgICB2b2lkKiogYWRkcmVzc09mU3RhY2tMaW1pdCgpIHsgcmV0dXJuICZtX3N0YWNrTGltaXQ7
IH0KCiAgICBib29sIGlzU2FmZVRvUmVjdXJzZShzaXplX3QgbmVlZGVkU3RhY2tJbkJ5dGVzID0g
MCkgY29uc3QKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgaW50OF90KiBjdXJyID0g
cmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPigmY3Vycik7CiAgICAgICAgaW50OF90KiBsaW1pdCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50OF90Kj4obV9zdGFja0xpbWl0KTsKICAgICAgICByZXR1cm4g
Y3VyciA+PSBsaW1pdCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGN1cnIgLSBsaW1pdCkgPj0gbmVl
ZGVkU3RhY2tJbkJ5dGVzOwogICAgfQoKICAgIHZvaWQqIGxhc3RTdGFja1RvcCgpIHsgcmV0dXJu
IG1fbGFzdFN0YWNrVG9wOyB9CiAgICB2b2lkIHNldExhc3RTdGFja1RvcCh2b2lkKik7CgogICAg
Y29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOwogICAgY29uc3QgQ2xhc3NJ
bmZvKiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOwoKICAgIEpTVmFsdWUgaG9zdENhbGxS
ZXR1cm5WYWx1ZTsKICAgIHVuc2lnbmVkIHZhcmFyZ3NMZW5ndGg7CiAgICBFeGVjU3RhdGUqIG5l
d0NhbGxGcmFtZVJldHVyblZhbHVlOwogICAgRXhlY1N0YXRlKiBjYWxsRnJhbWVGb3JDYXRjaDsK
ICAgIHZvaWQqIHRhcmdldE1hY2hpbmVQQ0ZvclRocm93OwogICAgSW5zdHJ1Y3Rpb24qIHRhcmdl
dEludGVycHJldGVyUENGb3JUaHJvdzsKICAgIHVpbnQzMl90IG9zckV4aXRJbmRleDsKICAgIHZv
aWQqIG9zckV4aXRKdW1wRGVzdGluYXRpb247CiAgICBWZWN0b3I8U2NyYXRjaEJ1ZmZlcio+IHNj
cmF0Y2hCdWZmZXJzOwogICAgc2l6ZV90IHNpemVPZkxhc3RTY3JhdGNoQnVmZmVyOwoKICAgIGJv
b2wgaXNFeGVjdXRpbmdJblJlZ0V4cEpJVCB7IGZhbHNlIH07CgogICAgU2NyYXRjaEJ1ZmZlciog
c2NyYXRjaEJ1ZmZlckZvclNpemUoc2l6ZV90IHNpemUpCiAgICB7CiAgICAgICAgaWYgKCFzaXpl
KQogICAgICAgICAgICByZXR1cm4gMDsKCiAgICAgICAgaWYgKHNpemUgPiBzaXplT2ZMYXN0U2Ny
YXRjaEJ1ZmZlcikgewoKCgoKICAgICAgICAgICAgc2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXIgPSBz
aXplICogMjsKCiAgICAgICAgICAgIFNjcmF0Y2hCdWZmZXIqIG5ld0J1ZmZlciA9IFNjcmF0Y2hC
dWZmZXI6OmNyZWF0ZShzaXplT2ZMYXN0U2NyYXRjaEJ1ZmZlcik7CiAgICAgICAgICAgIGRvIHsg
aWYgKF9fYnVpbHRpbl9leHBlY3QoISEoIShuZXdCdWZmZXIpKSwgMCkpIFdURkNyYXNoKCk7IH0g
d2hpbGUgKDApOwogICAgICAgICAgICBzY3JhdGNoQnVmZmVycy5hcHBlbmQobmV3QnVmZmVyKTsK
ICAgICAgICB9CgogICAgICAgIFNjcmF0Y2hCdWZmZXIqIHJlc3VsdCA9IHNjcmF0Y2hCdWZmZXJz
Lmxhc3QoKTsKICAgICAgICByZXN1bHQtPnNldEFjdGl2ZUxlbmd0aCgwKTsKICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgfQoKICAgIEVuY29kZWRKU1ZhbHVlKiBleGNlcHRpb25GdXp6aW5nQnVm
ZmVyKHNpemVfdCBzaXplKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICBpZiAoIW1f
ZXhjZXB0aW9uRnV6ekJ1ZmZlcikKICAgICAgICAgICAgbV9leGNlcHRpb25GdXp6QnVmZmVyID0g
TWFsbG9jUHRyPEVuY29kZWRKU1ZhbHVlPjo6bWFsbG9jKHNpemUpOwogICAgICAgIHJldHVybiBt
X2V4Y2VwdGlvbkZ1enpCdWZmZXIuZ2V0KCk7CiAgICB9CgogICAgdm9pZCBnYXRoZXJDb25zZXJ2
YXRpdmVSb290cyhDb25zZXJ2YXRpdmVSb290cyYpOwoKICAgIFZNRW50cnlTY29wZSogZW50cnlT
Y29wZTsKCiAgICBKU09iamVjdCogc3RyaW5nUmVjdXJzaW9uQ2hlY2tGaXJzdE9iamVjdCB7IG51
bGxwdHIgfTsKICAgIEhhc2hTZXQ8SlNPYmplY3QqPiBzdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0
ZWRPYmplY3RzOwoKICAgIExvY2FsVGltZU9mZnNldENhY2hlIGxvY2FsVGltZU9mZnNldENhY2hl
OwoKICAgIFN0cmluZyBjYWNoZWREYXRlU3RyaW5nOwogICAgZG91YmxlIGNhY2hlZERhdGVTdHJp
bmdWYWx1ZTsKCiAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZmlsZXI6OkRhdGFiYXNlPiBtX3BlckJ5
dGVjb2RlUHJvZmlsZXI7CiAgICBSZWZQdHI8VHlwZWRBcnJheUNvbnRyb2xsZXI+IG1fdHlwZWRB
cnJheUNvbnRyb2xsZXI7CiAgICBSZWdFeHBDYWNoZSogbV9yZWdFeHBDYWNoZTsKICAgIEJ1bXBQ
b2ludGVyQWxsb2NhdG9yIG1fcmVnRXhwQWxsb2NhdG9yOwogICAgQ29uY3VycmVudEpJVExvY2sg
bV9yZWdFeHBBbGxvY2F0b3JMb2NrOwoKCgoKCgogICAgYm9vbCBoYXNFeGNsdXNpdmVUaHJlYWQo
KSBjb25zdCB7IHJldHVybiBtX2FwaUxvY2stPmhhc0V4Y2x1c2l2ZVRocmVhZCgpOyB9CiAgICBz
dGQ6OnRocmVhZDo6aWQgZXhjbHVzaXZlVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9hcGlMb2Nr
LT5leGNsdXNpdmVUaHJlYWQoKTsgfQogICAgdm9pZCBzZXRFeGNsdXNpdmVUaHJlYWQoc3RkOjp0
aHJlYWQ6OmlkIHRocmVhZElkKSB7IG1fYXBpTG9jay0+c2V0RXhjbHVzaXZlVGhyZWFkKHRocmVh
ZElkKTsgfQoKICAgIHZvaWQgcmVzZXREYXRlQ2FjaGUoKTsKCiAgICBSZWdFeHBDYWNoZSogcmVn
RXhwQ2FjaGUoKSB7IHJldHVybiBtX3JlZ0V4cENhY2hlOyB9CgoKCiAgICB2b2lkIGR1bXBSZWdF
eHBUcmFjZSgpOwoKICAgIGJvb2wgaXNDb2xsZWN0b3JCdXN5KCkgeyByZXR1cm4gaGVhcC5pc0J1
c3koKTsgfQoKCgoKCgogICAgYm9vbCBjdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpIGNv
bnN0IHsgcmV0dXJuIG1fYXBpTG9jay0+Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKTsgfQoK
ICAgIEpTTG9jayYgYXBpTG9jaygpIHsgcmV0dXJuICptX2FwaUxvY2s7IH0KICAgIENvZGVDYWNo
ZSogY29kZUNhY2hlKCkgeyByZXR1cm4gbV9jb2RlQ2FjaGUuZ2V0KCk7IH0KCiAgICB2b2lkIHdo
ZW5JZGxlKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPik7CgogICAgdm9pZCBkZWxldGVBbGxDb2RlKCk7
CiAgICB2b2lkIGRlbGV0ZUFsbExpbmtlZENvZGUoKTsKICAgIHZvaWQgZGVsZXRlQWxsUmVnRXhw
Q29kZSgpOwoKICAgIFdhdGNocG9pbnRTZXQqIGVuc3VyZVdhdGNocG9pbnRTZXRGb3JJbXB1cmVQ
cm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJik7CiAgICB2b2lkIHJlZ2lzdGVyV2F0Y2hwb2ludEZv
ckltcHVyZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImLCBXYXRjaHBvaW50Kik7CgoKICAgIHZv
aWQgYWRkSW1wdXJlUHJvcGVydHkoY29uc3QgU3RyaW5nJik7CgogICAgQnVpbHRpbkV4ZWN1dGFi
bGVzKiBidWlsdGluRXhlY3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVjdXRhYmxlcy5n
ZXQoKTsgfQoKICAgIGJvb2wgZW5hYmxlVHlwZVByb2ZpbGVyKCk7CiAgICBib29sIGRpc2FibGVU
eXBlUHJvZmlsZXIoKTsKICAgIFR5cGVQcm9maWxlckxvZyogdHlwZVByb2ZpbGVyTG9nKCkgeyBy
ZXR1cm4gbV90eXBlUHJvZmlsZXJMb2cuZ2V0KCk7IH0KICAgIFR5cGVQcm9maWxlciogdHlwZVBy
b2ZpbGVyKCkgeyByZXR1cm4gbV90eXBlUHJvZmlsZXIuZ2V0KCk7IH0KICAgIHZvaWQgZHVtcFR5
cGVQcm9maWxlckRhdGEoKTsKCiAgICBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUqIGZ1bmN0aW9u
SGFzRXhlY3V0ZWRDYWNoZSgpIHsgcmV0dXJuICZtX2Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZTsg
fQoKICAgIENvbnRyb2xGbG93UHJvZmlsZXIqIGNvbnRyb2xGbG93UHJvZmlsZXIoKSB7IHJldHVy
biBtX2NvbnRyb2xGbG93UHJvZmlsZXIuZ2V0KCk7IH0KICAgIGJvb2wgZW5hYmxlQ29udHJvbEZs
b3dQcm9maWxlcigpOwogICAgYm9vbCBkaXNhYmxlQ29udHJvbEZsb3dQcm9maWxlcigpOwoKICAg
IHZvaWQgcXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPE1pY3JvdGFz
az4pOwogICAgdm9pZCBkcmFpbk1pY3JvdGFza3MoKTsKICAgIHZvaWQgc2V0R2xvYmFsQ29uc3RS
ZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coYm9vbCBnbG9iYWxDb25zdFJlZGVjbGFyYXRpb25UaHJv
dykgeyBtX2dsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93ID0gZ2xvYmFsQ29uc3RS
ZWRlY2xhcmF0aW9uVGhyb3c7IH0KICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIGJvb2wgZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKSBjb25z
dCB7IHJldHVybiBtX2dsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93OyB9CgogICAg
aW5saW5lIGJvb2wgc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKEV4ZWNTdGF0ZSopOwoKICAgIHZv
aWQgc2V0U2hvdWxkQnVpbGRQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKSB7IG1fc2hvdWxkQnVpbGRQ
Q1RvQ29kZU9yaWdpbk1hcHBpbmcgPSB0cnVlOyB9CiAgICBib29sIHNob3VsZEJ1aWxkZXJQQ1Rv
Q29kZU9yaWdpbk1hcHBpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZEJ1aWxkUENUb0NvZGVP
cmlnaW5NYXBwaW5nOyB9CgogICAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSYgYnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeSgpIHsgcmV0dXJuICptX2J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk7
IH0KCiAgICBTaGFkb3dDaGlja2VuJiBzaGFkb3dDaGlja2VuKCkgeyByZXR1cm4gKm1fc2hhZG93
Q2hpY2tlbjsgfQoKcHJpdmF0ZToKICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICBmcmllbmQgY2xhc3MgQ2xlYXJFeGNlcHRpb25TY29wZTsKCiAgICBWTShWTVR5cGUs
IEhlYXBUeXBlKTsKICAgIHN0YXRpYyBWTSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAg
IHZvaWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKCiAgICB2b2lkIHVwZGF0ZVN0YWNrTGltaXQoKTsK
CiAgICB2b2lkIHNldEV4Y2VwdGlvbihFeGNlcHRpb24qIGV4Y2VwdGlvbikKICAgIHsKICAgICAg
ICBtX2V4Y2VwdGlvbiA9IGV4Y2VwdGlvbjsKICAgICAgICBtX2xhc3RFeGNlcHRpb24gPSBleGNl
cHRpb247CiAgICB9CgoKICAgIGJvb2wgbV9jYW5Vc2VBc3NlbWJsZXI7CgoKICAgIGJvb2wgbV9j
YW5Vc2VKSVQ7CgoKICAgIGJvb2wgbV9jYW5Vc2VSZWdFeHBKSVQ7CgoKCgogICAgdm9pZCogbV9z
dGFja1BvaW50ZXJBdFZNRW50cnk7CiAgICBzaXplX3QgbV9yZXNlcnZlZFpvbmVTaXplOwoKCgoK
CgogICAgdW5pb24gewogICAgICAgIHZvaWQqIG1fc3RhY2tMaW1pdDsKICAgICAgICB2b2lkKiBt
X2pzU3RhY2tMaW1pdDsKICAgIH07CgoKCgoKICAgIHZvaWQqIG1fbGFzdFN0YWNrVG9wOwogICAg
RXhjZXB0aW9uKiBtX2V4Y2VwdGlvbiB7IG51bGxwdHIgfTsKICAgIEV4Y2VwdGlvbiogbV9sYXN0
RXhjZXB0aW9uIHsgbnVsbHB0ciB9OwogICAgYm9vbCBtX2ZhaWxOZXh0TmV3Q29kZUJsb2NrIHsg
ZmFsc2UgfTsKICAgIGJvb2wgbV9pbkRlZmluZU93blByb3BlcnR5OwogICAgYm9vbCBtX2dsb2Jh
bENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93IHsgdHJ1ZSB9OwogICAgYm9vbCBtX3Nob3Vs
ZEJ1aWxkUENUb0NvZGVPcmlnaW5NYXBwaW5nIHsgZmFsc2UgfTsKICAgIHN0ZDo6dW5pcXVlX3B0
cjxDb2RlQ2FjaGU+IG1fY29kZUNhY2hlOwogICAgTGVnYWN5UHJvZmlsZXIqIG1fZW5hYmxlZFBy
b2ZpbGVyOwogICAgc3RkOjp1bmlxdWVfcHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4gbV9idWlsdGlu
RXhlY3V0YWJsZXM7CiAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdhdGNocG9pbnRTZXQ+PiBt
X2ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludFNldHM7CiAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZVBy
b2ZpbGVyPiBtX3R5cGVQcm9maWxlcjsKICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlUHJvZmlsZXJM
b2c+IG1fdHlwZVByb2ZpbGVyTG9nOwogICAgdW5zaWduZWQgbV90eXBlUHJvZmlsZXJFbmFibGVk
Q291bnQ7CiAgICBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUgbV9mdW5jdGlvbkhhc0V4ZWN1dGVk
Q2FjaGU7CiAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udHJvbEZsb3dQcm9maWxlcj4gbV9jb250cm9s
Rmxvd1Byb2ZpbGVyOwogICAgdW5zaWduZWQgbV9jb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZENv
dW50OwogICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRhc2s+PiBtX21pY3JvdGFza1F1
ZXVlOwogICAgTWFsbG9jUHRyPEVuY29kZWRKU1ZhbHVlPiBtX2V4Y2VwdGlvbkZ1enpCdWZmZXI7
CiAgICBSZWZQdHI8V2F0Y2hkb2c+IG1fd2F0Y2hkb2c7CiAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVh
cFByb2ZpbGVyPiBtX2hlYXBQcm9maWxlcjsKCiAgICBSZWZQdHI8U2FtcGxpbmdQcm9maWxlcj4g
bV9zYW1wbGluZ1Byb2ZpbGVyOwoKICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dDaGlja2VuPiBt
X3NoYWRvd0NoaWNrZW47CiAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeT4gbV9ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Owp9OwojIDcwMSAiLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCIKaW5saW5lIEhlYXAqIFdlYWtTZXQ6OmhlYXAo
KSBjb25zdAp7CiAgICByZXR1cm4gJm1fdm0tPmhlYXA7Cn0KCgpleHRlcm4gIkMiIHZvaWQgc2Fu
aXRpemVTdGFja0ZvclZNSW1wbChWTSopOwoKCnZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZNKik7
CnZvaWQgbG9nU2FuaXRpemVTdGFjayhWTSopOwoKfQojIDMyICIuLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgiIDIKCgpuYW1lc3BhY2UgSlNDIHsKCiAg
ICBjbGFzcyBBcmd1bWVudHM7CiAgICBjbGFzcyBJbnRlcnByZXRlcjsKICAgIGNsYXNzIEpTU2Nv
cGU7CgogICAgc3RydWN0IENhbGxTaXRlSW5kZXggewogICAgICAgIENhbGxTaXRlSW5kZXgoKQog
ICAgICAgICAgICA6IG1fYml0cygoMjE0NzQ4MzY0NyAqIDJVICsgMVUpKQogICAgICAgIHsKICAg
ICAgICB9CgogICAgICAgIGV4cGxpY2l0IENhbGxTaXRlSW5kZXgodWludDMyX3QgYml0cykKICAg
ICAgICAgICAgOiBtX2JpdHMoYml0cykKICAgICAgICB7IH0KCiAgICAgICAgZXhwbGljaXQgQ2Fs
bFNpdGVJbmRleChJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgICAgIDogbV9iaXRz
KGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oaW5zdHJ1Y3Rpb24pKQogICAgICAgIHsgfQoKCiAgICAg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAhPSAoMjE0
NzQ4MzY0NyAqIDJVICsgMVUpOyB9CgogICAgICAgIGlubGluZSB1aW50MzJfdCBiaXRzKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRzOyB9CgogICAgcHJpdmF0ZToKICAgICAgICB1aW50MzJfdCBtX2Jp
dHM7CiAgICB9OwoKCgogICAgY2xhc3MgRXhlY1N0YXRlIDogcHJpdmF0ZSBSZWdpc3RlciB7CiAg
ICBwdWJsaWM6CiAgICAgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4g
dGhpc1tKU1N0YWNrOjpDYWxsZWVdLmpzVmFsdWUoKTsgfQogICAgICAgIEpTT2JqZWN0KiBjYWxs
ZWUoKSBjb25zdCB7IHJldHVybiB0aGlzW0pTU3RhY2s6OkNhbGxlZV0ub2JqZWN0KCk7IH0KICAg
ICAgICBKU1ZhbHVlIHVuc2FmZUNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNbSlNTdGFjazo6
Q2FsbGVlXS5hc2FuVW5zYWZlSlNWYWx1ZSgpOyB9CiAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2soKSBjb25zdCB7IHJldHVybiB0aGlzW0pTU3RhY2s6OkNvZGVCbG9ja10uUmVnaXN0ZXI6OmNv
ZGVCbG9jaygpOyB9CiAgICAgICAgQ29kZUJsb2NrKiB1bnNhZmVDb2RlQmxvY2soKSBjb25zdCB7
IHJldHVybiB0aGlzW0pTU3RhY2s6OkNvZGVCbG9ja10uUmVnaXN0ZXI6OmFzYW5VbnNhZmVDb2Rl
QmxvY2soKTsgfQogICAgICAgIEpTU2NvcGUqIHNjb3BlKGludCBzY29wZVJlZ2lzdGVyT2Zmc2V0
KSBjb25zdAogICAgICAgIHsKICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICByZXR1
cm4gdGhpc1tzY29wZVJlZ2lzdGVyT2Zmc2V0XS5SZWdpc3Rlcjo6c2NvcGUoKTsKICAgICAgICB9
CgoKICAgICAgICBKU0dsb2JhbE9iamVjdCogdm1FbnRyeUdsb2JhbE9iamVjdCgpOwoKCgogICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KCkgY29uc3Q7CgoKCiAgICAg
ICAgSlNPYmplY3QqIGdsb2JhbFRoaXNWYWx1ZSgpIGNvbnN0OwoKICAgICAgICBWTSYgdm0oKSBj
b25zdDsKCgoKCgoKICAgICAgICB2b2lkIGNsZWFyRXhjZXB0aW9uKCkgeyB2bSgpLmNsZWFyRXhj
ZXB0aW9uKCk7IH0KCiAgICAgICAgRXhjZXB0aW9uKiBleGNlcHRpb24oKSBjb25zdCB7IHJldHVy
biB2bSgpLmV4Y2VwdGlvbigpOyB9CiAgICAgICAgYm9vbCBoYWRFeGNlcHRpb24oKSBjb25zdCB7
IHJldHVybiAhIXZtKCkuZXhjZXB0aW9uKCk7IH0KCiAgICAgICAgRXhjZXB0aW9uKiBsYXN0RXhj
ZXB0aW9uKCkgY29uc3QgeyByZXR1cm4gdm0oKS5sYXN0RXhjZXB0aW9uKCk7IH0KICAgICAgICB2
b2lkIGNsZWFyTGFzdEV4Y2VwdGlvbigpIHsgdm0oKS5jbGVhckxhc3RFeGNlcHRpb24oKTsgfQoK
ICAgICAgICBBdG9taWNTdHJpbmdUYWJsZSogYXRvbWljU3RyaW5nVGFibGUoKSBjb25zdCB7IHJl
dHVybiB2bSgpLmF0b21pY1N0cmluZ1RhYmxlKCk7IH0KICAgICAgICBjb25zdCBDb21tb25JZGVu
dGlmaWVycyYgcHJvcGVydHlOYW1lcygpIGNvbnN0IHsgcmV0dXJuICp2bSgpLnByb3BlcnR5TmFt
ZXM7IH0KICAgICAgICBjb25zdCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYgZW1wdHlMaXN0KCkgY29u
c3QgeyByZXR1cm4gKnZtKCkuZW1wdHlMaXN0OyB9CiAgICAgICAgSW50ZXJwcmV0ZXIqIGludGVy
cHJldGVyKCkgeyByZXR1cm4gdm0oKS5pbnRlcnByZXRlcjsgfQogICAgICAgIEhlYXAqIGhlYXAo
KSB7IHJldHVybiAmdm0oKS5oZWFwOyB9CgoKICAgICAgICBzdGF0aWMgQ2FsbEZyYW1lKiBjcmVh
dGUoUmVnaXN0ZXIqIGNhbGxGcmFtZUJhc2UpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENhbGxGcmFt
ZSo+KGNhbGxGcmFtZUJhc2UpOyB9CiAgICAgICAgUmVnaXN0ZXIqIHJlZ2lzdGVycygpIHsgcmV0
dXJuIHRoaXM7IH0KICAgICAgICBjb25zdCBSZWdpc3RlciogcmVnaXN0ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gdGhpczsgfQoKICAgICAgICBDYWxsRnJhbWUmIG9wZXJhdG9yPShjb25zdCBSZWdpc3Rl
ciYgcikgeyAqc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKSA9IHI7IHJldHVybiAqdGhpczsg
fQoKICAgICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q2FsbEZyYW1lKj4oY2FsbGVyRnJhbWVPclZNRW50cnlGcmFtZSgpKTsgfQogICAgICAg
IHZvaWQqIGNhbGxlckZyYW1lT3JWTUVudHJ5RnJhbWUoKSBjb25zdCB7IHJldHVybiBjYWxsZXJG
cmFtZUFuZFBDKCkuY2FsbGVyRnJhbWU7IH0KICAgICAgICB2b2lkKiB1bnNhZmVDYWxsZXJGcmFt
ZU9yVk1FbnRyeUZyYW1lKCkgY29uc3QgeyByZXR1cm4gdW5zYWZlQ2FsbGVyRnJhbWVBbmRQQygp
LmNhbGxlckZyYW1lOyB9CgogICAgICAgIENhbGxGcmFtZSogdW5zYWZlQ2FsbGVyRnJhbWUoVk1F
bnRyeUZyYW1lKiYpOwogICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUoVk1FbnRyeUZyYW1l
KiYpOwoKICAgICAgICBzdGF0aWMgcHRyZGlmZl90IGNhbGxlckZyYW1lT2Zmc2V0KCkgeyByZXR1
cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8Q2FsbGVy
RnJhbWVBbmRQQyo+KDB4NDAwMCktPmNhbGxlckZyYW1lKSkgLSAweDQwMDApOyB9CgogICAgICAg
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuUEMoKSBjb25zdCB7IHJldHVybiBSZXR1cm5BZGRyZXNz
UHRyKGNhbGxlckZyYW1lQW5kUEMoKS5wYyk7IH0KICAgICAgICBib29sIGhhc1JldHVyblBDKCkg
Y29uc3QgeyByZXR1cm4gISFjYWxsZXJGcmFtZUFuZFBDKCkucGM7IH0KICAgICAgICB2b2lkIGNs
ZWFyUmV0dXJuUEMoKSB7IGNhbGxlckZyYW1lQW5kUEMoKS5wYyA9IDA7IH0KICAgICAgICBzdGF0
aWMgcHRyZGlmZl90IHJldHVyblBDT2Zmc2V0KCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8
cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8Q2FsbGVyRnJhbWVBbmRQQyo+KDB4NDAwMCkt
PnBjKSkgLSAweDQwMDApOyB9CiAgICAgICAgQWJzdHJhY3RQQyBhYnN0cmFjdFJldHVyblBDKFZN
JiB2bSkgeyByZXR1cm4gQWJzdHJhY3RQQyh2bSwgdGhpcyk7IH0KCiAgICAgICAgYm9vbCBjYWxs
U2l0ZUJpdHNBcmVCeXRlY29kZU9mZnNldCgpIGNvbnN0OwogICAgICAgIGJvb2wgY2FsbFNpdGVC
aXRzQXJlQ29kZU9yaWdpbkluZGV4KCkgY29uc3Q7CgogICAgICAgIHVuc2lnbmVkIGNhbGxTaXRl
QXNSYXdCaXRzKCkgY29uc3Q7CiAgICAgICAgdW5zaWduZWQgdW5zYWZlQ2FsbFNpdGVBc1Jhd0Jp
dHMoKSBjb25zdDsKICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgoKSBjb25zdDsK
ICAgICAgICBDYWxsU2l0ZUluZGV4IHVuc2FmZUNhbGxTaXRlSW5kZXgoKSBjb25zdDsKICAgIHBy
aXZhdGU6CiAgICAgICAgdW5zaWduZWQgY2FsbFNpdGVCaXRzQXNCeXRlY29kZU9mZnNldCgpIGNv
bnN0OwogICAgcHVibGljOgoKCgoKCgogICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KCk7
CgoKCiAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKCk7CgogICAgICAgIFJlZ2lzdGVyKiB0
b3BPZkZyYW1lKCkKICAgICAgICB7CiAgICAgICAgICAgIGlmICghY29kZUJsb2NrKCkpCiAgICAg
ICAgICAgICAgICByZXR1cm4gcmVnaXN0ZXJzKCk7CiAgICAgICAgICAgIHJldHVybiB0b3BPZkZy
YW1lSW50ZXJuYWwoKTsKICAgICAgICB9CgogICAgICAgIEluc3RydWN0aW9uKiBjdXJyZW50VlBD
KCkgY29uc3Q7CiAgICAgICAgdm9pZCBzZXRDdXJyZW50VlBDKEluc3RydWN0aW9uKiB2cGMpOwoK
ICAgICAgICB2b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogZnJhbWUpIHsgY2FsbGVyRnJh
bWVBbmRQQygpLmNhbGxlckZyYW1lID0gZnJhbWU7IH0KICAgICAgICB2b2lkIHNldFNjb3BlKGlu
dCBzY29wZVJlZ2lzdGVyT2Zmc2V0LCBKU1Njb3BlKiBzY29wZSkgeyBzdGF0aWNfY2FzdDxSZWdp
c3Rlcio+KHRoaXMpW3Njb3BlUmVnaXN0ZXJPZmZzZXRdID0gc2NvcGU7IH0KCiAgICAgICAgaW5s
aW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBpbml0KENvZGVCbG9j
ayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogdlBDLAogICAgICAgICAgICBDYWxsRnJhbWUqIGNh
bGxlckZyYW1lLCBpbnQgYXJnYywgSlNPYmplY3QqIGNhbGxlZSkKICAgICAgICB7CiAgICAgICAg
ICAgICgodm9pZCkwKTsKCiAgICAgICAgICAgIHNldENvZGVCbG9jayhjb2RlQmxvY2spOwogICAg
ICAgICAgICBzZXRDYWxsZXJGcmFtZShjYWxsZXJGcmFtZSk7CiAgICAgICAgICAgIHNldFJldHVy
blBDKHZQQyk7CiAgICAgICAgICAgIHNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ2Mp
OwogICAgICAgICAgICBzZXRDYWxsZWUoY2FsbGVlKTsKICAgICAgICB9CgoKICAgICAgICBSZWdp
c3RlciYgcihpbnQpOwogICAgICAgIFJlZ2lzdGVyJiByKFZpcnR1YWxSZWdpc3Rlcik7CgogICAg
ICAgIFJlZ2lzdGVyJiB1bmNoZWNrZWRSKGludCk7CiAgICAgICAgUmVnaXN0ZXImIHVuY2hlY2tl
ZFIoVmlydHVhbFJlZ2lzdGVyKTsKCgogICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50KCkgY29u
c3QgeyByZXR1cm4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSAtIDE7IH0KICAgICAgICBz
aXplX3QgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSBjb25zdCB7IHJldHVybiB0aGlzW0pT
U3RhY2s6OkFyZ3VtZW50Q291bnRdLnBheWxvYWQoKTsgfQogICAgICAgIHN0YXRpYyBpbnQgYXJn
dW1lbnRPZmZzZXQoaW50IGFyZ3VtZW50KSB7IHJldHVybiAoSlNTdGFjazo6Rmlyc3RBcmd1bWVu
dCArIGFyZ3VtZW50KTsgfQogICAgICAgIHN0YXRpYyBpbnQgYXJndW1lbnRPZmZzZXRJbmNsdWRp
bmdUaGlzKGludCBhcmd1bWVudCkgeyByZXR1cm4gKEpTU3RhY2s6OlRoaXNBcmd1bWVudCArIGFy
Z3VtZW50KTsgfQojIDIwMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhbGxGcmFtZS5oIgogICAgICAgIEpTVmFsdWUgYXJndW1lbnQoc2l6ZV90IGFyZ3VtZW50KQog
ICAgICAgIHsKICAgICAgICAgICAgaWYgKGFyZ3VtZW50ID49IGFyZ3VtZW50Q291bnQoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgcmV0dXJuIGdl
dEFyZ3VtZW50VW5zYWZlKGFyZ3VtZW50KTsKICAgICAgICB9CiAgICAgICAgSlNWYWx1ZSB1bmNo
ZWNrZWRBcmd1bWVudChzaXplX3QgYXJndW1lbnQpCiAgICAgICAgewogICAgICAgICAgICAoKHZv
aWQpMCk7CiAgICAgICAgICAgIHJldHVybiBnZXRBcmd1bWVudFVuc2FmZShhcmd1bWVudCk7CiAg
ICAgICAgfQogICAgICAgIHZvaWQgc2V0QXJndW1lbnQoc2l6ZV90IGFyZ3VtZW50LCBKU1ZhbHVl
IHZhbHVlKQogICAgICAgIHsKICAgICAgICAgICAgdGhpc1thcmd1bWVudE9mZnNldChhcmd1bWVu
dCldID0gdmFsdWU7CiAgICAgICAgfQoKICAgICAgICBKU1ZhbHVlIGdldEFyZ3VtZW50VW5zYWZl
KHNpemVfdCBhcmdJbmRleCkKICAgICAgICB7CgoKCgogICAgICAgICAgICByZXR1cm4gdGhpc1th
cmd1bWVudE9mZnNldChhcmdJbmRleCldLmpzVmFsdWUoKTsKICAgICAgICB9CgogICAgICAgIHN0
YXRpYyBpbnQgdGhpc0FyZ3VtZW50T2Zmc2V0KCkgeyByZXR1cm4gYXJndW1lbnRPZmZzZXRJbmNs
dWRpbmdUaGlzKDApOyB9CiAgICAgICAgSlNWYWx1ZSB0aGlzVmFsdWUoKSB7IHJldHVybiB0aGlz
W3RoaXNBcmd1bWVudE9mZnNldCgpXS5qc1ZhbHVlKCk7IH0KICAgICAgICB2b2lkIHNldFRoaXNW
YWx1ZShKU1ZhbHVlIHZhbHVlKSB7IHRoaXNbdGhpc0FyZ3VtZW50T2Zmc2V0KCldID0gdmFsdWU7
IH0KCgoKICAgICAgICBKU1ZhbHVlIG5ld1RhcmdldCgpIHsgcmV0dXJuIHRoaXNWYWx1ZSgpOyB9
CgogICAgICAgIEpTVmFsdWUgYXJndW1lbnRBZnRlckNhcHR1cmUoc2l6ZV90IGFyZ3VtZW50KTsK
CiAgICAgICAgc3RhdGljIGludCBvZmZzZXRGb3Ioc2l6ZV90IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSB7IHJldHVybiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIEpTU3RhY2s6OlRo
aXNBcmd1bWVudCAtIDE7IH0KCiAgICAgICAgc3RhdGljIENhbGxGcmFtZSogbm9DYWxsZXIoKSB7
IHJldHVybiAwOyB9CgogICAgICAgIHZvaWQgc2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMo
aW50IGNvdW50KSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbSlNTdGFjazo6QXJndW1l
bnRDb3VudF0ucGF5bG9hZCgpID0gY291bnQ7IH0KICAgICAgICB2b2lkIHNldENhbGxlZShKU09i
amVjdCogY2FsbGVlKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbSlNTdGFjazo6Q2Fs
bGVlXSA9IGNhbGxlZTsgfQogICAgICAgIHZvaWQgc2V0Q29kZUJsb2NrKENvZGVCbG9jayogY29k
ZUJsb2NrKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbSlNTdGFjazo6Q29kZUJsb2Nr
XSA9IGNvZGVCbG9jazsgfQogICAgICAgIHZvaWQgc2V0UmV0dXJuUEModm9pZCogdmFsdWUpIHsg
Y2FsbGVyRnJhbWVBbmRQQygpLnBjID0gcmVpbnRlcnByZXRfY2FzdDxJbnN0cnVjdGlvbio+KHZh
bHVlKTsgfQoKICAgICAgICBTdHJpbmcgZnJpZW5kbHlGdW5jdGlvbk5hbWUoKTsKCgoKCgogICAg
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGUoY29uc3QgRnVuY3Rv
ciYgZnVuY3RvcikKICAgICAgICB7CiAgICAgICAgICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQ8RnVu
Y3Rvcj4odGhpcywgZnVuY3Rvcik7CiAgICAgICAgfQoKICAgICAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKTsKICAgICAgICBjb25zdCBjaGFyKiBkZXNjcmliZUZyYW1lKCk7CgogICAgcHJpdmF0
ZToKCgoKCiAgICAgICAgRXhlY1N0YXRlKCk7CiAgICAgICAgfkV4ZWNTdGF0ZSgpOwoKICAgICAg
ICBSZWdpc3RlciogdG9wT2ZGcmFtZUludGVybmFsKCk7CgoKCgogICAgICAgIHNpemVfdCBhcmdJ
bmRleEZvclJlZ2lzdGVyKFJlZ2lzdGVyKiByZWcpCiAgICAgICAgewoKCgoKCiAgICAgICAgICAg
IGludCBvZmZzZXQgPSByZWcgLSB0aGlzLT5yZWdpc3RlcnMoKTsKCgoKCgogICAgICAgICAgICBz
aXplX3QgYXJnSW5kZXggPSBvZmZzZXQgLSBKU1N0YWNrOjpGaXJzdEFyZ3VtZW50OwogICAgICAg
ICAgICByZXR1cm4gYXJnSW5kZXg7CiAgICAgICAgfQoKICAgICAgICBDYWxsZXJGcmFtZUFuZFBD
JiBjYWxsZXJGcmFtZUFuZFBDKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Q2FsbGVyRnJh
bWVBbmRQQyo+KHRoaXMpOyB9CiAgICAgICAgY29uc3QgQ2FsbGVyRnJhbWVBbmRQQyYgY2FsbGVy
RnJhbWVBbmRQQygpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IENhbGxl
ckZyYW1lQW5kUEMqPih0aGlzKTsgfQogICAgICAgIGNvbnN0IENhbGxlckZyYW1lQW5kUEMmIHVu
c2FmZUNhbGxlckZyYW1lQW5kUEMoKSBjb25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBDYWxsZXJGcmFtZUFuZFBDKj4odGhpcyk7IH0KCiAgICAgICAgZnJpZW5kIGNsYXNzIEpT
U3RhY2s7CiAgICB9OwoKfQojIDI2ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcmdMaXN0LmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvUmVnaXN0ZXIuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcmdMaXN0LmgiIDIKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBTbG90VmlzaXRvcjsKCmNs
YXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyIHsKICAgIHByaXZhdGU6IE1hcmtlZEFyZ3VtZW50QnVm
ZmVyKGNvbnN0IE1hcmtlZEFyZ3VtZW50QnVmZmVyJikgPSBkZWxldGU7IE1hcmtlZEFyZ3VtZW50
QnVmZmVyJiBvcGVyYXRvcj0oY29uc3QgTWFya2VkQXJndW1lbnRCdWZmZXImKSA9IGRlbGV0ZTs7
CiAgICBmcmllbmQgY2xhc3MgVk07CiAgICBmcmllbmQgY2xhc3MgQXJnTGlzdDsKCnByaXZhdGU6
CiAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0gODsKICAgIHR5cGVkZWYg
SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+IExpc3RTZXQ7CgpwdWJsaWM6CgoKICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyKCkKICAgICAgICA6IG1fc2l6ZSgwKQogICAgICAgICwgbV9jYXBh
Y2l0eShpbmxpbmVDYXBhY2l0eSkKICAgICAgICAsIG1fYnVmZmVyKG1faW5saW5lQnVmZmVyKQog
ICAgICAgICwgbV9tYXJrU2V0KDApCiAgICB7CiAgICB9CgogICAgfk1hcmtlZEFyZ3VtZW50QnVm
ZmVyKCkKICAgIHsKICAgICAgICBpZiAobV9tYXJrU2V0KQogICAgICAgICAgICBtX21hcmtTZXQt
PnJlbW92ZSh0aGlzKTsKCiAgICAgICAgaWYgKEVuY29kZWRKU1ZhbHVlKiBiYXNlID0gbWFsbG9j
QmFzZSgpKQogICAgICAgICAgICBmYXN0RnJlZShiYXNlKTsKICAgIH0KCiAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gIW1fc2l6ZTsgfQoKICAgIEpTVmFsdWUgYXQoaW50IGkpIGNvbnN0CiAgICB7CiAgICAg
ICAgaWYgKGkgPj0gbV9zaXplKQogICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKCiAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShzbG90Rm9yKGkpKTsKICAgIH0KCiAgICB2b2lk
IGNsZWFyKCkKICAgIHsKICAgICAgICBtX3NpemUgPSAwOwogICAgfQoKICAgIHZvaWQgYXBwZW5k
KEpTVmFsdWUgdikKICAgIHsKICAgICAgICBpZiAobV9zaXplID49IG1fY2FwYWNpdHkpCiAgICAg
ICAgICAgIHJldHVybiBzbG93QXBwZW5kKHYpOwoKICAgICAgICBzbG90Rm9yKG1fc2l6ZSkgPSBK
U1ZhbHVlOjplbmNvZGUodik7CiAgICAgICAgKyttX3NpemU7CiAgICB9CgogICAgdm9pZCByZW1v
dmVMYXN0KCkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV9zaXplLS07CiAgICB9
CgogICAgSlNWYWx1ZSBsYXN0KCkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmRlY29kZShzbG90Rm9yKG1fc2l6ZSAtIDEpKTsKICAgIH0KCiAgICBzdGF0
aWMgdm9pZCBtYXJrTGlzdHMoSGVhcFJvb3RWaXNpdG9yJiwgTGlzdFNldCYpOwoKcHJpdmF0ZToK
ICAgIHZvaWQgc2xvd0FwcGVuZChKU1ZhbHVlKTsKCiAgICBFbmNvZGVkSlNWYWx1ZSYgc2xvdEZv
cihpbnQgaXRlbSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9idWZmZXJbaXRlbV07CiAg
ICB9CgogICAgRW5jb2RlZEpTVmFsdWUqIG1hbGxvY0Jhc2UoKQogICAgewogICAgICAgIGlmICht
X2NhcGFjaXR5ID09IHN0YXRpY19jYXN0PGludD4oaW5saW5lQ2FwYWNpdHkpKQogICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICByZXR1cm4gJnNsb3RGb3IoMCk7CiAgICB9CgogICAgaW50IG1f
c2l6ZTsKICAgIGludCBtX2NhcGFjaXR5OwogICAgRW5jb2RlZEpTVmFsdWUgbV9pbmxpbmVCdWZm
ZXJbaW5saW5lQ2FwYWNpdHldOwogICAgRW5jb2RlZEpTVmFsdWUqIG1fYnVmZmVyOwogICAgTGlz
dFNldCogbV9tYXJrU2V0Owp9OwoKY2xhc3MgQXJnTGlzdCB7CiAgICBmcmllbmQgY2xhc3MgSW50
ZXJwcmV0ZXI7CiAgICBmcmllbmQgY2xhc3MgSklUOwpwdWJsaWM6CiAgICBBcmdMaXN0KCkKICAg
ICAgICA6IG1fYXJncygwKQogICAgICAgICwgbV9hcmdDb3VudCgwKQogICAgewogICAgfQoKICAg
IEFyZ0xpc3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgIDogbV9hcmdzKHJlaW50ZXJwcmV0X2Nh
c3Q8SlNWYWx1ZSo+KCZleGVjW0NhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoMCldKSkKICAgICAg
ICAsIG1fYXJnQ291bnQoZXhlYy0+YXJndW1lbnRDb3VudCgpKQogICAgewogICAgfQoKICAgIEFy
Z0xpc3QoY29uc3QgTWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MpCiAgICAgICAgOiBtX2FyZ3Mo
cmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oYXJncy5tX2J1ZmZlcikpCiAgICAgICAgLCBtX2Fy
Z0NvdW50KGFyZ3Muc2l6ZSgpKQogICAgewogICAgfQoKICAgIEpTVmFsdWUgYXQoaW50IGkpIGNv
bnN0CiAgICB7CiAgICAgICAgaWYgKGkgPj0gbV9hcmdDb3VudCkKICAgICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAgICAgICAgcmV0dXJuIG1fYXJnc1tpXTsKICAgIH0KCiAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9hcmdDb3VudDsgfQogICAgc2l6ZV90IHNpemUo
KSBjb25zdCB7IHJldHVybiBtX2FyZ0NvdW50OyB9CgogICAgdm9pZCBnZXRTbGljZShpbnQgc3Rh
cnRJbmRleCwgQXJnTGlzdCYgcmVzdWx0KSBjb25zdDsKCnByaXZhdGU6CiAgICBKU1ZhbHVlKiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9hcmdzOyB9CgogICAgSlNWYWx1ZSogbV9hcmdzOwogICAg
aW50IG1fYXJnQ291bnQ7Cn07Cgp9CiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUNvbnZlbnRpb25zLmgiIDEKIyAyMiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlDb252ZW50aW9ucy5oIgojZGVmaW5lIEFycmF5Q29udmVudGlvbnNf
aCAKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kZXhpbmdIZWFk
ZXIuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRleGlu
Z0hlYWRlci5oIgojZGVmaW5lIEluZGV4aW5nSGVhZGVyX2ggCgojIDEgIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U3RvcmFnZS5oIiAxCiMgMjcgIi4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U3RvcmFnZS5oIgojZGVmaW5lIFBy
b3BlcnR5U3RvcmFnZV9oIAoKCgpuYW1lc3BhY2UgSlNDIHsKCnR5cGVkZWYgV3JpdGVCYXJyaWVy
QmFzZTxVbmtub3duPiogUHJvcGVydHlTdG9yYWdlOwp0eXBlZGVmIGNvbnN0IFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4qIENvbnN0UHJvcGVydHlTdG9yYWdlOwoKfQojIDMwICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRleGluZ0hlYWRlci5oIiAyCgpuYW1lc3BhY2Ug
SlNDIHsKCmNsYXNzIEFycmF5QnVmZmVyOwpjbGFzcyBCdXR0ZXJmbHk7CmNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKY2xhc3MgU3RydWN0dXJlOwpzdHJ1Y3QgQXJyYXlTdG9yYWdlOwoKY2xh
c3MgSW5kZXhpbmdIZWFkZXIgewpwdWJsaWM6CgoKICAgIGVudW0geyBtYXhpbXVtTGVuZ3RoID0g
MHgxMDAwMDAwMCB9OwoKICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbmRleGluZ0hlYWRl
cigpIHsgcmV0dXJuIC1zdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihJbmRleGluZ0hlYWRl
cikpOyB9CgogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkFycmF5QnVmZmVyKCkgeyByZXR1
cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SW5kZXhp
bmdIZWFkZXIqPigweDQwMDApLT51LnR5cGVkQXJyYXkuYnVmZmVyKSkgLSAweDQwMDApOyB9CiAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUHVibGljTGVuZ3RoKCkgeyByZXR1cm4gKHJlaW50
ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SW5kZXhpbmdIZWFkZXIq
PigweDQwMDApLT51Lmxlbmd0aHMucHVibGljTGVuZ3RoKSkgLSAweDQwMDApOyB9CiAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mVmVjdG9yTGVuZ3RoKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0
X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SW5kZXhpbmdIZWFkZXIqPigweDQw
MDApLT51Lmxlbmd0aHMudmVjdG9yTGVuZ3RoKSkgLSAweDQwMDApOyB9CgogICAgSW5kZXhpbmdI
ZWFkZXIoKQogICAgewogICAgICAgIHUubGVuZ3Rocy5wdWJsaWNMZW5ndGggPSAwOwogICAgICAg
IHUubGVuZ3Rocy52ZWN0b3JMZW5ndGggPSAwOwogICAgfQoKICAgIHVpbnQzMl90IHZlY3Rvckxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIHUubGVuZ3Rocy52ZWN0b3JMZW5ndGg7IH0KCiAgICB2b2lk
IHNldFZlY3Rvckxlbmd0aCh1aW50MzJfdCBsZW5ndGgpCiAgICB7CiAgICAgICAgZG8geyBpZiAo
X19idWlsdGluX2V4cGVjdCghISghKGxlbmd0aCA8PSBtYXhpbXVtTGVuZ3RoKSksIDApKSBXVEZD
cmFzaCgpOyB9IHdoaWxlICgwKTsKICAgICAgICB1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoID0gbGVu
Z3RoOwogICAgfQoKICAgIHVpbnQzMl90IHB1YmxpY0xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHUu
bGVuZ3Rocy5wdWJsaWNMZW5ndGg7IH0KICAgIHZvaWQgc2V0UHVibGljTGVuZ3RoKHVpbnQzMl90
IGF1eFdvcmQpIHsgdS5sZW5ndGhzLnB1YmxpY0xlbmd0aCA9IGF1eFdvcmQ7IH0KCiAgICBBcnJh
eUJ1ZmZlciogYXJyYXlCdWZmZXIoKSB7IHJldHVybiB1LnR5cGVkQXJyYXkuYnVmZmVyOyB9CiAg
ICB2b2lkIHNldEFycmF5QnVmZmVyKEFycmF5QnVmZmVyKiBidWZmZXIpIHsgdS50eXBlZEFycmF5
LmJ1ZmZlciA9IGJ1ZmZlcjsgfQoKICAgIHN0YXRpYyBJbmRleGluZ0hlYWRlciogZnJvbShCdXR0
ZXJmbHkqIGJ1dHRlcmZseSkKICAgIHsKICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxJ
bmRleGluZ0hlYWRlcio+KGJ1dHRlcmZseSkgLSAxOwogICAgfQoKICAgIHN0YXRpYyBjb25zdCBJ
bmRleGluZ0hlYWRlciogZnJvbShjb25zdCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKICAgIHsKICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbmRleGluZ0hlYWRlcio+KGJ1dHRl
cmZseSkgLSAxOwogICAgfQoKICAgIHN0YXRpYyBJbmRleGluZ0hlYWRlciogZnJvbShBcnJheVN0
b3JhZ2UqIGFycmF5U3RvcmFnZSkKICAgIHsKICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxJbmRl
eGluZ0hlYWRlcio+KGZyb20oY29uc3RfY2FzdDxjb25zdCBBcnJheVN0b3JhZ2UqPihhcnJheVN0
b3JhZ2UpKSk7CiAgICB9CgogICAgc3RhdGljIGNvbnN0IEluZGV4aW5nSGVhZGVyKiBmcm9tKGNv
bnN0IEFycmF5U3RvcmFnZSogYXJyYXlTdG9yYWdlKQogICAgewogICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNvbnN0IEluZGV4aW5nSGVhZGVyKj4oYXJyYXlTdG9yYWdlKSAtIDE7CiAg
ICB9CgogICAgc3RhdGljIEluZGV4aW5nSGVhZGVyKiBmcm9tRW5kT2YoUHJvcGVydHlTdG9yYWdl
IHByb3BlcnR5U3RvcmFnZSkKICAgIHsKICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxJ
bmRleGluZ0hlYWRlcio+KHByb3BlcnR5U3RvcmFnZSk7CiAgICB9CgogICAgUHJvcGVydHlTdG9y
YWdlIHByb3BlcnR5U3RvcmFnZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3RfcHRyPFByb3BlcnR5U3RvcmFnZT4odGhpcyk7CiAgICB9CgogICAgQ29uc3RQcm9wZXJ0eVN0
b3JhZ2UgcHJvcGVydHlTdG9yYWdlKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdF9wdHI8Q29uc3RQcm9wZXJ0eVN0b3JhZ2U+KHRoaXMpOwogICAgfQoKICAgIEFy
cmF5U3RvcmFnZSogYXJyYXlTdG9yYWdlKCkKICAgIHsKICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxBcnJheVN0b3JhZ2UqPih0aGlzICsgMSk7CiAgICB9CgogICAgQnV0dGVyZmx5KiBi
dXR0ZXJmbHkoKQogICAgewogICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEJ1dHRlcmZs
eSo+KHRoaXMgKyAxKTsKICAgIH0KCgoKICAgIHNpemVfdCBwcmVDYXBhY2l0eShTdHJ1Y3R1cmUq
KTsKICAgIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyhTdHJ1Y3R1cmUqKTsKCnBy
aXZhdGU6CiAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwoKICAgIHVuaW9u
IHsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICB1aW50MzJfdCBwdWJsaWNMZW5ndGg7CiAg
ICAgICAgICAgIHVpbnQzMl90IHZlY3Rvckxlbmd0aDsKICAgICAgICB9IGxlbmd0aHM7CgogICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgIEFycmF5QnVmZmVyKiBidWZmZXI7CiAgICAgICAgfSB0
eXBlZEFycmF5OwogICAgfSB1Owp9OwoKfQojIDI1ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUNvbnZlbnRpb25zLmgiIDIKCgpuYW1lc3BhY2UgSlNDIHsKIyA1NyAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb252ZW50aW9ucy5oIgoj
ZGVmaW5lIE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEggKHN0YXRpY19jYXN0PHVuc2lnbmVkPihJ
bmRleGluZ0hlYWRlcjo6bWF4aW11bUxlbmd0aCkpCgoKCgoKCgojZGVmaW5lIE1JTl9TUEFSU0Vf
QVJSQVlfSU5ERVggMTAwMDAwVQoKCiNkZWZpbmUgTUlOX0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNU
SU9OX0xFTkdUSCAxMDI0ICogMTAyNCAqIDEwMjQgLyA4CiNkZWZpbmUgTUFYX1NUT1JBR0VfVkVD
VE9SX0lOREVYIChNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIIC0gMSkKCiNkZWZpbmUgTUFYX0FS
UkFZX0lOREVYIDB4RkZGRkZGRkVVCgoKCiNkZWZpbmUgQkFTRV9WRUNUT1JfTEVOIDRVCgoKCiNk
ZWZpbmUgRklSU1RfVkVDVE9SX0dST1cgNFUKCiNkZWZpbmUgTUlOX0JFWU9ORF9MRU5HVEhfU1BB
UlNFX0lOREVYIDEwMDAKCgoKCgpzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluRGVuc2l0eU11bHRp
cGxpZXIgPSA4OwoKaW5saW5lIGJvb2wgaXNEZW5zZUVub3VnaEZvclZlY3Rvcih1bnNpZ25lZCBs
ZW5ndGgsIHVuc2lnbmVkIG51bVZhbHVlcykKewogICAgcmV0dXJuIGxlbmd0aCAvIG1pbkRlbnNp
dHlNdWx0aXBsaWVyIDw9IG51bVZhbHVlczsKfQoKaW5saW5lIGJvb2wgaW5kZXhJc1N1ZmZpY2ll
bnRseUJleW9uZExlbmd0aEZvclNwYXJzZU1hcCh1bnNpZ25lZCBpLCB1bnNpZ25lZCBsZW5ndGgp
CnsKICAgIHJldHVybiBpID49IDEwMDAgJiYgaSA+IGxlbmd0aDsKfQoKaW5saW5lIEluZGV4aW5n
SGVhZGVyIGluZGV4aW5nSGVhZGVyRm9yQXJyYXkodW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCB2
ZWN0b3JMZW5ndGgpCnsKICAgIEluZGV4aW5nSGVhZGVyIHJlc3VsdDsKICAgIHJlc3VsdC5zZXRQ
dWJsaWNMZW5ndGgobGVuZ3RoKTsKICAgIHJlc3VsdC5zZXRWZWN0b3JMZW5ndGgodmVjdG9yTGVu
Z3RoKTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCmlubGluZSBJbmRleGluZ0hlYWRlciBiYXNlSW5k
ZXhpbmdIZWFkZXJGb3JBcnJheSh1bnNpZ25lZCBsZW5ndGgpCnsKICAgIHJldHVybiBpbmRleGlu
Z0hlYWRlckZvckFycmF5KGxlbmd0aCwgNFUpOwp9Cgp9CiMgMjggIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVN0b3JhZ2UuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVN0b3JhZ2UuaCIKI2RlZmluZSBBcnJheVN0b3JhZ2Vf
aCAKCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseS5o
IiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseS5o
IgojZGVmaW5lIEJ1dHRlcmZseV9oIAoKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlPZmZzZXQuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oIgojZGVmaW5lIFByb3BlcnR5T2Zmc2V0X2gg
CgoKCm5hbWVzcGFjZSBKU0MgewoKdHlwZWRlZiBpbnQgUHJvcGVydHlPZmZzZXQ7CgpzdGF0aWMg
Y29uc3QgUHJvcGVydHlPZmZzZXQgaW52YWxpZE9mZnNldCA9IC0xOwpzdGF0aWMgY29uc3QgUHJv
cGVydHlPZmZzZXQgZmlyc3RPdXRPZkxpbmVPZmZzZXQgPSAxMDA7CgoKaW5saW5lIHZvaWQgY2hl
Y2tPZmZzZXQoUHJvcGVydHlPZmZzZXQpOwppbmxpbmUgdm9pZCBjaGVja09mZnNldChQcm9wZXJ0
eU9mZnNldCwgaW50IGlubGluZUNhcGFjaXR5KTsKaW5saW5lIHZvaWQgdmFsaWRhdGVPZmZzZXQo
UHJvcGVydHlPZmZzZXQpOwppbmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNl
dCwgaW50IGlubGluZUNhcGFjaXR5KTsKaW5saW5lIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0
eU9mZnNldCk7CmlubGluZSBib29sIGlzSW5saW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsKaW5s
aW5lIGJvb2wgaXNPdXRPZkxpbmVPZmZzZXQoUHJvcGVydHlPZmZzZXQpOwppbmxpbmUgc2l6ZV90
IG9mZnNldEluSW5saW5lU3RvcmFnZShQcm9wZXJ0eU9mZnNldCk7CmlubGluZSBzaXplX3Qgb2Zm
c2V0SW5PdXRPZkxpbmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0KTsKaW5saW5lIHNpemVfdCBvZmZz
ZXRJblJlc3BlY3RpdmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0KTsKaW5saW5lIHNpemVfdCBudW1i
ZXJPZk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChQcm9wZXJ0eU9mZnNldCk7CmlubGluZSBz
aXplX3QgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZzZXQsIGludCBpbmxp
bmVDYXBhY2l0eSk7CgppbmxpbmUgdm9pZCBjaGVja09mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQpCnsKICAgICh2b2lkKW9mZnNldDsKICAgICgodm9pZCkwKTsKfQoKaW5saW5lIHZvaWQgY2hl
Y2tPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBpbnQgaW5saW5lQ2FwYWNpdHkpCnsKICAg
ICh2b2lkKW9mZnNldDsKICAgICh2b2lkKWlubGluZUNhcGFjaXR5OwogICAgKCh2b2lkKTApOwog
ICAgKCh2b2lkKTApCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwp9Cgpp
bmxpbmUgdm9pZCB2YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCnsKICAgIGNo
ZWNrT2Zmc2V0KG9mZnNldCk7CiAgICAoKHZvaWQpMCk7Cn0KCmlubGluZSB2b2lkIHZhbGlkYXRl
T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgaW50IGlubGluZUNhcGFjaXR5KQp7CiAgICBj
aGVja09mZnNldChvZmZzZXQsIGlubGluZUNhcGFjaXR5KTsKICAgICgodm9pZCkwKTsKfQoKaW5s
aW5lIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCnsKICAgIGNoZWNr
T2Zmc2V0KG9mZnNldCk7CiAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQ7Cn0KCmlu
bGluZSBib29sIGlzSW5saW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKewogICAgY2hl
Y2tPZmZzZXQob2Zmc2V0KTsKICAgIHJldHVybiBvZmZzZXQgPCBmaXJzdE91dE9mTGluZU9mZnNl
dDsKfQoKaW5saW5lIGJvb2wgaXNPdXRPZkxpbmVPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KQp7CiAgICBjaGVja09mZnNldChvZmZzZXQpOwogICAgcmV0dXJuICFpc0lubGluZU9mZnNldChv
ZmZzZXQpOwp9CgppbmxpbmUgc2l6ZV90IG9mZnNldEluSW5saW5lU3RvcmFnZShQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpCnsKICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CiAgICAoKHZvaWQpMCk7
CiAgICByZXR1cm4gb2Zmc2V0Owp9CgppbmxpbmUgc2l6ZV90IG9mZnNldEluT3V0T2ZMaW5lU3Rv
cmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCnsKICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7
CiAgICAoKHZvaWQpMCk7CiAgICByZXR1cm4gLXN0YXRpY19jYXN0PHB0cmRpZmZfdD4ob2Zmc2V0
IC0gZmlyc3RPdXRPZkxpbmVPZmZzZXQpIC0gMTsKfQoKaW5saW5lIHNpemVfdCBvZmZzZXRJblJl
c3BlY3RpdmVTdG9yYWdlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKewogICAgaWYgKGlzSW5saW5l
T2Zmc2V0KG9mZnNldCkpCiAgICAgICAgcmV0dXJuIG9mZnNldEluSW5saW5lU3RvcmFnZShvZmZz
ZXQpOwogICAgcmV0dXJuIG9mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpOwp9Cgppbmxp
bmUgc2l6ZV90IG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKewogICAgY2hlY2tPZmZzZXQob2Zmc2V0KTsKICAgIGlmIChvZmZzZXQgPCBm
aXJzdE91dE9mTGluZU9mZnNldCkKICAgICAgICByZXR1cm4gMDsKICAgIHJldHVybiBvZmZzZXQg
LSBmaXJzdE91dE9mTGluZU9mZnNldCArIDE7Cn0KCmlubGluZSBzaXplX3QgbnVtYmVyT2ZTbG90
c0Zvckxhc3RPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBpbnQgaW5saW5lQ2FwYWNpdHkp
CnsKICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgaW5saW5lQ2FwYWNpdHkpOwogICAgaWYgKG9mZnNl
dCA8IGlubGluZUNhcGFjaXR5KQogICAgICAgIHJldHVybiBvZmZzZXQgKyAxOwogICAgcmV0dXJu
IGlubGluZUNhcGFjaXR5ICsgbnVtYmVyT2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQob2Zm
c2V0KTsKfQoKaW5saW5lIFByb3BlcnR5T2Zmc2V0IG9mZnNldEZvclByb3BlcnR5TnVtYmVyKGlu
dCBwcm9wZXJ0eU51bWJlciwgaW50IGlubGluZUNhcGFjaXR5KQp7CiAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBwcm9wZXJ0eU51bWJlcjsKICAgIGlmIChvZmZzZXQgPj0gaW5saW5lQ2FwYWNp
dHkpIHsKICAgICAgICBvZmZzZXQgKz0gZmlyc3RPdXRPZkxpbmVPZmZzZXQ7CiAgICAgICAgb2Zm
c2V0IC09IGlubGluZUNhcGFjaXR5OwogICAgfQogICAgcmV0dXJuIG9mZnNldDsKfQoKfQojIDMx
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHkuaCIgMgoKCgpu
YW1lc3BhY2UgSlNDIHsKCmNsYXNzIFZNOwpjbGFzcyBDb3B5VmlzaXRvcjsKc3RydWN0IEFycmF5
U3RvcmFnZTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udGlndW91c0RhdGEgewog
ICAgQ29udGlndW91c0RhdGEoKQogICAgICAgIDogbV9kYXRhKDApCgoKCiAgICB7CiAgICB9CiAg
ICBDb250aWd1b3VzRGF0YShUKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogICAgICAgIDogbV9kYXRh
KGRhdGEpCgoKCiAgICB7CiAgICAgICAgKHZvaWQpbGVuZ3RoOwogICAgfQoKICAgIGNvbnN0IFQm
IG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdCB7ICgodm9pZCkwKTsgcmV0dXJuIG1fZGF0
YVtpbmRleF07IH0KICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSB7ICgodm9pZCkwKTsg
cmV0dXJuIG1fZGF0YVtpbmRleF07IH0KCiAgICBUKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhOyB9CgoKCgpwcml2YXRlOgogICAgVCogbV9kYXRhOwoKCgp9OwoKdHlwZWRlZiBDb250aWd1
b3VzRGF0YTxkb3VibGU+IENvbnRpZ3VvdXNEb3VibGVzOwp0eXBlZGVmIENvbnRpZ3VvdXNEYXRh
PFdyaXRlQmFycmllcjxVbmtub3duPj4gQ29udGlndW91c0pTVmFsdWVzOwoKY2xhc3MgQnV0dGVy
Zmx5IHsKICAgIHByaXZhdGU6IEJ1dHRlcmZseShjb25zdCBCdXR0ZXJmbHkmKSA9IGRlbGV0ZTsg
QnV0dGVyZmx5JiBvcGVyYXRvcj0oY29uc3QgQnV0dGVyZmx5JikgPSBkZWxldGU7Owpwcml2YXRl
OgogICAgQnV0dGVyZmx5KCkgeyB9CnB1YmxpYzoKCiAgICBzdGF0aWMgc2l6ZV90IHRvdGFsU2l6
ZShzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCBib29sIGhhc0lu
ZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpCiAgICB7CiAg
ICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gKHByZUNh
cGFjaXR5ICsgcHJvcGVydHlDYXBhY2l0eSkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICsgKGhh
c0luZGV4aW5nSGVhZGVyID8gc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSA6IDApICsgaW5kZXhpbmdQ
YXlsb2FkU2l6ZUluQnl0ZXM7CiAgICB9CgogICAgc3RhdGljIEJ1dHRlcmZseSogZnJvbUJhc2Uo
dm9pZCogYmFzZSwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSkK
ICAgIHsKICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxCdXR0ZXJmbHkqPihzdGF0aWNf
Y2FzdDxFbmNvZGVkSlNWYWx1ZSo+KGJhc2UpICsgcHJlQ2FwYWNpdHkgKyBwcm9wZXJ0eUNhcGFj
aXR5ICsgMSk7CiAgICB9CgoKCiAgICBzdGF0aWMgQnV0dGVyZmx5KiBmcm9tUG9pbnRlcihjaGFy
KiBwdHIpCiAgICB7CiAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QnV0dGVyZmx5Kj4o
cHRyKTsKICAgIH0KCiAgICBjaGFyKiBwb2ludGVyKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4odGhpcyk7IH0KCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSW5kZXhpbmdI
ZWFkZXIoKSB7IHJldHVybiBJbmRleGluZ0hlYWRlcjo6b2Zmc2V0T2ZJbmRleGluZ0hlYWRlcigp
OyB9CiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQXJyYXlCdWZmZXIoKSB7IHJldHVybiBv
ZmZzZXRPZkluZGV4aW5nSGVhZGVyKCkgKyBJbmRleGluZ0hlYWRlcjo6b2Zmc2V0T2ZBcnJheUJ1
ZmZlcigpOyB9CiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mUHVibGljTGVuZ3RoKCkgeyBy
ZXR1cm4gb2Zmc2V0T2ZJbmRleGluZ0hlYWRlcigpICsgSW5kZXhpbmdIZWFkZXI6Om9mZnNldE9m
UHVibGljTGVuZ3RoKCk7IH0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZWZWN0b3JMZW5n
dGgoKSB7IHJldHVybiBvZmZzZXRPZkluZGV4aW5nSGVhZGVyKCkgKyBJbmRleGluZ0hlYWRlcjo6
b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKTsgfQoKICAgIHN0YXRpYyBCdXR0ZXJmbHkqIGNyZWF0ZVVu
aW5pdGlhbGl6ZWQoVk0mLCBKU0NlbGwqIGludGVuZGVkT3duZXIsIHNpemVfdCBwcmVDYXBhY2l0
eSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIsIHNpemVf
dCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7CgogICAgc3RhdGljIEJ1dHRlcmZseSogY3Jl
YXRlKFZNJiwgSlNDZWxsKiBpbnRlbmRlZE93bmVyLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVf
dCBwcm9wZXJ0eUNhcGFjaXR5LCBib29sIGhhc0luZGV4aW5nSGVhZGVyLCBjb25zdCBJbmRleGlu
Z0hlYWRlciYsIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7CiAgICBzdGF0aWMg
QnV0dGVyZmx5KiBjcmVhdGUoVk0mLCBKU0NlbGwqIGludGVuZGVkT3duZXIsIFN0cnVjdHVyZSop
OwogICAgc3RhdGljIEJ1dHRlcmZseSogY3JlYXRlVW5pbml0aWFsaXplZER1cmluZ0NvbGxlY3Rp
b24oQ29weVZpc2l0b3ImLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0eUNhcGFj
aXR5LCBib29sIGhhc0luZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUlu
Qnl0ZXMpOwoKICAgIEluZGV4aW5nSGVhZGVyKiBpbmRleGluZ0hlYWRlcigpIHsgcmV0dXJuIElu
ZGV4aW5nSGVhZGVyOjpmcm9tKHRoaXMpOyB9CiAgICBjb25zdCBJbmRleGluZ0hlYWRlciogaW5k
ZXhpbmdIZWFkZXIoKSBjb25zdCB7IHJldHVybiBJbmRleGluZ0hlYWRlcjo6ZnJvbSh0aGlzKTsg
fQogICAgUHJvcGVydHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSgpIHsgcmV0dXJuIGluZGV4aW5n
SGVhZGVyKCktPnByb3BlcnR5U3RvcmFnZSgpOyB9CiAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBw
cm9wZXJ0eVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBpbmRleGluZ0hlYWRlcigpLT5wcm9wZXJ0
eVN0b3JhZ2UoKTsgfQoKICAgIHVpbnQzMl90IHB1YmxpY0xlbmd0aCgpIHsgcmV0dXJuIGluZGV4
aW5nSGVhZGVyKCktPnB1YmxpY0xlbmd0aCgpOyB9CiAgICB1aW50MzJfdCB2ZWN0b3JMZW5ndGgo
KSB7IHJldHVybiBpbmRleGluZ0hlYWRlcigpLT52ZWN0b3JMZW5ndGgoKTsgfQogICAgdm9pZCBz
ZXRQdWJsaWNMZW5ndGgodWludDMyX3QgdmFsdWUpIHsgaW5kZXhpbmdIZWFkZXIoKS0+c2V0UHVi
bGljTGVuZ3RoKHZhbHVlKTsgfQogICAgdm9pZCBzZXRWZWN0b3JMZW5ndGgodWludDMyX3QgdmFs
dWUpIHsgaW5kZXhpbmdIZWFkZXIoKS0+c2V0VmVjdG9yTGVuZ3RoKHZhbHVlKTsgfQoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiAgICBUKiBpbmRleGluZ1BheWxvYWQoKSB7IHJldHVybiByZWlu
dGVycHJldF9jYXN0X3B0cjxUKj4odGhpcyk7IH0KICAgIEFycmF5U3RvcmFnZSogYXJyYXlTdG9y
YWdlKCkgeyByZXR1cm4gaW5kZXhpbmdQYXlsb2FkPEFycmF5U3RvcmFnZT4oKTsgfQogICAgQ29u
dGlndW91c0pTVmFsdWVzIGNvbnRpZ3VvdXNJbnQzMigpIHsgcmV0dXJuIENvbnRpZ3VvdXNKU1Zh
bHVlcyhpbmRleGluZ1BheWxvYWQ8V3JpdGVCYXJyaWVyPFVua25vd24+PigpLCB2ZWN0b3JMZW5n
dGgoKSk7IH0KCiAgICBDb250aWd1b3VzRG91YmxlcyBjb250aWd1b3VzRG91YmxlKCkgeyByZXR1
cm4gQ29udGlndW91c0RvdWJsZXMoaW5kZXhpbmdQYXlsb2FkPGRvdWJsZT4oKSwgdmVjdG9yTGVu
Z3RoKCkpOyB9CiAgICBDb250aWd1b3VzSlNWYWx1ZXMgY29udGlndW91cygpIHsgcmV0dXJuIENv
bnRpZ3VvdXNKU1ZhbHVlcyhpbmRleGluZ1BheWxvYWQ8V3JpdGVCYXJyaWVyPFVua25vd24+Pigp
LCB2ZWN0b3JMZW5ndGgoKSk7IH0KCiAgICBzdGF0aWMgQnV0dGVyZmx5KiBmcm9tQ29udGlndW91
cyhXcml0ZUJhcnJpZXI8VW5rbm93bj4qIGNvbnRpZ3VvdXMpCiAgICB7CiAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8QnV0dGVyZmx5Kj4oY29udGlndW91cyk7CiAgICB9CiAgICBzdGF0
aWMgQnV0dGVyZmx5KiBmcm9tQ29udGlndW91cyhkb3VibGUqIGNvbnRpZ3VvdXMpCiAgICB7CiAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QnV0dGVyZmx5Kj4oY29udGlndW91cyk7CiAg
ICB9CgogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpIHsgcmV0
dXJuIC1zdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihJbmRleGluZ0hlYWRlcikpOyB9CiAg
ICBzdGF0aWMgaW50IGluZGV4T2ZQcm9wZXJ0eVN0b3JhZ2UoKQogICAgewogICAgICAgICgodm9p
ZCkwKTsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgdm9pZCogYmFzZShzaXplX3QgcHJl
Q2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5KSB7IHJldHVybiBwcm9wZXJ0eVN0b3Jh
Z2UoKSAtIHByb3BlcnR5Q2FwYWNpdHkgLSBwcmVDYXBhY2l0eTsgfQogICAgdm9pZCogYmFzZShT
dHJ1Y3R1cmUqKTsKCiAgICBzdGF0aWMgQnV0dGVyZmx5KiBjcmVhdGVPckdyb3dBcnJheVJpZ2h0
KAogICAgICAgIEJ1dHRlcmZseSosIFZNJiwgSlNDZWxsKiBpbnRlbmRlZE93bmVyLCBTdHJ1Y3R1
cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBo
YWRJbmRleGluZ0hlYWRlciwKICAgICAgICBzaXplX3Qgb2xkSW5kZXhpbmdQYXlsb2FkU2l6ZUlu
Qnl0ZXMsIHNpemVfdCBuZXdJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7CgoKCgoKCiAgICBz
dGF0aWMgQnV0dGVyZmx5KiBjcmVhdGVPckdyb3dQcm9wZXJ0eVN0b3JhZ2UoQnV0dGVyZmx5Kiwg
Vk0mLCBKU0NlbGwqIGludGVuZGVkT3duZXIsIFN0cnVjdHVyZSosIHNpemVfdCBvbGRQcm9wZXJ0
eUNhcGFjaXR5LCBzaXplX3QgbmV3UHJvcGVydHlDYXBhY2l0eSk7CiAgICBCdXR0ZXJmbHkqIGdy
b3dBcnJheVJpZ2h0KFZNJiwgSlNDZWxsKiBpbnRlbmRlZE93bmVyLCBTdHJ1Y3R1cmUqIG9sZFN0
cnVjdHVyZSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFkSW5kZXhpbmdIZWFkZXIs
IHNpemVfdCBvbGRJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcywgc2l6ZV90IG5ld0luZGV4aW5n
UGF5bG9hZFNpemVJbkJ5dGVzKTsKICAgIEJ1dHRlcmZseSogZ3Jvd0FycmF5UmlnaHQoVk0mLCBK
U0NlbGwqIGludGVuZGVkT3duZXIsIFN0cnVjdHVyZSosIHNpemVfdCBuZXdJbmRleGluZ1BheWxv
YWRTaXplSW5CeXRlcyk7CiAgICBCdXR0ZXJmbHkqIHJlc2l6ZUFycmF5KFZNJiwgSlNDZWxsKiBp
bnRlbmRlZE93bmVyLCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBvbGRIYXNJbmRleGlu
Z0hlYWRlciwgc2l6ZV90IG9sZEluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzLCBzaXplX3QgbmV3
UHJlQ2FwYWNpdHksIGJvb2wgbmV3SGFzSW5kZXhpbmdIZWFkZXIsIHNpemVfdCBuZXdJbmRleGlu
Z1BheWxvYWRTaXplSW5CeXRlcyk7CiAgICBCdXR0ZXJmbHkqIHJlc2l6ZUFycmF5KFZNJiwgSlND
ZWxsKiBpbnRlbmRlZE93bmVyLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbmV3UHJlQ2FwYWNpdHksIHNp
emVfdCBuZXdJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7CiAgICBCdXR0ZXJmbHkqIHVuc2hp
ZnQoU3RydWN0dXJlKiwgc2l6ZV90IG51bWJlck9mU2xvdHMpOwogICAgQnV0dGVyZmx5KiBzaGlm
dChTdHJ1Y3R1cmUqLCBzaXplX3QgbnVtYmVyT2ZTbG90cyk7Cn07Cgp9CiMgMzEgIi4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5U3RvcmFnZS5oIiAyCgojIDEgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaCIgMQoj
IDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVl
TWFwLmgiCiNkZWZpbmUgU3BhcnNlQXJyYXlWYWx1ZU1hcF9oIAoKIyAxICIuLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCIgMQojIDMwICIuLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgiIDIKCiMgMSAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgiIDEKIyAy
NyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9y
LmgiCiNkZWZpbmUgUHJvcGVydHlEZXNjcmlwdG9yX2ggCgoKCm5hbWVzcGFjZSBKU0MgewoKY2xh
c3MgR2V0dGVyU2V0dGVyOwoKCmJvb2wgc2FtZVZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpT
VmFsdWUpOwoKY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yIHsKcHVibGljOgogICAgUHJvcGVydHlE
ZXNjcmlwdG9yKCkKICAgICAgICA6IG1fYXR0cmlidXRlcyhkZWZhdWx0QXR0cmlidXRlcykKICAg
ICAgICAsIG1fc2VlbkF0dHJpYnV0ZXMoMCkKICAgIHsKICAgIH0KICAgIFByb3BlcnR5RGVzY3Jp
cHRvcihKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogICAgICAgIDogbV92YWx1
ZSh2YWx1ZSkKICAgICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQogICAgICAgICwgbV9z
ZWVuQXR0cmlidXRlcyhFbnVtZXJhYmxlUHJlc2VudCB8IENvbmZpZ3VyYWJsZVByZXNlbnQgfCBX
cml0YWJsZVByZXNlbnQpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkw
KTsKICAgICAgICAoKHZvaWQpMCk7CiAgICB9CiAgICBib29sIHdyaXRhYmxlKCkgY29uc3Q7CiAg
ICBib29sIGVudW1lcmFibGUoKSBjb25zdDsKICAgIGJvb2wgY29uZmlndXJhYmxlKCkgY29uc3Q7
CiAgICBib29sIGlzRGF0YURlc2NyaXB0b3IoKSBjb25zdDsKICAgIGJvb2wgaXNHZW5lcmljRGVz
Y3JpcHRvcigpIGNvbnN0OwogICAgYm9vbCBpc0FjY2Vzc29yRGVzY3JpcHRvcigpIGNvbnN0Owog
ICAgdW5zaWduZWQgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQog
ICAgSlNWYWx1ZSB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgIEdldHRlclNl
dHRlciogc2xvd0dldHRlclNldHRlcihFeGVjU3RhdGUqKTsKICAgIEpTVmFsdWUgZ2V0dGVyKCkg
Y29uc3Q7CiAgICBKU1ZhbHVlIHNldHRlcigpIGNvbnN0OwogICAgSlNPYmplY3QqIGdldHRlck9i
amVjdCgpIGNvbnN0OwogICAgSlNPYmplY3QqIHNldHRlck9iamVjdCgpIGNvbnN0OwogICAgdm9p
ZCBzZXRVbmRlZmluZWQoKTsKICAgIHZvaWQgc2V0RGVzY3JpcHRvcihKU1ZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTsKICAgIHZvaWQgc2V0Q3VzdG9tRGVzY3JpcHRvcih1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKICAgIHZvaWQgc2V0QWNjZXNzb3JEZXNjcmlwdG9yKEdldHRlclNldHRlciogYWNj
ZXNzb3IsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgdm9pZCBzZXRXcml0YWJsZShib29sKTsK
ICAgIHZvaWQgc2V0RW51bWVyYWJsZShib29sKTsKICAgIHZvaWQgc2V0Q29uZmlndXJhYmxlKGJv
b2wpOwogICAgdm9pZCBzZXRWYWx1ZShKU1ZhbHVlIHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZTsg
fQogICAgdm9pZCBzZXRTZXR0ZXIoSlNWYWx1ZSk7CiAgICB2b2lkIHNldEdldHRlcihKU1ZhbHVl
KTsKICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICEobV92YWx1ZSB8fCBtX2dldHRl
ciB8fCBtX3NldHRlciB8fCBtX3NlZW5BdHRyaWJ1dGVzKTsgfQogICAgYm9vbCB3cml0YWJsZVBy
ZXNlbnQoKSBjb25zdCB7IHJldHVybiBtX3NlZW5BdHRyaWJ1dGVzICYgV3JpdGFibGVQcmVzZW50
OyB9CiAgICBib29sIGVudW1lcmFibGVQcmVzZW50KCkgY29uc3QgeyByZXR1cm4gbV9zZWVuQXR0
cmlidXRlcyAmIEVudW1lcmFibGVQcmVzZW50OyB9CiAgICBib29sIGNvbmZpZ3VyYWJsZVByZXNl
bnQoKSBjb25zdCB7IHJldHVybiBtX3NlZW5BdHRyaWJ1dGVzICYgQ29uZmlndXJhYmxlUHJlc2Vu
dDsgfQogICAgYm9vbCBzZXR0ZXJQcmVzZW50KCkgY29uc3QgeyByZXR1cm4gISFtX3NldHRlcjsg
fQogICAgYm9vbCBnZXR0ZXJQcmVzZW50KCkgY29uc3QgeyByZXR1cm4gISFtX2dldHRlcjsgfQog
ICAgYm9vbCBlcXVhbFRvKEV4ZWNTdGF0ZSosIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgb3Ro
ZXIpIGNvbnN0OwogICAgYm9vbCBhdHRyaWJ1dGVzRXF1YWwoY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiBvdGhlcikgY29uc3Q7CiAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJl
bnQoY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBjdXJyZW50KSBjb25zdDsKCnByaXZhdGU6CiAg
ICBzdGF0aWMgdW5zaWduZWQgZGVmYXVsdEF0dHJpYnV0ZXM7CiAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJikgeyByZXR1cm4gZmFsc2U7IH0KICAgIGVudW0geyBX
cml0YWJsZVByZXNlbnQgPSAxLCBFbnVtZXJhYmxlUHJlc2VudCA9IDIsIENvbmZpZ3VyYWJsZVBy
ZXNlbnQgPSA0fTsKCiAgICBKU1ZhbHVlIG1fdmFsdWU7CiAgICBKU1ZhbHVlIG1fZ2V0dGVyOwog
ICAgSlNWYWx1ZSBtX3NldHRlcjsKICAgIHVuc2lnbmVkIG1fYXR0cmlidXRlczsKICAgIHVuc2ln
bmVkIG1fc2VlbkF0dHJpYnV0ZXM7Cn07Cgp9CiMgMzIgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dERpcmVjdEluZGV4TW9kZS5oIiAxCiMgMjcgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dERpcmVjdEluZGV4TW9kZS5oIgojZGVm
aW5lIFB1dERpcmVjdEluZGV4TW9kZV9oIAoKbmFtZXNwYWNlIEpTQyB7CgplbnVtIFB1dERpcmVj
dEluZGV4TW9kZSB7IFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCwgUHV0RGlyZWN0SW5kZXhT
aG91bGROb3RUaHJvdywgUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyB9OwoKfQojIDMzICIuLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgiIDIK
CgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBTcGFyc2VBcnJheVZhbHVlTWFwOwoKc3RydWN0IFNw
YXJzZUFycmF5RW50cnkgOiBwdWJsaWMgV3JpdGVCYXJyaWVyPFVua25vd24+IHsKICAgIHR5cGVk
ZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7CgogICAgU3BhcnNlQXJyYXlFbnRyeSgpIDog
YXR0cmlidXRlcygwKSB7IH0KCiAgICB2b2lkIGdldChKU09iamVjdCosIFByb3BlcnR5U2xvdCYp
IGNvbnN0OwogICAgdm9pZCBnZXQoUHJvcGVydHlEZXNjcmlwdG9yJikgY29uc3Q7CiAgICBib29s
IHB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCos
IEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgSlNWYWx1ZSBnZXROb25TcGFyc2VNb2Rl
KCkgY29uc3Q7CgogICAgdW5zaWduZWQgYXR0cmlidXRlczsKfTsKCmNsYXNzIFNwYXJzZUFycmF5
VmFsdWVNYXAgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKcHVibGljOgogICAgdHlwZWRlZiBKU0Nl
bGwgQmFzZTsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKCnByaXZhdGU6CiAgICB0eXBl
ZGVmIEhhc2hNYXA8dWludDY0X3QsIFNwYXJzZUFycmF5RW50cnksIFdURjo6SW50SGFzaDx1aW50
NjRfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBNYXA7
CgogICAgZW51bSBGbGFncyB7CiAgICAgICAgTm9ybWFsID0gMCwKICAgICAgICBTcGFyc2VNb2Rl
ID0gMSwKICAgICAgICBMZW5ndGhJc1JlYWRPbmx5ID0gMiwKICAgIH07CgogICAgU3BhcnNlQXJy
YXlWYWx1ZU1hcChWTSYpOwogICAgflNwYXJzZUFycmF5VmFsdWVNYXAoKTsKCiAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7CgpwdWJsaWM6CiAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCA6
OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNz
SW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07CgogICAgdHlwZWRlZiBNYXA6Oml0ZXJh
dG9yIGl0ZXJhdG9yOwogICAgdHlwZWRlZiBNYXA6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJh
dG9yOwogICAgdHlwZWRlZiBNYXA6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CgogICAgc3RhdGljIFNw
YXJzZUFycmF5VmFsdWVNYXAqIGNyZWF0ZShWTSYpOwoKICAgIHN0YXRpYyBjb25zdCBib29sIG5l
ZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
CiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgcHJvdG90eXBlKTsKCiAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CgogICAgYm9vbCBzcGFyc2VNb2RlKCkKICAgIHsKICAgICAg
ICByZXR1cm4gbV9mbGFncyAmIFNwYXJzZU1vZGU7CiAgICB9CgogICAgdm9pZCBzZXRTcGFyc2VN
b2RlKCkKICAgIHsKICAgICAgICBtX2ZsYWdzID0gc3RhdGljX2Nhc3Q8RmxhZ3M+KG1fZmxhZ3Mg
fCBTcGFyc2VNb2RlKTsKICAgIH0KCiAgICBib29sIGxlbmd0aElzUmVhZE9ubHkoKQogICAgewog
ICAgICAgIHJldHVybiBtX2ZsYWdzICYgTGVuZ3RoSXNSZWFkT25seTsKICAgIH0KCiAgICB2b2lk
IHNldExlbmd0aElzUmVhZE9ubHkoKQogICAgewogICAgICAgIG1fZmxhZ3MgPSBzdGF0aWNfY2Fz
dDxGbGFncz4obV9mbGFncyB8IExlbmd0aElzUmVhZE9ubHkpOwogICAgfQoKCiAgICBib29sIHB1
dEVudHJ5KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpOwogICAgYm9vbCBwdXREaXJlY3QoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCB1bnNp
Z25lZCwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGlyZWN0SW5kZXhNb2RlKTsK
ICAgIEFkZFJlc3VsdCBhZGQoSlNPYmplY3QqLCB1bnNpZ25lZCk7CiAgICBpdGVyYXRvciBmaW5k
KHVuc2lnbmVkIGkpIHsgcmV0dXJuIG1fbWFwLmZpbmQoaSk7IH0KCiAgICB2b2lkIHJlbW92ZShp
dGVyYXRvciBpdCkgeyBtX21hcC5yZW1vdmUoaXQpOyB9CiAgICB2b2lkIHJlbW92ZSh1bnNpZ25l
ZCBpKSB7IG1fbWFwLnJlbW92ZShpKTsgfQoKCiAgICBpdGVyYXRvciBub3RGb3VuZCgpIHsgcmV0
dXJuIG1fbWFwLmVuZCgpOyB9CiAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX21h
cC5pc0VtcHR5KCk7IH0KICAgIGJvb2wgY29udGFpbnModW5zaWduZWQgaSkgY29uc3QgeyByZXR1
cm4gbV9tYXAuY29udGFpbnMoaSk7IH0KICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9tYXAuc2l6ZSgpOyB9CgogICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVy
biBtX21hcC5iZWdpbigpOyB9CiAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVy
biBtX21hcC5lbmQoKTsgfQoKcHJpdmF0ZToKICAgIE1hcCBtX21hcDsKICAgIEZsYWdzIG1fZmxh
Z3M7CiAgICBzaXplX3QgbV9yZXBvcnRlZENhcGFjaXR5Owp9OwoKfQojIDMzICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVN0b3JhZ2UuaCIgMgoKCgpuYW1lc3BhY2Ug
SlNDIHsKIyA0NSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlTdG9y
YWdlLmgiCnN0cnVjdCBBcnJheVN0b3JhZ2UgewogICAgcHJpdmF0ZTogQXJyYXlTdG9yYWdlKGNv
bnN0IEFycmF5U3RvcmFnZSYpID0gZGVsZXRlOyBBcnJheVN0b3JhZ2UmIG9wZXJhdG9yPShjb25z
dCBBcnJheVN0b3JhZ2UmKSA9IGRlbGV0ZTs7CnByaXZhdGU6CiAgICBBcnJheVN0b3JhZ2UoKSB7
IH0KcHVibGljOgoKICAgIHN0YXRpYyBBcnJheVN0b3JhZ2UqIGZyb20oQnV0dGVyZmx5KiBidXR0
ZXJmbHkpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEFycmF5U3RvcmFnZSo+KGJ1dHRl
cmZseSk7IH0KICAgIHN0YXRpYyBBcnJheVN0b3JhZ2UqIGZyb20oSW5kZXhpbmdIZWFkZXIqIGlu
ZGV4aW5nSGVhZGVyKSB7IHJldHVybiBpbmRleGluZ0hlYWRlci0+YXJyYXlTdG9yYWdlKCk7IH0K
CiAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QnV0
dGVyZmx5Kj4odGhpcyk7IH0KICAgIEluZGV4aW5nSGVhZGVyKiBpbmRleGluZ0hlYWRlcigpIHsg
cmV0dXJuIEluZGV4aW5nSGVhZGVyOjpmcm9tKHRoaXMpOyB9CiAgICBjb25zdCBJbmRleGluZ0hl
YWRlciogaW5kZXhpbmdIZWFkZXIoKSBjb25zdCB7IHJldHVybiBJbmRleGluZ0hlYWRlcjo6ZnJv
bSh0aGlzKTsgfQoKCiAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBpbmRleGlu
Z0hlYWRlcigpLT5wdWJsaWNMZW5ndGgoKTsgfQogICAgdm9pZCBzZXRMZW5ndGgodW5zaWduZWQg
bGVuZ3RoKSB7IGluZGV4aW5nSGVhZGVyKCktPnNldFB1YmxpY0xlbmd0aChsZW5ndGgpOyB9CiAg
ICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgoKSB7IHJldHVybiBpbmRleGluZ0hlYWRlcigpLT52ZWN0
b3JMZW5ndGgoKTsgfQogICAgdm9pZCBzZXRWZWN0b3JMZW5ndGgodW5zaWduZWQgbGVuZ3RoKSB7
IGluZGV4aW5nSGVhZGVyKCktPnNldFZlY3Rvckxlbmd0aChsZW5ndGgpOyB9CgogICAgaW5saW5l
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBjb3B5SGVhZGVyRnJvbUR1
cmluZ0dDKGNvbnN0IEFycmF5U3RvcmFnZSYgb3RoZXIpCiAgICB7CiAgICAgICAgbV9zcGFyc2VN
YXAuY29weUZyb20ob3RoZXIubV9zcGFyc2VNYXApOwogICAgICAgIG1faW5kZXhCaWFzID0gb3Ro
ZXIubV9pbmRleEJpYXM7CiAgICAgICAgbV9udW1WYWx1ZXNJblZlY3RvciA9IG90aGVyLm1fbnVt
VmFsdWVzSW5WZWN0b3I7CiAgICB9CgogICAgYm9vbCBoYXNIb2xlcygpIGNvbnN0CiAgICB7CiAg
ICAgICAgcmV0dXJuIG1fbnVtVmFsdWVzSW5WZWN0b3IgIT0gbGVuZ3RoKCk7CiAgICB9CgogICAg
Ym9vbCBpblNwYXJzZU1vZGUoKQogICAgewogICAgICAgIHJldHVybiBtX3NwYXJzZU1hcCAmJiBt
X3NwYXJzZU1hcC0+c3BhcnNlTW9kZSgpOwogICAgfQoKICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyB2
ZWN0b3IoKSB7IHJldHVybiBDb250aWd1b3VzSlNWYWx1ZXMobV92ZWN0b3IsIHZlY3Rvckxlbmd0
aCgpKTsgfQoKICAgIFdyaXRlQmFycmllcjxTcGFyc2VBcnJheVZhbHVlTWFwPiBtX3NwYXJzZU1h
cDsKICAgIHVuc2lnbmVkIG1faW5kZXhCaWFzOwogICAgdW5zaWduZWQgbV9udW1WYWx1ZXNJblZl
Y3RvcjsKCiAgICB1aW50cHRyX3QgbV9wYWRkaW5nOwoKICAgIFdyaXRlQmFycmllcjxVbmtub3du
PiBtX3ZlY3RvclsxXTsKCiAgICBzdGF0aWMgcHRyZGlmZl90IGxlbmd0aE9mZnNldCgpIHsgcmV0
dXJuIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKTsgfQogICAgc3RhdGljIHB0cmRp
ZmZfdCB2ZWN0b3JMZW5ndGhPZmZzZXQoKSB7IHJldHVybiBCdXR0ZXJmbHk6Om9mZnNldE9mVmVj
dG9yTGVuZ3RoKCk7IH0KICAgIHN0YXRpYyBwdHJkaWZmX3QgbnVtVmFsdWVzSW5WZWN0b3JPZmZz
ZXQoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRf
Y2FzdDxBcnJheVN0b3JhZ2UqPigweDQwMDApLT5tX251bVZhbHVlc0luVmVjdG9yKSkgLSAweDQw
MDApOyB9CiAgICBzdGF0aWMgcHRyZGlmZl90IHZlY3Rvck9mZnNldCgpIHsgcmV0dXJuIChyZWlu
dGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEFycmF5U3RvcmFnZSo+
KDB4NDAwMCktPm1fdmVjdG9yKSkgLSAweDQwMDApOyB9CiAgICBzdGF0aWMgcHRyZGlmZl90IGlu
ZGV4Qmlhc09mZnNldCgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihy
ZWludGVycHJldF9jYXN0PEFycmF5U3RvcmFnZSo+KDB4NDAwMCktPm1faW5kZXhCaWFzKSkgLSAw
eDQwMDApOyB9CiAgICBzdGF0aWMgcHRyZGlmZl90IHNwYXJzZU1hcE9mZnNldCgpIHsgcmV0dXJu
IChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEFycmF5U3Rv
cmFnZSo+KDB4NDAwMCktPm1fc3BhcnNlTWFwKSkgLSAweDQwMDApOyB9CgogICAgc3RhdGljIHNp
emVfdCBzaXplRm9yKHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKICAgIHsKICAgICAgICByZXR1cm4g
QXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSArIHZlY3Rvckxlbmd0aCAqIHNpemVvZihXcml0
ZUJhcnJpZXI8VW5rbm93bj4pOwogICAgfQp9OwoKfQojIDI5ICIuLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIiAyCgoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaCIgMQojIDI0ICIuLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaCIKI2RlZmluZSBDbGFzc0luZm9faCAKCgoKIyAx
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5VG9rZW4uaCIgMQojIDI5ICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaCIgMgoKCm5hbWVz
cGFjZSBKU0MgewoKY2xhc3MgSGVhcFNuYXBzaG90QnVpbGRlcjsKY2xhc3MgSlNBcnJheUJ1ZmZl
clZpZXc7CnN0cnVjdCBIYXNoVGFibGU7CgpzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgdHlwZWRl
ZiB2b2lkICgqRGVzdHJveUZ1bmN0aW9uUHRyKShKU0NlbGwqKTsKICAgIERlc3Ryb3lGdW5jdGlv
blB0ciBkZXN0cm95OwoKICAgIHR5cGVkZWYgdm9pZCAoKlZpc2l0Q2hpbGRyZW5GdW5jdGlvblB0
cikoSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgIFZpc2l0Q2hpbGRyZW5GdW5jdGlvblB0ciB2
aXNpdENoaWxkcmVuOwoKICAgIHR5cGVkZWYgdm9pZCAoKkNvcHlCYWNraW5nU3RvcmVGdW5jdGlv
blB0cikoSlNDZWxsKiwgQ29weVZpc2l0b3ImLCBDb3B5VG9rZW4pOwogICAgQ29weUJhY2tpbmdT
dG9yZUZ1bmN0aW9uUHRyIGNvcHlCYWNraW5nU3RvcmU7CgogICAgdHlwZWRlZiBDYWxsVHlwZSAo
KkdldENhbGxEYXRhRnVuY3Rpb25QdHIpKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICBHZXRDYWxs
RGF0YUZ1bmN0aW9uUHRyIGdldENhbGxEYXRhOwoKICAgIHR5cGVkZWYgQ29uc3RydWN0VHlwZSAo
KkdldENvbnN0cnVjdERhdGFGdW5jdGlvblB0cikoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwog
ICAgR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyIGdldENvbnN0cnVjdERhdGE7CgogICAgdHlw
ZWRlZiBib29sICgqUHV0RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgUHV0RnVu
Y3Rpb25QdHIgcHV0OwoKICAgIHR5cGVkZWYgYm9vbCAoKlB1dEJ5SW5kZXhGdW5jdGlvblB0ciko
SlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29s
IHNob3VsZFRocm93KTsKICAgIFB1dEJ5SW5kZXhGdW5jdGlvblB0ciBwdXRCeUluZGV4OwoKICAg
IHR5cGVkZWYgYm9vbCAoKkRlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRyIGRlbGV0
ZVByb3BlcnR5OwoKICAgIHR5cGVkZWYgYm9vbCAoKkRlbGV0ZVByb3BlcnR5QnlJbmRleEZ1bmN0
aW9uUHRyKShKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCk7CiAgICBEZWxldGVQcm9wZXJ0
eUJ5SW5kZXhGdW5jdGlvblB0ciBkZWxldGVQcm9wZXJ0eUJ5SW5kZXg7CgogICAgdHlwZWRlZiBi
b29sICgqR2V0T3duUHJvcGVydHlTbG90RnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgIEdldE93blByb3BlcnR5U2xvdEZ1
bmN0aW9uUHRyIGdldE93blByb3BlcnR5U2xvdDsKCiAgICB0eXBlZGVmIGJvb2wgKCpHZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4RnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5z
aWduZWQsIFByb3BlcnR5U2xvdCYpOwogICAgR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEZ1bmN0
aW9uUHRyIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXg7CgogICAgdHlwZWRlZiBKU1ZhbHVlICgq
VG9UaGlzRnVuY3Rpb25QdHIpKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIEVDTUFNb2RlKTsKICAgIFRv
VGhpc0Z1bmN0aW9uUHRyIHRvVGhpczsKCiAgICB0eXBlZGVmIEpTVmFsdWUgKCpEZWZhdWx0VmFs
dWVGdW5jdGlvblB0cikoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmlt
aXRpdmVUeXBlKTsKICAgIERlZmF1bHRWYWx1ZUZ1bmN0aW9uUHRyIGRlZmF1bHRWYWx1ZTsKCiAg
ICB0eXBlZGVmIHZvaWQgKCpHZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIpKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAg
R2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyIGdldE93blByb3BlcnR5TmFtZXM7CgogICAg
dHlwZWRlZiB2b2lkICgqR2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIpKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUp
OwogICAgR2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgZ2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzOwoKICAgIHR5cGVkZWYgdm9pZCAoKkdldFByb3BlcnR5TmFtZXNGdW5j
dGlvblB0cikoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSk7CiAgICBHZXRQcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgZ2V0UHJvcGVydHlO
YW1lczsKCiAgICB0eXBlZGVmIHVpbnQzMl90ICgqR2V0RW51bWVyYWJsZUxlbmd0aEZ1bmN0aW9u
UHRyKShFeGVjU3RhdGUqLCBKU09iamVjdCopOwogICAgR2V0RW51bWVyYWJsZUxlbmd0aEZ1bmN0
aW9uUHRyIGdldEVudW1lcmFibGVMZW5ndGg7CgogICAgR2V0UHJvcGVydHlOYW1lc0Z1bmN0aW9u
UHRyIGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXM7CiAgICBHZXRQcm9wZXJ0eU5hbWVzRnVuY3Rp
b25QdHIgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXM7CgogICAgdHlwZWRlZiBTdHJpbmcgKCpDbGFz
c05hbWVGdW5jdGlvblB0cikoY29uc3QgSlNPYmplY3QqKTsKICAgIENsYXNzTmFtZUZ1bmN0aW9u
UHRyIGNsYXNzTmFtZTsKCiAgICB0eXBlZGVmIGJvb2wgKCpDdXN0b21IYXNJbnN0YW5jZUZ1bmN0
aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwogICAgQ3VzdG9tSGFzSW5z
dGFuY2VGdW5jdGlvblB0ciBjdXN0b21IYXNJbnN0YW5jZTsKCiAgICB0eXBlZGVmIGJvb2wgKCpE
ZWZpbmVPd25Qcm9wZXJ0eUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCk7CiAgICBEZWZpbmVPd25Q
cm9wZXJ0eUZ1bmN0aW9uUHRyIGRlZmluZU93blByb3BlcnR5OwoKICAgIHR5cGVkZWYgQXJyYXlC
dWZmZXIqICgqU2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKICAg
IFNsb3dEb3duQW5kV2FzdGVNZW1vcnkgc2xvd0Rvd25BbmRXYXN0ZU1lbW9yeTsKCiAgICB0eXBl
ZGVmIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiAoKkdldFR5cGVkQXJyYXlJbXBsKShKU0Fy
cmF5QnVmZmVyVmlldyopOwogICAgR2V0VHlwZWRBcnJheUltcGwgZ2V0VHlwZWRBcnJheUltcGw7
CgogICAgdHlwZWRlZiBib29sICgqUHJldmVudEV4dGVuc2lvbnNGdW5jdGlvblB0cikoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqKTsKICAgIFByZXZlbnRFeHRlbnNpb25zRnVuY3Rpb25QdHIgcHJldmVu
dEV4dGVuc2lvbnM7CgogICAgdHlwZWRlZiBib29sICgqSXNFeHRlbnNpYmxlRnVuY3Rpb25QdHIp
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7CiAgICBJc0V4dGVuc2libGVGdW5jdGlvblB0ciBpc0V4
dGVuc2libGU7CgogICAgdHlwZWRlZiBib29sICgqU2V0UHJvdG90eXBlRnVuY3Rpb25QdHIpKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCk7
CiAgICBTZXRQcm90b3R5cGVGdW5jdGlvblB0ciBzZXRQcm90b3R5cGU7CgogICAgdHlwZWRlZiBK
U1ZhbHVlICgqR2V0UHJvdG90eXBlRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7
CiAgICBHZXRQcm90b3R5cGVGdW5jdGlvblB0ciBnZXRQcm90b3R5cGU7CgogICAgdHlwZWRlZiB2
b2lkICgqRHVtcFRvU3RyZWFtRnVuY3Rpb25QdHIpKGNvbnN0IEpTQ2VsbCosIFByaW50U3RyZWFt
Jik7CiAgICBEdW1wVG9TdHJlYW1GdW5jdGlvblB0ciBkdW1wVG9TdHJlYW07CgogICAgdHlwZWRl
ZiB2b2lkICgqSGVhcFNuYXBzaG90RnVuY3Rpb25QdHIpKEpTQ2VsbCosIEhlYXBTbmFwc2hvdEJ1
aWxkZXImKTsKICAgIEhlYXBTbmFwc2hvdEZ1bmN0aW9uUHRyIGhlYXBTbmFwc2hvdDsKCiAgICB0
eXBlZGVmIHNpemVfdCAoKkVzdGltYXRlZFNpemVGdW5jdGlvblB0cikoSlNDZWxsKik7CiAgICBF
c3RpbWF0ZWRTaXplRnVuY3Rpb25QdHIgZXN0aW1hdGVkU2l6ZTsKfTsKCiNkZWZpbmUgQ1JFQVRF
X01FTUJFUl9DSEVDS0VSKG1lbWJlcikgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBNZW1i
ZXJDaGVjayAjI21lbWJlciB7IHN0cnVjdCBGYWxsYmFjayB7IHZvaWQgbWVtYmVyKC4uLik7IH07
IHN0cnVjdCBEZXJpdmVkIDogVCwgRmFsbGJhY2sgeyB9OyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwg
VT4gc3RydWN0IENoZWNrOyB0eXBlZGVmIGNoYXIgWWVzWzJdOyB0eXBlZGVmIGNoYXIgTm9bMV07
IHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBzdGF0aWMgTm8gJmZ1bmMoQ2hlY2s8dm9pZCAoRmFsbGJh
Y2s6OiopKC4uLiksICZVOjptZW1iZXI+Kik7IHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBzdGF0aWMg
WWVzICZmdW5jKC4uLik7IGVudW0geyBoYXMgPSBzaXplb2YoZnVuYzxEZXJpdmVkPigwKSkgPT0g
c2l6ZW9mKFllcykgfTsgfQojIDE0NiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xhc3NJbmZvLmgiCiNkZWZpbmUgSEFTX01FTUJFUl9OQU1FRChrbGFzcyxuYW1lKSAoTWVt
YmVyQ2hlY2sgIyNuYW1lPGtsYXNzPjo6aGFzKQoKI2RlZmluZSBDUkVBVEVfTUVUSE9EX1RBQkxF
KENsYXNzTmFtZSkgeyAmQ2xhc3NOYW1lOjpkZXN0cm95LCAmQ2xhc3NOYW1lOjp2aXNpdENoaWxk
cmVuLCAmQ2xhc3NOYW1lOjpjb3B5QmFja2luZ1N0b3JlLCAmQ2xhc3NOYW1lOjpnZXRDYWxsRGF0
YSwgJkNsYXNzTmFtZTo6Z2V0Q29uc3RydWN0RGF0YSwgJkNsYXNzTmFtZTo6cHV0LCAmQ2xhc3NO
YW1lOjpwdXRCeUluZGV4LCAmQ2xhc3NOYW1lOjpkZWxldGVQcm9wZXJ0eSwgJkNsYXNzTmFtZTo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4LCAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eVNsb3QsICZD
bGFzc05hbWU6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgsICZDbGFzc05hbWU6OnRvVGhpcywg
JkNsYXNzTmFtZTo6ZGVmYXVsdFZhbHVlLCAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
LCAmQ2xhc3NOYW1lOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMsICZDbGFzc05hbWU6Omdl
dFByb3BlcnR5TmFtZXMsICZDbGFzc05hbWU6OmdldEVudW1lcmFibGVMZW5ndGgsICZDbGFzc05h
bWU6OmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMsICZDbGFzc05hbWU6OmdldEdlbmVyaWNQcm9w
ZXJ0eU5hbWVzLCAmQ2xhc3NOYW1lOjpjbGFzc05hbWUsICZDbGFzc05hbWU6OmN1c3RvbUhhc0lu
c3RhbmNlLCAmQ2xhc3NOYW1lOjpkZWZpbmVPd25Qcm9wZXJ0eSwgJkNsYXNzTmFtZTo6c2xvd0Rv
d25BbmRXYXN0ZU1lbW9yeSwgJkNsYXNzTmFtZTo6Z2V0VHlwZWRBcnJheUltcGwsICZDbGFzc05h
bWU6OnByZXZlbnRFeHRlbnNpb25zLCAmQ2xhc3NOYW1lOjppc0V4dGVuc2libGUsICZDbGFzc05h
bWU6OnNldFByb3RvdHlwZSwgJkNsYXNzTmFtZTo6Z2V0UHJvdG90eXBlLCAmQ2xhc3NOYW1lOjpk
dW1wVG9TdHJlYW0sICZDbGFzc05hbWU6OmhlYXBTbmFwc2hvdCwgJkNsYXNzTmFtZTo6ZXN0aW1h
dGVkU2l6ZSB9LCBDbGFzc05hbWU6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZQojIDE4MyAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgiCnN0cnVjdCBDbGFzc0lu
Zm8gewoKICAgIGNvbnN0IGNoYXIqIGNsYXNzTmFtZTsKCgoKICAgIGNvbnN0IENsYXNzSW5mbyog
cGFyZW50Q2xhc3M7CgogICAgYm9vbCBpc1N1YkNsYXNzT2YoY29uc3QgQ2xhc3NJbmZvKiBvdGhl
cikgY29uc3QKICAgIHsKICAgICAgICBmb3IgKGNvbnN0IENsYXNzSW5mbyogY2kgPSB0aGlzOyBj
aTsgY2kgPSBjaS0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgaWYgKGNpID09IG90aGVyKQog
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxz
ZTsKICAgIH0KCiAgICBib29sIGhhc1N0YXRpY1Byb3BlcnRpZXMoKSBjb25zdAogICAgewogICAg
ICAgIGZvciAoY29uc3QgQ2xhc3NJbmZvKiBjaSA9IHRoaXM7IGNpOyBjaSA9IGNpLT5wYXJlbnRD
bGFzcykgewogICAgICAgICAgICBpZiAoY2ktPnN0YXRpY1Byb3BIYXNoVGFibGUpCiAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
fQoKICAgIGJvb2wgaGFzU3RhdGljU2V0dGVyT3JSZWFkb25seVByb3BlcnRpZXMoKSBjb25zdDsK
CiAgICBjb25zdCBIYXNoVGFibGUqIHN0YXRpY1Byb3BIYXNoVGFibGU7CgogICAgTWV0aG9kVGFi
bGUgbWV0aG9kVGFibGU7CgogICAgVHlwZWRBcnJheVR5cGUgdHlwZWRBcnJheVN0b3JhZ2VUeXBl
Owp9OwoKfQojIDMyICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oIiAyCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaCIgMQojIDIyICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oIgojZGVmaW5lIENvbW1vbklkZW50aWZpZXJzX2ggCgojIDEgIi4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmgiIDEKIyAyOCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkuaCIKI2RlZmluZSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
X2ggCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIu
aCIgMQojIDIyICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
LmgiCiNkZWZpbmUgSWRlbnRpZmllcl9oIAoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oIiAxCiMgMjUgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lkZW50aWZpZXIuaCIgMgoKCgoKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBFeGVjU3Rh
dGU7CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBib29sIGlzSW5k
ZXgodWludDMyX3QgaW5kZXgpCnsKICAgIHJldHVybiBpbmRleCAhPSAweEZGRkZGRkZGVTsKfQoK
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18pKSBPcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChjb25zdCBDaGFyVHlw
ZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQp7CgogICAgaWYgKCFsZW5ndGgpCiAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CgoKICAgIHVpbnQzMl90IHZhbHVlID0gY2hhcmFjdGVyc1swXSAt
ICcwJzsKICAgIGlmICh2YWx1ZSA+IDkpCiAgICAgICAgcmV0dXJuIE51bGxvcHQ7CgoKCiAgICBp
ZiAoIXZhbHVlICYmIGxlbmd0aCA+IDEpCiAgICAgICAgcmV0dXJuIE51bGxvcHQ7CgogICAgd2hp
bGUgKC0tbGVuZ3RoKSB7CgogICAgICAgIGlmICh2YWx1ZSA+IDB4RkZGRkZGRkZVIC8gMTApCiAg
ICAgICAgICAgIHJldHVybiBOdWxsb3B0OwogICAgICAgIHZhbHVlICo9IDEwOwoKCiAgICAgICAg
dWludDMyX3QgbmV3VmFsdWUgPSAqKCsrY2hhcmFjdGVycykgLSAnMCc7CiAgICAgICAgaWYgKG5l
d1ZhbHVlID4gOSkKICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CgoKICAgICAgICBuZXdWYWx1
ZSArPSB2YWx1ZTsKICAgICAgICBpZiAobmV3VmFsdWUgPCB2YWx1ZSkKICAgICAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CiAgICAgICAgdmFsdWUgPSBuZXdWYWx1ZTsKICAgIH0KCiAgICBpZiAoIWlz
SW5kZXgodmFsdWUpKQogICAgICAgIHJldHVybiBOdWxsb3B0OwogICAgcmV0dXJuIHZhbHVlOwp9
CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBPcHRpb25hbDx1aW50
MzJfdD4gcGFyc2VJbmRleChTdHJpbmdJbXBsJiBpbXBsKQp7CiAgICBpZiAoaW1wbC5pczhCaXQo
KSkKICAgICAgICByZXR1cm4gcGFyc2VJbmRleChpbXBsLmNoYXJhY3RlcnM4KCksIGltcGwubGVu
Z3RoKCkpOwogICAgcmV0dXJuIHBhcnNlSW5kZXgoaW1wbC5jaGFyYWN0ZXJzMTYoKSwgaW1wbC5s
ZW5ndGgoKSk7Cn0KCmNsYXNzIElkZW50aWZpZXIgewogICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVy
ZTsKcHVibGljOgogICAgSWRlbnRpZmllcigpIHsgfQogICAgZW51bSBFbXB0eUlkZW50aWZpZXJG
bGFnIHsgRW1wdHlJZGVudGlmaWVyIH07CiAgICBJZGVudGlmaWVyKEVtcHR5SWRlbnRpZmllckZs
YWcpIDogbV9zdHJpbmcoU3RyaW5nSW1wbDo6ZW1wdHkoKSkgeyAoKHZvaWQpMCk7IH0KCiAgICBj
b25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICBVbmlx
dWVkU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFVuaXF1ZWRT
dHJpbmdJbXBsKj4obV9zdHJpbmcuaW1wbCgpKTsgfQoKICAgIGludCBsZW5ndGgoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZy5sZW5ndGgoKTsgfQoKICAgIENTdHJpbmcgYXNjaWkoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZy5hc2NpaSgpOyB9CiAgICBDU3RyaW5nIHV0ZjgoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy51dGY4KCk7IH0KIyAxMTUgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuaCIKICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnND
b3VudD4KICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoVk0qLCBjb25zdCBjaGFyICgm
Y2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSk7CiAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFy
YWN0ZXJzQ291bnQ+CiAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKEV4ZWNTdGF0ZSos
IGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKTsKICAgIHN0YXRpYyBJ
ZGVudGlmaWVyIGZyb21TdHJpbmcoVk0qLCBjb25zdCBMQ2hhciosIGludCBsZW5ndGgpOwogICAg
c3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSosIGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0
aCk7CiAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNKiwgY29uc3QgU3RyaW5nJik7
CiAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKEV4ZWNTdGF0ZSosIEF0b21pY1N0cmlu
Z0ltcGwqKTsKICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoRXhlY1N0YXRlKiwgY29u
c3QgQXRvbWljU3RyaW5nJik7CiAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKEV4ZWNT
dGF0ZSosIGNvbnN0IFN0cmluZyYpOwogICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhF
eGVjU3RhdGUqLCBjb25zdCBjaGFyKik7CgogICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVpZChW
TSosIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVp
ZChFeGVjU3RhdGUqLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKICAgIHN0YXRpYyBJZGVudGlm
aWVyIGZyb21VaWQoY29uc3QgUHJpdmF0ZU5hbWUmKTsKCiAgICBzdGF0aWMgSWRlbnRpZmllciBj
cmVhdGVMQ2hhckZyb21VQ2hhcihWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSB7
IHJldHVybiBJZGVudGlmaWVyKHZtLCBhZGQ4KHZtLCBzLCBsZW5ndGgpKTsgfQoKICAgIHN0YXRp
YyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiwgdW5zaWduZWQgeSk7CiAgICBzdGF0aWMgSWRl
bnRpZmllciBmcm9tKEV4ZWNTdGF0ZSosIGludCB5KTsKICAgIHN0YXRpYyBJZGVudGlmaWVyIGZy
b20oRXhlY1N0YXRlKiwgZG91YmxlIHkpOwogICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShWTSos
IHVuc2lnbmVkIHkpOwogICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShWTSosIGludCB5KTsKICAg
IHN0YXRpYyBJZGVudGlmaWVyIGZyb20oVk0qLCBkb3VibGUgeSk7CgogICAgYm9vbCBpc051bGwo
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc051bGwoKTsgfQogICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOyB9CiAgICBib29sIGlzU3ltYm9sKCkg
Y29uc3QgeyByZXR1cm4gIWlzTnVsbCgpICYmIGltcGwoKS0+aXNTeW1ib2woKTsgfQoKICAgIGZy
aWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IElkZW50aWZpZXIm
KTsKICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IElk
ZW50aWZpZXImKTsKCiAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElkZW50aWZpZXIm
LCBjb25zdCBMQ2hhciopOwogICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVudGlm
aWVyJiwgY29uc3QgY2hhciopOwogICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgTENoYXIqKTsKICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IGNoYXIqKTsKCiAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBT
dHJpbmdJbXBsKiwgY29uc3QgTENoYXIqKTsKICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChj
b25zdCBTdHJpbmdJbXBsKmEsIGNvbnN0IGNoYXIqYikgeyByZXR1cm4gSWRlbnRpZmllcjo6ZXF1
YWwoYSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsgfTsKICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0
aCk7CiAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgVUNoYXIq
LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1w
bCogYSwgY29uc3QgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gOjplcXVhbChhLCBiKTsgfQoKCiAg
ICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChWTSosIGNvbnN0IGNoYXIqKTsKICAgIHN0YXRp
YyBSZWY8U3RyaW5nSW1wbD4gYWRkKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsKCiAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKCnByaXZhdGU6CiAgICBTdHJpbmcgbV9zdHJpbmc7
CgoKICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KICAgIElkZW50aWZpZXIo
Vk0qIHZtLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkgOiBtX3N0
cmluZyhhZGQodm0sIGNoYXJhY3RlcnMpKSB7ICgodm9pZCkwKTsgfQoKICAgIElkZW50aWZpZXIo
Vk0qIHZtLCBjb25zdCBMQ2hhciogcywgaW50IGxlbmd0aCkgOiBtX3N0cmluZyhhZGQodm0sIHMs
IGxlbmd0aCkpIHsgKCh2b2lkKTApOyB9CiAgICBJZGVudGlmaWVyKFZNKiB2bSwgY29uc3QgVUNo
YXIqIHMsIGludCBsZW5ndGgpIDogbV9zdHJpbmcoYWRkKHZtLCBzLCBsZW5ndGgpKSB7ICgodm9p
ZCkwKTsgfQogICAgSWRlbnRpZmllcihFeGVjU3RhdGUqLCBBdG9taWNTdHJpbmdJbXBsKik7CiAg
ICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgSWRlbnRp
ZmllcihWTSogdm0sIGNvbnN0IFN0cmluZyYgc3RyaW5nKSA6IG1fc3RyaW5nKGFkZCh2bSwgc3Ry
aW5nLmltcGwoKSkpIHsgKCh2b2lkKTApOyB9CiAgICBJZGVudGlmaWVyKFZNKiB2bSwgU3RyaW5n
SW1wbCogcmVwKSA6IG1fc3RyaW5nKGFkZCh2bSwgcmVwKSkgeyAoKHZvaWQpMCk7IH0KCiAgICBJ
ZGVudGlmaWVyKFN5bWJvbEltcGwmIHVpZCkKICAgICAgICA6IG1fc3RyaW5nKCZ1aWQpCiAgICB7
CiAgICB9CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogICAgaW5saW5lIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RhdGljIHVpbnQzMl90IHRvVUludDMyRnJv
bUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwg
Ym9vbCYgb2spOwoKICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IElkZW50aWZpZXImIGEsIGNv
bnN0IElkZW50aWZpZXImIGIpIHsgcmV0dXJuIGEubV9zdHJpbmcuaW1wbCgpID09IGIubV9zdHJp
bmcuaW1wbCgpOyB9CiAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBJZGVudGlmaWVyJiBhLCBj
b25zdCBMQ2hhciogYikgeyByZXR1cm4gZXF1YWwoYS5tX3N0cmluZy5pbXBsKCksIGIpOyB9Cgog
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkKFZNKiwg
Y29uc3QgVCosIGludCBsZW5ndGgpOwogICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGQ4KFZN
KiwgY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoKTsKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBp
bmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdGF0aWMgYm9vbCBjYW5V
c2VTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoVCk7CgogICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBh
ZGQoRXhlY1N0YXRlKiwgU3RyaW5nSW1wbCopOwogICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBh
ZGQoVk0qLCBTdHJpbmdJbXBsKik7CgoKCgoKICAgIF9fYXR0cmlidXRlKChfX25vcmV0dXJuX18p
KSBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShFeGVjU3RhdGUqKTsK
ICAgIF9fYXR0cmlidXRlKChfX25vcmV0dXJuX18pKSBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRB
dG9taWNTdHJpbmdUYWJsZShWTSopOwoKfTsKCnRlbXBsYXRlIDw+IGlubGluZSBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgSWRlbnRpZmllcjo6Y2FuVXNlU2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKExDaGFyKQp7CiAgICAoKHZvaWQpMCk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
dGVtcGxhdGUgPD4gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9v
bCBJZGVudGlmaWVyOjpjYW5Vc2VTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoVUNoYXIgYykKewogICAg
cmV0dXJuIChjIDw9IG1heFNpbmdsZUNoYXJhY3RlclN0cmluZyk7Cn0KCnRlbXBsYXRlIDx0eXBl
bmFtZSBUPgpSZWY8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkKFZNKiB2bSwgY29uc3QgVCog
cywgaW50IGxlbmd0aCkKewogICAgaWYgKGxlbmd0aCA9PSAxKSB7CiAgICAgICAgVCBjID0gc1sw
XTsKICAgICAgICBpZiAoY2FuVXNlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGMpKQogICAgICAgICAg
ICByZXR1cm4gKnZtLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKGMpOwog
ICAgfQogICAgaWYgKCFsZW5ndGgpCiAgICAgICAgcmV0dXJuICpTdHJpbmdJbXBsOjplbXB0eSgp
OwoKICAgIHJldHVybiAqQXRvbWljU3RyaW5nSW1wbDo6YWRkKHMsIGxlbmd0aCk7Cn0KCmlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYgYSwgY29uc3QgSWRlbnRpZmllciYg
YikKewogICAgcmV0dXJuIElkZW50aWZpZXI6OmVxdWFsKGEsIGIpOwp9CgppbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IElkZW50aWZpZXImIGEsIGNvbnN0IElkZW50aWZpZXImIGIpCnsKICAg
IHJldHVybiAhSWRlbnRpZmllcjo6ZXF1YWwoYSwgYik7Cn0KCmlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgSWRlbnRpZmllciYgYSwgY29uc3QgTENoYXIqIGIpCnsKICAgIHJldHVybiBJZGVu
dGlmaWVyOjplcXVhbChhLCBiKTsKfQoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVu
dGlmaWVyJiBhLCBjb25zdCBjaGFyKiBiKQp7CiAgICByZXR1cm4gSWRlbnRpZmllcjo6ZXF1YWwo
YSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsKfQoKaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBJZGVudGlmaWVyJiBhLCBjb25zdCBMQ2hhciogYikKewogICAgcmV0dXJu
ICFJZGVudGlmaWVyOjplcXVhbChhLCBiKTsKfQoKaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBJZGVudGlmaWVyJiBhLCBjb25zdCBjaGFyKiBiKQp7CiAgICByZXR1cm4gIUlkZW50aWZpZXI6
OmVxdWFsKGEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiKSk7Cn0KCmlubGluZSBi
b29sIElkZW50aWZpZXI6OmVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIHIsIGNvbnN0IExDaGFyKiBz
KQp7CiAgICByZXR1cm4gV1RGOjplcXVhbChyLCBzKTsKfQoKaW5saW5lIGJvb2wgSWRlbnRpZmll
cjo6ZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogciwgY29uc3QgTENoYXIqIHMsIHVuc2lnbmVkIGxl
bmd0aCkKewogICAgcmV0dXJuIFdURjo6ZXF1YWwociwgcywgbGVuZ3RoKTsKfQoKaW5saW5lIGJv
b2wgSWRlbnRpZmllcjo6ZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogciwgY29uc3QgVUNoYXIqIHMs
IHVuc2lnbmVkIGxlbmd0aCkKewogICAgcmV0dXJuIFdURjo6ZXF1YWwociwgcywgbGVuZ3RoKTsK
fQoKaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgT3B0aW9uYWw8dWlu
dDMyX3Q+IHBhcnNlSW5kZXgoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKewogICAgYXV0
byB1aWQgPSBpZGVudGlmaWVyLmltcGwoKTsKICAgIGlmICghdWlkKQogICAgICAgIHJldHVybiBO
dWxsb3B0OwogICAgaWYgKHVpZC0+aXNTeW1ib2woKSkKICAgICAgICByZXR1cm4gTnVsbG9wdDsK
ICAgIHJldHVybiBwYXJzZUluZGV4KCp1aWQpOwp9CgpKU1ZhbHVlIGlkZW50aWZpZXJUb0pTVmFs
dWUoVk0mLCBjb25zdCBJZGVudGlmaWVyJik7CgoKSlNWYWx1ZSBpZGVudGlmaWVyVG9TYWZlUHVi
bGljSlNWYWx1ZShWTSYsIGNvbnN0IElkZW50aWZpZXImKTsKCgoKCgpzdHJ1Y3QgSWRlbnRpZmll
clJlcEhhc2ggOiBQdHJIYXNoPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IHsKICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGtleSkgeyBy
ZXR1cm4ga2V5LT5leGlzdGluZ1N5bWJvbEF3YXJlSGFzaCgpOyB9CiAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChVbmlxdWVkU3RyaW5nSW1wbCoga2V5KSB7IHJldHVybiBrZXktPmV4aXN0aW5nU3lt
Ym9sQXdhcmVIYXNoKCk7IH0KfTsKCnN0cnVjdCBJZGVudGlmaWVyTWFwSW5kZXhIYXNoVHJhaXRz
IDogSGFzaFRyYWl0czxpbnQ+IHsKICAgIHN0YXRpYyBpbnQgZW1wdHlWYWx1ZSgpIHsgcmV0dXJu
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7IH0KICAgIHN0YXRpYyBjb25zdCBib29s
IGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKfTsKCnR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gSWRlbnRpZmllclNldDsKdHlwZWRl
ZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIGludCwgSWRlbnRpZmllclJlcEhh
c2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIElkZW50aWZpZXJNYXBJ
bmRleEhhc2hUcmFpdHM+IElkZW50aWZpZXJNYXA7CnR5cGVkZWYgSGFzaE1hcDxVbmlxdWVkU3Ry
aW5nSW1wbCosIGludCwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8VW5pcXVlZFN0cmlu
Z0ltcGwqPiwgSWRlbnRpZmllck1hcEluZGV4SGFzaFRyYWl0cz4gQm9ycm93ZWRJZGVudGlmaWVy
TWFwOwoKfQoKbmFtZXNwYWNlIFdURiB7Cgp0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRz
PEpTQzo6SWRlbnRpZmllcj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07Cgp9CiMgMzEg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmgiIDIKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBDb21tb25JZGVudGlmaWVyczsK
Y2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3I7CmNsYXNzIEJ5dGVjb2RlSW50cmluc2ljTm9kZTsKY2xh
c3MgUmVnaXN0ZXJJRDsKY2xhc3MgSWRlbnRpZmllcjsKCiNkZWZpbmUgSlNDX0NPTU1PTl9CWVRF
Q09ERV9JTlRSSU5TSUNfRlVOQ1RJT05TX0VBQ0hfTkFNRShtYWNybykgbWFjcm8oYXNzZXJ0KSBt
YWNybyhpc09iamVjdCkgbWFjcm8odHJ5R2V0QnlJZCkgbWFjcm8ocHV0QnlWYWxEaXJlY3QpIG1h
Y3JvKHRvU3RyaW5nKQoKCgoKCgojZGVmaW5lIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lD
X0NPTlNUQU5UU19FQUNIX05BTUUobWFjcm8pIG1hY3JvKHVuZGVmaW5lZCkgbWFjcm8oSW5maW5p
dHkpIG1hY3JvKGFycmF5SXRlcmF0aW9uS2luZEtleSkgbWFjcm8oYXJyYXlJdGVyYXRpb25LaW5k
VmFsdWUpIG1hY3JvKGFycmF5SXRlcmF0aW9uS2luZEtleVZhbHVlKSBtYWNybyhNQVhfU1RSSU5H
X0xFTkdUSCkgbWFjcm8ocHJvbWlzZVN0YXRlUGVuZGluZykgbWFjcm8ocHJvbWlzZVN0YXRlRnVs
ZmlsbGVkKSBtYWNybyhwcm9taXNlU3RhdGVSZWplY3RlZCkgbWFjcm8oc3ltYm9sSXRlcmF0b3Ip
IG1hY3JvKHN5bWJvbE1hdGNoKSBtYWNybyhzeW1ib2xSZXBsYWNlKSBtYWNybyhzeW1ib2xTZWFy
Y2gpIG1hY3JvKHN5bWJvbFNwZWNpZXMpIG1hY3JvKHN5bWJvbFNwbGl0KSBtYWNybyhHZW5lcmF0
b3JSZXN1bWVNb2RlTm9ybWFsKSBtYWNybyhHZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cpIG1hY3Jv
KEdlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4pIG1hY3JvKEdlbmVyYXRvclN0YXRlQ29tcGxldGVk
KSBtYWNybyhHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykKIyA3MiAiLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCIKY2xhc3MgQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSB7CiAgICBwcml2YXRlOiBCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5KGNvbnN0IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkmKSA9IGRlbGV0ZTsgQnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeSYgb3BlcmF0b3I9KGNvbnN0IEJ5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkmKSA9IGRlbGV0ZTs7CnB1YmxpYzoKICAgIGV4cGxpY2l0IEJ5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkoVk0mKTsKCiAgICB0eXBlZGVmIFJlZ2lzdGVySUQqIChCeXRlY29kZUludHJpbnNp
Y05vZGU6OiogRW1pdHRlclR5cGUpKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopOwoK
ICAgIEVtaXR0ZXJUeXBlIGxvb2t1cChjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CgojZGVmaW5l
IEpTQ19ERUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05TVEFOVF9HRU5FUkFUT1JTKG5hbWUp
IEpTVmFsdWUgbmFtZSAjI1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJik7CiAgICBKU1ZhbHVlIHVu
ZGVmaW5lZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJik7IEpTVmFsdWUgSW5maW5pdHlWYWx1ZShC
eXRlY29kZUdlbmVyYXRvciYpOyBKU1ZhbHVlIGFycmF5SXRlcmF0aW9uS2luZEtleVZhbHVlKEJ5
dGVjb2RlR2VuZXJhdG9yJik7IEpTVmFsdWUgYXJyYXlJdGVyYXRpb25LaW5kVmFsdWVWYWx1ZShC
eXRlY29kZUdlbmVyYXRvciYpOyBKU1ZhbHVlIGFycmF5SXRlcmF0aW9uS2luZEtleVZhbHVlVmFs
dWUoQnl0ZWNvZGVHZW5lcmF0b3ImKTsgSlNWYWx1ZSBNQVhfU1RSSU5HX0xFTkdUSFZhbHVlKEJ5
dGVjb2RlR2VuZXJhdG9yJik7IEpTVmFsdWUgcHJvbWlzZVN0YXRlUGVuZGluZ1ZhbHVlKEJ5dGVj
b2RlR2VuZXJhdG9yJik7IEpTVmFsdWUgcHJvbWlzZVN0YXRlRnVsZmlsbGVkVmFsdWUoQnl0ZWNv
ZGVHZW5lcmF0b3ImKTsgSlNWYWx1ZSBwcm9taXNlU3RhdGVSZWplY3RlZFZhbHVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJik7IEpTVmFsdWUgc3ltYm9sSXRlcmF0b3JWYWx1ZShCeXRlY29kZUdlbmVyYXRv
ciYpOyBKU1ZhbHVlIHN5bWJvbE1hdGNoVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImKTsgSlNWYWx1
ZSBzeW1ib2xSZXBsYWNlVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImKTsgSlNWYWx1ZSBzeW1ib2xT
ZWFyY2hWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYpOyBKU1ZhbHVlIHN5bWJvbFNwZWNpZXNWYWx1
ZShCeXRlY29kZUdlbmVyYXRvciYpOyBKU1ZhbHVlIHN5bWJvbFNwbGl0VmFsdWUoQnl0ZWNvZGVH
ZW5lcmF0b3ImKTsgSlNWYWx1ZSBHZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsVmFsdWUoQnl0ZWNv
ZGVHZW5lcmF0b3ImKTsgSlNWYWx1ZSBHZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3dWYWx1ZShCeXRl
Y29kZUdlbmVyYXRvciYpOyBKU1ZhbHVlIEdlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm5WYWx1ZShC
eXRlY29kZUdlbmVyYXRvciYpOyBKU1ZhbHVlIEdlbmVyYXRvclN0YXRlQ29tcGxldGVkVmFsdWUo
Qnl0ZWNvZGVHZW5lcmF0b3ImKTsgSlNWYWx1ZSBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZ1ZhbHVl
KEJ5dGVjb2RlR2VuZXJhdG9yJik7CiN1bmRlZiBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5T
SUNfQ09OU1RBTlRfR0VORVJBVE9SUwoKcHJpdmF0ZToKICAgIFZNJiBtX3ZtOwogICAgSGFzaE1h
cDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBFbWl0dGVyVHlwZSwgSWRlbnRpZmllclJlcEhh
c2g+IG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXA7CgojZGVmaW5lIEpTQ19ERUNMQVJFX0JZVEVDT0RF
X0lOVFJJTlNJQ19DT05TVEFOVF9HRU5FUkFUT1JTKG5hbWUpIFN0cm9uZzxVbmtub3duPiBtXyAj
I25hbWU7CiAgICBTdHJvbmc8VW5rbm93bj4gbV91bmRlZmluZWQ7IFN0cm9uZzxVbmtub3duPiBt
X0luZmluaXR5OyBTdHJvbmc8VW5rbm93bj4gbV9hcnJheUl0ZXJhdGlvbktpbmRLZXk7IFN0cm9u
ZzxVbmtub3duPiBtX2FycmF5SXRlcmF0aW9uS2luZFZhbHVlOyBTdHJvbmc8VW5rbm93bj4gbV9h
cnJheUl0ZXJhdGlvbktpbmRLZXlWYWx1ZTsgU3Ryb25nPFVua25vd24+IG1fTUFYX1NUUklOR19M
RU5HVEg7IFN0cm9uZzxVbmtub3duPiBtX3Byb21pc2VTdGF0ZVBlbmRpbmc7IFN0cm9uZzxVbmtu
b3duPiBtX3Byb21pc2VTdGF0ZUZ1bGZpbGxlZDsgU3Ryb25nPFVua25vd24+IG1fcHJvbWlzZVN0
YXRlUmVqZWN0ZWQ7IFN0cm9uZzxVbmtub3duPiBtX3N5bWJvbEl0ZXJhdG9yOyBTdHJvbmc8VW5r
bm93bj4gbV9zeW1ib2xNYXRjaDsgU3Ryb25nPFVua25vd24+IG1fc3ltYm9sUmVwbGFjZTsgU3Ry
b25nPFVua25vd24+IG1fc3ltYm9sU2VhcmNoOyBTdHJvbmc8VW5rbm93bj4gbV9zeW1ib2xTcGVj
aWVzOyBTdHJvbmc8VW5rbm93bj4gbV9zeW1ib2xTcGxpdDsgU3Ryb25nPFVua25vd24+IG1fR2Vu
ZXJhdG9yUmVzdW1lTW9kZU5vcm1hbDsgU3Ryb25nPFVua25vd24+IG1fR2VuZXJhdG9yUmVzdW1l
TW9kZVRocm93OyBTdHJvbmc8VW5rbm93bj4gbV9HZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuOyBT
dHJvbmc8VW5rbm93bj4gbV9HZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsgU3Ryb25nPFVua25vd24+
IG1fR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmc7CiN1bmRlZiBKU0NfREVDTEFSRV9CWVRFQ09ERV9J
TlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9SUwp9OwoKfQojIDI1ICIuLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIiAyCiMgMSAiLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIiAxCiMgMjYgIi4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgiIDIKCgoKCiNk
ZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUobWFjcm8pIG1h
Y3JvKEFuaW1hdGlvblRpbWVsaW5lKSBtYWNybyhBcnJheSkgbWFjcm8oQXJyYXlCdWZmZXIpIG1h
Y3JvKEFycmF5SXRlcmF0b3IpIG1hY3JvKEF1ZGlvKSBtYWNybyhCWVRFU19QRVJfRUxFTUVOVCkg
bWFjcm8oQm9vbGVhbikgbWFjcm8oQ29sbGF0b3IpIG1hY3JvKERhdGUpIG1hY3JvKERhdGVUaW1l
Rm9ybWF0KSBtYWNybyhEb2N1bWVudFRpbWVsaW5lKSBtYWNybyhFcnJvcikgbWFjcm8oRXZhbEVy
cm9yKSBtYWNybyhGdW5jdGlvbikgbWFjcm8oR2FtZXBhZCkgbWFjcm8oR2FtZXBhZEJ1dHRvbikg
bWFjcm8oR2FtZXBhZEV2ZW50KSBtYWNybyhHZW5lcmF0b3JGdW5jdGlvbikgbWFjcm8oSGVhZGVy
cykgbWFjcm8oSFRNTEF1ZGlvRWxlbWVudCkgbWFjcm8oSFRNTFNsb3RFbGVtZW50KSBtYWNybyhJ
REJDdXJzb3IpIG1hY3JvKElEQkN1cnNvcldpdGhWYWx1ZSkgbWFjcm8oSURCRGF0YWJhc2UpIG1h
Y3JvKElEQkZhY3RvcnkpIG1hY3JvKElEQkluZGV4KSBtYWNybyhJREJLZXlSYW5nZSkgbWFjcm8o
SURCT2JqZWN0U3RvcmUpIG1hY3JvKElEQk9wZW5EQlJlcXVlc3QpIG1hY3JvKElEQlJlcXVlc3Qp
IG1hY3JvKElEQlRyYW5zYWN0aW9uKSBtYWNybyhJREJWZXJzaW9uQ2hhbmdlRXZlbnQpIG1hY3Jv
KEluZmluaXR5KSBtYWNybyhJbnRsKSBtYWNybyhKU09OKSBtYWNybyhMb2FkZXIpIG1hY3JvKE1h
cCkgbWFjcm8oTWFwSXRlcmF0b3IpIG1hY3JvKE1hdGgpIG1hY3JvKE5hTikgbWFjcm8oTnVtYmVy
KSBtYWNybyhOdW1iZXJGb3JtYXQpIG1hY3JvKE9iamVjdCkgbWFjcm8oUHJvbWlzZSkgbWFjcm8o
UHJveHkpIG1hY3JvKFJhbmdlRXJyb3IpIG1hY3JvKFJlZmVyZW5jZUVycm9yKSBtYWNybyhSZWZs
ZWN0KSBtYWNybyhSZWdFeHApIG1hY3JvKFJlc3BvbnNlKSBtYWNybyhSZXF1ZXN0KSBtYWNybyhT
ZXQpIG1hY3JvKFNldEl0ZXJhdG9yKSBtYWNybyhTaGFkb3dSb290KSBtYWNybyhTdHJpbmcpIG1h
Y3JvKFN5bWJvbCkgbWFjcm8oU3ludGF4RXJyb3IpIG1hY3JvKFR5cGVFcnJvcikgbWFjcm8oVVJJ
RXJyb3IpIG1hY3JvKFVUQykgbWFjcm8oV2Vha01hcCkgbWFjcm8oV2Vha1NldCkgbWFjcm8oV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dCkgbWFjcm8oV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCkgbWFjcm8o
V2ViU29ja2V0KSBtYWNybyhfX2RlZmluZUdldHRlcl9fKSBtYWNybyhfX2RlZmluZVNldHRlcl9f
KSBtYWNybyhfX2xvb2t1cEdldHRlcl9fKSBtYWNybyhfX2xvb2t1cFNldHRlcl9fKSBtYWNybyhh
ZGQpIG1hY3JvKGFkZGl0aW9uYWxKZXR0aXNvblJlYXNvbikgbWFjcm8oYW5vbnltb3VzKSBtYWNy
byhhcmd1bWVudHMpIG1hY3JvKGFzKSBtYWNybyhhc3NpZ24pIG1hY3JvKGJhY2spIG1hY3JvKGJp
bmQpIG1hY3JvKGJsdXIpIG1hY3JvKGJ1ZmZlcikgbWFjcm8oYnl0ZUxlbmd0aCkgbWFjcm8oYnl0
ZU9mZnNldCkgbWFjcm8oYnl0ZWNvZGUpIG1hY3JvKGJ5dGVjb2RlSW5kZXgpIG1hY3JvKGJ5dGVj
b2RlcykgbWFjcm8oYnl0ZWNvZGVzSUQpIG1hY3JvKGNhbGVuZGFyKSBtYWNybyhjYWxsZWUpIG1h
Y3JvKGNhbGxlcikgbWFjcm8oY2FzZUZpcnN0KSBtYWNybyhjbGVhcikgbWFjcm8oY2xvc2UpIG1h
Y3JvKGNsb3NlZCkgbWFjcm8oY29sbGF0aW9uKSBtYWNybyhjb2x1bW4pIG1hY3JvKGNvbXBpbGF0
aW9uS2luZCkgbWFjcm8oY29tcGlsYXRpb25zKSBtYWNybyhjb21waWxlKSBtYWNybyhjb25maWd1
cmFibGUpIG1hY3JvKGNvbnN0cnVjdG9yKSBtYWNybyhjb3VudCkgbWFjcm8oY291bnRlcnMpIG1h
Y3JvKGRheSkgbWFjcm8oZGVmaW5lUHJvcGVydHkpIG1hY3JvKGRlc2NyaXB0aW9uKSBtYWNybyhk
ZXNjcmlwdGlvbnMpIG1hY3JvKGRpc3BsYXlOYW1lKSBtYWNybyhkb2N1bWVudCkgbWFjcm8oZG9u
ZSkgbWFjcm8oZW50cmllcykgbWFjcm8oZW51bWVyYWJsZSkgbWFjcm8oZXJhKSBtYWNybyhldmFs
KSBtYWNybyhleGVjKSBtYWNybyhleGVjdXRpb25Db3VudCkgbWFjcm8oZXhpdEtpbmQpIG1hY3Jv
KGZldGNoKSBtYWNybyhmbGFncykgbWFjcm8oZm9jdXMpIG1hY3JvKGZvckVhY2gpIG1hY3JvKGZv
cm1hdE1hdGNoZXIpIG1hY3JvKGZvcndhcmQpIG1hY3JvKGZyYW1lcykgbWFjcm8oZnJvbSkgbWFj
cm8oZnJvbUNoYXJDb2RlKSBtYWNybyhnZXQpIG1hY3JvKGdsb2JhbCkgbWFjcm8oZ28pIG1hY3Jv
KGhhcykgbWFjcm8oaGFzT3duUHJvcGVydHkpIG1hY3JvKGhhc2gpIG1hY3JvKGhlYWRlcikgbWFj
cm8oaG91cikgbWFjcm8oaG91cjEyKSBtYWNybyhocmVmKSBtYWNybyhpZCkgbWFjcm8oaWdub3Jl
Q2FzZSkgbWFjcm8oaWdub3JlUHVuY3R1YXRpb24pIG1hY3JvKGluZGV4KSBtYWNybyhpbmRleGVk
REIpIG1hY3JvKGluZmVycmVkTmFtZSkgbWFjcm8oaW5wdXQpIG1hY3JvKGluc3RydWN0aW9uQ291
bnQpIG1hY3JvKGlzQXJyYXkpIG1hY3JvKGlzRW5hYmxlZCkgbWFjcm8oaXNQcm90b3R5cGVPZikg
bWFjcm8oaXNWaWV3KSBtYWNybyhpc1dhdGNocG9pbnQpIG1hY3JvKGpldHRpc29uUmVhc29uKSBt
YWNybyhqb2luKSBtYWNybyhrZXlzKSBtYWNybyhsYXN0SW5kZXgpIG1hY3JvKGxlbmd0aCkgbWFj
cm8obGluZSkgbWFjcm8obG9jYWxlKSBtYWNybyhsb2NhbGVNYXRjaGVyKSBtYWNybyhsb2NhdGlv
bikgbWFjcm8obWVzc2FnZSkgbWFjcm8obWludXRlKSBtYWNybyhtb250aCkgbWFjcm8obXVsdGls
aW5lKSBtYWNybyhuYW1lKSBtYWNybyhuZXh0KSBtYWNybyhub3cpIG1hY3JvKG51bUlubGluZWRD
YWxscykgbWFjcm8obnVtSW5saW5lZEdldEJ5SWRzKSBtYWNybyhudW1JbmxpbmVkUHV0QnlJZHMp
IG1hY3JvKG51bWJlcmluZ1N5c3RlbSkgbWFjcm8obnVtZXJpYykgbWFjcm8ob2YpIG1hY3JvKG9w
Y29kZSkgbWFjcm8ob3BlbmVyKSBtYWNybyhvcmlnaW4pIG1hY3JvKG9zckV4aXRTaXRlcykgbWFj
cm8ob3NyRXhpdHMpIG1hY3JvKHBhcmVudCkgbWFjcm8ocGFyc2UpIG1hY3JvKHBhcnNlSW50KSBt
YWNybyhwb3N0TWVzc2FnZSkgbWFjcm8ocHJvZmlsZWRCeXRlY29kZXMpIG1hY3JvKHByb3BlcnR5
SXNFbnVtZXJhYmxlKSBtYWNybyhwcm90b3R5cGUpIG1hY3JvKHJhdykgbWFjcm8ocmVsb2FkKSBt
YWNybyhyZXBsYWNlKSBtYWNybyhyZXNvbHZlKSBtYWNybyhzZWNvbmQpIG1hY3JvKHNlbGYpIG1h
Y3JvKHNlbnNpdGl2aXR5KSBtYWNybyhzZXQpIG1hY3JvKHNob3dNb2RhbERpYWxvZykgbWFjcm8o
c2l6ZSkgbWFjcm8oc2xpY2UpIG1hY3JvKHNvdXJjZSkgbWFjcm8oc291cmNlQ29kZSkgbWFjcm8o
c291cmNlVVJMKSBtYWNybyhzdGFjaykgbWFjcm8oc3RpY2t5KSBtYWNybyhzdWJhcnJheSkgbWFj
cm8odGFyZ2V0KSBtYWNybyh0ZXN0KSBtYWNybyh0aGVuKSBtYWNybyh0aW1lWm9uZSkgbWFjcm8o
dGltZVpvbmVOYW1lKSBtYWNybyh0b0V4cG9uZW50aWFsKSBtYWNybyh0b0ZpeGVkKSBtYWNybyh0
b0lTT1N0cmluZykgbWFjcm8odG9KU09OKSBtYWNybyh0b0xvY2FsZVN0cmluZykgbWFjcm8odG9Q
cmVjaXNpb24pIG1hY3JvKHRvU3RyaW5nKSBtYWNybyh0b3ApIG1hY3JvKHVuaWNvZGUpIG1hY3Jv
KHVzYWdlKSBtYWNybyh2YWx1ZSkgbWFjcm8odmFsdWVPZikgbWFjcm8odmFsdWVzKSBtYWNybyh3
ZWJraXQpIG1hY3JvKHdlYmtpdElEQkN1cnNvcikgbWFjcm8od2Via2l0SURCRGF0YWJhc2UpIG1h
Y3JvKHdlYmtpdElEQkZhY3RvcnkpIG1hY3JvKHdlYmtpdElEQkluZGV4KSBtYWNybyh3ZWJraXRJ
REJLZXlSYW5nZSkgbWFjcm8od2Via2l0SURCT2JqZWN0U3RvcmUpIG1hY3JvKHdlYmtpdElEQlJl
cXVlc3QpIG1hY3JvKHdlYmtpdElEQlRyYW5zYWN0aW9uKSBtYWNybyh3ZWJraXRJbmRleGVkREIp
IG1hY3JvKHdlZWtkYXkpIG1hY3JvKHdpbmRvdykgbWFjcm8od3JpdGFibGUpIG1hY3JvKHllYXIp
CiMgMjYyICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oIgojZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3Jv
KSBtYWNybyhicmVhaykgbWFjcm8oY2FzZSkgbWFjcm8oY2F0Y2gpIG1hY3JvKGNsYXNzKSBtYWNy
byhjb25zdCkgbWFjcm8oY29udGludWUpIG1hY3JvKGRlYnVnZ2VyKSBtYWNybyhkZWZhdWx0KSBt
YWNybyhkZWxldGUpIG1hY3JvKGRvKSBtYWNybyhlbHNlKSBtYWNybyhlbnVtKSBtYWNybyhleHBv
cnQpIG1hY3JvKGV4dGVuZHMpIG1hY3JvKGZhbHNlKSBtYWNybyhmaW5hbGx5KSBtYWNybyhmb3Ip
IG1hY3JvKGZ1bmN0aW9uKSBtYWNybyhpZikgbWFjcm8oaW1wbGVtZW50cykgbWFjcm8oaW1wb3J0
KSBtYWNybyhpbikgbWFjcm8oaW5zdGFuY2VvZikgbWFjcm8oaW50ZXJmYWNlKSBtYWNybyhsZXQp
IG1hY3JvKG5ldykgbWFjcm8obnVsbCkgbWFjcm8ocGFja2FnZSkgbWFjcm8ocHJpdmF0ZSkgbWFj
cm8ocHJvdGVjdGVkKSBtYWNybyhwdWJsaWMpIG1hY3JvKHJldHVybikgbWFjcm8oc3RhdGljKSBt
YWNybyhzdXBlcikgbWFjcm8oc3dpdGNoKSBtYWNybyh0aGlzKSBtYWNybyh0aHJvdykgbWFjcm8o
dHJ1ZSkgbWFjcm8odHJ5KSBtYWNybyh0eXBlb2YpIG1hY3JvKHVuZGVmaW5lZCkgbWFjcm8odmFy
KSBtYWNybyh2b2lkKSBtYWNybyh3aGlsZSkgbWFjcm8od2l0aCkgbWFjcm8oeWllbGQpCiMgMzEw
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
IgojZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05f
U1lNQk9MX05PVF9JTVBMRU1FTlRFRF9ZRVQobWFjcm8pIG1hY3JvKGlzQ29uY2F0U3ByZWFkYWJs
ZSkgbWFjcm8ocmVwbGFjZSkKCgoKI2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklF
UlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChtYWNybykgbWFjcm8oaGFzSW5zdGFuY2UpIG1hY3Jv
KGl0ZXJhdG9yKSBtYWNybyhtYXRjaCkgbWFjcm8ocmVwbGFjZSkgbWFjcm8oc2VhcmNoKSBtYWNy
byhzcGVjaWVzKSBtYWNybyhzcGxpdCkgbWFjcm8odG9QcmltaXRpdmUpIG1hY3JvKHRvU3RyaW5n
VGFnKSBtYWNybyh1bnNjb3BhYmxlcykKIyAzMjYgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgiCiNkZWZpbmUgSlNDX0NPTU1PTl9QUklWQVRF
X0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShtYWNybykgSlNDX0NPTU1PTl9CWVRFQ09E
RV9JTlRSSU5TSUNfRlVOQ1RJT05TX0VBQ0hfTkFNRShtYWNybykgSlNDX0NPTU1PTl9CWVRFQ09E
RV9JTlRSSU5TSUNfQ09OU1RBTlRTX0VBQ0hfTkFNRShtYWNybykgbWFjcm8oaXRlcmF0ZWRPYmpl
Y3QpIG1hY3JvKGFycmF5SXRlcmF0b3JOZXh0SW5kZXgpIG1hY3JvKGFycmF5SXRlcmF0aW9uS2lu
ZCkgbWFjcm8oY2hhckNvZGVBdCkgbWFjcm8oaXRlcmF0ZWRTdHJpbmcpIG1hY3JvKHN0cmluZ0l0
ZXJhdG9yTmV4dEluZGV4KSBtYWNybyhwcm9taXNlKSBtYWNybyhmdWxmaWxsbWVudEhhbmRsZXIp
IG1hY3JvKHJlamVjdGlvbkhhbmRsZXIpIG1hY3JvKGluZGV4KSBtYWNybyh2YWx1ZXMpIG1hY3Jv
KGRlZmVycmVkKSBtYWNybyhjb3VudGRvd25Ib2xkZXIpIG1hY3JvKE9iamVjdCkgbWFjcm8ob3du
RW51bWVyYWJsZVByb3BlcnR5S2V5cykgbWFjcm8oTnVtYmVyKSBtYWNybyhBcnJheSkgbWFjcm8o
U3RyaW5nKSBtYWNybyhSZWdFeHApIG1hY3JvKE1hcCkgbWFjcm8oUHJvbWlzZSkgbWFjcm8oUmVm
bGVjdCkgbWFjcm8oSW50ZXJuYWxQcm9taXNlKSBtYWNybyhhYnMpIG1hY3JvKGZsb29yKSBtYWNy
byh0cnVuYykgbWFjcm8oaXNGaW5pdGUpIG1hY3JvKGlzTmFOKSBtYWNybyhjcmVhdGUpIG1hY3Jv
KGRlZmluZVByb3BlcnR5KSBtYWNybyhnZXRQcm90b3R5cGVPZikgbWFjcm8oZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKSBtYWNybyhnZXRPd25Qcm9wZXJ0eU5hbWVzKSBtYWNybyhvd25LZXlzKSBt
YWNybyhFcnJvcikgbWFjcm8oUmFuZ2VFcnJvcikgbWFjcm8oVHlwZUVycm9yKSBtYWNybyh0eXBl
ZEFycmF5TGVuZ3RoKSBtYWNybyh0eXBlZEFycmF5U29ydCkgbWFjcm8odHlwZWRBcnJheUdldE9y
aWdpbmFsQ29uc3RydWN0b3IpIG1hY3JvKEJ1aWx0aW5Mb2cpIG1hY3JvKGhvbWVPYmplY3QpIG1h
Y3JvKGdldFRlbXBsYXRlT2JqZWN0KSBtYWNybyhlbnF1ZXVlSm9iKSBtYWNybyhoYW5kbGVyKSBt
YWNybyhwcm9taXNlU3RhdGUpIG1hY3JvKHByb21pc2VGdWxmaWxsUmVhY3Rpb25zKSBtYWNybyhw
cm9taXNlUmVqZWN0UmVhY3Rpb25zKSBtYWNybyhwcm9taXNlUmVzdWx0KSBtYWNybyhwdXNoKSBt
YWNybyhyZXBlYXRDaGFyYWN0ZXIpIG1hY3JvKGNhcGFiaWxpdGllcykgbWFjcm8oc3RhckRlZmF1
bHQpIG1hY3JvKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbikgbWFjcm8oZ2V0KSBtYWNybyhzZXQp
IG1hY3JvKHNoaWZ0KSBtYWNybyhhbGxvY2F0ZVR5cGVkQXJyYXkpIG1hY3JvKEludDhBcnJheSkg
bWFjcm8oSW50MTZBcnJheSkgbWFjcm8oSW50MzJBcnJheSkgbWFjcm8oVWludDhBcnJheSkgbWFj
cm8oVWludDhDbGFtcGVkQXJyYXkpIG1hY3JvKFVpbnQxNkFycmF5KSBtYWNybyhVaW50MzJBcnJh
eSkgbWFjcm8oRmxvYXQzMkFycmF5KSBtYWNybyhGbG9hdDY0QXJyYXkpIG1hY3JvKGV4ZWMpIG1h
Y3JvKGdlbmVyYXRvcikgbWFjcm8oZ2VuZXJhdG9yTmV4dCkgbWFjcm8oZ2VuZXJhdG9yU3RhdGUp
IG1hY3JvKGdlbmVyYXRvckZyYW1lKSBtYWNybyhnZW5lcmF0b3JWYWx1ZSkgbWFjcm8oZ2VuZXJh
dG9yVGhpcykgbWFjcm8oZ2VuZXJhdG9yUmVzdW1lTW9kZSkgbWFjcm8oQ29sbGF0b3IpIG1hY3Jv
KERhdGVUaW1lRm9ybWF0KSBtYWNybyhOdW1iZXJGb3JtYXQpIG1hY3JvKGludGxTdWJzdGl0dXRl
VmFsdWUpIG1hY3JvKHRoaXNUaW1lVmFsdWUpIG1hY3JvKHRoaXNOdW1iZXJWYWx1ZSkgbWFjcm8o
bmV3VGFyZ2V0TG9jYWwpIG1hY3JvKGRlcml2ZWRDb25zdHJ1Y3RvcikgbWFjcm8oaXNCb3VuZEZ1
bmN0aW9uKSBtYWNybyhoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24pIG1hY3JvKGluc3RhbmNlT2Yp
IG1hY3JvKGlzQXJyYXkpIG1hY3JvKGlzQXJyYXlDb25zdHJ1Y3RvcikgbWFjcm8oaXNDb25zdHJ1
Y3RvcikgbWFjcm8oaXNSZWdFeHBPYmplY3QpIG1hY3JvKHByZWRpY3RGaW5hbExlbmd0aEZyb21B
cmd1bXVudHMpIG1hY3JvKHByaW50KSBtYWNybyhpc1NldCkgbWFjcm8oaXNNYXApIG1hY3JvKHJl
Z0V4cENyZWF0ZSkgbWFjcm8oU2V0SXRlcmF0b3IpIG1hY3JvKHNldEl0ZXJhdG9yTmV4dCkgbWFj
cm8ocmVwbGFjZVVzaW5nUmVnRXhwKSBtYWNybyhyZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2gpIG1h
Y3JvKE1hcEl0ZXJhdG9yKSBtYWNybyhtYXBJdGVyYXRvck5leHQpIG1hY3JvKHJlZ0V4cEJ1aWx0
aW5FeGVjKSBtYWNybyhyZWdFeHBNYXRjaEZhc3QpIG1hY3JvKHJlZ0V4cFByb3RvRmxhZ3NHZXR0
ZXIpIG1hY3JvKHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyKSBtYWNybyhyZWdFeHBQcm90b0lnbm9y
ZUNhc2VHZXR0ZXIpIG1hY3JvKHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyKSBtYWNybyhyZWdF
eHBQcm90b1NvdXJjZUdldHRlcikgbWFjcm8ocmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIpIG1hY3Jv
KHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcikgbWFjcm8ocmVnRXhwUHJvdG90eXBlU3ltYm9sUmVw
bGFjZSkgbWFjcm8ocmVnRXhwUmVwbGFjZUZhc3QpIG1hY3JvKHJlZ0V4cFNlYXJjaEZhc3QpIG1h
Y3JvKHJlZ0V4cFNwbGl0RmFzdCkgbWFjcm8ocmVnRXhwVGVzdEZhc3QpIG1hY3JvKHN0cmluZ0lu
Y2x1ZGVzSW50ZXJuYWwpIG1hY3JvKHN0cmluZ1NwbGl0RmFzdCkgbWFjcm8oc3RyaW5nU3Vic3Ry
SW50ZXJuYWwpCiMgNDQ4ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oIgpuYW1lc3BhY2UgSlNDIHsKCiAgICBjbGFzcyBCdWlsdGluTmFtZXM7
CgogICAgY2xhc3MgQ29tbW9uSWRlbnRpZmllcnMgewogICAgICAgIHByaXZhdGU6IENvbW1vbklk
ZW50aWZpZXJzKGNvbnN0IENvbW1vbklkZW50aWZpZXJzJikgPSBkZWxldGU7IENvbW1vbklkZW50
aWZpZXJzJiBvcGVyYXRvcj0oY29uc3QgQ29tbW9uSWRlbnRpZmllcnMmKSA9IGRlbGV0ZTs7IHB1
YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2
b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXpl
KTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsg
fSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RN
YWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpm
YXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lk
KiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSBwcml2YXRlOiB0eXBl
ZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvOwogICAg
cHJpdmF0ZToKICAgICAgICBDb21tb25JZGVudGlmaWVycyhWTSopOwogICAgICAgIH5Db21tb25J
ZGVudGlmaWVycygpOwogICAgICAgIGZyaWVuZCBjbGFzcyBWTTsKCiAgICBwdWJsaWM6CiAgICAg
ICAgY29uc3QgQnVpbHRpbk5hbWVzJiBidWlsdGluTmFtZXMoKSBjb25zdCB7IHJldHVybiAqbV9i
dWlsdGluTmFtZXM7IH0KICAgICAgICBjb25zdCBJZGVudGlmaWVyIG51bGxJZGVudGlmaWVyOwog
ICAgICAgIGNvbnN0IElkZW50aWZpZXIgZW1wdHlJZGVudGlmaWVyOwogICAgICAgIGNvbnN0IElk
ZW50aWZpZXIgdW5kZXJzY29yZVByb3RvOwogICAgICAgIGNvbnN0IElkZW50aWZpZXIgdGhpc0lk
ZW50aWZpZXI7CiAgICAgICAgY29uc3QgSWRlbnRpZmllciB1c2VTdHJpY3RJZGVudGlmaWVyOwog
ICAgICAgIGNvbnN0IElkZW50aWZpZXIgdGltZXNJZGVudGlmaWVyOwogICAgcHJpdmF0ZToKICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QnVpbHRpbk5hbWVzPiBtX2J1aWx0aW5OYW1lczsKCiAgICBw
dWJsaWM6CgojZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfS0VZV09SRF9OQU1FX0dMT0JB
TChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUgIyNLZXl3b3JkOwogICAgICAgIGNvbnN0IElk
ZW50aWZpZXIgYnJlYWtLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIGNhc2VLZXl3b3JkOyBjb25z
dCBJZGVudGlmaWVyIGNhdGNoS2V5d29yZDsgY29uc3QgSWRlbnRpZmllciBjbGFzc0tleXdvcmQ7
IGNvbnN0IElkZW50aWZpZXIgY29uc3RLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIGNvbnRpbnVl
S2V5d29yZDsgY29uc3QgSWRlbnRpZmllciBkZWJ1Z2dlcktleXdvcmQ7IGNvbnN0IElkZW50aWZp
ZXIgZGVmYXVsdEtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgZGVsZXRlS2V5d29yZDsgY29uc3Qg
SWRlbnRpZmllciBkb0tleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgZWxzZUtleXdvcmQ7IGNvbnN0
IElkZW50aWZpZXIgZW51bUtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgZXhwb3J0S2V5d29yZDsg
Y29uc3QgSWRlbnRpZmllciBleHRlbmRzS2V5d29yZDsgY29uc3QgSWRlbnRpZmllciBmYWxzZUtl
eXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgZmluYWxseUtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIg
Zm9yS2V5d29yZDsgY29uc3QgSWRlbnRpZmllciBmdW5jdGlvbktleXdvcmQ7IGNvbnN0IElkZW50
aWZpZXIgaWZLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIGltcGxlbWVudHNLZXl3b3JkOyBjb25z
dCBJZGVudGlmaWVyIGltcG9ydEtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgaW5LZXl3b3JkOyBj
b25zdCBJZGVudGlmaWVyIGluc3RhbmNlb2ZLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIGludGVy
ZmFjZUtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgbGV0S2V5d29yZDsgY29uc3QgSWRlbnRpZmll
ciBuZXdLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIG51bGxLZXl3b3JkOyBjb25zdCBJZGVudGlm
aWVyIHBhY2thZ2VLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIHByaXZhdGVLZXl3b3JkOyBjb25z
dCBJZGVudGlmaWVyIHByb3RlY3RlZEtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgcHVibGljS2V5
d29yZDsgY29uc3QgSWRlbnRpZmllciByZXR1cm5LZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIHN0
YXRpY0tleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgc3VwZXJLZXl3b3JkOyBjb25zdCBJZGVudGlm
aWVyIHN3aXRjaEtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgdGhpc0tleXdvcmQ7IGNvbnN0IElk
ZW50aWZpZXIgdGhyb3dLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIHRydWVLZXl3b3JkOyBjb25z
dCBJZGVudGlmaWVyIHRyeUtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgdHlwZW9mS2V5d29yZDsg
Y29uc3QgSWRlbnRpZmllciB1bmRlZmluZWRLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIHZhcktl
eXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgdm9pZEtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgd2hp
bGVLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIHdpdGhLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVy
IHlpZWxkS2V5d29yZDsKI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfS0VZV09SRF9OQU1F
X0dMT0JBTAoKI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xP
QkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZTsKICAgICAgICBjb25zdCBJZGVudGlmaWVy
IEFuaW1hdGlvblRpbWVsaW5lOyBjb25zdCBJZGVudGlmaWVyIEFycmF5OyBjb25zdCBJZGVudGlm
aWVyIEFycmF5QnVmZmVyOyBjb25zdCBJZGVudGlmaWVyIEFycmF5SXRlcmF0b3I7IGNvbnN0IElk
ZW50aWZpZXIgQXVkaW87IGNvbnN0IElkZW50aWZpZXIgQllURVNfUEVSX0VMRU1FTlQ7IGNvbnN0
IElkZW50aWZpZXIgQm9vbGVhbjsgY29uc3QgSWRlbnRpZmllciBDb2xsYXRvcjsgY29uc3QgSWRl
bnRpZmllciBEYXRlOyBjb25zdCBJZGVudGlmaWVyIERhdGVUaW1lRm9ybWF0OyBjb25zdCBJZGVu
dGlmaWVyIERvY3VtZW50VGltZWxpbmU7IGNvbnN0IElkZW50aWZpZXIgRXJyb3I7IGNvbnN0IElk
ZW50aWZpZXIgRXZhbEVycm9yOyBjb25zdCBJZGVudGlmaWVyIEZ1bmN0aW9uOyBjb25zdCBJZGVu
dGlmaWVyIEdhbWVwYWQ7IGNvbnN0IElkZW50aWZpZXIgR2FtZXBhZEJ1dHRvbjsgY29uc3QgSWRl
bnRpZmllciBHYW1lcGFkRXZlbnQ7IGNvbnN0IElkZW50aWZpZXIgR2VuZXJhdG9yRnVuY3Rpb247
IGNvbnN0IElkZW50aWZpZXIgSGVhZGVyczsgY29uc3QgSWRlbnRpZmllciBIVE1MQXVkaW9FbGVt
ZW50OyBjb25zdCBJZGVudGlmaWVyIEhUTUxTbG90RWxlbWVudDsgY29uc3QgSWRlbnRpZmllciBJ
REJDdXJzb3I7IGNvbnN0IElkZW50aWZpZXIgSURCQ3Vyc29yV2l0aFZhbHVlOyBjb25zdCBJZGVu
dGlmaWVyIElEQkRhdGFiYXNlOyBjb25zdCBJZGVudGlmaWVyIElEQkZhY3Rvcnk7IGNvbnN0IElk
ZW50aWZpZXIgSURCSW5kZXg7IGNvbnN0IElkZW50aWZpZXIgSURCS2V5UmFuZ2U7IGNvbnN0IElk
ZW50aWZpZXIgSURCT2JqZWN0U3RvcmU7IGNvbnN0IElkZW50aWZpZXIgSURCT3BlbkRCUmVxdWVz
dDsgY29uc3QgSWRlbnRpZmllciBJREJSZXF1ZXN0OyBjb25zdCBJZGVudGlmaWVyIElEQlRyYW5z
YWN0aW9uOyBjb25zdCBJZGVudGlmaWVyIElEQlZlcnNpb25DaGFuZ2VFdmVudDsgY29uc3QgSWRl
bnRpZmllciBJbmZpbml0eTsgY29uc3QgSWRlbnRpZmllciBJbnRsOyBjb25zdCBJZGVudGlmaWVy
IEpTT047IGNvbnN0IElkZW50aWZpZXIgTG9hZGVyOyBjb25zdCBJZGVudGlmaWVyIE1hcDsgY29u
c3QgSWRlbnRpZmllciBNYXBJdGVyYXRvcjsgY29uc3QgSWRlbnRpZmllciBNYXRoOyBjb25zdCBJ
ZGVudGlmaWVyIE5hTjsgY29uc3QgSWRlbnRpZmllciBOdW1iZXI7IGNvbnN0IElkZW50aWZpZXIg
TnVtYmVyRm9ybWF0OyBjb25zdCBJZGVudGlmaWVyIE9iamVjdDsgY29uc3QgSWRlbnRpZmllciBQ
cm9taXNlOyBjb25zdCBJZGVudGlmaWVyIFByb3h5OyBjb25zdCBJZGVudGlmaWVyIFJhbmdlRXJy
b3I7IGNvbnN0IElkZW50aWZpZXIgUmVmZXJlbmNlRXJyb3I7IGNvbnN0IElkZW50aWZpZXIgUmVm
bGVjdDsgY29uc3QgSWRlbnRpZmllciBSZWdFeHA7IGNvbnN0IElkZW50aWZpZXIgUmVzcG9uc2U7
IGNvbnN0IElkZW50aWZpZXIgUmVxdWVzdDsgY29uc3QgSWRlbnRpZmllciBTZXQ7IGNvbnN0IElk
ZW50aWZpZXIgU2V0SXRlcmF0b3I7IGNvbnN0IElkZW50aWZpZXIgU2hhZG93Um9vdDsgY29uc3Qg
SWRlbnRpZmllciBTdHJpbmc7IGNvbnN0IElkZW50aWZpZXIgU3ltYm9sOyBjb25zdCBJZGVudGlm
aWVyIFN5bnRheEVycm9yOyBjb25zdCBJZGVudGlmaWVyIFR5cGVFcnJvcjsgY29uc3QgSWRlbnRp
ZmllciBVUklFcnJvcjsgY29uc3QgSWRlbnRpZmllciBVVEM7IGNvbnN0IElkZW50aWZpZXIgV2Vh
a01hcDsgY29uc3QgSWRlbnRpZmllciBXZWFrU2V0OyBjb25zdCBJZGVudGlmaWVyIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ7IGNvbnN0IElkZW50aWZpZXIgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDsg
Y29uc3QgSWRlbnRpZmllciBXZWJTb2NrZXQ7IGNvbnN0IElkZW50aWZpZXIgX19kZWZpbmVHZXR0
ZXJfXzsgY29uc3QgSWRlbnRpZmllciBfX2RlZmluZVNldHRlcl9fOyBjb25zdCBJZGVudGlmaWVy
IF9fbG9va3VwR2V0dGVyX187IGNvbnN0IElkZW50aWZpZXIgX19sb29rdXBTZXR0ZXJfXzsgY29u
c3QgSWRlbnRpZmllciBhZGQ7IGNvbnN0IElkZW50aWZpZXIgYWRkaXRpb25hbEpldHRpc29uUmVh
c29uOyBjb25zdCBJZGVudGlmaWVyIGFub255bW91czsgY29uc3QgSWRlbnRpZmllciBhcmd1bWVu
dHM7IGNvbnN0IElkZW50aWZpZXIgYXM7IGNvbnN0IElkZW50aWZpZXIgYXNzaWduOyBjb25zdCBJ
ZGVudGlmaWVyIGJhY2s7IGNvbnN0IElkZW50aWZpZXIgYmluZDsgY29uc3QgSWRlbnRpZmllciBi
bHVyOyBjb25zdCBJZGVudGlmaWVyIGJ1ZmZlcjsgY29uc3QgSWRlbnRpZmllciBieXRlTGVuZ3Ro
OyBjb25zdCBJZGVudGlmaWVyIGJ5dGVPZmZzZXQ7IGNvbnN0IElkZW50aWZpZXIgYnl0ZWNvZGU7
IGNvbnN0IElkZW50aWZpZXIgYnl0ZWNvZGVJbmRleDsgY29uc3QgSWRlbnRpZmllciBieXRlY29k
ZXM7IGNvbnN0IElkZW50aWZpZXIgYnl0ZWNvZGVzSUQ7IGNvbnN0IElkZW50aWZpZXIgY2FsZW5k
YXI7IGNvbnN0IElkZW50aWZpZXIgY2FsbGVlOyBjb25zdCBJZGVudGlmaWVyIGNhbGxlcjsgY29u
c3QgSWRlbnRpZmllciBjYXNlRmlyc3Q7IGNvbnN0IElkZW50aWZpZXIgY2xlYXI7IGNvbnN0IElk
ZW50aWZpZXIgY2xvc2U7IGNvbnN0IElkZW50aWZpZXIgY2xvc2VkOyBjb25zdCBJZGVudGlmaWVy
IGNvbGxhdGlvbjsgY29uc3QgSWRlbnRpZmllciBjb2x1bW47IGNvbnN0IElkZW50aWZpZXIgY29t
cGlsYXRpb25LaW5kOyBjb25zdCBJZGVudGlmaWVyIGNvbXBpbGF0aW9uczsgY29uc3QgSWRlbnRp
ZmllciBjb21waWxlOyBjb25zdCBJZGVudGlmaWVyIGNvbmZpZ3VyYWJsZTsgY29uc3QgSWRlbnRp
ZmllciBjb25zdHJ1Y3RvcjsgY29uc3QgSWRlbnRpZmllciBjb3VudDsgY29uc3QgSWRlbnRpZmll
ciBjb3VudGVyczsgY29uc3QgSWRlbnRpZmllciBkYXk7IGNvbnN0IElkZW50aWZpZXIgZGVmaW5l
UHJvcGVydHk7IGNvbnN0IElkZW50aWZpZXIgZGVzY3JpcHRpb247IGNvbnN0IElkZW50aWZpZXIg
ZGVzY3JpcHRpb25zOyBjb25zdCBJZGVudGlmaWVyIGRpc3BsYXlOYW1lOyBjb25zdCBJZGVudGlm
aWVyIGRvY3VtZW50OyBjb25zdCBJZGVudGlmaWVyIGRvbmU7IGNvbnN0IElkZW50aWZpZXIgZW50
cmllczsgY29uc3QgSWRlbnRpZmllciBlbnVtZXJhYmxlOyBjb25zdCBJZGVudGlmaWVyIGVyYTsg
Y29uc3QgSWRlbnRpZmllciBldmFsOyBjb25zdCBJZGVudGlmaWVyIGV4ZWM7IGNvbnN0IElkZW50
aWZpZXIgZXhlY3V0aW9uQ291bnQ7IGNvbnN0IElkZW50aWZpZXIgZXhpdEtpbmQ7IGNvbnN0IElk
ZW50aWZpZXIgZmV0Y2g7IGNvbnN0IElkZW50aWZpZXIgZmxhZ3M7IGNvbnN0IElkZW50aWZpZXIg
Zm9jdXM7IGNvbnN0IElkZW50aWZpZXIgZm9yRWFjaDsgY29uc3QgSWRlbnRpZmllciBmb3JtYXRN
YXRjaGVyOyBjb25zdCBJZGVudGlmaWVyIGZvcndhcmQ7IGNvbnN0IElkZW50aWZpZXIgZnJhbWVz
OyBjb25zdCBJZGVudGlmaWVyIGZyb207IGNvbnN0IElkZW50aWZpZXIgZnJvbUNoYXJDb2RlOyBj
b25zdCBJZGVudGlmaWVyIGdldDsgY29uc3QgSWRlbnRpZmllciBnbG9iYWw7IGNvbnN0IElkZW50
aWZpZXIgZ287IGNvbnN0IElkZW50aWZpZXIgaGFzOyBjb25zdCBJZGVudGlmaWVyIGhhc093blBy
b3BlcnR5OyBjb25zdCBJZGVudGlmaWVyIGhhc2g7IGNvbnN0IElkZW50aWZpZXIgaGVhZGVyOyBj
b25zdCBJZGVudGlmaWVyIGhvdXI7IGNvbnN0IElkZW50aWZpZXIgaG91cjEyOyBjb25zdCBJZGVu
dGlmaWVyIGhyZWY7IGNvbnN0IElkZW50aWZpZXIgaWQ7IGNvbnN0IElkZW50aWZpZXIgaWdub3Jl
Q2FzZTsgY29uc3QgSWRlbnRpZmllciBpZ25vcmVQdW5jdHVhdGlvbjsgY29uc3QgSWRlbnRpZmll
ciBpbmRleDsgY29uc3QgSWRlbnRpZmllciBpbmRleGVkREI7IGNvbnN0IElkZW50aWZpZXIgaW5m
ZXJyZWROYW1lOyBjb25zdCBJZGVudGlmaWVyIGlucHV0OyBjb25zdCBJZGVudGlmaWVyIGluc3Ry
dWN0aW9uQ291bnQ7IGNvbnN0IElkZW50aWZpZXIgaXNBcnJheTsgY29uc3QgSWRlbnRpZmllciBp
c0VuYWJsZWQ7IGNvbnN0IElkZW50aWZpZXIgaXNQcm90b3R5cGVPZjsgY29uc3QgSWRlbnRpZmll
ciBpc1ZpZXc7IGNvbnN0IElkZW50aWZpZXIgaXNXYXRjaHBvaW50OyBjb25zdCBJZGVudGlmaWVy
IGpldHRpc29uUmVhc29uOyBjb25zdCBJZGVudGlmaWVyIGpvaW47IGNvbnN0IElkZW50aWZpZXIg
a2V5czsgY29uc3QgSWRlbnRpZmllciBsYXN0SW5kZXg7IGNvbnN0IElkZW50aWZpZXIgbGVuZ3Ro
OyBjb25zdCBJZGVudGlmaWVyIGxpbmU7IGNvbnN0IElkZW50aWZpZXIgbG9jYWxlOyBjb25zdCBJ
ZGVudGlmaWVyIGxvY2FsZU1hdGNoZXI7IGNvbnN0IElkZW50aWZpZXIgbG9jYXRpb247IGNvbnN0
IElkZW50aWZpZXIgbWVzc2FnZTsgY29uc3QgSWRlbnRpZmllciBtaW51dGU7IGNvbnN0IElkZW50
aWZpZXIgbW9udGg7IGNvbnN0IElkZW50aWZpZXIgbXVsdGlsaW5lOyBjb25zdCBJZGVudGlmaWVy
IG5hbWU7IGNvbnN0IElkZW50aWZpZXIgbmV4dDsgY29uc3QgSWRlbnRpZmllciBub3c7IGNvbnN0
IElkZW50aWZpZXIgbnVtSW5saW5lZENhbGxzOyBjb25zdCBJZGVudGlmaWVyIG51bUlubGluZWRH
ZXRCeUlkczsgY29uc3QgSWRlbnRpZmllciBudW1JbmxpbmVkUHV0QnlJZHM7IGNvbnN0IElkZW50
aWZpZXIgbnVtYmVyaW5nU3lzdGVtOyBjb25zdCBJZGVudGlmaWVyIG51bWVyaWM7IGNvbnN0IElk
ZW50aWZpZXIgb2Y7IGNvbnN0IElkZW50aWZpZXIgb3Bjb2RlOyBjb25zdCBJZGVudGlmaWVyIG9w
ZW5lcjsgY29uc3QgSWRlbnRpZmllciBvcmlnaW47IGNvbnN0IElkZW50aWZpZXIgb3NyRXhpdFNp
dGVzOyBjb25zdCBJZGVudGlmaWVyIG9zckV4aXRzOyBjb25zdCBJZGVudGlmaWVyIHBhcmVudDsg
Y29uc3QgSWRlbnRpZmllciBwYXJzZTsgY29uc3QgSWRlbnRpZmllciBwYXJzZUludDsgY29uc3Qg
SWRlbnRpZmllciBwb3N0TWVzc2FnZTsgY29uc3QgSWRlbnRpZmllciBwcm9maWxlZEJ5dGVjb2Rl
czsgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eUlzRW51bWVyYWJsZTsgY29uc3QgSWRlbnRpZmll
ciBwcm90b3R5cGU7IGNvbnN0IElkZW50aWZpZXIgcmF3OyBjb25zdCBJZGVudGlmaWVyIHJlbG9h
ZDsgY29uc3QgSWRlbnRpZmllciByZXBsYWNlOyBjb25zdCBJZGVudGlmaWVyIHJlc29sdmU7IGNv
bnN0IElkZW50aWZpZXIgc2Vjb25kOyBjb25zdCBJZGVudGlmaWVyIHNlbGY7IGNvbnN0IElkZW50
aWZpZXIgc2Vuc2l0aXZpdHk7IGNvbnN0IElkZW50aWZpZXIgc2V0OyBjb25zdCBJZGVudGlmaWVy
IHNob3dNb2RhbERpYWxvZzsgY29uc3QgSWRlbnRpZmllciBzaXplOyBjb25zdCBJZGVudGlmaWVy
IHNsaWNlOyBjb25zdCBJZGVudGlmaWVyIHNvdXJjZTsgY29uc3QgSWRlbnRpZmllciBzb3VyY2VD
b2RlOyBjb25zdCBJZGVudGlmaWVyIHNvdXJjZVVSTDsgY29uc3QgSWRlbnRpZmllciBzdGFjazsg
Y29uc3QgSWRlbnRpZmllciBzdGlja3k7IGNvbnN0IElkZW50aWZpZXIgc3ViYXJyYXk7IGNvbnN0
IElkZW50aWZpZXIgdGFyZ2V0OyBjb25zdCBJZGVudGlmaWVyIHRlc3Q7IGNvbnN0IElkZW50aWZp
ZXIgdGhlbjsgY29uc3QgSWRlbnRpZmllciB0aW1lWm9uZTsgY29uc3QgSWRlbnRpZmllciB0aW1l
Wm9uZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgdG9FeHBvbmVudGlhbDsgY29uc3QgSWRlbnRpZmll
ciB0b0ZpeGVkOyBjb25zdCBJZGVudGlmaWVyIHRvSVNPU3RyaW5nOyBjb25zdCBJZGVudGlmaWVy
IHRvSlNPTjsgY29uc3QgSWRlbnRpZmllciB0b0xvY2FsZVN0cmluZzsgY29uc3QgSWRlbnRpZmll
ciB0b1ByZWNpc2lvbjsgY29uc3QgSWRlbnRpZmllciB0b1N0cmluZzsgY29uc3QgSWRlbnRpZmll
ciB0b3A7IGNvbnN0IElkZW50aWZpZXIgdW5pY29kZTsgY29uc3QgSWRlbnRpZmllciB1c2FnZTsg
Y29uc3QgSWRlbnRpZmllciB2YWx1ZTsgY29uc3QgSWRlbnRpZmllciB2YWx1ZU9mOyBjb25zdCBJ
ZGVudGlmaWVyIHZhbHVlczsgY29uc3QgSWRlbnRpZmllciB3ZWJraXQ7IGNvbnN0IElkZW50aWZp
ZXIgd2Via2l0SURCQ3Vyc29yOyBjb25zdCBJZGVudGlmaWVyIHdlYmtpdElEQkRhdGFiYXNlOyBj
b25zdCBJZGVudGlmaWVyIHdlYmtpdElEQkZhY3Rvcnk7IGNvbnN0IElkZW50aWZpZXIgd2Via2l0
SURCSW5kZXg7IGNvbnN0IElkZW50aWZpZXIgd2Via2l0SURCS2V5UmFuZ2U7IGNvbnN0IElkZW50
aWZpZXIgd2Via2l0SURCT2JqZWN0U3RvcmU7IGNvbnN0IElkZW50aWZpZXIgd2Via2l0SURCUmVx
dWVzdDsgY29uc3QgSWRlbnRpZmllciB3ZWJraXRJREJUcmFuc2FjdGlvbjsgY29uc3QgSWRlbnRp
ZmllciB3ZWJraXRJbmRleGVkREI7IGNvbnN0IElkZW50aWZpZXIgd2Vla2RheTsgY29uc3QgSWRl
bnRpZmllciB3aW5kb3c7IGNvbnN0IElkZW50aWZpZXIgd3JpdGFibGU7IGNvbnN0IElkZW50aWZp
ZXIgeWVhcjsKI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9C
QUwKCiNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVf
R0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSAjI1ByaXZhdGVOYW1lOwogICAgICAg
IGNvbnN0IElkZW50aWZpZXIgYXNzZXJ0UHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgaXNP
YmplY3RQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciB0cnlHZXRCeUlkUHJpdmF0ZU5hbWU7
IGNvbnN0IElkZW50aWZpZXIgcHV0QnlWYWxEaXJlY3RQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRp
ZmllciB0b1N0cmluZ1ByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIHVuZGVmaW5lZFByaXZh
dGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIEluZmluaXR5UHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50
aWZpZXIgYXJyYXlJdGVyYXRpb25LaW5kS2V5UHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIg
YXJyYXlJdGVyYXRpb25LaW5kVmFsdWVQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBhcnJh
eUl0ZXJhdGlvbktpbmRLZXlWYWx1ZVByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIE1BWF9T
VFJJTkdfTEVOR1RIUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgcHJvbWlzZVN0YXRlUGVu
ZGluZ1ByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIHByb21pc2VTdGF0ZUZ1bGZpbGxlZFBy
aXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIHByb21pc2VTdGF0ZVJlamVjdGVkUHJpdmF0ZU5h
bWU7IGNvbnN0IElkZW50aWZpZXIgc3ltYm9sSXRlcmF0b3JQcml2YXRlTmFtZTsgY29uc3QgSWRl
bnRpZmllciBzeW1ib2xNYXRjaFByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIHN5bWJvbFJl
cGxhY2VQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBzeW1ib2xTZWFyY2hQcml2YXRlTmFt
ZTsgY29uc3QgSWRlbnRpZmllciBzeW1ib2xTcGVjaWVzUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50
aWZpZXIgc3ltYm9sU3BsaXRQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBHZW5lcmF0b3JS
ZXN1bWVNb2RlTm9ybWFsUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgR2VuZXJhdG9yUmVz
dW1lTW9kZVRocm93UHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgR2VuZXJhdG9yUmVzdW1l
TW9kZVJldHVyblByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIEdlbmVyYXRvclN0YXRlQ29t
cGxldGVkUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgR2VuZXJhdG9yU3RhdGVFeGVjdXRp
bmdQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBpdGVyYXRlZE9iamVjdFByaXZhdGVOYW1l
OyBjb25zdCBJZGVudGlmaWVyIGFycmF5SXRlcmF0b3JOZXh0SW5kZXhQcml2YXRlTmFtZTsgY29u
c3QgSWRlbnRpZmllciBhcnJheUl0ZXJhdGlvbktpbmRQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRp
ZmllciBjaGFyQ29kZUF0UHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgaXRlcmF0ZWRTdHJp
bmdQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBzdHJpbmdJdGVyYXRvck5leHRJbmRleFBy
aXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIHByb21pc2VQcml2YXRlTmFtZTsgY29uc3QgSWRl
bnRpZmllciBmdWxmaWxsbWVudEhhbmRsZXJQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBy
ZWplY3Rpb25IYW5kbGVyUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgaW5kZXhQcml2YXRl
TmFtZTsgY29uc3QgSWRlbnRpZmllciB2YWx1ZXNQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmll
ciBkZWZlcnJlZFByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIGNvdW50ZG93bkhvbGRlclBy
aXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIE9iamVjdFByaXZhdGVOYW1lOyBjb25zdCBJZGVu
dGlmaWVyIG93bkVudW1lcmFibGVQcm9wZXJ0eUtleXNQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRp
ZmllciBOdW1iZXJQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBBcnJheVByaXZhdGVOYW1l
OyBjb25zdCBJZGVudGlmaWVyIFN0cmluZ1ByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIFJl
Z0V4cFByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIE1hcFByaXZhdGVOYW1lOyBjb25zdCBJ
ZGVudGlmaWVyIFByb21pc2VQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBSZWZsZWN0UHJp
dmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgSW50ZXJuYWxQcm9taXNlUHJpdmF0ZU5hbWU7IGNv
bnN0IElkZW50aWZpZXIgYWJzUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgZmxvb3JQcml2
YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciB0cnVuY1ByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlm
aWVyIGlzRmluaXRlUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgaXNOYU5Qcml2YXRlTmFt
ZTsgY29uc3QgSWRlbnRpZmllciBjcmVhdGVQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBk
ZWZpbmVQcm9wZXJ0eVByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIGdldFByb3RvdHlwZU9m
UHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yUHJp
dmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgZ2V0T3duUHJvcGVydHlOYW1lc1ByaXZhdGVOYW1l
OyBjb25zdCBJZGVudGlmaWVyIG93bktleXNQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBF
cnJvclByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIFJhbmdlRXJyb3JQcml2YXRlTmFtZTsg
Y29uc3QgSWRlbnRpZmllciBUeXBlRXJyb3JQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciB0
eXBlZEFycmF5TGVuZ3RoUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgdHlwZWRBcnJheVNv
cnRQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciB0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25z
dHJ1Y3RvclByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIEJ1aWx0aW5Mb2dQcml2YXRlTmFt
ZTsgY29uc3QgSWRlbnRpZmllciBob21lT2JqZWN0UHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZp
ZXIgZ2V0VGVtcGxhdGVPYmplY3RQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBlbnF1ZXVl
Sm9iUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgaGFuZGxlclByaXZhdGVOYW1lOyBjb25z
dCBJZGVudGlmaWVyIHByb21pc2VTdGF0ZVByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIHBy
b21pc2VGdWxmaWxsUmVhY3Rpb25zUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgcHJvbWlz
ZVJlamVjdFJlYWN0aW9uc1ByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIHByb21pc2VSZXN1
bHRQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBwdXNoUHJpdmF0ZU5hbWU7IGNvbnN0IElk
ZW50aWZpZXIgcmVwZWF0Q2hhcmFjdGVyUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgY2Fw
YWJpbGl0aWVzUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgc3RhckRlZmF1bHRQcml2YXRl
TmFtZTsgY29uc3QgSWRlbnRpZmllciBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Qcml2YXRlTmFt
ZTsgY29uc3QgSWRlbnRpZmllciBnZXRQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBzZXRQ
cml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBzaGlmdFByaXZhdGVOYW1lOyBjb25zdCBJZGVu
dGlmaWVyIGFsbG9jYXRlVHlwZWRBcnJheVByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIElu
dDhBcnJheVByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIEludDE2QXJyYXlQcml2YXRlTmFt
ZTsgY29uc3QgSWRlbnRpZmllciBJbnQzMkFycmF5UHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZp
ZXIgVWludDhBcnJheVByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIFVpbnQ4Q2xhbXBlZEFy
cmF5UHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgVWludDE2QXJyYXlQcml2YXRlTmFtZTsg
Y29uc3QgSWRlbnRpZmllciBVaW50MzJBcnJheVByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVy
IEZsb2F0MzJBcnJheVByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIEZsb2F0NjRBcnJheVBy
aXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIGV4ZWNQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRp
ZmllciBnZW5lcmF0b3JQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBnZW5lcmF0b3JOZXh0
UHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZTsg
Y29uc3QgSWRlbnRpZmllciBnZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlm
aWVyIGdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgZ2VuZXJhdG9y
VGhpc1ByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIGdlbmVyYXRvclJlc3VtZU1vZGVQcml2
YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBDb2xsYXRvclByaXZhdGVOYW1lOyBjb25zdCBJZGVu
dGlmaWVyIERhdGVUaW1lRm9ybWF0UHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgTnVtYmVy
Rm9ybWF0UHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgaW50bFN1YnN0aXR1dGVWYWx1ZVBy
aXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIHRoaXNUaW1lVmFsdWVQcml2YXRlTmFtZTsgY29u
c3QgSWRlbnRpZmllciB0aGlzTnVtYmVyVmFsdWVQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmll
ciBuZXdUYXJnZXRMb2NhbFByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIGRlcml2ZWRDb25z
dHJ1Y3RvclByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIGlzQm91bmRGdW5jdGlvblByaXZh
dGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIGhhc0luc3RhbmNlQm91bmRGdW5jdGlvblByaXZhdGVO
YW1lOyBjb25zdCBJZGVudGlmaWVyIGluc3RhbmNlT2ZQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRp
ZmllciBpc0FycmF5UHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgaXNBcnJheUNvbnN0cnVj
dG9yUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgaXNDb25zdHJ1Y3RvclByaXZhdGVOYW1l
OyBjb25zdCBJZGVudGlmaWVyIGlzUmVnRXhwT2JqZWN0UHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50
aWZpZXIgcHJlZGljdEZpbmFsTGVuZ3RoRnJvbUFyZ3VtdW50c1ByaXZhdGVOYW1lOyBjb25zdCBJ
ZGVudGlmaWVyIHByaW50UHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgaXNTZXRQcml2YXRl
TmFtZTsgY29uc3QgSWRlbnRpZmllciBpc01hcFByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVy
IHJlZ0V4cENyZWF0ZVByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIFNldEl0ZXJhdG9yUHJp
dmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgc2V0SXRlcmF0b3JOZXh0UHJpdmF0ZU5hbWU7IGNv
bnN0IElkZW50aWZpZXIgcmVwbGFjZVVzaW5nUmVnRXhwUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50
aWZpZXIgcmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZp
ZXIgTWFwSXRlcmF0b3JQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBtYXBJdGVyYXRvck5l
eHRQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciByZWdFeHBCdWlsdGluRXhlY1ByaXZhdGVO
YW1lOyBjb25zdCBJZGVudGlmaWVyIHJlZ0V4cE1hdGNoRmFzdFByaXZhdGVOYW1lOyBjb25zdCBJ
ZGVudGlmaWVyIHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXJQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRp
ZmllciByZWdFeHBQcm90b0dsb2JhbEdldHRlclByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVy
IHJlZ0V4cFByb3RvSWdub3JlQ2FzZUdldHRlclByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVy
IHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIg
cmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXJQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciByZWdF
eHBQcm90b1N0aWNreUdldHRlclByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIHJlZ0V4cFBy
b3RvVW5pY29kZUdldHRlclByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIHJlZ0V4cFByb3Rv
dHlwZVN5bWJvbFJlcGxhY2VQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciByZWdFeHBSZXBs
YWNlRmFzdFByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIHJlZ0V4cFNlYXJjaEZhc3RQcml2
YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciByZWdFeHBTcGxpdEZhc3RQcml2YXRlTmFtZTsgY29u
c3QgSWRlbnRpZmllciByZWdFeHBUZXN0RmFzdFByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVy
IHN0cmluZ0luY2x1ZGVzSW50ZXJuYWxQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBzdHJp
bmdTcGxpdEZhc3RQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBzdHJpbmdTdWJzdHJJbnRl
cm5hbFByaXZhdGVOYW1lOwojdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BS
T1BFUlRZX05BTUVfR0xPQkFMCgojZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFU
RV9XRUxMX0tOT1dOX1NZTUJPTF9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lICMj
U3ltYm9sOwogICAgICAgIGNvbnN0IElkZW50aWZpZXIgaGFzSW5zdGFuY2VTeW1ib2w7IGNvbnN0
IElkZW50aWZpZXIgaXRlcmF0b3JTeW1ib2w7IGNvbnN0IElkZW50aWZpZXIgbWF0Y2hTeW1ib2w7
IGNvbnN0IElkZW50aWZpZXIgcmVwbGFjZVN5bWJvbDsgY29uc3QgSWRlbnRpZmllciBzZWFyY2hT
eW1ib2w7IGNvbnN0IElkZW50aWZpZXIgc3BlY2llc1N5bWJvbDsgY29uc3QgSWRlbnRpZmllciBz
cGxpdFN5bWJvbDsgY29uc3QgSWRlbnRpZmllciB0b1ByaW1pdGl2ZVN5bWJvbDsgY29uc3QgSWRl
bnRpZmllciB0b1N0cmluZ1RhZ1N5bWJvbDsgY29uc3QgSWRlbnRpZmllciB1bnNjb3BhYmxlc1N5
bWJvbDsKI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZ
TUJPTF9HTE9CQUwKCiAgICAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKFN5bWJvbEltcGwmIHVpZCkg
Y29uc3Q7CiAgICAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsJiB1aWQp
IGNvbnN0OwogICAgICAgIGJvb2wgaXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29u
c3Q7CgogICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxvb2tVcFByaXZhdGVOYW1lKGNvbnN0IElk
ZW50aWZpZXImKSBjb25zdDsKICAgICAgICBJZGVudGlmaWVyIGxvb2tVcFB1YmxpY05hbWUoY29u
c3QgSWRlbnRpZmllciYpIGNvbnN0OwoKCgogICAgICAgIHZvaWQgYXBwZW5kRXh0ZXJuYWxOYW1l
KGNvbnN0IElkZW50aWZpZXImIHB1YmxpY05hbWUsIGNvbnN0IElkZW50aWZpZXImIHByaXZhdGVO
YW1lKTsKICAgIH07Cgp9CiMgMzMgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5
QmFycmllci5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlC
YXJyaWVyLmgiCiNkZWZpbmUgQ29weUJhcnJpZXJfaCAKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFz
cyBDb3B5QmFycmllckJhc2UgewpwdWJsaWM6CiAgICBDb3B5QmFycmllckJhc2UoKQogICAgICAg
IDogbV92YWx1ZShudWxscHRyKQogICAgewogICAgfQoKICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJv
b2woKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CgogICAgdm9pZCogZ2V0KCkgY29uc3QKICAg
IHsKICAgICAgICByZXR1cm4gbV92YWx1ZTsKICAgIH0KCiAgICB2b2lkIGNsZWFyKCkgeyBtX3Zh
bHVlID0gbnVsbHB0cjsgfQoKcHJvdGVjdGVkOgogICAgQ29weUJhcnJpZXJCYXNlKFZNJiB2bSwg
Y29uc3QgSlNDZWxsKiBvd25lciwgdm9pZCogdmFsdWUpCiAgICB7CiAgICAgICAgdGhpcy0+c2V0
KHZtLCBvd25lciwgdmFsdWUpOwogICAgfQoKICAgIHZvaWQgc2V0KFZNJiB2bSwgY29uc3QgSlND
ZWxsKiBvd25lciwgdm9pZCogdmFsdWUpCiAgICB7CiAgICAgICAgdGhpcy0+bV92YWx1ZSA9IHZh
bHVlOwogICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKG93bmVyKTsKICAgIH0KCiAgICB2b2lk
IHNldFdpdGhvdXRCYXJyaWVyKHZvaWQqIHZhbHVlKQogICAgewogICAgICAgIHRoaXMtPm1fdmFs
dWUgPSB2YWx1ZTsKICAgIH0KCnByaXZhdGU6CiAgICBtdXRhYmxlIHZvaWQqIG1fdmFsdWU7Cn07
Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KY2xhc3MgQ29weUJhcnJpZXIgOiBwdWJsaWMgQ29weUJh
cnJpZXJCYXNlIHsKcHVibGljOgogICAgQ29weUJhcnJpZXIoKQogICAgewogICAgfQoKICAgIENv
cHlCYXJyaWVyKFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwgVCYgdmFsdWUpCiAgICAgICAg
OiBDb3B5QmFycmllckJhc2Uodm0sIG93bmVyLCAmdmFsdWUpCiAgICB7CiAgICB9CgogICAgQ29w
eUJhcnJpZXIoVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBUKiB2YWx1ZSkKICAgICAgICA6
IENvcHlCYXJyaWVyQmFzZSh2bSwgb3duZXIsIHZhbHVlKQogICAgewogICAgfQoKICAgIFQqIGdl
dCgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUKj4oQ29weUJhcnJp
ZXJCYXNlOjpnZXQoKSk7CiAgICB9CgogICAgdm9pZCBzZXQoVk0mIHZtLCBjb25zdCBKU0NlbGwq
IG93bmVyLCBUKiB2YWx1ZSkKICAgIHsKICAgICAgICBDb3B5QmFycmllckJhc2U6OnNldCh2bSwg
b3duZXIsIHZhbHVlKTsKICAgIH0KCiAgICB2b2lkIHNldFdpdGhvdXRCYXJyaWVyKFQqIHZhbHVl
KQogICAgewogICAgICAgIENvcHlCYXJyaWVyQmFzZTo6c2V0V2l0aG91dEJhcnJpZXIodmFsdWUp
OwogICAgfQp9OwoKfQojIDM0ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oIiAyCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3Vz
dG9tR2V0dGVyU2V0dGVyLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgiCiNkZWZpbmUgQ3VzdG9tR2V0dGVyU2V0dGVyX2gg
CgoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3Qu
aCIgMQojIDIyICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNs
b3QuaCIKI2RlZmluZSBQcm9wZXJ0eVNsb3RfaCAKCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oIgojZGVmaW5lIFByb3BlcnR5TmFtZV9o
IAoKCgoKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgUHJvcGVydHlOYW1lIHsKcHVibGljOgogICAg
UHJvcGVydHlOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUpCiAgICAgICAgOiBt
X2ltcGwocHJvcGVydHlOYW1lKQogICAgewogICAgfQoKICAgIFByb3BlcnR5TmFtZShjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiAgICAgICAgOiBQcm9wZXJ0eU5hbWUocHJvcGVydHlO
YW1lLmltcGwoKSkKICAgIHsKICAgIH0KCiAgICBQcm9wZXJ0eU5hbWUoY29uc3QgUHJpdmF0ZU5h
bWUmIHByb3BlcnR5TmFtZSkKICAgICAgICA6IG1faW1wbChwcm9wZXJ0eU5hbWUudWlkKCkpCiAg
ICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgIH0KCiAgICBib29s
IGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGw7IH0KCiAgICBib29sIGlzU3ltYm9sKCkK
ICAgIHsKICAgICAgICByZXR1cm4gbV9pbXBsICYmIG1faW1wbC0+aXNTeW1ib2woKTsKICAgIH0K
CiAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4g
bV9pbXBsOwogICAgfQoKICAgIEF0b21pY1N0cmluZ0ltcGwqIHB1YmxpY05hbWUoKSBjb25zdAog
ICAgewogICAgICAgIHJldHVybiAoIW1faW1wbCB8fCBtX2ltcGwtPmlzU3ltYm9sKCkpID8gbnVs
bHB0ciA6IHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwqPihtX2ltcGwpOwogICAgfQoKICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgewogICAgICAgIGlmIChtX2lt
cGwpCiAgICAgICAgICAgIG91dC5wcmludChtX2ltcGwpOwogICAgICAgIGVsc2UKICAgICAgICAg
ICAgb3V0LnByaW50KCI8bnVsbCBwcm9wZXJ0eSBuYW1lPiIpOwogICAgfQoKcHJpdmF0ZToKICAg
IFVuaXF1ZWRTdHJpbmdJbXBsKiBtX2ltcGw7Cn07CgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KFBy
b3BlcnR5TmFtZSBhLCBjb25zdCBJZGVudGlmaWVyJiBiKQp7CiAgICByZXR1cm4gYS51aWQoKSA9
PSBiLmltcGwoKTsKfQoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVudGlmaWVyJiBh
LCBQcm9wZXJ0eU5hbWUgYikKewogICAgcmV0dXJuIGEuaW1wbCgpID09IGIudWlkKCk7Cn0KCmlu
bGluZSBib29sIG9wZXJhdG9yPT0oUHJvcGVydHlOYW1lIGEsIFByb3BlcnR5TmFtZSBiKQp7CiAg
ICByZXR1cm4gYS51aWQoKSA9PSBiLnVpZCgpOwp9CgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KFBy
b3BlcnR5TmFtZSBhLCBjb25zdCBjaGFyKiBiKQp7CiAgICByZXR1cm4gZXF1YWwoYS51aWQoKSwg
Yik7Cn0KCmlubGluZSBib29sIG9wZXJhdG9yIT0oUHJvcGVydHlOYW1lIGEsIGNvbnN0IElkZW50
aWZpZXImIGIpCnsKICAgIHJldHVybiBhLnVpZCgpICE9IGIuaW1wbCgpOwp9CgppbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IElkZW50aWZpZXImIGEsIFByb3BlcnR5TmFtZSBiKQp7CiAgICBy
ZXR1cm4gYS5pbXBsKCkgIT0gYi51aWQoKTsKfQoKaW5saW5lIGJvb2wgb3BlcmF0b3IhPShQcm9w
ZXJ0eU5hbWUgYSwgUHJvcGVydHlOYW1lIGIpCnsKICAgIHJldHVybiBhLnVpZCgpICE9IGIudWlk
KCk7Cn0KCmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIE9wdGlvbmFs
PHVpbnQzMl90PiBwYXJzZUluZGV4KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCnsKICAgIGF1
dG8gdWlkID0gcHJvcGVydHlOYW1lLnVpZCgpOwogICAgaWYgKCF1aWQpCiAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CiAgICBpZiAodWlkLT5pc1N5bWJvbCgpKQogICAgICAgIHJldHVybiBOdWxsb3B0
OwogICAgcmV0dXJuIHBhcnNlSW5kZXgoKnVpZCk7Cn0KCn0KIyAyNiAiLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgiIDIKCgoKbmFtZXNwYWNlIEpTQyB7
CgpjbGFzcyBFeGVjU3RhdGU7CmNsYXNzIEdldHRlclNldHRlcjsKY2xhc3MgSlNPYmplY3Q7CgoK
CmVudW0gQXR0cmlidXRlIHsKICAgIE5vbmUgPSAwLAogICAgUmVhZE9ubHkgPSAxIDw8IDEsCiAg
ICBEb250RW51bSA9IDEgPDwgMiwKICAgIERvbnREZWxldGUgPSAxIDw8IDMsCiAgICBBY2Nlc3Nv
ciA9IDEgPDwgNCwKICAgIEN1c3RvbUFjY2Vzc29yID0gMSA8PCA1LAoKCiAgICBGdW5jdGlvbiA9
IDEgPDwgOCwKICAgIEJ1aWx0aW4gPSAxIDw8IDksCiAgICBDb25zdGFudEludGVnZXIgPSAxIDw8
IDEwLAogICAgQnVpbHRpbk9yRnVuY3Rpb24gPSBCdWlsdGluIHwgRnVuY3Rpb24sCiAgICBCdWls
dGluT3JGdW5jdGlvbk9yQWNjZXNzb3IgPSBCdWlsdGluIHwgRnVuY3Rpb24gfCBBY2Nlc3NvciwK
ICAgIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yQ29uc3RhbnQgPSBCdWlsdGluIHwgRnVu
Y3Rpb24gfCBBY2Nlc3NvciB8IENvbnN0YW50SW50ZWdlciwKfTsKCmVudW0gQ2FjaGVhYmlsaXR5
VHlwZSA6IHVpbnQ4X3QgewogICAgQ2FjaGluZ0Rpc2FsbG93ZWQsCiAgICBDYWNoaW5nQWxsb3dl
ZAp9OwoKaW5saW5lIHVuc2lnbmVkIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodW5zaWduZWQgYXR0
cmlidXRlcykKewoKICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90PihhdHRyaWJ1dGVzKTsK
fQoKY2xhc3MgUHJvcGVydHlTbG90IHsKICAgIGVudW0gUHJvcGVydHlUeXBlIDogdWludDhfdCB7
CiAgICAgICAgVHlwZVVuc2V0LAogICAgICAgIFR5cGVWYWx1ZSwKICAgICAgICBUeXBlR2V0dGVy
LAogICAgICAgIFR5cGVDdXN0b20KICAgIH07CgpwdWJsaWM6CiAgICBlbnVtIGNsYXNzIEludGVy
bmFsTWV0aG9kVHlwZSA6IHVpbnQ4X3QgewogICAgICAgIEdldCwKICAgICAgICBIYXNQcm9wZXJ0
eSwKICAgICAgICBHZXRPd25Qcm9wZXJ0eSwKICAgICAgICBWTUlucXVpcnksCiAgICB9OwoKICAg
IGV4cGxpY2l0IFByb3BlcnR5U2xvdChjb25zdCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSW50ZXJuYWxN
ZXRob2RUeXBlIGludGVybmFsTWV0aG9kVHlwZSkKICAgICAgICA6IG1fb2Zmc2V0KGludmFsaWRP
ZmZzZXQpCiAgICAgICAgLCBtX3RoaXNWYWx1ZSh0aGlzVmFsdWUpCiAgICAgICAgLCBtX3Nsb3RC
YXNlKG51bGxwdHIpCiAgICAgICAgLCBtX3dhdGNocG9pbnRTZXQobnVsbHB0cikKICAgICAgICAs
IG1fY2FjaGVhYmlsaXR5KENhY2hpbmdBbGxvd2VkKQogICAgICAgICwgbV9wcm9wZXJ0eVR5cGUo
VHlwZVVuc2V0KQogICAgICAgICwgbV9pbnRlcm5hbE1ldGhvZFR5cGUoaW50ZXJuYWxNZXRob2RU
eXBlKQogICAgICAgICwgbV9pc1RhaW50ZWRCeVByb3h5KGZhbHNlKQogICAgewogICAgfQoKICAg
IHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKCpHZXRWYWx1ZUZ1bmMpKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKCiAgICBKU1ZhbHVlIGdldFZhbHVl
KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICBKU1ZhbHVlIGdldFZhbHVlKEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICBKU1ZhbHVlIGdldFB1
cmVSZXN1bHQoKSBjb25zdDsKCiAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9jYWNoZWFiaWxpdHkgPT0gQ2FjaGluZ0FsbG93ZWQgJiYgbV9vZmZzZXQgIT0gaW52YWxpZE9m
ZnNldDsgfQogICAgYm9vbCBpc1Vuc2V0KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVR5cGUg
PT0gVHlwZVVuc2V0OyB9CiAgICBib29sIGlzVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Byb3Bl
cnR5VHlwZSA9PSBUeXBlVmFsdWU7IH0KICAgIGJvb2wgaXNBY2Nlc3NvcigpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvcGVydHlUeXBlID09IFR5cGVHZXR0ZXI7IH0KICAgIGJvb2wgaXNDdXN0b20oKSBj
b25zdCB7IHJldHVybiBtX3Byb3BlcnR5VHlwZSA9PSBUeXBlQ3VzdG9tOyB9CiAgICBib29sIGlz
Q2FjaGVhYmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiBpc0NhY2hlYWJsZSgpICYmIGlzVmFsdWUo
KTsgfQogICAgYm9vbCBpc0NhY2hlYWJsZUdldHRlcigpIGNvbnN0IHsgcmV0dXJuIGlzQ2FjaGVh
YmxlKCkgJiYgaXNBY2Nlc3NvcigpOyB9CiAgICBib29sIGlzQ2FjaGVhYmxlQ3VzdG9tKCkgY29u
c3QgeyByZXR1cm4gaXNDYWNoZWFibGUoKSAmJiBpc0N1c3RvbSgpOyB9CiAgICB2b2lkIHNldElz
VGFpbnRlZEJ5UHJveHkoKSB7IG1faXNUYWludGVkQnlQcm94eSA9IHRydWU7IH0KICAgIGJvb2wg
aXNUYWludGVkQnlQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUYWludGVkQnlQcm94eTsgfQoK
ICAgIEludGVybmFsTWV0aG9kVHlwZSBpbnRlcm5hbE1ldGhvZFR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2ludGVybmFsTWV0aG9kVHlwZTsgfQoKICAgIHZvaWQgZGlzYWJsZUNhY2hpbmcoKQogICAg
ewogICAgICAgIG1fY2FjaGVhYmlsaXR5ID0gQ2FjaGluZ0Rpc2FsbG93ZWQ7CiAgICB9CgogICAg
dW5zaWduZWQgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQoKICAg
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0CiAgICB7CiAgICAgICAgKCh2b2lk
KTApOwogICAgICAgIHJldHVybiBtX29mZnNldDsKICAgIH0KCiAgICBHZXR0ZXJTZXR0ZXIqIGdl
dHRlclNldHRlcigpIGNvbnN0CiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVy
biBtX2RhdGEuZ2V0dGVyLmdldHRlclNldHRlcjsKICAgIH0KCiAgICBHZXRWYWx1ZUZ1bmMgY3Vz
dG9tR2V0dGVyKCkgY29uc3QKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJu
IG1fZGF0YS5jdXN0b20uZ2V0VmFsdWU7CiAgICB9CgogICAgSlNPYmplY3QqIHNsb3RCYXNlKCkg
Y29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9zbG90QmFzZTsKICAgIH0KCiAgICBXYXRjaHBv
aW50U2V0KiB3YXRjaHBvaW50U2V0KCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV93YXRj
aHBvaW50U2V0OwogICAgfQoKICAgIHZvaWQgc2V0VmFsdWUoSlNPYmplY3QqIHNsb3RCYXNlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU1ZhbHVlIHZhbHVlKQogICAgewogICAgICAgICgodm9pZCkw
KTsKCiAgICAgICAgbV9kYXRhLnZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKICAgICAg
ICBtX2F0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOwoKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAg
bV9zbG90QmFzZSA9IHNsb3RCYXNlOwogICAgICAgIG1fcHJvcGVydHlUeXBlID0gVHlwZVZhbHVl
OwogICAgICAgIG1fb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAgIH0KCiAgICB2b2lkIHNldFZh
bHVlKEpTT2JqZWN0KiBzbG90QmFzZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNWYWx1ZSB2YWx1
ZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgewogICAgICAgICgodm9pZCkwKTsKCiAgICAg
ICAgKCh2b2lkKTApOwogICAgICAgIG1fZGF0YS52YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1
ZSk7CiAgICAgICAgbV9hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsKCiAgICAgICAgKCh2b2lkKTAp
OwogICAgICAgIG1fc2xvdEJhc2UgPSBzbG90QmFzZTsKICAgICAgICBtX3Byb3BlcnR5VHlwZSA9
IFR5cGVWYWx1ZTsKICAgICAgICBtX29mZnNldCA9IG9mZnNldDsKICAgIH0KCiAgICB2b2lkIHNl
dFZhbHVlKEpTU3RyaW5nKiwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNWYWx1ZSB2YWx1ZSkKICAg
IHsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgICgodm9pZCkwKTsKICAgICAgICBtX2RhdGEu
dmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOwogICAgICAgIG1fYXR0cmlidXRlcyA9IGF0
dHJpYnV0ZXM7CgogICAgICAgIG1fc2xvdEJhc2UgPSAwOwogICAgICAgIG1fcHJvcGVydHlUeXBl
ID0gVHlwZVZhbHVlOwogICAgICAgIG1fb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAgIH0KCiAg
ICB2b2lkIHNldEN1c3RvbShKU09iamVjdCogc2xvdEJhc2UsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IEdldFZhbHVlRnVuYyBnZXRWYWx1ZSkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAg
ICgodm9pZCkwKTsKICAgICAgICBtX2RhdGEuY3VzdG9tLmdldFZhbHVlID0gZ2V0VmFsdWU7CiAg
ICAgICAgbV9hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsKCiAgICAgICAgKCh2b2lkKTApOwogICAg
ICAgIG1fc2xvdEJhc2UgPSBzbG90QmFzZTsKICAgICAgICBtX3Byb3BlcnR5VHlwZSA9IFR5cGVD
dXN0b207CiAgICAgICAgbV9vZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogICAgfQoKICAgIHZvaWQg
c2V0Q2FjaGVhYmxlQ3VzdG9tKEpTT2JqZWN0KiBzbG90QmFzZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgR2V0VmFsdWVGdW5jIGdldFZhbHVlKQogICAgewogICAgICAgICgodm9pZCkwKTsKCiAgICAg
ICAgKCh2b2lkKTApOwogICAgICAgIG1fZGF0YS5jdXN0b20uZ2V0VmFsdWUgPSBnZXRWYWx1ZTsK
ICAgICAgICBtX2F0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOwoKICAgICAgICAoKHZvaWQpMCk7CiAg
ICAgICAgbV9zbG90QmFzZSA9IHNsb3RCYXNlOwogICAgICAgIG1fcHJvcGVydHlUeXBlID0gVHlw
ZUN1c3RvbTsKICAgICAgICBtX29mZnNldCA9ICFpbnZhbGlkT2Zmc2V0OwogICAgfQoKICAgIHZv
aWQgc2V0R2V0dGVyU2xvdChKU09iamVjdCogc2xvdEJhc2UsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyKQogICAgewogICAgICAgICgodm9pZCkwKTsKCiAg
ICAgICAgKCh2b2lkKTApOwogICAgICAgIG1fZGF0YS5nZXR0ZXIuZ2V0dGVyU2V0dGVyID0gZ2V0
dGVyU2V0dGVyOwogICAgICAgIG1fYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7CgogICAgICAgICgo
dm9pZCkwKTsKICAgICAgICBtX3Nsb3RCYXNlID0gc2xvdEJhc2U7CiAgICAgICAgbV9wcm9wZXJ0
eVR5cGUgPSBUeXBlR2V0dGVyOwogICAgICAgIG1fb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAg
IH0KCiAgICB2b2lkIHNldENhY2hlYWJsZUdldHRlclNsb3QoSlNPYmplY3QqIHNsb3RCYXNlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQogICAgewogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgKCh2b2lkKTAp
OwogICAgICAgIG1fZGF0YS5nZXR0ZXIuZ2V0dGVyU2V0dGVyID0gZ2V0dGVyU2V0dGVyOwogICAg
ICAgIG1fYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7CgogICAgICAgICgodm9pZCkwKTsKICAgICAg
ICBtX3Nsb3RCYXNlID0gc2xvdEJhc2U7CiAgICAgICAgbV9wcm9wZXJ0eVR5cGUgPSBUeXBlR2V0
dGVyOwogICAgICAgIG1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgfQoKICAgIHZvaWQgc2V0VGhpc1Zh
bHVlKEpTVmFsdWUgdGhpc1ZhbHVlKQogICAgewogICAgICAgIG1fdGhpc1ZhbHVlID0gdGhpc1Zh
bHVlOwogICAgfQoKICAgIHZvaWQgc2V0VW5kZWZpbmVkKCkKICAgIHsKICAgICAgICBtX2RhdGEu
dmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgbV9hdHRyaWJ1
dGVzID0gUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW07CgogICAgICAgIG1fc2xvdEJh
c2UgPSAwOwogICAgICAgIG1fcHJvcGVydHlUeXBlID0gVHlwZVZhbHVlOwogICAgICAgIG1fb2Zm
c2V0ID0gaW52YWxpZE9mZnNldDsKICAgIH0KCiAgICB2b2lkIHNldFdhdGNocG9pbnRTZXQoV2F0
Y2hwb2ludFNldCYgc2V0KQogICAgewogICAgICAgIG1fd2F0Y2hwb2ludFNldCA9ICZzZXQ7CiAg
ICB9Cgpwcml2YXRlOgogICAgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqKSBjb25z
dDsKICAgIEpTVmFsdWUgY3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkgY29u
c3Q7CgogICAgdW5zaWduZWQgbV9hdHRyaWJ1dGVzOwogICAgdW5pb24gewogICAgICAgIEVuY29k
ZWRKU1ZhbHVlIHZhbHVlOwogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgIEdldHRlclNldHRl
ciogZ2V0dGVyU2V0dGVyOwogICAgICAgIH0gZ2V0dGVyOwogICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgIEdldFZhbHVlRnVuYyBnZXRWYWx1ZTsKICAgICAgICB9IGN1c3RvbTsKICAgIH0gbV9k
YXRhOwoKICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogICAgSlNWYWx1ZSBtX3RoaXNWYWx1
ZTsKICAgIEpTT2JqZWN0KiBtX3Nsb3RCYXNlOwogICAgV2F0Y2hwb2ludFNldCogbV93YXRjaHBv
aW50U2V0OwogICAgQ2FjaGVhYmlsaXR5VHlwZSBtX2NhY2hlYWJpbGl0eTsKICAgIFByb3BlcnR5
VHlwZSBtX3Byb3BlcnR5VHlwZTsKICAgIEludGVybmFsTWV0aG9kVHlwZSBtX2ludGVybmFsTWV0
aG9kVHlwZTsKICAgIGJvb2wgbV9pc1RhaW50ZWRCeVByb3h5Owp9OwoKaW5saW5lIF9fYXR0cmli
dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmdldFZhbHVl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKewogICAg
aWYgKG1fcHJvcGVydHlUeXBlID09IFR5cGVWYWx1ZSkKICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZGVjb2RlKG1fZGF0YS52YWx1ZSk7CiAgICBpZiAobV9wcm9wZXJ0eVR5cGUgPT0gVHlwZUdldHRl
cikKICAgICAgICByZXR1cm4gZnVuY3Rpb25HZXR0ZXIoZXhlYyk7CiAgICByZXR1cm4gY3VzdG9t
R2V0dGVyKGV4ZWMsIHByb3BlcnR5TmFtZSk7Cn0KCmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXykpIEpTVmFsdWUgUHJvcGVydHlTbG90OjpnZXRWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3QKewogICAgaWYgKG1fcHJvcGVydHlU
eXBlID09IFR5cGVWYWx1ZSkKICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fZGF0YS52
YWx1ZSk7CiAgICBpZiAobV9wcm9wZXJ0eVR5cGUgPT0gVHlwZUdldHRlcikKICAgICAgICByZXR1
cm4gZnVuY3Rpb25HZXR0ZXIoZXhlYyk7CiAgICByZXR1cm4gY3VzdG9tR2V0dGVyKGV4ZWMsIElk
ZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSk7Cn0KCn0KIyAzMSAiLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgiIDIKIyAxICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaCIgMQoj
IDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3Qu
aCIKI2RlZmluZSBQdXRQcm9wZXJ0eVNsb3RfaCAKCgoKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFz
cyBKU09iamVjdDsKY2xhc3MgSlNGdW5jdGlvbjsKCmNsYXNzIFB1dFByb3BlcnR5U2xvdCB7CnB1
YmxpYzoKICAgIGVudW0gVHlwZSB7IFVuY2FjaGFibGUsIEV4aXN0aW5nUHJvcGVydHksIE5ld1By
b3BlcnR5LCBTZXR0ZXJQcm9wZXJ0eSwgQ3VzdG9tVmFsdWUsIEN1c3RvbUFjY2Vzc29yIH07CiAg
ICBlbnVtIENvbnRleHQgeyBVbmtub3duQ29udGV4dCwgUHV0QnlJZCwgUHV0QnlJZEV2YWwgfTsK
ICAgIHR5cGVkZWYgYm9vbCAoKlB1dFZhbHVlRnVuYykoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUgdGhpc09iamVjdCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpOwoKICAgIFB1dFByb3BlcnR5U2xv
dChKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBpc1N0cmljdE1vZGUgPSBmYWxzZSwgQ29udGV4dCBj
b250ZXh0ID0gVW5rbm93bkNvbnRleHQsIGJvb2wgaXNJbml0aWFsaXphdGlvbiA9IGZhbHNlKQog
ICAgICAgIDogbV90eXBlKFVuY2FjaGFibGUpCiAgICAgICAgLCBtX2Jhc2UoMCkKICAgICAgICAs
IG1fdGhpc1ZhbHVlKHRoaXNWYWx1ZSkKICAgICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQp
CiAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgLCBtX2lzSW5p
dGlhbGl6YXRpb24oaXNJbml0aWFsaXphdGlvbikKICAgICAgICAsIG1fY29udGV4dChjb250ZXh0
KQogICAgICAgICwgbV9jYWNoZWFiaWxpdHkoQ2FjaGluZ0FsbG93ZWQpCiAgICAgICAgLCBtX3B1
dEZ1bmN0aW9uKG51bGxwdHIpCiAgICB7CiAgICB9CgogICAgdm9pZCBzZXRFeGlzdGluZ1Byb3Bl
cnR5KEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICB7CiAgICAgICAg
bV90eXBlID0gRXhpc3RpbmdQcm9wZXJ0eTsKICAgICAgICBtX2Jhc2UgPSBiYXNlOwogICAgICAg
IG1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgfQoKICAgIHZvaWQgc2V0TmV3UHJvcGVydHkoSlNPYmpl
Y3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgIHsKICAgICAgICBtX3R5cGUgPSBO
ZXdQcm9wZXJ0eTsKICAgICAgICBtX2Jhc2UgPSBiYXNlOwogICAgICAgIG1fb2Zmc2V0ID0gb2Zm
c2V0OwogICAgfQoKICAgIHZvaWQgc2V0Q3VzdG9tVmFsdWUoSlNPYmplY3QqIGJhc2UsIFB1dFZh
bHVlRnVuYyBmdW5jdGlvbikKICAgIHsKICAgICAgICBtX3R5cGUgPSBDdXN0b21WYWx1ZTsKICAg
ICAgICBtX2Jhc2UgPSBiYXNlOwogICAgICAgIG1fcHV0RnVuY3Rpb24gPSBmdW5jdGlvbjsKICAg
IH0KCiAgICB2b2lkIHNldEN1c3RvbUFjY2Vzc29yKEpTT2JqZWN0KiBiYXNlLCBQdXRWYWx1ZUZ1
bmMgZnVuY3Rpb24pCiAgICB7CiAgICAgICAgbV90eXBlID0gQ3VzdG9tQWNjZXNzb3I7CiAgICAg
ICAgbV9iYXNlID0gYmFzZTsKICAgICAgICBtX3B1dEZ1bmN0aW9uID0gZnVuY3Rpb247CiAgICB9
CgogICAgdm9pZCBzZXRDYWNoZWFibGVTZXR0ZXIoSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKICAgIHsKICAgICAgICBtX3R5cGUgPSBTZXR0ZXJQcm9wZXJ0eTsKICAgICAg
ICBtX2Jhc2UgPSBiYXNlOwogICAgICAgIG1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgfQoKICAgIHZv
aWQgc2V0VGhpc1ZhbHVlKEpTVmFsdWUgdGhpc1ZhbHVlKQogICAgewogICAgICAgIG1fdGhpc1Zh
bHVlID0gdGhpc1ZhbHVlOwogICAgfQoKICAgIHZvaWQgc2V0U3RyaWN0TW9kZShib29sIHZhbHVl
KQogICAgewogICAgICAgIG1faXNTdHJpY3RNb2RlID0gdmFsdWU7CiAgICB9CgogICAgUHV0VmFs
dWVGdW5jIGN1c3RvbVNldHRlcigpIGNvbnN0CiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAg
ICAgIHJldHVybiBtX3B1dEZ1bmN0aW9uOwogICAgfQoKICAgIENvbnRleHQgY29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRleHQ+KG1fY29udGV4dCk7IH0KCiAgICBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgIEpTT2JqZWN0KiBiYXNlKCkgY29u
c3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICBKU1ZhbHVlIHRoaXNWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdGhpc1ZhbHVlOyB9CgogICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVy
biBtX2lzU3RyaWN0TW9kZTsgfQogICAgYm9vbCBpc0NhY2hlYWJsZVB1dCgpIGNvbnN0IHsgcmV0
dXJuIGlzQ2FjaGVhYmxlKCkgJiYgKG1fdHlwZSA9PSBOZXdQcm9wZXJ0eSB8fCBtX3R5cGUgPT0g
RXhpc3RpbmdQcm9wZXJ0eSk7IH0KICAgIGJvb2wgaXNDYWNoZWFibGVTZXR0ZXIoKSBjb25zdCB7
IHJldHVybiBpc0NhY2hlYWJsZSgpICYmIG1fdHlwZSA9PSBTZXR0ZXJQcm9wZXJ0eTsgfQogICAg
Ym9vbCBpc0NhY2hlYWJsZUN1c3RvbSgpIGNvbnN0IHsgcmV0dXJuIGlzQ2FjaGVhYmxlKCkgJiYg
KG1fdHlwZSA9PSBDdXN0b21WYWx1ZSB8fCBtX3R5cGUgPT0gQ3VzdG9tQWNjZXNzb3IpOyB9CiAg
ICBib29sIGlzQ3VzdG9tQWNjZXNzb3IoKSBjb25zdCB7IHJldHVybiBpc0NhY2hlYWJsZSgpICYm
IG1fdHlwZSA9PSBDdXN0b21BY2Nlc3NvcjsgfQogICAgYm9vbCBpc0luaXRpYWxpemF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemF0aW9uOyB9CgogICAgUHJvcGVydHlPZmZzZXQg
Y2FjaGVkT2Zmc2V0KCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CiAgICB9
CgogICAgdm9pZCBkaXNhYmxlQ2FjaGluZygpCiAgICB7CiAgICAgICAgbV9jYWNoZWFiaWxpdHkg
PSBDYWNoaW5nRGlzYWxsb3dlZDsKICAgIH0KCnByaXZhdGU6CiAgICBib29sIGlzQ2FjaGVhYmxl
KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWFiaWxpdHkgPT0gQ2FjaGluZ0FsbG93ZWQ7IH0KCiAg
ICBUeXBlIG1fdHlwZTsKICAgIEpTT2JqZWN0KiBtX2Jhc2U7CiAgICBKU1ZhbHVlIG1fdGhpc1Zh
bHVlOwogICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICBib29sIG1faXNTdHJpY3RNb2Rl
OwogICAgYm9vbCBtX2lzSW5pdGlhbGl6YXRpb247CiAgICB1aW50OF90IG1fY29udGV4dDsKICAg
IENhY2hlYWJpbGl0eVR5cGUgbV9jYWNoZWFiaWxpdHk7CiAgICBQdXRWYWx1ZUZ1bmMgbV9wdXRG
dW5jdGlvbjsKfTsKCn0KIyAzMiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q3VzdG9tR2V0dGVyU2V0dGVyLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaCIKI2RlZmluZSBTdHJ1Y3R1cmVfaCAKCgoKCiMgMSAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRUeXBlVGFibGUuaCIgMQojIDI3
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFR5cGVUYWJsZS5o
IgojZGVmaW5lIEluZmVycmVkVHlwZVRhYmxlX2ggCgoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFR5cGUuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFR5cGUuaCIKI2RlZmluZSBJbmZlcnJlZFR5cGVf
aCAKCgoKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRG
bGFncy5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkRmxhZ3MuaCIKI2RlZmluZSBQdXRCeUlkRmxhZ3NfaCAKCgoKbmFtZXNwYWNlIEpTQyB7Cgpl
bnVtIFB1dEJ5SWRGbGFncyA6IGludHB0cl90IHsKICAgIFB1dEJ5SWROb25lID0gMCwKCgoKICAg
IFB1dEJ5SWRJc0RpcmVjdCA9IDB4MSwKICAgIFB1dEJ5SWRQZXJzaXN0ZW50RmxhZ3NNYXNrID0g
MHgxLAojIDU2ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZEZs
YWdzLmgiCiAgICBQdXRCeUlkUHJpbWFyeVR5cGVNYXNrID0gMHg2LAogICAgUHV0QnlJZFByaW1h
cnlUeXBlU2Vjb25kYXJ5ID0gMHgwLAogICAgUHV0QnlJZFByaW1hcnlUeXBlT2JqZWN0V2l0aFN0
cnVjdHVyZSA9IDB4MiwKICAgIFB1dEJ5SWRQcmltYXJ5VHlwZU9iamVjdFdpdGhTdHJ1Y3R1cmVP
ck90aGVyID0gMHg0LAoKICAgIFB1dEJ5SWRTZWNvbmRhcnlUeXBlTWFzayA9IC0weDgsCiAgICBQ
dXRCeUlkU2Vjb25kYXJ5VHlwZUJvdHRvbSA9IDB4MCwKICAgIFB1dEJ5SWRTZWNvbmRhcnlUeXBl
Qm9vbGVhbiA9IDB4OCwKICAgIFB1dEJ5SWRTZWNvbmRhcnlUeXBlT3RoZXIgPSAweDEwLAogICAg
UHV0QnlJZFNlY29uZGFyeVR5cGVJbnQzMiA9IDB4MTgsCiAgICBQdXRCeUlkU2Vjb25kYXJ5VHlw
ZU51bWJlciA9IDB4MjAsCiAgICBQdXRCeUlkU2Vjb25kYXJ5VHlwZVN0cmluZyA9IDB4MjgsCiAg
ICBQdXRCeUlkU2Vjb25kYXJ5VHlwZVN5bWJvbCA9IDB4MzAsCiAgICBQdXRCeUlkU2Vjb25kYXJ5
VHlwZU9iamVjdCA9IDB4MzgsCiAgICBQdXRCeUlkU2Vjb25kYXJ5VHlwZU9iamVjdE9yT3RoZXIg
PSAweDQwLAogICAgUHV0QnlJZFNlY29uZGFyeVR5cGVUb3AgPSAweDQ4Cn07CgppbmxpbmUgUHV0
QnlJZEZsYWdzIGVuY29kZVN0cnVjdHVyZUlEKFN0cnVjdHVyZUlEIGlkKQp7CgoKCiAgICBQdXRC
eUlkRmxhZ3MgcmVzdWx0ID0gYml0d2lzZV9jYXN0PFB1dEJ5SWRGbGFncz4oaWQpOwogICAgKCh2
b2lkKTApOwogICAgcmV0dXJuIHJlc3VsdDsKCn0KCmlubGluZSBTdHJ1Y3R1cmVJRCBkZWNvZGVT
dHJ1Y3R1cmVJRChQdXRCeUlkRmxhZ3MgZmxhZ3MpCnsKCgoKICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8U3RydWN0dXJlSUQ+KGZsYWdzICYgUHV0QnlJZFNlY29uZGFyeVR5cGVNYXNrKTsKCn0KCn0K
Cm5hbWVzcGFjZSBXVEYgewoKY2xhc3MgUHJpbnRTdHJlYW07Cgp2b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mLCBKU0M6OlB1dEJ5SWRGbGFncyk7Cgp9CiMgMzMgIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVHlwZS5oIiAyCgoKbmFtZXNwYWNlIEpTQyB7
CgoKCmNsYXNzIEluZmVycmVkVHlwZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewpwdWJsaWM6CiAg
ICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwoKICAgIHN0YXRpYyBJbmZlcnJlZFR5cGUqIGNyZWF0ZShW
TSYpOwoKICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKCiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxh
Z3M7CgogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CgogICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwoKICAgIHByb3RlY3RlZDogc3RhdGljIGNvbnN0IDo6
SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJ
bmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsKCiAgICBlbnVtIEtpbmQgOiB1aW50OF90
IHsKICAgICAgICBCb3R0b20sCiAgICAgICAgQm9vbGVhbiwKICAgICAgICBPdGhlciwKICAgICAg
ICBJbnQzMiwKICAgICAgICBOdW1iZXIsCiAgICAgICAgU3RyaW5nLAogICAgICAgIFN5bWJvbCwK
ICAgICAgICBPYmplY3RXaXRoU3RydWN0dXJlLAogICAgICAgIE9iamVjdFdpdGhTdHJ1Y3R1cmVP
ck90aGVyLAogICAgICAgIE9iamVjdCwKICAgICAgICBPYmplY3RPck90aGVyLAogICAgICAgIFRv
cAogICAgfTsKCiAgICBzdGF0aWMgS2luZCBraW5kRm9yRmxhZ3MoUHV0QnlJZEZsYWdzKTsKCiAg
ICBzdGF0aWMgYm9vbCBoYXNTdHJ1Y3R1cmUoS2luZCBraW5kKQogICAgewogICAgICAgIHN3aXRj
aCAoa2luZCkgewogICAgICAgIGNhc2UgT2JqZWN0V2l0aFN0cnVjdHVyZToKICAgICAgICBjYXNl
IE9iamVjdFdpdGhTdHJ1Y3R1cmVPck90aGVyOgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoK
ICAgIGNsYXNzIERlc2NyaXB0b3IgewogICAgcHVibGljOgogICAgICAgIERlc2NyaXB0b3IoKQog
ICAgICAgICAgICA6IG1fa2luZChCb3R0b20pCiAgICAgICAgICAgICwgbV9zdHJ1Y3R1cmUobnVs
bHB0cikKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBEZXNjcmlwdG9yKEtpbmQga2luZCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBudWxscHRyKQogICAgICAgICAgICA6IG1fa2luZChraW5k
KQogICAgICAgICAgICAsIG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAgICB7CiAgICAgICAg
ICAgIGlmIChoYXNTdHJ1Y3R1cmUoa2luZCkpCiAgICAgICAgICAgICAgICAoKHZvaWQpMCk7CiAg
ICAgICAgfQoKICAgICAgICBzdGF0aWMgRGVzY3JpcHRvciBmb3JWYWx1ZShKU1ZhbHVlKTsKCiAg
ICAgICAgc3RhdGljIERlc2NyaXB0b3IgZm9yRmxhZ3MoVk0mLCBQdXRCeUlkRmxhZ3MpOwoKICAg
ICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAg
IHJldHVybiBtX2tpbmQgIT0gQm90dG9tIHx8IG1fc3RydWN0dXJlOwogICAgICAgIH0KCiAgICAg
ICAgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CiAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQoKICAgICAgICBQdXRC
eUlkRmxhZ3MgcHV0QnlJZEZsYWdzKCkgY29uc3Q7CgogICAgICAgIGlubGluZSBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgaW5jbHVkZXNWYWx1ZShKU1ZhbHVlIHZhbHVl
KQogICAgICAgIHsKICAgICAgICAgICAgc3dpdGNoIChtX2tpbmQpIHsKICAgICAgICAgICAgY2Fz
ZSBCb3R0b206CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIGNhc2Ug
Qm9vbGVhbjoKICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5pc0Jvb2xlYW4oKTsKICAgICAg
ICAgICAgY2FzZSBPdGhlcjoKICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5pc1VuZGVmaW5l
ZE9yTnVsbCgpOwogICAgICAgICAgICBjYXNlIEludDMyOgogICAgICAgICAgICAgICAgcmV0dXJu
IHZhbHVlLmlzSW50MzIoKTsKICAgICAgICAgICAgY2FzZSBOdW1iZXI6CiAgICAgICAgICAgICAg
ICByZXR1cm4gdmFsdWUuaXNOdW1iZXIoKTsKICAgICAgICAgICAgY2FzZSBTdHJpbmc6CiAgICAg
ICAgICAgICAgICByZXR1cm4gdmFsdWUuaXNTdHJpbmcoKTsKICAgICAgICAgICAgY2FzZSBTeW1i
b2w6CiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuaXNTeW1ib2woKTsKICAgICAgICAgICAg
Y2FzZSBPYmplY3RXaXRoU3RydWN0dXJlOgogICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmlz
Q2VsbCgpICYmIHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSA9PSBtX3N0cnVjdHVyZTsKICAg
ICAgICAgICAgY2FzZSBPYmplY3RXaXRoU3RydWN0dXJlT3JPdGhlcjoKICAgICAgICAgICAgICAg
IHJldHVybiB2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpCiAgICAgICAgICAgICAgICAgICAgfHwg
KHZhbHVlLmlzQ2VsbCgpICYmIHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSA9PSBtX3N0cnVj
dHVyZSk7CiAgICAgICAgICAgIGNhc2UgT2JqZWN0OgogICAgICAgICAgICAgICAgcmV0dXJuIHZh
bHVlLmlzT2JqZWN0KCk7CiAgICAgICAgICAgIGNhc2UgT2JqZWN0T3JPdGhlcjoKICAgICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8IHZhbHVlLmlzT2JqZWN0
KCk7CiAgICAgICAgICAgIGNhc2UgVG9wOgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgIFdURkNyYXNoKCk7CiAgICAgICAgfQoKICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRGVzY3JpcHRvciYgb3RoZXIpIGNvbnN0CiAgICAgICAgewog
ICAgICAgICAgICByZXR1cm4gbV9raW5kID09IG90aGVyLm1fa2luZAogICAgICAgICAgICAgICAg
JiYgbV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1Y3R1cmU7CiAgICAgICAgfQoKICAgICAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgRGVzY3JpcHRvciYgb3RoZXIpIGNvbnN0CiAgICAgICAgewog
ICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgICAgfQoKICAgICAgICB1
bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBXVEY6OlB0
ckhhc2g8U3RydWN0dXJlKj46Omhhc2gobV9zdHJ1Y3R1cmUpIF4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fa2luZCk7CiAgICAgICAgfQoKICAgICAgICB2b2lkIG1lcmdlKGNvbnN0IERlc2NyaXB0
b3ImKTsKICAgICAgICB2b2lkIHJlbW92ZVN0cnVjdHVyZSgpOwoKCiAgICAgICAgYm9vbCBzdWJz
dW1lcyhjb25zdCBEZXNjcmlwdG9yJikgY29uc3Q7CgogICAgICAgIHZvaWQgZHVtcEluQ29udGV4
dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAgICAgICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7CgogICAgcHJpdmF0ZToKICAgICAgICBLaW5kIG1fa2luZDsKICAg
ICAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwogICAgfTsKCiAgICBDb25jdXJyZW50SklUTG9j
ayYgbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fbG9jazsgfQoKICAgIERlc2NyaXB0b3IgZGVzY3Jp
cHRvck1haW5UaHJlYWQoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBEZXNjcmlwdG9yKG1f
a2luZCwgbV9zdHJ1Y3R1cmUgPyBtX3N0cnVjdHVyZS0+c3RydWN0dXJlKCkgOiBudWxscHRyKTsK
ICAgIH0KCiAgICBEZXNjcmlwdG9yIGRlc2NyaXB0b3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tl
ciYpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JNYWluVGhyZWFkKCk7CiAg
ICB9CiAgICBEZXNjcmlwdG9yIGRlc2NyaXB0b3IoKSBjb25zdAogICAgewogICAgICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3Io
bG9ja2VyKTsKICAgIH0KCiAgICBLaW5kIGtpbmQoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYg
bG9ja2VyKSBjb25zdCB7IHJldHVybiBkZXNjcmlwdG9yKGxvY2tlcikua2luZCgpOyB9CgogICAg
Ym9vbCBpc1RvcCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9PSBUb3A7IH0KICAgIGJvb2wgaXNS
ZWxldmFudCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCAhPSBUb3A7IH0KCgogICAgaW5saW5lIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCB3aWxsU3RvcmVWYWx1ZShWTSYg
dm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiAgICB7CiAgICAg
ICAgRGVzY3JpcHRvciBjdXJyZW50RGVzY3JpcHRvciA9IGRlc2NyaXB0b3JNYWluVGhyZWFkKCk7
CiAgICAgICAgaWYgKGN1cnJlbnREZXNjcmlwdG9yLmluY2x1ZGVzVmFsdWUodmFsdWUpKQogICAg
ICAgICAgICByZXR1cm4gY3VycmVudERlc2NyaXB0b3Iua2luZCgpICE9IFRvcDsKICAgICAgICBy
ZXR1cm4gd2lsbFN0b3JlVmFsdWVTbG93KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgIH0K
CgogICAgdm9pZCBtYWtlVG9wKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAg
IHsKICAgICAgICBpZiAoaXNUb3AoKSkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIG1ha2VU
b3BTbG93KHZtLCBwcm9wZXJ0eU5hbWUpOwogICAgfQoKCgogICAgYm9vbCBjYW5XYXRjaChjb25z
dCBDb25jdXJyZW50SklUTG9ja2VyJiwgY29uc3QgRGVzY3JpcHRvciYpOwogICAgYm9vbCBjYW5X
YXRjaChjb25zdCBEZXNjcmlwdG9yJik7CgogICAgdm9pZCBhZGRXYXRjaHBvaW50KGNvbnN0IENv
bmN1cnJlbnRKSVRMb2NrZXImLCBXYXRjaHBvaW50Kik7CiAgICB2b2lkIGFkZFdhdGNocG9pbnQo
V2F0Y2hwb2ludCopOwoKICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwoKcHJpdmF0
ZToKICAgIEluZmVycmVkVHlwZShWTSYpOwogICAgfkluZmVycmVkVHlwZSgpOwoKICAgIGJvb2wg
d2lsbFN0b3JlVmFsdWVTbG93KFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKICAgIHZvaWQg
bWFrZVRvcFNsb3coVk0mLCBQcm9wZXJ0eU5hbWUpOwoKCgogICAgYm9vbCBzZXQoY29uc3QgQ29u
Y3VycmVudEpJVExvY2tlciYsIFZNJiwgRGVzY3JpcHRvcik7CgogICAgdm9pZCByZW1vdmVTdHJ1
Y3R1cmUoKTsKCiAgICBtdXRhYmxlIENvbmN1cnJlbnRKSVRMb2NrIG1fbG9jazsKCiAgICBLaW5k
IG1fa2luZCB7IEJvdHRvbSB9OwoKICAgIGNsYXNzIEluZmVycmVkU3RydWN0dXJlV2F0Y2hwb2lu
dCA6IHB1YmxpYyBXYXRjaHBvaW50IHsKICAgIHB1YmxpYzoKICAgICAgICBJbmZlcnJlZFN0cnVj
dHVyZVdhdGNocG9pbnQoKSB7IH0KICAgIHByb3RlY3RlZDoKICAgICAgICB2b2lkIGZpcmVJbnRl
cm5hbChjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAgICB9OwoKICAgIGNsYXNzIEluZmVy
cmVkU3RydWN0dXJlRmluYWxpemVyIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIgewog
ICAgcHVibGljOgogICAgICAgIEluZmVycmVkU3RydWN0dXJlRmluYWxpemVyKCkgeyB9CiAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpIG92ZXJyaWRl
OwogICAgfTsKCiAgICBjbGFzcyBJbmZlcnJlZFN0cnVjdHVyZSB7CiAgICAgICAgcHVibGljOiB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZv
aWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQq
IG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhz
aXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVl
KHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0
aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHByaXZhdGU6IHR5cGVkZWYgaW50
IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87CiAgICBwdWJsaWM6
CiAgICAgICAgSW5mZXJyZWRTdHJ1Y3R1cmUoVk0mLCBJbmZlcnJlZFR5cGUqIHBhcmVudCwgU3Ry
dWN0dXJlKik7CgogICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJ1Y3R1cmUuZ2V0KCk7IH07CgogICAgcHJpdmF0ZToKICAgICAgICBmcmllbmQgY2xhc3Mg
SW5mZXJyZWRUeXBlOwogICAgICAgIGZyaWVuZCBjbGFzcyBJbmZlcnJlZFN0cnVjdHVyZVdhdGNo
cG9pbnQ7CiAgICAgICAgZnJpZW5kIGNsYXNzIEluZmVycmVkU3RydWN0dXJlRmluYWxpemVyOwoK
ICAgICAgICBJbmZlcnJlZFR5cGUqIG1fcGFyZW50OwogICAgICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fc3RydWN0dXJlOwoKICAgICAgICBJbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9pbnQg
bV93YXRjaHBvaW50OwogICAgICAgIEluZmVycmVkU3RydWN0dXJlRmluYWxpemVyIG1fZmluYWxp
emVyOwogICAgfTsKCiAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5mZXJyZWRTdHJ1Y3R1cmU+IG1fc3Ry
dWN0dXJlOwoKCgoKICAgIElubGluZVdhdGNocG9pbnRTZXQgbV93YXRjaHBvaW50U2V0Owp9OwoK
fQoKbmFtZXNwYWNlIFdURiB7Cgp2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6
OkluZmVycmVkVHlwZTo6S2luZCk7Cgp9CiMgMzEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luZmVycmVkVHlwZVRhYmxlLmgiIDIKCgpuYW1lc3BhY2UgSlNDIHsKIyA0MiAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRUeXBlVGFibGUuaCIK
Y2xhc3MgSW5mZXJyZWRUeXBlVGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKcHVibGljOgog
ICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKCiAgICBzdGF0aWMgSW5mZXJyZWRUeXBlVGFibGUqIGNy
ZWF0ZShWTSYpOwoKICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVl
OwogICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKCiAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0
dXJlRmxhZ3M7CgogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CgogICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwoKICAgIHByb3RlY3RlZDogc3RhdGljIGNv
bnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdCA6OkpTQzo6
Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsKCiAgICBDb25jdXJyZW50SklU
TG9jayYgbG9jaygpIHsgcmV0dXJuIG1fbG9jazsgfQoKICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGFibGUuaXNFbXB0eSgpOyB9CgoKCiAgICBJbmZlcnJlZFR5cGUqIGdldChj
b25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKICAgIEluZmVy
cmVkVHlwZSogZ2V0KFVuaXF1ZWRTdHJpbmdJbXBsKik7CiAgICBJbmZlcnJlZFR5cGUqIGdldChQ
cm9wZXJ0eU5hbWUpOwoKICAgIGVudW0gU3RvcmVkUHJvcGVydHlBZ2UgewogICAgICAgIE5ld1By
b3BlcnR5LAogICAgICAgIE9sZFByb3BlcnR5CiAgICB9OwoKCgogICAgYm9vbCB3aWxsU3RvcmVW
YWx1ZShWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgU3RvcmVkUHJvcGVydHlBZ2UpOwoKCiAg
ICB2b2lkIG1ha2VUb3AoVk0mLCBQcm9wZXJ0eU5hbWUsIFN0b3JlZFByb3BlcnR5QWdlKTsKCnBy
aXZhdGU6CiAgICBJbmZlcnJlZFR5cGVUYWJsZShWTSYpOwogICAgfkluZmVycmVkVHlwZVRhYmxl
KCk7CiMgMTAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFR5
cGVUYWJsZS5oIgogICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4s
IFdyaXRlQmFycmllcjxJbmZlcnJlZFR5cGU+LCBJZGVudGlmaWVyUmVwSGFzaD4gVGFibGVUeXBl
OwoKICAgIFRhYmxlVHlwZSBtX3RhYmxlOwoKCgogICAgQ29uY3VycmVudEpJVExvY2sgbV9sb2Nr
Owp9OwoKfQojIDMzICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaCIgMgoKCgoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU5hbWVBcnJheS5oIiAxCiMgMjIgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgiCiNkZWZpbmUgUHJvcGVydHlOYW1lQXJyYXlfaCAKCgoK
CgoKbmFtZXNwYWNlIEpTQyB7CgoKY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhIDogcHVibGlj
IFJlZkNvdW50ZWQ8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiB7CnB1YmxpYzoKICAgIHR5cGVkZWYg
VmVjdG9yPElkZW50aWZpZXIsIDIwPiBQcm9wZXJ0eU5hbWVWZWN0b3I7CgogICAgc3RhdGljIFJl
ZjxQcm9wZXJ0eU5hbWVBcnJheURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UHJvcGVydHlOYW1lQXJyYXlEYXRhKTsgfQoKICAgIFByb3BlcnR5TmFtZVZlY3RvciYgcHJvcGVy
dHlOYW1lVmVjdG9yKCkgeyByZXR1cm4gbV9wcm9wZXJ0eU5hbWVWZWN0b3I7IH0KCnByaXZhdGU6
CiAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGEoKQogICAgewogICAgfQoKICAgIFByb3BlcnR5TmFt
ZVZlY3RvciBtX3Byb3BlcnR5TmFtZVZlY3RvcjsKfTsKCgpjbGFzcyBQcm9wZXJ0eU5hbWVBcnJh
eSB7CnB1YmxpYzoKICAgIFByb3BlcnR5TmFtZUFycmF5KFZNKiB2bSwgUHJvcGVydHlOYW1lTW9k
ZSBtb2RlKQogICAgICAgIDogbV9kYXRhKFByb3BlcnR5TmFtZUFycmF5RGF0YTo6Y3JlYXRlKCkp
CiAgICAgICAgLCBtX3ZtKHZtKQogICAgICAgICwgbV9tb2RlKG1vZGUpCiAgICB7CiAgICB9Cgog
ICAgUHJvcGVydHlOYW1lQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVNb2RlIG1v
ZGUpCiAgICAgICAgOiBQcm9wZXJ0eU5hbWVBcnJheSgmZXhlYy0+dm0oKSwgbW9kZSkKICAgIHsK
ICAgIH0KCiAgICBWTSogdm0oKSB7IHJldHVybiBtX3ZtOyB9CgogICAgdm9pZCBhZGQodWludDMy
X3QgaW5kZXgpCiAgICB7CiAgICAgICAgYWRkKElkZW50aWZpZXI6OmZyb20obV92bSwgaW5kZXgp
KTsKICAgIH0KCiAgICB2b2lkIGFkZChjb25zdCBJZGVudGlmaWVyJik7CiAgICB2b2lkIGFkZChV
bmlxdWVkU3RyaW5nSW1wbCopOwogICAgdm9pZCBhZGRVbmNoZWNrZWQoVW5pcXVlZFN0cmluZ0lt
cGwqKTsKCiAgICBJZGVudGlmaWVyJiBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIHsgcmV0dXJuIG1f
ZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV07IH0KICAgIGNvbnN0IElkZW50aWZpZXImIG9w
ZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVW
ZWN0b3IoKVtpXTsgfQoKICAgIHZvaWQgc2V0RGF0YShQYXNzUmVmUHRyPFByb3BlcnR5TmFtZUFy
cmF5RGF0YT4gZGF0YSkgeyBtX2RhdGEgPSBkYXRhOyB9CiAgICBQcm9wZXJ0eU5hbWVBcnJheURh
dGEqIGRhdGEoKSB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KICAgIFBhc3NSZWZQdHI8UHJvcGVy
dHlOYW1lQXJyYXlEYXRhPiByZWxlYXNlRGF0YSgpIHsgcmV0dXJuIG1fZGF0YS5yZWxlYXNlKCk7
IH0KCgogICAgYm9vbCBjYW5BZGRLbm93blVuaXF1ZUZvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuaXNFbXB0eSgpOyB9CiAgICB0eXBlZGVm
IFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVydHlOYW1lVmVjdG9yOjpjb25zdF9pdGVyYXRv
ciBjb25zdF9pdGVyYXRvcjsKICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5zaXplKCk7IH0KICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5iZWdpbigpOyB9
CiAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEtPnByb3BlcnR5
TmFtZVZlY3RvcigpLmVuZCgpOyB9CgogICAgUHJvcGVydHlOYW1lTW9kZSBtb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9tb2RlOyB9CiAgICBib29sIGluY2x1ZGVTeW1ib2xQcm9wZXJ0aWVzKCkgY29u
c3Q7CiAgICBib29sIGluY2x1ZGVTdHJpbmdQcm9wZXJ0aWVzKCkgY29uc3Q7Cgpwcml2YXRlOgog
ICAgYm9vbCBpc1VpZE1hdGNoZWRUb1R5cGVNb2RlKFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudGlm
aWVyKTsKCiAgICBSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiBtX2RhdGE7CiAgICBIYXNo
U2V0PFVuaXF1ZWRTdHJpbmdJbXBsKj4gbV9zZXQ7CiAgICBWTSogbV92bTsKICAgIFByb3BlcnR5
TmFtZU1vZGUgbV9tb2RlOwp9OwoKaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fKSkgdm9pZCBQcm9wZXJ0eU5hbWVBcnJheTo6YWRkKGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIpCnsKICAgIGFkZChpZGVudGlmaWVyLmltcGwoKSk7Cn0KCmlubGluZSBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZFVuY2hl
Y2tlZChVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnRpZmllcikKewogICAgaWYgKCFpc1VpZE1hdGNo
ZWRUb1R5cGVNb2RlKGlkZW50aWZpZXIpKQogICAgICAgIHJldHVybjsKICAgIG1fZGF0YS0+cHJv
cGVydHlOYW1lVmVjdG9yKCkuYXBwZW5kKElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgaWRlbnRp
ZmllcikpOwp9CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lk
IFByb3BlcnR5TmFtZUFycmF5OjphZGQoVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50aWZpZXIpCnsK
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzZXRUaHJlc2hvbGQgPSAyMDsKCiAgICAoKHZvaWQp
MCk7CgogICAgaWYgKCFpc1VpZE1hdGNoZWRUb1R5cGVNb2RlKGlkZW50aWZpZXIpKQogICAgICAg
IHJldHVybjsKCiAgICBpZiAoc2l6ZSgpIDwgc2V0VGhyZXNob2xkKSB7CiAgICAgICAgaWYgKG1f
ZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuY29udGFpbnMoaWRlbnRpZmllcikpCiAgICAgICAg
ICAgIHJldHVybjsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKG1fc2V0LmlzRW1wdHkoKSkgewog
ICAgICAgICAgICBmb3IgKElkZW50aWZpZXImIG5hbWUgOiBtX2RhdGEtPnByb3BlcnR5TmFtZVZl
Y3RvcigpKQogICAgICAgICAgICAgICAgbV9zZXQuYWRkKG5hbWUuaW1wbCgpKTsKICAgICAgICB9
CiAgICAgICAgaWYgKCFtX3NldC5hZGQoaWRlbnRpZmllcikuaXNOZXdFbnRyeSkKICAgICAgICAg
ICAgcmV0dXJuOwogICAgfQoKICAgIGFkZFVuY2hlY2tlZChpZGVudGlmaWVyKTsKfQoKaW5saW5l
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBQcm9wZXJ0eU5hbWVBcnJh
eTo6aXNVaWRNYXRjaGVkVG9UeXBlTW9kZShVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnRpZmllcikK
ewogICAgaWYgKGlkZW50aWZpZXItPmlzU3ltYm9sKCkpCiAgICAgICAgcmV0dXJuIGluY2x1ZGVT
eW1ib2xQcm9wZXJ0aWVzKCk7CiAgICByZXR1cm4gaW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKTsK
fQoKaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBQcm9wZXJ0
eU5hbWVBcnJheTo6aW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSBjb25zdAp7CiAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8UHJvcGVydHlOYW1lTW9kZT46OnR5cGU+
KG1fbW9kZSkgJiBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZTxQcm9wZXJ0eU5hbWVN
b2RlPjo6dHlwZT4oUHJvcGVydHlOYW1lTW9kZTo6U3ltYm9scyk7Cn0KCmlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgUHJvcGVydHlOYW1lQXJyYXk6OmluY2x1
ZGVTdHJpbmdQcm9wZXJ0aWVzKCkgY29uc3QKewogICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6
dW5kZXJseWluZ190eXBlPFByb3BlcnR5TmFtZU1vZGU+Ojp0eXBlPihtX21vZGUpICYgc3RhdGlj
X2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8UHJvcGVydHlOYW1lTW9kZT46OnR5cGU+KFByb3Bl
cnR5TmFtZU1vZGU6OlN0cmluZ3MpOwp9Cgp9CiMgMzggIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIiAyCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3RlY3QuaCIgMQojIDIzICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm90ZWN0LmgiCiNkZWZpbmUgUHJvdGVjdF9oIAoKCgoKbmFtZXNwYWNlIEpT
QyB7CgppbmxpbmUgdm9pZCBnY1Byb3RlY3QoSlNDZWxsKiB2YWwpCnsKICAgIEhlYXA6OmhlYXAo
dmFsKS0+cHJvdGVjdCh2YWwpOwp9CgppbmxpbmUgdm9pZCBnY1VucHJvdGVjdChKU0NlbGwqIHZh
bCkKewogICAgSGVhcDo6aGVhcCh2YWwpLT51bnByb3RlY3QodmFsKTsKfQoKaW5saW5lIHZvaWQg
Z2NQcm90ZWN0TnVsbFRvbGVyYW50KEpTQ2VsbCogdmFsKQp7CiAgICBpZiAodmFsKQogICAgICAg
IGdjUHJvdGVjdCh2YWwpOwp9CgppbmxpbmUgdm9pZCBnY1VucHJvdGVjdE51bGxUb2xlcmFudChK
U0NlbGwqIHZhbCkKewogICAgaWYgKHZhbCkKICAgICAgICBnY1VucHJvdGVjdCh2YWwpOwp9Cgpp
bmxpbmUgdm9pZCBnY1Byb3RlY3QoSlNWYWx1ZSB2YWx1ZSkKewogICAgaWYgKHZhbHVlICYmIHZh
bHVlLmlzQ2VsbCgpKQogICAgICAgIGdjUHJvdGVjdCh2YWx1ZS5hc0NlbGwoKSk7Cn0KCmlubGlu
ZSB2b2lkIGdjVW5wcm90ZWN0KEpTVmFsdWUgdmFsdWUpCnsKICAgIGlmICh2YWx1ZSAmJiB2YWx1
ZS5pc0NlbGwoKSkKICAgICAgICBnY1VucHJvdGVjdCh2YWx1ZS5hc0NlbGwoKSk7Cn0KCn0KIyA0
MCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgiIDIKCiMg
MSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURCbG9iLmgi
IDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURC
bG9iLmgiCiNkZWZpbmUgU3RydWN0dXJlSURCbG9iX2ggCgoKCgojIDEgIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaCIgMQojIDMzICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJREJsb2IuaCIgMgoKbmFtZXNw
YWNlIEpTQyB7CgpjbGFzcyBTdHJ1Y3R1cmVJREJsb2IgewogICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKcHVibGljOgogICAgU3RydWN0dXJlSURCbG9iKCkKICAgIHsKICAg
ICAgICB1LmRvdWJsZVdvcmQgPSAweGJiYWRiZWVmOwogICAgfQoKICAgIFN0cnVjdHVyZUlEQmxv
YihTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCwgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwgY29u
c3QgVHlwZUluZm8mIHR5cGVJbmZvKQogICAgewogICAgICAgIHUuZmllbGRzLnN0cnVjdHVyZUlE
ID0gc3RydWN0dXJlSUQ7CiAgICAgICAgdS5maWVsZHMuaW5kZXhpbmdUeXBlID0gaW5kZXhpbmdU
eXBlOwogICAgICAgIHUuZmllbGRzLnR5cGUgPSB0eXBlSW5mby50eXBlKCk7CiAgICAgICAgdS5m
aWVsZHMuaW5saW5lVHlwZUZsYWdzID0gdHlwZUluZm8uaW5saW5lVHlwZUZsYWdzKCk7CiAgICAg
ICAgdS5maWVsZHMuZGVmYXVsdENlbGxTdGF0ZSA9IENlbGxTdGF0ZTo6TmV3V2hpdGU7CiAgICB9
CgogICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgU3RydWN0dXJlSURCbG9iJiBvdGhlcikgeyB1LmRv
dWJsZVdvcmQgPSBvdGhlci51LmRvdWJsZVdvcmQ7IH0KCiAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1
cmVJRCgpIGNvbnN0IHsgcmV0dXJuIHUuZmllbGRzLnN0cnVjdHVyZUlEOyB9CiAgICBJbmRleGlu
Z1R5cGUgaW5kZXhpbmdUeXBlKCkgY29uc3QgeyByZXR1cm4gdS5maWVsZHMuaW5kZXhpbmdUeXBl
OyB9CiAgICB2b2lkIHNldEluZGV4aW5nVHlwZShJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKSB7
IHUuZmllbGRzLmluZGV4aW5nVHlwZSA9IGluZGV4aW5nVHlwZTsgfQogICAgSlNUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiB1LmZpZWxkcy50eXBlOyB9CiAgICBUeXBlSW5mbzo6SW5saW5lVHlw
ZUZsYWdzIGlubGluZVR5cGVGbGFncygpIGNvbnN0IHsgcmV0dXJuIHUuZmllbGRzLmlubGluZVR5
cGVGbGFnczsgfQoKICAgIFR5cGVJbmZvIHR5cGVJbmZvKFR5cGVJbmZvOjpPdXRPZkxpbmVUeXBl
RmxhZ3Mgb3V0T2ZMaW5lVHlwZUZsYWdzKSBjb25zdCB7IHJldHVybiBUeXBlSW5mbyh0eXBlKCks
IGlubGluZVR5cGVGbGFncygpLCBvdXRPZkxpbmVUeXBlRmxhZ3MpOyB9CgogICAgaW50MzJfdCBi
bG9iRXhjbHVkaW5nU3RydWN0dXJlSUQoKSBjb25zdCB7IHJldHVybiB1LndvcmRzLndvcmQyOyB9
CiAgICBpbnQ2NF90IGJsb2IoKSBjb25zdCB7IHJldHVybiB1LmRvdWJsZVdvcmQ7IH0KCiAgICBz
dGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZUlET2Zmc2V0KCkKICAgIHsKICAgICAgICByZXR1cm4g
KHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8U3RydWN0dXJl
SURCbG9iKj4oMHg0MDAwKS0+dS5maWVsZHMuc3RydWN0dXJlSUQpKSAtIDB4NDAwMCk7CiAgICB9
CgogICAgc3RhdGljIHB0cmRpZmZfdCBpbmRleGluZ1R5cGVPZmZzZXQoKQogICAgewogICAgICAg
IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxT
dHJ1Y3R1cmVJREJsb2IqPigweDQwMDApLT51LmZpZWxkcy5pbmRleGluZ1R5cGUpKSAtIDB4NDAw
MCk7CiAgICB9Cgpwcml2YXRlOgogICAgdW5pb24gewogICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEOwogICAgICAgICAgICBJbmRleGluZ1R5cGUgaW5k
ZXhpbmdUeXBlOwogICAgICAgICAgICBKU1R5cGUgdHlwZTsKICAgICAgICAgICAgVHlwZUluZm86
OklubGluZVR5cGVGbGFncyBpbmxpbmVUeXBlRmxhZ3M7CiAgICAgICAgICAgIENlbGxTdGF0ZSBk
ZWZhdWx0Q2VsbFN0YXRlOwogICAgICAgIH0gZmllbGRzOwogICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgIGludDMyX3Qgd29yZDE7CiAgICAgICAgICAgIGludDMyX3Qgd29yZDI7CiAgICAgICAg
fSB3b3JkczsKICAgICAgICBpbnQ2NF90IGRvdWJsZVdvcmQ7CiAgICB9IHU7Cn07Cgp9CiMgNDIg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIiAyCiMgMSAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaCIg
MQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJl
RGF0YS5oIgojZGVmaW5lIFN0cnVjdHVyZVJhcmVEYXRhX2ggCgoKCgoKCgpuYW1lc3BhY2UgSlND
IHsKCmNsYXNzIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjsKY2xhc3MgU3RydWN0dXJlOwpjbGFz
cyBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDsKY2xhc3MgT2JqZWN0
VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ7CgpjbGFzcyBT
dHJ1Y3R1cmVSYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewpwdWJsaWM6CiAgICB0eXBl
ZGVmIEpTQ2VsbCBCYXNlOwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwoKICAgIHN0YXRp
YyBTdHJ1Y3R1cmVSYXJlRGF0YSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CgogICAgc3RhdGlj
IGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwoKICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKCiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKCiAgICBTdHJ1Y3R1cmUqIHByZXZp
b3VzSUQoKSBjb25zdDsKICAgIHZvaWQgc2V0UHJldmlvdXNJRChWTSYsIFN0cnVjdHVyZSopOwog
ICAgdm9pZCBjbGVhclByZXZpb3VzSUQoKTsKCiAgICBKU1N0cmluZyogb2JqZWN0VG9TdHJpbmdW
YWx1ZSgpIGNvbnN0OwogICAgdm9pZCBzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSos
IFZNJiwgU3RydWN0dXJlKiBiYXNlU3RydWN0dXJlLCBKU1N0cmluZyogdmFsdWUsIFByb3BlcnR5
U2xvdCB0b1N0cmluZ1RhZ1N5bWJvbFNsb3QpOwoKICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRv
ciogY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcigpIGNvbnN0OwogICAgdm9pZCBzZXRDYWNo
ZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKFZNJiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKik7
CgogICAgcHJvdGVjdGVkOiBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1
YmxpYzogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19p
bmZvOyB9OwoKcHJpdmF0ZToKICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmU7CiAgICBmcmllbmQg
Y2xhc3MgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ7CiAgICBmcmll
bmQgY2xhc3MgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnQ7CgogICAgdm9pZCBjbGVhck9iamVjdFRvU3RyaW5nVmFsdWUoKTsKCiAgICBTdHJ1Y3R1
cmVSYXJlRGF0YShWTSYsIFN0cnVjdHVyZSopOwoKICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fcHJldmlvdXM7CiAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fb2JqZWN0VG9TdHJpbmdW
YWx1ZTsKICAgIFdyaXRlQmFycmllcjxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I+IG1fY2FjaGVk
UHJvcGVydHlOYW1lRW51bWVyYXRvcjsKCiAgICB0eXBlZGVmIEhhc2hNYXA8UHJvcGVydHlPZmZz
ZXQsIFJlZlB0cjxXYXRjaHBvaW50U2V0PiwgV1RGOjpJbnRIYXNoPFByb3BlcnR5T2Zmc2V0Piwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxQcm9wZXJ0eU9mZnNldD4+IFByb3Bl
cnR5V2F0Y2hwb2ludE1hcDsKICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9wZXJ0eVdhdGNocG9pbnRN
YXA+IG1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0czsKICAgIEJhZzxPYmplY3RUb1N0cmluZ0Fk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludD4gbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlV2F0Y2hw
b2ludFNldDsKICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludD4gbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJy
ZWRWYWx1ZVdhdGNocG9pbnQ7CiAgICBib29sIG1fZ2l2ZVVwT25PYmplY3RUb1N0cmluZ1ZhbHVl
Q2FjaGU7Cn07Cgp9CiMgNDMgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oIiAyCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCiNkZWZpbmUgU3RydWN0dXJl
UmFyZURhdGFJbmxpbmVzX2ggCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgiIDEKIyAyNCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaCIKI2RlZmluZSBKU1N0cmluZ19oIAoKCgoKCgojIDEgIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIiAxCiMgMzIgIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgiIDIKCgoKbmFtZXNwYWNlIEpTQyB7
CgpjbGFzcyBKU1N0cmluZzsKY2xhc3MgSlNSb3BlU3RyaW5nOwpjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CgpKU1N0cmluZyoganNFbXB0eVN0cmluZyhWTSopOwpKU1N0cmluZyoganNFbXB0
eVN0cmluZyhFeGVjU3RhdGUqKTsKSlNTdHJpbmcqIGpzU3RyaW5nKFZNKiwgY29uc3QgU3RyaW5n
Jik7CkpTU3RyaW5nKiBqc1N0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKCkpTU3Ry
aW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhWTSosIFVDaGFyKTsKSlNTdHJpbmcqIGpzU2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nKEV4ZWNTdGF0ZSosIFVDaGFyKTsKSlNTdHJpbmcqIGpzU3Vic3Ry
aW5nKFZNKiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OwpKU1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiwgdW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwoKCgpKU1N0cmluZyoganNOb250cml2aWFsU3Ry
aW5nKFZNKiwgY29uc3QgU3RyaW5nJik7CkpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhl
Y1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CkpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhl
Y1N0YXRlKiwgU3RyaW5nJiYpOwoKCgoKSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoVk0qLCBjb25z
dCBTdHJpbmcmKTsKSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJik7CgpKU1JvcGVTdHJpbmcqIGpzU3RyaW5nQnVpbGRlcihWTSopOwoKYm9vbCBpc0pTU3Ry
aW5nKEpTQ2VsbCopOwpib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSk7CkpTU3RyaW5nKiBhc1N0cmlu
ZyhKU1ZhbHVlKTsKCnN0cnVjdCBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgewogICAg
U3RyaW5nVmlldyB2aWV3OwogICAgU3RyaW5nIHVuZGVybHlpbmdTdHJpbmc7Cn07CgpjbGFzcyBK
U1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgewpwdWJsaWM6CiAgICBmcmllbmQgY2xhc3MgSklUOwog
ICAgZnJpZW5kIGNsYXNzIFZNOwogICAgZnJpZW5kIGNsYXNzIFNwZWNpYWxpemVkVGh1bmtKSVQ7
CiAgICBmcmllbmQgY2xhc3MgSlNSb3BlU3RyaW5nOwogICAgZnJpZW5kIGNsYXNzIE1hcmtTdGFj
azsKICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKICAgIGZyaWVuZCBzdHJ1Y3QgVGh1bmtI
ZWxwZXJzOwoKICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldo
ZW5MZW5ndGhJc05vdFplcm8gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgT3ZlcnJpZGVzVG9UaGlz
OwoKICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKCiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWF4
TGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7Cgpwcml2YXRlOgog
ICAgSlNTdHJpbmcoVk0mIHZtLCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHZhbHVlKQogICAgICAg
IDogSlNDZWxsKHZtLCB2bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgLCBtX2ZsYWdz
KDApCiAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgewogICAgfQoKICAgIEpTU3RyaW5nKFZN
JiB2bSkKICAgICAgICA6IEpTQ2VsbCh2bSwgdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKQogICAg
ICAgICwgbV9mbGFncygwKQogICAgewogICAgfQoKICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBzaXplX3QgbGVuZ3RoKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgbV9sZW5ndGggPSBsZW5ndGg7CiAgICAgICAg
c2V0SXM4Qml0KG1fdmFsdWUuaW1wbCgpLT5pczhCaXQoKSk7CiAgICB9CgogICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIHNpemVfdCBsZW5ndGgsIHNpemVfdCBjb3N0KQogICAgewogICAg
ICAgICgodm9pZCkwKTsKICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAg
bV9sZW5ndGggPSBsZW5ndGg7CiAgICAgICAgc2V0SXM4Qml0KG1fdmFsdWUuaW1wbCgpLT5pczhC
aXQoKSk7CiAgICAgICAgSGVhcDo6aGVhcCh0aGlzKS0+cmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0
ZWQoY29zdCk7CiAgICB9Cgpwcm90ZWN0ZWQ6CiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKICAgIHsKICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgbV9sZW5n
dGggPSAwOwogICAgICAgIHNldElzOEJpdCh0cnVlKTsKICAgIH0KCnB1YmxpYzoKICAgIHN0YXRp
YyBKU1N0cmluZyogY3JlYXRlKFZNJiB2bSwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB2YWx1ZSkK
ICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgaW50MzJfdCBsZW5ndGggPSB2YWx1ZS0+
bGVuZ3RoKCk7CiAgICAgICAgZG8geyBpZiAoX19idWlsdGluX2V4cGVjdCghISghKGxlbmd0aCA+
PSAwKSksIDApKSBXVEZDcmFzaCgpOyB9IHdoaWxlICgwKTsKICAgICAgICBzaXplX3QgY29zdCA9
IHZhbHVlLT5jb3N0KCk7CiAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPih2bS5oZWFwKSkgSlNTdHJpbmcodm0sIHZhbHVlKTsK
ICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKHZtLCBsZW5ndGgsIGNvc3QpOwogICAg
ICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICB9CiAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZUhh
c090aGVyT3duZXIoVk0mIHZtLCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHZhbHVlKQogICAgewog
ICAgICAgICgodm9pZCkwKTsKICAgICAgICBzaXplX3QgbGVuZ3RoID0gdmFsdWUtPmxlbmd0aCgp
OwogICAgICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1N0cmluZz4odm0uaGVhcCkpIEpTU3RyaW5nKHZtLCB2YWx1ZSk7CiAgICAgICAgbmV3U3Ry
aW5nLT5maW5pc2hDcmVhdGlvbih2bSwgbGVuZ3RoKTsKICAgICAgICByZXR1cm4gbmV3U3RyaW5n
OwogICAgfQoKICAgIElkZW50aWZpZXIgdG9JZGVudGlmaWVyKEV4ZWNTdGF0ZSopIGNvbnN0Owog
ICAgQXRvbWljU3RyaW5nIHRvQXRvbWljU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgUmVm
UHRyPEF0b21pY1N0cmluZ0ltcGw+IHRvRXhpc3RpbmdBdG9taWNTdHJpbmcoRXhlY1N0YXRlKikg
Y29uc3Q7CgogICAgY2xhc3MgU2FmZVZpZXc7CiAgICBTYWZlVmlldyB2aWV3KEV4ZWNTdGF0ZSop
IGNvbnN0OwogICAgU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nIHZpZXdXaXRoVW5kZXJs
eWluZ1N0cmluZyhFeGVjU3RhdGUmKSBjb25zdDsKCiAgICBjb25zdCBTdHJpbmcmIHZhbHVlKEV4
ZWNTdGF0ZSopIGNvbnN0OwogICAgY29uc3QgU3RyaW5nJiB0cnlHZXRWYWx1ZSgpIGNvbnN0Owog
ICAgY29uc3QgU3RyaW5nSW1wbCogdHJ5R2V0VmFsdWVJbXBsKCkgY29uc3Q7CiAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQoKICAgIEpTVmFsdWUgdG9Qcmlt
aXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CiAgICBib29s
IHRvQm9vbGVhbigpIGNvbnN0IHsgcmV0dXJuICEhbV9sZW5ndGg7IH0KICAgIGJvb2wgZ2V0UHJp
bWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJikgY29uc3Q7
CiAgICBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25z
dDsKICAgIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKCiAgICBib29sIGdldFN0
cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwogICAgYm9vbCBnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgIGJvb2wgZ2V0U3RyaW5nUHJvcGVydHlEZXNj
cmlwdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7Cgog
ICAgYm9vbCBjYW5HZXRJbmRleCh1bnNpZ25lZCBpKSB7IHJldHVybiBpIDwgbV9sZW5ndGg7IH0K
ICAgIEpTU3RyaW5nKiBnZXRJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCk7CgogICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKCiAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4gKHJlaW50ZXJw
cmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SlNTdHJpbmcqPigweDQwMDAp
LT5tX2xlbmd0aCkpIC0gMHg0MDAwKTsgfQogICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkZsYWdz
KCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nh
c3Q8SlNTdHJpbmcqPigweDQwMDApLT5tX2ZsYWdzKSkgLSAweDQwMDApOyB9CiAgICBzdGF0aWMg
c2l6ZV90IG9mZnNldE9mVmFsdWUoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZm
X3Q+KCYocmVpbnRlcnByZXRfY2FzdDxKU1N0cmluZyo+KDB4NDAwMCktPm1fdmFsdWUpKSAtIDB4
NDAwMCk7IH0KCiAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNf
aW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0
dXJuICZzX2luZm87IH07CgogICAgc3RhdGljIHZvaWQgZHVtcFRvU3RyZWFtKGNvbnN0IEpTQ2Vs
bCosIFByaW50U3RyZWFtJik7CiAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxs
Kik7CiAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CgogICAgZW51bSB7CiAgICAgICAgSXM4Qml0ID0gMXUKICAgIH07Cgpwcm90ZWN0ZWQ6CiAgICBm
cmllbmQgY2xhc3MgSlNWYWx1ZTsKCiAgICBib29sIGlzUm9wZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWUuaXNOdWxsKCk7IH0KICAgIGJvb2wgaXNTdWJzdHJpbmcoKSBjb25zdDsKICAgIGJvb2wg
aXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIElzOEJpdDsgfQogICAgdm9pZCBzZXRJ
czhCaXQoYm9vbCBmbGFnKSBjb25zdAogICAgewogICAgICAgIGlmIChmbGFnKQogICAgICAgICAg
ICBtX2ZsYWdzIHw9IElzOEJpdDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIG1fZmxhZ3MgJj0g
fklzOEJpdDsKICAgIH0KCiAgICBtdXRhYmxlIHVuc2lnbmVkIG1fZmxhZ3M7CgoKICAgIHVuc2ln
bmVkIG1fbGVuZ3RoOwogICAgbXV0YWJsZSBTdHJpbmcgbV92YWx1ZTsKCnByaXZhdGU6CiAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwoKICAgIHN0YXRpYyBKU1ZhbHVlIHRv
VGhpcyhKU0NlbGwqLCBFeGVjU3RhdGUqLCBFQ01BTW9kZSk7CgogICAgU3RyaW5nJiBzdHJpbmco
KSB7ICgodm9pZCkwKTsgcmV0dXJuIG1fdmFsdWU7IH0KICAgIFN0cmluZ1ZpZXcgdW5zYWZlVmll
dyhFeGVjU3RhdGUmKSBjb25zdDsKCiAgICBmcmllbmQgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3Rh
dGUqLCBKU1N0cmluZyosIEpTU3RyaW5nKik7CiAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3Vic3Ry
aW5nKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpOwp9OwoKY2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsKICAg
IGZyaWVuZCBjbGFzcyBKU1N0cmluZzsKCiAgICBmcmllbmQgSlNSb3BlU3RyaW5nKiBqc1N0cmlu
Z0J1aWxkZXIoVk0qKTsKCnB1YmxpYzoKICAgIGNsYXNzIFJvcGVCdWlsZGVyIHsKICAgIHB1Ymxp
YzoKICAgICAgICBSb3BlQnVpbGRlcihWTSYgdm0pCiAgICAgICAgICAgIDogbV92bSh2bSkKICAg
ICAgICAgICAgLCBtX2pzU3RyaW5nKGpzU3RyaW5nQnVpbGRlcigmdm0pKQogICAgICAgICAgICAs
IG1faW5kZXgoMCkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBib29sIGFwcGVuZChKU1N0
cmluZyoganNTdHJpbmcpCiAgICAgICAgewogICAgICAgICAgICBpZiAobV9pbmRleCA9PSBKU1Jv
cGVTdHJpbmc6OnNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKQogICAgICAgICAgICAgICAgZXhwYW5k
KCk7CiAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQzMl90PihtX2pzU3RyaW5nLT5sZW5n
dGgoKSArIGpzU3RyaW5nLT5sZW5ndGgoKSkgPCAwKSB7CiAgICAgICAgICAgICAgICBtX2pzU3Ry
aW5nID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
fQogICAgICAgICAgICBtX2pzU3RyaW5nLT5hcHBlbmQobV92bSwgbV9pbmRleCsrLCBqc1N0cmlu
Zyk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgSlNSb3BlU3Ry
aW5nKiByZWxlYXNlKCkKICAgICAgICB7CiAgICAgICAgICAgIGRvIHsgaWYgKF9fYnVpbHRpbl9l
eHBlY3QoISEoIShtX2pzU3RyaW5nKSksIDApKSBXVEZDcmFzaCgpOyB9IHdoaWxlICgwKTsKICAg
ICAgICAgICAgSlNSb3BlU3RyaW5nKiB0bXAgPSBtX2pzU3RyaW5nOwogICAgICAgICAgICBtX2pz
U3RyaW5nID0gMDsKICAgICAgICAgICAgcmV0dXJuIHRtcDsKICAgICAgICB9CgogICAgICAgIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fanNTdHJpbmctPm1fbGVuZ3RoOyB9Cgog
ICAgcHJpdmF0ZToKICAgICAgICB2b2lkIGV4cGFuZCgpOwoKICAgICAgICBWTSYgbV92bTsKICAg
ICAgICBKU1JvcGVTdHJpbmcqIG1fanNTdHJpbmc7CiAgICAgICAgc2l6ZV90IG1faW5kZXg7CiAg
ICB9OwoKcHJpdmF0ZToKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XykpIEpTUm9wZVN0cmluZyhWTSYgdm0pCiAgICAgICAgOiBKU1N0cmluZyh2bSkKICAgIHsKICAg
IH0KCiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNTdHJpbmcqIHMxLCBKU1N0cmlu
ZyogczIpCiAgICB7CiAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgIG1f
bGVuZ3RoID0gczEtPmxlbmd0aCgpICsgczItPmxlbmd0aCgpOwogICAgICAgIHNldElzOEJpdChz
MS0+aXM4Qml0KCkgJiYgczItPmlzOEJpdCgpKTsKICAgICAgICBzZXRJc1N1YnN0cmluZyhmYWxz
ZSk7CiAgICAgICAgZmliZXIoMCkuc2V0KHZtLCB0aGlzLCBzMSk7CiAgICAgICAgZmliZXIoMSku
c2V0KHZtLCB0aGlzLCBzMik7CiAgICAgICAgZmliZXIoMikuY2xlYXIoKTsKICAgIH0KCiAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIsIEpT
U3RyaW5nKiBzMykKICAgIHsKICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
ICAgbV9sZW5ndGggPSBzMS0+bGVuZ3RoKCkgKyBzMi0+bGVuZ3RoKCkgKyBzMy0+bGVuZ3RoKCk7
CiAgICAgICAgc2V0SXM4Qml0KHMxLT5pczhCaXQoKSAmJiBzMi0+aXM4Qml0KCkgJiYgczMtPmlz
OEJpdCgpKTsKICAgICAgICBzZXRJc1N1YnN0cmluZyhmYWxzZSk7CiAgICAgICAgZmliZXIoMCku
c2V0KHZtLCB0aGlzLCBzMSk7CiAgICAgICAgZmliZXIoMSkuc2V0KHZtLCB0aGlzLCBzMik7CiAg
ICAgICAgZmliZXIoMikuc2V0KHZtLCB0aGlzLCBzMyk7CiAgICB9CgogICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIGJhc2UsIHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogICAgewogICAgICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIG1f
bGVuZ3RoID0gbGVuZ3RoOwogICAgICAgIHNldElzOEJpdChiYXNlLT5pczhCaXQoKSk7CiAgICAg
ICAgc2V0SXNTdWJzdHJpbmcodHJ1ZSk7CiAgICAgICAgaWYgKGJhc2UtPmlzU3Vic3RyaW5nKCkp
IHsKICAgICAgICAgICAgSlNSb3BlU3RyaW5nKiBiYXNlUm9wZSA9IGpzQ2FzdDxKU1JvcGVTdHJp
bmcqPihiYXNlKTsKICAgICAgICAgICAgc3Vic3RyaW5nQmFzZSgpLnNldCh2bSwgdGhpcywgYmFz
ZVJvcGUtPnN1YnN0cmluZ0Jhc2UoKS5nZXQoKSk7CiAgICAgICAgICAgIHN1YnN0cmluZ09mZnNl
dCgpID0gYmFzZVJvcGUtPnN1YnN0cmluZ09mZnNldCgpICsgb2Zmc2V0OwogICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgIHN1YnN0cmluZ0Jhc2UoKS5zZXQodm0sIHRoaXMsIGJhc2UpOwogICAg
ICAgICAgICBzdWJzdHJpbmdPZmZzZXQoKSA9IG9mZnNldDsKCgoKCiAgICAgICAgICAgIGlmIChi
YXNlLT5pc1JvcGUoKSkKICAgICAgICAgICAgICAgIGpzQ2FzdDxKU1JvcGVTdHJpbmcqPihiYXNl
KS0+cmVzb2x2ZVJvcGUoZXhlYyk7CiAgICAgICAgfQogICAgfQoKICAgIGlubGluZSBfX2F0dHJp
YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgZmluaXNoQ3JlYXRpb25TdWJzdHJpbmdP
ZlJlc29sdmVkKFZNJiB2bSwgSlNTdHJpbmcqIGJhc2UsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKQogICAgewogICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAg
ICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIG1fbGVuZ3RoID0gbGVuZ3Ro
OwogICAgICAgIHNldElzOEJpdChiYXNlLT5pczhCaXQoKSk7CiAgICAgICAgc2V0SXNTdWJzdHJp
bmcodHJ1ZSk7CiAgICAgICAgc3Vic3RyaW5nQmFzZSgpLnNldCh2bSwgdGhpcywgYmFzZSk7CiAg
ICAgICAgc3Vic3RyaW5nT2Zmc2V0KCkgPSBvZmZzZXQ7CiAgICB9CgogICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCiAgICB7CiAgICAgICAgSlNTdHJpbmc6OmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICAgICBzZXRJc1N1YnN0cmluZyhmYWxzZSk7CiAgICAgICAgZmliZXIoMCkuY2xlYXIo
KTsKICAgICAgICBmaWJlcigxKS5jbGVhcigpOwogICAgICAgIGZpYmVyKDIpLmNsZWFyKCk7CiAg
ICB9CgogICAgdm9pZCBhcHBlbmQoVk0mIHZtLCBzaXplX3QgaW5kZXgsIEpTU3RyaW5nKiBqc1N0
cmluZykKICAgIHsKICAgICAgICBmaWJlcihpbmRleCkuc2V0KHZtLCB0aGlzLCBqc1N0cmluZyk7
CiAgICAgICAgbV9sZW5ndGggKz0ganNTdHJpbmctPm1fbGVuZ3RoOwogICAgICAgIGRvIHsgaWYg
KF9fYnVpbHRpbl9leHBlY3QoISEoIShzdGF0aWNfY2FzdDxpbnQzMl90PihtX2xlbmd0aCkgPj0g
MCkpLCAwKSkgV1RGQ3Jhc2goKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgc2V0SXM4Qml0KGlzOEJp
dCgpICYmIGpzU3RyaW5nLT5pczhCaXQoKSk7CiAgICB9CgogICAgc3RhdGljIEpTUm9wZVN0cmlu
ZyogY3JlYXRlTnVsbChWTSYgdm0pCiAgICB7CiAgICAgICAgSlNSb3BlU3RyaW5nKiBuZXdTdHJp
bmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1JvcGVTdHJpbmc+KHZtLmhlYXApKSBK
U1JvcGVTdHJpbmcodm0pOwogICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24odm0pOwog
ICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICB9CgpwdWJsaWM6CiAgICBzdGF0aWMgSlNTdHJp
bmcqIGNyZWF0ZShWTSYgdm0sIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcqIHMyKQogICAgewogICAg
ICAgIEpTUm9wZVN0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNSb3BlU3RyaW5nPih2bS5oZWFwKSkgSlNSb3BlU3RyaW5nKHZtKTsKICAgICAgICBuZXdTdHJp
bmctPmZpbmlzaENyZWF0aW9uKHZtLCBzMSwgczIpOwogICAgICAgIHJldHVybiBuZXdTdHJpbmc7
CiAgICB9CiAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShWTSYgdm0sIEpTU3RyaW5nKiBzMSwg
SlNTdHJpbmcqIHMyLCBKU1N0cmluZyogczMpCiAgICB7CiAgICAgICAgSlNSb3BlU3RyaW5nKiBu
ZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1JvcGVTdHJpbmc+KHZtLmhl
YXApKSBKU1JvcGVTdHJpbmcodm0pOwogICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24o
dm0sIHMxLCBzMiwgczMpOwogICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICB9CgogICAgc3Rh
dGljIEpTU3RyaW5nKiBjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBi
YXNlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKICAgIHsKICAgICAgICBKU1Jv
cGVTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9wZVN0
cmluZz4odm0uaGVhcCkpIEpTUm9wZVN0cmluZyh2bSk7CiAgICAgICAgbmV3U3RyaW5nLT5maW5p
c2hDcmVhdGlvbih2bSwgZXhlYywgYmFzZSwgb2Zmc2V0LCBsZW5ndGgpOwogICAgICAgIHJldHVy
biBuZXdTdHJpbmc7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fKSkgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGVTdWJzdHJpbmdPZlJlc29sdmVkKFZNJiB2
bSwgSlNTdHJpbmcqIGJhc2UsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogICAg
ewogICAgICAgIEpTUm9wZVN0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNSb3BlU3RyaW5nPih2bS5oZWFwKSkgSlNSb3BlU3RyaW5nKHZtKTsKICAgICAgICBu
ZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwgYmFzZSwgb2Zm
c2V0LCBsZW5ndGgpOwogICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICB9CgogICAgdm9pZCB2
aXNpdEZpYmVycyhTbG90VmlzaXRvciYpOwoKICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZG
aWJlcnMoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnBy
ZXRfY2FzdDxKU1JvcGVTdHJpbmcqPigweDQwMDApLT51KSkgLSAweDQwMDApOyB9CgogICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoID0gMzsKCnByaXZhdGU6
CiAgICBmcmllbmQgSlNWYWx1ZSBqc1N0cmluZ0Zyb21SZWdpc3RlckFycmF5KEV4ZWNTdGF0ZSos
IFJlZ2lzdGVyKiwgdW5zaWduZWQpOwogICAgZnJpZW5kIEpTVmFsdWUganNTdHJpbmdGcm9tQXJn
dW1lbnRzKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwoKICAgIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0
YXRlKikgY29uc3Q7CiAgICB2b2lkIHJlc29sdmVSb3BlVG9BdG9taWNTdHJpbmcoRXhlY1N0YXRl
KikgY29uc3Q7CiAgICBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gcmVzb2x2ZVJvcGVUb0V4aXN0
aW5nQXRvbWljU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgdm9pZCByZXNvbHZlUm9wZVNs
b3dDYXNlOChMQ2hhciopIGNvbnN0OwogICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFy
KikgY29uc3Q7CiAgICB2b2lkIG91dE9mTWVtb3J5KEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgdm9p
ZCByZXNvbHZlUm9wZUludGVybmFsOChMQ2hhciopIGNvbnN0OwogICAgdm9pZCByZXNvbHZlUm9w
ZUludGVybmFsOE5vU3Vic3RyaW5nKExDaGFyKikgY29uc3Q7CiAgICB2b2lkIHJlc29sdmVSb3Bl
SW50ZXJuYWwxNihVQ2hhciopIGNvbnN0OwogICAgdm9pZCByZXNvbHZlUm9wZUludGVybmFsMTZO
b1N1YnN0cmluZyhVQ2hhciopIGNvbnN0OwogICAgdm9pZCBjbGVhckZpYmVycygpIGNvbnN0Owog
ICAgU3RyaW5nVmlldyB1bnNhZmVWaWV3KEV4ZWNTdGF0ZSYpIGNvbnN0OwogICAgU3RyaW5nVmll
d1dpdGhVbmRlcmx5aW5nU3RyaW5nIHZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhFeGVjU3RhdGUm
KSBjb25zdDsKCiAgICBXcml0ZUJhcnJpZXJCYXNlPEpTU3RyaW5nPiYgZmliZXIodW5zaWduZWQg
aSkgY29uc3QKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAg
ICAgIHJldHVybiB1W2ldLnN0cmluZzsKICAgIH0KCiAgICBXcml0ZUJhcnJpZXJCYXNlPEpTU3Ry
aW5nPiYgc3Vic3RyaW5nQmFzZSgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHVbMV0uc3Ry
aW5nOwogICAgfQoKICAgIHVpbnRwdHJfdCYgc3Vic3RyaW5nT2Zmc2V0KCkgY29uc3QKICAgIHsK
ICAgICAgICByZXR1cm4gdVsyXS5udW1iZXI7CiAgICB9CgogICAgc3RhdGljIHVpbnRwdHJfdCBu
b3RTdWJzdHJpbmdTZW50aW5lbCgpCiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAg
c3RhdGljIHVpbnRwdHJfdCBzdWJzdHJpbmdTZW50aW5lbCgpCiAgICB7CiAgICAgICAgcmV0dXJu
IDE7CiAgICB9CgogICAgYm9vbCBpc1N1YnN0cmluZygpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0
dXJuIHVbMF0ubnVtYmVyID09IHN1YnN0cmluZ1NlbnRpbmVsKCk7CiAgICB9CgogICAgdm9pZCBz
ZXRJc1N1YnN0cmluZyhib29sIGlzU3Vic3RyaW5nKQogICAgewogICAgICAgIHVbMF0ubnVtYmVy
ID0gaXNTdWJzdHJpbmcgPyBzdWJzdHJpbmdTZW50aW5lbCgpIDogbm90U3Vic3RyaW5nU2VudGlu
ZWwoKTsKICAgIH0KCiAgICBtdXRhYmxlIHVuaW9uIHsKICAgICAgICB1aW50cHRyX3QgbnVtYmVy
OwogICAgICAgIFdyaXRlQmFycmllckJhc2U8SlNTdHJpbmc+IHN0cmluZzsKICAgIH0gdVtzX21h
eEludGVybmFsUm9wZUxlbmd0aF07Cn07CgpjbGFzcyBKU1N0cmluZzo6U2FmZVZpZXcgewpwdWJs
aWM6CiAgICBleHBsaWNpdCBTYWZlVmlldyhFeGVjU3RhdGUmLCBjb25zdCBKU1N0cmluZyYpOwog
ICAgU3RyaW5nVmlldyBnZXQoKSBjb25zdDsKCiAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLT5pczhCaXQoKTsgfQogICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmctPmxlbmd0aCgpOyB9CiAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgo
KSBjb25zdCB7IHJldHVybiBnZXQoKS5jaGFyYWN0ZXJzOCgpOyB9CiAgICBjb25zdCBVQ2hhciog
Y2hhcmFjdGVyczE2KCkgY29uc3QgeyByZXR1cm4gZ2V0KCkuY2hhcmFjdGVyczE2KCk7IH0KICAg
IFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGdldCgpW2lu
ZGV4XTsgfQoKcHJpdmF0ZToKICAgIEV4ZWNTdGF0ZSYgbV9zdGF0ZTsKCgoKCgogICAgY29uc3Qg
SlNTdHJpbmcqIHZvbGF0aWxlIG1fc3RyaW5nOwp9OwoKIEpTU3RyaW5nKiBqc1N0cmluZ1dpdGhD
YWNoZVNsb3dDYXNlKFZNJiwgU3RyaW5nSW1wbCYpOwoKaW5saW5lIGNvbnN0IFN0cmluZ0ltcGwq
IEpTU3RyaW5nOjp0cnlHZXRWYWx1ZUltcGwoKSBjb25zdAp7CiAgICByZXR1cm4gbV92YWx1ZS5p
bXBsKCk7Cn0KCmlubGluZSBKU1N0cmluZyogYXNTdHJpbmcoSlNWYWx1ZSB2YWx1ZSkKewogICAg
KCh2b2lkKTApOwogICAgcmV0dXJuIGpzQ2FzdDxKU1N0cmluZyo+KHZhbHVlLmFzQ2VsbCgpKTsK
fQoKaW5saW5lIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKFZNKiB2bSkKewogICAgcmV0dXJuIHZt
LT5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoKTsKfQoKaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKFZNKiB2
bSwgVUNoYXIgYykKewogICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQogICAg
ICAgIHJldHVybiB2bS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhjKTsKICAg
IHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCp2bSwgU3RyaW5nKCZjLCAxKS5pbXBsKCkpOwp9Cgpp
bmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhWTSogdm0sIGNvbnN0IFN0cmluZyYg
cykKewogICAgKCh2b2lkKTApOwogICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBzLmlt
cGwoKSk7Cn0KCmlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKFZNKiB2bSwgU3Ry
aW5nJiYgcykKewogICAgKCh2b2lkKTApOwogICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZt
LCBzLnJlbGVhc2VJbXBsKCkpOwp9CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18pKSBJZGVudGlmaWVyIEpTU3RyaW5nOjp0b0lkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVj
KSBjb25zdAp7CiAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCB0b0F0b21p
Y1N0cmluZyhleGVjKSk7Cn0KCmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XykpIEF0b21pY1N0cmluZyBKU1N0cmluZzo6dG9BdG9taWNTdHJpbmcoRXhlY1N0YXRlKiBleGVj
KSBjb25zdAp7CiAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgSlNS
b3BlU3RyaW5nKj4odGhpcyktPnJlc29sdmVSb3BlVG9BdG9taWNTdHJpbmcoZXhlYyk7CiAgICBy
ZXR1cm4gQXRvbWljU3RyaW5nKG1fdmFsdWUpOwp9CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gSlNTdHJpbmc6OnRvRXhp
c3RpbmdBdG9taWNTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdAp7CiAgICBpZiAoaXNSb3Bl
KCkpCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMp
LT5yZXNvbHZlUm9wZVRvRXhpc3RpbmdBdG9taWNTdHJpbmcoZXhlYyk7CiAgICBpZiAobV92YWx1
ZS5pbXBsKCktPmlzQXRvbWljKCkpCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0
cmluZ0ltcGwqPihtX3ZhbHVlLmltcGwoKSk7CiAgICByZXR1cm4gQXRvbWljU3RyaW5nSW1wbDo6
bG9va1VwKG1fdmFsdWUuaW1wbCgpKTsKfQoKaW5saW5lIGNvbnN0IFN0cmluZyYgSlNTdHJpbmc6
OnZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKewogICAgaWYgKGlzUm9wZSgpKQogICAgICAg
IHN0YXRpY19jYXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5yZXNvbHZlUm9wZShleGVj
KTsKICAgIHJldHVybiBtX3ZhbHVlOwp9CgppbmxpbmUgY29uc3QgU3RyaW5nJiBKU1N0cmluZzo6
dHJ5R2V0VmFsdWUoKSBjb25zdAp7CiAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgc3RhdGljX2Nh
c3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhpcyktPnJlc29sdmVSb3BlKDApOwogICAgcmV0dXJu
IG1fdmFsdWU7Cn0KCmlubGluZSBKU1N0cmluZyogSlNTdHJpbmc6OmdldEluZGV4KEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgaSkKewogICAgKCh2b2lkKTApOwogICAgcmV0dXJuIGpzU2luZ2xl
Q2hhcmFjdGVyU3RyaW5nKGV4ZWMsIHVuc2FmZVZpZXcoKmV4ZWMpW2ldKTsKfQoKaW5saW5lIEpT
U3RyaW5nKiBqc1N0cmluZyhWTSogdm0sIGNvbnN0IFN0cmluZyYgcykKewogICAgaW50IHNpemUg
PSBzLmxlbmd0aCgpOwogICAgaWYgKCFzaXplKQogICAgICAgIHJldHVybiB2bS0+c21hbGxTdHJp
bmdzLmVtcHR5U3RyaW5nKCk7CiAgICBpZiAoc2l6ZSA9PSAxKSB7CiAgICAgICAgVUNoYXIgYyA9
IHMuY2hhcmFjdGVyQXQoMCk7CiAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKQogICAgICAgICAgICByZXR1cm4gdm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJT
dHJpbmcoYyk7CiAgICB9CiAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqdm0sIHMuaW1wbCgp
KTsKfQoKaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhWTSYgdm0sIEV4ZWNTdGF0ZSogZXhl
YywgSlNTdHJpbmcqIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQp7CiAgICAo
KHZvaWQpMCk7CiAgICAoKHZvaWQpMCk7CiAgICAoKHZvaWQpMCk7CiAgICBpZiAoIWxlbmd0aCkK
ICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCk7CiAgICBpZiAoIW9m
ZnNldCAmJiBsZW5ndGggPT0gcy0+bGVuZ3RoKCkpCiAgICAgICAgcmV0dXJuIHM7CiAgICByZXR1
cm4gSlNSb3BlU3RyaW5nOjpjcmVhdGUodm0sIGV4ZWMsIHMsIG9mZnNldCwgbGVuZ3RoKTsKfQoK
aW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZ09mUmVzb2x2ZWQoVk0mIHZtLCBKU1N0cmluZyog
cywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCnsKICAgICgodm9pZCkwKTsKICAg
ICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKICAgIGlmICghbGVuZ3RoKQogICAgICAgIHJldHVy
biB2bS5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoKTsKICAgIGlmICghb2Zmc2V0ICYmIGxlbmd0
aCA9PSBzLT5sZW5ndGgoKSkKICAgICAgICByZXR1cm4gczsKICAgIHJldHVybiBKU1JvcGVTdHJp
bmc6OmNyZWF0ZVN1YnN0cmluZ09mUmVzb2x2ZWQodm0sIHMsIG9mZnNldCwgbGVuZ3RoKTsKfQoK
aW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBz
LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKewogICAgcmV0dXJuIGpzU3Vic3Ry
aW5nKGV4ZWMtPnZtKCksIGV4ZWMsIHMsIG9mZnNldCwgbGVuZ3RoKTsKfQoKaW5saW5lIEpTU3Ry
aW5nKiBqc1N1YnN0cmluZyhWTSogdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCnsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKICAgICgo
dm9pZCkwKTsKICAgIGlmICghbGVuZ3RoKQogICAgICAgIHJldHVybiB2bS0+c21hbGxTdHJpbmdz
LmVtcHR5U3RyaW5nKCk7CiAgICBpZiAobGVuZ3RoID09IDEpIHsKICAgICAgICBVQ2hhciBjID0g
cy5jaGFyYWN0ZXJBdChvZmZzZXQpOwogICAgICAgIGlmIChjIDw9IG1heFNpbmdsZUNoYXJhY3Rl
clN0cmluZykKICAgICAgICAgICAgcmV0dXJuIHZtLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKGMpOwogICAgfQogICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGVIYXNPdGhlck93
bmVyKCp2bSwgU3RyaW5nSW1wbDo6Y3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwocy5pbXBsKCks
IG9mZnNldCwgbGVuZ3RoKSk7Cn0KCmlubGluZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhWTSog
dm0sIGNvbnN0IFN0cmluZyYgcykKewogICAgaW50IHNpemUgPSBzLmxlbmd0aCgpOwogICAgaWYg
KCFzaXplKQogICAgICAgIHJldHVybiB2bS0+c21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCk7CiAg
ICBpZiAoc2l6ZSA9PSAxKSB7CiAgICAgICAgVUNoYXIgYyA9IHMuY2hhcmFjdGVyQXQoMCk7CiAg
ICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQogICAgICAgICAgICByZXR1
cm4gdm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoYyk7CiAgICB9CiAgICBy
ZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKnZtLCBzLmltcGwoKSk7Cn0KCmlu
bGluZSBKU1JvcGVTdHJpbmcqIGpzU3RyaW5nQnVpbGRlcihWTSogdm0pCnsKICAgIHJldHVybiBK
U1JvcGVTdHJpbmc6OmNyZWF0ZU51bGwoKnZtKTsKfQoKaW5saW5lIEpTU3RyaW5nKiBqc0VtcHR5
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4ganNFbXB0eVN0cmluZygmZXhlYy0+dm0o
KSk7IH0KaW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0
cmluZyYgcykgeyByZXR1cm4ganNTdHJpbmcoJmV4ZWMtPnZtKCksIHMpOyB9CmlubGluZSBKU1N0
cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBVQ2hhciBjKSB7
IHJldHVybiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZygmZXhlYy0+dm0oKSwgYyk7IH0KaW5saW5l
IEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcywg
dW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGpzU3Vic3RyaW5nKCZl
eGVjLT52bSgpLCBzLCBvZmZzZXQsIGxlbmd0aCk7IH0KaW5saW5lIEpTU3RyaW5nKiBqc05vbnRy
aXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIHsgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZygmZXhlYy0+dm0oKSwgcyk7IH0KaW5saW5lIEpTU3RyaW5nKiBqc05v
bnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmcmJiBzKSB7IHJldHVybiBqc05v
bnRyaXZpYWxTdHJpbmcoJmV4ZWMtPnZtKCksIHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFt
ZXRlcj4ocykpOyB9CmlubGluZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNPd25lZFN0cmluZygmZXhlYy0+dm0oKSwg
cyk7IH0KCmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIEpTU3RyaW5n
KiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykKewog
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgIFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwgPSBzLmlt
cGwoKTsKICAgIGlmICghc3RyaW5nSW1wbCB8fCAhc3RyaW5nSW1wbC0+bGVuZ3RoKCkpCiAgICAg
ICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoJnZtKTsKCiAgICBpZiAoc3RyaW5nSW1wbC0+bGVuZ3Ro
KCkgPT0gMSkgewogICAgICAgIFVDaGFyIHNpbmdsZUNoYXJhY3RlciA9ICgqc3RyaW5nSW1wbClb
MHVdOwogICAgICAgIGlmIChzaW5nbGVDaGFyYWN0ZXIgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKQogICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0
cmluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzaW5nbGVDaGFyYWN0ZXIpKTsKICAgIH0K
CiAgICBpZiAoSlNTdHJpbmcqIGxhc3RDYWNoZWRTdHJpbmcgPSB2bS5sYXN0Q2FjaGVkU3RyaW5n
LmdldCgpKSB7CiAgICAgICAgaWYgKGxhc3RDYWNoZWRTdHJpbmctPnRyeUdldFZhbHVlSW1wbCgp
ID09IHN0cmluZ0ltcGwpCiAgICAgICAgICAgIHJldHVybiBsYXN0Q2FjaGVkU3RyaW5nOwogICAg
fQoKICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZVNsb3dDYXNlKHZtLCAqc3RyaW5nSW1wbCk7
Cn0KCmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgSlNTdHJp
bmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKewogICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSwganNOdW1iZXIobV9sZW5ndGgp
KTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBPcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CiAgICBpZiAoaW5kZXggJiYgaW5kZXgudmFs
dWUoKSA8IG1fbGVuZ3RoKSB7CiAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRl
IHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCkpKTsKICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgIH0KCiAgICByZXR1cm4gZmFsc2U7Cn0KCmlubGluZSBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xv
dChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQp7CiAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKICAgICAgICBzbG90LnNl
dFZhbHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgcHJvcGVy
dHlOYW1lKSk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwp9
CgppbmxpbmUgYm9vbCBpc0pTU3RyaW5nKEpTQ2VsbCogY2VsbCkKewogICAgcmV0dXJuIGNlbGwt
PnR5cGUoKSA9PSBTdHJpbmdUeXBlOwp9CgppbmxpbmUgYm9vbCBpc0pTU3RyaW5nKEpTVmFsdWUg
dikKewogICAgcmV0dXJuIHYuaXNDZWxsKCkgJiYgaXNKU1N0cmluZyh2LmFzQ2VsbCgpKTsKfQoK
aW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgU3RyaW5nVmlldyBKU1Jv
cGVTdHJpbmc6OnVuc2FmZVZpZXcoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKewogICAgaWYgKGlz
U3Vic3RyaW5nKCkpIHsKICAgICAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgICAgIHJldHVybiBT
dHJpbmdWaWV3KHN1YnN0cmluZ0Jhc2UoKS0+bV92YWx1ZS5jaGFyYWN0ZXJzOCgpICsgc3Vic3Ry
aW5nT2Zmc2V0KCksIG1fbGVuZ3RoKTsKICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhzdWJzdHJp
bmdCYXNlKCktPm1fdmFsdWUuY2hhcmFjdGVyczE2KCkgKyBzdWJzdHJpbmdPZmZzZXQoKSwgbV9s
ZW5ndGgpOwogICAgfQogICAgcmVzb2x2ZVJvcGUoJnN0YXRlKTsKICAgIHJldHVybiBtX3ZhbHVl
Owp9CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBTdHJpbmdWaWV3
V2l0aFVuZGVybHlpbmdTdHJpbmcgSlNSb3BlU3RyaW5nOjp2aWV3V2l0aFVuZGVybHlpbmdTdHJp
bmcoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKewogICAgaWYgKGlzU3Vic3RyaW5nKCkpIHsKICAg
ICAgICBhdXRvJiBiYXNlID0gc3Vic3RyaW5nQmFzZSgpLT5tX3ZhbHVlOwogICAgICAgIGlmIChp
czhCaXQoKSkKICAgICAgICAgICAgcmV0dXJuIHsgeyBiYXNlLmNoYXJhY3RlcnM4KCkgKyBzdWJz
dHJpbmdPZmZzZXQoKSwgbV9sZW5ndGggfSwgYmFzZSB9OwogICAgICAgIHJldHVybiB7IHsgYmFz
ZS5jaGFyYWN0ZXJzMTYoKSArIHN1YnN0cmluZ09mZnNldCgpLCBtX2xlbmd0aCB9LCBiYXNlIH07
CiAgICB9CiAgICByZXNvbHZlUm9wZSgmc3RhdGUpOwogICAgcmV0dXJuIHsgbV92YWx1ZSwgbV92
YWx1ZSB9Owp9CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBTdHJp
bmdWaWV3IEpTU3RyaW5nOjp1bnNhZmVWaWV3KEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CnsKICAg
IGlmIChpc1JvcGUoKSkKICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3Ry
aW5nKj4odGhpcyktPnVuc2FmZVZpZXcoc3RhdGUpOwogICAgcmV0dXJuIG1fdmFsdWU7Cn0KCmlu
bGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIFN0cmluZ1ZpZXdXaXRoVW5k
ZXJseWluZ1N0cmluZyBKU1N0cmluZzo6dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKEV4ZWNTdGF0
ZSYgc3RhdGUpIGNvbnN0CnsKICAgIGlmIChpc1JvcGUoKSkKICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nJj4oKnRoaXMpLnZpZXdXaXRoVW5kZXJseWluZ1N0cmlu
ZyhzdGF0ZSk7CiAgICByZXR1cm4geyBtX3ZhbHVlLCBtX3ZhbHVlIH07Cn0KCmlubGluZSBib29s
IEpTU3RyaW5nOjppc1N1YnN0cmluZygpIGNvbnN0CnsKICAgIHJldHVybiBpc1JvcGUoKSAmJiBz
dGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+aXNTdWJzdHJpbmcoKTsKfQoK
aW5saW5lIEpTU3RyaW5nOjpTYWZlVmlldzo6U2FmZVZpZXcoRXhlY1N0YXRlJiBzdGF0ZSwgY29u
c3QgSlNTdHJpbmcmIHN0cmluZykKICAgIDogbV9zdGF0ZShzdGF0ZSkKICAgICwgbV9zdHJpbmco
JnN0cmluZykKewp9CgppbmxpbmUgU3RyaW5nVmlldyBKU1N0cmluZzo6U2FmZVZpZXc6OmdldCgp
IGNvbnN0CnsKICAgIHJldHVybiBtX3N0cmluZy0+dW5zYWZlVmlldyhtX3N0YXRlKTsKfQoKaW5s
aW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgSlNTdHJpbmc6OlNhZmVWaWV3
IEpTU3RyaW5nOjp2aWV3KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKewogICAgcmV0dXJuIFNhZmVW
aWV3KCpleGVjLCAqdGhpcyk7Cn0KCgoKaW5saW5lIGJvb2wgSlNWYWx1ZTo6dG9Cb29sZWFuKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKewogICAgaWYgKGlzSW50MzIoKSkKICAgICAgICByZXR1cm4g
YXNJbnQzMigpOwogICAgaWYgKGlzRG91YmxlKCkpCiAgICAgICAgcmV0dXJuIGFzRG91YmxlKCkg
PiAwLjAgfHwgYXNEb3VibGUoKSA8IDAuMDsKICAgIGlmIChpc0NlbGwoKSkKICAgICAgICByZXR1
cm4gYXNDZWxsKCktPnRvQm9vbGVhbihleGVjKTsKICAgIHJldHVybiBpc1RydWUoKTsKfQoKaW5s
aW5lIEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CnsK
ICAgIGlmIChpc1N0cmluZygpKQogICAgICAgIHJldHVybiBqc0Nhc3Q8SlNTdHJpbmcqPihhc0Nl
bGwoKSk7CiAgICBib29sIHJldHVybkVtcHR5U3RyaW5nT25FcnJvciA9IHRydWU7CiAgICByZXR1
cm4gdG9TdHJpbmdTbG93Q2FzZShleGVjLCByZXR1cm5FbXB0eVN0cmluZ09uRXJyb3IpOwp9Cgpp
bmxpbmUgSlNTdHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5nT3JOdWxsKEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKewogICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU1N0cmlu
Zyo+KGFzQ2VsbCgpKTsKICAgIGJvb2wgcmV0dXJuRW1wdHlTdHJpbmdPbkVycm9yID0gZmFsc2U7
CiAgICByZXR1cm4gdG9TdHJpbmdTbG93Q2FzZShleGVjLCByZXR1cm5FbXB0eVN0cmluZ09uRXJy
b3IpOwp9CgppbmxpbmUgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKewogICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEpTU3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShleGVjKTsKICAgIHJldHVybiB0b1dURlN0cmlu
Z1Nsb3dDYXNlKGV4ZWMpOwp9Cgp9CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIiAyCgoKbmFtZXNwYWNlIEpTQyB7Cgpp
bmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmVSYXJlRGF0YTo6cHJldmlvdXNJRCgpIGNvbnN0CnsK
ICAgIHJldHVybiBtX3ByZXZpb3VzLmdldCgpOwp9CgppbmxpbmUgdm9pZCBTdHJ1Y3R1cmVSYXJl
RGF0YTo6c2V0UHJldmlvdXNJRChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQp7CiAgICBt
X3ByZXZpb3VzLnNldCh2bSwgdGhpcywgc3RydWN0dXJlKTsKfQoKaW5saW5lIHZvaWQgU3RydWN0
dXJlUmFyZURhdGE6OmNsZWFyUHJldmlvdXNJRCgpCnsKICAgIG1fcHJldmlvdXMuY2xlYXIoKTsK
fQoKaW5saW5lIEpTU3RyaW5nKiBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2JqZWN0VG9TdHJpbmdWYWx1
ZSgpIGNvbnN0CnsKICAgIHJldHVybiBtX29iamVjdFRvU3RyaW5nVmFsdWUuZ2V0KCk7Cn0KCn0K
IyA0NCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgiIDIK
IyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0
aW9uVGFibGUuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCIKI2RlZmluZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGVfaCAKCgoKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBKU0NlbGw7CmNsYXNzIFN0cnVjdHVy
ZTsKCnN0YXRpYyBjb25zdCB1bnNpZ25lZCBGaXJzdEludGVybmFsQXR0cmlidXRlID0gMSA8PCA2
OwoKCgplbnVtIE5vblByb3BlcnR5VHJhbnNpdGlvbiB7CiAgICBBbGxvY2F0ZVVuZGVjaWRlZCwK
ICAgIEFsbG9jYXRlSW50MzIsCiAgICBBbGxvY2F0ZURvdWJsZSwKICAgIEFsbG9jYXRlQ29udGln
dW91cywKICAgIEFsbG9jYXRlQXJyYXlTdG9yYWdlLAogICAgQWxsb2NhdGVTbG93UHV0QXJyYXlT
dG9yYWdlLAogICAgU3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlLAogICAgQWRkSW5kZXhlZEFj
Y2Vzc29ycwp9OwoKaW5saW5lIHVuc2lnbmVkIHRvQXR0cmlidXRlcyhOb25Qcm9wZXJ0eVRyYW5z
aXRpb24gdHJhbnNpdGlvbikKewogICAgcmV0dXJuIHRyYW5zaXRpb24gKyBGaXJzdEludGVybmFs
QXR0cmlidXRlOwp9CgppbmxpbmUgSW5kZXhpbmdUeXBlIG5ld0luZGV4aW5nVHlwZShJbmRleGlu
Z1R5cGUgb2xkVHlwZSwgTm9uUHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24pCnsKICAgIHN3
aXRjaCAodHJhbnNpdGlvbikgewogICAgY2FzZSBBbGxvY2F0ZVVuZGVjaWRlZDoKICAgICAgICAo
KHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIG9sZFR5cGUgfCBVbmRlY2lkZWRTaGFwZTsKICAgIGNh
c2UgQWxsb2NhdGVJbnQzMjoKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIChvbGRU
eXBlICYgfkluZGV4aW5nU2hhcGVNYXNrKSB8IEludDMyU2hhcGU7CiAgICBjYXNlIEFsbG9jYXRl
RG91YmxlOgogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gKG9sZFR5cGUgJiB+SW5k
ZXhpbmdTaGFwZU1hc2spIHwgRG91YmxlU2hhcGU7CiAgICBjYXNlIEFsbG9jYXRlQ29udGlndW91
czoKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIChvbGRUeXBlICYgfkluZGV4aW5n
U2hhcGVNYXNrKSB8IENvbnRpZ3VvdXNTaGFwZTsKICAgIGNhc2UgQWxsb2NhdGVBcnJheVN0b3Jh
Z2U6CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiAob2xkVHlwZSAmIH5JbmRleGlu
Z1NoYXBlTWFzaykgfCBBcnJheVN0b3JhZ2VTaGFwZTsKICAgIGNhc2UgQWxsb2NhdGVTbG93UHV0
QXJyYXlTdG9yYWdlOgogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gKG9sZFR5cGUg
JiB+SW5kZXhpbmdTaGFwZU1hc2spIHwgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlOwogICAgY2Fz
ZSBTd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2U6CiAgICAgICAgKCh2b2lkKTApOwogICAgICAg
IHJldHVybiAob2xkVHlwZSAmIH5JbmRleGluZ1NoYXBlTWFzaykgfCBTbG93UHV0QXJyYXlTdG9y
YWdlU2hhcGU7CiAgICBjYXNlIEFkZEluZGV4ZWRBY2Nlc3NvcnM6CiAgICAgICAgcmV0dXJuIG9s
ZFR5cGUgfCBNYXlIYXZlSW5kZXhlZEFjY2Vzc29yczsKICAgIGRlZmF1bHQ6CiAgICAgICAgV1RG
Q3Jhc2goKTsKICAgICAgICByZXR1cm4gb2xkVHlwZTsKICAgIH0KfQoKY2xhc3MgU3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlIHsKICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBVc2luZ1NpbmdsZVNs
b3RGbGFnID0gMTsKCgogICAgc3RydWN0IEhhc2ggewogICAgICAgIHR5cGVkZWYgc3RkOjpwYWly
PFVuaXF1ZWRTdHJpbmdJbXBsKiwgdW5zaWduZWQ+IEtleTsKCiAgICAgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgS2V5JiBwKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIFB0ckhh
c2g8VW5pcXVlZFN0cmluZ0ltcGwqPjo6aGFzaChwLmZpcnN0KSArIHAuc2Vjb25kOwogICAgICAg
IH0KCiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIp
CiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gYSA9PSBiOwogICAgICAgIH0KCiAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwog
ICAgfTsKCiAgICB0eXBlZGVmIFdlYWtHQ01hcDxIYXNoOjpLZXksIFN0cnVjdHVyZSwgSGFzaD4g
VHJhbnNpdGlvbk1hcDsKCnB1YmxpYzoKICAgIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZSgpCiAg
ICAgICAgOiBtX2RhdGEoVXNpbmdTaW5nbGVTbG90RmxhZykKICAgIHsKICAgIH0KCiAgICB+U3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlKCkKICAgIHsKICAgICAgICBpZiAoIWlzVXNpbmdTaW5nbGVT
bG90KCkpIHsKICAgICAgICAgICAgZGVsZXRlIG1hcCgpOwogICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgfQoKICAgICAgICBXZWFrSW1wbCogaW1wbCA9IHRoaXMtPndlYWtJbXBsKCk7CiAgICAg
ICAgaWYgKCFpbXBsKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgV2Vha1NldDo6ZGVhbGxv
Y2F0ZShpbXBsKTsKICAgIH0KCiAgICB2b2lkIGFkZChWTSYsIFN0cnVjdHVyZSopOwogICAgYm9v
bCBjb250YWlucyhVbmlxdWVkU3RyaW5nSW1wbCosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpIGNvbnN0
OwogICAgU3RydWN0dXJlKiBnZXQoVW5pcXVlZFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKSBjb25zdDsKCnByaXZhdGU6CiAgICBmcmllbmQgY2xhc3MgU2luZ2xlU2xvdFRyYW5zaXRp
b25XZWFrT3duZXI7CgogICAgYm9vbCBpc1VzaW5nU2luZ2xlU2xvdCgpIGNvbnN0CiAgICB7CiAg
ICAgICAgcmV0dXJuIG1fZGF0YSAmIFVzaW5nU2luZ2xlU2xvdEZsYWc7CiAgICB9CgogICAgVHJh
bnNpdGlvbk1hcCogbWFwKCkgY29uc3QKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VHJhbnNpdGlvbk1hcCo+KG1fZGF0YSk7CiAgICB9Cgog
ICAgV2Vha0ltcGwqIHdlYWtJbXBsKCkgY29uc3QKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vha0ltcGwqPihtX2RhdGEgJiB+VXNpbmdT
aW5nbGVTbG90RmxhZyk7CiAgICB9CgogICAgdm9pZCBzZXRNYXAoVHJhbnNpdGlvbk1hcCogbWFw
KQogICAgewogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgaWYgKFdlYWtJbXBsKiBpbXBsID0g
dGhpcy0+d2Vha0ltcGwoKSkKICAgICAgICAgICAgV2Vha1NldDo6ZGVhbGxvY2F0ZShpbXBsKTsK
CgogICAgICAgIG1fZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1hcCk7CgogICAg
ICAgICgodm9pZCkwKTsKICAgIH0KCiAgICBTdHJ1Y3R1cmUqIHNpbmdsZVRyYW5zaXRpb24oKSBj
b25zdDsKICAgIHZvaWQgc2V0U2luZ2xlVHJhbnNpdGlvbihTdHJ1Y3R1cmUqKTsKCiAgICBpbnRw
dHJfdCBtX2RhdGE7Cn07Cgp9CiMgNDUgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oIiAyCgoKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV3JpdGVCYXJyaWVySW5saW5lcy5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllcklubGluZXMuaCIKI2RlZmluZSBXcml0ZUJhcnJp
ZXJJbmxpbmVzX2ggCgoKCgpuYW1lc3BhY2UgSlNDIHsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpp
bmxpbmUgdm9pZCBXcml0ZUJhcnJpZXJCYXNlPFQ+OjpzZXQoVk0mIHZtLCBjb25zdCBKU0NlbGwq
IG93bmVyLCBUKiB2YWx1ZSkKewogICAgKCh2b2lkKTApOwogICAgKCh2b2lkKTApOwogICAgdmFs
aWRhdGVDZWxsKHZhbHVlKTsKICAgIHNldEVhcmx5VmFsdWUodm0sIG93bmVyLCB2YWx1ZSk7Cn0K
CnRlbXBsYXRlIDx0eXBlbmFtZSBUPgppbmxpbmUgdm9pZCBXcml0ZUJhcnJpZXJCYXNlPFQ+Ojpz
ZXRNYXlCZU51bGwoVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBUKiB2YWx1ZSkKewogICAg
aWYgKHZhbHVlKQogICAgICAgIHZhbGlkYXRlQ2VsbCh2YWx1ZSk7CiAgICBzZXRFYXJseVZhbHVl
KHZtLCBvd25lciwgdmFsdWUpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KaW5saW5lIHZvaWQg
V3JpdGVCYXJyaWVyQmFzZTxUPjo6c2V0RWFybHlWYWx1ZShWTSYgdm0sIGNvbnN0IEpTQ2VsbCog
b3duZXIsIFQqIHZhbHVlKQp7CiAgICB0aGlzLT5tX2NlbGwgPSByZWludGVycHJldF9jYXN0PEpT
Q2VsbCo+KHZhbHVlKTsKICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKG93bmVyLCB0aGlzLT5tX2Nl
bGwpOwp9CgppbmxpbmUgdm9pZCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+OjpzZXQoVk0mIHZt
LCBjb25zdCBKU0NlbGwqIG93bmVyLCBKU1ZhbHVlIHZhbHVlKQp7CiAgICAoKHZvaWQpMCk7CiAg
ICBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKICAgIHZtLmhlYXAud3JpdGVCYXJy
aWVyKG93bmVyLCB2YWx1ZSk7Cn0KCn0KIyA0OSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9Db21waWxh
dGlvblRocmVhZC5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGF0aW9uVGhy
ZWFkLmgiCiNkZWZpbmUgQ29tcGlsYXRpb25UaHJlYWRfaCAKCm5hbWVzcGFjZSBXVEYgewoKIGJv
b2wgZXhjaGFuZ2VJc0NvbXBpbGF0aW9uVGhyZWFkKGJvb2wgbmV3VmFsdWUpOwoKY2xhc3MgQ29t
cGlsYXRpb25TY29wZSB7CnB1YmxpYzoKICAgIENvbXBpbGF0aW9uU2NvcGUoKQogICAgICAgIDog
bV9vbGRWYWx1ZShleGNoYW5nZUlzQ29tcGlsYXRpb25UaHJlYWQodHJ1ZSkpCiAgICB7CiAgICB9
CgogICAgfkNvbXBpbGF0aW9uU2NvcGUoKQogICAgewogICAgICAgIGV4Y2hhbmdlSXNDb21waWxh
dGlvblRocmVhZChtX29sZFZhbHVlKTsKICAgIH0KCiAgICB2b2lkIGxlYXZlRWFybHkoKQogICAg
ewogICAgICAgIGV4Y2hhbmdlSXNDb21waWxhdGlvblRocmVhZChtX29sZFZhbHVlKTsKICAgIH0K
cHJpdmF0ZToKICAgIGJvb2wgbV9vbGRWYWx1ZTsKfTsKCn0KCnVzaW5nIFdURjo6Q29tcGlsYXRp
b25TY29wZTsKdXNpbmcgV1RGOjpleGNoYW5nZUlzQ29tcGlsYXRpb25UaHJlYWQ7CiMgNTAgIi4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIiAyCgoKCgpuYW1l
c3BhY2UgV1RGIHsKCmNsYXNzIFVuaXF1ZWRTdHJpbmdJbXBsOwoKfQoKbmFtZXNwYWNlIEpTQyB7
CgpjbGFzcyBEZWZlckdDOwpjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CmNsYXNzIFByb3Bl
cnR5TmFtZUFycmF5OwpjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7CmNsYXNzIFByb3BlcnR5
VGFibGU7CmNsYXNzIFN0cnVjdHVyZUNoYWluOwpjbGFzcyBTdHJ1Y3R1cmVTaGFwZTsKY2xhc3Mg
U2xvdFZpc2l0b3I7CmNsYXNzIEpTU3RyaW5nOwpzdHJ1Y3QgRHVtcENvbnRleHQ7CgoKCgpzdGF0
aWMgY29uc3QgdW5zaWduZWQgaW5pdGlhbE91dE9mTGluZUNhcGFjaXR5ID0gNDsKCgoKc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG91dE9mTGluZUdyb3d0aEZhY3RvciA9IDI7CgpzdHJ1Y3QgUHJvcGVy
dHlNYXBFbnRyeSB7CiAgICBVbmlxdWVkU3RyaW5nSW1wbCoga2V5OwogICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0OwogICAgdWludDhfdCBhdHRyaWJ1dGVzOwogICAgYm9vbCBoYXNJbmZlcnJlZFR5
cGU7CgogICAgUHJvcGVydHlNYXBFbnRyeSgpCiAgICAgICAgOiBrZXkobnVsbHB0cikKICAgICAg
ICAsIG9mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICAgICwgYXR0cmlidXRlcygwKQogICAgICAg
ICwgaGFzSW5mZXJyZWRUeXBlKGZhbHNlKQogICAgewogICAgfQoKICAgIFByb3BlcnR5TWFwRW50
cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKQogICAgICAgIDoga2V5KGtleSkKICAgICAgICAsIG9mZnNldChvZmZzZXQp
CiAgICAgICAgLCBhdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCiAgICAgICAgLCBoYXNJbmZlcnJlZFR5
cGUoZmFsc2UpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgfQp9OwoKY2xhc3MgU3RydWN0
dXJlRmlyZURldGFpbCA6IHB1YmxpYyBGaXJlRGV0YWlsIHsKcHVibGljOgogICAgU3RydWN0dXJl
RmlyZURldGFpbChjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICA6IG1fc3RydWN0
dXJlKHN0cnVjdHVyZSkKICAgIHsKICAgIH0KCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3Qgb3ZlcnJpZGU7Cgpwcml2YXRlOgogICAgY29uc3QgU3RydWN0dXJlKiBtX3N0cnVj
dHVyZTsKfTsKCmNsYXNzIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJl
IHsKICAgIHByaXZhdGU6IERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJl
KGNvbnN0IERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlJikgPSBkZWxl
dGU7IERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlJiBvcGVyYXRvcj0o
Y29uc3QgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUmKSA9IGRlbGV0
ZTs7CnB1YmxpYzoKICAgIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJl
KCk7CiAgICB+RGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUoKTsKCiAg
ICB2b2lkIGFkZChjb25zdCBTdHJ1Y3R1cmUqKTsKCnByaXZhdGU6CiAgICBjb25zdCBTdHJ1Y3R1
cmUqIG1fc3RydWN0dXJlOwp9OwoKY2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGljIEpTQ2Vs
bCB7CnB1YmxpYzoKICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU7Cgog
ICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKCiAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
cHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyosIEluZGV4aW5nVHlw
ZSA9IE5vbkFycmF5LCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IDApOwoKICAgIH5TdHJ1Y3R1
cmUoKTsKCnByb3RlY3RlZDoKICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgewog
ICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAg
ICAgKCh2b2lkKTApOwogICAgfQoKICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDcmVh
dGluZ0Vhcmx5Q2VsbFRhZykKICAgIHsKICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
dGhpcywgQ3JlYXRpbmdFYXJseUNlbGwpOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZv
aWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgfQoKcHVibGljOgogICAgU3RydWN0dXJlSUQg
aWQoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Iuc3RydWN0dXJlSUQoKTsgfQogICAgaW50MzJfdCBv
YmplY3RJbml0aWFsaXphdGlvbkJsb2IoKSBjb25zdCB7IHJldHVybiBtX2Jsb2IuYmxvYkV4Y2x1
ZGluZ1N0cnVjdHVyZUlEKCk7IH0KICAgIGludDY0X3QgaWRCbG9iKCkgY29uc3QgeyByZXR1cm4g
bV9ibG9iLmJsb2IoKTsgfQoKICAgIGJvb2wgaXNQcm94eSgpIGNvbnN0CiAgICB7CiAgICAgICAg
SlNUeXBlIHR5cGUgPSBtX2Jsb2IudHlwZSgpOwogICAgICAgIHJldHVybiB0eXBlID09IEltcHVy
ZVByb3h5VHlwZSB8fCB0eXBlID09IFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlOwogICAgfQoKICAg
IHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7CgogICAgc3RhdGljIFN0cnVjdHVyZSogYWRk
UHJvcGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgc3RhdGljIFN0cnVjdHVyZSogYWRk
TmV3UHJvcGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYsIFB1dFByb3BlcnR5U2xvdDo6Q29udGV4
dCA9IFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIERlZmVycmVkU3RydWN0dXJlVHJh
bnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwogICAgc3RhdGljIFN0cnVjdHVyZSog
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1
Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9w
ZXJ0eU9mZnNldCYpOwogICAgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9u
VG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0Jik7CiAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
T2Zmc2V0Jik7CiAgICBzdGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9u
KFZNJiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogICAgc3RhdGljIFN0cnVjdHVy
ZSogYXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICBzdGF0aWMgU3RydWN0dXJlKiB0b0NhY2hlYWJs
ZURpY3Rpb25hcnlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVU
cmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICBzdGF0aWMgU3RydWN0dXJl
KiB0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqKTsKICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHNlYWxUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKik7CiAgICBz
dGF0aWMgU3RydWN0dXJlKiBmcmVlemVUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKik7CiAgICBz
dGF0aWMgU3RydWN0dXJlKiBwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1
cmUqKTsKICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIG5vblByb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0
cnVjdHVyZSosIE5vblByb3BlcnR5VHJhbnNpdGlvbik7CgogICAgYm9vbCBpc1NlYWxlZChWTSYp
OwogICAgYm9vbCBpc0Zyb3plbihWTSYpOwogICAgYm9vbCBpc1N0cnVjdHVyZUV4dGVuc2libGUo
KSBjb25zdCB7IHJldHVybiAhZGlkUHJldmVudEV4dGVuc2lvbnMoKTsgfQogICAgYm9vbCBwdXRX
aWxsR3Jvd091dE9mTGluZVN0b3JhZ2UoKTsKICAgIHNpemVfdCBzdWdnZXN0ZWROZXdPdXRPZkxp
bmVTdG9yYWdlQ2FwYWNpdHkoKTsKCiAgICBTdHJ1Y3R1cmUqIGZsYXR0ZW5EaWN0aW9uYXJ5U3Ry
dWN0dXJlKFZNJiwgSlNPYmplY3QqKTsKCiAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3Ry
dWN0aW9uID0gdHJ1ZTsKICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CgoKICAgIFBy
b3BlcnR5T2Zmc2V0IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oVk0mLCBQcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbihWTSYsIFByb3BlcnR5TmFtZSk7CiAgICB2b2lkIHNldFByb3Rv
dHlwZVdpdGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgbV9wcm90
b3R5cGUuc2V0KHZtLCB0aGlzLCBwcm90b3R5cGUpOyB9CgogICAgYm9vbCBpc0RpY3Rpb25hcnko
KSBjb25zdCB7IHJldHVybiBkaWN0aW9uYXJ5S2luZCgpICE9IE5vbmVEaWN0aW9uYXJ5S2luZDsg
fQogICAgYm9vbCBpc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpIGNvbnN0IHsgcmV0dXJuIGRpY3Rp
b25hcnlLaW5kKCkgPT0gVW5jYWNoZWREaWN0aW9uYXJ5S2luZDsgfQoKICAgIGJvb2wgcHJvcGVy
dHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIGRpY3Rpb25hcnlL
aW5kKCkgIT0gVW5jYWNoZWREaWN0aW9uYXJ5S2luZAogICAgICAgICAgICAmJiAhdHlwZUluZm8o
KS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKQogICAgICAgICAgICAmJiAhKHR5cGVJbmZvKCku
Z2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmUoKSAmJiAhdHlwZUluZm8oKS5uZXdJbXB1cmVQcm9w
ZXJ0eUZpcmVzV2F0Y2hwb2ludHMoKSk7CiAgICB9CgogICAgYm9vbCBwcm9wZXJ0eUFjY2Vzc2Vz
QXJlQ2FjaGVhYmxlRm9yQWJzZW5jZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICF0eXBlSW5mbygp
LmdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlKCk7CiAgICB9Cgog
ICAgYm9vbCBuZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkKICAgIHsKICAgICAgICByZXR1
cm4gcHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpCiAgICAgICAgICAgICYmIHR5cGVJbmZv
KCkuZ2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmUoKQogICAgICAgICAgICAmJiB0eXBlSW5mbygp
Lm5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cygpOwogICAgfQoKCgogICAgYm9vbCB0
YWtlc1Nsb3dQYXRoSW5ERkdGb3JJbXB1cmVQcm9wZXJ0eSgpCiAgICB7CiAgICAgICAgcmV0dXJu
IHR5cGVJbmZvKCkuZ2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmUoKTsKICAgIH0KCgogICAgVHlw
ZUluZm8gdHlwZUluZm8oKSBjb25zdCB7ICgodm9pZCkwKTsgcmV0dXJuIG1fYmxvYi50eXBlSW5m
byhtX291dE9mTGluZVR5cGVGbGFncyk7IH0KICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IHJl
dHVybiB0eXBlSW5mbygpLmlzT2JqZWN0KCk7IH0KCiAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9ibG9iLmluZGV4aW5nVHlwZSgpICYgQWxsQXJyYXlUeXBl
czsgfQogICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZUluY2x1ZGluZ0hpc3RvcnkoKSBjb25z
dCB7IHJldHVybiBtX2Jsb2IuaW5kZXhpbmdUeXBlKCk7IH0KCiAgICBib29sIG1heUludGVyY2Vw
dEluZGV4ZWRBY2Nlc3NlcygpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuICEhKGluZGV4aW5n
VHlwZUluY2x1ZGluZ0hpc3RvcnkoKSAmIE1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKICAgIH0K
CiAgICBib29sIGFueU9iamVjdEluQ2hhaW5NYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSBj
b25zdDsKICAgIGJvb2wgaG9sZXNNdXN0Rm9yd2FyZFRvUHJvdG90eXBlKFZNJikgY29uc3Q7Cgog
ICAgYm9vbCBuZWVkc1Nsb3dQdXRJbmRleGluZygpIGNvbnN0OwogICAgTm9uUHJvcGVydHlUcmFu
c2l0aW9uIHN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSBjb25zdDsKCiAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3Qu
Z2V0KCk7IH0KCgoKICAgIHZvaWQgc2V0R2xvYmFsT2JqZWN0KFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkgeyBtX2dsb2JhbE9iamVjdC5zZXQodm0sIHRoaXMsIGdsb2JhbE9i
amVjdCk7IH0KCiAgICBKU1ZhbHVlIHN0b3JlZFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvdG90eXBlLmdldCgpOyB9CiAgICBKU09iamVjdCogc3RvcmVkUHJvdG90eXBlT2JqZWN0KCkg
Y29uc3Q7CiAgICBTdHJ1Y3R1cmUqIHN0b3JlZFByb3RvdHlwZVN0cnVjdHVyZSgpIGNvbnN0Owog
ICAgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICBKU1Zh
bHVlIHByb3RvdHlwZUZvckxvb2t1cChKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgSlNWYWx1
ZSBwcm90b3R5cGVGb3JMb29rdXAoQ29kZUJsb2NrKikgY29uc3Q7CiAgICBTdHJ1Y3R1cmVDaGFp
biogcHJvdG90eXBlQ2hhaW4oVk0mLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgU3RydWN0
dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwoKCiAgICBib29sIHByb3Rv
dHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhWTSYsIFByb3BlcnR5TmFtZSk7CgogICAgU3Ry
dWN0dXJlKiBwcmV2aW91c0lEKCkgY29uc3QKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAg
ICAgaWYgKGhhc1JhcmVEYXRhKCkpCiAgICAgICAgICAgIHJldHVybiByYXJlRGF0YSgpLT5wcmV2
aW91c0lEKCk7CiAgICAgICAgcmV0dXJuIHByZXZpb3VzKCk7CiAgICB9CiAgICBib29sIHRyYW5z
aXRpdmVseVRyYW5zaXRpb25lZEZyb20oU3RydWN0dXJlKiBzdHJ1Y3R1cmVUb0ZpbmQpOwoKICAg
IHVuc2lnbmVkIG91dE9mTGluZUNhcGFjaXR5KCkgY29uc3QKICAgIHsKICAgICAgICAoKHZvaWQp
MCk7CgogICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemUgPSB0aGlzLT5vdXRPZkxpbmVTaXpl
KCk7CgogICAgICAgIGlmICghb3V0T2ZMaW5lU2l6ZSkKICAgICAgICAgICAgcmV0dXJuIDA7Cgog
ICAgICAgIGlmIChvdXRPZkxpbmVTaXplIDw9IGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSkKICAg
ICAgICAgICAgcmV0dXJuIGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eTsKCiAgICAgICAgKCh2b2lk
KTApOwogICAgICAgIHN0YXRpY19hc3NlcnQoKG91dE9mTGluZUdyb3d0aEZhY3RvciA9PSAyKSwg
Im91dE9mTGluZUdyb3d0aEZhY3Rvcl9pc190d28iKTsKICAgICAgICByZXR1cm4gV1RGOjpyb3Vu
ZFVwVG9Qb3dlck9mVHdvKG91dE9mTGluZVNpemUpOwogICAgfQogICAgdW5zaWduZWQgb3V0T2ZM
aW5lU2l6ZSgpIGNvbnN0CiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkw
KTsKCiAgICAgICAgcmV0dXJuIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1f
b2Zmc2V0KTsKICAgIH0KICAgIGJvb2wgaGFzSW5saW5lU3RvcmFnZSgpIGNvbnN0CiAgICB7CiAg
ICAgICAgcmV0dXJuICEhbV9pbmxpbmVDYXBhY2l0eTsKICAgIH0KICAgIHVuc2lnbmVkIGlubGlu
ZUNhcGFjaXR5KCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9pbmxpbmVDYXBhY2l0eTsK
ICAgIH0KICAgIHVuc2lnbmVkIGlubGluZVNpemUoKSBjb25zdAogICAgewogICAgICAgIHJldHVy
biBzdGQ6Om1pbjx1bnNpZ25lZD4obV9vZmZzZXQgKyAxLCBtX2lubGluZUNhcGFjaXR5KTsKICAg
IH0KICAgIHVuc2lnbmVkIHRvdGFsU3RvcmFnZVNpemUoKSBjb25zdAogICAgewogICAgICAgIHJl
dHVybiBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV9pbmxpbmVDYXBhY2l0
eSk7CiAgICB9CiAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VDYXBhY2l0eSgpIGNvbnN0CiAgICB7
CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiBvdXRPZkxpbmVDYXBhY2l0eSgpICsg
aW5saW5lQ2FwYWNpdHkoKTsKICAgIH0KCiAgICBib29sIGlzVmFsaWRPZmZzZXQoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBKU0M6OmlzVmFsaWRPZmZz
ZXQob2Zmc2V0KQogICAgICAgICAgICAmJiBvZmZzZXQgPD0gbV9vZmZzZXQKICAgICAgICAgICAg
JiYgKG9mZnNldCA8IG1faW5saW5lQ2FwYWNpdHkgfHwgb2Zmc2V0ID49IGZpcnN0T3V0T2ZMaW5l
T2Zmc2V0KTsKICAgIH0KCiAgICBib29sIGhpamFja3NJbmRleGluZ0hlYWRlcigpIGNvbnN0CiAg
ICB7CiAgICAgICAgcmV0dXJuIGlzVHlwZWRWaWV3KG1fY2xhc3NJbmZvLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGUpOwogICAgfQoKICAgIGJvb2wgY291bGRIYXZlSW5kZXhpbmdIZWFkZXIoKSBjb25z
dAogICAgewogICAgICAgIHJldHVybiBoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUo
KSkKICAgICAgICAgICAgfHwgaGlqYWNrc0luZGV4aW5nSGVhZGVyKCk7CiAgICB9CgogICAgYm9v
bCBoYXNJbmRleGluZ0hlYWRlcihjb25zdCBKU0NlbGwqKSBjb25zdDsKCiAgICBib29sIG1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpOwoK
ICAgIFByb3BlcnR5T2Zmc2V0IGdldChWTSYsIFByb3BlcnR5TmFtZSk7CiAgICBQcm9wZXJ0eU9m
ZnNldCBnZXQoVk0mLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKTsKICAgIFBy
b3BlcnR5T2Zmc2V0IGdldChWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMs
IGJvb2wmIGhhc0luZmVycmVkVHlwZSk7CgoKCgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+CiAgICB2b2lkIGZvckVhY2hQcm9wZXJ0eUNvbmN1cnJlbnRseShjb25zdCBGdW5jdG9yJik7
CgogICAgUHJvcGVydHlPZmZzZXQgZ2V0Q29uY3VycmVudGx5KFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpOwogICAgUHJvcGVydHlPZmZzZXQgZ2V0Q29uY3VycmVudGx5KFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKTsKCiAgICBWZWN0b3I8UHJvcGVydHlNYXBFbnRy
eT4gZ2V0UHJvcGVydGllc0NvbmN1cnJlbnRseSgpOwoKICAgIHZvaWQgc2V0SGFzR2V0dGVyU2V0
dGVyUHJvcGVydGllc1dpdGhQcm90b0NoZWNrKGJvb2wgaXNfX3Byb3RvX18pCiAgICB7CiAgICAg
ICAgc2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyh0cnVlKTsKICAgICAgICBpZiAoIWlzX19w
cm90b19fKQogICAgICAgICAgICBzZXRIYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGll
c0V4Y2x1ZGluZ1Byb3RvKHRydWUpOwogICAgfQoKICAgIHZvaWQgc2V0Q29udGFpbnNSZWFkT25s
eVByb3BlcnRpZXMoKSB7IHNldEhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhj
bHVkaW5nUHJvdG8odHJ1ZSk7IH0KCiAgICB2b2lkIHNldEhhc0N1c3RvbUdldHRlclNldHRlclBy
b3BlcnRpZXNXaXRoUHJvdG9DaGVjayhib29sIGlzX19wcm90b19fKQogICAgewogICAgICAgIHNl
dEhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXModHJ1ZSk7CiAgICAgICAgaWYgKCFpc19f
cHJvdG9fXykKICAgICAgICAgICAgc2V0SGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRp
ZXNFeGNsdWRpbmdQcm90byh0cnVlKTsKICAgIH0KCiAgICBib29sIGlzRW1wdHkoKSBjb25zdAog
ICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gIUpTQzo6aXNWYWxpZE9mZnNl
dChtX29mZnNldCk7CiAgICB9CgogICAgdm9pZCBzZXRDYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKFZNJiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKik7CiAgICBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IqIGNhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSBjb25zdDsKICAgIGJvb2wg
Y2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkgY29uc3Q7CiAgICBib29sIGNhbkFjY2Vz
c1Byb3BlcnRpZXNRdWlja2x5Rm9yRW51bWVyYXRpb24oKSBjb25zdDsKCiAgICB2b2lkIGdldFBy
b3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKFZNJiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwoKICAgIEpTU3RyaW5nKiBvYmplY3RUb1N0cmluZ1ZhbHVlKCkKICAgIHsKICAg
ICAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIHJl
dHVybiByYXJlRGF0YSgpLT5vYmplY3RUb1N0cmluZ1ZhbHVlKCk7CiAgICB9CgogICAgdm9pZCBz
ZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSosIFZNJiwgSlNTdHJpbmcqIHZhbHVlLCBQ
cm9wZXJ0eVNsb3QgdG9TdHJpbmdUYWdTeW1ib2xTbG90KTsKCiAgICBjb25zdCBDbGFzc0luZm8q
IGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvOyB9CgogICAgc3RhdGljIHB0
cmRpZmZfdCBzdHJ1Y3R1cmVJRE9mZnNldCgpCiAgICB7CiAgICAgICAgcmV0dXJuIChyZWludGVy
cHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFN0cnVjdHVyZSo+KDB4NDAw
MCktPm1fYmxvYikpIC0gMHg0MDAwKSArIFN0cnVjdHVyZUlEQmxvYjo6c3RydWN0dXJlSURPZmZz
ZXQoKTsKICAgIH0KCiAgICBzdGF0aWMgcHRyZGlmZl90IHByb3RvdHlwZU9mZnNldCgpCiAgICB7
CiAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJl
dF9jYXN0PFN0cnVjdHVyZSo+KDB4NDAwMCktPm1fcHJvdG90eXBlKSkgLSAweDQwMDApOwogICAg
fQoKICAgIHN0YXRpYyBwdHJkaWZmX3QgZ2xvYmFsT2JqZWN0T2Zmc2V0KCkKICAgIHsKICAgICAg
ICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8
U3RydWN0dXJlKj4oMHg0MDAwKS0+bV9nbG9iYWxPYmplY3QpKSAtIDB4NDAwMCk7CiAgICB9Cgog
ICAgc3RhdGljIHB0cmRpZmZfdCBjbGFzc0luZm9PZmZzZXQoKQogICAgewogICAgICAgIHJldHVy
biAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxTdHJ1Y3R1
cmUqPigweDQwMDApLT5tX2NsYXNzSW5mbykpIC0gMHg0MDAwKTsKICAgIH0KCiAgICBzdGF0aWMg
cHRyZGlmZl90IGluZGV4aW5nVHlwZU9mZnNldCgpCiAgICB7CiAgICAgICAgcmV0dXJuIChyZWlu
dGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFN0cnVjdHVyZSo+KDB4
NDAwMCktPm1fYmxvYikpIC0gMHg0MDAwKSArIFN0cnVjdHVyZUlEQmxvYjo6aW5kZXhpbmdUeXBl
T2Zmc2V0KCk7CiAgICB9CgogICAgc3RhdGljIHB0cmRpZmZfdCBwcm9wZXJ0eVRhYmxlVW5zYWZl
T2Zmc2V0KCkKICAgIHsKICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90
PigmKHJlaW50ZXJwcmV0X2Nhc3Q8U3RydWN0dXJlKj4oMHg0MDAwKS0+bV9wcm9wZXJ0eVRhYmxl
VW5zYWZlKSkgLSAweDQwMDApOwogICAgfQoKICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYpOwoKICAgIGJvb2wgdHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52
YWxpZGF0ZWQoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX3RyYW5zaXRpb25XYXRjaHBv
aW50U2V0Lmhhc0JlZW5JbnZhbGlkYXRlZCgpOwogICAgfQoKICAgIGJvb2wgdHJhbnNpdGlvbldh
dGNocG9pbnRTZXRJc1N0aWxsVmFsaWQoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX3Ry
YW5zaXRpb25XYXRjaHBvaW50U2V0LmlzU3RpbGxWYWxpZCgpOwogICAgfQoKICAgIGJvb2wgZGZn
U2hvdWxkV2F0Y2hJZlBvc3NpYmxlKCkgY29uc3QKICAgIHsKIyA0NTMgIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIgogICAgICAgIGlmICh0cmFuc2l0aW9u
V2F0Y2hwb2ludElzTGlrZWx5VG9CZUZpcmVkKCkpCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
CgogICAgICAgIGlmIChoYXNCZWVuRGljdGlvbmFyeSgpKQogICAgICAgICAgICByZXR1cm4gZmFs
c2U7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGJvb2wgZGZnU2hvdWxkV2F0Y2go
KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBkZmdTaG91bGRXYXRjaElmUG9zc2libGUoKSAm
JiB0cmFuc2l0aW9uV2F0Y2hwb2ludFNldElzU3RpbGxWYWxpZCgpOwogICAgfQoKICAgIHZvaWQg
YWRkVHJhbnNpdGlvbldhdGNocG9pbnQoV2F0Y2hwb2ludCogd2F0Y2hwb2ludCkgY29uc3QKICAg
IHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldC5h
ZGQod2F0Y2hwb2ludCk7CiAgICB9CgogICAgdm9pZCBkaWRUcmFuc2l0aW9uRnJvbVRoaXNTdHJ1
Y3R1cmUoRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0
cikgY29uc3Q7CgogICAgSW5saW5lV2F0Y2hwb2ludFNldCYgdHJhbnNpdGlvbldhdGNocG9pbnRT
ZXQoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0
OwogICAgfQoKICAgIFdhdGNocG9pbnRTZXQqIGVuc3VyZVByb3BlcnR5UmVwbGFjZW1lbnRXYXRj
aHBvaW50U2V0KFZNJiwgUHJvcGVydHlPZmZzZXQpOwogICAgdm9pZCBzdGFydFdhdGNoaW5nUHJv
cGVydHlGb3JSZXBsYWNlbWVudHMoVk0mIHZtLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICB7
CiAgICAgICAgZW5zdXJlUHJvcGVydHlSZXBsYWNlbWVudFdhdGNocG9pbnRTZXQodm0sIG9mZnNl
dCk7CiAgICB9CiAgICB2b2lkIHN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyhW
TSYsIFByb3BlcnR5TmFtZSk7CiAgICBXYXRjaHBvaW50U2V0KiBwcm9wZXJ0eVJlcGxhY2VtZW50
V2F0Y2hwb2ludFNldChQcm9wZXJ0eU9mZnNldCk7CiAgICB2b2lkIGRpZFJlcGxhY2VQcm9wZXJ0
eShQcm9wZXJ0eU9mZnNldCk7CiAgICB2b2lkIGRpZENhY2hlUHJvcGVydHlSZXBsYWNlbWVudChW
TSYsIFByb3BlcnR5T2Zmc2V0KTsKCiAgICB2b2lkIHN0YXJ0V2F0Y2hpbmdJbnRlcm5hbFByb3Bl
cnRpZXNJZk5lY2Vzc2FyeShWTSYgdm0pCiAgICB7CiAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBl
Y3QoISEoZGlkV2F0Y2hJbnRlcm5hbFByb3BlcnRpZXMoKSksIDEpKQogICAgICAgICAgICByZXR1
cm47CiAgICAgICAgc3RhcnRXYXRjaGluZ0ludGVybmFsUHJvcGVydGllcyh2bSk7CiAgICB9Cgog
ICAgdm9pZCBzdGFydFdhdGNoaW5nSW50ZXJuYWxQcm9wZXJ0aWVzSWZOZWNlc3NhcnlGb3JFbnRp
cmVDaGFpbihWTSYgdm0pCiAgICB7CiAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHRoaXM7IHN0cnVjdHVyZTsgc3RydWN0dXJlID0gc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGVT
dHJ1Y3R1cmUoKSkKICAgICAgICAgICAgc3RydWN0dXJlLT5zdGFydFdhdGNoaW5nSW50ZXJuYWxQ
cm9wZXJ0aWVzSWZOZWNlc3Nhcnkodm0pOwogICAgfQoKICAgIGJvb2wgaGFzSW5mZXJyZWRUeXBl
cygpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuICEhbV9pbmZlcnJlZFR5cGVUYWJsZTsKICAg
IH0KCiAgICBJbmZlcnJlZFR5cGUqIGluZmVycmVkVHlwZUZvcihVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKQogICAgewogICAgICAgIGlmIChJbmZlcnJlZFR5cGVUYWJsZSogdGFibGUgPSBtX2luZmVy
cmVkVHlwZVRhYmxlLmdldCgpKQogICAgICAgICAgICByZXR1cm4gdGFibGUtPmdldCh1aWQpOwog
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgfQoKICAgIEluZmVycmVkVHlwZTo6RGVzY3JpcHRv
ciBpbmZlcnJlZFR5cGVEZXNjcmlwdG9yRm9yKFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICB7
CiAgICAgICAgaWYgKEluZmVycmVkVHlwZSogcmVzdWx0ID0gaW5mZXJyZWRUeXBlRm9yKHVpZCkp
CiAgICAgICAgICAgIHJldHVybiByZXN1bHQtPmRlc2NyaXB0b3IoKTsKICAgICAgICByZXR1cm4g
SW5mZXJyZWRUeXBlOjpUb3A7CiAgICB9CgoKCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSB2b2lkIHdpbGxTdG9yZVZhbHVlRm9yTmV3VHJhbnNpdGlvbigKICAg
ICAgICBWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkT3B0aW1pemUpCiAgICB7CiAgICAgICAgaWYgKGhhc0JlZW5EaWN0aW9uYXJ5KCkg
fHwgKCFzaG91bGRPcHRpbWl6ZSAmJiAhbV9pbmZlcnJlZFR5cGVUYWJsZSkpCiAgICAgICAgICAg
IHJldHVybjsKICAgICAgICB3aWxsU3RvcmVWYWx1ZVNsb3codm0sIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNob3VsZE9wdGltaXplLCBJbmZlcnJlZFR5cGVUYWJsZTo6TmV3UHJvcGVydHkpOwogICAg
fQoKCgoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQg
d2lsbFN0b3JlVmFsdWVGb3JFeGlzdGluZ1RyYW5zaXRpb24oCiAgICAgICAgVk0mIHZtLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZE9wdGltaXpl
KQogICAgewogICAgICAgIGlmIChoYXNCZWVuRGljdGlvbmFyeSgpIHx8ICFtX2luZmVycmVkVHlw
ZVRhYmxlKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgd2lsbFN0b3JlVmFsdWVTbG93KHZt
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRPcHRpbWl6ZSwgSW5mZXJyZWRUeXBlVGFibGU6
Ok5ld1Byb3BlcnR5KTsKICAgIH0KCgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fKSkgdm9pZCB3aWxsU3RvcmVWYWx1ZUZvclJlcGxhY2UoCiAgICAgICAgVk0mIHZt
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZE9w
dGltaXplKQogICAgewogICAgICAgIGlmIChoYXNCZWVuRGljdGlvbmFyeSgpKQogICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgd2lsbFN0b3JlVmFsdWVTbG93KHZtLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzaG91bGRPcHRpbWl6ZSwgSW5mZXJyZWRUeXBlVGFibGU6Ok9sZFByb3BlcnR5KTsKICAg
IH0KCiAgICBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiB0b1N0cnVjdHVyZVNoYXBlKEpTVmFs
dWUpOwoKCgogICAgYm9vbCBjYW5Vc2VGb3JBbGxvY2F0aW9uc09mKFN0cnVjdHVyZSopOwoKICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgdm9pZCBkdW1wSW5Db250ZXh0KFBy
aW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKICAgIHZvaWQgZHVtcEJyaWVmKFByaW50
U3RyZWFtJiwgY29uc3QgQ1N0cmluZyYpIGNvbnN0OwoKICAgIHN0YXRpYyB2b2lkIGR1bXBDb250
ZXh0SGVhZGVyKFByaW50U3RyZWFtJik7CgogICAgcHJvdGVjdGVkOiBzdGF0aWMgY29uc3QgOjpK
U0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0lu
Zm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9OwoKcHJpdmF0ZToKICAgIHR5cGVkZWYgZW51
bSB7CiAgICAgICAgTm9uZURpY3Rpb25hcnlLaW5kID0gMCwKICAgICAgICBDYWNoZWREaWN0aW9u
YXJ5S2luZCA9IDEsCiAgICAgICAgVW5jYWNoZWREaWN0aW9uYXJ5S2luZCA9IDIKICAgIH0gRGlj
dGlvbmFyeUtpbmQ7CgpwdWJsaWM6CiNkZWZpbmUgREVGSU5FX0JJVEZJRUxEKHR5cGUsbG93ZXJO
YW1lLHVwcGVyTmFtZSx3aWR0aCxvZmZzZXQpIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzXyAjI2xv
d2VyTmFtZSAjI1NoaWZ0ID0gb2Zmc2V0OyBzdGF0aWMgY29uc3QgdWludDMyX3Qgc18gIyNsb3dl
ck5hbWUgIyNNYXNrID0gKCgxIDw8ICh3aWR0aCAtIDEpKSB8ICgoMSA8PCAod2lkdGggLSAxKSkg
LSAxKSk7IHR5cGUgbG93ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZT4o
KG1fYml0RmllbGQgPj4gb2Zmc2V0KSAmIHNfICMjbG93ZXJOYW1lICMjTWFzayk7IH0gdm9pZCBz
ZXQgIyN1cHBlck5hbWUodHlwZSBuZXdWYWx1ZSkgeyBtX2JpdEZpZWxkICY9IH4oc18gIyNsb3dl
ck5hbWUgIyNNYXNrIDw8IG9mZnNldCk7IG1fYml0RmllbGQgfD0gKG5ld1ZhbHVlICYgc18gIyNs
b3dlck5hbWUgIyNNYXNrKSA8PCBvZmZzZXQ7IH0KIyA1ODUgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIgogICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNf
ZGljdGlvbmFyeUtpbmRTaGlmdCA9IDA7IHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2RpY3Rpb25h
cnlLaW5kTWFzayA9ICgoMSA8PCAoMiAtIDEpKSB8ICgoMSA8PCAoMiAtIDEpKSAtIDEpKTsgRGlj
dGlvbmFyeUtpbmQgZGljdGlvbmFyeUtpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxE
aWN0aW9uYXJ5S2luZD4oKG1fYml0RmllbGQgPj4gMCkgJiBzX2RpY3Rpb25hcnlLaW5kTWFzayk7
IH0gdm9pZCBzZXREaWN0aW9uYXJ5S2luZChEaWN0aW9uYXJ5S2luZCBuZXdWYWx1ZSkgeyBtX2Jp
dEZpZWxkICY9IH4oc19kaWN0aW9uYXJ5S2luZE1hc2sgPDwgMCk7IG1fYml0RmllbGQgfD0gKG5l
d1ZhbHVlICYgc19kaWN0aW9uYXJ5S2luZE1hc2spIDw8IDA7IH07CiAgICBzdGF0aWMgY29uc3Qg
dWludDMyX3Qgc19pc1Bpbm5lZFByb3BlcnR5VGFibGVTaGlmdCA9IDI7IHN0YXRpYyBjb25zdCB1
aW50MzJfdCBzX2lzUGlubmVkUHJvcGVydHlUYWJsZU1hc2sgPSAoKDEgPDwgKDEgLSAxKSkgfCAo
KDEgPDwgKDEgLSAxKSkgLSAxKSk7IGJvb2wgaXNQaW5uZWRQcm9wZXJ0eVRhYmxlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKG1fYml0RmllbGQgPj4gMikgJiBzX2lzUGlubmVk
UHJvcGVydHlUYWJsZU1hc2spOyB9IHZvaWQgc2V0SXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGJvb2wg
bmV3VmFsdWUpIHsgbV9iaXRGaWVsZCAmPSB+KHNfaXNQaW5uZWRQcm9wZXJ0eVRhYmxlTWFzayA8
PCAyKTsgbV9iaXRGaWVsZCB8PSAobmV3VmFsdWUgJiBzX2lzUGlubmVkUHJvcGVydHlUYWJsZU1h
c2spIDw8IDI7IH07CiAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19oYXNHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzU2hpZnQgPSAzOyBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19oYXNHZXR0ZXJTZXR0
ZXJQcm9wZXJ0aWVzTWFzayA9ICgoMSA8PCAoMSAtIDEpKSB8ICgoMSA8PCAoMSAtIDEpKSAtIDEp
KTsgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Ym9vbD4oKG1fYml0RmllbGQgPj4gMykgJiBzX2hhc0dldHRlclNldHRlclByb3BlcnRp
ZXNNYXNrKTsgfSB2b2lkIHNldEhhc0dldHRlclNldHRlclByb3BlcnRpZXMoYm9vbCBuZXdWYWx1
ZSkgeyBtX2JpdEZpZWxkICY9IH4oc19oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzTWFzayA8PCAz
KTsgbV9iaXRGaWVsZCB8PSAobmV3VmFsdWUgJiBzX2hhc0dldHRlclNldHRlclByb3BlcnRpZXNN
YXNrKSA8PCAzOyB9OwogICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfaGFzUmVhZE9ubHlPckdl
dHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90b1NoaWZ0ID0gNDsgc3RhdGljIGNvbnN0
IHVpbnQzMl90IHNfaGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQ
cm90b01hc2sgPSAoKDEgPDwgKDEgLSAxKSkgfCAoKDEgPDwgKDEgLSAxKSkgLSAxKSk7IGJvb2wg
aGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KChtX2JpdEZpZWxkID4+IDQpICYgc19oYXNSZWFk
T25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvTWFzayk7IH0gdm9pZCBz
ZXRIYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKGJvb2wg
bmV3VmFsdWUpIHsgbV9iaXRGaWVsZCAmPSB+KHNfaGFzUmVhZE9ubHlPckdldHRlclNldHRlclBy
b3BlcnRpZXNFeGNsdWRpbmdQcm90b01hc2sgPDwgNCk7IG1fYml0RmllbGQgfD0gKG5ld1ZhbHVl
ICYgc19oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvTWFz
aykgPDwgNDsgfTsKICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2lzUXVpY2tQcm9wZXJ0eUFj
Y2Vzc0FsbG93ZWRGb3JFbnVtZXJhdGlvblNoaWZ0ID0gNTsgc3RhdGljIGNvbnN0IHVpbnQzMl90
IHNfaXNRdWlja1Byb3BlcnR5QWNjZXNzQWxsb3dlZEZvckVudW1lcmF0aW9uTWFzayA9ICgoMSA8
PCAoMSAtIDEpKSB8ICgoMSA8PCAoMSAtIDEpKSAtIDEpKTsgYm9vbCBpc1F1aWNrUHJvcGVydHlB
Y2Nlc3NBbGxvd2VkRm9yRW51bWVyYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxi
b29sPigobV9iaXRGaWVsZCA+PiA1KSAmIHNfaXNRdWlja1Byb3BlcnR5QWNjZXNzQWxsb3dlZEZv
ckVudW1lcmF0aW9uTWFzayk7IH0gdm9pZCBzZXRJc1F1aWNrUHJvcGVydHlBY2Nlc3NBbGxvd2Vk
Rm9yRW51bWVyYXRpb24oYm9vbCBuZXdWYWx1ZSkgeyBtX2JpdEZpZWxkICY9IH4oc19pc1F1aWNr
UHJvcGVydHlBY2Nlc3NBbGxvd2VkRm9yRW51bWVyYXRpb25NYXNrIDw8IDUpOyBtX2JpdEZpZWxk
IHw9IChuZXdWYWx1ZSAmIHNfaXNRdWlja1Byb3BlcnR5QWNjZXNzQWxsb3dlZEZvckVudW1lcmF0
aW9uTWFzaykgPDwgNTsgfTsKICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2F0dHJpYnV0ZXNJ
blByZXZpb3VzU2hpZnQgPSA2OyBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19hdHRyaWJ1dGVzSW5Q
cmV2aW91c01hc2sgPSAoKDEgPDwgKDE0IC0gMSkpIHwgKCgxIDw8ICgxNCAtIDEpKSAtIDEpKTsg
dW5zaWduZWQgYXR0cmlidXRlc0luUHJldmlvdXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oKG1fYml0RmllbGQgPj4gNikgJiBzX2F0dHJpYnV0ZXNJblByZXZpb3VzTWFz
ayk7IH0gdm9pZCBzZXRBdHRyaWJ1dGVzSW5QcmV2aW91cyh1bnNpZ25lZCBuZXdWYWx1ZSkgeyBt
X2JpdEZpZWxkICY9IH4oc19hdHRyaWJ1dGVzSW5QcmV2aW91c01hc2sgPDwgNik7IG1fYml0Rmll
bGQgfD0gKG5ld1ZhbHVlICYgc19hdHRyaWJ1dGVzSW5QcmV2aW91c01hc2spIDw8IDY7IH07CiAg
ICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19kaWRQcmV2ZW50RXh0ZW5zaW9uc1NoaWZ0ID0gMjA7
IHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2RpZFByZXZlbnRFeHRlbnNpb25zTWFzayA9ICgoMSA8
PCAoMSAtIDEpKSB8ICgoMSA8PCAoMSAtIDEpKSAtIDEpKTsgYm9vbCBkaWRQcmV2ZW50RXh0ZW5z
aW9ucygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KChtX2JpdEZpZWxkID4+IDIw
KSAmIHNfZGlkUHJldmVudEV4dGVuc2lvbnNNYXNrKTsgfSB2b2lkIHNldERpZFByZXZlbnRFeHRl
bnNpb25zKGJvb2wgbmV3VmFsdWUpIHsgbV9iaXRGaWVsZCAmPSB+KHNfZGlkUHJldmVudEV4dGVu
c2lvbnNNYXNrIDw8IDIwKTsgbV9iaXRGaWVsZCB8PSAobmV3VmFsdWUgJiBzX2RpZFByZXZlbnRF
eHRlbnNpb25zTWFzaykgPDwgMjA7IH07CiAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19kaWRU
cmFuc2l0aW9uU2hpZnQgPSAyMTsgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfZGlkVHJhbnNpdGlv
bk1hc2sgPSAoKDEgPDwgKDEgLSAxKSkgfCAoKDEgPDwgKDEgLSAxKSkgLSAxKSk7IGJvb2wgZGlk
VHJhbnNpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KChtX2JpdEZpZWxk
ID4+IDIxKSAmIHNfZGlkVHJhbnNpdGlvbk1hc2spOyB9IHZvaWQgc2V0RGlkVHJhbnNpdGlvbihi
b29sIG5ld1ZhbHVlKSB7IG1fYml0RmllbGQgJj0gfihzX2RpZFRyYW5zaXRpb25NYXNrIDw8IDIx
KTsgbV9iaXRGaWVsZCB8PSAobmV3VmFsdWUgJiBzX2RpZFRyYW5zaXRpb25NYXNrKSA8PCAyMTsg
fTsKICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX3N0YXRpY0Z1bmN0aW9uc1JlaWZpZWRTaGlm
dCA9IDIyOyBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19zdGF0aWNGdW5jdGlvbnNSZWlmaWVkTWFz
ayA9ICgoMSA8PCAoMSAtIDEpKSB8ICgoMSA8PCAoMSAtIDEpKSAtIDEpKTsgYm9vbCBzdGF0aWNG
dW5jdGlvbnNSZWlmaWVkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKG1fYml0
RmllbGQgPj4gMjIpICYgc19zdGF0aWNGdW5jdGlvbnNSZWlmaWVkTWFzayk7IH0gdm9pZCBzZXRT
dGF0aWNGdW5jdGlvbnNSZWlmaWVkKGJvb2wgbmV3VmFsdWUpIHsgbV9iaXRGaWVsZCAmPSB+KHNf
c3RhdGljRnVuY3Rpb25zUmVpZmllZE1hc2sgPDwgMjIpOyBtX2JpdEZpZWxkIHw9IChuZXdWYWx1
ZSAmIHNfc3RhdGljRnVuY3Rpb25zUmVpZmllZE1hc2spIDw8IDIyOyB9OwogICAgc3RhdGljIGNv
bnN0IHVpbnQzMl90IHNfaGFzUmFyZURhdGFTaGlmdCA9IDIzOyBzdGF0aWMgY29uc3QgdWludDMy
X3Qgc19oYXNSYXJlRGF0YU1hc2sgPSAoKDEgPDwgKDEgLSAxKSkgfCAoKDEgPDwgKDEgLSAxKSkg
LSAxKSk7IGJvb2wgaGFzUmFyZURhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29s
PigobV9iaXRGaWVsZCA+PiAyMykgJiBzX2hhc1JhcmVEYXRhTWFzayk7IH0gdm9pZCBzZXRIYXNS
YXJlRGF0YShib29sIG5ld1ZhbHVlKSB7IG1fYml0RmllbGQgJj0gfihzX2hhc1JhcmVEYXRhTWFz
ayA8PCAyMyk7IG1fYml0RmllbGQgfD0gKG5ld1ZhbHVlICYgc19oYXNSYXJlRGF0YU1hc2spIDw8
IDIzOyB9OwogICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfaGFzQmVlbkZsYXR0ZW5lZEJlZm9y
ZVNoaWZ0ID0gMjQ7IHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2hhc0JlZW5GbGF0dGVuZWRCZWZv
cmVNYXNrID0gKCgxIDw8ICgxIC0gMSkpIHwgKCgxIDw8ICgxIC0gMSkpIC0gMSkpOyBib29sIGhh
c0JlZW5GbGF0dGVuZWRCZWZvcmUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPigo
bV9iaXRGaWVsZCA+PiAyNCkgJiBzX2hhc0JlZW5GbGF0dGVuZWRCZWZvcmVNYXNrKTsgfSB2b2lk
IHNldEhhc0JlZW5GbGF0dGVuZWRCZWZvcmUoYm9vbCBuZXdWYWx1ZSkgeyBtX2JpdEZpZWxkICY9
IH4oc19oYXNCZWVuRmxhdHRlbmVkQmVmb3JlTWFzayA8PCAyNCk7IG1fYml0RmllbGQgfD0gKG5l
d1ZhbHVlICYgc19oYXNCZWVuRmxhdHRlbmVkQmVmb3JlTWFzaykgPDwgMjQ7IH07CiAgICBzdGF0
aWMgY29uc3QgdWludDMyX3Qgc19oYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzU2hpZnQg
PSAyNTsgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfaGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVy
dGllc01hc2sgPSAoKDEgPDwgKDEgLSAxKSkgfCAoKDEgPDwgKDEgLSAxKSkgLSAxKSk7IGJvb2wg
aGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PGJvb2w+KChtX2JpdEZpZWxkID4+IDI1KSAmIHNfaGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJv
cGVydGllc01hc2spOyB9IHZvaWQgc2V0SGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcyhi
b29sIG5ld1ZhbHVlKSB7IG1fYml0RmllbGQgJj0gfihzX2hhc0N1c3RvbUdldHRlclNldHRlclBy
b3BlcnRpZXNNYXNrIDw8IDI1KTsgbV9iaXRGaWVsZCB8PSAobmV3VmFsdWUgJiBzX2hhc0N1c3Rv
bUdldHRlclNldHRlclByb3BlcnRpZXNNYXNrKSA8PCAyNTsgfTsKICAgIHN0YXRpYyBjb25zdCB1
aW50MzJfdCBzX2RpZFdhdGNoSW50ZXJuYWxQcm9wZXJ0aWVzU2hpZnQgPSAyNjsgc3RhdGljIGNv
bnN0IHVpbnQzMl90IHNfZGlkV2F0Y2hJbnRlcm5hbFByb3BlcnRpZXNNYXNrID0gKCgxIDw8ICgx
IC0gMSkpIHwgKCgxIDw8ICgxIC0gMSkpIC0gMSkpOyBib29sIGRpZFdhdGNoSW50ZXJuYWxQcm9w
ZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKG1fYml0RmllbGQgPj4g
MjYpICYgc19kaWRXYXRjaEludGVybmFsUHJvcGVydGllc01hc2spOyB9IHZvaWQgc2V0RGlkV2F0
Y2hJbnRlcm5hbFByb3BlcnRpZXMoYm9vbCBuZXdWYWx1ZSkgeyBtX2JpdEZpZWxkICY9IH4oc19k
aWRXYXRjaEludGVybmFsUHJvcGVydGllc01hc2sgPDwgMjYpOyBtX2JpdEZpZWxkIHw9IChuZXdW
YWx1ZSAmIHNfZGlkV2F0Y2hJbnRlcm5hbFByb3BlcnRpZXNNYXNrKSA8PCAyNjsgfTsKICAgIHN0
YXRpYyBjb25zdCB1aW50MzJfdCBzX3RyYW5zaXRpb25XYXRjaHBvaW50SXNMaWtlbHlUb0JlRmly
ZWRTaGlmdCA9IDI3OyBzdGF0aWMgY29uc3QgdWludDMyX3Qgc190cmFuc2l0aW9uV2F0Y2hwb2lu
dElzTGlrZWx5VG9CZUZpcmVkTWFzayA9ICgoMSA8PCAoMSAtIDEpKSB8ICgoMSA8PCAoMSAtIDEp
KSAtIDEpKTsgYm9vbCB0cmFuc2l0aW9uV2F0Y2hwb2ludElzTGlrZWx5VG9CZUZpcmVkKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKG1fYml0RmllbGQgPj4gMjcpICYgc190cmFu
c2l0aW9uV2F0Y2hwb2ludElzTGlrZWx5VG9CZUZpcmVkTWFzayk7IH0gdm9pZCBzZXRUcmFuc2l0
aW9uV2F0Y2hwb2ludElzTGlrZWx5VG9CZUZpcmVkKGJvb2wgbmV3VmFsdWUpIHsgbV9iaXRGaWVs
ZCAmPSB+KHNfdHJhbnNpdGlvbldhdGNocG9pbnRJc0xpa2VseVRvQmVGaXJlZE1hc2sgPDwgMjcp
OyBtX2JpdEZpZWxkIHw9IChuZXdWYWx1ZSAmIHNfdHJhbnNpdGlvbldhdGNocG9pbnRJc0xpa2Vs
eVRvQmVGaXJlZE1hc2spIDw8IDI3OyB9OwogICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfaGFz
QmVlbkRpY3Rpb25hcnlTaGlmdCA9IDI4OyBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19oYXNCZWVu
RGljdGlvbmFyeU1hc2sgPSAoKDEgPDwgKDEgLSAxKSkgfCAoKDEgPDwgKDEgLSAxKSkgLSAxKSk7
IGJvb2wgaGFzQmVlbkRpY3Rpb25hcnkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29s
PigobV9iaXRGaWVsZCA+PiAyOCkgJiBzX2hhc0JlZW5EaWN0aW9uYXJ5TWFzayk7IH0gdm9pZCBz
ZXRIYXNCZWVuRGljdGlvbmFyeShib29sIG5ld1ZhbHVlKSB7IG1fYml0RmllbGQgJj0gfihzX2hh
c0JlZW5EaWN0aW9uYXJ5TWFzayA8PCAyOCk7IG1fYml0RmllbGQgfD0gKG5ld1ZhbHVlICYgc19o
YXNCZWVuRGljdGlvbmFyeU1hc2spIDw8IDI4OyB9OwoKcHJpdmF0ZToKICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CgogICAgU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8q
LCBJbmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsKICAgIFN0cnVjdHVyZShW
TSYpOwogICAgU3RydWN0dXJlKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFu
c2l0aW9uV2F0Y2hwb2ludEZpcmUqKTsKCiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSog
PSBudWxscHRyKTsKCiAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25U
b0V4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwoKCgoKCiAgICB2b2lkIGZp
bmRTdHJ1Y3R1cmVzQW5kTWFwRm9yTWF0ZXJpYWxpemF0aW9uKFZlY3RvcjxTdHJ1Y3R1cmUqLCA4
PiYgc3RydWN0dXJlcywgU3RydWN0dXJlKiYsIFByb3BlcnR5VGFibGUqJik7CgogICAgc3RhdGlj
IFN0cnVjdHVyZSogdG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIERpY3Rp
b25hcnlLaW5kLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBu
dWxscHRyKTsKCiAgICBQcm9wZXJ0eU9mZnNldCBhZGQoVk0mLCBQcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOwogICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlKFByb3BlcnR5TmFtZSk7
CgogICAgdm9pZCBjcmVhdGVQcm9wZXJ0eU1hcChjb25zdCBHQ1NhZmVDb25jdXJyZW50SklUTG9j
a2VyJiwgVk0mLCB1bnNpZ25lZCBrZXlDb3VudCA9IDApOwogICAgdm9pZCBjaGVja0NvbnNpc3Rl
bmN5KCk7CgogICAgV3JpdGVCYXJyaWVyPFByb3BlcnR5VGFibGU+JiBwcm9wZXJ0eVRhYmxlKCk7
CiAgICBQcm9wZXJ0eVRhYmxlKiB0YWtlUHJvcGVydHlUYWJsZU9yQ2xvbmVJZlBpbm5lZChWTSYp
OwogICAgUHJvcGVydHlUYWJsZSogY29weVByb3BlcnR5VGFibGUoVk0mKTsKICAgIFByb3BlcnR5
VGFibGUqIGNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyhWTSYpOwogICAgdm9pZCBtYXRlcmlh
bGl6ZVByb3BlcnR5TWFwKFZNJik7CiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18pKSB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShWTSYgdm0s
IERlZmVyR0MmKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAg
ICAgICAgKCh2b2lkKTApOwogICAgICAgIGlmICghcHJvcGVydHlUYWJsZSgpICYmIHByZXZpb3Vz
SUQoKSkKICAgICAgICAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCh2bSk7CiAgICB9CiAgICBp
bmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIG1hdGVyaWFsaXpl
UHJvcGVydHlNYXBJZk5lY2Vzc2FyeShWTSYgdm0sIFByb3BlcnR5VGFibGUqJiB0YWJsZSkKICAg
IHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkw
KTsKICAgICAgICB0YWJsZSA9IHByb3BlcnR5VGFibGUoKS5nZXQoKTsKICAgICAgICBpZiAoIXRh
YmxlICYmIHByZXZpb3VzSUQoKSkgewogICAgICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVh
cCk7CiAgICAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXAodm0pOwogICAgICAgICAgICB0
YWJsZSA9IHByb3BlcnR5VGFibGUoKS5nZXQoKTsKICAgICAgICB9CiAgICB9CiAgICB2b2lkIG1h
dGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeUZvclBpbm5pbmcoVk0mIHZtLCBEZWZlckdD
JikKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgY2hlY2tPZmZzZXRDb25zaXN0ZW5j
eSgpOwogICAgICAgIGlmICghcHJvcGVydHlUYWJsZSgpKQogICAgICAgICAgICBtYXRlcmlhbGl6
ZVByb3BlcnR5TWFwKHZtKTsKICAgIH0KCiAgICB2b2lkIHNldFByZXZpb3VzSUQoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgIHsKICAgICAgICBpZiAoaGFzUmFyZURhdGEoKSkKICAg
ICAgICAgICAgcmFyZURhdGEoKS0+c2V0UHJldmlvdXNJRCh2bSwgc3RydWN0dXJlKTsKICAgICAg
ICBlbHNlCiAgICAgICAgICAgIG1fcHJldmlvdXNPclJhcmVEYXRhLnNldCh2bSwgdGhpcywgc3Ry
dWN0dXJlKTsKICAgIH0KCiAgICB2b2lkIGNsZWFyUHJldmlvdXNJRCgpCiAgICB7CiAgICAgICAg
aWYgKGhhc1JhcmVEYXRhKCkpCiAgICAgICAgICAgIHJhcmVEYXRhKCktPmNsZWFyUHJldmlvdXNJ
RCgpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgbV9wcmV2aW91c09yUmFyZURhdGEuY2xlYXIo
KTsKICAgIH0KCiAgICBpbnQgdHJhbnNpdGlvbkNvdW50KCkgY29uc3QKICAgIHsKCiAgICAgICAg
cmV0dXJuIG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX2lubGluZUNhcGFj
aXR5KTsKICAgIH0KCiAgICBib29sIGlzVmFsaWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVD
aGFpbiogY2FjaGVkUHJvdG90eXBlQ2hhaW4pIGNvbnN0OwogICAgYm9vbCBpc1ZhbGlkKEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZUNoYWluKiBjYWNoZWRQcm90b3R5cGVDaGFpbikgY29uc3Q7CgogICAg
dm9pZCBwaW4oKTsKCiAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzKCkgY29uc3QKICAgIHsKICAgICAg
ICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFN0cnVjdHVyZSo+KG1fcHJl
dmlvdXNPclJhcmVEYXRhLmdldCgpKTsKICAgIH0KCiAgICBTdHJ1Y3R1cmVSYXJlRGF0YSogcmFy
ZURhdGEoKSBjb25zdAogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8U3RydWN0dXJlUmFyZURhdGEqPihtX3ByZXZpb3VzT3JSYXJlRGF0YS5nZXQoKSk7
CiAgICB9CgogICAgYm9vbCBjaGVja09mZnNldENvbnNpc3RlbmN5KCkgY29uc3Q7CgogICAgdm9p
ZCBhbGxvY2F0ZVJhcmVEYXRhKFZNJik7CgogICAgdm9pZCBzdGFydFdhdGNoaW5nSW50ZXJuYWxQ
cm9wZXJ0aWVzKFZNJik7CgogICAgdm9pZCB3aWxsU3RvcmVWYWx1ZVNsb3coCiAgICAgICAgVk0m
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wsIEluZmVycmVkVHlwZVRhYmxlOjpTdG9yZWRQ
cm9wZXJ0eUFnZSk7CgogICAgc3RhdGljIGNvbnN0IGludCBzX21heFRyYW5zaXRpb25MZW5ndGgg
PSA2NDsKICAgIHN0YXRpYyBjb25zdCBpbnQgc19tYXhUcmFuc2l0aW9uTGVuZ3RoRm9yTm9uRXZh
bFB1dEJ5SWQgPSA1MTI7CgoKCiAgICBTdHJ1Y3R1cmVJREJsb2IgbV9ibG9iOwogICAgVHlwZUlu
Zm86Ok91dE9mTGluZVR5cGVGbGFncyBtX291dE9mTGluZVR5cGVGbGFnczsKCiAgICBXcml0ZUJh
cnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogICAgV3JpdGVCYXJyaWVyPFVu
a25vd24+IG1fcHJvdG90eXBlOwogICAgbXV0YWJsZSBXcml0ZUJhcnJpZXI8U3RydWN0dXJlQ2hh
aW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CgogICAgV3JpdGVCYXJyaWVyPEpTQ2VsbD4gbV9w
cmV2aW91c09yUmFyZURhdGE7CgogICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBtX25hbWVJ
blByZXZpb3VzOwoKICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CgogICAgU3RydWN0
dXJlVHJhbnNpdGlvblRhYmxlIG1fdHJhbnNpdGlvblRhYmxlOwoKCgogICAgV3JpdGVCYXJyaWVy
PFByb3BlcnR5VGFibGU+IG1fcHJvcGVydHlUYWJsZVVuc2FmZTsKCiAgICBXcml0ZUJhcnJpZXI8
SW5mZXJyZWRUeXBlVGFibGU+IG1faW5mZXJyZWRUeXBlVGFibGU7CgogICAgbXV0YWJsZSBJbmxp
bmVXYXRjaHBvaW50U2V0IG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQ7CgogICAgc3RhdGljX2Fz
c2VydCgoZmlyc3RPdXRPZkxpbmVPZmZzZXQgPCAyNTYpLCAiZmlyc3RPdXRPZkxpbmVPZmZzZXRf
Zml0cyIpOwoKCiAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKCiAgICB1aW50OF90IG1faW5s
aW5lQ2FwYWNpdHk7CgogICAgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOwoKICAgIHVpbnQzMl90
IG1fYml0RmllbGQ7Cn07Cgp9CiMgMzMgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0N1c3RvbUdldHRlclNldHRlci5oIiAyCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIEN1c3Rv
bUdldHRlclNldHRlciBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewpwdWJsaWM6CiAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwoKICAgIHR5cGVkZWYg
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgQ3VzdG9tR2V0dGVyOwogICAgdHlwZWRlZiBQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYyBDdXN0b21TZXR0ZXI7CgogICAgc3RhdGljIEN1c3Rv
bUdldHRlclNldHRlciogY3JlYXRlKFZNJiB2bSwgQ3VzdG9tR2V0dGVyIGN1c3RvbUdldHRlciwg
Q3VzdG9tU2V0dGVyIGN1c3RvbVNldHRlcikKICAgIHsKICAgICAgICBDdXN0b21HZXR0ZXJTZXR0
ZXIqIGN1c3RvbUdldHRlclNldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEN1c3Rv
bUdldHRlclNldHRlcj4odm0uaGVhcCkpIEN1c3RvbUdldHRlclNldHRlcih2bSwgY3VzdG9tR2V0
dGVyLCBjdXN0b21TZXR0ZXIpOwogICAgICAgIGN1c3RvbUdldHRlclNldHRlci0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgICAgIHJldHVybiBjdXN0b21HZXR0ZXJTZXR0ZXI7CiAgICB9CgogICAg
Q3VzdG9tR2V0dGVyU2V0dGVyOjpDdXN0b21HZXR0ZXIgZ2V0dGVyKCkgY29uc3QgeyByZXR1cm4g
bV9nZXR0ZXI7IH0KICAgIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0dGVyIHNldHRlcigp
IGNvbnN0IHsgcmV0dXJuIG1fc2V0dGVyOyB9CgogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCiAgICB7CiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgfQoKICAgIHByb3RlY3RlZDogc3RhdGljIGNvbnN0
IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xh
c3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsKCnByaXZhdGU6CiAgICBDdXN0b21H
ZXR0ZXJTZXR0ZXIoVk0mIHZtLCBDdXN0b21HZXR0ZXIgZ2V0dGVyLCBDdXN0b21TZXR0ZXIgc2V0
dGVyKQogICAgICAgIDogSlNDZWxsKHZtLCB2bS5jdXN0b21HZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUu
Z2V0KCkpCiAgICAgICAgLCBtX2dldHRlcihnZXR0ZXIpCiAgICAgICAgLCBtX3NldHRlcihzZXR0
ZXIpCiAgICB7CiAgICB9CgogICAgQ3VzdG9tR2V0dGVyIG1fZ2V0dGVyOwogICAgQ3VzdG9tU2V0
dGVyIG1fc2V0dGVyOwp9OwoKIGJvb2wgY2FsbEN1c3RvbVNldHRlcihFeGVjU3RhdGUqLCBDdXN0
b21HZXR0ZXJTZXR0ZXI6OkN1c3RvbVNldHRlciwgYm9vbCBpc0FjY2Vzc29yLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgSlNWYWx1ZSk7CiBib29sIGNhbGxDdXN0b21TZXR0ZXIoRXhlY1N0YXRlKiwgSlNW
YWx1ZSBjdXN0b21HZXR0ZXJTZXR0ZXIsIGJvb2wgaXNBY2Nlc3NvciwgSlNPYmplY3QqIHNsb3RC
YXNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSk7Cgp9CiMgMzUgIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgiIDIKCgojIDEgIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaCIKI2RlZmluZSBIZWFwSW5saW5lc19oIAoK
IyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5QmFycmllci5oIiAxCiMg
MzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgiIDIKCgoj
IDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIiAxCiMg
MzMgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgiIDIKCgoK
bmFtZXNwYWNlIEpTQyB7CgppbmxpbmUgYm9vbCBIZWFwOjpzaG91bGRDb2xsZWN0KCkKewogICAg
aWYgKGlzRGVmZXJyZWQoKSkKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICBpZiAoIW1faXNTYWZl
VG9Db2xsZWN0KQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIGlmIChtX29wZXJhdGlvbkluUHJv
Z3Jlc3MgIT0gTm9PcGVyYXRpb24pCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgaWYgKE9wdGlv
bnM6OmdjTWF4SGVhcFNpemUoKSkKICAgICAgICByZXR1cm4gbV9ieXRlc0FsbG9jYXRlZFRoaXND
eWNsZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKTsKICAgIHJldHVybiBtX2J5dGVzQWxsb2Nh
dGVkVGhpc0N5Y2xlID4gbV9tYXhFZGVuU2l6ZTsKfQoKaW5saW5lIGJvb2wgSGVhcDo6aXNCdXN5
KCkKewogICAgcmV0dXJuIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBOb09wZXJhdGlvbjsKfQoK
aW5saW5lIGJvb2wgSGVhcDo6aXNDb2xsZWN0aW5nKCkKewogICAgcmV0dXJuIG1fb3BlcmF0aW9u
SW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbiB8fCBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0g
RWRlbkNvbGxlY3Rpb247Cn0KCmlubGluZSBIZWFwKiBIZWFwOjpoZWFwKGNvbnN0IEpTQ2VsbCog
Y2VsbCkKewogICAgcmV0dXJuIE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+aGVhcCgpOwp9
CgppbmxpbmUgSGVhcCogSGVhcDo6aGVhcChjb25zdCBKU1ZhbHVlIHYpCnsKICAgIGlmICghdi5p
c0NlbGwoKSkKICAgICAgICByZXR1cm4gMDsKICAgIHJldHVybiBoZWFwKHYuYXNDZWxsKCkpOwp9
CgppbmxpbmUgYm9vbCBIZWFwOjppc0xpdmUoY29uc3Qgdm9pZCogY2VsbCkKewogICAgcmV0dXJu
IE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+aXNMaXZlQ2VsbChjZWxsKTsKfQoKaW5saW5l
IGJvb2wgSGVhcDo6aXNNYXJrZWQoY29uc3Qgdm9pZCogY2VsbCkKewogICAgcmV0dXJuIE1hcmtl
ZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+aXNNYXJrZWQoY2VsbCk7Cn0KCmlubGluZSBib29sIEhl
YXA6OnRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCogY2VsbCkKewogICAgcmV0dXJuIE1hcmtl
ZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+dGVzdEFuZFNldE1hcmtlZChjZWxsKTsKfQoKaW5saW5l
IHZvaWQgSGVhcDo6c2V0TWFya2VkKGNvbnN0IHZvaWQqIGNlbGwpCnsKICAgIE1hcmtlZEJsb2Nr
OjpibG9ja0ZvcihjZWxsKS0+c2V0TWFya2VkKGNlbGwpOwp9CgppbmxpbmUgdm9pZCBIZWFwOjp3
cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiBmcm9tLCBKU1ZhbHVlIHRvKQp7CgoKCiAgICBpZiAo
IXRvLmlzQ2VsbCgpKQogICAgICAgIHJldHVybjsKICAgIHdyaXRlQmFycmllcihmcm9tLCB0by5h
c0NlbGwoKSk7Cn0KCmlubGluZSB2b2lkIEhlYXA6OndyaXRlQmFycmllcihjb25zdCBKU0NlbGwq
IGZyb20sIEpTQ2VsbCogdG8pCnsKCgoKICAgIGlmICghZnJvbSB8fCBmcm9tLT5jZWxsU3RhdGUo
KSAhPSBDZWxsU3RhdGU6Ok9sZEJsYWNrKQogICAgICAgIHJldHVybjsKICAgIGlmICghdG8gfHwg
dG8tPmNlbGxTdGF0ZSgpICE9IENlbGxTdGF0ZTo6TmV3V2hpdGUpCiAgICAgICAgcmV0dXJuOwog
ICAgYWRkVG9SZW1lbWJlcmVkU2V0KGZyb20pOwp9CgppbmxpbmUgdm9pZCBIZWFwOjp3cml0ZUJh
cnJpZXIoY29uc3QgSlNDZWxsKiBmcm9tKQp7CiAgICBkbyB7ICh2b2lkKWNvbnN0X2Nhc3Q8SlND
ZWxsKj4oZnJvbSk7IH0gd2hpbGUgKDApOwogICAgaWYgKCFmcm9tIHx8IGZyb20tPmNlbGxTdGF0
ZSgpICE9IENlbGxTdGF0ZTo6T2xkQmxhY2spCiAgICAgICAgcmV0dXJuOwogICAgYWRkVG9SZW1l
bWJlcmVkU2V0KGZyb20pOwp9CgppbmxpbmUgdm9pZCBIZWFwOjpyZXBvcnRFeHRyYU1lbW9yeUFs
bG9jYXRlZChzaXplX3Qgc2l6ZSkKewogICAgaWYgKHNpemUgPiBtaW5FeHRyYU1lbW9yeSkKICAg
ICAgICByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZFNsb3dDYXNlKHNpemUpOwp9CgppbmxpbmUg
dm9pZCBIZWFwOjpyZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQoQ2VsbFN0YXRlIGRhdGFCZWZvcmVW
aXNpdGluZywgc2l6ZV90IHNpemUpCnsKCiAgICBpZiAob3BlcmF0aW9uSW5Qcm9ncmVzcygpID09
IEVkZW5Db2xsZWN0aW9uICYmIGRhdGFCZWZvcmVWaXNpdGluZyA9PSBDZWxsU3RhdGU6Ok9sZEdy
ZXkpCiAgICAgICAgcmV0dXJuOwoKICAgIHNpemVfdCogY291bnRlciA9ICZtX2V4dHJhTWVtb3J5
U2l6ZTsKCiAgICBmb3IgKDs7KSB7CiAgICAgICAgc2l6ZV90IG9sZFNpemUgPSAqY291bnRlcjsK
ICAgICAgICBpZiAoV1RGOjp3ZWFrQ29tcGFyZUFuZFN3YXAoY291bnRlciwgb2xkU2l6ZSwgb2xk
U2l6ZSArIHNpemUpKQogICAgICAgICAgICByZXR1cm47CiAgICB9Cn0KCmlubGluZSB2b2lkIEhl
YXA6OmRlcHJlY2F0ZWRSZXBvcnRFeHRyYU1lbW9yeShzaXplX3Qgc2l6ZSkKewogICAgaWYgKHNp
emUgPiBtaW5FeHRyYU1lbW9yeSkKICAgICAgICBkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnlT
bG93Q2FzZShzaXplKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQg
SGVhcDo6Zm9yRWFjaENvZGVCbG9jayhGdW5jdG9yJiBmdW5jdG9yKQp7CgogICAgY29tcGxldGVB
bGxERkdQbGFucygpOwoKICAgIHJldHVybiBtX2NvZGVCbG9ja3MuaXRlcmF0ZTxGdW5jdG9yPihm
dW5jdG9yKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1
bmN0b3I6OlJldHVyblR5cGUgSGVhcDo6Zm9yRWFjaFByb3RlY3RlZENlbGwoRnVuY3RvciYgZnVu
Y3RvcikKewogICAgZm9yIChhdXRvJiBwYWlyIDogbV9wcm90ZWN0ZWRWYWx1ZXMpCiAgICAgICAg
ZnVuY3RvcihwYWlyLmtleSk7CiAgICBtX2hhbmRsZVNldC5mb3JFYWNoU3Ryb25nSGFuZGxlKGZ1
bmN0b3IsIG1fcHJvdGVjdGVkVmFsdWVzKTsKCiAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1
ZSgpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rv
cjo6UmV0dXJuVHlwZSBIZWFwOjpmb3JFYWNoUHJvdGVjdGVkQ2VsbCgpCnsKICAgIEZ1bmN0b3Ig
ZnVuY3RvcjsKICAgIHJldHVybiBmb3JFYWNoUHJvdGVjdGVkQ2VsbChmdW5jdG9yKTsKfQoKaW5s
aW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKQp7CgoK
CiAgICAoKHZvaWQpMCk7CiAgICByZXR1cm4gbV9vYmplY3RTcGFjZS5hbGxvY2F0ZVdpdGhEZXN0
cnVjdG9yKGJ5dGVzKTsKfQoKaW5saW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlV2l0aG91dERlc3Ry
dWN0b3Ioc2l6ZV90IGJ5dGVzKQp7CgoKCiAgICAoKHZvaWQpMCk7CiAgICByZXR1cm4gbV9vYmpl
Y3RTcGFjZS5hbGxvY2F0ZVdpdGhvdXREZXN0cnVjdG9yKGJ5dGVzKTsKfQoKdGVtcGxhdGU8dHlw
ZW5hbWUgQ2xhc3NUeXBlPgp2b2lkKiBIZWFwOjphbGxvY2F0ZU9iamVjdE9mVHlwZShzaXplX3Qg
Ynl0ZXMpCnsKCiAgICAoKHZvaWQpMCk7CgogICAgaWYgKENsYXNzVHlwZTo6bmVlZHNEZXN0cnVj
dGlvbikKICAgICAgICByZXR1cm4gYWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihieXRlcyk7CiAgICBy
ZXR1cm4gYWxsb2NhdGVXaXRob3V0RGVzdHJ1Y3RvcihieXRlcyk7Cn0KCnRlbXBsYXRlPHR5cGVu
YW1lIENsYXNzVHlwZT4KTWFya2VkU3BhY2U6OlN1YnNwYWNlJiBIZWFwOjpzdWJzcGFjZUZvck9i
amVjdE9mVHlwZSgpCnsKCiAgICAoKHZvaWQpMCk7CgogICAgaWYgKENsYXNzVHlwZTo6bmVlZHNE
ZXN0cnVjdGlvbikKICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JPYmplY3REZXN0cnVjdG9yKCk7
CiAgICByZXR1cm4gc3Vic3BhY2VGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcigpOwp9Cgp0ZW1w
bGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGU+Ck1hcmtlZEFsbG9jYXRvciYgSGVhcDo6YWxsb2NhdG9y
Rm9yT2JqZWN0T2ZUeXBlKHNpemVfdCBieXRlcykKewoKICAgICgodm9pZCkwKTsKCiAgICBpZiAo
Q2xhc3NUeXBlOjpuZWVkc0Rlc3RydWN0aW9uKQogICAgICAgIHJldHVybiBhbGxvY2F0b3JGb3JP
YmplY3RXaXRoRGVzdHJ1Y3RvcihieXRlcyk7CiAgICByZXR1cm4gYWxsb2NhdG9yRm9yT2JqZWN0
V2l0aG91dERlc3RydWN0b3IoYnl0ZXMpOwp9CgppbmxpbmUgQ2hlY2tlZEJvb2xlYW4gSGVhcDo6
dHJ5QWxsb2NhdGVTdG9yYWdlKEpTQ2VsbCogaW50ZW5kZWRPd25lciwgc2l6ZV90IGJ5dGVzLCB2
b2lkKiogb3V0UHRyKQp7CiAgICBDaGVja2VkQm9vbGVhbiByZXN1bHQgPSBtX3N0b3JhZ2VTcGFj
ZS50cnlBbGxvY2F0ZShieXRlcywgb3V0UHRyKTsKCgoKICAgICh2b2lkKWludGVuZGVkT3duZXI7
CgogICAgcmV0dXJuIHJlc3VsdDsKfQoKaW5saW5lIENoZWNrZWRCb29sZWFuIEhlYXA6OnRyeVJl
YWxsb2NhdGVTdG9yYWdlKEpTQ2VsbCogaW50ZW5kZWRPd25lciwgdm9pZCoqIHB0ciwgc2l6ZV90
IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQp7CgoKCiAgICBDaGVja2VkQm9vbGVhbiByZXN1bHQg
PSBtX3N0b3JhZ2VTcGFjZS50cnlSZWFsbG9jYXRlKHB0ciwgb2xkU2l6ZSwgbmV3U2l6ZSk7CgoK
CiAgICAodm9pZClpbnRlbmRlZE93bmVyOwoKICAgIHJldHVybiByZXN1bHQ7Cn0KCmlubGluZSB2
b2lkIEhlYXA6OmFzY3JpYmVPd25lcihKU0NlbGwqIGludGVuZGVkT3duZXIsIHZvaWQqIHN0b3Jh
Z2UpCnsKCgoKICAgICh2b2lkKWludGVuZGVkT3duZXI7CiAgICAodm9pZClzdG9yYWdlOwoKfQoj
IDI2NyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaCIKaW5s
aW5lIHZvaWQgSGVhcDo6aW5jcmVtZW50RGVmZXJyYWxEZXB0aCgpCnsKICAgIGRvIHsgaWYgKF9f
YnVpbHRpbl9leHBlY3QoISEoIShtX2RlZmVycmFsRGVwdGggPCAxMDApKSwgMCkpIFdURkNyYXNo
KCk7IH0gd2hpbGUgKDApOwogICAgbV9kZWZlcnJhbERlcHRoKys7Cn0KCmlubGluZSB2b2lkIEhl
YXA6OmRlY3JlbWVudERlZmVycmFsRGVwdGgoKQp7CiAgICBkbyB7IGlmIChfX2J1aWx0aW5fZXhw
ZWN0KCEhKCEobV9kZWZlcnJhbERlcHRoID49IDEpKSwgMCkpIFdURkNyYXNoKCk7IH0gd2hpbGUg
KDApOwogICAgbV9kZWZlcnJhbERlcHRoLS07Cn0KCmlubGluZSBib29sIEhlYXA6OmNvbGxlY3RJ
Zk5lY2Vzc2FyeU9yRGVmZXIoKQp7CiAgICBpZiAoIXNob3VsZENvbGxlY3QoKSkKICAgICAgICBy
ZXR1cm4gZmFsc2U7CgogICAgY29sbGVjdCgpOwogICAgcmV0dXJuIHRydWU7Cn0KCmlubGluZSB2
b2lkIEhlYXA6OmRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCkKewogICAgZGVj
cmVtZW50RGVmZXJyYWxEZXB0aCgpOwogICAgY29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcigpOwp9
CgppbmxpbmUgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBIZWFwOjptYXJrTGlzdFNl
dCgpCnsKICAgIGlmICghbV9tYXJrTGlzdFNldCkKICAgICAgICBtX21hcmtMaXN0U2V0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4+KCk7CiAgICByZXR1
cm4gKm1fbWFya0xpc3RTZXQ7Cn0KCmlubGluZSB2b2lkIEhlYXA6OnJlZ2lzdGVyV2Vha0dDTWFw
KHZvaWQqIHdlYWtHQ01hcCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHBydW5pbmdDYWxsYmFjaykK
ewogICAgbV93ZWFrR0NNYXBzLmFkZCh3ZWFrR0NNYXAsIHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92
ZVBhcmFtZXRlcj4ocHJ1bmluZ0NhbGxiYWNrKSk7Cn0KCmlubGluZSB2b2lkIEhlYXA6OnVucmVn
aXN0ZXJXZWFrR0NNYXAodm9pZCogd2Vha0dDTWFwKQp7CiAgICBtX3dlYWtHQ01hcHMucmVtb3Zl
KHdlYWtHQ01hcCk7Cn0KCmlubGluZSB2b2lkIEhlYXA6OmRpZEFsbG9jYXRlQmxvY2soc2l6ZV90
IGNhcGFjaXR5KQp7CgoKCiAgICAodm9pZCljYXBhY2l0eTsKCn0KCmlubGluZSB2b2lkIEhlYXA6
OmRpZEZyZWVCbG9jayhzaXplX3QgY2FwYWNpdHkpCnsKCgoKICAgICh2b2lkKWNhcGFjaXR5OwoK
fQoKaW5saW5lIGJvb2wgSGVhcDo6aXNQb2ludGVyR0NPYmplY3QoVGlueUJsb29tRmlsdGVyIGZp
bHRlciwgTWFya2VkQmxvY2tTZXQmIG1hcmtlZEJsb2NrU2V0LCB2b2lkKiBwb2ludGVyKQp7CiAg
ICBNYXJrZWRCbG9jayogY2FuZGlkYXRlID0gTWFya2VkQmxvY2s6OmJsb2NrRm9yKHBvaW50ZXIp
OwogICAgaWYgKGZpbHRlci5ydWxlT3V0KGJpdHdpc2VfY2FzdDxCaXRzPihjYW5kaWRhdGUpKSkg
ewogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgaWYg
KCFNYXJrZWRCbG9jazo6aXNBdG9tQWxpZ25lZChwb2ludGVyKSkKICAgICAgICByZXR1cm4gZmFs
c2U7CgogICAgaWYgKCFtYXJrZWRCbG9ja1NldC5zZXQoKS5jb250YWlucyhjYW5kaWRhdGUpKQog
ICAgICAgIHJldHVybiBmYWxzZTsKCiAgICBpZiAoIWNhbmRpZGF0ZS0+aXNMaXZlQ2VsbChwb2lu
dGVyKSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgcmV0dXJuIHRydWU7Cn0KCmlubGluZSBi
b29sIEhlYXA6OmlzVmFsdWVHQ09iamVjdChUaW55Qmxvb21GaWx0ZXIgZmlsdGVyLCBNYXJrZWRC
bG9ja1NldCYgbWFya2VkQmxvY2tTZXQsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGlmICghdmFsdWUu
aXNDZWxsKCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgcmV0dXJuIGlzUG9pbnRlckdDT2Jq
ZWN0KGZpbHRlciwgbWFya2VkQmxvY2tTZXQsIHN0YXRpY19jYXN0PHZvaWQqPih2YWx1ZS5hc0Nl
bGwoKSkpOwp9Cgp9CiMgMzggIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRl
eGluZ0hlYWRlcklubGluZXMuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbmRleGluZ0hlYWRlcklubGluZXMuaCIKI2RlZmluZSBJbmRleGluZ0hlYWRlcklu
bGluZXNfaCAKCgoKCgpuYW1lc3BhY2UgSlNDIHsKCmlubGluZSBzaXplX3QgSW5kZXhpbmdIZWFk
ZXI6OnByZUNhcGFjaXR5KFN0cnVjdHVyZSogc3RydWN0dXJlKQp7CiAgICBpZiAoX19idWlsdGlu
X2V4cGVjdCghISghaGFzQW55QXJyYXlTdG9yYWdlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkp
KSwgMSkpCiAgICAgICAgcmV0dXJuIDA7CgogICAgcmV0dXJuIGFycmF5U3RvcmFnZSgpLT5tX2lu
ZGV4QmlhczsKfQoKaW5saW5lIHNpemVfdCBJbmRleGluZ0hlYWRlcjo6aW5kZXhpbmdQYXlsb2Fk
U2l6ZUluQnl0ZXMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCnsKICAgIHN3aXRjaCAoc3RydWN0dXJl
LT5pbmRleGluZ1R5cGUoKSkgewogICAgY2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6CiAgICBjYXNl
IE5vbkFycmF5V2l0aEludDMyOiBjYXNlIEFycmF5V2l0aEludDMyOgogICAgY2FzZSBOb25BcnJh
eVdpdGhEb3VibGU6IGNhc2UgQXJyYXlXaXRoRG91YmxlOgogICAgY2FzZSBOb25BcnJheVdpdGhD
b250aWd1b3VzOiBjYXNlIEFycmF5V2l0aENvbnRpZ3VvdXM6CiAgICAgICAgcmV0dXJuIHZlY3Rv
ckxlbmd0aCgpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKCiAgICBjYXNlIE5vbkFycmF5V2l0
aEFycmF5U3RvcmFnZTogY2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOiBjYXNl
IEFycmF5V2l0aEFycmF5U3RvcmFnZTogY2FzZSBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdl
OgogICAgICAgIHJldHVybiBBcnJheVN0b3JhZ2U6OnNpemVGb3IoYXJyYXlTdG9yYWdlKCktPnZl
Y3Rvckxlbmd0aCgpKTsKCiAgICBkZWZhdWx0OgogICAgICAgICgodm9pZCkwKTsKICAgICAgICBy
ZXR1cm4gMDsKICAgIH0KfQoKfQojIDM5ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oIiAyCgoKCgoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SdW50aW1lVHlwZS5oIiAxCiMgMjggIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1J1bnRpbWVUeXBlLmgiCiNkZWZpbmUgUnVudGltZVR5cGVfaCAKCgoKbmFtZXNw
YWNlIEpTQyB7CgplbnVtIFJ1bnRpbWVUeXBlIDogdWludDE2X3QgewogICAgVHlwZU5vdGhpbmcg
PSAweDAsCiAgICBUeXBlRnVuY3Rpb24gPSAweDEsCiAgICBUeXBlVW5kZWZpbmVkID0gMHgyLAog
ICAgVHlwZU51bGwgPSAweDQsCiAgICBUeXBlQm9vbGVhbiA9IDB4OCwKICAgIFR5cGVBbnlJbnQg
PSAweDEwLAogICAgVHlwZU51bWJlciA9IDB4MjAsCiAgICBUeXBlU3RyaW5nID0gMHg0MCwKICAg
IFR5cGVPYmplY3QgPSAweDgwLAogICAgVHlwZVN5bWJvbCA9IDB4MTAwCn07Cgp0eXBlZGVmIHVp
bnQxNl90IFJ1bnRpbWVUeXBlTWFzazsKCnN0YXRpYyBjb25zdCBSdW50aW1lVHlwZU1hc2sgUnVu
dGltZVR5cGVNYXNrQWxsVHlwZXMgPSBUeXBlRnVuY3Rpb24gfCBUeXBlVW5kZWZpbmVkIHwgVHlw
ZU51bGwgfCBUeXBlQm9vbGVhbiB8IFR5cGVBbnlJbnQgfCBUeXBlTnVtYmVyIHwgVHlwZVN0cmlu
ZyB8IFR5cGVPYmplY3QgfCBUeXBlU3ltYm9sOwoKY2xhc3MgSlNWYWx1ZTsKUnVudGltZVR5cGUg
cnVudGltZVR5cGVGb3JWYWx1ZShKU1ZhbHVlKTsKU3RyaW5nIHJ1bnRpbWVUeXBlQXNTdHJpbmco
UnVudGltZVR5cGUpOwoKaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg
Ym9vbCBydW50aW1lVHlwZUlzUHJpbWl0aXZlKFJ1bnRpbWVUeXBlTWFzayB0eXBlKQp7CiAgICBy
ZXR1cm4gdHlwZSAmIH4oVHlwZUZ1bmN0aW9uIHwgVHlwZU9iamVjdCk7Cn0KCn0KIyA0NSAiLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCIgMgoKCgoKCgoKbmFt
ZXNwYWNlIEpTQyB7CgppbmxpbmUgSlNDZWxsKiBnZXRKU0Z1bmN0aW9uKEpTVmFsdWUgdmFsdWUp
CnsKICAgIGlmICh2YWx1ZS5pc0NlbGwoKSAmJiAodmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBK
U0Z1bmN0aW9uVHlwZSkpCiAgICAgICAgcmV0dXJuIHZhbHVlLmFzQ2VsbCgpOwogICAgcmV0dXJu
IDA7Cn0KCmNsYXNzIEdldHRlclNldHRlcjsKY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKY2xhc3Mg
SlNGdW5jdGlvbjsKY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpjbGFzcyBNYXJrZWRCbG9j
azsKY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwpjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKY2xh
c3MgU3RydWN0dXJlOwpzdHJ1Y3QgSGFzaFRhYmxlOwpzdHJ1Y3QgSGFzaFRhYmxlVmFsdWU7Cgog
SlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOwpleHRl
cm4gY29uc3QgY2hhciogU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yOwpleHRl
cm4gY29uc3QgY2hhciogVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlz
bUVycm9yOwoKc3RhdGljX2Fzc2VydCgoTm9uZSA8IEZpcnN0SW50ZXJuYWxBdHRyaWJ1dGUpLCAi
Tm9uZV9pc19iZWxvd19GaXJzdEludGVybmFsQXR0cmlidXRlIik7CnN0YXRpY19hc3NlcnQoKFJl
YWRPbmx5IDwgRmlyc3RJbnRlcm5hbEF0dHJpYnV0ZSksICJSZWFkT25seV9pc19iZWxvd19GaXJz
dEludGVybmFsQXR0cmlidXRlIik7CnN0YXRpY19hc3NlcnQoKERvbnRFbnVtIDwgRmlyc3RJbnRl
cm5hbEF0dHJpYnV0ZSksICJEb250RW51bV9pc19iZWxvd19GaXJzdEludGVybmFsQXR0cmlidXRl
Iik7CnN0YXRpY19hc3NlcnQoKERvbnREZWxldGUgPCBGaXJzdEludGVybmFsQXR0cmlidXRlKSwg
IkRvbnREZWxldGVfaXNfYmVsb3dfRmlyc3RJbnRlcm5hbEF0dHJpYnV0ZSIpOwpzdGF0aWNfYXNz
ZXJ0KChBY2Nlc3NvciA8IEZpcnN0SW50ZXJuYWxBdHRyaWJ1dGUpLCAiQWNjZXNzb3JfaXNfYmVs
b3dfRmlyc3RJbnRlcm5hbEF0dHJpYnV0ZSIpOwoKY2xhc3MgSlNGaW5hbE9iamVjdDsKCmNsYXNz
IEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5z
aXRpb25PcHRpbWl6ZXI7CiAgICBmcmllbmQgY2xhc3MgSklUOwogICAgZnJpZW5kIGNsYXNzIEpT
Q2VsbDsKICAgIGZyaWVuZCBjbGFzcyBKU0ZpbmFsT2JqZWN0OwogICAgZnJpZW5kIGNsYXNzIE1h
cmtlZEJsb2NrOwogICAgZnJpZW5kIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0
YXRlKiwgY29uc3QgSGFzaFRhYmxlVmFsdWUqLCBKU09iamVjdCosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CgogICAgZW51bSBQdXRNb2RlIHsKICAgICAgICBQdXRNb2RlUHV0LAogICAg
ICAgIFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eSwKICAgIH07CgpwdWJsaWM6CiAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOwoKCgogICAgc3RhdGljIEpTT2JqZWN0KiBjcmVhdGVSYXdPYmplY3QoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiA9IG51bGxwdHIp
OwoKICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgIHN0YXRpYyB2b2lk
IGNvcHlCYWNraW5nU3RvcmUoSlNDZWxsKiwgQ29weVZpc2l0b3ImLCBDb3B5VG9rZW4pOwogICAg
c3RhdGljIHZvaWQgaGVhcFNuYXBzaG90KEpTQ2VsbCosIEhlYXBTbmFwc2hvdEJ1aWxkZXImKTsK
CiAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwogICAgc3RhdGlj
IFN0cmluZyBjYWxjdWxhdGVkQ2xhc3NOYW1lKEpTT2JqZWN0Kik7CgoKCgogICAgSlNWYWx1ZSBn
ZXRQcm90b3R5cGUoVk0mLCBFeGVjU3RhdGUqKTsKICAgIHN0YXRpYyBKU1ZhbHVlIGdldFByb3Rv
dHlwZShKU09iamVjdCosIEV4ZWNTdGF0ZSopOwoKCgoKCgogICAgSlNWYWx1ZSBnZXRQcm90b3R5
cGVEaXJlY3QoKSBjb25zdDsKIyAxMzIgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgiCiAgICB2b2lkIHNldFByb3RvdHlwZURpcmVjdChWTSYsIEpTVmFsdWUg
cHJvdG90eXBlKTsKcHJpdmF0ZToKCgogICAgYm9vbCBzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVj
ayhWTSYsIEV4ZWNTdGF0ZSosIEpTVmFsdWUgcHJvdG90eXBlLCBib29sIHNob3VsZFRocm93SWZD
YW50U2V0KTsKcHVibGljOgoKCgogICAgYm9vbCBzZXRQcm90b3R5cGUoVk0mLCBFeGVjU3RhdGUq
LCBKU1ZhbHVlIHByb3RvdHlwZSwgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCA9IGZhbHNlKTsK
ICAgIHN0YXRpYyBib29sIHNldFByb3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFs
dWUgcHJvdG90eXBlLCBib29sIHNob3VsZFRocm93SWZDYW50U2V0KTsKCiAgICBib29sIG1heUlu
dGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpCiAgICB7CiAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSgp
LT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKTsKICAgIH0KCiAgICBKU1ZhbHVlIGdldChF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKSBjb25zdDsKCiAgICBib29sIGdldFByb3BlcnR5U2xv
dChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgYm9vbCBnZXRQ
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKCiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CgoKCgogICAgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
CiAgICBib29sIGFsbG93c0FjY2Vzc0Zyb20oRXhlY1N0YXRlKik7CgogICAgdW5zaWduZWQgZ2V0
QXJyYXlMZW5ndGgoKSBjb25zdAogICAgewogICAgICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRp
ZXMoaW5kZXhpbmdUeXBlKCkpKQogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICByZXR1cm4g
bV9idXR0ZXJmbHkuZ2V0KCktPnB1YmxpY0xlbmd0aCgpOwogICAgfQoKICAgIHVuc2lnbmVkIGdl
dFZlY3Rvckxlbmd0aCgpCiAgICB7CiAgICAgICAgaWYgKCFoYXNJbmRleGVkUHJvcGVydGllcyhp
bmRleGluZ1R5cGUoKSkpCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIHJldHVybiBtX2J1
dHRlcmZseS5nZXQoKS0+dmVjdG9yTGVuZ3RoKCk7CiAgICB9CgogICAgc3RhdGljIGJvb2wgcHV0
SW5saW5lKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CgogICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CgogICAgc3RhdGljIGJvb2wg
cHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXykpIGJvb2wgcHV0QnlJbmRleElubGluZShFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKICAg
IHsKICAgICAgICBpZiAoY2FuU2V0SW5kZXhRdWlja2x5KHByb3BlcnR5TmFtZSkpIHsKICAgICAg
ICAgICAgc2V0SW5kZXhRdWlja2x5KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOwog
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG1ldGhvZFRh
YmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNob3VsZFRocm93KTsKICAgIH0KCgoKCgoKICAgIGJvb2wgcHV0RGlyZWN0SW5kZXgoRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TW9kZSBtb2RlKQogICAgewogICAgICAgIGlm
ICghYXR0cmlidXRlcyAmJiBjYW5TZXRJbmRleFF1aWNrbHlGb3JQdXREaXJlY3QocHJvcGVydHlO
YW1lKSkgewogICAgICAgICAgICBzZXRJbmRleFF1aWNrbHkoZXhlYy0+dm0oKSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICBy
ZXR1cm4gcHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgoZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgYXR0cmlidXRlcywgbW9kZSk7CiAgICB9CiAgICBib29sIHB1dERpcmVjdEluZGV4
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQog
ICAgewogICAgICAgIHJldHVybiBwdXREaXJlY3RJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCAwLCBQdXREaXJlY3RJbmRleExpa2VQdXREaXJlY3QpOwogICAgfQoKCiAgICBib29sIHB1
dERpcmVjdE1heUJlSW5kZXgoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKCiAg
ICBib29sIGhhc0luZGV4aW5nSGVhZGVyKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gc3Ry
dWN0dXJlKCktPmhhc0luZGV4aW5nSGVhZGVyKHRoaXMpOwogICAgfQoKICAgIGJvb2wgY2FuR2V0
SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpCiAgICB7CiAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJm
bHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7
CiAgICAgICAgY2FzZSBOb25BcnJheTogY2FzZSBBcnJheUNsYXNzOgogICAgICAgIGNhc2UgQXJy
YXlXaXRoVW5kZWNpZGVkOgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgY2FzZSBO
b25BcnJheVdpdGhJbnQzMjogY2FzZSBBcnJheVdpdGhJbnQzMjoKICAgICAgICBjYXNlIE5vbkFy
cmF5V2l0aENvbnRpZ3VvdXM6IGNhc2UgQXJyYXlXaXRoQ29udGlndW91czoKICAgICAgICAgICAg
cmV0dXJuIGkgPCBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpICYmIGJ1dHRlcmZseS0+Y29udGln
dW91cygpW2ldOwogICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoRG91YmxlOiBjYXNlIEFycmF5V2l0
aERvdWJsZTogewogICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgp
KQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICBkb3VibGUgdmFsdWUg
PSBidXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXTsKICAgICAgICAgICAgaWYgKHZhbHVl
ICE9IHZhbHVlKQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgY2FzZSBOb25BcnJheVdpdGhBcnJheVN0b3JhZ2U6
IGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZTogY2FzZSBBcnJheVdpdGhBcnJh
eVN0b3JhZ2U6IGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgICAg
cmV0dXJuIGkgPCBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgoKSAmJiBi
dXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX3ZlY3RvcltpXTsKICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICBXVEZDcmFzaCgpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
fQogICAgfQoKICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpCiAgICB7CiAg
ICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKICAgICAgICBz
d2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgY2FzZSBOb25BcnJheVdpdGhJbnQzMjog
Y2FzZSBBcnJheVdpdGhJbnQzMjoKICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGJ1dHRlcmZs
eS0+Y29udGlndW91cygpW2ldLmdldCgpLmFzSW50MzIoKSk7CiAgICAgICAgY2FzZSBOb25BcnJh
eVdpdGhDb250aWd1b3VzOiBjYXNlIEFycmF5V2l0aENvbnRpZ3VvdXM6CiAgICAgICAgICAgIHJl
dHVybiBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5nZXQoKTsKICAgICAgICBjYXNlIE5vbkFy
cmF5V2l0aERvdWJsZTogY2FzZSBBcnJheVdpdGhEb3VibGU6CiAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCBidXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3Vi
bGUoKVtpXSk7CiAgICAgICAgY2FzZSBOb25BcnJheVdpdGhBcnJheVN0b3JhZ2U6IGNhc2UgTm9u
QXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZTogY2FzZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6
IGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgICAgcmV0dXJuIGJ1
dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fdmVjdG9yW2ldLmdldCgpOwogICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgIFdURkNyYXNoKCk7CiAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CiAgICAgICAgfQogICAgfQoKICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVk
IGkpIGNvbnN0CiAgICB7CiAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZs
eS5nZXQoKTsKICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgY2FzZSBO
b25BcnJheTogY2FzZSBBcnJheUNsYXNzOgogICAgICAgIGNhc2UgQXJyYXlXaXRoVW5kZWNpZGVk
OgogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEludDMyOiBjYXNl
IEFycmF5V2l0aEludDMyOgogICAgICAgICAgICBpZiAoaSA8IGJ1dHRlcmZseS0+cHVibGljTGVu
Z3RoKCkpIHsKICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gYnV0dGVyZmx5LT5jb250
aWd1b3VzKClbaV0uZ2V0KCk7CiAgICAgICAgICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgIGNhc2UgTm9uQXJyYXlXaXRoQ29udGlndW91czogY2FzZSBBcnJheVdpdGhDb250aWd1b3Vz
OgogICAgICAgICAgICBpZiAoaSA8IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpCiAgICAgICAg
ICAgICAgICByZXR1cm4gYnV0dGVyZmx5LT5jb250aWd1b3VzKClbaV0uZ2V0KCk7CiAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoRG91YmxlOiBjYXNlIEFycmF5V2l0
aERvdWJsZTogewogICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgp
KQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRvdWJsZSByZXN1bHQgPSBidXR0
ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXTsKICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBy
ZXN1bHQpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
SlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIHJlc3VsdCk7CiAgICAgICAgfQogICAgICAgIGNhc2Ug
Tm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOiBjYXNlIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0
b3JhZ2U6IGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOiBjYXNlIEFycmF5V2l0aFNsb3dQdXRB
cnJheVN0b3JhZ2U6CiAgICAgICAgICAgIGlmIChpIDwgYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2Uo
KS0+dmVjdG9yTGVuZ3RoKCkpCiAgICAgICAgICAgICAgICByZXR1cm4gYnV0dGVyZmx5LT5hcnJh
eVN0b3JhZ2UoKS0+bV92ZWN0b3JbaV0uZ2V0KCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgIFdURkNyYXNoKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgIH0KICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgfQoKICAgIEpTVmFsdWUgZ2V0RGly
ZWN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpKQogICAgewogICAgICAgIGlmIChK
U1ZhbHVlIHJlc3VsdCA9IHRyeUdldEluZGV4UXVpY2tseShpKSkKICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKICAgICAgICBpZiAobWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpcywgZXhlYywgaSwgc2xvdCkpCiAgICAg
ICAgICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIGkpOwogICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CiAgICB9CgogICAgSlNWYWx1ZSBnZXRJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIGkpIGNvbnN0CiAgICB7CiAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gdHJ5R2V0SW5k
ZXhRdWlja2x5KGkpKQogICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgIHJldHVybiBn
ZXQoZXhlYywgaSk7CiAgICB9CgogICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQg
aSkKICAgIHsKICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgp
OwogICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICBjYXNlIE5vbkFycmF5
OiBjYXNlIEFycmF5Q2xhc3M6CiAgICAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6CiAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEludDMyOiBjYXNl
IEFycmF5V2l0aEludDMyOgogICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoRG91YmxlOiBjYXNlIEFy
cmF5V2l0aERvdWJsZToKICAgICAgICBjYXNlIE5vbkFycmF5V2l0aENvbnRpZ3VvdXM6IGNhc2Ug
QXJyYXlXaXRoQ29udGlndW91czoKICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFn
ZToKICAgICAgICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZToKICAgICAgICAgICAgcmV0dXJu
IGkgPCBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOwogICAgICAgIGNhc2UgTm9uQXJyYXlXaXRo
U2xvd1B1dEFycmF5U3RvcmFnZToKICAgICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0
b3JhZ2U6CiAgICAgICAgICAgIHJldHVybiBpIDwgYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+
dmVjdG9yTGVuZ3RoKCkKICAgICAgICAgICAgICAgICYmICEhYnV0dGVyZmx5LT5hcnJheVN0b3Jh
Z2UoKS0+bV92ZWN0b3JbaV07CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgV1RGQ3Jhc2go
KTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCiAgICBib29sIGNh
blNldEluZGV4UXVpY2tseUZvclB1dERpcmVjdCh1bnNpZ25lZCBpKQogICAgewogICAgICAgIHN3
aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICBjYXNlIE5vbkFycmF5OiBjYXNlIEFycmF5
Q2xhc3M6CiAgICAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6CiAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEludDMyOiBjYXNlIEFycmF5V2l0aElu
dDMyOgogICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoRG91YmxlOiBjYXNlIEFycmF5V2l0aERvdWJs
ZToKICAgICAgICBjYXNlIE5vbkFycmF5V2l0aENvbnRpZ3VvdXM6IGNhc2UgQXJyYXlXaXRoQ29u
dGlndW91czoKICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZTogY2FzZSBOb25B
cnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOiBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZTog
Y2FzZSBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgogICAgICAgICAgICByZXR1cm4gaSA8
IG1fYnV0dGVyZmx5LmdldCgpLT52ZWN0b3JMZW5ndGgoKTsKICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICBXVEZDcmFzaCgpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQog
ICAgfQoKICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1
ZSB2KQogICAgewogICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0
KCk7CiAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgIGNhc2UgTm9uQXJy
YXlXaXRoSW50MzI6IGNhc2UgQXJyYXlXaXRoSW50MzI6IHsKICAgICAgICAgICAgKCh2b2lkKTAp
OwogICAgICAgICAgICBpZiAoIXYuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICAgICBjb252ZXJ0
SW50MzJUb0RvdWJsZU9yQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2
KTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICA7CiAg
ICAgICAgfQogICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoQ29udGlndW91czogY2FzZSBBcnJheVdp
dGhDb250aWd1b3VzOiB7CiAgICAgICAgICAgICgodm9pZCkwKTsKICAgICAgICAgICAgYnV0dGVy
Zmx5LT5jb250aWd1b3VzKClbaV0uc2V0KHZtLCB0aGlzLCB2KTsKICAgICAgICAgICAgaWYgKGkg
Pj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkKICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+
c2V0UHVibGljTGVuZ3RoKGkgKyAxKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAg
ICAgIGNhc2UgTm9uQXJyYXlXaXRoRG91YmxlOiBjYXNlIEFycmF5V2l0aERvdWJsZTogewogICAg
ICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgICAgIGlmICghdi5pc051bWJlcigpKSB7CiAgICAg
ICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5k
ZXgodm0sIGksIHYpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAg
ICAgICAgIGRvdWJsZSB2YWx1ZSA9IHYuYXNOdW1iZXIoKTsKICAgICAgICAgICAgaWYgKHZhbHVl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hp
bGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOwogICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICB9CiAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ld
ID0gdmFsdWU7CiAgICAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkp
CiAgICAgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7CiAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3Rv
cmFnZTogY2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOiBjYXNlIEFycmF5V2l0
aEFycmF5U3RvcmFnZTogY2FzZSBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOiB7CiAgICAg
ICAgICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCk7
CiAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgeCA9IHN0b3JhZ2UtPm1fdmVjdG9y
W2ldOwogICAgICAgICAgICBKU1ZhbHVlIG9sZCA9IHguZ2V0KCk7CiAgICAgICAgICAgIHguc2V0
KHZtLCB0aGlzLCB2KTsKICAgICAgICAgICAgaWYgKCFvbGQpIHsKICAgICAgICAgICAgICAgICsr
c3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcjsKICAgICAgICAgICAgICAgIGlmIChpID49IHN0
b3JhZ2UtPmxlbmd0aCgpKQogICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UtPnNldExlbmd0aChp
ICsgMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgIFdURkNyYXNoKCk7CiAgICAgICAgfQogICAgfQoKICAgIHZv
aWQgaW5pdGlhbGl6ZUluZGV4KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQogICAgewog
ICAgICAgIGluaXRpYWxpemVJbmRleCh2bSwgaSwgdiwgaW5kZXhpbmdUeXBlKCkpOwogICAgfQoK
ICAgIHZvaWQgaW5pdGlhbGl6ZUluZGV4KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBJ
bmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQogICAgewogICAgICAgIEJ1dHRlcmZseSogYnV0dGVy
Zmx5ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CiAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUpIHsK
ICAgICAgICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDogewogICAgICAgICAgICBzZXRJbmRleFF1
aWNrbHlUb1VuZGVjaWRlZCh2bSwgaSwgdik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0K
ICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEludDMyOiBjYXNlIEFycmF5V2l0aEludDMyOiB7CiAg
ICAgICAgICAgICgodm9pZCkwKTsKICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICBp
ZiAoIXYuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZU9y
Q29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsKICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIDsKICAgICAgICB9CiAgICAgICAg
Y2FzZSBOb25BcnJheVdpdGhDb250aWd1b3VzOiBjYXNlIEFycmF5V2l0aENvbnRpZ3VvdXM6IHsK
ICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgICAg
IGJ1dHRlcmZseS0+Y29udGlndW91cygpW2ldLnNldCh2bSwgdGhpcywgdik7CiAgICAgICAgICAg
IGJyZWFrOwogICAgICAgIH0KICAgICAgICBjYXNlIE5vbkFycmF5V2l0aERvdWJsZTogY2FzZSBB
cnJheVdpdGhEb3VibGU6IHsKICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICAoKHZv
aWQpMCk7CiAgICAgICAgICAgIGlmICghdi5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAgICBj
b252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJmb3JtaW5nU2V0SW5kZXgodm0sIGksIHYp
OwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRvdWJs
ZSB2YWx1ZSA9IHYuYXNOdW1iZXIoKTsKICAgICAgICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSB7
CiAgICAgICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hpbGVQZXJmb3JtaW5n
U2V0SW5kZXgodm0sIGksIHYpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9
CiAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gdmFsdWU7CiAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5
U3RvcmFnZTogY2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOiBjYXNlIEFycmF5
V2l0aEFycmF5U3RvcmFnZTogY2FzZSBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOiB7CiAg
ICAgICAgICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdl
KCk7CiAgICAgICAgICAgICgodm9pZCkwKTsKICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAg
ICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXS5zZXQodm0sIHRoaXMsIHYpOwogICAgICAgICAgICBi
cmVhazsKICAgICAgICB9CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgV1RGQ3Jhc2goKTsK
ICAgICAgICB9CiAgICB9CgogICAgYm9vbCBoYXNTcGFyc2VNYXAoKQogICAgewogICAgICAgIHN3
aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICBjYXNlIE5vbkFycmF5OiBjYXNlIEFycmF5
Q2xhc3M6CiAgICAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6CiAgICAgICAgY2FzZSBOb25B
cnJheVdpdGhJbnQzMjogY2FzZSBBcnJheVdpdGhJbnQzMjoKICAgICAgICBjYXNlIE5vbkFycmF5
V2l0aERvdWJsZTogY2FzZSBBcnJheVdpdGhEb3VibGU6CiAgICAgICAgY2FzZSBOb25BcnJheVdp
dGhDb250aWd1b3VzOiBjYXNlIEFycmF5V2l0aENvbnRpZ3VvdXM6CiAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZTogY2FzZSBOb25B
cnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOiBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZTog
Y2FzZSBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgogICAgICAgICAgICByZXR1cm4gISFt
X2J1dHRlcmZseS5nZXQoKS0+YXJyYXlTdG9yYWdlKCktPm1fc3BhcnNlTWFwOwogICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgIFdURkNyYXNoKCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICB9CiAgICB9CgogICAgYm9vbCBpblNwYXJzZUluZGV4aW5nTW9kZSgpCiAgICB7CiAg
ICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgIGNhc2UgTm9uQXJyYXk6IGNh
c2UgQXJyYXlDbGFzczoKICAgICAgICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoKICAgICAgICBj
YXNlIE5vbkFycmF5V2l0aEludDMyOiBjYXNlIEFycmF5V2l0aEludDMyOgogICAgICAgIGNhc2Ug
Tm9uQXJyYXlXaXRoRG91YmxlOiBjYXNlIEFycmF5V2l0aERvdWJsZToKICAgICAgICBjYXNlIE5v
bkFycmF5V2l0aENvbnRpZ3VvdXM6IGNhc2UgQXJyYXlXaXRoQ29udGlndW91czoKICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOiBj
YXNlIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6IGNhc2UgQXJyYXlXaXRoQXJyYXlT
dG9yYWdlOiBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6CiAgICAgICAgICAgIHJl
dHVybiBtX2J1dHRlcmZseS5nZXQoKS0+YXJyYXlTdG9yYWdlKCktPmluU3BhcnNlTW9kZSgpOwog
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIFdURkNyYXNoKCk7CiAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgdm9pZCBlbnRlckRpY3Rpb25hcnlJbmRleGlu
Z01vZGUoVk0mKTsKCgoKCgoKICAgIGJvb2wgcHV0RGlyZWN0KFZNJiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7CiAgICBib29sIHB1dERpcmVjdChWTSYs
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICB2b2lkIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzID0gMCk7CiAgICBib29sIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IoVk0m
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgYm9vbCBw
dXREaXJlY3RBY2Nlc3NvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOwogICAgYm9vbCBwdXREaXJlY3RDdXN0b21BY2Nlc3NvcihWTSYsIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CgogICAgYm9vbCBwdXRH
ZXR0ZXIoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKTsKICAgIGJvb2wgcHV0U2V0dGVyKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CgogICAgYm9vbCBoYXNQcm9wZXJ0eShFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgYm9vbCBoYXNQcm9wZXJ0eShFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgYm9vbCBoYXNQcm9wZXJ0eUdlbmVyaWMo
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZSkgY29uc3Q7CiAgICBib29sIGhhc1Byb3BlcnR5R2VuZXJpYyhFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlKSBjb25zdDsK
ICAgIGJvb2wgaGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKSBjb25zdDsK
ICAgIGJvb2wgaGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5zaWduZWQpIGNvbnN0OwoKICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSk7CiAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKCiAgICBzdGF0aWMgSlNWYWx1ZSBkZWZh
dWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlKTsKICAgIEpTVmFsdWUgb3JkaW5hcnlUb1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJy
ZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKCiAgICBib29sIGhhc0luc3RhbmNlKEV4ZWNTdGF0ZSos
IEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgaGFzSW5zdGFuY2VWYWx1ZSk7CiAgICBib29sIGhhc0lu
c3RhbmNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwogICAgc3RhdGljIGJvb2wgZGVmYXVsdEhhc0lu
c3RhbmNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlUHJvcGVydHkpOwoK
ICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICBzdGF0aWMgdm9pZCBn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwoKICAgIHN0YXRpYyB1aW50MzJfdCBnZXRFbnVtZXJhYmxlTGVuZ3RoKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0Kik7CiAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwogICAgc3RhdGljIHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CgogICAg
SlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlID0g
Tm9QcmVmZXJlbmNlKSBjb25zdDsKICAgIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0
ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJikgY29uc3Q7CiAgICBkb3VibGUgdG9OdW1iZXIo
RXhlY1N0YXRlKikgY29uc3Q7CiAgICBKU1N0cmluZyogdG9TdHJpbmcoRXhlY1N0YXRlKikgY29u
c3Q7CgogICAgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIEVDTUFN
b2RlKTsKCgogICAgSlNWYWx1ZSBnZXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKSBjb25zdAogICAgewogICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+
c3RydWN0dXJlKHZtKTsKICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUt
PmdldCh2bSwgcHJvcGVydHlOYW1lKTsKICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVj
dHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlk
T2Zmc2V0ID8gZ2V0RGlyZWN0KG9mZnNldCkgOiBKU1ZhbHVlKCk7CiAgICB9CgogICAgSlNWYWx1
ZSBnZXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYg
YXR0cmlidXRlcykgY29uc3QKICAgIHsKICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRo
aXMtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0
dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAgY2hlY2tPZmZz
ZXQob2Zmc2V0LCBzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgIHJldHVybiBv
ZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGdldERpcmVjdChvZmZzZXQpIDogSlNWYWx1ZSgpOwog
ICAgfQoKICAgIFByb3BlcnR5T2Zmc2V0IGdldERpcmVjdE9mZnNldChWTSYgdm0sIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICB7CiAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0
aGlzLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVj
dHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwg
c3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICByZXR1cm4gb2Zmc2V0OwogICAg
fQoKICAgIFByb3BlcnR5T2Zmc2V0IGdldERpcmVjdE9mZnNldChWTSYgdm0sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKQogICAgewogICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
KTsKICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHko
KSk7CiAgICAgICAgcmV0dXJuIG9mZnNldDsKICAgIH0KCiAgICBib29sIGhhc0lubGluZVN0b3Jh
Z2UoKSBjb25zdCB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFzSW5saW5lU3RvcmFnZSgpOyB9CiAg
ICBDb25zdFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlVW5zYWZlKCkgY29uc3QKICAgIHsK
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PENvbnN0UHJvcGVydHlTdG9yYWdlPih0aGlzICsg
MSk7CiAgICB9CiAgICBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZVVuc2FmZSgpCiAgICB7
CiAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRoaXMgKyAxKTsK
ICAgIH0KICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UoKSBjb25zdAogICAg
ewogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVuc2FmZSgp
OwogICAgfQogICAgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UoKQogICAgewogICAgICAg
ICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVuc2FmZSgpOwogICAgfQoK
ICAgIGNvbnN0IEJ1dHRlcmZseSogYnV0dGVyZmx5KCkgY29uc3QgeyByZXR1cm4gbV9idXR0ZXJm
bHkuZ2V0KCk7IH0KICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5KCkgeyByZXR1cm4gbV9idXR0ZXJm
bHkuZ2V0KCk7IH0KCiAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHkuZ2V0KCktPnByb3BlcnR5U3RvcmFnZSgpOyB9CiAg
ICBQcm9wZXJ0eVN0b3JhZ2Ugb3V0T2ZMaW5lU3RvcmFnZSgpIHsgcmV0dXJuIG1fYnV0dGVyZmx5
LmdldCgpLT5wcm9wZXJ0eVN0b3JhZ2UoKTsgfQoKICAgIGNvbnN0IFdyaXRlQmFycmllckJhc2U8
VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgY29uc3QK
ICAgIHsKICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQob2Zmc2V0KSkKICAgICAgICAgICAgcmV0
dXJuICZpbmxpbmVTdG9yYWdlKClbb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCldOwogICAg
ICAgIHJldHVybiAmb3V0T2ZMaW5lU3RvcmFnZSgpW29mZnNldEluT3V0T2ZMaW5lU3RvcmFnZShv
ZmZzZXQpXTsKICAgIH0KCiAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZv
ck9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICB7CiAgICAgICAgaWYgKGlzSW5saW5l
T2Zmc2V0KG9mZnNldCkpCiAgICAgICAgICAgIHJldHVybiAmaW5saW5lU3RvcmFnZSgpW29mZnNl
dEluSW5saW5lU3RvcmFnZShvZmZzZXQpXTsKICAgICAgICByZXR1cm4gJm91dE9mTGluZVN0b3Jh
Z2UoKVtvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KV07CiAgICB9CgogICAgdm9pZCB0
cmFuc2l0aW9uVG8oVk0mLCBTdHJ1Y3R1cmUqKTsKCiAgICBib29sIHJlbW92ZURpcmVjdChWTSYs
IFByb3BlcnR5TmFtZSk7CiAgICBib29sIGhhc0N1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiBz
dHJ1Y3R1cmUoKS0+ZGlkVHJhbnNpdGlvbigpOyB9CiAgICBib29sIGhhc0dldHRlclNldHRlclBy
b3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGll
cygpOyB9CiAgICBib29sIGhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMoKSB7IHJldHVy
biBzdHJ1Y3R1cmUoKS0+aGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygpOyB9CgoKCgoK
CiAgICBib29sIHB1dE93bkRhdGFQcm9wZXJ0eShWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAgICBib29sIHB1dE93bkRhdGFQcm9wZXJ0eU1heUJlSW5kZXgo
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKCgog
ICAgSlNWYWx1ZSBnZXREaXJlY3QoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25zdCB7IHJldHVy
biBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5nZXQoKTsgfQogICAgdm9pZCBwdXREaXJlY3Qo
Vk0mIHZtLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgbG9jYXRpb25G
b3JPZmZzZXQob2Zmc2V0KS0+c2V0KHZtLCB0aGlzLCB2YWx1ZSk7IH0KICAgIHZvaWQgcHV0RGly
ZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlvbkZvck9mZnNldChv
ZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQoKICAgIGJvb2wgcHV0RGlyZWN0TmF0aXZlSW50cmlu
c2ljR2V0dGVyKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBJZGVudGlmaWVyLCBOYXRpdmVGdW5jdGlv
biwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgIGJvb2wgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVu
c2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTsKICAgIEpTRnVuY3Rpb24qIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVjdXRh
YmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICBKU0Z1bmN0aW9uKiBwdXREaXJlY3RCdWls
dGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
UHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7
CiAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVu
Z3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKCiAg
ICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
CgogICAgYm9vbCBpc0dsb2JhbE9iamVjdCgpIGNvbnN0OwogICAgYm9vbCBpc0pTTGV4aWNhbEVu
dmlyb25tZW50KCkgY29uc3Q7CiAgICBib29sIGlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkg
Y29uc3Q7CiAgICBib29sIGlzRXJyb3JJbnN0YW5jZSgpIGNvbnN0OwogICAgYm9vbCBpc1dpdGhT
Y29wZSgpIGNvbnN0OwoKICAgIHZvaWQgc2VhbChWTSYpOwogICAgdm9pZCBmcmVlemUoVk0mKTsK
ICAgIHN0YXRpYyBib29sIHByZXZlbnRFeHRlbnNpb25zKEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7
CiAgICBzdGF0aWMgYm9vbCBpc0V4dGVuc2libGUoSlNPYmplY3QqLCBFeGVjU3RhdGUqKTsKICAg
IGJvb2wgaXNTZWFsZWQoVk0mIHZtKSB7IHJldHVybiBzdHJ1Y3R1cmUodm0pLT5pc1NlYWxlZCh2
bSk7IH0KICAgIGJvb2wgaXNGcm96ZW4oVk0mIHZtKSB7IHJldHVybiBzdHJ1Y3R1cmUodm0pLT5p
c0Zyb3plbih2bSk7IH0KcHJpdmF0ZToKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXykpIGJvb2wgaXNFeHRlbnNpYmxlSW1wbCgpIHsgcmV0dXJuIGlzU3RydWN0dXJl
RXh0ZW5zaWJsZSgpOyB9CnB1YmxpYzoKCgoKCgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fKSkgYm9vbCBpc1N0cnVjdHVyZUV4dGVuc2libGUoKSB7IHJldHVybiBz
dHJ1Y3R1cmUoKS0+aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCk7IH0KCgoKICAgIGJvb2wgaXNFeHRl
bnNpYmxlKEV4ZWNTdGF0ZSopOwogICAgYm9vbCBpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkKICAg
IHsKICAgICAgICByZXR1cm4gIWlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpCiAgICAgICAgICAgIHx8
IHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKTsKICAgIH0KCiAgICBib29sIHN0YXRpY0Z1bmN0
aW9uc1JlaWZpZWQoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+c3RhdGljRnVuY3Rpb25zUmVpZmll
ZCgpOyB9CiAgICB2b2lkIHJlaWZ5QWxsU3RhdGljUHJvcGVydGllcyhFeGVjU3RhdGUqKTsKCiAg
ICBCdXR0ZXJmbHkqIGdyb3dPdXRPZkxpbmVTdG9yYWdlKFZNJiwgc2l6ZV90IG9sZFNpemUsIHNp
emVfdCBuZXdTaXplKTsKICAgIHZvaWQgc2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3RydWN0
dXJlKFZNJiwgQnV0dGVyZmx5Kik7CgogICAgdm9pZCBzZXRTdHJ1Y3R1cmUoVk0mLCBTdHJ1Y3R1
cmUqKTsKICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KFZNJiwgU3RydWN0dXJlKiwg
QnV0dGVyZmx5Kik7CiAgICB2b2lkIHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZO
ZWNlc3NhcnkoVk0mLCB1bnNpZ25lZCBvbGRDYXBhY2l0eSwgU3RydWN0dXJlKik7CiAgICB2b2lk
IHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoVk0mLCBTdHJ1Y3R1
cmUqKTsKCiAgICB2b2lkIGNvbnZlcnRUb0RpY3Rpb25hcnkoVk0mKTsKCiAgICB2b2lkIGZsYXR0
ZW5EaWN0aW9uYXJ5T2JqZWN0KFZNJiB2bSkKICAgIHsKICAgICAgICBzdHJ1Y3R1cmUodm0pLT5m
bGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgdGhpcyk7CiAgICB9CiAgICB2b2lkIHNoaWZ0
QnV0dGVyZmx5QWZ0ZXJGbGF0dGVuaW5nKFZNJiwgc2l6ZV90IG91dE9mTGluZUNhcGFjaXR5QmVm
b3JlLCBzaXplX3Qgb3V0T2ZMaW5lQ2FwYWNpdHlBZnRlcik7CgogICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCgpIGNvbnN0CiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgo
dm9pZCkwKTsKICAgICAgICByZXR1cm4gc3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpOwogICAg
fQoKICAgIHZvaWQgc3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlKFZNJik7CiMgNzE1ICIuLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIgogICAgYm9vbCBhdHRl
bXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpT
VmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3csIGJvb2wmIHB1dFJlc3VsdCk7CgoKCgoKICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBl
bnN1cmVJbnQzMihWTSYgdm0pCiAgICB7CiAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEo
aGFzSW50MzIoaW5kZXhpbmdUeXBlKCkpKSwgMSkpCiAgICAgICAgICAgIHJldHVybiBtX2J1dHRl
cmZseS5nZXQoKS0+Y29udGlndW91c0ludDMyKCk7CgogICAgICAgIHJldHVybiBlbnN1cmVJbnQz
MlNsb3codm0pOwogICAgfQoKCgoKCiAgICBDb250aWd1b3VzRG91YmxlcyBlbnN1cmVEb3VibGUo
Vk0mIHZtKQogICAgewogICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKGhhc0RvdWJsZShp
bmRleGluZ1R5cGUoKSkpLCAxKSkKICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LmdldCgp
LT5jb250aWd1b3VzRG91YmxlKCk7CgogICAgICAgIHJldHVybiBlbnN1cmVEb3VibGVTbG93KHZt
KTsKICAgIH0KCgoKICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBlbnN1cmVDb250aWd1b3VzKFZNJiB2
bSkKICAgIHsKICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCghIShoYXNDb250aWd1b3VzKGlu
ZGV4aW5nVHlwZSgpKSksIDEpKQogICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHkuZ2V0KCkt
PmNvbnRpZ3VvdXMoKTsKCiAgICAgICAgcmV0dXJuIGVuc3VyZUNvbnRpZ3VvdXNTbG93KHZtKTsK
ICAgIH0KCgoKCgogICAgQXJyYXlTdG9yYWdlKiBlbnN1cmVBcnJheVN0b3JhZ2UoVk0mIHZtKQog
ICAgewogICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKGhhc0FueUFycmF5U3RvcmFnZShp
bmRleGluZ1R5cGUoKSkpLCAxKSkKICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LmdldCgp
LT5hcnJheVN0b3JhZ2UoKTsKCiAgICAgICAgcmV0dXJuIGVuc3VyZUFycmF5U3RvcmFnZVNsb3co
dm0pOwogICAgfQoKICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7Cgog
ICAgc3RhdGljIHB0cmRpZmZfdCBidXR0ZXJmbHlPZmZzZXQoKQogICAgewogICAgICAgIHJldHVy
biAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxKU09iamVj
dCo+KDB4NDAwMCktPm1fYnV0dGVyZmx5KSkgLSAweDQwMDApOwogICAgfQoKICAgIHZvaWQqIGJ1
dHRlcmZseUFkZHJlc3MoKQogICAgewogICAgICAgIHJldHVybiAmbV9idXR0ZXJmbHk7CiAgICB9
CgogICAgSlNWYWx1ZSBnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBDYWxsRGF0YSYgY2FsbERh
dGEsIENhbGxUeXBlJiBjYWxsVHlwZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKTsKCiAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCA6OkpTQzo6
Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyog
aW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07Cgpwcm90ZWN0ZWQ6CiAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKICAgIHsKICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAg
ICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CiAg
ICAgICAgKCh2b2lkKTApOwogICAgfQoKICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQogICAgewogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKICAgIH0KCgoKICAgIEpTT2JqZWN0KFZNJiwgU3RydWN0dXJlKiwgQnV0dGVyZmx5KiA9
IDApOwoKICAgIHZvaWQgdmlzaXRCdXR0ZXJmbHkoU2xvdFZpc2l0b3ImLCBCdXR0ZXJmbHkqLCBT
dHJ1Y3R1cmUqKTsKICAgIHZvaWQgY29weUJ1dHRlcmZseShDb3B5VmlzaXRvciYsIEJ1dHRlcmZs
eSosIHNpemVfdCBzdG9yYWdlU2l6ZSk7CgoKCiAgICBBcnJheVN0b3JhZ2UqIGFycmF5U3RvcmFn
ZSgpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiBtX2J1dHRlcmZseS5n
ZXQoKS0+YXJyYXlTdG9yYWdlKCk7CiAgICB9CgoKCiAgICBBcnJheVN0b3JhZ2UqIGFycmF5U3Rv
cmFnZU9yTnVsbCgpCiAgICB7CiAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAg
ICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOiBjYXNlIE5vbkFycmF5V2l0aFNsb3dQ
dXRBcnJheVN0b3JhZ2U6IGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOiBjYXNlIEFycmF5V2l0
aFNsb3dQdXRBcnJheVN0b3JhZ2U6CiAgICAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS5nZXQo
KS0+YXJyYXlTdG9yYWdlKCk7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgIH0KICAgIH0KCiAgICBzaXplX3QgYnV0dGVyZmx5VG90YWxTaXplKCk7CiAgICBz
aXplX3QgYnV0dGVyZmx5UHJlQ2FwYWNpdHkoKTsKCiAgICBCdXR0ZXJmbHkqIGNyZWF0ZUluaXRp
YWxVbmRlY2lkZWQoVk0mLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgQ29udGlndW91c0pTVmFsdWVz
IGNyZWF0ZUluaXRpYWxJbnQzMihWTSYsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICBDb250aWd1b3Vz
RG91YmxlcyBjcmVhdGVJbml0aWFsRG91YmxlKFZNJiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgIENv
bnRpZ3VvdXNKU1ZhbHVlcyBjcmVhdGVJbml0aWFsQ29udGlndW91cyhWTSYsIHVuc2lnbmVkIGxl
bmd0aCk7CgogICAgdm9pZCBjb252ZXJ0VW5kZWNpZGVkRm9yVmFsdWUoVk0mLCBKU1ZhbHVlKTsK
ICAgIHZvaWQgY3JlYXRlSW5pdGlhbEZvclZhbHVlQW5kU2V0KFZNJiwgdW5zaWduZWQgaW5kZXgs
IEpTVmFsdWUpOwogICAgdm9pZCBjb252ZXJ0SW50MzJGb3JWYWx1ZShWTSYsIEpTVmFsdWUpOwoK
ICAgIEFycmF5U3RvcmFnZSogY3JlYXRlQXJyYXlTdG9yYWdlKFZNJiwgdW5zaWduZWQgbGVuZ3Ro
LCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwogICAgQXJyYXlTdG9yYWdlKiBjcmVhdGVJbml0aWFs
QXJyYXlTdG9yYWdlKFZNJik7CgogICAgQ29udGlndW91c0pTVmFsdWVzIGNvbnZlcnRVbmRlY2lk
ZWRUb0ludDMyKFZNJik7CiAgICBDb250aWd1b3VzRG91YmxlcyBjb252ZXJ0VW5kZWNpZGVkVG9E
b3VibGUoVk0mKTsKICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBjb252ZXJ0VW5kZWNpZGVkVG9Db250
aWd1b3VzKFZNJik7CiAgICBBcnJheVN0b3JhZ2UqIGNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3Rv
cmFnZShWTSYsIE5vblByb3BlcnR5VHJhbnNpdGlvbik7CiAgICBBcnJheVN0b3JhZ2UqIGNvbnZl
cnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZShWTSYpOwoKICAgIENvbnRpZ3VvdXNEb3VibGVzIGNv
bnZlcnRJbnQzMlRvRG91YmxlKFZNJik7CiAgICBDb250aWd1b3VzSlNWYWx1ZXMgY29udmVydElu
dDMyVG9Db250aWd1b3VzKFZNJik7CiAgICBBcnJheVN0b3JhZ2UqIGNvbnZlcnRJbnQzMlRvQXJy
YXlTdG9yYWdlKFZNJiwgTm9uUHJvcGVydHlUcmFuc2l0aW9uKTsKICAgIEFycmF5U3RvcmFnZSog
Y29udmVydEludDMyVG9BcnJheVN0b3JhZ2UoVk0mKTsKCiAgICBDb250aWd1b3VzSlNWYWx1ZXMg
Y29udmVydERvdWJsZVRvQ29udGlndW91cyhWTSYpOwogICAgQXJyYXlTdG9yYWdlKiBjb252ZXJ0
RG91YmxlVG9BcnJheVN0b3JhZ2UoVk0mLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24pOwogICAgQXJy
YXlTdG9yYWdlKiBjb252ZXJ0RG91YmxlVG9BcnJheVN0b3JhZ2UoVk0mKTsKCiAgICBBcnJheVN0
b3JhZ2UqIGNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2UoVk0mLCBOb25Qcm9wZXJ0eVRy
YW5zaXRpb24pOwogICAgQXJyYXlTdG9yYWdlKiBjb252ZXJ0Q29udGlndW91c1RvQXJyYXlTdG9y
YWdlKFZNJik7CgoKICAgIEFycmF5U3RvcmFnZSogZW5zdXJlQXJyYXlTdG9yYWdlRXhpc3RzQW5k
RW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKFZNJik7CgogICAgYm9vbCBkZWZpbmVPd25Ob25J
bmRleFByb3BlcnR5KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCB0aHJvd0V4Y2VwdGlvbik7CgogICAgdGVtcGxhdGU8SW5kZXhpbmdUeXBl
IGluZGV4aW5nU2hhcGU+CiAgICBib29sIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
b3V0QXR0cmlidXRlcyhFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUp
OwogICAgYm9vbCBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3csIEFycmF5U3RvcmFnZSopOwoKICAgIGJvb2wgaW5jcmVhc2VWZWN0b3JMZW5ndGgoVk0mLCB1
bnNpZ25lZCBuZXdMZW5ndGgpOwogICAgdm9pZCBkZWFsbG9jYXRlU3BhcnNlSW5kZXhNYXAoKTsK
ICAgIGJvb2wgZGVmaW5lT3duSW5kZXhlZFByb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHRocm93RXhjZXB0aW9uKTsKICAgIFNwYXJz
ZUFycmF5VmFsdWVNYXAqIGFsbG9jYXRlU3BhcnNlSW5kZXhNYXAoVk0mKTsKCiAgICB2b2lkIG5v
dGlmeVByZXNlbmNlT2ZJbmRleGVkQWNjZXNzb3JzKFZNJik7CgogICAgYm9vbCBhdHRlbXB0VG9J
bnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBKU1Zh
bHVlLCBib29sIHNob3VsZFRocm93LCBib29sJiBwdXRSZXN1bHQpOwoKCgogICAgYm9vbCBfX2F0
dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZW5zdXJlTGVuZ3RoKFZNJiB2bSwg
dW5zaWduZWQgbGVuZ3RoKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQp
MCk7CgogICAgICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICBpZiAobV9idXR0ZXJmbHku
Z2V0KCktPnZlY3Rvckxlbmd0aCgpIDwgbGVuZ3RoKQogICAgICAgICAgICByZXN1bHQgPSBlbnN1
cmVMZW5ndGhTbG93KHZtLCBsZW5ndGgpOwoKICAgICAgICBpZiAobV9idXR0ZXJmbHkuZ2V0KCkt
PnB1YmxpY0xlbmd0aCgpIDwgbGVuZ3RoKQogICAgICAgICAgICBtX2J1dHRlcmZseS5nZXQoKS0+
c2V0UHVibGljTGVuZ3RoKGxlbmd0aCk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCgoK
ICAgIHZvaWQgcmVhbGxvY2F0ZUFuZFNocmlua0J1dHRlcmZseShWTSYsIHVuc2lnbmVkIGxlbmd0
aCk7CgogICAgdGVtcGxhdGU8SW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGU+CiAgICB1bnNpZ25l
ZCBjb3VudEVsZW1lbnRzKEJ1dHRlcmZseSopOwoKCiAgICB1bnNpZ25lZCBjb3VudEVsZW1lbnRz
KCk7Cgpwcml2YXRlOgogICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKCgog
ICAgdXNpbmcgSlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcjsKICAgIHVzaW5nIEpTQ2VsbDo6aXNH
ZXR0ZXJTZXR0ZXI7CiAgICB2b2lkIGdldE9iamVjdCgpOwogICAgdm9pZCBnZXRTdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKTsKICAgIHZvaWQgaXNPYmplY3QoKTsKICAgIHZvaWQgaXNTdHJpbmcoKTsK
CiAgICBCdXR0ZXJmbHkqIGNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZShWTSYsIHVuc2lnbmVk
IGxlbmd0aCwgc2l6ZV90IGVsZW1lbnRTaXplKTsKCiAgICBBcnJheVN0b3JhZ2UqIGVudGVyRGlj
dGlvbmFyeUluZGV4aW5nTW9kZVdoZW5BcnJheVN0b3JhZ2VBbHJlYWR5RXhpc3RzKFZNJiwgQXJy
YXlTdG9yYWdlKik7CgogICAgdGVtcGxhdGU8UHV0TW9kZT4KICAgIGJvb2wgcHV0RGlyZWN0SW50
ZXJuYWwoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIFB1dFByb3Bl
cnR5U2xvdCYpOwogICAgYm9vbCBjYW5QZXJmb3JtRmFzdFB1dElubGluZShFeGVjU3RhdGUqIGV4
ZWMsIFZNJiwgUHJvcGVydHlOYW1lKTsKCiAgICBfX2F0dHJpYnV0ZV9fKChfX25vaW5saW5lX18p
KSBib29sIHB1dElubGluZVNsb3coRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKCiAgICBib29sIGdldE5vbkluZGV4UHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICBib29sIGdldE93bk5vbklu
ZGV4UHJvcGVydHlTbG90KFZNJiwgU3RydWN0dXJlJiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKICAgIHZvaWQgZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmLCBKU1Zh
bHVlLCB1bnNpZ25lZCwgUHJvcGVydHlPZmZzZXQpOwogICAgdm9pZCBmaWxsQ3VzdG9tR2V0dGVy
UHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIHVuc2lnbmVkLCBTdHJ1Y3R1cmUm
KTsKCiAgICBjb25zdCBIYXNoVGFibGVWYWx1ZSogZmluZFByb3BlcnR5SGFzaEVudHJ5KFByb3Bl
cnR5TmFtZSkgY29uc3Q7CgogICAgYm9vbCBwdXRJbmRleGVkRGVzY3JpcHRvcihFeGVjU3RhdGUq
LCBTcGFyc2VBcnJheUVudHJ5KiwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBvbGQpOwoKICAgIGJvb2wgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpOwogICAgYm9vbCBwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0
b3JhZ2UoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleE1vZGUsIEFycmF5U3RvcmFnZSopOwogICAgYm9v
bCBwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4
TW9kZSk7CgogICAgdW5zaWduZWQgZ2V0TmV3VmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGN1cnJlbnRW
ZWN0b3JMZW5ndGgsIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGgsIHVuc2lnbmVkIGRlc2lyZWRMZW5n
dGgpOwogICAgdW5zaWduZWQgZ2V0TmV3VmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGRlc2lyZWRMZW5n
dGgpOwoKICAgIEFycmF5U3RvcmFnZSogY29uc3RydWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0
aG91dENvcHlpbmdFbGVtZW50cyhWTSYsIHVuc2lnbmVkIG5lZWRlZExlbmd0aCk7CgogICAgdm9p
ZCBzZXRJbmRleFF1aWNrbHlUb1VuZGVjaWRlZChWTSYsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVl
KTsKICAgIHZvaWQgY29udmVydEludDMyVG9Eb3VibGVPckNvbnRpZ3VvdXNXaGlsZVBlcmZvcm1p
bmdTZXRJbmRleChWTSYsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlKTsKICAgIHZvaWQgY29udmVy
dERvdWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KFZNJiwgdW5zaWduZWQg
aW5kZXgsIEpTVmFsdWUpOwoKICAgIGJvb2wgZW5zdXJlTGVuZ3RoU2xvdyhWTSYsIHVuc2lnbmVk
IGxlbmd0aCk7CgogICAgQ29udGlndW91c0pTVmFsdWVzIGVuc3VyZUludDMyU2xvdyhWTSYpOwog
ICAgQ29udGlndW91c0RvdWJsZXMgZW5zdXJlRG91YmxlU2xvdyhWTSYpOwogICAgQ29udGlndW91
c0pTVmFsdWVzIGVuc3VyZUNvbnRpZ3VvdXNTbG93KFZNJik7CiAgICBBcnJheVN0b3JhZ2UqIGVu
c3VyZUFycmF5U3RvcmFnZVNsb3coVk0mKTsKCnByb3RlY3RlZDoKICAgIENvcHlCYXJyaWVyPEJ1
dHRlcmZseT4gbV9idXR0ZXJmbHk7Cgpwcml2YXRlOgogICAgdWludDMyX3QgbV9wYWRkaW5nOwoK
fTsKCgoKCmNsYXNzIEpTTm9uRmluYWxPYmplY3QgOiBwdWJsaWMgSlNPYmplY3QgewogICAgZnJp
ZW5kIGNsYXNzIEpTT2JqZWN0OwoKcHVibGljOgogICAgdHlwZWRlZiBKU09iamVjdCBCYXNlOwoK
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgewogICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgIH0KCnByb3RlY3RlZDoK
ICAgIGV4cGxpY2l0IEpTTm9uRmluYWxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSAwKQogICAgICAgIDogSlNPYmplY3Qodm0sIHN0cnVj
dHVyZSwgYnV0dGVyZmx5KQogICAgewogICAgfQoKICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
IHZtKQogICAgewogICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAoKHZv
aWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgfQp9OwoKY2xhc3MgSlNGaW5hbE9iamVjdDsK
CgoKY2xhc3MgSlNGaW5hbE9iamVjdCA6IHB1YmxpYyBKU09iamVjdCB7CiAgICBmcmllbmQgY2xh
c3MgSlNPYmplY3Q7CgpwdWJsaWM6CiAgICB0eXBlZGVmIEpTT2JqZWN0IEJhc2U7CiAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
CiAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkK
ICAgIHsKICAgICAgICByZXR1cm4gc2l6ZW9mKEpTT2JqZWN0KSArIGlubGluZUNhcGFjaXR5ICog
c2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pOwogICAgfQoKICAgIHN0YXRpYyBpbmxp
bmUgY29uc3QgVHlwZUluZm8gdHlwZUluZm8oKSB7IHJldHVybiBUeXBlSW5mbyhGaW5hbE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKTsgfQogICAgc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBk
ZWZhdWx0SW5kZXhpbmdUeXBlID0gTm9uQXJyYXk7CgogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGRlZmF1bHRTaXplID0gNjQ7CiAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGRlZmF1bHRJbmxp
bmVDYXBhY2l0eSgpCiAgICB7CiAgICAgICAgcmV0dXJuIChkZWZhdWx0U2l6ZSAtIGFsbG9jYXRp
b25TaXplKDApKSAvIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwogICAgfQoKICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhTaXplID0gNTEyOwogICAgc3RhdGljIGlubGluZSB1bnNp
Z25lZCBtYXhJbmxpbmVDYXBhY2l0eSgpCiAgICB7CiAgICAgICAgcmV0dXJuIChtYXhTaXplIC0g
YWxsb2NhdGlvblNpemUoMCkpIC8gc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CiAgICB9
CgogICAgc3RhdGljIEpTRmluYWxPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUq
LCBCdXR0ZXJmbHkqID0gbnVsbHB0cik7CiAgICBzdGF0aWMgSlNGaW5hbE9iamVjdCogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKik7CiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwg
dW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpCiAgICB7CiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgdHlwZUluZm8oKSwgaW5mbygpLCBk
ZWZhdWx0SW5kZXhpbmdUeXBlLCBpbmxpbmVDYXBhY2l0eSk7CiAgICB9CgogICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwoKICAgIHByb3RlY3RlZDog
c3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25z
dCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsKCnByb3RlY3Rl
ZDoKICAgIHZvaWQgdmlzaXRDaGlsZHJlbkNvbW1vbihTbG90VmlzaXRvciYpOwoKICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgewogICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgfQoKcHJpdmF0
ZToKICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CgogICAgZXhwbGljaXQg
SlNGaW5hbE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1
dHRlcmZseSA9IG51bGxwdHIpCiAgICAgICAgOiBKU09iamVjdCh2bSwgc3RydWN0dXJlLCBidXR0
ZXJmbHkpCiAgICB7CiAgICB9Cn07CgogRW5jb2RlZEpTVmFsdWUgb2JqZWN0UHJpdmF0ZUZ1bmNJ
bnN0YW5jZU9mKEV4ZWNTdGF0ZSopOwoKaW5saW5lIEpTT2JqZWN0KiBKU09iamVjdDo6Y3JlYXRl
UmF3T2JqZWN0KAogICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0
dGVyZmx5KiBidXR0ZXJmbHkpCnsKICAgIEpTT2JqZWN0KiBmaW5hbE9iamVjdCA9IG5ldyAoCiAg
ICAgICAgTm90TnVsbCwKICAgICAgICBhbGxvY2F0ZUNlbGw8SlNGaW5hbE9iamVjdD4oCiAgICAg
ICAgICAgICpleGVjLT5oZWFwKCksCiAgICAgICAgICAgIEpTRmluYWxPYmplY3Q6OmFsbG9jYXRp
b25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSkKICAgICAgICApCiAgICApIEpTT2Jq
ZWN0KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKICAgIGZpbmFsT2JqZWN0LT5m
aW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKICAgIHJldHVybiBmaW5hbE9iamVjdDsKfQoKaW5s
aW5lIEpTRmluYWxPYmplY3QqIEpTRmluYWxPYmplY3Q6OmNyZWF0ZSgKICAgIEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQp7CiAgICBK
U0ZpbmFsT2JqZWN0KiBmaW5hbE9iamVjdCA9IG5ldyAoCiAgICAgICAgTm90TnVsbCwKICAgICAg
ICBhbGxvY2F0ZUNlbGw8SlNGaW5hbE9iamVjdD4oCiAgICAgICAgICAgICpleGVjLT5oZWFwKCks
CiAgICAgICAgICAgIGFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSkK
ICAgICAgICApCiAgICApIEpTRmluYWxPYmplY3QoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBidXR0
ZXJmbHkpOwogICAgZmluYWxPYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOwogICAg
cmV0dXJuIGZpbmFsT2JqZWN0Owp9CgppbmxpbmUgSlNGaW5hbE9iamVjdCogSlNGaW5hbE9iamVj
dDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCnsKICAgIEpTRmluYWxPYmpl
Y3QqIGZpbmFsT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNGaW5hbE9iamVj
dD4odm0uaGVhcCwgYWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKSkp
IEpTRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICBmaW5hbE9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgcmV0dXJuIGZpbmFsT2JqZWN0Owp9CgppbmxpbmUgYm9vbCBpc0pTRmlu
YWxPYmplY3QoSlNDZWxsKiBjZWxsKQp7CiAgICByZXR1cm4gY2VsbC0+Y2xhc3NJbmZvKCkgPT0g
SlNGaW5hbE9iamVjdDo6aW5mbygpOwp9CgppbmxpbmUgYm9vbCBpc0pTRmluYWxPYmplY3QoSlNW
YWx1ZSB2YWx1ZSkKewogICAgcmV0dXJuIHZhbHVlLmlzQ2VsbCgpICYmIGlzSlNGaW5hbE9iamVj
dCh2YWx1ZS5hc0NlbGwoKSk7Cn0KCmlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5s
aW5lU3RvcmFnZSgpCnsKICAgIHJldHVybiBzaXplb2YoSlNPYmplY3QpOwp9CgppbmxpbmUgYm9v
bCBKU09iamVjdDo6aXNHbG9iYWxPYmplY3QoKSBjb25zdAp7CiAgICByZXR1cm4gdHlwZSgpID09
IEdsb2JhbE9iamVjdFR5cGU7Cn0KCmlubGluZSBib29sIEpTT2JqZWN0Ojppc0pTTGV4aWNhbEVu
dmlyb25tZW50KCkgY29uc3QKewogICAgcmV0dXJuIHR5cGUoKSA9PSBMZXhpY2FsRW52aXJvbm1l
bnRUeXBlIHx8IHR5cGUoKSA9PSBNb2R1bGVFbnZpcm9ubWVudFR5cGU7Cn0KCmlubGluZSBib29s
IEpTT2JqZWN0Ojppc0dsb2JhbExleGljYWxFbnZpcm9ubWVudCgpIGNvbnN0CnsKICAgIHJldHVy
biB0eXBlKCkgPT0gR2xvYmFsTGV4aWNhbEVudmlyb25tZW50VHlwZTsKfQoKaW5saW5lIGJvb2wg
SlNPYmplY3Q6OmlzRXJyb3JJbnN0YW5jZSgpIGNvbnN0CnsKICAgIHJldHVybiB0eXBlKCkgPT0g
RXJyb3JJbnN0YW5jZVR5cGU7Cn0KCmlubGluZSBib29sIEpTT2JqZWN0Ojppc1dpdGhTY29wZSgp
IGNvbnN0CnsKICAgIHJldHVybiB0eXBlKCkgPT0gV2l0aFNjb3BlVHlwZTsKfQoKaW5saW5lIHZv
aWQgSlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKewogICAgKCh2b2lkKTApOwogICAgKCh2
b2lkKTApOwogICAgbV9idXR0ZXJmbHkuc2V0KHZtLCB0aGlzLCBidXR0ZXJmbHkpOwogICAgc2V0
U3RydWN0dXJlKHZtLCBzdHJ1Y3R1cmUpOwp9CgppbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0U3Ry
dWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCnsKICAgICgodm9pZCkwKTsKICAg
ICgodm9pZCkwKTsKICAgIEpTQ2VsbDo6c2V0U3RydWN0dXJlKHZtLCBzdHJ1Y3R1cmUpOwp9Cgpp
bmxpbmUgdm9pZCBKU09iamVjdDo6c2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3RydWN0dXJl
KFZNJiB2bSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkpCnsKICAgIG1fYnV0dGVyZmx5LnNldCh2bSwg
dGhpcywgYnV0dGVyZmx5KTsKfQoKaW5saW5lIENhbGxUeXBlIGdldENhbGxEYXRhKEpTVmFsdWUg
dmFsdWUsIENhbGxEYXRhJiBjYWxsRGF0YSkKewogICAgQ2FsbFR5cGUgcmVzdWx0ID0gdmFsdWUu
aXNDZWxsKCkgPyB2YWx1ZS5hc0NlbGwoKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEodmFs
dWUuYXNDZWxsKCksIGNhbGxEYXRhKSA6IENhbGxUeXBlOjpOb25lOwogICAgKCh2b2lkKTApOwog
ICAgcmV0dXJuIHJlc3VsdDsKfQoKaW5saW5lIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShKU1ZhbHVlIHZhbHVlLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQp7CiAgICBDb25z
dHJ1Y3RUeXBlIHJlc3VsdCA9IHZhbHVlLmlzQ2VsbCgpID8gdmFsdWUuYXNDZWxsKCktPm1ldGhv
ZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEodmFsdWUuYXNDZWxsKCksIGNvbnN0cnVjdERhdGEp
IDogQ29uc3RydWN0VHlwZTo6Tm9uZTsKICAgICgodm9pZCkwKTsKICAgIHJldHVybiByZXN1bHQ7
Cn0KCmlubGluZSBKU09iamVjdCogYXNPYmplY3QoSlNDZWxsKiBjZWxsKQp7CiAgICAoKHZvaWQp
MCk7CiAgICByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7Cn0KCmlubGluZSBKU09iamVj
dCogYXNPYmplY3QoSlNWYWx1ZSB2YWx1ZSkKewogICAgcmV0dXJuIGFzT2JqZWN0KHZhbHVlLmFz
Q2VsbCgpKTsKfQoKaW5saW5lIEpTT2JqZWN0OjpKU09iamVjdChWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKICAgIDogSlNDZWxsKHZtLCBzdHJ1Y3R1
cmUpCiAgICAsIG1fYnV0dGVyZmx5KHZtLCB0aGlzLCBidXR0ZXJmbHkpCnsKICAgIHZtLmhlYXAu
YXNjcmliZU93bmVyKHRoaXMsIGJ1dHRlcmZseSk7Cn0KCmlubGluZSBKU1ZhbHVlIEpTT2JqZWN0
OjpnZXRQcm90b3R5cGVEaXJlY3QoKSBjb25zdAp7CiAgICByZXR1cm4gc3RydWN0dXJlKCktPnN0
b3JlZFByb3RvdHlwZSgpOwp9CgppbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0UHJvdG90eXBl
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQp7CiAgICBhdXRvIGdldFByb3RvdHlwZU1ldGhvZCA9
IG1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvdG90eXBlOwogICAgTWV0aG9kVGFibGU6OkdldFByb3Rv
dHlwZUZ1bmN0aW9uUHRyIGRlZmF1bHRHZXRQcm90b3R5cGUgPSBKU09iamVjdDo6Z2V0UHJvdG90
eXBlOwogICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoZ2V0UHJvdG90eXBlTWV0aG9kID09IGRl
ZmF1bHRHZXRQcm90b3R5cGUpLCAxKSkKICAgICAgICByZXR1cm4gZ2V0UHJvdG90eXBlRGlyZWN0
KCk7CiAgICByZXR1cm4gZ2V0UHJvdG90eXBlTWV0aG9kKHRoaXMsIGV4ZWMpOwp9CgoKCmlubGlu
ZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgSlNPYmplY3Q6OmdldE93
bk5vbkluZGV4UHJvcGVydHlTbG90KFZNJiB2bSwgU3RydWN0dXJlJiBzdHJ1Y3R1cmUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKewogICAgdW5zaWduZWQg
YXR0cmlidXRlczsKICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS5nZXQodm0s
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0
KSkKICAgICAgICByZXR1cm4gZmFsc2U7CgoKICAgICgodm9pZCkwKTsKCiAgICBKU1ZhbHVlIHZh
bHVlID0gZ2V0RGlyZWN0KG9mZnNldCk7CiAgICBpZiAodmFsdWUuaXNDZWxsKCkpIHsKICAgICAg
ICAoKHZvaWQpMCk7CiAgICAgICAgSlNDZWxsKiBjZWxsID0gdmFsdWUuYXNDZWxsKCk7CiAgICAg
ICAgSlNUeXBlIHR5cGUgPSBjZWxsLT50eXBlKCk7CiAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAg
ICAgICAgY2FzZSBHZXR0ZXJTZXR0ZXJUeXBlOgogICAgICAgICAgICBmaWxsR2V0dGVyUHJvcGVy
dHlTbG90KHNsb3QsIHZhbHVlLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOwogICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICBjYXNlIEN1c3RvbUdldHRlclNldHRlclR5cGU6CiAgICAgICAgICAg
IGZpbGxDdXN0b21HZXR0ZXJQcm9wZXJ0eVNsb3Qoc2xvdCwgdmFsdWUsIGF0dHJpYnV0ZXMsIHN0
cnVjdHVyZSk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgICBzbG90LnNldFZhbHVlKHRoaXMsIGF0
dHJpYnV0ZXMsIHZhbHVlLCBvZmZzZXQpOwogICAgcmV0dXJuIHRydWU7Cn0KCmlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgSlNPYmplY3Q6OmZpbGxDdXN0b21H
ZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGN1c3RvbUdldHRl
clNldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcywgU3RydWN0dXJlJiBzdHJ1Y3R1cmUpCnsKICAg
IGlmIChzdHJ1Y3R1cmUuaXNEaWN0aW9uYXJ5KCkpIHsKICAgICAgICBzbG90LnNldEN1c3RvbSh0
aGlzLCBhdHRyaWJ1dGVzLCBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyKj4oY3VzdG9tR2V0dGVy
U2V0dGVyKS0+Z2V0dGVyKCkpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHNsb3Quc2V0Q2Fj
aGVhYmxlQ3VzdG9tKHRoaXMsIGF0dHJpYnV0ZXMsIGpzQ2FzdDxDdXN0b21HZXR0ZXJTZXR0ZXIq
PihjdXN0b21HZXR0ZXJTZXR0ZXIpLT5nZXR0ZXIoKSk7Cn0KCgoKCmlubGluZSBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKewogICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
IFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKm9iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgIGlmIChv
YmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5
TmFtZSwgc2xvdCkpCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICBpZiAoT3B0aW9uYWw8dWludDMy
X3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgIHJldHVybiBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgZXhlYywgaW5kZXgudmFsdWUoKSwgc2xvdCk7
CiAgICByZXR1cm4gZmFsc2U7Cn0KCgoKaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fKSkgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQp7CiAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgYXV0byYgc3RydWN0dXJlSURUYWJsZSA9IHZtLmhlYXAuc3Ry
dWN0dXJlSURUYWJsZSgpOwogICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXM7CiAgICB3aGlsZSAo
dHJ1ZSkgewogICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKFR5cGVJbmZvOjpvdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LT5pbmxpbmVUeXBlRmxhZ3MoKSkpLCAwKSkgewoK
CgoKICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgo
cHJvcGVydHlOYW1lKSkKICAgICAgICAgICAgICAgIHJldHVybiBnZXRQcm9wZXJ0eVNsb3QoZXhl
YywgaW5kZXgudmFsdWUoKSwgc2xvdCk7CgoKICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0
Tm9uSW5kZXhQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICB9
CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKnN0cnVj
dHVyZUlEVGFibGUuZ2V0KG9iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAgICAgICAgaWYgKG9iamVj
dC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCBzbG90KSkKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgSlNWYWx1ZSBwcm90b3R5
cGUgPSBzdHJ1Y3R1cmUuc3RvcmVkUHJvdG90eXBlKCk7CiAgICAgICAgaWYgKCFwcm90b3R5cGUu
aXNPYmplY3QoKSkKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgb2JqZWN0ID0gYXNPYmplY3Qo
cHJvdG90eXBlKTsKICAgIH0KCiAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFy
c2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgIHJldHVybiBnZXRQcm9wZXJ0eVNsb3QoZXhl
YywgaW5kZXgudmFsdWUoKSwgc2xvdCk7CiAgICByZXR1cm4gZmFsc2U7Cn0KCmlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQp7CiAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgYXV0byYgc3RydWN0dXJlSURU
YWJsZSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpOwogICAgSlNPYmplY3QqIG9iamVjdCA9
IHRoaXM7CiAgICBNZXRob2RUYWJsZTo6R2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgZGVmYXVsdEdl
dFByb3RvdHlwZSA9IEpTT2JqZWN0OjpnZXRQcm90b3R5cGU7CiAgICB3aGlsZSAodHJ1ZSkgewog
ICAgICAgIFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKnN0cnVjdHVyZUlEVGFibGUuZ2V0KG9iamVj
dC0+c3RydWN0dXJlSUQoKSk7CiAgICAgICAgaWYgKHN0cnVjdHVyZS5jbGFzc0luZm8oKS0+bWV0
aG9kVGFibGUuZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCkpCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIGlmIChfX2J1aWx0
aW5fZXhwZWN0KCEhKHZtLmV4Y2VwdGlvbigpKSwgMCkpCiAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZTsKICAgICAgICBpZiAoX19idWlsdGluX2V4cGVj
dCghIShzdHJ1Y3R1cmUuY2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmdldFByb3RvdHlwZSA9PSBk
ZWZhdWx0R2V0UHJvdG90eXBlIHx8IHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkgPT0gUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSksIDEpKQogICAgICAgICAgICBw
cm90b3R5cGUgPSBzdHJ1Y3R1cmUuc3RvcmVkUHJvdG90eXBlKCk7CiAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgIHByb3RvdHlwZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKICAg
ICAgICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgIH0KICAgICAgICBpZiAoIXByb3RvdHlwZS5pc09iamVjdCgpKQogICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgb2JqZWN0ID0gYXNPYmplY3QocHJvdG90eXBlKTsKICAg
IH0KfQoKaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBKU09i
amVjdDo6Z2V0Tm9uSW5kZXhQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCnsKCiAgICAoKHZvaWQpMCk7Cgog
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgIGF1dG8mIHN0cnVjdHVyZUlEVGFibGUgPSB2bS5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsKICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzOwogICAg
TWV0aG9kVGFibGU6OkdldFByb3RvdHlwZUZ1bmN0aW9uUHRyIGRlZmF1bHRHZXRQcm90b3R5cGUg
PSBKU09iamVjdDo6Z2V0UHJvdG90eXBlOwogICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBTdHJ1
Y3R1cmUmIHN0cnVjdHVyZSA9ICpzdHJ1Y3R1cmVJRFRhYmxlLmdldChvYmplY3QtPnN0cnVjdHVy
ZUlEKCkpOwogICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCFUeXBlSW5mbzo6b3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90KG9iamVjdC0+aW5saW5lVHlwZUZsYWdzKCkpKSwgMSkpIHsK
ICAgICAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0
cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUuY2xhc3NJbmZvKCkt
Pm1ldGhvZFRhYmxlLmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgaWYgKF9f
YnVpbHRpbl9leHBlY3QoISEodm0uZXhjZXB0aW9uKCkpLCAwKSkKICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGU7CiAgICAgICAg
aWYgKF9fYnVpbHRpbl9leHBlY3QoISEoc3RydWN0dXJlLmNsYXNzSW5mbygpLT5tZXRob2RUYWJs
ZS5nZXRQcm90b3R5cGUgPT0gZGVmYXVsdEdldFByb3RvdHlwZSB8fCBzbG90LmludGVybmFsTWV0
aG9kVHlwZSgpID09IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkp
LCAxKSkKICAgICAgICAgICAgcHJvdG90eXBlID0gc3RydWN0dXJlLnN0b3JlZFByb3RvdHlwZSgp
OwogICAgICAgIGVsc2UgewogICAgICAgICAgICBwcm90b3R5cGUgPSBvYmplY3QtPmdldFByb3Rv
dHlwZSh2bSwgZXhlYyk7CiAgICAgICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKCFwcm90b3R5cGUuaXNP
YmplY3QoKSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIG9iamVjdCA9IGFzT2Jq
ZWN0KHByb3RvdHlwZSk7CiAgICB9Cn0KCmlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAp7CiAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0
KTsKICAgIGlmIChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPmdldFByb3BlcnR5U2xvdChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4
ZWMsIHByb3BlcnR5TmFtZSk7CgogICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cn0KCmlubGluZSBK
U1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUpIGNvbnN0CnsKICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogICAgaWYgKGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlz
KS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgcmV0
dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKCiAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKfQoKdGVtcGxhdGU8SlNPYmplY3Q6OlB1dE1vZGUgbW9kZT4KaW5saW5lIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50
ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCnsKICAgICgodm9pZCkw
KTsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKCiAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAgICBpZiAoc3RydWN0dXJl
LT5pc0RpY3Rpb25hcnkoKSkgewogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgdW5zaWduZWQg
Y3VycmVudEF0dHJpYnV0ZXM7CiAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0
dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMpOwogICAgICAgIGlm
IChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICBpZiAoKG1vZGUgPT0gUHV0
TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKCiAgICAgICAgICAgIHB1dERpcmVjdCh2bSwgb2Zmc2V0LCB2YWx1ZSk7
CiAgICAgICAgICAgIHN0cnVjdHVyZS0+ZGlkUmVwbGFjZVByb3BlcnR5KG9mZnNldCk7CiAgICAg
ICAgICAgIHNsb3Quc2V0RXhpc3RpbmdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwoKICAgICAgICAg
ICAgaWYgKChhdHRyaWJ1dGVzICYgQWNjZXNzb3IpICE9IChjdXJyZW50QXR0cmlidXRlcyAmIEFj
Y2Vzc29yKSB8fCAoYXR0cmlidXRlcyAmIEN1c3RvbUFjY2Vzc29yKSAhPSAoY3VycmVudEF0dHJp
YnV0ZXMgJiBDdXN0b21BY2Nlc3NvcikpIHsKICAgICAgICAgICAgICAgICgodm9pZCkwKTsKICAg
ICAgICAgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VU
cmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpOwogICAg
ICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYg
KChtb2RlID09IFB1dE1vZGVQdXQpICYmICFpc1N0cnVjdHVyZUV4dGVuc2libGUoKSkKICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAg
ICAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBidXR0ZXJmbHkoKTsKICAgICAgICBpZiAo
dGhpcy0+c3RydWN0dXJlKCktPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQogICAgICAg
ICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgdGhpcy0+c3RydWN0
dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHRoaXMtPnN0cnVjdHVyZSgpLT5zdWdnZXN0ZWRO
ZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgICAgb2Zmc2V0ID0gdGhpcy0+c3Ry
dWN0dXJlKCktPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcyk7CiAgICAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCB0aGlzLT5z
dHJ1Y3R1cmUoKSwgbmV3QnV0dGVyZmx5KTsKCiAgICAgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0
KTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcHV0RGlyZWN0KHZtLCBvZmZzZXQsIHZhbHVl
KTsKICAgICAgICBzbG90LnNldE5ld1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7CiAgICAgICAgaWYg
KGF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAgdGhpcy0+c3RydWN0dXJlKCktPnNl
dENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9
CgogICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwogICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9
IHRoaXMtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgU3RydWN0dXJlKiBu
ZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdT
dHJ1Y3R1cmUoCiAgICAgICAgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIG9m
ZnNldCk7CiAgICBpZiAobmV3U3RydWN0dXJlKSB7CiAgICAgICAgbmV3U3RydWN0dXJlLT53aWxs
U3RvcmVWYWx1ZUZvckV4aXN0aW5nVHJhbnNpdGlvbigKICAgICAgICAgICAgdm0sIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QuY29udGV4dCgpID09IFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7
CgogICAgICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICAgICBCdXR0ZXJmbHkqIG5l
d0J1dHRlcmZseSA9IGJ1dHRlcmZseSgpOwogICAgICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0g
bmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CiAgICAgICAgICAgICgodm9pZCkw
KTsKICAgICAgICAgICAgbmV3QnV0dGVyZmx5ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2Uodm0sIGN1
cnJlbnRDYXBhY2l0eSwgbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICAg
ICB9CgogICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CiAgICAgICAgKCh2b2lkKTApOwog
ICAgICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdCdXR0
ZXJmbHkpOwogICAgICAgIHB1dERpcmVjdCh2bSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgc2xv
dC5zZXROZXdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwogICAgICAgIHJldHVybiB0cnVlOwogICAg
fQoKICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgYm9vbCBoYXNJbmZlcnJlZFR5
cGU7CiAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBjdXJyZW50
QXR0cmlidXRlcywgaGFzSW5mZXJyZWRUeXBlKTsKICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9m
ZnNldCkgewogICAgICAgIGlmICgobW9kZSA9PSBQdXRNb2RlUHV0KSAmJiBjdXJyZW50QXR0cmli
dXRlcyAmIFJlYWRPbmx5KQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAgIHN0cnVj
dHVyZS0+ZGlkUmVwbGFjZVByb3BlcnR5KG9mZnNldCk7CiAgICAgICAgaWYgKF9fYnVpbHRpbl9l
eHBlY3QoISEoaGFzSW5mZXJyZWRUeXBlKSwgMCkpIHsKICAgICAgICAgICAgc3RydWN0dXJlLT53
aWxsU3RvcmVWYWx1ZUZvclJlcGxhY2UoCiAgICAgICAgICAgICAgICB2bSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdC5jb250ZXh0KCkgPT0gUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKICAg
ICAgICB9CgogICAgICAgIHNsb3Quc2V0RXhpc3RpbmdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwog
ICAgICAgIHB1dERpcmVjdCh2bSwgb2Zmc2V0LCB2YWx1ZSk7CgogICAgICAgIGlmICgoYXR0cmli
dXRlcyAmIEFjY2Vzc29yKSAhPSAoY3VycmVudEF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpIHsKICAg
ICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVy
ZTo6YXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAg
aWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmICFpc1N0cnVjdHVyZUV4dGVuc2libGUoKSkKICAg
ICAgICByZXR1cm4gZmFsc2U7CgoKCgogICAgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0
Y2hwb2ludEZpcmUgZGVmZXJyZWRXYXRjaHBvaW50RmlyZTsKCiAgICBuZXdTdHJ1Y3R1cmUgPSBT
dHJ1Y3R1cmU6OmFkZE5ld1Byb3BlcnR5VHJhbnNpdGlvbigKICAgICAgICB2bSwgc3RydWN0dXJl
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIG9mZnNldCwgc2xvdC5jb250ZXh0KCksICZkZWZl
cnJlZFdhdGNocG9pbnRGaXJlKTsKICAgIG5ld1N0cnVjdHVyZS0+d2lsbFN0b3JlVmFsdWVGb3JO
ZXdUcmFuc2l0aW9uKAogICAgICAgIHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LmNvbnRl
eHQoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWQpOwoKICAgIHZhbGlkYXRlT2Zmc2V0KG9m
ZnNldCk7CiAgICAoKHZvaWQpMCk7CiAgICBzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFn
ZUlmTmVjZXNzYXJ5KHZtLCBuZXdTdHJ1Y3R1cmUpOwoKICAgIHB1dERpcmVjdCh2bSwgb2Zmc2V0
LCB2YWx1ZSk7CiAgICBzbG90LnNldE5ld1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7CiAgICBpZiAo
YXR0cmlidXRlcyAmIFJlYWRPbmx5KQogICAgICAgIG5ld1N0cnVjdHVyZS0+c2V0Q29udGFpbnNS
ZWFkT25seVByb3BlcnRpZXMoKTsKICAgIHJldHVybiB0cnVlOwp9CgppbmxpbmUgdm9pZCBKU09i
amVjdDo6c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShWTSYgdm0s
IHVuc2lnbmVkIG9sZENhcGFjaXR5LCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKewogICAgKCh2
b2lkKTApOwoKICAgIGlmIChvbGRDYXBhY2l0eSA9PSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCkpIHsKICAgICAgICBzZXRTdHJ1Y3R1cmUodm0sIG5ld1N0cnVjdHVyZSk7CiAgICAg
ICAgcmV0dXJuOwogICAgfQoKICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgIEJ1dHRl
cmZseSogbmV3QnV0dGVyZmx5ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoCiAgICAgICAgdm0sIG9s
ZENhcGFjaXR5LCBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOwogICAgc2V0U3Ry
dWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7Cn0KCmlu
bGluZSB2b2lkIEpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVj
ZXNzYXJ5KFZNJiB2bSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCnsKICAgIHNldFN0cnVjdHVy
ZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoCiAgICAgICAgdm0sIHN0cnVjdHVyZSh2
bSktPm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZSk7Cn0KCmlubGluZSBib29sIEpT
T2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCnsKICAgICgodm9pZCkw
KTsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKCiAgICByZXR1
cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUs
IDAsIHNsb3QpOwp9CgppbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5TWF5
QmVJbmRleChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKewogICAgKCh2b2lkKTApOwogICAgKCh2
b2lkKTApOwogICAgKCh2b2lkKTApOwogICAgKCh2b2lkKTApOwoKICAgIGlmIChPcHRpb25hbDx1
aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgcmV0dXJu
IHB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBQdXREaXJlY3RJ
bmRleExpa2VQdXREaXJlY3QpOwoKICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2Rl
UHV0PihleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKfQoKaW5saW5l
IGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCnsKICAgICgodm9pZCkwKTsK
ICAgICgodm9pZCkwKTsKICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwogICAgcmV0dXJu
IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5
TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOwp9CgppbmxpbmUgYm9vbCBKU09iamVjdDo6
cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQp7CiAgICAoKHZvaWQpMCk7CiAgICAoKHZvaWQpMCk7
CiAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2
bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7Cn0KCmlubGluZSB2b2lkIEpTT2JqZWN0
OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCnsKICAgIERlZmVyR0Mg
ZGVmZXJHQyh2bS5oZWFwKTsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKICAgIEJ1dHRl
cmZseSogbmV3QnV0dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CiAgICBpZiAoc3RydWN0dXJl
KCktPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQogICAgICAgIG5ld0J1dHRlcmZseSA9
IGdyb3dPdXRPZkxpbmVTdG9yYWdlKHZtLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpKTsK
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7CiAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24o
dm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICBib29sIHNob3VsZE9wdGltaXplID0g
ZmFsc2U7CiAgICBzdHJ1Y3R1cmUtPndpbGxTdG9yZVZhbHVlRm9yTmV3VHJhbnNpdGlvbih2bSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkT3B0aW1pemUpOwogICAgc2V0U3RydWN0dXJlQW5k
QnV0dGVyZmx5KHZtLCBzdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7CiAgICBwdXREaXJlY3Qodm0s
IG9mZnNldCwgdmFsdWUpOwp9CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBKU09iamVjdCogUmVnaXN0ZXI6Om9iamVjdCgpIGNvbnN0CnsKICAgIHJldHVybiBhc09i
amVjdChqc1ZhbHVlKCkpOwp9CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18pKSBSZWdpc3RlciYgUmVnaXN0ZXI6Om9wZXJhdG9yPShKU09iamVjdCogb2JqZWN0KQp7CiAg
ICB1LnZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUob2JqZWN0KSk7CiAgICByZXR1cm4g
KnRoaXM7Cn0KCmlubGluZSBzaXplX3Qgb2Zmc2V0SW5CdXR0ZXJmbHkoUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KQp7CiAgICByZXR1cm4gb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdlKG9mZnNldCkgKyBC
dXR0ZXJmbHk6OmluZGV4T2ZQcm9wZXJ0eVN0b3JhZ2UoKTsKfQoKaW5saW5lIHNpemVfdCBKU09i
amVjdDo6YnV0dGVyZmx5UHJlQ2FwYWNpdHkoKQp7CiAgICBpZiAoX19idWlsdGluX2V4cGVjdCgh
IShoYXNJbmRleGluZ0hlYWRlcigpKSwgMCkpCiAgICAgICAgcmV0dXJuIGJ1dHRlcmZseSgpLT5p
bmRleGluZ0hlYWRlcigpLT5wcmVDYXBhY2l0eShzdHJ1Y3R1cmUoKSk7CiAgICByZXR1cm4gMDsK
fQoKaW5saW5lIHNpemVfdCBKU09iamVjdDo6YnV0dGVyZmx5VG90YWxTaXplKCkKewogICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKICAgIEJ1dHRlcmZseSogYnV0
dGVyZmx5ID0gdGhpcy0+YnV0dGVyZmx5KCk7CiAgICBzaXplX3QgcHJlQ2FwYWNpdHk7CiAgICBz
aXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXM7CiAgICBib29sIGhhc0luZGV4aW5nSGVh
ZGVyID0gdGhpcy0+aGFzSW5kZXhpbmdIZWFkZXIoKTsKCiAgICBpZiAoX19idWlsdGluX2V4cGVj
dCghIShoYXNJbmRleGluZ0hlYWRlciksIDApKSB7CiAgICAgICAgcHJlQ2FwYWNpdHkgPSBidXR0
ZXJmbHktPmluZGV4aW5nSGVhZGVyKCktPnByZUNhcGFjaXR5KHN0cnVjdHVyZSk7CiAgICAgICAg
aW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMgPSBidXR0ZXJmbHktPmluZGV4aW5nSGVhZGVyKCkt
PmluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKHN0cnVjdHVyZSk7CiAgICB9IGVsc2UgewogICAg
ICAgIHByZUNhcGFjaXR5ID0gMDsKICAgICAgICBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyA9
IDA7CiAgICB9CgogICAgcmV0dXJuIEJ1dHRlcmZseTo6dG90YWxTaXplKHByZUNhcGFjaXR5LCBz
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGhhc0luZGV4aW5nSGVhZGVyLCBpbmRleGlu
Z1BheWxvYWRTaXplSW5CeXRlcyk7Cn0KCmlubGluZSBpbnQgaW5kZXhSZWxhdGl2ZVRvQmFzZShQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQpCnsKICAgIGlmIChpc091dE9mTGluZU9mZnNldChvZmZzZXQp
KQogICAgICAgIHJldHVybiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KSArIEJ1dHRl
cmZseTo6aW5kZXhPZlByb3BlcnR5U3RvcmFnZSgpOwogICAgKCh2b2lkKTApOwogICAgcmV0dXJu
IEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAvIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uob2Zmc2V0KTsKfQoKaW5saW5lIGludCBvZmZzZXRS
ZWxhdGl2ZVRvQmFzZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCnsKICAgIGlmIChpc091dE9mTGlu
ZU9mZnNldChvZmZzZXQpKQogICAgICAgIHJldHVybiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uo
b2Zmc2V0KSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKyBCdXR0ZXJmbHk6Om9mZnNldE9mUHJv
cGVydHlTdG9yYWdlKCk7CiAgICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFn
ZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCkgKiBzaXplb2YoRW5jb2RlZEpTVmFs
dWUpOwp9CgoKaW5saW5lIHNpemVfdCBtYXhPZmZzZXRSZWxhdGl2ZVRvQmFzZShQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpCnsKICAgIHB0cmRpZmZfdCBhZGRyZXNzT2Zmc2V0ID0gb2Zmc2V0UmVsYXRp
dmVUb0Jhc2Uob2Zmc2V0KTsKCiAgICBpZiAoYWRkcmVzc09mZnNldCA+PSAwKQogICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGFkZHJlc3NPZmZzZXQpICsgKHJlaW50ZXJwcmV0X2Nh
c3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+
KDB4NDAwMCktPmFzQml0cy50YWcpKSAtIDB4NDAwMCk7CgogICAgcmV0dXJuIHN0YXRpY19jYXN0
PHNpemVfdD4oYWRkcmVzc09mZnNldCk7Cn0KCnN0YXRpY19hc3NlcnQoKCEoc2l6ZW9mKEpTT2Jq
ZWN0KSAlIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSkpLCAiSlNPYmplY3RfaW5s
aW5lX3N0b3JhZ2VfaGFzX2NvcnJlY3RfYWxpZ25tZW50Iik7CgppbmxpbmUgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18pKSBJZGVudGlmaWVyIG1ha2VJZGVudGlmaWVyKFZNJiB2bSwg
Y29uc3QgY2hhciogbmFtZSkKewogICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCBuYW1lKTsKfQoKaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgSWRl
bnRpZmllciBtYWtlSWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCnsKICAg
IHJldHVybiBuYW1lOwp9CgoKdGVtcGxhdGUgPHR5cGVuYW1lIEFkZEZ1bmN0aW9uPgp2b2lkIGNy
ZWF0ZUxpc3RGcm9tQXJyYXlMaWtlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBhcnJheUxpa2VW
YWx1ZSwgUnVudGltZVR5cGVNYXNrIGxlZ2FsVHlwZXNGaWx0ZXIsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBBZGRGdW5jdGlvbiBhZGRGdW5jdGlvbikKewogICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgIFZlY3RvcjxKU1ZhbHVlPiByZXN1bHQ7CiAgICBKU1ZhbHVlIGxlbmd0aFByb3Bl
cnR5ID0gYXJyYXlMaWtlVmFsdWUuZ2V0KGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+
bGVuZ3RoKTsKICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICByZXR1cm47CiAgICBkb3Vi
bGUgbGVuZ3RoQXNEb3VibGUgPSBsZW5ndGhQcm9wZXJ0eS50b0xlbmd0aChleGVjKTsKICAgIGlm
ICh2bS5leGNlcHRpb24oKSkKICAgICAgICByZXR1cm47CiAgICBkbyB7IGlmIChfX2J1aWx0aW5f
ZXhwZWN0KCEhKCEobGVuZ3RoQXNEb3VibGUgPj0gMC4wICYmIGxlbmd0aEFzRG91YmxlID09IHN0
ZDo6dHJ1bmMobGVuZ3RoQXNEb3VibGUpKSksIDApKSBXVEZDcmFzaCgpOyB9IHdoaWxlICgwKTsK
ICAgIHVpbnQ2NF90IGxlbmd0aCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGhBc0RvdWJs
ZSk7CiAgICBmb3IgKHVpbnQ2NF90IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4Kysp
IHsKICAgICAgICBKU1ZhbHVlIG5leHQgPSBhcnJheUxpa2VWYWx1ZS5nZXQoZXhlYywgaW5kZXgp
OwogICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAg
ICBSdW50aW1lVHlwZSB0eXBlID0gcnVudGltZVR5cGVGb3JWYWx1ZShuZXh0KTsKICAgICAgICBp
ZiAoISh0eXBlICYgbGVnYWxUeXBlc0ZpbHRlcikpIHsKICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAg
ICAgICAgYm9vbCBleGl0RWFybHkgPSBhZGRGdW5jdGlvbihuZXh0LCB0eXBlKTsKICAgICAgICBp
ZiAoZXhpdEVhcmx5KQogICAgICAgICAgICByZXR1cm47CiAgICB9Cn0KCmJvb2wgdmFsaWRhdGVB
bmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBKU09iamVjdCosIFByb3BlcnR5
TmFtZSwgYm9vbCBpc0V4dGVuc2libGUsCiAgICBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IsIGJvb2wgaXNDdXJyZW50RGVmaW5lZCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9y
JiBjdXJyZW50LCBib29sIHRocm93RXhjZXB0aW9uKTsKCiBfX2F0dHJpYnV0ZV9fKChfX25vaW5s
aW5lX18pKSBib29sIG9yZGluYXJ5U2V0U2xvdyhFeGVjU3RhdGUqLCBKU09iamVjdCosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgSlNWYWx1ZSByZWNlaXZlciwgYm9vbCBzaG91bGRUaHJvdyk7CgoK
CgoKI2RlZmluZSBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTihqc05hbWUsY3BwTmFtZSxh
dHRyaWJ1dGVzLGxlbmd0aCxpbnRyaW5zaWMpIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKCB2bSwg
Z2xvYmFsT2JqZWN0LCBtYWtlSWRlbnRpZmllcih2bSwgKGpzTmFtZSkpLCAobGVuZ3RoKSwgY3Bw
TmFtZSwgKGludHJpbnNpYyksIChhdHRyaWJ1dGVzKSkKCgoKCiNkZWZpbmUgSlNDX05BVElWRV9J
TlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKGpzTmFtZSxjcHBOYW1lLGF0dHJp
YnV0ZXMsbGVuZ3RoLGludHJpbnNpYykgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbiggdm0sIGdsb2JhbE9iamVjdCwgbWFrZUlkZW50aWZpZXIodm0sIChqc05hbWUpKSwg
KGxlbmd0aCksIGNwcE5hbWUsIChpbnRyaW5zaWMpLCAoYXR0cmlidXRlcykpCgoKCgoKCiNkZWZp
bmUgSlNDX05BVElWRV9GVU5DVElPTihqc05hbWUsY3BwTmFtZSxhdHRyaWJ1dGVzLGxlbmd0aCkg
SlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT04oanNOYW1lLCBjcHBOYW1lLCAoYXR0cmlidXRl
cyksIChsZW5ndGgpLCBOb0ludHJpbnNpYykKCgojZGVmaW5lIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKGpzTmFtZSxjcHBOYW1lLGF0dHJpYnV0ZXMsbGVuZ3RoKSBKU0Nf
TkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oanNOYW1lLCBjcHBO
YW1lLCAoYXR0cmlidXRlcyksIChsZW5ndGgpLCBOb0ludHJpbnNpYykKCgoKCiNkZWZpbmUgSlND
X0JVSUxUSU5fRlVOQ1RJT04oanNOYW1lLGdlbmVyYXRvck5hbWUsYXR0cmlidXRlcykgcHV0RGly
ZWN0QnVpbHRpbkZ1bmN0aW9uKCB2bSwgZ2xvYmFsT2JqZWN0LCBtYWtlSWRlbnRpZmllcih2bSwg
KGpzTmFtZSkpLCAoZ2VuZXJhdG9yTmFtZSkodm0pLCAoYXR0cmlidXRlcykpCgoKCiNkZWZpbmUg
SlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKGpzTmFtZSxnZW5lcmF0b3JO
YW1lLGF0dHJpYnV0ZXMpIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KCB2bSwgZ2xvYmFsT2JqZWN0LCBtYWtlSWRlbnRpZmllcih2bSwgKGpzTmFtZSkpLCAoZ2VuZXJh
dG9yTmFtZSkodm0pLCAoYXR0cmlidXRlcykpCgoKCgojZGVmaW5lIEpTQ19OQVRJVkVfSU5UUklO
U0lDX0dFVFRFUihqc05hbWUsY3BwTmFtZSxhdHRyaWJ1dGVzLGludHJpbnNpYykgcHV0RGlyZWN0
TmF0aXZlSW50cmluc2ljR2V0dGVyKCB2bSwgZ2xvYmFsT2JqZWN0LCBtYWtlSWRlbnRpZmllcih2
bSwgKGpzTmFtZSkpLCAoY3BwTmFtZSksIChpbnRyaW5zaWMpLCAoKGF0dHJpYnV0ZXMpIHwgQWNj
ZXNzb3IpKQoKCgoKI2RlZmluZSBKU0NfTkFUSVZFX0dFVFRFUihqc05hbWUsY3BwTmFtZSxhdHRy
aWJ1dGVzKSBKU0NfTkFUSVZFX0lOVFJJTlNJQ19HRVRURVIoKGpzTmFtZSksIChjcHBOYW1lKSwg
KGF0dHJpYnV0ZXMpLCBOb0ludHJpbnNpYykKCgoKfQojIDMwICIuLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaCIgMgojIDEgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5oIiAxCiMg
MjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlv
bi5oIgojZGVmaW5lIFByb3BlcnR5Q29uZGl0aW9uX2ggCgoKCgpuYW1lc3BhY2UgSlNDIHsKCmNs
YXNzIFRyYWNrZWRSZWZlcmVuY2VzOwoKY2xhc3MgUHJvcGVydHlDb25kaXRpb24gewpwdWJsaWM6
CiAgICBlbnVtIEtpbmQgewogICAgICAgIFByZXNlbmNlLAogICAgICAgIEFic2VuY2UsCiAgICAg
ICAgQWJzZW5jZU9mU2V0dGVyLAogICAgICAgIEVxdWl2YWxlbmNlCiAgICB9OwoKICAgIFByb3Bl
cnR5Q29uZGl0aW9uKCkKICAgICAgICA6IG1fdWlkKG51bGxwdHIpCiAgICAgICAgLCBtX2tpbmQo
UHJlc2VuY2UpCiAgICB7CiAgICAgICAgbWVtc2V0KCZ1LCAwLCBzaXplb2YodSkpOwogICAgfQoK
ICAgIFByb3BlcnR5Q29uZGl0aW9uKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKICAg
ICAgICA6IG1fdWlkKG51bGxwdHIpCiAgICAgICAgLCBtX2tpbmQoQWJzZW5jZSkKICAgIHsKICAg
ICAgICBtZW1zZXQoJnUsIDAsIHNpemVvZih1KSk7CiAgICB9CgogICAgc3RhdGljIFByb3BlcnR5
Q29uZGl0aW9uIHByZXNlbmNlV2l0aG91dEJhcnJpZXIoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogICAgewogICAgICAg
IFByb3BlcnR5Q29uZGl0aW9uIHJlc3VsdDsKICAgICAgICByZXN1bHQubV91aWQgPSB1aWQ7CiAg
ICAgICAgcmVzdWx0Lm1fa2luZCA9IFByZXNlbmNlOwogICAgICAgIHJlc3VsdC51LnByZXNlbmNl
Lm9mZnNldCA9IG9mZnNldDsKICAgICAgICByZXN1bHQudS5wcmVzZW5jZS5hdHRyaWJ1dGVzID0g
YXR0cmlidXRlczsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKICAgIHN0YXRpYyBQcm9w
ZXJ0eUNvbmRpdGlvbiBwcmVzZW5jZSgKICAgICAgICBWTSYsIEpTQ2VsbCosIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgdW5zaWduZWQgYXR0cmlidXRlcykK
ICAgIHsKICAgICAgICByZXR1cm4gcHJlc2VuY2VXaXRob3V0QmFycmllcih1aWQsIG9mZnNldCwg
YXR0cmlidXRlcyk7CiAgICB9CgoKICAgIHN0YXRpYyBQcm9wZXJ0eUNvbmRpdGlvbiBhYnNlbmNl
V2l0aG91dEJhcnJpZXIoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgSlNPYmplY3QqIHByb3RvdHlw
ZSkKICAgIHsKICAgICAgICBQcm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQ7CiAgICAgICAgcmVzdWx0
Lm1fdWlkID0gdWlkOwogICAgICAgIHJlc3VsdC5tX2tpbmQgPSBBYnNlbmNlOwogICAgICAgIHJl
c3VsdC51LmFic2VuY2UucHJvdG90eXBlID0gcHJvdG90eXBlOwogICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICB9CgogICAgc3RhdGljIFByb3BlcnR5Q29uZGl0aW9uIGFic2VuY2UoCiAgICAgICAg
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBKU09iamVjdCog
cHJvdG90eXBlKQogICAgewogICAgICAgIGlmIChvd25lcikKICAgICAgICAgICAgdm0uaGVhcC53
cml0ZUJhcnJpZXIob3duZXIpOwogICAgICAgIHJldHVybiBhYnNlbmNlV2l0aG91dEJhcnJpZXIo
dWlkLCBwcm90b3R5cGUpOwogICAgfQoKICAgIHN0YXRpYyBQcm9wZXJ0eUNvbmRpdGlvbiBhYnNl
bmNlT2ZTZXR0ZXJXaXRob3V0QmFycmllcigKICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
LCBKU09iamVjdCogcHJvdG90eXBlKQogICAgewogICAgICAgIFByb3BlcnR5Q29uZGl0aW9uIHJl
c3VsdDsKICAgICAgICByZXN1bHQubV91aWQgPSB1aWQ7CiAgICAgICAgcmVzdWx0Lm1fa2luZCA9
IEFic2VuY2VPZlNldHRlcjsKICAgICAgICByZXN1bHQudS5hYnNlbmNlLnByb3RvdHlwZSA9IHBy
b3RvdHlwZTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKICAgIHN0YXRpYyBQcm9wZXJ0
eUNvbmRpdGlvbiBhYnNlbmNlT2ZTZXR0ZXIoCiAgICAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBKU09iamVjdCogcHJvdG90eXBlKQogICAgewogICAg
ICAgIGlmIChvd25lcikKICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIob3duZXIpOwog
ICAgICAgIHJldHVybiBhYnNlbmNlT2ZTZXR0ZXJXaXRob3V0QmFycmllcih1aWQsIHByb3RvdHlw
ZSk7CiAgICB9CgogICAgc3RhdGljIFByb3BlcnR5Q29uZGl0aW9uIGVxdWl2YWxlbmNlV2l0aG91
dEJhcnJpZXIoCiAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgSlNWYWx1ZSB2YWx1ZSkK
ICAgIHsKICAgICAgICBQcm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQ7CiAgICAgICAgcmVzdWx0Lm1f
dWlkID0gdWlkOwogICAgICAgIHJlc3VsdC5tX2tpbmQgPSBFcXVpdmFsZW5jZTsKICAgICAgICBy
ZXN1bHQudS5lcXVpdmFsZW5jZS52YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CiAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICBzdGF0aWMgUHJvcGVydHlDb25kaXRpb24gZXF1
aXZhbGVuY2UoCiAgICAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkLCBKU1ZhbHVlIHZhbHVlKQogICAgewogICAgICAgIGlmICh2YWx1ZS5pc0NlbGwoKSAm
JiBvd25lcikKICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIob3duZXIpOwogICAgICAg
IHJldHVybiBlcXVpdmFsZW5jZVdpdGhvdXRCYXJyaWVyKHVpZCwgdmFsdWUpOwogICAgfQoKICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3VpZCB8fCBtX2tpbmQg
IT0gUHJlc2VuY2U7IH0KCiAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0K
ICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQoKSBjb25zdCB7IHJldHVybiBtX3VpZDsgfQoKICAg
IGJvb2wgaGFzT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gISEqdGhpcyAmJiBtX2tpbmQgPT0gUHJl
c2VuY2U7IH07CiAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdAogICAgewogICAgICAg
ICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gdS5wcmVzZW5jZS5vZmZzZXQ7CiAgICB9CiAgICBi
b29sIGhhc0F0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiAhISp0aGlzICYmIG1fa2luZCA9PSBQ
cmVzZW5jZTsgfTsKICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMoKSBjb25zdAogICAgewogICAgICAg
ICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gdS5wcmVzZW5jZS5hdHRyaWJ1dGVzOwogICAgfQoK
ICAgIGJvb2wgaGFzUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gISEqdGhpcyAmJiAobV9raW5k
ID09IEFic2VuY2UgfHwgbV9raW5kID09IEFic2VuY2VPZlNldHRlcik7IH0KICAgIEpTT2JqZWN0
KiBwcm90b3R5cGUoKSBjb25zdAogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1
cm4gdS5hYnNlbmNlLnByb3RvdHlwZTsKICAgIH0KCiAgICBib29sIGhhc1JlcXVpcmVkVmFsdWUo
KSBjb25zdCB7IHJldHVybiAhISp0aGlzICYmIG1fa2luZCA9PSBFcXVpdmFsZW5jZTsgfQogICAg
SlNWYWx1ZSByZXF1aXJlZFZhbHVlKCkgY29uc3QKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh1LmVxdWl2YWxlbmNlLnZhbHVlKTsKICAgIH0K
CiAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0
OwogICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CgogICAgdW5zaWduZWQgaGFzaCgp
IGNvbnN0CiAgICB7CiAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gV1RGOjpQdHJIYXNoPFVuaXF1
ZWRTdHJpbmdJbXBsKj46Omhhc2gobV91aWQpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fa2lu
ZCk7CiAgICAgICAgc3dpdGNoIChtX2tpbmQpIHsKICAgICAgICBjYXNlIFByZXNlbmNlOgogICAg
ICAgICAgICByZXN1bHQgXj0gdS5wcmVzZW5jZS5vZmZzZXQ7CiAgICAgICAgICAgIHJlc3VsdCBe
PSB1LnByZXNlbmNlLmF0dHJpYnV0ZXM7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2Ug
QWJzZW5jZToKICAgICAgICBjYXNlIEFic2VuY2VPZlNldHRlcjoKICAgICAgICAgICAgcmVzdWx0
IF49IFdURjo6UHRySGFzaDxKU09iamVjdCo+OjpoYXNoKHUuYWJzZW5jZS5wcm90b3R5cGUpOwog
ICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIEVxdWl2YWxlbmNlOgogICAgICAgICAgICBy
ZXN1bHQgXj0gRW5jb2RlZEpTVmFsdWVIYXNoOjpoYXNoKHUuZXF1aXZhbGVuY2UudmFsdWUpOwog
ICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0K
CiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvcGVydHlDb25kaXRpb24mIG90aGVyKSBjb25z
dAogICAgewogICAgICAgIGlmIChtX3VpZCAhPSBvdGhlci5tX3VpZCkKICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgIGlmIChtX2tpbmQgIT0gb3RoZXIubV9raW5kKQogICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgc3dpdGNoIChtX2tpbmQpIHsKICAgICAgICBjYXNlIFBy
ZXNlbmNlOgogICAgICAgICAgICByZXR1cm4gdS5wcmVzZW5jZS5vZmZzZXQgPT0gb3RoZXIudS5w
cmVzZW5jZS5vZmZzZXQKICAgICAgICAgICAgICAgICYmIHUucHJlc2VuY2UuYXR0cmlidXRlcyA9
PSBvdGhlci51LnByZXNlbmNlLmF0dHJpYnV0ZXM7CiAgICAgICAgY2FzZSBBYnNlbmNlOgogICAg
ICAgIGNhc2UgQWJzZW5jZU9mU2V0dGVyOgogICAgICAgICAgICByZXR1cm4gdS5hYnNlbmNlLnBy
b3RvdHlwZSA9PSBvdGhlci51LmFic2VuY2UucHJvdG90eXBlOwogICAgICAgIGNhc2UgRXF1aXZh
bGVuY2U6CiAgICAgICAgICAgIHJldHVybiB1LmVxdWl2YWxlbmNlLnZhbHVlID09IG90aGVyLnUu
ZXF1aXZhbGVuY2UudmFsdWU7CiAgICAgICAgfQogICAgICAgIFdURkNyYXNoKCk7CiAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdAogICAgewogICAgICAgIHJldHVybiAhbV91aWQgJiYgbV9raW5kID09IEFic2VuY2U7CiAg
ICB9CgoKCgoKCgogICAgYm9vbCBpc0NvbXBhdGlibGVXaXRoKGNvbnN0IFByb3BlcnR5Q29uZGl0
aW9uJiBvdGhlcikgY29uc3QKICAgIHsKICAgICAgICBpZiAoISp0aGlzIHx8ICFvdGhlcikKICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIHJldHVybiAqdGhpcyA9PSBvdGhlciB8fCB1
aWQoKSAhPSBvdGhlci51aWQoKTsKICAgIH0KCgogICAgYm9vbCBpc1N0aWxsVmFsaWRBc3N1bWlu
Z0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChTdHJ1Y3R1cmUqLCBKU09iamVjdCogYmFzZSA9IG51
bGxwdHIpIGNvbnN0OwoKCgogICAgYm9vbCB2YWxpZGl0eVJlcXVpcmVzSW1wdXJlUHJvcGVydHlX
YXRjaHBvaW50KFN0cnVjdHVyZSopIGNvbnN0OwojIDIzNSAiLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmgiCiAgICBib29sIGlzU3RpbGxWYWxp
ZChTdHJ1Y3R1cmUqLCBKU09iamVjdCogYmFzZSA9IG51bGxwdHIpIGNvbnN0OwoKCgoKCgogICAg
ZW51bSBXYXRjaGFiaWxpdHlFZmZvcnQgewojIDI1MiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmgiCiAgICAgICAgTWFrZU5vQ2hhbmdlcywK
CgoKCgogICAgICAgIEVuc3VyZVdhdGNoYWJpbGl0eQogICAgfTsKCgoKICAgIGJvb2wgaXNXYXRj
aGFibGVBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgKICAgICAgICBTdHJ1Y3R1cmUq
LCBKU09iamVjdCogYmFzZSA9IG51bGxwdHIsIFdhdGNoYWJpbGl0eUVmZm9ydCA9IE1ha2VOb0No
YW5nZXMpIGNvbnN0OwoKCgogICAgYm9vbCBpc1dhdGNoYWJsZSgKICAgICAgICBTdHJ1Y3R1cmUq
LCBKU09iamVjdCogYmFzZSA9IG51bGxwdHIsIFdhdGNoYWJpbGl0eUVmZm9ydCA9IE1ha2VOb0No
YW5nZXMpIGNvbnN0OwoKICAgIGJvb2wgd2F0Y2hpbmdSZXF1aXJlc1N0cnVjdHVyZVRyYW5zaXRp
b25XYXRjaHBvaW50KCkgY29uc3QKICAgIHsKCiAgICAgICAgcmV0dXJuICEhKnRoaXM7CiAgICB9
CiAgICBib29sIHdhdGNoaW5nUmVxdWlyZXNSZXBsYWNlbWVudFdhdGNocG9pbnQoKSBjb25zdAog
ICAgewogICAgICAgIHJldHVybiAhISp0aGlzICYmIG1fa2luZCA9PSBFcXVpdmFsZW5jZTsKICAg
IH0KCgogICAgYm9vbCBpc1N0aWxsTGl2ZSgpIGNvbnN0OwoKICAgIHZvaWQgdmFsaWRhdGVSZWZl
cmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJikgY29uc3Q7CgogICAgc3RhdGljIGJvb2wg
aXNWYWxpZFZhbHVlRm9yQXR0cmlidXRlcyhKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKTsKCiAgICBib29sIGlzVmFsaWRWYWx1ZUZvclByZXNlbmNlKEpTVmFsdWUpIGNvbnN0OwoK
ICAgIFByb3BlcnR5Q29uZGl0aW9uIGF0dGVtcHRUb01ha2VFcXVpdmFsZW5jZVdpdGhvdXRCYXJy
aWVyKEpTT2JqZWN0KiBiYXNlKSBjb25zdDsKCnByaXZhdGU6CiAgICBib29sIGlzV2F0Y2hhYmxl
V2hlblZhbGlkKFN0cnVjdHVyZSosIFdhdGNoYWJpbGl0eUVmZm9ydCkgY29uc3Q7CgogICAgVW5p
cXVlZFN0cmluZ0ltcGwqIG1fdWlkOwogICAgS2luZCBtX2tpbmQ7CiAgICB1bmlvbiB7CiAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwogICAgICAgICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAgIH0gcHJlc2VuY2U7CiAgICAgICAgc3RydWN0
IHsKICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZTsKICAgICAgICB9IGFic2VuY2U7CiAg
ICAgICAgc3RydWN0IHsKICAgICAgICAgICAgRW5jb2RlZEpTVmFsdWUgdmFsdWU7CiAgICAgICAg
fSBlcXVpdmFsZW5jZTsKICAgIH0gdTsKfTsKCnN0cnVjdCBQcm9wZXJ0eUNvbmRpdGlvbkhhc2gg
ewogICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUHJvcGVydHlDb25kaXRpb24mIGtleSkg
eyByZXR1cm4ga2V5Lmhhc2goKTsgfQogICAgc3RhdGljIGJvb2wgZXF1YWwoCiAgICAgICAgY29u
c3QgUHJvcGVydHlDb25kaXRpb24mIGEsIGNvbnN0IFByb3BlcnR5Q29uZGl0aW9uJiBiKQogICAg
ewogICAgICAgIHJldHVybiBhID09IGI7CiAgICB9CiAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cn07Cgp9CgpuYW1lc3BhY2UgV1RGIHsK
CnZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UHJvcGVydHlDb25kaXRpb246
OktpbmQpOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwp0ZW1wbGF0
ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OlByb3BlcnR5Q29uZGl0aW9uPiB7CiAgICB0eXBl
ZGVmIEpTQzo6UHJvcGVydHlDb25kaXRpb25IYXNoIEhhc2g7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6
OlByb3BlcnR5Q29uZGl0aW9uPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OlByb3BlcnR5
Q29uZGl0aW9uPiB7IH07Cgp9CiMgMzEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5oIiAyCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFz
cyBUcmFja2VkUmVmZXJlbmNlczsKCmNsYXNzIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIHsKcHVi
bGljOgogICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24oKQogICAgICAgIDogbV9vYmplY3QobnVs
bHB0cikKICAgIHsKICAgIH0KCiAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbihXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZVR5cGUgdG9rZW4pCiAgICAgICAgOiBtX29iamVjdChudWxscHRyKQog
ICAgICAgICwgbV9jb25kaXRpb24odG9rZW4pCiAgICB7CiAgICB9CgogICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24oSlNPYmplY3QqIG9iamVjdCwgY29uc3QgUHJvcGVydHlDb25kaXRpb24mIGNv
bmRpdGlvbikKICAgICAgICA6IG1fb2JqZWN0KG9iamVjdCkKICAgICAgICAsIG1fY29uZGl0aW9u
KGNvbmRpdGlvbikKICAgIHsKICAgIH0KCiAgICBzdGF0aWMgT2JqZWN0UHJvcGVydHlDb25kaXRp
b24gcHJlc2VuY2VXaXRob3V0QmFycmllcigKICAgICAgICBKU09iamVjdCogb2JqZWN0LCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpCiAgICB7CiAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gcmVzdWx0OwogICAg
ICAgIHJlc3VsdC5tX29iamVjdCA9IG9iamVjdDsKICAgICAgICByZXN1bHQubV9jb25kaXRpb24g
PSBQcm9wZXJ0eUNvbmRpdGlvbjo6cHJlc2VuY2VXaXRob3V0QmFycmllcih1aWQsIG9mZnNldCwg
YXR0cmlidXRlcyk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICBzdGF0aWMgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24gcHJlc2VuY2UoCiAgICAgICAgVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBKU09iamVjdCogb2JqZWN0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsCiAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlcykKICAgIHsKICAgICAgICBp
ZiAob3duZXIpCiAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKG93bmVyKTsKICAgICAg
ICByZXR1cm4gcHJlc2VuY2VXaXRob3V0QmFycmllcihvYmplY3QsIHVpZCwgb2Zmc2V0LCBhdHRy
aWJ1dGVzKTsKICAgIH0KCgogICAgc3RhdGljIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGFic2Vu
Y2VXaXRob3V0QmFycmllcigKICAgICAgICBKU09iamVjdCogb2JqZWN0LCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkLCBKU09iamVjdCogcHJvdG90eXBlKQogICAgewogICAgICAgIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uIHJlc3VsdDsKICAgICAgICByZXN1bHQubV9vYmplY3QgPSBvYmplY3Q7CiAg
ICAgICAgcmVzdWx0Lm1fY29uZGl0aW9uID0gUHJvcGVydHlDb25kaXRpb246OmFic2VuY2VXaXRo
b3V0QmFycmllcih1aWQsIHByb3RvdHlwZSk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0K
CiAgICBzdGF0aWMgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gYWJzZW5jZSgKICAgICAgICBWTSYg
dm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBvYmplY3QsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQsIEpTT2JqZWN0KiBwcm90b3R5cGUpCiAgICB7CiAgICAgICAgaWYgKG93bmVyKQogICAgICAg
ICAgICB2bS5oZWFwLndyaXRlQmFycmllcihvd25lcik7CiAgICAgICAgcmV0dXJuIGFic2VuY2VX
aXRob3V0QmFycmllcihvYmplY3QsIHVpZCwgcHJvdG90eXBlKTsKICAgIH0KCiAgICBzdGF0aWMg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gYWJzZW5jZU9mU2V0dGVyV2l0aG91dEJhcnJpZXIoCiAg
ICAgICAgSlNPYmplY3QqIG9iamVjdCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgSlNPYmplY3Qq
IHByb3RvdHlwZSkKICAgIHsKICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQ7
CiAgICAgICAgcmVzdWx0Lm1fb2JqZWN0ID0gb2JqZWN0OwogICAgICAgIHJlc3VsdC5tX2NvbmRp
dGlvbiA9IFByb3BlcnR5Q29uZGl0aW9uOjphYnNlbmNlT2ZTZXR0ZXJXaXRob3V0QmFycmllcih1
aWQsIHByb3RvdHlwZSk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICBzdGF0aWMg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gYWJzZW5jZU9mU2V0dGVyKAogICAgICAgIFZNJiB2bSwg
SlNDZWxsKiBvd25lciwgSlNPYmplY3QqIG9iamVjdCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwg
SlNPYmplY3QqIHByb3RvdHlwZSkKICAgIHsKICAgICAgICBpZiAob3duZXIpCiAgICAgICAgICAg
IHZtLmhlYXAud3JpdGVCYXJyaWVyKG93bmVyKTsKICAgICAgICByZXR1cm4gYWJzZW5jZU9mU2V0
dGVyV2l0aG91dEJhcnJpZXIob2JqZWN0LCB1aWQsIHByb3RvdHlwZSk7CiAgICB9CgogICAgc3Rh
dGljIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGVxdWl2YWxlbmNlV2l0aG91dEJhcnJpZXIoCiAg
ICAgICAgSlNPYmplY3QqIG9iamVjdCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgSlNWYWx1ZSB2
YWx1ZSkKICAgIHsKICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQ7CiAgICAg
ICAgcmVzdWx0Lm1fb2JqZWN0ID0gb2JqZWN0OwogICAgICAgIHJlc3VsdC5tX2NvbmRpdGlvbiA9
IFByb3BlcnR5Q29uZGl0aW9uOjplcXVpdmFsZW5jZVdpdGhvdXRCYXJyaWVyKHVpZCwgdmFsdWUp
OwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CgogICAgc3RhdGljIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGVxdWl2YWxlbmNlKAogICAgICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNP
YmplY3QqIG9iamVjdCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgSlNWYWx1ZSB2YWx1ZSkKICAg
IHsKICAgICAgICBpZiAob3duZXIpCiAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKG93
bmVyKTsKICAgICAgICByZXR1cm4gZXF1aXZhbGVuY2VXaXRob3V0QmFycmllcihvYmplY3QsIHVp
ZCwgdmFsdWUpOwogICAgfQoKICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiAhIW1fY29uZGl0aW9uOyB9CgogICAgSlNPYmplY3QqIG9iamVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fb2JqZWN0OyB9CiAgICBQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2NvbmRpdGlvbjsgfQoKICAgIFByb3BlcnR5Q29uZGl0aW9uOjpLaW5kIGtpbmQo
KSBjb25zdCB7IHJldHVybiBjb25kaXRpb24oKS5raW5kKCk7IH0KICAgIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQoKSBjb25zdCB7IHJldHVybiBjb25kaXRpb24oKS51aWQoKTsgfQogICAgYm9vbCBo
YXNPZmZzZXQoKSBjb25zdCB7IHJldHVybiBjb25kaXRpb24oKS5oYXNPZmZzZXQoKTsgfQogICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gY29uZGl0aW9uKCkub2Zmc2V0
KCk7IH0KICAgIHVuc2lnbmVkIGhhc0F0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBjb25kaXRp
b24oKS5oYXNBdHRyaWJ1dGVzKCk7IH0KICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMoKSBjb25zdCB7
IHJldHVybiBjb25kaXRpb24oKS5hdHRyaWJ1dGVzKCk7IH0KICAgIGJvb2wgaGFzUHJvdG90eXBl
KCkgY29uc3QgeyByZXR1cm4gY29uZGl0aW9uKCkuaGFzUHJvdG90eXBlKCk7IH0KICAgIEpTT2Jq
ZWN0KiBwcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBjb25kaXRpb24oKS5wcm90b3R5cGUoKTsg
fQogICAgYm9vbCBoYXNSZXF1aXJlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gY29uZGl0aW9uKCku
aGFzUmVxdWlyZWRWYWx1ZSgpOyB9CiAgICBKU1ZhbHVlIHJlcXVpcmVkVmFsdWUoKSBjb25zdCB7
IHJldHVybiBjb25kaXRpb24oKS5yZXF1aXJlZFZhbHVlKCk7IH0KCiAgICB2b2lkIGR1bXBJbkNv
bnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OwogICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7CgogICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICB7CiAgICAg
ICAgcmV0dXJuIFdURjo6UHRySGFzaDxKU09iamVjdCo+OjpoYXNoKG1fb2JqZWN0KSBeIG1fY29u
ZGl0aW9uLmhhc2goKTsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24mIG90aGVyKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX29iamVj
dCA9PSBvdGhlci5tX29iamVjdAogICAgICAgICAgICAmJiBtX2NvbmRpdGlvbiA9PSBvdGhlci5t
X2NvbmRpdGlvbjsKICAgIH0KCiAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29u
c3QKICAgIHsKICAgICAgICByZXR1cm4gIW1fb2JqZWN0ICYmIG1fY29uZGl0aW9uLmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7CiAgICB9CgoKCgoKCgogICAgYm9vbCBpc0NvbXBhdGlibGVXaXRo
KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBvdGhlcikgY29uc3QKICAgIHsKICAgICAg
ICBpZiAoISp0aGlzIHx8ICFvdGhlcikKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
IHJldHVybiAqdGhpcyA9PSBvdGhlciB8fCB1aWQoKSAhPSBvdGhlci51aWQoKSB8fCBvYmplY3Qo
KSAhPSBvdGhlci5vYmplY3QoKTsKICAgIH0KIyAxODEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5oIgogICAgYm9vbCBzdHJ1Y3R1
cmVFbnN1cmVzVmFsaWRpdHlBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChTdHJ1Y3R1
cmUqKSBjb25zdDsKICAgIGJvb2wgc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5QXNzdW1pbmdJbXB1
cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSBjb25zdDsKCgoKICAgIGJvb2wgdmFsaWRpdHlSZXF1aXJl
c0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChTdHJ1Y3R1cmUqKSBjb25zdDsKICAgIGJvb2wgdmFs
aWRpdHlSZXF1aXJlc0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpIGNvbnN0OwoKCgoKCgogICAg
Ym9vbCBpc1N0aWxsVmFsaWQoU3RydWN0dXJlKikgY29uc3Q7CiAgICBib29sIGlzU3RpbGxWYWxp
ZCgpIGNvbnN0OwoKCiAgICBib29sIHN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eShTdHJ1Y3R1cmUq
KSBjb25zdDsKICAgIGJvb2wgc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5KCkgY29uc3Q7CgoKCiAg
ICBib29sIGlzV2F0Y2hhYmxlQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAgICAg
ICAgU3RydWN0dXJlKiwKICAgICAgICBQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5RWZm
b3J0ID0gUHJvcGVydHlDb25kaXRpb246Ok1ha2VOb0NoYW5nZXMpIGNvbnN0OwogICAgYm9vbCBp
c1dhdGNoYWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgICAgIFByb3Bl
cnR5Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQgPSBQcm9wZXJ0eUNvbmRpdGlvbjo6TWFr
ZU5vQ2hhbmdlcykgY29uc3Q7CgoKCiAgICBib29sIGlzV2F0Y2hhYmxlKAogICAgICAgIFN0cnVj
dHVyZSosCiAgICAgICAgUHJvcGVydHlDb25kaXRpb246OldhdGNoYWJpbGl0eUVmZm9ydCA9IFBy
b3BlcnR5Q29uZGl0aW9uOjpNYWtlTm9DaGFuZ2VzKSBjb25zdDsKICAgIGJvb2wgaXNXYXRjaGFi
bGUoCiAgICAgICAgUHJvcGVydHlDb25kaXRpb246OldhdGNoYWJpbGl0eUVmZm9ydCA9IFByb3Bl
cnR5Q29uZGl0aW9uOjpNYWtlTm9DaGFuZ2VzKSBjb25zdDsKCiAgICBib29sIHdhdGNoaW5nUmVx
dWlyZXNTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludCgpIGNvbnN0CiAgICB7CiAgICAgICAg
cmV0dXJuIGNvbmRpdGlvbigpLndhdGNoaW5nUmVxdWlyZXNTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0
Y2hwb2ludCgpOwogICAgfQogICAgYm9vbCB3YXRjaGluZ1JlcXVpcmVzUmVwbGFjZW1lbnRXYXRj
aHBvaW50KCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gY29uZGl0aW9uKCkud2F0Y2hpbmdS
ZXF1aXJlc1JlcGxhY2VtZW50V2F0Y2hwb2ludCgpOwogICAgfQoKCiAgICBib29sIGlzU3RpbGxM
aXZlKCkgY29uc3Q7CgogICAgdm9pZCB2YWxpZGF0ZVJlZmVyZW5jZXMoY29uc3QgVHJhY2tlZFJl
ZmVyZW5jZXMmKSBjb25zdDsKCiAgICBib29sIGlzVmFsaWRWYWx1ZUZvclByZXNlbmNlKEpTVmFs
dWUgdmFsdWUpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGNvbmRpdGlvbigpLmlzVmFsaWRW
YWx1ZUZvclByZXNlbmNlKHZhbHVlKTsKICAgIH0KCiAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
biBhdHRlbXB0VG9NYWtlRXF1aXZhbGVuY2VXaXRob3V0QmFycmllcigpIGNvbnN0OwoKcHJpdmF0
ZToKICAgIEpTT2JqZWN0KiBtX29iamVjdDsKICAgIFByb3BlcnR5Q29uZGl0aW9uIG1fY29uZGl0
aW9uOwp9OwoKc3RydWN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uSGFzaCB7CiAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYga2V5KSB7IHJldHVy
biBrZXkuaGFzaCgpOyB9CiAgICBzdGF0aWMgYm9vbCBlcXVhbCgKICAgICAgICBjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiYgYSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGIp
CiAgICB7CiAgICAgICAgcmV0dXJuIGEgPT0gYjsKICAgIH0KICAgIHN0YXRpYyBjb25zdCBib29s
IHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKfTsKCn0KCm5hbWVzcGFjZSBX
VEYgewoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwp0ZW1wbGF0ZTw+
IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uPiB7CiAgICB0
eXBlZGVmIEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25IYXNoIEhhc2g7Cn07Cgp0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRy
YWl0czxKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0
czxKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uPiB7IH07Cgp9CiMgMzAgIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdh
dGNocG9pbnRCYXNlLmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvV2F0Y2hwb2ludC5oIiAxCiMgMzEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmgiIDIKCgoK
bmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlIHsKICAgIHByaXZhdGU6IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0
Y2hwb2ludEJhc2UoY29uc3QgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
QmFzZSYpID0gZGVsZXRlOyBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRC
YXNlJiBvcGVyYXRvcj0oY29uc3QgQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBv
aW50QmFzZSYpID0gZGVsZXRlOzsKICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZv
aWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJl
dHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lk
KiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBk
ZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVy
biBsb2NhdGlvbjsgfSBwcml2YXRlOiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNl
bWljb2xvbkFmdGVyVGhpc01hY3JvOwoKcHVibGljOgogICAgQWRhcHRpdmVJbmZlcnJlZFByb3Bl
cnR5VmFsdWVXYXRjaHBvaW50QmFzZShjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYpOwoK
ICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXkoKSBjb25zdCB7IHJldHVybiBt
X2tleTsgfQoKICAgIHZvaWQgaW5zdGFsbCgpOwoKICAgIHZpcnR1YWwgfkFkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UoKSA9IGRlZmF1bHQ7Cgpwcm90ZWN0ZWQ6CiAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlRmlyZShjb25zdCBGaXJlRGV0YWlsJikgPSAwOwoKcHJpdmF0
ZToKICAgIGNsYXNzIFN0cnVjdHVyZVdhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiAg
ICBwdWJsaWM6CiAgICAgICAgU3RydWN0dXJlV2F0Y2hwb2ludCgpIHsgfQogICAgcHJvdGVjdGVk
OgogICAgICAgIHZvaWQgZmlyZUludGVybmFsKGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsK
ICAgIH07CiAgICBjbGFzcyBQcm9wZXJ0eVdhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7
CiAgICBwdWJsaWM6CiAgICAgICAgUHJvcGVydHlXYXRjaHBvaW50KCkgeyB9CiAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgdm9pZCBmaXJlSW50ZXJuYWwoY29uc3QgRmlyZURldGFpbCYpIG92ZXJyaWRl
OwogICAgfTsKCiAgICB2b2lkIGZpcmUoY29uc3QgRmlyZURldGFpbCYpOwoKICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uIG1fa2V5OwogICAgU3RydWN0dXJlV2F0Y2hwb2ludCBtX3N0cnVjdHVy
ZVdhdGNocG9pbnQ7CiAgICBQcm9wZXJ0eVdhdGNocG9pbnQgbV9wcm9wZXJ0eVdhdGNocG9pbnQ7
Cn07Cgp9CiMgMjggIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2
ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCIgMgoKIyAxICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgiIDEKIyAyNyAiLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIgojZGVmaW5l
IEpTQ2VsbElubGluZXNfaCAKCgoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IYW5kbGUuaCIgMQojIDMyICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGxJbmxpbmVzLmgiIDIKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaCIgMQoKI2RlZmluZSBKU0Rlc3RydWN0aWJsZU9iamVj
dF9oIAoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
IiAxCiMgNSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGli
bGVPYmplY3QuaCIgMgoKbmFtZXNwYWNlIEpTQyB7CgpzdHJ1Y3QgQ2xhc3NJbmZvOwoKY2xhc3Mg
SlNEZXN0cnVjdGlibGVPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CnB1YmxpYzoK
ICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwoKICAgIHN0YXRpYyBjb25zdCBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwoKICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
KCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0luZm87IH0KCiAgICBzdGF0aWMgcHRyZGlmZl90IGNs
YXNzSW5mb09mZnNldCgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihy
ZWludGVycHJldF9jYXN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Kj4oMHg0MDAwKS0+bV9jbGFzc0lu
Zm8pKSAtIDB4NDAwMCk7IH0KCnByb3RlY3RlZDoKICAgIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gMCkKICAg
ICAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgYnV0dGVyZmx5KQogICAgICAg
ICwgbV9jbGFzc0luZm8oc3RydWN0dXJlLT5jbGFzc0luZm8oKSkKICAgIHsKICAgICAgICAoKHZv
aWQpMCk7CiAgICB9Cgpwcml2YXRlOgogICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsK
fTsKCn0KIyAzNCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5s
aW5lcy5oIiAyCgoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9jay5oIiAxCiMgMzcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bElubGluZXMuaCIgMgoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2wuaCIgMQojIDI5ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2wuaCIKI2RlZmluZSBTeW1ib2xfaCAKCgoKCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIFN5bWJv
bCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewpwdWJsaWM6CiAgICB0eXBlZGVmIEpTQ2VsbCBCYXNl
OwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgT3ZlcnJpZGVzVG9UaGlzOwoKICAgIHBy
b3RlY3RlZDogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0
YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsK
CiAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKCiAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgIHsKICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhTeW1ib2xU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICB9CgogICAgc3RhdGljIFN5bWJvbCog
Y3JlYXRlKFZNJiB2bSkKICAgIHsKICAgICAgICBTeW1ib2wqIHN5bWJvbCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFN5bWJvbD4odm0uaGVhcCkpIFN5bWJvbCh2bSk7CiAgICAgICAgc3lt
Ym9sLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgcmV0dXJuIHN5bWJvbDsKICAgIH0KCiAg
ICBzdGF0aWMgU3ltYm9sKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogZGVzY3Jp
cHRpb24pCiAgICB7CiAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICBTdHJpbmcg
ZGVzYyA9IGRlc2NyaXB0aW9uLT52YWx1ZShleGVjKTsKICAgICAgICBTeW1ib2wqIHN5bWJvbCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbD4odm0uaGVhcCkpIFN5bWJvbCh2bSwg
ZGVzYyk7CiAgICAgICAgc3ltYm9sLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgcmV0dXJu
IHN5bWJvbDsKICAgIH0KCiAgICBzdGF0aWMgU3ltYm9sKiBjcmVhdGUoVk0mIHZtLCBTeW1ib2xJ
bXBsJiB1aWQpCiAgICB7CiAgICAgICAgU3ltYm9sKiBzeW1ib2wgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxTeW1ib2w+KHZtLmhlYXApKSBTeW1ib2wodm0sIHVpZCk7CiAgICAgICAgc3lt
Ym9sLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgcmV0dXJuIHN5bWJvbDsKICAgIH0KCiAg
ICBjb25zdCBQcml2YXRlTmFtZSYgcHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3ByaXZh
dGVOYW1lOyB9CiAgICBTdHJpbmcgZGVzY3JpcHRpdmVTdHJpbmcoKSBjb25zdDsKCiAgICBKU1Zh
bHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0
OwogICAgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIs
IEpTVmFsdWUmKSBjb25zdDsKICAgIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCopIGNvbnN0OwogICAgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0
OwoKICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZQcml2YXRlTmFtZSgpIHsgcmV0dXJuIChyZWlu
dGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFN5bWJvbCo+KDB4NDAw
MCktPm1fcHJpdmF0ZU5hbWUpKSAtIDB4NDAwMCk7IH0KCnByb3RlY3RlZDoKICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDZWxsKik7CgogICAgU3ltYm9sKFZNJik7CiAgICBTeW1ib2woVk0mLCBj
b25zdCBTdHJpbmcmKTsKICAgIFN5bWJvbChWTSYsIFN5bWJvbEltcGwmIHVpZCk7CgogICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICB7CiAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICgodm9pZCkwKTsKICAgIH0KCiAgICBQcml2YXRlTmFtZSBtX3ByaXZh
dGVOYW1lOwp9OwoKU3ltYm9sKiBhc1N5bWJvbChKU1ZhbHVlKTsKCmlubGluZSBTeW1ib2wqIGFz
U3ltYm9sKEpTVmFsdWUgdmFsdWUpCnsKICAgICgodm9pZCkwKTsKICAgIHJldHVybiBqc0Nhc3Q8
U3ltYm9sKj4odmFsdWUuYXNDZWxsKCkpOwp9Cgp9CiMgMzkgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCIgMgoKCm5hbWVzcGFjZSBKU0MgewoKaW5s
aW5lIEpTQ2VsbDo6SlNDZWxsKENyZWF0aW5nRWFybHlDZWxsVGFnKQogICAgOiBtX2NlbGxTdGF0
ZShDZWxsU3RhdGU6Ok5ld1doaXRlKQp7CiAgICAoKHZvaWQpMCk7Cn0KCmlubGluZSBKU0NlbGw6
OkpTQ2VsbChWTSYsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgOiBtX3N0cnVjdHVyZUlEKHN0
cnVjdHVyZS0+aWQoKSkKICAgICwgbV9pbmRleGluZ1R5cGUoc3RydWN0dXJlLT5pbmRleGluZ1R5
cGUoKSkKICAgICwgbV90eXBlKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpCiAgICAsIG1f
ZmxhZ3Moc3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKQogICAgLCBtX2Nl
bGxTdGF0ZShDZWxsU3RhdGU6Ok5ld1doaXRlKQp7CiAgICAoKHZvaWQpMCk7Cn0KCmlubGluZSB2
b2lkIEpTQ2VsbDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQp7CgoKCgogICAgKHZvaWQpdm07Cgog
ICAgKCh2b2lkKTApOwp9CgppbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENyZWF0aW5nRWFybHlDZWxsVGFnKQp7CgoKCgoKICAg
ICAgICBtX3N0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwogICAgICAgIG1faW5kZXhpbmdU
eXBlID0gc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKTsKICAgICAgICBtX3R5cGUgPSBzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkudHlwZSgpOwogICAgICAgIG1fZmxhZ3MgPSBzdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkuaW5saW5lVHlwZUZsYWdzKCk7CgoKCiAgICAodm9pZCl2bTsKCgogICAgKCh2b2lkKTAp
Owp9CgppbmxpbmUgSlNUeXBlIEpTQ2VsbDo6dHlwZSgpIGNvbnN0CnsKICAgIHJldHVybiBtX3R5
cGU7Cn0KCmlubGluZSBJbmRleGluZ1R5cGUgSlNDZWxsOjppbmRleGluZ1R5cGUoKSBjb25zdAp7
CiAgICByZXR1cm4gbV9pbmRleGluZ1R5cGU7Cn0KCmlubGluZSBTdHJ1Y3R1cmUqIEpTQ2VsbDo6
c3RydWN0dXJlKCkgY29uc3QKewogICAgcmV0dXJuIEhlYXA6OmhlYXAodGhpcyktPnN0cnVjdHVy
ZUlEVGFibGUoKS5nZXQobV9zdHJ1Y3R1cmVJRCk7Cn0KCmlubGluZSBTdHJ1Y3R1cmUqIEpTQ2Vs
bDo6c3RydWN0dXJlKFZNJiB2bSkgY29uc3QKewogICAgcmV0dXJuIHZtLmhlYXAuc3RydWN0dXJl
SURUYWJsZSgpLmdldChtX3N0cnVjdHVyZUlEKTsKfQoKaW5saW5lIHZvaWQgSlNDZWxsOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCnsKICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gY2VsbC0+c3RydWN0dXJlKHZpc2l0b3Iudm0oKSk7CiAgICB2aXNp
dG9yLmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcigmc3RydWN0dXJlKTsKfQoKaW5saW5lIFZNKiBK
U0NlbGw6OnZtKCkgY29uc3QKewogICAgcmV0dXJuIE1hcmtlZEJsb2NrOjpibG9ja0Zvcih0aGlz
KS0+dm0oKTsKfQoKaW5saW5lIFZNJiBFeGVjU3RhdGU6OnZtKCkgY29uc3QKewogICAgKCh2b2lk
KTApOwogICAgKCh2b2lkKTApOwogICAgcmV0dXJuICpjYWxsZWVBc1ZhbHVlKCkuYXNDZWxsKCkt
PnZtKCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiBo
ZWFwLCBzaXplX3Qgc2l6ZSkKewogICAgKCh2b2lkKTApOwogICAgKCh2b2lkKTApOwogICAgSlND
ZWxsKiByZXN1bHQgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPihoZWFwLmFsbG9jYXRlT2JqZWN0T2ZU
eXBlPFQ+KHNpemUpKTsKCgoKCiAgICByZXN1bHQtPmNsZWFyU3RydWN0dXJlKCk7CiAgICByZXR1
cm4gcmVzdWx0Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lkKiBhbGxvY2F0ZUNlbGwoSGVh
cCYgaGVhcCkKewogICAgcmV0dXJuIGFsbG9jYXRlQ2VsbDxUPihoZWFwLCBzaXplb2YoVCkpOwp9
CgppbmxpbmUgYm9vbCBpc1phcHBlZChjb25zdCBKU0NlbGwqIGNlbGwpCnsKICAgIHJldHVybiBj
ZWxsLT5pc1phcHBlZCgpOwp9CgppbmxpbmUgYm9vbCBKU0NlbGw6OmlzT2JqZWN0KCkgY29uc3QK
ewogICAgcmV0dXJuIFR5cGVJbmZvOjppc09iamVjdChtX3R5cGUpOwp9CgppbmxpbmUgYm9vbCBK
U0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKewogICAgcmV0dXJuIG1fdHlwZSA9PSBTdHJpbmdUeXBl
Owp9CgppbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3ltYm9sKCkgY29uc3QKewogICAgcmV0dXJuIG1f
dHlwZSA9PSBTeW1ib2xUeXBlOwp9CgppbmxpbmUgYm9vbCBKU0NlbGw6OmlzR2V0dGVyU2V0dGVy
KCkgY29uc3QKewogICAgcmV0dXJuIG1fdHlwZSA9PSBHZXR0ZXJTZXR0ZXJUeXBlOwp9Cgppbmxp
bmUgYm9vbCBKU0NlbGw6OmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkgY29uc3QKewogICAgcmV0dXJu
IG1fdHlwZSA9PSBDdXN0b21HZXR0ZXJTZXR0ZXJUeXBlOwp9CgppbmxpbmUgYm9vbCBKU0NlbGw6
OmlzUHJveHkoKSBjb25zdAp7CiAgICByZXR1cm4gbV90eXBlID09IEltcHVyZVByb3h5VHlwZSB8
fCBtX3R5cGUgPT0gUHVyZUZvcndhcmRpbmdQcm94eVR5cGU7Cn0KCmlubGluZSBib29sIEpTQ2Vs
bDo6aXNBUElWYWx1ZVdyYXBwZXIoKSBjb25zdAp7CiAgICByZXR1cm4gbV90eXBlID09IEFQSVZh
bHVlV3JhcHBlclR5cGU7Cn0KCmlubGluZSB2b2lkIEpTQ2VsbDo6c2V0U3RydWN0dXJlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCnsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKQoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMs
IHN0cnVjdHVyZSk7CiAgICBtX3N0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwogICAgbV9m
bGFncyA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKTsKICAgIG1fdHlw
ZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCk7CiAgICBtX2luZGV4aW5nVHlwZSA9IHN0
cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7Cn0KCmlubGluZSBjb25zdCBNZXRob2RUYWJsZSogSlND
ZWxsOjptZXRob2RUYWJsZSgpIGNvbnN0CnsKICAgIFZNJiB2bSA9ICpIZWFwOjpoZWFwKHRoaXMp
LT52bSgpOwogICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwog
ICAgaWYgKFN0cnVjdHVyZSogcm9vdFN0cnVjdHVyZSA9IHN0cnVjdHVyZS0+c3RydWN0dXJlKHZt
KSkKICAgICAgICBkbyB7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCEocm9vdFN0cnVjdHVyZSA9
PSByb290U3RydWN0dXJlLT5zdHJ1Y3R1cmUodm0pKSksIDApKSBXVEZDcmFzaCgpOyB9IHdoaWxl
ICgwKTsKCiAgICByZXR1cm4gJnN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlOwp9
CgppbmxpbmUgY29uc3QgTWV0aG9kVGFibGUqIEpTQ2VsbDo6bWV0aG9kVGFibGUoVk0mIHZtKSBj
b25zdAp7CiAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAg
ICBpZiAoU3RydWN0dXJlKiByb290U3RydWN0dXJlID0gc3RydWN0dXJlLT5zdHJ1Y3R1cmUodm0p
KQogICAgICAgIGRvIHsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoIShyb290U3RydWN0dXJlID09
IHJvb3RTdHJ1Y3R1cmUtPnN0cnVjdHVyZSh2bSkpKSwgMCkpIFdURkNyYXNoKCk7IH0gd2hpbGUg
KDApOwoKICAgIHJldHVybiAmc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGU7Cn0K
CmlubGluZSBib29sIEpTQ2VsbDo6aW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKiBpbmZvKSBjb25z
dAp7CiAgICByZXR1cm4gY2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihpbmZvKTsKfQoKaW5saW5l
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgSlNWYWx1ZSBKU0NlbGw6OmZhc3RH
ZXRPd25Qcm9wZXJ0eShWTSYgdm0sIFN0cnVjdHVyZSYgc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUg
bmFtZSkKewogICAgKCh2b2lkKTApOwogICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0
dXJlLmdldCh2bSwgbmFtZSk7CiAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAg
ICAgcmV0dXJuIGFzT2JqZWN0KHRoaXMpLT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5nZXQo
KTsKICAgIHJldHVybiBKU1ZhbHVlKCk7Cn0KCmlubGluZSBib29sIEpTQ2VsbDo6Y2FuVXNlRmFz
dEdldE93blByb3BlcnR5KGNvbnN0IFN0cnVjdHVyZSYgc3RydWN0dXJlKQp7CiAgICByZXR1cm4g
IXN0cnVjdHVyZS5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkKICAgICAgICAmJiAhc3RydWN0
dXJlLmhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMoKQogICAgICAgICYmICFzdHJ1Y3R1
cmUudHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKTsKfQoKaW5saW5lIGNv
bnN0IENsYXNzSW5mbyogSlNDZWxsOjpjbGFzc0luZm8oKSBjb25zdAp7CiAgICBNYXJrZWRCbG9j
ayogYmxvY2sgPSBNYXJrZWRCbG9jazo6YmxvY2tGb3IodGhpcyk7CiAgICBpZiAoYmxvY2stPm5l
ZWRzRGVzdHJ1Y3Rpb24oKSAmJiAhKGlubGluZVR5cGVGbGFncygpICYgU3RydWN0dXJlSXNJbW1v
cnRhbCkpCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0Kj4odGhpcyktPmNsYXNzSW5mbygpOwogICAgcmV0dXJuIHN0cnVjdHVyZSgqYmxvY2stPnZt
KCkpLT5jbGFzc0luZm8oKTsKfQoKaW5saW5lIGJvb2wgSlNDZWxsOjp0b0Jvb2xlYW4oRXhlY1N0
YXRlKiBleGVjKSBjb25zdAp7CiAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9Cb29sZWFuKCk7CiAgICByZXR1cm4g
IXN0cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSk7Cn0KCmlubGluZSBUcmlTdGF0ZSBKU0NlbGw6OnB1cmVUb0Jvb2xlYW4oKSBjb25z
dAp7CiAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
SlNTdHJpbmcqPih0aGlzKS0+dG9Cb29sZWFuKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0
YXRlOwogICAgaWYgKGlzU3ltYm9sKCkpCiAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKICAg
IHJldHVybiBNaXhlZFRyaVN0YXRlOwp9Cgp9CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNl
LmNwcCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlubGluZXMuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmgiCiNkZWZpbmUgU3RydWN0dXJlSW5saW5lc19oIAoKIyAxICIuLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oIiAxCiMg
MjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3
LmgiCiNkZWZpbmUgSlNBcnJheUJ1ZmZlclZpZXdfaCAKCgoKbmFtZXNwYWNlIEpTQyB7CiMgNTQg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmgi
CmVudW0gVHlwZWRBcnJheU1vZGUgewoKCgogICAgRmFzdFR5cGVkQXJyYXksCgoKCgoKCiAgICBP
dmVyc2l6ZVR5cGVkQXJyYXksCgoKCgoKCiAgICBXYXN0ZWZ1bFR5cGVkQXJyYXksCgoKCgoKICAg
IERhdGFWaWV3TW9kZQp9OwoKaW5saW5lIGJvb2wgaGFzQXJyYXlCdWZmZXIoVHlwZWRBcnJheU1v
ZGUgbW9kZSkKewogICAgcmV0dXJuIG1vZGUgPj0gV2FzdGVmdWxUeXBlZEFycmF5Owp9CiMgOTMg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmgi
CmNsYXNzIEpTQXJyYXlCdWZmZXJWaWV3IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewpwdWJs
aWM6CiAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBmYXN0U2l6ZUxpbWl0ID0gMTAwMDsKCiAgICBzdGF0aWMgc2l6ZV90IHNpemVPZih1
aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IGVsZW1lbnRTaXplKQogICAgewogICAgICAgIHJldHVy
biAobGVuZ3RoICogZWxlbWVudFNpemUgKyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSkKICAg
ICAgICAgICAgJiB+KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgLSAxKTsKICAgIH0KCiAgICBzdGF0
aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKICAgIHsKICAg
ICAgICAoKHZvaWQpaW5saW5lQ2FwYWNpdHkpOwogICAgICAgIHJldHVybiBzaXplb2YoSlNBcnJh
eUJ1ZmZlclZpZXcpOwogICAgfQoKcHJvdGVjdGVkOgogICAgY2xhc3MgQ29uc3RydWN0aW9uQ29u
dGV4dCB7CiAgICAgICAgcHJpdmF0ZTogQ29uc3RydWN0aW9uQ29udGV4dChjb25zdCBDb25zdHJ1
Y3Rpb25Db250ZXh0JikgPSBkZWxldGU7IENvbnN0cnVjdGlvbkNvbnRleHQmIG9wZXJhdG9yPShj
b25zdCBDb25zdHJ1Y3Rpb25Db250ZXh0JikgPSBkZWxldGU7OwoKICAgIHB1YmxpYzoKICAgICAg
ICBlbnVtIEluaXRpYWxpemF0aW9uTW9kZSB7IFplcm9GaWxsLCBEb250SW5pdGlhbGl6ZSB9OwoK
ICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3QgbGVu
Z3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0ZpbGwp
OwoKICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICAgICBWTSYsIFN0cnVjdHVy
ZSosIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LAogICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpOwoKICAgICAgICBlbnVtIERhdGFWaWV3VGFnIHsgRGF0YVZp
ZXcgfTsKICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgICAgICAgICBTdHJ1Y3R1cmUq
LCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwKICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRhVmlld1RhZyk7CgogICAgICAgIGJvb2wgb3BlcmF0b3Ih
KCkgY29uc3QgeyByZXR1cm4gIW1fc3RydWN0dXJlOyB9CgogICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KICAgICAgICB2b2lkKiB2ZWN0
b3IoKSBjb25zdCB7IHJldHVybiBtX3ZlY3RvcjsgfQogICAgICAgIHVpbnQzMl90IGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgICAgVHlwZWRBcnJheU1vZGUgbW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5KCkg
Y29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KCiAgICBwcml2YXRlOgogICAgICAgIFN0cnVj
dHVyZSogbV9zdHJ1Y3R1cmU7CiAgICAgICAgdm9pZCogbV92ZWN0b3I7CiAgICAgICAgdWludDMy
X3QgbV9sZW5ndGg7CiAgICAgICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogICAgICAgIEJ1dHRl
cmZseSogbV9idXR0ZXJmbHk7CiAgICB9OwoKICAgIEpTQXJyYXlCdWZmZXJWaWV3KFZNJiwgQ29u
c3RydWN0aW9uQ29udGV4dCYpOwogICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwoKICAgIHN0
YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwoKICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKCnB1YmxpYzoKICAgIFR5cGVkQXJyYXlNb2RlIG1vZGUoKSBjb25z
dCB7IHJldHVybiBtX21vZGU7IH0KICAgIGJvb2wgaGFzQXJyYXlCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBKU0M6Omhhc0FycmF5QnVmZmVyKG1vZGUoKSk7IH0KCiAgICBBcnJheUJ1ZmZlciogYnVm
ZmVyKCk7CiAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0
dXJuIGV4ZWMtPnZtKCkubV90eXBlZEFycmF5Q29udHJvbGxlci0+dG9KUyhleGVjLCBnbG9iYWxP
YmplY3QoKSwgYnVmZmVyKCkpOyB9CiAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gaW1w
bCgpOwogICAgYm9vbCBpc05ldXRlcmVkKCkgeyByZXR1cm4gaGFzQXJyYXlCdWZmZXIoKSAmJiAh
dmVjdG9yKCk7IH0KICAgIHZvaWQgbmV1dGVyKCk7CgogICAgdm9pZCogdmVjdG9yKCkgeyByZXR1
cm4gbV92ZWN0b3IuZ2V0KCk7IH0KCiAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KCk7CiAgICB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQoKICAgIHByb3RlY3RlZDog
c3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25z
dCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsKCiAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mVmVjdG9yKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8
cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPigweDQwMDAp
LT5tX3ZlY3RvcikpIC0gMHg0MDAwKTsgfQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkxl
bmd0aCgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJl
dF9jYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oMHg0MDAwKS0+bV9sZW5ndGgpKSAtIDB4NDAwMCk7
IH0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNb2RlKCkgeyByZXR1cm4gKHJlaW50ZXJw
cmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcq
PigweDQwMDApLT5tX21vZGUpKSAtIDB4NDAwMCk7IH0KCnByaXZhdGU6CiAgICBzdGF0aWMgdm9p
ZCBmaW5hbGl6ZShKU0NlbGwqKTsKCnByb3RlY3RlZDoKICAgIEFycmF5QnVmZmVyKiBleGlzdGlu
Z0J1ZmZlckluQnV0dGVyZmx5KCk7CgogICAgQ29weUJhcnJpZXI8Y2hhcj4gbV92ZWN0b3I7CiAg
ICB1aW50MzJfdCBtX2xlbmd0aDsKICAgIFR5cGVkQXJyYXlNb2RlIG1fbW9kZTsKfTsKCn0KCm5h
bWVzcGFjZSBXVEYgewoKdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpUeXBl
ZEFycmF5TW9kZSk7Cgp9CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCIKI2RlZmluZSBKU1ZhbHVlSW5saW5l
c19oIAoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmgiIDEKIyAzMCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5oIgojZGVmaW5lIEV4Y2VwdGlvbkhlbHBlcnNfaCAKCiMgMSAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oIiAxCiMgMjIgIi4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaCIKI2RlZmlu
ZSBFcnJvckluc3RhbmNlX2ggCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oIiAxCiMgMzEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIgojZGVmaW5lIEludGVycHJldGVyX2ggCgojIDEg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaCIgMQojIDM0ICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCIgMgoK
CgoKCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlk
ZXIuaCIgMQojIDQxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
YWNrQWxpZ25tZW50LmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RhY2tBbGlnbm1lbnQuaCIKI2RlZmluZSBTdGFja0FsaWdubWVudF9oIAoKCiMgMSAiLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaCIgMQojIDMxICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0FsaWdubWVudC5oIiAyCgoK
bmFtZXNwYWNlIEpTQyB7CgoKaW5saW5lIHVuc2lnbmVkIHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSB7
IHJldHVybiAxNjsgfQoKaW5saW5lIHVuc2lnbmVkIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkK
ewogICAgcmV0dXJuIHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSAvIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSk7Cn0KCgoKaW5saW5lIHVuc2lnbmVkIHJvdW5kQXJndW1lbnRDb3VudFRvQWxpZ25GcmFtZSh1
bnNpZ25lZCBhcmd1bWVudENvdW50KQp7CiAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIGFyZ3VtZW50Q291bnQgKyBKU1N0YWNrOjpD
YWxsRnJhbWVIZWFkZXJTaXplKSAtIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7Cn0KCgoK
aW5saW5lIHVuc2lnbmVkIHJvdW5kTG9jYWxSZWdpc3RlckNvdW50Rm9yRnJhbWVQb2ludGVyT2Zm
c2V0KHVuc2lnbmVkIGxvY2FsUmVnaXN0ZXJDb3VudCkKewogICAgcmV0dXJuIFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBsb2NhbFJlZ2lzdGVyQ291
bnQgKyBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSkgLSBKU1N0YWNrOjpDYWxsZXJGcmFt
ZUFuZFBDU2l6ZTsKfQoKaW5saW5lIHVuc2lnbmVkIGxvZ1N0YWNrQWxpZ25tZW50UmVnaXN0ZXJz
KCkKewogICAgcmV0dXJuIFdURjo6ZmFzdExvZzIoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSk7
Cn0KCn0KIyA0MiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgiIDIKCgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oIiAxCiMgMjggIi4uLy4uL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIgoj
ZGVmaW5lIFN0cmluZ0J1aWxkZXJfaCAKCgoKCgpuYW1lc3BhY2UgV1RGIHsKCmNsYXNzIFN0cmlu
Z0J1aWxkZXIgewoKICAgIHByaXZhdGU6IFN0cmluZ0J1aWxkZXIoY29uc3QgU3RyaW5nQnVpbGRl
ciYpID0gZGVsZXRlOyBTdHJpbmdCdWlsZGVyJiBvcGVyYXRvcj0oY29uc3QgU3RyaW5nQnVpbGRl
ciYpID0gZGVsZXRlOzsKCnB1YmxpYzoKICAgIFN0cmluZ0J1aWxkZXIoKQogICAgICAgIDogbV9s
ZW5ndGgoMCkKICAgICAgICAsIG1faXM4Qml0KHRydWUpCiAgICAgICAgLCBtX2J1ZmZlckNoYXJh
Y3RlcnM4KDApCiAgICB7CiAgICB9CgogICAgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNp
Z25lZCk7CiAgICB2b2lkIGFwcGVuZChjb25zdCBMQ2hhciosIHVuc2lnbmVkKTsKCiAgICBpbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGFwcGVuZChjb25zdCBj
aGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsgfQoKICAgIHZvaWQgYXBwZW5k
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgewogICAgICAgIGlmICghc3RyaW5nLmxlbmd0aCgp
KQogICAgICAgICAgICByZXR1cm47CgoKCiAgICAgICAgaWYgKCFtX2xlbmd0aCAmJiAhbV9idWZm
ZXIpIHsKICAgICAgICAgICAgbV9zdHJpbmcgPSBzdHJpbmc7CiAgICAgICAgICAgIG1fbGVuZ3Ro
ID0gc3RyaW5nLmxlbmd0aCgpOwogICAgICAgICAgICBtX2lzOEJpdCA9IG1fc3RyaW5nLmlzOEJp
dCgpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RyaW5nLmlz
OEJpdCgpKQogICAgICAgICAgICBhcHBlbmQoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5s
ZW5ndGgoKSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBhcHBlbmQoc3RyaW5nLmNoYXJhY3Rl
cnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOwogICAgfQoKICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0
cmluZ0J1aWxkZXImIG90aGVyKQogICAgewogICAgICAgIGlmICghb3RoZXIubV9sZW5ndGgpCiAg
ICAgICAgICAgIHJldHVybjsKCgoKICAgICAgICBpZiAoIW1fbGVuZ3RoICYmICFtX2J1ZmZlciAm
JiAhb3RoZXIubV9zdHJpbmcuaXNOdWxsKCkpIHsKICAgICAgICAgICAgbV9zdHJpbmcgPSBvdGhl
ci5tX3N0cmluZzsKICAgICAgICAgICAgbV9sZW5ndGggPSBvdGhlci5tX2xlbmd0aDsKICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKG90aGVyLmlzOEJpdCgpKQogICAg
ICAgICAgICBhcHBlbmQob3RoZXIuY2hhcmFjdGVyczgoKSwgb3RoZXIubV9sZW5ndGgpOwogICAg
ICAgIGVsc2UKICAgICAgICAgICAgYXBwZW5kKG90aGVyLmNoYXJhY3RlcnMxNigpLCBvdGhlci5t
X2xlbmd0aCk7CiAgICB9CgogICAgdm9pZCBhcHBlbmQoU3RyaW5nVmlldyBzdHJpbmdWaWV3KQog
ICAgewogICAgICAgIGlmIChzdHJpbmdWaWV3LmlzOEJpdCgpKQogICAgICAgICAgICBhcHBlbmQo
c3RyaW5nVmlldy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmdWaWV3Lmxlbmd0aCgpKTsKICAgICAgICBl
bHNlCiAgICAgICAgICAgIGFwcGVuZChzdHJpbmdWaWV3LmNoYXJhY3RlcnMxNigpLCBzdHJpbmdW
aWV3Lmxlbmd0aCgpKTsKICAgIH0KCiAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmlu
ZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICB7CiAgICAgICAgaWYgKCFz
dHJpbmcubGVuZ3RoKCkpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgaWYgKChvZmZzZXQg
KyBsZW5ndGgpID4gc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAg
IGlmIChzdHJpbmcuaXM4Qml0KCkpCiAgICAgICAgICAgIGFwcGVuZChzdHJpbmcuY2hhcmFjdGVy
czgoKSArIG9mZnNldCwgbGVuZ3RoKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGFwcGVuZChz
dHJpbmcuY2hhcmFjdGVyczE2KCkgKyBvZmZzZXQsIGxlbmd0aCk7CiAgICB9CgogICAgdm9pZCBh
cHBlbmQoY29uc3QgY2hhciogY2hhcmFjdGVycykKICAgIHsKICAgICAgICBpZiAoY2hhcmFjdGVy
cykKICAgICAgICAgICAgYXBwZW5kKGNoYXJhY3RlcnMsIHN0cmxlbihjaGFyYWN0ZXJzKSk7CiAg
ICB9CgogICAgdm9pZCBhcHBlbmQoVUNoYXIgYykKICAgIHsKICAgICAgICBpZiAobV9idWZmZXIg
JiYgbV9sZW5ndGggPCBtX2J1ZmZlci0+bGVuZ3RoKCkgJiYgbV9zdHJpbmcuaXNOdWxsKCkpIHsK
ICAgICAgICAgICAgaWYgKCFtX2lzOEJpdCkgewogICAgICAgICAgICAgICAgbV9idWZmZXJDaGFy
YWN0ZXJzMTZbbV9sZW5ndGgrK10gPSBjOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICB9CgogICAgICAgICAgICBpZiAoIShjICYgfjB4ZmYpKSB7CiAgICAgICAgICAgICAgICBt
X2J1ZmZlckNoYXJhY3RlcnM4W21fbGVuZ3RoKytdID0gc3RhdGljX2Nhc3Q8TENoYXI+KGMpOwog
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGFw
cGVuZCgmYywgMSk7CiAgICB9CgogICAgdm9pZCBhcHBlbmQoTENoYXIgYykKICAgIHsKICAgICAg
ICBpZiAobV9idWZmZXIgJiYgbV9sZW5ndGggPCBtX2J1ZmZlci0+bGVuZ3RoKCkgJiYgbV9zdHJp
bmcuaXNOdWxsKCkpIHsKICAgICAgICAgICAgaWYgKG1faXM4Qml0KQogICAgICAgICAgICAgICAg
bV9idWZmZXJDaGFyYWN0ZXJzOFttX2xlbmd0aCsrXSA9IGM7CiAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgIG1fYnVmZmVyQ2hhcmFjdGVyczE2W21fbGVuZ3RoKytdID0gYzsKICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgYXBwZW5kKCZjLCAxKTsKICAgIH0KCiAgICB2b2lkIGFwcGVu
ZChjaGFyIGMpCiAgICB7CiAgICAgICAgYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPihjKSk7CiAg
ICB9CgogICAgdm9pZCBhcHBlbmQoVUNoYXIzMiBjKQogICAgewogICAgICAgIGlmICgoKHVpbnQz
Ml90KShjKTw9MHhmZmZmKSkgewogICAgICAgICAgICBhcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+
KGMpKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBhcHBlbmQoKFVDaGFy
KSgoKGMpPj4xMCkrMHhkN2MwKSk7CiAgICAgICAgYXBwZW5kKChVQ2hhcikoKChjKSYweDNmZil8
MHhkYzAwKSk7CiAgICB9CgogICAgdm9pZCBhcHBlbmRRdW90ZWRKU09OU3RyaW5nKGNvbnN0IFN0
cmluZyYpOwoKICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KICAgIGlubGlu
ZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgYXBwZW5kTGl0ZXJhbChj
b25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkgeyBhcHBlbmQoY2hhcmFj
dGVycywgY2hhcmFjdGVyc0NvdW50IC0gMSk7IH0KCiAgICB2b2lkIGFwcGVuZE51bWJlcihpbnQp
OwogICAgdm9pZCBhcHBlbmROdW1iZXIodW5zaWduZWQgaW50KTsKICAgIHZvaWQgYXBwZW5kTnVt
YmVyKGxvbmcpOwogICAgdm9pZCBhcHBlbmROdW1iZXIodW5zaWduZWQgbG9uZyk7CiAgICB2b2lk
IGFwcGVuZE51bWJlcihsb25nIGxvbmcpOwogICAgdm9pZCBhcHBlbmROdW1iZXIodW5zaWduZWQg
bG9uZyBsb25nKTsKICAgIHZvaWQgYXBwZW5kTnVtYmVyKGRvdWJsZSwgdW5zaWduZWQgcHJlY2lz
aW9uID0gNiwgVHJhaWxpbmdaZXJvc1RydW5jYXRpbmdQb2xpY3kgPSBUcnVuY2F0ZVRyYWlsaW5n
WmVyb3MpOwogICAgdm9pZCBhcHBlbmRFQ01BU2NyaXB0TnVtYmVyKGRvdWJsZSk7CiAgICB2b2lk
IGFwcGVuZEZpeGVkV2lkdGhOdW1iZXIoZG91YmxlLCB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzKTsK
CiAgICBTdHJpbmcgdG9TdHJpbmcoKQogICAgewogICAgICAgIHNocmlua1RvRml0KCk7CiAgICAg
ICAgaWYgKG1fc3RyaW5nLmlzTnVsbCgpKQogICAgICAgICAgICByZWlmeVN0cmluZygpOwogICAg
ICAgIHJldHVybiBtX3N0cmluZzsKICAgIH0KCiAgICBjb25zdCBTdHJpbmcmIHRvU3RyaW5nUHJl
c2VydmVDYXBhY2l0eSgpIGNvbnN0CiAgICB7CiAgICAgICAgaWYgKG1fc3RyaW5nLmlzTnVsbCgp
KQogICAgICAgICAgICByZWlmeVN0cmluZygpOwogICAgICAgIHJldHVybiBtX3N0cmluZzsKICAg
IH0KCiAgICBBdG9taWNTdHJpbmcgdG9BdG9taWNTdHJpbmcoKSBjb25zdAogICAgewogICAgICAg
IGlmICghbV9sZW5ndGgpCiAgICAgICAgICAgIHJldHVybiBlbXB0eUF0b207CgoKICAgICAgICBp
ZiAoY2FuU2hyaW5rKCkpIHsKICAgICAgICAgICAgaWYgKGlzOEJpdCgpKQogICAgICAgICAgICAg
ICAgcmV0dXJuIEF0b21pY1N0cmluZyhjaGFyYWN0ZXJzOCgpLCBsZW5ndGgoKSk7CiAgICAgICAg
ICAgIHJldHVybiBBdG9taWNTdHJpbmcoY2hhcmFjdGVyczE2KCksIGxlbmd0aCgpKTsKICAgICAg
ICB9CgogICAgICAgIGlmICghbV9zdHJpbmcuaXNOdWxsKCkpCiAgICAgICAgICAgIHJldHVybiBB
dG9taWNTdHJpbmcobV9zdHJpbmcpOwoKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJu
IEF0b21pY1N0cmluZyhtX2J1ZmZlci5nZXQoKSwgMCwgbV9sZW5ndGgpOwogICAgfQoKICAgIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fbGVuZ3RoOwogICAg
fQoKICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2xlbmd0aDsgfQoKICAgIHZv
aWQgcmVzZXJ2ZUNhcGFjaXR5KHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKCiAgICB1bnNpZ25lZCBj
YXBhY2l0eSgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXIt
Pmxlbmd0aCgpIDogbV9sZW5ndGg7CiAgICB9CgogICAgdm9pZCByZXNpemUodW5zaWduZWQgbmV3
U2l6ZSk7CgogICAgYm9vbCBjYW5TaHJpbmsoKSBjb25zdDsKCiAgICB2b2lkIHNocmlua1RvRml0
KCk7CgogICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25zdAogICAgewogICAgICAg
ICgodm9pZCkwKTsKICAgICAgICBpZiAobV9pczhCaXQpCiAgICAgICAgICAgIHJldHVybiBjaGFy
YWN0ZXJzOCgpW2ldOwogICAgICAgIHJldHVybiBjaGFyYWN0ZXJzMTYoKVtpXTsKICAgIH0KCiAg
ICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25zdAogICAgewogICAgICAgICgodm9pZCkw
KTsKICAgICAgICBpZiAoIW1fbGVuZ3RoKQogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBp
ZiAoIW1fc3RyaW5nLmlzTnVsbCgpKQogICAgICAgICAgICByZXR1cm4gbV9zdHJpbmcuY2hhcmFj
dGVyczgoKTsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIG1fYnVmZmVyLT5jaGFy
YWN0ZXJzOCgpOwogICAgfQoKICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYoKSBjb25zdAog
ICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICBpZiAoIW1fbGVuZ3RoKQogICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICBpZiAoIW1fc3RyaW5nLmlzTnVsbCgpKQogICAgICAgICAgICBy
ZXR1cm4gbV9zdHJpbmcuY2hhcmFjdGVyczE2KCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAg
IHJldHVybiBtX2J1ZmZlci0+Y2hhcmFjdGVyczE2KCk7CiAgICB9CgogICAgYm9vbCBpczhCaXQo
KSBjb25zdCB7IHJldHVybiBtX2lzOEJpdDsgfQoKICAgIHZvaWQgY2xlYXIoKQogICAgewogICAg
ICAgIG1fbGVuZ3RoID0gMDsKICAgICAgICBtX3N0cmluZyA9IFN0cmluZygpOwogICAgICAgIG1f
YnVmZmVyID0gbnVsbHB0cjsKICAgICAgICBtX2J1ZmZlckNoYXJhY3RlcnM4ID0gMDsKICAgICAg
ICBtX2lzOEJpdCA9IHRydWU7CiAgICB9CgogICAgdm9pZCBzd2FwKFN0cmluZ0J1aWxkZXImIHN0
cmluZ0J1aWxkZXIpCiAgICB7CiAgICAgICAgc3RkOjpzd2FwKG1fbGVuZ3RoLCBzdHJpbmdCdWls
ZGVyLm1fbGVuZ3RoKTsKICAgICAgICBtX3N0cmluZy5zd2FwKHN0cmluZ0J1aWxkZXIubV9zdHJp
bmcpOwogICAgICAgIG1fYnVmZmVyLnN3YXAoc3RyaW5nQnVpbGRlci5tX2J1ZmZlcik7CiAgICAg
ICAgc3RkOjpzd2FwKG1faXM4Qml0LCBzdHJpbmdCdWlsZGVyLm1faXM4Qml0KTsKICAgICAgICBz
dGQ6OnN3YXAobV9idWZmZXJDaGFyYWN0ZXJzOCwgc3RyaW5nQnVpbGRlci5tX2J1ZmZlckNoYXJh
Y3RlcnM4KTsKICAgIH0KCnByaXZhdGU6CiAgICB2b2lkIGFsbG9jYXRlQnVmZmVyKGNvbnN0IExD
aGFyKiBjdXJyZW50Q2hhcmFjdGVycywgdW5zaWduZWQgcmVxdWlyZWRMZW5ndGgpOwogICAgdm9p
ZCBhbGxvY2F0ZUJ1ZmZlcihjb25zdCBVQ2hhciogY3VycmVudENoYXJhY3RlcnMsIHVuc2lnbmVk
IHJlcXVpcmVkTGVuZ3RoKTsKICAgIHZvaWQgYWxsb2NhdGVCdWZmZXJVcENvbnZlcnQoY29uc3Qg
TENoYXIqIGN1cnJlbnRDaGFyYWN0ZXJzLCB1bnNpZ25lZCByZXF1aXJlZExlbmd0aCk7CiAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiAgICB2b2lkIHJlYWxsb2NhdGVCdWZmZXIodW5z
aWduZWQgcmVxdWlyZWRMZW5ndGgpOwogICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgog
ICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgQ2hhclR5cGUqIGFw
cGVuZFVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZT4KICAgIENoYXJUeXBlKiBhcHBlbmRVbmluaXRpYWxpemVkU2xvdyh1bnNpZ25l
ZCBsZW5ndGgpOwogICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogICAgaW5saW5lIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgQ2hhclR5cGUgKiBnZXRCdWZmZXJDaGFy
YWN0ZXJzKCk7CiAgICB2b2lkIHJlaWZ5U3RyaW5nKCkgY29uc3Q7CgogICAgdW5zaWduZWQgbV9s
ZW5ndGg7CiAgICBtdXRhYmxlIFN0cmluZyBtX3N0cmluZzsKICAgIFJlZlB0cjxTdHJpbmdJbXBs
PiBtX2J1ZmZlcjsKICAgIGJvb2wgbV9pczhCaXQ7CiAgICB1bmlvbiB7CiAgICAgICAgTENoYXIq
IG1fYnVmZmVyQ2hhcmFjdGVyczg7CiAgICAgICAgVUNoYXIqIG1fYnVmZmVyQ2hhcmFjdGVyczE2
OwogICAgfTsKfTsKCnRlbXBsYXRlIDw+CmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIExDaGFyKiBTdHJpbmdCdWlsZGVyOjpnZXRCdWZmZXJDaGFyYWN0ZXJzPExDaGFy
PigpCnsKICAgICgodm9pZCkwKTsKICAgIHJldHVybiBtX2J1ZmZlckNoYXJhY3RlcnM4Owp9Cgp0
ZW1wbGF0ZSA8PgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBVQ2hh
ciogU3RyaW5nQnVpbGRlcjo6Z2V0QnVmZmVyQ2hhcmFjdGVyczxVQ2hhcj4oKQp7CiAgICAoKHZv
aWQpMCk7CiAgICByZXR1cm4gbV9idWZmZXJDaGFyYWN0ZXJzMTY7Cn0KCnRlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyVHlwZT4KYm9vbCBlcXVhbChjb25zdCBTdHJpbmdCdWlsZGVyJiBzLCBjb25zdCBD
aGFyVHlwZSogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpCnsKICAgIGlmIChzLmxlbmd0aCgpICE9
IGxlbmd0aCkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgaWYgKHMuaXM4Qml0KCkpCiAgICAg
ICAgcmV0dXJuIGVxdWFsKHMuY2hhcmFjdGVyczgoKSwgYnVmZmVyLCBsZW5ndGgpOwoKICAgIHJl
dHVybiBlcXVhbChzLmNoYXJhY3RlcnMxNigpLCBidWZmZXIsIGxlbmd0aCk7Cn0KCnRlbXBsYXRl
IDx0eXBlbmFtZSBTdHJpbmdUeXBlPgpib29sIGVxdWFsKGNvbnN0IFN0cmluZ0J1aWxkZXImIGEs
IGNvbnN0IFN0cmluZ1R5cGUmIGIpCnsKICAgIGlmIChhLmxlbmd0aCgpICE9IGIubGVuZ3RoKCkp
CiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIGlmICghYS5sZW5ndGgoKSkKICAgICAgICByZXR1
cm4gdHJ1ZTsKCiAgICBpZiAoYS5pczhCaXQoKSkgewogICAgICAgIGlmIChiLmlzOEJpdCgpKQog
ICAgICAgICAgICByZXR1cm4gZXF1YWwoYS5jaGFyYWN0ZXJzOCgpLCBiLmNoYXJhY3RlcnM4KCks
IGEubGVuZ3RoKCkpOwogICAgICAgIHJldHVybiBlcXVhbChhLmNoYXJhY3RlcnM4KCksIGIuY2hh
cmFjdGVyczE2KCksIGEubGVuZ3RoKCkpOwogICAgfQoKICAgIGlmIChiLmlzOEJpdCgpKQogICAg
ICAgIHJldHVybiBlcXVhbChhLmNoYXJhY3RlcnMxNigpLCBiLmNoYXJhY3RlcnM4KCksIGEubGVu
Z3RoKCkpOwogICAgcmV0dXJuIGVxdWFsKGEuY2hhcmFjdGVyczE2KCksIGIuY2hhcmFjdGVyczE2
KCksIGEubGVuZ3RoKCkpOwp9CgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZ0J1
aWxkZXImIGEsIGNvbnN0IFN0cmluZ0J1aWxkZXImIGIpIHsgcmV0dXJuIGVxdWFsKGEsIGIpOyB9
CmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nQnVpbGRlciYgYSwgY29uc3QgU3Ry
aW5nQnVpbGRlciYgYikgeyByZXR1cm4gIWVxdWFsKGEsIGIpOyB9CmlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgU3RyaW5nQnVpbGRlciYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBl
cXVhbChhLCBiKTsgfQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZ0J1aWxkZXIm
IGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKGEsIGIpOyB9CmlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmdCdWlsZGVyJiBiKSB7IHJl
dHVybiBlcXVhbChiLCBhKTsgfQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYg
YSwgY29uc3QgU3RyaW5nQnVpbGRlciYgYikgeyByZXR1cm4gIWVxdWFsKGIsIGEpOyB9Cgp9Cgp1
c2luZyBXVEY6OlN0cmluZ0J1aWxkZXI7CiMgNDUgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIiAyCgpuYW1lc3BhY2UgSlNDIHsKCiAgICBjbGFz
cyBDb2RlQmxvY2s7CiAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZTsKICAgIGNsYXNzIEV4ZWN1dGFi
bGVCYXNlOwogICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgY2xhc3MgVk07CiAgICBj
bGFzcyBKU0Z1bmN0aW9uOwogICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICBjbGFzcyBKU01v
ZHVsZUVudmlyb25tZW50OwogICAgY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CiAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKICAgIGNsYXNz
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOwogICAgY2xhc3MgUmVnaXN0ZXI7CiAgICBjbGFzcyBK
U1Njb3BlOwogICAgc3RydWN0IENhbGxGcmFtZUNsb3N1cmU7CiAgICBzdHJ1Y3QgSGFuZGxlcklu
Zm87CiAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAgICBzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7Cgog
ICAgZW51bSBVbndpbmRTdGFydCB7IFVud2luZEZyb21DdXJyZW50RnJhbWUsIFVud2luZEZyb21D
YWxsZXJGcmFtZSB9OwoKICAgIGVudW0gRGVidWdIb29rSUQgewogICAgICAgIFdpbGxFeGVjdXRl
UHJvZ3JhbSwKICAgICAgICBEaWRFeGVjdXRlUHJvZ3JhbSwKICAgICAgICBEaWRFbnRlckNhbGxG
cmFtZSwKICAgICAgICBEaWRSZWFjaEJyZWFrcG9pbnQsCiAgICAgICAgV2lsbExlYXZlQ2FsbEZy
YW1lLAogICAgICAgIFdpbGxFeGVjdXRlU3RhdGVtZW50CiAgICB9OwoKICAgIGVudW0gU3RhY2tG
cmFtZUNvZGVUeXBlIHsKICAgICAgICBTdGFja0ZyYW1lR2xvYmFsQ29kZSwKICAgICAgICBTdGFj
a0ZyYW1lRXZhbENvZGUsCiAgICAgICAgU3RhY2tGcmFtZU1vZHVsZUNvZGUsCiAgICAgICAgU3Rh
Y2tGcmFtZUZ1bmN0aW9uQ29kZSwKICAgICAgICBTdGFja0ZyYW1lTmF0aXZlQ29kZQogICAgfTsK
CiAgICBzdHJ1Y3QgU3RhY2tGcmFtZSB7CiAgICAgICAgU3Ryb25nPEpTT2JqZWN0PiBjYWxsZWU7
CiAgICAgICAgU3RhY2tGcmFtZUNvZGVUeXBlIGNvZGVUeXBlOwogICAgICAgIFN0cm9uZzxTY3Jp
cHRFeGVjdXRhYmxlPiBleGVjdXRhYmxlOwogICAgICAgIFN0cm9uZzxVbmxpbmtlZENvZGVCbG9j
az4gY29kZUJsb2NrOwogICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gY29kZTsKICAgICAg
ICBpbnQgbGluZU9mZnNldDsKICAgICAgICB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQ7
CiAgICAgICAgdW5zaWduZWQgY2hhcmFjdGVyT2Zmc2V0OwogICAgICAgIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0OwogICAgICAgIFN0cmluZyBzb3VyY2VVUkw7CiAgICAgICAgaW50cHRyX3Qgc291
cmNlSUQ7CiAgICAgICAgU3RyaW5nIHRvU3RyaW5nKENhbGxGcmFtZSopOwogICAgICAgIFN0cmlu
ZyBmcmllbmRseVNvdXJjZVVSTCgpIGNvbnN0OwogICAgICAgIFN0cmluZyBmcmllbmRseUZ1bmN0
aW9uTmFtZShDYWxsRnJhbWUqKSBjb25zdDsKICAgICAgICB2b2lkIGNvbXB1dGVMaW5lQW5kQ29s
dW1uKHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKTsKCiAgICBwcml2YXRlOgogICAg
ICAgIHZvaWQgZXhwcmVzc2lvbkluZm8oaW50JiBkaXZvdCwgaW50JiBzdGFydE9mZnNldCwgaW50
JiBlbmRPZmZzZXQsIHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKTsKICAgIH07Cgog
ICAgY2xhc3MgU3VzcGVuZEV4Y2VwdGlvblNjb3BlIHsKICAgIHB1YmxpYzoKICAgICAgICBTdXNw
ZW5kRXhjZXB0aW9uU2NvcGUoVk0qIHZtKQogICAgICAgICAgICA6IG1fdm0odm0pCiAgICAgICAg
ewogICAgICAgICAgICBvbGRFeGNlcHRpb24gPSB2bS0+ZXhjZXB0aW9uKCk7CiAgICAgICAgICAg
IHZtLT5jbGVhckV4Y2VwdGlvbigpOwogICAgICAgIH0KICAgICAgICB+U3VzcGVuZEV4Y2VwdGlv
blNjb3BlKCkKICAgICAgICB7CiAgICAgICAgICAgIG1fdm0tPnJlc3RvcmVQcmV2aW91c0V4Y2Vw
dGlvbihvbGRFeGNlcHRpb24pOwogICAgICAgIH0KICAgIHByaXZhdGU6CiAgICAgICAgRXhjZXB0
aW9uKiBvbGRFeGNlcHRpb247CiAgICAgICAgVk0qIG1fdm07CiAgICB9OwoKICAgIGNsYXNzIFRv
cENhbGxGcmFtZVNldHRlciB7CiAgICBwdWJsaWM6CiAgICAgICAgVG9wQ2FsbEZyYW1lU2V0dGVy
KFZNJiBjdXJyZW50Vk0sIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICAgICA6IHZtKGN1
cnJlbnRWTSkKICAgICAgICAgICAgLCBvbGRDYWxsRnJhbWUoY3VycmVudFZNLnRvcENhbGxGcmFt
ZSkKICAgICAgICB7CiAgICAgICAgICAgIGN1cnJlbnRWTS50b3BDYWxsRnJhbWUgPSBjYWxsRnJh
bWU7CiAgICAgICAgfQoKICAgICAgICB+VG9wQ2FsbEZyYW1lU2V0dGVyKCkKICAgICAgICB7CiAg
ICAgICAgICAgIHZtLnRvcENhbGxGcmFtZSA9IG9sZENhbGxGcmFtZTsKICAgICAgICB9CiAgICBw
cml2YXRlOgogICAgICAgIFZNJiB2bTsKICAgICAgICBDYWxsRnJhbWUqIG9sZENhbGxGcmFtZTsK
ICAgIH07CgogICAgY2xhc3MgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHsKICAgIHB1YmxpYzoKICAg
ICAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIoVk0qIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICB7CiAgICAg
ICAgICAgICgodm9pZCkwKTsKICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICAoKHZv
aWQpMCk7CiAgICAgICAgICAgIHZtLT50b3BDYWxsRnJhbWUgPSBjYWxsRnJhbWU7CiAgICAgICAg
fQogICAgfTsKCiAgICBjbGFzcyBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB7CiAg
ICBwdWJsaWM6CiAgICAgICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f
KSkgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyV2l0aFJlc3RvcmUoVk0qIHZtLCBWTUVudHJ5RnJhbWUq
IHZtRW50cnlGcmFtZSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgICAgICAgIDogbV92bSh2
bSkKICAgICAgICB7CiAgICAgICAgICAgICgodm9pZCkwKTsKICAgICAgICAgICAgKCh2b2lkKTAp
OwogICAgICAgICAgICBtX3NhdmVkVG9wVk1FbnRyeUZyYW1lID0gdm0tPnRvcFZNRW50cnlGcmFt
ZTsKICAgICAgICAgICAgbV9zYXZlZFRvcENhbGxGcmFtZSA9IHZtLT50b3BDYWxsRnJhbWU7CiAg
ICAgICAgICAgIHZtLT50b3BWTUVudHJ5RnJhbWUgPSB2bUVudHJ5RnJhbWU7CiAgICAgICAgICAg
IHZtLT50b3BDYWxsRnJhbWUgPSBjYWxsRnJhbWU7CiAgICAgICAgfQoKICAgICAgICBpbmxpbmUg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB+TmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
V2l0aFJlc3RvcmUoKQogICAgICAgIHsKICAgICAgICAgICAgbV92bS0+dG9wVk1FbnRyeUZyYW1l
ID0gbV9zYXZlZFRvcFZNRW50cnlGcmFtZTsKICAgICAgICAgICAgbV92bS0+dG9wQ2FsbEZyYW1l
ID0gbV9zYXZlZFRvcENhbGxGcmFtZTsKICAgICAgICB9CgogICAgcHJpdmF0ZToKICAgICAgICBW
TSogbV92bTsKICAgICAgICBWTUVudHJ5RnJhbWUqIG1fc2F2ZWRUb3BWTUVudHJ5RnJhbWU7CiAg
ICAgICAgQ2FsbEZyYW1lKiBtX3NhdmVkVG9wQ2FsbEZyYW1lOwogICAgfTsKCiAgICBjbGFzcyBJ
bnRlcnByZXRlciB7CiAgICAgICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2
b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCog
cCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJu
IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHAp
IHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXpl
KSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0
ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhz
aXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxv
Y2F0aW9uOyB9IHByaXZhdGU6IHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNv
bG9uQWZ0ZXJUaGlzTWFjcm87CiAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7CiAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICBmcmllbmQgY2xh
c3MgSklUOwogICAgICAgIGZyaWVuZCBjbGFzcyBWTTsKCiAgICBwdWJsaWM6CiAgICAgICAgSW50
ZXJwcmV0ZXIoVk0gJik7CiAgICAgICAgfkludGVycHJldGVyKCk7CgogICAgICAgIHZvaWQgaW5p
dGlhbGl6ZSgpOwoKICAgICAgICBKU1N0YWNrJiBzdGFjaygpIHsgcmV0dXJuIG1fc3RhY2s7IH0K
CiAgICAgICAgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCBpZCkKICAgICAgICB7CiAgICAgICAg
ICAgICgodm9pZCkwKTsKCiAgICAgICAgICAgIHJldHVybiBtX29wY29kZVRhYmxlW2lkXTsKCgoK
ICAgICAgICB9CgogICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKE9wY29kZSBvcGNvZGUpCiAg
ICAgICAgewogICAgICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgICAgICAoKHZvaWQpMCk7CiAg
ICAgICAgICAgIHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CgoKCiAgICAgICAg
fQoKICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CgogICAgICAgIEpTVmFsdWUgZXhlY3V0
ZShQcm9ncmFtRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIEpTT2JqZWN0KiB0aGlzT2JqKTsKICAg
ICAgICBKU1ZhbHVlIGV4ZWN1dGVDYWxsKENhbGxGcmFtZSosIEpTT2JqZWN0KiBmdW5jdGlvbiwg
Q2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xp
c3QmKTsKICAgICAgICBKU09iamVjdCogZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJhbWUqLCBKU09i
amVjdCogZnVuY3Rpb24sIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25z
dCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQpOwogICAgICAgIEpTVmFsdWUgZXhlY3V0ZShF
dmFsRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1Njb3BlKik7
CiAgICAgICAgSlNWYWx1ZSBleGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZy
YW1lKiwgSlNNb2R1bGVFbnZpcm9ubWVudCopOwoKICAgICAgICB2b2lkIGdldEFyZ3VtZW50c0Rh
dGEoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiomLCBwdHJkaWZmX3QmIGZpcnN0UGFyYW1ldGVySW5k
ZXgsIFJlZ2lzdGVyKiYgYXJndiwgaW50JiBhcmdjKTsKCiAgICAgICAgX19hdHRyaWJ1dGVfXygo
X19ub2lubGluZV9fKSkgSGFuZGxlckluZm8qIHVud2luZChWTSYsIENhbGxGcmFtZSomLCBFeGNl
cHRpb24qLCBVbndpbmRTdGFydCk7CiAgICAgICAgdm9pZCBub3RpZnlEZWJ1Z2dlck9mRXhjZXB0
aW9uVG9CZVRocm93bihDYWxsRnJhbWUqLCBFeGNlcHRpb24qKTsKICAgICAgICBfX2F0dHJpYnV0
ZV9fKChfX25vaW5saW5lX18pKSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERlYnVnSG9va0lEKTsK
ICAgICAgICBKU1N0cmluZyogc3RhY2tUcmFjZUFzU3RyaW5nKEV4ZWNTdGF0ZSosIFZlY3RvcjxT
dGFja0ZyYW1lPik7CgogICAgICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RXaXRo
RXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgY2FsbEVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7CiAgICAgICAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIGNvbnN0cnVjdFdpdGhOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSop
OwogICAgICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjYWxsTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqKTsKCiAgICAgICAgdm9pZCBkdW1wQ2FsbEZyYW1lKENhbGxGcmFtZSopOwoK
ICAgICAgICB2b2lkIGdldFN0YWNrVHJhY2UoVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1bHRzLCBz
aXplX3QgbWF4U3RhY2tTaXplID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7
CgogICAgcHJpdmF0ZToKICAgICAgICBlbnVtIEV4ZWN1dGlvbkZsYWcgeyBOb3JtYWwsIEluaXRp
YWxpemVBbmRSZXR1cm4gfTsKCiAgICAgICAgQ2FsbEZyYW1lQ2xvc3VyZSBwcmVwYXJlRm9yUmVw
ZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBQcm90b0NhbGxGcmFtZSos
IEpTRnVuY3Rpb24qLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEpTU2NvcGUqLCBK
U1ZhbHVlKik7CgogICAgICAgIEpTVmFsdWUgZXhlY3V0ZShDYWxsRnJhbWVDbG9zdXJlJik7CgoK
CiAgICAgICAgdm9pZCBkdW1wUmVnaXN0ZXJzKENhbGxGcmFtZSopOwoKICAgICAgICBib29sIGlz
Q2FsbEJ5dGVjb2RlKE9wY29kZSBvcGNvZGUpIHsgcmV0dXJuIG9wY29kZSA9PSBnZXRPcGNvZGUo
b3BfY2FsbCkgfHwgb3Bjb2RlID09IGdldE9wY29kZShvcF9jb25zdHJ1Y3QpIHx8IG9wY29kZSA9
PSBnZXRPcGNvZGUob3BfY2FsbF9ldmFsKSB8fCBvcGNvZGUgPT0gZ2V0T3Bjb2RlKG9wX3RhaWxf
Y2FsbCk7IH0KCiAgICAgICAgVk0mIG1fdm07CiAgICAgICAgSlNTdGFjayBtX3N0YWNrOwogICAg
ICAgIGludCBtX2Vycm9ySGFuZGxpbmdNb2RlUmVlbnRyeTsKCgogICAgICAgIE9wY29kZSogbV9v
cGNvZGVUYWJsZTsKICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURU
YWJsZTsKCgoKCgogICAgfTsKCiAgICBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKik7CgogICAgaW5s
aW5lIENhbGxGcmFtZSogY2FsbGVlRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyYW1l
LCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpCiAgICB7CgoKICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IFdU
Rjo6cm91bmRVcFRvTXVsdGlwbGVPZigKICAgICAgICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3Rl
cnMoKSwKICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBKU1N0YWNrOjpD
YWxsRnJhbWVIZWFkZXJTaXplKSAtIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CgoKICAg
ICAgICB1bnNpZ25lZCBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCA9IFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZigKICAgICAgICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKICAgICAgICAg
ICAgbnVtVXNlZFN0YWNrU2xvdHMgKyBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIEpTU3Rh
Y2s6OkNhbGxGcmFtZUhlYWRlclNpemUpOwogICAgICAgIHJldHVybiBDYWxsRnJhbWU6OmNyZWF0
ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQpOwogICAg
fQoKICAgIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoQ2FsbEZyYW1lKiBleGVjLCBKU1ZhbHVlIGFy
Z3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOwogICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG1heEFyZ3VtZW50cyA9IDB4MTAwMDA7CiAgICB1bnNpZ25lZCBzaXplRnJhbWVGb3JW
YXJhcmdzKENhbGxGcmFtZSogZXhlYywgSlNTdGFjayosIEpTVmFsdWUgYXJndW1lbnRzLCB1bnNp
Z25lZCBudW1Vc2VkU3RhY2tTbG90cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOwogICAg
dm9pZCBsb2FkVmFyYXJncyhDYWxsRnJhbWUqIGV4ZWNDYWxsZXIsIFZpcnR1YWxSZWdpc3RlciBm
aXJzdEVsZW1lbnREZXN0LCBKU1ZhbHVlIHNvdXJjZSwgdWludDMyX3Qgb2Zmc2V0LCB1aW50MzJf
dCBsZW5ndGgpOwogICAgdm9pZCBzZXR1cFZhcmFyZ3NGcmFtZShDYWxsRnJhbWUqIGV4ZWNDYWxs
ZXIsIENhbGxGcmFtZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZp
cnN0VmFyQXJnT2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgpOwogICAgdm9pZCBzZXR1cFZhcmFyZ3NG
cmFtZUFuZFNldFRoaXMoQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxs
ZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RW
YXJBcmdPZmZzZXQsIHVpbnQzMl90IGxlbmd0aCk7Cgp9CiMgMjUgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaCIgMgoKCgoKbmFtZXNwYWNlIEpTQyB7
CgpjbGFzcyBFcnJvckluc3RhbmNlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewpwdWJsaWM6
CiAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKCiAgICBlbnVtIFNvdXJjZVRleHRX
aGVyZUVycm9yT2NjdXJyZWQgeyBGb3VuZEV4YWN0U291cmNlLCBGb3VuZEFwcHJveGltYXRlU291
cmNlIH07CiAgICB0eXBlZGVmIFN0cmluZyAoKlNvdXJjZUFwcGVuZGVyKSAoY29uc3QgU3RyaW5n
JiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVGV4dCwgUnVudGltZVR5cGUs
IFNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQpOwoKICAgIHByb3RlY3RlZDogc3RhdGljIGNv
bnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdCA6OkpTQzo6
Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsKCiAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgIHsKICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhFcnJvckluc3RhbmNlVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgfQoKICAgIHN0YXRpYyBFcnJvckluc3Rh
bmNlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFNvdXJjZUFwcGVuZGVyIGFwcGVuZGVyID0gbnVsbHB0
ciwgUnVudGltZVR5cGUgdHlwZSA9IFR5cGVOb3RoaW5nLCBib29sIHVzZUN1cnJlbnRGcmFtZSA9
IHRydWUpCiAgICB7CiAgICAgICAgRXJyb3JJbnN0YW5jZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNlPih2bS5oZWFwKSkgRXJyb3JJbnN0YW5jZSh2
bSwgc3RydWN0dXJlKTsKICAgICAgICBpbnN0YW5jZS0+bV9zb3VyY2VBcHBlbmRlciA9IGFwcGVu
ZGVyOwogICAgICAgIGluc3RhbmNlLT5tX3J1bnRpbWVUeXBlRm9yQ2F1c2UgPSB0eXBlOwogICAg
ICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbihleGVjLCB2bSwgbWVzc2FnZSwgdXNlQ3VycmVu
dEZyYW1lKTsKICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICB9CgogICAgc3RhdGljIEVycm9y
SW5zdGFuY2UqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U1ZhbHVlIG1lc3NhZ2UsIFNvdXJjZUFwcGVuZGVyIGFwcGVuZGVyID0gbnVsbHB0ciwgUnVudGlt
ZVR5cGUgdHlwZSA9IFR5cGVOb3RoaW5nLCBib29sIHVzZUN1cnJlbnRGcmFtZSA9IHRydWUpCiAg
ICB7CiAgICAgICAgcmV0dXJuIGNyZWF0ZShleGVjLCBleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIG1l
c3NhZ2UuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogbWVzc2FnZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyksIGFwcGVuZGVyLCB0eXBlLCB1c2VDdXJyZW50RnJhbWUpOwogICAgfQoKICAg
IHN0YXRpYyB2b2lkIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqLCBWTSYsIEpTT2JqZWN0KiwgYm9v
bCA9IHRydWUpOwoKICAgIGJvb2wgaGFzU291cmNlQXBwZW5kZXIoKSBjb25zdCB7IHJldHVybiAh
IW1fc291cmNlQXBwZW5kZXI7IH0KICAgIFNvdXJjZUFwcGVuZGVyIHNvdXJjZUFwcGVuZGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2VBcHBlbmRlcjsgfQogICAgdm9pZCBzZXRTb3VyY2VBcHBl
bmRlcihTb3VyY2VBcHBlbmRlciBhcHBlbmRlcikgeyBtX3NvdXJjZUFwcGVuZGVyID0gYXBwZW5k
ZXI7IH0KICAgIHZvaWQgY2xlYXJTb3VyY2VBcHBlbmRlcigpIHsgbV9zb3VyY2VBcHBlbmRlciA9
IG51bGxwdHI7IH0KICAgIHZvaWQgc2V0UnVudGltZVR5cGVGb3JDYXVzZShSdW50aW1lVHlwZSB0
eXBlKSB7IG1fcnVudGltZVR5cGVGb3JDYXVzZSA9IHR5cGU7IH0KICAgIFJ1bnRpbWVUeXBlIHJ1
bnRpbWVUeXBlRm9yQ2F1c2UoKSBjb25zdCB7IHJldHVybiBtX3J1bnRpbWVUeXBlRm9yQ2F1c2U7
IH0KICAgIHZvaWQgY2xlYXJSdW50aW1lVHlwZUZvckNhdXNlKCkgeyBtX3J1bnRpbWVUeXBlRm9y
Q2F1c2UgPSBUeXBlTm90aGluZzsgfQoKcHJvdGVjdGVkOgogICAgZXhwbGljaXQgRXJyb3JJbnN0
YW5jZShWTSYsIFN0cnVjdHVyZSopOwoKICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRl
KiwgVk0mLCBjb25zdCBTdHJpbmcmLCBib29sIHVzZUN1cnJlbnRGcmFtZSA9IHRydWUpOwoKICAg
IFNvdXJjZUFwcGVuZGVyIG1fc291cmNlQXBwZW5kZXIgeyBudWxscHRyIH07CiAgICBSdW50aW1l
VHlwZSBtX3J1bnRpbWVUeXBlRm9yQ2F1c2UgeyBUeXBlTm90aGluZyB9Owp9OwoKfQojIDMzICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgiIDIK
CgpuYW1lc3BhY2UgSlNDIHsKCnR5cGVkZWYgSlNPYmplY3QqICgqRXJyb3JGYWN0b3J5KShFeGVj
U3RhdGUqLCBjb25zdCBTdHJpbmcmLCBFcnJvckluc3RhbmNlOjpTb3VyY2VBcHBlbmRlcik7CgpK
U09iamVjdCogY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihWTSopOwogYm9vbCBp
c1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oRXhjZXB0aW9uKik7CiBKU09iamVjdCogY3Jl
YXRlRXJyb3IoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgU3RyaW5nJiwgRXJyb3JJbnN0YW5j
ZTo6U291cmNlQXBwZW5kZXIpOwogSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihF
eGVjU3RhdGUqKTsKSlNPYmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOwpKU09iamVjdCogY3JlYXRlVERaRXJyb3IoRXhlY1N0
YXRlKik7CkpTT2JqZWN0KiBjcmVhdGVOb3RBbk9iamVjdEVycm9yKEV4ZWNTdGF0ZSosIEpTVmFs
dWUpOwpKU09iamVjdCogY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQYXJhbWV0ZXJFcnJvcihF
eGVjU3RhdGUqLCBKU1ZhbHVlKTsKSlNPYmplY3QqIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVy
cm9yKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwpKU09iamVjdCogY3JlYXRlSW52YWxpZEluc3RhbmNl
b2ZQYXJhbWV0ZXJFcnJvck5vdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwpKU09iamVj
dCogY3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJvcmhhc0luc3RhbmNlVmFsdWVO
b3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKSlNPYmplY3QqIGNyZWF0ZU5vdEFDb25z
dHJ1Y3RvckVycm9yKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwpKU09iamVjdCogY3JlYXRlTm90QUZ1
bmN0aW9uRXJyb3IoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CkpTT2JqZWN0KiBjcmVhdGVFcnJvckZv
ckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOwpKU1N0
cmluZyogZXJyb3JEZXNjcmlwdGlvbkZvclZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwoKIEpT
T2JqZWN0KiB0aHJvd091dE9mTWVtb3J5RXJyb3IoRXhlY1N0YXRlKik7CiBKU09iamVjdCogdGhy
b3dTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKik7CiBKU09iamVjdCogdGhyb3dUZXJtaW5h
dGVkRXhlY3V0aW9uRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOwoKCmNsYXNzIFRlcm1pbmF0ZWRFeGVj
dXRpb25FcnJvciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKcHVibGljOgogICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0
YWw7CgogICAgc3RhdGljIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvciogY3JlYXRlKFZNJiB2bSkK
ICAgIHsKICAgICAgICBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IqIGVycm9yID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8VGVybWluYXRlZEV4ZWN1dGlvbkVycm9yPih2bS5oZWFwKSkgVGVy
bWluYXRlZEV4ZWN1dGlvbkVycm9yKHZtKTsKICAgICAgICBlcnJvci0+ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgICAgIHJldHVybiBlcnJvcjsKICAgIH0KCiAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKICAgIHsKICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CiAgICB9CgogICAgcHJvdGVjdGVkOiBzdGF0aWMgY29uc3QgOjpKU0M6
OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8q
IGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9OwoKcHJpdmF0ZToKICAgIGV4cGxpY2l0IFRlcm1p
bmF0ZWRFeGVjdXRpb25FcnJvcihWTSYgdm0pCiAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZt
LCB2bS50ZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmUuZ2V0KCkpCiAgICB7CiAgICB9
CgogICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7Cgp9OwoKfQojIDMwICIuLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIiAyCgojIDEgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaCIgMQojIDI1
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgi
CiNkZWZpbmUgSW50ZXJuYWxGdW5jdGlvbl9oIAoKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBG
dW5jdGlvblByb3RvdHlwZTsKCmNsYXNzIEludGVybmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgewpwdWJsaWM6CiAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
IEJhc2U7CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEltcGxlbWVudHNEZWZhdWx0
SGFzSW5zdGFuY2UgfCBUeXBlT2ZTaG91bGRDYWxsR2V0Q2FsbERhdGE7CgogICAgcHJvdGVjdGVk
OiBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNv
bnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9OwoKICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKCiAgICBjb25z
dCBTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CiAgICBjb25zdCBTdHJpbmcgZGlzcGxheU5hbWUo
RXhlY1N0YXRlKik7CiAgICBjb25zdCBTdHJpbmcgY2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNT
dGF0ZSopOwoKICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCiAgICB7CiAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICB9CgogICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBu
ZXdUYXJnZXQsIFN0cnVjdHVyZSopOwoKcHJvdGVjdGVkOgogICAgSW50ZXJuYWxGdW5jdGlvbihW
TSYsIFN0cnVjdHVyZSopOwoKICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBjb25zdCBTdHJp
bmcmIG5hbWUpOwoKICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxs
RGF0YSYpOwogICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBtX29yaWdpbmFsTmFtZTsKfTsKCklu
dGVybmFsRnVuY3Rpb24qIGFzSW50ZXJuYWxGdW5jdGlvbihKU1ZhbHVlKTsKCmlubGluZSBJbnRl
cm5hbEZ1bmN0aW9uKiBhc0ludGVybmFsRnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSkKewogICAgKCh2
b2lkKTApOwogICAgcmV0dXJuIHN0YXRpY19jYXN0PEludGVybmFsRnVuY3Rpb24qPihhc09iamVj
dCh2YWx1ZSkpOwp9Cgp9CiMgMzIgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmgiIDIKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIiAxCiMgMzQgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgiIDIKCiMgMSAiLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIiAxCiMgMjUgIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCIKI2RlZmluZSBKU0Z1bmN0aW9uX2gg
CgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURh
dGEuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
blJhcmVEYXRhLmgiCiNkZWZpbmUgRnVuY3Rpb25SYXJlRGF0YV9oIAoKIyAxICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9m
aWxlLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludGVy
bmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oIgojZGVmaW5lIEludGVybmFsRnVuY3Rpb25B
bGxvY2F0aW9uUHJvZmlsZV9oIAoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oIiAxCiMgMjMgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgiCiNkZWZpbmUgSlNHbG9iYWxPYmplY3RfaCAKCiMg
MSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblBy
b2ZpbGUuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oIgojZGVmaW5lIEFycmF5QWxsb2NhdGlvblByb2ZpbGVfaCAK
CiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kZXhpbmdUeXBlLmgi
IDEKIyAzMCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2Nh
dGlvblByb2ZpbGUuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaCIgMQojIDIyICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgiCiNkZWZpbmUgSlNBcnJheV9oIAoKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseUlubGluZXMuaCIKI2RlZmluZSBCdXR0ZXJm
bHlJbmxpbmVzX2ggCgoKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29w
aWVkU3BhY2VJbmxpbmVzLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29waWVkU3BhY2VJbmxpbmVzLmgiCiNkZWZpbmUgQ29waWVkU3BhY2VJbmxpbmVzX2ggCgoK
CgoKCm5hbWVzcGFjZSBKU0MgewoKaW5saW5lIGJvb2wgQ29waWVkU3BhY2U6OmNvbnRhaW5zKENv
cGllZEJsb2NrKiBibG9jaykKewogICAgcmV0dXJuICghbV9uZXdHZW4uYmxvY2tGaWx0ZXIucnVs
ZU91dChyZWludGVycHJldF9jYXN0PEJpdHM+KGJsb2NrKSkgfHwgIW1fb2xkR2VuLmJsb2NrRmls
dGVyLnJ1bGVPdXQocmVpbnRlcnByZXRfY2FzdDxCaXRzPihibG9jaykpKQogICAgICAgICYmIG1f
YmxvY2tTZXQuY29udGFpbnMoYmxvY2spOwp9CgppbmxpbmUgYm9vbCBDb3BpZWRTcGFjZTo6Y29u
dGFpbnModm9pZCogcHRyLCBDb3BpZWRCbG9jayomIHJlc3VsdCkKewogICAgQ29waWVkQmxvY2sq
IGJsb2NrID0gYmxvY2tGb3IocHRyKTsKICAgIGlmIChjb250YWlucyhibG9jaykpIHsKICAgICAg
ICByZXN1bHQgPSBibG9jazsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIHJlc3VsdCA9
IDA7CiAgICByZXR1cm4gZmFsc2U7Cn0KCmlubGluZSB2b2lkIENvcGllZFNwYWNlOjpwaW4oQ29w
aWVkQmxvY2sqIGJsb2NrKQp7CiAgICBibG9jay0+cGluKCk7Cn0KCmlubGluZSB2b2lkIENvcGll
ZFNwYWNlOjpwaW5JZk5lY2Vzc2FyeSh2b2lkKiBvcGFxdWVQb2ludGVyKQp7CiMgNzYgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlSW5saW5lcy5oIgogICAgRW5j
b2RlZEpTVmFsdWUqIHBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PEVuY29kZWRKU1ZhbHVlKj4o
b3BhcXVlUG9pbnRlcik7CiAgICBDb3BpZWRCbG9jayogYmxvY2s7CgoKICAgIGlmIChjb250YWlu
cyhwb2ludGVyLCBibG9jaykpCiAgICAgICAgcGluKGJsb2NrKTsKCgoKCiAgICBwb2ludGVyLS07
CgoKICAgIHBvaW50ZXItLTsKICAgIGlmIChjb250YWlucyhwb2ludGVyLCBibG9jaykpCiAgICAg
ICAgcGluKGJsb2NrKTsKfQoKaW5saW5lIHZvaWQgQ29waWVkU3BhY2U6OnJlY3ljbGVFdmFjdWF0
ZWRCbG9jayhDb3BpZWRCbG9jayogYmxvY2ssIEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUp
CnsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKICAgIHsKICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV90b1NwYWNlTG9jayk7CiAgICAgICAgbV9ibG9ja1Nl
dC5yZW1vdmUoYmxvY2spOwogICAgICAgIGlmIChjb2xsZWN0aW9uVHlwZSA9PSBFZGVuQ29sbGVj
dGlvbikKICAgICAgICAgICAgbV9uZXdHZW4uZnJvbVNwYWNlLT5yZW1vdmUoYmxvY2spOwogICAg
ICAgIGVsc2UKICAgICAgICAgICAgbV9vbGRHZW4uZnJvbVNwYWNlLT5yZW1vdmUoYmxvY2spOwog
ICAgfQogICAgQ29waWVkQmxvY2s6OmRlc3Ryb3koKmhlYXAoKSwgYmxvY2spOwp9CgppbmxpbmUg
dm9pZCBDb3BpZWRTcGFjZTo6cmVjeWNsZUJvcnJvd2VkQmxvY2soQ29waWVkQmxvY2sqIGJsb2Nr
KQp7CiAgICBDb3BpZWRCbG9jazo6ZGVzdHJveSgqaGVhcCgpLCBibG9jayk7CgogICAgewogICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9hbmVkQmxvY2tzTG9jayk7CiAgICAgICAgKCh2b2lk
KTApOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICBtX251bWJlck9mTG9hbmVkQmxvY2tzLS07
CiAgICB9Cn0KCmlubGluZSBDb3BpZWRCbG9jayogQ29waWVkU3BhY2U6OmFsbG9jYXRlQmxvY2tG
b3JDb3B5aW5nUGhhc2UoKQp7CiAgICAoKHZvaWQpMCk7CiAgICBDb3BpZWRCbG9jayogYmxvY2sg
PSBDb3BpZWRCbG9jazo6Y3JlYXRlTm9aZXJvRmlsbCgqbV9oZWFwKTsKCiAgICB7CiAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sb2FuZWRCbG9ja3NMb2NrKTsKICAgICAgICBtX251bWJlck9m
TG9hbmVkQmxvY2tzKys7CiAgICB9CgogICAgKCh2b2lkKTApOwogICAgcmV0dXJuIGJsb2NrOwp9
CgppbmxpbmUgdm9pZCBDb3BpZWRTcGFjZTo6YWxsb2NhdGVCbG9jaygpCnsKICAgIG1faGVhcC0+
Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcigpOwoKICAgIG1fYWxsb2NhdG9yLnJlc2V0Q3VycmVu
dEJsb2NrKCk7CgogICAgQ29waWVkQmxvY2sqIGJsb2NrID0gQ29waWVkQmxvY2s6OmNyZWF0ZSgq
bV9oZWFwKTsKCiAgICBtX25ld0dlbi50b1NwYWNlLT5wdXNoKGJsb2NrKTsKICAgIG1fbmV3R2Vu
LmJsb2NrRmlsdGVyLmFkZChyZWludGVycHJldF9jYXN0PEJpdHM+KGJsb2NrKSk7CiAgICBtX2Js
b2NrU2V0LmFkZChibG9jayk7CiAgICBtX2FsbG9jYXRvci5zZXRDdXJyZW50QmxvY2soYmxvY2sp
Owp9CgppbmxpbmUgQ2hlY2tlZEJvb2xlYW4gQ29waWVkU3BhY2U6OnRyeUFsbG9jYXRlKHNpemVf
dCBieXRlcywgdm9pZCoqIG91dFB0cikKewogICAgKCh2b2lkKTApOwogICAgKCh2b2lkKTApOwoK
ICAgIGlmICghbV9hbGxvY2F0b3IudHJ5QWxsb2NhdGUoYnl0ZXMsIG91dFB0cikpCiAgICAgICAg
cmV0dXJuIHRyeUFsbG9jYXRlU2xvd0Nhc2UoYnl0ZXMsIG91dFB0cik7CgogICAgKCh2b2lkKTAp
OwogICAgcmV0dXJuIHRydWU7Cn0KCmlubGluZSBib29sIENvcGllZFNwYWNlOjppc092ZXJzaXpl
KHNpemVfdCBieXRlcykKewogICAgcmV0dXJuIGJ5dGVzID4gc19tYXhBbGxvY2F0aW9uU2l6ZTsK
fQoKaW5saW5lIGJvb2wgQ29waWVkU3BhY2U6OmlzUGlubmVkKHZvaWQqIHB0cikKewogICAgcmV0
dXJuIGJsb2NrRm9yKHB0ciktPm1faXNQaW5uZWQ7Cn0KCmlubGluZSBDb3BpZWRCbG9jayogQ29w
aWVkU3BhY2U6OmJsb2NrRm9yKHZvaWQqIHB0cikKewogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Q29waWVkQmxvY2sqPihyZWludGVycHJldF9jYXN0PHNpemVfdD4ocHRyKSAmIHNfYmxvY2tN
YXNrKTsKfQoKdGVtcGxhdGUgPEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGU+CmlubGluZSB2
b2lkIENvcGllZFNwYWNlOjpzdGFydGVkQ29weWluZygpCnsKICAgIERvdWJseUxpbmtlZExpc3Q8
Q29waWVkQmxvY2s+KiBmcm9tU3BhY2U7CiAgICBEb3VibHlMaW5rZWRMaXN0PENvcGllZEJsb2Nr
Piogb3ZlcnNpemVCbG9ja3M7CiAgICBUaW55Qmxvb21GaWx0ZXIqIGJsb2NrRmlsdGVyOwogICAg
aWYgKGNvbGxlY3Rpb25UeXBlID09IEZ1bGxDb2xsZWN0aW9uKSB7CiAgICAgICAgKCh2b2lkKTAp
OwogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgbV9vbGRHZW4udG9TcGFjZS0+YXBwZW5kKCpt
X25ld0dlbi50b1NwYWNlKTsKICAgICAgICBtX29sZEdlbi5vdmVyc2l6ZUJsb2Nrcy5hcHBlbmQo
bV9uZXdHZW4ub3ZlcnNpemVCbG9ja3MpOwoKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgKCh2
b2lkKTApOwogICAgICAgICgodm9pZCkwKTsKCiAgICAgICAgc3RkOjpzd2FwKG1fb2xkR2VuLmZy
b21TcGFjZSwgbV9vbGRHZW4udG9TcGFjZSk7CiAgICAgICAgZnJvbVNwYWNlID0gbV9vbGRHZW4u
ZnJvbVNwYWNlOwogICAgICAgIG92ZXJzaXplQmxvY2tzID0gJm1fb2xkR2VuLm92ZXJzaXplQmxv
Y2tzOwogICAgICAgIGJsb2NrRmlsdGVyID0gJm1fb2xkR2VuLmJsb2NrRmlsdGVyOwogICAgfSBl
bHNlIHsKICAgICAgICBzdGQ6OnN3YXAobV9uZXdHZW4uZnJvbVNwYWNlLCBtX25ld0dlbi50b1Nw
YWNlKTsKICAgICAgICBmcm9tU3BhY2UgPSBtX25ld0dlbi5mcm9tU3BhY2U7CiAgICAgICAgb3Zl
cnNpemVCbG9ja3MgPSAmbV9uZXdHZW4ub3ZlcnNpemVCbG9ja3M7CiAgICAgICAgYmxvY2tGaWx0
ZXIgPSAmbV9uZXdHZW4uYmxvY2tGaWx0ZXI7CiAgICB9CgogICAgYmxvY2tGaWx0ZXItPnJlc2V0
KCk7CiAgICBtX2FsbG9jYXRvci5yZXNldEN1cnJlbnRCbG9jaygpOwoKICAgIENvcGllZEJsb2Nr
KiBuZXh0ID0gMDsKICAgIHNpemVfdCB0b3RhbExpdmVCeXRlcyA9IDA7CiAgICBzaXplX3QgdG90
YWxVc2FibGVCeXRlcyA9IDA7CiAgICBmb3IgKENvcGllZEJsb2NrKiBibG9jayA9IGZyb21TcGFj
ZS0+aGVhZCgpOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7CiAgICAgICAgbmV4dCA9IGJsb2NrLT5u
ZXh0KCk7CiAgICAgICAgaWYgKCFibG9jay0+aXNQaW5uZWQoKSAmJiBibG9jay0+Y2FuQmVSZWN5
Y2xlZCgpKSB7CiAgICAgICAgICAgIHJlY3ljbGVFdmFjdWF0ZWRCbG9jayhibG9jaywgY29sbGVj
dGlvblR5cGUpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgKCh2b2lk
KTApOwogICAgICAgIHRvdGFsTGl2ZUJ5dGVzICs9IGJsb2NrLT5saXZlQnl0ZXMoKTsKICAgICAg
ICB0b3RhbFVzYWJsZUJ5dGVzICs9IGJsb2NrLT5wYXlsb2FkQ2FwYWNpdHkoKTsKICAgICAgICBi
bG9jay0+ZGlkUHJvbW90ZSgpOwogICAgfQoKICAgIENvcGllZEJsb2NrKiBibG9jayA9IG92ZXJz
aXplQmxvY2tzLT5oZWFkKCk7CiAgICB3aGlsZSAoYmxvY2spIHsKICAgICAgICBDb3BpZWRCbG9j
ayogbmV4dCA9IGJsb2NrLT5uZXh0KCk7CiAgICAgICAgaWYgKGJsb2NrLT5pc1Bpbm5lZCgpKSB7
CiAgICAgICAgICAgIGJsb2NrRmlsdGVyLT5hZGQocmVpbnRlcnByZXRfY2FzdDxCaXRzPihibG9j
aykpOwogICAgICAgICAgICB0b3RhbExpdmVCeXRlcyArPSBibG9jay0+cGF5bG9hZENhcGFjaXR5
KCk7CiAgICAgICAgICAgIHRvdGFsVXNhYmxlQnl0ZXMgKz0gYmxvY2stPnBheWxvYWRDYXBhY2l0
eSgpOwogICAgICAgICAgICBibG9jay0+ZGlkUHJvbW90ZSgpOwogICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgIG92ZXJzaXplQmxvY2tzLT5yZW1vdmUoYmxvY2spOwogICAgICAgICAgICBtX2Js
b2NrU2V0LnJlbW92ZShibG9jayk7CiAgICAgICAgICAgIENvcGllZEJsb2NrOjpkZXN0cm95KCpo
ZWFwKCksIGJsb2NrKTsKICAgICAgICB9CiAgICAgICAgYmxvY2sgPSBuZXh0OwogICAgfQoKICAg
IGRvdWJsZSBtYXJrZWRTcGFjZUJ5dGVzID0gbV9oZWFwLT5vYmplY3RTcGFjZSgpLmNhcGFjaXR5
KCk7CiAgICBkb3VibGUgdG90YWxVdGlsaXphdGlvbiA9IHN0YXRpY19jYXN0PGRvdWJsZT4odG90
YWxMaXZlQnl0ZXMgKyBtYXJrZWRTcGFjZUJ5dGVzKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4odG90
YWxVc2FibGVCeXRlcyArIG1hcmtlZFNwYWNlQnl0ZXMpOwogICAgbV9zaG91bGREb0NvcHlQaGFz
ZSA9IG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uIHx8IHRv
dGFsVXRpbGl6YXRpb24gPD0gT3B0aW9uczo6bWluSGVhcFV0aWxpemF0aW9uKCk7CiAgICBpZiAo
IW1fc2hvdWxkRG9Db3B5UGhhc2UpIHsKICAgICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKICAg
ICAgICAgICAgZGF0YUxvZygiU2tpcHBlZCBjb3B5aW5nLCAiKTsKICAgICAgICByZXR1cm47CiAg
ICB9CgogICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCiAgICAgICAgZGF0YUxvZ0YoIkRpZCBjb3B5
LCAiKTsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKICAgIG1f
aW5Db3B5aW5nUGhhc2UgPSB0cnVlOwp9Cgp9CiMgMzIgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0J1dHRlcmZseUlubGluZXMuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvcHlWaXNpdG9yLmgiIDEKIyAzMyAiLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oIiAyCgoKCm5hbWVzcGFjZSBKU0Mg
ewoKaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5OjpjcmVhdGVVbmluaXRpYWxpemVkKFZNJiB2
bSwgSlNDZWxsKiBpbnRlbmRlZE93bmVyLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9w
ZXJ0eUNhcGFjaXR5LCBib29sIGhhc0luZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXls
b2FkU2l6ZUluQnl0ZXMpCnsKICAgIHZvaWQqIHRlbXA7CiAgICBzaXplX3Qgc2l6ZSA9IHRvdGFs
U2l6ZShwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGlu
ZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKICAgIGRvIHsgaWYgKF9fYnVpbHRpbl9leHBlY3Qo
ISEoISh2bS5oZWFwLnRyeUFsbG9jYXRlU3RvcmFnZShpbnRlbmRlZE93bmVyLCBzaXplLCAmdGVt
cCkpKSwgMCkpIFdURkNyYXNoKCk7IH0gd2hpbGUgKDApOwogICAgQnV0dGVyZmx5KiByZXN1bHQg
PSBmcm9tQmFzZSh0ZW1wLCBwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSk7CiAgICByZXR1
cm4gcmVzdWx0Owp9CgppbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OmNyZWF0ZShWTSYgdm0s
IEpTQ2VsbCogaW50ZW5kZWRPd25lciwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVy
dHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgY29uc3QgSW5kZXhpbmdIZWFkZXIm
IGluZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpCnsKICAg
IEJ1dHRlcmZseSogcmVzdWx0ID0gY3JlYXRlVW5pbml0aWFsaXplZCgKICAgICAgICB2bSwgaW50
ZW5kZWRPd25lciwgcHJlQ2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHksIGhhc0luZGV4aW5nSGVh
ZGVyLAogICAgICAgIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKICAgIGlmIChoYXNJbmRl
eGluZ0hlYWRlcikKICAgICAgICAqcmVzdWx0LT5pbmRleGluZ0hlYWRlcigpID0gaW5kZXhpbmdI
ZWFkZXI7CiAgICByZXR1cm4gcmVzdWx0Owp9CgppbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6
OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogaW50ZW5kZWRPd25lciwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCnsKICAgIHJldHVybiBjcmVhdGUoCiAgICAgICAgdm0sIGludGVuZGVkT3duZXIsIDAsIHN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwKICAgICAgICBzdHJ1Y3R1cmUtPmhhc0luZGV4
aW5nSGVhZGVyKGludGVuZGVkT3duZXIpLCBJbmRleGluZ0hlYWRlcigpLCAwKTsKfQoKaW5saW5l
IEJ1dHRlcmZseSogQnV0dGVyZmx5OjpjcmVhdGVVbmluaXRpYWxpemVkRHVyaW5nQ29sbGVjdGlv
bihDb3B5VmlzaXRvciYgdmlzaXRvciwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVy
dHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgc2l6ZV90IGluZGV4aW5nUGF5bG9h
ZFNpemVJbkJ5dGVzKQp7CiAgICBzaXplX3Qgc2l6ZSA9IHRvdGFsU2l6ZShwcmVDYXBhY2l0eSwg
cHJvcGVydHlDYXBhY2l0eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5bG9hZFNpemVJ
bkJ5dGVzKTsKICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gZnJvbUJhc2UoCiAgICAgICAgdmlzaXRv
ci5hbGxvY2F0ZU5ld1NwYWNlKHNpemUpLAogICAgICAgIHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNh
cGFjaXR5KTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCmlubGluZSB2b2lkKiBCdXR0ZXJmbHk6OmJh
c2UoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCnsKICAgIHJldHVybiBiYXNlKGluZGV4aW5nSGVhZGVy
KCktPnByZUNhcGFjaXR5KHN0cnVjdHVyZSksIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSk7Cn0KCmlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6Y3JlYXRlT3JHcm93UHJvcGVydHlT
dG9yYWdlKAogICAgQnV0dGVyZmx5KiBvbGRCdXR0ZXJmbHksIFZNJiB2bSwgSlNDZWxsKiBpbnRl
bmRlZE93bmVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IG9sZFByb3BlcnR5Q2FwYWNp
dHksIHNpemVfdCBuZXdQcm9wZXJ0eUNhcGFjaXR5KQp7CiAgICBkbyB7IGlmIChfX2J1aWx0aW5f
ZXhwZWN0KCEhKCEobmV3UHJvcGVydHlDYXBhY2l0eSA+IG9sZFByb3BlcnR5Q2FwYWNpdHkpKSwg
MCkpIFdURkNyYXNoKCk7IH0gd2hpbGUgKDApOwogICAgaWYgKCFvbGRCdXR0ZXJmbHkpCiAgICAg
ICAgcmV0dXJuIGNyZWF0ZSh2bSwgaW50ZW5kZWRPd25lciwgMCwgbmV3UHJvcGVydHlDYXBhY2l0
eSwgZmFsc2UsIEluZGV4aW5nSGVhZGVyKCksIDApOwoKICAgIHNpemVfdCBwcmVDYXBhY2l0eSA9
IG9sZEJ1dHRlcmZseS0+aW5kZXhpbmdIZWFkZXIoKS0+cHJlQ2FwYWNpdHkoc3RydWN0dXJlKTsK
ICAgIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyA9IG9sZEJ1dHRlcmZseS0+aW5k
ZXhpbmdIZWFkZXIoKS0+aW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMoc3RydWN0dXJlKTsKICAg
IGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBzdHJ1Y3R1cmUtPmhhc0luZGV4aW5nSGVhZGVyKGlu
dGVuZGVkT3duZXIpOwogICAgQnV0dGVyZmx5KiByZXN1bHQgPSBjcmVhdGVVbmluaXRpYWxpemVk
KAogICAgICAgIHZtLCBpbnRlbmRlZE93bmVyLCBwcmVDYXBhY2l0eSwgbmV3UHJvcGVydHlDYXBh
Y2l0eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKICAg
IG1lbWNweSgKICAgICAgICByZXN1bHQtPnByb3BlcnR5U3RvcmFnZSgpIC0gb2xkUHJvcGVydHlD
YXBhY2l0eSwKICAgICAgICBvbGRCdXR0ZXJmbHktPnByb3BlcnR5U3RvcmFnZSgpIC0gb2xkUHJv
cGVydHlDYXBhY2l0eSwKICAgICAgICB0b3RhbFNpemUoMCwgb2xkUHJvcGVydHlDYXBhY2l0eSwg
aGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKSk7CiAgICByZXR1
cm4gcmVzdWx0Owp9CgppbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OmNyZWF0ZU9yR3Jvd0Fy
cmF5UmlnaHQoCiAgICBCdXR0ZXJmbHkqIG9sZEJ1dHRlcmZseSwgVk0mIHZtLCBKU0NlbGwqIGlu
dGVuZGVkT3duZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAogICAgc2l6ZV90IHByb3BlcnR5
Q2FwYWNpdHksIGJvb2wgaGFkSW5kZXhpbmdIZWFkZXIsIHNpemVfdCBvbGRJbmRleGluZ1BheWxv
YWRTaXplSW5CeXRlcywKICAgIHNpemVfdCBuZXdJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcykK
ewogICAgaWYgKCFvbGRCdXR0ZXJmbHkpIHsKICAgICAgICByZXR1cm4gY3JlYXRlKAogICAgICAg
ICAgICB2bSwgaW50ZW5kZWRPd25lciwgMCwgcHJvcGVydHlDYXBhY2l0eSwgdHJ1ZSwgSW5kZXhp
bmdIZWFkZXIoKSwKICAgICAgICAgICAgbmV3SW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwog
ICAgfQogICAgcmV0dXJuIG9sZEJ1dHRlcmZseS0+Z3Jvd0FycmF5UmlnaHQoCiAgICAgICAgdm0s
IGludGVuZGVkT3duZXIsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlDYXBhY2l0eSwgaGFkSW5kZXhp
bmdIZWFkZXIsCiAgICAgICAgb2xkSW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMsIG5ld0luZGV4
aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKfQoKaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojpn
cm93QXJyYXlSaWdodCgKICAgIFZNJiB2bSwgSlNDZWxsKiBpbnRlbmRlZE93bmVyLCBTdHJ1Y3R1
cmUqIG9sZFN0cnVjdHVyZSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksCiAgICBib29sIGhhZElu
ZGV4aW5nSGVhZGVyLCBzaXplX3Qgb2xkSW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMsCiAgICBz
aXplX3QgbmV3SW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpCnsKICAgICgodm9pZClvbGRTdHJ1
Y3R1cmUpOwogICAgKCh2b2lkKW9sZFN0cnVjdHVyZSk7CiAgICB2b2lkKiB0aGVCYXNlID0gYmFz
ZSgwLCBwcm9wZXJ0eUNhcGFjaXR5KTsKICAgIHNpemVfdCBvbGRTaXplID0gdG90YWxTaXplKDAs
IHByb3BlcnR5Q2FwYWNpdHksIGhhZEluZGV4aW5nSGVhZGVyLCBvbGRJbmRleGluZ1BheWxvYWRT
aXplSW5CeXRlcyk7CiAgICBzaXplX3QgbmV3U2l6ZSA9IHRvdGFsU2l6ZSgwLCBwcm9wZXJ0eUNh
cGFjaXR5LCB0cnVlLCBuZXdJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7CiAgICBpZiAoIXZt
LmhlYXAudHJ5UmVhbGxvY2F0ZVN0b3JhZ2UoaW50ZW5kZWRPd25lciwgJnRoZUJhc2UsIG9sZFNp
emUsIG5ld1NpemUpKQogICAgICAgIHJldHVybiAwOwogICAgcmV0dXJuIGZyb21CYXNlKHRoZUJh
c2UsIDAsIHByb3BlcnR5Q2FwYWNpdHkpOwp9CgppbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6
Omdyb3dBcnJheVJpZ2h0KAogICAgVk0mIHZtLCBKU0NlbGwqIGludGVuZGVkT3duZXIsIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlLAogICAgc2l6ZV90IG5ld0luZGV4aW5nUGF5bG9hZFNpemVJbkJ5
dGVzKQp7CiAgICByZXR1cm4gZ3Jvd0FycmF5UmlnaHQoCiAgICAgICAgdm0sIGludGVuZGVkT3du
ZXIsIG9sZFN0cnVjdHVyZSwgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLAogICAg
ICAgIG9sZFN0cnVjdHVyZS0+aGFzSW5kZXhpbmdIZWFkZXIoaW50ZW5kZWRPd25lciksCiAgICAg
ICAgaW5kZXhpbmdIZWFkZXIoKS0+aW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMob2xkU3RydWN0
dXJlKSwKICAgICAgICBuZXdJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Cn0KCmlubGluZSBC
dXR0ZXJmbHkqIEJ1dHRlcmZseTo6cmVzaXplQXJyYXkoCiAgICBWTSYgdm0sIEpTQ2VsbCogaW50
ZW5kZWRPd25lciwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgb2xkSGFzSW5kZXhpbmdI
ZWFkZXIsCiAgICBzaXplX3Qgb2xkSW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMsIHNpemVfdCBu
ZXdQcmVDYXBhY2l0eSwgYm9vbCBuZXdIYXNJbmRleGluZ0hlYWRlciwKICAgIHNpemVfdCBuZXdJ
bmRleGluZ1BheWxvYWRTaXplSW5CeXRlcykKewogICAgQnV0dGVyZmx5KiByZXN1bHQgPSBjcmVh
dGVVbmluaXRpYWxpemVkKAogICAgICAgIHZtLCBpbnRlbmRlZE93bmVyLCBuZXdQcmVDYXBhY2l0
eSwgcHJvcGVydHlDYXBhY2l0eSwgbmV3SGFzSW5kZXhpbmdIZWFkZXIsCiAgICAgICAgbmV3SW5k
ZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwoKCiAgICB2b2lkKiB0byA9IHJlc3VsdC0+cHJvcGVy
dHlTdG9yYWdlKCkgLSBwcm9wZXJ0eUNhcGFjaXR5OwogICAgdm9pZCogZnJvbSA9IHByb3BlcnR5
U3RvcmFnZSgpIC0gcHJvcGVydHlDYXBhY2l0eTsKICAgIHNpemVfdCBzaXplID0gc3RkOjptaW4o
CiAgICAgICAgdG90YWxTaXplKDAsIHByb3BlcnR5Q2FwYWNpdHksIG9sZEhhc0luZGV4aW5nSGVh
ZGVyLCBvbGRJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyksCiAgICAgICAgdG90YWxTaXplKDAs
IHByb3BlcnR5Q2FwYWNpdHksIG5ld0hhc0luZGV4aW5nSGVhZGVyLCBuZXdJbmRleGluZ1BheWxv
YWRTaXplSW5CeXRlcykpOwogICAgbWVtY3B5KHRvLCBmcm9tLCBzaXplKTsKICAgIHJldHVybiBy
ZXN1bHQ7Cn0KCmlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6cmVzaXplQXJyYXkoCiAgICBW
TSYgdm0sIEpTQ2VsbCogaW50ZW5kZWRPd25lciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVf
dCBuZXdQcmVDYXBhY2l0eSwKICAgIHNpemVfdCBuZXdJbmRleGluZ1BheWxvYWRTaXplSW5CeXRl
cykKewogICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IHN0cnVjdHVyZS0+aGFzSW5kZXhpbmdI
ZWFkZXIoaW50ZW5kZWRPd25lcik7CiAgICByZXR1cm4gcmVzaXplQXJyYXkoCiAgICAgICAgdm0s
IGludGVuZGVkT3duZXIsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgaGFzSW5kZXhp
bmdIZWFkZXIsCiAgICAgICAgaW5kZXhpbmdIZWFkZXIoKS0+aW5kZXhpbmdQYXlsb2FkU2l6ZUlu
Qnl0ZXMoc3RydWN0dXJlKSwgbmV3UHJlQ2FwYWNpdHksCiAgICAgICAgaGFzSW5kZXhpbmdIZWFk
ZXIsIG5ld0luZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKfQoKaW5saW5lIEJ1dHRlcmZseSog
QnV0dGVyZmx5Ojp1bnNoaWZ0KFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbnVtYmVyT2ZT
bG90cykKewogICAgKCh2b2lkKTApOwogICAgKCh2b2lkKTApOwogICAgdW5zaWduZWQgcHJvcGVy
dHlDYXBhY2l0eSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKCgoKCgoKCiAgICBt
ZW1tb3ZlKAogICAgICAgIHByb3BlcnR5U3RvcmFnZSgpIC0gbnVtYmVyT2ZTbG90cyAtIHByb3Bl
cnR5Q2FwYWNpdHksCiAgICAgICAgcHJvcGVydHlTdG9yYWdlKCkgLSBwcm9wZXJ0eUNhcGFjaXR5
LAogICAgICAgIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBwcm9wZXJ0eUNhcGFjaXR5ICsgc2l6
ZW9mKEluZGV4aW5nSGVhZGVyKSArIEFycmF5U3RvcmFnZTo6c2l6ZUZvcigwKSk7CiAgICByZXR1
cm4gSW5kZXhpbmdIZWFkZXI6OmZyb21FbmRPZihwcm9wZXJ0eVN0b3JhZ2UoKSAtIG51bWJlck9m
U2xvdHMpLT5idXR0ZXJmbHkoKTsKfQoKaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5OjpzaGlm
dChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IG51bWJlck9mU2xvdHMpCnsKICAgICgodm9p
ZCkwKTsKICAgIHVuc2lnbmVkIHByb3BlcnR5Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCk7CgogICAgbWVtbW92ZSgKICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UoKSAtIHBy
b3BlcnR5Q2FwYWNpdHkgKyBudW1iZXJPZlNsb3RzLAogICAgICAgIHByb3BlcnR5U3RvcmFnZSgp
IC0gcHJvcGVydHlDYXBhY2l0eSwKICAgICAgICBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogcHJv
cGVydHlDYXBhY2l0eSArIHNpemVvZihJbmRleGluZ0hlYWRlcikgKyBBcnJheVN0b3JhZ2U6OnNp
emVGb3IoMCkpOwogICAgcmV0dXJuIEluZGV4aW5nSGVhZGVyOjpmcm9tRW5kT2YocHJvcGVydHlT
dG9yYWdlKCkgKyBudW1iZXJPZlNsb3RzKS0+YnV0dGVyZmx5KCk7Cn0KCn0KIyAyNiAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oIiAyCgoKbmFtZXNwYWNlIEpT
QyB7CgpjbGFzcyBKU0FycmF5OwpjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CgpjbGFzcyBK
U0FycmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAgICBmcmllbmQgY2xh
c3MgSklUOwoKcHVibGljOgogICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFt
ZXM7CgogICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNp
dHkpCiAgICB7CiAgICAgICAgKCh2b2lkKWlubGluZUNhcGFjaXR5KTsKICAgICAgICByZXR1cm4g
c2l6ZW9mKEpTQXJyYXkpOwogICAgfQoKcHJvdGVjdGVkOgogICAgZXhwbGljaXQgSlNBcnJheShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKICAgICAg
ICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgYnV0dGVyZmx5KQogICAgewogICAg
fQoKcHVibGljOgogICAgc3RhdGljIEpTQXJyYXkqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHVu
c2lnbmVkIGluaXRpYWxMZW5ndGggPSAwKTsKICAgIHN0YXRpYyBKU0FycmF5KiBjcmVhdGVXaXRo
QnV0dGVyZmx5KFZNJiwgU3RydWN0dXJlKiwgQnV0dGVyZmx5Kik7CgoKCgoKICAgIHN0YXRpYyBK
U0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKFZNJiwgU3RydWN0dXJlKiwgdW5zaWduZWQg
aW5pdGlhbExlbmd0aCk7CgogICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgdGhyb3dFeGNlcHRpb24pOwoKICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cgog
ICAgcHJvdGVjdGVkOiBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1Ymxp
Yzogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZv
OyB9OwoKCiAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBnZXRBcnJheUxlbmd0
aCgpOyB9CgoKICAgIGJvb2wgc2V0TGVuZ3RoKEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBib29sIHRo
cm93RXhjZXB0aW9uID0gZmFsc2UpOwoKICAgIHZvaWQgcHVzaChFeGVjU3RhdGUqLCBKU1ZhbHVl
KTsKICAgIEpTVmFsdWUgcG9wKEV4ZWNTdGF0ZSopOwoKICAgIEpTQXJyYXkqIGZhc3RTbGljZShF
eGVjU3RhdGUmLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBjb3VudCk7CgogICAgc3Rh
dGljIEluZGV4aW5nVHlwZSBmYXN0Q29uY2F0VHlwZShWTSYgdm0sIEpTQXJyYXkmIGZpcnN0QXJy
YXksIEpTQXJyYXkmIHNlY29uZEFycmF5KQogICAgewogICAgICAgIEluZGV4aW5nVHlwZSB0eXBl
ID0gZmlyc3RBcnJheS5pbmRleGluZ1R5cGUoKTsKICAgICAgICBpZiAodHlwZSAhPSBzZWNvbmRB
cnJheS5pbmRleGluZ1R5cGUoKSkKICAgICAgICAgICAgcmV0dXJuIE5vbkFycmF5OwogICAgICAg
IGlmICh0eXBlICE9IEFycmF5V2l0aERvdWJsZSAmJiB0eXBlICE9IEFycmF5V2l0aEludDMyICYm
IHR5cGUgIT0gQXJyYXlXaXRoQ29udGlndW91cykKICAgICAgICAgICAgcmV0dXJuIE5vbkFycmF5
OwogICAgICAgIGlmIChmaXJzdEFycmF5LnN0cnVjdHVyZSh2bSktPmhvbGVzTXVzdEZvcndhcmRU
b1Byb3RvdHlwZSh2bSkKICAgICAgICAgICAgfHwgc2Vjb25kQXJyYXkuc3RydWN0dXJlKHZtKS0+
aG9sZXNNdXN0Rm9yd2FyZFRvUHJvdG90eXBlKHZtKSkKICAgICAgICAgICAgcmV0dXJuIE5vbkFy
cmF5OwogICAgICAgIHJldHVybiB0eXBlOwogICAgfQogICAgRW5jb2RlZEpTVmFsdWUgZmFzdENv
bmNhdFdpdGgoRXhlY1N0YXRlJiwgSlNBcnJheSYpOwoKICAgIGVudW0gU2hpZnRDb3VudE1vZGUg
ewoKCiAgICAgICAgU2hpZnRDb3VudEZvclNoaWZ0LAoKCgoKICAgICAgICBTaGlmdENvdW50Rm9y
U3BsaWNlCiAgICB9OwoKICAgIGJvb2wgc2hpZnRDb3VudEZvclNoaWZ0KEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQpCiAgICB7CiAgICAgICAgcmV0
dXJuIHNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCksIHN0YXJ0SW5kZXgsIGNv
dW50LCBlbnN1cmVBcnJheVN0b3JhZ2UoZXhlYy0+dm0oKSkpOwogICAgfQogICAgYm9vbCBzaGlm
dENvdW50Rm9yU3BsaWNlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQmIHN0YXJ0SW5kZXgsIHVu
c2lnbmVkIGNvdW50KQogICAgewogICAgICAgIHJldHVybiBzaGlmdENvdW50V2l0aEFueUluZGV4
aW5nVHlwZShleGVjLCBzdGFydEluZGV4LCBjb3VudCk7CiAgICB9CiAgICB0ZW1wbGF0ZTxTaGlm
dENvdW50TW9kZSBzaGlmdENvdW50TW9kZT4KICAgIGJvb2wgc2hpZnRDb3VudChFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkJiBzdGFydEluZGV4LCB1bnNpZ25lZCBjb3VudCkKICAgIHsKICAgICAg
ICBzd2l0Y2ggKHNoaWZ0Q291bnRNb2RlKSB7CiAgICAgICAgY2FzZSBTaGlmdENvdW50Rm9yU2hp
ZnQ6CiAgICAgICAgICAgIHJldHVybiBzaGlmdENvdW50Rm9yU2hpZnQoZXhlYywgc3RhcnRJbmRl
eCwgY291bnQpOwogICAgICAgIGNhc2UgU2hpZnRDb3VudEZvclNwbGljZToKICAgICAgICAgICAg
cmV0dXJuIHNoaWZ0Q291bnRGb3JTcGxpY2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQpOwogICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIFdURkNyYXNoKCk7CiAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICB9CiAgICB9CgogICAgYm9vbCB1bnNoaWZ0Q291bnRGb3JTaGlmdChFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50KQogICAgewog
ICAgICAgIHJldHVybiB1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5k
ZXgsIGNvdW50LCBlbnN1cmVBcnJheVN0b3JhZ2UoZXhlYy0+dm0oKSkpOwogICAgfQogICAgYm9v
bCB1bnNoaWZ0Q291bnRGb3JTcGxpY2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBzdGFydElu
ZGV4LCB1bnNpZ25lZCBjb3VudCkKICAgIHsKICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0
aEFueUluZGV4aW5nVHlwZShleGVjLCBzdGFydEluZGV4LCBjb3VudCk7CiAgICB9CiAgICB0ZW1w
bGF0ZTxTaGlmdENvdW50TW9kZSBzaGlmdENvdW50TW9kZT4KICAgIGJvb2wgdW5zaGlmdENvdW50
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQpCiAg
ICB7CiAgICAgICAgc3dpdGNoIChzaGlmdENvdW50TW9kZSkgewogICAgICAgIGNhc2UgU2hpZnRD
b3VudEZvclNoaWZ0OgogICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50Rm9yU2hpZnQoZXhl
Yywgc3RhcnRJbmRleCwgY291bnQpOwogICAgICAgIGNhc2UgU2hpZnRDb3VudEZvclNwbGljZToK
ICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudEZvclNwbGljZShleGVjLCBzdGFydEluZGV4
LCBjb3VudCk7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgV1RGQ3Jhc2goKTsKICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCiAgICB2b2lkIGZpbGxBcmdMaXN0
KEV4ZWNTdGF0ZSosIE1hcmtlZEFyZ3VtZW50QnVmZmVyJik7CiAgICB2b2lkIGNvcHlUb0FyZ3Vt
ZW50cyhFeGVjU3RhdGUqLCBWaXJ0dWFsUmVnaXN0ZXIgZmlyc3RFbGVtZW50RGVzdCwgdW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwoKICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQogICAgewogICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBpbmRleGluZ1R5cGUpOwogICAg
fQoKcHJvdGVjdGVkOgogICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CgogICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgIHN0
YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKCnByaXZhdGU6CiAgICBi
b29sIGlzTGVuZ3RoV3JpdGFibGUoKQogICAgewogICAgICAgIEFycmF5U3RvcmFnZSogc3RvcmFn
ZSA9IGFycmF5U3RvcmFnZU9yTnVsbCgpOwogICAgICAgIGlmICghc3RvcmFnZSkKICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwID0gc3RvcmFn
ZS0+bV9zcGFyc2VNYXAuZ2V0KCk7CiAgICAgICAgcmV0dXJuICFtYXAgfHwgIW1hcC0+bGVuZ3Ro
SXNSZWFkT25seSgpOwogICAgfQoKICAgIGJvb2wgc2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5
cGUoRXhlY1N0YXRlKiwgdW5zaWduZWQmIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50KTsKICAg
IGJvb2wgc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoVk0mLCB1bnNpZ25lZCBzdGFydEluZGV4
LCB1bnNpZ25lZCBjb3VudCwgQXJyYXlTdG9yYWdlKik7CgogICAgYm9vbCB1bnNoaWZ0Q291bnRX
aXRoQW55SW5kZXhpbmdUeXBlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2ln
bmVkIGNvdW50KTsKICAgIGJvb2wgdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBjb3VudCwgQXJyYXlTdG9yYWdlKik7
CiAgICBib29sIHVuc2hpZnRDb3VudFNsb3dDYXNlKFZNJiwgYm9vbCwgdW5zaWduZWQpOwoKICAg
IGJvb2wgc2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBuZXdM
ZW5ndGgsIGJvb2wgdGhyb3dFeGNlcHRpb24sIEFycmF5U3RvcmFnZSopOwogICAgdm9pZCBzZXRM
ZW5ndGhXcml0YWJsZShFeGVjU3RhdGUqLCBib29sIHdyaXRhYmxlKTsKfTsKCmlubGluZSBCdXR0
ZXJmbHkqIGNyZWF0ZUNvbnRpZ3VvdXNBcnJheUJ1dHRlcmZseShWTSYgdm0sIEpTQ2VsbCogaW50
ZW5kZWRPd25lciwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCYgdmVjdG9yTGVuZ3RoKQp7CiAg
ICBJbmRleGluZ0hlYWRlciBoZWFkZXI7CiAgICB2ZWN0b3JMZW5ndGggPSBzdGQ6Om1heChsZW5n
dGgsIDRVKTsKICAgIGhlYWRlci5zZXRWZWN0b3JMZW5ndGgodmVjdG9yTGVuZ3RoKTsKICAgIGhl
YWRlci5zZXRQdWJsaWNMZW5ndGgobGVuZ3RoKTsKICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gQnV0
dGVyZmx5OjpjcmVhdGUoCiAgICAgICAgdm0sIGludGVuZGVkT3duZXIsIDAsIDAsIHRydWUsIGhl
YWRlciwgdmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CiAgICByZXR1cm4g
cmVzdWx0Owp9CgppbmxpbmUgQnV0dGVyZmx5KiBjcmVhdGVBcnJheUJ1dHRlcmZseShWTSYgdm0s
IEpTQ2VsbCogaW50ZW5kZWRPd25lciwgdW5zaWduZWQgaW5pdGlhbExlbmd0aCkKewogICAgQnV0
dGVyZmx5KiBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKICAgICAgICB2bSwgaW50ZW5k
ZWRPd25lciwgMCwgMCwgdHJ1ZSwgYmFzZUluZGV4aW5nSGVhZGVyRm9yQXJyYXkoaW5pdGlhbExl
bmd0aCksCiAgICAgICAgQXJyYXlTdG9yYWdlOjpzaXplRm9yKDRVKSk7CiAgICBBcnJheVN0b3Jh
Z2UqIHN0b3JhZ2UgPSBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwogICAgc3RvcmFnZS0+bV9p
bmRleEJpYXMgPSAwOwogICAgc3RvcmFnZS0+bV9zcGFyc2VNYXAuY2xlYXIoKTsKICAgIHN0b3Jh
Z2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgPSAwOwogICAgcmV0dXJuIGJ1dHRlcmZseTsKfQoKQnV0
dGVyZmx5KiBjcmVhdGVBcnJheUJ1dHRlcmZseUluRGljdGlvbmFyeUluZGV4aW5nTW9kZSgKICAg
IFZNJiwgSlNDZWxsKiBpbnRlbmRlZE93bmVyLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoKTsKCmlu
bGluZSBKU0FycmF5KiBKU0FycmF5OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgdW5zaWduZWQgaW5pdGlhbExlbmd0aCkKewogICAgQnV0dGVyZmx5KiBidXR0ZXJmbHk7CiAg
ICBpZiAoX19idWlsdGluX2V4cGVjdCghISghaGFzQW55QXJyYXlTdG9yYWdlKHN0cnVjdHVyZS0+
aW5kZXhpbmdUeXBlKCkpKSwgMSkpIHsKICAgICAgICAoKHZvaWQpMCkKCgoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgdW5z
aWduZWQgdmVjdG9yTGVuZ3RoOwogICAgICAgIGJ1dHRlcmZseSA9IGNyZWF0ZUNvbnRpZ3VvdXNB
cnJheUJ1dHRlcmZseSh2bSwgMCwgaW5pdGlhbExlbmd0aCwgdmVjdG9yTGVuZ3RoKTsKICAgICAg
ICAoKHZvaWQpMCk7CiAgICAgICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlw
ZSgpKSkgewogICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjdG9yTGVuZ3Ro
OyArK2kpCiAgICAgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9
IChwdXJlTmFOKCkpOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgKCh2b2lkKTApCgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA7CiAgICAgICAgYnV0dGVyZmx5ID0gY3JlYXRlQXJyYXlCdXR0ZXJmbHkodm0sIDAs
IGluaXRpYWxMZW5ndGgpOwogICAgfQoKICAgIHJldHVybiBjcmVhdGVXaXRoQnV0dGVyZmx5KHZt
LCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7Cn0KCmlubGluZSBKU0FycmF5KiBKU0FycmF5Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVk
IGluaXRpYWxMZW5ndGgpCnsKICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KDRV
LCBpbml0aWFsTGVuZ3RoKTsKICAgIGlmICh2ZWN0b3JMZW5ndGggPiAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEluZGV4aW5nSGVhZGVyOjptYXhpbXVtTGVuZ3RoKSkpCiAgICAgICAgcmV0dXJuIDA7
CgogICAgdW5zaWduZWQgb3V0T2ZMaW5lU3RvcmFnZSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKTsKCiAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseTsKICAgIGlmIChfX2J1aWx0aW5fZXhw
ZWN0KCEhKCFoYXNBbnlBcnJheVN0b3JhZ2Uoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpLCAx
KSkgewogICAgICAgICgodm9pZCkwKQoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgdm9pZCogdGVtcDsKICAgICAgICBp
ZiAoIXZtLmhlYXAudHJ5QWxsb2NhdGVTdG9yYWdlKDAsIEJ1dHRlcmZseTo6dG90YWxTaXplKDAs
IG91dE9mTGluZVN0b3JhZ2UsIHRydWUsIHZlY3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkpLCAmdGVtcCkpCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGJ1dHRlcmZseSA9
IEJ1dHRlcmZseTo6ZnJvbUJhc2UodGVtcCwgMCwgb3V0T2ZMaW5lU3RvcmFnZSk7CiAgICAgICAg
YnV0dGVyZmx5LT5zZXRWZWN0b3JMZW5ndGgodmVjdG9yTGVuZ3RoKTsKICAgICAgICBidXR0ZXJm
bHktPnNldFB1YmxpY0xlbmd0aChpbml0aWFsTGVuZ3RoKTsKICAgICAgICBpZiAoaGFzRG91Ymxl
KHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKSB7CiAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGluaXRpYWxMZW5ndGg7IGkgPCB2ZWN0b3JMZW5ndGg7ICsraSkKICAgICAgICAgICAgICAg
IGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gKHB1cmVOYU4oKSk7CiAgICAgICAg
fQogICAgfSBlbHNlIHsKICAgICAgICB2b2lkKiB0ZW1wOwogICAgICAgIGlmICghdm0uaGVhcC50
cnlBbGxvY2F0ZVN0b3JhZ2UoMCwgQnV0dGVyZmx5Ojp0b3RhbFNpemUoMCwgb3V0T2ZMaW5lU3Rv
cmFnZSwgdHJ1ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0aCkpLCAmdGVtcCkp
CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6ZnJv
bUJhc2UodGVtcCwgMCwgb3V0T2ZMaW5lU3RvcmFnZSk7CiAgICAgICAgKmJ1dHRlcmZseS0+aW5k
ZXhpbmdIZWFkZXIoKSA9IGluZGV4aW5nSGVhZGVyRm9yQXJyYXkoaW5pdGlhbExlbmd0aCwgdmVj
dG9yTGVuZ3RoKTsKICAgICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBidXR0ZXJmbHktPmFy
cmF5U3RvcmFnZSgpOwogICAgICAgIHN0b3JhZ2UtPm1faW5kZXhCaWFzID0gMDsKICAgICAgICBz
dG9yYWdlLT5tX3NwYXJzZU1hcC5jbGVhcigpOwogICAgICAgIHN0b3JhZ2UtPm1fbnVtVmFsdWVz
SW5WZWN0b3IgPSBpbml0aWFsTGVuZ3RoOwogICAgfQoKICAgIHJldHVybiBjcmVhdGVXaXRoQnV0
dGVyZmx5KHZtLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7Cn0KCmlubGluZSBKU0FycmF5KiBKU0Fy
cmF5OjpjcmVhdGVXaXRoQnV0dGVyZmx5KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1
dHRlcmZseSogYnV0dGVyZmx5KQp7CiAgICBKU0FycmF5KiBhcnJheSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTQXJyYXk+KHZtLmhlYXApKSBKU0FycmF5KHZtLCBzdHJ1Y3R1cmUsIGJ1
dHRlcmZseSk7CiAgICBhcnJheS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgcmV0dXJuIGFycmF5
Owp9CgpKU0FycmF5KiBhc0FycmF5KEpTVmFsdWUpOwoKaW5saW5lIEpTQXJyYXkqIGFzQXJyYXko
SlNDZWxsKiBjZWxsKQp7CiAgICAoKHZvaWQpMCk7CiAgICByZXR1cm4ganNDYXN0PEpTQXJyYXkq
PihjZWxsKTsKfQoKaW5saW5lIEpTQXJyYXkqIGFzQXJyYXkoSlNWYWx1ZSB2YWx1ZSkKewogICAg
cmV0dXJuIGFzQXJyYXkodmFsdWUuYXNDZWxsKCkpOwp9CgppbmxpbmUgYm9vbCBpc0pTQXJyYXko
SlNDZWxsKiBjZWxsKQp7CiAgICByZXR1cm4gY2VsbC0+Y2xhc3NJbmZvKCkgPT0gSlNBcnJheTo6
aW5mbygpOwp9CgppbmxpbmUgYm9vbCBpc0pTQXJyYXkoSlNWYWx1ZSB2KSB7IHJldHVybiB2Lmlz
Q2VsbCgpICYmIGlzSlNBcnJheSh2LmFzQ2VsbCgpKTsgfQoKaW5saW5lIEpTQXJyYXkqIGNvbnN0
cnVjdEFycmF5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSwgY29u
c3QgQXJnTGlzdCYgdmFsdWVzKQp7CiAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgdW5zaWdu
ZWQgbGVuZ3RoID0gdmFsdWVzLnNpemUoKTsKICAgIEpTQXJyYXkqIGFycmF5ID0gSlNBcnJheTo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgYXJyYXlTdHJ1Y3R1cmUsIGxlbmd0aCk7CgoKCgog
ICAgZG8geyBpZiAoX19idWlsdGluX2V4cGVjdCghISghKGFycmF5KSksIDApKSBXVEZDcmFzaCgp
OyB9IHdoaWxlICgwKTsKCiAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
CiAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2bSwgaSwgdmFsdWVzLmF0KGkpKTsKICAg
IHJldHVybiBhcnJheTsKfQoKaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5KEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSwgY29uc3QgSlNWYWx1ZSogdmFsdWVz
LCB1bnNpZ25lZCBsZW5ndGgpCnsKICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICBKU0FycmF5
KiBhcnJheSA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGFycmF5U3RydWN0
dXJlLCBsZW5ndGgpOwoKCgoKICAgIGRvIHsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoIShhcnJh
eSkpLCAwKSkgV1RGQ3Jhc2goKTsgfSB3aGlsZSAoMCk7CgogICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIGks
IHZhbHVlc1tpXSk7CiAgICByZXR1cm4gYXJyYXk7Cn0KCmlubGluZSBKU0FycmF5KiBjb25zdHJ1
Y3RBcnJheU5lZ2F0aXZlSW5kZXhlZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogYXJyYXlT
dHJ1Y3R1cmUsIGNvbnN0IEpTVmFsdWUqIHZhbHVlcywgdW5zaWduZWQgbGVuZ3RoKQp7CiAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgSlNBcnJheSogYXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHZtLCBhcnJheVN0cnVjdHVyZSwgbGVuZ3RoKTsKCgoKCiAgICBkbyB7
IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCEoYXJyYXkpKSwgMCkpIFdURkNyYXNoKCk7IH0gd2hp
bGUgKDApOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8aW50PihsZW5ndGgp
OyArK2kpCiAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2bSwgaSwgdmFsdWVzWy1pXSk7
CiAgICByZXR1cm4gYXJyYXk7Cn0KCmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp
bmVfXykpIHVuc2lnbmVkIGdldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmop
CnsKICAgIGlmIChpc0pTQXJyYXkob2JqKSkKICAgICAgICByZXR1cm4ganNDYXN0PEpTQXJyYXkq
PihvYmopLT5sZW5ndGgoKTsKICAgIHJldHVybiBvYmotPmdldChleGVjLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihleGVjKTsKfQoKfQojIDMxICIuLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIiAyCgpuYW1l
c3BhY2UgSlNDIHsKCmNsYXNzIEFycmF5QWxsb2NhdGlvblByb2ZpbGUgewpwdWJsaWM6CiAgICBB
cnJheUFsbG9jYXRpb25Qcm9maWxlKCkKICAgICAgICA6IG1fY3VycmVudEluZGV4aW5nVHlwZShB
cnJheVdpdGhVbmRlY2lkZWQpCiAgICAgICAgLCBtX2xhc3RBcnJheSgwKQogICAgewogICAgfQoK
ICAgIEluZGV4aW5nVHlwZSBzZWxlY3RJbmRleGluZ1R5cGUoKQogICAgewogICAgICAgIEpTQXJy
YXkqIGxhc3RBcnJheSA9IG1fbGFzdEFycmF5OwogICAgICAgIGlmIChsYXN0QXJyYXkgJiYgX19i
dWlsdGluX2V4cGVjdCghIShsYXN0QXJyYXktPmluZGV4aW5nVHlwZSgpICE9IG1fY3VycmVudElu
ZGV4aW5nVHlwZSksIDApKQogICAgICAgICAgICB1cGRhdGVJbmRleGluZ1R5cGUoKTsKICAgICAg
ICByZXR1cm4gbV9jdXJyZW50SW5kZXhpbmdUeXBlOwogICAgfQoKICAgIEpTQXJyYXkqIHVwZGF0
ZUxhc3RBbGxvY2F0aW9uKEpTQXJyYXkqIGxhc3RBcnJheSkKICAgIHsKICAgICAgICBtX2xhc3RB
cnJheSA9IGxhc3RBcnJheTsKICAgICAgICByZXR1cm4gbGFzdEFycmF5OwogICAgfQoKICAgIHZv
aWQgdXBkYXRlSW5kZXhpbmdUeXBlKCk7CgogICAgc3RhdGljIEluZGV4aW5nVHlwZSBzZWxlY3RJ
bmRleGluZ1R5cGVGb3IoQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSkKICAgIHsKICAg
ICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgICAgIHJldHVybiBBcnJheVdpdGhVbmRlY2lkZWQ7
CiAgICAgICAgcmV0dXJuIHByb2ZpbGUtPnNlbGVjdEluZGV4aW5nVHlwZSgpOwogICAgfQoKICAg
IHN0YXRpYyBKU0FycmF5KiB1cGRhdGVMYXN0QWxsb2NhdGlvbkZvcihBcnJheUFsbG9jYXRpb25Q
cm9maWxlKiBwcm9maWxlLCBKU0FycmF5KiBsYXN0QXJyYXkpCiAgICB7CiAgICAgICAgaWYgKHBy
b2ZpbGUpCiAgICAgICAgICAgIHByb2ZpbGUtPnVwZGF0ZUxhc3RBbGxvY2F0aW9uKGxhc3RBcnJh
eSk7CiAgICAgICAgcmV0dXJuIGxhc3RBcnJheTsKICAgIH0KCnByaXZhdGU6CgogICAgSW5kZXhp
bmdUeXBlIG1fY3VycmVudEluZGV4aW5nVHlwZTsKICAgIEpTQXJyYXkqIG1fbGFzdEFycmF5Owp9
OwoKfQojIDI2ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oIiAyCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuaCIgMQojIDI4ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oIiAyCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclByb3RvdHlwZS5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaCIKI2RlZmluZSBKU0FycmF5QnVmZmVy
UHJvdG90eXBlX2ggCgoKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgSlNBcnJheUJ1ZmZlclByb3Rv
dHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKcHVibGljOgogICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7Cgpwcm90ZWN0ZWQ6CiAgICBKU0FycmF5QnVmZmVyUHJvdG90eXBl
KFZNJiwgU3RydWN0dXJlKik7CiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxP
YmplY3QqKTsKCnB1YmxpYzoKICAgIHN0YXRpYyBKU0FycmF5QnVmZmVyUHJvdG90eXBlKiBjcmVh
dGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwoKICAgIHByb3RlY3RlZDogc3Rh
dGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdCA6
OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsKCiAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
cHJvdG90eXBlKTsKfTsKCn0KIyAyOSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDbGFzc1JlZi5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDbGFzc1JlZi5oIgojZGVmaW5lIEpTQ2xhc3NSZWZfaCAKCiMgMSAiLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaCIKI2RlZmluZSBPcGFxdWVKU1N0cmlu
Z19oIAoKCgoKCm5hbWVzcGFjZSBKU0MgewogICAgY2xhc3MgSWRlbnRpZmllcjsKICAgIGNsYXNz
IFZNOwp9CgpzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8T3BhcXVlSlNTdHJpbmc+IHsKICAgIHN0YXRpYyBSZWY8T3BhcXVlSlNTdHJpbmc+IGNyZWF0
ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3BhcXVlSlNTdHJpbmcpOwog
ICAgfQoKICAgIHN0YXRpYyBSZWY8T3BhcXVlSlNTdHJpbmc+IGNyZWF0ZShjb25zdCBMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAgewogICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE9wYXF1ZUpTU3RyaW5nKGNoYXJhY3RlcnMsIGxlbmd0aCkpOwogICAgfQoKICAgIHN0
YXRpYyBSZWY8T3BhcXVlSlNTdHJpbmc+IGNyZWF0ZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoKQogICAgewogICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9wYXF1
ZUpTU3RyaW5nKGNoYXJhY3RlcnMsIGxlbmd0aCkpOwogICAgfQoKICAgIHN0YXRpYyBSZWZQdHI8
T3BhcXVlSlNTdHJpbmc+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKCiAgICB+T3BhcXVlSlNTdHJp
bmcoKTsKCiAgICBib29sIGlzOEJpdCgpIHsgcmV0dXJuIG1fc3RyaW5nLmlzOEJpdCgpOyB9CiAg
ICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSB7IHJldHVybiBtX3N0cmluZy5jaGFyYWN0ZXJz
OCgpOyB9CiAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVyczE2KCkgeyByZXR1cm4gbV9zdHJpbmcu
Y2hhcmFjdGVyczE2KCk7IH0KICAgIHVuc2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIG1fc3RyaW5n
Lmxlbmd0aCgpOyB9CgogICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKTsKCiAgICBTdHJpbmcg
c3RyaW5nKCkgY29uc3Q7CiAgICBKU0M6OklkZW50aWZpZXIgaWRlbnRpZmllcihKU0M6OlZNKikg
Y29uc3Q7CgogICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgT3BhcXVlSlNTdHJpbmcqLCBjb25z
dCBPcGFxdWVKU1N0cmluZyopOwoKcHJpdmF0ZToKICAgIGZyaWVuZCBjbGFzcyBXVEY6OlRocmVh
ZFNhZmVSZWZDb3VudGVkPE9wYXF1ZUpTU3RyaW5nPjsKCiAgICBPcGFxdWVKU1N0cmluZygpCiAg
ICAgICAgOiBtX2NoYXJhY3RlcnMobnVsbHB0cikKICAgIHsKICAgIH0KCiAgICBPcGFxdWVKU1N0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAgICA6IG1fc3RyaW5nKHN0cmluZy5pc29s
YXRlZENvcHkoKSkKICAgICAgICAsIG1fY2hhcmFjdGVycyhtX3N0cmluZy5pbXBsKCkgJiYgbV9z
dHJpbmcuaXM4Qml0KCkgPyBudWxscHRyIDogY29uc3RfY2FzdDxVQ2hhcio+KG1fc3RyaW5nLmNo
YXJhY3RlcnMxNigpKSkKICAgIHsKICAgIH0KCiAgICBPcGFxdWVKU1N0cmluZyhjb25zdCBMQ2hh
ciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgIDogbV9zdHJpbmcoY2hhcmFj
dGVycywgbGVuZ3RoKQogICAgICAgICwgbV9jaGFyYWN0ZXJzKG51bGxwdHIpCiAgICB7CiAgICB9
CgogICAgT3BhcXVlSlNTdHJpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCkKICAgICAgICA6IG1fc3RyaW5nKGNoYXJhY3RlcnMsIGxlbmd0aCkKICAgICAgICAsIG1f
Y2hhcmFjdGVycyhtX3N0cmluZy5pbXBsKCkgJiYgbV9zdHJpbmcuaXM4Qml0KCkgPyBudWxscHRy
IDogY29uc3RfY2FzdDxVQ2hhcio+KG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpKSkKICAgIHsKICAg
IH0KCiAgICBTdHJpbmcgbV9zdHJpbmc7CgoKICAgIHN0ZDo6YXRvbWljPFVDaGFyKj4gbV9jaGFy
YWN0ZXJzOwp9OwojIDMwICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NS
ZWYuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RlY3Qu
aCIgMQojIDMxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaCIg
MgoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRm9yd2FyZGluZ0hlYWRlcnMvSmF2
YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaCIgMQojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNPYmplY3RSZWYuaCIgMQojIDI4ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmgiCiNkZWZpbmUgSlNPYmplY3RSZWZfaCAKCiMgMSAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL0pT
QmFzZS5oIiAxCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaCIg
MQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5oIgojZGVmaW5l
IEpTQmFzZV9oIAojIDQwICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5o
Igp0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU0NvbnRleHRHcm91cCogSlNDb250ZXh0R3Jv
dXBSZWY7CgoKdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRS
ZWY7CgoKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0dsb2JhbENvbnRleHRSZWY7
CgoKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcqIEpTU3RyaW5nUmVmOwoKCnR5cGVkZWYg
c3RydWN0IE9wYXF1ZUpTQ2xhc3MqIEpTQ2xhc3NSZWY7CgoKdHlwZWRlZiBzdHJ1Y3QgT3BhcXVl
SlNQcm9wZXJ0eU5hbWVBcnJheSogSlNQcm9wZXJ0eU5hbWVBcnJheVJlZjsKCgp0eXBlZGVmIHN0
cnVjdCBPcGFxdWVKU1Byb3BlcnR5TmFtZUFjY3VtdWxhdG9yKiBKU1Byb3BlcnR5TmFtZUFjY3Vt
dWxhdG9yUmVmOwoKCnR5cGVkZWYgdm9pZCAoKkpTVHlwZWRBcnJheUJ5dGVzRGVhbGxvY2F0b3Ip
KHZvaWQqIGJ5dGVzLCB2b2lkKiBkZWFsbG9jYXRvckNvbnRleHQpOwoKCgoKdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNWYWx1ZVJlZjsKCgp0eXBlZGVmIHN0cnVjdCBPcGFx
dWVKU1ZhbHVlKiBKU09iamVjdFJlZjsKCgoKCiN1bmRlZiBKU19FWFBPUlQKCgoKI2RlZmluZSBK
U19FWFBPUlQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKIyA5MCAiLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaCIKZXh0ZXJuICJDIiB7CiMgMTA2
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5oIgpfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBKU1ZhbHVlUmVmIEpTRXZhbHVhdGVTY3JpcHQoSlND
b250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc2NyaXB0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBKU1N0cmluZ1JlZiBzb3VyY2VVUkwsIGludCBzdGFydGluZ0xpbmVOdW1iZXIsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbik7CiMgMTE4ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
QmFzZS5oIgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBib29sIEpTQ2hl
Y2tTY3JpcHRTeW50YXgoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc2NyaXB0LCBKU1N0
cmluZ1JlZiBzb3VyY2VVUkwsIGludCBzdGFydGluZ0xpbmVOdW1iZXIsIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbik7CiMgMTMzICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5o
IgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSB2b2lkIEpTR2FyYmFnZUNv
bGxlY3QoSlNDb250ZXh0UmVmIGN0eCk7CgoKfQoKCgoKI2RlZmluZSBKU0NfT0JKQ19BUElfRU5B
QkxFRCAoZGVmaW5lZChfX2NsYW5nX18pICYmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19HVEtfXykgJiYgKChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQpICYmICFkZWZpbmVkKF9faTM4Nl9fKSkgfHwgKGRlZmluZWQoVEFSR0VUX09TX0lQSE9O
RSkgJiYgVEFSR0VUX09TX0lQSE9ORSkpKQojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaCIgMgojIDMxICIuLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgiIDIKIyAxICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNjcmlwdENvcmUvSlNW
YWx1ZVJlZi5oIiAxCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVl
UmVmLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVm
LmgiCiNkZWZpbmUgSlNWYWx1ZVJlZl9oIAoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNjcmlwdENvcmUvSlNCYXNlLmgiIDEKIyAzMCAiLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgiIDIKIyAxICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNjcmlwdENvcmUvV2Vi
S2l0QXZhaWxhYmlsaXR5LmgiIDEKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L1dlYktpdEF2YWlsYWJpbGl0eS5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvV2ViS2l0QXZhaWxhYmlsaXR5LmgiCiNkZWZpbmUgX19XZWJLaXRBdmFpbGFiaWxpdHlf
XyAKIyA3OSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9XZWJLaXRBdmFpbGFiaWxp
dHkuaCIKI2RlZmluZSBDRl9BVkFJTEFCTEUoX21hYyxfaW9zKSAKI2RlZmluZSBDRl9FTlVNX0FW
QUlMQUJMRShfbWFjLF9pb3MpIAojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9XZWJLaXRBdmFpbGFiaWxpdHkuaCIgMgojIDMx
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaCIgMgojIDQ2ICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaCIKdHlwZWRlZiBlbnVt
IHsKICAgIGtKU1R5cGVVbmRlZmluZWQsCiAgICBrSlNUeXBlTnVsbCwKICAgIGtKU1R5cGVCb29s
ZWFuLAogICAga0pTVHlwZU51bWJlciwKICAgIGtKU1R5cGVTdHJpbmcsCiAgICBrSlNUeXBlT2Jq
ZWN0Cn0gSlNUeXBlOwojIDcxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWVSZWYuaCIKdHlwZWRlZiBlbnVtIHsKICAgIGtKU1R5cGVkQXJyYXlUeXBlSW50OEFycmF5LAog
ICAga0pTVHlwZWRBcnJheVR5cGVJbnQxNkFycmF5LAogICAga0pTVHlwZWRBcnJheVR5cGVJbnQz
MkFycmF5LAogICAga0pTVHlwZWRBcnJheVR5cGVVaW50OEFycmF5LAogICAga0pTVHlwZWRBcnJh
eVR5cGVVaW50OENsYW1wZWRBcnJheSwKICAgIGtKU1R5cGVkQXJyYXlUeXBlVWludDE2QXJyYXks
CiAgICBrSlNUeXBlZEFycmF5VHlwZVVpbnQzMkFycmF5LAogICAga0pTVHlwZWRBcnJheVR5cGVG
bG9hdDMyQXJyYXksCiAgICBrSlNUeXBlZEFycmF5VHlwZUZsb2F0NjRBcnJheSwKICAgIGtKU1R5
cGVkQXJyYXlUeXBlQXJyYXlCdWZmZXIsCiAgICBrSlNUeXBlZEFycmF5VHlwZU5vbmUsCn0gSlNU
eXBlZEFycmF5VHlwZSA7CgoKZXh0ZXJuICJDIiB7CiMgOTYgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oIgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKSBKU1R5cGUgSlNWYWx1ZUdldFR5cGUoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJl
Zik7CiMgMTA1ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaCIK
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgYm9vbCBKU1ZhbHVlSXNVbmRl
ZmluZWQoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSk7CiMgMTE0ICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaCIKX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSkgYm9vbCBKU1ZhbHVlSXNOdWxsKEpTQ29udGV4dFJlZiBjdHgs
IEpTVmFsdWVSZWYgdmFsdWUpOwojIDEyMyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlUmVmLmgiCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGJv
b2wgSlNWYWx1ZUlzQm9vbGVhbihKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKTsK
IyAxMzIgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oIgpfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBib29sIEpTVmFsdWVJc051bWJlcihK
U0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKTsKIyAxNDEgIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oIgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKSBib29sIEpTVmFsdWVJc1N0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1Zh
bHVlUmVmIHZhbHVlKTsKIyAxNTAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNW
YWx1ZVJlZi5oIgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBib29sIEpT
VmFsdWVJc09iamVjdChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKTsKIyAxNjAg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oIgpfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBib29sIEpTVmFsdWVJc09iamVjdE9mQ2xhc3Mo
SlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNDbGFzc1JlZiBqc0NsYXNzKTsK
IyAxNjkgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oIgpfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBib29sIEpTVmFsdWVJc0FycmF5KEpT
Q29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpIDsKIyAxNzggIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oIgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKSBib29sIEpTVmFsdWVJc0RhdGUoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1
ZVJlZiB2YWx1ZSkgOwojIDE4OCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zh
bHVlUmVmLmgiCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIEpTVHlwZWRB
cnJheVR5cGUgSlNWYWx1ZUdldFR5cGVkQXJyYXlUeXBlKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFs
dWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgOwojIDIwMSAiLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgiCl9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpIGJvb2wgSlNWYWx1ZUlzRXF1YWwoSlNDb250ZXh0UmVmIGN0eCwgSlNW
YWx1ZVJlZiBhLCBKU1ZhbHVlUmVmIGIsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiMgMjExICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaCIKX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgYm9vbCBKU1ZhbHVlSXNTdHJpY3RFcXVhbChKU0Nv
bnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIGEsIEpTVmFsdWVSZWYgYik7CiMgMjIyICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaCIKX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSkgYm9vbCBKU1ZhbHVlSXNJbnN0YW5jZU9mQ29uc3RydWN0b3Io
SlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNPYmplY3RSZWYgY29uc3RydWN0
b3IsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiMgMjMyICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWVSZWYuaCIKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVs
dCIpKSkgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChKU0NvbnRleHRSZWYgY3R4KTsK
CgoKCgoKCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIEpTVmFsdWVSZWYg
SlNWYWx1ZU1ha2VOdWxsKEpTQ29udGV4dFJlZiBjdHgpOwojIDI0OSAiLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgiCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VCb29sZWFuKEpTQ29udGV4dFJlZiBj
dHgsIGJvb2wgYm9vbGVhbik7CiMgMjU4ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWVSZWYuaCIKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgSlNW
YWx1ZVJlZiBKU1ZhbHVlTWFrZU51bWJlcihKU0NvbnRleHRSZWYgY3R4LCBkb3VibGUgbnVtYmVy
KTsKIyAyNjggIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5oIgpf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBKU1ZhbHVlUmVmIEpTVmFsdWVN
YWtlU3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmluZyk7CiMgMjc5ICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaCIKX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZUZyb21KU09O
U3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmluZykgOwojIDI5MCAiLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgiCl9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIEpTU3RyaW5nUmVmIEpTVmFsdWVDcmVhdGVKU09OU3Ry
aW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUsIHVuc2lnbmVkIGluZGVudCwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKSA7CiMgMzAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWVSZWYuaCIKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSkgYm9vbCBKU1ZhbHVlVG9Cb29sZWFuKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFs
dWUpOwojIDMxMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmgi
Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGRvdWJsZSBKU1ZhbHVlVG9O
dW1iZXIoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKTsKIyAzMjEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJl
Zi5oIgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBKU1N0cmluZ1JlZiBK
U1ZhbHVlVG9TdHJpbmdDb3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUsIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbik7CiMgMzMxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTVmFsdWVSZWYuaCIKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkg
SlNPYmplY3RSZWYgSlNWYWx1ZVRvT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYg
dmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiMgMzQzICIuLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuaCIKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSkgdm9pZCBKU1ZhbHVlUHJvdGVjdChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVm
IHZhbHVlKTsKIyAzNTMgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJl
Zi5oIgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSB2b2lkIEpTVmFsdWVV
bnByb3RlY3QoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSk7CgoKfQojIDEgIi4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29y
ZS9KU1ZhbHVlUmVmLmgiIDIKIyAzMiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5oIiAyCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL1dlYktpdEF2YWlsYWJpbGl0eS5oIiAxCiMgMzMgIi4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCIgMgoKCgoKIyAxICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjkuMy10aHVtYjIvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC45LjMvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzIDQKIyAzOCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5oIiAyCgoKZXh0ZXJuICJDIiB7CiMgNTAgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCIKZW51bSB7CiAgICBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZU5vbmUgPSAwLAogICAga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSA9IDEgPDwgMSwKICAg
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0gPSAxIDw8IDIsCiAgICBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgPSAxIDw8IDMKfTsKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIEpTUHJv
cGVydHlBdHRyaWJ1dGVzOwoKCgoKCgplbnVtIHsKICAgIGtKU0NsYXNzQXR0cmlidXRlTm9uZSA9
IDAsCiAgICBrSlNDbGFzc0F0dHJpYnV0ZU5vQXV0b21hdGljUHJvdG90eXBlID0gMSA8PCAxCn07
CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBKU0NsYXNzQXR0cmlidXRlczsKIyA5MSAiLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oIgp0eXBlZGVmIHZvaWQKKCpKU09i
amVjdEluaXRpYWxpemVDYWxsYmFjaykgKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9i
amVjdCk7CiMgMTA5ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmgiCnR5cGVkZWYgdm9pZAooKkpTT2JqZWN0RmluYWxpemVDYWxsYmFjaykgKEpTT2JqZWN0UmVm
IG9iamVjdCk7CiMgMTI5ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmgiCnR5cGVkZWYgYm9vbAooKkpTT2JqZWN0SGFzUHJvcGVydHlDYWxsYmFjaykgKEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1l
KTsKIyAxNDYgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCIK
dHlwZWRlZiBKU1ZhbHVlUmVmCigqSlNPYmplY3RHZXRQcm9wZXJ0eUNhbGxiYWNrKSAoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiMgMTY0ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmgiCnR5cGVkZWYgYm9vbAooKkpTT2JqZWN0U2V0UHJvcGVydHlD
YWxsYmFjaykgKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdS
ZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
OwojIDE4MSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oIgp0
eXBlZGVmIGJvb2wKKCpKU09iamVjdERlbGV0ZVByb3BlcnR5Q2FsbGJhY2spIChKU0NvbnRleHRS
ZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKTsKIyAxOTggIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuaCIKdHlwZWRlZiB2b2lkCigqSlNPYmplY3RHZXRQcm9wZXJ0eU5hbWVz
Q2FsbGJhY2spIChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTUHJvcGVy
dHlOYW1lQWNjdW11bGF0b3JSZWYgcHJvcGVydHlOYW1lcyk7CiMgMjE5ICIuLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgiCnR5cGVkZWYgSlNWYWx1ZVJlZgooKkpT
T2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjaykgKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsK
IyAyMzkgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCIKdHlw
ZWRlZiBKU09iamVjdFJlZgooKkpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjaykgKEpT
Q29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIGNvbnN0cnVjdG9yLCBzaXplX3QgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KTsKIyAyNjAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCIK
dHlwZWRlZiBib29sCigqSlNPYmplY3RIYXNJbnN0YW5jZUNhbGxiYWNrKSAoSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgY29uc3RydWN0b3IsIEpTVmFsdWVSZWYgcG9zc2libGVJbnN0YW5j
ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIyAyNzkgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNPYmplY3RSZWYuaCIKdHlwZWRlZiBKU1ZhbHVlUmVmCigqSlNPYmplY3RDb252
ZXJ0VG9UeXBlQ2FsbGJhY2spIChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTVHlwZSB0eXBlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwojIDI5MCAiLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICBj
b25zdCBjaGFyKiBuYW1lOwogICAgSlNPYmplY3RHZXRQcm9wZXJ0eUNhbGxiYWNrIGdldFByb3Bl
cnR5OwogICAgSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIHNldFByb3BlcnR5OwogICAgSlNQ
cm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlczsKfSBKU1N0YXRpY1ZhbHVlOwojIDMwNCAiLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oIgp0eXBlZGVmIHN0cnVj
dCB7CiAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxi
YWNrIGNhbGxBc0Z1bmN0aW9uOwogICAgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlczsK
fSBKU1N0YXRpY0Z1bmN0aW9uOwojIDM0MyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU09iamVjdFJlZi5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgdmVyc2lvbjsKICAgIEpT
Q2xhc3NBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CgogICAgY29uc3QgY2hhciogY2xhc3NOYW1lOwog
ICAgSlNDbGFzc1JlZiBwYXJlbnRDbGFzczsKCiAgICBjb25zdCBKU1N0YXRpY1ZhbHVlKiBzdGF0
aWNWYWx1ZXM7CiAgICBjb25zdCBKU1N0YXRpY0Z1bmN0aW9uKiBzdGF0aWNGdW5jdGlvbnM7Cgog
ICAgSlNPYmplY3RJbml0aWFsaXplQ2FsbGJhY2sgaW5pdGlhbGl6ZTsKICAgIEpTT2JqZWN0Rmlu
YWxpemVDYWxsYmFjayBmaW5hbGl6ZTsKICAgIEpTT2JqZWN0SGFzUHJvcGVydHlDYWxsYmFjayBo
YXNQcm9wZXJ0eTsKICAgIEpTT2JqZWN0R2V0UHJvcGVydHlDYWxsYmFjayBnZXRQcm9wZXJ0eTsK
ICAgIEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBzZXRQcm9wZXJ0eTsKICAgIEpTT2JqZWN0
RGVsZXRlUHJvcGVydHlDYWxsYmFjayBkZWxldGVQcm9wZXJ0eTsKICAgIEpTT2JqZWN0R2V0UHJv
cGVydHlOYW1lc0NhbGxiYWNrIGdldFByb3BlcnR5TmFtZXM7CiAgICBKU09iamVjdENhbGxBc0Z1
bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rpb247CiAgICBKU09iamVjdENhbGxBc0NvbnN0cnVj
dG9yQ2FsbGJhY2sgY2FsbEFzQ29uc3RydWN0b3I7CiAgICBKU09iamVjdEhhc0luc3RhbmNlQ2Fs
bGJhY2sgaGFzSW5zdGFuY2U7CiAgICBKU09iamVjdENvbnZlcnRUb1R5cGVDYWxsYmFjayBjb252
ZXJ0VG9UeXBlOwp9IEpTQ2xhc3NEZWZpbml0aW9uOwojIDM3NCAiLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oIgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKSBleHRlcm4gY29uc3QgSlNDbGFzc0RlZmluaXRpb24ga0pTQ2xhc3NEZWZpbml0
aW9uRW1wdHk7CgoKCgoKCgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBK
U0NsYXNzUmVmIEpTQ2xhc3NDcmVhdGUoY29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRp
b24pOwoKCgoKCgoKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgSlNDbGFz
c1JlZiBKU0NsYXNzUmV0YWluKEpTQ2xhc3NSZWYganNDbGFzcyk7CgoKCgoKCl9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIHZvaWQgSlNDbGFzc1JlbGVhc2UoSlNDbGFzc1Jl
ZiBqc0NsYXNzKTsKIyA0MTAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmpl
Y3RSZWYuaCIKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlKEpTQ29udGV4dFJlZiBjdHgsIEpTQ2xhc3NSZWYganNDbGFzcywgdm9p
ZCogZGF0YSk7CiMgNDIwICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmgiCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIEpTT2JqZWN0UmVm
IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIEpTU3Ry
aW5nUmVmIG5hbWUsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsQXNGdW5jdGlv
bik7CiMgNDMxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgi
Cl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIEpTT2JqZWN0UmVmIEpTT2Jq
ZWN0TWFrZUNvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBjdHgsIEpTQ2xhc3NSZWYganNDbGFzcywg
SlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNhbGxBc0NvbnN0cnVjdG9yKTsKIyA0
NDQgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCIKX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtl
QXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgOwojIDQ1NSAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oIgpfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBKU09iamVjdFJlZiBKU09iamVjdE1ha2VEYXRlKEpTQ29u
dGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIDsKIyA0NjYgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCIKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSkgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3IoSlNDb250ZXh0UmVmIGN0
eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikgOwojIDQ3NyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU09iamVjdFJlZi5oIgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KSBKU09iamVjdFJlZiBKU09iamVjdE1ha2VSZWdFeHAoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikgOwojIDQ5MyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5oIgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBKU09iamVj
dFJlZiBKU09iamVjdE1ha2VGdW5jdGlvbihKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBu
YW1lLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgY29uc3QgSlNTdHJpbmdSZWYgcGFyYW1ldGVy
TmFtZXNbXSwgSlNTdHJpbmdSZWYgYm9keSwgSlNTdHJpbmdSZWYgc291cmNlVVJMLCBpbnQgc3Rh
cnRpbmdMaW5lTnVtYmVyLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwojIDUwMiAiLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oIgpfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKSBKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvdG90eXBlKEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCk7CiMgNTExICIuLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgiCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpIHZvaWQgSlNPYmplY3RTZXRQcm90b3R5cGUoSlNDb250ZXh0UmVmIGN0eCwg
SlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHZhbHVlKTsKIyA1MjAgIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCIKX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSkgYm9vbCBKU09iamVjdEhhc1Byb3BlcnR5KEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lKTsKIyA1MzEg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCIKX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3Bl
cnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwojIDU0MyAiLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oIgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKSB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwg
SlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYg
dmFsdWUsIEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbik7CiMgNTU0ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmgiCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGJvb2wgSlNPYmplY3RE
ZWxldGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3Ry
aW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIyA1NjYgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCIKX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3BlcnR5QXRJ
bmRleChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIHVuc2lnbmVkIHByb3Bl
cnR5SW5kZXgsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiMgNTc4ICIuLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgiCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpIHZvaWQgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVl
UmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwoKCgoKCgoKX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgdm9pZCogSlNPYmplY3RHZXRQcml2YXRlKEpTT2JqZWN0
UmVmIG9iamVjdCk7CiMgNTk2ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2Jq
ZWN0UmVmLmgiCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGJvb2wgSlNP
YmplY3RTZXRQcml2YXRlKEpTT2JqZWN0UmVmIG9iamVjdCwgdm9pZCogZGF0YSk7CiMgNjA1ICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgiCl9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIGJvb2wgSlNPYmplY3RJc0Z1bmN0aW9uKEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCk7CiMgNjE4ICIuLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgiCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHko
ImRlZmF1bHQiKSkpIEpTVmFsdWVSZWYgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihKU0NvbnRleHRS
ZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pOwojIDYyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5oIgpfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBib29sIEpT
T2JqZWN0SXNDb25zdHJ1Y3RvcihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qp
OwojIDYzOSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5oIgpf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSBKU09iamVjdFJlZiBKU09iamVj
dENhbGxBc0NvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbik7CiMgNjQ4ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTT2JqZWN0UmVmLmgiCl9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIEpT
UHJvcGVydHlOYW1lQXJyYXlSZWYgSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyhKU0NvbnRleHRS
ZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QpOwoKCgoKCgoKX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiZGVmYXVsdCIpKSkgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU1Byb3BlcnR5TmFtZUFy
cmF5UmV0YWluKEpTUHJvcGVydHlOYW1lQXJyYXlSZWYgYXJyYXkpOwoKCgoKCgpfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSB2b2lkIEpTUHJvcGVydHlOYW1lQXJyYXlSZWxl
YXNlKEpTUHJvcGVydHlOYW1lQXJyYXlSZWYgYXJyYXkpOwoKCgoKCgoKX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkgc2l6ZV90IEpTUHJvcGVydHlOYW1lQXJyYXlHZXRDb3Vu
dChKU1Byb3BlcnR5TmFtZUFycmF5UmVmIGFycmF5KTsKIyA2ODAgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuaCIKX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSkgSlNTdHJpbmdSZWYgSlNQcm9wZXJ0eU5hbWVBcnJheUdldE5hbWVBdEluZGV4
KEpTUHJvcGVydHlOYW1lQXJyYXlSZWYgYXJyYXksIHNpemVfdCBpbmRleCk7CgoKCgoKCgpfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKSB2b2lkIEpTUHJvcGVydHlOYW1lQWNj
dW11bGF0b3JBZGROYW1lKEpTUHJvcGVydHlOYW1lQWNjdW11bGF0b3JSZWYgYWNjdW11bGF0b3Is
IEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSk7CgoKfQojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oIiAy
CiMgMzMgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oIiAyCgoK
CnN0cnVjdCBTdGF0aWNWYWx1ZUVudHJ5IHsKICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXpl
X3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXpl
KSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0
ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVy
YXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7
IHJldHVybiBsb2NhdGlvbjsgfSBwcml2YXRlOiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0Zv
cmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvOwpwdWJsaWM6CiAgICBTdGF0aWNWYWx1ZUVudHJ5
KEpTT2JqZWN0R2V0UHJvcGVydHlDYWxsYmFjayBfZ2V0UHJvcGVydHksIEpTT2JqZWN0U2V0UHJv
cGVydHlDYWxsYmFjayBfc2V0UHJvcGVydHksIEpTUHJvcGVydHlBdHRyaWJ1dGVzIF9hdHRyaWJ1
dGVzLCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKICAgIDogZ2V0UHJvcGVydHkoX2dldFByb3BlcnR5
KSwgc2V0UHJvcGVydHkoX3NldFByb3BlcnR5KSwgYXR0cmlidXRlcyhfYXR0cmlidXRlcyksIHBy
b3BlcnR5TmFtZVJlZihPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHByb3BlcnR5TmFtZSkpCiAgICB7
CiAgICB9CgogICAgSlNPYmplY3RHZXRQcm9wZXJ0eUNhbGxiYWNrIGdldFByb3BlcnR5OwogICAg
SlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIHNldFByb3BlcnR5OwogICAgSlNQcm9wZXJ0eUF0
dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlO
YW1lUmVmOwp9OwoKc3RydWN0IFN0YXRpY0Z1bmN0aW9uRW50cnkgewogICAgcHVibGljOiB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJh
dG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQg
b3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXpl
KTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHAp
OyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9u
KSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHByaXZhdGU6IHR5cGVkZWYgaW50IF9f
dGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87CnB1YmxpYzoKICAgIFN0
YXRpY0Z1bmN0aW9uRW50cnkoSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIF9jYWxsQXNG
dW5jdGlvbiwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgX2F0dHJpYnV0ZXMpCiAgICAgICAgOiBjYWxs
QXNGdW5jdGlvbihfY2FsbEFzRnVuY3Rpb24pLCBhdHRyaWJ1dGVzKF9hdHRyaWJ1dGVzKQogICAg
ewogICAgfQoKICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsQXNGdW5jdGlv
bjsKICAgIEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7Cn07Cgp0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGljVmFsdWVFbnRyeT4+
IE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZTsKdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxT
dHJpbmdJbXBsPiwgc3RkOjp1bmlxdWVfcHRyPFN0YXRpY0Z1bmN0aW9uRW50cnk+PiBPcGFxdWVK
U0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU7CgpzdHJ1Y3QgT3BhcXVlSlNDbGFzczsKCgoKc3Ry
dWN0IE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSB7CiAgICBwcml2YXRlOiBPcGFxdWVKU0NsYXNz
Q29udGV4dERhdGEoY29uc3QgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhJikgPSBkZWxldGU7IE9w
YXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSYgb3BlcmF0b3I9KGNvbnN0IE9wYXF1ZUpTQ2xhc3NDb250
ZXh0RGF0YSYpID0gZGVsZXRlOzsgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2
b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCog
cCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJu
IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHAp
IHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXpl
KSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0
ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhz
aXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxv
Y2F0aW9uOyB9IHByaXZhdGU6IHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNv
bG9uQWZ0ZXJUaGlzTWFjcm87CnB1YmxpYzoKICAgIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YShK
U0M6OlZNJiwgT3BhcXVlSlNDbGFzcyopOwoKCgoKCgoKICAgIFJlZlB0cjxPcGFxdWVKU0NsYXNz
PiBtX2NsYXNzOwoKICAgIHN0ZDo6dW5pcXVlX3B0cjxPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVz
VGFibGU+IHN0YXRpY1ZhbHVlczsKICAgIHN0ZDo6dW5pcXVlX3B0cjxPcGFxdWVKU0NsYXNzU3Rh
dGljRnVuY3Rpb25zVGFibGU+IHN0YXRpY0Z1bmN0aW9uczsKICAgIEpTQzo6V2VhazxKU0M6OkpT
T2JqZWN0PiBjYWNoZWRQcm90b3R5cGU7Cn07CgpzdHJ1Y3QgT3BhcXVlSlNDbGFzcyA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxPcGFxdWVKU0NsYXNzPiB7CiAgICBzdGF0aWMgUmVmPE9w
YXF1ZUpTQ2xhc3M+IGNyZWF0ZShjb25zdCBKU0NsYXNzRGVmaW5pdGlvbiopOwogICAgc3RhdGlj
IFJlZjxPcGFxdWVKU0NsYXNzPiBjcmVhdGVOb0F1dG9tYXRpY1Byb3RvdHlwZShjb25zdCBKU0Ns
YXNzRGVmaW5pdGlvbiopOwogICAgfk9wYXF1ZUpTQ2xhc3MoKTsKCiAgICBTdHJpbmcgY2xhc3NO
YW1lKCk7CiAgICBPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGUqIHN0YXRpY1ZhbHVlcyhK
U0M6OkV4ZWNTdGF0ZSopOwogICAgT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBz
dGF0aWNGdW5jdGlvbnMoSlNDOjpFeGVjU3RhdGUqKTsKICAgIEpTQzo6SlNPYmplY3QqIHByb3Rv
dHlwZShKU0M6OkV4ZWNTdGF0ZSopOwoKICAgIE9wYXF1ZUpTQ2xhc3MqIHBhcmVudENsYXNzOwog
ICAgT3BhcXVlSlNDbGFzcyogcHJvdG90eXBlQ2xhc3M7CgogICAgSlNPYmplY3RJbml0aWFsaXpl
Q2FsbGJhY2sgaW5pdGlhbGl6ZTsKICAgIEpTT2JqZWN0RmluYWxpemVDYWxsYmFjayBmaW5hbGl6
ZTsKICAgIEpTT2JqZWN0SGFzUHJvcGVydHlDYWxsYmFjayBoYXNQcm9wZXJ0eTsKICAgIEpTT2Jq
ZWN0R2V0UHJvcGVydHlDYWxsYmFjayBnZXRQcm9wZXJ0eTsKICAgIEpTT2JqZWN0U2V0UHJvcGVy
dHlDYWxsYmFjayBzZXRQcm9wZXJ0eTsKICAgIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlDYWxsYmFj
ayBkZWxldGVQcm9wZXJ0eTsKICAgIEpTT2JqZWN0R2V0UHJvcGVydHlOYW1lc0NhbGxiYWNrIGdl
dFByb3BlcnR5TmFtZXM7CiAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFz
RnVuY3Rpb247CiAgICBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2FsbEFzQ29u
c3RydWN0b3I7CiAgICBKU09iamVjdEhhc0luc3RhbmNlQ2FsbGJhY2sgaGFzSW5zdGFuY2U7CiAg
ICBKU09iamVjdENvbnZlcnRUb1R5cGVDYWxsYmFjayBjb252ZXJ0VG9UeXBlOwoKcHJpdmF0ZToK
ICAgIGZyaWVuZCBzdHJ1Y3QgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOwoKICAgIE9wYXF1ZUpT
Q2xhc3MoKTsKICAgIE9wYXF1ZUpTQ2xhc3MoY29uc3QgT3BhcXVlSlNDbGFzcyYpOwogICAgT3Bh
cXVlSlNDbGFzcyhjb25zdCBKU0NsYXNzRGVmaW5pdGlvbiosIE9wYXF1ZUpTQ2xhc3MqIHByb3Rv
Q2xhc3MpOwoKICAgIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSYgY29udGV4dERhdGEoSlNDOjpF
eGVjU3RhdGUqKTsKCgogICAgU3RyaW5nIG1fY2xhc3NOYW1lOwogICAgc3RkOjp1bmlxdWVfcHRy
PE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4gbV9zdGF0aWNWYWx1ZXM7CiAgICBzdGQ6
OnVuaXF1ZV9wdHI8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPiBtX3N0YXRpY0Z1
bmN0aW9uczsKfTsKIyAzMCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCIKI2RlZmluZSBK
U0dsb2JhbExleGljYWxFbnZpcm9ubWVudF9oIAoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmgiIDEKIyAzMCAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5o
IgojZGVmaW5lIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3RfaCAKCgoKIyAxICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgiIDEKIyAzMCAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
IgojZGVmaW5lIEpTU3ltYm9sVGFibGVPYmplY3RfaCAKCiMgMSAiLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaCIKI2RlZmluZSBKU1Njb3BlX2ggCgojIDEgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaCIgMQojIDI3ICIuLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmgiCiNkZWZpbmUgR2V0
UHV0SW5mb19oIAoKCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIFN0cnVjdHVyZTsKY2xhc3MgV2F0
Y2hwb2ludFNldDsKY2xhc3MgSlNMZXhpY2FsRW52aXJvbm1lbnQ7CgplbnVtIFJlc29sdmVNb2Rl
IHsKICAgIFRocm93SWZOb3RGb3VuZCwKICAgIERvTm90VGhyb3dJZk5vdEZvdW5kCn07CgplbnVt
IFJlc29sdmVUeXBlIHsKCiAgICBHbG9iYWxQcm9wZXJ0eSwKICAgIEdsb2JhbFZhciwKICAgIEds
b2JhbExleGljYWxWYXIsCiAgICBDbG9zdXJlVmFyLAogICAgTG9jYWxDbG9zdXJlVmFyLAogICAg
TW9kdWxlVmFyLAoKCgogICAgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLAog
ICAgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywKICAgIEdsb2JhbExleGljYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzLAogICAgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3MsCgoKCgogICAgVW5yZXNvbHZlZFByb3BlcnR5LAogICAgVW5yZXNvbHZlZFByb3BlcnR5V2l0
aFZhckluamVjdGlvbkNoZWNrcywKCgogICAgRHluYW1pYwp9OwoKZW51bSBjbGFzcyBJbml0aWFs
aXphdGlvbk1vZGUgOiB1bnNpZ25lZCB7CiAgICBJbml0aWFsaXphdGlvbiwKICAgIENvbnN0SW5p
dGlhbGl6YXRpb24sCiAgICBOb3RJbml0aWFsaXphdGlvbgp9OwoKaW5saW5lIF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fKSkgY29uc3QgY2hhciogcmVzb2x2ZU1vZGVOYW1lKFJlc29s
dmVNb2RlIHJlc29sdmVNb2RlKQp7CiAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgbmFtZXNb
XSA9IHsKICAgICAgICAiVGhyb3dJZk5vdEZvdW5kIiwKICAgICAgICAiRG9Ob3RUaHJvd0lmTm90
Rm91bmQiCiAgICB9OwogICAgcmV0dXJuIG5hbWVzW3Jlc29sdmVNb2RlXTsKfQoKaW5saW5lIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgY29uc3QgY2hhciogcmVzb2x2ZVR5cGVO
YW1lKFJlc29sdmVUeXBlIHR5cGUpCnsKICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBuYW1l
c1tdID0gewogICAgICAgICJHbG9iYWxQcm9wZXJ0eSIsCiAgICAgICAgIkdsb2JhbFZhciIsCiAg
ICAgICAgIkdsb2JhbExleGljYWxWYXIiLAogICAgICAgICJDbG9zdXJlVmFyIiwKICAgICAgICAi
TG9jYWxDbG9zdXJlVmFyIiwKICAgICAgICAiTW9kdWxlVmFyIiwKICAgICAgICAiR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiwKICAgICAgICAiR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcyIsCiAgICAgICAgIkdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzIiwKICAgICAgICAiQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MiLAogICAg
ICAgICJVbnJlc29sdmVkUHJvcGVydHkiLAogICAgICAgICJVbnJlc29sdmVkUHJvcGVydHlXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzIiwKICAgICAgICAiRHluYW1pYyIKICAgIH07CiAgICByZXR1cm4g
bmFtZXNbdHlwZV07Cn0KCmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp
IGNvbnN0IGNoYXIqIGluaXRpYWxpemF0aW9uTW9kZU5hbWUoSW5pdGlhbGl6YXRpb25Nb2RlIGlu
aXRpYWxpemF0aW9uTW9kZSkKewogICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWVzW10g
PSB7CiAgICAgICAgIkluaXRpYWxpemF0aW9uIiwKICAgICAgICAiQ29uc3RJbml0aWFsaXphdGlv
biIsCiAgICAgICAgIk5vdEluaXRpYWxpemF0aW9uIgogICAgfTsKICAgIHJldHVybiBuYW1lc1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbGl6YXRpb25Nb2RlKV07Cn0KCmlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgaXNJbml0aWFsaXphdGlvbihJbml0
aWFsaXphdGlvbk1vZGUgaW5pdGlhbGl6YXRpb25Nb2RlKQp7CiAgICBzd2l0Y2ggKGluaXRpYWxp
emF0aW9uTW9kZSkgewogICAgY2FzZSBJbml0aWFsaXphdGlvbk1vZGU6OkluaXRpYWxpemF0aW9u
OgogICAgY2FzZSBJbml0aWFsaXphdGlvbk1vZGU6OkNvbnN0SW5pdGlhbGl6YXRpb246CiAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICBjYXNlIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6
YXRpb246CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgKCh2b2lkKTApOwogICAgcmV0
dXJuIGZhbHNlOwp9CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBS
ZXNvbHZlVHlwZSBtYWtlVHlwZShSZXNvbHZlVHlwZSB0eXBlLCBib29sIG5lZWRzVmFySW5qZWN0
aW9uQ2hlY2tzKQp7CiAgICBpZiAoIW5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgIHJl
dHVybiB0eXBlOwoKICAgIHN3aXRjaCAodHlwZSkgewogICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToK
ICAgICAgICByZXR1cm4gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOwogICAg
Y2FzZSBHbG9iYWxWYXI6CiAgICAgICAgcmV0dXJuIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3M7CiAgICBjYXNlIEdsb2JhbExleGljYWxWYXI6CiAgICAgICAgcmV0dXJuIEdsb2JhbExl
eGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOwogICAgY2FzZSBDbG9zdXJlVmFyOgogICAg
Y2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAgICAgcmV0dXJuIENsb3N1cmVWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzOwogICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHk6CiAgICAgICAgcmV0dXJu
IFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M7CiAgICBjYXNlIE1vZHVs
ZVZhcjoKICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAg
Y2FzZSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgY2FzZSBHbG9iYWxMZXhp
Y2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3M6CiAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3M6CiAgICBjYXNlIER5bmFtaWM6CiAgICAgICAgcmV0dXJuIHR5cGU7CiAgICB9Cgog
ICAgV1RGQ3Jhc2goKTsKICAgIHJldHVybiB0eXBlOwp9CgppbmxpbmUgX19hdHRyaWJ1dGVfXygo
X19hbHdheXNfaW5saW5lX18pKSBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKFJlc29sdmVU
eXBlIHR5cGUpCnsKICAgIHN3aXRjaCAodHlwZSkgewogICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToK
ICAgIGNhc2UgR2xvYmFsVmFyOgogICAgY2FzZSBHbG9iYWxMZXhpY2FsVmFyOgogICAgY2FzZSBD
bG9zdXJlVmFyOgogICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICBjYXNlIE1vZHVsZVZhcjoK
ICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5OgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIGNh
c2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgY2FzZSBHbG9iYWxW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgY2FzZSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrczoKICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3M6CiAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAg
ICBjYXNlIER5bmFtaWM6CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICBkZWZhdWx0OgogICAgICAg
IFdURkNyYXNoKCk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn0KCnN0cnVjdCBSZXNvbHZl
T3AgewogICAgUmVzb2x2ZU9wKFJlc29sdmVUeXBlIHR5cGUsIHNpemVfdCBkZXB0aCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQs
IFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsIHVpbnRwdHJfdCBvcGVyYW5kLCBVbmlxdWVk
U3RyaW5nSW1wbCogaW1wb3J0ZWROYW1lID0gbnVsbHB0cikKICAgICAgICA6IHR5cGUodHlwZSkK
ICAgICAgICAsIGRlcHRoKGRlcHRoKQogICAgICAgICwgc3RydWN0dXJlKHN0cnVjdHVyZSkKICAg
ICAgICAsIGxleGljYWxFbnZpcm9ubWVudChsZXhpY2FsRW52aXJvbm1lbnQpCiAgICAgICAgLCB3
YXRjaHBvaW50U2V0KHdhdGNocG9pbnRTZXQpCiAgICAgICAgLCBvcGVyYW5kKG9wZXJhbmQpCiAg
ICAgICAgLCBpbXBvcnRlZE5hbWUoaW1wb3J0ZWROYW1lKQogICAgewogICAgfQoKICAgIFJlc29s
dmVUeXBlIHR5cGU7CiAgICBzaXplX3QgZGVwdGg7CiAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsK
ICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQ7CiAgICBXYXRjaHBv
aW50U2V0KiB3YXRjaHBvaW50U2V0OwogICAgdWludHB0cl90IG9wZXJhbmQ7CiAgICBSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+IGltcG9ydGVkTmFtZTsKfTsKCmNsYXNzIEdldFB1dEluZm8gewog
ICAgdHlwZWRlZiB1bnNpZ25lZCBPcGVyYW5kOwpwdWJsaWM6CgogICAgc3RhdGljX2Fzc2VydChz
aXplb2YoT3BlcmFuZCkgKiA4ID4gMzAsICJOb3QgZW5vdWdoIGJpdHMgZm9yIEdldFB1dEluZm8i
KTsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtb2RlU2hpZnQgPSAyMDsKICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBpbml0aWFsaXphdGlvblNoaWZ0ID0gMTA7CiAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgdHlwZUJpdHMgPSAoMSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSAtIDE7CiAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW5pdGlhbGl6YXRpb25CaXRzID0gKCgxIDw8IG1vZGVTaGlm
dCkgLSAxKSAmIH50eXBlQml0czsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtb2RlQml0cyA9
ICgoMSA8PCAzMCkgLSAxKSAmIH5pbml0aWFsaXphdGlvbkJpdHMgJiB+dHlwZUJpdHM7CiAgICBz
dGF0aWNfYXNzZXJ0KChtb2RlQml0cyAmIGluaXRpYWxpemF0aW9uQml0cyAmIHR5cGVCaXRzKSA9
PSAweDAsICJUaGVyZSBzaG91bGQgYmUgbm8gaW50ZXJzZWN0aW9uIGJldHdlZW4gUmVzb2x2ZU1v
ZGUgUmVzb2x2ZVR5cGUgYW5kIEluaXRpYWxpemF0aW9uTW9kZSIpOwoKICAgIEdldFB1dEluZm8o
UmVzb2x2ZU1vZGUgcmVzb2x2ZU1vZGUsIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlLCBJbml0aWFs
aXphdGlvbk1vZGUgaW5pdGlhbGl6YXRpb25Nb2RlKQogICAgICAgIDogbV9vcGVyYW5kKChyZXNv
bHZlTW9kZSA8PCBtb2RlU2hpZnQpIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsaXph
dGlvbk1vZGUpIDw8IGluaXRpYWxpemF0aW9uU2hpZnQpIHwgcmVzb2x2ZVR5cGUpCiAgICB7CiAg
ICB9CgogICAgZXhwbGljaXQgR2V0UHV0SW5mbyh1bnNpZ25lZCBvcGVyYW5kKQogICAgICAgIDog
bV9vcGVyYW5kKG9wZXJhbmQpCiAgICB7CiAgICB9CgogICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4obV9vcGVyYW5kICYg
dHlwZUJpdHMpOyB9CiAgICBJbml0aWFsaXphdGlvbk1vZGUgaW5pdGlhbGl6YXRpb25Nb2RlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SW5pdGlhbGl6YXRpb25Nb2RlPigobV9vcGVyYW5k
ICYgaW5pdGlhbGl6YXRpb25CaXRzKSA+PiBpbml0aWFsaXphdGlvblNoaWZ0KTsgfQogICAgUmVz
b2x2ZU1vZGUgcmVzb2x2ZU1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZXNvbHZl
TW9kZT4oKG1fb3BlcmFuZCAmIG1vZGVCaXRzKSA+PiBtb2RlU2hpZnQpOyB9CiAgICB1bnNpZ25l
ZCBvcGVyYW5kKCkgeyByZXR1cm4gbV9vcGVyYW5kOyB9Cgpwcml2YXRlOgogICAgT3BlcmFuZCBt
X29wZXJhbmQ7Cn07CgplbnVtIEdldE9yUHV0IHsgR2V0LCBQdXQgfTsKCn0KIyAzMCAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oIiAyCgoKbmFtZXNwYWNlIEpT
QyB7CgpjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CmNsYXNzIFdhdGNocG9pbnRTZXQ7CmNsYXNz
IFZhcmlhYmxlRW52aXJvbm1lbnQ7CgpjbGFzcyBKU1Njb3BlIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewpwdWJsaWM6CiAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OwoKICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICBzdGF0aWMgc2l6
ZV90IG9mZnNldE9mTmV4dCgpOwoKICAgIHN0YXRpYyBKU09iamVjdCogb2JqZWN0QXRTY29wZShK
U1Njb3BlKik7CgogICAgc3RhdGljIEpTT2JqZWN0KiByZXNvbHZlKEV4ZWNTdGF0ZSosIEpTU2Nv
cGUqLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICBzdGF0aWMgUmVzb2x2ZU9wIGFic3RyYWN0UmVz
b2x2ZShFeGVjU3RhdGUqLCBzaXplX3QgZGVwdGhPZmZzZXQsIEpTU2NvcGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgR2V0T3JQdXQsIFJlc29sdmVUeXBlLCBJbml0aWFsaXphdGlvbk1vZGUpOwoKICAg
IHN0YXRpYyBib29sIGhhc0NvbnN0YW50U2NvcGUoUmVzb2x2ZVR5cGUpOwogICAgc3RhdGljIEpT
U2NvcGUqIGNvbnN0YW50U2NvcGVGb3JDb2RlQmxvY2soUmVzb2x2ZVR5cGUsIENvZGVCbG9jayop
OwoKICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiwgVmFy
aWFibGVFbnZpcm9ubWVudCYgcmVzdWx0KTsKCiAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CgogICAgYm9vbCBpc1ZhclNjb3BlKCk7CiAgICBib29s
IGlzTGV4aWNhbFNjb3BlKCk7CiAgICBib29sIGlzTW9kdWxlU2NvcGUoKTsKICAgIGJvb2wgaXND
YXRjaFNjb3BlKCk7CiAgICBib29sIGlzRnVuY3Rpb25OYW1lU2NvcGVPYmplY3QoKTsKCiAgICBi
b29sIGlzTmVzdGVkTGV4aWNhbFNjb3BlKCk7CgogICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGJlZ2lu
KCk7CiAgICBTY29wZUNoYWluSXRlcmF0b3IgZW5kKCk7CiAgICBKU1Njb3BlKiBuZXh0KCk7Cgog
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpOwogICAgVk0qIHZtKCk7CiAgICBKU09i
amVjdCogZ2xvYmFsVGhpcygpOwoKcHJvdGVjdGVkOgogICAgSlNTY29wZShWTSYsIFN0cnVjdHVy
ZSosIEpTU2NvcGUqIG5leHQpOwoKcHJpdmF0ZToKICAgIFdyaXRlQmFycmllcjxKU1Njb3BlPiBt
X25leHQ7Cn07CgppbmxpbmUgSlNTY29wZTo6SlNTY29wZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU1Njb3BlKiBuZXh0KQogICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAsIG1f
bmV4dCh2bSwgdGhpcywgbmV4dCwgV3JpdGVCYXJyaWVyPEpTU2NvcGU+OjpNYXlCZU51bGwpCnsK
fQoKY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9yIHsKcHVibGljOgogICAgU2NvcGVDaGFpbkl0ZXJh
dG9yKEpTU2NvcGUqIG5vZGUpCiAgICAgICAgOiBtX25vZGUobm9kZSkKICAgIHsKICAgIH0KCiAg
ICBKU09iamVjdCogZ2V0KCkgY29uc3QgeyByZXR1cm4gSlNTY29wZTo6b2JqZWN0QXRTY29wZSht
X25vZGUpOyB9CiAgICBKU09iamVjdCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIEpTU2Nv
cGU6Om9iamVjdEF0U2NvcGUobV9ub2RlKTsgfQogICAgSlNTY29wZSogc2NvcGUoKSBjb25zdCB7
IHJldHVybiBtX25vZGU7IH0KCiAgICBTY29wZUNoYWluSXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7
IG1fbm9kZSA9IG1fbm9kZS0+bmV4dCgpOyByZXR1cm4gKnRoaXM7IH0KCgoKICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTY29wZUNoYWluSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBt
X25vZGUgPT0gb3RoZXIubV9ub2RlOyB9CiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2NvcGVD
aGFpbkl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9ub2RlICE9IG90aGVyLm1fbm9k
ZTsgfQoKcHJpdmF0ZToKICAgIEpTU2NvcGUqIG1fbm9kZTsKfTsKCmlubGluZSBTY29wZUNoYWlu
SXRlcmF0b3IgSlNTY29wZTo6YmVnaW4oKQp7CiAgICByZXR1cm4gU2NvcGVDaGFpbkl0ZXJhdG9y
KHRoaXMpOwp9CgppbmxpbmUgU2NvcGVDaGFpbkl0ZXJhdG9yIEpTU2NvcGU6OmVuZCgpCnsKICAg
IHJldHVybiBTY29wZUNoYWluSXRlcmF0b3IoMCk7Cn0KCmlubGluZSBKU1Njb3BlKiBKU1Njb3Bl
OjpuZXh0KCkKewogICAgcmV0dXJuIG1fbmV4dC5nZXQoKTsKfQoKaW5saW5lIEpTR2xvYmFsT2Jq
ZWN0KiBKU1Njb3BlOjpnbG9iYWxPYmplY3QoKQp7CiAgICByZXR1cm4gc3RydWN0dXJlKCktPmds
b2JhbE9iamVjdCgpOwp9CgppbmxpbmUgVk0qIEpTU2NvcGU6OnZtKCkKewogICAgcmV0dXJuIE1h
cmtlZEJsb2NrOjpibG9ja0Zvcih0aGlzKS0+dm0oKTsKfQoKaW5saW5lIFJlZ2lzdGVyJiBSZWdp
c3Rlcjo6b3BlcmF0b3I9KEpTU2NvcGUqIHNjb3BlKQp7CiAgICAqdGhpcyA9IEpTVmFsdWUoc2Nv
cGUpOwogICAgcmV0dXJuICp0aGlzOwp9CgppbmxpbmUgSlNTY29wZSogUmVnaXN0ZXI6OnNjb3Bl
KCkgY29uc3QKewogICAgcmV0dXJuIGpzQ2FzdDxKU1Njb3BlKj4oanNWYWx1ZSgpKTsKfQoKaW5s
aW5lIEpTR2xvYmFsT2JqZWN0KiBFeGVjU3RhdGU6OmxleGljYWxHbG9iYWxPYmplY3QoKSBjb25z
dAp7CiAgICByZXR1cm4gY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwp9CgppbmxpbmUgc2l6ZV90
IEpTU2NvcGU6Om9mZnNldE9mTmV4dCgpCnsKICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxw
dHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxKU1Njb3BlKj4oMHg0MDAwKS0+bV9uZXh0KSkg
LSAweDQwMDApOwp9Cgp9CiMgMzMgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3ltYm9sVGFibGVPYmplY3QuaCIgMgoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIiAxCiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgiCiNkZWZpbmUgU3ltYm9sVGFibGVfaCAKCgojIDEg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0YW50TW9kZS5oIiAxCiMg
MjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0YW50TW9kZS5oIgoj
ZGVmaW5lIENvbnN0YW50TW9kZV9oIAoKCgpuYW1lc3BhY2UgSlNDIHsKCmVudW0gQ29uc3RhbnRN
b2RlIHsgSXNDb25zdGFudCwgSXNWYXJpYWJsZSB9OwoKaW5saW5lIENvbnN0YW50TW9kZSBtb2Rl
Rm9ySXNDb25zdGFudChib29sIGlzQ29uc3RhbnQpCnsKICAgIHJldHVybiBpc0NvbnN0YW50ID8g
SXNDb25zdGFudCA6IElzVmFyaWFibGU7Cn0KCn0KCm5hbWVzcGFjZSBXVEYgewoKdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpDb25zdGFudE1vZGUpOwoKfQojIDM0ICIuLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIiAyCiMgMSAiLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRWYWx1ZS5oIiAxCiMgMjcg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVmFsdWUuaCIKI2Rl
ZmluZSBJbmZlcnJlZFZhbHVlX2ggCgoKCgoKbmFtZXNwYWNlIEpTQyB7CiMgNDMgIi4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVmFsdWUuaCIKY2xhc3MgSW5mZXJy
ZWRWYWx1ZSA6IHB1YmxpYyBKU0NlbGwgewpwdWJsaWM6CiAgICB0eXBlZGVmIEpTQ2VsbCBCYXNl
OwoKICAgIHN0YXRpYyBJbmZlcnJlZFZhbHVlKiBjcmVhdGUoVk0mKTsKCiAgICBzdGF0aWMgY29u
c3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CgogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CgogICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwoKICAgIHByb3RlY3RlZDogc3RhdGljIGNv
bnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdCA6OkpTQzo6
Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsKIyA2OSAiLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRWYWx1ZS5oIgogICAgSlNWYWx1ZSBpbmZl
cnJlZFZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQoKCiAgICBXYXRjaHBvaW50U3Rh
dGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NldC5zdGF0ZSgpOyB9CiAgICBib29sIGlzU3Rp
bGxWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0LmlzU3RpbGxWYWxpZCgpOyB9CiAgICBib29s
IGhhc0JlZW5JbnZhbGlkYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0Lmhhc0JlZW5JbnZhbGlk
YXRlZCgpOyB9CiAgICB2b2lkIGFkZChXYXRjaHBvaW50KiB3YXRjaHBvaW50KSB7IG1fc2V0LmFk
ZCh3YXRjaHBvaW50KTsgfQoKICAgIHZvaWQgbm90aWZ5V3JpdGUoVk0mIHZtLCBKU1ZhbHVlIHZh
bHVlLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiAgICB7CiAgICAgICAgaWYgKF9fYnVpbHRp
bl9leHBlY3QoISEobV9zZXQuc3RhdGVPbkpTVGhyZWFkKCkgPT0gSXNJbnZhbGlkYXRlZCksIDEp
KQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgbm90aWZ5V3JpdGVTbG93KHZtLCB2YWx1ZSwg
ZGV0YWlsKTsKICAgIH0KCiAgICB2b2lkIG5vdGlmeVdyaXRlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1
ZSwgY29uc3QgY2hhciogcmVhc29uKQogICAgewogICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0
KCEhKG1fc2V0LnN0YXRlT25KU1RocmVhZCgpID09IElzSW52YWxpZGF0ZWQpLCAxKSkKICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgIG5vdGlmeVdyaXRlU2xvdyh2bSwgdmFsdWUsIHJlYXNvbik7
CiAgICB9CgogICAgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAg
IHsKICAgICAgICBtX3ZhbHVlLmNsZWFyKCk7CiAgICAgICAgbV9zZXQuaW52YWxpZGF0ZShkZXRh
aWwpOwogICAgfQoKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0
cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKCgoKCgogICAgY2xhc3Mg
VmFsdWVDbGVhbnVwIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIgewogICAgICAgIHB1
YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2
b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXpl
KTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsg
fSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RN
YWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpm
YXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lk
KiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSBwcml2YXRlOiB0eXBl
ZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvOwoKICAg
IHB1YmxpYzoKICAgICAgICBWYWx1ZUNsZWFudXAoSW5mZXJyZWRWYWx1ZSopOwogICAgICAgIHZp
cnR1YWwgflZhbHVlQ2xlYW51cCgpOwoKICAgIHByb3RlY3RlZDoKICAgICAgICB2b2lkIGZpbmFs
aXplVW5jb25kaXRpb25hbGx5KCkgb3ZlcnJpZGU7CgogICAgcHJpdmF0ZToKICAgICAgICBJbmZl
cnJlZFZhbHVlKiBtX293bmVyOwogICAgfTsKCnByaXZhdGU6CiAgICBJbmZlcnJlZFZhbHVlKFZN
Jik7CiAgICB+SW5mZXJyZWRWYWx1ZSgpOwoKICAgIHZvaWQgbm90aWZ5V3JpdGVTbG93KFZNJiwg
SlNWYWx1ZSwgY29uc3QgRmlyZURldGFpbCYpOwogICAgdm9pZCBub3RpZnlXcml0ZVNsb3coVk0m
LCBKU1ZhbHVlLCBjb25zdCBjaGFyKiByZWFzb24pOwoKICAgIGZyaWVuZCBjbGFzcyBWYWx1ZUNs
ZWFudXA7CgogICAgSW5saW5lV2F0Y2hwb2ludFNldCBtX3NldDsKICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiBtX3ZhbHVlOwogICAgc3RkOjp1bmlxdWVfcHRyPFZhbHVlQ2xlYW51cD4gbV9jbGVh
bnVwOwp9OwoKCgoKCn0KIyAzNSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sVGFibGUuaCIgMgoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZWRBcmd1bWVudHNUYWJsZS5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50c1RhYmxlLmgiCiNkZWZpbmUgU2NvcGVkQXJndW1l
bnRzVGFibGVfaCAKCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
b3BlT2Zmc2V0LmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2NvcGVPZmZzZXQuaCIKI2RlZmluZSBTY29wZU9mZnNldF9oIAoKIyAxICIuLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljT2Zmc2V0LmgiIDEKIyAyNyAiLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY09mZnNldC5oIgojZGVmaW5lIEdlbmVy
aWNPZmZzZXRfaCAKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC45LjMtdGh1bWIyL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLzQuOS4zL2luY2x1ZGUtZml4ZWQvbGltaXRzLmgiIDEgMyA0CiMgMzAgIi4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNPZmZzZXQuaCIgMgoKCm5hbWVzcGFj
ZSBKU0MgewoKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmNsYXNzIEdlbmVyaWNPZmZzZXQgewogICAg
cHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9
IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNp
emUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHAp
OyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFz
dE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6
OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZv
aWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHByaXZhdGU6IHR5
cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm87CnB1
YmxpYzoKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnZhbGlkT2Zmc2V0ID0gKDIxNDc0ODM2
NDcgKiAyVSArIDFVKTsKCiAgICBHZW5lcmljT2Zmc2V0KCkKICAgICAgICA6IG1fb2Zmc2V0KGlu
dmFsaWRPZmZzZXQpCiAgICB7CiAgICB9CgogICAgZXhwbGljaXQgR2VuZXJpY09mZnNldCh1bnNp
Z25lZCBvZmZzZXQpCiAgICAgICAgOiBtX29mZnNldChvZmZzZXQpCiAgICB7CiAgICB9CgogICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX29mZnNldCA9PSBpbnZhbGlkT2Zmc2V0
OyB9CgogICAgdW5zaWduZWQgb2Zmc2V0VW5jaGVja2VkKCkgY29uc3QKICAgIHsKICAgICAgICBy
ZXR1cm4gbV9vZmZzZXQ7CiAgICB9CgogICAgdW5zaWduZWQgb2Zmc2V0KCkgY29uc3QKICAgIHsK
ICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OwogICAgfQoKICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBUJiBvdGhlcikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4g
bV9vZmZzZXQgPT0gb3RoZXIub2Zmc2V0VW5jaGVja2VkKCk7CiAgICB9CiAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgVCYgb3RoZXIpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fb2Zmc2V0
ICE9IG90aGVyLm9mZnNldFVuY2hlY2tlZCgpOwogICAgfQogICAgYm9vbCBvcGVyYXRvcjwoY29u
c3QgVCYgb3RoZXIpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fb2Zmc2V0IDwgb3RoZXIu
b2Zmc2V0VW5jaGVja2VkKCk7CiAgICB9CiAgICBib29sIG9wZXJhdG9yPihjb25zdCBUJiBvdGhl
cikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9vZmZzZXQgPiBvdGhlci5vZmZzZXRVbmNo
ZWNrZWQoKTsKICAgIH0KICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBUJiBvdGhlcikgY29uc3QK
ICAgIHsKICAgICAgICByZXR1cm4gbV9vZmZzZXQgPD0gb3RoZXIub2Zmc2V0VW5jaGVja2VkKCk7
CiAgICB9CiAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgVCYgb3RoZXIpIGNvbnN0CiAgICB7CiAg
ICAgICAgcmV0dXJuIG1fb2Zmc2V0ID49IG90aGVyLm9mZnNldFVuY2hlY2tlZCgpOwogICAgfQoK
ICAgIFQgb3BlcmF0b3IrKGludCB2YWx1ZSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gVChv
ZmZzZXQoKSArIHZhbHVlKTsKICAgIH0KICAgIFQgb3BlcmF0b3ItKGludCB2YWx1ZSkgY29uc3QK
ICAgIHsKICAgICAgICByZXR1cm4gVChvZmZzZXQoKSAtIHZhbHVlKTsKICAgIH0KICAgIFQmIG9w
ZXJhdG9yKz0oaW50IHZhbHVlKQogICAgewogICAgICAgIHJldHVybiAqdGhpcyA9ICp0aGlzICsg
dmFsdWU7CiAgICB9CiAgICBUJiBvcGVyYXRvci09KGludCB2YWx1ZSkKICAgIHsKICAgICAgICBy
ZXR1cm4gKnRoaXMgPSAqdGhpcyAtIHZhbHVlOwogICAgfQoKcHJpdmF0ZToKICAgIHVuc2lnbmVk
IG1fb2Zmc2V0Owp9OwoKfQojIDMwICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZU9mZnNldC5oIiAyCgoKbmFtZXNwYWNlIEpTQyB7CgoKCmNsYXNzIFNjb3BlT2Zmc2V0
IDogcHVibGljIEdlbmVyaWNPZmZzZXQ8U2NvcGVPZmZzZXQ+IHsKcHVibGljOgogICAgU2NvcGVP
ZmZzZXQoKSB7IH0KCiAgICBleHBsaWNpdCBTY29wZU9mZnNldCh1bnNpZ25lZCBvZmZzZXQpCiAg
ICAgICAgOiBHZW5lcmljT2Zmc2V0KG9mZnNldCkKICAgIHsKICAgIH0KCiAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdDsKfTsKCn0KIyAzMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzVGFibGUuaCIgMgoKCm5hbWVzcGFjZSBKU0MgewoK
CgoKCgoKY2xhc3MgU2NvcGVkQXJndW1lbnRzVGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
cHVibGljOgogICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1v
cnRhbDsKCnByaXZhdGU6CiAgICBTY29wZWRBcmd1bWVudHNUYWJsZShWTSYpOwogICAgflNjb3Bl
ZEFyZ3VtZW50c1RhYmxlKCk7CgpwdWJsaWM6CiAgICBzdGF0aWMgU2NvcGVkQXJndW1lbnRzVGFi
bGUqIGNyZWF0ZShWTSYpOwogICAgc3RhdGljIFNjb3BlZEFyZ3VtZW50c1RhYmxlKiBjcmVhdGUo
Vk0mLCB1aW50MzJfdCBsZW5ndGgpOwoKICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1
Y3Rpb24gPSB0cnVlOwogICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKCiAgICBTY29w
ZWRBcmd1bWVudHNUYWJsZSogY2xvbmUoVk0mKTsKCiAgICB1aW50MzJfdCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgU2NvcGVkQXJndW1lbnRzVGFibGUqIHNldExlbmd0
aChWTSYsIHVpbnQzMl90IG5ld0xlbmd0aCk7CgogICAgU2NvcGVPZmZzZXQgZ2V0KHVpbnQzMl90
IGkpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8U2NvcGVkQXJndW1lbnRz
VGFibGUqPih0aGlzKS0+YXQoaSk7CiAgICB9CgogICAgdm9pZCBsb2NrKCkKICAgIHsKICAgICAg
ICBtX2xvY2tlZCA9IHRydWU7CiAgICB9CgogICAgU2NvcGVkQXJndW1lbnRzVGFibGUqIHNldChW
TSYsIHVpbnQzMl90IGluZGV4LCBTY29wZU9mZnNldCk7CgogICAgcHJvdGVjdGVkOiBzdGF0aWMg
Y29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0IDo6SlND
OjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9OwoKICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90
b3R5cGUpOwoKICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZMZW5ndGgoKSB7IHJldHVybiAo
cmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxTY29wZWRBcmd1
bWVudHNUYWJsZSo+KDB4NDAwMCktPm1fbGVuZ3RoKSkgLSAweDQwMDApOyB9CiAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mQXJndW1lbnRzKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8
cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8U2NvcGVkQXJndW1lbnRzVGFibGUqPigweDQw
MDApLT5tX2FyZ3VtZW50cykpIC0gMHg0MDAwKTsgfQoKcHJpdmF0ZToKICAgIFNjb3BlT2Zmc2V0
JiBhdCh1aW50MzJfdCBpKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4g
bV9hcmd1bWVudHNbaV07CiAgICB9CgogICAgdWludDMyX3QgbV9sZW5ndGg7CiAgICBib29sIG1f
bG9ja2VkOwogICAgc3RkOjp1bmlxdWVfcHRyPFNjb3BlT2Zmc2V0W10+IG1fYXJndW1lbnRzOwp9
OwoKfQojIDM3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5oIiAyCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1R5cGVMb2Nh
dGlvbi5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9UeXBl
TG9jYXRpb24uaCIKI2RlZmluZSBUeXBlTG9jYXRpb25faCAKCiMgMSAiLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaCIKI2RlZmluZSBUeXBlU2V0X2ggCgoKIyAxICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgiIDEKIyAy
NyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oIgoj
ZGVmaW5lIFN0cnVjdHVyZVNldF9oIAoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJyYXlQcm9maWxlLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIgojZGVmaW5lIEFycmF5UHJvZmlsZV9oIAoKIyAx
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25jdXJyZW50SklUTG9jay5o
IiAxCiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2Zp
bGUuaCIgMgoKCgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oIiAx
CiMgMzAgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oIgojZGVmaW5lIFNl
Z21lbnRlZFZlY3Rvcl9oIAoKCgoKbmFtZXNwYWNlIFdURiB7CgoKICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBULCBzaXplX3QgU2VnbWVudFNpemUgPSA4PiBjbGFzcyBTZWdtZW50ZWRWZWN0b3I7CiAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IFNlZ21lbnRTaXplID0gOD4gY2xhc3MgU2Vn
bWVudGVkVmVjdG9ySXRlcmF0b3IgewogICAgcHJpdmF0ZToKICAgICAgICBmcmllbmQgY2xhc3Mg
U2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplPjsKICAgIHB1YmxpYzoKICAgICAgICB0eXBl
ZGVmIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplPiBJdGVyYXRvcjsKCiAg
ICAgICAgflNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yKCkgeyB9CgogICAgICAgIFQmIG9wZXJhdG9y
KigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmF0KG1faW5kZXgpOyB9CiAgICAgICAgVCogb3Bl
cmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZtX3ZlY3Rvci5hdChtX2luZGV4KTsgfQoKCiAgICAg
ICAgSXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAgICAgIHsKICAgICAgICAgICAgbV9pbmRleCsr
OwogICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgfQoKICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBjb25zdAogICAgICAgIHsKICAgICAgICAgICAg
cmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRleCAmJiAmbV92ZWN0b3IgPT0gJm90aGVyLm1f
dmVjdG9yOwogICAgICAgIH0KCiAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBtX2luZGV4ICE9IG90
aGVyLm1faW5kZXggfHwgJm1fdmVjdG9yICE9ICZvdGhlci5tX3ZlY3RvcjsKICAgICAgICB9Cgog
ICAgICAgIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgU2VnbWVudGVk
VmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemU+JiBvdGhlcikKICAgICAgICB7CiAgICAgICAg
ICAgIG1fdmVjdG9yID0gb3RoZXIubV92ZWN0b3I7CiAgICAgICAgICAgIG1faW5kZXggPSBvdGhl
ci5tX2luZGV4OwogICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgfQoKICAgIHByaXZh
dGU6CiAgICAgICAgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3IoU2VnbWVudGVkVmVjdG9yPFQsIFNl
Z21lbnRTaXplPiYgdmVjdG9yLCBzaXplX3QgaW5kZXgpCiAgICAgICAgICAgIDogbV92ZWN0b3Io
dmVjdG9yKQogICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpCiAgICAgICAgewogICAgICAgIH0K
CiAgICAgICAgU2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplPiYgbV92ZWN0b3I7CiAgICAg
ICAgc2l6ZV90IG1faW5kZXg7CiAgICB9OwoKCgoKCgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHNpemVfdCBTZWdtZW50U2l6ZT4KICAgIGNsYXNzIFNlZ21lbnRlZFZlY3RvciB7CiAgICAgICAg
ZnJpZW5kIGNsYXNzIFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplPjsKICAg
ICAgICBwcml2YXRlOiBTZWdtZW50ZWRWZWN0b3IoY29uc3QgU2VnbWVudGVkVmVjdG9yJikgPSBk
ZWxldGU7IFNlZ21lbnRlZFZlY3RvciYgb3BlcmF0b3I9KGNvbnN0IFNlZ21lbnRlZFZlY3RvciYp
ID0gZGVsZXRlOzsKICAgICAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZv
aWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBw
KSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4g
OjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkg
eyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUp
IHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRl
W10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9j
YXRpb247IH0gcHJpdmF0ZTogdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29s
b25BZnRlclRoaXNNYWNybzsKCiAgICBwdWJsaWM6CiAgICAgICAgdHlwZWRlZiBTZWdtZW50ZWRW
ZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZT4gSXRlcmF0b3I7CgogICAgICAgIFNlZ21lbnRl
ZFZlY3RvcigpID0gZGVmYXVsdDsKCiAgICAgICAgflNlZ21lbnRlZFZlY3RvcigpCiAgICAgICAg
ewogICAgICAgICAgICBkZWxldGVBbGxTZWdtZW50cygpOwogICAgICAgIH0KCiAgICAgICAgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CgogICAgICAgIFQmIGF0KHNpemVfdCBpbmRleCkK
ICAgICAgICB7CiAgICAgICAgICAgICgodm9pZCkwKTsKICAgICAgICAgICAgcmV0dXJuIHNlZ21l
bnRGb3IoaW5kZXgpLT5lbnRyaWVzW3N1YnNjcmlwdEZvcihpbmRleCldOwogICAgICAgIH0KCiAg
ICAgICAgY29uc3QgVCYgYXQoc2l6ZV90IGluZGV4KSBjb25zdAogICAgICAgIHsKICAgICAgICAg
ICAgcmV0dXJuIGNvbnN0X2Nhc3Q8U2VnbWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplPio+KHRo
aXMpLT5hdChpbmRleCk7CiAgICAgICAgfQoKICAgICAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBp
bmRleCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBhdChpbmRleCk7CiAgICAgICAgfQoK
ICAgICAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QKICAgICAgICB7
CiAgICAgICAgICAgIHJldHVybiBhdChpbmRleCk7CiAgICAgICAgfQoKICAgICAgICBUJiBsYXN0
KCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBhdChzaXplKCkgLSAxKTsKICAgICAgICB9
CgogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgdm9pZCBhcHBlbmQo
QXJncyYmLi4uIGFyZ3MpCiAgICAgICAgewogICAgICAgICAgICArK21fc2l6ZTsKICAgICAgICAg
ICAgaWYgKCFzZWdtZW50RXhpc3RzRm9yKG1fc2l6ZSAtIDEpKQogICAgICAgICAgICAgICAgYWxs
b2NhdGVTZWdtZW50KCk7CiAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJmxhc3QoKSkgVChzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgICAgIH0KCiAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJncz4KICAgICAgICBUJiBhbGxvYyhBcmdzJiYuLi4gYXJncykKICAgICAgICB7
CiAgICAgICAgICAgIGFwcGVuZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgICAg
ICAgICByZXR1cm4gbGFzdCgpOwogICAgICAgIH0KCiAgICAgICAgdm9pZCByZW1vdmVMYXN0KCkK
ICAgICAgICB7CiAgICAgICAgICAgIGxhc3QoKS5+VCgpOwogICAgICAgICAgICAtLW1fc2l6ZTsK
ICAgICAgICB9CgogICAgICAgIHZvaWQgZ3JvdyhzaXplX3Qgc2l6ZSkKICAgICAgICB7CiAgICAg
ICAgICAgICgodm9pZCkwKTsKICAgICAgICAgICAgZW5zdXJlU2VnbWVudHNGb3Ioc2l6ZSk7CiAg
ICAgICAgICAgIHNpemVfdCBvbGRTaXplID0gbV9zaXplOwogICAgICAgICAgICBtX3NpemUgPSBz
aXplOwogICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gb2xkU2l6ZTsgaSA8IG1fc2l6ZTsgKytp
KQogICAgICAgICAgICAgICAgbmV3IChOb3ROdWxsLCAmYXQoaSkpIFQoKTsKICAgICAgICB9Cgog
ICAgICAgIHZvaWQgY2xlYXIoKQogICAgICAgIHsKICAgICAgICAgICAgZGVsZXRlQWxsU2VnbWVu
dHMoKTsKICAgICAgICAgICAgbV9zZWdtZW50cy5jbGVhcigpOwogICAgICAgICAgICBtX3NpemUg
PSAwOwogICAgICAgIH0KCiAgICAgICAgSXRlcmF0b3IgYmVnaW4oKQogICAgICAgIHsKICAgICAg
ICAgICAgcmV0dXJuIEl0ZXJhdG9yKCp0aGlzLCAwKTsKICAgICAgICB9CgogICAgICAgIEl0ZXJh
dG9yIGVuZCgpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gSXRlcmF0b3IoKnRoaXMsIG1f
c2l6ZSk7CiAgICAgICAgfQoKICAgICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICAgICB7CiAg
ICAgICAgICAgIG1fc2VnbWVudHMuc2hyaW5rVG9GaXQoKTsKICAgICAgICB9CgogICAgcHJpdmF0
ZToKICAgICAgICBzdHJ1Y3QgU2VnbWVudCB7CgoKCgogICAgICAgICAgICBUIGVudHJpZXNbMF07
CgoKCiAgICAgICAgfTsKCiAgICAgICAgdm9pZCBkZWxldGVBbGxTZWdtZW50cygpCiAgICAgICAg
ewogICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQogICAgICAg
ICAgICAgICAgYXQoaSkuflQoKTsKICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3NlZ21lbnRzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgICAgZmFzdEZyZWUobV9zZWdtZW50
c1tpXSk7CiAgICAgICAgfQoKICAgICAgICBib29sIHNlZ21lbnRFeGlzdHNGb3Ioc2l6ZV90IGlu
ZGV4KQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIGluZGV4IC8gU2VnbWVudFNpemUgPCBt
X3NlZ21lbnRzLnNpemUoKTsKICAgICAgICB9CgogICAgICAgIFNlZ21lbnQqIHNlZ21lbnRGb3Io
c2l6ZV90IGluZGV4KQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIG1fc2VnbWVudHNbaW5k
ZXggLyBTZWdtZW50U2l6ZV07CiAgICAgICAgfQoKICAgICAgICBzaXplX3Qgc3Vic2NyaXB0Rm9y
KHNpemVfdCBpbmRleCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBpbmRleCAlIFNlZ21l
bnRTaXplOwogICAgICAgIH0KCiAgICAgICAgdm9pZCBlbnN1cmVTZWdtZW50c0ZvcihzaXplX3Qg
c2l6ZSkKICAgICAgICB7CiAgICAgICAgICAgIHNpemVfdCBzZWdtZW50Q291bnQgPSAobV9zaXpl
ICsgU2VnbWVudFNpemUgLSAxKSAvIFNlZ21lbnRTaXplOwogICAgICAgICAgICBzaXplX3QgbmVl
ZGVkU2VnbWVudENvdW50ID0gKHNpemUgKyBTZWdtZW50U2l6ZSAtIDEpIC8gU2VnbWVudFNpemU7
CgogICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gc2VnbWVudENvdW50ID8gc2VnbWVudENvdW50
IC0gMSA6IDA7IGkgPCBuZWVkZWRTZWdtZW50Q291bnQ7ICsraSkKICAgICAgICAgICAgICAgIGVu
c3VyZVNlZ21lbnQoaSk7CiAgICAgICAgfQoKICAgICAgICB2b2lkIGVuc3VyZVNlZ21lbnQoc2l6
ZV90IHNlZ21lbnRJbmRleCkKICAgICAgICB7CiAgICAgICAgICAgICgodm9pZCkwKTsKICAgICAg
ICAgICAgaWYgKHNlZ21lbnRJbmRleCA9PSBtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgICAg
ICAgIGFsbG9jYXRlU2VnbWVudCgpOwogICAgICAgIH0KCiAgICAgICAgdm9pZCBhbGxvY2F0ZVNl
Z21lbnQoKQogICAgICAgIHsKICAgICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoc3RhdGljX2Nh
c3Q8U2VnbWVudCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFQpICogU2VnbWVudFNpemUpKSk7CiAgICAg
ICAgfQoKICAgICAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogICAgICAgIFZlY3RvcjxTZWdtZW50
Kj4gbV9zZWdtZW50czsKICAgIH07Cgp9Cgp1c2luZyBXVEY6OlNlZ21lbnRlZFZlY3RvcjsKIyAz
NCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIiAy
CgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIENvZGVCbG9jazsKY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBBcnJheU1vZGVzOwoKY29uc3QgQXJyYXlNb2Rl
cyBJbnQ4QXJyYXlNb2RlID0gMSA8PCAxNjsKY29uc3QgQXJyYXlNb2RlcyBJbnQxNkFycmF5TW9k
ZSA9IDEgPDwgMTc7CmNvbnN0IEFycmF5TW9kZXMgSW50MzJBcnJheU1vZGUgPSAxIDw8IDE4Owpj
b25zdCBBcnJheU1vZGVzIFVpbnQ4QXJyYXlNb2RlID0gMSA8PCAxOTsKY29uc3QgQXJyYXlNb2Rl
cyBVaW50OENsYW1wZWRBcnJheU1vZGUgPSAxIDw8IDIwOwpjb25zdCBBcnJheU1vZGVzIFVpbnQx
NkFycmF5TW9kZSA9IDEgPDwgMjE7CmNvbnN0IEFycmF5TW9kZXMgVWludDMyQXJyYXlNb2RlID0g
MSA8PCAyMjsKY29uc3QgQXJyYXlNb2RlcyBGbG9hdDMyQXJyYXlNb2RlID0gMSA8PCAyMzsKY29u
c3QgQXJyYXlNb2RlcyBGbG9hdDY0QXJyYXlNb2RlID0gMSA8PCAyNDsKCiNkZWZpbmUgYXNBcnJh
eU1vZGVzKHR5cGUpIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkgPDwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHR5cGUpKQoKCiNkZWZpbmUgQUxMX1RZUEVEX0FSUkFZX01PREVTIChJbnQ4QXJyYXlN
b2RlIHwgSW50MTZBcnJheU1vZGUgfCBJbnQzMkFycmF5TW9kZSB8IFVpbnQ4QXJyYXlNb2RlIHwg
VWludDhDbGFtcGVkQXJyYXlNb2RlIHwgVWludDE2QXJyYXlNb2RlIHwgVWludDMyQXJyYXlNb2Rl
IHwgRmxvYXQzMkFycmF5TW9kZSB8IEZsb2F0NjRBcnJheU1vZGUgKQojIDcwICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgiCiNkZWZpbmUgQUxMX05P
Tl9BUlJBWV9BUlJBWV9NT0RFUyAoYXNBcnJheU1vZGVzKE5vbkFycmF5KSB8IGFzQXJyYXlNb2Rl
cyhOb25BcnJheVdpdGhJbnQzMikgfCBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRoRG91YmxlKSB8
IGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhDb250aWd1b3VzKSB8IGFzQXJyYXlNb2RlcyhOb25B
cnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzKE5vbkFycmF5V2l0aFNsb3dQdXRB
cnJheVN0b3JhZ2UpIHwgQUxMX1RZUEVEX0FSUkFZX01PREVTKQojIDc5ICIuLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgiCiNkZWZpbmUgQUxMX0FSUkFZ
X0FSUkFZX01PREVTIChhc0FycmF5TW9kZXMoQXJyYXlDbGFzcykgfCBhc0FycmF5TW9kZXMoQXJy
YXlXaXRoVW5kZWNpZGVkKSB8IGFzQXJyYXlNb2RlcyhBcnJheVdpdGhJbnQzMikgfCBhc0FycmF5
TW9kZXMoQXJyYXlXaXRoRG91YmxlKSB8IGFzQXJyYXlNb2RlcyhBcnJheVdpdGhDb250aWd1b3Vz
KSB8IGFzQXJyYXlNb2RlcyhBcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzKEFy
cmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpKQojIDg4ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgiCiNkZWZpbmUgQUxMX0FSUkFZX01PREVTIChB
TExfTk9OX0FSUkFZX0FSUkFZX01PREVTIHwgQUxMX0FSUkFZX0FSUkFZX01PREVTKQoKaW5saW5l
IEFycmF5TW9kZXMgYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ewogICAgc3dpdGNoIChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5
cGUpIHsKICAgIGNhc2UgVHlwZUludDg6CiAgICAgICAgcmV0dXJuIEludDhBcnJheU1vZGU7CiAg
ICBjYXNlIFR5cGVVaW50ODoKICAgICAgICByZXR1cm4gVWludDhBcnJheU1vZGU7CiAgICBjYXNl
IFR5cGVVaW50OENsYW1wZWQ6CiAgICAgICAgcmV0dXJuIFVpbnQ4Q2xhbXBlZEFycmF5TW9kZTsK
ICAgIGNhc2UgVHlwZUludDE2OgogICAgICAgIHJldHVybiBJbnQxNkFycmF5TW9kZTsKICAgIGNh
c2UgVHlwZVVpbnQxNjoKICAgICAgICByZXR1cm4gVWludDE2QXJyYXlNb2RlOwogICAgY2FzZSBU
eXBlSW50MzI6CiAgICAgICAgcmV0dXJuIEludDMyQXJyYXlNb2RlOwogICAgY2FzZSBUeXBlVWlu
dDMyOgogICAgICAgIHJldHVybiBVaW50MzJBcnJheU1vZGU7CiAgICBjYXNlIFR5cGVGbG9hdDMy
OgogICAgICAgIHJldHVybiBGbG9hdDMyQXJyYXlNb2RlOwogICAgY2FzZSBUeXBlRmxvYXQ2NDoK
ICAgICAgICByZXR1cm4gRmxvYXQ2NEFycmF5TW9kZTsKICAgIGNhc2UgVHlwZURhdGFWaWV3Ogog
ICAgY2FzZSBOb3RUeXBlZEFycmF5OgogICAgICAgIGJyZWFrOwogICAgfQogICAgcmV0dXJuIChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0cnVjdHVy
ZS0+aW5kZXhpbmdUeXBlKCkpKTsKfQoKdm9pZCBkdW1wQXJyYXlNb2RlcyhQcmludFN0cmVhbSYs
IEFycmF5TW9kZXMpOwpjbGFzcyBBcnJheU1vZGVzRHVtcCB7IHB1YmxpYzogQXJyYXlNb2Rlc0R1
bXAoY29uc3QgQXJyYXlNb2RlcyYgdmFsdWUpIDogbV92YWx1ZSh2YWx1ZSkgeyB9IHZvaWQgZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdCB7IGR1bXBBcnJheU1vZGVzKG91dCwgbV92YWx1ZSk7
IH0gcHJpdmF0ZTogQXJyYXlNb2RlcyBtX3ZhbHVlOyB9OwoKaW5saW5lIGJvb2wgbWVyZ2VBcnJh
eU1vZGVzKEFycmF5TW9kZXMmIGxlZnQsIEFycmF5TW9kZXMgcmlnaHQpCnsKICAgIEFycmF5TW9k
ZXMgbmV3TW9kZXMgPSBsZWZ0IHwgcmlnaHQ7CiAgICBpZiAobmV3TW9kZXMgPT0gbGVmdCkKICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICBsZWZ0ID0gbmV3TW9kZXM7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKaW5saW5lIGJvb2wgYXJyYXlNb2Rlc0FyZUNsZWFyT3JUb3AoQXJyYXlNb2RlcyBtb2RlcykK
ewogICAgcmV0dXJuICFtb2RlcyB8fCBtb2RlcyA9PSAoKChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
MSkgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5vbkFycmF5KSkgfCAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KDEpIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihOb25BcnJheVdpdGhJbnQzMikpIHwg
KHN0YXRpY19jYXN0PHVuc2lnbmVkPigxKSA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTm9uQXJy
YXlXaXRoRG91YmxlKSkgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDEpIDw8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihOb25BcnJheVdpdGhDb250aWd1b3VzKSkgfCAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KDEpIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihOb25BcnJheVdpdGhBcnJheVN0b3JhZ2Up
KSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5v
bkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpKSB8IChJbnQ4QXJyYXlNb2RlIHwgSW50MTZB
cnJheU1vZGUgfCBJbnQzMkFycmF5TW9kZSB8IFVpbnQ4QXJyYXlNb2RlIHwgVWludDhDbGFtcGVk
QXJyYXlNb2RlIHwgVWludDE2QXJyYXlNb2RlIHwgVWludDMyQXJyYXlNb2RlIHwgRmxvYXQzMkFy
cmF5TW9kZSB8IEZsb2F0NjRBcnJheU1vZGUgKSkgfCAoKHN0YXRpY19jYXN0PHVuc2lnbmVkPigx
KSA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQXJyYXlDbGFzcykpIHwgKHN0YXRpY19jYXN0PHVu
c2lnbmVkPigxKSA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQXJyYXlXaXRoVW5kZWNpZGVkKSkg
fCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDEpIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihBcnJh
eVdpdGhJbnQzMikpIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPigxKSA8PCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oQXJyYXlXaXRoRG91YmxlKSkgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDEpIDw8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihBcnJheVdpdGhDb250aWd1b3VzKSkgfCAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KDEpIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihBcnJheVdpdGhBcnJheVN0
b3JhZ2UpKSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkgPDwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpKSkpOwp9CgoKaW5saW5lIGJvb2wgYXJy
YXlNb2Rlc0FscmVhZHlDaGVja2VkKEFycmF5TW9kZXMgcHJvdmVuLCBBcnJheU1vZGVzIGV4cGVj
dGVkKQp7CiAgICByZXR1cm4gKGV4cGVjdGVkIHwgcHJvdmVuKSA9PSBleHBlY3RlZDsKfQoKaW5s
aW5lIGJvb2wgYXJyYXlNb2Rlc0luY2x1ZGUoQXJyYXlNb2RlcyBhcnJheU1vZGVzLCBJbmRleGlu
Z1R5cGUgc2hhcGUpCnsKICAgIHJldHVybiAhIShhcnJheU1vZGVzICYgKChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oMSkgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5vbkFycmF5IHwgc2hhcGUpKSB8
IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFycmF5
Q2xhc3MgfCBzaGFwZSkpKSk7Cn0KCmlubGluZSBib29sIHNob3VsZFVzZVNsb3dQdXRBcnJheVN0
b3JhZ2UoQXJyYXlNb2RlcyBhcnJheU1vZGVzKQp7CiAgICByZXR1cm4gYXJyYXlNb2Rlc0luY2x1
ZGUoYXJyYXlNb2RlcywgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlKTsKfQoKaW5saW5lIGJvb2wg
c2hvdWxkVXNlRmFzdEFycmF5U3RvcmFnZShBcnJheU1vZGVzIGFycmF5TW9kZXMpCnsKICAgIHJl
dHVybiBhcnJheU1vZGVzSW5jbHVkZShhcnJheU1vZGVzLCBBcnJheVN0b3JhZ2VTaGFwZSk7Cn0K
CmlubGluZSBib29sIHNob3VsZFVzZUNvbnRpZ3VvdXMoQXJyYXlNb2RlcyBhcnJheU1vZGVzKQp7
CiAgICByZXR1cm4gYXJyYXlNb2Rlc0luY2x1ZGUoYXJyYXlNb2RlcywgQ29udGlndW91c1NoYXBl
KTsKfQoKaW5saW5lIGJvb2wgc2hvdWxkVXNlRG91YmxlKEFycmF5TW9kZXMgYXJyYXlNb2RlcykK
ewogICAgcmV0dXJuIGFycmF5TW9kZXNJbmNsdWRlKGFycmF5TW9kZXMsIERvdWJsZVNoYXBlKTsK
fQoKaW5saW5lIGJvb2wgc2hvdWxkVXNlSW50MzIoQXJyYXlNb2RlcyBhcnJheU1vZGVzKQp7CiAg
ICByZXR1cm4gYXJyYXlNb2Rlc0luY2x1ZGUoYXJyYXlNb2RlcywgSW50MzJTaGFwZSk7Cn0KCmlu
bGluZSBib29sIGhhc1NlZW5BcnJheShBcnJheU1vZGVzIGFycmF5TW9kZXMpCnsKICAgIHJldHVy
biBhcnJheU1vZGVzICYgKChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkgPDwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEFycmF5Q2xhc3MpKSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkgPDwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEFycmF5V2l0aFVuZGVjaWRlZCkpIHwgKHN0YXRpY19jYXN0PHVu
c2lnbmVkPigxKSA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQXJyYXlXaXRoSW50MzIpKSB8IChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFycmF5V2l0
aERvdWJsZSkpIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPigxKSA8PCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oQXJyYXlXaXRoQ29udGlndW91cykpIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPigxKSA8
PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkgfCAoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KDEpIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihBcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlKSkpOwp9CgppbmxpbmUgYm9vbCBoYXNTZWVuTm9uQXJyYXkoQXJyYXlN
b2RlcyBhcnJheU1vZGVzKQp7CiAgICByZXR1cm4gYXJyYXlNb2RlcyAmICgoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KDEpIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihOb25BcnJheSkpIHwgKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPigxKSA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTm9uQXJyYXlXaXRo
SW50MzIpKSB8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkgPDwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KE5vbkFycmF5V2l0aERvdWJsZSkpIHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPigxKSA8PCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTm9uQXJyYXlXaXRoQ29udGlndW91cykpIHwgKHN0YXRpY19j
YXN0PHVuc2lnbmVkPigxKSA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTm9uQXJyYXlXaXRoQXJy
YXlTdG9yYWdlKSkgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDEpIDw8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSkgfCAoSW50OEFycmF5TW9k
ZSB8IEludDE2QXJyYXlNb2RlIHwgSW50MzJBcnJheU1vZGUgfCBVaW50OEFycmF5TW9kZSB8IFVp
bnQ4Q2xhbXBlZEFycmF5TW9kZSB8IFVpbnQxNkFycmF5TW9kZSB8IFVpbnQzMkFycmF5TW9kZSB8
IEZsb2F0MzJBcnJheU1vZGUgfCBGbG9hdDY0QXJyYXlNb2RlICkpOwp9CgpjbGFzcyBBcnJheVBy
b2ZpbGUgewpwdWJsaWM6CiAgICBBcnJheVByb2ZpbGUoKQogICAgICAgIDogbV9ieXRlY29kZU9m
ZnNldChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgLCBtX2xh
c3RTZWVuU3RydWN0dXJlSUQoMCkKICAgICAgICAsIG1fbWF5U3RvcmVUb0hvbGUoZmFsc2UpCiAg
ICAgICAgLCBtX291dE9mQm91bmRzKGZhbHNlKQogICAgICAgICwgbV9tYXlJbnRlcmNlcHRJbmRl
eGVkQWNjZXNzZXMoZmFsc2UpCiAgICAgICAgLCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyh0cnVlKQogICAgICAgICwgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nKGZhbHNlKQogICAg
ICAgICwgbV9vYnNlcnZlZEFycmF5TW9kZXMoMCkKICAgIHsKICAgIH0KCiAgICBBcnJheVByb2Zp
bGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KQogICAgICAgICwgbV9sYXN0U2VlblN0cnVjdHVyZUlEKDApCiAgICAgICAg
LCBtX21heVN0b3JlVG9Ib2xlKGZhbHNlKQogICAgICAgICwgbV9vdXRPZkJvdW5kcyhmYWxzZSkK
ICAgICAgICAsIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGZhbHNlKQogICAgICAgICwg
bV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXModHJ1ZSkKICAgICAgICAsIG1fZGlkUGVyZm9y
bUZpcnN0UnVuUHJ1bmluZyhmYWxzZSkKICAgICAgICAsIG1fb2JzZXJ2ZWRBcnJheU1vZGVzKDAp
CiAgICB7CiAgICB9CgogICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2J5dGVjb2RlT2Zmc2V0OyB9CgogICAgU3RydWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVu
U3RydWN0dXJlSUQoKSB7IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9CiAgICBBcnJh
eU1vZGVzKiBhZGRyZXNzT2ZBcnJheU1vZGVzKCkgeyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1v
ZGVzOyB9CiAgICBib29sKiBhZGRyZXNzT2ZNYXlTdG9yZVRvSG9sZSgpIHsgcmV0dXJuICZtX21h
eVN0b3JlVG9Ib2xlOyB9CgogICAgdm9pZCBzZXRPdXRPZkJvdW5kcygpIHsgbV9vdXRPZkJvdW5k
cyA9IHRydWU7IH0KICAgIGJvb2wqIGFkZHJlc3NPZk91dE9mQm91bmRzKCkgeyByZXR1cm4gJm1f
b3V0T2ZCb3VuZHM7IH0KCiAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICB7CiAgICAgICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5p
ZCgpOwogICAgfQoKICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1
cnJlbnRKSVRMb2NrZXImLCBDb2RlQmxvY2sqKTsKICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUq
IGxhc3RTZWVuU3RydWN0dXJlKTsKCiAgICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlNb2Rlcyhj
b25zdCBDb25jdXJyZW50SklUTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9vYnNlcnZlZEFycmF5
TW9kZXM7IH0KICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGNvbnN0IENvbmN1
cnJlbnRKSVRMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3NlczsgfQoKICAgIGJvb2wgbWF5U3RvcmVUb0hvbGUoY29uc3QgQ29uY3VycmVudEpJVExvY2tl
ciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5U3RvcmVUb0hvbGU7IH0KICAgIGJvb2wgb3V0T2ZCb3Vu
ZHMoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZCb3Vu
ZHM7IH0KCiAgICBib29sIHVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyhjb25zdCBDb25jdXJy
ZW50SklUTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVy
ZXM7IH0KCiAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpJVExv
Y2tlciYsIENvZGVCbG9jayopOwogICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9uV2l0aG91dFVw
ZGF0aW5nKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImKTsKCnByaXZhdGU6CiAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwoKICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHBvbHlt
b3JwaGljU3RydWN0dXJlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3RydWN0dXJlKj4ocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oMSkpOyB9CgogICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsK
ICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsKICAgIGJvb2wgbV9tYXlTdG9y
ZVRvSG9sZTsKICAgIGJvb2wgbV9vdXRPZkJvdW5kczsKICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJ
bmRleGVkQWNjZXNzZXMgOiAxOwogICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyA6IDE7CiAgICBib29sIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA6IDE7CiAgICBBcnJh
eU1vZGVzIG1fb2JzZXJ2ZWRBcnJheU1vZGVzOwp9OwoKdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3I8
QXJyYXlQcm9maWxlLCA0PiBBcnJheVByb2ZpbGVWZWN0b3I7Cgp9CiMgMzAgIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaCIgMgojIDEgIi4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0R1bXBDb250ZXh0LmgiIDEKIyAyNyAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRHVtcENvbnRleHQuaCIKI2RlZmluZSBEdW1w
Q29udGV4dF9oIAoKCgojIDEgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1N0cmluZ0hhc2hEdW1wQ29u
dGV4dC5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3RmL1N0cmluZ0hhc2hEdW1wQ29udGV4
dC5oIgojZGVmaW5lIFN0cmluZ0hhc2hEdW1wQ29udGV4dF9oIAoKCiMgMSAiLi4vLi4vU291cmNl
L1dURi93dGYvU2l4Q2hhcmFjdGVySGFzaC5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9XVEYvd3Rm
L1NpeENoYXJhY3Rlckhhc2guaCIKI2RlZmluZSBTaXhDaGFyYWN0ZXJIYXNoX2ggCgoKCm5hbWVz
cGFjZSBXVEYgewoKCgoKIHVuc2lnbmVkIHNpeENoYXJhY3Rlckhhc2hTdHJpbmdUb0ludGVnZXIo
Y29uc3QgY2hhciopOwoKCgogc3RkOjphcnJheTxjaGFyLCA3PiBpbnRlZ2VyVG9TaXhDaGFyYWN0
ZXJIYXNoU3RyaW5nKHVuc2lnbmVkKTsKCn0KCnVzaW5nIFdURjo6c2l4Q2hhcmFjdGVySGFzaFN0
cmluZ1RvSW50ZWdlcjsKdXNpbmcgV1RGOjppbnRlZ2VyVG9TaXhDaGFyYWN0ZXJIYXNoU3RyaW5n
OwojIDMxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9TdHJpbmdIYXNoRHVtcENvbnRleHQuaCIgMgoK
IyAxICIuLi8uLi9Tb3VyY2UvV1RGL3d0Zi9TdHJpbmdQcmludFN0cmVhbS5oIiAxCiMgMjcgIi4u
Ly4uL1NvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFtLmgiCiNkZWZpbmUgU3RyaW5nUHJp
bnRTdHJlYW1faCAKCgoKCgpuYW1lc3BhY2UgV1RGIHsKCmNsYXNzIFN0cmluZ1ByaW50U3RyZWFt
IDogcHVibGljIFByaW50U3RyZWFtIHsKcHVibGljOgogICAgU3RyaW5nUHJpbnRTdHJlYW0oKTsK
ICAgIHZpcnR1YWwgflN0cmluZ1ByaW50U3RyZWFtKCk7CgogICAgdm9pZCB2cHJpbnRmKGNvbnN0
IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCkgb3ZlcnJpZGUgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRf
XyhwcmludGYsIDIsIDApKSk7CgogICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
bmV4dDsgfQoKICAgIENTdHJpbmcgdG9DU3RyaW5nKCk7CiAgICBTdHJpbmcgdG9TdHJpbmcoKTsK
ICAgIHZvaWQgcmVzZXQoKTsKCnByaXZhdGU6CiAgICB2b2lkIGluY3JlYXNlU2l6ZShzaXplX3Qp
OwoKICAgIGNoYXIqIG1fYnVmZmVyOwogICAgc2l6ZV90IG1fbmV4dDsKICAgIHNpemVfdCBtX3Np
emU7CiAgICBjaGFyIG1faW5saW5lQnVmZmVyWzEyOF07Cn07CgoKCnRlbXBsYXRlPHR5cGVuYW1l
Li4uIFR5cGVzPgpDU3RyaW5nIHRvQ1N0cmluZyhjb25zdCBUeXBlcyYuLi4gdmFsdWVzKQp7CiAg
ICBTdHJpbmdQcmludFN0cmVhbSBzdHJlYW07CiAgICBzdHJlYW0ucHJpbnQodmFsdWVzLi4uKTsK
ICAgIHJldHVybiBzdHJlYW0udG9DU3RyaW5nKCk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lLi4uIFR5
cGVzPgpTdHJpbmcgdG9TdHJpbmcoY29uc3QgVHlwZXMmLi4uIHZhbHVlcykKewogICAgU3RyaW5n
UHJpbnRTdHJlYW0gc3RyZWFtOwogICAgc3RyZWFtLnByaW50KHZhbHVlcy4uLik7CiAgICByZXR1
cm4gc3RyZWFtLnRvU3RyaW5nKCk7Cn0KCn0KCnVzaW5nIFdURjo6U3RyaW5nUHJpbnRTdHJlYW07
CnVzaW5nIFdURjo6dG9DU3RyaW5nOwp1c2luZyBXVEY6OnRvU3RyaW5nOwojIDMzICIuLi8uLi9T
b3VyY2UvV1RGL3d0Zi9TdHJpbmdIYXNoRHVtcENvbnRleHQuaCIgMgoKCm5hbWVzcGFjZSBXVEYg
ewoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KY2xhc3MgU3RyaW5nSGFzaER1bXBDb250ZXh0IHsKcHVi
bGljOgogICAgU3RyaW5nSGFzaER1bXBDb250ZXh0KCkgeyB9CgogICAgQ1N0cmluZyBnZXRJRChj
b25zdCBUKiB2YWx1ZSkKICAgIHsKICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPGNvbnN0IFQqLCBD
U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fZm9yd2FyZE1hcC5maW5kKHZhbHVlKTsKICAgICAg
ICBpZiAoaXRlciAhPSBtX2ZvcndhcmRNYXAuZW5kKCkpCiAgICAgICAgICAgIHJldHVybiBpdGVy
LT52YWx1ZTsKCiAgICAgICAgZm9yICh1bnNpZ25lZCBoYXNoVmFsdWUgPSB0b0NTdHJpbmcoKnZh
bHVlKS5oYXNoKCk7IDsgaGFzaFZhbHVlKyspIHsKICAgICAgICAgICAgQ1N0cmluZyBmdWxsSGFz
aCA9IGludGVnZXJUb1NpeENoYXJhY3Rlckhhc2hTdHJpbmcoaGFzaFZhbHVlKS5kYXRhKCk7Cgog
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGxlbmd0aCA9IDI7IGxlbmd0aCA8IDY7ICsrbGVuZ3Ro
KSB7CiAgICAgICAgICAgICAgICBDU3RyaW5nIHNob3J0SGFzaCA9IENTdHJpbmcoZnVsbEhhc2gu
ZGF0YSgpLCBsZW5ndGgpOwogICAgICAgICAgICAgICAgaWYgKCFtX2JhY2t3YXJkTWFwLmNvbnRh
aW5zKHNob3J0SGFzaCkpIHsKICAgICAgICAgICAgICAgICAgICBtX2ZvcndhcmRNYXAuYWRkKHZh
bHVlLCBzaG9ydEhhc2gpOwogICAgICAgICAgICAgICAgICAgIG1fYmFja3dhcmRNYXAuYWRkKHNo
b3J0SGFzaCwgdmFsdWUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzaG9ydEhhc2g7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgdm9pZCBk
dW1wQnJpZWYoY29uc3QgVCogdmFsdWUsIFByaW50U3RyZWFtJiBvdXQpCiAgICB7CiAgICAgICAg
dmFsdWUtPmR1bXBCcmllZihvdXQsIGdldElEKHZhbHVlKSk7CiAgICB9CgogICAgQ1N0cmluZyBi
cmllZihjb25zdCBUKiB2YWx1ZSkKICAgIHsKICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7
CiAgICAgICAgZHVtcEJyaWVmKHZhbHVlLCBvdXQpOwogICAgICAgIHJldHVybiBvdXQudG9DU3Ry
aW5nKCk7CiAgICB9CgogICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9mb3J3YXJk
TWFwLmlzRW1wdHkoKTsgfQoKICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBj
aGFyKiBwcmVmaXggPSAiIikgY29uc3QKICAgIHsKICAgICAgICBvdXQucHJpbnQocHJlZml4KTsK
ICAgICAgICBUOjpkdW1wQ29udGV4dEhlYWRlcihvdXQpOwogICAgICAgIG91dC5wcmludCgiXG4i
KTsKCiAgICAgICAgVmVjdG9yPENTdHJpbmc+IGtleXM7CiAgICAgICAgdW5zaWduZWQgbWF4S2V5
U2l6ZSA9IDA7CiAgICAgICAgZm9yICgKICAgICAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDxDU3Ry
aW5nLCBjb25zdCBUKj46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX2JhY2t3YXJkTWFwLmJlZ2lu
KCk7CiAgICAgICAgICAgIGl0ZXIgIT0gbV9iYWNrd2FyZE1hcC5lbmQoKTsKICAgICAgICAgICAg
KytpdGVyKSB7CiAgICAgICAgICAgIGtleXMuYXBwZW5kKGl0ZXItPmtleSk7CiAgICAgICAgICAg
IG1heEtleVNpemUgPSBzdGQ6Om1heChtYXhLZXlTaXplLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
YnJpZWYoaXRlci0+dmFsdWUsIGl0ZXItPmtleSkubGVuZ3RoKCkpKTsKICAgICAgICB9CgogICAg
ICAgIHN0ZDo6c29ydChrZXlzLmJlZ2luKCksIGtleXMuZW5kKCkpOwoKICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwga2V5cy5zaXplKCk7ICsraSkgewogICAgICAgICAgICBjb25zdCBU
KiB2YWx1ZSA9IG1fYmFja3dhcmRNYXAuZ2V0KGtleXNbaV0pOwogICAgICAgICAgICBvdXQucHJp
bnQocHJlZml4LCAiICAgICIpOwogICAgICAgICAgICBDU3RyaW5nIGJyaWVmU3RyaW5nID0gYnJp
ZWYodmFsdWUsIGtleXNbaV0pOwogICAgICAgICAgICBvdXQucHJpbnQoYnJpZWZTdHJpbmcpOwog
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG4gPSBicmllZlN0cmluZy5sZW5ndGgoKTsgbiA8IG1h
eEtleVNpemU7ICsrbikKICAgICAgICAgICAgICAgIG91dC5wcmludCgiICIpOwogICAgICAgICAg
ICBvdXQucHJpbnQoIiA9ICIsICp2YWx1ZSwgIlxuIik7CiAgICAgICAgfQogICAgfQoKcHVibGlj
OgogICAgc3RhdGljIENTdHJpbmcgYnJpZWYoY29uc3QgVCogdmFsdWUsIGNvbnN0IENTdHJpbmcm
IHN0cmluZykKICAgIHsKICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CiAgICAgICAgdmFs
dWUtPmR1bXBCcmllZihvdXQsIHN0cmluZyk7CiAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmco
KTsKICAgIH0KCiAgICBIYXNoTWFwPGNvbnN0IFQqLCBDU3RyaW5nPiBtX2ZvcndhcmRNYXA7CiAg
ICBIYXNoTWFwPENTdHJpbmcsIGNvbnN0IFQqPiBtX2JhY2t3YXJkTWFwOwp9OwoKfQoKdXNpbmcg
V1RGOjpTdHJpbmdIYXNoRHVtcENvbnRleHQ7CiMgMzIgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0R1bXBDb250ZXh0LmgiIDIKCm5hbWVzcGFjZSBKU0MgewoKbmFtZXNwYWNl
IERGRyB7IGNsYXNzIEdyYXBoOyB9CgpzdHJ1Y3QgRHVtcENvbnRleHQgewogICAgRHVtcENvbnRl
eHQoKTsKICAgIH5EdW1wQ29udGV4dCgpOwoKICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwoKICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYsIGNvbnN0IGNoYXIqIHByZWZpeCA9ICIiKSBjb25zdDsK
CiAgICBTdHJpbmdIYXNoRHVtcENvbnRleHQ8U3RydWN0dXJlPiBzdHJ1Y3R1cmVzOwogICAgREZH
OjpHcmFwaCogZ3JhcGg7Cn07Cgp9CiMgMzEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTZXQuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIiAxCiMgMzIgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaCIgMgoKIyAxICIuLi8uLi9Tb3VyY2UvV1RG
L3d0Zi9UaW55UHRyU2V0LmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL1dURi93dGYvVGlueVB0clNl
dC5oIgojZGVmaW5lIFRpbnlQdHJTZXRfaCAKCgoKCm5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKY2xhc3MgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTsKfSB9CgpuYW1lc3BhY2UgV1RGIHsK
CgoKCgoKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmNsYXNzIFRpbnlQdHJTZXQgewpwdWJsaWM6CiAg
ICBUaW55UHRyU2V0KCkKICAgICAgICA6IG1fcG9pbnRlcigwKQogICAgewogICAgICAgIHNldEVt
cHR5KCk7CiAgICB9CgogICAgVGlueVB0clNldChUIGVsZW1lbnQpCiAgICAgICAgOiBtX3BvaW50
ZXIoMCkKICAgIHsKICAgICAgICBzZXQoZWxlbWVudCk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgVGlueVB0clNldChjb25zdCBUaW55UHRyU2V0
JiBvdGhlcikKICAgICAgICA6IG1fcG9pbnRlcigwKQogICAgewogICAgICAgIGNvcHlGcm9tKG90
aGVyKTsKICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p
KSBUaW55UHRyU2V0JiBvcGVyYXRvcj0oY29uc3QgVGlueVB0clNldCYgb3RoZXIpCiAgICB7CiAg
ICAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAg
ICAgZGVsZXRlTGlzdElmTmVjZXNzYXJ5KCk7CiAgICAgICAgY29weUZyb20ob3RoZXIpOwogICAg
ICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICB+VGlueVB0clNldCgpCiAgICB7CiAgICAgICAg
ZGVsZXRlTGlzdElmTmVjZXNzYXJ5KCk7CiAgICB9CgogICAgdm9pZCBjbGVhcigpCiAgICB7CiAg
ICAgICAgZGVsZXRlTGlzdElmTmVjZXNzYXJ5KCk7CiAgICAgICAgc2V0RW1wdHkoKTsKICAgIH0K
CgogICAgVCBvbmx5RW50cnkoKSBjb25zdAogICAgewogICAgICAgIGlmIChpc1RoaW4oKSkKICAg
ICAgICAgICAgcmV0dXJuIHNpbmdsZUVudHJ5KCk7CiAgICAgICAgT3V0T2ZMaW5lTGlzdCogbGlz
dCA9IHRoaXMtPmxpc3QoKTsKICAgICAgICBpZiAobGlzdC0+bV9sZW5ndGggIT0gMSkKICAgICAg
ICAgICAgcmV0dXJuIFQoKTsKICAgICAgICByZXR1cm4gbGlzdC0+bGlzdCgpWzBdOwogICAgfQoK
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CiAgICB7CiAgICAgICAgYm9vbCByZXN1bHQgPSBpc1Ro
aW4oKSAmJiAhc2luZ2xlRW50cnkoKTsKICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAo
KHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCgogICAgYm9vbCBhZGQoVCB2
YWx1ZSkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgaWYgKGlzVGhpbigpKSB7CiAg
ICAgICAgICAgIGlmIChzaW5nbGVFbnRyeSgpID09IHZhbHVlKQogICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICBpZiAoIXNpbmdsZUVudHJ5KCkpIHsKICAgICAgICAgICAg
ICAgIHNldCh2YWx1ZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
fQoKICAgICAgICAgICAgT3V0T2ZMaW5lTGlzdCogbGlzdCA9IE91dE9mTGluZUxpc3Q6OmNyZWF0
ZShkZWZhdWx0U3RhcnRpbmdTaXplKTsKICAgICAgICAgICAgbGlzdC0+bV9sZW5ndGggPSAyOwog
ICAgICAgICAgICBsaXN0LT5saXN0KClbMF0gPSBzaW5nbGVFbnRyeSgpOwogICAgICAgICAgICBs
aXN0LT5saXN0KClbMV0gPSB2YWx1ZTsKICAgICAgICAgICAgc2V0KGxpc3QpOwogICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBhZGRPdXRPZkxpbmUodmFs
dWUpOwogICAgfQoKICAgIGJvb2wgcmVtb3ZlKFQgdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKGlz
VGhpbigpKSB7CiAgICAgICAgICAgIGlmIChzaW5nbGVFbnRyeSgpID09IHZhbHVlKSB7CiAgICAg
ICAgICAgICAgICBzZXRFbXB0eSgpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgT3V0
T2ZMaW5lTGlzdCogbGlzdCA9IHRoaXMtPmxpc3QoKTsKICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGlzdC0+bV9sZW5ndGg7ICsraSkgewogICAgICAgICAgICBpZiAobGlzdC0+bGlz
dCgpW2ldICE9IHZhbHVlKQogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIGxp
c3QtPmxpc3QoKVtpXSA9IGxpc3QtPmxpc3QoKVstLWxpc3QtPm1fbGVuZ3RoXTsKICAgICAgICAg
ICAgaWYgKCFsaXN0LT5tX2xlbmd0aCkgewogICAgICAgICAgICAgICAgT3V0T2ZMaW5lTGlzdDo6
ZGVzdHJveShsaXN0KTsKICAgICAgICAgICAgICAgIHNldEVtcHR5KCk7CiAgICAgICAgICAgIH0K
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsK
ICAgIH0KCiAgICBib29sIGNvbnRhaW5zKFQgdmFsdWUpIGNvbnN0CiAgICB7CiAgICAgICAgaWYg
KGlzVGhpbigpKQogICAgICAgICAgICByZXR1cm4gc2luZ2xlRW50cnkoKSA9PSB2YWx1ZTsKICAg
ICAgICByZXR1cm4gY29udGFpbnNPdXRPZkxpbmUodmFsdWUpOwogICAgfQoKICAgIGJvb2wgbWVy
Z2UoY29uc3QgVGlueVB0clNldCYgb3RoZXIpCiAgICB7CiAgICAgICAgaWYgKG90aGVyLmlzVGhp
bigpKSB7CiAgICAgICAgICAgIGlmIChvdGhlci5zaW5nbGVFbnRyeSgpKQogICAgICAgICAgICAg
ICAgcmV0dXJuIGFkZChvdGhlci5zaW5nbGVFbnRyeSgpKTsKICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgIH0KCiAgICAgICAgT3V0T2ZMaW5lTGlzdCogbGlzdCA9IG90aGVyLmxpc3Qo
KTsKICAgICAgICBpZiAobGlzdC0+bV9sZW5ndGggPj0gMikgewogICAgICAgICAgICBpZiAoaXNU
aGluKCkpIHsKICAgICAgICAgICAgICAgIE91dE9mTGluZUxpc3QqIG15TmV3TGlzdCA9IE91dE9m
TGluZUxpc3Q6OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICBsaXN0LT5tX2xlbmd0aCArICEh
c2luZ2xlRW50cnkoKSk7CiAgICAgICAgICAgICAgICBpZiAoc2luZ2xlRW50cnkoKSkgewogICAg
ICAgICAgICAgICAgICAgIG15TmV3TGlzdC0+bV9sZW5ndGggPSAxOwogICAgICAgICAgICAgICAg
ICAgIG15TmV3TGlzdC0+bGlzdCgpWzBdID0gc2luZ2xlRW50cnkoKTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIHNldChteU5ld0xpc3QpOwogICAgICAgICAgICB9CiAgICAgICAg
ICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGlzdC0+bV9sZW5ndGg7ICsraSkKICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gYWRk
T3V0T2ZMaW5lKGxpc3QtPmxpc3QoKVtpXSk7CiAgICAgICAgICAgIHJldHVybiBjaGFuZ2VkOwog
ICAgICAgIH0KCiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiBhZGQobGlzdC0+bGlz
dCgpWzBdKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgdm9pZCBm
b3JFYWNoKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICB7CiAgICAgICAgaWYgKGlz
VGhpbigpKSB7CiAgICAgICAgICAgIGlmICghc2luZ2xlRW50cnkoKSkKICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgZnVuY3RvcihzaW5nbGVFbnRyeSgpKTsKICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgT3V0T2ZMaW5lTGlzdCogbGlzdCA9IHRoaXMtPmxp
c3QoKTsKICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGlzdC0+bV9sZW5ndGg7ICsr
aSkKICAgICAgICAgICAgZnVuY3RvcihsaXN0LT5saXN0KClbaV0pOwogICAgfQoKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICB2b2lkIGdlbmVyaWNGaWx0ZXIoY29uc3QgRnVuY3Rv
ciYgZnVuY3RvcikKICAgIHsKICAgICAgICBpZiAoaXNUaGluKCkpIHsKICAgICAgICAgICAgaWYg
KCFzaW5nbGVFbnRyeSgpKQogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICBpZiAo
ZnVuY3RvcihzaW5nbGVFbnRyeSgpKSkKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgY2xlYXIoKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgT3V0T2ZM
aW5lTGlzdCogbGlzdCA9IHRoaXMtPmxpc3QoKTsKICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGlzdC0+bV9sZW5ndGg7ICsraSkgewogICAgICAgICAgICBpZiAoZnVuY3RvcihsaXN0
LT5saXN0KClbaV0pKQogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIGxpc3Qt
Pmxpc3QoKVtpLS1dID0gbGlzdC0+bGlzdCgpWy0tbGlzdC0+bV9sZW5ndGhdOwogICAgICAgIH0K
ICAgICAgICBpZiAoIWxpc3QtPm1fbGVuZ3RoKQogICAgICAgICAgICBjbGVhcigpOwogICAgfQoK
ICAgIHZvaWQgZmlsdGVyKGNvbnN0IFRpbnlQdHJTZXQmIG90aGVyKQogICAgewogICAgICAgIGlm
IChvdGhlci5pc1RoaW4oKSkgewogICAgICAgICAgICBpZiAoIW90aGVyLnNpbmdsZUVudHJ5KCkg
fHwgIWNvbnRhaW5zKG90aGVyLnNpbmdsZUVudHJ5KCkpKQogICAgICAgICAgICAgICAgY2xlYXIo
KTsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBjbGVhcigpOwogICAgICAgICAg
ICAgICAgc2V0KG90aGVyLnNpbmdsZUVudHJ5KCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAg
IHJldHVybjsKICAgICAgICB9CgogICAgICAgIGdlbmVyaWNGaWx0ZXIoWyZdIChUIHZhbHVlKSB7
IHJldHVybiBvdGhlci5jb250YWluc091dE9mTGluZSh2YWx1ZSk7IH0pOwogICAgfQoKICAgIHZv
aWQgZXhjbHVkZShjb25zdCBUaW55UHRyU2V0JiBvdGhlcikKICAgIHsKICAgICAgICBpZiAob3Ro
ZXIuaXNUaGluKCkpIHsKICAgICAgICAgICAgaWYgKG90aGVyLnNpbmdsZUVudHJ5KCkpCiAgICAg
ICAgICAgICAgICByZW1vdmUob3RoZXIuc2luZ2xlRW50cnkoKSk7CiAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICB9CgogICAgICAgIGdlbmVyaWNGaWx0ZXIoWyZdIChUIHZhbHVlKSB7IHJldHVy
biAhb3RoZXIuY29udGFpbnNPdXRPZkxpbmUodmFsdWUpOyB9KTsKICAgIH0KCiAgICBib29sIGlz
U3Vic2V0T2YoY29uc3QgVGlueVB0clNldCYgb3RoZXIpIGNvbnN0CiAgICB7CiAgICAgICAgaWYg
KGlzVGhpbigpKSB7CiAgICAgICAgICAgIGlmICghc2luZ2xlRW50cnkoKSkKICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICByZXR1cm4gb3RoZXIuY29udGFpbnMoc2luZ2xl
RW50cnkoKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAob3RoZXIuaXNUaGluKCkpIHsKICAgICAg
ICAgICAgaWYgKCFvdGhlci5zaW5nbGVFbnRyeSgpKQogICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICBPdXRPZkxpbmVMaXN0KiBsaXN0ID0gdGhpcy0+bGlzdCgpOwogICAg
ICAgICAgICBpZiAobGlzdC0+bV9sZW5ndGggPj0gMikKICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgaWYgKGxpc3QtPmxpc3QoKVswXSA9PSBvdGhlci5zaW5nbGVFbnRy
eSgpKQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICB9CgogICAgICAgIE91dE9mTGluZUxpc3QqIGxpc3QgPSB0aGlzLT5saXN0KCk7
CiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpc3QtPm1fbGVuZ3RoOyArK2kpIHsK
ICAgICAgICAgICAgaWYgKCFvdGhlci5jb250YWluc091dE9mTGluZShsaXN0LT5saXN0KClbaV0p
KQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgIH0KCiAgICBib29sIGlzU3VwZXJzZXRPZihjb25zdCBUaW55UHRyU2V0JiBvdGhl
cikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gb3RoZXIuaXNTdWJzZXRPZigqdGhpcyk7CiAg
ICB9CgogICAgYm9vbCBvdmVybGFwcyhjb25zdCBUaW55UHRyU2V0JiBvdGhlcikgY29uc3QKICAg
IHsKICAgICAgICBpZiAoaXNUaGluKCkpIHsKICAgICAgICAgICAgaWYgKCFzaW5nbGVFbnRyeSgp
KQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICByZXR1cm4gb3RoZXIu
Y29udGFpbnMoc2luZ2xlRW50cnkoKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAob3RoZXIuaXNU
aGluKCkpIHsKICAgICAgICAgICAgaWYgKCFvdGhlci5zaW5nbGVFbnRyeSgpKQogICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICByZXR1cm4gY29udGFpbnNPdXRPZkxpbmUo
b3RoZXIuc2luZ2xlRW50cnkoKSk7CiAgICAgICAgfQoKICAgICAgICBPdXRPZkxpbmVMaXN0KiBs
aXN0ID0gdGhpcy0+bGlzdCgpOwogICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0
LT5tX2xlbmd0aDsgKytpKSB7CiAgICAgICAgICAgIGlmIChvdGhlci5jb250YWluc091dE9mTGlu
ZShsaXN0LT5saXN0KClbaV0pKQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
fQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0CiAg
ICB7CiAgICAgICAgaWYgKGlzVGhpbigpKQogICAgICAgICAgICByZXR1cm4gISFzaW5nbGVFbnRy
eSgpOwogICAgICAgIHJldHVybiBsaXN0KCktPm1fbGVuZ3RoOwogICAgfQoKICAgIFQgYXQoc2l6
ZV90IGkpIGNvbnN0CiAgICB7CiAgICAgICAgaWYgKGlzVGhpbigpKSB7CiAgICAgICAgICAgICgo
dm9pZCkwKTsKICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICByZXR1cm4gc2luZ2xl
RW50cnkoKTsKICAgICAgICB9CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiBsaXN0
KCktPmxpc3QoKVtpXTsKICAgIH0KCiAgICBUIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsg
cmV0dXJuIGF0KGkpOyB9CgogICAgVCBsYXN0KCkgY29uc3QKICAgIHsKICAgICAgICBpZiAoaXNU
aGluKCkpIHsKICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICByZXR1cm4gc2luZ2xl
RW50cnkoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGxpc3QoKS0+bGlzdCgpW2xpc3QoKS0+
bV9sZW5ndGggLSAxXTsKICAgIH0KCiAgICBjbGFzcyBpdGVyYXRvciB7CiAgICBwdWJsaWM6CiAg
ICAgICAgaXRlcmF0b3IoKQogICAgICAgICAgICA6IG1fc2V0KG51bGxwdHIpCiAgICAgICAgICAg
ICwgbV9pbmRleCgwKQogICAgICAgIHsKICAgICAgICB9CgogICAgICAgIGl0ZXJhdG9yKGNvbnN0
IFRpbnlQdHJTZXQqIHNldCwgc2l6ZV90IGluZGV4KQogICAgICAgICAgICA6IG1fc2V0KHNldCkK
ICAgICAgICAgICAgLCBtX2luZGV4KGluZGV4KQogICAgICAgIHsKICAgICAgICB9CgogICAgICAg
IFQgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9zZXQtPmF0KG1faW5kZXgpOyB9CiAgICAg
ICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAgICAgIHsKICAgICAgICAgICAgbV9pbmRleCsr
OwogICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgfQogICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXggPT0gb3Ro
ZXIubV9pbmRleDsgfQogICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CgogICAgcHJpdmF0ZToKICAg
ICAgICBjb25zdCBUaW55UHRyU2V0KiBtX3NldDsKICAgICAgICBzaXplX3QgbV9pbmRleDsKICAg
IH07CgogICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcih0aGlzLCAw
KTsgfQogICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IodGhpcywgc2l6
ZSgpKTsgfQoKICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW55UHRyU2V0JiBvdGhlcikgY29u
c3QKICAgIHsKICAgICAgICBpZiAoc2l6ZSgpICE9IG90aGVyLnNpemUoKSkKICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgIHJldHVybiBpc1N1YnNldE9mKG90aGVyKTsKICAgIH0KCnBy
aXZhdGU6CiAgICBmcmllbmQgY2xhc3MgSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU7
CgogICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCB0aGluRmxhZyA9IDE7CiAgICBzdGF0aWMgY29u
c3QgdWludHB0cl90IHJlc2VydmVkRmxhZyA9IDI7CiAgICBzdGF0aWMgY29uc3QgdWludHB0cl90
IGZsYWdzID0gdGhpbkZsYWcgfCByZXNlcnZlZEZsYWc7CiAgICBzdGF0aWMgY29uc3QgdWludHB0
cl90IHJlc2VydmVkVmFsdWUgPSA0OwoKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0
U3RhcnRpbmdTaXplID0gNDsKCiAgICBib29sIGFkZE91dE9mTGluZShUIHZhbHVlKQogICAgewog
ICAgICAgIE91dE9mTGluZUxpc3QqIGxpc3QgPSB0aGlzLT5saXN0KCk7CiAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxpc3QtPm1fbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgaWYg
KGxpc3QtPmxpc3QoKVtpXSA9PSB2YWx1ZSkKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICB9CgogICAgICAgIGlmIChsaXN0LT5tX2xlbmd0aCA8IGxpc3QtPm1fY2FwYWNpdHkp
IHsKICAgICAgICAgICAgbGlzdC0+bGlzdCgpW2xpc3QtPm1fbGVuZ3RoKytdID0gdmFsdWU7CiAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgT3V0T2ZMaW5lTGlzdCog
bmV3TGlzdCA9IE91dE9mTGluZUxpc3Q6OmNyZWF0ZShsaXN0LT5tX2NhcGFjaXR5ICogMik7CiAg
ICAgICAgbmV3TGlzdC0+bV9sZW5ndGggPSBsaXN0LT5tX2xlbmd0aCArIDE7CiAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbGlzdC0+bV9sZW5ndGg7IGktLTspCiAgICAgICAgICAgIG5ld0xpc3Qt
Pmxpc3QoKVtpXSA9IGxpc3QtPmxpc3QoKVtpXTsKICAgICAgICBuZXdMaXN0LT5saXN0KClbbGlz
dC0+bV9sZW5ndGhdID0gdmFsdWU7CiAgICAgICAgT3V0T2ZMaW5lTGlzdDo6ZGVzdHJveShsaXN0
KTsKICAgICAgICBzZXQobmV3TGlzdCk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAg
Ym9vbCBjb250YWluc091dE9mTGluZShUIHZhbHVlKSBjb25zdAogICAgewogICAgICAgIE91dE9m
TGluZUxpc3QqIGxpc3QgPSB0aGlzLT5saXN0KCk7CiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxpc3QtPm1fbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgaWYgKGxpc3QtPmxpc3Qo
KVtpXSA9PSB2YWx1ZSkKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fKSkgdm9pZCBjb3B5RnJvbShjb25zdCBUaW55UHRyU2V0JiBvdGhlcikKICAg
IHsKICAgICAgICBpZiAob3RoZXIuaXNUaGluKCkgfHwgb3RoZXIubV9wb2ludGVyID09IHJlc2Vy
dmVkVmFsdWUpIHsKICAgICAgICAgICAgYm9vbCB2YWx1ZSA9IGdldFJlc2VydmVkRmxhZygpOwog
ICAgICAgICAgICBtX3BvaW50ZXIgPSBvdGhlci5tX3BvaW50ZXI7CiAgICAgICAgICAgIHNldFJl
c2VydmVkRmxhZyh2YWx1ZSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAg
Y29weUZyb21PdXRPZkxpbmUob3RoZXIpOwogICAgfQoKICAgIF9fYXR0cmlidXRlX18oKF9fbm9p
bmxpbmVfXykpIHZvaWQgY29weUZyb21PdXRPZkxpbmUoY29uc3QgVGlueVB0clNldCYgb3RoZXIp
CiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIE91dE9mTGluZUxpc3QqIG90aGVyTGlz
dCA9IG90aGVyLmxpc3QoKTsKICAgICAgICBPdXRPZkxpbmVMaXN0KiBteUxpc3QgPSBPdXRPZkxp
bmVMaXN0OjpjcmVhdGUob3RoZXJMaXN0LT5tX2xlbmd0aCk7CiAgICAgICAgbXlMaXN0LT5tX2xl
bmd0aCA9IG90aGVyTGlzdC0+bV9sZW5ndGg7CiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gb3Ro
ZXJMaXN0LT5tX2xlbmd0aDsgaS0tOykKICAgICAgICAgICAgbXlMaXN0LT5saXN0KClbaV0gPSBv
dGhlckxpc3QtPmxpc3QoKVtpXTsKICAgICAgICBzZXQobXlMaXN0KTsKICAgIH0KCiAgICBjbGFz
cyBPdXRPZkxpbmVMaXN0IHsKICAgIHB1YmxpYzoKICAgICAgICBzdGF0aWMgT3V0T2ZMaW5lTGlz
dCogY3JlYXRlKHVuc2lnbmVkIGNhcGFjaXR5KQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJu
IG5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhzaXplb2YoT3V0T2ZMaW5lTGlzdCkgKyBjYXBhY2l0
eSAqIHNpemVvZihUKSkpIE91dE9mTGluZUxpc3QoMCwgY2FwYWNpdHkpOwogICAgICAgIH0KCiAg
ICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShPdXRPZkxpbmVMaXN0KiBsaXN0KQogICAgICAgIHsK
ICAgICAgICAgICAgZmFzdEZyZWUobGlzdCk7CiAgICAgICAgfQoKICAgICAgICBUKiBsaXN0KCkg
eyByZXR1cm4gYml0d2lzZV9jYXN0PFQqPih0aGlzICsgMSk7IH0KCiAgICAgICAgT3V0T2ZMaW5l
TGlzdCh1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGNhcGFjaXR5KQogICAgICAgICAgICA6IG1f
bGVuZ3RoKGxlbmd0aCkKICAgICAgICAgICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5KQogICAgICAg
IHsKICAgICAgICB9CgogICAgICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwogICAgICAgIHVuc2lnbmVk
IG1fY2FwYWNpdHk7CiAgICB9OwoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXykpIHZvaWQgZGVsZXRlTGlzdElmTmVjZXNzYXJ5KCkKICAgIHsKICAgICAgICBpZiAo
IWlzVGhpbigpICYmIG1fcG9pbnRlciAhPSByZXNlcnZlZFZhbHVlKQogICAgICAgICAgICBPdXRP
ZkxpbmVMaXN0OjpkZXN0cm95KGxpc3QoKSk7CiAgICB9CgogICAgYm9vbCBpc1RoaW4oKSBjb25z
dCB7IHJldHVybiBtX3BvaW50ZXIgJiB0aGluRmxhZzsgfQoKICAgIHZvaWQqIHBvaW50ZXIoKSBj
b25zdAogICAgewogICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KG1fcG9pbnRlciAm
IH5mbGFncyk7CiAgICB9CgogICAgVCBzaW5nbGVFbnRyeSgpIGNvbnN0CiAgICB7CiAgICAgICAg
KCh2b2lkKTApOwogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihwb2ludGVyKCkpOwogICAg
fQoKICAgIE91dE9mTGluZUxpc3QqIGxpc3QoKSBjb25zdAogICAgewogICAgICAgICgodm9pZCkw
KTsKICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8T3V0T2ZMaW5lTGlzdCo+KHBvaW50ZXIoKSk7
CiAgICB9CgogICAgdm9pZCBzZXQoVCB2YWx1ZSkKICAgIHsKICAgICAgICBzZXQoYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4odmFsdWUpLCB0cnVlKTsKICAgIH0KICAgIHZvaWQgc2V0KE91dE9mTGlu
ZUxpc3QqIGxpc3QpCiAgICB7CiAgICAgICAgc2V0KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGxp
c3QpLCBmYWxzZSk7CiAgICB9CiAgICB2b2lkIHNldEVtcHR5KCkKICAgIHsKICAgICAgICBzZXQo
MCwgdHJ1ZSk7CiAgICB9CiAgICB2b2lkIHNldCh1aW50cHRyX3QgcG9pbnRlciwgYm9vbCBzaW5n
bGVFbnRyeSkKICAgIHsKICAgICAgICBtX3BvaW50ZXIgPSBwb2ludGVyIHwgKHNpbmdsZUVudHJ5
ID8gdGhpbkZsYWcgOiAwKSB8IChtX3BvaW50ZXIgJiByZXNlcnZlZEZsYWcpOwogICAgfQogICAg
Ym9vbCBnZXRSZXNlcnZlZEZsYWcoKSBjb25zdCB7IHJldHVybiBtX3BvaW50ZXIgJiByZXNlcnZl
ZEZsYWc7IH0KICAgIHZvaWQgc2V0UmVzZXJ2ZWRGbGFnKGJvb2wgdmFsdWUpCiAgICB7CiAgICAg
ICAgaWYgKHZhbHVlKQogICAgICAgICAgICBtX3BvaW50ZXIgfD0gcmVzZXJ2ZWRGbGFnOwogICAg
ICAgIGVsc2UKICAgICAgICAgICAgbV9wb2ludGVyICY9IH5yZXNlcnZlZEZsYWc7CiAgICB9Cgog
ICAgdWludHB0cl90IG1fcG9pbnRlcjsKfTsKCn0KCnVzaW5nIFdURjo6VGlueVB0clNldDsKIyAz
NCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oIiAy
CgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIFRyYWNrZWRSZWZlcmVuY2VzOwoKbmFtZXNwYWNlIERG
RyB7CmNsYXNzIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU7CnN0cnVjdCBBYnN0cmFjdFZhbHVlOwp9
CgpjbGFzcyBTdHJ1Y3R1cmVTZXQgOiBwdWJsaWMgVGlueVB0clNldDxTdHJ1Y3R1cmUqPiB7CnB1
YmxpYzoKCgoKCgogICAgU3RydWN0dXJlU2V0KCkKICAgIHsKICAgIH0KCiAgICBTdHJ1Y3R1cmVT
ZXQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgOiBUaW55UHRyU2V0KHN0cnVjdHVyZSkK
ICAgIHsKICAgIH0KCiAgICBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p
KSBTdHJ1Y3R1cmVTZXQoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikKICAgICAgICA6IFRpbnlQ
dHJTZXQob3RoZXIpCiAgICB7CiAgICB9CgogICAgU3RydWN0dXJlKiBvbmx5U3RydWN0dXJlKCkg
Y29uc3QKICAgIHsKICAgICAgICByZXR1cm4gb25seUVudHJ5KCk7CiAgICB9CgoKICAgIHZvaWQg
ZmlsdGVyKGNvbnN0IERGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYpOwogICAgdm9pZCBmaWx0
ZXIoU3BlY3VsYXRlZFR5cGUpOwogICAgdm9pZCBmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMp
OwogICAgdm9pZCBmaWx0ZXIoY29uc3QgREZHOjpBYnN0cmFjdFZhbHVlJik7CgoKICAgIFNwZWN1
bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZXMoKSBjb25zdDsKICAgIEFycmF5TW9k
ZXMgYXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmVzKCkgY29uc3Q7CgogICAgdm9pZCBkdW1wSW5Db250
ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwoKICAgIHZvaWQgdmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNr
ZWRSZWZlcmVuY2VzJikgY29uc3Q7Cn07Cgp9CiMgMzEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVTZXQuaCIgMgoKCgoKCm5hbWVzcGFjZSBJbnNwZWN0b3IgewpuYW1l
c3BhY2UgUHJvdG9jb2wgewp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBBcnJheTsKCm5hbWVz
cGFjZSBSdW50aW1lIHsKY2xhc3MgU3RydWN0dXJlRGVzY3JpcHRpb247CmNsYXNzIFR5cGVTZXQ7
Cn0KCn0KfQoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBTdHJ1Y3R1cmVTaGFwZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFN0cnVjdHVyZVNoYXBlPiB7CiAgICBmcmllbmQgY2xhc3MgVHlwZVNldDsKCnB1
YmxpYzoKICAgIFN0cnVjdHVyZVNoYXBlKCk7CgogICAgc3RhdGljIFJlZjxTdHJ1Y3R1cmVTaGFw
ZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJ1Y3R1cmVTaGFwZSk7IH0KICAg
IFN0cmluZyBwcm9wZXJ0eUhhc2goKTsKICAgIHZvaWQgbWFya0FzRmluYWwoKTsKICAgIHZvaWQg
YWRkUHJvcGVydHkoVW5pcXVlZFN0cmluZ0ltcGwmKTsKICAgIFN0cmluZyBzdHJpbmdSZXByZXNl
bnRhdGlvbigpOwogICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwogICAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPiBpbnNwZWN0b3JS
ZXByZXNlbnRhdGlvbigpOwogICAgdm9pZCBzZXRDb25zdHJ1Y3Rvck5hbWUoU3RyaW5nIG5hbWUp
IHsgbV9jb25zdHJ1Y3Rvck5hbWUgPSAobmFtZS5pc0VtcHR5KCkgPyAiT2JqZWN0IiA6IG5hbWUp
OyB9CiAgICBTdHJpbmcgY29uc3RydWN0b3JOYW1lKCkgeyByZXR1cm4gbV9jb25zdHJ1Y3Rvck5h
bWU7IH0KICAgIHZvaWQgc2V0UHJvdG8oUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gc2hhcGUp
IHsgbV9wcm90byA9IHNoYXBlOyB9CiAgICB2b2lkIGVudGVyRGljdGlvbmFyeU1vZGUoKTsKCnBy
aXZhdGU6CiAgICBzdGF0aWMgU3RyaW5nIGxlYXN0Q29tbW9uQW5jZXN0b3IoY29uc3QgVmVjdG9y
PFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4+KTsKICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVy
ZVNoYXBlPiBtZXJnZShjb25zdCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiwgY29uc3QgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4pOwogICAgYm9vbCBoYXNTYW1lUHJvdG90eXBlQ2hhaW4o
UGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4pOwoKICAgIEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IG1fZmllbGRzOwogICAgSGFzaFNldDxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gbV9vcHRpb25hbEZpZWxk
czsKICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gbV9wcm90bzsKICAgIHN0ZDo6dW5pcXVlX3B0
cjxTdHJpbmc+IG1fcHJvcGVydHlIYXNoOwogICAgU3RyaW5nIG1fY29uc3RydWN0b3JOYW1lOwog
ICAgYm9vbCBtX2ZpbmFsOwogICAgYm9vbCBtX2lzSW5EaWN0aW9uYXJ5TW9kZTsKfTsKCmNsYXNz
IFR5cGVTZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxUeXBlU2V0PiB7CgpwdWJsaWM6CiAgICBzdGF0
aWMgUmVmPFR5cGVTZXQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHlwZVNldCk7
IH0KICAgIFR5cGVTZXQoKTsKICAgIHZvaWQgYWRkVHlwZUluZm9ybWF0aW9uKFJ1bnRpbWVUeXBl
LCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiwgU3RydWN0dXJlKik7CiAgICB2b2lkIGludmFs
aWRhdGVDYWNoZSgpOwogICAgU3RyaW5nIGR1bXBUeXBlcygpIGNvbnN0OwogICAgU3RyaW5nIGRp
c3BsYXlOYW1lKCkgY29uc3Q7CiAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+PiBhbGxTdHJ1
Y3R1cmVSZXByZXNlbnRhdGlvbnMoKSBjb25zdDsKICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBj
b25zdDsKICAgIGJvb2wgaXNPdmVyZmxvd24oKSBjb25zdCB7IHJldHVybiBtX2lzT3ZlcmZsb3du
OyB9CiAgICBTdHJpbmcgbGVhc3RDb21tb25BbmNlc3RvcigpIGNvbnN0OwogICAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVTZXQ+IGluc3BlY3RvclR5cGVTZXQoKSBjb25z
dDsKICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VlblR5cGVzID09IFR5cGVO
b3RoaW5nOyB9CiAgICBib29sIGRvZXNUeXBlQ29uZm9ybVRvKFJ1bnRpbWVUeXBlTWFzayB0ZXN0
KSBjb25zdDsKICAgIFJ1bnRpbWVUeXBlTWFzayBzZWVuVHlwZXMoKSBjb25zdCB7IHJldHVybiBt
X3NlZW5UeXBlczsgfQogICAgU3RydWN0dXJlU2V0IHN0cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RydWN0dXJlU2V0OyB9OwoKcHJpdmF0ZToKICAgIFJ1bnRpbWVUeXBlTWFzayBtX3Nl
ZW5UeXBlczsKICAgIGJvb2wgbV9pc092ZXJmbG93bjsKICAgIFZlY3RvcjxSZWZQdHI8U3RydWN0
dXJlU2hhcGU+PiBtX3N0cnVjdHVyZUhpc3Rvcnk7CiAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1
cmVTZXQ7Cn07Cgp9CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9U
eXBlTG9jYXRpb24uaCIgMgoKbmFtZXNwYWNlIEpTQyB7CgplbnVtIFR5cGVQcm9maWxlckdsb2Jh
bElERmxhZ3MgewogICAgVHlwZVByb2ZpbGVyTmVlZHNVbmlxdWVJREdlbmVyYXRpb24gPSAtMSwK
ICAgIFR5cGVQcm9maWxlck5vR2xvYmFsSURFeGlzdHMgPSAtMiwKICAgIFR5cGVQcm9maWxlclJl
dHVyblN0YXRlbWVudCA9IC0zCn07Cgp0eXBlZGVmIGludHB0cl90IEdsb2JhbFZhcmlhYmxlSUQ7
CgpjbGFzcyBUeXBlTG9jYXRpb24gewpwdWJsaWM6CiAgICBUeXBlTG9jYXRpb24oKQogICAgICAg
IDogbV9sYXN0U2VlblR5cGUoVHlwZU5vdGhpbmcpCiAgICAgICAgLCBtX2Rpdm90Rm9yRnVuY3Rp
b25PZmZzZXRJZlJldHVyblN0YXRlbWVudCgoMjE0NzQ4MzY0NyAqIDJVICsgMVUpKQogICAgICAg
ICwgbV9pbnN0cnVjdGlvblR5cGVTZXQoVHlwZVNldDo6Y3JlYXRlKCkpCiAgICAgICAgLCBtX2ds
b2JhbFR5cGVTZXQobnVsbHB0cikKICAgIHsKICAgIH0KCiAgICBHbG9iYWxWYXJpYWJsZUlEIG1f
Z2xvYmFsVmFyaWFibGVJRDsKICAgIFJ1bnRpbWVUeXBlIG1fbGFzdFNlZW5UeXBlOwogICAgaW50
cHRyX3QgbV9zb3VyY2VJRDsKICAgIHVuc2lnbmVkIG1fZGl2b3RTdGFydDsKICAgIHVuc2lnbmVk
IG1fZGl2b3RFbmQ7CiAgICB1bnNpZ25lZCBtX2Rpdm90Rm9yRnVuY3Rpb25PZmZzZXRJZlJldHVy
blN0YXRlbWVudDsKICAgIFJlZlB0cjxUeXBlU2V0PiBtX2luc3RydWN0aW9uVHlwZVNldDsKICAg
IFJlZlB0cjxUeXBlU2V0PiBtX2dsb2JhbFR5cGVTZXQ7Cn07Cgp9CiMgMzggIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgiIDIKIyAxICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WYXJPZmZzZXQuaCIgMQojIDI3ICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WYXJPZmZzZXQuaCIKI2RlZmluZSBWYXJPZmZzZXRf
aCAKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1l
bnRzT2Zmc2V0LmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGlyZWN0QXJndW1lbnRzT2Zmc2V0LmgiCiNkZWZpbmUgRGlyZWN0QXJndW1lbnRzT2Zmc2V0X2gg
CgoKCgpuYW1lc3BhY2UgSlNDIHsKCgoKCgpjbGFzcyBEaXJlY3RBcmd1bWVudHNPZmZzZXQgOiBw
dWJsaWMgR2VuZXJpY09mZnNldDxEaXJlY3RBcmd1bWVudHNPZmZzZXQ+IHsKcHVibGljOgogICAg
RGlyZWN0QXJndW1lbnRzT2Zmc2V0KCkgeyB9CgogICAgZXhwbGljaXQgRGlyZWN0QXJndW1lbnRz
T2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkKICAgICAgICA6IEdlbmVyaWNPZmZzZXQob2Zmc2V0KQog
ICAgewogICAgfQoKICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owp9OwoKfQojIDMw
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WYXJPZmZzZXQuaCIgMgoKIyAx
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgi
IDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdp
c3Rlci5oIgojZGVmaW5lIFZpcnR1YWxSZWdpc3Rlcl9oIAoKCgoKCm5hbWVzcGFjZSBKU0MgewoK
aW5saW5lIGJvb2wgb3BlcmFuZElzTG9jYWwoaW50IG9wZXJhbmQpCnsKICAgIHJldHVybiBvcGVy
YW5kIDwgMDsKfQoKaW5saW5lIGJvb2wgb3BlcmFuZElzQXJndW1lbnQoaW50IG9wZXJhbmQpCnsK
ICAgIHJldHVybiBvcGVyYW5kID49IDA7Cn0KCgpjbGFzcyBWaXJ0dWFsUmVnaXN0ZXIgewpwdWJs
aWM6CiAgICBmcmllbmQgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGlu
dCk7CiAgICBmcmllbmQgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
KGludCwgaW50KTsKCiAgICBWaXJ0dWFsUmVnaXN0ZXIoKQogICAgICAgIDogbV92aXJ0dWFsUmVn
aXN0ZXIoc19pbnZhbGlkVmlydHVhbFJlZ2lzdGVyKQogICAgeyB9CgogICAgZXhwbGljaXQgVmly
dHVhbFJlZ2lzdGVyKGludCB2aXJ0dWFsUmVnaXN0ZXIpCiAgICAgICAgOiBtX3ZpcnR1YWxSZWdp
c3Rlcih2aXJ0dWFsUmVnaXN0ZXIpCiAgICB7IH0KCiAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7
IHJldHVybiAobV92aXJ0dWFsUmVnaXN0ZXIgIT0gc19pbnZhbGlkVmlydHVhbFJlZ2lzdGVyKTsg
fQogICAgYm9vbCBpc0xvY2FsKCkgY29uc3QgeyByZXR1cm4gb3BlcmFuZElzTG9jYWwobV92aXJ0
dWFsUmVnaXN0ZXIpOyB9CiAgICBib29sIGlzQXJndW1lbnQoKSBjb25zdCB7IHJldHVybiBvcGVy
YW5kSXNBcmd1bWVudChtX3ZpcnR1YWxSZWdpc3Rlcik7IH0KICAgIGJvb2wgaXNIZWFkZXIoKSBj
b25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciA+PSAwICYmIG1fdmlydHVhbFJlZ2lzdGVy
IDwgSlNTdGFjazo6VGhpc0FyZ3VtZW50OyB9CiAgICBib29sIGlzQ29uc3RhbnQoKSBjb25zdCB7
IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciA+PSBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
OyB9CiAgICBpbnQgdG9Mb2NhbCgpIGNvbnN0IHsgKCh2b2lkKTApOyByZXR1cm4gb3BlcmFuZFRv
TG9jYWwobV92aXJ0dWFsUmVnaXN0ZXIpOyB9CiAgICBpbnQgdG9Bcmd1bWVudCgpIGNvbnN0IHsg
KCh2b2lkKTApOyByZXR1cm4gb3BlcmFuZFRvQXJndW1lbnQobV92aXJ0dWFsUmVnaXN0ZXIpOyB9
CiAgICBpbnQgdG9Db25zdGFudEluZGV4KCkgY29uc3QgeyAoKHZvaWQpMCk7IHJldHVybiBtX3Zp
cnR1YWxSZWdpc3RlciAtIHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KICAgIGludCBv
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlcjsgfQogICAgaW50IG9mZnNl
dEluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciAqIHNpemVvZihSZWdp
c3Rlcik7IH0KCiAgICBib29sIG9wZXJhdG9yPT0oVmlydHVhbFJlZ2lzdGVyIG90aGVyKSBjb25z
dCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciA9PSBvdGhlci5tX3ZpcnR1YWxSZWdpc3Rlcjsg
fQogICAgYm9vbCBvcGVyYXRvciE9KFZpcnR1YWxSZWdpc3RlciBvdGhlcikgY29uc3QgeyByZXR1
cm4gbV92aXJ0dWFsUmVnaXN0ZXIgIT0gb3RoZXIubV92aXJ0dWFsUmVnaXN0ZXI7IH0KICAgIGJv
b2wgb3BlcmF0b3I8KFZpcnR1YWxSZWdpc3RlciBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92aXJ0
dWFsUmVnaXN0ZXIgPCBvdGhlci5tX3ZpcnR1YWxSZWdpc3RlcjsgfQogICAgYm9vbCBvcGVyYXRv
cj4oVmlydHVhbFJlZ2lzdGVyIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3Rl
ciA+IG90aGVyLm1fdmlydHVhbFJlZ2lzdGVyOyB9CiAgICBib29sIG9wZXJhdG9yPD0oVmlydHVh
bFJlZ2lzdGVyIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciA8PSBvdGhl
ci5tX3ZpcnR1YWxSZWdpc3RlcjsgfQogICAgYm9vbCBvcGVyYXRvcj49KFZpcnR1YWxSZWdpc3Rl
ciBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIgPj0gb3RoZXIubV92aXJ0
dWFsUmVnaXN0ZXI7IH0KCiAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmF0b3IrKGludCB2YWx1ZSkg
Y29uc3QKICAgIHsKICAgICAgICByZXR1cm4gVmlydHVhbFJlZ2lzdGVyKG9mZnNldCgpICsgdmFs
dWUpOwogICAgfQogICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhdG9yLShpbnQgdmFsdWUpIGNvbnN0
CiAgICB7CiAgICAgICAgcmV0dXJuIFZpcnR1YWxSZWdpc3RlcihvZmZzZXQoKSAtIHZhbHVlKTsK
ICAgIH0KICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYXRvcisoVmlydHVhbFJlZ2lzdGVyIHZhbHVl
KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIob2Zmc2V0KCkgKyB2
YWx1ZS5vZmZzZXQoKSk7CiAgICB9CiAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmF0b3ItKFZpcnR1
YWxSZWdpc3RlciB2YWx1ZSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gVmlydHVhbFJlZ2lz
dGVyKG9mZnNldCgpIC0gdmFsdWUub2Zmc2V0KCkpOwogICAgfQogICAgVmlydHVhbFJlZ2lzdGVy
JiBvcGVyYXRvcis9KGludCB2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gKnRoaXMgPSAqdGhp
cyArIHZhbHVlOwogICAgfQogICAgVmlydHVhbFJlZ2lzdGVyJiBvcGVyYXRvci09KGludCB2YWx1
ZSkKICAgIHsKICAgICAgICByZXR1cm4gKnRoaXMgPSAqdGhpcyAtIHZhbHVlOwogICAgfQoKICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKCnByaXZhdGU6CiAgICBzdGF0aWMg
Y29uc3QgaW50IHNfaW52YWxpZFZpcnR1YWxSZWdpc3RlciA9IDB4M2ZmZmZmZmY7CiAgICBzdGF0
aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwOwoK
ICAgIHN0YXRpYyBpbnQgbG9jYWxUb09wZXJhbmQoaW50IGxvY2FsKSB7IHJldHVybiAtMSAtIGxv
Y2FsOyB9CiAgICBzdGF0aWMgaW50IG9wZXJhbmRUb0xvY2FsKGludCBvcGVyYW5kKSB7IHJldHVy
biAtMSAtIG9wZXJhbmQ7IH0KICAgIHN0YXRpYyBpbnQgb3BlcmFuZFRvQXJndW1lbnQoaW50IG9w
ZXJhbmQpIHsgcmV0dXJuIG9wZXJhbmQgLSBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgp
OyB9CiAgICBzdGF0aWMgaW50IGFyZ3VtZW50VG9PcGVyYW5kKGludCBhcmd1bWVudCkgeyByZXR1
cm4gYXJndW1lbnQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpOyB9CgogICAgaW50
IG1fdmlydHVhbFJlZ2lzdGVyOwp9OwoKc3RhdGljX2Fzc2VydCgoc2l6ZW9mKFZpcnR1YWxSZWdp
c3RlcikgPT0gc2l6ZW9mKGludCkpLCAiVmlydHVhbFJlZ2lzdGVyX2lzXzMyYml0Iik7Cgppbmxp
bmUgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGludCBsb2NhbCkKewog
ICAgcmV0dXJuIFZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXI6OmxvY2FsVG9PcGVyYW5k
KGxvY2FsKSk7Cn0KCmlubGluZSBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoaW50IGFyZ3VtZW50LCBpbnQgb2Zmc2V0ID0gMCkKewogICAgcmV0dXJuIFZpcnR1YWxS
ZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXI6OmFyZ3VtZW50VG9PcGVyYW5kKGFyZ3VtZW50KSArIG9m
ZnNldCk7Cn0KCn0KIyAzMiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVmFy
T2Zmc2V0LmgiIDIKCgpuYW1lc3BhY2UgSlNDIHsKCmVudW0gY2xhc3MgVmFyS2luZCA6IHVpbnQ4
X3QgewogICAgSW52YWxpZCwKICAgIFNjb3BlLAogICAgU3RhY2ssCiAgICBEaXJlY3RBcmd1bWVu
dAp9OwoKY2xhc3MgVmFyT2Zmc2V0IHsKcHVibGljOgogICAgVmFyT2Zmc2V0KCkKICAgICAgICA6
IG1fa2luZChWYXJLaW5kOjpJbnZhbGlkKQogICAgICAgICwgbV9vZmZzZXQoKDIxNDc0ODM2NDcg
KiAyVSArIDFVKSkKICAgIHsKICAgIH0KCiAgICBWYXJPZmZzZXQoV1RGOjpIYXNoVGFibGVEZWxl
dGVkVmFsdWVUeXBlKQogICAgICAgIDogbV9raW5kKFZhcktpbmQ6OkludmFsaWQpCiAgICAgICAg
LCBtX29mZnNldCgwKQogICAgewogICAgfQoKICAgIGV4cGxpY2l0IFZhck9mZnNldChWaXJ0dWFs
UmVnaXN0ZXIgc3RhY2tPZmZzZXQpCiAgICB7CiAgICAgICAgaWYgKCFzdGFja09mZnNldC5pc1Zh
bGlkKCkpIHsKICAgICAgICAgICAgbV9raW5kID0gVmFyS2luZDo6SW52YWxpZDsKICAgICAgICAg
ICAgbV9vZmZzZXQgPSAoMjE0NzQ4MzY0NyAqIDJVICsgMVUpOwogICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgIG1fa2luZCA9IFZhcktpbmQ6OlN0YWNrOwogICAgICAgICAgICBtX29mZnNldCA9
IHN0YWNrT2Zmc2V0Lm9mZnNldCgpOwogICAgICAgIH0KICAgIH0KCiAgICBleHBsaWNpdCBWYXJP
ZmZzZXQoU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQpCiAgICB7CiAgICAgICAgaWYgKCFzY29wZU9m
ZnNldCkgewogICAgICAgICAgICBtX2tpbmQgPSBWYXJLaW5kOjpJbnZhbGlkOwogICAgICAgICAg
ICBtX29mZnNldCA9ICgyMTQ3NDgzNjQ3ICogMlUgKyAxVSk7CiAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgbV9raW5kID0gVmFyS2luZDo6U2NvcGU7CiAgICAgICAgICAgIG1fb2Zmc2V0ID0g
c2NvcGVPZmZzZXQub2Zmc2V0KCk7CiAgICAgICAgfQogICAgfQoKICAgIGV4cGxpY2l0IFZhck9m
ZnNldChEaXJlY3RBcmd1bWVudHNPZmZzZXQgY2FwdHVyZWRBcmd1bWVudHNPZmZzZXQpCiAgICB7
CiAgICAgICAgaWYgKCFjYXB0dXJlZEFyZ3VtZW50c09mZnNldCkgewogICAgICAgICAgICBtX2tp
bmQgPSBWYXJLaW5kOjpJbnZhbGlkOwogICAgICAgICAgICBtX29mZnNldCA9ICgyMTQ3NDgzNjQ3
ICogMlUgKyAxVSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbV9raW5kID0gVmFyS2lu
ZDo6RGlyZWN0QXJndW1lbnQ7CiAgICAgICAgICAgIG1fb2Zmc2V0ID0gY2FwdHVyZWRBcmd1bWVu
dHNPZmZzZXQub2Zmc2V0KCk7CiAgICAgICAgfQogICAgfQoKICAgIHN0YXRpYyBWYXJPZmZzZXQg
YXNzZW1ibGUoVmFyS2luZCBraW5kLCB1bnNpZ25lZCBvZmZzZXQpCiAgICB7CiAgICAgICAgVmFy
T2Zmc2V0IHJlc3VsdDsKICAgICAgICByZXN1bHQubV9raW5kID0ga2luZDsKICAgICAgICByZXN1
bHQubV9vZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgcmVzdWx0LmNoZWNrU2FuaXR5KCk7CiAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICBib29sIGlzVmFsaWQoKSBjb25zdAogICAgewog
ICAgICAgIHJldHVybiBtX2tpbmQgIT0gVmFyS2luZDo6SW52YWxpZDsKICAgIH0KCiAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuICFpc1ZhbGlkKCk7CiAgICB9
CgogICAgVmFyS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CgogICAgYm9vbCBp
c1N0YWNrKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9raW5kID09IFZhcktpbmQ6OlN0
YWNrOwogICAgfQoKICAgIGJvb2wgaXNTY29wZSgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJu
IG1fa2luZCA9PSBWYXJLaW5kOjpTY29wZTsKICAgIH0KCiAgICBib29sIGlzRGlyZWN0QXJndW1l
bnQoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX2tpbmQgPT0gVmFyS2luZDo6RGlyZWN0
QXJndW1lbnQ7CiAgICB9CgogICAgVmlydHVhbFJlZ2lzdGVyIHN0YWNrT2Zmc2V0VW5jaGVja2Vk
KCkgY29uc3QKICAgIHsKICAgICAgICBpZiAoIWlzU3RhY2soKSkKICAgICAgICAgICAgcmV0dXJu
IFZpcnR1YWxSZWdpc3RlcigpOwogICAgICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIobV9vZmZz
ZXQpOwogICAgfQoKICAgIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0VW5jaGVja2VkKCkgY29uc3QK
ICAgIHsKICAgICAgICBpZiAoIWlzU2NvcGUoKSkKICAgICAgICAgICAgcmV0dXJuIFNjb3BlT2Zm
c2V0KCk7CiAgICAgICAgcmV0dXJuIFNjb3BlT2Zmc2V0KG1fb2Zmc2V0KTsKICAgIH0KCiAgICBE
aXJlY3RBcmd1bWVudHNPZmZzZXQgY2FwdHVyZWRBcmd1bWVudHNPZmZzZXRVbmNoZWNrZWQoKSBj
b25zdAogICAgewogICAgICAgIGlmICghaXNEaXJlY3RBcmd1bWVudCgpKQogICAgICAgICAgICBy
ZXR1cm4gRGlyZWN0QXJndW1lbnRzT2Zmc2V0KCk7CiAgICAgICAgcmV0dXJuIERpcmVjdEFyZ3Vt
ZW50c09mZnNldChtX29mZnNldCk7CiAgICB9CgogICAgVmlydHVhbFJlZ2lzdGVyIHN0YWNrT2Zm
c2V0KCkgY29uc3QKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIFZpcnR1
YWxSZWdpc3RlcihtX29mZnNldCk7CiAgICB9CgogICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQo
KSBjb25zdAogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gU2NvcGVPZmZz
ZXQobV9vZmZzZXQpOwogICAgfQoKICAgIERpcmVjdEFyZ3VtZW50c09mZnNldCBjYXB0dXJlZEFy
Z3VtZW50c09mZnNldCgpIGNvbnN0CiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJl
dHVybiBEaXJlY3RBcmd1bWVudHNPZmZzZXQobV9vZmZzZXQpOwogICAgfQoKICAgIHVuc2lnbmVk
IHJhd09mZnNldCgpIGNvbnN0CiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVy
biBtX29mZnNldDsKICAgIH0KCiAgICB2b2lkIGNoZWNrU2FuaXR5KCkgY29uc3QKICAgIHsKICAg
ICAgICBpZiAoMSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBzd2l0Y2ggKG1fa2luZCkg
ewogICAgICAgIGNhc2UgVmFyS2luZDo6SW52YWxpZDoKICAgICAgICAgICAgKCh2b2lkKTApOwog
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgY2FzZSBWYXJLaW5kOjpTY29wZToKICAgICAgICAg
ICAgKCh2b2lkKTApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgY2FzZSBWYXJLaW5kOjpT
dGFjazoKICAgICAgICAgICAgKCh2b2lkKTApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAg
Y2FzZSBWYXJLaW5kOjpEaXJlY3RBcmd1bWVudDoKICAgICAgICAgICAgKCh2b2lkKTApOwogICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAoKHZvaWQpMCk7CiAgICB9CgogICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFZhck9mZnNldCYgb3RoZXIpIGNvbnN0CiAgICB7CiAgICAg
ICAgcmV0dXJuIG1fa2luZCA9PSBvdGhlci5tX2tpbmQKICAgICAgICAgICAgJiYgbV9vZmZzZXQg
PT0gb3RoZXIubV9vZmZzZXQ7CiAgICB9CgogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZhck9m
ZnNldCYgb3RoZXIpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OwogICAgfQoKICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBX
VEY6OkludEhhc2g8dW5zaWduZWQ+OjpoYXNoKChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9raW5k
KSA8PCAyMCkgKyBtX29mZnNldCk7CiAgICB9CgogICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBWYXJLaW5kOjpJbnZh
bGlkICYmICFtX29mZnNldDsKICAgIH0KCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dDsKCnByaXZhdGU6CiAgICBWYXJLaW5kIG1fa2luZDsKICAgIHVuc2lnbmVkIG1fb2Zmc2V0Owp9
OwoKc3RydWN0IFZhck9mZnNldEhhc2ggewogICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qg
VmFyT2Zmc2V0JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IFZhck9mZnNldCYgYSwgY29uc3QgVmFyT2Zmc2V0JiBiKSB7IHJldHVybiBhID09
IGI7IH0KICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVk
ID0gdHJ1ZTsKfTsKCn0KCm5hbWVzcGFjZSBXVEYgewoKdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiwgSlNDOjpWYXJLaW5kKTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZh
dWx0SGFzaDsKdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpWYXJPZmZzZXQ+IHsK
ICAgIHR5cGVkZWYgSlNDOjpWYXJPZmZzZXRIYXNoIEhhc2g7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6
OlZhck9mZnNldD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpWYXJPZmZzZXQ+IHsKICAg
IHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKfTsKCn0KIyAzOSAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaCIgMgoKCgoK
Cm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgU3ltYm9sVGFibGU7CgpzdGF0aWMgaW5saW5lIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IG1pc3NpbmdTeW1ib2xNYXJrZXIoKSB7
IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOyB9CiMgNzYgIi4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgiCnN0cnVjdCBTeW1ib2xU
YWJsZUVudHJ5IHsKcHJpdmF0ZToKICAgIHN0YXRpYyBWYXJPZmZzZXQgdmFyT2Zmc2V0RnJvbUJp
dHMoaW50cHRyX3QgYml0cykKICAgIHsKICAgICAgICBWYXJLaW5kIGtpbmQ7CiAgICAgICAgaW50
cHRyX3Qga2luZEJpdHMgPSBiaXRzICYgS2luZEJpdHNNYXNrOwogICAgICAgIGlmIChraW5kQml0
cyA8PSBVbndhdGNoYWJsZVNjb3BlS2luZEJpdHMpCiAgICAgICAgICAgIGtpbmQgPSBWYXJLaW5k
OjpTY29wZTsKICAgICAgICBlbHNlIGlmIChraW5kQml0cyA9PSBTdGFja0tpbmRCaXRzKQogICAg
ICAgICAgICBraW5kID0gVmFyS2luZDo6U3RhY2s7CiAgICAgICAgZWxzZQogICAgICAgICAgICBr
aW5kID0gVmFyS2luZDo6RGlyZWN0QXJndW1lbnQ7CiAgICAgICAgcmV0dXJuIFZhck9mZnNldDo6
YXNzZW1ibGUoa2luZCwgc3RhdGljX2Nhc3Q8aW50PihiaXRzID4+IEZsYWdCaXRzKSk7CiAgICB9
CgogICAgc3RhdGljIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0RnJvbUJpdHMoaW50cHRyX3QgYml0
cykKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJuIFNjb3BlT2Zmc2V0KHN0
YXRpY19jYXN0PGludD4oYml0cyA+PiBGbGFnQml0cykpOwogICAgfQoKcHVibGljOgoKCgoKCiAg
ICBjbGFzcyBGYXN0IHsKICAgIHB1YmxpYzoKICAgICAgICBGYXN0KCkKICAgICAgICAgICAgOiBt
X2JpdHMoU2xpbUZsYWcpCiAgICAgICAgewogICAgICAgIH0KCiAgICAgICAgaW5saW5lIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgRmFzdChjb25zdCBTeW1ib2xUYWJsZUVudHJ5
JiBlbnRyeSkKICAgICAgICAgICAgOiBtX2JpdHMoZW50cnkuYml0cygpKQogICAgICAgIHsKICAg
ICAgICB9CgogICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAg
IHJldHVybiAhKG1fYml0cyAmIH5TbGltRmxhZyk7CiAgICAgICAgfQoKICAgICAgICBWYXJPZmZz
ZXQgdmFyT2Zmc2V0KCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiB2YXJPZmZz
ZXRGcm9tQml0cyhtX2JpdHMpOwogICAgICAgIH0KCgoKCiAgICAgICAgU2NvcGVPZmZzZXQgc2Nv
cGVPZmZzZXQoKSBjb25zdAogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHNjb3BlT2Zmc2V0
RnJvbUJpdHMobV9iaXRzKTsKICAgICAgICB9CgogICAgICAgIGJvb2wgaXNSZWFkT25seSgpIGNv
bnN0CiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gbV9iaXRzICYgUmVhZE9ubHlGbGFnOwog
ICAgICAgIH0KCiAgICAgICAgYm9vbCBpc0RvbnRFbnVtKCkgY29uc3QKICAgICAgICB7CiAgICAg
ICAgICAgIHJldHVybiBtX2JpdHMgJiBEb250RW51bUZsYWc7CiAgICAgICAgfQoKICAgICAgICB1
bnNpZ25lZCBnZXRBdHRyaWJ1dGVzKCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXMgPSAwOwogICAgICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAg
ICAgICAgICAgYXR0cmlidXRlcyB8PSBSZWFkT25seTsKICAgICAgICAgICAgaWYgKGlzRG9udEVu
dW0oKSkKICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gRG9udEVudW07CiAgICAgICAgICAg
IHJldHVybiBhdHRyaWJ1dGVzOwogICAgICAgIH0KCiAgICAgICAgYm9vbCBpc0ZhdCgpIGNvbnN0
CiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gIShtX2JpdHMgJiBTbGltRmxhZyk7CiAgICAg
ICAgfQoKICAgIHByaXZhdGU6CiAgICAgICAgZnJpZW5kIHN0cnVjdCBTeW1ib2xUYWJsZUVudHJ5
OwogICAgICAgIGludHB0cl90IG1fYml0czsKICAgIH07CgogICAgU3ltYm9sVGFibGVFbnRyeSgp
CiAgICAgICAgOiBtX2JpdHMoU2xpbUZsYWcpCiAgICB7CiAgICB9CgogICAgU3ltYm9sVGFibGVF
bnRyeShWYXJPZmZzZXQgb2Zmc2V0KQogICAgICAgIDogbV9iaXRzKFNsaW1GbGFnKQogICAgewog
ICAgICAgICgodm9pZCkwKTsKICAgICAgICBwYWNrKG9mZnNldCwgdHJ1ZSwgZmFsc2UsIGZhbHNl
KTsKICAgIH0KCiAgICBTeW1ib2xUYWJsZUVudHJ5KFZhck9mZnNldCBvZmZzZXQsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpCiAgICAgICAgOiBtX2JpdHMoU2xpbUZsYWcpCiAgICB7CiAgICAgICAgKCh2
b2lkKTApOwogICAgICAgIHBhY2sob2Zmc2V0LCB0cnVlLCBhdHRyaWJ1dGVzICYgUmVhZE9ubHks
IGF0dHJpYnV0ZXMgJiBEb250RW51bSk7CiAgICB9CgogICAgflN5bWJvbFRhYmxlRW50cnkoKQog
ICAgewogICAgICAgIGZyZWVGYXRFbnRyeSgpOwogICAgfQoKICAgIFN5bWJvbFRhYmxlRW50cnko
Y29uc3QgU3ltYm9sVGFibGVFbnRyeSYgb3RoZXIpCiAgICAgICAgOiBtX2JpdHMoU2xpbUZsYWcp
CiAgICB7CiAgICAgICAgKnRoaXMgPSBvdGhlcjsKICAgIH0KCiAgICBTeW1ib2xUYWJsZUVudHJ5
JiBvcGVyYXRvcj0oY29uc3QgU3ltYm9sVGFibGVFbnRyeSYgb3RoZXIpCiAgICB7CiAgICAgICAg
aWYgKF9fYnVpbHRpbl9leHBlY3QoISEob3RoZXIuaXNGYXQoKSksIDApKQogICAgICAgICAgICBy
ZXR1cm4gY29weVNsb3cob3RoZXIpOwogICAgICAgIGZyZWVGYXRFbnRyeSgpOwogICAgICAgIG1f
Yml0cyA9IG90aGVyLm1fYml0czsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgU3lt
Ym9sVGFibGVFbnRyeShTeW1ib2xUYWJsZUVudHJ5JiYgb3RoZXIpCiAgICAgICAgOiBtX2JpdHMo
U2xpbUZsYWcpCiAgICB7CiAgICAgICAgc3dhcChvdGhlcik7CiAgICB9CgogICAgU3ltYm9sVGFi
bGVFbnRyeSYgb3BlcmF0b3I9KFN5bWJvbFRhYmxlRW50cnkmJiBvdGhlcikKICAgIHsKICAgICAg
ICBzd2FwKG90aGVyKTsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgdm9pZCBzd2Fw
KFN5bWJvbFRhYmxlRW50cnkmIG90aGVyKQogICAgewogICAgICAgIHN0ZDo6c3dhcChtX2JpdHMs
IG90aGVyLm1fYml0cyk7CiAgICB9CgogICAgYm9vbCBpc051bGwoKSBjb25zdAogICAgewogICAg
ICAgIHJldHVybiAhKGJpdHMoKSAmIH5TbGltRmxhZyk7CiAgICB9CgogICAgVmFyT2Zmc2V0IHZh
ck9mZnNldCgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHZhck9mZnNldEZyb21CaXRzKGJp
dHMoKSk7CiAgICB9CgogICAgYm9vbCBpc1dhdGNoYWJsZSgpIGNvbnN0CiAgICB7CiAgICAgICAg
cmV0dXJuIChtX2JpdHMgJiBLaW5kQml0c01hc2spID09IFNjb3BlS2luZEJpdHM7CiAgICB9CgoK
CgogICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQoKSBjb25zdAogICAgewogICAgICAgIHJldHVy
biBzY29wZU9mZnNldEZyb21CaXRzKGJpdHMoKSk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmli
dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgRmFzdCBnZXRGYXN0KCkgY29uc3QKICAgIHsKICAg
ICAgICByZXR1cm4gRmFzdCgqdGhpcyk7CiAgICB9CgogICAgaW5saW5lIF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fKSkgRmFzdCBnZXRGYXN0KGJvb2wmIHdhc0ZhdCkgY29uc3QKICAg
IHsKICAgICAgICBGYXN0IHJlc3VsdDsKICAgICAgICB3YXNGYXQgPSBpc0ZhdCgpOwogICAgICAg
IGlmICh3YXNGYXQpCiAgICAgICAgICAgIHJlc3VsdC5tX2JpdHMgPSBmYXRFbnRyeSgpLT5tX2Jp
dHMgfCBTbGltRmxhZzsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHJlc3VsdC5tX2JpdHMgPSBt
X2JpdHM7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICB1bnNpZ25lZCBnZXRBdHRy
aWJ1dGVzKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gZ2V0RmFzdCgpLmdldEF0dHJpYnV0
ZXMoKTsKICAgIH0KCiAgICB2b2lkIHNldEF0dHJpYnV0ZXModW5zaWduZWQgYXR0cmlidXRlcykK
ICAgIHsKICAgICAgICBwYWNrKHZhck9mZnNldCgpLCBpc1dhdGNoYWJsZSgpLCBhdHRyaWJ1dGVz
ICYgUmVhZE9ubHksIGF0dHJpYnV0ZXMgJiBEb250RW51bSk7CiAgICB9CgogICAgYm9vbCBpc1Jl
YWRPbmx5KCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gYml0cygpICYgUmVhZE9ubHlGbGFn
OwogICAgfQoKICAgIENvbnN0YW50TW9kZSBjb25zdGFudE1vZGUoKSBjb25zdAogICAgewogICAg
ICAgIHJldHVybiBtb2RlRm9ySXNDb25zdGFudChpc1JlYWRPbmx5KCkpOwogICAgfQoKICAgIGJv
b2wgaXNEb250RW51bSgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGJpdHMoKSAmIERvbnRF
bnVtRmxhZzsKICAgIH0KCiAgICB2b2lkIGRpc2FibGVXYXRjaGluZygpCiAgICB7CiAgICAgICAg
aWYgKFdhdGNocG9pbnRTZXQqIHNldCA9IHdhdGNocG9pbnRTZXQoKSkKICAgICAgICAgICAgc2V0
LT5pbnZhbGlkYXRlKCJEaXNhYmxpbmcgd2F0Y2hpbmcgaW4gc3ltYm9sIHRhYmxlIik7CiAgICAg
ICAgaWYgKHZhck9mZnNldCgpLmlzU2NvcGUoKSkKICAgICAgICAgICAgcGFjayh2YXJPZmZzZXQo
KSwgZmFsc2UsIGlzUmVhZE9ubHkoKSwgaXNEb250RW51bSgpKTsKICAgIH0KCiAgICB2b2lkIHBy
ZXBhcmVUb1dhdGNoKCk7CgogICAgdm9pZCBhZGRXYXRjaHBvaW50KFdhdGNocG9pbnQqKTsKIyAz
MTQgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgiCiAg
ICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KCkKICAgIHsKICAgICAgICBpZiAoIWlzRmF0
KCkpCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIHJldHVybiBmYXRFbnRyeSgpLT5tX3dh
dGNocG9pbnRzLmdldCgpOwogICAgfQoKcHJpdmF0ZToKICAgIHN0YXRpYyBjb25zdCBpbnRwdHJf
dCBTbGltRmxhZyA9IDB4MTsKICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBSZWFkT25seUZsYWcg
PSAweDI7CiAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgRG9udEVudW1GbGFnID0gMHg0OwogICAg
c3RhdGljIGNvbnN0IGludHB0cl90IE5vdE51bGxGbGFnID0gMHg4OwogICAgc3RhdGljIGNvbnN0
IGludHB0cl90IEtpbmRCaXRzTWFzayA9IDB4MzA7CiAgICBzdGF0aWMgY29uc3QgaW50cHRyX3Qg
U2NvcGVLaW5kQml0cyA9IDB4MDA7CiAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgVW53YXRjaGFi
bGVTY29wZUtpbmRCaXRzID0gMHgxMDsKICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBTdGFja0tp
bmRCaXRzID0gMHgyMDsKICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBEaXJlY3RBcmd1bWVudEtp
bmRCaXRzID0gMHgzMDsKICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBGbGFnQml0cyA9IDY7Cgog
ICAgY2xhc3MgRmF0RW50cnkgewogICAgICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qs
IHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7
IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2
b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRv
ciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJl
dHVybiBsb2NhdGlvbjsgfSBwcml2YXRlOiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNl
QVNlbWljb2xvbkFmdGVyVGhpc01hY3JvOwogICAgcHVibGljOgogICAgICAgIEZhdEVudHJ5KGlu
dHB0cl90IGJpdHMpCiAgICAgICAgICAgIDogbV9iaXRzKGJpdHMgJiB+U2xpbUZsYWcpCiAgICAg
ICAgewogICAgICAgIH0KCiAgICAgICAgaW50cHRyX3QgbV9iaXRzOwoKICAgICAgICBSZWZQdHI8
V2F0Y2hwb2ludFNldD4gbV93YXRjaHBvaW50czsKICAgIH07CgogICAgU3ltYm9sVGFibGVFbnRy
eSYgY29weVNsb3coY29uc3QgU3ltYm9sVGFibGVFbnRyeSYpOwogICAgdm9pZCBub3RpZnlXcml0
ZVNsb3coVk0mLCBKU1ZhbHVlLCBjb25zdCBGaXJlRGV0YWlsJik7CgogICAgYm9vbCBpc0ZhdCgp
IGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuICEobV9iaXRzICYgU2xpbUZsYWcpOwogICAgfQoK
ICAgIGNvbnN0IEZhdEVudHJ5KiBmYXRFbnRyeSgpIGNvbnN0CiAgICB7CiAgICAgICAgKCh2b2lk
KTApOwogICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgRmF0RW50cnkqPihtX2JpdHMp
OwogICAgfQoKICAgIEZhdEVudHJ5KiBmYXRFbnRyeSgpCiAgICB7CiAgICAgICAgKCh2b2lkKTAp
OwogICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RmF0RW50cnkqPihtX2JpdHMpOwogICAgfQoK
ICAgIEZhdEVudHJ5KiBpbmZsYXRlKCkKICAgIHsKICAgICAgICBpZiAoX19idWlsdGluX2V4cGVj
dCghIShpc0ZhdCgpKSwgMSkpCiAgICAgICAgICAgIHJldHVybiBmYXRFbnRyeSgpOwogICAgICAg
IHJldHVybiBpbmZsYXRlU2xvdygpOwogICAgfQoKICAgIEZhdEVudHJ5KiBpbmZsYXRlU2xvdygp
OwoKICAgIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludHB0cl90
IGJpdHMoKSBjb25zdAogICAgewogICAgICAgIGlmIChpc0ZhdCgpKQogICAgICAgICAgICByZXR1
cm4gZmF0RW50cnkoKS0+bV9iaXRzOwogICAgICAgIHJldHVybiBtX2JpdHM7CiAgICB9CgogICAg
aW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50cHRyX3QmIGJpdHMo
KQogICAgewogICAgICAgIGlmIChpc0ZhdCgpKQogICAgICAgICAgICByZXR1cm4gZmF0RW50cnko
KS0+bV9iaXRzOwogICAgICAgIHJldHVybiBtX2JpdHM7CiAgICB9CgogICAgdm9pZCBmcmVlRmF0
RW50cnkoKQogICAgewogICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCFpc0ZhdCgpKSwg
MSkpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICBmcmVlRmF0RW50cnlTbG93KCk7CiAgICB9
CgogICAgdm9pZCBmcmVlRmF0RW50cnlTbG93KCk7CgogICAgdm9pZCBwYWNrKFZhck9mZnNldCBv
ZmZzZXQsIGJvb2wgaXNXYXRjaGFibGUsIGJvb2wgcmVhZE9ubHksIGJvb2wgZG9udEVudW0pCiAg
ICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIGludHB0cl90JiBiaXRzUmVmID0gYml0cygp
OwogICAgICAgIGJpdHNSZWYgPQogICAgICAgICAgICAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9m
ZnNldC5yYXdPZmZzZXQoKSkgPDwgRmxhZ0JpdHMpIHwgTm90TnVsbEZsYWcgfCBTbGltRmxhZzsK
ICAgICAgICBpZiAocmVhZE9ubHkpCiAgICAgICAgICAgIGJpdHNSZWYgfD0gUmVhZE9ubHlGbGFn
OwogICAgICAgIGlmIChkb250RW51bSkKICAgICAgICAgICAgYml0c1JlZiB8PSBEb250RW51bUZs
YWc7CiAgICAgICAgc3dpdGNoIChvZmZzZXQua2luZCgpKSB7CiAgICAgICAgY2FzZSBWYXJLaW5k
OjpTY29wZToKICAgICAgICAgICAgaWYgKGlzV2F0Y2hhYmxlKQogICAgICAgICAgICAgICAgYml0
c1JlZiB8PSBTY29wZUtpbmRCaXRzOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBi
aXRzUmVmIHw9IFVud2F0Y2hhYmxlU2NvcGVLaW5kQml0czsKICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgY2FzZSBWYXJLaW5kOjpTdGFjazoKICAgICAgICAgICAgYml0c1JlZiB8PSBTdGFja0tp
bmRCaXRzOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIFZhcktpbmQ6OkRpcmVjdEFy
Z3VtZW50OgogICAgICAgICAgICBiaXRzUmVmIHw9IERpcmVjdEFyZ3VtZW50S2luZEJpdHM7CiAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIFdURkNyYXNoKCk7
CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgICBzdGF0aWMgYm9vbCBpc1Zh
bGlkVmFyT2Zmc2V0KFZhck9mZnNldCBvZmZzZXQpCiAgICB7CiAgICAgICAgcmV0dXJuICgoc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldC5yYXdPZmZzZXQoKSkgPDwgRmxhZ0JpdHMpID4+IEZs
YWdCaXRzKSA9PSBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0LnJhd09mZnNldCgpKTsKICAg
IH0KCiAgICBpbnRwdHJfdCBtX2JpdHM7Cn07CgpzdHJ1Y3QgU3ltYm9sVGFibGVJbmRleEhhc2hU
cmFpdHMgOiBIYXNoVHJhaXRzPFN5bWJvbFRhYmxlRW50cnk+IHsKICAgIHN0YXRpYyBjb25zdCBi
b29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwp9OwoKY2xhc3MgU3ltYm9sVGFibGUgZmluYWwg
OiBwdWJsaWMgSlNDZWxsIHsKcHVibGljOgogICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKCiAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiwgU3ltYm9sVGFibGVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hU
cmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFN5bWJvbFRhYmxlSW5kZXhIYXNoVHJh
aXRzPiBNYXA7CiAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwg
R2xvYmFsVmFyaWFibGVJRCwgSWRlbnRpZmllclJlcEhhc2g+IFVuaXF1ZUlETWFwOwogICAgdHlw
ZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFJlZlB0cjxUeXBlU2V0Piwg
SWRlbnRpZmllclJlcEhhc2g+IFVuaXF1ZVR5cGVTZXRNYXA7CiAgICB0eXBlZGVmIEhhc2hNYXA8
VmFyT2Zmc2V0LCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBPZmZzZXRUb1ZhcmlhYmxlTWFw
OwogICAgdHlwZWRlZiBWZWN0b3I8U3ltYm9sVGFibGVFbnRyeSo+IExvY2FsVG9FbnRyeVZlYzsK
CiAgICBzdGF0aWMgU3ltYm9sVGFibGUqIGNyZWF0ZShWTSYgdm0pCiAgICB7CiAgICAgICAgU3lt
Ym9sVGFibGUqIHN5bWJvbFRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9s
VGFibGU+KHZtLmhlYXApKSBTeW1ib2xUYWJsZSh2bSk7CiAgICAgICAgc3ltYm9sVGFibGUtPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICAgICByZXR1cm4gc3ltYm9sVGFibGU7CiAgICB9CgogICAg
c3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOwoKICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQogICAgewogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CiAgICB9CgoKICAgIE1hcDo6aXRlcmF0b3IgZmluZChjb25zdCBDb25jdXJyZW50SklUTG9ja2Vy
JiwgVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKICAgIHsKICAgICAgICByZXR1cm4gbV9tYXAuZmlu
ZChrZXkpOwogICAgfQoKICAgIE1hcDo6aXRlcmF0b3IgZmluZChjb25zdCBHQ1NhZmVDb25jdXJy
ZW50SklUTG9ja2VyJiwgVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKICAgIHsKICAgICAgICByZXR1
cm4gbV9tYXAuZmluZChrZXkpOwogICAgfQoKICAgIFN5bWJvbFRhYmxlRW50cnkgZ2V0KGNvbnN0
IENvbmN1cnJlbnRKSVRMb2NrZXImLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5KQogICAgewogICAg
ICAgIHJldHVybiBtX21hcC5nZXQoa2V5KTsKICAgIH0KCiAgICBTeW1ib2xUYWJsZUVudHJ5IGdl
dChVbmlxdWVkU3RyaW5nSW1wbCoga2V5KQogICAgewogICAgICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgcmV0dXJuIGdldChsb2NrZXIsIGtleSk7CiAgICB9
CgogICAgU3ltYm9sVGFibGVFbnRyeSBpbmxpbmVHZXQoY29uc3QgQ29uY3VycmVudEpJVExvY2tl
ciYsIFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkpCiAgICB7CiAgICAgICAgcmV0dXJuIG1fbWFwLmlu
bGluZUdldChrZXkpOwogICAgfQoKICAgIFN5bWJvbFRhYmxlRW50cnkgaW5saW5lR2V0KFVuaXF1
ZWRTdHJpbmdJbXBsKiBrZXkpCiAgICB7CiAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKICAgICAgICByZXR1cm4gaW5saW5lR2V0KGxvY2tlciwga2V5KTsKICAgIH0K
CiAgICBNYXA6Oml0ZXJhdG9yIGJlZ2luKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImKQogICAg
ewogICAgICAgIHJldHVybiBtX21hcC5iZWdpbigpOwogICAgfQoKICAgIE1hcDo6aXRlcmF0b3Ig
ZW5kKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImKQogICAgewogICAgICAgIHJldHVybiBtX21h
cC5lbmQoKTsKICAgIH0KCiAgICBNYXA6Oml0ZXJhdG9yIGVuZChjb25zdCBHQ1NhZmVDb25jdXJy
ZW50SklUTG9ja2VyJikKICAgIHsKICAgICAgICByZXR1cm4gbV9tYXAuZW5kKCk7CiAgICB9Cgog
ICAgc2l6ZV90IHNpemUoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYpIGNvbnN0CiAgICB7CiAg
ICAgICAgcmV0dXJuIG1fbWFwLnNpemUoKTsKICAgIH0KCiAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
CiAgICB7CiAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAg
ICByZXR1cm4gc2l6ZShsb2NrZXIpOwogICAgfQoKICAgIFNjb3BlT2Zmc2V0IG1heFNjb3BlT2Zm
c2V0KCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV9tYXhTY29wZU9mZnNldDsKICAgIH0K
CiAgICB2b2lkIGRpZFVzZVNjb3BlT2Zmc2V0KFNjb3BlT2Zmc2V0IG9mZnNldCkKICAgIHsKICAg
ICAgICBpZiAoIW1fbWF4U2NvcGVPZmZzZXQgfHwgbV9tYXhTY29wZU9mZnNldCA8IG9mZnNldCkK
ICAgICAgICAgICAgbV9tYXhTY29wZU9mZnNldCA9IG9mZnNldDsKICAgIH0KCiAgICB2b2lkIGRp
ZFVzZVZhck9mZnNldChWYXJPZmZzZXQgb2Zmc2V0KQogICAgewogICAgICAgIGlmIChvZmZzZXQu
aXNTY29wZSgpKQogICAgICAgICAgICBkaWRVc2VTY29wZU9mZnNldChvZmZzZXQuc2NvcGVPZmZz
ZXQoKSk7CiAgICB9CgogICAgdW5zaWduZWQgc2NvcGVTaXplKCkgY29uc3QKICAgIHsKICAgICAg
ICBTY29wZU9mZnNldCBtYXhTY29wZU9mZnNldCA9IHRoaXMtPm1heFNjb3BlT2Zmc2V0KCk7CgoK
ICAgICAgICB1bnNpZ25lZCBmYXN0UmVzdWx0ID0gbWF4U2NvcGVPZmZzZXQub2Zmc2V0VW5jaGVj
a2VkKCkgKyAxOwoKCiAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICByZXR1cm4gZmFzdFJlc3Vs
dDsKICAgIH0KCiAgICBTY29wZU9mZnNldCBuZXh0U2NvcGVPZmZzZXQoKSBjb25zdAogICAgewog
ICAgICAgIHJldHVybiBTY29wZU9mZnNldChzY29wZVNpemUoKSk7CiAgICB9CgogICAgU2NvcGVP
ZmZzZXQgdGFrZU5leHRTY29wZU9mZnNldChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJikKICAg
IHsKICAgICAgICBTY29wZU9mZnNldCByZXN1bHQgPSBuZXh0U2NvcGVPZmZzZXQoKTsKICAgICAg
ICBtX21heFNjb3BlT2Zmc2V0ID0gcmVzdWx0OwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9
CgogICAgU2NvcGVPZmZzZXQgdGFrZU5leHRTY29wZU9mZnNldCgpCiAgICB7CiAgICAgICAgQ29u
Y3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICByZXR1cm4gdGFrZU5leHRT
Y29wZU9mZnNldChsb2NrZXIpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5Pgog
ICAgdm9pZCBhZGQoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIFVuaXF1ZWRTdHJpbmdJbXBs
KiBrZXksIEVudHJ5JiYgZW50cnkpCiAgICB7CiAgICAgICAgZG8geyBpZiAoX19idWlsdGluX2V4
cGVjdCghISghKCFtX2xvY2FsVG9FbnRyeSkpLCAwKSkgV1RGQ3Jhc2goKTsgfSB3aGlsZSAoMCk7
CiAgICAgICAgZGlkVXNlVmFyT2Zmc2V0KGVudHJ5LnZhck9mZnNldCgpKTsKICAgICAgICBNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBzdGQ6OmZvcndhcmQ8RW50cnk+KGVu
dHJ5KSk7CiAgICAgICAgKCh2b2lkKXJlc3VsdCk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgRW50cnk+CiAgICB2b2lkIGFkZChVbmlxdWVkU3RyaW5nSW1wbCoga2V5LCBFbnRyeSYmIGVu
dHJ5KQogICAgewogICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAg
ICAgICAgYWRkKGxvY2tlciwga2V5LCBzdGQ6OmZvcndhcmQ8RW50cnk+KGVudHJ5KSk7CiAgICB9
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgRW50cnk+CiAgICB2b2lkIHNldChjb25zdCBDb25jdXJy
ZW50SklUTG9ja2VyJiwgVW5pcXVlZFN0cmluZ0ltcGwqIGtleSwgRW50cnkmJiBlbnRyeSkKICAg
IHsKICAgICAgICBkbyB7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCEoIW1fbG9jYWxUb0VudHJ5
KSksIDApKSBXVEZDcmFzaCgpOyB9IHdoaWxlICgwKTsKICAgICAgICBkaWRVc2VWYXJPZmZzZXQo
ZW50cnkudmFyT2Zmc2V0KCkpOwogICAgICAgIG1fbWFwLnNldChrZXksIHN0ZDo6Zm9yd2FyZDxF
bnRyeT4oZW50cnkpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4KICAgIHZv
aWQgc2V0KFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXksIEVudHJ5JiYgZW50cnkpCiAgICB7CiAgICAg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICBzZXQobG9ja2Vy
LCBrZXksIHN0ZDo6Zm9yd2FyZDxFbnRyeT4oZW50cnkpKTsKICAgIH0KCiAgICBib29sIGNvbnRh
aW5zKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5KQog
ICAgewogICAgICAgIHJldHVybiBtX21hcC5jb250YWlucyhrZXkpOwogICAgfQoKICAgIGJvb2wg
Y29udGFpbnMoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKICAgIHsKICAgICAgICBDb25jdXJyZW50
SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgIHJldHVybiBjb250YWlucyhsb2NrZXIs
IGtleSk7CiAgICB9CiMgNjIxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5oIgogICAgdWludDMyX3QgYXJndW1lbnRzTGVuZ3RoKCkgY29uc3QKICAgIHsK
ICAgICAgICBpZiAoIW1fYXJndW1lbnRzKQogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBy
ZXR1cm4gbV9hcmd1bWVudHMtPmxlbmd0aCgpOwogICAgfQoKICAgIHZvaWQgc2V0QXJndW1lbnRz
TGVuZ3RoKFZNJiB2bSwgdWludDMyX3QgbGVuZ3RoKQogICAgewogICAgICAgIGlmIChfX2J1aWx0
aW5fZXhwZWN0KCEhKCFtX2FyZ3VtZW50cyksIDApKQogICAgICAgICAgICBtX2FyZ3VtZW50cy5z
ZXQodm0sIHRoaXMsIFNjb3BlZEFyZ3VtZW50c1RhYmxlOjpjcmVhdGUodm0pKTsKICAgICAgICBt
X2FyZ3VtZW50cy5zZXQodm0sIHRoaXMsIG1fYXJndW1lbnRzLT5zZXRMZW5ndGgodm0sIGxlbmd0
aCkpOwogICAgfQoKICAgIFNjb3BlT2Zmc2V0IGFyZ3VtZW50T2Zmc2V0KHVpbnQzMl90IGkpIGNv
bnN0CiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiBtX2FyZ3VtZW50cy0+
Z2V0KGkpOwogICAgfQoKICAgIHZvaWQgc2V0QXJndW1lbnRPZmZzZXQoVk0mIHZtLCB1aW50MzJf
dCBpLCBTY29wZU9mZnNldCBvZmZzZXQpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAg
IG1fYXJndW1lbnRzLnNldCh2bSwgdGhpcywgbV9hcmd1bWVudHMtPnNldCh2bSwgaSwgb2Zmc2V0
KSk7CiAgICB9CgogICAgU2NvcGVkQXJndW1lbnRzVGFibGUqIGFyZ3VtZW50cygpIGNvbnN0CiAg
ICB7CiAgICAgICAgaWYgKCFtX2FyZ3VtZW50cykKICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgbV9hcmd1bWVudHMtPmxvY2soKTsKICAgICAgICByZXR1cm4gbV9hcmd1bWVudHMu
Z2V0KCk7CiAgICB9CgogICAgY29uc3QgTG9jYWxUb0VudHJ5VmVjJiBsb2NhbFRvRW50cnkoY29u
c3QgQ29uY3VycmVudEpJVExvY2tlciYpOwogICAgU3ltYm9sVGFibGVFbnRyeSogZW50cnlGb3Io
Y29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIFNjb3BlT2Zmc2V0KTsKCiAgICBHbG9iYWxWYXJp
YWJsZUlEIHVuaXF1ZUlERm9yVmFyaWFibGUoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIFVu
aXF1ZWRTdHJpbmdJbXBsKiBrZXksIFZNJik7CiAgICBHbG9iYWxWYXJpYWJsZUlEIHVuaXF1ZUlE
Rm9yT2Zmc2V0KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBWYXJPZmZzZXQsIFZNJik7CiAg
ICBSZWZQdHI8VHlwZVNldD4gZ2xvYmFsVHlwZVNldEZvck9mZnNldChjb25zdCBDb25jdXJyZW50
SklUTG9ja2VyJiwgVmFyT2Zmc2V0LCBWTSYpOwogICAgUmVmUHRyPFR5cGVTZXQ+IGdsb2JhbFR5
cGVTZXRGb3JWYXJpYWJsZShjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIGtleSwgVk0mKTsKCiAgICBib29sIHVzZXNOb25TdHJpY3RFdmFsKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2VzTm9uU3RyaWN0RXZhbDsgfQogICAgdm9pZCBzZXRVc2VzTm9uU3RyaWN0RXZh
bChib29sIHVzZXNOb25TdHJpY3RFdmFsKSB7IG1fdXNlc05vblN0cmljdEV2YWwgPSB1c2VzTm9u
U3RyaWN0RXZhbDsgfQoKICAgIGJvb2wgaXNOZXN0ZWRMZXhpY2FsU2NvcGUoKSBjb25zdCB7IHJl
dHVybiBtX25lc3RlZExleGljYWxTY29wZTsgfQogICAgdm9pZCBtYXJrSXNOZXN0ZWRMZXhpY2Fs
U2NvcGUoKSB7ICgodm9pZCkwKTsgbV9uZXN0ZWRMZXhpY2FsU2NvcGUgPSB0cnVlOyB9CgogICAg
ZW51bSBTY29wZVR5cGUgewogICAgICAgIFZhclNjb3BlLAogICAgICAgIEdsb2JhbExleGljYWxT
Y29wZSwKICAgICAgICBMZXhpY2FsU2NvcGUsCiAgICAgICAgQ2F0Y2hTY29wZSwKICAgICAgICBG
dW5jdGlvbk5hbWVTY29wZQogICAgfTsKICAgIHZvaWQgc2V0U2NvcGVUeXBlKFNjb3BlVHlwZSB0
eXBlKSB7IG1fc2NvcGVUeXBlID0gdHlwZTsgfQogICAgU2NvcGVUeXBlIHNjb3BlVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNjb3BlVHlwZT4obV9zY29wZVR5cGUpOyB9CgogICAg
U3ltYm9sVGFibGUqIGNsb25lU2NvcGVQYXJ0KFZNJik7CgogICAgdm9pZCBwcmVwYXJlRm9yVHlw
ZVByb2ZpbGluZyhjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJik7CgogICAgSW5mZXJyZWRWYWx1
ZSogc2luZ2xldG9uU2NvcGUoKSB7IHJldHVybiBtX3NpbmdsZXRvblNjb3BlLmdldCgpOyB9Cgog
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwoKICAg
IHByb3RlY3RlZDogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6
IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsg
fTsKCnByaXZhdGU6CiAgICBTeW1ib2xUYWJsZShWTSYpOwogICAgflN5bWJvbFRhYmxlKCk7Cgog
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwoKICAgIE1hcCBtX21hcDsKICAgIFNjb3BlT2Zm
c2V0IG1fbWF4U2NvcGVPZmZzZXQ7CgogICAgc3RydWN0IFR5cGVQcm9maWxpbmdSYXJlRGF0YSB7
CiAgICAgICAgVW5pcXVlSURNYXAgbV91bmlxdWVJRE1hcDsKICAgICAgICBPZmZzZXRUb1Zhcmlh
YmxlTWFwIG1fb2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICAgICBVbmlxdWVUeXBlU2V0TWFwIG1f
dW5pcXVlVHlwZVNldE1hcDsKICAgIH07CiAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZVByb2ZpbGlu
Z1JhcmVEYXRhPiBtX3R5cGVQcm9maWxpbmdSYXJlRGF0YTsKCiAgICBib29sIG1fdXNlc05vblN0
cmljdEV2YWwgOiAxOwogICAgYm9vbCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7CiAgICB1bnNp
Z25lZCBtX3Njb3BlVHlwZSA6IDM7CgogICAgV3JpdGVCYXJyaWVyPFNjb3BlZEFyZ3VtZW50c1Rh
YmxlPiBtX2FyZ3VtZW50czsKICAgIFdyaXRlQmFycmllcjxJbmZlcnJlZFZhbHVlPiBtX3Npbmds
ZXRvblNjb3BlOwoKICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbFRvRW50cnlWZWM+IG1fbG9jYWxU
b0VudHJ5OwoKcHVibGljOgogICAgbXV0YWJsZSBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7Cn07
Cgp9CiMgMzUgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFi
bGVPYmplY3QuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9W
YXJpYWJsZVdyaXRlRmlyZURldGFpbC5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9WYXJpYWJsZVdyaXRlRmlyZURldGFpbC5oIgojZGVmaW5lIFZhcmlhYmxl
V3JpdGVGaXJlRGV0YWlsX2ggCgoKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgSlNPYmplY3Q7CmNs
YXNzIFByb3BlcnR5TmFtZTsKCmNsYXNzIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsIDogcHVibGlj
IEZpcmVEZXRhaWwgewpwdWJsaWM6CiAgICBWYXJpYWJsZVdyaXRlRmlyZURldGFpbChKU09iamVj
dCogb2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIG5hbWUpCiAgICAgICAgOiBtX29iamVjdChv
YmplY3QpCiAgICAgICAgLCBtX25hbWUobmFtZSkKICAgIHsKICAgIH0KCiAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKCiAgICBzdGF0aWMgdm9pZCB0b3VjaChXYXRj
aHBvaW50U2V0KiwgSlNPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmKTsKCnByaXZhdGU6CiAg
ICBKU09iamVjdCogbV9vYmplY3Q7CiAgICBjb25zdCBQcm9wZXJ0eU5hbWUmIG1fbmFtZTsKfTsK
Cn0KIyAzNiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5oIiAyCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIEpTU3ltYm9sVGFibGVPYmplY3Q7
CgpjbGFzcyBKU1N5bWJvbFRhYmxlT2JqZWN0IDogcHVibGljIEpTU2NvcGUgewpwdWJsaWM6CiAg
ICB0eXBlZGVmIEpTU2NvcGUgQmFzZTsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSXNFbnZpcm9ubWVudFJlY29yZCB8IE92
ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CgogICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkg
Y29uc3QgeyByZXR1cm4gbV9zeW1ib2xUYWJsZS5nZXQoKTsgfQoKICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICBzdGF0
aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CgogICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZlN5bWJvbFRhYmxlKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRy
ZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SlNTeW1ib2xUYWJsZU9iamVjdCo+KDB4NDAwMCkt
Pm1fc3ltYm9sVGFibGUpKSAtIDB4NDAwMCk7IH0KCnByb3RlY3RlZDoKICAgIEpTU3ltYm9sVGFi
bGVPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogc2NvcGUpCiAg
ICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIHNjb3BlKQogICAgewogICAgfQoKICAgIEpTU3lt
Ym9sVGFibGVPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogc2Nv
cGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSwgc2NvcGUpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHNldFN5bWJvbFRhYmxl
KHZtLCBzeW1ib2xUYWJsZSk7CiAgICB9CgogICAgdm9pZCBzZXRTeW1ib2xUYWJsZShWTSYgdm0s
IFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKICAgIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAg
ICAgc3ltYm9sVGFibGUtPnNpbmdsZXRvblNjb3BlKCktPm5vdGlmeVdyaXRlKHZtLCB0aGlzLCAi
QWxsb2NhdGVkIGEgc2NvcGUiKTsKICAgICAgICBtX3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywg
c3ltYm9sVGFibGUpOwogICAgfQoKICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKCnByaXZhdGU6CiAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+
IG1fc3ltYm9sVGFibGU7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9iamVjdFR5
cGU+CmlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogICAgU3ltYm9sVGFibGVPYmplY3RUeXBl
KiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
ewogICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsK
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7CiAgICBT
eW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIs
IHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9j
a2VyKSkKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVu
dHJ5ID0gaXRlci0+dmFsdWU7CiAgICAoKHZvaWQpMCk7CgogICAgU2NvcGVPZmZzZXQgb2Zmc2V0
ID0gZW50cnkuc2NvcGVPZmZzZXQoKTsKCiAgICBpZiAoIW9iamVjdC0+aXNWYWxpZFNjb3BlT2Zm
c2V0KG9mZnNldCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIHNsb3Quc2V0VmFsdWUob2Jq
ZWN0LCBlbnRyeS5nZXRBdHRyaWJ1dGVzKCkgfCBEb250RGVsZXRlLCBvYmplY3QtPnZhcmlhYmxl
QXQob2Zmc2V0KS5nZXQoKSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUg
U3ltYm9sVGFibGVPYmplY3RUeXBlPgppbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKICAgIFN5
bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCnsKICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xU
YWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICBDb25jdXJyZW50SklUTG9ja2VyIGxv
Y2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwogICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3Ig
aXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAg
aWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOwogICAgKCh2
b2lkKTApOwoKICAgIFNjb3BlT2Zmc2V0IG9mZnNldCA9IGVudHJ5LnNjb3BlT2Zmc2V0KCk7Cgog
ICAgaWYgKCFvYmplY3QtPmlzVmFsaWRTY29wZU9mZnNldChvZmZzZXQpKQogICAgICAgIHJldHVy
biBmYWxzZTsKCiAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Iob2JqZWN0LT52YXJpYWJsZUF0
KG9mZnNldCkuZ2V0KCksIGVudHJ5LmdldEF0dHJpYnV0ZXMoKSB8IERvbnREZWxldGUpOwogICAg
cmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFN5bWJvbFRhYmxlT2JqZWN0VHlwZT4K
aW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90LAogICAg
Ym9vbCYgc2xvdElzV3JpdGVhYmxlKQp7CiAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAq
b2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3lt
Ym9sVGFibGUubV9sb2NrKTsKICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBz
eW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgIGlmIChpdGVy
ID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIFN5
bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKICAgICgodm9pZCkwKTsK
CiAgICBTY29wZU9mZnNldCBvZmZzZXQgPSBlbnRyeS5zY29wZU9mZnNldCgpOwoKICAgIGlmICgh
b2JqZWN0LT5pc1ZhbGlkU2NvcGVPZmZzZXQob2Zmc2V0KSkKICAgICAgICByZXR1cm4gZmFsc2U7
CgogICAgc2xvdC5zZXRWYWx1ZShvYmplY3QsIGVudHJ5LmdldEF0dHJpYnV0ZXMoKSB8IERvbnRE
ZWxldGUsIG9iamVjdC0+dmFyaWFibGVBdChvZmZzZXQpLmdldCgpKTsKICAgIHNsb3RJc1dyaXRl
YWJsZSA9ICFlbnRyeS5pc1JlYWRPbmx5KCk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKdGVtcGxhdGU8
dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSB2b2lkIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KFZN
JiB2bSwgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZywgV2F0
Y2hwb2ludFNldCogc2V0KQp7CiAgICByZWctPnNldCh2bSwgb2JqZWN0LCB2YWx1ZSk7CiAgICBp
ZiAoc2V0KQogICAgICAgIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsOjp0b3VjaChzZXQsIG9iamVj
dCwgcHJvcGVydHlOYW1lKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RU
eXBlPgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHN5bWJv
bFRhYmxlUHV0SW52YWxpZGF0ZVdhdGNocG9pbnRTZXQoVk0mIHZtLCBTeW1ib2xUYWJsZU9iamVj
dFR5cGUqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogcmVnLCBXYXRjaHBvaW50U2V0KiBzZXQpCnsKICAg
IHJlZy0+c2V0KHZtLCBvYmplY3QsIHZhbHVlKTsKICAgIGlmIChzZXQpCiAgICAgICAgc2V0LT5p
bnZhbGlkYXRlKFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsKG9iamVjdCwgcHJvcGVydHlOYW1lKSk7
Cn0KCmVudW0gY2xhc3MgU3ltYm9sVGFibGVQdXRNb2RlIHsKICAgIFRvdWNoLAogICAgSW52YWxp
ZGF0ZQp9OwoKdGVtcGxhdGU8U3ltYm9sVGFibGVQdXRNb2RlIHN5bWJvbFRhYmxlUHV0TW9kZSwg
dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgppbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1
dChTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93UmVhZE9u
bHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVycm9ycywgYm9vbCYgcHV0UmVzdWx0KQp7CiAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwoKICAgIFdhdGNocG9pbnRTZXQqIHNldCA9IG51bGxwdHI7
CiAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiByZWc7CiAgICB7CiAgICAgICAgU3ltYm9s
VGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKCgogICAgICAgIEdD
U2FmZUNvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jaywgdm0uaGVh
cCk7CiAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxl
LmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgICAgIGlmIChpdGVyID09IHN5
bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
Ym9vbCB3YXNGYXQ7CiAgICAgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBmYXN0RW50cnkgPSBp
dGVyLT52YWx1ZS5nZXRGYXN0KHdhc0ZhdCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIGlm
IChmYXN0RW50cnkuaXNSZWFkT25seSgpICYmICFpZ25vcmVSZWFkT25seUVycm9ycykgewogICAg
ICAgICAgICBpZiAoc2hvdWxkVGhyb3dSZWFkT25seUVycm9yKQogICAgICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsK
ICAgICAgICAgICAgcHV0UmVzdWx0ID0gZmFsc2U7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgIH0KCiAgICAgICAgU2NvcGVPZmZzZXQgb2Zmc2V0ID0gZmFzdEVudHJ5LnNjb3BlT2Zm
c2V0KCk7CgoKICAgICAgICBpZiAoIW9iamVjdC0+aXNWYWxpZFNjb3BlT2Zmc2V0KG9mZnNldCkp
CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgICAgc2V0ID0gaXRlci0+dmFsdWUud2F0
Y2hwb2ludFNldCgpOwogICAgICAgIHJlZyA9ICZvYmplY3QtPnZhcmlhYmxlQXQob2Zmc2V0KTsK
ICAgIH0KCgoKICAgIGlmIChzeW1ib2xUYWJsZVB1dE1vZGUgPT0gU3ltYm9sVGFibGVQdXRNb2Rl
OjpJbnZhbGlkYXRlKQogICAgICAgIHN5bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdhdGNocG9pbnRT
ZXQoZXhlYy0+dm0oKSwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCByZWcsIHNldCk7CiAg
ICBlbHNlCiAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQoZXhlYy0+dm0o
KSwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCByZWcsIHNldCk7CiAgICBwdXRSZXN1bHQg
PSB0cnVlOwogICAgcmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFN5bWJvbFRhYmxl
T2JqZWN0VHlwZT4KaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQo
CiAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAogICAgYm9vbCBzaG91bGRUaHJv
d1JlYWRPbmx5RXJyb3IsIGJvb2wgaWdub3JlUmVhZE9ubHlFcnJvcnMsIGJvb2wmIHB1dFJlc3Vs
dCkKewogICAgKCh2b2lkKTApOwogICAgcmV0dXJuIHN5bWJvbFRhYmxlUHV0PFN5bWJvbFRhYmxl
UHV0TW9kZTo6VG91Y2g+KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxk
VGhyb3dSZWFkT25seUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgcHV0UmVzdWx0KTsKfQoK
dGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVPYmplY3RUeXBlPgppbmxpbmUgYm9vbCBzeW1i
b2xUYWJsZVB1dEludmFsaWRhdGVXYXRjaHBvaW50U2V0KAogICAgU3ltYm9sVGFibGVPYmplY3RU
eXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwKICAgIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGln
bm9yZVJlYWRPbmx5RXJyb3JzLCBib29sJiBwdXRSZXN1bHQpCnsKICAgICgodm9pZCkwKTsKICAg
IHJldHVybiBzeW1ib2xUYWJsZVB1dDxTeW1ib2xUYWJsZVB1dE1vZGU6OkludmFsaWRhdGU+KG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3dSZWFkT25seUVycm9y
LCBpZ25vcmVSZWFkT25seUVycm9ycywgcHV0UmVzdWx0KTsKfQoKfQojIDM1ICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmgiIDIK
CgoKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpjbGFzcyBS
ZWdpc3RlcjsKIyA1MyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdC5oIgpjbGFzcyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IDog
cHVibGljIEpTU3ltYm9sVGFibGVPYmplY3QgewogICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CgpwdWJsaWM6CiAgICB0eXBlZGVmIEpT
U3ltYm9sVGFibGVPYmplY3QgQmFzZTsKCiAgICBib29sIGlzVmFsaWRTY29wZU9mZnNldChTY29w
ZU9mZnNldCBvZmZzZXQpCiAgICB7CiAgICAgICAgcmV0dXJuICEhb2Zmc2V0ICYmIG9mZnNldC5v
ZmZzZXQoKSA8IG1fdmFyaWFibGVzLnNpemUoKTsKICAgIH0KCgoKCgogICAgV3JpdGVCYXJyaWVy
PFVua25vd24+JiB2YXJpYWJsZUF0KFNjb3BlT2Zmc2V0IG9mZnNldCkgeyByZXR1cm4gbV92YXJp
YWJsZXNbb2Zmc2V0Lm9mZnNldCgpXTsgfQoKCgoKICAgIFNjb3BlT2Zmc2V0IGZpbmRWYXJpYWJs
ZUluZGV4KHZvaWQqKTsKCiAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIGFzc2VydFZhcmlhYmxl
SXNJblRoaXNPYmplY3QoV3JpdGVCYXJyaWVyPFVua25vd24+KiB2YXJpYWJsZVBvaW50ZXIpCiAg
ICB7CiAgICAgICAgaWYgKCExKQogICAgICAgICAgICBmaW5kVmFyaWFibGVJbmRleCh2YXJpYWJs
ZVBvaW50ZXIpOwogICAgICAgIHJldHVybiB2YXJpYWJsZVBvaW50ZXI7CiAgICB9CgoKCiAgICBT
Y29wZU9mZnNldCBhZGRWYXJpYWJsZXModW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXNUb0FkZCwg
SlNWYWx1ZSk7CgogICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogICAgc3RhdGljIHZvaWQgaGVhcFNuYXBzaG90KEpTQ2VsbCosIEhlYXBTbmFwc2hv
dEJ1aWxkZXImKTsKCnByb3RlY3RlZDoKICAgIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogc2NvcGUpCiAgICAgICAgOiBKU1N5
bWJvbFRhYmxlT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIHNjb3BlKQogICAgewogICAgfQoKICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgewogICAgICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICAgICBzZXRTeW1ib2xUYWJsZSh2bSwgU3ltYm9sVGFibGU6OmNyZWF0ZSh2
bSkpOwogICAgfQoKICAgIFNlZ21lbnRlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4sIDE2
PiBtX3ZhcmlhYmxlczsKICAgIENvbmN1cnJlbnRKSVRMb2NrIG1fbG9jazsKfTsKCn0KIyAzMCAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQuaCIgMgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBKU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKCnB1YmxpYzoKICAgIHR5
cGVkZWYgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCBCYXNlOwoKICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90OwoKICAgIHN0YXRpYyBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVu
dCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHBhcmVudFNj
b3BlKQogICAgewogICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiByZXN1bHQgPQog
ICAgICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dsb2JhbExleGljYWxFbnZp
cm9ubWVudD4odm0uaGVhcCkpIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KHZtLCBzdHJ1Y3R1
cmUsIHBhcmVudFNjb3BlKTsKICAgICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAg
ICAgICByZXN1bHQtPnN5bWJvbFRhYmxlKCktPnNldFNjb3BlVHlwZShTeW1ib2xUYWJsZTo6U2Nv
cGVUeXBlOjpHbG9iYWxMZXhpY2FsU2NvcGUpOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9
CgogICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgIHN0YXRpYyBib29sIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwoKICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzeW1ib2xUYWJsZSgpLT5zaXpl
KCk7IH0KICAgIGJvb2wgaXNDb25zdFZhcmlhYmxlKFVuaXF1ZWRTdHJpbmdJbXBsKik7CgogICAg
cHJvdGVjdGVkOiBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzog
c3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9
OwoKICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICB7CiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpLCBUeXBlSW5mbyhHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICB9Cgpwcm90ZWN0ZWQ6
CiAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU1Njb3BlKiBzY29wZSkKICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgc2NvcGUp
CiAgICB7CiAgICB9Cn07Cgp9CiMgMzEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3h5LmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm94eS5oIgojZGVmaW5lIEpTUHJveHlfaCAKCgoKbmFtZXNwYWNlIEpTQyB7Cgpj
bGFzcyBKU1Byb3h5IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKcHVibGljOgogICAg
dHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwogICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSW50ZXJjZXB0c0dl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybzsKCiAgICBzdGF0
aWMgSlNQcm94eSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0
KiB0YXJnZXQpCiAgICB7CiAgICAgICAgSlNQcm94eSogcHJveHkgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1Byb3h5Pih2bS5oZWFwKSkgSlNQcm94eSh2bSwgc3RydWN0dXJlKTsKICAg
ICAgICBwcm94eS0+ZmluaXNoQ3JlYXRpb24odm0sIHRhcmdldCk7CiAgICAgICAgcmV0dXJuIHBy
b3h5OwogICAgfQoKICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBKU1R5cGUg
cHJveHlUeXBlKQogICAgewogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhwcm94eVR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQ6IHN0YXRp
YyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3QgOjpK
U0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07CgogICAgSlNPYmplY3Qq
IHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CiAgICBzdGF0aWMgcHRy
ZGlmZl90IHRhcmdldE9mZnNldCgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZf
dD4oJihyZWludGVycHJldF9jYXN0PEpTUHJveHkqPigweDQwMDApLT5tX3RhcmdldCkpIC0gMHg0
MDAwKTsgfQoKcHJvdGVjdGVkOgogICAgSlNQcm94eShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qodm0sIHN0cnVjdHVyZSkKICAgIHsK
ICAgIH0KCiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgIHsKICAgICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICB9CgogICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTT2JqZWN0KiB0YXJnZXQpCiAgICB7CiAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgICAgIG1fdGFyZ2V0LnNldCh2bSwgdGhpcywgdGFyZ2V0KTsKICAgIH0KCiAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CgogICAgdm9p
ZCBzZXRUYXJnZXQoVk0mLCBKU0dsb2JhbE9iamVjdCopOwoKICAgIHN0YXRpYyBTdHJpbmcgY2xh
c3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwog
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKICAgIHN0YXRpYyBib29sIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwogICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkKTsKICAg
IHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICBzdGF0aWMgdm9pZCBnZXRQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUpOwogICAgc3RhdGljIHVpbnQzMl90IGdldEVudW1lcmFibGVMZW5ndGgo
RXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKICAgIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVyZVByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSk7CiAgICBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsK
ICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KTsKCnByaXZhdGU6CiAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fdGFyZ2V0Owp9OwoKfQoj
IDMyICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
IiAyCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFw
UmVmSW50ZXJuYWwuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
V2Vha09iamVjdE1hcFJlZkludGVybmFsLmgiCiNkZWZpbmUgSlNXZWFrT2JqZWN0TWFwUmVmSW50
ZXJuYWxfaCAKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dD
TWFwLmgiIDEKIyAzMCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmpl
Y3RNYXBSZWZJbnRlcm5hbC5oIiAyCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBKU09iamVjdDsK
Cn0KCnR5cGVkZWYgdm9pZCAoKkpTV2Vha01hcERlc3Ryb3llZENhbGxiYWNrKShzdHJ1Y3QgT3Bh
cXVlSlNXZWFrT2JqZWN0TWFwKiwgdm9pZCopOwoKdHlwZWRlZiBKU0M6OldlYWtHQ01hcDx2b2lk
KiwgSlNDOjpKU09iamVjdD4gV2Vha01hcFR5cGU7CgpzdHJ1Y3QgT3BhcXVlSlNXZWFrT2JqZWN0
TWFwIDogcHVibGljIFJlZkNvdW50ZWQ8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiB7CnB1YmxpYzoK
ICAgIHN0YXRpYyBSZWY8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiBjcmVhdGUoSlNDOjpWTSYgdm0s
IHZvaWQqIGRhdGEsIEpTV2Vha01hcERlc3Ryb3llZENhbGxiYWNrIGNhbGxiYWNrKQogICAgewog
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9wYXF1ZUpTV2Vha09iamVjdE1hcCh2bSwgZGF0
YSwgY2FsbGJhY2spKTsKICAgIH0KCiAgICBXZWFrTWFwVHlwZSYgbWFwKCkgeyByZXR1cm4gbV9t
YXA7IH0KCiAgICB+T3BhcXVlSlNXZWFrT2JqZWN0TWFwKCkKICAgIHsKICAgICAgICBtX2NhbGxi
YWNrKHRoaXMsIG1fZGF0YSk7CiAgICB9Cgpwcml2YXRlOgogICAgT3BhcXVlSlNXZWFrT2JqZWN0
TWFwKEpTQzo6Vk0mIHZtLCB2b2lkKiBkYXRhLCBKU1dlYWtNYXBEZXN0cm95ZWRDYWxsYmFjayBj
YWxsYmFjaykKICAgICAgICA6IG1fbWFwKHZtKQogICAgICAgICwgbV9kYXRhKGRhdGEpCiAgICAg
ICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgewogICAgfQogICAgV2Vha01hcFR5cGUgbV9t
YXA7CiAgICB2b2lkKiBtX2RhdGE7CiAgICBKU1dlYWtNYXBEZXN0cm95ZWRDYWxsYmFjayBtX2Nh
bGxiYWNrOwp9OwojIDM0ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oIiAyCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyUHJvdG90eXBlLmgiIDEKIyAyMiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgiCiNkZWZpbmUgTnVtYmVyUHJvdG90eXBlX2ggCgojIDEg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oIiAxCiMg
MjIgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oIgoj
ZGVmaW5lIE51bWJlck9iamVjdF9oIAoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1dyYXBwZXJPYmplY3QuaCIgMQojIDIzICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaCIKI2RlZmluZSBKU1dyYXBwZXJPYmplY3Rf
aCAKCgoKbmFtZXNwYWNlIEpTQyB7CgoKCmNsYXNzIEpTV3JhcHBlck9iamVjdCA6IHB1YmxpYyBK
U0Rlc3RydWN0aWJsZU9iamVjdCB7CnB1YmxpYzoKICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVP
YmplY3QgQmFzZTsKCiAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBpbmxp
bmVDYXBhY2l0eSkKICAgIHsKICAgICAgICAoKHZvaWQpaW5saW5lQ2FwYWNpdHkpOwogICAgICAg
IHJldHVybiBzaXplb2YoSlNXcmFwcGVyT2JqZWN0KTsKICAgIH0KCiAgICBKU1ZhbHVlIGludGVy
bmFsVmFsdWUoKSBjb25zdDsKICAgIHZvaWQgc2V0SW50ZXJuYWxWYWx1ZShWTSYsIEpTVmFsdWUp
OwoKICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgewogICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgIH0KCiAgICBzdGF0
aWMgcHRyZGlmZl90IGludGVybmFsVmFsdWVPZmZzZXQoKSB7IHJldHVybiAocmVpbnRlcnByZXRf
Y2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxKU1dyYXBwZXJPYmplY3QqPigweDQw
MDApLT5tX2ludGVybmFsVmFsdWUpKSAtIDB4NDAwMCk7IH0KICAgIHN0YXRpYyBwdHJkaWZmX3Qg
aW50ZXJuYWxWYWx1ZUNlbGxPZmZzZXQoKQogICAgewoKCgogICAgICAgIHJldHVybiBpbnRlcm5h
bFZhbHVlT2Zmc2V0KCkgKyAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnBy
ZXRfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oMHg0MDAwKS0+YXNCaXRzLnBheWxvYWQp
KSAtIDB4NDAwMCk7CgogICAgfQoKcHJvdGVjdGVkOgogICAgZXhwbGljaXQgSlNXcmFwcGVyT2Jq
ZWN0KFZNJiwgU3RydWN0dXJlKik7CgogICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwoKcHJpdmF0ZToKICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBt
X2ludGVybmFsVmFsdWU7Cn07CgppbmxpbmUgSlNXcmFwcGVyT2JqZWN0OjpKU1dyYXBwZXJPYmpl
Y3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgIDogSlNEZXN0cnVjdGlibGVPYmpl
Y3Qodm0sIHN0cnVjdHVyZSkKewp9CgppbmxpbmUgSlNWYWx1ZSBKU1dyYXBwZXJPYmplY3Q6Omlu
dGVybmFsVmFsdWUoKSBjb25zdAp7CiAgICByZXR1cm4gbV9pbnRlcm5hbFZhbHVlLmdldCgpOwp9
CgppbmxpbmUgdm9pZCBKU1dyYXBwZXJPYmplY3Q6OnNldEludGVybmFsVmFsdWUoVk0mIHZtLCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICAoKHZvaWQpMCk7CiAgICAoKHZvaWQpMCk7CiAgICBtX2ludGVy
bmFsVmFsdWUuc2V0KHZtLCB0aGlzLCB2YWx1ZSk7Cn0KCn0KIyAyNSAiLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgiIDIKCm5hbWVzcGFjZSBKU0MgewoK
Y2xhc3MgTnVtYmVyT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CnByb3RlY3RlZDoK
ICAgIE51bWJlck9iamVjdChWTSYsIFN0cnVjdHVyZSopOwogICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYpOwoKcHVibGljOgogICAgdHlwZWRlZiBKU1dyYXBwZXJPYmplY3QgQmFzZTsKCiAgICBz
dGF0aWMgTnVtYmVyT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgIHsKICAgICAgICBOdW1iZXJPYmplY3QqIG51bWJlciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPE51bWJlck9iamVjdD4odm0uaGVhcCkpIE51bWJlck9iamVjdCh2bSwgc3RydWN0dXJl
KTsKICAgICAgICBudW1iZXItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICByZXR1cm4gbnVt
YmVyOwogICAgfQoKICAgIHByb3RlY3RlZDogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8g
c19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyBy
ZXR1cm4gJnNfaW5mbzsgfTsKCiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgIHsKICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhOdW1iZXJPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CiAgICB9Cn07CgogTnVtYmVyT2JqZWN0KiBjb25zdHJ1Y3ROdW1iZXIoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKCn0KIyAyNSAiLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgiIDIKCm5hbWVzcGFjZSBKU0MgewoK
Y2xhc3MgTnVtYmVyUHJvdG90eXBlIDogcHVibGljIE51bWJlck9iamVjdCB7CnB1YmxpYzoKICAg
IHR5cGVkZWYgTnVtYmVyT2JqZWN0IEJhc2U7CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdDsKCiAgICBzdGF0aWMgTnVtYmVyUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgIHsKICAg
ICAgICBOdW1iZXJQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPE51bWJlclByb3RvdHlwZT4odm0uaGVhcCkpIE51bWJlclByb3RvdHlwZSh2bSwgc3RydWN0
dXJlKTsKICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3Qp
OwogICAgICAgIHJldHVybiBwcm90b3R5cGU7CiAgICB9CgogICAgcHJvdGVjdGVkOiBzdGF0aWMg
Y29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0IDo6SlND
OjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9OwoKICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgewogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE51bWJlck9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgIH0KCnByb3RlY3RlZDoKICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwoKcHJpdmF0ZToKICAgIE51bWJl
clByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwogICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKfTsKCkVuY29kZWRKU1ZhbHVlIG51bWJlclByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKik7
Cgp9CiMgMzUgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgiIDIKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SdW50aW1l
RmxhZ3MuaCIgMQojIDI3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SdW50
aW1lRmxhZ3MuaCIKI2RlZmluZSBSdW50aW1lRmxhZ3NfaCAKCgoKbmFtZXNwYWNlIEpTQyB7CgoK
I2RlZmluZSBKU0NfUlVOVElNRV9GTEFHKG1hY3JvKSAKCmNsYXNzIFJ1bnRpbWVGbGFncyB7CnBy
aXZhdGU6CiAgICBlbnVtIFJ1bnRpbWVGbGFnU2hpZnRWYWx1ZSA6IHVuc2lnbmVkIHsKI2RlZmlu
ZSBKU0NfREVDTEFSRV9SVU5USU1FX0ZMQUdfU0hJRlRfVkFMVUUobmFtZSxpc0VuYWJsZWRGbGFn
KSBzaGlmdFZhbHVlRm9yICMjbmFtZSwKICAgICAgIAojdW5kZWYgSlNDX0RFQ0xBUkVfUlVOVElN
RV9GTEFHX1NISUZUX1ZBTFVFCiAgICB9OwoKcHVibGljOgogICAgZW51bSBSdW50aW1lRmxhZyA6
IHVuc2lnbmVkIHsKI2RlZmluZSBKU0NfREVDTEFSRV9SVU5USU1FX0ZMQUcobmFtZSxpc0VuYWJs
ZWRGbGFnKSBuYW1lID0gMXUgPDwgKHNoaWZ0VmFsdWVGb3IgIyNuYW1lKSwKICAgICAgIAojdW5k
ZWYgSlNDX0RFQ0xBUkVfUlVOVElNRV9GTEFHCiAgICB9OwoKI2RlZmluZSBKU0NfREVDTEFSRV9S
VU5USU1FX0ZMQUdfQUNDRVNTT1IobmFtZSxpc0VuYWJsZWRGbGFnKSB2b2lkIHNldCAjI25hbWUo
Ym9vbCB2YWx1ZSkgeyBpZiAodmFsdWUpIG1fZmxhZ3MgfD0gbmFtZTsgZWxzZSBtX2ZsYWdzICY9
ICh+bmFtZSk7IH0gYm9vbCBpcyAjI25hbWUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgbmFt
ZTsgfQojIDYzICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SdW50aW1lRmxh
Z3MuaCIKICAgCiN1bmRlZiBKU0NfREVDTEFSRV9SVU5USU1FX0ZMQUdfQUNDRVNTT1IKCiAgICBS
dW50aW1lRmxhZ3MoKQogICAgICAgIDogUnVudGltZUZsYWdzKDB1KQogICAgewogICAgfQoKICAg
IFJ1bnRpbWVGbGFncyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UnVudGltZUZsYWc+IGluaXRpYWxp
emVyTGlzdCkKICAgICAgICA6IFJ1bnRpbWVGbGFncygpCiAgICB7CiAgICAgICAgZm9yIChSdW50
aW1lRmxhZyBmbGFnIDogaW5pdGlhbGl6ZXJMaXN0KQogICAgICAgICAgICBtX2ZsYWdzIHw9IGZs
YWc7CiAgICB9CgogICAgZXhwbGljaXQgUnVudGltZUZsYWdzKHVuc2lnbmVkIGZsYWdzKQogICAg
ICAgIDogbV9mbGFncyhmbGFncykKICAgIHsKICAgIH0KCiAgICBzdGF0aWMgUnVudGltZUZsYWdz
IGNyZWF0ZUFsbEVuYWJsZWQoKQogICAgewogICAgICAgIHJldHVybiBSdW50aW1lRmxhZ3MoCiNk
ZWZpbmUgSlNDX1VTRV9SVU5USU1FX0ZMQUcobmFtZSxpc0VuYWJsZWRGbGFnKSAoKGlzRW5hYmxl
ZEZsYWcpID8gbmFtZSA6IDB1KSB8CiAgICAgICAgICAgCiN1bmRlZiBKU0NfVVNFX1JVTlRJTUVf
RkxBRwogICAgICAgICAgICAwdQogICAgICAgICk7CiAgICB9Cgpwcml2YXRlOgogICAgdW5zaWdu
ZWQgbV9mbGFnczsKfTsKCn0KIyAzNiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TcGVjaWFsUG9pbnRlci5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oIgojZGVmaW5lIFNwZWNpYWxQb2ludGVyX2gg
CgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIENvZGVCbG9jazsKY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CgpuYW1lc3BhY2UgU3BlY2lhbCB7CmVudW0gUG9pbnRlciB7CiAgICBDYWxsRnVuY3Rpb24sCiAg
ICBBcHBseUZ1bmN0aW9uLAogICAgT2JqZWN0Q29uc3RydWN0b3IsCiAgICBBcnJheUNvbnN0cnVj
dG9yLAogICAgVGFibGVTaXplCn07Cn0KCmVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCB7CiAg
ICBEZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLAp9Owpjb25zdCB1bnNpZ25lZCBMaW5rVGltZUNvbnN0
YW50Q291bnQgPSAxOwoKaW5saW5lIGJvb2wgcG9pbnRlcklzRnVuY3Rpb24oU3BlY2lhbDo6UG9p
bnRlciBwb2ludGVyKQp7CiAgICAoKHZvaWQpcG9pbnRlcik7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
aW5saW5lIGJvb2wgcG9pbnRlcklzQ2VsbChTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCnsKICAg
ICgodm9pZClwb2ludGVyKTsKICAgIHJldHVybiB0cnVlOwp9Cgp2b2lkKiBhY3R1YWxQb2ludGVy
Rm9yKEpTR2xvYmFsT2JqZWN0KiwgU3BlY2lhbDo6UG9pbnRlcik7CnZvaWQqIGFjdHVhbFBvaW50
ZXJGb3IoQ29kZUJsb2NrKiwgU3BlY2lhbDo6UG9pbnRlcik7Cgp9CiMgMzcgIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgiIDIKIyAxICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaCIgMQojIDIyICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaCIKI2Rl
ZmluZSBTdHJpbmdQcm90b3R5cGVfaCAKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgiCiNkZWZpbmUgSklUT3BlcmF0aW9uc19oIAoKCgoKIyAxICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU9mZnNldC5oIiAxCiMg
MzMgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIiAyCiMg
MSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2xvd1BhdGhSZXR1cm5UeXBl
LmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2xvd1BhdGhS
ZXR1cm5UeXBlLmgiCiNkZWZpbmUgU2xvd1BhdGhSZXR1cm5UeXBlX2ggCgoKCm5hbWVzcGFjZSBK
U0MgewojIDU3ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbG93UGF0aFJl
dHVyblR5cGUuaCIKdHlwZWRlZiBpbnQ2NF90IFNsb3dQYXRoUmV0dXJuVHlwZTsKCnR5cGVkZWYg
dW5pb24gewogICAgc3RydWN0IHsKICAgICAgICB2b2lkKiBhOwogICAgICAgIHZvaWQqIGI7CiAg
ICB9IHBhaXI7CiAgICBpbnQ2NF90IGk7Cn0gU2xvd1BhdGhSZXR1cm5UeXBlRW5jb2Rpbmc7Cgpp
bmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGVuY29kZVJlc3VsdCh2b2lkKiBhLCB2b2lkKiBiKQp7
CiAgICBTbG93UGF0aFJldHVyblR5cGVFbmNvZGluZyB1OwogICAgdS5wYWlyLmEgPSBhOwogICAg
dS5wYWlyLmIgPSBiOwogICAgcmV0dXJuIHUuaTsKfQoKaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0
KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCB2b2lkKiYgYikKewogICAgU2xv
d1BhdGhSZXR1cm5UeXBlRW5jb2RpbmcgdTsKICAgIHUuaSA9IHJlc3VsdDsKICAgIGEgPSB1LnBh
aXIuYTsKICAgIGIgPSB1LnBhaXIuYjsKfQoKCn0KIyAzNCAiLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgiIDIKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBB
cnJheUFsbG9jYXRpb25Qcm9maWxlOwpjbGFzcyBBcnJheVByb2ZpbGU7CmNsYXNzIENhbGxMaW5r
SW5mbzsKY2xhc3MgQ29kZUJsb2NrOwpjbGFzcyBFeGVjU3RhdGU7CmNsYXNzIEpTQXJyYXk7CmNs
YXNzIEpTRnVuY3Rpb247CmNsYXNzIEpTTGV4aWNhbEVudmlyb25tZW50OwpjbGFzcyBKU1Njb3Bl
OwpjbGFzcyBSZWdFeHBPYmplY3Q7CmNsYXNzIFJlZ2lzdGVyOwpjbGFzcyBTdHJ1Y3R1cmVTdHVi
SW5mbzsKY2xhc3MgU3ltYm9sVGFibGU7CmNsYXNzIFdhdGNocG9pbnRTZXQ7CgpzdHJ1Y3QgQnlW
YWxJbmZvOwpzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lOwoKdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZy
YW1lOwoKCgoKI2RlZmluZSBKSVRfT1BFUkFUSU9OIAoKCmV4dGVybiAiQyIgewoKdHlwZWRlZiBj
aGFyKiBVbnVzZWRQdHI7CiMgMTEyICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaCIKdHlwZWRlZiBDYWxsRnJhbWUqICgqRl9KSVRPcGVyYXRpb25fRUZKWlop
KEV4ZWNTdGF0ZSosIENhbGxGcmFtZSosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBpbnQzMl90
KTsKdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoKkpfSklUT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSop
Owp0eXBlZGVmIEVuY29kZWRKU1ZhbHVlICgqSl9KSVRPcGVyYXRpb25fRUEpKEV4ZWNTdGF0ZSos
IEpTQXJyYXkqKTsKdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoKkpfSklUT3BlcmF0aW9uX0VBWiko
RXhlY1N0YXRlKiwgSlNBcnJheSosIGludDMyX3QpOwp0eXBlZGVmIEVuY29kZWRKU1ZhbHVlICgq
Sl9KSVRPcGVyYXRpb25fRUFhcEopKEV4ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUq
LCBFbmNvZGVkSlNWYWx1ZSk7CnR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKCpKX0pJVE9wZXJhdGlv
bl9FQWFwSmNwWikoRXhlY1N0YXRlKiwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIGNvbnN0IEpT
VmFsdWUqLCBpbnQzMl90KTsKdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoKkpfSklUT3BlcmF0aW9u
X0VDKShFeGVjU3RhdGUqLCBKU0NlbGwqKTsKdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoKkpfSklU
T3BlcmF0aW9uX0VDQykoRXhlY1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKik7CnR5cGVkZWYgRW5j
b2RlZEpTVmFsdWUgKCpKX0pJVE9wZXJhdGlvbl9FQ0kpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIFVu
aXF1ZWRTdHJpbmdJbXBsKik7CnR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKCpKX0pJVE9wZXJhdGlv
bl9FQ0opKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKTsKdHlwZWRlZiBFbmNv
ZGVkSlNWYWx1ZSAoKkpfSklUT3BlcmF0aW9uX0VDWikoRXhlY1N0YXRlKiwgSlNDZWxsKiwgaW50
MzJfdCk7CnR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKCpKX0pJVE9wZXJhdGlvbl9FREEpKEV4ZWNT
dGF0ZSosIGRvdWJsZSwgSlNBcnJheSopOwp0eXBlZGVmIEVuY29kZWRKU1ZhbHVlICgqSl9KSVRP
cGVyYXRpb25fRUUpKEV4ZWNTdGF0ZSosIEV4ZWNTdGF0ZSopOwp0eXBlZGVmIEVuY29kZWRKU1Zh
bHVlICgqSl9KSVRPcGVyYXRpb25fRUdSZW9KKShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IFJlZ0V4cE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKTsKdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAo
KkpfSklUT3BlcmF0aW9uX0VHUmVvSnNzKShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFJl
Z0V4cE9iamVjdCosIEpTU3RyaW5nKik7CnR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKCpKX0pJVE9w
ZXJhdGlvbl9FR0pKKShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSk7CnR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKCpKX0pJVE9wZXJhdGlv
bl9FSSkoRXhlY1N0YXRlKiwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKdHlwZWRlZiBFbmNvZGVkSlNW
YWx1ZSAoKkpfSklUT3BlcmF0aW9uX0VKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSk7CnR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgKCpKX0pJVE9wZXJhdGlvbl9FSlopKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlLCBpbnQzMl90KTsKdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoKkpfSklUT3Bl
cmF0aW9uX0VKQykoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQ2VsbCopOwp0eXBlZGVm
IEVuY29kZWRKU1ZhbHVlICgqSl9KSVRPcGVyYXRpb25fRUpBKShFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSwgSlNBcnJheSopOwp0eXBlZGVmIEVuY29kZWRKU1ZhbHVlICgqSl9KSVRPcGVyYXRp
b25fRUpJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKTsK
dHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoKkpfSklUT3BlcmF0aW9uX0VKSikoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAo
KkpfSklUT3BlcmF0aW9uX0VKSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwp0eXBlZGVmIEVuY29kZWRKU1ZhbHVlICgqSl9KSVRP
cGVyYXRpb25fRUpKQXApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgQXJyYXlQcm9maWxlKik7CnR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKCpKX0pJVE9wZXJhdGlv
bl9FSkpCeSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZh
bEluZm8qKTsKdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoKkpfSklUT3BlcmF0aW9uX0VKSkopKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUp
Owp0eXBlZGVmIEVuY29kZWRKU1ZhbHVlICgqSl9KSVRPcGVyYXRpb25fRUpzc1opKEV4ZWNTdGF0
ZSosIEpTU3RyaW5nKiwgaW50MzJfdCk7CnR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKCpKX0pJVE9w
ZXJhdGlvbl9FSnNzUmVvKShFeGVjU3RhdGUqLCBKU1N0cmluZyosIFJlZ0V4cE9iamVjdCopOwp0
eXBlZGVmIEVuY29kZWRKU1ZhbHVlICgqSl9KSVRPcGVyYXRpb25fRUpzc1Jlb0pzcykoRXhlY1N0
YXRlKiwgSlNTdHJpbmcqLCBSZWdFeHBPYmplY3QqLCBKU1N0cmluZyopOwp0eXBlZGVmIEVuY29k
ZWRKU1ZhbHVlICgqSl9KSVRPcGVyYXRpb25fRUpQKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSwgdm9pZCopOwp0eXBlZGVmIEVuY29kZWRKU1ZhbHVlICgqSl9KSVRPcGVyYXRpb25fRVApKEV4
ZWNTdGF0ZSosIHZvaWQqKTsKdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoKkpfSklUT3BlcmF0aW9u
X0VQUCkoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqKTsKdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAo
KkpfSklUT3BlcmF0aW9uX0VQUykoRXhlY1N0YXRlKiwgdm9pZCosIHNpemVfdCk7CnR5cGVkZWYg
RW5jb2RlZEpTVmFsdWUgKCpKX0pJVE9wZXJhdGlvbl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0
aW9uKik7CnR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKCpKX0pJVE9wZXJhdGlvbl9FSnNjQykoRXhl
Y1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopOwp0eXBlZGVmIEVuY29kZWRKU1ZhbHVlICgqSl9K
SVRPcGVyYXRpb25fRUpzY0NKKShFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKiwgRW5jb2Rl
ZEpTVmFsdWUpOwp0eXBlZGVmIEVuY29kZWRKU1ZhbHVlICgqSl9KSVRPcGVyYXRpb25fRVJlb0op
KEV4ZWNTdGF0ZSosIFJlZ0V4cE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKTsKdHlwZWRlZiBFbmNv
ZGVkSlNWYWx1ZSAoKkpfSklUT3BlcmF0aW9uX0VSZW9Kc3MpKEV4ZWNTdGF0ZSosIFJlZ0V4cE9i
amVjdCosIEpTU3RyaW5nKik7CnR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKCpKX0pJVE9wZXJhdGlv
bl9FU1MpKEV4ZWNTdGF0ZSosIHNpemVfdCwgc2l6ZV90KTsKdHlwZWRlZiBFbmNvZGVkSlNWYWx1
ZSAoKkpfSklUT3BlcmF0aW9uX0VTc2lDSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8q
LCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopOwp0eXBlZGVmIEVuY29kZWRKU1ZhbHVlICgq
Sl9KSVRPcGVyYXRpb25fRVNzaUpJKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwp0eXBlZGVmIEVuY29kZWRKU1ZhbHVl
ICgqSl9KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwp0eXBlZGVmIEVuY29k
ZWRKU1ZhbHVlICgqSl9KSVRPcGVyYXRpb25fRVpJY2ZaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBJ
bmxpbmVDYWxsRnJhbWUqLCBpbnQzMl90KTsKdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoKkpfSklU
T3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CnR5cGVkZWYgRW5j
b2RlZEpTVmFsdWUgKCpKX0pJVE9wZXJhdGlvbl9FWlN5bXRhYkopKEV4ZWNTdGF0ZSosIGludDMy
X3QsIFN5bWJvbFRhYmxlKiwgRW5jb2RlZEpTVmFsdWUpOwp0eXBlZGVmIEVuY29kZWRKU1ZhbHVl
ICgqSl9KSVRPcGVyYXRpb25fRU9JVWkpKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgVW5pcXVlZFN0
cmluZ0ltcGwqLCB1aW50MzJfdCk7CnR5cGVkZWYgSlNDZWxsKiAoKkNfSklUT3BlcmF0aW9uX0Up
KEV4ZWNTdGF0ZSopOwp0eXBlZGVmIEpTQ2VsbCogKCpDX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0
YXRlKiwgaW50MzJfdCk7CnR5cGVkZWYgSlNDZWxsKiAoKkNfSklUT3BlcmF0aW9uX0VDKShFeGVj
U3RhdGUqLCBKU0NlbGwqKTsKdHlwZWRlZiBKU0NlbGwqICgqQ19KSVRPcGVyYXRpb25fRUNaKShF
eGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl90KTsKdHlwZWRlZiBKU0NlbGwqICgqQ19KSVRPcGVy
YXRpb25fRUNaQykoRXhlY1N0YXRlKiwgSlNDZWxsKiwgaW50MzJfdCwgSlNDZWxsKik7CnR5cGVk
ZWYgSlNDZWxsKiAoKkNfSklUT3BlcmF0aW9uX0VDQykoRXhlY1N0YXRlKiwgSlNDZWxsKiwgSlND
ZWxsKik7CnR5cGVkZWYgSlNDZWxsKiAoKkNfSklUT3BlcmF0aW9uX0VHQykoRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqKTsKdHlwZWRlZiBKU0NlbGwqICgqQ19KSVRPcGVyYXRp
b25fRUljZikoRXhlY1N0YXRlKiwgSW5saW5lQ2FsbEZyYW1lKik7CnR5cGVkZWYgSlNDZWxsKiAo
KkNfSklUT3BlcmF0aW9uX0VKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSk7CnR5cGVkZWYg
SlNDZWxsKiAoKkNfSklUT3BlcmF0aW9uX0VKc2MpKEV4ZWNTdGF0ZSosIEpTU2NvcGUqKTsKdHlw
ZWRlZiBKU0NlbGwqICgqQ19KSVRPcGVyYXRpb25fRUpzY0MpKEV4ZWNTdGF0ZSosIEpTU2NvcGUq
LCBKU0NlbGwqKTsKdHlwZWRlZiBKU0NlbGwqICgqQ19KSVRPcGVyYXRpb25fRUpaKShFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7CnR5cGVkZWYgSlNDZWxsKiAoKkNfSklUT3Bl
cmF0aW9uX0VKWkMpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBKU0NlbGwq
KTsKdHlwZWRlZiBKU0NlbGwqICgqQ19KSVRPcGVyYXRpb25fRUpKKShFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwp0eXBlZGVmIEpTQ2VsbCogKCpDX0pJVE9wZXJh
dGlvbl9FSkpDKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEpT
Q2VsbCopOwp0eXBlZGVmIEpTQ2VsbCogKCpDX0pJVE9wZXJhdGlvbl9FSkpKKShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKdHlwZWRl
ZiBKU0NlbGwqICgqQ19KSVRPcGVyYXRpb25fRUpzY1opKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBp
bnQzMl90KTsKdHlwZWRlZiBKU0NlbGwqICgqQ19KSVRPcGVyYXRpb25fRUpzc1N0KShFeGVjU3Rh
dGUqLCBKU1N0cmluZyosIFN0cnVjdHVyZSopOwp0eXBlZGVmIEpTQ2VsbCogKCpDX0pJVE9wZXJh
dGlvbl9FSnNzSnNzKShFeGVjU3RhdGUqLCBKU1N0cmluZyosIEpTU3RyaW5nKik7CnR5cGVkZWYg
dWludHB0cl90ICgqQ19KSVRPcGVyYXRpb25fQl9FSnNzSnNzKShFeGVjU3RhdGUqLCBKU1N0cmlu
ZyosIEpTU3RyaW5nKik7CnR5cGVkZWYgdWludHB0cl90ICgqQ19KSVRPcGVyYXRpb25fVFQpKFN0
cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CnR5cGVkZWYgSlNDZWxsKiAoKkNfSklUT3BlcmF0aW9u
X0VKc3NKc3NKc3MpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgSlNTdHJpbmcqLCBKU1N0cmluZyop
Owp0eXBlZGVmIEpTQ2VsbCogKCpDX0pJVE9wZXJhdGlvbl9FTCkoRXhlY1N0YXRlKiwgSlNMZXhp
Y2FsRW52aXJvbm1lbnQqKTsKdHlwZWRlZiBKU0NlbGwqICgqQ19KSVRPcGVyYXRpb25fRU8pKEV4
ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CnR5cGVkZWYgSlNDZWxsKiAoKkNfSklUT3BlcmF0aW9uX0VP
WikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBpbnQzMl90KTsKdHlwZWRlZiBKU0NlbGwqICgqQ19K
SVRPcGVyYXRpb25fRVN0KShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKdHlwZWRlZiBKU0NlbGwq
ICgqQ19KSVRPcGVyYXRpb25fRVN0SnNjU3ltdGFiSikoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwg
SlNTY29wZSosIFN5bWJvbFRhYmxlKiwgRW5jb2RlZEpTVmFsdWUpOwp0eXBlZGVmIEpTQ2VsbCog
KCpDX0pJVE9wZXJhdGlvbl9FU3RSWkpzZkwpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIFJlZ2lz
dGVyKiwgaW50MzJfdCwgSlNGdW5jdGlvbiosIEpTTGV4aWNhbEVudmlyb25tZW50Kik7CnR5cGVk
ZWYgSlNDZWxsKiAoKkNfSklUT3BlcmF0aW9uX0VTdFJaSnNmKShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqLCBSZWdpc3RlciosIGludDMyX3QsIEpTRnVuY3Rpb24qKTsKdHlwZWRlZiBKU0NlbGwqICgq
Q19KSVRPcGVyYXRpb25fRVN0WikoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgaW50MzJfdCk7CnR5
cGVkZWYgSlNDZWxsKiAoKkNfSklUT3BlcmF0aW9uX0VTdFpaKShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqLCBpbnQzMl90LCBpbnQzMl90KTsKdHlwZWRlZiBKU0NlbGwqICgqQ19KSVRPcGVyYXRpb25f
RVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwp0eXBlZGVmIEpTQ2VsbCogKCpDX0pJVE9wZXJhdGlv
bl9FSnNjSSkoRXhlY1N0YXRlKiwgSlNTY29wZSosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CnR5cGVk
ZWYgZG91YmxlICgqRF9KSVRPcGVyYXRpb25fRCkoZG91YmxlKTsKdHlwZWRlZiBkb3VibGUgKCpE
X0pJVE9wZXJhdGlvbl9HKShKU0dsb2JhbE9iamVjdCopOwp0eXBlZGVmIGRvdWJsZSAoKkRfSklU
T3BlcmF0aW9uX0REKShkb3VibGUsIGRvdWJsZSk7CnR5cGVkZWYgZG91YmxlICgqRF9KSVRPcGVy
YXRpb25fWlopKGludDMyX3QsIGludDMyX3QpOwp0eXBlZGVmIGRvdWJsZSAoKkRfSklUT3BlcmF0
aW9uX0VKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSk7CnR5cGVkZWYgaW50NjRfdCAoKlFf
SklUT3BlcmF0aW9uX0opKEVuY29kZWRKU1ZhbHVlKTsKdHlwZWRlZiBpbnQ2NF90ICgqUV9KSVRP
cGVyYXRpb25fRCkoZG91YmxlKTsKdHlwZWRlZiBpbnQzMl90ICgqWl9KSVRPcGVyYXRpb25fRCko
ZG91YmxlKTsKdHlwZWRlZiBpbnQzMl90ICgqWl9KSVRPcGVyYXRpb25fRSkoRXhlY1N0YXRlKik7
CnR5cGVkZWYgaW50MzJfdCAoKlpfSklUT3BlcmF0aW9uX0VDKShFeGVjU3RhdGUqLCBKU0NlbGwq
KTsKdHlwZWRlZiBpbnQzMl90ICgqWl9KSVRPcGVyYXRpb25fRUdDKShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCopOwp0eXBlZGVmIGludDMyX3QgKCpaX0pJVE9wZXJhdGlvbl9F
U0pzcykoRXhlY1N0YXRlKiwgc2l6ZV90LCBKU1N0cmluZyopOwp0eXBlZGVmIGludDMyX3QgKCpa
X0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpOwp0eXBlZGVmIGlu
dDMyX3QgKCpaX0pJVE9wZXJhdGlvbl9FSk9KKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
SlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSk7CnR5cGVkZWYgaW50MzJfdCAoKlpfSklUT3BlcmF0
aW9uX0VKWikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwp0eXBlZGVmIGlu
dDMyX3QgKCpaX0pJVE9wZXJhdGlvbl9FSlpaKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
aW50MzJfdCwgaW50MzJfdCk7CnR5cGVkZWYgc2l6ZV90ICgqU19KSVRPcGVyYXRpb25fRUNDKShF
eGVjU3RhdGUqLCBKU0NlbGwqLCBKU0NlbGwqKTsKdHlwZWRlZiBzaXplX3QgKCpTX0pJVE9wZXJh
dGlvbl9FR0MpKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKik7CnR5cGVkZWYg
c2l6ZV90ICgqU19KSVRPcGVyYXRpb25fRUdKSikoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwp0eXBlZGVmIHNpemVfdCAoKlNfSklU
T3BlcmF0aW9uX0VHUmVvSikoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSk7CnR5cGVkZWYgc2l6ZV90ICgqU19KSVRPcGVyYXRpb25fRUdS
ZW9Kc3MpKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgSlNTdHJp
bmcqKTsKdHlwZWRlZiBzaXplX3QgKCpTX0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUpOwp0eXBlZGVmIHNpemVfdCAoKlNfSklUT3BlcmF0aW9uX0VKSSkoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CnR5cGVkZWYgc2l6ZV90
ICgqU19KSVRPcGVyYXRpb25fRUpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUpOwp0eXBlZGVmIHNpemVfdCAoKlNfSklUT3BlcmF0aW9uX0VPSnNzKShFeGVjU3Rh
dGUqLCBKU09iamVjdCosIEpTU3RyaW5nKik7CnR5cGVkZWYgc2l6ZV90ICgqU19KSVRPcGVyYXRp
b25fRVJlb0opKEV4ZWNTdGF0ZSosIFJlZ0V4cE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKTsKdHlw
ZWRlZiBzaXplX3QgKCpTX0pJVE9wZXJhdGlvbl9FUmVvSnNzKShFeGVjU3RhdGUqLCBSZWdFeHBP
YmplY3QqLCBKU1N0cmluZyopOwp0eXBlZGVmIHNpemVfdCAoKlNfSklUT3BlcmF0aW9uX0opKEVu
Y29kZWRKU1ZhbHVlKTsKdHlwZWRlZiBTbG93UGF0aFJldHVyblR5cGUgKCpTcHJ0X0pJVE9wZXJh
dGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CnR5cGVkZWYgdm9pZCAoKlZfSklUT3BlcmF0
aW9uKSgpOwp0eXBlZGVmIHZvaWQgKCpWX0pJVE9wZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsKdHlw
ZWRlZiB2b2lkICgqVl9KSVRPcGVyYXRpb25fRUMpKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOwp0eXBl
ZGVmIHZvaWQgKCpWX0pJVE9wZXJhdGlvbl9FQ2IpKEV4ZWNTdGF0ZSosIENvZGVCbG9jayopOwp0
eXBlZGVmIHZvaWQgKCpWX0pJVE9wZXJhdGlvbl9FQ0MpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpT
Q2VsbCopOwp0eXBlZGVmIHZvaWQgKCpWX0pJVE9wZXJhdGlvbl9FQ0ljZikoRXhlY1N0YXRlKiwg
SlNDZWxsKiwgSW5saW5lQ2FsbEZyYW1lKik7CnR5cGVkZWYgdm9pZCAoKlZfSklUT3BlcmF0aW9u
X0VDSVpDKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCosIGludDMyX3Qs
IEpTQ2VsbCopOwp0eXBlZGVmIHZvaWQgKCpWX0pJVE9wZXJhdGlvbl9FQ0laQ0MpKEV4ZWNTdGF0
ZSosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50MzJfdCwgSlNDZWxsKiwgSlNDZWxs
Kik7CnR5cGVkZWYgdm9pZCAoKlZfSklUT3BlcmF0aW9uX0VDSVpKSikoRXhlY1N0YXRlKiwgSlND
ZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUpOwp0eXBlZGVmIHZvaWQgKCpWX0pJVE9wZXJhdGlvbl9FQ0paQykoRXhlY1N0YXRl
KiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QsIEpTQ2VsbCopOwp0eXBlZGVmIHZv
aWQgKCpWX0pJVE9wZXJhdGlvbl9FQ0NJY2YpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCos
IElubGluZUNhbGxGcmFtZSopOwp0eXBlZGVmIHZvaWQgKCpWX0pJVE9wZXJhdGlvbl9FQ0opKEV4
ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKTsKdHlwZWRlZiB2b2lkICgqVl9KSVRP
cGVyYXRpb25fRUNKSikoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlKTsKdHlwZWRlZiB2b2lkICgqVl9KSVRPcGVyYXRpb25fRUNQU1BTKShFeGVjU3Rh
dGUqLCBKU0NlbGwqLCB2b2lkKiwgc2l6ZV90LCB2b2lkKiwgc2l6ZV90KTsKdHlwZWRlZiB2b2lk
ICgqVl9KSVRPcGVyYXRpb25fRUNaKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl90KTsKdHlw
ZWRlZiB2b2lkICgqVl9KSVRPcGVyYXRpb25fRUNDKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBKU0Nl
bGwqKTsKdHlwZWRlZiB2b2lkICgqVl9KSVRPcGVyYXRpb25fRVpTeW10YWJKKShFeGVjU3RhdGUq
LCBpbnQzMl90LCBTeW1ib2xUYWJsZSosIEVuY29kZWRKU1ZhbHVlKTsKdHlwZWRlZiB2b2lkICgq
Vl9KSVRPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsKdHlwZWRlZiB2
b2lkICgqVl9KSVRPcGVyYXRpb25fRUpDSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpT
Q2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CnR5cGVkZWYgdm9pZCAoKlZfSklUT3BlcmF0aW9u
X0VKSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUpOwp0eXBlZGVmIHZvaWQgKCpWX0pJVE9wZXJhdGlvbl9FSkpKQXApKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEFycmF5
UHJvZmlsZSopOwp0eXBlZGVmIHZvaWQgKCpWX0pJVE9wZXJhdGlvbl9FSkpKQnkpKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFs
SW5mbyopOwp0eXBlZGVmIHZvaWQgKCpWX0pJVE9wZXJhdGlvbl9FSlBQKShFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSwgdm9pZCosIHZvaWQqKTsKdHlwZWRlZiB2b2lkICgqVl9KSVRPcGVyYXRp
b25fRUpaSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QsIEVuY29kZWRKU1Zh
bHVlKTsKdHlwZWRlZiB2b2lkICgqVl9KSVRPcGVyYXRpb25fRUpaKShFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSwgaW50MzJfdCk7CnR5cGVkZWYgdm9pZCAoKlZfSklUT3BlcmF0aW9uX0VPWkQp
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCwgZG91YmxlKTsKdHlwZWRlZiB2b2lkICgq
Vl9KSVRPcGVyYXRpb25fRU9aSikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBpbnQzMl90LCBFbmNv
ZGVkSlNWYWx1ZSk7CnR5cGVkZWYgdm9pZCAoKlZfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRl
KiwgSW5zdHJ1Y3Rpb24qKTsKdHlwZWRlZiB2b2lkICgqVl9KSVRPcGVyYXRpb25fRVBaSikoRXhl
Y1N0YXRlKiwgdm9pZCosIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKdHlwZWRlZiB2b2lkICgq
Vl9KSVRPcGVyYXRpb25fRVNzaUpKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CnR5cGVk
ZWYgdm9pZCAoKlZfSklUT3BlcmF0aW9uX0VXcykoRXhlY1N0YXRlKiwgV2F0Y2hwb2ludFNldCop
Owp0eXBlZGVmIHZvaWQgKCpWX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7
CnR5cGVkZWYgdm9pZCAoKlZfSklUT3BlcmF0aW9uX0VaSikoRXhlY1N0YXRlKiwgaW50MzJfdCwg
RW5jb2RlZEpTVmFsdWUpOwp0eXBlZGVmIHZvaWQgKCpWX0pJVE9wZXJhdGlvbl9FWkpaWlopKEV4
ZWNTdGF0ZSosIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBpbnQzMl90LCBpbnQz
Ml90KTsKdHlwZWRlZiB2b2lkICgqVl9KSVRPcGVyYXRpb25fRVZtKShFeGVjU3RhdGUqLCBWTSop
Owp0eXBlZGVmIHZvaWQgKCpWX0pJVE9wZXJhdGlvbl9KKShFbmNvZGVkSlNWYWx1ZSk7CnR5cGVk
ZWYgdm9pZCAoKlZfSklUT3BlcmF0aW9uX1opKGludDMyX3QpOwp0eXBlZGVmIHZvaWQgKCpWX0pJ
VE9wZXJhdGlvbl9FQ1JVaVVpKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBSZWdpc3RlciosIHVpbnQz
Ml90LCB1aW50MzJfdCk7CnR5cGVkZWYgdm9pZCAoKlZfSklUT3BlcmF0aW9uX0VPSklVaSkoRXhl
Y1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqLCB1
aW50MzJfdCk7CnR5cGVkZWYgY2hhciogKCpQX0pJVE9wZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsK
dHlwZWRlZiBjaGFyKiAoKlBfSklUT3BlcmF0aW9uX0VDKShFeGVjU3RhdGUqLCBKU0NlbGwqKTsK
dHlwZWRlZiBjaGFyKiAoKlBfSklUT3BlcmF0aW9uX0VDbGkpKEV4ZWNTdGF0ZSosIENhbGxMaW5r
SW5mbyopOwp0eXBlZGVmIGNoYXIqICgqUF9KSVRPcGVyYXRpb25fRUpTKShFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSwgc2l6ZV90KTsKdHlwZWRlZiBjaGFyKiAoKlBfSklUT3BlcmF0aW9uX0VP
KShFeGVjU3RhdGUqLCBKU09iamVjdCopOwp0eXBlZGVmIGNoYXIqICgqUF9KSVRPcGVyYXRpb25f
RU9TKShFeGVjU3RhdGUqLCBKU09iamVjdCosIHNpemVfdCk7CnR5cGVkZWYgY2hhciogKCpQX0pJ
VE9wZXJhdGlvbl9FT1opKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCk7CnR5cGVkZWYg
Y2hhciogKCpQX0pJVE9wZXJhdGlvbl9FUFMpKEV4ZWNTdGF0ZSosIHZvaWQqLCBzaXplX3QpOwp0
eXBlZGVmIGNoYXIqICgqUF9KSVRPcGVyYXRpb25fRVMpKEV4ZWNTdGF0ZSosIHNpemVfdCk7CnR5
cGVkZWYgY2hhciogKCpQX0pJVE9wZXJhdGlvbl9FU0pzcykoRXhlY1N0YXRlKiwgc2l6ZV90LCBK
U1N0cmluZyopOwp0eXBlZGVmIGNoYXIqICgqUF9KSVRPcGVyYXRpb25fRVN0KShFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmUqKTsKdHlwZWRlZiBjaGFyKiAoKlBfSklUT3BlcmF0aW9uX0VTdEopKEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKTsKdHlwZWRlZiBjaGFyKiAoKlBfSklU
T3BlcmF0aW9uX0VTdFBTKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCB2b2lkKiwgc2l6ZV90KTsK
dHlwZWRlZiBjaGFyKiAoKlBfSklUT3BlcmF0aW9uX0VTdFNTKShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqLCBzaXplX3QsIHNpemVfdCk7CnR5cGVkZWYgY2hhciogKCpQX0pJVE9wZXJhdGlvbl9FU3Ra
KShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KTsKdHlwZWRlZiBjaGFyKiAoKlBfSklU
T3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CnR5cGVkZWYgU2xv
d1BhdGhSZXR1cm5UeXBlICgqU3BydF9KSVRPcGVyYXRpb25fRUNsaSkoRXhlY1N0YXRlKiwgQ2Fs
bExpbmtJbmZvKik7CnR5cGVkZWYgU3RyaW5nSW1wbCogKCpUX0pJVE9wZXJhdGlvbl9FSnNzKShF
eGVjU3RhdGUqLCBKU1N0cmluZyopOwp0eXBlZGVmIEpTU3RyaW5nKiAoKkpzc19KSVRPcGVyYXRp
b25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwp0eXBlZGVmIEpTU3RyaW5nKiAoKkpzc19KSVRP
cGVyYXRpb25fRUpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSk7CgoKCgp2b2lkIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIoVk0qLCBF
eGVjU3RhdGUqKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwp2b2lkIGxv
b2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUoVk0qLCBFeGVjU3RhdGUqKSBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwp2b2lkIG9wZXJhdGlvblZNSGFuZGxl
RXhjZXB0aW9uKEV4ZWNTdGF0ZSopIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIp
KSk7Cgp2b2lkIG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSosIENv
ZGVCbG9jayopIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CgoKCgppbnQz
Ml90IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKEV4ZWNTdGF0ZSopIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImhpZGRlbiIpKSk7CmludDMyX3Qgb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVj
ayhFeGVjU3RhdGUqKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwpFbmNv
ZGVkSlNWYWx1ZSBvcGVyYXRpb25UcnlHZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiaGlkZGVuIikpKTsKRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uVHJ5R2V0QnlJ
ZEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKTsKRW5jb2RlZEpTVmFsdWUgb3Bl
cmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiaGlkZGVuIikpKTsKRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlJZChFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1w
bCopIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CkVuY29kZWRKU1ZhbHVl
IG9wZXJhdGlvbkdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBVbmlx
dWVkU3RyaW5nSW1wbCopIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CkVu
Y29kZWRKU1ZhbHVlIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CkVuY29kZWRKU1ZhbHVlIG9wZXJhdGlvbklu
T3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqLCBVbmlxdWVk
U3RyaW5nSW1wbCopIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CkVuY29k
ZWRKU1ZhbHVlIG9wZXJhdGlvbkluKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSlND
ZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRk
ZW4iKSkpOwpFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25HZW5lcmljSW4oRXhlY1N0YXRlKiwgSlND
ZWxsKiwgRW5jb2RlZEpTVmFsdWUpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIp
KSk7CnZvaWQgb3BlcmF0aW9uUHV0QnlJZFN0cmljdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlk
ZGVuIikpKTsKdm9pZCBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJoaWRkZW4iKSkpOwp2b2lkIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QoRXhlY1N0
YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CnZvaWQgb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5v
blN0cmljdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBs
KikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKTsKdm9pZCBvcGVyYXRpb25Q
dXRCeUlkU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlx
dWVkU3RyaW5nSW1wbCopIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CnZv
aWQgb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJoaWRkZW4iKSkpOwp2b2lkIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKTsKdm9pZCBvcGVyYXRpb25QdXRCeUlkRGly
ZWN0Tm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlx
dWVkU3RyaW5nSW1wbCopIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CnZv
aWQgb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
aGlkZGVuIikpKTsKdm9pZCBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwp2b2lkIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RT
dHJpY3RCdWlsZExpc3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3Ry
aW5nSW1wbCopIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CnZvaWQgb3Bl
cmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiaGlkZGVuIikpKTsKdm9pZCBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1
dChFeGVjU3RhdGUqLCBKU09iamVjdCosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0LCBFbmNv
ZGVkSlNWYWx1ZSkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKTsKdm9pZCBv
cGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImhpZGRlbiIpKSk7CnZvaWQgb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6
ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBCeVZhbEluZm8qKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwp2
b2lkIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qKSBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwp2b2lkIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2Vu
ZXJpYyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBCeVZhbEluZm8qKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkp
OwpFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25DYWxsRXZhbChFeGVjU3RhdGUqLCBFeGVjU3RhdGUq
KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwpTbG93UGF0aFJldHVyblR5
cGUgb3BlcmF0aW9uTGlua0NhbGwoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvKikgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKTsKU2xvd1BhdGhSZXR1cm5UeXBlIG9wZXJhdGlv
bkxpbmtQb2x5bW9ycGhpY0NhbGwoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvKikgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKTsKU2xvd1BhdGhSZXR1cm5UeXBlIG9wZXJhdGlv
blZpcnR1YWxDYWxsKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyopIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImhpZGRlbiIpKSk7CgpzaXplX3Qgb3BlcmF0aW9uQ29tcGFyZUxlc3MoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJoaWRkZW4iKSkpOwpzaXplX3Qgb3BlcmF0aW9uQ29tcGFyZUxlc3NFcShFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImhpZGRlbiIpKSk7CnNpemVfdCBvcGVyYXRpb25Db21wYXJlR3JlYXRlcihFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImhpZGRlbiIpKSk7CnNpemVfdCBvcGVyYXRpb25Db21wYXJlR3JlYXRlckVxKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiaGlkZGVuIikpKTsKc2l6ZV90IG9wZXJhdGlvbkNvbnZlcnRKU1ZhbHVlVG9Cb29s
ZWFuKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJoaWRkZW4iKSkpOwpzaXplX3Qgb3BlcmF0aW9uQ29tcGFyZUVxKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlk
ZGVuIikpKTsKCgoKc2l6ZV90IG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdFcShFeGVjU3RhdGUqLCBK
U0NlbGwqIGxlZnQsIEpTQ2VsbCogcmlnaHQpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhp
ZGRlbiIpKSk7CgpFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25OZXdBcnJheVdpdGhQcm9maWxlKEV4
ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMs
IGludDMyX3Qgc2l6ZSkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKTsKRW5j
b2RlZEpTVmFsdWUgb3BlcmF0aW9uTmV3QXJyYXlCdWZmZXJXaXRoUHJvZmlsZShFeGVjU3RhdGUq
LCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwgY29uc3QgSlNWYWx1ZSogdmFsdWVzLCBpbnQzMl90
IHNpemUpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CkVuY29kZWRKU1Zh
bHVlIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSosIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSBzaXplKSBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwpFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25OZXdGdW5jdGlv
bihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiaGlkZGVuIikpKTsKRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52
YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0Nl
bGwqKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwpFbmNvZGVkSlNWYWx1
ZSBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlND
ZWxsKikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKTsKRW5jb2RlZEpTVmFs
dWUgb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwp2b2lkIG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZShF
eGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiaGlkZGVuIikpKTsKSlNDZWxsKiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwg
U3RydWN0dXJlKikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKTsKRW5jb2Rl
ZEpTVmFsdWUgb3BlcmF0aW9uTmV3UmVnZXhwKEV4ZWNTdGF0ZSosIHZvaWQqKSBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwpVbnVzZWRQdHIgb3BlcmF0aW9uSGFuZGxlV2F0
Y2hkb2dUaW1lcihFeGVjU3RhdGUqKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4i
KSkpOwp2b2lkIG9wZXJhdGlvblRocm93U3RhdGljRXJyb3IoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUsIGludDMyX3QpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CnZv
aWQgb3BlcmF0aW9uVGhyb3coRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CnZvaWQgb3BlcmF0aW9uRGVidWcoRXhlY1N0YXRl
KiwgaW50MzJfdCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKTsKClNsb3dQ
YXRoUmV0dXJuVHlwZSBvcGVyYXRpb25PcHRpbWl6ZShFeGVjU3RhdGUqLCBpbnQzMl90KSBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwoKdm9pZCBvcGVyYXRpb25QdXRCeUlu
ZGV4KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7
CnZvaWQgb3BlcmF0aW9uUHV0R2V0dGVyQnlJZChFeGVjU3RhdGUqLCBKU0NlbGwqLCBVbmlxdWVk
U3RyaW5nSW1wbCosIGludDMyX3Qgb3B0aW9ucywgSlNDZWxsKikgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiaGlkZGVuIikpKTsKdm9pZCBvcGVyYXRpb25QdXRTZXR0ZXJCeUlkKEV4ZWNTdGF0
ZSosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50MzJfdCBvcHRpb25zLCBKU0NlbGwq
KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwp2b2lkIG9wZXJhdGlvblB1
dEdldHRlckJ5VmFsKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90
IGF0dHJpYnV0ZSwgSlNDZWxsKikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikp
KTsKdm9pZCBvcGVyYXRpb25QdXRTZXR0ZXJCeVZhbChFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNv
ZGVkSlNWYWx1ZSwgaW50MzJfdCBhdHRyaWJ1dGUsIEpTQ2VsbCopIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImhpZGRlbiIpKSk7CgoKCnZvaWQgb3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyKEV4
ZWNTdGF0ZSosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50MzJfdCBhdHRyaWJ1dGUs
IEpTQ2VsbCosIEpTQ2VsbCopIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7
Cgp2b2lkIG9wZXJhdGlvblB1c2hGdW5jdGlvbk5hbWVTY29wZShFeGVjU3RhdGUqLCBpbnQzMl90
LCBTeW1ib2xUYWJsZSosIEVuY29kZWRKU1ZhbHVlKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJoaWRkZW4iKSkpOwp2b2lkIG9wZXJhdGlvblBvcFNjb3BlKEV4ZWNTdGF0ZSosIGludDMyX3Qp
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CnZvaWQgb3BlcmF0aW9uUHJv
ZmlsZURpZENhbGwoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImhpZGRlbiIpKSk7CnZvaWQgb3BlcmF0aW9uUHJvZmlsZVdpbGxDYWxsKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4i
KSkpOwpFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2Ny
aXB0LCBCeVZhbEluZm8qKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwpF
bmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5
VmFsSW5mbyopIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CkVuY29kZWRK
U1ZhbHVlIG9wZXJhdGlvbkdldEJ5VmFsU3RyaW5nKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8q
KSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwpFbmNvZGVkSlNWYWx1ZSBv
cGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbElu
Zm8qKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwpFbmNvZGVkSlNWYWx1
ZSBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZh
bEluZm8qKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwpFbmNvZGVkSlNW
YWx1ZSBvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJo
aWRkZW4iKSkpOwpzaXplX3Qgb3BlcmF0aW9uRGVsZXRlQnlJZChFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImhpZGRlbiIpKSk7CkpTQ2VsbCogb3BlcmF0aW9uR2V0UE5hbWVzKEV4ZWNTdGF0ZSosIEpT
T2JqZWN0KikgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKTsKRW5jb2RlZEpT
VmFsdWUgb3BlcmF0aW9uSW5zdGFuY2VPZihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgcHJvdG8pIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7
CmludDMyX3Qgb3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyhFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSBhcmd1bWVudHMsIGludDMyX3QgbnVtVXNlZFN0YWNrU2xvdHMsIGludDMyX3QgZmly
c3RWYXJBcmdPZmZzZXQpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CkNh
bGxGcmFtZSogb3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUoRXhlY1N0YXRlKiwgQ2FsbEZyYW1l
KiwgRW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBp
bnQzMl90IGxlbmd0aCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKTsKRW5j
b2RlZEpTVmFsdWUgb3BlcmF0aW9uVG9PYmplY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUp
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CgpjaGFyKiBvcGVyYXRpb25T
d2l0Y2hDaGFyV2l0aFVua25vd25LZXlUeXBlKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGtl
eSwgc2l6ZV90IHRhYmxlSW5kZXgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIp
KSk7CmNoYXIqIG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4KSBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwpjaGFyKiBvcGVyYXRpb25Td2l0Y2hTdHJpbmdXaXRoVW5r
bm93bktleVR5cGUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJ
bmRleCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKTsKRW5jb2RlZEpTVmFs
dWUgb3BlcmF0aW9uR2V0RnJvbVNjb3BlKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiBieXRlY29k
ZVBDKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwp2b2lkIG9wZXJhdGlv
blB1dFRvU2NvcGUoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qIGJ5dGVjb2RlUEMpIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CgpjaGFyKiBvcGVyYXRpb25SZWFsbG9jYXRl
QnV0dGVyZmx5VG9IYXZlUHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWxDYXBhY2l0eShFeGVjU3Rh
dGUqLCBKU09iamVjdCopIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7CmNo
YXIqIG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0dyb3dQcm9wZXJ0eVN0b3JhZ2UoRXhl
Y1N0YXRlKiwgSlNPYmplY3QqLCBzaXplX3QgbmV3U2l6ZSkgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSgiaGlkZGVuIikpKTsKCnZvaWQgb3BlcmF0aW9uRmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIo
RXhlY1N0YXRlKiwgSlNDZWxsKik7CnZvaWQgb3BlcmF0aW9uV3JpdGVCYXJyaWVyKEV4ZWNTdGF0
ZSosIEpTQ2VsbCosIEpTQ2VsbCopOwp2b2lkIG9wZXJhdGlvblVuY29uZGl0aW9uYWxXcml0ZUJh
cnJpZXIoRXhlY1N0YXRlKiwgSlNDZWxsKik7CnZvaWQgb3BlcmF0aW9uT1NSV3JpdGVCYXJyaWVy
KEV4ZWNTdGF0ZSosIEpTQ2VsbCopOwoKdm9pZCBvcGVyYXRpb25FeGNlcHRpb25GdXp6KEV4ZWNT
dGF0ZSopOwoKaW50MzJfdCBvcGVyYXRpb25DaGVja0lmRXhjZXB0aW9uSXNVbmNhdGNoYWJsZUFu
ZE5vdGlmeVByb2ZpbGVyKEV4ZWNTdGF0ZSopOwppbnQzMl90IG9wZXJhdGlvbkluc3RhbmNlT2ZD
dXN0b20oRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU09iamVjdCog
Y29uc3RydWN0b3IsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRIYXNJbnN0YW5jZSkgX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKTsKCkVuY29kZWRKU1ZhbHVlIG9wZXJhdGlvbkhh
c0dlbmVyaWNQcm9wZXJ0eShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKik7CkVu
Y29kZWRKU1ZhbHVlIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eShFeGVjU3RhdGUqLCBKU0Nl
bGwqLCBpbnQzMl90KTsKSlNDZWxsKiBvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3IoRXhl
Y1N0YXRlKiwgSlNDZWxsKik7CkVuY29kZWRKU1ZhbHVlIG9wZXJhdGlvbk5leHRFbnVtZXJhdG9y
UG5hbWUoRXhlY1N0YXRlKiwgSlNDZWxsKiwgaW50MzJfdCk7CkpTQ2VsbCogb3BlcmF0aW9uVG9J
bmRleFN0cmluZyhFeGVjU3RhdGUqLCBpbnQzMl90KTsKCnZvaWQgb3BlcmF0aW9uUHJvY2Vzc1R5
cGVQcm9maWxlckxvZyhFeGVjU3RhdGUqKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRk
ZW4iKSkpOwp2b2lkIG9wZXJhdGlvblByb2Nlc3NTaGFkb3dDaGlja2VuTG9nKEV4ZWNTdGF0ZSop
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSk7Cgp9Cgp9CiMgMjUgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oIiAyCiMgMSAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgiIDEKIyAy
MiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgiCiNk
ZWZpbmUgU3RyaW5nT2JqZWN0X2ggCgoKCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIFN0cmluZ09i
amVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewpwdWJsaWM6CiAgICB0eXBlZGVmIEpTV3Jh
cHBlck9iamVjdCBCYXNlOwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJ
bnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJv
IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKCiAgICBzdGF0aWMgU3RyaW5nT2JqZWN0KiBj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgIHsKICAgICAgICBKU1N0cmlu
Zyogc3RyaW5nID0ganNFbXB0eVN0cmluZygmdm0pOwogICAgICAgIFN0cmluZ09iamVjdCogb2Jq
ZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0Pih2bS5oZWFwKSkg
U3RyaW5nT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRp
b24odm0sIHN0cmluZyk7CiAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgIH0KICAgIHN0YXRpYyBT
dHJpbmdPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1N0cmlu
Zyogc3RyaW5nKQogICAgewogICAgICAgIFN0cmluZ09iamVjdCogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0Pih2bS5oZWFwKSkgU3RyaW5nT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpOwogICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cmluZyk7
CiAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgIH0KICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNy
ZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsKCiAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwogICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CgogICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9v
bCBzaG91bGRUaHJvdyk7CgogICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAg
c3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgIHN0YXRpYyBib29sIGRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQ
cm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKCiAgICBwcm90ZWN0ZWQ6IHN0
YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3Qg
OjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07CgogICAgSlNTdHJp
bmcqIGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBhc1N0cmluZyhKU1dyYXBwZXJPYmpl
Y3Q6OmludGVybmFsVmFsdWUoKSk7fQoKICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQogICAgewogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKICAgIH0KCnByb3RlY3RlZDoKICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1N0
cmluZyopOwogICAgU3RyaW5nT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7Cn07CgpTdHJpbmdPYmpl
Y3QqIGFzU3RyaW5nT2JqZWN0KEpTVmFsdWUpOwoKaW5saW5lIFN0cmluZ09iamVjdCogYXNTdHJp
bmdPYmplY3QoSlNWYWx1ZSB2YWx1ZSkKewogICAgKCh2b2lkKTApOwogICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFN0cmluZ09iamVjdCo+KGFzT2JqZWN0KHZhbHVlKSk7Cn0KCiBTdHJpbmdPYmplY3Qq
IGNvbnN0cnVjdFN0cmluZyhWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CgoKCgpzdGF0
aWMgaW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZ1dpdGhSZXVzZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgb3JpZ2luYWxWYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCnsKICAgIGlmIChvcmln
aW5hbFZhbHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmV0dXJu
IGFzU3RyaW5nKG9yaWdpbmFsVmFsdWUpOwogICAgfQogICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMs
IHN0cmluZyk7Cn0KCgpzdGF0aWMgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgb3JpZ2luYWxWYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQp7CiAgICBpZiAob3JpZ2luYWxWYWx1ZS5p
c1N0cmluZygpKSB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiBqc1N1YnN0cmlu
ZyhleGVjLCBhc1N0cmluZyhvcmlnaW5hbFZhbHVlKSwgb2Zmc2V0LCBsZW5ndGgpOwogICAgfQog
ICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4ZWMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpOwp9CgoK
fQojIDI2ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuaCIgMgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBPYmplY3RQcm90b3R5cGU7CmNsYXNzIFJl
Z0V4cDsKY2xhc3MgUmVnRXhwT2JqZWN0OwoKY2xhc3MgU3RyaW5nUHJvdG90eXBlIDogcHVibGlj
IFN0cmluZ09iamVjdCB7CnByaXZhdGU6CiAgICBTdHJpbmdQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1
cmUqKTsKCnB1YmxpYzoKICAgIHR5cGVkZWYgU3RyaW5nT2JqZWN0IEJhc2U7CiAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKCiAgICBzdGF0aWMgU3RyaW5nUHJvdG90eXBlKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwoKICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgewogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBjb25z
dCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3QgOjpKU0M6OkNs
YXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07Cgpwcm90ZWN0ZWQ6CiAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyopOwoKcHJpdmF0
ZToKICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cn07CgpFbmNvZGVkSlNWYWx1ZSBvcGVy
YXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlR2VuZXJpYygKICAgIEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgc2VhcmNoVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIHJlcGxhY2VWYWx1ZSk7CgpFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25TdHJpbmdQcm90
b0Z1bmNSZXBsYWNlUmVnRXhwRW1wdHlTdHIoCiAgICBFeGVjU3RhdGUqLCBKU1N0cmluZyogdGhp
c1ZhbHVlLCBSZWdFeHBPYmplY3QqIHNlYXJjaFZhbHVlKTsKCkVuY29kZWRKU1ZhbHVlIG9wZXJh
dGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBTdHJpbmcoCiAgICBFeGVjU3RhdGUqLCBK
U1N0cmluZyogdGhpc1ZhbHVlLCBSZWdFeHBPYmplY3QqIHNlYXJjaFZhbHVlLCBKU1N0cmluZyog
cmVwbGFjZVZhbHVlKTsKClN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMoY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudCwgU3RyaW5nVmlldyBzb3VyY2UsIGNvbnN0IGludCogb3ZlY3Rvciwg
UmVnRXhwKiByZWcpOwoKRW5jb2RlZEpTVmFsdWUgc3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFj
dGVyKEV4ZWNTdGF0ZSopOwpFbmNvZGVkSlNWYWx1ZSBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3Qo
RXhlY1N0YXRlKik7CgpFbmNvZGVkSlNWYWx1ZSBidWlsdGluU3RyaW5nU3Vic3RySW50ZXJuYWwo
RXhlY1N0YXRlKik7CkVuY29kZWRKU1ZhbHVlIGJ1aWx0aW5TdHJpbmdJbmNsdWRlc0ludGVybmFs
KEV4ZWNTdGF0ZSopOwoKfQojIDM4ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oIiAyCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sUHJvdG90eXBlLmgiIDEKIyAyOCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmgiCiNkZWZpbmUgU3ltYm9sUHJvdG90eXBlX2gg
CgoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xPYmplY3Qu
aCIgMQojIDIzICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xPYmpl
Y3QuaCIKI2RlZmluZSBTeW1ib2xPYmplY3RfaCAKCgoKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3Mg
U3ltYm9sT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CnB1YmxpYzoKICAgIHR5cGVk
ZWYgSlNXcmFwcGVyT2JqZWN0IEJhc2U7CgogICAgc3RhdGljIFN5bWJvbE9iamVjdCogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICB7CiAgICAgICAgU3ltYm9sKiBzeW1i
b2wgPSBTeW1ib2w6OmNyZWF0ZSh2bSk7CiAgICAgICAgU3ltYm9sT2JqZWN0KiBvYmplY3QgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2xPYmplY3Q+KHZtLmhlYXApKSBTeW1ib2xP
YmplY3Qodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwg
c3ltYm9sKTsKICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgfQogICAgc3RhdGljIFN5bWJvbE9i
amVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN5bWJvbCogc3ltYm9s
KQogICAgewogICAgICAgIFN5bWJvbE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8U3ltYm9sT2JqZWN0Pih2bS5oZWFwKSkgU3ltYm9sT2JqZWN0KHZtLCBzdHJ1Y3R1
cmUpOwogICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN5bWJvbCk7CiAgICAgICAg
cmV0dXJuIG9iamVjdDsKICAgIH0KICAgIHN0YXRpYyBTeW1ib2xPYmplY3QqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgU3ltYm9sKik7CgogICAgcHJvdGVjdGVkOiBzdGF0aWMgY29uc3Qg
OjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFz
c0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9OwoKICAgIFN5bWJvbCogaW50ZXJuYWxW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGFzU3ltYm9sKEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxW
YWx1ZSgpKTt9CgogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICB7CiAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgfQoK
ICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwoKcHJvdGVjdGVkOgogICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIFN5bWJvbCopOwogICAgU3ltYm9sT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7
Cn07Cgp9CiMgMzIgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFBy
b3RvdHlwZS5oIiAyCgpuYW1lc3BhY2UgSlNDIHsKCgpjbGFzcyBTeW1ib2xQcm90b3R5cGUgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CnB1YmxpYzoKICAgIHR5cGVkZWYgSlNOb25GaW5hbE9i
amVjdCBCYXNlOwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CgogICAgc3Rh
dGljIFN5bWJvbFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICB7CiAgICAgICAgU3ltYm9sUHJvdG90
eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2xQcm90b3R5
cGU+KHZtLmhlYXApKSBTeW1ib2xQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgcHJv
dG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICByZXR1cm4g
cHJvdG90eXBlOwogICAgfQoKICAgIHByb3RlY3RlZDogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFz
c0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZv
KCkgeyByZXR1cm4gJnNfaW5mbzsgfTsKCiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgIHsKICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CiAgICB9Cgpwcm90ZWN0ZWQ6CiAgICBTeW1ib2xQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1
cmUqKTsKICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwoKcHJp
dmF0ZToKICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cn07CnN0YXRpY19hc3NlcnQoc3Rk
Ojppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFN5bWJvbFByb3RvdHlwZT46OnZhbHVlLCAiU3lt
Ym9sUHJvdG90eXBlIiAiIG11c3QgaGF2ZSBhIHRyaXZpYWwgZGVzdHJ1Y3RvciIpOwoKfQojIDM5
ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIiAy
CiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3Ry
eS5oIiAxCiMgMjcgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRl
UmVnaXN0cnkuaCIKI2RlZmluZSBUZW1wbGF0ZVJlZ2lzdHJ5X2ggCgoKIyAxICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiIDEKIyAyNyAi
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeUtleS5o
IgojZGVmaW5lIFRlbXBsYXRlUmVnaXN0cnlLZXlfaCAKCgoKCgoKbmFtZXNwYWNlIEpTQyB7Cgpj
bGFzcyBUZW1wbGF0ZVJlZ2lzdHJ5S2V5IHsKcHVibGljOgogICAgdHlwZWRlZiBWZWN0b3I8U3Ry
aW5nLCA0PiBTdHJpbmdWZWN0b3I7CgogICAgVGVtcGxhdGVSZWdpc3RyeUtleShjb25zdCBTdHJp
bmdWZWN0b3ImIHJhd1N0cmluZ3MsIGNvbnN0IFN0cmluZ1ZlY3RvciYgY29va2VkU3RyaW5ncyk7
CiAgICBlbnVtIERlbGV0ZWRWYWx1ZVRhZyB7IERlbGV0ZWRWYWx1ZSB9OwogICAgVGVtcGxhdGVS
ZWdpc3RyeUtleShEZWxldGVkVmFsdWVUYWcpOwogICAgZW51bSBFbXB0eVZhbHVlVGFnIHsgRW1w
dHlWYWx1ZSB9OwogICAgVGVtcGxhdGVSZWdpc3RyeUtleShFbXB0eVZhbHVlVGFnKTsKCiAgICBi
b29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9yYXdTdHJpbmdzLmlzRW1wdHko
KSAmJiBtX2hhc2ggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOyB9Cgog
ICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Jhd1N0cmluZ3MuaXNFbXB0
eSgpICYmICFtX2hhc2g7IH0KCiAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNoOyB9CgogICAgY29uc3QgU3RyaW5nVmVjdG9yJiByYXdTdHJpbmdzKCkgY29uc3QgeyByZXR1
cm4gbV9yYXdTdHJpbmdzOyB9CiAgICBjb25zdCBTdHJpbmdWZWN0b3ImIGNvb2tlZFN0cmluZ3Mo
KSBjb25zdCB7IHJldHVybiBtX2Nvb2tlZFN0cmluZ3M7IH0KCiAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgVGVtcGxhdGVSZWdpc3RyeUtleSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faGFzaCA9
PSBvdGhlci5tX2hhc2ggJiYgbV9yYXdTdHJpbmdzID09IG90aGVyLm1fcmF3U3RyaW5nczsgfQog
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRlbXBsYXRlUmVnaXN0cnlLZXkmIG90aGVyKSBjb25z
dCB7IHJldHVybiBtX2hhc2ggIT0gb3RoZXIubV9oYXNoIHx8IG1fcmF3U3RyaW5ncyAhPSBvdGhl
ci5tX3Jhd1N0cmluZ3M7IH0KCiAgICBzdHJ1Y3QgSGFzaGVyIHsKICAgICAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5JiBrZXkpIHsgcmV0dXJuIGtleS5o
YXNoKCk7IH0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBUZW1wbGF0ZVJlZ2lzdHJ5
S2V5JiBhLCBjb25zdCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0K
ICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9
IGZhbHNlOwogICAgfTsKCnByaXZhdGU6CiAgICBTdHJpbmdWZWN0b3IgbV9yYXdTdHJpbmdzOwog
ICAgU3RyaW5nVmVjdG9yIG1fY29va2VkU3RyaW5nczsKICAgIHVuc2lnbmVkIG1faGFzaCB7IDAg
fTsKfTsKCmlubGluZSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5KGNv
bnN0IFN0cmluZ1ZlY3RvciYgcmF3U3RyaW5ncywgY29uc3QgU3RyaW5nVmVjdG9yJiBjb29rZWRT
dHJpbmdzKQogICAgOiBtX3Jhd1N0cmluZ3MocmF3U3RyaW5ncykKICAgICwgbV9jb29rZWRTdHJp
bmdzKGNvb2tlZFN0cmluZ3MpCnsKICAgIG1faGFzaCA9IDA7CiAgICBmb3IgKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nIDogcmF3U3RyaW5ncykKICAgICAgICBtX2hhc2ggKz0gV1RGOjpTdHJpbmdIYXNo
OjpoYXNoKHN0cmluZyk7Cn0KCmlubGluZSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpUZW1wbGF0ZVJl
Z2lzdHJ5S2V5KERlbGV0ZWRWYWx1ZVRhZykKICAgIDogbV9oYXNoKHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKewp9CgppbmxpbmUgVGVtcGxhdGVSZWdpc3RyeUtleTo6VGVt
cGxhdGVSZWdpc3RyeUtleShFbXB0eVZhbHVlVGFnKQogICAgOiBtX2hhc2goMCkKewp9Cgp9Cgpu
YW1lc3BhY2UgV1RGIHsKdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwoK
dGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiB7
CiAgICB0eXBlZGVmIEpTQzo6VGVtcGxhdGVSZWdpc3RyeUtleTo6SGFzaGVyIEhhc2g7Cn07Cgp0
ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6VGVtcGxhdGVSZWdpc3RyeUtleT4gOiBD
dXN0b21IYXNoVHJhaXRzPEpTQzo6VGVtcGxhdGVSZWdpc3RyeUtleT4gewp9OwoKfQojIDMxICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5LmgiIDIK
CgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBUZW1wbGF0ZVJlZ2lzdHJ5IHsKcHVibGljOgogICAg
VGVtcGxhdGVSZWdpc3RyeShWTSYpOwoKICAgIEpTQXJyYXkqIGdldFRlbXBsYXRlT2JqZWN0KEV4
ZWNTdGF0ZSosIGNvbnN0IFRlbXBsYXRlUmVnaXN0cnlLZXkmKTsKCnByaXZhdGU6CiAgICBXZWFr
R0NNYXA8VGVtcGxhdGVSZWdpc3RyeUtleSwgSlNBcnJheT4gbV90ZW1wbGF0ZU1hcDsKfTsKCn0K
IyA0MCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aCIgMgoKCiMgMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L0phdmFTY3JpcHRDb3JlL0pTQmFzZS5oIiAxCiMgNDMgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgiIDIKCgoKCnN0cnVjdCBPcGFxdWVKU0NsYXNz
OwpzdHJ1Y3QgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOwoKbmFtZXNwYWNlIEluc3BlY3RvciB7
CmNsYXNzIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjsKfQoKbmFtZXNwYWNlIEpT
QyB7CgpjbGFzcyBBcnJheVByb3RvdHlwZTsKY2xhc3MgQm9vbGVhblByb3RvdHlwZTsKY2xhc3Mg
Q29uc29sZUNsaWVudDsKY2xhc3MgRGVidWdnZXI7CmNsYXNzIEVycm9yQ29uc3RydWN0b3I7CmNs
YXNzIEVycm9yUHJvdG90eXBlOwpjbGFzcyBFdmFsQ29kZUJsb2NrOwpjbGFzcyBFdmFsRXhlY3V0
YWJsZTsKY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CmNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsK
Y2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CmNsYXNzIEdlbmVyYXRvclByb3RvdHlwZTsKY2xhc3Mg
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CmNsYXNzIEdldHRlclNldHRlcjsKY2xhc3MgR2xv
YmFsQ29kZUJsb2NrOwpjbGFzcyBJbnB1dEN1cnNvcjsKY2xhc3MgSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlOwpjbGFzcyBKU0ludGVybmFsUHJvbWlzZTsKY2xhc3MgSlNQcm9taXNlOwpjbGFzcyBK
U1Byb21pc2VDb25zdHJ1Y3RvcjsKY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOwpjbGFzcyBKU1N0
YWNrOwpjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CmNsYXNzIE1pY3JvdGFzazsKY2xhc3Mg
TW9kdWxlTG9hZGVyT2JqZWN0OwpjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKY2xhc3Mg
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKY2xhc3MgTnVsbEdldHRlckZ1bmN0aW9uOwpjbGFzcyBO
dWxsU2V0dGVyRnVuY3Rpb247CmNsYXNzIE9iamVjdENvbnN0cnVjdG9yOwpjbGFzcyBQcm9ncmFt
Q29kZUJsb2NrOwpjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKY2xhc3MgUmVnRXhwQ29uc3RydWN0
b3I7CmNsYXNzIFJlZ0V4cFByb3RvdHlwZTsKY2xhc3MgU291cmNlQ29kZTsKY2xhc3MgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwpjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50OwplbnVt
IGNsYXNzIFRoaXNURFpNb2RlOwpzdHJ1Y3QgQWN0aXZhdGlvblN0YWNrTm9kZTsKc3RydWN0IEhh
c2hUYWJsZTsKCiNkZWZpbmUgREVGSU5FX1NUQU5EQVJEX0JVSUxUSU4obWFjcm8sdXBwZXJOYW1l
LGxvd2VyTmFtZSkgbWFjcm8odXBwZXJOYW1lLCBsb3dlck5hbWUsIGxvd2VyTmFtZSwgSlMgIyMg
dXBwZXJOYW1lLCB1cHBlck5hbWUpCgojZGVmaW5lIEZPUl9FQUNIX1NJTVBMRV9CVUlMVElOX1RZ
UEVfV0lUSF9DT05TVFJVQ1RPUihtYWNybykgbWFjcm8oU2V0LCBzZXQsIHNldCwgSlNTZXQsIFNl
dCkgbWFjcm8oTWFwLCBtYXAsIG1hcCwgSlNNYXAsIE1hcCkgbWFjcm8oRGF0ZSwgZGF0ZSwgZGF0
ZSwgRGF0ZUluc3RhbmNlLCBEYXRlKSBtYWNybyhTdHJpbmcsIHN0cmluZywgc3RyaW5nT2JqZWN0
LCBTdHJpbmdPYmplY3QsIFN0cmluZykgbWFjcm8oU3ltYm9sLCBzeW1ib2wsIHN5bWJvbE9iamVj
dCwgU3ltYm9sT2JqZWN0LCBTeW1ib2wpIG1hY3JvKEJvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW5P
YmplY3QsIEJvb2xlYW5PYmplY3QsIEJvb2xlYW4pIG1hY3JvKE51bWJlciwgbnVtYmVyLCBudW1i
ZXJPYmplY3QsIE51bWJlck9iamVjdCwgTnVtYmVyKSBtYWNybyhFcnJvciwgZXJyb3IsIGVycm9y
LCBFcnJvckluc3RhbmNlLCBFcnJvcikgbWFjcm8oSlNQcm9taXNlLCBwcm9taXNlLCBwcm9taXNl
LCBKU1Byb21pc2UsIFByb21pc2UpIG1hY3JvKEpTQXJyYXlCdWZmZXIsIGFycmF5QnVmZmVyLCBh
cnJheUJ1ZmZlciwgSlNBcnJheUJ1ZmZlciwgQXJyYXlCdWZmZXIpIERFRklORV9TVEFOREFSRF9C
VUlMVElOKG1hY3JvLCBXZWFrTWFwLCB3ZWFrTWFwKSBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTiht
YWNybywgV2Vha1NldCwgd2Vha1NldCkKIyAxMTMgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgiCiNkZWZpbmUgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJ
VkVEX0lURVJBVE9SX1RZUEUobWFjcm8pIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBB
cnJheUl0ZXJhdG9yLCBhcnJheUl0ZXJhdG9yKSBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNy
bywgTWFwSXRlcmF0b3IsIG1hcEl0ZXJhdG9yKSBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNy
bywgU2V0SXRlcmF0b3IsIHNldEl0ZXJhdG9yKSBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNy
bywgU3RyaW5nSXRlcmF0b3IsIHN0cmluZ0l0ZXJhdG9yKQoKCgoKCiNkZWZpbmUgRk9SX0VBQ0hf
QlVJTFRJTl9JVEVSQVRPUl9UWVBFKG1hY3JvKSBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNy
bywgSXRlcmF0b3IsIGl0ZXJhdG9yKSBGT1JfRUFDSF9CVUlMVElOX0RFUklWRURfSVRFUkFUT1Jf
VFlQRShtYWNybykKCgoKI2RlZmluZSBGT1JfRUFDSF9TSU1QTEVfQlVJTFRJTl9UWVBFKG1hY3Jv
KSBGT1JfRUFDSF9TSU1QTEVfQlVJTFRJTl9UWVBFX1dJVEhfQ09OU1RSVUNUT1IobWFjcm8pIG1h
Y3JvKEpTSW50ZXJuYWxQcm9taXNlLCBpbnRlcm5hbFByb21pc2UsIGludGVybmFsUHJvbWlzZSwg
SlNJbnRlcm5hbFByb21pc2UsIEludGVybmFsUHJvbWlzZSkKCgoKI2RlZmluZSBERUNMQVJFX1NJ
TVBMRV9CVUlMVElOX1RZUEUoY2FwaXRhbE5hbWUsbG93ZXJOYW1lLHByb3Blck5hbWUsaW5zdGFu
Y2VUeXBlLGpzTmFtZSkgY2xhc3MgSlMgIyMgY2FwaXRhbE5hbWU7IGNsYXNzIGNhcGl0YWxOYW1l
ICMjIFByb3RvdHlwZTsgY2xhc3MgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3I7CgoKCgpjbGFz
cyBJdGVyYXRvclByb3RvdHlwZTsKY2xhc3MgSlNTZXQ7IGNsYXNzIFNldFByb3RvdHlwZTsgY2xh
c3MgU2V0Q29uc3RydWN0b3I7IGNsYXNzIEpTTWFwOyBjbGFzcyBNYXBQcm90b3R5cGU7IGNsYXNz
IE1hcENvbnN0cnVjdG9yOyBjbGFzcyBKU0RhdGU7IGNsYXNzIERhdGVQcm90b3R5cGU7IGNsYXNz
IERhdGVDb25zdHJ1Y3RvcjsgY2xhc3MgSlNTdHJpbmc7IGNsYXNzIFN0cmluZ1Byb3RvdHlwZTsg
Y2xhc3MgU3RyaW5nQ29uc3RydWN0b3I7IGNsYXNzIEpTU3ltYm9sOyBjbGFzcyBTeW1ib2xQcm90
b3R5cGU7IGNsYXNzIFN5bWJvbENvbnN0cnVjdG9yOyBjbGFzcyBKU0Jvb2xlYW47IGNsYXNzIEJv
b2xlYW5Qcm90b3R5cGU7IGNsYXNzIEJvb2xlYW5Db25zdHJ1Y3RvcjsgY2xhc3MgSlNOdW1iZXI7
IGNsYXNzIE51bWJlclByb3RvdHlwZTsgY2xhc3MgTnVtYmVyQ29uc3RydWN0b3I7IGNsYXNzIEpT
RXJyb3I7IGNsYXNzIEVycm9yUHJvdG90eXBlOyBjbGFzcyBFcnJvckNvbnN0cnVjdG9yOyBjbGFz
cyBKU0pTUHJvbWlzZTsgY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOyBjbGFzcyBKU1Byb21pc2VD
b25zdHJ1Y3RvcjsgY2xhc3MgSlNKU0FycmF5QnVmZmVyOyBjbGFzcyBKU0FycmF5QnVmZmVyUHJv
dG90eXBlOyBjbGFzcyBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3I7IGNsYXNzIEpTV2Vha01hcDsg
Y2xhc3MgV2Vha01hcFByb3RvdHlwZTsgY2xhc3MgV2Vha01hcENvbnN0cnVjdG9yOyBjbGFzcyBK
U1dlYWtTZXQ7IGNsYXNzIFdlYWtTZXRQcm90b3R5cGU7IGNsYXNzIFdlYWtTZXRDb25zdHJ1Y3Rv
cjsgY2xhc3MgSlNKU0ludGVybmFsUHJvbWlzZTsgY2xhc3MgSlNJbnRlcm5hbFByb21pc2VQcm90
b3R5cGU7IGNsYXNzIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I7CmNsYXNzIEpTQXJyYXlJ
dGVyYXRvcjsgY2xhc3MgQXJyYXlJdGVyYXRvclByb3RvdHlwZTsgY2xhc3MgQXJyYXlJdGVyYXRv
ckNvbnN0cnVjdG9yOyBjbGFzcyBKU01hcEl0ZXJhdG9yOyBjbGFzcyBNYXBJdGVyYXRvclByb3Rv
dHlwZTsgY2xhc3MgTWFwSXRlcmF0b3JDb25zdHJ1Y3RvcjsgY2xhc3MgSlNTZXRJdGVyYXRvcjsg
Y2xhc3MgU2V0SXRlcmF0b3JQcm90b3R5cGU7IGNsYXNzIFNldEl0ZXJhdG9yQ29uc3RydWN0b3I7
IGNsYXNzIEpTU3RyaW5nSXRlcmF0b3I7IGNsYXNzIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOyBj
bGFzcyBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOwoKI3VuZGVmIERFQ0xBUkVfU0lNUExFX0JV
SUxUSU5fVFlQRQoKdHlwZWRlZiBWZWN0b3I8RXhlY1N0YXRlKiwgMTY+IEV4ZWNTdGF0ZVN0YWNr
OwoKc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKICAgIHR5cGVkZWYgYm9vbCAoKkFs
bG93c0FjY2Vzc0Zyb21GdW5jdGlvblB0cikoY29uc3QgSlNHbG9iYWxPYmplY3QqLCBFeGVjU3Rh
dGUqKTsKICAgIEFsbG93c0FjY2Vzc0Zyb21GdW5jdGlvblB0ciBhbGxvd3NBY2Nlc3NGcm9tOwoK
ICAgIHR5cGVkZWYgYm9vbCAoKlN1cHBvcnRzTGVnYWN5UHJvZmlsaW5nRnVuY3Rpb25QdHIpKGNv
bnN0IEpTR2xvYmFsT2JqZWN0Kik7CiAgICBTdXBwb3J0c0xlZ2FjeVByb2ZpbGluZ0Z1bmN0aW9u
UHRyIHN1cHBvcnRzTGVnYWN5UHJvZmlsaW5nOwoKICAgIHR5cGVkZWYgYm9vbCAoKlN1cHBvcnRz
UmljaFNvdXJjZUluZm9GdW5jdGlvblB0cikoY29uc3QgSlNHbG9iYWxPYmplY3QqKTsKICAgIFN1
cHBvcnRzUmljaFNvdXJjZUluZm9GdW5jdGlvblB0ciBzdXBwb3J0c1JpY2hTb3VyY2VJbmZvOwoK
ICAgIHR5cGVkZWYgYm9vbCAoKlNob3VsZEludGVycnVwdFNjcmlwdEZ1bmN0aW9uUHRyKShjb25z
dCBKU0dsb2JhbE9iamVjdCopOwogICAgU2hvdWxkSW50ZXJydXB0U2NyaXB0RnVuY3Rpb25QdHIg
c2hvdWxkSW50ZXJydXB0U2NyaXB0OwoKICAgIHR5cGVkZWYgUnVudGltZUZsYWdzICgqSmF2YVNj
cmlwdFJ1bnRpbWVGbGFnc0Z1bmN0aW9uUHRyKShjb25zdCBKU0dsb2JhbE9iamVjdCopOwogICAg
SmF2YVNjcmlwdFJ1bnRpbWVGbGFnc0Z1bmN0aW9uUHRyIGphdmFTY3JpcHRSdW50aW1lRmxhZ3M7
CgogICAgdHlwZWRlZiB2b2lkICgqUXVldWVUYXNrVG9FdmVudExvb3BGdW5jdGlvblB0cikoY29u
c3QgSlNHbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPE1pY3JvdGFzaz4pOwogICAgUXVldWVUYXNr
VG9FdmVudExvb3BGdW5jdGlvblB0ciBxdWV1ZVRhc2tUb0V2ZW50TG9vcDsKCiAgICB0eXBlZGVm
IGJvb2wgKCpTaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0UHRyKShjb25zdCBKU0ds
b2JhbE9iamVjdCopOwogICAgU2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dFB0ciBz
aG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0OwoKICAgIHR5cGVkZWYgSlNJbnRlcm5h
bFByb21pc2UqICgqTW9kdWxlTG9hZGVyUmVzb2x2ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVj
U3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKICAgIE1vZHVsZUxvYWRlclJlc29sdmVQdHIgbW9k
dWxlTG9hZGVyUmVzb2x2ZTsKCiAgICB0eXBlZGVmIEpTSW50ZXJuYWxQcm9taXNlKiAoKk1vZHVs
ZUxvYWRlckZldGNoUHRyKShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwog
ICAgTW9kdWxlTG9hZGVyRmV0Y2hQdHIgbW9kdWxlTG9hZGVyRmV0Y2g7CgogICAgdHlwZWRlZiBK
U0ludGVybmFsUHJvbWlzZSogKCpNb2R1bGVMb2FkZXJUcmFuc2xhdGVQdHIpKEpTR2xvYmFsT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICBNb2R1bGVMb2FkZXJUcmFu
c2xhdGVQdHIgbW9kdWxlTG9hZGVyVHJhbnNsYXRlOwoKICAgIHR5cGVkZWYgSlNJbnRlcm5hbFBy
b21pc2UqICgqTW9kdWxlTG9hZGVySW5zdGFudGlhdGVQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICBNb2R1bGVMb2FkZXJJbnN0YW50aWF0ZVB0
ciBtb2R1bGVMb2FkZXJJbnN0YW50aWF0ZTsKCiAgICB0eXBlZGVmIEpTVmFsdWUgKCpNb2R1bGVM
b2FkZXJFdmFsdWF0ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBK
U1ZhbHVlKTsKICAgIE1vZHVsZUxvYWRlckV2YWx1YXRlUHRyIG1vZHVsZUxvYWRlckV2YWx1YXRl
OwoKICAgIHR5cGVkZWYgU3RyaW5nICgqRGVmYXVsdExhbmd1YWdlRnVuY3Rpb25QdHIpKCk7CiAg
ICBEZWZhdWx0TGFuZ3VhZ2VGdW5jdGlvblB0ciBkZWZhdWx0TGFuZ3VhZ2U7Cn07CgpjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKcHJpdmF0
ZToKICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPj4gV2Vh
a01hcFNldDsKICAgIHR5cGVkZWYgSGFzaE1hcDxPcGFxdWVKU0NsYXNzKiwgc3RkOjp1bmlxdWVf
cHRyPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4+IE9wYXF1ZUpTQ2xhc3NEYXRhTWFwOwoKICAg
IHN0cnVjdCBKU0dsb2JhbE9iamVjdFJhcmVEYXRhIHsKICAgICAgICBwdWJsaWM6IHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVy
YXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0
b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9
IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0g
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsg
KCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gcHJpdmF0ZTogdHlwZWRlZiBpbnQgX190aGlz
SXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybzsKICAgIHB1YmxpYzoKICAgICAg
ICBKU0dsb2JhbE9iamVjdFJhcmVEYXRhKCkKICAgICAgICAgICAgOiBwcm9maWxlR3JvdXAoMCkK
ICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBXZWFrTWFwU2V0IHdlYWtNYXBzOwogICAgICAg
IHVuc2lnbmVkIHByb2ZpbGVHcm91cDsKCiAgICAgICAgT3BhcXVlSlNDbGFzc0RhdGFNYXAgb3Bh
cXVlSlNDbGFzc0RhdGE7CiAgICB9OwoKcHJvdGVjdGVkOgogICAgUmVnaXN0ZXIgbV9nbG9iYWxD
YWxsRnJhbWVbSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZV07CgogICAgV3JpdGVCYXJyaWVy
PEpTT2JqZWN0PiBtX2dsb2JhbFRoaXM7CgogICAgV3JpdGVCYXJyaWVyPEpTR2xvYmFsTGV4aWNh
bEVudmlyb25tZW50PiBtX2dsb2JhbExleGljYWxFbnZpcm9ubWVudDsKICAgIFdyaXRlQmFycmll
cjxKU09iamVjdD4gbV9nbG9iYWxDYWxsZWU7CiAgICBXcml0ZUJhcnJpZXI8UmVnRXhwQ29uc3Ry
dWN0b3I+IG1fcmVnRXhwQ29uc3RydWN0b3I7CiAgICBXcml0ZUJhcnJpZXI8RXJyb3JDb25zdHJ1
Y3Rvcj4gbV9lcnJvckNvbnN0cnVjdG9yOwogICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29u
c3RydWN0b3I+IG1fZXZhbEVycm9yQ29uc3RydWN0b3I7CiAgICBXcml0ZUJhcnJpZXI8TmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcj4gbV9yYW5nZUVycm9yQ29uc3RydWN0b3I7CiAgICBXcml0ZUJhcnJp
ZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yOwog
ICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fc3ludGF4RXJyb3JDb25z
dHJ1Y3RvcjsKICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5cGVF
cnJvckNvbnN0cnVjdG9yOwogICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+
IG1fVVJJRXJyb3JDb25zdHJ1Y3RvcjsKICAgIFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rv
cj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsKICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1
Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CiAgICBXcml0ZUJhcnJpZXI8SlNJbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvcj4gbV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvcjsKCiAgICBXcml0
ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251bGxHZXR0ZXJGdW5jdGlvbjsKICAgIFdy
aXRlQmFycmllcjxOdWxsU2V0dGVyRnVuY3Rpb24+IG1fbnVsbFNldHRlckZ1bmN0aW9uOwoKICAg
IFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX3BhcnNlSW50RnVuY3Rpb247CgogICAgV3JpdGVC
YXJyaWVyPEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwogICAgV3JpdGVCYXJyaWVyPEpTRnVu
Y3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwogICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fYXBw
bHlGdW5jdGlvbjsKICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2RlZmluZVByb3BlcnR5
RnVuY3Rpb247CiAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVz
RnVuY3Rpb247CiAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9pbml0aWFsaXplUHJvbWlz
ZUZ1bmN0aW9uOwogICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fbmV3UHJvbWlzZUNhcGFi
aWxpdHlGdW5jdGlvbjsKICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2Z1bmN0aW9uUHJv
dG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uOwogICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBt
X3JlZ0V4cFByb3RvRXhlYzsKICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV9yZWdFeHBQcm90
b1N5bWJvbFJlcGxhY2U7CiAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fcmVnRXhwUHJvdG9H
bG9iYWxHZXR0ZXI7CiAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fcmVnRXhwUHJvdG9Vbmlj
b2RlR2V0dGVyOwogICAgV3JpdGVCYXJyaWVyPEdldHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJv
ckdldHRlclNldHRlcjsKCiAgICBXcml0ZUJhcnJpZXI8TW9kdWxlTG9hZGVyT2JqZWN0PiBtX21v
ZHVsZUxvYWRlcjsKCiAgICBXcml0ZUJhcnJpZXI8T2JqZWN0UHJvdG90eXBlPiBtX29iamVjdFBy
b3RvdHlwZTsKICAgIFdyaXRlQmFycmllcjxGdW5jdGlvblByb3RvdHlwZT4gbV9mdW5jdGlvblBy
b3RvdHlwZTsKICAgIFdyaXRlQmFycmllcjxBcnJheVByb3RvdHlwZT4gbV9hcnJheVByb3RvdHlw
ZTsKICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1fcmVnRXhwUHJvdG90eXBlOwog
ICAgV3JpdGVCYXJyaWVyPEl0ZXJhdG9yUHJvdG90eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBlOwog
ICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPiBtX2dlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlOwogICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvclByb3RvdHlwZT4gbV9n
ZW5lcmF0b3JQcm90b3R5cGU7CgogICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kZWJ1Z2dl
clNjb3BlU3RydWN0dXJlOwogICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93aXRoU2NvcGVT
dHJ1Y3R1cmU7CiAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmljdEV2YWxBY3RpdmF0
aW9uU3RydWN0dXJlOwogICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9sZXhpY2FsRW52aXJv
bm1lbnRTdHJ1Y3R1cmU7CiAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZUVudmly
b25tZW50U3RydWN0dXJlOwogICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kaXJlY3RBcmd1
bWVudHNTdHJ1Y3R1cmU7CiAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Njb3BlZEFyZ3Vt
ZW50c1N0cnVjdHVyZTsKICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2xvbmVkQXJndW1l
bnRzU3RydWN0dXJlOwoKCiAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX29yaWdpbmFsQXJy
YXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1NoYXBlW051bWJlck9mSW5kZXhpbmdTaGFwZXNdOwoKCiAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2FycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdTaGFw
ZUR1cmluZ0FsbG9jYXRpb25bTnVtYmVyT2ZJbmRleGluZ1NoYXBlc107CgogICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlOwogICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlOwogICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZTsKICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmU7CgoKCgogICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlOwog
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsZWVTdHJ1Y3R1cmU7CiAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2Z1bmN0aW9uU3RydWN0dXJlOwogICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlOwogICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9ib3VuZFNsb3RCYXNlRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX2dldHRlclNldHRlclN0cnVjdHVyZTsKICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fbmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1
bmN0aW9uTmFtZU9mZnNldDsKICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJpdmF0ZU5h
bWVTdHJ1Y3R1cmU7CiAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cFN0cnVjdHVy
ZTsKICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1
cmU7CiAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NvbnNvbGVTdHJ1Y3R1cmU7CiAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RvbGxhclZNU3RydWN0dXJlOwogICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlOwogICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZTsKICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOwogICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0dXJl
OwogICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmU7CiAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVy
ZTsKICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJveHlPYmplY3RTdHJ1Y3R1cmU7CiAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmU7
CiAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb3h5UmV2b2tlU3RydWN0dXJlOwoKCgoK
I2RlZmluZSBERUZJTkVfU1RPUkFHRV9GT1JfU0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsbG93ZXJO
YW1lLHByb3Blck5hbWUsaW5zdGFuY2VUeXBlLGpzTmFtZSkgV3JpdGVCYXJyaWVyPGNhcGl0YWxO
YW1lICMjIFByb3RvdHlwZT4gbV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZTsgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV8gIyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmU7CgoKCiAgICBXcml0
ZUJhcnJpZXI8U2V0UHJvdG90eXBlPiBtX3NldFByb3RvdHlwZTsgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9zZXRTdHJ1Y3R1cmU7IFdyaXRlQmFycmllcjxNYXBQcm90b3R5cGU+IG1fbWFwUHJv
dG90eXBlOyBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21hcFN0cnVjdHVyZTsgV3JpdGVCYXJy
aWVyPERhdGVQcm90b3R5cGU+IG1fZGF0ZVByb3RvdHlwZTsgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9kYXRlU3RydWN0dXJlOyBXcml0ZUJhcnJpZXI8U3RyaW5nUHJvdG90eXBlPiBtX3N0cmlu
Z1Byb3RvdHlwZTsgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1
cmU7IFdyaXRlQmFycmllcjxTeW1ib2xQcm90b3R5cGU+IG1fc3ltYm9sUHJvdG90eXBlOyBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N5bWJvbE9iamVjdFN0cnVjdHVyZTsgV3JpdGVCYXJyaWVy
PEJvb2xlYW5Qcm90b3R5cGU+IG1fYm9vbGVhblByb3RvdHlwZTsgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlOyBXcml0ZUJhcnJpZXI8TnVtYmVyUHJvdG90
eXBlPiBtX251bWJlclByb3RvdHlwZTsgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9udW1iZXJP
YmplY3RTdHJ1Y3R1cmU7IFdyaXRlQmFycmllcjxFcnJvclByb3RvdHlwZT4gbV9lcnJvclByb3Rv
dHlwZTsgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9lcnJvclN0cnVjdHVyZTsgV3JpdGVCYXJy
aWVyPEpTUHJvbWlzZVByb3RvdHlwZT4gbV9wcm9taXNlUHJvdG90eXBlOyBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX3Byb21pc2VTdHJ1Y3R1cmU7IFdyaXRlQmFycmllcjxKU0FycmF5QnVmZmVy
UHJvdG90eXBlPiBtX2FycmF5QnVmZmVyUHJvdG90eXBlOyBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2FycmF5QnVmZmVyU3RydWN0dXJlOyBXcml0ZUJhcnJpZXI8V2Vha01hcFByb3RvdHlwZT4g
bV93ZWFrTWFwUHJvdG90eXBlOyBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dlYWtNYXBTdHJ1
Y3R1cmU7IFdyaXRlQmFycmllcjxXZWFrU2V0UHJvdG90eXBlPiBtX3dlYWtTZXRQcm90b3R5cGU7
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2Vha1NldFN0cnVjdHVyZTsgV3JpdGVCYXJyaWVy
PEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlPiBtX2ludGVybmFsUHJvbWlzZVByb3RvdHlwZTsg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbnRlcm5hbFByb21pc2VTdHJ1Y3R1cmU7CiAgICBX
cml0ZUJhcnJpZXI8QXJyYXlJdGVyYXRvclByb3RvdHlwZT4gbV9hcnJheUl0ZXJhdG9yUHJvdG90
eXBlOyBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2FycmF5SXRlcmF0b3JTdHJ1Y3R1cmU7IFdy
aXRlQmFycmllcjxNYXBJdGVyYXRvclByb3RvdHlwZT4gbV9tYXBJdGVyYXRvclByb3RvdHlwZTsg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tYXBJdGVyYXRvclN0cnVjdHVyZTsgV3JpdGVCYXJy
aWVyPFNldEl0ZXJhdG9yUHJvdG90eXBlPiBtX3NldEl0ZXJhdG9yUHJvdG90eXBlOyBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX3NldEl0ZXJhdG9yU3RydWN0dXJlOyBXcml0ZUJhcnJpZXI8U3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGU+IG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGU7IFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fc3RyaW5nSXRlcmF0b3JTdHJ1Y3R1cmU7CgojdW5kZWYgREVGSU5F
X1NUT1JBR0VfRk9SX1NJTVBMRV9UWVBFCgogICAgc3RydWN0IFR5cGVkQXJyYXlEYXRhIHsKICAg
ICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IHByb3RvdHlwZTsKICAgICAgICBXcml0ZUJhcnJp
ZXI8SW50ZXJuYWxGdW5jdGlvbj4gY29uc3RydWN0b3I7CiAgICAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gc3RydWN0dXJlOwogICAgfTsKCiAgICBzdGQ6OmFycmF5PFR5cGVkQXJyYXlEYXRh
LCBUeXBlRGF0YVZpZXc+IG1fdHlwZWRBcnJheXM7CgogICAgSlNDZWxsKiBtX3NwZWNpYWxQb2lu
dGVyc1tTcGVjaWFsOjpUYWJsZVNpemVdOwogICAgSlNDZWxsKiBtX2xpbmtUaW1lQ29uc3RhbnRz
W0xpbmtUaW1lQ29uc3RhbnRDb3VudF07CgogICAgU3RyaW5nIG1fbmFtZTsKCiAgICBEZWJ1Z2dl
ciogbV9kZWJ1Z2dlcjsKCiAgICBWTSYgbV92bTsKIyAzMzQgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgiCiAgICBIYXNoU2V0PFN0cmluZz4gbV9p
bnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzOwogICAgSGFzaFNldDxTdHJpbmc+IG1faW50bERh
dGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlczsKICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2ludGxO
dW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzOwoKCiAgICBSZWZQdHI8V2F0Y2hwb2ludFNldD4g
bV9tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludDsKICAgIFJlZlB0cjxXYXRjaHBvaW50
U2V0PiBtX2hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludDsKICAgIFJlZlB0cjxXYXRjaHBvaW50U2V0
PiBtX3ZhckluamVjdGlvbldhdGNocG9pbnQ7CgogICAgc3RkOjp1bmlxdWVfcHRyPEpTR2xvYmFs
T2JqZWN0UmFyZURhdGE+IG1fcmFyZURhdGE7CgogICAgV2Vha1JhbmRvbSBtX3dlYWtSYW5kb207
CgogICAgVGVtcGxhdGVSZWdpc3RyeSBtX3RlbXBsYXRlUmVnaXN0cnk7CgogICAgYm9vbCBtX2V2
YWxFbmFibGVkOwogICAgU3RyaW5nIG1fZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlOwogICAgUnVu
dGltZUZsYWdzIG1fcnVudGltZUZsYWdzOwogICAgQ29uc29sZUNsaWVudCogbV9jb25zb2xlQ2xp
ZW50OwoKICAgIHN0YXRpYyBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBzX2dsb2JhbE9i
amVjdE1ldGhvZFRhYmxlOwogICAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIG1fZ2xv
YmFsT2JqZWN0TWV0aG9kVGFibGU7CgogICAgdm9pZCBjcmVhdGVSYXJlRGF0YUlmTmVlZGVkKCkK
ICAgIHsKICAgICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
IG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0UmFyZURhdGE+KCk7
CiAgICB9CgpwdWJsaWM6CiAgICB0eXBlZGVmIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgQmFz
ZTsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJv
cGVydHlOYW1lcyB8IE92ZXJyaWRlc1RvVGhpczsKCiAgICBzdGF0aWMgSlNHbG9iYWxPYmplY3Qq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgewogICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0ds
b2JhbE9iamVjdD4odm0uaGVhcCkpIEpTR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwogICAg
ICAgIGdsb2JhbE9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgIHZtLmhlYXAuYWRk
RmluYWxpemVyKGdsb2JhbE9iamVjdCwgZGVzdHJveSk7CiAgICAgICAgcmV0dXJuIGdsb2JhbE9i
amVjdDsKICAgIH0KCiAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZv
IHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsg
cmV0dXJuICZzX2luZm87IH07CgogICAgYm9vbCBoYXNEZWJ1Z2dlcigpIGNvbnN0OwogICAgYm9v
bCBoYXNJbnRlcmFjdGl2ZURlYnVnZ2VyKCkgY29uc3Q7CiAgICBib29sIGhhc0xlZ2FjeVByb2Zp
bGVyKCkgY29uc3Q7CiAgICBjb25zdCBSdW50aW1lRmxhZ3MmIHJ1bnRpbWVGbGFncygpIGNvbnN0
IHsgcmV0dXJuIG1fcnVudGltZUZsYWdzOyB9Cgpwcm90ZWN0ZWQ6CiAgICBleHBsaWNpdCBKU0ds
b2JhbE9iamVjdChWTSYsIFN0cnVjdHVyZSosIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
KiA9IDApOwoKICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgewogICAgICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2Jq
ZWN0KHZtLCB0aGlzKTsKICAgICAgICBtX3J1bnRpbWVGbGFncyA9IG1fZ2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUtPmphdmFTY3JpcHRSdW50aW1lRmxhZ3ModGhpcyk7CiAgICAgICAgaW5pdCh2bSk7
CiAgICAgICAgc2V0R2xvYmFsVGhpcyh2bSwgSlNQcm94eTo6Y3JlYXRlKHZtLCBKU1Byb3h5Ojpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGdldFByb3RvdHlwZURpcmVjdCgpLCBQdXJlRm9yd2Fy
ZGluZ1Byb3h5VHlwZSksIHRoaXMpKTsKICAgIH0KCiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNPYmplY3QqIHRoaXNWYWx1ZSkKICAgIHsKICAgICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgICAgc3RydWN0dXJlKCktPnNldEdsb2JhbE9iamVjdCh2bSwgdGhpcyk7
CiAgICAgICAgbV9ydW50aW1lRmxhZ3MgPSBtX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlLT5qYXZh
U2NyaXB0UnVudGltZUZsYWdzKHRoaXMpOwogICAgICAgIGluaXQodm0pOwogICAgICAgIHNldEds
b2JhbFRoaXModm0sIHRoaXNWYWx1ZSk7CiAgICB9CgogICAgdm9pZCBhZGRHbG9iYWxWYXIoY29u
c3QgSWRlbnRpZmllciYpOwoKcHVibGljOgogICAgfkpTR2xvYmFsT2JqZWN0KCk7CiAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwoKICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVz
dHJ1Y3Rpb24gPSBmYWxzZTsKCiAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CgogICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwoKICAgIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOwogICAgc3RhdGljIHZvaWQgZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuYywgdW5zaWduZWQgYXR0
cmlidXRlcyk7CiAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBz
aG91bGRUaHJvdyk7CgogICAgdm9pZCBhZGRWYXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiAgICB7CiAgICAgICAgaWYgKCFoYXNQcm9wZXJ0eShleGVj
LCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICAgICBhZGRHbG9iYWxWYXIocHJvcGVydHlOYW1lKTsK
ICAgIH0KICAgIHZvaWQgYWRkRnVuY3Rpb24oRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYp
OwoKICAgIEpTU2NvcGUqIGdsb2JhbFNjb3BlKCkgeyByZXR1cm4gbV9nbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQuZ2V0KCk7IH0KICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQoKSB7IHJldHVybiBtX2dsb2JhbExleGljYWxFbnZpcm9ubWVudC5n
ZXQoKTsgfQoKCgoKICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnRXhwQ29uc3RydWN0b3IuZ2V0KCk7IH0KCiAgICBFcnJvckNvbnN0
cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvckNvbnN0cnVj
dG9yLmdldCgpOyB9CiAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX29iamVjdENvbnN0cnVjdG9yLmdldCgpOyB9CiAgICBKU1Byb21pc2VD
b25zdHJ1Y3RvciogcHJvbWlzZUNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNl
Q29uc3RydWN0b3IuZ2V0KCk7IH0KICAgIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IqIGlu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogZXZhbEVy
cm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLmdl
dCgpOyB9CiAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3Io
KSBjb25zdCB7IHJldHVybiBtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvciogcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvciogc3ludGF4RXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
c3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ciogdHlwZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3R5cGVFcnJvckNvbnN0
cnVjdG9yLmdldCgpOyB9CiAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBVUklFcnJvckNvbnN0
cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9VUklFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9Cgog
ICAgTnVsbEdldHRlckZ1bmN0aW9uKiBudWxsR2V0dGVyRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX251bGxHZXR0ZXJGdW5jdGlvbi5nZXQoKTsgfQogICAgTnVsbFNldHRlckZ1bmN0aW9uKiBu
dWxsU2V0dGVyRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX251bGxTZXR0ZXJGdW5jdGlvbi5n
ZXQoKTsgfQoKICAgIEpTRnVuY3Rpb24qIHBhcnNlSW50RnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3BhcnNlSW50RnVuY3Rpb24uZ2V0KCk7IH0KCiAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2V2YWxGdW5jdGlvbi5nZXQoKTsgfQogICAgSlNGdW5jdGlv
biogY2FsbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnVuY3Rpb24uZ2V0KCk7IH0K
ICAgIEpTRnVuY3Rpb24qIGFwcGx5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FwcGx5RnVu
Y3Rpb24uZ2V0KCk7IH0KICAgIEpTRnVuY3Rpb24qIGRlZmluZVByb3BlcnR5RnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2RlZmluZVByb3BlcnR5RnVuY3Rpb24uZ2V0KCk7IH0KICAgIEpTRnVu
Y3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQ
cm90b1ZhbHVlc0Z1bmN0aW9uLmdldCgpOyB9CiAgICBKU0Z1bmN0aW9uKiBpbml0aWFsaXplUHJv
bWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9u
LmdldCgpOyB9CiAgICBKU0Z1bmN0aW9uKiBuZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLmdldCgpOyB9CiAg
ICBKU0Z1bmN0aW9uKiBmdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24uZ2V0
KCk7IH0KICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b0V4ZWNGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVnRXhwUHJvdG9FeGVjLmdldCgpOyB9CiAgICBKU09iamVjdCogcmVnRXhwUHJvdG9T
eW1ib2xSZXBsYWNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvU3ltYm9s
UmVwbGFjZS5nZXQoKTsgfQogICAgSlNPYmplY3QqIHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b0dsb2JhbEdldHRlci5nZXQoKTsgfQogICAgSlNP
YmplY3QqIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhw
UHJvdG9Vbmljb2RlR2V0dGVyLmdldCgpOyB9CiAgICBHZXR0ZXJTZXR0ZXIqIHRocm93VHlwZUVy
cm9yR2V0dGVyU2V0dGVyKFZNJiB2bSkKICAgIHsKICAgICAgICBpZiAoIW1fdGhyb3dUeXBlRXJy
b3JHZXR0ZXJTZXR0ZXIpCiAgICAgICAgICAgIGNyZWF0ZVRocm93VHlwZUVycm9yKHZtKTsKICAg
ICAgICByZXR1cm4gbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlci5nZXQoKTsKICAgIH0KCiAg
ICBNb2R1bGVMb2FkZXJPYmplY3QqIG1vZHVsZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbW9k
dWxlTG9hZGVyLmdldCgpOyB9CgogICAgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUo
KSBjb25zdCB7IHJldHVybiBtX29iamVjdFByb3RvdHlwZS5nZXQoKTsgfQogICAgRnVuY3Rpb25Q
cm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKTsgfQogICAgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9hcnJheVByb3RvdHlwZS5nZXQoKTsgfQogICAgQm9vbGVhblByb3RvdHlw
ZSogYm9vbGVhblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm9vbGVhblByb3RvdHlwZS5n
ZXQoKTsgfQogICAgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZ1Byb3RvdHlwZS5nZXQoKTsgfQogICAgU3ltYm9sUHJvdG90eXBlKiBzeW1i
b2xQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbFByb3RvdHlwZS5nZXQoKTsgfQog
ICAgTnVtYmVyUHJvdG90eXBlKiBudW1iZXJQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX251
bWJlclByb3RvdHlwZS5nZXQoKTsgfQogICAgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0ZVByb3RvdHlwZS5nZXQoKTsgfQogICAgUmVnRXhwUHJvdG90
eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5n
ZXQoKTsgfQogICAgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1
cm4gbV9lcnJvclByb3RvdHlwZS5nZXQoKTsgfQogICAgSXRlcmF0b3JQcm90b3R5cGUqIGl0ZXJh
dG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKTsg
fQogICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsg
fQogICAgR2VuZXJhdG9yUHJvdG90eXBlKiBnZW5lcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQoKICAgIFN0cnVjdHVyZSogZGVidWdn
ZXJTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgU3RydWN0dXJlKiBzdHJpY3RF
dmFsQWN0aXZhdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0RXZhbEFjdGl2
YXRpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgIFN0cnVjdHVyZSogYWN0aXZhdGlvblN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlLmdldCgpOyB9
CiAgICBTdHJ1Y3R1cmUqIG1vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZS5nZXQoKTsgfQogICAgU3RydWN0dXJlKiBk
aXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdEFyZ3VtZW50
c1N0cnVjdHVyZS5nZXQoKTsgfQogICAgU3RydWN0dXJlKiBzY29wZWRBcmd1bWVudHNTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsgfQog
ICAgU3RydWN0dXJlKiBjbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2Nsb25lZEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsgfQogICAgU3RydWN0dXJlKiBvcmlnaW5h
bEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUp
IGNvbnN0CiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVybiBtX29yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1NoYXBlWyhpbmRleGluZ1R5cGUgJiBJbmRleGluZ1No
YXBlTWFzaykgPj4gSW5kZXhpbmdTaGFwZVNoaWZ0XS5nZXQoKTsKICAgIH0KICAgIFN0cnVjdHVy
ZSogYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEluZGV4aW5n
VHlwZSBpbmRleGluZ1R5cGUpIGNvbnN0CiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAg
IHJldHVybiBtX2FycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdTaGFwZUR1cmluZ0FsbG9jYXRpb25b
KGluZGV4aW5nVHlwZSAmIEluZGV4aW5nU2hhcGVNYXNrKSA+PiBJbmRleGluZ1NoYXBlU2hpZnRd
LmdldCgpOwogICAgfQogICAgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24oRXhlY1N0YXRlKiBleGVjLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdU
eXBlLCBKU1ZhbHVlIG5ld1RhcmdldCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gSW50ZXJu
YWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgbmV3VGFyZ2V0LCBhcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSk7
CiAgICB9CiAgICBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlRm9yUHJvZmlsZUR1cmluZ0FsbG9j
YXRpb24oRXhlY1N0YXRlKiBleGVjLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlLCBK
U1ZhbHVlIG5ld1RhcmdldCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGV4ZWMsIEFycmF5QWxsb2NhdGlvblBy
b2ZpbGU6OnNlbGVjdEluZGV4aW5nVHlwZUZvcihwcm9maWxlKSwgbmV3VGFyZ2V0KTsKICAgIH0K
CiAgICBib29sIGlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgIHsKICAgICAgICByZXR1cm4gb3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpIHwgSXNBcnJheSkgPT0gc3RydWN0dXJlOwogICAg
fQoKICAgIFN0cnVjdHVyZSogYm9vbGVhbk9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgU3RydWN0dXJlKiBjYWxsYmFj
a0NvbnN0cnVjdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja0NvbnN0cnVj
dG9yU3RydWN0dXJlLmdldCgpOyB9CiAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrRnVuY3Rpb25TdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgIFN0cnVjdHVyZSogY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICBTdHJ1Y3R1cmUqIHByb3Bl
cnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eU5hbWVJ
dGVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQoKCgoKICAgIFN0cnVjdHVyZSogZGF0ZVN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0ZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgU3RydWN0dXJl
KiBudWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udWxsUHJv
dG90eXBlT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQoKTsgfQogICAgU3RydWN0
dXJlKiBjYWxsZWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZVN0cnVjdHVyZS5n
ZXQoKTsgfQogICAgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgIFN0cnVjdHVyZSogYm91bmRGdW5jdGlv
blN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZS5nZXQo
KTsgfQogICAgU3RydWN0dXJlKiBib3VuZFNsb3RCYXNlRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX2JvdW5kU2xvdEJhc2VGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAg
U3RydWN0dXJlKiBnZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dldHRl
clNldHRlclN0cnVjdHVyZS5nZXQoKTsgfQogICAgU3RydWN0dXJlKiBuYXRpdmVTdGRGdW5jdGlv
blN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgIFN0cnVjdHVyZSogbmFtZWRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgUHJvcGVydHlPZmZz
ZXQgZnVuY3Rpb25OYW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVPZmZz
ZXQ7IH0KICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgIFN0cnVjdHVyZSogcHJpdmF0
ZU5hbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlLmdl
dCgpOyB9CiAgICBTdHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgIFN0cnVjdHVy
ZSogbWFwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBT
dHJ1Y3R1cmUuZ2V0KCk7IH0KICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9
CiAgICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0U3RydWN0
dXJlLmdldCgpOyB9CiAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICBTdHJ1Y3R1cmUq
IHN5bWJvbE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0U3Ry
dWN0dXJlLmdldCgpOyB9CiAgICBTdHJ1Y3R1cmUqIGl0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZS5nZXQo
KTsgfQogICAgU3RydWN0dXJlKiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQogICAgU3RydWN0
dXJlKiBtb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZVJlY29y
ZFN0cnVjdHVyZS5nZXQoKTsgfQogICAgU3RydWN0dXJlKiBtb2R1bGVOYW1lc3BhY2VPYmplY3RT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgU3RydWN0dXJlKiBwcm94eU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJveHlPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgIFN0cnVjdHVyZSogY2Fs
bGFibGVQcm94eU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGFibGVQcm94
eU9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgU3RydWN0dXJlKiBwcm94eVJldm9rZVN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJveHlSZXZva2VTdHJ1Y3R1cmUuZ2V0KCk7IH0KCgoK
CiAgICB2b2lkIHNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoYm9vbCk7CiAgICBib29sIHJlbW90
ZURlYnVnZ2luZ0VuYWJsZWQoKSBjb25zdDsKIyA1NzMgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgiCiAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4m
IGludGxDb2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKTsKICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgaW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwogICAgY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBpbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwoKCiAgICB2b2lk
IHNldENvbnNvbGVDbGllbnQoQ29uc29sZUNsaWVudCogY29uc29sZUNsaWVudCkgeyBtX2NvbnNv
bGVDbGllbnQgPSBjb25zb2xlQ2xpZW50OyB9CiAgICBDb25zb2xlQ2xpZW50KiBjb25zb2xlQ2xp
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb25zb2xlQ2xpZW50OyB9CgogICAgdm9pZCBzZXROYW1l
KGNvbnN0IFN0cmluZyYpOwogICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9uYW1lOyB9CgogICAgSlNBcnJheUJ1ZmZlclByb3RvdHlwZSogYXJyYXlCdWZmZXJQcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBtX2FycmF5QnVmZmVyUHJvdG90eXBlLmdldCgpOyB9CgojZGVm
aW5lIERFRklORV9BQ0NFU1NPUlNfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLGxvd2VyTmFt
ZSxwcm9wZXJOYW1lLGluc3RhbmNlVHlwZSxqc05hbWUpIFN0cnVjdHVyZSogcHJvcGVyTmFtZSAj
IyBTdHJ1Y3R1cmUoKSB7IHJldHVybiBtXyAjIyBwcm9wZXJOYW1lICMjIFN0cnVjdHVyZS5nZXQo
KTsgfQoKCiAgICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fc2V0U3RydWN0
dXJlLmdldCgpOyB9IFN0cnVjdHVyZSogbWFwU3RydWN0dXJlKCkgeyByZXR1cm4gbV9tYXBTdHJ1
Y3R1cmUuZ2V0KCk7IH0gU3RydWN0dXJlKiBkYXRlU3RydWN0dXJlKCkgeyByZXR1cm4gbV9kYXRl
U3RydWN0dXJlLmdldCgpOyB9IFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgeyBy
ZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0gU3RydWN0dXJlKiBzeW1ib2xP
YmplY3RTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3N5bWJvbE9iamVjdFN0cnVjdHVyZS5nZXQoKTsg
fSBTdHJ1Y3R1cmUqIGJvb2xlYW5PYmplY3RTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Jvb2xlYW5P
YmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0gU3RydWN0dXJlKiBudW1iZXJPYmplY3RTdHJ1Y3R1cmUo
KSB7IHJldHVybiBtX251bWJlck9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfSBTdHJ1Y3R1cmUqIGVy
cm9yU3RydWN0dXJlKCkgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQoKTsgfSBTdHJ1Y3R1
cmUqIHByb21pc2VTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3Byb21pc2VTdHJ1Y3R1cmUuZ2V0KCk7
IH0gU3RydWN0dXJlKiBhcnJheUJ1ZmZlclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fYXJyYXlCdWZm
ZXJTdHJ1Y3R1cmUuZ2V0KCk7IH0gU3RydWN0dXJlKiB3ZWFrTWFwU3RydWN0dXJlKCkgeyByZXR1
cm4gbV93ZWFrTWFwU3RydWN0dXJlLmdldCgpOyB9IFN0cnVjdHVyZSogd2Vha1NldFN0cnVjdHVy
ZSgpIHsgcmV0dXJuIG1fd2Vha1NldFN0cnVjdHVyZS5nZXQoKTsgfSBTdHJ1Y3R1cmUqIGludGVy
bmFsUHJvbWlzZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1faW50ZXJuYWxQcm9taXNlU3RydWN0dXJl
LmdldCgpOyB9CiAgICBTdHJ1Y3R1cmUqIGFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSB7IHJldHVy
biBtX2FycmF5SXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0gU3RydWN0dXJlKiBtYXBJdGVyYXRv
clN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0gU3Ry
dWN0dXJlKiBzZXRJdGVyYXRvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fc2V0SXRlcmF0b3JTdHJ1
Y3R1cmUuZ2V0KCk7IH0gU3RydWN0dXJlKiBzdHJpbmdJdGVyYXRvclN0cnVjdHVyZSgpIHsgcmV0
dXJuIG1fc3RyaW5nSXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KCiN1bmRlZiBERUZJTkVfQUND
RVNTT1JTX0ZPUl9TSU1QTEVfVFlQRQoKICAgIFN0cnVjdHVyZSogdHlwZWRBcnJheVN0cnVjdHVy
ZShUeXBlZEFycmF5VHlwZSB0eXBlKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBtX3R5cGVk
QXJyYXlzW3RvSW5kZXgodHlwZSldLnN0cnVjdHVyZS5nZXQoKTsKICAgIH0KICAgIGJvb2wgaXNP
cmlnaW5hbFR5cGVkQXJyYXlTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICB7CiAg
ICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPnR5cGVk
QXJyYXlTdG9yYWdlVHlwZTsKICAgICAgICBpZiAodHlwZSA9PSBOb3RUeXBlZEFycmF5KQogICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlTdHJ1Y3R1cmUo
dHlwZSkgPT0gc3RydWN0dXJlOwogICAgfQoKICAgIEpTT2JqZWN0KiB0eXBlZEFycmF5Q29uc3Ry
dWN0b3IoVHlwZWRBcnJheVR5cGUgdHlwZSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gbV90
eXBlZEFycmF5c1t0b0luZGV4KHR5cGUpXS5jb25zdHJ1Y3Rvci5nZXQoKTsKICAgIH0KCiAgICBK
U0NlbGwqIGFjdHVhbFBvaW50ZXJGb3IoU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQogICAgewog
ICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gbV9zcGVjaWFsUG9pbnRlcnNbcG9pbnRl
cl07CiAgICB9CiAgICBKU0NlbGwqIGpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVD
b25zdGFudCB0eXBlKQogICAgewogICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHR5cGUpOwogICAgICAgICgodm9pZCkwKTsKICAgICAgICByZXR1cm4gbV9saW5r
VGltZUNvbnN0YW50c1tpbmRleF07CiAgICB9CgogICAgV2F0Y2hwb2ludFNldCogbWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoKSB7IHJldHVybiBtX21hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWRXYXRjaHBvaW50LmdldCgpOyB9CiAgICBXYXRjaHBvaW50U2V0KiBoYXZpbmdBQmFkVGltZVdh
dGNocG9pbnQoKSB7IHJldHVybiBtX2hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludC5nZXQoKTsgfQog
ICAgV2F0Y2hwb2ludFNldCogdmFySW5qZWN0aW9uV2F0Y2hwb2ludCgpIHsgcmV0dXJuIG1fdmFy
SW5qZWN0aW9uV2F0Y2hwb2ludC5nZXQoKTsgfQoKICAgIGJvb2wgaXNIYXZpbmdBQmFkVGltZSgp
IGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1faGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50LT5o
YXNCZWVuSW52YWxpZGF0ZWQoKTsKICAgIH0KCiAgICB2b2lkIGhhdmVBQmFkVGltZShWTSYpOwoK
ICAgIGJvb2wgb2JqZWN0UHJvdG90eXBlSXNTYW5lKCk7CiAgICBib29sIGFycmF5UHJvdG90eXBl
Q2hhaW5Jc1NhbmUoKTsKICAgIGJvb2wgc3RyaW5nUHJvdG90eXBlQ2hhaW5Jc1NhbmUoKTsKCiAg
ICB2b2lkIHNldFByb2ZpbGVHcm91cCh1bnNpZ25lZCB2YWx1ZSkgeyBjcmVhdGVSYXJlRGF0YUlm
TmVlZGVkKCk7IG1fcmFyZURhdGEtPnByb2ZpbGVHcm91cCA9IHZhbHVlOyB9CiAgICB1bnNpZ25l
ZCBwcm9maWxlR3JvdXAoKSBjb25zdAogICAgewogICAgICAgIGlmICghbV9yYXJlRGF0YSkKICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPnByb2ZpbGVHcm91
cDsKICAgIH0KCiAgICBEZWJ1Z2dlciogZGVidWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2RlYnVn
Z2VyOyB9CiAgICB2b2lkIHNldERlYnVnZ2VyKERlYnVnZ2VyKiBkZWJ1Z2dlcikgeyBtX2RlYnVn
Z2VyID0gZGVidWdnZXI7IH0KCiAgICBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogZ2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlOyB9CgogICAgc3RhdGljIGJvb2wgYWxsb3dzQWNjZXNzRnJvbShjb25zdCBKU0dsb2Jh
bE9iamVjdCosIEV4ZWNTdGF0ZSopIHsgcmV0dXJuIHRydWU7IH0KICAgIHN0YXRpYyBib29sIHN1
cHBvcnRzTGVnYWN5UHJvZmlsaW5nKGNvbnN0IEpTR2xvYmFsT2JqZWN0KikgeyByZXR1cm4gZmFs
c2U7IH0KICAgIHN0YXRpYyBib29sIHN1cHBvcnRzUmljaFNvdXJjZUluZm8oY29uc3QgSlNHbG9i
YWxPYmplY3QqKSB7IHJldHVybiB0cnVlOyB9CgogICAgRXhlY1N0YXRlKiBnbG9iYWxFeGVjKCk7
CgogICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0KGNvbnN0IEpTR2xvYmFsT2Jq
ZWN0KikgeyByZXR1cm4gdHJ1ZTsgfQogICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJydXB0U2Ny
aXB0QmVmb3JlVGltZW91dChjb25zdCBKU0dsb2JhbE9iamVjdCopIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICBzdGF0aWMgUnVudGltZUZsYWdzIGphdmFTY3JpcHRSdW50aW1lRmxhZ3MoY29uc3QgSlNH
bG9iYWxPYmplY3QqKSB7IHJldHVybiBSdW50aW1lRmxhZ3MoKTsgfQoKICAgIHZvaWQgcXVldWVN
aWNyb3Rhc2soUGFzc1JlZlB0cjxNaWNyb3Rhc2s+KTsKCiAgICBib29sIGV2YWxFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9ldmFsRW5hYmxlZDsgfQogICAgY29uc3QgU3RyaW5nJiBldmFsRGlz
YWJsZWRFcnJvck1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX2V2YWxEaXNhYmxlZEVycm9yTWVz
c2FnZTsgfQogICAgdm9pZCBzZXRFdmFsRW5hYmxlZChib29sIGVuYWJsZWQsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlID0gU3RyaW5nKCkpCiAgICB7CiAgICAgICAgbV9ldmFsRW5hYmxlZCA9
IGVuYWJsZWQ7CiAgICAgICAgbV9ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UgPSBlcnJvck1lc3Nh
Z2U7CiAgICB9CgogICAgdm9pZCByZXNldFByb3RvdHlwZShWTSYsIEpTVmFsdWUgcHJvdG90eXBl
KTsKCiAgICBWTSYgdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9CiAgICBKU09iamVjdCogZ2xv
YmFsVGhpcygpIGNvbnN0OwoKICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTVmFsdWUgcHJvdG90eXBlKQogICAgewogICAgICAgIFN0cnVjdHVyZSogcmVzdWx0
ID0gU3RydWN0dXJlOjpjcmVhdGUodm0sIDAsIHByb3RvdHlwZSwgVHlwZUluZm8oR2xvYmFsT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgICAgIHJlc3VsdC0+c2V0VHJh
bnNpdGlvbldhdGNocG9pbnRJc0xpa2VseVRvQmVGaXJlZCh0cnVlKTsKICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgfQoKICAgIHZvaWQgcmVnaXN0ZXJXZWFrTWFwKE9wYXF1ZUpTV2Vha09iamVj
dE1hcCogbWFwKQogICAgewogICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWVkZWQoKTsKICAgICAg
ICBtX3JhcmVEYXRhLT53ZWFrTWFwcy5hZGQobWFwKTsKICAgIH0KCiAgICB2b2lkIHVucmVnaXN0
ZXJXZWFrTWFwKE9wYXF1ZUpTV2Vha09iamVjdE1hcCogbWFwKQogICAgewogICAgICAgIGlmICht
X3JhcmVEYXRhKQogICAgICAgICAgICBtX3JhcmVEYXRhLT53ZWFrTWFwcy5yZW1vdmUobWFwKTsK
ICAgIH0KCiAgICBPcGFxdWVKU0NsYXNzRGF0YU1hcCYgb3BhcXVlSlNDbGFzc0RhdGEoKQogICAg
ewogICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWVkZWQoKTsKICAgICAgICByZXR1cm4gbV9yYXJl
RGF0YS0+b3BhcXVlSlNDbGFzc0RhdGE7CiAgICB9CgogICAgVGVtcGxhdGVSZWdpc3RyeSYgdGVt
cGxhdGVSZWdpc3RyeSgpIHsgcmV0dXJuIG1fdGVtcGxhdGVSZWdpc3RyeTsgfQoKICAgIHN0YXRp
YyBwdHJkaWZmX3Qgd2Vha1JhbmRvbU9mZnNldCgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0
PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEpTR2xvYmFsT2JqZWN0Kj4oMHg0MDAwKS0+
bV93ZWFrUmFuZG9tKSkgLSAweDQwMDApOyB9CiAgICBkb3VibGUgd2Vha1JhbmRvbU51bWJlcigp
IHsgcmV0dXJuIG1fd2Vha1JhbmRvbS5nZXQoKTsgfQogICAgdW5zaWduZWQgd2Vha1JhbmRvbUlu
dGVnZXIoKSB7IHJldHVybiBtX3dlYWtSYW5kb20uZ2V0VWludDMyKCk7IH0KCiAgICBVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1lKiwgUHJv
Z3JhbUV4ZWN1dGFibGUqLCBKU09iamVjdCoqIGV4Y2VwdGlvbik7CiAgICBVbmxpbmtlZEV2YWxD
b2RlQmxvY2sqIGNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiwgRXZhbEV4ZWN1dGFibGUq
LCBUaGlzVERaTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwogICAgVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGVNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKENhbGxG
cmFtZSosIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKik7Cgpwcm90ZWN0ZWQ6CiAgICBzdHJ1Y3Qg
R2xvYmFsUHJvcGVydHlJbmZvIHsKICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oY29uc3QgSWRl
bnRpZmllciYgaSwgSlNWYWx1ZSB2LCB1bnNpZ25lZCBhKQogICAgICAgICAgICA6IGlkZW50aWZp
ZXIoaSkKICAgICAgICAgICAgLCB2YWx1ZSh2KQogICAgICAgICAgICAsIGF0dHJpYnV0ZXMoYSkK
ICAgICAgICB7CiAgICAgICAgfQoKICAgICAgICBjb25zdCBJZGVudGlmaWVyIGlkZW50aWZpZXI7
CiAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAg
fTsKICAgIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBpbnQgY291
bnQpOwoKICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgdG9UaGlzKEpTQzo6SlNDZWxsKiwgSlNDOjpF
eGVjU3RhdGUqLCBFQ01BTW9kZSk7Cgpwcml2YXRlOgogICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKCiAgICB2b2lkIHNldEdsb2JhbFRoaXMoVk0mLCBKU09iamVjdCogZ2xv
YmFsVGhpcyk7CgogICAgdm9pZCBpbml0KFZNJik7CgogICAgdm9pZCBjcmVhdGVUaHJvd1R5cGVF
cnJvcihWTSYpOwoKICAgIHN0YXRpYyB2b2lkIGNsZWFyUmFyZURhdGEoSlNDZWxsKik7Cn07CgpK
U0dsb2JhbE9iamVjdCogYXNHbG9iYWxPYmplY3QoSlNWYWx1ZSk7CgppbmxpbmUgSlNHbG9iYWxP
YmplY3QqIGFzR2xvYmFsT2JqZWN0KEpTVmFsdWUgdmFsdWUpCnsKICAgICgodm9pZCkwKTsKICAg
IHJldHVybiBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihhc09iamVjdCh2YWx1ZSkpOwp9Cgppbmxp
bmUgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEFycmF5QWxs
b2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVu
c2lnbmVkIGluaXRpYWxMZW5ndGggPSAwLCBKU1ZhbHVlIG5ld1RhcmdldCA9IEpTVmFsdWUoKSkK
ewogICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CiAgICBpZiAoaW5pdGlhbExlbmd0aCA+PSAxMDI0
ICogMTAyNCAqIDEwMjQgLyA4KQogICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJy
YXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGV4ZWMsIEFycmF5V2l0
aEFycmF5U3RvcmFnZSwgbmV3VGFyZ2V0KTsKICAgIGVsc2UKICAgICAgICBzdHJ1Y3R1cmUgPSBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9yUHJvZmlsZUR1cmluZ0FsbG9jYXRpb24oZXhl
YywgcHJvZmlsZSwgbmV3VGFyZ2V0KTsKICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKCiAgICByZXR1cm4gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZTo6
dXBkYXRlTGFzdEFsbG9jYXRpb25Gb3IocHJvZmlsZSwgSlNBcnJheTo6Y3JlYXRlKGV4ZWMtPnZt
KCksIHN0cnVjdHVyZSwgaW5pdGlhbExlbmd0aCkpOwp9CgppbmxpbmUgSlNBcnJheSogY29uc3Ry
dWN0RW1wdHlBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHBy
b2ZpbGUsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGggPSAwLCBKU1ZhbHVlIG5ld1RhcmdldCA9IEpT
VmFsdWUoKSkKewogICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgcHJvZmlsZSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBpbml0aWFsTGVuZ3RoLCBuZXdUYXJnZXQpOwp9
CgppbmxpbmUgSlNBcnJheSogY29uc3RydWN0QXJyYXkoRXhlY1N0YXRlKiBleGVjLCBBcnJheUFs
bG9jYXRpb25Qcm9maWxlKiBwcm9maWxlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBBcmdMaXN0JiB2YWx1ZXMsIEpTVmFsdWUgbmV3VGFyZ2V0ID0gSlNWYWx1ZSgpKQp7CiAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JQ
cm9maWxlRHVyaW5nQWxsb2NhdGlvbihleGVjLCBwcm9maWxlLCBuZXdUYXJnZXQpOwogICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgIHJldHVybiBudWxscHRyOwogICAgcmV0dXJu
IEFycmF5QWxsb2NhdGlvblByb2ZpbGU6OnVwZGF0ZUxhc3RBbGxvY2F0aW9uRm9yKHByb2ZpbGUs
IGNvbnN0cnVjdEFycmF5KGV4ZWMsIHN0cnVjdHVyZSwgdmFsdWVzKSk7Cn0KCmlubGluZSBKU0Fy
cmF5KiBjb25zdHJ1Y3RBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlvblByb2Zp
bGUqIHByb2ZpbGUsIGNvbnN0IEFyZ0xpc3QmIHZhbHVlcywgSlNWYWx1ZSBuZXdUYXJnZXQgPSBK
U1ZhbHVlKCkpCnsKICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCBwcm9maWxlLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHZhbHVlcywgbmV3VGFyZ2V0KTsKfQoKaW5saW5lIEpT
QXJyYXkqIGNvbnN0cnVjdEFycmF5KEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZSogcHJvZmlsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSlNWYWx1
ZSogdmFsdWVzLCB1bnNpZ25lZCBsZW5ndGgsIEpTVmFsdWUgbmV3VGFyZ2V0ID0gSlNWYWx1ZSgp
KQp7CiAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JQcm9maWxlRHVyaW5nQWxsb2NhdGlvbihleGVjLCBwcm9maWxlLCBuZXdUYXJnZXQpOwog
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgIHJldHVybiBudWxscHRyOwogICAg
cmV0dXJuIEFycmF5QWxsb2NhdGlvblByb2ZpbGU6OnVwZGF0ZUxhc3RBbGxvY2F0aW9uRm9yKHBy
b2ZpbGUsIGNvbnN0cnVjdEFycmF5KGV4ZWMsIHN0cnVjdHVyZSwgdmFsdWVzLCBsZW5ndGgpKTsK
fQoKaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5KEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSwgY29uc3QgSlNWYWx1ZSogdmFsdWVzLCB1bnNpZ25l
ZCBsZW5ndGgsIEpTVmFsdWUgbmV3VGFyZ2V0ID0gSlNWYWx1ZSgpKQp7CiAgICByZXR1cm4gY29u
c3RydWN0QXJyYXkoZXhlYywgcHJvZmlsZSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB2
YWx1ZXMsIGxlbmd0aCwgbmV3VGFyZ2V0KTsKfQoKaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFy
cmF5TmVnYXRpdmVJbmRleGVkKEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZSogcHJvZmlsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSlNWYWx1ZSog
dmFsdWVzLCB1bnNpZ25lZCBsZW5ndGgsIEpTVmFsdWUgbmV3VGFyZ2V0ID0gSlNWYWx1ZSgpKQp7
CiAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVG
b3JQcm9maWxlRHVyaW5nQWxsb2NhdGlvbihleGVjLCBwcm9maWxlLCBuZXdUYXJnZXQpOwogICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgIHJldHVybiBudWxscHRyOwogICAgcmV0
dXJuIEFycmF5QWxsb2NhdGlvblByb2ZpbGU6OnVwZGF0ZUxhc3RBbGxvY2F0aW9uRm9yKHByb2Zp
bGUsIGNvbnN0cnVjdEFycmF5TmVnYXRpdmVJbmRleGVkKGV4ZWMsIHN0cnVjdHVyZSwgdmFsdWVz
LCBsZW5ndGgpKTsKfQoKaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5TmVnYXRpdmVJbmRl
eGVkKEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSwgY29u
c3QgSlNWYWx1ZSogdmFsdWVzLCB1bnNpZ25lZCBsZW5ndGgsIEpTVmFsdWUgbmV3VGFyZ2V0ID0g
SlNWYWx1ZSgpKQp7CiAgICByZXR1cm4gY29uc3RydWN0QXJyYXlOZWdhdGl2ZUluZGV4ZWQoZXhl
YywgcHJvZmlsZSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB2YWx1ZXMsIGxlbmd0aCwg
bmV3VGFyZ2V0KTsKfQoKaW5saW5lIEpTT2JqZWN0KiBFeGVjU3RhdGU6Omdsb2JhbFRoaXNWYWx1
ZSgpIGNvbnN0CnsKICAgIHJldHVybiBsZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbFRoaXMo
KTsKfQoKaW5saW5lIEpTT2JqZWN0KiBKU1Njb3BlOjpnbG9iYWxUaGlzKCkKewogICAgcmV0dXJu
IGdsb2JhbE9iamVjdCgpLT5nbG9iYWxUaGlzKCk7Cn0KCmlubGluZSBKU09iamVjdCogSlNHbG9i
YWxPYmplY3Q6Omdsb2JhbFRoaXMoKSBjb25zdAp7CiAgICByZXR1cm4gbV9nbG9iYWxUaGlzLmdl
dCgpOwp9Cgp9CiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRl
cm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUuaCIgMgojIDEgIi4uLy4uL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oIiAxCiMgMjIgIi4uLy4uL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oIgojZGVmaW5lIE9iamVj
dFByb3RvdHlwZV9oIAoKCgpuYW1lc3BhY2UgSlNDIHsKCmNsYXNzIE9iamVjdFByb3RvdHlwZSA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKcHVibGljOgogICAgdHlwZWRlZiBKU05vbkZpbmFs
T2JqZWN0IEJhc2U7CgogICAgc3RhdGljIE9iamVjdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKCiAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCA6
OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNz
SW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07CgogICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCiAgICB7CiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOwogICAgfQoKcHJvdGVjdGVkOgogICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7Cgpwcml2YXRlOgogICAgT2JqZWN0UHJvdG90eXBlKFZN
JiwgU3RydWN0dXJlKik7Cn07CgogRW5jb2RlZEpTVmFsdWUgb2JqZWN0UHJvdG9GdW5jVG9TdHJp
bmcoRXhlY1N0YXRlKik7Cgp9CiMgMzEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUuaCIgMgoKIyAxICIuLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaCIgMQojIDMzICIuLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRp
b25Qcm9maWxlLmgiIDIKCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgSW50ZXJuYWxGdW5jdGlvbkFs
bG9jYXRpb25Qcm9maWxlIHsKcHVibGljOgogICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSB7IHJl
dHVybiBtX3N0cnVjdHVyZS5nZXQoKTsgfQogICAgU3RydWN0dXJlKiBjcmVhdGVBbGxvY2F0aW9u
U3RydWN0dXJlRnJvbUJhc2UoVk0mLCBKU0NlbGwqIG93bmVyLCBKU09iamVjdCogcHJvdG90eXBl
LCBTdHJ1Y3R1cmUqIGJhc2UpOwoKICAgIHZvaWQgY2xlYXIoKSB7IG1fc3RydWN0dXJlLmNsZWFy
KCk7IH0KICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpIHsgdmlz
aXRvci5hcHBlbmQoJm1fc3RydWN0dXJlKTsgfQoKcHJpdmF0ZToKICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwp9OwoKaW5saW5lIFN0cnVjdHVyZSogSW50ZXJuYWxGdW5j
dGlvbkFsbG9jYXRpb25Qcm9maWxlOjpjcmVhdGVBbGxvY2F0aW9uU3RydWN0dXJlRnJvbUJhc2Uo
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBKU09iamVjdCogcHJvdG90eXBlLCBTdHJ1Y3R1cmUqIGJh
c2VTdHJ1Y3R1cmUpCnsKICAgICgodm9pZCkwKTsKCiAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsK
ICAgIGlmIChwcm90b3R5cGUgPT0gYmFzZVN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCkpCiAg
ICAgICAgc3RydWN0dXJlID0gYmFzZVN0cnVjdHVyZTsKICAgIGVsc2UKICAgICAgICBzdHJ1Y3R1
cmUgPSB2bS5wcm90b3R5cGVNYXAuZW1wdHlTdHJ1Y3R1cmVGb3JQcm90b3R5cGVGcm9tQmFzZVN0
cnVjdHVyZShwcm90b3R5cGUsIGJhc2VTdHJ1Y3R1cmUpOwoKCiAgICBXVEY6OnN0b3JlU3RvcmVG
ZW5jZSgpOwoKICAgIG1fc3RydWN0dXJlLnNldCh2bSwgb3duZXIsIHN0cnVjdHVyZSk7CiAgICBy
ZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7Cn0KCn0KIyAzMCAiLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oIiAyCgojIDEgIi4uLy4uL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oIiAxCiMgMjcg
Ii4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZS5oIgojZGVmaW5lIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlX2ggCgoKCgoKCgpuYW1lc3Bh
Y2UgSlNDIHsKCmNsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlIHsKICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CnB1YmxpYzoKICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZBbGxvY2F0b3IoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYo
cmVpbnRlcnByZXRfY2FzdDxPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSo+KDB4NDAwMCktPm1fYWxs
b2NhdG9yKSkgLSAweDQwMDApOyB9CiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU3RydWN0
dXJlKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0
X2Nhc3Q8T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqPigweDQwMDApLT5tX3N0cnVjdHVyZSkpIC0g
MHg0MDAwKTsgfQoKICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkKICAgICAgICA6IG1fYWxs
b2NhdG9yKDApCiAgICB7CiAgICB9CgogICAgYm9vbCBpc051bGwoKSB7IHJldHVybiAhbV9hbGxv
Y2F0b3I7IH0KCiAgICB2b2lkIGluaXRpYWxpemUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBKU09i
amVjdCogcHJvdG90eXBlLCB1bnNpZ25lZCBpbmZlcnJlZElubGluZUNhcGFjaXR5KQogICAgewog
ICAgICAgICgodm9pZCkwKTsKICAgICAgICAoKHZvaWQpMCk7CgogICAgICAgIHVuc2lnbmVkIGlu
bGluZUNhcGFjaXR5ID0gMDsKICAgICAgICBpZiAoaW5mZXJyZWRJbmxpbmVDYXBhY2l0eSA8IEpT
RmluYWxPYmplY3Q6OmRlZmF1bHRJbmxpbmVDYXBhY2l0eSgpKSB7CgogICAgICAgICAgICBpbmZl
cnJlZElubGluZUNhcGFjaXR5ICs9IHBvc3NpYmxlRGVmYXVsdFByb3BlcnR5Q291bnQodm0sIHBy
b3RvdHlwZSk7CgogICAgICAgICAgICBpZiAoIWluZmVycmVkSW5saW5lQ2FwYWNpdHkpIHsKCgog
ICAgICAgICAgICAgICAgaW5mZXJyZWRJbmxpbmVDYXBhY2l0eSA9IEpTRmluYWxPYmplY3Q6OmRl
ZmF1bHRJbmxpbmVDYXBhY2l0eSgpOwogICAgICAgICAgICB9IGVsc2UgaWYgKGluZmVycmVkSW5s
aW5lQ2FwYWNpdHkgPiBKU0ZpbmFsT2JqZWN0OjpkZWZhdWx0SW5saW5lQ2FwYWNpdHkoKSkgewoK
CiAgICAgICAgICAgICAgICBpbmZlcnJlZElubGluZUNhcGFjaXR5ID0gSlNGaW5hbE9iamVjdDo6
ZGVmYXVsdElubGluZUNhcGFjaXR5KCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlubGlu
ZUNhcGFjaXR5ID0gaW5mZXJyZWRJbmxpbmVDYXBhY2l0eTsKICAgICAgICAgICAgKCh2b2lkKTAp
OwogICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICBpbmxpbmVDYXBhY2l0eSA9IGluZmVycmVk
SW5saW5lQ2FwYWNpdHk7CiAgICAgICAgICAgIGlmIChpbmxpbmVDYXBhY2l0eSA+IEpTRmluYWxP
YmplY3Q6Om1heElubGluZUNhcGFjaXR5KCkpCiAgICAgICAgICAgICAgICBpbmxpbmVDYXBhY2l0
eSA9IEpTRmluYWxPYmplY3Q6Om1heElubGluZUNhcGFjaXR5KCk7CiAgICAgICAgfQoKICAgICAg
ICAoKHZvaWQpMCk7CiAgICAgICAgKCh2b2lkKTApOwoKICAgICAgICBzaXplX3QgYWxsb2NhdGlv
blNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShpbmxpbmVDYXBhY2l0eSk7CiAg
ICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAmdm0uaGVhcC5hbGxvY2F0b3JGb3JP
YmplY3RXaXRob3V0RGVzdHJ1Y3RvcihhbGxvY2F0aW9uU2l6ZSk7CiAgICAgICAgKCh2b2lkKTAp
OwoKCiAgICAgICAgc2l6ZV90IHNsb3AgPSAoYWxsb2NhdG9yLT5jZWxsU2l6ZSgpIC0gYWxsb2Nh
dGlvblNpemUpIC8gc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CiAgICAgICAgaW5saW5l
Q2FwYWNpdHkgKz0gc2xvcDsKICAgICAgICBpZiAoaW5saW5lQ2FwYWNpdHkgPiBKU0ZpbmFsT2Jq
ZWN0OjptYXhJbmxpbmVDYXBhY2l0eSgpKQogICAgICAgICAgICBpbmxpbmVDYXBhY2l0eSA9IEpT
RmluYWxPYmplY3Q6Om1heElubGluZUNhcGFjaXR5KCk7CgogICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gdm0ucHJvdG90eXBlTWFwLmVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBl
KHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHkpOwoKCiAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVu
Y2UoKTsKCiAgICAgICAgbV9hbGxvY2F0b3IgPSBhbGxvY2F0b3I7CiAgICAgICAgbV9zdHJ1Y3R1
cmUuc2V0KHZtLCBvd25lciwgc3RydWN0dXJlKTsKICAgIH0KCiAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSgpCiAgICB7CiAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX3N0cnVjdHVyZS5n
ZXQoKTsKCiAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CiAgICAgICAgcmV0dXJuIHN0cnVj
dHVyZTsKICAgIH0KICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KCkgeyByZXR1cm4gc3RydWN0
dXJlKCktPmlubGluZUNhcGFjaXR5KCk7IH0KCiAgICB2b2lkIGNsZWFyKCkKICAgIHsKICAgICAg
ICBtX2FsbG9jYXRvciA9IDA7CiAgICAgICAgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsKICAgICAgICAo
KHZvaWQpMCk7CiAgICB9CgogICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlz
aXRvcikKICAgIHsKICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9zdHJ1Y3R1cmUpOwogICAgfQoK
cHJpdmF0ZToKCiAgICB1bnNpZ25lZCBwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KFZNJiB2
bSwgSlNPYmplY3QqIHByb3RvdHlwZSkKICAgIHsKICAgICAgICBpZiAocHJvdG90eXBlID09IHBy
b3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKQogICAgICAgICAgICBy
ZXR1cm4gMDsKCiAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICAgICBQcm9wZXJ0eU5hbWVB
cnJheSBwcm9wZXJ0eU5hbWVBcnJheSgmdm0sIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRT
eW1ib2xzKTsKICAgICAgICBwcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5nZXRQcm9wZXJ0eU5hbWVz
RnJvbVN0cnVjdHVyZSh2bSwgcHJvcGVydHlOYW1lQXJyYXksIEVudW1lcmF0aW9uTW9kZSgpKTsK
ICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFtZVZlY3RvciYgcHJvcGVy
dHlOYW1lVmVjdG9yID0gcHJvcGVydHlOYW1lQXJyYXkuZGF0YSgpLT5wcm9wZXJ0eU5hbWVWZWN0
b3IoKTsKICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZVZlY3Rvci5z
aXplKCk7ICsraSkgewogICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gcHJvdG90eXBlLT5nZXRE
aXJlY3Qodm0sIHByb3BlcnR5TmFtZVZlY3RvcltpXSk7CgoKICAgICAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZhbHVlKSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoK
ICAgICAgICAgICAgKytjb3VudDsKCiAgICAgICAgfQogICAgICAgIHJldHVybiBjb3VudDsKICAg
IH0KCiAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOwogICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7Cn07Cgp9CiMgMzIgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaCIgMgoKCm5hbWVzcGFjZSBKU0MgewoKY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CmNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKbmFtZXNwYWNl
IERGRyB7CmNsYXNzIFNwZWN1bGF0aXZlSklUOwpjbGFzcyBKSVRDb21waWxlcjsKfQoKY2xhc3Mg
RnVuY3Rpb25SYXJlRGF0YSA6IHB1YmxpYyBKU0NlbGwgewogICAgZnJpZW5kIGNsYXNzIEpJVDsK
ICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOwogICAgZnJpZW5kIGNsYXNzIERG
Rzo6SklUQ29tcGlsZXI7CiAgICBmcmllbmQgY2xhc3MgVk07CgpwdWJsaWM6CiAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
U3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwoKICAgIHN0YXRpYyBG
dW5jdGlvblJhcmVEYXRhKiBjcmVhdGUoVk0mKTsKCiAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7Cgog
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHByb3RvdHlwZSk7CgogICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwoKICAgIHByb3RlY3RlZDogc3RhdGljIGNvbnN0IDo6SlNDOjpD
bGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBp
bmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsKCiAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBv
ZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkKICAgIHsKICAgICAgICByZXR1cm4gKHJl
aW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25SYXJl
RGF0YSo+KDB4NDAwMCktPm1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGUpKSAtIDB4NDAwMCk7CiAg
ICB9CgogICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIG9iamVjdEFsbG9jYXRpb25Qcm9maWxl
KCkKICAgIHsKICAgICAgICByZXR1cm4gJm1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiAgICB9
CgogICAgU3RydWN0dXJlKiBvYmplY3RBbGxvY2F0aW9uU3RydWN0dXJlKCkgeyByZXR1cm4gbV9v
YmplY3RBbGxvY2F0aW9uUHJvZmlsZS5zdHJ1Y3R1cmUoKTsgfQoKICAgIElubGluZVdhdGNocG9p
bnRTZXQmIGFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpCiAgICB7CiAgICAgICAgcmV0
dXJuIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OwogICAgfQoKICAgIHZvaWQg
Y2xlYXIoY29uc3QgY2hhciogcmVhc29uKTsKCiAgICB2b2lkIGluaXRpYWxpemVPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZShWTSYsIEpTT2JqZWN0KiBwcm90b3R5cGUsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSk7CgogICAgYm9vbCBpc09iamVjdEFsbG9jYXRpb25Qcm9maWxlSW5pdGlhbGl6ZWQoKSB7
IHJldHVybiAhbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5pc051bGwoKTsgfQoKICAgIFN0cnVj
dHVyZSogaW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25TdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2lu
dGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5zdHJ1Y3R1cmUoKTsgfQogICAgU3RydWN0
dXJlKiBjcmVhdGVJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblN0cnVjdHVyZUZyb21CYXNlKFZN
JiB2bSwgSlNPYmplY3QqIHByb3RvdHlwZSwgU3RydWN0dXJlKiBiYXNlU3RydWN0dXJlKQogICAg
ewogICAgICAgIHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5jcmVh
dGVBbGxvY2F0aW9uU3RydWN0dXJlRnJvbUJhc2Uodm0sIHRoaXMsIHByb3RvdHlwZSwgYmFzZVN0
cnVjdHVyZSk7CiAgICB9CgogICAgU3RydWN0dXJlKiBnZXRCb3VuZEZ1bmN0aW9uU3RydWN0dXJl
KCkgeyByZXR1cm4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICB2b2lkIHNl
dEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeyBt
X2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBzdHJ1Y3R1cmUpOyB9CgogICAg
Ym9vbCBoYXNSZWlmaWVkTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNSZWlmaWVkTGVuZ3Ro
OyB9CiAgICB2b2lkIHNldEhhc1JlaWZpZWRMZW5ndGgoKSB7IG1faGFzUmVpZmllZExlbmd0aCA9
IHRydWU7IH0KICAgIGJvb2wgaGFzUmVpZmllZE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2hhc1Jl
aWZpZWROYW1lOyB9CiAgICB2b2lkIHNldEhhc1JlaWZpZWROYW1lKCkgeyBtX2hhc1JlaWZpZWRO
YW1lID0gdHJ1ZTsgfQoKcHJvdGVjdGVkOgogICAgRnVuY3Rpb25SYXJlRGF0YShWTSYpOwogICAg
fkZ1bmN0aW9uUmFyZURhdGEoKTsKCnByaXZhdGU6CgogICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIyAxMjIgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUmFyZURhdGEuaCIKICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlIG1fb2JqZWN0
QWxsb2NhdGlvblByb2ZpbGU7CiAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fb2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGVXYXRjaHBvaW50OwogICAgSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9m
aWxlIG1faW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlOwogICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlOwogICAgYm9vbCBtX2hhc1JlaWZp
ZWRMZW5ndGggeyBmYWxzZSB9OwogICAgYm9vbCBtX2hhc1JlaWZpZWROYW1lIHsgZmFsc2UgfTsK
fTsKCn0KIyAyOCAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oIiAyCgojIDEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVl
LmgiIDEKIyAyNyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUu
aCIKI2RlZmluZSBKU0NhbGxlZV9oIAoKIyAxICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIiAxCiMgMzAgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgiIDIKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBKU0ds
b2JhbE9iamVjdDsKY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwoKCmNsYXNzIEpTQ2FsbGVl
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgZnJpZW5kIGNsYXNzIEpJVDsKCiAgICBm
cmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJ
VENvbXBpbGVyOwoKICAgIGZyaWVuZCBjbGFzcyBWTTsKCnB1YmxpYzoKICAgIHR5cGVkZWYgSlNO
b25GaW5hbE9iamVjdCBCYXNlOwogICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlOwoKICAgIHN0YXRpYyBKU0NhbGxlZSogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogc2NvcGUpCiAgICB7
CiAgICAgICAgSlNDYWxsZWUqIGNhbGxlZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
Q2FsbGVlPih2bS5oZWFwKSkgSlNDYWxsZWUodm0sIHNjb3BlLCBnbG9iYWxPYmplY3QtPmNhbGxl
ZVN0cnVjdHVyZSgpKTsKICAgICAgICBjYWxsZWUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAg
ICByZXR1cm4gY2FsbGVlOwogICAgfQoKICAgIEpTU2NvcGUqIHNjb3BlKCkKICAgIHsKICAgICAg
ICByZXR1cm4gbV9zY29wZS5nZXQoKTsKICAgIH0KCgoKCgoKICAgIEpTU2NvcGUqIHNjb3BlVW5j
aGVja2VkKCkKICAgIHsKICAgICAgICByZXR1cm4gbV9zY29wZS5nZXQoKTsKICAgIH0KCiAgICB2
b2lkIHNldFNjb3BlKFZNJiB2bSwgSlNTY29wZSogc2NvcGUpCiAgICB7CiAgICAgICAgbV9zY29w
ZS5zZXQodm0sIHRoaXMsIHNjb3BlKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBjb25z
dCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3QgOjpKU0M6OkNs
YXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07CgogICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KEpTQ2FsbGVlVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgfQoKICAgIHN0YXRp
YyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mU2NvcGVDaGFpbigpCiAgICB7CiAgICAgICAgcmV0
dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEpTQ2Fs
bGVlKj4oMHg0MDAwKS0+bV9zY29wZSkpIC0gMHg0MDAwKTsKICAgIH0KCnByb3RlY3RlZDoKICAg
IEpTQ2FsbGVlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgIEpTQ2FsbGVl
KFZNJiwgSlNTY29wZSosIFN0cnVjdHVyZSopOwoKICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKICAgIHVzaW5nIEJhc2U6OmZpbmlzaENyZWF0aW9uOwoKICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKCnByaXZhdGU6CiAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwoKICAgIFdyaXRlQmFycmllcjxKU1Njb3BlPiBtX3Nj
b3BlOwp9OwoKfQojIDMwICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmgiIDIKCgoKbmFtZXNwYWNlIEpTQyB7CgpjbGFzcyBFeGVjdXRhYmxlQmFzZTsKY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOwpjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKY2xhc3MgSlNM
ZXhpY2FsRW52aXJvbm1lbnQ7CmNsYXNzIEpTR2xvYmFsT2JqZWN0OwpjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CmNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CmNsYXNzIFNvdXJjZUNvZGU7CmNs
YXNzIFdlYkFzc2VtYmx5RXhlY3V0YWJsZTsKY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKbmFtZXNw
YWNlIERGRyB7CmNsYXNzIFNwZWN1bGF0aXZlSklUOwpjbGFzcyBKSVRDb21waWxlcjsKfQoKIEVu
Y29kZWRKU1ZhbHVlIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwoK
IFN0cmluZyBnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUoQ2FsbEZyYW1lKiwgSlNPYmplY3QqKTsK
CmNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAgZnJpZW5kIGNsYXNzIEpJ
VDsKICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOwogICAgZnJpZW5kIGNsYXNz
IERGRzo6SklUQ29tcGlsZXI7CiAgICBmcmllbmQgY2xhc3MgVk07CiAgICBmcmllbmQgY2xhc3Mg
SW50ZXJuYWxGdW5jdGlvbjsKCnB1YmxpYzoKICAgIHR5cGVkZWYgSlNDYWxsZWUgQmFzZTsKICAg
IGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlO
YW1lczsKCiAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSkKICAgIHsKICAgICAgICAoKHZvaWQpaW5saW5lQ2FwYWNpdHkpOwogICAgICAgIHJldHVy
biBzaXplb2YoSlNGdW5jdGlvbik7CiAgICB9CgogICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBO
YXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5h
dGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOwoKICAgIHN0
YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOwoKICAgIHN0YXRpYyBKU0Z1
bmN0aW9uKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CiAgICBz
dGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29w
ZSosIFN0cnVjdHVyZSopOwoKCgoKICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGVCdWlsdGlu
RnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCopOwogICAg
c3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhl
Y3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKCiAgICBTdHJp
bmcgbmFtZSgpOwogICAgU3RyaW5nIGRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSopOwogICAgY29uc3Qg
U3RyaW5nIGNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKCiAgICBFeGVjdXRhYmxl
QmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0YWJsZS5nZXQoKTsgfQoK
CiAgICBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3Q7CiAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGpzRXhlY3V0YWJsZSgpIGNvbnN0OwogICAgSW50cmluc2ljIGludHJpbnNpYygpIGNvbnN0OwoK
ICAgIGNvbnN0IFNvdXJjZUNvZGUqIHNvdXJjZUNvZGUoKSBjb25zdDsKCiAgICBwcm90ZWN0ZWQ6
IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29u
c3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07CgogICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICB7CiAgICAgICAgKCh2b2lkKTApOwog
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAg
ICB9CgogICAgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24oKTsKICAgIE5hdGl2ZUZ1bmN0
aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKCk7CgogICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29u
c3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAgICBzdGF0aWMgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKCiAgICBzdGF0aWMgaW5saW5lIHB0cmRp
ZmZfdCBvZmZzZXRPZkV4ZWN1dGFibGUoKQogICAgewogICAgICAgIHJldHVybiAocmVpbnRlcnBy
ZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxKU0Z1bmN0aW9uKj4oMHg0MDAw
KS0+bV9leGVjdXRhYmxlKSkgLSAweDQwMDApOwogICAgfQoKICAgIHN0YXRpYyBpbmxpbmUgcHRy
ZGlmZl90IG9mZnNldE9mUmFyZURhdGEoKQogICAgewogICAgICAgIHJldHVybiAocmVpbnRlcnBy
ZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxKU0Z1bmN0aW9uKj4oMHg0MDAw
KS0+bV9yYXJlRGF0YSkpIC0gMHg0MDAwKTsKICAgIH0KCiAgICBGdW5jdGlvblJhcmVEYXRhKiBy
YXJlRGF0YShWTSYgdm0pCiAgICB7CiAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoIW1f
cmFyZURhdGEpLCAwKSkKICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlUmFyZURhdGEodm0pOwog
ICAgICAgIHJldHVybiBtX3JhcmVEYXRhLmdldCgpOwogICAgfQoKICAgIEZ1bmN0aW9uUmFyZURh
dGEqIHJhcmVEYXRhKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpCiAg
ICB7CiAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoIW1fcmFyZURhdGEpLCAwKSkKICAg
ICAgICAgICAgcmV0dXJuIGFsbG9jYXRlQW5kSW5pdGlhbGl6ZVJhcmVEYXRhKGV4ZWMsIGlubGlu
ZUNhcGFjaXR5KTsKICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCghISghbV9yYXJlRGF0YS0+
aXNPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUluaXRpYWxpemVkKCkpLCAwKSkKICAgICAgICAgICAg
cmV0dXJuIGluaXRpYWxpemVSYXJlRGF0YShleGVjLCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgICAg
cmV0dXJuIG1fcmFyZURhdGEuZ2V0KCk7CiAgICB9CgogICAgRnVuY3Rpb25SYXJlRGF0YSogcmFy
ZURhdGEoKQogICAgewogICAgICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gbV9yYXJl
RGF0YS5nZXQoKTsKCgoKICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKCiAgICAgICAgcmV0
dXJuIHJhcmVEYXRhOwogICAgfQoKICAgIGJvb2wgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBj
b25zdDsKICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdDsKICAgIGJvb2wgaXNIb3N0
RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVu
Y3Rpb24oKSBjb25zdDsKCiAgICB2b2lkIHNldEZ1bmN0aW9uTmFtZShFeGVjU3RhdGUqLCBKU1Zh
bHVlIG5hbWUpOwoKcHJvdGVjdGVkOgogICAgSlNGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKik7CiAgICBKU0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwg
SlNTY29wZSosIFN0cnVjdHVyZSopOwoKCgoKCiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
TmF0aXZlRXhlY3V0YWJsZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICB1
c2luZyBCYXNlOjpmaW5pc2hDcmVhdGlvbjsKCiAgICBGdW5jdGlvblJhcmVEYXRhKiBhbGxvY2F0
ZVJhcmVEYXRhKFZNJik7CiAgICBGdW5jdGlvblJhcmVEYXRhKiBhbGxvY2F0ZUFuZEluaXRpYWxp
emVSYXJlRGF0YShFeGVjU3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOwogICAgRnVuY3Rp
b25SYXJlRGF0YSogaW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSosIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSk7CgogICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgIHN0YXRpYyB2b2lk
IGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51bWVyYXRpb25Nb2RlKCkpOwogICAg
c3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwoK
ICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwoKICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CgogICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwoKCiAgICBzdGF0aWMgTmF0aXZlRXhl
Y3V0YWJsZSogbG9va1VwT3JDcmVhdGVOYXRpdmVFeGVjdXRhYmxlKFZNJiwgTmF0aXZlRnVuY3Rp
b24sIEludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IsIGNvbnN0IFN0
cmluZyYgbmFtZSk7Cgpwcml2YXRlOgogICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZUltcGwo
Vk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgIHsKICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtLmhlYXApKSBKU0Z1bmN0
aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKTsKICAgICAgICAoKHZvaWQpMCk7
CiAgICAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICByZXR1cm4gZnVu
Y3Rpb247CiAgICB9CgogICAgYm9vbCBoYXNSZWlmaWVkTGVuZ3RoKCkgY29uc3Q7CiAgICBib29s
IGhhc1JlaWZpZWROYW1lKCkgY29uc3Q7CiAgICB2b2lkIHJlaWZ5TGVuZ3RoKEV4ZWNTdGF0ZSop
OwogICAgdm9pZCByZWlmeU5hbWUoRXhlY1N0YXRlKik7CiAgICB2b2lkIHJlaWZ5TmFtZShFeGVj
U3RhdGUqLCBTdHJpbmcgbmFtZSk7CiAgICB2b2lkIHJlaWZ5TGF6eVByb3BlcnR5SWZOZWVkZWQo
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSk7CgogICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKCiAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgYXJndW1l
bnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogICAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKTsKICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5ndGhHZXR0
ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAgICBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgbmFtZUdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJv
cGVydHlOYW1lKTsKCiAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1fZXhlY3V0YWJs
ZTsKICAgIFdyaXRlQmFycmllcjxGdW5jdGlvblJhcmVEYXRhPiBtX3JhcmVEYXRhOwp9OwoKfQoj
IDM2ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oIiAyCgoKbmFtZXNwYWNlIEpTQyB7CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18pKSBpbnQzMl90IEpTVmFsdWU6OnRvSW50MzIoRXhlY1N0YXRlKiBleGVjKSBjb25z
dAp7CiAgICBpZiAoaXNJbnQzMigpKQogICAgICAgIHJldHVybiBhc0ludDMyKCk7CiAgICByZXR1
cm4gSlNDOjp0b0ludDMyKHRvTnVtYmVyKGV4ZWMpKTsKfQoKaW5saW5lIHVpbnQzMl90IEpTVmFs
dWU6OnRvVUludDMyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKewoKICAgIHJldHVybiB0b0ludDMy
KGV4ZWMpOwp9CgppbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1VJbnQzMigpIGNvbnN0CnsKICAgIHJl
dHVybiBpc0ludDMyKCkgJiYgYXNJbnQzMigpID49IDA7Cn0KCmlubGluZSB1aW50MzJfdCBKU1Zh
bHVlOjphc1VJbnQzMigpIGNvbnN0CnsKICAgICgodm9pZCkwKTsKICAgIHJldHVybiBhc0ludDMy
KCk7Cn0KCmlubGluZSBkb3VibGUgSlNWYWx1ZTo6YXNOdW1iZXIoKSBjb25zdAp7CiAgICAoKHZv
aWQpMCk7CiAgICByZXR1cm4gaXNJbnQzMigpID8gYXNJbnQzMigpIDogYXNEb3VibGUoKTsKfQoK
aW5saW5lIEpTVmFsdWUganNOYU4oKQp7CiAgICByZXR1cm4gSlNWYWx1ZSgocHVyZU5hTigpKSk7
Cn0KCmlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGNoYXIgaSkKewogICAgKnRoaXMgPSBKU1ZhbHVl
KHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKfQoKaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUodW5z
aWduZWQgY2hhciBpKQp7CiAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
aSkpOwp9CgppbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShzaG9ydCBpKQp7CiAgICAqdGhpcyA9IEpT
VmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOwp9CgppbmxpbmUgSlNWYWx1ZTo6SlNWYWx1
ZSh1bnNpZ25lZCBzaG9ydCBpKQp7CiAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oaSkpOwp9CgppbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZSh1bnNpZ25lZCBpKQp7CiAgICBp
ZiAoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkgPCAwKSB7CiAgICAgICAgKnRoaXMgPSBKU1ZhbHVl
KEVuY29kZUFzRG91YmxlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGkpKTsKICAgICAgICByZXR1cm47
CiAgICB9CiAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOwp9Cgpp
bmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShsb25nIGkpCnsKICAgIGlmIChzdGF0aWNfY2FzdDxpbnQz
Ml90PihpKSAhPSBpKSB7CiAgICAgICAgKnRoaXMgPSBKU1ZhbHVlKEVuY29kZUFzRG91YmxlLCBz
dGF0aWNfY2FzdDxkb3VibGU+KGkpKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICAqdGhpcyA9
IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOwp9CgppbmxpbmUgSlNWYWx1ZTo6SlNW
YWx1ZSh1bnNpZ25lZCBsb25nIGkpCnsKICAgIGlmIChzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkg
IT0gaSkgewogICAgICAgICp0aGlzID0gSlNWYWx1ZShFbmNvZGVBc0RvdWJsZSwgc3RhdGljX2Nh
c3Q8ZG91YmxlPihpKSk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgKnRoaXMgPSBKU1ZhbHVl
KHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSk7Cn0KCmlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGxv
bmcgbG9uZyBpKQp7CiAgICBpZiAoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkgIT0gaSkgewogICAg
ICAgICp0aGlzID0gSlNWYWx1ZShFbmNvZGVBc0RvdWJsZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihp
KSk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0
PGludDMyX3Q+KGkpKTsKfQoKaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUodW5zaWduZWQgbG9uZyBs
b25nIGkpCnsKICAgIGlmIChzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkgIT0gaSkgewogICAgICAg
ICp0aGlzID0gSlNWYWx1ZShFbmNvZGVBc0RvdWJsZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7
CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PHVp
bnQzMl90PihpKSk7Cn0KCmlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGRvdWJsZSBkKQp7CiAgICBj
b25zdCBpbnQzMl90IGFzSW50MzIgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihkKTsKICAgIGlmIChh
c0ludDMyICE9IGQgfHwgKCFhc0ludDMyICYmIHN0ZDo6c2lnbmJpdChkKSkpIHsKICAgICAgICAq
dGhpcyA9IEpTVmFsdWUoRW5jb2RlQXNEb3VibGUsIGQpOwogICAgICAgIHJldHVybjsKICAgIH0K
ICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90PihkKSk7Cn0KCmlubGluZSBF
bmNvZGVkSlNWYWx1ZSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSB2YWx1ZSkKewogICAgcmV0dXJu
IHZhbHVlLnUuYXNJbnQ2NDsKfQoKaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6ZGVjb2RlKEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRKU1ZhbHVlKQp7CiAgICBKU1ZhbHVlIHY7CiAgICB2LnUuYXNJbnQ2
NCA9IGVuY29kZWRKU1ZhbHVlOwogICAgcmV0dXJuIHY7Cn0KCgppbmxpbmUgSlNWYWx1ZTo6SlNW
YWx1ZSgpCnsKICAgIHUuYXNCaXRzLnRhZyA9IEVtcHR5VmFsdWVUYWc7CiAgICB1LmFzQml0cy5w
YXlsb2FkID0gMDsKfQoKaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNOdWxsVGFnKQp7CiAgICB1
LmFzQml0cy50YWcgPSBOdWxsVGFnOwogICAgdS5hc0JpdHMucGF5bG9hZCA9IDA7Cn0KCmlubGlu
ZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTVW5kZWZpbmVkVGFnKQp7CiAgICB1LmFzQml0cy50YWcgPSBV
bmRlZmluZWRUYWc7CiAgICB1LmFzQml0cy5wYXlsb2FkID0gMDsKfQoKaW5saW5lIEpTVmFsdWU6
OkpTVmFsdWUoSlNUcnVlVGFnKQp7CiAgICB1LmFzQml0cy50YWcgPSBCb29sZWFuVGFnOwogICAg
dS5hc0JpdHMucGF5bG9hZCA9IDE7Cn0KCmlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTRmFsc2VU
YWcpCnsKICAgIHUuYXNCaXRzLnRhZyA9IEJvb2xlYW5UYWc7CiAgICB1LmFzQml0cy5wYXlsb2Fk
ID0gMDsKfQoKaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFn
KQp7CiAgICB1LmFzQml0cy50YWcgPSBEZWxldGVkVmFsdWVUYWc7CiAgICB1LmFzQml0cy5wYXls
b2FkID0gMDsKfQoKaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoSlNDZWxsKiBwdHIpCnsKICAgIGlm
IChwdHIpCiAgICAgICAgdS5hc0JpdHMudGFnID0gQ2VsbFRhZzsKICAgIGVsc2UKICAgICAgICB1
LmFzQml0cy50YWcgPSBFbXB0eVZhbHVlVGFnOwogICAgdS5hc0JpdHMucGF5bG9hZCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8aW50MzJfdD4ocHRyKTsKfQoKaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoY29u
c3QgSlNDZWxsKiBwdHIpCnsKICAgIGlmIChwdHIpCiAgICAgICAgdS5hc0JpdHMudGFnID0gQ2Vs
bFRhZzsKICAgIGVsc2UKICAgICAgICB1LmFzQml0cy50YWcgPSBFbXB0eVZhbHVlVGFnOwogICAg
dS5hc0JpdHMucGF5bG9hZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdD4oY29uc3RfY2FzdDxK
U0NlbGwqPihwdHIpKTsKfQoKaW5saW5lIEpTVmFsdWU6Om9wZXJhdG9yIGJvb2woKSBjb25zdAp7
CiAgICAoKHZvaWQpMCk7CiAgICByZXR1cm4gdGFnKCkgIT0gRW1wdHlWYWx1ZVRhZzsKfQoKaW5s
aW5lIGJvb2wgSlNWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3QK
ewogICAgcmV0dXJuIHUuYXNJbnQ2NCA9PSBvdGhlci51LmFzSW50NjQ7Cn0KCmlubGluZSBib29s
IEpTVmFsdWU6Om9wZXJhdG9yIT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0CnsKICAgIHJl
dHVybiB1LmFzSW50NjQgIT0gb3RoZXIudS5hc0ludDY0Owp9CgppbmxpbmUgYm9vbCBKU1ZhbHVl
Ojppc0VtcHR5KCkgY29uc3QKewogICAgcmV0dXJuIHRhZygpID09IEVtcHR5VmFsdWVUYWc7Cn0K
CmlubGluZSBib29sIEpTVmFsdWU6OmlzVW5kZWZpbmVkKCkgY29uc3QKewogICAgcmV0dXJuIHRh
ZygpID09IFVuZGVmaW5lZFRhZzsKfQoKaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNOdWxsKCkgY29u
c3QKewogICAgcmV0dXJuIHRhZygpID09IE51bGxUYWc7Cn0KCmlubGluZSBib29sIEpTVmFsdWU6
OmlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3QKewogICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgfHwg
aXNOdWxsKCk7Cn0KCmlubGluZSBib29sIEpTVmFsdWU6OmlzQ2VsbCgpIGNvbnN0CnsKICAgIHJl
dHVybiB0YWcoKSA9PSBDZWxsVGFnOwp9CgppbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0ludDMyKCkg
Y29uc3QKewogICAgcmV0dXJuIHRhZygpID09IEludDMyVGFnOwp9CgppbmxpbmUgYm9vbCBKU1Zh
bHVlOjppc0RvdWJsZSgpIGNvbnN0CnsKICAgIHJldHVybiB0YWcoKSA8IExvd2VzdFRhZzsKfQoK
aW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNUcnVlKCkgY29uc3QKewogICAgcmV0dXJuIHRhZygpID09
IEJvb2xlYW5UYWcgJiYgcGF5bG9hZCgpOwp9CgppbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0ZhbHNl
KCkgY29uc3QKewogICAgcmV0dXJuIHRhZygpID09IEJvb2xlYW5UYWcgJiYgIXBheWxvYWQoKTsK
fQoKaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRhZygpIGNvbnN0CnsKICAgIHJldHVybiB1LmFz
Qml0cy50YWc7Cn0KCmlubGluZSBpbnQzMl90IEpTVmFsdWU6OnBheWxvYWQoKSBjb25zdAp7CiAg
ICByZXR1cm4gdS5hc0JpdHMucGF5bG9hZDsKfQoKaW5saW5lIGludDMyX3QgSlNWYWx1ZTo6YXNJ
bnQzMigpIGNvbnN0CnsKICAgICgodm9pZCkwKTsKICAgIHJldHVybiB1LmFzQml0cy5wYXlsb2Fk
Owp9CgppbmxpbmUgZG91YmxlIEpTVmFsdWU6OmFzRG91YmxlKCkgY29uc3QKewogICAgKCh2b2lk
KTApOwogICAgcmV0dXJuIHUuYXNEb3VibGU7Cn0KCmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXykpIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgY29uc3QKewogICAgKCh2
b2lkKTApOwogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odS5hc0JpdHMucGF5
bG9hZCk7Cn0KCmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIEpTVmFs
dWU6OkpTVmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSBkKQp7CiAgICAoKHZvaWQpMCk7
CiAgICB1LmFzRG91YmxlID0gZDsKfQoKaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoaW50IGkpCnsK
ICAgIHUuYXNCaXRzLnRhZyA9IEludDMyVGFnOwogICAgdS5hc0JpdHMucGF5bG9hZCA9IGk7Cn0K
IyAzMjYgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmgiCmlubGluZSBib29sIEpTVmFsdWU6OmlzTnVtYmVyKCkgY29uc3QKewogICAgcmV0dXJu
IGlzSW50MzIoKSB8fCBpc0RvdWJsZSgpOwp9CgppbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Jvb2xl
YW4oKSBjb25zdAp7CiAgICByZXR1cm4gdGFnKCkgPT0gQm9vbGVhblRhZzsKfQoKaW5saW5lIGJv
b2wgSlNWYWx1ZTo6YXNCb29sZWFuKCkgY29uc3QKewogICAgKCh2b2lkKTApOwogICAgcmV0dXJu
IHBheWxvYWQoKTsKfQojIDUwMyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaCIKaW5saW5lIGludDY0X3QgdHJ5Q29udmVydFRvSW50NTIoZG91
YmxlIG51bWJlcikKewogICAgaWYgKG51bWJlciAhPSBudW1iZXIpCiAgICAgICAgcmV0dXJuIEpT
VmFsdWU6Om5vdEludDUyOwojIDUxNiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaCIKICAgIGludDY0X3QgYXNJbnQ2NCA9IHN0YXRpY19jYXN0
PGludDY0X3Q+KG51bWJlcik7CiAgICBpZiAoYXNJbnQ2NCAhPSBudW1iZXIpCiAgICAgICAgcmV0
dXJuIEpTVmFsdWU6Om5vdEludDUyOwogICAgaWYgKCFhc0ludDY0ICYmIHN0ZDo6c2lnbmJpdChu
dW1iZXIpKQogICAgICAgIHJldHVybiBKU1ZhbHVlOjpub3RJbnQ1MjsKICAgIGlmIChhc0ludDY0
ID49IChzdGF0aWNfY2FzdDxpbnQ2NF90PigxKSA8PCAoSlNWYWx1ZTo6bnVtYmVyT2ZJbnQ1MkJp
dHMgLSAxKSkpCiAgICAgICAgcmV0dXJuIEpTVmFsdWU6Om5vdEludDUyOwogICAgaWYgKGFzSW50
NjQgPCAtKHN0YXRpY19jYXN0PGludDY0X3Q+KDEpIDw8IChKU1ZhbHVlOjpudW1iZXJPZkludDUy
Qml0cyAtIDEpKSkKICAgICAgICByZXR1cm4gSlNWYWx1ZTo6bm90SW50NTI7CiAgICByZXR1cm4g
YXNJbnQ2NDsKfQoKaW5saW5lIGJvb2wgaXNJbnQ1Mihkb3VibGUgbnVtYmVyKQp7CiAgICByZXR1
cm4gdHJ5Q29udmVydFRvSW50NTIobnVtYmVyKSAhPSBKU1ZhbHVlOjpub3RJbnQ1MjsKfQoKaW5s
aW5lIGJvb2wgSlNWYWx1ZTo6aXNBbnlJbnQoKSBjb25zdAp7CiAgICBpZiAoaXNJbnQzMigpKQog
ICAgICAgIHJldHVybiB0cnVlOwogICAgaWYgKCFpc051bWJlcigpKQogICAgICAgIHJldHVybiBm
YWxzZTsKICAgIHJldHVybiBpc0ludDUyKGFzRG91YmxlKCkpOwp9CgppbmxpbmUgaW50NjRfdCBK
U1ZhbHVlOjphc0FueUludCgpIGNvbnN0CnsKICAgICgodm9pZCkwKTsKICAgIGlmIChpc0ludDMy
KCkpCiAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2
NF90Pihhc0RvdWJsZSgpKTsKfQoKaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTdHJpbmcoKSBjb25z
dAp7CiAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3RyaW5nKCk7Cn0KCmlubGlu
ZSBib29sIEpTVmFsdWU6OmlzU3ltYm9sKCkgY29uc3QKewogICAgcmV0dXJuIGlzQ2VsbCgpICYm
IGFzQ2VsbCgpLT5pc1N5bWJvbCgpOwp9CgppbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1ByaW1pdGl2
ZSgpIGNvbnN0CnsKICAgIHJldHVybiAhaXNDZWxsKCkgfHwgYXNDZWxsKCktPmlzU3RyaW5nKCkg
fHwgYXNDZWxsKCktPmlzU3ltYm9sKCk7Cn0KCmlubGluZSBib29sIEpTVmFsdWU6OmlzR2V0dGVy
U2V0dGVyKCkgY29uc3QKewogICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc0dldHRl
clNldHRlcigpOwp9CgppbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0N1c3RvbUdldHRlclNldHRlcigp
IGNvbnN0CnsKICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNDdXN0b21HZXR0ZXJT
ZXR0ZXIoKTsKfQoKaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNPYmplY3QoKSBjb25zdAp7CiAgICBy
ZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzT2JqZWN0KCk7Cn0KCmlubGluZSBib29sIEpT
VmFsdWU6OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZyYgcykgY29uc3QKewogICAg
cmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5nZXRTdHJpbmcoZXhlYywgcyk7Cn0KCmlubGlu
ZSBTdHJpbmcgSlNWYWx1ZTo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKewogICAg
cmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPmdldFN0cmluZyhleGVjKSA6IFN0cmluZygpOwp9
Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgQmFzZT4gU3RyaW5nIEhhbmRsZUNvbnZlcnRlcjxCYXNlLCBV
bmtub3duPjo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKewogICAgcmV0dXJuIGpz
VmFsdWUoKS5nZXRTdHJpbmcoZXhlYyk7Cn0KCmlubGluZSBKU09iamVjdCogSlNWYWx1ZTo6Z2V0
T2JqZWN0KCkgY29uc3QKewogICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPmdldE9iamVj
dCgpIDogMDsKfQoKaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9v
bCBKU1ZhbHVlOjpnZXRVSW50MzIodWludDMyX3QmIHYpIGNvbnN0CnsKICAgIGlmIChpc0ludDMy
KCkpIHsKICAgICAgICBpbnQzMl90IGkgPSBhc0ludDMyKCk7CiAgICAgICAgdiA9IHN0YXRpY19j
YXN0PHVpbnQzMl90PihpKTsKICAgICAgICByZXR1cm4gaSA+PSAwOwogICAgfQogICAgaWYgKGlz
RG91YmxlKCkpIHsKICAgICAgICBkb3VibGUgZCA9IGFzRG91YmxlKCk7CiAgICAgICAgdiA9IHN0
YXRpY19jYXN0PHVpbnQzMl90PihkKTsKICAgICAgICByZXR1cm4gdiA9PSBkOwogICAgfQogICAg
cmV0dXJuIGZhbHNlOwp9CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p
KSBJZGVudGlmaWVyIEpTVmFsdWU6OnRvUHJvcGVydHlLZXkoRXhlY1N0YXRlKiBleGVjKSBjb25z
dAp7CiAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICByZXR1cm4gYXNTdHJpbmcoKnRoaXMpLT50
b0lkZW50aWZpZXIoZXhlYyk7CgogICAgSlNWYWx1ZSBwcmltaXRpdmUgPSB0b1ByaW1pdGl2ZShl
eGVjLCBQcmVmZXJTdHJpbmcpOwogICAgaWYgKHByaW1pdGl2ZS5pc1N5bWJvbCgpKQogICAgICAg
IHJldHVybiBJZGVudGlmaWVyOjpmcm9tVWlkKGFzU3ltYm9sKHByaW1pdGl2ZSktPnByaXZhdGVO
YW1lKCkpOwogICAgcmV0dXJuIHByaW1pdGl2ZS50b1N0cmluZyhleGVjKS0+dG9JZGVudGlmaWVy
KGV4ZWMpOwp9CgppbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUq
IGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgcHJlZmVycmVkVHlwZSkgY29uc3QKewogICAg
cmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJlZFR5
cGUpIDogYXNWYWx1ZSgpOwp9CgppbmxpbmUgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSB0b1ByZWZl
cnJlZFByaW1pdGl2ZVR5cGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBp
ZiAoIXZhbHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiUHJp
bWl0aXZlIGhpbnQgaXMgbm90IGEgc3RyaW5nLiIpOwogICAgICAgIHJldHVybiBOb1ByZWZlcmVu
Y2U7CiAgICB9CgogICAgU3RyaW5nSW1wbCogaGludFN0cmluZyA9IGpzQ2FzdDxKU1N0cmluZyo+
KHZhbHVlKS0+dmFsdWUoZXhlYykuaW1wbCgpOwogICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgIHJldHVybiBOb1ByZWZlcmVuY2U7CgogICAgaWYgKFdURjo6ZXF1YWwoaGludFN0
cmluZywgImRlZmF1bHQiKSkKICAgICAgICByZXR1cm4gTm9QcmVmZXJlbmNlOwogICAgaWYgKFdU
Rjo6ZXF1YWwoaGludFN0cmluZywgIm51bWJlciIpKQogICAgICAgIHJldHVybiBQcmVmZXJOdW1i
ZXI7CiAgICBpZiAoV1RGOjplcXVhbChoaW50U3RyaW5nLCAic3RyaW5nIikpCiAgICAgICAgcmV0
dXJuIFByZWZlclN0cmluZzsKCiAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgcHJp
bWl0aXZlIGhpbnQgdG8gbWF0Y2ggb25lIG9mICdkZWZhdWx0JywgJ251bWJlcicsICdzdHJpbmcn
LiIpOwogICAgcmV0dXJuIE5vUHJlZmVyZW5jZTsKfQoKaW5saW5lIGJvb2wgSlNWYWx1ZTo6Z2V0
UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUm
IHZhbHVlKQp7CiAgICBpZiAoaXNJbnQzMigpKSB7CiAgICAgICAgbnVtYmVyID0gYXNJbnQzMigp
OwogICAgICAgIHZhbHVlID0gKnRoaXM7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBp
ZiAoaXNEb3VibGUoKSkgewogICAgICAgIG51bWJlciA9IGFzRG91YmxlKCk7CiAgICAgICAgdmFs
dWUgPSAqdGhpczsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGlmIChpc0NlbGwoKSkK
ICAgICAgICByZXR1cm4gYXNDZWxsKCktPmdldFByaW1pdGl2ZU51bWJlcihleGVjLCBudW1iZXIs
IHZhbHVlKTsKICAgIGlmIChpc1RydWUoKSkgewogICAgICAgIG51bWJlciA9IDEuMDsKICAgICAg
ICB2YWx1ZSA9ICp0aGlzOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgaWYgKGlzRmFs
c2UoKSB8fCBpc051bGwoKSkgewogICAgICAgIG51bWJlciA9IDAuMDsKICAgICAgICB2YWx1ZSA9
ICp0aGlzOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgKCh2b2lkKTApOwogICAgbnVt
YmVyID0gKHB1cmVOYU4oKSk7CiAgICB2YWx1ZSA9ICp0aGlzOwogICAgcmV0dXJuIHRydWU7Cn0K
CmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGRvdWJsZSBKU1ZhbHVl
Ojp0b051bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CnsKICAgIGlmIChpc0ludDMyKCkpCiAg
ICAgICAgcmV0dXJuIGFzSW50MzIoKTsKICAgIGlmIChpc0RvdWJsZSgpKQogICAgICAgIHJldHVy
biBhc0RvdWJsZSgpOwogICAgcmV0dXJuIHRvTnVtYmVyU2xvd0Nhc2UoZXhlYyk7Cn0KCmlubGlu
ZSBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3QoRXhlY1N0YXRlKiBleGVjKSBjb25zdAp7CiAg
ICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKSA6IHRvT2JqZWN0U2xvd0Nhc2UoZXhlYywgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKTsKfQoKaW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdChFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CnsKICAgIHJl
dHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT50b09iamVjdChleGVjLCBnbG9iYWxPYmplY3QpIDog
dG9PYmplY3RTbG93Q2FzZShleGVjLCBnbG9iYWxPYmplY3QpOwp9CgppbmxpbmUgYm9vbCBKU1Zh
bHVlOjppc0Z1bmN0aW9uKCkgY29uc3QKewogICAgaWYgKCFpc0NlbGwoKSkKICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICBKU0NlbGwqIGNlbGwgPSBhc0NlbGwoKTsKICAgIENhbGxEYXRhIGlnbm9y
ZWQ7CiAgICByZXR1cm4gY2VsbC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoY2VsbCwgaWdu
b3JlZCkgIT0gQ2FsbFR5cGU6Ok5vbmU7Cn0KCmlubGluZSBib29sIEpTVmFsdWU6OmlzRnVuY3Rp
b24oQ2FsbFR5cGUmIGNhbGxUeXBlLCBDYWxsRGF0YSYgY2FsbERhdGEpIGNvbnN0CnsKICAgIHJl
dHVybiBpc0NhbGxhYmxlKGNhbGxUeXBlLCBjYWxsRGF0YSk7Cn0KCmlubGluZSBib29sIEpTVmFs
dWU6OmlzQ2FsbGFibGUoQ2FsbFR5cGUmIGNhbGxUeXBlLCBDYWxsRGF0YSYgY2FsbERhdGEpIGNv
bnN0CnsKICAgIGlmICghaXNDZWxsKCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgSlNDZWxs
KiBjZWxsID0gYXNDZWxsKCk7CiAgICBjYWxsVHlwZSA9IGNlbGwtPm1ldGhvZFRhYmxlKCktPmdl
dENhbGxEYXRhKGNlbGwsIGNhbGxEYXRhKTsKICAgIHJldHVybiBjYWxsVHlwZSAhPSBDYWxsVHlw
ZTo6Tm9uZTsKfQoKaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNDb25zdHJ1Y3RvcigpIGNvbnN0CnsK
ICAgIGlmICghaXNDZWxsKCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgSlNDZWxsKiBjZWxs
ID0gYXNDZWxsKCk7CiAgICBDb25zdHJ1Y3REYXRhIGlnbm9yZWQ7CiAgICByZXR1cm4gY2VsbC0+
bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShjZWxsLCBpZ25vcmVkKSAhPSBDb25zdHJ1
Y3RUeXBlOjpOb25lOwp9CgppbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0NvbnN0cnVjdG9yKENvbnN0
cnVjdFR5cGUmIGNvbnN0cnVjdFR5cGUsIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpIGNv
bnN0CnsKICAgIGlmICghaXNDZWxsKCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgSlNDZWxs
KiBjZWxsID0gYXNDZWxsKCk7CiAgICBjb25zdHJ1Y3RUeXBlID0gY2VsbC0+bWV0aG9kVGFibGUo
KS0+Z2V0Q29uc3RydWN0RGF0YShjZWxsLCBjb25zdHJ1Y3REYXRhKTsKICAgIHJldHVybiBjb25z
dHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmU7Cn0KCgppbmxpbmUgYm9vbCBKU1ZhbHVl
Ojppbmhlcml0cyhjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykgY29uc3QKewogICAgcmV0dXJu
IGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pbmhlcml0cyhjbGFzc0luZm8pOwp9CgppbmxpbmUgY29u
c3QgQ2xhc3NJbmZvKiBKU1ZhbHVlOjpjbGFzc0luZm9Pck51bGwoKSBjb25zdAp7CiAgICByZXR1
cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+Y2xhc3NJbmZvKCkgOiBudWxscHRyOwp9CgppbmxpbmUg
SlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXMoRXhlY1N0YXRlKiBleGVjLCBFQ01BTW9kZSBlY21hTW9k
ZSkgY29uc3QKewogICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT50b1RoaXMoYXNDZWxsKCksIGV4ZWMsIGVjbWFNb2RlKSA6IHRvVGhpc1Nsb3dD
YXNlKGV4ZWMsIGVjbWFNb2RlKTsKfQoKaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fKSkgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKSBjb25zdAp7CiAgICBQcm9wZXJ0eVNsb3Qgc2xvdChhc1ZhbHVlKCks
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogICAgcmV0dXJuIGdldChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwp9CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18pKSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkgY29uc3QKewogICAgcmV0
dXJuIGdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpID8KICAgICAgICBz
bG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSkgOiBqc1VuZGVmaW5lZCgpOwp9Cgppbmxp
bmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBib29sIEpTVmFsdWU6OmdldFBy
b3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkgY29uc3QKewoKCiAgICBKU09iamVjdCogb2JqZWN0OwogICAgaWYg
KF9fYnVpbHRpbl9leHBlY3QoISEoIWlzT2JqZWN0KCkpLCAwKSkgewogICAgICAgIGlmIChpc1N0
cmluZygpICYmIGFzU3RyaW5nKCp0aGlzKS0+Z2V0U3RyaW5nUHJvcGVydHlTbG90KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIG9iamVj
dCA9IHN5bnRoZXNpemVQcm90b3R5cGUoZXhlYyk7CiAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBl
Y3QoISEoIW9iamVjdCksIDApKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9IGVsc2UK
ICAgICAgICBvYmplY3QgPSBhc09iamVjdChhc0NlbGwoKSk7CgogICAgcmV0dXJuIG9iamVjdC0+
Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cn0KCmlubGluZSBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lKSBjb25zdAp7CiAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChhc1ZhbHVlKCksIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQp
OwogICAgcmV0dXJuIGdldChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwp9CgppbmxpbmUgX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBj
b25zdAp7CgoKICAgIEpTT2JqZWN0KiBvYmplY3Q7CiAgICBpZiAoX19idWlsdGluX2V4cGVjdCgh
ISghaXNPYmplY3QoKSksIDApKSB7CiAgICAgICAgaWYgKGlzU3RyaW5nKCkgJiYgYXNTdHJpbmco
KnRoaXMpLT5nZXRTdHJpbmdQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkK
ICAgICAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKICAg
ICAgICBvYmplY3QgPSBzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMpOwogICAgICAgIGlmIChfX2J1
aWx0aW5fZXhwZWN0KCEhKCFvYmplY3QpLCAwKSkKICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKICAgIH0gZWxzZQogICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KGFzQ2VsbCgpKTsKCiAgICBp
ZiAob2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKICAg
ICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7Cn0KCmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XykpIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgdWludDY0X3QgcHJvcGVy
dHlOYW1lKSBjb25zdAp7CiAgICBpZiAoX19idWlsdGluX2V4cGVjdCghIShwcm9wZXJ0eU5hbWUg
PD0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSwgMSkpCiAgICAgICAgcmV0
dXJuIGdldChleGVjLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJvcGVydHlOYW1lKSk7CiAgICBy
ZXR1cm4gZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgc3RhdGljX2Nhc3Q8ZG91Ymxl
Pihwcm9wZXJ0eU5hbWUpKSk7Cn0KCmlubGluZSBib29sIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKewogICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoIWlzQ2VsbCgpKSwg
MCkpCiAgICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOwoKICAgIHJldHVybiBhc0NlbGwoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkt
PnB1dChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cn0KCmlubGlu
ZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgSlNWYWx1ZTo6cHV0SW5s
aW5lKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQp7CiAgICBpZiAoX19idWlsdGluX2V4cGVjdCgh
ISghaXNDZWxsKCkpLCAwKSkKICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmUoZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CgogICAgSlNDZWxsKiBjZWxsID0gYXNDZWxsKCk7CiAg
ICBhdXRvIHB1dE1ldGhvZCA9IGNlbGwtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQ7CiAg
ICBpZiAoX19idWlsdGluX2V4cGVjdCghIShwdXRNZXRob2QgPT0gSlNPYmplY3Q6OnB1dCksIDEp
KQogICAgICAgIHJldHVybiBKU09iamVjdDo6cHV0SW5saW5lKGNlbGwsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOwoKICAgIFB1dFByb3BlcnR5U2xvdCBvdGhlclNsb3QgPSBzbG90
OwogICAgYm9vbCByZXN1bHQgPSBwdXRNZXRob2QoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgb3RoZXJTbG90KTsKICAgIHNsb3QgPSBvdGhlclNsb3Q7CiAgICByZXR1cm4gcmVzdWx0
Owp9CgppbmxpbmUgYm9vbCBKU1ZhbHVlOjpwdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQp7CiAg
ICBpZiAoX19idWlsdGluX2V4cGVjdCghISghaXNDZWxsKCkpLCAwKSkKICAgICAgICByZXR1cm4g
cHV0VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRo
cm93KTsKCiAgICByZXR1cm4gYXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRC
eUluZGV4KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7
Cn0KCmlubGluZSBTdHJ1Y3R1cmUqIEpTVmFsdWU6OnN0cnVjdHVyZU9yTnVsbCgpIGNvbnN0CnsK
ICAgIGlmIChpc0NlbGwoKSkKICAgICAgICByZXR1cm4gYXNDZWxsKCktPnN0cnVjdHVyZSgpOwog
ICAgcmV0dXJuIG51bGxwdHI7Cn0KCmlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OnN0cnVjdHVyZU9y
VW5kZWZpbmVkKCkgY29uc3QKewogICAgaWYgKGlzQ2VsbCgpKQogICAgICAgIHJldHVybiBKU1Zh
bHVlKGFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7CiAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKfQoK
CmlubGluZSBib29sIEpTVmFsdWU6OmVxdWFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2MikKewogICAgaWYgKHYxLmlzSW50MzIoKSAmJiB2Mi5pc0ludDMyKCkpCiAgICAg
ICAgcmV0dXJuIHYxID09IHYyOwoKICAgIHJldHVybiBlcXVhbFNsb3dDYXNlKGV4ZWMsIHYxLCB2
Mik7Cn0KCmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgSlNW
YWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpCnsKICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICBkbyB7CiAgICAgICAgaWYg
KHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgICAgcmV0dXJuIHYxLmFz
TnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKTsKCiAgICAgICAgYm9vbCBzMSA9IHYxLmlzU3RyaW5n
KCk7CiAgICAgICAgYm9vbCBzMiA9IHYyLmlzU3RyaW5nKCk7CiAgICAgICAgaWYgKHMxICYmIHMy
KQogICAgICAgICAgICByZXR1cm4gV1RGOjplcXVhbCgqYXNTdHJpbmcodjEpLT52YWx1ZShleGVj
KS5pbXBsKCksICphc1N0cmluZyh2MiktPnZhbHVlKGV4ZWMpLmltcGwoKSk7CgogICAgICAgIGlm
ICh2MS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgICAgIGlmICh2Mi5pc1VuZGVmaW5l
ZE9yTnVsbCgpKQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIGlmICgh
djIuaXNDZWxsKCkpCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIHJl
dHVybiB2Mi5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHYyLmlz
VW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgICAgaWYgKCF2MS5pc0NlbGwoKSkKICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgcmV0dXJuIHYxLmFzQ2VsbCgpLT5z
dHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAodjEuaXNPYmplY3QoKSkgewogICAgICAg
ICAgICBpZiAodjIuaXNPYmplY3QoKSkKICAgICAgICAgICAgICAgIHJldHVybiB2MSA9PSB2MjsK
ICAgICAgICAgICAgSlNWYWx1ZSBwMSA9IHYxLnRvUHJpbWl0aXZlKGV4ZWMpOwogICAgICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgIHYxID0gcDE7CiAgICAgICAgICAgIGlmICh2MS5pc0ludDMyKCkgJiYgdjIu
aXNJbnQzMigpKQogICAgICAgICAgICAgICAgcmV0dXJuIHYxID09IHYyOwogICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICB9CgogICAgICAgIGlmICh2Mi5pc09iamVjdCgpKSB7CiAgICAgICAg
ICAgIEpTVmFsdWUgcDIgPSB2Mi50b1ByaW1pdGl2ZShleGVjKTsKICAgICAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICB2MiA9IHAyOwogICAgICAgICAgICBpZiAodjEuaXNJbnQzMigpICYmIHYyLmlzSW50MzIo
KSkKICAgICAgICAgICAgICAgIHJldHVybiB2MSA9PSB2MjsKICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgfQoKICAgICAgICBib29sIHN5bTEgPSB2MS5pc1N5bWJvbCgpOwogICAgICAgIGJv
b2wgc3ltMiA9IHYyLmlzU3ltYm9sKCk7CiAgICAgICAgaWYgKHN5bTEgfHwgc3ltMikgewogICAg
ICAgICAgICBpZiAoc3ltMSAmJiBzeW0yKQogICAgICAgICAgICAgICAgcmV0dXJuIGFzU3ltYm9s
KHYxKS0+cHJpdmF0ZU5hbWUoKSA9PSBhc1N5bWJvbCh2MiktPnByaXZhdGVOYW1lKCk7CiAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmIChzMSB8fCBzMikgewog
ICAgICAgICAgICBkb3VibGUgZDEgPSB2MS50b051bWJlcihleGVjKTsKICAgICAgICAgICAgZG91
YmxlIGQyID0gdjIudG9OdW1iZXIoZXhlYyk7CiAgICAgICAgICAgIHJldHVybiBkMSA9PSBkMjsK
ICAgICAgICB9CgogICAgICAgIGlmICh2MS5pc0Jvb2xlYW4oKSkgewogICAgICAgICAgICBpZiAo
djIuaXNOdW1iZXIoKSkKICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+
KHYxLmFzQm9vbGVhbigpKSA9PSB2Mi5hc051bWJlcigpOwogICAgICAgIH0gZWxzZSBpZiAodjIu
aXNCb29sZWFuKCkpIHsKICAgICAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkpCiAgICAgICAgICAg
ICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9PSBzdGF0aWNfY2FzdDxkb3VibGU+KHYyLmFzQm9v
bGVhbigpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB2MSA9PSB2MjsKICAgIH0gd2hpbGUg
KHRydWUpOwp9CgoKaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9v
bCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2MSwgSlNWYWx1ZSB2MikKewogICAgKCh2b2lkKTApOwoKICAgIGlmICh2MS5hc0NlbGwo
KS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkKICAgICAgICByZXR1cm4g
V1RGOjplcXVhbCgqYXNTdHJpbmcodjEpLT52YWx1ZShleGVjKS5pbXBsKCksICphc1N0cmluZyh2
MiktPnZhbHVlKGV4ZWMpLmltcGwoKSk7CiAgICBpZiAodjEuYXNDZWxsKCktPmlzU3ltYm9sKCkg
JiYgdjIuYXNDZWxsKCktPmlzU3ltYm9sKCkpCiAgICAgICAgcmV0dXJuIGFzU3ltYm9sKHYxKS0+
cHJpdmF0ZU5hbWUoKSA9PSBhc1N5bWJvbCh2MiktPnByaXZhdGVOYW1lKCk7CgogICAgcmV0dXJu
IHYxID09IHYyOwp9CgppbmxpbmUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCnsKICAgIGlmICh2MS5pc0ludDMyKCkgJiYg
djIuaXNJbnQzMigpKQogICAgICAgIHJldHVybiB2MSA9PSB2MjsKCiAgICBpZiAodjEuaXNOdW1i
ZXIoKSAmJiB2Mi5pc051bWJlcigpKQogICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYy
LmFzTnVtYmVyKCk7CgogICAgaWYgKCF2MS5pc0NlbGwoKSB8fCAhdjIuaXNDZWxsKCkpCiAgICAg
ICAgcmV0dXJuIHYxID09IHYyOwoKICAgIHJldHVybiBzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5l
KGV4ZWMsIHYxLCB2Mik7Cn0KCmlubGluZSBpbnQzMl90IEpTVmFsdWU6OmFzSW50MzJGb3JBcml0
aG1ldGljKCkgY29uc3QKewogICAgaWYgKGlzQm9vbGVhbigpKQogICAgICAgIHJldHVybiBhc0Jv
b2xlYW4oKTsKICAgIHJldHVybiBhc0ludDMyKCk7Cn0KCmlubGluZSBUcmlTdGF0ZSBKU1ZhbHVl
OjpwdXJlU3RyaWN0RXF1YWwoSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKewogICAgaWYgKHYxLmlz
SW50MzIoKSAmJiB2Mi5pc0ludDMyKCkpCiAgICAgICAgcmV0dXJuIHRyaVN0YXRlKHYxID09IHYy
KTsKCiAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQogICAgICAgIHJldHVy
biB0cmlTdGF0ZSh2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCkpOwoKICAgIGlmICghdjEu
aXNDZWxsKCkgfHwgIXYyLmlzQ2VsbCgpKQogICAgICAgIHJldHVybiB0cmlTdGF0ZSh2MSA9PSB2
Mik7CgogICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFzQ2VsbCgpLT5pc1N0
cmluZygpKSB7CiAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjFTdHJpbmcgPSBhc1N0cmluZyh2
MSktPnRyeUdldFZhbHVlSW1wbCgpOwogICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIHYyU3RyaW5n
ID0gYXNTdHJpbmcodjIpLT50cnlHZXRWYWx1ZUltcGwoKTsKICAgICAgICBpZiAoIXYxU3RyaW5n
IHx8ICF2MlN0cmluZykKICAgICAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CiAgICAgICAg
cmV0dXJuIHRyaVN0YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKICAgIH0K
CiAgICByZXR1cm4gdHJpU3RhdGUodjEgPT0gdjIpOwp9CgppbmxpbmUgVHJpU3RhdGUgSlNWYWx1
ZTo6cHVyZVRvQm9vbGVhbigpIGNvbnN0CnsKICAgIGlmIChpc0ludDMyKCkpCiAgICAgICAgcmV0
dXJuIGFzSW50MzIoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiAgICBpZiAoaXNE
b3VibGUoKSkKICAgICAgICByZXR1cm4gaXNOb3RaZXJvQW5kT3JkZXJlZChhc0RvdWJsZSgpKSA/
IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CiAgICBpZiAoaXNDZWxsKCkpCiAgICAgICAg
cmV0dXJuIGFzQ2VsbCgpLT5wdXJlVG9Cb29sZWFuKCk7CiAgICByZXR1cm4gaXNUcnVlKCkgPyBU
cnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwp9CgppbmxpbmUgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18pKSBib29sIEpTVmFsdWU6OnJlcXVpcmVPYmplY3RDb2VyY2libGUoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAp7CiAgICBpZiAoIWlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKICAgIHJldHVybiBmYWxzZTsKfQoKaW5s
aW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBpc1RoaXNWYWx1ZUFs
dGVyZWQoY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LCBKU09iamVjdCogYmFzZU9iamVjdCkK
ewogICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzbG90LnRoaXNWYWx1ZSgpOwogICAgaWYgKF9fYnVp
bHRpbl9leHBlY3QoISEodGhpc1ZhbHVlID09IGJhc2VPYmplY3QpLCAxKSkKICAgICAgICByZXR1
cm4gZmFsc2U7CgogICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gYXNPYmplY3QodGhpc1ZhbHVlKTsKCiAg
ICBpZiAodGhpc09iamVjdC0+dHlwZSgpID09IFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlICYmIGpz
Q2FzdDxKU1Byb3h5Kj4odGhpc09iamVjdCktPnRhcmdldCgpID09IGJhc2VPYmplY3QpCiAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgcmV0dXJuIHRydWU7Cn0KCn0KIyAzMSAiLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIiAyCgojIDEgIi4uLy4u
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgiIDEK
IyAyMiAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNo
VGFibGUuaCIKI2RlZmluZSBQcm9wZXJ0eU1hcEhhc2hUYWJsZV9oIAojIDM1ICIuLi8uLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgojZGVmaW5l
IERVTVBfUFJPUEVSVFlNQVBfU1RBVFMgMAojZGVmaW5lIERVTVBfUFJPUEVSVFlNQVBfQ09MTElT
SU9OUyAwCgojZGVmaW5lIFBST1BFUlRZX01BUF9ERUxFVEVEX0VOVFJZX0tFWSAoKFVuaXF1ZWRT
dHJpbmdJbXBsKikxKQoKbmFtZXNwYWNlIEpTQyB7CiMgNTkgIi4uLy4uL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgiCmlubGluZSBib29sIGlzUG93
ZXJPZjIodW5zaWduZWQgdikKewogICAgcmV0dXJuIGhhc09uZUJpdFNldCh2KTsKfQoKaW5saW5l
IHVuc2lnbmVkIG5leHRQb3dlck9mMih1bnNpZ25lZCB2KQp7CgoKCiAgICB2LS07CiAgICB2IHw9
IHYgPj4gMTsKICAgIHYgfD0gdiA+PiAyOwogICAgdiB8PSB2ID4+IDQ7CiAgICB2IHw9IHYgPj4g
ODsKICAgIHYgfD0gdiA+PiAxNjsKICAgIHYrKzsKCiAgICByZXR1cm4gdjsKfQoKY2xhc3MgUHJv
cGVydHlUYWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewoKCgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KICAgIGNsYXNzIG9yZGVyZWRfaXRlcmF0b3IgewogICAgcHVibGljOgogICAgICAgIG9y
ZGVyZWRfaXRlcmF0b3I8VD4mIG9wZXJhdG9yKysoKQogICAgICAgIHsKICAgICAgICAgICAgbV92
YWx1ZVB0ciA9IHNraXBEZWxldGVkRW50cmllcyhtX3ZhbHVlUHRyICsgMSk7CiAgICAgICAgICAg
IHJldHVybiAqdGhpczsKICAgICAgICB9CgogICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBv
cmRlcmVkX2l0ZXJhdG9yPFQ+JiBvdGhlcikKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBt
X3ZhbHVlUHRyID09IG90aGVyLm1fdmFsdWVQdHI7CiAgICAgICAgfQoKICAgICAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3Qgb3JkZXJlZF9pdGVyYXRvcjxUPiYgb3RoZXIpCiAgICAgICAgewogICAg
ICAgICAgICByZXR1cm4gbV92YWx1ZVB0ciAhPSBvdGhlci5tX3ZhbHVlUHRyOwogICAgICAgIH0K
CiAgICAgICAgVCYgb3BlcmF0b3IqKCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAqbV92
YWx1ZVB0cjsKICAgICAgICB9CgogICAgICAgIFQqIG9wZXJhdG9yLT4oKQogICAgICAgIHsKICAg
ICAgICAgICAgcmV0dXJuIG1fdmFsdWVQdHI7CiAgICAgICAgfQoKICAgICAgICBvcmRlcmVkX2l0
ZXJhdG9yKFQqIHZhbHVlUHRyKQogICAgICAgICAgICA6IG1fdmFsdWVQdHIodmFsdWVQdHIpCiAg
ICAgICAgewogICAgICAgIH0KCiAgICBwcml2YXRlOgogICAgICAgIFQqIG1fdmFsdWVQdHI7CiAg
ICB9OwoKcHVibGljOgogICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJl
SXNJbW1vcnRhbDsKCiAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1
ZTsKICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CgogICAgcHJvdGVjdGVkOiBzdGF0
aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0IDo6
SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9OwoKICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgewogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICB9CgogICAgdHlwZWRlZiBVbmlxdWVkU3RyaW5n
SW1wbCogS2V5VHlwZTsKICAgIHR5cGVkZWYgUHJvcGVydHlNYXBFbnRyeSBWYWx1ZVR5cGU7CgoK
ICAgIHR5cGVkZWYgb3JkZXJlZF9pdGVyYXRvcjxWYWx1ZVR5cGU+IGl0ZXJhdG9yOwogICAgdHlw
ZWRlZiBvcmRlcmVkX2l0ZXJhdG9yPGNvbnN0IFZhbHVlVHlwZT4gY29uc3RfaXRlcmF0b3I7CgoK
CgogICAgdHlwZWRlZiBzdGQ6OnBhaXI8VmFsdWVUeXBlKiwgdW5zaWduZWQ+IGZpbmRfaXRlcmF0
b3I7CgoKICAgIHN0YXRpYyBQcm9wZXJ0eVRhYmxlKiBjcmVhdGUoVk0mLCB1bnNpZ25lZCBpbml0
aWFsQ2FwYWNpdHkpOwogICAgc3RhdGljIFByb3BlcnR5VGFibGUqIGNsb25lKFZNJiwgY29uc3Qg
UHJvcGVydHlUYWJsZSYpOwogICAgc3RhdGljIFByb3BlcnR5VGFibGUqIGNsb25lKFZNJiwgdW5z
aWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7CiAgICB+UHJvcGVy
dHlUYWJsZSgpOwoKCiAgICBpdGVyYXRvciBiZWdpbigpOwogICAgaXRlcmF0b3IgZW5kKCk7CiAg
ICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0OwogICAgY29uc3RfaXRlcmF0b3IgZW5kKCkg
Y29uc3Q7CgoKICAgIGZpbmRfaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJik7CiAgICBWYWx1
ZVR5cGUqIGdldChjb25zdCBLZXlUeXBlJik7CgogICAgZW51bSBFZmZlY3RPblByb3BlcnR5T2Zm
c2V0IHsgUHJvcGVydHlPZmZzZXRNYXlDaGFuZ2UsIFByb3BlcnR5T2Zmc2V0TXVzdE5vdENoYW5n
ZSB9OwogICAgc3RkOjpwYWlyPGZpbmRfaXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBWYWx1ZVR5
cGUmIGVudHJ5LCBQcm9wZXJ0eU9mZnNldCYsIEVmZmVjdE9uUHJvcGVydHlPZmZzZXQpOwoKICAg
IHZvaWQgcmVtb3ZlKGNvbnN0IGZpbmRfaXRlcmF0b3ImIGl0ZXIpOwogICAgdm9pZCByZW1vdmUo
Y29uc3QgS2V5VHlwZSYga2V5KTsKCgogICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0OwoKCiAgICBi
b29sIGlzRW1wdHkoKSBjb25zdDsKCgogICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdlU2l6ZSgp
IGNvbnN0OwoKCiAgICB2b2lkIGNsZWFyRGVsZXRlZE9mZnNldHMoKTsKICAgIGJvb2wgaGFzRGVs
ZXRlZE9mZnNldCgpOwogICAgUHJvcGVydHlPZmZzZXQgZ2V0RGVsZXRlZE9mZnNldCgpOwogICAg
dm9pZCBhZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsKCiAgICBQcm9wZXJ0eU9mZnNl
dCBuZXh0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IGlubGluZUNhcGFjaXR5KTsKCgogICAgUHJvcGVy
dHlUYWJsZSogY29weShWTSYsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKCgoKCgoKICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbmRleFNpemUoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2Fz
dDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxQcm9wZXJ0eVRhYmxlKj4oMHg0MDAwKS0+
bV9pbmRleFNpemUpKSAtIDB4NDAwMCk7IH0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJ
bmRleE1hc2soKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRl
cnByZXRfY2FzdDxQcm9wZXJ0eVRhYmxlKj4oMHg0MDAwKS0+bV9pbmRleE1hc2spKSAtIDB4NDAw
MCk7IH0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbmRleCgpIHsgcmV0dXJuIChyZWlu
dGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFByb3BlcnR5VGFibGUq
PigweDQwMDApLT5tX2luZGV4KSkgLSAweDQwMDApOyB9CgogICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIEVtcHR5RW50cnlJbmRleCA9IDA7Cgpwcml2YXRlOgogICAgUHJvcGVydHlUYWJsZShWTSYs
IHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSk7CiAgICBQcm9wZXJ0eVRhYmxlKFZNJiwgY29uc3Qg
UHJvcGVydHlUYWJsZSYpOwogICAgUHJvcGVydHlUYWJsZShWTSYsIHVuc2lnbmVkIGluaXRpYWxD
YXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWJsZSYpOwoKICAgIFByb3BlcnR5VGFibGUoY29uc3Qg
UHJvcGVydHlUYWJsZSYpOwoKICAgIHZvaWQgcmVpbnNlcnQoY29uc3QgVmFsdWVUeXBlJiBlbnRy
eSk7CgoKICAgIHZvaWQgcmVoYXNoKHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKCgogICAgdW5zaWdu
ZWQgdGFibGVDYXBhY2l0eSgpIGNvbnN0OwojIDIyMyAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICAgIHVuc2lnbmVkIGRlbGV0ZWRF
bnRyeUluZGV4KCkgY29uc3Q7CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICBzdGF0aWMg
VCogc2tpcERlbGV0ZWRFbnRyaWVzKFQqIHZhbHVlUHRyKTsKCgogICAgVmFsdWVUeXBlKiB0YWJs
ZSgpOwogICAgY29uc3QgVmFsdWVUeXBlKiB0YWJsZSgpIGNvbnN0OwoKCiAgICB1bnNpZ25lZCB1
c2VkQ291bnQoKSBjb25zdDsKCgogICAgc2l6ZV90IGRhdGFTaXplKCk7CgoKICAgIHN0YXRpYyB1
bnNpZ25lZCBzaXplRm9yQ2FwYWNpdHkodW5zaWduZWQgY2FwYWNpdHkpOwoKCiAgICBib29sIGNh
bkluc2VydCgpOwoKICAgIHVuc2lnbmVkIG1faW5kZXhTaXplOwogICAgdW5zaWduZWQgbV9pbmRl
eE1hc2s7CiAgICB1bnNpZ25lZCogbV9pbmRleDsKICAgIHVuc2lnbmVkIG1fa2V5Q291bnQ7CiAg
ICB1bnNpZ25lZCBtX2RlbGV0ZWRDb3VudDsKICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UHJv
cGVydHlPZmZzZXQ+PiBtX2RlbGV0ZWRPZmZzZXRzOwoKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBNaW5pbXVtVGFibGVTaXplID0gMTY7Cn07CgppbmxpbmUgUHJvcGVydHlUYWJsZTo6aXRlcmF0
b3IgUHJvcGVydHlUYWJsZTo6YmVnaW4oKQp7CiAgICByZXR1cm4gaXRlcmF0b3Ioc2tpcERlbGV0
ZWRFbnRyaWVzKHRhYmxlKCkpKTsKfQoKaW5saW5lIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIFBy
b3BlcnR5VGFibGU6OmVuZCgpCnsKICAgIHJldHVybiBpdGVyYXRvcih0YWJsZSgpICsgdXNlZENv
dW50KCkpOwp9CgppbmxpbmUgUHJvcGVydHlUYWJsZTo6Y29uc3RfaXRlcmF0b3IgUHJvcGVydHlU
YWJsZTo6YmVnaW4oKSBjb25zdAp7CiAgICByZXR1cm4gY29uc3RfaXRlcmF0b3Ioc2tpcERlbGV0
ZWRFbnRyaWVzKHRhYmxlKCkpKTsKfQoKaW5saW5lIFByb3BlcnR5VGFibGU6OmNvbnN0X2l0ZXJh
dG9yIFByb3BlcnR5VGFibGU6OmVuZCgpIGNvbnN0CnsKICAgIHJldHVybiBjb25zdF9pdGVyYXRv
cih0YWJsZSgpICsgdXNlZENvdW50KCkpOwp9CgppbmxpbmUgUHJvcGVydHlUYWJsZTo6ZmluZF9p
dGVyYXRvciBQcm9wZXJ0eVRhYmxlOjpmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkKewogICAgKCh2
b2lkKTApOwogICAgKCh2b2lkKTApOwogICAgdW5zaWduZWQgaGFzaCA9IElkZW50aWZpZXJSZXBI
YXNoOjpoYXNoKGtleSk7CgoKCgoKICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgdW5zaWduZWQg
ZW50cnlJbmRleCA9IG1faW5kZXhbaGFzaCAmIG1faW5kZXhNYXNrXTsKICAgICAgICBpZiAoZW50
cnlJbmRleCA9PSBFbXB0eUVudHJ5SW5kZXgpCiAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcigoVmFsdWVUeXBlKikwLCBoYXNoICYgbV9pbmRleE1hc2spOwogICAgICAgIGlmIChrZXkg
PT0gdGFibGUoKVtlbnRyeUluZGV4IC0gMV0ua2V5KQogICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3BhaXIoJnRhYmxlKClbZW50cnlJbmRleCAtIDFdLCBoYXNoICYgbV9pbmRleE1hc2spOwoj
IDMwMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNo
VGFibGUuaCIKICAgICAgICBoYXNoKys7CiAgICB9Cn0KCmlubGluZSBQcm9wZXJ0eVRhYmxlOjpW
YWx1ZVR5cGUqIFByb3BlcnR5VGFibGU6OmdldChjb25zdCBLZXlUeXBlJiBrZXkpCnsKICAgICgo
dm9pZCkwKTsKICAgICgodm9pZCkwKTsKCiAgICBpZiAoIW1fa2V5Q291bnQpCiAgICAgICAgcmV0
dXJuIG51bGxwdHI7CgogICAgdW5zaWduZWQgaGFzaCA9IElkZW50aWZpZXJSZXBIYXNoOjpoYXNo
KGtleSk7CgoKCgoKICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgdW5zaWduZWQgZW50cnlJbmRl
eCA9IG1faW5kZXhbaGFzaCAmIG1faW5kZXhNYXNrXTsKICAgICAgICBpZiAoZW50cnlJbmRleCA9
PSBFbXB0eUVudHJ5SW5kZXgpCiAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgIGlm
IChrZXkgPT0gdGFibGUoKVtlbnRyeUluZGV4IC0gMV0ua2V5KQogICAgICAgICAgICByZXR1cm4g
JnRhYmxlKClbZW50cnlJbmRleCAtIDFdOwoKCgoKCiAgICAgICAgaGFzaCsrOwogICAgfQp9Cgpp
bmxpbmUgc3RkOjpwYWlyPFByb3BlcnR5VGFibGU6OmZpbmRfaXRlcmF0b3IsIGJvb2w+IFByb3Bl
cnR5VGFibGU6OmFkZChjb25zdCBWYWx1ZVR5cGUmIGVudHJ5LCBQcm9wZXJ0eU9mZnNldCYgb2Zm
c2V0LCBFZmZlY3RPblByb3BlcnR5T2Zmc2V0IG9mZnNldEVmZmVjdCkKewoKICAgIGZpbmRfaXRl
cmF0b3IgaXRlciA9IGZpbmQoZW50cnkua2V5KTsKICAgIGlmIChpdGVyLmZpcnN0KSB7CiAgICAg
ICAgZG8geyBpZiAoX19idWlsdGluX2V4cGVjdCghISghKGl0ZXIuZmlyc3QtPm9mZnNldCA8PSBv
ZmZzZXQpKSwgMCkpIFdURkNyYXNoKCk7IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfcGFpcihpdGVyLCBmYWxzZSk7CiAgICB9CgoKCgoKCiAgICBlbnRyeS5rZXktPnJlZigp
OwoKCiAgICBpZiAoIWNhbkluc2VydCgpKSB7CiAgICAgICAgcmVoYXNoKG1fa2V5Q291bnQgKyAx
KTsKICAgICAgICBpdGVyID0gZmluZChlbnRyeS5rZXkpOwogICAgICAgICgodm9pZCkwKTsKICAg
IH0KCgogICAgdW5zaWduZWQgZW50cnlJbmRleCA9IHVzZWRDb3VudCgpICsgMTsKICAgIG1faW5k
ZXhbaXRlci5zZWNvbmRdID0gZW50cnlJbmRleDsKICAgIGl0ZXIuZmlyc3QgPSAmdGFibGUoKVtl
bnRyeUluZGV4IC0gMV07CiAgICAqaXRlci5maXJzdCA9IGVudHJ5OwoKICAgICsrbV9rZXlDb3Vu
dDsKCiAgICBpZiAob2Zmc2V0RWZmZWN0ID09IFByb3BlcnR5T2Zmc2V0TWF5Q2hhbmdlKQogICAg
ICAgIG9mZnNldCA9IHN0ZDo6bWF4KG9mZnNldCwgZW50cnkub2Zmc2V0KTsKICAgIGVsc2UKICAg
ICAgICBkbyB7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCEob2Zmc2V0ID49IGVudHJ5Lm9mZnNl
dCkpLCAwKSkgV1RGQ3Jhc2goKTsgfSB3aGlsZSAoMCk7CgogICAgcmV0dXJuIHN0ZDo6bWFrZV9w
YWlyKGl0ZXIsIHRydWUpOwp9CgppbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjpyZW1vdmUoY29u
c3QgZmluZF9pdGVyYXRvciYgaXRlcikKewoKICAgIGlmICghaXRlci5maXJzdCkKICAgICAgICBy
ZXR1cm47CgoKCgoKCgogICAgbV9pbmRleFtpdGVyLnNlY29uZF0gPSBkZWxldGVkRW50cnlJbmRl
eCgpOwogICAgaXRlci5maXJzdC0+a2V5LT5kZXJlZigpOwogICAgaXRlci5maXJzdC0+a2V5ID0g
KChVbmlxdWVkU3RyaW5nSW1wbCopMSk7CgogICAgKCh2b2lkKTApOwogICAgLS1tX2tleUNvdW50
OwogICAgKyttX2RlbGV0ZWRDb3VudDsKCiAgICBpZiAobV9kZWxldGVkQ291bnQgKiA0ID49IG1f
aW5kZXhTaXplKQogICAgICAgIHJlaGFzaChtX2tleUNvdW50KTsKfQoKaW5saW5lIHZvaWQgUHJv
cGVydHlUYWJsZTo6cmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSkKewogICAgcmVtb3ZlKGZpbmQo
a2V5KSk7Cn0KCgppbmxpbmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6c2l6ZSgpIGNvbnN0CnsK
ICAgIHJldHVybiBtX2tleUNvdW50Owp9CgppbmxpbmUgYm9vbCBQcm9wZXJ0eVRhYmxlOjppc0Vt
cHR5KCkgY29uc3QKewogICAgcmV0dXJuICFtX2tleUNvdW50Owp9CgppbmxpbmUgdW5zaWduZWQg
UHJvcGVydHlUYWJsZTo6cHJvcGVydHlTdG9yYWdlU2l6ZSgpIGNvbnN0CnsKICAgIHJldHVybiBz
aXplKCkgKyAobV9kZWxldGVkT2Zmc2V0cyA/IG1fZGVsZXRlZE9mZnNldHMtPnNpemUoKSA6IDAp
Owp9CgppbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjpjbGVhckRlbGV0ZWRPZmZzZXRzKCkKewog
ICAgbV9kZWxldGVkT2Zmc2V0cyA9IG51bGxwdHI7Cn0KCmlubGluZSBib29sIFByb3BlcnR5VGFi
bGU6Omhhc0RlbGV0ZWRPZmZzZXQoKQp7CiAgICByZXR1cm4gbV9kZWxldGVkT2Zmc2V0cyAmJiAh
bV9kZWxldGVkT2Zmc2V0cy0+aXNFbXB0eSgpOwp9CgppbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJv
cGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCnsKICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IG1fZGVsZXRlZE9mZnNldHMtPmxhc3QoKTsKICAgIG1fZGVsZXRlZE9mZnNldHMtPnJlbW92
ZUxhc3QoKTsKICAgIHJldHVybiBvZmZzZXQ7Cn0KCmlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6
OmFkZERlbGV0ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQp7CiAgICBpZiAoIW1fZGVs
ZXRlZE9mZnNldHMpCiAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8
VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKTsKICAgIG1fZGVsZXRlZE9mZnNldHMtPmFwcGVuZChv
ZmZzZXQpOwp9CgppbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6bmV4dE9mZnNl
dChQcm9wZXJ0eU9mZnNldCBpbmxpbmVDYXBhY2l0eSkKewogICAgaWYgKGhhc0RlbGV0ZWRPZmZz
ZXQoKSkKICAgICAgICByZXR1cm4gZ2V0RGVsZXRlZE9mZnNldCgpOwoKICAgIHJldHVybiBvZmZz
ZXRGb3JQcm9wZXJ0eU51bWJlcihzaXplKCksIGlubGluZUNhcGFjaXR5KTsKfQoKaW5saW5lIFBy
b3BlcnR5VGFibGUqIFByb3BlcnR5VGFibGU6OmNvcHkoVk0mIHZtLCB1bnNpZ25lZCBuZXdDYXBh
Y2l0eSkKewogICAgKCh2b2lkKTApOwoKCgogICAgaWYgKHNpemVGb3JDYXBhY2l0eShuZXdDYXBh
Y2l0eSkgPT0gbV9pbmRleFNpemUpCiAgICAgICAgcmV0dXJuIFByb3BlcnR5VGFibGU6OmNsb25l
KHZtLCAqdGhpcyk7CiAgICByZXR1cm4gUHJvcGVydHlUYWJsZTo6Y2xvbmUodm0sIG5ld0NhcGFj
aXR5LCAqdGhpcyk7Cn0KIyA0NzEgIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgiCmlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OnJlaW5z
ZXJ0KGNvbnN0IFZhbHVlVHlwZSYgZW50cnkpCnsKCgoKCgoKICAgICgodm9pZCkwKTsKICAgIGZp
bmRfaXRlcmF0b3IgaXRlciA9IGZpbmQoZW50cnkua2V5KTsKICAgICgodm9pZCkwKTsKCiAgICB1
bnNpZ25lZCBlbnRyeUluZGV4ID0gdXNlZENvdW50KCkgKyAxOwogICAgbV9pbmRleFtpdGVyLnNl
Y29uZF0gPSBlbnRyeUluZGV4OwogICAgdGFibGUoKVtlbnRyeUluZGV4IC0gMV0gPSBlbnRyeTsK
CiAgICArK21fa2V5Q291bnQ7Cn0KCmlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OnJlaGFzaCh1
bnNpZ25lZCBuZXdDYXBhY2l0eSkKewoKCgoKICAgIHVuc2lnbmVkKiBvbGRFbnRyeUluZGljZXMg
PSBtX2luZGV4OwogICAgaXRlcmF0b3IgaXRlciA9IHRoaXMtPmJlZ2luKCk7CiAgICBpdGVyYXRv
ciBlbmQgPSB0aGlzLT5lbmQoKTsKCiAgICBtX2luZGV4U2l6ZSA9IHNpemVGb3JDYXBhY2l0eShu
ZXdDYXBhY2l0eSk7CiAgICBtX2luZGV4TWFzayA9IG1faW5kZXhTaXplIC0gMTsKICAgIG1fa2V5
Q291bnQgPSAwOwogICAgbV9kZWxldGVkQ291bnQgPSAwOwogICAgbV9pbmRleCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkKj4oZmFzdFplcm9lZE1hbGxvYyhkYXRhU2l6ZSgpKSk7CgogICAgZm9yICg7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAoKHZvaWQpMCk7CiAgICAgICAgcmVpbnNl
cnQoKml0ZXIpOwogICAgfQoKICAgIGZhc3RGcmVlKG9sZEVudHJ5SW5kaWNlcyk7Cn0KCmlubGlu
ZSB1bnNpZ25lZCBQcm9wZXJ0eVRhYmxlOjp0YWJsZUNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4g
bV9pbmRleFNpemUgPj4gMTsgfQoKaW5saW5lIHVuc2lnbmVkIFByb3BlcnR5VGFibGU6OmRlbGV0
ZWRFbnRyeUluZGV4KCkgY29uc3QgeyByZXR1cm4gdGFibGVDYXBhY2l0eSgpICsgMTsgfQoKdGVt
cGxhdGU8dHlwZW5hbWUgVD4KaW5saW5lIFQqIFByb3BlcnR5VGFibGU6OnNraXBEZWxldGVkRW50
cmllcyhUKiB2YWx1ZVB0cikKewogICAgd2hpbGUgKHZhbHVlUHRyLT5rZXkgPT0gKChVbmlxdWVk
U3RyaW5nSW1wbCopMSkpCiAgICAgICAgKyt2YWx1ZVB0cjsKICAgIHJldHVybiB2YWx1ZVB0cjsK
fQoKaW5saW5lIFByb3BlcnR5VGFibGU6OlZhbHVlVHlwZSogUHJvcGVydHlUYWJsZTo6dGFibGUo
KQp7CgogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VmFsdWVUeXBlKj4obV9pbmRleCArIG1f
aW5kZXhTaXplKTsKfQoKaW5saW5lIGNvbnN0IFByb3BlcnR5VGFibGU6OlZhbHVlVHlwZSogUHJv
cGVydHlUYWJsZTo6dGFibGUoKSBjb25zdAp7CgogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVmFsdWVUeXBlKj4obV9pbmRleCArIG1faW5kZXhTaXplKTsKfQoKaW5saW5lIHVuc2ln
bmVkIFByb3BlcnR5VGFibGU6OnVzZWRDb3VudCgpIGNvbnN0CnsKCiAgICByZXR1cm4gbV9rZXlD
b3VudCArIG1fZGVsZXRlZENvdW50Owp9CgppbmxpbmUgc2l6ZV90IFByb3BlcnR5VGFibGU6OmRh
dGFTaXplKCkKewoKICAgIHJldHVybiBtX2luZGV4U2l6ZSAqIHNpemVvZih1bnNpZ25lZCkgKyAo
KHRhYmxlQ2FwYWNpdHkoKSkgKyAxKSAqIHNpemVvZihWYWx1ZVR5cGUpOwp9CgppbmxpbmUgdW5z
aWduZWQgUHJvcGVydHlUYWJsZTo6c2l6ZUZvckNhcGFjaXR5KHVuc2lnbmVkIGNhcGFjaXR5KQp7
CiAgICBpZiAoY2FwYWNpdHkgPCBNaW5pbXVtVGFibGVTaXplIC8gMikKICAgICAgICByZXR1cm4g
TWluaW11bVRhYmxlU2l6ZTsKICAgIHJldHVybiBuZXh0UG93ZXJPZjIoY2FwYWNpdHkgKyAxKSAq
IDI7Cn0KCmlubGluZSBib29sIFByb3BlcnR5VGFibGU6OmNhbkluc2VydCgpCnsKICAgIHJldHVy
biB1c2VkQ291bnQoKSA8IHRhYmxlQ2FwYWNpdHkoKTsKfQoKfQojIDMzICIuLi8uLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgiIDIKCiMgMSAiLi4vLi4v
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaCIgMQojIDI3ICIu
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oIgojZGVm
aW5lIFN0cnVjdHVyZUNoYWluX2ggCiMgMzggIi4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUNoYWluLmgiCm5hbWVzcGFjZSBKU0MgewoKY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwpjbGFzcyBTdHJ1Y3R1cmU7CgpjbGFzcyBTdHJ1Y3R1cmVDaGFpbiBmaW5h
bCA6IHB1YmxpYyBKU0NlbGwgewogICAgZnJpZW5kIGNsYXNzIEpJVDsKCnB1YmxpYzoKICAgIHR5
cGVkZWYgSlNDZWxsIEJhc2U7CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CgogICAgc3Rh
dGljIFN0cnVjdHVyZUNoYWluKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIGhlYWQpCiAgICB7
CiAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8U3RydWN0dXJlQ2hhaW4+KHZtLmhlYXApKSBTdHJ1Y3R1cmVDaGFpbih2bSwgdm0uc3RydWN0
dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgIGNoYWluLT5maW5pc2hDcmVhdGlvbih2
bSwgaGVhZCk7CiAgICAgICAgcmV0dXJuIGNoYWluOwogICAgfQogICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4qIGhlYWQoKSB7IHJldHVybiBtX3ZlY3Rvci5nZXQoKTsgfQogICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwoKICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgewogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICB9CgogICAgcHJvdGVjdGVkOiBzdGF0aWMgY29uc3Qg
OjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFz
c0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9OwoKICAgIHN0YXRpYyBjb25zdCBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwq
KTsKCnByb3RlY3RlZDoKICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUq
IGhlYWQpCiAgICB7CiAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgIHNp
emVfdCBzaXplID0gMDsKICAgICAgICBmb3IgKFN0cnVjdHVyZSogY3VycmVudCA9IGhlYWQ7IGN1
cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5zdG9yZWRQcm90b3R5cGUoKS5pc051bGwoKSA/IDAg
OiBhc09iamVjdChjdXJyZW50LT5zdG9yZWRQcm90b3R5cGUoKSktPnN0cnVjdHVyZSgpKQogICAg
ICAgICAgICArK3NpemU7CgogICAgICAgIG1fdmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPltdPihzaXplICsgMSk7CgogICAgICAgIHNpemVfdCBpID0gMDsK
ICAgICAgICBmb3IgKFN0cnVjdHVyZSogY3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQg
PSBjdXJyZW50LT5zdG9yZWRQcm90b3R5cGUoKS5pc051bGwoKSA/IDAgOiBhc09iamVjdChjdXJy
ZW50LT5zdG9yZWRQcm90b3R5cGUoKSktPnN0cnVjdHVyZSgpKQogICAgICAgICAgICBtX3ZlY3Rv
cltpKytdLnNldCh2bSwgdGhpcywgY3VycmVudCk7CiAgICB9Cgpwcml2YXRlOgogICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKCiAgICBTdHJ1Y3R1cmVDaGFpbihWTSYsIFN0
cnVjdHVyZSopOwogICAgc3RkOjp1bmlxdWVfcHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+W10+
IG1fdmVjdG9yOwp9OwoKfQojIDM1ICIuLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVJbmxpbmVzLmgiIDIKCm5hbWVzcGFjZSBKU0MgewoKaW5saW5lIFN0cnVjdHVy
ZSogU3RydWN0dXJlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCBjb25zdCBDbGFz
c0luZm8qIGNsYXNzSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwgdW5zaWduZWQgaW5s
aW5lQ2FwYWNpdHkpCnsKICAgICgodm9pZCkwKTsKICAgICgodm9pZCkwKTsKICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPih2bS5o
ZWFwKSkgU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgdHlwZUluZm8sIGNs
YXNzSW5mbywgaW5kZXhpbmdUeXBlLCBpbmxpbmVDYXBhY2l0eSk7CiAgICBzdHJ1Y3R1cmUtPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgIHJldHVybiBzdHJ1Y3R1cmU7Cn0KCmlubGluZSBTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSkKewogICAgKCh2b2lkKTApOwog
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1
Y3R1cmU+KHZtLmhlYXApKSBTdHJ1Y3R1cmUodm0pOwogICAgc3RydWN0dXJlLT5maW5pc2hDcmVh
dGlvbih2bSwgQ3JlYXRpbmdFYXJseUNlbGwpOwogICAgcmV0dXJuIHN0cnVjdHVyZTsKfQoKaW5s
aW5lIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVk
KQp7CiAgICAoKHZvaWQpMCk7CiAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4odm0uaGVhcCkpIFN0cnVjdHVyZSh2bSwgc3Ry
dWN0dXJlLCBkZWZlcnJlZCk7CiAgICBuZXdTdHJ1Y3R1cmUtPmZpbmlzaENyZWF0aW9uKHZtKTsK
ICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7Cn0KCmlubGluZSBKU09iamVjdCogU3RydWN0dXJlOjpz
dG9yZWRQcm90b3R5cGVPYmplY3QoKSBjb25zdAp7CiAgICBKU1ZhbHVlIHZhbHVlID0gbV9wcm90
b3R5cGUuZ2V0KCk7CiAgICBpZiAodmFsdWUuaXNOdWxsKCkpCiAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICByZXR1cm4gYXNPYmplY3QodmFsdWUpOwp9CgppbmxpbmUgU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OnN0b3JlZFByb3RvdHlwZVN0cnVjdHVyZSgpIGNvbnN0CnsKICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBzdG9yZWRQcm90b3R5cGVPYmplY3QoKTsKICAgIGlmICghb2JqZWN0KQogICAgICAg
IHJldHVybiBudWxscHRyOwogICAgcmV0dXJuIG9iamVjdC0+c3RydWN0dXJlKCk7Cn0KCmlubGlu
ZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIFByb3BlcnR5T2Zmc2V0IFN0cnVj
dHVyZTo6Z2V0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKewogICAgdW5zaWdu
ZWQgYXR0cmlidXRlczsKICAgIGJvb2wgaGFzSW5mZXJyZWRUeXBlOwogICAgcmV0dXJuIGdldCh2
bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBoYXNJbmZlcnJlZFR5cGUpOwp9CgppbmxpbmUg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1
cmU6OmdldChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRy
aWJ1dGVzKQp7CiAgICBib29sIGhhc0luZmVycmVkVHlwZTsKICAgIHJldHVybiBnZXQodm0sIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcywgaGFzSW5mZXJyZWRUeXBlKTsKfQoKaW5saW5lIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpn
ZXQoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRl
cywgYm9vbCYgaGFzSW5mZXJyZWRUeXBlKQp7CiAgICAoKHZvaWQpMCk7CiAgICAoKHZvaWQpMCk7
CgogICAgUHJvcGVydHlUYWJsZSogcHJvcGVydHlUYWJsZTsKICAgIG1hdGVyaWFsaXplUHJvcGVy
dHlNYXBJZk5lY2Vzc2FyeSh2bSwgcHJvcGVydHlUYWJsZSk7CiAgICBpZiAoIXByb3BlcnR5VGFi
bGUpCiAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CgogICAgUHJvcGVydHlNYXBFbnRyeSog
ZW50cnkgPSBwcm9wZXJ0eVRhYmxlLT5nZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgIGlmICgh
ZW50cnkpCiAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CgogICAgYXR0cmlidXRlcyA9IGVu
dHJ5LT5hdHRyaWJ1dGVzOwogICAgaGFzSW5mZXJyZWRUeXBlID0gZW50cnktPmhhc0luZmVycmVk
VHlwZTsKICAgIHJldHVybiBlbnRyeS0+b2Zmc2V0Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgp2b2lkIFN0cnVjdHVyZTo6Zm9yRWFjaFByb3BlcnR5Q29uY3VycmVudGx5KGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCnsKICAgIFZlY3RvcjxTdHJ1Y3R1cmUqLCA4PiBzdHJ1Y3R1cmVzOwog
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CiAgICBQcm9wZXJ0eVRhYmxlKiB0YWJsZTsKCiAgICBm
aW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXphdGlvbihzdHJ1Y3R1cmVzLCBzdHJ1Y3R1
cmUsIHRhYmxlKTsKCiAgICBpZiAodGFibGUpIHsKICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDog
KnRhYmxlKSB7CiAgICAgICAgICAgIGlmICghZnVuY3RvcihlbnRyeSkpIHsKICAgICAgICAgICAg
ICAgIHN0cnVjdHVyZS0+bV9sb2NrLnVubG9jaygpOwogICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHN0cnVjdHVyZS0+bV9sb2NrLnVubG9jaygp
OwogICAgfQoKICAgIGZvciAodW5zaWduZWQgaSA9IHN0cnVjdHVyZXMuc2l6ZSgpOyBpLS07KSB7
CiAgICAgICAgc3RydWN0dXJlID0gc3RydWN0dXJlc1tpXTsKICAgICAgICBpZiAoIXN0cnVjdHVy
ZS0+bV9uYW1lSW5QcmV2aW91cykKICAgICAgICAgICAgY29udGludWU7CgogICAgICAgIGlmICgh
ZnVuY3RvcihQcm9wZXJ0eU1hcEVudHJ5KHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cy5nZXQo
KSwgc3RydWN0dXJlLT5tX29mZnNldCwgc3RydWN0dXJlLT5hdHRyaWJ1dGVzSW5QcmV2aW91cygp
KSkpCiAgICAgICAgICAgIHJldHVybjsKICAgIH0KfQoKaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0
cnVjdHVyZTo6Z2V0Q29uY3VycmVudGx5KFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCnsKICAgIHVu
c2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwogICAgcmV0dXJuIGdldENvbmN1cnJlbnRseSh1aWQs
IGF0dHJpYnV0ZXNJZ25vcmVkKTsKfQoKaW5saW5lIGJvb2wgU3RydWN0dXJlOjpoYXNJbmRleGlu
Z0hlYWRlcihjb25zdCBKU0NlbGwqIGNlbGwpIGNvbnN0CnsKICAgIGlmIChoYXNJbmRleGVkUHJv
cGVydGllcyhpbmRleGluZ1R5cGUoKSkpCiAgICAgICAgcmV0dXJuIHRydWU7CgogICAgaWYgKCFp
c1R5cGVkVmlldyhtX2NsYXNzSW5mby0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSkKICAgICAgICBy
ZXR1cm4gZmFsc2U7CgogICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKU0FycmF5QnVmZmVyVmlldyo+
KGNlbGwpLT5tb2RlKCkgPT0gV2FzdGVmdWxUeXBlZEFycmF5Owp9CgppbmxpbmUgYm9vbCBTdHJ1
Y3R1cmU6Om1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QpCnsKICAgIHJldHVybiB0eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQo
KSAmJiBnbG9iYWxPYmplY3QoKSA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0Owp9CgppbmxpbmUgYm9v
bCBTdHJ1Y3R1cmU6OnRyYW5zaXRpdmVseVRyYW5zaXRpb25lZEZyb20oU3RydWN0dXJlKiBzdHJ1
Y3R1cmVUb0ZpbmQpCnsKICAgIGZvciAoU3RydWN0dXJlKiBjdXJyZW50ID0gdGhpczsgY3VycmVu
dDsgY3VycmVudCA9IGN1cnJlbnQtPnByZXZpb3VzSUQoKSkgewogICAgICAgIGlmIChjdXJyZW50
ID09IHN0cnVjdHVyZVRvRmluZCkKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBy
ZXR1cm4gZmFsc2U7Cn0KCmlubGluZSBKU1ZhbHVlIFN0cnVjdHVyZTo6cHJvdG90eXBlRm9yTG9v
a3VwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CnsKICAgIGlmIChpc09iamVj
dCgpKQogICAgICAgIHJldHVybiBtX3Byb3RvdHlwZS5nZXQoKTsKICAgIGlmICh0eXBlSW5mbygp
LnR5cGUoKSA9PSBTeW1ib2xUeXBlKQogICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN5bWJv
bFByb3RvdHlwZSgpOwoKICAgICgodm9pZCkwKTsKICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN0
cmluZ1Byb3RvdHlwZSgpOwp9CgppbmxpbmUgSlNWYWx1ZSBTdHJ1Y3R1cmU6OnByb3RvdHlwZUZv
ckxvb2t1cChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CnsKICAgIHJldHVybiBwcm90b3R5cGVGb3JM
b29rdXAoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKfQoKaW5saW5lIFN0cnVjdHVyZUNo
YWluKiBTdHJ1Y3R1cmU6OnByb3RvdHlwZUNoYWluKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgY29uc3QKewoKICAgIGlmICghaXNWYWxpZChnbG9iYWxPYmplY3QsIG1fY2Fj
aGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCkpKSB7CiAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBw
cm90b3R5cGVGb3JMb29rdXAoZ2xvYmFsT2JqZWN0KTsKICAgICAgICBtX2NhY2hlZFByb3RvdHlw
ZUNoYWluLnNldCh2bSwgdGhpcywgU3RydWN0dXJlQ2hhaW46OmNyZWF0ZSh2bSwgcHJvdG90eXBl
LmlzTnVsbCgpID8gMCA6IGFzT2JqZWN0KHByb3RvdHlwZSktPnN0cnVjdHVyZSgpKSk7CiAgICB9
CiAgICByZXR1cm4gbV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKTsKfQoKaW5saW5lIFN0cnVj
dHVyZUNoYWluKiBTdHJ1Y3R1cmU6OnByb3RvdHlwZUNoYWluKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKewogICAgcmV0dXJuIHByb3RvdHlwZUNoYWluKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSk7Cn0KCmlubGluZSBib29sIFN0cnVjdHVyZTo6aXNWYWxpZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVDaGFpbiogY2FjaGVkUHJvdG90eXBlQ2hh
aW4pIGNvbnN0CnsKICAgIGlmICghY2FjaGVkUHJvdG90eXBlQ2hhaW4pCiAgICAgICAgcmV0dXJu
IGZhbHNlOwoKICAgIEpTVmFsdWUgcHJvdG90eXBlID0gcHJvdG90eXBlRm9yTG9va3VwKGdsb2Jh
bE9iamVjdCk7CiAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogY2FjaGVkU3RydWN0dXJlID0g
Y2FjaGVkUHJvdG90eXBlQ2hhaW4tPmhlYWQoKTsKICAgIHdoaWxlICgqY2FjaGVkU3RydWN0dXJl
ICYmICFwcm90b3R5cGUuaXNOdWxsKCkpIHsKICAgICAgICBpZiAoYXNPYmplY3QocHJvdG90eXBl
KS0+c3RydWN0dXJlKCkgIT0gY2FjaGVkU3RydWN0dXJlLT5nZXQoKSkKICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICsrY2FjaGVkU3RydWN0dXJlOwogICAgICAgIHByb3RvdHlwZSA9
IGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3RvdHlwZURpcmVjdCgpOwogICAgfQogICAgcmV0
dXJuIHByb3RvdHlwZS5pc051bGwoKSAmJiAhKmNhY2hlZFN0cnVjdHVyZTsKfQoKaW5saW5lIGJv
b2wgU3RydWN0dXJlOjppc1ZhbGlkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlQ2hhaW4qIGNh
Y2hlZFByb3RvdHlwZUNoYWluKSBjb25zdAp7CiAgICByZXR1cm4gaXNWYWxpZChleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIGNhY2hlZFByb3RvdHlwZUNoYWluKTsKfQoKaW5saW5lIGJvb2wg
U3RydWN0dXJlOjpwdXRXaWxsR3Jvd091dE9mTGluZVN0b3JhZ2UoKQp7CiAgICBjaGVja09mZnNl
dENvbnNpc3RlbmN5KCk7CgogICAgKCh2b2lkKTApOwoKICAgIGlmICghcHJvcGVydHlUYWJsZSgp
KSB7CiAgICAgICAgdW5zaWduZWQgY3VycmVudFNpemUgPSBudW1iZXJPZk91dE9mTGluZVNsb3Rz
Rm9yTGFzdE9mZnNldChtX29mZnNldCk7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgIHJldHVy
biBjdXJyZW50U2l6ZSA9PSBvdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgfQoKICAgICgodm9pZCkw
KTsKICAgIGlmIChwcm9wZXJ0eVRhYmxlKCktPmhhc0RlbGV0ZWRPZmZzZXQoKSkKICAgICAgICBy
ZXR1cm4gZmFsc2U7CgogICAgKCh2b2lkKTApOwogICAgcmV0dXJuIHByb3BlcnR5VGFibGUoKS0+
c2l6ZSgpID09IHRvdGFsU3RvcmFnZUNhcGFjaXR5KCk7Cn0KCmlubGluZSBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXykpIFdyaXRlQmFycmllcjxQcm9wZXJ0eVRhYmxlPiYgU3RydWN0
dXJlOjpwcm9wZXJ0eVRhYmxlKCkKewogICAgKCh2b2lkKTApOwogICAgcmV0dXJuIG1fcHJvcGVy
dHlUYWJsZVVuc2FmZTsKfQoKaW5saW5lIHZvaWQgU3RydWN0dXJlOjpkaWRSZXBsYWNlUHJvcGVy
dHkoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQp7CiAgICBpZiAoX19idWlsdGluX2V4cGVjdCghISgh
aGFzUmFyZURhdGEoKSksIDEpKQogICAgICAgIHJldHVybjsKICAgIFN0cnVjdHVyZVJhcmVEYXRh
OjpQcm9wZXJ0eVdhdGNocG9pbnRNYXAqIG1hcCA9IHJhcmVEYXRhKCktPm1fcmVwbGFjZW1lbnRX
YXRjaHBvaW50U2V0cy5nZXQoKTsKICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCFtYXApLCAx
KSkKICAgICAgICByZXR1cm47CiAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSBtYXAtPmdldChvZmZz
ZXQpOwogICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoIXNldCksIDEpKQogICAgICAgIHJldHVy
bjsKICAgIHNldC0+ZmlyZUFsbCgiUHJvcGVydHkgZGlkIGdldCByZXBsYWNlZCIpOwp9Cgppbmxp
bmUgV2F0Y2hwb2ludFNldCogU3RydWN0dXJlOjpwcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2lu
dFNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCnsKICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKG1fbG9jayk7CiAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCiAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKICAgIFN0cnVjdHVyZVJhcmVEYXRhOjpQcm9w
ZXJ0eVdhdGNocG9pbnRNYXAqIG1hcCA9IHJhcmVEYXRhKCktPm1fcmVwbGFjZW1lbnRXYXRjaHBv
aW50U2V0cy5nZXQoKTsKICAgIGlmICghbWFwKQogICAgICAgIHJldHVybiBudWxscHRyOwogICAg
cmV0dXJuIG1hcC0+Z2V0KG9mZnNldCk7Cn0KCmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXykpIGJvb2wgU3RydWN0dXJlOjpjaGVja09mZnNldENvbnNpc3RlbmN5KCkgY29u
c3QKewogICAgUHJvcGVydHlUYWJsZSogcHJvcGVydHlUYWJsZSA9IG1fcHJvcGVydHlUYWJsZVVu
c2FmZS5nZXQoKTsKCiAgICBpZiAoIXByb3BlcnR5VGFibGUpIHsKICAgICAgICAoKHZvaWQpMCk7
CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgoKCgoKICAgIGlmIChpc0NvbXBpbGF0aW9uVGhy
ZWFkKCkpCiAgICAgICAgcmV0dXJuIHRydWU7CgogICAgZG8geyBpZiAoX19idWlsdGluX2V4cGVj
dCghISghKG51bWJlck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX2lubGluZUNhcGFj
aXR5KSA9PSBwcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkpKSwgMCkpIFdURkNy
YXNoKCk7IH0gd2hpbGUgKDApOwogICAgdW5zaWduZWQgdG90YWxTaXplID0gcHJvcGVydHlUYWJs
ZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwogICAgZG8geyBpZiAoX19idWlsdGluX2V4cGVjdCgh
ISghKCh0b3RhbFNpemUgPCBpbmxpbmVDYXBhY2l0eSgpID8gMCA6IHRvdGFsU2l6ZSAtIGlubGlu
ZUNhcGFjaXR5KCkpID09IG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zm
c2V0KSkpLCAwKSkgV1RGQ3Jhc2goKTsgfSB3aGlsZSAoMCk7CgogICAgcmV0dXJuIHRydWU7Cn0K
CmlubGluZSBzaXplX3QgbmV4dE91dE9mTGluZVN0b3JhZ2VDYXBhY2l0eShzaXplX3QgY3VycmVu
dENhcGFjaXR5KQp7CiAgICBpZiAoIWN1cnJlbnRDYXBhY2l0eSkKICAgICAgICByZXR1cm4gaW5p
dGlhbE91dE9mTGluZUNhcGFjaXR5OwogICAgcmV0dXJuIGN1cnJlbnRDYXBhY2l0eSAqIG91dE9m
TGluZUdyb3d0aEZhY3RvcjsKfQoKaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5l
d091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpCnsKICAgIHJldHVybiBuZXh0T3V0T2ZMaW5lU3Rv
cmFnZUNhcGFjaXR5KG91dE9mTGluZUNhcGFjaXR5KCkpOwp9CgppbmxpbmUgdm9pZCBTdHJ1Y3R1
cmU6OnNldE9iamVjdFRvU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTU3Ry
aW5nKiB2YWx1ZSwgUHJvcGVydHlTbG90IHRvU3RyaW5nVGFnU3ltYm9sU2xvdCkKewogICAgaWYg
KCFoYXNSYXJlRGF0YSgpKQogICAgICAgIGFsbG9jYXRlUmFyZURhdGEodm0pOwogICAgcmFyZURh
dGEoKS0+c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShleGVjLCB2bSwgdGhpcywgdmFsdWUsIHRvU3Ry
aW5nVGFnU3ltYm9sU2xvdCk7Cn0KCn0KIyAzMSAiLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3Bw
IiAyCgpuYW1lc3BhY2UgSlNDIHsKCkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2U6OkFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UoY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSkKICAgIDogbV9rZXkoa2V5KQp7CiAgICBk
byB7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCEoa2V5LmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRp
dGlvbjo6RXF1aXZhbGVuY2UpKSwgMCkpIFdURkNyYXNoKCk7IH0gd2hpbGUgKDApOwp9Cgp2b2lk
IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2U6Omluc3RhbGwoKQp7
CiAgICBkbyB7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCEobV9rZXkuaXNXYXRjaGFibGUoKSkp
LCAwKSkgV1RGQ3Jhc2goKTsgfSB3aGlsZSAoMCk7CgogICAgbV9rZXkub2JqZWN0KCktPnN0cnVj
dHVyZSgpLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludCgmbV9zdHJ1Y3R1cmVXYXRjaHBvaW50KTsK
CiAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBtX2tleS5vYmplY3QoKS0+c3RydWN0dXJlKCkt
PmdldENvbmN1cnJlbnRseShtX2tleS51aWQoKSk7CiAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSBt
X2tleS5vYmplY3QoKS0+c3RydWN0dXJlKCktPnByb3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBvaW50
U2V0KG9mZnNldCk7CiAgICBzZXQtPmFkZCgmbV9wcm9wZXJ0eVdhdGNocG9pbnQpOwp9Cgp2b2lk
IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2U6OmZpcmUoY29uc3Qg
RmlyZURldGFpbCYgZGV0YWlsKQp7CgoKCiAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyKCpIZWFw
OjpoZWFwKG1fa2V5Lm9iamVjdCgpKSk7CgoKCiAgICBpZiAobV9zdHJ1Y3R1cmVXYXRjaHBvaW50
LmlzT25MaXN0KCkpCiAgICAgICAgbV9zdHJ1Y3R1cmVXYXRjaHBvaW50LnJlbW92ZSgpOwogICAg
aWYgKG1fcHJvcGVydHlXYXRjaHBvaW50LmlzT25MaXN0KCkpCiAgICAgICAgbV9wcm9wZXJ0eVdh
dGNocG9pbnQucmVtb3ZlKCk7CgogICAgaWYgKG1fa2V5LmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29u
ZGl0aW9uOjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7CiAgICAgICAgaW5zdGFsbCgpOwogICAgICAg
IHJldHVybjsKICAgIH0KCiAgICBoYW5kbGVGaXJlKGRldGFpbCk7Cn0KCnZvaWQgQWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6U3RydWN0dXJlV2F0Y2hwb2ludDo6
ZmlyZUludGVybmFsKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKewogICAgcHRyZGlmZl90IG15
T2Zmc2V0ID0gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8
QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSo+KDB4NDAwMCktPm1f
c3RydWN0dXJlV2F0Y2hwb2ludCkpIC0gMHg0MDAwKTsKCiAgICBBZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlKiBwYXJlbnQgPSBiaXR3aXNlX2Nhc3Q8QWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSo+KGJpdHdpc2VfY2FzdDxjaGFyKj4o
dGhpcykgLSBteU9mZnNldCk7CgogICAgcGFyZW50LT5maXJlKGRldGFpbCk7Cn0KCnZvaWQgQWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZTo6UHJvcGVydHlXYXRjaHBv
aW50OjpmaXJlSW50ZXJuYWwoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQp7CiAgICBwdHJkaWZm
X3QgbXlPZmZzZXQgPSAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRf
Y2FzdDxBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlKj4oMHg0MDAw
KS0+bV9wcm9wZXJ0eVdhdGNocG9pbnQpKSAtIDB4NDAwMCk7CgogICAgQWRhcHRpdmVJbmZlcnJl
ZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZSogcGFyZW50ID0gYml0d2lzZV9jYXN0PEFkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UqPihiaXR3aXNlX2Nhc3Q8Y2hh
cio+KHRoaXMpIC0gbXlPZmZzZXQpOwoKICAgIHBhcmVudC0+ZmlyZShkZXRhaWwpOwp9Cgp9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278998</attachid>
            <date>2016-05-15 21:16:43 -0700</date>
            <delta_ts>2016-05-15 22:02:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157168-20160516131738.patch</filename>
            <type>text/plain</type>
            <size>2742</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwOTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MDc5Y2I4NjNhM2IzMzFkMDQxYjFmMjlmNzYzYTU5NjEwZWRmODMwLi43MjMwZTNlMzBjYjVmOTBi
YmM0YWE1YTUwNDI3MGVmYzQ1ZGRhNTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxNi0wNS0xNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMDAyMDgpOiBJdCBtYWRlIDIgSlNDIHN0cmVz
cyB0ZXN0cyBmYWlsIG9uIHg4NgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU3MTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIGZhc3QgcGF0aCBpbiBvcGVyYXRpb25NYXRoUG93IHByb2R1Y2VzIGRp
ZmZlcmVuY2UgcmVzdWx0cyBiZXR3ZWVuIHg4NyBhbmQgdGhlIG90aGVyIGVudmlyb25tZW50Lgor
ICAgICAgICBUaGlzIGlzIGJlY2F1c2UgeDg3IGNhbGN1bGF0ZXMgdGhlIGRvdWJsZSB2YWx1ZSBp
biA4MGJpdCBwcmVjaXNpb24uCisgICAgICAgIFRoZSBzaXR1YXRpb24gaXMgdGhlIGZvbGxvd2lu
ZzogaW4geDg2IDMyYml0IGVudmlyb25tZW50LCBmbG9hdGluZyBwb2ludCBvcGVyYXRpb25zIGFy
ZSBjb21waWxlZCB0bworICAgICAgICB4ODcgb3BlcmF0aW9ucyBieSBkZWZhdWx0IGV2ZW4gaWYg
d2UgY2FuIHVzZSBTU0UyLiBCdXQgaW4gREZHIGVudmlyb25tZW50LCB3ZSBhZ2dyZXNzaXZlbHkg
dXNlIFNTRTIKKyAgICAgICAgaWYgdGhlIGNwdWlkIHJlcG9ydHMgU1NFMiBpcyBhdmFpbGFibGUu
IEFzIGEgcmVzdWx0LCB0aGUgaW1wbGVtZW50YXRpb25zIGRpZmZlciBiZXR3ZWVuIEMgcnVudGlt
ZQorICAgICAgICBhbmQgREZHIEpJVCBjb2RlLiBUaGUgQyBydW50aW1lIHVzZXMgeDg3IHdoaWxl
IERGRyBKSVQgY29kZSB1c2VzIFNTRTIuIFRoaXMgY2F1c2VzIGEgcHJlY2lzaW9uCisgICAgICAg
IHByb2JsZW0gc2luY2UgeDg3IGhhcyA4MGJpdCBwcmVjaXNpb24gd2hpbGUgU1NFMiBoYXMgNjRi
aXQgcHJlY2lzaW9uLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIGluIHg4NiAzMmJpdCBlbnZp
cm9ubWVudCwgd2UgZW1pdCB0aGlzIGZhc3QgcGF0aCBvbmx5IGlmIHRoZQorICAgICAgICBgLW1m
cG1hdGg9c3NlIGFuZCAtbXNzZTIgKG9yIGxhdGVyKWAgaXMgc3BlY2lmaWVkLiBOb3RlIHRoYXQg
dGhpcyBwcm9ibGVtIGRvZXMgbm90IG9jY3VyIGluIE9TIFgKKyAgICAgICAgY2xhbmcgMzJiaXQg
ZW52aXJvbm1lbnQuIFRoaXMgaXMgYmVjYXVzZSBgLW1mcG1hdGg9c3NlYCBpcyBlbmFibGVkIGJ5
IGRlZmF1bHQgaW4gT1MgWCBjbGFuZyAzMmJpdC4KKworICAgICAgICAqIHJ1bnRpbWUvTWF0aENv
bW1vbi5jcHA6CisgICAgICAgIChKU0M6Om9wZXJhdGlvbk1hdGhQb3cpOgorCiAyMDE2LTA1LTE1
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHOjpQbGFuIHNo
b3VsZG4ndCByZWFkIGZyb20gaXRzIFZNIG9uY2UgaXQncyBiZWVuIGNhbmNlbGxlZApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmNwcAppbmRleCAyZmFhNDY0Y2Nh
Yzk4YmVmZGQ1YTM2N2ExMzkwYTY5ZmMxZDlhYmZlLi4wYWNhNjQyZWE2MTc4Y2I2MWViMmQ1OGMz
NWJkNGU4OTVhMDFhNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXRoQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRo
Q29tbW9uLmNwcApAQCAtNDM0LDYgKzQzNCw5IEBAIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk1hdGhQb3coZG91YmxlIHgsIGRvdWJsZSB5KQogICAgICAgICByZXR1cm4gMS4gLyBzcXJ0
KHgpOwogICAgIH0KIAorI2lmICFDUFUoWDg2KSB8fCAoZGVmaW5lZChfX1NTRTJfTUFUSF9fKSAm
JiBkZWZpbmVkKF9fU1NFMl9fKSkKKyAgICAvLyBEbyBub3QgcGVyZm9ybSB0aGlzIGZhc3QgcGF0
aCBvbiB0aGUgeDg3IGVuYWJsZWQgZW52aXJvbm1lbnQuCisgICAgLy8gVGhlIHJlc3VsdCBwcm9k
dWNlZCBieSB4ODcncyA4MGJpdCBkb3VibGUgcHJlY2lzaW9uIGRpZmZlcnMgZnJvbSB0aGUgb25l
IGNhbGN1bGF0ZWQgd2l0aCBTU0UgaW4gREZHLgogICAgIGludDMyX3QgeUFzSW50ID0geTsKICAg
ICBpZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPih5QXNJbnQpID09IHkgJiYgeUFzSW50ID4gMCAmJiB5
QXNJbnQgPD0gbWF4RXhwb25lbnRGb3JJbnRlZ2VyTWF0aFBvdykgewogICAgICAgICAvLyBJZiB0
aGUgZXhwb25lbnQgaXMgYSBzbWFsbCBwb3NpdGl2ZSBpbnQzMiBpbnRlZ2VyLCB3ZSBkbyBhIGZh
c3QgZXhwb25lbnRpYXRpb24KQEAgLTQ0Nyw2ICs0NTAsNyBAQCBkb3VibGUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25NYXRoUG93KGRvdWJsZSB4LCBkb3VibGUgeSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKIAogICAgIH0KKyNlbmRpZgogICAgIHJldHVybiBtYXRoUG93SW50ZXJuYWwoeCwgeSk7
CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279000</attachid>
            <date>2016-05-15 22:02:46 -0700</date>
            <delta_ts>2016-05-15 23:38:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157168-20160516140341.patch</filename>
            <type>text/plain</type>
            <size>2742</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwOTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MDc5Y2I4NjNhM2IzMzFkMDQxYjFmMjlmNzYzYTU5NjEwZWRmODMwLi45ZGM1NWIzMDVjNTVmNTBj
Njk0NjFhNjU3MWY2OWM1Y2VhZjBlMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxNi0wNS0xNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMDAyMDgpOiBJdCBtYWRlIDIgSlNDIHN0cmVz
cyB0ZXN0cyBmYWlsIG9uIHg4NgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU3MTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIGZhc3QgcGF0aCBpbiBvcGVyYXRpb25NYXRoUG93IHByb2R1Y2VzIGRp
ZmZlcmVudCByZXN1bHRzIGJldHdlZW4geDg3IGFuZCB0aGUgb3RoZXIgZW52aXJvbm1lbnRzLgor
ICAgICAgICBUaGlzIGlzIGJlY2F1c2UgeDg3IGNhbGN1bGF0ZXMgdGhlIGRvdWJsZSB2YWx1ZSBp
biA4MGJpdCBwcmVjaXNpb24uCisgICAgICAgIFRoZSBzaXR1YXRpb24gaXMgdGhlIGZvbGxvd2lu
ZzogaW4geDg2IDMyYml0IGVudmlyb25tZW50LCBmbG9hdGluZyBwb2ludCBvcGVyYXRpb25zIGFy
ZSBjb21waWxlZCB0bworICAgICAgICB4ODcgb3BlcmF0aW9ucyBieSBkZWZhdWx0IGV2ZW4gaWYg
d2UgY2FuIHVzZSBTU0UyLiBCdXQgaW4gREZHIGVudmlyb25tZW50LCB3ZSBhZ2dyZXNzaXZlbHkg
dXNlIFNTRTIKKyAgICAgICAgaWYgdGhlIGNwdWlkIHJlcG9ydHMgU1NFMiBpcyBhdmFpbGFibGUu
IEFzIGEgcmVzdWx0LCB0aGUgaW1wbGVtZW50YXRpb25zIGRpZmZlciBiZXR3ZWVuIEMgcnVudGlt
ZQorICAgICAgICBhbmQgREZHIEpJVCBjb2RlLiBUaGUgQyBydW50aW1lIHVzZXMgeDg3IHdoaWxl
IERGRyBKSVQgY29kZSB1c2VzIFNTRTIuIFRoaXMgY2F1c2VzIGEgcHJlY2lzaW9uCisgICAgICAg
IHByb2JsZW0gc2luY2UgeDg3IGhhcyA4MGJpdCBwcmVjaXNpb24gd2hpbGUgU1NFMiBoYXMgNjRi
aXQgcHJlY2lzaW9uLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIGluIHg4NiAzMmJpdCBlbnZp
cm9ubWVudCwgd2UgZW1pdCB0aGlzIGZhc3QgcGF0aCBvbmx5IGlmIHRoZQorICAgICAgICBgLW1m
cG1hdGg9c3NlIGFuZCAtbXNzZTIgKG9yIGxhdGVyKWAgaXMgc3BlY2lmaWVkLiBOb3RlIHRoYXQg
dGhpcyBwcm9ibGVtIGRvZXMgbm90IG9jY3VyIGluIE9TIFgKKyAgICAgICAgY2xhbmcgMzJiaXQg
ZW52aXJvbm1lbnQuIFRoaXMgaXMgYmVjYXVzZSBgLW1mcG1hdGg9c3NlYCBpcyBlbmFibGVkIGJ5
IGRlZmF1bHQgaW4gT1MgWCBjbGFuZyAzMmJpdC4KKworICAgICAgICAqIHJ1bnRpbWUvTWF0aENv
bW1vbi5jcHA6CisgICAgICAgIChKU0M6Om9wZXJhdGlvbk1hdGhQb3cpOgorCiAyMDE2LTA1LTE1
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHOjpQbGFuIHNo
b3VsZG4ndCByZWFkIGZyb20gaXRzIFZNIG9uY2UgaXQncyBiZWVuIGNhbmNlbGxlZApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmNwcAppbmRleCAyZmFhNDY0Y2Nh
Yzk4YmVmZGQ1YTM2N2ExMzkwYTY5ZmMxZDlhYmZlLi4wYWNhNjQyZWE2MTc4Y2I2MWViMmQ1OGMz
NWJkNGU4OTVhMDFhNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXRoQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRo
Q29tbW9uLmNwcApAQCAtNDM0LDYgKzQzNCw5IEBAIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk1hdGhQb3coZG91YmxlIHgsIGRvdWJsZSB5KQogICAgICAgICByZXR1cm4gMS4gLyBzcXJ0
KHgpOwogICAgIH0KIAorI2lmICFDUFUoWDg2KSB8fCAoZGVmaW5lZChfX1NTRTJfTUFUSF9fKSAm
JiBkZWZpbmVkKF9fU1NFMl9fKSkKKyAgICAvLyBEbyBub3QgcGVyZm9ybSB0aGlzIGZhc3QgcGF0
aCBvbiB0aGUgeDg3IGVuYWJsZWQgZW52aXJvbm1lbnQuCisgICAgLy8gVGhlIHJlc3VsdCBwcm9k
dWNlZCBieSB4ODcncyA4MGJpdCBkb3VibGUgcHJlY2lzaW9uIGRpZmZlcnMgZnJvbSB0aGUgb25l
IGNhbGN1bGF0ZWQgd2l0aCBTU0UgaW4gREZHLgogICAgIGludDMyX3QgeUFzSW50ID0geTsKICAg
ICBpZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPih5QXNJbnQpID09IHkgJiYgeUFzSW50ID4gMCAmJiB5
QXNJbnQgPD0gbWF4RXhwb25lbnRGb3JJbnRlZ2VyTWF0aFBvdykgewogICAgICAgICAvLyBJZiB0
aGUgZXhwb25lbnQgaXMgYSBzbWFsbCBwb3NpdGl2ZSBpbnQzMiBpbnRlZ2VyLCB3ZSBkbyBhIGZh
c3QgZXhwb25lbnRpYXRpb24KQEAgLTQ0Nyw2ICs0NTAsNyBAQCBkb3VibGUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25NYXRoUG93KGRvdWJsZSB4LCBkb3VibGUgeSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKIAogICAgIH0KKyNlbmRpZgogICAgIHJldHVybiBtYXRoUG93SW50ZXJuYWwoeCwgeSk7
CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279002</attachid>
            <date>2016-05-15 23:38:07 -0700</date>
            <delta_ts>2016-05-16 18:02:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157168-20160516153902.patch</filename>
            <type>text/plain</type>
            <size>3306</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwOTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MDc5Y2I4NjNhM2IzMzFkMDQxYjFmMjlmNzYzYTU5NjEwZWRmODMwLi5kYmRhM2ZlMDE5ZWU4NjZh
OTkwNTIyZDE5ZjA1OWEyYzhmOGRlMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxNi0wNS0xNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMDAyMDgpOiBJdCBtYWRlIDIgSlNDIHN0cmVz
cyB0ZXN0cyBmYWlsIG9uIHg4NgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU3MTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIGZhc3QgcGF0aCBpbiBvcGVyYXRpb25NYXRoUG93IHByb2R1Y2VzIGRp
ZmZlcmVudCByZXN1bHRzIGJldHdlZW4geDg3IGFuZCB0aGUgb3RoZXIgZW52aXJvbm1lbnRzLgor
ICAgICAgICBUaGlzIGlzIGJlY2F1c2UgeDg3IGNhbGN1bGF0ZXMgdGhlIGRvdWJsZSB2YWx1ZSBp
biA4MGJpdCBwcmVjaXNpb24uCisgICAgICAgIFRoZSBzaXR1YXRpb24gaXMgdGhlIGZvbGxvd2lu
ZzogaW4geDg2IDMyYml0IGVudmlyb25tZW50LCBmbG9hdGluZyBwb2ludCBvcGVyYXRpb25zIGFy
ZSBjb21waWxlZCB0bworICAgICAgICB4ODcgb3BlcmF0aW9ucyBieSBkZWZhdWx0IGV2ZW4gaWYg
d2UgY2FuIHVzZSBTU0UyLiBCdXQgaW4gREZHIGVudmlyb25tZW50LCB3ZSBhZ2dyZXNzaXZlbHkg
dXNlIFNTRTIKKyAgICAgICAgaWYgdGhlIGNwdWlkIHJlcG9ydHMgU1NFMiBpcyBhdmFpbGFibGUu
IEFzIGEgcmVzdWx0LCB0aGUgaW1wbGVtZW50YXRpb25zIGRpZmZlciBiZXR3ZWVuIEMgcnVudGlt
ZQorICAgICAgICBhbmQgREZHIEpJVCBjb2RlLiBUaGUgQyBydW50aW1lIHVzZXMgeDg3IHdoaWxl
IERGRyBKSVQgY29kZSB1c2VzIFNTRTIuIFRoaXMgY2F1c2VzIGEgcHJlY2lzaW9uCisgICAgICAg
IHByb2JsZW0gc2luY2UgeDg3IGhhcyA4MGJpdCBwcmVjaXNpb24gd2hpbGUgU1NFMiBoYXMgNjRi
aXQgcHJlY2lzaW9uLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIGluIHg4NiAzMmJpdCBlbnZp
cm9ubWVudCwgd2UgdXNlIGB2b2xhdGlsZSBkb3VibGVgIGlmIHRoZSBgLW1mcG1hdGg9c3NlIGFu
ZCAtbXNzZTIgKG9yIGxhdGVyKWAKKyAgICAgICAgaXMgbm90IHNwZWNpZmllZC4gVGhpcyB3aWxs
IHJvdW5kIHRoZSB4ODcgdmFsdWUgaW50byA2NGJpdCBwZXIgbXVsdGlwbHlpbmcuIE5vdGUgdGhh
dCB0aGlzIHByb2JsZW0gZG9lcyBub3QKKyAgICAgICAgb2NjdXIgaW4gT1MgWCBjbGFuZyAzMmJp
dCBlbnZpcm9ubWVudC4gVGhpcyBpcyBiZWNhdXNlIGAtbWZwbWF0aD1zc2VgIGlzIGVuYWJsZWQg
YnkgZGVmYXVsdCBpbiBPUyBYIGNsYW5nIDMyYml0LgorCisgICAgICAgICogcnVudGltZS9NYXRo
Q29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uTWF0aFBvdyk6CisKIDIwMTYtMDUt
MTUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkc6OlBsYW4g
c2hvdWxkbid0IHJlYWQgZnJvbSBpdHMgVk0gb25jZSBpdCdzIGJlZW4gY2FuY2VsbGVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uY3BwCmluZGV4IDJmYWE0NjRj
Y2FjOThiZWZkZDVhMzY3YTEzOTBhNjlmYzFkOWFiZmUuLmZjMjM0ZDE3YzZlY2Y0ODE1YjdkZGM3
ZGRjODk3Nzg3ZmVmOTk2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hdGhDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGhDb21tb24uY3BwCkBAIC00MzcsMTUgKzQzNywyNSBAQCBkb3VibGUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25NYXRoUG93KGRvdWJsZSB4LCBkb3VibGUgeSkKICAgICBpbnQzMl90IHlBc0ludCA9
IHk7CiAgICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4oeUFzSW50KSA9PSB5ICYmIHlBc0ludCA+
IDAgJiYgeUFzSW50IDw9IG1heEV4cG9uZW50Rm9ySW50ZWdlck1hdGhQb3cpIHsKICAgICAgICAg
Ly8gSWYgdGhlIGV4cG9uZW50IGlzIGEgc21hbGwgcG9zaXRpdmUgaW50MzIgaW50ZWdlciwgd2Ug
ZG8gYSBmYXN0IGV4cG9uZW50aWF0aW9uCi0gICAgICAgIGRvdWJsZSByZXN1bHQgPSAxOworCisg
ICAgICAgIC8vIERvIG5vdCB1c2UgeDg3IHZhbHVlcyBmb3IgYWNjdW11bGF0aW9uLiB4ODcgdmFs
dWVzIGhhcyA4MGJpdCBwcmVjaXNpb24uCisgICAgICAgIC8vIFRoZSByZXN1bHQgcHJvZHVjZWQg
YnkgeDg3J3MgODBiaXQgZG91YmxlIHByZWNpc2lvbiBkaWZmZXJzIGZyb20gdGhlIG9uZSBjYWxj
dWxhdGVkIHdpdGggU1NFMiBpbiBERkcuCisgICAgICAgIC8vIFVzaW5nIHZvbGF0aWxlIGRvdWJs
ZSBpcyB3b3JrYXJvdW5kIGZvciB0aGlzIHByb2JsZW0uIEJ5IHNwZWNpZnlpbmcgdm9sYXRpbGUs
IHdlIGV4cGVjdCB0aGF0IGByZXN1bHRgIGFuZCBgeGRgCisgICAgICAgIC8vIGFyZSBzdG9yZWQg
aW4gdGhlIHN0YWNrLiBBbmQgYXQgdGhhdCB0aW1lLCB3ZSBleHBlY3QgdGhhdCB0aGV5IGFyZSBy
b3VuZGVkIGJ5IGZzdC9mc3RwLgorI2lmICFDUFUoWDg2KSB8fCAoZGVmaW5lZChfX1NTRTJfTUFU
SF9fKSAmJiBkZWZpbmVkKF9fU1NFMl9fKSkKKyAgICAgICAgdHlwZWRlZiBkb3VibGUgRG91Ymxl
VmFsdWU7CisjZWxzZQorICAgICAgICB0eXBlZGVmIHZvbGF0aWxlIGRvdWJsZSBEb3VibGVWYWx1
ZTsKKyNlbmRpZgorICAgICAgICBEb3VibGVWYWx1ZSByZXN1bHQgPSAxOworICAgICAgICBEb3Vi
bGVWYWx1ZSB4ZCA9IHg7CiAgICAgICAgIHdoaWxlICh5QXNJbnQpIHsKICAgICAgICAgICAgIGlm
ICh5QXNJbnQgJiAxKQotICAgICAgICAgICAgICAgIHJlc3VsdCAqPSB4OwotICAgICAgICAgICAg
eCAqPSB4OworICAgICAgICAgICAgICAgIHJlc3VsdCAqPSB4ZDsKKyAgICAgICAgICAgIHhkICo9
IHhkOwogICAgICAgICAgICAgeUFzSW50ID4+PSAxOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
biByZXN1bHQ7Ci0KICAgICB9CiAgICAgcmV0dXJuIG1hdGhQb3dJbnRlcm5hbCh4LCB5KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279077</attachid>
            <date>2016-05-16 18:02:55 -0700</date>
            <delta_ts>2016-05-16 18:41:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157168-20160517100351.patch</filename>
            <type>text/plain</type>
            <size>4227</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwOTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MDc5Y2I4NjNhM2IzMzFkMDQxYjFmMjlmNzYzYTU5NjEwZWRmODMwLi4xNDdlYTc0MTMyYTU0ZDA0
YTQ1YWY3ZjFhM2FjZDI2YzdlMmVmMTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxNi0wNS0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMDAyMDgpOiBJdCBtYWRlIDIgSlNDIHN0cmVz
cyB0ZXN0cyBmYWlsIG9uIHg4NgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU3MTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIGZhc3QgcGF0aCBpbiBvcGVyYXRpb25NYXRoUG93IHByb2R1Y2VzIGRp
ZmZlcmVudCByZXN1bHRzIGJldHdlZW4geDg3IGFuZCB0aGUgb3RoZXIgZW52aXJvbm1lbnRzLgor
ICAgICAgICBUaGlzIGlzIGJlY2F1c2UgeDg3IGNhbGN1bGF0ZXMgdGhlIGRvdWJsZSB2YWx1ZSBp
biA4MGJpdCBwcmVjaXNpb24uCisgICAgICAgIFRoZSBzaXR1YXRpb24gaXMgdGhlIGZvbGxvd2lu
ZzogaW4geDg2IDMyYml0IGVudmlyb25tZW50LCBmbG9hdGluZyBwb2ludCBvcGVyYXRpb25zIGFy
ZSBjb21waWxlZCB0bworICAgICAgICB4ODcgb3BlcmF0aW9ucyBieSBkZWZhdWx0IGV2ZW4gaWYg
d2UgY2FuIHVzZSBTU0UyLiBCdXQgaW4gREZHIGVudmlyb25tZW50LCB3ZSBhZ2dyZXNzaXZlbHkg
dXNlIFNTRTIKKyAgICAgICAgaWYgdGhlIGNwdWlkIHJlcG9ydHMgU1NFMiBpcyBhdmFpbGFibGUu
IEFzIGEgcmVzdWx0LCB0aGUgaW1wbGVtZW50YXRpb25zIGRpZmZlciBiZXR3ZWVuIEMgcnVudGlt
ZQorICAgICAgICBhbmQgREZHIEpJVCBjb2RlLiBUaGUgQyBydW50aW1lIHVzZXMgeDg3IHdoaWxl
IERGRyBKSVQgY29kZSB1c2VzIFNTRTIuIFRoaXMgY2F1c2VzIGEgcHJlY2lzaW9uCisgICAgICAg
IHByb2JsZW0gc2luY2UgeDg3IGhhcyA4MGJpdCBwcmVjaXNpb24gd2hpbGUgU1NFMiBoYXMgNjRi
aXQgcHJlY2lzaW9uLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIGluIHg4NiAzMmJpdCBlbnZp
cm9ubWVudCwgd2UgdXNlIGB2b2xhdGlsZSBkb3VibGVgIGlmIHRoZSBgLW1mcG1hdGg9c3NlIGFu
ZCAtbXNzZTIgKG9yIGxhdGVyKWAKKyAgICAgICAgaXMgbm90IHNwZWNpZmllZC4gVGhpcyB3aWxs
IHJvdW5kIHRoZSB4ODcgdmFsdWUgaW50byA2NGJpdCBwZXIgbXVsdGlwbHlpbmcuIE5vdGUgdGhh
dCB0aGlzIHByb2JsZW0gZG9lcyBub3QKKyAgICAgICAgb2NjdXIgaW4gT1MgWCBjbGFuZyAzMmJp
dCBlbnZpcm9ubWVudC4gVGhpcyBpcyBiZWNhdXNlIGAtbWZwbWF0aD1zc2VgIGlzIGVuYWJsZWQg
YnkgZGVmYXVsdCBpbiBPUyBYIGNsYW5nIDMyYml0LgorCisgICAgICAgICogYjMvQjNNYXRoRXh0
cmFzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnBvd0RvdWJsZUludDMyKToKKyAgICAgICAgKiBy
dW50aW1lL01hdGhDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpvcGVyYXRpb25NYXRoUG93KToK
KwogMjAxNi0wNS0xNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IERGRzo6UGxhbiBzaG91bGRuJ3QgcmVhZCBmcm9tIGl0cyBWTSBvbmNlIGl0J3MgYmVlbiBjYW5j
ZWxsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01hdGhFeHRyYXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWF0aEV4dHJhcy5jcHAKaW5kZXggNjVl
MzI3NmQwNDQ1NTFmYjgwNmFjMTM4NGUxMWJiNDI1YzM3OTkxOS4uYjIwMzU0MDM0NDM2MWFmZWVk
NTc3YmY2NWQ3ZjZiYTBlY2MyM2IyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTWF0aEV4dHJhcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWF0
aEV4dHJhcy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RkOjpwYWlyPEJhc2ljQmxvY2sqLCBWYWx1
ZSo+IHBvd0RvdWJsZUludDMyKFByb2NlZHVyZSYgcHJvY2VkdXJlLCBCYXNpY0Jsb2NrKgogCiAg
ICAgVmFsdWUqIHNob3VsZEdvU2xvd1BhdGggPSBzdGFydC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
ZWR1cmUsIEFib3ZlLCBvcmlnaW4sCiAgICAgICAgIHksCi0gICAgICAgIHN0YXJ0LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jZWR1cmUsIG9yaWdpbiwgMTAwMCkpOworICAgICAgICBzdGFy
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvY2VkdXJlLCBvcmlnaW4sIG1heEV4cG9uZW50
Rm9ySW50ZWdlck1hdGhQb3cpKTsKICAgICBzdGFydC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4o
CiAgICAgICAgIHByb2NlZHVyZSwgQnJhbmNoLCBvcmlnaW4sCiAgICAgICAgIHNob3VsZEdvU2xv
d1BhdGgsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29t
bW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uY3BwCmlu
ZGV4IDJmYWE0NjRjY2FjOThiZWZkZDVhMzY3YTEzOTBhNjlmYzFkOWFiZmUuLjAxYjk0ZjYwZTcy
NzkwMmU4YzJmMDczZDRhMmQwYmYxOWUwMDZjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGhDb21tb24uY3BwCkBAIC00MzUsMTcgKzQzNSwyNyBAQCBkb3VibGUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25NYXRoUG93KGRvdWJsZSB4LCBkb3VibGUgeSkKICAgICB9CiAK
ICAgICBpbnQzMl90IHlBc0ludCA9IHk7Ci0gICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4oeUFz
SW50KSA9PSB5ICYmIHlBc0ludCA+IDAgJiYgeUFzSW50IDw9IG1heEV4cG9uZW50Rm9ySW50ZWdl
ck1hdGhQb3cpIHsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPih5QXNJbnQpID09IHkgJiYg
eUFzSW50ID49IDAgJiYgeUFzSW50IDw9IG1heEV4cG9uZW50Rm9ySW50ZWdlck1hdGhQb3cpIHsK
ICAgICAgICAgLy8gSWYgdGhlIGV4cG9uZW50IGlzIGEgc21hbGwgcG9zaXRpdmUgaW50MzIgaW50
ZWdlciwgd2UgZG8gYSBmYXN0IGV4cG9uZW50aWF0aW9uCi0gICAgICAgIGRvdWJsZSByZXN1bHQg
PSAxOworCisgICAgICAgIC8vIERvIG5vdCB1c2UgeDg3IHZhbHVlcyBmb3IgYWNjdW11bGF0aW9u
LiB4ODcgdmFsdWVzIGhhcyA4MGJpdCBwcmVjaXNpb24uCisgICAgICAgIC8vIFRoZSByZXN1bHQg
cHJvZHVjZWQgYnkgeDg3J3MgODBiaXQgZG91YmxlIHByZWNpc2lvbiBkaWZmZXJzIGZyb20gdGhl
IG9uZSBjYWxjdWxhdGVkIHdpdGggU1NFMiBpbiBERkcuCisgICAgICAgIC8vIFVzaW5nIHZvbGF0
aWxlIGRvdWJsZSBpcyB3b3JrYXJvdW5kIGZvciB0aGlzIHByb2JsZW0uIEJ5IHNwZWNpZnlpbmcg
dm9sYXRpbGUsIHdlIGV4cGVjdCB0aGF0IGByZXN1bHRgIGFuZCBgeGRgCisgICAgICAgIC8vIGFy
ZSBzdG9yZWQgaW4gdGhlIHN0YWNrLiBBbmQgYXQgdGhhdCB0aW1lLCB3ZSBleHBlY3QgdGhhdCB0
aGV5IGFyZSByb3VuZGVkIGJ5IGZzdC9mc3RwLgorI2lmICFDUFUoWDg2KSB8fCAoZGVmaW5lZChf
X1NTRTJfTUFUSF9fKSAmJiBkZWZpbmVkKF9fU1NFMl9fKSkKKyAgICAgICAgdHlwZWRlZiBkb3Vi
bGUgRG91YmxlVmFsdWU7CisjZWxzZQorICAgICAgICB0eXBlZGVmIHZvbGF0aWxlIGRvdWJsZSBE
b3VibGVWYWx1ZTsKKyNlbmRpZgorICAgICAgICBEb3VibGVWYWx1ZSByZXN1bHQgPSAxOworICAg
ICAgICBEb3VibGVWYWx1ZSB4ZCA9IHg7CiAgICAgICAgIHdoaWxlICh5QXNJbnQpIHsKICAgICAg
ICAgICAgIGlmICh5QXNJbnQgJiAxKQotICAgICAgICAgICAgICAgIHJlc3VsdCAqPSB4OwotICAg
ICAgICAgICAgeCAqPSB4OworICAgICAgICAgICAgICAgIHJlc3VsdCAqPSB4ZDsKKyAgICAgICAg
ICAgIHhkICo9IHhkOwogICAgICAgICAgICAgeUFzSW50ID4+PSAxOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0KICAgICB9CiAgICAgcmV0dXJuIG1hdGhQb3dJbnRlcm5hbCh4
LCB5KTsKIH0K
</data>
<flag name="review"
          id="303146"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>